Számítógép emulátort készíteni - azt hiszem - nem egyszerû feladat. Ismerni kell hozzá az emulált gépet és a PC-t egyaránt, tisztában kell lenni a hardver alapokkal és nem árt, ha programozni is tudunk kicsit. Mindenképpen szükséges egy magasszintû nyelv ismerete, de az én egyéni véleményem az, hogy ebben a speciális esetben az alacsony szintû nyelv (értem ez alatt a PC-n az INTEL x86 assembly-t) is jól jön. Noha mai gépeink a tíz évvel ezelõtti PC-hez képest már erõmûvek, azért rossz algoritmusokkal, átgonolatlan megoldásokkal bármilyen gépet le lehet terhelni.

Még e munkám elõtt régebben készítettem egy ZX Spectrum emulátort, amely képes volt egy 386DX40-es gépen már realtime módon mûködni, azaz a 3.5 MHz-es Spectrumot valós idõben emulálni (egy kicsit még gyosabb is volt, mint egy valódi Spectrum) Az egész lelke egy Z80 processzor emulátor volt, amelyet teljes egészében assembly nyelven készítettem el, így merem állítani, hogy megfelelõen gyorsra sikeredett. Sajnos egy ilyen programban (ahol a négyzáz-egynéhány Z80 utasítás mind egyesével ki van fejtve) elõfordulhatnak hibák. Elõ is fordultak, így egyik-másik ZX Spectrum program - feltehetõleg a nem dokumentált Z80 utasítások nem megfelelõ emulációja miatt - furcsán viselkedett. E korábbi Spectrum emulátor került a kezembe és adta az ötletet, hogy végre egy normálisan mûködõ minden szempontból tökéletes és nem utolsó sorban több projekben is felhasználható Z80 emulátort készítsek.

A PRIMO emulátor lelke tehát egy Z80 emulátor. Ez a korábbi tapasztalatokból okulva sokkal szervezettebb, áttekinthetõbb, mint elõdje volt, és ami a lényeg: egy viszonylag szabványos interfészen keresztül mûködtethetõ, ezért bármilyen Z80 alapú gép emulációjánál használható. Elkészült a ZX Spectrum emulátor újabb verziója is, amely szintén ezt processzor emulációt használja. Sajnos a Z80 emulátor még mindig nem tökéletes (mert pl. a Spectrum emulátornál az IM2-es megszakítási módban illete a blokk OUT utasításoknál megakad), de a hiba felderítésében erõsen gátol idõm limitáltsága és ezt is túlszárnyaló lustaságom. (Azért arra kíváncsi lennék, hogy 8-9 óra tömény UNIX admin-kodás után kinek van még kedve, ereje INTEL assembly-ben írt Z80 emulátort debug-olni.)

A PRIMO emulátor elkészítésében nagy segítséget nyújtottak a SZTAKI munkatársai, akiket kevés, de állhatatos utánajárással sikerült elérnem. Sajnos a PRIMO-hoz kapcsolódó elektronikus anyagok, dokumentációk, forrásprogramok és kapcsolási rajzok már nem elérhetõk, de szerencsére a hardver és szoftver füzetek igen. Sõt! Mindezek már PDF formátumban is fellehetõk, köszönet Mogyorósi Attilának, amint az elõzõ részben erre utaltam. úgy gondoltam, hogy ez a gép megérdemel annyi figyelmet tőlünk (kik értékelni tudjuk a 8 bites korszak vívmányait és nem esük hasra a gigahertzek előtt), hogy legalább egy emulátor formájában fennmaradjon. Mint utóbb kiderült, nem csak én vagyok ezen a véleményen. (Hiába, akik "akkor" ismerték meg a számítógépes világot, azok számára még ma is értéket jelentenek ezek a gépek.)

Tehát a jelenlegi PRIMO emulátor verzióm egy még nem tökéletes, de már mûködõ Z80 emulátoron és a hozzá tett egyszerû PRIMO-hardver emuláción alapul. A project a DOS alatt annak idején nagy sikerrel használt Borland Pascal 7.0 fordító segítségével, tehát Pascal-ban, és nagyobb részt inkább assembly-ben íródott. Noha az EXE fájl egy DOS-os program, nekem gond nélkül fut Windows 98-n és Windows NT 4.0-n is, természetesen egy teljes képernyõs DOS ablakban.

(Magán jellegû megjegyzésem (nem vallási háborút kirobbantani szándékozó) azok számára, kik most elhúzták a szájukat a Pascal hallatán; nekem ne nevezze magát fordítóprogramnak egyetlen szoftver sem - legyen bármilyen nyelvrõl szó -, amelyik egy "hello world"-öt 200K-s exe-be fordít bele. Aztán meg vehetjük alá a vasat. A programozás nem errõl szól.)

(joco)