мелкие оптимизации
This commit is contained in:
		
							parent
							
								
									fdad365528
								
							
						
					
					
						commit
						69c73382a2
					
				| @ -1 +1 @@ | ||||
| Subproject commit be6067585059da92ec2674091bedf341e9219f09 | ||||
| Subproject commit e0dd54cb5615a23ea55bd217578aab57481fcf77 | ||||
| @ -1068,11 +1068,11 @@ PORTS_INIT: | ||||
| 		OUT	(FDC_93.DrvCTRL),A	: ASSERT CNF_PORT.CNF_3+ROM.BIOS = #1C, "ERROR: A != #1C" | ||||
| 		PUSH	HL						; ¤«ï § ¤¥à¦ª¨ | ||||
| 		POP	HL						; ¤«ï § ¤¥à¦ª¨ | ||||
| 		LD	A,#3C						;!HARDCODE ª®¬ ¤  ¤«ï ‚ƒ93 | ||||
| 		LD	A,#3C						;!HARDCODE | ||||
| 		OUT	(FDC_93.DrvCTRL),A | ||||
| 		PUSH	HL						; ¤«ï § ¤¥à¦ª¨ | ||||
| 		POP	HL						; ¤«ï § ¤¥à¦ª¨ | ||||
| 		XOR	A | ||||
| 		XOR	A						;!HARDCODE CMD Š<>1818‚<38>93 | ||||
| 		OUT	(FDC_93.Command),A | ||||
| 		; ‚몫îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª  | ||||
| 		LD	A,CNF_PORT.CNF_0+ROM.BIOS | ||||
|  | ||||
| @ -25,39 +25,21 @@ | ||||
| ;      IX - Capacity sector in bytes | ||||
| ;	B - Flags | ||||
| ;	    D7 - "1" - High Density, "0" - Double Density | ||||
| ;	    D0 - FDD drv number | ||||
| ;	A - D0 - "1" - Removable media | ||||
| ;[]===========================================================[] | ||||
| ;!FIXIT ¢á¥£¤  ¨¤¥â à ¡®â  á ¤ ë¬¨ ¤«ï ¤¨áª  € | ||||
| FDD_5x_GET_PAR: | ||||
| 	;!TEST FDD 720/1440 | ||||
| 	IF FDD_NormalCount | ||||
| 		LD	IY,FDD_INIT_TABLE.FDD_0 | ||||
| 		DEC	A | ||||
| 		JR	C,.getParams | ||||
| 		LD	IY,FDD_INIT_TABLE.FDD_1 | ||||
| .getParams: | ||||
| 	ENDIF | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 	;!TEST FDD 720/1440 | ||||
| 	IF FDD_NormalCount | ||||
| 		LD	L,(IY+1)	;SECTORS | ||||
| 		LD	H,(IY+2)	;HEADS | ||||
| 		LD	E,(IY+3)	;CYLINDL | ||||
| 		LD	D,(IY+4)	;CYLINDH | ||||
| 		LD	A,(IY+5)	;B_P_S low | ||||
| 		LD	XL,A | ||||
| 		LD	A,(IY+6)	;B_P_S High | ||||
| 		LD	XH,A | ||||
| 		LD	A,(IY+0)	;F144/720 | ||||
| 	ELSE | ||||
| 		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 | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| 		 ; | ||||
| 		 LD	HL,(SYS_PAGE.FDD_TABLE.SECTORS) | ||||
| 		 LD	DE,(SYS_PAGE.FDD_TABLE.CYLINDL) | ||||
| 		 LD	IX,(SYS_PAGE.FDD_TABLE.BytesPerSector) | ||||
| 		 LD	A,(SYS_PAGE.FDD_TABLE.DISK) | ||||
| 		 LD	B,A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,%0000'0001	; removable media | ||||
| @ -76,51 +58,22 @@ FDD_5x_GET_PAR: | ||||
| ;Return: None | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_SET_PAR:	;!TEST FDD 720/1440 | ||||
| 		IF FDD_NormalCount | ||||
| 		 LD	IY,FDD_INIT_TABLE.FDD_0 | ||||
| 		 DEC	A | ||||
| 		 JR	C,.setParams | ||||
| 		 LD	IY,FDD_INIT_TABLE.FDD_1 | ||||
| 		ENDIF | ||||
| 		; | ||||
| .setParams:	IN	A,(SLOT3) | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		;!TEST FDD 720/1440 | ||||
| 		IF FDD_NormalCount | ||||
| 		 LD	(IY+1),L	;SECTORS | ||||
| 		 LD	(IY+2),H	;HEADS | ||||
| 		 LD	(IY+3),E	;CYLINDL | ||||
| 		 LD	(IY+4),D	;CYLINDH | ||||
| 		 LD	A,XL | ||||
| 		 LD	(IY+5),A	;B_P_S low | ||||
| 		 LD	A,XH | ||||
| 		 LD	(IY+6),A	;B_P_S High | ||||
| 		 LD	(IY+0),B	;F144/720 | ||||
| 		 LD	A,B | ||||
| 		ELSE | ||||
| 		 LD	A,B | ||||
| 		 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 | ||||
| 		LD	A,B | ||||
| 		LD	(SYS_PAGE.FDD_TABLE.SECTORS),HL | ||||
| 		LD	(SYS_PAGE.FDD_TABLE.CYLINDL),DE | ||||
| 		LD	(SYS_PAGE.FDD_TABLE.BytesPerSector),IX | ||||
| 		LD	(SYS_PAGE.FDD_TABLE.DISK),A | ||||
| 		; | ||||
| 		EX	AF,AF' | ||||
| 		 OUT	(SLOT3),A | ||||
| 		EX	AF,AF' | ||||
| 		; | ||||
| 		;!TEST FDD 720/1440 | ||||
| 		IF FDD_NormalCount | ||||
| 		 AND	1 | ||||
| 		 JP	Z,FN_TURBO.SET_FDD_720 | ||||
| 		 JP	FN_TURBO..SET_FDD_1440 | ||||
| 		ELSE | ||||
| 		 AND	A | ||||
| 		 RET  | ||||
| 		ENDIF | ||||
| 		AND	A | ||||
| 		RET  | ||||
| 
 | ||||
| ;[]===========================================================[] | ||||
| ;Function: Detect Disk Density | ||||
| @ -156,7 +109,7 @@ FDD_5x_RESET:	CALL	SAVE_INTERRUPTS.switch_off | ||||
| 		 OUT	(SLOT3),A | ||||
| 		 LD	H,B | ||||
| 		 LD	L,0 | ||||
| 		 LD	(FDD_INIT_TABLE.FDD_0.BytesPerSector),HL | ||||
| 		 LD	(SYS_PAGE.FDD_TABLE.BytesPerSector),HL | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| @ -164,7 +117,7 @@ FDD_5x_RESET:	CALL	SAVE_INTERRUPTS.switch_off | ||||
| 		JR	C,.MOTOR_OFF | ||||
| 		; | ||||
| 		CALL	RESWG | ||||
| 		XOR	A | ||||
| 		XOR	A			;!HARDCODE CMD Š<>1818‚ƒ93 | ||||
| 		OUT	(FDC_93.Track),A | ||||
| 		IN	A,(FDC_93.Command) | ||||
| 		;LD	C,A | ||||
| @ -174,7 +127,7 @@ FDD_5x_RESET:	CALL	SAVE_INTERRUPTS.switch_off | ||||
| 		JP	SAVE_INTERRUPTS.restore | ||||
| 		;RET  | ||||
| .MOTOR_OFF:	;PUSH	AF | ||||
| 		LD	A,#D0 | ||||
| 		LD	A,#D0			;!HARDCODE CMD Š<>1818‚ƒ93 | ||||
| 		OUT	(FDC_93.Command),A      ;STOP OPERATION | ||||
| 		LD	A,#00 | ||||
| 		OUT	(FDC_93.DrvCTRL),A | ||||
| @ -212,7 +165,7 @@ FDD_5x_READ:	EX	AF,AF' | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_LONG_READ: | ||||
| 		EXX | ||||
| 		 LD	B,#80		; COMMAND READ | ||||
| 		 LD	B,#80		; COMMAND READ	;!HARDCODE CMD Š<>1818‚ƒ93 | ||||
| 		EXX | ||||
| 		; | ||||
| .RW_Shared:	CALL	SAVE_INTERRUPTS.switch_off | ||||
| @ -238,9 +191,9 @@ FDD_5x_LONG_READ: | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	IY,(FDD_INIT_TABLE.FDD_0.BytesPerSector) | ||||
| 		LD	IY,(SYS_PAGE.FDD_TABLE.BytesPerSector) | ||||
| 		LD	XH,C		; Memory Page Number | ||||
| 		LD	A,(FDD_INIT_TABLE.FDD_0.SECTORS) | ||||
| 		LD	A,(SYS_PAGE.FDD_TABLE.SECTORS) | ||||
| 		LD	C,A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| @ -360,7 +313,7 @@ FDD_5x_WRITE:	EX	AF,AF' | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_LONG_WRITE: | ||||
| 		EXX | ||||
| 		 LD	B,#A0		;COMMAND WRITE | ||||
| 		 LD	B,#A0		;COMMAND WRITE	;!HARDCODE CMD Š<>1818‚ƒ93 | ||||
| 		EXX | ||||
| 		JP	FDD_5x_LONG_READ.RW_Shared | ||||
| ; | ||||
| @ -400,7 +353,7 @@ FDD_RW_SECTOR:	LD	D,5			;RETRY COUNT | ||||
| .RW_PROC:	EXX | ||||
| 		 BIT	5,B | ||||
| 		EXX | ||||
| 		; [ ] 15/04/25 à §¬¥à ᥪâ®à  ¡®«ìè¥, 祬 ãáâ ®¢«¥® ¢ FDD_INIT_TABLE.FDD_0.BytesPerSector ¢ë§®¢¥â ®è¨¡ªã | ||||
| 		; [ ] 15/04/25 à §¬¥à ᥪâ®à  ¡®«ìè¥, 祬 ãáâ ®¢«¥® ¢ SYS_PAGE.FDD_TABLE.BytesPerSector ¢ë§®¢¥â ®è¨¡ªã | ||||
| 		LD	D,YH | ||||
| 		LD	E,YL | ||||
| 		INC	DE | ||||
| @ -466,7 +419,7 @@ FDD_RW_SECTOR:	LD	D,5			;RETRY COUNT | ||||
| 		LD	A,BIOS.Error.Write	; Error Write | ||||
| 		; | ||||
| .error_exit:	EX	AF,AF' | ||||
| 		 LD	A,#D0 | ||||
| 		 LD	A,#D0			;!HARDCODE CMD Š<>1818‚ƒ93 | ||||
| 		 OUT	(FDC_93.Command),A	;STOP OPERATION | ||||
| 		EX	AF,AF' | ||||
| 		BIT	0,C | ||||
| @ -517,55 +470,43 @@ SET_DOS_OFF:	EX	AF,AF' | ||||
| 		RET  | ||||
| 
 | ||||
| ; | ||||
| S_FDD:	PUSH	BC | ||||
| 	AND	1 | ||||
| 	LD	B,A | ||||
| 	OR	#3C | ||||
| 	OUT	(FDC_93.DrvCTRL),A | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	 LD	A,SYS_PAGE | ||||
| 	 OUT	(SLOT3),A | ||||
| 	 LD	A,(FDD_INIT_TABLE.FDD_0.DISK) | ||||
| 	 AND	#FE | ||||
| 	 OR	B | ||||
| 	 LD	(FDD_INIT_TABLE.FDD_0.DISK),A | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	POP	BC | ||||
| 	RET  | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| ; MOTOR_OFF: | ||||
| ; 	PUSH	AF | ||||
| ; 	LD	A,#D0 | ||||
| ; 	OUT	(FDC_93.Command),A      ;STOP OPERATION | ||||
| ; 	LD	A,#00 | ||||
| ; 	OUT	(FDC_93.DrvCTRL),A | ||||
| ; 	LD	A,#3C | ||||
| ; 	OUT	(FDC_93.DrvCTRL),A | ||||
| ; 	CALL	SET_DOS_OFF | ||||
| ; 	POP	AF | ||||
| ; 	RET  | ||||
| S_FDD:		PUSH	BC | ||||
| 		AND	1 | ||||
| 		LD	B,A | ||||
| 		OR	#3C | ||||
| 		OUT	(FDC_93.DrvCTRL),A | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| 		 LD	A,(SYS_PAGE.FDD_TABLE.DISK) | ||||
| 		 AND	#FE | ||||
| 		 OR	B | ||||
| 		 LD	(SYS_PAGE.FDD_TABLE.DISK),A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		POP	BC | ||||
| 		RET  | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| CHANGE_SPEED:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,(FDD_INIT_TABLE.FDD_0.F144) | ||||
| 		XOR	#80 | ||||
| 		LD	(FDD_INIT_TABLE.FDD_0.F144),A | ||||
| 		AND	#80 | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| 		 LD	A,(SYS_PAGE.FDD_TABLE.DISK) | ||||
| 		 XOR	#80 | ||||
| 		 LD	(SYS_PAGE.FDD_TABLE.DISK),A | ||||
| 		 ;AND	#80 | ||||
| 		 RLA | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		EX	AF,AF' | ||||
| 		JR	Z,FDD.SET720 | ||||
| 		;JP	FDD.SET1440	;ZF=0 | ||||
| FDD.SET1440:	LD	A,FDD_Density.SET_1440 | ||||
| 		OUT	(FDD_Density),A | ||||
| 		 ;JR	Z,FDD.SET720 | ||||
| 		 JR	NC,FDD.SET720 | ||||
| 		 ;JP	FDD.SET1440	;CF=1 | ||||
| FDD.SET1440:	 LD	A,FDD_Density.SET_1440 | ||||
| 		 OUT	(FDD_Density),A | ||||
| 		RET | ||||
| ; | ||||
| ; | ||||
| @ -573,28 +514,30 @@ SET_SPEED:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| 		 LD	A,(FDD_INIT_TABLE.FDD_0.F144) | ||||
| 		 AND	#80 | ||||
| 		 LD	A,(SYS_PAGE.FDD_TABLE.DISK) | ||||
| 		 ;AND	#80 | ||||
| 		 RLA | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		EX	AF,AF' | ||||
| 		JR	NZ,FDD.SET1440 | ||||
| 		;JR	FDD.SET720	;ZF=1 | ||||
| 		;JR	NZ,FDD.SET1440 | ||||
| 		JR	C,FDD.SET1440 | ||||
| 		;JR	FDD.SET720	;CF=0 | ||||
| FDD.SET720:	LD	A,FDD_Density.SET_720 | ||||
|         	OUT	(FDD_Density),A | ||||
|         	RET | ||||
| 
 | ||||
| 
 | ||||
| ; ¯à¥à뢠¨ï ¤®«¦ë ¡ëâì ®âª«îç¥ë | ||||
| ; ¢ë室: A - FDD_INIT_TABLE.F144, B - sector size high byte | ||||
| ; ¢ë室: A - FDD_INIT_TABLE.DISK, B - sector size high byte | ||||
| DISK_ID:	EXX  | ||||
| 		 CALL	SET_SPEED | ||||
| 		 IN	A,(FDC_93.Track) | ||||
| 		 OUT	(FDC_93.Data),A | ||||
| 		 LD	A,#18	;!TODO ¢ë¯¨á âì ª®¬¬ ¤ë ‚ƒ ;SEARCH ; !HARDCODE | ||||
| 		 LD	A,#18	;!TODO ¢ë¯¨á âì ª®¬¬ ¤ë ‚ƒ ;SEARCH ;!HARDCODE CMD Š<>1818‚ƒ93 | ||||
| 		 CALL	EXECOM | ||||
| 		 LD	C,4			; áçñâ稪 | ||||
| .loop_reg_C:	 LD	A,#C0 | ||||
| .loop_reg_C:	 LD	A,#C0			;!HARDCODE CMD Š<>1818‚ƒ93 | ||||
| 		 OUT	(FDC_93.Command),A | ||||
| 		 LD	HL,#F000		; áçñâ稪 | ||||
| .loop_reg_HL:	 IN	A,(FDC_93.DrvCTRL) | ||||
| @ -635,58 +578,47 @@ DISK_ID:	EXX | ||||
| 		EX	AF,AF' | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| 		 ;LD	A,L | ||||
| 		 ;LD	(FDD_INIT_TABLE.FDD_0.BytesPerSector + 1),A | ||||
| 		 LD	A,(FDD_INIT_TABLE.FDD_0.F144) | ||||
| 		 LD	A,(SYS_PAGE.FDD_TABLE.DISK) | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		EX	AF,AF' | ||||
| 		 AND	#80 | ||||
| 		RET | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		 | ||||
| 
 | ||||
| 
 | ||||
| ; | ||||
| SEEK:		LD	XL,A | ||||
| 		LD	C,A | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,(FDD_INIT_TABLE.FDD_0.DISK) | ||||
| 		AND	1 | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| 		 LD	A,(SYS_PAGE.FDD_TABLE.DISK) | ||||
| 		 AND	1 | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		EX	AF,AF' | ||||
| 		SRL	C | ||||
| 		JR	C,.GT001 | ||||
| 		; | ||||
| 		OR	#3C | ||||
| .GT001:		OR	#2C | ||||
| 		OUT	(FDC_93.DrvCTRL),A | ||||
| 		IN	A,(FDC_93.Track) | ||||
| 		CP	C | ||||
| 		;PUSH	BC | ||||
| 		CALL	NZ,P50ms | ||||
| 		;POP	BC | ||||
| 		LD	A,C | ||||
| 		OUT	(FDC_93.Data),A | ||||
| 		IN	A,(FDC_93.Track) | ||||
| 		CP	C | ||||
| 		 SRL	C | ||||
| 		 JR	C,.GT001 | ||||
| 		 ; | ||||
| 		 OR	#3C | ||||
| .GT001:		 OR	#2C | ||||
| 		 OUT	(FDC_93.DrvCTRL),A | ||||
| 		 IN	A,(FDC_93.Track) | ||||
| 		 CP	C | ||||
| 		 CALL	NZ,P50ms | ||||
| 		 LD	A,C | ||||
| 		 OUT	(FDC_93.Data),A | ||||
| 		 IN	A,(FDC_93.Track) | ||||
| 		 CP	C | ||||
| 		EX	AF,AF'	;R.TRACK==PHISICAL TRACK | ||||
| 		LD	A,#18 | ||||
| 		LD	A,#18	;!HARDCODE CMD Š<>1818‚ƒ93 | ||||
| 		CALL	EXECOM | ||||
| 		RET	C | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,C | ||||
| 		OUT	(FDC_93.Track),A | ||||
| 		RET	Z | ||||
| .STOL:		;PUSH	BC | ||||
| 		CALL	P50ms | ||||
| 		;POP	BC | ||||
| 		 LD	A,C | ||||
| 		 OUT	(FDC_93.Track),A | ||||
| 		 RET	Z | ||||
| .STOL:		 CALL	P50ms | ||||
| 		RET  | ||||
| ; | ||||
| ;P750ms	 LD	 B,3 | ||||
| @ -706,7 +638,7 @@ P50ms:		PUSH	BC | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| RESWG:		LD	A,8 | ||||
| RESWG:		LD	A,8	;!HARDCODE CMD Š<>1818‚ƒ93 | ||||
| 		; | ||||
| EXECOM:		OUT	(FDC_93.Command),A | ||||
| 		LD	HL,#0000	; áçñâ稪 | ||||
| @ -734,7 +666,7 @@ NTRACK:		PUSH	HL | ||||
| 		EX	AF,AF' | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| 		 LD	A,(FDD_INIT_TABLE.FDD_0.SECTORS) | ||||
| 		 LD	A,(SYS_PAGE.FDD_TABLE.SECTORS) | ||||
| 		 LD	C,A | ||||
| 		 LD	B,0 | ||||
| 		EX	AF,AF' | ||||
|  | ||||
| @ -22,49 +22,31 @@ DRV_VERSION: | ||||
| 	LD	DE,Disk_subsystem_ver_hex | ||||
| 	AND	A | ||||
| 	RET  | ||||
| 	; | ||||
| 
 | ||||
| ; | ||||
| DRV_LIST: | ||||
| 	IN	A,(SLOT3) | ||||
| 	PUSH	AF | ||||
| 	PUSH	IY | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A	; !TODO ᤥ« âì áâàãªâãன | ||||
| 	XOR	A | ||||
| 	LD	(IX+0),#04	; DB	0	;LEN			;!HARDCODE | ||||
| 	LD	(IX+1),#00	; DB	0	;FDD COUNT | ||||
| 	LD	(IX+2),#00	; DB	0	;HDD COUNT | ||||
| 	LD	(IX+3),#00	; DB	0	;CDROM COUNT | ||||
| 	;LD	(IX+1),A	; DB	0	;FDD COUNT | ||||
| 	 LD	(IX+1),#02	; DB	0	;FDD COUNT | ||||
| 	LD	(IX+2),A	; DB	0	;HDD COUNT | ||||
| 	LD	(IX+3),A	; DB	0	;CDROM COUNT | ||||
| 	;			; BLOCK	13,0	;RESERVED		;!TODO ᤥ« âì RAMDRIVE âãâ? | ||||
| 	LD	(IX+4),#00	; END FLAG | ||||
| 	LD	(IX+4),A	; END FLAG | ||||
| 	DEC	A | ||||
| 
 | ||||
| ;Calculating FDD devices | ||||
| 	LD	A,#FF | ||||
| 	LD	HL,FDD_INIT_TABLE.FDD_0 | ||||
| 	CALL	.CHECK_FDD | ||||
| 	LD	HL,FDD_INIT_TABLE.FDD_1 | ||||
| 	CALL	.CHECK_FDD | ||||
| 
 | ||||
| ; 	INC	(IX+1) | ||||
| ; 	LD	B,8 | ||||
| ; 	LD	A,#FF | ||||
| ; .TFD0: | ||||
| ; 	CP	(HL) | ||||
| ; 	INC	HL | ||||
| ; 	JR	NZ,.YYYFD0 | ||||
| ; 	DJNZ	.TFD0 | ||||
| ; 	DEC	(IX+1) | ||||
| ; .YYYFD0: | ||||
| ; 	LD	HL,FDD_INIT_TABLE.FDD_1 | ||||
| ; 	INC	(IX+1) | ||||
| ; 	LD	B,8 | ||||
| ; 	LD	A,#FF | ||||
| ; .TFD1: | ||||
| ; 	CP	(HL) | ||||
| ; 	INC	HL | ||||
| ; 	JR	NZ,.YYYFD1 | ||||
| ; 	DJNZ	.TFD1 | ||||
| ; 	DEC	(IX+1) | ||||
| ; .YYYFD1: | ||||
| 
 | ||||
| 	; A=#FF | ||||
| 	; LD	HL,SYS_PAGE.FDD_TABLE | ||||
| 	; CALL	.CHECK_FDD | ||||
| 	; LD	HL,SYS_PAGE.FDD_1_TABLE | ||||
| 	; CALL	.CHECK_FDD | ||||
| 	; A=#FF | ||||
| ;Calculating IDE devices	IDE TYPE 1-HDD, 2-CD-ROM | ||||
| 	LD	IY,IDE.INIT_TBL_IDE0 | ||||
| @ -84,57 +66,7 @@ DRV_LIST: | ||||
| .NEXT_IDE: | ||||
| 	ADD	IY,DE | ||||
| 	DJNZ	.CHECK_IDE | ||||
| 
 | ||||
| ; 	LD	A,(IY+IDE.HDD_INIT_TABLE.DriveType)	;IDE TYPE 1-HDD, 2-CD-ROM | ||||
| ; 	CP	#FF | ||||
| ; 	JR	Z,.ABSIDE0 | ||||
| ; 	CP	IDE.Device.HDD | ||||
| ; 	JR	NZ,.NOT_HD0 | ||||
| ; 	INC	(IX+2) | ||||
| ; .NOT_HD0: | ||||
| ; 	CP	IDE.Device.ATAPI | ||||
| ; 	JR	NZ,.NOT_CD0 | ||||
| ; 	INC	(IX+3) | ||||
| ; .NOT_CD0: | ||||
| ; .ABSIDE0: | ||||
| ; 	LD	IY,IDE.INIT_TBL_IDE1 | ||||
| ; 	LD	A,(IY+IDE.HDD_INIT_TABLE.DriveType)	;IDE TYPE 1-HDD, 2-CD-ROM | ||||
| ; 	CP	#FF | ||||
| ; 	JR	Z,.ABSIDE1 | ||||
| ; 	CP	IDE.Device.HDD | ||||
| ; 	JR	NZ,.NOT_HD1 | ||||
| ; 	INC	(IX+2) | ||||
| ; .NOT_HD1: | ||||
| ; 	CP	IDE.Device.ATAPI | ||||
| ; 	JR	NZ,.NOT_CD1 | ||||
| ; 	INC	(IX+3) | ||||
| ; .NOT_CD1: | ||||
| ; .ABSIDE1: | ||||
| ; 	LD	IY,IDE.INIT_TBL_IDE2 | ||||
| ; 	LD	A,(IY+IDE.HDD_INIT_TABLE.DriveType)	;IDE TYPE 1-HDD, 2-CD-ROM | ||||
| ; 	CP	#FF | ||||
| ; 	JR	Z,.ABSIDE2 | ||||
| ; 	CP	IDE.Device.HDD | ||||
| ; 	JR	NZ,.NOT_HD2 | ||||
| ; 	INC	(IX+2) | ||||
| ; .NOT_HD2: | ||||
| ; 	CP	IDE.Device.ATAPI | ||||
| ; 	JR	NZ,.NOT_CD2 | ||||
| ; 	INC	(IX+3) | ||||
| ; .NOT_CD2: | ||||
| ; .ABSIDE2: | ||||
| ; 	LD	IY,IDE.INIT_TBL_IDE3 | ||||
| ; 	LD	A,(IY+IDE.HDD_INIT_TABLE.DriveType)	;IDE TYPE 1-HDD, 2-CD-ROM | ||||
| ; 	CP	#FF | ||||
| ; 	JR	Z,.check_exit | ||||
| ; 	CP	IDE.Device.HDD | ||||
| ; 	JR	NZ,.NOT_HD3 | ||||
| ; 	INC	(IX+2) | ||||
| ; .NOT_HD3: | ||||
| ; 	CP	IDE.Device.ATAPI | ||||
| ; 	JR	NZ,.check_exit | ||||
| ; 	INC	(IX+3) | ||||
| 
 | ||||
| 	; | ||||
| .check_exit: | ||||
| 	POP	IY | ||||
| 	POP	AF | ||||
| @ -143,16 +75,16 @@ DRV_LIST: | ||||
| 	RET  | ||||
| 	; | ||||
| ; A=#FF | ||||
| .CHECK_FDD: | ||||
| 	INC	(IX+1) | ||||
| 	LD	B,8 | ||||
| .TFD0:	CP	(HL) | ||||
| 	INC	HL | ||||
| 	RET	NZ | ||||
| 	DJNZ	.TFD0 | ||||
| 	DEC	(IX+1) | ||||
| 	RET | ||||
| 	; | ||||
| ; .CHECK_FDD: | ||||
| ; 	INC	(IX+1) | ||||
| ; 	LD	B,8 | ||||
| ; .TFD0:	CP	(HL) | ||||
| ; 	INC	HL | ||||
| ; 	RET	NZ | ||||
| ; 	DJNZ	.TFD0 | ||||
| ; 	DEC	(IX+1) | ||||
| ; 	RET | ||||
| ; 	; | ||||
| 
 | ||||
| 	INCLUDE	'EXTENDED/FDD_DRIVER_2.asm' | ||||
|         INCLUDE 'EXTENDED/RAM_DISK_DRIVER_1.asm' | ||||
|  | ||||
| @ -1191,56 +1191,58 @@ MOVE1:		LD	HL,#8000					; !HARDCODE | ||||
| SYSID:	DZ	"Starting..." | ||||
| .length	EQU	$-SYSID | ||||
| 
 | ||||
| ;!FIXIT ¯¥à¥¤¥« âì ¯®¤ áâàãªâãàã ¤«ï ¯¥à¥¬¥ëå FDD, ®â¤¥«ìë¥ ¯¥à¥¬¥ë¥ ¯®¤ A ¨ B | ||||
| FD144A:	DB	#80,#12,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD | ||||
| .Size	EQU	$ - FD144A | ||||
| FD720A:	DB	#00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD | ||||
| .Size	EQU	$ - FD720A | ||||
| 
 | ||||
| ;FD144A:	DB	#80,#12,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD | ||||
| ; .Size	EQU	$ - FD144A | ||||
| ; FD720A:	DB	#00,#09,#02,#50,#00,#00,#02,FDD_INIT_TABLE.FDD | ||||
| ; .Size	EQU	$ - FD720A | ||||
| FDD_INIT_TABLE:	FDD_1440_TABLE | ||||
| 
 | ||||
| FDD_INSTAL:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	HL,FDD_INIT_TABLE.FDD_0 | ||||
| 		LD	BC,SYS_PAGE.FDD_TBL.Size*256 + #FF		; table_size*256 + fill_byte  | ||||
| 		LD	HL,SYS_PAGE.FDD_TABLE | ||||
| 		LD	BC,SYS_PAGE.FDD_TABLE.Size*256 + #FF		; table_size*256 + fill_byte  | ||||
| .FILLFDD:	LD	(HL),C | ||||
| 		INC	HL | ||||
| 		DJNZ	.FILLFDD | ||||
| 		; | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD	;#0311 | ||||
| 		CALL	GET_CMOS_VALUE | ||||
| 		LD	HL,FD720A | ||||
| 		OR	A | ||||
| 		JR	Z,.SETFD0 | ||||
| 		LD	HL,FD144A | ||||
| 		DEC	A | ||||
| 		JR	NZ,.NOFDD0 | ||||
| .SETFD0:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	DE,FDD_INIT_TABLE.FDD_0 | ||||
| 		LD	BC,FD144A.Size					; !HARDCODE | ||||
| 		LDIR  | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| .NOFDD0:	LD	BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD	;#0C11 | ||||
| 		CALL	GET_CMOS_VALUE | ||||
| 		LD	HL,FD720A | ||||
| 		OR	A | ||||
| 		JR	Z,.SETFD1 | ||||
| 		LD	HL,FD144A | ||||
| 		DEC	A | ||||
| 		JR	NZ,.NOFDD1 | ||||
| .SETFD1:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	DE,FDD_INIT_TABLE.FDD_1 | ||||
| 		LD	BC,FD144A.Size					; !HARDCODE | ||||
| 		;EX	AF,AF' | ||||
| 		;OUT	(SLOT3),A | ||||
| 		;LD	BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD	;#0311 | ||||
| 		;CALL	GET_CMOS_VALUE | ||||
| 		;LD	HL,FD720A | ||||
| 		;OR	A | ||||
| 		;JR	Z,.SETFD0 | ||||
| 		LD	HL,FDD_INIT_TABLE | ||||
| 		;DEC	A | ||||
| 		;JR	NZ,.NOFDD0 | ||||
| ;.SETFD0:	;IN	A,(SLOT3) | ||||
| 		;EX	AF,AF' | ||||
| 		;LD	A,SYS_PAGE | ||||
| 		;OUT	(SLOT3),A | ||||
| 		LD	DE,SYS_PAGE.FDD_TABLE | ||||
| 		; B=0 | ||||
| 		LD	C,SYS_PAGE.FDD_TABLE.Size | ||||
| 		LDIR  | ||||
| 		;EX	AF,AF' | ||||
| 		;OUT	(SLOT3),A | ||||
| ;.NOFDD0:	LD	BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD	;#0C11 | ||||
| 		;CALL	GET_CMOS_VALUE | ||||
| 		;LD	HL,FD720A | ||||
| 		;OR	A | ||||
| 		;JR	Z,.SETFD1 | ||||
| 		;LD	HL,FD144A | ||||
| 		;DEC	A | ||||
| 		;JR	NZ,.NOFDD1 | ||||
| ;.SETFD1:	IN	A,(SLOT3) | ||||
| 		;EX	AF,AF' | ||||
| 		;LD	A,SYS_PAGE | ||||
| 		;OUT	(SLOT3),A | ||||
| 		;LD	DE,SYS_PAGE.FDD_1_TABLE | ||||
| 		;LD	BC,FD144A.Size | ||||
| 		;LDIR  | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| .NOFDD1:	RET  | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| ;=======================[All shared EQUs]=======================; | ||||
| BETA_BUILD	EQU			40			; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ   áâ à⮢®¬ íªà ¥ | ||||
| BETA_RC		EQU			0			; | ||||
| BETA_RC		EQU			2			; | ||||
| ;======================[All shared defines]=====================; | ||||
|  DEFINE		PACKED_MAIN		0			; ¯ ª®¢ âì MAIN ¨«¨ ¢«¥§ ¥â ¡¥§ í⮣®? | ||||
|  DEFINE		SP2000_Loader_Flag	#0107			; | ||||
| @ -21,7 +21,6 @@ BETA_RC		EQU			0			; | ||||
|  DEFINE		TEST_INT		1			; ’¥áâ®¢ë© ®¡à ¡®â稪 ¯®«ì§®¢ â¥«ì᪮£® INT | ||||
|  DEFINE		NEW_FEATURE		0			; !TODO ¯ãªâë ¢ á¥â ¯ | ||||
| ;DEFINE		HDDwriteProtect		0			; áâ à ï ä¨èª  ¤«ï äãªæ¨© 5x | ||||
|  DEFINE		FDD_NormalCount		0			; !TODO  | ||||
|  DEFINE		UnusedSettingsFeatures	0			; | ||||
| ;DEFINE		OPTIMIZE_RW_PROCEDURE	0			; | ||||
|  DEFINE		BIG_ENDIAN_STR_PRINT	1			; | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik