new sub-function HDD_5x.DETECT
This commit is contained in:
parent
87a7ecbd70
commit
2f448e715f
@ -1 +1 @@
|
||||
Subproject commit 94cb0e39f321bd11519008801187d93eacb280f2
|
||||
Subproject commit 95d1fbbb4a2b0de5e09534432be8caa51bcd2142
|
||||
@ -509,7 +509,7 @@ TAB_5xFNS:
|
||||
DB low HDD_5x.VERIFY
|
||||
DB low HDD_5x.READ
|
||||
DB low HDD_5x.WRITE
|
||||
DB low FN_ABSENT_5x
|
||||
DB low HDD_5x.DETECT
|
||||
DB low HDD_5x.GETMED
|
||||
DB low HDD_5x.SETMED
|
||||
|
||||
@ -603,7 +603,7 @@ TAB_5xFNS:
|
||||
DB high HDD_5x.VERIFY
|
||||
DB high HDD_5x.READ
|
||||
DB high HDD_5x.WRITE
|
||||
DB high FN_ABSENT_5x
|
||||
DB high HDD_5x.DETECT
|
||||
DB high HDD_5x.GETMED
|
||||
DB high HDD_5x.SETMED
|
||||
|
||||
|
||||
@ -76,7 +76,8 @@ IDE3 EQU #C1D8
|
||||
|
||||
WRITE_OUTI_DUPs EQU 32 ; bytes
|
||||
|
||||
|
||||
;[]================================================================[#51]
|
||||
;Function: Reset drive
|
||||
HDD_5x.RESET: ; !FIXIT ¥ à¥á¥â¨âáï?
|
||||
;For non-ATAPI drives, the only method a driver has of resetting a drive
|
||||
; after a major error is to do a "software reset" on the bus.
|
||||
@ -86,6 +87,7 @@ HDD_5x.RESET: ; !FIXIT
|
||||
; automatically selected.
|
||||
XOR A
|
||||
RET
|
||||
;[]================================================================[#51]
|
||||
|
||||
SELECTH:
|
||||
AND #0F
|
||||
@ -131,7 +133,7 @@ NODRIVE:
|
||||
SCF
|
||||
RET
|
||||
|
||||
;[]===========================================================[]
|
||||
;[]================================================================[#58]
|
||||
;Function: Get Current Media Parameters
|
||||
; A - Disk
|
||||
;Return:
|
||||
@ -140,7 +142,6 @@ NODRIVE:
|
||||
; DE - Cylinders
|
||||
; IX - Capacity sector in bytes
|
||||
; B - Flags: ide chanel
|
||||
;[]===========================================================[]
|
||||
HDD_5x.GETMED:
|
||||
CALL SELECTH
|
||||
RET C
|
||||
@ -159,8 +160,9 @@ HDD_5x.GETMED:
|
||||
EX AF,AF'
|
||||
AND A
|
||||
RET
|
||||
;[]================================================================[#58]
|
||||
|
||||
;[]===========================================================[]
|
||||
;[]================================================================[#59]
|
||||
;Function: Set Current Media Parameters
|
||||
; A - Disk
|
||||
; H - Heads
|
||||
@ -169,7 +171,6 @@ HDD_5x.GETMED:
|
||||
; IX - Capacity sector in bytes
|
||||
; B - Flags
|
||||
;Return: None
|
||||
;[]===========================================================[]
|
||||
HDD_5x.SETMED:
|
||||
CALL SELECTH
|
||||
RET C
|
||||
@ -187,8 +188,9 @@ HDD_5x.SETMED:
|
||||
EX AF,AF'
|
||||
AND A
|
||||
RET
|
||||
;[]================================================================[#59]
|
||||
|
||||
;[]===========================================================[]
|
||||
;[]================================================================[#55]
|
||||
;Function: Read Sectors
|
||||
; A - Disk
|
||||
; HL:IX - Sector
|
||||
@ -197,13 +199,12 @@ HDD_5x.SETMED:
|
||||
;Return:
|
||||
; HL:IX - Sector + Sector counter
|
||||
; DE - Address + (Sector counter * Size sector)
|
||||
;[]===========================================================[]
|
||||
;READ SECTOR(S)
|
||||
HDD_5x.READ:
|
||||
EX AF,AF'
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
;[]===========================================================[]
|
||||
;[]================================================================[#52]
|
||||
;Function: Long Read Sectors
|
||||
; A - Disk
|
||||
; HL:IX - Sector
|
||||
@ -213,7 +214,6 @@ HDD_5x.READ:
|
||||
;Return:
|
||||
; HL:IX - Sector + Sector counter
|
||||
; DE - Address + (Sector counter * Size sector)
|
||||
;[]===========================================================[]
|
||||
;LONG READ SECTOR(S)
|
||||
HDD_5x.LONG_READ:
|
||||
PUSH IY
|
||||
@ -275,7 +275,6 @@ RST8RDR:
|
||||
POP IY
|
||||
EX AF,AF'
|
||||
RET
|
||||
|
||||
;READ SECTOR(S)
|
||||
RDS000: CALL SELECTH
|
||||
RET C
|
||||
@ -350,8 +349,10 @@ RDS004: DUP 16
|
||||
JP NZ,RDS002
|
||||
XOR A
|
||||
RET
|
||||
;[]===========================================================[#52, #55]
|
||||
|
||||
;[]===========================================================[]
|
||||
|
||||
;[]================================================================[#56]
|
||||
;Function: Write Sectors
|
||||
; A - Disk
|
||||
; HL:IX - Sector
|
||||
@ -360,13 +361,12 @@ RDS004: DUP 16
|
||||
;Return:
|
||||
; HL:IX - Sector + Sector counter
|
||||
; DE - Address + (Sector counter * Size sector)
|
||||
;[]===========================================================[]
|
||||
;WRITE SECTOR(S)
|
||||
HDD_5x.WRITE:
|
||||
EX AF,AF'
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
;[]===========================================================[]
|
||||
;[]================================================================[#53]
|
||||
;Function: Long Write Sectors
|
||||
; A - Disk
|
||||
; HL:IX - Sector
|
||||
@ -376,7 +376,6 @@ HDD_5x.WRITE:
|
||||
;Return:
|
||||
; HL:IX - Sector + Sector counter
|
||||
; DE - Address + (Sector counter * Size sector)
|
||||
;[]===========================================================[]
|
||||
;WRITE SECTOR(S)
|
||||
HDD_5x.LONG_WRITE:
|
||||
PUSH IY
|
||||
@ -532,14 +531,15 @@ WRS003:
|
||||
JP NZ,WRS002
|
||||
XOR A
|
||||
RET
|
||||
;[]===========================================================[#53, #56]
|
||||
|
||||
;[]===========================================================[]
|
||||
|
||||
;[]================================================================[#54]
|
||||
;Function: Verify Sectors
|
||||
; A - Disk
|
||||
; HL:IX - Sector
|
||||
; B - Sector counter
|
||||
;Return: None
|
||||
;[]===========================================================[]
|
||||
;VERIFY SECTOR(S)
|
||||
HDD_5x.VERIFY:
|
||||
PUSH IY
|
||||
@ -557,7 +557,7 @@ HDD_5x.VERIFY:
|
||||
EXX
|
||||
POP IY
|
||||
RET
|
||||
|
||||
;[]================================================================[#54]
|
||||
;VERIFY SECTOR(S)
|
||||
VRS000: CALL SELECTH
|
||||
RET C
|
||||
@ -588,7 +588,6 @@ VRS003: LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1
|
||||
|
||||
; HL:IX - LBA SECTOR
|
||||
; B - SECTOR COUNTER
|
||||
|
||||
PRESET: LD A,B
|
||||
LD BC,IDE.Write.Counter
|
||||
OUT (C),A
|
||||
@ -684,4 +683,39 @@ WAITPRT:
|
||||
.error: LD A,4 ;!HARDCODE error number
|
||||
SCF
|
||||
RET
|
||||
;=======================================================
|
||||
;=======================================================================
|
||||
|
||||
;[]================================================================[#57]
|
||||
;Function: Detect Disk
|
||||
; A - Disk
|
||||
;Return: CF=0 - A=Drive type
|
||||
; CF=1 - drive not present, A=#FF
|
||||
HDD_5x.DETECT:
|
||||
CP #84 ;!HARDCODE max HDD drives (#80,#81,#82,#83)
|
||||
CCF
|
||||
RET C
|
||||
|
||||
LD HL,IDE.INIT_TBL_IDE0.DriveType
|
||||
AND 3
|
||||
JR Z,.get_param
|
||||
LD HL,IDE.INIT_TBL_IDE1.DriveType
|
||||
DEC A
|
||||
JR Z,.get_param
|
||||
LD HL,IDE.INIT_TBL_IDE2.DriveType
|
||||
DEC A
|
||||
JR Z,.get_param
|
||||
LD HL,IDE.INIT_TBL_IDE3.DriveType
|
||||
.get_param:
|
||||
IN A,(SLOT3)
|
||||
LD B,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD A,(HL)
|
||||
LD C,SLOT3
|
||||
OUT (C),B
|
||||
|
||||
CP #FF
|
||||
CCF
|
||||
RET
|
||||
;[]================================================================[#57]
|
||||
Loading…
Reference in New Issue
Block a user