ATAPI media changed flag
This commit is contained in:
parent
d25dacb942
commit
82c590c8a4
@ -1 +1 @@
|
||||
Subproject commit d21dd0c0291e48f53d40b7bd09fcb8e7756dda1e
|
||||
Subproject commit 857938d1dbf3b332a5e9e8ccabfee531eb3848fa
|
||||
@ -28,10 +28,16 @@ CD_5x_RESET: LD C,IDE.Device.ATAPI
|
||||
RET C
|
||||
LD B,50
|
||||
.loop: PUSH BC
|
||||
CALL CD_TEST
|
||||
LD HL,ATAPI_CMD_PACKET.NOP
|
||||
LD DE,0 ; ¬ થà ⮣®, çâ® ¥ 㦮 ç¨â âì á ãáâனá⢠¢ އ“
|
||||
CALL EXEC_PACKET_COMMAND
|
||||
;!FIXIT ;[ ] sector size. ᤥ« âì २¨â HDD_INIT_TABLE
|
||||
POP BC
|
||||
RET NC
|
||||
;
|
||||
CALL CD_CHECK_MEDIA_CHANGED
|
||||
RET C
|
||||
;
|
||||
EI
|
||||
HALT
|
||||
DJNZ .loop
|
||||
@ -51,14 +57,6 @@ CD_5x_RESET: LD C,IDE.Device.ATAPI
|
||||
CD_5x_GETMED: LD C,IDE.Device.ATAPI
|
||||
CALL SELECT_DRIVE
|
||||
RET C
|
||||
; [ ] sector size. media changed
|
||||
CALL CD_CHECK_MEDIA_CHANGED
|
||||
JR NC,.get_data
|
||||
;
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
JR NZ,.get_data
|
||||
;
|
||||
|
||||
;
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
@ -69,28 +67,21 @@ CD_5x_GETMED: LD C,IDE.Device.ATAPI
|
||||
CALL CD_CHECK_MEDIA_CHANGED
|
||||
JR NC,.get_data
|
||||
;
|
||||
CP BIOS.Error.ATAPI.UnitAttention
|
||||
JR NZ,.get_data
|
||||
; CP BIOS.Error.ATAPI.UnitAttention
|
||||
; JR NZ,.get_data
|
||||
;
|
||||
LD HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA
|
||||
LD DE,SYS_PAGE.TMP_BUFFER
|
||||
CALL EXEC_PACKET_COMMAND
|
||||
LD HL,#FFFF
|
||||
JR C,.No_Media
|
||||
LD A,(IY + IDE.HDD_INIT_TABLE.RemovableMedia)
|
||||
AND %1111'1101
|
||||
LD (IY + IDE.HDD_INIT_TABLE.RemovableMedia),A
|
||||
;
|
||||
LD HL,(SYS_PAGE.TMP_BUFFER + 6) ; sector size (high byte, low byte)
|
||||
;
|
||||
.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H ;[ ]sector size
|
||||
LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L ;[ ]sector size
|
||||
;
|
||||
.get_data: ;
|
||||
; LD L,(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack)
|
||||
; 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 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
|
||||
LD L,(IY+IDE.HDD_INIT_TABLE.SectorSize) ;[ ] sector size
|
||||
LD H,(IY+IDE.HDD_INIT_TABLE.SectorSize + 1) ;[ ] sector size
|
||||
EX DE,HL
|
||||
LD XL,E
|
||||
LD XH,D
|
||||
@ -303,25 +294,40 @@ CD_REQUEST_SENSE:
|
||||
JR EXEC_PACKET_COMMAND
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
;[ ] media changed
|
||||
;----------------------------------------------------------------------;
|
||||
CD_CHECK_MEDIA_CHANGED:
|
||||
EXX
|
||||
LD DE,256*(IDE.CtrlByte.Error) + 0
|
||||
CALL CD_WAITPRT.Custom
|
||||
EXX
|
||||
RET NC
|
||||
;RET NC
|
||||
JR C,.noWait
|
||||
;
|
||||
EXX
|
||||
LD BC,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
;
|
||||
LD A,(IY + IDE.HDD_INIT_TABLE.RemovableMedia)
|
||||
OUT (C),B
|
||||
EXX
|
||||
RRA
|
||||
RRA
|
||||
LD A,BIOS.Error.ATAPI.UnitAttention
|
||||
RET
|
||||
;
|
||||
.noWait: EXX
|
||||
CALL CD_GET_ERROR
|
||||
OR #70
|
||||
EXX
|
||||
CP BIOS.Error.ATAPI.NoSence
|
||||
SCF
|
||||
;SCF
|
||||
RET NZ
|
||||
;
|
||||
CALL CD_MEDIA_CHANGED_ERROR
|
||||
; CF=1
|
||||
LD A,BIOS.Error.ATAPI.UnitAttention
|
||||
; LD A,BIOS.Error.ATAPI.UnitAttention
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
@ -595,16 +601,14 @@ CD_WAITPRT: LD DE,256*(IDE.CtrlByte.Busy) + 0
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
CD_TEST: LD HL,ATAPI_CMD_PACKET.NOP
|
||||
LD DE,0 ; ¬ થà ⮣®, çâ® ¥ 㦮 ç¨â âì á ãáâனá⢠¢ އ“
|
||||
JP EXEC_PACKET_COMMAND
|
||||
; CD_TEST: LD HL,ATAPI_CMD_PACKET.NOP
|
||||
; LD DE,0 ; ¬ થà ⮣®, çâ® ¥ 㦮 ç¨â âì á ãáâனá⢠¢ އ“
|
||||
; JP EXEC_PACKET_COMMAND
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
CD_MEDIA_CHANGED_ERROR:
|
||||
PUSH AF
|
||||
;
|
||||
IN A,(SLOT3)
|
||||
PUSH AF
|
||||
LD A,SYS_PAGE
|
||||
@ -625,12 +629,31 @@ CD_MEDIA_CHANGED_ERROR:
|
||||
AND A
|
||||
JR NZ,.exit
|
||||
;
|
||||
LD A,%0000'0011
|
||||
LD A,(IY + IDE.HDD_INIT_TABLE.RemovableMedia)
|
||||
OR %0000'0011
|
||||
LD (IY + IDE.HDD_INIT_TABLE.RemovableMedia),A
|
||||
;
|
||||
LD HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA
|
||||
LD DE,SYS_PAGE.TMP_BUFFER
|
||||
CALL EXEC_PACKET_COMMAND
|
||||
LD HL,#FFFF
|
||||
JR C,.No_Media
|
||||
;
|
||||
LD HL,(SYS_PAGE.TMP_BUFFER + 6) ; sector size (high byte, low byte)
|
||||
;
|
||||
.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H ;[ ] sector size
|
||||
LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L
|
||||
;
|
||||
POP AF
|
||||
OUT (SLOT3),A
|
||||
LD A,BIOS.Error.ATAPI.UnitAttention
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.exit: POP AF
|
||||
OUT (SLOT3),A
|
||||
POP AF
|
||||
; CF=0
|
||||
;AND A
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
@ -523,20 +523,18 @@ WRITE_ATA_SECTORs:
|
||||
; B - Sector counter
|
||||
;Return: None
|
||||
;VERIFY SECTOR(S)
|
||||
HDD_5x_VERIFY:
|
||||
PUSH IY
|
||||
SAFE_PORTY_2
|
||||
PUSH IX
|
||||
PUSH HL
|
||||
CALL VRS000
|
||||
POP HL
|
||||
POP IX
|
||||
RESTORE_PORTY
|
||||
POP IY
|
||||
RET
|
||||
;[]================================================================[#54]
|
||||
HDD_5x_VERIFY: PUSH IY
|
||||
SAFE_PORTY_2
|
||||
PUSH IX
|
||||
PUSH HL
|
||||
CALL .VERIFY
|
||||
POP HL
|
||||
POP IX
|
||||
RESTORE_PORTY
|
||||
POP IY
|
||||
RET
|
||||
;VERIFY SECTOR(S)
|
||||
VRS000: LD C,IDE.Device.HDD
|
||||
.VERIFY: LD C,IDE.Device.HDD
|
||||
CALL SELECT_DRIVE
|
||||
RET C
|
||||
EXX
|
||||
@ -549,16 +547,17 @@ VRS000: LD C,IDE.Device.HDD
|
||||
LD BC,IDE.Write.Command
|
||||
LD A,IDE.ATA.ReadVerifySectorsWithRetry
|
||||
OUT (C),A
|
||||
VRS002: LD BC,IDE.Read.Status
|
||||
LD BC,IDE.Read.Status
|
||||
IN A,(C)
|
||||
BIT IDE.CtrlBit.Error,A
|
||||
JR Z,VRS003
|
||||
SCF
|
||||
RET
|
||||
VRS003: CALL WAITPRT
|
||||
;BIT IDE.CtrlBit.Error,A
|
||||
RRA ;BIT IDE.CtrlBit.Error,A : SCF : RET NZ
|
||||
RET C
|
||||
;
|
||||
CALL WAITPRT
|
||||
RET C
|
||||
XOR A
|
||||
RET
|
||||
;[]================================================================[#54]
|
||||
|
||||
|
||||
; HL:IX - LBA SECTOR
|
||||
|
||||
Loading…
Reference in New Issue
Block a user