clanky/80kB

Úprava adresování a zvětšení rozsahu paměti počítače ZX Spectrum

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:

  1. Vyměnit paměťové obvody 32 kb za (54 kb, případně otestovat, nejsou-li některé obvody funkční v celém rozsahu.
  2. Upravit obvody selekce typu paměti (TYPE SELECT) tak, aby byl vybrán typ TI, ale místo přivedení OV či +5V na příslušný vstup obvodu 74LS157 (poloha propojky 3 nebo 4) přivést na vstup vodič A15 nebo výstup občerstvovacího obvodu. U ISSUE 2 je typ pamětí TI pevně určen, u vyšších čísel verze je nutno příslušnou propojku zavést, nebyla-li již přímo instalována, a ev. propojku typu OKI zrušit. Pole propojek typu je umístěno v horní části plošného spoje v blízkosti zdířek pro magnetofon.
  3. Modifikovat, zapojení adresového vodiče A15 tak, že přímý se vede jen do obvodu 74LS157 (viz bod b) a na konektor počítače, zatímco na obvod ULA a výběrový obvod paměti 64 kB se zavede přes rezistor 470 Ω. Schéma je na obr. 2.
  4. Zvýšit "tvrdost" obvodu RC signálu RESET výměnou rezitoru i kondenzátoru R31, C27 (doporučeno hodnoty jsou R = 4,7 kΩ, C = 100 μF) a signál RESET přivést, přes diodu rovněž na vstupy R obvodu 74L874 kvůli nastavení režimu hned po zapnutí pačítače (signál RESFF).
  5. Signály A15QE i RESFF vyvést na nepoužité plošky konektoru počítače (A1SGB na B28, RESFF na B04) pro připojení vnějších zařízení.
  6. V případě, že by uživatel chtěl celé zařízení kromě pamětí instalovat mimo prostor mikropočítače, je nutné místo signálu RESFF na plošku B04 vyvést vstup obvodu 74LS157 (viz bod b) pro připojení vodiče A15 a v mikropočítači jej ošetřit rezístorem lkΩ proti + 5V, ovšem pouze v případě užití obvodů s občerstvením 8 bitů. Tento zásah je nutný pouze pro činnost vnějšího občerstvovacího obvodu. Při užití obvodů s občerstvením 7 bitů není tento zásah nutný a na uvedený vstup přivedeme signál A15 propojkou přímo v mikropočítači. Po těchto úpravách bude počítač bez vnějšího zařízení pracovat identicky s normálním počítačem Spectrum 48 kB.

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.

Tabulka 1. Příklad programu ve strojovém kódu. (Program je použitelný pro vyzkoušení základní úpravy počítače)

 
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:

  1. L2 BASIC interpreter - překladač jazyka BASIC, přejatý z rodiny počítačů TRS-80, VIDEO GENIE atd. Objem paměti na zdrojový text je 48340 B. Umožňuje celočíselnou a dvojnásobnou aritmetiku atd.
  2. BASIC 5+ - známý a rozšířený překladač jazyka BASIC od firmy Microsoft, umožňující kromě velmi výkonné aritmetiky včetně funkcí ve dvojité přesnosti rovněž bohatou práci se soubory, větvení a cykly atd.
  3. Výkonný makroasembler Microsoft, rovněž převzatý z rodiny TRS-80, jehož možnosti převyšují všechny běžné asemblery pro Spectrum.
  4. Monitor pro práci pod RWM - nepostradatelný při oživování programů pro Spectrum 80 kB.
  5. Disasembler, umožňující velmi mnoho funkcí včetně relokace, generování tabulek křížových odkazů atd. - jediný diskově neorientovaný disasembler s těmito možnostmi.
  6. Pro kompatibilitu s počítačem Spectrum upravený GENS3, mající cca 55 kB na zdrojový text a přeložený program.
    Všechny tyto programy vyžadují ke své funkci pouze základní jednotku.
  7. CRACKER - program pro univerzální práci s počítačem Spectrum, využívající vnější jednotku upraveného programu za ROM a zvláštního monitoru, umožňujíc kdykoli užitím NMI zastavit libovolný program, prohlížet jej, dělat změny a zase spouštět bez sebemenšího nároku na standardní kapacitu RAM 48 kB.

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: 1865 ×

Aktualizováno: 18. 10. 2018, 17:12



     psp-ikona.gif, 2 kB    Text to HTML converter and formatter  builder_ikonka.gif, 3 kB
           
  Best Old Games      kabelmanie.gif, 2 kB  root_ico.gif, 2 kB  český diskmag pro počítače ZX Spectrum a kompatibilní
synapse.gif, 4 kB   TuningPC.cz - Vše pro tuning a casemodding vašeho PC        pspad88x31.gif  delphix.gif, 1 kB
sgatlantis_88x31_3.jpg, 4 kB  atlan.gif, 22 kB  arkon.jpg, 12 kB  ico_abeceda.gif, 888B  blog.idnes.cz   
           
       
 
  torry_logo.gif, 4 kB  

Stránka načtena za 0.00697 sekund.