# Retrocomputing nosztalgia és a BASIC programozás újjáélesztése
A retrocomputing világa gyakran romantikus ködbe burkolózik, akárcsak a múlt más területei – gondoljunk csak a vitorlás hajók kapitányaira vagy a középkori lovagokra, akiknek mindennapjai korántsem voltak olyan dicsőségesek, mint ahogy utólag elképzeljük. Ugyanez igaz a régi számítógépekre is: amikor bekapcsoltuk a gépet, és azonnal a BASIC fogadott minket, készen arra, hogy saját programokat írjunk, mindez ma is vonzónak tűnik. A valóság azonban árnyaltabb: a nyolcvanas évek hobby-számítógépein nem léteztek kényelmes szövegszerkesztők, fejlett hibakereső eszközök, névvel ellátott függvények vagy modern vezérlési struktúrák – helyettük GOTO-k és GOSUB-ok tömkelegével kellett boldogulni. Ez a „rózsaszín visszaemlékezés” (rosy retrospection) jelensége, amely szépíti a múlt tapasztalatait.
A Hackaday Retrocomputing Challenge kapcsán a szerző egy ambiciózus projektbe kezdett: egy BASIC előfeldolgozó (preprocesszor) megírásába, amely címkék és modern vezérlési struktúrák segítségével teszi olvashatóbbá és karbantarthatóbbá a régi MBASIC kódot. Az ötlet nem új – gondoljunk csak Brian Kernighan RATFOR és RATFIV rendszereire, amelyek modern szerkezeteket fordítottak hagyományos FORTRAN IV-re, vagy a C++ kezdeti verziójára, amely C kódot generált. A kihívás azonban a számtalan speciális eset kezelésében rejlik: a címkéket és a karakterláncokat egyedileg kell azonosítani, elkerülve az olyan hibákat, amikor egy szöveges üzenetben szereplő kettőspont tévesen címkeként értelmeződik. A szerző végül három verziót készített el – egy awk szkriptet, egy Python változatot és egy eredeti MBASIC implementációt –, amelyek mind ugyanazt a szintaxist használják, és közös funkcióikban azonos eredményt produkálnak.
A fejlesztés során olyan modern nyelvi elemek kerültek be a BASIC környezetbe, mint az IF…THEN!…ENDIF!, a WHILE!…WEND!, a DO!, az EXIT! és a CONTINUE!, valamint feltételes fordítási blokkok, fájlbeillesztés és egy egyszerű veremstruktúra PUSH! és POP! utasításokkal. A MBASIC verzió megírása komoly korlátokkal járt: nincsenek szótárak vagy dinamikus listák, így a címkék és blokk-állapotok fix méretű tömbökben tárolódnak, a fájlbeillesztés kezelése pedig explicit vermet igényel. Ennek ellenére a translator önmagát is le tudja fordítani: az awk prototípus egyszer legenerálja az lblbas.bas fájlt, amely után a CP/M gép önállóan képes feldolgozni a BAL forrásfájlokat – köztük a saját magát is –, így nem szükséges modern számítógépre átváltani a fejlesztéshez.
A projekt gyakorlati hasznosságát olyan mintaprogramok mutatják, mint a TM1637 LED-kijelző vezérlése vagy a HILO.BAL játék, amelyek jól illusztrálják, hogy a címkék és vezérlési struktúrák mennyivel olvashatóbbá teszik a kódot a hagyományos, csupasz BASIC-hez képest. Bár a generált program továbbra is sorszámokat használ, és a megvalósítás kompromisszumokat tartalmaz, a fejlesztés élménye jelentősen javul – különösen WordStar szerkesztővel dolgozva. A tanulság tehát nem az, hogy a retrocomputing jobb volt, mint amire emlékszünk, hanem hogy egy kis stratégiai „csalással” majdnem olyan szórakoztatóvá tehető, mint amilyennek a nosztalgia festi.
Ez a cikk a Neural News AI (V1) verziójával készült.
Forrás: https://hackaday.com/2026/09/14/rosy-retrocomputing/.
A képet Lorenzo Herrera készítette, mely az Unsplash-on található.