Uživatelské nástroje

Nástroje pro tento web


lnxspectrum:memorymapelement

Rozšířená paměti URAM v Elementu

Element bez rozšíření obsahuje 2 MB RAM, z toho 640 KB zabírá systém. Tato velikost se může zvýšit v případě že se nastaví například Pentagon 1024, kdy si systém vezme ještě další paměť.

Zbylá paměť se dá využít pro programy speciálně napsané pro Element (případně MB03+). Tato paměť se nazývá Ultimate RAM (URAM). Kolik URAM máme k dispozici si můžeme zjistit na dvou portech gZXI_011 a gZXI_012.

RPGS = IN(gZXI_011) + 256 * IN(gZXI_012)
URAM = RPGS * 8

v RPGS máme počet volných 8 KB stran. v URAM je celková volná paměť v KB.


Element se dá rozšířit pomocí 2MB modulu na 4 MB. Tato paměť se připojí k již stávající volné paměti.


Mapování

Pokud v Elementu chcete využít URAM paměť, musíte nejprve toto mapování zapnout. To se provádí na portu gZXI_010.

gZXI_010 - UItimate layout type activate/Extra memory mode - reflects
00 None
01 Ultimate Full mode - all RAM/FLASH/FRAM access (dev. purposes only)
02 Ultimate Protect mode - access to user RAM only. System regions as DivSD, ZX, MB02+ is protected

Režim 1 - Ultimate Full mode Tento režim je určen pro systémové aplikace. Pro běžné aplikace se tento režim nedoporučuje. Při zápisu na nevhodné místo v paměti hrozí zhroucení systému.

Režim 2 - Ultimate Protect mode Režim pro aplikace. V tomto režimu nehrozí přepsání systémové paměti. Ta je totiž zcela oddělená.


Rozvržení


R0- ROM (128).
R1- ROM (klasická ROM ze ZX Spectrum 48).

0,2,4,6- ZX RAM.

1,3,5,7- ZX RAM zpomalovaná ULA čipem. Zpomalování paměti lze v Elementu vypnout přepnutím na Machine Pentagon 128.

5 - VideoRAM, 7 - alternativní VideoRAM. Videoram v ZX128 rampage 5 lze v Elementu přesunout na ZX128 rampage 6. Tím se uvolní videoram ze Zóny 2.

URAM ve 4 zónách, po 8 KB (Area_0 a Area_1)


Adresace

Pokud máme nastaven režim 2 na portu gZXI_010, máme k dispozici celou volnou URAM. Nyní se můžeme rozhodnout, kam tuto paměť chceme namapovat. Prostor viditelný procesorem Z80 je 64 KB. Element tento prostor rozděluje na 4 zóny. Kterou zónu budeme aktuálně nastavovat ukážeme pomocí portu 73h. Po nastavení zóny nastavíme pomocí portu 53h, že se bude mapovat URAM.

Adresa Zona
0-16383 0
16384-32767 1
32768-49151 2
49152-65535 3

MB03+ obsahuje pouze Zonu 0. Ostatní nejsou k dispozici. Proto také neobsahuje registr 73h.


Každá zóna se dělí na dva 8KB bloky, zvané. Area_0 a Area_1. O tom co bude ve které Area namapováno rozhoduje registr 53h. My budeme mapovat URAM. Například stránku URAM_10 do Area_0 a URAM_11 do Area_1. Tím získáme 16 KB URAM pěkně za sebou.

	ld	bc,gZXI	;registry gZXI
	ld	a,10h	;Ultimate RAM režim
	Out	(c),a
	inc	b
	Ld	a,2	;režim 2
	Out	(c),a
	
	ld	a,2	;Zóna 2 (32768-49151)
	Out	(73h),a
	
	ld	a,3+32	;Write Area0 a Area1 enable + URAM mapping
	Out	(53h),a
	
	xor	a	;vynulovat High byte
	Out	(27h),a
	Out	(67h),a
	
	ld	a,10	;nastavit Area 0 na 10
	out	(07h),a
	inc	a	;nastavit Area 1 na 11
	Out	(47h),a

A máme v Zóně 2 namapovaných 16KB URAM, která je namapována takto:

lnxspectrum/memorymapelement.txt · Poslední úprava: 2024/06/21 19:24 autor: lanex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki