atapi media changed всё ближе

This commit is contained in:
Tolik 2025-02-13 23:29:27 +10:00
parent 624ba73ef4
commit 1cb8ee9e78
5 changed files with 38 additions and 11 deletions

View File

@ -557,7 +557,7 @@ TAB_5xFNS:
DB low ATAPI_5x_WRITE ; [ ] new
DB low ATAPI_5x_DETECT
DB low ATAPI_5x_GET_PAR ; [ ] new
DB low FN_ABSENT_5x ; SETMED
DB low ATAPI_5x_SET_PAR ; SETMED
DB low DRV_VERSION
DB low FN_RESERVED_5x
@ -660,7 +660,7 @@ TAB_5xFNS:
DB high ATAPI_5x_WRITE ; WRITE ; [ ] new
DB high ATAPI_5x_DETECT
DB high ATAPI_5x_GET_PAR
DB high FN_ABSENT_5x ; SETMED
DB high ATAPI_5x_SET_PAR ; SETMED
DB high DRV_VERSION
DB high FN_RESERVED_5x

View File

@ -114,6 +114,28 @@ ATAPI_5x_GET_PAR:
RET
;[]================================================================[#58]
;[]================================================================[#59]
; [ ] media changed
ATAPI_5x_SET_PAR:
LD L,B
LD C,IDE.Device.ATAPI
CALL SELECT_DRIVE
RET C
;
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
;
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),B
EX AF,AF
OUT (SLOT3),A
RET
;[]================================================================[#59]
;!TODO
; atapi.pdf áâà. 24 § ¯¨áì/ç⥭¨¥ ¬®£ãâ ¡ëâì ¬ ªá¨¬ «ì­ë¬¨ ¡«®ª ¬¨ ¢ ­¥áª®«ìª® § å®¤®¢
;[]================================================================[#55]

View File

@ -2,6 +2,7 @@
;=======================================================================
; ‚室: A - ­®¬¥à ãáâனá⢠, C - DriveType
; ‚ë室: A - MediaParameters, C - DriveType
; <20> <20>噔ㄢ L
SELECT_DRIVE:
AND #0F
LD IY,IDE.INIT_TBL_IDE0

View File

@ -446,20 +446,22 @@ IDESPEC: IN A,(SLOT3)
LD (IY+IDE.HDD_INIT_TABLE.DRV_Flags),A
; ­  ¢á直© á«ãç ©
LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001
;!FIXIT ᤥ« âì æ¨ª« á® áçñâ稪®¬
.get_error_loop: LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY
LD B,100 ; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠ - 1 HALT)
.get_error_loop: PUSH BC
LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY
CALL EXEC_PACKET_COMMAND.start
POP BC
JR NC,.s_size
;
CP BIOS.Error.ATAPI.NotReady
JR Z,.get_error_loop
;
RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
CP BIOS.Error.ATAPI.UnitAttention
JR Z,IDESPEC.END
; «î¡ ï ­¥¯®­ïâ­ ï ®è¨¡ª  - ­¥â ­®á¨â¥«ï
;
CP BIOS.Error.ATAPI.NotReady
SCF
JR .set_sector
JR NZ,.set_sector ; «î¡ ï ­¥¯®­ïâ­ ï ®è¨¡ª  - ­¥â ­®á¨â¥«ï
HALT
DJNZ .get_error_loop
;
; LD HL,ATAPI_CMD_PACKET.REQUEST_SENSE
; LD DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224 ; ¯à®áâ® ­ã¦¥­ ¡ë« ¡ãä¥à
@ -468,6 +470,7 @@ IDESPEC: IN A,(SLOT3)
.s_size: LD HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA
LD DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224 ; ¯à®áâ® ­ã¦¥­ ¡ë« ¡ãä¥à
CALL EXEC_PACKET_COMMAND.start
;
.set_sector: LD HL,#FFFF
JR C,.No_Media
;
@ -481,6 +484,7 @@ IDESPEC: IN A,(SLOT3)
;
.No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H
LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L
RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media
;LD (IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001 ; !HARDCODE ATAPI ¯®ª  ¢á¥£¤  removable
;
JR IDESPEC.END

View File

@ -1,6 +1,6 @@
;=======================[All shared EQUs]=======================;
BETA_BUILD EQU 10 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E9A5AD> <20> <20><><EFBFBD><EFBFBD><E2AEA2> ᡮથ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><E2AEA2> <20><><EFBFBD>
BETA_RC EQU 1 ;
BETA_BUILD EQU 40 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><E9A5AD> <20> <20><><EFBFBD><EFBFBD><E2AEA2> ᡮથ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><E2AEA2> <20><><EFBFBD>
BETA_RC EQU 0 ;
;======================[All shared defines]=====================;
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
DEFINE SP2000_Loader_Flag #0107 ;