Running MSX on SORD M5 Creative Computer
Emulace MSX
Pokud máte potřebný hardware (upravený Sord M5 + 64KBi nebo 64KBf či 64KRD/KRX) anebo máte čas a náladu hrát si s M5 a emulátorem MSX v MAME, pak tedy pár informací.
MSX emulátor pro M5 existuje v původní verzi 1.B, kterou vyvinuli členové brněnského Sord klubu někdy ke konci osmdesátých let minulého století, jmenovitě Ing. Pavel Janko (verze 1.A ke mně nikdy nedoputovala). Do něj lze načítat zvukové (resp. datové) soubory v originálním MSX formátu. Já s Luďkem (LZR Soft) jsme udělali verzi 1.C, která používá formát kazetového záznamu jakou používá Sord M5.
V té době to mělo smysl, protože použitelný kopírovací program pro formát MSX jsme neměli, zatím co pro Sord M5 v té době existovala celá řada kopírovacích programů, včetně mého Single Copy a nebo našich společných výtvorů SOS Copy a později i Excellent Copy (inspirováno podobnými kopírovacími programy, viz obrázky okolo).
Excellent Copy je plnohodnotný kopírovací program využívající veškerou dostupnou a využitelnou paměť v počítači, tedy nejen RAM, ale i VRAM. Takže stačilo jedenkrát převést MSX tape format na M5
Ještě existuje verze 1.D, kterou jsem vytvořil pro Stuchlíkovu FDD jednotku, tedy místo kazety se využívala disketa ve formátu SKW (Skew, taky můj "vynález").
Kompletní zdrojový kód (disassemblovaný, okomentovaný) verze 1.C je k nahlédnutí zde: MSX_1.C_release_3.ASM
Co znamená IL v názvu souboru?
Pravděpodobně Intelligent Loader. Emulátor MSX je na kazetě zaznamenán po blocích 256 bajtů "pozpátku," to znamená, že na kazetě je jako první blok poslední kus MSXu, pak předposlední a tak dále až k nule. Smysl to má ten, že při hw resetu se sice nesmaže RAM, ale M5 Monitor ROM (BIOS) a Basic-x přepíší obsah paměti od adresy &h7000 (MSX končí na adrese &h7FFFF). Takže loader zkontroluje, které bloky od nuly jsou OK a pak z kazety načte jen ten poškozený konec. Tím se šetří čas.
Původ
Dobový dokument od Ing. Jána Grečnera, kterým byli o emulátoru MSX zpraveni i mimobrněnští fanoušci/majitelé SORDa, si můžete přečíst zde.
Protože jsem se snažil dokumentoivat všechno, co jsem na počítači dělal, napsal jsem o MSX dva informační materiály. Oba mají stejný úvod, ale dále se pak věnují v prvním případě práci
Převod MSX her do M5
V Brně vymysleli, že se přidržením obou kláves shift hra ukončí a řízení se vrátí zpět do MSXu. Tím pádem se MSX v paměti RAM nesmazal a nemusel se načítat znovu z kazety. Což se při HW resetu stalo: část MSXu od adresy 0x7000 vzala za své poté, co naběhl "BIOS" a Basic M5. Druhý případ byl, že hra se sice načetla do volné paměti, ale pak se přesunula na místo Basicu (čímž by ho smazala), takže se na to používala taková finta: Basic a hra si vyměnily místo a při stisku Shiftů se Basic vrátil zpět, čímž se opět nic nesmazalo a MSX mohl normálně nastartovat, aniž by se musel donahrávat z kazety.
Mě celkem iritovalo, že některé hry nejdou hrát s mýma levýma rukama, proto jsem je prohlížel
Tady je česky okomentovaný zdrojový text v assembleru jako ukázka, o čem to bylo. Samotnému napsání "přílepku" samozřejmě předcházely hodiny hledání s poukování do "živého" programu v paměti RAM a ladění, že to funguje: ADJUKAZK1.ASM. Téměř kompletní (časem snad úplně kompletní) sbírka zrojových textů v assembleru je pro změnu zde.
Klávesnice
MSX má funkční klávesy F1 až F5, Sord M5 má jen tlačítko FUNC, které se v emulátoru používá jako klávesa ESC. F1 až F10 se tedy vyvolává pomocí CTRL+1 až CTRL+5 a případně spolu se stiskem SHIFT (pro
- CTRL+3 - bload"cmt:",r - načte z kazety binární soubor a rovnou ho spustí
- CTRL+1 a CTRL+2 - defusr(0)=&h a :?usr(0) - spustí program ve strojovém kódu,
například defusr(0)=&h8FF8:?usr(0)
Co to znamená? Po resetu hry a návratu do MSX, lze hru znovu spustit. Jediné, co při tom musí uživatel vědět, je adresa startu hry, což lze vyčíst z hlavičky souboru, nebo se to zobrazuje například
Na obrázcích výše se většina her startuje skokem na adresu &h8FF8, tedy do stejného místa, v jakém hra v paměti začíná (první sloupec). Originál začínal na &h9000 a "přílepek" je před ním. Nicméně hry HIWAY a HOLE1 se ukládají na adresu &h8000, ale spouští se od adresy &hC000 (přílepek je až za hrou).
Knihovna programů
Co všechno se podařilo, případně nepodařilo v emulátoru zprovoznit? Co funguje bez chyb a co se občas hroutí? To všechno jsem sepsal v tomto dokumentu: Seznam MSX programů a her pro M5. Dlužno podotknout, že první verze textu byla jen plain text bez diakritiky, později, když bylo k dispozici PC/XT se softwarem Text602 jsem text doplnil o diakritiku a formátování. Po třiceti letech jsem se pokusil text převést do Wordu, což se úplně nepovedlo (zmizelo formátování a diakritika se nepřevedla správně), takže jsem text ručně opravoval celý den, plus jsem do něj doplnil alespoň nějaké HTML formátovací značky. Přesto v něm mohou být chyby.
Pár slov k MAME
Tak za prvé, musí se použít starší verze MAME, protože nové mají nějakou chybu a nefunguje tam 64KB RAM. Měl jsem trpělivost testovat verze až do čísla 0.219 - tam to ještě chodí. Ve verzi 0.239 už to nefunguje. Verze mezi těmito dvěmi čísly jsem nezkoumal. Za druhé, MAME se spustí příklazem:
mame64.exe m5p -w -cart1 64kbi -cass cassettes\m5p\SORD_m5_MSX_1C_Athletic_Land_RF-0F.WAV
nebo lze i takto:
mame64.exe m5p -w -cart1 64kbi -cart2 basici -cass cassettes\m5p\SORD_m5_MSX_1C_Athletic_Land_RF-0F.WAV
Pochopitelně, že cesta m5p musí korespondovat s místem, kam soubory nahrajete. Pokud se použije parametr -cart2 basici, pak se musí v Basicu-I napsat příkaz TAPE, aby se začalo načítat z virtuální kazety. Ukázka je například zde:
RF-0F v názvu WAVu říká, že soubor byl zaznamenán s rychlostí &h000F (vyšší, než dovolují běžné fyzické kazety, nejvyšší, kterou umí MAME). Defaultní přenosová rychlost M5 je nastavena na &h0021
Parametr -w není povinný, jen říká, že se má MAME spustit v okně.
Odkud stahovat
Z mého úložiště Disk Google a možná časem i z mého OneDrive. Každopádně validní odkaz najdete na stránce download.