DOING free zx pages
This commit is contained in:
		
							parent
							
								
									23eefc8625
								
							
						
					
					
						commit
						42c3d40f86
					
				| @ -1 +1 @@ | ||||
| Subproject commit 18eb6779037e4e6291119d52cd7b8aba3b51de6c | ||||
| Subproject commit 7bb1538646ae7e8ba917d04b55e7396d74154df7 | ||||
| @ -857,7 +857,6 @@ Setup_to_RAM:	LD HL,Setup_Starter.Start | ||||
| 		;JP	PrepareToZX | ||||
| 	ENDMODULE | ||||
| 
 | ||||
| 
 | ||||
| PrepareToZX:	;CALL	init_zx_roms | ||||
| 		; Setup HDD drives for ZX Spectrum mode | ||||
| 		DI | ||||
| @ -896,10 +895,12 @@ PrepareToZX:	;CALL	init_zx_roms | ||||
| 		CP	#10 | ||||
| 		JR	C,.loop | ||||
| 	; ¢ë室 ¢ ०¨¬ zx spectrum | ||||
| .start_zx:	 XOR	A | ||||
| .start_zx: | ||||
| 	IF FREE_ZX_PAGES | ||||
| 		JP	GOTO_SPEC | ||||
| 		; | ||||
| =========== | ||||
| 	ELSE	; [x] free zx pages! | ||||
| 		 XOR	A | ||||
| 		 OUT	(SLOT2),A	; ZERO_PAGE | ||||
| 		 DEC	A | ||||
| 		 OUT	(SLOT1),A	; SHARED_PAGE | ||||
|  | ||||
| @ -801,290 +801,259 @@ GEN_PAL2_L1: | ||||
| ; | ||||
| ;************************************ | ||||
| 
 | ||||
| FN_SYNC: | ||||
| 	BIT 7,a | ||||
| 	JR Z,.old_mode | ||||
| 
 | ||||
| 	ld h,a | ||||
| 	and #60								; check reserved bits | ||||
| 	jr nz,.error | ||||
| 
 | ||||
| 	bit 2,h								; Set V-Sinc? | ||||
| 	jr nz,.set_v_sinc | ||||
| 
 | ||||
| 	bit 4,h								; Set Waits? | ||||
| 	jr z,.error							; Error - no parameters | ||||
| 
 | ||||
| .set_waits: | ||||
| 	ld a,h | ||||
| 	and 8								; check waits. Z - no waits, NZ - waits | ||||
| 	ld h,Port_All_Mode.DEFAULT | ||||
| 	jr z,1F | ||||
| 	ld h,Port_All_Mode.DEFAULT - Port_All_Mode.MEM_WAITS_OFF | ||||
| 1:	ld bc,(Port_All_Mode) | ||||
| 	in a,(C) | ||||
| 	and h | ||||
| 	out (C),a | ||||
| 	RET	 | ||||
| 
 | ||||
| .set_v_sinc: | ||||
| 	ld a,h | ||||
| 	and 3 | ||||
| 	jr z,.SetDefLines | ||||
| 	dec a | ||||
| 	jr z,.SetCmosLines | ||||
| 	dec a | ||||
| 	jr z,.Set320Lines | ||||
| ;	jr Set312Lines | ||||
| 
 | ||||
| .set312lines: | ||||
| 	ld a,Port_VSYNC.SET_312L | ||||
| 	out (Port_VSYNC),a  | ||||
| 
 | ||||
| 	LD C,SLOT3 | ||||
| 	IN B,(C) | ||||
| 		LD A,SYS_PAGE | ||||
| 		OUT (C),A | ||||
| 		ld a,(SYS_PAGE.VSyncAndWaits) | ||||
| 		and 2 | ||||
| 		ld (SYS_PAGE.VSyncAndWaits),a | ||||
| 	OUT (C),B		 | ||||
| 
 | ||||
| .end_set_v_sinc:	 | ||||
| 	bit 4,h | ||||
| 	ret z | ||||
| 	jr .set_waits | ||||
| 
 | ||||
| 
 | ||||
| .Set320Lines: | ||||
| 	ld a,Port_VSYNC.SET_320L | ||||
| 	out (Port_VSYNC),a  | ||||
| 
 | ||||
| 	LD C,SLOT3 | ||||
| 	IN B,(C) | ||||
| 		LD A,SYS_PAGE | ||||
| 		OUT (C),A	 | ||||
| 		ld a,(SYS_PAGE.VSyncAndWaits) | ||||
| 		or 1 | ||||
| 		ld (SYS_PAGE.VSyncAndWaits),a | ||||
| 	OUT (C),B | ||||
| 
 | ||||
| 	jr .end_set_v_sinc | ||||
| 
 | ||||
| .SetCmosLines: | ||||
| 	LD D,CMOS_CELL.ScreenSET | ||||
| 	CALL CMOS_RD | ||||
| 
 | ||||
| 	AND high CMOS_CELL.ScreenSET.Mask.Sinc						; ¢ ॣ¨áâॠA § ç¥¨¥ ScreenSET | ||||
| 	jr z,.SetDefLines | ||||
| 
 | ||||
| 	bit 6,a | ||||
| 	jr z,.set312lines | ||||
| 
 | ||||
| 	jr .Set320Lines | ||||
| 
 | ||||
| .old_mode:	 | ||||
| 	AND A | ||||
| 	JR Z,.INT_DEF | ||||
| 	DEC A | ||||
| 	JR Z,.INT_SCORP | ||||
| 	DEC A | ||||
| 	JR Z,.INT_PENT | ||||
| 	DEC A | ||||
| 	JR Z,.INT_ORIG | ||||
| 	DEC A | ||||
| 	JR Z,.INT_CMOS_SINC | ||||
| 	; [x] ª áâ®¬ë© íªà  ¯® â ¡«¨æ¥ ¯®«ì§®¢ â¥«ï | ||||
| 	 DEC A | ||||
| 	 JR Z,.PROG_SCR | ||||
| 	; | ||||
| .error:	SCF | ||||
| 	RET | ||||
| 	 | ||||
| .SetDefLines: | ||||
| 	LD C,SLOT3 | ||||
| 	IN B,(C) | ||||
| 	 LD A,SYS_PAGE | ||||
| 	 OUT (C),A	 | ||||
| 	 ld a,(SYS_PAGE.VSyncAndWaits) | ||||
| 	OUT (C),B | ||||
| 	and 1 | ||||
| 	jr z,.set312lines | ||||
| 	jr .Set320Lines | ||||
| 
 | ||||
| .INT_DEF: | ||||
| 	LD C,SLOT3 | ||||
| 	IN B,(C) | ||||
| 	 LD A,SYS_PAGE | ||||
| 	 OUT (C),A | ||||
| 	 LD DE,(SYS_PAGE.SCREEN_TABLE) | ||||
| 	OUT (C),B | ||||
| 
 | ||||
| 	CALL Test_CONFIG_ALL | ||||
| 	jr nz,.INT_CMOS_SINC | ||||
| 	jp (IX) | ||||
| 
 | ||||
| .INT_CMOS_SINC: | ||||
| 	LD C,SLOT3 | ||||
| 	IN B,(C) | ||||
| 	 LD A,SYS_PAGE | ||||
| 	 OUT (C),A | ||||
| 	 LD DE,(SYS_PAGE.SCREEN_TABLE) | ||||
| 	OUT (C),B | ||||
| 
 | ||||
| 	LD D,CMOS_CELL.ScreenSET | ||||
| 	CALL CMOS_RD | ||||
| 
 | ||||
| 	AND high CMOS_CELL.ScreenSET.Mask.Int				; ¢ ॣ¨áâॠA § ç¥¨¥ ScreenSET | ||||
| 	JR NZ,.skiptest | ||||
| 
 | ||||
| 	CALL	Test_CONFIG_ALL | ||||
| 	JP	(IX)							; default int (non CMOS)  | ||||
| 
 | ||||
| .skiptest: | ||||
| 	cp #10 | ||||
| 	jr z,.INT_SCORP						; scorpion int	 | ||||
| 
 | ||||
| 	cp #20 | ||||
| 	jr z,.INT_PENT						; pentagon int		 | ||||
| 
 | ||||
| ;	jr ORIG_SINC						; original int | ||||
| 
 | ||||
| .INT_ORIG: | ||||
| 	LD IX,SCREEN_TABLES.ORIGINAL | ||||
| 	JR .PROG_SCR | ||||
| .INT_SCORP: | ||||
| 	LD IX,SCREEN_TABLES.SCORPION | ||||
| 	JR .PROG_SCR | ||||
| .INT_PENT: | ||||
| 	LD IX,SCREEN_TABLES.PENTAGON | ||||
| ;	JR PROG_SCR | ||||
| .PROG_SCR: | ||||
| 	IN A,(SLOT3) | ||||
| 	EX AF,AF' | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
| 	EX AF,AF' | ||||
| 	LD (SYS_PAGE.COPY_SLOT3),A | ||||
| 	IN A,(PORT_Y) | ||||
| 	LD (SYS_PAGE.COPY_RGADR),A | ||||
| 
 | ||||
| 	LD (SYS_PAGE.SCREEN_TABLE),IX | ||||
| 	XOR	A | ||||
| 
 | ||||
| FN_SYNC:	BIT	7,A | ||||
| 		JR	Z,.old_mode | ||||
| 		; | ||||
| 		LD	H,A | ||||
| 		AND	#60						; check reserved bits | ||||
| 		JR	NZ,.error | ||||
| 		; | ||||
| 		BIT	2,H						; Set V-Sinc? | ||||
| 		JR	NZ,.set_v_sinc | ||||
| 		; | ||||
| 		BIT	4,H						; Set Waits? | ||||
| 		JR	Z,.error					; Error - no parameters | ||||
| 		; | ||||
| .set_waits:	LD	A,H | ||||
| 		AND	8						; check waits. Z - no waits, NZ - waits | ||||
| 		LD	H,Port_All_Mode.DEFAULT | ||||
| 		JR	Z,.no_change | ||||
| 		LD	H,Port_All_Mode.DEFAULT-Port_All_Mode.MEM_WAITS_OFF | ||||
| .no_change:	LD	BC,(Port_All_Mode) | ||||
| 		IN	A,(C) | ||||
| 		AND	H | ||||
| 		OUT	(C),A | ||||
| 		RET | ||||
| 		; | ||||
| .set_v_sinc:	LD	A,H | ||||
| 		AND	3 | ||||
| 		JR	Z,.SetDefLines | ||||
| 		DEC	A | ||||
| 		JR	Z,.SetCmosLines | ||||
| 		DEC	A | ||||
| 		JR	Z,.Set320Lines | ||||
| 		;JR	.Set312Lines | ||||
| .set312lines:	LD	A,Port_VSYNC.SET_312L | ||||
| 		OUT	(Port_VSYNC),A | ||||
| 		; | ||||
| 		LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(C),A | ||||
| 		LD	A,(SYS_PAGE.VSyncAndWaits) | ||||
| 		AND	2 | ||||
| 		LD	(SYS_PAGE.VSyncAndWaits),A | ||||
| 		OUT	(C),B | ||||
| 		; | ||||
| .end_set_v_sinc: | ||||
| 		BIT	4,H | ||||
| 		RET	Z | ||||
| 		JR	.set_waits | ||||
| 		; | ||||
| .Set320Lines:	LD	A,Port_VSYNC.SET_320L | ||||
| 		OUT	(Port_VSYNC),A | ||||
| 		; | ||||
| 		LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(C),A | ||||
| 		LD	A,(SYS_PAGE.VSyncAndWaits) | ||||
| 		OR	1 | ||||
| 		LD	(SYS_PAGE.VSyncAndWaits),A | ||||
| 		OUT	(C),B | ||||
| 		JR	.end_set_v_sinc | ||||
| 		; | ||||
| .SetCmosLines:	LD	D,CMOS_CELL.ScreenSET | ||||
| 		CALL	CMOS_RD | ||||
| 		; | ||||
| 		AND	high CMOS_CELL.ScreenSET.Mask.Sinc		; ¢ ॣ¨áâॠA § ç¥¨¥ ScreenSET | ||||
| 		JR	Z,.SetDefLines | ||||
| 		; | ||||
| 		BIT	6,A | ||||
| 		JR	Z,.set312lines | ||||
| 		JR	.Set320Lines | ||||
| 		; | ||||
| .old_mode:	AND	A | ||||
| 		JR	Z,.INT_DEF | ||||
| 		DEC	A | ||||
| 		JR	Z,.INT_SCORP | ||||
| 		DEC	A | ||||
| 		JR	Z,.INT_PENT | ||||
| 		DEC	A | ||||
| 		JR	Z,.INT_ORIG | ||||
| 		DEC	A | ||||
| 		JR	Z,.INT_CMOS_SINC | ||||
| 		; [x] ª áâ®¬ë© íªà  ¯® â ¡«¨æ¥ ¯®«ì§®¢ â¥«ï | ||||
| 		DEC	A | ||||
| 		JR	Z,.PROG_SCR | ||||
| 		; | ||||
| .error:		SCF | ||||
| 		RET | ||||
| 		; | ||||
| .SetDefLines:	LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(C),A | ||||
| 		LD	A,(SYS_PAGE.VSyncAndWaits) | ||||
| 		OUT	(C),B | ||||
| 		AND	1 | ||||
| 		JR	Z,.set312lines | ||||
| 		JR	.Set320Lines | ||||
| 		; | ||||
| .INT_DEF:	LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(C),A | ||||
| 		LD	DE,(SYS_PAGE.SCREEN_TABLE) | ||||
| 		OUT	(C),B | ||||
| 		; | ||||
| 		CALL	Test_SCREEN_TABLE | ||||
| 		JR	NZ,.INT_CMOS_SINC | ||||
| 		JP	(IX) | ||||
| 		; | ||||
| .INT_CMOS_SINC:	LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(C),A | ||||
| 		LD	DE,(SYS_PAGE.SCREEN_TABLE) | ||||
| 		OUT	(C),B | ||||
| 		; | ||||
| 		LD	D,CMOS_CELL.ScreenSET | ||||
| 		CALL	CMOS_RD | ||||
| 		; | ||||
| 		AND	high CMOS_CELL.ScreenSET.Mask.Int		; ¢ ॣ¨áâॠA § ç¥¨¥ ScreenSET | ||||
| 		JR	NZ,.skiptest | ||||
| 		; | ||||
| 		CALL	Test_SCREEN_TABLE | ||||
| 		JP	(IX)						; default int (non CMOS)  | ||||
| 		; | ||||
| .skiptest:	CP	#10 | ||||
| 		JR	Z,.INT_SCORP					; scorpion int	 | ||||
| 		; | ||||
| 		CP	#20 | ||||
| 		JR	Z,.INT_PENT					; pentagon int		 | ||||
| 		; | ||||
| 		;JR	.INT_ORIG					; original int | ||||
| .INT_ORIG:	LD	IX,SCREEN_TABLES.ORIGINAL | ||||
| 		JR	.PROG_SCR | ||||
| 		; | ||||
| .INT_SCORP:	LD	IX,SCREEN_TABLES.SCORPION | ||||
| 		JR	.PROG_SCR | ||||
| 		; | ||||
| .INT_PENT:	LD	IX,SCREEN_TABLES.PENTAGON | ||||
| 		;JR	.PROG_SCR | ||||
| .PROG_SCR:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		EX	AF,AF' | ||||
| 		LD	(SYS_PAGE.COPY_SLOT3),A | ||||
| 		IN	A,(PORT_Y) | ||||
| 		LD	(SYS_PAGE.COPY_RGADR),A | ||||
| 		; | ||||
| 		LD	(SYS_PAGE.SCREEN_TABLE),IX | ||||
| 		XOR	A | ||||
| ;----[START]-----------------------[? 1] | ||||
| .loop_1: | ||||
| 	OUT (PORT_Y),A | ||||
| 	EX AF,AF' | ||||
| 
 | ||||
| 	LD A,#50 | ||||
| 	OUT (SLOT3),A | ||||
| 
 | ||||
| 	LD HL,#C300 | ||||
| 
 | ||||
| .loop_1:	OUT	(PORT_Y),A | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,#50 | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	HL,#C300 | ||||
| ;----[START]------------------[v 2]----- | ||||
| .loop_2: | ||||
| 	LD C,(IX) | ||||
| .loop_2:	LD	C,(IX) | ||||
| ;----[START]-------------[v 3]---------- | ||||
| .loop_3: | ||||
| ; ¢§ïâì  ¤à¥á ¤ ëå ¤«ï § ¯¨á¨ ¢ á«ã¦¥¡ãî ®¡« áâì íªà   | ||||
| 	LD E,(IX+1)							; take adress of line X | ||||
| 	LD D,(IX+2) | ||||
| .loop_3:	; ¢§ïâì  ¤à¥á ¤ ëå ¤«ï § ¯¨á¨ ¢ á«ã¦¥¡ãî ®¡« áâì íªà   | ||||
| 		LD	E,(IX+1)					; take adress of line X | ||||
| 		LD	D,(IX+2) | ||||
| ;----[START]--------[v 4]--------------- | ||||
| .loop_4: | ||||
| 	LD A,(DE)							; take counter in table 1, line X, column Y | ||||
| 	INC DE | ||||
| 	AND A | ||||
| 	JR Z,.loop_4_exit					        ; exit if zero-counter | ||||
| 	LD B,A | ||||
| 	LD A,(DE) | ||||
| 	INC DE | ||||
| .loop_4:	LD	A,(DE)						; take counter in table 1, line X, column Y | ||||
| 		INC	DE | ||||
| 		AND	A | ||||
| 		JR	Z,.loop_4_exit					; exit if zero-counter | ||||
| 		LD	B,A | ||||
| 		LD	A,(DE) | ||||
| 		INC	DE | ||||
| ;----[START]---[v 5]-------------------- | ||||
| .loop_5: | ||||
| 	LD (HL),A | ||||
| 	INC L | ||||
| 	LD (HL),0 | ||||
| 	INC L | ||||
| 	LD (HL),0 | ||||
| 
 | ||||
| 	EX AF,AF' | ||||
| 	INC A | ||||
| 	OUT (PORT_Y),A | ||||
| 	EX AF,AF' | ||||
| 
 | ||||
| 	LD (HL),0 | ||||
| 	DEC L | ||||
| 	LD (HL),0 | ||||
| 	DEC L | ||||
| 	LD (HL),A | ||||
| 
 | ||||
| 	EX AF,AF' | ||||
| 	INC A | ||||
| 	OUT (PORT_Y),A | ||||
| 	EX AF,AF' | ||||
| 
 | ||||
| 	DJNZ .loop_5 | ||||
| .loop_5:	LD	(HL),A | ||||
| 		INC	L | ||||
| 		LD	(HL),0 | ||||
| 		INC	L | ||||
| 		LD	(HL),0 | ||||
| 		; | ||||
| 		EX	AF,AF' | ||||
| 		INC	A | ||||
| 		OUT	(PORT_Y),A | ||||
| 		EX	AF,AF' | ||||
| 		; | ||||
| 		LD	(HL),0 | ||||
| 		DEC	L | ||||
| 		LD	(HL),0 | ||||
| 		DEC	L | ||||
| 		LD	(HL),A | ||||
| 		; | ||||
| 		EX	AF,AF' | ||||
| 		INC	A | ||||
| 		OUT	(PORT_Y),A | ||||
| 		EX	AF,AF' | ||||
| 		; | ||||
| 		DJNZ	.loop_5 | ||||
| ;--------------[^ 5]-------------------- | ||||
| 	JR .loop_4 | ||||
| 		JR	.loop_4 | ||||
| ;-------------------[^ 4]--------------- | ||||
| .loop_4_exit: | ||||
| 	INC HL								; next line | ||||
| 	INC HL | ||||
| 	INC HL | ||||
| 	INC HL | ||||
| 	IN A,(PORT_Y) | ||||
| 	AND #80 | ||||
| 	OUT (PORT_Y),A | ||||
| 	DEC C | ||||
| 	JR NZ,.loop_3 | ||||
| .loop_4_exit:	INC	HL						; next line | ||||
| 		INC	HL | ||||
| 		INC	HL | ||||
| 		INC	HL | ||||
| 		IN	A,(PORT_Y) | ||||
| 		AND	#80 | ||||
| 		OUT	(PORT_Y),A | ||||
| 		DEC	C | ||||
| 		JR	NZ,.loop_3 | ||||
| ;------------------------[^ 3]---------- | ||||
| 	INC IX								; next counter | ||||
| 	INC IX | ||||
| 	INC IX | ||||
| 	LD A,(IX) | ||||
| 	AND A | ||||
| 	JR NZ,.loop_2 | ||||
| 		INC	IX						; next counter | ||||
| 		INC	IX | ||||
| 		INC	IX | ||||
| 		LD	A,(IX) | ||||
| 		AND	A | ||||
| 		JR	NZ,.loop_2 | ||||
| ;-----------------------------[^ 2]----- | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
| 	LD IX,(SYS_PAGE.SCREEN_TABLE) | ||||
| 
 | ||||
| 	EX AF,AF' | ||||
| 	ADD A,#80 | ||||
| 	JR NC,.loop_1 | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	IX,(SYS_PAGE.SCREEN_TABLE) | ||||
| 		; | ||||
| 		EX	AF,AF' | ||||
| 		ADD	A,#80 | ||||
| 		JR	NC,.loop_1 | ||||
| ;----------------------------------[^ 1] | ||||
| 
 | ||||
|         ; Exit | ||||
| 	LD A,(SYS_PAGE.COPY_RGADR) | ||||
| 	OUT (PORT_Y),A | ||||
| 	LD A,(SYS_PAGE.COPY_SLOT3) | ||||
| 	OUT (SLOT3),A | ||||
| .exit:	OR A | ||||
| 	RET | ||||
| 
 | ||||
| ;DE - ᮤ¥à¦¨¬®¥ CONFIG_ALL | ||||
| Test_CONFIG_ALL: | ||||
| 	LD HL,SCREEN_TABLES.SCORPION | ||||
| 	AND A | ||||
| 	SBC HL,DE | ||||
| 	ld IX,FN_SYNC.INT_SCORP | ||||
| 	RET Z | ||||
| 
 | ||||
| 	LD HL,SCREEN_TABLES.ORIGINAL | ||||
| 	AND A | ||||
| 	SBC HL,DE | ||||
| 	ld IX,FN_SYNC.INT_ORIG | ||||
| 	RET Z | ||||
| 
 | ||||
| 	LD HL,SCREEN_TABLES.PENTAGON | ||||
| 	AND A | ||||
| 	SBC HL,DE | ||||
| 	ld IX,FN_SYNC.INT_PENT | ||||
| 	RET Z | ||||
| 	and a | ||||
| 	RET | ||||
| 
 | ||||
| 
 | ||||
| 		; Exit | ||||
| 		LD	A,(SYS_PAGE.COPY_RGADR) | ||||
| 		OUT	(PORT_Y),A | ||||
| 		LD	A,(SYS_PAGE.COPY_SLOT3) | ||||
| 		OUT	(SLOT3),A | ||||
| .exit:		OR	A | ||||
| 		RET | ||||
| 		; | ||||
| 	;DE - ᮤ¥à¦¨¬®¥ SYS_PAGE.SCREEN_TABLE | ||||
| Test_SCREEN_TABLE: | ||||
| 		LD	HL,SCREEN_TABLES.SCORPION | ||||
| 		AND	A | ||||
| 		SBC	HL,DE | ||||
| 		LD	IX,FN_SYNC.INT_SCORP | ||||
| 		RET	Z | ||||
| 		; | ||||
| 		LD	HL,SCREEN_TABLES.ORIGINAL | ||||
| 		AND	A | ||||
| 		SBC	HL,DE | ||||
| 		LD	IX,FN_SYNC.INT_ORIG | ||||
| 		RET	Z | ||||
| 		; | ||||
| 		LD	HL,SCREEN_TABLES.PENTAGON | ||||
| 		AND	A | ||||
| 		SBC	HL,DE | ||||
| 		LD	IX,FN_SYNC.INT_PENT | ||||
| 		RET	Z | ||||
| 		AND	A | ||||
| 		RET | ||||
| ;--- Screen data table 1: counter1, data1 .. counterX, dataX | ||||
| SCREEN_TABLES: | ||||
| ;        | ç¨áŤŽ  | § çĽ¨ď | | ||||
|  | ||||
| @ -10,7 +10,16 @@ | ||||
| ; SLOT1	= 5 | ||||
| ; SLOT2	= 2 | ||||
| ; SLOT3	= 0 '48kb',1,2,3,4,5,6,7 '128kb',8,9,10,11,12,13,14,15 '256kb' | ||||
| ; | ||||
| 
 | ||||
| ; 	¤«ï ¢å®¤  ¢ ०¨¬ ᯥªâà㬠: | ||||
| ; 0. <20>஢¥àª  ¬¥âª¨ ZX | ||||
| ; 1. CONFIG_DE.CNF_PORT ’¨¯ â çª¨, ª ª ¨¨â¨âì ¯ ¬ïâì, à §¬¥à އ“, âãà¡  | ||||
| ; 2. CONFIG_DE.ZX_START áâà ¨æ  vROM ¤«ï § ¯ã᪠ | ||||
| ; 3. <20> áâனª¨ íªà   (INT, Sync) | ||||
| ; 4. ’®à¬®¦¥¨¥ ¯ ¬ï⨠(port all mode) | ||||
| ; 5. Block_ID.vROM | ||||
| ; 6. Block_ID.vRAM | ||||
| 
 | ||||
| ; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; | ||||
| 
 | ||||
| ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; | ||||
| @ -53,9 +62,12 @@ | ||||
| ; | ||||
| ;¥á«¨ áâíª  å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥à뢠¨ï¬¨ | ||||
| FN_ENTRANCE:	;!TODO	A - TASK NUMBER | ||||
| 		AND	A | ||||
| 		LD	A,BIOS.Error.NotSupported | ||||
| 		SCF | ||||
| 		RET	Z | ||||
| 		; | ||||
| 		EXX | ||||
| 		 CALL	GET_ZX_TASK_DATA | ||||
| 		 ; | ||||
| 		 LD	C,SLOT3 | ||||
| 		 IN	B,(C) | ||||
| 		 LD	A,SYS_PAGE | ||||
| @ -100,24 +112,26 @@ FN_ENTRANCE:	;!TODO	A - TASK NUMBER | ||||
| ;-----------------------------------------------------------------------; | ||||
| ; <20>¥ ¯®àâ¨âì DE | ||||
| ;‚室:	A - TASK NUMBER | ||||
| GET_ZX_TASK_DATA: | ||||
| 		 GET_ZX_TASK_DATA_OFFSET | ||||
| 		 ADD	A,_ZX_TASK_DATA | ||||
| 		 LD	C,A | ||||
| 		 LD	B,0 | ||||
| 		 LD	IX,SYS_PAGE.ZX_TASK.CURRENT | ||||
| 		 ADD	IX,BC			; ¤ ë¥ ®¢®© § ¤ ç¨ | ||||
| 		 RET | ||||
| ; GET_ZX_TASK_DATA: | ||||
| ; 		 GET_ZX_TASK_DATA_OFFSET | ||||
| ; 		 ADD	A,_ZX_TASK_DATA | ||||
| ; 		 LD	C,A | ||||
| ; 		 LD	B,0 | ||||
| ; 		 LD	IX,SYS_PAGE.ZX_TASK.CURRENT | ||||
| ; 		 ADD	IX,BC			; ¤ ë¥ ®¢®© § ¤ ç¨ | ||||
| ; 		 RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	A - TASK NUMBER | ||||
| FREE_vMEMORY:	LD	D,(IX + _ZX_TASK_DATA.vROM_ID) | ||||
| 		LD	A,(IX + _ZX_TASK_DATA.vRAM_ID) | ||||
| FREE_vMEMORY:	LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		CALL	EMM.FreeMem | ||||
| 		LD	A,D | ||||
| 		LD	A,(SYS_PAGE.Block_ID.vRAM) | ||||
| 		CALL	EMM.FreeMem | ||||
| 		; | ||||
| 		LD	HL,#FFFF | ||||
| 		LD	(SYS_PAGE.Block_ID.vROM),HL | ||||
| 		; | ||||
| 		JP	RES_FLAG_ZXvROM | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| @ -128,33 +142,33 @@ FREE_vMEMORY:	LD	D,(IX + _ZX_TASK_DATA.vROM_ID) | ||||
| ;‚ë室:	H - vRAM block ID | ||||
| ;	L - vROM block ID | ||||
| GET_RAMBLOCK_IDs: | ||||
| 		LD	H,(IX + _ZX_TASK_DATA.vRAM_ID) | ||||
| 		LD	L,(IX + _ZX_TASK_DATA.vROM_ID) | ||||
| 		LD	HL,(SYS_PAGE.Block_IDs) | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	HL - ¡«®ª áâà ¨æ   ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  11 èâ.) | ||||
| ;	 A - TASK NUMBER | ||||
| INIT_vROM:	LD	A,(IX + _ZX_TASK_DATA.vROM_ID) | ||||
| ;‚室:	HL - ¡ãä¥à áâà ¨æ (SLOT1..SLOT2)   ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  11 èâ.) | ||||
| ;	<09>¥à¢ë© ¡ ©â ᯨ᪠ - RAM BLOCK ID. „ «¥¥ ª ª 㣮¤® ®¬¥à  | ||||
| ;	áâà ¨æ ¤«ï ª ¦¤®£® ⨯  áâà ¨æë vROM. …᫨ ª ª ï-â® áâà ¨æ  | ||||
| ;	vROM ¥ ¨á¯®«ì§ã¥âáï, â® áâ ¢¨âáï #FF | ||||
| INIT_vROM:	LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		CP	(HL) | ||||
| 		EX	DE,HL | ||||
| 		CALL	NZ,EMM.FreeMem | ||||
| 		EX	DE,HL | ||||
| 		; | ||||
| 		LD	A,(HL) | ||||
| 		LD	(IX + _ZX_TASK_DATA.vROM_ID),A | ||||
| 		INC	HL | ||||
| 		LD	(SYS_PAGE.Block_ID.vROM),A | ||||
| 		; ãáâ ®¢ª  ¯®à⮢ ROM | ||||
| 		LD	DE,.PORTS | ||||
| 		LD	B,.PORTS.Size | ||||
| .loop:		PUSH	BC | ||||
| 		LD	A,(HL) | ||||
| 		INC	HL | ||||
| 		AND	A | ||||
| 		JR	Z,.not_Spec_Page | ||||
| 		LD	A,Spec_Page		;!FIXIT ¨«¨ ®áâ ¢¨âì? | ||||
| 		CP	#FF | ||||
| 		JR	NZ,.not_Spec_Page | ||||
| 		LD	A,Spec_Page | ||||
| .not_Spec_Page:	LD	B,A | ||||
| 		LD	A,(DE) | ||||
| 		INC	DE | ||||
| @ -165,35 +179,48 @@ INIT_vROM:	LD	A,(IX + _ZX_TASK_DATA.vROM_ID) | ||||
| 		POP	DE | ||||
| 		POP	BC | ||||
| 		DJNZ	.loop | ||||
| 		; ãáâ ®¢ª  ¬¥âª¨ ZX ¥á«¨ à ¬¡«®ª ¥ #FF | ||||
| 		LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		INC	A | ||||
| 		RET	Z | ||||
| 		; | ||||
| .set_ZX_flag:	IN	A,(SLOT3) | ||||
| 		LD	D,A | ||||
| 		LD	A,Spec_Page | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	HL,'XZ' | ||||
| 		LD	(Spec_Page.flag_Z),HL | ||||
| 		; | ||||
| 		LD	A,D | ||||
| 		OUT	(SLOT3),A | ||||
| 		RET | ||||
| 		; | ||||
| .PORTS:		DB	ACEX.vROM.BASIC_128	; ROM-ID - BASIC 128 | ||||
| 		DB	ACEX.vROM.BASIC_48	; ROM-ID - BASIC 48 | ||||
| 		DB	ACEX.vROM.TR_DOS	; ROM-ID - TR-DOS | ||||
| 		DB	ACEX.vROM.BIOS		; ROM-ID - EXPANSION | ||||
| 		DB	ACEX.vROM.BIOS_3	; ROM-ID - BIOS-1 | ||||
| 		DB	ACEX.vROM.BIOS_4	; ROM-ID - BIOS-2 | ||||
| 		DB	ACEX.vROM.EXPANSION	; ROM-ID - EXPANSION | ||||
| 		DB	ACEX.vROM.BIOS_1	; ROM-ID - BIOS-1 | ||||
| 		DB	ACEX.vROM.BIOS_2	; ROM-ID - BIOS-2 | ||||
| 		DB	ACEX.vROM.BASIC_128_2	; BASIC 128 - 2 | ||||
| 		DB	ACEX.vROM.BASIC_48_2	; BASIC 48 - 2 | ||||
| 		DB	ACEX.vROM.TR_DOS_2	; TR-DOS - 2 | ||||
| 		DB	ACEX.vROM.BIOS_2	; BIOS (ZX_EXP) - 2 | ||||
| 		DB	ACEX.vROM.EXPANSION_2	; BIOS (ZX_EXP) - 2 | ||||
| .PORTS.Size	EQU	$-.PORTS | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚•Ž„:	HL - ᯨ᮪ áâà ¨æ | ||||
| ;	 E - 0 = 128kb, 1 = 512kb | ||||
| INIT_PENT_vRAM:	DI | ||||
| 		XOR	A | ||||
| INIT_vRAM:	XOR	A | ||||
| .set_1ffd:	LD	BC,#1FFD | ||||
| 		OUT	(C),A | ||||
| 		; set 128 | ||||
| 		LD	B,#7F | ||||
| 		LD	D,A | ||||
| 		LD	D,%0000'0000 | ||||
| 		CALL	SET_7FFD | ||||
| 		; | ||||
| 		XOR	A | ||||
| @ -201,8 +228,8 @@ INIT_PENT_vRAM:	DI | ||||
| 		BIT	3,E	; 128/512 | ||||
| 		RET	Z | ||||
| 		; set 128 + 384 | ||||
| 		LD	A,SYS_PORT.CNF_512 | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		;LD	A,SYS_PORT.CNF_512 | ||||
| 		;OUT	(SYS_PORT.ROM),A | ||||
| 		; | ||||
| 		LD	D,%0100'0000 | ||||
| 		CALL	SET_7FFD | ||||
| @ -216,7 +243,6 @@ INIT_PENT_vRAM:	DI | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;!FIXIT ª®áïª á® á⥪®¬ ¢ SLOT3 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚•Ž„:	HL - ᯨ᮪ áâà ¨æ | ||||
| ;	 D -  ç «ì®¥ § ç¥¨¥ ¤«ï 7FFD | ||||
| @ -229,24 +255,30 @@ SET_7FFD:	LD	A,(HL) | ||||
| 		JR	Z,SET_7FFD | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ZX_MEMORY: | ||||
| .MODE_48k	EQU	3 | ||||
| .MODE_128k	EQU	3+5 | ||||
| .MODE_256k	EQU	3+13 | ||||
| .MODE_512k	EQU	3+29 | ||||
| 
 | ||||
| ;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï âàñå áâà ¨æ Ž‡“ 48k | ||||
| GET_48k_MEM:	LD	D,3+1 | ||||
| GET_48k_MEM:	LD	D,ZX_MEMORY.MODE_48k | ||||
| 		JR	GET_XXX_MEM | ||||
| ;‚믮«ï¥âáï ¤«ï ¨¨â  3 áâà ¨æ Ž‡“ 48k ¨ 29 áâà ¨æ Ž‡“ Pent512k 		 | ||||
| GET_512k_MEM:	LD	D,3+29 | ||||
| GET_512k_MEM:	LD	D,ZX_MEMORY.MODE_512k | ||||
| 		JR	GET_XXX_MEM | ||||
| ;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï 3 áâà ¨æ Ž‡“ 48k ¨ 5 áâà ¨æ Ž‡“ 128k â ç¥ª | ||||
| GET_128k_MEM:	LD	D,3+5 | ||||
| GET_128k_MEM:	LD	D,ZX_MEMORY.MODE_128k | ||||
| 		;JR	GET_XXX_MEM | ||||
| GET_XXX_MEM:	CALL	FREE_vRAM | ||||
| .init:		LD	B,D | ||||
| 		CALL	EMM.GetMem | ||||
| 		RET	C | ||||
| 		LD	(IX + _ZX_TASK_DATA.vRAM_ID),A | ||||
| 		LD	(SYS_PAGE.Block_ID.vRAM),A | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| @ -254,9 +286,9 @@ GET_XXX_MEM:	CALL	FREE_vRAM | ||||
| ;-----------------------------------------------------------------------; | ||||
| FREE_vRAM:	XOR	A | ||||
| 		LD	C,A | ||||
| 		OR	(IX + _ZX_TASK_DATA.vRAM_ID) | ||||
| 		OR	(SYS_PAGE.Block_ID.vRAM) | ||||
| 		RET	Z | ||||
| 		LD	(IX + _ZX_TASK_DATA.vRAM_ID),C | ||||
| 		LD	(SYS_PAGE.Block_ID.vRAM),C | ||||
| 		JP	EMM.FreeMem | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| @ -269,7 +301,7 @@ GET_SCORP_RAM:	CALL	FREE_vRAM | ||||
| 	; ¢ë¤¥«¨âì áâà ¨æë ᪮௠ | ||||
| 		XOR	A | ||||
| 		LD	DE,#F0D0	; ¤«ï 䨫ìâà . #F0 - ¬ áª , #D0 - áâà ¨æë ISA #D0..#DF | ||||
| 		LD	BC,8*256 + #FF	; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª  ª®æ  à ¬¡«®ª  | ||||
| 		LD	BC,256*ZX_MEMORY.MODE_256k/2 + #FF	; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª  ª®æ  à ¬¡«®ª  | ||||
| 		LD	HL,SYS_PAGE.RAM_TABLE | ||||
| .allocate_loop:	DEC	L | ||||
| 		JR	Z,.error_no_mem | ||||
| @ -287,12 +319,12 @@ GET_SCORP_RAM:	CALL	FREE_vRAM | ||||
| 		AND	A | ||||
| 		LD	D,L | ||||
| 		; Get Pent128 mem | ||||
| 		LD	B,3+5 | ||||
| 		LD	B,ZX_MEMORY.MODE_128k | ||||
| 		CALL	EMM.GetMem | ||||
| 		; A - Pent128 mem block id | ||||
| 		LD	B,D	; Scorp128 mem block id | ||||
| 		CALL	EMM.MergeMemBlocks | ||||
| 		LD	(IX + _ZX_TASK_DATA.vRAM_ID),A | ||||
| 		LD	(SYS_PAGE.Block_ID.vRAM),A | ||||
| 		RET | ||||
| 		; | ||||
| 	; 䨫ìâà ¤«ï áâà ¨æ ᪮௠ | ||||
| @ -334,17 +366,27 @@ GET_SCORP_RAM:	CALL	FREE_vRAM | ||||
| ;      	     CF: 1 - ¥ ¯¥à¥ãáâ  ¢«¨¢ âì ¯ «¨âàã | ||||
| 
 | ||||
| /* | ||||
| ; ‚室:	D[3..0]: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128, | ||||
| ; 	    	 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨: | ||||
| ; 	    	 4 - TR-DOS, 5 - BASIC 48 | ||||
| ;	D[7..4]: ;!TODO Port All Mode: b4 - Acc off/on | ||||
| ;	      E: § ç¥¨¥ ¤«ï SYS_PORT/CNF_PORT | ||||
| ;	      A: TASK Number | ||||
| ;      	     CF: 1 - ¥ ¯¥à¥ãáâ  ¢«¨¢ âì ¯ «¨âàã | ||||
| ; ‚室:	D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128, | ||||
| ; 	   3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨: | ||||
| ; 	   4 - TR-DOS, 5 - BASIC 48 | ||||
| ;	E: § ç¥¨¥ ¤«ï SYS_PORT/CNF_PORT | ||||
| ;	H: ;!TODO Block_ID.vROM | ||||
| ;	L: Block_ID.vRAM | ||||
| ;	A: TASK Number = 0 | ||||
| ;	B: Port All Mode | ||||
| ;A'[1..0]: 1 - int scorp, 2 - int pent, 3 - int ZX  | ||||
| ;   A'[2]: 0 - set default palette, 1 - don't change palette | ||||
| ;   A'[7]: 0 - 320, 1 - 312 áâப | ||||
| */ | ||||
| 
 | ||||
| GOTO_SPEC:	DI | ||||
| 		PUSH	AF | ||||
| GOTO_SPEC:	LD	A,BIOS.Error.NotSupported | ||||
| 		AND	A | ||||
| 		SCF | ||||
| 		RET	NZ | ||||
| 		; | ||||
| .FN:		DI | ||||
| 		EX	AF,AF' | ||||
| 		LD	C,A | ||||
| 		; set shared pages | ||||
| 		XOR	A | ||||
| 		OUT	(SLOT2),A	; ZERO_PAGE | ||||
| @ -354,42 +396,37 @@ GOTO_SPEC:	DI | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,B | ||||
| 		LD	(SYS_PAGE.CONFIG_DE.ZX_START),A | ||||
| 		LD	(SYS_PAGE.CONFIG_DE),DE | ||||
| 		LD	(SYS_PAGE.Block_IDs),HL | ||||
| 		; | ||||
| 		POP	DE | ||||
| 	EXX | ||||
| 		LD	SP,#C000 | ||||
| 		LD	A,D | ||||
| 		CALL	GET_ZX_TASK_DATA | ||||
| 		LD	A,(IX + _ZX_TASK_DATA.STATE) | ||||
| 		RR	E | ||||
| 		JR	NC,.save_state | ||||
| 		OR	%0000'0100 | ||||
| .save_state:	LD	(IX + _ZX_TASK_DATA.STATE),A | ||||
| 		; | ||||
| 		; [ ] free zx pages! ;!TODO ¥á«¨ § ¤ ç  ¯ãáâ ï, â® ¯¥à¢ë© ¨¨â | ||||
| 		; | ||||
| 	;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨â  ¤«ï ¯ à ¬¥âà  ¨§ Setup | ||||
| 	;!TODO ãáâ ®¢¨âì £¤¥-¨¡ã¤ì ¨¦¥ áâíª ¨§ TASK | ||||
| 		LD	A,(SYS_PAGE.CONFIG_DE.ZX_START) | ||||
| 		LD	(IX + _ZX_TASK_DATA.CONFIG_DE + 1),A | ||||
| 		; | ||||
| 		LD	A,(IX + _ZX_TASK_DATA.PORT_ALL_MODE) | ||||
| 		LD	BC,Port_All_Mode | ||||
| 		OUT	(C),A | ||||
| 		;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨â  ¤«ï ¯ à ¬¥âà  ¨§ Setup | ||||
| 		;!TODO ãáâ ®¢¨âì £¤¥-¨¡ã¤ì ¨¦¥ áâíª ¨§ TASK | ||||
| 	; LD	A,(IX + _ZX_TASK_DATA.PORT_ALL_MODE) | ||||
| 	; LD	BC,Port_All_Mode | ||||
| 	; OUT	(C),A | ||||
| 		; ãáâ ®¢ª  ¨â  | ||||
| 		LD	A,(IX + _ZX_TASK_DATA.FN_SYNC) | ||||
| 		AND	%0000'0111 | ||||
| 	EXX | ||||
| 		LD	A,C | ||||
| 	EXX | ||||
| 		AND	%0000'0011 | ||||
| 		CALL	FN_SYNC | ||||
| 		; ãáâ ®¢ª  à §¢ñà⪨ | ||||
| 		LD	A,(IX + _ZX_TASK_DATA.FN_SYNC) | ||||
| 		AND	%1100'0000 | ||||
| 		OR	%0010'0000 | ||||
| 		RLCA | ||||
| 	EXX | ||||
| 		LD	A,C | ||||
| 	EXX | ||||
| 		RLCA | ||||
| 		AND	%0000'0001 | ||||
| 		OR	%1000'0110 | ||||
| 		CALL	FN_SYNC | ||||
| 	EXX | ||||
| 		LD	A,C | ||||
| 	EXX | ||||
| 		; | ||||
| 		LD	A,(IX + _ZX_TASK_DATA.STATE) | ||||
| 		AND	%0000'0100		;!TODO § ¯®¬¨âì/¢®ááâ ®¢¨âì ª á⮬ãî ¯ «¨âàã? | ||||
| 		CALL	Z,SET_TXT_PALETTE.ZX | ||||
| 		; | ||||
| @ -400,7 +437,7 @@ GOTO_SPEC:	DI | ||||
| 		LD	HL,#5104 | ||||
| 		CALL	LP_SET_32.X | ||||
| 		; .SHARED_BUFFER_256b | ||||
| 		LD	A,(IX + _ZX_TASK_DATA.vRAM_ID) | ||||
| 		LD	A,(SYS_PAGE.Block_ID.vRAM) | ||||
| 		LD	HL,SYS_PAGE.SHARED_BUFFER_256b | ||||
| 		CALL	EMM.GetMemBlkPages | ||||
| 		;!FIXIT | ||||
| @ -409,7 +446,7 @@ GOTO_SPEC:	DI | ||||
| 		 ;LD	A,B | ||||
| 		 ;CP	16 | ||||
| 		; | ||||
| 
 | ||||
| 		LD	D,B | ||||
| ;.TASK_0:	XOR	A						; § ¤ ç  0, ०¨¬ 256 ª¨«®¡ ©â | ||||
| .START_TASK:	LD	IY,.BASIC_128 | ||||
| 		JP	INIT_PAGES					; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬  ᯥªâà㬠 | ||||
| @ -440,126 +477,66 @@ GOTO_SPEC:	DI | ||||
| ;***************************************** | ||||
| ;!TODO á⥪ ãáâ ®¢«¥ ¢® ¢â®à®© áâà ¨æ¥, ¥ ¨á¯®«ì§®¢ âì ¨«¨ ãáâ  ¢«¨¢ âì ¢ ¤àã£ãî! | ||||
| ; ¨¨æ¨ «¨§ æ¨ï áâà ¨æ zx spectrum | ||||
| ; HL -  ¤à¥á ¡«®ª  áâà ¨æ ¢ SLOT3 | ||||
| ; B  - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ | ||||
| INIT_PAGES: | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT1),A | ||||
| 	; | ||||
| 	RES	7,H | ||||
| 
 | ||||
| 
 | ||||
| 	; AND A | ||||
| 	; LD E,A | ||||
| 	; EX AF,AF' | ||||
| 	; LD A,E | ||||
| 
 | ||||
| 	; BIT 7,A | ||||
| 	; JR Z,SCORPION_256_MODE | ||||
| 	; BIT 6,A | ||||
| 	; JR Z,PENTAGON_128_MODE | ||||
| 	; | ||||
| ;PENTAGON_48_MODE: | ||||
| 	; AND #3C | ||||
| 	; OUT (SLOT0),A | ||||
| 	; INC A | ||||
| 	; OUT (SLOT1),A | ||||
| 	; INC A | ||||
| 	; OUT (SLOT2),A | ||||
| 	; INC A | ||||
| 	; LD D,A | ||||
| 	; LD BC,#1FFD | ||||
| 	; XOR A | ||||
| 	; OUT (C),A | ||||
| 	; LD B,#7F | ||||
| 	; OUT (C),A | ||||
| 	; LD A,D | ||||
| 	; OUT (SLOT3),A | ||||
| 	; JR INIT_VIDEO_REG | ||||
| 
 | ||||
| ================================================================ | ||||
| ; PENTAGON_128_MODE: | ||||
| ; 	LD D,8 | ||||
| ; 	AND #38 | ||||
| ; 	JR ALL_MODE | ||||
| 
 | ||||
| ; SCORPION_256_MODE: | ||||
| ; 	LD D,16 | ||||
| ; 	AND #30		; ¤® 4-å ᯥªâà㬮¢ | ||||
| 
 | ||||
| ;ALL_MODE: | ||||
| 	LD	A,(HL)		; áâà ¨æ  ¤«ï SLOT1 | ||||
| 	EX	AF,AF' | ||||
| 	; | ||||
| 	INC	HL | ||||
| 	DEC	B | ||||
| 	LD	A,(HL) | ||||
| 	OUT	(SLOT2),A | ||||
| 	INC	HL | ||||
| 	OUT	(SLOT3),A | ||||
| 	OUT	(SLOT0),A | ||||
| 	 | ||||
| 
 | ||||
| .loop:  DEC D | ||||
| 
 | ||||
| 	LD A,D | ||||
| 	RLCA | ||||
| 	AND #10 | ||||
| 	LD BC,#1FFD | ||||
| 	OUT (C),A | ||||
| 
 | ||||
| 	LD A,D | ||||
| 	AND 7 | ||||
| 	OR #40 | ||||
| 	LD B,#7F | ||||
| 	OUT (C),A | ||||
| 
 | ||||
| 	LD A,E | ||||
| 	OUT (SLOT3),A | ||||
| 	DEC E | ||||
| 
 | ||||
| 	DEC D | ||||
| 	INC D | ||||
| 	JR NZ,.loop | ||||
| 
 | ||||
| .INIT_VIDEO_REG: | ||||
| 	XOR A | ||||
| 	OUT (RGADR),A	; ॣ¨áâà ¢¨¤¥®  ¤à¥á  | ||||
| 	OUT (RGMOD),A	; ॣ¨áâà ¬®¤ë | ||||
| ;	OUT (RGSCR),A	; ॣ¨áâà íªà   | ||||
|          | ||||
|         ;!TEST | ||||
|          ; Restore old Spectrum Screen | ||||
| 	 ;; LD HL,#4000 | ||||
| 	 ;; LD DE,#4000 | ||||
| 	 ;; LD BC,#1B00 | ||||
| 	 ;; LDIR | ||||
| 
 | ||||
| 	 ; EX AF,AF' | ||||
| 	 ; BIT 6,A | ||||
| 	 ; JR NZ,NO_SCREEN_ALT | ||||
| 
 | ||||
| 	 ; EX AF,AF' | ||||
| 
 | ||||
| 	 ; LD A,7	; ᥤ쬠ï íªà  ï áâà ¨æ  | ||||
| 	 ; LD BC,#7FFD | ||||
| 	 ; OUT (C),A | ||||
| 
 | ||||
|          ; Restore old Spectrum Screen 2 | ||||
| 	 ;; LD HL,#C000 | ||||
| 	 ;; LD DE,#C000 | ||||
| 	 ;; LD BC,#1B00 | ||||
| 	 ;; LDIR								 | ||||
| 
 | ||||
| 	 ; XOR A | ||||
| 	 ; LD BC,#7FFD | ||||
| 	 ; OUT (C),A | ||||
|         ; | ||||
| 
 | ||||
| 	EX AF,AF' | ||||
| .NO_SCREEN_ALT: | ||||
| 	AND A | ||||
| 	JP (IY) | ||||
| ; HL -  ¤à¥á ¡«®ª  áâà ¨æ ¢ SYS_PAGE SLOT3 | ||||
| ; D  - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ | ||||
| INIT_PAGES:	LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT1),A | ||||
| 		LD	A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0 + SYS_PORT.CNF_512 | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		; | ||||
| 		RES	7,H | ||||
| 		; | ||||
| 		LD	A,D | ||||
| 		CP	ZX_MEMORY.MODE_48k | ||||
| 		JR	Z,.set_48k | ||||
| 		; | ||||
| 		LD	E,0			; pent128 | ||||
| 		CP	ZX_MEMORY.MODE_256k | ||||
| 		JR	Z,.set_scorp | ||||
| 		; | ||||
| 		CP	ZX_MEMORY.MODE_128k | ||||
| 		JR	Z,.set_pent | ||||
| 		INC	E | ||||
| 		CP	ZX_MEMORY.MODE_512k | ||||
| 		JR	Z,.set_pent | ||||
| 		;!FIXIT ®¡à ¡®âª  ®è¨¡ª¨ | ||||
| 		 DI | ||||
| 		 HALT | ||||
| 		; | ||||
| .set_scorp:	CALL	MANAGE_ZX_PAGES.INIT_vRAM | ||||
| 		LD	A,#10 | ||||
| 		CALL	MANAGE_ZX_PAGES.INIT_vRAM.set_1ffd | ||||
| 		; A = 0, BC = #7FFD | ||||
| 		LD	B,#1F | ||||
| 		OUT	(C),A | ||||
| 		JR	.set_table | ||||
| 		; | ||||
| .set_pent:	CALL	MANAGE_ZX_PAGES.INIT_vRAM | ||||
| 		; ¬¥ï¥¬ ¯®à冷ª ¤«ï ¯à®æ¥¤ãàë set_48k | ||||
| .set_table:	LD	A,(SYS_PAGE.SHARED_BUFFER_256b+2 - #8000)	; SLOT2 page | ||||
| 		LD	D,A | ||||
| 		LD	A,(SYS_PAGE.SHARED_BUFFER_256b+5 - #8000)	; SLOT1 page | ||||
| 		LD	E,A | ||||
| 		LD	A,(SYS_PAGE.SHARED_BUFFER_256b+0 - #8000)	; SLOT0, SLOT3 page | ||||
| 		JR	.set_slots | ||||
| 		; | ||||
| .set_48k:	LD	A,(HL)						; SLOT0, SLOT3 page | ||||
| 		INC	HL | ||||
| 		LD	E,(HL)						; SLOT1 page | ||||
| 		INC	HL | ||||
| 		LD	D,(HL)						; SLOT2 page | ||||
| 		; | ||||
| .set_slots:	OUT	(SLOT0),A | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,E | ||||
| 		OUT	(SLOT1),A | ||||
| 		LD	A,D | ||||
| 		OUT	(SLOT2),A | ||||
| 		; | ||||
| 		XOR A | ||||
| 		OUT (RGADR),A	; ॣ¨áâà ¢¨¤¥®  ¤à¥á  | ||||
| 		OUT (RGMOD),A	; ॣ¨áâà ¬®¤ë | ||||
| 		JP (IY) | ||||
| ;-----------------------------------------------------------------------; | ||||
|  ELSE	;--------------------------------------------------------------------[|] | ||||
| ;-----------------------------------------------------------------------; | ||||
| @ -750,64 +727,69 @@ NO_SCREEN_ALT: | ||||
| 
 | ||||
| ;--------[ <20>ணࠬ¬ , à §¬¥é ¥¬ ï á #5B00 ¤«ï § ¯ã᪠ Spectrum ]--------; | ||||
| RES128_PROG: | ||||
|  DISP ZX_VARS.PRINTER_BUFFER                                            ;#5B00 | ||||
| 	LD A,ROM.BIOS | ||||
| 	OUT (SYS_PORT.RAM),A                                            ; ‚®§¢à â ¢ 128k ROM | ||||
| 	LD C,SLOT3 | ||||
| 	IN B,(C) | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
| 	LD DE,(SYS_PAGE.CONFIG_DE) | ||||
| 	;XOR A | ||||
| 	;LD (SYS_PAGE.CONFIG_DE.ZX_START),A | ||||
| 	OUT (C),B | ||||
| 
 | ||||
| 	LD BC,#1FFD | ||||
| 	OUT (C),A							; Scorp ¯®àâ | ||||
| 	LD B,#7F | ||||
| 	OUT (C),A							; 128 ¯®àâ | ||||
| 
 | ||||
| 	LD A,E                                                          ; ãáâ ®¢ª  ª®ä¨£ãà æ¨¨ ¨ ०¨¬  TURBO | ||||
| 	OUT (SYS_PORT.RAM),A                                            ; CONFIG_SET | ||||
| 
 | ||||
| 	INC D | ||||
| 	DEC D | ||||
| 	; 0 ‚•Ž„ ‚ BASIC-128 | ||||
| 	JP Z,0 | ||||
| 	; 1 ‚•Ž„ ‚ BASIC-48 | ||||
| 	LD A,#10 | ||||
| 	OUT (C),A | ||||
| 	DEC D | ||||
| 	JP Z,0 | ||||
| 	; 2 ‚•Ž„ ‚ TR-DOS | ||||
| 	LD HL,0 | ||||
| 	PUSH HL | ||||
| 	DEC D | ||||
| 	JP Z,#3D29 | ||||
| 	; 3 ‚•Ž„ ‚ EXPANSION | ||||
|         ;!TODO ¯®ª  ¥ à ¡®â ¥â. Page #45, BIOS (ZX_EXP) #E0 | ||||
| 	 XOR    A | ||||
| 	 OUT    (C),A | ||||
| 	 LD     A,#02 | ||||
| 	 LD     B,#1F | ||||
| 	 OUT    (C),A | ||||
| 	 DEC    D | ||||
| 	 JP     Z,0 | ||||
|         ; | ||||
| 	XOR A | ||||
| 	OUT (C),A | ||||
| 	LD A,#30 | ||||
| 	LD B,#7F | ||||
| 	OUT (C),A | ||||
| 	;!TEST | ||||
| 	 LD	A,CNF_PORT.PENT_RESET + CNF_PORT.SCORP_RESET | ||||
| 	 OUT	(CNF_PORT.OFF),A | ||||
| 	; | ||||
| 	DEC D | ||||
| 	; 4 ‚•Ž„ ‚ TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨ | ||||
| 	JP Z,#3D29 | ||||
| 	; 5 ‚•Ž„ ‚ BASIC-48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨					 | ||||
| 	JP 0                                                             | ||||
|  DISP ZX_VARS.PRINTER_BUFFER						;#5B00 | ||||
| 		XOR	A | ||||
| 		OUT	(SYS_PORT.RAM),A				; ‚®§¢à â ¢ 128k ROM | ||||
| 		LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	DE,(SYS_PAGE.CONFIG_DE) | ||||
| 		OUT	(C),B | ||||
| 		; | ||||
| 		EXX | ||||
| 		 LD	A,B | ||||
| 		EXX | ||||
| 		LD	BC,Port_All_Mode | ||||
| 		OUT	(C),A | ||||
| 		; | ||||
| 		XOR	A | ||||
| 		LD	BC,#1FFD | ||||
| 		OUT	(C),A						; Scorp ¯®àâ | ||||
| 		LD	B,#7F | ||||
| 		OUT	(C),A						; 128 ¯®àâ | ||||
| 		; | ||||
| 		LD	A,E						; ãáâ ®¢ª  ª®ä¨£ãà æ¨¨ ¨ ०¨¬  TURBO | ||||
| 		OUT	(SYS_PORT.RAM),A				; CONFIG_SET | ||||
| 		; | ||||
| 		INC	D | ||||
| 		DEC	D | ||||
| 		; 0 ‚•Ž„ ‚ BASIC-128 | ||||
| 		JP	Z,0 | ||||
| 		; 1 ‚•Ž„ ‚ BASIC-48 | ||||
| 		LD	A,#10 | ||||
| 		OUT	(C),A | ||||
| 		DEC	D | ||||
| 		JP	Z,0 | ||||
| 		; 2 ‚•Ž„ ‚ TR-DOS | ||||
| 		LD	HL,0 | ||||
| 		PUSH	HL | ||||
| 		DEC	D | ||||
| 		JP	Z,#3D29 | ||||
| 		; 3 ‚•Ž„ ‚ EXPANSION | ||||
| 		;!TODO ¯®ª  ¥ à ¡®â ¥â. Page #45, BIOS (ZX_EXP) #E0 | ||||
| 		XOR	A | ||||
| 		OUT	(C),A | ||||
| 		LD	A,#02 | ||||
| 		LD	B,#1F | ||||
| 		OUT	(C),A | ||||
| 		DEC	D | ||||
| 		JP	Z,0 | ||||
| 		; | ||||
| 		XOR	A | ||||
| 		OUT	(C),A | ||||
| 		LD	A,#30 | ||||
| 		LD	B,#7F | ||||
| 		OUT	(C),A | ||||
| 		;!TEST | ||||
| 		LD	A,CNF_PORT.PENT_RESET + CNF_PORT.SCORP_RESET | ||||
| 		OUT	(CNF_PORT.OFF),A | ||||
| 		; | ||||
| 		DEC	D | ||||
| 		; 4 ‚•Ž„ ‚ TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨ | ||||
| 		JP	Z,#3D29 | ||||
| 		; 5 ‚•Ž„ ‚ BASIC-48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨					 | ||||
| 		JP	0 | ||||
|  ENT | ||||
| .Size		EQU	$-RES128_PROG | ||||
| ;-----------------------------------------------------------------------; | ||||
|  | ||||
| @ -238,7 +238,7 @@ STEP1_GETCMOS: | ||||
| .choose: | ||||
| 	EI | ||||
| 	; | ||||
| 	CALL	G_VALUE | ||||
| 	CALL	GET_CMOS_VALUE | ||||
| 	OR	A | ||||
| 	JR	Z,AUTODETECT		;AUTO DETECT | ||||
| 	; | ||||
|  | ||||
| @ -243,7 +243,7 @@ CMSERR: | ||||
| 	; RST_to_BIOS | ||||
| 	RET | ||||
| 
 | ||||
| CLEARM:		IN	A,(SLOT3) | ||||
| CLEAR_MEM:	IN	A,(SLOT3) | ||||
| 		PUSH	AF | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| @ -276,7 +276,7 @@ CLEARM:		IN	A,(SLOT3) | ||||
| 	; | ||||
| 		CALL	EMM.InitMem | ||||
| 		LD	BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks		;#400E | ||||
| 		CALL	G_VALUE | ||||
| 		CALL	GET_CMOS_VALUE | ||||
| 		OR	A | ||||
| 		CALL	NZ,CCHAIN | ||||
| 		POP	AF | ||||
| @ -361,29 +361,65 @@ INT_ON: | ||||
| 
 | ||||
| ; | ||||
| ;------------------------[go to spectrum from bios]---------------------; | ||||
| EXIT_SETUP: | ||||
| 	CALL	INT_OFF | ||||
| ; | ||||
| ;	LD	BC,#020E | ||||
| ;	CALL	G_VALUE | ||||
| ;	OR	A | ||||
| ;	LD	A,#EC	;SPRINTER | ||||
| ;	JR	Z,XFLEX | ||||
| ;	LD	A,#EA	;SPECTRUM | ||||
| EXIT_SETUP:	CALL	INT_OFF | ||||
| 		CALL	TRD_MOUNT	; !TEST 24/09/2024 ¯¥à¥®á ¢ EXIT_SETUP (¯¥à¥¤ § ¯ã᪮¬ ZX) | ||||
| 
 | ||||
| 	IF FREE_ZX_PAGES | ||||
| 		LD	A,Spec_Page | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,(Spec_Page.flag_Z) | ||||
| 		CP	'Z' | ||||
| 		LD	A,(Spec_Page.flag_X) | ||||
| 		LD	B,A | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| 		LD	A,B	 | ||||
| 		JR	NZ,.Set_Page41 | ||||
| 		CP	'X' | ||||
| 		JR	Z,.vROMs_Installed | ||||
| 		; | ||||
| .Set_Page41:	CALL	ZXMODE_SETUP.Set_Page41 | ||||
| .vROMs_Installed: | ||||
| 		CALL	MANAGE_ZX_PAGES.GET_SCORP_RAM			;!TODO  áâà ¨¢ âì ¢ BIOS zx mode | ||||
| 		JR	NC,.set_ZX_params | ||||
| 		; | ||||
| 		CALL	ScreenPOS.CRLF | ||||
| 		LD	A,msgStrings.noMemZX | ||||
| 		LD	E,COLORS.CGA.INK.RED | ||||
| 		CALL	POSTMSC | ||||
| .loop_di:	DI | ||||
| 		HALT | ||||
| 		JR	.loop_di | ||||
| 		; | ||||
| .set_ZX_params:	LD	L,A		; Block_ID.vRAM | ||||
| 
 | ||||
| ====== | ||||
| 		;!TODO  áâà ¨¢ âì ¢ BIOS zx mode | ||||
| 		 LD	DE,256*0 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 | ||||
| 		; | ||||
| 		JP	GOTO_SPEC.FN | ||||
| 	ELSE | ||||
| 		;LD	BC,#020E | ||||
| 		;CALL	GET_CMOS_VALUE | ||||
| 		;OR	A | ||||
| 		;LD	A,#EC	;SPRINTER | ||||
| 		;JR	Z,XFLEX | ||||
| 		;LD	A,#EA	;SPECTRUM | ||||
| ;XFLEX: | ||||
|         LD      A,ROM.BIOS | ||||
|         OUT     (SYS_PORT.ROM),A | ||||
| 	POP	HL                                                      ; ¯¨å ¥âáï ¢ EXP.ASM ¢ ¯à®æ¥¤ãॠ | ||||
| 	JP      (HL) | ||||
| ; LD	(JMPHL),HL | ||||
| 		LD      A,ROM.BIOS | ||||
| 		OUT     (SYS_PORT.ROM),A | ||||
| 		POP	HL                                                      ; ¯¨å ¥âáï ¢ EXP.ASM ¢ ¯à®æ¥¤ãॠ | ||||
| 		JP      (HL) | ||||
| 		;LD	(JMPHL),HL | ||||
| 
 | ||||
| 	;	LD	C,#F3 | ||||
| 	;	RST_to_BIOS | ||||
| ; JMPHL		EQU $+1 | ||||
| ; 			JP	#0000 | ||||
| 		;LD	C,#F3 | ||||
| 		;RST_to_BIOS | ||||
| ;JMPHL		EQU $+1 | ||||
| 		;JP	#0000 | ||||
| 	ENDIF | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| INSTALL: | ||||
| 	CALL	INT_ON | ||||
| 	CALL	SET_CGA | ||||
| @ -449,8 +485,9 @@ INSTALL: | ||||
| ;BUILD: | ||||
| ;	db	', BIOS v', Disk_subsystem_ver_txt,0                    ; !FIXIT ¬®¦¥â ¢®âªãâì ¢¬¥á⥠á msgStrings ? | ||||
| 
 | ||||
| RSTID:	DB	"RESTART",0 | ||||
| .size   EQU     $-RSTID | ||||
| RESTART_ID: | ||||
| .str:	DZ	"RESTART" | ||||
| .size   EQU     $ - RESTART_ID.str | ||||
| 
 | ||||
| Start_again: | ||||
| 	ld sp,STACK-2 | ||||
| @ -519,19 +556,20 @@ START: | ||||
| 	POP	BC | ||||
| 	OUT	(C),B | ||||
| 
 | ||||
| 	CALL	TRQUICK | ||||
| 	CALL	FINSTAL | ||||
| 	 | ||||
| 	;CALL	TRD_MOUNT	; !TEST 24/09/2024 ¯¥à¥®á ¢ EXIT_SETUP (¯¥à¥¤ § ¯ã᪮¬ ZX) | ||||
| 	CALL	FDD_INSTAL | ||||
| 	CALL	ZXMODE_SETUP | ||||
| 	CALL	CLEARM | ||||
| 	CALL	RESCREEN | ||||
| 	CALL	CLEAR_MEM | ||||
| 	CALL	XY_SCREEN | ||||
| 
 | ||||
| ;R06 | ||||
| 	LD	BC,CMOS_CELL.BootUpParams.Mask.QuickStartROM		;#010E | ||||
| 	CALL	G_VALUE | ||||
| 	CALL	GET_CMOS_VALUE | ||||
| 	POP	BC | ||||
| 	INC	B | ||||
| 	DEC	B | ||||
| 	JR	NZ,QIGNORE						; १ã«ìâ â ¯à®¢¥àª¨ Space ¨§ exp.asm [space_check] | ||||
| 	JR	NZ,IGNORE_QuickStartROM					; १ã«ìâ â ¯à®¢¥àª¨ Space ¨§ exp.asm [space_check] | ||||
| 	PUSH	AF | ||||
| 	LD	C,SLOT3 | ||||
| 	IN	B,(C) | ||||
| @ -539,19 +577,19 @@ START: | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(C),A | ||||
| 	LD	HL,SYS_PAGE.RESTART_ID | ||||
| 	LD	DE,RSTID | ||||
| 	LD	B,RSTID.size | ||||
| 	CALL	COMPARE | ||||
| 	CALL	NZ,SETRSTS | ||||
| 	LD	DE,RESTART_ID.str | ||||
| 	LD	B,RESTART_ID.size | ||||
| 	CALL	COMPARE_RESTART_ID | ||||
| 	CALL	NZ,SET_RESTART_ID | ||||
| 	POP	BC | ||||
| 	OUT	(C),B | ||||
| 	JR	Z,HOTST | ||||
| 	JR	Z,YES_QuickStartROM | ||||
| 	POP	AF | ||||
| 	JR	QIGNORE | ||||
| 	JR	IGNORE_QuickStartROM | ||||
| 
 | ||||
| SETRSTS: | ||||
| SET_RESTART_ID: | ||||
| 	PUSH	AF | ||||
| 	LD	HL,RSTID | ||||
| 	LD	HL,RESTART_ID.str | ||||
| 	LD	DE,SYS_PAGE.RESTART_ID | ||||
| 	LD	BC,RSTID.size | ||||
| 	LDIR  | ||||
| @ -560,11 +598,11 @@ SETRSTS: | ||||
| 	POP	AF | ||||
| 	RET  | ||||
| 
 | ||||
| HOTST: | ||||
| YES_QuickStartROM: | ||||
| 	POP	AF | ||||
| 	OR	A | ||||
| 	JP	NZ,EXIT_SETUP | ||||
| QIGNORE: | ||||
| IGNORE_QuickStartROM: | ||||
| 	CALL	INSTALL | ||||
| 	LD	DE,#0528 | ||||
| 	;CALL	ScreenPOS.LOCAT | ||||
| @ -577,11 +615,11 @@ QIGNORE: | ||||
| 	;CALL	ScreenPOS.LOCAT | ||||
|         CALL    LP_SET_PLACE | ||||
| ERRSUM+1: | ||||
| 	LD	A,#00				;MEM Patch! | ||||
| 	LD	A,#00 | ||||
| 	OR	A | ||||
| 	JR	Z,.ErrDateTime | ||||
| 	XOR	A | ||||
| 	ld (.ErrDateTime+1),a					; ¥á«¨ ª®â஫ì ï á㬬  ᫥⥫ , â® á®®¡é¥¨¥ ® ªà¨¢ëå ¤ â¥/¢à¥¬¥¨ ¢ ª¬®á ¥ ¢ë¢®¤¨¬ | ||||
| 	LD	(.ErrDateTime+1),A					; ¥á«¨ ª®â஫ì ï á㬬  ᫥⥫ , â® á®®¡é¥¨¥ ® ªà¨¢ëå ¤ â¥/¢à¥¬¥¨ ¢ ª¬®á ¥ ¢ë¢®¤¨¬ | ||||
| 	LD	A,msgStrings.cmosChecksumErr | ||||
| 	LD	E,COLORS.CGA.INK.RED | ||||
| 	CALL	POSTMSC | ||||
| @ -710,7 +748,7 @@ ALT_BOOT: | ||||
| 
 | ||||
| 	;NO START DISK  - RESTART / SETUP / ZX SPECTRUM mode | ||||
| 	LD	BC,CMOS_CELL.Options.Mask.RebootMSG			;#021D | ||||
| 	CALL	G_VALUE | ||||
| 	CALL	GET_CMOS_VALUE | ||||
| 	OR	A | ||||
| 	JP	Z,EXIT_SETUP | ||||
| 
 | ||||
| @ -754,13 +792,13 @@ ENTER_SETUP: | ||||
| 	XOR	A | ||||
| 	JP	Start_again | ||||
| 
 | ||||
| COMPARE: | ||||
| COMPARE_RESTART_ID: | ||||
| 	LD	A,(DE) | ||||
| 	CP	(HL) | ||||
| 	RET	NZ | ||||
| 	INC	HL | ||||
| 	INC	DE | ||||
| 	DJNZ	COMPARE | ||||
| 	DJNZ	COMPARE_RESTART_ID | ||||
| 	RET  | ||||
| 
 | ||||
| ; ????? ¯¥à¥¥á⨠íâ® ¢ äãªæ¨¨ <20>ˆŽ‘? | ||||
| @ -801,7 +839,7 @@ writeDateTimeToCmos: ;!FIXIT | ||||
|         CALL    CMOS_WR | ||||
| 	RET | ||||
| 
 | ||||
| RESCREEN:	;R06 | ||||
| XY_SCREEN:	;R06 | ||||
| 		LD	A,CMOS_CELL.ScreenPosition | ||||
| 		CALL	READCMS | ||||
| 		LD	B,A | ||||
| @ -922,7 +960,7 @@ PrepareToBOOT:	;CALL	INT_ON | ||||
| 		 JP	Z,RECOVERYstart | ||||
| 		 DEC	BC | ||||
| 		; | ||||
| 		CALL	G_VALUE | ||||
| 		CALL	GET_CMOS_VALUE | ||||
| 		LD	B,DRIVE_CODES.SPRINTER.FDD | ||||
|         	;   FDD | ||||
| 		OR	A | ||||
| @ -1084,7 +1122,7 @@ SYSID:	DZ	"Starting..." | ||||
| 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 | ||||
| 
 | ||||
| FINSTAL:	IN	A,(SLOT3) | ||||
| FDD_INSTAL:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| @ -1097,7 +1135,7 @@ FINSTAL:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD		;#0311 | ||||
| 		CALL	G_VALUE | ||||
| 		CALL	GET_CMOS_VALUE | ||||
| 		LD	HL,FD720A | ||||
| 		OR	A | ||||
| 		JR	Z,.SETFD0 | ||||
| @ -1114,7 +1152,7 @@ FINSTAL:	IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| .NOFDD0:	LD	BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD		;#0C11 | ||||
| 		CALL	G_VALUE | ||||
| 		CALL	GET_CMOS_VALUE | ||||
| 		LD	HL,FD720A | ||||
| 		OR	A | ||||
| 		JR	Z,.SETFD1 | ||||
| @ -1375,47 +1413,47 @@ NOCOPYC: | ||||
| 	RET  | ||||
| 
 | ||||
| ;---------------------------------------------------------------[] | ||||
| TRQUICK: | ||||
| ;REGISTER #1E | ||||
| ; %0000'0011 - TR DOS A:	Default	 / FDD / HDD / RMD | ||||
| ; %0000'1100 - TR DOS B:	Default	 / FDD / HDD / RMD | ||||
| ; %0011'0000 - TR DOS C:	Default	 / FDD / HDD / RMD | ||||
| ; %1100'0000 - TR DOS D:	Default	 / FDD / HDD / RMD | ||||
| 	LD	BC,CMOS_CELL.TRDOSmount.Mask.A				;#031E | ||||
| 	LD	A,0 | ||||
| 	CALL	TRDOSX | ||||
| 	LD	BC,CMOS_CELL.TRDOSmount.Mask.B				;#0C1E | ||||
| 	LD	A,1 | ||||
| 	CALL	TRDOSX | ||||
| 	LD	BC,CMOS_CELL.TRDOSmount.Mask.C				;#301E | ||||
| 	LD	A,2 | ||||
| 	CALL	TRDOSX | ||||
| 	LD	BC,CMOS_CELL.TRDOSmount.Mask.D				;#C01E | ||||
| 	LD	A,3 | ||||
| TRDOSX:	; PUSH	AF | ||||
| 	; CALL	G_VALUE | ||||
| 	; POP	BC | ||||
| 	; OR	A | ||||
| 	; RET	Z | ||||
| 	; LD	C,BIOS.FDD_TO_DRV | ||||
| 	; DEC	A | ||||
| 	; JP	Z,ToBIOS_18 | ||||
| 	; LD	C,BIOS.HDD_TO_DRV | ||||
| 	; DEC	A | ||||
| 	; JP	Z,ToBIOS_18 | ||||
| 	; SCF  | ||||
| 	; RET  | ||||
| 	PUSH	AF | ||||
| 	CALL	G_VALUE | ||||
| 	POP	BC | ||||
| 	OR	A | ||||
| 	RET	Z | ||||
| 	DEC	A | ||||
| 	JP	Z,FDD_TO_DRV | ||||
| 	DEC	A | ||||
| 	JP	Z,HDD_TO_DRV | ||||
| 	SCF  | ||||
| 	RET  | ||||
| 
 | ||||
| TRD_MOUNT:	LD	BC,CMOS_CELL.TRDOSmount.Mask.A		;#031E | ||||
| 		LD	A,0 | ||||
| 		CALL	.TRDOSX | ||||
| 		LD	BC,CMOS_CELL.TRDOSmount.Mask.B		;#0C1E | ||||
| 		LD	A,1 | ||||
| 		CALL	.TRDOSX | ||||
| 		LD	BC,CMOS_CELL.TRDOSmount.Mask.C		;#301E | ||||
| 		LD	A,2 | ||||
| 		CALL	.TRDOSX | ||||
| 		LD	BC,CMOS_CELL.TRDOSmount.Mask.D		;#C01E | ||||
| 		LD	A,3 | ||||
| .TRDOSX:	; PUSH	AF | ||||
| 		; CALL	GET_CMOS_VALUE | ||||
| 		; POP	BC | ||||
| 		; OR	A | ||||
| 		; RET	Z | ||||
| 		; LD	C,BIOS.FDD_TO_DRV | ||||
| 		; DEC	A | ||||
| 		; JP	Z,ToBIOS_18 | ||||
| 		; LD	C,BIOS.HDD_TO_DRV | ||||
| 		; DEC	A | ||||
| 		; JP	Z,ToBIOS_18 | ||||
| 		; SCF  | ||||
| 		; RET  | ||||
| 		PUSH	AF | ||||
| 		CALL	GET_CMOS_VALUE | ||||
| 		POP	BC | ||||
| 		OR	A | ||||
| 		RET	Z | ||||
| 		DEC	A | ||||
| 		JP	Z,FDD_TO_DRV | ||||
| 		DEC	A | ||||
| 		JP	Z,HDD_TO_DRV | ||||
| 		SCF  | ||||
| 		RET  | ||||
| ;---------------------------------------------------------------[] | ||||
| 
 | ||||
| 
 | ||||
| @ -1528,20 +1566,15 @@ POSTLEN: | ||||
|         JP      LP_SET_PLACE | ||||
| 
 | ||||
| SETLAND: | ||||
| 	LD	A,#0E   						; !HARDCODE CMOS ï祩ª  options | ||||
| 	CALL	READCMS | ||||
| 	AND	#04     						; !HARDCODE CMOS § ç¥¨¥ ï§ëª  | ||||
| 	JR	NZ,.RUS | ||||
| 	; | ||||
| 	LD	A,#0E							; !HARDCODE CMOS ï祩ª  options | ||||
| 	CALL	READCMS	;!TODO ¯¥à¥¤¥« âì   GET_CMOS_VALUE | ||||
| 	AND	#04							; !HARDCODE CMOS § ç¥¨¥ ï§ëª  | ||||
| 	LD	HL,MSG_RUS | ||||
| 	JR	NZ,.set | ||||
| 	LD	HL,MSG_ENG | ||||
| 	LD	DE,memBUFFER.Messages | ||||
| 	LD	BC,MSG_ENG.size | ||||
| 	LDIR | ||||
| 	RET | ||||
| 	; | ||||
| .RUS:	LD	HL,MSG_RUS | ||||
| 	LD	DE,memBUFFER.Messages | ||||
| 	LD	BC,MSG_RUS.size | ||||
| .set:	LD	DE,memBUFFER.Messages | ||||
| 	LD	BC,MSG_TABLE.Size | ||||
| 	LDIR | ||||
| 	RET | ||||
| 
 | ||||
| @ -1600,7 +1633,7 @@ ZXMODE_SETUP:	IN	A,(SLOT3) | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	BC,CMOS_CELL.Options.Mask.LoadZXroms | ||||
| 		CALL	G_VALUE | ||||
| 		CALL	GET_CMOS_VALUE | ||||
| 		; | ||||
| 		OR	A | ||||
| 		JR	Z,.init_41h | ||||
| @ -1627,58 +1660,122 @@ ZXMODE_SETUP:	IN	A,(SLOT3) | ||||
| 		 LD	R,A | ||||
| 		; | ||||
| 		; Load ZX ROM's | ||||
| 		CALL	init_zx_roms	 | ||||
|         	; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâà㬠 | ||||
| 		LD	HL,Spec_Page.flag_X | ||||
|         	LD	(HL),'X' | ||||
|         	DEC	HL			; Spec_Page.flag_Z | ||||
|         	LD	(HL),'Z' | ||||
| 		; | ||||
| 		CALL	MANAGE_ZX_PAGES.FREE_vMEMORY	;!FIXIT ¥ â  áâà ¨æ  ¢ SLOT3	; [ ] free zx pages! | ||||
| 		LD	B,3			; !HARDCODE zx-rom number of pages | ||||
| 		CALL	EMM.GetMem | ||||
| 		JR	C,.init_41h		;!FIXIT ¯¥ç â âì ®è¨¡ªã	; [ ] free zx pages! | ||||
| 		CALL	init_zx_roms | ||||
| 	IFN FREE_ZX_PAGES | ||||
| 		; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâà㬠 | ||||
| 		LD	HL,'XZ' | ||||
| 		LD	(Spec_Page.flag_Z),HL | ||||
| 	ENDIF	; | ||||
| .No_Need_To_Load_ZXROMS: | ||||
| 		POP	AF | ||||
| 		OUT	(SLOT3),A | ||||
| 		RET | ||||
| 		; | ||||
| .init_41h:	CALL	init_zx_roms.init_41h | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		CALL	.Set_Page41 | ||||
| 		;!FIXIT ãáâ ®¢¨âì ¢® ¢á¥ vROM áâà ¨æã #41		; [ ] free zx pages! | ||||
| 		JR	.No_Need_To_Load_ZXROMS | ||||
| 		; | ||||
| .Set_Page41:	LD	HL,SYS_PAGE.SHARED_BUFFER_256b + 11 | ||||
| 		LD	DE,SYS_PAGE.SHARED_BUFFER_256b + 11-1 | ||||
| 		LD	BC,11-1				; !HARDCODE ª®«-¢® áâà ¨æ vROM + RAM BLOCK ID | ||||
| 		LD	(HL),#FF | ||||
| 		LDDR					; § ç¨é ¥¬ | ||||
| 		EX	DE,HL | ||||
| 		JP	MANAGE_ZX_PAGES.INIT_vROM | ||||
| ; | ||||
| ;--------------------[copy zx-roms to zx-pages]-----------------; | ||||
| ; SLOT0 - ROM 8, sys_port - on. | ||||
| ; RAM SLOT0 - page 0 | ||||
| ; RAM SLOT3 - Spec_Page | ||||
| ; ¤«ï ०¨¬  zx spectrum | ||||
| ; !HARDCODE ®¬¥à  áâà ¨æ ¤«ï í¬ã«ïâ®à  <20>‡“ | ||||
| init_zx_roms:	IN      A,(SLOT3) | ||||
| init_zx_roms:	DI | ||||
| 	;;;;;;;; | ||||
| 	IF FREE_ZX_PAGES | ||||
| 	;;;;;;;; | ||||
| 	; <20>€ ‚•ŽŽ„… A = SYS_PAGE.Block_ID.vROM | ||||
| 		; ¤®¡¨¢ ¥¬ ¡ãä¥à ¤® 11 ¡ ©â®¢ ¯ãáâ묨 áâࠨ栬¨ | ||||
| 		; ¢ ¡ãä¥à 㯠¤ãâ 1 RAM BLOCK ID, 3 áâà ¨æë ¤«ï vROM ¨ #FF  | ||||
| 		LD	HL,#FFFF | ||||
| 		LD	(memBUFFER.Shared + 5),HL	; !HARDCODE zx-rom number of pages | ||||
| 		LD	(memBUFFER.Shared + 7),HL	; !HARDCODE zx-rom number of pages | ||||
| 		LD	(memBUFFER.Shared + 9),HL	; !HARDCODE zx-rom number of pages | ||||
| 		; ¯®«ãç ¥¬ ᯨ᮪ áâà ¨æ ¤«ï vROM | ||||
| 		LD	HL,memBUFFER.Shared | ||||
| 		LD	(HL),A | ||||
| 		INC	HL | ||||
| 		LD	B,A | ||||
| 		CALL	EMM.GetMemBlkPages | ||||
| 		; | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		; ãáâ  ¢«¨¢ ¥¬ ®¬¥à  áâà ¨æ vROM ¢ ¯®àâë ALTERA | ||||
| 		DEC	HL | ||||
| 		CALL	MANAGE_ZX_PAGES.INIT_vROM | ||||
| 		; Š®¯¨à㥬 ®¡à §ë ZX-ROM ¨§ <20>‡“ ¢ áâà ¨æë vROM | ||||
| 		LD	A,SYS_PORT.EXTENSION | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		INC	A				; !HARDCODE LD A,2 | ||||
| 		LD	BC,+(3*2)*256 + SLOT3		; !HARDCODE B = (zx-rom number of pages)*2 | ||||
| 		LD	HL,memBUFFER.Shared + 1 | ||||
| .loop:		OUTI | ||||
| 		OUT	(ROM.SLOT0),A | ||||
| 		EXX | ||||
| 		 LD	HL,0 | ||||
| 		 LD	DE,#C000 | ||||
| 		 LD	BC,#4000 | ||||
| 		 LDIR | ||||
| 		EXX | ||||
| 		INC	A | ||||
| 		DJNZ	.loop | ||||
| 		; ¢®§¢à é ¥¬ áâà ¨æë   ¬¥áâ® | ||||
| 		XOR	A | ||||
| 		OUT	(ROM.SLOT0),A | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		LD	A,Spec_Page | ||||
| 		OUT	(SLOT3),A | ||||
| 	;;;;;;;; | ||||
| 	ELSE | ||||
| 	;;;;;;;; | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		; | ||||
| 		DI | ||||
| 		LD      A,SYS_PORT.EXTENSION | ||||
| 		OUT     (SYS_PORT.ROM),A  | ||||
|         	INC     A		;!HARDCODE LD A,2 | ||||
|         	LD      B,3		; zx-rom number of pages | ||||
| 		LD	A,SYS_PORT.EXTENSION | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		INC	A		; !HARDCODE LD A,2 | ||||
| 		LD	B,3		; !HARDCODE zx-rom number of pages | ||||
| 		; | ||||
| .loop:		EXX | ||||
| 		; | ||||
| 		out     (ROM.SLOT0),a | ||||
| 		or	%0100'0000	; !HARDCODE ®¬¥à  áâà ¨æ ¤«ï í¬ã«ïâ®à  <20>‡“ | ||||
| 		out	(SLOT3),a | ||||
| 		and	%1011'1111	; !HARDCODE ®¬¥à  áâà ¨æ ¤«ï í¬ã«ïâ®à  <20>‡“ | ||||
| 		OUT	(ROM.SLOT0),A | ||||
| 		OR	%0100'0000	; !HARDCODE ®¬¥à  áâà ¨æ ¤«ï í¬ã«ïâ®à  <20>‡“ | ||||
| 		OUT	(SLOT3),A | ||||
| 		AND	%1011'1111	; !HARDCODE ®¬¥à  áâà ¨æ ¤«ï í¬ã«ïâ®à  <20>‡“ | ||||
| 		; | ||||
| 		LD	HL,0 | ||||
| 		LD	DE,#C000 | ||||
| 		LD	BC,#4000 | ||||
| 		LDIR | ||||
| 		; | ||||
|         	INC     A | ||||
| 		INC	A | ||||
| 		EXX | ||||
| 		DJNZ    .loop | ||||
| 		DJNZ	.loop | ||||
| 		; | ||||
| 		xor     a | ||||
| 		out     (ROM.SLOT0),a | ||||
| 		OUT     (SYS_PORT.ROM),A   | ||||
| 		XOR	A | ||||
| 		OUT	(ROM.SLOT0),A | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		EX	AF,AF' | ||||
| 		out     (SLOT3),a | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 	;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 | ||||
| 		;!FIXIT ; [ ] free zx pages! ¯¥à¥¤¥« âì   ¢ë§®¢ FREE_ZX_PAGES.INIT_vROM | ||||
| 		LD	A,ACEX.vROM.BASIC_128				; ROM-ID - BASIC 128 | ||||
| 		LD	B,#42						;!HARDCODE page | ||||
| 		CALL	SET_PORTS | ||||
| @ -1692,22 +1789,25 @@ init_zx_roms:	IN      A,(SLOT3) | ||||
| 		CALL	SET_PORTS | ||||
| 		; | ||||
| 		; í⨠áâà ¨æë ¯®ª  ¥ ¨á¯®«ì§ãîâáï | ||||
| 		 LD	A,ACEX.vROM.BIOS				; ROM-ID - BIOS | ||||
| 		 LD	A,ACEX.vROM.EXPANSION				; ROM-ID - BIOS | ||||
| 		 ;LD	B,#45						;!HARDCODE page | ||||
| 		 LD	B,#41 | ||||
| 		 CALL	SET_PORTS | ||||
| 		 ; | ||||
| 		 LD	A,ACEX.vROM.BIOS_3				; ROM-ID - BIOS-1 | ||||
| 		 LD	A,ACEX.vROM.BIOS_1				; ROM-ID - BIOS-1 | ||||
| 		 ;LD	B,#46						;!HARDCODE page | ||||
| 		 LD	B,#41 | ||||
| 		 CALL	SET_PORTS | ||||
| 		 ; | ||||
| 		 LD	A,ACEX.vROM.BIOS_4				; ROM-ID - BIOS-2 | ||||
| 		 LD	A,ACEX.vROM.BIOS_2				; ROM-ID - BIOS-2 | ||||
| 		 ;LD	B,#47						;!HARDCODE page | ||||
| 		 LD	B,#41 | ||||
| 		 CALL	SET_PORTS | ||||
| 		; ¬®¦® § ¤¥©á⢮¢ âì ¥éñ 4 áâà ¨æë   ¯®àâë #E4..#E7 | ||||
| 		; | ||||
| 	;;;;;;;; | ||||
| 	ENDIF | ||||
| 	;;;;;;;; | ||||
| 
 | ||||
| .init_41h:	; § ¡¨âì FF- ¬¨ | ||||
| 		LD	HL,#C000 | ||||
| 		LD	DE,#C001 | ||||
|  | ||||
| @ -188,7 +188,7 @@ DEF_VAL: | ||||
| ;--------------------------------------- | ||||
| RestartSetup:	 | ||||
| ;setXYpos | ||||
| 	CALL	RESCREEN | ||||
| 	CALL	XY_SCREEN | ||||
| ;setLang | ||||
| 	CALL	SETLAND | ||||
| ;setVsinc | ||||
| @ -604,7 +604,7 @@ PITEM:	LD	E,(HL)                                                  ; x-coordinate | ||||
| ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] | ||||
| 
 | ||||
| ; <20>¥ ¯®àâ¨â HL | ||||
| G_VALUE: | ||||
| GET_CMOS_VALUE: | ||||
| 	PUSH	BC | ||||
| 	LD	A,C | ||||
| 	CALL	READCMS | ||||
| @ -732,8 +732,8 @@ SETDEF:							;!TODO  | ||||
| 	LD	B,0 | ||||
| 	CALL	WRITCMS | ||||
| 
 | ||||
| 	LD	A,CMOS_CELL.ZX_CONFIG | ||||
| 	LD	B,CMOS_CELL.ZX_CONFIG.ZX_Sprinter | ||||
| 	LD	A,CMOS_CELL.ZX_RUN_ROM | ||||
| 	LD	B,CMOS_CELL.ZX_RUN_ROM.BASIC_128 | ||||
| 	CALL	WRITCMS | ||||
| 
 | ||||
| 	CALL	CHEKSUM | ||||
| @ -823,7 +823,7 @@ SetTime: | ||||
|         ENDIF | ||||
| 
 | ||||
| setXYpos: | ||||
|         JP RESCREEN | ||||
|         JP XY_SCREEN | ||||
| 
 | ||||
| setVsinc: | ||||
|         ld a,CMOS_CELL.ScreenSET | ||||
|  | ||||
| @ -205,7 +205,7 @@ PRSYM:	LD      B,1 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| LOGOTYPE:	CALL	SHOW_LOGO | ||||
| 		LD	BC,CMOS_CELL.BootUpParams.Mask.StartDelay | ||||
| 		CALL	G_VALUE | ||||
| 		CALL	GET_CMOS_VALUE | ||||
| 		OR	A | ||||
| 		JR	Z,.EASYDLY	; Delay average | ||||
| 		DEC	A | ||||
|  | ||||
| @ -573,6 +573,7 @@ msgStrings: | ||||
|  _mSetStr bootFail, tmp_Counter			:	DZ	' fail'					; !FIXIT strFail | ||||
|  _mSetStr bootOk, tmp_Counter			:	DZ	' OK' | ||||
|  _mSetStr afterBootFail, tmp_Counter		:	DZ	'PRESS <ENTER> TO REBOOT, <DEL> TO ENTER SETUP OR <ESC> TO ZX-MODE . . .' | ||||
|  _mSetStr noMemZX, tmp_Counter			:	DZ	'Error! No free memory to start ZX mode. Press CTRL+ALT+DEL or RESET.' | ||||
| ; | ||||
|  _mSetStr parLang, tmp_Counter			:	DZ	'Language (ï§ëª)            : ' | ||||
|  _mSetStr valLangEng, tmp_Counter		:	DZ	'English ' | ||||
| @ -732,6 +733,7 @@ msgRusStrings: | ||||
|  _mSetStrRus bootFail, tmp_Counter		:	DZ	' ¥¢®§¬®¦¥' | ||||
|  _mSetStrRus bootOk, tmp_Counter		:	DZ	' OK' | ||||
|  _mSetStrRus afterBootFail, tmp_Counter		:	DZ	'<EFBFBD>€†Œˆ’… <ENTER> „‹Ÿ <EFBFBD>…<EFBFBD>…‡€ƒ<EFBFBD>“‡Šˆ, <DEL> „‹Ÿ <EFBFBD>€‘’<EFBFBD>Ž…Š ˆ‹ˆ <ESC> „‹Ÿ ZX-MODE . . .' | ||||
|  _mSetStrRus noMemZX, tmp_Counter		:	DZ	'Žè¨¡ª ! <EFBFBD>¥¤®áâ â®ç® ¯ ¬ï⨠¤«ï áâ àâ  ZX Mode. <EFBFBD> ¦¬¨â¥ CTRL+ALT+DEL ¨«¨ RESET.' | ||||
| ; | ||||
|  _mSetStrRus parLang, tmp_Counter		:	DZ	'Ÿ§ëª (language)            : ' | ||||
|  _mSetStrRus valLangEng, tmp_Counter		:	DZ	'English   ' | ||||
| @ -837,4 +839,5 @@ MSG_RUS: | ||||
| MSG_RUS.size     EQU $-MSG_RUS | ||||
| ;================================================================================================================================== | ||||
| 	ASSERT MSG_ENG.size = MSG_RUS.size, "ERROR IN MESSAGE STRINGS: RUS and ENG do not match" | ||||
| MSG_TABLE.Size	EQU	MSG_RUS.size | ||||
| ; | ||||
| @ -42,13 +42,13 @@ RET_FROM_BIOS_TO_BASIC48: | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| ; ª®íä䍿¨¥â á¬¥é¥¨ï ¯® ®¬¥àã â áª¨ | ||||
|  MACRO	GET_ZX_TASK_DATA_OFFSET | ||||
| 	RLCA | ||||
| 	RLCA | ||||
| 	RLCA | ||||
| 	RLCA | ||||
| 	AND	#30				; ®¢ ï § ¤ ç  0..3 | ||||
|  ENDM | ||||
| ;  MACRO	GET_ZX_TASK_DATA_OFFSET | ||||
| ; 	RLCA | ||||
| ; 	RLCA | ||||
| ; 	RLCA | ||||
| ; 	RLCA | ||||
| ; 	AND	#30				; ®¢ ï § ¤ ç  0..3 | ||||
| ;  ENDM | ||||
| 
 | ||||
| 
 | ||||
| ;------[ „…˜ˆ”<CB86>€–ˆŸ ŠŽŒ€<C592>„<EFBFBD>މ ‘’<E28098>ŽŠˆ,<2C>…<EFBFBD>…„€<E2809E><E282AC>މ „‹Ÿ "EXPANSION" ]-------; | ||||
| @ -75,14 +75,12 @@ COMAND_OK:      ;  | ||||
|         JP Z,MENU_S1 | ||||
|         CP ZX_Char.carriage_return | ||||
|         JP Z,MENU_S1 | ||||
| 	; | ||||
| 	AND %1101'1111 | ||||
|         CP 'I' | ||||
|         JR Z,COMAND_ISD | ||||
|         CP 'i' | ||||
|         JR Z,COMAND_ISD | ||||
|         CP 'T' | ||||
|         JR Z,TASK_SWITCH | ||||
|         CP 't' | ||||
|         JR Z,TASK_SWITCH | ||||
|         JR Z,COMMAND_HARDWARE_MENU | ||||
|         ;CP 'T' | ||||
|         ;JR Z,TASK_SWITCH | ||||
|         DEC HL | ||||
|         POP BC | ||||
|         JP BASIC_MENU | ||||
| @ -91,21 +89,20 @@ MENU_S1: | ||||
|         CALL SERVICE | ||||
|         JP SW_ROM_1 | ||||
| 
 | ||||
| COMAND_ISD: | ||||
| COMMAND_HARDWARE_MENU: | ||||
|         LD A,(HL) | ||||
|         INC HL | ||||
| 	AND %1101'1111 | ||||
|         CP 'S' | ||||
|         JP Z,COMAND_ISD2 | ||||
|         CP 's' | ||||
|         JP Z,COMAND_ISD2 | ||||
|         RET | ||||
| 
 | ||||
| COMAND_ISD2: | ||||
|         RET NZ | ||||
| 	; | ||||
|         POP BC | ||||
|         CALL ISDOS | ||||
|         CALL Hardware_Menu | ||||
|         JP SW_ROM_1 | ||||
| 
 | ||||
| /* | ||||
| ;!TODO ¯¥à¥¤¥« âì ¯®¤ ¯¥à¥ª«î票¥   à §ë¥ á¯¥ªâàã¬ë á § ¯ãé¥ë¬¨ § ¤ ç ¬¨ | ||||
| 
 | ||||
| TASK_SWITCH: | ||||
| ;	*** ‘®åà ¨âì § ¤ çã *** | ||||
| 	PUSH IY | ||||
| @ -231,7 +228,7 @@ TASK_RESTORE: | ||||
| NO_TASK: | ||||
|         POP BC | ||||
|         JP SW_ROM_1 | ||||
| 
 | ||||
| */ | ||||
| ; 259F - ADRESS BASIC128 - MAIN_MENU | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
|  | ||||
| @ -461,20 +461,20 @@ CLEAR_RAM: | ||||
| ;        JR SR_CL_R2 | ||||
| 
 | ||||
| ;***************************** | ||||
| ;    ***  MENU IS-DOS  *** | ||||
| ;    ***  MENU Hardware  *** | ||||
| ;***************************** | ||||
| 
 | ||||
| ISDOS: | ||||
|         LD      HL,IS_TAB | ||||
|         LD      DE,IS_MENU | ||||
|         LD      BC,IS_MENU.Size | ||||
| Hardware_Menu: | ||||
|         LD      HL,Hardware_Menu_TAB | ||||
|         LD      DE,Hardware_Menu_STR | ||||
|         LD      BC,Hardware_Menu_STR.Size | ||||
|         PUSH    HL | ||||
|         CALL    RUN_MENU | ||||
|         POP     HL | ||||
|         CALL    EXEC_PNT | ||||
|         JR      ISDOS | ||||
|         JR      Hardware_Menu | ||||
| 
 | ||||
| IS_TAB: | ||||
| Hardware_Menu_TAB: | ||||
| ;        DW TR_DOS | ||||
| ;        DW SP_DOS | ||||
| 	DW SPRINTER_1X | ||||
| @ -486,7 +486,7 @@ IS_TAB: | ||||
| 	DW RET_FROM_M | ||||
| 
 | ||||
| ; DC - every last character of a string will have bit 7 set | ||||
| IS_MENU: | ||||
| Hardware_Menu_STR: | ||||
|         BYTE    8               ; ª®«¨ç¥á⢮ ¯ãªâ®¢ | ||||
|         BYTE    'Hardware',#FF  ; § £®«®¢®ª ¬¥î | ||||
|         DC      'Sprinter ZX ' | ||||
| @ -497,7 +497,7 @@ IS_MENU: | ||||
|         DC      'Restart ' | ||||
|         DC      'RETURN' | ||||
|         DC      " "             ; ¬ àª¥à ª®æ  | ||||
| .Size   EQU $-IS_MENU | ||||
| .Size   EQU $ - Hardware_Menu_STR | ||||
| 
 | ||||
| ;****************************** | ||||
| ;SP_DOS: | ||||
| @ -554,14 +554,14 @@ PENTAGON: | ||||
|         CALL    _SET_CNF | ||||
| 	CALL    CNF_PN_320 | ||||
|         LD      L,2             ;FN_SYNC.INT_PENT | ||||
| 	LD      DE,CNF_PORT.CNF_2 + CNF_PORT.TURBO.ON | ||||
| 	LD      DE,CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON | ||||
| 	JR      CONFIG_SET | ||||
| 
 | ||||
| PENTAGON512: | ||||
|         CALL    _SET_CNF | ||||
| 	CALL    CNF_PN_320 | ||||
|         LD      L,2             ;FN_SYNC.INT_PENT | ||||
| 	LD      DE,CNF_PORT.CNF_2 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512 | ||||
| 	LD      DE,CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512 | ||||
| ;	JR      CONFIG_SET | ||||
| CONFIG_SET: | ||||
| 	PUSH    DE | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik