уже лучше
This commit is contained in:
		
							parent
							
								
									c7fd876f91
								
							
						
					
					
						commit
						65bc8dbb49
					
				| @ -1 +1 @@ | ||||
| Subproject commit 753caadb020b3d55971aced21723c84a72bf65df | ||||
| Subproject commit 403d6e2b52dadc50e99a1eac442cedd98e19d0a5 | ||||
| @ -430,7 +430,7 @@ TAB_FNS: | ||||
|         DB      high READ_PORTS     | ||||
|         DB      high    FN_RESERVED | ||||
|         DB      high GOTO_SPEC      | ||||
|         DB      high    FN_RESERVED | ||||
|         DB      high ZX_MEMORY_MANAGER | ||||
|         DB      high REINIT       | ||||
|         DB      high    FN_RESERVED | ||||
|         DB      high FN_VERSION     | ||||
|  | ||||
| @ -647,12 +647,10 @@ SET_PORTS: | ||||
| 	  PUSH	AF | ||||
| 	  POP	DE | ||||
| 	  DI | ||||
| 	  LD	A,CNF_PORT.CNF_0 + ROM.BIOS | ||||
| 	  OUT	(SYS_PORT.ROM),A | ||||
| 	  CALL	DOS_ON | ||||
| 	 ; | ||||
| 	;  LD	A,CNF_PORT.CNF_0 + ROM.BIOS | ||||
| 	;  OUT	(SYS_PORT.ROM),A | ||||
| 	 LD	A,CNF_PORT.CNF_0 + ROM.BIOS | ||||
| 	 OUT	(SYS_PORT.ROM),A | ||||
| 	 ; | ||||
| 	 LD	C,SLOT2                                                 ; ¯®«ãç¨âì áâà ¨æã | ||||
| 	 IN	D,(C) | ||||
|  | ||||
| @ -753,9 +753,6 @@ POST_5_ERROR: | ||||
| 	 ; | ||||
| 	 LD	A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON | ||||
| 	 LD	(SYS_PAGE.CONFIG_DE),A | ||||
| 	 ; | ||||
| 	 XOR	A					;!HARDCODE zx page number | ||||
| 	 OUT	(SLOT3),A | ||||
| 	; | ||||
| 	ENDMODULE | ||||
| ;-----------------------------------------------------------------------; | ||||
| @ -772,8 +769,6 @@ POST_5_ERROR: | ||||
| ;-----------------------------------------------------------------------; | ||||
| 	MODULE	Reset_Handler | ||||
| start:		DI | ||||
| 		IN	A,(SLOT3) | ||||
| 		PUSH	AF | ||||
| ;----[¯¥à¥å¢ â soft reset #EE port]----- | ||||
| Check_EE_Port:	LD	A,ACEX.RET_PORT | ||||
| 		LD	B,0 | ||||
| @ -834,7 +829,7 @@ Check_Spec_Page: | ||||
| 		; | ||||
| ;--------------------------------------- | ||||
| No_Reset_handlers: | ||||
| 		POP	AF | ||||
| 		XOR	A					;!HARDCODE zx page number | ||||
| 		OUT	(SLOT3),A | ||||
| 	ENDMODULE | ||||
| ;-----------------------------------------------------------------------; | ||||
| @ -1022,12 +1017,12 @@ PORTS_INIT: | ||||
| 		LD	A,CNF_PORT.CNF_3+ROM.BIOS | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		OUT	(FDC_93.DrvCTRL),A | ||||
| 		PUSH	HL | ||||
| 		POP	HL | ||||
| 		LD	A,#3C							;!HARDCODE ª®¬ ¤  ¤«ï ‚ƒ93 | ||||
| 		PUSH	HL						; ¤«ï § ¤¥à¦ª¨ | ||||
| 		POP	HL						; ¤«ï § ¤¥à¦ª¨ | ||||
| 		LD	A,#3C						;!HARDCODE ª®¬ ¤  ¤«ï ‚ƒ93 | ||||
| 		OUT	(FDC_93.DrvCTRL),A | ||||
| 		PUSH	HL | ||||
| 		POP	HL | ||||
| 		PUSH	HL						; ¤«ï § ¤¥à¦ª¨ | ||||
| 		POP	HL						; ¤«ï § ¤¥à¦ª¨ | ||||
| 		XOR	A | ||||
| 		OUT	(FDC_93.Command),A | ||||
| 		; ‚몫îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª  | ||||
| @ -1037,11 +1032,11 @@ PORTS_INIT: | ||||
| 		LD	A,IDE.Chanel.Primary | ||||
| 		OUT	(IDE.Chanel.Set),A | ||||
| 		LD	BC,#7FFD | ||||
| 		XOR	A | ||||
| 		OUT	(C),A							; BASIC_128 mode | ||||
| 		LD	A,#10 | ||||
| 		OUT	(C),A						; BASIC_48 mode | ||||
| 		LD	B,#1F | ||||
| 		INC	A | ||||
| 		OUT	(C),A							; RAM-0 mode !!! | ||||
| 		LD	A,1 | ||||
| 		OUT	(C),A						; RAM-0 mode !!! | ||||
| 	; ®ç¨á⪠ ¡ãä¥à®¢ ª« ¢¨ âãàë ¨ ¬ëè¨ ¢ SIO | ||||
| 		CALL	.clean_kbd_buf | ||||
| 		JR	.clean_mouse_buf | ||||
| @ -1177,7 +1172,7 @@ SW_ROM:		;!FIXIT assert with ROM | ||||
| ; | ||||
| ;----------------------------------------------------------------------; | ||||
| 	_mInfoBLOCK #3D00-$,#FF | ||||
| DOS_ON:	NOP | ||||
| DOS_ON:	NOP	;!TODO à ¡®â ¥â ¯à¨ #7FFD[4] = 1. Š ª-â® ã§ ¢ âì § ç¥¨¥ 7FFD ¨ ¬¥ïâì? | ||||
| 	RET | ||||
| ;*************************************** | ||||
| 
 | ||||
|  | ||||
| @ -204,6 +204,7 @@ INIT_SYS_ALL: | ||||
| 	LD	L,A | ||||
| 	LD	(SYS_PAGE.CURRENT_DIR_SEC_L - #4000),HL | ||||
| 	LD	(SYS_PAGE.CURRENT_DIR_SEC_H - #4000),HL | ||||
| 	LD	(SYS_PAGE.Block_IDs - #4000),HL | ||||
| 	DEC	A | ||||
| 	LD	(SYS_PAGE.CURRENT_HDD - #4000),A | ||||
| 	LD	(SYS_PAGE.CURRENT_DIR_DRIVE - #4000),A | ||||
| @ -299,11 +300,11 @@ INIT_CONFIG_ALL: | ||||
| 	LD DE,CNF_PORT.CNF_0 + ROM.BIOS | ||||
| 	LD (SYS_PAGE.CONFIG_DE - #4000),DE | ||||
| 
 | ||||
| 	LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000				; 㡨âì ¢á¥ § ¤ ç¨ | ||||
| 	LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000 | ||||
| 	LD BC,_ZX_TASK - 1 | ||||
| 	LD (HL),0 | ||||
| 	LDIR | ||||
| 	; LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000				; 㡨âì ¢á¥ § ¤ ç¨ | ||||
| 	; LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000 | ||||
| 	; LD BC,_ZX_TASK - 1 | ||||
| 	; LD (HL),0 | ||||
| 	; LDIR | ||||
| 
 | ||||
| 	EX AF,AF' | ||||
| 	OUT (SLOT2),A | ||||
|  | ||||
| @ -382,7 +382,9 @@ EXIT_SETUP:	CALL	INT_OFF | ||||
| 		; | ||||
| .Set_Page41:	CALL	ZXMODE_SETUP.Set_Page41 | ||||
| .vROMs_Installed: | ||||
| 		CALL	MANAGE_ZX_PAGES.GET_SCORP_RAM			;!TODO  áâà ¨¢ âì ¢ BIOS zx mode | ||||
| 		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 | ||||
| @ -1707,11 +1709,14 @@ ZXMODE_SETUP:	IN	A,(SLOT3) | ||||
| 		 LD	R,A | ||||
| 		; | ||||
| 		; Load ZX ROM's | ||||
| 		LD A,ROM.EXTENSION | ||||
| 		OUT (SYS_PORT.ROM),A | ||||
| 		 CALL	MANAGE_ZX_PAGES.FREE_vMEMORY	;!FIXIT ¥ â  áâà ¨æ  ¢ SLOT3	; [ ] free zx pages! | ||||
| 		XOR	A				;LD A,ROM.BIOS | ||||
| 		OUT (SYS_PORT.ROM),A | ||||
| 		 ;LD A,ROM.EXTENSION | ||||
| 		 ;OUT (SYS_PORT.ROM),A | ||||
| 		 ; CALL	MANAGE_ZX_PAGES.FREE_vMEMORY	;!FIXIT ¥ â  áâà ¨æ  ¢ SLOT3	; [ ] free zx pages! | ||||
| 		 ;XOR	A				;LD A,ROM.BIOS | ||||
| 		 ;OUT (SYS_PORT.ROM),A | ||||
| 		 XOR	A | ||||
| 		 LD	BC,64*256 + BIOS.ZX_MEMORY_MANAGER  ; [ ] free zx pages! HARDCODE | ||||
| 		 RST	ToBIOS_18 | ||||
| 		; | ||||
| 		LD	B,3				; !HARDCODE zx-rom number of pages | ||||
| 		CALL	EMM.GetMem | ||||
| @ -1741,12 +1746,15 @@ ZXMODE_SETUP:	IN	A,(SLOT3) | ||||
| 		LDDR					; § ç¨é ¥¬ | ||||
| 		EX	DE,HL | ||||
| 		; | ||||
| 		LD	A,SYS_PORT.EXTENSION | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		 JP	MANAGE_ZX_PAGES.INIT_vROM | ||||
| 		XOR	A	;LD	A,SYS_PORT.BIOS | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		RET | ||||
| 		; LD	A,SYS_PORT.EXTENSION | ||||
| 		; OUT	(SYS_PORT.ROM),A | ||||
| 		;  JP	MANAGE_ZX_PAGES.INIT_vROM | ||||
| 		; XOR	A	;LD	A,SYS_PORT.BIOS | ||||
| 		; OUT	(SYS_PORT.ROM),A | ||||
| 		 XOR	A | ||||
| 		 LD	BC,128*256 + BIOS.ZX_MEMORY_MANAGER  ; [ ] free zx pages! HARDCODE | ||||
| 		 JP	ToBIOS_18 | ||||
| 		;RET | ||||
| ; | ||||
| ;--------------------[copy zx-roms to zx-pages]-----------------; | ||||
| ; SLOT0 - ROM 8, sys_port - on. | ||||
| @ -1780,7 +1788,7 @@ init_zx_roms:	DI | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		CALL	MANAGE_ZX_PAGES.INIT_vROM | ||||
| 		; Š®¯¨à㥬 ®¡à §ë ZX-ROM ¨§ <20>‡“ ¢ áâà ¨æë vROM | ||||
| 		INC	A				; !HARDCODE LD A,2 | ||||
| 		LD	A,2				; !HARDCODE  | ||||
| 		LD	BC,+(3*2)*256 + SLOT3		; !HARDCODE B = (zx-rom number of pages)*2 | ||||
| 		LD	HL,memBUFFER.Shared + 1 | ||||
| .loop:		OUTI | ||||
| @ -1869,7 +1877,7 @@ init_zx_roms:	DI | ||||
| .init_41h:	; § ¡¨âì FF- ¬¨ | ||||
| 		LD	HL,#C000 | ||||
| 		LD	DE,#C001 | ||||
| 		LD	BC,#3FFF | ||||
| 		LD	BC,#3FFF - 2 | ||||
| 		LD	(HL),C | ||||
| 		LDIR | ||||
| 		; ‡ £«ã誠 ¤«ï áâà ¨æë #41 | ||||
|  | ||||
| @ -289,85 +289,6 @@ ZX_MEMORY: | ||||
|  IF	FREE_ZX_PAGES | ||||
|  MODULE	MANAGE_ZX_PAGES | ||||
| 
 | ||||
| ;!FIXIT | ||||
| ;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------; | ||||
| ;¢å®¤:	ॣ B:	    0 - § à¥§¥à¢¨à®¢ ® | ||||
| ;		    1 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon  48k. 3 áâà ¨æë | ||||
| ;		    2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k. 2+6 áâà ¨æë | ||||
| ;		    3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k. 2+30 áâà ¨æë | ||||
| ;		    4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë | ||||
| ;		5..15 - § à¥§¥à¢¨à®¢ ë | ||||
| ; | ||||
| ;		   16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨¨æ¨ «¨§¨à®¢ ëå vROM ¨ VRAM | ||||
| ;	       17..31 - § à¥§¥à¢¨à®¢ ë | ||||
| ; | ||||
| ;		   32 - § à¥§¥à¢¨à®¢ ® | ||||
| ;		   33 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Spectrum  48k ¨ ¨¨â 2-å áâà ¨æ vROM | ||||
| ;		   34 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨¨â 3-å áâà ¨æ vROM | ||||
| ;		   35 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k ¨ ¨¨â 3-å áâà ¨æ vROM | ||||
| ;		   36 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k ¨ ¨¨â 3-å áâà ¨æ vROM | ||||
| ;	       33..63 - § à¥§¥à¢¨à®¢ ë | ||||
| ; | ||||
| ;		   64 - ®á¢®¡®¤¨âì à ¬¡«®ª¨ vROM ¨ vRAM | ||||
| ;	      65..127 - § à¥§¥à¢¨à®¢ ë | ||||
| ; | ||||
| ;		  128 - ¨¨æ¨ «¨§¨à®¢ âì ᢮©  ¡®à áâà ¨æ vROM | ||||
| ; | ||||
| ;	ॣ HL:	¯à¨ ॣ B[7]=1  ¤à¥á áâà ¨æ (11 èâ): | ||||
| ;		        byte1 - RAM block ID, byte2..11 - áâà ¨æë ¤«ï vROM - ZXSlot: 1,2,3(=0),à áè¨à¥ ï | ||||
| ;	ॣ A:	®¬¥à ZX TASK ¯®ª  çâ® ¢á¥£¤  ®«ì!!! | ||||
| ;¢ë室:	CF = 0: HL - ®¬¥à  à ¬¡«®ª®¢ ¤«ï ०¨¬®¢ 0..16. H=vRAM, L=vROM | ||||
| ;	CF = 1:  A - ®¬¥à ®è¨¡ª¨ | ||||
| ; | ||||
| ;¥á«¨ áâíª  å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥à뢠¨ï¬¨ | ||||
| FN_ENTRANCE:	;!TODO	A - TASK NUMBER | ||||
| 		AND	A | ||||
| 		LD	A,BIOS.Error.NotSupported | ||||
| 		SCF | ||||
| 		RET	Z | ||||
| 		; | ||||
| 		EXX | ||||
| 		 LD	C,SLOT3 | ||||
| 		 IN	B,(C) | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(C),A | ||||
| 		EXX | ||||
| 		; | ||||
| 		LD	(SYS_PAGE.SP_SAVE),SP | ||||
| 		LD	SP,SYS_PAGE.SYS_SP	 | ||||
| 		LD	DE,.EXIT | ||||
| 		PUSH	DE | ||||
| 		;-----------------------------------; | ||||
| 		; Sub FN #8x  | ||||
| 		BIT	7,B | ||||
| 		JR	NZ,INIT_vROM		; B = 128 | ||||
| 		; Sub FN #4x  | ||||
| 		BIT	6,B | ||||
| 		JR	NZ,FREE_vMEMORY		; B = 64 | ||||
| 		; Sub FN #1x  | ||||
| 		JR	NZ,GET_RAMBLOCK_IDs	; B = 16 | ||||
| 		; Sub FN #0x  | ||||
| 	;	DEC	B | ||||
| 	;	JR	Z,			; B = 1 | ||||
| 	;	DEC	B | ||||
| 	;	JR	Z,			; B = 2 | ||||
| 	;	DEC	B | ||||
| 	;	JR	Z,			; B = 3 | ||||
| 	;	DEC	B | ||||
| 	;	JR	Z,			; B = 4 | ||||
| 		;-----------------------------------; | ||||
| 		LD	A,BIOS.Error.InvalidSubFunction | ||||
| 		SCF | ||||
| 		RET | ||||
| 		; | ||||
| .EXIT:		LD	SP,(SYS_PAGE.SP_SAVE) | ||||
| 		EXX | ||||
| 		 OUT	(C),B | ||||
| 		EXX | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ; <20>¥ ¯®àâ¨âì DE | ||||
| ;‚室:	A - TASK NUMBER | ||||
| @ -381,51 +302,51 @@ FN_ENTRANCE:	;!TODO	A - TASK NUMBER | ||||
| ; 		 RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| FREE_vRAM:	LD	A,(SYS_PAGE.Block_ID.vRAM) | ||||
| 		OR	A | ||||
| ;‚•Ž„:	HL - ᯨ᮪ áâà ¨æ | ||||
| ;	 E - 0 = 128kb, 1 = 512kb | ||||
| INIT_vRAM:	XOR	A | ||||
| .set_1ffd:	LD	BC,#1FFD | ||||
| 		OUT	(C),A | ||||
| 		; set 128 | ||||
| 		LD	B,#7F | ||||
| 		LD	D,%0000'0000 | ||||
| 		CALL	SET_7FFD | ||||
| 		; | ||||
| 		XOR	A | ||||
| 		OUT	(C),A | ||||
| 		BIT	3,E	; 128/512 | ||||
| 		RET	Z | ||||
| 		; set 128 + 384 | ||||
| 		;LD	A,SYS_PORT.CNF_512 | ||||
| 		;OUT	(SYS_PORT.ROM),A | ||||
| 		; | ||||
| 		LD	D,%0100'0000 | ||||
| 		CALL	SET_7FFD | ||||
| 		LD	D,%1000'0000 | ||||
| 		CALL	SET_7FFD | ||||
| 		LD	D,%1100'0000 | ||||
| 		CALL	SET_7FFD | ||||
| 		; | ||||
| 		XOR	A | ||||
| 		LD	(SYS_PAGE.Block_ID.vRAM),A | ||||
| 		LD	C,BIOS.FreeMem | ||||
| 		JP	ToBIOS_FromEXT | ||||
| ;--------------; | ||||
| FREE_vMEMORY:	CALL	FREE_vRAM | ||||
| 		;JR	FREE_vROM | ||||
| ;--------------; | ||||
| FREE_vROM:	LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		OR	A | ||||
| 		RET	Z | ||||
| 		XOR	A | ||||
| 		LD	(SYS_PAGE.Block_ID.vROM),A | ||||
| 		LD	C,BIOS.FreeMem | ||||
| 		RST_to_BIOS | ||||
| ;--------------; | ||||
| RES_FLAG_ZXvROM:			; ¥ ¤®«¦® ¯®àâ¨âì DE | ||||
| 		EX	AF,AF' | ||||
| 		 IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,Spec_Page | ||||
| 		OUT	(SLOT3),A | ||||
| 		XOR	A | ||||
| 		LD	(Spec_Page.flag_Z),A | ||||
| 		LD	(Spec_Page.flag_X),A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		OUT	(C),A | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	A - TASK NUMBER | ||||
| ;‚ë室:	H - vRAM block ID | ||||
| ;	L - vROM block ID | ||||
| GET_RAMBLOCK_IDs: | ||||
| 		LD	HL,(SYS_PAGE.Block_IDs) | ||||
| ;‚•Ž„:	HL - ᯨ᮪ áâà ¨æ | ||||
| ;	 D -  ç «ì®¥ § ç¥¨¥ ¤«ï 7FFD | ||||
| SET_7FFD:	LD	A,(HL) | ||||
| 		OUT	(C),D | ||||
| 		OUT	(SLOT3),A | ||||
| 		INC	HL | ||||
| 		INC	D | ||||
| 		BIT	3,D	; ª®«¨ç¥á⢮ áâà ¨æ | ||||
| 		JR	Z,SET_7FFD | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	HL - ¡ãä¥à áâà ¨æ (SLOT1..SLOT2)   ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  11 èâ.) | ||||
| ;	<09>¥à¢ë© ¡ ©â ᯨ᪠ - RAM BLOCK ID. „ «¥¥ ª ª 㣮¤® ®¬¥à  | ||||
| @ -500,55 +421,133 @@ INIT_vROM:	LD	A,(HL) | ||||
| .PORTS.Size	EQU	$-.PORTS | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;!FIXIT | ||||
| ;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------; | ||||
| ;¢å®¤:	ॣ B: | ||||
| ; FN 0x | ||||
| ;		    0 - § à¥§¥à¢¨à®¢ ® | ||||
| ;		    1 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon  48k. 3 áâà ¨æë | ||||
| ;		    2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k. 2+6 áâà ¨æë | ||||
| ;		    3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k. 2+30 áâà ¨æë | ||||
| ;		    4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë | ||||
| ;		5..15 - § à¥§¥à¢¨à®¢ ë | ||||
| ; FN 1x | ||||
| ;		   16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨¨æ¨ «¨§¨à®¢ ëå vROM ¨ VRAM | ||||
| ;	       17..31 - § à¥§¥à¢¨à®¢ ë | ||||
| ; FN 2x | ||||
| ;		   32 - § à¥§¥à¢¨à®¢ ® | ||||
| ;		   33 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Spectrum  48k ¨ ¨¨â 2-å áâà ¨æ vROM | ||||
| ;		   34 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨¨â 3-å áâà ¨æ vROM | ||||
| ;		   35 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k ¨ ¨¨â 3-å áâà ¨æ vROM | ||||
| ;		   36 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k ¨ ¨¨â 3-å áâà ¨æ vROM | ||||
| ;	       33..63 - § à¥§¥à¢¨à®¢ ë | ||||
| ; FN 4x | ||||
| ;		   64 - ®á¢®¡®¤¨âì à ¬¡«®ª¨ vROM ¨ vRAM | ||||
| ;	      65..127 - § à¥§¥à¢¨à®¢ ë | ||||
| ; FN 8x | ||||
| ;		  128 - ¨¨æ¨ «¨§¨à®¢ âì ᢮©  ¡®à áâà ¨æ vROM | ||||
| ; | ||||
| ;	ॣ HL:	¯à¨ ॣ B[7]=1  ¤à¥á áâà ¨æ (11 èâ): | ||||
| ;		        byte1 - RAM block ID, byte2..11 - áâà ¨æë ¤«ï vROM - ZXSlot: 1,2,3(=0),à áè¨à¥ ï | ||||
| ;	ॣ A:	®¬¥à ZX TASK ¯®ª  çâ® ¢á¥£¤  ®«ì!!! | ||||
| ;¢ë室:	CF = 0: HL - ®¬¥à  à ¬¡«®ª®¢ ¤«ï ०¨¬®¢ 0..16. H=vRAM, L=vROM | ||||
| ;	CF = 1:  A - ®¬¥à ®è¨¡ª¨ | ||||
| ; | ||||
| ;¥á«¨ áâíª  å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥à뢠¨ï¬¨ | ||||
| FN_ENTRANCE:	;!TODO	A - TASK NUMBER | ||||
| 		AND	A | ||||
| 		LD	A,BIOS.Error.NotSupported | ||||
| 		SCF | ||||
| 		RET	NZ | ||||
| 		CCF | ||||
| 		; | ||||
| 		EXX | ||||
| 		 LD	C,SLOT3 | ||||
| 		 IN	B,(C) | ||||
| 		 LD	A,SYS_PAGE | ||||
| 		 OUT	(C),A | ||||
| 		EXX | ||||
| 		; | ||||
| 		LD	(SYS_PAGE.SP_SAVE),SP | ||||
| 		LD	SP,SYS_PAGE.SYS_SP	 | ||||
| 		LD	DE,.EXIT | ||||
| 		PUSH	DE | ||||
| 		;-----------------------------------; | ||||
| 		; Sub FN #8x  | ||||
| 		BIT	7,B | ||||
| 		JR	NZ,INIT_vROM		; B = 128 | ||||
| 		; Sub FN #4x  | ||||
| 		BIT	6,B | ||||
| 		JR	NZ,FREE_vMEMORY		; B = 64..127 | ||||
| 		; Sub FN #2x			;!TODO ; [ ] free zx pages! | ||||
| 		;BIT	5,B | ||||
| 		;JR	NZ,			; B = 32..63		 | ||||
| 		; Sub FN #1x  | ||||
| 		BIT	4,B | ||||
| 		JR	Z,.x0x_FN		; B = 16 | ||||
| 		; | ||||
| .GET_RAMBLOCK_IDs:	;‚室: A - TASK NUMBER. ‚ë室: H - vRAM block ID, L - vROM block ID | ||||
| 		LD	HL,(SYS_PAGE.Block_IDs) | ||||
| 		RET | ||||
| 		; | ||||
| 		; Sub FN #0x  | ||||
| .x0x_FN:	DEC	B | ||||
| 		JR	Z,GET_48k_MEM		; B = 1 | ||||
| 		DEC	B | ||||
| 		JR	Z,GET_128k_MEM		; B = 2 | ||||
| 		DEC	B | ||||
| 		JR	Z,GET_512k_MEM		; B = 3 | ||||
| 		DEC	B | ||||
| 		JR	Z,GET_SCORP_RAM		; B = 4 | ||||
| 		;-----------------------------------; | ||||
| 		LD	A,BIOS.Error.InvalidSubFunction | ||||
| 		SCF | ||||
| 		RET | ||||
| 		; | ||||
| .EXIT:		LD	SP,(SYS_PAGE.SP_SAVE) | ||||
| 		EXX | ||||
| 		 OUT	(C),B | ||||
| 		EXX | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚•Ž„:	HL - ᯨ᮪ áâà ¨æ | ||||
| ;	 E - 0 = 128kb, 1 = 512kb | ||||
| INIT_vRAM:	XOR	A | ||||
| .set_1ffd:	LD	BC,#1FFD | ||||
| 		OUT	(C),A | ||||
| 		; set 128 | ||||
| 		LD	B,#7F | ||||
| 		LD	D,%0000'0000 | ||||
| 		CALL	SET_7FFD | ||||
| 		; | ||||
| 		XOR	A | ||||
| 		OUT	(C),A | ||||
| 		BIT	3,E	; 128/512 | ||||
| FREE_vRAM:	LD	A,(SYS_PAGE.Block_ID.vRAM) | ||||
| 		OR	A | ||||
| 		RET	Z | ||||
| 		; set 128 + 384 | ||||
| 		;LD	A,SYS_PORT.CNF_512 | ||||
| 		;OUT	(SYS_PORT.ROM),A | ||||
| 		; | ||||
| 		LD	D,%0100'0000 | ||||
| 		CALL	SET_7FFD | ||||
| 		LD	D,%1000'0000 | ||||
| 		CALL	SET_7FFD | ||||
| 		LD	D,%1100'0000 | ||||
| 		CALL	SET_7FFD | ||||
| 		; | ||||
| 		LD	C,BIOS.FreeMem | ||||
| 		CALL	ToBIOS_FromEXT | ||||
| 		RET	C | ||||
| 		XOR	A | ||||
| 		OUT	(C),A | ||||
| 		LD	(SYS_PAGE.Block_ID.vRAM),A | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚•Ž„:	HL - ᯨ᮪ áâà ¨æ | ||||
| ;	 D -  ç «ì®¥ § ç¥¨¥ ¤«ï 7FFD | ||||
| SET_7FFD:	LD	A,(HL) | ||||
| 		OUT	(C),D | ||||
| ;--------------; | ||||
| FREE_vMEMORY:	CALL	FREE_vRAM | ||||
| 		;JR	FREE_vROM | ||||
| ;--------------; | ||||
| FREE_vROM:	LD	A,(SYS_PAGE.Block_ID.vROM) | ||||
| 		OR	A | ||||
| 		RET	Z | ||||
| 		XOR	A | ||||
| 		LD	(SYS_PAGE.Block_ID.vROM),A | ||||
| 		LD	C,BIOS.FreeMem | ||||
| 		RST_to_BIOS | ||||
| ;--------------; | ||||
| RES_FLAG_ZXvROM:			; ¥ ¤®«¦® ¯®àâ¨âì DE | ||||
| 		EX	AF,AF' | ||||
| 		 IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,Spec_Page | ||||
| 		OUT	(SLOT3),A | ||||
| 		XOR	A | ||||
| 		LD	(Spec_Page.flag_Z),A | ||||
| 		LD	(Spec_Page.flag_X),A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		INC	HL | ||||
| 		INC	D | ||||
| 		BIT	3,D	; ª®«¨ç¥á⢮ áâà ¨æ | ||||
| 		JR	Z,SET_7FFD | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï âàñå áâà ¨æ Ž‡“ 48k | ||||
| GET_48k_MEM:	LD	D,ZX_MEMORY.MODE_48k | ||||
| @ -637,7 +636,7 @@ GET_SCORP_RAM:	CALL	FREE_vRAM | ||||
| 
 | ||||
| 
 | ||||
| ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; | ||||
| ;!TODO § ¤¥©á⢮¢ âì | ||||
| ; [ ] 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-¬¨ ¯®àâ ¬¨: | ||||
| @ -671,21 +670,12 @@ GOTO_SPECTRUM:	LD	A,BIOS.Error.NotSupported | ||||
| 		LD	(SYS_PAGE.CONFIG_DE),DE | ||||
| 		LD	(SYS_PAGE.Block_IDs),HL		;!FIXIT ®á¢®¡®¤¨âì áâ àë¥ § ç¥¨ï? ; [ ] free zx pages! | ||||
| 		; | ||||
| 	EXX | ||||
| 		LD	A,C | ||||
| 		AND	%0000'0011 | ||||
| 		LD	SP,#C000 | ||||
| 		; | ||||
| 		; [ ] free zx pages! ;!TODO ¥á«¨ § ¤ ç  ¯ãáâ ï, â® ¯¥à¢ë© ¨¨â | ||||
| 		; | ||||
| 		;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨â  ¤«ï ¯ à ¬¥âà  ¨§ Setup | ||||
| 		;!TODO ãáâ ®¢¨âì £¤¥-¨¡ã¤ì ¨¦¥ áâíª ¨§ TASK | ||||
| 	; LD	A,(IX + _ZX_TASK_DATA.PORT_ALL_MODE) | ||||
| 	; LD	BC,Port_All_Mode | ||||
| 	; OUT	(C),A | ||||
| 		; ãáâ ®¢ª  ¨â  | ||||
| 	EXX | ||||
| 		LD	A,C | ||||
| 	EXX | ||||
| 		AND	%0000'0011 | ||||
| 		LD	C,BIOS.FN_SYNC | ||||
| 		RST_to_BIOS | ||||
| 		;CALL	FN_SYNC | ||||
| @ -764,7 +754,8 @@ GOTO_SPECTRUM:	LD	A,BIOS.Error.NotSupported | ||||
| ; D  - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ | ||||
| INIT_PAGES:	LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT1),A | ||||
| 		LD	A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0 + SYS_PORT.CNF_512 | ||||
| 		==== | ||||
| 		LD	A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0 + SYS_PORT.CNF_512	;!FIXIT ¯¥à¥¤¥« âì ¨¨â. ¥á«¨ 512, â® ¥â 1ffd ¨  ®¡®à®â | ||||
| 		OUT	(SYS_PORT.ROM),A | ||||
| 		; | ||||
| 		RES	7,H | ||||
|  | ||||
| @ -421,7 +421,7 @@ TURBO_ON: | ||||
| 
 | ||||
| CLEAR_RAM: | ||||
| 	DI | ||||
| 	LD	C,BIOS.FullInit | ||||
| 	LD	C,BIOS.FullInit		; [ ] free zx pages! | ||||
| 	RST_to_BIOS | ||||
| 	; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠 ¢®§¢à â ¢ DSS ¯® CAD | ||||
| 	;  ¡ã¤¥â ®¯ áë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì), | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik