ещё куски для media change flag
This commit is contained in:
parent
82c590c8a4
commit
e5856eef12
@ -54,6 +54,7 @@ CD_5x_RESET: LD C,IDE.Device.ATAPI
|
||||
; DE - Cylinders
|
||||
; IX - Capacity sector in bytes
|
||||
; B - Flags: MASTER/SLAVE, LBA/CHS
|
||||
; [ ] A - HDD_INIT_TABLE.RemovableMedia
|
||||
CD_5x_GETMED: LD C,IDE.Device.ATAPI
|
||||
CALL SELECT_DRIVE
|
||||
RET C
|
||||
@ -79,6 +80,7 @@ CD_5x_GETMED: LD C,IDE.Device.ATAPI
|
||||
; LD H,(IY+IDE.HDD_INIT_TABLE.HeadsNumber)
|
||||
; LD E,(IY+IDE.HDD_INIT_TABLE.CylinderNumberLow)
|
||||
; LD D,(IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh)
|
||||
LD A,(IY+IDE.HDD_INIT_TABLE.RemovableMedia)
|
||||
LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
|
||||
LD L,(IY+IDE.HDD_INIT_TABLE.SectorSize) ;[ ] sector size
|
||||
LD H,(IY+IDE.HDD_INIT_TABLE.SectorSize + 1) ;[ ] sector size
|
||||
@ -91,7 +93,7 @@ CD_5x_GETMED: LD C,IDE.Device.ATAPI
|
||||
LD E,H
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
;AND A
|
||||
EX AF,AF
|
||||
RET
|
||||
;[]================================================================[#58]
|
||||
|
||||
@ -255,10 +257,32 @@ CD_5x_LONG_WRITE:
|
||||
; A - Disk
|
||||
;Return: CF=0 - A=Drive type
|
||||
; CF=1 - drive not present, A=#02
|
||||
CD_5x_DETECT:
|
||||
LD C,IDE.Device.ATAPI
|
||||
AND %1011'1111
|
||||
JP DRV_DETECT
|
||||
CD_5x_DETECT: LD C,IDE.Device.ATAPI
|
||||
AND %1011'1111
|
||||
CALL DRV_DETECT
|
||||
RET C
|
||||
;
|
||||
PUSH AF
|
||||
LD BC,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
INC HL ;!HARDCODE HDD_INIT_TABLE
|
||||
INC HL
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
OUT (C),B
|
||||
AND %0000'0010
|
||||
JR Z,.exit
|
||||
;
|
||||
POP AF
|
||||
LD A,BIOS.Error.ATAPI.UnitAttention
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.exit: POP AF
|
||||
RET
|
||||
|
||||
;[]================================================================[#57]
|
||||
|
||||
|
||||
@ -323,11 +347,8 @@ CD_CHECK_MEDIA_CHANGED:
|
||||
OR #70
|
||||
EXX
|
||||
CP BIOS.Error.ATAPI.NoSence
|
||||
JP Z,CD_MEDIA_CHANGED_ERROR
|
||||
;SCF
|
||||
RET NZ
|
||||
;
|
||||
CALL CD_MEDIA_CHANGED_ERROR
|
||||
; LD A,BIOS.Error.ATAPI.UnitAttention
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
@ -338,8 +359,7 @@ TRAY_FN: LD HL,ATAPI_CMD_PACKET.CLOSE
|
||||
JR Z,EXEC_PACKET_COMMAND
|
||||
LD HL,ATAPI_CMD_PACKET.OPEN
|
||||
;JR EXEC_PACKET_COMMAND
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
; INPUT: HL - AP packet (12bytes)
|
||||
; DE - address for/with data if needed
|
||||
;
|
||||
@ -379,8 +399,8 @@ EXEC_PACKET_COMMAND:
|
||||
EXX
|
||||
CALL CD_WAITPRT
|
||||
EXX
|
||||
;RET C
|
||||
JR C,CD_CHECK_MEDIA_CHANGED.noWait
|
||||
JR C,.error
|
||||
;JR C,CD_CHECK_MEDIA_CHANGED.noWait
|
||||
;
|
||||
.READY: LD C,SLOT3
|
||||
IN B,(C)
|
||||
@ -413,19 +433,30 @@ EXEC_PACKET_COMMAND:
|
||||
OUT (C),A
|
||||
CALL CD_WAITPRT
|
||||
EXX
|
||||
;RET C
|
||||
JR C,CD_CHECK_MEDIA_CHANGED.noWait
|
||||
JR C,.error
|
||||
;JR C,CD_CHECK_MEDIA_CHANGED.noWait
|
||||
;
|
||||
EXX
|
||||
LD DE,256*(IDE.CtrlByte.DataRequest+IDE.CtrlByte.Error)+IDE.CtrlByte.DataRequest
|
||||
CALL CD_WAITPRT.Custom
|
||||
EXX
|
||||
BIT IDE.CtrlBit.Error,A
|
||||
JR NZ,CD_CHECK_MEDIA_CHANGED.noWait
|
||||
JR NC,.YEP_DRQ
|
||||
LD A,BIOS.Error.ATAPI.TimeOut ;!FIXIT media change test
|
||||
;
|
||||
CP #FF
|
||||
JR Z,.error_fail
|
||||
;
|
||||
RRA ;AND IDE.CtrlByte.Error
|
||||
JR C,CD_CHECK_MEDIA_CHANGED.noWait
|
||||
;
|
||||
LD A,BIOS.Error.ATAPI.TimeOut
|
||||
RET
|
||||
;
|
||||
.error: CP #FF
|
||||
SCF
|
||||
.error_fail: LD A,BIOS.Error.Failure
|
||||
RET Z
|
||||
LD A,BIOS.Error.Busy
|
||||
RET
|
||||
; .CMD_ERROR: CALL CD_GET_ERROR
|
||||
; OR #70
|
||||
; CP BIOS.Error.UnitAttention
|
||||
@ -475,7 +506,8 @@ EXEC_PACKET_COMMAND:
|
||||
EXX
|
||||
CALL CD_WAITPRT
|
||||
EXX
|
||||
RET C
|
||||
JR C,.error
|
||||
;
|
||||
LD BC,IDE.Read.Status
|
||||
IN A,(C)
|
||||
BIT IDE.CtrlBit.Error,A
|
||||
@ -575,7 +607,7 @@ CD_GET_ERROR: LD BC,IDE.Read.Error ;ERROR
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
; D - MASK, E - PATTERN
|
||||
CD_WAITPRT: LD DE,256*(IDE.CtrlByte.Busy) + 0
|
||||
CD_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0
|
||||
.Custom: LD B,100
|
||||
LD HL,#0000
|
||||
.LOOP: LD A,high IDE.Read.Status
|
||||
@ -592,10 +624,7 @@ CD_WAITPRT: LD DE,256*(IDE.CtrlByte.Busy) + 0
|
||||
DEC H
|
||||
JR NZ,.LOOP
|
||||
DJNZ .LOOP
|
||||
;
|
||||
;EX AF,AF'
|
||||
.error: ; !FIXIT error number
|
||||
SCF
|
||||
.error: SCF
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user