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:
IgorA 2010-05-30 21:27:14 +00:00
parent 0d82157aac
commit 6db5aa0119
13 changed files with 1394 additions and 106 deletions

View File

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

View File

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

View File

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

View File

@ -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 ; ¢ëá®â 
} }

View File

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

View File

@ -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. Добавил ошибки, программа глючит очень серьезно :(

Binary file not shown.

View 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

View 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&lt;'word'&gt;,f1.600-f1,<b>3</b>,,8
wo&lt;'xadd'&gt;,0,<b>3</b>,,1
wo&lt;'xchg'&gt;,f1.602-f1,<b>3</b>,,1
wo&lt;'xlat'&gt;,0,<b>3</b>,,1
wo&lt;'xlatb'&gt;,0,<b>3</b>,,1
wo&lt;'xmm0'&gt;,0,<b>3</b>,,2
wo&lt;'xmm1'&gt;,0,<b>3</b>,,2
wo&lt;'xmm2'&gt;,0,<b>3</b>,,2
wo&lt;'xmm3'&gt;,0,<b>3</b>,,2
wo&lt;'xmm4'&gt;,0,<b>3</b>,,2
wo&lt;'xmm5'&gt;,0,<b>3</b>,,2
wo&lt;'xmm6'&gt;,0,<b>3</b>,,2
wo&lt;'xmm7'&gt;,0,<b>3</b>,,2
wo&lt;'xor'&gt;,f1.613-f1,<b>3</b>,,1
wo&lt;'zf'&gt;,f1.614-f1,<b>3</b>,,2
wo&lt;'||'&gt;,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>

View 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

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View 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