мелкие оптимизации
This commit is contained in:
parent
fdad365528
commit
69c73382a2
@ -1 +1 @@
|
|||||||
Subproject commit be6067585059da92ec2674091bedf341e9219f09
|
Subproject commit e0dd54cb5615a23ea55bd217578aab57481fcf77
|
||||||
@ -1068,11 +1068,11 @@ PORTS_INIT:
|
|||||||
OUT (FDC_93.DrvCTRL),A : ASSERT CNF_PORT.CNF_3+ROM.BIOS = #1C, "ERROR: A != #1C"
|
OUT (FDC_93.DrvCTRL),A : ASSERT CNF_PORT.CNF_3+ROM.BIOS = #1C, "ERROR: A != #1C"
|
||||||
PUSH HL ; ¤«ï § ¤¥à¦ª¨
|
PUSH HL ; ¤«ï § ¤¥à¦ª¨
|
||||||
POP HL ; ¤«ï § ¤¥à¦ª¨
|
POP HL ; ¤«ï § ¤¥à¦ª¨
|
||||||
LD A,#3C ;!HARDCODE ª®¬ ¤ ¤«ï ‚ƒ93
|
LD A,#3C ;!HARDCODE
|
||||||
OUT (FDC_93.DrvCTRL),A
|
OUT (FDC_93.DrvCTRL),A
|
||||||
PUSH HL ; ¤«ï § ¤¥à¦ª¨
|
PUSH HL ; ¤«ï § ¤¥à¦ª¨
|
||||||
POP HL ; ¤«ï § ¤¥à¦ª¨
|
POP HL ; ¤«ï § ¤¥à¦ª¨
|
||||||
XOR A
|
XOR A ;!HARDCODE CMD Š<>1818‚<38>93
|
||||||
OUT (FDC_93.Command),A
|
OUT (FDC_93.Command),A
|
||||||
; ‚몫îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª
|
; ‚몫îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª
|
||||||
LD A,CNF_PORT.CNF_0+ROM.BIOS
|
LD A,CNF_PORT.CNF_0+ROM.BIOS
|
||||||
|
|||||||
@ -25,38 +25,20 @@
|
|||||||
; IX - Capacity sector in bytes
|
; IX - Capacity sector in bytes
|
||||||
; B - Flags
|
; B - Flags
|
||||||
; D7 - "1" - High Density, "0" - Double Density
|
; D7 - "1" - High Density, "0" - Double Density
|
||||||
|
; D0 - FDD drv number
|
||||||
|
; A - D0 - "1" - Removable media
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
;!FIXIT ¢á¥£¤ ¨¤¥â à ¡®â á ¤ 묨 ¤«ï ¤¨áª €
|
;!FIXIT ¢á¥£¤ ¨¤¥â à ¡®â á ¤ 묨 ¤«ï ¤¨áª €
|
||||||
FDD_5x_GET_PAR:
|
FDD_5x_GET_PAR:
|
||||||
;!TEST FDD 720/1440
|
|
||||||
IF FDD_NormalCount
|
|
||||||
LD IY,FDD_INIT_TABLE.FDD_0
|
|
||||||
DEC A
|
|
||||||
JR C,.getParams
|
|
||||||
LD IY,FDD_INIT_TABLE.FDD_1
|
|
||||||
.getParams:
|
|
||||||
ENDIF
|
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;!TEST FDD 720/1440
|
;
|
||||||
IF FDD_NormalCount
|
LD HL,(SYS_PAGE.FDD_TABLE.SECTORS)
|
||||||
LD L,(IY+1) ;SECTORS
|
LD DE,(SYS_PAGE.FDD_TABLE.CYLINDL)
|
||||||
LD H,(IY+2) ;HEADS
|
LD IX,(SYS_PAGE.FDD_TABLE.BytesPerSector)
|
||||||
LD E,(IY+3) ;CYLINDL
|
LD A,(SYS_PAGE.FDD_TABLE.DISK)
|
||||||
LD D,(IY+4) ;CYLINDH
|
|
||||||
LD A,(IY+5) ;B_P_S low
|
|
||||||
LD XL,A
|
|
||||||
LD A,(IY+6) ;B_P_S High
|
|
||||||
LD XH,A
|
|
||||||
LD A,(IY+0) ;F144/720
|
|
||||||
ELSE
|
|
||||||
LD HL,(FDD_INIT_TABLE.FDD_0.SECTORS)
|
|
||||||
LD DE,(FDD_INIT_TABLE.FDD_0.CYLINDL)
|
|
||||||
LD IX,(FDD_INIT_TABLE.FDD_0.BytesPerSector)
|
|
||||||
LD A,(FDD_INIT_TABLE.FDD_0.F144)
|
|
||||||
ENDIF
|
|
||||||
LD B,A
|
LD B,A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -76,51 +58,22 @@ FDD_5x_GET_PAR:
|
|||||||
;Return: None
|
;Return: None
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
FDD_5x_SET_PAR: ;!TEST FDD 720/1440
|
FDD_5x_SET_PAR: ;!TEST FDD 720/1440
|
||||||
IF FDD_NormalCount
|
IN A,(SLOT3)
|
||||||
LD IY,FDD_INIT_TABLE.FDD_0
|
|
||||||
DEC A
|
|
||||||
JR C,.setParams
|
|
||||||
LD IY,FDD_INIT_TABLE.FDD_1
|
|
||||||
ENDIF
|
|
||||||
;
|
|
||||||
.setParams: IN A,(SLOT3)
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
;!TEST FDD 720/1440
|
|
||||||
IF FDD_NormalCount
|
|
||||||
LD (IY+1),L ;SECTORS
|
|
||||||
LD (IY+2),H ;HEADS
|
|
||||||
LD (IY+3),E ;CYLINDL
|
|
||||||
LD (IY+4),D ;CYLINDH
|
|
||||||
LD A,XL
|
|
||||||
LD (IY+5),A ;B_P_S low
|
|
||||||
LD A,XH
|
|
||||||
LD (IY+6),A ;B_P_S High
|
|
||||||
LD (IY+0),B ;F144/720
|
|
||||||
LD A,B
|
LD A,B
|
||||||
ELSE
|
LD (SYS_PAGE.FDD_TABLE.SECTORS),HL
|
||||||
LD A,B
|
LD (SYS_PAGE.FDD_TABLE.CYLINDL),DE
|
||||||
LD (FDD_INIT_TABLE.FDD_0.SECTORS),HL
|
LD (SYS_PAGE.FDD_TABLE.BytesPerSector),IX
|
||||||
LD (FDD_INIT_TABLE.FDD_0.CYLINDL),DE
|
LD (SYS_PAGE.FDD_TABLE.DISK),A
|
||||||
LD (FDD_INIT_TABLE.FDD_0.BytesPerSector),IX
|
|
||||||
LD (FDD_INIT_TABLE.FDD_0.F144),A
|
|
||||||
ENDIF
|
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;
|
|
||||||
;!TEST FDD 720/1440
|
|
||||||
IF FDD_NormalCount
|
|
||||||
AND 1
|
|
||||||
JP Z,FN_TURBO.SET_FDD_720
|
|
||||||
JP FN_TURBO..SET_FDD_1440
|
|
||||||
ELSE
|
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
ENDIF
|
|
||||||
|
|
||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
;Function: Detect Disk Density
|
;Function: Detect Disk Density
|
||||||
@ -156,7 +109,7 @@ FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD H,B
|
LD H,B
|
||||||
LD L,0
|
LD L,0
|
||||||
LD (FDD_INIT_TABLE.FDD_0.BytesPerSector),HL
|
LD (SYS_PAGE.FDD_TABLE.BytesPerSector),HL
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;
|
;
|
||||||
@ -164,7 +117,7 @@ FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
|
|||||||
JR C,.MOTOR_OFF
|
JR C,.MOTOR_OFF
|
||||||
;
|
;
|
||||||
CALL RESWG
|
CALL RESWG
|
||||||
XOR A
|
XOR A ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||||
OUT (FDC_93.Track),A
|
OUT (FDC_93.Track),A
|
||||||
IN A,(FDC_93.Command)
|
IN A,(FDC_93.Command)
|
||||||
;LD C,A
|
;LD C,A
|
||||||
@ -174,7 +127,7 @@ FDD_5x_RESET: CALL SAVE_INTERRUPTS.switch_off
|
|||||||
JP SAVE_INTERRUPTS.restore
|
JP SAVE_INTERRUPTS.restore
|
||||||
;RET
|
;RET
|
||||||
.MOTOR_OFF: ;PUSH AF
|
.MOTOR_OFF: ;PUSH AF
|
||||||
LD A,#D0
|
LD A,#D0 ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||||
OUT (FDC_93.Command),A ;STOP OPERATION
|
OUT (FDC_93.Command),A ;STOP OPERATION
|
||||||
LD A,#00
|
LD A,#00
|
||||||
OUT (FDC_93.DrvCTRL),A
|
OUT (FDC_93.DrvCTRL),A
|
||||||
@ -212,7 +165,7 @@ FDD_5x_READ: EX AF,AF'
|
|||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
FDD_5x_LONG_READ:
|
FDD_5x_LONG_READ:
|
||||||
EXX
|
EXX
|
||||||
LD B,#80 ; COMMAND READ
|
LD B,#80 ; COMMAND READ ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||||
EXX
|
EXX
|
||||||
;
|
;
|
||||||
.RW_Shared: CALL SAVE_INTERRUPTS.switch_off
|
.RW_Shared: CALL SAVE_INTERRUPTS.switch_off
|
||||||
@ -238,9 +191,9 @@ FDD_5x_LONG_READ:
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD IY,(FDD_INIT_TABLE.FDD_0.BytesPerSector)
|
LD IY,(SYS_PAGE.FDD_TABLE.BytesPerSector)
|
||||||
LD XH,C ; Memory Page Number
|
LD XH,C ; Memory Page Number
|
||||||
LD A,(FDD_INIT_TABLE.FDD_0.SECTORS)
|
LD A,(SYS_PAGE.FDD_TABLE.SECTORS)
|
||||||
LD C,A
|
LD C,A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -360,7 +313,7 @@ FDD_5x_WRITE: EX AF,AF'
|
|||||||
;[]===========================================================[]
|
;[]===========================================================[]
|
||||||
FDD_5x_LONG_WRITE:
|
FDD_5x_LONG_WRITE:
|
||||||
EXX
|
EXX
|
||||||
LD B,#A0 ;COMMAND WRITE
|
LD B,#A0 ;COMMAND WRITE ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||||
EXX
|
EXX
|
||||||
JP FDD_5x_LONG_READ.RW_Shared
|
JP FDD_5x_LONG_READ.RW_Shared
|
||||||
;
|
;
|
||||||
@ -400,7 +353,7 @@ FDD_RW_SECTOR: LD D,5 ;RETRY COUNT
|
|||||||
.RW_PROC: EXX
|
.RW_PROC: EXX
|
||||||
BIT 5,B
|
BIT 5,B
|
||||||
EXX
|
EXX
|
||||||
; [ ] 15/04/25 à §¬¥à ᥪâ®à ¡®«ìè¥, 祬 ãáâ ®¢«¥® ¢ FDD_INIT_TABLE.FDD_0.BytesPerSector ¢ë§®¢¥â ®è¨¡ªã
|
; [ ] 15/04/25 à §¬¥à ᥪâ®à ¡®«ìè¥, 祬 ãáâ ®¢«¥® ¢ SYS_PAGE.FDD_TABLE.BytesPerSector ¢ë§®¢¥â ®è¨¡ªã
|
||||||
LD D,YH
|
LD D,YH
|
||||||
LD E,YL
|
LD E,YL
|
||||||
INC DE
|
INC DE
|
||||||
@ -466,7 +419,7 @@ FDD_RW_SECTOR: LD D,5 ;RETRY COUNT
|
|||||||
LD A,BIOS.Error.Write ; Error Write
|
LD A,BIOS.Error.Write ; Error Write
|
||||||
;
|
;
|
||||||
.error_exit: EX AF,AF'
|
.error_exit: EX AF,AF'
|
||||||
LD A,#D0
|
LD A,#D0 ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||||
OUT (FDC_93.Command),A ;STOP OPERATION
|
OUT (FDC_93.Command),A ;STOP OPERATION
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
BIT 0,C
|
BIT 0,C
|
||||||
@ -526,44 +479,32 @@ S_FDD: PUSH BC
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,(FDD_INIT_TABLE.FDD_0.DISK)
|
LD A,(SYS_PAGE.FDD_TABLE.DISK)
|
||||||
AND #FE
|
AND #FE
|
||||||
OR B
|
OR B
|
||||||
LD (FDD_INIT_TABLE.FDD_0.DISK),A
|
LD (SYS_PAGE.FDD_TABLE.DISK),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
POP BC
|
POP BC
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
|
||||||
; MOTOR_OFF:
|
|
||||||
; PUSH AF
|
|
||||||
; LD A,#D0
|
|
||||||
; OUT (FDC_93.Command),A ;STOP OPERATION
|
|
||||||
; LD A,#00
|
|
||||||
; OUT (FDC_93.DrvCTRL),A
|
|
||||||
; LD A,#3C
|
|
||||||
; OUT (FDC_93.DrvCTRL),A
|
|
||||||
; CALL SET_DOS_OFF
|
|
||||||
; POP AF
|
|
||||||
; RET
|
|
||||||
;
|
|
||||||
|
|
||||||
;
|
;
|
||||||
CHANGE_SPEED: IN A,(SLOT3)
|
CHANGE_SPEED: IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,(FDD_INIT_TABLE.FDD_0.F144)
|
LD A,(SYS_PAGE.FDD_TABLE.DISK)
|
||||||
XOR #80
|
XOR #80
|
||||||
LD (FDD_INIT_TABLE.FDD_0.F144),A
|
LD (SYS_PAGE.FDD_TABLE.DISK),A
|
||||||
AND #80
|
;AND #80
|
||||||
|
RLA
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
JR Z,FDD.SET720
|
;JR Z,FDD.SET720
|
||||||
;JP FDD.SET1440 ;ZF=0
|
JR NC,FDD.SET720
|
||||||
|
;JP FDD.SET1440 ;CF=1
|
||||||
FDD.SET1440: LD A,FDD_Density.SET_1440
|
FDD.SET1440: LD A,FDD_Density.SET_1440
|
||||||
OUT (FDD_Density),A
|
OUT (FDD_Density),A
|
||||||
RET
|
RET
|
||||||
@ -573,28 +514,30 @@ SET_SPEED: IN A,(SLOT3)
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,(FDD_INIT_TABLE.FDD_0.F144)
|
LD A,(SYS_PAGE.FDD_TABLE.DISK)
|
||||||
AND #80
|
;AND #80
|
||||||
|
RLA
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
JR NZ,FDD.SET1440
|
;JR NZ,FDD.SET1440
|
||||||
;JR FDD.SET720 ;ZF=1
|
JR C,FDD.SET1440
|
||||||
|
;JR FDD.SET720 ;CF=0
|
||||||
FDD.SET720: LD A,FDD_Density.SET_720
|
FDD.SET720: LD A,FDD_Density.SET_720
|
||||||
OUT (FDD_Density),A
|
OUT (FDD_Density),A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
; ¯à¥àë¢ ¨ï ¤®«¦ë ¡ëâì ®âª«îç¥ë
|
; ¯à¥àë¢ ¨ï ¤®«¦ë ¡ëâì ®âª«îç¥ë
|
||||||
; ¢ë室: A - FDD_INIT_TABLE.F144, B - sector size high byte
|
; ¢ë室: A - FDD_INIT_TABLE.DISK, B - sector size high byte
|
||||||
DISK_ID: EXX
|
DISK_ID: EXX
|
||||||
CALL SET_SPEED
|
CALL SET_SPEED
|
||||||
IN A,(FDC_93.Track)
|
IN A,(FDC_93.Track)
|
||||||
OUT (FDC_93.Data),A
|
OUT (FDC_93.Data),A
|
||||||
LD A,#18 ;!TODO ¢ë¯¨á âì ª®¬¬ ¤ë ‚ƒ ;SEARCH ; !HARDCODE
|
LD A,#18 ;!TODO ¢ë¯¨á âì ª®¬¬ ¤ë ‚ƒ ;SEARCH ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||||
CALL EXECOM
|
CALL EXECOM
|
||||||
LD C,4 ; áçñâ稪
|
LD C,4 ; áçñâ稪
|
||||||
.loop_reg_C: LD A,#C0
|
.loop_reg_C: LD A,#C0 ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||||
OUT (FDC_93.Command),A
|
OUT (FDC_93.Command),A
|
||||||
LD HL,#F000 ; áçñâ稪
|
LD HL,#F000 ; áçñâ稪
|
||||||
.loop_reg_HL: IN A,(FDC_93.DrvCTRL)
|
.loop_reg_HL: IN A,(FDC_93.DrvCTRL)
|
||||||
@ -635,20 +578,13 @@ DISK_ID: EXX
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
;LD A,L
|
LD A,(SYS_PAGE.FDD_TABLE.DISK)
|
||||||
;LD (FDD_INIT_TABLE.FDD_0.BytesPerSector + 1),A
|
|
||||||
LD A,(FDD_INIT_TABLE.FDD_0.F144)
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
AND #80
|
AND #80
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
SEEK: LD XL,A
|
SEEK: LD XL,A
|
||||||
LD C,A
|
LD C,A
|
||||||
@ -656,7 +592,7 @@ SEEK: LD XL,A
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,(FDD_INIT_TABLE.FDD_0.DISK)
|
LD A,(SYS_PAGE.FDD_TABLE.DISK)
|
||||||
AND 1
|
AND 1
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
@ -669,24 +605,20 @@ SEEK: LD XL,A
|
|||||||
OUT (FDC_93.DrvCTRL),A
|
OUT (FDC_93.DrvCTRL),A
|
||||||
IN A,(FDC_93.Track)
|
IN A,(FDC_93.Track)
|
||||||
CP C
|
CP C
|
||||||
;PUSH BC
|
|
||||||
CALL NZ,P50ms
|
CALL NZ,P50ms
|
||||||
;POP BC
|
|
||||||
LD A,C
|
LD A,C
|
||||||
OUT (FDC_93.Data),A
|
OUT (FDC_93.Data),A
|
||||||
IN A,(FDC_93.Track)
|
IN A,(FDC_93.Track)
|
||||||
CP C
|
CP C
|
||||||
EX AF,AF' ;R.TRACK==PHISICAL TRACK
|
EX AF,AF' ;R.TRACK==PHISICAL TRACK
|
||||||
LD A,#18
|
LD A,#18 ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||||
CALL EXECOM
|
CALL EXECOM
|
||||||
RET C
|
RET C
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,C
|
LD A,C
|
||||||
OUT (FDC_93.Track),A
|
OUT (FDC_93.Track),A
|
||||||
RET Z
|
RET Z
|
||||||
.STOL: ;PUSH BC
|
.STOL: CALL P50ms
|
||||||
CALL P50ms
|
|
||||||
;POP BC
|
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
;P750ms LD B,3
|
;P750ms LD B,3
|
||||||
@ -706,7 +638,7 @@ P50ms: PUSH BC
|
|||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
RESWG: LD A,8
|
RESWG: LD A,8 ;!HARDCODE CMD Š<>1818‚ƒ93
|
||||||
;
|
;
|
||||||
EXECOM: OUT (FDC_93.Command),A
|
EXECOM: OUT (FDC_93.Command),A
|
||||||
LD HL,#0000 ; áçñâ稪
|
LD HL,#0000 ; áçñâ稪
|
||||||
@ -734,7 +666,7 @@ NTRACK: PUSH HL
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,(FDD_INIT_TABLE.FDD_0.SECTORS)
|
LD A,(SYS_PAGE.FDD_TABLE.SECTORS)
|
||||||
LD C,A
|
LD C,A
|
||||||
LD B,0
|
LD B,0
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|||||||
@ -22,49 +22,31 @@ DRV_VERSION:
|
|||||||
LD DE,Disk_subsystem_ver_hex
|
LD DE,Disk_subsystem_ver_hex
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
|
;
|
||||||
DRV_LIST:
|
DRV_LIST:
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
PUSH AF
|
PUSH AF
|
||||||
PUSH IY
|
PUSH IY
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A ; !TODO ᤥ« âì áâàãªâãன
|
OUT (SLOT3),A ; !TODO ᤥ« âì áâàãªâãன
|
||||||
|
XOR A
|
||||||
LD (IX+0),#04 ; DB 0 ;LEN ;!HARDCODE
|
LD (IX+0),#04 ; DB 0 ;LEN ;!HARDCODE
|
||||||
LD (IX+1),#00 ; DB 0 ;FDD COUNT
|
;LD (IX+1),A ; DB 0 ;FDD COUNT
|
||||||
LD (IX+2),#00 ; DB 0 ;HDD COUNT
|
LD (IX+1),#02 ; DB 0 ;FDD COUNT
|
||||||
LD (IX+3),#00 ; DB 0 ;CDROM COUNT
|
LD (IX+2),A ; DB 0 ;HDD COUNT
|
||||||
|
LD (IX+3),A ; DB 0 ;CDROM COUNT
|
||||||
; ; BLOCK 13,0 ;RESERVED ;!TODO ᤥ« âì RAMDRIVE âãâ?
|
; ; BLOCK 13,0 ;RESERVED ;!TODO ᤥ« âì RAMDRIVE âãâ?
|
||||||
LD (IX+4),#00 ; END FLAG
|
LD (IX+4),A ; END FLAG
|
||||||
|
DEC A
|
||||||
|
|
||||||
;Calculating FDD devices
|
;Calculating FDD devices
|
||||||
LD A,#FF
|
; A=#FF
|
||||||
LD HL,FDD_INIT_TABLE.FDD_0
|
; LD HL,SYS_PAGE.FDD_TABLE
|
||||||
CALL .CHECK_FDD
|
; CALL .CHECK_FDD
|
||||||
LD HL,FDD_INIT_TABLE.FDD_1
|
; LD HL,SYS_PAGE.FDD_1_TABLE
|
||||||
CALL .CHECK_FDD
|
; CALL .CHECK_FDD
|
||||||
|
|
||||||
; INC (IX+1)
|
|
||||||
; LD B,8
|
|
||||||
; LD A,#FF
|
|
||||||
; .TFD0:
|
|
||||||
; CP (HL)
|
|
||||||
; INC HL
|
|
||||||
; JR NZ,.YYYFD0
|
|
||||||
; DJNZ .TFD0
|
|
||||||
; DEC (IX+1)
|
|
||||||
; .YYYFD0:
|
|
||||||
; LD HL,FDD_INIT_TABLE.FDD_1
|
|
||||||
; INC (IX+1)
|
|
||||||
; LD B,8
|
|
||||||
; LD A,#FF
|
|
||||||
; .TFD1:
|
|
||||||
; CP (HL)
|
|
||||||
; INC HL
|
|
||||||
; JR NZ,.YYYFD1
|
|
||||||
; DJNZ .TFD1
|
|
||||||
; DEC (IX+1)
|
|
||||||
; .YYYFD1:
|
|
||||||
|
|
||||||
; A=#FF
|
; A=#FF
|
||||||
;Calculating IDE devices IDE TYPE 1-HDD, 2-CD-ROM
|
;Calculating IDE devices IDE TYPE 1-HDD, 2-CD-ROM
|
||||||
LD IY,IDE.INIT_TBL_IDE0
|
LD IY,IDE.INIT_TBL_IDE0
|
||||||
@ -84,57 +66,7 @@ DRV_LIST:
|
|||||||
.NEXT_IDE:
|
.NEXT_IDE:
|
||||||
ADD IY,DE
|
ADD IY,DE
|
||||||
DJNZ .CHECK_IDE
|
DJNZ .CHECK_IDE
|
||||||
|
;
|
||||||
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
|
|
||||||
; CP #FF
|
|
||||||
; JR Z,.ABSIDE0
|
|
||||||
; CP IDE.Device.HDD
|
|
||||||
; JR NZ,.NOT_HD0
|
|
||||||
; INC (IX+2)
|
|
||||||
; .NOT_HD0:
|
|
||||||
; CP IDE.Device.ATAPI
|
|
||||||
; JR NZ,.NOT_CD0
|
|
||||||
; INC (IX+3)
|
|
||||||
; .NOT_CD0:
|
|
||||||
; .ABSIDE0:
|
|
||||||
; LD IY,IDE.INIT_TBL_IDE1
|
|
||||||
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
|
|
||||||
; CP #FF
|
|
||||||
; JR Z,.ABSIDE1
|
|
||||||
; CP IDE.Device.HDD
|
|
||||||
; JR NZ,.NOT_HD1
|
|
||||||
; INC (IX+2)
|
|
||||||
; .NOT_HD1:
|
|
||||||
; CP IDE.Device.ATAPI
|
|
||||||
; JR NZ,.NOT_CD1
|
|
||||||
; INC (IX+3)
|
|
||||||
; .NOT_CD1:
|
|
||||||
; .ABSIDE1:
|
|
||||||
; LD IY,IDE.INIT_TBL_IDE2
|
|
||||||
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
|
|
||||||
; CP #FF
|
|
||||||
; JR Z,.ABSIDE2
|
|
||||||
; CP IDE.Device.HDD
|
|
||||||
; JR NZ,.NOT_HD2
|
|
||||||
; INC (IX+2)
|
|
||||||
; .NOT_HD2:
|
|
||||||
; CP IDE.Device.ATAPI
|
|
||||||
; JR NZ,.NOT_CD2
|
|
||||||
; INC (IX+3)
|
|
||||||
; .NOT_CD2:
|
|
||||||
; .ABSIDE2:
|
|
||||||
; LD IY,IDE.INIT_TBL_IDE3
|
|
||||||
; LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
|
|
||||||
; CP #FF
|
|
||||||
; JR Z,.check_exit
|
|
||||||
; CP IDE.Device.HDD
|
|
||||||
; JR NZ,.NOT_HD3
|
|
||||||
; INC (IX+2)
|
|
||||||
; .NOT_HD3:
|
|
||||||
; CP IDE.Device.ATAPI
|
|
||||||
; JR NZ,.check_exit
|
|
||||||
; INC (IX+3)
|
|
||||||
|
|
||||||
.check_exit:
|
.check_exit:
|
||||||
POP IY
|
POP IY
|
||||||
POP AF
|
POP AF
|
||||||
@ -143,16 +75,16 @@ DRV_LIST:
|
|||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
; A=#FF
|
; A=#FF
|
||||||
.CHECK_FDD:
|
; .CHECK_FDD:
|
||||||
INC (IX+1)
|
; INC (IX+1)
|
||||||
LD B,8
|
; LD B,8
|
||||||
.TFD0: CP (HL)
|
; .TFD0: CP (HL)
|
||||||
INC HL
|
; INC HL
|
||||||
RET NZ
|
; RET NZ
|
||||||
DJNZ .TFD0
|
; DJNZ .TFD0
|
||||||
DEC (IX+1)
|
; DEC (IX+1)
|
||||||
RET
|
; RET
|
||||||
;
|
; ;
|
||||||
|
|
||||||
INCLUDE 'EXTENDED/FDD_DRIVER_2.asm'
|
INCLUDE 'EXTENDED/FDD_DRIVER_2.asm'
|
||||||
INCLUDE 'EXTENDED/RAM_DISK_DRIVER_1.asm'
|
INCLUDE 'EXTENDED/RAM_DISK_DRIVER_1.asm'
|
||||||
|
|||||||
@ -1191,56 +1191,58 @@ MOVE1: LD HL,#8000 ; !HARDCODE
|
|||||||
SYSID: DZ "Starting..."
|
SYSID: DZ "Starting..."
|
||||||
.length EQU $-SYSID
|
.length EQU $-SYSID
|
||||||
|
|
||||||
;!FIXIT ¯¥à¥¤¥« âì ¯®¤ áâàãªâãàã ¤«ï ¯¥à¥¬¥ëå FDD, ®â¤¥«ìë¥ ¯¥à¥¬¥ë¥ ¯®¤ A ¨ B
|
|
||||||
FD144A: DB #80,#12,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD
|
;FD144A: DB #80,#12,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD
|
||||||
.Size EQU $ - FD144A
|
; .Size EQU $ - FD144A
|
||||||
FD720A: DB #00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD
|
; FD720A: DB #00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD
|
||||||
.Size EQU $ - FD720A
|
; .Size EQU $ - FD720A
|
||||||
|
FDD_INIT_TABLE: FDD_1440_TABLE
|
||||||
|
|
||||||
FDD_INSTAL: IN A,(SLOT3)
|
FDD_INSTAL: IN A,(SLOT3)
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD HL,FDD_INIT_TABLE.FDD_0
|
LD HL,SYS_PAGE.FDD_TABLE
|
||||||
LD BC,SYS_PAGE.FDD_TBL.Size*256 + #FF ; table_size*256 + fill_byte
|
LD BC,SYS_PAGE.FDD_TABLE.Size*256 + #FF ; table_size*256 + fill_byte
|
||||||
.FILLFDD: LD (HL),C
|
.FILLFDD: LD (HL),C
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ .FILLFDD
|
DJNZ .FILLFDD
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
;EX AF,AF'
|
||||||
OUT (SLOT3),A
|
;OUT (SLOT3),A
|
||||||
LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311
|
;LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311
|
||||||
CALL GET_CMOS_VALUE
|
;CALL GET_CMOS_VALUE
|
||||||
LD HL,FD720A
|
;LD HL,FD720A
|
||||||
OR A
|
;OR A
|
||||||
JR Z,.SETFD0
|
;JR Z,.SETFD0
|
||||||
LD HL,FD144A
|
LD HL,FDD_INIT_TABLE
|
||||||
DEC A
|
;DEC A
|
||||||
JR NZ,.NOFDD0
|
;JR NZ,.NOFDD0
|
||||||
.SETFD0: IN A,(SLOT3)
|
;.SETFD0: ;IN A,(SLOT3)
|
||||||
EX AF,AF'
|
;EX AF,AF'
|
||||||
LD A,SYS_PAGE
|
;LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
;OUT (SLOT3),A
|
||||||
LD DE,FDD_INIT_TABLE.FDD_0
|
LD DE,SYS_PAGE.FDD_TABLE
|
||||||
LD BC,FD144A.Size ; !HARDCODE
|
; B=0
|
||||||
LDIR
|
LD C,SYS_PAGE.FDD_TABLE.Size
|
||||||
EX AF,AF'
|
|
||||||
OUT (SLOT3),A
|
|
||||||
.NOFDD0: LD BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD ;#0C11
|
|
||||||
CALL GET_CMOS_VALUE
|
|
||||||
LD HL,FD720A
|
|
||||||
OR A
|
|
||||||
JR Z,.SETFD1
|
|
||||||
LD HL,FD144A
|
|
||||||
DEC A
|
|
||||||
JR NZ,.NOFDD1
|
|
||||||
.SETFD1: IN A,(SLOT3)
|
|
||||||
EX AF,AF'
|
|
||||||
LD A,SYS_PAGE
|
|
||||||
OUT (SLOT3),A
|
|
||||||
LD DE,FDD_INIT_TABLE.FDD_1
|
|
||||||
LD BC,FD144A.Size ; !HARDCODE
|
|
||||||
LDIR
|
LDIR
|
||||||
|
;EX AF,AF'
|
||||||
|
;OUT (SLOT3),A
|
||||||
|
;.NOFDD0: LD BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD ;#0C11
|
||||||
|
;CALL GET_CMOS_VALUE
|
||||||
|
;LD HL,FD720A
|
||||||
|
;OR A
|
||||||
|
;JR Z,.SETFD1
|
||||||
|
;LD HL,FD144A
|
||||||
|
;DEC A
|
||||||
|
;JR NZ,.NOFDD1
|
||||||
|
;.SETFD1: IN A,(SLOT3)
|
||||||
|
;EX AF,AF'
|
||||||
|
;LD A,SYS_PAGE
|
||||||
|
;OUT (SLOT3),A
|
||||||
|
;LD DE,SYS_PAGE.FDD_1_TABLE
|
||||||
|
;LD BC,FD144A.Size
|
||||||
|
;LDIR
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
.NOFDD1: RET
|
.NOFDD1: RET
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
;=======================[All shared EQUs]=======================;
|
;=======================[All shared EQUs]=======================;
|
||||||
BETA_BUILD EQU 40 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
BETA_BUILD EQU 40 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
||||||
BETA_RC EQU 0 ;
|
BETA_RC EQU 2 ;
|
||||||
;======================[All shared defines]=====================;
|
;======================[All shared defines]=====================;
|
||||||
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
|
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
|
||||||
DEFINE SP2000_Loader_Flag #0107 ;
|
DEFINE SP2000_Loader_Flag #0107 ;
|
||||||
@ -21,7 +21,6 @@ BETA_RC EQU 0 ;
|
|||||||
DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ ⥫ì᪮£® INT
|
DEFINE TEST_INT 1 ; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ ⥫ì᪮£® INT
|
||||||
DEFINE NEW_FEATURE 0 ; !TODO ¯ãªâë ¢ á¥â ¯
|
DEFINE NEW_FEATURE 0 ; !TODO ¯ãªâë ¢ á¥â ¯
|
||||||
;DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª ¤«ï äãªæ¨© 5x
|
;DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª ¤«ï äãªæ¨© 5x
|
||||||
DEFINE FDD_NormalCount 0 ; !TODO
|
|
||||||
DEFINE UnusedSettingsFeatures 0 ;
|
DEFINE UnusedSettingsFeatures 0 ;
|
||||||
;DEFINE OPTIMIZE_RW_PROCEDURE 0 ;
|
;DEFINE OPTIMIZE_RW_PROCEDURE 0 ;
|
||||||
DEFINE BIG_ENDIAN_STR_PRINT 1 ;
|
DEFINE BIG_ENDIAN_STR_PRINT 1 ;
|
||||||
|
|||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user