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