forked from KolibriOS/kolibrios
82ef5da45f
git-svn-id: svn://kolibrios.org@258 a494cfbc-eb01-0410-851d-a64ba20cac60
355 lines
6.0 KiB
NASM
355 lines
6.0 KiB
NASM
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 |