костыли со сменой носителя ATAPI

This commit is contained in:
Tolik 2025-04-18 05:45:07 +10:00
parent a26c17f183
commit f22efa0794
3 changed files with 60 additions and 43 deletions

@ -1 +1 @@
Subproject commit f533c03f52f53e581c794c1017b7b0d61d39dfbf
Subproject commit 4ecde88739cd3e2b7447dd36b79163f1a5e0d40d

View File

@ -80,24 +80,23 @@ ATAPI_5x_GET_PAR:
CP BIOS.Error.ATAPI.UnitAttention
JR Z,.UnitAttention
;
;CP BIOS.Error.ATAPI.NotReady
;SCF
;RET NZ
EX AF,AF'
OUT (SLOT3),A
EX AF,AF
LD HL,#FFFF
CP BIOS.Error.ATAPI.MediumError
JR NZ,.unknown_error
;
LD A,BIOS.Error.ATAPI.UnitAttention ;!FIXIT ª®áâë«ì
.unknown_error: LD HL,#FFFF
LD D,H
LD E,L
SCF
EX AF,AF' ; âãâ ¬ áª¨à㥬 ®è¨¡ªã, ¨§­ ç «ì­® CF=1 ⮫쪮 ¥á«¨ ãáâனá⢮ ®âáãâáâ¢ã¥â
OUT (SLOT3),A
RET
;
.UnitAttention: RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
EX AF,AF'
SCF
EX AF,AF'
.get_data: ;
LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters)
.get_data: LD A,(IY+IDE.HDD_INIT_TABLE.MediaParameters)
LD B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
; [ ] sector size
LD E,(IY+IDE.HDD_INIT_TABLE.SectorSize)
@ -396,16 +395,19 @@ ATAPI_REQUEST_SENSE:
ATAPI_CHECK_MEDIA_CHANGED:
CALL EXEC_TEST_CMD ;!FIXIT   ¬®¦¥â ¨ ­¥ ­ ¤®
RET C
; .skip_nop: EXX
; CALL ATAPI_WAITPRT
; EXX
; LD A, high IDE.Read.Status
; IN A,(low IDE.Read.Status)
; RRA
; ;RET NC
;JR C,.noWait
; JR NC,.next_check
; ;
; CP BIOS.Error.ATAPI.UnitAttention
; SCF
; RET Z
; ;
; CP BIOS.Error.ATAPI.MediumError
; JR Z,.next_check
; ;
; SCF
; RET
;
EXX
.next_check: EXX
LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
@ -460,6 +462,7 @@ TRAY_FN: LD HL,ATAPI_CMD_PACKET.CLOSE
; A' - ­ ç «ì­ ï áâà ­¨æ  ¤«ï R/W Long
;
; RETURN: CF - ERROR
; ;!FIXIT ­®¬¥à  ­¥¯à ¢¨«ì­ë¥
; !TODO CD ERRORS to INCLUDES
; #01 - RECOVERED ERROR
; #02 - NOT READY
@ -471,12 +474,26 @@ TRAY_FN: LD HL,ATAPI_CMD_PACKET.CLOSE
; #0B - ABORTED COMMAND
; #80 - TIME OUT
EXEC_PACKET_COMMAND:
; .error_APLOOP: LD A,BIOS.Error.ATAPI.UnitAttention
; RET
;
.error_ex: EX DE,HL
.error: CP #FF
.error_fail: SCF
LD C,A
LD A,BIOS.Error.Failure
RET Z
;
LD A,BIOS.Error.ATAPI.UnitAttention
CP C
SCF
RET Z
;
LD A,BIOS.Error.ATAPI.MediumError
CP C
SCF
RET Z
;
LD A,BIOS.Error.Busy
RET
;
@ -578,7 +595,7 @@ EXEC_PACKET_COMMAND:
EX DE,HL
;
.AP_LOOP: CALL ATAPI_CHECK_DRV
JP C,.error
JP C,.error;_APLOOP
RET Z
;====== IF DATA REQUEST ===============================================;
.data_request: IN A,(SLOT3)

Binary file not shown.