Subversion Repositories Kolibri OS

Rev

Rev 4990 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4990 Rev 7575
Line 1... Line -...
1
struct FileInfoBlock
-
 
2
	Function dd ?
-
 
3
	Position dd ?
-
 
4
	Flags	 dd ?
-
 
5
	Count	 dd ?
-
 
6
	Buffer	 dd ?
-
 
7
		db ?
-
 
8
	FileName dd ?
-
 
9
ends
-
 
Line 10... Line 1...
10
 
1
struct TexColViv
11
struct TexColViv
2
	Text  rb MAX_COLOR_WORD_LEN ; ñëîâî äëÿ ïîäñâåòêè
12
	Text  rb MAX_COLOR_WORD_LEN ; ñëîâî äëÿ ïîäñâåòêè
3
	f1    dd 0 ; ñïðàâêà ïî ñëîâó
13
	f1    dd 0 ; ñïðàâêà ïî ñëîâó
4
	flags db ? ; f1+4 ôëàãè èñïîëüçóåìûå ïðè âûäåëåíèè
Line 26... Line 17...
26
color_select dd ?
17
color_cur_text dd ?
27
color_cur_text dd ?
18
color_wnd_text dd ?
28
color_wnd_text dd ?
19
 
Line 29... Line 20...
29
 
20
options_file dd 0
30
options_file dd 0
21
open_file_size dd 0
-
 
22
unpac_mem dd 0
31
options_file_end dd 0
23
tex_colors dd 0
32
tex_colors dd 0
24
tex_help_f1 dd 0
Line 33... Line 25...
33
tex_help_f1 dd 0
25
 
Line 44... Line 36...
44
 
36
align 4
45
align 4
37
InitColText:
46
InitColText:
38
	pushad
Line 47... Line 39...
47
	pushad
39
 
48
 
40
	mov ebx,[fn_col_option]
49
	mov  ebx,dword[fn_col_option]
41
	copy_path ebx,fn_syntax_dir,file_name_rez,0
Line -... Line 42...
-
 
42
	copy_path file_name_rez,sys_path,file_name,0
-
 
43
 
-
 
44
	;[fn_col_option] = '*.syn'
-
 
45
	;fn_syntax_dir = 'info/'
-
 
46
	;file_name_rez = 'info/*.syn'
-
 
47
 
50
	copy_path ebx,fn_syntax_dir,file_name_rez,0
48
	mov [run_file_70.Function], SSF_GET_INFO
51
	copy_path file_name_rez,sys_path,file_name,0
49
	mov [run_file_70.Position], 0
-
 
50
	mov [run_file_70.Flags], 0
-
 
51
	mov dword[run_file_70.Count], 0
-
 
52
	mov dword[run_file_70.Buffer], open_b
-
 
53
	mov byte[run_file_70+20], 0
-
 
54
	mov dword[run_file_70.FileName], file_name
-
 
55
	mcall SF_FILE,run_file_70
-
 
56
 
-
 
57
	mov ecx,dword[open_b+32] ;+32 qword: ðàçìåð ôàéëà â áàéòàõ
-
 
58
	stdcall mem.ReAlloc,[options_file],ecx
-
 
59
	mov [options_file],eax
-
 
60
	mov [open_file_size],ecx
52
 
61
	
53
	mov eax,70
62
	mov [run_file_70.Function], SSF_READ_FILE
54
	mov [run_file_70.Function], 0
-
 
55
	mov [run_file_70.Position], 0
-
 
56
	mov [run_file_70.Flags], 0
63
	mov [run_file_70.Position], 0
57
	mov ebx,[options_file_end]
64
	mov [run_file_70.Flags], 0
58
	sub ebx,[options_file]
65
	mov [run_file_70.Count], ecx
59
	mov [run_file_70.Count], ebx
66
	m2m dword[run_file_70.Buffer], dword[options_file]
-
 
67
	mov byte[run_file_70+20], 0
-
 
68
	mov dword[run_file_70.FileName], file_name
-
 
69
	mcall SF_FILE,run_file_70 ;çàãðóæàåì ôàéë èçîáðàæåíèß
60
	m2m [run_file_70.Buffer], [options_file]
70
	test eax,eax
61
	mov byte[run_file_70+20], 0
71
	jnz .no_colors
Line -... Line 72...
-
 
72
	cmp ebx,0xffffffff
Line 62... Line 73...
62
	mov [run_file_70.FileName], file_name
73
	je .no_colors
63
	mov ebx,run_file_70
74
 
64
	int 0x40
75
	mcall SF_SET_CAPTION,1,file_name
65
 
76
 
Line -... Line 77...
-
 
77
	;init: count_colors_text, ColWords, ...
66
 
78
	mov dword[count_colors_text],1
67
	;init: count_colors_text, ColWords, ...
79
	mov dword[ColWords],0
-
 
80
	mov dword[tex_help_f1],0
68
	mov dword[count_colors_text],1
81
 
-
 
82
	mov edi,[options_file]
69
	mov dword[ColWords],0
83
	cmp dword[edi],'KPCK'
-
 
84
	jne .end_unpack
70
	mov dword[tex_help_f1],0
85
		;notify_window_run ...
71
 
86
		mov ecx,[edi+4]
72
	cmp eax,6
87
		cmp [open_file_size],ecx
-
 
88
		jge @f
-
 
89
			;åñëè äëß ðàñïàêîâàíîãî ôàéëà íå õâàòàåò âûäåëåííîé ïàìßòè
-
 
90
			stdcall mem.ReAlloc,edi,ecx
73
	je @f
91
			mov [options_file],eax
-
 
92
			mov [open_file_size],ecx
-
 
93
		@@:
74
	cmp eax,0
94
		;âûäåëåíèå ïàìßòè äëß ðàñïàêîâêè ôàéëà
75
	je @f
95
		stdcall mem.ReAlloc,[unpac_mem],ecx
76
		cmp ax,10
96
		mov [unpac_mem],eax
77
		jl .zifra_0_9
97
 
78
			mov al,'?'
98
		stdcall unpack,[options_file],eax
-
 
99
		mov edi,[options_file]
79
			sub ax,48
100
		mov esi,[unpac_mem]
80
		.zifra_0_9:
-
 
81
		add ax,48
-
 
82
		jmp .no_colors
-
 
83
	@@:
-
 
84
 
-
 
85
	mov esi,[options_file]
101
		mov ecx,[edi+4]
86
	cmp dword[esi],'KPCK'
102
		cld
87
	jne @f
103
		rep movsb
Line 88... Line 104...
88
		notify_window_run txt_no_kpack ; ñîçäàåì îêíî @notify
104
	.end_unpack:
89
		jmp .no_colors
105
	mov esi,[options_file]
90
	@@:
106
	mov edi,count_colors_text
Line 91... Line 107...
91
	mov edi,count_colors_text
107
	mov ecx,9
92
	mov ecx,9*4
108
	rep movsd
93
	rep movsb
109
 
94
 
110
	mov eax,[options_file]
95
	mov eax,[options_file]
111
	add eax,32
Line 96... Line 112...
96
	add eax,32
112
	mov [tex_colors],eax
97
	mov dword[tex_colors],eax
113
 
98
 
114
	mov eax,[count_colors_text] ;init: Col (offset to key words)
99
	mov eax,dword[count_colors_text] ;init: Col (offset to key words)
115
	add eax,8
100
	add eax,8
116
	shl eax,2
Line 101... Line 117...
101
	shl eax,2
117
	add eax,[options_file]
102
	add eax,[options_file]
118
	mov [Col],eax
Line 103... Line 119...
103
	mov dword[Col],eax
119
 
Line 134... Line 150...
134
		stdcall print_color,[eax]
150
		add eax,4
135
		add eax,4
151
	loop @b
136
	loop @b
152
 
Line 137... Line 153...
137
 
153
	stdcall print_capt,capt_lbl_wo
138
	stdcall print_capt,capt_lbl_wo
154
	mov ecx,[ColWords]
139
	mov ecx,dword[ColWords]
155
	mov eax,[Col]
140
	mov eax,[Col]
156
	xor ebx,ebx
141
	xor ebx,ebx
-
 
-
 
157
	@@: ;öèêë ïî ïîäñâå÷èâàåìûì ñëîâàì
142
	@@:
158
		inc ebx
143
		inc ebx
159
		stdcall print_word,eax,ebx
144
		stdcall print_word,eax,ebx
160
		add eax,sizeof.TexColViv
145
		add eax,sizeof.TexColViv
161
	loop @b
Line 146... Line 162...
146
	loop @b
162
 
147
 
163
	stdcall print_capt,capt_lbl_f1
148
	stdcall print_capt,capt_lbl_f1
164
	mov ecx,[ColWords]
149
	mov ecx,dword[ColWords]
165
	mov eax,[Col]
150
	mov eax,[Col]
-
 
-
 
166
	xor ebx,ebx
151
	xor ebx,ebx
167
	@@: ;öèêë ïî ñïðàâêàì ê ïîäñâ. ñëîâàì
152
	@@:
168
		inc ebx
153
		inc ebx
169
		stdcall print_word_f1,eax,ebx
154
		stdcall print_word_f1,eax,ebx
170
		add eax,sizeof.TexColViv
Line 155... Line 171...
155
		add eax,sizeof.TexColViv
171
	loop @b
156
	loop @b
-
 
157
	
172
	
158
	; ïîäãîòîâêà äëÿ  PathShow
173
	; ïîäãîòîâêà äëß PathShow
Line 159... Line 174...
159
	push dword PathShow_data_1
174
	stdcall [PathShow_prepare], PathShow_data_1
160
	call [PathShow_prepare]
175
	call draw_window
161
	call draw_window
176
 
Line 207... Line 222...
207
endp
222
 
Line 208... Line 223...
208
 
223
align 4
209
align 4
224
proc print_capt, capt:dword
210
proc print_capt, capt:dword
225
	pushad
211
	pushad
226
	mov esi,[capt]
212
	mov esi,dword[capt]
227
	stdcall str_len,esi
213
	stdcall str_len,esi
228
	stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor
214
	stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor
229
	popad
215
	popad
230
	ret
216
	ret
231
endp
Line 217... Line 232...
217
endp
232
 
218
 
233
align 4
219
align 4
234
proc print_word, text:dword, index:dword
220
proc print_word, text:dword, index:dword
235
	pushad
221
	pushad
236
	mov edi,text_buffer
222
	mov esi,text_buffer
237
	mov byte[edi],0
223
	mov byte[esi],0
238
	stdcall str_cat,edi,capt_beg_word
224
	stdcall str_cat,esi,capt_beg_word
239
	stdcall str_len,edi
Line 225... Line 240...
225
	stdcall str_len,esi
240
	add edi,eax
226
	add esi,eax
241
 
227
 
242
	mov ecx,[text]	
Line 228... Line 243...
228
	mov edi,dword[text]	
243
	stdcall code_string,ecx,edi ;êîäèðóåì ñòðîêó ñ êëþ÷åâûì ñëîâîì
229
	stdcall code_string,edi,esi ;êîäèðóåì ñòðîêó ñ êëþ÷åâûì ñëîâîì
244
	stdcall str_cat,edi,capt_end_word
230
	stdcall str_cat,esi,capt_end_word
245
 
231
 
246
	cmp dword[ecx+TexColViv.f1],0
232
	cmp dword[edi+MAX_COLOR_WORD_LEN],0 ;f1
247
	je @f
233
	je @f
248
		stdcall str_cat,edi,capt_calc_f1
Line 234... Line 249...
234
		stdcall str_cat,esi,capt_calc_f1
249
		stdcall str_cat_value,edi,[index]
235
		stdcall str_cat_value,esi,[index]
-
 
236
		stdcall str_cat,esi,capt_lbl_f1_use
-
 
237
	@@:
-
 
238
 
250
		stdcall str_cat,edi,capt_lbl_f1_use
239
	mov esi,text_buffer
-
 
240
	stdcall str_len,esi ;óçíàåì äëèííó âñåé ñòðîêè
251
	@@:
241
	stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor
252
 
242
 
-
 
243
mov ecx,edi
-
 
244
mov edi,text_buffer
253
	stdcall str_len,edi
245
mov byte[edi],','
254
	add edi,eax
246
inc edi
255
	mov word[edi],','
247
mov byte[edi],0
256
	inc edi
248
	xor eax,eax
257
	movzx eax,byte[ecx+TexColViv.flags]
249
	mov al,byte[ecx+MAX_COLOR_WORD_LEN+4] ;wwo
258
	stdcall str_cat_value,edi,eax
Line 250... Line -...
250
	stdcall str_cat_value,edi,eax
-
 
251
	stdcall str_len,edi
259
	stdcall str_len,edi
252
	add edi,eax
260
	add edi,eax
253
	mov byte[edi],','
261
	mov word[edi],','
254
	inc edi
262
	inc edi
255
 
263
 
256
	xor eax,eax
264
	movzx eax,word[ecx+TexColViv.endc] ;(escc shl 8)+endc
257
	mov ax,word[ecx+MAX_COLOR_WORD_LEN+4+1] ;(escc shl 8)+endc
265
	or eax,eax ;ïðîâåðßåì åñòü ëè çàâåðøàþùèé è ýêðàíèíóþùèé ñèìâîë
258
	cmp ax,0 ;ïðîâåðÿåì åñòü ëè çàâåðøàþùèé è ýêðàíèíóþùèé ñèìâîë
266
	jz @f
259
	je @f
267
		stdcall str_cat_value,edi,eax
Line 260... Line -...
260
		stdcall str_cat_value,edi,eax
-
 
261
		stdcall str_len,edi
268
		stdcall str_len,edi
262
		add edi,eax
269
		add edi,eax
263
	@@:
270
	@@:
264
	mov byte[edi],','
271
	mov word[edi],','
265
	inc edi
272
	inc edi
266
 
-
 
267
	xor eax,eax
-
 
Line 268... Line 273...
268
	mov al,byte[ecx+MAX_COLOR_WORD_LEN+4+3] ;color
273
 
269
	stdcall str_cat_value,edi,eax
274
	movzx eax,byte[ecx+TexColViv.color]
270
	stdcall str_len,edi
275
	stdcall str_cat_value,edi,eax
Line 271... Line 276...
271
	add edi,eax
276
	stdcall str_len,edi
272
	mov byte[edi],13
277
	add edi,eax
273
	inc edi
278
	mov word[edi],13
Line 274... Line 279...
274
	mov byte[edi],0
279
 
275
 
280
	mov esi,text_buffer
276
	mov esi,text_buffer
281
	stdcall str_len,esi
277
	stdcall str_len,esi
282
	stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor
278
	stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_move_cursor
283
 
279
 
284
	popad
280
	popad
285
	ret
281
	ret
286
endp
282
endp
287
 
283
 
288
align 4
284
align 4
289
proc print_word_f1, text:dword, index:dword
285
proc print_word_f1, text:dword, index:dword
290
	pushad
286
	pushad
291
	mov edi,[text]
287
	mov edi,dword[text]
292
	mov esi,[edi+TexColViv.f1]
Line 288... Line 293...
288
	mov esi,dword[edi+MAX_COLOR_WORD_LEN] ;f1
293
	cmp esi,0
289
	cmp esi,0
294
	je @f
290
	je @f
295
		mov ebx,text_buffer
Line 291... Line 296...
291
		mov ebx,text_buffer
296
		mov byte[ebx],0
292
		mov byte[ebx],0
297
		stdcall str_cat,ebx,capt_point
Line 306... Line 311...
306
	@@:
311
	popad
307
	popad
312
	ret
308
	ret
313
endp
309
endp
314
 
Line -... Line 315...
-
 
315
;description:
-
 
316
; êîäèðîâêà ñòðîêè, çàìåíà íåïå÷àòàåìûõ ñèìâîëîâ íà ÷èñëîâûå êîäû
310
 
317
align 4
311
align 4
318
proc code_string, text:dword, out_text:dword
312
proc code_string, text:dword, out_text:dword
319
	pushad
313
	pushad
320
	mov esi,[text]
314
	mov esi,dword[text]
321
	stdcall str_len,esi
315
	stdcall str_len,esi
322
	mov ecx,eax
316
	mov ecx,eax
323
	mov edi,[out_text]
Line 317... Line 324...
317
	mov edi,dword[out_text]
324
 
318
 
325
	.copy:
319
	.copy:
326
		mov al,byte[esi]
320
		mov al,byte[esi]
327
		inc esi
Line 333... Line 340...
333
			mov byte[edi],39
340
			mov byte[edi+1],','
334
			mov byte[edi+1],','
341
			add edi,2
335
			add edi,2
342
			and eax,0xff
336
			and eax,0xff
343
			mov dword[edi],0
337
			mov dword[edi],0
344
			stdcall convert_int_to_str,4
338
			call tl_convert_to_str
345
			stdcall str_len,edi
339
			stdcall str_len,edi
346
			add edi,eax
340
			add edi,eax
347
			mov byte[edi],','
341
			mov byte[edi],','
348
			mov byte[edi+1],39
342
			mov byte[edi+1],39
349
			add edi,2
343
			add edi,2
350
	loop .copy
Line 381... Line 388...
381
	pushad
388
	mov edi,[str1]
382
	mov edi,[str1]
389
	stdcall str_len,edi
383
	stdcall str_len,edi
390
	add edi,eax
384
	add edi,eax
391
	mov eax,[value]
385
	mov eax,[value]
392
	stdcall convert_int_to_str,12
386
	call tl_convert_to_str
393
	popad
387
	popad
394
	ret
388
	ret
395
endp
389
endp
396
 
Line 390... Line 397...
390
 
397
;output:
Line 402... Line 409...
402
	sub eax,[str1]
409
	ret
403
	ret
410
endp
404
endp
411
 
Line 405... Line 412...
405
 
412
;input:
406
;input:
413
; eax - ÷èñëî
407
; eax = value
414
; edi - áóôåð äëß ñòðîêè
-
 
415
; len - äëèííà áóôåðà
-
 
416
;output:
408
; edi = string buffer
417
align 4
-
 
418
proc convert_int_to_str uses eax ecx edx edi esi, len:dword
409
align 4
419
	mov esi,[len]
410
tl_convert_to_str:
420
	add esi,edi
411
	pushad
421
	dec esi
412
	stdcall mem_clear,edi,12
422
	call .str
413
	call .str
-
 
414
	popad
423
	ret
-
 
424
endp
Line 415... Line 425...
415
	ret
425
 
416
 
426
align 4
417
align 4
-
 
418
.str:
-
 
-
 
427
.str:
419
	mov ecx,0x0a ;çàäàåòñÿ ñèñòåìà ñ÷èñëåíèÿ èçìåíÿþòñÿ ðåãèñòðû ebx,eax,ecx,edx âõîäíûå ïàðàìåòðû eax - ÷èñëî
428
	mov ecx,10
420
		;ïðåðåâîä ÷èñëà â ASCII ñòðîêó âõîäíûå äàííûå ecx=ñèñòåìà ñ÷èñëåíÿ edi àäðåñ êóäà çàïèñûâàòü, áóäåì ñòðîêó, ïðè÷åì êîíåö ïåðåìåííîé 
429
	cmp eax,ecx
421
	cmp eax,ecx  ;ñðàâíèòü åñëè â eax ìåíüøå ÷åì â ecx òî ïåðåéòè íà @@-1 ò.å. íà pop eax
430
	jb @f
422
	jb @f
431
		xor edx,edx
423
		xor edx,edx ;î÷èñòèòü edx
432
		div ecx
424
		div ecx     ;ðàçäåëèòü - îñòàòîê â edx
433
		push edx
425
		push edx    ;ïîëîæèòü â ñòåê
-
 
-
 
434
		;dec edi  ;ñìåùåíèå íåîáõîäèìîå äëß çàïèñè ñ êîíöà ñòðîêè
426
		;dec edi    ;ñìåùåíèå íåîáõîäèìîå äëÿ çàïèñè ñ êîíöà ñòðîêè
435
		call .str
427
		call .str   ;ïåðåéòè íà ñàìó ñåáÿ ò.å. âûçâàòü ñàìó ñåáÿ è òàê äî òîãî ìîìåíòà ïîêà â eax íå ñòàíåò ìåíüøå ÷åì â ecx
-
 
-
 
436
		pop eax
-
 
437
	@@:
-
 
438
	cmp edi,esi
428
		pop eax
439
	jge @f
-
 
440
		or al,0x30
429
	@@: ;cmp al,10 ;ïðîâåðèòü íå ìåíüøå ëè çíà÷åíèå â al ÷åì 10 (äëÿ ñèñòåìû ñ÷èñëåíÿ 10 äàííàÿ êîìàíäà - ëèøíàÿ))
441
		stosb
-
 
442
		mov byte[edi],0 ;â êîíåö ñòðîêè ñòàâèì 0, ÷òî-áû íå âûëàçèë ìóñîð
430
	or al,0x30  ;äàííàÿ êîìàíäà êîðî÷å  ÷åì äâå âûøå 
443
	@@: