mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-17 18:30:35 +03:00
FSInfo: free clusters count DONE
This commit is contained in:
parent
a904026a45
commit
7c01581aae
@ -52,6 +52,9 @@ MKDIR:
|
||||
PUSH HL ; áâ ŕ訊 ŽŹĽŕ ἪâŽŕ
|
||||
EXX
|
||||
;
|
||||
XOR A ; 㬥ìè¨âì
|
||||
CALL SET_NEW_FREE_CLUSTERS ; [ ] free clusters for FSInfo
|
||||
;
|
||||
CALL WRITE_TO_FAT ; § ݍá âě ˘ ŞĽč FAT- ŽŹĽŕ ŞŤ áâĽŕ
|
||||
CALL WRITE_FAT_TABLE ; ŻŽ¤ŞŤ. Ą Şă ŞĽč FAT ¨ § ݍá âě ĽŁŽ ¤¨áŞ
|
||||
LD HL,MASKARE
|
||||
|
||||
@ -133,28 +133,23 @@ DISKINF: LD C,B
|
||||
.CheckFreeSpace:; ¥á«¨ GetFreeSpace ¥ ¢ë§ë¢ ¥âáï
|
||||
XOR A
|
||||
OR B
|
||||
LD A,#FF
|
||||
LD B,A
|
||||
LD C,A
|
||||
LD BC,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L)
|
||||
EXX
|
||||
LD B,A
|
||||
LD C,A
|
||||
LD BC,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H)
|
||||
EXX
|
||||
CALL NZ,.GetFreeSpace
|
||||
CALL NZ,GetFreeSpace
|
||||
;
|
||||
;.FRESP2:
|
||||
; A = 0 if B != 0 before .GetFreeSpace
|
||||
;
|
||||
LD H,B
|
||||
LD L,C
|
||||
; LD DE,2
|
||||
; SBC HL,DE
|
||||
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L),HL
|
||||
EX DE,HL
|
||||
EXX
|
||||
LD H,B
|
||||
LD L,C
|
||||
; LD DE,2
|
||||
; SBC HL,DE
|
||||
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H),HL
|
||||
EX DE,HL
|
||||
EXX
|
||||
LD HL,(CORE_BUFFERS.FatBuffer.MaxClusterLow)
|
||||
@ -170,8 +165,21 @@ DISKINF: LD C,B
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
.GetFreeSpace: XOR A
|
||||
; [ ] 22/11/23 ¯®¤äãªæ¨ï á ¤®¯.¨ä®©
|
||||
.mCOPY_LOOP: LD B,0
|
||||
EX DE,HL
|
||||
LD (HL),C
|
||||
EX DE,HL
|
||||
INC DE
|
||||
LDIR
|
||||
RET
|
||||
;
|
||||
|
||||
;
|
||||
GetFreeSpace: LD A,1
|
||||
LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A
|
||||
LD HL,2 ; fat32 ®¬¥à ª« áâ¥à ®â ª®â®à®£® áç¨â âì
|
||||
XOR A
|
||||
; fat32
|
||||
EXX
|
||||
LD H,A
|
||||
@ -219,13 +227,6 @@ DISKINF: LD C,B
|
||||
EXX
|
||||
JP .loop_free_space
|
||||
;
|
||||
; [ ] 22/11/23 ¯®¤äãªæ¨ï á ¤®¯.¨ä®©
|
||||
.mCOPY_LOOP: LD B,0
|
||||
EX DE,HL
|
||||
LD (HL),C
|
||||
EX DE,HL
|
||||
INC DE
|
||||
LDIR
|
||||
RET
|
||||
;
|
||||
|
||||
FAT_STRING: DB 'FAT12'
|
||||
;
|
||||
@ -247,8 +247,13 @@ CLEAR_BUFFER_AND_INIT_PROC:
|
||||
LD BC,CLEAR_ZONE.size-1
|
||||
LD (HL),A
|
||||
LDIR
|
||||
; A = 0
|
||||
DEC A
|
||||
LD HL,':'*256 + 'X'
|
||||
LD (CurrentPath),HL
|
||||
LD A,'\' ;
|
||||
LD (CurrentDirectory),A
|
||||
LD (WorkDirectory),A
|
||||
;
|
||||
LD A,#FF
|
||||
LD (CORE_BUFFERS.FatBuffer.DRIVE),A
|
||||
;
|
||||
;R07 ;R11
|
||||
@ -385,18 +390,21 @@ MASKARE: BLOCK 8,0 ;
|
||||
|
||||
;!TODO ª ¡ãä¥à ¬!
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/*
|
||||
; 259
|
||||
CurrentPath: DB 'X'
|
||||
DB ':'
|
||||
CurrentDirectory: DB '\'
|
||||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
||||
BLOCK CurrentDirectory.DEPTH,0 ; ¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®æ¥
|
||||
;
|
||||
; !TODO ¤®¯¨«¨âì WorkPath?
|
||||
;WorkPath: DB 'X'
|
||||
; DB ':'
|
||||
; 257
|
||||
WorkDirectory: DB '\'
|
||||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
||||
BLOCK WorkDirectory.DEPTH,0 ; ¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®æ¥
|
||||
|
||||
; 516
|
||||
*/
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
;
|
||||
@ -418,8 +426,17 @@ BUFFER EQU BUFFERSplace.Buffer
|
||||
SECTOR_BUFFER EQU BUFFER ;!TODO ®â¤¥«¨âì SECTOR_BUFFER ®â BUFFER
|
||||
MemoryTable EQU BUFFERSplace.MemoryTable
|
||||
ENDMODULE
|
||||
;
|
||||
CurrentPath EQU CORE_BUFFERS.BUFFERSplace + _sBuffers
|
||||
CurrentDirectory EQU CurrentPath + 2
|
||||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
||||
;
|
||||
WorkDirectory EQU CurrentDirectory + 1 + CurrentDirectory.DEPTH
|
||||
.DEPTH: EQU DIRECTORY_PATH_LENGTH
|
||||
;
|
||||
CLEAR_ZONE.size EQU _sBuffers
|
||||
|
||||
|
||||
ASSERT (CORE_BUFFERS.BUFFERSplace+_sBuffers)<#4000, "Warning!!! OUT OF SLOT0"
|
||||
DISPLAY "--- --- --- --- --- --- --- ---"
|
||||
DISPLAY "CLEAR_ZONE.start ", /H, CLEAR_ZONE.start
|
||||
|
||||
@ -984,6 +984,10 @@ RD_BPB: ; LD C,SLOT3
|
||||
LD (G_CLUST.low),HL
|
||||
DEC L
|
||||
LD (G_CLUST.high),HL
|
||||
;
|
||||
DEC HL
|
||||
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L),HL
|
||||
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H),HL
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
|
||||
@ -70,15 +70,14 @@ DELETE_REC_FAT: SET_PAGE_X DIRPAGE
|
||||
; [x] à ìè¥ ¡ë« è á 㯥à¥âìáï ¢ "DISK FULL" ¥á«¨ G_CLUST 㪠§ë¢ « ª« áâ¥à ¤ «ìè¥, 祬 ¤à㣮© ᢮¡®¤ë©
|
||||
; [ ] free clusters for FSInfo
|
||||
SET_NEW_FREE_CLUSTER:
|
||||
XOR A
|
||||
;LD B,D
|
||||
;LD C,E
|
||||
LD A,1 ; 㢥«¨ç¨âì
|
||||
CALL SET_NEW_FREE_CLUSTERS ; [ ] free clusters for FSInfo
|
||||
; CF=0
|
||||
;
|
||||
EX DE,HL
|
||||
LD HL,(G_CLUST.low)
|
||||
SBC HL,DE
|
||||
EX DE,HL
|
||||
;LD D,B
|
||||
;LD E,C
|
||||
;
|
||||
EXX
|
||||
LD B,D
|
||||
@ -147,13 +146,25 @@ G_CLUST: ;
|
||||
|
||||
; ‚室: A - 㬥ìè¨âì (0) ¨«¨ 㢥«¨ç¨âì (!0) ç¨á«® ᢮¡®¤ëå ª« áâ¥à®¢
|
||||
SET_NEW_FREE_CLUSTERS:
|
||||
EX AF,AF
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
EXX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
LD HL,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H)
|
||||
LD A,H
|
||||
AND L
|
||||
EXX
|
||||
LD HL,(CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L)
|
||||
AND H
|
||||
AND L
|
||||
INC A
|
||||
EXX
|
||||
JR Z,.no_change
|
||||
EXX
|
||||
;
|
||||
EX AF,AF
|
||||
OR A
|
||||
JR Z,.dec_clusters
|
||||
; inc clusters
|
||||
@ -165,14 +176,17 @@ SET_NEW_FREE_CLUSTERS:
|
||||
INC HL
|
||||
EXX
|
||||
;
|
||||
.set_new: LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L),HL
|
||||
.set_new: LD A,1
|
||||
LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A
|
||||
;
|
||||
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_L),HL
|
||||
EXX
|
||||
LD (CORE_BUFFERS.FatBuffer.FREE_CLUSTERS_COUNT_H),HL
|
||||
.no_change: POP DE
|
||||
POP HL
|
||||
EXX
|
||||
POP DE
|
||||
POP HL
|
||||
LD A,1
|
||||
LD (CORE_BUFFERS.FatBuffer.UPD_FSINFO),A
|
||||
RET
|
||||
;
|
||||
.dec_clusters: LD A,H
|
||||
@ -191,10 +205,7 @@ SET_NEW_FREE_CLUSTERS:
|
||||
; ‚室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨âì ¯ãá⮩
|
||||
; ‚ë室: HL':HL - ®¬¥à ª« áâ¥à ª ª®â®à®¬ã ¯à¨ªà¥¯¨«áï ¯ãá⮩
|
||||
; DE':DE - ®¬¥à ¯ãá⮣® ª« áâ¥à
|
||||
INC_FAT: ; [ ] free clusters for FSInfo
|
||||
;
|
||||
;
|
||||
PUSH HL ; ⥪ã騩 ª« áâ¥à
|
||||
INC_FAT: PUSH HL ; ⥪ã騩 ª« áâ¥à
|
||||
EXX
|
||||
PUSH HL ; ⥪ã騩 ª« áâ¥à
|
||||
EXX
|
||||
@ -234,7 +245,9 @@ INC_FAT: ; [ ] free clusters for FSInfo
|
||||
POP DE
|
||||
EX DE,HL
|
||||
;
|
||||
AND A
|
||||
; [ ] free clusters for FSInfo
|
||||
XOR A ; 㬥ìè¨âì
|
||||
CALL SET_NEW_FREE_CLUSTERS ; [ ] free clusters for FSInfo
|
||||
RET
|
||||
;RX01
|
||||
|
||||
|
||||
@ -104,10 +104,8 @@
|
||||
.BPB_SERIAL_NUMBER DWORD #00000000
|
||||
.BPB_LABEL BLOCK 11,' ' ; 11 ¤«ï FAT, 31 ¤«ï CDFS
|
||||
.UPD_FSINFO BYTE 0
|
||||
; IF USE_FSINFO_FAT32
|
||||
;.FREE_CLUSTERS_COUNT_L WORD #FFFF
|
||||
;.FREE_CLUSTERS_COUNT_H WORD #FFFF
|
||||
; ENDIF
|
||||
.FREE_CLUSTERS_COUNT_L WORD #FFFF
|
||||
.FREE_CLUSTERS_COUNT_H WORD #FFFF
|
||||
;.FilesPerSector: BYTE #00 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||
;.ClustersPerBank: BYTE #00 ; A - Clusters per bank (16k) (ç¨á«® ª« áâ¥à®¢ ¡«®ª އ“)
|
||||
;.READ_PG: BYTE #00 ;!TODO ¥ ¨á¯®«ì§ãîâáï ¥ª®â®àë¥ § 票ï, ® § ¤ã¬ª ¥¯«®å ï)))
|
||||
|
||||
@ -1 +1 @@
|
||||
978
|
||||
980
|
||||
@ -537,9 +537,19 @@ read_disk_info: OR #80
|
||||
; max sector (LBA28) #0FFF'FFFF
|
||||
;
|
||||
EX AF,AF'
|
||||
LD A,(.full)
|
||||
OR A
|
||||
LD A,D
|
||||
AND E
|
||||
EXX
|
||||
AND D
|
||||
AND E
|
||||
EXX
|
||||
INC A
|
||||
JR Z,.no_full_space_option
|
||||
LD (.full),A
|
||||
; ;
|
||||
; LD A,(.full)
|
||||
; OR A
|
||||
; JR Z,.no_full_space_option
|
||||
EX AF,AF'
|
||||
;
|
||||
; --> (HL':HL)*BC*A, (DE':DE)*BC*A = B':HL'HL, C':DE':DE
|
||||
|
||||
@ -1 +1 @@
|
||||
342
|
||||
344
|
||||
Loading…
Reference in New Issue
Block a user