|
O mojí osobě
Něco ke staení Články a návody Poezie Odkazy |
Paměť ZX Spectra
ZX Spectrum má 48 kb paměti RAM a 16 kb paměti ROM. Pamět je organizována následujícím způsobem:
kde F znamená nastavení blikání B nastavení jasu PPP uchovávají číslo barvy papíru (z 8 možných) III je číslo inkoustu (z 8 možných) Samotný výpočet adresy bodu potom vypadá následovně:
kde bity 15,14 a 13 ukazují na začátek VideoRAM (16384) TT znamená číslo třetiny (možné pouze 0-2, tj. 00, 01 nebo 10) MMM je číslo mikrořádku v rámci řádku (0-7) ZZZ je pořadí znakového řádku na dané třetině obrazovky SSSSS je číslo znakového sloupce (0 - 31) Výpočet adresy atributu vypadá takto:
kde bity 15 až 10 ukazují na začátek paměti pro atributy ve VideoRAM (22528) TT znamená číslo třetiny (možné pouze 0-2, tj. 00, 01 nebo 10) ZZZ je pořadí znakového řádku na dané třetině obrazovky SSSSS je číslo znakového sloupce (0 - 31) 23552 .. 23750 Tahle část paměti je vyhrazena pro systémové proměnné. Ty obsahují informace o stavu systému a různých nastaveních, jako například pro vyhodnocení stištěné klávesy, adresu začátku fontu, používané barvy a také RAMTOP, což je adresa konce programu v BASICu a začátek oblasti používané strojovým kódem a daty. 23751 .. RAMTOP Zde se ukládá program v BASICu, hodnoty proměnných a jsou zde také zásobníky pro skok, matematické výpočty a další pomocné operace. RAMTOP .. 65535 Paměť od hodnoty RAMTOP až do konce paměti je vyhrazena pro různá data a programy ve strojovém kódu. Rozdíl mezi pamětí ZX Spectra a Didaktika Gamy spočívá v tom, že Didaktik má celkem 80 kb RAM. Vzhledem k tomu, že procesor Z80 A má 16-ti bitovou adresovou sběrnici, není možné adresovat celých 80 kb najednou. Proto je paměť Gamy tak, že po 16 kb paměti ROM následuje 16 kb RAM organizované shodně s ZX Spectrem 48 kb. Na adrese 32769 jsou uložené dvě paměťové banky o velikosti 32 kb, které je možno pomocí příkazů BASICu OUT 127,1 nebo OUT 127,0 přepínat. Trochu složitější situace nastává u ZX Spectra 128 a jeho následovníků (+2,+3). Všechny typy Spectra 128 kb mají svou paměť rozdělenou do 8 stránek o délce 16 kb, jejichž přepínání je u všech těchto verzí stejné. Rozdíl mezi verzemi 128/ +2 a +3 byl v rychlosti programu, běžícího v těchto stránkách. Některé stránky jsou totiž obnovovány ("refrešovány") obvodem ULA, některé procesorem. Ve stránkách, jejichž obnovu provádí ULA, běží programy pomaleji než v těch, jejichž obnovu obsahu provádí procesor. To je způsobeno tím, že když ULA obnovuje obsah paměti a procesor si chce ve stejnou dobu číst obsah této adresy, tak procesor musí počkat.
Stránky jsou v paměti rozmístěny následovně: 0 .. 16383 U ZX 128 a následujících typů byla upravena ROM (například byl vylepšen BASIC - vylepšená editace, přidány příkazy pro ovládání čipu AY apod.), ovšem stále bylo nutno zachovat zpětnou kompatibilitu. Výsledkem jsou tedy dvě paměti ROM označované jako ROM0 (upravená) a ROM1 (kompatibilní s 48k modelem), které se dají přepínat (pouze ze strojového kódu, při pokusu o přepnutí z BASICu by nastal RESET). 16384 .. 32767 Na této adrese je vždy zobrazena stránka číslo 5 32768 .. 49151 Tady je vždy stránka číslo 2 49152 .. 65535 Na tuto adresu se dají zobrazit všechny stránky (samozřejmě kromě ROM), tj. stránky očíslované 0-7. Pokud se na tuto adresu přestránkují stránky 2 nebo 5, tak se jednoduše zdvojí. Pokud tedy na tuto adresu zobrazíme stránku číslo 5 a pak zapíšeme na adresu 49152 hodnotu 255, objeví se na obrazovce krátká čára (neboť stránka 5 se zobrazuje zároveň i od adresy 16384, kde je VideoRAM). Stejné zdvojení platí samozřejmě i pro stránku číslo 2. Při stránkování z BASICu je nutné nastavit si RAMTOP maximálně na hodnotu 49151 (konec stránky 2), jinak dojde k "spadnutí" systému, neboť při přesahu RAMTOP by při přestránkování přišel systém o své zásobníky a proměnné... Aby nebylo málo zmatků při stránkování z BASICu, tak při použití BASICu 128 používají rutiny z ROM stránkování samy, a tedy ho pro BASICový program nemůžete použít. To se samozřejmě dá jednoduše obejít, a to tak, že přepnete do BASICu kompatibilního s původním Spectrem 48 příkazem USR 0, kde vám ovšem možnost stránkování zůstane zachována. Další nespornou výhodou Spectra 128 oproti 48k typům je takzvaná VRAM2 , neboli druhá VideoRAM. To v praxi znamená, že místo VideoRAM ležící od adresy 16384 můžeme zobrazit stránku číslo 7 na adrese 49152, která může být samozřejmě i odstránkována. Takže budeme mít celou paměť pro sebe a přesto uvidíme obrázek. To umožňuje urychlit zobrazování, aniž by na obrazovce cokoliv blikalo nebo cukalo. Přepínání dvou VideoRAM zároveň sloužilo i jako oblíbený zdroj zábav programátorů - faktu, že při RESETu počítače se přepíná VideoRAM vždy zpět na stránku číslo5 využil např. BUSYsoft k jednoduchému efektu - celý program používal pouze druhou VideoRAM, tedy stránku číslo 7. Do stránky číslo 5 uložil text, ve kterém si stěžuje program uživateli, že ho RESETuje. No a při stisku RESETu se místo stránky 7 zobrazila stránka číslo 5 a uživatel se divil, jak program reaguje na stisk RESETu. |