-bug in new sub-function of DskInfo

This commit is contained in:
Anatoliy Belyanskiy 2023-11-28 06:04:19 +10:00
parent c5ca8e7597
commit 5cf26d589f
7 changed files with 222 additions and 203 deletions

View File

@ -406,7 +406,7 @@ BPB_FAT
RST ToBIOS_18 RST ToBIOS_18
RET C RET C
LD HL,0 LD HL,0
LD (FATCASH),HL LD (FatCache),HL
XOR A XOR A
RET RET
@ -560,7 +560,7 @@ R_F_00H INC A ; HL - CLUSTER
ADD HL,DE ADD HL,DE
ADD HL,HL ; HL - FAT OFFSET (FROM CASH) ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
DEC A DEC A
LD BC,(FATCASH) ; A - ELEMENT OF CASH LD BC,(FatCache) ; A - ELEMENT OF CASH
CP C CP C
CALL NZ,RE_FAT CALL NZ,RE_FAT
LD DE,FAT LD DE,FAT
@ -594,7 +594,7 @@ R_F_00 INC A ; HL - FAT OFFSET
JP NC,R_F_00 JP NC,R_F_00
ADD HL,DE ADD HL,DE
DEC A DEC A
LD BC,(FATCASH) LD BC,(FatCache)
CP C CP C
CALL NZ,RE_FAT CALL NZ,RE_FAT
LD DE,FAT LD DE,FAT
@ -629,7 +629,7 @@ R_F_F02 LD HL,#0FEF
RE_FAT PUSH HL RE_FAT PUSH HL
LD L,A LD L,A
LD H,0 LD H,0
LD (FATCASH),HL LD (FatCache),HL
LD E,L LD E,L
LD D,H LD D,H
ADD HL,HL ADD HL,HL
@ -687,7 +687,7 @@ DIR EQU BOOT+512
FAT EQU DIR+512 FAT EQU DIR+512
VALUE EQU 3*512+FAT VALUE EQU 3*512+FAT
FATCASH EQU VALUE+0 FatCache EQU VALUE+0
FAT_FRM EQU VALUE+2 ; MSD_FAT_SEC first sector FAT FAT_FRM EQU VALUE+2 ; MSD_FAT_SEC first sector FAT
DIR_FRH EQU VALUE+4 ; MSD_CAT_SEC first sector DIR DIR_FRH EQU VALUE+4 ; MSD_CAT_SEC first sector DIR
DIR_FRL EQU VALUE+6 ; MSD_CAT_SEC first sector DIR DIR_FRL EQU VALUE+6 ; MSD_CAT_SEC first sector DIR

View File

@ -2173,7 +2173,7 @@ SAVEDIR:
LD HL,(FatBuffer.DIR_FRH) LD HL,(FatBuffer.DIR_FRH)
LD IX,(FatBuffer.DIR_FRL) LD IX,(FatBuffer.DIR_FRL)
LD A,(FatBuffer.DIR_S_S) LD A,(FatBuffer.DIR_S_S)
LD B,32 LD B,32 ;!HARDCODE
SUB B SUB B
JR NC,.RTD1S JR NC,.RTD1S
ADD A,B ADD A,B

View File

@ -198,11 +198,15 @@ CURRDSK: LD A,(FatBuffer.DRIVE)
ENDM ENDM
; ;
DISKINF:; [ ] 22/11/23 ¯®¤äã­ªæ¨ï á ¤®¯.¨­ä®© DISKINF:; [ ] 22/11/23 ¯®¤äã­ªæ¨ï á ¤®¯.¨­ä®©
LD C,B
LD B,1
;
CP #80 CP #80
JR C,.CustomDisk JR C,.CustomDisk
CP #FF CP #FF
JR Z,.CurrentDisk JR Z,.CurrentDisk
; more info ; more info
LD B,C
PUSH HL PUSH HL
AND %0111'1111 AND %0111'1111
CALL .CustomDisk CALL .CustomDisk
@ -264,7 +268,7 @@ DISKINF:; [ ] 22/11/23
.FRESP2: .FRESP2:
LD D,B LD D,B
LD E,C LD E,C
LD HL,(MAX_CLU) LD HL,(FAT_Max_Cluster)
DEC HL DEC HL
LD BC,(CORE_BUFFERS.BootSector.B_P_S) LD BC,(CORE_BUFFERS.BootSector.B_P_S)
LD A,(CORE_BUFFERS.BootSector.S_P_C) LD A,(CORE_BUFFERS.BootSector.S_P_C)
@ -581,7 +585,7 @@ RD_BPB: LD C,SLOT3
RR L RR L
JP .S4C01 JP .S4C01
.S4C02: INC HL .S4C02: INC HL
LD (MAX_CLU),HL LD (FAT_Max_Cluster),HL
//POP IY //POP IY
@ -594,7 +598,7 @@ RD_BPB: LD C,SLOT3
; RST ToDSS.DRV ; RST ToDSS.DRV
; JP C,RDERR1 ; JP C,RDERR1
LD HL,0 LD HL,0
LD (FATCASH),HL LD (FatCache),HL
SET_PAGE_X FATPAGE SET_PAGE_X FATPAGE

View File

@ -14,6 +14,7 @@ R_CLUST LD HL,#0001
LD (G_CLUST.num),HL LD (G_CLUST.num),HL
RET RET
; ­ Šâ¨ ŻĽŕ˘ëŠ á˘ŽĄŽ¤­ëŠ ŞŤ áâĽŕ
G_CLUST: G_CLUST:
.num+1: LD HL,#0001 .num+1: LD HL,#0001
.loop: INC HL ; ­®¬¥à ª« áâ¥à  .loop: INC HL ; ­®¬¥à ª« áâ¥à 
@ -62,7 +63,7 @@ INC_FAT PUSH HL
;!FIXIT ®â¤ ñâ à §­ë© CF ¯à¨ 㤠筮¬ § ¢¥à襭¨¨ ¢ § ¢¨á¨¬®á⨠®â FAT16/FAT12 ;!FIXIT ®â¤ ñâ à §­ë© CF ¯à¨ 㤠筮¬ § ¢¥à襭¨¨ ¢ § ¢¨á¨¬®á⨠®â FAT16/FAT12
R_F_FAT: R_F_FAT:
EX DE,HL EX DE,HL
LD HL,(MAX_CLU) LD HL,(FAT_Max_Cluster)
AND A AND A
SBC HL,DE SBC HL,DE
EX DE,HL EX DE,HL
@ -80,18 +81,19 @@ R_F_FAT:
R_F_F16: R_F_F16:
LD A,H LD A,H
LD B,H LD B,H
AND #0F ;AND #0F
AND FAT_CACHE.Mask
LD H,A LD H,A
LD A,B LD A,B
; bit7..4 --> bit3..0. ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
DUP FAT_CACHE.Degree
RRCA RRCA
RRCA EDUP
RRCA ;AND #0F
RRCA AND FAT_CACHE.Mask2
AND #0F ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
; ;
ADD HL,HL ; HL - FAT OFFSET (FROM CASH) ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C CP C
CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT
LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT-  LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT- 
@ -107,71 +109,6 @@ R_F_F16:
POP HL POP HL
RET RET
;R01; HL - CLUSTER
;R01; DE - (CLUSTER)
;R01
;R01R_F_FAT EX DE,HL
;R01 LD HL,(MAX_CLU)
;R01 AND A
;R01 SBC HL,DE
;R01 EX DE,HL
;R01 LD A,10
;R01 RET C
;R01 PUSH HL
;R01 LD A,(FAT_TYP)
;R01 CP "2"
;R01 JP Z,R_F_F12
;R01R_F_F16 LD DE,768 ; DE - CLUSTERS IN CASH
;R01 XOR A
;R01R_F_00H INC A ; HL - CLUSTER
;R01 SBC HL,DE
;R01 JP NC,R_F_00H
;R01 ADD HL,DE
;R01 ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
;R01 DEC A
;R01 LD BC,(FATCASH) ; A - ELEMENT OF CASH
;R01 CP C
;R01 CALL NZ,RE_FAT
;R01 LD DE,FAT
;R01 ADD HL,DE
;R01 LD E,(HL)
;R01 INC HL
;R01 LD D,(HL)
;R01 LD HL,#FFEF
;R01 AND A
;R01 SBC HL,DE
;R01 POP HL
;R01 LD A,0
;R01 RET
;R01
;R01R_F_F12 LD D,H
;R01 LD E,L
;R01 ADD HL,HL
;R01 ADD HL,DE
;R01 RR H
;R01 RR L
;R01 PUSH AF
;R01 EX DE,HL
;R01 LD HL,(B_P_S)
;R01 LD B,H
;R01 LD C,L
;R01 ADD HL,HL
;R01 ADD HL,BC
;R01 EX DE,HL
;R01 XOR A ; DE - SIZE SECTOR * 3
;R01R_F_00 INC A ; HL - FAT OFFSET
;R01 SBC HL,DE
;R01 JP NC,R_F_00
;R01 ADD HL,DE
;R01 DEC A
; R_F_F12 LD D,H
; LD E,L
; ADD HL,HL
; ADD HL,DE
; RR H ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
; RR L ; CLUSTER * 1.5
; PUSH AF ; á®åà. ä« £
R_F_F12: R_F_F12:
LD D,H LD D,H
LD E,L LD E,L
@ -181,7 +118,7 @@ R_F_F12:
ADD HL,DE ; CLUSTER * 1.5 ADD HL,DE ; CLUSTER * 1.5
; ;
;!FIXIT å¥à­ï ª ª ï-â® ;!FIXIT å¥à­ï ª ª ï-â®
IF COMPILE_UNUSED_CODE ;IF COMPILE_UNUSED_CODE
LD A,H LD A,H
LD B,H LD B,H
AND #1F AND #1F
@ -191,10 +128,10 @@ R_F_F12:
RLCA RLCA
RLCA RLCA
AND #07 AND #07
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C CP C
CALL NZ,RE_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-  CALL NZ,RE_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT- 
ENDIF ;ENDIF
; ;
LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT-  LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT- 
ADD HL,DE ; ­  ï祩ªã FAT ADD HL,DE ; ­  ï祩ªã FAT
@ -208,17 +145,6 @@ R_F_F12:
LD D,A LD D,A
JP R_F_F02 JP R_F_F02
; R_F_F01 LD A,E
; AND #F0
; LD E,A
; RR D ; ¢¯à ¢® ­  4 ¡¨âa
; RR E
; RR D
; RR E
; RR D
; RR E
; RR D
; RR E
R_F_F01: R_F_F01:
LD A,E LD A,E
AND #F0 AND #F0
@ -251,7 +177,7 @@ R_F_F02:
;----------------------------------------------------------- ;-----------------------------------------------------------
W_T_FAT PUSH DE W_T_FAT PUSH DE
EX DE,HL EX DE,HL
LD HL,(MAX_CLU) LD HL,(FAT_Max_Cluster)
AND A AND A
SBC HL,DE SBC HL,DE
EX DE,HL EX DE,HL
@ -259,14 +185,12 @@ W_T_FAT PUSH DE
LD A,DSS_Error.sys.DISK_FULL LD A,DSS_Error.sys.DISK_FULL
RET C RET C
EXX EXX
SET_PAGE_X FATPAGE SET_PAGE_X FATPAGE
EXX EXX
PUSH HL PUSH HL
PUSH AF PUSH AF
LD A,1 LD A,1
LD (FATCASH.Update),A LD (FatCache.Update),A
LD A,(FatBuffer.FAT_TYP) LD A,(FatBuffer.FAT_TYP)
CP "2" ; fat12 CP "2" ; fat12
JR Z,W_T_F12 JR Z,W_T_F12
@ -274,16 +198,19 @@ W_T_F16:
PUSH DE PUSH DE
LD A,H LD A,H
LD B,H LD B,H
AND #0F ;AND #0F
AND FAT_CACHE.Mask
LD H,A LD H,A
LD A,B LD A,B
RRCA ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
RRCA DUP FAT_CACHE.Degree
RRCA RRCA
RRCA EDUP
AND #0F ; A - BLOCK FAT (1 BLOCK = 8192 BYTES) ;AND #0F
ADD HL,HL ; HL - FAT OFFSET (FROM CASH) AND FAT_CACHE.Mask2
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH ;
ADD HL,HL ; HL - FAT OFFSET (FROM CASH) ;!HARDCODE fat16 - ŕ §ŹĽŕ § Ż¨á¨ FAT
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C CP C
CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT
LD DE,FATPAGE.cache LD DE,FATPAGE.cache
@ -314,7 +241,7 @@ W_T_F12:
ADD HL,DE ; CLUSTER * 1.5 ADD HL,DE ; CLUSTER * 1.5
; ;
;!FIXIT å¥à­ï ª ª ï-â® ;!FIXIT å¥à­ï ª ª ï-â®
IF COMPILE_UNUSED_CODE ;IF COMPILE_UNUSED_CODE
LD A,H LD A,H
LD B,H LD B,H
AND #1F AND #1F
@ -324,10 +251,10 @@ W_T_F12:
RLCA RLCA
RLCA RLCA
AND #07 AND #07
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH LD BC,(FatCache) ; C - BLOCK FAT IN CASH
CP C CP C
CALL NZ,RE_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-  CALL NZ,RE_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT- 
ENDIF ;ENDIF
; ;
LD DE,FATPAGE.cache LD DE,FATPAGE.cache
ADD HL,DE ADD HL,DE
@ -346,15 +273,7 @@ W_T_F12:
AND A AND A
RET RET
; W_T_F01 SLA E
; RL D
; RL E
; RL D
; RL E
; RL D
; RL E
; RL D
;
W_T_F01:; ¢«¥¢® ­  4 ¡¨âa W_T_F01:; ¢«¥¢® ­  4 ¡¨âa
SLA E SLA E
LD A,E LD A,E
@ -384,28 +303,30 @@ W_T_F01:;
; A - NEW FAT BLOCK ; A - NEW FAT BLOCK
RE_FAT: PUSH HL RE_FAT: PUSH HL
PUSH AF PUSH AF
LD A,(FATCASH.Update) LD A,(FatCache.Update)
OR A OR A
CALL NZ,WR_FAT.Start CALL NZ,WR_FAT.Start
POP AF POP AF
LD L,A LD L,A
LD H,0 LD H,0
LD (FATCASH),HL LD (FatCache),HL
;FAT BLOCK * 16 = SECTOR OF FAT ;FAT BLOCK * 16 = SECTOR OF FAT
ADD HL,HL DUP FAT_CACHE.Degree
ADD HL,HL ADD HL,HL ;x2
ADD HL,HL EDUP
ADD HL,HL ;!TODO FATcacheSize
;
LD DE,(FatBuffer.FAT_FRM) LD DE,(FatBuffer.FAT_FRM)
ADD HL,DE ADD HL,DE
EX DE,HL EX DE,HL
LD IX,0 ;
ADD IX,DE ; ­®¬¥à «®£. ᥪâ®à  PUSH DE
POP IX
;LD IX,0
;ADD IX,DE ; ­ŽŹĽŕ ŤŽŁ. ἪâŽŕ 
;
LD HL,0 ; áâ. à §àï¤ ; HL:IX - SECTOR FAT FOR READING LD HL,0 ; áâ. à §àï¤ ; HL:IX - SECTOR FAT FOR READING
LD DE,FATPAGE.cache ; ªã¤  ; DE - FAT ADDRESS LD DE,FATPAGE.cache ; ªã¤  ; DE - FAT ADDRESS
LD A,(FatBuffer.DRIVE) ; ­®¬¥à ¤¨áª  LD A,(FatBuffer.DRIVE) ; ­®¬¥à ¤¨áª 
LD BC,16*256 + Dss.DRV.Read ;ॣ B: 16 * 512 = 8192 (CASH SIZE) ;!TODO FATcacheSize LD BC,FAT_CACHE.Sectors*256 + Dss.DRV.Read ;༣ B: 16 * 512 = 8192 (CASH SIZE)
RST ToDSS.DRV RST ToDSS.DRV
POP HL POP HL
RET RET
@ -418,26 +339,24 @@ WR_FAT: SET_PAGE_X FATPAGE
OUT (SLOT3),A OUT (SLOT3),A
RET RET
; ‡ ¯¨áì ª¥è  (¢á¥£®?) FAT-  ­  ¤¨áª ; ‡ ¯¨áì ª¥è  (¢á¥£®?) FAT-  ­  ¤¨áª
.Start: LD HL,(FATCASH) .Start: LD HL,(FatCache)
LD H,0 LD H,0
;LD (FATCASH),HL ;FAT BLOCK * 16 = SECTOR OF FAT
ADD HL,HL DUP FAT_CACHE.Degree
ADD HL,HL ADD HL,HL ;x2
ADD HL,HL EDUP
ADD HL,HL ;FAT BLOCK * 16 = SECTOR OF FAT ;!TODO FATcacheSize
PUSH HL PUSH HL
LD B,H LD B,H
LD C,L ;BC - BLOCK OF FAT LD C,L ;BC - BLOCK OF FAT
LD DE,16 ;!HARDCODE ;!TODO FATcacheSize LD DE,FAT_CACHE.Sectors
ADD HL,DE ;+ SIZE CASH (16 SECTORS) ADD HL,DE ;+ SIZE CASH (16 SECTORS)
LD A,E ;!HARDCODE ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï ¢ ªíè ;!TODO FATcacheSize LD A,E ;!HARDCODE ; MAX ç¨áŤŽ ἪâŽŕŽ˘ ¤Ťď ç⼭¨ď ˘ Şíč
LD DE,(CORE_BUFFERS.BootSector.S_P_F) ; ᥪâ®à®¢ ­  FAT LD DE,(CORE_BUFFERS.BootSector.S_P_F) ; ᥪâ®à®¢ ­  FAT
AND A AND A
SBC HL,DE SBC HL,DE
JR C,.WALLFAT JR C,.WALLFAT
EX DE,HL EX DE,HL
LD HL,16 ;!HARDCODE ; ç¨á«® ᥪâ®à®¢ ;!TODO FATcacheSize LD HL,FAT_CACHE.Sectors
; CF = 0 ; CF = 0
SBC HL,DE SBC HL,DE
JP C,.ERR JP C,.ERR
@ -448,10 +367,14 @@ WR_FAT: SET_PAGE_X FATPAGE
LD DE,(FatBuffer.FAT_FRM) LD DE,(FatBuffer.FAT_FRM)
ADD HL,DE ADD HL,DE
EX DE,HL EX DE,HL
LD IX,0 ;
;HL:IX - SECTOR OF FAT FOR SAVE PUSH DE
ADD IX,DE ; ­®¬¥à «®£. ᥪâ®à  POP IX
;LD IX,0
;ADD IX,DE ; ­ŽŹĽŕ ŤŽŁ. ἪâŽŕ 
;
LD HL,0 ; áâ. à §àï¤ LD HL,0 ; áâ. à §àï¤
;HL:IX - SECTOR OF FAT FOR SAVE
LD DE,FATPAGE.cache ; ®âªã¤  LD DE,FATPAGE.cache ; ®âªã¤ 
LD B,A ; ç¨á«® ᥪâ®à®¢ LD B,A ; ç¨á«® ᥪâ®à®¢
LD C,Dss.DRV.Write ; § ¯¨áì ᥪâ®à®¢ LD C,Dss.DRV.Write ; § ¯¨áì ᥪâ®à®¢
@ -463,8 +386,12 @@ WR_FAT: SET_PAGE_X FATPAGE
LD DE,(FatBuffer.FAT2_XX) LD DE,(FatBuffer.FAT2_XX)
ADD HL,DE ADD HL,DE
EX DE,HL EX DE,HL
LD IX,0 ;
ADD IX,DE PUSH DE
POP IX
;LD IX,0
;ADD IX,DE ; ­ŽŹĽŕ ŤŽŁ. ἪâŽŕ 
;
LD DE,FATPAGE.cache LD DE,FATPAGE.cache
LD HL,0 LD HL,0
LD A,(FatBuffer.DRIVE) LD A,(FatBuffer.DRIVE)
@ -473,70 +400,132 @@ WR_FAT: SET_PAGE_X FATPAGE
AND A ;!TODO ­¥â ª®­âà®«ï ®è¨¡®ª AND A ;!TODO ­¥â ª®­âà®«ï ®è¨¡®ª
; ;
.ERR: LD A,0 .ERR: LD A,0
LD (FATCASH.Update),A LD (FatCache.Update),A
RET NC RET NC
POP HL POP HL
; CF = 1 ; CF = 1
RET RET
;R01
;R01WR_FAT LD HL,(FATCASH)
;R01 LD H,0
;R01 LD (FATCASH),HL
;R01 LD E,L
;R01 LD D,H
;R01 ADD HL,HL
;R01 ADD HL,DE
;R01 PUSH HL
;R01 LD B,H
;R01 LD C,L
;R01 INC HL
;R01 INC HL
;R01 INC HL
;R01 LD DE,(S_P_F)
;R01 LD A,3
;R01 AND A
;R01 SBC HL,DE
;R01 JP C,WR_FAT1
;R01 EX DE,HL
;R01 LD HL,3
;R01 AND A
;R01 SBC HL,DE
;R01 JP C,FATERR
;R01 LD A,L
;R01WR_FAT1 LD H,B
;R01 LD L,C
;R01 LD DE,(FAT_FRM)
;R01 ADD HL,DE
;R01 EX DE,HL
;R01 LD IX,0
;R01 ADD IX,DE
;R01 LD DE,FAT
;R01 LD HL,0
;R01 LD B,A
;R01 LD C,6
;R01 LD A,(DRIVE)
;R01 PUSH BC
;R01 RST #18
;R01 POP BC
;R01 POP HL
;R01 LD DE,(FAT2_XX)
;R01 ADD HL,DE
;R01 EX DE,HL
;R01 LD IX,0
;R01 ADD IX,DE
;R01 LD DE,FAT
;R01 LD HL,0
;R01 LD A,(DRIVE)
;R01 LD C,6
;R01 RST #18
;R01 RET
FATCASH: WORD #0000
.Block EQU FATCASH FatCache: WORD #0000
.Update EQU FATCASH+1 .Block EQU FatCache
MAX_CLU: WORD #0FF0 ; ¬ ªá. ç¨á«® ª« áâ¥à®¢ FAT12 (¡¥§ á«ã¦.) .Update EQU FatCache+1
FAT_Max_Cluster: WORD #0FF0 ; Ź Şá. ç¨áŤŽ ŞŤ áâĽŕŽ˘ FAT12 (ĄĽ§ áŤăŚ.)
;//MODULE: FAT_X ;//MODULE: FAT_X
;[END] ;[END]
;R01
;; HL - CLUSTER
;; DE - (CLUSTER)
;
;R_F_FAT EX DE,HL
; LD HL,(FAT_Max_Cluster)
; AND A
; SBC HL,DE
; EX DE,HL
; LD A,10
; RET C
; PUSH HL
; LD A,(FAT_TYP)
; CP "2"
; JP Z,R_F_F12
;R_F_F16 LD DE,768 ; DE - CLUSTERS IN CASH
; XOR A
;R_F_00H INC A ; HL - CLUSTER
; SBC HL,DE
; JP NC,R_F_00H
; ADD HL,DE
; ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
; DEC A
; LD BC,(FatCache) ; A - ELEMENT OF CASH
; CP C
; CALL NZ,RE_FAT
; LD DE,FAT
; ADD HL,DE
; LD E,(HL)
; INC HL
; LD D,(HL)
; LD HL,#FFEF
; AND A
; SBC HL,DE
; POP HL
; LD A,0
; RET
;
;R_F_F12 LD D,H
; LD E,L
; ADD HL,HL
; ADD HL,DE
; RR H
; RR L
; PUSH AF
; EX DE,HL
; LD HL,(B_P_S)
; LD B,H
; LD C,L
; ADD HL,HL
; ADD HL,BC
; EX DE,HL
; XOR A ; DE - SIZE SECTOR * 3
;R_F_00 INC A ; HL - FAT OFFSET
; SBC HL,DE
; JP NC,R_F_00
; ADD HL,DE
; DEC A
;
;
;WR_FAT LD HL,(FatCache)
; LD H,0
; LD (FatCache),HL
; LD E,L
; LD D,H
; ADD HL,HL
; ADD HL,DE
; PUSH HL
; LD B,H
; LD C,L
; INC HL
; INC HL
; INC HL
; LD DE,(S_P_F)
; LD A,3
; AND A
; SBC HL,DE
; JP C,WR_FAT1
; EX DE,HL
; LD HL,3
; AND A
; SBC HL,DE
; JP C,FATERR
; LD A,L
;WR_FAT1 LD H,B
; LD L,C
; LD DE,(FAT_FRM)
; ADD HL,DE
; EX DE,HL
; LD IX,0
; ADD IX,DE
; LD DE,FAT
; LD HL,0
; LD B,A
; LD C,6
; LD A,(DRIVE)
; PUSH BC
; RST #18
; POP BC
; POP HL
; LD DE,(FAT2_XX)
; ADD HL,DE
; EX DE,HL
; LD IX,0
; ADD IX,DE
; LD DE,FAT
; LD HL,0
; LD A,(DRIVE)
; LD C,6
; RST #18
; RET
;

View File

@ -1 +1 @@
621 734

View File

@ -9,6 +9,31 @@
; ;
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥ ;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
define _bit (1<?((FAT_CACHE.Sectors-1)
define _shift _bit&1)) + _bit&2)) + _bit&4)) + _bit&8)) + _bit&16)) + _bit&32)) + _bit&64)) + _bit&128))
;
FAT_CACHE:
.Size EQU #2000 ; bytes
.Sector_Size EQU 512
.Sectors EQU .Size / .Sector_Size
.bytes_record EQU 2
.Degree EQU _shift ;.Sectors >>> (.Sectors/8)
.Mask EQU high (.Size/.bytes_record - 1) ;#07 ;.Sectors - 1
.Mask2 EQU ((1<<(.bytes_record*8)) / (.Size/2))-1
;
undefine _bit
undefine _shift
DISPLAY ".Size = ",/A,.Size
DISPLAY ".Sectors = ",/A,.Sectors
DISPLAY ".Degree = ",/A,.Degree
DISPLAY ".Mask = ",/A,.Mask
DISPLAY ".Mask2 = ",/A,.Mask2
; DISPLAY " test = ",/A, (1<?((.t)&128)) + (1<?((.t)&4)) + (1<?((.t)&4))
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
;
DSS_MAX_DRIVES_AMOUNT EQU 26 DSS_MAX_DRIVES_AMOUNT EQU 26
DEFINE MAX_RAMDRIVES 16 DEFINE MAX_RAMDRIVES 16
DEFINE NeedSafePort_Y 1 DEFINE NeedSafePort_Y 1

View File

@ -60,6 +60,7 @@ RUN_COMMAND:
; c - ¤«¨­  áâப¨ á ª®¬ ­¤®© ; c - ¤«¨­  áâப¨ á ª®¬ ­¤®©
; ‚ë室: CF=1 - ¢ HL  ¤à¥á ª«îç  ­  ¨á¯®«­¥­¨¥ ; ‚ë室: CF=1 - ¢ HL  ¤à¥á ª«îç  ­  ¨á¯®«­¥­¨¥
; CF=0 - ­¥â ®¯®§­ ­®£® ª«îç  ; CF=0 - ­¥â ®¯®§­ ­®£® ª«îç 
; !FIXIT ¯¥א¥¤¥« גל םגד וא¥­ל
RUN_OPTION: RUN_OPTION:
.cont: EX DE,HL .cont: EX DE,HL
LD B,C LD B,C