...
This commit is contained in:
		
							parent
							
								
									0ec6b77447
								
							
						
					
					
						commit
						36d209867e
					
				| @ -1 +1 @@ | ||||
| Subproject commit b1851fc9f30652ff464f323a7f2873806bd51bfd | ||||
| Subproject commit c3a5d38deff864c3b08dd129572a20428f9219f1 | ||||
| @ -632,7 +632,7 @@ POST_4_PAGES: | ||||
| 	LD I,A | ||||
| 	LD A,B | ||||
| 	OUT (SLOT3),A | ||||
| 	LD A,0 | ||||
| 	XOR A | ||||
| 	LD I,A | ||||
| 	IN A,(SLOT3) | ||||
| 	CP B | ||||
| @ -664,7 +664,8 @@ POST_5_DATA_BUS: | ||||
| 	LD B,0 | ||||
| .loop:	IN A,(0) | ||||
| 	CP #FF | ||||
| ;	JR NZ,.error					;!!!!!  ¯®á¬®âà¥âì | ||||
| 	;JR NZ,.error					;!!!!!  ¯®á¬®âà¥âì | ||||
| 	JR NZ,POST_5_ERROR | ||||
| 	DJNZ .loop | ||||
| 	JR POST_5_OK | ||||
| 
 | ||||
| @ -694,7 +695,7 @@ POST_5_DATA_BUS: | ||||
| POST_5_OK: | ||||
| 	LD A,(TABLE_X.v5)				;rdlow-ok | ||||
| 	OUT (Z84.PIO.Port_A.Data),A			; ¢ë¢¥á⨠"5" | ||||
| 
 | ||||
| POST_5_ERROR: | ||||
| ; ********************************** | ||||
| ;	POST § ¢¥àè¥ | ||||
| 	ENDMODULE | ||||
| @ -705,14 +706,14 @@ POST_5_OK: | ||||
| 	XOR	A | ||||
| 	OUT	(RGADR),A | ||||
| 	OUT	(RGMOD),A | ||||
| 	OUT	(SLOT0),A		;!HARDCODE zx page number | ||||
| 	; !TEST 20/08/2024 | ||||
| 	;  LD	A,5			;!HARDCODE zx page number | ||||
| 	OUT	(SLOT0),A | ||||
| 	; [ ] 20/08/2024 ; [x] free zx pages! | ||||
| 	;  LD	A,5 | ||||
| 	;  OUT	(SLOT1),A | ||||
| 	;  LD	A,2			;!HARDCODE zx page number | ||||
| 	;  LD	A,2 | ||||
| 	;  OUT	(SLOT2),A | ||||
| 	 OUT	(SLOT2),A		;!HARDCODE zx page number | ||||
| 	 DEC	A	; LD	A,#FF	;!HARDCODE zx page number | ||||
| 	 OUT	(SLOT2),A	; ZERO_PAGE | ||||
| 	 DEC	A		; SHARED_PAGE | ||||
| 	 OUT	(SLOT1),A | ||||
| 	; | ||||
| 	LD	A,SYS_PAGE | ||||
| @ -895,13 +896,20 @@ PrepareToZX:	;CALL	init_zx_roms | ||||
| 		CP	#10 | ||||
| 		JR	C,.loop | ||||
| 	; ¢ë室 ¢ ०¨¬ zx spectrum | ||||
| 		;!TODO § ¬¥¨âì   ãáâ ®¢ªã ¨§ à ¬¡«®ª  ; [ ] free zx pages! | ||||
| 		 LD	A,5 | ||||
| 		 OUT	(SLOT1),A | ||||
| 		 LD	A,2 | ||||
| 		 OUT	(SLOT2),A | ||||
| .start_zx:	 XOR	A | ||||
| 	IF FREE_ZX_PAGES | ||||
| 		JP	GOTO_SPEC | ||||
| 	ELSE	; [x] free zx pages! | ||||
| 		 OUT	(SLOT2),A	; ZERO_PAGE | ||||
| 		 DEC	A | ||||
| 		 OUT	(SLOT1),A	; SHARED_PAGE | ||||
| 		 ;LD	A,5 | ||||
| 		 ;OUT	(SLOT1),A | ||||
| 		 ;LD	A,2 | ||||
| 		 ;OUT	(SLOT2),A | ||||
| 		; | ||||
| .start_zx:	JP	GOTO_SPEC.ZX_MODE | ||||
| 		JP	GOTO_SPEC.ZX_MODE | ||||
| 	ENDIF | ||||
| ;*********************************** | ||||
| ;	ˆ¨æ¨ «¨§ æ¨ï ¯®à⮢ | ||||
| PORTS_INIT: | ||||
|  | ||||
| @ -105,16 +105,16 @@ EMM.InitMem:	PUSH	BC | ||||
| ;---------------------------------------------------------------------[] | ||||
| RESERVED_PAGES: | ||||
| 	; [x] Block #1 - ¬®¦® ®á¢®¡®¤¨âì ¯® ID 1 | ||||
| 		DB	1,3,4,6,7,8,9,10,11,12,13,14,15				; for Spectrum | ||||
| 		DB	1,3,4,6,7,8,9,10,11,12,13,14,15	; [ ] free zx pages! for Spectrum | ||||
| 	 ;!FIXIT áâà ¨æë 16..31 ¥ § à¥§¥à¢¨à®¢ ë, ® ¨á¯®«ì§ãîâáï ¢ Pentagon 512 | ||||
| 	 ; | ||||
| 	 ; í¬ã«ïâ®à <20>‡“ ;!FIXIT ROM-Emulator ᤥ« âì ¤¨ ¬¨ç¥áª¨¥ áâà ¨æë | ||||
| 		DB	#42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B		; For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION | ||||
| 		DB	#42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; [ ] free zx pages! For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION | ||||
| 		DB	#FF							; End of the block | ||||
| 	 ; | ||||
| 	; | ||||
| 	;; Block #2 - ¥«ì§ï ®á¢®¡®¦¤ âì | ||||
| 		DB	0,2,5							; for Spectrum and BIOS starting | ||||
| 		DB	0,2,5		; [ ] free zx pages!			; for Spectrum and BIOS starting | ||||
| 		DB	DCP_PAGE 						; Ports map | ||||
| 		DB	Spec_Page						; Page for Spectrum mode | ||||
| 	 ; Screen pages | ||||
| @ -279,11 +279,11 @@ EMM.FreeMemRMD:	CALL	GET_RAMD_ST | ||||
| ;		  ‚室: A - <20>€—€‹Ž –…<E28093>Ž—Šˆ | ||||
| ; <20>… <20>Ž<EFBFBD>’ˆ’œ DE!!! | ||||
| ;EMM_FN3M: | ||||
| EMM.FreeMem:	; [ ] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF | ||||
| 		SCF | ||||
| 		INC	A | ||||
| 		RET	Z | ||||
| 		DEC	A | ||||
| EMM.FreeMem:	; [x] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF | ||||
| 		 SCF | ||||
| 		 INC	A | ||||
| 		 RET	Z | ||||
| 		 DEC	A | ||||
| 		 ;AND	A | ||||
| 		 ;SCF | ||||
| 		; | ||||
| @ -1085,76 +1085,76 @@ ROM_DISK: | ||||
| ; 	RET	 | ||||
| 
 | ||||
| 
 | ||||
| .loop:		PUSH	DE							 ; ®¬¥à ᥪâ®à  | ||||
| .loop:		PUSH	DE						; ®¬¥à ᥪâ®à  | ||||
| 		PUSH	BC | ||||
| 
 | ||||
| 		LD	A,E | ||||
| 		AND	#3F								; ADRESS in ROM-Page | ||||
| 		PUSH	AF							 ; á®åà ¨âì  ¤à¥á | ||||
| 		AND	#3F						; ADRESS in ROM-Page | ||||
| 		PUSH	AF						; á®åà ¨âì  ¤à¥á | ||||
| 
 | ||||
| 		EX	DE,HL							; DE -  ¤à¥á ¡ãä¥à  | ||||
| 		EX	DE,HL						; DE -  ¤à¥á ¡ãä¥à  | ||||
| 		ADD	HL,HL | ||||
| 		ADD	HL,HL							  ; H - ®¬¥à ¡ ª¨ | ||||
| 		ADD	HL,HL						; H - ®¬¥à ¡ ª¨ | ||||
| 
 | ||||
| 		LD	A,(ROM_DISK.Pages.Number) | ||||
| 		INC	H | ||||
| 		CP	H | ||||
| 		LD	L,H | ||||
| 		LD	H,high ROM_DISK.Pages.Number				; ROM-Disk pages! | ||||
| 		LD	A,(HL)							  ; PAGE-ROM | ||||
| 		LD	H,high ROM_DISK.Pages.Number			; ROM-Disk pages! | ||||
| 		LD	A,(HL)						; PAGE-ROM | ||||
| 
 | ||||
| 		POP	HL							  ; ¢®ááâ ®¢¨âì  ¤à¥á ¢ ROM-Page | ||||
| 		LD	L,0							  ; ¥á«¨ ¤ «¥ª® § å®â¥«¨ - ¢ë室 á ®è¨¡ª®© | ||||
| 		JR	C,.errorExit						 ; ROM-Disk-end | ||||
| 		POP	HL						; ¢®ááâ ®¢¨âì  ¤à¥á ¢ ROM-Page | ||||
| 		LD	L,0						; ¥á«¨ ¤ «¥ª® § å®â¥«¨ - ¢ë室 á ®è¨¡ª®© | ||||
| 		JR	C,.errorExit					; ROM-Disk-end | ||||
| ; DE - ¡ãä¥à | ||||
| ; HL -  ¤à¥á ¢ ROM | ||||
| ; B - ç¨á«® ᥪâ®à®¢ | ||||
| ; A - ROM-Page | ||||
| .loopRead: | ||||
| 		PUSH	HL								; ®âªã¤  | ||||
| 		PUSH	DE								; ªã¤  | ||||
| 		PUSH	HL						; ®âªã¤  | ||||
| 		PUSH	DE						; ªã¤  | ||||
| 
 | ||||
| 		LD	HL,-.stackDepth-.readProcedure.size			; memory stack use! | ||||
| 		ADD	HL,SP							; stack | ||||
| 		LD	HL,-.stackDepth-.readProcedure.size		; memory stack use! | ||||
| 		ADD	HL,SP						; stack | ||||
| 
 | ||||
| 		PUSH	HL								;  ¤à¥á ¯à®£à ¬¬ë .readProcedure | ||||
| 		PUSH	HL						;  ¤à¥á ¯à®£à ¬¬ë .readProcedure | ||||
| 
 | ||||
| 		LD	DE,.readProcedure						; ¯¥à¥¥á⨠¯à®£à ¬¬ã   á⥪ | ||||
| 		LD	DE,.readProcedure				; ¯¥à¥¥á⨠¯à®£à ¬¬ã   á⥪ | ||||
| 		EX	DE,HL | ||||
| 		LD	BC,.readProcedure.size | ||||
| 		LDIR								; ¯à®£à ¬¬    á⥪¥ | ||||
| 		LD	BC,#100							; ¤«¨  ᥪâ®à  | ||||
| 		RET								; ¨á¯®«¨âì ¯à®£à ¬¬ã .readProcedure,   á⥪¥  ¤à¥á  ¡ãä¥à  ¨ ROM | ||||
| 		LDIR							; ¯à®£à ¬¬    á⥪¥ | ||||
| 		LD	BC,#100						; ¤«¨  ᥪâ®à  | ||||
| 		RET							; ¨á¯®«¨âì ¯à®£à ¬¬ã .readProcedure,   á⥪¥  ¤à¥á  ¡ãä¥à  ¨ ROM | ||||
| ; DE - next address | ||||
| ; HL - ROM address | ||||
| .readNext: | ||||
| 		POP	BC								; ç¨á«® ᥪâ®à®¢ | ||||
| 		POP	BC						; ç¨á«® ᥪâ®à®¢ | ||||
| 
 | ||||
| 		INC	C								; áç¥â稪 áç¨â ëå ᥪâ®à®¢ | ||||
| 		DEC	B								; ᥪâ®à  ª®ç¨«¨áì? | ||||
| 		INC	C						; áç¥â稪 áç¨â ëå ᥪâ®à®¢ | ||||
| 		DEC	B						; ᥪâ®à  ª®ç¨«¨áì? | ||||
| 
 | ||||
| 		JR	Z,.normExit | ||||
| 		BIT	6,H								; ç⥨¥ ¥ § ª®ç¥® | ||||
| 		BIT	6,H						; ç⥨¥ ¥ § ª®ç¥® | ||||
| 
 | ||||
| 		PUSH	BC								; á®åà ¨âì áç¥â稪¨ | ||||
| 		JR	Z,.loopRead							; ç¨â âì ¤ «ìè¥ | ||||
| 		PUSH	BC						; á®åà ¨âì áç¥â稪¨ | ||||
| 		JR	Z,.loopRead					; ç¨â âì ¤ «ìè¥ | ||||
| 		POP	BC | ||||
| 
 | ||||
| 		POP	HL								; ®¬¥à ᥪâ®à  | ||||
| 		POP	HL						; ®¬¥à ᥪâ®à  | ||||
| 
 | ||||
| 		LD	A,B | ||||
| 		LD	B,0 | ||||
| 		ADD	HL,BC | ||||
| 		LD	B,A								; ¢ëç¨á«¨âì á«¥¤.ᥪâ®à | ||||
| 		LD	B,A						; ¢ëç¨á«¨âì á«¥¤.ᥪâ®à | ||||
| 
 | ||||
| 		EX	DE,HL							; ⥯¥àì HL -  ¤à¥á, DE ᥪâ®à, B - ᪮«ìª® ¥é¥ ç¨â âì | ||||
| 		EX	DE,HL						; ⥯¥àì HL -  ¤à¥á, DE ᥪâ®à, B - ᪮«ìª® ¥é¥ ç¨â âì | ||||
| 
 | ||||
| 		JP	.loop							;  ç âì ¢á¥ á®¢ ! | ||||
| 		JP	.loop						;  ç âì ¢á¥ á®¢ ! | ||||
| ; ç⥨¥ § ª®ç¥® | ||||
| .normExit: | ||||
| 		POP	HL								; ᥪâ®à, ®âªã¤  ¢¥«®áì ç⥨¥ | ||||
| 		ADD	HL,BC							; ¯® ¢®§¢à âã: HL - á«¥¤. ¤à¥á | ||||
| 		EX	DE,HL							;		 DE - á«¥¤.ᥪâ®à | ||||
| 		POP	HL						; ᥪâ®à, ®âªã¤  ¢¥«®áì ç⥨¥ | ||||
| 		ADD	HL,BC						; ¯® ¢®§¢à âã: HL - á«¥¤. ¤à¥á | ||||
| 		EX	DE,HL						;		 DE - á«¥¤.ᥪâ®à | ||||
| 		AND	A | ||||
| 		RET | ||||
| ; ®è¨¡ª  | ||||
| @ -1166,10 +1166,10 @@ ROM_DISK: | ||||
| ; ¯à®æ¥¤ãà , ¯¥à¥®á¨¬ ï   á⥪ ¤«ï çâ¥¨ï ¨§ ROM-Disk | ||||
| ; ®áâ®à®¦¥¥ á PUSH, ¥á«¨  ¤® ¬®£®, ⮠㢥«¨ç¨¢ © .stackDepth | ||||
| .readProcedure: | ||||
| 		POP	DE								; ªã¤  | ||||
| 		POP	HL								; ®âªã¤  | ||||
| 		OUT	(ROM.SLOT0),A						; ROM_PAGE | ||||
| 		LDIR								; §¤¥áì ç¨â ¥âáï ¨§ ROM-Disk | ||||
| 		POP	DE						; ªã¤  | ||||
| 		POP	HL						; ®âªã¤  | ||||
| 		OUT	(ROM.SLOT0),A					; ROM_PAGE | ||||
| 		LDIR							; §¤¥áì ç¨â ¥âáï ¨§ ROM-Disk | ||||
| 		LD	B,A | ||||
| 		XOR	A | ||||
| 		OUT	(ROM.SLOT0),A | ||||
|  | ||||
| @ -399,11 +399,16 @@ REINIT:	DEC     B | ||||
| 		OUT     (C),A | ||||
| 		OUT     (RGADR),A | ||||
| 		OUT     (RGMOD),A | ||||
| 		OUT     (SLOT0),A	;!HARDCODE zx page number | ||||
| 		LD      A,5		;!HARDCODE zx page number | ||||
| 		OUT     (SLOT1),A | ||||
| 		LD      A,2		;!HARDCODE zx page number | ||||
| 		OUT     (SLOT2),A | ||||
| 		OUT     (SLOT0),A | ||||
| 		; [ ] 16/09/24 free zx pages! | ||||
| 		 ;LD      A,5 | ||||
| 		 ;OUT     (SLOT1),A | ||||
| 		 ;LD      A,2 | ||||
| 		 ;OUT     (SLOT2),A | ||||
| 		 OUT	(SLOT2),A | ||||
| 		 DEC	A | ||||
| 		 OUT	(SLOT1),A | ||||
| 		; | ||||
| 		LD      A,DCP_PAGE | ||||
| 		OUT     (SLOT3),A | ||||
| 		JP	0						;Restart | ||||
|  | ||||
| @ -212,8 +212,6 @@ INIT_SYS_ALL: | ||||
| 	 XOR	A | ||||
| 	 LD	(SYS_PAGE.INT_ID - #4000),A | ||||
| 	; | ||||
| 
 | ||||
| ;!TODO çâ® §  ¯¥à¥¬¥ë¥? | ||||
| 	LD	HL,SYS_PAGE.DISK_TYPE - #4000 | ||||
| 	LD	(HL),DRIVE_CODES.TRDOS.FDD	; FDD A | ||||
| 	INC	HL | ||||
| @ -223,13 +221,13 @@ INIT_SYS_ALL: | ||||
| 	INC	HL | ||||
| 	LD	(HL),DRIVE_CODES.TRDOS.HDD | ||||
| 	INC	HL | ||||
| 	LD	(HL),0							; SYS_PAGE.COPY_SLOT0 | ||||
| 	LD	(HL),ZERO_PAGE	; [x] free zx pages!			; SYS_PAGE.COPY_SLOT0, ¡ë«® 0 | ||||
| 	INC	HL | ||||
| 	LD	(HL),5							; SYS_PAGE.COPY_SLOT1 | ||||
| 	LD	(HL),SHARED_PAGE; [x] free zx pages!			; SYS_PAGE.COPY_SLOT1, ¡ë«® 5 | ||||
| 	INC	HL | ||||
| 	LD	(HL),2							; SYS_PAGE.COPY_SLOT2 | ||||
| 	LD	(HL),ZERO_PAGE	; [x] free zx pages!			; SYS_PAGE.COPY_SLOT2, ¡ë«® 2 | ||||
| 	INC	HL | ||||
| 	LD	(HL),0							; SYS_PAGE.COPY_SLOT3 | ||||
| 	LD	(HL),ZERO_PAGE	; [x] free zx pages!			; SYS_PAGE.COPY_SLOT3, ¡ë«® 0 | ||||
| 
 | ||||
| 	LD	A,9 | ||||
| 	LD	(SYS_PAGE.MSD_SECS - #4000),A | ||||
| @ -252,6 +250,9 @@ INIT_SYS_ALL: | ||||
| 	 XOR	A | ||||
| 	 LD	(SYS_PAGE.CURRENT_RAM_DRV - #4000),A | ||||
| 	; | ||||
| 	; [ ] free zx pages! | ||||
| 	 ;;; init task's | ||||
| 	; | ||||
| 	LD	DE,ZG_ADDRESS						;  ¤à¥á § ª®£¥¥à â®à  | ||||
| 	LD	(SYS_PAGE.WIN_ZG - #4000),DE | ||||
| ; | ||||
|  | ||||
| @ -54,12 +54,7 @@ | ||||
| ;¥á«¨ áâíª  å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥à뢠¨ï¬¨ | ||||
| FN_ENTRANCE:	;!TODO	A - TASK NUMBER | ||||
| 		EXX | ||||
| 		 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			; ¤ ë¥ ®¢®© § ¤ ç¨ | ||||
| 		 CALL	GET_ZX_TASK_DATA | ||||
| 		 ; | ||||
| 		 LD	C,SLOT3 | ||||
| 		 IN	B,(C) | ||||
| @ -102,6 +97,18 @@ FN_ENTRANCE:	;!TODO	A - TASK NUMBER | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	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 | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	A - TASK NUMBER | ||||
| @ -226,7 +233,7 @@ SET_7FFD:	LD	A,(HL) | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï âàñå áâà ¨æ Ž‡“ 48k | ||||
| GET_48k_MEM:	LD	D,3 | ||||
| GET_48k_MEM:	LD	D,3+1 | ||||
| 		JR	GET_XXX_MEM | ||||
| ;‚믮«ï¥âáï ¤«ï ¨¨â  3 áâà ¨æ Ž‡“ 48k ¨ 29 áâà ¨æ Ž‡“ Pent512k 		 | ||||
| GET_512k_MEM:	LD	D,3+29 | ||||
| @ -313,6 +320,219 @@ GET_SCORP_RAM:	CALL	FREE_vRAM | ||||
| ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  IF	FREE_ZX_PAGES	;----------------------------------------------------[v] | ||||
| ;!TODO § ¤¥©á⢮¢ âì | ||||
| ; ‚室:	B = 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128, | ||||
| ; 	    3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨: | ||||
| ; 	    4 - TR-DOS, 5 - BASIC 48 | ||||
| ;	A = TASK | ||||
| GOTO_SPEC:	DI | ||||
| 		PUSH	AF | ||||
| 		; set shared pages | ||||
| 		XOR	A | ||||
| 		OUT	(SLOT2),A	; ZERO_PAGE | ||||
| 		DEC	A | ||||
| 		OUT	(SLOT1),A	; SHARED_PAGE | ||||
| 		; | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	A,B | ||||
| 		LD	(SYS_PAGE.CONFIG_DE.ZX_START),A | ||||
| 		; | ||||
| 		POP	AF | ||||
| 		LD	SP,#C000 | ||||
| 		CALL	GET_ZX_TASK_DATA | ||||
| 		; | ||||
| 	;!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 | ||||
| 		; ãáâ ®¢ª  ¨â  | ||||
| 		LD	A,(IX + _#ZX_TASK_DATA.FN_SYNC) | ||||
| 		AND	%0000'0111 | ||||
| 		CALL	FN_SYNC | ||||
| 		; ãáâ ®¢ª  à §¢ñà⪨ | ||||
| 		LD	A,(IX + _#ZX_TASK_DATA.FN_SYNC) | ||||
| 		AND	%1100'0000 | ||||
| 		OR	%0010'0000 | ||||
| 		RLCA | ||||
| 		RLCA | ||||
| 		CALL	FN_SYNC | ||||
| 		; | ||||
| 		CALL	SET_TXT_PALETTE.ZX	; [ ] free zx pages! ¯à®¯ã᪠âì íâ®, ç⮡ § ¤ ¢ âì ¯®«ì§®¢ â¥«ìáªãî ¯ «¨âàã | ||||
| 		; | ||||
| 		LD	E,0 | ||||
| 		CALL	LP_SET_32 | ||||
| 		; | ||||
| 		LD	E,0 | ||||
| 		LD	HL,#5104 | ||||
| 		CALL	LP_SET_32.X | ||||
| 
 | ||||
| 	;¬®¦® ¨á¯®«ì§®¢ âì ª®£¤ -¨¡ã¤ì ª ª-¨¡ã¤ì | ||||
| 	; LD D,#35 | ||||
| 	; CALL CMOS_RD | ||||
| 	; BIT 0,A | ||||
| 	; PUSH AF | ||||
| 	; CALL Z,SPRINTER_1 | ||||
| 	; POP AF | ||||
| 	; PUSH AF | ||||
| 	; CALL NZ,AY8910 | ||||
| 	; POP AF | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| .TASK_0:	XOR	A						; § ¤ ç  0, ०¨¬ 256 ª¨«®¡ ©â | ||||
| .START_TASK:	LD	IY,.BASIC_128 | ||||
| 		JP	INIT_PAGES					; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬  ᯥªâà㬠 | ||||
| 		; | ||||
| ;start_basic: | ||||
| .BASIC_128:	LD	SP,#C000 | ||||
| 		LD	HL,RES128_PROG | ||||
| 		LD	DE,ZX_VARS.PRINTER_BUFFER			; § ¯ã᪠¯à®£à ¬¬ë   BASIC-¥. | ||||
| 		LD	BC,RES128_PROG.Size | ||||
| 		LDIR | ||||
| 		DI | ||||
| 		JP	ZX_VARS.PRINTER_BUFFER | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;***************************************** | ||||
| ; | ||||
| ;	ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ ¤«ï | ||||
| ;	ᯥªâà㬮¢áª®£® ०¨¬  ¨ | ||||
| ;	¢®ááâ ®¢«¥¨¥ ᯥªâà㬮¢áª®£® | ||||
| ;	íªà   | ||||
| ; | ||||
| ;	‚®§¢à â ¯® IX | ||||
| ; | ||||
| ;	!!! NO USE STACK !!! | ||||
| ; | ||||
| ;***************************************** | ||||
| ;!TODO á⥪ ãáâ ®¢«¥ ¢® ¢â®à®© áâà ¨æ¥, ¥ ¨á¯®«ì§®¢ âì ¨«¨ ãáâ  ¢«¨¢ âì ¢ ¤àã£ãî! | ||||
| ; ¨¨æ¨ «¨§ æ¨ï áâà ¨æ zx spectrum | ||||
| INIT_PAGES: | ||||
| 	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: | ||||
| 	OUT (SLOT0),A | ||||
| 	XOR 5		; [ ] free zx pages! | ||||
| 	OUT (SLOT1),A | ||||
| 	XOR 7		; [ ] free zx pages! | ||||
| 	OUT (SLOT2),A | ||||
| 	OR #0F		; [ ] free zx pages! | ||||
| 	LD E,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) | ||||
| ;-----------------------------------------------------------------------; | ||||
|  ELSE	;--------------------------------------------------------------------[|] | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;!TODO § ¤¥©á⢮¢ âì | ||||
| GOTO_SPEC:	IN	A,(SLOT3) | ||||
| @ -320,7 +540,7 @@ GOTO_SPEC:	IN	A,(SLOT3) | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,B | ||||
| 		LD	(SYS_PAGE.CONFIG_DE+1),A | ||||
| 		LD	(SYS_PAGE.CONFIG_DE.ZX_START),A | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 
 | ||||
| @ -329,7 +549,7 @@ GOTO_SPEC:	IN	A,(SLOT3) | ||||
| 
 | ||||
| ;NO_SETUP_1: | ||||
| ;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨â  ¤«ï ¯ à ¬¥âà  ¨§ Setup | ||||
| .ZX_MODE:	LD	A,#FE						; !HARDCODE ᤥ« âì ç¥à¥§ ¬¥âªã ACC-off Spectrum-MODE | ||||
| .ZX_MODE:	LD	A,#FE	; !HARDCODE ᤥ« âì ç¥à¥§ ¬¥âªã ACC-off Spectrum-MODE | ||||
| 		LD	BC,Port_All_Mode | ||||
| 		OUT	(C),A | ||||
| 		LD	SP,#C000 | ||||
| @ -369,73 +589,6 @@ GOTO_SPEC:	IN	A,(SLOT3) | ||||
| 		JP	ZX_VARS.PRINTER_BUFFER | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| ; | ||||
| ;>$< >$< >$< >$< >$< >$< [ <20>…<EFBFBD>…Œ…™€…Œ€Ÿ ‚ އ“ ] >$< >$< >$< >$< >$< >$< ; | ||||
| 
 | ||||
| ;--------[ <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+1),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                                                             | ||||
|  ENT | ||||
| .Size		EQU	$-RES128_PROG | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;***************************************** | ||||
| @ -489,7 +642,7 @@ INIT_PAGES: | ||||
| 
 | ||||
| SCORPION_256_MODE: | ||||
| 	LD D,16 | ||||
| 	AND #30								; ¤® 4-å ᯥªâà㬮¢ | ||||
| 	AND #30		; ¤® 4-å ᯥªâà㬮¢ | ||||
| 
 | ||||
| ALL_MODE: | ||||
| 	OUT (SLOT0),A | ||||
| @ -524,9 +677,9 @@ ALL_MODE: | ||||
| 
 | ||||
| INIT_VIDEO_REG: | ||||
| 	XOR A | ||||
| 	OUT (RGADR),A						; ॣ¨áâà ¢¨¤¥®  ¤à¥á  | ||||
| 	OUT (RGMOD),A						; ॣ¨áâà ¬®¤ë | ||||
| ;	OUT (RGSCR),A						; ॣ¨áâà íªà   | ||||
| 	OUT (RGADR),A	; ॣ¨áâà ¢¨¤¥®  ¤à¥á  | ||||
| 	OUT (RGMOD),A	; ॣ¨áâà ¬®¤ë | ||||
| ;	OUT (RGSCR),A	; ॣ¨áâà íªà   | ||||
|          | ||||
|         ;!TEST | ||||
|          ; Restore old Spectrum Screen | ||||
| @ -541,7 +694,7 @@ INIT_VIDEO_REG: | ||||
| 
 | ||||
| 	 ; EX AF,AF' | ||||
| 
 | ||||
| 	 ; LD A,7							; ᥤ쬠ï íªà  ï áâà ¨æ  | ||||
| 	 ; LD A,7	; ᥤ쬠ï íªà  ï áâà ¨æ  | ||||
| 	 ; LD BC,#7FFD | ||||
| 	 ; OUT (C),A | ||||
| 
 | ||||
| @ -561,6 +714,74 @@ NO_SCREEN_ALT: | ||||
| 	AND A | ||||
| 	JP (IX) | ||||
| ;-----------------------------------------------------------------------; | ||||
|  ENDIF	;--------------------------------------------------------------------[^] | ||||
| 
 | ||||
| ; | ||||
| ;>$< >$< >$< >$< >$< >$< [ <20>…<EFBFBD>…Œ…™€…Œ€Ÿ ‚ އ“ ] >$< >$< >$< >$< >$< >$< ; | ||||
| 
 | ||||
| ;--------[ <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                                                             | ||||
|  ENT | ||||
| .Size		EQU	$-RES128_PROG | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 ‘’<E28098>€<EFBFBD>ˆ–›]----------------------; | ||||
| @ -581,7 +802,7 @@ PROG_NO_ROM: | ||||
|  DISP   Spec_Page.no_zx_rom | ||||
| 	DI | ||||
| 	; | ||||
| 	LD	A,#FF | ||||
| 	LD	A,SHARED_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	OUT	(SLOT2),A | ||||
| 	OUT	(SLOT1),A | ||||
|  | ||||
| @ -175,7 +175,11 @@ TASK_SWITCH: | ||||
| ;                          			; ¨ ¯®ª  ¯®ä¨£ à á¯à¥¤¥«¥¨¥ ¯ ¬ïâ¨! | ||||
| 
 | ||||
| TASK_SET: | ||||
| 	LD IX,TASK_RESTORE | ||||
| 	IF	FREE_ZX_PAGES | ||||
| 	 LD IY,TASK_RESTORE | ||||
| 	ELSE | ||||
| 	 LD IX,TASK_RESTORE | ||||
| 	ENDIF | ||||
| 	LD A,C | ||||
| 	EXX | ||||
| 	JP INIT_PAGES				; ¯¥à¥ª«îç¨âì ¢á¥ áâà ¨æë! | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik