A forráskód, illetve a fordításhoz szükséges egyéb fájlok NEM nyilvánosak.
Az emulátor használatából erededő bármilyen szoftver/hardver károsodásért a szerző semmilyen felelősséget nem vállal. Az emulátorhoz készítendő kiegészítő hardver (TV kábel) elkészítésénél a munka- és érintésvédelmi szabályokat be kell tartani. A szabályok be nem tartásából eredő bármilyen sérülésért, elektromos áramütésért a szerző semmilyen felelősséget nem vállal.
László József /joco@elender.hu/
2003.10.07
primo.exe [border=RRGGBB] [paper=RRGGBB] [ink=RRGGBB] [delay=NNN] [tapefile=TAPEFILE] [prifile=PRIFILE] [textin=TEXTFILE] [type=A32|A48|A64|B64] [display=STANDARD|NICE|TV] [calib=NO]vagy
primo.exe [/?|-?|/h|-h|-help|help|--help]
** Rendszervezérlő paraméterek **
delay=NNN | A Z80 késleltési állandót NNN-re állítja, ahol NNN egy egész szám 1 és 65535 között. Az 1 jelenti a leggyorsabb processzor emulációt. A delay paramétert a calib=NO belállítás mellett lehet használni, egyébként az autokalibráció miatt a megadott érték hatástalan lesz. |
calib=YES|NO | "NO" érték mellet kikapcsolja az autokalibrációt, így a delay érték érvényre juthat. Az alabeállítás "YES", ha a calib paraméter nincs megadva, az emulátor induláskor autokalibrációt végez. |
type=A32|A48|A64|B64 | Géptípus. Ha nem adunk meg típust, az alapbeállítás A64 lesz. |
display=NICE|STANDARD|TV | Video kimenet. A "NICE" az alapbeállítás, ez a 320x240-es kompatíbilis, de nem szabványos videomódot aktiválja. "STANDARD" esetben a videomód 320x200 lesz, ebben az esetben a pixelek nem négyzet alakúak, viszont minden VGA kompatíbilis kártyának és eszköznek (monitor, LCD, flat-display) ismerni kell ezt a módot. A "TV" érték PAL kompatíbilis üzemmódba kapcsolja a VGA kártyát, ezt az üzemmódot tehát VGA monitorral nem lehet használni. További informáiók a TV módról a "Hagyományos TV készülékek illesztése" fejezetben találhatók. |
** Fájl paraméterek **
prifile=PRIFILE | Az Induláskor betöltendő PRI diszkfájl neve. Ha a paramétert nem adjuk meg, nem lesz PRI fájl betöltés. |
tapefile=PTPFILE | Az alapértelmezett magnófájl neve. Az emulátor működéséhez mindenképpen szükséges egy PTP magnófájl. Ha a paramétert nem adjuk meg, az alapértelmezett magnófájl a "tape.ptp" lesz. Ha ez a fájl nem létezik, az emulátor létrehozza. |
textin=TEXTFILE | Szövegfájl behépelése. Ha a textin paramétert megadjuk, akkor a "TEXTFILE" szövegfájlt az emulátor induláskor begépeli a BASIC interpreternek. A funkció csak A típusú gépeknél működik. |
** Színvezérlő paraméterek **
border=RRGGBB ink=RRGGBB paper=RRGGBB |
Az emulátor alapszíneinek beállítása. A paramétereket a HTML nyelvben szokásos
formában, hexadecimális (3*8 bites) RGB alakban kell megadni.
(Például a tiszta telített piros szín kódja FF0000.) border - keretszín (overscan) ink - írásszín (foreground) paper - háttérszín (background) |
** Egyéb **
/?|-?|/h|-h|-help|help|--help | Bármelyik paraméter ugyanazt a rövid HELP képernyőt nyomtatja ki, az emulátor ebben az esetben nem indul el. |
F11 Az Emulátor menü aktiválása ESC Azonnali kilépés az emulátorból F12 Képmentés, a fájlnevet az emulátor generálja automatikusan. (A pillanatnyi képtartalmat a menüből is ki lehet menteni, ebben az esetben a fájlnév megadható.)Speciális primo funkciókat gyorsító billentyűk:
F1/F2 Primo Ctlr-D/Ctrl-T (inverz/normál írás) F3/F4 Primo Ctlr-E/Ctrl-U (aláhúzás be/ki) F5/F6 Primo Ctlr-C/Ctrl-S (inverz képernyő be/ki) F7/F8 Primo Ctlr-B/Ctrl-E (dupla széles karakterek be/ki) F9/F10 Primo Ctlr-O/Ctrl-W (függőleges/vízszintes írás) Page Up Primo Ctrl-P (felső index) Page Down Primo Ctrl-Q (alsó index) Home Primo CLS End Primo BREAK Insert Primo ? (kérdőjel a PRINT utasítás gyorsbeírásához) Delete Primo : (kettőspont, BASIC utasítások elválasztrása) Num Lock Primo ; (pontosvessző, PRINT a utasításhoz) Scroll Lock Primo RESET nyomógomb Bal-Alt Primo < (kisebb jel) Jobb-Alt Primo > (nagyobb jel) TAB Primo í (hosszú í) Caps Lock Primo UPPER Control Primo CTR Shift Primo SHIFT Kurzor Primo nyíl billentyűkA további billentyűk a szabványos magyar kiosztásnak megfelelően működnek. Sajnos az A és B sorozat I/O portkiosztása eltérő, így bizonyos billenyűk más kombinációval érhetők el, ha a B64 ROM-ot használjuk. Éppen ezért a lefgontosabb írásjelek (a fentebb említett ? : ; < > stb. karakterek) a speciális billentyűk segítségével gépelhetők be mindkét típusnál.
A menü felépítése a következő:
File Load PRI PRI diszkfájl betöltése Load PRI, no autostart PRI diszkfájl betöltése, de a BASIC programok nem indulnak el Change PTP tapefile A PTP magnófájl cseréje Save Screen Az aktuális PRIMO képtartalom mentése egy BMP fájlba Load Snapshot Emulátor pillanatkép (snapshot) fájl mentése Save Snapshot Emulátor snapshot fájl betöltése Load ROM image Felhasználói ROM betöltése (bináris Z80 gépi kódú program) Quit Kilépés az emulátorbólA fájl betöltés/mentés ablakokban a TAB és a kurzor billentyűkkel mozoghatunk. A fájl listákban a PgUp és PgDn is működik. A különböző fájlokhoz az emulátor szigorúan definiálja a DOS-os kiterjesztéseket, és egy-egy listában csak ezeket a fájlokat jeleníti meg!
Fájltípus | Közelező kiterjesztés |
PRI diszkfájl | *.pri |
PTP magnófájl | *.ptp |
Képtartalom | *.bmp |
Snapshot fájl | *.pss |
ROM image fájl | *.rom |
Primo System Reset Primo Az emulált Z80 processzort újraindítja 2.5 Mhz Z80 Beállítja a 2.5Mhz-hez számított delay állandót 3.5 Mhz Z80 Beállítja a 3.5Mhz-hez számított delay állandót (A 2.5 és 3.5-es sebességeket csak akkor tudjuk beállítani, ha az emulátor induláskor autokalibrációt végtett!) Fastest Z80 A delay állandót 1-re álltítja, így az emuláció a lehető leggyorsabb lesz. Set delay Egyedi delay beállítása. Display mode Videomód váltás NICE VGA mode (320x240) NICE, azaz 320x240-es felbontás STANDARD VGA mode (320x200) STANDARD 320x200-as felbontás PAL TV (RGB) mode 320x200-as felbontás, de PAL kompatíbilis szinkronjelekkel és pixel órajellel. Az üzmemmód használatához egy speciális kábel szükséges, erről a "Hagyományos TV készülékek illesztése" fejezetben írunk. Az üzemmód VGA monitorral nem működik! Change ROM Switch to A32 Az A32 géptípus beállítása Switch to A48 Az A48 géptípus beállítása Switch to A64 Az A64 géptípus beállítása Switch to B64 Az B64 géptípus beállítása User defined ROM Felhasználói ROM beállításaA ROM megváltoztatása automatikusan egy RESET-et is eredményez. A felhasználói ROM-ra csak akkor lehet átkapcsolni, ha azt előzőleg már betöltöttük a "File/Load ROM image" menüpont segítségével. A felhasználói ROM egy legfeljebb 16384 bájt hosszú bináris fájl lehet, valós Z80 kódot kell tartalmaznia, amely a 0000h címről indul. A felhasználói ROM-hoz az emulátor az A64 típust aktiválja, azaz a képernyőterület az E800h címen érhető el, illetve a billentyűzet az A típus szerint működik.
Tapasztalatunk szerint bizonyos programok hibásan működhetnek a B64 típussal, például a "Vili a bányász" játék rossz karaktereket jelenít meg a képen. Ennek oka a két típus közötti különbség. (Az emulátor nem hibás.)
Colors Set foreground (Ink) Az írás színének beállítása Set background (Paper) A képernyő háttérszínének beállítása Set overscan (Border) A keret színének beállítása Original Eredeti PRIMO színek (fekete alapon világosszürke betűk) Startup colors A parancssorban megadott színek visszaállítása Green/Black "Terminal" színek, fekete alapon zöld betűk.
A közvetlen színbeállító funkciók egy RGB beállító panlelt nyitnak ki, ahol a piros, zöld és kék alapszÍnek egyesével beállíthatók.
Game Control Enable gamectl.map autoscan A gamectl.map fájl értelmezésének bekapcsolása Disable gamectl.map autoscan A gamectl.map fájl értelmezésének kikapcsolása Manual scan A gamectl.map fájl azonnali végigpésztázása Reset keyboard Az eredeti billentyűzet visszaállítása
Az emulátornak a mellékelt gamectl.map fájlban meg lehet adni, hogy egy PRIMO programhoz milyen speciális kontroller billentyűket használjon. A funkció játékokhoz készült, segítségével a játék irányítása módosítható. Bővebb információk a "Játékvezérlő billentyűzet definíciók" fejezetben találhatók.
Help Contents Ez a menüpont egyelőre üres, később egy megfelelő angol nyelvű interaktív HELP lesz elérhető vele. Sysinfo A rendszerinformációk megjelenítése About Szerző, verziószám.
A legtöbb PRIMO játék esetében az eredeti billentyűk használata kényelmetlen, ráadásul a különböző játékok eltérő vezérlőket használnak. Az emulátor számára éppen ezért minden PRIMO programhoz megadható egy ú.n. ControlString, amely definiálja a négy irányú elmozdulást kiváltó billentyűket (ezek négy kurzor billentyű lesz), illetve lehetőséget ad két tűzgomb használatára is (bal oldali Ctrl és bal oldali Alt). A játékok nevét és a hozzájuk tartozó ControlString-et az emulátor a munkakönyvtárban elhelyezett gamectl.map fájlban keresi, amely tulajdonképpen egy szöveges konfigurációs fájl.
A ControlString egy 12 digitből álló hexadecimális szám (azaz hat kétjegyű hexadecimális szám), amely a megfelelő PRIMO I/O portot adja meg a vezérlő billentyűk számára. A ControlString előállításához szükségünk van az A géptípus I/O kiosztására, ezt a PRIMO Szoftver füzetek F-15 függelékében találjuk meg, illetve az emulátorhoz mellékelt keymap.txt is tatalmazza.
Nézzünk egy példát! A HAMM.PRI nevű játék (Pac-Man clone) az irányításhoz az S X < és ú PRIMO billentyűket használja. Ezen billentyűk I/O címei a táblázat alapján 02, 0A, 27 és 33 (hexa). Tűzgomb ebben az esetben nincs. A megfelelő ControlString formája:
azaz
020A2733FFFF
A nem használt billentyűk helyére FF-et írtunk. A gamectl.map fájlban egy sor egy bejegyzést tartalmazhat a következő formában:
"PRIMO program name"=ControlString
A "PRIMO program name" mező lehet egy PRI diszkfájl neve, vagy egy PTP fájlban található valódi PRIMO fájlnév. Az idézőjelek használata a névnél kötelező, hiszen az tartalmazhat szóközt is. Mindezek alapján a HAMM.PRI program bejegyzése:
"HAMM.PRI"=020A2733FFFF
A ControlString beállítása után a HAMM program a kurzorral mozgatható.
Még egy példa: az UFO.2 játék a < ú és Y billentyűket használja (balra-jobbra-tűz). Fel-le irány ez esetben nincs. A játék ControlString-je:
"UFO.2 "=FFFF273300FF
A 00 az Y PRIMO billentyű kódja. Figyeljük meg, hogy most a névben a kiegészítő szóközöket is használni kellett, mert ez egy PRI fájlban található fájlnév.
A ControlString beállítása után az UFO.2 program a kurzorral mozgatható jobbra és balra, tüzelni a bal oldali Ctrl-al lehet.
A gamectl.mapfájlt az emulátor minden új program betöltése után automatikusan végigolvassa, ha az "Enable gamectl.map autoscan" menüponttal ezt bekapcsoljuk, illetve egy-egy program betöltése után a "Manual scan"-al kézzel is végigpásztázhatjuk. A program nevének természetesen teljesen egyeznie kell, másképp az emulátor nem tölti be a ContolString-et.
A játékvezérlés kikapcsolható, tehát a billentyűk eredei funkciója visszaállítható a "Reset keyboard" menüponttal.
A tökéletes "PRIMO feeling" élvezetéhez TV készülék vagy PAL kompatíbilis frekvenciákkal működő RGB monitor szükséges. Az emulátor a VGA kátyát át tudja kapcsolni PAL kompatíbilis frekcencia módba, ezáltal egy egyszerű kiegészítő hardver segítségével a kép hagyományos TV készüléken is megjeleníthető. Ehhez az szükséges, hogy a TV készülék rendelkezzen RGB közvetlen bemenetekkel Euro-AV SCART csatlakozón keresztül. A kábel elkészítéséhez minimális elektrotechnikai ismeretek szükségesek (forrasztás, mérési ismeretek).
A megfelelő kábel elkészítése után a TV kompatíbilis videomód a Primo System/PAL TV (RGB) mode menüponttal aktiválható. Figyelem! Az emulátor nem ellenőrzi, hogy a VGA kimenetre valódi VGA monitor vagy TV készülék csatlakozik-e, így az átkapcsolás bármikor elvégezhető, de ez a VGA monitor képét összezavarhatja, esetleg a monitor meghibásodásához is vezethet.
1. RGB monitorok esetében a kábel igen egyszerű, csupán a VGA kártya megfelelő szín- és szinkronjeleit kell az RGB monitor ugyanezen bemeneteire csatlakoztatni az alábbi ábra szerint.
2. A TV készülékek sajnos jelenleg még nem rendelkeznek elválasztott szinron jelek fogadására alkalmas bemenetekkel, ezért a VGA kártya vertikális (VSYNC) és horizontális (HSYNC) szinkronjeleit egy külső áramkör segítségével össze kell kevernünk kompozit (CSYNC) szinkron jellé. A keveréshez egy 74HC86 típusszámú TTL kompatíbilis CMOS áramkört használunk fel (ez valójában négy független kizáró-VAGY /XOR/ kaput tartalmaz, ezekből egyre van szükség). Az elkészítendő kapcsolást az alábbi ábra mutatja. Sajnos a tápfeszültség a VGA csatlakozón nem jelenik meg, ezért azt máshonnan kell az áramkörhöz vezetni (például a PC botkormány csatlakozójáról.)
Code 01 0d 0b 09 1f 1d 1b 17 21 2d 25 23 20 39 3f Key [UP] [1] [2] [3] [4] [5] [6] [7] [8] [9] [0] [+] [ü] [LF] BRK Code 07 0f 0c 06 04 14 16 22 24 2e 34 32 3e 3d 37 Key CTR [DN] [q] [w] [e] [r] [t] [z] [u] [i] [o] [p] [ö] [RG] RETURN Code 05 0e 02 08 12 1c 18 26 2a 28 3a 3c 31 3b 35 Key UPPER [a] [s] [d] [f] [g] [h] [j] [k] [l] [é] [á] [*] [ó] CLS Code 03 00 0a 10 1e 1a 20 2c 2f 2b 29 27 33 03 Key SHIFT [y] [x] [c] [v] [b] [n] [m] [,] [.] [-] [>] [ú] SHIFT Code 19 Key [ SPACE ] |