continue freeing zx pages...
This commit is contained in:
		
							parent
							
								
									30edc55a57
								
							
						
					
					
						commit
						22f4acafbe
					
				| @ -1 +1 @@ | ||||
| Subproject commit a98a635f03359ec21cd8dd77917a384a8a37caef | ||||
| Subproject commit 265b46fce2afbc3e8acef59e83d78b84b88d4ced | ||||
| @ -5,7 +5,11 @@ | ||||
| ;[~]	2 - ƒà㧨â <20>‡“ ᯥªâà㬠 ¨§ ROM ¯à¨ ª ¦¤®¬ ¯¥à¥§ ¯ã᪥ (¬®¦¥â ¡ëâì ®¯ á®) | ||||
| ;[ ]	3 - <20>¥ £à㧨âì <20>‡“ ᯥªâà㬠, ¨¨â¨âì áâà ¨æã #41 â ª, ç⮡ ª®¤ ¢ ¥© ¯®¤£à㦠« <20>‡“ ᯥªâà㬠 ¯à¨ ®¡à é¥¨¨ | ||||
| ;-------------------------------------------------------------------------------------------------------------------; | ||||
| 
 | ||||
| ; 	Spectrum RAM map | ||||
| ; SLOT0	= 0 | ||||
| ; SLOT1	= 5 | ||||
| ; SLOT2	= 2 | ||||
| ; SLOT3	= 0 '48kb',1,2,3,4,5,6,7 '128kb',8,9,10,11,12,13,14,15 '256kb' | ||||
| ; | ||||
| ; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; | ||||
| 
 | ||||
| @ -19,62 +23,172 @@ | ||||
| 
 | ||||
| ;!FIXIT | ||||
| ;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------; | ||||
| ;¢å®¤:	ॣ B:	    0 - ¨¨â ¯ ¬ï⨠Spectrum  48k ¨ 2-å áâà ¨æ vROM | ||||
| ;		    1 - ¨¨â ¯ ¬ï⨠Pentagon 128k ¨ 3-å áâà ¨æ vROM | ||||
| ;		    2 - ¨¨â ¯ ¬ï⨠Pentagon 512k ¨ 3-å áâà ¨æ vROM | ||||
| ;		    3 - ¨¨â ¯ ¬ï⨠Scorpion 256k ¨ 3-å áâà ¨æ vROM | ||||
| ;		4..15 - § à¥§¥à¢¨à®¢ ë | ||||
| ;¢å®¤:	ॣ 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..63 - § à¥§¥à¢¨à®¢ ë | ||||
| ;	       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 | ||||
| ;	ॣ A:	®¬¥à ZX TASK ¯®ª  çâ® ¢á¥£¤  ®«ì!!! | ||||
| ;¢ë室:	CF = 0: HL - ®¬¥à  à ¬¡«®ª®¢ ¤«ï ०¨¬®¢ 0..16. H=vRAM, L=vROM | ||||
| ;	CF = 1:  A - ®¬¥à ®è¨¡ª¨ | ||||
| FN_ENTRANCE: | ||||
| ; | ||||
| ;¥á«¨ áâíª  å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥à뢠¨ï¬¨ | ||||
| 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			; ¤ ë¥ ®¢®© § ¤ ç¨ | ||||
| 		 ; | ||||
| 		 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 | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;!FIXIT | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	--- | ||||
| ;‚室:	A - TASK NUMBER | ||||
| FREE_vMEMORY:	LD	D,(IX + _#ZX_TASK_DATA.vROM_ID) | ||||
| 		LD	A,(IX + _#ZX_TASK_DATA.vRAM_ID) | ||||
| 		CALL	EMM.FreeMem | ||||
| 		LD	A,D | ||||
| 		CALL	EMM.FreeMem | ||||
| 		JP	RES_FLAG_ZXvROM | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	A - TASK NUMBER | ||||
| ;‚ë室:	H - vRAM block ID | ||||
| ;	L - vROM block ID | ||||
| GET_RAMBLOCK_IDs: | ||||
| 		LD	H,(IX + _#ZX_TASK_DATA.vRAM_ID) | ||||
| 		LD	L,(IX + _#ZX_TASK_DATA.vROM_ID) | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;!FIXIT | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	HL - ¡«®ª áâà ¨æ   ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  10 èâ.) | ||||
| FREE_vROM: | ||||
| ;‚室:	HL - ¡«®ª áâà ¨æ   ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  11 èâ.) | ||||
| ;	 A - TASK NUMBER | ||||
| INIT_vROM:	LD	A,(IX + _#ZX_TASK_DATA.vROM_ID) | ||||
| 		CP	(HL) | ||||
| 		EX	DE,HL | ||||
| 		CALL	NZ,EMM.FreeMem | ||||
| 		EX	DE,HL | ||||
| 		; | ||||
| 		LD	A,(HL) | ||||
| 		LD	(IX + _#ZX_TASK_DATA.vROM_ID),A | ||||
| 		INC	HL | ||||
| 		; ãáâ ®¢ª  ¯®à⮢ ROM | ||||
| 		LD	DE,.PORTS | ||||
| 		LD	B,.PORTS.Size | ||||
| .loop:		PUSH	BC | ||||
| 		LD	A,(HL) | ||||
| 		INC	HL | ||||
| 		AND	A | ||||
| 		JR	Z,.not_Spec_Page | ||||
| 		LD	A,Spec_Page		;!FIXIT ¨«¨ ®áâ ¢¨âì? | ||||
| .not_Spec_Page:	LD	B,A | ||||
| 		LD	A,(DE) | ||||
| 		INC	DE | ||||
| 		PUSH	DE | ||||
| 		PUSH	HL | ||||
| 		CALL	SET_PORTS | ||||
| 		POP	HL | ||||
| 		POP	DE | ||||
| 		POP	BC | ||||
| 		DJNZ	.loop | ||||
| 		; | ||||
| 		RET | ||||
| 		; | ||||
| .PORTS:		DB	ACEX.vROM.BASIC_128	; ROM-ID - BASIC 128 | ||||
| 		DB	ACEX.vROM.BASIC_48	; ROM-ID - BASIC 48 | ||||
| 		DB	ACEX.vROM.TR_DOS	; ROM-ID - TR-DOS | ||||
| 		DB	ACEX.vROM.BIOS		; ROM-ID - EXPANSION | ||||
| 		DB	ACEX.vROM.BIOS_3	; ROM-ID - BIOS-1 | ||||
| 		DB	ACEX.vROM.BIOS_4	; ROM-ID - BIOS-2 | ||||
| 		DB	ACEX.vROM.BASIC_128_2	; BASIC 128 - 2 | ||||
| 		DB	ACEX.vROM.BASIC_48_2	; BASIC 48 - 2 | ||||
| 		DB	ACEX.vROM.TR_DOS_2	; TR-DOS - 2 | ||||
| 		DB	ACEX.vROM.BIOS_2	; BIOS (ZX_EXP) - 2 | ||||
| .PORTS.Size	EQU	$-.PORTS | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;!FIXIT | ||||
| ;?????  ¤®? | ||||
| /* | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	HL - ¡«®ª áâà ¨æ   ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  10 èâ.) | ||||
| FREE_vRAM: | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;!FIXIT | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	B - ª®«¨ç¥á⢮ áâà ¨æ | ||||
| GET_vROM: | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;!FIXIT | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚室:	HL - ¡«®ª áâà ¨æ   ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤  10 èâ.) | ||||
| INIT_vROM: | ||||
| ;‚室:	A - TASK NUMBER | ||||
| FREE_vROM:	LD	A,(IX + _#ZX_TASK_DATA.vROM_ID) | ||||
| 		CALL	EMM.FreeMem | ||||
| 		PUSH	AF | ||||
| 		CALL	RES_FLAG_ZXvROM | ||||
| 		POP	AF | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚•Ž„:	HL - ᯨ᮪ áâà ¨æ | ||||
| ;	 E - 0 = 128kb, 1 = 512kb | ||||
| @ -107,7 +221,7 @@ INIT_PENT_vRAM:	DI | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;!FIXIT ª®áïª á® á⥪®¬ ¢ SLOT3 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚•Ž„:	HL - ᯨ᮪ áâà ¨æ | ||||
| ;	 D -  ç «ì®¥ § ç¥¨¥ ¤«ï 7FFD | ||||
| @ -123,7 +237,7 @@ SET_7FFD:	LD	A,(HL) | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;!FIXIT | ||||
| ;!FIXIT ª®áïª á® á⥪®¬ ¢ SLOT3 | ||||
| ;‚•Ž„:	HL - ᯨ᮪ áâà ¨æ. | ||||
| INIT_SCORP_vRAM:; first 128 kb | ||||
| 		LD	E,0 | ||||
| @ -136,28 +250,59 @@ INIT_SCORP_vRAM:; first 128 kb | ||||
| 		OUT	(C),A | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚믮«ï¥âáï ¤«ï ¨¨â  âàñå áâà ¨æ Ž‡“ 48k | ||||
| GET_48k_MEM:	LD	B,3 | ||||
| 		JP	EMM.GetMem | ||||
| ;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï âàñå áâà ¨æ Ž‡“ 48k | ||||
| GET_48k_MEM:	LD	D,3 | ||||
| 		JR	GET_XXX_MEM | ||||
| ;‚믮«ï¥âáï ¤«ï ¨¨â  3 áâà ¨æ Ž‡“ 48k ¨ 29 áâà ¨æ Ž‡“ Pent512k 		 | ||||
| GET_512k_MEM:	LD	D,3+29 | ||||
| 		JR	GET_XXX_MEM | ||||
| ;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï 3 áâà ¨æ Ž‡“ 48k ¨ 5 áâà ¨æ Ž‡“ 128k â ç¥ª | ||||
| GET_128k_MEM:	LD	D,3+5 | ||||
| 		;JR	GET_XXX_MEM | ||||
| GET_XXX_MEM:	CALL	FREE_vRAM | ||||
| .init:		LD	B,D | ||||
| 		CALL	EMM.GetMem | ||||
| 		RET	C | ||||
| 		LD	(IX + _#ZX_TASK_DATA.vRAM_ID),A | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚믮«ï¥âáï ¤«ï ¨¨â  3 áâà ¨æ Ž‡“ 48k ¨ 5 áâà ¨æ Ž‡“ 128k â ç¥ª | ||||
| GET_128k_MEM:	LD	B,3+5 | ||||
| 		JP	EMM.GetMem | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;-----------------------------------------------------------------------; | ||||
| FREE_vRAM:	XOR	A | ||||
| 		LD	C,A | ||||
| 		OR	(IX + _#ZX_TASK_DATA.vRAM_ID) | ||||
| 		RET	Z | ||||
| 		LD	(IX + _#ZX_TASK_DATA.vRAM_ID),C | ||||
| 		JP	EMM.FreeMem | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;!FIXIT SET_TASK_POINTER | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï 3 áâà ¨æ Ž‡“ 48k ¨ 14 áâà ¨æ Ž‡“ Scorp256k | ||||
| ;‚室:	--- | ||||
| ;‚ë室:	A - RAM block ID | ||||
| GET_SCORP_RAM:	IN	A,(SLOT3) | ||||
| 		LD	E,A | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 	; ¢ë¤¥«¨âì áâà ¨æë ᪮௠ | ||||
| GET_SCORP_RAM:	CALL	FREE_vRAM | ||||
| 		CALL	.SCORP | ||||
| 		RET	C | ||||
| 		LD	D,L | ||||
| 		; Get Pent128 mem | ||||
| 		LD	B,3+5 | ||||
| 		CALL	EMM.GetMem | ||||
| 		; A - Pent128 mem block id | ||||
| 		LD	B,D	; Scorp128 mem block id | ||||
| 		CALL	EMM.MergeMemBlocks | ||||
| 		LD	(IX + _#ZX_TASK_DATA.vRAM_ID),A | ||||
| 		RET | ||||
| 		; | ||||
| .SCORP:	; ¢ë¤¥«¨âì áâà ¨æë ᪮௠ | ||||
| 		XOR	A | ||||
| 		LD	DE,#F0D0 ; ¤«ï 䨫ìâà . #F0 - ¬ áª , #D0 - áâà ¨æë ISA #D0..#DF | ||||
| 		LD	BC,8*256 + #FF ; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª  ª®æ  à ¬¡«®ª  | ||||
| 		LD	HL,SYS_PAGE.RAM_TABLE | ||||
| .allocate_loop:	DEC	L | ||||
| @ -174,10 +319,8 @@ GET_SCORP_RAM:	IN	A,(SLOT3) | ||||
| 		DJNZ	.allocate_loop | ||||
| 	; L = 㪠§ â¥«ì 楯®çª¨. | ||||
| 		AND	A | ||||
| .exit:		LD	A,E | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,L | ||||
| 		RET | ||||
| 		; | ||||
| 	; 䨫ìâà ¤«ï áâà ¨æ ᪮௠ | ||||
| 		;¢ë室:	ZF=1 - áâà ¨æ  ¥ ¯®¤å®¤¨â | ||||
| .check_barred_pages: | ||||
| @ -187,19 +330,19 @@ GET_SCORP_RAM:	IN	A,(SLOT3) | ||||
| 		RET	C | ||||
| 		RET	Z | ||||
| 		; check isa page | ||||
| 		AND	#F0 | ||||
| 		XOR	#D0		; áâà ¨æë ISA #D0..#DF | ||||
| 		AND	D | ||||
| 		XOR	E		; áâà ¨æë ISA #D0..#DF | ||||
| 		RET	NZ | ||||
| 		LD	L,#D0 | ||||
| 		LD	L,E | ||||
| 		RET | ||||
| 		; | ||||
| .error_no_mem:	PUSH	DE | ||||
| .error_no_mem:	;PUSH	DE | ||||
| 		LD	A,C | ||||
| 		CALL	EMM.FreeMem | ||||
| 		POP	DE | ||||
| 		LD	L,BIOS.Error.EMM.NoMemory | ||||
| 		;POP	DE | ||||
| 		LD	A,BIOS.Error.EMM.NoMemory | ||||
| 		SCF | ||||
| 		JR	.exit | ||||
| 		RET | ||||
| ;-----------------------------------------------------------------------; | ||||
|  ENDMODULE | ||||
|  ENDIF | ||||
| @ -255,7 +398,7 @@ GOTO_SPEC:	IN	A,(SLOT3) | ||||
| ;start_basic: | ||||
| .BASIC_128:	LD	SP,#C000 | ||||
| 		LD	HL,RES128_PROG | ||||
| 		LD	DE,ZX_VARS.PRINTER_BUFFER                                    ; § ¯ã᪠¯à®£à ¬¬ë   BASIC-¥. | ||||
| 		LD	DE,ZX_VARS.PRINTER_BUFFER			; § ¯ã᪠¯à®£à ¬¬ë   BASIC-¥. | ||||
| 		LD	BC,RES128_PROG.Size | ||||
| 		LDIR | ||||
| 		DI | ||||
|  | ||||
| @ -41,6 +41,16 @@ RET_FROM_BIOS_TO_BASIC48: | ||||
| ;                       ******* SERVICE ******* | ||||
| ;-----------------------------------------------------------------------; | ||||
| 
 | ||||
| ; ª®íä䍿¨¥â á¬¥é¥¨ï ¯® ®¬¥àã â áª¨ | ||||
|  MACRO	GET_ZX_TASK_DATA_OFFSET | ||||
| 	RLCA | ||||
| 	RLCA | ||||
| 	RLCA | ||||
| 	RLCA | ||||
| 	AND	#30				; ®¢ ï § ¤ ç  0..3 | ||||
|  ENDM | ||||
| 
 | ||||
| 
 | ||||
| ;------[ „…˜ˆ”<CB86>€–ˆŸ ŠŽŒ€<C592>„<EFBFBD>މ ‘’<E28098>ŽŠˆ,<2C>…<EFBFBD>…„€<E2809E><E282AC>މ „‹Ÿ "EXPANSION" ]-------; | ||||
| COMAND_LINE: | ||||
|         LD HL,(#5C5D)   ;!HARDCODE CH_ADR | ||||
| @ -119,12 +129,8 @@ TASK_SWITCH: | ||||
| 	PUSH AF | ||||
| 
 | ||||
| 	LD A,(HL) | ||||
| 	RLCA | ||||
| 	RLCA | ||||
| 	RLCA | ||||
| 	RLCA | ||||
| 	AND #30					; ®¢ ï § ¤ ç  0..3 | ||||
|         LD C,A | ||||
| 	GET_ZX_TASK_DATA_OFFSET | ||||
| 	LD C,A | ||||
| 
 | ||||
| 	IN A,(SLOT3) | ||||
| 	LD B,A					; 3-ï áâà ¨æ  â¥ªã饩 § ¤ ç¨ | ||||
| @ -132,44 +138,32 @@ TASK_SWITCH: | ||||
| 	OUT (SLOT3),A | ||||
| 
 | ||||
| 	LD	IX,SYS_PAGE.ZX_TASK.CURRENT	; ¤ ë¥ § ¤ ç | ||||
| 	; !TEST | ||||
| 	 ;LD	E,(IX) | ||||
| 	 ;LD	D,0 | ||||
| 	 ;ADD	IX,DE | ||||
| 	 ;LD	E,SYS_PAGE.CURRENT_TASK.Size | ||||
| 	 ;ADD	IX,DE | ||||
| 	 LD	A,_#ZX_TASK_DATA	; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç | ||||
| 	 ADD	A,(IX)				; ᬥ饨¥ ¤ ëå ⥪ã饩 § ¤ ç¨ | ||||
| 	 LD	E,A | ||||
| 	 LD	D,0 | ||||
| 	 ADD	IX,DE				; ¤ ë¥ ⥪ã饩 § ¤ ç¨ | ||||
| 	; | ||||
| 	LD	A,_#ZX_TASK_DATA		; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç | ||||
| 	ADD	A,(IX)				; ᬥ饨¥ ¤ ëå ⥪ã饩 § ¤ ç¨ | ||||
| 	LD	E,A | ||||
| 	LD	D,0 | ||||
| 	ADD	IX,DE				; ¤ ë¥ ⥪ã饩 § ¤ ç¨ | ||||
| 
 | ||||
| 	LD (IX + _#ZX_TASK_DATA.SLOT3_PAGE),B	; á®åà ¨âì áâà ¨æã 3 | ||||
| 	LD HL,0 | ||||
| 	ADD HL,SP | ||||
| 	LD (IX + _#ZX_TASK_DATA.SP),L				; á®åà ¨âì á⥪ § ¤ ç¨ | ||||
| 	LD (IX + _#ZX_TASK_DATA.SP),L		; á®åà ¨âì á⥪ § ¤ ç¨ | ||||
| 	LD (IX + _#ZX_TASK_DATA.SP + 1),H | ||||
| 	SET 0,(IX + _#ZX_TASK_DATA.STATE)				; ãáâ ®¢¨âì ä« £ á®åà ¥®á⨠⥪ã饩 § ¤ ç¨ | ||||
| 	RES 1,(IX + _#ZX_TASK_DATA.STATE)				; ãáâ ®¢¨âì ä« £, çâ® § ¤ ç  ¯®ª¨ãâ  | ||||
| 	SET 0,(IX + _#ZX_TASK_DATA.STATE)	; ãáâ ®¢¨âì ä« £ á®åà ¥®á⨠⥪ã饩 § ¤ ç¨ | ||||
| 	RES 1,(IX + _#ZX_TASK_DATA.STATE)	; ãáâ ®¢¨âì ä« £, çâ® § ¤ ç  ¯®ª¨ãâ  | ||||
| 
 | ||||
| 	LD	IX,SYS_PAGE.ZX_TASK.CURRENT | ||||
| 	; !TEST | ||||
| 	 ;LD	E,C | ||||
| 	 ;LD	D,0 | ||||
| 	 ;ADD	IX,DE				; ®¢ ï § ¤ ç  | ||||
| 	 ;LD	E,16 | ||||
| 	 LD	A,_#ZX_TASK_DATA	; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç | ||||
| 	 ADD	A,C				; ᬥ饨¥ ¤ ëå ®¢®© § ¤ ç¨ | ||||
| 	 LD	E,A | ||||
| 	 LD	D,0 | ||||
| 	; | ||||
| 	LD	A,_#ZX_TASK_DATA		; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç | ||||
| 	ADD	A,C				; ᬥ饨¥ ¤ ëå ®¢®© § ¤ ç¨ | ||||
| 	LD	E,A | ||||
| 	LD	D,0 | ||||
| 	ADD	IX,DE				; ¤ ë¥ ®¢®© § ¤ ç¨ | ||||
| 
 | ||||
| ;	BIT 1,(IX + _#ZX_TASK_DATA.STATE) | ||||
| ;	JR NZ,TASK_IN_WORK			; § ¤ ç  ¢ à ¡®â¥ ??? ¥¢¥à®¥ § ¢¥à襨¥ | ||||
| ;						; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï | ||||
| 
 | ||||
| 	BIT 0,(IX + _#ZX_TASK_DATA.STATE)		; ¡ë«  á®åà ¥ /¥â | ||||
| 	BIT 0,(IX + _#ZX_TASK_DATA.STATE)	; ¡ë«  á®åà ¥ /¥â | ||||
| 	JR NZ,TASK_SET				; § ¤ ç  áãé¥áâ¢ã¥â | ||||
| 
 | ||||
| ;	§ ¤ ç¨ ¥ ¡ë«®! | ||||
| @ -199,7 +193,7 @@ TASK_RESTORE: | ||||
| 	 ;LD	D,0 | ||||
| 	 ;ADD	IX,DE				; ®¢ ï § ¤ ç  | ||||
| 	 ;LD	E,16 | ||||
| 	 ADD	A,_#ZX_TASK_DATA	; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç | ||||
| 	 ADD	A,_#ZX_TASK_DATA		; ᬥ饨¥ ¤ ëå ¢ â ¡«¨æ¥ § ¤ ç | ||||
| 	 LD	E,A | ||||
| 	 LD	D,0 | ||||
| 	; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik