diff --git a/vad.asm b/vad.asm
index 8246be1..b23c6fa 100644
--- a/vad.asm
+++ b/vad.asm
@@ -125,7 +125,6 @@ VAD_CB_Struc STRUC
 VAD_Far_Call	dd	?   ; CS:IP of VMs aux device routine
 VAD_PMode_Addr	db	?   ; If TRUE then CS:IP is protected mode call-back
 VAD_Enabled	db	?   ; If TRUE then aux is enabled
-VAD_BallPt_On	db	?   ; If TRUE then ballpoint ID should be returned
 VAD_CB_Struc ENDS
 
 VxD_LOCKED_DATA_SEG
@@ -147,7 +146,7 @@ VAD_Requested	db	FALSE
 VAD_IRET_Pending    db	FALSE
 VAD_VM_Requesting   dd	?
 
-VAD_Ballpoint_ID    dw	0
+VAD_Device_ID    db	0
 
 VxD_LOCKED_DATA_ENDS
 
@@ -167,10 +166,6 @@ VAD_Internal_Int_15 db	False
 VAD_Exiting	db	False
 VAD_exit_init	db	-1
 
-VAD_Toss_Count	db	0
-
-VAD_Packet_Count    db  0
-
 VxD_DATA_ENDS
 
 
@@ -194,6 +189,20 @@ VM_Int MACRO Int_Number
 
 	ENDM
 
+IFDEF DEBUG
+DLogC MACRO C
+        push edx
+	push eax
+	mov dx, 0504h
+	mov al, C
+	out dx, al
+	mov al, 0Ah
+	out dx, al
+	pop eax
+	pop edx
+	ENDM
+ENDIF
+
 ;******************************************************************************
 ;
 ;   VAD_Device_Init
@@ -214,7 +223,6 @@ VM_Int MACRO Int_Number
 BeginProc VAD_Device_Init, PUBLIC
 
 	pushad
-
 	mov	[VAD_Focus], ebx
 
 	or	eax, -1
@@ -235,7 +243,7 @@ BeginProc VAD_Device_Init, PUBLIC
 	jz	VAD_SI_Test_Done		;    N: Done
 						;    Y: Try to reset it
 	mov	[ebp.Client_AX], 0C205h 	; Poiniting device init
-	mov	[ebp.Client_BH], 3		; 3 byte packets
+	mov	[ebp.Client_BH], 1		; 1 byte packets
 	VM_Int	15h
 	jc	VAD_SI_Test_Done
 	mov	[ebp.Client_AX], 0C201h 	; Reset pointing device
@@ -244,20 +252,30 @@ BeginProc VAD_Device_Init, PUBLIC
 
 ;------------------------------------------------------------------------------
 ;
-;   Determine if this is a ballpoint mouse.  If so, leave it in ballpoint
-;   mode.
+;   Now determine if this is a wheel mouse.
+;   If so, leave it in wheel mode.
 ;
-	mov	[ebp.Client_AX], 0C202h
-	mov	[ebp.Client_BH], 0
-	VM_Int	15h				; Set to 10hz
+        mov	[ebp.Client_AX], 0C202h
+	mov	[ebp.Client_BH], 6
+	VM_Int	15h
+	jc	VAD_SI_Test_Done
+
+        mov	[ebp.Client_AX], 0C202h
+	mov	[ebp.Client_BH], 5
+	VM_Int	15h
 	jc	VAD_SI_Test_Done
 
-	mov	[ebp.Client_AX], 0C204h 	; get mouse id
+        mov	[ebp.Client_AX], 0C202h
+	mov	[ebp.Client_BH], 4
 	VM_Int	15h
 	jc	VAD_SI_Test_Done
 
-	mov	ax,[ebp.Client_BX]
-	mov	[VAD_BallPoint_ID],ax
+        mov	[ebp.Client_AX], 0C204h 	; get mouse id
+	VM_Int	15h
+	jc	VAD_SI_Test_Done
+
+        mov	ax,[ebp.Client_BX]
+	mov	[VAD_Device_ID],ah
 
 ;------------------------------------------------------------------------------
 
@@ -278,7 +296,7 @@ BeginProc VAD_Device_Init, PUBLIC
 	VM_Int	15h
 	jc	SHORT VAD_SI_Test_Done
 	mov	[ebp.Client_AX], 0C202h 	; Set sample rate
-	mov	[ebp.Client_BH], 2		; 40 reports per second
+	mov	[ebp.Client_BH], 3		; 60 reports per second
 	VM_Int	15h
 	jc	SHORT VAD_SI_Test_Done
 
@@ -790,7 +808,6 @@ VAD_I15_Disable:
 
 VAD_I15_Reset:
 	mov	[ebp.Client_BH], 0		; Device ID = 0
-	mov	[esi.VAD_BallPt_On], FALSE	; Not in ballpoint mode
 VAD_I15_Interface_Init:
 	mov	[esi.VAD_Far_Call], 0		; No far call intalled
 	mov	[esi.VAD_Enabled], FALSE	; Aux is disabled
@@ -806,11 +823,7 @@ VAD_I15_Interface_Init:
 ;
 ;------------------------------------------------------------------------------
 
-VAD_I15_Set_Sample_Rate:
-	cmp	[ebp.Client_BH], 0
-	jne	VAD_I15_No_Error
-	mov	[esi.VAD_BallPt_On], TRUE
-	jmp	VAD_I15_No_Error
+VAD_I15_Set_Sample_Rate EQU VAD_I15_No_Error
 
 
 ;==============================================================================
@@ -833,11 +846,8 @@ VAD_I15_Set_Resolution EQU VAD_I15_No_Error
 ;------------------------------------------------------------------------------
 
 VAD_I15_Read_Device_Type:
-	mov	[ebp.Client_BH], 0		; Device ID = 0
-	cmp	[esi.VAD_BallPt_On], TRUE	; Q: Is ballpoint mode enabled?
-	jne	VAD_I15_No_Error		;    N: Device ID is 0
-	mov	ax,[VAD_BallPoint_ID]		;    Y: Return BallPoint ID
-	mov	[ebp.Client_BX],ax		;	in BX
+        mov	ah,[VAD_Device_ID]		;    Y: Return Device ID
+	mov	[ebp.Client_BH],ah		;	in BH
 	jmp	VAD_I15_No_Error		; No error
 
 
@@ -1181,30 +1191,17 @@ ENDIF
 
 	in	al, pstat_Kybd			; Read keyboard status
 	test	al, fKBS_DAV			; Q: Data available?
-	jz	VAD_INT_Not_Aux 		;    N: Chain to next handler
+	jz	SHORT VAD_INT_Not_Aux 		;    N: Chain to next handler
 	test	al, fKBS_AuxData		; Q: Aux data?
-	jz	VAD_INT_Not_Aux 		;    N: Not ours!
+	jz	SHORT VAD_INT_Not_Aux 		;    N: Not ours!
 	mov	ah, al				; AH = Status
 	in	al, pdata_Kybd			; AL = Data
 
 	cmp	[VAD_Exiting], TRUE		; Q: Exiting?
-	je	DEBFAR VAD_INT_Eat_Data 	;    Y: Consume this data
-
-	inc	[VAD_Packet_Count]		; Add 1 byte to this packet
-	cmp	[VAD_Packet_Count], 3 		; Q: New packet? (3 bytes)
-	jb	SHORT VAD_P_Check_Toss		;    N: Continue
+	je	SHORT VAD_INT_Eat_Data 	;    Y: Consume this data
 
-	mov	[VAD_Packet_Count], 0		;    Y: reset counter
-	cmp	[VAD_Q_Count], (VAD_Q_Length-2)	; Q: Any room left in queue
-						;    (for an entire packet)
-	jb	SHORT VAD_P_Enqueue		;    Y: Enqueue this byte
-	VK_VD_Queue_Out "VAD - Throwing away:  1"
-	mov	[VAD_Toss_Count], 2		;    N: throw it and next 2
-	jmp	SHORT VAD_Int_Was_Ours		;	bytes away
-
-VAD_P_Check_Toss:
-	cmp	[VAD_Toss_Count], 0		; Q: Should we toss rest of pkt?
-	jne	SHORT VAD_P_Toss_More_Data	;    Y: Do it
+        cmp	[VAD_Q_Count], (VAD_Q_Length-1)	; Q: Any room left in queue ?
+	jae	SHORT VAD_Int_Was_Ours		;    N: Discard byte
 
 VAD_P_Enqueue:
 	push	ebx
@@ -1215,21 +1212,7 @@ VAD_P_Enqueue:
 	and	bx, VAD_Q_Mask			; Circular queue
 	mov	[VAD_Q_Head], bx		; Save the head pointer
 	pop	ebx
-	jmp	SHORT VAD_Int_Was_Ours
-
-
-VAD_P_Toss_More_Data:
-	dec	[VAD_Toss_Count]
 
-IFDEF DEBUG
-	cmp	[VAD_Toss_Count],0
-	je	SHORT VAD_P_Toss_Byte3
-	VK_VD_Queue_Out "VAD - Throwing away:   2"
-	jmp	SHORT VAD_P_Toss_EndDeb
-VAD_P_Toss_Byte3:
-	VK_VD_Queue_Out "VAD - Throwing away:    3"
-VAD_P_Toss_EndDeb:
-ENDIF
 
 VAD_Int_Was_Ours:
 	mov	eax, [VAD_IRQ_Handle]
