PMI-80

PMI-80 bol jednoduchý 8-bitový jednodoskový výukový mikropočítač, vyrábaný v ČSSR v podniku Tesla Piešťany od roku 1982. Vybavený bol 9-miestnym sedemsegmentovým kalkulačkovým LED displejom a modifikovanou kalkulačkovou klávesnicou s 25 klávesami. Využíval procesor Tesla MHB8080A, česko-slovenský klon rozšíreného mikroprocesoru Intel 8080 z roku 1974, taktovaný na frekvencii 1,111 MHz a disponoval 1 KiB pamäte RAM a rovnakým množstvom pamäte ROM.
Počítač bol primárne určený na výuku programovania na stredných elektrotechnických školách a technických univerzitách. Okrem výuky bol využiteľný aj na jednoduchšiu priemyselnú a experimentálnu automatizáciu a pre nedostupnosť iných alternatív bol v 80. rokoch 20. storočia v Česko-Slovensku obľúbený aj medzi počítačovými nadšencami.
Vznik.
Prototyp počítača vyvinul na prelome rokov 19801981 Ing. Roman Kišš, v tom čase 32-ročný testovací technik integrovaných obvodov v národnom podniku Tesla Piešťany. Inšpiráciou mu bol článok v nemeckom odbornom časopise a práci na prototype sa venoval mimo svojej oficiálnej pracovnej náplne, pričom materiál na stavbu získal využitím nevyhovujúcich súčiastok z výroby a výmenou s kolegami (napr. nepotrebná kalkulačka, ktorá poslúžila ako jednoduché vstupno-výstupné zariadenie).
Neskôr v priebehu roku 1981 založil v Tesle Piešťany školiace stredisko, prvé svojho druhu vo vtedajšom Česko-Slovensku, kde si účastníci týždenného školenia mohli postaviť vlastný exemplár PMI-80 z pripravených súčiastok a naučiť sa základy jeho programovania v strojovom kóde. Svoje znalosti mohli absolventi následne odovzdať ďalej v mieste svojho pôsobenia, takže školenia svojou mierou prispeli k naštartovaniu vlny záujmu o mikropočítačovú techniku v 80. rokoch v ČSSR.
Po odovzdaní PMI-80 do výroby pracoval Roman Kišš aj na vývoji počítačov PMD 85, Didaktik Alfa a PC 88, ktoré už mali charakter štandardných osobných počítačov s plnohodnotnými alfanumerickými klávesnicami a grafickým výstupom na televízor alebo obrazovkový monitor.
Hardvér.
Po hardvérovej stránke predstavoval počítač minimálny funkčný 8080 systém, obsahujúci len nevyhnutné podporné obvody. Operačná pamäť bola použitá statická, nevyžadujúca obvody, zabezpečujúce periodickú obnovu (refresh), ako v prípade DRAM. Zobrazovanie na displeji a skenovanie klávesnice bolo softvérovo multiplexované, pričom pre obnovu displeja a prípadné nasnímanie kódu stlačenej klávesy bolo potrebné volať príslušné systémové rutiny z monitoru (počítač neobsahoval časovač). Bez ich pravidelného volania z používateľského programu bolo možné na displeji ponechať staticky zobrazený len jeden znak.
Osadenie mikropočítača tvorilo desať integrovaných obvodov:
Okrem toho počítač z aktívnych súčiastok obsahoval už len 7 tranzistorov PNP (budenie segmentov displeja), 3 tranzistory NPN (tvarovač magnetofónového vstupu, invertor) a 6 kremíkových diód. Klávesnica 5×5, červený sedemsegmentový displej VQD30 a dekodér/budič MH1082 boli prevzaté z vreckovej kalkulačky Tesla OKU 205.
Časovanie.
Počítač bol osadený 10 MHz kryštálom, pričom takt pre samotný procesor je interne v obvode MH8224 delený deviatimi, tzn. výsledný takt CPU bol 10 / 9 ≈ 1,111 MHz. Doba vykonávania jednej inštrukcie bola pri 8080 411 taktov, tzn. výpočtový výkon PMI-80 bol približne v rádoch stoviek tisíc inštrukcií za sekundu (0,10,28 MIPS).
Pre porovnanie, súčasný (2014) jednodoskový počítač Raspberry Pi 2 so štvorjadrovým 32-bitovým procesorom s jadrom ARM Cortex-A7, dosahuje výkon približne 1 000 MIPS na jedno jadro, je teda približne 20 000-násobne výkonnejší, už pokiaľ ide čisto o počet inštrukcií, vykonateľných za jednotku času (a teda odhliadnuc od ďalších benefitov, súvisiacich so 4-násobnou šírkou slova, integrovanou hw. násobičkou/deličkou priamo v ALU, integrovaným numerickým a grafickým koprocesorom a pod.).
Vstupno-výstupné rozhrania a rozšíriteľnosť.
Dve z troch 8-bitových brán obvodu MHB8255A boli využité interne pre multiplexované budenie displeja, klávesnice a vstup/výstup na magnetofón. Zvyšná brána bola vyvedená na FRB konektor (K2) a využiteľná používateľsky ako 8 paralelných vstupno-výstupných liniek s TTL úrovňami. Na doske je ďalej pripravené miesto pre osadenie druhého obvodu MHB8255A so všetkými troma bránami vyvedenými na konektor.
Voľné miesto bolo tiež ponechané pre prípadnú druhú používateľskú pamäť EPROM 8708 a na konektore systémovej zbernice (K1) bolo vyvedených 5 z 8 vybavovacích signálov z adresového dekodéru MH3205, ktoré sa dali využiť na jednoduché externé rozšírenia RAM alebo ROM o jednu až päť 1 KiB stránok bez potreby ďalších adresových dekodérov.
V spodnej časti dosky bolo k dispozícii pole 31×8 predvŕtaných kontaktných plôšok (padov) v rastri 2,54 mm, ktoré bolo použiteľné ako univerzálna DPS pre realizáciu prípadných vlastných obvodov, prepojených s počítačom.
Softvér.
Počítač bol z výroby osádzaný 1 KiB pamäťou PROM resp. EPROM, obsahujúcou základný obslužný program – monitor strojového kódu (ďalej len „monitor“) s nasledovnými funkciami:
Programovanie.
Programovanie počítača bolo, najmä z dnešného pohľadu, pomerne namáhavé. Program si bolo treba najprv premyslieť a manuálne zapísať v jazyku symbolických inštrukcií (JSI) procesoru 8080. Pri školskom využití v 80. rokoch sa koncept programu v JSI pripravoval spravidla na papieri, v pracovnom zošite. Počítače s obrazovkovým výstupom a textovým editorom, prípadne asemblerom pre automatizovaný preklad programu z JSI do strojového kódu 8080, ktoré by túto prácu dokázali výrazne uľahčiť, ešte neboli bežne dostupné, okrem toho PMI-80 bol cielený primárne práve na výuku nízkoúrovňového programovania.
Program, vopred pripravený v JSI sa potom na PMI-80 zapisoval do pamäte formou zadávania inštrukčných kódov na klávesnici v šestnástkovej sústave. Ako pomôcka slúžil okrem príručky aj papierový „ťahák“ s blokovou schémou počítača a prehľadom inštrukčného súboru 8080 v štruktúrovanej podobe s názvami inštrukcií a ich hexadecimálnymi kódmi, umiestnený na vnútornej strane transportného kufríka počítača.
Zmeny v už zapísanom programe boli možné znova len prepisom inštrukčných kódov na zadaných adresách v pamäti. Prípadné nadbytočné inštrukcie bolo možné prepísať kódom „prázdnej“ inštrukcie NOP (z ), avšak vsúvanie nových inštrukcií medzi existujúce nebolo možné – zostávalo jedine zapísať ich na iné voľné miesto v pamäti ako podprogram a na pôvodné miesto vložiť jeho volanie (pokiaľ sa zmestilo), alebo celý program prípadne jeho časť prepísať nanovo, vrátane prepočítania adries všetkých volaných návestí a podprogramov.
Príklad programu.
Príklad jednoduchého programu, realizujúceho 8-bitové počítadlo stlačení klávesy s priebežným zobrazovaním počtu (0 až 28−1 = 255, tzn. 00 až FF v šestnástkovej sústave) na displeji. Program využíva ako podprogramy zdokumentované rutiny monitoru PMI-80 pre vymazanie displeja, zobrazenie číselnej hodnoty a vstup z klávesnice. Do pamäte PMI-80 sa program zadá zapísaním postupnosti inštrukčných kódov zo stredného stĺpca a spustí skokom na adresu codice_1. Zaberá 21 bajtov, tzn. približne 2 % z 1 KiB operačnej pamäte PMI-80.