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