Válas Péter honlapja

Az ABC 80 és a Commodore 64 legendája

Gyakran kérdezik tőlem: miért pont 64? Erről az érdekes számról szól ez a cikk, és két mikroszámítógépről a hőskorból, melyektől az én generációmnak még ma is könny szökik a szemébe. Azokba az időkbe visz vissza ez a kis emlékezés, amikor még nem csak Facebook és MSN nem volt, hanem elérhető internet se (azt se tudtuk, mi az), magunknak írtuk a rajzoló- és játékprogramokat, és a lelkesebbek gépi kódban programoztak, és maguk írták hozzá a monitorprogramot, amely közvetlenül a memória megfelelő byte-jaiba illesztette be a kódokat... (De már volt mikroszámítógép!) Kiegészítésül pedig egy csudabogár: a zsebszámológép, amelyre az első programomat írtam.

ABC 80

Eredeti konfiguráció saját monitorral és egykazettás magnóval
Forrás: abc80.org (kattints az eredetihez)
Az
ABC 80 eredetileg Svédországban gyártott iskolaszámítógép volt, a csodálatos Z80 mikroprocesszorral és 16 K RAM-mal felszerelve. (Ma már senki nem beszél mikroprocesszorról meg mikroszámítógépről, egyszerűen processzort és számítógépet mondunk helyettük.) A képen látható változatában még a monitorban volt a tápegység. Később Magyarországon is gyártotta a BRG. Ebben a változatban a kétkazettás háttértárba került a táp, és tetszőleges kistévét lehetett monitorként használni. Az ezen a képen jól látható masszív hűtőbordázatának és billentyűzetének köszönhetően mindig bírta a diákság által nyújtott kiképzést; nem tudok olyan esetről, amikor a gép lett volna a hibás, ha nem sikerült valami. (A képre kattintva és kinagyítva az is látható, hogy a diákok tőlünk északra is firkálnak.)

Forrás: Commons (kattints az eredetihez)
Néhány kép fellelhető róla a világhálón. Ez itt éppen nem túl értelmes tesztelgetés közben mutatja. Úgy lehet, a gépet szirénázásra késztető OUT 6,7 utasítás nyerte el a leginkább a tesztelő tetszését, mert azt kétszer is kipróbálta. Ez pedig a 72*78-as egyszínű grafika lehetőségeit demonstrálja – érdemes elolvasni a hozzá tartozó cikket is. Külön oldal gyűjti az ABC 80 hardverével kapcsolatos anyagokat; hol találunk ma olyan részletes leírást a gépekről, beleértve az áramköri rajzokat is, mint ez? És egy igazi ínyencfalat a kíváncsiaknak és a nosztalgiázni vágyóknak: a windowsos ABC 80-emulátorok egyike. Még a PRINT CALL(11) is működik rajta. :-) Lehet, hogy a Windows 7 már túl sok neki, és érdemesebb egy virtuális gépen valami régebbi operációs rendszer alatt futtatni.

Magnókazettára mentettük a programjainkat – még most is a fülemben van a hangja, ahogy betöltődik, mert a magnó bizony a hangot is lejátszotta, mintha nem programot vettünk volna föl rá. Sajnos már eldobtam a kazettáimat, de Robert Juhasz Svédországban feltöltött a kedvemért két mintát, egy rövidebbet és egy majdnem kétperceset. (Vigyázat, tekerd lejjebb a hangerőt kattintás előtt!) Rebesgették, hogy a Piarista Gimnáziumban floppymeghajtó is van hozzá, de senkivel sem találkoztam, aki látta is volna. Ez a forrás is említést tesz az opcionális floppymeghajtóról. Azt is megtudjuk belőle, hogy az 1978-ban bemutatott gép neve az Advanced Basic Computer for the 1980s rövidítése, és olykor még gazdát cserél egy-egy példány az eBayen.

Saját kép
A képen egy Z80 processzorra, ABC 80 számítógépre készült gépi kódú programom látható 1 forint 20 filléres iskolai szótárfüzetbe letisztázva. Az első oszlopban az abszolút memóriacím áll, ahova az utasítás kerül (ezekben az időkben írta a legendás BIT-LET Vallató rovata, hogy „memóriatérkép nélkül a gép félkarú óriás”), a másodikban a gépi kódú utasítás (amely egy 1–3 byte-os hexadecimális szám), a harmadikban az utasításnak megfelelő assembly-mnemonik. (Hú, de szép szó! Szóval az utasítás szimbolikus neve.) Tegye fel a kezét, aki egy magas szintű programnyelven 34 byte(!) terjedelemben megír egy képernyőinvertáló programot! (Akit érdekel a villogós változat is, a végét megtalálja tükörírással, ahogy átüt a papíron.)

Bár kezdeti programjaimat a PTK–1050 zsebszámológépen írtam (az is megér egy emlékezést lejjebb), az ABC 80 volt az első igazi számítógép, ahol 16-18 évesen kipróbálhattam képességeimet. A péntek délutáni-esti gépidőket (kilenckor dobott ki az ügyeletes, akkor indultam haza egyórányi távolságra) a következő péntekig tartó papíros programozás követte. Hibakeresés közben tanultuk meg a programozás alapszabályát: a gép nem azt csinálja, amit gondolsz, hanem amit mondasz neki. Annyira lekötött ez az izgalmas játék, hogy például a biológia tanulására nem is mindig maradt időm, mégis az ABC 80-nak (s az azóta már programozóként dolgozó Andy haverommal írt genetikai feleltetőprogramunknak) köszönhettem egy félévi ötöst biológiából. :-) Örök nosztalgiával és szeretettel emlékezem erre a gépre.

64

Amikor saját domainnevet kerestem, minél rövidebbet akartam választani, hogy könnyű legyen begépelni és továbbadni is. Hamar rájöttem, hogy a kétbetűsöket a domainbrókerek már mind lefoglalták, de arra is, hogy a kétjegyű számokat balga ésszel kifelejtették a felvásárlásból. (Azóta pótolták, ma már nem nagyon lehet a hu domain alatt szabad kétkarakteres domaint regisztrálni, csak másoktól megvásárolni.) Informatikatanár lévén természetesen a 2 hatványaira gondoltam mindenekelőtt. A 32 és a 64 között kellett döntenem, s végül két okból maradtam az utóbbinál: egyrészt mert az kerekebb szám, másrészt mert a másik nagy kedvencemre, a Commodore 64-re emlékeztetett. Szó sem volt tehát semmiféle tőlem idegen politikai áthallásról (akkoriban ez még eszembe se jutott volna), és ma sincs semmi máshoz köze. Én kedvelem ezt a számot és ezt az azóta értékesebbé vált domainnevet.

64 nem más, mint 26. Ez kettes számrendszerben szép kerek szám, így írják: 100 0000. Olyan kerek, mint a tízes számrendszerben az egymillió, csak másképp tagoljuk a számjegyeket. Most pedig már azt is kifejezi, hány bites processzor van a gépemben. Ez sem véletlen egybeesés, hiszen az informatikában Neumann János óta a hardver és a szoftver is a kettes számrendszeren alapul, és nekem már gimnazista koromban is jól kellett számolnom a kettes számrendszerrel, hogy értsem a gép működését. Nem volt nehéz: az alapokat már az alsó tagozatban megtanították. (Mit kettessel! Tizenhatossal, fejben!)

A klasszikus színösszeállítású változat
Forrás: Commons (kattints az eredetihez)

Commodore 64

Az ABC 80 neve csak azok szívét dobbantja meg, akik a kiválasztott iskolákban hozzáfértek abban a néhány évben, amíg használták őket. Ezzel szemben a
Commodore 64 egy generáció élménye, és a neten is sokkal több visszaemlékezést találni róla – van, aki máig nem vált meg tőle, vagy éppen újra megvásárolja. Mind erre vágytunk, és amikor 18. születésnapomra egy Angliából hozott példányt kaptam (ami előbb a kor szokása szerint napokig dekkolt a vámhivatalban, és persze fel is bontották – még ekkora volt az egész csomag), a világ legboldogabb embere voltam. Az iskolában még pár hónapig folytattam a programozást az ABC 80-on, de otthon már egy saját Commodore várt... egyelőre arra, hogy kézzel gépeljem be a programokat. Ennek már az 1541-es floppymeghajtó volt az elterjedt háttértára, de nekem esélyem sem volt megvásárolni, amint a gyári kazettás magnót sem. Időbe került, míg annyi pénzt össze tudtam szedni, hogy aranyáron megvegyem a BRG kockamagnóból átalakított magyar verziót, amely sosem működött megbízhatóan, és sok bosszúságot okozott. A Commodore-programoknak nem volt olyan szép hangjuk, mint az ABC 80-asoknak, itt lehet meghallgatni. :-) (Akkoriban hetente egyszer a Bartók rádióban sugároztak kazettára felvehető programokat ezen a hangon, a zenekedvelők nagy bánatára!) Külső tápegysége volt, amin huzamosabb használat után akár tojást is lehetett volna sütni, és ha egész nap használtam a gépet, két-két magnókazettára emeltem a széleit, hogy jobban szellőzzön. (Ma valami hasonlót kell csinálni a laptoppal...) Monitorja nem volt, koaxkábelen csatlakozott a ma már szintén legendaszámba menő fekete-fehér Junoszty kistévéhez. (Így aztán otthon nem sokat érzékeltem a C64 színes világából, csak nagy néha tudtam áthurcolni a színes tévéhez. Így nézett ki gyári monitorral és floppymeghajtóval, ahogy sosem láttam..)

A legendás nyitóképernyő
Forrás: Commons (kattints az eredetihez)
Nevét az akkoriban jónak számító 64 kB memóriáról kapta (ami valójában egy kicsit még több is volt, egy trükkel lehetett ugyanazon a címterületen két különböző memóriarészt cserélgetni, de egyszerre csak 64 K volt elérhető). Amikor bekapcsoltuk, ez a felirat fogadott – a C64-hívők többsége még ma is tudja, mi az a 38911. Néztem és ámultam: mikor leszek én képes ennyi memóriát kihasználni? Ma pusztán ennek a képernyőképnek a mérete több mint ötszöröse annak a végtelennek hitt 38911 byte-nak! A gépi kódú programozás nem volt olyan kényelmes, mint a Z80-é, a BASIC-je pedig egyenesen csapnivaló (az IF utasításból hiányzott az ELSE ág, GOTO-val kellett szimulálni!), de csodákat tettünk vele. Pixelekből lehetett megtervezni a hiányzó ékezetes magyar karaktereket, és minden programomat ennek a betöltésével kezdtem. Már volt rá igazi magyar betűs szövegszerkesztő is Easy Script néven, sok pénzért (keveset használtam az egyetemen, hiszen nyomtatóm sem volt). Az egyetemen kétszer is sikerült gyengébb évfolyamdolgozat után ötös gyakorlati jegyet kapnom a Commodore-ra írt demonstrációs programjaimnak köszönhetően, az egyik fizikalaborban pedig egy mérést úsztam meg úgy, hogy egy táblázatból programot írtam, amely feleslegessé tette a guberálást, és elkápráztatta a feladat egyszerűségéből mit sem sejtő gyakorlatvezetőt. Igaz, a Brown-mozgást szimuláló programomnak 24 órát kellett futnia, míg csaknem besatírozta a részecske a képernyőt.

Autóversenyes játék 1986-ból
Forrás: Commons (kattints az eredetihez)
A C64-et a gyártó játékgépnek szánta, és ennek megfelelő volt a hardvere is; a szakma nagy meglepetésére azonban a vállalati szférában is elterjedt, és boldog-boldogtalan használta mindenfélére még a hazai PC-korszak kezdetén is. Emlékszem, egy rokonom munkahelyén talán készletnyilvántartó programot írtam rá, és még valami pénzt is kaptam érte. Két joystick számára volt csatlakozója a páros játékokhoz, olyan szintetizátora volt, amiről a mai PC-kben szó sincs (három csatornán lehetett hullámforma szerint megtervezni a hangot, és negyediknek hozzákeverni a bejövő jelet), és a grafikájának legfeljebb nyolc, a képernyő alapállapotától függetlenül úsztatható és programozható átlátszóságú sprite is része volt. (Azaz nem kellett külön programozni, hogy hova mentse és hogyan rajzolja ki újra a hátteret, amerre a sprite-ok elhaladtak, ezt a hardver elintézte.)

Talán az utolsó nagyobb programom valamiféle csillagászati alkalmazás volt; büszke voltam rá, hogy a szürkület és a napkelte-napnyugta idejét az amerikai tengerészeti almanachhal pontosan egyezően számolta bármely földrajzi koordinátákra, de az üstökös pályaszámítása, amihez harmadfokú egyenletet kellett megoldani könyvből kinézett képletekkel, már elcsúszott valahol.

A C64 egy nemzedék örök szerelme, és mára már talán az ellentábor, a Sinclair Spectrum hívei se hangoztatják kritikus véleményüket, mint ahogy mi sem a Spectrumról. Az ilyenre mondják: mosdatlan szájjal ki ne ejtsd a nevét!

PTK–1050

Az eredeti
Forrás: Commons
S ha már a gyökerekről volt szó, beszéljünk kicsit a PTK–1050 programozható zsebszámológépről is. (Ezt meg a Vaterán lehet elkapni,
itt egy kép róla.) A gépet a Híradástechnika Szövetkezet forgalmazta, és valójában a Texas Instruments TI 57-es modelljének volt egyesek szerint koppintása, mások szerint átcímkézett továbbadása (többen számolnak be róla, hogy a lekopott felirat alól kibukkant az eredeti – hasonlítsd össze).
A másodfokú egyenlet megoldóképlete valós esetre
Saját kép
Appel tanár úr kísérletezett vele rajtunk technikaórán, még mielőtt számítógéphez juthattunk volna. A gépet csak az órán vehettük kézbe, hazavinni nem lehetett (most olvasom mások visszaemlékezéseiben, hogy volt iskola, ahol ezt is megengedték), s így, mint a képeken is látható, a házi feladatként papíron megírt programokba olykor utólag kellett belejavítani az ellenőrzés során. A felső képen a másodfokú egyenlet megoldóképletének kidolgozása látható egy írólap két oldalán (talán lecke volt, talán órai munka). Ahogy illik, a specifikációval és a vázlattal (azaz a folyamatábrával) kezdődik, s bár fel van rajta tüntetve, hogy negatív diszkrimináns esetén komplex megoldásokat kapunk, a tényleges programkód már csak a valós esetet tartalmazza – így is majdnem kitölti a rendelkezésre álló 50 lépéses tárhelyet. A kód után a „kiszolgálás”, azaz a futtatás módja áll – ezt is mellékelni kellett a programokhoz, hiszen nem tudták kiírni, mikor melyik értéket várják a felhasználótól.

Néhány vegyes program
(lásd a szöveget)
Saját kép
A másik papír ugyancsak 1983-ból származik, összegyűjtöttem rajta néhány programot. Csaknem három évtized múltán, amikor kis túlzással már csak arra emlékszem, hogy az LRN gomb a „learn”, azaz tanuld meg a programot üzemmód kapcsolója volt, jó így együtt látni őket. A bal oldali oszlopban a három ujjgyakorlat önmagáért beszél: a kettővel növelést, a téglalap kerületének és a kúp térfogatának kiszámítását mutatják. Középen egy másodfokú függvény értékeit írja ki a gép háromféle ciklusban (variációk egy témára, ahogy a zeneszerzők mondanák), a jobb oldali, leghosszabb program pedig két egész szám legnagyobb közös osztóját és legkisebb közös többszörösét számítja ki. Na, ehhez már kellett egy kis matematikai turpisság, hogy ennyi lépésbe beleférjen.

Hogy mi mindenre lehetett használni ezt a ma már primitívnek tűnő eszközt az 50 programlépéses memóriájával (amelyből még szépen levonódtak a részeredmények tárolására használt memóriarekeszek), arról szóljon néhány könyv (kattints mindegyiknek a tartalomjegyzékére).

A PTK–1050-hez nem fűz olyan érzelmi viszony, mint a másik kettőhöz, mégis idevettem a nyolcvanas évek számítástechnikai közegének bemutatására. Végül is ez volt az első elektronikus eszköz, amelyre programokat írtam.