V6Z80P+ a cycle-perfect ZX Spectrum emulator

Dnes mám v plánu zabít dvě mouchy jednou ranou. Za prvé konečně sem napíšu něco o zajímavém počinu Phila Rustona – jednodeskovém počítači V6Z80P+ založeném na reálném CPU Z80 doplněném o FPGA Xilinx Spartan II, a za druhé bych rád představil výtvor Alessandra Dorigattiho – emulátor Sinclair ZX Spectrum s časováním volitelným podle Spectrum 48k, Spectrum 128k nebo Pentagon 128k. Na konci článku pak najdete, jak Alessandrův emulátor rozchodit na starší verzi desky V6Z80P+ rev1.0.

V6Z80P_modded11_Martin   V6Z80P_scr_BOING_demo

V6Z80P+

V6Z80P+ je osmibitový jednodeskový počítač založený na 20 MHz CPU Z80 a FPGA Xilinx Spartan 2. K dispozici je 512 kB videoRAM, 128 kB paměti pro sprity a 512 kB RAM pro systém. Na desce jsou PS/2 konektory pro klávesnici, myš a sérový port, video výstup přepínatelný mezi VGA a video out (SCART). zvukový výstup a 2 klasické „Atari“ joystick porty. Programy lze nahrávat nebo ukládat na SD kartu. Z této karty se také načítá operační systém, zatímco konfigurace FPGA se načítá z paměti EPROM. Snadno tak můžete během startu pomocí F-kláves měnit konfiguraci.

V6Z80P_scr_title   V6Z80P_scr_BOOT_config

Phil nazval svoji architekturu OSCA (Old Skool Computer Architecture). K dispozici je 256 barev při rozlišení 368×256 pixelů a takové vymoženosti jako jsou hardwarové sprity, skrolování a další. Už když si pustíte první dema nebo hry, získáte pocit, že jste spíše na Amize, než na architektuře Z80.

V6Z80P+ BOING demo

Na OSCA architektuře postavil Phil vlastní operační systém, který nazval FLOS (Freezer Like Operating System), a který umožňuje spoustu činností. Můžete tak nejen procházet adresářovou strukturu a prohlížet paměť nebo spouštět aplikace, ale k dispozici je i editor, správce souborů, assembler a další.

O V6Z80P+ bych se mohl poměrně dlouho rozepisovat, ale na síti najdete spoustu informací, tak nemá cenu se opakovat. Nejlepší představu získáte zkouknutím Philova YouTube kanálu.

Cycle-perfect ZX Spectrum emulator

Asi nejlákavější aplikací pro V6Z80P+ je ZX Spectrum emulátor, který vytvořil Alessandro Dorigatti. Alessandro si pohrál s časováním a tak je emulace téměř perfektní. Je podporováno časování ZX Spectrum 48k, Spectrum 128k a Pentagon 128k. Programy lze spouštět z externího kazetového magnetofonu, emulovaného kazeťáku z TAP souborů nebo využít modernější RESIDOS či ESXDOS.

V6Z80P_scr_emu_ResiDOS   V6Z80P_scr_emu_ESXDOS

Pro správné časování bylo nutno upravit verzi 1.0 desky a přidat 14 MHz oscilátor. Alessandrův emulátor tak běží pouze na desce 1.1 a vyšších. Že je časování opravdu perfektní se můžete přesvědčit na některých náročnějších demech.

V6Z80P_scr_MEGASHOCK   V6Z80P_scr_Rage1

V6Z80P_scr_Rage2   V6Z80P_scr_DIZZRUPTOR

Ovšem nejlepší představu Vám opět dají videa zveřejněná na Philově YouTube kanálu.

Cycle-Perfect Pentagon 128 Emulation on the V6Z80P

Co se mi líbí, na rozdíl např. od Speccy 2010, je, že V6Z80P+ používá reálný Zilog Z80, tj. CPU není emulované a konfigurace se snadno mění překonfigurováním FPGA. Alessandro na svém emulátoru dál intenzivně pracuje a tak se v budoucnu určitě ještě dočkáme dalších vylepšení.

Modifikace V6Z80P+ 1.0 na verzi 1.1

Jak jsem psal v úvodu, V6Z80P+ mám už déle než dva roky a tak se jednalo o verzi 1.0. Na ní Phil připravil emulátor ZX Spectra, ale není tak přesná jako Alessandrova a navíc nenabízí tak pohodlné možnosti pro načítání programů.

Poprosil jsem tedy Phila, zda není možné upravit verzi 1.0 na verzi 1.1. Phil byl tak laskav a připravil jednoduchý návod, jak na to. Dokonce ve dvou variantách.

v6 v1_0-to-v6 v1_1-mod_method1   v6 v1_0-to-v6 v1_1-mod_method2

Není to vůbec složité. Stačí vyřadit z činnosti jedno hradlo AND a použít ho jen jako budič pro výstup hodin z FPGA, hodiny 16 MHz zavést přímo a jen do FPGA a je potřeba doplnit oscilátor 14 MHz. Protože je tato frekvence trochu atypická, nechal jsem si v Spezial Electronics naprogramovat oscilátor na míru SG8002DCPCB 14.000MHz.

Z Philových variant jsem zvolil tu první, trochu složitější, byť mi tak nepřipadla, protože se více blíží skutečnému stavu v1.1. Místo spojky pinu 13 74HCT08 na +5V jsem použil 1k5 rezistor v SMT provedení 0603, který hezky padl mezi nožičky.

Dobrá volba nebylo pouzdro DIP-8, protože je moc velké, ale nakonec jsem uštípnul nožičky a oscilátor umístil „vzhůru nohama“ nad RAM.

V6Z80P_10-to-11_mod_1   V6Z80P_10-to-11_mod_2

Před úpravou bylo samozřejmě potřeba nahrát do EEPROM konfiguraci pro v1.1, aby bylo vůbec jak nabootovat. Naštěstí konfigurace v1.1 šlape i na v1.0, tak to nebyl žádný problém. Vše šlo hladce a já můžu teď prohánět cycle-perfect ZX Spectrum emulátor.

Příspěvek byl publikován v rubrice Moderní projekty, Sinclair, ZX Spectrum. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

Jeden komentář: V6Z80P+ a cycle-perfect ZX Spectrum emulator

  1. Pingback: Pendulum pro V6Z80P+ a vylepšený ZX Spectrum Emulator | Martinův 8-bitový blog

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *