From 6db5aa0119f4d2f6656b74a8fb91bf23bfc35fb8 Mon Sep 17 00:00:00 2001 From: IgorA Date: Sun, 30 May 2010 21:27:14 +0000 Subject: [PATCH] 1) removed duplicate code in 'box_lib' 2) add program 'TextEditor syntax file editor' git-svn-id: svn://kolibrios.org@1476 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../libraries/box_lib/trunk/box_lib.mac | 12 + .../libraries/box_lib/trunk/checkbox.mac | 14 - .../box_lib/trunk/doc/t_edit/t_edit.htm | 23 +- .../libraries/box_lib/trunk/editbox.mac | 46 -- .../libraries/box_lib/trunk/optionbox.mac | 12 - .../libraries/box_lib/trunk/readme.txt | 31 +- programs/other/t_edit/info/ini_files.syn | Bin 0 -> 997 bytes programs/other/t_edit_synt/build.bat | 12 + programs/other/t_edit_synt/readme.htm | 153 +++++++ programs/other/t_edit_synt/te_data.inc | 393 ++++++++++++++++ programs/other/t_edit_synt/te_syntax.asm | 376 +++++++++++++++ programs/other/t_edit_synt/te_syntax.png | Bin 0 -> 18150 bytes programs/other/t_edit_synt/te_work.inc | 428 ++++++++++++++++++ 13 files changed, 1394 insertions(+), 106 deletions(-) create mode 100644 programs/other/t_edit/info/ini_files.syn create mode 100644 programs/other/t_edit_synt/build.bat create mode 100644 programs/other/t_edit_synt/readme.htm create mode 100644 programs/other/t_edit_synt/te_data.inc create mode 100644 programs/other/t_edit_synt/te_syntax.asm create mode 100644 programs/other/t_edit_synt/te_syntax.png create mode 100644 programs/other/t_edit_synt/te_work.inc diff --git a/programs/develop/libraries/box_lib/trunk/box_lib.mac b/programs/develop/libraries/box_lib/trunk/box_lib.mac index 4f35751da6..8034c427ac 100644 --- a/programs/develop/libraries/box_lib/trunk/box_lib.mac +++ b/programs/develop/libraries/box_lib/trunk/box_lib.mac @@ -168,6 +168,18 @@ op_flag_en=10b .flags: dd flags+0 ; 䫠 } +option_group equ [edi] +op_left equ [edi+4] ;न 砫 ᮢ +op_top equ [edi+6] ;न 砫 ᮢ +op_text_margin equ [edi+8] ;=4 ﭨ אַ㣮쭨 祪 +op_size equ [edi+12] ;12 ࠧ 祪 +op_color equ [edi+16] +op_border_color equ [edi+20] ; or [edi+4] ;梥 ࠬ checkbox ᠬ⥫쭮 +op_text_color equ [edi+24];[edi+4] ;梥 ⥪ +op_text_ptr equ [edi+28] ;㪠⥫ 砫 ⥪⮢ ப +op_text_length equ [edi+32] +op_flags equ [edi+36] ;䫠 + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Basic macros for use TreeList ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/programs/develop/libraries/box_lib/trunk/checkbox.mac b/programs/develop/libraries/box_lib/trunk/checkbox.mac index 99ada116ff..19424bccb5 100644 --- a/programs/develop/libraries/box_lib/trunk/checkbox.mac +++ b/programs/develop/libraries/box_lib/trunk/checkbox.mac @@ -2,20 +2,6 @@ ; box_lib.obj ;Checkbox -ch_struc_size=36 -ch_flag_en=10b ; - -ch_left equ [edi] ; -ch_top equ [edi+2] ; -ch_text_margin equ [edi+4] ;=4 -ch_size equ [edi+8] ;12 -ch_color equ [edi+12] ; checkbox -ch_border_color equ [edi+16] ; or [edi+4] ; checkbox -ch_text_color equ [edi+20] ;[edi+4] ; -ch_text_ptr equ [edi+24] ; -ch_text_length equ [edi+28] -ch_flags equ [edi+32] ; - macro use_checkbox_draw { check_box_draw: diff --git a/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm b/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm index 88668441b7..98ee2d4dd1 100644 --- a/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm +++ b/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm @@ -41,27 +41,18 @@

tedit

-

text_editor , .

+

text_editor , .

, text_editor.

-

+

-

- - -

+

( ), , .

@@ -81,10 +72,10 @@ ends , ( "" ).

'td' - , , , .

-

'col' - .

+

'col' - , ted_text_colors.

-

:

+

:

ted_but_copy

Ctrl+C. ted_buffer, ted_buffer_size.

@@ -280,7 +271,7 @@ stdcall [ted_text_add], tedit0,text_buffer,30,ebx call [ted_text_colored] pop edi -

:

+

:

ted_get_text_perv_pos - ( 'perv')

ted_get_text_next_pos - ( 'next')

ted_symbol_not_vis - ( @@ -383,7 +374,7 @@ tedit0: ; .increase_size dd 225 ;+242 .ptr_free_symb dd ? ;+246 , ( )


-

17.05.10.

+

30.05.10.

\ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/editbox.mac b/programs/develop/libraries/box_lib/trunk/editbox.mac index 10a94db0d1..dbe29980de 100644 --- a/programs/develop/libraries/box_lib/trunk/editbox.mac +++ b/programs/develop/libraries/box_lib/trunk/editbox.mac @@ -1,27 +1,6 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Basic macros for use editbox ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -ed_width equ [edi] ;ਭ -ed_left equ [edi+4] ; -ed_top equ [edi+8] ; -ed_color equ [edi+12] ;梥 䮭 -shift_color equ [edi+16] ;=0x6a9480 ਬ 쥬 梥 -ed_focus_border_color equ [edi+20] ;梥 ࠬ -ed_blur_border_color equ [edi+24] ;梥 ⨢ -ed_text_color equ [edi+28] ;梥 ⥪ -ed_max equ [edi+32] ;- ᨬ ᨬ쭮 -ed_text equ [edi+36] ;㪠⥫ -ed_mouse_variable equ [edi+40] ; 㪠⥫ ६ /㯯 -ed_flags equ [edi+44] ;䫠 -bp_flags equ [ebp+44] ; 楤 edi ᯮ, 㪠⥫ ࠭ ebp -ed_size equ [edi+48] ;- ᨬ -bp_size equ [ebp+48] ;- ᨬ, 樨 ᯫ ebp edi -ed_pos equ [edi+52] ; -ed_offset equ [edi+56] ;ᬥ饭 -cl_curs_x equ [edi+60] ;।饥 न -cl_curs_y equ [edi+64] ;।饥 न -ed_shift_pos equ [edi+68] ; -ed_shift_pos_old equ [edi+72] ;஥ macro init_editbox { @@ -1334,29 +1313,4 @@ struc edit_box width,left,top,color,shift_color,focus_border_color,\ .cl_curs_y dd 0 .shift dd 0 .shift_old dd 0 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;Bit mask from editbox -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -ed_figure_only= 1000000000000000b ; ᨬ -ed_always_focus= 100000000000000b -ed_focus= 10b ;䮪 ਫ -ed_shift_on= 1000b ;᫨ ⠭ - shift,᫨ ⠭, 㦥 - 㤥ন shift -ed_shift_on_off=1111111111110111b -ed_shift= 100b ;砥 ⨨ shift .. ᫨ -ed_shift_off= 1111111111111011b -ed_shift_bac= 10000b ; ⪨ 뤥 shift .. ⠭ 뤥 -ed_shift_bac_cl=1111111111101111b ;⪠ 㤠 뤥 -ed_shift_cl= 1111111111100011b -ed_shift_mcl= 1111111111111011b -ed_left_fl= 100000b -ed_right_fl= 1111111111011111b -ed_offset_fl= 1000000b -ed_offset_cl= 1111111110111111b -ed_insert= 10000000b -ed_insert_cl= 1111111101111111b -ed_mouse_on = 100000000b -ed_mous_adn_b= 100011000b -ed_mouse_on_off=1111111011111111b -ed_height=14 ; - } diff --git a/programs/develop/libraries/box_lib/trunk/optionbox.mac b/programs/develop/libraries/box_lib/trunk/optionbox.mac index 43e38e6dfd..b217da84d6 100644 --- a/programs/develop/libraries/box_lib/trunk/optionbox.mac +++ b/programs/develop/libraries/box_lib/trunk/optionbox.mac @@ -65,18 +65,6 @@ option_box_mouse: macro use_optionbox_draw { option_box_draw_box: -option_group equ [edi] -op_left equ [edi+4] ;न 砫 ᮢ -op_top equ [edi+6] ;न 砫 ᮢ -op_text_margin equ [edi+8] ;=4 ﭨ אַ㣮쭨 祪 -op_size equ [edi+12] ;12 ࠧ 祪 -op_color equ [edi+16] -op_border_color equ [edi+20] ; or [edi+4] ;梥 ࠬ checkbox ᠬ⥫쭮 -op_text_color equ [edi+24];[edi+4] ;梥 ⥪ -op_text_ptr equ [edi+28] ;㪠⥫ 砫 ⥪⮢ ப -op_text_length equ [edi+32] -op_flags equ [edi+36] ;䫠 - pusha ;࠭ ॣ movzx ebx,word op_left diff --git a/programs/develop/libraries/box_lib/trunk/readme.txt b/programs/develop/libraries/box_lib/trunk/readme.txt index d0bef2ca60..b3e5e0416e 100644 --- a/programs/develop/libraries/box_lib/trunk/readme.txt +++ b/programs/develop/libraries/box_lib/trunk/readme.txt @@ -1,25 +1,20 @@ , . editbox , EditBox . - 14.10.2009 - . edit_box mouse_dd dd ? + +21.09.2007 - stdcall. + , , . + box_lib.obj editbox_ex, /sys/lib/? ini_file . , +24.09.2007 - checkbox. , :( + +25.06.2008 - 2- +1. /sys/lib/box_lib.obj . + +08.05.2009 - +15.04.2009 - load_lib.mac - /. +13.09.2009 - NUM, Caps,Scroll Lock. , . +14.10.2009 - . edit_box mouse_dd dd ? 1 < mouse_dd> ed_struc_size=76 struc edit_box width,left,top,color,shift_color,focus_border_color,\ blur_border_color,text_color,max,text,< mouse_dd>,flags,size,pos - - - - 25.06.2008 - 2- -1. /sys/lib/box_lib.obj . - - 21.09.2007 - stdcall. - , , . - box_lib.obj editbox_ex, /sys/lib/? ini_file -. , -08.05.2009 - -15.04.2009 - load_lib.mac - /. -13.09.2009 - NUM, Caps,Scroll Lock. , . -24.09.2007 - checkbox. , :( \ No newline at end of file diff --git a/programs/other/t_edit/info/ini_files.syn b/programs/other/t_edit/info/ini_files.syn new file mode 100644 index 0000000000000000000000000000000000000000..096d2900894f859aa02807b2540f93d674c0e724 GIT binary patch literal 997 zcmb8mJr2S!3aHDJeCMBa&oJ2}wHVEK8PI;(rHfNo|?BT5GL1voITiuTX6{zT^0w;|Go(Iey~! znd29ZUpamwI54>r+&rc>hF<$oVb-|TMjuokg}(;-^sdo(;jQ(9(^xUWyS~%v!oxc< F96yqbBV7Oh literal 0 HcmV?d00001 diff --git a/programs/other/t_edit_synt/build.bat b/programs/other/t_edit_synt/build.bat new file mode 100644 index 0000000000..8b8cd29449 --- /dev/null +++ b/programs/other/t_edit_synt/build.bat @@ -0,0 +1,12 @@ +if not exist bin mkdir bin +if not exist bin\tl_sys_16.bmp @copy ..\..\develop\libraries\box_lib\trunk\tl_sys_16.bmp bin\tl_sys_16.bmp +if not exist bin\tl_nod_16.bmp @copy ..\..\develop\libraries\box_lib\trunk\tl_nod_16.bmp bin\tl_nod_16.bmp +if not exist bin\info mkdir bin\info +copy ..\t_edit\info\* bin\info\* + +if not exist bin\box_lib.obj @fasm.exe -m 16384 ..\..\develop\libraries\box_lib\trunk\box_lib.asm bin\box_lib.obj +@kpack bin\box_lib.obj + +@fasm.exe -m 16384 te_syntax.asm bin\te_syntax.kex +@kpack bin\te_syntax.kex +pause \ No newline at end of file diff --git a/programs/other/t_edit_synt/readme.htm b/programs/other/t_edit_synt/readme.htm new file mode 100644 index 0000000000..2abe479263 --- /dev/null +++ b/programs/other/t_edit_synt/readme.htm @@ -0,0 +1,153 @@ + + + + + + + + +

TextEditor syntax file converter 31.05.2010

+

+

*.syn.

+

+

.

+ +

+

te_synt.kex t_edit.kex.

+

1) .syn

+

2) .asm

+

3) .asm , :

+
    +
  • +
  • ( ascii )
  • +
  • +
+

4) fasm

+

5) .bin .syn

+

3- , , .

+ +

*.asm

+

count_colors_text -

+

count_key_words -

+

:

+

color_cursor -

+

color_wnd_capt -

+

color_wnd_work -

+

color_wnd_bord -

+

color_select -

+

color_cur_text -

+

color_wnd_text -

+ +

text - . wo:

+
macro wo txt,lf1,p1,p2,p3{
+@@: db txt
+rb @b+40-$
+dd lf1
+db p1,p2+0,p3
+}
+

:

+

txt -

+

lf1 - f1

+

p1 - . 5 , :

+
    +
  • 20=1 - ,
  • +
  • 21=2 - ,
  • +
  • 23=4 - ,
  • +
  • 24=8 - ,
  • +
  • 25=16 - .
  • +
+

p2 - ascii . , , : , . 2- 4 = 22.

+

p3 - color_wnd_text,

+ +

1. or, - , : form, color p2 0 1 3 = 20+21 = 1+2.

+

2. , :

+
wo<'word'>,f1.600-f1,3,,8
+wo<'xadd'>,0,3,,1
+wo<'xchg'>,f1.602-f1,3,,1
+wo<'xlat'>,0,3,,1
+wo<'xlatb'>,0,3,,1
+wo<'xmm0'>,0,3,,2
+wo<'xmm1'>,0,3,,2
+wo<'xmm2'>,0,3,,2
+wo<'xmm3'>,0,3,,2
+wo<'xmm4'>,0,3,,2
+wo<'xmm5'>,0,3,,2
+wo<'xmm6'>,0,3,,2
+wo<'xmm7'>,0,3,,2
+wo<'xor'>,f1.613-f1,3,,1
+wo<'zf'>,f1.614-f1,3,,2
+wo<'||'>,0,0,,1
+

p2 3-, 0, .

+ +

*.syn

+ + + + + + + + + + + + + + + + +
()
4
4
4*6
4*(. . )
sizeof(TexColViv)*(. )
, ( 0)
1 
( 0- )
(   + 1)
+

.

+
    +
  • ASCII . + .
  • +
+ +
+

+

. (IgorA) - .

+ + + \ No newline at end of file diff --git a/programs/other/t_edit_synt/te_data.inc b/programs/other/t_edit_synt/te_data.inc new file mode 100644 index 0000000000..61333f32bf --- /dev/null +++ b/programs/other/t_edit_synt/te_data.inc @@ -0,0 +1,393 @@ +fn_col_option dd def_col_file +fn_syntax_dir db 'info/',0 +def_col_file db 'default.syn',0 + +system_dir0 db '/sys/lib/' +boxlib_name db 'box_lib.obj',0 + +fn_icon_tl_sys db 'tl_sys_16.bmp',0 +fn_icon_tl_nod db 'tl_nod_16.bmp',0 +;--------------------------------------------------------------------- + +align 4 +myimport: +edit_box_draw dd aEdit_box_draw +edit_box_key dd aEdit_box_key +edit_box_mouse dd aEdit_box_mouse +version_ed dd aVersion_ed + +;check_box_draw dd aCheck_box_draw +;check_box_mouse dd aCheck_box_mouse +;version_ch dd aVersion_ch + +;option_box_draw dd aOption_box_draw +;option_box_mouse dd aOption_box_mouse +;version_op dd aVersion_op + +scrollbar_ver_draw dd aScrollbar_ver_draw +scrollbar_ver_mouse dd aScrollbar_ver_mouse +scrollbar_hor_draw dd aScrollbar_hor_draw +scrollbar_hor_mouse dd aScrollbar_hor_mouse +version_scrollbar dd aVersion_scrollbar + +;dinamic_button_draw dd aDbutton_draw +;dinamic_button_mouse dd aDbutton_mouse +;version_dbutton dd aVersion_dbutton + +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_move_down dd sz_tl_node_move_down +tl_save_mem dd sz_tl_save_mem +tl_load_mem dd sz_tl_load_mem + +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 + +aEdit_box_draw db 'edit_box',0 +aEdit_box_key db 'edit_box_key',0 +aEdit_box_mouse db 'edit_box_mouse',0 +aVersion_ed db 'version_ed',0 + +;aCheck_box_draw db 'check_box_draw',0 +;aCheck_box_mouse db 'check_box_mouse',0 +;aVersion_ch db 'version_ch',0 + +;aOption_box_draw db 'option_box_draw',0 +;aOption_box_mouse db 'option_box_mouse',0 +;aVersion_op db 'version_op',0 + +aScrollbar_ver_draw db 'scrollbar_v_draw',0 +aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 +aScrollbar_hor_draw db 'scrollbar_h_draw',0 +aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 +aVersion_scrollbar db 'version_scrollbar',0 + +;aDbutton_draw db 'dbutton_draw',0 +;aDbutton_mouse db 'dbutton_mouse',0 +;aVersion_dbutton db 'version_dbutton',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_move_down db 'tl_node_move_down',0 +sz_tl_save_mem db 'tl_save_mem',0 +sz_tl_load_mem db 'tl_load_mem',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 +ws_dir_lbox: ; ListBox +.x: +.size_x dw 16 ;+0 +.start_x dw 0 ;+2 +.y: +.size_y dw 30 ;+4 +.start_y dw 70 ;+6 +.btn_high dd 15 ;+8 +.type dd 1 ;+12 +.max_area dd 100 ;+16 +.cur_area dd 30 ;+20 +.position dd 0 ;+24 +.bckg_col dd 0xeeeeee ;+28 +.frnt_col dd 0xbbddff ;+32 +.line_col dd 0 ;+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 +;--------------------------------------------------------------------- + +count_of_dir_list_files equ 15 + +el_focus dd 0 +mouse_dd dd 0 + +tree1 tree_list 264,count_of_dir_list_files+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\ + 16,16, 0x8080ff,0x0000ff,0xffffff, 5,5,180-17,185, 12,0,0, el_focus,\ + ws_dir_lbox,0 + +;dir_list memory +tree_file_struct: + dd 1 + dd 0,0,count_of_dir_list_files + dd dir_mem + db 0 + dd file_name ;sys_path + +dir_mem rb 32+304*count_of_dir_list_files + +;------------------------------------------------------------------------------ +struct TexSelect + x0 dd ? + y0 dd ? + x1 dd ? + y1 dd ? +ends +;------------------------------------------------------------------------------ +align 4 +tedit0: ; ⥪⮢ । + .wnd BOX 195,5+20,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 500 ;+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 buf ;+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 0 ;+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 +.cur_area dd 30 ;+20 +.position dd 0 ;+24 +.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 +.cur_area dd 30 ;+20 +.position dd 0 ;+24 +.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 +str_file_70: + rb (5*4+1+4) ; ࠡ 䠩 (. 70) + +text_buffer db 500 dup(0) + +align 4 +;conv_tabl rb 128 ;⠡ ஢ scan- ascii- +buf db BUF_SIZE dup(0) ; ஢ | ⠢ + +capt_header db 'macro wo txt,lf1,p1,p2,p3{',13 + db '@@: db txt',13,'rb @b+40-$',13,'dd lf1',13,'db p1,p2+0,p3',13,'}',13 + db 'count_colors_text dd (text-color_wnd_text)/4',13 + db 'count_key_words dd (f1-text)/47',13,0 +col_1 db 'color_cursor dd ',0 ;+ 98 梥 +col_2 db 'color_wnd_capt dd ',0 ;+102 梥 +col_3 db 'color_wnd_work dd ',0 ;+106 梥 䮭 +col_4 db 'color_wnd_bord dd ',0 ;+110 梥 ⥪ +col_5 db 'color_select dd ',0 ;+114 梥 뤥 +col_6 db 'color_cur_text dd ',0 ;+118 梥 ᨬ ஬ +col_7 db 'color_wnd_text:',13,0 ;+122 梥 ⥪ + +capt_lbl_wo db 'text:',13,0 +capt_beg_word db 'wo<',39,0 +capt_beg_db db ':db ',39,0 +capt_end_word db 39,'>,',0 +capt_type_dd db 9,'dd ',0 +capt_lbl_f1 db 'f1: db 0',13,0 +capt_end_word_f1 db 39,',0',13,0 +capt_calc_f1 db 'f1' +capt_point db '.',0 +capt_lbl_f1_use db '-f1',0 +capt_null db '0',0 + +KM_SHIFT equ 0x00010000 +KM_CTRL equ 0x00020000 +KM_ALT equ 0x00040000 +KM_NUMLOCK equ 0x00080000 + +; KEY CODES +KEY_F1 equ 0x0000003B +KEY_F2 equ 0x0000003C +KEY_F3 equ 0x0000003D + diff --git a/programs/other/t_edit_synt/te_syntax.asm b/programs/other/t_edit_synt/te_syntax.asm new file mode 100644 index 0000000000..8c34d046be --- /dev/null +++ b/programs/other/t_edit_synt/te_syntax.asm @@ -0,0 +1,376 @@ +use32 + org 0x0 + db 'MENUET01' ;. ᯮ塞 䠩 ᥣ 8 + dd 0x01 + dd start + dd i_end ; ࠧ ਫ + dd mem + dd stacktop + dd file_name;buf_cmd_lin + dd sys_path + +MAX_COLOR_WORD_LEN equ 40 +BUF_SIZE equ 1000 ;buffer for copy|paste +maxSyntaxFileSize equ 310000 + +include '../../macros.inc' +include '../../proc32.inc' +include '../../develop/libraries/box_lib/load_lib.mac' +include '../../develop/libraries/box_lib/trunk/box_lib.mac' + +include 'te_data.inc' +include 'te_work.inc' ;text work functions + +@use_library + +align 4 +start: + mov eax,48 + mov ebx,3 + mov ecx,sc + mov edx,sizeof.system_colors + mcall + + mcall 68,11 + or eax,eax + jz button.exit + + mcall 40,0x27 + +;------------------------------------------------- + mov ecx,maxSyntaxFileSize + call mem_Alloc + mov [options_file],eax + mov [options_file_end],eax + add [options_file_end],ecx + + +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 +@@: + +;--------------------------------------------------------------------- + stdcall dword[tl_data_init],dword tree1 + copy_path fn_icon_tl_sys,sys_path,file_name,0 + + mov ecx,3*256*13 + call mem_Alloc + mov dword[tree1.data_img_sys],eax + + mov [run_file_70.Function], 0 + mov [run_file_70.Position], 54 + mov [run_file_70.Flags], 0 + mov [run_file_70.Count], 3*256*13 + mov [run_file_70.Buffer], eax + mov byte[run_file_70+20], 0 + mov [run_file_70.FileName], file_name + + mov eax,70 ;load icon file + mov ebx,run_file_70 + int 0x40 + cmp ebx,0 + jg @f + mov dword[tree1.data_img_sys],0 + @@: +;--------------------------------------------------------------------- +; ⠥ bmp 䠩 㧫 + copy_path fn_icon_tl_nod,sys_path,file_name,0 + + mov ecx,3*256*2 + call mem_Alloc + mov dword[tree1.data_img],eax + +; mov [run_file_70.Function], 0 +; mov [run_file_70.Position], 54 +; mov [run_file_70.Flags], 0 + mov [run_file_70.Count], 3*256*2 + mov [run_file_70.Buffer], eax +; mov byte[run_file_70+20], 0 +; mov [run_file_70.FileName], file_name + + mov eax,70 ;load icon file + mov ebx,run_file_70 + int 0x40 + cmp ebx,0 + jg @f + mov dword[tree1.data_img],0 + @@: +;------------------------------------------------------------------------------ + copy_path fn_syntax_dir,sys_path,file_name,0 ;६ 䠩 ᨭ⠪ + mov eax,70 + mov ebx,tree_file_struct + int 0x40 + +cmp ebx,-1 +je .end_dir_init + + mov eax,dir_mem + add eax,32+4+1+3+4*6+8 +mov ecx,ebx +@@: + cmp byte[eax],'.' ;䨫㥬 䠩 '.' '..' + je .filter + push dword tree1 + push dword 0x10000 ;1*2^16 - 1 + push dword eax + call dword[tl_node_add] + + stdcall dword[tl_cur_next],tree1 + .filter: + add eax,304 + loop @b +.end_dir_init: + +;--- load color option file --- +stdcall [ted_init], tedit0 + +align 4 +red_win: + pushad + mcall 12,1 + + xor eax,eax + mov ebx,10*65536+555 + mov ecx,10*65536+333 + mov edx,[sc.work] + or edx,0x33000000 + mov edi,hed + mcall + + mcall 9,procinfo,-1 + + mov eax,8 ; + mov ebx,5*65536+90 + mov ecx,195*65536+20 + mov edx,200 + mov esi,[sc.work_button];0xd0 + mcall + +; mov eax,8 + mov ebx,100*65536+85 + mov ecx,195*65536+20 + mov edx,201 + mov esi,0xd00000 + mcall + + mov eax,4 ;ᮢ ⥪ + mov ebx,10*65536+200 + mov ecx,[sc.work_button_text] + or ecx,0x80000000 + mov edx,txt122 + mcall + + mov ebx,105*65536+200 + mov ecx,0xffff00 + or ecx,0x80000000 + mov edx,txt148 + mcall + + mov ebx,195*65536+10 + mov ecx,[sc.work_text] + or ecx,0x80000000 + mov edx,txt_out_file + mcall + + stdcall [edit_box_draw],dword edit1 + stdcall [tl_draw],dword tree1 + + ;scroll 1 + mov [ws_dir_lbox.all_redraw],1 + stdcall [scrollbar_ver_draw],dword ws_dir_lbox + stdcall [ted_draw], tedit0 + + mcall 12,2 + popad + +align 4 +still: + mcall 10 + + cmp al,1 ;. + jz red_win + cmp al,2 + jz key + cmp al,3 + jz button + cmp al,6 + jz mouse + + jmp still + + +align 4 +mouse: + stdcall [tl_mouse],tree1 + stdcall [edit_box_mouse],edit1 + stdcall [ted_mouse], tedit0 + jmp still + + +align 4 +key: + mcall 2 + stdcall [tl_key],tree1 + stdcall [edit_box_key],edit1 +;;;stdcall [ted_key], tedit0, conv_tabl,esi + jmp still + +align 4 +button: +; cmp [menu_active],1 ;᫨ , ᭠砫 ॠ +; jne @f ;mouse.menu_bar_1 +; mov [menu_active],0 +; jmp still +; @@: + + mcall 17 ; ⮩ + + cmp ah,200 + jne @f + call but_OpenSyntax + @@: + cmp ah,201 + jne @f + call but_SaveSyntax + @@: + + cmp ah,1 + jne still +.exit: + ;push eax + + mov ecx,[options_file] + call mem_Free + + stdcall [tl_data_clear], tree1 + stdcall [ted_delete], tedit0 + mcall -1 ;室 ணࠬ + +align 4 +but_OpenSyntax: + stdcall [tl_node_get_data],tree1 + pop dword [fn_col_option] + call InitColText + ret + +align 4 +but_SaveSyntax: + stdcall [ted_but_save_file], tedit0,run_file_70,[edit1.text] + ret + +align 4 +but_ctrl_o: + push eax + call get_wnd_in_focus + cmp eax,0 + je @f + stdcall [ted_open_file], eax,str_file_70,[edit1.text] + @@: + pop eax + ret + +;ᮧ 䠩 +align 4 +but_ctrl_n: + push eax + call get_wnd_in_focus + cmp eax,0 + je @f + stdcall [ted_clear], eax,1 + stdcall [ted_draw], eax + @@: + pop eax + ret + +;।塞 । 䮪 +align 4 +get_wnd_in_focus: + xor eax,eax + cmp dword[el_focus],tedit0 + jne @f + mov eax,tedit0 + @@: + ;cmp dword[el_focus],tedit1 + ;jne @f + ; mov eax,tedit1 + ;@@: + ret + +hed db 'TextEditor syntax file converter 31.05.10',0 ; + +txtErrOpen db ' 䠩, ஢ ࠢ쭮 ',0 +txtErrIni0 db ' 䠩 ',0 +err_ini0 db 0 + +txt122 db '. 䠩',0 +txt148 db '. 䠩',0 +txt_out_file db '. 䠩:',0 + +CAPT_PATH_WIDTH equ 50 +edit1 edit_box 305+16-CAPT_PATH_WIDTH, 215+CAPT_PATH_WIDTH, 5, 0xffffff, 0xff, 0xff0000, 0, 0x80, MAX_COLOR_WORD_LEN, ed_buffer.127, mouse_dd, 0 + +ed_buffer: ;⥪ edit + .127: rb MAX_COLOR_WORD_LEN+2 + +err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0 +head_f_i0: +head_f_l0 db 'System error',0 +err_message_import0 db 'Error on load import library box_lib.obj',0 +err_message_found_lib1 db 'Sorry I cannot found library msgbox.obj',0 + +;library structures +l_libs_start: + lib0 l_libs boxlib_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l0, myimport,err_message_import0, head_f_i0 +load_lib_end: + +;----------------------------------------------------------------------------- +;㭪 뤥 +;input: +; ecx = size data +;otput: +; eax = pointer to memory +align 4 +mem_Alloc: + push ebx + mov eax,68 + mov ebx,12 + int 0x40 + pop ebx + ret +;----------------------------------------------------------------------------- +;㭪 ᢮ +;input: +; ecx = pointer to memory +align 4 +mem_Free: + push eax ebx + cmp ecx,0 + jz @f + mov eax,68 + mov ebx,13 + int 0x40 + @@: + pop ebx eax + ret + +i_end: + rb 1024 + align 16 + procinfo process_information + thread: + rb 1024 +stacktop: + sys_path: + rb 4096 + file_name: + rb 4096 + file_name_rez: + rb 4096 + file_info: + rb 40 +mem: diff --git a/programs/other/t_edit_synt/te_syntax.png b/programs/other/t_edit_synt/te_syntax.png new file mode 100644 index 0000000000000000000000000000000000000000..5c85a91a4644bcaab916b7fea16c49ce2ff57260 GIT binary patch literal 18150 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

jd0r#;W{Yhw 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 Rw3z`2JYD@<);T3K0RU%IA6WnZ literal 0 HcmV?d00001 diff --git a/programs/other/t_edit_synt/te_work.inc b/programs/other/t_edit_synt/te_work.inc new file mode 100644 index 0000000000..66e77fcec9 --- /dev/null +++ b/programs/other/t_edit_synt/te_work.inc @@ -0,0 +1,428 @@ +struct FileInfoBlock + Function dd ? + Position dd ? + Flags dd ? + Count dd ? + Buffer dd ? + db ? + FileName dd ? +ends + +struct TexColViv + Text rb MAX_COLOR_WORD_LEN ; + f1 dd 0 + wwo db ? ; whole words only + endc db ? ; (wwo&4) + color db ? ; +ends + +count_colors_text dd 1 +ColWords dd 0 +color_cursor dd ? +color_wnd_capt dd ? +color_wnd_work dd ? +color_wnd_bord dd ? +color_select dd ? +color_cur_text dd ? +color_wnd_text dd ? + +options_file dd 0 +options_file_end dd 0 +tex_colors dd 0 +tex_help_f1 dd 0 + +Col dd 0 ; TexColViv + +keyUpr dd 0 +err_opn db 0 ; +err_sav db 0 ; + +sc system_colors + +run_file_70 FileInfoBlock + +align 4 +InitColText: + pushad + + mov ebx,dword[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 + 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 byte[run_file_70+20], 0 + mov [run_file_70.FileName], file_name + mov ebx,run_file_70 + int 0x40 + + + ;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 esi,[options_file] + mov edi,count_colors_text + mov ecx,9*4 + rep movsb + + mov eax,[options_file] + add eax,32 + mov dword[tex_colors],eax + + mov eax,dword[count_colors_text] ;init: Col (offset to key words) + add eax,8 + shl eax,2 + add eax,[options_file] + mov dword[Col],eax + + ;init: tex_help_f1 + mov ecx,dword[ColWords] + imul ecx,sizeof.TexColViv + add ecx,dword[Col] + mov dword[tex_help_f1],ecx + + ; + stdcall [ted_clear], tedit0,1 + + stdcall print_capt,capt_header + + stdcall print_capt,col_1 + stdcall print_color,[color_cursor] + stdcall print_capt,col_2 + stdcall print_color,[color_wnd_capt] + stdcall print_capt,col_3 + stdcall print_color,[color_wnd_work] + stdcall print_capt,col_4 + stdcall print_color,[color_wnd_bord] + stdcall print_capt,col_5 + stdcall print_color,[color_select] + stdcall print_capt,col_6 + stdcall print_color,[color_cur_text] + + stdcall print_capt,col_7 + mov ecx,[count_colors_text] ; + mov eax,[tex_colors] + @@: + stdcall print_capt,capt_type_dd + stdcall print_color,[eax] + add eax,4 + loop @b + + stdcall print_capt,capt_lbl_wo + mov ecx,dword[ColWords] + mov eax,[Col] + xor ebx,ebx + @@: + inc ebx + stdcall print_word,eax,ebx + add eax,sizeof.TexColViv + loop @b + + stdcall print_capt,capt_lbl_f1 + mov ecx,dword[ColWords] + mov eax,[Col] + xor ebx,ebx + @@: + inc ebx + stdcall print_word_f1,eax,ebx + add eax,sizeof.TexColViv + loop @b + + stdcall [ted_init_scroll_bars], tedit0,4 + stdcall [ted_draw], tedit0 + + .no_colors: + popad + ret + +align 4 +proc print_color, color:dword + pushad + mov eax,dword[color] + + mov ebx,eax ; red blue + shr ebx,16 + xchg al,bl + and eax,0xffff + and ebx,0xff + shl ebx,16 + or eax,ebx + + ror al,4 + ror eax,8 + ror al,4 + ror eax,8 + ror al,4 + rol eax,16 + mov edi,text_buffer + mov word[edi],'0x' + add edi,2 + mov ecx,6 + @@: + mov ebx,eax + and ebx,0xf + cmp bx,9 + jle .cifra + add bx,39 + .cifra: + add bx,48 + mov byte[edi],bl + inc edi + shr eax,4 + loop @b + mov byte[edi],13 + mov ebx,ted_opt_ed_change_time+ted_opt_ed_move_cursor + stdcall [ted_text_add], tedit0,text_buffer,9,ebx + popad + ret +endp + +align 4 +proc print_capt, capt:dword + pushad + mov esi,dword[capt] + stdcall str_len,esi + stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor + popad + ret +endp + +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,dword[text] + stdcall code_string,edi,esi ; + stdcall str_cat,esi,capt_end_word + + cmp dword[edi+MAX_COLOR_WORD_LEN],0 ;f1 + je @f + stdcall str_cat,esi,capt_calc_f1 + stdcall str_cat_value,esi,[index] + stdcall str_cat,esi,capt_lbl_f1_use + jmp .end_f1_calc + @@: + stdcall str_cat,esi,capt_null + .end_f1_calc: + + 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],',' +inc edi +mov byte[edi],0 + xor eax,eax + mov al,byte[ecx+MAX_COLOR_WORD_LEN+4] ;wwo + stdcall str_cat_value,edi,eax + stdcall str_len,edi + add edi,eax + mov byte[edi],',' + inc edi + + xor eax,eax + mov al,byte[ecx+MAX_COLOR_WORD_LEN+4+1] ;endc + cmp al,0 + je @f + stdcall str_cat_value,edi,eax + stdcall str_len,edi + add edi,eax + @@: + mov byte[edi],',' + inc edi + + xor eax,eax + mov al,byte[ecx+MAX_COLOR_WORD_LEN+4+2] ;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 esi,text_buffer + stdcall str_len,esi + stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_move_cursor + + popad + ret +endp + +align 4 +proc print_word_f1, text:dword, index:dword + pushad + mov edi,dword[text] + mov esi,dword[edi+MAX_COLOR_WORD_LEN] ;f1 + cmp esi,0 + je @f + mov ebx,text_buffer + mov byte[ebx],0 + stdcall str_cat,ebx,capt_point + stdcall str_cat_value,ebx,[index] + stdcall str_cat,ebx,capt_beg_db + stdcall str_len,ebx + add ebx,eax + + add esi,dword[tex_help_f1] + stdcall code_string,esi,ebx ; + stdcall str_cat,ebx,capt_end_word_f1 + + mov ebx,text_buffer + stdcall str_len,ebx + stdcall [ted_text_add], tedit0,ebx,eax,ted_opt_ed_move_cursor + @@: + popad + ret +endp + +align 4 +proc code_string, text:dword, out_text:dword + pushad + mov esi,dword[text] + stdcall str_len,esi + mov ecx,eax + mov edi,dword[out_text] + + .copy: + mov al,byte[esi] + inc esi + cmp al,9 + je @f + cmp al,13 + je @f + cmp al,39 + je @f + mov byte[edi],al + inc edi + loop .copy + jmp .end_copy + @@: + mov byte[edi],39 + mov byte[edi+1],',' + add edi,2 + and eax,0xff + mov dword[edi],0 + call tl_convert_to_str + stdcall str_len,edi + add edi,eax + mov byte[edi],',' + mov byte[edi+1],39 + add edi,2 + loop .copy + .end_copy: + mov byte[edi],0 + popad + 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