shell: partition capacity in DIR

This commit is contained in:
Anatoliy Belyanskiy 2024-04-29 14:43:45 +10:00
parent e2606832b9
commit dbc5088978
3 changed files with 83 additions and 53 deletions

View File

@ -172,33 +172,39 @@ cmd_dir: push de
;xor a
;ld (de),a
;
;
;LD A,(read_disk_info.full)
;OR A
;ld hl,has_not_full_info
;JR Z,.skip_full_space
;
; full capacity
ld a,(full_space_high)
ld hl,(full_space_medium) ; áâ. à §àï¤
exx
ld hl,(full_space_low) ; ¬«. à §àï¤
CALL PRN_DISK_SIZE
; ;
ld de,MAIN_MSG.DIR_2 ; ¨­¤¥ªá " %1 file(s), %2 bytes, %3 Dir(s)"
CALL MESSAGE ; ¢ë¢¥á⨠áâபã
;
ld a,(read_disk_info.full)
and a
ld de,MAIN_MSG.CRLF
jp z,MESSAGE
;ld de,MAIN_MSG.CRLF
;jp z,MESSAGE
RET Z
;
; free space
ld a,(free_space_high)
ld hl,(free_space_medium) ; áâ. à §àï¤
exx
ld hl,(free_space_low) ; ¬«. à §àï¤
;exx
call PRINT_5BYTES
ld hl,SIZE_BUFFER.high ; "000 000 000 000"
ld de,PRM1 ; and PRM2 ; ªã¤ 
ld bc,SIZE_BUFFER.bytes
call ncopy_string.start ; ᪮¯¨à. áâபã (á ­ã«¥¬), ¬ ªá. SIZE_BUFFER.bytes ᨬ¢.
;
CALL PRN_DISK_SIZE
;
ld de,MAIN_MSG.DIR_4 ; ¨­¤¥ªá " %6 bytes free"
jp MESSAGE
;
PRN_DISK_SIZE: call PRINT_5BYTES
ld hl,SIZE_BUFFER.high ; "000 000 000 000"
ld de,PRM5 ; and PRM6 ; ªã¤ 
ld bc,SIZE_BUFFER.bytes
jp ncopy_string.start ; ᪮¯¨à. áâபã (á ­ã«¥¬), ¬ ªá. SIZE_BUFFER.bytes ᨬ¢.
;
Print_Header: ; %1
ld hl,PRM1
ld a,'"'
@ -283,7 +289,7 @@ PRNSIZE: ld a,(ix+32)
ld h,(ix+FAT_DIRECTORY_RECORD.F_SIZE+3)
exx
push ix
call MAKE_LN ; ¤¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤
call MAKE_LN_32 ; ¤¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤
ld hl,L32BIT_.end
ld a,(hl)
cp " "
@ -402,6 +408,28 @@ toNumber: ld c,#2F
; „¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤
; HL':HL - ç¨á«® ¤«ï ¯¥à¥¢®¤ 
; !FIXIT ¬®¦­® ®¡ê¥¤¥­¨âì á PDIGIT
MAKE_LN_32: CALL MAKE_LN
ld hl,L32BIT_ ; "0000000000"
JR MAKE_LN_Clean
;
MAKE_LN_40: CALL MAKE_LN.skip_1
ld hl,L40BIT_ ; "0000000000"
;
MAKE_LN_Clean: ld de,#2030 ; " ","0"
.KILLZ: ld a,(hl)
cp e
jr nz,.KILLZ2
ld (hl),d
inc hl
jr .KILLZ
;
.KILLZ2: ld hl,L32BIT_.end ; "0"
ld a,(hl)
cp d
ret nz
ld (hl),e
ret
MAKE_LN: ld ix,L32BIT_ ; "0000000000"
exx
ld de,#3B9A
@ -461,22 +489,8 @@ MAKE_LN: ld ix,L32BIT_ ; "0000000000"
add a,"0"
ld (ix+0),a
inc ix
ld hl,L32BIT_ ; "0000000000"
ld de,#2030 ; " ","0"
.KILLZ: ld a,(hl)
cp e
jr nz,.KILLZ2
ld (hl),d
inc hl
jr .KILLZ
;
.KILLZ2: ld hl,L32BIT_.end ; "0"
ld a,(hl)
cp d
ret nz
ld (hl),e
ret
;
GET_DIG: xor a
.loop: inc a
sbc hl,de
@ -505,6 +519,10 @@ free_space_low: WORD 0
free_space_medium: WORD 0
free_space_high: BYTE 0
;
full_space_low: WORD 0
full_space_medium: WORD 0
full_space_high: BYTE 0
;
L40BIT_ db "00"
L32BIT_: db "000000000"
@ -544,7 +562,7 @@ read_disk_info: OR #80
AND E
EXX
INC A
JR Z,.no_full_space_option
;JR Z,.no_full_space_option
LD (.full),A
; ;
; LD A,(.full)
@ -605,8 +623,13 @@ read_disk_info: OR #80
LD A,C
LD (free_space_high),A
LD (free_space_medium),DE
;
LD A,B
LD (full_space_high),A
LD (full_space_medium),HL
EXX
LD (free_space_low),DE
LD (full_space_low),HL
;
.no_full_space_option:
; parse
@ -831,27 +854,38 @@ PRINT_5BYTES: ld ix,L40BIT_ ; "00"
;
; DE':DE = 100,000,000
; HL':HL ¥éñ ­ã¦­ë
PUSH HL
LD HL,L40BIT_
LD B,2 ;!HARDCODE 2 §­ ª 
.loop: LD A,(HL)
CP "0"
jr nz,.not_zero
LD (HL)," "
.not_zero: INC HL
DJNZ .loop
POP HL
CALL MAKE_LN.skip_1
JR PRINT_DWORD.skip_LN
; PUSH HL
; LD HL,L40BIT_
; LD B,3 ;!HARDCODE 2 §­ ª 
; .loop: LD A,(HL)
; CP "1"
; jr nc,.exit_clean
; LD (HL)," "
; INC HL
; DJNZ .loop
;.exit_clean: POP HL
CALL MAKE_LN_40
;JR PRINT_DWORD.skip_LN
;
PRINT_DWORD: call MAKE_LN ; ¤¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤
;PRINT_DWORD: call MAKE_LN ; ¤¥áïâ¨ç­ë© 32-å à §àï¤­ë© ¢ë¢®¤
.skip_LN: ld hl,L32BIT_.end ; "0"
ld a,(hl)
cp " "
jr nz,.not_zero
ld a,"0"
ld (hl),a
.not_zero: ld de,SIZE_BUFFER.high ; "0 000 000 000"
.not_zero:
; ld hl,SIZE_BUFFER.high ; "0 000 000 000"
; ld b,SIZE_BUFFER.bytes - 1
; .clean_loop: ld a,(hl)
; cp "1"
; jr nc,.exit_clean
; ld (hl)," "
; inc hl
; djnz .clean_loop
;
.exit_clean: ld de,SIZE_BUFFER.high ; "0 000 000 000"
ld hl,L40BIT_ ; "0000000000"
ldi
ldi

View File

@ -43,13 +43,9 @@ MAIN_MSG:
stN .ECHO_ : DZ "Echo is %1\r\n"
stN .ON_ : DZ "on"
stN .OFF_ : DZ "off"
; stN .DIR_2_ : db " %3 File(s) %1 byte(s)\r\n"
; DZ " %4 Dir(s) "
; stN .DIR_4_ : DZ "%1 bytes free\r\n"
stN .DIR_2_ : db " %3 File(s)\r %1 byte(s)\r\n"
DZ " %4 Dir(s)"
stN .DIR_4_ : DZ "\r %1 bytes free\r\n"
; stN .DIR_3_ : DZ "%1 %2 %3 %4 - %5\r\n" ;FILENAME EXT SIZE DATE TIME
DZ " %4 Dir(s)\r %5 byte(s) capacity\r\n"
stN .DIR_4_ : DZ " Free space %5 byte(s)\r\n"
stN .DIR_3_ : DZ "%4 %5 %3 %1 %2 \r\n" ;DATE TIME SIZE FILENAME EXT
stN .HELP_ : db "COMMANDS:\r\n"
db "DIR REN | RENAME PATH HELP \r\n"
@ -57,7 +53,7 @@ MAIN_MSG:
db "MD | MKDIR TIME ECHO EXIT \r\n"
DZ "RD | RMDIR DATE CLS REBOOT \r\n\n"
stN .CALC_ : DZ "Calculating free space...\r"
; ;R11
; ;R11
db 0
DZ "Unknown command"
; ;

View File

@ -1 +1 @@
346
356