Když jsem dával dohromady emulátor počítače TESLA SAPI-1, potřeboval jsem ho na něčem testovat. Samozřejmě, že jsem testoval na stávajícím softwaru, ale toho je jednak málo a druhak jeden z důvodů, proč jsem emulátor dělal byla jednodušší tvorba softwaru. Proto má emulátor od začátku v sobě MCP server a CLI, díky kterým vznikly nové programy nebo spíš většinou jsem přeportoval programy z jiných platforem. No a protože některé programy jsou celkem zajímavé, dal jsem je většinou jako součásti vzorových sestav emulátoru a tady je máte i samostatně, kdybyste je chtěli prohnat na reálném železe. Všechny jsou samozřejmě testované na emulátoru i na fyzickém SAPI-1, protože o to šlo – aby emulátor byl věrný HW.


Většina toho vznikla s použitím AI, tak kdo nemáte rádi AI slop, ignorujte to dál 😉 Samotného mně to obtěžuje, protože spousta věcí, co lidé chrlí a valí se ze všech stran je opravdu hrozná a chápu, že to obtěžuje i ostatní. Tak se s tím nijak nevnucuju a toto je jediné místo, kde najdete zmínku o tom, co vzniklo pro SAPI-1 během tvorby emulátoru. Teda kromě GitHub samozřejmě, kde jsou ke všemu zdrojáky a detailní únavné popisy, které si ale ráda přečte vaše AI a pomůže vám pak projekty snadno upravit dle vašich představ.
Na druhou stranu si myslím, že kdo dnes vyvíjí software bez AI, zbytečně pálí svůj čas. Nekamenujte mně, názory jsou na to různé, požadovaná kvalita výstupu je různá a někdo chce trápit svoji hlavu důvtipnými algoritmy, protože ho to baví a tomu rozumím. Ale proč nenechat některé nudnější části na AI? Testování a dokumentace jsou typické případy. Ani AI už to nechce dělat 😉 Vzpomínám si na hlášku „Musím zaktualizovat dokumentaci. Soubor je dlouhý a je to nudná a rutinní práce, vezmu si na to pomocníka.“ Hláška je sama o sobě v pohodě, kdyby ji nenapsala sama AI a nepustila si dalšího agenta 😉 Dost AI, jdeme na programy.
Většina následujícího softu předpokládá dnes již celkem obvyklou sestavu karet se Z80, RAM 64 kB, RAM disk, AND-1 a Liborovy karty CGA-1V a MPH-1V pro grafiku, hudbu a joystick, protože SAPI klávesnice je na hry bohužel dost nepoužitelná. Většina se spouští ze CP/M jako program .com a do CP/M se umí vrátit, ale CP/M nevyžaduje, nepoužívá žádné její služby. Programy, co potřebují síť, případně internet, používají moji novou desku DPI-1 nebo DPI-1L. Obě varianty desky jsou v době zveřejnění tohoto článku hotové, otestované a desky revize 1.2 se vyrábějí. Zbývá je vyzkoušet a zveřejnit, což bude snad brzy, doufám že to stihnu do Vrbic.
FLAPPY


Flappy je logická hra firmy dB-SOFT z roku 1984 pro Sharp MZ-800, ve 200 úrovních se v ní tlačí modrý kámen na modré pole. Testoval jsem na ní převod ze SHARP MZ-800. Barevná grafika SHARP 320×200 je pro CGA-1V jako dělaná a zvuk a ovládání jde z karty MPH-1V. Nejvíc práce dala klávesnice: SAPI nehlásí puštění klávesy, takže ji port drží stisknutou, dokud ji hra nepřečte. Pulsy z klávesnice jsou extrémně krátké. Pohodlnější je použít joystick.
Info na GitHub SAPI-Flappy, stažení nejnovější verze zde.
FUXOFT SOUNDTRACK IV


Fuxoft Soundtrack IV je hudební demo, které František Fuka napsal pro ZX Spectrum se zvukovým čipem AY. Tady jsem chtěl vyzkoušet portaci ze Speccy. Všech 27 skladeb se převádí z registrů AY na FM čip YM3812. Překvapením bylo zamrzání u Libora na sestavě se třemi grafickými kartami. Demo se brzy po startu zaseklo a nepomohl ani RESET. Libor přišel na to, že procesorová karta JPR-1V vybere grafickou kartu i v cyklu potvrzení přerušení a ta pak drží procesor v čekání napořád. Měření na mojí desce to potvrdilo a emulátor toto zamrznutí teď věrně napodobuje. Naštěstí to lze víceméně softwarově kompenzovat.
Info na GitHub SAPI-FXS4, stažení nejnovější verze zde.
Bad Apple!!


Známé stínové video na hudbu z Touhou Project, které je snad na všech osmibitech, takže musí být i na SAPI-1. 3 minuty a 40 sekund videa v rozlišení 256×192 a 29,97 snímku za sekundu, na grafice CGA-1V s vlastním FM aranžmá pro YM3812 na kartě MPH-1V. 3,1 MB dat čte program za běhu z RAM disku. Demo prověřilo přepínání stránek CGA-1V v zatemnění, čtení RAM disku přímo přes porty a FM zvuk. Nejvíc práce dalo časování. Na snímek je při 4 MHz jen asi 133 tisíc taktů, takže kodér v Pythonu počítá takty dekodéru Z80 i s čekáním na CGA-1V naměřeným na skutečném SAPI-1. Včas se stihne 95,5% snímků, těžší snímek se ukáže o zatemnění později a video se přitom nezpožďuje. Hudba se synchronizuje podle obrazu.
Info na GitHub SAPI-Bad-Apple, stažení nejnovější verze zde.
BOMBERMAN


Bomberman je hra firmy Hudson Soft z roku 1983. Konverze je přímo ze Sharp MZ-700 binárky, herní kód zůstal původní, změnilo se jen kreslení na CGA-1V, zvuk na YM3812 a ovládání joystickem z karty MPH-1V. Ladil jsem a měřil v emulátoru přes jeho MCP server a pak ověřoval na skutečném SAPI-1. Trochu nás s Claudem potrápila chyba nebo vlastnost assembleru PASMO – unární minus na začátku výrazu bere jako minus celého zbytku, takže -1*40+1 v tabulce ramen výbuchu dalo −41 místo −39 a pravý sloupec horního ramene se kreslil špatně. Našlo ji až porovnání obrazovky snímek po snímku se starší verzí.
Info na GitHub SAPI-Bomberman, stažení nejnovější verze zde.
BobmberNet


BomberNet je síťový Bomberman, který napsal Martin Matyáš pro MZPico. V jeho síťové místnosti se můžou potkat MZ-800, ZX Spectrum, CPC, PC a nyní i SAPI-1. Jádro hry v C je beze změny a dopsali jsme s Claudem jen vrstvu pro SAPI-1. Obraz kreslí CGA-1V, časování, zvuk a joystick obstarává MPH-1V a síť karta DPI-1 (DPI-1L). Hlavně kvůli této hře umí SAPIemu emulaci DPI-1L a síťové příkazy a vlastně to byl i hlavní impulz ke vzniku fyzického hardwaru. Dvě instance emulátoru odehrály přes relay celý zápas bez rozjetí a pak jsem hrál na reálném SAPI-1 proti emulátoru. Trochu zrada byl překladač z88dk 2.4, když jednu podmínku v síťové části přeložil špatně, takže hráči nedostávali klávesy, a pomohl až nightly build z88dk. Hra vyžaduje TURBO 4 MHz, při 2 MHz sice běží, ale zpomalí celou místnost, protože všichni čekají na nejpomalejšího.
Info na GitHub SAPI-BomberNet, stažení nejnovější verze zde.
SAPITerm


SAPI-Term je terminál pro CP/M, se kterým se SAPI-1 může připojit přes síťovou kartu DPI-1 (DPI-1L) telnetem k dnešním BBS. Ukáže ANSI grafiku v 80×25 znacích a 16 barvách na CGA-1V, umí i terminály C64, Atari a videotex Prestel. Soubory jde stahovat přes XMODEM a YMODEM. Prověřil síťovou část karty DPI-1L (DNS a TCP) a 80-znakový barevný režim CGA-1V. Myslel jsem, že to bude tragické, ale je to celkem použitelné. Testy přes MCP porovnávaly obraz s modelem bod po bodu. CGA-1V má v tomto režimu jen 16 dvojic barev na každé čtyři textové řádky, program je proto přiděluje dynamicky za běhu podle obrazu.


Výzva bylo akvárium z telehack.com, které posílá na jeden znak asi 23 bajtů řídicích sekvencí. Po zrychlení zpracování bajtů jde příjem cca 6 kB/s místo 4,3 kB/s a na skutečném SAPI-1 běží akvárium stejně rychle jako v emulátoru. Na PC bohužel výkonnostně nemá, ale koukat se na to vydržím dlouho, resp. běží mi to většinou na SAPI jako kulisa v pozadí 😉
Info na GitHub SAPI-Term, stažení nejnovější verze zde.
World Clock


Světový čas je port World Clock z MZ-800, oživeného dema z dobových inzerátů na SHARP MZ-700. Na SAPI-1 s grafikou CGA-1V ukazuje původní znakovou mapu z MZ-700 s časy devíti měst, ale i modernější mapu světa se dnem a nocí inspirovanou inzerátem na MZ-2000 a digitální nebo ručičkové hodiny. Čas bere z karty DPI-1L nebo DPI-1, z hodin karty ZRMD-1 nebo z karty RTC-1, podle toho, co je k dispozici. Když není k dispozici žádný zdroj času, dá se čas zadat ručně. Používá oba grafické režimy CGA-1V. Protože původní japonský pohled na svět se liší od našeho evropského, přidal jsem i náš obvyklý pohled, který má Evropu uprostřed a na který jsme zvyklí. O demu pro MZ-800 ještě napíšu, byla to celkem zajímavá investigativní práce.
Info na GitHub SAPI-WorldClock, stažení nejnovější verze zde.
Něco chybí?
Kdo si už hrál s emulátorem, asi si všiml, že tady chybí Prince of Persia. Chybí, protože na toho si chystám samostatný článek. Byl to celkem fight a vyplatí se to popsat trochu víc. Když si PoP vytáhnete z emulátoru, klidně ho můžete pustit na reálném železe.
Všechno na jednom RAM disku
Kdybyste chtěli všechno na jednom RAMdisku pro SAPI-1, tak jsem připravil jeho verzi ke stažení. Stačí nahrát HEX na RAMdisk ZRMD-1 nebo ZRD-1V a budete mít k dispozici všechny výše uvedené programy. Vychází z disku Bad Apple 1.0.0, kde BADAPPLE.DAT leží na pevném místě, ostatní soubory jsou ve volných blocích. U SAPI-Term je i SAPITERM.CFG, ve kterém je adresář BBS a testovací obrázky *.ANS, ostatní programy žádné další soubory nepotřebují.