beta "free zx pages"
This commit is contained in:
		
							parent
							
								
									421eee63a9
								
							
						
					
					
						commit
						1a13295ae3
					
				| @ -1 +1 @@ | ||||
| Subproject commit 7e00c2aa909241367878004ad104b56abb907f80 | ||||
| Subproject commit 14a3896e7283495e2bf55cc81a995f5f1e88e539 | ||||
| @ -39,6 +39,196 @@ RST_CONF: | ||||
| 		JR	.INT_PLD | ||||
| ;--[] | ||||
| 
 | ||||
| 
 | ||||
| ;--[] | ||||
| .CUSTOM:	LD	C,A | ||||
| 		; ãáâ  ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢ | ||||
| 		LD	A,CNF_PORT.CNF_0 | ||||
| 		OUT	(SYS_PORT.ON),A | ||||
| 		LD	A,C | ||||
| 		; | ||||
| 		CP	#80 ;!FIXIT âãâ ⥯¥àì ¬®¦¥â «î¡®¥ ç¨á«® ¡ëâì ã áâ àëå ¯à®£ ; [ ] free zx pages | ||||
| 		JR	NC,.CHOOSE_CNF | ||||
| 		; only for old FLEX10K soft compatible | ||||
| .crutch:	LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		OUT	(C),A							; PAGE á ¯à®è¨¢ª®© | ||||
| 		LD	DE,(#C090)						; PLD-ID | ||||
| 		OUT	(C),B							; RET page | ||||
| ;--[]		;JR INT_PLD | ||||
| .INT_PLD:       ; only for old FLEX10K soft compatible | ||||
| 		LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(C),A | ||||
| 		 LD	(SYS_PAGE.CONFIG_BYTE),DE | ||||
| 		OUT	(C),B | ||||
| 		; | ||||
| 		LD	A,E		; config-byte | ||||
| 		CP	#FF | ||||
| 		LD	A,#80 | ||||
| 		JR	Z,.YES_CBL | ||||
| 		XOR	A | ||||
| .YES_CBL:	LD	BC,CBL.SYS_PORT | ||||
| 		OUT	(C),A | ||||
| 		; | ||||
| 		LD	A,E		; config-byte | ||||
| 		OR	#FE								;!HARDCODE  | ||||
| 		LD	BC,Port_All_Mode					        ; SYSTEM Spectrum/Sprinter | ||||
| 		OUT	(C),A | ||||
| 		; | ||||
| 		LD	A,#3C | ||||
| 		OUT	(FDC_93.DrvCTRL),A | ||||
| 		; ¢®ááâ  ¢«¨¢ ¥¬ ª àâã ¯®à⮢ | ||||
| 		LD	C,SLOT3 | ||||
| 		IN	B,(C) | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(C),A | ||||
| 		 LD	A,(SYS_PAGE.CONFIG_DE.CNF_PORT) | ||||
| 		OUT	(C),B | ||||
| 		OUT	(SYS_PORT.ON),A		 | ||||
| 		XOR	A | ||||
| 		RET | ||||
| 		; | ||||
| 	;[x] | ||||
| .CHOOSE_CNF:	; [ ] bug with "free zx pages" | ||||
| 		 LD	A,high ZX_MEM_PORT.Scorpion | ||||
| 		 IN	A,(ZX_MEM_PORT)		;!HARDCODE  | ||||
| 		 RRCA | ||||
| 		 LD	A,C | ||||
| 		 JR	C,.not_vRAM_page | ||||
| 		 ; | ||||
| 		 IN	A,(SLOT3) | ||||
| 		 CP	C | ||||
| 		 LD	A,C | ||||
| 		 JR	Z,.crutch | ||||
| 		; [x] | ||||
| .not_vRAM_page:	 CP	ACEX.Config_PG.Sp2000_SoftSetUp | ||||
| 		 JP	Z,.ReturnSoftReset | ||||
| 		 ; | ||||
| 		 CP	ACEX.Config_PG.Sp2000 | ||||
| 		 JR	Z,.INIT_ACEX | ||||
| 		 ; | ||||
| 		 CP	ACEX.Config_PG.Sp2000_SetUp | ||||
| 		 JR	Z,.SP2000 | ||||
| 		; | ||||
| 		; only for old FLEX10K soft compatible | ||||
| 		CP	ACEX.Config_PG.Sp97_1 | ||||
| 		LD	DE,ACEX.Config_ID.Sp97_1 | ||||
| 		JR	Z,.INT_PLD | ||||
| 		; | ||||
| 		CP	ACEX.Config_PG.Sp97_2 | ||||
| 		LD	DE,ACEX.Config_ID.Sp97_2 | ||||
| 		JR	Z,.INT_PLD | ||||
| 		; | ||||
| 		CP	ACEX.Config_PG.Sp97_AY | ||||
| 		LD	DE,ACEX.Config_ID.Sp97_AY | ||||
| 		JR	Z,.INT_PLD | ||||
| 		SCF | ||||
| 		RET | ||||
| 		; | ||||
| 		;[x] | ||||
| .INIT_ACEX:	DI | ||||
| 		; ãáâ  ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢ | ||||
| 		; LD	A,CNF_PORT.CNF_0 | ||||
| 		; OUT	(SYS_PORT.ON),A | ||||
| 		; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â | ||||
| 		IN	A,(SLOT3)		; á®åà ï¥¬ ®¬¥à ¢®âªã⮩ áâà ¨æë | ||||
| 		PUSH	AF | ||||
| 		LD	A,Spec_Page | ||||
| 		OUT	(SLOT3),A | ||||
| 		; ¯à®¢¥à塞 à §¬¥à ¡«®ª  á ª®ä®© ¨ ¯®«ãç ¥¬ áâà ¨æë ª®äë | ||||
| 		LD	HL,Spec_Page.bitstream_pages | ||||
| 		LD	A,B | ||||
| 		AND	A | ||||
| 		JR	Z,.INIT_ACEX.ReloadConfFromROM | ||||
| 		; | ||||
| 		CALL	EMM.GetMemBlkPages | ||||
| 		LD	A,B | ||||
| 		JR	C,.INIT_ACEX.ERROR | ||||
| 		CP	BitStream_SizeInPages+1	; ª®«¨ç¥á⢮ áâà ¨æ ¢ ªíè ¤«ï ¡¨áâਬ  ¯«îá ®¤  | ||||
| 		JR	NC,.INIT_ACEX.ERROR | ||||
| 		LD	A,(Spec_Page.bitstream_pages) | ||||
| 		INC	A | ||||
| 		JR	Z,.INIT_ACEX.ERROR	 | ||||
| 		; | ||||
| .INIT_ACEX.ReloadConfFromROM: | ||||
| 		; § ª¨¤ë¢ ¥¬ ¢ Spec_Page ¯à®£ã ¤«ï § «¨¢ª¨ ª®äë | ||||
| 		LD	HL,.INIT_ACEX.PROGRAM | ||||
| 		LD	DE,Spec_Page.init_acex | ||||
| 		LD	BC,.INIT_ACEX.PROGRAM.Size | ||||
| 		LDIR | ||||
| 		; ¥á«¨ ZF=0, â® ¯à®æ¥¤ãà  á¤¥« ¥â à¥á¥â á ¯¥à¥§ «¨¢ª®© ¨§ BIOS, ¨ ç¥ ¨§ Š<>˜ | ||||
| 		CALL	Spec_Page.init_acex | ||||
| 		LD	BC,BIOS.REINIT.HARD_RESET | ||||
| 		; | ||||
| 		;   ¢å®¤¥ ¢ BC ¯ à ¬¥âàë äãªæ¨¨ BIOS | ||||
| .INIT_ACEX.ifSoftreset: | ||||
| 		; á®åà ï¥¬ ¢®âªãâë¥ áâà ¨æë ¢ Spec_Page | ||||
| 		IN	A,(SLOT0) | ||||
| 		LD	E,A | ||||
| 		IN	A,(SLOT1) | ||||
| 		LD	D,A | ||||
| 		IN	A,(SLOT2) | ||||
| 		POP	HL			; ¢®ááâ  ¢«¨¢ ¥¬ ®¬¥à ¢®âªã⮩ áâà ¨æë | ||||
| 		LD	L,A | ||||
| 		LD	(Spec_Page.page_0),DE | ||||
| 		LD	(Spec_Page.page_2),HL | ||||
| 		; ¤®áâ ñ¬  ¤à¥á ¢®§¢à â  ¢ ¢ë§ë¢ îéãî äãªæ¨î ¨ á®åà ï¥¬ ¢ Spec_Page | ||||
| 		POP	DE | ||||
| 		LD	HL,RST_18_1.exit | ||||
| 		XOR	A | ||||
| 		SBC	HL,DE | ||||
| 		JR	NZ,.set_ret		; NZ - ¥á«¨ ¢ë§®¢ ¡ë« ¯® RST #18 | ||||
| 		POP	DE			; ¥á«¨ ¢ë§®¢ ¡ë« ¢ އ“ ¯® RST 8 | ||||
| 		INC	A | ||||
| .set_ret:	LD	(Spec_Page.RET_addr),DE | ||||
| 		; A=0 - SYS_PORT.ON | ||||
| 		; A=1 - SYS_PORT.OFF | ||||
| 		LD	(Spec_Page.Reload_Version),A | ||||
| 		LD	HL,0 | ||||
| 		ADD	HL,SP | ||||
| 		LD	(Spec_Page.Stack_Point),HL | ||||
| 		; “áâ  ¢«¨¢ ¥¬ ª«îç¨ | ||||
| 		LD	HL,Spec_Page.flag_R | ||||
| 		LD	(HL),"R" | ||||
| 		INC	HL | ||||
| 		LD	(HL),"S" | ||||
| 		INC	HL | ||||
| 		LD	(HL),"T" | ||||
| 		; | ||||
| 		; .. ... ... ..  | ||||
| 		;!TODO ᤥ« âì äãªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®äë, ¯¥à¥å¢ âã à¥á¥â . | ||||
| 		; *. ‚室 ¢ ¯®¤äãªæ¨î ⮫쪮 ç¥à¥§ RST 08 ¨«¨ #18 | ||||
| 		; *. ‘®åà ¨âì ¢á¥ áâà ¨æë ¯®«ì§®¢ â¥«ï ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â  à¥á¥â  | ||||
| 		; *. „®áâ âì á® á⥪   ¤à¥á ¢®§¢à â  ¨ á®åà ¨âì ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â  à¥á¥â  | ||||
| 		; *. ‘®åà ¨âì ªã¤ -¨¡ã¤ì § ç¥¨¥ á⥪  | ||||
| 		; * | ||||
| 		; .. ... ... ..  | ||||
| 		;LD	BC,BIOS.REINIT.HARD_RESET | ||||
| 		JP_to_BIOS | ||||
| 		; | ||||
| .ReturnSoftReset: | ||||
| 		DI | ||||
| 		; ãáâ  ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢ | ||||
| 		LD	A,CNF_PORT.CNF_0 | ||||
| 		OUT	(SYS_PORT.ON),A | ||||
| 		; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â | ||||
| 		IN	A,(SLOT3)						; á®åà ï¥¬ ®¬¥à ¢®âªã⮩ áâà ¨æë | ||||
| 		PUSH	AF | ||||
| 		LD	A,Spec_Page | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	BC,BIOS.REINIT.SOFT_RESET | ||||
| 		JR	.INIT_ACEX.ifSoftreset | ||||
| 		; | ||||
| 		;;; | ||||
| .INIT_ACEX.ERROR: | ||||
| 		POP	AF | ||||
| 		OUT	(SLOT3),A | ||||
| 		SCF | ||||
| 		RET | ||||
| ; | ||||
| ;--[] | ||||
| .ACC_OFF:	LD	BC,Port_All_Mode | ||||
| 		IN	A,(C) | ||||
| @ -52,182 +242,6 @@ RST_CONF: | ||||
| 		OUT	(C),A | ||||
| 		RET | ||||
| ;--[] | ||||
| 
 | ||||
| ;--[] | ||||
| .CUSTOM:	 | ||||
| 	CP	#80 ;!FIXIT âãâ ⥯¥àì ¬®¦¥â «î¡®¥ ç¨á«® ¡ëâì ã áâ àëå ¯à®£ ; [ ] free zx pages | ||||
| 	JR	NC,.CHOOSE_CNF | ||||
|         ; only for old FLEX10K soft compatible | ||||
| 	LD	C,SLOT3 | ||||
| 	IN	B,(C) | ||||
| 	OUT	(C),A							; PAGE á ¯à®è¨¢ª®© | ||||
| 	LD	DE,(#C090)						; PLD-ID | ||||
| 	OUT	(C),B							; RET page | ||||
| ;--[]	;JR INT_PLD | ||||
| .INT_PLD:       ; only for old FLEX10K soft compatible | ||||
|         LD      C,SLOT3 | ||||
| 	IN      B,(C) | ||||
| 	 LD     A,SYS_PAGE | ||||
| 	 OUT    (C),A | ||||
| 	 LD     (SYS_PAGE.CONFIG_BYTE),DE | ||||
| 	OUT     (C),B | ||||
| 
 | ||||
|         LD	A,E		; config-byte | ||||
| 	CP	#FF | ||||
| 	LD	A,#80 | ||||
| 	JR	Z,.YES_CBL | ||||
| 	XOR	A | ||||
| .YES_CBL: | ||||
| 	LD BC,CBL.SYS_PORT | ||||
| 	OUT (C),A | ||||
| 
 | ||||
| 	LD A,E		; config-byte | ||||
| 
 | ||||
| 	OR #FE								;!HARDCODE  | ||||
| 	LD BC,Port_All_Mode					        ; SYSTEM Spectrum/Sprinter | ||||
| 	OUT (C),A | ||||
| 
 | ||||
| 	LD A,#3C | ||||
| 	OUT (FDC_93.DrvCTRL),A | ||||
| 
 | ||||
| 	XOR A | ||||
| 	RET | ||||
| 	; | ||||
| 	;[x] | ||||
| .CHOOSE_CNF: | ||||
| 	; [ ] bug with "free zx pages" | ||||
| 	 LD	C,A | ||||
| 	 IN	A,(SLOT3) | ||||
| 	 CP	C | ||||
| 	 LD	A,C | ||||
| 	 JR	Z,.INT_PLD | ||||
|         ; [x] | ||||
|          CP	ACEX.Config_PG.Sp2000_SoftSetUp | ||||
| 	 JP	Z,.ReturnSoftReset | ||||
| 	 ; | ||||
|          CP	ACEX.Config_PG.Sp2000 | ||||
|          JR	Z,.INIT_ACEX | ||||
| 	 ; | ||||
| 	 CP	ACEX.Config_PG.Sp2000_SetUp | ||||
| 	 JR	Z,.SP2000 | ||||
|         ; | ||||
| 
 | ||||
|         ; only for old FLEX10K soft compatible | ||||
| 	CP ACEX.Config_PG.Sp97_1 | ||||
| 	LD DE,ACEX.Config_ID.Sp97_1 | ||||
| 	JR Z,.INT_PLD | ||||
| 	CP ACEX.Config_PG.Sp97_2 | ||||
| 	LD DE,ACEX.Config_ID.Sp97_2 | ||||
| 	JR Z,.INT_PLD | ||||
| 	CP ACEX.Config_PG.Sp97_AY | ||||
| 	LD DE,ACEX.Config_ID.Sp97_AY | ||||
| 	JR Z,.INT_PLD | ||||
| 	SCF | ||||
| 	RET | ||||
| 	; | ||||
| 	;[x] | ||||
| .INIT_ACEX: | ||||
| 	DI | ||||
| 	; ãáâ  ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢ | ||||
| 	LD	A,CNF_PORT.CNF_0 | ||||
| 	OUT	(SYS_PORT.ON),A | ||||
| 	; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â | ||||
| 	IN	A,(SLOT3)						; á®åà ï¥¬ ®¬¥à ¢®âªã⮩ áâà ¨æë | ||||
| 	PUSH	AF | ||||
| 	LD	A,Spec_Page | ||||
| 	OUT	(SLOT3),A | ||||
| 	; ¯à®¢¥à塞 à §¬¥à ¡«®ª  á ª®ä®© ¨ ¯®«ãç ¥¬ áâà ¨æë ª®äë | ||||
| 	LD	HL,Spec_Page.bitstream_pages | ||||
| 	LD	A,B | ||||
| 	AND	A | ||||
| 	JR	Z,.INIT_ACEX.ReloadConfFromROM | ||||
| 	; | ||||
| 	CALL	EMM.GetMemBlkPages | ||||
| 	LD	A,B | ||||
| 	JR	C,.INIT_ACEX.ERROR | ||||
| 	CP	BitStream_SizeInPages+1	; ª®«¨ç¥á⢮ áâà ¨æ ¢ ªíè ¤«ï ¡¨áâਬ  ¯«îá ®¤  | ||||
| 	JR	NC,.INIT_ACEX.ERROR | ||||
| 	LD	A,(Spec_Page.bitstream_pages) | ||||
| 	INC	A | ||||
| 	JR	Z,.INIT_ACEX.ERROR	 | ||||
| 	; | ||||
| .INIT_ACEX.ReloadConfFromROM: | ||||
| 	; § ª¨¤ë¢ ¥¬ ¢ Spec_Page ¯à®£ã ¤«ï § «¨¢ª¨ ª®äë | ||||
| 	LD	HL,.INIT_ACEX.PROGRAM | ||||
| 	LD	DE,Spec_Page.init_acex | ||||
| 	LD	BC,.INIT_ACEX.PROGRAM.Size | ||||
| 	LDIR | ||||
| 	; ¥á«¨ ZF=0, â® ¯à®æ¥¤ãà  á¤¥« ¥â à¥á¥â á ¯¥à¥§ «¨¢ª®© ¨§ BIOS, ¨ ç¥ ¨§ Š<>˜ | ||||
| 	CALL	Spec_Page.init_acex | ||||
| 	LD	BC,BIOS.REINIT.HARD_RESET | ||||
| 	; | ||||
| 	;   ¢å®¤¥ ¢ BC ¯ à ¬¥âàë äãªæ¨¨ BIOS | ||||
| .INIT_ACEX.ifSoftreset: | ||||
| 	; á®åà ï¥¬ ¢®âªãâë¥ áâà ¨æë ¢ Spec_Page | ||||
| 	IN	A,(SLOT0) | ||||
| 	LD	E,A | ||||
| 	IN	A,(SLOT1) | ||||
| 	LD	D,A | ||||
| 	IN	A,(SLOT2) | ||||
| 	POP	HL			; ¢®ááâ  ¢«¨¢ ¥¬ ®¬¥à ¢®âªã⮩ áâà ¨æë | ||||
| 	LD	L,A | ||||
| 	LD	(Spec_Page.page_0),DE | ||||
| 	LD	(Spec_Page.page_2),HL | ||||
| 	; ¤®áâ ñ¬  ¤à¥á ¢®§¢à â  ¢ ¢ë§ë¢ îéãî äãªæ¨î ¨ á®åà ï¥¬ ¢ Spec_Page | ||||
| 	POP	DE | ||||
| 	LD	HL,RST_18_1.exit | ||||
| 	XOR	A | ||||
| 	SBC	HL,DE | ||||
| 	JR	NZ,.set_ret			; NZ - ¥á«¨ ¢ë§®¢ ¡ë« ¯® RST #18 | ||||
| 	POP	DE			; ¥á«¨ ¢ë§®¢ ¡ë« ¢ އ“ ¯® RST 8 | ||||
| 	INC	A | ||||
| .set_ret: | ||||
| 	LD	(Spec_Page.RET_addr),DE | ||||
| 	; A=0 - SYS_PORT.ON | ||||
| 	; A=1 - SYS_PORT.OFF | ||||
| 	LD	(Spec_Page.Reload_Version),A | ||||
| 	LD	HL,0 | ||||
| 	ADD	HL,SP | ||||
| 	LD	(Spec_Page.Stack_Point),HL | ||||
| 	; “áâ  ¢«¨¢ ¥¬ ª«îç¨ | ||||
| 	LD	HL,Spec_Page.flag_R | ||||
| 	LD	(HL),"R" | ||||
| 	INC	HL | ||||
| 	LD	(HL),"S" | ||||
| 	INC	HL | ||||
| 	LD	(HL),"T" | ||||
| 	; | ||||
| 	; .. ... ... ..  | ||||
| 	;!TODO ᤥ« âì äãªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®äë, ¯¥à¥å¢ âã à¥á¥â . | ||||
| 	; *. ‚室 ¢ ¯®¤äãªæ¨î ⮫쪮 ç¥à¥§ RST 08 ¨«¨ #18 | ||||
| 	; *. ‘®åà ¨âì ¢á¥ áâà ¨æë ¯®«ì§®¢ â¥«ï ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â  à¥á¥â  | ||||
| 	; *. „®áâ âì á® á⥪   ¤à¥á ¢®§¢à â  ¨ á®åà ¨âì ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â  à¥á¥â  | ||||
| 	; *. ‘®åà ¨âì ªã¤ -¨¡ã¤ì § ç¥¨¥ á⥪  | ||||
| 	; * | ||||
| 	; .. ... ... ..  | ||||
| 	;LD	BC,BIOS.REINIT.HARD_RESET | ||||
| 	JP_to_BIOS | ||||
| 	; | ||||
| .ReturnSoftReset: | ||||
| 	DI | ||||
| 	; ãáâ  ¢«¨¢ ¥¬ ã«¥¢ãî ª àâã ¯®à⮢ | ||||
| 	LD	A,CNF_PORT.CNF_0 | ||||
| 	OUT	(SYS_PORT.ON),A | ||||
| 	; ¨ â ª ¯®ïâ® çâ® ¤¥« ¥â | ||||
| 	IN	A,(SLOT3)						; á®åà ï¥¬ ®¬¥à ¢®âªã⮩ áâà ¨æë | ||||
| 	PUSH	AF | ||||
| 	LD	A,Spec_Page | ||||
| 	OUT	(SLOT3),A | ||||
| 	; | ||||
| 	LD	BC,BIOS.REINIT.SOFT_RESET | ||||
| 	JR	.INIT_ACEX.ifSoftreset | ||||
| 	; | ||||
| 	;;; | ||||
| .INIT_ACEX.ERROR: | ||||
| 	POP	AF | ||||
| 	OUT	(SLOT3),A | ||||
| 	SCF | ||||
| 	RET | ||||
| ; | ||||
| .INIT_ACEX.PROGRAM: | ||||
| 	DISP	Spec_Page.init_acex | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik