bugfix with interrupts in 5x for FDD
This commit is contained in:
		
							parent
							
								
									2020c04f13
								
							
						
					
					
						commit
						903081f220
					
				| @ -1105,7 +1105,7 @@ PORTS_INIT: | ||||
| 	        INCLUDE 'FUNC_PIC.ASM' | ||||
| 	        INCLUDE 'FUNC_RAM_ROM_DRV.ASM' | ||||
| 	        INCLUDE 'FUNC_SYS.ASM' | ||||
| 	        INCLUDE 'FUNK_FOR_TRDOS.ASM' | ||||
| 	        INCLUDE 'FUNC_FOR_TRDOS.ASM' | ||||
|                 INCLUDE 'FUNC_5x.asm' | ||||
|                 INCLUDE 'FUNC_LOW_PRINT.ASM' | ||||
| ;-----------------------------------------------------------------------; | ||||
| @ -1584,11 +1584,13 @@ DOS_OFF: | ||||
| 	DI | ||||
| 	PUSH	AF | ||||
| 	PUSH	BC | ||||
| 	; | ||||
| 	LD	BC,(#5BFF)	; !HARDCODE | ||||
| 	LD	A,#C9		; Opcode RET | ||||
| 	LD	(#5BFF),A	; !HARDCODE | ||||
| 	CALL	#5BFF		; !HARDCODE | ||||
| 	LD	(#5BFF),BC	; !HARDCODE | ||||
| 	; | ||||
| 	POP	BC | ||||
| 	POP	AF | ||||
| 	JP	PO,.no_EI | ||||
|  | ||||
| @ -72,52 +72,52 @@ FDD_5x_GETMED: | ||||
| ;	    D7 - "1" - High Density, "0" - Double Density | ||||
| ;Return: None | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_SETMED: | ||||
| 	;!TEST FDD 720/1440 | ||||
| 	IF FDD_NormalCount | ||||
| 	 LD	IY,FDD_INI_TABLE.FDD_0 | ||||
| 	 DEC	A | ||||
| 	 JR	C,.setParams | ||||
| 	 LD	IY,FDD_INI_TABLE.FDD_1 | ||||
| 	ENDIF | ||||
| .setParams: | ||||
| 	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_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 | ||||
| 	ENDIF | ||||
| 	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 | ||||
| FDD_5x_SETMED:	;!TEST FDD 720/1440 | ||||
| 		IF FDD_NormalCount | ||||
| 		 LD	IY,FDD_INI_TABLE.FDD_0 | ||||
| 		 DEC	A | ||||
| 		 JR	C,.setParams | ||||
| 		 LD	IY,FDD_INI_TABLE.FDD_1 | ||||
| 		ENDIF | ||||
| 		; | ||||
| .setParams:	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_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 | ||||
| 		ENDIF | ||||
| 		; | ||||
| 		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 | ||||
| 
 | ||||
| ;[]===========================================================[] | ||||
| ;Function: Detect Disk Density | ||||
| @ -125,34 +125,49 @@ FDD_5x_SETMED: | ||||
| ;Return: | ||||
| ;	A - Flag D7 - "1" - High Density, "0" -	Double Density | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_DETECT: | ||||
| 	CALL	SET_DOS_ON | ||||
| 	CALL	DISK_ID | ||||
| 	PUSH	AF | ||||
| 	CALL	SET_DOS_OFF | ||||
| 	POP	AF | ||||
| 	RET  | ||||
| FDD_5x_DETECT:	CALL	SAVE_INTERRUPTS.switch_off | ||||
| 		CALL	SET_DOS_ON | ||||
| 		CALL	DISK_ID | ||||
| 		PUSH	AF | ||||
| 		CALL	SET_DOS_OFF | ||||
| 		POP	AF | ||||
| 		JP	SAVE_INTERRUPTS.restore | ||||
| 		;RET  | ||||
| 
 | ||||
| ;[]===========================================================[] | ||||
| ;Function: Reset Disk | ||||
| ;	A - Disk | ||||
| ;Return: None | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_RESET: | ||||
| 	CALL	SET_DOS_ON | ||||
| 	CALL	S_FDD | ||||
| 	CALL	DISK_ID | ||||
| 	LD	A,4	;NOT READY /NO DISK/ | ||||
| 	JP	C,MOTOR_OFF | ||||
| 	CALL	RESWG | ||||
| 	XOR	A | ||||
| 	OUT	(FDC_93.Track),A | ||||
| 	IN	A,(FDC_93.Command) | ||||
| 	LD	C,A | ||||
| 	CALL	SET_DOS_OFF | ||||
| 	LD	A,C | ||||
| 	AND	A | ||||
| 	RET  | ||||
| FDD_5x_RESET:	CALL	SAVE_INTERRUPTS.switch_off | ||||
| 		CALL	SET_DOS_ON | ||||
| 		CALL	S_FDD | ||||
| 		CALL	DISK_ID | ||||
| 		JR	C,.MOTOR_OFF | ||||
| 		; | ||||
| 		CALL	RESWG | ||||
| 		XOR	A | ||||
| 		OUT	(FDC_93.Track),A | ||||
| 		IN	A,(FDC_93.Command) | ||||
| 		LD	C,A | ||||
| 		CALL	SET_DOS_OFF | ||||
| 		LD	A,C | ||||
| 		AND	A | ||||
| 		JP	SAVE_INTERRUPTS.restore | ||||
| 		;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 | ||||
| 		; CF=1 | ||||
| 		LD	A,4	;NOT READY /NO DISK/ | ||||
| 		;POP	AF | ||||
| 		JP	SAVE_INTERRUPTS.restore | ||||
| 
 | ||||
| ;[]===========================================================[] | ||||
| ;Function: Read	Sectors | ||||
| ;	A - Disk | ||||
| @ -179,126 +194,124 @@ FDD_5x_READ: | ||||
| ;      DE - Address + (Sector counter *	Size sector) | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_LONG_READ: | ||||
| 	PUSH	IY | ||||
| 	PUSH	BC | ||||
| 	PUSH	HL | ||||
| 	PUSH	IX | ||||
| 	EX	AF,AF' | ||||
| 	LD	C,A | ||||
| 	EX	AF,AF' | ||||
| 	PUSH	BC | ||||
| 	CALL	SET_DOS_ON | ||||
| 	CALL	S_FDD | ||||
| 	CALL	SPEED | ||||
| 	CALL	NTRACK | ||||
| 	POP	BC | ||||
| 	EX	DE,HL | ||||
| ;	LD	A,B | ||||
| ;	OR	A | ||||
| ;	JP	Z,RETDOS | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	IY,(FDD_INI_TABLE.FDD_0.BytesPerSector) | ||||
| 	LD	XH,C | ||||
| 	LD	A,(FDD_INI_TABLE.FDD_0.SECTORS) | ||||
| 	LD	C,A | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| .DSK_LP: | ||||
| 	LD	A,D | ||||
| 	EXX  | ||||
| 	CALL	SEEK | ||||
| 	EXX  | ||||
| 	PUSH	DE | ||||
| 	PUSH	BC | ||||
| 	PUSH	HL | ||||
| 	CALL	RD_SEC | ||||
| 	JP	C,ERRDOS | ||||
| 	LD	D,YH | ||||
| 	LD	E,YL | ||||
| 	POP	HL | ||||
| 	POP	BC | ||||
| 	ADD	HL,DE | ||||
| 	JR	NC,.THISRD | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	D,#C2 | ||||
| 	LD	E,XH | ||||
| 	LD	A,(DE) | ||||
| 	LD	XH,A | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	SET	7,H | ||||
| 	SET	6,H | ||||
| .THISRD: | ||||
| 	POP	DE | ||||
| 	LD	A,C | ||||
| 	INC	E | ||||
| 	CP	E | ||||
| 	JP	NZ,.NINC_T | ||||
| 	LD	E,0 | ||||
| 	INC	D | ||||
| .NINC_T: | ||||
| 	DJNZ	.DSK_LP | ||||
| .RETDOS: | ||||
| 	CALL	SET_DOS_OFF | ||||
| 	LD	A,XH | ||||
| 	EX	AF,AF' | ||||
| 	EX	DE,HL | ||||
| 	POP	IX | ||||
| 	POP	HL | ||||
| 	POP	BC | ||||
| 	POP	IY | ||||
| 	LD	A,B | ||||
| 	LD	C,B | ||||
| 	INC	B | ||||
| 	DEC	B | ||||
| 	LD	B,0 | ||||
| 	JR	NZ,.ADD8BIT | ||||
| 	INC	B | ||||
| .ADD8BIT: | ||||
| 	ADD	IX,BC | ||||
| 	LD	BC,0 | ||||
| 	ADC	HL,BC | ||||
| 	LD	B,A | ||||
| 	XOR	A | ||||
| 	RET  | ||||
| 
 | ||||
| ERRDOS: | ||||
| 	POP	HL | ||||
| 	POP	BC | ||||
| 	POP	DE | ||||
| 	CALL	SET_DOS_OFF | ||||
| 	EX	DE,HL | ||||
| 	EX	AF,AF' | ||||
| 	EXX  | ||||
| 	LD	C,XH | ||||
| 	EXX  | ||||
| 	LD	A,B | ||||
| 	POP	IX | ||||
| 	POP	HL | ||||
| 	POP	BC | ||||
| 	POP	IY | ||||
| 	PUSH	AF | ||||
| 	LD	C,A | ||||
| 	LD	A,B | ||||
| 	SUB	C | ||||
| 	LD	C,A | ||||
| 	LD	B,0 | ||||
| 	ADD	IX,BC | ||||
| 	LD	C,B | ||||
| 	ADC	HL,BC | ||||
| 	POP	BC | ||||
| 	EXX  | ||||
| 	LD	A,C | ||||
| 	EXX  | ||||
| 	EX	AF,AF' | ||||
| 	SCF  | ||||
| 	RET  | ||||
| 		CALL	SAVE_INTERRUPTS.switch_off | ||||
| 		CALL	.Start | ||||
| 		JP	SAVE_INTERRUPTS.restore | ||||
| 		; | ||||
| .Start:		PUSH	IY | ||||
| 		PUSH	BC | ||||
| 		PUSH	HL | ||||
| 		PUSH	IX | ||||
| 		EX	AF,AF' | ||||
| 		LD	C,A | ||||
| 		EX	AF,AF' | ||||
| 		PUSH	BC | ||||
| 		CALL	SET_DOS_ON | ||||
| 		CALL	S_FDD | ||||
| 		CALL	SPEED | ||||
| 		CALL	NTRACK | ||||
| 		POP	BC | ||||
| 		EX	DE,HL | ||||
| ;		LD	A,B | ||||
| ;		OR	A | ||||
| ;		JP	Z,RETDOS | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	IY,(FDD_INI_TABLE.FDD_0.BytesPerSector) | ||||
| 		LD	XH,C | ||||
| 		LD	A,(FDD_INI_TABLE.FDD_0.SECTORS) | ||||
| 		LD	C,A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| .DSK_LP:	LD	A,D | ||||
| 		EXX  | ||||
| 		CALL	SEEK | ||||
| 		EXX  | ||||
| 		PUSH	DE | ||||
| 		PUSH	BC | ||||
| 		PUSH	HL | ||||
| 		CALL	RD_SEC | ||||
| 		JP	C,ERRDOS | ||||
| 		LD	D,YH | ||||
| 		LD	E,YL | ||||
| 		POP	HL | ||||
| 		POP	BC | ||||
| 		ADD	HL,DE | ||||
| 		JR	NC,.THISRD | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	D,#C2 | ||||
| 		LD	E,XH | ||||
| 		LD	A,(DE) | ||||
| 		LD	XH,A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		SET	7,H | ||||
| 		SET	6,H | ||||
| .THISRD:	POP	DE | ||||
| 		LD	A,C | ||||
| 		INC	E | ||||
| 		CP	E | ||||
| 		JP	NZ,.NINC_T | ||||
| 		LD	E,0 | ||||
| 		INC	D | ||||
| .NINC_T:	DJNZ	.DSK_LP | ||||
| .RETDOS:	CALL	SET_DOS_OFF | ||||
| 		LD	A,XH | ||||
| 		EX	AF,AF' | ||||
| 		EX	DE,HL | ||||
| 		POP	IX | ||||
| 		POP	HL | ||||
| 		POP	BC | ||||
| 		POP	IY | ||||
| 		LD	A,B | ||||
| 		LD	C,B | ||||
| 		INC	B | ||||
| 		DEC	B | ||||
| 		LD	B,0 | ||||
| 		JR	NZ,.ADD8BIT | ||||
| 		INC	B | ||||
| .ADD8BIT:	ADD	IX,BC | ||||
| 		LD	BC,0 | ||||
| 		ADC	HL,BC | ||||
| 		LD	B,A | ||||
| 		XOR	A | ||||
| 		RET  | ||||
| 	; | ||||
| ERRDOS:		POP	HL | ||||
| 		POP	BC | ||||
| 		POP	DE | ||||
| 		CALL	SET_DOS_OFF | ||||
| 		EX	DE,HL | ||||
| 		EX	AF,AF' | ||||
| 		EXX  | ||||
| 		LD	C,XH | ||||
| 		EXX  | ||||
| 		LD	A,B | ||||
| 		POP	IX | ||||
| 		POP	HL | ||||
| 		POP	BC | ||||
| 		POP	IY | ||||
| 		PUSH	AF | ||||
| 		LD	C,A | ||||
| 		LD	A,B | ||||
| 		SUB	C | ||||
| 		LD	C,A | ||||
| 		LD	B,0 | ||||
| 		ADD	IX,BC | ||||
| 		LD	C,B | ||||
| 		ADC	HL,BC | ||||
| 		POP	BC | ||||
| 		EXX  | ||||
| 		LD	A,C | ||||
| 		EXX  | ||||
| 		EX	AF,AF' | ||||
| 		SCF  | ||||
| 		RET  | ||||
| 
 | ||||
| ;[]===========================================================[] | ||||
| ;Function: Write Sectors | ||||
| @ -326,93 +339,93 @@ FDD_5x_WRITE: | ||||
| ;      DE - Address + (Sector counter *	Size sector) | ||||
| ;[]===========================================================[] | ||||
| FDD_5x_LONG_WRITE: | ||||
| 	PUSH	IY | ||||
| 	PUSH	BC | ||||
| 	PUSH	HL | ||||
| 	PUSH	IX | ||||
| 	EX	AF,AF' | ||||
| 	LD	C,A | ||||
| 	EX	AF,AF' | ||||
| 	PUSH	BC | ||||
| 	CALL	SET_DOS_ON | ||||
| 	CALL	S_FDD | ||||
| 	CALL	SPEED | ||||
| 	CALL	NTRACK | ||||
| 	POP	BC | ||||
| 	EX	DE,HL | ||||
| ;	LD	A,B | ||||
| ;	OR	A | ||||
| ;	JP	Z,RETDOS | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	IY,(FDD_INI_TABLE.FDD_0.BytesPerSector) | ||||
| 	LD	XH,C | ||||
| 	LD	A,(FDD_INI_TABLE.FDD_0.SECTORS) | ||||
| 	LD	C,A | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| .DSK_LP2: | ||||
| 	LD	A,D | ||||
| 	EXX  | ||||
| 	CALL	SEEK | ||||
| 	EXX  | ||||
| 	PUSH	DE | ||||
| 	PUSH	BC | ||||
| 	PUSH	HL | ||||
| 	CALL	WR_SEC | ||||
| 	JP	C,ERRDOS | ||||
| 	LD	D,YH | ||||
| 	LD	E,YL | ||||
| 	POP	HL | ||||
| 	POP	BC | ||||
| 	ADD	HL,DE | ||||
| 	JR	NC,.THISWR | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	D,#C2 | ||||
| 	LD	E,XH | ||||
| 	LD	A,(DE) | ||||
| 	LD	XH,A | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	SET	7,H | ||||
| 	SET	6,H | ||||
| .THISWR: | ||||
| 	POP	DE | ||||
| 	LD	A,C | ||||
| 	INC	E | ||||
| 	CP	E | ||||
| 	JP	NZ,.NINC_T2 | ||||
| 	LD	E,0 | ||||
| 	INC	D | ||||
| .NINC_T2: | ||||
| 	DJNZ	.DSK_LP2 | ||||
| 	CALL	SET_DOS_OFF | ||||
| 	LD	A,XH | ||||
| 	EX	AF,AF' | ||||
| 	EX	DE,HL | ||||
| 	POP	IX | ||||
| 	POP	HL | ||||
| 	POP	BC | ||||
| 	POP	IY | ||||
| 	LD	A,B | ||||
| 	LD	C,B | ||||
| 	INC	B | ||||
| 	DEC	B | ||||
| 	LD	B,0 | ||||
| 	JR	NZ,.ADW8BIT | ||||
| 	INC	B | ||||
| .ADW8BIT: | ||||
| 	ADD	IX,BC | ||||
| 	LD	BC,0 | ||||
| 	ADC	HL,BC | ||||
| 	LD	B,A | ||||
| 	XOR	A | ||||
| 	RET  | ||||
| 		CALL	SAVE_INTERRUPTS.switch_off | ||||
| 		CALL	.Start | ||||
| 		JP	SAVE_INTERRUPTS.restore | ||||
| 		; | ||||
| .Start:		PUSH	IY | ||||
| 		PUSH	BC | ||||
| 		PUSH	HL | ||||
| 		PUSH	IX | ||||
| 		EX	AF,AF' | ||||
| 		LD	C,A | ||||
| 		EX	AF,AF' | ||||
| 		PUSH	BC | ||||
| 		CALL	SET_DOS_ON | ||||
| 		CALL	S_FDD | ||||
| 		CALL	SPEED | ||||
| 		CALL	NTRACK | ||||
| 		POP	BC | ||||
| 		EX	DE,HL | ||||
| ;		LD	A,B | ||||
| ;		OR	A | ||||
| ;		JP	Z,RETDOS | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	IY,(FDD_INI_TABLE.FDD_0.BytesPerSector) | ||||
| 		LD	XH,C | ||||
| 		LD	A,(FDD_INI_TABLE.FDD_0.SECTORS) | ||||
| 		LD	C,A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| .DSK_LP2:	LD	A,D | ||||
| 		EXX  | ||||
| 		CALL	SEEK | ||||
| 		EXX  | ||||
| 		PUSH	DE | ||||
| 		PUSH	BC | ||||
| 		PUSH	HL | ||||
| 		CALL	WR_SEC | ||||
| 		JP	C,ERRDOS | ||||
| 		LD	D,YH | ||||
| 		LD	E,YL | ||||
| 		POP	HL | ||||
| 		POP	BC | ||||
| 		ADD	HL,DE | ||||
| 		JR	NC,.THISWR | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	D,#C2 | ||||
| 		LD	E,XH | ||||
| 		LD	A,(DE) | ||||
| 		LD	XH,A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		SET	7,H | ||||
| 		SET	6,H | ||||
| .THISWR:	POP	DE | ||||
| 		LD	A,C | ||||
| 		INC	E | ||||
| 		CP	E | ||||
| 		JP	NZ,.NINC_T2 | ||||
| 		LD	E,0 | ||||
| 		INC	D | ||||
| .NINC_T2:	DJNZ	.DSK_LP2 | ||||
| 		CALL	SET_DOS_OFF | ||||
| 		LD	A,XH | ||||
| 		EX	AF,AF' | ||||
| 		EX	DE,HL | ||||
| 		POP	IX | ||||
| 		POP	HL | ||||
| 		POP	BC | ||||
| 		POP	IY | ||||
| 		LD	A,B | ||||
| 		LD	C,B | ||||
| 		INC	B | ||||
| 		DEC	B | ||||
| 		LD	B,0 | ||||
| 		JR	NZ,.ADW8BIT | ||||
| 		INC	B | ||||
| .ADW8BIT:	ADD	IX,BC | ||||
| 		LD	BC,0 | ||||
| 		ADC	HL,BC | ||||
| 		LD	B,A | ||||
| 		XOR	A | ||||
| 		RET  | ||||
| 
 | ||||
| ; | ||||
| ;------------------------------- | ||||
| @ -420,7 +433,7 @@ FDD_5x_LONG_WRITE: | ||||
| ;------------------------------- | ||||
| RD_SEC:	LD	D,5	;RETRY COUNT | ||||
| .RRETRY: | ||||
| 	DI  | ||||
| 	;DI  | ||||
| 	PUSH	DE | ||||
| 	LD	A,E | ||||
| 	INC	A | ||||
| @ -458,7 +471,7 @@ RD_SEC:	LD	D,5	;RETRY COUNT | ||||
| 	EX	AF,AF' | ||||
| ;------------------------------- | ||||
| 	POP	DE | ||||
| 	EI  | ||||
| 	;EI  | ||||
| 	IN	A,(FDC_93.Command) | ||||
| 	LD	C,A | ||||
| ;R01 | ||||
| @ -499,7 +512,7 @@ RD_SEC:	LD	D,5	;RETRY COUNT | ||||
| ;------------------------------- | ||||
| WR_SEC:	LD	D,5	;RETRY COUNT | ||||
| .WRETRY: | ||||
| 	DI  | ||||
| 	;DI  | ||||
| 	PUSH	DE | ||||
| 	LD	A,E | ||||
| 	INC	A | ||||
| @ -537,7 +550,7 @@ WR_SEC:	LD	D,5	;RETRY COUNT | ||||
| 	EX	AF,AF' | ||||
| ;------------------------------- | ||||
| 	POP	DE | ||||
| 	EI  | ||||
| 	;EI  | ||||
| 	IN	A,(FDC_93.Command) | ||||
| 	LD	C,A | ||||
| ;R01 | ||||
| @ -629,17 +642,17 @@ S_FDD:	PUSH	BC | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| 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  | ||||
| ; 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  | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| @ -673,9 +686,9 @@ SPEED:	IN	A,(SLOT3) | ||||
| 	JP	FDD.SET1440	;NZ | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| ; ¯à¥à뢠¨ï ¤®«¦ë ¡ëâì ®âª«îç¥ë | ||||
| DISK_ID: | ||||
| 	DI  | ||||
| 	;DI  | ||||
| 	EXX  | ||||
| 	CALL	SPEED | ||||
| 	IN	A,(FDC_93.Track) | ||||
| @ -708,7 +721,7 @@ DISK_ID: | ||||
| 	OUT	(SLOT3),A | ||||
| 	EX	AF,AF' | ||||
| 	AND	#80 | ||||
| 	EI  | ||||
| 	;EI  | ||||
| 	RET  | ||||
| .ID_LP4: | ||||
| 	DEC	HL | ||||
| @ -720,7 +733,7 @@ DISK_ID: | ||||
| 	JP	NZ,.ID_LP0 | ||||
| 	EXX  | ||||
| 	SCF  | ||||
| 	EI  | ||||
| 	;EI  | ||||
| 	RET | ||||
| ; | ||||
| 
 | ||||
| @ -828,6 +841,26 @@ NTRACK: | ||||
| 	LD	H,A | ||||
| 	RET | ||||
| ; | ||||
| 
 | ||||
| 
 | ||||
| SAVE_INTERRUPTS: | ||||
| .switch_off:	PUSH AF | ||||
| 		LD A,R | ||||
| 		LD A,#80 | ||||
| 		JP PE,.set_R | ||||
| 		XOR A | ||||
| .set_R: 	LD R,A | ||||
| 		DI | ||||
| 		POP AF | ||||
| 		RET | ||||
| 	;	; | ||||
| .restore:	PUSH AF | ||||
| 		LD A,R | ||||
| 		BIT 7,A | ||||
| 		JR Z,.set_di | ||||
| 		EI | ||||
| 		POP AF	; PE | ||||
| 		RET | ||||
| 		; | ||||
| .set_di:	DI | ||||
| 		POP AF	; PO | ||||
| 		RET | ||||
| ;[]===========================================================[] | ||||
| @ -320,11 +320,13 @@ SW_ROM: | ||||
| 	DI | ||||
| 	PUSH	AF | ||||
| 	PUSH	BC | ||||
| 	LD	BC,(#5BFF)                                                   ; !HARDCODE | ||||
| 	; | ||||
| 	LD	BC,(#5BFF)	; !HARDCODE | ||||
| 	LD	A,#C9		; Opcode RET | ||||
| 	LD	(#5BFF),A                                                    ; !HARDCODE | ||||
| 	CALL	#5BFF                                                      ; !HARDCODE | ||||
| 	LD	(#5BFF),BC                                                   ; !HARDCODE | ||||
| 	LD	(#5BFF),A	; !HARDCODE | ||||
| 	CALL	#5BFF		; !HARDCODE | ||||
| 	LD	(#5BFF),BC	; !HARDCODE | ||||
| 	; | ||||
| 	POP	BC | ||||
| 	POP	AF | ||||
| 	JP	PO,.no_EI | ||||
|  | ||||
| @ -527,7 +527,7 @@ msgStrings: | ||||
|  _mSetStr ideFail, tmp_Counter			:	DZ	'Fail              '	; !FIXIT strFail | ||||
|  _mSetStr spModel, tmp_Counter			:	DZ	'Model     : ' | ||||
| .str_ACEX_MODEL						EQU	 $$$+2			; 㪠§ â¥«ì   áâப㠨¦¥ ¤«ï ¯ âç   ¯¤¥©â¥à®¬ | ||||
|  _mSetStr spCNFver, tmp_Counter			:	DZ	'1K30 core : v' | ||||
|  _mSetStr spCNFver, tmp_Counter			:	DZ	'Core 1K30 : v' | ||||
|  _mSetStr spMemory, tmp_Counter			:	DZ	'Memory    : ' | ||||
|  _mSetStr cmosFound, tmp_Counter		:	DZ	'CMOS      : Found' | ||||
|  _mSetStr cmosNone, tmp_Counter			:	DZ	'CMOS      : None' | ||||
| @ -678,7 +678,7 @@ msgRusStrings: | ||||
|  _mSetStrRus ideFail, tmp_Counter		:	DZ	'<EFBFBD>¥ ®¯à¥¤¥«ñ      ' | ||||
|  _mSetStrRus spModel, tmp_Counter		:	DZ	'Œ®¤¥«ì    : ' | ||||
| .str_ACEX_MODEL						EQU	 $$$+2			; 㪠§ â¥«ì   áâப㠨¦¥ ¤«ï ¯ âç   ¯¤¥©â¥à®¬ ; !FIXIT ? ¢ëâ¢ âì ç¥à¥§ FN_CRIPT.Acex_ver ? | ||||
|  _mSetStrRus spCNFver, tmp_Counter		:	DZ	'1K30 ï¤à® : v' | ||||
|  _mSetStrRus spCNFver, tmp_Counter		:	DZ	'Ÿ¤à® 1K30 : v' | ||||
|  _mSetStrRus spMemory, tmp_Counter		:	DZ	'<EFBFBD> ¬ïâì    : ' | ||||
|  _mSetStrRus cmosFound, tmp_Counter		:	DZ	'CMOS      : <EFBFBD> ©¤¥' | ||||
|  _mSetStrRus cmosNone, tmp_Counter		:	DZ	'CMOS      : <EFBFBD>¥â' | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Anatoliy Belyanskiy
						Anatoliy Belyanskiy