testing
This commit is contained in:
		
							parent
							
								
									69670d7873
								
							
						
					
					
						commit
						0749fd92b5
					
				| @ -1 +1 @@ | ||||
| Subproject commit 857938d1dbf3b332a5e9e8ccabfee531eb3848fa | ||||
| Subproject commit b3224fc3afac71c6b1d461ff54049e58657bbe5a | ||||
| @ -480,8 +480,8 @@ TAB_5xFNS: | ||||
|  DB low		FDD_5x_READ						;#55 | ||||
|  DB low		FDD_5x_WRITE						;#56 | ||||
|  DB low		FDD_5x_DETECT						;#57 | ||||
|  DB low		FDD_5x_GETMED						;#58 | ||||
|  DB low		FDD_5x_SETMED						;#59 | ||||
|  DB low		FDD_5x_GET_PAR						;#58 | ||||
|  DB low		FDD_5x_SET_PAR						;#59 | ||||
| 
 | ||||
|  DB low		DRV_VERSION						;#5A - „ã¡«ì. <20>  íâã äãªæ¨î ¯à룠¥â ¨§ ®á®¢®£® ®¡à ¡®â稪  | ||||
|  DB low			FN_RESERVED_5x					;#5B - „ã¡«ì. <20>  íâã äãªæ¨î ¯à룠¥â ¨§ ®á®¢®£® ®¡à ¡®â稪  | ||||
| @ -506,8 +506,8 @@ TAB_5xFNS: | ||||
|  DB low		RMD_5x_READ | ||||
|  DB low		RMD_5x_WRITE | ||||
|  DB low			FN_ABSENT_5x | ||||
|  DB low		RMD_5x_GETMED | ||||
|  DB low		RMD_5x_SETMED | ||||
|  DB low		RMD_5x_GET_PAR | ||||
|  DB low		RMD_5x_SET_PAR | ||||
| 
 | ||||
|  DB low		DRV_VERSION | ||||
|  DB low		    FN_RESERVED_5x  | ||||
| @ -531,8 +531,8 @@ TAB_5xFNS: | ||||
|  DB low		HDD_5x_READ | ||||
|  DB low		HDD_5x_WRITE | ||||
|  DB low		HDD_5x_DETECT | ||||
|  DB low		HDD_5x_GETMED | ||||
|  DB low		HDD_5x_SETMED | ||||
|  DB low		HDD_5x_GET_PAR | ||||
|  DB low		HDD_5x_SET_PAR | ||||
| 
 | ||||
|  DB low		DRV_VERSION | ||||
|  DB low			FN_RESERVED_5x  | ||||
| @ -556,7 +556,7 @@ TAB_5xFNS: | ||||
|  DB low		CD_5x_READ | ||||
|  DB low		CD_5x_WRITE						; [ ] new  | ||||
|  DB low		CD_5x_DETECT | ||||
|  DB low		CD_5x_GETMED						; [ ] new  | ||||
|  DB low		CD_5x_GET_PAR						; [ ] new  | ||||
|  DB low			FN_ABSENT_5x	; SETMED | ||||
| 
 | ||||
|  DB low		DRV_VERSION | ||||
| @ -583,8 +583,8 @@ TAB_5xFNS: | ||||
|  DB high	FDD_5x_READ						;#55 | ||||
|  DB high	FDD_5x_WRITE						;#56 | ||||
|  DB high	FDD_5x_DETECT						;#57 | ||||
|  DB high	FDD_5x_GETMED						;#58 | ||||
|  DB high	FDD_5x_SETMED						;#59 | ||||
|  DB high	FDD_5x_GET_PAR						;#58 | ||||
|  DB high	FDD_5x_SET_PAR						;#59 | ||||
|   | ||||
|  DB high	DRV_VERSION						;#5A - „ã¡«ì. <20>  íâã äãªæ¨î ¯à룠¥â ¨§ ®á®¢®£® ®¡à ¡®â稪  | ||||
|  DB high		FN_RESERVED_5x					;#5B - „ã¡«ì. <20>  íâã äãªæ¨î ¯à룠¥â ¨§ ®á®¢®£® ®¡à ¡®â稪  | ||||
| @ -609,8 +609,8 @@ TAB_5xFNS: | ||||
|  DB high	RMD_5x_READ | ||||
|  DB high	RMD_5x_WRITE | ||||
|  DB high		FN_ABSENT_5x | ||||
|  DB high	RMD_5x_GETMED | ||||
|  DB high	RMD_5x_SETMED | ||||
|  DB high	RMD_5x_GET_PAR | ||||
|  DB high	RMD_5x_SET_PAR | ||||
| 
 | ||||
|  DB high	DRV_VERSION | ||||
|  DB high		FN_RESERVED_5x  | ||||
| @ -634,8 +634,8 @@ TAB_5xFNS: | ||||
|  DB high	HDD_5x_READ | ||||
|  DB high	HDD_5x_WRITE | ||||
|  DB high	HDD_5x_DETECT | ||||
|  DB high	HDD_5x_GETMED | ||||
|  DB high	HDD_5x_SETMED | ||||
|  DB high	HDD_5x_GET_PAR | ||||
|  DB high	HDD_5x_SET_PAR | ||||
| 
 | ||||
|  DB high	DRV_VERSION | ||||
|  DB high		FN_RESERVED_5x  | ||||
| @ -659,7 +659,7 @@ TAB_5xFNS: | ||||
|  DB high	CD_5x_READ | ||||
|  DB high	CD_5x_WRITE		; WRITE				; [ ] new | ||||
|  DB high	CD_5x_DETECT | ||||
|  DB high	CD_5x_GETMED | ||||
|  DB high	CD_5x_GET_PAR | ||||
|  DB high		FN_ABSENT_5x	; SETMED | ||||
| 
 | ||||
|  DB high	DRV_VERSION | ||||
| @ -695,8 +695,8 @@ EXP_FNS_RST18: | ||||
| 	; HDD_5x_READ | ||||
| 	; HDD_5x_WRITE | ||||
| 	; HDD_5x_DETECT | ||||
| 	; HDD_5x_GETMED | ||||
| 	; HDD_5x_SETMED | ||||
| 	; HDD_5x_GET_PAR | ||||
| 	; HDD_5x_SET_PAR | ||||
| 	; DRV_VERSION | ||||
| 	; 	FN_RESERVED_5x  | ||||
| 	; 	FN_RESERVED_5x  | ||||
| @ -722,10 +722,10 @@ FN_5x_Parser_6:				; HDD_5x_WRITE | ||||
| FN_5x_Parser_7:				; HDD_5x_DETECT | ||||
| 	LD	C,#07 | ||||
| 	JP	FN_5x_Parser  | ||||
| FN_5x_Parser_8:				; HDD_5x_GETMED | ||||
| FN_5x_Parser_8:				; HDD_5x_GET_PAR | ||||
| 	LD	C,#08 | ||||
| 	JP	FN_5x_Parser  | ||||
| FN_5x_Parser_9:				; HDD_5x_SETMED | ||||
| FN_5x_Parser_9:				; HDD_5x_SET_PAR | ||||
| 	LD	C,#09 | ||||
| 	JP	FN_5x_Parser  | ||||
| FN_5x_Parser_E:				; DRV_EXTENDED | ||||
|  | ||||
| @ -23,7 +23,7 @@ | ||||
| ;	    D7 - "1" - High Density, "0" - Double Density | ||||
| ;[]===========================================================[] | ||||
| ;!FIXIT ¢á¥£¤  ¨¤¥â à ¡®â  á ¤ ë¬¨ ¤«ï ¤¨áª  € | ||||
| FDD_5x_GETMED: | ||||
| FDD_5x_GET_PAR: | ||||
| 	;!TEST FDD 720/1440 | ||||
| 	IF FDD_NormalCount | ||||
| 		LD	IY,FDD_INIT_TABLE.FDD_0 | ||||
| @ -71,7 +71,7 @@ FDD_5x_GETMED: | ||||
| ;	    D7 - "1" - High Density, "0" - Double Density | ||||
| ;Return: None | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_SETMED:	;!TEST FDD 720/1440 | ||||
| FDD_5x_SET_PAR:	;!TEST FDD 720/1440 | ||||
| 		IF FDD_NormalCount | ||||
| 		 LD	IY,FDD_INIT_TABLE.FDD_0 | ||||
| 		 DEC	A | ||||
|  | ||||
| @ -28,14 +28,12 @@ CD_5x_RESET:	LD	C,IDE.Device.ATAPI | ||||
| 		RET	C | ||||
| 		LD	B,50 | ||||
| .loop:		PUSH	BC | ||||
| 		LD	HL,ATAPI_CMD_PACKET.NOP | ||||
| 		LD	DE,0	; ¬ àª¥à ⮣®, çâ® ¥ 㦮 ç¨â âì á ãáâனá⢠ ¢ އ“ | ||||
| 		CALL	EXEC_PACKET_COMMAND | ||||
| 		CALL	EXEC_NOP_CMD | ||||
| 		;!FIXIT ;[ ] sector size. ᤥ« âì २¨â HDD_INIT_TABLE | ||||
| 		POP	BC | ||||
| 		RET	NC | ||||
| 		; | ||||
| 		CALL	CD_CHECK_MEDIA_CHANGED | ||||
| 		CALL	CD_CHECK_MEDIA_CHANGED.noWait | ||||
| 		RET	C | ||||
| 		; | ||||
| 		EI  | ||||
| @ -49,17 +47,20 @@ CD_5x_RESET:	LD	C,IDE.Device.ATAPI | ||||
| ;Function: Get Current Media Parameters | ||||
| ;	A - Disk | ||||
| ;Return: | ||||
| ;	H - Heads | ||||
| ;	L - Sectors per cylinder | ||||
| ;      DE - Cylinders | ||||
| ;	H - Heads			; [ ] For ATAPI HL:DE - media size in sectors | ||||
| ;	L - Sectors per cylinder	; | ||||
| ;      DE - Cylinders			; | ||||
| ;      IX - Capacity sector in bytes | ||||
| ;	B - Flags: MASTER/SLAVE, LBA/CHS | ||||
| ; [ ]	A - HDD_INIT_TABLE.RemovableMedia | ||||
| CD_5x_GETMED:	LD	C,IDE.Device.ATAPI | ||||
| ; [ ]	A - HDD_INIT_TABLE.MediaParameters | ||||
| ;	IF media changed | ||||
| ; [ ]	CF' = 1, A' = error number UnitAttention | ||||
| CD_5x_GET_PAR:	LD	C,IDE.Device.ATAPI | ||||
| 		CALL	SELECT_DRIVE | ||||
| 		RET	C | ||||
| 		; | ||||
| 		IN	A,(SLOT3) | ||||
| 		AND	A | ||||
| 		EX	AF,AF' | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| @ -68,31 +69,36 @@ 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 | ||||
| 		  ; | ||||
| 		  LD	A,(IY + IDE.HDD_INIT_TABLE.RemovableMedia) | ||||
| 		  AND	%1111'1101 | ||||
| 		  LD	(IY + IDE.HDD_INIT_TABLE.RemovableMedia),A | ||||
| 		  CP	BIOS.Error.ATAPI.NotReady | ||||
| 		  ;LD	A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) | ||||
| 		  SCF | ||||
| 		  JR	NZ,.UnitAttention | ||||
| 		  LD	HL,#FFFF | ||||
| 		  LD	D,H | ||||
| 		  LD	E,L | ||||
| 		  RET | ||||
| 		  ; | ||||
| .UnitAttention:	  RES	1,(IY + IDE.HDD_INIT_TABLE.MediaParameters)	; [ ] removable media | ||||
| 		  EX	AF,AF' | ||||
| 		   SCF | ||||
| 		  EX	AF,AF' | ||||
| .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	A,(IY+IDE.HDD_INIT_TABLE.RemovableMedia) | ||||
| 		 LD	A,(IY+IDE.HDD_INIT_TABLE.MediaParameters) | ||||
| 		 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 | ||||
| 		 EX	DE,HL | ||||
| 		 ; [ ] sector size | ||||
| 		 LD	E,(IY+IDE.HDD_INIT_TABLE.SectorSize) | ||||
| 		 LD	D,(IY+IDE.HDD_INIT_TABLE.SectorSize + 1) | ||||
| 		 LD	XL,E | ||||
| 		 LD	XH,D | ||||
| 		 ; | ||||
| 		 LD	HL,0 | ||||
| 		 LD	D,H | ||||
| 		 LD	E,H | ||||
| 		 ; [ ] media size | ||||
| 		 LD	L,(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh) | ||||
| 		 LD	H,(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1) | ||||
| 		 LD	E,(IY+IDE.HDD_INIT_TABLE.MediaSizeLow) | ||||
| 		 LD	D,(IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1) | ||||
| 		; | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		 OUT	(SLOT3),A | ||||
| 		 LD	A,BIOS.Error.ATAPI.UnitAttention	; ¥á«¨ CF, â® ®¬¥à ®è¨¡ª¨ | ||||
| 		EX	AF,AF | ||||
| 		RET  | ||||
| ;[]================================================================[#58] | ||||
| @ -165,7 +171,7 @@ RW_ATAPI_SECTORs: | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(C),A | ||||
| 		 ; [ ] media change | ||||
| 		  LD	A,(IY + IDE.HDD_INIT_TABLE.RemovableMedia) | ||||
| 		  LD	A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) | ||||
| 		  AND	%0000'0010 | ||||
| 		  JR	NZ,.error_media | ||||
| 		 ; | ||||
| @ -196,7 +202,7 @@ RW_ATAPI_SECTORs: | ||||
| 		; POP	AF | ||||
| 		; OUT	(SLOT3),A | ||||
| 		LD	HL,RAM_ATAPI_RW_CMD | ||||
| 		CALL	EXEC_PACKET_COMMAND | ||||
| 		CALL	EXEC_PACKET_COMMAND.start | ||||
| 		; | ||||
| .exit:		POP	BC | ||||
| 		;LD	C,SLOT3 | ||||
| @ -255,38 +261,60 @@ CD_5x_LONG_WRITE: | ||||
| ;Function: Detect Disk | ||||
| ;	   A - Disk | ||||
| ;Return:   CF=0 - A=Drive type  | ||||
| ;		  B=RemovableMedia byte ; [ ] | ||||
| ;		  B=MediaParameters byte ; [ ] media change | ||||
| ;	   CF=1 - drive not present, A=#02 | ||||
| ; CD_5x_DETECT:	LD	C,IDE.Device.ATAPI | ||||
| ; 		AND	%1011'1111 | ||||
| ; .shared:	LD	D,A | ||||
| ; 		LD	E,C | ||||
| ; 		PUSH	DE | ||||
| ; 		CALL	DRV_DETECT | ||||
| ; 		POP	DE | ||||
| ; 		RET	C | ||||
| ; 		; | ||||
| ; 		PUSH	AF | ||||
| ; 		LD	C,SLOT3 | ||||
| ; 		IN	B,(C) | ||||
| ; 		LD	A,SYS_PAGE | ||||
| ; 		OUT	(C),A | ||||
| ; 		INC	HL			;!HARDCODE HDD_INIT_TABLE | ||||
| ; 		INC	HL | ||||
| ; 		INC	HL | ||||
| ; 		LD	A,(HL) | ||||
| ; 		OUT	(C),B | ||||
| ; 		LD	B,A | ||||
| ; 		AND	%0000'0011	;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ „‘‘? ; !FIXIT | ||||
| ; 		JR	NZ,.error | ||||
| ; 		; | ||||
| ; .exit:		POP	AF | ||||
| ; 		RET | ||||
| ; 		; | ||||
| ; .error:		AND	%0000'0010 | ||||
| ; 		JR	NZ,.UnitAttention | ||||
| ; 		; | ||||
| ; 		LD	A,D | ||||
| ; 		LD	C,E | ||||
| ; 		CALL	SELECT_DRIVE | ||||
| ; 		CALL	CD_CHECK_MEDIA_CHANGED | ||||
| ; 		JR	NC,.exit | ||||
| ; 		POP	BC | ||||
| ; 		RET | ||||
| ; 		; | ||||
| ; .UnitAttention:	POP	AF | ||||
| ; 		LD	A,BIOS.Error.ATAPI.UnitAttention | ||||
| ; 		SCF | ||||
| ; 		RET | ||||
| ;[]================================================================[#57] | ||||
| ;[]================================================================[#57] | ||||
| ;Function: Detect Disk | ||||
| ;	   A - Disk | ||||
| ;Return:   CF=0 - A=Drive type  | ||||
| ;		  B=MediaParameters byte ; [ ] media change | ||||
| ;	   CF=1 - drive not present, A=#02 | ||||
| CD_5x_DETECT:	LD	C,IDE.Device.ATAPI | ||||
| 		AND	%1011'1111 | ||||
| .shared:	CALL	DRV_DETECT | ||||
| 		RET	C | ||||
| 		; | ||||
| 		PUSH	AF | ||||
| 		LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(C),A | ||||
| 		INC	HL			;!HARDCODE HDD_INIT_TABLE | ||||
| 		INC	HL | ||||
| 		INC	HL | ||||
| 		LD	A,(HL) | ||||
| 		OUT	(C),B | ||||
| 		LD	B,A | ||||
| 		AND	%0000'0010 | ||||
| 		JR	Z,.exit | ||||
| 		; | ||||
| 		POP	AF | ||||
| 		LD	A,BIOS.Error.ATAPI.UnitAttention | ||||
| 		SCF | ||||
| 		RET | ||||
| 		; | ||||
| .exit:		POP	AF | ||||
| 		RET | ||||
| 
 | ||||
| 		JP	HDD_5x_DETECT.shared | ||||
| ;[]================================================================[#57] | ||||
| 
 | ||||
| 
 | ||||
| ;[]================================================================[#5E] | ||||
| ; [ ] | ||||
| ;Function: Extended | ||||
| @ -316,17 +344,20 @@ CD_5x_Extended: | ||||
| ; ¢å®¤:	DE -  ¤à¥á ¤«ï ¤ ëå | ||||
| CD_REQUEST_SENSE: | ||||
| 		LD	HL,ATAPI_CMD_PACKET.REQUEST_SENSE | ||||
| 		JR	EXEC_PACKET_COMMAND | ||||
| 		JR	EXEC_PACKET_COMMAND.start | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;[ ] media changed | ||||
| ;----------------------------------------------------------------------; | ||||
| CD_CHECK_MEDIA_CHANGED: | ||||
| 		EXX | ||||
| 		 LD	DE,256*(IDE.CtrlByte.Error) + 0 | ||||
| 		 CALL	CD_WAITPRT.Custom | ||||
| 		EXX | ||||
| 		;RET	NC | ||||
| 		CALL	EXEC_NOP_CMD	;!FIXIT   ¬®¦¥â ¨ ¥  ¤® | ||||
| ; .skip_nop:	EXX | ||||
| ; 		 CALL	CD_WAITPRT | ||||
| ; 		EXX | ||||
| ; 		LD	A, high IDE.Read.Status | ||||
| ; 		IN	A,(low IDE.Read.Status) | ||||
| ; 		RRA | ||||
| ; 		;RET	NC | ||||
| 		JR	C,.noWait | ||||
| 		; | ||||
| 		EXX | ||||
| @ -335,7 +366,7 @@ CD_CHECK_MEDIA_CHANGED: | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(C),A | ||||
| 		 ; | ||||
| 		 LD	A,(IY + IDE.HDD_INIT_TABLE.RemovableMedia) | ||||
| 		 LD	A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) | ||||
| 		 OUT	(C),B | ||||
| 		EXX | ||||
| 		RRA | ||||
| @ -357,7 +388,7 @@ CD_CHECK_MEDIA_CHANGED: | ||||
| TRAY_FN:	LD	HL,ATAPI_CMD_PACKET.CLOSE | ||||
| 		LD	DE,0	; ¬ àª¥à ⮣®, çâ® ¥ 㦮 ç¨â âì á ãáâனá⢠ ¢ އ“ | ||||
| 		DEC	A | ||||
| 		JR	Z,EXEC_PACKET_COMMAND | ||||
| 		JR	Z,EXEC_PACKET_COMMAND.start | ||||
| 		LD	HL,ATAPI_CMD_PACKET.OPEN | ||||
| 		;JR	EXEC_PACKET_COMMAND | ||||
| 		 | ||||
| @ -376,20 +407,38 @@ TRAY_FN:	LD	HL,ATAPI_CMD_PACKET.CLOSE | ||||
| ;	 #0B - ABORTED COMMAND | ||||
| ;	 #80 - TIME OUT | ||||
| EXEC_PACKET_COMMAND: | ||||
| 		EXX  | ||||
| .error:		CP	#FF | ||||
| .error_fail:	SCF | ||||
| 		LD	A,BIOS.Error.Failure | ||||
| 		RET	Z | ||||
| 		; | ||||
| 		LD	A,BIOS.Error.Busy | ||||
| 		RET | ||||
| 		; | ||||
| .error_TimeOut:	CP	#FF | ||||
| 		JR	Z,.error_fail | ||||
| 		LD	A,BIOS.Error.ATAPI.TimeOut | ||||
| 		SCF | ||||
| 		RET | ||||
| ; .CMD_ERROR:	 CALL	CD_GET_ERROR | ||||
| ; 		 OR	#70 | ||||
| ; 		 CP	BIOS.Error.UnitAttention | ||||
| ; 		 CALL	Z,CD_MEDIA_CHANGED_ERROR | ||||
| ; 		 ;LD	BC,IDE.Read.Error	;ERROR | ||||
| ; 		 ;IN	A,(C) | ||||
| ; 		 ;RRCA  | ||||
| ; 		 ;RRCA  | ||||
| ; 		 ;RRCA  | ||||
| ; 		 ;RRCA  | ||||
| ; 		 ;AND	#0F | ||||
| ; 		SCF  | ||||
| ; 		RET | ||||
| 		; | ||||
| .start:		EXX  | ||||
| 		 CALL	CD_WAITPRT | ||||
| 		EXX  | ||||
| 		JR	NC,.READY | ||||
| 		; | ||||
| 		; [ ] media changed | ||||
| 		;  CP	+(BIOS.Error.UnitAttention & #0F) | ||||
| 		;  JR	NZ,.reset | ||||
| 		;  ; | ||||
| 		;  CALL	CD_MEDIA_CHANGED_ERROR | ||||
| 		;  OR	#70	; error prefix for ATAPI in BIOS | ||||
| 		;  SCF | ||||
| 		;  RET | ||||
| 		; | ||||
| .reset:		LD	BC,IDE.Write.Command | ||||
| 		LD	A,IDE.ATAPI.Reset | ||||
| 		OUT	(C),A | ||||
| @ -420,8 +469,6 @@ EXEC_PACKET_COMMAND: | ||||
| 		; | ||||
| 		XOR	A | ||||
| 		EXX | ||||
| 		 ;OUT	(C),A | ||||
| 		 ;XOR	A | ||||
| 		 LD	BC,IDE.Write.Features | ||||
| 		 OUT	(C),A | ||||
| 		 LD	DE,MAX_ATAPI_SEC_SIZE	;SIZE BLOCK	;!HARDCODE ¤®áâ ¢ âì ¨§ ¯¥à¥¬¥®© ª ª®©-¨¡ã¤ì | ||||
| @ -441,37 +488,8 @@ EXEC_PACKET_COMMAND: | ||||
| 		 LD	DE,256*(IDE.CtrlByte.DataRequest+IDE.CtrlByte.Error)+IDE.CtrlByte.DataRequest | ||||
| 		 CALL	CD_WAITPRT.Custom | ||||
| 		EXX  | ||||
| 		JR	NC,.YEP_DRQ | ||||
| 		JR	C,.error_TimeOut | ||||
| 		; | ||||
| 		CP	#FF | ||||
| 		JR	Z,.error_fail | ||||
| 		; | ||||
| 		RRA					;AND IDE.CtrlByte.Error | ||||
| 		JR	C,CD_CHECK_MEDIA_CHANGED.noWait | ||||
| 		; | ||||
| 		LD	A,BIOS.Error.ATAPI.TimeOut | ||||
| 		RET | ||||
| 		; | ||||
| .error:		CP	#FF | ||||
| 		SCF | ||||
| .error_fail:	LD	A,BIOS.Error.Failure | ||||
| 		RET	Z | ||||
| 		LD	A,BIOS.Error.Busy | ||||
| 		RET | ||||
| ; .CMD_ERROR:	 CALL	CD_GET_ERROR | ||||
| ; 		 OR	#70 | ||||
| ; 		 CP	BIOS.Error.UnitAttention | ||||
| ; 		 CALL	Z,CD_MEDIA_CHANGED_ERROR | ||||
| ; 		 ;LD	BC,IDE.Read.Error	;ERROR | ||||
| ; 		 ;IN	A,(C) | ||||
| ; 		 ;RRCA  | ||||
| ; 		 ;RRCA  | ||||
| ; 		 ;RRCA  | ||||
| ; 		 ;RRCA  | ||||
| ; 		 ;AND	#0F | ||||
| ; 		;!FIXIT ; [ ] sector size. make REQUEST SENSE if A=6 | ||||
| ; 		SCF  | ||||
| ; 		RET | ||||
| 		; EXEC ATAPI PACKET COMMAND | ||||
| .YEP_DRQ:	LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| @ -507,10 +525,11 @@ EXEC_PACKET_COMMAND: | ||||
| 		EXX  | ||||
| 		 CALL	CD_WAITPRT | ||||
| 		EXX  | ||||
| 		JR	C,.error | ||||
| 		JP	C,.error | ||||
| 		; | ||||
| 		LD	A,high IDE.Read.Status | ||||
| 		IN	A,(low IDE.Read.Status) | ||||
| 		; | ||||
| 		LD	BC,IDE.Read.Status | ||||
| 		IN	A,(C) | ||||
| 		BIT	IDE.CtrlBit.Error,A | ||||
| 		JP	NZ,CD_CHECK_MEDIA_CHANGED.noWait | ||||
| 		; | ||||
| @ -525,23 +544,35 @@ EXEC_PACKET_COMMAND: | ||||
| 		EX	DE,HL | ||||
| 		LD	BC,IDE.Read.ByteCountLow | ||||
| 		IN	E,(C) | ||||
| 		LD	BC,IDE.Read.ByteCountHigh | ||||
| 		INC	C	;LD BC,IDE.Read.ByteCountHigh | ||||
| 		IN	D,(C)	;TRANSFER BLOCK	SIZE | ||||
| 		; | ||||
| 		LD	A,D | ||||
| 		OR	E | ||||
| 		RET	Z	;BLOCK = 0 | ||||
| 		; | ||||
| 		; 㬥ìè ¥¬ áçñâ稪 § £à㦠¥¬ëå ¡ ©â®¢ ¢ 2 à § . —¨â ¥¬ ¯® 2 ¡ ©â  | ||||
| 		SRL	D | ||||
| 		RR	E | ||||
| 		; | ||||
| 		LD	BC,IDE.Read.InterruptReason | ||||
| 		IN	A,(C) | ||||
| 		AND	IDE.InterruptReasonByte.IO | ||||
| 		LD	BC,IDE.Read.Data | ||||
| 		JR	Z,.WRITE_DATA | ||||
| 		; | ||||
| 	;READ | ||||
| 		; ¯à®¢¥àª    â㯮áâì ª®¤¥à  | ||||
| 		; CF=0 | ||||
| 		; ADC	HL,DE | ||||
| 		; JR	Z,.good_buffer | ||||
| 		; JR	C,.error_buffer | ||||
| 		; | ||||
| ; .good_buffer:	AND	A | ||||
| ; 		SBC	HL,DE | ||||
| 
 | ||||
| .read_loop:	INI  | ||||
| 		INI  | ||||
| 		DEC	DE | ||||
| 		DEC	DE | ||||
| 		LD	A,D | ||||
| 		OR	E | ||||
| 		JR	NZ,.read_loop | ||||
| @ -566,19 +597,20 @@ EXEC_PACKET_COMMAND: | ||||
| 		EX	AF,AF'		;<-----------< / | ||||
| 		OUT	(SLOT3),A | ||||
| 		JR	.AP_LOOP | ||||
| 	;	; | ||||
| 	;WRITE | ||||
| .WRITE_DATA:	INC	B ; LD	BC,IDE.Write.Data | ||||
| .write_loop:	OUTI  | ||||
| 		OUTI  | ||||
| 		DEC	DE | ||||
| 		DEC	DE | ||||
| 		LD	A,D | ||||
| 		OR	E | ||||
| 		JR	NZ,.write_loop | ||||
| 		JR	.return_rw | ||||
| 
 | ||||
| ;.NULL:		LD	BC,IDE.Read.Data | ||||
| 		; | ||||
| ; !TODO	宫®á⮥ ç⥨¥ | ||||
| ; .error_buffer:	AND	A | ||||
| ; 		SBC	HL,DE | ||||
| ;.NULL:		 | ||||
| ;.RD_N_CD:	IN	A,(C) | ||||
| ; 		DEC	B | ||||
| ; 		IN	A,(C) | ||||
| @ -647,7 +679,9 @@ CD_MEDIA_CHANGED_ERROR: | ||||
| 		LD	DE,SYS_PAGE.SHARED_BUFFER_256b | ||||
| 		CALL	CD_REQUEST_SENSE | ||||
| 		; | ||||
| 		LD	A,(SYS_PAGE.SHARED_BUFFER_256b + 2)		; SenceKey. 06 | ||||
| 		LD	A,(SYS_PAGE.SHARED_BUFFER_256b + 2)		; SenceKey. 06 - UNIT ATTENTION | ||||
| 		CP	2						; SenceKey. 02 - NOT READY | ||||
| 		JR	Z,.Not_Ready | ||||
| 		CP	6 | ||||
| 		JR	NZ,.exit | ||||
| 		; | ||||
| @ -659,17 +693,23 @@ CD_MEDIA_CHANGED_ERROR: | ||||
| 		AND	A | ||||
| 		JR	NZ,.exit | ||||
| 		; | ||||
| 		LD	A,(IY + IDE.HDD_INIT_TABLE.RemovableMedia) | ||||
| 		LD	A,(IY + IDE.HDD_INIT_TABLE.MediaParameters) | ||||
| 		OR	%0000'0011 | ||||
| 		LD	(IY + IDE.HDD_INIT_TABLE.RemovableMedia),A | ||||
| 		LD	(IY + IDE.HDD_INIT_TABLE.MediaParameters),A | ||||
| 		; | ||||
| 		LD	HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA | ||||
| 		LD	DE,SYS_PAGE.TMP_BUFFER | ||||
| 		CALL	EXEC_PACKET_COMMAND | ||||
| 		CALL	EXEC_PACKET_COMMAND.start | ||||
| 		LD	HL,#FFFF | ||||
| 		JR	C,.No_Media | ||||
| 		; | ||||
| 		LD	HL,(SYS_PAGE.TMP_BUFFER + 6)	; sector size (high byte, low byte) | ||||
| 		 LD	HL,(SYS_PAGE.TMP_BUFFER)	; media size high | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh),H | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1),L | ||||
| 		 LD	HL,(SYS_PAGE.TMP_BUFFER + 2)	; media size low | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaSizeLow),H | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1),L | ||||
| 		 LD	HL,(SYS_PAGE.TMP_BUFFER + 6)	; sector size | ||||
| 		; | ||||
| .No_Media:	LD	(IY+IDE.HDD_INIT_TABLE.SectorSize),H			;[ ] sector size | ||||
| 		LD	(IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L		 | ||||
| @ -680,6 +720,12 @@ CD_MEDIA_CHANGED_ERROR: | ||||
| 		SCF | ||||
| 		RET | ||||
| 		; | ||||
| .Not_Ready:	POP	AF | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,BIOS.Error.ATAPI.NotReady | ||||
| 		SCF | ||||
| 		RET | ||||
| 		; | ||||
| .exit:		POP	AF | ||||
| 		OUT	(SLOT3),A | ||||
| 		; CF=0 | ||||
| @ -687,7 +733,10 @@ CD_MEDIA_CHANGED_ERROR: | ||||
| 		RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ; SELECT_DRIVE ¤®«¦¥ ®âà ¡®â âì § à ¥¥ | ||||
| EXEC_NOP_CMD:	LD	HL,ATAPI_CMD_PACKET.NOP | ||||
| 		LD	DE,0	; ¬ àª¥à ⮣®, çâ® ¥ 㦮 ç¨â âì á ãáâனá⢠ ¢ އ“ | ||||
| 		JP	EXEC_PACKET_COMMAND.start | ||||
| 
 | ||||
| //////////////////////////////////////////////////////////////////////// | ||||
| ATAPI_CMD_PACKET: | ||||
| @ -734,17 +783,17 @@ ATAPI_PACKET: | ||||
| //////////////////////////////////////////////////////////////////////// | ||||
| ; | ||||
| ; E - Second * 10 | ||||
| ; PAUSE	LD	HL,#0000 | ||||
| ; PAUSE		LD	HL,#0000 | ||||
| ; PAUSE1	DEC	L | ||||
| ; 	JR	NZ,PAUSE1 | ||||
| ; 	DEC	H | ||||
| ; 	JR	NZ,PAUSE1 | ||||
| ; 	DEC	E | ||||
| ; 	JR	NZ,PAUSE1 | ||||
| ; 	RET  | ||||
| ; 		JR	NZ,PAUSE1 | ||||
| ; 		DEC	H | ||||
| ; 		JR	NZ,PAUSE1 | ||||
| ; 		DEC	E | ||||
| ; 		JR	NZ,PAUSE1 | ||||
| ; 		RET  | ||||
| ; | ||||
| /* | ||||
| …᫨ «®¢¨âáï ®è¨¡ª  media changed, â® ¡¨®á ¤®«¦¥ ¢ëáâ ¢«ïâì ¢ HDD_INIT_TABLE.RemovableMedia = 3 | ||||
| …᫨ «®¢¨âáï ®è¨¡ª  media changed, â® ¡¨®á ¤®«¦¥ ¢ëáâ ¢«ïâì ¢ HDD_INIT_TABLE.MediaParameters = 3 | ||||
| ¨ § â¨à âì FF SectorSize. | ||||
| „®á ¯®á«¥ ¯®«ã票ï â ª®© ®è¨¡ª¨ ¤®«¦¥ ¢ë§ë¢ âì BIOS.DRV_DETECT ¨ ¥á«¨ ¢áñ ŽŠ, â® ReScanDRV | ||||
| */ | ||||
| @ -99,7 +99,7 @@ HDD_5x_RESET:                      ; !FIXIT  | ||||
| ;      DE - Cylinders | ||||
| ;      IX - Capacity sector in bytes | ||||
| ;	B - Flags: MASTER/SLAVE, LBA/CHS | ||||
| HDD_5x_GETMED: | ||||
| HDD_5x_GET_PAR: | ||||
| 	LD	C,IDE.Device.HDD | ||||
| 	CALL	SELECT_DRIVE | ||||
| 	RET	C | ||||
| @ -107,13 +107,13 @@ HDD_5x_GETMED: | ||||
| 	EX	AF,AF' | ||||
| 	 LD	A,SYS_PAGE | ||||
| 	 OUT	(SLOT3),A | ||||
| 	 LD	A,(IY+IDE.HDD_INIT_TABLE.RemovableMedia) | ||||
| 	 LD	A,(IY+IDE.HDD_INIT_TABLE.MediaParameters) | ||||
| 	 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	IX,512				;!HARDCODE sector size | ||||
| 	 LD	IX,512		;!HARDCODE ; [ ] sector size | ||||
| 	EX	AF,AF' | ||||
| 	 OUT	(SLOT3),A | ||||
| 	EX	AF,AF' | ||||
| @ -129,7 +129,7 @@ HDD_5x_GETMED: | ||||
| ;      IX - Capacity sector in bytes | ||||
| ;	B - Flags | ||||
| ;Return: None | ||||
| HDD_5x_SETMED: | ||||
| HDD_5x_SET_PAR: | ||||
| 	LD	C,IDE.Device.HDD | ||||
| 	CALL	SELECT_DRIVE | ||||
| 	RET	C | ||||
| @ -143,6 +143,7 @@ HDD_5x_SETMED: | ||||
| 	 LD	(IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh),D | ||||
| 	 LD	(IY+IDE.HDD_INIT_TABLE.DRV_Flags),B | ||||
| 	 ;!TODO ; [ ] sector size | ||||
| 	 ;!TODO ; [ ] UnitAttention | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	;EX	AF,AF' | ||||
| @ -674,7 +675,35 @@ WAITPRT:	LD	DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error)+IDE | ||||
| ;	   A - Disk | ||||
| ;Return:   CF=0 - A=Drive type  | ||||
| ;	   CF=1 - drive not present, A=#02 | ||||
| HDD_5x_DETECT: | ||||
| 	LD	C,IDE.Device.HDD | ||||
| 	JP	CD_5x_DETECT.shared | ||||
| HDD_5x_DETECT:	LD	C,IDE.Device.HDD | ||||
| .shared:	CALL	SELECT_DRIVE | ||||
| 		RET	C | ||||
| 		; | ||||
| 		LD	B,A | ||||
| 		AND	%0000'0011	;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ „‘‘? ; !FIXIT | ||||
| 		JR	NZ,.notZero | ||||
| 		LD	A,C | ||||
| 		RET | ||||
| 		; | ||||
| .notZero:	AND	%0000'0010 | ||||
| 		JR	NZ,.UnitAttention | ||||
| 		; C =  DriveType | ||||
| 		LD	A,C | ||||
| 		CP	IDE.Device.ATAPI | ||||
| 		JR	Z,.AtapiCheckMedia | ||||
| 		;!FIXIT AtaCheckMedia - ¥ ᤥ« ® | ||||
| 		AND	A | ||||
| 		RET | ||||
| 		; | ||||
| .AtapiCheckMedia: | ||||
| 		PUSH	BC		; B - MediaParameters, C - DriveType | ||||
| 		CALL	CD_CHECK_MEDIA_CHANGED | ||||
| 		POP	BC		; B - MediaParameters, C - DriveType | ||||
| 		RET	C | ||||
| 		LD	A,C | ||||
| 		RET | ||||
| 		; | ||||
| .UnitAttention:	LD	A,BIOS.Error.ATAPI.UnitAttention | ||||
| 		SCF | ||||
| 		RET | ||||
| ;[]================================================================[#57] | ||||
| @ -1,6 +1,7 @@ | ||||
| ;[x] 18/12/2023. ¤®¡ ¢«¥¨¥/¤®¯¨«¨¢ ¨¥ API CD-ROM (ATAPI) | ||||
| ;======================================================================= | ||||
| ; ‚室: A - ®¬¥à ãáâனá⢠ | ||||
| ; ‚室:  A - ®¬¥à ãáâனá⢠, C - DriveType | ||||
| ; ‚ë室: A - MediaParameters, C - DriveType | ||||
| SELECT_DRIVE: | ||||
| 	AND	#0F | ||||
| 	LD	IY,IDE.INIT_TBL_IDE0 | ||||
| @ -27,30 +28,33 @@ SELECT_DRIVE: | ||||
| 	 LD	A,SYS_PAGE | ||||
| 	 OUT	(SLOT3),A | ||||
| 	 ; | ||||
| 	 LD	A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) | ||||
| 	 AND	1 | ||||
| 	 LD	A,IDE.Chanel.Secondary | ||||
| 	 JR	NZ,.device | ||||
| 	 LD	A,IDE.Chanel.Primary | ||||
| .device: | ||||
| 	 OUT	(IDE.Chanel.Set),A	;R02 | ||||
| 	 LD	C,(IY+IDE.HDD_INIT_TABLE.DriveType) | ||||
| 	 LD	B,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) | ||||
| 	 LD	H,(IY + IDE.HDD_INIT_TABLE.MediaParameters) | ||||
| 	 LD	C,(IY + IDE.HDD_INIT_TABLE.DriveType) | ||||
| 	 LD	B,(IY + IDE.HDD_INIT_TABLE.DRV_Flags) | ||||
| 	 POP	AF | ||||
| 	 OUT	(SLOT3),A				;¢®§¢à â áâà ¨æë | ||||
| 	 ; | ||||
| 	 LD	A,C | ||||
| 	EXX | ||||
| 	; | ||||
| 	CP	C | ||||
| 	; | ||||
| 	EXX | ||||
| 	 SCF | ||||
| 	 LD	A,BIOS.Error.BadNumber | ||||
| 	 RET	NZ | ||||
| 	 ; | ||||
| 	 LD	A,B | ||||
| 	 RRA | ||||
| 	 LD	A,IDE.Chanel.Secondary | ||||
| 	 JR	C,.device | ||||
| 	 LD	A,IDE.Chanel.Primary | ||||
| .device: OUT	(IDE.Chanel.Set),A	;R02 | ||||
| 	 LD	A,B | ||||
| 	 AND	#F0 | ||||
| 	 LD	BC,IDE.Write.DeviceHead | ||||
| 	 OUT	(C),A | ||||
| 	 LD	A,H | ||||
| 	EXX  | ||||
| 	RET | ||||
| 	; | ||||
| @ -65,32 +69,33 @@ SELECT_DRIVE: | ||||
| ;Function: Detect Disk | ||||
| ;	   A - Disk | ||||
| ;	   ‘ - Type | ||||
| ;Return:   CF=0 - A=Drive type  | ||||
| ;Return:   CF=0 - A=Drive type, H=MediaParameters | ||||
| ;	   CF=1 - drive not present, A=#02 | ||||
| DRV_DETECT:	CP	#84	;!HARDCODE max IDE drives (#80,#81,#82,#83) | ||||
| 		CCF | ||||
| 		JR	C,.error | ||||
| 		; | ||||
| 		LD	HL,IDE.INIT_TBL_IDE0.DriveType | ||||
| 		AND	3 | ||||
| 		JR	Z,.get_param | ||||
| 		LD	HL,IDE.INIT_TBL_IDE1.DriveType | ||||
| 		DEC	A | ||||
| 		JR	Z,.get_param | ||||
| 		LD	HL,IDE.INIT_TBL_IDE2.DriveType | ||||
| 		DEC	A | ||||
| 		JR	Z,.get_param | ||||
| 		LD	HL,IDE.INIT_TBL_IDE3.DriveType | ||||
| .get_param:	IN	A,(SLOT3) | ||||
| 		LD	B,A | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,(HL) | ||||
| 		CP	C	; compare Type | ||||
| 		LD	C,SLOT3 | ||||
| 		OUT	(C),B | ||||
| 		RET	Z | ||||
| 		SCF | ||||
| .error:		LD	A,BIOS.Error.BadNumber | ||||
| 		RET | ||||
| ;DRV_DETECT:	CP	#84	;!HARDCODE max IDE drives (#80,#81,#82,#83) | ||||
| ; 		CCF | ||||
| ; 		JR	C,.error | ||||
| ; 		; | ||||
| ; 		LD	IX,IDE.INIT_TBL_IDE0 | ||||
| ; 		AND	3 | ||||
| ; 		JR	Z,.get_param | ||||
| ; 		LD	IX,IDE.INIT_TBL_IDE1 | ||||
| ; 		DEC	A | ||||
| ; 		JR	Z,.get_param | ||||
| ; 		LD	IX,IDE.INIT_TBL_IDE2 | ||||
| ; 		DEC	A | ||||
| ; 		JR	Z,.get_param | ||||
| ; 		LD	IX,IDE.INIT_TBL_IDE3 | ||||
| ; .get_param:	IN	A,(SLOT3) | ||||
| ; 		LD	B,A | ||||
| ; 		LD	A,SYS_PAGE | ||||
| ; 		OUT	(SLOT3),A | ||||
| ; 		; | ||||
| ; 		LD	H,(IX + IDE.HDD_INIT_TABLE.MediaParameters) | ||||
| ; 		LD	A,(IX + IDE.HDD_INIT_TABLE.DriveType) | ||||
| ; 		CP	C	; compare Type | ||||
| ; 		LD	C,SLOT3 | ||||
| ; 		OUT	(C),B | ||||
| ; 		RET	Z | ||||
| ; 		SCF | ||||
| ; .error:		LD	A,BIOS.Error.BadNumber | ||||
| ; 		RET | ||||
| @ -12,7 +12,7 @@ | ||||
| ;Return: None | ||||
| ;[]===========================================================[] | ||||
| ;!FIXIT | ||||
| RMD_5x_SETMED: | ||||
| RMD_5x_SET_PAR: | ||||
|         and a | ||||
|         ret | ||||
| ;        A - Disk | ||||
| @ -35,7 +35,7 @@ RMD_5x_SETMED: | ||||
| ;      IX - Capacity sector in bytes | ||||
| ;	B - Flags: ramblock ID | ||||
| ;[]===========================================================[] | ||||
| RMD_5x_GETMED:	AND     #0F | ||||
| RMD_5x_GET_PAR:	AND     #0F | ||||
| 		CALL    GET_RAMD_ST                                             ; ¯®«ã票¥ ¨¤¥â¨ä¨ª â®à  ¡«®ª  | ||||
| 		RET     C | ||||
| 		SCF | ||||
|  | ||||
| @ -406,7 +406,7 @@ IDESPEC:	IN	A,(SLOT3) | ||||
| 		LD	A,(IDENTIFY_DEVICE_BUFFER.GeneralConfiguration) | ||||
| 		RLCA | ||||
| 		AND	%0000'0001 | ||||
| 		LD	(IY+IDE.HDD_INIT_TABLE.RemovableMedia),A | ||||
| 		LD	(IY+IDE.HDD_INIT_TABLE.MediaParameters),A | ||||
| 		;		 | ||||
| 		LD	A,(IDENTIFY_DEVICE_BUFFER.NumSectorsPerTrack) | ||||
| 		LD	(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),A | ||||
| @ -444,18 +444,28 @@ IDESPEC:	IN	A,(SLOT3) | ||||
| 		LD	HL,ICHANEL | ||||
| 		OR	(HL) | ||||
| 		LD	(IY+IDE.HDD_INIT_TABLE.DRV_Flags),A | ||||
| 		; | ||||
| 		;   ¢á直© á«ãç © | ||||
| 		 LD	HL,ATAPI_CMD_PACKET.REQUEST_SENSE | ||||
| 		 LD	DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224	; ¯à®á⮠㦥 ¡ë« ¡ãä¥à | ||||
| 		 CALL	EXEC_PACKET_COMMAND.start | ||||
| 		; [ ] sector size ATAPI | ||||
| 		 LD	HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA | ||||
| 		 LD	DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224	; ¯à®á⮠㦥 ¡ë« ¡ãä¥à   8 ¡ ©â®¢ | ||||
| 		 CALL	EXEC_PACKET_COMMAND | ||||
| 		 LD	DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224	; ¯à®á⮠㦥 ¡ë« ¡ãä¥à | ||||
| 		 CALL	EXEC_PACKET_COMMAND.start | ||||
| 		 LD	HL,#FFFF | ||||
| 		 JR	C,.No_Media | ||||
| 		 ; | ||||
| 		 LD	HL,(IDENTIFY_DEVICE_BUFFER.ReservedWord224 + 6)	; sector size high | ||||
| 		 LD	HL,(IDENTIFY_DEVICE_BUFFER.ReservedWord224)	; media size high | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh),H | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1),L | ||||
| 		 LD	HL,(IDENTIFY_DEVICE_BUFFER.ReservedWord224 + 2)	; media size low | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaSizeLow),H | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1),L | ||||
| 		 LD	HL,(IDENTIFY_DEVICE_BUFFER.ReservedWord224 + 6)	; sector size | ||||
| 		 ; | ||||
| .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.RemovableMedia),%0000'0001 ; !HARDCODE ATAPI ¯®ª  ¢á¥£¤  removable | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001 ; !HARDCODE ATAPI ¯®ª  ¢á¥£¤  removable | ||||
| 		; | ||||
| 		JR	IDESPEC.END | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik