Rev 120 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 120 | Rev 381 | ||
---|---|---|---|
Line 40... | Line 40... | ||
40 | mov [MouseByteNumber_2],0 |
40 | mov [MouseByteNumber_2],0 |
41 | ; (ïàêåò äàííûõ îò ìûøè ïðèíÿò ïîëíîñòüþ) |
41 | ; (ïàêåò äàííûõ îò ìûøè ïðèíÿò ïîëíîñòüþ) |
42 | ; Çàïèñàòü íîâîå çíà÷åíèå áàéòà ñîñòîÿíèÿ êíîïîê |
42 | ; Çàïèñàòü íîâîå çíà÷åíèå áàéòà ñîñòîÿíèÿ êíîïîê |
43 | mov al,[FirstByte_2] ;[0xfb01] |
43 | mov al,[FirstByte_2] ;[0xfb01] |
44 | and eax,3 |
44 | and eax,3 |
45 | mov [0xfb40],al |
45 | mov [BTN_DOWN],al |
46 | mov [mouse_active],1 |
46 | mov [mouse_active],1 |
47 | ; Âû÷èñëèòü íîâóþ X-êîîðäèíàòó êóðñîðà |
47 | ; Âû÷èñëèòü íîâóþ X-êîîðäèíàòó êóðñîðà |
48 | ; Çàíåñòè â AX ïåðåìåùåíèå ïî X |
48 | ; Çàíåñòè â AX ïåðåìåùåíèå ïî X |
49 | mov AH,0 ;äóáëèðóåì çíàê âî âñå ðàçðÿäû AH |
49 | mov AH,0 ;äóáëèðóåì çíàê âî âñå ðàçðÿäû AH |
50 | mov AL,[FirstByte_2] |
50 | mov AL,[FirstByte_2] |
Line 55... | Line 55... | ||
55 | @@M0: |
55 | @@M0: |
56 | mov AL,[SecondByte_2] |
56 | mov AL,[SecondByte_2] |
57 | call mouse_acceleration_ps2 |
57 | call mouse_acceleration_ps2 |
58 | ; Âû÷èñëèòü íîâîå çíà÷åíèå êîîðäèíàòû |
58 | ; Âû÷èñëèòü íîâîå çíà÷åíèå êîîðäèíàòû |
59 | ; êóðñîðà ïî X |
59 | ; êóðñîðà ïî X |
60 | add AX,[0xFB0A] ;[XCoordinate] |
60 | add AX,[MOUSE_X] ;[XCoordinate] |
61 | cmp AX,0 |
61 | cmp AX,0 |
62 | jge @@M1 |
62 | jge @@M1 |
63 | mov AX,0 |
63 | mov AX,0 |
64 | jmp @@M2 |
64 | jmp @@M2 |
65 | @@M1: |
65 | @@M1: |
66 | cmp AX,[0xFE00] ;ScreenLength |
66 | cmp AX,[ScreenWidth] ;ScreenLength |
67 | jl @@M2 |
67 | jl @@M2 |
68 | mov AX,[0xFE00] ;ScreenLength-1 |
68 | mov AX,[ScreenWidth] ;ScreenLength-1 |
69 | dec ax |
69 | dec ax |
70 | @@M2: |
70 | @@M2: |
71 | mov [0xFB0A],AX ;[XCoordinate] |
71 | mov [MOUSE_X],AX ;[XCoordinate] |
Line 72... | Line 72... | ||
72 | 72 | ||
73 | ; Âû÷èñëÿåì íîâóþ Y-êîîðäèíàòó êóðñîðà |
73 | ; Âû÷èñëÿåì íîâóþ Y-êîîðäèíàòó êóðñîðà |
74 | ; Çàíåñòè â AX ïåðåìåùåíèå ïî Y |
74 | ; Çàíåñòè â AX ïåðåìåùåíèå ïî Y |
75 | mov AH,0 ;äóáëèðóåì çíàê âî âñå ðàçðÿäû AH |
75 | mov AH,0 ;äóáëèðóåì çíàê âî âñå ðàçðÿäû AH |
Line 83... | Line 83... | ||
83 | call mouse_acceleration_ps2 |
83 | call mouse_acceleration_ps2 |
84 | ; Âû÷èñëèòü íîâîå çíà÷åíèå êîîðäèíàòû êóðñîðà |
84 | ; Âû÷èñëèòü íîâîå çíà÷åíèå êîîðäèíàòû êóðñîðà |
85 | ; ïî Y (Y-êîîðäèíàòà ìûøè PS/2 íàïðàâëåíà |
85 | ; ïî Y (Y-êîîðäèíàòà ìûøè PS/2 íàïðàâëåíà |
86 | ; ïðîòèâîïîëîæíî ýêðàííîé) |
86 | ; ïðîòèâîïîëîæíî ýêðàííîé) |
87 | neg AX |
87 | neg AX |
88 | add AX,[0xFB0C] ;[YCoordinate] |
88 | add AX,[MOUSE_Y] ;[YCoordinate] |
89 | cmp AX,0 |
89 | cmp AX,0 |
90 | jge @@M4 |
90 | jge @@M4 |
91 | mov AX,0 |
91 | mov AX,0 |
92 | jmp @@M5 |
92 | jmp @@M5 |
93 | @@M4: |
93 | @@M4: |
94 | cmp AX,[0xFE04] ;ScreenHeigth |
94 | cmp AX,[ScreenHeight] ;ScreenHeigth |
95 | jl @@M5 |
95 | jl @@M5 |
96 | mov AX,[0xFE04] ;ScreenHeigth-1 |
96 | mov AX,[ScreenHeight] ;ScreenHeigth-1 |
97 | dec ax |
97 | dec ax |
98 | @@M5: |
98 | @@M5: |
99 | mov [0xFB0C],AX ;[YCoordinate] |
99 | mov [MOUSE_Y],AX ;[YCoordinate] |
Line 100... | Line 100... | ||
100 | 100 | ||
101 | ; Ïîêàçàòü êóðñîð â íîâîé ïîçèöèè |
101 | ; Ïîêàçàòü êóðñîð â íîâîé ïîçèöèè |
102 | mov eax,[timer_ticks] |
102 | mov eax,[timer_ticks] |
103 | mov [timer_ticks_ps2],eax |
103 | mov [timer_ticks_ps2],eax |
Line 104... | Line 104... | ||
104 | jmp @@EndMouseInterrupt_2 |
104 | jmp @@EndMouseInterrupt_2 |
105 | 105 | ||
106 | ; Îáíàðóæåí ñáîé â ïîðÿäêå ïåðåäà÷è èíôîðìàöèè îò ìûøè |
106 | ; Îáíàðóæåí ñáîé â ïîðÿäêå ïåðåäà÷è èíôîðìàöèè îò ìûøè |
107 | @@Error_2: |
107 | @@Error_2: |
108 | mov [MouseByteNumber_2],0 |
108 | mov [MouseByteNumber_2],0 |
109 | ; Íîðìàëüíîå çàâåðøåíèå ïðåðûâàíèÿ |
109 | ; Íîðìàëüíîå çàâåðøåíèå ïðåðûâàíè |
110 | @@EndMouseInterrupt_2: |
110 | @@EndMouseInterrupt_2: |
Line 111... | Line 111... | ||
111 | call ready_for_next_irq_1 |
111 | call ready_for_next_irq_1 |
Line 127... | Line 127... | ||
127 | ;* ôëàã ZF óñòàíîâëåí - íîðìàëüíîå çàâåðøåíèå, * |
127 | ;* ôëàã ZF óñòàíîâëåí - íîðìàëüíîå çàâåðøåíèå, * |
128 | ;* ôëàã ZF ñáðîøåí - îøèáêà òàéì-àóòà. * |
128 | ;* ôëàã ZF ñáðîøåí - îøèáêà òàéì-àóòà. * |
129 | ;*********************************************** |
129 | ;*********************************************** |
130 | Wait8042BufferEmpty: |
130 | Wait8042BufferEmpty: |
131 | ; push CX |
131 | ; push CX |
132 | ; mov CX,0FFFFh ;çàäàòü ÷èñëî öèêëîâ îæèäàíèÿ |
132 | ; mov CX,0FFFFh ;çàäàòü ÷èñëî öèêëîâ îæèäàíè |
133 | ;@@kb: |
133 | ;@@kb: |
134 | ; in AL,64h ;ïîëó÷èòü ñòàòóñ |
134 | ; in AL,64h ;ïîëó÷èòü ñòàòóñ |
135 | ; test AL,10b ;áóôåð i8042 ñâîáîäåí? |
135 | ; test AL,10b ;áóôåð i8042 ñâîáîäåí? |
136 | ; loopnz @@kb ;åñëè íåò, òî öèêë |
136 | ; loopnz @@kb ;åñëè íåò, òî öèêë |
137 | ; pop CX |
137 | ; pop CX |
Line 149... | Line 149... | ||
149 | ;*************************************** |
149 | ;*************************************** |
150 | ;* ÎÆÈÄÀÍÈÅ ÏÎÑÒÓÏËÅÍÈß ÄÀÍÍÛÕ ÎÒ ÌÛØÈ * |
150 | ;* ÎÆÈÄÀÍÈÅ ÏÎÑÒÓÏËÅÍÈß ÄÀÍÍÛÕ ÎÒ ÌÛØÈ * |
151 | ;*************************************** |
151 | ;*************************************** |
152 | WaitMouseData: |
152 | WaitMouseData: |
153 | ; push CX |
153 | ; push CX |
154 | ; mov CX,0FFFFh ;çàäàòü ÷èñëî öèêëîâ îæèäàíèÿ |
154 | ; mov CX,0FFFFh ;çàäàòü ÷èñëî öèêëîâ îæèäàíè |
155 | ;@@mouse: |
155 | ;@@mouse: |
156 | ; in AL,64h ;îïðîñèòü ðåãèñòð ñòàòóñà |
156 | ; in AL,64h ;îïðîñèòü ðåãèñòð ñòàòóñà |
157 | ; test AL,100000b ;äàííûå ïîñòóïèëè? |
157 | ; test AL,100000b ;äàííûå ïîñòóïèëè? |
158 | ; loopz @@mouse ;åñëè íåò, òî öèêë |
158 | ; loopz @@mouse ;åñëè íåò, òî öèêë |
159 | ; pop CX |
159 | ; pop CX |