Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2278 → Rev 2277

/programs/develop/heed/trunk/heed.asm
1,4 → 1,4
;--------------------------------------------------------------------
;************************************************************************
; v.016 30.07.2011
; Start with open file path
; Show working file path
5,13 → 5,13
; Some optimization
;
; Marat Zakiyanov aka Mario79, aka Mario
;--------------------------------------------------------------------
;************************************************************************
; v.015 08.03.2010
; Support for OpenDialog - Open and Save
; Some optimization
;
; Marat Zakiyanov aka Mario79, aka Mario
;--------------------------------------------------------------------
;************************************************************************
; v.014 05.02.2010
;
; PageUp, PageDown - áâà ­¨æ  ¢¢¥àå/¢­¨§
45,7 → 45,7
;
; staper@inbox.ru
; babalbes@yandex.ru
;--------------------------------------------------------------------
 
use32
org 0x0
db 'MENUET01'
56,7 → 56,7
dd (D_END+0x600) and not 3 ;stack
dd fname_buf
dd cur_dir_path
;--------------------------------------------------------------------
 
_title equ 'HeEd 0.16', 0
 
include 'lang.inc'
66,7 → 66,7
include '../../libraries/box_lib/load_lib.mac'
 
@use_library
;--------------------------------------------------------------------
 
times 16 dd 0
 
frgrd_color equ 0xfefefe
78,7 → 78,8
panel_clr1 equ 0xe9e9e2
panel_clr2 equ 0x8b8b89
panel_clr3 equ 0x777777;eaeae3
;--------------------------------------------------------------------
 
 
palitra:
.1 dd frgrd_color,bkgrd_color ;梥⠭¥¢ë¤¥«¥­­®£® ᨬ¢®« 
.2 dd frgrd_color,text_color ;«¥¢ë©,¯à ¢ë© á⮫¡æë,ç áâì ­¨¦­¥© áâப¨
85,10 → 86,10
.3 dd kursred_color,frgrd_color ;ªãàá®à 
.4 dd kurstxt_color,bkgrd_color ;ªãàá®à  ¢ ⥪á⮢®© ®¡« áâ¨
.5 dd panel_clr1,not text_color ;­¨¦­ïï ¯ ­¥«ì
;--------------------------------------------------------------------
 
FIRST_HEX equ 0*65536+24
scroll_width_size equ 15
;--------------------------------------------------------------------
 
struct f70
func_n rd 1
param1 rd 1
98,7 → 99,7
rezerv rb 1
name rd 1
ends
;--------------------------------------------------------------------
 
START:
mcall 68,11
 
157,7 → 158,6
je @f
inc esi
jmp @b
;-------------------------------------
@@:
sub esi,cur_dir_path
mov [edit1.pos],esi
279,19 → 279,16
jne @f
call Ctrl_DOWN
jmp red
;--------------------------------------
@@:
cmp ah,82
jne @f
call Ctrl_UP
jmp red
;--------------------------------------
@@:
cmp ah,84
jne @f
call Ctrl_HOME
jmp red
;--------------------------------------
@@:
cmp ah,85
je Ctrl_END
305,7 → 302,6
jne @f
xor ah,ah
jmp change_codepage ;Shift+~, koi8-r
;--------------------------------------
@@:
cmp ah,110
je invert_byte ;n
313,13 → 309,11
jne @f
call LEFT
jmp red
;--------------------------------------
@@:
cmp ah,177
jne @f
call DOWN
jmp red
;--------------------------------------
@@:
cmp ah,178
je UP
329,7 → 323,6
jne @f
call HOME
jmp red
;--------------------------------------
@@:
cmp ah,181
je END_
342,7 → 335,6
cmp ah,185
je Insert
jmp still
;--------------------------------------
.syst:
cmp ah,72
cmp ah,75
349,7 → 341,7
cmp ah,77
cmp ah,80
jmp still
;--------------------------------------------------------------------
 
button:
mcall 17
dec ah
356,7 → 348,7
jnz still
 
jmp close_prog
;--------------------------------------------------------------------
 
align 4
mouse:
mcall 18,7
374,7 → 366,6
call Ctrl_DOWN
loop .1
jmp red
;--------------------------------------
@@:
xor ecx,ecx
sub cx,ax
383,7 → 374,7
call Ctrl_UP
loop .2
jmp red
;--------------------------------------------------------------------
 
.menu_bar_1:
call .set_mouse_flag
@@:
394,7 → 385,6
cmp [menu_data_1.cursor_out],dword 0
jne .analyse_out_menu_1
jmp .menu_bar_1
;--------------------------------------------------------------------
.menu_bar_2:
push dword menu_data_2
call [menu_bar_mouse]
403,7 → 393,6
cmp [menu_data_2.cursor_out],dword 0
jne .analyse_out_menu_2
jmp .menu_bar_1
;--------------------------------------------------------------------
.menu_bar_3:
push dword menu_data_3
call [menu_bar_mouse]
412,7 → 401,7
cmp [menu_data_3.cursor_out],dword 0
jne .analyse_out_menu_3
jmp .menu_bar_1
;--------------------------------------------------------------------
 
.set_mouse_flag:
xor eax,eax
inc eax
420,7 → 409,7
mov [menu_data_2.get_mouse_flag],eax
mov [menu_data_3.get_mouse_flag],eax
ret
;--------------------------------------------------------------------
 
.analyse_out_menu_1:
cmp [menu_data_1.cursor_out],dword 1
je open_dialog
429,19 → 418,17
cmp [menu_data_1.cursor_out],dword 3
je close_prog
jmp still
;--------------------------------------------------------------------
 
.analyse_out_menu_2:
cmp [menu_data_2.cursor_out],dword 1
jne @f
add [bytes_per_line],4
jmp redraw_all
;--------------------------------------
@@:
cmp [menu_data_2.cursor_out],dword 2
jne @f
add [bytes_per_line],8
jmp redraw_all
;--------------------------------------
@@:
cmp [menu_data_2.cursor_out],dword 3
jne @f
449,7 → 436,6
je still
sub [bytes_per_line],4
jmp redraw_all
;--------------------------------------
@@:
cmp [menu_data_2.cursor_out],dword 4
jne still
457,13 → 443,13
jbe still
sub [bytes_per_line],8
jmp redraw_all
;--------------------------------------------------------------------
 
.analyse_out_menu_3: ;analyse result of Menu 2
cmp [menu_data_3.cursor_out],dword 1
jne still
call create_help_window
jmp still
;--------------------------------------------------------------------
 
.scroll_bar:
; mcall 37,2
; test eax,eax
480,7 → 466,6
btr [flags],5
btr [flags],7
jmp still
;--------------------------------------
@@:
bt [flags],5
jc @f
537,7 → 522,6
sub ecx,esi;[bytes_per_line]
sub eax,esi;[bytes_per_line]
jmp @b
;--------------------------------------
@@:
mov [begin_offset],eax
bts [flags],5
548,7 → 532,6
; je @f
mov [eax],ebx
jmp red
;--------------------------------------------------------------------
;@@:
; cmp [scroll_bar_data_vertical.delta2],0
; jne still
620,7 → 603,6
call main_area
bts [flags],7
jmp still
;--------------------------------------------------------------------
.other:
; cmp [scroll_bar_data_vertical.delta2],0
; jne still
627,7 → 609,14
; cmp [scroll_bar_data_horizontal.delta2],0
; jne still
jmp still
;--------------------------------------------------------------------
 
 
 
;------------------------------------------------
 
;------------------------------------------------
 
 
align 4
ready_screen_buffer:
mov [.fl],0
777,7 → 766,7
dec [.number_strings]
jnz .next_string
ret
;---------------------------------------------------------------------
 
.fl db 0
.fl_buf dd 0
.to_null:
784,7 → 773,7
dec [.fl]
mov [.fl_buf],edi
jmp .pre_next_byte0
;--------------------------------------------------------------------
 
.pre_next_string:
mov word [esi],0x2020
add esi,2
874,7 → 863,7
dec [.number_strings]
jnz .pre_next_string
ret
;---------------------------------------------------------------------
 
;ª®à४⭮ ®¡à ¡ â뢠¥¬ 䨭 «ì­ãî áâபã ä ©« , ¤«¨­  ª®â®à®© ¢ à¨ â¨¢­ 
.last_ascii:
mov ebx,[.fl_buf]
901,7 → 890,7
jnz @b
inc ecx
jmp .1
;--------------------------------------------------------------------
 
.string_size dd 16
.number_strings dw 0
.length_to_end dd 0
911,7 → 900,8
.cursor_temp dd 0
.shblock_beg dd 0
.shblock_end dd 0
;--------------------------------------------------------------------
 
 
align 4
main_area:
mov ecx,[number_strings]
1018,12 → 1008,12
jz .loop_str
dec [.string_size]
jnz .out
jz .next_string ; WTF?
;--------------------------------------------------------------------
jz .next_string
 
.string_size dd 0
.number_strings dw 0
.len_str_scr dd 0
;--------------------------------------------------------------------
 
@@:
pushad
mov ecx,edx
1041,7 → 1031,6
.ls1:
popad
jmp @f
;--------------------------------------------------------------------
.loop_str:
bt [flags],6
jc @b
1051,7 → 1040,7
add edi,2
add edx,8*65536
jmp @b
;--------------------------------------
 
@@:;®ç¨á⪠ ä®­®¢ë¬ 梥⮬ ­¥§ ªà è¥­­ëå ®¡« á⥩
pushad
ror edx,16
1059,12 → 1048,6
mov ecx,edx
mov edx,frgrd_color
movzx ebx,[scroll_bar_data_vertical.start_x]
mov ax,[scroll_bar_data_vertical.size_x]
test ax,ax
jnz .no_inc_ebx
inc ebx
.no_inc_ebx:
sub ecx,2*65536
mov cx,2
mcall 13
1082,17 → 1065,10
shl ebx,16
mov bx,ax
mov cx,16
mov ax,[scroll_bar_data_vertical.size_x]
test ax,ax
jnz .no_inc_ebx_2
inc ebx
.no_inc_ebx_2:
mcall 13,,,frgrd_color
.10:
popad
jmp @f
;--------------------------------------------------------------------
.next_string:
bt [flags],6
jc @b
1115,7 → 1091,8
jnz .out
btr [flags],6
jmp end_draw
;--------------------------------------------------------------------
 
 
align 4
show_current_offset:
pushad
1188,7 → 1165,6
jb .1
mov ebp,3
jmp @f
;--------------------------------------
.1:
mov ebp,1
cmp byte [edx],10
1232,7 → 1208,8
pop edx
popad
ret
;---------------------------------------------------------------------
 
 
align 4
hex_output: ;¢ë¢®¤ hex áâப¨ ¨§ 8 ᨬ¢®«®¢
pushad
1299,7 → 1276,6
mov [esi+1],bl
dec esi
jmp @b
;--------------------------------------
@@:
call show_file_size
mov ebx,[current_offset]
1315,7 → 1291,6
jnz .hi_half_byte ;çñâ - áâ à訩
and dl,0xf0 ;®¡­ã«ï¥¬ ¬«. ¯-¡ ©â ®à¨£¨­ «ì­®£® ¡ ©â 
jmp .patch_byte
;--------------------------------------
.hi_half_byte: ;®¤­®¢à¥¬¥­­® ᤢ¨£ ¥¬ ­ã¦­®¥ §­ ç¥­¨¥ ¢ áâ ¯-â ¨ ®¡­ã«ï¥¬ ¬« ¤è¨©
shl ax,4
and dl,0x0f ;®¡­ã«ï¥¬ áâ à訩 ¯®«ã¡ ©â 㠮ਣ¨­ «ì­®£® ¡ ©â 
1323,7 → 1298,7
or ah,dl
mov [ecx],ah
jmp RIGHT
;--------------------------------------------------------------------
 
raspred_mem:
pushad
xor edx,edx
1341,7 → 1316,6
mul ecx
mov ecx,eax
jmp .1
;--------------------------------------
@@:
mov [prev_f_size_bl],eax
xor edx,edx
1352,7 → 1326,8
.ret:
popad
ret
;--------------------------------------------------------------------
;---------------------------------------
 
align 4
show_file_size:
mov ebx,[file_size]
1393,7 → 1368,6
call end_draw
add esp,4
jmp still
;--------------------------------------
@@:
cmp dword [threath_buf+66],(24*4) ;¯à®¢¥àª  ¬¨­¨¬ «ì­®© ¢ëá®âë
jae @f
1402,7 → 1376,6
add esi,24*4
mcall 67,-1,-1,-1,
jmp .@d
;--------------------------------------
@@:
cmp dword [threath_buf+62],(26*6) ;¯à®¢¥àª  ¬¨­¨¬ «ì­®© è¨à¨­ë
jae @f
1411,7 → 1384,6
add edx,26*6
mcall 67,-1,-1,,-1
jmp .@d
;--------------------------------------
@@:
mov eax,[file_size]
mov ebx,[bytes_per_line]
1459,7 → 1431,7
 
mcall ,,18,panel_clr1 ;¢¥àå­ïï ¯ ­¥«ì
 
; dec ebx
dec ebx
mcall 38,,<18,18>,panel_clr2
mov ecx,dword [threath_buf+66]
sub cx,18
1469,6 → 1441,7
mcall ,,,panel_clr3 ;­¨¦­ïï ¯ ­¥«ì
add ecx,1*65536
mov cx,18
; inc ebx
mcall 13,,,panel_clr1
 
 
1505,7 → 1478,6
add cx,dx
sub ecx,1*65536
movzx ebx, word [scroll_bar_data_vertical.start_x]
inc ebx
mcall 13,,,frgrd_color
 
pop eax
1589,23 → 1561,22
sub [cursor],ecx
sub ebx,esi
jmp @b
;--------------------------------------
@@:
bts [flags],6
ret
;--------------------------------------------------------------------
 
align 4
start_draw:
mcall 12,1
ret
;--------------------------------------------------------------------
 
end_draw:
mcall 12,2
ret
;--------------------------------------------------------------------
 
close_prog:
mcall -1
;--------------------------------------------------------------------
;-------------------------------------------------------------------------------
change_codepage: ;¬¥­ï¥¬ ¢â®àãî ¯®«®¢¨­ã â ¡«¨æë
test ah,ah
jnz @f
1615,24 → 1586,21
pop [codepage_offset_previous]
mov [codepage_offset],2*128
jmp .end
;--------------------------------------
.1:
push [codepage_offset_previous]
pop [codepage_offset]
jmp .end
;--------------------------------------
@@:
cmp [codepage_offset],0
jne @f
add [codepage_offset],128
jmp .end
;--------------------------------------
@@:
mov [codepage_offset],0
.end:
call show_codepage
jmp red
;--------------------------------------------------------------------
 
show_codepage:
mov ebp,6
mov edx,dword [threath_buf+62]
1666,7 → 1634,7
jnz @b
add esp,4
ret
;--------------------------------------------------------------------
 
show_insert: ;®â®¡à ¦¥­¨¥ ०¨¬  ¢áâ ¢ª¨/§ ¬¥­ë
mov ebp,3
mov edx,dword [threath_buf+62]
1708,7 → 1676,6
mcall 18, 3
popad
ret
;---------------------------------------------------------------------
@@:
mcall 51,1,.thread,(.threat_stack+16*4)
mov [help_is_open_already], 1
1715,10 → 1682,8
mov [help_window_pid], EAX
popad
ret
;--------------------------------------------------------------------
.thread:
call .window
;--------------------------------------------------------------------
.still:
mcall 10
dec al
1728,7 → 1693,6
dec al
jz .button
jmp .still
;--------------------------------------------------------------------
and [help_is_open_already], 0
mcall -1
.button:
1747,7 → 1711,6
jz .still
inc [cur_help_string]
jmp .red
;--------------------------------------
@@:
cmp ah,3
jne .still
1755,15 → 1718,15
je .still
dec [cur_help_string]
jmp .red
;--------------------------------------------------------------------
 
.key:
mcall 2
jmp .still
;--------------------------------------------------------------------
 
.red:
call .window
jmp .still
;--------------------------------------------------------------------
 
.window:
pushad
mcall 12,1
1790,9 → 1753,10
mcall 12,2
popad
ret
;--------------------------------------------------------------------
 
.threat_stack: times 16 dd 0
;--------------------------------------------------------------------
;-------------------------------------------------
 
open_file:
mov [func_70.func_n],5
mov [func_70.param1],0
1807,7 → 1771,6
jz @f
mcall 4,400*65536+31,0x80CC0000,error_open_file_string
jmp open_file
;--------------------------------------------------------------------
@@:
; mov edx,[blocks_counter]
; mov edi,[blocks_table]
1909,7 → 1872,6
je @f
movsb
jmp @b
;--------------------------------------
@@:
mov byte [edi],0
sub esi,path
1982,7 → 1944,7
call [option_box_draw]
@@:
jmp .1
;--------------------------------------------------------------------
 
.mouse:
bt [flags],2
jnc @f
1995,7 → 1957,7
call [option_box_mouse]
@@:
jmp .2
;--------------------------------------------------------------------
 
.keys:
mcall 2
cmp ah,13
2014,13 → 1976,11
jne @f
mov edx,op2
jmp .eb1_2
;--------------------------------------
@@:
cmp edx,op2
jne @f
mov edx,op3
jmp .eb1_2
;--------------------------------------
@@:
mov edx,op1
.eb1_2:
2027,7 → 1987,6
mov [option_group1],edx
pop edx
jmp .1
;--------------------------------------
.eb1_1:
cmp ah,48
jb .eb1_3
2052,7 → 2011,7
push dword [ed_box_data+4]; [esp]
call [edit_box_draw]
jmp .2
;--------------------------------------
 
.eb2:
bt [flags],3
jnc .eb3
2064,7 → 2023,6
jne @f
mov edx,op12
jmp .eb2_1
;--------------------------------------
@@:
mov edx,op11
.eb2_1:
2071,7 → 2029,6
mov [option_group2],edx
pop edx
jmp .1
;--------------------------------------
.eb2_2:
cmp ah,182
je .eb
2098,7 → 2055,6
push dword [ed_box_data+4];[esp]
call [edit_box_draw]
jmp .2
;--------------------------------------
.eb3:
bt [flags],9
jnc .eb
2129,13 → 2085,11
dec [edit4.shift]
dec [edit4.shift+4]
jmp .2
;--------------------------------------
@@:
pop edx
dec [edit5.shift]
dec [edit5.shift+4]
jmp .2
;--------------------------------------
.eb3_1:
push edx
mov edx,[edit4.flags]
2145,7 → 2099,6
mov [edit5.flags],2
mov [edit4.flags],0
jmp .eb3_2
;--------------------------------------
@@:
pop edx
mov [edit4.flags],2
2156,12 → 2109,12
push dword [ed_box_data+8]
call [edit_box_key]
jmp .1
;--------------------------------------
 
.eb:
push dword [ed_box_data+4];[esp]
call [edit_box_key]
jmp .2
;--------------------------------------------------------------------
 
.button:
mcall 17
cmp ah,1
2175,7 → 2128,12
.4:
mcall 13,180*65536+220,25*65536+70,frgrd_color
ret
;--------------------------------------------------------------------
 
 
;-------------------------------------------------
;-------------------------------------------------
;-------------------------------------------------
 
strtohex:
;enter: edi - pointer to string,ebx - pointer to size of string; exit: eax in hex
mov esi,hex8_string
2242,7 → 2200,7
inc eax
mov [cursor],eax
jmp .end
;--------------------------------------------------------------------
 
.back:
cmp eax,[current_offset] ;back
jg Ctrl_G
2263,7 → 2221,6
inc edx
mov [cursor],edx
jmp .end
;--------------------------------------------------------------------
.abs:
mov esi,[screen_table]
mov esi,[esi]
2282,7 → 2239,7
mov [cursor],eax
.end:
jmp red
;--------------------------------------------------------------------
 
Ctrl_B:
bts [flags],9
mov dword [ed_box_data],2
2318,7 → 2275,6
jb @f
pop eax
jmp Ctrl_B
 
@@:
pop [shblock_beg]
cmp eax,[shblock_beg]
2329,7 → 2285,7
bts [flags],8
.end:
jmp red
;--------------------------------------------------------------------
 
Ctrl_F:
bts [flags],3
mov dword [ed_box_data],1
2386,7 → 2342,6
je .8
mov edi,find_string
jmp .5
;--------------------------------------
.8:
loop @b
sub esi,[file_buffer]
2422,7 → 2377,7
btr [flags],0
@@:
jmp red
;--------------------------------------------------------------------
 
invert_byte:
mov ebx,[current_offset]
cmp ebx,[file_size]
2430,12 → 2385,14
add ebx,[file_buffer]
not byte [ebx]
jmp red
;--------------------------------------------------------------------
 
 
Insert: ;¯¥à¥ª«î祭¨¥ ०¨¬  ¢áâ ¢ª¨/§ ¬¥­ë
btc [flags],1 ;not [insert_mod]
call show_insert
jmp red
;--------------------------------------------------------------------
 
 
DEL:
bt [flags],1
jnc still
2465,7 → 2422,8
dec [file_size]
call show_file_size
jmp red
;--------------------------------------------------------------------
 
 
BackSpace:
bt [flags],1 ;cmp [insert_mod],0
jnc still ;je still
2490,12 → 2448,12
mov [edi+esi-1],al
inc edi
jmp @b
;--------------------------------------
@@:
dec [file_size]
call show_file_size
jmp red
;--------------------------------------------------------------------
 
 
Ctrl_UP:
cmp [begin_offset],0
je @f
2503,7 → 2461,8
sub [begin_offset],eax
@@:
ret
;--------------------------------------------------------------------
 
 
Ctrl_DOWN:
mov eax,[cursor]
dec eax
2516,7 → 2475,8
add [begin_offset],ebx
@@:
ret
;--------------------------------------------------------------------
 
 
UP:
mov eax,[current_offset]
cmp eax,[bytes_per_line]
2534,7 → 2494,8
shl ax,1
sub [cursor],eax
jmp red
;--------------------------------------------------------------------
 
 
DOWN: ;­  áâப㠢­¨§
mov eax,[current_offset]
add eax,[bytes_per_line]
2560,19 → 2521,18
mov eax,[bytes_per_line]
add [begin_offset],eax
ret
;--------------------------------------------------------------------
 
 
LEFT:
cmp [cursor],1
jbe @f
dec [cursor]
jmp .end
;--------------------------------------
@@:
cmp [begin_offset],0 ;ªãàá®à ­  ¯¥à¢®© áâப¥ ᮠᬥ饭¨¥¬ 0?
jne @f ;¨­ ç¥ ᬥ頥¬ á ¯à®ªàã⪮© ¢¢¥àå ¢¢¥àå ¨ ¢ ª®­¥æ áâப¨
; inc [cursor]
jmp .end;still ;⮣¤  á⮯
;--------------------------------------
@@:
mov eax,[bytes_per_line]
sub [begin_offset],eax
2581,7 → 2541,8
add [cursor],eax
.end:
ret
;--------------------------------------------------------------------
 
 
RIGHT:
mov ecx,[begin_offset] ;¢ëç¨á«ï¥¬ ᬥ饭¨¥ ªãàá®à 
mov edx,[cursor] ;¤«ï ¯à®¢¥àª¨ áãé¥á⢮¢ ­¨ï
2602,7 → 2563,6
jbe @f
inc [cursor] ;ªãàá®à ¢¯à ¢®
jmp red
;--------------------------------------
@@:
mov ecx,[bytes_per_line] ;ᬥ頥¬áï ­  áâà®çªã ¢­¨§
add [begin_offset],ecx ;á ¯à®ªàã⪮©
2610,7 → 2570,8
dec cx
sub [cursor],ecx
jmp red
;--------------------------------------------------------------------
 
 
PGDN:
mov edi,[screen_table]
mov eax,[edi]
2638,7 → 2599,8
; add ebx,ecx
; mov [cursor],ebx
jmp red
;--------------------------------------------------------------------
 
 
PGUP:
mov eax,[screen_table]
mov eax,[eax]
2647,11 → 2609,11
jbe @f
call Ctrl_HOME
jmp red
;--------------------------------------
@@:
sub [begin_offset],eax
jmp red
;--------------------------------------------------------------------
 
 
HOME:
mov eax,[cursor]
dec ax
2666,7 → 2628,8
dec [cursor]
@@:
ret
;--------------------------------------------------------------------
 
 
END_:
mov eax,[cursor]
dec ax
2690,12 → 2653,14
dec eax
mov [cursor],eax
jmp red
;--------------------------------------------------------------------
 
 
Ctrl_HOME:
mov [begin_offset],0
mov [cursor],1
ret
;--------------------------------------------------------------------
 
 
Ctrl_END:
mov eax,[file_size]
mov ecx,[screen_table]
2722,11 → 2687,12
mov [begin_offset],eax
mov [cursor],edx
jmp red
;--------------------------------------------------------------------
 
 
ESC:
btr [flags],8
jmp red
;--------------------------------------------------------------------
 
copy_to_buf:
bt [flags],8
jnc .1
2747,17 → 2713,16
bts [flags],10
xor eax,eax
ret
;---------------------------------------------------------------------
.1:
or eax,-1
ret
;--------------------------------------------------------------------
 
Ctrl_C:
call copy_to_buf
jmp still
;--------------------------------------------------------------------
 
shblock_sz dd 0
;--------------------------------------------------------------------
 
Ctrl_V:
bt [flags],10
jnc still
2809,7 → 2774,6
dec eax
mov [shblock_end],eax
jmp red
;--------------------------------------
.del:
dec ebx
jz red
2819,8 → 2783,7
mov esi,edi
add esi,ebx
cld
@@:
movsb
@@: movsb
loop @b
sub [file_size],ebx
call raspred_mem
2829,7 → 2792,7
dec eax
mov [shblock_end],eax
jmp red
;--------------------------------------------------------------------
 
;¥á«¨ ¡«®ª ­¥ ¢ë¤¥«¥­, â® ¢áâ ¢«ï¥¬ ¡«®ª ¯¥à¥¤ ªãàá®à®¬
.past_kurs:
; bt [flags],1
2838,7 → 2801,7
; add esi,[current_offset]
; jmp red
jmp still
;--------------------------------------------------------------------
 
Ctrl_X:
bt [flags],1
jnc still
2886,6 → 2849,7
inc eax
mov [cursor],eax
jmp red
 
;---------------------------------------------------------------------
open_dialog:
mov [OpenDialog_data.type],0 ; Open
2914,8 → 2878,13
mov [edit1.pos],esi
jmp open_file
;---------------------------------------------------------------------
 
; DATA AREA
 
 
;---------------------------------------------------------
;----------------------- DATA AREA------------------------
;--------------------------------------------------------------------
;---------------------------------------------------------
align 4
ProcLib_import:
OpenDialog_Init dd aOpenDialog_Init
3259,7 → 3228,8
.e11:
.21 db 'ASCII'
.e21:
;--------------------------------------------------------------------
 
 
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
 
3320,7 → 3290,7
;8: 1 - ¢ë¤¥«¥­ ¡«®ª
;9: ¢ edit_box - ®¡à ¡®âª  Ctrl_B
;10: ¢ ¯ ¬ï⨠"¢¨á¨â" ᪮¯¨à®¢ ­­ë© ¡«®ª
;--------------------------------------------------------------------
 
help_text:
if lang eq ru
db 'Ctrl+O - ®âªàëâì ä ©« '
3368,7 → 3338,10
db 'Ctrl+X - cut area into buffer '
end if
help_end:
;--------------------------------------------------------------------
 
 
 
 
;align 4096
font_buffer file 'cp866-8x16' ;ASCII+cp866 (+ð,ñ)
cp1251 file 'cp1251-8x16'
3430,8 → 3403,8
start_temp_file_name: db 'temp.bin',0
 
;---------------------------------------------------------------------
 
I_END:
;--------------------------------------------------------------------
file_name:
cur_dir_path rb 4096
buf_cmd_lin rb 0