mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
добавлены ключи /f и /p для команды DIR
This commit is contained in:
parent
ce4125e4c6
commit
c5ca8e7597
@ -9,15 +9,21 @@ cmd_dir:
|
|||||||
; § ã«ï¥¬ ¢á¥ ¯ à ¬¥âàë áâ àâ¥
|
; § ã«ï¥¬ ¢á¥ ¯ à ¬¥âàë áâ àâ¥
|
||||||
xor a
|
xor a
|
||||||
ld (read_disk_info.full),a
|
ld (read_disk_info.full),a
|
||||||
|
ld (.key_p),a
|
||||||
|
|
||||||
; ¢ë¯®«ï¥¬/ áâà ¨¢ ¥¬ ¢á¥ ©¤¥ë¥ ¯ à ¬¥âàë ¢ áâப¥
|
; ¢ë¯®«ï¥¬/ áâà ¨¢ ¥¬ ¢á¥ ©¤¥ë¥ ¯ à ¬¥âàë ¢ áâப¥
|
||||||
ld hl,cmd_dir_options
|
|
||||||
LD C,256-3 ;!HARDCODE ¤«¨ áâப¨ á ª®¬ ¤®©
|
LD C,256-3 ;!HARDCODE ¤«¨ áâப¨ á ª®¬ ¤®©
|
||||||
.parse: call RUN_OPTION
|
.parse: ld hl,cmd_dir_options
|
||||||
jr nc,.skip
|
call RUN_OPTION
|
||||||
|
jr nc,.end_opt
|
||||||
jp (hl)
|
jp (hl)
|
||||||
;
|
.end_opt:
|
||||||
|
; ¢ë¢®¤¨¬ áâப㠮 à áçñ⥠᢮¡®¤®£® ¬¥áâ â ª, ç⮡ ® § âñà« áì
|
||||||
|
ld a,(read_disk_info.full)
|
||||||
|
and a
|
||||||
|
jr z,.skip
|
||||||
|
LD DE,MAIN_MSG.CALCULATING
|
||||||
|
CALL MESSAGE
|
||||||
.skip: ld c,Dss.CurDisk ; ã§ âì ⥪. ¤¨áª
|
.skip: ld c,Dss.CurDisk ; ã§ âì ⥪. ¤¨áª
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
ADD A,"A"
|
ADD A,"A"
|
||||||
@ -26,8 +32,6 @@ cmd_dir:
|
|||||||
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
||||||
;
|
;
|
||||||
pop de
|
pop de
|
||||||
ld a,#ff
|
|
||||||
ld (.key_p),a
|
|
||||||
ld hl,0
|
ld hl,0
|
||||||
ld (D88DC),hl
|
ld (D88DC),hl
|
||||||
ld (D88DE),hl
|
ld (D88DE),hl
|
||||||
@ -205,10 +209,10 @@ cmd_dir:
|
|||||||
;ld (de),a
|
;ld (de),a
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
LD A,(read_disk_info.full)
|
;LD A,(read_disk_info.full)
|
||||||
OR A
|
;OR A
|
||||||
ld hl,has_not_full_info
|
;ld hl,has_not_full_info
|
||||||
JR Z,.skip_full_space
|
;JR Z,.skip_full_space
|
||||||
;
|
;
|
||||||
ld hl,(free_space) ; ¬«. à §àï¤
|
ld hl,(free_space) ; ¬«. à §àï¤
|
||||||
exx
|
exx
|
||||||
@ -217,13 +221,20 @@ cmd_dir:
|
|||||||
CALL Size2Char
|
CALL Size2Char
|
||||||
ld hl,T8B46 ; "0 000 000 000"
|
ld hl,T8B46 ; "0 000 000 000"
|
||||||
;
|
;
|
||||||
.skip_full_space:
|
;.skip_full_space:
|
||||||
ld de,PRM4 ; ªã¤
|
ld de,PRM4 ; ªã¤
|
||||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
ld de,MAIN_MSG.DIR_2 ; ¨¤¥ªá " %1 file(s) %2 bytes"
|
ld de,MAIN_MSG.DIR_2 ; ¨¤¥ªá " %1 file(s) %2 bytes"
|
||||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
CALL MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||||
|
ld a,(read_disk_info.full)
|
||||||
|
and a
|
||||||
|
ld de,MAIN_MSG.DIR_4 ;
|
||||||
|
jp nz,MESSAGE
|
||||||
|
ld de,MAIN_MSG.CRLF ;
|
||||||
|
jp MESSAGE
|
||||||
|
|
||||||
|
|
||||||
.Print_Header:
|
.Print_Header:
|
||||||
; %1
|
; %1
|
||||||
@ -243,7 +254,7 @@ cmd_dir:
|
|||||||
ld de,PRM3 ; 16 ¡ãä¥à
|
ld de,PRM3 ; 16 ¡ãä¥à
|
||||||
CALL copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
CALL copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||||
;
|
;
|
||||||
ld de,MAIN_MSG.DIR_1 ; ¨¤¥ªá "Volume in drive %1..." ;!HARDCODE ®¬¥à áâப¨ MSG0
|
ld de,MAIN_MSG.DIR_1 ; ¨¤¥ªá "Volume in drive %1..."
|
||||||
JP MESSAGE ; ¢ë¢¥á⨠áâபã
|
JP MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
@ -625,7 +636,7 @@ read_disk_info:
|
|||||||
.good_label:
|
.good_label:
|
||||||
POP HL
|
POP HL
|
||||||
PUSH HL ; «¨è¥¥
|
PUSH HL ; «¨è¥¥
|
||||||
;!FIXIT ᤥ« âì ç¥à¥§ à£ã¬¥âë %1-%9
|
|
||||||
; ¥áâì ¬¥âª
|
; ¥áâì ¬¥âª
|
||||||
volume_label:
|
volume_label:
|
||||||
pop DE ; «¨è¥¥
|
pop DE ; «¨è¥¥
|
||||||
@ -676,46 +687,46 @@ volume_string_no:
|
|||||||
db "has no label",0
|
db "has no label",0
|
||||||
volume_string_yes:
|
volume_string_yes:
|
||||||
db "has label",0
|
db "has label",0
|
||||||
has_not_full_info:
|
; has_not_full_info:
|
||||||
db ' (?)',0
|
; db ' (?)',0
|
||||||
;
|
;
|
||||||
cmd_dir_options:
|
cmd_dir_options:
|
||||||
; [ ] ¯ à ¬¥âà /F - ¢ë¢®¤ ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ ¤¨áª¥ (â®à¬®§¨â, ¯®í⮬㠯 à ¬¥â஬)
|
; [ ] ¯ à ¬¥âà /F - ¢ë¢®¤ ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ ¤¨áª¥ (â®à¬®§¨â, ¯®í⮬㠯 à ¬¥â஬)
|
||||||
DB 'f' : DW cmd_dir_freeSpace
|
DB 'f' : DW cmd_dir_freeSpace
|
||||||
;DB 'p' : DW cmd_dir_pause
|
DB 'p' : DW cmd_dir_pause
|
||||||
.Size EQU ($-cmd_dir_options)/3
|
.Size EQU ($-cmd_dir_options)/3
|
||||||
.paramLength equ 3
|
.paramLength equ 3
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
cmd_dir_freeSpace:
|
cmd_dir_freeSpace:
|
||||||
PUSH DE
|
;PUSH DE
|
||||||
PUSH BC
|
;PUSH BC
|
||||||
; § â¨à ¥¬ ©¤¥ë© ª«îç
|
; § â¨à ¥¬ ©¤¥ë© ª«îç
|
||||||
ld A,'/'
|
; ld A,'/'
|
||||||
ex de,hl
|
; ex de,hl
|
||||||
ld bc,4
|
; ld bc,4
|
||||||
CPDR
|
; CPDR
|
||||||
inc hl
|
; inc hl
|
||||||
ld (hl),' '
|
; ld (hl),' '
|
||||||
inc hl
|
; inc hl
|
||||||
ld (hl),' '
|
; ld (hl),' '
|
||||||
|
|
||||||
; áâ ¢¨¬ ®¯æ¨î ¤«ï API DSS DskInfo
|
; áâ ¢¨¬ ®¯æ¨î ¤«ï API DSS DskInfo
|
||||||
ld a,1
|
ld a,1
|
||||||
ld (read_disk_info.full),a
|
ld (read_disk_info.full),a
|
||||||
; ¢ë¢®¤¨¬ áâப㠮 à áçñ⥠᢮¡®¤®£® ¬¥áâ â ª, ç⮡ ® § âñà« áì
|
; ; ¢ë¢®¤¨¬ áâப㠮 à áçñ⥠᢮¡®¤®£® ¬¥áâ â ª, ç⮡ ® § âñà« áì
|
||||||
LD DE,MAIN_MSG.CALCULATING
|
; LD DE,MAIN_MSG.CALCULATING
|
||||||
CALL MESSAGE
|
; CALL MESSAGE
|
||||||
; ¢®§¢à é ¥¬áï ¢ 横«
|
; ¢®§¢à é ¥¬áï ¢ 横«
|
||||||
POP BC
|
;POP BC
|
||||||
POP DE
|
;POP DE
|
||||||
jp cmd_dir.parse
|
jp cmd_dir.parse
|
||||||
;
|
;
|
||||||
; cmd_dir_pause:
|
cmd_dir_pause:
|
||||||
; xor a
|
ld a,#ff
|
||||||
; ld (cmd_dir.key_p),a
|
ld (cmd_dir.key_p),a
|
||||||
; jp cmd_dir.parse
|
jp cmd_dir.parse
|
||||||
///////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////
|
||||||
Size2Char:
|
Size2Char:
|
||||||
call A8A8F ; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
call A8A8F ; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||||
|
|||||||
@ -34,7 +34,7 @@ A862E: ld a,(echo_mode) ; 䫠
|
|||||||
or a
|
or a
|
||||||
ld de,7 ; ¨¤¥ªá "on"
|
ld de,7 ; ¨¤¥ªá "on"
|
||||||
jr nz,$+5 ; false
|
jr nz,$+5 ; false
|
||||||
ld de,8 ; 身丰花 "off"
|
ld de,MAIN_MSG.OFF ; 身丰花 "off"
|
||||||
call FMESAGE ; ©â¨ áâப㠯® ¨¤¥ªáã
|
call FMESAGE ; ©â¨ áâப㠯® ¨¤¥ªáã
|
||||||
ld de,PRM1 ; ªã¤ ( à£ã¬¥â %1)
|
ld de,PRM1 ; ªã¤ ( à£ã¬¥â %1)
|
||||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||||
|
|||||||
@ -1,46 +0,0 @@
|
|||||||
;!TODO ¥ § ¡ëâì § ¬¥¨âì æ¨äàë í⨠¬¥âª¨
|
|
||||||
MAIN_MSG:
|
|
||||||
.DIR_1 EQU 0
|
|
||||||
.VERSION EQU 1
|
|
||||||
.DATE EQU 2
|
|
||||||
.TIME EQU 3
|
|
||||||
.PAUSE EQU 4
|
|
||||||
.INVALID EQU 5
|
|
||||||
.ECHO EQU 6
|
|
||||||
.ON EQU 7
|
|
||||||
.OFF EQU 8
|
|
||||||
.DIR_2 EQU 9
|
|
||||||
.DIR_3 EQU 10
|
|
||||||
.HELP EQU 11
|
|
||||||
.CALCULATING EQU 12
|
|
||||||
.CRLF EQU 13
|
|
||||||
|
|
||||||
.TABLE: db 0
|
|
||||||
/* 0 */ db "Volume in drive %1 %4 %5",CR,LF
|
|
||||||
db "Volume Serial Number is %2",CR,LF
|
|
||||||
db CR,LF,"Directory of %3",CR,LF,LF,0
|
|
||||||
/* 1 */ db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13
|
|
||||||
/* 2 */ db "Current date: %1",CR,LF,0
|
|
||||||
/* 3 */ db "Current time: %1",CR,LF,0
|
|
||||||
/* 4 */ db "Press any key to continue . . .",CR,0
|
|
||||||
/* 5 */ db "Invalid parametr",CR,LF,0
|
|
||||||
/* 6 */ db "Echo is %1",CR,LF,0
|
|
||||||
/* 7 */ db "on",0
|
|
||||||
/* 8 */ db "off",0
|
|
||||||
/* 9 */ db " %1 File(s) %2 bytes",CR,LF
|
|
||||||
db " %3 Dir(s) %4 bytes free",CR,LF,LF,0
|
|
||||||
; db " %3 Dir(s)",CR,LF,LF,0
|
|
||||||
/* 10 */ db "%1 %2 %3 %4 - %5",CR,LF,0 ;FILENAME EXT SIZE DATE TIME
|
|
||||||
/* 11 */ DB "COMMANDS:",CR,LF,CR,LF
|
|
||||||
DB "DIR REN | RENAME PATH HELP ",CR,LF
|
|
||||||
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
|
||||||
DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
|
||||||
DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,LF,0
|
|
||||||
/* 12 */ DB "Calculating free space...",CR,0
|
|
||||||
/* 13 */ DB CR,LF,0
|
|
||||||
;R11
|
|
||||||
DB 0
|
|
||||||
DZ "Unknown command"
|
|
||||||
;
|
|
||||||
.TABLE.Size EQU $-.TABLE
|
|
||||||
;
|
|
||||||
59
SHELL/Messages/main_txt.asm
Normal file
59
SHELL/Messages/main_txt.asm
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
MACRO stN Name?
|
||||||
|
@Name? EQU txtCounter
|
||||||
|
!txtCounter=txtCounter+1
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
MAIN_MSG:
|
||||||
|
; ¤«ï 㤮¡á⢠:
|
||||||
|
.DIR_1 EQU .DIR_1_
|
||||||
|
.VERSION EQU .VERS_
|
||||||
|
.DATE EQU .DATE_
|
||||||
|
.TIME EQU .TIME_
|
||||||
|
.PAUSE EQU .PAUSE_
|
||||||
|
.INVALID EQU .INV_
|
||||||
|
.ECHO EQU .ECHO_
|
||||||
|
.ON EQU .ON_
|
||||||
|
.OFF EQU .OFF_
|
||||||
|
.DIR_2 EQU .DIR_2_
|
||||||
|
.DIR_3 EQU .DIR_3_
|
||||||
|
.DIR_4 EQU .DIR_4_
|
||||||
|
.HELP EQU .HELP_
|
||||||
|
.CALCULATING EQU .CALC_
|
||||||
|
.CRLF EQU .CRLF_
|
||||||
|
;
|
||||||
|
!txtCounter DEFL 0
|
||||||
|
;
|
||||||
|
.TABLE: : db 0
|
||||||
|
stN .DIR_1_ : db "Volume in drive %1 %4 %5",CR,LF
|
||||||
|
db "Volume Serial Number is %2",CR,LF
|
||||||
|
db CR,LF,"Directory of %3",CR,LF,LF,0
|
||||||
|
stN .VERS_ : db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13
|
||||||
|
stN .DATE_ : db "Current date: %1",CR,LF,0
|
||||||
|
stN .TIME_ : db "Current time: %1",CR,LF,0
|
||||||
|
stN .PAUSE_ : db "Press any key to continue . . .",CR,0
|
||||||
|
stN .INV_ : db "Invalid parametr",CR,LF,0
|
||||||
|
stN .ECHO_ : db "Echo is %1",CR,LF,0
|
||||||
|
stN .ON_ : db "on",0
|
||||||
|
stN .OFF_ : db "off",0
|
||||||
|
stN .DIR_2_ : db " %1 File(s) %2 bytes",CR,LF
|
||||||
|
db " %3 Dir(s) ",0
|
||||||
|
stN .DIR_4_ : db "%4 bytes free",CR,LF,0
|
||||||
|
; db " %3 Dir(s) %4 bytes free",CR,LF,LF,0
|
||||||
|
; : db " %3 Dir(s)",CR,LF,LF,0
|
||||||
|
stN .DIR_3_ : db "%1 %2 %3 %4 - %5",CR,LF,0 ;FILENAME EXT SIZE DATE TIME
|
||||||
|
stN .HELP_ : db "COMMANDS:",CR,LF,CR,LF
|
||||||
|
db "DIR REN | RENAME PATH HELP ",CR,LF
|
||||||
|
db "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
||||||
|
db "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
||||||
|
db "RD | RMDIR DATE CLS REBOOT ",CR,LF,LF,0
|
||||||
|
stN .CALC_ : db "Calculating free space...",CR,0
|
||||||
|
stN .CRLF_ : db CR,LF,0
|
||||||
|
; ;R11
|
||||||
|
db 0
|
||||||
|
DZ "Unknown command"
|
||||||
|
; ;
|
||||||
|
.TABLE.Size EQU $-.TABLE
|
||||||
|
;
|
||||||
|
!txtCounter=0
|
||||||
|
;
|
||||||
@ -82,10 +82,10 @@ RUN_OPTION:
|
|||||||
JR Z,.good
|
JR Z,.good
|
||||||
AND A
|
AND A
|
||||||
JR NZ,RUN_OPTION.loop
|
JR NZ,RUN_OPTION.loop
|
||||||
LD C,1
|
;LD C,1
|
||||||
;
|
;
|
||||||
.good: push hl
|
.good: dec hl
|
||||||
dec hl
|
push hl
|
||||||
ld b,cmd_dir_options.Size ;!HARDCODE
|
ld b,cmd_dir_options.Size ;!HARDCODE
|
||||||
ex de,hl
|
ex de,hl
|
||||||
ld a,(de)
|
ld a,(de)
|
||||||
@ -100,7 +100,27 @@ RUN_OPTION:
|
|||||||
pop hl
|
pop hl
|
||||||
jr RUN_OPTION
|
jr RUN_OPTION
|
||||||
; found
|
; found
|
||||||
.found: pop de
|
.found: ; § â¨à ¥¬ ©¤¥ë© ª«îç
|
||||||
|
pop de
|
||||||
|
ex de,hl
|
||||||
|
ld (hl),' '
|
||||||
|
dec hl
|
||||||
|
ld (hl),' '
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
ex de,hl
|
||||||
|
;ld A,'/'
|
||||||
|
;ex de,hl
|
||||||
|
;ld bc,4
|
||||||
|
;CPDR
|
||||||
|
;inc hl
|
||||||
|
;ld (hl),' '
|
||||||
|
;inc hl
|
||||||
|
;ld (hl),' '
|
||||||
|
;inc hl
|
||||||
|
;ex de,hl
|
||||||
|
;
|
||||||
LD B,C
|
LD B,C
|
||||||
inc hl
|
inc hl
|
||||||
ld a,(hl)
|
ld a,(hl)
|
||||||
|
|||||||
@ -525,8 +525,8 @@ T8C24: db "OFF",0
|
|||||||
include 'batch.asm' ; ¯ àᨣ bat-ä ©«®¢
|
include 'batch.asm' ; ¯ àᨣ bat-ä ©«®¢
|
||||||
include 'exec.asm' ; ¢ë¯®«. ¢¢¥¤. ª®¬ ¤ á ª®á®«¨
|
include 'exec.asm' ; ¢ë¯®«. ¢¢¥¤. ª®¬ ¤ á ª®á®«¨
|
||||||
include 'procedures/print.asm' ; äãªæ¨¨ ¢ë¢®¤ á®®¡é¥¨©
|
include 'procedures/print.asm' ; äãªæ¨¨ ¢ë¢®¤ á®®¡é¥¨©
|
||||||
include 'messages/errors.asm' ; á®®¡é¥¨ï ®¡ ®è¨¡ª å
|
include 'messages/errors_txt.asm' ; á®®¡é¥¨ï ®¡ ®è¨¡ª å
|
||||||
include 'messages/main.asm' ; á®®¡é¥¨ï
|
include 'messages/main_txt.asm' ; á®®¡é¥¨ï
|
||||||
include 'procedures/parsers.asm' ; äãªæ¨¨ ¯à®ç¥áë¢ ¨ï ¨ ¢ë¡®à
|
include 'procedures/parsers.asm' ; äãªæ¨¨ ¯à®ç¥áë¢ ¨ï ¨ ¢ë¡®à
|
||||||
include 'procedures/math.asm' ; äãªæ¨¨ ¬ ⥬ â¨ç¥áª¨¥
|
include 'procedures/math.asm' ; äãªæ¨¨ ¬ ⥬ â¨ç¥áª¨¥
|
||||||
|
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
201
|
259
|
||||||
Loading…
Reference in New Issue
Block a user