===== Rozšířená paměti URAM v Elementu ===== Element bez rozšíření obsahuje 2 MB RAM, z toho 1024 KB zabírá systém. V chráněném režimu je tedy volno 128 URAM stránek po 8 KB. Pokud se připojí rozšiřovací modul (další 2 MB), ke 128 stránkám přibude dalších 256 stránek. Takže celkem bude 384 stránek URAM po 8 KB. 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. ---- {{:info.png?nolink&64 |}}//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. Také může dojít k update firmware, a prostor který se nyní jeví jako volný může být v budoucnu obsazen. **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í ===== {{:lnxspectrum:ememory.svg?400&NoLink|}}\\ 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)\\ \\ Stránky v Elementu můžou být v rozsahu 0-383 (v chráněném režimu) pouze, pokud obsahuje rozšiřující modul na 4 MB. Pokud jej nemá, rozsah je v rozsahu 0-127. ---- ==== 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 | ---- {{:info.png?nolink&64 |}}//MB03+ obsahuje pouze Zonu 0. Ostatní Zony nejsou k dispozici. Proto také neobsahuje registr 73h. Oproti Elementu má MB03+ více paměti. Dodává se s 16 MB URAM, takže použitelných RamPages je pěkných 1920 v Protected režimu.// ---- 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:ememory2.svg?400&NoLink |}}