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 | @@: |