CORE: начал делать FSinfo free clusters count

SHELL: команда DIR правильно определяет размеры
This commit is contained in:
Anatoliy Belyanskiy 2024-04-29 06:14:56 +10:00
parent ebeb859eb1
commit a904026a45
11 changed files with 880 additions and 722 deletions

View File

@ -130,28 +130,48 @@ DISKINF: LD C,B
POP BC POP BC
RET C RET C
; ;
.CheckFreeSpace: .CheckFreeSpace:; ¥á«¨ GetFreeSpace ­¥ ¢ë§ë¢ ¥âáï
XOR A XOR A
OR B OR B
LD A,#FF
LD B,A
LD C,A
EXX
LD B,A
LD C,A
EXX
CALL NZ,.GetFreeSpace CALL NZ,.GetFreeSpace
; ;
;.FRESP2: ;.FRESP2:
LD D,B ; A = 0 if B != 0 before .GetFreeSpace
LD E,C ;
LD H,B
LD L,C
; LD DE,2
; SBC HL,DE
EX DE,HL
EXX
LD H,B
LD L,C
; LD DE,2
; SBC HL,DE
EX DE,HL
EXX
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterLow) LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterLow)
DEC HL DEC HL
; fat 32 ; fat 32
EXX EXX
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterHigh) LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterHigh)
JR NC,.skip_dec_hl
DEC HL DEC HL
EXX .skip_dec_hl: EXX
LD BC,(CORE_BUFFERS.FatBuffer.BytesPerSector) LD BC,(CORE_BUFFERS.FatBuffer.BytesPerSector)
LD A,(CORE_BUFFERS.FatBuffer.SectorsPerCluster) LD A,(CORE_BUFFERS.FatBuffer.SectorsPerCluster)
AND A AND A
RET RET
; ;
.GetFreeSpace: XOR A .GetFreeSpace: XOR A
LD HL,2 ; [ ] fat32 ? ­®¬¥à ª« áâ¥à  ®â ª®â®à®£® áç¨â âì LD HL,2 ; fat32 ­®¬¥à ª« áâ¥à  ®â ª®â®à®£® áç¨â âì
; fat32 ; fat32
EXX EXX
LD H,A LD H,A
@ -181,6 +201,7 @@ DISKINF: LD C,B
OR E OR E
OR D OR D
JR NZ,.skip JR NZ,.skip
;
INC BC INC BC
LD A,B LD A,B
OR C OR C
@ -188,6 +209,7 @@ DISKINF: LD C,B
EXX EXX
INC BC INC BC
EXX EXX
;
.skip: INC HL .skip: INC HL
LD A,L LD A,L
OR H OR H
@ -195,7 +217,7 @@ DISKINF: LD C,B
EXX EXX
INC HL INC HL
EXX EXX
JR .loop_free_space JP .loop_free_space
; ;
; [ ] 22/11/23 ¯®¤äã­ªæ¨ï á ¤®¯.¨­ä®© ; [ ] 22/11/23 ¯®¤äã­ªæ¨ï á ¤®¯.¨­ä®©
.mCOPY_LOOP: LD B,0 .mCOPY_LOOP: LD B,0

View File

@ -12,16 +12,22 @@
; á¡à á뢠¥â §­ ç¥­¨¥ ᢮¡®¤­ëå ª« áâ¥à®¢ ­  "­¥®¯à¥¤¥«¥­®" ; á¡à á뢠¥â §­ ç¥­¨¥ ᢮¡®¤­ëå ª« áâ¥à®¢ ­  "­¥®¯à¥¤¥«¥­®"
; ¬¥­ï¥â §­ ç¥­¨¥ ¯¥à¢®£® ᢮¡®¤­®£® ª« áâ¥à  ; ¬¥­ï¥â §­ ç¥­¨¥ ¯¥à¢®£® ᢮¡®¤­®£® ª« áâ¥à 
SET_FSInfo: LD A,(CORE_BUFFERS.FatBuffer.RESET_FSINFO) SET_FSInfo: LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE)
CP FAT_TYPE.x32
RET NZ
;
LD A,(CORE_BUFFERS.FatBuffer.UPD_FSINFO)
OR A OR A
RET Z RET Z
; ;
;!TODO ä®à¬¨à®¢ âì á ¬®¬ã ¢ ¡ãä¥à
CALL READ_FSinfo CALL READ_FSinfo
; ;
;!TODO FREE_CLUSTERS_COUNT ;!TODO FREE_CLUSTERS_COUNT
LD HL,#FFFF LD HL,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L)
LD (CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER),HL LD (CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FREE_CLUSTERS_COUNT),HL
LD (CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER+2),HL LD HL,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H)
LD (CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FREE_CLUSTERS_COUNT+2),HL
; FIRST_FREE_CLUSTER ; FIRST_FREE_CLUSTER
LD HL,(G_CLUST.low) LD HL,(G_CLUST.low)
LD (CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER),HL LD (CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER),HL
@ -29,7 +35,7 @@ SET_FSInfo: LD A,(CORE_BUFFERS.FatBuffer.RESET_FSINFO)
LD (CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER+2),HL LD (CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER+2),HL
; ;
XOR A XOR A
LD (CORE_BUFFERS.FatBuffer.RESET_FSINFO),A LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A
JR WRITE_FSinfo JR WRITE_FSinfo
; ; ; ;
; <20>à®ç¨â âì BPB ¢ SECTOR_BUFFER ; <20>à®ç¨â âì BPB ¢ SECTOR_BUFFER
@ -831,7 +837,7 @@ RD_BPB: ; LD C,SLOT3
PUSH HL ; Total Sectors low PUSH HL ; Total Sectors low
SBC HL,DE SBC HL,DE
; ;
.HDDBIG: CALL ClusterToSector .HDDBIG: CALL SectorToCluster
; LD A,(CORE_BUFFERS.FatBuffer.SectorsPerCluster) ; LD A,(CORE_BUFFERS.FatBuffer.SectorsPerCluster)
; SCF ; SCF
; .loop7: RRA ; .loop7: RRA
@ -938,8 +944,8 @@ RD_BPB: ; LD C,SLOT3
LD (CORE_BUFFERS.FatBuffer.RootDirStartCluster_L),HL LD (CORE_BUFFERS.FatBuffer.RootDirStartCluster_L),HL
LD BC,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RootDirStartCluster+2) LD BC,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.RootDirStartCluster+2)
LD (CORE_BUFFERS.FatBuffer.RootDirStartCluster_H),BC LD (CORE_BUFFERS.FatBuffer.RootDirStartCluster_H),BC
;
CALL ClusterToSector CALL CLUSTER_TO_SECTOR
LD (CORE_BUFFERS.FatBuffer.RootDirFirstSector_L),HL LD (CORE_BUFFERS.FatBuffer.RootDirFirstSector_L),HL
LD (CORE_BUFFERS.FatBuffer.RootDirFirstSector_H),BC LD (CORE_BUFFERS.FatBuffer.RootDirFirstSector_H),BC
; ;
@ -1007,7 +1013,7 @@ RD_BPB: ; LD C,SLOT3
DJNZ .fsinfo_loop DJNZ .fsinfo_loop
; ;
.error_sig: XOR #FF .error_sig: XOR #FF
LD (CORE_BUFFERS.FatBuffer.RESET_FSINFO),A LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A
; ;
XOR A XOR A
LD H,A LD H,A
@ -1030,27 +1036,32 @@ RD_BPB: ; LD C,SLOT3
LD DE,#6141 LD DE,#6141
SBC HL,DE SBC HL,DE
JR NZ,.error JR NZ,.error
;!TODO FREE_CLUSTERS_COUNT
LD BC,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FREE_CLUSTERS_COUNT)
LD DE,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FREE_CLUSTERS_COUNT+2)
; CF = 0
CALL .check_cluster
JR NC,.skip_FFFF
;
LD B,#FF
LD C,B
LD D,B
LD E,B
;
.skip_FFFF: LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L),BC
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H),DE
;
; FIRST_FREE_CLUSTER ; FIRST_FREE_CLUSTER
LD DE,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER+2)
LD BC,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER) LD BC,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER)
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterLow) LD DE,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FIRST_FREE_CLUSTER+2)
; CF = 0 ; CF = 0
;!TODO MaxCluster - ¬ ªá¨¬ «ì­® ¤®¯ãáâ¨¬ë© ¨«¨ ­  1 ¡®«ìè¥ ¬ ªá¨¬ «ì­® ¤®¯ãá⨬®£®? CALL .check_cluster
SBC HL,BC
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterHigh)
SBC HL,DE
JR C,.error JR C,.error
; ;
LD (G_CLUST.high),DE LD (G_CLUST.high),DE
LD (G_CLUST.low),BC LD (G_CLUST.low),BC
;!TODO FREE_CLUSTERS_COUNT
;LD HL,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FREE_CLUSTERS_COUNT)
;LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L),HL
;LD HL,(CORE_BUFFERS.SECTOR_BUFFER + _sFSinfo.FREE_CLUSTERS_COUNT+2)
;LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H),HL
;
XOR A XOR A
.error: LD (CORE_BUFFERS.FatBuffer.RESET_FSINFO),A .error: LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A
RET Z RET Z
;!TODO FREE_CLUSTERS_COUNT ;!TODO FREE_CLUSTERS_COUNT
;LD HL,#FFFF ;LD HL,#FFFF
@ -1064,12 +1075,19 @@ RD_BPB: ; LD C,SLOT3
LD L,H LD L,H
LD (G_CLUST.high),HL LD (G_CLUST.high),HL
RET RET
;
;!TODO MaxCluster - ¬ ªá¨¬ «ì­® ¤®¯ãáâ¨¬ë© ¨«¨ ­  1 ¡®«ìè¥ ¬ ªá¨¬ «ì­® ¤®¯ãá⨬®£®?
.check_cluster: LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterLow)
SBC HL,BC
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterHigh)
SBC HL,DE
RET
ENDIF ENDIF
;;;;;;;; ;;;;;;;;
; --> BC:HL - Cluster ; --> BC:HL - Sector
; <-- BC:HL - Sector ; <-- BC:HL - Cluster
ClusterToSector: SectorToCluster:
LD A,B LD A,B
AND #0F AND #0F
LD B,A LD B,A

View File

@ -16,7 +16,7 @@
; “¤ «ï¥â § ¯¨áì ¢ ª â «®£¥ ¨ ®á¢®¡®¦¤ ¥â § ­ïâãî æ¥¯®çªã ª« áâ¥à®¢ ; “¤ «ï¥â § ¯¨áì ¢ ª â «®£¥ ¨ ®á¢®¡®¦¤ ¥â § ­ïâãî æ¥¯®çªã ª« áâ¥à®¢
; ‚室: IX - 㪠§ â¥«ì ­  㤠«ï¥¬ãî § ¯¨áì ¢ DIRPAGE ; ‚室: IX - 㪠§ â¥«ì ­  㤠«ï¥¬ãî § ¯¨áì ¢ DIRPAGE
;!TODO record index. ¢®§¬®¦­®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ­¨æë ;!TODO record index. ¢®§¬®¦­®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ­¨æë
DELETE_REC_FAT: SET_PAGE_X DIRPAGE: DELETE_REC_FAT: SET_PAGE_X DIRPAGE
EX AF,AF' EX AF,AF'
CALL DELETE_LFN_RECORDS ; [x] 㤠«¥­¨¥ § ¯¨á¨ LFN CALL DELETE_LFN_RECORDS ; [x] 㤠«¥­¨¥ § ¯¨á¨ LFN
LD (IX + FAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§­ ª 㤠«¥­¨ï ä ©«  LD (IX + FAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§­ ª 㤠«¥­¨ï ä ©« 
@ -68,6 +68,7 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE:
; ‚室: HL':HL - cluster ; ‚室: HL':HL - cluster
; ¯®àâ¨â DE, BC' ¨ A ; ¯®àâ¨â DE, BC' ¨ A
; [x] à ­ìè¥ ¡ë« è ­á 㯥à¥âìáï ¢ "DISK FULL" ¥á«¨ G_CLUST 㪠§ë¢ « ­  ª« áâ¥à ¤ «ìè¥, 祬 ¤à㣮© ᢮¡®¤­ë© ; [x] à ­ìè¥ ¡ë« è ­á 㯥à¥âìáï ¢ "DISK FULL" ¥á«¨ G_CLUST 㪠§ë¢ « ­  ª« áâ¥à ¤ «ìè¥, 祬 ¤à㣮© ᢮¡®¤­ë©
; [ ] free clusters for FSInfo
SET_NEW_FREE_CLUSTER: SET_NEW_FREE_CLUSTER:
XOR A XOR A
;LD B,D ;LD B,D
@ -138,16 +139,62 @@ G_CLUST: ;
LD (G_CLUST.high),HL LD (G_CLUST.high),HL
EXX EXX
INC A INC A
LD (CORE_BUFFERS.FatBuffer.RESET_FSINFO),A LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A
; [ ] free clusters for FSInfo
; XOR A ; 㬥­ìè¨âì
; CALL SET_NEW_FREE_CLUSTERS
RET RET
; ‚室: A - 㬥­ìè¨âì (0) ¨«¨ 㢥«¨ç¨âì (!0) ç¨á«® ᢮¡®¤­ëå ª« áâ¥à®¢
SET_NEW_FREE_CLUSTERS:
PUSH HL
EXX
PUSH HL
LD HL,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H)
EXX
LD HL,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L)
;
OR A
JR Z,.dec_clusters
; inc clusters
INC HL
LD A,H
OR L
JR NZ,.set_new
EXX
INC HL
EXX
;
.set_new: LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L),HL
EXX
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H),HL
POP HL
EXX
POP HL
LD A,1
LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A
RET
;
.dec_clusters: LD A,H
OR L
DEC HL
JR NZ,.set_new
EXX
DEC HL
EXX
JP .set_new
; ;
; ;
; [x] fat32 ;!TEST ; [x] fat32 ;!TEST
; <20>ਪ९¨âì ª ¯®á«¥¤­¥¬ã ª« áâ¥àã æ¥¯®çª¨ ­®¢ë© ¯ãá⮩ ª« áâ¥à ; <20>ਪ९¨âì ª ¯®á«¥¤­¥¬ã ª« áâ¥àã æ¥¯®çª¨ ­®¢ë© ¯ãá⮩ ª« áâ¥à
; ‚室: HL':HL - ­®¬¥à ª« áâ¥à  ª ª®â®à®¬ã ¯à¨ªà¥¯¨âì ¯ãá⮩ ; ‚室: HL':HL - ­®¬¥à ª« áâ¥à  ª ª®â®à®¬ã ¯à¨ªà¥¯¨âì ¯ãá⮩
; ‚ë室: HL':HL - ­®¬¥à ª« áâ¥à  ª ª®â®à®¬ã ¯à¨ªà¥¯¨«áï ¯ãá⮩ ; ‚ë室: HL':HL - ­®¬¥à ª« áâ¥à  ª ª®â®à®¬ã ¯à¨ªà¥¯¨«áï ¯ãá⮩
; DE':DE - ­®¬¥à ¯ãá⮣® ª« áâ¥à  ; DE':DE - ­®¬¥à ¯ãá⮣® ª« áâ¥à 
INC_FAT: PUSH HL ; ⥪ã騩 ª« áâ¥à INC_FAT: ; [ ] free clusters for FSInfo
;
;
PUSH HL ; ⥪ã騩 ª« áâ¥à
EXX EXX
PUSH HL ; ⥪ã騩 ª« áâ¥à PUSH HL ; ⥪ã騩 ª« áâ¥à
EXX EXX
@ -210,7 +257,7 @@ CHECK_CLUSTER_IS_SMALLER:
LD A,DSS_Error.sys.DISK_FULL LD A,DSS_Error.sys.DISK_FULL
RET C RET C
RET NZ RET NZ
; ¯à®¢¥à塞 ¬« ¤è¥ á«®¢® ­®¬¥à  ª« áâ¥à  ; ¯à®¢¥à塞 ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
.low: EX DE,HL .low: EX DE,HL
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterLow) LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterLow)
SBC HL,DE SBC HL,DE
@ -585,9 +632,7 @@ WRITE_FAT_TABLE:
OUT (SLOT3),A OUT (SLOT3),A
RET RET
; ‡ ¯¨áì ª¥è  FAT-  ­  ¤¨áª ; ‡ ¯¨áì ª¥è  FAT-  ­  ¤¨áª
.Start: LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE) .Start: CALL SET_FSInfo
CP FAT_TYPE.x32
CALL Z,SET_FSInfo
LD HL,(CORE_BUFFERS.FatBuffer.CacheBlock) LD HL,(CORE_BUFFERS.FatBuffer.CacheBlock)
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT ;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
CALL GET_SECTOR_OF_FAT CALL GET_SECTOR_OF_FAT

View File

@ -172,10 +172,15 @@ FDDRIVE:
.STAT: XOR A .STAT: XOR A
RET RET
;!FIXIT ¯à®¢¥àïâì ƒ93 ª®£¤  íâ® áâ ­¥â ¢®§¬®¦­ë¬
.CHEK: LD A,#FF .CHEK: ;!FIXIT ¯à®¢¥àïâì ƒ93 ª®£¤  íâ® áâ ­¥â ¢®§¬®¦­ë¬
AND A IF NON_REMOVABLE_FDD
RET XOR A
ELSE
LD A,#FF
OR A
ENDIF
RET
;DE - ADDRESS ;DE - ADDRESS
.GBPB: LD IX,0 .GBPB: LD IX,0

View File

@ -103,7 +103,7 @@
.FSINFO_Sector WORD #01 .FSINFO_Sector WORD #01
.BPB_SERIAL_NUMBER DWORD #00000000 .BPB_SERIAL_NUMBER DWORD #00000000
.BPB_LABEL BLOCK 11,' ' ; 11 ¤«ï FAT, 31 ¤«ï CDFS .BPB_LABEL BLOCK 11,' ' ; 11 ¤«ï FAT, 31 ¤«ï CDFS
.RESET_FSINFO BYTE 0 .UPD_FSINFO BYTE 0
; IF USE_FSINFO_FAT32 ; IF USE_FSINFO_FAT32
;.FREE_CLUSTERS_COUNT_L WORD #FFFF ;.FREE_CLUSTERS_COUNT_L WORD #FFFF
;.FREE_CLUSTERS_COUNT_H WORD #FFFF ;.FREE_CLUSTERS_COUNT_H WORD #FFFF

View File

@ -1 +1 @@
982 978

View File

@ -102,6 +102,7 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
DEFINE EnoughtOnly_LF 0 DEFINE EnoughtOnly_LF 0
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55 DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
DEFINE CHECK_DRIVE_CHANGE 1 ; 1 - â®à¬®§­¥¥, ­® ¡¥§®¯ á­¥¥ DEFINE CHECK_DRIVE_CHANGE 1 ; 1 - â®à¬®§­¥¥, ­® ¡¥§®¯ á­¥¥
DEFINE NON_REMOVABLE_FDD 0
; ;
;-------------------[MEMORY]-------------------------; ;-------------------[MEMORY]-------------------------;
DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82 DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82

File diff suppressed because it is too large Load Diff

View File

@ -29,35 +29,40 @@ MAIN_MSG:
stN .CRLF_ : db CR,LF,0; | stN .CRLF_ : db CR,LF,0; |
;________________/ ;________________/
; ;
stN .DIR_1_ : db "Volume in drive %1 %4 %5",CR,LF ; 1 2 3 4 5 6 7
db "Volume Serial Number is %2",CR,LF ; 01234567890123456789012345678901234567890123456789012345678901234567890123456789;
db CR,LF,"Directory of %3",CR,LF,LF,0 stN .DIR_1_ : db "Volume in drive %1 %4 %5\r\n"
stN .VERS_ : db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13 db "Volume Serial Number is %2\r\n"
stN .DATE_ : db "Current date: %1, %2",CR,LF,0 ; [x] ¢ë¢®¤ ¤­ï ­¥¤¥«¨ 26/01/2023 DZ "\r\nDirectory of %3\r\n\n"
stN .TIME_ : db "Current time: %1",CR,LF,0 stN .VERS_ : DZ "Estex DSS version %1. Shell version %2.\r\n" ;R13
stN .PAUSE_ : db "Press any key to continue . . .",CR,0 stN .DATE_ : DZ "Current date: %1, %2\r\n" ; [x] ¢ë¢®¤ ¤­ï ­¥¤¥«¨ 26/01/2023
stN .DIR_ESC_ : db 'Command "DIR" aborted by user ',CR,LF,CR,LF,0 stN .TIME_ : DZ "Current time: %1\r\n"
stN .INV_ : db "Invalid parametr",CR,LF,0 stN .PAUSE_ : DZ "Press any key to continue . . .\r"
stN .ECHO_ : db "Echo is %1",CR,LF,0 stN .DIR_ESC_ : DZ "Command 'DIR' aborted by user \r\n\n"
stN .ON_ : db "on",0 stN .INV_ : DZ "Invalid parametr\r\n"
stN .OFF_ : db "off",0 stN .ECHO_ : DZ "Echo is %1\r\n"
stN .DIR_2_ : db " %1 File(s) %2 bytes",CR,LF stN .ON_ : DZ "on"
db " %3 Dir(s) ",0 stN .OFF_ : DZ "off"
stN .DIR_4_ : db "%4 bytes free",CR,LF,0 ; stN .DIR_2_ : db " %3 File(s) %1 byte(s)\r\n"
; db " %3 Dir(s) %4 bytes free",CR,LF,LF,0 ; DZ " %4 Dir(s) "
; : db " %3 Dir(s)",CR,LF,LF,0 ; stN .DIR_4_ : DZ "%1 bytes free\r\n"
stN .DIR_3_ : db "%1 %2 %3 %4 - %5",CR,LF,0 ;FILENAME EXT SIZE DATE TIME stN .DIR_2_ : db " %3 File(s)\r %1 byte(s)\r\n"
stN .HELP_ : db "COMMANDS:",CR,LF,CR,LF DZ " %4 Dir(s)"
db "DIR REN | RENAME PATH HELP ",CR,LF stN .DIR_4_ : DZ "\r %1 bytes free\r\n"
db "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF ; stN .DIR_3_ : DZ "%1 %2 %3 %4 - %5\r\n" ;FILENAME EXT SIZE DATE TIME
db "MD | MKDIR TIME ECHO EXIT ",CR,LF stN .DIR_3_ : DZ "%4 %5 %3 %1 %2 \r\n" ;DATE TIME SIZE FILENAME EXT
db "RD | RMDIR DATE CLS REBOOT ",CR,LF,LF,0 stN .HELP_ : db "COMMANDS:\r\n"
stN .CALC_ : db "Calculating free space...",CR,0 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"
stN .CALC_ : DZ "Calculating free space...\r"
; ;R11 ; ;R11
db 0 db 0
DZ "Unknown command" DZ "Unknown command"
; ; ; ;
.TABLE.Size EQU $-.TABLE .TABLE.Size EQU $-.TABLE
; ;
!txtCounter=0 !txtCounter=0
; ;
;

View File

@ -42,7 +42,7 @@
include 'shared_includes/constants/bios_equ.inc' include 'shared_includes/constants/bios_equ.inc'
include 'shared_includes/constants/dss_equ.inc' include 'shared_includes/constants/dss_equ.inc'
include 'SHELL/version.inc' include 'SHELL/version.inc'
include 'shared_includes/structures/FileSystem.inc'
; ;
; Program EQU section ; Program EQU section
;---------------------------------------------------------------------[] ;---------------------------------------------------------------------[]
@ -379,7 +379,7 @@ COMPARE:
; (hl) -> (de) ; (hl) -> (de)
ncopy_string: ncopy_string:
ld bc,15 ; ¬ ªá. ¤«¨­  áâப¨ ld bc,15 ; ¬ ªá. ¤«¨­  áâப¨
ld a,(hl) .start: ld a,(hl)
ldi ldi
ret po ret po
or a or a
@ -457,7 +457,7 @@ STR2DEC:
;!FIXIT ¥áâì ¤ã¡« hex2dec_ascii_16bit ;!FIXIT ¥áâì ¤ã¡« hex2dec_ascii_16bit
PDIGIT: ld de,10000 PDIGIT: ld de,10000
ld a,#C8 ; ret z ld a,#C8 ; ret z
ld (.patch),a ld (.RET_Z),a
call .DIG call .DIG
ld de,1000 ld de,1000
call .DIG call .DIG
@ -467,7 +467,7 @@ PDIGIT: ld de,10000
call .DIG call .DIG
ld a,l ld a,l
add a,"0" add a,"0"
;!TEST ;!TEST ¯®ª  ­¥ âॡã¥âáï ¯¥à¥¤ ¢ âì á«¥¤ãî騩 IX ¤ «ìè¥
;ld (ix+0),a ;ld (ix+0),a
;inc ix ;inc ix
;ld (ix+0),0 ;ld (ix+0),0
@ -476,22 +476,19 @@ PDIGIT: ld de,10000
; ;
ret ret
.DIG: xor a .DIG: xor a
inc a .loop: inc a
sbc hl,de sbc hl,de
jr nc,$-3 jr nc,.loop
add hl,de add hl,de
dec a dec a
.patch: ret z .RET_Z: ret z
add a,"0" add a,"0"
ld (ix+0),a ld (ix+0),a
inc ix inc ix
xor a ; nop xor a ; nop
ld (.patch),a ld (.RET_Z),a
ret ret
Restore_Screen: Restore_Screen:
PUSH AF PUSH AF
LD C,Dss.GetVMod LD C,Dss.GetVMod

View File

@ -1 +1 @@
323 342