forked from KolibriOS/kolibrios
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
This commit is contained in:
parent
0d82157aac
commit
6db5aa0119
@ -168,6 +168,18 @@ op_flag_en=10b
|
|||||||
.flags: dd flags+0 ; ä« £¨
|
.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 ;
|
;Basic macros for use TreeList ;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
@ -2,20 +2,6 @@
|
|||||||
;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
|
;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
|
||||||
;Checkbox
|
;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
|
macro use_checkbox_draw
|
||||||
{
|
{
|
||||||
check_box_draw:
|
check_box_draw:
|
||||||
|
@ -41,27 +41,18 @@
|
|||||||
<p><a href="#struc_tedit">Структура tedit</a></p>
|
<p><a href="#struc_tedit">Структура tedit</a></p>
|
||||||
|
|
||||||
<h1><a name="vveden">Введение</a></h1>
|
<h1><a name="vveden">Введение</a></h1>
|
||||||
<p>Элемент text_editor позволяет работать с текстовыми файлами, содержит много функция для редактирования текста.</p>
|
<p>Элемент text_editor позволяет работать с текстовыми файлами, содержит много функций для редактирования текста.</p>
|
||||||
<p><img src="../../../../../../other/t_edit/t_edit.png"></p>
|
<p><img src="../../../../../../other/t_edit/t_edit.png"></p>
|
||||||
<p>Внешний вид программы, с элементом text_editor.</p>
|
<p>Внешний вид программы, с элементом text_editor.</p>
|
||||||
|
|
||||||
<h2>Возможности</h2>
|
<h2>Возможности элемента</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Открытие (Ctrl+O)/Сохранение файла.</li>
|
<li>Открытие (Ctrl+O)/Сохранение файла.</li>
|
||||||
<li>Редактирование: Повтор/Отмена действия (Ctrl+Z), Вырезать/Копировать (Ctrl+C)/Вставить (Ctrl+V), Поиск (Ctrl+F, F3).</li>
|
<li>Редактирование: Повтор/Отмена действия (Ctrl+Z), Вырезать/Копировать (Ctrl+C)/Вставить (Ctrl+V), Поиск (Ctrl+F, F3).</li>
|
||||||
<li>Выделение цветом слов, заданных в файле синтаксиса. Вывод справки по ним, если она есть (нажатием F1 когда курсор на слове).</li>
|
<li>Выделение цветом слов, заданных в файле синтаксиса. Вывод справки по ним, если она есть (нажатием F1 когда курсор на слове).</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>Некоторые недоработки</h2>
|
<h2>О работе элемента</h2>
|
||||||
<ul>
|
|
||||||
<li>Если открыть большой файл, размер которого больше чем:
|
|
||||||
maxChars equ 100002 ;(...+2)
|
|
||||||
он откроется не весь, а первые maxChars-2 символов из файла
|
|
||||||
(о чем выдается сообщение).</li>
|
|
||||||
<li>При сохранении программа не спрашивает о замене существ. файла.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>О работе программы</h2>
|
|
||||||
<p>Раздел для программистов (и интересующихся людей), в котором расказаны
|
<p>Раздел для программистов (и интересующихся людей), в котором расказаны
|
||||||
некоторые идеи, на которых построена данная программа.</p>
|
некоторые идеи, на которых построена данная программа.</p>
|
||||||
|
|
||||||
@ -81,10 +72,10 @@ ends</pre>
|
|||||||
какие символы отображать, а какие нет (хотя все символы "висят" в памяти).</p>
|
какие символы отображать, а какие нет (хотя все символы "висят" в памяти).</p>
|
||||||
<p><b>'td'</b> - время удаления символа, заполняется при удалении, при отмене действия
|
<p><b>'td'</b> - время удаления символа, заполняется при удалении, при отмене действия
|
||||||
удаления символов, текст может быть восстановлен.</p>
|
удаления символов, текст может быть восстановлен.</p>
|
||||||
<p><b>'col'</b> - используется для цветовой разметки.</p>
|
<p><b>'col'</b> - используется для цветовой разметки, содержит индекс цвета в массиве цветов ted_text_colors.</p>
|
||||||
|
|
||||||
<h1><a name="funct">Функции</a></h1>
|
<h1><a name="funct">Функции</a></h1>
|
||||||
<p>Функции на экспорт:</p>
|
<h2>Функции на экспорт:</h2>
|
||||||
|
|
||||||
<h4><a name="fun_but_copy">ted_but_copy</a></h4>
|
<h4><a name="fun_but_copy">ted_but_copy</a></h4>
|
||||||
<p>Функция которая будет вызываться при нажатии на кнопку копирования в буфер или на <b>Ctrl+C</b>. Текст копируется в буфер <b>ted_buffer</b>, максимальный размер буфера указывается в <b>ted_buffer_size</b>.</p>
|
<p>Функция которая будет вызываться при нажатии на кнопку копирования в буфер или на <b>Ctrl+C</b>. Текст копируется в буфер <b>ted_buffer</b>, максимальный размер буфера указывается в <b>ted_buffer_size</b>.</p>
|
||||||
@ -280,7 +271,7 @@ stdcall [ted_text_add], tedit0,text_buffer,30,ebx</pre>
|
|||||||
call [ted_text_colored]
|
call [ted_text_colored]
|
||||||
pop edi</pre>
|
pop edi</pre>
|
||||||
|
|
||||||
<p>Внутренние функции:</p>
|
<h2>Внутренние функции:</h2>
|
||||||
<p><b>ted_get_text_perv_pos</b> - переход на предыдущий символ в цепи (через указатель 'perv')</p>
|
<p><b>ted_get_text_perv_pos</b> - переход на предыдущий символ в цепи (через указатель 'perv')</p>
|
||||||
<p><b>ted_get_text_next_pos</b> - переход на следующий символ в цепи (через указатель 'next')</p>
|
<p><b>ted_get_text_next_pos</b> - переход на следующий символ в цепи (через указатель 'next')</p>
|
||||||
<p><b>ted_symbol_not_vis</b> - определяет видимый ли указанный символ на экране (в зависимости
|
<p><b>ted_symbol_not_vis</b> - определяет видимый ли указанный символ на экране (в зависимости
|
||||||
@ -383,7 +374,7 @@ tedit0: ;
|
|||||||
.increase_size dd 225 ;+242 число символов на которые будет увечиваться память при нехватке
|
.increase_size dd 225 ;+242 число символов на которые будет увечиваться память при нехватке
|
||||||
.ptr_free_symb dd ? ;+246 указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)</pre>
|
.ptr_free_symb dd ? ;+246 указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)</pre>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Документация обновлялась последний раз 17.05.10.</p>
|
<p>Документация обновлялась последний раз 30.05.10.</p>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,27 +1,6 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;Basic macros for use editbox ;
|
;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
|
macro init_editbox
|
||||||
{
|
{
|
||||||
@ -1334,29 +1313,4 @@ struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
|||||||
.cl_curs_y dd 0
|
.cl_curs_y dd 0
|
||||||
.shift dd 0
|
.shift dd 0
|
||||||
.shift_old 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 ; ¢ëá®â
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -65,18 +65,6 @@ option_box_mouse:
|
|||||||
macro use_optionbox_draw
|
macro use_optionbox_draw
|
||||||
{
|
{
|
||||||
option_box_draw_box:
|
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 ;á®åà ¨¬ ¢á¥ ॣ¨áâàë
|
pusha ;á®åà ¨¬ ¢á¥ ॣ¨áâàë
|
||||||
|
|
||||||
movzx ebx,word op_left
|
movzx ebx,word op_left
|
||||||
|
@ -1,25 +1,20 @@
|
|||||||
<Lrz> Теплов Алексей, Челябинск.
|
<Lrz> Теплов Алексей, Челябинск.
|
||||||
Пример простого использования editbox в библиотеке,
|
Пример простого использования editbox в библиотеке,
|
||||||
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>
|
а в структуре макроса бокса добавить 1 элемент <указатель на переменную mouse_dd>
|
||||||
ed_struc_size=76
|
ed_struc_size=76
|
||||||
struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
||||||
blur_border_color,text_color,max,text,<указатель на переменную mouse_dd>,flags,size,pos
|
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. Добавил ошибки, программа глючит очень серьезно :(
|
|
BIN
programs/other/t_edit/info/ini_files.syn
Normal file
BIN
programs/other/t_edit/info/ini_files.syn
Normal file
Binary file not shown.
12
programs/other/t_edit_synt/build.bat
Normal file
12
programs/other/t_edit_synt/build.bat
Normal file
@ -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
|
153
programs/other/t_edit_synt/readme.htm
Normal file
153
programs/other/t_edit_synt/readme.htm
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
<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>TextEditor syntax file converter версия от 31.05.2010</h1>
|
||||||
|
<h2>О программе</h2>
|
||||||
|
<p>Программа для работы с файлами текстового редактора формата <b>*.syn</b>.</p>
|
||||||
|
<p><img src="te_syntax.png"></p>
|
||||||
|
<p>Лицензия свободная.</p>
|
||||||
|
|
||||||
|
<h2>Алгоритм работы программы</h2>
|
||||||
|
<p>Перед использованием записать файл <b>te_synt.kex</b> в папку с редактором <b>t_edit.kex</b>.</p>
|
||||||
|
<p>1) загрузить файл синтаксиса <b>.syn</b></p>
|
||||||
|
<p>2) ввести путь и новое имя для сохранения в формате <b>.asm</b></p>
|
||||||
|
<p>3) изменить в файле <b>.asm</b> интересующие пользователя параметры, это могут быть:</p>
|
||||||
|
<ul>
|
||||||
|
<li>цвета интерфейса</li>
|
||||||
|
<li>подсвечиваемые слова (должны ити в порядке следования ascii кодов)</li>
|
||||||
|
<li>справка по словам</li>
|
||||||
|
</ul>
|
||||||
|
<p>4) компилировать в <b>fasm</b></p>
|
||||||
|
<p>5) исправить расширение <b>.bin</b> на <b>.syn</b></p>
|
||||||
|
<p>Если пропустить 3-й пункт, то в результате пользователь должен получить такой же файл синтаксиса, который был изначально.</p>
|
||||||
|
|
||||||
|
<h3>Формат преобразованого файла подсветки *.asm</h3>
|
||||||
|
<p><b>count_colors_text</b> - колличество цветов для текста</p>
|
||||||
|
<p><b>count_key_words</b> - колличество подсвечиваемых слов</p>
|
||||||
|
<p>Цветовые параметры:</p>
|
||||||
|
<p><b>color_cursor</b> - цвет курсора</p>
|
||||||
|
<p><b>color_wnd_capt</b> - цвет полей вокруг окна</p>
|
||||||
|
<p><b>color_wnd_work</b> - цвет фона в окне</p>
|
||||||
|
<p><b>color_wnd_bord</b> - цвет текста на полях</p>
|
||||||
|
<p><b>color_select</b> - цвет выделения</p>
|
||||||
|
<p><b>color_cur_text</b> - цвет символа под курсором</p>
|
||||||
|
<p><b>color_wnd_text</b> - метка после которой идут цвета текста в окне</p>
|
||||||
|
|
||||||
|
<p><b>text</b> - метка после которой идут описания ключевых слов. Для более компактного описания ключевого слова используется макрос <b>wo</b>:</p>
|
||||||
|
<pre>macro wo txt,lf1,p1,p2,p3{
|
||||||
|
@@: db txt
|
||||||
|
rb @b+40-$
|
||||||
|
dd lf1
|
||||||
|
db p1,p2+0,p3
|
||||||
|
}</pre>
|
||||||
|
<p>параметры макроса:</p>
|
||||||
|
<p><b>txt</b> - <i>подсвечиваемое слово</i></p>
|
||||||
|
<p><b>lf1</b> - <i>смещение начала справки</i> по данному слову относительно метки <b>f1</b></p>
|
||||||
|
<p><b>p1</b> - <i>опции</i> влияющие на выделение слова. Возможно всего 5 опций, каждая из которых включается определенным битом:</p>
|
||||||
|
<ul>
|
||||||
|
<li>2<sup>0</sup>=1 - слева не текст,</li>
|
||||||
|
<li>2<sup>1</sup>=2 - справа не текст,</li>
|
||||||
|
<li>2<sup>3</sup>=4 - использовать конечный символ,</li>
|
||||||
|
<li>2<sup>4</sup>=8 - слева любая цифра,</li>
|
||||||
|
<li>2<sup>5</sup>=16 - справа любая цифра.</li>
|
||||||
|
</ul>
|
||||||
|
<p><b>p2</b> - <i>ascii код конечного символа</i> для выделения. Используется в случаях, когда нужно задать выделение заранее не известной длинны, например: комментарии, строки в кавычках. Для его использования предыдущий параметр должен содержать 2-й бит ил цифра 4 = 2<sup>2</sup>.</p>
|
||||||
|
<p><b>p3</b> - <i>номер цвета</i> из массива <b>color_wnd_text</b>, которым будет выделятся слово</p>
|
||||||
|
|
||||||
|
<p><b>Пример 1.</b> Нужно задать слово <i>or</i>, что-бы по ошибке комбинации из символов входящих в слово не выделялись в других словах, например: <i>f<b>or</b>m</i>, <i>col<b>or</b></i> используем в <b>p2</b> биты 0 и 1 получаем число 3 = 2<sup>0</sup>+2<sup>1</sup> = 1+2.</p>
|
||||||
|
<p><b>Пример 2.</b> Фрагмент файла, полученого в результате работы программы:</p>
|
||||||
|
<pre>wo<'word'>,f1.600-f1,<b>3</b>,,8
|
||||||
|
wo<'xadd'>,0,<b>3</b>,,1
|
||||||
|
wo<'xchg'>,f1.602-f1,<b>3</b>,,1
|
||||||
|
wo<'xlat'>,0,<b>3</b>,,1
|
||||||
|
wo<'xlatb'>,0,<b>3</b>,,1
|
||||||
|
wo<'xmm0'>,0,<b>3</b>,,2
|
||||||
|
wo<'xmm1'>,0,<b>3</b>,,2
|
||||||
|
wo<'xmm2'>,0,<b>3</b>,,2
|
||||||
|
wo<'xmm3'>,0,<b>3</b>,,2
|
||||||
|
wo<'xmm4'>,0,<b>3</b>,,2
|
||||||
|
wo<'xmm5'>,0,<b>3</b>,,2
|
||||||
|
wo<'xmm6'>,0,<b>3</b>,,2
|
||||||
|
wo<'xmm7'>,0,<b>3</b>,,2
|
||||||
|
wo<'xor'>,f1.613-f1,<b>3</b>,,1
|
||||||
|
wo<'zf'>,f1.614-f1,<b>3</b>,,2
|
||||||
|
wo<'||'>,0,<b>0</b>,,1</pre>
|
||||||
|
<p>Параметры <b>p2</b> почти во всех словах равны 3-м, а в последнем слове 0, потому что для последнего слова не важно какие символы будут слева и справа от него.</p>
|
||||||
|
|
||||||
|
<h3>Формат файла подсветки *.syn</h3>
|
||||||
|
<table>
|
||||||
|
<tr><th>Элемент</th><th>Размер (байт)</th></tr>
|
||||||
|
<tr><td>Количество цветов текста</td>
|
||||||
|
<td><pre>4</pre></td></tr>
|
||||||
|
<tr><td>Количество подсвечиваемых слов</td>
|
||||||
|
<td><pre>4</pre></td></tr>
|
||||||
|
<tr><td>Цвета интерфейса</td>
|
||||||
|
<td><pre>4*6</pre></td></tr>
|
||||||
|
<tr><td>Цвета для текста</td>
|
||||||
|
<td><pre>4*(кол. цв. текста)</pre></td></tr>
|
||||||
|
<tr><td>Структуры со свойствами и описаниями слов</td>
|
||||||
|
<td><pre>sizeof(TexColViv)*(кол. слов)</pre></td></tr>
|
||||||
|
<tr><td>Разделительный символ, означающий начало описаний слов (всегда равен 0)</td>
|
||||||
|
<td><pre>1 байт</pre></td></tr>
|
||||||
|
<tr><td>Описания слов (строки текста с 0-ми в конце)</td>
|
||||||
|
<td><pre>(длинна справочного текста + 1)</pre></td></tr>
|
||||||
|
</table>
|
||||||
|
<h4>Замечания.</h4>
|
||||||
|
<ul>
|
||||||
|
<li>Все слова должны быть расположены в порядке следования их ASCII кодов.
|
||||||
|
Возможно в будущих версиях формат файлов подсветки будет изменен.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<h2>Автор</h2>
|
||||||
|
<p>Игорь А. (IgorA) - разработка программы.</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
393
programs/other/t_edit_synt/te_data.inc
Normal file
393
programs/other/t_edit_synt/te_data.inc
Normal file
@ -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
|
||||||
|
|
376
programs/other/t_edit_synt/te_syntax.asm
Normal file
376
programs/other/t_edit_synt/te_syntax.asm
Normal file
@ -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 '<27>¥ ©¤¥ ä ©«, ¯à®¢¥àì⥠¯à ¢¨«ì®áâì ¨¬¥¨',0
|
||||||
|
txtErrIni0 db '<27>¥ ®âªàë«áï ä ©« á ¨ª®ª ¬¨',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:
|
BIN
programs/other/t_edit_synt/te_syntax.png
Normal file
BIN
programs/other/t_edit_synt/te_syntax.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
428
programs/other/t_edit_synt/te_work.inc
Normal file
428
programs/other/t_edit_synt/te_work.inc
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user