...
This commit is contained in:
		
							parent
							
								
									97b26695af
								
							
						
					
					
						commit
						6265aedb5c
					
				| @ -21,7 +21,7 @@ | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ; | ||||
| ; | ||||
| .RECORD.Size	EQU	5 | ||||
| ;-----------------------------------------------------------------------; | ||||
| 	DW	%00'000'0'0000'0111 | ||||
| 	DW	%00'010'0'0110'1111 | ||||
| @ -447,44 +447,47 @@ | ||||
| 
 | ||||
| ; | ||||
| ;----------------------------------------------------------------------; | ||||
| DCP_INIT: | ||||
|         LD C,XL | ||||
|         LD B,XH | ||||
|         LD E,YL | ||||
|         LD D,YH | ||||
|         EXX | ||||
| 
 | ||||
|         LD HL,#C000 | ||||
|         LD DE,#C001 | ||||
|         LD BC,#3FFF | ||||
|         LD (HL),L | ||||
|         LDIR | ||||
| 
 | ||||
|         LD IY,DCP_DATA | ||||
|         LD IX,.ret | ||||
| 
 | ||||
| .loop:  LD L,(IY) | ||||
|         LD H,(IY+1) | ||||
|         LD E,(IY+2) | ||||
|         LD D,(IY+3) | ||||
|         LD B,(IY+4) | ||||
|         JP DCP_CONFIG.PARSE_TABLE | ||||
| 
 | ||||
| .ret:   LD BC,5 | ||||
|         ADD IY,BC | ||||
|         LD A,(IY+2) | ||||
|         OR (IY+3) | ||||
|         JR NZ,.loop | ||||
| 
 | ||||
|         EXX | ||||
|         LD XL,C | ||||
|         LD XH,B | ||||
|         LD YL,E | ||||
|         LD YH,D | ||||
| ; ¢ë§ë¢ ¥âáï ¨§ POST_TEST.POST_3_INIT_DCP | ||||
| DCP_INIT:	LD	E,YL | ||||
| 		LD	D,YH | ||||
| 		EX	DE,HL | ||||
| 		LD	E,XL | ||||
| 		LD	D,XH | ||||
| 		; | ||||
| 		LD	BC,DCP_DATA.RECORD.Size | ||||
| 		EXX | ||||
| 		 LD	HL,#C000 | ||||
| 		 LD	DE,#C001 | ||||
| 		 LD	BC,#3FFF | ||||
| 		 LD	(HL),L | ||||
| 		 LDIR | ||||
| 		 ; | ||||
| 		 LD	IY,DCP_DATA | ||||
| 		 LD	IX,.ret | ||||
| 		 ; | ||||
| .loop:		 LD	L,(IY) | ||||
| 		 LD	H,(IY+1) | ||||
| 		 LD	E,(IY+2) | ||||
| 		 LD	D,(IY+3) | ||||
| 		 LD	B,(IY+4) | ||||
| 		 JP	DCP_CONFIG.PARSE_TABLE | ||||
| 		 ; | ||||
| .ret:		EXX | ||||
| 		ADD	IY,BC | ||||
| 		EXX | ||||
| 		 LD	A,(IY+2) | ||||
| 		 OR	(IY+3) | ||||
| 		 JR	NZ,.loop | ||||
| 		EXX | ||||
| 		LD	XL,E | ||||
| 		LD	XH,D | ||||
| 		EX	DE,HL | ||||
| 		LD	YL,E | ||||
| 		LD	YH,D | ||||
| 
 | ||||
|         ; First IN command - OPEN DCP | ||||
|         IN A,(SLOT3) | ||||
|         JP (HL) | ||||
| 		IN	A,(SLOT3) | ||||
| 		JP	POST_TEST.POST_3_OK | ||||
| ;-----------------------------------------------------------------------; | ||||
| ; | ||||
| 
 | ||||
|  | ||||
| @ -611,8 +611,8 @@ POST_2_OK: | ||||
| 
 | ||||
| ; ===== INIT DCP ======== | ||||
| POST_3_INIT_DCP: | ||||
| 	LD HL,POST_3_OK					; INIT PORTS | ||||
| 	JP DCP_INIT					; ¯à®æ¥¤ãà  ¨¨æ¨ «¨§ æ¨¨ á ¢®§¢à â®¬ ¢ (HL) | ||||
| 	;LD HL,POST_3_OK					; INIT PORTS | ||||
| 	JP DCP_INIT		; ¯à®æ¥¤ãà  ¨¨æ¨ «¨§ æ¨¨ á ¢®§¢à â®¬   POST_3_OK | ||||
| ; ®è¨¡®ª ¥â | ||||
| 
 | ||||
| ; *********************************** | ||||
| @ -697,19 +697,32 @@ POST_5_OK: | ||||
| 
 | ||||
| ; ********************************** | ||||
| ;	POST § ¢¥àè¥ | ||||
| ; ********************************** | ||||
| 	ENDMODULE | ||||
| ; ********************************** | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;	¯¥à¢ ï ¨¨æ¨ «¨§ æ¨ï áâà ¨æ: | ||||
| 	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	(SLOT1),A | ||||
| 	 ;LD	A,2			;!HARDCODE zx page number | ||||
| 	 ;OUT	(SLOT2),A | ||||
| 	 LD	A,#FF			;!HARDCODE zx page number | ||||
| 	 OUT	(SLOT1),A | ||||
| 	 LD	A,0			;!HARDCODE zx page number | ||||
| 	 OUT	(SLOT2),A | ||||
| 	; | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| 	MODULE SET_CONFIG_ID | ||||
| 
 | ||||
| 	IN A,(SLOT3) | ||||
| 	EX AF,AF'					; SAVE PAGE3 | ||||
| 
 | ||||
| ;NO_SUMX_EQ: | ||||
| 
 | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
| 
 | ||||
| ;-------------[Save IX:IY]-------------- | ||||
| ; Don't use IY before this point if it`s normal booting!!! | ||||
| 	LD	IX,0 | ||||
| @ -718,65 +731,39 @@ POST_5_OK: | ||||
| ; ‚ í⮬ ¬¥áâ¥ ã  á IX:IY ¨§ Loader.asm | ||||
| ; „®â é¨«¨ ¤® á ¬¥âªã ®â «® ¤¥à  | ||||
| 	;[x] 31/12/2023 ¯®¤áâà å®¢ª  ®â ¥¤®ãâ¥çª¨ ¯ ¬ï⨠| ||||
| 	 ; IY - number from loader | ||||
| 	 LD	D,YH | ||||
| 	 LD	E,YL | ||||
| 	 EX	DE,HL | ||||
| 	 LD	DE,SP2000_Loader_Flag | ||||
| 	 SBC	HL,DE | ||||
| 	 JR	NZ,.no_conf_reload | ||||
| 	 ; | ||||
| 	 ; IX - number from loader | ||||
| 	 LD	D,XH | ||||
| 	 LD	E,XL | ||||
| 	 EX	DE,HL | ||||
| 	 LD	DE,ACEX.Config_ID.Sp2000 | ||||
| 	 SBC	HL,DE | ||||
| 	 ; A = 0 | ||||
| 	 JR	NZ,.no_conf_reload | ||||
| 	 ; | ||||
| 	 LD	A,#80 | ||||
| .no_conf_reload: | ||||
| 	 LD	R,A | ||||
| 	 LD	R,A	; reg R bit7 - ¯à¨§ ª à ¡®âë «® ¤¥à  | ||||
| 	; | ||||
| 	;   ¢á直© á«ãç © | ||||
| 	 LD	HL,ACEX.Config_ID.Sp2000 | ||||
| 	 LD	(SYS_PAGE.CONFIG_BYTE),HL		; á®åà ¨âì ®¬¥à ¯à®è¨¢ª¨ | ||||
| 	 ; | ||||
| 	 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 | ||||
| 	; | ||||
| 
 | ||||
| ;       !TODO number from loader | ||||
|         ; LD A,YL | ||||
|         ; LD L,A | ||||
|         ; LD A,YH | ||||
|         ; LD H,A | ||||
|         ; LD BC,#0107					; !!!!! áà ¢¨âì á 0107h ¢ë¥á⨠à¥ä¥à¥á®¬ âãâ ¨ ¢ loader.asm | ||||
|         ; AND A						; ¥á«¨ à ¢® - ¯à®è«  ¯¥à¥§ £à㧪  | ||||
|         ; SBC HL,BC | ||||
|         ;JR Z,set_config				;!TODO  ªâ¨¢ æ¨ï ¬¥âª¨ IX:IY ¨§ «® ¤¥à  | ||||
| 	;LD IX,ACEX.Config_ID.Sp97_2 | ||||
| 	LD	HL,ACEX.Config_ID.Sp2000 | ||||
| set_config: | ||||
| 	LD      (SYS_PAGE.CONFIG_BYTE),HL		; á®åà ¨âì ®¬¥à ¯à®è¨¢ª¨ | ||||
| 	 ;LD (SYS_PAGE.CONFIG_BYTE),IX			; á®åà ¨âì ®¬¥à ¯à®è¨¢ª¨ | ||||
| 	 ;LD HL,(SYS_PAGE.CONFIG_BYTE)			; ¢§ïâì ®¬¥à ¯à®è¨¢ª¨ ¢ HL | ||||
|         ; | ||||
|         LD      A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON | ||||
|         LD      (SYS_PAGE.CONFIG_DE),A | ||||
|          | ||||
| 	EX AF,AF' | ||||
| 	OUT (SLOT3),A					; Restore SLOT3 | ||||
| 
 | ||||
| 	ENDMODULE | ||||
| ;********************************* | ||||
| ;	¯¥à¢ ï ¨¨æ¨ «¨§ æ¨ï áâà ¨æ: | ||||
| ;	SLOT3=0, SLOT2=2, SLOT1=5, SLOT0=0 | ||||
| 
 | ||||
| 	XOR A | ||||
| 	OUT (RGADR),A | ||||
| 	OUT (RGMOD),A | ||||
| 	OUT (SLOT3),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 | ||||
| 
 | ||||
| ;********************************* | ||||
| ;-----------------------------------------------------------------------; | ||||
| ; Don't use stack (SP) before this point if it`s normal booting!!! | ||||
| 	LD      SP,#C000				; <20> ç «® ¨á¯®«ì§®¢ ¨ï á⥪ !!! | ||||
| 	LD      SP,ROM_MAP.EXP.STACK			; <20> ç «® ¨á¯®«ì§®¢ ¨ï á⥪ !!! | ||||
| 	PUSH    HL					; á®åà ¨âì ®¬¥à ¯à®è¨¢ª¨ | ||||
| 
 | ||||
| 	CALL    PORTS_INIT				; ¨¨æ¨ «¨§¨à®¢ âì ¯®àâë | ||||
| @ -785,7 +772,7 @@ set_config: | ||||
| 	CALL    EMM.CheckColdInit			; ¨¨æ¨ «¨§ æ¨ï ¯ ¬ï⨠| ||||
| 	POP     HL					; ª®ä¨£ãà æ¨ï | ||||
| ;	JR      Reset_Handler.start | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| 	MODULE	Reset_Handler | ||||
| start:		DI | ||||
| 		IN	A,(SLOT3) | ||||
| @ -849,68 +836,12 @@ Check_Spec_Page: | ||||
| 		JR	Check_EE_Port.After_Hard_Rst | ||||
| 		; | ||||
| ;--------------------------------------- | ||||
| No_Reset_handlers:/* | ||||
| 		; Check ZX ROMS Loaded | ||||
| 		LD	A,(Spec_Page.flag_Z) | ||||
| 		CP	'Z' | ||||
| 		JR	NZ,.Load_ZXROMS | ||||
| 		LD	A,(Spec_Page.flag_X) | ||||
| 		CP	'X' | ||||
| 		JR	NZ,.Load_ZXROMS | ||||
| 		; [x] 31/12/23 ¯®¤áâà å®¢ª  ®â ¥¤®ãâ¥çª¨ ¯ ¬ï⨠| ||||
| 		LD	A,R | ||||
| 		AND	#80 | ||||
| 		JR	Z,No_Need_To_Load_ZXROMS | ||||
| .Load_ZXROMS:	XOR	A | ||||
| 		LD	R,A | ||||
| 		; | ||||
| 		; Load ZX ROM's | ||||
| init_rom_address EQU	#8200						;!HARDCODE | ||||
| 		; | ||||
| 		LD	HL,init_zx_roms | ||||
| 		LD	DE,init_rom_address | ||||
| 		LD	BC,init_zx_roms.length | ||||
| 		LDIR | ||||
| 		; | ||||
| 		CALL	init_rom_address | ||||
| 		; | ||||
| 		LD	HL,#C000 | ||||
| 		LD	DE,#C001 | ||||
| 		LD	BC,#3FFF | ||||
| 		LD	(HL),C | ||||
| 		LDIR							; § ¡¨âì FF- ¬¨ | ||||
|         	; áâ ¢¨¬ ¬¥âªã ¥á«¨ ¯à®£à㧨«¨ <20>‡“ ᯥªâà㬠 | ||||
| 		DEC	DE		; Spec_Page.flag_X | ||||
| 		LD	A,'X' | ||||
| 		LD	(DE),A | ||||
| 		DEC	DE		; Spec_Page.flag_Z | ||||
| 		LD	A,'Z' | ||||
| 		LD	(DE),A | ||||
| 		; ‡ £«ã誠 ¤«ï áâà ¨æë #41   ¢á直© ¯®¦ àë© | ||||
| 		LD	HL,PROG_NO_ROM | ||||
| 		LD	DE,#C000+Spec_Page.no_zx_rom | ||||
| 		LD	BC,PROG_NO_ROM.size | ||||
| 		LDIR | ||||
| 		; | ||||
| 		LD	HL,RAM_BIOS_PROG | ||||
| 		LD	DE,#C000+Spec_Page.to_bios | ||||
| 		LD	BC,RAM_BIOS_PROG.Length | ||||
| 		LDIR | ||||
| 		*/ | ||||
| ;No_Need_To_Load_ZXROMS: | ||||
| No_Reset_handlers: | ||||
| 		POP	AF | ||||
| 		OUT	(SLOT3),A | ||||
| ;-------------------------------------------------------------------------------------------------------------------; | ||||
| ;!TODO ᤥ« âì ¢ë¡®à ¢ Setup, çâ® £à㧨âì ¢ v<>‡“ ¯à¨ áâ àâ¥. ‚ à¨ âë: | ||||
| ;[ ]	0 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨¨â¨âì áâà ¨æã #41 ª ª ¢ 3.04 | ||||
| ;[ ]	1 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ áâ à⥠¥á«¨ ¥â ä« £  ZX | ||||
| ;[ ]	2 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ ª ¦¤®¬ ¯¥à¥§ ¯ã᪥ (¬®¦¥â ¡ëâì ®¯ á®) | ||||
| ;[ ]	3 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨¨â¨âì áâà ¨æã #41 â ª, ç⮡ ª®¤ ¢ ¥© ¯®¤£à㦠« <20>‡“ ᯥªâà㬠 ¯à¨ ®¡à é¥¨¨ | ||||
| ;-------------------------------------------------------------------------------------------------------------------; | ||||
| 	ENDMODULE | ||||
| ; | ||||
| ;************************************** | ||||
| ; | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 	MODULE Prepare_For_Setup | ||||
| Set_ALL_Mode:	LD A,#FF | ||||
| 		LD BC,Port_All_Mode | ||||
| @ -919,18 +850,17 @@ Set_ALL_Mode:	LD A,#FF | ||||
| Set_Default_Screen: | ||||
| 		CALL FN_SYNC.INT_DEF					; set default int | ||||
| 		ld a,128+4						; !HARDCODE  | ||||
| 		;ld c,BIOS.FN_SYNC | ||||
| 		;RST_to_BIOS_18						; set default vsync | ||||
| 		CALL FN_SYNC						; set default vsync | ||||
| Setup_to_RAM:	LD HL,Setup_Starter.Start | ||||
| 		LD DE,COMPILE_ADDR.SETUP_STARTER | ||||
| 		LD BC,Setup_Starter.Length | ||||
| 		LD BC,Setup_Starter.Size | ||||
| 		LDIR | ||||
| 	;   á⥪ ª« ¤ñâáï  ¤à¥á ¢®§¢à â  ¨ ¤ «ìè¥ â é¨âáï ¢á直¬¨ ª®áâë«ï¬¨, ç⮡ ¢¥àãâìáï  § ¤ | ||||
| 		CALL Setup_Starter.Exec					; #C000 | ||||
| 		;JP	PrepareToZX | ||||
| 	ENDMODULE | ||||
| 	; | ||||
| 
 | ||||
| 
 | ||||
| PrepareToZX:	;CALL	init_zx_roms | ||||
| 		; Setup HDD drives for ZX Spectrum mode | ||||
| 		DI | ||||
| @ -961,7 +891,13 @@ PrepareToZX:	;CALL	init_zx_roms | ||||
| 		INC	A | ||||
| 		CP	#10 | ||||
| 		JR	C,.loop | ||||
| 		; ¢ë室 ¢ ०¨¬ zx spectrum | ||||
| 	; ¢ë室 ¢ ०¨¬ zx spectrum | ||||
| 		;!TODO § ¬¥¨âì   ãáâ ®¢ªã ¨§ à ¬¡«®ª  ; [ ] free zx pages! | ||||
| 		 LD	A,5 | ||||
| 		 OUT	(SLOT1),A | ||||
| 		 LD	A,2 | ||||
| 		 OUT	(SLOT2),A | ||||
| 		; | ||||
| .start_zx:	JP	GOTO_SPEC.ZX_MODE | ||||
| ;*********************************** | ||||
| ;	ˆ¨æ¨ «¨§ æ¨ï ¯®à⮢ | ||||
| @ -1014,8 +950,8 @@ PORTS_INIT: | ||||
| 		; reg 4 | ||||
| 		LD	A,4 | ||||
| 		OUT	(Z84.SIO.Ch_B.Ctrl),A | ||||
| 		;LD A,#45 | ||||
| 		LD A,#40 | ||||
| 		;LD	A,#45 | ||||
| 		LD	A,#40 | ||||
| 		OUT	(Z84.SIO.Ch_B.Ctrl),A | ||||
| 		; reg 3 | ||||
| 		LD	A,3 | ||||
| @ -1069,29 +1005,29 @@ PORTS_INIT: | ||||
| 		OUT	(C),A | ||||
| 	; ‘¡à®á ª®â஫«¥à  ¤¨áª®¢®¤  | ||||
|         	; ‚ª«îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª  (âà¥âìï ª®ä ) | ||||
| 		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 | ||||
| 		OUT (FDC_93.DrvCTRL),A | ||||
| 		push hl | ||||
| 		pop hl | ||||
| 		XOR A | ||||
| 		OUT (FDC_93.Command),A | ||||
| 		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 | ||||
| 		OUT	(FDC_93.DrvCTRL),A | ||||
| 		PUSH	HL | ||||
| 		POP	HL | ||||
| 		XOR	A | ||||
| 		OUT	(FDC_93.Command),A | ||||
| 		; ‚몫îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª  | ||||
| 		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 | ||||
| 		; set HDD1/not-HDD2 | ||||
| 		LD A,IDE.Chanel.Primary | ||||
| 		OUT (IDE.Chanel.Set),A | ||||
| 		LD BC,#7FFD | ||||
| 		LD A,#10 | ||||
| 		OUT (C),A							; BASIC_48 mode | ||||
| 		LD B,#1F | ||||
| 		LD A,01 | ||||
| 		OUT (C),A							; RAM-0 mode !!! | ||||
| 		LD	A,IDE.Chanel.Primary | ||||
| 		OUT	(IDE.Chanel.Set),A | ||||
| 		LD	BC,#7FFD | ||||
| 		LD	A,#10 | ||||
| 		OUT	(C),A							; BASIC_48 mode | ||||
| 		LD	B,#1F | ||||
| 		LD	A,01 | ||||
| 		OUT	(C),A							; RAM-0 mode !!! | ||||
| 	; ®ç¨á⪠ ¡ãä¥à®¢ ª« ¢¨ âãàë ¨ ¬ëè¨ ¢ SIO | ||||
| 		CALL	.clean_kbd_buf | ||||
| 		JR	.clean_mouse_buf | ||||
| @ -1211,12 +1147,12 @@ Exec: | ||||
| ;----------------------[] | ||||
|         DI  | ||||
|         POP	HL                                                      ;  ¤à¥á ¢®§¢à â  ¢ EXP ¨§ SETUP | ||||
|         LD	SP,#8000                                                ;!HARDCODE  | ||||
|         PUSH	HL | ||||
|         PUSH	AF | ||||
|         ; LD	SP,#8000                                                ;!HARDCODE  | ||||
|         ; PUSH	HL | ||||
|         ; PUSH	AF | ||||
|         JP SETUP_MAIN | ||||
|   ENT | ||||
| Length		EQU $-Setup_Starter.Start | ||||
| Size		EQU $-Setup_Starter.Start | ||||
| 	ENDMODULE | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;-----------------------------------------------------------------------; | ||||
|  | ||||
| @ -1,3 +1,11 @@ | ||||
| ;-------------------------------------------------------------------------------------------------------------------; | ||||
| ;!TODO ᤥ« âì ¢ë¡®à ¢ Setup, çâ® £à㧨âì ¢ v<>‡“ ¯à¨ áâ àâ¥. ‚ à¨ âë: | ||||
| ;[~]	0 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨¨â¨âì áâà ¨æã #41 ª ª ¢ 3.04 | ||||
| ;[~]	1 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ áâ à⥠¥á«¨ ¥â ä« £  ZX | ||||
| ;[~]	2 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ ª ¦¤®¬ ¯¥à¥§ ¯ã᪥ (¬®¦¥â ¡ëâì ®¯ á®) | ||||
| ;[ ]	3 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨¨â¨âì áâà ¨æã #41 â ª, ç⮡ ª®¤ ¢ ¥© ¯®¤£à㦠« <20>‡“ ᯥªâà㬠 ¯à¨ ®¡à é¥¨¨ | ||||
| ;-------------------------------------------------------------------------------------------------------------------; | ||||
| 
 | ||||
| ; | ||||
| ; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; | ||||
| 
 | ||||
|  | ||||
| @ -8,6 +8,7 @@ | ||||
| ;                                                             | ||||
| ROM_MAP: | ||||
| .EXP                    EQU     0 | ||||
| .EXP.STACK		EQU	#C000
 | ||||
| .ROM                    EQU     0 | ||||
| .LOADER                 EQU     0					 | ||||
| .LOGO                   EQU     0 | ||||
| @ -44,7 +45,7 @@ COMPILE_ADDR: | ||||
| .MAIN                   EQU     #8000
 | ||||
| .SETUP                  EQU     #8000
 | ||||
| .DEPACK                 EQU     #D000
 | ||||
| .SETUP_STARTER          EQU     #C000
 | ||||
| .SETUP_STARTER          EQU     .SETUP + SETUP_MAIN.Size	;#C000
 | ||||
| ;  | ||||
| ; ÛÛÛÛÛÛ» ÛÛÛÛÛÛÛ»ÛÛÛÛÛÛ»  ÛÛÛÛÛ»  ÛÛÛÛÛÛ»ÛÛ»  ÛÛ»ÛÛÛÛÛÛÛ»ÛÛÛÛÛÛ»  | ||||
| ; ÛÛÉÍÍÛÛ»ÛÛÉÍÍÍͼÛÛÉÍÍÛÛ»ÛÛÉÍÍÛÛ»ÛÛÉÍÍÍͼÛÛº ÛÛɼÛÛÉÍÍÍͼÛÛÉÍÍÛÛ» | ||||
|  | ||||
| @ -199,13 +199,16 @@ DEPACK_DATA.length      EQU $-DEPACK_DATA | ||||
|                 DISP COMPILE_ADDR.SETUP | ||||
|                  ShowInfo 'Setup block DISP start', 1            ; !!!!! test | ||||
| SETUP_MAIN:      INCLUDE 'src/bios/ROM/SETUP/Main.asm' | ||||
| SETUP_MAIN.Size	 EQU	$-SETUP_MAIN | ||||
|                  ShowInfo 'Setup block DISP end', 1              ; !!!!! test | ||||
|                 ENT | ||||
|         ENDIF | ||||
| 
 | ||||
| 
 | ||||
| 	ASSERT ($ + Setup_Starter.Size) < (STACK - STACK.Size), "WARNING: Stack area overlaps code..." | ||||
|         ShowInfo 'Setup block of ROM end', 0                          ; !!!!! test | ||||
| BLOCK_Setup.Length      EQU $-BLOCK_Setup | ||||
| 
 | ||||
| 
 | ||||
| ;--------------------------------------- | ||||
| ; | ||||
| 
 | ||||
|  | ||||
| @ -79,14 +79,14 @@ MEMMAP2	EQU	TEMP                                                    ;  | ||||
| TPOINTD	EQU	TEMP - SYS_PAGE.RAMD_KEYS.NUM - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11/2023 | ||||
| 
 | ||||
| 
 | ||||
| ;======================================= | ||||
| ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; | ||||
| ;SETUP_MAIN: | ||||
| MAIN_START: | ||||
| 	POP	AF | ||||
| 	POP	HL | ||||
| 	; POP	AF | ||||
| 	; POP	HL | ||||
| 	LD	SP,STACK | ||||
| 	PUSH	HL | ||||
| 	LD      (RET_TO_EXP_ADDR),hl | ||||
| 	LD      (RET_TO_EXP_ADDR),HL | ||||
| 	JP	START | ||||
| ;	DB	"(C) 2002 PETERS PLUS LTD " | ||||
| RET_TO_EXP_ADDR: WORD 0000                                                   ; place for save ret address to exp | ||||
| @ -243,58 +243,57 @@ CMSERR: | ||||
| 	; RST_to_BIOS | ||||
| 	RET | ||||
| 
 | ||||
| CLEARM:	IN	A,(SLOT3) | ||||
| 	PUSH	AF | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| CLEARM:		IN	A,(SLOT3) | ||||
| 		PUSH	AF | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 	; save RAM disks on reboot when memory is cleared | ||||
| 	LD	HL,SYS_PAGE.RAMD_KEYS | ||||
| 	LD	DE,TPOINTD | ||||
| 	LD	BC,SYS_PAGE.RAMD_KEYS.NUM | ||||
| 	LDIR | ||||
| 	; [x] 4/11/2023 | ||||
| 	 LD	HL,SYS_PAGE.Sp_RAMD_KEYS | ||||
| 	 LD	DE,TPOINTD + SYS_PAGE.RAMD_KEYS.NUM | ||||
| 	 LD	BC,SYS_PAGE.Sp_RAMD_KEYS.NUM | ||||
| 	 LDIR | ||||
| 	; | ||||
| 		LD	HL,SYS_PAGE.RAMD_KEYS | ||||
| 		LD	DE,TPOINTD | ||||
| 		LD	BC,SYS_PAGE.RAMD_KEYS.NUM | ||||
| 		LDIR | ||||
| 		; [x] 4/11/2023 | ||||
| 		 LD	HL,SYS_PAGE.Sp_RAMD_KEYS | ||||
| 		 LD	BC,SYS_PAGE.Sp_RAMD_KEYS.NUM | ||||
| 		 LDIR | ||||
| 		; | ||||
| 	; ®ç¨é ¥¬ RAM Table | ||||
| 	LD	HL,MEMMAP2 | ||||
| 	LD	DE,MEMMAP2+1 | ||||
| 	LD	BC,255 | ||||
| 	LD	(HL),0 | ||||
| 	LDIR  | ||||
| 		LD	HL,MEMMAP2 | ||||
| 		LD	DE,MEMMAP2+1 | ||||
| 		LD	BC,255 | ||||
| 		LD	(HL),0 | ||||
| 		LDIR | ||||
| 	; ¢®ááâ  ¢«¨¢ ¥¬ RAM ¤¨áª¨  | ||||
| 	LD	IX,SYS_PAGE.RAMD_KEYS					;RAM DISKS | ||||
| 	LD	H,high SYS_PAGE.RAMD_FAT | ||||
| 	LD	D,high MEMMAP2 | ||||
| 	LD	BC,SYS_PAGE.RAMD_KEYS.NUM*256 + #FF | ||||
| 	CALL	.MEMLOOP | ||||
| 		LD	IX,SYS_PAGE.RAMD_KEYS					;RAM DISKS | ||||
| 		LD	H,high SYS_PAGE.RAMD_FAT | ||||
| 		LD	D,high MEMMAP2 | ||||
| 		LD	BC,SYS_PAGE.RAMD_KEYS.NUM*256+#FF | ||||
| 		CALL	.MEMLOOP | ||||
| 	; [x] 4/11/2023 | ||||
| 	 LD	IX,SYS_PAGE.Sp_RAMD_KEYS | ||||
| 	 LD	B,SYS_PAGE.Sp_RAMD_KEYS.NUM | ||||
| 	 CALL	.MEMLOOP | ||||
| 		LD	IX,SYS_PAGE.Sp_RAMD_KEYS | ||||
| 		LD	B,SYS_PAGE.Sp_RAMD_KEYS.NUM | ||||
| 		CALL	.MEMLOOP | ||||
| 	; | ||||
|         CALL    EMM.InitMem | ||||
| 	LD	BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks		;#400E | ||||
| 	CALL	G_VALUE | ||||
| 	OR	A | ||||
| 	CALL	NZ,CCHAIN | ||||
| 	POP	AF | ||||
| 	OUT	(SLOT3),A | ||||
| 		CALL	EMM.InitMem | ||||
| 		LD	BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks		;#400E | ||||
| 		CALL	G_VALUE | ||||
| 		OR	A | ||||
| 		CALL	NZ,CCHAIN | ||||
| 		POP	AF | ||||
| 		OUT	(SLOT3),A | ||||
| 	; [x] 04/11/2023 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. | ||||
| 	 LD	B,high BIOS.SWAP_RAM_DRIVES.Sp2000 | ||||
| 	 JP	SWAP_RAM_DRIVES | ||||
| 		LD	B,high BIOS.SWAP_RAM_DRIVES.Sp2000 | ||||
| 		JP	SWAP_RAM_DRIVES | ||||
| 	; | ||||
| 	; | ||||
| .MEMLOOP: | ||||
| 	LD	A,(IX) | ||||
| 	INC	IX | ||||
| 	OR	A | ||||
| 	LD	L,A | ||||
| 	CALL	NZ,RCHAIN | ||||
| 	DJNZ	.MEMLOOP | ||||
| 	RET | ||||
| 		LD	A,(IX) | ||||
| 		INC	IX | ||||
| 		OR	A | ||||
| 		LD	L,A | ||||
| 		CALL	NZ,RCHAIN | ||||
| 		DJNZ	.MEMLOOP | ||||
| 		RET | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| @ -483,7 +482,9 @@ START: | ||||
| 
 | ||||
| 
 | ||||
| ;R08	CALL	OPENDOS | ||||
| 	CALL	ZXCLS | ||||
| 	;!TEST 20/08/2024 | ||||
| 	 ;CALL	ZXCLS | ||||
| 	; | ||||
| 	CALL	READING | ||||
| 	CALL	TCHEKSM | ||||
| 	CALL	NZ,SETDEFX | ||||
| @ -1308,12 +1309,14 @@ PMEMORY: | ||||
| 	LD	A,"K" | ||||
| 	JP	PRINT_CHAR | ||||
| 
 | ||||
|  IFUSED	ZXCLS | ||||
| ZXCLS:	LD	HL,#4000 | ||||
| 	LD	DE,#4001 | ||||
| 	LD	BC,#1AFF | ||||
| 	LD      (HL),L | ||||
| 	LDIR  | ||||
| 	RET  | ||||
|  ENDIF | ||||
| 
 | ||||
| GET_ID:	LD	HL,memBUFFER.ID | ||||
| 	;LD	C,BIOS.FN_VERSION | ||||
| @ -1740,10 +1743,10 @@ End             BYTE | ||||
| 
 | ||||
| memBUFFER       MAIN_BUFFERS = $ | ||||
| STACK           EQU #C000 | ||||
| .size           EQU 128 | ||||
| .Size           EQU 128 | ||||
| 
 | ||||
| 
 | ||||
|  IF memBUFFER.End-1 > #C000-STACK.size | ||||
|  IF memBUFFER.End-1 > #C000-STACK.Size | ||||
| 	DISPLAY 'memBUFFER.Shared overlaps STACK by:	',/A,(memBUFFER.End-1)-(#C000-STACK.size) | ||||
| 	ASSERT memBUFFER.End-1 < #C000-STACK.size | ||||
|  ENDIF | ||||
| @ -1761,7 +1764,7 @@ STACK           EQU #C000 | ||||
|         DISPLAY 'End code address:                ',/A,$-1 | ||||
|         DISPLAY 'Code size:                       ',/A,$-COMPILE_ADDR.MAIN | ||||
|         DISPLAY 'End buffers address:             ',/A,memBUFFER.End-1 | ||||
|         DISPLAY 'Free memory:                     ',/A,#C000-(memBUFFER.End-1)-STACK.size | ||||
|         DISPLAY 'Free memory:                     ',/A,#C000-(memBUFFER.End-1)-STACK.Size | ||||
|         DISPLAY 'Unused bytes before INT_POINTER: ',/A,INT_POINTER-before_intPointer | ||||
|  ENDIF | ||||
| ; | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik