Subversion Repositories Kolibri OS

Rev

Rev 58 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 58 Rev 120
Line 2... Line 2...
2
MouseByteNumber DB 0
2
MouseByteNumber DB 0
3
; Òðåõáàéòîâàÿ ñòðóêòóðà äàííûõ, ïåðåäàâàåìàÿ ìûøüþ
3
; Òðåõáàéòîâàÿ ñòðóêòóðà äàííûõ, ïåðåäàâàåìàÿ ìûøüþ
4
FirstByte       DB 0
4
FirstByte       DB 0
5
SecondByte      DB 0
5
SecondByte      DB 0
6
ThirdByte       DB 0
6
ThirdByte       DB 0
7
 
-
 
-
 
7
timer_ticks_com dd 0
8
;***************************************
8
;***************************************
9
;* ÍÎÂÛÉ ÎÁÐÀÁÎÒ×ÈÊ ÏÐÅÐÛÂÀÍÈß ÎÒ ÌÛØÈ *
9
;* ÍÎÂÛÉ ÎÁÐÀÁÎÒ×ÈÊ ÏÐÅÐÛÂÀÍÈß ÎÒ ÌÛØÈ *
10
;***************************************
10
;***************************************
11
check_mouse_data_com1:
11
check_mouse_data_com1:
12
;        cmp     [com1_mouse_detected],0
12
;        cmp     [com1_mouse_detected],0
Line 66... Line 66...
66
; Ïðèáàâèòü ïåðåìåùåíèå ïî X ê êîîðäèíàòå X
66
; Ïðèáàâèòü ïåðåìåùåíèå ïî X ê êîîðäèíàòå X
67
        mov     AL,[FirstByte]
67
        mov     AL,[FirstByte]
68
        shl     AL,6
68
        shl     AL,6
69
        or      AL,[SecondByte]
69
        or      AL,[SecondByte]
70
        cbw
70
        cbw
71
         shl  ax,1
71
        call    mouse_acceleration_com1
72
        add     AX,[0xFB0A]    ;[XCoordinate]
72
        add     AX,[0xFB0A]    ;[XCoordinate]
73
        ; Êóðñîð íå äîëæåí âûõîäèòü çà ëåâóþ èëè
73
        ; Êóðñîð íå äîëæåí âûõîäèòü çà ëåâóþ èëè
74
        ; ïðàâóþ ãðàíèöó ýêðàíà
74
        ; ïðàâóþ ãðàíèöó ýêðàíà
75
        js      @@X1
75
        js      @@X1
76
        cmp     AX,[0xFE00]   ;ScreenLength
76
        cmp     AX,[0xFE00]   ;ScreenLength
Line 88... Line 88...
88
        mov     AL,[FirstByte]
88
        mov     AL,[FirstByte]
89
        and     AL,00001100b
89
        and     AL,00001100b
90
        shl     AL,4
90
        shl     AL,4
91
        or      AL,[ThirdByte]
91
        or      AL,[ThirdByte]
92
        cbw
92
        cbw
93
         shl  ax,1
93
        call    mouse_acceleration_com1
94
        add     AX,[0xFB0C]   ;[YCoordinate]
94
        add     AX,[0xFB0C]   ;[YCoordinate]
95
        ; Êóðñîð íå äîëæåí âûõîäèòü çà âåðõíþþ èëè
95
        ; Êóðñîð íå äîëæåí âûõîäèòü çà âåðõíþþ èëè
96
        ; íèæíþþ ãðàíèöó ýêðàíà
96
        ; íèæíþþ ãðàíèöó ýêðàíà
97
        js      @@Y1
97
        js      @@Y1
98
        cmp     AX,[0xFE04]  ;ScreenHeigth
98
        cmp     AX,[0xFE04]  ;ScreenHeigth
Line 104... Line 104...
104
@@Y1:
104
@@Y1:
105
       ; Óñòàíîâèòü êîîðäèíàòó X ïî âåðõíåé ãðàíèöå
105
       ; Óñòàíîâèòü êîîðäèíàòó X ïî âåðõíåé ãðàíèöå
106
        xor     AX,AX
106
        xor     AX,AX
107
@@Y2:
107
@@Y2:
108
        mov     [0xFB0C],AX     ;[YCoordinate]
108
        mov     [0xFB0C],AX     ;[YCoordinate]
-
 
109
        mov   eax,[timer_ticks]
-
 
110
        mov   [timer_ticks_com],eax
109
        jmp     @@EndMouseInterrupt
111
        jmp     @@EndMouseInterrupt
Line 110... Line 112...
110
 
112
 
111
@@Error:
113
@@Error:
112
; Ïðîèçîøåë ñáîé â ïîðÿäêå ïåðåäà÷è èíôîðìàöèè îò
114
; Ïðîèçîøåë ñáîé â ïîðÿäêå ïåðåäà÷è èíôîðìàöèè îò
113
; ìûøè, îáíóëèòü ñ÷åò÷èê áàéòîâ ïàêåòà äàííûõ
115
; ìûøè, îáíóëèòü ñ÷åò÷èê áàéòîâ ïàêåòà äàííûõ
114
        mov     [MouseByteNumber],0
116
        mov     [MouseByteNumber],0
115
@@EndMouseInterrupt:
117
@@EndMouseInterrupt:
116
        call  ready_for_next_irq
118
        call  ready_for_next_irq
Line -... Line 119...
-
 
119
        ret
-
 
120
 
-
 
121
mouse_acceleration_com1:
-
 
122
        push    eax
-
 
123
        mov   eax,[timer_ticks]
-
 
124
        sub   eax,[timer_ticks_com]
-
 
125
        cmp   eax,[mouse_delay]
-
 
126
        pop    eax
-
 
127
        ja     @f
-
 
128
        shl    ax,1