Mikropočítač ZX Spectrum patří k nejrozšířenějším mikropočítačům ve své cenové kategorii. K jeho rozšíření přispěla především nízká cena a rozsáhlé programové vybavení. Základem počítače je mikroprocesor Z80A a uživatelský obvod ULA. Je dodáván ve dvojím provedení z hlediska paměťové kapacity: se 16 kB nebo se 48 kB RAM. Obě verze obsahují 16 kB ROM, která však ve skutečnosti využívá necelých 15 kB. Všechna vnitřní I/O zařízení jsou vybírána jedinou adresovou linkou AO. Vnější l/O zařízení jsou pak vybírána jednotlivými linkami A2 až A4 (lineární výběr). Mikropočítač je vybaven klávesnicí velikosti 4x10 pryžových tlačítek se zdvihem asi 3 mm, jejímž základem je membránová klávesnice. Stisk klávesy je navíc indikován signálem z akustického měniče. Funkce tohoto měniče je zajištěna programově. Jako zobrazovací jednotku lze použít běžný TV přijímač. V roli barevné zobrazovací jednotky může být použit pouze BTV schopný příjmu signálu kódovaného v soustavě PAL. Mikropočítač zobrazuje 256 x 192 bodů uspořádaných do 32 x 24 polí velikosti 8x8 bodu. Každý bod z tohoto pole je hardwarově zařazen do jedné ze dvou skupin tzv. ink a paper užívaných softwarem jako grafika a pozadí. Příslušenství každého bodu k jedné z těchto dvou skupin lze programově nastavit. Barevný odstín všech bodů současně patřících do jedné takové skupiny lze programově nastavit na jeden ze 16. Na černobílém televizoru se to projeví změnou jasové úrovně. Zmíněná oblast 32x24 znaků, označovaná jako screen, je ohraničena hranicí border, jehož odstín lze rovněž programově nastavit na jeden z osmi možných. Obvod ULA vykonává následující činnosti:
Klávesnice je tvořena soustavou 8x5 kontaktů zapojených do matice tak, že vstupem této matice je horní část adresové sběrnice. Výstup je připojen přes třístavové oddělovače (zahrnuje ULA) k datové sběrnici. Všechny vstupy třístavového oddělovače jsou udržovány skupinou odporů na úrovni H. Funkce je následující: stiskem klávesy se přenese logická úroveň z adresového vodiče na datový vodič. Z toho plyne, že je indikovatelný stisk pouze na adresové lince s logickou úrovní L. Proti kolizi úrovní na adresové sběrnici vlivem současného stisku více kláves na jedné datové lince je vstup ošetřen diodami. Čte se instrukcí IN A, (C) (schopné číst z 64 I/O zařízení), která je obsažena v obslužném programu přerušení, volaném vždy s doběhem snímku. Postupně se přivádí úroveň L na každou z osmi adresových linek A8 až A15 a přečtou se odpovídající data. Klávesnice je vybírána adresovou linkou AO a čtena na bitech DO až D4. Akustický měnič generuje signál v době, kdy je na vstup EAR přiveden signál z vnějšku, popřípadě sleduje úroveň na bitu D4 I/O zařízení adresovaného linkou AO. Klidovou úrovní je úroveň H. čtení z magnetofonu se realizuje čtením bitu D6. Ukládá se na magnetofon zápisem odpovídající úrovně na bit D3, obojí při výběru l/O zařízení adresovaného bitem AO.
Jak již bylo zmíněno: v poli 8x8 bodů lze rozeznávat dvě skupiny bodů s barevným odstínem. Informace o tomto poli jsou uloženy v devíti bajtech ve VIDEORAM. Osm z devíti zmíněných bajtů nesou informaci o tom, co které ze dvou zmíněných skupin ten který bod patří. Informace
0 jednom řádku tohoto pole ve smyslu výše uvedené věty je uložena právě v jednom bajtu. Jednotlivé bity devátého bajtu (tzv. atributu) nesou následující informaci:
Celý tento soubor je uložen ve specifickém sledu, o jehož smyslu bude v dalším ještě zmínka, od adresy 4000h; tzn. od prvé adresy bloku VIDEORAM. Délka souboru je (256 * 192) /8 + 24 * 32 bajtu, kde první sčítanec odpovídá počtu bajtú, jejichž bity určují do které skupiny patří odpovídající bod na obrazovce, druhý sčítanec odpovídá počtu polí jedná se o skupinu atributů. Těchto 6144 + 768 bajtů je uloženo od začátku bloku VIDEORAM v těsném sledu. Logika zobrazování je z největší části obsazena v obvodu ULA. K tomu aby mohl zobrazovat toto poměrně velké množství informace, musí periodicky v přesně daných časech číst obsah paměti (VIDEORAM), ve které je soubor (display file) uložen. K tomu účelu je ZX SPECTRUM řešeno jako dvousběrnicový systém. Toto řešení do jisté míry umožňuje paralelní chod zobrazování a procesoru. Paměťová oblast je k tomuto účelu rozdělena na tři části:
Zobrazování se pak provádí čtením VIDEORAM, jejichž funkci zastává blok 16 kB RAM. V případě, že procesor pracuje s oblastí ROM nebo blokem 32 kB RAM, není jeho činnost ničím zpomalována. Procesor i ULA pracují každý na jiné sběrnici. Při adresování bloku VIDEORAM jde prakticky o žádost o druhou sběrnici, nastává časové sdílení sběrnice s obvodem ULA, v roli logiky zobrazování, a procesoru. Protože přerušování zobrazování by působilo rušivě, má ULA větší prioritu v přístupu do bloku VIDEORAM, a tudíž se ULA za všech okolností chová jako MASTER a uvolňuje sběrnici procesoru prostřednictvím správy hodinového taktu. Hodinový kmitočet pro logiku video a procesor se odvozuje z jediného generátoru pracujícího na kmitočtu 14MHz. Obvod video využívá kmitočtu 7 MHz, procesor 3,5 MHz. ULA blokuje hodiny následujícím způsobem: v případě, že se na adresové sběrnici objeví A15 = L, A14 = H, ULA zablokuje hodinový takt. Protože v čase zjištění této kombinace se nachází hodinový signál v úrovni H, nastává pouhé prodloužení tohoto času. Opětné uvolnění se provádí tak, že doba, kdy je hodinový signál v úrovni L, není zkrácena.
K zobrazování jedné osmice bodu řádku pole 8x8 je nutno načíst zmíněné 2 bajty. Proto, aby tato doba byla co možná nejkratší a stihlo se zobrazovaní i chod procesoru, je VIDEORAM vybírána obvodem ULA v tzv. stránkovém modu. Charakteristickým znakem tohoto výběru dynamických pamětí je pouze jediné adresování řádku a změna (pouze) ve sloupcové adrese na výběr až 128 paměťových míst (v případě RAM 4116). Z toho je vidět, že běžné adresování je pouze zvláštním případem stránkového módu. Obvod ULA tudíž vybírá oba bajty (grafiku i pozadí) ve stránkovém módu, z čehož vyplývá, že všech 9 bajtů má stejnou spodní polovinu adresy, což určuje specifický sled výběru display file. Sekvence výběru je pak následující: Načtou se stránkovým módem 2x2 bajty tzn. kompletní informace o dvou osmicích bodů, které se zobrazují 2,286 ns. Toto načtení se provede poněkud dříve, než je zapotřebí načítání další informace. Vzniklá časová prodleva je dostatečná k provedení případného paměťového cyklu procesoru. V případě, že procesor adresoval oblast VIDEORAM a následuje dostatečná doba na provedení paměťového cyklu, není jeho činnost nijak blokována. V opačném případě ULA zablokuje hodinový takt a uvolní ho až po té, co načetl informaci o tom, co bude zobrazovat v době, kdy bude načítat následující čtveřici bajtů. Toto uvolnění přichází v dostatečně dlouhé době k tomu, aby se nezkrátil precharge time nutný k bezchybné činnosti dynamických RAM. Tedy pro shrnutí v případě, že by procesor pracoval s programem i daty čistě v bloku VIDEO RAM, byla by jeho činnost uvolněna po dobu odpovídající zobrazení borderu plus asi třetina času na zobrazení screenu. Použitý způsob hlídání žádosti procesoru o VIDEORAM s sebou přináší jeden zajímavý důsledek, který vyplývá z toho, že procesor Z80A v čase občerstvování dynamických pamětí posílá po horní části adresové sběrnice obsah registru přerušení a není tudíž vhodné si ukládat tabulku přerušení do oblasti VIDEORAM. Výstupem generátoru obrazu obvodu ULA jsou rozdílové signály U, V, Y, generované podle známých vztahů užívaných v TV technice. V roli generátoru PAL je použit známý obvod LM 1889 z něhož je využit vf oscilátor jako generátor barvonosného kmitočtu 4,43 MHz a dvojice kruhových modulátorů. Synchronizace, potřebná k přepínání fáze signálu V a délky trvání synchronizace barvonosného kmitočtu burstu se přenáší po obou signálech U i V.
V oblasti VIDEORAM jsou použity DRAM 4116 s trojím napájením, což zpravidla u prvních sérií způsobilo majitelům časté nesnáze způsobené nespolehlivým generátorem záporného napětí. V oblasti rozšiřitelných 32 kB jsou použity paměti 4532, což jsou nepodařené paměti 4164. Z toho důvodu jsou také zcela shodně zapojené a to včetně bitu A15! K tomu účelu byl plošný spoj navržen s tím, že bude při oživování upraven podle toho, která polovina původní paměti 4164 je funkční.
Marek Vysocký