MiST Primo |
Perifériakezelés szempontjából a billentyűzet, a hangkeltés és a magnó érdemel említést. Az alaprendszer pár I/O porton keresztül éri el ezeket az eszközöket. Végezetül fontos még foglalkozni az NMI megszakítással, amit a megjelenítő hardver generált szinkronban a vertikális visszafutással. PAL kompatíbilis kimenet lévén a rendszer 312 rasztersort generált (interlace-ben ez 624 sor), a képfrissítés frekvenciája - és az NMI rátája is - ezért 50 Hz.
A MiST-re portolt verzió a Primo A64 megfelelője. Az SDRAM tárolja a Primo ROM-ját és a RAM-ot is ez adja, kivéve a videomemóriát, azt az FPGA belső RAM-ra szolgáltatja 16K nagyságban. A belső ram dual-port ram, ezért a képfrissítés nem állítja meg a CPU működését. Az eredeti Primo megjelenítő monochrom volt, én 16 színt használok RGBI formában, amiből a megfelelő analóg RGB jelek előállnak a MiST kimenetén egy fix paletta segítségével. A videoáramkört egy korábbi projektből vettem át, és egyéb videomódok is vannak benne, nem csak az eredeti Primo mód, de hát nagy valószínűséggel ezeket úgysem fogja soha senki sem használni. Mindenesetre a normál, standard Primo 256x192-es videomód gond nélkül megy. A keret, a háttér és az előtér színe beállítható az F1, F2 és F3 gombok segítségével (és megfelelő OUT utasításokkal is).
A mag kétféle videokimenetet támogat:
- RGB és composite Sync, amely a TV készülék Euro Scart bemenetére köthető ezzel a kábellel,
- illetve szabványos VGA üzemmód.
A programok (játékok) betöltésére a MiST standard módszert hasznélom, azaz az OSD menüben lehet fájlokat kiválasztani és betölteni. Az OSD menü az F12 gombbal nyitható meg. Az egyszerűség kedvéért - hogy a betöltés gyors legyen - egy saját formátumot hoztam létre, amely a Primo SnapShot formátumon alapul, neve Primo Memory File, kiterjesztése .PMF. A PMF fájl tartalmazza a Primo 48K RAM memóriáját, valamint a Z80 stack-be mentve az összes processzor regiszert. Így ez a fajta fájl 49152 + 2 bájt hosszúságú lesz minden esetben, mert a memórián kívül az SP regisztert is el kell tárolni. /A PSS->PMF konvertálásra készítettem egy kisebb .NET programot, ami betölti és konvertálja a PSS snapshot fájlokat PMF-re./
Az OSD menüben lehetőség van a programok (PMF fájlok) betöltésére, RESET jel kiadására, illetve VGA módban a Scanlines effekt ki- és bekapcsolására. Ez az opció az RGB Scart kimenetnél természetesen hatástalan.
Extra regiszterek: (ezeket az eredeti Primo nem tartalmazta, de az FPGA verzióban megvalósítottam őket)
$D0 bit 3..0 : Color Register C2 bit 7..4 : Border Color Register $D1 bit 3..0 : Color Register C0 (paper) bit 7..4 : Color Register C1 (ink) $D2 bit 1..0 : Video Mode 00 - 256x192,mono 01 - 256x192 with 32x24 attributes 10 - 8 colors mode 11 - 320x200x4 mode $F0 YM2149 sound chip address register $F1 YM2149 sound chip data register $F7 bit 6..0 : Speaker volume bit 7: yellow LED $F8 bit 7..0 : PAGE A (256x16K pages for memory bank at $4000) $F9 bit 7..0 : PAGE B (256x16K pages for memory bank at $8000) $FC bit 1..0 : CPU speed 00/11-3.5MHz 01-7MHz 10-14MHz bit 7 : LOCK (locks all extra ports till next reset)
Képek:
A bekapcsolt MiST az asztalomon. Jobb oldalon az USB Blaster programozó áramkör
Egyszerű basic teszt program
A MiST OSD menüje a primo indulása után
Az Astro Blaster játék betöltése és futtatása
A Galaxy játék betöltése és futtatása
Downloads:
PRIMO.RBF
PRIMO.ROM
Köszönet:
- Grósz Attilának a Primo Emulátorok korábbi fejlesztése során nyújtott segítségéért
- Orvos Gábornak, aki folyamatosan "noszogatott", hogy a MiST-re is fejlesszek
Linkek és referenciák:
[Home | FPGA fejlesztés]