PRIMO EMULATOR V3.0

INDEX

Terjesztés/felelősség

A PRIMO emulátor egy szabadon használható (FREEWARE) szoftver. Az emulátor bináris formában DOS/Windows futtatható (EXE) fájlként terjeszthető. A kód és a kiegészítő fájlok bármilyen médián (CD, újságmemméklet stb) történő terjesztéséhez a szerző előzetes írásbeli hozzájárulása szükséges.

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


Általános információk

Az emulátor újdonságai:

Parancssori paraméterek

Az emulátor indítása parancssorból:

 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.


Billentyűzet

Rendszerbillentyűk:
 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űk
A 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ürendszer

Az emulátornak indításkor megadhatjuk a legtöbb bemenő paramétert a parancssorban, ugzanakkor ezek mindegyikét módosítani lehet a menü segítségével. A menü-be az F11 billentyű megnyomásával léphetünk be, ez után pedig a kurzor billentyűkkel, illetve az ENTER-el választhatjuk ki a megfelelő menüpontot. Az ESC billentyű a menüben mindig visszaléptet (egy-egy almenüből a felette található menübe), a főmenüből természetesen a PRIMO emulációba léphetünk vissza.

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ól
A 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ípusKö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ása
A 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.


Játékvezérlő billentyűzet definíciók

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:

UP/DN/LF/RG/F1/F2

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.


Hagyományos TV készülékek illesztése

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.)


PRIMO "A" típus billentyűzet I/O címek

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            ]