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
pss_to_pmf.exe Egy tool, ami a pss snapshot fájlokat .bin-re konverálja (PMF formátum, a snapshot MIST-re konvertált változata, amit a mag egyszerűen be tud tölteni)
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]