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: