Džinova 8-bitová stránka
STMZ800
Úvod:
- Tohle zařízení má vlastně dva předky. Zaprvé je to pokračovaní konceptu z ARMZ80, pak ale taky odbočka z vývoje UNICARD s cílem zjistit, jestli je možné docílit rozlišení 800x600 na VGA výstupu řízeného jen samotným MCU.
- Proti ARMZ80 je zde použit ARM Cortex-M4 (bylo M3), z řady STM32F4, která už nabízí 192kB interní RAM a tak eliminuje použití externí RAM. Zároveň se zvýšila taktovací frekvence a přebytečný výkon dopomohl k dvojnásobnému rozlišení. Bohužel variabilita v nastavení hodin periférií jako u LPC1768 chybí, taky výstup DAC má vyšší impedanci, bylo tedy nutno doplnit sluchátkový zesilovač.
- Z UNICARD podědilo komplet emulaci periférií Sharpa MZ800, jako je FDD, QD, RAMdisk. Nabízí tak emulaci komplet MZ800 se všemi běžně dostupnými perifériemi. Micro SD karta se přesunula na pomalejší port a rychlé vícebitové SPI se stará o obrazový výstup 800x600 pixelů v 16ti barvách (pro MZ800 max 640x200, zdvojené řádky a border). Počet PINů se o 36 snížil, už není potřeba připojení na sběrnici počítače.
- Když už je součástí emulace Z80, proč nezkusit taky jiné počítače se Z80, cvičně je doplněna emulace ZX Spectrum a 128K (zatím jen snapshotů ve formátech *.SNA a *.Z80) a to bez potřeby měnit firmware.
- Emulaci lze zpomalovat a zrychlovat (až asi na dvojnásobek), pokud není zrychlená, lze přebytečný výkon věnovat například přehrávání MP3 souboru na pozadí (zvlášť pokud vás už originální zvuk programů nudí :-) ).
Popis:
- Jádrem je STM32F405RGT6 (ARM Cortex-M4 @ 168MHz, 64pin, 1MB flash, 192kB SRAM).
- Napájení 5V přes mini USB konektor, odběr cca 100mA.
- 5V použito pro audio zesilovač a PS/2 klávesnice, zbytek napájen 3,3V z vnitřního stabilizátoru.
- VGA výstup v módu 800x600 pixelů a 60 snímků za sekundu.
- Audio výstup dva kanály min. 8 Ohmů, cca 2x 0,1W max. (pro 8 Ohmů).
- Paměťová karta uSD nebo uSDHC.
- Klávesnice se připojuje přes PS/2 port.
- A opět určeno k vestavbě do mojí oblíbené krabičky HAMMOND 1593K.
Hardware:
- Schéma v PDF.
- Gerber soubory pro výrobu PCB.
- BOM aneb seznam součástek. Při objednávání pozor na položky skladem, ale v Americe ! Berte seznam spíš jako inspiraci při hledání levnějších ekvivalentů.
- Osazovací plánek.
Software a programování:
- DFU soubor (binární soubor pro nahrávání pomocí USB loaderu), zazipovaná aktuální verze je ke stažení zde a aktuální verze aplikace v zipu zde.
- Návod jak nahrát DFU a aplikaci do emulátoru je zde.
Ovládání z klávesnice:
- Rozložení kláves vychází z tohoto popisu.
- Klávesa F12 zde také znamená RESET emulovaného počítače, funguje pak také CTRL+F12 pro restart programu, Q+F12 pro start z Quick disku apod.
- Při kombinaci Z+X+F12 dojde k restartu, ale naběhne ZX Spectrum (48k).
- Při kombinaci Z+X+C+F12 pro změnu naběhne ZX Spectrum 128K.
- Při každé jiné kombinaci neobsahující Z a X naběhne opět Sharp MZ800.
- Držení klávesy J při stisku F12 se Sharp MZ800 resetuje a nabootuje s japonskou znakovou sadou.
- Klávesou F11 lze posouvat po pětinách pixelu synchronizaci vůči pixel datům. Pokud se vám chvěje obraz na LCD monitoru, zkuste 1 až 4x stisknout F11, obraz by se měl ustálit. Na klasických CRT monitorech problém není, obraz je stabilní v každém posunutí.
- Klávesou F11 se rovněž ukončuje debug režim, který se spouští klávesou F10 (zatím jen loguje do souboru průchod programu adresami).
- Držením F9 se vyvolává stavová řádka na monitoru, kde je aktuální grafický režim, hlasitost, dělící frekvence audio filtru a rychlost emulace v % originálního počítače.
- Klávesami + a - na numerické klávesnici se ovládá hlasitost (po spuštění je 60%, krok 5% což odpovídá 2dB).
- Klávesami + a - na numerické klávesnici při současném držení SHIFT se mění dělící frekvence dolní propusti pro audio (přidávají či ubírají se výšky).
- Klávesami * a / na numerické klávesnici se ovládá rychlost emulace od cca 10% do 200%.
- Spouštění snapshotů *.SNA a *.Z80 se provádí z emulace ZX Spectra (po stisku Z+X+F12) příkazem LOAD "jméno_souboru", tedy stiskem J (napíše příkaz LOAD), CTRL+P (uvozovka), pak jméno souboru na uSD kartě i s cestou, opět CTRL+P (uvozovka) a ENTER.
- Stejným způsobem lze spustit přehrávání MP3 souboru (pozná se podle koncovky .mp3), přehrávání pak pokračuje do konce souboru nebo do přepnutí do módu ZX Spectrum 128k (přehrávač sdílí pamět s rozšířenými bankami, nemůže tedy pokračovat). Ve všech ostatních módech, tedy Sharpa MZ800 a ZX Spectrum 48k přehrávání mp3 pokračuje na pozadí.
- Pokud zrovna neběží přehrávání MP3 na pozadí, lze v módech Sharp MZ800 a MZ700 ukládat snímky obrazovky klávesou PRNT SCRN (Print Screen). Snímek se uloží jako BMP soubor do adresáře unicard.
Přepínače a LED indikace:
- Přepínač 1 na desce emulátoru je kopií přepínače z Sharp MZ800, kterým se volí mód MZ700 nebo MZ800 po zavedení programu. Doporučení nechat na OFF (t.j. mód MZ700, protože programy v MZ800 módu se umí přepnout samy, původní z MZ700 se přepnout neumí).
- Přepínač 2 odpojuje řadič disket v emulaci MZ800. Pokud chcete používat emulaci FDD (třeba na CP/M) nechte na OFF, jinak na ON (=odpojený řadič).
- Červená LED označuje přístup na microSD kartu.
- Zelená LED označuje normální chod. Pokud pohasíná, je to známkou zpoždění v emulaci (proti nastavené rychlosti viz ovládání klávesami * a /).
- Popis stavů LED platí pro verzi 6 a novější ! Předcházející verze firmwaru blikaly s LED víceméně kdy se jim zachtělo, blikání dávalo smysl jen pro debugovací účely :-)
Přidáno 31.12.2013 ve verzi 4:
- Emulace unicard pro Spectrum - repository z unikarty Sharpa na portech 3Bh(command) a 5Bh(data).
- Spouštění souborového managera pro Spectrum. Název snapshotu pro automatické spuštění v módu ZX 48k lze napsat do souboru /unicard/zxloader.cfg
- Ukázkový ZX unicard manager s konfigurací pro emulátor je ke stažení zde.
Přidáno 13.1.2014 ve verzi 5:
- Při kombinaci P+F12 dojde k restartu, ale naběhne PMD 85-3. Emulace PMD obsahuje původní ROM Monitor, ROM MEGAmodul, PMD 32, interface MUSICA, grafický výstup je 1 ze 4 barev na černém pozadí.
- Obraz paměti ROM MEGAmodulu se ukládá do souboru /unicard/pmd.rmm, může mít až 32 stránek po 32kB.
- PMD 32 je zde v podobě emulace 4 mechanik PMD 32-SD v1.3, jména souborů jednotlivých obrazů disků jsou uložená jako text v souborech /unicard/pmdfdX.cfg, kde X je 0 až 3 pro disky A až D.
- Rozložení kláves vychází z tohoto obrázku, jen klávesy K6-K11 jsou přístupné kombinací levý Alt + F1 až F6, protože klávesy F7-F12 jsou v mém emulátoru už vyhrazené projiné funkce a nelze je použít, stejně tak numerická klávesnice není pro emulaci použitá.
- Optimalizace rychlosti emulace (je zhruba na původní rychlosti než před přidáním dvojitého bufferování obrazu MZ módů).
- Přidáno na prioritě příjmu PS/2 paketů (pro zamezení výpadku reakce na klávesu, hlavně jejího uvolnění, občas se to stávalo).
- Opravena úroveň přehrávání MP3 (snížena úroveň, pro hlasitější nahrávky docházelo k přebuzení a zkreslení zvuku).
- Ukládání snímků obrazovky klávesou PRNT SCRN (Print Screen) přidáno i pro režimy ZX Spectra 48k a 128k a režim PMD85-3. Snímek se uloží opět jako BMP soubor do adresáře unicard, jen s jiným prefixem.
- Příklad konfigurace s obrazy disket na vyzkoušení PMD 85 je ke stažení zde.
Přidáno 19.1.2014 ve verzi 6:
- Nově vytvořen bootloader pro nahravání verzí z SD karty. Ten je potřeba nahrát pomocí DFU místo předchozí verze firmwaru. Všechny další aktualizace už pak budou přístupné přes aplikaci uloženou na SD kartě. Připomínám, že návod je zde.
- Opravena chyba z předešlé verze v emulaci některých programů pro ZX, kdy jely velmi rychle a bez zvuku.
- Opraveno zavádění snapshotů Z80 verze 1 bez komprese, na kterých zatuhával celý emulátor.
- Opraveno časování trvání instrukcí u procesoru I8080 (správná rychlost emulace procesoru pro PMD85), bylo stejné jako pro Z80.
- Vyšší přesnost v rychlosti emulace hodinového kmitočtu jednotlivých počítačů z původní odchylky až 2% na max. 0,04%.
- Přidávání a ubírání rychlosti emulace numerickými klávesami * a / je teď přesně po 10% v rozmezí 10% až 200% (horní mez se dá nastavit, ale reálné maximum záleží na operacích emulovaného počítače a bývá o něco méně, aktuální rychlost lze kontrolovat stiskem klávesy F9).
- Signalizaci LED je daný nově význam viz popis výše, předtím bylo určeno jen pro vývojové účely, nebylo svázáno s činností konkrétní periférie.
<= zpět