modernization editbox
git-svn-id: svn://kolibrios.org@289 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
; <Lrz> 19.01.2007 ॠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> ⥪<><E2A5AA><EFBFBD> <20><> shift
|
||||
; <Lrz> 22.01.2007 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD> ࠡ<><E0A0A1><EFBFBD> <20> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 㤠<><E3A4A0><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>४⭠<E0A5AA> ࠡ<><E0A0A1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>襩 del & backspase
|
||||
; <Lrz> 20.01.2007 ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> ⥪<><E2A5AA><EFBFBD> <20><> shift
|
||||
; <Lrz> 12.12.2006 ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>প<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> insert <20> ᥣ<><E1A5A3><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ࠡ<>⠥<EFBFBD>!!!!
|
||||
; <Lrz> 07.12.2006 <20>த<EFBFBD><E0AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠡ<><E0A0A1><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>ࠡ<EFBFBD>⪮<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>࣫<EFBFBD><E0A3AB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨, <20><><EFBFBD><EFBFBD>ࠡ<EFBFBD>⠭ <20>뢮<EFBFBD> ⥪<><E2A5AA><EFBFBD>, <20> ⠪<> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᥭ<EFBFBD><E1A5AD> ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD>.
|
||||
; <Lrz> 03.09.2006 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⪠<EFBFBD><E2AAA0><EFBFBD><EFBFBD><EFBFBD> <20><> 16 <20><>⭮<EFBFBD> <20><><EFBFBD>䬥⨪<E4ACA5>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
@@ -144,12 +145,12 @@ ret
|
||||
shl ecx,16
|
||||
mov cx,13
|
||||
; sub ecx,1
|
||||
mov edx,[esp+4] ;color
|
||||
; pop edx ;color
|
||||
; mov edx,ed_color
|
||||
mov eax,13
|
||||
int 0x40
|
||||
;popa
|
||||
ret 4
|
||||
ret
|
||||
|
||||
jmp @f
|
||||
.draw_bg:
|
||||
@@ -298,7 +299,7 @@ ret
|
||||
shl ebx,16
|
||||
mov bx,ed_width
|
||||
dec ebx
|
||||
push dword ed_color
|
||||
mov edx,ed_color
|
||||
call .draw_bg_eax
|
||||
mov dword [esp+28],0
|
||||
@@: popad
|
||||
@@ -356,7 +357,10 @@ pusha
|
||||
cmp ah,'9'
|
||||
ja .no_figure
|
||||
@@: ; <20><EFBFBD><E0AEA2>塞, <20><>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ecx,ed_size
|
||||
mov edx, ed_max
|
||||
cmp ecx,edx
|
||||
jae .no_figure
|
||||
mov ebx, ed_pos
|
||||
cmp ebx,edx
|
||||
jl @f ; <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ࠢ<><E0A0A2>
|
||||
@@ -408,23 +412,23 @@ pusha
|
||||
; 㢥<><E3A2A5>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD> ࠧ<><E0A0A7><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>樨
|
||||
inc dword ed_size
|
||||
|
||||
push dword ed_pos
|
||||
push dword ed_size
|
||||
;push dword ed_pos
|
||||
;push dword ed_size
|
||||
; push .return
|
||||
call .draw_all2
|
||||
inc dword ed_pos
|
||||
;.return:
|
||||
jmp .draw_cursor_text
|
||||
jmp .shift;.draw_cursor_text
|
||||
.delete:
|
||||
|
||||
mov edx,ed_size
|
||||
mov ecx,ed_pos
|
||||
|
||||
cmp edx,ecx
|
||||
jg @f
|
||||
test word ed_flags,ed_shift_on
|
||||
jne .del_bac
|
||||
popa
|
||||
ret
|
||||
|
||||
.bac_del:
|
||||
@@: call .del_char
|
||||
jmp .draw_all
|
||||
|
||||
@@ -435,21 +439,35 @@ pusha
|
||||
mov ecx,ed_pos
|
||||
test ecx,ecx
|
||||
jnz @f
|
||||
test word ed_flags,ed_shift_on
|
||||
jne .bac_del
|
||||
|
||||
;jmp @b
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
.del_bac:
|
||||
@@: cmp edx,ecx ;if ed_pos=ed_size
|
||||
je @f
|
||||
dec ecx
|
||||
call .del_char
|
||||
@@:
|
||||
@@: test word ed_flags,ed_shift_on
|
||||
jne .bac_del
|
||||
dec dword ed_pos
|
||||
|
||||
.draw_all:
|
||||
push dword ed_pos
|
||||
push dword ed_size
|
||||
push .draw_cursor_text;eax
|
||||
dec dword ed_size
|
||||
push .shift;.draw_cursor_text;eax
|
||||
|
||||
test word ed_flags,ed_shift_on
|
||||
je @f
|
||||
mov eax,ed_shift_pos
|
||||
mov ebx,ed_size
|
||||
sub ebx,eax
|
||||
mov ed_size,ebx
|
||||
jmp .draw_all2
|
||||
|
||||
@@: dec dword ed_size
|
||||
|
||||
.draw_all2:
|
||||
call .clear_cursor
|
||||
call .check_offset
|
||||
@@ -457,16 +475,16 @@ pusha
|
||||
push eax
|
||||
mov ebx,ed_offset
|
||||
add eax,ebx ;eax = w_off= ed_offset+width
|
||||
mov ebx,[esp+8] ;ed_size
|
||||
mov ebx,ed_size
|
||||
|
||||
cmp eax,ebx
|
||||
jb @f
|
||||
mov eax,[esp+12] ; ed_pos
|
||||
mov eax,ed_pos
|
||||
sub ebx,eax
|
||||
mov ecx,ed_offset
|
||||
sub eax,ecx
|
||||
jmp .nxt
|
||||
@@: mov ebx,[esp+12];ed_pos
|
||||
@@: mov ebx,ed_pos
|
||||
push ebx
|
||||
sub eax,ebx
|
||||
mov ebx,eax ;It is don't optimal
|
||||
@@ -492,44 +510,28 @@ pusha
|
||||
lea ecx,[edx*2+edx]
|
||||
shl ecx,1
|
||||
mov bx,cx
|
||||
push dword ed_color
|
||||
mov edx,ed_color
|
||||
call .draw_bg_eax
|
||||
ret 8
|
||||
ret
|
||||
; jmp .shift
|
||||
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> left ---
|
||||
.left: test word ed_flags,ed_shift
|
||||
je @f
|
||||
test word ed_flags,ed_shift_on
|
||||
jne @f
|
||||
push dword ed_pos
|
||||
pop dword ed_shift_pos
|
||||
or word ed_flags,ed_shift_on
|
||||
@@: mov ebx,ed_pos
|
||||
.left: call .sh_enable
|
||||
mov ebx,ed_pos
|
||||
test ebx,ebx
|
||||
jz .nd_k
|
||||
call .clear_cursor
|
||||
dec dword ed_pos
|
||||
jmp .nd_k
|
||||
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> right ---
|
||||
.right:
|
||||
test word ed_flags,ed_shift
|
||||
je @f
|
||||
test word ed_flags,ed_shift_on
|
||||
jne @f
|
||||
push dword ed_pos
|
||||
pop dword ed_shift_pos
|
||||
or word ed_flags,ed_shift_on
|
||||
@@: mov ebx,ed_pos
|
||||
.right: call .sh_enable
|
||||
mov ebx,ed_pos
|
||||
cmp ebx,ed_size
|
||||
je .nd_k
|
||||
call .clear_cursor
|
||||
inc dword ed_pos
|
||||
jmp .nd_k
|
||||
.home:
|
||||
; test word ed_flags,ed_shift
|
||||
; je @f
|
||||
; push dword ed_pos
|
||||
; pop dword ed_shift_pos
|
||||
@@: mov ebx,ed_pos
|
||||
.home: call .sh_enable
|
||||
mov ebx,ed_pos
|
||||
test ebx,ebx
|
||||
jz .nd_k
|
||||
call .clear_cursor
|
||||
@@ -537,12 +539,8 @@ pusha
|
||||
mov ed_pos,eax
|
||||
jmp .nd_k
|
||||
|
||||
.end:
|
||||
; test word ed_flags,ed_shift
|
||||
; je @f
|
||||
; push dword ed_pos
|
||||
; pop dword ed_shift_pos
|
||||
@@: mov ebx,ed_pos
|
||||
.end: call .sh_enable
|
||||
mov ebx,ed_pos
|
||||
cmp ebx,dword ed_size
|
||||
je @f
|
||||
call .clear_cursor
|
||||
@@ -554,27 +552,6 @@ pusha
|
||||
call .draw_cursor
|
||||
|
||||
.shift: ;;;;;;;SHIFT
|
||||
;----------- <20>⫠<EFBFBD><E2ABA0><EFBFBD>
|
||||
pushad
|
||||
mov [data_of_code],0
|
||||
mov ax,word ed_flags
|
||||
mov edi,data_of_code
|
||||
call .str
|
||||
;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> 䮭<>
|
||||
mov eax,13
|
||||
mov ebx,178*65536+36
|
||||
mov ecx,28*65536+10
|
||||
xor edx,edx
|
||||
int 0x40
|
||||
;<3B>뢮<EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20><> <20><>࠭
|
||||
mov eax,4
|
||||
mov ebx,180*65536+30
|
||||
mov ecx,0x10DDBBCC
|
||||
mov edx,data_of_code
|
||||
mov esi,4
|
||||
int 0x40
|
||||
popad
|
||||
;----------- <20>⫠<EFBFBD><E2ABA0><EFBFBD>
|
||||
|
||||
call .draw_bg
|
||||
test word ed_flags,ed_shift
|
||||
@@ -628,14 +605,7 @@ pusha
|
||||
sub ebx,ecx
|
||||
sub ebx,eax
|
||||
.nxt_f:
|
||||
; mov ebp,eax ;<3B><EFBFBD>ઠ <20><> <20><>室 <20><><EFBFBD><EFBFBD><EFBFBD>訢<EFBFBD><E8A8A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>।<EFBFBD><E0A5A4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
; add ebp,ebx
|
||||
; pop edx
|
||||
; cmp ebp,edx
|
||||
; je .ff
|
||||
; inc ebx
|
||||
|
||||
.ff: mov edx,ebx
|
||||
mov edx,ebx
|
||||
lea ebx,[eax*2+eax]
|
||||
shl ebx,1
|
||||
add ebx,ed_left
|
||||
@@ -644,38 +614,93 @@ pusha
|
||||
lea ecx,[edx*2+edx]
|
||||
shl ecx,1
|
||||
mov bx,cx
|
||||
; mov ebp,ed_color
|
||||
; not ebp
|
||||
push dword shift_color
|
||||
mov edx,shift_color
|
||||
call .draw_bg_eax
|
||||
; pop edx
|
||||
; or word ed_flags,ed_shift
|
||||
and word ed_flags,1111111111111011b
|
||||
jmp .draw_cursor_text
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
.f_exit: and word ed_flags,ed_shift_cl
|
||||
jmp .draw_cursor_text
|
||||
@@:
|
||||
popa
|
||||
ret
|
||||
|
||||
.sh_enable:
|
||||
test word ed_flags,ed_shift
|
||||
je @f
|
||||
test word ed_flags,ed_shift_on
|
||||
jne @f
|
||||
push dword ed_pos
|
||||
pop dword ed_shift_pos
|
||||
or word ed_flags,ed_shift_on
|
||||
@@: ret
|
||||
|
||||
;- 㤠<><E3A4A0><EFBFBD><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD>
|
||||
;<3B>室<EFBFBD><E5AEA4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> edx=ed_size;ecx=ed_pos
|
||||
.del_char:
|
||||
mov esi,ed_text
|
||||
|
||||
|
||||
test word ed_flags,ed_shift_on
|
||||
je @f
|
||||
mov eax,dword ed_shift_pos
|
||||
mov ebx,esi
|
||||
cmp eax,ecx
|
||||
jae .dh_n
|
||||
|
||||
mov ed_pos,eax ;<3B><><EFBFBD> <20><> <20><> <20>뫮 㡥<><E3A1A5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ebp,ecx
|
||||
sub ebp,eax
|
||||
add ebx,eax ;eax <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sub edx,ecx
|
||||
add esi,ecx
|
||||
|
||||
|
||||
mov ed_shift_pos,ebp
|
||||
jmp .del_ch_sh
|
||||
;<3B> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
.dh_n:
|
||||
mov ebp,eax
|
||||
sub ebp,ecx
|
||||
add ebx,ecx
|
||||
sub edx,eax
|
||||
add esi,eax
|
||||
mov ed_shift_pos,ebp
|
||||
jmp .del_ch_sh
|
||||
|
||||
@@: add esi,ecx ;㪠<><E3AAA0>⥫<EFBFBD> + ᬥ饭<E1ACA5><E9A5AD> <20> ॠ<>쭮<EFBFBD><ECADAE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ebx,esi
|
||||
inc esi
|
||||
cld
|
||||
|
||||
sub edx,ecx
|
||||
mov ecx,edx
|
||||
.del_ch_sh:
|
||||
;----------- <20>⫠<EFBFBD><E2ABA0><EFBFBD>
|
||||
pushad
|
||||
mov [data_of_code],0
|
||||
mov eax,ed_pos;word ed_flags
|
||||
mov edi,data_of_code
|
||||
call .str
|
||||
;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> 䮭<>
|
||||
mov eax,13
|
||||
mov ebx,178*65536+36
|
||||
mov ecx,28*65536+10
|
||||
xor edx,edx
|
||||
int 0x40
|
||||
;<3B>뢮<EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20><> <20><>࠭
|
||||
mov eax,4
|
||||
mov ebx,180*65536+30
|
||||
mov ecx,0x10DDBBCC
|
||||
mov edx,data_of_code
|
||||
mov esi,4
|
||||
int 0x40
|
||||
popad
|
||||
;----------- <20>⫠<EFBFBD><E2ABA0><EFBFBD>
|
||||
|
||||
push edi
|
||||
mov edi,ebx
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
dec ecx
|
||||
dec edx
|
||||
jns @b
|
||||
|
||||
pop edi
|
||||
|
@@ -1,2 +1,2 @@
|
||||
@fasm editbox.asm checkbox
|
||||
@fasm editbox.asm editbox
|
||||
@pause
|
@@ -101,7 +101,7 @@ draw_window: ;
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
editboxes:
|
||||
edit1 edit_box 168,10,50,0xffffff,0,0,0,512,ed_buffer.1,ed_focus
|
||||
edit1 edit_box 168,10,50,0xffffff,0,0,0,100,ed_buffer.1,ed_focus
|
||||
edit2 edit_box 168,10,30,0xffffff,0,0,0,99,ed_buffer.2,ed_figure_only
|
||||
edit3 edit_box 35,10,70,0xffffff,0,0,0,9,ed_buffer.3,ed_figure_only
|
||||
edit4 edit_box 16,10,90,0xffffff,0,0,0,1,ed_buffer.4,ed_figure_only
|
||||
@@ -109,14 +109,14 @@ editboxes_end:
|
||||
data_of_code dd 0
|
||||
data_of_code1 dd 0
|
||||
ed_buffer:
|
||||
.1: rb 513;512;256
|
||||
.1: rb 101;512;256
|
||||
.2: rb 100
|
||||
.3: rb 10
|
||||
.4: rb 2
|
||||
;text_b: db '<27><><EFBFBD>-<2D><> ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD>'
|
||||
;buffer: dd 0
|
||||
buffer_end:
|
||||
hed db 'EDITBOX optimization and retype <Lrz> date 19.01.2007'
|
||||
hed db 'EDITBOX optimization and retype <Lrz> date 22.01.2007'
|
||||
i_end1:
|
||||
rb 2048
|
||||
i_end:
|
||||
|
Reference in New Issue
Block a user