mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
-bug in new sub-function of DskInfo
This commit is contained in:
parent
c5ca8e7597
commit
5cf26d589f
@ -406,7 +406,7 @@ BPB_FAT
|
||||
RST ToBIOS_18
|
||||
RET C
|
||||
LD HL,0
|
||||
LD (FATCASH),HL
|
||||
LD (FatCache),HL
|
||||
XOR A
|
||||
RET
|
||||
|
||||
@ -560,7 +560,7 @@ R_F_00H INC A ; HL - CLUSTER
|
||||
ADD HL,DE
|
||||
ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
|
||||
DEC A
|
||||
LD BC,(FATCASH) ; A - ELEMENT OF CASH
|
||||
LD BC,(FatCache) ; A - ELEMENT OF CASH
|
||||
CP C
|
||||
CALL NZ,RE_FAT
|
||||
LD DE,FAT
|
||||
@ -594,7 +594,7 @@ R_F_00 INC A ; HL - FAT OFFSET
|
||||
JP NC,R_F_00
|
||||
ADD HL,DE
|
||||
DEC A
|
||||
LD BC,(FATCASH)
|
||||
LD BC,(FatCache)
|
||||
CP C
|
||||
CALL NZ,RE_FAT
|
||||
LD DE,FAT
|
||||
@ -629,7 +629,7 @@ R_F_F02 LD HL,#0FEF
|
||||
RE_FAT PUSH HL
|
||||
LD L,A
|
||||
LD H,0
|
||||
LD (FATCASH),HL
|
||||
LD (FatCache),HL
|
||||
LD E,L
|
||||
LD D,H
|
||||
ADD HL,HL
|
||||
@ -687,7 +687,7 @@ DIR EQU BOOT+512
|
||||
FAT EQU DIR+512
|
||||
|
||||
VALUE EQU 3*512+FAT
|
||||
FATCASH EQU VALUE+0
|
||||
FatCache EQU VALUE+0
|
||||
FAT_FRM EQU VALUE+2 ; MSD_FAT_SEC first sector FAT
|
||||
DIR_FRH EQU VALUE+4 ; MSD_CAT_SEC first sector DIR
|
||||
DIR_FRL EQU VALUE+6 ; MSD_CAT_SEC first sector DIR
|
||||
|
||||
@ -2173,7 +2173,7 @@ SAVEDIR:
|
||||
LD HL,(FatBuffer.DIR_FRH)
|
||||
LD IX,(FatBuffer.DIR_FRL)
|
||||
LD A,(FatBuffer.DIR_S_S)
|
||||
LD B,32
|
||||
LD B,32 ;!HARDCODE
|
||||
SUB B
|
||||
JR NC,.RTD1S
|
||||
ADD A,B
|
||||
|
||||
@ -198,11 +198,15 @@ CURRDSK: LD A,(FatBuffer.DRIVE)
|
||||
ENDM
|
||||
;
|
||||
DISKINF:; [ ] 22/11/23 ¯®¤äãªæ¨ï á ¤®¯.¨ä®©
|
||||
LD C,B
|
||||
LD B,1
|
||||
;
|
||||
CP #80
|
||||
JR C,.CustomDisk
|
||||
CP #FF
|
||||
JR Z,.CurrentDisk
|
||||
; more info
|
||||
LD B,C
|
||||
PUSH HL
|
||||
AND %0111'1111
|
||||
CALL .CustomDisk
|
||||
@ -264,7 +268,7 @@ DISKINF:; [ ] 22/11/23
|
||||
.FRESP2:
|
||||
LD D,B
|
||||
LD E,C
|
||||
LD HL,(MAX_CLU)
|
||||
LD HL,(FAT_Max_Cluster)
|
||||
DEC HL
|
||||
LD BC,(CORE_BUFFERS.BootSector.B_P_S)
|
||||
LD A,(CORE_BUFFERS.BootSector.S_P_C)
|
||||
@ -581,7 +585,7 @@ RD_BPB: LD C,SLOT3
|
||||
RR L
|
||||
JP .S4C01
|
||||
.S4C02: INC HL
|
||||
LD (MAX_CLU),HL
|
||||
LD (FAT_Max_Cluster),HL
|
||||
|
||||
//POP IY
|
||||
|
||||
@ -594,7 +598,7 @@ RD_BPB: LD C,SLOT3
|
||||
; RST ToDSS.DRV
|
||||
; JP C,RDERR1
|
||||
LD HL,0
|
||||
LD (FATCASH),HL
|
||||
LD (FatCache),HL
|
||||
|
||||
SET_PAGE_X FATPAGE
|
||||
|
||||
|
||||
375
DSS/FAT_X.ASM
375
DSS/FAT_X.ASM
@ -14,6 +14,7 @@ R_CLUST LD HL,#0001
|
||||
LD (G_CLUST.num),HL
|
||||
RET
|
||||
|
||||
; Šâ¨ ŻĽŕ˘ëŠ á˘ŽĄŽ¤ëŠ ŞŤ áâĽŕ
|
||||
G_CLUST:
|
||||
.num+1: LD HL,#0001
|
||||
.loop: INC HL ; ®¬¥à ª« áâ¥à
|
||||
@ -62,7 +63,7 @@ INC_FAT PUSH HL
|
||||
;!FIXIT ®â¤ ñâ à §ë© CF ¯à¨ 㤠箬 § ¢¥à襨¨ ¢ § ¢¨á¨¬®á⨠®â FAT16/FAT12
|
||||
R_F_FAT:
|
||||
EX DE,HL
|
||||
LD HL,(MAX_CLU)
|
||||
LD HL,(FAT_Max_Cluster)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
EX DE,HL
|
||||
@ -80,18 +81,19 @@ R_F_FAT:
|
||||
R_F_F16:
|
||||
LD A,H
|
||||
LD B,H
|
||||
AND #0F
|
||||
;AND #0F
|
||||
AND FAT_CACHE.Mask
|
||||
LD H,A
|
||||
LD A,B
|
||||
; bit7..4 --> bit3..0.
|
||||
; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
|
||||
DUP FAT_CACHE.Degree
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND #0F ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
|
||||
EDUP
|
||||
;AND #0F
|
||||
AND FAT_CACHE.Mask2
|
||||
;
|
||||
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
|
||||
CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT
|
||||
LD DE,FATPAGE.cache ; ç «® ª¥è FAT-
|
||||
@ -107,71 +109,6 @@ R_F_F16:
|
||||
POP HL
|
||||
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:
|
||||
LD D,H
|
||||
LD E,L
|
||||
@ -181,7 +118,7 @@ R_F_F12:
|
||||
ADD HL,DE ; CLUSTER * 1.5
|
||||
;
|
||||
;!FIXIT å¥àï ª ª ï-â®
|
||||
IF COMPILE_UNUSED_CODE
|
||||
;IF COMPILE_UNUSED_CODE
|
||||
LD A,H
|
||||
LD B,H
|
||||
AND #1F
|
||||
@ -191,10 +128,10 @@ R_F_F12:
|
||||
RLCA
|
||||
RLCA
|
||||
AND #07
|
||||
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
|
||||
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
|
||||
CP C
|
||||
CALL NZ,RE_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||||
ENDIF
|
||||
;ENDIF
|
||||
;
|
||||
LD DE,FATPAGE.cache ; ç «® ª¥è FAT-
|
||||
ADD HL,DE ; ï祩ªã FAT
|
||||
@ -208,17 +145,6 @@ R_F_F12:
|
||||
LD D,A
|
||||
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:
|
||||
LD A,E
|
||||
AND #F0
|
||||
@ -251,7 +177,7 @@ R_F_F02:
|
||||
;-----------------------------------------------------------
|
||||
W_T_FAT PUSH DE
|
||||
EX DE,HL
|
||||
LD HL,(MAX_CLU)
|
||||
LD HL,(FAT_Max_Cluster)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
EX DE,HL
|
||||
@ -259,14 +185,12 @@ W_T_FAT PUSH DE
|
||||
LD A,DSS_Error.sys.DISK_FULL
|
||||
RET C
|
||||
EXX
|
||||
|
||||
SET_PAGE_X FATPAGE
|
||||
|
||||
EXX
|
||||
PUSH HL
|
||||
PUSH AF
|
||||
LD A,1
|
||||
LD (FATCASH.Update),A
|
||||
LD (FatCache.Update),A
|
||||
LD A,(FatBuffer.FAT_TYP)
|
||||
CP "2" ; fat12
|
||||
JR Z,W_T_F12
|
||||
@ -274,16 +198,19 @@ W_T_F16:
|
||||
PUSH DE
|
||||
LD A,H
|
||||
LD B,H
|
||||
AND #0F
|
||||
;AND #0F
|
||||
AND FAT_CACHE.Mask
|
||||
LD H,A
|
||||
LD A,B
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND #0F ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
|
||||
ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
|
||||
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
|
||||
; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
|
||||
DUP FAT_CACHE.Degree
|
||||
RRCA
|
||||
EDUP
|
||||
;AND #0F
|
||||
AND FAT_CACHE.Mask2
|
||||
;
|
||||
ADD HL,HL ; HL - FAT OFFSET (FROM CASH) ;!HARDCODE fat16 - ŕ §ŹĽŕ § Ż¨á¨ FAT
|
||||
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
|
||||
CP C
|
||||
CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT
|
||||
LD DE,FATPAGE.cache
|
||||
@ -314,7 +241,7 @@ W_T_F12:
|
||||
ADD HL,DE ; CLUSTER * 1.5
|
||||
;
|
||||
;!FIXIT å¥àï ª ª ï-â®
|
||||
IF COMPILE_UNUSED_CODE
|
||||
;IF COMPILE_UNUSED_CODE
|
||||
LD A,H
|
||||
LD B,H
|
||||
AND #1F
|
||||
@ -324,10 +251,10 @@ W_T_F12:
|
||||
RLCA
|
||||
RLCA
|
||||
AND #07
|
||||
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
|
||||
LD BC,(FatCache) ; C - BLOCK FAT IN CASH
|
||||
CP C
|
||||
CALL NZ,RE_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT-
|
||||
ENDIF
|
||||
;ENDIF
|
||||
;
|
||||
LD DE,FATPAGE.cache
|
||||
ADD HL,DE
|
||||
@ -346,15 +273,7 @@ W_T_F12:
|
||||
AND A
|
||||
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
|
||||
SLA E
|
||||
LD A,E
|
||||
@ -384,28 +303,30 @@ W_T_F01:;
|
||||
; A - NEW FAT BLOCK
|
||||
RE_FAT: PUSH HL
|
||||
PUSH AF
|
||||
LD A,(FATCASH.Update)
|
||||
LD A,(FatCache.Update)
|
||||
OR A
|
||||
CALL NZ,WR_FAT.Start
|
||||
POP AF
|
||||
LD L,A
|
||||
LD H,0
|
||||
LD (FATCASH),HL
|
||||
LD (FatCache),HL
|
||||
;FAT BLOCK * 16 = SECTOR OF FAT
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL ;!TODO FATcacheSize
|
||||
;
|
||||
DUP FAT_CACHE.Degree
|
||||
ADD HL,HL ;x2
|
||||
EDUP
|
||||
LD DE,(FatBuffer.FAT_FRM)
|
||||
ADD HL,DE
|
||||
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 DE,FATPAGE.cache ; ªã¤ ; DE - FAT ADDRESS
|
||||
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
|
||||
POP HL
|
||||
RET
|
||||
@ -418,26 +339,24 @@ WR_FAT: SET_PAGE_X FATPAGE
|
||||
OUT (SLOT3),A
|
||||
RET
|
||||
; ‡ ¯¨áì ª¥è (¢á¥£®?) FAT- ¤¨áª
|
||||
.Start: LD HL,(FATCASH)
|
||||
.Start: LD HL,(FatCache)
|
||||
LD H,0
|
||||
;LD (FATCASH),HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL ;FAT BLOCK * 16 = SECTOR OF FAT ;!TODO FATcacheSize
|
||||
|
||||
;FAT BLOCK * 16 = SECTOR OF FAT
|
||||
DUP FAT_CACHE.Degree
|
||||
ADD HL,HL ;x2
|
||||
EDUP
|
||||
PUSH HL
|
||||
LD B,H
|
||||
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)
|
||||
LD A,E ;!HARDCODE ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè ;!TODO FATcacheSize
|
||||
LD A,E ;!HARDCODE ; MAX ç¨áŤŽ ἪâŽŕŽ˘ ¤Ťď çâĽ¨ď ˘ Şíč
|
||||
LD DE,(CORE_BUFFERS.BootSector.S_P_F) ; ᥪâ®à®¢ FAT
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR C,.WALLFAT
|
||||
EX DE,HL
|
||||
LD HL,16 ;!HARDCODE ; ç¨á«® ᥪâ®à®¢ ;!TODO FATcacheSize
|
||||
LD HL,FAT_CACHE.Sectors
|
||||
; CF = 0
|
||||
SBC HL,DE
|
||||
JP C,.ERR
|
||||
@ -448,10 +367,14 @@ WR_FAT: SET_PAGE_X FATPAGE
|
||||
LD DE,(FatBuffer.FAT_FRM)
|
||||
ADD HL,DE
|
||||
EX DE,HL
|
||||
LD IX,0
|
||||
;HL:IX - SECTOR OF FAT FOR SAVE
|
||||
ADD IX,DE ; ®¬¥à «®£. ᥪâ®à
|
||||
;
|
||||
PUSH DE
|
||||
POP IX
|
||||
;LD IX,0
|
||||
;ADD IX,DE ; ŽŹĽŕ ŤŽŁ. ἪâŽŕ
|
||||
;
|
||||
LD HL,0 ; áâ. à §àï¤
|
||||
;HL:IX - SECTOR OF FAT FOR SAVE
|
||||
LD DE,FATPAGE.cache ; ®âªã¤
|
||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
||||
LD C,Dss.DRV.Write ; § ¯¨áì ᥪâ®à®¢
|
||||
@ -463,8 +386,12 @@ WR_FAT: SET_PAGE_X FATPAGE
|
||||
LD DE,(FatBuffer.FAT2_XX)
|
||||
ADD HL,DE
|
||||
EX DE,HL
|
||||
LD IX,0
|
||||
ADD IX,DE
|
||||
;
|
||||
PUSH DE
|
||||
POP IX
|
||||
;LD IX,0
|
||||
;ADD IX,DE ; ŽŹĽŕ ŤŽŁ. ἪâŽŕ
|
||||
;
|
||||
LD DE,FATPAGE.cache
|
||||
LD HL,0
|
||||
LD A,(FatBuffer.DRIVE)
|
||||
@ -473,70 +400,132 @@ WR_FAT: SET_PAGE_X FATPAGE
|
||||
AND A ;!TODO ¥â ª®âà®«ï ®è¨¡®ª
|
||||
;
|
||||
.ERR: LD A,0
|
||||
LD (FATCASH.Update),A
|
||||
LD (FatCache.Update),A
|
||||
RET NC
|
||||
POP HL
|
||||
; CF = 1
|
||||
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
|
||||
.Update EQU FATCASH+1
|
||||
MAX_CLU: WORD #0FF0 ; ¬ ªá. ç¨á«® ª« áâ¥à®¢ FAT12 (¡¥§ á«ã¦.)
|
||||
|
||||
FatCache: WORD #0000
|
||||
.Block EQU FatCache
|
||||
.Update EQU FatCache+1
|
||||
FAT_Max_Cluster: WORD #0FF0 ; Ź Şá. ç¨áŤŽ ŞŤ áâĽŕŽ˘ FAT12 (ĄĽ§ áŤăŚ.)
|
||||
|
||||
;//MODULE: FAT_X
|
||||
;[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
|
||||
;
|
||||
@ -1 +1 @@
|
||||
621
|
||||
734
|
||||
@ -9,6 +9,31 @@
|
||||
|
||||
;
|
||||
;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
|
||||
DEFINE MAX_RAMDRIVES 16
|
||||
DEFINE NeedSafePort_Y 1
|
||||
|
||||
@ -60,6 +60,7 @@ RUN_COMMAND:
|
||||
; c - ¤«¨ áâப¨ á ª®¬ ¤®©
|
||||
; ‚ë室: CF=1 - ¢ HL ¤à¥á ª«îç ¨á¯®«¥¨¥
|
||||
; CF=0 - ¥â ®¯®§ ®£® ª«îç
|
||||
; !FIXIT ¯¥א¥¤¥« גל םגד וא¥ל
|
||||
RUN_OPTION:
|
||||
.cont: EX DE,HL
|
||||
LD B,C
|
||||
|
||||
Loading…
Reference in New Issue
Block a user