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

Binary file not shown.