ING. PAVEL TROLLER, PETR CÍSAŘ
Úvod
Již mnohokrát se na stránkách zahraničních, ale v poslední době i domácích časopisů, zabývajících se výpočetní technikou, objevily návody na rozšíření paměti počítače ZX Spectrum na 80 kB. Žádný z těchto návodů však neumožňoval optimální využití všech 64 kB rozšířené paměti RWM a přidané paměťové kapacity bylo možno využít buď jen jako paměti dat, nebo byly manuálně či programově přepínány dvě oblasti po 32 kB na adresách 8000H až FFFFH. Proto jsme se rozhodli popsat zapojení, které používáme již asi rok k plné spokojenosti a které umožňuje užívat na počítači ZX Spectrum libovolné programové vybavení včetně operačního systému CP/M.
Popis funkce
Popsané zapojení umožňuje rekonfigurovat paměť počítače tak, že celých 64 kB adresovacího prostoru je tvořeno pamětí RWM. Paměť ROM počítače Spectrum, ale i obrazová paměť, ležící na adresách 4000H až 7FFFM, nejsou v tomto režimu přístupné. To umožní činnost i těm programům, které jsou umístěny v oblastech RWM, kde je u počítače Spectrum buď ROM nebo paměť pro obrazovku. Tím vlastně získáváme univerzální mikropočítač. V případě, že je třeba, vstoupit do obrazové paměti nebo vykonat podprogram z pamětí ROM, užije se dočasné rekonfigurace do módu počítače Spectrum, kdy lze vyvolat např. podprogram pro výstup či vstup znaku z ROM. Návratovou instrukcí RET se pak provede opětná rekonfigurace do univerzálního stavu, což je zajištěno stránkovacím podprogramem. Jedinou podmínkou pro správnou činnost tohoto systému je, že zásobník musí být umístěn v horní polovině adresovacího prostoru.
Kromě této základní úpravy, která je určena k vestavění přímo do mikropočítače, bylo ještě vyvinuto zařízení, které umožňuje další režimy činnosti počítače, např. režim, kdy paměť ROM je nahrazena pamětí RWM, ale obrazová paměť je normálně přístupná. V tomto režimu je možné do RWM na adresách 0 až 3FFFH zakázat zápis, a tím vytvořit "falešnou paměť ROM", v níž může být např. uložena upravená verze standardní ROM.
Přídavné zařízení je navíc vybaveno generátorem impulsu NMI, neboť se ukázalo, že u některých kusů počítače je třeba pro aktivaci NMI přivést na vstup NMI jen krátký impuls.
Obr.1. Schéma základní jednotky
Základní úprava počítače je nakreslena na obr. 1. Pro úpravu adresování se zde využívá dosud nikde nepublikované metody (alespoň pokud je nám známo). Obvod ULA počítače Spectrum dekóduje kvadrant paměti, kterou procesor adresuje, podle stavu na vodičích A14 a A15. Je-li A15 na úrovni H, znamená to, že procesor přistupuje k paměti RWM 32 kB na adresách 8000H až FFFFH. Tehdy ULA negeneruje ani signál ROMCS, ani přístupové signály pro obrazovou paměť. Procesor pracuje na sběrnici, která je od sběrnice obvodu ULA oddělena odpory, zcela nezávisle na zobrazování obrazové paměti. Přivedeme-li tedy na vstup A15 obvodu ULA stav H, docílíme tím vlastně "osamostatnění" procesorové sběrnice. K docílení tohoto stavu je užito metody, kterou bychom mohli, přísně vzato, považovat za "nečistou", ale v samotném počítači Spectrum je již jednou použita pro vytvoření signálu IORQGE, kde se plně osvědčila. Jde o zapojení rezistoru 470 Ω do vodiče A15 mezi procesor a obvod ULA, a připojení tranzistoru (T1, NPN) ke vstupu A15 obvodu ULA tak, že stav H na bázi tohoto tranzistoru způsobí nastavení vstupu na úroveň H. Zapojení obvodu je na obr. 2. Vstup A15GE, jak budeme nazývat nově vzniklý uzel, je navíc vyveden na konektor počítače, aby bylo možno ovlivňovat režim počítače též vnějšími obvody. Vlastní vestavná jednotka na obr. 1 je tvořena třemi integrovanými obvod v technologii LS TTL. Obvod I01 je zapojen jako dekodér adresy FFH na vodičích A0 až A7. Výstupní signál z tohoto obvodu je dále užitím obvodu I02 hradlován signálem IORQ a rovněž je provedeno potlačení nežádoucího ohlášení obvodu při potvrzení přerušení zavedením signálu M1. Výstup již tvoří přímo aktivační signál, který je veden na hodinový vstup obvodu I03a, zapojeného jako dělič dvěma. Výstup Q tohoto obvodu představuje vlastně již signál určující stav přepínače. Před vlastním použitím je však tento signál ještě zpožděn o jeden cyklus M1 obvodem IO3b, což umožňuje optimální programové využití přepínače.
Obr.2. Zapojení obvodu A15 pro ISSUE 3B
Aktivace přepínače se provádí libovolnou vstupně-výstupní instrukcí, pracující s adresou 0FFH. Nejčastěji bude asi užívána instrukce OUT (255) A, která nemění obsah žádného z registrů ani příznakové klopné obvody. Vlastní obsah datové sběrnice je přitom nepodstatný, což výrazně zlepšuje programovou využitelnost přepínače, neboť v registru A může být předáván parametr. Po této přepínací instrukci následuje většinou jednobajtová instrukce, která slouží k předání řízení na zvolenou adresu v druhé stránce paměti. Může to být instrukce RST N, JP (HL), RET a podobně. Tím, že vlastní přepnutí je o jeden cyklus M1 opožděno, je umožněno, že volání rutiny z druhé stránky paměti může být uskutečněno z libovolného místa paměti, nejen ze společné oblasti jako u jiných konstrukcí. Pro pochopení tohoto mechanismu je uveden krátký program, v tabulce 1, který užívá stránkovací rutiny pro volání podprogramů z ROM. Tento program jen přijímá znaky z klávesnice a zobrazuje je na obrazovce. Neobvyklé je však to, že je umístěn na adrese 100H a užívá jako stránkovací rutiny instrukci RSI 8.
Vnější jednotka na obr. 3. je určena k rozšíření o režimy, které neposkytuje základní jednotka. Je vybavena tlačítkovou soupravou, kterou se volí požadovaný režim. Jednotlivá tlačítka ovládají následující funkce:
S1 povoluje činnost základní jednotky. Je to rozpínací tlačítko, které ve své klidové poloze nuluje trvale klopné obvody vnitřní jednotky. Není-li stisknuto žádné jiné tlačítko, počítač se chová jako standardní počítač Spectrum. Je-li stisknuto jen S1, počítač se chová, jako by vnější jednotka nebyla připojena.
S2 odpojuje vnitřní ROM a povoluje RWM na jejím místě. V závislosti na S1 pak může být přepínacími instrukcemi přepínána RWM na adresách 4000H až 7FFFH mezi hlavní RWM a obrazovou pamětí, nebo může být přepínání zamezeno a aktivní je trvale obrazová paměť.
S3 zakazuje zápis do RWM na místě ROM. Tento zákaz je aktivní pouze tehdy, je-li S2 stisknuto a zároveň není přepnuto do režimu aktivních 64 kB RWM, tedy pouze v případě čisté náhrady ROM pamětí RWM.
TI je tlačítko bez aretace, sloužící k vytvoření úzkého impulsu na vodiči NMI.
Schéma vnější jednotky na obr. 3 je v praxi ověřeno a používá se; schéma bylo navrženo vzhledem k součástkám, jež jsme měli k dispozici. Lépe zásobení ušetří oba obvody 3216 tím, že na místě invertorů užijí obvodu 74LS04 a obvod 7474 nahradí obvodem 74LS74. V tom případě se místo invertorů, tvořeného využitím zakázaného stavu poloviny obvodu 7474 využije jeden z invertorů 74LS04, klopný obvod se zapojí jako obvod K-S pro potlačení zákmitů tlačítka TI a jako MKO se využije poslední invertor LS04 s deriyačním obvodem na vstupu. Tím se zapojení minimalizuje na 3 integrované obvody.
Princip činnosti vnější jednotky spočívá v tom, že jednotka detekuje přístup do 1. kvadrantu paměti, při kterém aktivuje A15GE, což připojí RWM a zabrání aktivaci ROM.
Paměťové obvody 64 kb, které jsou použity jako hlavní operační paměť, se vyrábějí ve dvou odlišných verzích, lišících se způsobem občerstvování uložených dat. Novější verze, reprezentovaná hlavně japonskými výrobci Fujitsu. Sanyo, NEC, OKI atd., užívá k občerstvení slova dlouhého jen 7 bitů, zatímco starší typy, reprezentované zejména firmami TI, Siemens a jinými, vyžadují slovo o délce 8 bitů, které v systému se Z-80 není k dispozici. Toto úskalí mnohé podobné náměty buď velkoryse přehlížely, nebo doporučovaly k použití pouze obvody se zaručovaným občerstvením 7 bitů. V počítačích Sinclair se však velmi čato užívají paměťové obvody TMS 4532 od firmy TI, což jsou obvody o kapacitě 64 kb a 8-bitovým občerstvováním, u nichž však byla výrobcem shledána závada v jedné polovině adresovacího prostoru. Při experimentování s těmito obvody se však zjistilo, že určité, poměrně vysoké procento těchto obvodů se jeví být zcela funkčními v celém rozsahu 64 kb. Postupně se podařilo vybrat celou osmici funkčních obvodů, a proto byl vyvinut přípravek, umožňující užití libovolných pamětí s občerstvením 8 bitů [1]. Toto zapojení lze užít bud zcela samostatně nebo sloučit všechna tři zapojení do jednoho, čímž dojde k úspoře relativně nedostupných obvodů LS TTL a k odlehčení sběrnic mikropočítače.
Na obr. 4 je zapojení samostatného občerstvování 8 bitů, na obr. 5 pak zapojení celého systému všech tří zařízení z obr. 1, 3 a 4 dohromady, které se ještě dá vestavět do skříňky mikropočítače Spectrum+ nebo Delta nebo ponechat vně krytu počítače. Jsou-li k dispozici obvody s občerstvením 7 bitů, pak vnější občerstvovací obvod samozřejmé odpadá.
Praktické provedení
Pro realizaci uvedených rozšíření je třeba provést přímo v mikropočítači následující úpravy:
Při práci na mikropočítači se nemusíme příliš obávat poškození obvodů statickou elektřinou, neboť téměř na všechny vodiče (kromě M1) je připojena, alespoň jedna zátěž LS TTL, která náboj spolehlivě odvede. Naopak je nutné dát pozor, aby se na nulový potenciál počítače (GND) nedostalo cizí napětí, např. z anténní zdířky některých televizorů. Proto je nutné před každým pájením odpojit, všechny přívody od počítače. Uzemnení počítače pak již nepovažujeme za nutné.
Ve schématech nejsou kresleny blokovací kondenzátory ani napájecí vedení. Doporučujeme blokovat obvody 7474 kondenzátory 100nF polštářkovóho typu.
Oživení
Nejdříve oživíme počítač se všemi úpravami bez připojení dalších obvodů. Musí se chovat jako normální počítač Spectrum 48 kB (zkontrolujeme proměnnou PRAMT - na adresách 23732,3 by mělo být 255). Nyní připojíme vnitřní jednotku (obr. 1), ale její výstup (emitor tranzistoru TI) na A15GE zatím nepřipojujeme. Zapneme počítač, který musí normálně pracovat. Na výstup IO3b (bázi tranzistoru T1) připojímo logickou sondu (v nouzi stačí i voltmetr). Výstup by měl být ve stavu L. Nyní provedeme v jazyku BASIC instrukci OUT 255,0. Stav na výstupu se musí změnit na H. Opakováním instrukce musí docházet k pravidelnému přepínání jednotky. Přepíná-li zařízení samo náhodně, zablokujeme hodinový vstup IO3a kondenzátorem asi 150pF. Poté jednoduchým programem vyzkoušíme, zda se zařízení nehlásí i na jiných adresách než 255 na adresových vodičích A0 až A7. V případě falešné aktivace na jiné adrese nebo reaktivace na adrese 255 je chyba v zapojení dekodéru brány. Splňuje-li jednotka všechny požadavky, připojíme i emitor tranzistoru T1 na A15GE a vnitřní jednotka je připravena k činnosti.
Vnější jednotku oživujeme připojením k počítači a zkoušením funkce. Nestartuje-li počítač nebo není-li funkce správná, je nutno hledat chybu v zapojení. Zde již se bez sondy, popř. osciloskopu asi neobejdeme.
Činnost jednotky pro osmibitové občerstvení vyzkoušíme tak, že po připojení jednotky zapneme počítač a asi po jedné minutě jej vyzkoušíme.
PAGE MACRO #ADR ;definice makra pro RST 8 ;stránkování RWM DEFW #ADR ENDM ORG 8 ;adresa RST 8 POP HL LD C,(HL) INC HL LD B,(HL) ;načíst parametr do BC INC HL PUSH HL ;uložit návr. adresu LD HL,0C9E1H PUSH HL LD H,L PUSH HL ;vytvoření rutiny LD HL,0FF03 ;pro zpětné stránkování PUSH HL ;na zásobníku LD HL,0 ADD HL,SP PUSH HL ;začátek ťutiny na zás. PUSH BC ;adresa volané rutiny OUT (0FFH),A ;povel ke přepnutí RET ;skok do rutiny ORG 38H ;ošetření přerušení EI RET ORG 100H TEST PAGE 28EH PAGE 31EH ;načtení znaku CP 0DH JR Z,STOP ;ukončeni činnosti - CR CP 0FFH JR Z,TEST ;není tlačítko PAGE 10H ;vytisknuti znaku JR TEST STOP OUT (OFFH),A ;přepnutí na ROM RET ;návrat do BASIC ORG 8000H ;adresa startu OUT (0FFH),A ;přepnutí na RWM JP 100H ;start programu
Programová obsluha
Pro pochopení stránkovacího mechanismu nyní uvedeme v tabulce 1 příklad programu ve strojovém kódu. Program načítá klávesnici, a je-li stisknuta klávesa, nepřetržitě ji vypisuje na obrazovce. Ukončení činnosti se děje tlačítkem ENTER.
Tento program lze použít pro odzkoušení základní úpravy počítače. Je třeba jej uložit např. od C000H a užitím instrukce LDIR přenést na určené místo. Program z jazyka BASIC vyvoláme např. příkazy PAUSE 100: PRINT USR 32768 (zpoždění je nutné proto, abychom stihli uvolnit tlačítko ENTER, než se program rozběhne).
Pro upravený počítač Spectrum již existuje relativně velké množství výkonného programového vybavení. Jsou to zejména tyto programy:
V současné době je v návrhu řadič pružného disku pro takto upraveně Spectrum a po jeho dokončení se počítá s implementací operačního systému CP/M, eventuelně systému NEWDOS.
Závěr
V tomto příspěvku jsme se snažili popsat jednu z cest zvětšení výkonnosti oblíbeného mikropočítače ZX Spectrum. Návod na stavbu doplňků nebyl sice zcela podrobný, domníváme se však, že vážným zájemcům postačí. Realizací uvedených úprav se stane mikropočítač univerzálnějším a po připojení dalších vnějších zařízení, jako jo lepší klávesnice, ev. pružný disk, se z něj stane výkonnější prostředek, než je mnoho mikropočítačů vyráběných ve vyšších cenových kategoriích.
LITERATURA
[1] Ing. Alex Korb: Ústní sdělení
Stránka byla už zobrazena: 1883 ×
Aktualizováno: 18. 10. 2018, 17:12
Stránka načtena za 0.00346 sekund.