21,14 → 21,20 |
cmp AL,'M' |
jne @f |
mov [com1_mouse_detected],1 |
mov [irq_owner+4*4], 1 ; IRQ4 owner is System |
mov eax, [RESERVED_PORTS] |
inc eax |
mov [RESERVED_PORTS], eax |
shl eax, 4 |
mov [RESERVED_PORTS+eax+0], dword 1 |
mov [RESERVED_PORTS+eax+4], dword 0x3F8 |
mov [RESERVED_PORTS+eax+8], dword 0x3FF |
pusha |
|
mov eax,4 |
shl eax,2 |
mov [irq_owner+eax], 1 |
|
inc dword [RESERVED_PORTS] |
mov edi,[RESERVED_PORTS] |
shl edi,4 |
mov [RESERVED_PORTS+edi+0],dword 1 |
mov [RESERVED_PORTS+edi+4],dword 0x3f0 |
mov [RESERVED_PORTS+edi+8],dword 0x3ff |
|
popa |
mov esi,boot_setmouse_type+22 |
call boot_log |
@@: |
37,14 → 43,20 |
cmp AL,'M' |
jne @f |
mov [com2_mouse_detected],1 |
mov [irq_owner+3*4], 1 ; IRQ3 owner is System |
mov eax, [RESERVED_PORTS] |
inc eax |
mov [RESERVED_PORTS], eax |
shl eax, 4 |
mov [RESERVED_PORTS+eax+0], dword 1 |
mov [RESERVED_PORTS+eax+4], dword 0x2F8 |
mov [RESERVED_PORTS+eax+8], dword 0x2FF |
pusha |
|
mov eax,3 |
shl eax,2 |
mov [irq_owner+eax], 1 |
|
inc dword [RESERVED_PORTS] |
mov edi,[RESERVED_PORTS] |
shl edi,4 |
mov [RESERVED_PORTS+edi+0],dword 1 |
mov [RESERVED_PORTS+edi+4],dword 0x2f0 |
mov [RESERVED_PORTS+edi+8],dword 0x2ff |
|
popa |
mov esi,boot_setmouse_type+44 |
call boot_log |
@@: |
82,24 → 94,22 |
; ìûøüþ òèïà MSMouse |
; Îòêëþ÷èòü ïèòàíèå ìûøè è ïðåðûâàíè |
mov DX,[COMPortBaseAddr] |
add EDX,4 ;ðåãèñòð óïðàâëåíèÿ ìîäåìîì |
add DX,4 ;ðåãèñòð óïðàâëåíèÿ ìîäåìîì |
mov AL,0 ;ñáðîñèòü DTR, RTS è OUT2 |
out DX,AL |
; Îæèäàòü 5 "òèêîâ" (0,2 ñ) |
mov ecx, 0xFFFF |
loop $ |
mov ecx,0xffff |
dT_1: |
dec ecx |
cmp ecx,0 |
jne dT_1 |
mov ecx,0xffff |
; Âêëþ÷èòü ïèòàíèå ìûøè |
mov al, 1 |
out dx, al |
mov ecx, 0xFFFF |
loop $ |
mov AL,11b ;óñòàíîâèòü DTR è RTS |
out DX,AL |
; Î÷èñòèòü ðåãèñòð äàííûõ |
sub edx, 4 |
mov DX,[COMPortBaseAddr] |
in AL,DX |
add edx, 4 |
mov AL,11b ;óñòàíîâèòü DTR è RTS |
out DX,AL |
mov ecx, 0x1FFFF |
; Öèêë îïðîñà ïîðòà |
WaitData: |
; Îæèäàòü åùå 10 "òèêîâ" |