Spectrum Emulátor
File-név: SPEMU.COM, SPEMU.ROM Program neve: Spectrum Emulator |
2014 Software-es Spectrum emulátor |
Már az Enterprise hőskorában felmerült - enyhítendő a programhiányt - a Spectrum emulációjának lehetősége. A hazai forgalmazás beindulása után több honfitársunk is készített software-es Spectrum emulátort. Ezek viszonylag egyszerű programok - köszönhetően például az Ep rugalmas képernyőkezelésének. A programhiány enyhítésére azonban alkalmatlanok voltak, leginkább csak BASIC programok futtatására lehetett ezeket használni. A hazai forgalmazó akkor a hardware-es emulációt látta megoldásnak. Ez ugyan lényegesen drágább megoldás, viszont a játékprogramok kb. 85%-a futtathatóvá vált vele. Ennek ellenére az emulátor nem lett üzletileg sikeres, annak magas ára, és néhány (súlyos és kevésbé súlyos) konstrukciós hibája miatt. Ezt az emulátort javította tovább ZozoSoft, amivel a játékok kb. 95%-a futtatható.
Geco az Amstrad CPC, TVC, ZX81 Emulátor után egy újabb software-es Spectrum emulátort készített. A korábbi Spectrum emulátorok gyenge kompatibilitását figyelembe véve ez meglepő lehet, mégis nyugodtan mondhatjuk, hogy Geco emulátora új szinte emeli a "software-es emuláció" fogalmát (legalábbis Ep-n, meg úgy általában a 8-bites gépeken). Most már talán kár belemenni olyan "mi lett volna ha..." típusú okfejtésbe, hogy mi lett volna, ha egy ilyen színvonalú emulátor a gép megjelenésekor létezett volna (esetleg - szinte már pofátlan módon - a géphez adták volna - bár ez jogi problémák miatt nem lett volna lehetséges). Ezt inkább az olvasó fantáziájára bízom...
A program lényegesen többet tud, mint az Ep-re készült eddigi emulátorok. A program EXOS kompatibilis, tehát működik Ep64-en is, az emulátor futtatásához legalább 112Kbyte memória szükséges. A kor igényeinek megfelelően .SNA vagy .TAP file-okat tölthetünk be. A játékosok dolgát "könnyíti meg", hogy a játék pillanatnyi állapotát bármikor memóriába menthetjük, majd igény szerint visszatölthetjük, mindezt villámgyorsan. Akik pedig így sem boldogulnak egy játékkal, bármikor bejuttathatnak a memóriába néhány "hasznos" POKE-ot könnyítő (vagy épp nehezítő?) szándékkal.
A megfelelően módosított Spectrum ROM és a Spectrum képernyő mellett több más "trükköt" is bevet a programok futtathatóvá tételében:
A fenti módosítások végrehajtásának köszönhetően a (48K-s) Spectrum programok 50-60%-a (!) futtathatóvá válik Ep-n, bárminemű hardware beruházás nélkül! A letölthető Spectrum programcsokor néhány alapértelmezett beállításokkal futtatható játékot tartalmaz.
Nem működnek azonban pl. tömörített / titkosított programok, mivel betöltés után nincs "értelmes kód" a memóriában, így a lecserélendő részeket nem találja meg az emulátor, mivel a kód csak a titkosítás feloldása / kicsomagolás után kerül napvilágra.
A keret színének állítása be lett áldozva néhány esetben, és Dave regiszter írássá lesz konvertálva, mert ugyanolyan utasításkombinációt használnak programokban keretszín állításra is, és zenerutin részeként is. Hogy a zenelejátszás lassuljon, arra nincs külön EP-s rutin, hanem egyszerűen az 0FEh port lecserélődik 0A7h portra.
Spectrum-on "nagy hagyománya van", hogy a programok megpróbálnak ROM-ba írni. Ez az igazi gépen nem okoz problémát, a RAM-ból futó emulátor viszont erre nem tartalmaz védelmet. A probléma megoldására a program minden Spectrum-reset után a Speccy ROM-ot visszamásolja egy backup RAM szegmensről. A probléma a ROM verzió esetében tárgytalan.
A program kezelése
Az emulátor indulása után az F8 megnyomásával Spectrum reset-et eszközölhetünk, az F1 megnyomásával pedig beléphetünk az emulátor menüjébe, ahonnan annak összes szolgáltatását elérhetjük:
F1 | EP Load/Save Mode (OFF / ON): Kikapcsolt állapotban (ez az alapértelmezés) az emulátor Spectrum-módban végzi a file-műveleteket, bekapcsolt állapotban EXOS file-műveletet végez. Így például egy felhasználói programban munkánk eredményét elmenthetjük EXOS-formátumban lemezre is. A (játékállás) mentés (amit maga a játék / program végez) is csak akkor működik, ha standard ROM hívást végez, ha saját mentő kódot használ, vagy nem olyan belépési pontot a ROM SAVE rutinba, ami le van kezelve, akkor nem lesz mentés, egyébként mentésnél a beírt (vagy alapértelmezett) nevet egészíti ki TAP kiterjesztéssel. Betöltéskor előbb ki kell választani a tap file-t (ld. később). |
F2 | Attribute Conversion (1/3, 1/1, OFF, DEF) Az attributum konverzió működését vezérelhetjük:
|
F3 | Set pen colour (WHT, BLK, BLU, RED, PUR, GRN, CYN, YEL) Az aktuális tintaszínt állíthatjuk be manuálisan. Csak akkor van hatása, ha az attributum konverziót DEF-módba kapcsoltuk. A színek kijelölésére használt színkódok valószínűleg egyértelműek, ha mégsem a színkódok háttere is utal a színre. |
F4 | Set background colour (WHT, BLK, BLU, RED, PUR, GRN, CYN, YEL) Az aktuális papírszínt állíthatjuk be manuálisan. Csak akkor van hatása, ha az attributum konverziót DEF-módba kapcsoltuk. |
F5 | Silent mode (OFF / ON) A "néma üzemmódot" kapcsolhatjuk be, azaz OFF esetén van hang (ez az alapértelmezett mód), ON esetén nincs. A 128K-s Spectrumot emuláló változatban bővebb beállítási lehetőségek vannak (lásd oldal alján). |
F6 | Load SNA SNA file betöltése. Ha van a rendszerben FILE-rendszerbővítés, az emulátor azt használja, egyéb esetben saját file-választó ablakját. Ha egy program nem fut az emulátoron TAP formátumban (pl. trükkös betöltő miatt), memória snapshot formátumban még működhet! |
F7 | LOAD TAP TAP file kiválasztása. Ha van a rendszerben FILE-rendszerbővítés, az emulátor azt használja, egyéb esetben saját file-választó ablakját. Ezután a betöltést "hagyományosan", a LOAD"" paranccsal végezhetjük el (J billentyű, majd kétszer jobb SHIFT + P). A TAP kiválasztásakor töltődik be a header (EXOS 1), és a LOAD "" -nál EXOS 6-tal olvassa a TAP-ot. |
F8 | Speed (NORM, FAST, SLOW) A program futásának sebességét szabályozhatjuk a BFh (191-es) port állításával:
4 MHz-s gépen a NORM mód a javasolt, de ha egy program lassan fut, a FAST mód sokat segíthet. 6MHz-s gépen általában a SLOW módban közelít a sebesség jobban az eredetihez, de azzal is gyorsabb lesz a legtöbb program (amik nem megszakításhoz időzítettek). A zene mindenképp felgyorsul (a Spectrumban nincs külön hangchip, a processzor órajele mindenképpen befolyásolja a hangfrekvenciát). |
Joy balra-jobbra |
Attr conv/keyrut (OFF, 1-255) Mivel a színkonverzió megszakításból működik, azon programoknál, melyek letiltott megszakítás mellett működnek, elvileg színkonverzió sincs. Ezzel a menüponttal azonban megoldható, hogyha nincs megszakítás, akkor is lehessen attributum konverzió. A billentyűzet olvasó rutinba lett elhelyezve egy attributum konvertáló rész is, ami OFF beállítás mellett természetesen nem fut, egyéb érték esetén minden n. billentyűolvasó rutinban lesz attributum konverzió is. Pl. ha 'ATTR conv/keyrut' : 001, akkor minden billentyűolvasó rutinban lefut az attributumkonverzió az F2-vel beállított módnak megfelelően, ha az ATTR conv/keyrut' : 255, akkor minden 255. billentyűolvasó rutinban fut csak le az attributum konverzió az F2-vel beállított módnak megfelelően. Ez sem tökéletes megoldás, mert ahol se megszakítás, se billentyűolvasás, ott attributum konverzió se lesz. |
P | Enter Poke Tetszőleges memóriacímen elhelyezhetjük a kívánt értéket (pl. örökélet reményében). A címet és az értéket is hexadecimális alakban kell megadni. A bevitel végét az ENTER megnyomásával jelezhetjük, az ERASE billentyűvel javíthatunk. Ha meggondoltuk magunkat, a STOP megnyomásával kiléphetünk a funkcióból. |
S | Save Snapshot to RAM Memória-snapshot ment a memóriába. (Pl. a játék állapotát elmenthetjük egy "húzósabb" manőver előtt). A funkció használatához legalább 160 Kbyte memória szülséges! |
W | Memória-snapshot mentése háttértárolóra. Az emulátor saját formátumot használ, a file név SNAPSHOT.SNP. |
R | A korábban elmentett memória-snapshot (SNAPSHOT.SNP) visszatöltése. |
L | Load Snapshot to RAM Az előbbi funkcióval elmentet snapshot-ot tölthetjük vissza. |
Joy le-fel | A menü alatt olvasható, a Spectrum és Ep billentyűzet eltéréseiről és a Spectrum billentyűk jelentéséről szóló információs lap le-fel görgetése. |
ESC | Exit Kilépés a menüből, visszatérés a futó programhoz. |
Akár .SNA, akár .TAP file betöltését választottuk a file-választó képernyőn csak a megfelelő kiterjesztésű file-ok jelennek meg. Egy mappában maximum 80 file-bejegyzést jelenít meg a program, de kezeli az alkönyvtárakat is. A könyvtáraknak szintén .SNA vagy .TAP kiterjesztést kell adni, csak ezek a mappák jelennek meg. A könyvtárak úgy vannak megkülönböztetve a file-októl, hogy az első karakterük háttere kék. Könyvtárba az ENTER megnyomásával lehet belépni, az ESC megnyomásával kilépni.
A ROM verzió előnye, hogy a módosított Spectrum ROM EP-n is ROM-ban marad, így a ROM felülírós programok nem okoznak semmi kárt. Hátránya, hogy azokon a bővített EP64-eken nem fog elindulni, amiken nincs FBh szegmens.
Bármelyik ROM-slotba installálható EXOS 2.3 fölött, EXOS 2.1 alatt viszont csak az x0 slotokba (10h,20h,30,...), a második 16K-nak az első 16K mögötti slotban kell lennie.
Két funkcióval is bővült a ROM verzió. Spectrum képernyőn:
F3 - kilépés Basic-be
F4 - kilépés WP-be
Az attrubutum konverzió természetesen időt vesz el: 44 raszter sort visz el normál módban az 1/3-ados beállítás 4 MHz-en (14%), és 127 rasztert visz el az 1/1-es beállítás (40%). 3,44 MHz-es Z80 sebességnek felel meg elméletileg az 1/3-as mód, igaz vannak még lassító tényezők, pl. a billentyűzet emuláció. Az emuláció tényleges sebessége programfüggő.
Billentyűzet, irányítás
A játékokat (többnyire) botkormánnyal praktikus irányítani, így az emulátorban az EXT1 / EXT2 botkormány az INTERFACE II botkormányillesztő 1. / 2. portjainak felelnek meg. Ezenkívül a beépített botkormány a kurzormozgató billentyűknek felel meg, vagyis megfelel a CURSOR INTERFCE-nek. Így gyakorlatilag minden játékot használhatunk botkormánnyal is (annak ellenére, hogy nincs KEMPSTON emuláció). Az INTERFACE II és CURSOR illesztők ugyanis a billentyűzettel párhuzamosan működnek, így, ha a program nem is ismeri ezeket, de lehetőség van az irányító billentyűk definiálására, ezekre definiálhatjuk bármelyik botkormányt. További kényelmi szolgáltatás, hogy az Ep billentyűzeten néhány funkció külön billentyűt kapott, amelyhez Spectrum-on több billentyű lenyomására van szükség. |
|
File-név: SPEMU128.COM, SPEMU128.ROM Program neve: Spectrum Emulator |
2015 Software-es Spectrum emulátor |
A Spectrtum 128-at emuláló változat eltérései a 48K-s változattól:
Az F5 billentyűvel elérhető hangbeállítási opció a következőképen bővült:
F5 | Sound mode (STR / MON / OFF) Hang üzemmód:
|
Elméletileg minden 48K-s programnak is futnia kell, ami a 48k-s SPEmuval fut, annyiban nem váltja ki a másikat, hogy annak a hangja direkt beeperre van szabva (hangerőben), és az fut bővítés nélküli EP128-on is.