fixed bug in EMM.FreeMem from previous commit
This commit is contained in:
		
							parent
							
								
									6265aedb5c
								
							
						
					
					
						commit
						8b94cc4e63
					
				| @ -707,14 +707,13 @@ POST_5_OK: | ||||
| 	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 | ||||
| 	;  LD	A,5			;!HARDCODE zx page number | ||||
| 	;  OUT	(SLOT1),A | ||||
| 	;  LD	A,2			;!HARDCODE zx page number | ||||
| 	;  OUT	(SLOT2),A | ||||
| 	 OUT	(SLOT2),A		;!HARDCODE zx page number | ||||
| 	 DEC	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 | ||||
|  | ||||
| @ -303,7 +303,7 @@ FN_HDD_READ: | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
| 	EX AF,AF' | ||||
| 	LD H,high SYS_PAGE.RAMD_FAT | ||||
| 	LD H,high SYS_PAGE.RAM_TABLE | ||||
| 	LD L,A | ||||
| 	LD A,(HL) | ||||
| 	OUT (SLOT3),A | ||||
| @ -374,7 +374,7 @@ HD_WR_LOOP: | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	EX	AF,AF' | ||||
| 	LD	H,high SYS_PAGE.RAMD_FAT | ||||
| 	LD	H,high SYS_PAGE.RAM_TABLE | ||||
| 	LD	L,A | ||||
| 	LD	A,(HL) | ||||
| 	OUT	(SLOT3),A | ||||
|  | ||||
| @ -11,7 +11,7 @@ EMM.GetMemSize:	IN	A,(SLOT1) | ||||
| 		OUT	(SLOT1),A | ||||
| 		XOR	A | ||||
| 		LD	C,A | ||||
| 		LD	HL,SYS_PAGE.RAMD_FAT-#4000-#4000 | ||||
| 		LD	HL,SYS_PAGE.RAM_TABLE-#4000-#4000 | ||||
| 		; | ||||
| .loop:		DEC	L | ||||
| 		JR	Z,.exit | ||||
| @ -58,7 +58,7 @@ EMM.InitMem: | ||||
| 	LD	C,A | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	HL,SYS_PAGE.RAMD_FAT					; €¤à¥á RAM FAT ¢ އ“. | ||||
| 	LD	HL,SYS_PAGE.RAM_TABLE					; €¤à¥á RAM FAT ¢ އ“. | ||||
| 	; ®¡ã«ï¥¬ â ¡«¨æã | ||||
| 	XOR	A | ||||
| .loopFree: | ||||
| @ -85,13 +85,13 @@ EMM.InitMem: | ||||
| 	LD	(HL),A | ||||
| 	; ˆ¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks | ||||
| 	XOR	A | ||||
| 	LD	HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000 | ||||
| 	LD	HL,SYS_PAGE.RAMD_KEYS | ||||
| 	LD	B,SYS_PAGE.RAMD_KEYS.NUM | ||||
| .loop2:	LD	(HL),A | ||||
| 	INC	L | ||||
| 	DJNZ	.loop2 | ||||
| 	; [x] 04/11/2023 | ||||
| 	 LD	HL,SYS_PAGE.Sp_RAMD_KEYS; - #4000 - #4000	 | ||||
| 	 LD	HL,SYS_PAGE.Sp_RAMD_KEYS | ||||
| 	 LD	B,SYS_PAGE.Sp_RAMD_KEYS.NUM | ||||
| .loop3:	 LD	(HL),A | ||||
| 	 INC	L | ||||
| @ -140,13 +140,51 @@ RESERVED_PAGES: | ||||
| ;	‚ë室:  L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨ | ||||
| ;		CF - ¯à¨§ ª ®è¨¡ª¨ | ||||
| ;EMM_FN2M: | ||||
| EMM.GetMem:	PUSH	BC | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		; | ||||
| 		LD	HL,SYS_PAGE.RAM_TABLE | ||||
| 		XOR	A | ||||
| 		LD	C,#FF						; Œ¥âª  ª®æ  à ¬¡«®ª  | ||||
| 		; ‡ ¯®«¨âì RAM_TABLE | ||||
| .loop2:		DEC	L | ||||
| 		JR	Z,.error_no_mem | ||||
| 		CP	(HL) | ||||
| 		JR	NZ,.loop2 | ||||
| 		LD	(HL),C | ||||
| 		LD	C,L | ||||
| 		DJNZ	.loop2 | ||||
| 		; L = 㪠§ â¥«ì 楯®çª¨. | ||||
| 		EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,L | ||||
| 		AND	A | ||||
| 		POP	BC | ||||
| 		RET | ||||
| 		; | ||||
| .error_no_mem:	EX	AF,AF' | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,C | ||||
| 		CALL	EMM.FreeMem | ||||
| 		LD	L,BIOS.Error.EMM.NoMemory | ||||
| 		LD	A,L | ||||
| 		SCF | ||||
| 		POP	BC | ||||
| 		RET | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
| EMM.GetMem:	PUSH	BC | ||||
| 		IN	A,(SLOT3) | ||||
| 		EX	AF,AF' | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	C,B						; á®åà ¨âì ç¨á«® ã¦ëå ¡«®ª®¢ | ||||
| 		LD	HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000 | ||||
| 		LD	HL,SYS_PAGE.RAM_TABLE | ||||
| 		; –¨ª« ¯à®¢¥àª¨  «¨ç¨ï ã¦ëå ¡«®ª®¢. | ||||
| 		XOR	A | ||||
| .loop:		DEC	L | ||||
| @ -159,8 +197,8 @@ EMM.GetMem:	PUSH	BC | ||||
| 		; Œ¥áâ® ¥áâì ! | ||||
| 		LD	B,C						; ‚®ááâ ®¢¨âì ã¦ë© ®¡ê¥¬ ¤¨áª  | ||||
| 		LD	C,#FF						; Œ…’Š€ ŠŽ<C5A0>–€ RAM-Disk | ||||
| 		LD	L,A	;low SYS_PAGE.RAMD_FAT; - #4000 - #4000 | ||||
| 		; ‡ ¯®«¨âì RAMD_FAT | ||||
| 		LD	L,A	;low SYS_PAGE.RAM_TABLE | ||||
| 		; ‡ ¯®«¨âì RAM_TABLE | ||||
| 		; A = 0 | ||||
| .loop2:		DEC	L | ||||
| 		; LD A,(HL) | ||||
| @ -185,6 +223,7 @@ EMM.GetMem:	PUSH	BC | ||||
| 		SCF | ||||
| 		POP	BC | ||||
| 		RET | ||||
| */ | ||||
| ;----------------------------------------------------------------------; | ||||
| ; | ||||
| 
 | ||||
| @ -244,12 +283,18 @@ EMM.FreeMemRMD: | ||||
| ; <20>… <20>Ž<EFBFBD>’ˆ’œ DE!!! | ||||
| ;EMM_FN3M: | ||||
| EMM.FreeMem: | ||||
| 	AND	A | ||||
| 	SCF | ||||
| 	; [ ] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF | ||||
| 	 SCF | ||||
| 	 INC	A | ||||
| 	 RET	Z | ||||
| 	 DEC	A | ||||
| 	 ;AND	A | ||||
| 	 ;SCF | ||||
| 	; | ||||
| 	RET	Z | ||||
| 	; | ||||
| 	LD	L,A | ||||
| 	CP	ZX_RAM_ID | ||||
| 	CP	ZX_RAM_ID		;!FIXIT ; [ ] free zx pages! | ||||
| 	CALL	Z,SET_ROM_FLAG_ZX | ||||
| 	; | ||||
| 	IN	A,(SLOT3) | ||||
| @ -257,7 +302,7 @@ EMM.FreeMem: | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 
 | ||||
| 	LD	H,high (SYS_PAGE.RAMD_FAT) | ||||
| 	LD	H,high (SYS_PAGE.RAM_TABLE) | ||||
| 	LD	A,L | ||||
| EMM_F3M_L1: | ||||
| 	LD L,A | ||||
| @ -308,7 +353,7 @@ EMM.GetMemPage: | ||||
| 	OUT (SLOT1),A | ||||
| 
 | ||||
| 	INC B | ||||
| 	LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) | ||||
| 	LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000) | ||||
| EMM_F4M_L1: | ||||
| 	LD A,(HL) | ||||
| 	AND A | ||||
| @ -355,7 +400,7 @@ EMM.GetMemPageNext: | ||||
| 	OUT (SLOT1),A | ||||
| 
 | ||||
| 	LD A,H | ||||
| 	LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) | ||||
| 	LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000) | ||||
| 	LD L,(HL) | ||||
| 	OUT (SLOT1),A | ||||
| 	LD A,L | ||||
| @ -395,7 +440,7 @@ EMM.GetMemBlkPages: | ||||
| 	LD C,A | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT1),A | ||||
| 	LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) | ||||
| 	LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000) | ||||
| 	LD L,(HL) | ||||
| 	LD A,C | ||||
| 	OUT (SLOT1),A | ||||
| @ -429,7 +474,7 @@ EMM.GetMemBlkPages: | ||||
| ; 	CP #FF | ||||
| ; 	JR Z,.end | ||||
| ; 	; | ||||
| ; 	LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) | ||||
| ; 	LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000) | ||||
| ; 	LD L,(HL) | ||||
| ; 	INC B | ||||
| ; 	JR NZ,.loop | ||||
| @ -528,7 +573,7 @@ BLK_RD_WR: | ||||
| 	OUT (SLOT1),A | ||||
| 	LD A,H | ||||
| 
 | ||||
| 	LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) | ||||
| 	LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000) | ||||
| 	LD L,A | ||||
| 
 | ||||
| 	INC D | ||||
| @ -612,7 +657,7 @@ BLK_RD_WR: | ||||
| 
 | ||||
| 	IN A,(SLOT1) | ||||
| 	LD E,A | ||||
| 	LD D,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) | ||||
| 	LD D,high (SYS_PAGE.RAM_TABLE - #4000 - #4000) | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT1),A | ||||
| 	LD A,(DE) | ||||
| @ -623,7 +668,7 @@ BLK_RD_WR: | ||||
| .BLK_PAGE3_X: | ||||
| 	IN A,(SLOT3) | ||||
| 	LD E,A | ||||
| 	LD D,high SYS_PAGE.RAMD_FAT | ||||
| 	LD D,high SYS_PAGE.RAM_TABLE | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
| 	LD A,(DE) | ||||
| @ -1074,7 +1119,7 @@ EMM.DivMemBlocks: | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
| 
 | ||||
| 	LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000) | ||||
| 	LD H,high (SYS_PAGE.RAM_TABLE); - #4000 - #4000) | ||||
| 	LD L,D | ||||
| 	LD A,(HL) | ||||
| 	LD (HL),#FF | ||||
| @ -1102,7 +1147,7 @@ EMM.MergeMemBlocks: | ||||
| 	EX AF,AF' | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
| 	LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000) | ||||
| 	LD H,high (SYS_PAGE.RAM_TABLE); - #4000 - #4000) | ||||
| 	LD L,E | ||||
| 	LD C,B | ||||
| 	LD B,0 | ||||
|  | ||||
| @ -154,7 +154,7 @@ PIC_FN3_NO_2ND: | ||||
| 	EX AF,AF' | ||||
| 	OUT (SLOT2),A | ||||
| 	EX AF,AF' | ||||
| 	LD HL,SYS_PAGE.RAMD_FAT | ||||
| 	LD HL,SYS_PAGE.RAM_TABLE | ||||
| 	LD L,A | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
|  | ||||
| @ -335,7 +335,7 @@ REINIT:	DEC     B | ||||
| 	RET     NZ | ||||
| .ReinitZXpages:                 ;4 | ||||
|  	LD DE,RESERVED_PAGES                                            ; â ¡«¨æ  § ïâëå á¨á⥬ëå áâà ¨æ | ||||
| 	LD HL,SYS_PAGE.RAMD_FAT                                         ; €¤à¥á FAT އ“. | ||||
| 	LD HL,SYS_PAGE.RAM_TABLE                                         ; €¤à¥á FAT އ“. | ||||
| 
 | ||||
|         LD C,SLOT3 | ||||
|         IN B,(C) | ||||
| @ -364,7 +364,7 @@ REINIT:	DEC     B | ||||
|         JR NC,.errorzxloop_noChanges | ||||
| 
 | ||||
|         DEC DE | ||||
|         LD H,high SYS_PAGE.RAMD_FAT | ||||
|         LD H,high SYS_PAGE.RAM_TABLE | ||||
|         LD A,(DE) | ||||
| 	LD L,A | ||||
|         LD A,#FF | ||||
|  | ||||
| @ -25,6 +25,59 @@ | ||||
| MANAGE_ZX_PAGES: | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| .GET_SCORP:	IN	A,(SLOT3) | ||||
| 		LD	E,A | ||||
| 		LD	A,SYS_PAGE | ||||
| 		OUT	(SLOT3),A | ||||
| 	; ¢ë¤¥«¨âì áâà ¨æë ᪮௠ | ||||
| 		XOR	A | ||||
| 		LD	BC,#08*256 + #FF ; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª  ª®æ  à ¬¡«®ª  | ||||
| 		LD	HL,SYS_PAGE.RAM_TABLE | ||||
| .allocate_loop:	DEC	L | ||||
| 		JR	Z,.error_no_mem | ||||
| 		CP	(HL) | ||||
| 		JR	NZ,.allocate_loop | ||||
| 		; | ||||
| 		CALL	.check_barred_pages | ||||
| 		LD	A,0 | ||||
| 		JR	Z,.allocate_loop | ||||
| 		; | ||||
| 		LD	(HL),C | ||||
| 		LD	C,L | ||||
| 		DJNZ	.allocate_loop | ||||
| 	; L = 㪠§ â¥«ì 楯®çª¨. | ||||
| 		AND	A | ||||
| .exit:		LD	A,E | ||||
| 		OUT	(SLOT3),A | ||||
| 		LD	A,L | ||||
| 		RET | ||||
| 	; 䨫ìâà ¤«ï áâà ¨æ ᪮௠ | ||||
| 		;¢ë室:	ZF=1 - áâà ¨æ  ¥ ¯®¤å®¤¨â | ||||
| .check_barred_pages: | ||||
| 		; check reset page | ||||
| 		LD	A,L | ||||
| 		CP	RESET_PAGE | ||||
| 		RET	C | ||||
| 		RET	Z | ||||
| 		; check isa page | ||||
| 		AND	#F0 | ||||
| 		XOR	#D0		; áâà ¨æë ISA #D0..#DF | ||||
| 		RET	NZ | ||||
| 		LD	L,#D0 | ||||
| 		RET | ||||
| 		; | ||||
| .error_no_mem:	PUSH	DE | ||||
| 		LD	A,C | ||||
| 		CALL	EMM.FreeMem | ||||
| 		POP	DE | ||||
| 		LD	L,BIOS.Error.EMM.NoMemory | ||||
| 		SCF | ||||
| 		JR	.exit | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
| ;  | ||||
| .GET_SCORP:	IN	A,(SLOT3) | ||||
| 		LD	E,A | ||||
| 		LD	A,SYS_PAGE | ||||
| @ -80,6 +133,7 @@ MANAGE_ZX_PAGES: | ||||
| .error_no_mem:	LD	L,BIOS.Error.EMM.NoMemory | ||||
| 		SCF | ||||
| 		JR	.exit | ||||
| */		 | ||||
| ;-----------------------------------------------------------------------; | ||||
|  ENDIF | ||||
| 
 | ||||
|  | ||||
| @ -265,7 +265,7 @@ CLEARM:		IN	A,(SLOT3) | ||||
| 		LDIR | ||||
| 	; ¢®ááâ  ¢«¨¢ ¥¬ RAM ¤¨áª¨  | ||||
| 		LD	IX,SYS_PAGE.RAMD_KEYS					;RAM DISKS | ||||
| 		LD	H,high SYS_PAGE.RAMD_FAT | ||||
| 		LD	H,high SYS_PAGE.RAM_TABLE | ||||
| 		LD	D,high MEMMAP2 | ||||
| 		LD	BC,SYS_PAGE.RAMD_KEYS.NUM*256+#FF | ||||
| 		CALL	.MEMLOOP | ||||
| @ -1357,7 +1357,7 @@ RCHAIN: | ||||
| 
 | ||||
| CCHAIN: | ||||
| 	LD	HL,MEMMAP2 | ||||
| 	LD	DE,SYS_PAGE.RAMD_FAT | ||||
| 	LD	DE,SYS_PAGE.RAM_TABLE | ||||
| 	XOR	A | ||||
| CCHAINC: | ||||
| 	CP	(HL) | ||||
|  | ||||
| @ -5,9 +5,7 @@ | ||||
| ; .setXYpos	EQU     3 | ||||
| ; .setInt       EQU     4 | ||||
| ; .setVsinc	EQU     5 | ||||
| ; 	DEFINE SPTeam_year '2022' | ||||
| ; 	DEFINE Disk_subsystem_ver_txt '3.05' | ||||
| ; 	DEFINE SetupVer '2.55' | ||||
| 
 | ||||
|         LUA ALLPASS | ||||
| 	 function get_key_for_value(t, value) | ||||
| 		for column=1,2 do | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik