Rev 129 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 129 | Rev 384 | ||
---|---|---|---|
Line 59... | Line 59... | ||
59 | shr al,3 |
59 | shr al,3 |
60 | and al,2 |
60 | and al,2 |
61 | shr ah,5 |
61 | shr ah,5 |
62 | and ah,1 |
62 | and ah,1 |
63 | add al,ah |
63 | add al,ah |
64 | mov [0xfb40],al |
64 | mov [BTN_DOWN],al |
65 | mov [mouse_active],1 |
65 | mov [mouse_active],1 |
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 | call mouse_acceleration_com1 |
71 | call mouse_acceleration_com1 |
72 | add AX,[0xFB0A] ;[XCoordinate] |
72 | add AX,[MOUSE_X] ;[XCoordinate] |
73 | ; Êóðñîð íå äîëæåí âûõîäèòü çà ëåâóþ èëè |
73 | ; Êóðñîð íå äîëæåí âûõîäèòü çà ëåâóþ èëè |
74 | ; ïðàâóþ ãðàíèöó ýêðàíà |
74 | ; ïðàâóþ ãðàíèöó ýêðàíà |
75 | js @@X1 |
75 | js @@X1 |
76 | cmp AX,[0xFE00] ;ScreenLength |
76 | cmp AX,[ScreenWidth] ;ScreenLength |
77 | jb @@X2 |
77 | jb @@X2 |
78 | ; Óñòàíîâèòü êîîðäèíàòó X ïî ïðàâîé ãðàíèöå |
78 | ; Óñòàíîâèòü êîîðäèíàòó X ïî ïðàâîé ãðàíèöå |
79 | mov AX,[0xFE00] ;ScreenLength-1 |
79 | mov AX,[ScreenWidth] ;ScreenLength-1 |
80 | dec ax |
80 | dec ax |
81 | jmp @@X2 |
81 | jmp @@X2 |
82 | @@X1: |
82 | @@X1: |
83 | ; Óñòàíîâèòü êîîðäèíàòó X ïî ëåâîé ãðàíèöå |
83 | ; Óñòàíîâèòü êîîðäèíàòó X ïî ëåâîé ãðàíèöå |
84 | xor AX,AX |
84 | xor AX,AX |
85 | @@X2: |
85 | @@X2: |
86 | mov [0xFB0A],AX ;[XCoordinate] |
86 | mov [MOUSE_X],AX ;[XCoordinate] |
87 | ; Ïðèáàâèòü ïåðåìåùåíèå ïî Y ê êîîðäèíàòå Y |
87 | ; Ïðèáàâèòü ïåðåìåùåíèå ïî Y ê êîîðäèíàòå Y |
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 | call mouse_acceleration_com1 |
93 | call mouse_acceleration_com1 |
94 | add AX,[0xFB0C] ;[YCoordinate] |
94 | add AX,[MOUSE_Y] ;[YCoordinate] |
95 | ; Êóðñîð íå äîëæåí âûõîäèòü çà âåðõíþþ èëè |
95 | ; Êóðñîð íå äîëæåí âûõîäèòü çà âåðõíþþ èëè |
96 | ; íèæíþþ ãðàíèöó ýêðàíà |
96 | ; íèæíþþ ãðàíèöó ýêðàíà |
97 | js @@Y1 |
97 | js @@Y1 |
98 | cmp AX,[0xFE04] ;ScreenHeigth |
98 | cmp AX,[ScreenHeight] ;ScreenHeigth |
99 | jb @@Y2 |
99 | jb @@Y2 |
100 | ; Óñòàíîâèòü êîîðäèíàòó X ïî íèæíåé ãðàíèöå |
100 | ; Óñòàíîâèòü êîîðäèíàòó X ïî íèæíåé ãðàíèöå |
101 | mov AX,[0xFE04] ;ScreenHeigth-1 |
101 | mov AX,[ScreenHeight] ;ScreenHeigth-1 |
102 | dec ax |
102 | dec ax |
103 | jmp @@Y2 |
103 | jmp @@Y2 |
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 [MOUSE_Y],AX ;[YCoordinate] |
109 | mov eax,[timer_ticks] |
109 | mov eax,[timer_ticks] |
110 | mov [timer_ticks_com],eax |
110 | mov [timer_ticks_com],eax |
111 | jmp @@EndMouseInterrupt |
111 | jmp @@EndMouseInterrupt |
Line 112... | Line 112... | ||
112 | 112 | ||
Line 123... | Line 123... | ||
123 | mov eax,[timer_ticks] |
123 | mov eax,[timer_ticks] |
124 | sub eax,[timer_ticks_com] |
124 | sub eax,[timer_ticks_com] |
125 | cmp eax,[mouse_delay] |
125 | cmp eax,[mouse_delay] |
126 | pop eax |
126 | pop eax |
127 | ja @f |
127 | ja @f |
128 | shl ax,1 |
128 | imul ax,[mouse_speed_factor] |
129 | @@: |
129 | @@: |
130 | ret |
130 | ret |