File-Manager/CORE/SPACE.ASM
2025-04-05 01:58:39 +10:00

142 lines
3.5 KiB
NASM
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;-----------------------------------------------------------
; ‚ëç¨á«¨âì ᢮¡®¤­®¥ ¬¥áâ® ­  2 ¤¨áª å ¯ ­¥«¥©
;-----------------------------------------------------------
get_total_free_space:
;  ªâ. ¯ ­¥«ì
ld hl,free_space_disk ; ï祩ª¨  ªâ. ¯ ­¥«¨
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
ld b,a
ld a,(disk) ; ¤¨áª  ªâ. ¯ ­¥«¨
ld c,a
push bc
call get_free_space ; ᢮¡. ¬¥áâ® ­  ¤¨áª¥
pop bc
ld a,(disk1) ; ¤¨áª ¯ áá. ¯ ­¥«¨
cp c ; ¤¨áª¨ ­  ¯ ­¥«ïå à ¢­ë ?
jr nz,get_free_noact ; ­¥â
ld hl,free_space_disk ; ï祩ª¨  ªâ. ¯ ­¥«¨
ld de,free_space_disk1 ; ï祩ª¨ ¯ áá. ¯ ­¥«¨
ld bc,4
ldir
ret
;
get_free_noact:
; ¯ áá. ¯ ­¥«ì
ld c,a ; ­®¬¥à ¤¨áª 
ld a,(format_mode1) ; ä®à¬ â ¯ áá. ¯ ­¥«¨
ld b,a
ld hl,free_space_disk1 ; ï祩ª¨ ¯ áá. ¯ ­¥«¨
;-------------------------------------------------
; ‚ëç¨á«¨âì ᢮¡®¤­®¥ ¬¥áâ® ­  ¤¨áª¥
; ¢å®¤: c=­®¬¥à ¤¨áª  (A=0, B=1,...)
; b=ä®à¬ â ¯ ­¥«¨
; hl=ï祩ª¨ "free_space_disk" ¯ ­¥«¨
;-------------------------------------------------
get_free_space:
ld a,(flag_summary_info) ; ä« £ ¢ë¢®¤  á㬬 à­®© ¨­äë
or a
ret z ; false
bit 6,b ; ᯥª-ä®à¬ â
ret nz
; ¢ë¢¥á⨠®ª­® "Calculating free space..."
push bc
push hl
ld hl,win_free_disk ; ®¯¨á â¥«ì ®ª­ 
call WinSimple ; ¢ë¢¥á⨠®ª­®
pop hl
pop bc
ld a,c
push hl
bit 6,b ; ᯥª-ä®à¬ â
jr nz,get_free_spec
;----------------------------------------------------
; ‚ëç¨á«¨âì ᢮¡. ¬¥áâ® ­  MS-DOS ¤¨áª¥
;----------------------------------------------------
ld c,3 ; ¨­ä  ® ¤¨áª¥
rst ToDSS
jr nc,get_free_ok
ld bc,0
ld e,c
ld d,c
jr get_free__
;
get_free_ok:
; a=à §¬¥à ª« áâ¥à  ¢ ᥪâ®à å
; bc=à §¬¥à ᥪâ®à  ¢ ¡ ©â å
; de=᢮¡. ª« áâ¥à®¢
push de
ld hl,0
add hl,bc ; ¢ëç¨á«¨âì à §¬¥à ª« áâ¥à 
dec a
jr nz,$-2
ex de,hl ; de=à §¬¥à ª« áâ¥à 
pop bc ; ᢮¡. ª« áâ¥à®¢
call mul_bcde ; bc*de=hlbc ᢮¡. ¬¥áâ®
ex de,hl
get_free__:
pop hl
; ¬«.à §àï¤
ld (hl),c ; hl=free_space_disk (free_space_disk1)
inc hl
ld (hl),b
inc hl
; áâ.à §àï¤
ld (hl),e
inc hl
ld (hl),d
; § ªàëâì ®ª­® "Calculating free space..."
jp CloseWinSimple
;----------------------------------------------------
; ‚ëç¨á«¨âì ᢮¡. ¬¥áâ® ­  ᯥªâà㬮¢áª®¬ ¤¨áª¥
; (®â¤¥«¨âì trd-ä®à¬ â ®â scl-ä®à¬ â )
; (655,360 ¡ ©â trd-¤¨áª )
; ¢å®¤: hl 㦥 ¢ á⥪¥
; a=­®¬¥à ¤¨áª 
;----------------------------------------------------
get_free_spec:
; ¢ëç¨á«¨âì ç¨á«® ᢮¡. ª« áâ¥à®¢
; ...
;
ld de,640; ; ᢮¡. ª« áâ¥à®¢
;
ld a,1 ; à §¬¥à ª« áâ¥à  ¢ ᥪâ®à å
ld bc,1024 ; à §¬¥à ᥪâ®à  ¢ ¡ ©â å
jr get_free_ok ; § ¯®«­¨âì áâபã
;-----------------------------------------------------------
; Ž¡­®¢«¥­¨¥ ᯨ᪠ ¯ ­¥«¨ ¯à¨ ­ ¢¨£ æ¨¨ ¯® ¯ ¯ª ¬
;-----------------------------------------------------------
fresh_list_panel:
call read_new_folder ; ­®¢ë© ᯨ᮪ ª â «®£  + à §¬¥à ¯ ¯ª¨
ret c
call sorting ; à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥© + á®àâ. ᯨ᪠
fresh_list_pan:
; ¢ëç¨á«¨âì ᢮¡. ¬¥áâ® ¤¨áª 
ld hl,free_space_disk ; ï祩ª¨  ªâ. ¯ ­¥«¨
ld a,(format_mode)
ld b,a
ld a,(disk)
ld c,a
db 3Eh ; ld a,..
enter_to_folder:
db false ; ä« £ "­ ¢¨£ æ¨ï ¯® ¯ ¯ª ¬"
or a
call z,get_free_space
db 21h ; ld hl,..
fresh_list_point:
dw 0 ; á®åà. ¯®«®¦. 㪠§ â¥«ï
ld (cur_pointer),hl ; ⥪. ¯®«®¦. 㪠§ â¥«ï
db 21h ; ld hl,..
fresh_list_offset:
dw 0 ; á®åà. ᬥé. ᯨ᪠
ld (offset_list),hl ; ᬥ饭¨¥ ᯨ᪠
jp A20FC ; ¢ë¢®¤ ¯ ­¥«¨