Rengeteg komment és észrevétel érkezett a Jack Tramiel-nekrológhoz, köszönjük mindenkinek (még sosem volt ezerlájkos posztunk). Sokan leírták, hogy a Commodore gépek révén lett belőlük programozó, Biga fedőnevű kommentelőnket ezek a hozzászólások egy cikk megírására késztették. Ez következik most a Heti retróban (a Ghosts'n'Goblins pedig jövő héten, azt se felejtettük el, nyugi).
A Jack Tramiel halálára írott nekrológokat olvasgatva futott át az agyamon, hogy ezeket a szeretett masinákat nem kizárólag játékra használtuk. Bár jómagam is elég fiatal voltam akkoriban, a C64 már életemnek abban a szakaszában jelent meg, amikor nem csak a játékok keltették fel az érdeklődésemet, és a kezdeti, újságokból való bepötyögések után már valami önállót is szerettem volna alkotni. Előre is elnézést kérek, ha kihagyok vagy rosszul írok valamit, próbálok a lehető legjobban visszaemlékezni, mivel is töltöttem szabadidőmet, míg mások inkább csajoztak vagy bringáztak.
A BASIC, ahogy a neve is mutatta, a kezdőknek szánt programnyelv volt, ezért talán legtöbbünk BASIC-ben írt kisebb programokkal kezdte a pályafutását. Közismert, hogy a C16 és a Plus4 BASIC-je sokkal jobb volt, mint a C64-é, viszont a C64 sokkal többet nyújtott a grafika és a zene területén, ezért idővel megjelentek az első BASIC bővítések is C64-re, amelyek aztán tudásban túl is szárnyalták az említett kisgépek 3.5-ös BASIC-jét, a saját 2.0-ását pedig mérföldekkel lekörözték. Természetesen a megfelelő számú POKE, PEEK és SYS utasítással az elvetemültebbek már akkor is mélyebbre áshattak, de ilyen programokat átlátni, javítani igen nehézkes volt. (Talán sokan emlékeznek a POKE utasításokkal bevitt gépi kódú programokra, amit a töméntelen sok DATA sor tartalmazott.) A C16-os és Plus4-es BASIC-je valóban inkább oktatásra volt csak alkalmas, ahogy Hamster kolléga is említette blogjában, jómagam nem is emlékszem komolyabb alkotásra, bár ekkor még keményen általános iskolás voltam. A Plus4-es beépített programjait, szövegszerkesztőjét, táblázatkezelőjét viszont volt alkalmam látni használat közben, egyik iskolatársam apja vezetgette céges pénzügyeit ezzel, de nem tudom, mennyire volt valóban elterjedt.
A legtöbb időt a Simons’ Basic és a Graphics Basic kiegészítőkkel töltöttem el, ezek profi lehetőségeket nyújtottak a C64 grafikájának kihasználására, nemcsak a hagyományos 2D rutinokra (grafikus üzemmód állítás, színek, vonal, négyszög, kör, ellipszis), hanem a sprite-ok kezelésére, akár spriteütközéseket is le tudtak kezelni. Ha jól emlékszem, a Graphics Basic-nek saját spriteszerkesztője is volt, ami nagyon gyorssá tette a sprite-okkal való fejlesztési munkát. A grafikán kívül a SID chip lehetőségeit is mindkét nyelv támogatta, amivel hangok és dallamok megszólaltatása is sokkal könnyebbé vált. Emellett sok hasznos parancsot adtak az amatőr fejlesztőknek, a floppy meghajtó kezeléséhez, joystick lekérdezéshez.
A Simons’ talán kiterjedtebb bővítés volt (míg a nevében is jelölt Graphics Basic inkább a grafikára ment rá), ezért valóságos kincsesbánya volt a kódernek, találhattunk benne billentyű-, sztring-, nyomtató-, hibakezelő parancsokat, a nyomkövetést segítő parancsokat és a strukturált programozást segítő alapvető parancsokat (ciklusok, case elágazások, nevesített procedúra/szubrutin hívások). A Graphics Basic örökre emlékezetes marad számomra, mert ebben írtam az első programomat, amiért fizetést kaptam, és az eredményt fel is használták. Egy vitaesthez kellett egy stoppert írnom, ahol villogás és hanghatás jelezte a felszólalónak, ha lejárt az ideje. De nem ezért maradt emlékezetes, hanem mert itt csúszott be az első igen ciki bug. Az órák, percek, másodpercek számait sprite-ok jelenítették meg. Az egyik hozzászólót nem „lőtték le”, amikor programom jelezte, az 59 perc utáni időt már nem kezelte, így a vitaest átlépett a nem-valós időbe, és szépen múltak a hatvanas percek is. Szerencsére a vita hevében ez nem szúrt szemet, és a járandóságomat is megkaptam, talán tízezer forintot, ami abban az időben igen nagy pénznek számított.
Végeredményben a BASIC-re alapuló bővítések nem terjedtek el túlzottan, illetve nem igazán születtek túl nagy alkalmazások. Ennek egyik oka a memóriahiány volt - hiszen a bővítés önmagában is sok memóriát elvett-, másrészt a sebesség. Játékhoz a BASIC sebessége nem volt elegendő, és talán a jogi része sem volt akkoriban szabályozva (hiszen az ezzel készült programokat csak a bővítővel lehetett futtatni.)
Figyelmem ezután a programnyelvek közül a gépi kód felé fordult, amiben némi jártasságra még a C16 beépített kezdetleges assemblerével tettem szert (MONITOR vagy mO). A C64 nem tartalmazott ilyet, ezért hosszú ideig az említett bevitelt elvégző BASIC programokban merült ki a gépi kódú programozás. Aztán megjelentek az assemblerek, amelyek nemcsak a játékkészítők, hanem a demó és intró kódolóknak is nagy segítséget jelentettek. Ezt a „kockafejű partybirodalmat” már többször leírták, és sokunknak óriási élményt jelentett az elkészült művek bámulása, versenyzése. Ezekhez az emlékezetes művekhez elengedhetetlen volt egy jó assembler, amely már támogatta a címkéket, tárolhattunk benne címkével ellátva adatokat, és természetesen menthettük/betölthettük assembly programjainkat. Az assembly forrás még önmagában nem a gépi kód volt, hanem egy, a programozó által jobban átlátható kód, amit természetesen tovább egyszerűsít az assembler, amikor majd programunkat lefuttatja. Ennek párja volt a disassembler, ami egy memóriatartományban lévő gépi kódot mutatta meg assembly-ben. Az assemblerhez emlékeim szerint különféle segédprogramok is megjelentek, a cruncher programok (pl. Sledge Hammer), amelyek a szűkös memóriát jobban kihasználandó, tömörítették a kódot, és futtatáskor a jól ismert villogó keret jelezte, hogy most bizony decrunching zajlik. Demoversenyen soha nem indultam, ehhez én már későn érkeztem, illetve az agyam jobban bírta a barátságosabb nyelveket, de egy egyszerű intrót, zenével, logóval és egy vízszintes scroll-al magam is összeütöttem. Ezek az „alkotások” gyakran megjelentek a helyi kábeltv csatornáján, mint kezdetleges képújság.
Kis kitérő volt az 1541 lemezmeghajtó programozása, mert igen érdekes, ennek az egységnek saját processzora és memóriája volt, ezért kis programokat össze lehetett ütni a szórakoztató, ledet villogtató, kerregő-zenélőtől kezdve a komolyabb másolásvédelmet ellátókig. (Agresszívabb egyének a legendák szerint fizikai tönkretételt is el tudtak érni az 1541-esek programozásával.)
Ami már jobban lekötött, és előrevetítette jövőmet, az első üzleti fejlesztőeszközök megjelenése. Amivel akkortájt foglalkoztam, az a Master 64 nevű BASIC kiegészítés volt, melynek képességei akkoriban egyszerűen fantasztikusak voltak. Képes volt indexelt szekvenciális (ISAM) adatbázis kezelésére, mely akár több floppy lemezen is terpeszkedhetett. Tudott rekordokat kezelni, és meglepően gyorsan keresni a lemezeken, és ami különösen érdekes volt, adatbeviteli képernyőket lehetett létrehozni formázott mezőkkel. Ehhez egy editor is dukált, amellyel meg tudtuk rajzolni a képernyőket (ugye a Commodore kisgépcsalád komoly karakterkészletet is tartalmazott keretekhez, vonalakhoz). Ekkor már „teamben” dolgoztunk, és ketten fejlesztettünk először egy kérdőív kiértékelő programot, majd egy ifjúsági klub adatbázis kezelőjét, mely szállások, kulcsosházak, pályázatok, állásajánlatok és sok más, fiataloknak érdekes információt tartalmazott – sajnos maga a szolgáltatás nem élt túl sokáig. A mai napig emlékszem, hogy a barátom lakásában futtattuk a kérdőív-kiértékelő programot, a barátom a zaj mérséklése miatt egy szekrénybe zárta a nyomtatót, amely egész éjjel ontotta az eredményeket.
A következő téma előtt említeném meg, hogy akkoriban internet híján a tanulás nem volt olyan egyszerű, de az akkori „félig legális” viszonyok sokat segítettek benne: szinte mindenhez jelent meg magyar nyelvű könyv, amiből megtanulhattuk az utasításkészletet, illetve a floppy mellékletekből más kész példaprogramokat elemezhettünk pötyögés nélkül. Természetesen nem mindent lehetett könyvből megtanulni, assembly tudáshoz nem ártott egy demós haver, aki pár műhelytitkot megtanított, sokat tanultam anno Goophy (of Cerberos) kollégától. Külön poszttéma lehetne a Commodore-okhoz kapható cardridge-ek világa, melyek részben a játékosokat segítette, de valójában a kódereknek, crackereknek nyújtott nagy segítséget. C16-hoz egy memóriabővítő és pár új parancsot tartalmazó berhelt kártyám volt, melyet ha jól emlékszem, akkoriban horribilis összegért, ötezer forintért adtak. C64-eshez a jól ismert Action Replay kártyám (ami egy család volt, de már nem emlékszem, melyik verzió) volt, amely gyorsbetöltőt, másolót, reset-freeze gombokat, sprite keresőt, talán némi plusz memóriát is tartalmazott.
Meg kell említeni itt a GEOS-t, ami a grafikus oprendszerek előfutára volt, bár természetesen nem tekinthető igazi oprendszernek, de a mai alkalmazások elődei már megtalálhatóak voltak benne. Illetve nemcsak az alkalmazások, hanem a már közismert objektumok és jellegzetességek, mint ikonok, kattintás, szemeteskosár, jegyzetfüzet, rajzolóprogram, mini szövegszerkesztő, fontok, stb. Nem sok idő telt el, és a GEOS-hoz is megjelentek a könyvek, nemcsak felhasználói, hanem fejlesztői oldalról, megmutatták, hogyan írhatunk assemblyben GEOS-hoz programokat. A GEOS megelőzte a korát, és mire elterjedhetett volna, a C64-es lefutott, de utódját, a Workbenchet még sokáig használták az Amigákon. (Amigám már nem volt, szóval elnézést, ha hülyeséget írok, már egy XT-t nyúztunk akkoriban).
Amire már csak homályosan emlékszem, de érdemes megemlíteni, mint sokat használt szoftvereket: a rajzolóprogramok, mint például a Koala Painter és az Amica Paint, egy jópofa kiadványszerkesztő, a Print Shop, illetve egy táblázatkezelő, a Multiplan. Mivel kóder voltam elsősorban, ezeket kevéssé ismertem, bár a Print Shoppal pár plakátot és meghívót jómagam is készítettem. Ha valakinek eszébe jutott még valamilyen hasznos és jópofa felhasználói program, írja le kommentben. Sajnos nem emlékszem a nevére, de volt C64-re egy logoszerkesztő program is, mely valamilyen trükkel azt az illúziót keltette, hogy több, mint 16 színt látunk a képernyőn. Akinek eszébe jut, megírhatná.
Utolsó kérdésként: ki találja ki, mik voltak ezek és melyik gépen?
POKE4096,1:RENUMBER
POKE2050,1:SYS42291
Utolsó kommentek