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_WRITE ; [ ] new
DB low ATAPI_5x_DETECT DB low ATAPI_5x_DETECT
DB low ATAPI_5x_GET_PAR ; [ ] new 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 DRV_VERSION
DB low FN_RESERVED_5x DB low FN_RESERVED_5x
@ -660,7 +660,7 @@ TAB_5xFNS:
DB high ATAPI_5x_WRITE ; WRITE ; [ ] new DB high ATAPI_5x_WRITE ; WRITE ; [ ] new
DB high ATAPI_5x_DETECT DB high ATAPI_5x_DETECT
DB high ATAPI_5x_GET_PAR 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 DRV_VERSION
DB high FN_RESERVED_5x DB high FN_RESERVED_5x

View File

@ -114,6 +114,28 @@ ATAPI_5x_GET_PAR:
RET RET
;[]================================================================[#58] ;[]================================================================[#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 ;!TODO
; atapi.pdf áâà. 24 § ¯¨áì/ç⥭¨¥ ¬®£ãâ ¡ëâì ¬ ªá¨¬ «ì­ë¬¨ ¡«®ª ¬¨ ¢ ­¥áª®«ìª® § å®¤®¢ ; atapi.pdf áâà. 24 § ¯¨áì/ç⥭¨¥ ¬®£ãâ ¡ëâì ¬ ªá¨¬ «ì­ë¬¨ ¡«®ª ¬¨ ¢ ­¥áª®«ìª® § å®¤®¢
;[]================================================================[#55] ;[]================================================================[#55]

View File

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

View File

@ -1,6 +1,6 @@
;=======================[All shared EQUs]=======================; ;=======================[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_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 1 ; BETA_RC EQU 0 ;
;======================[All shared defines]=====================; ;======================[All shared defines]=====================;
DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®? DEFINE PACKED_MAIN 0 ; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®?
DEFINE SP2000_Loader_Flag #0107 ; DEFINE SP2000_Loader_Flag #0107 ;