Organizácia videopamäte na počítači Cambridge Z88

Článek vytvořil Martin M1, předkládám v původním znění bez překladu do češtiny.

Počítač Cambridge Z88 bol posledným počítačom Cliva Sinclaira.
Vychádzal z nezrealizovaného projektu prenosného počítača s názvom Pandora.
Ako zobrazovacia jednotka bola navrhnutá plochá obrazovka, ktorú už predtým Sinclair použil vo svojich televízoroch.
Aby však bola zobrazovacia plocha dostatočne veľká, obraz bol zväčšený šošovkami a zrkadlami.
Tie však spôsobovali zvláštny priestorový efekt, s čím mal zrak problém.
Plánované rozlíšenie malo byť 64×24 znakov.
Dizajn od Ricka Dickinsona bol vo finále celkom podarený, zaoblené hrany a klávesnica ako na QL by vás i dnes očarili.
Avšak koncept zostal len na stoloch vývojárov v podobe rôznych poprepájaných dosiek a s niekoľkými hotovými modelmi vonkajšieho vzhľadu.


Archív Ricka Dickinsona

Clive Sinclair na víziu prenosného počítača nikdy nezanevrel.
Technológiu LCD, ktorú nemal v obľube nakoniec pripustil a tak sa LCD displej EG2001S-AS-1 od Epsonu stal základným kameňom nového počítača Z88.
Ten bol však čoskoro nahradený displejom DMF690N od firmy Optrex s lepším kontrastom (super-twisted).
Displej poskytoval rozlíšenie 640×64 bodov a bol riadený deviatimi čipmi.

Nebol by to však Slive Sinclair, keby by nedostal z hardvéru viac, než by sa zdalo na prvý pohľad.
Dokázal pridať na displej ďalšiu farbu (šedú) a tiež efekt blikania.

Displej je ovládaný cez rýchle sériové rozhranie a riadený srdcom počítača, zákazníckym čipom uPD65031 od firmy NEC.
Ten je obdobou čipov ULA v predošlej rade počítačov, avšak od svojich starších bratov je omnoho múdrejší a spotrebou neuveriteľne úsporný.
Generuje všetky signály pre pamäte, sprostredkováva sériovú komunikáciu s okolím, riadi všetky prerušenia a generuje obraz na LCD displeji.
Je tak komplexný, že okrem neho sú v útrobách počítača len mikroprocesor a pamäte ROM a RAM.

Základ generovania obrazu je akoby prevzatý zo ZX80/81.
Avšak v Z88 je rozšírený a zdokonalený.
Kým na ZX80/81 sa videodáta (obrazová základňa) odkazujú na znakovú predlohu v ROM, v Z88 môže byť predloha umiestnená úplne obecne v ROM či RAM.
A navyše, Z88 má nie jednu, ale hneď štyri voliteľné predlohy znakov.

Najskôr sa však pozrime na to, ako Z88 pracuje s pamäťou.
Pamäť je v počítači delená na 4 segmenty vo veľkosti 16kB, každý segment teda zaberá jednu štvrtinu adresného priestoru.
Ako je teda možné, že Z88 môže mať podľa špecifikácie až 4MB pamäte?
Každý segment má priradený 8-bitový register SR0 – SR3, ktorého hodnota ukazuje na 16kB banku pamäte.
Pamäťových baniek môže byť v počítači až 256, čím jednoduchou matematikou dostaneme číslo 4096kB.
Najvyššie dva bity SR registra ukazujú na pamäťové zariadenie, 00b je interná pamäť v počítači, 01b je pamäť na karte v prvom slote, 10b v druhom slote a 11b v slote s číslom 3.
Zvyšných 6 bitov určuje banku v danom pamäťovom zariadení, čiže v jednom slote môže byť maximálne 1MB pamäte (64x16kB).
Do každého segmentu je možné pripojiť ktorúkoľvek banku, pričom rovnakú banku je možné pripojiť do viacerých segmentov.

Výnimkou je polovica najnižšieho segmentu (0000-1FFF), kde je jedinou voľbou banka 00h (interná ROM) alebo 20h (interná RAM).
Na hornú polovicu najnižšieho segmentu (adresy 2000-3FFF) možno pripojiť len banky s párnym číslom.

Ak ste sa dostali pri čítaní až sem, určite si položíte otázku, kde sú vlastne uložené zobrazované dáta.
Nuž, odpoveď je jednoduchá, môžu byť uložené hocikde.
V ktorejkoľvek banke a v ktoromkoľvek segmente, ba dokonca nemusia byť v žiadnom segmente, čím nezavadzajú v adresnom priestore mikroprocesora.
To, ako bude vyzerať výsledný obraz na displeji, určuje ďalších päť 16-bitových registrov riadiaceho čipu.
Štyri registre sú nazvané PB (pixel base) a odkazujú na pamäť, kde je umiestnená predloha (matrica) znakov.
Piaty register má názov SBR (screen base file) a určuje jednotlivé znaky, ako budú zobrazované na displeji.

Screen Base File obsahuje 108 bytov znakov (OS používa kódovanie ASCII) pre každý riadok, každý znak má vlastný atribút. ďalší riadok začína o 256 bytov ďalej ako predchádzajúci, takže v pamäti zostáva 40 bytov voľných.
Pár bajtov z toho využíva OS na uloženie definícii okien.
Spolu teda Screen Base File zaberá 2kB pre všetkých 8 riadkov (256×8).
Keďže znaky na Z88 môžu mať šírku 8 alebo 6 bitov, podľa toho sa mení aj počet zobrazených znakov v riadku, od 80 do 106 (107. znak nemôže byť zobrazený celý).
Toto však nie je dosiahnuté softvérovo, ale hardvérovo, keď Blink čip z predlohy odošle do displeja len 6 bitov.
Zarovnanie znakov na displeji celkom slušne rozhádžete, keď na jednotlivých riadkov rôzne použijete znaky z rôznymi šírkami.

Ako už bolo spomenuté, každý znak má vlastné atribúty. Je ich päť:
– typ – HIRES (8 bitová šírka) alebo LORES (6 bitová šírka)
– normal/reverse čiže inverzia znaku
– flash, teda blikanie znaku
– gray, znak bude zo zníženým jasom (dosiahnuté pre oko nepostrehnuteľným rýchlym blikaním)
– underline, posledný byte z predlohy je nahradený podčiarkovníkom (iba pri LORES).

Najnižší bit atribútového bajtu rozširuje definovaný počet znakov v predlohe na 512, znaková sada LORES má teda 9 bitov.
HIRES využíva na tento účel aj ďalší bit (ale nemá underline), čím má znakovú sadu 1024 znakov.
Operačný systém počítača využíva 128znakové sady, jednotlivé sady predstavujú rôzne štýly písma (vysoké, nízke, tučné, špeciálne znaky).

Obidva druhy znakov môžu odkazovať na dve predlohy znakov, LORES na dve, aj HIRES na dve.
Každá predloha môže byť umiestnená v ktorejkoľvek pamäťovej banke nezávislej od ostatných.

Font šírka počet register veľkosť umiestnenie v OS
LORES0 6 bitov 64 znakov PB0 512B RAM (UDG)
LORES1 6 bitov 448 znakov PB1 4kB ROM
HIRES0 8 bitov 768 znakov PB2 8kB RAM (MAP)
HIRES1 8 bitov 256 znakov PB3 2kB ROM

Na umiestenie jednotlivých predlôh ukazuje hodnota zapísaná v príslušnom registri, ktorá zodpovedá číslu pamäťovej banky a počiatočnej adrese.
Aby to nebolo celkom jednoduché, táto adresa je upravená tak, aby predlohy znakov nezačínali hocikde, ale len na „okrúhlych“ adresách.

Z pohľadu programátora je teda potrebné nastaviť všetkých päť registrov adresami dostupných pamäťových baniek.
Jednotlivé predlohy znakov môžu zostať v ROM, alebo sa dajú vytvoriť kedykoľvek v RAM.
Stačí si príslušnú pamäťovú banku pripojiť, zmeniť hodnoty a odpojiť.

Z tohto všetkého vyplýva, že displej môže fungovať v textovom, grafickom, alebo zmiešanom režime.
Buď meníme znakovú základňu (teda rozloženie znakov na displeji) a jednotlivé znaky sú vytvárané zo statických predlôh (ako na ZX80/81), alebo je základňa statická a menia sa predlohy znakov (skoro ako na ZX Spectre), alebo kombináciou obidvoch spôsobov.
Textový režim poskytuje väčšiu rýchlosť pri zobrazení znaku ale aj napríklad pri rolovaní textu všetkými smermi.
Grafický režim umožňuje vytváranie akéhokoľvek obrazu na displeji – operačný systém tento štandardne využíva v programe PipeDream na zobrazenie náhľadu na text, kde jeden bod zodpovedá jednému znaku textu.
Tiež pár existujúcich hier, ako napríklad Manic Miner, využíva grafický režim.

Veľkou výhodou pre programátora je, že po zápise dát buď do znakovej základne alebo do predlohy znakov môže byť daná pamäťová banka odpojená z adresného priestoru procesora, pričom to nemá žiadny vplyv na zobrazovanie.
Programátorovi tak zostáva celý adresný priestor voľný.
Tým sa napríklad podarilo dosiahnuť pripojenie RAM do celého adresného priestoru a beh operačného systému CP/M.

Ale to by už bolo na ďalší dlhý článok.