Subversion Repositories Kolibri OS

Rev

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