Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 1693 → Rev 1698

/programs/develop/kol_f_edit/about.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/develop/kol_f_edit/base.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/develop/kol_f_edit/build.bat
0,0 → 1,17
if not exist bin mkdir bin
@fasm.exe -m 16384 ced_view.asm bin\ced_view.kex
@kpack bin\ced_view.kex
@fasm.exe -m 16384 ob_o.asm bin\ob_o.opt
 
if not exist bin\tl_sys_16.png @copy tl_sys_16.png bin\tl_sys_16.png
if not exist bin\icon.bmp @copy icon.bmp bin\icon.bmp
if not exist bin\base.bmp @copy base.bmp bin\base.bmp
if not exist bin\left.bmp @copy left.bmp bin\left.bmp
if not exist bin\oper.bmp @copy oper.bmp bin\oper.bmp
if not exist bin\font6x9.bmp @copy ..\..\fs\kfar\trunk\font6x9.bmp bin\font6x9.bmp
if not exist bin\asm.syn @copy ..\..\other\t_edit\info\asm.syn bin\asm.syn
 
copy *.ced bin\*.ced
@fasm.exe -m 16384 ..\libraries\buf2d\trunk\buf2d.asm bin\buf2d.obj
@kpack bin\buf2d.obj
pause
/programs/develop/kol_f_edit/ced_code_g.inc
0,0 → 1,1032
;
; â ýòîì ôàéëå ñîáðàíû ôóíêöèè ñîçäàþùèå ïðîãðàìíûé êîä
;
u_object object ;âðåìåííûé îáúåêò äëÿ çàäàíèÿ ñìåùåíèé
 
macro insert_coma
{
stdcall [ted_text_add], tedit0,txt_coma,1,ted_opt_ed_move_cursor
}
macro insert_nl
{
stdcall [ted_text_add], tedit0,txt_nl,1,ted_opt_ed_move_cursor
}
macro insert_com
{
stdcall [ted_text_add], tedit0,txt_com,1,ted_opt_ed_move_cursor
}
macro insert_sp
{
stdcall [ted_text_add], tedit0,txt_sp,1,ted_opt_ed_move_cursor
}
 
;ôóíêöèÿ âñòàâëÿåò òåêñòîâóþ ñòðîêó â òåêñòîâûé ðåäàêòîð
align 4
proc insert_text, txt:dword
push eax
stdcall str_len,dword[txt]
cmp eax,1
jl @f
stdcall [ted_text_add], tedit0,dword[txt],eax,ted_opt_ed_move_cursor
@@:
pop eax
ret
endp
 
;âñòàâëÿåò óêàçàííîå ñâîéñòâî èç îáúåêòà â òåêñòîâûé ðåäàêòîð
align 4
proc insert_text_prop, p_obj:dword,index:dword
push eax edx
mov eax,[p_obj]
mov edx,[index]
stdcall get_obj_text_col,eax,edx
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
pop edx eax
ret
endp
 
macro insert_tab
{
stdcall [ted_text_add], tedit0,txt_tab,1,ted_opt_ed_move_cursor
}
macro insert_br
{
stdcall [ted_text_add], tedit0,txt_br,3,ted_opt_ed_move_cursor
}
macro insert_a_met
{
stdcall [ted_text_add], tedit0,txt_a_met,3,ted_opt_ed_move_cursor
}
macro insert_0
{
stdcall [ted_text_add], tedit0,txt_0,1,ted_opt_ed_move_cursor
}
macro insert_plus
{
stdcall [ted_text_add], tedit0,txt_plus,1,ted_opt_ed_move_cursor
}
macro insert_xor
{
stdcall [ted_text_add], tedit0,txt_xor,4,ted_opt_ed_move_cursor
}
macro insert_cmp
{
stdcall [ted_text_add], tedit0,txt_cmp,4,ted_opt_ed_move_cursor
}
macro insert_reg reg_name
{
stdcall [ted_text_add], tedit0,reg_name,3,ted_opt_ed_move_cursor
}
macro insert_reg8 reg_name
{
stdcall [ted_text_add], tedit0,reg_name,2,ted_opt_ed_move_cursor
}
macro insert_i65p
{
stdcall [ted_text_add], tedit0,txt_i65p,7,ted_opt_ed_move_cursor
}
 
 
;
macro insert_but_beg
{
stdcall [ted_text_add], tedit0,txt_but_1,txt_but_2-txt_but_1,ted_opt_ed_move_cursor
}
macro insert_but_end
{
stdcall [ted_text_add], tedit0,txt_but_2,txt_but_3-txt_but_2,ted_opt_ed_move_cursor
}
;
macro insert_key_beg
{
stdcall [ted_text_add], tedit0,txt_key_1,txt_key_2-txt_key_1,ted_opt_ed_move_cursor
}
macro insert_key_end
{
stdcall [ted_text_add], tedit0,txt_key_2,txt_key_3-txt_key_2,ted_opt_ed_move_cursor
}
 
macro insert_d_poi
{
stdcall [ted_text_add], tedit0,txt_d_poi,1,ted_opt_ed_move_cursor
}
macro insert_ret
{
stdcall [ted_text_add], tedit0,txt_ret,4,ted_opt_ed_move_cursor
}
 
 
align 4
but_code_gen:
call code_gen
cmp byte[show_mode],1 ;óñëîâèå âèäèìîñòè òåêñòîâîãî îêíà
jne @f
stdcall [ted_draw], tedit0
@@:
ret
 
;ôóíêöèÿ ñîçäàþùàÿ êîä âñåãî ôàéëà
align 4
code_gen:
stdcall [ted_clear], tedit0,1
pushad
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
xor bl,bl
call code_gen_obj
stdcall [ted_text_add], tedit0,\
txt_nl,1,ted_opt_ed_move_cursor+ted_opt_ed_change_time ;äîáàâëÿåì ñèìâîë íîâîé ñòðîêè ñ îïöèåé ted_opt_ed_change_time äëÿ âîçìîæíîñòè ñîõðàíåíèÿ ôàéëà
stdcall [ted_init_scroll_bars], tedit0, 4 ;ìåíÿåì ðàçìåðû ñêðîëëèíãîâ
popad
ret
 
;input:
; bl - óðîâåíü îáúåêòà
; esi - óêàçàòåëü íà óçåë
align 4
code_gen_obj:
push ebx
.beg_iterat:
cmp esi,0
je .find_no
 
cmp byte[esi+2],bl ;lev
jl .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop eax ;ïîëó÷àåì äàííûå óçëà
cmp eax,0
je .find_no
 
cmp byte[eax],C_ST
jne @f
stdcall get_code_struct,eax ;îáðàáîòêà îáúåêòà
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop ecx ;ïåðåõîäèì ê ñëåäóùåìó óçëó
cmp ecx,0
je .find_no
cmp byte[ecx+2],bl ;lev
jle .end_st
mov esi,ecx
push bx
mov bl,byte[esi+2]
call code_gen_obj ;ðåêóðñèâíûé âûçîâ äî÷åðíèõ îáúåêòîâ
pop bx
.end_st:
stdcall [ted_text_add], tedit0,txt_ends,6,ted_opt_ed_move_cursor
jmp .beg_iterat
@@:
cmp byte[eax],C_TT
jne @f
stdcall get_code_text,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_IN
jne @f
stdcall get_code_incl,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_CO
jne @f
stdcall get_code_comment,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_VR
jne @f
stdcall get_code_variable,eax,ebx ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_WI
jne @f
stdcall get_code_window,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_AC
jne @f
stdcall get_code_auto,eax ;îáðàáîòêà îáúåêòà
@@:
cmp byte[eax],C_KE ;êëàâèàòóðà
jne @f
stdcall get_code_key,eax ;îáðàáîòêà îáúåêòà
@@:
 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;ïåðåõîäèì ê ñëåäóùåìó óçëó
 
jmp .beg_iterat
.find_no:
pop ebx
ret
 
 
align 4
proc get_code_text, p_obj:dword
pushad
insert_nl
mov ebx,dword[p_obj]
stdcall get_obj_text_col,ebx,0
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_nl
popad
ret
endp
 
align 4
proc get_code_auto, p_obj:dword
pushad
insert_nl
mov ebx,dword[p_obj]
mov ecx,dword[ebx+u_object.modif-u_object]
bt ecx,BIT_MOD_ACM
jae @f
;àâòîìàòè÷åñêèå ñîáûòèÿ îò ìûøè
call get_code_auto_m
@@:
bt ecx,BIT_MOD_ABU
jae @f
;ñîçäàíèå ôóíêöèè button
insert_but_beg
call get_code_auto_but ;êîäû âûçîâà êíîïîê
insert_but_end
call get_code_a_but_fun ;êîäû ôóíêöèé, âûçûâàåìûõ ïðè íàæàòèè êíîïîê
@@:
bt ecx,BIT_MOD_ACD
jae @f
call get_code_auto_data_el
call get_code_auto_data_dop
@@:
insert_nl
popad
ret
endp
 
 
align 4
proc get_code_auto_m
pushad
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
.beg_iterat:
cmp esi,0
je .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;ïîëó÷àåì äàííûå óçëà
cmp ebx,0
je .find_no
 
cmp byte[ebx],C_ED
jne @f
stdcall insert_text, txt_std_mouse_ed
;insert_sp
stdcall get_obj_text_col,ebx,0
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_nl
@@:
cmp byte[ebx],C_CB
jne @f
stdcall insert_text, txt_std_mouse_cb
;insert_sp
stdcall get_obj_text_col,ebx,0
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_nl
@@:
 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;ïåðåõîäèì ê ñëåäóùåìó óçëó
 
jmp .beg_iterat
.find_no:
popad
ret
endp
 
;ñîçäàíèå äàííûõ (ñòðóêòóð îáúåêòîâ)
align 4
proc get_code_auto_data_el
pushad
insert_nl ;îòñòóï äëÿ ôîðìàòèðîâàíèÿ
 
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
.beg_iterat:
cmp esi,0
je .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;ïîëó÷àåì äàííûå óçëà
cmp ebx,0
je .find_no
 
cmp byte[ebx],C_ED
jne @f
;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt
stdcall get_obj_text_col,ebx,0
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
stdcall insert_text, txt_ebox
 
mov ecx,1
.prop:
insert_sp
stdcall get_obj_text_col,ebx,ecx
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_coma
inc ecx
cmp ecx,10
jl .prop
 
insert_br
;insert_tab
stdcall insert_text, txt_txt
 
mov edx,fp_icon
stdcall get_obj_id, ebx,edx
stdcall str_len,edx ;eax = len(fp_icon)
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
 
;insert_coma
;insert_sp
stdcall insert_text, txt_mouse_dd
insert_nl
@@:
;cmp byte[ebx],C_CB
;jne @f
;@@:
 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;ïåðåõîäèì ê ñëåäóùåìó óçëó
 
jmp .beg_iterat
.find_no:
popad
ret
endp
 
;
align 4
proc get_code_auto_data_dop
pushad
insert_nl ;îòñòóï äëÿ ôîðìàòèðîâàíèÿ
 
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
.beg_iterat:
cmp esi,0
je .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;ïîëó÷àåì äàííûå óçëà
cmp ebx,0
je .find_no
 
cmp byte[ebx],C_ED
jne @f
;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt
stdcall insert_text, txt_txt
 
mov edx,fp_icon
stdcall get_obj_id, ebx,edx
stdcall str_len,edx ;eax = len(fp_icon)
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
stdcall insert_text, txt_times
 
stdcall get_obj_text_col,ebx,9
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
 
insert_plus
stdcall insert_text, txt_2
stdcall insert_text, txt_db
insert_0
insert_nl
@@:
;cmp byte[ebx],C_CB
;jne @f
;@@:
 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;ïåðåõîäèì ê ñëåäóùåìó óçëó
 
jmp .beg_iterat
.find_no:
popad
ret
endp
 
;ñâÿçûâàåì êíîïêè ñ ôóíêöèÿìè
align 4
proc get_code_auto_but
pushad
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
.beg_iterat:
cmp esi,0
je .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;ïîëó÷àåì äàííûå óçëà
cmp ebx,0
je .find_no
 
cmp byte[ebx],C_BU
jne @f
insert_tab
insert_cmp
insert_reg8 txt_ah
insert_coma
stdcall get_obj_text_col,ebx,0
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_nl
insert_tab
stdcall insert_text, txt_jne_f
insert_nl
insert_tab
insert_tab
stdcall insert_text, txt_call
stdcall get_obj_text_col,ebx,6
stdcall str_len,edx
cmp eax,1
jl .c_fun
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
.c_fun:
insert_nl
insert_tab
insert_a_met ;@@:
insert_nl
@@:
 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;ïåðåõîäèì ê ñëåäóùåìó óçëó
 
jmp .beg_iterat
.find_no:
popad
ret
endp
 
;áåðåì êîäû äëÿ ôóíêöèé íàæàòèé íà êíîïêè
align 4
proc get_code_a_but_fun
pushad
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
.beg_iterat:
cmp esi,0
je .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;ïîëó÷àåì äàííûå óçëà
cmp ebx,0
je .find_no
 
cmp byte[ebx],C_BU
jne @f
stdcall get_obj_text_col,ebx,6
stdcall str_len,edx
cmp eax,1
jl .c_fun
insert_nl
stdcall insert_text, txt_align_4
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_d_poi
insert_nl
insert_tab
insert_ret
.c_fun:
@@:
 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;ïåðåõîäèì ê ñëåäóùåìó óçëó
 
jmp .beg_iterat
.find_no:
popad
ret
endp
 
align 4
proc get_code_key, p_obj:dword
pushad
insert_nl
mov ebx,dword[p_obj]
 
insert_key_beg
call get_code_funct_key ;êîäû âûçîâà êíîïîê
insert_key_end
 
insert_nl
popad
ret
endp
 
align 4
proc get_code_funct_key
pushad
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
.beg_iterat:
cmp esi,0
je .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;ïîëó÷àåì äàííûå óçëà
cmp ebx,0
je .find_no
 
cmp byte[ebx],C_ED
jne @f
stdcall insert_text, txt_std_key_ed
stdcall insert_text_prop,ebx,0
insert_nl
@@:
 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;ïåðåõîäèì ê ñëåäóùåìó óçëó
 
jmp .beg_iterat
.find_no:
popad
ret
endp
 
;îáúåêòû ïîäêëþ÷åíèÿ ôàéëîâ 'include ...'
align 4
proc get_code_incl, p_obj:dword
pushad
stdcall insert_text, txt_incl
mov ebx,dword[p_obj]
stdcall insert_text_prop,ebx,0
 
stdcall get_obj_text_col,ebx,1
stdcall str_len,edx
cmp eax,1
jl @f
insert_sp
insert_com
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
@@:
 
insert_nl
popad
ret
endp
 
align 4
proc get_code_comment, p_obj:dword
insert_com
stdcall insert_text_prop, dword[p_obj],0
insert_nl
ret
endp
 
;ñîçäàåì êîä çàäàíèÿ îêíà
align 4
proc get_code_window, p_obj:dword
pushad
mov ebx,dword[p_obj]
;2,3,4,5,6 - x,y,w,h,col_bkg
 
stdcall insert_text, txt_draw_wb
 
insert_tab
insert_xor
insert_reg txt_eax
insert_coma
insert_reg txt_eax
insert_nl
 
;mov ebx,...
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_ebx
insert_coma
stdcall insert_text_prop, ebx,2
insert_i65p
stdcall insert_text_prop, ebx,4
insert_nl
 
;mov ecx,...
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_ecx
insert_coma
stdcall insert_text_prop, ebx,3
insert_i65p
stdcall insert_text_prop, ebx,5
insert_nl
 
;mov edx,...
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_edx
insert_coma
stdcall insert_text_prop, ebx,6
insert_nl
 
;or edx,0x33000000
stdcall insert_text, txt_or
insert_reg txt_edx
insert_coma
stdcall insert_text, txt_0x33000000
insert_nl
 
;mov edi,...
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_edi
insert_coma
stdcall insert_text_prop, ebx,0
insert_nl
 
insert_tab
stdcall insert_text, txt_i_40
 
call get_code_draw_obj
 
stdcall insert_text, txt_draw_we
popad
ret
endp
 
 
;ôîðìèðóåì âûçîâ ôóíêöèé äëÿ ðèñîâàíèÿ îáúåêòîâ
align 4
proc get_code_draw_obj
pushad
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
.beg_iterat:
cmp esi,0
je .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;ïîëó÷àåì äàííûå óçëà
cmp ebx,0
je .find_no
 
cmp byte[ebx],C_ED
jne @f
stdcall insert_text, txt_editb_draw
stdcall insert_text_prop, ebx,0
insert_nl
@@:
cmp byte[ebx],C_CB
jne @f
stdcall insert_text, txt_cbox_draw
stdcall insert_text_prop, ebx,0
insert_nl
@@:
cmp byte[ebx],C_BU
jne @f
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_eax
insert_coma
stdcall insert_text, txt_8
insert_nl
 
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_ebx
insert_coma
stdcall insert_text_prop, ebx,1
insert_i65p
stdcall insert_text_prop, ebx,3
insert_nl
 
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_ecx
insert_coma
stdcall insert_text_prop, ebx,2
insert_i65p
stdcall insert_text_prop, ebx,4
insert_nl
 
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_edx
insert_coma
stdcall insert_text_prop, ebx,0
insert_nl
 
insert_tab
stdcall insert_text, txt_or
insert_reg txt_edx
insert_coma
stdcall insert_text, txt_but_create
insert_nl
 
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_esi
insert_coma
stdcall insert_text_prop, ebx,5 ;button color
insert_nl
 
insert_tab
stdcall insert_text, txt_i_40
insert_nl
@@:
cmp byte[ebx],C_RE
jne @f
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_eax
insert_coma
stdcall insert_text, txt_1
stdcall insert_text, txt_3
insert_nl
 
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_ebx
insert_coma
stdcall insert_text_prop, ebx,1
insert_i65p
stdcall insert_text_prop, ebx,3
insert_nl
 
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_ecx
insert_coma
stdcall insert_text_prop, ebx,2
insert_i65p
stdcall insert_text_prop, ebx,4
insert_nl
 
insert_tab
stdcall insert_text, txt_mov
insert_reg txt_edx
insert_coma
stdcall insert_text_prop, ebx,0 ;rect color
insert_nl
 
insert_tab
stdcall insert_text, txt_i_40
insert_nl
@@:
 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;ïåðåõîäèì ê ñëåäóùåìó óçëó
 
jmp .beg_iterat
.find_no:
popad
ret
endp
 
 
 
align 4
proc get_code_struct, p_obj:dword
pushad
mov ebx,dword[p_obj]
;0 - name
 
stdcall [ted_text_add], tedit0,txt_struct,7,ted_opt_ed_move_cursor
stdcall get_obj_text_col,ebx,0
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_nl
 
popad
ret
endp
 
;ñîçäàòü êîä îáúÿâëåíèÿ ïåðåìåííîé
align 4
proc get_code_variable, p_obj:dword,o_lev:dword
pushad
mov ebx,dword[p_obj]
;0,1,2 - name,value,comment
 
mov ecx,dword[o_lev]
cmp cl,0
je .no_tab ;èçáåãàåì çàöèêëèâàíèÿ (0-1 = 2^32-1)
and cx,0xff
cld
@@:
insert_tab ;ôîðìèðîâàíèå îòñòóïà ïåðåä ïåðåìåííîé
loop @b
.no_tab:
 
stdcall get_obj_text_col,ebx,0
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_sp
 
mov ecx,dword[ebx+u_object.typid-u_object] ;ecx - îòíîñèòåëüíûé èíäåêñ ðîäèòåëüñêîãî îáúåêòà (â ïàìÿòè)
xor eax,eax
mov ax,[tree2.info_size]
imul ecx,eax ;óìíîæàåì èíäåêñ íà ðàçìåð ñòðóêòóðû
add ecx,[tree2.data_info] ;ecx - óêàçàòåëü äàííûå ðîäèòåëüñêîãî óçëà
 
;ïðîâåðêó íà ïðàâèëüíîñòü ecx ???
 
stdcall get_obj_text_col,ecx,0
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
insert_sp
 
stdcall get_obj_text_col,ebx,1
stdcall str_len,edx
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
 
stdcall get_obj_text_col,ebx,2
stdcall str_len,edx
cmp eax,1
jl @f
insert_sp
insert_com
stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
@@:
insert_nl
 
popad
ret
endp
 
 
 
;--- òåêñòîâûå êîíñòàíòû ---
txt_coma db ',',0
txt_i_40 db 'int 0x40',13,0
txt_0 db '0',0
txt_1 db '1',0
txt_2 db '2',0
txt_3 db '3',0
txt_4 db '4',0
txt_8 db '8',0
txt_plus db '+',0
txt_nl db 13,0
txt_com db ';',0
txt_sp db ' ',0
txt_tab db 9,0
txt_br db '\',13,9,0
txt_txt:
db 'txt_',0
txt_db:
db ' db ',0
txt_mouse_dd:
db ', mouse_dd, ',0
txt_times:
db ':',13,9,'times ',0
txt_draw_wb:
db 13,'align 4',13,'draw_window:',13,'pushad',13,9,'mcall 12,1',13,0
txt_draw_we:
db 9,'mcall 12,2',13,'popad',13,9,'ret',13,0
txt_but_create db '0x40000000',0 ;tmp
txt_0x33000000 db '0x33000000',0 ;tmp
txt_struct db 'struct ',0
txt_ends db 'ends',13,13,0
txt_mov db 'mov ',0
txt_xor db 'xor ',0
txt_or db 'or ',0
txt_cmp db 'cmp ',0
txt_call db 'call ',0
txt_jne_f db 'jne @f',0
txt_a_met db '@@:',0
txt_ah db 'ah',0
txt_eax db 'eax',0
txt_ebx db 'ebx',0
txt_ecx db 'ecx',0
txt_edx db 'edx',0
txt_edi db 'edi',0
txt_esi db 'esi',0
txt_align_4 db 'align 4',13,0
txt_d_poi db ':',0
txt_ret db 'ret',13,0
txt_i65p db '*65536+',0
txt_std_mouse_ed:
db 9,'stdcall [edit_box_mouse], ',0
txt_std_mouse_cb:
db 9,'stdcall [check_box_mouse], ',0
txt_std_key_ed:
db 9,'stdcall [edit_box_key], ',0
txt_incl:
db 'include ',0
txt_ebox:
db ' edit_box'
.end: db 0
txt_editb_draw:
db 9,'stdcall [edit_box_draw], ',0
txt_cbox_draw:
db 9,'stdcall [check_box_draw], ',0
 
txt_but_1:
db 'align 4',13,'button:',13,9,'mcall 17',13
txt_but_2:
db 9,'cmp ah,1',13,9,'jne still',13,'.exit:',13,9,'mcall -1',13
txt_but_3:
 
txt_key_1:
db 'align 4',13,'key:',13,9,'mcall 2',13
txt_key_2:
db 9,'jmp still',13
txt_key_3:
 
align 4
proc get_obj_id, p_obj:dword, txt_buf:dword
push eax ecx edx
mov eax,dword[p_obj]
sub eax,[tree2.data_info]
xor edx,edx
xor ecx,ecx
mov cx,word[tree2.info_size]
div ecx
 
mov edx,dword[txt_buf]
mov byte[edx],0
stdcall str_cat_value,edx,eax
pop edx ecx eax
ret
endp
 
;--- òåêñòîâûå ôóíêöèè ---
 
align 4
proc mem_clear, mem:dword, len:dword
push eax ecx edi
cld
xor al,al
mov edi, dword[mem]
mov ecx, dword[len]
repne stosb
pop edi ecx eax
ret
endp
 
align 4
proc str_cat, str1:dword, str2:dword
push eax ecx edi esi
mov esi,dword[str2]
stdcall str_len,esi
mov ecx,eax
inc ecx
mov edi,dword[str1]
stdcall str_len,edi
add edi,eax
cld
repne movsb
pop esi edi ecx eax
ret
endp
 
align 4
proc str_cat_value, str1:dword, value:dword
pushad
mov edi,[str1]
stdcall str_len,edi
add edi,eax
mov eax,[value]
call tl_convert_to_str
popad
ret
endp
 
;output:
; eax = strlen
align 4
proc str_len, str1:dword
mov eax,[str1]
@@:
cmp byte[eax],0
je @f
inc eax
jmp @b
@@:
sub eax,[str1]
ret
endp
 
;input:
; eax = value
; edi = string buffer
align 4
tl_convert_to_str:
pushad
stdcall mem_clear,edi,12
call .str
popad
ret
 
align 4
.str:
mov ecx,0x0a ;çàäàåòñÿ ñèñòåìà ñ÷èñëåíèÿ èçìåíÿþòñÿ ðåãèñòðû ebx,eax,ecx,edx âõîäíûå ïàðàìåòðû eax - ÷èñëî
;ïðåðåâîä ÷èñëà â ASCII ñòðîêó âõîäíûå äàííûå ecx=ñèñòåìà ñ÷èñëåíÿ edi àäðåñ êóäà çàïèñûâàòü, áóäåì ñòðîêó, ïðè÷åì êîíåö ïåðåìåííîé
cmp eax,ecx ;ñðàâíèòü åñëè â eax ìåíüøå ÷åì â ecx òî ïåðåéòè íà @@-1 ò.å. íà pop eax
jb @f
xor edx,edx ;î÷èñòèòü edx
div ecx ;ðàçäåëèòü - îñòàòîê â edx
push edx ;ïîëîæèòü â ñòåê
;dec edi ;ñìåùåíèå íåîáõîäèìîå äëÿ çàïèñè ñ êîíöà ñòðîêè
call .str ;ïåðåéòè íà ñàìó ñåáÿ ò.å. âûçâàòü ñàìó ñåáÿ è òàê äî òîãî ìîìåíòà ïîêà â eax íå ñòàíåò ìåíüøå ÷åì â ecx
pop eax
@@: ;cmp al,10 ;ïðîâåðèòü íå ìåíüøå ëè çíà÷åíèå â al ÷åì 10 (äëÿ ñèñòåìû ñ÷èñëåíÿ 10 äàííàÿ êîìàíäà - ëèøíàÿ))
or al,0x30 ;äàííàÿ êîìàíäà êîðî÷å ÷åì äâå âûøå
stosb ;çàïèñàòü ýëåìåíò èç ðåãèñòðà al â ÿ÷åêó ïàìÿòè es:edi
ret
/programs/develop/kol_f_edit/ced_constr.inc
0,0 → 1,321
;
; ¢ í⮬ ä ©«¥ ᮡ࠭ë ä㭪樨 à¨áãî騥 ®ª­® ª®­áâàãªâ®à 
;
 
macro move_to_skin coord_x,coord_y
{
add coord_x,SKIN_W1
add coord_y,SKIN_H
}
 
;¯¥à¥à¨á®¢ª  ®ª­  ª®­áâàãªâ®à 
align 4
draw_constructor:
stdcall [buf2d_clear], buf_fon,0xffffff
 
pushad
cmp [err_ini1],1
jne @f
stdcall [buf2d_draw_text], buf_fon, buf_font,txtErrIni1,10,10,\
0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
stdcall [buf2d_draw_text], buf_fon, buf_font,fp_obj_opt,10,20,\
0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
jmp .end_draw
@@:
 
xor edx,edx
mov dl,C_WI
stdcall find_obj_in_file,edx ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ®ª­ 
cmp eax,0
je .end_draw
mov dword[obj_m_win],eax
 
;4-width
stdcall get_obj_text_col,[obj_m_win],4 ;edx = offset
stdcall conv_str_to_int,edx
mov ecx,eax ;ecx=width
 
;5-height
stdcall get_obj_text_col,[obj_m_win],5 ;edx = offset
stdcall conv_str_to_int,edx
;eax=height
 
stdcall [buf2d_rect_by_size], buf_fon, 0,0,ecx,eax, dword[sc.frame] ;à¨á㥬 ¢­¥è­îî à ¬ªã ®ª­ 
sub eax,2
sub ecx,2
stdcall [buf2d_filled_rect_by_size], buf_fon, 1,1,ecx,eax, dword[sc.grab] ;à¨á㥬 ä®­ à ¬ª¨ ®ª­ 
 
sub eax,6
sub ecx,6
stdcall [buf2d_rect_by_size], buf_fon, 4,4,ecx,eax, dword[sc.frame] ;à¨á㥬 ¢­ãâ७­îî à ¬ªã ®ª­ 
sub eax,2
sub ecx,2
stdcall [buf2d_filled_rect_by_size], buf_fon, 5,5,ecx,eax, dword[sc.work] ;à¨á㥬 ä®­ ®ª­ 
 
;---;---;---
;jmp .end_skin
;---;---;---
 
stdcall get_obj_text_col,[obj_m_win],1
stdcall conv_str_to_int,edx ;eax = window style
cmp eax,3
jl .end_skin
stdcall [buf2d_bit_blt], buf_fon, 0,0, buf_skin1 ;«¥¢ë© ᪨­
mov edi,buf_skin1
mov eax,buf2d_w ;eax - ¯®§¨æ¨ï ¤«ï à¨á®¢ ­¨ï á।­¥£® ᪨­ 
mov edi,buf_skin2
mov ebx,buf2d_w ;ebx - è¨à¨­  «¥¢®£® ᪨­ 
sub ecx,ebx ;®â­¨¬ ¥¬ ®â è¨à¨­ë ®ª­  è¨à¨­ã á।­¥£® ᪨­ 
@@:
stdcall [buf2d_bit_blt], buf_fon, eax,0, buf_skin2 ;¯à®à¨á®¢ª  á।­¥£® ᪨­ 
add eax,ebx
cmp eax,ecx ;áà ¢­¨¢ ¥¬ ¯®§¨æ¨î á।­¥£® ᪨­  á è¨à¨­®© ®ª­ 
jl @b
 
;4-width
stdcall get_obj_text_col,[obj_m_win],4 ;edx = offset
stdcall conv_str_to_int,edx
mov edi,buf_skin3
sub eax,buf2d_w ;®â­¨¬ ¥¬ è¨à¨­ã ¯à ¢®£® ᪨­ 
stdcall [buf2d_bit_blt], buf_fon, eax,0, buf_skin3 ;¯à®à¨á®¢ª  ¯à ¢®£® ᪨­ 
.end_skin:
 
xor edx,edx ;à¨á㥬 £à ä¨ç¥áª¨¥ í«¥¬¥­âë
mov dl,C_BU
stdcall draw_arr_objects, edx,draw_obj_but
mov dl,C_ED
stdcall draw_arr_objects, edx,draw_obj_edit
mov dl,C_CB
stdcall draw_arr_objects, edx,draw_obj_check
mov dl,C_DT
stdcall draw_arr_objects, edx,draw_obj_text
mov dl,C_RE
stdcall draw_arr_objects, edx,draw_obj_rect_f13
 
.end_draw:
popad
ret
 
;äã­ªæ¨ï à¨áã¥â ¬ áá¨¢ë ®¯à¥¤¥«¥­­ëå í«¥¬¥­â®¢
align 4
proc draw_arr_objects, obj_t:dword,p_fun_draw:dword
push eax ebx
stdcall find_obj_in_file,[obj_t] ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ®¡ê¥ªâ 
cmp eax,0
je .end_draw_o
mov ebx,[p_fun_draw]
stdcall ebx,eax
@@:
stdcall find_obj_in_file_next,[obj_t] ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ®¡ê¥ªâ 
cmp eax,0
je .end_draw_o
stdcall ebx,eax
jmp @b
.end_draw_o:
pop ebx eax
ret
endp
 
;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ª­®¯ª¨, ¢ ®ª­¥ ª®­áâàãªâ®à 
align 4
proc draw_obj_but, p_obj:dword
locals
coor_x dd ?
coor_y dd ?
endl
pushad
mov ebx,dword[p_obj]
;1,2,3,4,5 - x,y,w,h,color
 
stdcall get_obj_text_col,ebx,1
stdcall conv_str_to_int,edx
mov [coor_x],eax
stdcall get_obj_text_col,ebx,2
stdcall conv_str_to_int,edx
mov [coor_y],eax
move_to_skin [coor_x],[coor_y]
stdcall get_obj_text_col,ebx,3
stdcall conv_str_to_int,edx
mov edi,eax
stdcall get_obj_text_col,ebx,4
stdcall conv_str_to_int,edx
mov ecx,eax
stdcall get_obj_text_col,ebx,5
stdcall conv_str_to_int,edx
stdcall [buf2d_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],edi,ecx,eax
popad
ret
endp
 
;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ⥪á⮢®£® ¯®«ï, ¢ ®ª­¥ ª®­áâàãªâ®à 
align 4
proc draw_obj_edit, p_obj:dword
locals
coor_x dd ?
coor_y dd ?
col_txt dd ? ;梥â ⥪âá 
endl
pushad
mov ebx,dword[p_obj]
;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt
 
stdcall get_obj_text_col,ebx,2
stdcall conv_str_to_int,edx
mov [coor_x],eax
stdcall get_obj_text_col,ebx,3
stdcall conv_str_to_int,edx
mov [coor_y],eax
move_to_skin [coor_x],[coor_y]
stdcall get_obj_text_col,ebx,1
stdcall conv_str_to_int,edx
mov ecx,eax
stdcall get_obj_text_col,ebx,6
stdcall conv_str_to_int,edx
stdcall [buf2d_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],\
ecx,15, eax
 
inc dword[coor_x]
inc dword[coor_y]
sub ecx,2
stdcall get_obj_text_col,ebx,4
stdcall conv_str_to_int,edx
stdcall [buf2d_filled_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],\
ecx,13, eax
 
stdcall get_obj_text_col,ebx,8
stdcall conv_str_to_int,edx
mov [col_txt],eax
add [coor_x],2-1 ;ᬥ頥¬ ª®®à¤¨­ âã, çâ®-¡ë
add [coor_y],4-1 ;⥪áâ ¡ë« ¢ ¯®«¥ ¢ë஢­¥­
stdcall get_obj_text_col,ebx,10
stdcall [buf2d_draw_text], buf_fon, buf_font,edx,dword[coor_x],dword[coor_y],\
dword[col_txt] ;à¨á㥬 áâபã á ⥪á⮬
 
popad
ret
endp
 
;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ä« ¦ª , ¢ ®ª­¥ ª®­áâàãªâ®à 
align 4
proc draw_obj_check, p_obj:dword
locals
coor_x dd ?
coor_y dd ?
ot_txt dd ? ;®âáâ㯠¤«ï ⥪áâ 
size_wh dd ? ;à §¬¥à ª¢ ¤à â¨ª 
col_txt dd ? ;梥â ⥪âá 
endl
pushad
mov ebx,dword[p_obj]
;1,2,3, 4,5,6, 7,8 - x,y,txt, col_fon,col_frame,col_txt, w_txt,w_h
 
stdcall get_obj_text_col,ebx,1
stdcall conv_str_to_int,edx
mov [coor_x],eax
stdcall get_obj_text_col,ebx,2
stdcall conv_str_to_int,edx
mov [coor_y],eax
move_to_skin [coor_x],[coor_y]
stdcall get_obj_text_col,ebx,7
stdcall conv_str_to_int,edx
mov [ot_txt],eax
stdcall get_obj_text_col,ebx,8
stdcall conv_str_to_int,edx
dec eax ;à §¬¥à ¬¥­ìè¥ ­  1 ¯¨ªá¥«ì
mov [size_wh],eax
stdcall get_obj_text_col,ebx,5
stdcall conv_str_to_int,edx
stdcall [buf2d_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],\
dword[size_wh],dword[size_wh], eax
 
inc dword[coor_x]
inc dword[coor_y]
sub dword[size_wh],2
stdcall get_obj_text_col,ebx,4
stdcall conv_str_to_int,edx
stdcall [buf2d_filled_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],\
dword[size_wh],dword[size_wh], eax
 
stdcall get_obj_text_col,ebx,6
stdcall conv_str_to_int,edx
mov [col_txt],eax
mov eax,[ot_txt]
add eax,[size_wh]
add eax,2-1 ;sub dword[size_wh],2 ;inc dword[coor_x]
add [coor_x],eax ;¢ëç¨á«ï¥¬ ª®®à¤¨­ âë ¤«ï ⥪á⮢®© ¯®¤¯¨á¨
add [coor_y],5-1 ;inc dword[coor_y]
stdcall get_obj_text_col,ebx,3
stdcall [buf2d_draw_text], buf_fon, buf_font,edx,dword[coor_x],dword[coor_y],\
dword[col_txt] ;à¨á㥬 áâபã á ⥪á⮬
popad
ret
endp
 
;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ⥪á⮢®© ¯®¤¯¨á¨, ¢ ®ª­¥ ª®­áâàãªâ®à 
align 4
proc draw_obj_text, p_obj:dword
locals
coor_x dd ?
coor_y dd ?
col_txt dd ? ;梥â ⥪âá 
endl
pushad
mov ebx,dword[p_obj]
;0,1,2,3,... - txt,x,y,col_txt,...
 
stdcall get_obj_text_col,ebx,1
stdcall conv_str_to_int,edx
mov [coor_x],eax
stdcall get_obj_text_col,ebx,2
stdcall conv_str_to_int,edx
mov [coor_y],eax
move_to_skin [coor_x],[coor_y]
 
stdcall get_obj_text_col,ebx,3
stdcall conv_str_to_int,edx
mov [col_txt],eax
 
stdcall get_obj_text_col,ebx,0
stdcall [buf2d_draw_text], buf_fon, buf_font,edx,dword[coor_x],dword[coor_y],\
dword[col_txt] ;à¨á㥬 áâபã á ⥪á⮬
popad
ret
endp
 
;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ¯àאַ㣮«ì­¨ª  (á¨á¨â. ä. 13)
align 4
proc draw_obj_rect_f13, p_obj:dword
locals
coor_x dd ?
coor_y dd ?
color dd ? ;梥â ⥪âá 
endl
pushad
mov ebx,dword[p_obj]
;0,1,2,3,4 - color,x,y,w,h
 
stdcall get_obj_text_col,ebx,1
stdcall conv_str_to_int,edx
mov [coor_x],eax
stdcall get_obj_text_col,ebx,2
stdcall conv_str_to_int,edx
mov [coor_y],eax
move_to_skin [coor_x],[coor_y]
 
stdcall get_obj_text_col,ebx,0
stdcall conv_str_to_int,edx
mov [color],eax
 
stdcall get_obj_text_col,ebx,3
stdcall conv_str_to_int,edx
mov ecx,eax
 
stdcall get_obj_text_col,ebx,4
stdcall conv_str_to_int,edx
mov esi,eax
 
stdcall [buf2d_filled_rect_by_size], buf_fon,\
dword[coor_x],dword[coor_y],ecx,esi,dword[color]
popad
ret
endp
/programs/develop/kol_f_edit/ced_view.asm
0,0 → 1,1314
use32
org 0x0
db 'MENUET01'
dd 0x1
dd start
dd i_end
dd mem
dd stacktop
dd buf_cmd_lin
dd sys_path
 
include '../../macros.inc'
include '../../proc32.inc'
include '../../develop/libraries/box_lib/load_lib.mac'
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include 'mem.inc'
include 'dll.inc'
include 'strlen.inc'
 
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
 
hed db 'kol_f_edit 11.11.10',0
 
BUF_STRUCT_SIZE equ 21
buf2d_data equ dword[edi] ;¤ ­­ë¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
buf2d_w equ dword[edi+8] ;è¨à¨­  ¡ãä¥à 
buf2d_h equ dword[edi+12] ;¢ëá®â  ¡ãä¥à 
buf2d_l equ word[edi+4] ;®âáâ㯠᫥¢ 
buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
buf2d_size_lt equ dword[edi+4] ;®âáâ㯠᫥¢  ¨ á¯à ¢  ¤«ï ¡ãä¥à 
buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
buf2d_bits equ byte[edi+20] ;ª®«¨ç¥á⢮ ¡¨â ¢ 1-© â®çª¥ ¨§®¡à ¦¥­¨ï
 
MAX_LEN_OBJ_TXT equ 200
MAX_CED_OBJECTS equ 200
MAX_OPT_FIELDS equ 11
MAX_OBJ_TYPES equ 16
WND_CAPT_COLOR equ 0xb0d0ff
BUF_SIZE equ 1000
 
C_AC equ 'a' ; ¢â®¬ â¨ç¥áª¨¥ ª®¤ë (auto code)
C_ST equ 's' ;struct
C_IN equ '#' ;include
C_TT equ 'd' ;¡«®ª ª®¤  (¤ ­­ëå)
C_VR equ '-' ;¯¥à¥¬¥­­ ï
C_CO equ ';' ;ª®¬¬¥­â à¨©
C_WI equ 'w' ;®ª­®
C_CB equ 'c' ;CheckBox
C_OP equ 'o' ;OptionBox
C_ED equ 'e' ;EditBox
C_BU equ 'b' ;Button
C_DT equ 'x' ;à¨á®¢ âì ⥪áâ
C_RE equ 'r' ;à¨á®¢ âì ¯àאַ㣮«ì­¨ª
C_KE equ 'k' ;ª« ¢¨ âãà 
 
;modif
CPP_MOD_ACM equ 2 ;ᮡëâ¨ï ¬ëè¨
BIT_MOD_ACM equ 1 ;ᮡëâ¨ï ¬ëè¨
CPP_MOD_ACD equ 8 ;¤ ­­ë¥ ®¡ê¥ªâ®¢
BIT_MOD_ACD equ 3 ;¤ ­­ë¥ ®¡ê¥ªâ®¢
CPP_MOD_ABU equ 16 ;á¢ï§ë¢ ­¨¥ ª­®¯®ª
BIT_MOD_ABU equ 4 ;á¢ï§ë¢ ­¨¥ ª­®¯®ª
 
macro load_image_file path,buf,size ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
{
copy_path path,sys_path,fp_icon,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
 
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
mov [buf],eax
 
mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
mov [run_file_70.Function], 0
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov [run_file_70.Count], dword size
m2m [run_file_70.Buffer], [buf]
mov byte[run_file_70+20], 0
mov [run_file_70.FileName], fp_icon
mov ebx,run_file_70
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
cmp ebx,0xffffffff
je @f
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
stdcall dword[img_decode], dword[buf],ebx,0
mov dword[image_data],eax
;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
stdcall dword[img_destroy], dword[image_data]
@@:
}
 
struct FileInfoBlock
Function dd ?
Position dd ?
Flags dd ?
Count dd ?
Buffer dd ?
rezerv db ?
FileName dd ?
ends
 
struct object
c db ?
txt rb MAX_LEN_OBJ_TXT
lvl db 0
clo db 0
perv dd ?
next dd ?
typid dd ?
tc dd ?
td dd ?
modif dd ?
ends
 
struct ObjOpt
c db ?
bl_type db ?
graph db ?
info rb 30
caption rb 200
Col rw MAX_OPT_FIELDS
img rw MAX_OPT_FIELDS ;¨­¤¥ªáë ª à⨭®ª (¢ ä ©«¥ 'icon.bmp')
ends
 
SKIN_H equ 22
SKIN_W1 equ 5
SKIN_W2 equ 7
SKIN_W3 equ 23
fn_skin_1 db 'left.bmp',0
fn_skin_2 db 'base.bmp',0
fn_skin_3 db 'oper.bmp',0
IMAGE_FILE_SKIN1_SIZE equ 3*(SKIN_W1+3)*SKIN_H+54
IMAGE_FILE_SKIN2_SIZE equ 3*(SKIN_W2+3)*SKIN_H+54
IMAGE_FILE_SKIN3_SIZE equ 3*(SKIN_W3+3)*SKIN_H+54
 
fn_font_s1 db 'font6x9.bmp',0
IMAGE_FILE_FONT1_SIZE equ 96*144*3 ;à §¬¥à ä ©«  á 1-¬ á¨á⥬­ë¬ èà¨ä⮬
 
fn_icon db 'icon.bmp',0
bmp_icon rb 0x300*30
 
fn_icon_tl_sys db 'tl_sys_16.png',0
TREE_ICON_SYS16_BMP_SIZE equ 256*3*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
icon_font_s1 dd 0 ;㪠§ â¥«ì ­  ¢à¥¬¥­­ãî ¯ ¬ïâì ¤«ï § £à㧪¨ èà¨äâ 
 
fn_syntax db 'asm.syn',0 ;¨¬ï § £à㦠¥¬®£® ä ©«  ᨭ⠪á¨á 
 
include 'ced_wnd_m.inc'
include 'ced_constr.inc' ;ä ©« á äã­ªæ¨ï¬¨ ®ª­  ª®­áâàãªâ®à 
include 'ced_code_g.inc' ;ä ©« á äã­ªæ¨ï¬¨ £¥­¥à¨à®¢ ­¨ï ª®¤®¢
 
align 4
start:
load_libraries l_libs_start,load_lib_end
 
;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
mov ebp,lib0
cmp dword [ebp+ll_struc_size-4],0
jz @f
mcall -1 ;exit not correct
@@:
mov ebp,lib1
cmp dword [ebp+ll_struc_size-4],0
jz @f
mcall -1 ;exit not correct
@@:
mov ebp,lib2
cmp dword [ebp+ll_struc_size-4],0
jz @f
mcall -1 ;exit not correct
@@:
mov ebp,lib3
cmp dword [ebp+ll_struc_size-4],0
jz @f
mcall -1 ;exit not correct
@@:
 
mov eax,[wndObjI.top]
add eax,[recMain.top]
inc eax
mov edi,edit2
@@:
mov ed_top,eax
add edi,ed_struc_size
add eax,[recMain.height]
cmp edi,prop_wnd_edits_end
jl @b
 
stdcall [buf2d_create], buf_fon
 
mcall 48,3,sc,sizeof.system_colors
mcall 40,0x27
 
stdcall dword[tl_data_init], tree1
stdcall dword[tl_data_init], tree2
 
copy_path fn_icon,sys_path,fp_icon,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
mov eax,70 ;load icon file
mov [run_file_70.Function], 0
mov [run_file_70.Position], 54
mov [run_file_70.Flags], 0
mov [run_file_70.Count], 0x300*30
mov [run_file_70.Buffer], bmp_icon
mov [run_file_70.rezerv], 0
mov [run_file_70.FileName], fp_icon
mov ebx,run_file_70
int 0x40
 
cmp ebx,-1
mov [err_ini0],1
je @f ;if open file
mov [err_ini0],0
mov dword[tree1.data_img],bmp_icon
mov dword[tree2.data_img],bmp_icon
@@:
 
;á¨á⥬­ë¥ ¨ª®­ª¨ 16*16 ¤«ï tree_list
load_image_file fn_icon_tl_sys, icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
;¥á«¨ ¨§®¡à ¦¥­¨¥ ­¥ ®âªàë«®áì, â® ¢ icon_tl_sys ¡ã¤ãâ
;­¥ ¨­¨æ¨ «¨§¨à®¢ ­­ë¥ ¤ ­­ë¥, ­® ®è¨¡ª¨ ­¥ ¡ã¤¥â, â. ª. ¡ãä¥à ­ã¦­®£® à §¬¥à 
m2m dword[tree1.data_img_sys],dword[icon_tl_sys]
m2m dword[tree2.data_img_sys],dword[icon_tl_sys]
 
;1-© ä ©« ᪨­ 
load_image_file fn_skin_1, icon_font_s1,IMAGE_FILE_SKIN1_SIZE
stdcall [buf2d_create_f_img], buf_skin1,[icon_font_s1] ;ᮧ¤ ¥¬ ¡ãä¥à
stdcall mem.Free,[icon_font_s1] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
;2-© ä ©« ᪨­ 
load_image_file fn_skin_2, icon_font_s1,IMAGE_FILE_SKIN2_SIZE
stdcall [buf2d_create_f_img], buf_skin2,[icon_font_s1] ;ᮧ¤ ¥¬ ¡ãä¥à
stdcall mem.Free,[icon_font_s1] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
;3-© ä ©« ᪨­ 
load_image_file fn_skin_3, icon_font_s1,IMAGE_FILE_SKIN3_SIZE
stdcall [buf2d_create_f_img], buf_skin3,[icon_font_s1] ;ᮧ¤ ¥¬ ¡ãä¥à
stdcall mem.Free,[icon_font_s1] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
 
;ᨬ¢®«ë 1-£® á¨á⥬­®£® èà¨äâ 
load_image_file fn_font_s1, icon_font_s1,IMAGE_FILE_FONT1_SIZE
stdcall [buf2d_create_f_img], buf_font,[icon_font_s1] ;ᮧ¤ ¥¬ ¡ãä¥à
stdcall mem.Free,[icon_font_s1] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
stdcall [buf2d_conv_24_to_8], buf_font,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
stdcall [buf2d_convert_text_matrix], buf_font
 
 
copy_path fn_obj_opt,sys_path,fp_obj_opt,0x0
;load options file
mov eax,70
mov [run_file_70.Position], 0
mov [run_file_70.Count], sizeof.ObjOpt*MAX_OBJ_TYPES
mov [run_file_70.Buffer], obj_opt
mov [run_file_70.FileName], fp_obj_opt
mov ebx,run_file_70
int 0x40
 
cmp ebx,-1
mov [err_ini1],1
je .open_end ;jmp if not open file
mov [err_ini1],0
 
mov eax,obj_opt ;¤®¡ ¢«ï¥¬ ®¡ê¥ªâë
@@:
mov bl,byte[eax]
cmp bl,0
je @f
;xor ecx,ecx ;¢ ecx ¡ã¤¥â ¨­¤¥ªá ¨ª®­ª¨
mov cx,word[eax+sizeof.ObjOpt-2*MAX_OPT_FIELDS]
cmp cx,0
jge .zero
xor cx,cx ;çâ®-¡ë ­¥ £«î稫® á ®âà¨æ â¥«ì­ë¬ ¨­¤¥ªá®¬
.zero:
shl ecx,16
stdcall dword[tl_node_add], eax, ecx, tree1 ;¤®¡ ¢«ï¥¬ ­ §¢ ­¨¥ ®¡ê¥ªâ 
stdcall dword[tl_cur_next], tree1 ;¯¥à¥­®á¨¬ ªãàá®à ¢­¨§, çâ®-¡ë ­¥ ¯®¬¥­ï«áï ¯®à冷ª
add eax,sizeof.ObjOpt ;¯¥à¥å®¤ ­  á«¥¤ãî騩 ®¡ê¥ªâ
jmp @b
@@:
stdcall dword[tl_cur_beg], tree1 ;¯¥à¥­®á¨¬ ªãàá®à ¢¢¥àå
 
.open_end:
 
stdcall [ted_init], tedit0
copy_path fn_syntax,sys_path,fp_icon,0x0
stdcall [ted_init_syntax_file], tedit0,run_file_70,fp_icon
;mov edi,tedit0
;call [ted_text_colored]
 
;get cmd line
cmp [buf_cmd_lin],0
je @f ;if file names exist
mov esi,buf_cmd_lin
call strlen ;eax=strlen
mov edi,[edit1.text]
mov [edit1.size],eax
mov ecx,eax
rep movsb
call but_open
@@:
 
 
 
align 4
red_win:
call draw_window
 
align 4
still:
mcall 10
 
cmp al,1
jne @f
call draw_window
@@:
cmp al,2
jz key
cmp al,3
jz button
cmp al,6
jne @f
call mouse
@@:
 
jmp still
 
align 4
draw_window:
pushad
mcall 12,1
 
xor eax,eax
mov ebx,20*65536+670
mov ecx,20*65536+370
mov edx,[sc.work]
or edx,0x33000000
mov edi,hed
mcall
 
mov eax,8 ;button 'Open'
mov esi,0x80ff
mov ebx,230*65536+70
mov ecx,5*65536+22
mov edx,5
mcall
 
;button 'Show Constructor'
mov ebx,310*65536+18
mov ecx,5*65536+18
mov edx,11
mcall
stdcall draw_icon, 12,311,6 ;12 - window icon
 
;button 'Show Code'
mov ebx,330*65536+18
mov edx,12
mcall
stdcall draw_icon, 11,331,6 ;11 - text icon
 
;button 'Update Code'
mov ebx,350*65536+18
mov edx,13
mcall
 
;button 'Save Code'
mov ebx,370*65536+18
mov edx,14
mcall
stdcall draw_icon, 17,371,6 ;17 - save icon
 
;button ']P'
mov ebx,390*65536+18
mov edx,15
mcall
stdcall draw_icon, 18,391,6 ;18 - §­ ª ª®­æ   ¡§ æ 
 
;button 'Show color text'
mov ebx,410*65536+18
mov edx,16
mcall
stdcall draw_icon, 19,411,6
 
; 10 30 50 70 90
 
mov eax,4 ;¯®¤¯¨áì 'Žâªàëâì'
mov ebx,245*65536+13
mov ecx,0x80ffff00
mov edx,txtOpen
mcall
 
cmp [err_opn],1
jne @f
;mov eax,4
mov ebx,10*65536+35
mov ecx,0x80ff0000
mov edx,txtErrOpen
mcall
@@:
 
cmp [err_ini0],1
je err_init_icon
cmp [err_ini1],1
je err_init_icon
call draw_obj_info ;®ª­® । ªâ¨à®¢ ­¨ï ¢ë¡à ­­®£® ®¡ê¥ªâ 
err_init_icon:
 
stdcall [edit_box_draw], dword edit1
stdcall [edit_box_draw], dword edit_sav
stdcall [tl_draw],dword tree1
mov dword[w_scr_t1.all_redraw],1
stdcall [scrollbar_ver_draw],dword w_scr_t1
stdcall [tl_draw],dword tree2
mov dword[w_scr_t2.all_redraw],1
stdcall [scrollbar_ver_draw],dword w_scr_t2
 
cmp byte[show_mode],0 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠®ª­  ª®­áâàãªâ®à 
jne @f
stdcall [buf2d_draw], buf_fon
@@:
cmp byte[show_mode],1 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠⥪á⮢®£® ®ª­ 
jne @f
stdcall [ted_draw], tedit0
@@:
mcall 12,2
popad
ret
 
align 4
mouse:
stdcall [edit_box_mouse], dword edit1
stdcall [edit_box_mouse], dword edit2
stdcall [edit_box_mouse], dword edit3
stdcall [edit_box_mouse], dword edit4
stdcall [edit_box_mouse], dword edit5
stdcall [edit_box_mouse], dword edit6
stdcall [edit_box_mouse], dword edit7
stdcall [edit_box_mouse], dword edit8
stdcall [edit_box_mouse], dword edit9
stdcall [edit_box_mouse], dword edit_sav
stdcall [tl_mouse], dword tree1
stdcall [tl_mouse], dword tree2
cmp byte[show_mode],1 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠⥪á⮢®£® ®ª­ 
jne @f
stdcall [ted_mouse], tedit0
@@:
ret
 
 
align 4
key:
mcall 2
stdcall [edit_box_key], dword edit1
stdcall [edit_box_key], dword edit2
stdcall [edit_box_key], dword edit3
stdcall [edit_box_key], dword edit4
stdcall [edit_box_key], dword edit5
stdcall [edit_box_key], dword edit6
stdcall [edit_box_key], dword edit7
stdcall [edit_box_key], dword edit8
stdcall [edit_box_key], dword edit9
stdcall [edit_box_key], dword edit_sav
stdcall [tl_key], dword tree1
stdcall [tl_key], dword tree2
; cmp ah,178 ;Up
; jne @f
; cmp [cur_y],0
; je @f
; dec [cur_y]
; call get_obj_pos
; call draw_window
; @@:
 
jmp still
 
align 4
button:
mcall 17
cmp ah,5
jne @f
call but_open
@@:
cmp ah,10
jne @f
call but_element_change
@@:
cmp ah,11
jne @f
call but_show_constructor
@@:
cmp ah,12
jne @f
call but_show_code
@@:
cmp ah,13
jne @f
call but_code_gen
@@:
cmp ah,14
jne @f
call but_save_asm
@@:
cmp ah,15
jne @f
call but_show_invis
@@:
cmp ah,16
jne @f
call but_show_syntax
@@:
cmp ah,1
jne still
.exit:
stdcall mem.Free,[icon_tl_sys]
mov dword[tree1.data_img],0
mov dword[tree2.data_img],0
mov dword[tree1.data_img_sys],0
mov dword[tree2.data_img_sys],0
stdcall dword[tl_data_clear], tree1
stdcall dword[tl_data_clear], tree2
stdcall [buf2d_delete],buf_fon ;㤠«ï¥¬ ¡ãä¥à
stdcall [buf2d_delete],buf_font ;㤠«ï¥¬ ¡ãä¥à
stdcall [buf2d_delete],buf_skin1
stdcall [buf2d_delete],buf_skin2
stdcall [buf2d_delete],buf_skin3
stdcall [ted_delete], tedit0
mcall -1
 
align 4
but_open:
pushad
mov eax,70
mov [run_file_70.Function], 0
mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0
mov [run_file_70.Count], sizeof.object*MAX_CED_OBJECTS
mov [run_file_70.Buffer], ced_info
mov [run_file_70.rezerv], 0
push [edit1.text]
pop [run_file_70.FileName]
mov ebx,run_file_70
int 0x40
 
cmp ebx,-1
mov [err_opn],1
je .open_end ;if open file
mov ecx,ced_info
add ecx,ebx
mov byte [ecx],0
mov [err_opn],0
 
stdcall dword[tl_info_clear], tree2
mov eax,ced_info ;¤®¡ ¢«ï¥¬ ®¡ê¥ªâë
@@:
mov bl,byte[eax]
cmp bl,0
je @f
 
call find_obj_in_opt ;edi = pointer to ObjOpt struct
 
mov cx,word[edi+sizeof.ObjOpt-2*MAX_OPT_FIELDS]
cmp cx,0
jge .zero
xor cx,cx ;çâ®-¡ë ­¥ £«î稫® á ®âà¨æ â¥«ì­ë¬ ¨­¤¥ªá®¬
.zero:
shl ecx,16 ;¢ ecx ¨­¤¥ªá ¨ª®­ª¨
mov cl,byte[eax+1+MAX_LEN_OBJ_TXT] ;ã஢¥­ì ®¡ê¥ªâ 
stdcall dword[tl_node_add], eax, ecx, tree2 ;¤®¡ ¢«ï¥¬ ®¡ê¥ªâ
stdcall dword[tl_cur_next], tree2 ;¯¥à¥­®á¨¬ ªãàá®à ¢­¨§, çâ®-¡ë ­¥ ¯®¬¥­ï«áï ¯®à冷ª
add eax,sizeof.object ;¯¥à¥å®¤ ­  á«¥¤ãî騩 ®¡ê¥ªâ
jmp @b
@@:
stdcall dword[tl_cur_beg], tree2 ;¯¥à¥­®á¨¬ ªãàá®à ¢¢¥àå
 
mov [foc_obj],0
call draw_constructor
call code_gen
.open_end:
call draw_window ;¯¥à¥à¨á®¢ª  ®ª­  ¨¤¥â ¢ «î¡®¬ á«ãç ¥, ¤ ¦¥ ¥á«¨ ä ©« ­¥ ®âªàë«áï
popad
ret
 
;äã­ªæ¨ï ¤«ï á®åà ­¥­¨ï ᮧ¤ ­­®£® asm ä ©« 
align 4
but_save_asm:
;stdcall [ted_but_save_file], tedit0,run_file_70,[edit_sav.text]
push edi
mov edi, tedit0
 
stdcall [ted_but_save_file],edi,run_file_70,[edit_sav.text]
cmp ted_err_save,0
jne @f
stdcall [mb_create],msgbox_1,thread ;message: ” ©« ¡ë« á®åà ­¥­
@@:
pop edi
ret
 
;äã­ªæ¨ï ¤«ï ¯®ª § /áªàëâ¨ï ­¥¢¨¤¨¬ëå ᨬ¢®«®¢
align 4
but_show_invis:
push edi
mov edi,tedit0
 
xor ted_mode_invis,1
cmp byte[show_mode],1 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠⥪á⮢®£® ®ª­ 
jne @f
stdcall [ted_draw],edi
@@:
pop edi
ret
 
;
align 4
but_show_syntax:
push edi
mov edi,tedit0
 
xor ted_mode_color,1
cmp byte[show_mode],1 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠⥪á⮢®£® ®ª­ 
jne @f
stdcall [ted_draw],edi
@@:
pop edi
ret
 
align 4
ted_save_err_msg:
mov byte[msgbox_0.err],al
stdcall [mb_create],msgbox_0,thread ;message: Can-t save text file!
ret
 
;äã­ªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ­ ¦ â¨¨ Enter ¢ ®ª­¥ tree2
;®¡­®¢«ï¥â ⥪áâ®¢ë¥ ¯®«ï §­ ç¥­¨ï¬¨ ¯ à ¬¥â஢ ¢§ïâëå ¨§ ®¡ê¥ªâ®¢
;äã­ªæ¨ï ®¡à â­ ï ª ¤ ­­®© but_element_change
align 4
on_file_object_select:
stdcall [tl_node_get_data], tree2
pop dword[foc_obj]
cmp dword[foc_obj],0
je @f
stdcall set_obj_win_param, 0,edit2
stdcall set_obj_win_param, 1,edit3
stdcall set_obj_win_param, 2,edit4
stdcall set_obj_win_param, 3,edit5
stdcall set_obj_win_param, 4,edit6
stdcall set_obj_win_param, 5,edit7
stdcall set_obj_win_param, 6,edit8
stdcall set_obj_win_param, 7,edit9
@@:
call draw_window
ret
 
;äã­ªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ­ ¦ â¨¨ Enter ¢ ®ª­¥ tree1
;¤®¡ ¢«ï¥â ­®¢ë© ®¡ê¥ªâ ¢ ®ª­® tree2
align 4
on_add_object:
push eax ebx ecx
stdcall [tl_node_get_data], tree1
pop eax
cmp eax,0
je @f
;mov bl,byte[eax]
;call find_obj_in_opt
xor ecx,ecx
mov cx,word[eax+obj_opt.img-obj_opt] ;cx - ¨­¤¥ªá £« ¢­®© ¨ª®­ª¨ ¤®¡ ¢«ï¥¬®£® ®¡ê¥ªâ 
;mov cx,word[edi+obj_opt.img-obj_opt] ;cx - ¨­¤¥ªá £« ¢­®© ¨ª®­ª¨ ¤®¡ ¢«ï¥¬®£® ®¡ê¥ªâ 
shl ecx,16
stdcall dword[tl_node_add], eax, ecx, tree2 ;¤®¡ ¢«ï¥¬ ®¡ê¥ªâ
@@:
pop ecx ebx eax
call draw_window
ret
 
align 4
proc set_obj_win_param, col:dword, edit:dword
pushad
stdcall get_obj_text_col, [foc_obj], [col]
stdcall get_obj_text_len_col, [foc_obj], [col] ;eax - ¤«¨­­  ¯®«ï
mov edi,[edit]
cmp eax,1
jl @f
dec eax
mov ed_max,eax ;ed_max = edi+.max
stdcall [edit_box_set_text], edi,edx ;®¡­®¢«ï¥¬ editbox
jmp .end_f
@@:
mov ed_max,dword MAX_LEN_OBJ_TXT
stdcall [edit_box_set_text], edi,txt_null
.end_f:
popad
ret
endp
 
align 4
but_ctrl_o:
ret
align 4
but_ctrl_n:
ret
align 4
but_ctrl_s:
ret
 
align 4
buf_fon: ;ä®­®¢ë© ¡ãä¥à
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 310 ;+4 left
dw 50 ;+6 top
dd 340 ;+8 w
dd 280 ;+12 h
dd 0xffffff ;+16 color
db 24 ;+20 bit in pixel
 
align 4
buf_font: ;¡ãä¥à ¬ âà¨æë á® èà¨ä⮬
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 25 ;+4 left
dw 25 ;+6 top
dd 96 ;+8 w
dd 144 ;+12 h
dd 0 ;+16 color
db 24 ;+20 bit in pixel
 
align 4
buf_skin1:
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 0 ;+4 left
dw 0 ;+6 top
dd SKIN_W1 ;+8 w
dd SKIN_H ;+12 h
dd 0 ;+16 color
db 24 ;+20 bit in pixel
align 4
buf_skin2:
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 0 ;+4 left
dw 0 ;+6 top
dd SKIN_W2 ;+8 w
dd SKIN_H ;+12 h
dd 0 ;+16 color
db 24 ;+20 bit in pixel
align 4
buf_skin3:
dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
dw 0 ;+4 left
dw 0 ;+6 top
dd SKIN_W3 ;+8 w
dd SKIN_H ;+12 h
dd 0 ;+16 color
db 24 ;+20 bit in pixel
 
show_mode db 0 ;०¨¬ ¤«ï ¯®ª §  ®¯à¥¤¥«¥­­®£® ®ª­ 
txtOpen db 'Žâªàëâì',0
txtErrOpen db '¥ ­ ©¤¥­ ä ©«, ¯à®¢¥àì⥠¯à ¢¨«ì­®áâì ¨¬¥­¨',0
txtErrIni1 db '¥ ®âªàë«áï ä ©« á ®¯æ¨ï¬¨',0
err_opn db 0
err_ini0 db 0 ;???
err_ini1 db 0
 
edit1 edit_box 210, 10, 10, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text1, mouse_dd, 0, 7, 7
 
edit2 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text2, mouse_dd, 0
edit3 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text3, mouse_dd, 0
edit4 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text4, mouse_dd, 0
edit5 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text5, mouse_dd, 0
edit6 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text6, mouse_dd, 0
edit7 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text7, mouse_dd, 0
edit8 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text8, mouse_dd, 0
edit9 edit_box 115, 32, 20, 0xffffff, 0x80ff, 0xff, 0x808080, 0, MAX_LEN_OBJ_TXT, ed_text9, mouse_dd, 0
prop_wnd_edits_end: ;ª®­¥æ ⥪á⮢ëå ¯®«¥©, ®â¢¥ç îé¨å §  ᢮©á⢠
 
edit_sav edit_box 210, 310, 30, 0xffffff, 0xff80, 0xff, 0xff0000, 0x4080, 300, ed_text_sav, mouse_dd, 0
 
 
ed_text1 db '/hd0/1/',0
rb 295
ed_text2 rb MAX_LEN_OBJ_TXT+2
ed_text3 rb MAX_LEN_OBJ_TXT+2
ed_text4 rb MAX_LEN_OBJ_TXT+2
ed_text5 rb MAX_LEN_OBJ_TXT+2
ed_text6 rb MAX_LEN_OBJ_TXT+2
ed_text7 rb MAX_LEN_OBJ_TXT+2
ed_text8 rb MAX_LEN_OBJ_TXT+2
ed_text9 rb MAX_LEN_OBJ_TXT+2
ed_text_sav rb 302
 
txt_null db 'null',0
mouse_dd dd ?
 
el_focus dd tree1
;¤¥à¥¢® ᮠᯨ᪮¬ ¢®§¬®¦­ëå ⨯®¢ ®¡ê¥ªâ®¢
tree1 tree_list sizeof.ObjOpt,20+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\
16,16, 0xffffff,0xb0d0ff,0xd000ff, 10,50,125,100, 0,3,0, el_focus,\
w_scr_t1,on_add_object
;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ â¥«ì᪮¬ ä ©«¥
tree2 tree_list sizeof.object,MAX_CED_OBJECTS+2, tl_draw_par_line,\
16,16, 0xffffff,0xb0d0ff,0xd000ff, 160,50,125,280, 13,1,MAX_LEN_OBJ_TXT, el_focus,\
w_scr_t2,on_file_object_select
 
msgbox_0:
db 1,0
db 'Warning',0
db 'Error saving file!',13,\
'Maybe the file name is not entered correctly.',13,\
' (error code ='
.err: db '?'
db ')',0
db 'Close',0
db 0
 
msgbox_1:
db 1,0
db ':)',0
db 'File was saved',0
db 'Ok',0
db 0
 
struct TexSelect
x0 dd ?
y0 dd ?
x1 dd ?
y1 dd ?
ends
;------------------------------------------------------------------------------
align 4
tedit0: ;áâàãªâãà  â¥ªá⮢®£® । ªâ®à 
.wnd BOX 310,50,325,260 ;+ 0
.rec BOX 30,13,7,10 ;+16
.drag_m db 0 ;+32 ¢ë¤¥«¥­¨¥ ®â ¬ëè¨
.drag_k db 0 ;+33 ¢ë¤¥«¥­¨¥ ®â ª« ¢¨ âãàë
.sel TexSelect 0,0,0,0 ;+34 áâàãªâãà  ¢ë¤¥«¥­¨ï
.seln TexSelect ;+50 ¤®¯®«­¨â¥«ì­ ï áâàãªâãà  ¢ë¤¥«¥­¨ï
.tex dd 0 ;+66 text memory pointer
.tex_1 dd 0 ;+70 text first symbol pointer
.tex_end dd 0 ;+74 text end memory pointer
.cur_x dd 0 ;+78 ª®®à¤¨­ â  x ªãàá®à 
.cur_y dd 0 ;+82 ª®®à¤¨­ â  y ªãàá®à 
.max_chars dd 25002 ;+86 ¬ ªá¨¬ «ì­®¥ ç¨á«® ᨬ¢®«®¢ ¢ ®¤­®¬ ¤®ªã¬¥­â¥
.count_colors_text dd 1 ;+90 ª®««¨ç¥á⢮ 梥⮢ ⥪áâ 
.count_key_words dd 0 ;+94 ª®««¨ç¥á⢮ ª«î祢ëå á«®¢
.color_cursor dd 0xff0000 ;+98 梥⠪ãàá®à 
.color_wnd_capt dd 0x0080c0 ;+102 梥⠯®«¥© ¢®ªà㣠®ª­ 
.color_wnd_work dd 0x0 ;+106 梥â ä®­  ®ª­ 
.color_wnd_bord dd 0xffffff ;+110 梥â ⥪áâ  ­  ¯®«ïå
.color_select dd 0x0000ff ;+114 梥⠢뤥«¥­¨ï
.color_cur_text dd 0xffff00 ;+118 梥â ᨬ¢®«  ¯®¤ ªãàá®à®¬
.color_wnd_text dd 0x80ffff ;+122 梥â ⥪áâ  ¢ ®ª­¥
.syntax_file dd 0 ;+126 㪠§ â¥«ì ­  ­ ç «® ä ©«  ᨭ⠪á¨á 
.syntax_file_size dd 55*1024 ;+130 ¬ ªá¨¬ «ì­ë© à §¬¥à ä ©«  ᨭ⠪á¨á 
.text_colors dd 0 ;+134 㪠§ â¥«ì ­  ¬ áᨢ 梥⮢ ⥪áâ 
.help_text_f1 dd 0 ;+138 㪠§ â¥«ì ­  ⥪áâ á¯à ¢ª¨ (¯® ­ ¦ â¨¨ F1)
.help_id dd -1 ;+142 ¨¤¥­â¨ä¨ª â®à ¤«ï á¯à ¢ª¨
.key_words_data dd 0 ;+146 㪠§ â¥«ì ­  áâàãªâãàë ª«î祢ëå á«®¢ TexColViv
.tim_ch dd ? ;+150 ª®«¨ç¥á⢮ ¨§¬¥­¥­¨© ¢ ä ©«¥
.tim_undo dd ? ;+154 ª®«¨ç¥á⢮ ®â¬¥­¥­­ëå ¤¥©á⢨©
.tim_ls dd ? ;+158 ¢à¥¬ï ¯®á«¥¤­¥£® á®åà ­¥­¨ï
.tim_co dd ? ;+162 ¢à¥¬ï ¯®á«¥¤­¥© 梥⮢®© à §¬¥âª¨
.el_focus dd el_focus ;+166 㪠§ â¥«ì ­  ¯¥à¥¬¥­­ãî í«¥¬¥­â  ¢ 䮪ãá¥
.err_save db 0 ;+170 ®è¨¡ª  á®åà ­¥­¨ï ä ©« 
.panel_id db 0 ;+171 ­®¬¥à ®âªàë⮩ ¯ ­¥«¨
.key_new db 0 ;+172 ᨬ¢®«, ª®â®àë© ¡ã¤¥â ¤®¡ ¢«ïâáï á ª« ¢¨ âãàë
.symbol_new_line db 20 ;+173 ᨬ¢®« § ¢¥à襭¨ï áâப¨
.scr_w dd scrol_w1 ;+174 ¢¥à⨪ «ì­ë© áªà®««¨­£
.scr_h dd scrol_h1 ;+178 £®à¨§®­â «ì­ë© áªà®««¨­£
.arr_key_pos dd 0 ;+182 㪠§ â¥«ì ­  ¬ áᨢ ¯®§¨æ¨© ª«î祢ëå á«®¢
.buffer dd text_buffer ;+186 㪠§ â¥«ì ­  ¡ãä¥à ª®¯¨à®¢ ­¨ï/¢áâ ¢ª¨
.buffer_find dd 0 ;+190 㪠§ â¥«ì ­  ¡ãä¥à ¤«ï ¯®¨áª 
.cur_ins db 1 ;+194 ०¨¬ à ¡®âë ªãàá®à  (®¡ëç­ë© ¨«¨ § ¬¥­ )
.mode_color db 1 ;+195 ०¨¬ ¢ë¤¥«¥­¨ï á«®¢ 梥⮬ (0-¢ëª«. 1-¢ª«.)
.mode_invis db 0 ;+196 ०¨¬ ¯®ª §  ­¥¯¥ç â ¥¬ëå ᨬ¢®«®¢
.gp_opt db 0 ;+197 ®¯æ¨¨ ¢®§¢à é ¥¬ë¥ ä㭪樥© ted_get_pos_by_cursor
.fun_on_key_ctrl_o dd but_ctrl_o ;+198 㪠§ â¥«ì ­  äã­ªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ­ ¦ â¨¨ Ctrl+O (®âªàë⨥ ä ©« )
.fun_on_key_ctrl_f dd 0 ;+202 ... Ctrl+F (¢ë§®¢ /áªàëâ¨ï ¯ ­¥«¨ ¯®¨áª )
.fun_on_key_ctrl_n dd but_ctrl_n ;+206 ... Ctrl+N (ᮧ¤ ­¨¥ ­®¢®£® ¤®ªã¬¥­â )
.fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S
.buffer_size dd BUF_SIZE ;+214 à §¬¥à ¡ãä¥à  ª®¯¨à®¢ ­¨ï/¢áâ ¢ª¨
.fun_find_err dd 0 ;+218 㪠§ â¥«ì ­  äã­ªæ¨î ¢ë§ë¢ ¥¬ãî ¥á«¨ ¯®¨áª § ª®­ç¨«áï ­¥ã¤ ç­®
.fun_init_synt_err dd 0 ;+222 㪠§ â¥«ì ­  äã­ªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ®è¨¡®ç­®¬ ®âªàë⨨ ä ©«  ᨭ⠪á¨á 
.fun_draw_panel_buttons dd 0 ;+226 㪠§ â¥«ì ­  äã­ªæ¨î à¨á®¢ ­¨ï ¯ ­¥«¨ á ª­®¯ª ¬¨
.fun_draw_panel_find dd 0 ;+230 㪠§ â¥«ì ­  äã­ªæ¨î à¨á®¢ ­¨ï ¯ ­¥«¨ ¯®¨áª 
.fun_draw_panel_syntax dd 0 ;+234 㪠§ â¥«ì ­  äã­ªæ¨î à¨á®¢ ­¨ï ¯ ­¥«¨ ᨭ⠪á¨á 
.fun_save_err dd ted_save_err_msg ;+238 㪠§ â¥«ì ­  äã­ªæ¨î ¢ë§ë¢ ¥¬ãî ¥á«¨ á®åà ­¥­¨¥ ä ©«  § ª®­ç¨«®áì ­¥ã¤ ç­®
.increase_size dd 1000 ;+242 ç¨á«® ᨬ¢®«®¢ ­  ª®â®àë¥ ¡ã¤¥â 㢥稢 âìáï ¯ ¬ïâì ¯à¨ ­¥å¢ âª¥
.ptr_free_symb dd ? ;+246 㪠§ â¥«ì ­  ᢮¡®¤­ãî ¯ ¬ïâì, ¢ ª®â®àãî ¬®¦­® ¤®¡ ¢«ïâì ᨬ¢®« (¨á¯®«ì§ã¥âáï ¢­ãâà¨ í«¥¬¥­â  ¤«ï ã᪮७¨ï ¢áâ ¢ª¨ ⥪áâ )
;------------------------------------------------------------------------------
align 4
scrol_w1:
.x:
.size_x dw 16 ;+0
.start_x dw 85 ;+2
.y:
.size_y dw 100 ; +4
.start_y dw 15 ; +6
.btn_high dd 15 ; +8
.type dd 1 ;+12
.max_area dd 100 ;+16
rb 4+4
.bckg_col dd 0xeeeeee ;+28
.frnt_col dd 0xbbddff ;+32
.line_col dd 0x808080 ;+36
.redraw dd 0 ;+40
.delta dw 0 ;+44
.delta2 dw 0 ;+46
.run_x:
.r_size_x dw 0 ;+48
.r_start_x dw 0 ;+50
.run_y:
.r_size_y dw 0 ;+52
.r_start_y dw 0 ;+54
.m_pos dd 0 ;+56
.m_pos_2 dd 0 ;+60
.m_keys dd 0 ;+64
.run_size dd 0 ;+68
.position2 dd 0 ;+72
.work_size dd 0 ;+76
.all_redraw dd 0 ;+80
.ar_offset dd 1 ;+84
;---------------------------------------------------------------------
align 4
scrol_h1:
.x:
.size_x dw 85 ;+0
.start_x dw 30 ;+2
.y:
.size_y dw 16 ;+4
.start_y dw 100 ;+6
.btn_high dd 15 ;+8
.type dd 1 ;+12
.max_area dd 100 ;+16
rb 4+4
.bckg_col dd 0xeeeeee ;+28
.frnt_col dd 0xbbddff ;+32
.line_col dd 0x808080 ;+36
.redraw dd 0 ;+40
.delta dw 0 ;+44
.delta2 dw 0 ;+46
.run_x:
.r_size_x dw 0 ;+48
.r_start_x dw 0 ;+50
.run_y:
.r_size_y dw 0 ;+52
.r_start_y dw 0 ;+54
.m_pos dd 0 ;+56
.m_pos_2 dd 0 ;+60
.m_keys dd 0 ;+64
.run_size dd 0 ;+68
.position2 dd 0 ;+72
.work_size dd 0 ;+76
.all_redraw dd 0 ;+80
.ar_offset dd 1 ;+84
 
 
 
align 4
w_scr_t1:
.size_x dw 16 ;+0
rb 2+2+2
.btn_high dd 15 ;+8
.type dd 1 ;+12
.max_area dd 100 ;+16
rb 4+4
.bckg_col dd 0xeeeeee ;+28
.frnt_col dd 0xbbddff ;+32
.line_col dd 0 ;+36
rb 4+2+2
.run_x:
rb 2+2+2+2+4+4+4+4+4+4
.all_redraw dd 0 ;+80
.ar_offset dd 1 ;+84
 
align 4
w_scr_t2:
.size_x dw 16 ;+0
rb 2+2+2
.btn_high dd 15 ;+8
.type dd 1 ;+12
.max_area dd 100 ;+16
rb 4+4
.bckg_col dd 0xeeeeee ;+28
.frnt_col dd 0xbbddff ;+32
.line_col dd 0 ;+36
rb 4+2+2
.run_x:
rb 2+2+2+2+4+4+4+4+4+4
.all_redraw dd 0 ;+80
.ar_offset dd 1 ;+84
 
data_of_code dd 0
sc system_colors
 
image_data dd 0 ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï ª à⨭ª¨ äã­ªæ¨ï¬¨ libimg
 
recMain BOX 3,13,16,18
ced_info object 0 ;on start == 0
rb sizeof.object*(MAX_CED_OBJECTS-1)
 
wndObjI BOX 10,160,125+16,170
text_buffer db BUF_SIZE dup(0)
fn_obj_opt db 'ob_o.opt',0
obj_opt ObjOpt
rb sizeof.ObjOpt*(MAX_OBJ_TYPES-1)
db 0 ;eof options
 
cur_x dd 0
cur_y dd 0
foc_obj dd 0 ;®¡ê¥ªâ ¢ 䮪ãá¥
obj_m_win dd 0 ;áâàãªâãà  £« ¢­®£® ®ª­ 
 
;
if 1 ;lang eq ru
 
err_message_found_lib0 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  box_lib.obj',0 ;áâப , ª®â®à ï ¡ã¤¥â ¢ áä®à¬¨à®¢ ­­®¬ ®ª­¥, ¥á«¨ ¡¨¡«¨®â¥ª  ­¥ ¡ã¤¥â ­ ©¤¥­ 
err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0
err_message_found_lib1 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  proc_lib.obj',0
err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ proc_lib.obj',0
err_message_found_lib2 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã buf2d.obj',0
err_message_import2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ buf2d.obj',0
err_message_found_lib3 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',0
err_message_import3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',0
err_message_found_lib4 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã msgbox.obj',0
err_message_import4 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ msgbox.obj',0
 
head_f_i:
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0 ;§ £®«®¢®ª ®ª­ , ¯à¨ ¢®§­¨ª­®¢¥­¨¨ ®è¨¡ª¨
else
 
err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0
err_message_import0 db 'Error on load import library box_lib.obj',0
err_message_found_lib1 db 'Sorry I cannot found library proc_lib.obj',0
err_message_import1 db 'Error on load import library proc_lib.obj',0
err_message_found_lib2 db 'Sorry I cannot found library buf2d.obj',0
err_message_import2 db 'Error on load import library buf2d.obj',0
err_message_found_lib3 db 'Sorry I cannot found library libimg.obj',0
err_message_import3 db 'Error on load import library libimg.obj',0
err_message_found_lib4 db 'Sorry I cannot found library msgbox.obj',0
err_message_import4 db 'Error on load import library msgbox.obj',0
 
head_f_i:
head_f_l db 'System error',0 ;§ £®«®¢®ª ®ª­ , ¯à¨ ¢®§­¨ª­®¢¥­¨¨ ®è¨¡ª¨
end if
 
system_dir0 db '/sys/lib/'
lib0_name db 'box_lib.obj',0
 
system_dir1 db '/sys/lib/'
lib1_name db 'proc_lib.obj',0
 
system_dir2 db '/sys/lib/'
lib2_name db 'buf2d.obj',0
 
system_dir3 db '/sys/lib/'
lib3_name db 'libimg.obj',0
 
system_dir4 db '/sys/lib/'
lib4_name db 'msgbox.obj',0
 
align 4
import_buf2d_lib:
dd sz_lib_init
buf2d_create dd sz_buf2d_create
buf2d_create_f_img dd sz_buf2d_create_f_img
buf2d_clear dd sz_buf2d_clear
buf2d_draw dd sz_buf2d_draw
buf2d_delete dd sz_buf2d_delete
buf2d_line dd sz_buf2d_line
buf2d_rect_by_size dd sz_buf2d_rect_by_size
buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
buf2d_circle dd sz_buf2d_circle
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
buf2d_bit_blt dd sz_buf2d_bit_blt
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
buf2d_cruve_bezier dd sz_buf2d_cruve_bezier
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
buf2d_draw_text dd sz_buf2d_draw_text
buf2d_crop_color dd sz_buf2d_crop_color
buf2d_offset_h dd sz_buf2d_offset_h
dd 0,0
sz_lib_init db 'lib_init',0
sz_buf2d_create db 'buf2d_create',0
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
sz_buf2d_clear db 'buf2d_clear',0
sz_buf2d_draw db 'buf2d_draw',0
sz_buf2d_delete db 'buf2d_delete',0
sz_buf2d_line db 'buf2d_line',0
sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª , 2-ï ª®®à¤¨­ â  § ¤ ­  ¯® à §¬¥àã
sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
sz_buf2d_circle db 'buf2d_circle',0 ;à¨á®¢ ­¨¥ ®ªà㦭®áâ¨
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
sz_buf2d_cruve_bezier db 'buf2d_cruve_bezier',0
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
sz_buf2d_draw_text db 'buf2d_draw_text',0
sz_buf2d_crop_color db 'buf2d_crop_color',0
sz_buf2d_offset_h db 'buf2d_offset_h',0
 
align 4
import_box_lib:
dd alib_init2
 
edit_box_draw dd aEdit_box_draw
edit_box_key dd aEdit_box_key
edit_box_mouse dd aEdit_box_mouse
edit_box_set_text dd aEdit_box_set_text
 
scrollbar_ver_draw dd aScrollbar_ver_draw
scrollbar_hor_draw dd aScrollbar_hor_draw
 
tl_data_init dd sz_tl_data_init
tl_data_clear dd sz_tl_data_clear
tl_info_clear dd sz_tl_info_clear
tl_key dd sz_tl_key
tl_mouse dd sz_tl_mouse
tl_draw dd sz_tl_draw
tl_info_undo dd sz_tl_info_undo
tl_info_redo dd sz_tl_info_redo
tl_node_add dd sz_tl_node_add
tl_node_set_data dd sz_tl_node_set_data
tl_node_get_data dd sz_tl_node_get_data
tl_node_delete dd sz_tl_node_delete
tl_cur_beg dd sz_tl_cur_beg
tl_cur_next dd sz_tl_cur_next
tl_cur_perv dd sz_tl_cur_perv
tl_node_close_open dd sz_tl_node_close_open
tl_node_lev_inc dd sz_tl_node_lev_inc
tl_node_lev_dec dd sz_tl_node_lev_dec
tl_node_poi_get_info dd sz_tl_node_poi_get_info
tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
tl_node_poi_get_data dd sz_tl_node_poi_get_data
 
ted_but_save_file dd sz_ted_but_save_file
ted_but_sumb_upper dd sz_ted_but_sumb_upper
ted_but_sumb_lover dd sz_ted_but_sumb_lover
ted_can_save dd sz_ted_can_save
ted_clear dd sz_ted_clear
ted_delete dd sz_ted_delete
ted_draw dd sz_ted_draw
ted_init dd sz_ted_init
ted_init_scroll_bars dd sz_ted_init_scroll_bars
ted_init_syntax_file dd sz_ted_init_syntax_file
ted_is_select dd sz_ted_is_select
ted_key dd sz_ted_key
ted_mouse dd sz_ted_mouse
ted_open_file dd sz_ted_open_file
ted_text_add dd sz_ted_text_add
ted_but_select_word dd sz_ted_but_select_word
ted_but_cut dd sz_ted_but_cut
ted_but_copy dd sz_ted_but_copy
ted_but_paste dd sz_ted_but_paste
ted_but_undo dd sz_ted_but_undo
ted_but_redo dd sz_ted_but_redo
ted_but_reverse dd sz_ted_but_reverse
ted_but_find_next dd sz_ted_but_find_next
ted_text_colored dd sz_ted_text_colored
;version_text_edit dd sz_ted_version
 
dd 0,0
alib_init2 db 'lib_init',0
 
aEdit_box_draw db 'edit_box',0
aEdit_box_key db 'edit_box_key',0
aEdit_box_mouse db 'edit_box_mouse',0
aEdit_box_set_text db 'edit_box_set_text',0
 
aScrollbar_ver_draw db 'scrollbar_v_draw',0
aScrollbar_hor_draw db 'scrollbar_h_draw',0
sz_tl_data_init db 'tl_data_init',0
sz_tl_data_clear db 'tl_data_clear',0
sz_tl_info_clear db 'tl_info_clear',0
sz_tl_key db 'tl_key',0
sz_tl_mouse db 'tl_mouse',0
sz_tl_draw db 'tl_draw',0
sz_tl_info_undo db 'tl_info_undo',0
sz_tl_info_redo db 'tl_info_redo',0
sz_tl_node_add db 'tl_node_add',0
sz_tl_node_set_data db 'tl_node_set_data',0
sz_tl_node_get_data db 'tl_node_get_data',0
sz_tl_node_delete db 'tl_node_delete',0
sz_tl_cur_beg db 'tl_cur_beg',0
sz_tl_cur_next db 'tl_cur_next',0
sz_tl_cur_perv db 'tl_cur_perv',0
sz_tl_node_close_open db 'tl_node_close_open',0
sz_tl_node_lev_inc db 'tl_node_lev_inc',0
sz_tl_node_lev_dec db 'tl_node_lev_dec',0
sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
 
sz_ted_but_save_file db 'ted_but_save_file',0
sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0
sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0
sz_ted_can_save db 'ted_can_save',0
sz_ted_clear db 'ted_clear',0
sz_ted_delete db 'ted_delete',0
sz_ted_draw db 'ted_draw',0
sz_ted_init db 'ted_init',0
sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0
sz_ted_init_syntax_file db 'ted_init_syntax_file',0
sz_ted_is_select db 'ted_is_select',0
sz_ted_key db 'ted_key',0
sz_ted_mouse db 'ted_mouse',0
sz_ted_open_file db 'ted_open_file',0
sz_ted_text_add db 'ted_text_add',0
sz_ted_but_select_word db 'ted_but_select_word',0
sz_ted_but_cut db 'ted_but_cut',0
sz_ted_but_copy db 'ted_but_copy',0
sz_ted_but_paste db 'ted_but_paste',0
sz_ted_but_undo db 'ted_but_undo',0
sz_ted_but_redo db 'ted_but_redo',0
sz_ted_but_reverse db 'ted_but_reverse',0
sz_ted_but_find_next db 'ted_but_find_next',0
sz_ted_text_colored db 'ted_text_colored',0
;sz_ted_version db 'version_text_edit',0
 
align 4
import_proc_lib:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
dd 0,0
aOpenDialog_Init db 'OpenDialog_init',0
aOpenDialog_Start db 'OpenDialog_start',0
 
align 4
import_libimg:
dd alib_init1
img_is_img dd aimg_is_img
img_info dd aimg_info
img_from_file dd aimg_from_file
img_to_file dd aimg_to_file
img_from_rgb dd aimg_from_rgb
img_to_rgb dd aimg_to_rgb
img_to_rgb2 dd aimg_to_rgb2
img_decode dd aimg_decode
img_encode dd aimg_encode
img_create dd aimg_create
img_destroy dd aimg_destroy
img_destroy_layer dd aimg_destroy_layer
img_count dd aimg_count
img_lock_bits dd aimg_lock_bits
img_unlock_bits dd aimg_unlock_bits
img_flip dd aimg_flip
img_flip_layer dd aimg_flip_layer
img_rotate dd aimg_rotate
img_rotate_layer dd aimg_rotate_layer
img_draw dd aimg_draw
 
dd 0,0
 
alib_init1 db 'lib_init',0
aimg_is_img db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
aimg_info db 'img_info',0
aimg_from_file db 'img_from_file',0
aimg_to_file db 'img_to_file',0
aimg_from_rgb db 'img_from_rgb',0
aimg_to_rgb db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
aimg_to_rgb2 db 'img_to_rgb2',0
aimg_decode db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
aimg_encode db 'img_encode',0
aimg_create db 'img_create',0
aimg_destroy db 'img_destroy',0
aimg_destroy_layer db 'img_destroy_layer',0
aimg_count db 'img_count',0
aimg_lock_bits db 'img_lock_bits',0
aimg_unlock_bits db 'img_unlock_bits',0
aimg_flip db 'img_flip',0
aimg_flip_layer db 'img_flip_layer',0
aimg_rotate db 'img_rotate',0
aimg_rotate_layer db 'img_rotate_layer',0
aimg_draw db 'img_draw',0
 
align 4
import_msgbox_lib:
mb_create dd amb_create
mb_reinit dd amb_reinit
mb_setfunctions dd amb_setfunctions
dd 0,0
amb_create db 'mb_create',0
amb_reinit db 'mb_reinit',0
amb_setfunctions db 'mb_setfunctions',0
 
;library structures
l_libs_start:
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
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
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
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
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
load_lib_end:
 
 
align 16
procinfo process_information
run_file_70 FileInfoBlock
 
i_end:
buf_cmd_lin rb 1024
fp_icon rb 1024 ;icon file path
fp_obj_opt rb 1024 ;obj options file patch
rb 1024
thread: ;¢¢¥àåã ¤®ç¥à­¨© á⥪ ¤«ï ®ª­  á®®¡é¥­¨ï
rb 1024
stacktop: ;¢¢¥àåã á⥪ ®á­®¢­®© ¯à®£à ¬¬ë
sys_path rb 1024
library_path rb 1024
mem:
/programs/develop/kol_f_edit/ced_wnd_m.inc
0,0 → 1,434
align 4
draw_obj_info:
mov eax,13 ;rect
mov edx,WND_CAPT_COLOR
mov ebx,[wndObjI.left]
shl ebx,16
add ebx,[wndObjI.width]
mov ecx,[wndObjI.top]
add ecx,[recMain.top]
shl ecx,16
add ecx,[wndObjI.height]
sub ecx,[recMain.top]
mov edx,0xffffff ;0x80ffffff
int 0x40 ;¯àאַ㣮«ì­¨ª ¤«ï ®ª­ 
 
mov ecx,[wndObjI.top] ;draw caption
shl ecx,16
add ecx,[recMain.top]
mov edx,WND_CAPT_COLOR
int 0x40
 
mov edx,[foc_obj] ;init icon pointers
cmp edx,0
je .exit_fun
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
pushad
;draw caption wndObjI
mov eax,4 ;¯®¤¯¨áì - ­ §¢ ­¨¥ ®¡ê¥ªâ 
 
mov bl,[edx]
call find_obj_in_opt
mov edx,edi
 
mov ebx,[wndObjI.left]
add ebx,[recMain.left]
add ebx,4
shl ebx,16
add ebx,[wndObjI.top]
add ebx,4
mov ecx,0xc0d000ff
mov edi,WND_CAPT_COLOR
add edx,obj_opt.info-obj_opt
int 0x40
 
mov eax,8 ;ª­®¯ª  ¤«ï á®åà ­¥­¨ï ¨§¬¥­¥­¨©
mov ebx,125*65536+20
mov ecx,161*65536+10
mov edx,10
mov esi,0xd040
int 0x40
popad
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
stdcall [edit_box_draw], dword edit2
stdcall [edit_box_draw], dword edit3
stdcall [edit_box_draw], dword edit4
stdcall [edit_box_draw], dword edit5
stdcall [edit_box_draw], dword edit6
stdcall [edit_box_draw], dword edit7
stdcall [edit_box_draw], dword edit8
stdcall [edit_box_draw], dword edit9
 
xor ebx,ebx ;­®¬¥à ¯®«ï
.draw_column:
mov eax,ebx
imul eax,[recMain.height]
add eax,[recMain.top]
add eax,[wndObjI.top]
stdcall draw_icon_obj,[edx],ebx,eax
 
inc ebx
cmp ebx,MAX_OPT_FIELDS
jl .draw_column
.exit_fun:
ret
 
;®¡­®¢«¥­¨¥ ®¡ê¥ªâ®¢ ¢ tree2, ¯® §­ ç¥­¨ï¬ ⥪á⮢ëå ¯®«¥©
;äã­ªæ¨ï ®¡à â­ ï ª ¤ ­­®© on_file_object_select
align 4
but_element_change:
;foc_obj - 㪠§ â¥«ì ­  ¯®á«¥¤­¨© ¢ë¡à ­­ë© 㧥« ¢ tree2
cmp dword[foc_obj],0
je @f
pushad
stdcall get_obj_win_param, 0,edit2
stdcall get_obj_win_param, 1,edit3
stdcall get_obj_win_param, 2,edit4
stdcall get_obj_win_param, 3,edit5
stdcall get_obj_win_param, 4,edit6
stdcall get_obj_win_param, 5,edit7
stdcall get_obj_win_param, 6,edit8
stdcall get_obj_win_param, 7,edit9
popad
@@:
call draw_constructor ;®¡­®¢«ï¥¬ ®ª­® ª®­áâàãªâ®à 
call draw_window
ret
 
align 4
proc get_obj_win_param, col:dword, edit:dword
;pushad
stdcall get_obj_text_col, [foc_obj], [col] ;edx - ᬥ饭¨¥ ¤«ï ⥪áâ 
stdcall get_obj_text_len_col, [foc_obj], [col] ;eax - ¤«¨­­  ¯®«ï
cld
mov edi,[edit]
mov esi,ed_text
mov edi,edx
mov ecx,eax
rep movsb
ret
;popad
endp
 
;input:
; obj - pointer to object
; ind - column index
;output:
; edx + offset
; edx = 0 if not text
align 4
proc get_obj_text_col, obj:dword, ind:dword
mov edx,dword[obj]
inc edx ;goto text
push ebx
mov ebx,dword[ind]
cmp bx,0
je .end_fun
 
shl ebx,8 ;¢ bh ¯®¯ ¤ ¥â ­®¬¥à ¨áª®¬®© ª®«®­ª¨
mov bl,byte[edx-1] ;¢ bl ¯®¯ ¤ ¥â ª®¤ ®¡ê¥ªâ 
 
push ecx edi
call find_obj_in_opt ;¨é¥¬ áâàãªâãàã á ®¯æ¨ï¬¨ ®¡ê¥ªâ 
 
add edi,obj_opt.Col-obj_opt
dec bh
and ebx,0xff00
shr ebx,7 ;ᤢ¨£ ¥¬ ­  7, â.ª. ­ã¦­® §­ ç¥­¨¥ bh 㬭®¦¥­­®¥ ­  2
add edi,ebx ;+ ¡ë¢è¥¥ bh*2
xor ecx,ecx
mov cx,word[edi] ;ecx - ᤨ£ ¤«ï ¨áª®¬®£® ¯®«ï
add edx,ecx
 
cmp cx,0
jg @f
mov edx,0 ;not text
@@:
cmp cx,MAX_LEN_OBJ_TXT
jl @f
mov edx,0 ;not text
@@:
 
pop edi ecx
.end_fun:
pop ebx
ret
endp
 
;input:
; obj - 㪠§ â¥«ì ­  ®¡ê¥ªâ
; ind - ­®¬¥à ¯®«ï ¢­ãâਠ®¡ê¥ªâ 
;output:
; eax - ¤«¨­­  ⥪á⮢®£® ¯®«ï ¢­ãâਠ®¡ê¥ªâ 
align 4
proc get_obj_text_len_col, obj:dword, ind:dword
xor eax,eax
push ebx
mov ebx,dword[ind]
shl ebx,8 ;¢ bh ¯®¯ ¤ ¥â ­®¬¥à ¨áª®¬®© ª®«®­ª¨
mov eax,dword[obj]
mov bl,byte[eax] ;¢ bl ¯®¯ ¤ ¥â ª®¤ ®¡ê¥ªâ 
xor eax,eax
 
push edi
call find_obj_in_opt ;¨é¥¬ áâàãªâãàã á ®¯æ¨ï¬¨ ®¡ê¥ªâ 
 
add edi,obj_opt.Col-obj_opt
and ebx,0xff00
shr ebx,7 ;ᤢ¨£ ¥¬ ­  7, â.ª. ­ã¦­® §­ ç¥­¨¥ bh 㬭®¦¥­­®¥ ­  2
add edi,ebx ;+ ¡ë¢è¥¥ bh*2
 
mov ax,word[edi] ;eax - ᤨ£ ¤«ï á«¥¤ã饣® ¯®«ï
cmp ax,0
jg @f
mov eax,MAX_LEN_OBJ_TXT ;¯®á«¥¤­¨¥ ¯®«ï ¤«ï 㤮¡á⢠ ª®¤¨àãîâáï 0,   ­¥ MAX_LEN_OBJ_TXT, ¨á¯à ¢«ï¥¬ á¨âã æ¨î
@@:
cmp dword[ind],0
je .end_fun ;¤«ï ¯¥à¢®£® ¯®«ï ᤨ£ = 0, ¯®â®¬ã ¢ áâàãªâãॠ®­ ­¥ åà ­¨âáï, â.ª. ¨§¢¥á⥭ § à ­¥¥
sub ax,word[edi-2] ;®â­¨¬ ¥¬ ᤨ£ ¤«ï ¨áª®¬®£® ¯®«ï, ¯®«ãç ¥¬ ¤«¨­­ã ¯®«ï
 
cmp word[edi-2],0
jg @f
mov eax,0 ;¯®«¥ ¯ãá⮥, ­¥ ¨á¯®«ì§ã¥âáï
@@:
cmp ax,MAX_LEN_OBJ_TXT
jl @f
mov eax,0 ;not text
@@:
 
pop edi
.end_fun:
pop ebx
ret
endp
 
align 4
proc draw_icon_obj, o_type:dword,n_col:dword, coord_y:dword
pushad
xor ebx,ebx
mov bl,byte[o_type]
call find_obj_in_opt
 
add edi,obj_opt.img-obj_opt ;get index (+0)
mov ebx,[n_col]
shl ebx,1
add edi,ebx ;move index (+bh)
xor ecx,ecx
mov cx,[edi]
 
cmp cx,0
jge @f
jmp .end_fun ;error icon index
@@:
 
mov ebx,bmp_icon
imul ecx,0x300
add ebx,ecx
 
mov eax,7
mov ecx,0x100010 ;ecx - size:16*16
mov edx,[wndObjI.left]
add edx,5
shl edx,16
add edx,[coord_y]
int 0x40
.end_fun:
popad
ret
endp
 
align 4
proc draw_icon, ind:dword,coord_x:dword,coord_y:dword
pushad
mov ecx,[ind]
cmp ecx,0
jl .end_fun
mov ebx,bmp_icon
imul ecx,0x300
add ebx,ecx
 
mov eax,7
mov ecx,0x100010 ;ecx - size:16*16
mov edx,[coord_x]
shl edx,16
add edx,[coord_y]
int 0x40
.end_fun:
popad
ret
endp
 
;input
; bl = cod object
;output:
; edi = pointer to option struct
align 4
find_obj_in_opt:
push ecx
xor ecx,ecx ;find 'bl' in options
mov edi,obj_opt
@@:
cmp bl,[edi] ;find
je @f
inc ecx
cmp ecx,MAX_OBJ_TYPES
je @f ;not find
add edi,sizeof.ObjOpt
jmp @b
@@:
pop ecx
ret
 
 
obj_find_last dd 0 ;㪠§ â¥«ì ­  ¯®á«¥¤­¨© 㤠筮 ­ ©¤¥­­ë© ®¡ê¥ªâ,
;­ã¦¥­ ¤«ï ã᪮७¨ï ¯®á«¥¤ã饣® ¯®¨áª 
 
;¢ë室:
;eax - 㪠§ â¥«ì ­  áâàãªâãàã ­ ©¤¥­­®£® ®¡ê¥ªâ 
align 4
proc find_obj_in_file, o_type:dword
push ebx esi
mov ebx,[o_type]
stdcall dword[tl_node_poi_get_info], 0,tree2
pop esi
 
@@:
cmp esi,0
je .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp eax,0
je .find_no
 
cmp byte[eax],bl ;ᬮâਬ ®¯¨á ­ «¨ ¨áª®¬ë© ®¡ê¥ªâ ¢ 㧫¥
je .find_yes
 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
 
jmp @b
 
.find_yes:
mov dword[obj_find_last],esi
jmp @f
.find_no:
mov dword[obj_find_last],0
xor eax,eax
@@:
pop esi ebx
ret
endp
 
;¢ë室:
;eax - 㪠§ â¥«ì ­  áâàãªâãàã ­ ©¤¥­­®£® ®¡ê¥ªâ 
align 4
proc find_obj_in_file_next, o_type:dword
push ebx esi
cmp dword[obj_find_last],0
je .find_no
 
mov ebx,[o_type]
 
stdcall dword[tl_node_poi_get_next_info], dword[obj_find_last],tree2
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
 
@@:
cmp esi,0
je .find_no
 
stdcall dword[tl_node_poi_get_data], esi,tree2
pop eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
cmp eax,0
je .find_no
 
cmp byte[eax],bl ;ᬮâਬ ®¯¨á ­ «¨ ¨áª®¬ë© ®¡ê¥ªâ ¢ 㧫¥
je .find_yes
 
stdcall dword[tl_node_poi_get_next_info], esi, tree2
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
 
jmp @b
 
.find_yes:
mov dword[obj_find_last],esi
jmp @f
.find_no:
mov dword[obj_find_last],0
xor eax,eax
@@:
pop esi ebx
ret
endp
 
align 4
but_show_constructor:
mov byte[show_mode],0
stdcall [buf2d_draw], buf_fon
ret
 
align 4
but_show_code:
mov byte[show_mode],1
stdcall [ted_draw], tedit0
ret
 
;input:
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
;output:
; eax - ç¨á«®
align 4
proc conv_str_to_int, buf:dword
xor eax,eax
push ebx esi
xor ebx,ebx
mov esi,[buf]
cmp word[esi],'0x'
je .load_digit_16
 
.load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
mov bl,byte[esi]
cmp bl,'0'
jl @f
cmp bl,'9'
jg @f
sub bl,'0'
imul eax,10
add eax,ebx
inc esi
jmp .load_digit_10
jmp @f
 
.load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
add esi,2
.cycle_16:
mov bl,byte[esi]
cmp bl,'0'
jl @f
cmp bl,'f'
jg @f
cmp bl,'9'
jle .us1
cmp bl,'A'
jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
.us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
cmp bl,'F'
jle .us2
cmp bl,'a'
jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
.us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
sub bl,'0'
cmp bl,9
jle .cor1
sub bl,7 ;convert 'A' to '10'
.cor1:
shl eax,4
add eax,ebx
inc esi
jmp .cycle_16
@@:
 
pop esi ebx
ret
endp
/programs/develop/kol_f_edit/dll.inc
0,0 → 1,99
 
proc dll.Load, import_table:dword
mov esi,[import_table]
.next_lib: mov edx,[esi]
or edx,edx
jz .exit
push esi
mov esi,[esi+4]
mov edi,s_libdir.fname
@@: lodsb
stosb
or al,al
jnz @b
mcall 68,19,s_libdir
or eax,eax
jz .fail
stdcall dll.Link,eax,edx
push eax
mov eax, [eax]
cmp dword [eax], 'lib_'
pop eax
jnz @f
stdcall dll.Init,[eax+4]
@@:
pop esi
add esi,8
jmp .next_lib
.exit: xor eax,eax
ret
.fail: add esp,4
xor eax,eax
inc eax
ret
endp
 
proc dll.Link, exp:dword,imp:dword
push eax
mov esi,[imp]
test esi,esi
jz .done
.next: lodsd
test eax,eax
jz .done
stdcall dll.GetProcAddress,[exp],eax
or eax,eax
jz @f
mov [esi-4],eax
jmp .next
@@: mov dword[esp],0
.done: pop eax
ret
endp
 
proc dll.Init, dllentry:dword
pushad
mov eax,mem.Alloc
mov ebx,mem.Free
mov ecx,mem.ReAlloc
mov edx,dll.Load
stdcall [dllentry]
popad
ret
endp
 
proc dll.GetProcAddress, exp:dword,sz_name:dword
mov edx,[exp]
xor eax,eax
.next: or edx,edx
jz .end
cmp dword[edx],0
jz .end
stdcall strcmp,[edx],[sz_name]
test eax,eax
jz .ok
add edx,8
jmp .next
.ok: mov eax,[edx+4]
.end: ret
endp
 
proc strcmp, str1:dword,str2:dword
push esi edi
mov esi,[str1]
mov edi,[str2]
xor eax,eax
@@: lodsb
scasb
jne .fail
or al,al
jnz @b
jmp .ok
.fail: or eax,-1
.ok: pop edi esi
ret
endp
 
s_libdir:
db '/sys/lib/'
.fname rb 32
/programs/develop/kol_f_edit/icon.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/develop/kol_f_edit/left.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/develop/kol_f_edit/mem.inc
0,0 → 1,48
;-----------------------------------------------------------------------------
proc mem.Alloc,size ;/////////////////////////////////////////////////////////
;-----------------------------------------------------------------------------
push ebx ecx
mov ecx,[size]
;*** add ecx,4
mcall 68,12
;*** add ecx,-4
;*** mov [eax],ecx
;*** add eax,4
pop ecx ebx
ret
endp
 
;-----------------------------------------------------------------------------
proc mem.ReAlloc,mptr,size ;//////////////////////////////////////////////////
;-----------------------------------------------------------------------------
push ebx ecx edx
mov ecx,[size]
or ecx,ecx
jz @f
;*** add ecx,4
@@: mov edx,[mptr]
or edx,edx
jz @f
;*** add edx,-4
@@: mcall 68,20
or eax,eax
jz @f
;*** add ecx,-4
;*** mov [eax],ecx
;*** add eax,4
@@: pop edx ecx ebx
ret
endp
 
;-----------------------------------------------------------------------------
proc mem.Free,mptr ;//////////////////////////////////////////////////////////
;-----------------------------------------------------------------------------
push ebx ecx
mov ecx,[mptr]
or ecx,ecx
jz @f
;*** add ecx,-4
@@: mcall 68,13
pop ecx ebx
ret
endp
/programs/develop/kol_f_edit/min_prog.ced
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/develop/kol_f_edit/ob_o.asm
0,0 → 1,84
;lang equ ru
 
MAX_LEN_OBJ_TXT equ 200
 
C_TD equ 't' ;typedef
C_AC equ 'a' ; ¢â®¬ â¨ç¥áª¨¥ ª®¤ë (auto code)
C_ST equ 's' ;struct
C_IN equ '#' ;include
C_TT equ 'd' ;¡«®ª ª®¤  (¤ ­­ëå)
C_VR equ '-' ;¯¥à¥¬¥­­ ï
C_CO equ ';' ;ª®¬¬¥­â à¨©
C_WI equ 'w' ;®ª­®
C_CB equ 'c' ;CheckBox
C_OP equ 'o' ;OptionBox
C_ED equ 'e' ;EditBox
C_BU equ 'b' ;Button
C_DT equ 'x' ;à¨á®¢ âì ⥪áâ
C_RE equ 'r' ;à¨á®¢ âì ¯àאַ㣮«ì­¨ª
C_KE equ 'k' ;ª« ¢¨ âãà 
 
macro ObjOpt c,bl_type,graph,info,caption,Col,img
{
db c
db bl_type
db graph
@@: db info
rb @b+30-$
@@: db caption
rb @b+MAX_LEN_OBJ_TXT-$
dw Col
dw img
}
 
ObjOpt C_AC, 1,0,'€¢â® ª®¤','',\
<0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_ST, 1,0,'‘âàãªâãà ','¨¬ï áâàãªâãàë*¯ à ¬¥âàë ¤«ï ¬ ªà®á ',\
<40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_BU, 1,1,'Š­®¯ª ','¨¤¥­â¨ä¨ª â®à*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â *梥â*¨¬ï ¬¥âª¨ ¯à¨ ­ ¦ â¨¨',\
<20, 40, 60, 80,100,120, 0, 0, 0, 0, 0>,\
<29, 15, 16, 26, 27, 25, -1, -1, -1, -1,-1>
ObjOpt C_ED, 1,1,'’¥ªá⮢®¥ ¯®«¥','***®âáâ㯠ᢥàåã*梥â ä®­ *梥⠢뤥«¥­¨ï ¯à¨ 㤥ন¢ ­¨¨ shift ¨«¨ ¬ë誮©*梥â à ¬ª¨*¯à¨ ­¥ ªâ¨¢­®¬ ¡®ªá¥ 梥â à ¬ª¨*梥â ⥪áâ *¬ ªá¨¬ «ì­ ï ¤«¨­  ⥪áâ *­ ç «ì­ë© ⥪áâ',\
<30, 40, 50, 60, 80,100,120,140,160,170, 0>,\
<10, 26, 15, 16, 25, 25, 25, 25, 25, -1, 4>
ObjOpt C_OP, 1,1,' ¤¨® ª­®¯ª ','¨¬ï*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*梥â ä®­  ¢­ãâà¨*梥â à ¬ª¨ ¨ ¢­ãâà. £ «®çª¨*梥â ⥪áâ *¯®¤¯¨áì*®âáâ㯠¤® ­ ¤¯¨á¨*à §¬¥à ª¢ ¤à â ',\
<40, 50, 60, 80,100,120,180,190, 0, 0, 0>,\
< 9, 15, 16, 25, 25, 25, 4, 26, 27, -1, -1>
ObjOpt C_CB, 1,1,'”« ¦®ª','***¯®¤¯¨áì*梥â ä®­  ¢­ãâà¨*梥â à ¬ª¨ ¨ ¢­ãâà. £ «®çª¨*梥â ⥪áâ *®âáâ㯠¤® ­ ¤¯¨á¨*à §¬¥à ª¢ ¤à â ',\
<40, 50, 60,120,140,160,180,190, 0, 0, 0>,\
< 8, 15, 16, 4, 25, 25, 25, 26, 27, -1, -1>
ObjOpt C_TT, 1,0,'asm ª®¤','',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_VR, 0,0,'¥à¥¬¥­­ ï','¨¬ï ¯¥à¥¬¥­­®©*§­ ç¥­¨¥ ¯® 㬮«ç ­¨î*ª®¬¬¥­â à¨©',\
<40, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 0, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_WI, 1,1,'Žª­®','**®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â *梥⠪«¨¥­â᪮© ®¡« áâ¨*梥⠧ £®«®¢ª  (¥á«¨ ¥áâì)',\
<98,100,110,120,130,150,170, 0, 0, 0, 0>,\
<12, -1, 15, 16, 26, 27, 25, 25, -1, -1, -1>
ObjOpt C_CO, 1,0,'Š®¬¬¥­â à¨©','áâப  ª®¬¬¥­â à¨ï',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_IN, 1,0,'‚ª«î祭¨¥ ä ©« ','¨¬ï ä ©« *ª®¬¬¥­â à¨©',\
<100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_TD, 0,0,'’¨¯ ¤ ­­®£®','',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
< 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt C_DT, 1,1,'¨á®¢ ­¨¥ ⥪áâ ','***梥â ⥪áâ *梥â ä®­  (¥á«¨ ¥áâì)',\
<40, 50, 60, 80, 0, 0, 0, 0, 0, 0, 0>,\
< 4, 15, 16, 25, 25, -1, -1, -1, -1, -1, -1>
ObjOpt C_RE, 1,1,'àאַ㣮«ì­¨ª','梥â*®âáâ㯠᫥¢ *®âáâ㯠ᢥàåã*è¨à¨­ *¢ëá®â ',\
<20, 40, 60, 80, 0, 0, 0, 0, 0, 0, 0>,\
<25, 15, 16, 26, 27, -1, -1, -1, -1, -1, -1>
ObjOpt C_KE, 1,0,'‘®¡ë⨥ ­  ª« ¢¨ âãàã','',\
< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
ObjOpt 0x0d, 1,0, '-','',\
<20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>,\
<-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1>
 
 
 
/programs/develop/kol_f_edit/oper.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/develop/kol_f_edit/readme.htm
0,0 → 1,69
<html>
<head>
<title>Îãëàâëåíèå</title>
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
<style>
body
{
font-size: 15px;
font-family: "Bookman Old Style";
color: black;
text-align: justify;
}
h1 { color: green; font-size: 23px; }
h2 { color: green; font-size: 21px; }
h3 { color: green; font-size: 19px; }
h4 { color: #803f00; font-size: 17px; }
i { color: #0099cc; }
b { color: #0099cc; }
p {
text-indent: 1em;
margin-top: 3px;
margin-bottom: 2px;
margin-left: 0px;
margin-right: 0px;
}
ol, ul, dl{
margin-top: 3px;
margin-bottom: 2px;
}
pre
{
padding: 2px;
padding-left: 20px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 0px;
margin-right: 0px;
font-family: "Courier New";
font-size: 15px;
color: #004000;
background-color: #ffd0ff;
}
table
{
font-size: 15px;
}
</style>
</head>
 
<body>
<h1>Kol_f_edit âåðñèÿ îò 11.11.2010</h1>
<h2>Î ïðîãðàììå</h2>
<p>Ïðîãðàììà äëÿ àâòîìàòèçàöèè ñîçäàíèÿ èíòåðôåéñà.
Ìíîãèå ôóíêöèè ïðîãðàììû ïîêà åùå íå ñäåëàíû, ïîòîìó âîçìîæíîñòè åå ïðàêòè÷åñêîãî èñïîëüçîâàíèÿ ìèíèìàëüíûå.
Ëèöåíçèÿ ñâîáîäíàÿ.</p>
<p><img src="about.png"></p>
<p>Âíåøíèé âèä ïðîãðàììû.</p>
 
<h2>Àëãîðèòì ðàáîòû ñ ïðîãðàììîé</h2>
<p>1) Îòêðûâàåì øàáëîí ïðîãðàììû èç ôàéëà <b>min_prog.ced</b> (<i>ïîêà îí òîëüêî îäèí, äàëüøå ïëàíèðóåòüñÿ äîáàâëåíèå äðóãèõ øàáëîíîâ</i>)</p>
<p>2) Ðåäàêòèðóåì îáúåêòû â ôàéëå <b>min_prog.ced</b> (<i>áîëåå ïîäðîáíûå èíñòðóêöèè ïî ðåäàêòèðîâàíèþ äîáàâëþ êîãäà ïðîãðàììà áóäåò ãîòîâà</i>)</p>
<p>3) Ñîçäàåì <b>*.asm</b> êîä â òåêñòîâîì îêíå êíîïêîé íà ïàíåëè. Ñîõðàíÿåì <b>*.asm</b> êîä íà äèñê (<i>ðàáîòîñïîñîáíîñòü ïîëó÷èâøåãîñÿ ôàéëà íå ãàðàíòèðóåòñÿ, ò. ê. ìíîãèå ýëåìåíòû åùå äîêîíöà íå çàïðîãðàìèðîâàíû</i>)</p>
<p>4) Ðåäàêòèðóåì ïîëó÷èâøèéñÿ <b>*.asm</b> ôàéë ëþáûì òåêñòîâûì ðåäàêòîðîì</p>
 
<h2>Àâòîð</h2>
<p>Èãîðü À. (IgorA) - ðàçðàáîòêà ïðîãðàììû.</p>
 
</body>
</html>
/programs/develop/kol_f_edit/strlen.inc
0,0 → 1,45
; strlen function
;
; Copyright (c) 2003 Thomas Mathys
; killer@vantage.ch
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
;
;%ifndef _STRLEN_INC
;%define _STRLEN_INC
 
 
;********************************************************************
; returns the length of an asciiz string
; input : esi = pointer to string
; output : eax = string length
; destroys : nothing
;********************************************************************
strlen:
push ecx
push edi
pushfd
cld ; !
mov ecx,-1
mov edi,esi ; find terminating zero
xor al,al
repne scasb
mov eax,edi ; calculate string length
sub eax,esi
dec eax
popfd
pop edi
pop ecx
ret
/programs/develop/kol_f_edit/tl_sys_16.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property