Programozástechnika: ROM cartridge és ami benne rejlik

5 csillagos Cikk értékelése: 5,00 (18 szavazatból)

A program a ROM helyére lapozódik be, ezért max. 16 Kbyte-os programok kerültek kiadásra, így természetesen az eredeti ROM tartalma nem elérhető, tehát nem használhatók semmilyen ROM hívások, még a BASIC értelmező se működik, mondhatni semmi sincs a továbbiakban, csak maga a program és az üres memória.

A BACKGAMMON vizsgálata során a következőket találtam:

Memória térkép


$0000 - $0027: Egy előkészítő program fut, ami törli a memória tartalmát és beállít néhány fontos rendszerváltozót, illetve áthelyez bizonyos részeket a memóriába.

$0028 - $00C3: Hasonlóan az eredeti ROM-hoz, az 1-es megszakítás programját tartalmazza. Ez kötelező, mivel engedélyezi a megszakítást és itt kezeli a billentyűzetet.

$00C4 - $0100: Az előkészítő program néhány rutinja helyezkedik el.

$0101 - $20C0: Az eredeti (kazettás) program fő része, bár néhány változást is tartalmaz.

$20C1 - $210D: ??? Valószínüleg adatok, mivel hasonló a kazettás változat azonos részével.

$210E - $2126: Előkészítő program egyik szubrutinja (bejelentkező képet rajzolja ki).

$2127 - $221E: Még nem tisztázott tartalma, bár az adatok vizsgálatából következik, hogy nem programrészlet, hanem valamiféle egyéb adat lehet.

$221F - $2F97: A kazettás változat bejelentkező képe tömörítve.

$2F98 - $3297: Az eredeti fontkészlet leírása, de más címen, mint az eredeti ROM-ban.

$3298 - $3429: Az eredeti program második része.

$34C6 - $3FFF: Szabad terület $FF-el feltöltve.


A program a ROM-ban fut, természetesen erre a címtartományra fordítva, ami szerintem meglepő, mert részemről azt vártam, hogy ha egyszer már elkészítették a programot úgy, hogy a memóriában fut, akkor elegendő lett volna a ROM-ból átmásolni a memóriába és átadni a vezérlést. Ehhez nem kellett volna újrafordítani és számos változtatást végezni. A cartridge programokkal kapcsolatban érdekes, hogy egy kínálkozó lehetőséget abszolút nem használtak ki, ugyanis ha a programok a ROM területén futnak, akkor a teljes memória szabadon elérhető! Mire is gondolok?

A sakk és logikai programok alaposabb lépéselemzéssel működhettek volna, hiszen több memóriával gazdálkodhattak volna. A felhasználói programok (szövegszerkesztő, táblázat kezelő, rajzoló) több szabad memóriát adhattak volna. Lehetett volna kombinálni a magnós betöltéssel, így több adat zsúfolódhatott volna be. (pl.: egy szöveges kaladjáték több grafikát kaphatott volna ugyanannyi kazettás betöltési idővel!) De akár a későbbi Spectrumokba be is építhették volna fixen a helyét, mivel túlzott elektronikát nem igényelt, a hely pedig nem lett volna gond!

Mi lehetett az oka ennek a "kihagyásnak"? Eléggé az elején elhalt a ROM cartridge elterjedése, drága volt és kevés felhasználó rendelkezett Interface 2-vel. Pedig lehettek volna feladatok, amelyek ennek segítségével könnyebben megoldhatók lettek volna (pl: VU-3D, VU-Calc, Tasword, stb.).


Nézzük sorra a cartridge programok elemzéseit

1982

PSION: Space Raiders
PSION: Planetoids
PSION: BackGammon
PSION: Chess
PSION: Planetoids
PSION & Melbourne Sotfware: Horace & the Spiders
PSION & Melbourne Software: Hungry Horace

1983

ULTIMATE: Cookie
ULTIMATE: PSSSST
ULTIMATE: JET-PAC
ULTIMATE: TRANZ AM


PSION

A ROM programokban számos programozói következetlenség van. Láthatóan mindegyiket más programozó készítette el (fel) ROM-ba égetésre, így aztán rengeteg eltérés figyelhető meg, főleg az előkészítő (inicializáló) program futása során. A programok bejelentkezése eltérő, az egyik rajzol bevezető képet, a másik elől lemaradt. A kazettás változattal általában megegyeznek, de a Chess esetében még a színeken is változtattak. Mindegyik programot újrafordították a megadott címre, de a programok kis mérete miatt a ROM-ok nagyrésze üres. Fő különbség az indulásnál látható:

Az eredeti Spectrum ROM a következőképpen indul



DI          ;megszakítás tiltása
.
.
LD   A, $3F
LD   I, A   ;megszakítás vektor beállítása
NOP         ;várakozás, ki tudja minek, biztos ez a felfűtési idő :))
NOP
NOP
NOP
NOP
NOP
IM   1      ;1-es megszakítási mód
.
.
EI          ;megszakítás engedélyezése

Lássuk mit műveltek a PSION cartridge-ok


Planetoids

DI
.
IM   1
LD   A, $3F
LD   I, A
NOP
NOP
NOP
NOP
NOP
NOP
.

BackGammon

DI
NOP
NOP
NOP
NOP
NOP
NOP
IM   1
.

Space Raiders

DI
LD   A, $3F
LD   I, A
.
NOP
NOP
NOP
NOP
NOP
NOP
.

Chess

DI
IM   1
.

Horace & the Spiders, Hungry Horace

.
LD   A, $3F
LD   I, A
NOP
NOP
NOP
NOP
NOP
NOP
IM   1
.
Látható, hogy csak kedves Horace-nak sikerült az eredetihez hasonlóan indulni, a többiek mintha kicsit lezserül kezelték volna a kérdést. A Chess és BackGammon még az I regiszter is elfelejtik beállítani, így csoda, hogy működik az RST 38-as ág. A $0038 címen nem az eredeti ROM program van egyiknél se (az eredeti minden 50-es másodpercben figyeli a billentyűzetet, lépteti a FRAMES rendszerváltozók értékét), hanem egyedi figyelő program. A Space Raiders még ezt se használja ki, IM 0-ban hagyja a processzort (csak érdekességként, de ez az egyetlen ilyen program Spectrumon, soha előtte és utána nem volt ilyen). érdekes, hogy a 6 db. NOP utasítást mindenki beillesztette, igaz elég össze-vissza. Furcsa, hogy miért van szükség erre a várakozásra, hiszen semmi se indokolja szükségességét, még programozási kézikönyvek se említik meg.


ACG - ULTIMATE

Ezeket a ROM programokat következetesen készítették elő. Indulásuk mindegyiküknek:


DI
LD   A,  $3F
LD   I,  A
LD   SP, xxxx
IM   1
.
A Cookie elől sajnos lespórolták a bevezető képet, pedig a ROM-ban lett volna elegendő hely neki. A többiek megkapták a bejelentkező képüket, sőt a Tranz Am még egy copyright szöveget is tett a ROM végére. A levél elején leírt sorrend véleményem szerint a kiadás időrendi sorrendjét is mutatja, a fejlődés szépen nyomon követhető. Az Ultimate programozói rájöttek arra az egyszerű dologra, hogy nem kell a programot újrafordítani, hanem a ROM-ból egy memória művelettel át kell tenni a RAM-ba és máris futásra kész. Ezzel a módszerrel mondhatni percek alatt lehet kész ROM cartridge-t készíteni egy programból (persze csak ha nem használ ROM hívásokat). Az RST 38-as ág természetesen szépen meg van írva, így tökéletesen futnak a programok. Ennyit számított 1 év a PSION-nal szemben.

Összegezve

A cartridge-en kiadott játékprogramok alapjaiban jó ötletnek minősültek, hiszen így a Spectrumból pillanatok alatt egyszerű, asztali játékgépet lehetett varázsolni. Nem volt töltési bizonytalanság és ne feledjük el, nem mindenki ért a számítógép kezeléséhez, vagyis könyv nélkül még a programot betölteni se egyszerű. A ROM-k nagyrésze üres maradt (sok esetben a ROM 2/3-a üres!), furcsa, hogy a cégek ide nem írtak saját reklámprogramot, DEMO-t, kedvcsinálót, de 1983-ban még nem érett be a piaci verseny erre a megoldásra. Talán 1984-ben már jelentek volna meg, hiszen 1985-ben az újságok mellékletei hemzsegtek ilyenektől. A ROM-ok ára irreálisan magas volt, 2-szeres ár volt a minimum a kazettához képest. Kár hogy elhalt. Amikor leestek a ROM-ok árai, néhány igazi, jó 16K programmal fel lehetett volna lendíteni az Interface II népszerűségét.


Publikálás a portálon: 2002-11-18 15:47:42
Utolsó módosítás: 2003-02-11 01:10:00