Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 7574 → Rev 7575

/programs/other/t_edit_synt/te_work.inc
1,12 → 1,3
struct FileInfoBlock
Function dd ?
Position dd ?
Flags dd ?
Count dd ?
Buffer dd ?
db ?
FileName dd ?
ends
 
struct TexColViv
Text rb MAX_COLOR_WORD_LEN ; ñëîâî äëÿ ïîäñâåòêè
28,7 → 19,8
color_wnd_text dd ?
 
options_file dd 0
options_file_end dd 0
open_file_size dd 0
unpac_mem dd 0
tex_colors dd 0
tex_help_f1 dd 0
 
46,67 → 38,91
InitColText:
pushad
 
mov ebx,dword[fn_col_option]
mov ebx,[fn_col_option]
copy_path ebx,fn_syntax_dir,file_name_rez,0
copy_path file_name_rez,sys_path,file_name,0
 
mov eax,70
mov [run_file_70.Function], 0
;[fn_col_option] = '*.syn'
;fn_syntax_dir = 'info/'
;file_name_rez = 'info/*.syn'
 
mov [run_file_70.Function], SSF_GET_INFO
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov ebx,[options_file_end]
sub ebx,[options_file]
mov [run_file_70.Count], ebx
m2m [run_file_70.Buffer], [options_file]
mov dword[run_file_70.Count], 0
mov dword[run_file_70.Buffer], open_b
mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name
mov ebx,run_file_70
int 0x40
mov dword[run_file_70.FileName], file_name
mcall SF_FILE,run_file_70
 
mov ecx,dword[open_b+32] ;+32 qword: ðàçìåð ôàéëà â áàéòàõ
stdcall mem.ReAlloc,[options_file],ecx
mov [options_file],eax
mov [open_file_size],ecx
 
mov [run_file_70.Function], SSF_READ_FILE
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov [run_file_70.Count], ecx
m2m dword[run_file_70.Buffer], dword[options_file]
mov byte[run_file_70+20], 0
mov dword[run_file_70.FileName], file_name
mcall SF_FILE,run_file_70 ;çàãðóæàåì ôàéë èçîáðàæåíèß
test eax,eax
jnz .no_colors
cmp ebx,0xffffffff
je .no_colors
 
mcall SF_SET_CAPTION,1,file_name
 
;init: count_colors_text, ColWords, ...
mov dword[count_colors_text],1
mov dword[ColWords],0
mov dword[tex_help_f1],0
 
cmp eax,6
je @f
cmp eax,0
je @f
cmp ax,10
jl .zifra_0_9
mov al,'?'
sub ax,48
.zifra_0_9:
add ax,48
jmp .no_colors
mov edi,[options_file]
cmp dword[edi],'KPCK'
jne .end_unpack
;notify_window_run ...
mov ecx,[edi+4]
cmp [open_file_size],ecx
jge @f
;åñëè äëß ðàñïàêîâàíîãî ôàéëà íå õâàòàåò âûäåëåííîé ïàìßòè
stdcall mem.ReAlloc,edi,ecx
mov [options_file],eax
mov [open_file_size],ecx
@@:
;âûäåëåíèå ïàìßòè äëß ðàñïàêîâêè ôàéëà
stdcall mem.ReAlloc,[unpac_mem],ecx
mov [unpac_mem],eax
 
stdcall unpack,[options_file],eax
mov edi,[options_file]
mov esi,[unpac_mem]
mov ecx,[edi+4]
cld
rep movsb
.end_unpack:
mov esi,[options_file]
cmp dword[esi],'KPCK'
jne @f
notify_window_run txt_no_kpack ; ñîçäàåì îêíî @notify
jmp .no_colors
@@:
mov edi,count_colors_text
mov ecx,9*4
rep movsb
mov ecx,9
rep movsd
 
mov eax,[options_file]
add eax,32
mov dword[tex_colors],eax
mov [tex_colors],eax
 
mov eax,dword[count_colors_text] ;init: Col (offset to key words)
mov eax,[count_colors_text] ;init: Col (offset to key words)
add eax,8
shl eax,2
add eax,[options_file]
mov dword[Col],eax
mov [Col],eax
 
;init: tex_help_f1
mov ecx,dword[ColWords]
mov ecx,[ColWords]
imul ecx,sizeof.TexColViv
add ecx,dword[Col]
mov dword[tex_help_f1],ecx
add ecx,[Col]
mov [tex_help_f1],ecx
 
;ôîðìèðîâàíèå òåêñòà â îêíå òåêñòîâîãî ðåäàêòîðà
stdcall [ted_clear], tedit0,1
136,10 → 152,10
loop @b
 
stdcall print_capt,capt_lbl_wo
mov ecx,dword[ColWords]
mov ecx,[ColWords]
mov eax,[Col]
xor ebx,ebx
@@:
@@: ;öèêë ïî ïîäñâå÷èâàåìûì ñëîâàì
inc ebx
stdcall print_word,eax,ebx
add eax,sizeof.TexColViv
146,18 → 162,17
loop @b
 
stdcall print_capt,capt_lbl_f1
mov ecx,dword[ColWords]
mov ecx,[ColWords]
mov eax,[Col]
xor ebx,ebx
@@:
@@: ;öèêë ïî ñïðàâêàì ê ïîäñâ. ñëîâàì
inc ebx
stdcall print_word_f1,eax,ebx
add eax,sizeof.TexColViv
loop @b
; ïîäãîòîâêà äëÿ PathShow
push dword PathShow_data_1
call [PathShow_prepare]
; ïîäãîòîâêà äëß PathShow
stdcall [PathShow_prepare], PathShow_data_1
call draw_window
 
.no_colors:
209,7 → 224,7
align 4
proc print_capt, capt:dword
pushad
mov esi,dword[capt]
mov esi,[capt]
stdcall str_len,esi
stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor
popad
219,63 → 234,53
align 4
proc print_word, text:dword, index:dword
pushad
mov esi,text_buffer
mov byte[esi],0
stdcall str_cat,esi,capt_beg_word
stdcall str_len,esi
add esi,eax
mov edi,text_buffer
mov byte[edi],0
stdcall str_cat,edi,capt_beg_word
stdcall str_len,edi
add edi,eax
 
mov edi,dword[text]
stdcall code_string,edi,esi ;êîäèðóåì ñòðîêó ñ êëþ÷åâûì ñëîâîì
stdcall str_cat,esi,capt_end_word
mov ecx,[text]
stdcall code_string,ecx,edi ;êîäèðóåì ñòðîêó ñ êëþ÷åâûì ñëîâîì
stdcall str_cat,edi,capt_end_word
 
cmp dword[edi+MAX_COLOR_WORD_LEN],0 ;f1
cmp dword[ecx+TexColViv.f1],0
je @f
stdcall str_cat,esi,capt_calc_f1
stdcall str_cat_value,esi,[index]
stdcall str_cat,esi,capt_lbl_f1_use
stdcall str_cat,edi,capt_calc_f1
stdcall str_cat_value,edi,[index]
stdcall str_cat,edi,capt_lbl_f1_use
@@:
 
mov esi,text_buffer
stdcall str_len,esi ;óçíàåì äëèííó âñåé ñòðîêè
stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor
 
mov ecx,edi
mov edi,text_buffer
mov byte[edi],','
stdcall str_len,edi
add edi,eax
mov word[edi],','
inc edi
mov byte[edi],0
xor eax,eax
mov al,byte[ecx+MAX_COLOR_WORD_LEN+4] ;wwo
movzx eax,byte[ecx+TexColViv.flags]
stdcall str_cat_value,edi,eax
stdcall str_len,edi
add edi,eax
mov byte[edi],','
mov word[edi],','
inc edi
 
xor eax,eax
mov ax,word[ecx+MAX_COLOR_WORD_LEN+4+1] ;(escc shl 8)+endc
cmp ax,0 ;ïðîâåðÿåì åñòü ëè çàâåðøàþùèé è ýêðàíèíóþùèé ñèìâîë
je @f
movzx eax,word[ecx+TexColViv.endc] ;(escc shl 8)+endc
or eax,eax ;ïðîâåðßåì åñòü ëè çàâåðøàþùèé è ýêðàíèíóþùèé ñèìâîë
jz @f
stdcall str_cat_value,edi,eax
stdcall str_len,edi
add edi,eax
@@:
mov byte[edi],','
mov word[edi],','
inc edi
 
xor eax,eax
mov al,byte[ecx+MAX_COLOR_WORD_LEN+4+3] ;color
movzx eax,byte[ecx+TexColViv.color]
stdcall str_cat_value,edi,eax
stdcall str_len,edi
add edi,eax
mov byte[edi],13
inc edi
mov byte[edi],0
mov word[edi],13
 
mov esi,text_buffer
stdcall str_len,esi
stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_move_cursor
stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor
 
popad
ret
284,8 → 289,8
align 4
proc print_word_f1, text:dword, index:dword
pushad
mov edi,dword[text]
mov esi,dword[edi+MAX_COLOR_WORD_LEN] ;f1
mov edi,[text]
mov esi,[edi+TexColViv.f1]
cmp esi,0
je @f
mov ebx,text_buffer
296,7 → 301,7
stdcall str_len,ebx
add ebx,eax
add esi,dword[tex_help_f1]
add esi,[tex_help_f1]
stdcall code_string,esi,ebx ;êîäèðóåì ñòðîêó
stdcall str_cat,ebx,capt_end_word_f1
 
308,13 → 313,15
ret
endp
 
;description:
; êîäèðîâêà ñòðîêè, çàìåíà íåïå÷àòàåìûõ ñèìâîëîâ íà ÷èñëîâûå êîäû
align 4
proc code_string, text:dword, out_text:dword
pushad
mov esi,dword[text]
mov esi,[text]
stdcall str_len,esi
mov ecx,eax
mov edi,dword[out_text]
mov edi,[out_text]
 
.copy:
mov al,byte[esi]
335,7 → 342,7
add edi,2
and eax,0xff
mov dword[edi],0
call tl_convert_to_str
stdcall convert_int_to_str,4
stdcall str_len,edi
add edi,eax
mov byte[edi],','
383,7 → 390,7
stdcall str_len,edi
add edi,eax
mov eax,[value]
call tl_convert_to_str
stdcall convert_int_to_str,12
popad
ret
endp
404,29 → 411,35
endp
 
;input:
; eax = value
; edi = string buffer
; eax - ÷èñëî
; edi - áóôåð äëß ñòðîêè
; len - äëèííà áóôåðà
;output:
align 4
tl_convert_to_str:
pushad
stdcall mem_clear,edi,12
proc convert_int_to_str uses eax ecx edx edi esi, len:dword
mov esi,[len]
add esi,edi
dec esi
call .str
popad
ret
endp
 
align 4
.str:
mov ecx,0x0a ;çàäàåòñÿ ñèñòåìà ñ÷èñëåíèÿ èçìåíÿþòñÿ ðåãèñòðû ebx,eax,ecx,edx âõîäíûå ïàðàìåòðû eax - ÷èñëî
;ïðåðåâîä ÷èñëà â ASCII ñòðîêó âõîäíûå äàííûå ecx=ñèñòåìà ñ÷èñëåíÿ edi àäðåñ êóäà çàïèñûâàòü, áóäåì ñòðîêó, ïðè÷åì êîíåö ïåðåìåííîé
cmp eax,ecx ;ñðàâíèòü åñëè â eax ìåíüøå ÷åì â ecx òî ïåðåéòè íà @@-1 ò.å. íà pop eax
mov ecx,10
cmp eax,ecx
jb @f
xor edx,edx ;î÷èñòèòü edx
div ecx ;ðàçäåëèòü - îñòàòîê â edx
push edx ;ïîëîæèòü â ñòåê
;dec edi ;ñìåùåíèå íåîáõîäèìîå äëÿ çàïèñè ñ êîíöà ñòðîêè
call .str ;ïåðåéòè íà ñàìó ñåáÿ ò.å. âûçâàòü ñàìó ñåáÿ è òàê äî òîãî ìîìåíòà ïîêà â eax íå ñòàíåò ìåíüøå ÷åì â ecx
xor edx,edx
div ecx
push edx
;dec edi ;ñìåùåíèå íåîáõîäèìîå äëß çàïèñè ñ êîíöà ñòðîêè
call .str
pop eax
@@: ;cmp al,10 ;ïðîâåðèòü íå ìåíüøå ëè çíà÷åíèå â al ÷åì 10 (äëÿ ñèñòåìû ñ÷èñëåíÿ 10 äàííàÿ êîìàíäà - ëèøíàÿ))
or al,0x30 ;äàííàÿ êîìàíäà êîðî÷å ÷åì äâå âûøå
stosb ;çàïèñàòü ýëåìåíò èç ðåãèñòðà al â ÿ÷åêó ïàìÿòè es:edi
@@:
cmp edi,esi
jge @f
or al,0x30
stosb
mov byte[edi],0 ;â êîíåö ñòðîêè ñòàâèì 0, ÷òî-áû íå âûëàçèë ìóñîð
@@:
ret