Rev 7436 | Rev 7448 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7436 | Rev 7443 | ||
---|---|---|---|
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
4 | ; Compile with FASM |
4 | ; Compile with FASM |
5 | ; Version 0.3.5: Oct 5, 2018 |
5 | ; Version 0.3.6: Oct 9, 2018 |
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 | ;![ |
- | |
49 | include '../../develop/libraries/box_lib/load_lib.mac' ;ìàêðîñ äëÿ çàãðóçêè áèáëèîòåê |
48 | include '../../develop/libraries/box_lib/load_lib.mac' ;ìàêðîñ äëÿ çàãðóçêè áèáëèîòåê |
50 | @use_library |
49 | @use_library |
- | 50 | ||
- | 51 | KMENUITEM_NORMAL equ 0 |
|
- | 52 | KMENUITEM_SUBMENU equ 1 |
|
51 | ;@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
53 | KMENUITEM_SEPARATOR equ 2 |
52 | ;!] |
54 | |
53 | Otstup = 30 |
55 | Otstup = 30 |
54 | 56 | ||
55 | START: |
57 | START: |
56 | call copyKill ;ïðîñòåéøàÿ çàùèòà îò çàïóñêà âòîðîé êîïèè ïðèëîæåíèÿ |
58 | call copyKill ;ïðîñòåéøàÿ çàùèòà îò çàïóñêà âòîðîé êîïèè ïðèëîæåíèÿ |
57 | mcall 68, 11 ;èíèöèàëèçàöèÿ êó÷è |
59 | mcall 68, 11 ;èíèöèàëèçàöèÿ êó÷è |
58 | 60 | ||
59 | ;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà |
61 | ;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà |
60 | mov eax,48 ;ïîëó÷èòü ñèñòåìíûå öâåòà |
62 | mov eax,48 ;ïîëó÷èòü ñèñòåìíûå öâåòà |
61 | mov ebx,3 |
63 | mov ebx,3 |
62 | mov ecx, sc |
64 | mov ecx, sc |
63 | mov edx, sizeof.system_colors |
65 | mov edx, sizeof.system_colors |
64 | mcall |
66 | mcall |
65 | 67 | ||
66 | stdcall dll.Load, @IMPORT |
68 | stdcall dll.Load, @IMPORT |
67 | or eax, eax |
69 | or eax, eax |
68 | jnz exit |
70 | jnz exit |
69 | 71 | ||
70 | invoke init_checkbox, ch1 |
72 | ;invoke init_checkbox, ch1 |
71 | 73 | ||
72 | mov eax,40 ;óñòàíîâèòü ìàñêó äëÿ îæèäàåìûõ ñîáûòèé |
74 | mov eax,40 ;óñòàíîâèòü ìàñêó äëÿ îæèäàåìûõ ñîáûòèé |
73 | mov ebx,0x27 ;ñèñòåìà áóäåò ðåàãèðîâàòü òîëüêî íà ñîîáùåíèå î ïåðåðèñîâêå, íàæàòà êíîïêà, îïðåäåë¸ííàÿ ðàíåå, ñîáûòèå îò ìûøè (÷òî-òî ñëó÷èëîñü - íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñÿ ïðè ïðî÷òåíèè) |
75 | mov ebx,0x27 ;ñèñòåìà áóäåò ðåàãèðîâàòü òîëüêî íà ñîîáùåíèå î ïåðåðèñîâêå, íàæàòà êíîïêà, îïðåäåë¸ííàÿ ðàíåå, ñîáûòèå îò ìûøè (÷òî-òî ñëó÷èëîñü - íàæàòèå íà êíîïêó ìûøè èëè ïåðåìåùåíèå; ñáðàñûâàåòñÿ ïðè ïðî÷òåíèè) |
74 | mcall |
76 | mcall |
75 | 77 | ||
76 | load_libraries l_libs_start,load_lib_end ;çàãðóçêà áèáëèîòåê(è) |
78 | load_libraries l_libs_start,load_lib_end ;çàãðóçêà áèáëèîòåê(è) |
77 | ;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà |
79 | ;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà |
78 | stdcall [OpenDialog_Init],OpenDialog_data ;ïîäãîòîâêà äèàëîãà |
80 | stdcall [OpenDialog_Init],OpenDialog_data ;ïîäãîòîâêà äèàëîãà |
- | 81 | ||
- | 82 | ;mode menu |
|
- | 83 | stdcall [kmenu_init], sc ;kmenu initialisation |
|
- | 84 | stdcall [ksubmenu_new] |
|
- | 85 | mov [modeMenu], eax |
|
- | 86 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu0, 110 |
|
- | 87 | stdcall [ksubmenu_add], [modeMenu], eax |
|
- | 88 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu1, 111 |
|
- | 89 | stdcall [ksubmenu_add], [modeMenu], eax |
|
- | 90 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu2, 112 |
|
- | 91 | stdcall [ksubmenu_add], [modeMenu], eax |
|
- | 92 | stdcall [kmenuitem_new], KMENUITEM_NORMAL, valueModeMenu3, 113 |
|
- | 93 | stdcall [ksubmenu_add], [modeMenu], eax |
|
- | 94 | stdcall [kmenuitem_new], KMENUITEM_SUBMENU, valueModeMenu1, [modeMenu] |
|
79 | 95 | ||
80 | call loadConfig ;çàãðóæàåì êîíôèãóðàöèþ èç ôàéëà, åñëè íåò - òî âûñòàâëÿåì ïàðàìåòðû ïî óìîë÷àíèþ |
96 | call loadConfig ;çàãðóæàåì êîíôèãóðàöèþ èç ôàéëà, åñëè íåò - òî âûñòàâëÿåì ïàðàìåòðû ïî óìîë÷àíèþ |
81 | call draw_window ;îòðèñîâàòü îêíî ïðèëîæåíèÿ |
97 | call draw_window ;îòðèñîâàòü îêíî ïðèëîæåíèÿ |
82 | 98 | ||
83 | ; Îáðàáîòêà öèêëà ñîáûòèé |
99 | ; Îáðàáîòêà öèêëà ñîáûòèé |
84 | event_wait: |
100 | event_wait: |
85 | mov eax, 10 ; function 10 : wait until event |
101 | mov eax, 10 ; function 10 : wait until event |
86 | mcall ; event type is returned in eax |
102 | mcall ; event type is returned in eax |
87 | 103 | ||
88 | cmp eax, 1 ; Event redraw request ? |
104 | cmp eax, 1 ; Event redraw request ? |
89 | je red ; Expl.: there has been activity on screen and |
105 | je red ; Expl.: there has been activity on screen and |
90 | ; parts of the applications has to be redrawn. |
106 | ; parts of the applications has to be redrawn. |
91 | 107 | ||
92 | cmp eax, 2 ; Event key in buffer ? |
108 | cmp eax, 2 ; Event key in buffer ? |
93 | je key ; Expl.: User has pressed a key while the |
109 | je key ; Expl.: User has pressed a key while the |
94 | ; app is at the top of the window stack. |
110 | ; app is at the top of the window stack. |
95 | 111 | ||
96 | cmp eax, 3 ; Event button in buffer ? |
112 | cmp eax, 3 ; Event button in buffer ? |
97 | je button ; Expl.: User has pressed one of the |
113 | je button ; Expl.: User has pressed one of the |
98 | ; applications buttons. |
114 | ; applications buttons. |
99 | 115 | ||
100 | invoke edit_box_mouse, editLU ;ïðîâåðêà ñîáûòèé ìûøè äëÿ editBox'îâ |
116 | invoke edit_box_mouse, editLU ;ïðîâåðêà ñîáûòèé ìûøè äëÿ editBox'îâ |
101 | invoke edit_box_mouse, editLD |
117 | invoke edit_box_mouse, editLD |
102 | invoke edit_box_mouse, editRU |
118 | invoke edit_box_mouse, editRU |
103 | invoke edit_box_mouse, editRD |
119 | invoke edit_box_mouse, editRD |
104 | invoke check_box_mouse, ch1 ;ïðîâåðêà ÷åê áîêñà |
120 | ;invoke check_box_mouse, ch1 ;ïðîâåðêà ÷åê áîêñà |
- | 121 | ;stdcall [kmainmenu_dispatch_cursorevent], [modeMenu] ;ïðîâåðêà ìûøè äëÿ êîìáîáîêñà |
|
105 | 122 | ||
106 | jmp event_wait |
123 | jmp event_wait |
107 | 124 | ||
108 | 125 | ||
109 | red: ;îáðàáîòêà ñîáûòèÿ ïåðåðèñîâêè îêíà |
126 | red: ;îáðàáîòêà ñîáûòèÿ ïåðåðèñîâêè îêíà |
110 | call draw_window |
127 | call draw_window |
111 | jmp event_wait |
128 | jmp event_wait |
112 | 129 | ||
113 | key: ; Keypress event handler |
130 | key: ; Keypress event handler |
114 | mov eax, 2 ; The key is returned in ah. The key must be |
131 | mov eax, 2 ; The key is returned in ah. The key must be |
115 | mcall ; read and cleared from the system queue. |
132 | mcall ; read and cleared from the system queue. |
116 | 133 | ||
117 | invoke edit_box_key, editLU |
134 | invoke edit_box_key, editLU |
118 | invoke edit_box_key, editLD |
135 | invoke edit_box_key, editLD |
119 | invoke edit_box_key, editRU |
136 | invoke edit_box_key, editRU |
120 | invoke edit_box_key, editRD |
137 | invoke edit_box_key, editRD |
121 | jmp event_wait ; Just read the key, ignore it and jump to event_wait. |
138 | jmp event_wait ; Just read the key, ignore it and jump to event_wait. |
122 | 139 | ||
123 | button: ; Buttonpress event handler |
140 | button: ; Buttonpress event handler |
124 | mov eax,17 ; The button number defined in window_draw |
141 | mov eax,17 ; The button number defined in window_draw |
125 | mcall ; is returned to ah. |
142 | mcall ; is returned to ah. |
126 | 143 | ||
127 | cmp ah,1 ; button id=1 ? |
144 | cmp ah,1 ; button id=1 ? |
128 | jne noclose |
145 | jne noclose |
129 | exit: |
146 | exit: |
130 | mov eax,-1 ; Function -1 : close this program |
147 | mov eax,-1 ; Function -1 : close this program |
131 | mcall |
148 | mcall |
132 | noclose: |
149 | noclose: |
133 | cmp ah, 2 ;êíîïêà "Ïðèìåíèòü" |
150 | cmp ah, 2 ;êíîïêà "Ïðèìåíèòü" |
134 | jne @f ;butend |
151 | jne @f ;butend |
135 | call applyButton ;âûçîâ íàøåãî îáðàáîò÷èêà íàæàòèÿ êíîïêè |
152 | call applyButton ;âûçîâ íàøåãî îáðàáîò÷èêà íàæàòèÿ êíîïêè |
136 | jmp event_wait |
153 | jmp event_wait |
137 | @@: |
154 | @@: |
138 | cmp ah, 4 |
155 | cmp ah, 4 |
139 | jne @f |
156 | jne @f |
140 | mov byte[editID], 4 |
157 | mov byte[editID], 4 |
141 | call but_open_dlg |
158 | call but_open_dlg |
142 | jmp event_wait |
159 | jmp event_wait |
143 | @@: |
160 | @@: |
144 | cmp ah, 5 |
161 | cmp ah, 5 |
145 | jne @f |
162 | jne @f |
146 | mov byte[editID], 5 |
163 | mov byte[editID], 5 |
147 | call but_open_dlg |
164 | call but_open_dlg |
148 | jmp event_wait |
165 | jmp event_wait |
149 | @@: |
166 | @@: |
150 | cmp ah, 6 |
167 | cmp ah, 6 |
151 | jne @f |
168 | jne @f |
152 | mov byte[editID], 6 |
169 | mov byte[editID], 6 |
153 | call but_open_dlg |
170 | call but_open_dlg |
154 | jmp event_wait |
171 | jmp event_wait |
155 | @@: |
172 | @@: |
156 | cmp ah, 7 |
173 | cmp ah, 7 |
157 | jne @f |
174 | jne @f |
158 | mov byte[editID], 7 |
175 | mov byte[editID], 7 |
159 | call but_open_dlg |
176 | call but_open_dlg |
160 | jmp event_wait |
177 | jmp event_wait |
161 | @@: |
178 | @@: |
- | 179 | cmp ah, 8 |
|
- | 180 | jne @f |
|
- | 181 | push eax ebx ecx |
|
- | 182 | mcall 9, pi, -1 ;get window coord |
|
- | 183 | ||
- | 184 | mov eax, dword[pi+34] |
|
- | 185 | add eax, buttonModeX ;+ 5 |
|
- | 186 | mov word[coordModeMenu.x], ax |
|
- | 187 | ||
- | 188 | mov eax, dword[pi+38] |
|
- | 189 | add eax, buttonModeY + 17 ;20 ;42 |
|
- | 190 | mov word[coordModeMenu.y], ax |
|
- | 191 | ||
- | 192 | stdcall [ksubmenu_draw], [modeMenu], coordModeMenu |
|
- | 193 | pop ecx ebx eax |
|
- | 194 | jmp event_wait |
|
- | 195 | @@: |
|
- | 196 | cmp ah, 110 |
|
- | 197 | jne @f |
|
- | 198 | mov byte[mode], 48 ;'0' |
|
- | 199 | jmp event_wait |
|
- | 200 | @@: |
|
- | 201 | cmp ah, 111 |
|
- | 202 | jne @f |
|
- | 203 | mov byte[mode], 49 ;'1' |
|
- | 204 | jmp event_wait |
|
- | 205 | @@: |
|
- | 206 | cmp ah, 112 |
|
- | 207 | jne @f |
|
- | 208 | mov byte[mode], 50 ;'2' |
|
- | 209 | jmp event_wait |
|
- | 210 | @@: |
|
- | 211 | cmp ah, 113 |
|
- | 212 | jne @f |
|
- | 213 | mov byte[mode], 51 ;'3' |
|
- | 214 | jmp event_wait |
|
- | 215 | @@: |
|
162 | butend: |
216 | butend: |
163 | jmp event_wait ;this is for ignored events, useful at development |
217 | jmp event_wait ;this is for ignored events, useful at development |
164 | 218 | ||
165 | 219 | ||
166 | 220 | ||
167 | ;èìÿ êîíôèãóðàöèîííîãî ôàéëà |
221 | ;èìÿ êîíôèãóðàöèîííîãî ôàéëà |
168 | fileName: db 'SETTINGS/HOTANGLES.CFG', 0 |
222 | fileName: db 'SETTINGS/HOTANGLES.CFG', 0 |
169 | 223 | ||
170 | ;ñòðóêòóðà äëÿ ñîçäàíèÿ/ïåðåçàïèñè ôàéëà |
224 | ;ñòðóêòóðà äëÿ ñîçäàíèÿ/ïåðåçàïèñè ôàéëà |
171 | createFile: |
225 | createFile: |
172 | .func dd 2 ;íîìåð ïîäôóíêöèè |
226 | .func dd 2 ;íîìåð ïîäôóíêöèè |
173 | .re dd 0, 0 ;çàðåçåðâèðîâàíî |
227 | .re dd 0, 0 ;çàðåçåðâèðîâàíî |
174 | .size dd 0 ;ñêîëüêî áàéò ïèñàòü |
228 | .size dd 0 ;ñêîëüêî áàéò ïèñàòü |
175 | .data_adr dd 0 ;óêàçàòåëü íà äàííûå |
229 | .data_adr dd 0 ;óêàçàòåëü íà äàííûå |
176 | .path db 0 |
230 | .path db 0 |
177 | .path_adr dd fileName ;ïóòü |
231 | .path_adr dd fileName ;ïóòü |
178 | 232 | ||
179 | ;ñòðîêà ïàðàìåòðîâ ïî óìîë÷àíèþ è å¸ ðàçìåð |
233 | ;ñòðîêà ïàðàìåòðîâ ïî óìîë÷àíèþ è å¸ ðàçìåð |
180 | 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 |
234 | 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 |
181 | defaultDataSize = 48+19 |
235 | defaultDataSize = 48+19 |
182 | 236 | ||
183 | 237 | ||
184 | copyParam: ;êîïèðóåò ïàðàìåòð(êîìàíäó çàïóñêà) â áóôåð (ñì. äàëüøå) |
238 | copyParam: ;êîïèðóåò ïàðàìåòð(êîìàíäó çàïóñêà) â áóôåð (ñì. äàëüøå) |
185 | push esi ebx ecx |
239 | push esi ebx ecx |
186 | mov ecx, dword[ebx] ;÷èòàåì ðàçìåð ñòðîêè |
240 | mov ecx, dword[ebx] ;÷èòàåì ðàçìåð ñòðîêè |
187 | 241 | ||
188 | cmp ecx, 0 ;ïóñòà ëè ñòðîêà? |
242 | cmp ecx, 0 ;ïóñòà ëè ñòðîêà? |
189 | jne copyParam.copy ;åñëè íåò, òî ïåðåõîäèì ê êîïèðîâàíèþ ñîäåðæèìîãî ñòðîêè (ê öèêëó) |
243 | jne copyParam.copy ;åñëè íåò, òî ïåðåõîäèì ê êîïèðîâàíèþ ñîäåðæèìîãî ñòðîêè (ê öèêëó) |
190 | 244 | ||
191 | mov byte[eax], '-' ;åñëè æå ïóñòî, òî çàìåíÿåì ñèìâîëîì ìèíóñ '-' |
245 | mov byte[eax], '-' ;åñëè æå ïóñòî, òî çàìåíÿåì ñèìâîëîì ìèíóñ '-' |
192 | inc eax |
246 | inc eax |
193 | ;jmp copyParam.copyEnd ;è âûõîäèì |
247 | ;jmp copyParam.copyEnd ;è âûõîäèì |
194 | ;äàëåå â íà÷àëå öèêëà ïðîèçîéä¸ò ñðàâíåíèå è âûõîä |
248 | ;äàëåå â íà÷àëå öèêëà ïðîèçîéä¸ò ñðàâíåíèå è âûõîä |
195 | 249 | ||
196 | .copy: ;êîïèðóåì ñèìâîëû |
250 | .copy: ;êîïèðóåì ñèìâîëû |
197 | cmp ecx, 0 |
251 | cmp ecx, 0 |
198 | je copyParam.copyEnd |
252 | je copyParam.copyEnd |
199 | mov bl, byte[esi] |
253 | mov bl, byte[esi] |
200 | mov byte[eax], bl |
254 | mov byte[eax], bl |
201 | dec ecx |
255 | dec ecx |
202 | inc eax |
256 | inc eax |
203 | inc esi |
257 | inc esi |
204 | jmp copyParam.copy |
258 | jmp copyParam.copy |
205 | .copyEnd: |
259 | .copyEnd: |
206 | pop ecx ebx esi |
260 | pop ecx ebx esi |
207 | ret |
261 | ret |
208 | 262 | ||
209 | 263 | ||
210 | addPerenos: ;äîáàâëÿåò ïåðåíîñ ñòðîêè â áóôåð |
264 | addPerenos: ;äîáàâëÿåò ïåðåíîñ ñòðîêè â áóôåð |
211 | mov byte[eax], 13 |
265 | mov byte[eax], 13 |
212 | inc eax |
266 | inc eax |
213 | mov byte[eax], 10 |
267 | mov byte[eax], 10 |
214 | inc eax |
268 | inc eax |
215 | ret |
269 | ret |
216 | 270 | ||
217 | ;îáðàáîò÷èê êíîïêè "Ïðèìåíèòü" |
271 | ;îáðàáîò÷èê êíîïêè "Ïðèìåíèòü" |
218 | applyButton: |
272 | applyButton: |
219 | push eax ebx ecx |
273 | push eax ebx ecx |
220 | ;mov dword[createFile.data_adr], defaultDataForConfig |
274 | ;mov dword[createFile.data_adr], defaultDataForConfig |
221 | ;mov dword[createFile.size], defaultDataSize |
275 | ;mov dword[createFile.size], defaultDataSize |
222 | 276 | ||
223 | ;âû÷èñëèì ðàçìåð ôàéëà êîíôèãóðàöèè â áàéòàõ |
277 | ;âû÷èñëèì ðàçìåð ôàéëà êîíôèãóðàöèè â áàéòàõ |
224 | mov ecx, 5*2+1 ;1 áàéò íà ñîñòîÿíèå àêòèâíîñòè è 5 ïàð ïåðåíîñîâ ñòðîê (ñèìâîëû 13, 10) |
278 | mov ecx, 5*2+1 ;1 áàéò íà ñîñòîÿíèå àêòèâíîñòè è 5 ïàð ïåðåíîñîâ ñòðîê (ñèìâîëû 13, 10) |
225 | add ecx, dword[editLU.size] ;ïëþñ ðàçìåð êàæäîé ñòðîêè â áàéòàõ |
279 | add ecx, dword[editLU.size] ;ïëþñ ðàçìåð êàæäîé ñòðîêè â áàéòàõ |
226 | add ecx, dword[editLD.size] |
280 | add ecx, dword[editLD.size] |
227 | add ecx, dword[editRU.size] |
281 | add ecx, dword[editRU.size] |
228 | add ecx, dword[editRD.size] ;dataBuffer.size4] |
282 | add ecx, dword[editRD.size] ;dataBuffer.size4] |
229 | 283 | ||
230 | ;åñëè çàäàíû ïóñòûå ñòðîêè, òî ìû àâòîìàòè÷åñêè äîáàâëÿåì çíàê ìèíóñ, çíà÷èò ðàçìåð +1 áàéò |
284 | ;åñëè çàäàíû ïóñòûå ñòðîêè, òî ìû àâòîìàòè÷åñêè äîáàâëÿåì çíàê ìèíóñ, çíà÷èò ðàçìåð +1 áàéò |
231 | cmp dword[editLU.size], 0 |
285 | cmp dword[editLU.size], 0 |
232 | jne @f |
286 | jne @f |
233 | inc ecx |
287 | inc ecx |
234 | @@: |
288 | @@: |
235 | cmp dword[editLD.size], 0 |
289 | cmp dword[editLD.size], 0 |
236 | jne @f |
290 | jne @f |
237 | inc ecx |
291 | inc ecx |
238 | @@: |
292 | @@: |
239 | cmp dword[editRU.size], 0 |
293 | cmp dword[editRU.size], 0 |
240 | jne @f |
294 | jne @f |
241 | inc ecx |
295 | inc ecx |
242 | @@: |
296 | @@: |
243 | cmp dword[editRD.size], 0 |
297 | cmp dword[editRD.size], 0 |
244 | jne @f |
298 | jne @f |
245 | inc ecx |
299 | inc ecx |
246 | @@: |
300 | @@: |
247 | 301 | ||
248 | ;òåïåðü ðàçìåð ôàéëà êîíôèãóðàöèè â ecx |
302 | ;òåïåðü ðàçìåð ôàéëà êîíôèãóðàöèè â ecx |
249 | mov dword[createFile.size], ecx ;ïîëîæèì ðàçìåð áàéò â ñòðóêòóðó ñîçäàíèÿ/ïåðåçàïèñè ôàéëà |
303 | mov dword[createFile.size], ecx ;ïîëîæèì ðàçìåð áàéò â ñòðóêòóðó ñîçäàíèÿ/ïåðåçàïèñè ôàéëà |
250 | mcall 68, 12, ecx ;âûäåëÿåì áëîê ïàìÿòè ïîä áóôåð ñîäåðæèìîãî |
304 | mcall 68, 12, ecx ;âûäåëÿåì áëîê ïàìÿòè ïîä áóôåð ñîäåðæèìîãî |
251 | mov dword[createFile.data_adr], eax ;ñîõðàíÿåì àäðåñ áóôåðà â ñòðóêòóðó |
305 | mov dword[createFile.data_adr], eax ;ñîõðàíÿåì àäðåñ áóôåðà â ñòðóêòóðó |
252 | 306 | ||
253 | ;çàïîëíèì áóôåð ñîäåðæèìîãî: |
307 | ;çàïîëíèì áóôåð ñîäåðæèìîãî: |
254 | ;cmp byte[mode], 0 |
308 | ;cmp byte[mode], 0 |
255 | ;jne @f |
309 | ;jne @f |
256 | ;@@: |
310 | ;@@: |
257 | ; |
311 | ; |
- | 312 | ||
- | 313 | push ebx ;ñîõðàíÿåì âûáðàííûé ðåæèì |
|
- | 314 | mov bl, byte[mode] |
|
- | 315 | mov byte[eax], bl |
|
- | 316 | pop ebx |
|
- | 317 | ||
258 | mov byte[eax], 48;'0' ;110; 'n' ;ïî óìîë÷àíèþ ôëàã ñíÿò |
318 | ;; mov byte[eax], 48;'0' ;110; 'n' ;ïî óìîë÷àíèþ ôëàã ñíÿò |
259 | cmp word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle ;âûñòàâëåí checkBox èëè íåò? |
319 | ;; cmp word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle ;âûñòàâëåí checkBox èëè íåò? |
260 | jne applyButton.no |
320 | ;; jne applyButton.no |
261 | mov byte[eax], 49;'1' ;121 ;èíà÷å êëàä¸ì 'y' |
321 | ;; mov byte[eax], 49;'1' ;121 ;èíà÷å êëàä¸ì 'y' |
262 | .no: |
322 | ;;.no: |
263 | inc eax |
323 | inc eax |
264 | call addPerenos |
324 | call addPerenos |
265 | 325 | ||
266 | push esi ebx |
326 | push esi ebx |
267 | call UpdateEditsSizes ;îáíîâèòü ðàçìåðû òåêñòà â edit'àõ |
327 | call UpdateEditsSizes ;îáíîâèòü ðàçìåðû òåêñòà â edit'àõ |
268 | 328 | ||
269 | mov esi, dataBuffer.1 ;editLU.text |
329 | mov esi, dataBuffer.1 ;editLU.text |
270 | mov ebx, dataBuffer.size1 ;editLU.size |
330 | mov ebx, dataBuffer.size1 ;editLU.size |
271 | call copyParam |
331 | call copyParam |
272 | call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè |
332 | call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè |
273 | 333 | ||
274 | mov esi, dataBuffer.2 |
334 | mov esi, dataBuffer.2 |
275 | mov ebx, dataBuffer.size2 |
335 | mov ebx, dataBuffer.size2 |
276 | call copyParam |
336 | call copyParam |
277 | call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè |
337 | call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè |
278 | 338 | ||
279 | mov esi, dataBuffer.3 |
339 | mov esi, dataBuffer.3 |
280 | mov ebx, dataBuffer.size3 |
340 | mov ebx, dataBuffer.size3 |
281 | call copyParam |
341 | call copyParam |
282 | call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè |
342 | call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè |
283 | 343 | ||
284 | mov esi, dataBuffer.4 |
344 | mov esi, dataBuffer.4 |
285 | mov ebx, dataBuffer.size4 |
345 | mov ebx, dataBuffer.size4 |
286 | call copyParam |
346 | call copyParam |
287 | call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè |
347 | call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè |
288 | 348 | ||
289 | pop ebx esi |
349 | pop ebx esi |
290 | 350 | ||
291 | 351 | ||
292 | mov ebx, createFile |
352 | mov ebx, createFile |
293 | mcall 70 |
353 | mcall 70 |
294 | cmp eax, 0 |
354 | cmp eax, 0 |
295 | je .end |
355 | je .end |
296 | ;èíà÷å çäåñü íóæíî âûâåñòè îêíî ñ îøèáêîé !!! |
356 | ;èíà÷å çäåñü íóæíî âûâåñòè îêíî ñ îøèáêîé !!! |
297 | .end: |
357 | .end: |
298 | mcall 68, 13, dword[createFile.data_adr] ;îñâîáîæäàåì ïàìÿòü ïîä áóôåð |
358 | mcall 68, 13, dword[createFile.data_adr] ;îñâîáîæäàåì ïàìÿòü ïîä áóôåð |
299 | call finishHotAnglesApp ;çàâåðøàåì ðàáîòó âñåõ êîïèé ñåðâèñà @HOTANGLES |
359 | call finishHotAnglesApp ;çàâåðøàåì ðàáîòó âñåõ êîïèé ñåðâèñà @HOTANGLES |
300 | call loadConfig ;ïåðåçàãðóæàåì ôàéë êîíôèãà |
360 | call loadConfig ;ïåðåçàãðóæàåì ôàéë êîíôèãà |
301 | call draw_window ;ïåðåðèñîâûâàåì îêíî |
361 | call draw_window ;ïåðåðèñîâûâàåì îêíî |
302 | call startHotAnglesApp ;ïåðåçàïóñêàåì @HOTANGLES |
362 | call startHotAnglesApp ;ïåðåçàïóñêàåì @HOTANGLES |
303 | pop ecx ebx eax |
363 | pop ecx ebx eax |
304 | ret |
364 | ret |
305 | 365 | ||
306 | 366 | ||
307 | 367 | ||
308 | 368 | ||
309 | 369 | ||
310 | 370 | ||
311 | compareBytes2: |
371 | compareBytes2: |
312 | push edi esi ecx ebx |
372 | push edi esi ecx ebx |
313 | xor eax, eax |
373 | xor eax, eax |
314 | mov ecx, 10 ;max ðàçìåð ñòðîê 11 |
374 | mov ecx, 10 ;max ðàçìåð ñòðîê 11 |
315 | @@: |
375 | @@: |
316 | mov bl, byte[edi] |
376 | mov bl, byte[edi] |
317 | cmp bl, byte[esi] |
377 | cmp bl, byte[esi] |
318 | jne compareBytes.no |
378 | jne compareBytes.no |
319 | inc edi |
379 | inc edi |
320 | inc esi |
380 | inc esi |
321 | cmp ecx, 0 |
381 | cmp ecx, 0 |
322 | je @f |
382 | je @f |
323 | dec ecx |
383 | dec ecx |
324 | jmp @b |
384 | jmp @b |
325 | .no: |
385 | .no: |
326 | mov eax, 1 |
386 | mov eax, 1 |
327 | @@: |
387 | @@: |
328 | pop ebx ecx esi edi |
388 | pop ebx ecx esi edi |
329 | ret |
389 | ret |
330 | 390 | ||
331 | 391 | ||
332 | finishHotAnglesApp: |
392 | finishHotAnglesApp: |
333 | ;íàõîäèì âñå êîïèè ïðèëîæåíèÿ ïî èìåíè è çàâåðøàåì èõ |
393 | ;íàõîäèì âñå êîïèè ïðèëîæåíèÿ ïî èìåíè è çàâåðøàåì èõ |
334 | push eax ebx ecx esi edi |
394 | push eax ebx ecx esi edi |
335 | ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíÿþòñÿ: |
395 | ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíÿþòñÿ: |
336 | mov esi, startAppData.file_name ;ïåðâàÿ ñòðîêà - èñêîìîå èìÿ ïðèëîæåíèÿ |
396 | mov esi, startAppData.file_name ;ïåðâàÿ ñòðîêà - èñêîìîå èìÿ ïðèëîæåíèÿ |
337 | mov edi, buf ;âòîðàÿ ñòðîêà - èìÿ òåêóùåãî ñëîòà |
397 | mov edi, buf ;âòîðàÿ ñòðîêà - èìÿ òåêóùåãî ñëîòà |
338 | add edi, 10 |
398 | add edi, 10 |
339 | 399 | ||
340 | mov ecx, 1 |
400 | mov ecx, 1 |
341 | @@: |
401 | @@: |
342 | mcall 9, buf, ecx ;ïîëó÷àåì äàííûå î÷åðåäíîãî ñëîòà |
402 | mcall 9, buf, ecx ;ïîëó÷àåì äàííûå î÷åðåäíîãî ñëîòà |
343 | mov dword[slotMax], eax |
403 | mov dword[slotMax], eax |
344 | 404 | ||
345 | call compareBytes2 ;ñðàâíèâàåì èìÿ |
405 | call compareBytes2 ;ñðàâíèâàåì èìÿ |
346 | cmp eax, 0 |
406 | cmp eax, 0 |
347 | jne finishHotAnglesApp.next ;åñëè íå ñîâïàëî, òî ïåðåõîäèì íà ñëåäóþùèé ñëîò |
407 | jne finishHotAnglesApp.next ;åñëè íå ñîâïàëî, òî ïåðåõîäèì íà ñëåäóþùèé ñëîò |
348 | 408 | ||
349 | ;push eax ebx ecx |
409 | ;push eax ebx ecx |
350 | mcall 18, 2, ecx ;èíà÷å çàâåðøàåì ñëîò |
410 | mcall 18, 2, ecx ;èíà÷å çàâåðøàåì ñëîò |
351 | ;pop ecx ebx eax |
411 | ;pop ecx ebx eax |
352 | 412 | ||
353 | .next: |
413 | .next: |
354 | inc ecx |
414 | inc ecx |
355 | cmp ecx, dword[slotMax] |
415 | cmp ecx, dword[slotMax] |
356 | ja @f |
416 | ja @f |
357 | jmp @b |
417 | jmp @b |
358 | @@: |
418 | @@: |
359 | pop edi esi ecx ebx eax |
419 | pop edi esi ecx ebx eax |
360 | ret |
420 | ret |
361 | 421 | ||
362 | startHotAnglesApp: |
422 | startHotAnglesApp: |
363 | ;çàïóñêàåì ïðèëîæåíèå çàíîâî |
423 | ;çàïóñêàåì ïðèëîæåíèå çàíîâî |
364 | push eax ebx |
424 | push eax ebx |
365 | mcall 70, startAppData |
425 | mcall 70, startAppData |
366 | cmp eax, 0 |
426 | cmp eax, 0 |
367 | ja @f ;åñëè eax>0, òî óñïåøíî çàïóùåíî |
427 | ja @f ;åñëè eax>0, òî óñïåøíî çàïóùåíî |
368 | ;!!! èíà÷å òóò ïå÷àòàåì îøèáêó |
428 | ;!!! èíà÷å òóò ïå÷àòàåì îøèáêó |
369 | @@: |
429 | @@: |
370 | pop ebx eax |
430 | pop ebx eax |
371 | ret |
431 | ret |
372 | 432 | ||
373 | startAppData: |
433 | startAppData: |
374 | .subfunction dd 7 |
434 | .subfunction dd 7 |
375 | .flags dd 0 |
435 | .flags dd 0 |
376 | .param dd 0 |
436 | .param dd 0 |
377 | .rezerv dd 0, 0 |
437 | .rezerv dd 0, 0 |
378 | .full_name db '/rd/1/' |
438 | .full_name db '/rd/1/' |
379 | .file_name db '@HOTANGLES', 0 |
439 | .file_name db '@HOTANGLES', 0 |
380 | ;db 0 |
440 | ;db 0 |
381 | ;.name: dd HotAnglesAppName |
441 | ;.name: dd HotAnglesAppName |
382 | ;HotAnglesAppName db '@HOTANGLES', 0 |
442 | ;HotAnglesAppName db '@HOTANGLES', 0 |
383 | 443 | ||
384 | 444 | ||
385 | UpdateEditsSizes: |
445 | UpdateEditsSizes: |
386 | push eax |
446 | push eax |
387 | mov eax, dword[editLU.size] |
447 | mov eax, dword[editLU.size] |
388 | mov dword[dataBuffer.size1], eax |
448 | mov dword[dataBuffer.size1], eax |
389 | 449 | ||
390 | mov eax, dword[editLD.size] |
450 | mov eax, dword[editLD.size] |
391 | mov dword[dataBuffer.size2], eax |
451 | mov dword[dataBuffer.size2], eax |
392 | 452 | ||
393 | mov eax, dword[editRU.size] |
453 | mov eax, dword[editRU.size] |
394 | mov dword[dataBuffer.size3], eax |
454 | mov dword[dataBuffer.size3], eax |
395 | 455 | ||
396 | mov eax, dword[editRD.size] |
456 | mov eax, dword[editRD.size] |
397 | mov dword[dataBuffer.size4], eax |
457 | mov dword[dataBuffer.size4], eax |
398 | 458 | ||
399 | pop eax |
459 | pop eax |
400 | ret |
460 | ret |
401 | 461 | ||
402 | fileAdr dd 0 |
462 | fileAdr dd 0 |
403 | 463 | ||
404 | loadConfig: |
464 | loadConfig: |
405 | push eax ebx ecx edx |
465 | push eax ebx ecx edx |
406 | mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ |
466 | mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ |
407 | mov dword[fileAdr], eax ;ñîõðàíÿåì àäðåñ áëîêà ïàìÿòè ôàéëà |
467 | mov dword[fileAdr], eax ;ñîõðàíÿåì àäðåñ áëîêà ïàìÿòè ôàéëà |
408 | cmp eax, 0 |
468 | cmp eax, 0 |
409 | je loadConfig.default ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ |
469 | je loadConfig.default ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ |
410 | ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx |
470 | ;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx |
411 | cmp edx, 0 ;åñëè ôàéë ïóñò, â í¸ì íåò äàííûõ, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ |
471 | cmp edx, 0 ;åñëè ôàéë ïóñò, â í¸ì íåò äàííûõ, òî ñòàâèì íàñòðîéêè ïî óìîë÷àíèþ |
412 | je loadConfig.default |
472 | je loadConfig.default |
413 | .start: |
473 | .start: |
414 | add edx, eax ;êëàä¸ì â edx - àäðåñ êîíöà êîíôèã.äàííûõ |
474 | add edx, eax ;êëàä¸ì â edx - àäðåñ êîíöà êîíôèã.äàííûõ |
415 | 475 | ||
416 | .chStart: |
476 | .chStart: |
- | 477 | ||
- | 478 | push ebx |
|
- | 479 | mov bl, byte[eax] |
|
417 | cmp byte[eax], 49;'1' ;121 ;'y' ;âûñòàâëÿåì checkBox - ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ |
480 | cmp bl, 48 ; åñëè çíà÷åíèå âûõîäèò çà äîïóñòèìûå ïðåäåëû, òî ïðîâåðÿåì íà 'n' (äëÿ ñîâìåñòèìîñòè) |
- | 481 | jb loadConfig.checkN |
|
- | 482 | cmp bl, 51 |
|
418 | jne @f ;loadConfig.no |
483 | ja loadConfig.checkN |
- | 484 | ||
- | 485 | mov byte[mode], bl ;èíà÷å óñòàíàâëèâàåì ýòîò ðåæèì êàê åñòü |
|
- | 486 | jmp loadConfig.modeEnd ;è èä¸ì äàëüøå |
|
419 | .yes: |
487 | .checkN: |
420 | mov word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle |
488 | cmp bl, 'n' ;åñëè n - òî ðåæèì "îòêëþ÷åíî" |
- | 489 | jne @f |
|
- | 490 | mov byte[mode], 48 ;'0' |
|
421 | jmp loadConfig.chEnd |
491 | jmp loadConfig.modeEnd |
422 | @@: |
492 | @@: |
- | 493 | mov byte[mode], 49 ;'1' èíà÷å ïî óìîë÷àíèþ âêëþ÷¸í êëàññè÷åñêèé ðåæèì ðàáîòû |
|
- | 494 | .modeEnd: |
|
- | 495 | pop ebx |
|
- | 496 | ||
- | 497 | ;; cmp byte[eax], 49;'1' ;121 ;'y' ;âûñòàâëÿåì checkBox - ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ |
|
- | 498 | ;; jne @f ;loadConfig.no |
|
- | 499 | ;;.yes: |
|
- | 500 | ;; mov word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle |
|
- | 501 | ;; jmp loadConfig.chEnd |
|
- | 502 | ;;@@: |
|
423 | cmp byte[eax], 50;'2' ;âòîðîé ðåæèì àêòèâèðîâàí |
503 | ;; cmp byte[eax], 50;'2' ;âòîðîé ðåæèì àêòèâèðîâàí |
424 | je loadConfig.yes |
504 | ;; je loadConfig.yes |
425 | .no: |
505 | ;;.no: |
426 | mov word[ch1.flags], 100b ;ch_flag_middle |
506 | ;; mov word[ch1.flags], 100b ;ch_flag_middle |
427 | .chEnd: |
507 | ;;.chEnd: |
428 | ;jmp loadConfig.end ;êîìàíäà äëÿ óäîáñòâà îòëàäêè è ïîèñêà îøèáîê |
508 | ;jmp loadConfig.end ;êîìàíäà äëÿ óäîáñòâà îòëàäêè è ïîèñêà îøèáîê |
429 | 509 | ||
430 | ;êîïèðóåì ñîäåðæèìîå ñòðîê â áóôåð |
510 | ;êîïèðóåì ñîäåðæèìîå ñòðîê â áóôåð |
431 | push edi esi ecx ebx eax |
511 | push edi esi ecx ebx eax |
432 | ;èíèöèàëèçèðóåì óêàçàòåëè íà àäðåñà áóôåðà ñòðîêè è å¸ ðàçìåðà |
512 | ;èíèöèàëèçèðóåì óêàçàòåëè íà àäðåñà áóôåðà ñòðîêè è å¸ ðàçìåðà |
433 | mov edi, dataBuffer.1 |
513 | mov edi, dataBuffer.1 |
434 | mov esi, dataBuffer.size1 |
514 | mov esi, dataBuffer.size1 |
435 | ;ecx - ñ÷¸ò÷èê áàéò â ñòðîêå |
515 | ;ecx - ñ÷¸ò÷èê áàéò â ñòðîêå |
436 | .block: |
516 | .block: |
437 | xor ecx, ecx ;îáíóëÿåì ñ÷¸ò÷èê |
517 | xor ecx, ecx ;îáíóëÿåì ñ÷¸ò÷èê |
438 | inc eax |
518 | inc eax |
439 | cmp byte[eax], 10 ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû |
519 | cmp byte[eax], 10 ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû |
440 | je loadConfig.block ;äî ïåðâîãî îòëè÷íîãî îò íèõ |
520 | je loadConfig.block ;äî ïåðâîãî îòëè÷íîãî îò íèõ |
441 | cmp byte[eax], 13 |
521 | cmp byte[eax], 13 |
442 | je loadConfig.block |
522 | je loadConfig.block |
443 | 523 | ||
444 | ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - íà÷èíàåì êîïèðîâàòü îòñþäà â áóôåð |
524 | ; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - íà÷èíàåì êîïèðîâàòü îòñþäà â áóôåð |
445 | mov bl, byte[eax] |
525 | mov bl, byte[eax] |
446 | mov byte[edi], bl |
526 | mov byte[edi], bl |
447 | inc edi |
527 | inc edi |
448 | inc eax |
528 | inc eax |
449 | inc ecx ;óâåëè÷èâàåì ñ÷¸ò÷èê ñèìâîëîâ â ñòðîêå |
529 | inc ecx ;óâåëè÷èâàåì ñ÷¸ò÷èê ñèìâîëîâ â ñòðîêå |
450 | 530 | ||
451 | ;èä¸ì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end |
531 | ;èä¸ì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end |
452 | .while: ;è êîïèðóåì âñ¸ â áóôåð |
532 | .while: ;è êîïèðóåì âñ¸ â áóôåð |
453 | cmp eax, edx ;ïðîâåðÿåì çàêîí÷èëñÿ ëè ôàéë, à êîíöà ñòðîêè íå áûëî !!! |
533 | cmp eax, edx ;ïðîâåðÿåì çàêîí÷èëñÿ ëè ôàéë, à êîíöà ñòðîêè íå áûëî !!! |
454 | ja loadConfig.ura |
534 | ja loadConfig.ura |
455 | cmp byte[eax], 10 |
535 | cmp byte[eax], 10 |
456 | je loadConfig.ura |
536 | je loadConfig.ura |
457 | cmp byte[eax], 0 |
537 | cmp byte[eax], 0 |
458 | je loadConfig.ura |
538 | je loadConfig.ura |
459 | cmp byte[eax], 13 |
539 | cmp byte[eax], 13 |
460 | je loadConfig.ura |
540 | je loadConfig.ura |
461 | 541 | ||
462 | mov bl, byte[eax] |
542 | mov bl, byte[eax] |
463 | mov byte[edi], bl |
543 | mov byte[edi], bl |
464 | inc edi |
544 | inc edi |
465 | inc eax |
545 | inc eax |
466 | inc ecx |
546 | inc ecx |
467 | cmp ecx, 511 |
547 | cmp ecx, 511 |
468 | jae loadConfig.ura |
548 | jae loadConfig.ura |
469 | jmp loadConfig.while |
549 | jmp loadConfig.while |
470 | .ura: |
550 | .ura: |
471 | mov byte[edi], 0 ;êëàä¸ì çàâåðøàþùèé 0 â ñòðîêó |
551 | mov byte[edi], 0 ;êëàä¸ì çàâåðøàþùèé 0 â ñòðîêó |
472 | mov dword[esi], ecx ;ñîõðàíÿåì ðàçìåð ñòðîêè |
552 | mov dword[esi], ecx ;ñîõðàíÿåì ðàçìåð ñòðîêè |
473 | add esi, 4 ;ïåðåõîäèì íà ðàçìåð ñëåäóþùåãî áóôåðà |
553 | add esi, 4 ;ïåðåõîäèì íà ðàçìåð ñëåäóþùåãî áóôåðà |
474 | sub edi, ecx ;ïåðåõîäèì íà ñëåäóþùèé áóôåð |
554 | sub edi, ecx ;ïåðåõîäèì íà ñëåäóþùèé áóôåð |
475 | add edi, 512 |
555 | add edi, 512 |
476 | ;xor ecx, ecx ;îáíóëÿåì ðàçìåð ñòðîêè |
556 | ;xor ecx, ecx ;îáíóëÿåì ðàçìåð ñòðîêè |
477 | 557 | ||
478 | cmp edi, dataBuffer.size1 ;åñëè ýòî áûë ïîñëåäíèé áóôåð (è ìû âûøëè çà àäðåñà ðàçìåðîâ áóôåðîâ), òî âûõîäèì |
558 | cmp edi, dataBuffer.size1 ;åñëè ýòî áûë ïîñëåäíèé áóôåð (è ìû âûøëè çà àäðåñà ðàçìåðîâ áóôåðîâ), òî âûõîäèì |
479 | jb loadConfig.block |
559 | jb loadConfig.block |
480 | 560 | ||
481 | pop eax ebx ecx esi edi |
561 | pop eax ebx ecx esi edi |
482 | 562 | ||
483 | jmp loadConfig.end |
563 | jmp loadConfig.end |
484 | .default: |
564 | .default: |
485 | mov eax, defaultDataForConfig |
565 | mov eax, defaultDataForConfig |
486 | mov edx, defaultDataSize |
566 | mov edx, defaultDataSize |
487 | jmp loadConfig.start |
567 | jmp loadConfig.start |
488 | .end: |
568 | .end: |
489 | mov ecx, dword[fileAdr] ;åñëè ôàéë áûë çàãðóæåí, òî |
569 | mov ecx, dword[fileAdr] ;åñëè ôàéë áûë çàãðóæåí, òî |
490 | cmp ecx, 0 |
570 | cmp ecx, 0 |
491 | je @f |
571 | je @f |
492 | mcall 68, 13, ecx ;âûãðóæàåì ôàéë èç ïàìÿòè |
572 | mcall 68, 13, ecx ;âûãðóæàåì ôàéë èç ïàìÿòè |
493 | @@: |
573 | @@: |
494 | call updateParams ;ïðèìåíÿåì íàñòðîéêè êàæäîãî áóôåðà |
574 | call updateParams ;ïðèìåíÿåì íàñòðîéêè êàæäîãî áóôåðà |
495 | pop edx ecx ebx eax |
575 | pop edx ecx ebx eax |
496 | ret |
576 | ret |
497 | 577 | ||
498 | 578 | ||
499 | updateParams: ;max, size, pos |
579 | updateParams: ;max, size, pos |
500 | push eax |
580 | push eax |
501 | mov eax, dword[dataBuffer.size1] |
581 | mov eax, dword[dataBuffer.size1] |
502 | mov dword[editLU.size], eax |
582 | mov dword[editLU.size], eax |
503 | mov dword[editLU.pos], eax |
583 | mov dword[editLU.pos], eax |
504 | 584 | ||
505 | mov eax, dword[dataBuffer.size2] |
585 | mov eax, dword[dataBuffer.size2] |
506 | mov dword[editLD.size], eax |
586 | mov dword[editLD.size], eax |
507 | mov dword[editLD.pos], eax |
587 | mov dword[editLD.pos], eax |
508 | 588 | ||
509 | mov eax, dword[dataBuffer.size3] |
589 | mov eax, dword[dataBuffer.size3] |
510 | mov dword[editRU.size], eax |
590 | mov dword[editRU.size], eax |
511 | mov dword[editRU.pos], eax |
591 | mov dword[editRU.pos], eax |
512 | 592 | ||
513 | mov eax, dword[dataBuffer.size4] |
593 | mov eax, dword[dataBuffer.size4] |
514 | mov dword[editRD.size], eax |
594 | mov dword[editRD.size], eax |
515 | mov dword[editRD.pos], eax |
595 | mov dword[editRD.pos], eax |
516 | pop eax |
596 | pop eax |
517 | ret |
597 | ret |
518 | 598 | ||
519 | 599 | ||
520 | 600 | ||
521 | selfName db 'HACONFIG', 0 |
601 | selfName db 'HACONFIG', 0 |
522 | selfNameSize = 8 ;äî 11 byte |
602 | selfNameSize = 8 ;äî 11 byte |
523 | ; |
603 | ; |
524 | compareBytes: |
604 | compareBytes: |
525 | push edi esi ecx ebx |
605 | push edi esi ecx ebx |
526 | mov eax, 0 ;xor eax, eax |
606 | mov eax, 0 ;xor eax, eax |
527 | mov ecx, selfNameSize ;max ðàçìåð ñòðîê 11 |
607 | mov ecx, selfNameSize ;max ðàçìåð ñòðîê 11 |
528 | @@: |
608 | @@: |
529 | mov bl, byte[edi] |
609 | mov bl, byte[edi] |
530 | cmp bl, byte[esi] |
610 | cmp bl, byte[esi] |
531 | jne compareBytes.no |
611 | jne compareBytes.no |
532 | inc edi |
612 | inc edi |
533 | inc esi |
613 | inc esi |
534 | cmp ecx, 0 |
614 | cmp ecx, 0 |
535 | je @f |
615 | je @f |
536 | dec ecx |
616 | dec ecx |
537 | jmp @b |
617 | jmp @b |
538 | .no: |
618 | .no: |
539 | mov eax, 1 |
619 | mov eax, 1 |
540 | @@: |
620 | @@: |
541 | pop ebx ecx esi edi |
621 | pop ebx ecx esi edi |
542 | ret |
622 | ret |
543 | ; |
623 | ; |
544 | slotMax dd 0 |
624 | slotMax dd 0 |
545 | selfPID dd 0 |
625 | selfPID dd 0 |
546 | buf db 1024 dup(0) |
626 | buf db 1024 dup(0) |
547 | copyKill: |
627 | copyKill: |
548 | push eax ebx ecx esi edi |
628 | push eax ebx ecx esi edi |
549 | 629 | ||
550 | ;ñïåðâà ïðî÷ò¸ì ñâîþ èíôîðìàöèþ |
630 | ;ñïåðâà ïðî÷ò¸ì ñâîþ èíôîðìàöèþ |
551 | mcall 9, buf, -1 |
631 | mcall 9, buf, -1 |
552 | mov eax, dword[buf+30] |
632 | mov eax, dword[buf+30] |
553 | mov dword[selfPID], eax |
633 | mov dword[selfPID], eax |
554 | 634 | ||
555 | ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíÿþòñÿ: |
635 | ;óêàçàòåëè, êîòîðûå íèêîãäà íå ìåíÿþòñÿ: |
556 | mov esi, selfName ;ïåðâàÿ ñòðîêà - èìÿ òåêóùåãî ïðèëîæåíèÿ |
636 | mov esi, selfName ;ïåðâàÿ ñòðîêà - èìÿ òåêóùåãî ïðèëîæåíèÿ |
557 | mov edi, buf ;âòîðàÿ ñòðîêà - èìÿ òåêóùåãî ñëîòà |
637 | mov edi, buf ;âòîðàÿ ñòðîêà - èìÿ òåêóùåãî ñëîòà |
558 | add edi, 10 |
638 | add edi, 10 |
559 | 639 | ||
560 | mov ecx, 1 |
640 | mov ecx, 1 |
561 | @@: |
641 | @@: |
562 | mcall 9, buf, ecx |
642 | mcall 9, buf, ecx |
563 | mov dword[slotMax], eax |
643 | mov dword[slotMax], eax |
564 | 644 | ||
565 | ;åñëè ýòî ìû ñàìè, òî ïðîïóñêàåì ïðîâåðêó |
645 | ;åñëè ýòî ìû ñàìè, òî ïðîïóñêàåì ïðîâåðêó |
566 | mov eax, dword[buf+30] |
646 | mov eax, dword[buf+30] |
567 | cmp eax, dword[selfPID] |
647 | cmp eax, dword[selfPID] |
568 | je copyKill.propusk |
648 | je copyKill.propusk |
569 | 649 | ||
570 | call compareBytes ;ñðàâíèâàåì 11 áàéò ñòðîê, ðåçóëüòàò â eax |
650 | call compareBytes ;ñðàâíèâàåì 11 áàéò ñòðîê, ðåçóëüòàò â eax |
571 | 651 | ||
572 | cmp eax, 0 |
652 | cmp eax, 0 |
573 | je copyKill.selfKill |
653 | je copyKill.selfKill |
574 | 654 | ||
575 | .propusk: |
655 | .propusk: |
576 | inc ecx |
656 | inc ecx |
577 | cmp ecx, dword[slotMax] |
657 | cmp ecx, dword[slotMax] |
578 | ja @f |
658 | ja @f |
579 | jmp @b |
659 | jmp @b |
580 | 660 | ||
581 | .selfKill: |
661 | .selfKill: |
582 | pop edi esi ecx ebx eax |
662 | pop edi esi ecx ebx eax |
583 | mcall -1 |
663 | mcall -1 |
584 | ret |
664 | ret |
585 | @@: |
665 | @@: |
586 | pop edi esi ecx ebx eax |
666 | pop edi esi ecx ebx eax |
587 | ret |
667 | ret |
588 | 668 | ||
589 | WindowsWidth = 450 |
669 | WindowsWidth = 450 |
590 | WindowsHeight = 195 |
670 | WindowsHeight = 195 |
591 | coord: ;êîîðäèíàòû îêíà ïðèëîæåíèÿ |
671 | coord: ;êîîðäèíàòû îêíà ïðèëîæåíèÿ |
592 | .y dw 0 |
672 | .y dw 0 |
593 | .x dw 0 |
673 | .x dw 0 |
594 | 674 | ||
595 | draw_window: |
675 | draw_window: |
596 | ;óäàëÿåì êíîïêó, åñëè åñòü |
676 | ;óäàëÿåì êíîïêó, åñëè åñòü |
597 | mov edx, 0x80000002 |
677 | mov edx, 0x80000002 |
598 | mcall 8 |
678 | mcall 8 |
599 | 679 | ||
600 | ;óäàëÿåì åù¸ 4 êíîïêè åñëè îíè åñòü |
680 | ;óäàëÿåì åù¸ 4 êíîïêè åñëè îíè åñòü |
601 | mov edx, 0x80000004 |
681 | mov edx, 0x80000004 |
602 | mcall 8 |
682 | mcall 8 |
603 | mov edx, 0x80000005 |
683 | mov edx, 0x80000005 |
604 | mcall 8 |
684 | mcall 8 |
605 | mov edx, 0x80000006 |
685 | mov edx, 0x80000006 |
606 | mcall 8 |
686 | mcall 8 |
607 | mov edx, 0x80000007 |
687 | mov edx, 0x80000007 |
608 | mcall 8 |
688 | mcall 8 |
609 | 689 | ||
610 | mov eax, 12 ; function 12: tell os about windowdraw |
690 | mov eax, 12 ; function 12: tell os about windowdraw |
611 | mov ebx, 1 ; 1, start of draw |
691 | mov ebx, 1 ; 1, start of draw |
612 | mcall |
692 | mcall |
613 | 693 | ||
614 | ;îòîáðàçèì îêíî ïî öåíòðó ýêðàíà äëÿ ýòîãî: |
694 | ;îòîáðàçèì îêíî ïî öåíòðó ýêðàíà äëÿ ýòîãî: |
615 | mcall 14 ;ïîëó÷èì ðàçìåðû ýêðàíà |
695 | mcall 14 ;ïîëó÷èì ðàçìåðû ýêðàíà |
616 | mov dword[coord], eax ;ïîëîæèì ðàçìåðû ýêðàíà â êîîðäèíàòû |
696 | mov dword[coord], eax ;ïîëîæèì ðàçìåðû ýêðàíà â êîîðäèíàòû |
617 | shr word[coord.x], 1 ;âåðíåå ïîëîæèì èõ ïîëîâèíó |
697 | shr word[coord.x], 1 ;âåðíåå ïîëîæèì èõ ïîëîâèíó |
618 | shr word[coord.y], 1 |
698 | shr word[coord.y], 1 |
619 | 699 | ||
620 | ;âû÷èñëÿåì êîîðäèíàòû îêíà, ÷òîáû îêíî áûëî ïî ñåðåäèíå ýêðàíà |
700 | ;âû÷èñëÿåì êîîðäèíàòû îêíà, ÷òîáû îêíî áûëî ïî ñåðåäèíå ýêðàíà |
621 | sub word[coord.x], WindowsWidth/2 |
701 | sub word[coord.x], WindowsWidth/2 |
622 | sub word[coord.y], WindowsHeight/2 |
702 | sub word[coord.y], WindowsHeight/2 |
623 | 703 | ||
624 | mov eax, 0 ; function 0 : define and draw window |
704 | mov eax, 0 ; function 0 : define and draw window |
625 | mov ebx, 0 ; [x start] *65536 + [x size] |
705 | mov ebx, 0 ; [x start] *65536 + [x size] |
626 | mov bx, word[coord.x] |
706 | mov bx, word[coord.x] |
627 | shl ebx, 16 |
707 | shl ebx, 16 |
628 | mov bx, WindowsWidth |
708 | mov bx, WindowsWidth |
629 | 709 | ||
630 | mov ecx, 0 |
710 | mov ecx, 0 |
631 | mov cx, word[coord.y] ; [y start] *65536 + [y size] |
711 | mov cx, word[coord.y] ; [y start] *65536 + [y size] |
632 | shl ecx, 16 |
712 | shl ecx, 16 |
633 | mov cx, WindowsHeight |
713 | mov cx, WindowsHeight |
634 | 714 | ||
635 | mov edx, 0x14ffffff ; color of work area RRGGBB |
715 | mov edx, 0x14ffffff ; color of work area RRGGBB |
636 | ; 0x02000000 = window type 4 (fixed size, skinned window) |
716 | ; 0x02000000 = window type 4 (fixed size, skinned window) |
637 | mov esi, 0x808899ff ; color of grab bar RRGGBB |
717 | mov esi, 0x808899ff ; color of grab bar RRGGBB |
638 | ; 0x80000000 = color glide |
718 | ; 0x80000000 = color glide |
639 | mov edi, title |
719 | mov edi, title |
640 | mcall |
720 | mcall |
641 | 721 | ||
642 | invoke edit_box_draw, editLU ;ðèñîâàíèå edit box'îâ |
722 | invoke edit_box_draw, editLU ;ðèñîâàíèå edit box'îâ |
643 | invoke edit_box_draw, editLD |
723 | invoke edit_box_draw, editLD |
644 | invoke edit_box_draw, editRU |
724 | invoke edit_box_draw, editRU |
645 | invoke edit_box_draw, editRD |
725 | invoke edit_box_draw, editRD |
646 | 726 | ||
647 | invoke check_box_draw, ch1 ;ðèñîâàíèå ÷åêáîêñîâ |
727 | ;invoke check_box_draw, ch1 ;ðèñîâàíèå ÷åêáîêñîâ |
648 | 728 | ||
649 | ;ðèñóåì êíîïêó |
729 | ;ðèñóåì êíîïêó |
650 | mov ebx, (WindowsWidth-80-Otstup)*65536 + 80 ;êîîðäèíàòà X, øèðèíà êíîïêè |
730 | mov ebx, (WindowsWidth-80-Otstup)*65536 + 80 ;êîîðäèíàòà X, øèðèíà êíîïêè |
651 | mov ecx, 160*65536 + 20 ;êîîðäèíàòà Y, âûñîòà êíîïêè |
731 | mov ecx, 160*65536 + 20 ;êîîðäèíàòà Y, âûñîòà êíîïêè |
652 | mov edx, 0x00000002 ;2 ;íîìåð êíîïêè |
732 | mov edx, 0x00000002 ;2 ;íîìåð êíîïêè |
653 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
733 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
654 | mcall 8 |
734 | mcall 8 |
655 | ;ðèñóåì òåêñò êíîïêè |
735 | ;ðèñóåì òåêñò êíîïêè |
656 | mov ebx, (WindowsWidth-80-Otstup+25-buttonTextXoffset) * 65536 + 166 ;êîîðäèíàòû òåêñòà (x, y) |
736 | mov ebx, (WindowsWidth-80-Otstup+25-buttonTextXoffset) * 65536 + 166 ;êîîðäèíàòû òåêñòà (x, y) |
657 | mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà |
737 | mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà |
658 | mov edx, buttonText |
738 | mov edx, buttonText |
659 | mov esi, buttonTextSize ;5 ;ðàçìåð òåêñòà â ñèìâîëàõ |
739 | mov esi, buttonTextSize ;5 ;ðàçìåð òåêñòà â ñèìâîëàõ |
660 | mcall 4 |
740 | mcall 4 |
661 | 741 | ||
662 | ;ðèñóåì åù¸ 4 êíîïêè äëÿ äèàëîãîâîãî îêíà âûáîðà ôàéëà |
742 | ;ðèñóåì åù¸ 4 êíîïêè äëÿ äèàëîãîâîãî îêíà âûáîðà ôàéëà |
663 | ;íîìåðà 4,5,6 è 7 |
743 | ;íîìåðà 4,5,6 è 7 |
664 | buttonH = 14 ;20 |
744 | buttonH = 14 ;20 |
665 | buttonW = 30 |
745 | buttonW = 30 |
666 | ;ëåâûé âåðõíèé óãîë |
746 | ;ëåâûé âåðõíèé óãîë |
667 | mov ebx, Otstup*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè |
747 | mov ebx, Otstup*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè |
668 | mov ecx, 85*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè |
748 | mov ecx, 85*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè |
669 | mov edx, 0x00000004 ;íîìåð êíîïêè |
749 | mov edx, 0x00000004 ;íîìåð êíîïêè |
670 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
750 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
671 | mcall 8 |
751 | mcall 8 |
672 | ;ëåâûé íèæíèé óãîë |
752 | ;ëåâûé íèæíèé óãîë |
673 | mov ebx, Otstup*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè |
753 | mov ebx, Otstup*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè |
674 | mov ecx, 120*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè |
754 | mov ecx, 120*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè |
675 | mov edx, 0x00000005 ;íîìåð êíîïêè |
755 | mov edx, 0x00000005 ;íîìåð êíîïêè |
676 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
756 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
677 | mcall 8 |
757 | mcall 8 |
678 | ;ïðàâûé âåðõíèé óãîë |
758 | ;ïðàâûé âåðõíèé óãîë |
679 | mov ebx, (WindowsWidth-Otstup-buttonW)*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè |
759 | mov ebx, (WindowsWidth-Otstup-buttonW)*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè |
680 | mov ecx, 85*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè |
760 | mov ecx, 85*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè |
681 | mov edx, 0x00000006 ;íîìåð êíîïêè |
761 | mov edx, 0x00000006 ;íîìåð êíîïêè |
682 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
762 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
683 | mcall 8 |
763 | mcall 8 |
684 | ;ïðàâûé íèæíèé óãîë |
764 | ;ïðàâûé íèæíèé óãîë |
685 | mov ebx, (WindowsWidth-Otstup-buttonW)*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè |
765 | mov ebx, (WindowsWidth-Otstup-buttonW)*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè |
686 | mov ecx, 120*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè |
766 | mov ecx, 120*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè |
687 | mov edx, 0x00000007 ;íîìåð êíîïêè |
767 | mov edx, 0x00000007 ;íîìåð êíîïêè |
688 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
768 | mov esi, 0x00AABBCC ;öâåò êíîïêè |
689 | mcall 8 |
769 | mcall 8 |
690 | 770 | ||
691 | ;ðèñóåì òåêñòû äëÿ ýòèõ 4 êíîïîê |
771 | ;ðèñóåì òåêñòû äëÿ ýòèõ 4 êíîïîê |
692 | mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà |
772 | mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà |
693 | mov edx, commonButtonText ;ñòðîêà òåêñòà |
773 | mov edx, commonButtonText ;ñòðîêà òåêñòà |
694 | mov esi, commonButtonTextSize ;ðàçìåð òåêñòà â ñèìâîëàõ |
774 | mov esi, commonButtonTextSize ;ðàçìåð òåêñòà â ñèìâîëàõ |
695 | ;êîîðäèíàòû òåêñòà (x, y) |
775 | ;êîîðäèíàòû òåêñòà (x, y) |
696 | deltaCommonTextX = 7 |
776 | deltaCommonTextX = 7 |
697 | deltaCommonTextY = 2 |
777 | deltaCommonTextY = 2 |
698 | mov ebx, (Otstup+deltaCommonTextX) * 65536 + (85 + deltaCommonTextY) |
778 | mov ebx, (Otstup+deltaCommonTextX) * 65536 + (85 + deltaCommonTextY) |
699 | mcall 4 |
779 | mcall 4 |
700 | mov ebx, (Otstup+deltaCommonTextX) * 65536 + (120 + deltaCommonTextY) |
780 | mov ebx, (Otstup+deltaCommonTextX) * 65536 + (120 + deltaCommonTextY) |
701 | mcall 4 |
781 | mcall 4 |
702 | mov ebx, (WindowsWidth-Otstup-buttonW+deltaCommonTextX) * 65536 + (85 + deltaCommonTextY) |
782 | mov ebx, (WindowsWidth-Otstup-buttonW+deltaCommonTextX) * 65536 + (85 + deltaCommonTextY) |
703 | mcall 4 |
783 | mcall 4 |
704 | mov ebx, (WindowsWidth-Otstup-buttonW+deltaCommonTextX) * 65536 + (120 + deltaCommonTextY) |
784 | mov ebx, (WindowsWidth-Otstup-buttonW+deltaCommonTextX) * 65536 + (120 + deltaCommonTextY) |
705 | mcall 4 |
785 | mcall 4 |
706 | 786 | ||
- | 787 | ||
- | 788 | ;delete mode button, if it exist |
|
- | 789 | mov edx, 0x80000008 |
|
- | 790 | mcall 8 |
|
- | 791 | ;draw button Mode |
|
- | 792 | buttonModeX = 30 ;433 |
|
- | 793 | buttonModeY = 160 ;50 |
|
- | 794 | buttonModeWidth = 221 |
|
- | 795 | buttonModeHeight = 20 |
|
- | 796 | buttonModeTextXoffset = 5 |
|
- | 797 | mov ebx, buttonModeX*65536 + buttonModeWidth ;X + Width |
|
- | 798 | mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height |
|
- | 799 | mov edx, 0x00000008 ;button id |
|
- | 800 | mov esi, 0x00AABBCC ;color button |
|
- | 801 | mcall 8 |
|
- | 802 | ;draw text for button Mode |
|
- | 803 | mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+6) ;(x, y) |
|
- | 804 | mov ecx, 0xFFFFFF |
|
- | 805 | call setTextModeMenu |
|
- | 806 | mov esi, valueModeMenuSize |
|
- | 807 | mcall 4 |
|
- | 808 | ||
707 | 809 | ||
708 | call draw_super_text |
810 | call draw_super_text |
709 | 811 | ||
710 | LineLength = 62 |
812 | LineLength = 62 |
711 | mov ebx, 40 * 65536 + 36 ; draw info text with function 4 (x, y) |
813 | mov ebx, 40 * 65536 + 36 ; draw info text with function 4 (x, y) |
712 | mov ecx, 0x224466 |
814 | mov ecx, 0x224466 |
713 | mov edx, text |
815 | mov edx, text |
714 | mov esi, LineLength |
816 | mov esi, LineLength |
715 | mov eax, 4 |
817 | mov eax, 4 |
716 | 818 | ||
717 | .newline: ; text from the DATA AREA |
819 | .newline: ; text from the DATA AREA |
718 | mcall |
820 | mcall |
719 | add ebx, 12 |
821 | add ebx, 12 |
720 | add edx, LineLength |
822 | add edx, LineLength |
721 | cmp byte[edx], 0 |
823 | cmp byte[edx], 0 |
722 | jne .newline |
824 | jne .newline |
723 | 825 | ||
724 | mov eax, 12 ; function 12:tell os about windowdraw |
826 | mov eax, 12 ; function 12:tell os about windowdraw |
725 | mov ebx, 2 ; 2, end of draw |
827 | mov ebx, 2 ; 2, end of draw |
726 | mcall |
828 | mcall |
727 | 829 | ||
728 | ret |
830 | ret |
729 | 831 | ||
- | 832 | ||
- | 833 | setTextModeMenu: |
|
- | 834 | cmp byte[mode], 48 |
|
- | 835 | jne @f |
|
- | 836 | mov edx, valueModeMenu0 |
|
- | 837 | ret |
|
- | 838 | @@: |
|
- | 839 | cmp byte[mode], 49 |
|
- | 840 | jne @f |
|
- | 841 | mov edx, valueModeMenu1 |
|
- | 842 | ret |
|
- | 843 | @@: |
|
- | 844 | cmp byte[mode], 50 |
|
- | 845 | jne @f |
|
- | 846 | mov edx, valueModeMenu2 |
|
- | 847 | ret |
|
- | 848 | @@: |
|
- | 849 | cmp byte[mode], 51 |
|
- | 850 | jne @f |
|
- | 851 | mov edx, valueModeMenu3 |
|
- | 852 | ret |
|
- | 853 | @@: |
|
- | 854 | mov edx, valueModeMenu1 |
|
730 | 855 | ret |
|
731 | 856 | ||
732 | 857 | ||
733 | align 16 |
858 | align 16 |
734 | @IMPORT: |
859 | @IMPORT: |
735 | 860 | ||
736 | library box_lib, 'box_lib.obj' |
861 | library box_lib, 'box_lib.obj' |
737 | 862 | ||
738 | import box_lib,\ |
863 | import box_lib,\ |
739 | edit_box_draw, 'edit_box',\ |
864 | edit_box_draw, 'edit_box',\ |
740 | edit_box_key, 'edit_box_key',\ |
865 | edit_box_key, 'edit_box_key',\ |
741 | edit_box_mouse, 'edit_box_mouse',\ |
866 | edit_box_mouse, 'edit_box_mouse',\ |
742 | init_checkbox, 'init_checkbox2',\ |
867 | init_checkbox, 'init_checkbox2',\ |
743 | check_box_draw, 'check_box_draw2',\ |
868 | check_box_draw, 'check_box_draw2',\ |
744 | check_box_mouse, 'check_box_mouse2',\ |
869 | check_box_mouse, 'check_box_mouse2',\ |
745 | option_box_draw, 'option_box_draw',\ |
870 | option_box_draw, 'option_box_draw',\ |
746 | option_box_mouse, 'option_box_mouse' |
871 | option_box_mouse, 'option_box_mouse' |
747 | 872 | ||
748 | 873 | ||
749 | ;DATA äàííûå check_box èñïîëüçóåò ñèñòåìíûå öâåòà |
874 | ;DATA äàííûå check_box èñïîëüçóåò ñèñòåìíûå öâåòà |
750 | 875 | ||
751 | ;êîîðäèíàòû (x,y) = (30, 160) ðàçìåð ÷åêáîêñà 12, öâåò òåêñòà 0x224466 |
876 | ;êîîðäèíàòû (x,y) = (30, 160) ðàçìåð ÷åêáîêñà 12, öâåò òåêñòà 0x224466 |
752 | ch1 check_box2 30 shl 16 + 12, 160 shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0x224466, ch_text, 110b ; ch_flag_en and ch_flag_middle |
877 | ;ch1 check_box2 30 shl 16 + 12, 160 shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0x224466, ch_text, 110b ; ch_flag_en and ch_flag_middle |
753 | 878 | ||
754 | commonButtonText db '...', 0 ;òåêñò äëÿ êíîïîê âûçîâà OpenDial |
879 | commonButtonText db '...', 0 ;òåêñò äëÿ êíîïîê âûçîâà OpenDial |
755 | commonButtonTextSize = 3 |
880 | commonButtonTextSize = 3 |
756 | 881 | ||
757 | if lang eq ru ;åñëè ÿçûê ñáîðêè ðóññêèé |
882 | if lang eq ru ;åñëè ÿçûê ñáîðêè ðóññêèé |
758 | 883 | ||
759 | text db "®ä¨£ãà â®à Hot Angles ®â¢¥ç ¥â § áâனªã ªâ¨¢ëå 㣫®¢. " |
884 | text db "®ä¨£ãà â®à Hot Angles ®â¢¥ç ¥â § áâனªã ªâ¨¢ëå 㣫®¢. " |
760 | db " áâன⥠¯ à ¬¥âàë ¯®¤ á¥¡ï ¨«¨ ®âª«îç¨â¥ íâã ®¯æ¨î. " |
885 | db " áâன⥠¯ à ¬¥âàë ¯®¤ á¥¡ï ¨«¨ ®âª«îç¨â¥ íâã ®¯æ¨î. " |
761 | db " ", 0 |
886 | db " ", 0 |
762 | hed: |
887 | hed: |
763 | title db "®ä¨£ãà â®à ã⨫¨âë Hot Angles", 0 |
888 | title db "®ä¨£ãà â®à ã⨫¨âë Hot Angles", 0 |
764 | buttonText db "ਬ¥¨âì", 0 |
889 | buttonText db "ਬ¥¨âì", 0 |
765 | buttonTextSize = 9 |
890 | buttonTextSize = 9 |
766 | buttonTextXoffset = 12 |
891 | buttonTextXoffset = 12 |
767 | 892 | ||
768 | ch_text db 'ª«îç¨âì/ ªâ¨¢¨à®¢ âì "Hot Angles"', 0 |
893 | ch_text db 'ª«îç¨âì/ ªâ¨¢¨à®¢ âì "Hot Angles"', 0 |
769 | 894 | ||
770 | superText: |
895 | superText: |
771 | .lu db '®¬ ¤ «¥¢®£® ¢¥à奣® 㣫 : ', 0 |
896 | .lu db '®¬ ¤ «¥¢®£® ¢¥à奣® 㣫 : ', 0 |
772 | .ld db '®¬ ¤ «¥¢®£® ¨¦¥£® 㣫 : ', 0 |
897 | .ld db '®¬ ¤ «¥¢®£® ¨¦¥£® 㣫 : ', 0 |
773 | .ru db '®¬ ¤ ¯à ¢®£® ¢¥à奣® 㣫 :', 0 |
898 | .ru db '®¬ ¤ ¯à ¢®£® ¢¥à奣® 㣫 :', 0 |
774 | .rd db '®¬ ¤ ¯à ¢®£® ¨¦¥£® 㣫 : ', 0 |
899 | .rd db '®¬ ¤ ¯à ¢®£® ¨¦¥£® 㣫 : ', 0 |
775 | superTextSize = 30 |
900 | superTextSize = 30 |
- | 901 | ||
- | 902 | valueModeMenuSize = 32 |
|
- | 903 | ModeMenu db '¥¦¨¬ à ¡®âë:',0 |
|
- | 904 | valueModeMenu0 db '®âª«î祮 ',0 |
|
- | 905 | valueModeMenu1 db 'ª« áá¨ç¥áª¨© ०¨¬ ',0 |
|
- | 906 | valueModeMenu2 db '०¨¬ £®àï祩 ª« ¢¨è¨ ',0 |
|
- | 907 | valueModeMenu3 db '०¨¬ ¦¥áâ ¯® ª« ¢¨è¥ ªâ¨¢ 樨',0 |
|
776 | 908 | ||
777 | else ;èíà÷å àíãëèéñêèé òåêñò |
909 | else ;èíà÷å àíãëèéñêèé òåêñò |
778 | 910 | ||
779 | text db "This is a Hot Angles Configurator. " |
911 | text db "This is a Hot Angles Configurator. " |
780 | db "Set the parameters bellow for yourself or disable this option." |
912 | db "Set the parameters bellow for yourself or disable this option." |
781 | db " ", 0 |
913 | db " ", 0 |
782 | hed: |
914 | hed: |
783 | title db "Hot Angles Configurator", 0 |
915 | title db "Hot Angles Configurator", 0 |
784 | buttonText db "Apply", 0 |
916 | buttonText db "Apply", 0 |
785 | buttonTextSize = 5 |
917 | buttonTextSize = 5 |
786 | buttonTextXoffset = 0 |
918 | buttonTextXoffset = 0 |
787 | 919 | ||
788 | ch_text db 'Activate "Hot Angles"',0 ;ñîïðîâîæäàþùèé òåêñò äëÿ ÷åê áîêñà |
920 | ch_text db 'Activate "Hot Angles"',0 ;ñîïðîâîæäàþùèé òåêñò äëÿ ÷åê áîêñà |
789 | 921 | ||
790 | superText: |
922 | superText: |
791 | .lu db 'Left up angle command: ', 0 |
923 | .lu db 'Left up angle command: ', 0 |
792 | .ld db 'Left down angle command: ', 0 |
924 | .ld db 'Left down angle command: ', 0 |
793 | .ru db 'Right up angle command: ', 0 |
925 | .ru db 'Right up angle command: ', 0 |
794 | .rd db 'Right down angle command:', 0 |
926 | .rd db 'Right down angle command:', 0 |
795 | superTextSize = 25 |
927 | superTextSize = 25 |
- | 928 | ||
- | 929 | valueModeMenuSize = 32 |
|
- | 930 | ModeMenu db 'Mode:',0 |
|
- | 931 | valueModeMenu0 db 'disabled ',0 |
|
- | 932 | valueModeMenu1 db 'classic mode ',0 |
|
- | 933 | valueModeMenu2 db 'hot key mode ',0 |
|
- | 934 | valueModeMenu3 db 'activation key gesture mode ',0 |
|
796 | 935 | ||
797 | end if |
936 | end if |
798 | 937 | ||
799 | 938 | ||
800 | draw_super_text: |
939 | draw_super_text: |
801 | push eax ebx ecx edx edi esi |
940 | push eax ebx ecx edx edi esi |
802 | mov ebx, Otstup * 65536 + 74 ; draw info text with function 4 (x, y) |
941 | mov ebx, Otstup * 65536 + 74 ; draw info text with function 4 (x, y) |
803 | mov ecx, 0x224466 |
942 | mov ecx, 0x224466 |
804 | mov eax, superText.lu |
943 | mov eax, superText.lu |
805 | mov edx, eax |
944 | mov edx, eax |
806 | mov esi, superTextSize |
945 | mov esi, superTextSize |
807 | mcall 4 |
946 | mcall 4 |
808 | 947 | ||
809 | mov ebx, Otstup * 65536 + 109 |
948 | mov ebx, Otstup * 65536 + 109 |
810 | mov edx, superText.ld |
949 | mov edx, superText.ld |
811 | mov esi, superTextSize |
950 | mov esi, superTextSize |
812 | mcall 4 |
951 | mcall 4 |
813 | 952 | ||
814 | mov ebx, 240 * 65536 + 74 |
953 | mov ebx, 240 * 65536 + 74 |
815 | mov edx, superText.ru |
954 | mov edx, superText.ru |
816 | mov esi, superTextSize |
955 | mov esi, superTextSize |
817 | mcall 4 |
956 | mcall 4 |
818 | 957 | ||
819 | mov ebx, 240 * 65536 + 109 |
958 | mov ebx, 240 * 65536 + 109 |
820 | mov edx, superText.rd |
959 | mov edx, superText.rd |
821 | mov esi, superTextSize |
960 | mov esi, superTextSize |
822 | mcall 4 |
961 | mcall 4 |
- | 962 | ||
- | 963 | mov ebx, Otstup * 65536 + (buttonModeY-11) |
|
- | 964 | or ecx, 0x80000000 |
|
- | 965 | mov edx, ModeMenu |
|
- | 966 | mov esi, 3 |
|
- | 967 | mcall 4 |
|
823 | 968 | ||
824 | pop esi edi edx ecx ebx eax |
969 | pop esi edi edx ecx ebx eax |
825 | ret |
970 | ret |
826 | 971 | ||
827 | ;![ |
972 | ;![ |
828 | editID db 0 |
973 | editID db 0 |
829 | initEBX: |
974 | initEBX: |
830 | cmp byte[editID], 4 |
975 | cmp byte[editID], 4 |
831 | jne @f |
976 | jne @f |
832 | mov ebx, dataBuffer.1 |
977 | mov ebx, dataBuffer.1 |
833 | ret |
978 | ret |
834 | @@: |
979 | @@: |
835 | cmp byte[editID], 5 |
980 | cmp byte[editID], 5 |
836 | jne @f |
981 | jne @f |
837 | mov ebx, dataBuffer.2 |
982 | mov ebx, dataBuffer.2 |
838 | ret |
983 | ret |
839 | @@: |
984 | @@: |
840 | cmp byte[editID], 6 |
985 | cmp byte[editID], 6 |
841 | jne @f |
986 | jne @f |
842 | mov ebx, dataBuffer.3 |
987 | mov ebx, dataBuffer.3 |
843 | ret |
988 | ret |
844 | @@: |
989 | @@: |
845 | cmp byte[editID], 7 |
990 | cmp byte[editID], 7 |
846 | jne @f |
991 | jne @f |
847 | mov ebx, dataBuffer.4 |
992 | mov ebx, dataBuffer.4 |
848 | ret |
993 | ret |
849 | @@: |
994 | @@: |
850 | ret |
995 | ret |
851 | setRESULT: |
996 | setRESULT: |
852 | cmp byte[editID], 4 |
997 | cmp byte[editID], 4 |
853 | jne @f |
998 | jne @f |
854 | mov dword[dataBuffer.size1], ecx |
999 | mov dword[dataBuffer.size1], ecx |
855 | mov dword[editLU.size], ecx |
1000 | mov dword[editLU.size], ecx |
856 | mov dword[editLU.pos], ecx |
1001 | mov dword[editLU.pos], ecx |
857 | ret |
1002 | ret |
858 | @@: |
1003 | @@: |
859 | cmp byte[editID], 5 |
1004 | cmp byte[editID], 5 |
860 | jne @f |
1005 | jne @f |
861 | mov dword[dataBuffer.size2], ecx |
1006 | mov dword[dataBuffer.size2], ecx |
862 | mov dword[editLD.size], ecx |
1007 | mov dword[editLD.size], ecx |
863 | mov dword[editLD.pos], ecx |
1008 | mov dword[editLD.pos], ecx |
864 | ret |
1009 | ret |
865 | @@: |
1010 | @@: |
866 | cmp byte[editID], 6 |
1011 | cmp byte[editID], 6 |
867 | jne @f |
1012 | jne @f |
868 | mov dword[dataBuffer.size3], ecx |
1013 | mov dword[dataBuffer.size3], ecx |
869 | mov dword[editRU.size], ecx |
1014 | mov dword[editRU.size], ecx |
870 | mov dword[editRU.pos], ecx |
1015 | mov dword[editRU.pos], ecx |
871 | ret |
1016 | ret |
872 | @@: |
1017 | @@: |
873 | cmp byte[editID], 7 |
1018 | cmp byte[editID], 7 |
874 | jne @f |
1019 | jne @f |
875 | mov dword[dataBuffer.size4], ecx |
1020 | mov dword[dataBuffer.size4], ecx |
876 | mov dword[editRD.size], ecx |
1021 | mov dword[editRD.size], ecx |
877 | mov dword[editRD.pos], ecx |
1022 | mov dword[editRD.pos], ecx |
878 | ret |
1023 | ret |
879 | @@: |
1024 | @@: |
880 | ret |
1025 | ret |
881 | copyPath: |
1026 | copyPath: |
882 | push eax ebx ecx edx ;copy file name path |
1027 | push eax ebx ecx edx ;copy file name path |
883 | mov eax, openfile_path ;dword[OpenDialog_data.openfile_path] |
1028 | mov eax, openfile_path ;dword[OpenDialog_data.openfile_path] |
884 | call initEBX ;mov ebx, dataBuffer.1 ;.data |
1029 | call initEBX ;mov ebx, dataBuffer.1 ;.data |
885 | mov ecx, 0 |
1030 | mov ecx, 0 |
886 | @@: |
1031 | @@: |
887 | mov dl, byte[eax] |
1032 | mov dl, byte[eax] |
888 | cmp dl, 0 ;byte[eax], 0 |
1033 | cmp dl, 0 ;byte[eax], 0 |
889 | je @f |
1034 | je @f |
890 | mov byte[ebx], dl |
1035 | mov byte[ebx], dl |
891 | inc eax |
1036 | inc eax |
892 | inc ebx |
1037 | inc ebx |
893 | inc ecx |
1038 | inc ecx |
894 | jmp @b |
1039 | jmp @b |
895 | @@: |
1040 | @@: |
896 | mov byte[ebx], 0 |
1041 | mov byte[ebx], 0 |
897 | call setRESULT |
1042 | call setRESULT |
898 | pop edx ecx ebx eax |
1043 | pop edx ecx ebx eax |
899 | ret |
1044 | ret |
900 | 1045 | ||
901 | 1046 | ||
902 | align 4 |
1047 | align 4 |
903 | but_open_dlg: |
1048 | but_open_dlg: |
904 | pushad |
1049 | pushad |
905 | copy_path open_dialog_name,communication_area_default_path,file_name,0 |
1050 | copy_path open_dialog_name,communication_area_default_path,file_name,0 |
906 | mov [OpenDialog_data.type],0 |
1051 | mov [OpenDialog_data.type],0 |
907 | stdcall[OpenDialog_Start], OpenDialog_data |
1052 | stdcall[OpenDialog_Start], OpenDialog_data |
908 | cmp [OpenDialog_data.status],2 |
1053 | cmp [OpenDialog_data.status],2 |
909 | je @f |
1054 | je @f |
910 | cmp [OpenDialog_data.status],0 ;ïîëüçîâàòåëü íàæàë Cancel? |
1055 | cmp [OpenDialog_data.status],0 ;ïîëüçîâàòåëü íàæàë Cancel? |
911 | je .end_open |
1056 | je .end_open |
912 | ;êîä ïðè óäà÷íîì îòêðûòèè äèàëîãà |
1057 | ;êîä ïðè óäà÷íîì îòêðûòèè äèàëîãà |
913 | call copyPath |
1058 | call copyPath |
914 | jmp .end_open |
1059 | jmp .end_open |
915 | @@: |
1060 | @@: |
916 | ;êîä ïðè íå óäà÷íîì îòêðûòèè äèàëîãà |
1061 | ;êîä ïðè íå óäà÷íîì îòêðûòèè äèàëîãà |
917 | ;... |
1062 | ;... |
918 | .end_open: |
1063 | .end_open: |
919 | popad |
1064 | popad |
920 | ret |
1065 | ret |
921 | 1066 | ||
922 | ;äûííûå äëÿ äèàëîãà îòêðûòèÿ ôàéëîâ |
1067 | ;äûííûå äëÿ äèàëîãà îòêðûòèÿ ôàéëîâ |
923 | align 4 |
1068 | align 4 |
924 | OpenDialog_data: |
1069 | OpenDialog_data: |
925 | .type dd 0 ;0 - îòêðûòü, 1 - ñîõðàíèòü, 2 - âûáðàòü äèðåêòîðèþ |
1070 | .type dd 0 ;0 - îòêðûòü, 1 - ñîõðàíèòü, 2 - âûáðàòü äèðåêòîðèþ |
926 | .procinfo dd procinfo |
1071 | .procinfo dd procinfo |
927 | .com_area_name dd communication_area_name ;+8 |
1072 | .com_area_name dd communication_area_name ;+8 |
928 | .com_area dd 0 ;+12 |
1073 | .com_area dd 0 ;+12 |
929 | .opendir_path dd plugin_path ;+16 |
1074 | .opendir_path dd plugin_path ;+16 |
930 | .dir_default_path dd default_dir ;+20 |
1075 | .dir_default_path dd default_dir ;+20 |
931 | .start_path dd file_name ;+24 ïóòü ê äèàëîãó îòêðûòèÿ ôàéëîâ |
1076 | .start_path dd file_name ;+24 ïóòü ê äèàëîãó îòêðûòèÿ ôàéëîâ |
932 | .draw_window dd draw_window ;+28 |
1077 | .draw_window dd draw_window ;+28 |
933 | .status dd 0 ;+32 |
1078 | .status dd 0 ;+32 |
934 | .openfile_path dd openfile_path ;+36 ïóòü ê îòêðûâàåìîìó ôàéëó |
1079 | .openfile_path dd openfile_path ;+36 ïóòü ê îòêðûâàåìîìó ôàéëó |
935 | .filename_area dd filename_area ;+40 |
1080 | .filename_area dd filename_area ;+40 |
936 | .filter_area dd Filter |
1081 | .filter_area dd Filter |
937 | .x: |
1082 | .x: |
938 | .x_size dw 420 ;+48 ; Window X size |
1083 | .x_size dw 420 ;+48 ; Window X size |
939 | .x_start dw 10 ;+50 ; Window X position |
1084 | .x_start dw 10 ;+50 ; Window X position |
940 | .y: |
1085 | .y: |
941 | .y_size dw 320 ;+52 ; Window y size |
1086 | .y_size dw 320 ;+52 ; Window y size |
942 | .y_start dw 10 ;+54 ; Window Y position |
1087 | .y_start dw 10 ;+54 ; Window Y position |
943 | 1088 | ||
944 | default_dir db '/rd/1',0 ;äèðåêòîðèÿ ïî óìîë÷àíèþ |
1089 | default_dir db '/rd/1',0 ;äèðåêòîðèÿ ïî óìîë÷àíèþ |
945 | communication_area_name: db 'FFFFFFFF_open_dialog',0 |
1090 | communication_area_name: db 'FFFFFFFF_open_dialog',0 |
946 | open_dialog_name: db 'opendial',0 |
1091 | open_dialog_name: db 'opendial',0 |
947 | communication_area_default_path: db '/rd/1/File managers/',0 |
1092 | communication_area_default_path: db '/rd/1/File managers/',0 |
948 | 1093 | ||
949 | Filter: |
1094 | Filter: |
950 | dd Filter.end - Filter.1 |
1095 | dd Filter.end - Filter.1 |
951 | .1: |
1096 | .1: |
952 | ;db 'ASM',0 |
- | |
953 | ;db 'KEX',0 |
1097 | ;db 'KEX',0 |
954 | ;db 'TXT',0 |
- | |
955 | .end: |
1098 | .end: |
956 | db 0 |
1099 | db 0 |
- | 1100 | ||
- | 1101 | mode db 49 ;'1' |
|
- | 1102 | modeMenu dd 0 |
|
- | 1103 | coordModeMenu: |
|
- | 1104 | .x dw 100 |
|
- | 1105 | .y dw 200 |
|
- | 1106 | ||
957 | 1107 | ||
958 | align 4 |
1108 | align 4 |
959 | proclib_import: ;îïèñàíèå ýêñïîðòèðóåìûõ ôóíêöèé |
1109 | proclib_import: ;îïèñàíèå ýêñïîðòèðóåìûõ ôóíêöèé |
960 | OpenDialog_Init dd aOpenDialog_Init |
1110 | OpenDialog_Init dd aOpenDialog_Init |
961 | OpenDialog_Start dd aOpenDialog_Start |
1111 | OpenDialog_Start dd aOpenDialog_Start |
962 | dd 0,0 |
1112 | dd 0,0 |
963 | aOpenDialog_Init db 'OpenDialog_init',0 |
1113 | aOpenDialog_Init db 'OpenDialog_init',0 |
964 | aOpenDialog_Start db 'OpenDialog_start',0 |
1114 | aOpenDialog_Start db 'OpenDialog_start',0 |
965 | 1115 | ||
966 | head_f_i: |
1116 | head_f_i: |
967 | head_f_l db 'Ñèñòåìíàÿ îøèáêà',0 |
1117 | head_f_l db 'Ñèñòåìíàÿ îøèáêà',0 |
968 | err_message_found_lib0 db 'Íå íàéäåíà áèáëèîòåêà ',39,'proc_lib.obj',39,0 |
1118 | err_message_found_lib0 db 'Íå íàéäåíà áèáëèîòåêà ',39,'proc_lib.obj',39,0 |
969 | err_message_import0 db 'Îøèáêà ïðè èìïîðòå áèáëèîòåêè ',39,'proc_lib.obj',39,0 |
1119 | err_message_import0 db 'Îøèáêà ïðè èìïîðòå áèáëèîòåêè ',39,'proc_lib.obj',39,0 |
- | 1120 | err_message_found_lib1 db 'Íå íàéäåíà áèáëèîòåêà ',39,'kmenu.obj',39,0 ;'¥ ©¤¥ ¡¨¡«¨®â¥ª ' |
|
- | 1121 | err_message_import1 db 'Îøèáêà ïðè èìïîðòå áèáëèîòåêè ',39,'kmenu',39,0 ;'訡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ' |
|
970 | 1122 | ||
971 | system_dir0 db '/sys/lib/' |
1123 | system_dir0 db '/sys/lib/' |
972 | lib0_name db 'proc_lib.obj',0 |
1124 | lib0_name db 'proc_lib.obj',0 |
- | 1125 | lib1_name db 'kmenu.obj',0 |
|
973 | 1126 | ||
974 | ;library structures |
1127 | ;library structures |
975 | l_libs_start: |
1128 | l_libs_start: |
976 | 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 |
1129 | 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 |
- | 1130 | 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 |
|
977 | load_lib_end: |
1131 | load_lib_end: |
978 | - | ||
979 | ;txt_open db 'Îòêðûòü',0 |
- | |
980 | - | ||
981 | sys_path: rb 4096 |
- | |
982 | file_name: rb 4096 |
- | |
983 | plugin_path: rb 4096 |
- | |
984 | openfile_path: rb 4096 |
- | |
985 | filename_area: rb 256 |
- | |
986 | rb 1024 |
- | |
987 | procinfo process_information |
- | |
988 | ;!] |
1132 | ;!] |
989 | - | ||
990 | - | ||
991 | 1133 | ||
992 | edMaxSize = 510 ;òåïåðü ñ íîâûì êîìïîíåíòîì ìîæíî è 511 óêàçàòü |
1134 | edMaxSize = 510 ;òåïåðü ñ íîâûì êîìïîíåíòîì ìîæíî è 511 óêàçàòü |
993 | edMax = 0 ;max, size, pos |
1135 | edMax = 0 ;max, size, pos |
994 | 1136 | ||
995 | align 4 |
1137 | align 4 |
996 | editLU edit_box 180-buttonW,Otstup+buttonW,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax ;ed_focus |
1138 | editLU edit_box 180-buttonW,Otstup+buttonW,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax ;ed_focus |
997 | editLD edit_box 180-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax |
1139 | editLD edit_box 180-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax |
998 | editRU edit_box 180-buttonW,240,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax |
1140 | editRU edit_box 180-buttonW,240,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax |
999 | editRD edit_box 180-buttonW,240,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax |
1141 | editRD edit_box 180-buttonW,240,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax |
- | 1142 | ||
- | 1143 | align 4 |
|
- | 1144 | import_libkmenu: |
|
- | 1145 | kmenu_init dd akmenu_init |
|
- | 1146 | kmainmenu_draw dd akmainmenu_draw |
|
- | 1147 | kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent |
|
- | 1148 | ksubmenu_new dd aksubmenu_new |
|
- | 1149 | ksubmenu_delete dd aksubmenu_delete |
|
- | 1150 | ksubmenu_draw dd aksubmenu_draw |
|
- | 1151 | ksubmenu_add dd aksubmenu_add |
|
- | 1152 | kmenuitem_new dd akmenuitem_new |
|
- | 1153 | kmenuitem_delete dd akmenuitem_delete |
|
- | 1154 | kmenuitem_draw dd akmenuitem_draw |
|
- | 1155 | dd 0,0 |
|
- | 1156 | akmenu_init db 'kmenu_init',0 |
|
- | 1157 | akmainmenu_draw db 'kmainmenu_draw',0 |
|
- | 1158 | akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0 |
|
- | 1159 | aksubmenu_new db 'ksubmenu_new',0 |
|
- | 1160 | aksubmenu_delete db 'ksubmenu_delete',0 |
|
- | 1161 | aksubmenu_draw db 'ksubmenu_draw',0 |
|
- | 1162 | aksubmenu_add db 'ksubmenu_add',0 |
|
- | 1163 | akmenuitem_new db 'kmenuitem_new',0 |
|
- | 1164 | akmenuitem_delete db 'kmenuitem_delete',0 |
|
- | 1165 | akmenuitem_draw db 'kmenuitem_draw',0 |
|
1000 | 1166 | ||
1001 | mouse_dd dd ? |
1167 | mouse_dd dd ? |
1002 | sc system_colors |
1168 | sc system_colors |
- | 1169 | ||
- | 1170 | button_press rd 0 ;for kmenu |
|
- | 1171 | ||
- | 1172 | sys_path: rb 4096 |
|
- | 1173 | file_name: rb 4096 |
|
- | 1174 | plugin_path: rb 4096 |
|
- | 1175 | openfile_path: rb 4096 |
|
- | 1176 | filename_area: rb 256 |
|
- | 1177 | rb 1024 |
|
- | 1178 | procinfo process_information |
|
- | 1179 | pi rb 1024 |
|
- | 1180 | ||
1003 | 1181 | ||
1004 | dataBuffer: |
1182 | dataBuffer: |
1005 | .1: rb 512 |
1183 | .1: rb 512 |
1006 | .2: rb 512 |
1184 | .2: rb 512 |
1007 | .3: rb 512 |
1185 | .3: rb 512 |
1008 | .4: rb 512 |
1186 | .4: rb 512 |
1009 | .size1: rd 1 |
1187 | .size1: rd 1 |
1010 | .size2: rd 1 |
1188 | .size2: rd 1 |
1011 | .size3: rd 1 |
1189 | .size3: rd 1 |
1012 | .size4: rd 1 |
1190 | .size4: rd 1 |
1013 | ;255+255+2 |
1191 | ;255+255+2 |
1014 | ;äâà çàïàñíûõ áàéòà íåîáõîäèìû äëÿ òîãî ÷òî áû íå ïåïåðåïèñàòü ñëåäóþùèåé áàéòû, â êîíöå áóôåðà 0 |
1192 | ;äâà çàïàñíûõ áàéòà íåîáõîäèìû äëÿ òîãî ÷òî áû íå ïåïåðåïèñàòü ñëåäóþùèåé áàéòû, â êîíöå áóôåðà 0 |
1015 | dataBufferEnd: |
1193 | dataBufferEnd: |
1016 | 1194 | ||
1017 | 1195 | ||
1018 | I_END: |
1196 | I_END: |
1019 | rb 4096 |
1197 | rb 4096 |
1020 | align 16 |
1198 | align 16 |
1021 | STACKTOP: |
1199 | STACKTOP: |
1022 | 1200 | ||
1023 | MEM: |
1201 | MEM: |