kolibrios/programs/fs/kfm/trunk/markfile.inc

158 lines
3.5 KiB
PHP
Raw Normal View History

;---------------------------------------------------------------------
mark_file:
mov [marked_action],1
cmp [select_panel_counter],0
jne .right_1
call calculate_left_data_1
jmp .for_all
.right_1:
call calculate_right_data_1
.for_all:
add esi,32+299
mov al,[esi]
and al,1
cmp [select_panel_counter],0
jne .right_2
test al,al
jnz @f
inc [left_marked_counter]
jmp .for_all_1
@@:
dec [left_marked_counter]
.for_all_1:
mov al,[esi]
inc al
and al,1
mov [esi],al
jmp key_80.1
.right_2:
test al,al
jnz @f
inc [right_marked_counter]
jmp .for_all_1
@@:
dec [right_marked_counter]
jmp .for_all_1
;---------------------------------------------------------------------
calculate_left_data_1:
xor eax,eax
mov ax,[left_start_draw_cursor_line]
xor edx,edx
mov ebx,10
div ebx
mov esi,[left_start_draw_line]
add esi,eax
imul esi,304
add esi,[left_folder_data]
ret
;---------------------------------------------------------------------
calculate_right_data_1:
xor eax,eax
mov ax,[right_start_draw_cursor_line]
xor edx,edx
mov ebx,10
div ebx
mov esi,[right_start_draw_line]
add esi,eax
imul esi,304
add esi,[right_folder_data]
ret
;---------------------------------------------------------------------
mark_all_file:
cmp [select_panel_counter],0
jne .right_1
mov ebp,[left_folder_block]
.start:
mov ebx,ebp
dec ebx
imul ebx,304
add ebx,[left_folder_data]
add ebx,32+40
cmp [ebx],word '..'
jne .continue
cmp [ebx+2],byte 0
je .continue_1
.continue:
call select_mark_action
.continue_1:
@@:
dec ebp
jnz .start
call draw_left_panel
cmp [mark_action_counter],0
jne @f
mov eax,[left_folder_block]
; dec eax
; mov [left_marked_counter],eax
; jmp still
jmp .end
@@:
cmp [mark_action_counter],1
jne @f
mov [left_marked_counter],0
jmp still
@@:
mov eax,[left_folder_block]
sub eax,[left_marked_counter]
.end:
dec eax
mov [left_marked_counter],eax
jmp still
.right_1:
mov ebp,[right_folder_block]
.start_1:
mov ebx,ebp
dec ebx
imul ebx,304
add ebx,[right_folder_data]
add ebx,32+40
cmp [ebx],word '..'
jne .continue_2
cmp [ebx+2],byte 0
je .continue_3
.continue_2:
call select_mark_action
.continue_3:
@@:
dec ebp
jnz .start_1
call draw_right_panel
cmp [mark_action_counter],0
jne @f
mov eax,[right_folder_block]
; dec eax
; mov [right_marked_counter],eax
; jmp still
jmp .end_1
@@:
cmp [mark_action_counter],1
jne @f
mov [right_marked_counter],0
jmp still
@@:
mov eax,[right_folder_block]
sub eax,[right_marked_counter]
.end_1:
dec eax
mov [right_marked_counter],eax
jmp still
;---------------------------------------------------------------------
select_mark_action:
add ebx,299-40
cmp [mark_action_counter],0
jne @f
mov [ebx],byte 1
jmp .continue
@@:
cmp [mark_action_counter],1
jne @f
mov [ebx],byte 0
jmp .continue
@@:
mov al,[ebx]
inc al
and al,1
mov [ebx],al
.continue:
ret
;---------------------------------------------------------------------