mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31: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 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
|
||||||
|
|||||||
198
DSS/DOS_X.ASM
198
DSS/DOS_X.ASM
@ -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,14 +466,15 @@ 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
|
||||||
;
|
;
|
||||||
|
|
||||||
;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,14 +664,17 @@ 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
|
||||||
HALT
|
; .loop: LD A,R
|
||||||
JR .loop
|
; AND 7
|
||||||
|
; OUT (BorderColor),A
|
||||||
|
HALT
|
||||||
|
JR .loop
|
||||||
|
|
||||||
.ERROR_MSG: DZ "Kernel panic! Boot disk lost. Press Ctrl+Alt+Del or RESET."
|
.ERROR_MSG: DZ "Kernel panic! Boot disk lost. Press Ctrl+Alt+Del or RESET."
|
||||||
.ERROR_MSG.size EQU $-.ERROR_MSG
|
.ERROR_MSG.size EQU $-.ERROR_MSG
|
||||||
@ -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
|
||||||
|
|||||||
@ -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'
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
255
|
275
|
||||||
@ -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
|
||||||
Loading…
Reference in New Issue
Block a user