not working
This commit is contained in:
		
							parent
							
								
									e90f1cafbf
								
							
						
					
					
						commit
						5c47eb30d6
					
				| @ -1 +1 @@ | ||||
| Subproject commit d38cd7dd53426ef452cd4afd2a76f6a1e5a84848 | ||||
| Subproject commit 7ef1dd98b491068d5a9ded34f5ff51430b7fa7e7 | ||||
| @ -521,7 +521,7 @@ TAB_5xFNS: | ||||
| 	_mNoDrive_5xTable 1, 0 | ||||
| ;-------------------------------------[] | ||||
| 
 | ||||
| ;-------------------------------------------------------------[ HDD #8 ] | ||||
| ;-------------------------------------------------------------[ ATA #8 ] | ||||
| ; | ||||
|  DB low			FN_RESERVED_5x | ||||
|  DB low		HDD_5x_RESET | ||||
| @ -546,24 +546,24 @@ TAB_5xFNS: | ||||
| 	_mNoDrive_5xTable 3, 0 | ||||
| ;-------------------------------------[] | ||||
| 
 | ||||
| ;----------------------------------------------------------[ CDROM #C0 ] | ||||
| ;-----------------------------------------------------------[ ATAPI #C ] | ||||
| ; | ||||
|  DB low			FN_RESERVED_5x | ||||
|  DB low		CD_5x_RESET | ||||
|  DB low		CD_5x_LONG_READ | ||||
|  DB low		CD_5x_LONG_WRITE	; LONG_WRITE			; [ ] new  | ||||
|  DB low		CD_5x_LONG_WRITE					; [ ] new  | ||||
|  DB low			FN_ABSENT_5x	; VERIFY | ||||
|  DB low		CD_5x_READ | ||||
|  DB low		CD_5x_WRITE		; WRITE				; [ ] new  | ||||
|  DB low		CD_5x_WRITE						; [ ] new  | ||||
|  DB low		CD_5x_DETECT | ||||
|  DB low			FN_ABSENT_5x	; GETMED | ||||
|  DB low		CD_5x_GETMED						; [ ] new  | ||||
|  DB low			FN_ABSENT_5x	; SETMED | ||||
| 
 | ||||
|  DB low		DRV_VERSION | ||||
|  DB low			FN_RESERVED_5x  | ||||
|  DB low			FN_RESERVED_5x  | ||||
|  DB low			FN_RESERVED_5x  | ||||
|  DB low		CD_5x_Extended  | ||||
|  DB low		CD_5x_Extended 						;[ ] media changed? ;!TODO | ||||
|  DB low		DRV_LIST | ||||
| ;---------------------------------------------------------------------[] | ||||
| 
 | ||||
| @ -624,7 +624,7 @@ TAB_5xFNS: | ||||
|         _mNoDrive_5xTable 1, 1 | ||||
| ;-------------------------------------[] | ||||
| 
 | ||||
| ;-------------------------------------------------------------[ HDD #8 ] | ||||
| ;-------------------------------------------------------------[ ATA #8 ] | ||||
| ; | ||||
|  DB high		FN_RESERVED_5x | ||||
|  DB high	HDD_5x_RESET | ||||
| @ -649,7 +649,7 @@ TAB_5xFNS: | ||||
|         _mNoDrive_5xTable 3, 1 | ||||
| ;-------------------------------------[] | ||||
| 
 | ||||
| ;----------------------------------------------------------[ CDROM #C0 ] | ||||
| ;-----------------------------------------------------------[ ATAPI #C ] | ||||
| ; | ||||
|  DB high		FN_RESERVED_5x | ||||
|  DB high	CD_5x_RESET | ||||
| @ -659,8 +659,8 @@ TAB_5xFNS: | ||||
|  DB high	CD_5x_READ | ||||
|  DB high	CD_5x_WRITE		; WRITE				; [ ] new | ||||
|  DB high	CD_5x_DETECT | ||||
|  DB high		FN_ABSENT_5x | ||||
|  DB high		FN_ABSENT_5x | ||||
|  DB high	CD_5x_GETMED | ||||
|  DB high		FN_ABSENT_5x	; SETMED | ||||
| 
 | ||||
|  DB high	DRV_VERSION | ||||
|  DB high		FN_RESERVED_5x  | ||||
|  | ||||
| @ -26,10 +26,10 @@ | ||||
| FDD_5x_GETMED: | ||||
| 	;!TEST FDD 720/1440 | ||||
| 	IF FDD_NormalCount | ||||
| 		LD	IY,FDD_INI_TABLE.FDD_0 | ||||
| 		LD	IY,FDD_INIT_TABLE.FDD_0 | ||||
| 		DEC	A | ||||
| 		JR	C,.getParams | ||||
| 		LD	IY,FDD_INI_TABLE.FDD_1 | ||||
| 		LD	IY,FDD_INIT_TABLE.FDD_1 | ||||
| .getParams: | ||||
| 	ENDIF | ||||
| 		IN	A,(SLOT3) | ||||
| @ -48,10 +48,10 @@ FDD_5x_GETMED: | ||||
| 		LD	XH,A | ||||
| 		LD	A,(IY+0)	;F144/720 | ||||
| 	ELSE | ||||
| 		LD	HL,(FDD_INI_TABLE.FDD_0.SECTORS) | ||||
| 		LD	DE,(FDD_INI_TABLE.FDD_0.CYLINDL) | ||||
| 		LD	IX,(FDD_INI_TABLE.FDD_0.BytesPerSector) | ||||
| 		LD	A,(FDD_INI_TABLE.FDD_0.F144) | ||||
| 		LD	HL,(FDD_INIT_TABLE.FDD_0.SECTORS) | ||||
| 		LD	DE,(FDD_INIT_TABLE.FDD_0.CYLINDL) | ||||
| 		LD	IX,(FDD_INIT_TABLE.FDD_0.BytesPerSector) | ||||
| 		LD	A,(FDD_INIT_TABLE.FDD_0.F144) | ||||
| 	ENDIF | ||||
| 		LD	B,A | ||||
| 		EX	AF,AF' | ||||
| @ -73,10 +73,10 @@ FDD_5x_GETMED: | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_SETMED:	;!TEST FDD 720/1440 | ||||
| 		IF FDD_NormalCount | ||||
| 		 LD	IY,FDD_INI_TABLE.FDD_0 | ||||
| 		 LD	IY,FDD_INIT_TABLE.FDD_0 | ||||
| 		 DEC	A | ||||
| 		 JR	C,.setParams | ||||
| 		 LD	IY,FDD_INI_TABLE.FDD_1 | ||||
| 		 LD	IY,FDD_INIT_TABLE.FDD_1 | ||||
| 		ENDIF | ||||
| 		; | ||||
| .setParams:	IN	A,(SLOT3) | ||||
| @ -98,10 +98,10 @@ FDD_5x_SETMED:	;!TEST FDD 720/1440 | ||||
| 		 LD	A,B | ||||
| 		ELSE | ||||
| 		 LD	A,B | ||||
| 		 LD	(FDD_INI_TABLE.FDD_0.SECTORS),HL | ||||
| 		 LD	(FDD_INI_TABLE.FDD_0.CYLINDL),DE | ||||
| 		 LD	(FDD_INI_TABLE.FDD_0.BytesPerSector),IX | ||||
| 		 LD	(FDD_INI_TABLE.FDD_0.F144),A | ||||
| 		 LD	(FDD_INIT_TABLE.FDD_0.SECTORS),HL | ||||
| 		 LD	(FDD_INIT_TABLE.FDD_0.CYLINDL),DE | ||||
| 		 LD	(FDD_INIT_TABLE.FDD_0.BytesPerSector),IX | ||||
| 		 LD	(FDD_INIT_TABLE.FDD_0.F144),A | ||||
| 		ENDIF | ||||
| 		; | ||||
| 		EX	AF,AF' | ||||
| @ -218,9 +218,9 @@ FDD_5x_LONG_READ: | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	IY,(FDD_INI_TABLE.FDD_0.BytesPerSector) | ||||
| 		LD	IY,(FDD_INIT_TABLE.FDD_0.BytesPerSector) | ||||
| 		LD	XH,C | ||||
| 		LD	A,(FDD_INI_TABLE.FDD_0.SECTORS) | ||||
| 		LD	A,(FDD_INIT_TABLE.FDD_0.SECTORS) | ||||
| 		LD	C,A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| @ -363,9 +363,9 @@ FDD_5x_LONG_WRITE: | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	IY,(FDD_INI_TABLE.FDD_0.BytesPerSector) | ||||
| 		LD	IY,(FDD_INIT_TABLE.FDD_0.BytesPerSector) | ||||
| 		LD	XH,C | ||||
| 		LD	A,(FDD_INI_TABLE.FDD_0.SECTORS) | ||||
| 		LD	A,(FDD_INIT_TABLE.FDD_0.SECTORS) | ||||
| 		LD	C,A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| @ -615,10 +615,10 @@ S_FDD:	PUSH	BC | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	A,(FDD_INI_TABLE.FDD_0.DISK) | ||||
| 	LD	A,(FDD_INIT_TABLE.FDD_0.DISK) | ||||
| 	AND	#FE | ||||
| 	OR	B | ||||
| 	LD	(FDD_INI_TABLE.FDD_0.DISK),A | ||||
| 	LD	(FDD_INIT_TABLE.FDD_0.DISK),A | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	POP	BC | ||||
| @ -644,9 +644,9 @@ CHANGE_SPEED:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,(FDD_INI_TABLE.FDD_0.F144) | ||||
| 		LD	A,(FDD_INIT_TABLE.FDD_0.F144) | ||||
| 		XOR	#80 | ||||
| 		LD	(FDD_INI_TABLE.FDD_0.F144),A | ||||
| 		LD	(FDD_INIT_TABLE.FDD_0.F144),A | ||||
| 		AND	#80 | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| @ -662,7 +662,7 @@ SET_SPEED:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,(FDD_INI_TABLE.FDD_0.F144) | ||||
| 		LD	A,(FDD_INIT_TABLE.FDD_0.F144) | ||||
| 		AND	#80 | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| @ -698,7 +698,7 @@ DISK_ID:	EXX | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,(FDD_INI_TABLE.FDD_0.F144) | ||||
| 		LD	A,(FDD_INIT_TABLE.FDD_0.F144) | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		EX	AF,AF' | ||||
| @ -724,7 +724,7 @@ SEEK:	LD	XL,A | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	A,(FDD_INI_TABLE.FDD_0.DISK) | ||||
| 	LD	A,(FDD_INIT_TABLE.FDD_0.DISK) | ||||
| 	AND	1 | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| @ -800,7 +800,7 @@ NTRACK: | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	A,(FDD_INI_TABLE.FDD_0.SECTORS) | ||||
| 	LD	A,(FDD_INIT_TABLE.FDD_0.SECTORS) | ||||
| 	LD	C,A | ||||
| 	LD	B,0 | ||||
| 	EX	AF,AF' | ||||
|  | ||||
| @ -21,12 +21,14 @@ RAM_ATAPI_RW_CMD	EQU	SYS_PAGE.SHARED_BUFFER_32b+16 | ||||
| 	ASSERT ((PACKET_SIZE % 4) = 0), "PACKET_SIZE must be an even number" | ||||
| 
 | ||||
| ;[]================================================================[#51] | ||||
| ;!FIXIT ᤥ« âì  áâ®ï騩 à¥á¥â | ||||
| CD_5x_RESET:	LD	C,IDE.Device.ATAPI | ||||
| 		CALL	SELECT_DRIVE | ||||
| 		RET	C | ||||
| 		LD	B,50 | ||||
| .loop:		PUSH	BC | ||||
| 		CALL	CD_TEST | ||||
| 		;!FIXIT ;[ ] sector size. ᤥ« âì २¨â HDD_INIT_TABLE | ||||
| 		POP	BC | ||||
| 		RET	NC | ||||
| 		EI  | ||||
| @ -36,6 +38,44 @@ CD_5x_RESET:	LD	C,IDE.Device.ATAPI | ||||
| ;[]================================================================[#51] | ||||
| 
 | ||||
| 
 | ||||
| ;[]================================================================[#58] | ||||
| ;Function: Get Current Media Parameters | ||||
| ;	A - Disk | ||||
| ;Return: | ||||
| ;	H - Heads | ||||
| ;	L - Sectors per cylinder | ||||
| ;      DE - Cylinders | ||||
| ;      IX - Capacity sector in bytes | ||||
| ;	B - Flags: MASTER/SLAVE, LBA/CHS | ||||
| CD_5x_GETMED: | ||||
| 	LD	C,IDE.Device.ATAPI | ||||
| 	CALL	SELECT_DRIVE | ||||
| 	RET	C | ||||
| 	; [ ] sector size. media changed | ||||
| 
 | ||||
| 	; | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	 LD	A,SYS_PAGE | ||||
| 	 OUT	(SLOT3),A | ||||
| 	 LD	HL,0 | ||||
| 	 LD	D,H | ||||
| 	 LD	L,H | ||||
| 	 ; 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	A,(IY+IDE.HDD_INIT_TABLE.SectorSize)			;[ ]sector size | ||||
| 	 LD	XL,A | ||||
| 	 LD	A,(IY+IDE.HDD_INIT_TABLE.SectorSize + 1)		;[ ]sector size | ||||
| 	 LD	XH,A | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	;AND	A | ||||
| 	RET  | ||||
| ;[]================================================================[#58] | ||||
| 
 | ||||
| ;!TODO | ||||
| ; atapi.pdf áâà. 24 § ¯¨áì/ç⥨¥ ¬®£ãâ ¡ëâì ¬ ªá¨¬ «ì묨 ¡«®ª ¬¨ ¢ ¥áª®«ìª® § å®¤®¢ | ||||
| ;[]================================================================[#55] | ||||
| @ -54,7 +94,7 @@ CD_5x_READ: | ||||
| 	EX	AF,AF' | ||||
| ;[]================================================================[#52] | ||||
| ;Function: Long	Read Sectors | ||||
| ;	A -os | ||||
| ;	A - Disk | ||||
| ;   HL:IX - Sector | ||||
| ;      DE - Address | ||||
| ;	B - Sector counter | ||||
| @ -64,6 +104,8 @@ CD_5x_READ: | ||||
| ;      DE - Address + (Sector counter *	Size sector) | ||||
| ;LONG READ SECTOR(S) | ||||
| CD_5x_LONG_READ: | ||||
| 		AND	A | ||||
| 		; | ||||
| 		PUSH	IY | ||||
| 		SAFE_PORTY_2 | ||||
| 		PUSH	BC | ||||
| @ -73,9 +115,15 @@ CD_5x_LONG_READ: | ||||
| 		 EX	AF,AF' | ||||
| 		  AND	A	;read | ||||
| 		 EX	AF,AF' | ||||
| 		CALL	RW_ATAPI_SECTORs | ||||
| 		JP	HDD_5x_LONG_READ.shared | ||||
| 		; | ||||
| 		 ld | ||||
| 		 ; ¯à®¢¥à¨âì .RemovableMedia bit, ¥á«¨ ãáâ ®¢«¥, â® ¯à®¯ã᪠RW_ATAPI_SECTORs | ||||
| 		CALL	NC,RW_ATAPI_SECTORs | ||||
| 		; [ ] sector size. media changed | ||||
| 		 JP	HDD_5x_LONG_READ.shared | ||||
| 		;  JP	NC,HDD_5x_LONG_READ.shared | ||||
| 		;  CP	BIOS.Error.UnitAttention | ||||
| 		;  JR	Z,CD_MEDIA_CHANGED_ERROR | ||||
| 		;  SCF | ||||
| ;[]================================================================[#52] | ||||
| ; INPUT: | ||||
| ;	A - Disk | ||||
| @ -159,6 +207,8 @@ CD_5x_WRITE: | ||||
| ;      DE - Address + (Sector counter *	Size sector) | ||||
| ;WRITE SECTOR(S) | ||||
| CD_5x_LONG_WRITE: | ||||
| 		AND	A | ||||
| 		; | ||||
| 		PUSH	IY | ||||
| 		SAFE_PORTY_2 | ||||
| 		PUSH	BC | ||||
| @ -168,11 +218,13 @@ CD_5x_LONG_WRITE: | ||||
| 		 EX	AF,AF' | ||||
| 		  SCF		;write | ||||
| 		 EX	AF,AF' | ||||
| 		 CALL	RW_ATAPI_SECTORs | ||||
| 		 ; | ||||
| 		 ld | ||||
| 		 ; ¯à®¢¥à¨âì .RemovableMedia bit, ¥á«¨ ãáâ ®¢«¥, â® ¯à®¯ã᪠RW_ATAPI_SECTORs | ||||
| 		 CALL	NC,RW_ATAPI_SECTORs | ||||
| 		; | ||||
| 		JP	HDD_5x_LONG_READ.shared | ||||
| 
 | ||||
| 
 | ||||
| ;[]================================================================[#57] | ||||
| ;Function: Detect Disk | ||||
| ;	   A - Disk | ||||
| @ -238,7 +290,16 @@ EXEC_PACKET_COMMAND: | ||||
| 		EXX  | ||||
| 		JR	NC,.READY | ||||
| 		; | ||||
| 		LD	BC,IDE.Write.Command | ||||
| 		; [ ] 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 | ||||
| 		; | ||||
| @ -248,9 +309,13 @@ EXEC_PACKET_COMMAND: | ||||
| 		EXX  | ||||
| 		 CALL	CD_WAITPRT | ||||
| 		EXX  | ||||
| 		;RET	C | ||||
| 		JR	C,CD_CHECK_MEDIA_CHANGED.noWait | ||||
| 		; | ||||
| .READY:		CALL	CD_CHECK_MEDIA_CHANGED | ||||
| 		RET	C | ||||
| 		; | ||||
| .READY:		LD	C,SLOT3 | ||||
| 		LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		PUSH	DE | ||||
| 		PUSH	BC | ||||
| @ -281,27 +346,34 @@ EXEC_PACKET_COMMAND: | ||||
| 		 OUT	(C),A | ||||
| 		 CALL	CD_WAITPRT | ||||
| 		EXX  | ||||
| 		RET	C | ||||
| 		;RET	C | ||||
| 		JR	C,CD_CHECK_MEDIA_CHANGED.noWait | ||||
| 		; | ||||
| 		EXX  | ||||
| 		 LD	DE,256*(IDE.CtrlByte.DataRequest+IDE.CtrlByte.Error)+IDE.CtrlByte.DataRequest | ||||
| 		 CALL	CD_WAITPRT.Custom | ||||
| 		EXX  | ||||
| 		BIT	IDE.CtrlBit.Error,A | ||||
| 		JR	NZ,.CDERROR | ||||
| 		JR	NZ,CD_CHECK_MEDIA_CHANGED.noWait | ||||
| 		JR	NC,.YEP_DRQ | ||||
| 		LD	A,#80			; ERROR TIME OUT ;!HARDCODE | ||||
| 		RET | ||||
| 		; | ||||
| .CDERROR:	LD	BC,IDE.Read.Error	;ERROR | ||||
| 		IN	A,(C) | ||||
| 		RRCA  | ||||
| 		RRCA  | ||||
| 		RRCA  | ||||
| 		RRCA  | ||||
| 		AND	#0F | ||||
| 		SCF  | ||||
| 		LD	A,BIOS.Error.TimeOut	;!FIXIT media change test | ||||
| 		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) | ||||
| 		PUSH	BC | ||||
| @ -340,7 +412,7 @@ EXEC_PACKET_COMMAND: | ||||
| 		LD	BC,IDE.Read.Status | ||||
| 		IN	A,(C) | ||||
| 		BIT	IDE.CtrlBit.Error,A | ||||
| 		JR	NZ,.CDERROR | ||||
| 		JR	NZ,CD_CHECK_MEDIA_CHANGED.noWait | ||||
| 		; | ||||
| 		AND	IDE.CtrlByte.DataRequest | ||||
| 		RET	Z ;NO DATA REQUEST. A = 0: BIOS.Error.NoErrors | ||||
| @ -421,6 +493,18 @@ EXEC_PACKET_COMMAND: | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| CD_GET_ERROR:	LD	BC,IDE.Read.Error	;ERROR | ||||
| 		IN	A,(C) | ||||
| 		RRCA  | ||||
| 		RRCA  | ||||
| 		RRCA  | ||||
| 		RRCA  | ||||
| 		AND	#0F | ||||
| 		RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| ; D - MASK, E - PATTERN | ||||
| @ -455,6 +539,54 @@ CD_TEST:	LD	HL,ATAPI_CMD_PACKET.NOP | ||||
| 		JP	EXEC_PACKET_COMMAND | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;----------------------------------------------------------------------;!TODO ᤥ« âì ¤®áâ㯮© ç¥à¥§ à áè¨à¥ãî äãªæ¨î API | ||||
| ; ¢å®¤:	DE -  ¤à¥á ¤«ï ¤ ëå | ||||
| CD_REQUEST_SENSE: | ||||
| 		LD	HL,ATAPI_CMD_PACKET.REQUEST_SENSE | ||||
| 		JP	EXEC_PACKET_COMMAND | ||||
| 		ld | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| CD_MEDIA_CHANGED_ERROR: | ||||
| 		PUSH	AF | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,%0000'0011 | ||||
| 		LD	(IY + HDD_INIT_TABLE.RemovableMedia),A | ||||
| 		; | ||||
| 		EX	AF,AF | ||||
| 		OUT	(SLOT3),A | ||||
| 		POP	AF | ||||
| 		RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| CD_CHECK_MEDIA_CHANGED: | ||||
| 		EXX | ||||
| 		 LD	DE,256*(IDE.CtrlByte.Error) + 0 | ||||
| 		 CALL	CD_WAITPRT.Custom | ||||
| 		EXX | ||||
| 		RET	NC | ||||
| 		; | ||||
| .noWait:	EXX | ||||
| 		 CALL	CD_GET_ERROR | ||||
| 		 OR	#70 | ||||
| 		EXX | ||||
| 		CP	BIOS.Error.UnitAttention | ||||
| 		SCF | ||||
| 		RET	NZ | ||||
| 		; | ||||
| 		CALL	CD_MEDIA_CHANGED_ERROR | ||||
| 		; CF=1 | ||||
| 		LD	A,BIOS.Error.UnitAttention | ||||
| 		RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| //////////////////////////////////////////////////////////////////////// | ||||
| ATAPI_CMD_PACKET: | ||||
| @ -484,6 +616,17 @@ ATAPI_CMD_PACKET: | ||||
| 	DB	#00,#01,#00,#00	; counter dword | ||||
| 	DB	#00 | ||||
| ; | ||||
| .READ_CAPACITY_DATA: | ||||
| 	DB	#25 | ||||
| 	BLOCK	11,0 | ||||
| ; | ||||
| .REQUEST_SENSE: | ||||
| 	DB	#03 | ||||
| 	DB	#00,#00,#00 | ||||
| 	DB	MAX_DATA_PACKET_FOR_REQUEST_SENSE | ||||
| 	DB	#00,#00,#00,#00,#00,#00,#00 | ||||
| ; | ||||
| 
 | ||||
| ATAPI_PACKET: | ||||
| .SECTOR		EQU	2 | ||||
| .COUNTER	EQU	7 | ||||
| @ -498,4 +641,9 @@ ATAPI_PACKET: | ||||
| ; 	DEC	E | ||||
| ; 	JR	NZ,PAUSE1 | ||||
| ; 	RET  | ||||
| ; | ||||
| ; | ||||
| /* | ||||
| …᫨ «®¢¨âáï ®è¨¡ª  media changed, â® ¡¨®á ¤®«¦¥ ¢ëáâ ¢«ïâì ¢ HDD_INIT_TABLE.RemovableMedia = 3 | ||||
| ¨ § â¨à âì FF SectorSize. | ||||
| „®á ¯®á«¥ ¯®«ã票ï â ª®© ®è¨¡ª¨ ¤®«¦¥ ¢ë§ë¢ âì BIOS.DRV_DETECT ¨ ¥á«¨ ¢áñ ŽŠ, â® ReScanDRV | ||||
| */ | ||||
| @ -105,18 +105,17 @@ HDD_5x_GETMED: | ||||
| 	RET	C | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	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	A,SYS_PAGE | ||||
| 	 OUT	(SLOT3),A | ||||
| 	 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 | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	;EX	AF,AF' | ||||
| 	AND	A | ||||
| 	;AND	A | ||||
| 	RET  | ||||
| ;[]================================================================[#58] | ||||
| 
 | ||||
| @ -135,17 +134,18 @@ HDD_5x_SETMED: | ||||
| 	RET	C | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),L | ||||
| 	LD	(IY+IDE.HDD_INIT_TABLE.HeadsNumber),H | ||||
| 	LD	(IY+IDE.HDD_INIT_TABLE.CylinderNumberLow),E | ||||
| 	LD	(IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh),D | ||||
| 	LD	(IY+IDE.HDD_INIT_TABLE.DRV_Flags),B | ||||
| 	 LD	A,SYS_PAGE | ||||
| 	 OUT	(SLOT3),A | ||||
| 	 LD	(IY+IDE.HDD_INIT_TABLE.SectorsPerTrack),L | ||||
| 	 LD	(IY+IDE.HDD_INIT_TABLE.HeadsNumber),H | ||||
| 	 LD	(IY+IDE.HDD_INIT_TABLE.CylinderNumberLow),E | ||||
| 	 LD	(IY+IDE.HDD_INIT_TABLE.CylinderNumberHigh),D | ||||
| 	 LD	(IY+IDE.HDD_INIT_TABLE.DRV_Flags),B | ||||
| 	 ;!TODO ; [ ] sector size | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	;EX	AF,AF' | ||||
| 	AND	A | ||||
| 	;AND	A | ||||
| 	RET  | ||||
| ;[]================================================================[#59] | ||||
| 
 | ||||
| @ -195,8 +195,6 @@ HDD_5x_LONG_READ: | ||||
| 		POP	HL | ||||
| 		POP	IX | ||||
| 		POP	BC | ||||
| 	IF 1 | ||||
| ;======================================================================= | ||||
| 		; HL:IX + B. ¥á«¨ B=0, â® B=256 | ||||
| 		 XOR	A | ||||
| 		 CP	B | ||||
| @ -212,32 +210,6 @@ HDD_5x_LONG_READ: | ||||
| .exit: 		RESTORE_PORTY | ||||
| 		POP	IY | ||||
| 		RET  | ||||
| ;======================================================================= | ||||
| 	ENDIF | ||||
| 
 | ||||
| 
 | ||||
| 	IF 0 | ||||
| ;=======================================================================		 | ||||
| 		XOR	A			; 4	 1 | ||||
| 		CP	B			; 4	 1 | ||||
| 		LD	C,B			; 4	 1 | ||||
| 		JR	Z,.B_256_sectors	; 12/7	 2 | ||||
| 		; | ||||
| 		LD	B,A			; 4	 1 | ||||
| 		ADD	IX,BC			; 15	 2 | ||||
| 		LD	C,A			; 4	 1 | ||||
| .pre_exit:	ADC	HL,BC			; 15	 2 | ||||
| .exit: 		RESTORE_PORTY	;45/62 | ||||
| 		POP	IY | ||||
| 		RET  | ||||
| 		; | ||||
| .B_256_sectors:	INC	B			; 4	 1 | ||||
| 		ADD	IX,BC			; 15	 2 | ||||
| 		LD	B,A			; 4	 1 | ||||
| 		JR	.pre_exit		; 12	 2 | ||||
| ;======================================================================= | ||||
| 	ENDIF | ||||
| 		; | ||||
| 		; | ||||
| .error:		LD	B,A	; A - ®¬¥à ®è¨¡ª¨ | ||||
| 		LD	C,XL | ||||
| @ -449,7 +421,7 @@ RW_ATA_SECTORs:	LD	C,IDE.Device.HDD | ||||
| 	; | ||||
| .write_sector:	; WRITE SECTOR 512 bytes		;!HARDCODE sector size | ||||
| 		INC	B ; LD	BC,IDE.Write.Data | ||||
| 		LD	D,512/WRITE_OUTI_DUPs	;!HARDCODE sector size | ||||
| 		LD	D,512/WRITE_OUTI_DUPs		;!HARDCODE sector size | ||||
| .loop:		DUP WRITE_OUTI_DUPs | ||||
| 		 OUTI  | ||||
| 		EDUP | ||||
|  | ||||
| @ -38,9 +38,9 @@ DRV_LIST: | ||||
| 
 | ||||
| ;Calculating FDD devices | ||||
| 	LD	A,#FF | ||||
| 	LD	HL,FDD_INI_TABLE.FDD_0 | ||||
| 	LD	HL,FDD_INIT_TABLE.FDD_0 | ||||
| 	CALL	.CHECK_FDD | ||||
| 	LD	HL,FDD_INI_TABLE.FDD_1 | ||||
| 	LD	HL,FDD_INIT_TABLE.FDD_1 | ||||
| 	CALL	.CHECK_FDD | ||||
| 
 | ||||
| ; 	INC	(IX+1) | ||||
| @ -53,7 +53,7 @@ DRV_LIST: | ||||
| ; 	DJNZ	.TFD0 | ||||
| ; 	DEC	(IX+1) | ||||
| ; .YYYFD0: | ||||
| ; 	LD	HL,FDD_INI_TABLE.FDD_1 | ||||
| ; 	LD	HL,FDD_INIT_TABLE.FDD_1 | ||||
| ; 	INC	(IX+1) | ||||
| ; 	LD	B,8 | ||||
| ; 	LD	A,#FF | ||||
|  | ||||
| @ -439,6 +439,23 @@ IDESPEC:	IN	A,(SLOT3) | ||||
| 		LD	HL,ICHANEL | ||||
| 		OR	(HL) | ||||
| 		LD	(IY+IDE.HDD_INIT_TABLE.DRV_Flags),A | ||||
| 		; | ||||
| 		ld | ||||
| 		; [ ] sector size ATAPI | ||||
| 		 LD	HL,ATAPI_CMD_PACKET.READ_CAPACITY_DATA | ||||
| 		 LD	DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224	; ¯à®á⮠㦥 ¡ë« ¡ãä¥à   8 ¡ ©â®¢ | ||||
| 		 CALL	EXEC_PACKET_COMMAND | ||||
| 		 LD	HL,#FFFF | ||||
| 		 JR	C,.No_Media | ||||
| 		 ; | ||||
| 		 LD	A,(IDENTIFY_DEVICE_BUFFER.ReservedWord224 + 6)	; sector size high | ||||
| 		 LD	H,A | ||||
| 		 LD	A,(IDENTIFY_DEVICE_BUFFER.ReservedWord224 + 7)	; sector size low | ||||
| 		 LD	L,A | ||||
| .No_Media:	 LD	(IY+IDE.HDD_INIT_TABLE.SectorSize),L | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.SectorSize + 1),H | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.RemovableMedia),%0000'0001 ; !HARDCODE ATAPI ¯®ª  ¢á¥£¤  removable | ||||
| 		; | ||||
| 		JR	IDESPEC.END | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| 
 | ||||
|  | ||||
| @ -1188,14 +1188,14 @@ MOVE1:	LD	SP,#7FFF						; !HARDCODE | ||||
| SYSID:	DZ	"Starting..." | ||||
| .length	EQU	$-SYSID | ||||
| 
 | ||||
| FD144A:	DB	#80,#12,#02,#50,#00,#00,#02,FDD_INI_TABLE.FDD | ||||
| FD720A:	DB	#00,#09,#02,#50,#00,#00,#02,FDD_INI_TABLE.FDD | ||||
| FD144A:	DB	#80,#12,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD | ||||
| FD720A:	DB	#00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD | ||||
| 
 | ||||
| FDD_INSTAL:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	HL,FDD_INI_TABLE.FDD_0 | ||||
| 		LD	HL,FDD_INIT_TABLE.FDD_0 | ||||
| 		LD	BC,SYS_PAGE.FDD_TBL.Size*256 + #FF	; table_size*256 + fill_byte  | ||||
| .FILLFDD:	LD	(HL),C | ||||
| 		INC	HL | ||||
| @ -1215,7 +1215,7 @@ FDD_INSTAL:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	DE,FDD_INI_TABLE.FDD_0 | ||||
| 		LD	DE,FDD_INIT_TABLE.FDD_0 | ||||
| 		LD	BC,#0008						; !HARDCODE | ||||
| 		LDIR  | ||||
| 		EX	AF,AF' | ||||
| @ -1232,7 +1232,7 @@ FDD_INSTAL:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	DE,FDD_INI_TABLE.FDD_1 | ||||
| 		LD	DE,FDD_INIT_TABLE.FDD_1 | ||||
| 		LD	BC,#0008						; !HARDCODE | ||||
| 		LDIR  | ||||
| 		EX	AF,AF' | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik