Programozástechnika: ROM cartridge és ami benne rejlik | |||||||||
23 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 1983
ULTIMATE: Cookie
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 |