diff --git a/programs/develop/libraries/box_lib/trunk/t_edit.mac b/programs/develop/libraries/box_lib/trunk/t_edit.mac index d0765742a..3162c0e89 100644 --- a/programs/develop/libraries/box_lib/trunk/t_edit.mac +++ b/programs/develop/libraries/box_lib/trunk/t_edit.mac @@ -1,6 +1,6 @@ ; макрос для системной библиотеки box_lib.obj ; элемент TextEditor для Kolibri OS -; файл последний раз изменялся 28.06.2014 IgorA +; файл последний раз изменялся 20.01.2016 IgorA ; на код применена GPL2 лицензия ;input: @@ -2124,190 +2124,190 @@ ted_text_colored: ;description: ; Функция для поиска и выделения подсвеченых слов align 4 -proc ted_text_find_sel_color +proc ted_text_find_sel_color uses eax ebx ecx esi locals - begPos dd ? ;начальная позиция - endPos dd ? ;конечная позиция - find db ? ;найдено / не найдено - f_color db ? ;индекс цвета найденого слова + begPos dd ? ;начальная позиция + endPos dd ? ;конечная позиция + find db ? ;найдено / не найдено + f_color db ? ;индекс цвета найденого слова endl - push eax ebx ecx esi ;eax = word_n текущий номер (позиция) проверяемого слова в списке ;ebx = для разных целей ;ecx = l_pos последний номер (позиция) подходящего слова в списке ;esi = для разных целей, номер проверяемого символа в слове - mov dword[begPos],1 - mov dword[endPos],1 - mov byte[find],0 - mov byte[f_color],1 - @@: - call ted_iterat_next - cmp edx,ted_tex_1 - jle @f + mov dword[begPos],1 + mov dword[endPos],1 + mov byte[find],0 + mov byte[f_color],1 + @@: + call ted_iterat_next + cmp edx,ted_tex_1 + jle @f - xor eax,eax - mov al,byte[edx] - shl ax,2 ;eax*=4 - add eax,ted_arr_key_pos - mov eax,dword[eax] - cmp eax,0 - jl @b ;if( (word_n=ted_arr_key_pos[(unsigned char)tex[i].c])>-1 ){ + xor eax,eax + mov al,byte[edx] + shl ax,2 ;eax*=4 + add eax,ted_arr_key_pos + mov eax,dword[eax] + cmp eax,0 + jl @b ;if( (word_n=ted_arr_key_pos[(unsigned char)tex[i].c])>-1 ){ - mov ecx,eax - ;while(l_posword_n && Col[l_pos-1].Text[pos]!=tex[i].c) + .wh_3b: + cmp ecx,eax + jle .wh_3e + dec ecx + ColToIndexOffset ecx,ebx + inc ecx + ;cmp byte[ebx+esi],byte[edx] + mov bl,byte[ebx+esi] + cmp bl,byte[edx] + je .wh_3e + dec ecx + jmp .wh_3b + .wh_3e: - ;while(l_pos>word_n && Col[l_pos-1].Text[pos]!=tex[i].c) - .wh_3b: - cmp ecx,eax - jle .wh_3e - dec ecx - ColToIndexOffset ecx,ebx - inc ecx - ;cmp byte[ebx+esi],byte[edx] - mov bl,byte[ebx+esi] - cmp bl,byte[edx] - je .wh_3e - dec ecx - jmp .wh_3b - .wh_3e: + ColToIndexOffset eax,ebx + cmp byte[ebx+esi],0 + jne .if_0 ;if(Col[word_n].Text[pos]==0){ + mov dword[endPos],edx ;eP=i; + ColToIndexOffset eax,ebx + mov bl,byte[ebx+MAX_COLOR_WORD_LEN+7] + mov byte[f_color],bl ;f_color=Col[word_n].color; - ColToIndexOffset eax,ebx - cmp byte[ebx+esi],0 - jne .if_0 ;if(Col[word_n].Text[pos]==0){ - mov dword[endPos],edx ;eP=i; - ColToIndexOffset eax,ebx - mov bl,byte[ebx+MAX_COLOR_WORD_LEN+7] - mov byte[f_color],bl ;f_color=Col[word_n].color; + mov byte[find],1 + ColToIndexOffset eax,ebx ;... ebx = Col[word_n] + mov bl,byte[ebx+MAX_COLOR_WORD_LEN+4] + cmp bl,0 ;if(Col[word_n].wwo) + je .if_2n + push edx + mov edx,dword[begPos] + call ted_iterat_perv -mov byte[find],1 - ColToIndexOffset eax,ebx ;... ebx = Col[word_n] - mov bl,byte[ebx+MAX_COLOR_WORD_LEN+4] - cmp bl,0 ;if(Col[word_n].wwo) - je .if_2n - push edx - mov edx,dword[begPos] - call ted_iterat_perv + btr bx,0 ;1-1 + jae .if_3e ;if(Col[word_n].wwo&1) + ;u1= !(isalnum(cont_s)||cont_s=='_') + call isalnum + jae .if_3e + mov byte[find],0 + jmp .if_4e + .if_3e: - btr bx,0 ;1-1 - jae .if_3e ;if(Col[word_n].wwo&1) - ;u1= !(isalnum(cont_s)||cont_s=='_') - call isalnum - jae .if_3e - mov byte[find],0 - .if_3e: + btr bx,3 ;4-1 + jae .if_4e ;if(Col[word_n].wwo&8) + ;u1= !isalpha(cont_s); + call isalpha + jae .if_4e + mov byte[find],0 + .if_4e: - btr bx,3 ;4-1 - jae .if_4e ;if(Col[word_n].wwo&8) - ;u1= !isalpha(cont_s); - call isalpha - jae .if_4e - mov byte[find],0 - .if_4e: + mov edx,dword[endPos] + ;call ted_iterat_next - mov edx,dword[endPos] -; call ted_iterat_next + btr bx,1 ;2-1 + jae .if_5e ;if(Col[word_n].wwo&2) + ;u1= !(isalnum(cont_s)||cont_s=='_') + call isalnum + jae .if_5e + mov byte[find],0 + jmp .if_6e + .if_5e: - btr bx,1 ;2-1 - jae .if_5e ;if(Col[word_n].wwo&2) - ;u1= !(isalnum(cont_s)||cont_s=='_') - call isalnum - jae .if_5e - mov byte[find],0 - .if_5e: + btr bx,4 ;5-1 + jae .if_6e ;if(Col[word_n].wwo&16) + ;u1= !isalpha(cont_s); + call isalpha + jae .if_6e + mov byte[find],0 + .if_6e: - btr bx,4 ;5-1 - jae .if_6e ;if(Col[word_n].wwo&16) - ;u1= !isalpha(cont_s); - call isalpha - jae .if_6e - mov byte[find],0 - .if_6e: + btr bx,2 ;3-1 + jae .if_7e ;if(Col[word_n].wwo&4) + ColToIndexOffset eax,ebx + mov bx,word[ebx+MAX_COLOR_WORD_LEN+5] + call ted_iterat_next_pos_char + cmp edx,ted_tex_1 + jle .if_7e + mov dword[endPos],edx + .if_7e: - btr bx,2 ;3-1 - jae .if_7e ;if(Col[word_n].wwo&4) - ColToIndexOffset eax,ebx - mov bx,word[ebx+MAX_COLOR_WORD_LEN+5] - call ted_iterat_next_pos_char - cmp edx,ted_tex_1 - jle .if_7e - mov dword[endPos],edx - .if_7e: + pop edx + .if_2n: +;if(i!=1){ // не конец документа +; cont_s=tex[eP].c; +; if(Col[word_n].wwo&2) u2= !(isalnum(cont_s)||cont_s=='_'); // не букв.-числ. символ +; if(u2 && Col[word_n].wwo&16) u2= !isalpha(cont_s); // не числ. символ +; if(Col[word_n].wwo&4) eP=ted_iterat_next_pos_char(eP,Col[word_n].endc); - pop edx - .if_2n: -; if(i!=1){ // не конец документа -; cont_s=tex[eP].c; -; if(Col[word_n].wwo&2) u2= !(isalnum(cont_s)||cont_s=='_'); // не букв.-числ. символ -; if(u2 && Col[word_n].wwo&16) u2= !isalpha(cont_s); // не числ. символ -; if(Col[word_n].wwo&4) eP=ted_iterat_next_pos_char(eP,Col[word_n].endc); + cmp eax,ecx + je .wh_2e ;if(word_n==l_pos) break; // do double - если слово точно последнее + .if_0: - cmp eax,ecx - je .wh_2e ;if(word_n==l_pos) break; // do double - если слово точно последнее - .if_0: + cmp edx,ted_tex_1 + jle .wh_2e ;if(i==1) break; - cmp edx,ted_tex_1 - jle .wh_2e ;if(i==1) break; + ;while(l_pos>word_n && Col[word_n].Text[pos]!=tex[i].c) + .wh_4b: + cmp ecx,eax + jle .wh_4e + ColToIndexOffset eax,ebx + ;cmp byte[ebx+esi],byte[edx] + mov bl,byte[ebx+esi] + cmp bl,byte[edx] + je .wh_4e + inc eax + jmp .wh_4b + .wh_4e: - ;while(l_pos>word_n && Col[word_n].Text[pos]!=tex[i].c) - .wh_4b: - cmp ecx,eax - jle .wh_4e - ColToIndexOffset eax,ebx - ;cmp byte[ebx+esi],byte[edx] - mov bl,byte[ebx+esi] - cmp bl,byte[edx] - je .wh_4e - inc eax - jmp .wh_4b - .wh_4e: + cmp eax,ecx + je .wh_2e;if(word_n==l_pos) break; + inc esi ;pos++; + jmp .wh_2b + .wh_2e: - cmp eax,ecx - je .wh_2e;if(word_n==l_pos) break; - inc esi ;pos++; - jmp .wh_2b - .wh_2e: + cmp byte[find],1 ;if(fnd)break; + je @f + mov edx,dword[begPos];i=bP; + jmp @b + @@: - cmp byte[find],1 ;if(fnd)break; - je @f - mov edx,dword[begPos];i=bP; - jmp @b - @@: + cmp byte[find],1 + jne .if_1e ;if(fnd){ // выделение найденого текста + ;if(!mode_sf1 || (mode_sf1 && strlen(Col[word_n].f1->c_str())>0)){ + mov eax,dword[begPos] + mov bl,byte[f_color] + mov byte[eax+1],bl ;tex[bP].col=f_color; + mov eax,dword[endPos] + mov byte[eax+1],0xff ;tex[eP].col=255; + ;return ItPoPerv(eP); // возвращаем позицию конца вхождения + mov edx,dword[endPos] + call ted_get_text_perv_pos + jmp @f + .if_1e: + mov edx,ted_tex + @@: - cmp byte[find],1 - jne .if_1e ;if(fnd){ // выделение найденого текста -; if(!mode_sf1 || (mode_sf1 && strlen(Col[word_n].f1->c_str())>0)){ - mov eax,dword[begPos] - mov bl,byte[f_color] - mov byte[eax+1],bl ;tex[bP].col=f_color; - mov eax,dword[endPos] - mov byte[eax+1],0xff ;tex[eP].col=255; -; return ItPoPerv(eP); // возвращаем позицию конца вхождения - mov edx,dword[endPos] - call ted_get_text_perv_pos - jmp @f - .if_1e: - mov edx,ted_tex - @@: - - pop esi ecx ebx eax - ret + ret endp ;input: @@ -2315,62 +2315,59 @@ endp ;output: ; cf=1 if symbol is... align 4 -tab_all_num db 0,0,0,0,0,0,11111111b,11b,11111110b,0xff,0xff,111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0;,0,0,0,0,0,0,0,0 - tab_alpha_0,0,0,0,0,0,0,0 -tab_alpha db 0,0,0,0,0,0,0,0,11111110b,0xff,0xff,111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +tab_all_num db 0,0,0,0,0,0,0xff,11b,11111110b,0xff,0xff,10000111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0;,0,0,0,0,0,0,0,0 - tab_alpha_0,0,0,0,0,0,0,0 +tab_alpha db 0,0,0,0,0,0,0,0,11111110b,0xff,0xff,10000111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +;output: +; cf=1 если в [edx] буква, цифра или '_' align 4 isalnum: - push eax ebx - mov al,byte[edx] ;al=offset - shr al,3 - and eax,11111b - lea ebx,[tab_all_num] - add ebx,eax - mov ah,byte[ebx] - mov al,byte[edx] ;al=bit - and ax,111b - mov bx,word[ebx] - btr bx,ax - pop ebx eax - ret + push eax ebx + movzx eax,byte[edx] ;al=offset + shr eax,3 + lea ebx,[tab_all_num] + add ebx,eax + movzx ax,byte[edx] ;al=bit + and ax,111b + bt word[ebx],ax + pop ebx eax + ret + +;output: +; cf=1 если в [edx] буква или '_' align 4 isalpha: - push eax ebx - mov al,byte[edx] ;al=offset - shr al,3 - and eax,11111b - lea ebx,[tab_alpha] - add ebx,eax - mov ah,byte[ebx] - mov al,byte[edx] ;al=bit - and ax,111b - mov bx,word[ebx] - btr bx,ax - pop ebx eax - ret + push eax ebx + movzx eax,byte[edx] ;al=offset + shr eax,3 + lea ebx,[tab_alpha] + add ebx,eax + movzx ax,byte[edx] ;al=bit + and ax,111b + bt word[ebx],ax + pop ebx eax + ret align 4 -proc ted_show_help_f1, edit:dword - push eax edx edi - mov edi,dword[edit] +proc ted_show_help_f1 uses eax edx edi, edit:dword + mov edi,dword[edit] - call ted_get_pos_by_cursor - push edx - call ted_iterat_next_color_tag - mov eax,edx - pop edx - call ted_iterat_perv_color_tag + call ted_get_pos_by_cursor + push edx + call ted_iterat_next_color_tag + mov eax,edx + pop edx + call ted_iterat_perv_color_tag - cmp eax,ted_tex - jle @f - cmp edx,ted_tex_1 - jle @f - stdcall ted_find_help_id,eax - @@: - ;call ted_draw_main_cursor - call ted_draw_help_f1 - pop edi edx eax - ret + cmp eax,ted_tex + jle @f + cmp edx,ted_tex_1 + jle @f + stdcall ted_find_help_id,eax + @@: + ;call ted_draw_main_cursor + call ted_draw_help_f1 + ret endp ;input: diff --git a/programs/other/t_edit/t_button.inc b/programs/other/t_edit/t_button.inc index 2a303494f..906e9e886 100644 --- a/programs/other/t_edit/t_button.inc +++ b/programs/other/t_edit/t_button.inc @@ -43,7 +43,7 @@ ted_but_new_file: call On_NewFile .ret_f: mov byte[openfile_path],0 - mcall 71,1,hed + mcall SF_SET_CAPTION,1,hed pop ebx eax ret @@ -142,45 +142,47 @@ ted_but_open_file: @@: cmp [OpenDialog_data.status],1 jne .ret_f - - ;ищем есть ли файл подсветки для открываемого текстового файла - mov esi,[OpenDialog_data.openfile_path] - call strlen - mov edx,openfile_path - add edx,eax - .f_beg: - cmp byte[edx],'.' - je .found - dec edx - cmp edx,openfile_path - jg .f_beg - .found: - inc edx ;edx - указатель на расширение открытого файла - - mov ebx,synt_auto_open - .cycle_0: - add ebx,32 - stdcall strcmp,ebx,edx ;сравниваем расширение открытого файла со значениями открытыми с ini файла - test eax,eax - jz .ok - add ebx,32 - cmp byte[ebx],0 - jne .cycle_0 - jmp .end_0 - .ok: ;открытие файла подсветки в зависимости от найденного расширения - sub ebx,32 - ;mov ecx,ebx - ;mcall 71,1 - call open_unpac_synt_file - .end_0: - + stdcall auto_open_syntax,[OpenDialog_data.openfile_path] stdcall [ted_open_file], tedit0,run_file_70,openfile_path call ted_messages_after_open_file - .ret_f: popad ret +proc auto_open_syntax, of_path:dword +pushad + ;ищем есть ли файл подсветки для открываемого текстового файла + mov esi,[of_path] + call strlen + mov edx,[of_path] + add edx,eax + .f_beg: + cmp byte[edx],'.' + je .found + dec edx + cmp edx,[of_path] + jg .f_beg + .found: + inc edx ;edx - указатель на расширение открытого файла + + mov ebx,synt_auto_open + .cycle_0: + add ebx,32 + stdcall strcmp,ebx,edx ;сравниваем расширение открытого файла со значениями открытыми с ini файла + test eax,eax + jz .ok + add ebx,32 + cmp byte[ebx],0 + jne .cycle_0 + jmp .end_0 + .ok: ;открытие файла подсветки в зависимости от найденного расширения + sub ebx,32 + stdcall open_unpac_synt_file,ebx + .end_0: +popad + ret +endp + ;description: ; функция сохранения файла с вызовом окна диалога align 4 @@ -269,8 +271,7 @@ proc ted_but_open_syntax uses eax ebx ecx edi, edit:dword jne @f stdcall dword[tl_node_get_data], tree1 mov [fn_col_option],eax - mov ebx,eax - call open_unpac_synt_file + stdcall open_unpac_synt_file,eax cmp ebx,-1 je @f @@ -282,13 +283,13 @@ endp ;открытие и распаковка файла подсветки синтаксиса ;input: -; ebx - указатель на имя открываемого файла синтаксиса (без пути и папки info) +; f_name - указатель на имя открываемого файла синтаксиса (без пути и папки info) ;output: ; ebx - число прочитанных байт из файла ; ecx - разрушается align 4 -open_unpac_synt_file: -push eax edi esi +proc open_unpac_synt_file uses eax edi esi, f_name:dword + mov ebx,[f_name] mov edi,last_open_synt_file stdcall strcmp,ebx,edi ;сравниваем имя подключенного файла с подключенным ранее файлом test eax,eax @@ -296,14 +297,14 @@ push eax edi esi ;копируем имя подключенного файла (для избежания повторных подключений) mov esi,ebx - mov ecx,32 + mov ecx,32/4 cld - rep movsb + rep movsd copy_path ebx,fn_syntax_dir,syntax_path,0 copy_path syntax_path,sys_path,file_name,0 mov edi, tedit0 - mov [run_file_70.Function], 0 + mov [run_file_70.Function], SSF_READ_FILE mov [run_file_70.Position], 0 mov [run_file_70.Flags], 0 mov ecx, ted_syntax_file_size @@ -311,7 +312,7 @@ push eax edi esi m2m dword[run_file_70.Buffer], ted_syntax_file mov byte[run_file_70+20], 0 mov [run_file_70.FileName], file_name - mcall 70, run_file_70 + mcall SF_FILE, run_file_70 cmp ebx,-1 jne .end_0 call ted_on_init_synt_err @@ -337,8 +338,8 @@ push eax edi esi .end_unpack: stdcall [ted_init_syntax_file], tedit0 @@: -pop esi edi eax ret +endp ;description: ; вызов/скрытие панели поиска @@ -403,7 +404,7 @@ but_find_key_w: cmp byte[wnd_k_words_run],0 jne @f pushad - mcall 51,1,prop_start,thread_coords + mcall SF_CREATE_THREAD,1,prop_start,thread_coords popad @@: ret diff --git a/programs/other/t_edit/t_edit.asm b/programs/other/t_edit/t_edit.asm index 6bdeb16a6..e9465fa57 100644 --- a/programs/other/t_edit/t_edit.asm +++ b/programs/other/t_edit/t_edit.asm @@ -3,11 +3,7 @@ use32 org 0x0 db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт - dd 0x01 - dd start - dd i_end ; размер приложения - dd mem - dd stacktop + dd 1, start, i_end, mem, stacktop dd file_name ; command line dd sys_path @@ -21,6 +17,7 @@ include '../../proc32.inc' ;include '../../config.inc' include '../../macros.inc' include '../../dll.inc' +include '../../KOSfuncs.inc' include '../../develop/libraries/box_lib/load_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../system/desktop/trunk/kglobals.inc' @@ -59,14 +56,14 @@ macro load_image_file path,buf,size stdcall mem.Alloc, dword size ;выделяем память для изображения mov [buf],eax - mov [run_file_70.Function], 0 + mov [run_file_70.Function], SSF_READ_FILE mov [run_file_70.Position], 0 mov [run_file_70.Flags], 0 mov [run_file_70.Count], dword size m2m [run_file_70.Buffer], eax mov byte[run_file_70+20], 0 mov [run_file_70.FileName], file_name - mcall 70,run_file_70 ;загружаем файл изображения + mcall SF_FILE,run_file_70 ;загружаем файл изображения cmp ebx,0xffffffff je @f ;определяем вид изображения и переводим его во временный буфер image_data @@ -84,14 +81,14 @@ icon_tl_sys dd 0 ;ука align 4 start: - mcall 48,3,sc,sizeof.sys_colors_new + mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.sys_colors_new - mcall 68,11 + mcall SF_SYS_MISC,SSF_HEAP_INIT or eax,eax jz button.exit - mcall 66,1,1 ;scan code - mcall 40,0xC0000027 + mcall SF_KEYBOARD,SSF_SET_INPUT_MODE,1 ;scan code + mcall SF_SET_EVENTS_MASK,0xC0000027 mov esi,file_name call strlen @@ -107,7 +104,7 @@ mov ebp,lib0 .test_lib_open: cmp dword [ebp+ll_struc_size-4],0 jz @f - mcall -1 ;exit not correct + mcall SF_TERMINATE_PROCESS ;exit not correct @@: add ebp,ll_struc_size cmp ebp,load_lib_end @@ -209,7 +206,7 @@ mov ebp,lib0 mov dword[tree1.data_img],eax ;------------------------------------------------------------------------------ copy_path fn_syntax_dir,sys_path,file_name,0 ;берем путь к папке с файлами синтаксиса - mcall 70,tree_file_struct + mcall SF_FILE,tree_file_struct cmp ebx,-1 je .end_dir_init @@ -272,13 +269,13 @@ mov ebp,lib0 @@: ;--- load color option file --- - mov ebx,dword[fn_col_option] - call open_unpac_synt_file + stdcall open_unpac_synt_file,[fn_col_option] ;--- get cmd line --- cmp byte[openfile_path+3],0 ;openfile_path je @f ;if file names exist mov esi,openfile_path + stdcall auto_open_syntax,esi call strlen ;eax=strlen call but_no_msg_OpenFile @@: @@ -291,7 +288,7 @@ red_win: align 4 still: - mcall 10 + mcall SF_WAIT_EVENT cmp dword[exit_code],1 je button.exit @@ -309,28 +306,24 @@ still: align 4 draw_window: - mcall 12,1 + mcall SF_REDRAW,SSF_BEGIN_DRAW mov edx,[sc.work] or edx,0x73000000 - mov edi,hed - mcall 0,dword[wnd_s_pos],dword[wnd_s_pos+4] + mcall SF_CREATE_WINDOW,dword[wnd_s_pos],dword[wnd_s_pos+4],,,hed - mcall 9,procinfo,-1 + mcall SF_THREAD_INFO,procinfo,-1 mov edi,tedit0 ;значение edi нужно для EvSize и ted_wnd_t call EvSize movzx ebx,word[procinfo.client_box.width] inc bx - mcall 13,,ted_wnd_t ;верхний прямоугольник, для очистки верхней панели - + mcall SF_DRAW_RECT,,ted_wnd_t ;верхний прямоугольник, для очистки верхней панели call draw_but_toolbar - stdcall [kmainmenu_draw], [main_menu] - stdcall [ted_draw], tedit0 - mcall 12,2 + mcall SF_REDRAW,SSF_END_DRAW ret align 4 @@ -363,7 +356,7 @@ endp align 4 key: - mcall 66,3 ;66.3 получить состояние управляющих клавиш + mcall SF_KEYBOARD,SSF_GET_CONTROL_KEYS ;66.3 получить состояние управляющих клавиш xor esi,esi mov ecx,1 test al,0x03 ;[Shift] @@ -385,8 +378,8 @@ key: or esi,KM_NUMLOCK @@: - mcall 26,2,,conv_tabl ;26.2 получить раскладку клавиатуры - mcall 2 ;получаем код нажатой клавиши + mcall SF_SYSTEM_GET,SSF_KEYBOARD_LAYOUT,,conv_tabl ;26.2 получить раскладку клавиатуры + mcall SF_GET_KEY stdcall [tl_key], tree1 test word [edit2.flags],10b;ed_focus ; если не в фокусе, выходим @@ -415,7 +408,7 @@ key: align 4 button: - mcall 17 ;получить код нажатой кнопки + mcall SF_GET_BUTTON cmp ah,3 jne @f call ted_but_new_file @@ -531,7 +524,7 @@ button: stdcall [ted_delete], tedit0 stdcall [tl_data_clear], tree1 - mcall -1 ;выход из программы + mcall SF_TERMINATE_PROCESS ;выход из программы edit2 edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0