Subversion Repositories Kolibri OS

Rev

Rev 3465 | Rev 5917 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1706 IgorA 1
use32
2
	org 0x0
3
	db 'MENUET01'
4
	dd 0x1
5
	dd start
6
	dd i_end
7
	dd mem
8
	dd stacktop
9
	dd buf_cmd_lin
10
	dd sys_path
11
 
12
include '../../macros.inc'
13
include '../../proc32.inc'
14
include '../../develop/libraries/box_lib/load_lib.mac'
15
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
3014 dunkaist 16
include '../../dll.inc'
3475 IgorA 17
include '../../system/desktop/trunk/kglobals.inc'
18
include '../../system/desktop/trunk/unpacker.inc'
1706 IgorA 19
include 'strlen.inc'
1714 IgorA 20
include 'obj_codes.inc'
1706 IgorA 21
 
22
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
23
 
3475 IgorA 24
hed db 'kol_f_edit 17.04.13',0
1706 IgorA 25
 
26
sizeof.TreeList equ 20 ;need for element 'tree_list'
27
 
28
BUF_STRUCT_SIZE equ 21
29
buf2d_data equ dword[edi] ;данные буфера изображения
30
buf2d_w equ dword[edi+8] ;ширина буфера
31
buf2d_h equ dword[edi+12] ;высота буфера
32
buf2d_l equ word[edi+4] ;отступ слева
33
buf2d_t equ word[edi+6] ;отступ сверху
34
buf2d_size_lt equ dword[edi+4] ;отступ слева и справа для буфера
35
buf2d_color equ dword[edi+16] ;цвет фона буфера
36
buf2d_bits equ byte[edi+20] ;количество бит в 1-й точке изображения
37
 
1714 IgorA 38
 
1706 IgorA 39
MAX_CED_OBJECTS equ 200
40
MAX_OPT_FIELDS equ 11
1727 IgorA 41
MAX_OBJ_TYPES equ 17 ;максимальное число объектов
1714 IgorA 42
MAX_OBJ_CAPTIONS equ 1000 ;размер дополнительных подписей подписей
1706 IgorA 43
WND_CAPT_COLOR equ 0xb0d0ff
44
BUF_SIZE equ 1000
45
 
46
;modif
1720 IgorA 47
BIT_MOD_ACI equ 0 ;первоначальные настройки элементов
1717 IgorA 48
BIT_MOD_ACM equ 1 ;события от мыши
49
BIT_MOD_ACD equ 2 ;данные объектов
50
BIT_MOD_ABU equ 3 ;связывание кнопок
1904 IgorA 51
BIT_MOD_WI_CAPT equ 0 ;стиль окна подпись
52
BIT_MOD_WI_CORD_OTN_CL_OBL equ 1 ;стиль окна координаты относительно клиентской области
53
BIT_MOD_WI_REDR equ 2 ;стиль окна перерисовка окна
54
BIT_MOD_WI_GRAD equ 3 ;стиль окна градиент
1720 IgorA 55
BIT_MOD_CHE equ 0 ; ch_flag_en - выбран CheckBox
56
BIT_MOD_CHE_T equ 1 ;сверху
57
BIT_MOD_CHE_M equ 2 ;по центру
58
BIT_MOD_CHE_B equ 3 ;снизу
59
BIT_MOD_TXT_ASCII_0 equ 0 ;текст заканчив. 0
60
BIT_MOD_TXT_NO_TRAN equ 1 ;текст прозрачный
61
BIT_MOD_TXT_CHAR2 equ 2 ;текст 2-м шрифтом
1727 IgorA 62
BIT_MOD_EDIT_FOC equ 0 ;EditBox в фокусе
63
BIT_MOD_EDIT_FIO equ 1 ;
1720 IgorA 64
;CPP_MOD_RE_GR equ 1 ;градиентный прямоугольник
65
BIT_MOD_BUT_NFON equ 0 ;стиль Button не рисовать кнопку
66
BIT_MOD_BUT_NBORD equ 1 ;стиль Button не рисовать границу
67
BIT_MOD_IMPORT_FUNCT_COMMENT equ 0 ;коментировать функцию
1706 IgorA 68
 
3465 IgorA 69
macro load_image_file path,buf,size { ;макрос для загрузки изображений
70
	;path - может быть переменной или строковым параметром
71
	if path eqtype '' ;проверяем задан ли строкой параметр path
72
		jmp @f
73
			local .path_str
74
			.path_str db path ;формируем локальную переменную
75
			db 0
76
		@@:
77
		;32 - стандартный адрес по которому должен быть буфер с системным путем
78
		copy_path .path_str,[32],file_name,0x0
79
	else
80
		copy_path path,[32],file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
81
	end if
1706 IgorA 82
 
83
	stdcall mem.Alloc, dword size ;выделяем память для изображения
84
	mov [buf],eax
85
 
86
	mov eax,70 ;70-я функция работа с файлами
87
	mov [run_file_70.Function], 0
88
	mov [run_file_70.Position], 0
89
	mov [run_file_70.Flags], 0
90
	mov [run_file_70.Count], dword size
91
	m2m [run_file_70.Buffer], [buf]
92
	mov byte[run_file_70+20], 0
3465 IgorA 93
	mov [run_file_70.FileName], file_name
1706 IgorA 94
	mov ebx,run_file_70
95
	int 0x40 ;загружаем файл изображения
96
	cmp ebx,0xffffffff
97
	je @f
98
		;определяем вид изображения и переводим его во временный буфер image_data
99
		stdcall dword[img_decode], dword[buf],ebx,0
100
		mov dword[image_data],eax
101
		;преобразуем изображение к формату rgb
102
		stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
103
		;удаляем временный буфер image_data
104
		stdcall dword[img_destroy], dword[image_data]
105
	@@:
106
}
107
 
108
struct FileInfoBlock
109
	Function dd ?
110
	Position dd ?
111
	Flags	 dd ?
112
	Count	 dd ?
113
	Buffer	 dd ?
114
	rezerv	 db ?
115
	FileName dd ?
116
ends
117
 
118
struct object
1717 IgorA 119
	id dd ? ;идентификатор объекта
120
	txt rb MAX_LEN_OBJ_TXT ;текстовые свойства
121
	lvl db 0
122
	clo db 0
123
	typid dd ? ;номер объекта определяющего тип переменной
124
	modif dd ? ;битовые свойства
1706 IgorA 125
ends
126
 
127
struct ObjOpt
1717 IgorA 128
	dd ?
1706 IgorA 129
	bl_type db ?
130
	graph db ?
131
	info rb 30
1717 IgorA 132
	caption rb MAX_OPT_CAPTION
1706 IgorA 133
	Col rw MAX_OPT_FIELDS
134
	img rw MAX_OPT_FIELDS ;индексы картинок (в файле 'icon.bmp')
1727 IgorA 135
	bit_prop dd 0 ;битовые свойства (подписи, названия)
136
	bit_val dd 0 ;битовые свойства (значения, константы)
1706 IgorA 137
ends
138
 
139
SKIN_H equ 22
140
SKIN_W1 equ 5
141
SKIN_W2 equ 7
142
SKIN_W3 equ 23
143
fn_skin_1 db 'left.bmp',0
144
fn_skin_2 db 'base.bmp',0
145
fn_skin_3 db 'oper.bmp',0
146
IMAGE_FILE_SKIN1_SIZE equ 3*(SKIN_W1+3)*SKIN_H+54
147
IMAGE_FILE_SKIN2_SIZE equ 3*(SKIN_W2+3)*SKIN_H+54
148
IMAGE_FILE_SKIN3_SIZE equ 3*(SKIN_W3+3)*SKIN_H+54
149
 
150
IMAGE_FILE_FONT1_SIZE equ 96*144*3 ;размер файла с 1-м системным шрифтом
151
 
152
fn_icon db 'icon.bmp',0
1711 IgorA 153
count_main_icons equ 35 ;число иконок в файле icon.bmp
1706 IgorA 154
bmp_icon rb 0x300*count_main_icons
155
 
156
TREE_ICON_SYS16_BMP_SIZE equ 256*3*11+54 ;размер bmp файла с системными иконками
157
icon_tl_sys dd 0 ;указатеель на память для хранения системных иконок
158
icon_font_s1 dd 0 ;указатель на временную память для загрузки шрифта
159
 
160
fn_syntax db 'asm.syn',0 ;имя загружаемого файла синтаксиса
161
 
1717 IgorA 162
;макрос для проверки битового свойства
163
macro test_bool_prop obj_reg,n_prop
164
{
165
	bt dword[obj_reg+u_object.modif-u_object],n_prop
166
}
167
 
1706 IgorA 168
include 'ced_wnd_m.inc'
1714 IgorA 169
include 'ced_wnd_prop.inc' ;файл с функциями окна свойств объекта
1706 IgorA 170
include 'ced_constr.inc' ;файл с функциями окна конструктора
171
include 'ced_code_g.inc' ;файл с функциями генерирования кодов
172
 
173
align 4
174
start:
175
	load_libraries l_libs_start,load_lib_end
176
 
177
	;проверка на сколько удачно загузилась наша либа
178
	mov	ebp,lib0
179
	cmp	dword [ebp+ll_struc_size-4],0
180
	jz	@f
181
		mcall -1 ;exit not correct
182
	@@:
183
	mov	ebp,lib1
184
	cmp	dword [ebp+ll_struc_size-4],0
185
	jz	@f
186
		mcall -1 ;exit not correct
187
	@@:
188
	mov	ebp,lib2
189
	cmp	dword [ebp+ll_struc_size-4],0
190
	jz	@f
191
		mcall -1 ;exit not correct
192
	@@:
193
	mov	ebp,lib3
194
	cmp	dword [ebp+ll_struc_size-4],0
195
	jz	@f
196
		mcall -1 ;exit not correct
197
	@@:
198
 
1714 IgorA 199
	;задание размеров полей со свойствами
200
	mov eax,prop_edits_top
201
	mov ebx,16+6 ;ширина иконки + отступы
1706 IgorA 202
	mov edi,edit2
203
	@@:
1711 IgorA 204
		mov ed_top,eax ;отступ сверху
205
		mov ed_left,ebx ;отступ слева
1706 IgorA 206
		add edi,ed_struc_size
1714 IgorA 207
		add eax,prop_edits_height
1706 IgorA 208
		cmp edi,prop_wnd_edits_end
209
		jl @b
210
 
211
	stdcall [buf2d_create], buf_fon
212
 
213
	mcall 48,3,sc,sizeof.system_colors
214
	mcall 40,0x27
215
 
216
	stdcall dword[tl_data_init], tree1
217
	stdcall dword[tl_data_init], tree2
218
 
3465 IgorA 219
	copy_path fn_icon,sys_path,file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой
1706 IgorA 220
	mov eax,70 ;load icon file
221
	mov [run_file_70.Function], 0
222
	mov [run_file_70.Position], 54
223
	mov [run_file_70.Flags], 0
224
	mov [run_file_70.Count], 0x300*count_main_icons
225
	mov [run_file_70.Buffer], bmp_icon
226
	mov [run_file_70.rezerv], 0
3465 IgorA 227
	mov [run_file_70.FileName], file_name
1706 IgorA 228
	mov ebx,run_file_70
229
	int 0x40
230
 
231
	cmp ebx,-1
232
	mov [err_ini0],1
233
	je @f ;if open file
234
		mov [err_ini0],0
235
		mov dword[tree1.data_img],bmp_icon
236
		mov dword[tree2.data_img],bmp_icon
237
	@@:
238
 
239
	;системные иконки 16*16 для tree_list
3465 IgorA 240
	load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
1706 IgorA 241
	;если изображение не открылось, то в icon_tl_sys будут
242
	;не инициализированные данные, но ошибки не будет, т. к. буфер нужного размера
1714 IgorA 243
	mov eax,dword[icon_tl_sys]
244
	mov dword[tree1.data_img_sys],eax
245
	mov dword[tree2.data_img_sys],eax
1706 IgorA 246
 
247
	;1-й файл скина
248
	load_image_file fn_skin_1, icon_font_s1,IMAGE_FILE_SKIN1_SIZE
249
	stdcall [buf2d_create_f_img], buf_skin1,[icon_font_s1] ;создаем буфер
250
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
251
	;2-й файл скина
252
	load_image_file fn_skin_2, icon_font_s1,IMAGE_FILE_SKIN2_SIZE
253
	stdcall [buf2d_create_f_img], buf_skin2,[icon_font_s1] ;создаем буфер
254
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
255
	;3-й файл скина
256
	load_image_file fn_skin_3, icon_font_s1,IMAGE_FILE_SKIN3_SIZE
257
	stdcall [buf2d_create_f_img], buf_skin3,[icon_font_s1] ;создаем буфер
258
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
259
 
260
	;символы 1-го системного шрифта
3465 IgorA 261
	load_image_file 'font6x9.bmp', icon_font_s1,IMAGE_FILE_FONT1_SIZE
1706 IgorA 262
	stdcall [buf2d_create_f_img], buf_font,[icon_font_s1] ;создаем буфер
263
	stdcall mem.Free,[icon_font_s1] ;освобождаем память
264
	stdcall [buf2d_conv_24_to_8], buf_font,1 ;делаем буфер прозрачности 8 бит
265
	stdcall [buf2d_convert_text_matrix], buf_font
266
 
267
 
268
	copy_path fn_obj_opt,sys_path,fp_obj_opt,0x0
269
	;load options file
270
	mov eax,70
271
	mov [run_file_70.Position], 0
1714 IgorA 272
	mov [run_file_70.Count], sizeof.ObjOpt*MAX_OBJ_TYPES+MAX_OBJ_CAPTIONS
1706 IgorA 273
	mov [run_file_70.Buffer], obj_opt
274
	mov [run_file_70.FileName], fp_obj_opt
275
	mov ebx,run_file_70
276
	int 0x40
277
 
278
	cmp ebx,-1
279
	mov [err_ini1],1
280
	je .open_end ;jmp if not open file
281
		mov [err_ini1],0
282
 
283
		mov eax,obj_opt ;добавляем объекты
284
		@@:
1717 IgorA 285
			mov ebx,dword[eax]
286
			cmp ebx,0
1706 IgorA 287
			je @f
288
			;xor ecx,ecx ;в ecx будет индекс иконки
1714 IgorA 289
			mov cx,word[eax+obj_opt.img-obj_opt]
1706 IgorA 290
			cmp cx,0
291
			jge .zero
292
				xor cx,cx ;что-бы не глючило с отрицательным индексом
293
			.zero:
294
			shl ecx,16
295
			stdcall dword[tl_node_add], eax, ecx, tree1 ;добавляем название объекта
296
			stdcall dword[tl_cur_next], tree1 ;переносим курсор вниз, что-бы не поменялся порядок
297
			add eax,sizeof.ObjOpt ;переход на следующий объект
298
			jmp @b
299
		@@:
300
		stdcall dword[tl_cur_beg], tree1 ;переносим курсор вверх
301
 
302
	.open_end:
303
 
304
	stdcall [ted_init], tedit0
3465 IgorA 305
	copy_path fn_syntax,sys_path,file_name,0x0
1706 IgorA 306
 
3465 IgorA 307
	; *** init syntax file ***
308
	; проверяем размер файла синтаксиса
309
	mov eax,70
310
	mov [run_file_70.Function], 5
311
	mov [run_file_70.Position], 0
312
	mov [run_file_70.Flags], 0
313
	mov dword[run_file_70.Count], 0
314
	mov dword[run_file_70.Buffer], open_b
315
	mov byte[run_file_70+20], 0
316
	mov dword[run_file_70.FileName], file_name
317
	mov ebx,run_file_70
318
	int 0x40
319
	cmp eax,0
320
	jne @f
321
 
322
	mov edi,tedit0
323
	mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах
324
	mov ted_syntax_file_size,ecx
325
 
326
	stdcall mem.Alloc,ecx ;выделяем память для файла синтаксиса
327
	mov ted_syntax_file,eax
328
 
329
	;пробуем открыть файл синтаксиса
3475 IgorA 330
	call open_unpac_synt_file
331
	jmp .end_0
3465 IgorA 332
	@@:
333
		notify_window_run txt_not_syntax_file
334
	.end_0:
335
 
1706 IgorA 336
	;get cmd line
337
	cmp [buf_cmd_lin],0
338
	je @f ;if file names exist
339
		mov esi,buf_cmd_lin
340
		call strlen ;eax=strlen
341
		mov edi,[edit1.text]
342
		mov [edit1.size],eax
343
		mov ecx,eax
344
		rep movsb
345
		call but_open_proj
346
	@@:
347
 
348
 
349
 
350
align 4
351
red_win:
352
	call draw_window
353
 
354
align 4
355
still:
356
	mcall 10
357
 
358
	cmp al,1
359
	jne @f
360
		call draw_window
361
	@@:
362
	cmp al,2
363
	jz key
364
	cmp al,3
365
	jz button
366
	cmp al,6
367
	jne @f
368
		call mouse
369
	@@:
370
 
371
	jmp still
372
 
373
align 4
374
draw_window:
375
pushad
376
	mcall 12,1
377
 
378
	xor eax,eax
379
	mov ebx,20*65536+670
380
	mov ecx,20*65536+370
381
	mov edx,[sc.work]
382
	or  edx,0x33000000
383
	mov edi,hed
384
	int 0x40
385
 
386
	mov eax,8 ;button 'Open Project'
387
	mov esi,0x80ff
388
	mov ebx,230*65536+18
389
	mov ecx,5*65536+18
390
	mov edx,5
391
	int 0x40
392
	stdcall draw_icon, 22,231,6 ;22 - open
393
 
394
	;button 'Save Project'
395
	mov ebx,250*65536+18
396
	mov ecx,5*65536+18
397
	mov edx,6
398
	int 0x40
399
	stdcall draw_icon, 17,251,6 ;17 - save
400
 
401
	;button 'Show Constructor'
402
	mov ebx,310*65536+18
403
	mov ecx,5*65536+18
404
	mov edx,11
405
	int 0x40
406
	stdcall draw_icon, 12,311,6 ;12 - window
407
 
408
	;button 'Show Code'
409
	mov ebx,330*65536+18
410
	mov edx,12
411
	int 0x40
412
	stdcall draw_icon, 11,331,6 ;11 - text
413
 
1711 IgorA 414
	;button 'Update: Code, Constructor'
1706 IgorA 415
	mov ebx,350*65536+18
416
	mov edx,13
417
	int 0x40
418
	stdcall draw_icon, 32,351,6 ;32 - update
419
 
420
	;button 'Save Code'
421
	mov ebx,370*65536+18
422
	mov edx,14
423
	int 0x40
424
	stdcall draw_icon, 17,371,6 ;17 - save
425
 
426
	;button ']P'
427
	mov ebx,390*65536+18
428
	mov edx,15
429
	int 0x40
430
	stdcall draw_icon, 18,391,6 ;18 - знак конца абзаца
431
 
432
	;button 'Show color text'
433
	mov ebx,410*65536+18
434
	mov edx,16
435
	int 0x40
436
	stdcall draw_icon, 19,411,6
437
 
1711 IgorA 438
	;button 'Add Object'
439
	mov ebx,125*65536+18
440
	mov ecx,30*65536+18
441
	mov edx,31
442
	int 0x40
443
	stdcall draw_icon, 14,126,31 ;14 - add object
444
 
1706 IgorA 445
	;button 'Move Up'
1711 IgorA 446
	mov ebx,155*65536+18
1706 IgorA 447
	mov edx,21
448
	int 0x40
1711 IgorA 449
	stdcall draw_icon, 23,156,31 ;23 - move up
1706 IgorA 450
 
451
	;button 'Move Down'
1711 IgorA 452
	mov ebx,175*65536+18
1706 IgorA 453
	mov edx,22
454
	int 0x40
1711 IgorA 455
	stdcall draw_icon, 24,176,31 ;24 - move down
1706 IgorA 456
 
457
	;button 'Copy'
1711 IgorA 458
	mov ebx,195*65536+18
1706 IgorA 459
	mov edx,23
460
	int 0x40
1711 IgorA 461
	stdcall draw_icon, 30,196,31 ;30 - copy
1706 IgorA 462
 
463
	;button 'Paste'
1711 IgorA 464
	mov ebx,215*65536+18
1706 IgorA 465
	mov edx,24
466
	int 0x40
1711 IgorA 467
	stdcall draw_icon, 31,216,31 ;31 - paste
1706 IgorA 468
 
469
	;button 'Property'
1711 IgorA 470
	mov ebx,235*65536+18
1706 IgorA 471
	mov edx,25
472
	int 0x40
1711 IgorA 473
	stdcall draw_icon, 7,236,31 ;7 - property
1706 IgorA 474
 
1711 IgorA 475
	;button 'Undo'
476
	mov ebx,255*65536+18
477
	mov edx,26
478
	int 0x40
479
	stdcall draw_icon, 33,256,31 ;33 - undo
480
 
481
	;button 'Redo'
482
	mov ebx,275*65536+18
483
	mov edx,27
484
	int 0x40
485
	stdcall draw_icon, 34,276,31 ;34 - redo
486
 
1706 IgorA 487
; 10 30 50 70 90
488
 
489
	cmp [err_opn],1
490
	jne @f
491
		mov eax,4
492
		mov ebx,10*65536+35
493
		mov ecx,0x80ff0000
494
		mov edx,txtErrOpen
495
		int 0x40
496
	@@:
497
 
498
	stdcall [edit_box_draw], dword edit1
499
	stdcall [edit_box_draw], dword edit_sav
1714 IgorA 500
 
501
	mov dword[w_scr_t1.all_redraw],1
502
	;stdcall [scrollbar_ver_draw],dword w_scr_t1
1706 IgorA 503
	stdcall [tl_draw],dword tree1
1714 IgorA 504
	mov dword[w_scr_t2.all_redraw],1
505
	;stdcall [scrollbar_ver_draw],dword w_scr_t2
1706 IgorA 506
	stdcall [tl_draw],dword tree2
507
 
508
	cmp byte[show_mode],0 ;условие видимости окна конструктора
509
	jne @f
510
		stdcall [buf2d_draw], buf_fon
511
	@@:
512
	cmp byte[show_mode],1 ;условие видимости текстового окна
513
	jne @f
514
		stdcall [ted_draw], tedit0
515
	@@:
516
	mcall 12,2
517
popad
518
	ret
519
 
520
align 4
521
mouse:
522
	stdcall [edit_box_mouse], dword edit1
523
	stdcall [edit_box_mouse], dword edit_sav
524
	stdcall [tl_mouse], dword tree1
525
	stdcall [tl_mouse], dword tree2
526
	cmp byte[show_mode],1 ;условие видимости текстового окна
527
	jne @f
528
		stdcall [ted_mouse], tedit0
529
	@@:
530
	ret
531
 
532
 
533
align 4
534
key:
535
	mcall 2
536
	stdcall [edit_box_key], dword edit1
537
	stdcall [edit_box_key], dword edit_sav
538
	stdcall [tl_key], dword tree1
539
	stdcall [tl_key], dword tree2
540
 
541
	jmp still
542
 
543
align 4
544
button:
545
	mcall 17
546
	cmp ah,5
547
	jne @f
548
		call but_open_proj
549
	@@:
550
	cmp ah,6
551
	jne @f
552
		call but_save_proj
553
	@@:
1714 IgorA 554
	;cmp ah,10
555
	;jne @f
556
		;call but_element_change
557
	;@@:
1706 IgorA 558
	cmp ah,11
559
	jne @f
560
		call but_show_constructor
561
	@@:
562
	cmp ah,12
563
	jne @f
564
		call but_show_code
565
	@@:
566
	cmp ah,13
567
	jne @f
1711 IgorA 568
		call but_update
1706 IgorA 569
	@@:
570
	cmp ah,14
571
	jne @f
572
		call but_save_asm
573
	@@:
574
	cmp ah,15
575
	jne @f
576
		call but_show_invis
577
	@@:
578
	cmp ah,16
579
	jne @f
580
		call but_show_syntax
581
	@@:
582
	cmp ah,21
583
	jne @f
584
		call but_obj_move_up
585
	@@:
586
	cmp ah,22
587
	jne @f
588
		call but_obj_move_down
589
	@@:
590
	cmp ah,23
591
	jne @f
592
		call but_obj_copy
593
	@@:
594
	cmp ah,24
595
	jne @f
596
		call but_obj_paste
597
	@@:
598
	cmp ah,25
599
	jne @f
600
		call on_file_object_select
601
	@@:
1711 IgorA 602
	cmp ah,26
603
	jne @f
604
		stdcall [tl_info_undo], tree2
605
		stdcall [tl_draw], tree2
606
	@@:
607
	cmp ah,27
608
	jne @f
609
		stdcall [tl_info_redo], tree2
610
		stdcall [tl_draw], tree2
611
	@@:
612
	cmp ah,31
613
	jne @f
614
		call on_add_object
615
	@@:
1706 IgorA 616
	cmp ah,1
617
	jne still
618
.exit:
619
	stdcall mem.Free,[icon_tl_sys]
620
	mov dword[tree1.data_img],0
621
	mov dword[tree2.data_img],0
622
	mov dword[tree1.data_img_sys],0
623
	mov dword[tree2.data_img_sys],0
624
	stdcall dword[tl_data_clear], tree1
625
	stdcall dword[tl_data_clear], tree2
626
	stdcall [buf2d_delete],buf_fon ;удаляем буфер
627
	stdcall [buf2d_delete],buf_font ;удаляем буфер
628
	stdcall [buf2d_delete],buf_skin1
629
	stdcall [buf2d_delete],buf_skin2
630
	stdcall [buf2d_delete],buf_skin3
631
	stdcall [ted_delete], tedit0
3475 IgorA 632
	cmp dword[unpac_mem],0
633
	je @f
634
		stdcall mem.Free,[unpac_mem]
635
	@@:
1706 IgorA 636
	mcall -1
637
 
638
align 4
639
but_open_proj:
640
	pushad
641
	mov eax,70
642
	mov [run_file_70.Function], 0
643
	mov [run_file_70.Position], 0
644
	mov [run_file_70.Flags], 0
645
	mov [run_file_70.Count], sizeof.object*MAX_CED_OBJECTS
646
	mov [run_file_70.Buffer], ced_info
647
	mov [run_file_70.rezerv], 0
648
	push [edit1.text]
649
	pop [run_file_70.FileName]
650
	mov ebx,run_file_70
651
	int 0x40
652
 
653
	cmp ebx,-1
654
	mov [err_opn],1
655
	je .open_end ;if open file
656
		mov ecx,ced_info
657
		add ecx,ebx
658
		mov byte [ecx],0
659
		mov [err_opn],0
660
 
661
		stdcall dword[tl_info_clear], tree2
662
		mov eax,ced_info ;добавляем объекты
663
		@@:
1717 IgorA 664
			mov ebx,dword[eax]
665
			cmp ebx,0
1706 IgorA 666
			je @f
667
 
668
			call find_obj_in_opt ;edi = pointer to ObjOpt struct
669
 
1714 IgorA 670
			mov cx,word[edi+obj_opt.img-obj_opt]
1706 IgorA 671
			cmp cx,0
672
			jge .zero
673
				xor cx,cx ;что-бы не глючило с отрицательным индексом
674
			.zero:
675
			shl ecx,16 ;в ecx индекс иконки
1717 IgorA 676
			mov cl,byte[eax++u_object.lvl-u_object] ;уровень объекта
1711 IgorA 677
 
678
			;tl_node_close_open - не подходит, т.к. действует на узлы имеющие дочерние
1717 IgorA 679
			mov ch,byte[eax++u_object.clo-u_object] ;закрытый/открытый
1711 IgorA 680
 
1706 IgorA 681
			stdcall dword[tl_node_add], eax, ecx, tree2 ;добавляем объект
1711 IgorA 682
 
1706 IgorA 683
			stdcall dword[tl_cur_next], tree2 ;переносим курсор вниз, что-бы не поменялся порядок
684
			add eax,sizeof.object ;переход на следующий объект
685
			jmp @b
686
		@@:
687
		stdcall dword[tl_cur_beg], tree2 ;переносим курсор вверх
688
 
689
		mov [foc_obj],0
690
		call draw_constructor
691
		call code_gen
692
	.open_end:
693
	call draw_window ;перерисовка окна идет в любом случае, даже если файл не открылся
694
	popad
695
	ret
696
 
697
;сохранение файла проэкта на диск
698
align 4
699
but_save_proj:
700
	pushad
701
 
702
	mov edi,ced_info
703
 
704
	stdcall [tl_node_poi_get_info], 0,tree2
705
	pop edx
706
	@@:
707
		cmp edx,0
708
		je @f
709
		stdcall [tl_node_poi_get_data], edx,tree2
710
		pop esi ;получаем данные узла
711
 
712
		mov bl,byte[edx+2] ;bl - уровень объекта
1717 IgorA 713
		mov byte[esi+u_object.lvl-u_object],bl
1711 IgorA 714
		mov bl,byte[edx+3] ;bl - открытие/закрытие объекта
1717 IgorA 715
		mov byte[esi+u_object.clo-u_object],bl
1706 IgorA 716
 
717
		;вычисляем новый индекс для типа объекта
1717 IgorA 718
		mov ebx,[esi+u_object.typid-u_object] ;ebx - тип объекта
1706 IgorA 719
		;сохраняем тип объекта
720
		push ebx
721
			imul ebx,sizeof.TreeList
722
			add ebx,[tree2.data_nodes] ;ebx - указатель объект указывающий тип
723
			stdcall get_obj_npp,ebx
1717 IgorA 724
			mov [esi+u_object.typid-u_object],eax
1706 IgorA 725
			mov eax,esi
726
			;копируем объект в память для сохранения
727
			xor ecx,ecx
728
			mov cx,word[tree2.info_size]
729
			cld
730
			rep movsb
731
		;восстанавливаем тип объекта
1717 IgorA 732
		pop dword[eax+u_object.typid-u_object]
1706 IgorA 733
 
734
		stdcall [tl_node_poi_get_next_info], edx,tree2
735
		pop edx ;переходим к следущему узлу
736
		jmp @b
737
	@@:
1717 IgorA 738
	mov dword[edi],0 ;метка конца файла
739
	add edi,4
1706 IgorA 740
	mov ecx,edi
741
	sub ecx,ced_info ;ecx - размер сохраняемого файла
742
 
743
	mov eax,70
744
	mov [run_file_70.Function], 2
745
	mov [run_file_70.Position], 0
746
	mov [run_file_70.Flags], 0
747
	mov [run_file_70.Count], ecx
748
	mov [run_file_70.Buffer], ced_info
749
	mov [run_file_70.rezerv], 0
750
	push [edit1.text]
751
	pop [run_file_70.FileName]
752
	mov ebx,run_file_70
753
	int 0x40
754
 
755
	popad
756
	ret
757
 
758
;берет номер по порядку по указателю на структуру объекта
1714 IgorA 759
;output:
760
; eax - номер объекта
1706 IgorA 761
align 4
762
proc get_obj_npp, p_obj_str:dword
763
	mov eax,2
764
	push ebx edx
765
	mov ebx,[p_obj_str]
766
 
767
	stdcall [tl_node_poi_get_info], 0,tree2
768
	pop edx
769
	@@:
770
		cmp edx,0
1727 IgorA 771
		je .no_exist
1706 IgorA 772
		cmp edx,ebx
773
		je @f
774
 
775
		inc eax
776
		stdcall [tl_node_poi_get_next_info], edx,tree2
777
		pop edx ;переходим к следущему узлу
778
		jmp @b
1727 IgorA 779
	.no_exist: ;когда идет ссылка на не существующий объект
780
		xor eax,eax ;обнуляем указатель, что-бы не сохранять в файл мусор
1706 IgorA 781
	@@:
782
	pop edx ebx
783
	ret
784
endp
785
 
786
;функция для сохранения созданного asm файла
787
align 4
788
but_save_asm:
789
	;stdcall [ted_but_save_file], tedit0,run_file_70,[edit_sav.text]
790
	push edi
791
	mov edi, tedit0
792
 
793
	stdcall [ted_but_save_file],edi,run_file_70,[edit_sav.text]
794
	cmp ted_err_save,0
795
	jne @f
796
		stdcall [mb_create],msgbox_1,thread ;message: Файл был сохранен
797
	@@:
798
	pop edi
799
	ret
800
 
801
;функция для показа/скрытия невидимых символов
802
align 4
803
but_show_invis:
804
	push edi
805
	mov edi,tedit0
806
 
807
	xor ted_mode_invis,1
808
	cmp byte[show_mode],1 ;условие видимости текстового окна
809
	jne @f
810
		stdcall [ted_draw],edi
811
	@@:
812
	pop edi
813
	ret
814
 
815
;
816
align 4
817
but_show_syntax:
818
	push edi
819
	mov edi,tedit0
820
 
821
	xor ted_mode_color,1
822
	cmp byte[show_mode],1 ;условие видимости текстового окна
823
	jne @f
824
		stdcall [ted_draw],edi
825
	@@:
826
	pop edi
827
	ret
828
 
829
align 4
830
ted_save_err_msg:
831
	mov byte[msgbox_0.err],al
832
	stdcall [mb_create],msgbox_0,thread ;message: Can-t save text file!
833
	ret
834
 
835
;функция вызываемая при нажатии Enter в окне tree2
836
;обновляет текстовые поля значениями параметров взятых из объектов
837
;функция обратная к данной but_element_change
838
align 4
839
on_file_object_select:
1714 IgorA 840
	cmp byte[prop_wnd_run],0
841
	jne @f
842
		mov byte[prop_wnd_run],1
843
		stdcall [tl_node_get_data], tree2
844
		pop dword[foc_obj]
845
		cmp dword[foc_obj],0
846
		je @f
847
			pushad
848
			;все действия по настройке элементов управления выполняются в окне со свойствами
849
			mcall 51,1,prop_start,prop_thread
850
			popad
1706 IgorA 851
	@@:
1714 IgorA 852
	;call draw_window
1706 IgorA 853
	ret
854
 
1711 IgorA 855
;функция вызываемая при нажатии Enter в окне tree1
856
;добавляет новый объект в окно tree2
1706 IgorA 857
align 4
1711 IgorA 858
on_add_object:
859
push eax ebx ecx
860
	stdcall [tl_node_get_data], tree1
861
	pop eax
862
	cmp eax,0
863
	je @f
864
		xor ecx,ecx
865
		mov cx,word[eax+obj_opt.img-obj_opt] ;cx - индекс главной иконки добавляемого объекта
3475 IgorA 866
 
867
		cmp ecx,count_main_icons ;в старших битах ecx будут 0, потому отрицательные числа тоже проверяются
868
		jl .end_0
869
			;если иконки нет, по умолчанию берем 0-ю
870
			xor cx,cx
871
		.end_0:
872
 
1711 IgorA 873
		shl ecx,16
874
		stdcall mem_clear, u_object,sizeof.object
1717 IgorA 875
		mov ebx,dword[eax]
876
		mov dword[u_object.id],ebx
1711 IgorA 877
		stdcall dword[tl_node_add], u_object, ecx, tree2 ;добавляем объект
878
	@@:
879
pop ecx ebx eax
880
	call draw_window
881
	ret
882
 
883
align 4
1706 IgorA 884
but_ctrl_o:
885
	ret
886
align 4
887
but_ctrl_n:
888
	ret
889
align 4
890
but_ctrl_s:
891
	ret
892
 
3475 IgorA 893
;открытие и распаковка файла подсветки синтаксиса
894
;input:
895
; ted_syntax_file - буфер для открываемого файла синтаксиса
896
; ted_syntax_file_size - размер открываемого файла синтаксиса
897
;output:
898
; ebx - число прочитанных байт из файла
1706 IgorA 899
align 4
3475 IgorA 900
open_unpac_synt_file:
901
push eax edi esi
902
	mov edi, tedit0
903
	mov [run_file_70.Function], 0
904
	mov [run_file_70.Position], 0
905
	mov [run_file_70.Flags], 0
906
	mov ecx, ted_syntax_file_size
907
	mov dword[run_file_70.Count], ecx
908
	m2m dword[run_file_70.Buffer], ted_syntax_file
909
	mov byte[run_file_70+20], 0
910
	mov [run_file_70.FileName], file_name
911
	mcall 70, run_file_70
912
	cmp ebx,-1
913
	jne .end_0
914
		;если возникли ошибки при открытии файла синтаксиса
915
		mov byte[txt_not_syntax_file.err],'0'
916
		add byte[txt_not_syntax_file.err],al
917
		notify_window_run txt_not_syntax_file ;Can-t open color options file!
918
		jmp @f
919
	.end_0:
920
 
921
		mov eax,ted_syntax_file
922
		cmp dword[eax],'KPCK'
923
		jne .end_unpack
924
 
925
		mov ecx,dword[eax+4] ;ecx - размер файла синтаксиса после распаковки
926
		cmp dword[unpac_mem],0
927
		jne .end_1
928
			;первоначальное выделение временной памяти для распаковки файла
929
			stdcall mem.Alloc,ecx
930
			mov [unpac_mem],eax
931
			mov [unpac_mem_size],ecx
932
		.end_1:
933
		cmp dword[unpac_mem_size],ecx
934
		jge .end_2
935
			;если для распакованого файла не хватает временной памяти
936
			stdcall mem.ReAlloc,[unpac_mem],ecx ;заново выделяем временную память
937
			mov [unpac_mem],eax
938
			mov [unpac_mem_size],ecx
939
		.end_2:
940
 
941
		;распаковка файла во временную память
942
		stdcall unpack,ted_syntax_file,[unpac_mem]
943
 
944
		cmp ted_syntax_file_size,ecx
945
		jge .end_3
946
			;если для распакованого файла не хватает памяти
947
			stdcall mem.ReAlloc,ted_syntax_file,ecx ;заново выделяем память
948
			mov ted_syntax_file,eax
949
			mov ted_syntax_file_size,ecx
950
		.end_3:
951
 
952
		;копирование распакованного файла из временной памяти в память элемента
953
		mov edi,ted_syntax_file
954
		mov esi,[unpac_mem]
955
		cld
956
		rep movsb
957
 
958
		.end_unpack:
959
		;применение файла подсветки
960
		stdcall [ted_init_syntax_file], tedit0
961
	@@:
962
pop esi edi eax
963
	ret
964
 
965
align 4
966
txt_not_syntax_file:
967
	db 'Ошибка при открытии файла с цветовыми настройками! (Код ошибки ='
968
	.err: db '?'
969
	db ')',0
970
 
971
align 4
1706 IgorA 972
buf_fon: ;фоновый буфер
973
	dd 0 ;указатель на буфер изображения
974
	dw 310 ;+4 left
975
	dw 50 ;+6 top
976
	dd 340 ;+8 w
977
	dd 280 ;+12 h
978
	dd 0xffffff ;+16 color
979
	db 24 ;+20 bit in pixel
980
 
981
align 4
982
buf_font: ;буфер матрицы со шрифтом
983
	dd 0 ;указатель на буфер изображения
984
	dw 25 ;+4 left
985
	dw 25 ;+6 top
986
	dd 96 ;+8 w
987
	dd 144 ;+12 h
988
	dd 0 ;+16 color
989
	db 24 ;+20 bit in pixel
990
 
991
align 4
992
buf_skin1:
993
	dd 0 ;указатель на буфер изображения
994
	dw 0 ;+4 left
995
	dw 0 ;+6 top
996
	dd SKIN_W1 ;+8 w
997
	dd SKIN_H ;+12 h
998
	dd 0 ;+16 color
999
	db 24 ;+20 bit in pixel
1000
align 4
1001
buf_skin2:
1002
	dd 0 ;указатель на буфер изображения
1003
	dw 0 ;+4 left
1004
	dw 0 ;+6 top
1005
	dd SKIN_W2 ;+8 w
1006
	dd SKIN_H ;+12 h
1007
	dd 0 ;+16 color
1008
	db 24 ;+20 bit in pixel
1009
align 4
1010
buf_skin3:
1011
	dd 0 ;указатель на буфер изображения
1012
	dw 0 ;+4 left
1013
	dw 0 ;+6 top
1014
	dd SKIN_W3 ;+8 w
1015
	dd SKIN_H ;+12 h
1016
	dd 0 ;+16 color
1017
	db 24 ;+20 bit in pixel
1018
 
1019
show_mode db 0 ;режим для показа определенного окна
1020
txtErrOpen db 'Не найден файл, проверьте правильность имени',0
1021
txtErrIni1 db 'Не открылся файл с опциями',0
1714 IgorA 1022
err_opn db 0 ;рез. открытия файла проэкта
1023
err_ini0 db 0 ;рез. открытия файла с иконками
1024
err_ini1 db 0 ;рез. открытия файла с опциями
3475 IgorA 1025
unpac_mem dd 0
1026
unpac_mem_size dd 0
1706 IgorA 1027
 
1028
edit1 edit_box 210, 10, 5, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text1, mouse_dd, 0, 7, 7
1029
 
1030
edit2 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text2, mouse_dd, 0
1031
edit3 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text3, mouse_dd, 0
1032
edit4 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text4, mouse_dd, 0
1033
edit5 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text5, mouse_dd, 0
1034
edit6 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text6, mouse_dd, 0
1035
edit7 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text7, mouse_dd, 0
1036
edit8 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text8, mouse_dd, 0
1037
edit9 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text9, mouse_dd, 0
1711 IgorA 1038
edit10 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text10, mouse_dd, 0
1039
edit11 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text11, mouse_dd, 0
1040
edit12 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text12, mouse_dd, 0
1706 IgorA 1041
prop_wnd_edits_end: ;конец текстовых полей, отвечающих за свойства
1042
 
1043
edit_sav edit_box 210, 310, 30, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text_sav, mouse_dd, 0
1044
 
1045
 
1046
ed_text1 db '/hd0/1/',0
1047
	rb 295
1048
ed_text2 rb MAX_LEN_OBJ_TXT+2
1049
ed_text3 rb MAX_LEN_OBJ_TXT+2
1050
ed_text4 rb MAX_LEN_OBJ_TXT+2
1051
ed_text5 rb MAX_LEN_OBJ_TXT+2
1052
ed_text6 rb MAX_LEN_OBJ_TXT+2
1053
ed_text7 rb MAX_LEN_OBJ_TXT+2
1054
ed_text8 rb MAX_LEN_OBJ_TXT+2
1055
ed_text9 rb MAX_LEN_OBJ_TXT+2
1711 IgorA 1056
ed_text10 rb MAX_LEN_OBJ_TXT+2
1057
ed_text11 rb MAX_LEN_OBJ_TXT+2
1058
ed_text12 rb MAX_LEN_OBJ_TXT+2
1706 IgorA 1059
ed_text_sav rb 302
1060
 
1061
txt_null db 'null',0
1062
mouse_dd dd ?
1063
 
1064
el_focus dd tree1
1065
;дерево со списком возможных типов объектов
1066
tree1 tree_list sizeof.ObjOpt,20+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\
1717 IgorA 1067
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,50,125,280, 0,obj_opt.info-obj_opt,0, el_focus,\
1706 IgorA 1068
	w_scr_t1,on_add_object
1069
;дерево с объектами в пользовательском файле
1070
tree2 tree_list sizeof.object,MAX_CED_OBJECTS+2, tl_draw_par_line,\
1717 IgorA 1071
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 155,50,130,280, 13,u_object.txt-u_object,MAX_LEN_OBJ_TXT, el_focus,\
1706 IgorA 1072
	w_scr_t2,on_file_object_select
1073
 
1074
msgbox_0:
1075
  db 1,0
1076
  db 'Warning',0
1077
  db 'Error saving file!',13,\
1078
     'Maybe the file name is not entered correctly.',13,\
1079
     '  (error code ='
1080
  .err: db '?'
1081
  db ')',0
1082
  db 'Close',0
1083
  db 0
1084
 
1085
msgbox_1:
1086
	db 1,0
1087
	db ':)',0
1088
	db 'File was saved',0
1089
	db 'Ok',0
1090
	db 0
1091
 
1092
struct TexSelect
1093
	x0 dd ?
1094
	y0 dd ?
1095
	x1 dd ?
1096
	y1 dd ?
1097
ends
1098
;------------------------------------------------------------------------------
1099
align 4
1100
tedit0: ;структура текстового редактора
1101
	.wnd BOX 310,50,325,260 ;+ 0
1102
	.rec BOX 30,13,7,10   ;+16
1103
	.drag_m db 0 ;+32 выделение от мыши
1104
	.drag_k db 0 ;+33 выделение от клавиатуры
1105
	.sel  TexSelect 0,0,0,0 ;+34 структура выделения
1106
	.seln TexSelect ;+50 дополнительная структура выделения
1107
	.tex	  dd 0 ;+66 text memory pointer
1108
	.tex_1	  dd 0 ;+70 text first symbol pointer
1109
	.tex_end  dd 0 ;+74 text end memory pointer
1110
	.cur_x	  dd 0 ;+78 координата x курсора
1111
	.cur_y	  dd 0 ;+82 координата y курсора
1112
	.max_chars dd 25002 ;+86 максимальное число символов в одном документе
1113
	.count_colors_text dd 1 ;+90 колличество цветов текста
1114
	.count_key_words   dd 0 ;+94 колличество ключевых слов
1115
	.color_cursor	   dd 0xff0000 ;+98 цвет курсора
1116
	.color_wnd_capt    dd 0x0080c0 ;+102 цвет полей вокруг окна
1117
	.color_wnd_work    dd	   0x0 ;+106 цвет фона окна
1118
	.color_wnd_bord    dd 0xffffff ;+110 цвет текста на полях
1119
	.color_select	   dd 0x0000ff ;+114 цвет выделения
1120
	.color_cur_text    dd 0xffff00 ;+118 цвет символа под курсором
1121
	.color_wnd_text    dd 0x80ffff ;+122 цвет текста в окне
1122
	.syntax_file	   dd 0 ;+126 указатель на начало файла синтаксиса
1123
	.syntax_file_size  dd 55*1024 ;+130 максимальный размер файла синтаксиса
1124
	.text_colors	   dd 0 ;+134 указатель на массив цветов текста
1125
	.help_text_f1	   dd 0 ;+138 указатель на текст справки (по нажатии F1)
1126
	.help_id	   dd -1 ;+142 идентификатор для справки
1127
	.key_words_data    dd 0 ;+146 указатель на структуры ключевых слов TexColViv
1128
	.tim_ch      dd ? ;+150 количество изменений в файле
1129
	.tim_undo    dd ? ;+154 количество отмененных действий
1130
	.tim_ls      dd ? ;+158 время последнего сохранения
1131
	.tim_co      dd ? ;+162 время последней цветовой разметки
1132
	.el_focus    dd el_focus ;+166 указатель на переменную элемента в фокусе
1133
	.err_save    db 0 ;+170 ошибка сохранения файла
1134
	.panel_id    db 0 ;+171 номер открытой панели
1135
	.key_new     db 0 ;+172 символ, который будет добавлятся с клавиатуры
1136
	.symbol_new_line db 20 ;+173 символ завершения строки
1137
	.scr_w	     dd scrol_w1 ;+174 вертикальный скроллинг
1138
	.scr_h	     dd scrol_h1 ;+178 горизонтальный скроллинг
1139
	.arr_key_pos dd 0 ;+182 указатель на массив позиций ключевых слов
1140
	.buffer      dd text_buffer ;+186 указатель на буфер копирования/вставки
1141
	.buffer_find dd 0 ;+190 указатель на буфер для поиска
1142
	.cur_ins     db 1 ;+194 режим работы курсора (обычный или замена)
1143
	.mode_color  db 1 ;+195 режим выделения слов цветом (0-выкл. 1-вкл.)
1144
	.mode_invis  db 0 ;+196 режим показа непечатаемых символов
1145
	.gp_opt      db 0 ;+197 опции возвращаемые функцией ted_get_pos_by_cursor
1146
	.fun_on_key_ctrl_o dd but_ctrl_o ;+198 указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла)
1147
	.fun_on_key_ctrl_f dd 0 ;+202 ... Ctrl+F (вызова/скрытия панели поиска)
1148
	.fun_on_key_ctrl_n dd but_ctrl_n ;+206 ... Ctrl+N (создание нового документа)
1149
	.fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S
1150
	.buffer_size	   dd BUF_SIZE ;+214 размер буфера копирования/вставки
1151
	.fun_find_err	   dd 0 ;+218 указатель на функцию вызываемую если поиск закончился неудачно
1152
	.fun_init_synt_err dd 0 ;+222 указатель на функцию вызываемую при ошибочном открытии файла синтаксиса
1153
	.fun_draw_panel_buttons dd 0 ;+226 указатель на функцию рисования панели с кнопками
1154
	.fun_draw_panel_find	dd 0 ;+230 указатель на функцию рисования панели поиска
1155
	.fun_draw_panel_syntax	dd 0 ;+234 указатель на функцию рисования панели синтаксиса
1156
	.fun_save_err		dd ted_save_err_msg ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно
1157
	.increase_size dd 1000 ;+242 число символов на которые будет увечиваться память при нехватке
1158
	.ptr_free_symb dd ? ;+246 указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)
1159
;------------------------------------------------------------------------------
1160
align 4
1161
scrol_w1:
1162
.x:
1163
.size_x   dw 16 ;+0
1164
.start_x  dw 85 ;+2
1165
.y:
1166
.size_y   dw 100 ; +4
1167
.start_y  dw  15 ; +6
1168
.btn_high dd  15 ; +8
1169
.type	  dd   1 ;+12
1170
.max_area dd 100 ;+16
1171
rb 4+4
1172
.bckg_col dd 0xeeeeee ;+28
1173
.frnt_col dd 0xbbddff ;+32
1174
.line_col dd 0x808080 ;+36
1175
.redraw   dd   0 ;+40
1176
.delta	  dw   0 ;+44
1177
.delta2   dw   0 ;+46
1178
.run_x:
3475 IgorA 1179
rb 32
1706 IgorA 1180
.all_redraw dd 0 ;+80
1181
.ar_offset  dd 1 ;+84
1182
;---------------------------------------------------------------------
1183
align 4
1184
scrol_h1:
1185
.x:
1186
.size_x     dw 85 ;+0
1187
.start_x    dw 30 ;+2
1188
.y:
1189
.size_y     dw 16 ;+4
1190
.start_y    dw 100 ;+6
1191
.btn_high   dd 15 ;+8
1192
.type	    dd 1  ;+12
1193
.max_area   dd 100 ;+16
1194
rb 4+4
1195
.bckg_col   dd 0xeeeeee ;+28
1196
.frnt_col   dd 0xbbddff ;+32
1197
.line_col   dd 0x808080 ;+36
1198
.redraw     dd 0  ;+40
1199
.delta	    dw 0  ;+44
1200
.delta2     dw 0  ;+46
1201
.run_x:
3475 IgorA 1202
rb 32
1706 IgorA 1203
.all_redraw dd 0 ;+80
1204
.ar_offset  dd 1 ;+84
1205
 
1206
 
1207
 
1208
align 4
1209
w_scr_t1:
1210
.size_x     dw 16 ;+0
1211
rb 2+2+2
1212
.btn_high   dd 15 ;+8
1213
.type	    dd 1  ;+12
1214
.max_area   dd 100  ;+16
1215
rb 4+4
1216
.bckg_col   dd 0xeeeeee ;+28
1217
.frnt_col   dd 0xbbddff ;+32
1218
.line_col   dd 0  ;+36
1219
rb 4+2+2
1220
.run_x:
3475 IgorA 1221
rb 32
1706 IgorA 1222
.all_redraw dd 0 ;+80
1223
.ar_offset  dd 1 ;+84
1224
 
1225
align 4
1226
w_scr_t2:
1227
.size_x     dw 16 ;+0
1228
rb 2+2+2
1229
.btn_high   dd 15 ;+8
1230
.type	    dd 1  ;+12
1231
.max_area   dd 100  ;+16
1232
rb 4+4
1233
.bckg_col   dd 0xeeeeee ;+28
1234
.frnt_col   dd 0xbbddff ;+32
1235
.line_col   dd 0  ;+36
1236
rb 4+2+2
1237
.run_x:
3475 IgorA 1238
rb 32
1706 IgorA 1239
.all_redraw dd 0 ;+80
1240
.ar_offset  dd 1 ;+84
1241
 
1242
data_of_code dd 0
1243
sc system_colors
1244
 
1245
image_data dd 0 ;память для преобразования картинки функциями libimg
1246
 
1247
ced_info object 0 ;on start == 0
1248
	rb sizeof.object*(MAX_CED_OBJECTS-1)
1249
 
1250
text_buffer db BUF_SIZE dup(0)
1251
fn_obj_opt db 'ob_o.opt',0
1252
obj_opt ObjOpt
1714 IgorA 1253
	rb sizeof.ObjOpt*(MAX_OBJ_TYPES-1)+MAX_OBJ_CAPTIONS
1706 IgorA 1254
	db 0 ;eof options
1255
 
1256
cur_x dd 0
1257
cur_y dd 0
1258
foc_obj dd 0 ;объект в фокусе
1717 IgorA 1259
obj_count_txt_props dd 0 ;количество используемых текстовых свойств
1706 IgorA 1260
obj_m_win dd 0 ;структура главного окна
1261
 
1262
;
1263
if 1 ;lang eq ru
1264
 
1265
	err_message_found_lib0 db 'Не найдена библиотека box_lib.obj',0  ;строка, которая будет в сформированном окне, если библиотека не будет найдена
1266
	err_message_import0 db 'Ошибка при импорте библиотеки box_lib.obj',0
1267
	err_message_found_lib1 db 'Не найдена библиотека proc_lib.obj',0
1268
	err_message_import1 db 'Ошибка при импорте библиотеки proc_lib.obj',0
1269
	err_message_found_lib2 db 'Не удалось найти библиотеку buf2d.obj',0
1270
	err_message_import2 db 'Ошибка при импорте библиотеки buf2d.obj',0
1271
	err_message_found_lib3 db 'Не удалось найти библиотеку libimg.obj',0
1272
	err_message_import3 db 'Ошибка при импорте библиотеки libimg.obj',0
1273
	err_message_found_lib4 db 'Не удалось найти библиотеку msgbox.obj',0
1274
	err_message_import4 db 'Ошибка при импорте библиотеки msgbox.obj',0
1275
 
1276
	head_f_i:
1277
	head_f_l db 'Системная ошибка',0 ;заголовок окна, при возникновении ошибки
1278
else
1279
 
1280
	err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0
1281
	err_message_import0 db 'Error on load import library box_lib.obj',0
1282
	err_message_found_lib1 db 'Sorry I cannot found library proc_lib.obj',0
1283
	err_message_import1 db 'Error on load import library proc_lib.obj',0
1284
	err_message_found_lib2 db 'Sorry I cannot found library buf2d.obj',0
1285
	err_message_import2 db 'Error on load import library buf2d.obj',0
1286
	err_message_found_lib3 db 'Sorry I cannot found library libimg.obj',0
1287
	err_message_import3 db 'Error on load import library libimg.obj',0
1288
	err_message_found_lib4 db 'Sorry I cannot found library msgbox.obj',0
1289
	err_message_import4 db 'Error on load import library msgbox.obj',0
1290
 
1291
	head_f_i:
1292
	head_f_l db 'System error',0 ;заголовок окна, при возникновении ошибки
1293
end if
1294
 
1295
	system_dir0 db '/sys/lib/'
1296
	lib0_name db 'box_lib.obj',0
1297
 
1298
	system_dir1 db '/sys/lib/'
1299
	lib1_name db 'proc_lib.obj',0
1300
 
1301
	system_dir2 db '/sys/lib/'
1302
	lib2_name db 'buf2d.obj',0
1303
 
1304
	system_dir3 db '/sys/lib/'
1305
	lib3_name db 'libimg.obj',0
1306
 
1307
	system_dir4 db '/sys/lib/'
1308
	lib4_name db 'msgbox.obj',0
1309
 
1310
align 4
1311
import_buf2d_lib:
1312
	dd sz_lib_init
1313
	buf2d_create dd sz_buf2d_create
1314
	buf2d_create_f_img dd sz_buf2d_create_f_img
1315
	buf2d_clear dd sz_buf2d_clear
1316
	buf2d_draw dd sz_buf2d_draw
1317
	buf2d_delete dd sz_buf2d_delete
1318
	buf2d_line dd sz_buf2d_line
1319
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
1320
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
1727 IgorA 1321
	;buf2d_circle dd sz_buf2d_circle
1706 IgorA 1322
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
1323
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
1324
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
1325
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
1326
	buf2d_bit_blt dd sz_buf2d_bit_blt
1327
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
1328
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
1727 IgorA 1329
	;buf2d_curve_bezier dd sz_buf2d_curve_bezier
1706 IgorA 1330
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
1331
	buf2d_draw_text dd sz_buf2d_draw_text
1727 IgorA 1332
	;buf2d_crop_color dd sz_buf2d_crop_color
1706 IgorA 1333
	buf2d_offset_h dd sz_buf2d_offset_h
1334
dd 0,0
1335
	sz_lib_init db 'lib_init',0
1336
	sz_buf2d_create db 'buf2d_create',0
1337
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
1338
	sz_buf2d_clear db 'buf2d_clear',0
1339
	sz_buf2d_draw db 'buf2d_draw',0
1340
	sz_buf2d_delete db 'buf2d_delete',0
1341
	sz_buf2d_line db 'buf2d_line',0
1342
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 ;рисование прямоугольника, 2-я координата задана по размеру
1343
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
1727 IgorA 1344
	;sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
1706 IgorA 1345
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
1346
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
1347
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
1348
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
1349
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
1350
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
1351
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
1727 IgorA 1352
	;sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
1706 IgorA 1353
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
1354
	sz_buf2d_draw_text db 'buf2d_draw_text',0
1727 IgorA 1355
	;sz_buf2d_crop_color db 'buf2d_crop_color',0
1706 IgorA 1356
	sz_buf2d_offset_h db 'buf2d_offset_h',0
1357
 
1358
align 4
1359
import_box_lib:
1360
	dd alib_init2
1361
 
1362
	edit_box_draw dd aEdit_box_draw
1363
	edit_box_key dd aEdit_box_key
1364
	edit_box_mouse dd aEdit_box_mouse
1365
	edit_box_set_text dd aEdit_box_set_text
1366
 
1714 IgorA 1367
	init_checkbox dd aInit_checkbox
1368
	check_box_draw dd aCheck_box_draw
1369
	check_box_mouse dd aCheck_box_mouse
1370
 
1706 IgorA 1371
	scrollbar_ver_draw dd aScrollbar_ver_draw
1372
	scrollbar_hor_draw dd aScrollbar_hor_draw
1373
 
1374
	tl_data_init dd sz_tl_data_init
1375
	tl_data_clear dd sz_tl_data_clear
1376
	tl_info_clear dd sz_tl_info_clear
1377
	tl_key dd sz_tl_key
1378
	tl_mouse dd sz_tl_mouse
1379
	tl_draw dd sz_tl_draw
1380
	tl_info_undo dd sz_tl_info_undo
1381
	tl_info_redo dd sz_tl_info_redo
1382
	tl_node_add dd sz_tl_node_add
1383
	tl_node_set_data dd sz_tl_node_set_data
1384
	tl_node_get_data dd sz_tl_node_get_data
1385
	tl_node_delete dd sz_tl_node_delete
1386
	tl_node_move_up dd sz_tl_node_move_up
1387
	tl_node_move_down dd sz_tl_node_move_down
1388
	tl_cur_beg dd sz_tl_cur_beg
1389
	tl_cur_next dd sz_tl_cur_next
1390
	tl_cur_perv dd sz_tl_cur_perv
1391
	tl_node_close_open dd sz_tl_node_close_open
1392
	tl_node_lev_inc dd sz_tl_node_lev_inc
1393
	tl_node_lev_dec dd sz_tl_node_lev_dec
1394
	tl_node_poi_get_info dd sz_tl_node_poi_get_info
1395
	tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
1396
	tl_node_poi_get_data dd sz_tl_node_poi_get_data
1397
 
1398
	ted_but_save_file dd sz_ted_but_save_file
1399
	ted_but_sumb_upper dd sz_ted_but_sumb_upper
1400
	ted_but_sumb_lover dd sz_ted_but_sumb_lover
1401
	ted_can_save dd sz_ted_can_save
1402
	ted_clear dd sz_ted_clear
1403
	ted_delete dd sz_ted_delete
1404
	ted_draw dd sz_ted_draw
1405
	ted_init dd sz_ted_init
1406
	ted_init_scroll_bars dd sz_ted_init_scroll_bars
1407
	ted_init_syntax_file dd sz_ted_init_syntax_file
1408
	ted_is_select dd sz_ted_is_select
1409
	ted_key dd sz_ted_key
1410
	ted_mouse dd sz_ted_mouse
1411
	ted_open_file dd sz_ted_open_file
1412
	ted_text_add dd sz_ted_text_add
1413
	ted_but_select_word dd sz_ted_but_select_word
1414
	ted_but_cut dd sz_ted_but_cut
1415
	ted_but_copy dd sz_ted_but_copy
1416
	ted_but_paste dd sz_ted_but_paste
1417
	ted_but_undo dd sz_ted_but_undo
1418
	ted_but_redo dd sz_ted_but_redo
1419
	ted_but_reverse dd sz_ted_but_reverse
1420
	ted_but_find_next dd sz_ted_but_find_next
1421
	ted_text_colored dd sz_ted_text_colored
1422
	;version_text_edit dd sz_ted_version
1423
 
1424
dd 0,0
1425
 
1426
	alib_init2 db 'lib_init',0
1427
 
1428
	aEdit_box_draw	db 'edit_box',0
1429
	aEdit_box_key	db 'edit_box_key',0
1430
	aEdit_box_mouse db 'edit_box_mouse',0
1431
	aEdit_box_set_text db 'edit_box_set_text',0
1432
 
1714 IgorA 1433
	aInit_checkbox db 'init_checkbox2',0
1434
	aCheck_box_draw db 'check_box_draw2',0
1435
	aCheck_box_mouse db 'check_box_mouse2',0
1436
 
1706 IgorA 1437
	aScrollbar_ver_draw  db 'scrollbar_v_draw',0
1438
	aScrollbar_hor_draw  db 'scrollbar_h_draw',0
1439
 
1440
	sz_tl_data_init db 'tl_data_init',0
1441
	sz_tl_data_clear db 'tl_data_clear',0
1442
	sz_tl_info_clear db 'tl_info_clear',0
1443
	sz_tl_key db 'tl_key',0
1444
	sz_tl_mouse db 'tl_mouse',0
1445
	sz_tl_draw db 'tl_draw',0
1446
	sz_tl_info_undo db 'tl_info_undo',0
1447
	sz_tl_info_redo db 'tl_info_redo',0
1448
	sz_tl_node_add db 'tl_node_add',0
1449
	sz_tl_node_set_data db 'tl_node_set_data',0
1450
	sz_tl_node_get_data db 'tl_node_get_data',0
1451
	sz_tl_node_delete db 'tl_node_delete',0
1452
	sz_tl_node_move_up db 'tl_node_move_up',0
1453
	sz_tl_node_move_down db 'tl_node_move_down',0
1454
	sz_tl_cur_beg db 'tl_cur_beg',0
1455
	sz_tl_cur_next db 'tl_cur_next',0
1456
	sz_tl_cur_perv db 'tl_cur_perv',0
1457
	sz_tl_node_close_open db 'tl_node_close_open',0
1458
	sz_tl_node_lev_inc db 'tl_node_lev_inc',0
1459
	sz_tl_node_lev_dec db 'tl_node_lev_dec',0
1460
	sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
1461
	sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
1462
	sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
1463
 
1464
	sz_ted_but_save_file	db 'ted_but_save_file',0
1465
	sz_ted_but_sumb_upper	db 'ted_but_sumb_upper',0
1466
	sz_ted_but_sumb_lover	db 'ted_but_sumb_lover',0
1467
	sz_ted_can_save 		db 'ted_can_save',0
1468
	sz_ted_clear			db 'ted_clear',0
1469
	sz_ted_delete			db 'ted_delete',0
1470
	sz_ted_draw				db 'ted_draw',0
1471
	sz_ted_init				db 'ted_init',0
1472
	sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0
1473
	sz_ted_init_syntax_file db 'ted_init_syntax_file',0
1474
	sz_ted_is_select		db 'ted_is_select',0
1475
	sz_ted_key				db 'ted_key',0
1476
	sz_ted_mouse			db 'ted_mouse',0
1477
	sz_ted_open_file		db 'ted_open_file',0
1478
	sz_ted_text_add 		db 'ted_text_add',0
1479
	sz_ted_but_select_word	db 'ted_but_select_word',0
1480
	sz_ted_but_cut			db 'ted_but_cut',0
1481
	sz_ted_but_copy 		db 'ted_but_copy',0
1482
	sz_ted_but_paste		db 'ted_but_paste',0
1483
	sz_ted_but_undo 		db 'ted_but_undo',0
1484
	sz_ted_but_redo 		db 'ted_but_redo',0
1485
	sz_ted_but_reverse		db 'ted_but_reverse',0
1486
	sz_ted_but_find_next	db 'ted_but_find_next',0
1487
	sz_ted_text_colored		db 'ted_text_colored',0
1488
	;sz_ted_version db 'version_text_edit',0
1489
 
1490
align 4
1491
import_proc_lib:
1492
	OpenDialog_Init dd aOpenDialog_Init
1493
	OpenDialog_Start dd aOpenDialog_Start
1494
dd 0,0
1495
	aOpenDialog_Init db 'OpenDialog_init',0
1496
	aOpenDialog_Start db 'OpenDialog_start',0
1497
 
1498
align 4
1499
import_libimg:
1500
	dd alib_init1
1501
	img_is_img  dd aimg_is_img
1502
	img_info    dd aimg_info
1503
	img_from_file dd aimg_from_file
1504
	img_to_file dd aimg_to_file
1505
	img_from_rgb dd aimg_from_rgb
1506
	img_to_rgb  dd aimg_to_rgb
1507
	img_to_rgb2 dd aimg_to_rgb2
1508
	img_decode  dd aimg_decode
1509
	img_encode  dd aimg_encode
1510
	img_create  dd aimg_create
1511
	img_destroy dd aimg_destroy
1512
	img_destroy_layer dd aimg_destroy_layer
1513
	img_count   dd aimg_count
1514
	img_lock_bits dd aimg_lock_bits
1515
	img_unlock_bits dd aimg_unlock_bits
1516
	img_flip    dd aimg_flip
1517
	img_flip_layer dd aimg_flip_layer
1518
	img_rotate  dd aimg_rotate
1519
	img_rotate_layer dd aimg_rotate_layer
1520
	img_draw    dd aimg_draw
1521
 
1522
dd 0,0
1523
 
1524
	alib_init1   db 'lib_init',0
1525
	aimg_is_img  db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение
1526
	aimg_info    db 'img_info',0
1527
	aimg_from_file db 'img_from_file',0
1528
	aimg_to_file db 'img_to_file',0
1529
	aimg_from_rgb db 'img_from_rgb',0
1530
	aimg_to_rgb  db 'img_to_rgb',0 ;преобразование изображения в данные RGB
1531
	aimg_to_rgb2 db 'img_to_rgb2',0
1532
	aimg_decode  db 'img_decode',0 ;автоматически определяет формат графических данных
1533
	aimg_encode  db 'img_encode',0
1534
	aimg_create  db 'img_create',0
1535
	aimg_destroy db 'img_destroy',0
1536
	aimg_destroy_layer db 'img_destroy_layer',0
1537
	aimg_count   db 'img_count',0
1538
	aimg_lock_bits db 'img_lock_bits',0
1539
	aimg_unlock_bits db 'img_unlock_bits',0
1540
	aimg_flip    db 'img_flip',0
1541
	aimg_flip_layer db 'img_flip_layer',0
1542
	aimg_rotate  db 'img_rotate',0
1543
	aimg_rotate_layer db 'img_rotate_layer',0
1544
	aimg_draw    db 'img_draw',0
1545
 
1546
align 4
1547
import_msgbox_lib:
1548
	mb_create dd amb_create
1549
	mb_reinit dd amb_reinit
1550
	mb_setfunctions dd amb_setfunctions
1551
dd 0,0
1552
	amb_create db 'mb_create',0
1553
	amb_reinit db 'mb_reinit',0
1554
	amb_setfunctions db 'mb_setfunctions',0
1555
 
1556
;library structures
1557
l_libs_start:
1558
	lib0 l_libs lib0_name, sys_path, library_path, system_dir0, err_message_found_lib0, head_f_l, import_box_lib, err_message_import0, head_f_i
1559
	lib1 l_libs lib1_name, sys_path, library_path, system_dir1, err_message_found_lib1, head_f_l, import_proc_lib,err_message_import1, head_f_i
1560
	lib2 l_libs lib2_name, sys_path, library_path, system_dir2, err_message_found_lib2, head_f_l, import_buf2d_lib, err_message_import2, head_f_i
1561
	lib3 l_libs lib3_name, sys_path, library_path, system_dir3, err_message_found_lib3, head_f_l, import_libimg, err_message_import3, head_f_i
1562
	lib4 l_libs lib4_name, sys_path, library_path, system_dir4, err_message_found_lib4, head_f_l, import_msgbox_lib, err_message_import4, head_f_i
1563
load_lib_end:
1564
 
1565
 
1566
align 16
1567
procinfo process_information
1568
run_file_70 FileInfoBlock
3465 IgorA 1569
open_b rb 560
1706 IgorA 1570
 
3475 IgorA 1571
IncludeIGlobals
1706 IgorA 1572
i_end:
3475 IgorA 1573
IncludeUGlobals
1706 IgorA 1574
	buf_cmd_lin rb 1024
3465 IgorA 1575
	file_name rb 1024 ;icon file path
1706 IgorA 1576
	fp_obj_opt rb 1024 ;obj options file patch
1577
	rb 1024
1714 IgorA 1578
	prop_thread:
1579
	rb 1024
1706 IgorA 1580
	thread: ;вверху дочерний стек для окна сообщения
1581
	rb 1024
1582
stacktop: ;вверху стек основной программы
1583
	sys_path rb 1024
1584
	library_path rb 1024
1585
mem: