ABC 80

A Wikipédiából, a szabad enciklopédiából
(ABC80 szócikkből átirányítva)
ABC 80
FejlesztőDataindustrier AB
Gyártó
  • Luxor AB
  • Scandia Metric
ProcesszorZilog Z80
A Wikimédia Commons tartalmaz ABC 80 témájú médiaállományokat.
ABC 80

Az ABC 80 (Advanced BASIC Computer 80) számítógép a svéd Dataindustrier AB (DIAB) vállalat által kifejlesztett számítógép volt, amit a Luxor AB gyártott Svédországban, Motalában a 70-es évek végén, illetve a 80-as évek elején. Magyarországon az 1980-as évek első felének elterjedt és népszerű iskolaszámítógépe volt.

Technikai adatok[szerkesztés]

Az ABC 80 a Zilog Z80-on alapult, 3,58 MHz-en működött, 16 KiB RAM és 16 KiB ROM memóriája volt. A ROM tartalmazott egy bytecode-alapú BASIC interpretert is. A számítógép monitoraként egy, a számítógéphez átalakított fekete-fehér tv-t kínált a gyártó, ami magától értetődő választás volt, hiszen a Luxor AB televíziókat is gyártott. A gép 8 bites kimeneti portjára egy Texas Instruments SN76477 hangvezérlő csip volt csatlakoztatva, azonban a csip lehetőségeit nem lehetett kihasználni, mert annak vezérlésére nem volt lehetőség az ABC 80-ban, így a gép hangja 256 előre programozott hangeffektusra volt korlátozva.

Az ABC 80-at később licenc alapján BRG ABC 80 néven gyártották Magyarországon is a Budapesti Rádiótechnikai Gyárban. Ennél a változatnál a billentyűzet műanyag borítását fémből készült házra cserélték le. Az eredeti egymagnetofonos változatot a BRG később kétmagnetofonosra cserélte. Lemezegységet Magyarországon ekkoriban csak nagyon kevés helyen használtak. Az ABC 80 megbízható, ritkán elromló számítógép volt, különösen az eredeti egykazettás kivitelben. (Az eredeti egykazettás, gyári monitoros konfiguráció képe)

A maga korában szokatlan módon az ABC 80 képes volt a legfontosabb ékezetes betűk (á, é, ö, ü) megjelenítésére is, mivel ezek egy részét a svéd ABC is tartalmazza.

Grafika[szerkesztés]

Az ABC 80 karakteres képernyője 24 sorból és 40 oszlopból állt. Grafikus módban egy-egy karakterhelyet hat képpontra (két oszlopra és három sorra) lehetett felbontani. A grafika soronként volt bekapcsolható egy speciális (151-es kódú) karakternek a 0. oszlopban való elhelyezésével. Ezáltal a 0. képernyőoszlopot nem lehetett felhasználni a grafikához, tehát a felbontás 72 sor és 78 oszlop volt. A teljes grafikus átváltást például a következő ciklussal lehetett elvégezni:

FOR I=1 to 24:;:;CHR¤(151);: NEXT I

ahol a ¤ a karakterfüggvények jele (más BASIC nyelvjárásokban $), a kettőspont az egyes utasításokat választja el, a pontosvessző pedig a képernyőre írás jele.

Az ily módon grafikusra állított képernyőt (illetve sorokat) kétféleképpen lehetett rajzolásra használni.

  • Képpontonként: ebben az esetben a SETDOT utasítással lehetett bekapcsolni egy képpontot, a CLRDOT utasítással kikapcsolni, a DOT függvénnyel pedig lekérdezni egy képpont állapotát.
  • Félgrafikus karakterekkel: a karakterhelyenként hat képpont összesen 26=64 variációt tesz lehetővé, amelyek 64 előre gyártott grafikus karakter formájában álltak rendelkezésre, és ezeket egyszerűen a nyomtató utasítással lehetett elhelyezni a sorban. Például a 32-es kódú karakter szöveges módban a szóköznek, grafikus módban hat kikapcsolt képpontnak felelt meg. A nagybetűk helyén a karaktertáblázatban nem állt félgrafikus karakter, ezért ezeket ilyenkor is használni lehetett feliratok elhelyezésére.

Az ABC 80 BASIC jellemzői[szerkesztés]

Azonosítók és adattípusok[szerkesztés]

A változók neve egy- vagy kétkarakteres lehetett. Az első karakter kötelezően angol betű, a második angol betű vagy számjegy. Ehhez járulhatott a típusjelzés (% vagy ¤). Háromféle adattípust használt:

  • kétbyte-os egész (jele: %)
  • ötbyte-os valós (kiegészítő jel nélkül)
  • string (jele: ¤)

Érvényes változónevek például: A%, B, X1%, S¤. A % jelet a konstansok mellé is ki lehetett írni az egész számként való kezelés kikényszerítésére, ami a programfutást meggyorsította. Az értékadásban a LET utasítás opcionális volt.

Legfeljebb kétdimenziós tömböket lehetett létrehozni. Sem a skaláris, sem a tömbváltozókat nem kellett előre deklarálni, a memóriafoglalás futásidőben történt, és ennek megfelelően a tömbök mérete is dinamikus volt (kifejezés is állhatott a tömbméret helyén). Az összetett típusok közül az ABC 80 csak a tömböt ismerte.

Logikai típus nem volt, de a BASIC a numerikus kifejezéseket képes volt logikai értékként, a logikai értékeket pedig számként is kezelni. A 0 hamis, minden más szám igaz értéknek felelt meg. Az igaz értéket 16 darab 1 értékű bit jelezte, ami két byte-on a -1-nek felel meg. Például az

IF B THEN ;'Nem nulla' ELSE ;'Nulla'

utasítás értelemszerű eredményt ad, míg a

W%=2%+(2*INT(A%/2)=A%)

utasítás hatására a W% értéke 2 lesz, ha az A% értéke páratlan, és 1 lesz, ha az A% páros. Először ugyanis a zárójel értékelődik ki, amelynek értéke -1, ha az egyenlőség fennáll, azaz A% páros, és 0, ha az egyenlőség nem igaz, majd ez az érték adódik hozzá a 2-höz.

Mivel a programban nem voltak modulok, ezért lokális változók használatára sem volt lehetőség, azaz minden változó globális volt.

Programszerkezet[szerkesztés]

A sorok szigorúan számozottak voltak és hagyományosan tízesével, ritkábban ötösével számozták őket, hogy utólag be lehessen szúrni programsorokat. Szükség esetén a REN paranccsal át lehetett számozni a programsorokat, és egy sorban több utasítás is állhatott kettősponttal elválasztva. A végrehajtás a legkisebb sorszámú sortól indult, és alapvetően a sorszámok szerint haladt. A programfutást befolyásoló utasítások:

  • Ugrás: GOTO
  • Alprogram hívása és visszatérés: GOSUB, RETURN
  • Feltételes ugrás, illetve szubrutinhívás: ON GOTO, ON GOSUB (ezek hatására az ON utáni kifejezés értékétől függően egy megadott sorszámlistából választotta ki azt a sorszámot, ahol a vezérlés folytatódott)
  • Ciklus: FOR (tetszőleges lépésköz megadható); a feltételes ciklus csak az IF és a GOTO utasítások segítségével volt szimulálható.
  • Program vége (nem kötelező): STOP, END (a STOP hatására megőrzi a változók értékét, míg az END törli a változókat és lezárja az állományokat. A legmagasabb sorszámú utasítás elérésekor automatikusan végrehajtódik egy END.
  • Hibakezelés: ON ERROR GOTO

Felhasználói függvényt csak egysoros képlettel lehetett definiálni, egyszerre legfeljebb 26-ot. Például a DEF FNA(X)=3*X**2+4*X-9 utasítás a 3x²+4x-9 polinomot definiálja. Alprogramszerű, külön modulban elhelyezkedő függvény megvalósítására nem volt lehetőség, azt a GOSUB utasítás és globális változók segítségével lehetett szimulálni.

Mivel a GOTO és a GOSUB is megadott sorszámra ugrott, lehetőség volt az úgynevezett „rácsorgás” technikájának alkalmazására, amikor egy programrészletnek több belépési pontja is van. Ez a programszerkezet nem ösztönzött a strukturált programozásra.

Elágazásra az IF-THEN-ELSE szerkezetet lehetett használni. Egy THEN vagy ELSE után több utasítás is állhatott kettősponttal elválasztva, de csak egy sorban. Hosszabb utasítássorok futtatásához a GOTO vagy GOSUB utasítást kellett elhelyezni valamelyik ágban. Érdekesség, hogy ha a THEN vagy az ELSE után közvetlenül egy ugró utasítás állt, akkor a GOTO-t el lehetett hagyni; az

IF A=B THEN 100 ELSE 180

utasítás tehát ekvivalens az

IF A=B THEN GOTO 100 ELSE GOTO 180

sorral.

Többszörös elágazás közvetlenül nem volt, de a fent említett ON GOTO és ON GOSUB utasításokkal lehetett megvalósítani. Például ha az A% változó lehetséges értékei a [-1;+3] zárt intervallumban vannak, akkor az

ON A%+2 GOSUB 450, 620, 700, 760, 850

utasítás hatására a sorszámok rendre hozzárendelődnek az A% lehetséges értékeihez, tehát A%=2 esetén a negyedik helyen felsorolt 760-as soron folytatódik a végrehajtás.

Története[szerkesztés]

Az első modell 1978 augusztusában jött ki és kezdetben nagy népszerűségnek örvendett Svédországban. Az ABC 80 a személyi számítógépek gyorsan növekvő piacán nagy részesedésre tett szert köszönhetően annak, hogy svéd nyelvű irodai szoftvert kínáltak hozzá. Jóllehet az ABC 80 hívei a gép jó BASIC-jére és jól használható bővítési lehetőségeire hivatkozva később is megpróbálták a gép népszerűségét fenntartani, azonban ez nem sikerülhetett a színes grafikával és jobb hangminőséggel ellátott játékgépek ellenében, amelyek a 80-as évek elején kerültek a piacra. Nem változtatott ezen a tényen az sem, hogy ekkor már egy olcsóbb verziót is kiadtak az ABC 80-ból, ami az eredeti fekete-fehér monitor helyett hagyományos televízióval is működtethető volt.

1981-82-ben állami megrendelésre 112 db ABC 80 Magyarországra érkezett az iskolaszámítógép program keretében.[1] Bolti forgalomba nálunk nem került.

A Luxor néhány évig még meg tudta tartani az irodai felhasználás piacán a gépet az ABC 800 sorozattal, aminek több memóriája és jobb felbontású grafikája volt. 1985-ben a Luxor megpróbálta felvenni a versenyt az irodai gépek piacán az IBM PC-vel is a jobb sorsra érdemes ABC 1600 és ABC 9000 sorozattal, amelyek már UNIX alapú gépek voltak, de ez a próbálkozás már kudarccal végződött.

Jegyzetek[szerkesztés]

Kapcsolódó szócikkek[szerkesztés]

További információk[szerkesztés]