File Browser control - fixed the display of files larger than 4GB.

git-svn-id: svn://kolibrios.org@9682 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Marat Zakiyanov 2022-02-06 00:52:02 +00:00
parent 038e517be3
commit 2ef3c498fa

View File

@ -519,32 +519,114 @@ align 4
;----------------------------------------- ;-----------------------------------------
align 4 align 4
.copy_size: .copy_size:
;/0x40000000 - Gb ;/0x1000000000000000 - EB
;/0x100000 - Mb ;/0x4000000000000 - PB
;/0x400 Kb ;/0x10000000000 - TB
;/0x40000000 - GB
;/0x100000 - MB
;/0x400 - KB
mov [eax+6],dword ' ' mov [eax+6],dword ' '
mov [eax+6+4],word ' ' mov [eax+6+4],word ' '
push ebx edx push ebx edx
mov eax,[edx-40+32] mov eax,[edx-40+32]
mov ebx,eax mov ebx,[edx-40+32+4]
shr eax,30 ; /(1024*1024*1024) ; /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 test eax,eax
jz @f jz @f
mov dl,byte 'G' mov dl,byte 'E' ; Exa Byte
jmp .call_decimal_string 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) shr eax,20 ; /(1024*1024)
test eax,eax test eax,eax
jz @f jz @f
mov dl,byte 'M' mov dl,byte 'M' ; Mega Byte
jmp .call_decimal_string jmp .call_decimal_string
@@: @@:
mov eax,ebx mov eax,ebx
shr eax,10 ; /1024 shr eax,10 ; /1024
test eax,eax test eax,eax
jz @f jz @f
mov dl,byte 'K' mov dl,byte 'K' ; Kilo Byte
jmp .call_decimal_string jmp .call_decimal_string
@@: @@:
mov eax,ebx mov eax,ebx