mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
Optimized NSECTOR and RD_BPB
This commit is contained in:
parent
6224d9fcb6
commit
8a1abd44ab
@ -179,7 +179,7 @@ BLOK_RD: PUSH BC
|
||||
LD C,A
|
||||
LD B,0
|
||||
;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
|
||||
LD B,XH
|
||||
LD C,XL
|
||||
@ -349,7 +349,7 @@ BLOK_WR PUSH BC
|
||||
LD C,A
|
||||
LD B,0
|
||||
;HL:DE / BC => DE:IX HL-OSTATOK
|
||||
CALL DIV32
|
||||
CALL DIV_for_SPC
|
||||
LD B,XH
|
||||
LD C,XL
|
||||
|
||||
@ -565,22 +565,34 @@ READ: LD (R_POINT),HL
|
||||
;
|
||||
JP C,RPERR1
|
||||
;<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 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
|
||||
LD C,(IY+_sFM.F_POSITION)
|
||||
;OR A
|
||||
RR L
|
||||
RR D
|
||||
RR E
|
||||
;HL:DE FP (in sectors)
|
||||
;BC FP residue (in bytes)
|
||||
;
|
||||
LD A,B
|
||||
;LD A,B
|
||||
OR C
|
||||
JP NZ,ROV1
|
||||
ROV4: POP BC
|
||||
@ -890,28 +902,58 @@ WOV3: PUSH HL
|
||||
ADC HL,BC
|
||||
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:IX - SECTOR
|
||||
NSECTOR: DEC HL
|
||||
DEC HL
|
||||
EX DE,HL
|
||||
LD DE,0
|
||||
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)
|
||||
XOR 1
|
||||
JR Z,.skip
|
||||
;
|
||||
RRA
|
||||
.loop: ADD HL,HL
|
||||
RL E
|
||||
RL D
|
||||
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
|
||||
LD DE,#0000
|
||||
; A=0
|
||||
LD D,A
|
||||
LD E,A
|
||||
ADC HL,DE
|
||||
RET
|
||||
/////////////////////////////////////
|
||||
|
||||
|
||||
; 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
|
||||
JR Z,.exit
|
||||
;
|
||||
@ -923,7 +965,7 @@ DIV32: LD A,C
|
||||
.loop: SRL H : RR L
|
||||
RR D : RR E
|
||||
RRCA
|
||||
JR NC,.loop
|
||||
JP NC,.loop
|
||||
LD A,B
|
||||
;
|
||||
.exit: LD XH,D
|
||||
|
||||
198
DSS/DOS_X.ASM
198
DSS/DOS_X.ASM
@ -210,25 +210,25 @@ RD_BPB: LD C,SLOT3
|
||||
RST ToDSS.DRV
|
||||
POP BC
|
||||
OUT (C),B
|
||||
JP C,RDERR1
|
||||
JP C,DOS_X_Error.Not_ready
|
||||
PUSH IY
|
||||
LD DE,#AA55 ;R05
|
||||
;R08 LD HL,(BOOT+510) ;R07
|
||||
LD HL,(SECBUF+510) ;R08
|
||||
AND A ;R05
|
||||
SBC HL,DE ;R05
|
||||
JP NZ,ERR_BPB ;R05
|
||||
;R08
|
||||
LD HL,SECBUF ;R08
|
||||
LD DE,BootSector ;R08
|
||||
LD BC,_sBOOT_SEC ;R08 size
|
||||
LDIR
|
||||
;R08
|
||||
LD DE,#AA55 ;R05
|
||||
LD HL,(SECBUF+510) ;R08 ;R07
|
||||
;R05
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP NZ,DOS_X_Error.UnknownBPB
|
||||
;R08
|
||||
LD HL,SECBUF
|
||||
LD DE,BootSector
|
||||
LD BC,_sBOOT_SEC ; size
|
||||
LDIR
|
||||
;
|
||||
|
||||
LD IY,BootSector
|
||||
LD A,(IY+_sBOOT_SEC.ID_FORM)
|
||||
CP #F0
|
||||
JP C,ERR_BPB
|
||||
JP C,DOS_X_Error.UnknownBPB
|
||||
|
||||
;!TEST
|
||||
;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 A,(BootSector.FAT_NUM) ; amount FATs
|
||||
CP 1
|
||||
JR Z,C_DATA1
|
||||
JR Z,.loop1
|
||||
DEC A
|
||||
ADD HL,DE
|
||||
LD (FatBuffer.FAT2_XX),HL
|
||||
C_DATA1 ADD HL,DE
|
||||
;C_DATA1
|
||||
.loop1: ADD HL,DE
|
||||
DEC A
|
||||
JR NZ,C_DATA1
|
||||
LD (FatBuffer.DIR_FRM),HL ; first sector DIR
|
||||
JR NZ,.loop1
|
||||
|
||||
LD C,(IY+#0B) ; Size sectors
|
||||
LD B,(IY+#0C)
|
||||
LD (FatBuffer.DIR_FRM),HL ; first sector DIR
|
||||
LD C,(IY+_sBOOT_SEC.B_P_S) ; Size sectors
|
||||
LD B,(IY+_sBOOT_SEC.B_P_S+1)
|
||||
RL C
|
||||
RL B
|
||||
RL C
|
||||
@ -276,11 +277,12 @@ C_DATA1 ADD HL,DE
|
||||
EX DE,HL
|
||||
DEC HL
|
||||
XOR A
|
||||
NEXTAD2
|
||||
INC A
|
||||
JP Z,ERR_BPB
|
||||
;NEXTAD2
|
||||
.loop2: INC A
|
||||
JP Z,DOS_X_Error.UnknownBPB
|
||||
SBC HL,BC
|
||||
JR NC,NEXTAD2
|
||||
JR NC,.loop2
|
||||
|
||||
EX DE,HL
|
||||
LD C,A ; A - sectors in DIR
|
||||
LD B,0
|
||||
@ -290,58 +292,68 @@ NEXTAD2
|
||||
;LD HL,0
|
||||
LD H,B ; âãâ ¢ B ®«ì ¤®«¦¥ ¡ëâì
|
||||
LD L,B
|
||||
LD C,(IY+#0B) ; Size sector
|
||||
LD B,(IY+#0C)
|
||||
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)
|
||||
NEXTAD3
|
||||
ADD HL,BC ; calc. cluster size
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
IF COMPILE_UNUSED_CODE
|
||||
;!TODO ¥ ¨á¯®«ì§ãîâáï § ç¥¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ï¥¬ë¥ ¢ FatBuffer
|
||||
;NEXTAD3
|
||||
.loop3: ADD HL,BC ; calc. cluster size
|
||||
DEC A
|
||||
JR NZ,NEXTAD3
|
||||
JR NZ,.loop3
|
||||
|
||||
|
||||
LD (FatBuffer.CLU_LEN),HL
|
||||
EX DE,HL
|
||||
LD HL,#3FFF
|
||||
LD HL,#3FFF ;!TODO FATcacheSize
|
||||
XOR A
|
||||
NEXTAD4
|
||||
INC A
|
||||
JP Z,ERR_BPB
|
||||
;NEXTAD4
|
||||
.loop4: INC A
|
||||
JP Z,DOS_X_Error.UnknownBPB
|
||||
SBC HL,DE
|
||||
JR NC,NEXTAD4
|
||||
JR NC,.loop4
|
||||
LD (FatBuffer.C_P_B),A ; A - Clusters per bank (16k)
|
||||
ENDIF
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LD HL,BootSector.ID_FAT
|
||||
LD DE,FatBuffer.MSG
|
||||
LD B,3
|
||||
R_BPBL1
|
||||
LD A,(DE)
|
||||
;R_BPBL1
|
||||
.loop5: LD A,(DE)
|
||||
CP (HL)
|
||||
JP NZ,IBMDOS_
|
||||
JP NZ,.IBM_DOS
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ R_BPBL1
|
||||
FID: LD A,(HL)
|
||||
DJNZ .loop5
|
||||
;FID
|
||||
.loop6: LD A,(HL)
|
||||
INC HL
|
||||
CP ' '
|
||||
JR Z,FID
|
||||
JR Z,.loop6
|
||||
|
||||
CP '1'
|
||||
JP NZ,ERR_BPB
|
||||
JP NZ,DOS_X_Error.UnknownBPB
|
||||
LD A,(HL)
|
||||
CP '6' ; FAT16
|
||||
LD HL,#FFFF
|
||||
JR Z,BPB_FAT
|
||||
JR Z,.BPB_FAT
|
||||
CP '2' ; FAT12
|
||||
JP NZ,ERR_BPB
|
||||
JP NZ,DOS_X_Error.UnknownBPB
|
||||
LD HL,#0FFF
|
||||
BPB_FAT:
|
||||
.BPB_FAT:
|
||||
LD (FatBuffer.FAT_TYP),A
|
||||
LD (FatBuffer.ENDCLUS),HL
|
||||
LD HL,0
|
||||
LD C,(IY+_sBOOT_SEC.S_P_T) ; Sector per track
|
||||
LD B,(IY+_sBOOT_SEC.S_P_T+1)
|
||||
LD A,(BootSector.HEADS)
|
||||
BPB_L1: ; calc. sector per cylinder
|
||||
.BPB_L1: ; calc. sector per cylinder
|
||||
ADD HL,BC
|
||||
DEC A
|
||||
JR NZ,BPB_L1
|
||||
JR NZ,.BPB_L1
|
||||
LD (FatBuffer.S_X_H),HL
|
||||
|
||||
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 A,H
|
||||
OR L
|
||||
JP NZ,HDDSMAL
|
||||
JP NZ,.HDDSMAL
|
||||
LD L,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS)
|
||||
LD H,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+1)
|
||||
LD C,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+2)
|
||||
LD B,(IY+_sBOOT_SEC.BPB_BIG_TOTAL_SECTORS+3)
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JP NC,HDDBIG
|
||||
JP NC,.HDDBIG
|
||||
DEC BC
|
||||
JP HDDBIG
|
||||
HDDSMAL:
|
||||
JP .HDDBIG
|
||||
.HDDSMAL:
|
||||
;AND A ;âãâ CF ¯®«î¡ á á¡à®è¥ ¤®«¦¥ ¡ëâì
|
||||
SBC HL,DE
|
||||
LD BC,0
|
||||
HDDBIG LD A,(BootSector.S_P_C)
|
||||
.HDDBIG: LD A,(BootSector.S_P_C)
|
||||
SCF
|
||||
S4C01 RRA
|
||||
JR C,S4C02
|
||||
.S4C01: RRA
|
||||
JR C,.S4C02
|
||||
RR B
|
||||
RR C
|
||||
RR H
|
||||
RR L
|
||||
JP S4C01
|
||||
S4C02 INC HL
|
||||
JP .S4C01
|
||||
.S4C02: INC HL
|
||||
LD (MAX_CLU),HL
|
||||
POP IY
|
||||
; LD DE,FAT
|
||||
@ -402,9 +414,10 @@ S4C02 INC HL
|
||||
XOR A
|
||||
RET
|
||||
|
||||
IBMDOS_ LD A,(IY+_sBOOT_SEC.ID_FORM)
|
||||
.IBM_DOS:
|
||||
LD A,(IY+_sBOOT_SEC.ID_FORM)
|
||||
CP #F0
|
||||
JR C,ERR_BPB
|
||||
JR C,DOS_X_Error.UnknownBPB
|
||||
;????? ¤® «¨ ¨§¬¥¨âì?
|
||||
// OR 2
|
||||
// CP #FA ; ID ram-¤¨áª
|
||||
@ -412,22 +425,24 @@ IBMDOS_ LD A,(IY+_sBOOT_SEC.ID_FORM)
|
||||
;?????
|
||||
LD A,'6'
|
||||
LD HL,#FFFF
|
||||
JP Z,BPB_FAT
|
||||
JP Z,.BPB_FAT
|
||||
|
||||
LD A,'2'
|
||||
LD HL,#0FFF
|
||||
JP BPB_FAT
|
||||
JP .BPB_FAT
|
||||
|
||||
ERR_BPB:
|
||||
DOS_X_Error:
|
||||
.UnknownBPB:
|
||||
POP IY
|
||||
LD A,DSS_Error.sys.UNKNOWN_FORMAT
|
||||
SCF
|
||||
RET
|
||||
RDERR1: LD A,DSS_Error.sys.NOT_READY
|
||||
.Not_ready:
|
||||
LD A,DSS_Error.sys.NOT_READY
|
||||
;SCF
|
||||
RET
|
||||
|
||||
;!FIXIT ª ¡ãä¥à ¬!
|
||||
;!TODO ª ¡ãä¥à ¬!
|
||||
FatBuffer:
|
||||
.MSG: DB 'FAT'
|
||||
.READ_PG: DB #00
|
||||
@ -451,14 +466,15 @@ FatBuffer:
|
||||
.ENDCLUS: DW #FFFF
|
||||
;
|
||||
|
||||
;
|
||||
;!TODO ª ¡ãä¥à ¬!
|
||||
DIRSPEC: DB '\'
|
||||
;BLOCK DIRSPEC.DEPTH,0 ;????? <20>ë«® 255, ã ‘ ©¬ 256
|
||||
BLOCK DIRSPEC.DEPTH-1,0 ;????? <20>ë«® 255, ã ‘ ©¬ 256
|
||||
;BLOCK DIRSPEC.DEPTH,0 ;????? <20>ë«® 255, ã ‘ ©¬ 256
|
||||
BLOCK DIRSPEC.DEPTH-1,0 ;????? <20>ë«® 255, ã ‘ ©¬ 256
|
||||
;
|
||||
|
||||
;R11
|
||||
; !TODO ¯®ç¨¨âì
|
||||
IF SAVE_PATH_MACRO
|
||||
SAVE_CUR_PATH
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
@ -525,6 +541,7 @@ BACK_CUR_PATH:
|
||||
POP IX
|
||||
POP IY
|
||||
RET
|
||||
ENDIF
|
||||
;R11
|
||||
|
||||
;R12
|
||||
@ -624,11 +641,11 @@ SCANDRV:
|
||||
EI
|
||||
RET
|
||||
.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
|
||||
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 HL,#2050
|
||||
RST ToBIOS
|
||||
@ -647,14 +664,17 @@ SCANDRV:
|
||||
RST ToBIOS
|
||||
|
||||
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 C,BIOS.LP_PRINT_LINE3
|
||||
RST ToBIOS
|
||||
|
||||
.loop: DI
|
||||
HALT
|
||||
JR .loop
|
||||
; .loop: LD A,R
|
||||
; AND 7
|
||||
; OUT (BorderColor),A
|
||||
HALT
|
||||
JR .loop
|
||||
|
||||
.ERROR_MSG: DZ "Kernel panic! Boot disk lost. Press Ctrl+Alt+Del or RESET."
|
||||
.ERROR_MSG.size EQU $-.ERROR_MSG
|
||||
@ -663,45 +683,7 @@ SCANDRV:
|
||||
RET
|
||||
;
|
||||
.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_DRIVE_ID: DB #FF
|
||||
; .new_letter: DB #FF
|
||||
|
||||
@ -30,6 +30,7 @@
|
||||
includelua 'Shared_includes/lua/Functions.lua'
|
||||
INCLUDE 'defines.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/dss_equ.inc'
|
||||
include 'shared_includes/structures/FileSystem.inc'
|
||||
|
||||
@ -61,11 +61,11 @@ R_F_FAT:
|
||||
EX DE,HL
|
||||
LD A,DSS_Error.sys.DISK_FULL
|
||||
RET C
|
||||
EXX
|
||||
|
||||
EXX ;!TODO optimize
|
||||
SET_PAGE_X FATPAGE
|
||||
EXX ;!TODO optimize
|
||||
|
||||
EXX
|
||||
PUSH HL
|
||||
PUSH AF
|
||||
LD A,(FatBuffer.FAT_TYP)
|
||||
@ -77,17 +77,17 @@ R_F_F16:
|
||||
AND #0F
|
||||
LD H,A
|
||||
LD A,B
|
||||
; A/16
|
||||
; swap bit7..4 and bit3..0.
|
||||
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)
|
||||
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
|
||||
ADD HL,DE
|
||||
LD E,(HL)
|
||||
@ -247,7 +247,8 @@ W_T_F16:
|
||||
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
|
||||
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
|
||||
ADD HL,DE
|
||||
POP DE
|
||||
@ -323,7 +324,7 @@ RE_FAT: PUSH HL
|
||||
PUSH AF
|
||||
LD A,(FATCASH.Update)
|
||||
OR A
|
||||
CALL NZ,WR_FAT_
|
||||
CALL NZ,WR_FAT.Start
|
||||
POP AF
|
||||
LD L,A
|
||||
LD H,0
|
||||
@ -340,7 +341,7 @@ RE_FAT: PUSH HL
|
||||
LD HL,0 ;HL:IX - SECTOR FAT FOR READING
|
||||
LD DE,FAT ; DE - FAT ADDRESS
|
||||
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
|
||||
POP HL
|
||||
RET
|
||||
@ -350,13 +351,12 @@ WR_FAT: EXX
|
||||
|
||||
EXX
|
||||
PUSH AF
|
||||
CALL WR_FAT_
|
||||
CALL .Start
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
RET
|
||||
|
||||
WR_FAT_:
|
||||
LD HL,(FATCASH)
|
||||
;
|
||||
.Start: LD HL,(FATCASH)
|
||||
LD H,0
|
||||
LD (FATCASH),HL
|
||||
ADD HL,HL
|
||||
@ -374,14 +374,14 @@ WR_FAT_:
|
||||
LD A,16
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR C,WALLFAT
|
||||
JR C,.WALLFAT
|
||||
EX DE,HL
|
||||
LD HL,16
|
||||
; AND A ;âãâ â®ç® CF ¥ ¢§¢¥¤ñ
|
||||
SBC HL,DE
|
||||
JP C,FATERR
|
||||
LD A,L
|
||||
WALLFAT:
|
||||
.WALLFAT:
|
||||
LD H,B
|
||||
LD L,C
|
||||
LD DE,(FatBuffer.FAT_FRM)
|
||||
|
||||
@ -1 +1 @@
|
||||
255
|
||||
275
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
;
|
||||
DEFINE SHORT_RSTx10_TABLE 0 ; 㪮à®ç¥ ï â ¡«¨æ äãªæ¨© rst #10. 96 äãªæ¨©.
|
||||
DEFINE COMPILE_UNUSED_CODE 0
|
||||
;
|
||||
|
||||
;
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 7f4046e7fabff85738efcf2a7aa1dbbeca7af906
|
||||
Subproject commit cf19a287a2cfe1946de5c1d50a255c43ae4fc390
|
||||
Loading…
Reference in New Issue
Block a user