mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
CORE: начал делать FSinfo free clusters count
SHELL: команда DIR правильно определяет размеры
This commit is contained in:
parent
ebeb859eb1
commit
a904026a45
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
982
|
978
|
||||||
@ -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
@ -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
|
||||||
;
|
;
|
||||||
|
;
|
||||||
@ -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,31 +467,28 @@ 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
|
||||||
LD (IX+0),A
|
LD (IX+0),A
|
||||||
LD (IX+1),0
|
LD (IX+1),0
|
||||||
;
|
;
|
||||||
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
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
323
|
342
|
||||||
Loading…
Reference in New Issue
Block a user