mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
Saving in FM offset in file and it's cluster on disk
This commit is contained in:
parent
e542bc0bd3
commit
d8e13bc4b5
@ -561,10 +561,8 @@ ADD_DE2 DJNZ ADD_DE1
|
|||||||
;-----------------
|
;-----------------
|
||||||
|
|
||||||
; HL - CLUSTER
|
; HL - CLUSTER
|
||||||
|
|
||||||
; DE - (CLUSTER)
|
; DE - (CLUSTER)
|
||||||
|
R_F_FAT: PUSH HL
|
||||||
R_F_FAT PUSH HL
|
|
||||||
LD A,(FAT_TYP)
|
LD A,(FAT_TYP)
|
||||||
CP "2"
|
CP "2"
|
||||||
JP Z,R_F_F12
|
JP Z,R_F_F12
|
||||||
|
|||||||
@ -654,7 +654,10 @@ TMPNAME: DB ' ',#00 ; 12
|
|||||||
;!TODO ᤥ« âì ¤«ï ª ¦¤®£® ¤à ©¢ § ¯®¬¨ ¨¥ ⥪ã饩 ¤¨à४â®à¨¨, ¯®ª âãâ § £«ãèª
|
;!TODO ᤥ« âì ¤«ï ª ¦¤®£® ¤à ©¢ § ¯®¬¨ ¨¥ ⥪ã饩 ¤¨à४â®à¨¨, ¯®ª âãâ § £«ãèª
|
||||||
; RestoreDIR:
|
; RestoreDIR:
|
||||||
CHNDISK:
|
CHNDISK:
|
||||||
CALL OPENDSK
|
;!TEST
|
||||||
|
CALL OPENDSK
|
||||||
|
;CALL OPENDSK.force
|
||||||
|
;
|
||||||
;????? R10
|
;????? R10
|
||||||
RET C
|
RET C
|
||||||
;LD HL,DIRSPEC+1
|
;LD HL,DIRSPEC+1
|
||||||
@ -686,7 +689,7 @@ OPENDSK:
|
|||||||
JR Z,.exit
|
JR Z,.exit
|
||||||
LD A,C
|
LD A,C
|
||||||
;
|
;
|
||||||
PUSH AF
|
.force: PUSH AF
|
||||||
LD C,Dss.DRV.Open
|
LD C,Dss.DRV.Open
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
POP BC
|
POP BC
|
||||||
|
|||||||
195
DSS/DOS_FM.ASM
195
DSS/DOS_FM.ASM
@ -41,6 +41,7 @@ FM_BUF: _sFM
|
|||||||
BLOCK (FMCOUNT-1)*FM_BUF.Size, 0
|
BLOCK (FMCOUNT-1)*FM_BUF.Size, 0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
; ¢ë室¥ ¡¥§ ®è¨¡®ª IY 㪠§ë¢ ¥â ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||||
MACRO _mFM_FIND
|
MACRO _mFM_FIND
|
||||||
CP FMCOUNT+1
|
CP FMCOUNT+1
|
||||||
JR NC,ABS_FM
|
JR NC,ABS_FM
|
||||||
@ -138,6 +139,10 @@ MOVE_F1 ADD IX,BC
|
|||||||
LD (IY+34),L
|
LD (IY+34),L
|
||||||
LD (IY+35),H
|
LD (IY+35),H
|
||||||
XOR A
|
XOR A
|
||||||
|
;!TEST SAVE CLUSTER AFTER READ
|
||||||
|
;LD (IY+_sFM.RESERVED_L),A
|
||||||
|
;LD (IY+_sFM.RESERVED_L+1),A
|
||||||
|
;
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;FP COMPARE
|
;FP COMPARE
|
||||||
@ -158,8 +163,11 @@ MOVE_CP LD L,(IY+28)
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
;--------------------
|
;--------------------
|
||||||
|
ECL2:
|
||||||
ECL2 POP BC
|
;!TEST SAVE CLUSTER AFTER READ
|
||||||
|
POP BC
|
||||||
|
;
|
||||||
|
POP BC
|
||||||
POP DE
|
POP DE
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
@ -170,32 +178,91 @@ BLOKRD0 POP BC
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
;READ SECTORS OF FILE
|
;READ SECTORS OF FILE
|
||||||
;HL:DE - FP (in sectors)
|
;HL:DE - FP (in sectors)
|
||||||
; B - Amount sectors
|
; B - Amount sectors
|
||||||
BLOK_RD PUSH BC
|
BLOK_RD: PUSH BC
|
||||||
LD (READMEM),IX
|
LD (READMEM),IX
|
||||||
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
|
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
|
||||||
LD C,A
|
LD C,A
|
||||||
LD B,0
|
LD B,0
|
||||||
|
;HL:DE / BC => DE:IX HL-OSTATOK
|
||||||
CALL DIV32 ;!FIXIT § ¬¥¨âì ¢ë§®¢ HLDE/BC HLDE/C
|
CALL DIV32 ;!FIXIT § ¬¥¨âì ¢ë§®¢ HLDE/BC HLDE/C
|
||||||
|
;!FIXIT ¤ «¥¥ § â®çª â®, çâ® ¢ DE ¢á¥£¤ 0 - à §¤¥« ¥ ¡®«ìè¥ 2Gb
|
||||||
LD B,XH
|
LD B,XH
|
||||||
LD C,XL
|
LD C,XL
|
||||||
PUSH HL ;RESIDUE
|
PUSH HL ;RESIDUE
|
||||||
LD L,(IY+26) ;START CLUSTER
|
LD L,(IY+_sFM.ST_CLUSTER) ;START CLUSTER
|
||||||
LD H,(IY+27)
|
LD H,(IY+_sFM.ST_CLUSTER+1)
|
||||||
LD A,H
|
LD A,H
|
||||||
OR L
|
OR L
|
||||||
JR NZ,BLOKRD2
|
;!TEST SAVE CLUSTER AFTER READ
|
||||||
JR ECL2 ;R01 JR BLOKRD0
|
;JR NZ,BLOKRD2
|
||||||
BLOKRD1 PUSH BC
|
PUSH BC
|
||||||
|
JR NZ,.testFunc
|
||||||
|
;
|
||||||
|
JP ECL2 ;R01 JR BLOKRD0
|
||||||
|
|
||||||
|
.testFunc:
|
||||||
|
;!TEST SAVE CLUSTER AFTER READ
|
||||||
|
LD E,(IY+_sFM.RESERVED_L)
|
||||||
|
LD D,(IY+_sFM.RESERVED_H)
|
||||||
|
LD A,D
|
||||||
|
OR E
|
||||||
|
JR Z,BLOKRD2
|
||||||
|
|
||||||
|
PUSH DE
|
||||||
|
PUSH HL
|
||||||
|
PUSH BC
|
||||||
|
LD E,(IY+_sFM.RESERVED_CL)
|
||||||
|
LD D,(IY+_sFM.RESERVED_CH)
|
||||||
|
LD A,D
|
||||||
|
OR E
|
||||||
|
JR Z,.noOptimization_1
|
||||||
|
|
||||||
|
POP HL
|
||||||
|
AND A
|
||||||
|
SBC HL,DE
|
||||||
|
JR C,.noOptimization_2
|
||||||
|
|
||||||
|
LD C,L
|
||||||
|
LD B,H
|
||||||
|
POP HL
|
||||||
|
POP DE
|
||||||
|
|
||||||
|
|
||||||
|
EX DE,HL
|
||||||
|
JP BLOKRD2
|
||||||
|
;
|
||||||
|
.noOptimization_1:
|
||||||
|
POP BC
|
||||||
|
.noOptimization_2:
|
||||||
|
POP HL
|
||||||
|
POP DE
|
||||||
|
JP BLOKRD2
|
||||||
|
|
||||||
|
BLOKRD1:
|
||||||
|
PUSH BC
|
||||||
CALL R_F_FAT
|
CALL R_F_FAT
|
||||||
POP BC
|
POP BC
|
||||||
JR C,ECL2 ;R01
|
JR C,ECL2 ;R01
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
DEC BC
|
DEC BC
|
||||||
BLOKRD2 LD A,B
|
|
||||||
|
|
||||||
|
|
||||||
|
BLOKRD2:
|
||||||
|
LD A,B ; ‚‘ - ᬥ饨¥ ¢ãâà¨ ä ©« ¢ ª« áâ¥à å
|
||||||
OR C
|
OR C
|
||||||
JR NZ,BLOKRD1
|
JR NZ,BLOKRD1
|
||||||
|
|
||||||
|
;!TEST SAVE CLUSTER AFTER READ
|
||||||
|
LD (IY+_sFM.RESERVED_L),L
|
||||||
|
LD (IY+_sFM.RESERVED_H),H
|
||||||
|
POP BC
|
||||||
|
LD (IY+_sFM.RESERVED_CL),C
|
||||||
|
LD (IY+_sFM.RESERVED_CH),B
|
||||||
|
;
|
||||||
|
|
||||||
POP DE
|
POP DE
|
||||||
POP BC
|
POP BC
|
||||||
LD A,(BootSector.S_P_C)
|
LD A,(BootSector.S_P_C)
|
||||||
@ -255,7 +322,7 @@ BLOKRD7 EX DE,HL
|
|||||||
LD DE,(READMEM)
|
LD DE,(READMEM)
|
||||||
LD A,(FatBuffer.DRIVE)
|
LD A,(FatBuffer.DRIVE)
|
||||||
LD B,C
|
LD B,C
|
||||||
LD C,5
|
LD C,Dss.DRV.Read
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
JP C,BLOKRD0
|
JP C,BLOKRD0
|
||||||
POP BC
|
POP BC
|
||||||
@ -407,23 +474,23 @@ BLOKWRA POP BC
|
|||||||
|
|
||||||
TSTSIZE XOR A
|
TSTSIZE XOR A
|
||||||
LD (READCOD),A
|
LD (READCOD),A
|
||||||
LD L,(IY+32) ;FP LOW
|
LD L,(IY+32) ;FP LOW _sFM.F_POSITION
|
||||||
LD H,(IY+33)
|
LD H,(IY+33)
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
EXX
|
EXX
|
||||||
LD DE,0
|
LD DE,0
|
||||||
LD L,(IY+34) ;FP HIGH
|
LD L,(IY+34) ;FP HIGH
|
||||||
LD H,(IY+35)
|
LD H,(IY+35)
|
||||||
ADC HL,DE
|
ADC HL,DE
|
||||||
EXX ;HL':HL - NEW FP
|
EXX ;HL':HL - NEW FP
|
||||||
LD C,(IY+28)
|
LD C,(IY+28) ; _sFM.F_SIZE
|
||||||
LD B,(IY+29) ;SIZE LOW
|
LD B,(IY+29) ;SIZE LOW
|
||||||
AND A
|
AND A
|
||||||
SBC HL,BC
|
SBC HL,BC
|
||||||
EXX
|
EXX
|
||||||
LD C,(IY+30) ;SIZE HIGH
|
LD C,(IY+30) ;SIZE HIGH
|
||||||
LD B,(IY+31)
|
LD B,(IY+31)
|
||||||
SBC HL,BC
|
SBC HL,BC
|
||||||
EXX
|
EXX
|
||||||
RET C ;OK READ ALL
|
RET C ;OK READ ALL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -436,38 +503,40 @@ TSTSIZE XOR A
|
|||||||
; HL - ADDRESS
|
; HL - ADDRESS
|
||||||
; DE - SIZE
|
; DE - SIZE
|
||||||
; A - FM
|
; A - FM
|
||||||
|
READ: LD (R_POINT),HL
|
||||||
READ LD (R_POINT),HL
|
|
||||||
LD (S_POINT),HL
|
LD (S_POINT),HL
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
RET C
|
RET C
|
||||||
CALL TSTSIZE
|
CALL TSTSIZE
|
||||||
LD A,D
|
LD A,D
|
||||||
OR E
|
OR E
|
||||||
JP Z,NOREAD
|
JP Z,NOREAD ;!FIXIT ¬®¦® ¯¥à¥¥á⨠¢ ç «® ¯à®æ¥¤ãàë
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD A,(IY+_sFM.DRIVE)
|
LD A,(IY+_sFM.DRIVE)
|
||||||
;!TEST CHNDISK OPENDSK
|
;!TEST CHNDISK OPENDSK
|
||||||
CALL OPENDSK
|
CALL OPENDSK
|
||||||
;
|
;
|
||||||
JP C,RPERR1
|
JP C,RPERR1
|
||||||
LD C,(IY+_sFM.F_POSITION)
|
;<3B> áçñâ á¬¥é¥¨ï ¢ ᥪâ®à å
|
||||||
LD E,(IY+_sFM.F_POSITION+1)
|
LD C,(IY+_sFM.F_POSITION)
|
||||||
LD A,E
|
LD E,(IY+_sFM.F_POSITION+1)
|
||||||
AND #01
|
LD A,E
|
||||||
LD B,A
|
AND #01
|
||||||
LD D,(IY+_sFM.F_POSITION+2)
|
LD B,A
|
||||||
LD L,(IY+_sFM.F_POSITION+3)
|
LD D,(IY+_sFM.F_POSITION+2)
|
||||||
LD H,0
|
LD L,(IY+_sFM.F_POSITION+3)
|
||||||
OR A
|
LD H,0
|
||||||
RR L
|
OR A
|
||||||
RR D
|
RR L
|
||||||
RR E ;HL:DE FP (in sectors)
|
RR D
|
||||||
; BC FP residue (in bytes)
|
RR E
|
||||||
|
;HL:DE FP (in sectors)
|
||||||
|
;BC FP residue (in bytes)
|
||||||
|
;
|
||||||
LD A,B
|
LD A,B
|
||||||
OR C
|
OR C
|
||||||
JP NZ,ROV1
|
JP NZ,ROV1
|
||||||
ROV4 POP BC
|
ROV4: POP BC
|
||||||
PUSH BC
|
PUSH BC
|
||||||
SRL B
|
SRL B
|
||||||
JR Z,ROV2
|
JR Z,ROV2
|
||||||
@ -491,7 +560,7 @@ SECTORL+1: LD HL,0 // LD HL,(SECTORL)
|
|||||||
SECTORH+1: LD HL,0 // LD HL,(SECTORH)
|
SECTORH+1: LD HL,0 // LD HL,(SECTORH)
|
||||||
LD C,B
|
LD C,B
|
||||||
ADC HL,BC
|
ADC HL,BC
|
||||||
ROV2 POP BC
|
ROV2: POP BC
|
||||||
LD A,B
|
LD A,B
|
||||||
AND #01
|
AND #01
|
||||||
LD B,A
|
LD B,A
|
||||||
@ -514,7 +583,6 @@ ROV2 POP BC
|
|||||||
POP BC
|
POP BC
|
||||||
LDIR
|
LDIR
|
||||||
LD (R_POINT),DE
|
LD (R_POINT),DE
|
||||||
|
|
||||||
ROV6:
|
ROV6:
|
||||||
S_POINT+1: LD HL,0 // LD HL,(S_POINT)
|
S_POINT+1: LD HL,0 // LD HL,(S_POINT)
|
||||||
LD DE,(R_POINT)
|
LD DE,(R_POINT)
|
||||||
@ -533,7 +601,7 @@ READCOD+1: LD A,0 // LD A,(READCOD)
|
|||||||
OR A
|
OR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
ROV1 PUSH BC
|
ROV1: PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD IX,BUFFER+#C000
|
LD IX,BUFFER+#C000
|
||||||
@ -569,7 +637,7 @@ ROV1 PUSH BC
|
|||||||
LD B,H
|
LD B,H
|
||||||
LD C,L
|
LD C,L
|
||||||
LD HL,0
|
LD HL,0
|
||||||
ROV3 PUSH HL
|
ROV3: PUSH HL
|
||||||
LD HL,BUFFER
|
LD HL,BUFFER
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD DE,(R_POINT)
|
LD DE,(R_POINT)
|
||||||
@ -578,19 +646,19 @@ ROV3 PUSH HL
|
|||||||
EXX
|
EXX
|
||||||
JP ROV4
|
JP ROV4
|
||||||
|
|
||||||
RPERR3 POP HL
|
RPERR3: POP HL
|
||||||
RPERR2 POP HL
|
RPERR2: POP HL
|
||||||
RPERR1 POP BC
|
RPERR1: POP BC
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
PWERR3 POP HL
|
PWERR3: POP HL
|
||||||
PWERR2 POP HL
|
PWERR2: POP HL
|
||||||
PWERR1 POP BC
|
PWERR1: POP BC
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
RD_ONLY POP DE
|
RD_ONLY: POP DE
|
||||||
LD A,DSS_Error.sys.READONLY
|
LD A,DSS_Error.sys.READONLY
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
@ -599,7 +667,7 @@ RD_ONLY POP DE
|
|||||||
; DE - SIZE
|
; DE - SIZE
|
||||||
; A - FM
|
; A - FM
|
||||||
|
|
||||||
WRITE LD (R_POINT),HL
|
WRITE: LD (R_POINT),HL
|
||||||
LD (S_POINT),HL
|
LD (S_POINT),HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
CALL SET_FM
|
CALL SET_FM
|
||||||
@ -631,7 +699,7 @@ WRITE LD (R_POINT),HL
|
|||||||
LD A,B
|
LD A,B
|
||||||
OR C
|
OR C
|
||||||
JP NZ,WOV1
|
JP NZ,WOV1
|
||||||
WOV4 POP BC
|
WOV4: POP BC
|
||||||
PUSH BC
|
PUSH BC
|
||||||
SRL B
|
SRL B
|
||||||
JR Z,WOV2
|
JR Z,WOV2
|
||||||
@ -646,7 +714,7 @@ R_POINT+2: LD IX,0 // LD IX,(R_POINT)
|
|||||||
LD C,B
|
LD C,B
|
||||||
LD HL,(R_POINT)
|
LD HL,(R_POINT)
|
||||||
LD DE,#0200
|
LD DE,#0200
|
||||||
WOV5 ADD HL,DE
|
WOV5: ADD HL,DE
|
||||||
DJNZ WOV5
|
DJNZ WOV5
|
||||||
LD (R_POINT),HL
|
LD (R_POINT),HL
|
||||||
LD B,0
|
LD B,0
|
||||||
@ -656,7 +724,7 @@ WOV5 ADD HL,DE
|
|||||||
POP HL
|
POP HL
|
||||||
LD C,B
|
LD C,B
|
||||||
ADC HL,BC
|
ADC HL,BC
|
||||||
WOV2 POP BC
|
WOV2: POP BC
|
||||||
LD A,B
|
LD A,B
|
||||||
AND #01
|
AND #01
|
||||||
LD B,A
|
LD B,A
|
||||||
@ -694,7 +762,7 @@ WOV2 POP BC
|
|||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
OUT (C),B
|
OUT (C),B
|
||||||
RET C
|
RET C
|
||||||
WOV6 LD DE,(S_POINT)
|
WOV6: LD DE,(S_POINT)
|
||||||
LD HL,(R_POINT)
|
LD HL,(R_POINT)
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
@ -717,8 +785,7 @@ WOV6 LD DE,(S_POINT)
|
|||||||
LD (IY+31),B
|
LD (IY+31),B
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
WOV1: PUSH BC
|
||||||
WOV1 PUSH BC
|
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH DE
|
PUSH DE
|
||||||
LD IX,BUFFER+#C000
|
LD IX,BUFFER+#C000
|
||||||
@ -749,7 +816,7 @@ WOV1 PUSH BC
|
|||||||
LD B,H
|
LD B,H
|
||||||
LD C,L
|
LD C,L
|
||||||
LD HL,0
|
LD HL,0
|
||||||
WOV3 PUSH HL
|
WOV3: PUSH HL
|
||||||
LD HL,BUFFER
|
LD HL,BUFFER
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD DE,(R_POINT)
|
LD DE,(R_POINT)
|
||||||
@ -782,17 +849,17 @@ WOV3 PUSH HL
|
|||||||
|
|
||||||
; HL - CLUSTER
|
; HL - CLUSTER
|
||||||
; HL:IX - SECTOR
|
; HL:IX - SECTOR
|
||||||
NSECTOR DEC HL
|
NSECTOR: DEC HL
|
||||||
DEC HL
|
DEC HL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD A,(BootSector.S_P_C)
|
LD A,(BootSector.S_P_C)
|
||||||
LD B,A
|
LD B,A
|
||||||
LD HL,0
|
LD HL,0
|
||||||
LD IX,0
|
LD IX,0
|
||||||
ADD_DE1 ADD IX,DE
|
ADD_DE1: ADD IX,DE
|
||||||
JR NC,ADD_DE2
|
JR NC,ADD_DE2
|
||||||
INC HL
|
INC HL
|
||||||
ADD_DE2 DJNZ ADD_DE1
|
ADD_DE2: DJNZ ADD_DE1
|
||||||
LD DE,(FatBuffer.DAT_FRM)
|
LD DE,(FatBuffer.DAT_FRM)
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
LD DE,#0000
|
LD DE,#0000
|
||||||
@ -800,12 +867,12 @@ ADD_DE2 DJNZ ADD_DE1
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
; HL:DE / BC => DE:IX HL-OSTATOK
|
; HL:DE / BC => DE:IX HL-OSTATOK
|
||||||
DIV32 LD XH,D
|
DIV32: LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,0
|
LD HL,0
|
||||||
LD A,#20
|
LD A,#20
|
||||||
DIV001 ADD IX,IX
|
DIV001: ADD IX,IX
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
ADC HL,HL
|
ADC HL,HL
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -816,7 +883,7 @@ DIV001 ADD IX,IX
|
|||||||
DEC A
|
DEC A
|
||||||
JR NZ,DIV001
|
JR NZ,DIV001
|
||||||
RET
|
RET
|
||||||
DIV002 INC IX
|
DIV002: INC IX
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,DIV001
|
JR NZ,DIV001
|
||||||
RET
|
RET
|
||||||
|
|||||||
@ -28,7 +28,6 @@ G_CLUS1: INC HL
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
; HL - CLUSTER
|
; HL - CLUSTER
|
||||||
|
|
||||||
INC_FAT PUSH HL
|
INC_FAT PUSH HL
|
||||||
CALL G_CLUST
|
CALL G_CLUST
|
||||||
POP DE
|
POP DE
|
||||||
@ -53,7 +52,8 @@ INC_FA2 CALL R_F_FAT
|
|||||||
|
|
||||||
; HL - CLUSTER
|
; HL - CLUSTER
|
||||||
; DE - (CLUSTER)
|
; DE - (CLUSTER)
|
||||||
R_F_FAT EX DE,HL
|
;!FIXIT ¤ «¥¥ § â®çª â®, çâ® ¢ DE ¢á¥£¤ 0 - à §¤¥« ¥ ¡®«ìè¥ 2Gb
|
||||||
|
R_F_FAT: EX DE,HL
|
||||||
LD HL,(MAX_CLU)
|
LD HL,(MAX_CLU)
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
@ -75,15 +75,17 @@ R_F_F16 LD A,H
|
|||||||
AND #0F
|
AND #0F
|
||||||
LD H,A
|
LD H,A
|
||||||
LD A,B
|
LD A,B
|
||||||
RRCA
|
; A/16
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
AND #0F ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
|
RRCA
|
||||||
ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
|
;
|
||||||
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
|
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
|
||||||
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,FAT
|
LD DE,FAT
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
@ -91,11 +93,11 @@ R_F_F16 LD A,H
|
|||||||
LD D,(HL)
|
LD D,(HL)
|
||||||
POP AF
|
POP AF
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD HL,#FFEF
|
LD HL,#FFEF ;!HARDCODE
|
||||||
XOR A ;DssErr.sys.NO_ERROR
|
XOR A ;DssErr.sys.NO_ERROR
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
POP HL
|
POP HL
|
||||||
;LD A,DssErr.sys.NO_ERROR
|
;LD A,DssErr.sys.NO_ERROR
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;R01; HL - CLUSTER
|
;R01; HL - CLUSTER
|
||||||
@ -172,7 +174,7 @@ R_F_F12 LD D,H
|
|||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
AND #07
|
AND #07
|
||||||
LD BC,(FATCASH)
|
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
|
||||||
CP C
|
CP C
|
||||||
CALL NZ,RE_FAT
|
CALL NZ,RE_FAT
|
||||||
LD DE,FAT
|
LD DE,FAT
|
||||||
@ -208,7 +210,6 @@ R_F_F02 POP AF
|
|||||||
|
|
||||||
; HL - CLUSTER
|
; HL - CLUSTER
|
||||||
; DE - (CLUSTER)
|
; DE - (CLUSTER)
|
||||||
|
|
||||||
W_T_FAT PUSH DE
|
W_T_FAT PUSH DE
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,(MAX_CLU)
|
LD HL,(MAX_CLU)
|
||||||
@ -226,7 +227,7 @@ W_T_FAT PUSH DE
|
|||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,1
|
LD A,1
|
||||||
LD (FATCASH+1),A
|
LD (FATCASH.Update),A
|
||||||
LD A,(FatBuffer.FAT_TYP)
|
LD A,(FatBuffer.FAT_TYP)
|
||||||
CP "2"
|
CP "2"
|
||||||
JP Z,W_T_F12
|
JP Z,W_T_F12
|
||||||
@ -241,11 +242,10 @@ W_T_F16:
|
|||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
AND #0F ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
|
AND #0F ; 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,(FATCASH) ; C - BLOCK FAT IN CASH
|
||||||
CP C
|
CALL NZ,RE_FAT ; A <> C - READ NEW BLOCK FAT
|
||||||
CALL NZ,RE_FAT ; A <> C - READ NEW BLOCK FAT
|
|
||||||
LD DE,FAT
|
LD DE,FAT
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
POP DE
|
POP DE
|
||||||
@ -275,7 +275,7 @@ W_T_F12 PUSH DE
|
|||||||
RLCA
|
RLCA
|
||||||
RLCA
|
RLCA
|
||||||
AND #07
|
AND #07
|
||||||
LD BC,(FATCASH)
|
LD BC,(FATCASH) ; C - BLOCK FAT IN CASH
|
||||||
CP C
|
CP C
|
||||||
CALL NZ,RE_FAT
|
CALL NZ,RE_FAT
|
||||||
LD DE,FAT
|
LD DE,FAT
|
||||||
@ -317,9 +317,9 @@ W_T_F01 SLA E
|
|||||||
|
|
||||||
;R01
|
;R01
|
||||||
; A - NEW FAT BLOCK
|
; A - NEW FAT BLOCK
|
||||||
RE_FAT PUSH HL
|
RE_FAT: PUSH HL
|
||||||
PUSH AF
|
PUSH AF
|
||||||
LD A,(FATCASH+1)
|
LD A,(FATCASH.Update)
|
||||||
OR A
|
OR A
|
||||||
CALL NZ,WR_FAT_
|
CALL NZ,WR_FAT_
|
||||||
POP AF
|
POP AF
|
||||||
@ -466,6 +466,8 @@ FATERR: POP HL
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
FATCASH: WORD #0000
|
FATCASH: WORD #0000
|
||||||
|
.Block EQU FATCASH
|
||||||
|
.Update EQU FATCASH+1
|
||||||
MAX_CLU: WORD #0FF0
|
MAX_CLU: WORD #0FF0
|
||||||
|
|
||||||
;//MODULE: FAT_X
|
;//MODULE: FAT_X
|
||||||
|
|||||||
@ -27,7 +27,9 @@ RESERVED2 BLOCK 490,0
|
|||||||
.ATTRIBUT: BYTE #10 ;+11 ATTRIBUT
|
.ATTRIBUT: BYTE #10 ;+11 ATTRIBUT
|
||||||
.RESERVED_L: BYTE 0 ;+12 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï ç⥨ï
|
.RESERVED_L: BYTE 0 ;+12 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï ç⥨ï
|
||||||
.RESERVED_H: BYTE 0 ;+13 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï § ¯¨á¨
|
.RESERVED_H: BYTE 0 ;+13 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï § ¯¨á¨
|
||||||
.RESERVED_X: BLOCK 8,0 ;+14 RESERVED
|
.RESERVED_CL: BYTE 0 ;+14 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï § ¯¨á¨
|
||||||
|
.RESERVED_CH: BYTE 0 ;+15 RESERVED; !TODO á«¥¤ãî騩 ª« áâ¥à ¤«ï § ¯¨á¨
|
||||||
|
.RESERVED_X: BLOCK 6,0 ;+16 RESERVED
|
||||||
.TIME: WORD #0000 ;+22 TIME
|
.TIME: WORD #0000 ;+22 TIME
|
||||||
.DATE: WORD #0000 ;+24 DATE
|
.DATE: WORD #0000 ;+24 DATE
|
||||||
.ST_CLUSTER: WORD #0000 ;+26 START CLUSTER
|
.ST_CLUSTER: WORD #0000 ;+26 START CLUSTER
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user