optimization. bug with BootSector size fixed

This commit is contained in:
Anatoliy Belyanskiy 2023-07-03 23:04:36 +10:00
parent f59cca8dfa
commit 35e9b7b9fe
8 changed files with 122 additions and 116 deletions

View File

@ -30,7 +30,7 @@ DRIVE:
DI
LD (DRIVE),A
LD C,BIOS.EXT_VERSION
RST #18
RST ToBIOS_18
LD A,INCORR
JR C,FAIL
LD A,(DRIVE)
@ -47,7 +47,7 @@ GOOD_DRIVE:
LD IX,2
LD BC,2*256 + BIOS.DRV_READ
LD A,(DRIVE)
RST #18
RST ToBIOS_18
JR C,NULL
JP CONTINU
@ -88,37 +88,37 @@ PRINTX CP #0D
JR Z,CR_
CP #0A
JR Z,LF_
LD BC,#0182
RST #18
LD BC,1*256 + BIOS.LP_PRINT_SYM
RST ToBIOS_18
RET
CR_ LD C,#8E
RST #18
CR_ LD C,BIOS.LP_GET_PLACE
RST ToBIOS_18
LD E,0
LD C,#84
RST #18
RST ToBIOS_18
RET
LF_ LD C,#8E
RST #18
LF_ LD C,BIOS.LP_GET_PLACE
RST ToBIOS_18
LD A,#1F
CP D
JR NZ,LF2
PUSH DE
PUSH HL
LD DE,#0020
LD BC,#018A
RST #18
LD BC,1*256 + BIOS.LP_SCROLL_UD
RST ToBIOS_18
LD DE,#1F00
LD C,#84
RST #18
LD C,BIOS.LP_SET_PLACE
RST ToBIOS_18
LD A," "
LD BC,#5082
RST #18
LD BC,#50 + BIOS.LP_PRINT_SYM
RST ToBIOS_18
POP HL
POP DE
DEC D
LF2 INC D
LD C,#84
RST #18
LD C,BIOS.LP_SET_PLACE
RST ToBIOS_18
RET ;R01
;R01 End
@ -156,7 +156,7 @@ CONTINU
LD (DISKH),HL
LD BC,1*256 + BIOS.GetMem
RST #18 ;GET PAGE FOR DOS
RST ToBIOS_18 ;GET PAGE FOR DOS
LD (BANKDOS),A
CALL GET_BPB ;READ BPB
LD A,ERRIBPB
@ -292,7 +292,7 @@ YEPDOS LD E,(IX+08)
LD DE,BOOT
LD BC,1*256 + BIOS.DRV_READ
LD A,(DRIVE)
RST #18
RST ToBIOS_18
POP BC
LD A,C
RET
@ -300,13 +300,13 @@ YEPDOS LD E,(IX+08)
SET_PRM PUSH BC
LD A,B
LD C,BIOS.DRV_GET_PAR
RST #18
RST ToBIOS_18
LD A,(BOOT.S_P_T)
LD L,A
POP AF
PUSH AF
LD C,BIOS.DRV_SET_PAR
RST #18
RST ToBIOS_18
POP BC
LD A,C
RET
@ -316,7 +316,7 @@ GET_BPB LD IX,#0000
LD DE,BOOT
LD BC,1*256 + BIOS.DRV_READ
LD A,(DRIVE)
RST #18
RST ToBIOS_18
RET C
LD A,(DRIVE)
LD B,A
@ -418,7 +418,7 @@ BPB_FAT
LD DE,FAT
LD BC,3*256 + BIOS.DRV_READ
LD A,(DRIVE)
RST #18
RST ToBIOS_18
RET C
LD HL,0
LD (FATCASH),HL
@ -450,7 +450,7 @@ NEXTSEC PUSH AF
LD BC,1*256 + BIOS.DRV_READ
LD DE,DIR
LD A,(DRIVE)
RST #18
RST ToBIOS_18
CALL SEARCH
POP HL
POP IX
@ -510,21 +510,21 @@ LD_FILE PUSH HL
LD A,(BOOT.S_P_C)
CP #20
JR C,SMCLUS
LD BC,#2052
LD BC,#20*256 + BIOS.DRV_READ_LONG
LD A,(BANKDOS)
EX AF,AF'
LD A,(DRIVE)
RST #18
RST ToBIOS_18
POP HL
AND A
RET
SMCLUS LD B,A
LD C,#52
LD C,BIOS.DRV_READ_LONG
LD A,(BANKDOS)
EX AF,AF'
LD A,(DRIVE)
RST #18
RST ToBIOS_18
LD HL,(READMEM)
LD DE,(CLU_LEN)
ADD HL,DE
@ -670,9 +670,9 @@ NOINX2 ADD IX,BC
POP IX
POP HL
LD DE,FAT
LD BC,#0355
LD BC,3*256 + BIOS.DRV_READ
LD A,(DRIVE)
RST #18
RST ToBIOS_18
POP HL
RET

View File

@ -277,8 +277,8 @@ F_START:
RST #30
;CALL INITDVC ;R05
;R05
LD C,#00
RST #18
LD C,Dss.DRV.Init
RST ToDSS.DRV
LD (LDRIVE),A
;R05
@ -437,6 +437,14 @@ BUFFER EQU BUFFERSplace.Buffer
SECBUF EQU BUFFER
CLEAR_ZONE.size EQU _sBuffers
DISPLAY "--- --- --- --- --- --- --- ---"
DISPLAY "BUFFERSplace.BootSector ",/H,BUFFERSplace.BootSector
DISPLAY "BootSector ", /H, BootSector
DISPLAY "EXEBUFF ", /H, EXEBUFF
DISPLAY "Size ", /H, EXEBUFF-BootSector
DISPLAY "--- --- --- --- --- --- --- ---"
/*
;R11 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;!TEST

View File

@ -155,11 +155,11 @@ DELETE LD DE,MASKARE
RET C
DELFILE LD A,DIRPAGE
CALL BANK
PUSH AF
;PUSH AF
LD (IX+_sFM.NAME),#E5
LD E,(IX+_sFM.ST_CLUSTER)
LD D,(IX+_sFM.ST_CLUSTER+1)
POP AF
;POP AF
OUT (SLOT3),A
LD A,E
OR D
@ -656,8 +656,8 @@ CHNDISK:
;????? R10
OPENDSK:
PUSH AF
LD C,1
RST #18
LD C,Dss.DRV.Open
RST ToDSS.DRV
POP BC
JP C,.error
LD A,B
@ -802,7 +802,7 @@ FINDDIR LD A,DIRPAGE
ADDSPEC LD E,XL
LD D,XH
LD HL,DIRSPEC+1
LD BC,DIRSPEC.DEPTH
LD BC,DIRSPEC.DEPTH-1
XOR A
CPIR ;!FIXIT ­¥â ¯à®¢¥àª¨ ­  § ¢¥à襭¨¥ ¯® BC=0
DEC HL
@ -879,11 +879,11 @@ LOADDIR:
CALL BANK
PUSH AF
;!FIXIT ᫨誮¬ ¤®«£®
LD HL,#C000
LD DE,#C001
LD BC,#3FFF
LD (HL),L
LDIR
; LD HL,#C000
; LD DE,#C001
; LD BC,#3FFF
; LD (HL),L
; LDIR
;
LD A,(FatBuffer.DRIVE)
LD (IY+_sFM.DRIVE),A
@ -911,9 +911,9 @@ LROTDIR LD HL,(FatBuffer.DIR_FRH)
ADD A,B
LD B,A
RTD1 LD A,(FatBuffer.DRIVE)
LD C,5
LD DE,DIR
RST #18
LD C,Dss.DRV.Read
RST ToDSS.DRV
POP AF
OUT (SLOT3),A
AND A
@ -952,9 +952,9 @@ SROTDIR LD HL,(FatBuffer.DIR_FRH)
ADD A,B
LD B,A
RTD1S LD A,(FatBuffer.DRIVE)
LD C,6
LD DE,DIR
RST #18
LD C,Dss.DRV.Write
RST ToDSS.DRV
POP AF
OUT (SLOT3),A
AND A
@ -1634,7 +1634,7 @@ MKD04 EX DE,HL
INC DE
LD (HL),0
LD BC,512-65
LDIR
LDIR ;!FIXIT ­ã¦­® «¨ â ª ¬­®£® £à®å âì?
POP HL
CALL NSECTOR
LD A,(BootSector.S_P_C)
@ -1646,11 +1646,10 @@ MKD12 PUSH AF
IN A,(SLOT0)
OUT (SLOT3),A
;
LD DE,SECBUF+#C000
LD B,1
LD A,(FatBuffer.DRIVE)
LD C,6
RST #18
LD DE,SECBUF+#C000
LD BC,1*256 + Dss.DRV.Write
RST ToDSS.DRV
;
POP AF
OUT (SLOT3),A
@ -1659,7 +1658,7 @@ MKD12 PUSH AF
LD DE,SECBUF+1
LD BC,511
LD (HL),0
LDIR
LDIR ;!FIXIT ­ã¦­® «¨ â ª ¬­®£® £à®å âì?
POP IX
POP HL
INC IX
@ -1706,9 +1705,9 @@ RMD12 PUSH AF
OUT (SLOT3),A
LD DE,SECBUF+#C000
LD BC,#0105
LD BC,1*256 + Dss.DRV.Read
LD A,(FatBuffer.DRIVE)
RST #18
RST ToDSS.DRV
POP AF
OUT (SLOT3),A

View File

@ -177,7 +177,7 @@ BLOK_RD PUSH BC
LD A,(BootSector.S_P_C) ;SECTORS PER CLUSTER
LD C,A
LD B,0
CALL DIV32
CALL DIV32 ;!FIXIT § ¬¥­¨âì ¢ë§®¢ HLDE/BC ­  HLDE/C
LD B,XH
LD C,XL
PUSH HL ;RESIDUE
@ -218,8 +218,8 @@ BLOKRD3 LD A,B ; /
BLOKRD4 LD DE,(READMEM)
LD A,(FatBuffer.DRIVE)
LD B,C
LD C,5
RST #18
LD C,Dss.DRV.Read
RST ToDSS.DRV
JP C,BLOKRD0
POP BC
LD HL,(READMEM)
@ -256,7 +256,7 @@ BLOKRD7 EX DE,HL
LD A,(FatBuffer.DRIVE)
LD B,C
LD C,5
RST #18
RST ToDSS.DRV
JP C,BLOKRD0
POP BC
LD HL,(READMEM)
@ -345,8 +345,8 @@ BLOKWR3 LD A,B
BLOKWR4 LD DE,(READMEM)
LD A,(FatBuffer.DRIVE)
LD B,C
LD C,6
RST #18
LD C,Dss.DRV.Write
RST ToDSS.DRV
JP C,BLOKWR0
POP BC
LD HL,(READMEM)
@ -387,8 +387,8 @@ BLOKWR9 POP BC
LD DE,(READMEM)
LD A,(FatBuffer.DRIVE)
LD B,C
LD C,6
RST #18
LD C,Dss.DRV.Write
RST ToDSS.DRV
JP C,BLOKWR0
POP BC
LD HL,(READMEM)
@ -625,7 +625,8 @@ WRITE LD (R_POINT),HL
OR A
RR L
RR D
RR E ;HL:DE FP (in sectors)
RR E
; HL:DE FP (in sectors)
; BC FP residue (in bytes)
LD A,B
OR C

View File

@ -71,9 +71,9 @@ SETBOOT:
LD C,0
.loop: PUSH BC
LD A,C
LD BC,#0008
LD DE,#55AA
RST #18
LD BC,256*0 + Dss.DRV.GenIOCTL
RST ToDSS.DRV
POP BC
JR C,.NoSupport
EX AF,AF' ;PHISICAL DRIVE NUMBER
@ -100,8 +100,8 @@ SETBOOT:
/*
CHNDISK:
PUSH AF
LD C,1
RST #18
LD C,Dss.DRV.Open
RST ToDSS.DRV
POP BC
JP C,NDISK11
LD A,B
@ -181,30 +181,24 @@ TCOUNT: DW #0000
; !FIXIT çñâ ­¥ ¨á¯®«ì§ã¥âáï
TESTDSK LD A,(FatBuffer.DRIVE)
LD C,3
RST #18
LD C,Dss.DRV.MediaCheck
RST ToDSS.DRV
OR A
RET Z
RD_BPB LD C,SLOT3
IN B,(C)
PUSH BC
;!!!!! «ãçè¥ ®áâ ¢¨âì ª ª ¢ ®à¨£¨­ «¥, ¯®â®¬ã çâ® ¢ë§®¢ í⮩ ä㭪樨
; ¬®¦¥â ¢ ¤ «ì­¥©è¥¬ ¯®­ ¤®¡¨âìáï, ¨ ¯ã᪠© ®­  á ¬  ¤®áâ ñâ ¯¥à¥¬¥­­ãî DRIVE
; ex af,af' ;1451
; in a,(SLOT0) ;1452
; out (SLOT3),a ;1454
; ld de,SECBUF+#C000 ;1456
; ex af,af' ;1459
IN A,(SLOT0)
OUT (SLOT3),A
;R08 LD DE,BOOT+#C000
LD DE,SECBUF+#C000 ;R08
LD A,(FatBuffer.DRIVE)
;!!!!! ------------------------------
;R08
;LD DE,BOOT+#C000
LD DE,SECBUF+#C000
;R08
LD A,(FatBuffer.DRIVE) ;¢ë§®¢ RD_BPB ¬®¦¥â ¢ ¤ «ì­¥©è¥¬ ¯®­ ¤®¡¨âìáï, ¯ã᪠© ®­  á ¬  ¤®áâ ñâ ¯¥à¥¬¥­­ãî DRIVE
LD C,4
RST #18
LD C,Dss.DRV.GetBPB
RST ToDSS.DRV
POP BC
OUT (C),B
JP C,RDERR1
@ -226,10 +220,16 @@ RD_BPB LD C,SLOT3
LD A,(IY+_sBOOT_SEC.ID_FORM)
CP #F0
JP C,ERR_BPB
LD HL,0 ; calc. first sector FAT
LD E,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec
LD D,(IY+_sBOOT_SEC.RESERVE+1)
ADD HL,DE
;!TEST
;LD HL,0 ; calc. first sector FAT
;LD E,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec
;LD D,(IY+_sBOOT_SEC.RESERVE+1)
;ADD HL,DE
LD L,(IY+_sBOOT_SEC.RESERVE) ;Reserve sec
LD H,(IY+_sBOOT_SEC.RESERVE+1)
;
; LD E,(IY+#1C) ;Hidden sec
; LD D,(IY+#1D)
; ADD HL,DE
@ -311,15 +311,15 @@ R_BPBL1
DJNZ R_BPBL1
FID LD A,(HL)
INC HL
CP #20
CP ' '
JR Z,FID
CP "1"
CP '1'
JP NZ,ERR_BPB
LD A,(HL)
CP "6" ; FAT16
CP '6' ; FAT16
LD HL,#FFFF
JR Z,BPB_FAT
CP "2" ; FAT12
CP '2' ; FAT12
JP NZ,ERR_BPB
LD HL,#0FFF
BPB_FAT
@ -376,8 +376,8 @@ S4C02 INC HL
; LD IX,(FAT_FRM)
; LD B,3
; LD A,(DRIVE)
; LD C,5
; RST #18
; LD C,Dss.DRV.Read
; RST ToDSS.DRV
; JP C,RDERR1
LD HL,0
LD (FATCASH),HL
@ -443,7 +443,7 @@ FatBuffer:
;
DIRSPEC: DB '\'
BLOCK DIRSPEC.DEPTH,0 ;????? <20>ë«® 255, ã ‘ ©¬ ­  256
BLOCK DIRSPEC.DEPTH-1,0 ;????? <20>ë«® 255, ã ‘ ©¬ ­  256
;
;R11

View File

@ -53,7 +53,6 @@ INC_FA2 CALL R_F_FAT
; HL - CLUSTER
; DE - (CLUSTER)
R_F_FAT EX DE,HL
LD HL,(MAX_CLU)
AND A
@ -229,7 +228,8 @@ W_T_FAT PUSH DE
LD A,(FatBuffer.FAT_TYP)
CP "2"
JP Z,W_T_F12
W_T_F16 PUSH DE
W_T_F16:
PUSH DE
LD A,H
LD B,A
AND #0F
@ -336,10 +336,8 @@ RE_FAT PUSH HL
LD HL,0 ;HL:IX - SECTOR FAT FOR READING
LD DE,FAT ; DE - FAT ADDRESS
LD A,(FatBuffer.DRIVE)
; LD B,16
; LD C,5
LD BC,16*256 + 5 ;ॣ B: 16 * 512 = 8192 (CASH SIZE)
RST #18
LD BC,16*256 + Dss.DRV.Read ;ॣ B: 16 * 512 = 8192 (CASH SIZE)
RST ToDSS.DRV
POP HL
RET
@ -388,10 +386,10 @@ WALLFAT LD H,B
LD HL,0 ;HL:IX - SECTOR OF FAT FOR SAVE
LD DE,FAT
LD B,A
LD C,6
LD C,Dss.DRV.Write
LD A,(FatBuffer.DRIVE)
PUSH BC
RST #18
RST ToDSS.DRV
POP BC
POP HL
LD DE,(FatBuffer.FAT2_XX)
@ -402,8 +400,8 @@ WALLFAT LD H,B
LD DE,FAT
LD HL,0
LD A,(FatBuffer.DRIVE)
LD C,6
RST #18
LD C,Dss.DRV.Write
RST ToDSS.DRV
RET
;R01

@ -1 +1 @@
Subproject commit 6e9cb7fd969b98df5cc98ec109bab2be59d46208
Subproject commit ced877c153d64941d9ab3a1808d21bc559113e4b