mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-16 01:41:17 +03:00
SHELL: new command "INFO"& Show FS in DIR.
CORE: Some fixes with F_First
This commit is contained in:
parent
7bda57266b
commit
4cebd03a1a
@ -13,34 +13,32 @@
|
||||
;‚ëå®¤ë¥ § 票ï:
|
||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
F_FIRST:
|
||||
LD (.TMP),A
|
||||
LD (.DTABUF),DE
|
||||
LD A,B
|
||||
LD (.FNDMODE),A
|
||||
PUSH HL
|
||||
;!TEST Current Dir ;[x] 15/10/23
|
||||
; [ ] 10/06/24
|
||||
IF OLD_DSS_FOR_OLD_EXE
|
||||
LD A,(EXE_VERSION)
|
||||
OR A
|
||||
JR Z,.old_EXE
|
||||
ENDIF
|
||||
;
|
||||
CALL DIR_PATH_CHECK
|
||||
RET C
|
||||
;
|
||||
.old_EXE:
|
||||
POP HL
|
||||
CALL GETWORD
|
||||
;CALL LOADDIR
|
||||
RET C
|
||||
CALL MASK
|
||||
RET C
|
||||
LD A,(.TMP)
|
||||
CALL SEARCH.Custom
|
||||
RET C
|
||||
LD HL,MASKARE
|
||||
F_FIRST_FN: CALL F_FIRST.INIT_VARS
|
||||
PUSH HL
|
||||
;!TEST Current Dir ;[x] 15/10/23
|
||||
; [ ] 10/06/24
|
||||
IF OLD_DSS_FOR_OLD_EXE
|
||||
LD A,(EXE_VERSION)
|
||||
OR A
|
||||
JR Z,.old_EXE
|
||||
ENDIF
|
||||
;
|
||||
CALL DIR_PATH_CHECK
|
||||
RET C
|
||||
;
|
||||
.old_EXE: POP HL
|
||||
JR F_FIRST.begin
|
||||
;
|
||||
F_FIRST: CALL .INIT_VARS
|
||||
.begin: CALL GETWORD
|
||||
;CALL LOADDIR
|
||||
RET C
|
||||
CALL MASK
|
||||
RET C
|
||||
LD A,(.TMP)
|
||||
CALL SEARCH.Custom
|
||||
RET C
|
||||
LD HL,MASKARE
|
||||
.DTABUF+1:
|
||||
LD DE,0
|
||||
LD BC,11 ;!HARDCODE
|
||||
@ -78,7 +76,13 @@ F_FIRST:
|
||||
;
|
||||
CALL GetName
|
||||
JR .exit
|
||||
|
||||
;
|
||||
.INIT_VARS:
|
||||
LD (.TMP),A
|
||||
LD (.DTABUF),DE
|
||||
LD A,B
|
||||
LD (.FNDMODE),A
|
||||
RET
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
;
|
||||
|
||||
@ -247,8 +247,10 @@ FAT_STRING: DB 'FAT12'
|
||||
GET_LABEL: PUSH DE
|
||||
LD HL,.LABEL_MASK ; "\*.*" ¨¬ï ¬¥âª¨
|
||||
LD A,FAT_ATTR.VOLUME_ID ; âਡãâ ¬¥âª¨ ⮬
|
||||
LD BC,Dss.F_First.FATname ; f_first, ä®à¬ â 11
|
||||
RST ToDSS
|
||||
LD B,high Dss.F_First.FATname
|
||||
CALL F_FIRST
|
||||
;LD BC,Dss.F_First.FATname ; f_first, ä®à¬ â 11
|
||||
;RST ToDSS
|
||||
POP DE
|
||||
LD HL,CORE_BUFFERS.FatBuffer.BPB_LABEL
|
||||
RET C
|
||||
|
||||
@ -335,16 +335,16 @@ GO_ZERO EQU #0000
|
||||
;FUNCTION ADDRESS ARRAY
|
||||
ADRST10: ;DS 512 ;,0
|
||||
;...............................................[LOW ADDRESS ]:
|
||||
; 0 1 2 3 4 5 6 7 8 9 DEC HEX
|
||||
DB low F_START, low CHNDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
|
||||
DB low CREATE, low CREATE.NEW, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
|
||||
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST, low F_NEXT, low MKDIR.B, low RMDIR, low CHDIR_FN ; 2 14..1D
|
||||
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
|
||||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
|
||||
DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B
|
||||
DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low GET_ERR, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45
|
||||
DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F
|
||||
DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59
|
||||
; 0 1 2 3 4 5 6 7 8 9 DEC HEX
|
||||
DB low F_START, low CHNDISK_FN, low CURDISK_FN,low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
|
||||
DB low CREATE, low CREATE.NEW, low NOPS, low NOPS, low DEL_FN, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
|
||||
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST_FN,low F_NEXT, low MKDIR.B, low RMDIR, low CHDIR_FN ; 2 14..1D
|
||||
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
|
||||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
|
||||
DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B
|
||||
DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low GET_ERR, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45
|
||||
DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F
|
||||
DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59
|
||||
DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT ; 9 5A..5F
|
||||
|
||||
IFN SHORT_RSTx10_TABLE
|
||||
@ -363,15 +363,15 @@ ADRST10: ;DS 512 ;,0
|
||||
;[ ] R09
|
||||
ENDIF
|
||||
;...............................................[HIGH ADDRESS]:
|
||||
DB high F_START, high CHNDISK_FN,high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
|
||||
DB high CREATE, high CREATE.NEW,high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
|
||||
DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST,high F_NEXT, high MKDIR.B,high RMDIR, high CHDIR_FN
|
||||
DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||||
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY
|
||||
DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY,high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3
|
||||
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high GET_ERR,high GSWITCH,high DOSNAME, high EX_PATH
|
||||
DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||||
DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY
|
||||
DB high F_START, high CHNDISK_FN,high CURDISK_FN,high DISKINF,high NOPS, high NOPS, high NOPS, high NOPS, high SCANDRV, high BOOTDSK
|
||||
DB high CREATE, high CREATE.NEW,high NOPS, high NOPS, high DEL_FN, high NOPS, high RENAME, high OPEN_FN,high CLOSE_FN,high READ
|
||||
DB high WRITE, high MOVE_FP, high ATTRIB, high GET_D_T,high PUT_D_T,high F_FIRST_FN,high F_NEXT, high MKDIR.B,high RMDIR, high CHDIR_FN
|
||||
DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||||
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY
|
||||
DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY, high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3
|
||||
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high GET_ERR,high GSWITCH,high DOSNAME, high EX_PATH
|
||||
DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||||
DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY
|
||||
DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT
|
||||
|
||||
IFN SHORT_RSTx10_TABLE
|
||||
|
||||
@ -1 +1 @@
|
||||
992
|
||||
993
|
||||
@ -493,34 +493,35 @@ EVALSTR: ld a,(hl)
|
||||
; !! <09>¥ ¤¥« âì ®¤ã ª®¬ ¤ã > 256 ᨬ¢®«®¢)) !!
|
||||
;
|
||||
; BAT-ª®¬ ¤ë (¥ ®â¤¥«ïâì ®â ¤®á-ª®¬ ¤)
|
||||
BATLIST: DZ 'PAUSE' : DW cmd_pause ;CPAUSE
|
||||
DZ 'REM' : DW cmd_rem ;CREM
|
||||
DZ 'EXIT' : DW cmd_break ;break
|
||||
BATLIST: DZ 'PAUSE' : DW cmd_pause
|
||||
DZ 'REM' : DW cmd_rem
|
||||
DZ 'EXIT' : DW cmd_break
|
||||
;
|
||||
; DSS-ª®¬ ¤ë
|
||||
CMDLIST: DZ 'CD' : DW cmd_chdir ;CCHDIR
|
||||
DZ 'DIR' : DW cmd_dir ;DIR
|
||||
DZ 'ECHO' : DW cmd_echo ;CECHO
|
||||
CMDLIST: DZ 'CD' : DW cmd_chdir
|
||||
DZ 'DIR' : DW cmd_dir
|
||||
DZ 'ECHO' : DW cmd_echo
|
||||
DZ 'ECHO.' : DW cmd_echoLN
|
||||
DZ 'PATH' : DW cmd_path ;CPATH
|
||||
DZ 'MD' : DW cmd_mkdir ;CMKDIR
|
||||
DZ 'REN' : DW cmd_rename ;CRENAM
|
||||
DZ 'DEL' : DW cmd_del ;CDELET
|
||||
DZ 'RD' : DW cmd_rmdir ;CRMDIR
|
||||
DZ 'SET' : DW cmd_set ;CSET
|
||||
DZ 'TIME' : DW cmd_time ;CTIME
|
||||
DZ 'DATE' : DW cmd_date ;CDATE
|
||||
DZ 'VER' : DW cmd_version ;VERS
|
||||
DZ 'CLS' : DW cmd_cls ;CLS
|
||||
DZ 'CHDIR' : DW cmd_chdir ;CCHDIR
|
||||
DZ 'MKDIR' : DW cmd_mkdir ;CMKDIR
|
||||
DZ 'RENAME' : DW cmd_rename ;CRENAM
|
||||
DZ 'ERASE' : DW cmd_del ;CDELET
|
||||
DZ 'RMDIR' : DW cmd_rmdir ;CRMDIR
|
||||
DZ 'HELP' : DW cmd_help ;HELP
|
||||
DZ 'VERSION' : DW cmd_version ;VERS
|
||||
DZ 'EXIT' : DW cmd_exit ;CEXIT
|
||||
DZ 'REBOOT' : DW cmd_reboot ;REBOOT
|
||||
DZ 'PATH' : DW cmd_path
|
||||
DZ 'MD' : DW cmd_mkdir
|
||||
DZ 'REN' : DW cmd_rename
|
||||
DZ 'DEL' : DW cmd_del
|
||||
DZ 'RD' : DW cmd_rmdir
|
||||
DZ 'INFO' : DW cmd_info
|
||||
DZ 'SET' : DW cmd_set
|
||||
DZ 'TIME' : DW cmd_time
|
||||
DZ 'DATE' : DW cmd_date
|
||||
DZ 'VER' : DW cmd_version
|
||||
DZ 'CLS' : DW cmd_cls
|
||||
DZ 'CHDIR' : DW cmd_chdir
|
||||
DZ 'MKDIR' : DW cmd_mkdir
|
||||
DZ 'RENAME' : DW cmd_rename
|
||||
DZ 'ERASE' : DW cmd_del
|
||||
DZ 'RMDIR' : DW cmd_rmdir
|
||||
DZ 'HELP' : DW cmd_help
|
||||
DZ 'VERSION' : DW cmd_version
|
||||
DZ 'EXIT' : DW cmd_exit
|
||||
DZ 'REBOOT' : DW cmd_reboot
|
||||
DB #00
|
||||
|
||||
|
||||
|
||||
@ -106,8 +106,13 @@ cmd_dir: push de
|
||||
.SkipMask: LD C,Dss.CurDisk ; ã§ âì ⥪. ¤¨áª
|
||||
RST ToDSS
|
||||
CALL read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
||||
JR NC,.NeXt
|
||||
;
|
||||
CALL print_err_message
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
CALL Print_Header
|
||||
.NeXt: CALL Print_Header
|
||||
; [ ] 01/10/23
|
||||
ld hl,Buffers.work.free ; ¨¬ï ä ©«
|
||||
ld de,Buffers.work.buffer1 ; 80 ¡ãä¥à
|
||||
@ -566,9 +571,6 @@ S_LOW: WORD 0
|
||||
S_MED: WORD 0
|
||||
S_HIGH: BYTE 0
|
||||
dir_number: WORD 0
|
||||
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
|
||||
@ -589,207 +591,12 @@ SIZE_BUFFER: db " " ;
|
||||
.bytes equ SIZE_BUFFER - $
|
||||
;
|
||||
|
||||
; [x] ⥯¥àì ¥ «¥§¥â ¯àï¬ãî, ¤¥« ¥â ç¥à¥§ ®¢ë© ¯ à ¬¥âà äãªæ¨¨ DskInfo
|
||||
; ¨ ï «®£¨ª ¯®«ãç¥¨ï ¬¥âª¨ ⮬ - á ç « ¨é¥âáï ¢ ª®à¥¢®© ¤¨à¥ªâ®à¨¨,
|
||||
; ¥á«¨ â ¬ ¥â, â® ¡¥àñâáï ¨§ BPB
|
||||
read_disk_info: OR #80
|
||||
LD HL,Buffers.work.buffer
|
||||
.full+1: LD B,0
|
||||
LD C,Dss.DskInfo
|
||||
RST ToDSS
|
||||
; ” ©«®¢ ï á¨á⥬
|
||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||
; Œ¥âª ¤¨áª ¢ BPB
|
||||
;
|
||||
; HL':HL - ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
||||
; DE':DE - ᢮¡®¤ëå ª« áâ¥à®¢
|
||||
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||
; max sector (LBA28) #0FFF'FFFF
|
||||
;
|
||||
EX AF,AF'
|
||||
LD A,D
|
||||
AND E
|
||||
EXX
|
||||
AND D
|
||||
AND E
|
||||
EXX
|
||||
INC A
|
||||
LD (.full),A
|
||||
EX AF,AF'
|
||||
;
|
||||
; --> (HL':HL)*BC*A, (DE':DE)*BC*A = B':HL'HL, C':DE':DE
|
||||
EXX
|
||||
LD BC,0
|
||||
EXX
|
||||
SRL B
|
||||
RR C
|
||||
RRCA
|
||||
JR C,.loop2
|
||||
;
|
||||
.loop1: SLA L
|
||||
RL H
|
||||
EXX
|
||||
RL L
|
||||
RL H
|
||||
RL B
|
||||
EXX
|
||||
;
|
||||
SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
RL C
|
||||
EXX
|
||||
;
|
||||
RRCA
|
||||
JP NC,.loop1
|
||||
;
|
||||
.loop2: SLA L
|
||||
RL H
|
||||
EXX
|
||||
RL L
|
||||
RL H
|
||||
RL B
|
||||
EXX
|
||||
;
|
||||
SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
RL C
|
||||
EXX
|
||||
;
|
||||
SRL B
|
||||
RR C
|
||||
JP NC,.loop2
|
||||
; <-- B':HL'HL, C':DE':DE
|
||||
EXX
|
||||
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
|
||||
LD D,0
|
||||
LD HL,Buffers.work.buffer
|
||||
; âãâ ¢ HL ¤«¨ ¯®«ï "” ©«®¢ ï á¨á⥬ "
|
||||
LD E,(HL)
|
||||
ADD HL,DE
|
||||
INC HL
|
||||
; ¤«¨ ¯®«ï "‘¥à¨©ë© ®¬¥à ¤¨áª "
|
||||
LD A,(HL)
|
||||
LD E,A
|
||||
ADD HL,DE
|
||||
INC HL
|
||||
PUSH HL ; 㪠§ â¥«ì ¤«¨ã ¯®«ï "Œ¥âª ¤¨áª "
|
||||
CP 4 ;!HARDCODE ¤«¨ ¯®«ï á¥à¨©®£® ®¬¥à
|
||||
JR NZ,unknown_serial
|
||||
DEC HL
|
||||
; áâ à襥 á«®¢® á¥à¨©¨ª
|
||||
LD D,(HL)
|
||||
DEC HL
|
||||
LD E,(HL)
|
||||
DEC HL
|
||||
PUSH HL
|
||||
EX DE,HL
|
||||
ld de,serial_string ; xxxx-xxxx
|
||||
call hex16
|
||||
POP HL
|
||||
;
|
||||
ld a,"-"
|
||||
ld (de),a
|
||||
INC DE
|
||||
; ¬« ¤è¥¥ á«®¢® á¥à¨©¨ª
|
||||
LD A,(HL)
|
||||
DEC HL
|
||||
LD L,(HL)
|
||||
LD H,A
|
||||
call hex16
|
||||
;
|
||||
.get_label: ; âãâ ¢ HL ¤«¨ ¯®«ï "Œ¥âª ¤¨áª "
|
||||
POP HL
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
AND A
|
||||
jr z,.no_volume_label ; ¤
|
||||
PUSH HL
|
||||
LD B,A
|
||||
LD A,' '
|
||||
;
|
||||
.loop: CP (HL)
|
||||
JR NZ,.good_label
|
||||
INC HL
|
||||
DJNZ .loop
|
||||
POP HL ; ᨬ ¥¬ «¨è¥¥
|
||||
; ¥â ¬¥âª¨
|
||||
.no_volume_label:; %6
|
||||
ld hl,volume_string_no ; áâப
|
||||
ld de,Buffers.bat_params.PRM6; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
XOR A
|
||||
LD (Buffers.bat_params.PRM7),A
|
||||
ret
|
||||
.good_label: POP HL
|
||||
PUSH HL ; ⮫ª ¥¬ «¨è¥¥
|
||||
; ¥áâì ¬¥âª
|
||||
volume_label: POP DE ; ᨬ ¥¬ «¨è¥¥
|
||||
; %7
|
||||
ld de,Buffers.bat_params.PRM7
|
||||
ld bc,11 ;!HARDCODE ¤«¨ ¬¥âª¨
|
||||
ldir
|
||||
xor a
|
||||
ld (de),a
|
||||
; %6
|
||||
ld hl,volume_string_yes ; áâப
|
||||
ld de,Buffers.bat_params.PRM6; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
ret
|
||||
;
|
||||
; ¥á«¨ ¥ 㤠«®áì ¯à®ç¨â âì á¥à¨©ë© ®¬¥à ¤¨áª ¨«¨ ä®à¬ â ¥¨§¢¥áâ¥
|
||||
unknown_serial: ; á¥à¨©ë© ®¬¥à ¤¨áª - ¥¨§¢¥á⥠;!HARDCODE ¨¦¥
|
||||
LD HL,serial_string
|
||||
LD A,'?'
|
||||
LD B,serial_string.Size
|
||||
.loop: LD (HL),A
|
||||
INC HL
|
||||
DJNZ .loop
|
||||
LD HL,serial_string+4
|
||||
LD (HL),'-'
|
||||
;POP HL ; «¨è¥¥
|
||||
JP read_disk_info.get_label
|
||||
;
|
||||
|
||||
;---------------;
|
||||
SlashMaskFname: db '\' ;
|
||||
; ¬ áª ä ©«®¢
|
||||
mask_fname: db "*.*",0
|
||||
;---------------;
|
||||
|
||||
; ª®à¥ì ¤¨áª
|
||||
;root_path: db 'X:\',0
|
||||
|
||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||
serial_string: db "xxxx-xxxx"
|
||||
.Size equ $-serial_string
|
||||
db 0 ; § ªàë¢ èª
|
||||
|
||||
volume_string_no:
|
||||
db "has no label",0
|
||||
volume_string_yes:
|
||||
db "has label",0
|
||||
; has_not_full_info:
|
||||
; db ' (?)',0
|
||||
;
|
||||
cmd_dir_options:; [x] ¯ à ¬¥âà /F - ¢ë¢®¤ ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ ¤¨áª¥ (â®à¬®§¨â, ¯®í⮬㠯 à ¬¥â஬)
|
||||
DB 'f' : DW cmd_dir_freeSpace
|
||||
DB 'p' : DW cmd_dir_pause
|
||||
|
||||
75
SHELL/Commands/INFO.ASM
Normal file
75
SHELL/Commands/INFO.ASM
Normal file
@ -0,0 +1,75 @@
|
||||
;[ ] 24/06/2024
|
||||
cmd_info: LD DE,MAIN_MSG.INFO_1 ; 身丰花 "Drive Label Serial number Size"
|
||||
CALL ECHO_MESSAGE
|
||||
;
|
||||
LD HL,.Collect_Msg
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
;
|
||||
LD A,":"
|
||||
LD (Buffers.bat_params.PRM9+1),A
|
||||
XOR A
|
||||
LD (Buffers.bat_params.PRM9+2),A ; Drive "X:",0
|
||||
LD (read_disk_info.full),A
|
||||
;
|
||||
LD C,Dss.CurDisk
|
||||
RST ToDSS
|
||||
LD B,C
|
||||
LD C,-1
|
||||
;
|
||||
.loop: INC C
|
||||
PUSH BC
|
||||
LD A,C
|
||||
ADD "A"
|
||||
LD (Buffers.bat_params.PRM9),A
|
||||
LD A,C
|
||||
CALL read_disk_info
|
||||
JR C,.next_drv
|
||||
; %7 - Volume label
|
||||
; serial_string - Volume serial number string
|
||||
; full_space_high \
|
||||
; full_space_medium - Partition size
|
||||
; full_space_low /
|
||||
;
|
||||
LD HL,.Collect_Msg
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
;
|
||||
LD HL,serial_string
|
||||
LD DE,Buffers.bat_params.PRM4 ; Volume serial number string
|
||||
CALL ncopy_string
|
||||
; full capacity
|
||||
ld a,(full_space_high)
|
||||
ld hl,(full_space_medium) ; 摵. <20>抉鴾
|
||||
exx
|
||||
ld hl,(full_space_low) ; 洮. <20>抉鴾
|
||||
CALL PRN_DISK_SIZE
|
||||
; %5..6 - Full size
|
||||
;
|
||||
; 銈酮罱兒恥<E58592>言 PRM5
|
||||
LD HL,Buffers.bat_params.PRM5 - 1
|
||||
LD DE,Buffers.bat_params.PRM5
|
||||
.clear_spaces: INC HL
|
||||
LD A,(HL)
|
||||
CP " "
|
||||
JR Z,.clear_spaces
|
||||
AND A
|
||||
CALL NZ,copy_string
|
||||
;
|
||||
.print_info_2: LD DE,MAIN_MSG.INFO_2 ; 身丰花 "Drive Label Serial number Size"
|
||||
CALL ECHO_MESSAGE
|
||||
;
|
||||
.next_drv: POP BC
|
||||
DJNZ .loop
|
||||
RET
|
||||
;
|
||||
.Collect_Msg: DZ "Please wait, information is being collected...\r"
|
||||
|
||||
/*
|
||||
0 1 2 3 4 5 6 7
|
||||
01234567890123456789012345678901234567890123456789012345678901234567890123456789;
|
||||
Drive File System Label Serial number Size in bytes
|
||||
C: FAT32 NO NAME xxxx-xxxx 147,102,629,888.
|
||||
D: FAT16 SP_SYS xxxx-xxxx 147,102,629,888.
|
||||
;
|
||||
*/
|
||||
@ -22,6 +22,8 @@ MAIN_MSG:
|
||||
.HELP EQU .HELP_
|
||||
.CALCULATING EQU .CALC_
|
||||
.CRLF EQU .CRLF_
|
||||
.INFO_1 EQU .INFO_1_
|
||||
.INFO_2 EQU .INFO_2_
|
||||
;
|
||||
!txtCounter DEFL 0
|
||||
; ; ¥ ᤢ¨£ âì____
|
||||
@ -32,7 +34,7 @@ MAIN_MSG:
|
||||
; 1 2 3 4 5 6 7
|
||||
; 01234567890123456789012345678901234567890123456789012345678901234567890123456789;
|
||||
stN .DIR_1_ : db "Volume in drive %1 %6 %7\r\n"
|
||||
db "Volume Serial Number is %2\r\n"
|
||||
db "Volume Serial Number is %2, file sistem is %8\r\n"
|
||||
DZ "\r\nDirectory of %3\r\n\n"
|
||||
stN .VERS_ : DZ "Estex DSS version %1. Shell version %2.\r\n" ;R13
|
||||
stN .DATE_ : DZ "Current date: %1, %2\r\n" ; [x] ¢ë¢®¤ ¤ï ¥¤¥«¨ 26/01/2023
|
||||
@ -48,11 +50,13 @@ MAIN_MSG:
|
||||
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"
|
||||
db "CD | CHDIR DEL | ERASE SET VER | VERSION \r\n"
|
||||
db "MD | MKDIR TIME ECHO EXIT \r\n"
|
||||
DZ "RD | RMDIR DATE CLS REBOOT \r\n\n"
|
||||
db "CLS INFO REN = RENAME PATH HELP \r\n"
|
||||
db "CD = CHDIR DEL = ERASE SET VER = VERSION \r\n"
|
||||
db "MD = MKDIR TIME ECHO EXIT \r\n"
|
||||
DZ "RD = RMDIR DATE REBOOT DIR [path] [/p /f] \r\n\n"
|
||||
stN .CALC_ : DZ "Calculating free space...\r"
|
||||
stN .INFO_1_ : DZ "\r\nDrive File System Label Serial number Size in bytes\r\n"
|
||||
stN .INFO_2_ : DZ " %9 \r\t %8\r\t\t\t %7\r\t\t\t\t\t %4\r\t\t\t\t\t\t\t %5.\r\n"
|
||||
; ;R11
|
||||
db 0
|
||||
DZ "Unknown command"
|
||||
|
||||
@ -1,27 +1,26 @@
|
||||
;----------------------------------------------------------------------;
|
||||
; ‚뢮¤ HL ¢ hex-ä®à¬ â¥
|
||||
; de=¡ãä¥à
|
||||
; hl=ç¨á«®
|
||||
hex16: ld a,h
|
||||
call hex8
|
||||
ld a,l
|
||||
; ¢ë¢®¤ "a"
|
||||
hex8: push af
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
call .num
|
||||
pop af
|
||||
;
|
||||
.num: and %0000'1111
|
||||
add a,#90
|
||||
daa
|
||||
adc a,#40
|
||||
daa
|
||||
ld (de),a
|
||||
inc de
|
||||
ret
|
||||
; de=¡ãä¥à
|
||||
hex16_to_str: ld a,h
|
||||
call hex8_to_str
|
||||
ld a,l
|
||||
hex8_to_str: push af
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
call .num
|
||||
pop af
|
||||
;
|
||||
.num: and %0000'1111
|
||||
add a,#90
|
||||
daa
|
||||
adc a,#40
|
||||
daa
|
||||
ld (de),a
|
||||
inc de
|
||||
ret
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
221
SHELL/Procedures/shared.asm
Normal file
221
SHELL/Procedures/shared.asm
Normal file
@ -0,0 +1,221 @@
|
||||
;----------------------------------------------------------------------;
|
||||
; [x] ⥯¥àì ¥ «¥§¥â ¯àï¬ãî, ¤¥« ¥â ç¥à¥§ ®¢ë© ¯ à ¬¥âà äãªæ¨¨ DskInfo
|
||||
; ¨ ï «®£¨ª ¯®«ãç¥¨ï ¬¥âª¨ ⮬ - á ç « ¨é¥âáï ¢ ª®à¥¢®© ¤¨à¥ªâ®à¨¨,
|
||||
; ¥á«¨ â ¬ ¥â, â® ¡¥àñâáï ¨§ BPB
|
||||
; ‚室: ¢ëáâ ¢¨âì ¯¥à¥¬¥ãî read_disk_info.full:
|
||||
; 0 - ¥ áç¨â âì ᢮¡®¤®¥ ¬¥áâ®, !0 - áç¨â âì
|
||||
; ‚ë室:
|
||||
; %7 - Volume label
|
||||
; serial_string - Volume serial number string
|
||||
; full_space_high \
|
||||
; full_space_medium - Partition size
|
||||
; full_space_low /
|
||||
; %6 - "has no label" or "has label"
|
||||
;
|
||||
read_disk_info: OR #80
|
||||
LD HL,Buffers.work.buffer
|
||||
.full+1: LD B,0
|
||||
LD C,Dss.DskInfo
|
||||
RST ToDSS
|
||||
RET C
|
||||
; ” ©«®¢ ï á¨á⥬
|
||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||
; Œ¥âª ¤¨áª ¢ BPB
|
||||
; ”¨§¨ç¥áª¨© ®¬¥à ¤¨áª , ®¬¥à à §¤¥«
|
||||
;
|
||||
; HL':HL - ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
||||
; DE':DE - ᢮¡®¤ëå ª« áâ¥à®¢
|
||||
; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||
; max sector (LBA28) #0FFF'FFFF
|
||||
;
|
||||
EX AF,AF'
|
||||
LD A,D
|
||||
AND E
|
||||
EXX
|
||||
AND D
|
||||
AND E
|
||||
EXX
|
||||
INC A
|
||||
LD (.full),A
|
||||
;
|
||||
AND H
|
||||
|
||||
EX AF,AF'
|
||||
;
|
||||
; --> (HL':HL)*BC*A, (DE':DE)*BC*A = B':HL'HL, C':DE':DE
|
||||
EXX
|
||||
LD BC,0
|
||||
EXX
|
||||
SRL B
|
||||
RR C
|
||||
RRCA
|
||||
JR C,.loop2
|
||||
;
|
||||
.loop1: SLA L
|
||||
RL H
|
||||
EXX
|
||||
RL L
|
||||
RL H
|
||||
RL B
|
||||
EXX
|
||||
;
|
||||
SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
RL C
|
||||
EXX
|
||||
;
|
||||
RRCA
|
||||
JR NC,.loop1
|
||||
;
|
||||
.loop2: SLA L
|
||||
RL H
|
||||
EXX
|
||||
RL L
|
||||
RL H
|
||||
RL B
|
||||
EXX
|
||||
;
|
||||
SLA E
|
||||
RL D
|
||||
EXX
|
||||
RL E
|
||||
RL D
|
||||
RL C
|
||||
EXX
|
||||
;
|
||||
SRL B
|
||||
RR C
|
||||
JR NC,.loop2
|
||||
; <-- B':HL'HL, C':DE':DE
|
||||
EXX
|
||||
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
|
||||
; copy FS type
|
||||
LD HL,Buffers.work.buffer
|
||||
LD DE,Buffers.bat_params.PRM8; ªã¤
|
||||
LD B,0
|
||||
LD C,(HL) ; âãâ ¢ HL ¤«¨ ¯®«ï "” ©«®¢ ï á¨á⥬ "
|
||||
INC HL
|
||||
LDIR
|
||||
EX DE,HL
|
||||
LD (HL),0
|
||||
EX DE,HL
|
||||
;
|
||||
LD D,0
|
||||
; ; âãâ ¢ HL ¤«¨ ¯®«ï "” ©«®¢ ï á¨á⥬ "
|
||||
; LD E,(HL)
|
||||
; ADD HL,DE
|
||||
; INC HL
|
||||
; ¤«¨ ¯®«ï "‘¥à¨©ë© ®¬¥à ¤¨áª "
|
||||
LD A,(HL)
|
||||
LD E,A
|
||||
ADD HL,DE
|
||||
INC HL
|
||||
PUSH HL ; 㪠§ â¥«ì ¤«¨ã ¯®«ï "Œ¥âª ¤¨áª "
|
||||
CP 4 ;!HARDCODE ¤«¨ ¯®«ï á¥à¨©®£® ®¬¥à
|
||||
JR NZ,.unknown_serial
|
||||
DEC HL
|
||||
; áâ à襥 á«®¢® á¥à¨©¨ª
|
||||
LD D,(HL)
|
||||
DEC HL
|
||||
LD E,(HL)
|
||||
DEC HL
|
||||
PUSH HL
|
||||
EX DE,HL
|
||||
LD DE,serial_string ; xxxx-xxxx
|
||||
CALL hex16_to_str
|
||||
POP HL
|
||||
;
|
||||
LD A,"-"
|
||||
LD (DE),A
|
||||
INC DE
|
||||
; ¬« ¤è¥¥ á«®¢® á¥à¨©¨ª
|
||||
LD A,(HL)
|
||||
DEC HL
|
||||
LD L,(HL)
|
||||
LD H,A
|
||||
CALL hex16_to_str
|
||||
;
|
||||
.get_label: ; âãâ ¢ HL ¤«¨ ¯®«ï "Œ¥âª ¤¨áª "
|
||||
POP HL
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
AND A
|
||||
JR Z,.no_volume_label ; ¤
|
||||
PUSH HL
|
||||
LD B,A
|
||||
LD A,' '
|
||||
;
|
||||
.loop: CP (HL)
|
||||
JR NZ,.good_label
|
||||
INC HL
|
||||
DJNZ .loop
|
||||
POP HL ; ᨬ ¥¬ «¨è¥¥
|
||||
; ¥â ¬¥âª¨
|
||||
.no_volume_label:; %6
|
||||
LD HL,volume_string_no ; áâப
|
||||
LD DE,Buffers.bat_params.PRM6; ªã¤
|
||||
CALL ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
XOR A
|
||||
LD (Buffers.bat_params.PRM7),A
|
||||
RET
|
||||
;
|
||||
.good_label: POP HL
|
||||
PUSH HL ; ⮫ª ¥¬ «¨è¥¥
|
||||
; ¥áâì ¬¥âª
|
||||
.volume_label: POP DE ; ᨬ ¥¬ «¨è¥¥
|
||||
; %7
|
||||
LD DE,Buffers.bat_params.PRM7
|
||||
LD BC,11 ;!HARDCODE ¤«¨ ¬¥âª¨
|
||||
LDIR
|
||||
XOR A
|
||||
LD (DE),A
|
||||
; %6
|
||||
LD HL,volume_string_yes ; áâப
|
||||
LD DE,Buffers.bat_params.PRM6; ªã¤
|
||||
XOR A
|
||||
JP ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
;
|
||||
; ¥á«¨ ¥ 㤠«®áì ¯à®ç¨â âì á¥à¨©ë© ®¬¥à ¤¨áª ¨«¨ ä®à¬ â ¥¨§¢¥áâ¥
|
||||
.unknown_serial: ; á¥à¨©ë© ®¬¥à ¤¨áª - ¥¨§¢¥á⥠;!HARDCODE ¨¦¥
|
||||
LD HL,serial_string
|
||||
LD A,'?'
|
||||
LD B,serial_string.Size
|
||||
.loop3: LD (HL),A
|
||||
INC HL
|
||||
DJNZ .loop3
|
||||
LD HL,serial_string+4
|
||||
LD (HL),'-'
|
||||
JR read_disk_info.get_label
|
||||
;
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
free_space_low: WORD 0
|
||||
free_space_medium: WORD 0
|
||||
free_space_high: BYTE 0
|
||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||
serial_string: db "xxxx-xxxx"
|
||||
.Size equ $-serial_string
|
||||
db 0 ; § ªàë¢ èª
|
||||
;
|
||||
volume_string_no: db "has no label",0
|
||||
;
|
||||
volume_string_yes: db "has label",0
|
||||
;
|
||||
; has_not_full_info: db ' (?)',0
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
;----------------------------------------------------------------------;
|
||||
@ -381,7 +381,7 @@ ncopy_string:
|
||||
ldi
|
||||
ret po
|
||||
or a
|
||||
jr nz,$-5 ;!FIXIT $
|
||||
jr nz,.start
|
||||
ret
|
||||
|
||||
; ‘ª®¯¨à. áâபã (á ã«¥¬)
|
||||
@ -532,6 +532,7 @@ T8C24: db "OFF",0
|
||||
include 'messages/main_txt.asm' ; á®®¡é¥¨ï
|
||||
include 'procedures/parsers.asm' ; äãªæ¨¨ ¯à®ç¥áë¢ ¨ï ¨ ¢ë¡®à
|
||||
include 'procedures/math.asm' ; äãªæ¨¨ ¬ ⥬ â¨ç¥áª¨¥
|
||||
include 'procedures/shared.asm' ; äãªæ¨¨ à §ë¥
|
||||
;
|
||||
include 'Commands/exit.asm' ; ¢ë室 ¢ த¨â. ¯à®æ¥áá
|
||||
include 'Commands/break.asm' ; ¢ë室 ¨§ ¯ àá¥à bat
|
||||
@ -541,6 +542,7 @@ T8C24: db "OFF",0
|
||||
include 'Commands/cls.asm' ; ®ç¨á⪠íªà
|
||||
include 'Commands/date.asm' ; ¢ë¢®¤ ¨«¨ ãáâ ®¢ª ¤ âë/¢à¥¬¥¨
|
||||
include 'Commands/dir.asm' ; ¢ë¢®¤ ᯨ᪠¤¨à¥ªâ®à¨¨
|
||||
include 'Commands/info.asm' ; ¢ë¢®¤ ¨ä®à¬ 樨 ® ¤¨áª å
|
||||
include 'Commands/chdir.asm' ; ᬥ ⥪. ª â «®£
|
||||
include 'Commands/mkdir.asm' ; á®§¤ ¨¥ ª â «®£
|
||||
include 'Commands/rmdir.asm' ; 㤠«¥¨¥ ª â «®£
|
||||
|
||||
@ -1 +1 @@
|
||||
408
|
||||
425
|
||||
Loading…
Reference in New Issue
Block a user