11. 4. 2014

Vítejte!

Blog založen, vážení čtenáři přivítáni, a můžeme pokračovat, kde jsme přestali:

Javový emulátor PMI-80 mám téměř hotov, zdržel jsem se arci tím, že jsem k němu vytvořil daleko víc periferií, než jsem původně zamýšlel. Samotné PMI je hardwarově chudičké, má vedle procesoru toliko jednu 8255 (a místo, případně sokl pro druhou), klávesnici s pětadvaceti tlačítky a neplnohodnotný displej, který je nutné neustále refreshovat, jinak na něm svítí jediná posice.

Prvotním cílem mé emulace bylo naučit se Javu, což se mi snad podařilo (budete moci sami posoudit ze zdrojáků, ježto projekt je vydáván pod GNU GPL). Kromě toho jsem se, jako vedlejší produkt, naučil XML Schema, na což jsem se stejně už několik let chystal – a byla ostuda, jestliže jsem v předchozích aplikacích popisoval XML soubory v DTD.

Tedy popořadě, s obrázky.



Tesla PMI-80 (aneb počítač an sich)

Emulátor je hotov, graficky vypadá velmi uspokojivě a funguje zcela spolehlivě. Ovládá se klávesnicí nebo myší, která dovoluje, pomocí Ctrl-clicku, libovolnou klávesu zaaretovat ve stisknutém stavu. To pro ovládání hlavního panelu není příliš užitečné (v matici nejsou osazeny diody a možnost detekce vícenásobného stisku je tím omezena), ale pro některé periferie se to hodí.

Jak jsem slíbil, tak jsem učinil: emulátor je ve čtyřech velikostech a třech jazycích, vše uživatelsky volitelné a nastavitelné.

Magnetofon

Magnetofon mám za graficky rovněž poměrně zdařilý. Nahranou kasetu je možné uložit v několika formátech, resp. v binárním, v proprietárním XML a ve dvou převzatých z existujících emulátorů.

Dojem kazí pouze stoprocentní spolehlivost nahrávání a přehrávání, kterou jsem se zatím neodhodlal narušit funkcí nahodilého kolísání rychlosti motorku. Implementovat ji mi brání můj až chorobný perfekcionismus, ale kriticky uznávám, že bez ní je zážitek z osmibitu poloviční.

Práce s pamětí

Magnetofon je sice zajímavý na pohled, ale v praxi budeme mnohem častěji využívat možnost přímé práce s pamětí.

Emulátor dokáže pracovat s binárním obrazem úseku paměti, s formátem Intel HEX, s proprietárním souborem XML a také dokáže pořizovat a zpětně zavádět úplné snímky počítače, které obsahují kromě obrazu paměti i aktuální stav procesoru a všech dalších stateful jednotek (což v případě PMI-80 znamená obou 8255; praktický příklad).

Debugger

Debugger pro svůj emulátor jsem nejprve začal psát jako normální dialogové okno, ale s výsledkem jsem stále nebyl spokojen. Nakonec jsem sáhl po retro řešení, které sice nemá tolik funkcí, ale zato skvěle a authenticky vypadá a překvapivě pohodlně se v něm i ladí.

Protože PMI-80 má ladění v monitoru, byť hodně primitivní a osekané, v první versi jsem pojal debugger jen jako doplněk monitoru o ty funkce, které s ohledem na omezené možnosti displaye nejvíc chybějí, tj. současné zobrazení instrukce, všech registrů, flagů a paměti. Ale nakonec se mi debugger zalíbil tak, že ho použiji i do PMD 85 (kde je debugger poněkud zbytečný), a pro ten účel ho rozšířím o možnost ručního nastavení paměti, registrů a flagů. Kromě malých kulatých tlačítek se editační funkce dají ovládat i kolečkem myši.

Panel PPI

Abych mohl se dvěma Intel 8255 (PPI) v počítači aspoň minimálně pracovat, naprogramoval jsem si přídavný panel, kam jsou vyvedeny čtyři porty. Každý bit může být nastaven zvlášť (opět se ovládá myší, Shift+click), buď jako LED v jedné ze tří barev, jako posuvný přepínač nebo jako tlačítko v několika barvách, které při stisknutí generuje logickou nulu (je aretovatelné pomocí Ctrl+click).

Graficky to není žádný zázrak, ale když jsem ladil emulaci 8255 v režimech 1 a 2, panel mi velmi pomohl.

LED matice 32-krát-32 bodů

Ledková matice je jednoduchá periferie, kterou je možné sestavit poměrně jednoduše a levně i v reálu. Pro počítač, kterému chybí grafický display, je to to jedna z mála možností smysluplného výstupu.

Matici tohoto rozměru již nelze rozumně provozovat ve scannovacím régimu, proto by byl pro uchování stavu potřebný hardwarový řadič. Dnes bychom použili specialisovaný integrovaný obvod, v době, kdy PMI-80 bylo mladé, by zřejmě bylo nutné sáhnout po jiném řešení.

Na displayi jste určitě poznali Conway's Game of Life

Alfanumerická matice

Když už jsem měl šestnáctisegmentované LED elementy z debuggeru jednou hotové, využil jsem je do další periferie, čtyřřádkového displaye. Neambiciosní, ale celkem praktická věc. Protože se pohybujeme v první polovině 80. let, jsme omezeni na tehdejší technologie: pokud vím, maticové displaye s LCD se minimálně v zemích ruského imperia rozšířily až o několik let později.

Terminál DEC VT220

Tak tuhle periferii zaručeně nikdo nikdy k PMI nepřipojil, protože je v porovnání s mikropočítačem možná padesátkrát dražší. Ale protože jsem potřeboval, mimo jiné, na něčem aspoň minimálně kultivovaně zobrazovat výstup testu procesoru, je videoterminál dobrou volbou.

Tato zařízení jsem měl vždy rád, nikdy to nebyly výrobky v pouťové kvalitě, obvyklé pro svět osmibitů, a je překvapující, jak dobrý obraz už před třiceti lety měly.

Typ DEC VT220, pro který jsem se rozhodl, je zhruba současníkem PMI-80, a má mimo jiné možnost downloadovat téměř sto uživatelských glyfů. Čeština tedy žádný problém, minimálně při zobrazení; s klávesnicí by to arci bylo horší, firma Digital samozřejmě pro tak malý trh, jakým bylo Československo, zvláštní versi nedodávala.

Praktickým problémem bylo, jak terminál vůbec k PMI připojit, protože to ve své jednoduchosti nemá ani seriovou linku. Nakonec jsem použil virtuální interface, který lze popsat jako seriovou linku s neomezeným bufferem a nekonečnou rychlostí přenosu. Možná připojení časem předělám na něco reálnějšího.

Klávesnice IBM PC

Původní písíčková klávesnice, elektricky i mechanicky poctivá, neošizená, to byla pro mě velká výzva. Protože PMI má slabý procesor 8080, taktovaný na 1,11 MHz, bylo otázkou, zda vůbec komunikaci s klávesnicí stavěnou pro podstatně rychlejší PC utáhne, ale vyšlo to, byť nikoli s reservou.

Emulovaná klávesnice se opět ovládá ze skutečné klávesnice nebo pomocí myši, a nedá se obsluhovat bez využití přerušení, které její hodinový signál generuje, což může být pro praktické aplikace poněkud limitující.

Hrací strojek aneb Jednobitový reproduktor

Pro ten jsem využil konstrukci z Amatérského radia; zvuk je arci odpudivý, zato grafika a ovládací panel na úrovni.

Digitálně-analogový převodník

Tato periferie nemá sama o sobě rozumný smysl, tak jsem si pohrál aspoň s emulací visuálně a mechanicky věrohodného voltmetru.

Analogově-digitální převodník

Ten na tom není o moc líp, ale je aspoň osmikanálový a theoreticky se dá využít k ovládání jiného hardwaru.

Krokový motor

S krokovými motory mám své záměry u plotterů, toto je spíš základní kit, na kterém je možné naprogramovat správné taktování motoru.

Asynchronní motor se snímačem polohy

S touto periferií je o něco víc zábavy, např. spojíme-li ji s modulem ADC. Nedělám si iluse, že bych mohl pomocí stroje výkonnosti PMI-80 naemulovat let kvadruptery, ale o aplikaci typu inversní kyvadlo vážně uvažuji.

A to je prozatím vše; jak vidíte, hardwarově jsem se realisoval vskutku důkladně. V horizontu několika dnů až týdnů bych rád vydal první versi, a poté se pustím do PMD 85. Klávesnici už zhruba mám, zbytek by měl být paradoxně jednodušší než PMI, protože PMDčko má vlastní display a nepotřebuje téměř žádné doplňkové periferie. Magnetofon, modul paměti a debugger použiji z PMI-80, display je prostá bodová matice.


11 komentářů:

  1. Leon Kreutzfeld11. dubna 2014 21:01

    Vy jste opravdu renessancni clovek vp. Pecina. Ten emulator bude pristupny online, nebo nam zde jen ukazujete obrazky? S nostalgii jsem se zadival na klavesnici PMD 85.

    OdpovědětVymazat
  2. Je v Javě, takže si ho můžete spustit na vlastním počítači, bez ohledu na typ. O appletu jsem uvažoval, ale asi ho vytvářet nebudu.

    OdpovědětVymazat
  3. U mě první cenu získává voltmetr.

    Vzpomínám, jak jsme měli k PMI připojeno teplotní čidlo a odpor (nebo to byla zenerka?) a za úkol jsme dostali udržovat teplotu v krabičce s otevřeným vrchem. Komu se to dařilo, tomu do ní učitel foukl :-)

    OdpovědětVymazat
    Odpovědi
    1. Umím si představit, že polovina studentů implementovala on-off regulátor a pak se strašně divila, že jim to osciluje.

      Zvažuji, že bych nasimuloval něco takového, a vypsal mezi čtenáři soutěž, kdo to udrží ve svislé poloze. Jen nemám vyřešeno věrohodné GUI pro "šťouchnutí" do závažíčka :-)

      Vymazat
    2. Dvojité inversní kyvadlo není zrovna triviální systém.

      Pamatuji ještě na ultra-retro: analogové počítače napojené na TV Merkur. Tyhle příšery jsme ukazovali jako motivaci v první hodině cvičení na teorii řízení. Byl u toho joystick a napřed jsme nadrátovali setrvačný článek. Dosažení zadané hodnoty vybraným studentem bylo triviální. Pak jsme zrušili vazbu, po chvilce dotyčný pochopil funkci integrace a hodnotu ustálil. Kladnou vazbu už ale nezvládl. Pak jsme k tomu dali ještě jeden integrátor (ten původní zavazbili zase záporně, nebo to natáhli jako oscilátor) a to začaly orgie - kluci se střídali, fandili si .. pěkně se projevovaly osobnostní profily. Někdo konservativně šťouchal a snažil se vyčít chování, jiný to chtěl tvrdě dotlačit ... prostě velká legrace. Viděli hodnoty zásahu, rychlosti i zrychlení. Bylo zajímavé sledovat, jak se lišilo intuitivní vnímání těch veličin.
      Odcházeli sice stále s pocitem, že viděli živou latimérii, ale s poznáním, že i s lalokoploutvými je legrace.

      Takže já bych, být vámi, začal raději s něčím uchopitelnějším.

      Vymazat
    3. Není to inversní kyvadlo, když budete chtít, můžete si s ním houpat klidně i pod kotoučem.

      S jednoduchým kyvadlem podle mě není žádná zábava, až druhý stupeň volnosti tomu dodává regulační "šťávu". Před časem jsem něco podobného viděl na YouTube, a moc se mi to líbilo.

      Vymazat
  4. Zatlačil jsem slzu při vzpomínce na PMI i PMD. Už se těším, až si to budu moci stáhnout.

    (a jen pro informaci: nejkrásnější, nejšikovnější a nejskromnější jsem já!)

    OdpovědětVymazat
  5. Vyzerá to pekne. A som zvedavý aj na emulátor PMD 85. ;-)
    Nenašiel som tu ale link na stiahnutie emulátora PMI-80. Alebo mi niečo ušlo?

    OdpovědětVymazat
    Odpovědi
    1. Dal jsem si vloni pausu (po 25 tisících řádků v Javě celkem nutnost), momentálně mi PMD 85 pomalu začíná fungovat. Resp. v tuto chvíli už z něj funguje leccos, ale ne všechno je tak, jak bych si představoval, takže zároveň programuji nové věci a předělávám loňský kod.

      Vymazat
  6. A ty periferie? V čem jste to maloval? :-O

    OdpovědětVymazat