Subversion Repositories Kolibri OS

Rev

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

Rev 1343 Rev 1390
1
;Îãðîìíàÿ áëàãîäàðíîñòü Maxxxx32, Diamond, Heavyiron
1
;Îãðîìíàÿ áëàãîäàðíîñòü Maxxxx32, Diamond, Heavyiron
2
;è äðóãèì ïðîãðàììèñòàì, à òàêæå
2
;è äðóãèì ïðîãðàììèñòàì, à òàêæå
3
;Òåïëîâó Àëåêñåþ ( www.lrz.land.ru)
3
;Òåïëîâó Àëåêñåþ ( www.lrz.land.ru)
4
 
4
 
5
 
5
 
6
use32
6
use32
7
  org 0x0
7
  org 0x0
8
  db 'MENUET01' ;èäåíòèô. èñïîëíÿåìîãî ôàéëà âñåãäà 8 áàéò
8
  db 'MENUET01' ;èäåíòèô. èñïîëíÿåìîãî ôàéëà âñåãäà 8 áàéò
9
  dd 0x01
9
  dd 0x01
10
  dd start
10
  dd start
11
  dd i_end ; ðàçìåð ïðèëîæåíèÿ
11
  dd i_end ; ðàçìåð ïðèëîæåíèÿ
12
  dd mem
12
  dd mem
13
  dd stacktop
13
  dd stacktop
14
  dd file_name;buf_cmd_lin
14
  dd file_name;buf_cmd_lin
15
  dd sys_path
15
  dd sys_path
16
 
16
 
17
MAX_COLOR_WORD_LEN equ 40
17
MAX_COLOR_WORD_LEN equ 40
18
maxChars equ 100002 ;(...+2)
18
maxChars equ 100002 ;(...+2)
19
BUF_SIZE equ 1000 ;bufer for copy|paste
19
BUF_SIZE equ 1000 ;bufer for copy|paste
20
maxColWords equ 10000
20
maxColWords equ 10000
21
 
21
 
22
 
22
 
23
include '../../macros.inc'
23
include '../../macros.inc'
24
;include '../../develop/libraries/box_lib/load_lib.mac'
24
include '../../develop/libraries/box_lib/load_lib.mac'
25
include 'load_lib.mac' ;include old file
-
 
26
include '../../develop/libraries/box_lib/trunk/tree_list.mac'
25
include '../../develop/libraries/box_lib/trunk/tree_list.mac'
27
include '../../develop/libraries/box_lib/trunk/editbox.mac'
26
include '../../develop/libraries/box_lib/trunk/editbox.mac'
28
 
27
 
29
include 'lang.inc'
28
include 'lang.inc'
30
include 't_data.inc'
29
include 't_data.inc'
31
include 'strlen.inc'
30
include 'strlen.inc'
32
include 't_work.inc' ;text work functions
31
include 't_work.inc' ;text work functions
33
include 't_draw.inc' ;draw main window functions
32
include 't_draw.inc' ;draw main window functions
34
include 't_button.inc'
33
include 't_button.inc'
35
 
34
 
36
@use_library
35
@use_library
37
 
36
 
38
start:
37
start:
39
  mov eax,48
38
  mov eax,48
40
  mov ebx,3
39
  mov ebx,3
41
  mov ecx,sc
40
  mov ecx,sc
42
  mov edx,sizeof.system_colors
41
  mov edx,sizeof.system_colors
43
  mcall
42
  mcall
44
 
43
 
45
  m2m [wScr.bckg_col],[sc.work]
44
  m2m [wScr.bckg_col],[sc.work]
46
  m2m [wScr.frnt_col],[sc.work_button]
45
  m2m [wScr.frnt_col],[sc.work_button]
47
  m2m [wScr.line_col],[sc.work_button_text]
46
  m2m [wScr.line_col],[sc.work_button_text]
48
 
47
 
49
  m2m [hScr.bckg_col],[sc.work]
48
  m2m [hScr.bckg_col],[sc.work]
50
  m2m [hScr.frnt_col],[sc.work_button]
49
  m2m [hScr.frnt_col],[sc.work_button]
51
  m2m [hScr.line_col],[sc.work_button_text]
50
  m2m [hScr.line_col],[sc.work_button_text]
52
 
51
 
53
 
52
 
54
  mcall 68,11
53
  mcall 68,11
55
  or eax,eax
54
  or eax,eax
56
  jz button.exit
55
  jz button.exit
57
 
56
 
58
  mcall 66,1,1 ;scan code
57
  mcall 66,1,1 ;scan code
59
  ;mcall 26,2,1,conv_tabl
58
  ;mcall 26,2,1,conv_tabl
60
 
59
 
61
  mov ecx,sizeof.symbol*maxChars
60
  mov ecx,sizeof.symbol*maxChars
62
  call mem_Alloc
61
  call mem_Alloc
63
  mov [tex],eax
62
  mov [tex],eax
64
  mov [tex_1],eax
63
  mov [tex_1],eax
65
  add [tex_1],sizeof.symbol
64
  add [tex_1],sizeof.symbol
66
  mov [tex_end],eax
65
  mov [tex_end],eax
67
  add [tex_end],sizeof.symbol*maxChars
66
  add [tex_end],sizeof.symbol*maxChars
68
 
67
 
69
  mcall 40,0x27
68
  mcall 40,0x27
70
 
69
 
71
  call Clear
70
  call Clear
72
 
71
 
73
;-------------------------------------------------
72
;-------------------------------------------------
74
  mov ecx,maxColWords*sizeof.TexColViv
73
  mov ecx,maxColWords*sizeof.TexColViv+40
75
  add ecx,40
74
  ;add ecx,40
76
  call mem_Alloc
75
  call mem_Alloc
77
  mov [options_file],eax
76
  mov [options_file],eax
78
  mov [options_file_end],eax
77
  mov [options_file_end],eax
79
  add [options_file_end],maxColWords*sizeof.TexColViv
78
  add [options_file_end],maxColWords*sizeof.TexColViv
80
  add [options_file_end],40
79
  add [options_file_end],40
81
 
80
 
82
;-------------------------------------------------
81
;-------------------------------------------------
83
; init bmp file
82
; init bmp file
84
  mov ecx,1200*18
83
  mov ecx,1200*18
85
  call mem_Alloc
84
  call mem_Alloc
86
  mov [bmp_icon],eax
85
  mov [bmp_icon],eax
87
 
86
 
88
  mov esi,file_name
87
  mov esi,file_name
89
  call strlen
88
  call strlen
90
  mov ecx,eax
89
  mov ecx,eax
91
  mov edi,buf_cmd_lin
90
  mov edi,buf_cmd_lin
92
  rep movsb
91
  rep movsb
93
 
92
 
94
  copy_path fn_icon,sys_path,file_name
93
  copy_path fn_icon,sys_path,file_name,0x0
95
 
94
 
96
  mov eax,70 ;load icon file
95
  mov eax,70 ;load icon file
97
  mov [run_file_70.func_n], 0
96
  mov [run_file_70.func_n], 0
98
  mov [run_file_70.param1], 54
97
  mov [run_file_70.param1], 54
99
  mov [run_file_70.param2], 0
98
  mov [run_file_70.param2], 0
100
  mov [run_file_70.param3], 1200*18
99
  mov [run_file_70.param3], 1200*18
101
  m2m [run_file_70.param4], [bmp_icon]
100
  m2m [run_file_70.param4], [bmp_icon]
102
  mov [run_file_70.rezerv], 0
101
  mov [run_file_70.rezerv], 0
103
  mov [run_file_70.name], file_name
102
  mov [run_file_70.name], file_name
104
  mov ebx,run_file_70
103
  mov ebx,run_file_70
105
  int 0x40
104
  int 0x40
106
 
105
 
107
  cmp ebx,-1
106
  cmp ebx,-1
108
  mov [err_ini0],1
107
  mov [err_ini0],1
109
  je @f ;if open file
108
  je @f ;if open file
110
    mov [err_ini0],0
109
    mov [err_ini0],0
111
  @@:
110
  @@:
112
 
111
 
113
load_libraries l_libs_start,load_lib_end
112
load_libraries l_libs_start,load_lib_end
114
 
113
 
115
;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
114
;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
116
	mov	ebp,lib0
115
	mov	ebp,lib0
117
	cmp	dword [ebp+ll_struc_size-4],0
116
	cmp	dword [ebp+ll_struc_size-4],0
118
	jz	@f
117
	jz	@f
119
	mcall	-1	;exit not correct
118
	mcall	-1	;exit not correct
120
@@:
119
@@:
121
	mov	ebp,lib1 ;
120
	mov	ebp,lib1 ;
122
	cmp	dword [ebp+ll_struc_size-4],0
121
	cmp	dword [ebp+ll_struc_size-4],0
123
	jz	@f
122
	jz	@f
124
	mcall	-1	;exit not correct
123
	mcall	-1	;exit not correct
125
@@:
124
@@:
126
 
125
 
127
 
126
 
128
;---------------------------------------------------------------------
127
;---------------------------------------------------------------------
129
  push dword tree1
128
  push dword tree1
130
  call dword[tl_data_init]
129
  call dword[tl_data_init]
131
;---------------------------------------------------------------------
130
;---------------------------------------------------------------------
132
; ÷èòàåì bmp ôàéë ñ êóðñîðàìè è ëèíèÿìè
131
; ÷èòàåì bmp ôàéë ñ êóðñîðàìè è ëèíèÿìè
133
  copy_path fn_icon_tl_sys,sys_path,file_name
132
  copy_path fn_icon_tl_sys,sys_path,file_name,0x0
134
 
133
 
135
  mov ecx,3*256*13
134
  mov ecx,3*256*13
136
  call mem_Alloc
135
  call mem_Alloc
137
  mov dword[tree1.data_img_sys],eax
136
  mov dword[tree1.data_img_sys],eax
138
 
137
 
139
  ;mov [run_file_70.func_n], 0
138
  ;mov [run_file_70.func_n], 0
140
  ;mov [run_file_70.param1], 54
139
  ;mov [run_file_70.param1], 54
141
  ;mov [run_file_70.param2], 0
140
  ;mov [run_file_70.param2], 0
142
  mov [run_file_70.param3], 3*256*13
141
  mov [run_file_70.param3], 3*256*13
143
  mov [run_file_70.param4], eax
142
  mov [run_file_70.param4], eax
144
  ;mov [run_file_70.rezerv], 0
143
  ;mov [run_file_70.rezerv], 0
145
  ;mov [run_file_70.name], file_name
144
  ;mov [run_file_70.name], file_name
146
 
145
 
147
  mov eax,70 ;load icon file
146
  mov eax,70 ;load icon file
148
  mov ebx,run_file_70
147
  mov ebx,run_file_70
149
  int 0x40
148
  int 0x40
150
  cmp ebx,0
149
  cmp ebx,0
151
  jg @f
150
  jg @f
152
    mov dword[tree1.data_img_sys],0
151
    mov dword[tree1.data_img_sys],0
153
  @@:
152
  @@:
154
;---------------------------------------------------------------------
153
;---------------------------------------------------------------------
155
; ÷èòàåì bmp ôàéë ñ èêîíêàìè óçëîâ
154
; ÷èòàåì bmp ôàéë ñ èêîíêàìè óçëîâ
156
  copy_path fn_icon_tl_nod,sys_path,file_name
155
  copy_path fn_icon_tl_nod,sys_path,file_name,0x0
157
 
156
 
158
  mov ecx,3*256*2
157
  mov ecx,3*256*2
159
  call mem_Alloc
158
  call mem_Alloc
160
  mov dword[tree1.data_img],eax
159
  mov dword[tree1.data_img],eax
161
 
160
 
162
;  mov [run_file_70.func_n], 0
161
;  mov [run_file_70.func_n], 0
163
;  mov [run_file_70.param1], 54
162
;  mov [run_file_70.param1], 54
164
;  mov [run_file_70.param2], 0
163
;  mov [run_file_70.param2], 0
165
  mov [run_file_70.param3], 3*256*2
164
  mov [run_file_70.param3], 3*256*2
166
  mov [run_file_70.param4], eax
165
  mov [run_file_70.param4], eax
167
;  mov [run_file_70.rezerv], 0
166
;  mov [run_file_70.rezerv], 0
168
;  mov [run_file_70.name], file_name
167
;  mov [run_file_70.name], file_name
169
 
168
 
170
  mov eax,70 ;load icon file
169
  mov eax,70 ;load icon file
171
  mov ebx,run_file_70
170
  mov ebx,run_file_70
172
  int 0x40
171
  int 0x40
173
  cmp ebx,0
172
  cmp ebx,0
174
  jg @f
173
  jg @f
175
    mov dword[tree1.data_img],0
174
    mov dword[tree1.data_img],0
176
  @@:
175
  @@:
177
;------------------------------------------------------------------------------
176
;------------------------------------------------------------------------------
178
  copy_path fn_syntax_dir,sys_path,file_name ;áåðåì ïóòü ê ïàïêå ñ ôàéëàìè ñèíòàêñèñà
177
  copy_path fn_syntax_dir,sys_path,file_name,0x0 ;áåðåì ïóòü ê ïàïêå ñ ôàéëàìè ñèíòàêñèñà
179
  mov eax,70
178
  mov eax,70
180
  mov ebx,tree_file_struct
179
  mov ebx,tree_file_struct
181
  int 0x40
180
  int 0x40
182
 
181
 
183
cmp ebx,-1
182
cmp ebx,-1
184
je .end_dir_init
183
je .end_dir_init
185
 
184
 
186
  mov eax,dir_mem
185
  mov eax,dir_mem
187
  add eax,32+4+1+3+4*6+8
186
  add eax,32+4+1+3+4*6+8
188
mov ecx,ebx
187
mov ecx,ebx
189
@@:
188
@@:
190
  cmp byte[eax],'.' ;ôèëüòðóåì ôàéëû ñ èìåíàìè '.' è '..'
189
  cmp byte[eax],'.' ;ôèëüòðóåì ôàéëû ñ èìåíàìè '.' è '..'
191
  je .filter
190
  je .filter
192
    push dword tree1
191
    push dword tree1
193
    push dword 0x10000 ;1*2^16 - ãäå 1 íîìåð èêîíêè ñ êíèãîé
192
    push dword 0x10000 ;1*2^16 - ãäå 1 íîìåð èêîíêè ñ êíèãîé
194
    push dword eax
193
    push dword eax
195
    call dword[tl_node_add]
194
    call dword[tl_node_add]
196
 
195
 
197
    push dword tree1
196
    push dword tree1
198
    call dword[tl_cur_next]
197
    call dword[tl_cur_next]
199
  .filter:
198
  .filter:
200
  add eax,304
199
  add eax,304
201
  loop @b
200
  loop @b
202
.end_dir_init:
201
.end_dir_init:
203
 
202
 
204
;  push dword tree1
203
;  push dword tree1
205
;  push dword 0
204
;  push dword 0
206
;  push dword file_name
205
;  push dword file_name
207
;  call dword[tl_node_add]
206
;  call dword[tl_node_add]
208
 
207
 
209
 
208
 
210
;--- load color option file ---
209
;--- load color option file ---
211
  call InitColText
210
  call InitColText
212
 
211
 
213
;--- get cmd line ---
212
;--- get cmd line ---
214
  cmp byte[buf_cmd_lin+3],0 ;buf_cmd_lin
213
  cmp byte[buf_cmd_lin+3],0 ;buf_cmd_lin
215
  je @f ;if file names exist
214
  je @f ;if file names exist
216
    mov esi,buf_cmd_lin
215
    mov esi,buf_cmd_lin
217
    call strlen ;eax=strlen
216
    call strlen ;eax=strlen
218
    mov [edit1.size],eax
217
    mov [edit1.size],eax
219
    call but_OpenFile
218
    call but_OpenFile
220
  @@:
219
  @@:
221
 
220
 
222
 
221
 
223
red_win:
222
red_win:
224
  mcall 12,1
223
  mcall 12,1
225
 
224
 
226
  xor eax,eax
225
  xor eax,eax
227
  mov ebx,10*65536+485
226
  mov ebx,10*65536+485
228
  mov ecx,10*65536+280
227
  mov ecx,10*65536+280
229
  mov edx,[sc.work]
228
  mov edx,[sc.work]
230
  or  edx,0x73000000
229
  or  edx,0x73000000
231
  mov edi,hed
230
  mov edi,hed
232
  mcall
231
  mcall
233
 
232
 
234
  mcall 9,procinfo,-1
233
  mcall 9,procinfo,-1
235
  call EvSize
234
  call EvSize
236
 
235
 
237
  mov eax,13 ;rect
236
  mov eax,13 ;rect
238
  xor ebx,ebx
237
  xor ebx,ebx
239
  xor ecx,ecx
238
  xor ecx,ecx
240
  mov bx,word [procinfo.client_box.width]
239
  mov bx,word [procinfo.client_box.width]
241
  inc bx
240
  inc bx
242
  mov cx,word [wndMain.top]
241
  mov cx,word [wndMain.top]
243
  mcall
242
  mcall
244
 
243
 
245
  push dword edit1
244
  push dword edit1
246
  call [edit_box_draw]
245
  call [edit_box_draw]
247
 
246
 
248
; draw for Menu 1
247
; draw for Menu 1
249
  push dword menu_data_1
248
  push dword menu_data_1
250
  call [menu_bar_draw] 
249
  call [menu_bar_draw] 
251
 
250
 
252
  call draw_but_toolbar
251
  call draw_but_toolbar
253
 
252
 
254
  cmp [err_ini0],1
253
  cmp [err_ini0],1
255
  jne @f
254
  jne @f
256
    mov eax,4
255
    mov eax,4
257
    mov ebx,[wndMain.left]
256
    mov ebx,[wndMain.left]
258
    add ebx,[recMain.left]
257
    add ebx,[recMain.left]
259
    shl ebx,16
258
    shl ebx,16
260
    add ebx,[wndMain.top]
259
    add ebx,[wndMain.top]
261
    add ebx,[recMain.top]
260
    add ebx,[recMain.top]
262
    mov ecx,0x80ff0000
261
    mov ecx,0x80ff0000
263
    mov edx,txtErrIni0
262
    mov edx,txtErrIni0
264
    int 0x40
263
    int 0x40
265
 
264
 
266
    add ebx,10 ;move <--y-->
265
    add ebx,10 ;move <--y-->
267
    mov ecx,0x80ff0080
266
    mov ecx,0x80ff0080
268
    mov edx,file_name
267
    mov edx,file_name
269
    int 0x40
268
    int 0x40
270
  @@:
269
  @@:
271
 
270
 
272
  cmp [err_ini0],1
271
  cmp [err_ini0],1
273
  je @f
272
  je @f
274
    call draw_main_win
273
    call draw_main_win
275
  @@:
274
  @@:
276
 
275
 
277
  cmp [err_opn],1
276
  cmp [err_opn],1
278
  jne @f
277
  jne @f
279
    ;mov eax,4
278
    ;mov eax,4
280
    mov ebx,10*65536+35
279
    mov ebx,10*65536+35
281
    mov ecx,0x80ff0000
280
    mov ecx,0x80ff0000
282
    mov edx,txtErrOpen
281
    mov edx,txtErrOpen
283
    mcall
282
    mcall
284
  @@:
283
  @@:
285
 
284
 
286
  mcall 12,2
285
  mcall 12,2
287
 
286
 
288
still:
287
still:
289
  mov eax,10
288
  mov eax,10
290
  mcall
289
  mcall
291
 
290
 
292
  cmp al,1 ;èçì. ïîëîæåíèå îêíà
291
  cmp al,1 ;èçì. ïîëîæåíèå îêíà
293
  jz red_win
292
  jz red_win
294
  cmp al,2
293
  cmp al,2
295
  jz key
294
  jz key
296
  cmp al,3
295
  cmp al,3
297
  jz button
296
  jz button
298
  cmp al,6
297
  cmp al,6
299
  jz mouse
298
  jz mouse
300
 
299
 
301
  jmp still
300
  jmp still
302
 
301
 
303
 
302
 
304
 
303
 
305
mouse:
304
mouse:
306
  push dword edit1
305
  push dword edit1
307
  call [edit_box_mouse]
306
  call [edit_box_mouse]
308
 
307
 
309
  test word [edit1.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
308
  test word [edit1.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
310
  jne still
309
  jne still
311
 
310
 
312
;-----------------------------------------------
311
;-----------------------------------------------
313
  cmp [hScr.delta2],0
312
  cmp [hScr.delta2],0
314
  jne .horizontal
313
  jne .horizontal
315
.vertical:
314
.vertical:
316
  mov eax,[wScr.max_area]
315
  mov eax,[wScr.max_area]
317
  cmp eax,[wScr.cur_area]
316
  cmp eax,[wScr.cur_area]
318
  jbe .horizontal
317
  jbe .horizontal
319
; mouse event for Vertical ScrollBar
318
; mouse event for Vertical ScrollBar
320
  push dword wScr
319
  push dword wScr
321
  call [scrollbar_ver_mouse]
320
  call [scrollbar_ver_mouse]
322
  mov eax,wScr.redraw
321
  mov eax,wScr.redraw
323
  xor ebx,ebx
322
  xor ebx,ebx
324
  cmp [eax],ebx
323
  cmp [eax],ebx
325
  je @f
324
  je @f
326
  mov [eax],ebx
325
  mov [eax],ebx
327
 
326
 
328
  call draw_main_win
327
  call draw_main_win
329
  ;call mouse_wnd_main
328
  ;call mouse_wnd_main
330
  jmp still
329
  jmp still
331
@@:
330
@@:
332
  cmp [wScr.delta2],0
331
  cmp [wScr.delta2],0
333
  jne still
332
  jne still
334
.horizontal:
333
.horizontal:
335
    mov   eax,[hScr.max_area]
334
    mov   eax,[hScr.max_area]
336
    cmp   eax,[hScr.cur_area]
335
    cmp   eax,[hScr.cur_area]
337
    jbe   .other
336
    jbe   .other
338
; mouse event for Horizontal ScrollBar
337
; mouse event for Horizontal ScrollBar
339
	push dword hScr
338
	push dword hScr
340
	call [scrollbar_hor_mouse]
339
	call [scrollbar_hor_mouse]
341
	mov eax,hScr.redraw
340
	mov eax,hScr.redraw
342
	xor ebx,ebx
341
	xor ebx,ebx
343
	cmp [eax],ebx
342
	cmp [eax],ebx
344
	je .other
343
	je .other
345
	mov [eax],ebx
344
	mov [eax],ebx
346
  call draw_main_win
345
  call draw_main_win
347
  jmp still
346
  jmp still
348
.other:
347
.other:
349
  cmp [wScr.delta2],0
348
  cmp [wScr.delta2],0
350
  jne still
349
  jne still
351
  cmp [hScr.delta2],0
350
  cmp [hScr.delta2],0
352
  jne still
351
  jne still
353
 
352
 
354
  call mouse_wnd_main
353
  call mouse_wnd_main
355
 
354
 
356
  cmp byte[panel_id],TE_PANEL_FIND ;if not panel
355
  cmp byte[panel_id],TE_PANEL_FIND ;if not panel
357
  jne @f
356
  jne @f
358
    push dword edit2
357
    push dword edit2
359
    call [edit_box_mouse]
358
    call [edit_box_mouse]
360
  @@:
359
  @@:
361
  cmp byte[panel_id],TE_PANEL_SYNTAX ;if not panel
360
  cmp byte[panel_id],TE_PANEL_SYNTAX ;if not panel
362
  jne .menu_bar_1 ;@f
361
  jne .menu_bar_1 ;@f
363
  push dword tree1
362
  push dword tree1
364
  call [tl_mouse]
363
  call [tl_mouse]
365
;-----------------------------------------------
364
;-----------------------------------------------
366
.menu_bar_1:
365
.menu_bar_1:
367
  mov [menu_data_1.get_mouse_flag],1
366
  mov [menu_data_1.get_mouse_flag],1
368
; mouse event for Menu 1
367
; mouse event for Menu 1
369
  push	dword menu_data_1
368
  push	dword menu_data_1
370
  call	[menu_bar_mouse]
369
  call	[menu_bar_mouse]
371
  cmp	[menu_data_1.click],dword 1
370
  cmp	[menu_data_1.click],dword 1
372
  jne	.mnu_1
371
  jne	.mnu_1
373
  cmp [menu_data_1.cursor_out],dword 4
372
  cmp [menu_data_1.cursor_out],dword 4
374
  je	button.exit	
373
  je	button.exit	
375
  cmp [menu_data_1.cursor_out],dword 3
374
  cmp [menu_data_1.cursor_out],dword 3
376
  jne	@f
375
  jne	@f
377
    call but_SaveFile
376
    call but_SaveFile
378
  @@:
377
  @@:
379
  cmp [menu_data_1.cursor_out],dword 2
378
  cmp [menu_data_1.cursor_out],dword 2
380
  jne	@f
379
  jne	@f
381
    call but_OpenFile
380
    call but_OpenFile
382
  @@:
381
  @@:
383
  cmp [menu_data_1.cursor_out],dword 1
382
  cmp [menu_data_1.cursor_out],dword 1
384
  jne	@f
383
  jne	@f
385
    call but_NewFile
384
    call but_NewFile
386
  @@:
385
  @@:
387
  ;cmp [menu_data_1.cursor_out],dword 0
386
  ;cmp [menu_data_1.cursor_out],dword 0
388
  ;jne @f
387
  ;jne @f
389
.mnu_1:
388
.mnu_1:
390
  jmp still
389
  jmp still
391
;---------------------------------------------------------------------
390
;---------------------------------------------------------------------
392
 
391
 
393
KeyConvertToASCII:
392
KeyConvertToASCII:
394
  mov ebx,conv_tabl ;convert scan to ascii
393
  mov ebx,conv_tabl ;convert scan to ascii
395
  ror ax,8
394
  ror ax,8
396
  xor ah,ah
395
  xor ah,ah
397
  add bx,ax
396
  add bx,ax
398
  mov ah,byte[ebx]
397
  mov ah,byte[ebx]
399
  ret
398
  ret
400
 
399
 
401
key:
400
key:
402
  mov ecx,1
401
  mov ecx,1
403
  mcall 66,3
402
  mcall 66,3
404
  xor ebx,ebx
403
  xor ebx,ebx
405
  test al,0x03 ;[Shift]
404
  test al,0x03 ;[Shift]
406
  jz @f
405
  jz @f
407
    inc cl
406
    inc cl
408
    or ebx,KM_SHIFT
407
    or ebx,KM_SHIFT
409
  @@:
408
  @@:
410
  test al,0x0c ;[Ctrl]
409
  test al,0x0c ;[Ctrl]
411
  jz @f
410
  jz @f
412
    or ebx,KM_CTRL
411
    or ebx,KM_CTRL
413
  @@:
412
  @@:
414
  test al,0x30 ;[Alt]
413
  test al,0x30 ;[Alt]
415
  jz @f
414
  jz @f
416
    or ebx,KM_ALT
415
    or ebx,KM_ALT
417
  @@:
416
  @@:
418
  test al,0x80 ;[NumLock]
417
  test al,0x80 ;[NumLock]
419
  jz @f
418
  jz @f
420
    or ebx,KM_NUMLOCK
419
    or ebx,KM_NUMLOCK
421
  @@:
420
  @@:
422
 
421
 
423
  mov [keyUpr],ebx
422
  mov [keyUpr],ebx
424
  mcall 26,2,,conv_tabl
423
  mcall 26,2,,conv_tabl
425
  mcall 2
424
  mcall 2
426
 
425
 
427
;  push dword tree1 ;???
426
;  push dword tree1 ;???
428
;  call [tl_key]    ;???
427
;  call [tl_key]    ;???
429
 
428
 
430
  test word [edit1.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
429
  test word [edit1.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
431
  je @f
430
  je @f
432
    cmp ah,0x80 ;if key up
431
    cmp ah,0x80 ;if key up
433
    ja still
432
    ja still
434
    cmp ah,42 ;[Shift] (left)
433
    cmp ah,42 ;[Shift] (left)
435
    je still
434
    je still
436
    cmp ah,54 ;[Shift] (right)
435
    cmp ah,54 ;[Shift] (right)
437
    je still
436
    je still
438
    cmp ah,56 ;[Alt]
437
    cmp ah,56 ;[Alt]
439
    je still
438
    je still
440
    cmp ah,29 ;[Ctrl]
439
    cmp ah,29 ;[Ctrl]
441
    je still
440
    je still
442
    cmp ah,69 ;[Pause Break]
441
    cmp ah,69 ;[Pause Break]
443
    je still
442
    je still
444
;    cmp [keyUpr],0
443
;    cmp [keyUpr],0
445
;    jne still
444
;    jne still
446
 
445
 
447
    call KeyConvertToASCII
446
    call KeyConvertToASCII
448
 
447
 
449
    push dword edit1
448
    push dword edit1
450
    call [edit_box_key]
449
    call [edit_box_key]
451
    jmp still
450
    jmp still
452
  @@:
451
  @@:
453
 
452
 
454
  test word [edit2.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
453
  test word [edit2.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
455
  je @f
454
  je @f
456
    cmp ah,0x80 ;if key up
455
    cmp ah,0x80 ;if key up
457
    ja still
456
    ja still
458
    cmp ah,42 ;[Shift] (left)
457
    cmp ah,42 ;[Shift] (left)
459
    je still
458
    je still
460
    cmp ah,54 ;[Shift] (right)
459
    cmp ah,54 ;[Shift] (right)
461
    je still
460
    je still
462
    cmp ah,56 ;[Alt]
461
    cmp ah,56 ;[Alt]
463
    je still
462
    je still
464
    cmp ah,29 ;[Ctrl]
463
    cmp ah,29 ;[Ctrl]
465
    je still
464
    je still
466
    cmp ah,69 ;[Pause Break]
465
    cmp ah,69 ;[Pause Break]
467
    je still
466
    je still
468
;    cmp [keyUpr],0
467
;    cmp [keyUpr],0
469
;    jne still
468
;    jne still
470
 
469
 
471
    call KeyConvertToASCII
470
    call KeyConvertToASCII
472
    push dword edit2
471
    push dword edit2
473
    call [edit_box_key]
472
    call [edit_box_key]
474
    jmp still
473
    jmp still
475
  @@:
474
  @@:
476
 
475
 
477
  cmp ah,KEY_F1 ;[F1]
476
  cmp ah,KEY_F1 ;[F1]
478
  jne @f
477
  jne @f
479
    call ShowHelpF1
478
    call ShowHelpF1
480
    jmp still
479
    jmp still
481
  @@:
480
  @@:
482
  cmp ah,KEY_F3 ;[F3]
481
  cmp ah,KEY_F3 ;[F3]
483
  jne @f
482
  jne @f
484
    call but_FindText
483
    call but_FindText
485
    jmp still
484
    jmp still
486
  @@:
485
  @@:
487
 
486
 
488
  test [keyUpr],KM_CTRL ;Ctrl+...
487
  test [keyUpr],KM_CTRL ;Ctrl+...
489
  jz .key_Ctrl
488
  jz .key_Ctrl
490
 
489
 
491
    cmp ah,24 ;Ctrl+O
490
    cmp ah,24 ;Ctrl+O
492
    jne @f
491
    jne @f
493
      call but_OpenFile
492
      call but_OpenFile
494
    @@:
493
    @@:
495
    cmp ah,33 ;Ctrl+F
494
    cmp ah,33 ;Ctrl+F
496
    jne @f
495
    jne @f
497
    cmp byte[panel_id],TE_PANEL_FIND
496
    cmp byte[panel_id],TE_PANEL_FIND
498
    je @f
497
    je @f
499
      call but_find
498
      call but_find
500
    @@:
499
    @@:
501
    cmp ah,44 ;Ctrl+Z
500
    cmp ah,44 ;Ctrl+Z
502
    je but_undo
501
    je but_undo
503
    cmp ah,46 ;Ctrl+C
502
    cmp ah,46 ;Ctrl+C
504
    jne @f
503
    jne @f
505
      call but_Copy
504
      call but_Copy
506
    @@:
505
    @@:
507
    cmp ah,47 ;Ctrl+V
506
    cmp ah,47 ;Ctrl+V
508
    je but_paste
507
    je but_paste
509
    cmp ah,49 ;Ctrl+N
508
    cmp ah,49 ;Ctrl+N
510
    jne @f
509
    jne @f
511
      call but_NewFile
510
      call but_NewFile
512
    @@:
511
    @@:
513
    cmp ah,199 ;Ctrl+Home
512
    cmp ah,199 ;Ctrl+Home
514
    jne @f
513
    jne @f
515
      call but_CtrlHome
514
      call but_CtrlHome
516
    @@:
515
    @@:
517
    ;jmp still
516
    ;jmp still
518
  .key_Ctrl:
517
  .key_Ctrl:
519
 
518
 
520
  test [keyUpr],KM_SHIFT ;Shift+...
519
  test [keyUpr],KM_SHIFT ;Shift+...
521
  jz .key_Shift
520
  jz .key_Shift
522
    cmp ah,72 ;Shift+Up
521
    cmp ah,72 ;Shift+Up
523
    jne @f
522
    jne @f
524
      call sel_KeyUp
523
      call sel_KeyUp
525
    @@:
524
    @@:
526
    cmp ah,75 ;Shift+Left
525
    cmp ah,75 ;Shift+Left
527
    jne @f
526
    jne @f
528
      call sel_KeyLeft
527
      call sel_KeyLeft
529
    @@:
528
    @@:
530
    cmp ah,77 ;Shift+Right
529
    cmp ah,77 ;Shift+Right
531
    jne @f
530
    jne @f
532
      call sel_KeyRight
531
      call sel_KeyRight
533
    @@:
532
    @@:
534
    cmp ah,80 ;Shift+Down
533
    cmp ah,80 ;Shift+Down
535
    jne @f
534
    jne @f
536
      call sel_KeyDown
535
      call sel_KeyDown
537
    @@:
536
    @@:
538
    ;mov [dragk],1 ;íà÷èíàåì âûäåëåíèå îò êëàâèàòóðû
537
    ;mov [dragk],1 ;íà÷èíàåì âûäåëåíèå îò êëàâèàòóðû
539
    jmp .key_MoveCur
538
    jmp .key_MoveCur
540
  .key_Shift:
539
  .key_Shift:
541
;-------------------------------------------------
540
;-------------------------------------------------
542
  cmp ah,72 ;178 ;Up
541
  cmp ah,72 ;178 ;Up
543
  jne @f
542
  jne @f
544
    push dx
543
    push dx
545
    call draw_cursor_sumb
544
    call draw_cursor_sumb
546
    call CurMoveUp
545
    call CurMoveUp
547
    cmp dl,8
546
    cmp dl,8
548
    jne .no_red_0
547
    jne .no_red_0
549
      call OnInitialUpdate
548
      call OnInitialUpdate
550
      call draw_main_win
549
      call draw_main_win
551
      pop dx
550
      pop dx
552
      jmp @f
551
      jmp @f
553
    .no_red_0:
552
    .no_red_0:
554
    call draw_main_cursor
553
    call draw_main_cursor
555
    pop dx
554
    pop dx
556
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
555
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
557
  @@:
556
  @@:
558
  cmp ah,80 ;177 ;Down
557
  cmp ah,80 ;177 ;Down
559
  jne @f
558
  jne @f
560
    push dx
559
    push dx
561
    call draw_cursor_sumb
560
    call draw_cursor_sumb
562
    call CurMoveDown
561
    call CurMoveDown
563
    cmp dl,8
562
    cmp dl,8
564
    jne .no_red_1
563
    jne .no_red_1
565
      call OnInitialUpdate
564
      call OnInitialUpdate
566
      call draw_main_win
565
      call draw_main_win
567
      pop dx
566
      pop dx
568
      jmp @f
567
      jmp @f
569
    .no_red_1:
568
    .no_red_1:
570
    call draw_main_cursor
569
    call draw_main_cursor
571
    pop dx
570
    pop dx
572
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
571
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
573
  @@:
572
  @@:
574
  cmp ah,75 ;176 ;Left
573
  cmp ah,75 ;176 ;Left
575
  jne @f
574
  jne @f
576
    push dx
575
    push dx
577
    call draw_cursor_sumb
576
    call draw_cursor_sumb
578
    call CurMoveLeft
577
    call CurMoveLeft
579
    cmp dl,8
578
    cmp dl,8
580
    jne .no_red_2
579
    jne .no_red_2
581
      call OnInitialUpdate
580
      call OnInitialUpdate
582
      call draw_main_win
581
      call draw_main_win
583
      pop dx
582
      pop dx
584
      jmp @f
583
      jmp @f
585
    .no_red_2:
584
    .no_red_2:
586
    call draw_main_cursor
585
    call draw_main_cursor
587
    pop dx
586
    pop dx
588
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
587
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
589
  @@:
588
  @@:
590
  cmp ah,77 ;179 ;Right
589
  cmp ah,77 ;179 ;Right
591
  jne @f
590
  jne @f
592
    push dx
591
    push dx
593
    call draw_cursor_sumb
592
    call draw_cursor_sumb
594
    call CurMoveRight
593
    call CurMoveRight
595
    cmp dl,8
594
    cmp dl,8
596
    jne .no_red_3
595
    jne .no_red_3
597
      call OnInitialUpdate
596
      call OnInitialUpdate
598
      call draw_main_win
597
      call draw_main_win
599
      pop dx
598
      pop dx
600
      jmp @f
599
      jmp @f
601
    .no_red_3:
600
    .no_red_3:
602
    call draw_main_cursor
601
    call draw_main_cursor
603
    pop dx
602
    pop dx
604
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
603
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
605
  @@:
604
  @@:
606
  cmp ah,71 ;180 ;Home
605
  cmp ah,71 ;180 ;Home
607
  jne @f
606
  jne @f
608
    push dx
607
    push dx
609
    call draw_cursor_sumb
608
    call draw_cursor_sumb
610
    call CurMoveX_FirstChar
609
    call CurMoveX_FirstChar
611
    cmp dl,8
610
    cmp dl,8
612
    jne .no_red_4
611
    jne .no_red_4
613
      call OnInitialUpdate
612
      call OnInitialUpdate
614
      call draw_main_win
613
      call draw_main_win
615
      pop dx
614
      pop dx
616
      jmp @f
615
      jmp @f
617
    .no_red_4:
616
    .no_red_4:
618
    call draw_main_cursor
617
    call draw_main_cursor
619
    pop dx
618
    pop dx
620
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
619
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
621
  @@:
620
  @@:
622
  cmp ah,79 ;181 ;End
621
  cmp ah,79 ;181 ;End
623
  jne @f
622
  jne @f
624
    push dx
623
    push dx
625
    call draw_cursor_sumb
624
    call draw_cursor_sumb
626
    call CurMoveX_LastChar
625
    call CurMoveX_LastChar
627
    cmp dl,8
626
    cmp dl,8
628
    jne .no_red_5
627
    jne .no_red_5
629
      call OnInitialUpdate
628
      call OnInitialUpdate
630
      call draw_main_win
629
      call draw_main_win
631
      pop dx
630
      pop dx
632
      jmp @f
631
      jmp @f
633
    .no_red_5:
632
    .no_red_5:
634
    call draw_main_cursor
633
    call draw_main_cursor
635
    pop dx
634
    pop dx
636
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
635
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
637
  @@:
636
  @@:
638
  cmp ah,73 ;184 ;PageUp
637
  cmp ah,73 ;184 ;PageUp
639
  jne @f
638
  jne @f
640
    push dx
639
    push dx
641
    call CurMovePageUp
640
    call CurMovePageUp
642
    cmp dl,0
641
    cmp dl,0
643
    pop dx
642
    pop dx
644
    je @f
643
    je @f
645
    call OnInitialUpdate
644
    call OnInitialUpdate
646
    call draw_main_win
645
    call draw_main_win
647
  @@:
646
  @@:
648
  cmp ah,81 ;183 ;PageDown
647
  cmp ah,81 ;183 ;PageDown
649
  jne @f
648
  jne @f
650
    push dx
649
    push dx
651
    call CurMovePageDown
650
    call CurMovePageDown
652
    cmp dl,0
651
    cmp dl,0
653
    pop dx
652
    pop dx
654
    je @f
653
    je @f
655
    call OnInitialUpdate
654
    call OnInitialUpdate
656
    call draw_main_win
655
    call draw_main_win
657
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
656
    mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
658
  @@:
657
  @@:
659
;-------------------------------------------------
658
;-------------------------------------------------
660
    cmp [keyUpr],0
659
    cmp [keyUpr],0
661
    jne still
660
    jne still
662
  .key_MoveCur:
661
  .key_MoveCur:
663
 
662
 
664
  cmp ah,69 ;[Pause Break]
663
  cmp ah,69 ;[Pause Break]
665
  je still
664
  je still
666
  cmp ah,120 ;[Fn]
665
  cmp ah,120 ;[Fn]
667
  je still
666
  je still
668
  cmp ah,0x80 ;if key up
667
  cmp ah,0x80 ;if key up
669
  ja still
668
  ja still
670
  call KeyConvertToASCII
669
  call KeyConvertToASCII
671
 
670
 
672
  ;mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
671
  ;mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
673
 
672
 
674
  push ebx
673
  push ebx
675
  xor ebx,ebx
674
  xor ebx,ebx
676
  mov bl,ah
675
  mov bl,ah
677
  add ebx,EvChar ;add char to text
676
  add ebx,EvChar ;add char to text
678
  cmp byte [ebx],1
677
  cmp byte [ebx],1
679
  jne @f
678
  jne @f
680
    push esi edi
679
    push esi edi
681
    call SetUndo
680
    call SetUndo
682
    mov bx,0x0101
681
    mov bx,0x0101
683
    call SelTextDel
682
    call SelTextDel
684
    mov esi,1
683
    mov esi,1
685
    mov byte [key_new],ah
684
    mov byte [key_new],ah
686
    mov edi,dword key_new
685
    mov edi,dword key_new
687
    cmp [curMod],1
686
    cmp [curMod],1
688
    je .no_ins_mod
687
    je .no_ins_mod
689
      call TextDel
688
      call TextDel
690
      xor bl,1
689
      xor bl,1
691
    .no_ins_mod:
690
    .no_ins_mod:
692
    call TextAdd
691
    call TextAdd
693
    call draw_but_toolbar
692
    call draw_but_toolbar
694
    cmp byte [key_new],13
693
    cmp byte [key_new],13
695
    jne .dr_m_win
694
    jne .dr_m_win
696
      call draw_main_win
695
      call draw_main_win
697
      jmp .dr_cur_l
696
      jmp .dr_cur_l
698
    .dr_m_win:
697
    .dr_m_win:
699
      call draw_cur_line
698
      call draw_cur_line
700
    .dr_cur_l:
699
    .dr_cur_l:
701
    pop edi esi
700
    pop edi esi
702
  @@:
701
  @@:
703
  pop ebx
702
  pop ebx
704
 
703
 
705
  cmp ah,8 ;[<-]
704
  cmp ah,8 ;[<-]
706
  jne @f
705
  jne @f
707
    push ax bx
706
    push ax bx
708
    call SetUndo
707
    call SetUndo
709
 
708
 
710
    mov bx,0x0001
709
    mov bx,0x0001
711
    call SelTextDel
710
    call SelTextDel
712
    cmp al,1
711
    cmp al,1
713
    je .del_one_b
712
    je .del_one_b
714
      call TextDel
713
      call TextDel
715
    .del_one_b:
714
    .del_one_b:
716
    call draw_but_toolbar
715
    call draw_but_toolbar
717
    call draw_main_win
716
    call draw_main_win
718
    pop bx ax
717
    pop bx ax
719
  @@:
718
  @@:
720
 
719
 
721
  cmp ah,182 ;Delete
720
  cmp ah,182 ;Delete
722
  jne @f
721
  jne @f
723
    push ax bx
722
    push ax bx
724
    call SetUndo
723
    call SetUndo
725
 
724
 
726
    mov bx,0x0101
725
    mov bx,0x0101
727
    call SelTextDel
726
    call SelTextDel
728
    cmp al,1
727
    cmp al,1
729
    je .del_one_d
728
    je .del_one_d
730
      call TextDel
729
      call TextDel
731
    .del_one_d:
730
    .del_one_d:
732
    call draw_but_toolbar
731
    call draw_but_toolbar
733
    call draw_main_win
732
    call draw_main_win
734
    pop bx ax
733
    pop bx ax
735
  @@:
734
  @@:
736
 
735
 
737
  cmp ah,185 ;Ins
736
  cmp ah,185 ;Ins
738
  jne @f
737
  jne @f
739
    call draw_cursor_sumb
738
    call draw_cursor_sumb
740
    xor [curMod],1
739
    xor [curMod],1
741
    call draw_main_cursor
740
    call draw_main_cursor
742
  @@:
741
  @@:
743
 
742
 
744
  jmp still
743
  jmp still
745
 
744
 
746
button:
745
button:
747
;  cmp [menu_active],1 ;åñëè íàæàëè ìåíþ, òî ñíà÷àëà ðåàêöèÿ íà ìåíþ
746
;  cmp [menu_active],1 ;åñëè íàæàëè ìåíþ, òî ñíà÷àëà ðåàêöèÿ íà ìåíþ
748
;  jne @f ;mouse.menu_bar_1
747
;  jne @f ;mouse.menu_bar_1
749
;    mov [menu_active],0
748
;    mov [menu_active],0
750
;    jmp still
749
;    jmp still
751
;  @@:
750
;  @@:
752
 
751
 
753
  mcall 17 ;ïîëó÷èòü êîä íàæàòîé êíîïêè
752
  mcall 17 ;ïîëó÷èòü êîä íàæàòîé êíîïêè
754
  cmp ah,3
753
  cmp ah,3
755
  jne @f
754
  jne @f
756
    call but_NewFile
755
    call but_NewFile
757
  @@:
756
  @@:
758
  cmp ah,4
757
  cmp ah,4
759
  jne @f
758
  jne @f
760
    call but_OpenFile
759
    call but_OpenFile
761
  @@:
760
  @@:
762
  cmp ah,5
761
  cmp ah,5
763
  jne @f
762
  jne @f
764
    call but_SaveFile
763
    call but_SaveFile
765
  @@:
764
  @@:
766
  cmp ah,6
765
  cmp ah,6
767
  jz  but_select_word
766
  jz  but_select_word
768
  cmp ah,7
767
  cmp ah,7
769
  jz  but_cut
768
  jz  but_cut
770
  cmp ah,8
769
  cmp ah,8
771
  jne @f
770
  jne @f
772
    call but_Copy
771
    call but_Copy
773
  @@:
772
  @@:
774
  cmp ah,9
773
  cmp ah,9
775
  jz  but_paste
774
  jz  but_paste
776
  cmp ah,10
775
  cmp ah,10
777
  jz  but_find
776
  jz  but_find
778
  cmp ah,11
777
  cmp ah,11
779
  jz  but_replace
778
  jz  but_replace
780
  cmp ah,12
779
  cmp ah,12
781
  jz  but_find_key_w
780
  jz  but_find_key_w
782
  cmp ah,13
781
  cmp ah,13
783
  jz  but_sumb_upper
782
  jz  but_sumb_upper
784
  cmp ah,14
783
  cmp ah,14
785
  jz  but_sumb_lover
784
  jz  but_sumb_lover
786
  cmp ah,15
785
  cmp ah,15
787
  jz  but_reverse
786
  jz  but_reverse
788
  cmp ah,16
787
  cmp ah,16
789
  jz  but_undo
788
  jz  but_undo
790
  cmp ah,17
789
  cmp ah,17
791
  jz  but_redo
790
  jz  but_redo
792
  cmp ah,18
791
  cmp ah,18
793
  jz  but_sumb_invis
792
  jz  but_sumb_invis
794
  cmp ah,19
793
  cmp ah,19
795
  jz  but_k_words_show
794
  jz  but_k_words_show
796
  cmp ah,20
795
  cmp ah,20
797
  jz  but_synt_show
796
  jz  but_synt_show
798
 
797
 
799
  cmp ah,200
798
  cmp ah,200
800
  jne @f
799
  jne @f
801
    call but_OpenSyntax
800
    call but_OpenSyntax
802
  @@:
801
  @@:
803
  cmp ah,201
802
  cmp ah,201
804
  jne @f
803
  jne @f
805
    call but_FindText
804
    call but_FindText
806
  @@:
805
  @@:
807
 
806
 
808
  cmp ah,1
807
  cmp ah,1
809
  jne still
808
  jne still
810
.exit:
809
.exit:
811
  ;push eax
810
  ;push eax
812
  call CanSave
811
  call CanSave
813
  cmp al,1
812
  cmp al,1
814
  jne @f
813
  jne @f
815
    push thread
814
    push thread
816
    push msgbox_8
815
    push msgbox_8
817
    call [mb_create] ;message: save changes in file?
816
    call [mb_create] ;message: save changes in file?
818
    jmp still
817
    jmp still
819
  @@:
818
  @@:
820
  mov ecx,[tex]
819
  mov ecx,[tex]
821
  call mem_Free
820
  call mem_Free
822
  mov ecx,[bmp_icon]
821
  mov ecx,[bmp_icon]
823
  call mem_Free
822
  call mem_Free
824
  mov ecx,[options_file]
823
  mov ecx,[options_file]
825
  call mem_Free
824
  call mem_Free
826
  push dword tree1
825
  push dword tree1
827
  call dword[tl_data_clear]
826
  call dword[tl_data_clear]
828
  mcall -1 ;âûõîä èç ïðîãðàììû
827
  mcall -1 ;âûõîä èç ïðîãðàììû
829
 
828
 
830
 
829
 
831
 
830
 
832
txtErrOpen db '¥ ­ ©¤¥­ ä ©«, ¯à®¢¥àì⥠¯à ¢¨«ì­®áâì ¨¬¥­¨',0
831
txtErrOpen db '¥ ­ ©¤¥­ ä ©«, ¯à®¢¥àì⥠¯à ¢¨«ì­®áâì ¨¬¥­¨',0
833
txtErrIni0 db '¥ ®âªàë«áï ä ©« á ¨ª®­ª ¬¨',0
832
txtErrIni0 db '¥ ®âªàë«áï ä ©« á ¨ª®­ª ¬¨',0
834
err_ini0 db 0
833
err_ini0 db 0
835
 
834
 
836
edit1 edit_box 250, 220, 5, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_cmd_lin, mouse_dd, 0
835
edit1 edit_box 250, 220, 5, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_cmd_lin, mouse_dd, 0
837
edit2 edit_box TE_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0
836
edit2 edit_box TE_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0
838
 
837
 
839
buf_cmd_lin db 302 dup(0)
838
buf_cmd_lin db 302 dup(0)
840
buf_find db 302 dup(0)
839
buf_find db 302 dup(0)
841
 
840
 
842
if lang eq ru
841
if lang eq ru
843
  err_message_found_lib0 db 'ˆ§¢¨­¨â¥ ­¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã box_lib.obj',0
842
  err_message_found_lib0 db 'ˆ§¢¨­¨â¥ ­¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã box_lib.obj',0
844
  head_f_i0:
843
  head_f_i0:
845
  head_f_l0  db '‘¨á⥬­ ï ®è¨¡ª ',0
844
  head_f_l0  db '‘¨á⥬­ ï ®è¨¡ª ',0
846
  err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0
845
  err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0
847
  err_message_found_lib1 db 'ˆ§¢¨­¨â¥ ­¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã msgbox.obj',0
846
  err_message_found_lib1 db 'ˆ§¢¨­¨â¥ ­¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã msgbox.obj',0
848
  err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ msgbox.obj',0
847
  err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ msgbox.obj',0
849
else
848
else
850
  err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0
849
  err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0
851
  head_f_i0:
850
  head_f_i0:
852
  head_f_l0  db 'System error',0
851
  head_f_l0  db 'System error',0
853
  err_message_import0 db 'Error on load import library box_lib.obj',0
852
  err_message_import0 db 'Error on load import library box_lib.obj',0
854
  err_message_found_lib1 db 'Sorry I cannot found library msgbox.obj',0
853
  err_message_found_lib1 db 'Sorry I cannot found library msgbox.obj',0
855
  ;head_f_i1:
854
  ;head_f_i1:
856
  ;head_f_l1 db 'System error',0
855
  ;head_f_l1 db 'System error',0
857
  err_message_import1 db 'Error on load import library msgbox.obj',0
856
  err_message_import1 db 'Error on load import library msgbox.obj',0
858
end if
857
end if
859
 
858
 
860
;library structures
859
;library structures
861
l_libs_start:
860
l_libs_start:
862
  lib0 l_libs boxlib_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l0, myimport,err_message_import0, head_f_i0
861
  lib0 l_libs boxlib_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l0, myimport,err_message_import0, head_f_i0
863
  lib1 l_libs msgbox_name, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l0, msgbox_lib_import, err_message_import1, head_f_i0
862
  lib1 l_libs msgbox_name, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l0, msgbox_lib_import, err_message_import1, head_f_i0
864
load_lib_end:
863
load_lib_end:
865
 
864
 
866
 
865
 
867
i_end:
866
i_end:
868
  align 16
867
  align 16
869
  procinfo process_information
868
  procinfo process_information
870
  thread:
869
  thread:
871
    rb 1024
870
    rb 1024
872
stacktop:
871
stacktop:
873
  sys_path:
872
  sys_path:
874
    rb 4096
873
    rb 4096
875
  file_name:
874
  file_name:
876
    rb 4096
875
    rb 4096
877
  file_name_rez:
876
  file_name_rez:
878
    rb 4096
877
    rb 4096
879
  file_info:
878
  file_info:
880
    rb 40
879
    rb 40
881
mem:
880
mem:
882
>
881
>