forked from KolibriOS/kolibrios
976e2d52bf
git-svn-id: svn://kolibrios.org@3731 a494cfbc-eb01-0410-851d-a64ba20cac60
476 lines
11 KiB
PHP
476 lines
11 KiB
PHP
read_delete_dir:
|
|
mcall 70, read_delete_dir_data
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
create_directory_f70:
|
|
mcall 70, create_dir_file_data
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
del_file:
|
|
mcall 70, delete_file_data
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
start_appl:
|
|
mcall 70, start_file_data
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
get_file_size:
|
|
mcall 70, read_file_features
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
load_file:
|
|
mcall 70, read_file
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
write_file:
|
|
mcall 70, save_file
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
add_write_file:
|
|
mcall 70, add_save_file
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
proc_read_left_folder:
|
|
xor eax,eax
|
|
mov [left_marked_counter],eax
|
|
mov [read_folder.start],eax ;dword 0
|
|
inc eax
|
|
mov [read_folder.size],eax ;dword 1
|
|
mov eax,[left_folder_data]
|
|
push eax
|
|
mov [read_folder.return],eax
|
|
mcall 70, read_folder
|
|
test eax,eax
|
|
jz @f
|
|
cmp eax,6
|
|
jne .error_1
|
|
@@:
|
|
mov eax,[esp]
|
|
cmp [eax+32+40],word 2Eh
|
|
jne @f
|
|
mov [read_folder.start],dword 1
|
|
@@:
|
|
mov ebx,[eax+8]
|
|
mov [read_folder.size],ebx ;dword 10 ;5000
|
|
imul ebx,304
|
|
add ebx,32
|
|
mov ecx,[right_folder_data]
|
|
sub ecx,[left_folder_data]
|
|
push ebx ecx
|
|
cmp ebx,ecx
|
|
je .continue
|
|
sub ebx,ecx
|
|
js .sub_mem
|
|
.add_mem:
|
|
mov ecx,[appl_memory]
|
|
add ecx,ebx
|
|
mov [esp],ebx
|
|
mov ebx,[appl_memory]
|
|
mov [esp+4],ebx
|
|
mov [appl_memory],ecx
|
|
mcall 64,1
|
|
call move_up_right_table
|
|
; mov [temp_znak],1
|
|
jmp .continue
|
|
.sub_mem:
|
|
mov ebx,[esp]
|
|
mov ecx,[esp+4]
|
|
sub ebx,ecx
|
|
mov ecx,[appl_memory]
|
|
sub ecx,ebx
|
|
mov [esp],ebx
|
|
mov ebx,[appl_memory]
|
|
mov [esp+4],ebx
|
|
mov [appl_memory],ecx
|
|
call move_down_right_table
|
|
mcall 64,1
|
|
; mov [temp_znak],2
|
|
.continue:
|
|
; mov edi,eax ;folder_data
|
|
; call clear_folder_data_area
|
|
mcall 70, read_folder
|
|
mov [left_folder_block],ebx
|
|
add esp,4*3
|
|
test eax,eax
|
|
jz @f
|
|
cmp eax,6
|
|
jne .error
|
|
@@:
|
|
push eax
|
|
; call left_files_name_normalize
|
|
call left_prepare_extension_start
|
|
call left_sort_files
|
|
pop eax
|
|
; pusha
|
|
; call draw_window
|
|
; popa
|
|
ret
|
|
.error_1:
|
|
add esp,4
|
|
.error:
|
|
mov [left_folder_block],dword 2
|
|
mov edi,[left_folder_data]
|
|
call error_handler
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
error_handler:
|
|
push eax
|
|
xor eax,eax
|
|
add edi,32+40
|
|
push edi
|
|
sub edi,40
|
|
mov ecx,304/4
|
|
cld
|
|
rep stosd
|
|
pop edi
|
|
mov [edi-40],byte 0x10
|
|
mov [edi],word '..'
|
|
mov [edi+2],al
|
|
add edi,304
|
|
push edi
|
|
sub edi,40
|
|
mov ecx,304/4
|
|
cld
|
|
rep stosd
|
|
pop edi
|
|
mov eax,[esp]
|
|
mov [edi+32-40],eax
|
|
mov esi,error_type
|
|
mov ecx,19
|
|
cld
|
|
rep movsb
|
|
pop eax
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
proc_read_right_folder:
|
|
xor eax,eax
|
|
mov [right_marked_counter],eax
|
|
mov [read_folder_1.start],eax ;dword 0
|
|
inc eax
|
|
mov [read_folder_1.size],eax ;dword 1
|
|
mov eax,[right_folder_data]
|
|
push eax
|
|
mov [read_folder_1.return],eax
|
|
mcall 70, read_folder_1
|
|
test eax,eax
|
|
jz @f
|
|
cmp eax,6
|
|
jne .error_1
|
|
@@:
|
|
mov eax,[esp]
|
|
cmp [eax+32+40],word 2Eh
|
|
jne @f
|
|
mov [read_folder_1.start],dword 1
|
|
@@:
|
|
mov ebx,[eax+8]
|
|
mov [read_folder_1.size],ebx ;dword 10 ;5000
|
|
imul ebx,304
|
|
add ebx,32
|
|
mov ecx,[appl_memory]
|
|
sub ecx,[right_folder_data]
|
|
push ebx ecx
|
|
cmp ebx,ecx
|
|
je .continue
|
|
sub ebx,ecx
|
|
js .sub_mem
|
|
.add_mem:
|
|
mov ecx,[appl_memory]
|
|
add ecx,ebx
|
|
mov [appl_memory],ecx
|
|
mcall 64,1
|
|
; mov [temp_znak],1
|
|
jmp .continue
|
|
.sub_mem:
|
|
mov ebx,[esp]
|
|
mov ecx,[esp+4]
|
|
sub ebx,ecx
|
|
mov ecx,[appl_memory]
|
|
sub ecx,ebx
|
|
mov [appl_memory],ecx
|
|
mcall 64,1
|
|
; mov [temp_znak],2
|
|
.continue:
|
|
; mov edi,eax ;folder_data_1
|
|
; call clear_folder_data_area
|
|
mcall 70, read_folder_1
|
|
mov [right_folder_block],ebx
|
|
add esp,4*3
|
|
test eax,eax
|
|
jz @f
|
|
cmp eax,6
|
|
jne .error
|
|
@@:
|
|
push eax
|
|
; call right_files_name_normalize
|
|
call right_prepare_extension_start
|
|
call right_sort_files
|
|
pop eax
|
|
; pusha
|
|
; call draw_window
|
|
; popa
|
|
ret
|
|
.error_1:
|
|
add esp,4
|
|
.error:
|
|
mov [right_folder_block],dword 2
|
|
mov edi,[right_folder_data]
|
|
call error_handler
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
move_up_right_table:
|
|
mov esi,[esp+8]
|
|
mov ecx,esi
|
|
sub ecx,[right_folder_data]
|
|
mov edi,esi
|
|
add edi,[esp+4]
|
|
shr ecx,2
|
|
std
|
|
; rep movsb
|
|
rep movsd
|
|
mov eax,[esp+4]
|
|
add [right_folder_data],eax
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
move_down_right_table:
|
|
mov esi,[right_folder_data]
|
|
mov edi,esi
|
|
sub edi,[esp+4]
|
|
push ecx
|
|
mov ecx,[esp+12]
|
|
sub ecx,[right_folder_data]
|
|
shr ecx,2
|
|
cld
|
|
; rep movsb
|
|
rep movsd
|
|
pop ecx
|
|
mov eax,[esp+4]
|
|
sub [right_folder_data],eax
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
;clear_folder_data_area:
|
|
; mov ecx,4096*10/4
|
|
; xor eax,eax
|
|
; cld
|
|
; rep stosd
|
|
; ret
|
|
;---------------------------------------------------------------------
|
|
proc_read_folder:
|
|
call proc_read_left_folder
|
|
; mov [left_panel_clear_all],1
|
|
cmp [search_pre_folder],0
|
|
jne @f
|
|
mov [left_start_draw_cursor_line],0
|
|
mov [left_start_draw_line],0
|
|
jmp .continue
|
|
@@:
|
|
mov edi,[left_folder_data]
|
|
add edi,32+40
|
|
sub edi,304
|
|
xor ebp,ebp
|
|
.search_file:
|
|
cmp [left_folder_block],ebp
|
|
jbe .end_folder
|
|
mov esi,[temp_counter_dword]
|
|
mov ecx,[extension_size]
|
|
add edi,304
|
|
inc ebp
|
|
cld
|
|
; mov [temp_counter_dword_1],edi
|
|
push edi
|
|
rep cmpsb
|
|
pop edi
|
|
jne .search_file
|
|
dec ebp
|
|
mov eax,[left_folder_block]
|
|
cmp [max_panel_line],eax
|
|
js @f
|
|
mov eax,ebp
|
|
imul eax,10
|
|
mov [left_start_draw_cursor_line],ax
|
|
mov [left_start_draw_line],0
|
|
jmp .end_folder
|
|
@@:
|
|
; sub eax,ebp
|
|
; push eax
|
|
; sub eax,[max_panel_line]
|
|
; jns @f
|
|
; mov eax,[max_panel_line]
|
|
; sub eax,[esp]
|
|
; imul eax,10
|
|
; mov [left_start_draw_cursor_line],ax
|
|
;@@:
|
|
mov [left_start_draw_cursor_line],0
|
|
mov [left_start_draw_line],ebp
|
|
.end_folder:
|
|
mov [search_pre_folder],0
|
|
.continue:
|
|
call draw_left_panel
|
|
call draw_left_select_disk_button
|
|
; call draw_window
|
|
; pop eax
|
|
jmp still
|
|
;---------------------------------------------------------------------
|
|
proc_read_folder_1:
|
|
call proc_read_right_folder
|
|
; mov [right_panel_clear_all],1
|
|
cmp [search_pre_folder],0
|
|
jne @f
|
|
mov [right_start_draw_cursor_line],0
|
|
mov [right_start_draw_line],0
|
|
jmp .continue
|
|
@@:
|
|
mov edi,[right_folder_data]
|
|
add edi,32+40
|
|
sub edi,304
|
|
xor ebp,ebp
|
|
.search_file:
|
|
cmp [right_folder_block],ebp
|
|
jbe .end_folder
|
|
mov esi,[temp_counter_dword]
|
|
mov ecx,[extension_size]
|
|
add edi,304
|
|
inc ebp
|
|
cld
|
|
; mov [temp_counter_dword_1],edi
|
|
push edi
|
|
rep cmpsb
|
|
pop edi
|
|
jne .search_file
|
|
dec ebp
|
|
mov eax,[right_folder_block]
|
|
cmp [max_panel_line],eax
|
|
js @f
|
|
mov eax,ebp
|
|
imul eax,10
|
|
mov [right_start_draw_cursor_line],ax
|
|
mov [right_start_draw_line],0
|
|
jmp .end_folder
|
|
@@:
|
|
; sub eax,ebp
|
|
; push eax
|
|
; sub eax,[max_panel_line]
|
|
; jns @f
|
|
; mov eax,[max_panel_line]
|
|
; sub eax,[esp]
|
|
; imul eax,10
|
|
; mov [right_start_draw_cursor_line],ax
|
|
;@@:
|
|
mov [right_start_draw_cursor_line],0
|
|
mov [right_start_draw_line],ebp
|
|
.end_folder:
|
|
mov [search_pre_folder],0
|
|
.continue:
|
|
call draw_right_panel
|
|
call draw_right_select_disk_button
|
|
jmp still
|
|
;---------------------------------------------------------------------
|
|
copy_folder_name:
|
|
mov edi,read_folder_name+1 ;read_folder.name+1
|
|
@@:
|
|
cld
|
|
lodsb
|
|
stosb
|
|
cmp al,0
|
|
jne @r
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
copy_folder_name_1:
|
|
mov edi,read_folder_1_name+1 ;read_folder_1.name+1
|
|
@@:
|
|
cld
|
|
lodsb
|
|
stosb
|
|
cmp al,0
|
|
jne @r
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
read_folder:
|
|
.subfunction dd 1
|
|
.start dd 0
|
|
.flags dd 0
|
|
.size dd 5000
|
|
.return dd 0 ;folder_data
|
|
db 0
|
|
.name: dd read_folder_name
|
|
;---------------------------------------------------------------------
|
|
read_folder_1:
|
|
.subfunction dd 1
|
|
.start dd 0
|
|
.flags dd 0
|
|
.size dd 5000
|
|
.return dd 0 ;folder_data_1
|
|
db 0
|
|
.name: dd read_folder_1_name
|
|
;---------------------------------------------------------------------
|
|
read_file_features:
|
|
.subfunction dd 5
|
|
.Offset dd 0
|
|
.Offset_1 dd 0
|
|
.size dd 0
|
|
.return dd file_features_temp_area
|
|
db 0
|
|
.name: dd file_name
|
|
;---------------------------------------------------------------------
|
|
read_file:
|
|
.subfunction dd 0
|
|
.Offset dd 0
|
|
.Offset_1 dd 0
|
|
.size dd 0
|
|
.return dd mem
|
|
db 0
|
|
.name: dd file_name
|
|
;---------------------------------------------------------------------
|
|
save_file:
|
|
.subfunction dd 2
|
|
.Offset dd 0
|
|
.Offset_1 dd 0
|
|
.size dd 0
|
|
.pointer dd mem
|
|
db 0
|
|
.name: dd start_parameter
|
|
;---------------------------------------------------------------------
|
|
add_save_file:
|
|
.subfunction dd 3
|
|
.Offset dd 0
|
|
.Offset_1 dd 0
|
|
.size dd 0
|
|
.pointer dd mem
|
|
db 0
|
|
.name: dd start_parameter
|
|
;---------------------------------------------------------------------
|
|
create_dir_file_data:
|
|
.subfunction dd 9
|
|
.flags dd 0
|
|
.param dd 0
|
|
.rezerv dd 0
|
|
.rezerv1 dd 0
|
|
db 0
|
|
.name: dd file_name
|
|
;---------------------------------------------------------------------
|
|
start_file_data:
|
|
.subfunction dd 7
|
|
.flags dd 0
|
|
.param dd 0
|
|
.rezerv dd 0
|
|
.rezerv1 dd 0
|
|
db 0
|
|
.name: dd file_name
|
|
;---------------------------------------------------------------------
|
|
delete_file_data:
|
|
.subfunction dd 8
|
|
.flags dd 0
|
|
.param dd 0
|
|
.rezerv dd 0
|
|
.rezerv1 dd 0
|
|
db 0
|
|
.name: dd file_name
|
|
;---------------------------------------------------------------------
|
|
read_delete_dir_data:
|
|
.subfunction dd 1
|
|
.start dd 0
|
|
.flags dd 0
|
|
.size dd 0
|
|
.return dd delete_dir_data
|
|
db 0
|
|
.name: dd file_name
|
|
;--------------------------------------------------------------------- |