Obsah
1. Československý osmibitový mikropočítač MAŤO
2. Architektura počítače MAŤO v porovnání s originálním PMD 85
3. Základní programové vybavení počítačů PMD 85 – monitor
4. Programovací jazyk BASIC – klasika (nejenom) na osmibitových počítačích
5. Další programovací jazyky dostupné na počítačích PMD 85
6. Hry – nejpopulárnější softwarové vybavení osmibitů
7. Hlípa != hlídané parkoviště
8. Emulátory počítače PMD 85 a jeho klonů
1. Československý osmibitový mikropočítač MAŤO
V předchozí části tohoto seriálu jsme se seznámili se základními charakteristikami československého osmibitového počítače PMD 85–1 i jeho dalších variant, tj. prototypu PMD 85-D i rozšířených verzí PMD 85–2, PMD 85–2A a PMD 85–3. Také jsme si řekli, že kromě původních PMDček byly v ČSSR vyráběny i další osmibitové počítače, které byly s PMDčky ve větší či menší míře kompatibilní. Jedná se o již popsané počítače Didaktik Alfa, Didaktik Alfa-2 a Diaktik Beta i o dva počítače, o nichž jsme se prozatím zmínili pouze okrajově. Jedná se o osmibitový počítač MAŤO a Consul 2717 všeobecně známý pod přezdívkou „zbrojováček“ (původ této přezdívky je odvozen od názvu firmy Zbrojovka Brno, kde se tento počítač vyráběl). Oba naposledy zmíněné počítače se od původního PMD 85 v několika ohledech odlišovaly, a to jak designem (například zbrojováček byl vybaven mnohem lepší klávesnicí a taktéž možností připojení disketové jednotky), tak i vnitřním zapojením a základním programovým vybavením.
Obrázek 1: Československý osmibitový mikropočítač MAŤO.
Hned v několika ohledech zajímavým počítačem, který byl navržen a posléze i vyráběn v bývalé ČSSR, byl počítač MAŤO, jehož autorem je pan Ivan Urda a výrobcem byla firma Štátný majetok Závadka, štátný podnik Závadka nad Hronom. Původně se tento počítač vyvíjel pod pracovním názvem BAPO (Babáčův Počítač – podle příjmení nadřízeného Ivana Urdy), později však došlo k jeho přejmenování na MAŤO, což je mimochodem mezi československými počítači velmi neobvyklý název, protože jména (pravděpodobně) všech ostatních tuzemských osmibitových počítačů byla zvolena tak, aby se v nich vyskytovaly pouze znaky bez háčků a čárek (přesněji řečeno se jednalo o podmnožinu sedmibitové ASCII). To mj. znamenalo, že se tyto počítače uměly „podepsat“ na prakticky jakékoli v té době dostupné tiskárně nebo dálnopisu, který se velmi často používal namísto tiskárny. Naproti tomu se počítač MAŤO většinou sám představoval jako „MATO“, například v demu, které s ním bylo přímo dodáváno, o čemž se můžete přesvědčit na následujícím snímku (zápis znaků s nabodeníčky na obrazovce však byl obecně bezproblémový, na rozdíl od výše zmíněných tiskáren a dálnopisů):
Obrázek 2: Screenshot dema, které bylo dodáváno spolu s počítačem MAŤO. Toto jednoduché grafické demo bylo naprogramováno v BASICu.
2. Architektura počítače MAŤO v porovnání s originálním PMD 85
Osmibitový mikropočítač MAŤO byl kromě svého názvu zvláštní také tím, že se prodával i ve formě stavebnice, takže se technicky zdatnější uživatelé mohli pobavit (nebo také zdravě naštvat :-) už při jeho skládání a následném oživování. Při návrhu počítače MAŤO byl kladen relativně velký důraz na minimalizaci celkové ceny, takže (kromě toho, že se jednalo o stavebnici, tj. ušetřila se ruční kompletace celého stroje) došlo i k některým zjednodušením v jeho vnitřním zapojení a dokonce i k úplnému odstranění druhého plošného spoje, na kterém se u původního PMD 85 nacházely obvody zajišťující komunikaci počítače s periferními zařízeními. To mj. znamenalo, že se musel zcela změnit způsob ukládání i zpětného načítání dat z magnetofonu, protože se o tuto činnost namísto čipu 8251 (USART – asynchronní a synchronní sériový přenos dat) nově staral čip 8255 (PPI – programmable peripheral interface), přesněji řečeno dva piny brány C tohoto čipu.
Obrázek 3: Další část dema dodávaného jako součást základního vybavení počítače MAŤO (mimochodem je zajímavé, u jak velkého množství počítačů se ve znakové sadě nachází symboly hracích karet).
Výše zmíněný konfigurovatelný (programovatelný) čip 8255 obsahuje tři osmibitové vstupně/výstupní brány, ovšem v počítači MAŤO byla třetí brána C rozdělena na čtyři vstupní bity a čtyři bity výstupní (mimochodem – obvod 8255 je s velkou pravděpodobností nejrozšířenějším obvodem celé řady 8080, protože mnohé mikropočítačové systémy, a to i zahraniční, obsahovaly dva a někdy dokonce i více těchto čipů). Poměrně značnými změnami prošla i klávesnice počítače MAŤO, která byla na jednu stranu oproti PMDčkům zjednodušena, na stranu druhou se (konečně) objevily i samostatné klávesy pro posun kurzoru nahoru a dolů (pokud budete zkoušet nějaké PMDčkové hry v emulátoru, povšimněte si, že se pro pohyb postav nahoru a dolů používá například dvojice kláves W a Y, popř. E a Y, což dává smysl, protože PMDčka měla klávesnici typu QWERTZ namísto QWERTY).
Čip 8255:
Obrázek 4: Programovací jazyk Basic na počítačích PMD 85 obsahoval i několik příkazů pro kresbu základních grafických tvarů.
O ovládání klávesnice, tj. o čtení aktuálně stlačených kláves a přeřaďovačů, se taktéž staral již zmiňovaný čip 8255, přičemž čtení bylo iniciováno mikroprocesorem. Běžné klávesy, tj. všechny klávesy mimo přeřaďovačů a kláves STOP a EOL, byly zapojeny do matice o velikosti 7×7 kláves (fyzické uspořádání na klávesnici bylo samozřejmě odlišné). Na osmibitovou bránu A obvodu 8255 se programově zapisoval bitový vzorek pro výběr jednoho sloupce klávesnice ze sedmi a posléze se z brány B přečetl celý řádek obsahující sedm kláves (osmý bit byl ve všech sloupcích rezervovaný pro klávesu EOL neboli ENTER). Stav obou přeřaďovačů a klávesy STOP bylo možné přečíst z brány C obvodu 8255. Další bity brány C byly použity pro výše popsané připojení magnetofonu.
Obrázek 5: Zvětšená část obrazovky počítačů PMD 85, na níž je patrné, že znaky byly vytvářeny v masce o rozměrech 5×7 pixelů, což po přičtení nezbytného okraje vede k rozměru znaků 6×8 pixelů. Šířka 6 pixelů je sice poněkud neobvyklá, ovšem dobře koresponduje se způsobem uspořádání obrazové paměti těchto počítačů (viz též předchozí část tohoto seriálu).
3. Základní programové vybavení počítačů PMD 85 – monitor
Osmibitové mikropočítače PMD 85 byly standardně dodávány pouze se základním programovým vybavením. Jednalo se především o takzvaný monitor, v němž mohli uživatelé nahrávat programy z magnetofonu do operační paměti, spouštět tyto programy (tj. provádět skoky na určitou adresu v paměti), vypsat či měnit obsah vybrané oblasti operační paměti, zapsat obsah části operační paměti zpět na magnetofon a taktéž spustit aplikaci umístěnou na zásuvném paměťovém modulu, samozřejmě pouze v případě že do PMD skutečně byl příslušný paměťový modul (obsahující v některých případech až 32 kB paměti EPROM) zasunut. Pro zajímavost – původní monitor použitý v počítači PMD 85.1 byl uložen ve čtyřech kilobajtech paměti EPROM a obsahoval následující příkazy: SUB, JUMP, MEM, DUMP, BASIC, MGLD, MGSV, MGEND a JOB.
Obrázek 6: Uživatelské rozhraní monitoru je (po všech opulentních grafických efektech, kterými se pyšní moderní GUI), příjemně strohé.
U některých pozdějších modelů počítače PMD 85 byl monitor uložen v celých osmi kilobajtech EPROM. Monitor však i přes některé své výhody (například tu, že pro svou činnost vyžadoval pouze minimum operační paměti a nemusel být instalován žádný zásuvný modul, který mnohdy „napomáhal“ k přehřívání počítače) běžným uživatelům zajišťoval pouze ty nejzákladnější operace, většinou nahrání aplikace z magnetofonu příkazem MGLD a jejich spuštění příkazem JUMP (pokud se aplikace nespustila díky funkci AutoRun sama). Někteří programátoři využívali monitor i pro psaní svých programů – pro tento účel se nejprve programy zapsaly v assembleru (například na papír), potom se provedl jejich ruční překlad a následně přepis strojového kódu do operační paměti počítače. Tímto způsobem se tedy s PMDčky dalo pracovat podobně jako tomu bylo u předminule popsaného počítače PMI-80, ovšem s tím rozdílem, že se v případě počítačů PMD 85 mohla pro zápis programů a samozřejmě i pro výpis obsahu operační paměti použít celá obrazovka 48×32 znaky a nikoli pouze devítimístný sedmisegmentový displej.
Obrázek 7: Výpis obsahu části operační paměti – jedná se o jednu z užitečných vlastností monitoru.
4. Programovací jazyk BASIC – klasika (nejenom) na osmibitových počítačích
Programování přímým zápisem strojového kódu v monitoru však samozřejmě nemohlo dostačovat nárokům všech programátorů, nehledě na to, že se počítače PMD 85 používaly i na školách pro výuku programování s využitím vyšších programovacích jazyků. Z tohoto důvodu bylo pro počítače PMD 85 vytvořeno větší množství programovacích jazyků, a to jak jazyků interpretovaných, tak i překládaných (tj. kompilovaných do strojového kódu). Naprostá většina zahraničních domácích počítačů byla již od dob slavného Commodore PET a ZX-80 vybavena interpretrem programovacího jazyka BASIC. Počítače PMD 85 v tomto ohledu nezůstávaly pozadu, neboť interpret tohoto jazyka obsahovaly v přídavných paměťových modulech, které byly výměnné, tj. v případě potřeby se mohl modul s BASICem nahradit modulem obsahujícím jeho novější verzi či zcela odlišné programové vybavení, například jiný programovací jazyk, specializovanou aplikaci atd. Naproti tomu se u počítačů Didaktik Alfa a MAŤO EPROM s interpretrem BASICu nacházela přímo uvnitř počítače, tak, jak tomu bývalo u většiny dalších osmibitových domácích počítačů.
Obrázek 8: Výpis části jednoduchého grafického dema napsaného v programovacím jazyku BASIC na počítači MAŤO.
Vraťme se však k samotnému BASICu. Ten na osmibitových mikropočítačích PMD 85 existoval hned v několika variantách. Základní varianta se jmenovala BASIC-G /V1.0, další verze pak BASIC-G /V2.0, BASIC-G /V2.A a konečně BASIC-G /V3.0. Ve všech případech se jednalo o téměř klasického zástupce „osmibitových“ BASICů – interpret pracoval interaktivním způsobem (na rozdíl od dnešního VB či postaršího QBasicu), programové smyčky se realizovaly buď pomocí skoku (GOTO) popř. počítanou smyčkou typu FOR, proměnné nebylo nutné před jejich použitím deklarovat, kromě polí a řetězců neexistovala prakticky žádná podpora pro složitější strukturované datové typy atd. Kromě základních příkazů byl BASIC na PMD 85 vybaven i několika nestandardními příkazy určenými pro tvorbu grafiky. Tyto příkazy jsou pro zajímavost vypsány v následující tabulce:
Příkaz | Význam |
---|---|
GCLEAR | smazání obrazovky |
SCALE | nastavení měřítka při kreslení |
AXES | vykreslení souřadných os (vodorovné a svislé úsečky) |
MOVE | přemístění počátečního bodu kreslení |
PLOT | vykreslení úsečky od posledního bodu kreslení do bodu nového (v dalších BASICech se většinou jedná o příkaz DRAW, DRAW TO či DRAWTO) |
FILL | výplň bitovou maskou |
LABEL | vykreslení textu na zadané souřadnice |
BMOVE | přemístění počátečního bodu kreslení pro příkaz BPLOT |
BPLOT | vykreslení bitové masky se šířkou n×6 pixelů zadané formou řetězce |
Obrázek 9: Hlavní menu editoru a překladače programovacího jazyka PASCAL.
5. Další programovací jazyky dostupné na počítačích PMD 85
Na osmibitových mikropočítačích PMD 85 se však nepoužíval pouze BASIC, i když je pravda, že se ve druhé polovině osmdesátých let minulého století jednalo o velmi populární programovací jazyk, především právě mezi majiteli osmibitových domácích počítačů. Příčinou oblíbenosti BASICu byl mj. interaktivní způsob práce a taktéž to, že první programy v něm bylo možné napsat pouze s minimálním úsilím (na druhou stranu se tato zdánlivá jednoduchost proti programátorům obrátila ve chvíli, kdy měli napsat a udržovat větší programy – zde se některé rysy BASICu, například automatická deklarace proměnných, ukázala jako potenciálně velmi nebezpečná vlastnost). Poměrně často programátoři namísto BASICu využívali assembler doplněný o editor a případně i linker. Z vyšších programovacích jazyků se na počítačích PMD 85 používal především jazyk Pascal, jehož verze pro PMDčka se vyznačovala tím, že prakticky všechny texty, kromě samotných klíčových slov jazyka, byly vypisovány česky či slovensky (autor článku se setkal jen s SK verzí). To samozřejmě usnadňovalo použití tohoto jazyka například na školách, protože znalosti a výuka angličtiny nebyla před rokem 1989 z pochopitelných důvodů tou oblastí, na něž by se tehdejší školství zaměřovalo.
Obrázek 10: Hlavní nabídka TOM Pascalu.
Pravděpodobně nejlepší implementací programovacího jazyka Pascal byl TOM Pascal Patera Tomcsányiho dodávaný na modulu obsahujícím 32 kB paměti EPROM. Vzhledem k tomu, že standardní paměťové moduly mohly mít pouze 16 kB ROM/EPROM (což souvisí s mapou paměti počítače PMD 85 – viz předchozí část tohoto seriálu), musel se adresový rozsah modulů s větší kapacitou paměti rozdělit do menších částí (paměťových banků), z nichž pouze jeden byl v danou chvíli vybraný. V případě programovacího jazyka Pascal bylo rozdělení na paměťové banky poměrně přímočaré, protože se program nejprve editoval a teprve poté (v samostatně vyvolaném kroku) překládal. Kromě překladače jazyka Pascal vzniklo pro počítače PMD 85 a jejich klony i několik dalších programovacích jazyků vhodných pro implementaci na osmibitových mikropočítačích (nevhodný byl například COBOL). Jednalo se například o v té době u nás velmi populární Forth, dále pak o Prolog, Karel nebo programovací jazyk Lisp.
Obrázek 11: TOM Pascal dokáže přímo při zápisu programů provádět automatický převod klíčových slov na malá písmena a taktéž spouštět automatickou syntaktickou kontrolu, což jsou vlastnosti, kterými nedisponuje ani o mnoho slavnější Turbo Pascal.
6. Hry – nejpopulárnější softwarové vybavení osmibitů
Kromě programovacích jazyků, běžných uživatelských aplikací a aplikací specializovaných pro laboratoře i průmyslové nasazení vzniklo pro počítače PMD 85 a jejich klony poměrně velké množství her různých žánrů, které byly samozřejmě mezi uživateli velmi populární. Můžeme se jen dohadovat, kolik her se například hrálo na PMDčkách používaných v průmyslu či laboratořích, ale v kroužcích výpočetní techniky vybavených PMDčky se hry těšily velké oblibě.
Obrázek 12: Willy Walker je varianta na známou hru Jet Set Willy. Zajímavé je, že Willy Walker dostane při projití všech místností za odměnu večeři, zatímco v originálu je mu namísto večeře povolen vstup do ložnice :-) Taktéž si povšimněte, kdo tuto hru vytvořil, o tomto programátoru bude řeč v následující kapitole.
V porovnání s ostatními domácími osmibitovými počítači, a to i těmi ze západu, byl grafický režim počítače PMD 85 poměrně kvalitní (žádné obrovské „kostičky“, ale na možnosti televizních přijímačů velmi jemné rozlišení), ovšem většina úspěšných západních počítačů podporovala barevný výstup na televizor a některé z těchto počítačů i množství grafických efektů (přerušení generované na každém obrazovém řádku, horizontální a vertikální scrolling, sprity atd.) realizovaných na zákaznických čipech, mezi něž patřil ANTIC a GTIA u Atari, VIC-II u Commodore C64 atd.
Obrázek 13: Manic Miner ve verzi pro PMD se sice v mnohém odlišuje od svého slavného originálu, ale hratelnost zůstala zachována.
Nicméně i bez obvodové podpory těchto pokročilejších technik byly některé PMDčkové hry velmi kvalitní, například dále zmíněná Hlípa dokonce svým nápadem i zpracováním značně přesahovala mnoho západních komerčních(!) her, což je zajímavé především z toho důvodu, že v tuzemsku hry vznikaly takřka na koleně, mnohdy bez adekvátního vybavení (chyběly zásuvné moduly s assemblery a debuggery, disketové jednotky atd.).
Obrázek 14: První obtížnost hry Manic Miner.
Mnoho tuzemských her bylo inspirováno některým zahraničním originálem, takže na PMDčku vznikly poměrně zdařilé kopie her Space Invaders (klasika všech klasik), Manic Miner (Spectristům zajisté netřeba představovat), Pampuch (obdoba Pac-Mana, který v té době obýval vozy s herními automaty), Galaxia, Willy Walker (původně Jet Set Willy) či Flappy (logická hra, která se podobá Boulder Dashovi).
Obrázky 15–17: Hra Bludiště je velmi vzdálenou předchůdkyní Dungeon Mastera i Dooma :-)
Mezi známé autory her pro PMDčka patřila například trojice Vlastimil Veselý, Libor Bedrlík a Ladislav Gavar vystupující pod názvem VBG, Petr Tůma, Vít Libovický, Pavel Šindelka a Karel Šuhajda.
Obrázky 18–20: Space Invaders ve verzi pro počítače PMD 85.
Obrázky 21–23: Známá hra Flappy – komu ze čtenářů se podařilo dokončit všechny úrovně?
7. Hlípa != hlídané parkoviště
Při popisu her, které byly vytvořeny pro počítače PMD 85 a jejich klony nesmíme zapomenout na hry vytvořené Karlem Šuhajdou, především na hru pojmenovanou Hlípa. Jedná se o jednu z her, v nichž je herní svět reprezentován v takzvaném 2,5D prostoru (toto pojmenování evokuje přechod mezi 2D plochou a skutečným 3D prostorem), přičemž je použito isometrického zobrazení. Tento způsob zobrazení herní scény je (či v minulosti byl) mezi tvůrci her velmi oblíbený a to hned z několika důvodů – při vykreslování úseček se sklonem 30° je eliminován vznik nežádoucích „schodů“ (vždy po dvou vodorovných pixelech následuje posun na předchozí či následující obrazový řádek, čili nedochází k nepravidelnostem, které oko vnímá nežádoucím způsobem) a samotné vykreslení scény je velmi rychlé, neboť není nutné složitě řešit perspektivu (ta se u isometrického pohledu nepoužívá) ani skrývání objektů (postačuje scénu vykreslovat malířovým algoritmem).
Obrázky 24–27: Dvě verze hry Mikrotron využívající isometrické zobrazení.
Mezi slavné hry používající isometrického zobrazení patří například Spindizzy, Knight Lore (a mnohé další hry firmy Ultimate Play the Game), Transport Tycoon, moderní Diablo atd. Karel Šuhajda tento způsob vykreslování herního světa použil již dříve ve hře Mikrotron, jejíž screenshoty jsou zobrazeny na předcházející čtveřici obrázků, ovšem teprve s naprogramováním hry Hlípa vznikla herní legenda známá nejenom mezi československými hráči. Kouzlo Hlípy spočívá jak v propracovaných herních pravidlech tak i v naprosto precizní animaci hlavní postavičky (Hlípy). Na statických obrázcích kouzlo animace nevynikne, proto se raději podívejte na video s řešením celé hry, nebo, což je určitě nejlepší řešení, si můžeme tuto hru vyzkoušet v některém z emulátorů počítače PMD 85, popř. v emulátoru počítačů Sharp MZ, které budou popsány v některém z dalších částí seriálu.
Obrázky 28–39: Hra Hlípa založená na isometrickém zobrazení trojrozměrného světa, která na první pohled zaujme propracovanou animací hráče.
8. Emulátory počítače PMD 85 a jeho klonů
Poměrně jednoduchá vnitřní struktura počítače PMD 85 sice na jednu stranu komplikovala život tehdejším programátorům, kteří mnohdy museli pracně programovat různé efekty, které se na jiných počítačích řešily s využitím specializovaných čipů (sprity, scrolling obrazu, zvuková syntéza), na stranu druhou se však zjednodušila práce další generace programátorů, konkrétně těch, kteří se zabývali vytvářením emulátorů tohoto počítače, a to jak emulátorů softwarových, tak i hardwarových. Softwarových emulátorů PMD 85 existuje celá řada; ty starší jsou určeny pro operační systém DOS, novější pak pro MS Windows či Linux (vzniká dokonce i emulátor naprogramovaný v Javě).
Obrázek 40: Splashscreen jednoho z vynikajících emulátorů počítačů PMD 85 i jejich klonů, který vyvinul RM-TEAM.
Seznam prakticky všech již hotových či právě vyvíjených emulátorů lze nalézt například na stránce http://www.schotek.cz/pmd/index.htm, spolu s odkazy na archivy s hrami a obrazy obsahů paměťových modulů (všechny obrázky v této části seriálu vznikaly právě s využitím softwarových emulátorů).
Obrázek 41: Nastavení modelu počítače, který se má emulovat a volba obsahu pamětí EPROM.
Obrázek 42: Úspěšný boot operačního systému (monitoru :-) v emulátoru.
Kromě softwarových emulátorů, které mohou využít majitelé téměř jakýchkoli současných osobních počítačů, vznikl dokonce i emulátor hardwarový, který je řešený velmi zajímavým způsobem. Tento emulátor se skládá z mikroprocesoru ATmega128 doplněného o operační paměť. Mikroprocesor použitý v tomto emulátoru je samozřejmě mnohem rychlejší a výkonnější než původní MHB 8080A taktovaný na 2 MHz, ovšem musí taktéž provádět mnohem větší množství práce – emulovat veškeré instrukce 8080 včetně jejich přesného časování, generovat video signál, opět s přesným časováním (nahrazují se jím veškeré podpůrné obvody počítače PMD 85) atd. Samotná konstrukce hardwarového emulátoru sice není příliš složitá, ale naprogramování ATmega128 tak, aby se skutečně emuloval celý osmibitový mikropočítač, si vyžádalo mnoho úsilí, ovšem výsledek určitě stojí za to. Podrobnější informace o realizaci tohoto zajímavého projektu můžete nalézt na stránce http://pmd85.topindex.sk/ pojmenované příhodně „Urob si sám PMD-85“.
Obrázek 43: Debugger umožňující ladit program běžící v emulátoru.
9. Odkazy na Internetu
- Muzeum československých mikropočítačů
http://cs-pocitace.ic.cz/ - Počítače PMD 85
http://balek.v.sweb.cz/cs%20pocitace/8bity/pmd85.htm - Muzeum starého hardwaru a počítačů
http://hardware.najd.cz/nej.php - Archive.Free8bit.net (archivy her a dalších aplikací)
http://archive.free8bit.net/index.php?ACTION=1004 - Emulation.Free8bit.net (emulátory osmibitů)
http://emulation.free8bit.net/ - Stručná historie počítače IQ150/IQ151
http://www.iq151.net/history.htm - Didaktik Alfa 1
http://osmi.tarbik.com/cssr/didaktik_alfa.html - Didaktik
http://en.wikipedia.org/wiki/Didaktik - Alfy mali vo výbave i sovietske televízory „Junost“
http://bombara.blog.sme.sk/c/205503/Alfy-mali-vo-vybave-i-sovietske-televizory-Junost.html - Hlípa
http://pmd85.djb-studios.com/wiki/Hlípa - Video s řešením hry Hlípa
http://pmd85.djb-studios.com/w/media/hlipa-riesenie.avi - Urob si sám PMD-85
http://pmd85.topindex.sk/ - Stránky Martina „Schotka“ o PMD 85, jeho klonech i emulátorech
http://www.schotek.cz/pmd/index.htm