This commit is contained in:
Anatoliy Belyanskiy 2023-09-17 04:13:36 +10:00
parent 8a1abd44ab
commit 615d9cb2e2
6 changed files with 95 additions and 74 deletions

View File

@ -547,7 +547,7 @@ ADD_DE2 DJNZ ADD_DE1
RET
;-----------------
;!TODO сЄЅЋ ть этЎ Ќ ЊрЎс ЌЈ ЈЋЈ Ј­ЊЋюЄ ЌЈ у­ЈЂЅрс Ћь­ыЌЈ. ЏЎЂтЎряются Ђ ЄЎсЅ Ј Ѕщё ЃЄЅ-тЎ
; HL - CLUSTER
; DE - (CLUSTER)
R_F_FAT: PUSH HL

View File

@ -174,12 +174,12 @@ BLOKRD0 POP BC
;HL:DE - FP (in sectors)
; B - Amount sectors
BLOK_RD: PUSH BC
LD (READMEM),IX
LD (READ.MEM),IX
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
LD C,A
LD B,0
LD B,0 ;!FIXIT
;HL:DE / BC => DE:IX HL-OSTATOK
CALL DIV_for_SPC ;!FIXIT § ¬¥­¨âì ¢ë§®¢ HLDE/BC ­  HLDE/C
CALL DIV_for_SPC
;!FIXIT ¤ «¥¥ § â®çª  ­  â®, çâ® ¢ DE ¢á¥£¤  0 - à §¤¥« ­¥ ¡®«ìè¥ 2Gb
LD B,XH
LD C,XL
@ -272,19 +272,19 @@ BLOKRD3 LD A,B ; /
ADD IX,DE
JR NC,BLOKRD4
INC HL
BLOKRD4 LD DE,(READMEM)
BLOKRD4 LD DE,(READ.MEM)
LD A,(FatBuffer.DRIVE)
LD B,C
LD C,Dss.DRV.Read
RST ToDSS.DRV
JP C,BLOKRD0
POP BC
LD HL,(READMEM)
LD HL,(READ.MEM)
LD DE,(BootSector.B_P_S)
BLOKRD5 ADD HL,DE
DEC C
JR NZ,BLOKRD5
LD (READMEM),HL
LD (READ.MEM),HL
POP DE
LD A,B
OR A
@ -309,19 +309,19 @@ BLOKRD7 EX DE,HL
PUSH HL
PUSH BC
CALL NSECTOR
LD DE,(READMEM)
LD DE,(READ.MEM)
LD A,(FatBuffer.DRIVE)
LD B,C
LD C,Dss.DRV.Read
RST ToDSS.DRV
JP C,BLOKRD0
POP BC
LD HL,(READMEM)
LD HL,(READ.MEM)
LD DE,(BootSector.B_P_S)
BLOKRD8 ADD HL,DE
DEC C
JR NZ,BLOKRD8
LD (READMEM),HL
LD (READ.MEM),HL
POP DE
JR BLOKRD6
@ -344,7 +344,7 @@ BLOKWR0 POP BC
;HL:DE - FP (in sectors)
; B - Amount sectors
BLOK_WR PUSH BC
LD (READMEM),IX
LD (READ.MEM),IX
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
LD C,A
LD B,0
@ -457,19 +457,19 @@ BLOKWR3 LD A,B
ADD IX,DE
JR NC,BLOKWR4
INC HL
BLOKWR4 LD DE,(READMEM)
BLOKWR4 LD DE,(READ.MEM)
LD A,(FatBuffer.DRIVE)
LD B,C
LD C,Dss.DRV.Write
RST ToDSS.DRV
JP C,BLOKWR0
POP BC
LD HL,(READMEM)
LD HL,(READ.MEM)
LD DE,(BootSector.B_P_S)
BLOKWR5 ADD HL,DE
DEC C
JR NZ,BLOKWR5
LD (READMEM),HL
LD (READ.MEM),HL
POP DE
LD A,B
OR A
@ -499,19 +499,19 @@ BLOKWR9 POP BC
PUSH HL
PUSH BC
CALL NSECTOR
LD DE,(READMEM)
LD DE,(READ.MEM)
LD A,(FatBuffer.DRIVE)
LD B,C
LD C,Dss.DRV.Write
RST ToDSS.DRV
JP C,BLOKWR0
POP BC
LD HL,(READMEM)
LD HL,(READ.MEM)
LD DE,(BootSector.B_P_S)
BLOKWR8 ADD HL,DE
DEC C
JR NZ,BLOKWR8
LD (READMEM),HL
LD (READ.MEM),HL
POP DE
JR BLOKWR6
@ -521,7 +521,7 @@ BLOKWRA POP BC
RET
TSTSIZE XOR A
LD (READCOD),A
LD (READ.COD),A
LD L,(IY+32) ;FP LOW _sFM.F_POSITION
LD H,(IY+33)
ADD HL,DE
@ -545,25 +545,24 @@ TSTSIZE XOR A
SBC HL,DE ;VERY BIG
EX DE,HL
LD A,#FF
LD (READCOD),A
LD (READ.COD),A
RET
; HL - ADDRESS
; DE - SIZE
; A - FM
READ: LD (R_POINT),HL
LD (S_POINT),HL
LD (.S_POINT),HL
CALL SET_FM
RET C
CALL TSTSIZE
LD A,D
OR E
JP Z,NOREAD ;!FIXIT ¬®¦­® ¯¥à¥­¥á⨠¢ ­ ç «® ¯à®æ¥¤ãàë
JP Z,.NOREAD ;!FIXIT ¬®¦­® ¯¥à¥­¥á⨠¢ ­ ç «® ¯à®æ¥¤ãàë
PUSH DE
LD A,(IY+_sFM.DRIVE)
CALL OPENDSK
;
JP C,RPERR1
JP C,.ERR_1
;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å
; LD C,(IY+_sFM.F_POSITION)
; LD E,(IY+_sFM.F_POSITION+1)
@ -594,18 +593,18 @@ READ: LD (R_POINT),HL
;
;LD A,B
OR C
JP NZ,ROV1
ROV4: POP BC
JP NZ,.ROV1
.ROV4: POP BC
PUSH BC
SRL B
JR Z,ROV2
LD (SECTORH),HL
LD (SECTORL),DE
JR Z,.ROV2
LD (.SECTORH),HL
LD (.SECTORL),DE
LD IX,(R_POINT)
CALL BLOK_RD
JP C,RPERR1
JP C,.ERR_1
LD DE,(R_POINT)
READMEM+1: LD HL,0 // LD HL,(READMEM)
.MEM+1: LD HL,0 // LD HL,(READMEM)
AND A
SBC HL,DE
LD C,H
@ -613,18 +612,18 @@ READMEM+1: LD HL,0 // LD HL,(READMEM)
ADD HL,DE
LD (R_POINT),HL
SRL C
SECTORL+1: LD HL,0 // LD HL,(SECTORL)
.SECTORL+1: LD HL,0 // LD HL,(SECTORL)
ADD HL,BC
EX DE,HL
SECTORH+1: LD HL,0 // LD HL,(SECTORH)
.SECTORH+1: LD HL,0 // LD HL,(SECTORH)
LD C,B
ADC HL,BC
ROV2: POP BC
.ROV2: POP BC
LD A,B
AND #01
LD B,A
OR C
JP Z,ROV6
JP Z,.ROV6
PUSH BC
LD IX,BUFFER+#C000
LD B,1
@ -636,14 +635,14 @@ ROV2: POP BC
POP BC
LD C,SLOT3
OUT (C),B
JP C,RPERR1
JP C,.ERR_1
LD HL,BUFFER
LD DE,(R_POINT)
POP BC
LDIR
LD (R_POINT),DE
ROV6:
S_POINT+1: LD HL,0
.ROV6:
.S_POINT+1: LD HL,0
LD DE,(R_POINT)
EX DE,HL
AND A
@ -655,12 +654,11 @@ S_POINT+1: LD HL,0
LD HL,0
CALL MOVE_FP.F_current
POP DE
NOREAD:
READCOD+1: LD A,0
.NOREAD:
.COD+1: LD A,0
OR A
RET
ROV1: PUSH BC
.ROV1: PUSH BC
PUSH HL
PUSH DE
LD IX,BUFFER+#C000
@ -674,7 +672,7 @@ ROV1: PUSH BC
LD C,SLOT3
OUT (C),B
POP HL
JP C,RPERR3
JP C,.ERR_3
LD BC,1
ADD HL,BC
EX DE,HL
@ -691,23 +689,22 @@ ROV1: PUSH BC
POP HL
AND A
SBC HL,BC
JR NC,ROV3
JR NC,.ROV3
ADD HL,BC
LD B,H
LD C,L
LD HL,0
ROV3: PUSH HL
.ROV3: PUSH HL
LD HL,BUFFER
ADD HL,DE
LD DE,(R_POINT)
LDIR
LD (R_POINT),DE
EXX
JP ROV4
RPERR3: POP HL
RPERR2: POP HL
RPERR1: POP BC
JP .ROV4
.ERR_3: POP HL
.ERR_2: POP HL
.ERR_1: POP BC
SCF
RET
@ -726,7 +723,7 @@ RD_ONLY: POP DE
; DE - SIZE
; A - FM
WRITE: LD (R_POINT),HL
LD (S_POINT),HL
LD (READ.S_POINT),HL
PUSH DE
CALL SET_FM
JP C,PWERR1
@ -818,7 +815,7 @@ WOV2: POP BC
LD C,SLOT3
OUT (C),B
RET C
WOV6: LD DE,(S_POINT)
WOV6: LD DE,(READ.S_POINT)
LD HL,(R_POINT)
AND A
SBC HL,DE
@ -922,8 +919,8 @@ WOV3: PUSH HL
; ADC HL,DE
; RET
/////////////////////////////////////
; HL - CLUSTER
; HL:IX - SECTOR
; in: HL - CLUSTER
; out: HL:IX - SECTOR
NSECTOR: DEC HL
DEC HL
LD DE,0

View File

@ -289,27 +289,39 @@ RD_BPB: LD C,SLOT3
LD (FatBuffer.DIR_S_S),A
ADD HL,BC ; Start DATA area
LD (FatBuffer.DAT_FRM),HL
;LD HL,0
LD H,B ; âãâ ¢ B ­®«ì ¤®«¦¥­ ¡ëâì
LD L,B
LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sector
LD B,(IY+_sBOOT_SEC.B_P_S+1)
LD A,(BootSector.S_P_C)
;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer
////////////////////////////////////////////////////////////////////////
IF COMPILE_UNUSED_CODE
;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer
;NEXTAD3
.loop3: ADD HL,BC ; calc. cluster size
DEC A
JR NZ,.loop3
;LD HL,0
;LD H,B ; âãâ ¢ B ­®«ì ¤®«¦¥­ ¡ëâì
;LD L,B
;LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sector
;LD B,(IY+_sBOOT_SEC.B_P_S+1)
LD L,(IY+_sBOOT_SEC.B_P_S) ; Size sector
LD H,(IY+_sBOOT_SEC.B_P_S+1)
LD A,(BootSector.S_P_C)
;NEXTAD3
; .loop3: ADD HL,BC ; calc. cluster size
; DEC A
; JR NZ,.loop3
;!TODO ¯à®¢¥à¨âì ¯à ¢¨«ì­® «¨ áç¨â ¥â
XOR 1 ; calc. cluster size
JR Z,.loop3.end
RRA
.loop3: ADD HL,HL
RRCA
JP NC,.loop3
.loop3.end:
;
LD (FatBuffer.CLU_LEN),HL
EX DE,HL
LD HL,#3FFF ;!TODO FATcacheSize
XOR A
;NEXTAD4
;XOR A
; A = 0
;NEXTAD4 ;!FIXIT ®¯â¨¬¨§¨à®¢ âì ª®£¤  ¯®­ ¤®¡¨âáï
.loop4: INC A
JP Z,DOS_X_Error.UnknownBPB
SBC HL,DE
@ -346,6 +358,11 @@ RD_BPB: LD C,SLOT3
.BPB_FAT:
LD (FatBuffer.FAT_TYP),A
LD (FatBuffer.ENDCLUS),HL
;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer
////////////////////////////////////////////////////////////////////////
IF COMPILE_UNUSED_CODE
LD HL,0
LD C,(IY+_sBOOT_SEC.S_P_T) ; Sector per track
LD B,(IY+_sBOOT_SEC.S_P_T+1)
@ -355,6 +372,8 @@ RD_BPB: LD C,SLOT3
DEC A
JR NZ,.BPB_L1
LD (FatBuffer.S_X_H),HL
ENDIF
////////////////////////////////////////////////////////////////////////
LD DE,(FatBuffer.DAT_FRM)
; LD E,(IY+#1C) ;Hidden sec

View File

@ -50,8 +50,8 @@ INC_FA2 CALL R_F_FAT
;R01
; HL - CLUSTER
; DE - (CLUSTER)
; IN: HL - CLUSTER
; OUT: DE - (CLUSTER)
;!FIXIT ¤ ŤĽĽ § âŽçŞ  ­  âŽ, ç⎠˘ DE ˘áĽŁ¤  0 - ŕ §¤ĽŤ ­Ľ ĄŽŤěčĽ 2Gb
R_F_FAT:
EX DE,HL
@ -85,8 +85,13 @@ R_F_F16:
;
AND #0F ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
;!TEST
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
CP C
//LD C,A
//LD A,(FATCASH.Block)
//CP C
;
CALL NZ,RE_FAT ; A != C - READ NEW BLOCK FAT
LD DE,FAT
ADD HL,DE

View File

@ -1 +1 @@
275
280

@ -1 +1 @@
Subproject commit cf19a287a2cfe1946de5c1d50a255c43ae4fc390
Subproject commit b593cb606636c961e49597b9b1e5b6ee72d191c9