0,0 → 1,719 |
key: |
mcall 2 |
cmp [extended_key],1 |
je .extended_key |
test al, al |
jnz still |
cmp ah, 0xE0 |
jne @f |
mov [extended_key],1 |
jmp still |
@@: |
cmp ah,15 |
jne .no_tab |
inc [select_panel_counter] |
and [select_panel_counter],1b |
call draw_left_panel |
call draw_right_panel |
jmp still |
.no_tab: |
cmp ah,72 ; arrow up |
je key_72.1 |
cmp ah,80 ; arrow down |
je key_80.1 |
cmp ah,28 ; Enter |
je key_28.1 |
cmp ah,17 ; W |
je set_background |
cmp ah,19 ; R |
je reload_dir_1 |
cmp ah,42 |
je key_shift_up |
cmp ah,54 |
je key_shift_up |
cmp ah,170 |
je key_shift_down |
cmp ah,182 |
je key_shift_down |
cmp ah,29 |
je key_ctrl_up.1 |
cmp ah,157 |
je key_ctrl_down.1 |
cmp ah,56 |
je key_alt_up.1 |
cmp ah,184 |
je key_alt_down.1 |
cmp ah,206 ; NumPad+ Up |
je NumPad_plus_Up |
cmp ah,202 ; NumPad- Up |
je NumPad_minus_Up |
cmp ah,183 ; NumPad* Up |
je NumPad_sneg_Up |
cmp ah,158 |
je symbol_a_up |
cmp ah,59 ; down F1 |
je f_key_f1 |
cmp ah,60 ; down F2 |
je f_key_f2 |
cmp ah,61 ; down F3 |
je f_key_f3 ;sort_name |
cmp ah,62 ; down F4 |
je f_key_f4 ;sort_type |
cmp ah,63 ; down F5 |
je f_key_f5 ;sort_size |
cmp ah,64 ; down F6 |
je f_key_f6 ; sort_date |
cmp ah,65 ; down F7 |
je f_key_f7 ; |
cmp ah,66 ; down F8 |
je f_key_f8 ; delete_file |
cmp ah,88 ; down F12 |
je f_key_f12 |
jmp still |
;------------------------------------------------------------- |
.extended_key: |
mov [extended_key],0 |
key_80: |
cmp ah,80 ; arrow down |
jne key_72 |
.1: |
cmp [select_panel_counter],0 |
jne .right_1 |
mov eax,[left_folder_block] |
dec eax |
imul eax,10 |
cmp ax,[left_start_draw_cursor_line] |
jbe .marked_action ;still |
mov ax,[left_start_draw_cursor_line] |
add ax,10 |
cmp ax,[left_panel_y.size_y] |
jae @f |
.add_1: |
add [left_start_draw_cursor_line],10 |
call draw_left_panel_selection |
mov [drawing_panel_folder],1 |
.all: |
sub ecx,10 shl 16 |
mov edx,0xffffff |
int 0x40 |
mov [not_clear_lines],1 |
call draw_folder_data |
mov [not_clear_lines],0 |
jmp still |
.marked_action: |
cmp [marked_action],0 |
je still |
mov [marked_action],0 |
call draw_left_panel |
jmp still |
.marked_action_1: |
cmp [marked_action],0 |
je still |
mov [marked_action],0 |
call draw_right_panel |
jmp still |
@@: |
mov eax,[left_folder_block] |
sub eax,[max_panel_line] |
test eax,0x80000000 |
jz @f |
xor eax,eax |
@@: |
cmp [marked_action],0 |
jne @f |
cmp [left_start_draw_line],eax |
je still |
@@: |
mov [marked_action],0 |
inc [left_start_draw_line] |
call draw_left_panel |
jmp still |
.right_1: |
mov eax,[right_folder_block] |
dec eax |
imul eax,10 |
cmp ax,[right_start_draw_cursor_line] |
jbe .marked_action_1 ;still |
mov ax,[right_start_draw_cursor_line] |
add ax,10 |
cmp ax,[right_panel_y.size_y] |
jae @f |
.add_2: |
add [right_start_draw_cursor_line],10 |
call draw_right_panel_selection |
mov [drawing_panel_folder],2 |
jmp key_80.all |
@@: |
mov eax,[right_folder_block] |
sub eax,[max_panel_line] |
test eax,0x80000000 |
jz @f |
xor eax,eax |
@@: |
cmp [marked_action],0 |
jne @f |
cmp [right_start_draw_line],eax |
je still |
@@: |
mov [marked_action],0 |
inc [right_start_draw_line] |
call draw_right_panel |
jmp still |
;------------------------------------------------------------- |
key_72: |
cmp ah,72 ;arrow up |
jne key_81 |
.1: |
cmp [select_panel_counter],0 |
jne .right_1 |
mov ax,[left_start_draw_cursor_line] |
add ax,[left_panel_y.start_y] |
cmp [left_panel_y.start_y],ax |
je @f |
sub [left_start_draw_cursor_line],10 |
call draw_left_panel_selection |
mov [drawing_panel_folder],1 |
.all: |
add ecx,10 shl 16 |
mov edx,0xffffff |
int 0x40 |
mov [not_clear_lines],1 |
call draw_folder_data |
mov [not_clear_lines],0 |
jmp still |
@@: |
cmp [left_start_draw_line],0 |
je still |
dec [left_start_draw_line] |
call draw_left_panel |
jmp still |
.right_1: |
mov ax,[right_start_draw_cursor_line] |
add ax,[right_panel_y.start_y] |
cmp [right_panel_y.start_y],ax |
je @f |
sub [right_start_draw_cursor_line],10 |
call draw_right_panel_selection |
mov [drawing_panel_folder],2 |
jmp key_72.all |
@@: |
cmp [right_start_draw_line],0 |
je still |
dec [right_start_draw_line] |
call draw_right_panel |
jmp still |
;------------------------------------------------------------- |
key_81: |
cmp ah,81 ; PageDown |
jne key_73 |
mov eax,[max_panel_line] |
cmp [select_panel_counter],0 |
jne .right_1 |
mov ebx,[left_folder_block] |
sub ebx,eax |
test ebx,0x80000000 |
jnz .left_2 |
sub ebx,[left_start_draw_line] |
cmp ebx,eax |
ja .ok_1 |
mov ebx,[left_folder_block] |
sub ebx,eax |
call prepare_data_left_down |
ja @f |
cmp ebx,[left_start_draw_line] |
je still |
@@: |
mov [left_start_draw_line],ebx |
.left_3: |
dec eax |
imul eax,10 |
.left_1: |
mov [left_start_draw_cursor_line],ax |
call draw_left_panel |
jmp still |
.left_2: |
mov eax,[left_folder_block] |
sub eax,[left_start_draw_line] |
dec eax |
imul eax,10 |
cmp ax,[left_start_draw_cursor_line] |
jbe still |
jmp .left_1 |
.ok_1: |
add [left_start_draw_line],eax |
call draw_left_panel |
jmp still |
.right_1: |
mov ebx,[right_folder_block] |
sub ebx,eax |
test ebx,0x80000000 |
jnz .right_3 |
sub ebx,[right_start_draw_line] |
cmp ebx,eax |
jae .ok_2 |
mov ebx,[right_folder_block] |
sub ebx,eax |
call prepare_data_right_down |
ja @f |
cmp ebx,[right_start_draw_line] |
je still |
@@: |
mov [right_start_draw_line],ebx |
.right_4: |
dec eax |
imul eax,10 |
.right_2: |
mov [right_start_draw_cursor_line],ax |
call draw_right_panel |
jmp still |
.right_3: |
mov eax,[right_folder_block] |
sub eax,[right_start_draw_line] |
dec eax |
imul eax,10 |
cmp ax,[right_start_draw_cursor_line] |
jbe still |
jmp .right_2 |
.ok_2: |
add [right_start_draw_line],eax |
call draw_right_panel |
jmp still |
;------------------------------------------------------------- |
prepare_data_right_down: |
mov ecx,[right_folder_block] |
sub ecx,[right_start_draw_line] |
dec ecx |
imul ecx,10 |
cmp cx,[right_start_draw_cursor_line] |
ret |
;------------------------------------------------------------- |
prepare_data_left_down: |
mov ecx,[left_folder_block] |
sub ecx,[left_start_draw_line] |
dec ecx |
imul ecx,10 |
cmp cx,[left_start_draw_cursor_line] |
ret |
;------------------------------------------------------------- |
key_73: |
cmp ah,73 ; PageUp |
jne key_71 |
mov eax,[max_panel_line] |
cmp [select_panel_counter],0 |
jne .right_1 |
mov ebx,[left_start_draw_line] |
sub ebx,eax |
test ebx,0x8000000 |
jz @f |
cmp [left_start_draw_line],0 |
jne .draw_line_1 |
cmp [left_start_draw_cursor_line],0 |
je still |
mov [left_start_draw_cursor_line],0 |
.draw_line_1: |
mov [left_start_draw_line],0 |
call draw_left_panel |
jmp still |
@@: |
sub [left_start_draw_line],eax |
call draw_left_panel |
jmp still |
.right_1: |
mov ebx,[right_start_draw_line] |
sub ebx,eax |
test ebx,0x80000000 |
jz @f |
cmp [right_start_draw_line],0 |
jne .draw_line_2 |
cmp [right_start_draw_cursor_line],0 |
je still |
mov [right_start_draw_cursor_line],0 |
.draw_line_2: |
mov [right_start_draw_line],0 |
call draw_right_panel |
jmp still |
@@: |
sub [right_start_draw_line],eax |
call draw_right_panel |
jmp still |
;------------------------------------------------------------- |
key_71: |
cmp ah,71 ; Home |
jne key_79 |
cmp [select_panel_counter],0 |
jne .right_1 |
cmp [left_start_draw_line],0 |
jne .draw_left_panel |
cmp [left_start_draw_cursor_line],0 |
je still |
.draw_left_panel: |
mov [left_start_draw_line],0 |
mov [left_start_draw_cursor_line],0 |
call draw_left_panel |
jmp still |
.right_1: |
cmp [right_start_draw_line],0 |
jne .draw_right_panel |
cmp [right_start_draw_cursor_line],0 |
je still |
.draw_right_panel: |
mov [right_start_draw_line],0 |
mov [right_start_draw_cursor_line],0 |
call draw_right_panel |
jmp still |
;------------------------------------------------------------- |
key_79: |
cmp ah,79 ; End |
jne key_28 |
cmp [select_panel_counter],0 |
jne .right_1 |
mov eax,[left_folder_block] |
sub eax,[max_panel_line] |
test eax,0x80000000 |
jnz key_81.left_2 |
call prepare_data_left_down |
ja @f |
cmp eax,[left_start_draw_line] |
je still |
@@: |
mov [left_start_draw_line],eax |
mov eax,[max_panel_line] |
jmp key_81.left_3 |
.right_1: |
mov eax,[right_folder_block] |
sub eax,[max_panel_line] |
test eax,0x80000000 |
jnz key_81.right_3 |
call prepare_data_right_down |
ja @f |
cmp eax,[right_start_draw_line] |
je still |
@@: |
mov [right_start_draw_line],eax |
mov eax,[max_panel_line] |
jmp key_81.right_4 |
;------------------------------------------------------------- |
key_28: |
cmp ah,28 ; Enter |
jne key_ctrl_up |
.1: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je still |
cmp [alt_flag],1 |
je files_information |
|
mov [open_param],0 |
.2: |
cmp [select_panel_counter],0 |
jne .right_1 |
mov ebp,read_folder_name ;read_folder.name |
call calculate_left_data_1 |
add esi,32 |
cmp [exit_dir],1 |
je .up_patch |
test [esi],byte 0x10 |
jz file_no_folder |
cmp [open_param],0 |
jne still |
cmp [esi+40],word 2Eh |
je still |
cmp [esi+40],word '..' |
je .up_patch |
call calculate_key_28_1 |
mov [left_start_draw_cursor_line],0 |
mov [left_start_draw_line],0 |
jmp proc_read_folder |
.up_patch: |
call calculate_key_28_2 |
jmp proc_read_folder |
.right_1: |
mov ebp,read_folder_1_name ;read_folder_1.name |
call calculate_right_data_1 |
add esi,32 |
cmp [exit_dir],1 |
je .up_patch_1 |
test [esi],byte 0x10 |
jz file_no_folder |
cmp [esi+40],word 2Eh |
je still |
cmp [esi+40],word '..' |
je .up_patch_1 |
call calculate_key_28_1 |
mov [right_start_draw_cursor_line],0 |
mov [right_start_draw_line],0 |
jmp proc_read_folder_1 |
.up_patch_1: |
call calculate_key_28_2 |
jmp proc_read_folder_1 |
;--------------------------------------------------------------------- |
calculate_key_28_1: |
; mov edi,read_folder.name-1 |
mov edi,ebp |
dec edi |
inc ebp |
@@: |
inc edi |
cmp [edi],byte 0 |
jne @r |
cmp edi,ebp ;read_folder.name+1 |
je @f |
mov al,'/' |
mov [edi],al |
inc edi |
@@: |
add esi,40 |
@@: |
cld |
lodsb |
stosb |
cmp al,0 |
jnz @r |
ret |
;--------------------------------------------------------------------- |
calculate_key_28_2: |
mov [exit_dir],0 |
mov edi,ebp ;read_folder.name |
@@: |
inc edi |
cmp [edi],byte 0 |
jne @r |
mov [extension_size],edi |
dec edi |
@@: |
dec edi |
cmp [edi],byte '/' |
jne @r |
mov eax,ebp ;read_folder.name |
cmp edi,eax |
jbe @f |
mov [edi],byte 0 |
@@: |
inc edi |
mov [temp_counter_dword],edi |
dec edi |
sub [extension_size],edi |
mov [search_pre_folder],1 |
ret |
;--------------------------------------------------------------------- |
set_background: |
cmp [shift_flag],1 |
je .shift |
cmp [ctrl_flag],1 |
jne still |
mov [open_param],background_stretch |
jmp key_28.2 |
.shift: |
mov [open_param],background_tile |
jmp key_28.2 |
;--------------------------------------------------------------------- |
reload_dir_1: |
cmp [ctrl_flag],0 |
je still |
jmp reload_dir |
;--------------------------------------------------------------------- |
symbol_a_up: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je .ctrl |
cmp [alt_flag],1 |
je still |
jmp still |
.ctrl: |
mov [mark_action_counter],0 |
jmp mark_all_file |
;--------------------------------------------------------------------- |
NumPad_plus_Up: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je .ctrl |
cmp [alt_flag],1 |
je still |
jmp still |
.ctrl: |
mov [mark_action_counter],0 |
jmp mark_all_file |
;--------------------------------------------------------------------- |
NumPad_minus_Up: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je .ctrl |
cmp [alt_flag],1 |
je still |
jmp still |
.ctrl: |
mov [mark_action_counter],1 |
jmp mark_all_file |
;--------------------------------------------------------------------- |
NumPad_sneg_Up: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je .ctrl |
cmp [alt_flag],1 |
je still |
jmp still |
.ctrl: |
mov [mark_action_counter],2 |
jmp mark_all_file |
;--------------------------------------------------------------------- |
f_key_f1: |
;sort_name: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je still |
cmp [alt_flag],1 |
je draw_left_select_disk_menu |
jmp help_start |
;--------------------------------------------------------------------- |
f_key_f2: |
;sort_name: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je still |
cmp [alt_flag],1 |
je draw_right_select_disk_menu |
jmp still |
;--------------------------------------------------------------------- |
f_key_f3: |
;sort_name: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je .ctrl |
cmp [alt_flag],1 |
je still |
jmp still |
.ctrl: |
cmp [select_panel_counter],1 |
je right_sort_name |
jmp left_sort_name |
;--------------------------------------------------------------------- |
f_key_f4: |
;sort_type: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je .ctrl |
cmp [alt_flag],1 |
je still |
jmp open_file_f4 |
.ctrl: |
cmp [select_panel_counter],1 |
je right_sort_type |
jmp left_sort_type |
;--------------------------------------------------------------------- |
f_key_f5: |
;sort_size: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je .ctrl |
cmp [alt_flag],1 |
je still |
jmp copy_file_f5 |
.ctrl: |
cmp [select_panel_counter],1 |
je right_sort_size |
jmp left_sort_size |
;--------------------------------------------------------------------- |
f_key_f6: |
;sort_date: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je .ctrl |
cmp [alt_flag],1 |
je still |
jmp move_file_f6 |
.ctrl: |
cmp [select_panel_counter],1 |
je right_sort_date |
jmp left_sort_date |
;--------------------------------------------------------------------- |
f_key_f7: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je still |
cmp [alt_flag],1 |
je still |
jmp create_directory |
;--------------------------------------------------------------------- |
f_key_f8: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je still |
cmp [alt_flag],1 |
je still |
jmp delete_file |
;--------------------------------------------------------------------- |
f_key_f12: |
cmp [shift_flag],1 |
je still |
cmp [ctrl_flag],1 |
je still |
cmp [alt_flag],1 |
je still |
jmp exit_apl |
;--------------------------------------------------------------------- |
key_shift_up: |
cmp [shift_flag],1 |
je still |
mov [shift_flag],1 |
jmp key_alt_down.for_all |
;--------------------------------------------------------------------- |
key_shift_down: |
mov [shift_flag],0 |
jmp key_alt_down.for_all |
;--------------------------------------------------------------------- |
key_ctrl_up: |
cmp ah,29 |
jne key_ctrl_down |
.1: |
cmp [ctrl_flag],1 |
je still |
mov [ctrl_flag],1 |
jmp key_alt_down.for_all |
;--------------------------------------------------------------------- |
key_ctrl_down: |
cmp ah,157 |
jne key_alt_up |
.1: |
mov [ctrl_flag],0 |
jmp key_alt_down.for_all |
;--------------------------------------------------------------------- |
key_alt_up: |
cmp ah,56 |
jne key_alt_down |
.1: |
cmp [alt_flag],1 |
je still |
mov [alt_flag],1 |
jmp key_alt_down.for_all |
;--------------------------------------------------------------------- |
key_alt_down: |
cmp ah,184 |
jne key_insert |
.1: |
mov [alt_flag],0 |
.for_all: |
call erase_fbutton |
call draw_fbutton |
jmp still |
;--------------------------------------------------------------------- |
key_insert: |
cmp ah,82 ; Insert |
je mark_file |
cmp ah,83 |
je delete_file |
key_end: |
jmp still |
;--------------------------------------------------------------------- |