CP/M na ZX Spectrum

V rámci nedeľného retra tu máme jeden oprášený článok z AR 9/88, k oživeniu ktorého ma inšpiroval Doda na Foreveri, keď mi predvádzal svoje Spektrum upravené práve podľa tohto návodu.

Jak jsme již dříve slíbili, přinášíme dnes kompletní návod na rozšíření paměti pro mikropočítač ZX Spectrum na 80 až 528 kB a podrobný popis implementace operačního systému CP/M 60 kB v. 2.2 na tento počítač. Autory jsou Jiří Lamač – software a Jakub Vaněk – hardware, text článku napsal Daniel Meca.
Různých návodů na úpravu pamětí tohoto u nás vůbec nejrozšířenějšího počítače vyšlo již i na stránkách AR velké množství. Přesto si právě tato úprava zaslouží zvláštní pozornost. Na rozdíl od ostatních se totiž autoři neomezili jen na pouhé rozšíření paměti, ale na maximální rozšíření možností počítače, při zachování jednoduchosti a dostupné pořizovací ceny. V tom jde popisovaná úprava důsledně „ve stopách sira Sinclaira“.

Pro takto upravený počítač bylo již napsáno mnoho zajímavých a užitečných programů, které plně využívají nové konfigurace paměti a jejích možností. Mnoho uživatelů jistě zaujme komfortní kopírovací program s volným pracovním prostorem plných 64 kB, s průběžným zobrazováním velikosti paměti během nahrávání. Program umožňuje libovolně kopírovat z kazety i Microdrive a to též prostřednictvím sítě NET.

Zajímavý je nesporně i monitor a disassembler s pronikavě rozšířeným pracovním prostorem. Pro další rozšíření možností Spectra navrhl J. Lamač novou EPROM na místo původní ROM. Ta zachovává všechny původní možnosti, navíc však opravuje chyby původního systému a obsahuje vestavěný monitor paměti. Dále umožňuje zadávat klíčová slova BASIC vypsáním, zkratkou, nebo jedinou klávesou. Pomocí této EPROM Ize též přímo z BASICU ovládat RAM-DISK. Korunou tohoto snažení je však úspěšná implementace operačního systému CP/M v. 2.2, která povýšila rázem počítač, původně určený převážně pro televizní hry, do kategorie blízké profesionálním počítačům.

Něco o CP/M jako takovém

První použitelná verze operačního systému CP/M se rozšířila do světa již v roce 1976, kdy jeho autor, Gary Kildall, založil firmu Digital Research. Tehdy se jednalo O verzi 1.3. Následovaly verze 2.2 a 3.1, které okamžitě po svém zveřejnění opanovaly sféru osmibitových počítačů a své prvenství si udržely dodnes. Ostatní operační systémy, ať už to byl multiprogramový Concurent CP/M, multiuživatelský MP/M, případně CP/NET, který mohl sdílet prostředky v rámci počítačové sítě, přestože z CP/M bezprostředně vycházely, se nikdy tak masově nerozšířily. Z CP/M v podstatě vycházel i operační systém ISIS II firmy Intel, který je určený pro vývojové systémy s procesorem 8080. S nástupem Šestnáctibitových procesorů rozhodně sláva CP/M nepohasla ale promítla se do operačního systému CP/M-86.

Zde je dobře si uvědomit, že podstatou velikého úspěchu CP/M byla možnost při způsobení pro nejrůznější hardwarové konfigurace počítačů různých výrobců. Jeho jádro je totiž systémově nezávislé a přizpůsobení ke konkrétnímu počítači zprostředkovává pouze modul BIOS. Programy pracující nad CP/M jsou pak plně přenositelné z jednoho počítače na druhý a vzhledem ke shodným základním instrukčním kódům, mohou většinou pracovat s procesory 8080 i Z80.

Masová produkce IBM PC naopak donutila ostatní výrobce přizpůsobit své šestnáctibitové počítače nejen operačnímu systému MS-DOS, ale i hardwarovému uspořádání vzoru.

Přestože se v ČSSR začínají šířit i počítače kompatibilní s IBM PC, není jich zatím tolik, aby se dalo mluvit o masovém rozšíření. Ostatně, na řadu aplikaci by byl IBM PC zbytečně velký kalibr. Osmibitové počítače tedy ještě dost dlouho budou u nás patřit mezi nejrozšířenější v profesionálním nasazení. A zde se právě používá CP/M v. 2.2, bud‘ pod označením MIKROS u našich počítačů, nebo jako SCP u dovážených počítačů Robotron 1715 z NDR.

Při prudkém rozvoji elektronizace našeho hospodářství je zapotřebí mnoha zkušených programátorů i operátorů k počítačům. Nejlepším školením je jistě praxe a tu umožní mimo jiné i zmíněná implementace CP/M na nejrozšířenější mikropočítač Sinclair ZX Spectrum. Úpravy schopný by byl i kompatibilní Didaktik Gama, výrobek družstva Služba Skalica, který je na našem trhu. Na úrovni tohoto operačního systému se však mohou sejít uživatelé Spectra s uživateli řady dalších u nás dostupných osobních mikropočítačů a vyměňovat si programy. Berte to jako výzvu k implementaci tohoto systému i na další počítače, pokud jím nejsou vybaveny již výrobcem.

Daniel Meca

ZX Spectrum 528 kB
Úprava vhodná k implementaci CP/M

Následující zapojení umožňuje rozšířit paměť počítače ZX Spectrum na 80 až 528 kB tak, aby mohl mimo jiné pracovat též s operačním systémem CP/M. Byla ověřena výborná implementace CP/M v. 2.2. jejímž autorem je J. Lamač. Při použití paměti RAM 4164, je dosažená kapacita paměti 80 kB, při jedné sadě 41256 (4256) vzroste na 272 kB, v případě použití dvou sad, až na 528 kB. Pro celé zapojení je navržena deska plošných spojů, která umožňuje všechny popsané varianty osazení. Jeji rozměry jsou zvoleny tak, aby ji bylo možné vestavět přímo do počítače (i do tzv..gumaku“) (vlastní paměti se osazují přímo do základní desky počítače).

S výjimkou [1] a [2] používala všechna dosud známá zapojení rozšíření paměti stránkováním horních 32k, takže se nehodila k implementaci operačního systému CP/M. V literatuře [2] je sice použito stránkování spodní části adresového prostoru, ale zapojení je příliš složité a nepočítá zřejmě s dalším rozšiřováním paměti. Navíc se zapojení nevejde do počítače. Podstatným nedostatkem zapojení podle [2] je však to, že při použití ZX Interface 1, Beta-disk, Opus Discovery, ZX Interface 3, Kempston E, Lprint 4 a dalších standardních periférií, stránkujících ROM, dochází ke kolizím na sběrnici. To je u našeho zapojení uveřejněného v [1] i u zde předkládaného, softwarově s ním zcela kompatibilniho zapojení, zcela vyloučeno.

Popis zapojení

Především něco o tom, jak je v ZXSpectrum adresována pamět. Od adresy 0000h do 3FFFh je normálně pamět ROM. V oblasti od 4000h do 7FFFh je fyzicky oddělená RAM, v jejíž části je uložena obrazová paměť a která je přednostně obsluhována zobrazovací části obvodu ULA. V dalším textu bude označovaná jako VRAM. Od 8000h do FFFFh je zcela nezávislá RAM.
Výběrové obvody pro ROM a VRAM jsou umístěny v obvodu ULA a pracuji následovně:

A15A14ROMVRAM
00aktivníodpojená
01odpojenáaktivní
1Xodpojenáodpojená

Výběrový obvod paměti RAM je u verzi Spectra 2 až 4 tvořen obvody 74LS32 a 74LS00, u verze 6 (Spectrum +) slouží k tomu účelu obvod ULA2.
V navrženém zapojení je využit stav, kdy A15 na 74LSOO (ULA2 pin 37) je na úrovni logické jedničky a paměti ROM I VRAM jsou odpojeny. Zapojení je na obr. 1.
K řízení a stránkování paměti RAM je použit port na adrese 253 (OFDh). Tento port byl zvolen z následujících důvodů:

  • v žádné standardni periférii ZX Spectra není využit;
  • možnost použití lineární adresace pomocí A1;
  • přímá návaznost na rozšíření pro 80 kB z (1);
  • tento port je použit též na stránkování ZX Spectrum 128k, +2 a +3, kde je však navic, poněkud nešťastně, připojen ještě zvukový generátor a tiskárna

Výběrový obvod rozšířené paměti je tvořen dvěma hradly OR (IO1c a IO1d). Ten při aktivních signálech IORQ=0 a A1=0 zapíše vzestupnou hranou signálu WR data z datové sběrnice do šestinásobného registru D (IO5).
Rezistor, zařazený mezi výstupem výběrového obvodu (IO1c) a hodinovým vstupem registru, spolu se spínačem slouží k zablokování zápisu do registru, takže nelze manipulovat s pamětí a počítač se chová jako bez úpravy (nutno použít u her firmy ULTIMATE a u her pro ZX 48/128).
Po připojení napájení, nebo po resetu, je registr nastaven do výchozí polohy, tj. mód 48k
K významu jednotlivých bitu:

  • bit 7 – odpojuje ROM a VRAM a připojuje RAM od adresy 0000h – jedná se vlastně o mód 80k, jako v [1];
  • bity 6, 5, 4 a (3) – určuji číslo stránky (stránka = 32k);
  • bit 0 – softwarově ovládaná LED

Z KO (klopný obvod) bitu 7 je řízeno hradlo OR (IO1b), které posílenou A15 upravi na A15′. Pokud je bit 7 na log. O, pak A15′ = A15. Při bitu 7 na log. 1, je A15 trvale na log. 1. Protože A 15′ je vedena na obvod ULA a na 74LS00 (ULA2), je zajištěno odpojení ROM a VRAM. RAM může být tedy připojena od adresy 0000h. A protože je A15 vyvedená i na vnější sběrnici, nemůže být při takovém přestránkování na této sběrnici nižší adresa než 8000h, což automaticky vylučuje připojení vnější ROM a z toho pramenící kolize.

Bity 6 a 5 jsou vedeny z KO na IO7, který multiplexuje devátý adresový vodič A8-256 pro obvody 41256 (pin 1). Přepínacím signálem je signál ‚S původního 74LS157 (ULA2 pin 35). Za IO7b je hradlo NOR (IO2c), které zajišťuje spolu s hradly OR (IO6a,d) adresování posledních stránek (stránky ‚7‘, případně ‚F‘) od adresy 8000h.

Bit 4 je zaveden přes hradlo OR (IO6a) na výstup A15″, který se připoji na vstup A multiplexeru 74LS157 (ULA2 pin 25/24) místo propojky Tl (viz obr. 2).

Bit 3 se používá pouze při zapojení pro 528K a hradla IO6b, c, d a IO2b slouží pro přepínání signálu CAS do příslušné sady.

Bit 0 je rezervní a v současné době je využíván pro softwarově ovládanou LED, která může například indikovat použití RAM atd.

Bity 1 a 2 nejsou použity. Všechny paměti 41256 a některé 4164 vyžadují osmibitový občerstvovací cyklus (refresh) a Z80 generuje pouze sedmibitový. Proto je součástí zapojení též obvod vytvářející osmý bit refreshe. Do klopného obvodu D (IO4a) je vzestupnou hranou signálu MREQ v době, kdy je aktivní signál RFSH, přepsán stav A6. V té době je na adresové sběrnici platná občerstvovací adresa. Druhý KO D (IO4b) je zapojen jako dělička dvěma. IO3 tvoří multiplex pro A14 a osmý bit refreshe. Signál A14 je zaveden na vstup ‚B‘ multiplexeru 745157 (ULA2 pin 24/25) misto propojky OKI (viz obr. 2).

U verzi Spectra 2, 3 a 4 je obvod 74LS00 označen jako IC24, 74LS32 jako IC23 a 74LS157 jako IC26.

Celé zapojení je umístěno na jednostranném plošném spoji podle obr. 3; rozmístění součástek je na obr. 4. Tato destička se vejde u verzí Spectra 2, 3 a 4 přesně mezi procesor Z80A a obvod ULA, u verze 6 je ji možno umístit prakticky kamkoliv, protože v pouzdře ZX Spectrum + je místa dostatek.

Mista nejvhodnějšího přeškrábnutí A15 a CAS jsou vyznačena na obr. 5. Při osazování 41256 je nutno pin 1 ohnout stranou a u všech osmi (šestnácti) obvodu spojit s A8-256. Při použití šestnácti obvodů 41256 se musí vždy dva obvody umístit na sebe s tím, že horní sada má piny 15 vyhnuty nahoru a spojeny vodičem se signálem CAS1.
Pro modifikaci 80k se osazují IO1 a IO5, případně pro refresh IO2, IO3 a IO4. Z vodičů se zapojí A15, A15′, D7, WR, IORQ, A1, RESET a místo A15″ se ve Spectru zapojí A15. V případě použití obvodu pro generování osmého bitu občerstvení se zapojí A6, A14, A147, MREQ a REFR. Pro variantu 272k se zapojí vše, kromě D3, CAS, CASO, CAS1.

Při použití variant s paměti 272k a 528k je vždy poslední stránka RAM přístupná dvakrát. Je to třeba mít na zřeteli při psaní programu.

Důležité vývody v ZX Spectru:

  • A15… pin 5 CPU Z80;
  • A15’… pin 37 ULA, konektor 1B, nebo pin 37 ULA2 (obr. 5);
  • A15″ místo propojky Ti obr. 2;
  • CAS… pin 6 IC23 (74LS32), nebo pin 34 ULA2;
  • A14 … střed propojek TI a OKI (obr. 2);
  • A14′ … místo propojky OKI (obr. 2); S’… pin 1 1026 (74LS157), nebo pin 35 ULA2

Jakub Vaněk (autor zapojení), Daniel Meca

Literatura:
[1] Lamač, J.: 80k RAM pro ZX Spectrum. Mikrobáze 06, str. 141
[2] Troller, P.; Císař, P.: Uprava adresování a zvětšení rozsahu paměti počítače ZX Spectrum. ST 11/87, str. 417
[3] Nepřeberné množství článků v AR i v zahraniční literatuře.


Pôvodne vyšlo v prílohe Mikroelektronika časopisu Amatérske radio 9/1988




5 názorov na “CP/M na ZX Spectrum

  1. „ZX Interface 3“, čo to je? Tipujem, že je myslené Multiface 3 alebo žeby imaginárny holandský tlačový interface, ktorý nenájde ani google?

  2. Možno len preklep a bolo tam myslené ZX Interface 2 alebo naozaj ten Multiface 3

  3. Myšlenka to byla výborná, pan Lamač se s tím CP/M vymazlil jak ve verzi pro Microdrive nebo pásku, pan Meca přidal Betadisk (vyšlo celé jako seriál v Mikrobázi), ale mělo to zásadní nedostatek a to zobrazování. CP/M počítá s terminálem 80 znaků na řádek pro většinu programů a to na Spectru nejde ani náhodou… I těch 64 znaků jsou tak titěrné blechy že si na to málokdo zvykal…
    Popravdě nepřišel jsem na smysluplné využití v roce 1990 když už nastupovaly PCčka s MS-Dosem.
    Co nebylo moc dokumentované, že BIOS umí pracovat nejen s RAM diskem, ale i Romdiskem který byl stejně stránkovaný. Ale celé to přišlo na veřejnost bohužel moc pozdě i vzhledem k dostupnosti a ceně součástek.

  4. Dalo sa to v domácnosti využiť na písací stroj s WordStarom, ktorý bol prispôsobený na 64 znakov, alebo s TurboPascalom.

Pridaj komentár