Optimized NSECTOR and RD_BPB

This commit is contained in:
Anatoliy Belyanskiy 2023-09-15 04:28:18 +10:00
parent 6224d9fcb6
commit 8a1abd44ab
7 changed files with 171 additions and 145 deletions

View File

@ -179,7 +179,7 @@ BLOK_RD: PUSH BC
LD C,A LD C,A
LD B,0 LD B,0
;HL:DE / BC => DE:IX HL-OSTATOK ;HL:DE / BC => DE:IX HL-OSTATOK
CALL DIV32 ;!FIXIT § ¬¥­¨âì ¢ë§®¢ HLDE/BC ­  HLDE/C CALL DIV_for_SPC ;!FIXIT § ¬¥­¨âì ¢ë§®¢ HLDE/BC ­  HLDE/C
;!FIXIT ¤ «¥¥ § â®çª  ­  â®, çâ® ¢ DE ¢á¥£¤  0 - à §¤¥« ­¥ ¡®«ìè¥ 2Gb ;!FIXIT ¤ «¥¥ § â®çª  ­  â®, çâ® ¢ DE ¢á¥£¤  0 - à §¤¥« ­¥ ¡®«ìè¥ 2Gb
LD B,XH LD B,XH
LD C,XL LD C,XL
@ -349,7 +349,7 @@ BLOK_WR PUSH BC
LD C,A LD C,A
LD B,0 LD B,0
;HL:DE / BC => DE:IX HL-OSTATOK ;HL:DE / BC => DE:IX HL-OSTATOK
CALL DIV32 CALL DIV_for_SPC
LD B,XH LD B,XH
LD C,XL LD C,XL
@ -565,22 +565,34 @@ READ: LD (R_POINT),HL
; ;
JP C,RPERR1 JP C,RPERR1
;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å ;<3B> áçñâ ᬥ饭¨ï ¢ ᥪâ®à å
LD C,(IY+_sFM.F_POSITION) ; LD C,(IY+_sFM.F_POSITION)
; LD E,(IY+_sFM.F_POSITION+1)
; LD A,E
; AND #01
; LD B,A
; LD D,(IY+_sFM.F_POSITION+2)
; LD L,(IY+_sFM.F_POSITION+3)
; LD H,0
; OR A
; RR L
; RR D
; RR E
LD H,0
LD L,(IY+_sFM.F_POSITION+3)
LD D,(IY+_sFM.F_POSITION+2)
LD E,(IY+_sFM.F_POSITION+1) LD E,(IY+_sFM.F_POSITION+1)
LD A,E LD A,E
AND #01 AND #01
LD B,A LD B,A
LD D,(IY+_sFM.F_POSITION+2) LD C,(IY+_sFM.F_POSITION)
LD L,(IY+_sFM.F_POSITION+3) ;OR A
LD H,0
OR A
RR L RR L
RR D RR D
RR E RR E
;HL:DE FP (in sectors) ;HL:DE FP (in sectors)
;BC FP residue (in bytes) ;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
@ -890,28 +902,58 @@ WOV3: PUSH HL
ADC HL,BC ADC HL,BC
JP WOV4 JP WOV4
////////////// OLD ////////////////
; HL - CLUSTER
; HL:IX - SECTOR
; NSECTOR: DEC HL
; DEC HL
; EX DE,HL
; LD A,(BootSector.S_P_C)
; LD B,A
; LD HL,0
; LD IX,0
; ADD_DE1: ADD IX,DE
; JR NC,ADD_DE2
; INC HL
; ADD_DE2: DJNZ ADD_DE1
; LD DE,(FatBuffer.DAT_FRM) ;first data sector
; ADD IX,DE
; LD DE,#0000
; ADC HL,DE
; RET
/////////////////////////////////////
; HL - CLUSTER ; HL - CLUSTER
; HL:IX - SECTOR ; HL:IX - SECTOR
NSECTOR: DEC HL NSECTOR: DEC HL
DEC HL DEC HL
EX DE,HL LD DE,0
LD A,(BootSector.S_P_C) LD A,(BootSector.S_P_C)
LD B,A XOR 1
LD HL,0 JR Z,.skip
LD IX,0 ;
ADD_DE1: ADD IX,DE RRA
JR NC,ADD_DE2 .loop: ADD HL,HL
INC HL RL E
ADD_DE2: DJNZ ADD_DE1 RL D
LD DE,(FatBuffer.DAT_FRM) RRCA
JP NC,.loop
;
.skip: EX DE,HL
LD XL,E
LD XH,D
LD DE,(FatBuffer.DAT_FRM) ;first data sector
ADD IX,DE ADD IX,DE
LD DE,#0000 ; A=0
LD D,A
LD E,A
ADC HL,DE ADC HL,DE
RET RET
/////////////////////////////////////
; HL:DE / C => DE:IX HL-OSTATOK (DE:BC.HL). ‹¥£ª® ¯¥à¥¤¥« âì ¯®¤ HL:DE / A => HL:DE.A ; HL:DE / C => DE:IX HL-OSTATOK (DE:BC.HL). ‹¥£ª® ¯¥à¥¤¥« âì ¯®¤ HL:DE / A => HL:DE.A
DIV32: LD A,C DIV_for_SPC:
LD A,C
DEC A DEC A
JR Z,.exit JR Z,.exit
; ;
@ -923,7 +965,7 @@ DIV32: LD A,C
.loop: SRL H : RR L .loop: SRL H : RR L
RR D : RR E RR D : RR E
RRCA RRCA
JR NC,.loop JP NC,.loop
LD A,B LD A,B
; ;
.exit: LD XH,D .exit: LD XH,D

View File

@ -210,25 +210,25 @@ RD_BPB: LD C,SLOT3
RST ToDSS.DRV RST ToDSS.DRV
POP BC POP BC
OUT (C),B OUT (C),B
JP C,RDERR1 JP C,DOS_X_Error.Not_ready
PUSH IY PUSH IY
LD DE,#AA55 ;R05 LD DE,#AA55 ;R05
;R08 LD HL,(BOOT+510) ;R07 LD HL,(SECBUF+510) ;R08 ;R07
LD HL,(SECBUF+510) ;R08 ;R05
AND A ;R05 AND A
SBC HL,DE ;R05 SBC HL,DE
JP NZ,ERR_BPB ;R05 JP NZ,DOS_X_Error.UnknownBPB
;R08 ;R08
LD HL,SECBUF ;R08 LD HL,SECBUF
LD DE,BootSector ;R08 LD DE,BootSector
LD BC,_sBOOT_SEC ;R08 size LD BC,_sBOOT_SEC ; size
LDIR LDIR
;R08 ;
LD IY,BootSector LD IY,BootSector
LD A,(IY+_sBOOT_SEC.ID_FORM) LD A,(IY+_sBOOT_SEC.ID_FORM)
CP #F0 CP #F0
JP C,ERR_BPB JP C,DOS_X_Error.UnknownBPB
;!TEST ;!TEST
;LD HL,0 ; calc. first sector FAT ;LD HL,0 ; calc. first sector FAT
@ -250,17 +250,18 @@ RD_BPB: LD C,SLOT3
LD D,(IY+_sBOOT_SEC.S_P_F+1) LD D,(IY+_sBOOT_SEC.S_P_F+1)
LD A,(BootSector.FAT_NUM) ; amount FATs LD A,(BootSector.FAT_NUM) ; amount FATs
CP 1 CP 1
JR Z,C_DATA1 JR Z,.loop1
DEC A DEC A
ADD HL,DE ADD HL,DE
LD (FatBuffer.FAT2_XX),HL LD (FatBuffer.FAT2_XX),HL
C_DATA1 ADD HL,DE ;C_DATA1
.loop1: ADD HL,DE
DEC A DEC A
JR NZ,C_DATA1 JR NZ,.loop1
LD (FatBuffer.DIR_FRM),HL ; first sector DIR
LD C,(IY+#0B) ; Size sectors LD (FatBuffer.DIR_FRM),HL ; first sector DIR
LD B,(IY+#0C) LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sectors
LD B,(IY+_sBOOT_SEC.B_P_S+1)
RL C RL C
RL B RL B
RL C RL C
@ -276,11 +277,12 @@ C_DATA1 ADD HL,DE
EX DE,HL EX DE,HL
DEC HL DEC HL
XOR A XOR A
NEXTAD2 ;NEXTAD2
INC A .loop2: INC A
JP Z,ERR_BPB JP Z,DOS_X_Error.UnknownBPB
SBC HL,BC SBC HL,BC
JR NC,NEXTAD2 JR NC,.loop2
EX DE,HL EX DE,HL
LD C,A ; A - sectors in DIR LD C,A ; A - sectors in DIR
LD B,0 LD B,0
@ -290,58 +292,68 @@ NEXTAD2
;LD HL,0 ;LD HL,0
LD H,B ; âãâ ¢ B ­®«ì ¤®«¦¥­ ¡ëâì LD H,B ; âãâ ¢ B ­®«ì ¤®«¦¥­ ¡ëâì
LD L,B LD L,B
LD C,(IY+#0B) ; Size sector LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sector
LD B,(IY+#0C) LD B,(IY+_sBOOT_SEC.B_P_S+1)
LD A,(BootSector.S_P_C) LD A,(BootSector.S_P_C)
NEXTAD3
ADD HL,BC ; calc. cluster size ////////////////////////////////////////////////////////////////////////
IF COMPILE_UNUSED_CODE
;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer
;NEXTAD3
.loop3: ADD HL,BC ; calc. cluster size
DEC A DEC A
JR NZ,NEXTAD3 JR NZ,.loop3
LD (FatBuffer.CLU_LEN),HL LD (FatBuffer.CLU_LEN),HL
EX DE,HL EX DE,HL
LD HL,#3FFF LD HL,#3FFF ;!TODO FATcacheSize
XOR A XOR A
NEXTAD4 ;NEXTAD4
INC A .loop4: INC A
JP Z,ERR_BPB JP Z,DOS_X_Error.UnknownBPB
SBC HL,DE SBC HL,DE
JR NC,NEXTAD4 JR NC,.loop4
LD (FatBuffer.C_P_B),A ; A - Clusters per bank (16k) LD (FatBuffer.C_P_B),A ; A - Clusters per bank (16k)
ENDIF
////////////////////////////////////////////////////////////////////////
LD HL,BootSector.ID_FAT LD HL,BootSector.ID_FAT
LD DE,FatBuffer.MSG LD DE,FatBuffer.MSG
LD B,3 LD B,3
R_BPBL1 ;R_BPBL1
LD A,(DE) .loop5: LD A,(DE)
CP (HL) CP (HL)
JP NZ,IBMDOS_ JP NZ,.IBM_DOS
INC HL INC HL
INC DE INC DE
DJNZ R_BPBL1 DJNZ .loop5
FID: LD A,(HL) ;FID
.loop6: LD A,(HL)
INC HL INC HL
CP ' ' CP ' '
JR Z,FID JR Z,.loop6
CP '1' CP '1'
JP NZ,ERR_BPB JP NZ,DOS_X_Error.UnknownBPB
LD A,(HL) LD A,(HL)
CP '6' ; FAT16 CP '6' ; FAT16
LD HL,#FFFF LD HL,#FFFF
JR Z,BPB_FAT JR Z,.BPB_FAT
CP '2' ; FAT12 CP '2' ; FAT12
JP NZ,ERR_BPB JP NZ,DOS_X_Error.UnknownBPB
LD HL,#0FFF LD HL,#0FFF
BPB_FAT: .BPB_FAT:
LD (FatBuffer.FAT_TYP),A LD (FatBuffer.FAT_TYP),A
LD (FatBuffer.ENDCLUS),HL LD (FatBuffer.ENDCLUS),HL
LD HL,0 LD HL,0
LD C,(IY+_sBOOT_SEC.S_P_T) ; Sector per track LD C,(IY+_sBOOT_SEC.S_P_T) ; Sector per track
LD B,(IY+_sBOOT_SEC.S_P_T+1) LD B,(IY+_sBOOT_SEC.S_P_T+1)
LD A,(BootSector.HEADS) LD A,(BootSector.HEADS)
BPB_L1: ; calc. sector per cylinder .BPB_L1: ; calc. sector per cylinder
ADD HL,BC ADD HL,BC
DEC A DEC A
JR NZ,BPB_L1 JR NZ,.BPB_L1
LD (FatBuffer.S_X_H),HL LD (FatBuffer.S_X_H),HL
LD DE,(FatBuffer.DAT_FRM) LD DE,(FatBuffer.DAT_FRM)
@ -354,30 +366,30 @@ BPB_L1: ; calc. sector per cylinder
LD H,(IY+_sBOOT_SEC.S_P_D+1) LD H,(IY+_sBOOT_SEC.S_P_D+1)
LD A,H LD A,H
OR L OR L
JP NZ,HDDSMAL JP NZ,.HDDSMAL
LD L,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS) LD L,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS)
LD H,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+1) LD H,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+1)
LD C,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+2) LD C,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+2)
LD B,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+3) LD B,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+3)
AND A AND A
SBC HL,DE SBC HL,DE
JP NC,HDDBIG JP NC,.HDDBIG
DEC BC DEC BC
JP HDDBIG JP .HDDBIG
HDDSMAL: .HDDSMAL:
;AND A ;âãâ CF ¯®«î¡ á á¡à®è¥­ ¤®«¦¥­ ¡ëâì ;AND A ;âãâ CF ¯®«î¡ á á¡à®è¥­ ¤®«¦¥­ ¡ëâì
SBC HL,DE SBC HL,DE
LD BC,0 LD BC,0
HDDBIG LD A,(BootSector.S_P_C) .HDDBIG: LD A,(BootSector.S_P_C)
SCF SCF
S4C01 RRA .S4C01: RRA
JR C,S4C02 JR C,.S4C02
RR B RR B
RR C RR C
RR H RR H
RR L RR L
JP S4C01 JP .S4C01
S4C02 INC HL .S4C02: INC HL
LD (MAX_CLU),HL LD (MAX_CLU),HL
POP IY POP IY
; LD DE,FAT ; LD DE,FAT
@ -402,9 +414,10 @@ S4C02 INC HL
XOR A XOR A
RET RET
IBMDOS_ LD A,(IY+_sBOOT_SEC.ID_FORM) .IBM_DOS:
LD A,(IY+_sBOOT_SEC.ID_FORM)
CP #F0 CP #F0
JR C,ERR_BPB JR C,DOS_X_Error.UnknownBPB
;????? ­ ¤® «¨ ¨§¬¥­¨âì? ;????? ­ ¤® «¨ ¨§¬¥­¨âì?
// OR 2 // OR 2
// CP #FA ; ID ram-¤¨áª  // CP #FA ; ID ram-¤¨áª 
@ -412,22 +425,24 @@ IBMDOS_ LD A,(IY+_sBOOT_SEC.ID_FORM)
;????? ;?????
LD A,'6' LD A,'6'
LD HL,#FFFF LD HL,#FFFF
JP Z,BPB_FAT JP Z,.BPB_FAT
LD A,'2' LD A,'2'
LD HL,#0FFF LD HL,#0FFF
JP BPB_FAT JP .BPB_FAT
ERR_BPB: DOS_X_Error:
.UnknownBPB:
POP IY POP IY
LD A,DSS_Error.sys.UNKNOWN_FORMAT LD A,DSS_Error.sys.UNKNOWN_FORMAT
SCF SCF
RET RET
RDERR1: LD A,DSS_Error.sys.NOT_READY .Not_ready:
LD A,DSS_Error.sys.NOT_READY
;SCF ;SCF
RET RET
;!FIXIT ª ¡ãä¥à ¬! ;!TODO ª ¡ãä¥à ¬!
FatBuffer: FatBuffer:
.MSG: DB 'FAT' .MSG: DB 'FAT'
.READ_PG: DB #00 .READ_PG: DB #00
@ -451,7 +466,7 @@ FatBuffer:
.ENDCLUS: DW #FFFF .ENDCLUS: DW #FFFF
; ;
; ;!TODO ª ¡ãä¥à ¬!
DIRSPEC: DB '\' DIRSPEC: DB '\'
;BLOCK DIRSPEC.DEPTH,0 ;????? <20>ë«® 255, ã ‘ ©¬ ­  256 ;BLOCK DIRSPEC.DEPTH,0 ;????? <20>ë«® 255, ã ‘ ©¬ ­  256
BLOCK DIRSPEC.DEPTH-1,0 ;????? <20>ë«® 255, ã ‘ ©¬ ­  256 BLOCK DIRSPEC.DEPTH-1,0 ;????? <20>ë«® 255, ã ‘ ©¬ ­  256
@ -459,6 +474,7 @@ DIRSPEC: DB '\'
;R11 ;R11
; !TODO ¯®ç¨­¨âì ; !TODO ¯®ç¨­¨âì
IF SAVE_PATH_MACRO
SAVE_CUR_PATH SAVE_CUR_PATH
PUSH IX PUSH IX
PUSH IY PUSH IY
@ -525,6 +541,7 @@ BACK_CUR_PATH:
POP IX POP IX
POP IY POP IY
RET RET
ENDIF
;R11 ;R11
;R12 ;R12
@ -624,11 +641,11 @@ SCANDRV:
EI EI
RET RET
.ERROR_BOOTDRV_DIES: .ERROR_BOOTDRV_DIES:
LD BC,256*COLORS.PAPER.BLUE + BIOS.LP_OPEN_S LD BC,256*COLORS.CGA.PAPER.BLUE + BIOS.LP_OPEN_S
LD E,0 LD E,0
RST ToBIOS RST ToBIOS
LD BC,256*COLORS.PAPER.BLUE + BIOS.LP_CLS_WIN LD BC,256*COLORS.CGA.PAPER.BLUE + BIOS.LP_CLS_WIN
LD DE,0 LD DE,0
LD HL,#2050 LD HL,#2050
RST ToBIOS RST ToBIOS
@ -647,12 +664,15 @@ SCANDRV:
RST ToBIOS RST ToBIOS
LD HL,#A000 LD HL,#A000
LD DE,0*256 + COLORS.FLASH + COLORS.PAPER.BLUE + COLORS.INC.WHITE LD DE,0*256 + COLORS.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.WHITE
LD B,A LD B,A
LD C,BIOS.LP_PRINT_LINE3 LD C,BIOS.LP_PRINT_LINE3
RST ToBIOS RST ToBIOS
.loop: DI .loop: DI
; .loop: LD A,R
; AND 7
; OUT (BorderColor),A
HALT HALT
JR .loop JR .loop
@ -663,45 +683,7 @@ SCANDRV:
RET RET
; ;
.TMP_BUFFER: BLOCK 3,#FF .TMP_BUFFER: BLOCK 3,#FF
MODULE COLORS
;
INC:
.BLACK EQU #00
.BLUE EQU #01
.GREEN EQU #02
.CYAN EQU #03
.RED EQU #04
.MAGENTA EQU #05
.BROWN EQU #06
.LGRAY EQU #07
.DGRAY EQU #08
.LBLUE EQU #09
.LGREEN EQU #0A
.LCYAN EQU #0B
.LRED EQU #0C
.LMAGENT EQU #0D
.YELLOW EQU #0E
.WHITE EQU #0F
PAPER:
.BLACK EQU 16*INC.BLACK
.BLUE EQU 16*INC.BLUE
.GREEN EQU 16*INC.GREEN
.CYAN EQU 16*INC.CYAN
.RED EQU 16*INC.RED
.MAGENTA EQU 16*INC.MAGENTA
.BROWN EQU 16*INC.BROWN
.LGRAY EQU 16*INC.LGRAY
.DGRAY EQU 16*INC.DGRAY
.LBLUE EQU 16*INC.LBLUE
.LGREEN EQU 16*INC.LGREEN
.LCYAN EQU 16*INC.LCYAN
.LRED EQU 16*INC.LRED
.LMAGENT EQU 16*INC.LMAGENT
.YELLOW EQU 16*INC.YELLOW
.WHITE EQU 16*INC.WHITE
FLASH EQU #80
ENDMODULE
; .old_letter: DB #FF ; .old_letter: DB #FF
; .old_DRIVE_ID: DB #FF ; .old_DRIVE_ID: DB #FF
; .new_letter: DB #FF ; .new_letter: DB #FF

View File

@ -30,6 +30,7 @@
includelua 'Shared_includes/lua/Functions.lua' includelua 'Shared_includes/lua/Functions.lua'
INCLUDE 'defines.inc' INCLUDE 'defines.inc'
include 'shared_includes/constants/sp2000.inc' include 'shared_includes/constants/sp2000.inc'
include 'shared_includes/constants/standart_colors.inc'
include 'shared_includes/constants/bios_equ.inc' include 'shared_includes/constants/bios_equ.inc'
include 'shared_includes/constants/dss_equ.inc' include 'shared_includes/constants/dss_equ.inc'
include 'shared_includes/structures/FileSystem.inc' include 'shared_includes/structures/FileSystem.inc'

View File

@ -61,11 +61,11 @@ R_F_FAT:
EX DE,HL EX DE,HL
LD A,DSS_Error.sys.DISK_FULL LD A,DSS_Error.sys.DISK_FULL
RET C RET C
EXX
EXX ;!TODO optimize
SET_PAGE_X FATPAGE SET_PAGE_X FATPAGE
EXX ;!TODO optimize
EXX
PUSH HL PUSH HL
PUSH AF PUSH AF
LD A,(FatBuffer.FAT_TYP) LD A,(FatBuffer.FAT_TYP)
@ -77,17 +77,17 @@ R_F_F16:
AND #0F AND #0F
LD H,A LD H,A
LD A,B LD A,B
; A/16 ; swap bit7..4 and bit3..0.
RRCA RRCA
RRCA RRCA
RRCA RRCA
RRCA RRCA
; ;
AND #0F ; A - BLOCK FAT (1 BLOCK = 8192 BYTES) 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,(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)
@ -247,7 +247,8 @@ W_T_F16:
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
CALL NZ,RE_FAT ; A <> C - READ NEW BLOCK FAT CP C
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
@ -323,7 +324,7 @@ RE_FAT: PUSH HL
PUSH AF PUSH AF
LD A,(FATCASH.Update) LD A,(FATCASH.Update)
OR A OR A
CALL NZ,WR_FAT_ CALL NZ,WR_FAT.Start
POP AF POP AF
LD L,A LD L,A
LD H,0 LD H,0
@ -340,7 +341,7 @@ RE_FAT: PUSH HL
LD HL,0 ;HL:IX - SECTOR FAT FOR READING LD HL,0 ;HL:IX - SECTOR FAT FOR READING
LD DE,FAT ; DE - FAT ADDRESS LD DE,FAT ; DE - FAT ADDRESS
LD A,(FatBuffer.DRIVE) LD A,(FatBuffer.DRIVE)
LD BC,16*256 + Dss.DRV.Read ;ॣ B: 16 * 512 = 8192 (CASH SIZE) LD BC,16*256 + Dss.DRV.Read ;ॣ B: 16 * 512 = 8192 (CASH SIZE) ;!TODO FATcacheSize
RST ToDSS.DRV RST ToDSS.DRV
POP HL POP HL
RET RET
@ -350,13 +351,12 @@ WR_FAT: EXX
EXX EXX
PUSH AF PUSH AF
CALL WR_FAT_ CALL .Start
POP AF POP AF
OUT (SLOT3),A OUT (SLOT3),A
RET RET
;
WR_FAT_: .Start: LD HL,(FATCASH)
LD HL,(FATCASH)
LD H,0 LD H,0
LD (FATCASH),HL LD (FATCASH),HL
ADD HL,HL ADD HL,HL
@ -374,14 +374,14 @@ WR_FAT_:
LD A,16 LD A,16
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 LD HL,16
; AND A ;âãâ â®ç­® CF ­¥ ¢§¢¥¤ñ­ ; AND A ;âãâ â®ç­® CF ­¥ ¢§¢¥¤ñ­
SBC HL,DE SBC HL,DE
JP C,FATERR JP C,FATERR
LD A,L LD A,L
WALLFAT: .WALLFAT:
LD H,B LD H,B
LD L,C LD L,C
LD DE,(FatBuffer.FAT_FRM) LD DE,(FatBuffer.FAT_FRM)

View File

@ -1 +1 @@
255 275

View File

@ -4,6 +4,7 @@
; ;
DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥­­ ï â ¡«¨æ  ä㭪権 rst #10. 96 ä㭪権. DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥­­ ï â ¡«¨æ  ä㭪権 rst #10. 96 ä㭪権.
DEFINE COMPILE_UNUSED_CODE 0
; ;
; ;

@ -1 +1 @@
Subproject commit 7f4046e7fabff85738efcf2a7aa1dbbeca7af906 Subproject commit cf19a287a2cfe1946de5c1d50a255c43ae4fc390