6,12 → 6,9 |
mov [files_size.low],eax |
mov [files_size.high],eax |
call get_files_information |
mov eax,files_size |
mov ebx,type_size_string |
call decimal_string_20 |
call start_files_information_thread |
jmp still |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
start_files_information_thread: |
mcall 9, procinfo, -1 |
mov eax,[ebx+46] |
26,135 → 23,175 |
mov [files_information_window_x+2],ax |
mcall 51,1,thread_files_information_start,thread_stack |
ret |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
draw_files_information_window: |
mcall 12, 1 |
mcall 0,[files_information_window_x] ,[files_information_window_y], 0x03ffffcc |
mov edx,90 shl 16+50 |
mov ebx,0xa0000 |
mov edx,100 shl 16+50 |
mov ebx,0x800a0000 |
mov esi,0x10000000 |
cmp [inf_marked_yes],1 |
je .continue_4 |
|
cmp [nesting_direction],1 |
je @f |
|
add edx,15 |
;-------------------------------------- |
.continue_4: |
; show files counter |
mcall 47, ,[files_counter] |
;-------------------------------------- |
@@: |
cmp [inf_marked_yes],1 |
je .continue_2 |
|
cmp [nesting_direction],0 |
je .continue_2 |
|
cmp [directories_counter],0 |
je @f |
;-------------------------------------- |
.continue_2: |
; show directories counter |
add edx,15 |
mcall 47, ,[directories_counter] |
mcall ,,[directories_counter] |
;-------------------------------------- |
@@: |
; show file or directory size |
add edx,15 |
mov ebx,edx |
mcall 4, ,0x90000000,type_size_string |
mcall 47,0x80140001,files_size |
;-------------------------------------- |
mov ebp,date.create |
call show_date_and_time_of_files_information |
;-------------------------------------- |
mov ebp,date.change |
call show_date_and_time_of_files_information |
;-------------------------------------- |
mov ebp,date.access |
call show_date_and_time_of_files_information |
;-------------------------------------- |
cmp [select_panel_counter],0 |
jne .right_1 |
|
mov edx,read_folder_name |
jmp @f |
;-------------------------------------- |
.right_1: |
mov edx,read_folder_1_name |
;-------------------------------------- |
@@: |
mcall 4,<75,35>,0x80000000, ;file_name |
mcall 4,<10,35>,0x90000000,type_location |
mcall ,<10,35>,0x90000000,type_location |
cmp [inf_marked_yes],1 |
je .continue |
mcall 4,<90,50>,0x80000000,type_name |
|
mcall ,<90,50>,0x80000000,type_name |
mov ecx,0x90000000 |
cmp [nesting_direction],1 |
je @f |
mcall 4,<10,50>, ,type_dir_name |
|
mcall ,<10,50>,,type_dir_name |
jmp .continue |
;-------------------------------------- |
@@: |
mcall 4,<10,50>, ,type_file_name |
mcall ,<10,50>,,type_file_name |
;-------------------------------------- |
.continue: |
cmp [inf_marked_yes],1 |
je .continue_3 |
|
cmp [nesting_direction],1 |
je @f |
;-------------------------------------- |
.continue_3: |
add ebx,15 |
mcall 4, , ,type_files |
mcall ,,,type_files |
;-------------------------------------- |
@@: |
cmp [inf_marked_yes],1 |
je .continue_1 |
|
cmp [nesting_direction],0 |
je .continue_1 |
|
cmp [directories_counter],0 |
je @f |
;-------------------------------------- |
.continue_1: |
add ebx,15 |
mcall 4, , ,type_dir |
mcall ,,,type_dir |
;-------------------------------------- |
@@: |
add ebx,15 |
mcall 4, , ,type_size |
mcall ,,,type_size |
add ebx,15 |
mcall ,,,type_create |
add ebx,15 |
mcall ,,,type_change |
add ebx,15 |
mcall ,,,type_access |
sub ebx,30 |
add ebx,107 shl 16 |
mcall ,,0x80000000,type_limiters_data_time |
add ebx,15 |
mcall |
add ebx,15 |
mcall |
|
mcall 12, 2 |
ret |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
show_date_and_time_of_files_information: |
; show date |
add edx,15 |
push edx |
movzx ecx,byte [ebp+0] |
mcall ,0x00020000 |
add edx,24 shl 16 |
movzx ecx,byte [ebp+1] |
mcall |
add edx,23 shl 16 |
movzx ecx,word [ebp+2] |
mcall ,0x00040000 |
sub ebp,12 |
; show time |
add edx,37 shl 16 |
movzx ecx,byte [ebp+2] |
mcall ,0x00020000 |
add edx,24 shl 16 |
movzx ecx,byte [ebp+1] |
mcall |
add edx,23 shl 16 |
movzx ecx,byte [ebp+0] |
mcall |
pop edx |
ret |
;------------------------------------------------------------------------------ |
thread_files_information_start: |
.red: |
call draw_files_information_window |
;-------------------------------------- |
.still: |
mcall 10 |
cmp eax,1 |
je .red |
|
cmp eax,2 |
je .key |
|
cmp eax,3 |
je .button |
|
jmp .still |
;-------------------------------------- |
.key: |
mcall 2 |
;-------------------------------------- |
.button: |
mcall -1 |
jmp .still |
;--------------------------------------------------------------------- |
; ÏÅÐÅÂÎÄ 10-ÍÛÕ ×ÈÑÅË ÑÎ ÇÍÀÊÎÌ Â ÑÒÐÎÊÎÂÛÉ ÂÈÄ |
; Âõîä: |
; EAX - óêàçàòåëü íà ÷èñëî |
; EBX - àäðåñ ñòðîêè |
;--------------------------------------------------------------------- |
decimal_string_20: |
push eax ebx ecx edx |
mov [divisor],word 10 |
mov ebp,eax |
xor ecx,ecx |
; mov [ebx],byte '0' |
; inc ebx |
.p3: |
xor edx,edx |
push ebx |
call Division_64bit |
mov eax,[quotent] |
mov [ebp],eax |
mov eax,[quotent+4] |
mov [ebp+4],eax |
pop ebx |
add edx,48 |
push edx |
inc ecx |
cmp [ebp],dword 0 |
jne .p3 |
cmp [ebp+4],dword 0 |
jne .p3 |
cmp ecx,19 |
jbe .p4 |
mov ecx,20 |
dec ebx |
.p4: |
pop edx |
mov [ebx],dl |
inc ebx |
loop .p4 |
mov [ebx], byte 0 |
pop edx ecx ebx eax |
ret |
;---------------------------------------------------------- |
;------------------------------------------------------------------------------ |
; äåëåíèå 64-áèòíîãî ÷èñëà divident íà 16-áèòíîå ÷èñëî divisor. |
; ×àñòíîå ïîìåùàåòñÿ â 64-áèòíóþ ïåðåìåííóþ quotent, |
; à îñòàòîê - â 16-áèòíóþ ïåðåìåííóþ modulo |
175,7 → 212,7 |
mov [quotent],ax |
; mov [modulo],dx |
ret |
|
;-------------------------------------- |
;divident: |
; rb 8 |
divisor: |
184,28 → 221,32 |
rb 8 |
;modulo: |
; rb 2 |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
copy_type_name: |
push esi |
mov esi,ebx |
mov edi,type_name |
cld |
;-------------------------------------- |
@@: |
cld |
lodsb |
stosb |
test al,al |
jnz @b |
|
pop esi |
ret |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
get_files_information: |
call get_information_marked_files |
cmp [inf_marked_yes],1 |
je .end_2 |
|
xor eax,eax |
xor edx,edx |
cmp [select_panel_counter],0 |
jne .right_1 |
|
mov ax,[left_start_draw_cursor_line] |
mov ebx,10 |
div ebx |
216,6 → 257,7 |
call prepare_data_8 |
mov esi,read_folder_name |
jmp .end |
;-------------------------------------- |
.right_1: |
mov ax,[right_start_draw_cursor_line] |
mov ebx,10 |
226,13 → 268,39 |
add ebx,[right_folder_data] |
call prepare_data_8 |
mov esi,read_folder_1_name |
;-------------------------------------- |
.end: |
mov [error_pointer],ebx |
;-------------------------------------- |
push eax ebx |
sub ebx,40 |
; âðåìÿ ñîçäàíèÿ ôàéëà |
mov eax,[ebx+8] |
mov [time.create],eax |
; äàòà ñîçäàíèÿ ôàéëà |
mov eax,[ebx+12] |
mov [date.create],eax |
; âðåìÿ ïîñëåäíåãî äîñòóïà (÷òåíèå èëè çàïèñü) |
mov eax,[ebx+16] |
mov [time.access],eax |
; äàòà ïîñëåäíåãî äîñòóïà |
mov eax,[ebx+20] |
mov [date.access],eax |
; âðåìÿ ïîñëåäíåé ìîäèôèêàöèè |
mov eax,[ebx+24] |
mov [time.change],eax |
; äàòà ïîñëåäíåé ìîäèôèêàöèè |
mov eax,[ebx+28] |
mov [date.change],eax |
pop ebx eax |
;-------------------------------------- |
call copy_type_name |
mov edi,file_name |
call copy_path_1 |
|
test [ebx-40],byte 0x10 |
jz @f |
|
push eax ebx |
call get_inf_dir |
mov [nesting_direction],0 |
239,29 → 307,34 |
pop ebx eax |
dec [directories_counter] |
jmp .end_2 |
;-------------------------------------- |
@@: |
mov [nesting_direction],1 |
call get_file_size |
test eax,eax |
jz .end_1 |
|
call start_error_window_thread |
add esp,4 |
jmp reload_dir_all |
;-------------------------------------- |
.end_1: |
; inc [files_counter] |
mov eax,[file_features_temp_area+32] |
add [files_size.low],eax |
mov eax,[file_features_temp_area+32+4] |
adc [files_size.high],eax |
;-------------------------------------- |
.end_2: |
ret |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
get_information_marked_files: |
xor eax,eax |
mov [inf_marked_yes],al |
cmp [select_panel_counter],al |
jne .right_1 |
|
mov ebp,[left_folder_block] |
;-------------------------------------- |
.start: |
mov ebx,ebp |
dec ebx |
270,21 → 343,29 |
add ebx,32+40 |
cmp [ebx+299-40],byte 0 |
je @f |
|
cmp [ebx],word '..' |
jne .continue |
|
cmp [ebx+2],byte 0 |
je .continue_1 |
;-------------------------------------- |
.continue: |
mov esi,read_folder_name |
call prepare_data_9 |
;-------------------------------------- |
.continue_1: |
mov [inf_marked_yes],1 |
;-------------------------------------- |
@@: |
dec ebp |
jnz .start |
|
ret |
;-------------------------------------- |
.right_1: |
mov ebp,[right_folder_block] |
;-------------------------------------- |
.start_1: |
mov ebx,ebp |
dec ebx |
293,20 → 374,26 |
add ebx,32+40 |
cmp [ebx+299-40],byte 0 |
je @f |
|
cmp [ebx],word '..' |
jne .continue_2 |
|
cmp [ebx+2],byte 0 |
je .continue_3 |
;-------------------------------------- |
.continue_2: |
mov esi,read_folder_1_name |
call prepare_data_9 |
;-------------------------------------- |
.continue_3: |
mov [inf_marked_yes],1 |
;-------------------------------------- |
@@: |
dec ebp |
jnz .start_1 |
|
ret |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
prepare_data_9: |
mov [error_pointer],ebx |
mov edi,file_name |
313,35 → 400,43 |
call copy_path_1 |
test [ebx-40],byte 0x10 |
jz @f |
|
call get_inf_dir |
ret |
;-------------------------------------- |
@@: |
inc [files_counter] |
call get_file_size |
test eax,eax |
jz .continue |
|
call start_error_window_thread |
add esp,8+4 |
ret |
;-------------------------------------- |
.continue: |
mov eax,[file_features_temp_area+32] |
add [files_size.low],eax |
mov eax,[file_features_temp_area+32+4] |
adc [files_size.high],eax |
;-------------------------------------- |
.continue_1: |
ret |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
prepare_data_8: |
add ebx,32+40 |
cmp [ebx],word '..' |
jne .continue |
|
cmp [ebx+2],byte 0 |
jne .continue |
|
add esp,4+4 |
jmp reload_dir |
;-------------------------------------- |
.continue: |
ret |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
get_inf_dir: |
mov [nesting_direction],0 |
pusha |
348,6 → 443,7 |
mov [recursive_pointer],0 |
mov eax,[appl_memory] |
mov [appl_memory_old],eax |
;-------------------------------------- |
.1: |
mov [read_delete_dir_data.size],0 |
mov [read_delete_dir_data.return],delete_dir_data |
354,11 → 450,13 |
call read_delete_dir |
test eax,eax |
jz @f |
|
mov [error_pointer],file_name |
call start_error_window_thread |
popa |
add esp,8+8 |
ret |
;-------------------------------------- |
@@: |
mov eax,[delete_dir_data+8] |
imul eax,304 |
367,10 → 465,12 |
add ebx,[appl_memory_old] |
cmp ebx,[appl_memory] |
jbe @f |
|
mov ecx,[appl_memory] |
mov ecx,ebx |
mov [appl_memory],ecx |
mcall 64,1 |
;-------------------------------------- |
@@: |
mov eax,[delete_dir_data+8] |
mov [read_delete_dir_data.size],eax |
379,19 → 479,24 |
call read_delete_dir |
test eax,eax |
jz @f |
|
mov [error_pointer],file_name |
call start_error_window_thread |
popa |
add esp,8+8 |
ret |
;-------------------------------------- |
@@: |
cmp [nesting_direction],0 |
je @f |
|
call get_inf_dir_2 |
jnc .end |
|
dec ebp |
push ebp |
jmp .1 |
;-------------------------------------- |
@@: |
call get_inf_dir_1 |
jnc .end |
398,29 → 503,35 |
dec ebp |
push ebp |
jmp .1 |
;-------------------------------------- |
.end: |
call return_delete_path |
dec [recursive_pointer] |
cmp [recursive_pointer],0 |
jge .1 |
|
mov ecx,[appl_memory_old] |
cmp [appl_memory],ecx |
je @f |
|
mov [appl_memory],ecx |
mcall 64,1 |
;-------------------------------------- |
@@: |
popa |
ret |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
get_inf_dir_2: |
pop eax |
pop ebp |
push eax |
jmp get_inf_dir_1.start |
;-------------------------------------- |
get_inf_dir_1: |
inc [directories_counter] |
mov ebp,[appl_memory_old] |
mov ebp,[ebp+8] |
;-------------------------------------- |
.start: |
mov ebx,ebp |
dec ebx |
429,13 → 540,17 |
add ebx,32+40 |
cmp [ebx],byte '.' |
jne @f |
|
cmp [ebx+1],byte 0 |
je .continue_4 |
;-------------------------------------- |
@@: |
cmp [ebx],word '..' |
jne .continue |
|
cmp [ebx+2],byte 0 |
je .continue_4 |
;-------------------------------------- |
.continue: |
mov esi,file_name |
inc [recursive_pointer] |
442,8 → 557,10 |
call copy_path_2 |
test [ebx-40],byte 0x10 |
jnz .continue_3 |
;-------------------------------------- |
@@: |
inc [files_counter] |
;-------------------------------------- |
.continue_1: |
mov eax,[ebx+32-40] |
add [files_size.low],eax |
453,16 → 570,17 |
call return_delete_path |
dec ebp |
jnz .start |
|
;-------------------------------------- |
.continue_4: |
clc |
mov [nesting_direction],1 |
ret |
;-------------------------------------- |
.continue_3: |
stc |
mov [nesting_direction],0 |
ret |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |
;type_patch_test: |
; pusha |
; mcall 5,200 |
478,4 → 596,4 |
;temp_value_3 db '3',0 |
;temp_value_4 db '4',0 |
;temp_value_5 db '5',0 |
;--------------------------------------------------------------------- |
;------------------------------------------------------------------------------ |