Rev 3587 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3587 | Rev 7134 | ||
---|---|---|---|
1 | ; |
1 | ; |
2 | ; Óïðàâëåíèå ëîòêàìè äèñêîâûõ ïðèâîäîâ ATAPI |
2 | ; Óïðàâëåíèå ëîòêàìè äèñêîâûõ ïðèâîäîâ ATAPI |
3 | ; 22.07.2007 Mario79 èñõîäíûé âàðèàíò |
3 | ; 22.07.2007 Mario79 èñõîäíûé âàðèàíò |
4 | ;--------------------------------------------------------------------- |
4 | ;--------------------------------------------------------------------- |
5 | 5 | ||
6 | use32 ; âêëþ÷èòü 32-áèòíûé ðåæèì àññåìáëåðà |
6 | use32 ; âêëþ÷èòü 32-áèòíûé ðåæèì àññåìáëåðà |
7 | org 0x0 ; àäðåñàöèÿ ñ íóëÿ |
7 | org 0x0 ; àäðåñàöèÿ ñ íóëÿ |
8 | 8 | ||
9 | db 'MENUET01' ; 8-áàéòíûé èäåíòèôèêàòîð MenuetOS |
9 | db 'MENUET01' ; 8-áàéòíûé èäåíòèôèêàòîð MenuetOS |
10 | dd 0x01 ; âåðñèÿ çàãîëîâêà (âñåãäà 1) |
10 | dd 0x01 ; âåðñèÿ çàãîëîâêà (âñåãäà 1) |
11 | dd START ; àäðåñ ïåðâîé êîìàíäû |
11 | dd START ; àäðåñ ïåðâîé êîìàíäû |
12 | dd I_END ; ðàçìåð ïðîãðàììû |
12 | dd I_END ; ðàçìåð ïðîãðàììû |
13 | dd 0x11000 ; êîëè÷åñòâî ïàìÿòè |
13 | dd 0x11000 ; êîëè÷åñòâî ïàìÿòè |
14 | dd 0x11000 ; àäðåñ âåðøèíû ñòýêà |
14 | dd 0x11000 ; àäðåñ âåðøèíû ñòýêà |
15 | dd 0x0 ; àäðåñ áóôåðà äëÿ ïàðàìåòðîâ (íå èñïîëüçóåòñÿ) |
15 | dd 0x0 ; àäðåñ áóôåðà äëÿ ïàðàìåòðîâ (íå èñïîëüçóåòñÿ) |
16 | dd 0x0 ; çàðåçåðâèðîâàíî |
16 | dd 0x0 ; çàðåçåðâèðîâàíî |
17 | 17 | ||
18 | include 'MACROS.INC' ; ìàêðîñû îáëåã÷àþò æèçíü àññåìáëåðùèêîâ! |
- | |
19 | include 'lang.inc' |
18 | include 'macros.inc' ; ìàêðîñû îáëåã÷àþò æèçíü àññåìáëåðùèêîâ! |
20 | 19 | ||
21 | ;--------------------------------------------------------------------- |
20 | ;--------------------------------------------------------------------- |
22 | ;--- ÍÀ×ÀËÎ ÏÐÎÃÐÀÌÌÛ ---------------------------------------------- |
21 | ;--- ÍÀ×ÀËÎ ÏÐÎÃÐÀÌÌÛ ---------------------------------------------- |
23 | ;--------------------------------------------------------------------- |
22 | ;--------------------------------------------------------------------- |
24 | 23 | ||
25 | START: |
24 | START: |
26 | 25 | ||
27 | red: ; ïåðåðèñîâàòü îêíî |
26 | red: ; ïåðåðèñîâàòü îêíî |
28 | call draw_window ; âûçûâàåì ïðîöåäóðó îòðèñîâêè îêíà |
27 | call draw_window ; âûçûâàåì ïðîöåäóðó îòðèñîâêè îêíà |
29 | 28 | ||
30 | ;--------------------------------------------------------------------- |
29 | ;--------------------------------------------------------------------- |
31 | ;--- ÖÈÊË ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈÉ ---------------------------------------- |
30 | ;--- ÖÈÊË ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈÉ ---------------------------------------- |
32 | ;--------------------------------------------------------------------- |
31 | ;--------------------------------------------------------------------- |
33 | 32 | ||
34 | still: |
33 | still: |
35 | mcall 10 ; ôóíêöèÿ 10 - æäàòü ñîáûòèÿ |
34 | mcall 10 ; ôóíêöèÿ 10 - æäàòü ñîáûòèÿ |
36 | 35 | ||
37 | cmp eax,1 ; ïåðåðèñîâàòü îêíî ? |
36 | cmp eax,1 ; ïåðåðèñîâàòü îêíî ? |
38 | je red ; åñëè äà - íà ìåòêó red |
37 | je red ; åñëè äà - íà ìåòêó red |
39 | cmp eax,2 ; íàæàòà êëàâèøà ? |
38 | cmp eax,2 ; íàæàòà êëàâèøà ? |
40 | je key ; åñëè äà - íà key |
39 | je key ; åñëè äà - íà key |
41 | cmp eax,3 ; íàæàòà êíîïêà ? |
40 | cmp eax,3 ; íàæàòà êíîïêà ? |
42 | je button ; åñëè äà - íà button |
41 | je button ; åñëè äà - íà button |
43 | 42 | ||
44 | jmp still ; åñëè äðóãîå ñîáûòèå - â íà÷àëî öèêëà |
43 | jmp still ; åñëè äðóãîå ñîáûòèå - â íà÷àëî öèêëà |
45 | 44 | ||
46 | 45 | ||
47 | ;--------------------------------------------------------------------- |
46 | ;--------------------------------------------------------------------- |
48 | 47 | ||
49 | 48 | ||
50 | key: ; íàæàòà êëàâèøà íà êëàâèàòóðå |
49 | key: ; íàæàòà êëàâèøà íà êëàâèàòóðå |
51 | mcall 2 ; ôóíêöèÿ 2 - ñ÷èòàòü êîä ñèìâîëà (â ah) |
50 | mcall 2 ; ôóíêöèÿ 2 - ñ÷èòàòü êîä ñèìâîëà (â ah) |
52 | 51 | ||
53 | jmp still ; âåðíóòüñÿ ê íà÷àëó öèêëà |
52 | jmp still ; âåðíóòüñÿ ê íà÷àëó öèêëà |
54 | 53 | ||
55 | ;--------------------------------------------------------------------- |
54 | ;--------------------------------------------------------------------- |
56 | 55 | ||
57 | button: |
56 | button: |
58 | mcall 17 ; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè |
57 | mcall 17 ; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè |
59 | ; êíîïêè 2,3,4,5 - load tray CD0/CD1/CD2/CD3 |
58 | ; êíîïêè 2,3,4,5 - load tray CD0/CD1/CD2/CD3 |
60 | movzx ecx, ah |
59 | movzx ecx, ah |
61 | sub ecx, 2 |
60 | sub ecx, 2 |
62 | cmp ecx, 3 |
61 | cmp ecx, 3 |
63 | ja b6 |
62 | ja b6 |
64 | mcall 24,5 |
63 | mcall 24,5 |
65 | jmp red |
64 | jmp red |
66 | b6: |
65 | b6: |
67 | ; êíîïêè 6,7,8,9 - eject tray CD0/CD1/CD2/CD3 |
66 | ; êíîïêè 6,7,8,9 - eject tray CD0/CD1/CD2/CD3 |
68 | sub ecx, 4 |
67 | sub ecx, 4 |
69 | cmp ecx, 3 |
68 | cmp ecx, 3 |
70 | ja b1 |
69 | ja b1 |
71 | mcall 24,4 |
70 | mcall 24,4 |
72 | jmp red |
71 | jmp red |
73 | b1: |
72 | b1: |
74 | cmp ah, 1 ; åñëè ÍÅ íàæàòà êíîïêà ñ íîìåðîì 1, |
73 | cmp ah, 1 ; åñëè ÍÅ íàæàòà êíîïêà ñ íîìåðîì 1, |
75 | jne still ; âåðíóòüñÿ |
74 | jne still ; âåðíóòüñÿ |
76 | 75 | ||
77 | .exit: |
76 | .exit: |
78 | mcall -1 ; èíà÷å êîíåö ïðîãðàììû |
77 | mcall -1 ; èíà÷å êîíåö ïðîãðàììû |
79 | 78 | ||
80 | 79 | ||
81 | 80 | ||
82 | ;--------------------------------------------------------------------- |
81 | ;--------------------------------------------------------------------- |
83 | ;--- ÎÏÐÅÄÅËÅÍÈÅ È ÎÒÐÈÑÎÂÊÀ ÎÊÍÀ ---------------------------------- |
82 | ;--- ÎÏÐÅÄÅËÅÍÈÅ È ÎÒÐÈÑÎÂÊÀ ÎÊÍÀ ---------------------------------- |
84 | ;--------------------------------------------------------------------- |
83 | ;--------------------------------------------------------------------- |
85 | 84 | ||
86 | draw_window: |
85 | draw_window: |
87 | mcall 12, 1 ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà |
86 | mcall 12, 1 ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà |
88 | ; 1 - íà÷èíàåì ðèñîâàòü |
87 | ; 1 - íà÷èíàåì ðèñîâàòü |
89 | ; ÑÎÇÄÀèÌ ÎÊÍÎ |
88 | ; ÑÎÇÄÀèÌ ÎÊÍÎ |
90 | 89 | ||
91 | if lang eq it |
90 | if lang eq it |
92 | mcall 0, <100,250>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0 |
91 | mcall 0, <100,250>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0 |
93 | else |
92 | else |
94 | mcall 0, <100,230>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0 |
93 | mcall 0, <100,230>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0 |
95 | end if |
94 | end if |
96 | mcall 71, 1 ,header |
95 | mcall 71, 1 ,header |
97 | mcall 8,<15,42>,<40,20>,2,0xaaaaaa |
96 | mcall 8,<15,42>,<40,20>,2,0xaaaaaa |
98 | call draw_buttons |
97 | call draw_buttons |
99 | mov edx,6 |
98 | mov edx,6 |
100 | add ecx,30 shl 16 |
99 | add ecx,30 shl 16 |
101 | mcall |
100 | mcall |
102 | call draw_buttons |
101 | call draw_buttons |
103 | 102 | ||
104 | if lang eq it |
103 | if lang eq it |
105 | mcall 4, <16,25>, 0x80ffffff,text1 |
104 | mcall 4, <16,25>, 0x80ffffff,text1 |
106 | else |
105 | else |
107 | mcall 4, <25,25>, 0x80ffffff,text1 |
106 | mcall 4, <25,25>, 0x80ffffff,text1 |
108 | end if |
107 | end if |
109 | mov edx,text2 |
108 | mov edx,text2 |
110 | 109 | ||
111 | add ebx,3 shl 16+20 |
110 | add ebx,3 shl 16+20 |
112 | mcall |
111 | mcall |
113 | mov edx,text3 |
112 | mov edx,text3 |
114 | add ebx,30 |
113 | add ebx,30 |
115 | sub ebx,3 shl 16 |
114 | sub ebx,3 shl 16 |
116 | mcall |
115 | mcall |
117 | 116 | ||
118 | mcall 12, 2 ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà |
117 | mcall 12, 2 ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà |
119 | ; 2, çàêîí÷èëè ðèñîâàòü |
118 | ; 2, çàêîí÷èëè ðèñîâàòü |
120 | 119 | ||
121 | ret ; âûõîäèì èç ïðîöåäóðû |
120 | ret ; âûõîäèì èç ïðîöåäóðû |
122 | 121 | ||
123 | draw_buttons: |
122 | draw_buttons: |
124 | pusha |
123 | pusha |
125 | if lang eq it |
124 | if lang eq it |
126 | add ebx,60 shl 16 |
125 | add ebx,60 shl 16 |
127 | else |
126 | else |
128 | add ebx,50 shl 16 |
127 | add ebx,50 shl 16 |
129 | end if |
128 | end if |
130 | inc edx |
129 | inc edx |
131 | mcall |
130 | mcall |
132 | if lang eq it |
131 | if lang eq it |
133 | add ebx,60 shl 16 |
132 | add ebx,60 shl 16 |
134 | else |
133 | else |
135 | add ebx,50 shl 16 |
134 | add ebx,50 shl 16 |
136 | end if |
135 | end if |
137 | inc edx |
136 | inc edx |
138 | mcall |
137 | mcall |
139 | if lang eq it |
138 | if lang eq it |
140 | add ebx,60 shl 16 |
139 | add ebx,60 shl 16 |
141 | else |
140 | else |
142 | add ebx,50 shl 16 |
141 | add ebx,50 shl 16 |
143 | end if |
142 | end if |
144 | inc edx |
143 | inc edx |
145 | mcall |
144 | mcall |
146 | popa |
145 | popa |
147 | ret |
146 | ret |
148 | ;--------------------------------------------------------------------- |
147 | ;--------------------------------------------------------------------- |
149 | ;--- ÄÀÍÍÛÅ ÏÐÎÃÐÀÌÌÛ ---------------------------------------------- |
148 | ;--- ÄÀÍÍÛÅ ÏÐÎÃÐÀÌÌÛ ---------------------------------------------- |
150 | ;--------------------------------------------------------------------- |
149 | ;--------------------------------------------------------------------- |
151 | header db ' ATAPI Device Tray Control',0 |
150 | header db ' ATAPI Device Tray Control',0 |
152 | if lang eq it |
151 | if lang eq it |
153 | text3 db 'espelli espelli espelli espelli',0 |
152 | text3 db 'espelli espelli espelli espelli',0 |
154 | text2 db 'carica carica carica carica',0 |
153 | text2 db 'carica carica carica carica',0 |
155 | text1 db '/cd0/ /cd1/ /cd2/ /cd3/',0 |
154 | text1 db '/cd0/ /cd1/ /cd2/ /cd3/',0 |
156 | else |
155 | else |
157 | text3 db 'eject eject eject eject',0 |
156 | text3 db 'eject eject eject eject',0 |
158 | text2 db 'load load load load',0 |
157 | text2 db 'load load load load',0 |
159 | text1 db '/cd0/ /cd1/ /cd2/ /cd3/',0 |
158 | text1 db '/cd0/ /cd1/ /cd2/ /cd3/',0 |
160 | end if |
159 | end if |
161 | 160 | ||
162 | ;--------------------------------------------------------------------- |
161 | ;--------------------------------------------------------------------- |
163 | 162 | ||
164 | I_END: ; ìåòêà êîíöà ïðîãðàììû25,25>16,25>40,20>15,42>100,110>100,230>100,110>100,250> |
163 | I_END: ; ìåòêà êîíöà ïðîãðàììû25,25>16,25>40,20>15,42>100,110>100,230>100,110>100,250> |