Rev 479 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
479 | kastigar | 1 | kbd_read: |
2 | push ecx edx |
||
3 | |||
4 | mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's |
||
5 | kr_loop: |
||
6 | in al,0x64 |
||
7 | test al,1 |
||
8 | jnz kr_ready |
||
9 | loop kr_loop |
||
10 | mov ah,1 |
||
11 | jmp kr_exit |
||
12 | kr_ready: |
||
13 | push ecx |
||
14 | mov ecx,32 |
||
15 | kr_delay: |
||
16 | loop kr_delay |
||
17 | pop ecx |
||
18 | in al,0x60 |
||
19 | xor ah,ah |
||
20 | kr_exit: |
||
21 | pop edx ecx |
||
22 | ret |
||
23 | |||
24 | |||
25 | kbd_write: |
||
26 | |||
27 | push ecx edx |
||
28 | |||
29 | mov dl,al |
||
30 | in al,0x60 |
||
31 | mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's |
||
32 | kw_loop: |
||
33 | in al,0x64 |
||
34 | test al,2 |
||
35 | jz kw_ok |
||
36 | loop kw_loop |
||
37 | mov ah,1 |
||
38 | jmp kw_exit |
||
39 | kw_ok: |
||
40 | mov al,dl |
||
41 | out 0x60,al |
||
42 | mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's |
||
43 | kw_loop3: |
||
44 | in al,0x64 |
||
45 | test al,2 |
||
46 | jz kw_ok3 |
||
47 | loop kw_loop3 |
||
48 | mov ah,1 |
||
49 | jmp kw_exit |
||
50 | kw_ok3: |
||
51 | mov ah,8 |
||
52 | kw_loop4: |
||
53 | mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's |
||
54 | kw_loop5: |
||
55 | in al,0x64 |
||
56 | test al,1 |
||
57 | jnz kw_ok4 |
||
58 | loop kw_loop5 |
||
59 | dec ah |
||
60 | jnz kw_loop4 |
||
61 | kw_ok4: |
||
62 | xor ah,ah |
||
63 | kw_exit: |
||
64 | pop edx ecx |
||
65 | ret |
||
66 | |||
67 | |||
68 | kbd_cmd: |
||
69 | |||
70 | mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's |
||
71 | c_wait: |
||
72 | in al,0x64 |
||
73 | test al,2 |
||
74 | jz c_send |
||
75 | loop c_wait |
||
76 | jmp c_error |
||
77 | c_send: |
||
78 | mov al,bl |
||
79 | out 0x64,al |
||
80 | mov ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's |
||
81 | c_accept: |
||
82 | in al,0x64 |
||
83 | test al,2 |
||
84 | jz c_ok |
||
85 | loop c_accept |
||
86 | c_error: |
||
87 | mov ah,1 |
||
88 | jmp c_exit |
||
89 | c_ok: |
||
90 | xor ah,ah |
||
91 | c_exit: |
||
92 | ret |
||
93 | |||
94 | mouse_cmd: |
||
95 | mov [mouse_cmd_byte], al |
||
96 | mov [mouse_nr_resends], 5 |
||
97 | .resend: |
||
98 | mov bl, 0xd4 |
||
99 | call kbd_cmd |
||
100 | cmp ah,1 |
||
101 | je .fail |
||
102 | |||
103 | mov al, [mouse_cmd_byte] |
||
104 | call kbd_write |
||
105 | cmp ah, 1 |
||
106 | je .fail |
||
107 | |||
108 | call mouse_read |
||
109 | |||
110 | cmp al, 0xFA |
||
111 | jne .noack |
||
112 | clc |
||
113 | ret |
||
114 | .noack: |
||
115 | cmp al, 0xFE ; resend |
||
116 | jne .noresend |
||
117 | dec [mouse_nr_resends] |
||
118 | jnz .resend |
||
119 | .noresend: |
||
120 | .fail: |
||
121 | stc |
||
122 | ret |
||
123 | |||
124 | |||
125 | mouse_read: |
||
126 | mov [mouse_nr_tries], 100 |
||
127 | .repeat: |
||
128 | call kbd_read |
||
129 | cmp ah, 1 |
||
130 | jne .fin |
||
131 | mov esi, 10 |
||
132 | call Sleep |
||
133 | dec [mouse_nr_tries] |
||
134 | jnz .repeat |
||
135 | |||
136 | stc |
||
137 | ret |
||
138 | |||
139 | .fin: |
||
140 | clc |
||
141 | ret |