free zx pages! ещё больше почти готово
This commit is contained in:
		
							parent
							
								
									df0a7937f6
								
							
						
					
					
						commit
						895f85e04d
					
				| @ -1 +1 @@ | ||||
| Subproject commit 39d099768ae06d08777c63c9d5036fa4ab9c9a01 | ||||
| Subproject commit ba1bc48d1597637a512a5333d2a76f94b5b26231 | ||||
| @ -894,7 +894,7 @@ PrepareToZX:	; Setup HDD drives for ZX Spectrum mode | ||||
| .start_zx: | ||||
| 	; IF FREE_ZX_PAGES | ||||
| 		; ¥ ¤®«¦® á ¯®¯ áâì | ||||
| 		LD	B,BIOS.REINIT.HARD_RESET | ||||
| 		LD	B,high BIOS.REINIT.HARD_RESET | ||||
| 		JP	REINIT | ||||
| 	; ELSE	; [x] free zx pages! | ||||
| 	; 	 XOR	A | ||||
| @ -1239,6 +1239,12 @@ PROG_NO_ROM: | ||||
| 		OUT	(SLOT2),A | ||||
| 		OUT	(SLOT1),A | ||||
| 		; | ||||
| 		LD      HL,MESSAGE_NR | ||||
| 		LD      DE,#A000 | ||||
| 		LD      BC,MESSAGE_NR.size | ||||
| 		LD      A,C | ||||
| 		LDIR | ||||
| 		; | ||||
| 		LD	SP,#BF00 | ||||
| 		; | ||||
| 		LD      E,0 | ||||
| @ -1253,12 +1259,6 @@ PROG_NO_ROM: | ||||
| 		LD      A,1 | ||||
| 		OUT     (SCREEN_SWITCH),A | ||||
| 		; | ||||
| 		LD      HL,MESSAGE_NR | ||||
| 		LD      DE,#A000 | ||||
| 		LD      BC,MESSAGE_NR.size | ||||
| 		LD      A,C | ||||
| 		LDIR | ||||
| 		; | ||||
| 		LD      HL,#A000 | ||||
| 		LD      D,0							; delimiter | ||||
| 		LD      E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED | ||||
|  | ||||
| @ -11,68 +11,47 @@ | ||||
| ; PG_Sp2000		EQU #FE | ||||
| ; PG_Sp2000_REINIT	EQU #FD | ||||
| ; | ||||
| 
 | ||||
| RST_CONF: | ||||
| ;--[] ZX Spectrum | ||||
| .AY8910: | ||||
| 	; !FIXIT ¥ 㦮 íâ® ¡®«ìè¥ ¢ CMOS, ¯¥à¥¤¥« âì ¯®¤ TASK | ||||
| 	 ;LD	D,CMOS_CELL.HardwareConfiguration	; CONFIG_DE (D) - § ç¥¨¥ CNF_PORT | ||||
| 	 ;CALL	CMOS_RD | ||||
| 	 ;OR	1	 | ||||
| 	 ;CALL	CMOS_WR | ||||
| 	; | ||||
| 
 | ||||
| 	LD BC,Port_All_Mode | ||||
| 	IN A,(C) | ||||
| 	AND Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF | ||||
| 	OUT (C),A							; ACC_OFF | ||||
| 
 | ||||
| 	;LD A,PG_AY | ||||
| 	LD DE,ACEX.Config_ID.Sp97_AY | ||||
| 	JR .INT_PLD | ||||
| .AY8910:	CALL	.ACC_OFF | ||||
| 		LD	DE,ACEX.Config_ID.Sp97_AY | ||||
| 		JR	.INT_PLD | ||||
| ;--[] | ||||
| 
 | ||||
| ;--[] Sprinter ZX | ||||
| .SP97_1: | ||||
| 	; !FIXIT ¥ 㦮 íâ® ¡®«ìè¥ ¢ CMOS, ¯¥à¥¤¥« âì ¯®¤ TASK | ||||
| 	 ;LD	D,CMOS_CELL.HardwareConfiguration	; CONFIG_DE (D) - § ç¥¨¥ CNF_PORT | ||||
| 	 ;CALL CMOS_RD | ||||
| 	 ;AND #FE | ||||
| 	 ;CALL CMOS_WR | ||||
| 	; | ||||
| 	 | ||||
| 	LD BC,Port_All_Mode | ||||
| 	IN A,(C) | ||||
| 	AND #FE								;!HARDCODE  | ||||
| 	OUT (C),A							; ACC_OFF | ||||
| 
 | ||||
| 	;LD A,PG_SP1 | ||||
| 	LD DE,ACEX.Config_ID.Sp97_1 | ||||
| 	JR .INT_PLD | ||||
| .SP97_1:	CALL	.ACC_OFF | ||||
| 		LD	DE,ACEX.Config_ID.Sp97_1 | ||||
| 		JR	.INT_PLD | ||||
| ;--[] | ||||
| 
 | ||||
| ;--[] | ||||
| .SP97_2: | ||||
| 	LD BC,Port_All_Mode | ||||
| 	IN A,(C) | ||||
| 	OR 1								; ACC_ON | ||||
| 	OUT (C),A | ||||
| 	;LD A,PG_SP2 | ||||
| 	LD DE,ACEX.Config_ID.Sp97_2 | ||||
| 	JR .INT_PLD | ||||
| .SP97_2:	CALL	.ACC_ON | ||||
| 		LD	DE,ACEX.Config_ID.Sp97_2 | ||||
| 		JR	.INT_PLD | ||||
| ;--[] | ||||
| 
 | ||||
| 
 | ||||
| ;--[] | ||||
| ;[x] | ||||
| .SP2000: | ||||
| 	LD BC,Port_All_Mode | ||||
| 	IN A,(C) | ||||
| 	OR 1								; ACC_ON | ||||
| 	OUT (C),A | ||||
| 	LD DE,ACEX.Config_ID.Sp2000 | ||||
| 	JR .INT_PLD | ||||
| .SP2000:	CALL	.ACC_ON | ||||
| 		LD	DE,ACEX.Config_ID.Sp2000 | ||||
| 		JR	.INT_PLD | ||||
| ;--[] | ||||
| 
 | ||||
| ;--[] | ||||
| .ACC_OFF:	LD	BC,Port_All_Mode | ||||
| 		IN	A,(C) | ||||
| 		AND	Port_All_Mode.DEFAULT - Port_All_Mode.SPECTRUM_MODE_OFF | ||||
| 		OUT	(C),A | ||||
| 		RET | ||||
| 		; | ||||
| .ACC_ON:	LD	BC,Port_All_Mode | ||||
| 		IN	A,(C) | ||||
| 		OR	1								; ACC_ON | ||||
| 		OUT	(C),A | ||||
| 		RET | ||||
| ;--[] | ||||
| 
 | ||||
| ;--[] | ||||
| .CUSTOM: | ||||
| @ -82,7 +61,7 @@ RST_CONF: | ||||
| 	LD	C,SLOT3 | ||||
| 	IN	B,(C) | ||||
| 	OUT	(C),A							; PAGE á ¯à®è¨¢ª®© | ||||
| 	LD	DE,(#C090)						        ; PLD-ID | ||||
| 	LD	DE,(#C090)						; PLD-ID | ||||
| 	OUT	(C),B							; RET page | ||||
| ;--[]	;JR INT_PLD | ||||
| .INT_PLD:       ; only for old FLEX10K soft compatible | ||||
| @ -174,7 +153,7 @@ RST_CONF: | ||||
| 	LDIR | ||||
| 	; ¥á«¨ ZF=0, â® ¯à®æ¥¤ãà  á¤¥« ¥â à¥á¥â á ¯¥à¥§ «¨¢ª®© ¨§ BIOS, ¨ ç¥ ¨§ Š<>˜ | ||||
| 	CALL	Spec_Page.init_acex | ||||
| 	LD	BC,256*BIOS.REINIT.HARD_RESET + BIOS.REINIT | ||||
| 	LD	BC,BIOS.REINIT.HARD_RESET | ||||
| 	; | ||||
| 	;   ¢å®¤¥ ¢ BC ¯ à ¬¥âàë äãªæ¨¨ BIOS | ||||
| .INIT_ACEX.ifSoftreset: | ||||
| @ -220,7 +199,7 @@ RST_CONF: | ||||
| 	; *. ‘®åà ¨âì ªã¤ -¨¡ã¤ì § ç¥¨¥ á⥪  | ||||
| 	; * | ||||
| 	; .. ... ... ..  | ||||
| 	;LD	BC,256*BIOS.REINIT.HARD_RESET + BIOS.REINIT | ||||
| 	;LD	BC,BIOS.REINIT.HARD_RESET | ||||
| 	JP_to_BIOS | ||||
| 	; | ||||
| .ReturnSoftReset: | ||||
| @ -234,7 +213,7 @@ RST_CONF: | ||||
| 	LD	A,Spec_Page | ||||
| 	OUT	(SLOT3),A | ||||
| 	; | ||||
| 	LD	BC,256*BIOS.REINIT.SOFT_RESET + BIOS.REINIT | ||||
| 	LD	BC,BIOS.REINIT.SOFT_RESET | ||||
| 	JR	.INIT_ACEX.ifSoftreset | ||||
| 	; | ||||
| 	;;; | ||||
| @ -321,63 +300,55 @@ RST_CONF: | ||||
| ; | ||||
| ;*************************************** | ||||
| 
 | ||||
| 
 | ||||
| ;[x] | ||||
| ;--------------------------[;!TODO ¯®â¥áâ¨âì]--------------------------; | ||||
| ; B - ¯ à ¬¥âà á¡à®á  | ||||
| ; B = 1 - RESTART. | ||||
| ; B = 2 - Soft reset | ||||
| ; B = 3 - Hard reset | ||||
| REINIT:	DEC     B | ||||
| 	JR      Z,.Restart      ;1 | ||||
| 	DEC     B | ||||
| 	JR      Z,.SoftReset    ;2 | ||||
| 	DEC     B | ||||
| 	SCF | ||||
| 	RET	NZ | ||||
| ; 	JR      Z,.HardReset    ;3 | ||||
| ; 	DEC     B | ||||
| ; .ReinitZXpages:                 ;4 | ||||
| ;  	LD DE,RESERVED_PAGES                                            ; â ¡«¨æ  § ïâëå á¨á⥬ëå áâà ¨æ | ||||
| ; 	LD HL,SYS_PAGE.RAM_TABLE                                         ; €¤à¥á FAT އ“. | ||||
| 
 | ||||
| ;         LD C,SLOT3 | ||||
| ;         IN B,(C) | ||||
| ;         LD A,SYS_PAGE | ||||
| ;         OUT (SLOT3),A | ||||
|         | ||||
| ; 	LD A,(DE) | ||||
| ; .zxloop: | ||||
| ; 	CP #FF | ||||
| ; 	JR Z,.endzxloop | ||||
| ; 	INC DE | ||||
| ; 	LD L,A | ||||
| 
 | ||||
| ;         LD A,(HL) | ||||
| ;         AND A | ||||
| ;         JR NZ,.errorzxloop | ||||
| 
 | ||||
| ;         LD A,(DE) | ||||
| ; 	LD (HL),A | ||||
| ; 	JR .zxloop | ||||
| 
 | ||||
| ; .errorzxloop: | ||||
| ;         DEC DE | ||||
| ;         LD HL,-RESERVED_PAGES-1 | ||||
| ;         ADD HL,DE | ||||
| ;         JR NC,.errorzxloop_noChanges | ||||
| 
 | ||||
| ;         DEC DE | ||||
| ;         LD H,high SYS_PAGE.RAM_TABLE | ||||
| ;         LD A,(DE) | ||||
| ; 	LD L,A | ||||
| ;         LD A,#FF | ||||
| ; 	LD (HL),A | ||||
| ; .errorzxloop_noChanges: | ||||
| ;         SCF | ||||
| ; .endzxloop: | ||||
| ;         OUT (C),B | ||||
| ;         RET | ||||
| ; | ||||
| ; B = 4 - Free memory except ZX pages | ||||
| REINIT:		DEC	B | ||||
| 		JR	Z,.Restart      ; 1 | ||||
| 		DEC	B | ||||
| 		JR	Z,.SoftReset    ; 2 | ||||
| 		DEC     B | ||||
| 		JR	Z,.HardReset    ; 3 | ||||
| 		DEC	B | ||||
| 		SCF | ||||
| 		RET	NZ | ||||
| 		;			; 4 | ||||
| .FreeNoZxMem:	DI | ||||
| 		LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(C),A | ||||
| 		LD	(SYS_PAGE.SP_SAVE),SP | ||||
| 		LD	SP,SYS_PAGE.SYS_SP | ||||
| 		PUSH	BC | ||||
| 		; ç¨á⨬ ¡ãä¥à | ||||
| 		LD	HL,SYS_PAGE.SHARED_BUFFER_256b | ||||
| 		LD	DE,SYS_PAGE.SHARED_BUFFER_256b + 1 | ||||
| 		LD	BC,255 | ||||
| 		LD	(HL),0 | ||||
| 		LDIR | ||||
| 		; | ||||
| 		LD	IX,SYS_PAGE.Block_IDs | ||||
| 		LD	H,high SYS_PAGE.RAM_TABLE | ||||
| 		LD	D,high SYS_PAGE.SHARED_BUFFER_256b | ||||
| 		LD	BC,2*256 + #FF					; 2 = vRAM ¨ VROM ID's | ||||
| 		CALL	SAVE_CHAINS | ||||
| 		; | ||||
| 		CALL	EMM.InitMem | ||||
| 		; | ||||
| 		LD	HL,SYS_PAGE.SHARED_BUFFER_256b | ||||
| 		LD	DE,SYS_PAGE.RAM_TABLE | ||||
| 		CALL	RESTORE_CHAINS | ||||
| 		; CF=0 | ||||
| 		POP	BC | ||||
| 		LD	SP,(SYS_PAGE.SP_SAVE) | ||||
| 		OUT	(C),B | ||||
| 		RET | ||||
| 
 | ||||
| ;[x] | ||||
| .HardReset: | ||||
| @ -430,5 +401,92 @@ REINIT:	DEC     B | ||||
| .loop2:		LD (#C000),A						; Soft RESET !!! | ||||
| 		JR .loop2 | ||||
| ; | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| ; ‚室:	 H - RAM_TABLE | ||||
| ;	 D - Buffer for RAM_TABLE | ||||
| ;	IX - 㪠§ â¥«ì   ¯®á«¥¤®¢ â¥«ì®áâì ¨§ RAM BLOCK ID | ||||
| ;	 B - ª®«-¢® RAM BLOCK ID ¢ ¯®á«¥¤®¢ â¥«ì®á⨠| ||||
| ;	 C - #FF (ç⮡ LDI ¥ «®¬ «® DJNZ áçñâ稪) | ||||
| SAVE_CHAINS:	LD	A,(IX) | ||||
| 		INC	IX | ||||
| 		OR	A | ||||
| 		LD	L,A | ||||
| 		CALL	NZ,COPY_CHAIN | ||||
| 		DJNZ	SAVE_CHAINS | ||||
| 		RET | ||||
| ; ‚室:	 H - RAM_TABLE | ||||
| ;	 L - RAM BLOCK ID | ||||
| ;	 D - Buffer for RAM_TABLE | ||||
| COPY_CHAIN:	LD	E,L | ||||
| 		LDI  | ||||
| 		DEC	L | ||||
| 		LD	L,(HL) | ||||
| 		INC	L | ||||
| 		RET	Z | ||||
| 		DEC	L | ||||
| 		JR	COPY_CHAIN | ||||
| ;--------------; | ||||
| ; ‚室:	 HL - ª®¯¨ï RAM_TABLE ®âªã¤  ª®¯¨à®¢ âì | ||||
| ;	 DE - RAM_TABLE | ||||
| RESTORE_CHAINS:	XOR	A | ||||
| .loop:		CP	(HL) | ||||
| 		JR	Z,.NoCopy | ||||
| 		LD	E,L | ||||
| 		LDI  | ||||
| 		DEC	L | ||||
| .NoCopy:	INC	L | ||||
| 		JR	NZ,.loop | ||||
| 		RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| ; áâ àë© ¢ à¨ â ®á¢®¡®¦¤¥¨ï áâà ¨æ ᯥªâà㬠 ç¥à¥§ RAM BLK ID 1 | ||||
| ;----------------------------------------------------------------------; | ||||
| ; 	JR      Z,.HardReset    ;3 | ||||
| ; 	DEC     B | ||||
| ; .ReinitZXpages:                 ;4 | ||||
| ;  	LD DE,RESERVED_PAGES	; â ¡«¨æ  § ïâëå á¨á⥬ëå áâà ¨æ | ||||
| ; 	LD HL,SYS_PAGE.RAM_TABLE	; €¤à¥á FAT އ“. | ||||
| 
 | ||||
| ;         LD C,SLOT3 | ||||
| ;         IN B,(C) | ||||
| ;         LD A,SYS_PAGE | ||||
| ;         OUT (SLOT3),A | ||||
|         | ||||
| ; 	LD A,(DE) | ||||
| ; .zxloop: | ||||
| ; 	CP #FF | ||||
| ; 	JR Z,.endzxloop | ||||
| ; 	INC DE | ||||
| ; 	LD L,A | ||||
| 
 | ||||
| ;         LD A,(HL) | ||||
| ;         AND A | ||||
| ;         JR NZ,.errorzxloop | ||||
| 
 | ||||
| ;         LD A,(DE) | ||||
| ; 	LD (HL),A | ||||
| ; 	JR .zxloop | ||||
| 
 | ||||
| ; .errorzxloop: | ||||
| ;         DEC DE | ||||
| ;         LD HL,-RESERVED_PAGES-1 | ||||
| ;         ADD HL,DE | ||||
| ;         JR NC,.errorzxloop_noChanges | ||||
| 
 | ||||
| ;         DEC DE | ||||
| ;         LD H,high SYS_PAGE.RAM_TABLE | ||||
| ;         LD A,(DE) | ||||
| ; 	LD L,A | ||||
| ;         LD A,#FF | ||||
| ; 	LD (HL),A | ||||
| ; .errorzxloop_noChanges: | ||||
| ;         SCF | ||||
| ; .endzxloop: | ||||
| ;         OUT (C),B | ||||
| ;         RET | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| ; | ||||
| @ -306,6 +306,8 @@ INIT_CONFIG_ALL: | ||||
| 	; LD (HL),0 | ||||
| 	; LDIR | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	EX AF,AF' | ||||
| 	OUT (SLOT2),A | ||||
| 
 | ||||
| @ -325,6 +327,7 @@ INIT_CONFIG_ALL: | ||||
| 	RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| FN_TURBO: | ||||
| 	CP 2 | ||||
|  | ||||
| @ -254,11 +254,16 @@ CLEAR_MEM:	IN	A,(SLOT3) | ||||
| 		LD	(HL),0 | ||||
| 		LDIR | ||||
| 	; ª®¯¨à㥬 ZX vROM  | ||||
| 		LD	IX,SYS_PAGE.Block_ID.vROM | ||||
| 		LD	HL,(SYS_PAGE.Block_ID.vROM)	; 㦮 § ç¥¨¥ ¢ L | ||||
| 		LD	H,high SYS_PAGE.RAM_TABLE | ||||
| 		LD	D,high MEMMAP2 | ||||
| 		LD	BC,#01FF					;!HARDCODE 1 vROM RAM BLOCK ID | ||||
| 		CALL	.SAVE_RMD | ||||
| 		;LD	BC,#01FF					;!HARDCODE 1 vROM RAM BLOCK ID | ||||
| 		CALL	COPY_CHAIN | ||||
| 		; LD	IX,SYS_PAGE.Block_ID.vROM | ||||
| 		; LD	H,high SYS_PAGE.RAM_TABLE | ||||
| 		; LD	D,high MEMMAP2 | ||||
| 		; LD	BC,#01FF					;!HARDCODE 1 vROM RAM BLOCK ID | ||||
| 		; CALL	.SAVE_RMD | ||||
| 	; [x] 28/09/2024 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. | ||||
| 		LD	B,high BIOS.SWAP_RAM_DRIVES.Sp2000 | ||||
| 		CALL	SWAP_RAM_DRIVES | ||||
| @ -284,13 +289,15 @@ CLEAR_MEM:	IN	A,(SLOT3) | ||||
| 		LD	H,high SYS_PAGE.RAM_TABLE | ||||
| 		LD	D,high MEMMAP2 | ||||
| 		LD	BC,SYS_PAGE.RAMD_KEYS.NUM*256+#FF | ||||
| 		CALL	.SAVE_RMD | ||||
| 		CALL	SAVE_CHAINS | ||||
| 	; [x] 4/11/2023 | ||||
| 		; LD	IX,SYS_PAGE.Sp_RAMD_KEYS | ||||
| 		; LD	B,SYS_PAGE.Sp_RAMD_KEYS.NUM | ||||
| 		; CALL	.SAVE_RMD | ||||
| 	; | ||||
| .skip_save_rmd:	CALL	EMM.InitMem | ||||
| 		LD	HL,MEMMAP2 | ||||
| 		LD	DE,SYS_PAGE.RAM_TABLE | ||||
| 		CALL	RESTORE_CHAINS | ||||
| 		POP	AF | ||||
| 		JR	Z,.skip_restore_rmd | ||||
| @ -312,13 +319,13 @@ CLEAR_MEM:	IN	A,(SLOT3) | ||||
| 		; JP	SWAP_RAM_DRIVES | ||||
| 		RET | ||||
| 	; | ||||
| .SAVE_RMD:	LD	A,(IX) | ||||
| 		INC	IX | ||||
| 		OR	A | ||||
| 		LD	L,A | ||||
| 		CALL	NZ,COPY_CHAIN | ||||
| 		DJNZ	.SAVE_RMD | ||||
| 		RET | ||||
| ; SAVE_CHAINS:	LD	A,(IX) | ||||
| ; 		INC	IX | ||||
| ; 		OR	A | ||||
| ; 		LD	L,A | ||||
| ; 		CALL	NZ,COPY_CHAIN | ||||
| ; 		DJNZ	SAVE_CHAINS | ||||
| ; 		RET | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| @ -366,22 +373,20 @@ CLEAR_MEM:	IN	A,(SLOT3) | ||||
| ; 	RETI  | ||||
| ; ; | ||||
| 
 | ||||
| INT_OFF: | ||||
| 	DI  | ||||
| 	LD	A,#3F | ||||
| 	LD	I,A | ||||
| 	IM	1 | ||||
| 	RET  | ||||
| 
 | ||||
| INT_ON: | ||||
| 	DI  | ||||
| 	LD	A,+high INT_POINTER | ||||
| 	LD	I,A | ||||
| 	LD	HL,INT_HANDLER | ||||
| 	LD	(INT_POINTER),HL | ||||
| 	IM	2 | ||||
| 	EI  | ||||
| 	RET  | ||||
| INT_OFF:	DI  | ||||
| 		LD	A,#3F | ||||
| 		LD	I,A | ||||
| 		IM	1 | ||||
| 		RET  | ||||
| 		; | ||||
| INT_ON:		DI  | ||||
| 		LD	A,+high INT_POINTER | ||||
| 		LD	I,A | ||||
| 		LD	HL,INT_HANDLER | ||||
| 		LD	(INT_POINTER),HL | ||||
| 		IM	2 | ||||
| 		EI  | ||||
| 		RET  | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| @ -403,38 +408,40 @@ EXIT_SETUP:	CALL	INT_OFF | ||||
| 		LD	A,B	 | ||||
| 		JR	NZ,.Set_Page41 | ||||
| 		CP	'X' | ||||
| 		JR	Z,.vROMs_Installed | ||||
| 		;JR	Z,.vROMs_Installed | ||||
| 		; | ||||
| .Set_Page41:	CALL	ZXMODE_SETUP.Set_Page41 | ||||
| .Set_Page41:	CALL	NZ,ZXMODE_SETUP.Set_Page41 | ||||
| .vROMs_Installed: | ||||
| 		XOR	A | ||||
| 		LD	BC,4*256 + BIOS.ZX_MEMORY_MANAGER	; [ ] free zx pages! HARDCODE MANAGE_ZX_PAGES.GET_SCORP_RAM | ||||
| 		RST	ToBIOS_18			;!TODO  áâà ¨¢ âì ¢ BIOS zx mode | ||||
| 		JR	NC,.set_ZX_params | ||||
| ; 		XOR	A | ||||
| ; 		LD	BC,4*256 + BIOS.ZX_MEMORY_MANAGER	; [ ] free zx pages! HARDCODE MANAGE_ZX_PAGES.GET_SCORP_RAM | ||||
| ; 		RST	ToBIOS_18			;!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 | ||||
| 		; | ||||
| 		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	H,A						; Block_ID.vRAM | ||||
| 		;LD	DE,256*0 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 | ||||
| 		;LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		;LD	L,A | ||||
| 		;LD	B,#FE						; !HARDCODE Port All Mode data | ||||
| 		;LD	A,%0000'0010 | ||||
| 		;EX	AF,AF' | ||||
| 		;XOR	A | ||||
| 		; | ||||
| .set_ZX_params:	LD	H,A						; Block_ID.vRAM | ||||
| 		;!TODO  áâà ¨¢ âì ¢ BIOS zx mode | ||||
| 		 LD	DE,256*0 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 | ||||
| 		 LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		 LD	L,A | ||||
| 		 LD	B,#FE						; !HARDCODE Port All Mode data | ||||
| 		 LD	A,%0000'0010 | ||||
| 		 EX	AF,AF' | ||||
| 		 XOR	A | ||||
| 		; | ||||
| 		;POP	HL	; <20>… 㦥.  ¤à¥á ¢®§¢à â  ¢ EXP ¨§ SETUP | ||||
| 		LD	A,ROM.EXTENSION | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		XOR	A | ||||
| 		JP	GOTO_SPECTRUM.FN | ||||
| 		;XOR	A | ||||
| 		;JP	GOTO_SPECTRUM.FN | ||||
| 		;!TODO  áâà ¨¢ âì ¢ BIOS zx mode | ||||
| 		JP	SPRINTER_ZX | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ;	ELSE | ||||
| 	;LD	BC,#020E | ||||
| @ -1456,26 +1463,26 @@ GET_ID:	LD	HL,memBUFFER.ID | ||||
| ;R01	RET  | ||||
| 
 | ||||
| 
 | ||||
| COPY_CHAIN:	LD	E,L | ||||
| 		LDI  | ||||
| 		DEC	L | ||||
| 		LD	L,(HL) | ||||
| 		INC	L | ||||
| 		RET	Z | ||||
| 		DEC	L | ||||
| 		JR	COPY_CHAIN | ||||
| ; COPY_CHAIN:	LD	E,L | ||||
| ; 		LDI  | ||||
| ; 		DEC	L | ||||
| ; 		LD	L,(HL) | ||||
| ; 		INC	L | ||||
| ; 		RET	Z | ||||
| ; 		DEC	L | ||||
| ; 		JR	COPY_CHAIN | ||||
| 
 | ||||
| RESTORE_CHAINS:	LD	HL,MEMMAP2 | ||||
| 		LD	DE,SYS_PAGE.RAM_TABLE | ||||
| 		XOR	A | ||||
| .loop:		CP	(HL) | ||||
| 		JR	Z,.NoCopy | ||||
| 		LD	E,L | ||||
| 		LDI  | ||||
| 		DEC	L | ||||
| .NoCopy:	INC	L | ||||
| 		JR	NZ,.loop | ||||
| 		RET | ||||
| ; ; ‚室: HL - ª®¯¨ï RAM_TABLE ®âªã¤  ª®¯¨à®¢ âì | ||||
| ; RESTORE_CHAINS:	LD	DE,SYS_PAGE.RAM_TABLE | ||||
| ; 		XOR	A | ||||
| ; .loop:		CP	(HL) | ||||
| ; 		JR	Z,.NoCopy | ||||
| ; 		LD	E,L | ||||
| ; 		LDI  | ||||
| ; 		DEC	L | ||||
| ; .NoCopy:	INC	L | ||||
| ; 		JR	NZ,.loop | ||||
| ; 		RET | ||||
| 
 | ||||
| ;---------------------------------------------------------------[] | ||||
| ;REGISTER #1E | ||||
|  | ||||
| @ -573,7 +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 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 ' | ||||
| @ -733,7 +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 noMemZX, tmp_Counter		:	DZ	'Žè¨¡ª ! <20>¥¤®áâ â®ç® ¯ ¬ï⨠¤«ï áâ àâ  ZX Mode. <20> ¦¬¨â¥ CTRL+ALT+DEL ¨«¨ RESET.' | ||||
| ; | ||||
|  _mSetStrRus parLang, tmp_Counter		:	DZ	'Ÿ§ëª (language)            : ' | ||||
|  _mSetStrRus valLangEng, tmp_Counter		:	DZ	'English   ' | ||||
|  | ||||
| @ -473,7 +473,7 @@ FN_ENTRANCE:	;!TODO	A - TASK NUMBER | ||||
| 		PUSH	DE | ||||
| 		;-----------------------------------; | ||||
| 		; Sub FN #8x  | ||||
| 		BIT	7,B | ||||
| .API:		BIT	7,B | ||||
| 		JR	NZ,INIT_vROM		; B = 128 | ||||
| 		; Sub FN #4x  | ||||
| 		BIT	6,B | ||||
| @ -517,8 +517,7 @@ FREE_vRAM:	LD	A,(SYS_PAGE.Block_ID.vRAM) | ||||
| 		RET	Z | ||||
| 		LD	C,BIOS.FreeMem | ||||
| 		CALL	ToBIOS_FromEXT | ||||
| 		RET	C | ||||
| 		XOR	A | ||||
| 		LD	A,0 | ||||
| 		LD	(SYS_PAGE.Block_ID.vRAM),A | ||||
| 		RET | ||||
| ;--------------; | ||||
| @ -529,7 +528,7 @@ FREE_vROM:	LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		RET	Z | ||||
| 		LD	C,BIOS.FreeMem | ||||
| 		CALL	ToBIOS_FromEXT | ||||
| 		RET	C | ||||
| 		PUSH	AF | ||||
| 		XOR	A | ||||
| 		LD	(SYS_PAGE.Block_ID.vROM),A | ||||
| ;--------------; | ||||
| @ -544,6 +543,7 @@ RES_FLAG_ZXvROM:			;  | ||||
| 		LD	(Spec_Page.flag_X),A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		POP	AF | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| @ -636,7 +636,6 @@ GET_SCORP_RAM:	CALL	FREE_vRAM | ||||
| 
 | ||||
| ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; | ||||
| ; [ ] free zx pages! | ||||
| ; <20>…<EFBFBD>…„€‚€’œ: ®¬¥à vROM, vRAM, CONFIG_DE, FN_SYNC, PORT_ALL_MODE, MEM_TYPE | ||||
| ; ‚室:	D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128, | ||||
| ; 	   3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨: | ||||
| ; 	   4 - TR-DOS, 5 - BASIC 48 | ||||
| @ -689,6 +688,7 @@ GOTO_SPECTRUM:	LD	A,BIOS.Error.NotSupported | ||||
| 		EXX | ||||
| 		; | ||||
| 		LD	A,C | ||||
| 		PUSH	BC | ||||
| 		EXX | ||||
| 		AND	%0000'0100		;!TODO § ¯®¬¨âì/¢®ááâ ®¢¨âì ª á⮬ãî ¯ «¨âàã? | ||||
| 		LD	BC,BIOS.SET_PAL_INIT.ZX | ||||
| @ -703,6 +703,9 @@ GOTO_SPECTRUM:	LD	A,BIOS.Error.NotSupported | ||||
| 		LD	BC,BIOS.LP_OPEN_S.ZX_32x24 | ||||
| 		CALL	ToBIOS_FromEXT | ||||
| 		; | ||||
| 		LD	BC,BIOS.SWAP_RAM_DRIVES.ZX | ||||
| 		CALL	ToBIOS_FromEXT | ||||
| 		; | ||||
| 		LD	A,(SYS_PAGE.Block_ID.vRAM) | ||||
| 		LD	HL,SYS_PAGE.SHARED_BUFFER_256b | ||||
| 		LD	C,BIOS.GetMemBlkPages | ||||
| @ -714,13 +717,17 @@ GOTO_SPECTRUM:	LD	A,BIOS.Error.NotSupported | ||||
| 		 ;CP	16 | ||||
| 		; | ||||
| 		LD	D,B | ||||
| 		EXX | ||||
| 		 POP	BC | ||||
| 		EXX | ||||
| 		;.TASK_0: § ¤ ç  0, ०¨¬ 256 ª¨«®¡ ©â | ||||
| .START_TASK:	XOR	A | ||||
| 		OUT	(RGADR),A	; ॣ¨áâà ¢¨¤¥®  ¤à¥á  | ||||
| 		OUT	(RGMOD),A	; ॣ¨áâà ¬®¤ë | ||||
| 		; | ||||
| 		LD	IY,.BASIC_128 | ||||
| 		JP	INIT_PAGES					; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬  ᯥªâà㬠 | ||||
| 		;!TODO ¥á«¨ 48ª â® ¥ 㦮? ; [ ] free zx pages! | ||||
| 		JR	INIT_PAGES					; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬  ᯥªâà㬠 | ||||
| 		;start_basic: | ||||
| .BASIC_128:	LD	SP,#C000 | ||||
| 		LD	HL,RES128_PROG | ||||
|  | ||||
| @ -421,7 +421,10 @@ TURBO_ON: | ||||
| 
 | ||||
| CLEAR_RAM: | ||||
| 	DI | ||||
| 	LD	C,BIOS.FullInit		; [ ] free zx pages! | ||||
| 	; [ ] free zx pages! | ||||
| 	 LD	BC,BIOS.REINIT.FREE_NO_ZX_MEM | ||||
| 	 ;LD	C,BIOS.FullInit | ||||
| 	; | ||||
| 	RST_to_BIOS | ||||
| 	; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠 ¢®§¢à â ¢ DSS ¯® CAD | ||||
| 	;  ¡ã¤¥â ®¯ áë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì), | ||||
| @ -477,11 +480,11 @@ Hardware_Menu: | ||||
| Hardware_Menu_TAB: | ||||
| ;        DW TR_DOS | ||||
| ;        DW SP_DOS | ||||
| 	DW SPRINTER_1X | ||||
| 	DW AY8910_X | ||||
| 	DW PENTAGON | ||||
| 	DW SCORPION | ||||
| 	DW PENTAGON512 | ||||
| 	DW SPRINTER_ZX | ||||
| 	DW ZX_SPECTRUM_128 | ||||
| 	DW PENTAGON_128 | ||||
| 	DW SCORPION_256 | ||||
| 	DW PENTAGON_512 | ||||
| 	DW SPRINTER_reset       ;SPRINTER_2X | ||||
| 	DW RET_FROM_M | ||||
| 
 | ||||
| @ -517,117 +520,204 @@ Hardware_Menu_STR: | ||||
| 
 | ||||
| ;************************************************** | ||||
| ;Sprinter ZX | ||||
| SPRINTER_1X: | ||||
|         CALL    _SET_CNF | ||||
|         LD      C,BIOS.RST_CONF.SP97_1 | ||||
| 	RST_to_BIOS | ||||
| 	CALL    CNF_PN_320 | ||||
|         LD      L,2             ;FN_SYNC.INT_PENT | ||||
|         JR      AY8910_X.SET_DE | ||||
| ;[ ] free zx pages! | ||||
| 
 | ||||
| /* | ||||
| 
 | ||||
| 		LD	H,A						; Block_ID.vRAM | ||||
| 		;!TODO  áâà ¨¢ âì ¢ BIOS zx mode | ||||
| 		 LD	DE,256*0 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 | ||||
| 		 LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		 LD	L,A | ||||
| 		 LD	B,#FE						; !HARDCODE Port All Mode data | ||||
| 		 LD	A,%0000'0010 | ||||
| 		 EX	AF,AF' | ||||
| 		 XOR	A | ||||
| 		; | ||||
| 		;POP	HL	; <20>… 㦥.  ¤à¥á ¢®§¢à â  ¢ EXP ¨§ SETUP | ||||
| 		LD	A,ROM.EXTENSION | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		XOR	A | ||||
| 		JP	GOTO_SPECTRUM.FN | ||||
| 
 | ||||
| ; ‚室:	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 áâப | ||||
| 
 | ||||
| ;		    1 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon  48k. 3 áâà ¨æë | ||||
| ;		    2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k. 2+6 áâà ¨æë | ||||
| ;		    3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k. 2+30 áâà ¨æë | ||||
| ;		    4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë | ||||
| 
 | ||||
| */ | ||||
| 
 | ||||
| SPRINTER_ZX:	;DI | ||||
| 		;LD	A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON | ||||
| 		;OUT	(SYS_PORT.ROM),A | ||||
| 		;LD	SP,SYS_PAGE.SYS_SP | ||||
| 		;LD	A,SYS_PAGE | ||||
| 		;OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,BIOS.RST_CONF.SP97_1 | ||||
| 		LD	DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0	; !HARDCODE 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë | ||||
| 		LD	BC,#FE*256 + %0000'0010				; !HARDCODE Port All Mode data. int pent, set default palette, 320 áâப | ||||
| 		JR	PREPARE_TO_START_ZX | ||||
| ; | ||||
| ;ZX Spectrum | ||||
| AY8910_X: | ||||
|         CALL    _SET_CNF | ||||
|         LD      C,BIOS.RST_CONF.AY8910 | ||||
| 	RST_to_BIOS | ||||
| ZX_SPECTRUM_128: | ||||
| 		;DI | ||||
| 		;LD	SP,SYS_PAGE.SYS_SP | ||||
| 		;LD	A,SYS_PAGE | ||||
| 		;OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,BIOS.RST_CONF.AY8910 | ||||
| 		LD	DE,2*256 + CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.SCORP_RESET	; !HARDCODE 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128 | ||||
| 		LD	BC,#FA*256 + %1000'0011	 | ||||
| 		JR	PREPARE_TO_START_ZX | ||||
| 
 | ||||
|         LD      A,#FA           ; no ACC, Original waits | ||||
|         LD      (Port_All_Mode),A | ||||
|        | ||||
| 	CALL    CNF_SC_312 | ||||
|         LD      L,3             ;FN_SYNC.INT_ORIG | ||||
| .SET_DE: | ||||
| 	LD      DE,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON | ||||
| 	CALL    CONFIG_SET | ||||
| 	CALL    CLS             ;!FIXIT 㦮 «¨? | ||||
| 	RET | ||||
| ; | ||||
| SCORPION_256:	;DI | ||||
| 		;LD	SP,SYS_PAGE.SYS_SP | ||||
| 		;LD	A,SYS_PAGE | ||||
| 		;OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,BIOS.RST_CONF.AY8910 | ||||
| 		LD	DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_1	; !HARDCODE 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë | ||||
| 		LD	BC,#FE*256 + %1000'0001	 | ||||
| 		;JR	PREPARE_TO_START_ZX | ||||
| PREPARE_TO_START_ZX: | ||||
| 		DI | ||||
| 		EX	AF,AF' | ||||
| 		 LD	A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON | ||||
| 		 OUT	(SYS_PORT.ROM),A | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(SLOT3),A | ||||
| 		EX	AF,AF' | ||||
| 		; | ||||
| 		PUSH	BC | ||||
| 		PUSH	DE | ||||
| 		PUSH	DE | ||||
| 		; | ||||
| 		LD	C,A | ||||
| 		RST_to_BIOS | ||||
| 		; | ||||
| 		POP	DE | ||||
| 		LD	B,D | ||||
| 		;LD	C,BIOS.ZX_MEMORY_MANAGER | ||||
| 		;RST_to_BIOS | ||||
| 		CALL	MANAGE_ZX_PAGES.FN_ENTRANCE.API | ||||
| 		JR	C,.loop_rst | ||||
| 		; | ||||
| 		POP	DE | ||||
| 		POP	BC | ||||
| 		; | ||||
| 		LD	D,0						; !HARDCODE â®çª  ¢å®¤  ¢ <20>‡“ ᯥªâà㬠 | ||||
| 		LD	H,A | ||||
| 		LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		LD	L,A | ||||
| 		LD	A,C | ||||
| 		EX	AF,AF' | ||||
| 		XOR	A | ||||
| 		JP	GOTO_SPECTRUM.FN | ||||
| 		; | ||||
| .loop_rst:	LD	BC,BIOS.REINIT.HARD_RESET | ||||
| 		RST_to_BIOS | ||||
| 		JR	.loop_rst | ||||
| 
 | ||||
| SCORPION: | ||||
|         CALL    _SET_CNF | ||||
| 	CALL    CNF_SC_312 | ||||
|         LD      L,1             ;FN_SYNC.INT_SCORP | ||||
| 	LD      DE,CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON | ||||
| 	JR      CONFIG_SET | ||||
| 
 | ||||
| PENTAGON: | ||||
|         CALL    _SET_CNF | ||||
| 	CALL    CNF_PN_320 | ||||
|         LD      L,2             ;FN_SYNC.INT_PENT | ||||
| 	LD      DE,CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON | ||||
| 	JR      CONFIG_SET | ||||
| PENTAGON_128:	;DI | ||||
| 		;LD	SP,SYS_PAGE.SYS_SP | ||||
| 		;LD	A,SYS_PAGE | ||||
| 		;OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,BIOS.RST_CONF.AY8910 | ||||
| 		LD	DE,2*256 + CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.SCORP_RESET	; !HARDCODE 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128 | ||||
| 		LD	BC,#FE*256 + %0000'0010	 | ||||
| 		JR	PREPARE_TO_START_ZX		 | ||||
| 
 | ||||
| PENTAGON512: | ||||
|         CALL    _SET_CNF | ||||
| 	CALL    CNF_PN_320 | ||||
|         LD      L,2             ;FN_SYNC.INT_PENT | ||||
| 	LD      DE,CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512 | ||||
| ;	JR      CONFIG_SET | ||||
| CONFIG_SET: | ||||
| 	PUSH    DE | ||||
| PENTAGON_512:	;DI | ||||
| 		;LD	SP,SYS_PAGE.SYS_SP | ||||
| 		;LD	A,SYS_PAGE | ||||
| 		;OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,BIOS.RST_CONF.AY8910 | ||||
| 		LD	DE,3*256 + CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512 + CNF_PORT.SCORP_RESET	; !HARDCODE 3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512 | ||||
| 		LD	BC,#FE*256 + %0000'0010	 | ||||
| 		JR	PREPARE_TO_START_ZX		 | ||||
| 
 | ||||
| 	EI | ||||
| 	HALT | ||||
| 	DI | ||||
| ; CONFIG_SET: | ||||
| ; 	PUSH    DE | ||||
| 
 | ||||
| 	IN 	A,(SLOT3) | ||||
| 	EX 	AF,AF' | ||||
| 	LD 	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD 	(SYS_PAGE.CONFIG_DE),DE | ||||
| 	;!FIXIT ¥áâì «¨ á¬ëá« ¤¥« âì ¤® FN_SYNC? | ||||
| 	 LD	A,(ZX_VARS.BORDER) | ||||
| 	 RRCA | ||||
| 	 RRCA | ||||
| 	 RRCA | ||||
| 	 AND	7 | ||||
| 	 OUT	(BorderColor),A | ||||
| 	; | ||||
| 	EX      AF,AF' | ||||
| 	OUT     (SLOT3),A | ||||
| ; 	EI | ||||
| ; 	HALT | ||||
| ; 	DI | ||||
| 
 | ||||
|         LD      A,L | ||||
|         LD      C,BIOS.FN_SYNC | ||||
| 	RST_to_BIOS | ||||
| ; 	IN 	A,(SLOT3) | ||||
| ; 	EX 	AF,AF' | ||||
| ; 	LD 	A,SYS_PAGE | ||||
| ; 	OUT	(SLOT3),A | ||||
| ; 	LD 	(SYS_PAGE.CONFIG_DE),DE | ||||
| ; 	;!FIXIT ¥áâì «¨ á¬ëá« ¤¥« âì ¤® FN_SYNC? | ||||
| ; 	 LD	A,(ZX_VARS.BORDER) | ||||
| ; 	 RRCA | ||||
| ; 	 RRCA | ||||
| ; 	 RRCA | ||||
| ; 	 AND	7 | ||||
| ; 	 OUT	(BorderColor),A | ||||
| ; 	; | ||||
| ; 	EX      AF,AF' | ||||
| ; 	OUT     (SLOT3),A | ||||
| 
 | ||||
| 	LD      HL,#4104                        ;!HARDCODE | ||||
| 	LD      E,0 | ||||
| 	LD      BC,256*4 + BIOS.LP_OPEN_S       ;!HARDCODE | ||||
| 	RST_to_BIOS | ||||
| ;         LD      A,L | ||||
| ;         LD      C,BIOS.FN_SYNC | ||||
| ; 	RST_to_BIOS | ||||
| 
 | ||||
| 	LD      HL,#5104                        ;!HARDCODE | ||||
| 	LD      E,0 | ||||
| 	LD      BC,256*4 + BIOS.LP_OPEN_S | ||||
| 	RST_to_BIOS | ||||
| ; 	LD      HL,#4104                        ;!HARDCODE | ||||
| ; 	LD      E,0 | ||||
| ; 	LD      BC,256*4 + BIOS.LP_OPEN_S       ;!HARDCODE | ||||
| ; 	RST_to_BIOS | ||||
| 
 | ||||
| 	POP     DE | ||||
| 	LD      A,E | ||||
| 	OUT     (SYS_PORT.ROM),A | ||||
| ; 	LD      HL,#5104                        ;!HARDCODE | ||||
| ; 	LD      E,0 | ||||
| ; 	LD      BC,256*4 + BIOS.LP_OPEN_S | ||||
| ; 	RST_to_BIOS | ||||
| 
 | ||||
| 	IM      1 | ||||
|         EI | ||||
| 	RET | ||||
| ; 	POP     DE | ||||
| ; 	LD      A,E | ||||
| ; 	OUT     (SYS_PORT.ROM),A | ||||
| 
 | ||||
| ; 	IM      1 | ||||
| ;         EI | ||||
| ; 	JP    CLS             ;!FIXIT 㦮 «¨? | ||||
| 
 | ||||
| SPRINTER_reset: | ||||
|         CALL    _SET_CNF | ||||
|         LD      BC,256*BIOS.REINIT.SOFT_RESET + BIOS.REINIT | ||||
| 	DI | ||||
| 	LD	A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON | ||||
| 	OUT	(SYS_PORT.ROM),A | ||||
|         LD      BC,BIOS.REINIT.SOFT_RESET | ||||
| 	JP_to_BIOS | ||||
| 
 | ||||
| _SET_CNF: | ||||
|         DI | ||||
| 	LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON | ||||
| 	OUT (SYS_PORT.ROM),A | ||||
|         RET | ||||
| ; _SET_CNF: | ||||
| ; 	;DI | ||||
| ; 	LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON | ||||
| ; 	OUT (SYS_PORT.ROM),A | ||||
| ; 	RET | ||||
| 
 | ||||
| CNF_SC_312: | ||||
| 	LD A,Port_VSYNC.SET_312L | ||||
| 	OUT (Port_VSYNC),A | ||||
| 	RET | ||||
| ; CNF_SC_312: | ||||
| ; 	LD A,Port_VSYNC.SET_312L | ||||
| ; 	OUT (Port_VSYNC),A | ||||
| ; 	RET | ||||
| 
 | ||||
| CNF_PN_320: | ||||
| 	LD A,Port_VSYNC.SET_320L | ||||
| 	OUT (Port_VSYNC),A | ||||
| 	RET | ||||
| ; CNF_PN_320: | ||||
| ; 	LD A,Port_VSYNC.SET_320L | ||||
| ; 	OUT (Port_VSYNC),A | ||||
| ; 	RET | ||||
|          | ||||
| ;	LD A,CNF_0 | ||||
| ;	OUT (SYS_PORT.ROM),A | ||||
|  | ||||
| @ -170,9 +170,3 @@ | ||||
|   ENDIF           | ||||
|  ENDM | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| ;  MACRO | ||||
| 
 | ||||
| ;  ENDM | ||||
| ; | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik