Subversion Repositories Kolibri OS

Rev

Rev 7436 | Rev 7448 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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