Rev 7776 | Rev 8256 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7776 | Rev 7777 | ||
---|---|---|---|
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
4 | ; Compile with FASM |
4 | ; Compile with FASM |
5 | ; Version 0.3.9: Apr 11, 2020 |
5 | ; Version 0.3.9: Apr 11, 2020 |
6 | 6 | ||
7 | ; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
7 | ; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
8 | ; All rights reserved. |
8 | ; All rights reserved. |
9 | ; Redistribution and use in source and binary forms, with or without modification, |
9 | ; Redistribution and use in source and binary forms, with or without modification, |
10 | ; are permitted provided that the following conditions are met: |
10 | ; are permitted provided that the following conditions are met: |
11 | ; * Redistributions of source code must retain the above copyright notice, this |
11 | ; * Redistributions of source code must retain the above copyright notice, this |
12 | ; list of conditions and the following disclaimer. |
12 | ; list of conditions and the following disclaimer. |
13 | ; * Redistributions in binary form must reproduce the above copyright notice, |
13 | ; * Redistributions in binary form must reproduce the above copyright notice, |
14 | ; this list of conditions and the following disclaimer in the documentation and/or |
14 | ; this list of conditions and the following disclaimer in the documentation and/or |
15 | ; other materials provided with the distribution. |
15 | ; other materials provided with the distribution. |
16 | ; * Neither the name of the |
16 | ; * Neither the name of the |
17 | ; be used to endorse or promote products derived from this software without |
17 | ; be used to endorse or promote products derived from this software without |
18 | ; specific prior written permission. |
18 | ; specific prior written permission. |
19 | 19 | ||
20 | ; THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
20 | ; THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
21 | ; INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |
21 | ; INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |
22 | ; PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
22 | ; PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
23 | ; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
23 | ; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
24 | ; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
24 | ; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
25 | ; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
25 | ; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
26 | ; -------------------------------------------------------------------------------------- |
26 | ; -------------------------------------------------------------------------------------- |
27 | 27 | ||
28 | ;P.S. Êîäó òðåáóåòñÿ îïòèìèçàöèÿ è äîðàáîòêà (ñì. òåìó ôîðóìà) |
28 | ;P.S. Êîäó òðåáóåòñÿ îïòèìèçàöèÿ è äîðàáîòêà (ñì. òåìó ôîðóìà) |
29 | format binary as "" ; Binary file format without extension |
29 | format binary as "" ; Binary file format without extension |
30 | use32 ; Tell compiler to use 32 bit instructions |
30 | use32 ; Tell compiler to use 32 bit instructions |
31 | org 0 ; the base address of code, always 0x0 |
31 | org 0 ; the base address of code, always 0x0 |
32 | 32 | ||
33 | ; àãîëîâîê èñïîëíÿåìîãî ôàéëà Êîëèáðè ÎÑ |
33 | ; àãîëîâîê èñïîëíÿåìîãî ôàéëà Êîëèáðè ÎÑ |
34 | db 'MENUET01' |
34 | db 'MENUET01' |
35 | dd 1 |
35 | dd 1 |
36 | dd START |
36 | dd START |
37 | dd I_END |
37 | dd I_END |
38 | dd MEM |
38 | dd MEM |
39 | dd STACKTOP |
39 | dd STACKTOP |
40 | dd 0, 0 |
40 | dd 0, 0 |
41 | 41 | ||
42 | ; Íà÷àëî îáëàñòè êîäà |
42 | ; Íà÷àëî îáëàñòè êîäà |
43 | include 'lang.inc' ;ïîääåðæêà ÿçûêîâ ïðè êîìïèëÿöèè |
43 | include 'lang.inc' ;ïîääåðæêà ÿçûêîâ ïðè êîìïèëÿöèè |
44 | include '../../macros.inc' |
44 | include '../../macros.inc' |
45 | include '../../proc32.inc' |
45 | include '../../proc32.inc' |
46 | include '../../dll.inc' |
46 | include '../../dll.inc' |
47 | include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;êîìïîíåíòû checkBox è editBox |
47 | include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;êîìïîíåíòû checkBox è editBox |
48 | include '../../develop/libraries/box_lib/load_lib.mac' ;ìàêðîñ äëÿ çàãðóçêè áèáëèîòåê |
48 | include '../../develop/libraries/box_lib/load_lib.mac' ;ìàêðîñ äëÿ çàãðóçêè áèáëèîòåê |
49 | @use_library |
49 | @use_library |
50 | 50 | ||
51 | KMENUITEM_NORMAL equ 0 |
51 | KMENUITEM_NORMAL equ 0 |
52 | KMENUITEM_SUBMENU equ 1 |
52 | KMENUITEM_SUBMENU equ 1 |
53 | KMENUITEM_SEPARATOR equ 2 |
53 | KMENUITEM_SEPARATOR equ 2 |
54 | 54 | ||
55 | Otstup = 30 |
55 | Otstup = 30 |
56 | 56 | ||
57 | START: |
57 | START: |
58 | call copyKill ;ïðîñòåéøàß çàùèòà îò çàïóñêà âòîðîé êîïèè ïðèëîæåíèß |
58 | call copyKill ;ïðîñòåéøàß çàùèòà îò çàïóñêà âòîðîé êîïèè ïðèëîæåíèß |
59 | mcall 68, 11 ;èíèöèàëèçàöèß êó÷è |
59 | mcall 68, 11 ;èíèöèàëèçàöèß êó÷è |
60 | 60 | ||
61 | ;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà |
61 | ;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà |
62 | mov eax,48 ;ïîëó÷èòü ñèñòåìíûå öâåòà |
62 | mov eax,48 ;ïîëó÷èòü ñèñòåìíûå öâåòà |
63 | mov ebx,3 |
63 | mov ebx,3 |
64 | mov ecx, sc |
64 | mov ecx, sc |
65 | mov edx, sizeof.system_colors |
65 | mov edx, sizeof.system_colors |
66 | mcall |
66 | mcall |
67 | 67 | ||
68 | stdcall dll.Load, @IMPORT |
68 | stdcall dll.Load, @IMPORT |
69 | or eax, eax |
69 | or eax, eax |
70 | jnz exit |
70 | jnz exit |
71 | 71 | ||
72 | mov eax,40 ;óñòàíîâèòü ìàñêó äëß îæèäàåìûõ ñîáûòèé |
72 | mov eax,40 ;óñòàíîâèòü ìàñêó äëß îæèäàåìûõ ñîáûòèé |
73 | mov ebx,0x27 ;ñèñòåìà áóäåò ðåàãèðîâàòü òîëüêî íà ñîîáùåíèå î ïåðåðèñîâêå, íàæàòà êíîïêà, îïðåäåëÞííàß ðàíåå, ñîáûòèå îò ìûøè (÷òî-òî ñëó÷èëîñü - íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñß ïðè ïðî÷òåíèè) |
73 | mov ebx,0x27 ;ñèñòåìà áóäåò ðåàãèðîâàòü òîëüêî íà ñîîáùåíèå î ïåðåðèñîâêå, íàæàòà êíîïêà, îïðåäåëÞííàß ðàíåå, ñîáûòèå îò ìûøè (÷òî-òî ñëó÷èëîñü - íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñß ïðè ïðî÷òåíèè) |
74 | mcall |
74 | mcall |
75 | 75 | ||
76 | load_libraries l_libs_start,load_lib_end ;çàãðóçêà áèáëèîòåê(è) |
76 | load_libraries l_libs_start,load_lib_end ;çàãðóçêà áèáëèîòåê(è) |
77 | stdcall [OpenDialog_Init],OpenDialog_data ;ïîäãîòîâêà äèàëîãà |
77 | stdcall [OpenDialog_Init],OpenDialog_data ;ïîäãîòîâêà äèàëîãà |
78 | 78 | ||
79 | ;mode menu |
79 | ;mode menu |
80 | stdcall [kmenu_init], sc ;kmenu initialisation |
80 | stdcall [kmenu_init], sc ;kmenu initialisation |
81 | stdcall [ksubmenu_new] |
81 | stdcall [ksubmenu_new] |
82 | mov [modeMenu], eax |
82 | mov [modeMenu], eax |
83 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu0, 110 |
83 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu0, 110 |
84 | stdcall [ksubmenu_add], [modeMenu], eax |
84 | stdcall [ksubmenu_add], [modeMenu], eax |
85 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu1, 111 |
85 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu1, 111 |
86 | stdcall [ksubmenu_add], [modeMenu], eax |
86 | stdcall [ksubmenu_add], [modeMenu], eax |
87 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu2, 112 |
87 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu2, 112 |
88 | stdcall [ksubmenu_add], [modeMenu], eax |
88 | stdcall [ksubmenu_add], [modeMenu], eax |
89 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu3, 113 |
89 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu3, 113 |
90 | stdcall [ksubmenu_add], [modeMenu], eax |
90 | stdcall [ksubmenu_add], [modeMenu], eax |
91 | stdcall [kmenuitem_new], KMENUITEM_SUBMENU, valueModeMenu1, [modeMenu] |
91 | stdcall [kmenuitem_new], KMENUITEM_SUBMENU, valueModeMenu1, [modeMenu] |
92 | 92 | ||
93 | call loadConfig ;çàãðóæàåì êîíôèãóðàöèþ èç ôàéëà, åñëè íåò - òî âûñòàâëßåì ïàðàìåòðû ïî óìîë÷àíèþ |
93 | call loadConfig ;çàãðóæàåì êîíôèãóðàöèþ èç ôàéëà, åñëè íåò - òî âûñòàâëßåì ïàðàìåòðû ïî óìîë÷àíèþ |
94 | call draw_window ;îòðèñîâàòü îêíî ïðèëîæåíèß |
94 | call draw_window ;îòðèñîâàòü îêíî ïðèëîæåíèß |
95 | 95 | ||
96 | ; Îáðàáîòêà öèêëà ñîáûòèé |
96 | ; Îáðàáîòêà öèêëà ñîáûòèé |
97 | event_wait: |
97 | event_wait: |
98 | mov eax, 10 ; function 10 : wait until event |
98 | mov eax, 10 ; function 10 : wait until event |
99 | mcall ; event type is returned in eax |
99 | mcall ; event type is returned in eax |
100 | 100 | ||
101 | cmp eax, 1 ; Event redraw request ? |
101 | cmp eax, 1 ; Event redraw request ? |
102 | je red ; Expl.: there has been activity on screen and |
102 | je red ; Expl.: there has been activity on screen and |
103 | ; parts of the applications has to be redrawn. |
103 | ; parts of the applications has to be redrawn. |
104 | 104 | ||
105 | cmp eax, 2 ; Event key in buffer ? |
105 | cmp eax, 2 ; Event key in buffer ? |
106 | je key ; Expl.: User has pressed a key while the |
106 | je key ; Expl.: User has pressed a key while the |
107 | ; app is at the top of the window stack. |
107 | ; app is at the top of the window stack. |
108 | 108 | ||
109 | cmp eax, 3 ; Event button in buffer ? |
109 | cmp eax, 3 ; Event button in buffer ? |
110 | je button ; Expl.: User has pressed one of the |
110 | je button ; Expl.: User has pressed one of the |
111 | ; applications buttons. |
111 | ; applications buttons. |
112 | 112 | ||
113 | invoke edit_box_mouse, editLU ;ïðîâåðêà ñîáûòèé ìûøè äëß editBox'îâ |
113 | invoke edit_box_mouse, editLU ;ïðîâåðêà ñîáûòèé ìûøè äëß editBox'îâ |
114 | invoke edit_box_mouse, editLD |
114 | invoke edit_box_mouse, editLD |
115 | invoke edit_box_mouse, editRU |
115 | invoke edit_box_mouse, editRU |
116 | invoke edit_box_mouse, editRD |
116 | invoke edit_box_mouse, editRD |
117 | ;stdcall [kmainmenu_dispatch_cursorevent], [modeMenu] ;ïðîâåðêà ìûøè äëß êîìáîáîêñà |
117 | ;stdcall [kmainmenu_dispatch_cursorevent], [modeMenu] ;ïðîâåðêà ìûøè äëß êîìáîáîêñà |
118 | invoke edit_box_mouse, editRadius |
118 | invoke edit_box_mouse, editRadius |
119 | 119 | ||
120 | jmp event_wait |
120 | jmp event_wait |
121 | 121 | ||
122 | 122 | ||
123 | red: ;îáðàáîòêà ñîáûòèß ïåðåðèñîâêè îêíà |
123 | red: ;îáðàáîòêà ñîáûòèß ïåðåðèñîâêè îêíà |
124 | call draw_window |
124 | call draw_window |
125 | jmp event_wait |
125 | jmp event_wait |
126 | 126 | ||
127 | key: ; Keypress event handler |
127 | key: ; Keypress event handler |
128 | mov eax, 2 ; The key is returned in ah. The key must be |
128 | mov eax, 2 ; The key is returned in ah. The key must be |
129 | mcall ; read and cleared from the system queue. |
129 | mcall ; read and cleared from the system queue. |
130 | 130 | ||
131 | invoke edit_box_key, editLU |
131 | invoke edit_box_key, editLU |
132 | invoke edit_box_key, editLD |
132 | invoke edit_box_key, editLD |
133 | invoke edit_box_key, editRU |
133 | invoke edit_box_key, editRU |
134 | invoke edit_box_key, editRD |
134 | invoke edit_box_key, editRD |
135 | invoke edit_box_key, editRadius |
135 | invoke edit_box_key, editRadius |
136 | 136 | ||
137 | cmp eax, 1 |
137 | cmp eax, 1 |
138 | je event_wait |
138 | je event_wait |
139 | cmp word[hkSymbol], 0 |
139 | cmp word[hkSymbol], 0 |
140 | jne event_wait |
140 | jne event_wait |
141 | cmp al, 0 |
141 | cmp al, 0 |
142 | jne .next |
142 | jne .next |
143 | mov byte[hkSymbol], ah |
143 | mov byte[hkSymbol], ah |
144 | 144 | ||
145 | push eax ecx esi ;ñîõðàíßåì ñêàíêîä êëàâèøè |
145 | push eax ecx esi ;ñîõðàíßåì ñêàíêîä êëàâèøè |
146 | shr eax, 16 |
146 | shr eax, 16 |
147 | mov byte[keyscan], al |
147 | mov byte[keyscan], al |
148 | mov ecx, 0 |
148 | mov ecx, 0 |
149 | mov cl, al ;byte[keyscan] |
149 | mov cl, al ;byte[keyscan] |
150 | mov esi, keystr.data |
150 | mov esi, keystr.data |
151 | call IntToStr |
151 | call IntToStr |
152 | 152 | ||
153 | ;ñ÷èòàåì ïîëó÷åííûé ðàçìåð ñòðîêè |
153 | ;ñ÷èòàåì ïîëó÷åííûé ðàçìåð ñòðîêè |
154 | xor ecx, ecx |
154 | xor ecx, ecx |
155 | mov esi, keystr.data |
155 | mov esi, keystr.data |
156 | @@: |
156 | @@: |
157 | cmp byte[esi], 0 |
157 | cmp byte[esi], 0 |
158 | je @f |
158 | je @f |
159 | inc esi |
159 | inc esi |
160 | inc ecx |
160 | inc ecx |
161 | ;cmp ecx, 4 |
161 | ;cmp ecx, 4 |
162 | ;je @f |
162 | ;je @f |
163 | jmp @b |
163 | jmp @b |
164 | @@: |
164 | @@: |
165 | ;è ñîõðàíßåì åãî |
165 | ;è ñîõðàíßåì åãî |
166 | mov dword[keystr.size], ecx |
166 | mov dword[keystr.size], ecx |
167 | 167 | ||
168 | pop esi ecx eax |
168 | pop esi ecx eax |
169 | jmp red |
169 | jmp red |
170 | .next: |
170 | .next: |
171 | ;cmp al, 2 |
171 | ;cmp al, 2 |
172 | ;jne @f |
172 | ;jne @f |
173 | ;cmp ah, 0 |
173 | ;cmp ah, 0 |
174 | ;jne @f |
174 | ;jne @f |
175 | ;ñ÷èòûâàåì óïðàâëßþùèå êëàâèøè |
175 | ;ñ÷èòûâàåì óïðàâëßþùèå êëàâèøè |
176 | ;shr eax, 16 |
176 | ;shr eax, 16 |
177 | ;bt eax, 0 ;left shift |
177 | ;bt eax, 0 ;left shift |
178 | ;jne @f |
178 | ;jne @f |
179 | ;mov byte[hkSymbol], 2 |
179 | ;mov byte[hkSymbol], 2 |
180 | ;jmp red |
180 | ;jmp red |
181 | @@: |
181 | @@: |
182 | jmp event_wait ; Just read the key, ignore it and jump to event_wait. |
182 | jmp event_wait ; Just read the key, ignore it and jump to event_wait. |
183 | 183 | ||
184 | button: ; Buttonpress event handler |
184 | button: ; Buttonpress event handler |
185 | mov eax,17 ; The button number defined in window_draw |
185 | mov eax,17 ; The button number defined in window_draw |
186 | mcall ; is returned to ah. |
186 | mcall ; is returned to ah. |
187 | 187 | ||
188 | cmp ah,1 ; button id=1 ? |
188 | cmp ah,1 ; button id=1 ? |
189 | jne noclose |
189 | jne noclose |
190 | exit: |
190 | exit: |
191 | mov eax,-1 ; Function -1 : close this program |
191 | mov eax,-1 ; Function -1 : close this program |
192 | mcall |
192 | mcall |
193 | noclose: |
193 | noclose: |
194 | cmp ah, 2 ;êíîïêà "Ïðèìåíèòü" |
194 | cmp ah, 2 ;êíîïêà "Ïðèìåíèòü" |
195 | jne @f ;butend |
195 | jne @f ;butend |
196 | call applyButton ;âûçîâ íàøåãî îáðàáîò÷èêà íàæàòèß êíîïêè |
196 | call applyButton ;âûçîâ íàøåãî îáðàáîò÷èêà íàæàòèß êíîïêè |
197 | jmp event_wait |
197 | jmp event_wait |
198 | @@: |
198 | @@: |
199 | cmp ah, 4 |
199 | cmp ah, 4 |
200 | jne @f |
200 | jne @f |
201 | mov byte[editID], 4 |
201 | mov byte[editID], 4 |
202 | call but_open_dlg |
202 | call but_open_dlg |
203 | jmp event_wait |
203 | jmp event_wait |
204 | @@: |
204 | @@: |
205 | cmp ah, 5 |
205 | cmp ah, 5 |
206 | jne @f |
206 | jne @f |
207 | mov byte[editID], 5 |
207 | mov byte[editID], 5 |
208 | call but_open_dlg |
208 | call but_open_dlg |
209 | jmp event_wait |
209 | jmp event_wait |
210 | @@: |
210 | @@: |
211 | cmp ah, 6 |
211 | cmp ah, 6 |
212 | jne @f |
212 | jne @f |
213 | mov byte[editID], 6 |
213 | mov byte[editID], 6 |
214 | call but_open_dlg |
214 | call but_open_dlg |
215 | jmp event_wait |
215 | jmp event_wait |
216 | @@: |
216 | @@: |
217 | cmp ah, 7 |
217 | cmp ah, 7 |
218 | jne @f |
218 | jne @f |
219 | mov byte[editID], 7 |
219 | mov byte[editID], 7 |
220 | call but_open_dlg |
220 | call but_open_dlg |
221 | jmp event_wait |
221 | jmp event_wait |
222 | @@: |
222 | @@: |
223 | cmp ah, 8 |
223 | cmp ah, 8 |
224 | jne @f |
224 | jne @f |
225 | push eax ebx ecx |
225 | push eax ebx ecx |
226 | mcall 9, pi, -1 ;get window coord |
226 | mcall 9, pi, -1 ;get window coord |
227 | 227 | ||
228 | mov eax, dword[pi+34] |
228 | mov eax, dword[pi+34] |
229 | add eax, buttonModeX ;+ 5 |
229 | add eax, buttonModeX ;+ 5 |
230 | mov word[coordModeMenu.x], ax |
230 | mov word[coordModeMenu.x], ax |
231 | 231 | ||
232 | mov eax, dword[pi+38] |
232 | mov eax, dword[pi+38] |
233 | add eax, buttonModeY + 13 ;17 |
233 | add eax, buttonModeY + 20 ;20 - ýòî ñìåùåíèå âñïëûâàþùåãî ìåíþ |
234 | mov word[coordModeMenu.y], ax |
234 | mov word[coordModeMenu.y], ax |
235 | 235 | ||
236 | stdcall [ksubmenu_draw], [modeMenu], coordModeMenu |
236 | stdcall [ksubmenu_draw], [modeMenu], coordModeMenu |
237 | pop ecx ebx eax |
237 | pop ecx ebx eax |
238 | jmp event_wait |
238 | jmp event_wait |
239 | @@: |
239 | @@: |
240 | cmp ah, 9 |
240 | cmp ah, 9 |
241 | jne @f |
241 | jne @f |
242 | mov word[hkSymbol], 0 |
242 | mov word[hkSymbol], 0 |
243 | jmp red ;event_wait |
243 | jmp red ;event_wait |
244 | @@: |
244 | @@: |
245 | cmp ah, 110 |
245 | cmp ah, 110 |
246 | jne @f |
246 | jne @f |
247 | mov byte[mode], 48 ;'0' |
247 | mov byte[mode], 48 ;'0' |
248 | jmp event_wait |
248 | jmp event_wait |
249 | @@: |
249 | @@: |
250 | cmp ah, 111 |
250 | cmp ah, 111 |
251 | jne @f |
251 | jne @f |
252 | mov byte[mode], 49 ;'1' |
252 | mov byte[mode], 49 ;'1' |
253 | jmp event_wait |
253 | jmp event_wait |
254 | @@: |
254 | @@: |
255 | cmp ah, 112 |
255 | cmp ah, 112 |
256 | jne @f |
256 | jne @f |
257 | mov byte[mode], 50 ;'2' |
257 | mov byte[mode], 50 ;'2' |
258 | jmp event_wait |
258 | jmp event_wait |
259 | @@: |
259 | @@: |
260 | cmp ah, 113 |
260 | cmp ah, 113 |
261 | jne @f |
261 | jne @f |
262 | mov byte[mode], 51 ;'3' |
262 | mov byte[mode], 51 ;'3' |
263 | jmp event_wait |
263 | jmp event_wait |
264 | @@: |
264 | @@: |
265 | butend: |
265 | butend: |
266 | jmp event_wait ;this is for ignored events, useful at development |
266 | jmp event_wait ;this is for ignored events, useful at development |
267 | 267 | ||
268 | 268 | ||
269 | 269 | ||
270 | ;èìß êîíôèãóðàöèîííîãî ôàéëà |
270 | ;èìß êîíôèãóðàöèîííîãî ôàéëà |
271 | fileName: db 'SETTINGS/HOTANGLES.CFG', 0 |
271 | fileName: db 'SETTINGS/HOTANGLES.CFG', 0 |
272 | 272 | ||
273 | ;ñòðóêòóðà äëß ñîçäàíèß/ïåðåçàïèñè ôàéëà |
273 | ;ñòðóêòóðà äëß ñîçäàíèß/ïåðåçàïèñè ôàéëà |
274 | createFile: |
274 | createFile: |
275 | .func dd 2 ;íîìåð ïîäôóíêöèè |
275 | .func dd 2 ;íîìåð ïîäôóíêöèè |
276 | .re dd 0, 0 ;çàðåçåðâèðîâàíî |
276 | .re dd 0, 0 ;çàðåçåðâèðîâàíî |
277 | .size dd 0 ;ñêîëüêî áàéò ïèñàòü |
277 | .size dd 0 ;ñêîëüêî áàéò ïèñàòü |
278 | .data_adr dd 0 ;óêàçàòåëü íà äàííûå |
278 | .data_adr dd 0 ;óêàçàòåëü íà äàííûå |
279 | .path db 0 |
279 | .path db 0 |
280 | .path_adr dd fileName ;ïóòü |
280 | .path_adr dd fileName ;ïóòü |
281 | 281 | ||
282 | ;ñòðîêà ïàðàìåòðîâ ïî óìîë÷àíèþ è åÞ ðàçìåð |
282 | ;ñòðîêà ïàðàìåòðîâ ïî óìîë÷àíèþ è åÞ ðàçìåð |
283 | defaultDataForConfig db 121,13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'Space',13,10,'57',13,10,'10',13,10,'s',13,10 |
283 | defaultDataForConfig db 121,13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'Space',13,10,'57',13,10,'10',13,10,'s',13,10 |
284 | defaultDataSize = 85 ;48+19+4 |
284 | defaultDataSize = 85 ;48+19+4 |
285 | 285 | ||
286 | 286 | ||
287 | copyParam: ;êîïèðóåò ïàðàìåòð(êîìàíäó çàïóñêà) â áóôåð (ñì. äàëüøå) |
287 | copyParam: ;êîïèðóåò ïàðàìåòð(êîìàíäó çàïóñêà) â áóôåð (ñì. äàëüøå) |
288 | push esi ebx ecx |
288 | push esi ebx ecx |
289 | mov ecx, dword[ebx] ;÷èòàåì ðàçìåð ñòðîêè |
289 | mov ecx, dword[ebx] ;÷èòàåì ðàçìåð ñòðîêè |
290 | 290 | ||
291 | cmp ecx, 0 ;ïóñòà ëè ñòðîêà? |
291 | cmp ecx, 0 ;ïóñòà ëè ñòðîêà? |
292 | jne copyParam.copy ;åñëè íåò, òî ïåðåõîäèì ê êîïèðîâàíèþ ñîäåðæèìîãî ñòðîêè (ê öèêëó) |
292 | jne copyParam.copy ;åñëè íåò, òî ïåðåõîäèì ê êîïèðîâàíèþ ñîäåðæèìîãî ñòðîêè (ê öèêëó) |
293 | 293 | ||
294 | mov byte[eax], '-' ;åñëè æå ïóñòî, òî çàìåíßåì ñèìâîëîì ìèíóñ '-' |
294 | mov byte[eax], '-' ;åñëè æå ïóñòî, òî çàìåíßåì ñèìâîëîì ìèíóñ '-' |
295 | inc eax |
295 | inc eax |
296 | ;jmp copyParam.copyEnd ;è âûõîäèì |
296 | ;jmp copyParam.copyEnd ;è âûõîäèì |
297 | ;äàëåå â íà÷àëå öèêëà ïðîèçîéäÞò ñðàâíåíèå è âûõîä |
297 | ;äàëåå â íà÷àëå öèêëà ïðîèçîéäÞò ñðàâíåíèå è âûõîä |
298 | 298 | ||
299 | .copy: ;êîïèðóåì ñèìâîëû |
299 | .copy: ;êîïèðóåì ñèìâîëû |
300 | cmp ecx, 0 |
300 | cmp ecx, 0 |
301 | je copyParam.copyEnd |
301 | je copyParam.copyEnd |
302 | mov bl, byte[esi] |
302 | mov bl, byte[esi] |
303 | mov byte[eax], bl |
303 | mov byte[eax], bl |
304 | dec ecx |
304 | dec ecx |
305 | inc eax |
305 | inc eax |
306 | inc esi |
306 | inc esi |
307 | jmp copyParam.copy |
307 | jmp copyParam.copy |
308 | .copyEnd: |
308 | .copyEnd: |
309 | pop ecx ebx esi |
309 | pop ecx ebx esi |
310 | ret |
310 | ret |
311 | 311 | ||
312 | 312 | ||
313 | addPerenos: ;äîáàâëßåò ïåðåíîñ ñòðîêè â áóôåð |
313 | addPerenos: ;äîáàâëßåò ïåðåíîñ ñòðîêè â áóôåð |
314 | mov byte[eax], 13 |
314 | mov byte[eax], 13 |
315 | inc eax |
315 | inc eax |
316 | mov byte[eax], 10 |
316 | mov byte[eax], 10 |
317 | inc eax |
317 | inc eax |
318 | ret |
318 | ret |
319 | 319 | ||
320 | ;îáðàáîò÷èê êíîïêè "Ïðèìåíèòü" |
320 | ;îáðàáîò÷èê êíîïêè "Ïðèìåíèòü" |
321 | applyButton: |
321 | applyButton: |
322 | push eax ebx ecx |
322 | push eax ebx ecx |
323 | ;mov dword[createFile.data_adr], defaultDataForConfig |
323 | ;mov dword[createFile.data_adr], defaultDataForConfig |
324 | ;mov dword[createFile.size], defaultDataSize |
324 | ;mov dword[createFile.size], defaultDataSize |
325 | 325 | ||
326 | ;âû÷èñëèì ðàçìåð ôàéëà êîíôèãóðàöèè â áàéòàõ |
326 | ;âû÷èñëèì ðàçìåð ôàéëà êîíôèãóðàöèè â áàéòàõ |
327 | mov ecx, 9*2+1 ;1 áàéò íà ñîñòîßíèå àêòèâíîñòè è 9 ïàð ïåðåíîñîâ ñòðîê (ñèìâîëû 13, 10) |
327 | mov ecx, 9*2+1 ;1 áàéò íà ñîñòîßíèå àêòèâíîñòè è 9 ïàð ïåðåíîñîâ ñòðîê (ñèìâîëû 13, 10) |
328 | add ecx, dword[editLU.size] ;ïëþñ ðàçìåð êàæäîé ñòðîêè â áàéòàõ |
328 | add ecx, dword[editLU.size] ;ïëþñ ðàçìåð êàæäîé ñòðîêè â áàéòàõ |
329 | add ecx, dword[editLD.size] |
329 | add ecx, dword[editLD.size] |
330 | add ecx, dword[editRU.size] |
330 | add ecx, dword[editRU.size] |
331 | add ecx, dword[editRD.size] ;dataBuffer.size4] |
331 | add ecx, dword[editRD.size] ;dataBuffer.size4] |
332 | add ecx, dword[editRadius.size] |
332 | add ecx, dword[editRadius.size] |
333 | add ecx, dword[hkSize] ;ðàçìåð èìåíè àêòèâàöèîííîé êíîïêè |
333 | add ecx, dword[hkSize] ;ðàçìåð èìåíè àêòèâàöèîííîé êíîïêè |
334 | add ecx, dword[keystr.size] ;ðàçìåð ñêàíêîäà àêòèâàöèîííîé êíîïêè |
334 | add ecx, dword[keystr.size] ;ðàçìåð ñêàíêîäà àêòèâàöèîííîé êíîïêè |
335 | inc ecx ; åùÞ 1 áàéò äëß õðàíåíèß ðàçìåðà ýëåìåíòîâ |
335 | inc ecx ; åùÞ 1 áàéò äëß õðàíåíèß ðàçìåðà ýëåìåíòîâ |
336 | 336 | ||
337 | ;cmp dword[keystr.size], 3 |
337 | ;cmp dword[keystr.size], 3 |
338 | ;jbe @f |
338 | ;jbe @f |
339 | ;mcall -1 |
339 | ;mcall -1 |
340 | ;@@: |
340 | ;@@: |
341 | 341 | ||
342 | ;åñëè çàäàíû ïóñòûå ñòðîêè, òî ìû àâòîìàòè÷åñêè äîáàâëßåì çíàê ìèíóñ, çíà÷èò ðàçìåð +1 áàéò |
342 | ;åñëè çàäàíû ïóñòûå ñòðîêè, òî ìû àâòîìàòè÷åñêè äîáàâëßåì çíàê ìèíóñ, çíà÷èò ðàçìåð +1 áàéò |
343 | cmp dword[editLU.size], 0 |
343 | cmp dword[editLU.size], 0 |
344 | jne @f |
344 | jne @f |
345 | inc ecx |
345 | inc ecx |
346 | @@: |
346 | @@: |
347 | cmp dword[editLD.size], 0 |
347 | cmp dword[editLD.size], 0 |
348 | jne @f |
348 | jne @f |
349 | inc ecx |
349 | inc ecx |
350 | @@: |
350 | @@: |
351 | cmp dword[editRU.size], 0 |
351 | cmp dword[editRU.size], 0 |
352 | jne @f |
352 | jne @f |
353 | inc ecx |
353 | inc ecx |
354 | @@: |
354 | @@: |
355 | cmp dword[editRD.size], 0 |
355 | cmp dword[editRD.size], 0 |
356 | jne @f |
356 | jne @f |
357 | inc ecx |
357 | inc ecx |
358 | @@: |
358 | @@: |
359 | 359 | ||
360 | ;òåïåðü ðàçìåð ôàéëà êîíôèãóðàöèè â ecx |
360 | ;òåïåðü ðàçìåð ôàéëà êîíôèãóðàöèè â ecx |
361 | mov dword[createFile.size], ecx ;ïîëîæèì ðàçìåð áàéò â ñòðóêòóðó ñîçäàíèß/ïåðåçàïèñè ôàéëà |
361 | mov dword[createFile.size], ecx ;ïîëîæèì ðàçìåð áàéò â ñòðóêòóðó ñîçäàíèß/ïåðåçàïèñè ôàéëà |
362 | mcall 68, 12, ecx ;âûäåëßåì áëîê ïàìßòè ïîä áóôåð ñîäåðæèìîãî |
362 | mcall 68, 12, ecx ;âûäåëßåì áëîê ïàìßòè ïîä áóôåð ñîäåðæèìîãî |
363 | mov dword[createFile.data_adr], eax ;ñîõðàíßåì àäðåñ áóôåðà â ñòðóêòóðó |
363 | mov dword[createFile.data_adr], eax ;ñîõðàíßåì àäðåñ áóôåðà â ñòðóêòóðó |
364 | 364 | ||
365 | ;çàïîëíèì áóôåð ñîäåðæèìîãî: |
365 | ;çàïîëíèì áóôåð ñîäåðæèìîãî: |
366 | push ebx ;ñîõðàíßåì âûáðàííûé ðåæèì |
366 | push ebx ;ñîõðàíßåì âûáðàííûé ðåæèì |
367 | mov bl, byte[mode] |
367 | mov bl, byte[mode] |
368 | mov byte[eax], bl |
368 | mov byte[eax], bl |
369 | pop ebx |
369 | pop ebx |
370 | 370 | ||
371 | inc eax |
371 | inc eax |
372 | call addPerenos |
372 | call addPerenos |
373 | 373 | ||
374 | push esi ebx |
374 | push esi ebx |
375 | call UpdateEditsSizes ;îáíîâèòü ðàçìåðû òåêñòà â edit'àõ |
375 | call UpdateEditsSizes ;îáíîâèòü ðàçìåðû òåêñòà â edit'àõ |
376 | 376 | ||
377 | mov esi, dataBuffer.1 ;editLU.text |
377 | mov esi, dataBuffer.1 ;editLU.text |
378 | mov ebx, dataBuffer.size1 ;editLU.size |
378 | mov ebx, dataBuffer.size1 ;editLU.size |
379 | call copyParam |
379 | call copyParam |
380 | call addPerenos ;äîáàâëßåì ïåðåíîñ ñòðîêè |
380 | call addPerenos ;äîáàâëßåì ïåðåíîñ ñòðîêè |
381 | 381 | ||
382 | mov esi, dataBuffer.2 |
382 | mov esi, dataBuffer.2 |
383 | mov ebx, dataBuffer.size2 |
383 | mov ebx, dataBuffer.size2 |
384 | call copyParam |
384 | call copyParam |
385 | call addPerenos ;äîáàâëßåì ïåðåíîñ ñòðîêè |
385 | call addPerenos ;äîáàâëßåì ïåðåíîñ ñòðîêè |
386 | 386 | ||
387 | mov esi, dataBuffer.3 |
387 | mov esi, dataBuffer.3 |
388 | mov ebx, dataBuffer.size3 |
388 | mov ebx, dataBuffer.size3 |
389 | call copyParam |
389 | call copyParam |
390 | call addPerenos ;äîáàâëßåì ïåðåíîñ ñòðîêè |
390 | call addPerenos ;äîáàâëßåì ïåðåíîñ ñòðîêè |
391 | 391 | ||
392 | mov esi, dataBuffer.4 |
392 | mov esi, dataBuffer.4 |
393 | mov ebx, dataBuffer.size4 |
393 | mov ebx, dataBuffer.size4 |
394 | call copyParam |
394 | call copyParam |
395 | call addPerenos ;äîáàâëßåì ïåðåíîñ ñòðîêè |
395 | call addPerenos ;äîáàâëßåì ïåðåíîñ ñòðîêè |
396 | 396 | ||
397 | ;ñîõðàíßåì êíîïêó àêòèâàöèè |
397 | ;ñîõðàíßåì êíîïêó àêòèâàöèè |
398 | call saveKey |
398 | call saveKey |
399 | call addPerenos |
399 | call addPerenos |
400 | 400 | ||
401 | ;ñîõðàíßåì ñêàíêîä êíîïêè |
401 | ;ñîõðàíßåì ñêàíêîä êíîïêè |
402 | mov esi, keystr.data ;çàïèñûâàåì ñòðîêó keystr â ôàéë |
402 | mov esi, keystr.data ;çàïèñûâàåì ñòðîêó keystr â ôàéë |
403 | xor ebx, ebx |
403 | xor ebx, ebx |
404 | @@: |
404 | @@: |
405 | cmp byte[esi], 0 |
405 | cmp byte[esi], 0 |
406 | je @f |
406 | je @f |
407 | mov bl, byte[esi] |
407 | mov bl, byte[esi] |
408 | mov byte[eax], bl |
408 | mov byte[eax], bl |
409 | inc eax |
409 | inc eax |
410 | inc esi |
410 | inc esi |
411 | cmp esi, keystr.size-1 |
411 | cmp esi, keystr.size-1 |
412 | jae @f |
412 | jae @f |
413 | jmp @b |
413 | jmp @b |
414 | @@: |
414 | @@: |
415 | call addPerenos |
415 | call addPerenos |
416 | 416 | ||
417 | ;ñîõðàíßåì ðàäèóñ |
417 | ;ñîõðàíßåì ðàäèóñ |
418 | ;!!! åñëè ðàäèóñ îñòàâëåí ïóñòûì, òî íóæíî ñîõðàíßòü çíà÷åíèå ïî óìîë÷àíèþ (ñåé÷àñ ïèøåòñß '-') |
418 | ;!!! åñëè ðàäèóñ îñòàâëåí ïóñòûì, òî íóæíî ñîõðàíßòü çíà÷åíèå ïî óìîë÷àíèþ (ñåé÷àñ ïèøåòñß '-') |
419 | mov esi, radiusBuffer.data |
419 | mov esi, radiusBuffer.data |
420 | mov ebx, editRadius.size ;radiusBuffer.size |
420 | mov ebx, editRadius.size ;radiusBuffer.size |
421 | call copyParam |
421 | call copyParam |
422 | call addPerenos |
422 | call addPerenos |
423 | 423 | ||
424 | ;äîáàâëßåì ðàçìåð ýëåìåíòîâ |
424 | ;äîáàâëßåì ðàçìåð ýëåìåíòîâ |
425 | push ebx ;ñîõðàíßåì âûáðàííûé ðåæèì |
425 | push ebx ;ñîõðàíßåì âûáðàííûé ðåæèì |
426 | mov bl, byte[sizeStyle] |
426 | mov bl, byte[sizeStyle] |
427 | mov byte[eax], bl |
427 | mov byte[eax], bl |
428 | pop ebx |
428 | pop ebx |
429 | inc eax |
429 | inc eax |
430 | call addPerenos |
430 | call addPerenos |
431 | 431 | ||
432 | pop ebx esi |
432 | pop ebx esi |
433 | 433 | ||
434 | 434 | ||
435 | mov ebx, createFile |
435 | mov ebx, createFile |
436 | mcall 70 |
436 | mcall 70 |
437 | cmp eax, 0 |
437 | cmp eax, 0 |
438 | je .end |
438 | je .end |
439 | ;èíà÷å çäåñü íóæíî âûâåñòè îêíî ñ îøèáêîé !!! |
439 | ;èíà÷å çäåñü íóæíî âûâåñòè îêíî ñ îøèáêîé !!! |
440 | .end: |
440 | .end: |
441 | mcall 68, 13, dword[createFile.data_adr] ;îñâîáîæäàåì ïàìßòü ïîä áóôåð |
441 | mcall 68, 13, dword[createFile.data_adr] ;îñâîáîæäàåì ïàìßòü ïîä áóôåð |
442 | call finishHotAnglesApp ;çàâåðøàåì ðàáîòó âñåõ êîïèé ñåðâèñà @HOTANGLES |
442 | call finishHotAnglesApp ;çàâåðøàåì ðàáîòó âñåõ êîïèé ñåðâèñà @HOTANGLES |
443 | call loadConfig ;ïåðåçàãðóæàåì ôàéë êîíôèãà |
443 | call loadConfig ;ïåðåçàãðóæàåì ôàéë êîíôèãà |
444 | call draw_window ;ïåðåðèñîâûâàåì îêíî |
444 | call draw_window ;ïåðåðèñîâûâàåì îêíî |
445 | call startHotAnglesApp ;ïåðåçàïóñêàåì @HOTANGLES |
445 | call startHotAnglesApp ;ïåðåçàïóñêàåì @HOTANGLES |
446 | pop ecx ebx eax |
446 | pop ecx ebx eax |
447 | ret |
447 | ret |
448 | 448 | ||
449 | 449 | ||
450 | 450 | ||
451 | 451 | ||
452 | 452 | ||
453 | 453 | ||
454 | compareBytes2: |
454 | compareBytes2: |
455 | push edi esi ecx ebx |
455 | push edi esi ecx ebx |
456 | xor eax, eax |
456 | xor eax, eax |
457 | mov ecx, 10 ;max ðàçìåð ñòðîê 11 |
457 | mov ecx, 10 ;max ðàçìåð ñòðîê 11 |
458 | @@: |
458 | @@: |
459 | mov bl, byte[edi] |
459 | mov bl, byte[edi] |
460 | cmp bl, byte[esi] |
460 | cmp bl, byte[esi] |
461 | jne compareBytes.no |
461 | jne compareBytes.no |
462 | inc edi |
462 | inc edi |
463 | inc esi |
463 | inc esi |
464 | cmp ecx, 0 |
464 | cmp ecx, 0 |
465 | je @f |
465 | je @f |
466 | dec ecx |
466 | dec ecx |
467 | jmp @b |
467 | jmp @b |
468 | .no: |
468 | .no: |
469 | mov eax, 1 |
469 | mov eax, 1 |
470 | @@: |
470 | @@: |
471 | pop ebx ecx esi edi |
471 | pop ebx ecx esi edi |
472 | ret |
472 | ret |
473 | 473 | ||
474 | 474 | ||
475 | finishHotAnglesApp: |
475 | finishHotAnglesApp: |
476 | ;íàõîäèì âñå êîïèè ïðèëîæåíèß ïî èìåíè è çàâåðøàåì èõ |
476 | ;íàõîäèì âñå êîïèè ïðèëîæåíèß ïî èìåíè è çàâåðøàåì èõ |
477 | push eax ebx ecx esi edi |
477 | push eax ebx ecx esi edi |
478 | ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíßþòñß: |
478 | ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíßþòñß: |
479 | mov esi, startAppData.file_name ;ïåðâàß ñòðîêà - èñêîìîå èìß ïðèëîæåíèß |
479 | mov esi, startAppData.file_name ;ïåðâàß ñòðîêà - èñêîìîå èìß ïðèëîæåíèß |
480 | mov edi, buf ;âòîðàß ñòðîêà - èìß òåêóùåãî ñëîòà |
480 | mov edi, buf ;âòîðàß ñòðîêà - èìß òåêóùåãî ñëîòà |
481 | add edi, 10 |
481 | add edi, 10 |
482 | 482 | ||
483 | mov ecx, 1 |
483 | mov ecx, 1 |
484 | @@: |
484 | @@: |
485 | mcall 9, buf, ecx ;ïîëó÷àåì äàííûå î÷åðåäíîãî ñëîòà |
485 | mcall 9, buf, ecx ;ïîëó÷àåì äàííûå î÷åðåäíîãî ñëîòà |
486 | mov dword[slotMax], eax |
486 | mov dword[slotMax], eax |
487 | 487 | ||
488 | call compareBytes2 ;ñðàâíèâàåì èìß |
488 | call compareBytes2 ;ñðàâíèâàåì èìß |
489 | cmp eax, 0 |
489 | cmp eax, 0 |
490 | jne finishHotAnglesApp.next ;åñëè íå ñîâïàëî, òî ïåðåõîäèì íà ñëåäóþùèé ñëîò |
490 | jne finishHotAnglesApp.next ;åñëè íå ñîâïàëî, òî ïåðåõîäèì íà ñëåäóþùèé ñëîò |
491 | 491 | ||
492 | mcall 18, 2, ecx ;èíà÷å çàâåðøàåì ñëîò |
492 | mcall 18, 2, ecx ;èíà÷å çàâåðøàåì ñëîò |
493 | .next: |
493 | .next: |
494 | inc ecx |
494 | inc ecx |
495 | cmp ecx, dword[slotMax] |
495 | cmp ecx, dword[slotMax] |
496 | ja @f |
496 | ja @f |
497 | jmp @b |
497 | jmp @b |
498 | @@: |
498 | @@: |
499 | pop edi esi ecx ebx eax |
499 | pop edi esi ecx ebx eax |
500 | ret |
500 | ret |
501 | 501 | ||
502 | startHotAnglesApp: |
502 | startHotAnglesApp: |
503 | ;çàïóñêàåì ïðèëîæåíèå çàíîâî |
503 | ;çàïóñêàåì ïðèëîæåíèå çàíîâî |
504 | push eax ebx |
504 | push eax ebx |
505 | mcall 70, startAppData |
505 | mcall 70, startAppData |
506 | cmp eax, 0 |
506 | cmp eax, 0 |
507 | ja @f ;åñëè eax>0, òî óñïåøíî çàïóùåíî |
507 | ja @f ;åñëè eax>0, òî óñïåøíî çàïóùåíî |
508 | ;!!! èíà÷å òóò ïå÷àòàåì îøèáêó |
508 | ;!!! èíà÷å òóò ïå÷àòàåì îøèáêó |
509 | @@: |
509 | @@: |
510 | pop ebx eax |
510 | pop ebx eax |
511 | ret |
511 | ret |
512 | 512 | ||
513 | startAppData: |
513 | startAppData: |
514 | .subfunction dd 7 |
514 | .subfunction dd 7 |
515 | .flags dd 0 |
515 | .flags dd 0 |
516 | .param dd 0 |
516 | .param dd 0 |
517 | .rezerv dd 0, 0 |
517 | .rezerv dd 0, 0 |
518 | .full_name db '/rd/1/' |
518 | .full_name db '/rd/1/' |
519 | .file_name db '@HOTANGLES', 0 |
519 | .file_name db '@HOTANGLES', 0 |
520 | 520 | ||
521 | UpdateEditsSizes: |
521 | UpdateEditsSizes: |
522 | push eax |
522 | push eax |
523 | mov eax, dword[editLU.size] |
523 | mov eax, dword[editLU.size] |
524 | mov dword[dataBuffer.size1], eax |
524 | mov dword[dataBuffer.size1], eax |
525 | 525 | ||
526 | mov eax, dword[editLD.size] |
526 | mov eax, dword[editLD.size] |
527 | mov dword[dataBuffer.size2], eax |
527 | mov dword[dataBuffer.size2], eax |
528 | 528 | ||
529 | mov eax, dword[editRU.size] |
529 | mov eax, dword[editRU.size] |
530 | mov dword[dataBuffer.size3], eax |
530 | mov dword[dataBuffer.size3], eax |
531 | 531 | ||
532 | mov eax, dword[editRD.size] |
532 | mov eax, dword[editRD.size] |
533 | mov dword[dataBuffer.size4], eax |
533 | mov dword[dataBuffer.size4], eax |
534 | 534 | ||
535 | mov eax, dword[editRadius.size] |
535 | mov eax, dword[editRadius.size] |
536 | mov dword[radiusBuffer.size], eax |
536 | mov dword[radiusBuffer.size], eax |
537 | 537 | ||
538 | pop eax |
538 | pop eax |
539 | ret |
539 | ret |
540 | 540 | ||
541 | fileAdr dd 0 |
541 | fileAdr dd 0 |
542 | 542 | ||
543 | loadConfig: |
543 | loadConfig: |
544 | push eax ebx ecx edx |
544 | push eax ebx ecx edx |
545 | mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ |
545 | mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ |
546 | mov dword[fileAdr], eax ;ñîõðàíßåì àäðåñ áëîêà ïàìßòè ôàéëà |
546 | mov dword[fileAdr], eax ;ñîõðàíßåì àäðåñ áëîêà ïàìßòè ôàéëà |
547 | cmp eax, 0 |
547 | cmp eax, 0 |
548 | je loadConfig.default ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ |
548 | je loadConfig.default ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ |
549 | ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx |
549 | ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx |
550 | cmp edx, 0 ;åñëè ôàéë ïóñò, â íÞì íåò äàííûõ, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ |
550 | cmp edx, 0 ;åñëè ôàéë ïóñò, â íÞì íåò äàííûõ, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ |
551 | je loadConfig.default |
551 | je loadConfig.default |
552 | .start: |
552 | .start: |
553 | add edx, eax ;êëàäÞì â edx - àäðåñ êîíöà êîíôèã.äàííûõ |
553 | add edx, eax ;êëàäÞì â edx - àäðåñ êîíöà êîíôèã.äàííûõ |
554 | 554 | ||
555 | .chStart: |
555 | .chStart: |
556 | 556 | ||
557 | push ebx |
557 | push ebx |
558 | mov bl, byte[eax] |
558 | mov bl, byte[eax] |
559 | cmp bl, 48 ; åñëè çíà÷åíèå âûõîäèò çà äîïóñòèìûå ïðåäåëû, òî ïðîâåðßåì íà 'n' (äëß ñîâìåñòèìîñòè) |
559 | cmp bl, 48 ; åñëè çíà÷åíèå âûõîäèò çà äîïóñòèìûå ïðåäåëû, òî ïðîâåðßåì íà 'n' (äëß ñîâìåñòèìîñòè) |
560 | jb loadConfig.checkN |
560 | jb loadConfig.checkN |
561 | cmp bl, 51 |
561 | cmp bl, 51 |
562 | ja loadConfig.checkN |
562 | ja loadConfig.checkN |
563 | 563 | ||
564 | mov byte[mode], bl ;èíà÷å óñòàíàâëèâàåì ýòîò ðåæèì êàê åñòü |
564 | mov byte[mode], bl ;èíà÷å óñòàíàâëèâàåì ýòîò ðåæèì êàê åñòü |
565 | jmp loadConfig.modeEnd ;è èäÞì äàëüøå |
565 | jmp loadConfig.modeEnd ;è èäÞì äàëüøå |
566 | .checkN: |
566 | .checkN: |
567 | cmp bl, 'n' ;åñëè n - òî ðåæèì "îòêëþ÷åíî" |
567 | cmp bl, 'n' ;åñëè n - òî ðåæèì "îòêëþ÷åíî" |
568 | jne @f |
568 | jne @f |
569 | mov byte[mode], 48 ;'0' |
569 | mov byte[mode], 48 ;'0' |
570 | jmp loadConfig.modeEnd |
570 | jmp loadConfig.modeEnd |
571 | @@: |
571 | @@: |
572 | cmp bl, 'y' ;åñëè y - òî êëàññè÷åñêèé ðåæèì |
572 | cmp bl, 'y' ;åñëè y - òî êëàññè÷åñêèé ðåæèì |
573 | jne @f |
573 | jne @f |
574 | mov byte[mode], 49 ;'1' |
574 | mov byte[mode], 49 ;'1' |
575 | jmp loadConfig.modeEnd |
575 | jmp loadConfig.modeEnd |
576 | @@: |
576 | @@: |
577 | mov byte[mode], 48 ;'0' èíà÷å ïî óìîë÷àíèþ îòêëþ÷åíî |
577 | mov byte[mode], 48 ;'0' èíà÷å ïî óìîë÷àíèþ îòêëþ÷åíî |
578 | ;mov byte[mode], 49 ;'1' èíà÷å ïî óìîë÷àíèþ âêëþ÷Þí êëàññè÷åñêèé ðåæèì ðàáîòû |
578 | ;mov byte[mode], 49 ;'1' èíà÷å ïî óìîë÷àíèþ âêëþ÷Þí êëàññè÷åñêèé ðåæèì ðàáîòû |
579 | .modeEnd: |
579 | .modeEnd: |
580 | pop ebx |
580 | pop ebx |
581 | ;jmp loadConfig.end ;êîìàíäà äëß óäîáñòâà îòëàäêè è ïîèñêà îøèáîê |
581 | ;jmp loadConfig.end ;êîìàíäà äëß óäîáñòâà îòëàäêè è ïîèñêà îøèáîê |
582 | 582 | ||
583 | ;êîïèðóåì ñîäåðæèìîå ñòðîê â áóôåð |
583 | ;êîïèðóåì ñîäåðæèìîå ñòðîê â áóôåð |
584 | push edi esi ecx ebx eax |
584 | push edi esi ecx ebx eax |
585 | ;èíèöèàëèçèðóåì óêàçàòåëè íà àäðåñà áóôåðà ñòðîêè è åÞ ðàçìåðà |
585 | ;èíèöèàëèçèðóåì óêàçàòåëè íà àäðåñà áóôåðà ñòðîêè è åÞ ðàçìåðà |
586 | mov edi, dataBuffer.1 |
586 | mov edi, dataBuffer.1 |
587 | mov esi, dataBuffer.size1 |
587 | mov esi, dataBuffer.size1 |
588 | ;ecx - ñ÷Þò÷èê áàéò â ñòðîêå |
588 | ;ecx - ñ÷Þò÷èê áàéò â ñòðîêå |
589 | .block: |
589 | .block: |
590 | xor ecx, ecx ;îáíóëßåì ñ÷Þò÷èê |
590 | xor ecx, ecx ;îáíóëßåì ñ÷Þò÷èê |
591 | inc eax |
591 | inc eax |
592 | cmp byte[eax], 10 ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû |
592 | cmp byte[eax], 10 ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû |
593 | je loadConfig.block ;äî ïåðâîãî îòëè÷íîãî îò íèõ |
593 | je loadConfig.block ;äî ïåðâîãî îòëè÷íîãî îò íèõ |
594 | cmp byte[eax], 13 |
594 | cmp byte[eax], 13 |
595 | je loadConfig.block |
595 | je loadConfig.block |
596 | 596 | ||
597 | ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - íà÷èíàåì êîïèðîâàòü îòñþäà â áóôåð |
597 | ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - íà÷èíàåì êîïèðîâàòü îòñþäà â áóôåð |
598 | mov bl, byte[eax] |
598 | mov bl, byte[eax] |
599 | mov byte[edi], bl |
599 | mov byte[edi], bl |
600 | inc edi |
600 | inc edi |
601 | inc eax |
601 | inc eax |
602 | inc ecx ;óâåëè÷èâàåì ñ÷Þò÷èê ñèìâîëîâ â ñòðîêå |
602 | inc ecx ;óâåëè÷èâàåì ñ÷Þò÷èê ñèìâîëîâ â ñòðîêå |
603 | 603 | ||
604 | ;èäÞì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end |
604 | ;èäÞì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end |
605 | .while: ;è êîïèðóåì âñÞ â áóôåð |
605 | .while: ;è êîïèðóåì âñÞ â áóôåð |
606 | cmp eax, edx ;ïðîâåðßåì çàêîí÷èëñß ëè ôàéë, à êîíöà ñòðîêè íå áûëî !!! |
606 | cmp eax, edx ;ïðîâåðßåì çàêîí÷èëñß ëè ôàéë, à êîíöà ñòðîêè íå áûëî !!! |
607 | ja loadConfig.ura |
607 | ja loadConfig.ura |
608 | cmp byte[eax], 10 |
608 | cmp byte[eax], 10 |
609 | je loadConfig.ura |
609 | je loadConfig.ura |
610 | cmp byte[eax], 0 |
610 | cmp byte[eax], 0 |
611 | je loadConfig.ura |
611 | je loadConfig.ura |
612 | cmp byte[eax], 13 |
612 | cmp byte[eax], 13 |
613 | je loadConfig.ura |
613 | je loadConfig.ura |
614 | 614 | ||
615 | mov bl, byte[eax] |
615 | mov bl, byte[eax] |
616 | mov byte[edi], bl |
616 | mov byte[edi], bl |
617 | inc edi |
617 | inc edi |
618 | inc eax |
618 | inc eax |
619 | inc ecx |
619 | inc ecx |
620 | cmp ecx, 511 |
620 | cmp ecx, 511 |
621 | jae loadConfig.ura |
621 | jae loadConfig.ura |
622 | jmp loadConfig.while |
622 | jmp loadConfig.while |
623 | .ura: |
623 | .ura: |
624 | mov byte[edi], 0 ;êëàäÞì çàâåðøàþùèé 0 â ñòðîêó |
624 | mov byte[edi], 0 ;êëàäÞì çàâåðøàþùèé 0 â ñòðîêó |
625 | mov dword[esi], ecx ;ñîõðàíßåì ðàçìåð ñòðîêè |
625 | mov dword[esi], ecx ;ñîõðàíßåì ðàçìåð ñòðîêè |
626 | add esi, 4 ;ïåðåõîäèì íà ðàçìåð ñëåäóþùåãî áóôåðà |
626 | add esi, 4 ;ïåðåõîäèì íà ðàçìåð ñëåäóþùåãî áóôåðà |
627 | sub edi, ecx ;ïåðåõîäèì íà ñëåäóþùèé áóôåð |
627 | sub edi, ecx ;ïåðåõîäèì íà ñëåäóþùèé áóôåð |
628 | add edi, 512 |
628 | add edi, 512 |
629 | ;xor ecx, ecx ;îáíóëßåì ðàçìåð ñòðîêè |
629 | ;xor ecx, ecx ;îáíóëßåì ðàçìåð ñòðîêè |
630 | 630 | ||
631 | cmp edi, dataBuffer.size1 ;åñëè ýòî áûë ïîñëåäíèé áóôåð (è ìû âûøëè çà àäðåñà ðàçìåðîâ áóôåðîâ), òî âûõîäèì |
631 | cmp edi, dataBuffer.size1 ;åñëè ýòî áûë ïîñëåäíèé áóôåð (è ìû âûøëè çà àäðåñà ðàçìåðîâ áóôåðîâ), òî âûõîäèì |
632 | jb loadConfig.block |
632 | jb loadConfig.block |
633 | 633 | ||
634 | call readOptKey ;ñ÷èòûâàåì êëàâèøó |
634 | call readOptKey ;ñ÷èòûâàåì êëàâèøó |
635 | call gotoEndString |
635 | call gotoEndString |
636 | 636 | ||
637 | ;ñ÷èòûâàåì ñêàíêîä êëàâèøè |
637 | ;ñ÷èòûâàåì ñêàíêîä êëàâèøè |
638 | call readScanKey |
638 | call readScanKey |
639 | call gotoEndString |
639 | call gotoEndString |
640 | 640 | ||
641 | call readOptRadius ;ñ÷èòûâàåì çíà÷åíèå ðàäèóñà äëß mode 3 |
641 | call readOptRadius ;ñ÷èòûâàåì çíà÷åíèå ðàäèóñà äëß mode 3 |
642 | call gotoEndString |
642 | call gotoEndString |
643 | call readOptSize ;ñ÷èòûâàåì ðàçìåð ýëåìåíòîâ |
643 | call readOptSize ;ñ÷èòûâàåì ðàçìåð ýëåìåíòîâ |
644 | call gotoEndString |
644 | call gotoEndString |
645 | 645 | ||
646 | pop eax ebx ecx esi edi |
646 | pop eax ebx ecx esi edi |
647 | 647 | ||
648 | jmp loadConfig.end |
648 | jmp loadConfig.end |
649 | .default: |
649 | .default: |
650 | mov eax, defaultDataForConfig |
650 | mov eax, defaultDataForConfig |
651 | mov edx, defaultDataSize |
651 | mov edx, defaultDataSize |
652 | jmp loadConfig.start |
652 | jmp loadConfig.start |
653 | .end: |
653 | .end: |
654 | mov ecx, dword[fileAdr] ;åñëè ôàéë áûë çàãðóæåí, òî |
654 | mov ecx, dword[fileAdr] ;åñëè ôàéë áûë çàãðóæåí, òî |
655 | cmp ecx, 0 |
655 | cmp ecx, 0 |
656 | je @f |
656 | je @f |
657 | mcall 68, 13, ecx ;âûãðóæàåì ôàéë èç ïàìßòè |
657 | mcall 68, 13, ecx ;âûãðóæàåì ôàéë èç ïàìßòè |
658 | @@: |
658 | @@: |
659 | call updateParams ;ïðèìåíßåì íàñòðîéêè êàæäîãî áóôåðà |
659 | call updateParams ;ïðèìåíßåì íàñòðîéêè êàæäîãî áóôåðà |
660 | call setMySize ;ïðèìåíßåì íàñòðîéêè ðàçìåðà ýëåìåíòîâ |
660 | call setMySize ;ïðèìåíßåì íàñòðîéêè ðàçìåðà ýëåìåíòîâ |
661 | pop edx ecx ebx eax |
661 | pop edx ecx ebx eax |
662 | ret |
662 | ret |
663 | 663 | ||
664 | 664 | ||
665 | setMySize: |
665 | setMySize: |
666 | push eax |
666 | push eax |
667 | ;âûñòàâëßåì mysize â çàâèñèìîñòè îò çíà÷åíèß sizeStyle |
667 | ;âûñòàâëßåì mysize â çàâèñèìîñòè îò çíà÷åíèß sizeStyle |
668 | cmp byte[sizeStyle], '0' |
668 | cmp byte[sizeStyle], '0' |
669 | jb @f |
669 | jb @f |
670 | cmp byte[sizeStyle], '7' |
670 | cmp byte[sizeStyle], '7' |
671 | ja @f |
671 | ja @f |
672 | mov eax, 0 ;åñëè çíà÷åíèå ðàçìåðà çàäàíî, òî åãî è âûñòàâëßåì |
672 | mov eax, 0 ;åñëè çíà÷åíèå ðàçìåðà çàäàíî, òî åãî è âûñòàâëßåì |
673 | mov al, byte[sizeStyle] |
673 | mov al, byte[sizeStyle] |
674 | sub al, '0' |
674 | sub al, '0' |
675 | jmp .end |
675 | jmp .end |
676 | @@: |
676 | @@: |
677 | cmp byte[sizeStyle], 'a' |
677 | cmp byte[sizeStyle], 'a' |
678 | je .auto |
678 | je .auto |
679 | ;cmp byte[sizeStyle], 's' |
679 | ;cmp byte[sizeStyle], 's' |
680 | ;je .system |
680 | ;je .system |
681 | .system: ;èíà÷å çíà÷åíèå ïî óìîë÷àíèþ: s - ñèñòåìíàß |
681 | .system: ;èíà÷å çíà÷åíèå ïî óìîë÷àíèþ: s - ñèñòåìíàß |
682 | ; push ebx ecx |
682 | ; push ebx ecx |
683 | ;!!! |
683 | ;!!! |
684 | ; mov eax, 9 |
684 | ; mov eax, 9 |
685 | ; mcall 48, 11 ;ïîëó÷àåì ñèñòåìíûé ðàçìåð øðèôòà |
685 | ; mcall 48, 11 ;ïîëó÷àåì ñèñòåìíûé ðàçìåð øðèôòà |
686 | ;eax - âûñîòà øðèôòà â ïèêñåëßõ |
686 | ;eax - âûñîòà øðèôòà â ïèêñåëßõ |
687 | ; mov ecx, eax |
687 | ; mov ecx, eax |
688 | ; push eax |
688 | ; push eax |
689 | ; mcall 48, 12, ecx ;ïðèìåíßåì ðàçìåð øðèôòà |
689 | ; mcall 48, 12, ecx ;ïðèìåíßåì ðàçìåð øðèôòà |
690 | ; pop eax |
690 | ; pop eax |
691 | ; pop ecx ebx |
691 | ; pop ecx ebx |
692 | ;temp fix - äåëèì íà òåêóùèé ðàçìåð øðèôòà and -1 |
692 | ;temp fix - äåëèì íà òåêóùèé ðàçìåð øðèôòà and -1 |
693 | ; push ebx edx |
693 | ; push ebx edx |
694 | ; mov ebx, 9 |
694 | ; mov ebx, 9 |
695 | ;div ebx |
695 | ;div ebx |
696 | ; pop edx ebx |
696 | ; pop edx ebx |
697 | ;cmp eax, 0 |
697 | ;cmp eax, 0 |
698 | ;je .end |
698 | ;je .end |
699 | ;dec eax |
699 | ;dec eax |
700 | mov eax, 0 ;xor eax, eax ;test temp |
700 | mov eax, 0 ;xor eax, eax ;test temp |
701 | jmp .end |
701 | jmp .end |
702 | .auto: ;a - âûñòàâëßåì â çàâèñèìîñòè îò ðàçðåøåíèß ýêðàíà |
702 | .auto: ;a - âûñòàâëßåì â çàâèñèìîñòè îò ðàçðåøåíèß ýêðàíà |
703 | ;!!! |
703 | ;!!! |
704 | mcall 14 |
704 | mcall 14 |
705 | push ebx |
705 | push ebx |
706 | xor ebx, ebx |
706 | xor ebx, ebx |
707 | mov bx, ax |
707 | mov bx, ax |
708 | shr eax, 16 |
708 | shr eax, 16 |
709 | cmp ax, bx ;ïîëó÷àåì áîëüøèé ðàçìåð ñòîðîíû |
709 | cmp ax, bx ;ïîëó÷àåì áîëüøèé ðàçìåð ñòîðîíû |
710 | jae .a |
710 | jae .a |
711 | mov ax, bx |
711 | mov ax, bx |
712 | .a: |
712 | .a: |
713 | pop ebx |
713 | pop ebx |
714 | cmp ax, 1919 ;ðàçìåðû ïîëó÷åííûå âûøå îò 0 è íà 1 ìåíüøå |
714 | cmp ax, 1919 ;ðàçìåðû ïîëó÷åííûå âûøå îò 0 è íà 1 ìåíüøå |
715 | jb .size0 |
715 | jb .size0 |
716 | cmp ax, 2047 |
716 | cmp ax, 2047 |
717 | jb .size1 |
717 | jb .size1 |
718 | cmp ax, 4095 |
718 | cmp ax, 4095 |
719 | jb .size2 |
719 | jb .size2 |
720 | cmp ax, 8191 |
720 | cmp ax, 8191 |
721 | jb .size3 |
721 | jb .size3 |
722 | 722 | ||
723 | jmp .size4 |
723 | jmp .size4 |
724 | 724 | ||
725 | .size0: |
725 | .size0: |
726 | mov eax, 0 |
726 | mov eax, 0 |
727 | jmp .end |
727 | jmp .end |
728 | .size1: |
728 | .size1: |
729 | mov eax, 1 |
729 | mov eax, 1 |
730 | jmp .end |
730 | jmp .end |
731 | .size2: |
731 | .size2: |
732 | mov eax, 2 |
732 | mov eax, 2 |
733 | jmp .end |
733 | jmp .end |
734 | .size3: |
734 | .size3: |
735 | mov eax, 3 |
735 | mov eax, 3 |
736 | jmp .end |
736 | jmp .end |
737 | .size4: |
737 | .size4: |
738 | mov eax, 4 |
738 | mov eax, 4 |
739 | jmp .end |
739 | jmp .end |
740 | .size5: |
740 | .size5: |
741 | mov eax, 5 |
741 | mov eax, 5 |
742 | jmp .end |
742 | jmp .end |
743 | .size6: |
743 | .size6: |
744 | mov eax, 6 |
744 | mov eax, 6 |
745 | jmp .end |
745 | jmp .end |
746 | .size7: |
746 | .size7: |
747 | mov eax, 7 |
747 | mov eax, 7 |
748 | jmp .end |
748 | jmp .end |
749 | 749 | ||
750 | ;.default: |
750 | ;.default: |
751 | ; mov eax, 1 |
751 | ; mov eax, 1 |
752 | .end: |
752 | .end: |
753 | mov byte[mysize], al ;mov dword[mysize], eax |
753 | mov byte[mysize], al ;mov dword[mysize], eax |
754 | pop eax |
754 | pop eax |
755 | ret |
755 | ret |
756 | 756 | ||
757 | 757 | ||
758 | readScanKey: |
758 | readScanKey: |
759 | ;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
759 | ;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
760 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
760 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
761 | ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
761 | ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
762 | cmp byte[eax], 10 |
762 | cmp byte[eax], 10 |
763 | je @f |
763 | je @f |
764 | cmp byte[eax], 0 |
764 | cmp byte[eax], 0 |
765 | je @f |
765 | je @f |
766 | cmp byte[eax], 13 |
766 | cmp byte[eax], 13 |
767 | je @f |
767 | je @f |
768 | 768 | ||
769 | push ecx ebx esi |
769 | push ecx ebx esi |
770 | mov ecx, 0 ;xor ecx, ecx |
770 | mov ecx, 0 ;xor ecx, ecx |
771 | mov esi, keystr.data |
771 | mov esi, keystr.data |
772 | .copy: |
772 | .copy: |
773 | mov bl, byte[eax] |
773 | mov bl, byte[eax] |
774 | cmp bl, 0 |
774 | cmp bl, 0 |
775 | je .copyEnd |
775 | je .copyEnd |
776 | cmp bl, 10 |
776 | cmp bl, 10 |
777 | je .copyEnd |
777 | je .copyEnd |
778 | cmp bl, 13 |
778 | cmp bl, 13 |
779 | je .copyEnd |
779 | je .copyEnd |
780 | cmp esi, keystr.size-1 |
780 | cmp esi, keystr.size-1 |
781 | jae .copyEnd |
781 | jae .copyEnd |
782 | mov byte[esi], bl |
782 | mov byte[esi], bl |
783 | inc esi |
783 | inc esi |
784 | inc eax |
784 | inc eax |
785 | inc ecx |
785 | inc ecx |
786 | jmp .copy |
786 | jmp .copy |
787 | .copyEnd: |
787 | .copyEnd: |
788 | mov byte[esi], 0 |
788 | mov byte[esi], 0 |
789 | mov dword[keystr.size], ecx |
789 | mov dword[keystr.size], ecx |
790 | pop esi ebx ecx |
790 | pop esi ebx ecx |
791 | 791 | ||
792 | jmp .end |
792 | jmp .end |
793 | @@: |
793 | @@: |
794 | inc eax |
794 | inc eax |
795 | jmp readScanKey |
795 | jmp readScanKey |
796 | .default: |
796 | .default: |
797 | mov byte[keyscan], 57 |
797 | mov byte[keyscan], 57 |
798 | mov word[keystr.data], '57' |
798 | mov word[keystr.data], '57' |
799 | mov byte[keystr.data+2], 0 |
799 | mov byte[keystr.data+2], 0 |
800 | mov dword[keystr.size], 2 |
800 | mov dword[keystr.size], 2 |
801 | .end: |
801 | .end: |
802 | ret |
802 | ret |
803 | 803 | ||
804 | readOptKey: ;1;3;4;5 - space or shift |
804 | readOptKey: ;1;3;4;5 - space or shift |
805 | ;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
805 | ;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
806 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
806 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
807 | ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
807 | ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
808 | cmp byte[eax], 10 |
808 | cmp byte[eax], 10 |
809 | je @f |
809 | je @f |
810 | cmp byte[eax], 0 |
810 | cmp byte[eax], 0 |
811 | je @f |
811 | je @f |
812 | cmp byte[eax], 13 |
812 | cmp byte[eax], 13 |
813 | je @f |
813 | je @f |
814 | ;èíà÷å ÷èòàåì êëàâèøó è âûõîäèì |
814 | ;èíà÷å ÷èòàåì êëàâèøó è âûõîäèì |
815 | cmp dword[eax], 'Ctrl' |
815 | cmp dword[eax], 'Ctrl' |
816 | jne .notCtrl |
816 | jne .notCtrl |
817 | mov byte[hkSymbol], 3 |
817 | mov byte[hkSymbol], 3 |
818 | mov dword[hkSize], 4 |
818 | mov dword[hkSize], 4 |
819 | jmp .end |
819 | jmp .end |
820 | .notCtrl: |
820 | .notCtrl: |
821 | cmp dword[eax], 'Shif' |
821 | cmp dword[eax], 'Shif' |
822 | jne .notShift |
822 | jne .notShift |
823 | mov byte[hkSymbol], 2 |
823 | mov byte[hkSymbol], 2 |
824 | mov dword[hkSize], 5 |
824 | mov dword[hkSize], 5 |
825 | jmp .end |
825 | jmp .end |
826 | .notShift: |
826 | .notShift: |
827 | cmp dword[eax], 'Spac' |
827 | cmp dword[eax], 'Spac' |
828 | jne .notSpace |
828 | jne .notSpace |
829 | mov byte[hkSymbol], 32 |
829 | mov byte[hkSymbol], 32 |
830 | mov dword[hkSize], 5 |
830 | mov dword[hkSize], 5 |
831 | jmp .end |
831 | jmp .end |
832 | .notSpace: |
832 | .notSpace: |
833 | cmp word[eax], 'Al' |
833 | cmp word[eax], 'Al' |
834 | jne .notAlt |
834 | jne .notAlt |
835 | mov byte[hkSymbol], 1 |
835 | mov byte[hkSymbol], 1 |
836 | mov dword[hkSize], 3 |
836 | mov dword[hkSize], 3 |
837 | jmp .end |
837 | jmp .end |
838 | .notAlt: |
838 | .notAlt: |
839 | ;óáåäèìñß, ÷òî òàì 1 ñèìâîë, à íå ñòðîêà |
839 | ;óáåäèìñß, ÷òî òàì 1 ñèìâîë, à íå ñòðîêà |
840 | cmp byte[eax+1], 10 |
840 | cmp byte[eax+1], 10 |
841 | je .oneSymb |
841 | je .oneSymb |
842 | cmp byte[eax+1], 0 |
842 | cmp byte[eax+1], 0 |
843 | je .oneSymb |
843 | je .oneSymb |
844 | cmp byte[eax+1], 13 |
844 | cmp byte[eax+1], 13 |
845 | je .oneSymb |
845 | je .oneSymb |
846 | jmp .default |
846 | jmp .default |
847 | .oneSymb: |
847 | .oneSymb: |
848 | ;ïðîâåðßåì, ÷òî ñèìâîë ðàçðåøÞííûé !!! |
848 | ;ïðîâåðßåì, ÷òî ñèìâîë ðàçðåøÞííûé !!! |
849 | 849 | ||
850 | ;äîáàâëßåì ñèìâîë êàê åñòü |
850 | ;äîáàâëßåì ñèìâîë êàê åñòü |
851 | push ebx |
851 | push ebx |
852 | ;xor ebx, ebx |
852 | ;xor ebx, ebx |
853 | mov bl, byte[eax] |
853 | mov bl, byte[eax] |
854 | mov byte[hkSymbol], bl |
854 | mov byte[hkSymbol], bl |
855 | mov dword[hkSize], 1 |
855 | mov dword[hkSize], 1 |
856 | pop ebx |
856 | pop ebx |
857 | 857 | ||
858 | jmp .end |
858 | jmp .end |
859 | @@: |
859 | @@: |
860 | inc eax |
860 | inc eax |
861 | jmp readOptKey |
861 | jmp readOptKey |
862 | 862 | ||
863 | .default: |
863 | .default: |
864 | mov byte[hkSymbol], 32 |
864 | mov byte[hkSymbol], 32 |
865 | mov dword[hkSize], 5 |
865 | mov dword[hkSize], 5 |
866 | .end: |
866 | .end: |
867 | mov byte[hkSymbol+1], 0 |
867 | mov byte[hkSymbol+1], 0 |
868 | ret |
868 | ret |
869 | 869 | ||
870 | ;ïðîõîäèì äî êîíöà òåêóùåé ñòðîêè |
870 | ;ïðîõîäèì äî êîíöà òåêóùåé ñòðîêè |
871 | gotoEndString: |
871 | gotoEndString: |
872 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
872 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
873 | ja @f ;âûõîäèì |
873 | ja @f ;âûõîäèì |
874 | cmp byte[eax], 10 |
874 | cmp byte[eax], 10 |
875 | je @f |
875 | je @f |
876 | cmp byte[eax], 0 |
876 | cmp byte[eax], 0 |
877 | je @f |
877 | je @f |
878 | cmp byte[eax], 13 |
878 | cmp byte[eax], 13 |
879 | je @f |
879 | je @f |
880 | ;èíà÷å ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
880 | ;èíà÷å ïåðåõîäèì íà ñëåäóþùèé ñèìâîë |
881 | inc eax |
881 | inc eax |
882 | jmp gotoEndString |
882 | jmp gotoEndString |
883 | @@: |
883 | @@: |
884 | ret |
884 | ret |
885 | 885 | ||
886 | readOptRadius: |
886 | readOptRadius: |
887 | ;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
887 | ;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
888 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
888 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
889 | ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
889 | ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
890 | cmp byte[eax], 10 |
890 | cmp byte[eax], 10 |
891 | je @f |
891 | je @f |
892 | cmp byte[eax], 0 |
892 | cmp byte[eax], 0 |
893 | je @f |
893 | je @f |
894 | cmp byte[eax], 13 |
894 | cmp byte[eax], 13 |
895 | je @f |
895 | je @f |
896 | 896 | ||
897 | ;èíà÷å ñ÷èòûâàåì çíà÷åíèå |
897 | ;èíà÷å ñ÷èòûâàåì çíà÷åíèå |
898 | push ebx ecx |
898 | push ebx ecx |
899 | xor ecx, ecx |
899 | xor ecx, ecx |
900 | .readValue: |
900 | .readValue: |
901 | mov bl, byte[eax] |
901 | mov bl, byte[eax] |
902 | mov byte[radiusBuffer.data+ecx], bl |
902 | mov byte[radiusBuffer.data+ecx], bl |
903 | inc ecx |
903 | inc ecx |
904 | inc eax |
904 | inc eax |
905 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî âûõîä |
905 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî âûõîä |
906 | ja .readEnd |
906 | ja .readEnd |
907 | cmp byte[eax], 10 |
907 | cmp byte[eax], 10 |
908 | je .readEnd |
908 | je .readEnd |
909 | cmp byte[eax], 0 |
909 | cmp byte[eax], 0 |
910 | je .readEnd |
910 | je .readEnd |
911 | cmp byte[eax], 13 |
911 | cmp byte[eax], 13 |
912 | je .readEnd |
912 | je .readEnd |
913 | cmp ecx, 6 |
913 | cmp ecx, 6 |
914 | jae .readEnd |
914 | jae .readEnd |
915 | jmp .readValue |
915 | jmp .readValue |
916 | .readEnd: |
916 | .readEnd: |
917 | mov byte[radiusBuffer.data+ecx], 0 |
917 | mov byte[radiusBuffer.data+ecx], 0 |
918 | mov dword[radiusBuffer.size], ecx |
918 | mov dword[radiusBuffer.size], ecx |
919 | pop ecx ebx |
919 | pop ecx ebx |
920 | 920 | ||
921 | jmp .end |
921 | jmp .end |
922 | @@: |
922 | @@: |
923 | inc eax |
923 | inc eax |
924 | jmp readOptRadius |
924 | jmp readOptRadius |
925 | .default: |
925 | .default: |
926 | mov byte[radiusBuffer.data], '0' |
926 | mov byte[radiusBuffer.data], '0' |
927 | mov byte[radiusBuffer.data+1], 0 |
927 | mov byte[radiusBuffer.data+1], 0 |
928 | mov dword[radiusBuffer.size], 1 |
928 | mov dword[radiusBuffer.size], 1 |
929 | .end: |
929 | .end: |
930 | 930 | ||
931 | ret |
931 | ret |
932 | 932 | ||
933 | 933 | ||
934 | readOptSize: |
934 | readOptSize: |
935 | ;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
935 | ;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå |
936 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
936 | cmp eax, edx ;åñëè ôàéë çàêîí÷èëñß, òî |
937 | ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
937 | ja .default ;íàñòðîéêè ïî óìîë÷àíèþ |
938 | cmp byte[eax], 10 |
938 | cmp byte[eax], 10 |
939 | je @f |
939 | je @f |
940 | cmp byte[eax], 0 |
940 | cmp byte[eax], 0 |
941 | je @f |
941 | je @f |
942 | cmp byte[eax], 13 |
942 | cmp byte[eax], 13 |
943 | je @f |
943 | je @f |
944 | 944 | ||
945 | ;ïðîâåðßåì, ÷òî ýòî äîïóñòèìîå çíà÷åíèå: 1-7, a, s |
945 | ;ïðîâåðßåì, ÷òî ýòî äîïóñòèìîå çíà÷åíèå: 1-7, a, s |
946 | cmp byte[eax], 'a' |
946 | cmp byte[eax], 'a' |
947 | je .setValue |
947 | je .setValue |
948 | cmp byte[eax], 's' |
948 | cmp byte[eax], 's' |
949 | je .setValue |
949 | je .setValue |
950 | cmp byte[eax], '0' |
950 | cmp byte[eax], '0' |
951 | je .setValue |
951 | je .setValue |
952 | cmp byte[eax], '1' |
952 | cmp byte[eax], '1' |
953 | je .setValue |
953 | je .setValue |
954 | cmp byte[eax], '2' |
954 | cmp byte[eax], '2' |
955 | je .setValue |
955 | je .setValue |
956 | cmp byte[eax], '3' |
956 | cmp byte[eax], '3' |
957 | je .setValue |
957 | je .setValue |
958 | cmp byte[eax], '4' |
958 | cmp byte[eax], '4' |
959 | je .setValue |
959 | je .setValue |
960 | cmp byte[eax], '5' |
960 | cmp byte[eax], '5' |
961 | je .setValue |
961 | je .setValue |
962 | cmp byte[eax], '6' |
962 | cmp byte[eax], '6' |
963 | je .setValue |
963 | je .setValue |
964 | cmp byte[eax], '7' |
964 | cmp byte[eax], '7' |
965 | je .setValue |
965 | je .setValue |
966 | 966 | ||
967 | jmp .default ;èíà÷å ñòàâèì çíà÷åíèå ïî óìîë÷àíèþ |
967 | jmp .default ;èíà÷å ñòàâèì çíà÷åíèå ïî óìîë÷àíèþ |
968 | 968 | ||
969 | .setValue: |
969 | .setValue: |
970 | push ebx |
970 | push ebx |
971 | mov bl, byte[eax] |
971 | mov bl, byte[eax] |
972 | mov byte[sizeStyle], bl |
972 | mov byte[sizeStyle], bl |
973 | pop ebx |
973 | pop ebx |
974 | 974 | ||
975 | jmp .end |
975 | jmp .end |
976 | @@: |
976 | @@: |
977 | inc eax |
977 | inc eax |
978 | jmp readOptSize |
978 | jmp readOptSize |
979 | .default: |
979 | .default: |
980 | mov byte[sizeStyle], 's' ;ñèñòåìíûé |
980 | mov byte[sizeStyle], 's' ;ñèñòåìíûé |
981 | .end: |
981 | .end: |
982 | ret |
982 | ret |
983 | 983 | ||
984 | 984 | ||
985 | 985 | ||
986 | 986 | ||
987 | updateParams: ;max, size, pos |
987 | updateParams: ;max, size, pos |
988 | push eax |
988 | push eax |
989 | mov eax, dword[dataBuffer.size1] |
989 | mov eax, dword[dataBuffer.size1] |
990 | mov dword[editLU.size], eax |
990 | mov dword[editLU.size], eax |
991 | mov dword[editLU.pos], eax |
991 | mov dword[editLU.pos], eax |
992 | 992 | ||
993 | mov eax, dword[dataBuffer.size2] |
993 | mov eax, dword[dataBuffer.size2] |
994 | mov dword[editLD.size], eax |
994 | mov dword[editLD.size], eax |
995 | mov dword[editLD.pos], eax |
995 | mov dword[editLD.pos], eax |
996 | 996 | ||
997 | mov eax, dword[dataBuffer.size3] |
997 | mov eax, dword[dataBuffer.size3] |
998 | mov dword[editRU.size], eax |
998 | mov dword[editRU.size], eax |
999 | mov dword[editRU.pos], eax |
999 | mov dword[editRU.pos], eax |
1000 | 1000 | ||
1001 | mov eax, dword[dataBuffer.size4] |
1001 | mov eax, dword[dataBuffer.size4] |
1002 | mov dword[editRD.size], eax |
1002 | mov dword[editRD.size], eax |
1003 | mov dword[editRD.pos], eax |
1003 | mov dword[editRD.pos], eax |
1004 | 1004 | ||
1005 | mov eax, dword[radiusBuffer.size] |
1005 | mov eax, dword[radiusBuffer.size] |
1006 | mov dword[editRadius.size], eax |
1006 | mov dword[editRadius.size], eax |
1007 | mov dword[editRadius.pos], eax |
1007 | mov dword[editRadius.pos], eax |
1008 | pop eax |
1008 | pop eax |
1009 | ret |
1009 | ret |
1010 | 1010 | ||
1011 | 1011 | ||
1012 | 1012 | ||
1013 | selfName db 'HACONFIG', 0 |
1013 | selfName db 'HACONFIG', 0 |
1014 | selfNameSize = 8 ;äî 11 byte |
1014 | selfNameSize = 8 ;äî 11 byte |
1015 | ; |
1015 | ; |
1016 | compareBytes: |
1016 | compareBytes: |
1017 | push edi esi ecx ebx |
1017 | push edi esi ecx ebx |
1018 | mov eax, 0 ;xor eax, eax |
1018 | mov eax, 0 ;xor eax, eax |
1019 | mov ecx, selfNameSize ;max ðàçìåð ñòðîê 11 |
1019 | mov ecx, selfNameSize ;max ðàçìåð ñòðîê 11 |
1020 | @@: |
1020 | @@: |
1021 | mov bl, byte[edi] |
1021 | mov bl, byte[edi] |
1022 | cmp bl, byte[esi] |
1022 | cmp bl, byte[esi] |
1023 | jne compareBytes.no |
1023 | jne compareBytes.no |
1024 | inc edi |
1024 | inc edi |
1025 | inc esi |
1025 | inc esi |
1026 | cmp ecx, 0 |
1026 | cmp ecx, 0 |
1027 | je @f |
1027 | je @f |
1028 | dec ecx |
1028 | dec ecx |
1029 | jmp @b |
1029 | jmp @b |
1030 | .no: |
1030 | .no: |
1031 | mov eax, 1 |
1031 | mov eax, 1 |
1032 | @@: |
1032 | @@: |
1033 | pop ebx ecx esi edi |
1033 | pop ebx ecx esi edi |
1034 | ret |
1034 | ret |
1035 | ; |
1035 | ; |
1036 | slotMax dd 0 |
1036 | slotMax dd 0 |
1037 | selfPID dd 0 |
1037 | selfPID dd 0 |
1038 | buf db 1024 dup(0) |
1038 | buf db 1024 dup(0) |
1039 | copyKill: |
1039 | copyKill: |
1040 | push eax ebx ecx esi edi |
1040 | push eax ebx ecx esi edi |
1041 | 1041 | ||
1042 | ;ñïåðâà ïðî÷òÞì ñâîþ èíôîðìàöèþ |
1042 | ;ñïåðâà ïðî÷òÞì ñâîþ èíôîðìàöèþ |
1043 | mcall 9, buf, -1 |
1043 | mcall 9, buf, -1 |
1044 | mov eax, dword[buf+30] |
1044 | mov eax, dword[buf+30] |
1045 | mov dword[selfPID], eax |
1045 | mov dword[selfPID], eax |
1046 | 1046 | ||
1047 | ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíßþòñß: |
1047 | ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíßþòñß: |
1048 | mov esi, selfName ;ïåðâàß ñòðîêà - èìß òåêóùåãî ïðèëîæåíèß |
1048 | mov esi, selfName ;ïåðâàß ñòðîêà - èìß òåêóùåãî ïðèëîæåíèß |
1049 | mov edi, buf ;âòîðàß ñòðîêà - èìß òåêóùåãî ñëîòà |
1049 | mov edi, buf ;âòîðàß ñòðîêà - èìß òåêóùåãî ñëîòà |
1050 | add edi, 10 |
1050 | add edi, 10 |
1051 | 1051 | ||
1052 | mov ecx, 1 |
1052 | mov ecx, 1 |
1053 | @@: |
1053 | @@: |
1054 | mcall 9, buf, ecx |
1054 | mcall 9, buf, ecx |
1055 | mov dword[slotMax], eax |
1055 | mov dword[slotMax], eax |
1056 | 1056 | ||
1057 | ;åñëè ýòî ìû ñàìè, òî ïðîïóñêàåì ïðîâåðêó |
1057 | ;åñëè ýòî ìû ñàìè, òî ïðîïóñêàåì ïðîâåðêó |
1058 | mov eax, dword[buf+30] |
1058 | mov eax, dword[buf+30] |
1059 | cmp eax, dword[selfPID] |
1059 | cmp eax, dword[selfPID] |
1060 | je copyKill.propusk |
1060 | je copyKill.propusk |
1061 | 1061 | ||
1062 | call compareBytes ;ñðàâíèâàåì 11 áàéò ñòðîê, ðåçóëüòàò â eax |
1062 | call compareBytes ;ñðàâíèâàåì 11 áàéò ñòðîê, ðåçóëüòàò â eax |
1063 | 1063 | ||
1064 | cmp eax, 0 |
1064 | cmp eax, 0 |
1065 | je copyKill.selfKill |
1065 | je copyKill.selfKill |
1066 | 1066 | ||
1067 | .propusk: |
1067 | .propusk: |
1068 | inc ecx |
1068 | inc ecx |
1069 | cmp ecx, dword[slotMax] |
1069 | cmp ecx, dword[slotMax] |
1070 | ja @f |
1070 | ja @f |
1071 | jmp @b |
1071 | jmp @b |
1072 | 1072 | ||
1073 | .selfKill: |
1073 | .selfKill: |
1074 | pop edi esi ecx ebx eax |
1074 | pop edi esi ecx ebx eax |
1075 | mcall -1 |
1075 | mcall -1 |
1076 | ret |
1076 | ret |
1077 | @@: |
1077 | @@: |
1078 | pop edi esi ecx ebx eax |
1078 | pop edi esi ecx ebx eax |
1079 | ret |
1079 | ret |
1080 | 1080 | ||
1081 | WindowsWidth = 550 |
1081 | WindowsWidth = 550 |
1082 | WindowsHeight = 235 |
1082 | WindowsHeight = 235 |
1083 | coord: ;êîîðäèíàòû îêíà ïðèëîæåíèß |
1083 | coord: ;êîîðäèíàòû îêíà ïðèëîæåíèß |
1084 | .y dw 0 |
1084 | .y dw 0 |
1085 | .x dw 0 |
1085 | .x dw 0 |
1086 | 1086 | ||
1087 | draw_window: |
1087 | draw_window: |
1088 | mcall 12, 1 ; Start window redraw |
1088 | mcall 12, 1 ; Start window redraw |
1089 | 1089 | ||
1090 | ;îòîáðàçèì îêíî ïî öåíòðó ýêðàíà äëß ýòîãî: |
1090 | ;îòîáðàçèì îêíî ïî öåíòðó ýêðàíà äëß ýòîãî: |
1091 | mcall 14 ;ïîëó÷èì ðàçìåðû ýêðàíà |
1091 | mcall 14 ;ïîëó÷èì ðàçìåðû ýêðàíà |
1092 | mov dword[coord], eax ;ïîëîæèì ðàçìåðû ýêðàíà â êîîðäèíàòû |
1092 | mov dword[coord], eax ;ïîëîæèì ðàçìåðû ýêðàíà â êîîðäèíàòû |
1093 | shr word[coord.x], 1 ;âåðíåå ïîëîæèì èõ ïîëîâèíó |
1093 | shr word[coord.x], 1 ;âåðíåå ïîëîæèì èõ ïîëîâèíó |
1094 | shr word[coord.y], 1 |
1094 | shr word[coord.y], 1 |
1095 | 1095 | ||
1096 | ;âû÷èñëßåì êîîðäèíàòû îêíà, ÷òîáû îêíî áûëî ïî ñåðåäèíå ýêðàíà |
1096 | ;âû÷èñëßåì êîîðäèíàòû îêíà, ÷òîáû îêíî áûëî ïî ñåðåäèíå ýêðàíà |
1097 | sub word[coord.x], WindowsWidth/2 |
1097 | sub word[coord.x], WindowsWidth/2 |
1098 | sub word[coord.y], WindowsHeight/2 |
1098 | sub word[coord.y], WindowsHeight/2 |
1099 | 1099 | ||
1100 | mov eax, 0 ; function 0 : define and draw window |
1100 | mov eax, 0 ; function 0 : define and draw window |
1101 | mov ebx, 0 ; [x start] *65536 + [x size] |
1101 | mov ebx, 0 ; [x start] *65536 + [x size] |
1102 | mov bx, word[coord.x] |
1102 | mov bx, word[coord.x] |
1103 | shl ebx, 16 |
1103 | shl ebx, 16 |
1104 | mov bx, WindowsWidth |
1104 | mov bx, WindowsWidth |
1105 | 1105 | ||
1106 | mov ecx, 0 |
1106 | mov ecx, 0 |
1107 | mov cx, word[coord.y] ; [y start] *65536 + [y size] |
1107 | mov cx, word[coord.y] ; [y start] *65536 + [y size] |
1108 | shl ecx, 16 |
1108 | shl ecx, 16 |
1109 | mov cx, WindowsHeight |
1109 | mov cx, WindowsHeight |
1110 | 1110 | ||
1111 | mov edx, 0x14ffffff ; color of work area RRGGBB |
1111 | mov edx, 0x14ffffff ; color of work area RRGGBB |
1112 | ; 0x02000000 = window type 4 (fixed size, skinned window) |
1112 | ; 0x02000000 = window type 4 (fixed size, skinned window) |
1113 | mov esi, 0x808899ff ; color of grab bar RRGGBB |
1113 | mov esi, 0x808899ff ; color of grab bar RRGGBB |
1114 | ; 0x80000000 = color glide |
1114 | ; 0x80000000 = color glide |
1115 | mov edi, title |
1115 | mov edi, title |
1116 | mcall |
1116 | mcall |
1117 | 1117 | ||
1118 | invoke edit_box_draw, editLU ;ðèñîâàíèå edit box'îâ |
1118 | invoke edit_box_draw, editLU ;ðèñîâàíèå edit box'îâ |
1119 | invoke edit_box_draw, editLD |
1119 | invoke edit_box_draw, editLD |
1120 | invoke edit_box_draw, editRU |
1120 | invoke edit_box_draw, editRU |
1121 | invoke edit_box_draw, editRD |
1121 | invoke edit_box_draw, editRD |
1122 | 1122 | ||
1123 | ;ðèñóåì êíîïêó è åå òåêñò |
1123 | ;ðèñóåì êíîïêó è åå òåêñò |
1124 | buttonAppleY = WindowsHeight-40 |
1124 | buttonAppleY = WindowsHeight-40 |
1125 | mcall 8, |
1125 | mcall 8, |
1126 | mcall 4, |
1126 | mcall 4, |
1127 | 1127 | ||
1128 | ;ðèñóåì åùÞ 4 êíîïêè äëß äèàëîãîâîãî îêíà âûáîðà ôàéëà |
1128 | ;ðèñóåì åùÞ 4 êíîïêè äëß äèàëîãîâîãî îêíà âûáîðà ôàéëà |
1129 | ;íîìåðà 4,5,6 è 7 |
1129 | ;íîìåðà 4,5,6 è 7 |
1130 | buttonW = 30 |
1130 | buttonW = 30 |
1131 | buttonH = 21 |
1131 | buttonH = 21 |
1132 | ;ëåâûé âåðõíèé óãîë |
1132 | ;ëåâûé âåðõíèé óãîë |
1133 | mcall 8, |
1133 | mcall 8, |
1134 | ;ëåâûé íèæíèé óãîë |
1134 | ;ëåâûé íèæíèé óãîë |
1135 | mcall 8, |
1135 | mcall 8, |
1136 | ;ïðàâûé âåðõíèé óãîë |
1136 | ;ïðàâûé âåðõíèé óãîë |
1137 | mcall 8, |
1137 | mcall 8, |
1138 | ;ïðàâûé íèæíèé óãîë |
1138 | ;ïðàâûé íèæíèé óãîë |
1139 | mcall 8, |
1139 | mcall 8, |
1140 | 1140 | ||
1141 | ;ðèñóåì òåêñòû äëß ýòèõ 4 êíîïîê |
1141 | ;ðèñóåì òåêñòû äëß ýòèõ 4 êíîïîê |
1142 | mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà |
1142 | mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà |
1143 | mov edx, commonButtonText ;ñòðîêà òåêñòà |
1143 | mov edx, commonButtonText ;ñòðîêà òåêñòà |
1144 | mov esi, commonButtonTextSize ;ðàçìåð òåêñòà â ñèìâîëàõ |
1144 | mov esi, commonButtonTextSize ;ðàçìåð òåêñòà â ñèìâîëàõ |
1145 | ;êîîðäèíàòû òåêñòà (x, y) |
1145 | ;êîîðäèíàòû òåêñòà (x, y) |
1146 | deltaCommonTextX = 7 |
1146 | deltaCommonTextX = 7 |
1147 | deltaCommonTextY = 6 |
1147 | deltaCommonTextY = 6 |
1148 | mcall 4, |
1148 | mcall 4, |
1149 | mcall 4, |
1149 | mcall 4, |
1150 | mcall 4, |
1150 | mcall 4, |
1151 | mcall 4, |
1151 | mcall 4, |
1152 | 1152 | ||
1153 | ;delete mode button, if it exist |
1153 | ;delete mode button, if it exist |
1154 | mov edx, 0x80000008 |
1154 | mov edx, 0x80000008 |
1155 | mcall 8 |
1155 | mcall 8 |
1156 | ;draw button Mode |
1156 | ;draw button Mode |
1157 | buttonModeX = 30 ;433 |
1157 | buttonModeX = 30 ;433 |
1158 | buttonModeY = 160 ;50 |
1158 | buttonModeY = 160 ;50 |
1159 | buttonModeWidth = 300 |
1159 | buttonModeWidth = 300 |
1160 | buttonModeHeight = 20 |
1160 | buttonModeHeight = 20 |
1161 | buttonModeTextYoffset = 3 |
1161 | buttonModeTextYoffset = 3 |
1162 | buttonModeTextXoffset = 5 |
1162 | buttonModeTextXoffset = 5 |
1163 | mcall 8, |
1163 | mcall 8, |
1164 | mcall 13, |
1164 | mcall 13, |
1165 | ;draw text for button Mode |
1165 | ;draw text for button Mode |
1166 | mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y) |
1166 | mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y) |
1167 | mov ecx, 0x10000000 |
1167 | mov ecx, 0x10000000 |
1168 | call setTextModeMenu |
1168 | call setTextModeMenu |
1169 | mov esi, valueModeMenuSize |
1169 | mov esi, valueModeMenuSize |
1170 | mcall 4 |
1170 | mcall 4 |
1171 | mov ebx, (buttonModeX+buttonModeWidth-12) * 65536 + (buttonModeY+buttonModeTextYoffset+3) |
1171 | mov ebx, (buttonModeX+buttonModeWidth-12) * 65536 + (buttonModeY+buttonModeTextYoffset+3) |
1172 | mov ecx, 0x80FFFFFF |
1172 | mov ecx, 0x80FFFFFF |
1173 | mov edx, symbolDownArrow |
1173 | mov edx, symbolDownArrow |
1174 | mcall 4 |
1174 | mcall 4 |
1175 | 1175 | ||
1176 | ;êíîïêà âûáîðà ãîðß÷åé êëàâèøè |
1176 | ;êíîïêà âûáîðà ãîðß÷åé êëàâèøè |
1177 | buttonHotKeyX = 350-10 |
1177 | buttonHotKeyX = 350-10 |
1178 | buttonHotKeyWidth = 90 |
1178 | buttonHotKeyWidth = 90 |
1179 | mov edx, 0x80000009 ;óäàëßåì |
1179 | mov edx, 0x80000009 ;óäàëßåì |
1180 | mcall 8 |
1180 | mcall 8 |
1181 | cmp byte[mode], 49 ;ðèñóåì âûáîð êëàâèøè, òîëüêî åñëè mode > 1 |
1181 | cmp byte[mode], 49 ;ðèñóåì âûáîð êëàâèøè, òîëüêî åñëè mode > 1 |
1182 | jbe @f |
1182 | jbe @f |
1183 | ;ðèñóåì íîâóþ |
1183 | ;ðèñóåì íîâóþ |
1184 | push eax ebx ecx edx esi |
1184 | push eax ebx ecx edx esi |
1185 | mov ebx, buttonHotKeyX*65536 + buttonHotKeyWidth ;X + Width |
1185 | mov ebx, buttonHotKeyX*65536 + buttonHotKeyWidth ;X + Width |
1186 | mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height |
1186 | mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height |
1187 | mov edx, 0x00000009 ;button id |
1187 | mov edx, 0x00000009 ;button id |
1188 | mov esi, 0x00FFFFFF ;color button |
1188 | mov esi, 0x00FFFFFF ;color button |
1189 | mcall 8 |
1189 | mcall 8 |
1190 | pop esi edx ecx ebx eax |
1190 | pop esi edx ecx ebx eax |
1191 | ;òåêñò ïîäñêàçêè äëß ãîðß÷åé êëàâèøè |
1191 | ;òåêñò ïîäñêàçêè äëß ãîðß÷åé êëàâèøè |
1192 | mov ebx, (buttonHotKeyX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y) |
1192 | mov ebx, (buttonHotKeyX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y) |
1193 | mov ecx, 0x90224466 |
1193 | mov ecx, 0x90224466 |
1194 | call setTextForHotKey |
1194 | call setTextForHotKey |
1195 | mov esi, valueModeMenuSize |
1195 | mov esi, valueModeMenuSize |
1196 | mcall 4 |
1196 | mcall 4 |
1197 | ;çàãîëîâîê |
1197 | ;çàãîëîâîê |
1198 | push eax ebx ecx edx edi esi |
1198 | push eax ebx ecx edx edi esi |
1199 | mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11) |
1199 | mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11) |
1200 | mov ecx, 0x80224466 |
1200 | mov ecx, 0x80224466 |
1201 | mov edx, hkCaption |
1201 | mov edx, hkCaption |
1202 | mov esi, 3 |
1202 | mov esi, 3 |
1203 | mcall 4 |
1203 | mcall 4 |
1204 | pop esi edi edx ecx ebx eax |
1204 | pop esi edi edx ecx ebx eax |
1205 | @@: |
1205 | @@: |
1206 | 1206 | ||
1207 | ;îòîáðàæàåì íàñòðîéêó ðàäèóñà äåéñòâèß æåñòà, òîëüêî åñëè âûáðàí ðåæèì 3 |
1207 | ;îòîáðàæàåì íàñòðîéêó ðàäèóñà äåéñòâèß æåñòà, òîëüêî åñëè âûáðàí ðåæèì 3 |
1208 | cmp byte[mode], 51 |
1208 | cmp byte[mode], 51 |
1209 | jne @f |
1209 | jne @f |
1210 | ;çàãîëîâîê |
1210 | ;çàãîëîâîê |
1211 | push eax ebx ecx edx edi esi |
1211 | push eax ebx ecx edx edi esi |
1212 | mov ebx, (buttonHotKeyX + buttonHotKeyWidth + 20) * 65536 + (buttonModeY-11) |
1212 | mov ebx, (buttonHotKeyX + buttonHotKeyWidth + 20) * 65536 + (buttonModeY-11) |
1213 | mov ecx, 0x80224466 |
1213 | mov ecx, 0x80224466 |
1214 | mov edx, radiusCaption |
1214 | mov edx, radiusCaption |
1215 | mov esi, 3 |
1215 | mov esi, 3 |
1216 | mcall 4 |
1216 | mcall 4 |
1217 | pop esi edi edx ecx ebx eax |
1217 | pop esi edi edx ecx ebx eax |
1218 | invoke edit_box_draw, editRadius |
1218 | invoke edit_box_draw, editRadius |
1219 | @@: |
1219 | @@: |
1220 | 1220 | ||
1221 | call draw_super_text |
1221 | call draw_super_text |
1222 | 1222 | ||
1223 | LineLength = 62 |
1223 | LineLength = 62 |
1224 | mov ebx, Otstup * 65536 + 32 ; draw info text with function 4 (x, y) |
1224 | mov ebx, Otstup * 65536 + 32 ; draw info text with function 4 (x, y) |
1225 | 1225 | ||
1226 | ;xor ecx, ecx |
1226 | ;xor ecx, ecx |
1227 | ;mov cl, 1 ;byte[mysize] |
1227 | ;mov cl, 1 ;byte[mysize] |
1228 | ;shl ecx, 24 |
1228 | ;shl ecx, 24 |
1229 | ;add ecx, 0x224466 |
1229 | ;add ecx, 0x224466 |
1230 | ;or ecx, 0x00224466 ;80224466 |
1230 | ;or ecx, 0x00224466 ;80224466 |
1231 | mov ecx, 0x10224466 |
1231 | mov ecx, 0x10224466 |
1232 | 1232 | ||
1233 | mov edx, text |
1233 | mov edx, text |
1234 | mov esi, LineLength |
1234 | mov esi, LineLength |
1235 | mov eax, 4 |
1235 | mov eax, 4 |
1236 | 1236 | ||
1237 | .newline: ; text from the DATA AREA |
1237 | .newline: ; text from the DATA AREA |
1238 | mcall |
1238 | mcall |
1239 | add ebx, 15 |
1239 | add ebx, 15 |
1240 | add edx, LineLength |
1240 | add edx, LineLength |
1241 | cmp byte[edx], 0 |
1241 | cmp byte[edx], 0 |
1242 | jne .newline |
1242 | jne .newline |
1243 | 1243 | ||
1244 | mcall 12, 2 ; End window redraw |
1244 | mcall 12, 2 ; End window redraw |
1245 | 1245 | ||
1246 | ret |
1246 | ret |
1247 | 1247 | ||
1248 | hkSymbol: db 0, 0 |
1248 | hkSymbol: db 0, 0 |
1249 | 1249 | ||
1250 | setTextForHotKey: |
1250 | setTextForHotKey: |
1251 | push eax |
1251 | push eax |
1252 | mov al, byte[hkSymbol] |
1252 | mov al, byte[hkSymbol] |
1253 | cmp al, 0 |
1253 | cmp al, 0 |
1254 | jne @f |
1254 | jne @f |
1255 | mov edx, hkHint |
1255 | mov edx, hkHint |
1256 | mov dword[hkSize], 5 ;çíà÷åíèå ïî óìîë÷àíèþ SPACE ;shift |
1256 | mov dword[hkSize], 5 ;çíà÷åíèå ïî óìîë÷àíèþ SPACE ;shift |
1257 | jmp setTextForHotKey.end |
1257 | jmp setTextForHotKey.end |
1258 | @@: |
1258 | @@: |
1259 | cmp al, 1 |
1259 | cmp al, 1 |
1260 | jne @f |
1260 | jne @f |
1261 | mov edx, hkAlt |
1261 | mov edx, hkAlt |
1262 | mov dword[hkSize], 3 |
1262 | mov dword[hkSize], 3 |
1263 | jmp setTextForHotKey.end |
1263 | jmp setTextForHotKey.end |
1264 | @@: |
1264 | @@: |
1265 | cmp al, 2 |
1265 | cmp al, 2 |
1266 | jne @f |
1266 | jne @f |
1267 | mov edx, hkShift |
1267 | mov edx, hkShift |
1268 | mov dword[hkSize], 5 |
1268 | mov dword[hkSize], 5 |
1269 | jmp setTextForHotKey.end |
1269 | jmp setTextForHotKey.end |
1270 | @@: |
1270 | @@: |
1271 | cmp al, 3 |
1271 | cmp al, 3 |
1272 | jne @f |
1272 | jne @f |
1273 | mov edx, hkCtrl |
1273 | mov edx, hkCtrl |
1274 | mov dword[hkSize], 4 |
1274 | mov dword[hkSize], 4 |
1275 | jmp setTextForHotKey.end |
1275 | jmp setTextForHotKey.end |
1276 | @@: |
1276 | @@: |
1277 | cmp al, 32 |
1277 | cmp al, 32 |
1278 | jne @f |
1278 | jne @f |
1279 | mov edx, hkSpace |
1279 | mov edx, hkSpace |
1280 | mov dword[hkSize], 5 |
1280 | mov dword[hkSize], 5 |
1281 | jmp setTextForHotKey.end |
1281 | jmp setTextForHotKey.end |
1282 | @@: |
1282 | @@: |
1283 | cmp al, 96 ;'`' |
1283 | cmp al, 96 ;'`' |
1284 | je setTextForHotKey.symb |
1284 | je setTextForHotKey.symb |
1285 | cmp al, 126 ;'~' |
1285 | cmp al, 126 ;'~' |
1286 | je setTextForHotKey.symb |
1286 | je setTextForHotKey.symb |
1287 | cmp al, 48 ;'0' |
1287 | cmp al, 48 ;'0' |
1288 | jb @f |
1288 | jb @f |
1289 | cmp al, 57 ;'9' |
1289 | cmp al, 57 ;'9' |
1290 | ja @f |
1290 | ja @f |
1291 | .symb: |
1291 | .symb: |
1292 | mov edx, hkSymbol |
1292 | mov edx, hkSymbol |
1293 | mov dword[hkSize], 1 |
1293 | mov dword[hkSize], 1 |
1294 | jmp setTextForHotKey.end |
1294 | jmp setTextForHotKey.end |
1295 | @@: |
1295 | @@: |
1296 | cmp al, 97 ;'a' |
1296 | cmp al, 97 ;'a' |
1297 | jb @f |
1297 | jb @f |
1298 | cmp al, 122 ;'z' |
1298 | cmp al, 122 ;'z' |
1299 | ja @f |
1299 | ja @f |
1300 | ;jmp setTextForHotKey.symb |
1300 | ;jmp setTextForHotKey.symb |
1301 | mov edx, hkSymbol |
1301 | mov edx, hkSymbol |
1302 | mov dword[hkSize], 1 |
1302 | mov dword[hkSize], 1 |
1303 | jmp setTextForHotKey.end |
1303 | jmp setTextForHotKey.end |
1304 | @@: |
1304 | @@: |
1305 | cmp al, 65 ;'A' |
1305 | cmp al, 65 ;'A' |
1306 | jb @f |
1306 | jb @f |
1307 | cmp al, 90 ;'Z' |
1307 | cmp al, 90 ;'Z' |
1308 | ja @f |
1308 | ja @f |
1309 | ;jmp setTextForHotKey.symb |
1309 | ;jmp setTextForHotKey.symb |
1310 | mov edx, hkSymbol |
1310 | mov edx, hkSymbol |
1311 | mov dword[hkSize], 1 |
1311 | mov dword[hkSize], 1 |
1312 | jmp setTextForHotKey.end |
1312 | jmp setTextForHotKey.end |
1313 | @@: |
1313 | @@: |
1314 | mov word[hkSymbol], 0 ;åñëè æå ïîïàëî ÷òî-òî íåèçâåñòíîå, òî ñîòðÞì åãî |
1314 | mov word[hkSymbol], 0 ;åñëè æå ïîïàëî ÷òî-òî íåèçâåñòíîå, òî ñîòðÞì åãî |
1315 | mov edx, hkHint |
1315 | mov edx, hkHint |
1316 | mov dword[hkSize], 5 ;shift or space - çíà÷åíèå ïî óìîë÷àíèþ |
1316 | mov dword[hkSize], 5 ;shift or space - çíà÷åíèå ïî óìîë÷àíèþ |
1317 | .end: |
1317 | .end: |
1318 | pop eax |
1318 | pop eax |
1319 | ret |
1319 | ret |
1320 | 1320 | ||
1321 | 1321 | ||
1322 | setTextModeMenu: |
1322 | setTextModeMenu: |
1323 | cmp byte[mode], 48 |
1323 | cmp byte[mode], 48 |
1324 | jne @f |
1324 | jne @f |
1325 | mov edx, valueModeMenu0 |
1325 | mov edx, valueModeMenu0 |
1326 | ret |
1326 | ret |
1327 | @@: |
1327 | @@: |
1328 | cmp byte[mode], 49 |
1328 | cmp byte[mode], 49 |
1329 | jne @f |
1329 | jne @f |
1330 | mov edx, valueModeMenu1 |
1330 | mov edx, valueModeMenu1 |
1331 | ret |
1331 | ret |
1332 | @@: |
1332 | @@: |
1333 | cmp byte[mode], 50 |
1333 | cmp byte[mode], 50 |
1334 | jne @f |
1334 | jne @f |
1335 | mov edx, valueModeMenu2 |
1335 | mov edx, valueModeMenu2 |
1336 | ret |
1336 | ret |
1337 | @@: |
1337 | @@: |
1338 | cmp byte[mode], 51 |
1338 | cmp byte[mode], 51 |
1339 | jne @f |
1339 | jne @f |
1340 | mov edx, valueModeMenu3 |
1340 | mov edx, valueModeMenu3 |
1341 | ret |
1341 | ret |
1342 | @@: |
1342 | @@: |
1343 | mov edx, valueModeMenu1 |
1343 | mov edx, valueModeMenu1 |
1344 | ret |
1344 | ret |
1345 | 1345 | ||
1346 | 1346 | ||
1347 | 1347 | ||
1348 | 1348 | ||
1349 | saveKey: |
1349 | saveKey: |
1350 | cmp word[hkSymbol], 0 |
1350 | cmp word[hkSymbol], 0 |
1351 | je .default |
1351 | je .default |
1352 | cmp byte[hkSymbol], 1 |
1352 | cmp byte[hkSymbol], 1 |
1353 | je .alt |
1353 | je .alt |
1354 | cmp byte[hkSymbol], 2 |
1354 | cmp byte[hkSymbol], 2 |
1355 | je .shift |
1355 | je .shift |
1356 | cmp byte[hkSymbol], 3 |
1356 | cmp byte[hkSymbol], 3 |
1357 | je .ctrl |
1357 | je .ctrl |
1358 | cmp byte[hkSymbol], 32 |
1358 | cmp byte[hkSymbol], 32 |
1359 | je .space |
1359 | je .space |
1360 | .other: |
1360 | .other: |
1361 | mov esi, hkSymbol |
1361 | mov esi, hkSymbol |
1362 | mov byte[esi+1], 0 |
1362 | mov byte[esi+1], 0 |
1363 | mov dword[hkSize], 1 |
1363 | mov dword[hkSize], 1 |
1364 | jmp .end |
1364 | jmp .end |
1365 | .space: |
1365 | .space: |
1366 | mov esi, hkSpace |
1366 | mov esi, hkSpace |
1367 | mov dword[hkSize], 5 |
1367 | mov dword[hkSize], 5 |
1368 | jmp .end |
1368 | jmp .end |
1369 | .ctrl: |
1369 | .ctrl: |
1370 | mov esi, hkCtrl |
1370 | mov esi, hkCtrl |
1371 | mov dword[hkSize], 4 |
1371 | mov dword[hkSize], 4 |
1372 | jmp .end |
1372 | jmp .end |
1373 | .alt: |
1373 | .alt: |
1374 | mov esi, hkAlt |
1374 | mov esi, hkAlt |
1375 | mov dword[hkSize], 3 |
1375 | mov dword[hkSize], 3 |
1376 | jmp .end |
1376 | jmp .end |
1377 | .default: |
1377 | .default: |
1378 | .shift: |
1378 | .shift: |
1379 | mov esi, hkShift |
1379 | mov esi, hkShift |
1380 | mov dword[hkSize], 5 |
1380 | mov dword[hkSize], 5 |
1381 | .end: |
1381 | .end: |
1382 | mov ebx, hkSize ;óêàçàòåëü íà dword[hkSize] |
1382 | mov ebx, hkSize ;óêàçàòåëü íà dword[hkSize] |
1383 | call copyParam |
1383 | call copyParam |
1384 | ret |
1384 | ret |
1385 | 1385 | ||
1386 | 1386 | ||
1387 | 1387 | ||
1388 | 1388 | ||
1389 | 1389 | ||
1390 | align 16 |
1390 | align 16 |
1391 | @IMPORT: |
1391 | @IMPORT: |
1392 | 1392 | ||
1393 | library box_lib, 'box_lib.obj' |
1393 | library box_lib, 'box_lib.obj' |
1394 | 1394 | ||
1395 | import box_lib,\ |
1395 | import box_lib,\ |
1396 | edit_box_draw, 'edit_box',\ |
1396 | edit_box_draw, 'edit_box',\ |
1397 | edit_box_key, 'edit_box_key',\ |
1397 | edit_box_key, 'edit_box_key',\ |
1398 | edit_box_mouse, 'edit_box_mouse',\ |
1398 | edit_box_mouse, 'edit_box_mouse',\ |
1399 | init_checkbox, 'init_checkbox2',\ |
1399 | init_checkbox, 'init_checkbox2',\ |
1400 | check_box_draw, 'check_box_draw2',\ |
1400 | check_box_draw, 'check_box_draw2',\ |
1401 | check_box_mouse, 'check_box_mouse2',\ |
1401 | check_box_mouse, 'check_box_mouse2',\ |
1402 | option_box_draw, 'option_box_draw',\ |
1402 | option_box_draw, 'option_box_draw',\ |
1403 | option_box_mouse, 'option_box_mouse' |
1403 | option_box_mouse, 'option_box_mouse' |
1404 | 1404 | ||
1405 | commonButtonText db '...', 0 ;òåêñò äëß êíîïîê âûçîâà OpenDial |
1405 | commonButtonText db '...', 0 ;òåêñò äëß êíîïîê âûçîâà OpenDial |
1406 | commonButtonTextSize = 3 |
1406 | commonButtonTextSize = 3 |
1407 | 1407 | ||
1408 | if lang eq ru ;åñëè ßçûê ñáîðêè ðóññêèé |
1408 | if lang eq ru ;åñëè ßçûê ñáîðêè ðóññêèé |
1409 | 1409 | ||
1410 | text db "®ä¨£ãà â®à Hot Angles ®â¢¥ç ¥â § áâனªã ªâ¨¢ëå 㣫®¢. " |
1410 | text db "®ä¨£ãà â®à Hot Angles ®â¢¥ç ¥â § áâனªã ªâ¨¢ëå 㣫®¢. " |
1411 | db " áâன⥠¯ à ¬¥âàë ¯®¤ á¥¡ï ¨«¨ ®âª«îç¨â¥ íâã ®¯æ¨î. " |
1411 | db " áâன⥠¯ à ¬¥âàë ¯®¤ á¥¡ï ¨«¨ ®âª«îç¨â¥ íâã ®¯æ¨î. " |
1412 | db " ", 0 |
1412 | db " ", 0 |
1413 | hed: |
1413 | hed: |
1414 | title db "®ä¨£ãà â®à ã⨫¨âë Hot Angles", 0 |
1414 | title db "®ä¨£ãà â®à ã⨫¨âë Hot Angles", 0 |
1415 | buttonText db "ਬ¥¨âì", 0 |
1415 | buttonText db "ਬ¥¨âì", 0 |
1416 | buttonTextSize = 9 |
1416 | buttonTextSize = 9 |
1417 | 1417 | ||
1418 | ch_text db 'ª«îç¨âì/ ªâ¨¢¨à®¢ âì "Hot Angles"', 0 |
1418 | ch_text db 'ª«îç¨âì/ ªâ¨¢¨à®¢ âì "Hot Angles"', 0 |
1419 | 1419 | ||
1420 | superText: |
1420 | superText: |
1421 | .lu db '®¬ ¤ «¥¢®£® ¢¥à奣® 㣫 : ', 0 |
1421 | .lu db '®¬ ¤ «¥¢®£® ¢¥à奣® 㣫 : ', 0 |
1422 | .ld db '®¬ ¤ «¥¢®£® ¨¦¥£® 㣫 : ', 0 |
1422 | .ld db '®¬ ¤ «¥¢®£® ¨¦¥£® 㣫 : ', 0 |
1423 | .ru db '®¬ ¤ ¯à ¢®£® ¢¥à奣® 㣫 :', 0 |
1423 | .ru db '®¬ ¤ ¯à ¢®£® ¢¥à奣® 㣫 :', 0 |
1424 | .rd db '®¬ ¤ ¯à ¢®£® ¨¦¥£® 㣫 : ', 0 |
1424 | .rd db '®¬ ¤ ¯à ¢®£® ¨¦¥£® 㣫 : ', 0 |
1425 | superTextSize = 30 |
1425 | superTextSize = 30 |
1426 | 1426 | ||
1427 | valueModeMenuSize = 32 |
1427 | valueModeMenuSize = 32 |
1428 | ModeMenu db '¥¦¨¬ à ¡®âë:',0 |
1428 | ModeMenu db '¥¦¨¬ à ¡®âë:',0 |
1429 | valueModeMenu0 db '®âª«î祮 ',0 |
1429 | valueModeMenu0 db '®âª«î祮 ',0 |
1430 | valueModeMenu1 db 'ª« áá¨ç¥áª¨© ०¨¬ ',0 |
1430 | valueModeMenu1 db 'ª« áá¨ç¥áª¨© ०¨¬ ',0 |
1431 | valueModeMenu2 db '०¨¬ £®àï祩 ª« ¢¨è¨ ',0 |
1431 | valueModeMenu2 db '०¨¬ £®àï祩 ª« ¢¨è¨ ',0 |
1432 | valueModeMenu3 db '०¨¬ ¦¥áâ ¯® ª« ¢¨è¥ ªâ¨¢ 樨',0 |
1432 | valueModeMenu3 db '०¨¬ ¦¥áâ ¯® ª« ¢¨è¥ ªâ¨¢ 樨',0 |
1433 | 1433 | ||
1434 | head_f_i: |
1434 | head_f_i: |
1435 | head_f_l db '¨á⥬ ï ®è¨¡ª ',0 |
1435 | head_f_l db '¨á⥬ ï ®è¨¡ª ',0 |
1436 | err_message_found_lib0 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'proc_lib.obj',39,0 |
1436 | err_message_found_lib0 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'proc_lib.obj',39,0 |
1437 | err_message_import0 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0 |
1437 | err_message_import0 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0 |
1438 | err_message_found_lib1 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'kmenu.obj',39,0 |
1438 | err_message_found_lib1 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'kmenu.obj',39,0 |
1439 | err_message_import1 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'kmenu',39,0 |
1439 | err_message_import1 db '訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'kmenu',39,0 |
1440 | 1440 | ||
1441 | hkCaption: db '« ¢¨è :',0 |
1441 | hkCaption: db '« ¢¨è :',0 |
1442 | ;hkHint: db ' ¦¬¨â¥ «î¡ãî ª« ¢¨èã',0 |
1442 | ;hkHint: db ' ¦¬¨â¥ «î¡ãî ª« ¢¨èã',0 |
1443 | radiusCaption: db ' ¤¨ãá:',0 |
1443 | radiusCaption: db ' ¤¨ãá:',0 |
1444 | 1444 | ||
1445 | else ;èíà÷å àíãëèéñêèé òåêñò |
1445 | else ;èíà÷å àíãëèéñêèé òåêñò |
1446 | 1446 | ||
1447 | text db "This is a Hot Angles Configurator. " |
1447 | text db "This is a Hot Angles Configurator. " |
1448 | db "Set the parameters bellow for yourself or disable this option." |
1448 | db "Set the parameters bellow for yourself or disable this option." |
1449 | db " ", 0 |
1449 | db " ", 0 |
1450 | hed: |
1450 | hed: |
1451 | title db "Hot Angles Configurator", 0 |
1451 | title db "Hot Angles Configurator", 0 |
1452 | buttonText db " Apply ", 0 |
1452 | buttonText db " Apply ", 0 |
1453 | buttonTextSize = 5 |
1453 | buttonTextSize = 5 |
1454 | 1454 | ||
1455 | ch_text db 'Activate "Hot Angles"',0 ;ñîïðîâîæäàþùèé òåêñò äëß ÷åê áîêñà |
1455 | ch_text db 'Activate "Hot Angles"',0 ;ñîïðîâîæäàþùèé òåêñò äëß ÷åê áîêñà |
1456 | 1456 | ||
1457 | superText: |
1457 | superText: |
1458 | .lu db 'Left up angle command: ', 0 |
1458 | .lu db 'Left up angle command: ', 0 |
1459 | .ld db 'Left down angle command: ', 0 |
1459 | .ld db 'Left down angle command: ', 0 |
1460 | .ru db 'Right up angle command: ', 0 |
1460 | .ru db 'Right up angle command: ', 0 |
1461 | .rd db 'Right down angle command:', 0 |
1461 | .rd db 'Right down angle command:', 0 |
1462 | superTextSize = 25 |
1462 | superTextSize = 25 |
1463 | 1463 | ||
1464 | valueModeMenuSize = 32 |
1464 | valueModeMenuSize = 32 |
1465 | ModeMenu db 'Mode:',0 |
1465 | ModeMenu db 'Mode:',0 |
1466 | valueModeMenu0 db 'disabled ',0 |
1466 | valueModeMenu0 db 'disabled ',0 |
1467 | valueModeMenu1 db 'classic mode ',0 |
1467 | valueModeMenu1 db 'classic mode ',0 |
1468 | valueModeMenu2 db 'hot key mode ',0 |
1468 | valueModeMenu2 db 'hot key mode ',0 |
1469 | valueModeMenu3 db 'activation key gesture mode ',0 |
1469 | valueModeMenu3 db 'activation key gesture mode ',0 |
1470 | 1470 | ||
1471 | head_f_i: |
1471 | head_f_i: |
1472 | head_f_l db 'System error',0 |
1472 | head_f_l db 'System error',0 |
1473 | err_message_found_lib0 db 'Could not find library ',39,'proc_lib.obj',39,0 |
1473 | err_message_found_lib0 db 'Could not find library ',39,'proc_lib.obj',39,0 |
1474 | err_message_import0 db 'Error importing library ',39,'proc_lib.obj',39,0 |
1474 | err_message_import0 db 'Error importing library ',39,'proc_lib.obj',39,0 |
1475 | err_message_found_lib1 db 'Could not find library ',39,'kmenu.obj',39,0 |
1475 | err_message_found_lib1 db 'Could not find library ',39,'kmenu.obj',39,0 |
1476 | err_message_import1 db 'Error importing library ',39,'kmenu',39,0 |
1476 | err_message_import1 db 'Error importing library ',39,'kmenu',39,0 |
1477 | 1477 | ||
1478 | hkCaption: db 'Key:',0 |
1478 | hkCaption: db 'Key:',0 |
1479 | ;hkHint: db 'press any key',0 |
1479 | ;hkHint: db 'press any key',0 |
1480 | radiusCaption: db 'Radius:',0 |
1480 | radiusCaption: db 'Radius:',0 |
1481 | 1481 | ||
1482 | end if |
1482 | end if |
1483 | 1483 | ||
1484 | hkAlt: db 'Alt',0 |
1484 | hkAlt: db 'Alt',0 |
1485 | hkShift: db 'Shift',0 |
1485 | hkShift: db 'Shift',0 |
1486 | hkCtrl: db 'Ctrl',0 |
1486 | hkCtrl: db 'Ctrl',0 |
1487 | hkSpace: db 'Space',0 |
1487 | hkSpace: db 'Space',0 |
1488 | hkHint: db '?',0 |
1488 | hkHint: db '?',0 |
1489 | hkSize: rd 1 ;ðàçìåð ñòðîêè ñ èìåíåì êëàâèøè |
1489 | hkSize: rd 1 ;ðàçìåð ñòðîêè ñ èìåíåì êëàâèøè |
1490 | 1490 | ||
1491 | draw_super_text: |
1491 | draw_super_text: |
1492 | push eax ebx ecx edx edi esi |
1492 | push eax ebx ecx edx edi esi |
1493 | 1493 | ||
1494 | mov ecx, 0 |
1494 | mov ecx, 0 |
1495 | mov ch, byte[mysize] |
1495 | mov ch, byte[mysize] |
1496 | shl ecx, 16 |
1496 | shl ecx, 16 |
1497 | add ecx, 0x224466 |
1497 | add ecx, 0x224466 |
1498 | 1498 | ||
1499 | mcall 4, |
1499 | mcall 4, |
1500 | mcall 4, |
1500 | mcall 4, |
1501 | mcall 4, <290,74> ,,superText.ru,superTextSize |
1501 | mcall 4, <290,74> ,,superText.ru,superTextSize |
1502 | mcall 4, <290,109> ,,superText.rd,superTextSize |
1502 | mcall 4, <290,109> ,,superText.rd,superTextSize |
1503 | 1503 | ||
1504 | mov ebx, Otstup * 65536 + (buttonModeY-11) |
1504 | mov ebx, Otstup * 65536 + (buttonModeY-11) |
1505 | or ecx, 0x80000000 |
1505 | or ecx, 0x80000000 |
1506 | mov edx, ModeMenu |
1506 | mov edx, ModeMenu |
1507 | mov esi, 3 |
1507 | mov esi, 3 |
1508 | mcall 4 |
1508 | mcall 4 |
1509 | 1509 | ||
1510 | ; mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11) |
1510 | ; mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11) |
1511 | ; or ecx, 0x80000000 |
1511 | ; or ecx, 0x80000000 |
1512 | ; mov edx, hkCaption |
1512 | ; mov edx, hkCaption |
1513 | ; mov esi, 3 |
1513 | ; mov esi, 3 |
1514 | ; mcall 4 |
1514 | ; mcall 4 |
1515 | 1515 | ||
1516 | pop esi edi edx ecx ebx eax |
1516 | pop esi edi edx ecx ebx eax |
1517 | ret |
1517 | ret |
1518 | 1518 | ||
1519 | editID db 0 |
1519 | editID db 0 |
1520 | initEBX: |
1520 | initEBX: |
1521 | cmp byte[editID], 4 |
1521 | cmp byte[editID], 4 |
1522 | jne @f |
1522 | jne @f |
1523 | mov ebx, dataBuffer.1 |
1523 | mov ebx, dataBuffer.1 |
1524 | ret |
1524 | ret |
1525 | @@: |
1525 | @@: |
1526 | cmp byte[editID], 5 |
1526 | cmp byte[editID], 5 |
1527 | jne @f |
1527 | jne @f |
1528 | mov ebx, dataBuffer.2 |
1528 | mov ebx, dataBuffer.2 |
1529 | ret |
1529 | ret |
1530 | @@: |
1530 | @@: |
1531 | cmp byte[editID], 6 |
1531 | cmp byte[editID], 6 |
1532 | jne @f |
1532 | jne @f |
1533 | mov ebx, dataBuffer.3 |
1533 | mov ebx, dataBuffer.3 |
1534 | ret |
1534 | ret |
1535 | @@: |
1535 | @@: |
1536 | cmp byte[editID], 7 |
1536 | cmp byte[editID], 7 |
1537 | jne @f |
1537 | jne @f |
1538 | mov ebx, dataBuffer.4 |
1538 | mov ebx, dataBuffer.4 |
1539 | ret |
1539 | ret |
1540 | @@: |
1540 | @@: |
1541 | ret |
1541 | ret |
1542 | setRESULT: |
1542 | setRESULT: |
1543 | cmp byte[editID], 4 |
1543 | cmp byte[editID], 4 |
1544 | jne @f |
1544 | jne @f |
1545 | mov dword[dataBuffer.size1], ecx |
1545 | mov dword[dataBuffer.size1], ecx |
1546 | mov dword[editLU.size], ecx |
1546 | mov dword[editLU.size], ecx |
1547 | mov dword[editLU.pos], ecx |
1547 | mov dword[editLU.pos], ecx |
1548 | ret |
1548 | ret |
1549 | @@: |
1549 | @@: |
1550 | cmp byte[editID], 5 |
1550 | cmp byte[editID], 5 |
1551 | jne @f |
1551 | jne @f |
1552 | mov dword[dataBuffer.size2], ecx |
1552 | mov dword[dataBuffer.size2], ecx |
1553 | mov dword[editLD.size], ecx |
1553 | mov dword[editLD.size], ecx |
1554 | mov dword[editLD.pos], ecx |
1554 | mov dword[editLD.pos], ecx |
1555 | ret |
1555 | ret |
1556 | @@: |
1556 | @@: |
1557 | cmp byte[editID], 6 |
1557 | cmp byte[editID], 6 |
1558 | jne @f |
1558 | jne @f |
1559 | mov dword[dataBuffer.size3], ecx |
1559 | mov dword[dataBuffer.size3], ecx |
1560 | mov dword[editRU.size], ecx |
1560 | mov dword[editRU.size], ecx |
1561 | mov dword[editRU.pos], ecx |
1561 | mov dword[editRU.pos], ecx |
1562 | ret |
1562 | ret |
1563 | @@: |
1563 | @@: |
1564 | cmp byte[editID], 7 |
1564 | cmp byte[editID], 7 |
1565 | jne @f |
1565 | jne @f |
1566 | mov dword[dataBuffer.size4], ecx |
1566 | mov dword[dataBuffer.size4], ecx |
1567 | mov dword[editRD.size], ecx |
1567 | mov dword[editRD.size], ecx |
1568 | mov dword[editRD.pos], ecx |
1568 | mov dword[editRD.pos], ecx |
1569 | ret |
1569 | ret |
1570 | @@: |
1570 | @@: |
1571 | ret |
1571 | ret |
1572 | copyPath: |
1572 | copyPath: |
1573 | push eax ebx ecx edx ;copy file name path |
1573 | push eax ebx ecx edx ;copy file name path |
1574 | mov eax, openfile_path ;dword[OpenDialog_data.openfile_path] |
1574 | mov eax, openfile_path ;dword[OpenDialog_data.openfile_path] |
1575 | call initEBX ;mov ebx, dataBuffer.1 ;.data |
1575 | call initEBX ;mov ebx, dataBuffer.1 ;.data |
1576 | mov ecx, 0 |
1576 | mov ecx, 0 |
1577 | @@: |
1577 | @@: |
1578 | mov dl, byte[eax] |
1578 | mov dl, byte[eax] |
1579 | cmp dl, 0 ;byte[eax], 0 |
1579 | cmp dl, 0 ;byte[eax], 0 |
1580 | je @f |
1580 | je @f |
1581 | mov byte[ebx], dl |
1581 | mov byte[ebx], dl |
1582 | inc eax |
1582 | inc eax |
1583 | inc ebx |
1583 | inc ebx |
1584 | inc ecx |
1584 | inc ecx |
1585 | jmp @b |
1585 | jmp @b |
1586 | @@: |
1586 | @@: |
1587 | mov byte[ebx], 0 |
1587 | mov byte[ebx], 0 |
1588 | call setRESULT |
1588 | call setRESULT |
1589 | pop edx ecx ebx eax |
1589 | pop edx ecx ebx eax |
1590 | ret |
1590 | ret |
1591 | 1591 | ||
1592 | 1592 | ||
1593 | IntToStr: ;in esi - ñòðîêà; eñx - ÷èñëî |
1593 | IntToStr: ;in esi - ñòðîêà; eñx - ÷èñëî |
1594 | push eax ecx edx esi |
1594 | push eax ecx edx esi |
1595 | cmp ecx, 0 |
1595 | cmp ecx, 0 |
1596 | jne @f |
1596 | jne @f |
1597 | mov byte[esi], 48 ; '0' |
1597 | mov byte[esi], 48 ; '0' |
1598 | inc esi |
1598 | inc esi |
1599 | jmp .end |
1599 | jmp .end |
1600 | @@: |
1600 | @@: |
1601 | mov eax, ecx |
1601 | mov eax, ecx |
1602 | mov ecx, 10 |
1602 | mov ecx, 10 |
1603 | .next: |
1603 | .next: |
1604 | mov edx, 0 |
1604 | mov edx, 0 |
1605 | div ecx |
1605 | div ecx |
1606 | add edx, 48 |
1606 | add edx, 48 |
1607 | 1607 | ||
1608 | mov byte[esi], dl |
1608 | mov byte[esi], dl |
1609 | 1609 | ||
1610 | inc esi |
1610 | inc esi |
1611 | cmp eax, 0 |
1611 | cmp eax, 0 |
1612 | je .end |
1612 | je .end |
1613 | jmp .next |
1613 | jmp .next |
1614 | .end: |
1614 | .end: |
1615 | mov byte[esi], 0 ;êëàäÞì çàâåðøàþùèé íîëü |
1615 | mov byte[esi], 0 ;êëàäÞì çàâåðøàþùèé íîëü |
1616 | pop esi edx ecx eax |
1616 | pop esi edx ecx eax |
1617 | call reverseString ;äåëàåì ðåâåðñ ñòðîêè |
1617 | call reverseString ;äåëàåì ðåâåðñ ñòðîêè |
1618 | ret |
1618 | ret |
1619 | 1619 | ||
1620 | ;âõîä: esi - óêàçàòåëü íà ñòðîêó |
1620 | ;âõîä: esi - óêàçàòåëü íà ñòðîêó |
1621 | reverseString: |
1621 | reverseString: |
1622 | push eax esi edi |
1622 | push eax esi edi |
1623 | 1623 | ||
1624 | mov al, byte[esi] ;åñëè ñòðîêà ïóñòàß òî âûõîäèì ðåâåðñ äåëàòü íå íàäî |
1624 | mov al, byte[esi] ;åñëè ñòðîêà ïóñòàß òî âûõîäèì ðåâåðñ äåëàòü íå íàäî |
1625 | cmp al, 0 |
1625 | cmp al, 0 |
1626 | je reverseString.end |
1626 | je reverseString.end |
1627 | 1627 | ||
1628 | mov edi, esi ;èíà÷å íàéäÞì ïîçèöèþ ïîñëåäíåãî ñèìâîëà ñòðîêè è ïîëîæèì åÞ â edi |
1628 | mov edi, esi ;èíà÷å íàéäÞì ïîçèöèþ ïîñëåäíåãî ñèìâîëà ñòðîêè è ïîëîæèì åÞ â edi |
1629 | .go_last_symbol: |
1629 | .go_last_symbol: |
1630 | mov al, byte[edi+1] |
1630 | mov al, byte[edi+1] |
1631 | cmp al, 0 |
1631 | cmp al, 0 |
1632 | je @f |
1632 | je @f |
1633 | 1633 | ||
1634 | inc edi |
1634 | inc edi |
1635 | jmp reverseString.go_last_symbol |
1635 | jmp reverseString.go_last_symbol |
1636 | @@: |
1636 | @@: |
1637 | push ebx |
1637 | push ebx |
1638 | .rev: |
1638 | .rev: |
1639 | cmp esi, edi |
1639 | cmp esi, edi |
1640 | jae @f |
1640 | jae @f |
1641 | 1641 | ||
1642 | ;ìåíßåì ìåñòàìè ñèìâîëû â öèêëå |
1642 | ;ìåíßåì ìåñòàìè ñèìâîëû â öèêëå |
1643 | mov al, byte[edi] |
1643 | mov al, byte[edi] |
1644 | mov bl, byte[esi] |
1644 | mov bl, byte[esi] |
1645 | mov byte[edi], bl |
1645 | mov byte[edi], bl |
1646 | mov byte[esi], al |
1646 | mov byte[esi], al |
1647 | 1647 | ||
1648 | inc esi |
1648 | inc esi |
1649 | dec edi |
1649 | dec edi |
1650 | jmp reverseString.rev |
1650 | jmp reverseString.rev |
1651 | @@: |
1651 | @@: |
1652 | pop ebx |
1652 | pop ebx |
1653 | .end: |
1653 | .end: |
1654 | pop edi esi eax |
1654 | pop edi esi eax |
1655 | ret |
1655 | ret |
1656 | 1656 | ||
1657 | 1657 | ||
1658 | 1658 | ||
1659 | align 4 |
1659 | align 4 |
1660 | but_open_dlg: |
1660 | but_open_dlg: |
1661 | pushad |
1661 | pushad |
1662 | copy_path open_dialog_name,communication_area_default_path,file_name,0 |
1662 | copy_path open_dialog_name,communication_area_default_path,file_name,0 |
1663 | mov [OpenDialog_data.type],0 |
1663 | mov [OpenDialog_data.type],0 |
1664 | stdcall[OpenDialog_Start], OpenDialog_data |
1664 | stdcall[OpenDialog_Start], OpenDialog_data |
1665 | cmp [OpenDialog_data.status],2 |
1665 | cmp [OpenDialog_data.status],2 |
1666 | je @f |
1666 | je @f |
1667 | cmp [OpenDialog_data.status],0 ;ïîëüçîâàòåëü íàæàë Cancel? |
1667 | cmp [OpenDialog_data.status],0 ;ïîëüçîâàòåëü íàæàë Cancel? |
1668 | je .end_open |
1668 | je .end_open |
1669 | ;êîä ïðè óäà÷íîì îòêðûòèè äèàëîãà |
1669 | ;êîä ïðè óäà÷íîì îòêðûòèè äèàëîãà |
1670 | call copyPath |
1670 | call copyPath |
1671 | jmp .end_open |
1671 | jmp .end_open |
1672 | @@: |
1672 | @@: |
1673 | ;êîä ïðè íå óäà÷íîì îòêðûòèè äèàëîãà |
1673 | ;êîä ïðè íå óäà÷íîì îòêðûòèè äèàëîãà |
1674 | ;... |
1674 | ;... |
1675 | .end_open: |
1675 | .end_open: |
1676 | popad |
1676 | popad |
1677 | ret |
1677 | ret |
1678 | 1678 | ||
1679 | ;äàííûå äëß äèàëîãà îòêðûòèß ôàéëîâ |
1679 | ;äàííûå äëß äèàëîãà îòêðûòèß ôàéëîâ |
1680 | align 4 |
1680 | align 4 |
1681 | OpenDialog_data: |
1681 | OpenDialog_data: |
1682 | .type dd 0 ;0 - îòêðûòü, 1 - ñîõðàíèòü, 2 - âûáðàòü äèðåêòîðèþ |
1682 | .type dd 0 ;0 - îòêðûòü, 1 - ñîõðàíèòü, 2 - âûáðàòü äèðåêòîðèþ |
1683 | .procinfo dd procinfo |
1683 | .procinfo dd procinfo |
1684 | .com_area_name dd communication_area_name ;+8 |
1684 | .com_area_name dd communication_area_name ;+8 |
1685 | .com_area dd 0 ;+12 |
1685 | .com_area dd 0 ;+12 |
1686 | .opendir_path dd plugin_path ;+16 |
1686 | .opendir_path dd plugin_path ;+16 |
1687 | .dir_default_path dd default_dir ;+20 |
1687 | .dir_default_path dd default_dir ;+20 |
1688 | .start_path dd file_name ;+24 ïóòü ê äèàëîãó îòêðûòèß ôàéëîâ |
1688 | .start_path dd file_name ;+24 ïóòü ê äèàëîãó îòêðûòèß ôàéëîâ |
1689 | .draw_window dd draw_window ;+28 |
1689 | .draw_window dd draw_window ;+28 |
1690 | .status dd 0 ;+32 |
1690 | .status dd 0 ;+32 |
1691 | .openfile_path dd openfile_path ;+36 ïóòü ê îòêðûâàåìîìó ôàéëó |
1691 | .openfile_path dd openfile_path ;+36 ïóòü ê îòêðûâàåìîìó ôàéëó |
1692 | .filename_area dd filename_area ;+40 |
1692 | .filename_area dd filename_area ;+40 |
1693 | .filter_area dd Filter |
1693 | .filter_area dd Filter |
1694 | .x: |
1694 | .x: |
1695 | .x_size dw 420 ;+48 ; Window X size |
1695 | .x_size dw 420 ;+48 ; Window X size |
1696 | .x_start dw 10 ;+50 ; Window X position |
1696 | .x_start dw 10 ;+50 ; Window X position |
1697 | .y: |
1697 | .y: |
1698 | .y_size dw 320 ;+52 ; Window y size |
1698 | .y_size dw 320 ;+52 ; Window y size |
1699 | .y_start dw 10 ;+54 ; Window Y position |
1699 | .y_start dw 10 ;+54 ; Window Y position |
1700 | 1700 | ||
1701 | default_dir db '/rd/1',0 ;äèðåêòîðèß ïî óìîë÷àíèþ |
1701 | default_dir db '/rd/1',0 ;äèðåêòîðèß ïî óìîë÷àíèþ |
1702 | communication_area_name: db 'FFFFFFFF_open_dialog',0 |
1702 | communication_area_name: db 'FFFFFFFF_open_dialog',0 |
1703 | open_dialog_name: db 'opendial',0 |
1703 | open_dialog_name: db 'opendial',0 |
1704 | communication_area_default_path: db '/rd/1/File managers/',0 |
1704 | communication_area_default_path: db '/rd/1/File managers/',0 |
1705 | 1705 | ||
1706 | Filter: |
1706 | Filter: |
1707 | dd Filter.end - Filter.1 |
1707 | dd Filter.end - Filter.1 |
1708 | .1: |
1708 | .1: |
1709 | ;db 'KEX',0 |
1709 | ;db 'KEX',0 |
1710 | .end: |
1710 | .end: |
1711 | db 0 |
1711 | db 0 |
1712 | 1712 | ||
1713 | mode db 49 ;'1' |
1713 | mode db 49 ;'1' |
1714 | modeMenu dd 0 |
1714 | modeMenu dd 0 |
1715 | coordModeMenu: |
1715 | coordModeMenu: |
1716 | .x dw 100 |
1716 | .x dw 100 |
1717 | .y dw 200 |
1717 | .y dw 200 |
1718 | 1718 | ||
1719 | 1719 | ||
1720 | align 4 |
1720 | align 4 |
1721 | proclib_import: ;îïèñàíèå ýêñïîðòèðóåìûõ ôóíêöèé |
1721 | proclib_import: ;îïèñàíèå ýêñïîðòèðóåìûõ ôóíêöèé |
1722 | OpenDialog_Init dd aOpenDialog_Init |
1722 | OpenDialog_Init dd aOpenDialog_Init |
1723 | OpenDialog_Start dd aOpenDialog_Start |
1723 | OpenDialog_Start dd aOpenDialog_Start |
1724 | dd 0,0 |
1724 | dd 0,0 |
1725 | aOpenDialog_Init db 'OpenDialog_init',0 |
1725 | aOpenDialog_Init db 'OpenDialog_init',0 |
1726 | aOpenDialog_Start db 'OpenDialog_start',0 |
1726 | aOpenDialog_Start db 'OpenDialog_start',0 |
1727 | 1727 | ||
1728 | system_dir0 db '/sys/lib/' |
1728 | system_dir0 db '/sys/lib/' |
1729 | lib0_name db 'proc_lib.obj',0 |
1729 | lib0_name db 'proc_lib.obj',0 |
1730 | lib1_name db 'kmenu.obj',0 |
1730 | lib1_name db 'kmenu.obj',0 |
1731 | 1731 | ||
1732 | symbolDownArrow db 25,0 |
1732 | symbolDownArrow db 25,0 |
1733 | 1733 | ||
1734 | ;library structures |
1734 | ;library structures |
1735 | l_libs_start: |
1735 | l_libs_start: |
1736 | lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, proclib_import,err_message_import0, head_f_i |
1736 | lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, proclib_import,err_message_import0, head_f_i |
1737 | lib1 l_libs lib1_name, sys_path, file_name, system_dir0, err_message_found_lib1, head_f_l, import_libkmenu,err_message_import1,head_f_i |
1737 | lib1 l_libs lib1_name, sys_path, file_name, system_dir0, err_message_found_lib1, head_f_l, import_libkmenu,err_message_import1,head_f_i |
1738 | load_lib_end: |
1738 | load_lib_end: |
1739 | 1739 | ||
1740 | 1740 | ||
1741 | edMaxSize = 510 ;òåïåðü ñ íîâûì êîìïîíåíòîì ìîæíî è 511 óêàçàòü |
1741 | edMaxSize = 510 ;òåïåðü ñ íîâûì êîìïîíåíòîì ìîæíî è 511 óêàçàòü |
1742 | edMax = 0 ;max, size, pos |
1742 | edMax = 0 ;max, size, pos |
1743 | 1743 | ||
1744 | align 4 |
1744 | align 4 |
1745 | editLU edit_box 230-buttonW,Otstup+buttonW,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax ;ed_focus |
1745 | editLU edit_box 230-buttonW,Otstup+buttonW,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax ;ed_focus |
1746 | editLD edit_box 230-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax |
1746 | editLD edit_box 230-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax |
1747 | editRU edit_box 230-buttonW,290,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax |
1747 | editRU edit_box 230-buttonW,290,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax |
1748 | editRD edit_box 230-buttonW,290,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax |
1748 | editRD edit_box 230-buttonW,290,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax |
1749 | editRadius edit_box 40,(buttonHotKeyX + buttonHotKeyWidth + 20),buttonModeY, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, 4, radiusBuffer.data, mouse_dd, ed_figure_only, edMax, edMax |
1749 | editRadius edit_box 40,(buttonHotKeyX + buttonHotKeyWidth + 20),buttonModeY, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0x10000000, 4, radiusBuffer.data, mouse_dd, ed_figure_only, edMax, edMax |
1750 | 1750 | ||
1751 | align 4 |
1751 | align 4 |
1752 | import_libkmenu: |
1752 | import_libkmenu: |
1753 | kmenu_init dd akmenu_init |
1753 | kmenu_init dd akmenu_init |
1754 | kmainmenu_draw dd akmainmenu_draw |
1754 | kmainmenu_draw dd akmainmenu_draw |
1755 | kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent |
1755 | kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent |
1756 | ksubmenu_new dd aksubmenu_new |
1756 | ksubmenu_new dd aksubmenu_new |
1757 | ksubmenu_delete dd aksubmenu_delete |
1757 | ksubmenu_delete dd aksubmenu_delete |
1758 | ksubmenu_draw dd aksubmenu_draw |
1758 | ksubmenu_draw dd aksubmenu_draw |
1759 | ksubmenu_add dd aksubmenu_add |
1759 | ksubmenu_add dd aksubmenu_add |
1760 | kmenuitem_new dd akmenuitem_new |
1760 | kmenuitem_new dd akmenuitem_new |
1761 | kmenuitem_delete dd akmenuitem_delete |
1761 | kmenuitem_delete dd akmenuitem_delete |
1762 | kmenuitem_draw dd akmenuitem_draw |
1762 | kmenuitem_draw dd akmenuitem_draw |
1763 | dd 0,0 |
1763 | dd 0,0 |
1764 | akmenu_init db 'kmenu_init',0 |
1764 | akmenu_init db 'kmenu_init',0 |
1765 | akmainmenu_draw db 'kmainmenu_draw',0 |
1765 | akmainmenu_draw db 'kmainmenu_draw',0 |
1766 | akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0 |
1766 | akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0 |
1767 | aksubmenu_new db 'ksubmenu_new',0 |
1767 | aksubmenu_new db 'ksubmenu_new',0 |
1768 | aksubmenu_delete db 'ksubmenu_delete',0 |
1768 | aksubmenu_delete db 'ksubmenu_delete',0 |
1769 | aksubmenu_draw db 'ksubmenu_draw',0 |
1769 | aksubmenu_draw db 'ksubmenu_draw',0 |
1770 | aksubmenu_add db 'ksubmenu_add',0 |
1770 | aksubmenu_add db 'ksubmenu_add',0 |
1771 | akmenuitem_new db 'kmenuitem_new',0 |
1771 | akmenuitem_new db 'kmenuitem_new',0 |
1772 | akmenuitem_delete db 'kmenuitem_delete',0 |
1772 | akmenuitem_delete db 'kmenuitem_delete',0 |
1773 | akmenuitem_draw db 'kmenuitem_draw',0 |
1773 | akmenuitem_draw db 'kmenuitem_draw',0 |
1774 | 1774 | ||
1775 | sc system_colors |
1775 | sc system_colors |
1776 | mouse_dd rd 1 |
1776 | mouse_dd rd 1 |
1777 | 1777 | ||
1778 | sizeStyle: rb 1 ;ðàçìåð òåêñòà è îñòàëüíûõ ýëåìåíòîâ îêíà |
1778 | sizeStyle: rb 1 ;ðàçìåð òåêñòà è îñòàëüíûõ ýëåìåíòîâ îêíà |
1779 | mysize: rb 1 ;rd 1 |
1779 | mysize: rb 1 ;rd 1 |
1780 | radiusBuffer: ;áóôåð äëß ïîëß ðàäèóñà æåñòà |
1780 | radiusBuffer: ;áóôåð äëß ïîëß ðàäèóñà æåñòà |
1781 | .data: rb 6 |
1781 | .data: rb 6 |
1782 | .size: rd 1 |
1782 | .size: rd 1 |
1783 | radiusBufferEnd: |
1783 | radiusBufferEnd: |
1784 | 1784 | ||
1785 | button_press rd 0 ;for kmenu |
1785 | button_press rd 0 ;for kmenu |
1786 | 1786 | ||
1787 | sys_path: rb 4096 |
1787 | sys_path: rb 4096 |
1788 | file_name: rb 4096 |
1788 | file_name: rb 4096 |
1789 | plugin_path: rb 4096 |
1789 | plugin_path: rb 4096 |
1790 | openfile_path: rb 4096 |
1790 | openfile_path: rb 4096 |
1791 | filename_area: rb 256 |
1791 | filename_area: rb 256 |
1792 | rb 1024 |
1792 | rb 1024 |
1793 | procinfo process_information |
1793 | procinfo process_information |
1794 | pi rb 1024 |
1794 | pi rb 1024 |
1795 | 1795 | ||
1796 | keyscan: rb 1 |
1796 | keyscan: rb 1 |
1797 | keystr: |
1797 | keystr: |
1798 | .data: rb 4 ;ñòðîêà ñî çíà÷åíèåì ñêàíêîäà àêòèâàöèîííîé êëàâèøè |
1798 | .data: rb 4 ;ñòðîêà ñî çíà÷åíèåì ñêàíêîäà àêòèâàöèîííîé êëàâèøè |
1799 | .size: rd 1 ;ðàçìåð ñîäåðæèìîãî ñòðîêè áåç ïîñëåäíåãî íóëß |
1799 | .size: rd 1 ;ðàçìåð ñîäåðæèìîãî ñòðîêè áåç ïîñëåäíåãî íóëß |
1800 | 1800 | ||
1801 | dataBuffer: |
1801 | dataBuffer: |
1802 | .1: rb 512 |
1802 | .1: rb 512 |
1803 | .2: rb 512 |
1803 | .2: rb 512 |
1804 | .3: rb 512 |
1804 | .3: rb 512 |
1805 | .4: rb 512 |
1805 | .4: rb 512 |
1806 | .size1: rd 1 |
1806 | .size1: rd 1 |
1807 | .size2: rd 1 |
1807 | .size2: rd 1 |
1808 | .size3: rd 1 |
1808 | .size3: rd 1 |
1809 | .size4: rd 1 |
1809 | .size4: rd 1 |
1810 | ;255+255+2 = 512 |
1810 | ;255+255+2 = 512 |
1811 | ;äâà çàïàñíûõ áàéòà íåîáõîäèìû äëß òîãî ÷òî áû íå ïåïåðåïèñàòü ñëåäóþùèåé áàéòû, â êîíöå áóôåðà 0 |
1811 | ;äâà çàïàñíûõ áàéòà íåîáõîäèìû äëß òîãî ÷òî áû íå ïåïåðåïèñàòü ñëåäóþùèåé áàéòû, â êîíöå áóôåðà 0 |
1812 | dataBufferEnd: |
1812 | dataBufferEnd: |
1813 | 1813 | ||
1814 | 1814 | ||
1815 | I_END: |
1815 | I_END: |
1816 | rb 4096 |
1816 | rb 4096 |
1817 | align 16 |
1817 | align 16 |
1818 | STACKTOP: |
1818 | STACKTOP: |
1819 | 1819 | ||
1820 | MEM:290,109>290,74>120,buttonH>85,buttonH>120,buttonH>85,buttonH> |
1820 | MEM:290,109>290,74>120,buttonH>85,buttonH>120,buttonH>85,buttonH> |