Spectrum emulátorok
Az ENTERPRISE megjelenésekor mindenki arra panaszkodott, hogy kevés a gépen futtatható játék- és felhasználói programok száma. (Ez igaz is volt.) A gép forgalmazásának megindulásakor nagy dirrel-durral beharangozták a hamarosan kapható hardware Spectrum emulátort, mellyel egycsapásra megoldódik a software hiány... Az idő telt-múlt, de az emulátor csak nem akart megérkezni. Bizonyára mindenki számára ismert, hogy az Enterprise-ban és a Spectrum-ban is a Zilog cég Z80 processzora dolgozik. Ennek tudatában könnyen fellelkesedhet az ember, hogy a Spectrum emulációt nem is lehet oly nehéz megoldani Enterprise-on. Természetesen a hardware közti különbségeket valahogyan át kell hidalni. Egy Spectrum program Enterprise-on futtathatóvá tételének alapvetően két útja van:
Bonyolult, de eredményes módszer amikor egy gépi kódban járatos felhasználó (aki behatóan ismeri mindkét gép "lelki világát") fogja a Spectrum programot, és elmélyült programozással futtathatóvá teszi azt az Enterprise gépen. Így (elvileg) bármilyen program átírható.
Az egyszerűbb módszer az emulátor. Az emulátor egy olyan eszköz, amely képes egy másik számítógép működését "utánozni" az adott hardware-en. Ennek a módszernek nagy előnye, hogy használata különösebb szakértelmen nem igényel, de vannak hátrányai is...
A beígért hardware emulátor azonban elég sokat késett, így megjelentek a Spectrum átiratok, másrészt a fejlesztés a software-emulátorok felé fordult. A módszernek egyetlen (de nagy) előnye, hogy nem igényel semmilyen elektronikai alkatrészt (a hardware emulátor csúszásának egyik fő oka volt, hogy számos alkatrészt nem lehetett beszerezni Magyarországon, sőt az egész KGST-ben!). Sajnos hátránya sokkal több van...
A Spectrum emuláció első lépésének az a útmutató tekinthető amit a Enterprise cég adott ki a szoftverfejlesztőknek, azzal a céllal, hogy Spectrumra fejlesztő programozók Enterprise-ra is adják ki a programjaikat. Ebben a dokumentumban leírták, hogyan kell a Spectrum-os memóriakonfigurációt és képernyő felépítést előállítani, valamint útmutatást adtak, hogyan kell a billentyűzet és hangkezelést megoldani, valamint az attribútumbájt kezelést módosítani. Ennek eredményeként született meg sok tucat Spectrum játék gyári EP-s kiadása, majd később sok száz nem hivatalos átirat.
Már ez a dokumentáció célzott rá, hogy ROM emulációval már létező Spectrum programok is futnának Enterprise-on, gyakorlatilag csak az előbb leírtak alapján megteremtett Spectrumos keretbe kell berakni egy olyan Spectrum ROM-mot, amiben a hardver közeli részeket (billentyűzet, hang és magnó rutinok) EP hardverhez vannak módosítva, és kész is a Spectrum emulátor! Erre az ötletre egymástól függetlenül számos programozó eljutott, így összesen körülbelül egy tucatnyi szoftveres Spectrum emulátor készült. Azonban hiába tűnik nagyszerűnek az ötlet, a szoftveres emulációnak számos hiányossága van:
Ezen okok miatt játékok futtatására egyáltalán nem megoldás a szoftveres emulátor, leginkább csak BASIC programok futtatására alkalmas.
Két emulátort érdemes külön megemlíteni, az egyik Alexander Gusev emulátora: nem csak azért, mert ez az egyedüli emulátor, mely nem magyar fejlesztés, hanem azért is, mert egyszerűen megoldotta a színkonverzió hiányát: a program monokróm, csak a kereten kezeli a színeket.
A másik a MICROTEAM emulátora, amely szolgáltatásaiban lényegesen felülmúlja a többi emulátort, így ezzel érdemes részletesebben is foglalkozni az ENTERPRESS cikke nyomán.
Az új SPECTRUM emulátor: Gép a gépben
Az ENTERPRISE megjelenésekor mindenki arra panaszkodott, hogy kevés a futtatandó játék- és felhasználói programok száma. Ekkor jelent meg az első és azóta is utolsó hardware Spectrum emulátor. Végre! - mondjuk - ezzel meg van oldva a programhiány. Aztán rá kellett jönnünk, hogy még sincs minden, mert a programok elég kis százaléka futott az emulátoron, valamint a lemezegység használatához szokottak is a kazettás magnóról voltak kénytelenek a programokat betölteni. (De meg kell jegyezni, hogy a játékok lelkes hívei még mindig ezt használják mert ezekhez a programokhoz jobb emulátort még nem készítettek!)
Aztán teltek-múltak a hónapok, és megjelentek a piacon az első szoftver emulátorok. Ezek természetesen nem tudták felülmúlni hardver testvérüket, de a kalózmásolatok miatt sok értékes Bartók-bankót spórolhattunk meg.
Eljött az 1991-a év, és a MICROTEAM kiváló fejlesztői csapata megjelent a SINCLAIR ZX SPECTRUM + INTERFACE 1 + MICROTEAM FX.4 PRINTER SIMULATOR version 2.0 szoftver emulátorral.
Biztosan mindenkiben felmerül a kérdés, hogy miben múlja felül az új változat társait? A program egy már közkézen forgó szimulátor továbbfejlesztett változatának tekinthető, újdonság viszont - ahogy a nevéből is kiderül - a lemezmeghajtók és a nyomtató kezelése. Kétféle változata jelent meg: a 128 Kbyte-os alapgépeken is futó szimulátor (SP.COM), illetve a memóriabővítővel ellátott gépekhez készített rendszerbővítő (SPE.EXT). (Indítása betöltés után az :SP paranccsal lehetséges.) A köztük lévő különbségek: az utóbbi képes a RAMDISK kezelésére, és szabadon kiléphetünk EXDOS-ba is az [Esc] leütésével, akár egy futó program közepén is.
"A program készítésében az elsődleges szempont az új interface-ek minél jobb kihasználása volt" - írja a MICROTEAM a programhoz mellékelt leírásában, melyet fájl formájában kap meg a felhasználó (SP.TXT). Ez a dokumentáció pont olyant, amilyenre az ember vágyik: nem hosszú, nem rövid, és minden fontos tudnivaló kiolvasható belőle.
Helyezzük nagyító alá az emulátort! Az első hiba, hogy a program nem színhelyes: a színek elérhetők, de más attributumbájtokkal. (Ennek részleteibe itt és most ne bonyolódjunk bele.) A FLASH illetve a BRIGHT utasítás nem használható, viszont 16 helyett 256 keretszín állítható elő. (A BORDER színe gépi kódú programoknál gyakran változik, ami néha zavaró.)
A szoftverek közül a Basic nyelven íródottak mindegyike rendesen fut, kivéve azokat, amelyek gépi kódú utasításokat, illetve az IN, OUT stb. utasításokat használnak. A portok olvasása és írása gépi kódban csak külön rutinok írásával oldható meg, illetve a megfelelő ROM rutinokat hívhatjuk segítségül. (A billentyűzetet például ROM rutinokkal gond nélkül olvashatjuk, de közvetlenül a portok olvasásával nem!) A gépi kódú programok közül azok sem futnak, amelyek letiltják a megszakításokat, ezért nem fut a játékprogramok nagy része sem. Ugyanakkor gond nélkül használható néhány felhasználói program: a MicroProlog, a Tasword Two, a Hisoft Pascal, a Masterfile, a Supercode, a Vu-Calc stb., nem fut viszont a Tasword Three, a Beta Basic, a Melbourne Draw, az Artist, az Art Studio. Látni kell viszont, hogy az emulátornak köszönhetően így is jelentősen bővül az ENTERPRISE-on futtatható komolyabb alkalmazások száma. (A MICROTEAM gárdája elsősorban a felhasználói programok futtatásához ajánlja az emulátort.)Essen szó arról is, ami igazi újdonság az eddig megszokott software emulátorokhoz képest, azaz a microdrive és a nyomtatókezelésről. Sajnos, nem minden Intarface 1 utasítás működik a MICROTEAM programjában, és a gépi kódú kompatibilitás sincs megoldva. Ezen okból kifolyólag nem működik a már említett Tasword Three program sem, amely a microdrive-ot gépi kódból direktben írja. Itt is találkozhatunk azzal a nehézséggel, hogy néhány utasításnál a keretszín (BORDER) megváltozik.
A CAT (katalógus, EXDOS-on a DIR parancsnak felel meg) utasítás használható. Formája megfelel a Spectrum-nál megszokottnak, amely természetien mindes utasításnál elmondható. A parancs után álló azám adja meg, hogy melyik meghajtóról kérjük a lemezen található programok listáját (CAT meghajtószám). Ez egy egytől ötig terjedő azám lehet. (1=[A:], 2=[B:] ... 5=[E:) Az ötös azám - mint a teszt elején említettem - csak memóriabővítővel ellátott gépeken alkalmazható, hiszem ez a RAMDISK-et jelenti. Például a "CAT 3" utasítás az ENTERPRISE "DIR C:" utasításának felel meg.
A programok kimentése illetve betöltése (SAVE, LOAD) szintár működőképes a Spectrum-nak megfelelő formátumban:LOAD * "M"; a megfelelő microdrive száma;"a betöltendő program neve {max. 8 karakter hosszú}"
továbbá
SAVE * "M";d;"programnév"
A microdrive-on természetesen mindig a lemezegységet kell érteni!) Ha egy programot rögzítünk, majd az említett CAT utasítással megnézzük a lemez tartalmát, akkor láthatjuk, hogy a lemezen ZXF kiterjesztéssel szerepel. A szimulátor ilyen kiterjesztést ad minden fájlnak. Ha a kimentett program neve 8 karakternél rövidebb, akkor aláhúzásjelekkel tölti ki az üres részeket.
Betöltéskor elegendő a kimentett program eredeti nevét megadni, azaz az aláhúzásjeleket, a kiterjesztést nem kell kiírnunk. A SAVE és LOAD utasításokhoz kapcsolódik a VERIFY parancs, amely szintén használható, viszont valamivel lassabb, mint az eredeti Spectrum-on. (Huszonöt másodperc alatt 16KB-ot tudunk ellenőrizni.)A MICROTEAM emulátora minden olyat tud a printer-kezeléssel kapcsolatban, amit az általuk (a Spectrum gépekhez) forgalmazott FX.4 EPSON-nyomtatóvezérlő interfész ismer, és gépi kódból is írhatunk a nyomtatóval. A nyomtatókezeléshez először ismernünk kell magát az interfészt. A V3.FX típusú interface a SINCLAIR ZX Spectrum számítógép és az EPSON gyártmányú FX-80 printer illesztését valósítja meg.
Ismerkedjünk meg az interfész bájtatnak használatával!
- A 23681-es memóriarekesz bitjei rendre a következő funkciók ellátására hivatottak (minden egyel bit alapáréke 0):
- b0 - COPY-nál kétszeres szélességet és magasságot állít elő,
- b1 - 90 fokkal elfordított nyomtatás;
- b2 - a 23679-es címen beállított számú sor (0-24), illetve oszlop (0-32) nyomtatása;
- b3 - inverz COPY;
- b4 - vízszintesen 15%-kal összenyomott nyomtatás;
- b5 - CR+LF terminátor (az alap csak CR);
- b6 - az interfész minden kódot változtatás nélkül átenged;
- b7 - a PRINT sorszélesség felére csökken.
- A 23679-es bájtra a nyomtatandó sorok szélessége írható be, a karakterek számát kell megadnunk.
- A 23658-as bájt használható az interfész és a printer inicializálására.
- A program a 23680-as bájton tárolja a soron következő kinyomtatandó karakter adott soron belüli pozícióját.
Az interfész a nyomtatható (ASCII kódú) karaktereket adja át a printernek. A 127-164 közötti kódokat a Spectrum grafikájának megfelelően, a 165-255 közöttieket pedig kifejtett kulcsszavak formájában nyomtatja. Ebben az esetben is átvihetünk a 32-126 számtartományon kívüli kódokat, ha minden ilyen speciális kód előtt egy un. Escape karaktert (ASCII 27) küldünk a printer felé.A 128 KB-as alapgépen futó verzió az ESC billentyű lenyomásakor rákérdezés nélkül reset-el: programjainkat, adatainkat a kisujjunkkal a halálba küldhetjük. A fejlesztők arra is gondolhattak volna, hogy nem minden ENTERPRISE-os ismeri a Spectrum billentyűzetét, jó lenne on-line help formában segítséget kapni a billentyűk elhelyezkedéséről.
Összefoglalva: A MICROTEAM programja egy újabb mérföldkő a Spectrum emulátorok fejlődésében, apró, de nem megoldhatatlan hibákkal. Egy biztos: a printer kezelésében minden eddig ismert lehetőséget meghaladó eszközhöz jutottunk. A játékos kedvű felhasználók pedig továbbra is csak a hardver emulátorra, illetve az ENTERPRISE-on futó Spectntm átiratokra támaszkodhatnak.
Jelentős csúszással végül megjelent a hardware-es emulátor is, de magas ára, és kényelmetlen kezelhetősége miatt nem váltotta be a hozzá fűzött reményeket. Eközben szép számmal gyarapodtak a Spectrum-ról átírt játékok, az Enterprise software-parkjának kb.90%-a (!) Spectrum átirat. Hogy ez az Enterprise szemszögéből mennyire jó, azt mindenki döntse el maga... Szerintem a gép sikerét (Magyarországon és a nemzetközi porondon is) jelentősen segítette volna, hogyha a gép képességeit kihasználó, színvonalas játékokat készítettek volna hozzá. A gép forgalmazásának kezdetén kapható játékok azonban messze nem mutatták be a gép képességeit, és erre a Spectrum átiratok sem voltak alkalmasak...
Fontos még megemlíteni, hogy a hardware-emulátort a Zozosoft némi munkával egy igazán jól használható eszközzé tette! Ha a gép forgalmazásának kezdetén egy ilyen színvonalú emulátort kínáltak volna a géphez (valamelyest olcsóbban), máshogy is alakulhatott volna az Enterprise üzleti sikere.
Végezetül íme egy érdekes kép, melyen azt láthatjuk, hogy az emulátor-on egy emulátort futtatunk! "Perverzebbek" fokozhatják a "kéjt", ha telepítenek egy PC emulátort (pl. Virual PC-t), futtatnak rajta egy Windows-t, azon futtatják az Ep emulátort és azon futtatják a Spectrum emulátort...