Programátoři z pekel zde za šat a stravu programují čipová pseuda. Nyní s favicon!

Emulátory z pravěku

Vyzkoušel jsem si více než pětadvacet let staré emulátory ZX Spectra na šesti platformách. Tady jsou mé zážitky.

MS-DOS

Když jsem na sklonku roku 1997 po třech letech intenzivního vztahu svůj Didaktik Gama nejdříve písíčkem pouze doplnil a o rok a jeden upgrade později i definitivně nahradil, velice rychle se na disku těch laciných bazarových skládaček objevil emulátor. Tehdy to bylo Warajevo 1.5, u nějž byla hlavní přesvědčující vlastností možnost běhu na grafické kartě Hercules (a samozřejmě mě už tenkrát uchvátil ten příběh). Sice bylo na 286 docela pomalé, ale šlo už v podstatě moderní emulátor v dnešním slova smyslu, podporovalo dnes běžné formáty souborů (TAP, SNA, Z80) a mělo smysluplné ovládání.

Při vzpomínce na tu dobu jsem si řekl, že bych chtěl zkusit něco staršího, emulaci z doby počátků emulace. Prolezl jsem World Of Spectrum a našel The Spectrum Emulator (SPECEM, neplést se SPECEMU). Tento emulátor, ač je u něj na webu uveden letopočet 1997, pochází z ledna 1992, tedy z doby kdy jsem sice už znal všechna písmena, ale četl jsem je pouze z papíru, digitálního zařízení nemaje. A je to na něm znát.

SPECEM - úvodní screen

Už od první obrazovky je patrné, že to je soft z doby, kdy se programy napříč vícebitovými platformami snažily vypadat vizuálně co nejlépe. Dnes pustíte emulátor, systém mu nakreslí okno a menu a uvnitř máte už jen to slibované Spectrum. Tady je pěkný úvodní obrázek, za běhu stále přítomné grafické logo a celkově bych na první pohled program řadil spíš třeba na Atari ST než na PC.

SPECEM - load error

Z dokumentace je patrné, že emulátor vznikal už od začátku roku 1990, nejdříve však jako Z80 disassembler a na kompletní emulátor byl pouze posléze předělán. Emuluje jen holé 48k Spectrum, navíc je pro jeho používání potřeba autorem upravená ROM, která má patchované kazetové operace. Caps/symbol shift je namapován na levý/pravý PC shift, což je pro nás zvyklé mačkat to jednou rukou tak trochu noční můra.

SPECEM - hrajeme

Emulátor neumí žádný z dnešních formátů, páska se emuluje-neemuluje nad diskem, deset znaků názvu + jeden znak určující typ záznamu jsou nacpány do MSDOS 8+3 konvence s tím, že všechny nepovolené znaky jsou nahrazeny podtržítkem. Tedy například basicový program POOL je uložen jako POOL____.__B a stroják k němu jako POOLCODE.__C. Nelze tak nahrávat pomocí LOAD „“, vždy je zapotřebí uvést jméno. Výhodou je, že uvnitř těchto souborů je už pouze holý kazetový záznam, takže prostým spojením dohromady vznikne ekvivalent dnešního TAP formátu. Druhý (a poslední) formát, se kterým si emulátor poradí jsou překonvertované snapshoty z diskového systému Plus-D s DOSovou příponou PRG. Na jejich konverzi je přiložena utilita PDEX, která si je umí najít na vložené Plus-D disketě.

Ovládání je velmi jednoduché – je to stejné jako na Spectru, navíc jsou čtyři funkční klávesy:

  • F1 – zastavuje refresh obrazu (refresh neprobíhá neustále ale jen při zavolání PAUSE z BASICu, HALT ze strojáku nebo čtení portu 255)
  • F2 – refresh obrazu 1x za deset přerušení
  • F3 – zapíná / vypíná pohled dovnitř registrů procesoru v levém sloupci
  • F4 – zapíná / vypíná zvuk

Kromě těchto kláves už toho autor – Kevin J. Phair z irského Dublinu – mnoho navíc nepřichystal, snad jen hranaté závorky k ovládání rychlosti emulace a kombinaci Alt-Esc, kterou se někdy emulátor i podaří ukončit. Když to nejde, radí manuál Ctrl-Alt-Delete.


Macintosh

Nelze vyzkoušet emulátor ZX Spectra z první poloviny devadesátých let dávno minulého století určený pro IBM PC a kompatibilní a nenechat zaznít otázku: Jak to asi tenkrát vypadalo u konkurence?

Byla to tehdy skvělá barevná doba plná různých soupeřících platforem a i když už tenkrát škarohlídi tvrdili, že budoucnost patří jen a pouze písíčku, tak až do příchodu Windows 95 to zdaleka jasné nebylo. Z té celkem široké palety mě na prvním místě pochopitelně zaujal Macintosh. To v něm ještě byly procesory, které tam patří a na těch procesorech běžel systém, který na ně patří. Co tedy pra-applisti na svých pra-pra-počítačích spouštěli, když si chtěli zahrát Manic Minera?

ZX Spectrum 1.0.0 beta

V této době kvetl u Apple naprostý okénkový purismus. Aplikace v drtivé většině případů celoobrazovkový režim vůbec neznaly a nikomu to ani nechybělo. Jeden z úplně prvních emulátorů, vydaný v roce 1993 a nazvaný prostě ZX Spectrum 1.0.0 beta, není v tomto ohledu výjimkou. Emuluje holé 48k Spectrum a umí otevírat snapy ve formátech SNA (přežil dodnes) a SP (kde je mu konec?) a to je asi tak vše, co se dá k jeho schopnostem říct. Španělský autor Lorenzo José Ayuda Serrano za něj sice při registraci požadoval dvacet dolarů (respektive 2000 peset), ale víc funkcionality se dodat neobtěžoval.

Jelikož se emulátor drží i dalších prvků filosofie operačních systémů Apple, lze v něm najednou otevřít tolik snapů, kolik jich pobere paměť vašeho Macintoshe. Emulace pak běží pouze v aktivním okně, ostatní virtuální Spectra jsou zastavena. Dokážu si představit užitečnost takové funkcionality, nicméně ani jedna z těch představ se neobejde bez možnosti něco někam ukládat a ta chybí. V čem se program od jablečného standardu odchyluje, je způsob ukončení, kdy je zapotřebí zmáčknout Command-Q v každém okně a ne pouze jednou nad celou aplikací.

Pro nostalgické hraní osmibitových her během pauzy při sázení nějakého časopisu byl tento emulátor plně postačující, ale písíčkáři na tom už byli o poznání lépe.


Atari ST

Zatímco emulátory ZX Spectra ze samého počátku devadesátých let pro PC a Mac byly ještě tak trochu přibržděné, jsou platformy, kde tou dobou už existoval software s poměrně širokými možnostmi. Řeč je samozřejmě o domácích vícebitech, dnes konkrétně o Atari ST.

Ono je to veskrze logické: kde by takový spectristický odpadlík, který se z pocitu nejhlubší provinilosti ze zrady svého oblíbeného počítače jednoho dne rozhodl vytvořit jeho emulátor, vzal peníze na něco tak drahého jako je klon IBM PC či snad dokonce Macintosh? Ne, takoví obvykle své Spectrum vyměnili v polovině osmdesátých let za Amigu či Atari ST a právě na nich tak vznikly první a dosti propracované emulátory.

Sinclair ZX Spectrum Emulator

Sinclair ZX Spectrum Emulator - Manic Miner

Emulátor, nazvaný opět velmi prostě Sinclair ZX Spectrum Emulator (první verze 1990, verze 2.0 z let 1992-1993; spouští se pomocí specci.prg, škoda že emulátor autor nenazval takto, alespoň by se odlišil), emuluje ZX Spectrum 48k, Interface 1 a Microdrive. Ze snapů si poradí s univerzálním SNA a vlastním SNX, kazetu emuluje stejně jako SPECEM, tj. nad aktuálním adresářem. Na rozdíl od SPECEM ale pokrývá i nahrávání bez zadání názvu, tj. LOAD „“ – pokud zadáte tento příkaz, budete vyzváni k výběru souboru. Kazetové soubory opět obsahují pouze kazetový záznam bez dalších dat navíc, jejich prostým spojením do jednoho tak vznikne moderní TAP.

Sinclair ZX Spectrum Emulator - nastavení

Kromě takového toho standardního osmačtyřicítkového blbnutí, jako je hraní her či programování v BASICu se s tímto programem dá už dělat i něco víc. V propracované nastavovací obrazovce lze například nastavit, že se sériový výstup z IF1 má směřovat na sériová či paralelní port Atari ST, takže je možná interakce virtuálního Spectra s reálným světem.

Sinclair ZX Spectrum Emulator - monitor

Další vlastností, kterou v roce 1993 nebylo u emulátorů na některých jiných platforách až tak běžné potkat, je monitor. Zobrazuje stavy registrů, umožňuje procházet paměť a její hodnoty zobrazuje nejen jako čísla ale i jako odpovídající instrukce Z80.


Unix

Unixové pracovní stanice se mezi prostý lid dostávaly ještě hůř než Mac. Linux, který dnes lze nainstalovat na cokoliv, co má procesor, byl tenkrát ještě v plenkách, takže se není co divit, že se emulování rozeběhlo až o něco později.

Asi první unixový emulátor ZX Spectra byl XZX, který se někdy na přelomu let 1994 a 1995 se změnou vývojáře přetransformoval na XZX-Pro. Z toho se během následujících let stal jeden z nejschopnějších emulátorů mainstreamové duo DOS/Windows. Rané verze se ale dneska už prakticky sehnat nedají, takže chceme-li vidět, jak vypadal takový emulátor pro unix v počátečním stádiu vývoje, je zapotřebí sáhnout jinam.

xz80 / Slackware 4 + KDE

Emulátor xz80 má sice dost nízké označení verze – 0.1d – ale je i tak použitelný. Vyšel v srpnu 1995 a umí emulovat klasické ZX Spectrum 48k. Pracuje se snapy ve formátu SNA a umí číst i psát obrazy pásek ve formátu TAP. Jediná zajímavost která stojí za zmínku je emulace ZX Printeru, která probíhá jako tisk do souboru ve formátu MBM.

Zdrojové kódy se mi podařilo přeložit pod osmnáct let starým Slackware 4.0, běžícím v Microsoft Virtual PC na PowerMacu G5. Stačilo mírně upravit Makefile a ve zdrojáku zlikvidovat některé části kódu, které sahají na zvukové zařízení. Emulátor funguje úplně bezproblémově, před použitím doporučuji přečíst obsáhlou manuálovou stránku.


Risc OS

Zatím jsem testoval dobovou emulaci ZX Spectra výhradně na platformách, na které bylo možné v devadesátých letech narazit i u nás. Počítačů Acorn Archimedes a navazujících RiscPC u nás bylo řádově méně. Jsou to počítače britské, používané Brity, to by v tom byl čert, aby tam nebyl pěkný emulátor!

MZX pod RISCOS 3.7

Naštěstí v tom čert není. Existuje emulátor MZX, datovaný do let 1993-1994, který v té době už navíc vycházel v třetí přepracované verzi s označením 1.10 (první 1.00, druhá 1.02). Vyžaduje pro svůj běh alespoň 1MB RAM a RISC OS 3, pokud ho chcete provozovat v multitáskovém režimu, pak musíte mít RISC OS 3.5. Emuluje holé ZX Spectrum 48+, na numerických klávesách 1,2,3,4 a Enter emuluje Kempston joystick, ověm máte-li k hostovskému Archimedu připojen joystick skutečný, použije se ten. Ze souborů zvládá se snapy ve formátu SNA a Z80, oba je schopen číst, druhý jmenovaný pak i ukládá.

Je to vlastně velmi jednoduchý emulátor, nicméně díky dospělému prostředí mateřského operačního systému (říkejte si, co chcete – RISC OS vypadá z grafických systémů té doby nejlépe a nejlépe se i chová) jsou tu běžné takové fičury jako drag/drop souboru do okna emulátoru, nastavování pomocí menu atd. Neměli to tenkrát ti britové vůbec špatné.


Amiga

S Amigou mám dvojí, vlastně trojí problém:

  • Moje A1200 leží v Doupěti a čeká, až si najdu konečně jednou čas, do turbokarty dám nějaký pěkný paměťový modul, osadím disk a uvedu ten počítač v denní život.
  • Rozeběhat nějaký emulátor pod Slackware 14.2 64bit je naprosté peklo, čistá noční můra a absolutní běs.
  • Najít funkční emulátor ZX Spectra z první poloviny 90. let, který by běžel a cílem jeho běhu nebyla nějaká meditace – to také není zrovna jednoduchá záležitost.

Problémy jsou tu od toho, aby se překonávaly. Překonal jsem tedy nejen svůj ambivalentní vztah k této platformě, ale i body dva a tři předchozího seznamu a vyzkoušel ZXAM Spectrum Emulator 2.0, který spatřil světlo světa 6. února 1995.

ZXAM - GUI

Emuluje ZX Spectrum 48k, nicméně se zvukovým obvodem AY-3-8912, takže je to, jako byste u svého Spectra měli například interface Melodik (pravděpodobně to bude mnohem lepší než Melodik). Připojenou veselou hůl umí využít jako Kempston, Sinclair či Cusror (AGF/Protek) joystick. V distribučním archivu (shareware, cena $15) jsou čtyři binárky: non-AGA/AGA a od každé verze ještě standard/slow. Všechny verze vyžadují procesor 68020 či lepší, pochopitelně ty s AGA v názvu lze spustit pouze na strojích s AGA čipsetem.

Ne-AGA verze umožňuje běh v okně, na celé obrazovce nebo v PAL/NTSC režimech bez použití systému. AGA verze tuto možnost nenabízí, je vždy fullscreen, zato ale umí například atribut FLASH, který ne-AGA neemuluje. Rychlejší verze emuluje trochu méně kompatibilně, zato zabírá o dost méně procesorového času, přičemž i ta standardní není žádný velký otesánek – podle manuálu dvě současně běžící emulace zatěžují 68030 taktovaný 28 MHz na zhruba devadesát procent, tedy pokud máte dostatek FAST paměti, bez ní je emulátor o poznání pomalejší.

ZXAM - běh

Emulátor je španělský, snad proto podporuje snapshoty ve formátu SP, které jsem viděl poprvé a naposledy při testování emulátoru pro Mac. Dle manuálu umí i formát Z80, KGB (formát předchozích amigáckých emulátorů) a Mirage (dle doprovodného textu snad jedna z prvních verzí SNA). Vyzkoušel jsem pouze jeden ze SP snapů, které jsem našel v archivu ke zmiňovanému macovskému emulátoru a fungoval.

Kazetová emulace probíhá buď nad diskem, z nějž se načítají jednotlivé kazetové bloky uložené jako samostatné soubory, nebo lze použít i formát TAP, který ale emulátor neumí nativně, je zapotřebí jej pomocí skriptu v jazyce ARexx rozdělit do jednotlivých souborů.

ARexxové skripty jsou největším plusem celého emulátoru a díky nim je ZXAM z doposud vyzkoušených asi nejlepší. Skripty umožňují dělat si s emulovaným počítačem, co se vám jen zachce. Lze pomocí nich programově načítat či měnit registry virtuálního procesoru Z80, sahat do paměti (číst, psát – texty, čísla, cokoliv), nahrávat či ukládat soubory, části paměti, obrazovku, atd.

Zcela narovinu řečeno – čekal jsem, že nejlepší emulátor této éry najdu na Amize. Pro domácí použití to pravděpodobně byla nejlepší platforma přelomu 80. a 90. let, takže je na ní právě takovýto software nejpropracovanější. Některé vlastnosti ZXAM bych uvítal i v dnešních emulátorech.


Závěrem

Další platformy se sice nabízely (Sinclair QL, BeOS, …), nejsem v nich však nikterak zběhlý, takže jsem se raději na tento tenký led nepouštěl. Emulace ZX Spectra na novějších počítačích je rozhodně obor, který se během 90. let hezky rozjel. Když se podíváte na seznam emulátorů a porovnáte to s počty emulátorů konkurenčních platforem, rozdíl jasně uvidíte. Relativně jednoduchá koncepce ZX Spectra proti zákaznickými obvody nacpaným počítačům od Atari či Commodore, nelpění Amstradu na autorských právech k obsahu ROM, velké množství software, kvůli němuž mělo počítač smysl emulovat a stále živá nová produkce – to vše stálo na naší straně. Ještě, že tak.