Subversion Repositories Kolibri OS

Rev

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  nor the names of its contributors may
16
;    * Neither the name of the  nor the names of its contributors may
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, , , 2, 0x00AABBCC
1125
        mcall 8, , , 2, 0x00AABBCC
1126
        mcall 4, , 0x10FFFFFF, buttonText, buttonTextSize
1126
        mcall 4, , 0x10FFFFFF, buttonText, buttonTextSize
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, , <85,buttonH>, 4, 0x00AABBCC
1133
        mcall 8, , <85,buttonH>, 4, 0x00AABBCC
1134
        ;ëåâûé íèæíèé óãîë
1134
        ;ëåâûé íèæíèé óãîë
1135
        mcall 8, , <120,buttonH>, 5
1135
        mcall 8, , <120,buttonH>, 5
1136
        ;ïðàâûé âåðõíèé óãîë
1136
        ;ïðàâûé âåðõíèé óãîë
1137
        mcall 8, , <85,buttonH>, 6
1137
        mcall 8, , <85,buttonH>, 6
1138
        ;ïðàâûé íèæíèé óãîë
1138
        ;ïðàâûé íèæíèé óãîë
1139
        mcall 8, , <120,buttonH>, 7
1139
        mcall 8, , <120,buttonH>, 7
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, , , 8, 0x00FFFFFF
1163
        mcall 8, , , 8, 0x00FFFFFF
1164
        mcall 13, , , 0xAABBCC
1164
        mcall 13, , , 0xAABBCC
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,  ,,superText.lu,superTextSize
1499
   mcall 4,  ,,superText.lu,superTextSize
1500
   mcall 4, ,,superText.ld,superTextSize
1500
   mcall 4, ,,superText.ld,superTextSize
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:
1820
MEM: