From aaa25c149d49485b5fb474efdbab0463d9c2b182 Mon Sep 17 00:00:00 2001 From: hidnplayr Date: Tue, 28 May 2013 18:04:03 +0000 Subject: [PATCH] fixed ps2mouse driver git-svn-id: svn://kolibrios.org@3550 a494cfbc-eb01-0410-851d-a64ba20cac60 --- drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm | 210 ++++++++++---------- 1 file changed, 106 insertions(+), 104 deletions(-) diff --git a/drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm b/drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm index 7771de3137..a9f9fb8de9 100644 --- a/drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm +++ b/drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm @@ -1,15 +1,17 @@ format MS COFF +DEBUG equ 1 + include '../../../proc32.inc' include '../../../imports.inc' struc IOCTL -{ .handle dd ? - .io_code dd ? - .input dd ? - .inp_size dd ? - .output dd ? - .out_size dd ? +{ .handle dd ? + .io_code dd ? + .input dd ? + .inp_size dd ? + .output dd ? + .out_size dd ? } virtual at 0 @@ -22,7 +24,7 @@ public version DRV_ENTRY equ 1 DRV_EXIT equ -1 -MT_3B equ 0 +MT_3B equ 0 MT_3BScroll equ 3 MT_5BScroll equ 4 @@ -33,85 +35,85 @@ section '.flat' code readable align 16 proc START stdcall, state:dword - cmp [state], DRV_ENTRY - jne .fin + cmp [state], DRV_ENTRY + jne .fin .init: - call detect_mouse - test eax,eax - jnz .exit + call detect_mouse + test eax,eax + jnz .exit - mov [MouseType],MT_3B + mov [MouseType],MT_3B - call try_mode_ID3 - test eax,eax - jnz .stop_try - mov [MouseType],MT_3BScroll - - call try_mode_ID4 - test eax,eax - jnz .stop_try - mov [MouseType],MT_5BScroll - + call try_mode_ID3 + test eax,eax + jnz .stop_try + mov [MouseType],MT_3BScroll + + call try_mode_ID4 + test eax,eax + jnz .stop_try + mov [MouseType],MT_5BScroll + .stop_try: - mov bl, 0x20 ; read command byte - call kbd_cmd - cmp ah,1 - je .exit + mov bl, 0x20 ; read command byte + call kbd_cmd + cmp ah,1 + je .exit - call kbd_read - cmp ah,1 - je .exit + call kbd_read + cmp ah,1 + je .exit - or al, 10b - push eax - mov bl, 0x60 ; write command byte - call kbd_cmd - cmp ah,1 - je .exit + or al, 10b + push eax + mov bl, 0x60 ; write command byte + call kbd_cmd + cmp ah,1 + je .exit - pop eax - call kbd_write - cmp ah,1 - je .exit + pop eax + call kbd_write + cmp ah,1 + je .exit - mov al, 0xF4 ; enable data reporting - call mouse_cmd + mov al, 0xF4 ; enable data reporting + call mouse_cmd - mov bl, 0xAE ; enable keyboard interface - call kbd_cmd - - stdcall AttachIntHandler, 12, irq_handler, dword 0 - stdcall RegService, my_service, service_proc - ret + mov bl, 0xAE ; enable keyboard interface + call kbd_cmd + + stdcall AttachIntHandler, 12, irq_handler, dword 0 + stdcall RegService, my_service, service_proc + ret .fin: - ;stdcall DetachIntHandler, 12, irq_handler - mov bl, 0xA7 ; disable mouse interface - call kbd_cmd - xor eax, eax - ret + ;stdcall DetachIntHandler, 12, irq_handler + mov bl, 0xA7 ; disable mouse interface + call kbd_cmd + xor eax, eax + ret .exit: - mov bl, 0xA7 ; disable mouse interface - call kbd_cmd - mov bl, 0xAE ; enable keyboard interface - call kbd_cmd - xor eax, eax - ret + mov bl, 0xA7 ; disable mouse interface + call kbd_cmd + mov bl, 0xAE ; enable keyboard interface + call kbd_cmd + xor eax, eax + ret endp proc service_proc stdcall, ioctl:dword mov edi, [ioctl] mov eax, [edi+IOCTL.io_code] test eax, eax - jz .getversion + jz .getversion cmp eax,1 - jz .gettype + jz .gettype .err: - or eax, -1 + or eax, -1 ret .ok: @@ -120,113 +122,113 @@ proc service_proc stdcall, ioctl:dword .getversion: cmp [edi+IOCTL.out_size], 4 - jb .err + jb .err mov edi, [edi+IOCTL.output] - mov dword [edi], PS2_DRV_VER ; version of driver + mov dword [edi], PS2_DRV_VER ; version of driver jmp .ok .gettype: cmp [edi+IOCTL.out_size], 4 - jb .err + jb .err mov edi, [edi+IOCTL.output] mov eax,[MouseType] - mov dword [edi], eax ; mouse type + mov dword [edi], eax ; mouse type jmp .ok endp detect_mouse: - mov bl, 0xAD ; disable keyboard interface + mov bl, 0xAD ; disable keyboard interface call kbd_cmd cmp ah,1 - je .fail + je .fail - mov bl, 0xA8 ; enable mouse interface + mov bl, 0xA8 ; enable mouse interface call kbd_cmd cmp ah,1 - je .fail + je .fail - mov al, 0xFF ; reset + mov al, 0xFF ; reset call mouse_cmd - jc .fail + jc .fail call mouse_read - jc .fail + jc .fail cmp al, 0xAA - jne .fail ; dead mouse + jne .fail ; dead mouse ; get device ID call mouse_read - jc .fail + jc .fail cmp al, 0x00 - jne .fail ; unknown device + jne .fail ; unknown device xor eax,eax ret .fail: - or eax,-1 + or eax,-1 ret try_mode_ID3: mov al, 0xF3 ;Set Sample Rate call mouse_cmd - jc .fail + jc .fail mov al, 0xC8 ;200d call mouse_cmd - jc .fail + jc .fail mov al, 0xF3 ;Set Sample Rate call mouse_cmd - jc .fail + jc .fail mov al, 0x64 ;100d call mouse_cmd - jc .fail + jc .fail mov al, 0xF3 ;Set Sample Rate call mouse_cmd - jc .fail + jc .fail mov al, 0x50 ;80d call mouse_cmd - jc .fail + jc .fail mov al, 0xF2 ;Get device id call mouse_cmd - jc .fail + jc .fail call mouse_read - jc .fail + jc .fail cmp al, 0x03 jne .fail xor eax,eax ret .fail: - or eax,-1 + or eax,-1 ret try_mode_ID4: mov al, 0xF3 ;Set Sample Rate call mouse_cmd - jc .fail + jc .fail mov al, 0xC8 ;200d call mouse_cmd - jc .fail + jc .fail mov al, 0xF3 ;Set Sample Rate call mouse_cmd - jc .fail + jc .fail mov al, 0xC8 ;100d call mouse_cmd - jc .fail + jc .fail mov al, 0xF3 ;Set Sample Rate call mouse_cmd - jc .fail + jc .fail mov al, 0x50 ;80d call mouse_cmd - jc .fail + jc .fail mov al, 0xF2 ;Get device id call mouse_cmd - jc .fail + jc .fail call mouse_read - jc .fail + jc .fail cmp al, 0x04 jne .fail @@ -234,7 +236,7 @@ try_mode_ID4: ret .fail: - or eax,-1 + or eax,-1 ret include 'ps2m_iofuncs.inc' @@ -242,12 +244,12 @@ include 'ps2m_irqh.inc' section '.data' data readable writable align 16 -version dd 0x00050005 -my_service db 'ps2mouse',0 +version dd 0x00050005 +my_service db 'ps2mouse',0 ;iofuncs data -mouse_cmd_byte db 0 -mouse_nr_tries db 0 +mouse_cmd_byte db 0 +mouse_nr_tries db 0 mouse_nr_resends db 0 ;hid data @@ -259,10 +261,10 @@ third_byte db 0 fourth_byte db 0 ;main data -MouseType dd 0 +MouseType dd 0 -XMoving dd 0 -YMoving dd 0 -ZMoving dd 0 -ButtonState dd 0 +XMoving dd 0 +YMoving dd 0 +ZMoving dd 0 +ButtonState dd 0 ;timerTicks dd 0