Obsah
Pokud si chcete vyzkoušet, jak funguje můj emulátor PMI-80, nevadí vám, že to je alfaverze a potřebujete trošku postrčit, tak tu pro vás mám takového menšího průvodce…
Emulátor PMI-80 je součást mého osmibitového IDE ASM80. Je zatím v první veřejné alfaverzi, ale už je aspoň trošku funkční, tak pro největší nedočkavce zveřejňuju návod, jak si zkusit něco málo s PMI.
Pokud hledáte informace o PMI-80, mohu doporučit stránku PMI-80 na NOSTALCOMP.cz.
Spuštění emulátoru
Není co řešit – klikněte na odkaz Emulátor PMI-80. Je to webový emulátor, takže stačí mít nový prohlížeč (na starých nefunguje, protože používá některé moderní vymoženosti) a myš.
Intermezzo: Ano, asi by šlo vše upravit tak, aby to fungovalo i s IE6, ale „poměr cena-výkon“ je velmi nepříznivý. Ztratil bych tím tolik času, že by mě to pravděpodobně přestalo bavit ještě před dokončením, takže jsem upřednostnil řešení „mít hotovo pro 97 % internetové populace“ před řešením „nikdy to nedodělat pro 100 %“
Vlevo je sloupec se soubory, které máte uložené v prohlížeči. Uprostřed je samotný emulátor. Vpravo pak ovládání „virtuální magnetofonové pásky“ a tabulku s nápovědou, která říká, jak jsou přiřazené klávesy. Nemusíte klikat myší na virtuální klávesnici (i když to můžete taky), můžete použít klávesnici svého PC.
První krok
Stisknutím jakéhokoli tlačítka (kromě RE, což je RESET, a I, které vyvolá přerušení) se dostanete do režimu, kdy PMI čeká na příkaz – poznáte to podle toho, že se vlevo objeví „něco jako otazník“:
Co teď? Teď tam naťukáme první program. Kde ho vezmeme?
První program
Já použiju program z knihy Mikropočítač PMI-80. Co s ním? od Jaroslava Vlacha (naleznete ji na výše uvedeném odkazu na webu NOSTALCOMP). Použiju program číslo 3 – stopky. Jeho zdrojový kód je následující:
1C00 .ORG 1c00h 1C00 CLEAR: EQU 00abh 1C00 OUTDA: EQU 00f2h 1C00 DISP: EQU 0140h 1C00 3E 19 MVI a,19h 1C02 CD AB 00 CALL clear 1C05 3E 00 MVI a,0 1C07 32 FA 1F STA 1ffah 1C0A 16 20 L1: MVI d,20h 1C0C 00 L2: NOP 1C0D CD F2 00 CALL outda 1C10 CD 40 01 CALL disp 1C13 15 DCR d 1C14 C2 0C 1C JNZ l2 1C17 3A FA 1F LDA 1ffah 1C1A 3C INR a 1C1B 00 NOP 1C1C 32 FA 1F STA 1ffah 1C1F C3 0A 1C JMP l1
Jistě znáte výpis assembleru – úplně vlevo adresa, pak operační kód, pak instrukce. Teď je potřeba operační kódy naťukat do PMI.
Vkládání dat do PMI-80
Na displeji máme otazník. Stiskneme M (pro práci s pamětí) a na displeji se objeví „M 0000“ (samosebou limitované sedmisegmentovým displejem, takže M je spíš takové obrácené U). Zadáme adresu (1c00) a stiskneme [=] (na PC klávesnici je to ENTER). V pravé části se objeví „00“. Teď zadáváme data. Na adrese 1C00 je to 3E, takže zadáme 3E, mačkáme ENTER ([=]), adresa se o jedničku zvýší, zadáme obsah na adrese 1C01, tedy 19… a pokračujeme, dokud nenaťukáme všechno.
Když dojdeme k poslední adrese a poslední hodnotě, tak stiskneme třeba [EX] (na klávesnici je to X). Na displeji se objeví „Err:data“, po dalším stisknutí se dostaneme zpátky na otazník.
Spouštíme program
Na displeji je otazník, PMI čeká na pokyny. Mačkáme tedy [EX]. Displej vlevo zobrazí G a čtyři znaky adresy. Zadáme 1C00 a mačkáme [=]. Tím se program spustí od adresy 1C00.
Krása, že?
Když se ho nabažíme, stiskneme [RE]. Tím se PMI resetuje, ale nebojte – o program v paměti nepřijdete, zůstane tam uložený.
Ukládáme program na pásku
Po náročném ťukání by bylo dobré svou práci uložit, ať se s tím příště nemusíte ťukat zas. PMI k tomu má rozhraní pro práci s páskou, a můj emulátor má zase „virtuální pásky“. Jak na to?
- Z pohotovostního režimu (s otazníkem) stiskneme [S]
- Adresu zadáme 1C00 a potvrdíme [=]
- Číslo bloku necháme 00 a potvrdíme [=]
- Displej ukazuje „MG run“…
- Klikneme na „Tape start – record“, tím spustíme nahrávání. Rozhraní signalizuje „RECORDING“
- Stiskneme opět [=] (na PMI), čímž se spustí záznam. Nějakou dobu to potrvá. Během té doby se úplně vlevo objeví znak „t“ a počítadlo odpočítává.
- Po skončení záznamu displej ukáže „MG STOP“.
- Klikněte na tlačítko „Tape stop“, čímž se ukončí nahrávání na virtuální pásku.
- „Tape length: 4626“ je správná délka záznamu.
- Stiskneme naposledy [=] a tím se ocitneme zase v pohotovostním režimu.
Virtuální páska je uložena v prohlížeči, takže když se na stránku s emulátorem vrátíte po čase, budete ji mít k dispozici.
Čteme program z pásky
Postup je obdobný ukládání.
- Stiskneme [L] v pohotovostním režimu
- Zadáme adresu, od které chceme data nahrát (1C00) a potvrdíme [=]
- Zadáme číslo bloku (00) a potvrdíme [=]
- Displej vyzve „MG Start“
- Nejprve potvrdíme [=]…
- … a pak klikneme na Tape start – playback
- Data se začnou nahrávat, ukazatel odpočítává
- Po nahrání displej zobrazí „MG Stop“
- Stiskem [=] se zase dostaneme do pohotovostního režimu.
Ukládáme si pásku pro pozdější použití
Máme pásku nahranou. Bohužel se na ni vejde vždy jen jeden záznam. Ale to nevadí, můžeme si ji uložit pro pozdější použití. Stačí kliknout na „Save tape“ a zadat vhodné jméno („Stopky“ třeba). Soubor se uloží do souborového systému v prohlížeči a objeví se v levém sloupci s příponou „.pmitape“. Můžete si jich uložit kolik chcete. Kliknutím na něj jej zase „přesunete“ do „virtuálního magnetofonu“.
Použijeme assembler, protože jsme líní to celé překládat ručně a ťukat do klávesnice.
To samosebou lze. V horním pravém rohu je tlačítko „Back to IDE“. Klikněte na něj a ocitnete se v IDE ASM80. Vlevo je seznam souborů, vpravo ovládání, uprostřed okno editoru. Klikněte na „New file“, jako jméno zadejte „stopky.a80“ (přípona A80 řekne překladači, že má použít modul pro procesor 8080) a napište program. Nebo si ho zkopírujte odsud:
org 1c00h clear equ 00abh outda equ 00f2h disp equ 0140h mvi a,19h call clear mvi a,0 sta 1ffah l1: mvi d, 20h l2: nop call outda call disp dcr d jnz l2 lda 1ffah inr a nop sta 1ffah jmp l1
Klikněte na „Save file“ a pak na „Compile“ (nebo použijte F9). Program se přeloží a v levém sloupci, mezi soubory, se kromě „stopky.a80“ objeví i další dva soubory: „stopky.a80.hex“, který obsahuje HEX formát binárních dat, a „stopky.a80.lst“, ve kterém je výpis přeloženého kódu (to je ten první výpis v tomto článku).
A protože je to celé propojené (cizím slovem „integrované“), tak se vraťte do emulátoru PMI-80 (stačí kliknout na tlačítko vpravo nahoře s nápisem PMI-80, nebo ručně zadat adresu…) V emulátoru teď vidíte v levém sloupci soubor „stopky.a80.hex“. Kliknutím na něj ho natáhnete do paměti. Tralala, žádné ťukání do kláves. Můžete si vyzkoušet – pomocí klávesy M si projděte paměť od adresy 1C00 a uvidíte, že tam je to, co čekáte…
Co dál?
Vezměte si k ruce tu knihu, experimentujte, hrajte si, ať se vám líbí! Kdybyste objevili jakoukoli chybu, použijte Uservoice (to je taková ta bublina s otazníkem vpravo nahoře) a nahlašte mi ji, děkuju.
No a pro zvědavce prozradím, že mi funguje prealfa verze emulátoru BOB-85. Musím dodělat přesné časování instrukcí procesoru 8085 a napojit jej na virtuální magnetofon. Až bude hotovo, dám vědět opět tady…