7,8 → 7,27 |
; Àâòîð èñõîäíîãî òåêñòà Êóëàêîâ Âëàäèìèð Ãåííàäüåâè÷. |
; Àäàïòàöèÿ è äîðàáîòêà Mario79 |
|
Detect_COM_Mouse: |
pusha |
call MSMouseSearch |
cmp AL,'M' |
jne @f |
mov [com1_mouse_detected],1 |
mov esi,boot_setmouse_type+22 |
call boot_log |
@@: |
sub [COMPortBaseAddr],100h |
call MSMouseSearch |
cmp AL,'M' |
jne @f |
mov [com2_mouse_detected],1 |
mov esi,boot_setmouse_type+44 |
call boot_log |
@@: |
popa |
jmp end_detecting_mouse |
|
MSMouseSearch: |
pusha |
; ÏÎÈÑÊ ÌÛØÈ ×ÅÐÅÇ COM-ÏÎÐÒÛ |
MouseSearch: |
; Óñòàíàâëèâàåì ñêîðîñòü |
70,46 → 89,19 |
; Ââåñòè äàííûå |
mov DX,[COMPortBaseAddr] |
in AL,DX |
; Óñòðîéñòâî ÿâëÿåòñÿ ìûøüþ? |
cmp AL,'M' |
je EndDetect |
NoMouse: |
inc [COMPortNum] |
cmp [COMPortNum],1 |
ja EndDetect |
sub [COMPortBaseAddr],100h |
jmp MouseSearch |
ret |
|
iglobal |
COMPortBaseAddr dw 3F8h |
COMPortNum dw 0 |
;COMPortNum dw 0 |
endg |
|
iglobal |
boot_setmouse_type db 'No COM mouse, set PS2',0 |
boot_setmouse_type db 'Detected - PS2 mouse',0 |
db 'Detected - COM1 mouse',0 |
db 'Detected - COM2 mouse',0 |
|
endg |
|
EndDetect: |
cmp [COMPortNum],0 ;íîìåð ïîðòà ìåíüøå 0? |
jl ComMouseNotFound ;ìûøü íå íàéäåíà |
cmp [COMPortNum],1 ;íîìåð ïîðòà áîëüøå 1? |
ja ComMouseNotFound ;ìûøü íå íàéäåíà |
mov ax,[COMPortNum] |
add al,2 |
jmp set_detecting_mouse |
ComMouseNotFound: |
mov al,1 |
set_detecting_mouse: |
mov [0xF604],al |
dec al |
movzx eax,al |
imul eax,22 |
mov esi,boot_setmouse_type |
add esi,eax |
call boot_log |
popa |
end_detecting_mouse: |
|
|