forked from KolibriOS/kolibrios
Tinypad 4.0.4 in progress
git-svn-id: svn://kolibrios.org@258 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
355
programs/develop/tinypad/trunk/tp-button.asm
Normal file
355
programs/develop/tinypad/trunk/tp-button.asm
Normal file
@@ -0,0 +1,355 @@
|
||||
button:
|
||||
mcall 17
|
||||
cmp al,0
|
||||
jne still
|
||||
shr eax,8
|
||||
|
||||
cmp [bot_mode],0
|
||||
je @f
|
||||
mov ebx,eax
|
||||
mov al,3
|
||||
call [bot_dlg_handler]
|
||||
jmp still
|
||||
|
||||
@@: mov esi,accel_table2
|
||||
.acc: cmp eax,[esi]
|
||||
jne @f
|
||||
call dword[esi+4]
|
||||
jmp still.skip_write
|
||||
@@: add esi,8
|
||||
cmp byte[esi],0
|
||||
jne .acc
|
||||
|
||||
jmp still.skip_write
|
||||
|
||||
; cmp eax,BUTTON_SCRLUP
|
||||
; jne not_up
|
||||
btn.scroll_up:
|
||||
dec [top_line]
|
||||
jns @f
|
||||
inc [top_line]
|
||||
ret;jmp still.skip_write
|
||||
@@: call check_inv_all.skip_check
|
||||
ret
|
||||
; not_up:
|
||||
|
||||
; cmp eax,BUTTON_SCRLDN
|
||||
; jne not_down
|
||||
btn.scroll_down:
|
||||
inc [top_line]
|
||||
mov eax,[lines]
|
||||
sub eax,[lines.scr]
|
||||
cmp eax,[top_line]
|
||||
jge @f
|
||||
dec [top_line]
|
||||
;dec eax
|
||||
;mov [top_line],eax
|
||||
ret;jmp still.skip_write
|
||||
@@: call check_inv_all.skip_check
|
||||
ret
|
||||
; not_down:
|
||||
|
||||
; cmp eax,BUTTON_SCRLLT
|
||||
; jne not_left
|
||||
btn.scroll_left:
|
||||
dec [left_col]
|
||||
jns @f
|
||||
inc [left_col]
|
||||
ret;jmp still.skip_write
|
||||
@@: call check_inv_all.skip_check
|
||||
ret
|
||||
; not_left:
|
||||
|
||||
; cmp eax,BUTTON_SCRLRT
|
||||
; jne not_right
|
||||
btn.scroll_right:
|
||||
inc [left_col]
|
||||
mov eax,[columns]
|
||||
sub eax,[columns.scr]
|
||||
cmp eax,[left_col]
|
||||
jge @f
|
||||
dec [left_col]
|
||||
;dec eax
|
||||
;mov [left_col],eax
|
||||
ret;jmp still.skip_write
|
||||
@@: call check_inv_all.skip_check
|
||||
ret
|
||||
; not_right:
|
||||
|
||||
; SEARCH {
|
||||
; search:
|
||||
; cmp al,BUTTON_SEARCH
|
||||
; jne no_search
|
||||
btn.search:
|
||||
key.f3:
|
||||
call search
|
||||
jc @f
|
||||
call check_inv_all
|
||||
@@: ret
|
||||
|
||||
|
||||
func search
|
||||
cld
|
||||
mov ecx,[pos.y]
|
||||
mov edx,ecx
|
||||
call get_line_offset
|
||||
cmp word[esi],0
|
||||
je .exit
|
||||
call get_real_length
|
||||
add esi,4
|
||||
or eax,eax
|
||||
jz .end_line.2
|
||||
mov ecx,eax
|
||||
sub ecx,[pos.x]
|
||||
push esi
|
||||
add esi,[pos.x]
|
||||
;dec ecx
|
||||
;inc esi
|
||||
jmp @f
|
||||
|
||||
.next_line:
|
||||
push esi
|
||||
@@: sub ecx,[s_search.size]
|
||||
inc ecx
|
||||
|
||||
.next_char:
|
||||
dec ecx
|
||||
js .end_line
|
||||
xor edi,edi
|
||||
|
||||
.next_ok:
|
||||
movzx eax,byte[edi+esi]
|
||||
movzx ebx,byte[edi+s_search]
|
||||
|
||||
cmp al,$61
|
||||
jb @f
|
||||
add al,[eax+add_table-$61]
|
||||
@@: cmp bl,$61
|
||||
jb @f
|
||||
add bl,[ebx+add_table-$61]
|
||||
@@:
|
||||
cmp al,bl
|
||||
je @f
|
||||
|
||||
inc esi
|
||||
jmp .next_char
|
||||
@@:
|
||||
inc edi
|
||||
cmp edi,[s_search.size]
|
||||
jne .next_ok
|
||||
|
||||
.found:
|
||||
add esp,4
|
||||
mov [pos.y],edx
|
||||
mov [sel.y],edx
|
||||
mov ecx,edx
|
||||
lea eax,[esi-4]
|
||||
call get_line_offset
|
||||
sub eax,esi
|
||||
mov [sel.x],eax
|
||||
add eax,[s_search.size]
|
||||
mov [pos.x],eax
|
||||
mov [s_status],0
|
||||
clc
|
||||
ret
|
||||
|
||||
.end_line:
|
||||
pop esi
|
||||
.end_line.2:
|
||||
movzx eax,word[esi-4]
|
||||
add esi,eax;[esi-4]
|
||||
inc edx
|
||||
call get_real_length
|
||||
mov ecx,eax
|
||||
lodsd
|
||||
or eax,eax
|
||||
jnz .next_line
|
||||
.exit:
|
||||
mov [s_status],s_text_not_found
|
||||
stc
|
||||
ret
|
||||
endf
|
||||
|
||||
; SEARCH }
|
||||
|
||||
; no_search:
|
||||
|
||||
; TOOLBAR {
|
||||
; cmp eax,10000
|
||||
; jb no_toolbar
|
||||
|
||||
; add eax,-10000
|
||||
; jnz @f
|
||||
btn.compile:
|
||||
key.ctrl_f9:
|
||||
mov bl,0;[run_outfile],0
|
||||
call start_fasm
|
||||
ret;jmp still
|
||||
; @@: dec eax
|
||||
; jnz @f
|
||||
btn.compile_run:
|
||||
key.f9:
|
||||
mov bl,1;[run_outfile],1
|
||||
call start_fasm
|
||||
ret;jmp still
|
||||
; @@: dec eax
|
||||
; jnz @f
|
||||
btn.debug_board:
|
||||
call open_debug_board
|
||||
ret;jmp still
|
||||
; @@: dec eax
|
||||
; jnz still
|
||||
btn.sysfuncs_txt:
|
||||
call open_sysfuncs_txt
|
||||
ret;jmp still
|
||||
; TOOLBAR }
|
||||
|
||||
; no_toolbar:
|
||||
|
||||
; cmp al,4
|
||||
; jne noid4
|
||||
|
||||
; LOAD_FILE {
|
||||
; do_load_file:
|
||||
btn.load_file:
|
||||
key.ctrl_l:
|
||||
; cmp [s_fname],'/'
|
||||
; jne @f
|
||||
; call load_hd_file
|
||||
; jmp .restorecursor
|
||||
; @@: call load_file
|
||||
call load_file
|
||||
jnc @f
|
||||
ret
|
||||
; .restorecursor:
|
||||
@@:
|
||||
xor eax,eax
|
||||
mov [top_line],eax
|
||||
mov [left_col],eax
|
||||
mov [pos.x],eax
|
||||
mov [pos.y],eax
|
||||
mov [sel.x],eax
|
||||
mov [sel.y],eax
|
||||
|
||||
mov [modified],al
|
||||
|
||||
; enable color syntax for ASM and INC files:
|
||||
mov [asm_mode],al
|
||||
|
||||
mov eax,[f_info.length] ; [s_fname.size]
|
||||
add eax,f_info.path ; s_fname
|
||||
mov byte[eax],0
|
||||
mov ecx, dword [eax-3]
|
||||
or ecx, 0x202020
|
||||
cmp ecx, 'asm'
|
||||
jne @f
|
||||
inc [asm_mode]
|
||||
jmp .nocol
|
||||
@@: cmp ecx, 'inc'
|
||||
jne .nocol
|
||||
inc [asm_mode]
|
||||
.nocol:
|
||||
|
||||
update_caption:
|
||||
macro unused {
|
||||
movzx ecx,[f_info.length] ; [s_fname.size]
|
||||
add ecx,10 ; strlen(" - TINYPAD");
|
||||
cmp ecx,[s_title.size]
|
||||
jne @f
|
||||
add ecx,-10
|
||||
mov esi,f_info.path ; s_fname ; strcmp(s_fname,header);
|
||||
mov edi,s_title
|
||||
repe cmpsb
|
||||
jne @f
|
||||
; call draw_file
|
||||
clc
|
||||
ret;jmp still
|
||||
@@:
|
||||
}
|
||||
; set window title:
|
||||
mov esi,f_info.path ; s_fname
|
||||
mov edi,s_title
|
||||
|
||||
cld
|
||||
mov ecx,[f_info.length] ; [s_fname.size]
|
||||
jecxz @f
|
||||
;lea eax,[ecx+10]
|
||||
;mov [s_title.size],eax
|
||||
;cld
|
||||
rep movsb
|
||||
|
||||
mov dword[edi],' - '
|
||||
add edi,3
|
||||
@@: mov esi,htext
|
||||
mov ecx,htext.size
|
||||
rep movsb
|
||||
|
||||
mov al,0
|
||||
stosb
|
||||
|
||||
; call drawwindow
|
||||
clc
|
||||
ret;jmp still
|
||||
; LOAD_FILE }
|
||||
|
||||
; noid4:
|
||||
|
||||
; cmp al, 2
|
||||
; jz yessave
|
||||
|
||||
; dec al ; close if butid == 1
|
||||
; jnz nosave
|
||||
; EXIT:
|
||||
btn.close_main_window:
|
||||
key.alt_x:
|
||||
mov esi,self_path
|
||||
mov byte[esi+PATHL-1],0
|
||||
mov edi,f_info.path
|
||||
cld
|
||||
@@: lodsb
|
||||
stosb
|
||||
or al,al
|
||||
jnz @b
|
||||
; mov ebx,f_info
|
||||
; mov dword[ebx+0],1
|
||||
; mov dword[ebx+8],self_path
|
||||
; mov dword[ebx+12],0
|
||||
; mcall 58
|
||||
|
||||
mov [f_info70+0],2
|
||||
mov [f_info70+4],0
|
||||
mov [f_info70+8],0
|
||||
mov [f_info70+12],TINYPAD_END
|
||||
mov [f_info70+16],0
|
||||
mov byte[f_info70+20],0
|
||||
mov [f_info70+21],f_info.path
|
||||
mcall 70,f_info70
|
||||
|
||||
; test eax,eax
|
||||
; je .close
|
||||
; cmp eax,6
|
||||
; je .close
|
||||
; ret
|
||||
|
||||
.close:
|
||||
mov [main_closed],1
|
||||
mcall -1
|
||||
|
||||
; SAVE_FILE {
|
||||
; yessave:
|
||||
; btn.save_file:
|
||||
; key.ctrl_s:
|
||||
; mov [bot_mode],1
|
||||
; mov [bot_save_mode],1
|
||||
; mov [bot_dlg_height],16*2+4*2-1
|
||||
; mov [bot_dlg_handler],osdlg_handler
|
||||
; call drawwindow
|
||||
; call save_file
|
||||
; ret;jmp still
|
||||
; SAVE_FILE }
|
||||
|
||||
; nosave:
|
||||
; btn.save_enter_name:
|
||||
; inc al
|
||||
; call read_string
|
||||
; ret;jmp still
|
Reference in New Issue
Block a user