Emulátor ePMD85

Aktuální verze 1.7
Požadavky Windows 10 (32 i 64 bitový systém), DirectX 9.0, zvuková karta
Download ePMD85_public1.7.zip
Stručný přehled novinek

  • emulace PAX modulu
  • prodloužena mezera mezi bloky v ptp souboru
  • oprava zápisového breakpointu
  • změna palety pro colorace/rgbm (rozjasnění barev)
Přehled emulovaného hardware:
Verze PMD85 1, 2, 2A, 3
Videorežimy černobílý+blikání, 4 stupně šedi, 4 barvy (RGBM), COLORACE, WGRM
Změna videorežimu prostřednictvím portu 6Ch
Joystick 4004 možnost připojení na GPIOA, GPIOB
Myš 602 na portu 8Ch
Mif85 emulace SAA1099 + systému přerušení
Magnetofon emulace generování zvukového streamu, zrychlené čtení (patch čtecích rutinek), ukládání záznamu do .ptp souboru
PMD32 prozatím jen experimentální emulace čtení z disketové mechaniky, nefunguje moc dobře
PAX modul emulace ROM modulu, přístup na SD kartu, změna barevného režimu a nastavení palety
Přehled parametrů příkazového řádku
-pmd1, -pmd2,
-pmd2A, -pmd3
volba emulovaného typu PMD85
-blink, -gray, -color, -colorace, -wgrm volba videorežimu
-filter, -nofilter zapnutí/vypnutí grafického filtru
-boost spustit v boost režimu (maximální rychlost emulace)
-mif85 připojit MIF85 modul
-mouse zapne emulaci myši
-pmd32 připojít na GPIOA diskovou jednotku PMD32
-screen2, -screen3 spustí okno ve dvojnásobném/trojnásobném měřítku
-joya, -joyb připojít joystick na GPIOA nebo GPIOB
-d0: diskimage vloží do disketové jednotky 0 obraz diskety.
-d1:, -d2:, -d3, jako d0, vkládá do dalších mechnaik
-clear spustit PMD s vymazanou pamětí, bez uvedení bude vyplněna náhodným obrazem (staženým z reálného PMD)
-mgfsound zapne příposlech magnetofonu, při ukládání na pásku bude slyšitelný zvukový signál
-memory: file do paměti přednačte zadaný soubor od adresy 0000
-rom: file do rom modulu načte zadaný soubor. Kromě názvu souboru lze použít tyto speciální názvy:

  • *BASIC – vloží se BASIC modul podle vybrané verze počítače
  • *AUTORUN – do rom modulu se vloží kód: CD 00 00 C3 3E 80. Vhodné použít v kombinaci s -memory: file
  • *AUTOLOAD – počítač se restartuje jako PMD85-2A a do rom modulu se vloží kód, který ihned vyvolá načtení hry z pásku.
-monitor: file nahradí původní firmwarem obsahem ze souboru. Soubor může být velký až 16 kB a jeho obsah se umístí do paměti podle zvolené verze:

Verze Max. velikost souboru Umístění (při vypnutém AllRAM)
1, 2 16kB 8000 – BFFF
2A 8kB 8000 – 8FFF (první 4 kB)

A000 – AFFF (dalších 4 kB) *

3 8kB E000 – FFFF

*Ačkoliv se u reálného PMD 85-2A mezi adresami A000-AFFF zrcadlí 4kB ROM z adresy 8000, je technicky realizovatelné rozšíření na 8kB, proto s touto možností emulátor počítá.

-mgf: file zadaný soubor bude pokládat za pásku. Pokud se jedná o soubor typu .pmd, po jeho přečtení se pokusí ve stejném adresáři vyhledat další .pmd soubor. Soubory .ptp přetáčí neustále dokola. Soubor s příponou .s85 načte jako uložený stav.
-xtal: freq nastaví frekvenci krystalu, frekvence se zadává jako celé číslo v Hz, např: -xtal: 18432000
-smpf: freq nastaví frekvenci přehrávaného zvuku, podporováno je 48000, 44100, 22050 a 11025
-pax: path zapne emulaci PAX modulu, uvedená cesta se stane rootem pro emulaci SD karty. Je vhodné zavést i PAXCommander parametrem -rom: pax_rom.bin. Fungující verze je součaástí zipu i s bat souborem pro ukázku spuštění. 
file stejné jako –mgf: file (není nutné přepínač)
Ovládání emulátoru

Jakoukoliv konfiguraci počítače lze zvolit přes příkazovou řádku. Tak je možné vytvořit zástupce na ePMD85.exe a zjednodušit si spuštění samotného emulátoru v požadované konfiguraci nebo přímo vybrané hry.

Příklady:
ePMD85.exe -pmd3 -colorace -rom: *BASIC
ePMD85.exe -gray -joya -rom: *AUTOLOAD boulder.pmd

Za běhu lze konfiguraci měnit pomocí ALT nabídky – zobrazí se po stisku levé klávesy ALT. V nabídce se objeví aktuální konfigurace a průzkumník pásky. Při ukončení emulátoru se nastavení uloží. Toto nastavení se opět načte, pokud je emulátor spuštěn bez jediného parametru v příkazové řádce.

Barevné režimy

Emulátor nabízí možnost zvolit barevný režim klávesovou zkratkou Alt+C. Zároveň je možné nastavit barevný režim zápisem na port 6ch. Práce s tímto portem byl zvolen podle ovládání modulu Faudraj a dále podle návrhu zde.

Nastavení barevného režimu se řídí touto tabulkou:

Číslo zapisované na port 6chBarevný režim
0/1Colorace – 7 barev
2WGRM – bílá, zelená, červená a tmavě červená
3RGBM – červená, zelená, modrá a magenta
4,5,6,7Monochromatický (odstíny šedi bez blikání)
Emulace magnetofonu

Emulace je u verzí PMD85-2/2A/3 založena na generování zvukového záznamu. Generování se automaticky spouští, pokud se začne vykonávat rutina hledání pilotního tónu na adrese 8ebeh (eebeh u verze 3), a rovněž se automaticky zastaví při načtení posledního bajtu záznamu. Pro urychlení čtení je proveden patch rutinky na adrese 8b6ch (eb6ch u verze 3), kdy se přímo načte do akumulátoru celý bajt. 

U verze PMD85-1 jsou záznamy čtené z adresy 1eh. Každé přečtení automaticky inkrementuje ukazatel v záznamu. V zájmu zrychleného čtení se u 8251 neustále nastavuje příznak plného vstupního bufferu.

Zápis na pásku je automaticky odchytáván sledováním posloupnosti odeslané na port 1eh. Pokud posloupnost naplňuje vlastnosti hlavičky (úvodní sekvence bajtů ff/00/55 + hlavička + platné CRC), nabídne se volba souboru, do kterého se data ukládají. Soubor je typu ptp a emulátor automaticky odděluje bloky, pokud je mezi zápisy na 1eh větší mezera. Ukládání je dále automaticky ukončeno, pokud se manipuluje s nastavením 8251 nebo 8253 (zápis na porty 1fh/5x) nebo uplyne větší pauza od posledního zápisu na 1eh. Ukládání není patchnuté, takže trvá reálnou dobu, ovšem pomocí boost režimu (ALT+B) lze ukládání výrazně urychlit.

Poslechnout si generovaný zvukový záznam je možné aktivací příposlechu (ALT+G). Tento generovaný zvuk lze také použít pro transfer souboru na skutečné PMD85.

Po otevření ptp/pmd souboru lze obsah pásky procházet v ALT nabídce klávesami ALT+šipka nahoru/šipka dolů/home/end. Při zahájení čtení se začíná označeným záznamem. Ke každému záznamu je uvedena velikost, která je dána součtem velikosti hlavičky a všech dalších navazujících (nehlavičkových) bloků. Rozečtený záznam má graficky znázorněnou načtenou část.

Drop nabídka

Záměna souborů v emulaci pásky, ROM modulu, monitoru a obsahu RAM lze provést prostým přetažením na okno emulátoru a upuštěním na příslušnou nabídku:

  • Vložit a spustit – přepne se na verzi PMD85-2A a do ROM modulu se spustí kód, který provede automatický načtení a spuštění hry. Nefunguje univerzálně, hry pro PMD85-1 takto spustit nejdou, pro tyto případy je nutné zvolit verzi 1, použít Vložit pásku a manuálně načíst příkazem MGLD XX.
  • Vložit pásku  – pouze vloží soubor jako pásku. Pokud se nejedná o soubor s páskou, doplní jej o hlavičku a tento soubor lze načíst příkazem MGLD 00. Do hlavičky se doplní číslo souboru 00, prompt ‚?‘, startovací adresa 00 a 8 znaků z názvu souboru. Držením klávesy SHIFT se nové záznamy připojí na konec načtené pásky.
  • RAM od 0000/RAM od 4000 – načte obsah do RAM od příslušné adresy.
  • Načíst do ROM – myšleno do ROM modulu, např. jiná verze BASICu apod.
  • Nahradit monitor – zamění firmware. Pozor! Po resetu se startuje s tímto firmwarem, pokud obsahuje chybu, může dojít k sesypání emulovaného PMD.
Automatické ukládání stavu

Během emulace se automaticky vytvářejí každé 3 sekundy stavy emulace, ke kterým se lze vrátit klávesovou zkratkou ALT+LEFT. Celkem je možné vrátit emulaci až o 1 minutu. Je to pomocník při hraní i při ladění. Tuto funkci jsem nazval obraceč času podle přívěsku s obdobnou funkcí, který v Harry Potterovi použila Hermiona 🙂

Emulace myši

Na portu 8Ch se vytváří časová posloupnost signálu ze clonek myši a stav tlačítek. Rychlost pohybu myši ovlivňuje rychlost změny clonky.. Pokud je zapnutá emulace myši a klikne se na okno emulátoru, dojde k zachycení myši – ztratí se kurzor a nejde z okna vyjet. Uvolnění myšky se provede klávesou ESC (další stisk ESC zastaví emulaci).

Emulace joysticku

Klávesovovou zkratkou ALT+J lze cyklicky volit připojení joysticku na interface GPIOA nebo GPIOB. Momentálně se emuluje pouze jeden připojený joystick. Joystick je namapován na kurzorové klávesy a pravý CTRL (fire).

Emulace PAX modulu

PAX modul lze spustit jen parametrem příkazové řádky. Pro svou funkci potřebuje uvést cestu, která se stane kořenovým adresářem při emulaci SD karty a dále parametrem -rom: specifikovat obsah emulované ROM – nejlépe PAXCommander. Součástí zipu je obraz fungující verze PAXCommanderu a dávkový soubor pro ukázku, jak emulaci PAX modulu spustit.

Články k verzím
  • ePMD85 v1.7
    Poslední měsíc jsem se věnoval dokončení PAX modulu. Abych si ulehčil vývoj GUI rozhraní pro tento modul, implementoval jsem emulaci PAX modulu i do ePMD85. Kromě toho jsem opravil pár věcí: prodloužena mezera mezi bloky v ptp souboru – měl jsem nastavenou kratší mezeru bloky (během této mezery se generuje jen pilotní tón). To vedlo […]
  • ePMD85 v1.6
    Nestává se to často, že bych připravil novou verzi emulátoru tak brzy, ale protože už si hovím na vánoční dovolené a mám dostatek času, vrhl jsem se na dokončení toho, co mě poslední roky vadilo nejvíce, ale moc se mi do toho nechtělo – emulace čtení a zápisu na mgf pásku. Do teď jsem emulátor […]
  • ePMD85 1.5
    Tak jsem naakumuloval nějaká ta vylepšeníčka a pouštím novou verzi do světa.
  • ePMD 1.4 + debugger
    Nová verze emulátoru je zde! Sice ještě stále nemám dořešenou emulaci magnetofonu, ale přidal jsem 3 mega funkce, tak si to zaslouží samostatné číslo 1.4.
  • Emulátor PMD85 – update na 1.3
    Na začátku dovolené jsem měl čas, a tak přišel na řadu velký „user interface update“.