From 2ef3c498fa0b8d15997a985e73632a31a36017eb Mon Sep 17 00:00:00 2001 From: Marat Zakiyanov Date: Sun, 6 Feb 2022 00:52:02 +0000 Subject: [PATCH] File Browser control - fixed the display of files larger than 4GB. git-svn-id: svn://kolibrios.org@9682 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../libraries/box_lib/trunk/filebrowser.asm | 100 ++++++++++++++++-- 1 file changed, 91 insertions(+), 9 deletions(-) diff --git a/programs/develop/libraries/box_lib/trunk/filebrowser.asm b/programs/develop/libraries/box_lib/trunk/filebrowser.asm index 4e3d3b9c19..2be8a644a1 100644 --- a/programs/develop/libraries/box_lib/trunk/filebrowser.asm +++ b/programs/develop/libraries/box_lib/trunk/filebrowser.asm @@ -519,32 +519,114 @@ align 4 ;----------------------------------------- align 4 .copy_size: -;/0x40000000 - Gb -;/0x100000 - Mb -;/0x400 Kb +;/0x1000000000000000 - EB +;/0x4000000000000 - PB +;/0x10000000000 - TB +;/0x40000000 - GB +;/0x100000 - MB +;/0x400 - KB mov [eax+6],dword ' ' mov [eax+6+4],word ' ' push ebx edx mov eax,[edx-40+32] - mov ebx,eax - shr eax,30 ; /(1024*1024*1024) + mov ebx,[edx-40+32+4] +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /(1024*1024) + shr eax,20 test eax,eax jz @f - mov dl,byte 'G' + mov dl,byte 'E' ; Exa Byte jmp .call_decimal_string @@: - mov eax,ebx + mov eax,[edx-40+32] + mov ebx,[edx-40+32+4] +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /(1024*1024) + shr eax,20 + test eax,eax + jz @f + mov dl,byte 'P' ; Peta Byte + jmp .call_decimal_string +@@: + mov eax,[edx-40+32] + mov ebx,[edx-40+32+4] +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /(1024*1024) + shr eax,20 + test eax,eax + jz @f + mov dl,byte 'T' ; Tera Byte + jmp .call_decimal_string +@@: + mov eax,[edx-40+32] + mov ebx,[edx-40+32+4] +; /1024 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 + shrd eax,ebx,5 ; /32 + shr ebx,5 ; /32 +; /(1024*1024) + shr eax,20 + test eax,eax + jz @f + mov dl,byte 'G' ; Giga Byte + jmp .call_decimal_string +@@: + mov eax,[edx-40+32] + mov ebx,eax shr eax,20 ; /(1024*1024) test eax,eax jz @f - mov dl,byte 'M' + mov dl,byte 'M' ; Mega Byte jmp .call_decimal_string @@: mov eax,ebx shr eax,10 ; /1024 test eax,eax jz @f - mov dl,byte 'K' + mov dl,byte 'K' ; Kilo Byte jmp .call_decimal_string @@: mov eax,ebx