Szinkronban az idővel - Az Enterprise 128
Még egyszer az Enterprise-ról
"Kis karácsony, nagy karácsony..." - Mikrogépek, makroárak
Szerviz a város peremén...
Az ENTERPRISE-al hosszú távon számolhatunk
Csatlakozzunk, de mivel?
Válaszoltak a tulajdonosok
Enterprise - vállalkozás, avagy miért plusz a PLUS?
Fordítás vagy értelmezés?
Mit tud a Forth?
Mit tud a C nyelv?
Fedezzük fel együtt!
SPOKE-SPEEK
Érdekes görbék Enterprise gépre
Animációs boszorkánykodás
Hívja önmagát!
Hol az INPUT? Itt az INPUT!
Egy kis botkormányosdi
Memóriaböngésző
Kalandozások a karaktermemóriában
BASIC programok tárolása a memóriában
Elforgatott ellipszisek
Escape szekvenciák mentése file-ba
EXOS gyakorlatok
EXOS példák
Mankó a gépi kódhoz
Fej vagy írás
Csipkés RND
"Önindítós" BASIC programok
Mi a manó?
Megkérdeztük az ENTERPRISE-ról
Egy gép száz bajt csinál? - TVC

Szinkronban az idővel - Az Enterprise 128
A gép szülőhazája Nagy-Britannia. Ennek ismeretében egy kicsit meglepett, hogy a Centrum Áruházak által forgalmazott Enterprise-oknak német billentyűzetük van. Ez azt jelenti, hogy a számítógépeknél megszokott billentyűzethez képest a Z és az Y helyet cserélt, és néhány jel (például a :, ;, < , > , _ ) is máshova került.
Az Enterprise 128-nak egyébként kiváló tulajdonságai vannak, hiszen mint a neve is mutatja, 128 kbájt RAM-ot tartalmaz, s ez akár 4 Mbájtig is bővíthető. A központi egysége egy Z80A mikroprocesszor, amelynek órajele 4 MHz. A képernyőfelbontás sem csekély: 672 x 512 képpont: Mindehhez 256-féle színárnyalat használata lehetséges, és ha úgy tetszik, a színeket magunk is kikeverhetjük a három alapszínből. Beépítettek egy négycsatornás sztereó hanggenerátort is, csatornánként nyolc oktávval. Továbbá: első ránézésre láthatjuk, hogy mint a Videoton TV-Computernél, e gépnél is beépített nyolcirányú botkormány szolgálja a kényelmes kezelést.
Ez a hasonlóság egyébként nem véletlen, hiszen a TV-Computert is az Enterprise 128 alkotója tervezte, igaz; egy kicsit korábban. A perifériákat igen rugalmasan kezeli, nemzetközi karakterkészlet is van benne, amelyben számos magyar ékezetes betű is fellelhető. A BASIC utasításokat átnézve, a BASIC fordítója is kitűnőnek látszik, hiszen kb. 300 utasítást, illetve függvényt ismer. Beépített szövegszerkesztőt is tartalmaz, és akárcsak a Spectrumok, hálózatba is köthetők a gépek (összesen 32 darab).
Az utasítások számának megfelelően sokféle hibaüzenetet kaphatunk. Alapállapotban ezeket németül írja ki a gép, de ha kiadjuk az :UK parancsot, akkor angolul kapunk visszajelzést, sőt ekkor a billentyűzet is normál angol formátumot vesz fel.
Különleges érték, hogy a nagyobb gépekhez hasonlóan egyszerre több (maximálisan 128) BASIC programot tárolhatunk a memóriában. Természetesen csak akkor lehet egyszerre ennyi program a gépben, ha elegendő a memória, mert amikor egy program szerkesztését megkezdjük, a rendszer lefoglal kb. 10 kbájtot. És bár az első program mindössze 42 kbájt, a többi pedig csupán 32 kbájt lehet, de a programok hívhatják egymást, és paraméterek átadására is van mód.
Első benyomásra tehát ez a gép az eddigi legjobb a házi számítógépek kategóriájában, és ehhez képest az ára sem túl magas magnóval együtt 16 900 forint.

A gép kívülről...
Bevallom őszintén első pillantásra kicsit megijedtem, de már megbarátkoztam az alakjával. Nem úgy a billentyűzettel. A már említett helyváltozásokon kívül kényelmetlennek tartom a billentyű megnyomását is. A billentyűzet tartósságának kipróbálására még nem volt lehetőségem, de úgy érzem, nem való tartós igénybevételre (játék). Felül 8 darab funkciógomb kapott helyet, amelyeknek a C 16-hoz hasonlóan alapállapotban is szerepük van; azaz bizonyos utasításokat nem kell begépelnünk, hanem ehelyett elég a megfelelő funkciógomb kezelése.
A funkcióbillentyűk mellett található a PAUSE gomb, amivel megállítható, majd újraindítható a rendszer (listázás, programfutás stb.) A jobb felső sarokban van a STOP gomb; amely a programmegszakításra szolgál. Jobb oldalon helyezkednek el továbbá a program szerkesztésére szolgáló ERASE, DEL, INS és ENTER billentyűk is; ezekről később még szó lesz. Ugyancsak itt látható az ALT gomb. Ha ezt egy másik billentyűvel egyszerre nyomjuk le, megjeleníthetjük a nemzetközi karaktereket. A SHIFT gombból szokás szerint kettő van. Bal oldalon kapott helyett a CTRL, a TAB és az ESC gombon kívül a LOCK billentyű, amely nagymértékben megkönnyíti a munkát, ugyanis a SHIFT-tel vagy az ALT-tal együtt lenyomva egy olyan módba léphetünk, ahol csak egy billentyűt kell lenyomnunk, és mégis úgy funkcionál, mintha egyidejűleg nyomnánk a SHIFT-et vagy az ALT-ot.
Ha a CTRL-t és a LOCK-ot nyomjuk meg egyidejűleg, akkor az ún. CAPS módba térünk át, ami azt jelenti, hogy mindent nagybetűkkel írhatunk, míg az egyéb billentyűk (például a számok) lenyomásakor a normál kép (a szám) jelenik meg.
A billentyűzet hátrányát kompenzálja bizonyos mértékig az, hogy a különböző funkciókat ellátó gombok különböző színűek; valamint az is, hogy a kurzor a beépítet botkormánnyal irányítható.
A csatlakozók a gép két oldalán és a hátsó részen helyezkednek el, és jó részük igei nyitott; hiszen maga a panel szolgál erre a célra. Bal oldalon van a BASIC modul helye. A BASIC fordító ugyanis -hazánkban elterjedt házi számítógépektől eltérően - nincs beépítve a gépbe. Jobb oldalon kivezették a rendszer minden vezetékét. Ide csatlakozik a lemezmeghajtó vezérlőkártyája, a memóriabővítő és az egyéb programnyelveket (Pascal, LISP FORTH stb.) tartalmazó modulok. Hátul található a két külső botkormány; a nyomtotó, a monitor és a tévécsatlakozó, és itt van lehetőség a hálózatba kötésre is. Ugyancsak a hátsó részen van a magnócsatlakozó, amin keresztül a gép képes megállítani és elindítani az erre alkalma magnók motorját. A magnókimenetről erősíthetjük fel a gép által keltett hangot, ami egyébként csak a beépített hangszórón hallhatunk. Ugyancsak hátul van a RESET gomb, amelyről még lesz szó a későbbiekben.
Már csak egyetlen csatlakozó maradt hátra, a tápegységé, amely szintén a gép hátulján van, és egyben a bekapcsolásra is szolgál, hiszen nincs külön ki/be kapcsoló. Megvallom, nem tudom, milyen megfontolásból hagyták ezt el. Ilyen megoldást még csak a Spectrum-nál alkalmaztak.

... és belülről
A Z80-as mikroprocesszoron kívül két fontos, speciális integrált áramkört építettek be. Az egyik a NICK chip, ami egy grafikus processzor, órajele 14 MHz, és feladata a képernyőszerkesztés. A másik a DAVE, amely több funkciót lát el. Van benne egy hanggenerátor, frissíti a memóriát, kezeli a billentyűzetet. Az utóbbi kettő nem túlzottan érdekes, de a hanggenerátor igen. Négy csatornát használhatunk, és sztereó hangkeltésre is képes, olyan módon, hogy külön megadhatjuk a jobb, illetve a bal csatorna hangerejét. A beépített hangszóró persze csak mono hangok kibocsátására képes, de a magnókimeneten is megjelenik a hanggenerátor jele, így ide fejhallgatót vagy erősítőt csatlakoztatva már élvezhetővé válik a sztereó hang.
Bár először egy kicsit bonyolultnak tűnik a hangkeltés, de ha valaki megszokja, akkor úgy gondolom - jól tud vele dolgozni. Részletesebben a BASIC leírásánál írok erről, hiszen először mindenképpen valamilyen magas szintű programnyelvből érdemes kipróbálni, és talán a megértése is könnyebb.

A videoprocesszor néhány tulajdonságát érdemes közelebbről megismerni. Hasonló dolgokra képes, mint az Atari 800XL ANTIC chipje, de talán annál is sokrétűbb, és sokkal nagyobb felbontást tesz lehetővé.
Ötféle grafikus üzemmód van : normál karakteres, 80 karakteres, melyet szoftver segítségével állít elő a NICK, nagy felbontású (HIRES), alacsony felbontású (LORES) és attributum (ATTRIBUTE) grafikai módok. A karakteres módokban kevés szín közül lehet választani, de a grafikus módokban döntés kérdése, hogy 2, 4, 16 vagy 256 színű üzemmódot akarunk-e. Természetesen a színek számának növekedésével csökken a felbontás. A LORES és a HIRES grafika között is csak a felbontásban van különbség. Az attributum üzemmód azt jelenti, hogy külön színmemória van, és így minden bájtra külön háttér- és rajzolás-szín választható.
Hasznos tudni, hogy a keretet csak az operációs rendszer teszi a képernyőre, és ennek kikerülésével olyan képet szerkeszthetünk, amelyen a keretre is lehet írni.
A videoprocesszor utasításai egy ún. Line Parameter Table-ben (LPT) vannak. Itt minden sorra kiválasztható a grafikus üzemmód, a színek száma, a paletta és az információ memóriabeli helye.
A gép felépítésében azonban nem tetszik, hogy néhány helyen átkötést alkalmaztak két kivezetés között.

A BASIC
Az Enterprise 128 BASIC fordítója több mint 300 utasítást ismer. Már ebből is látszik, hogy az eddig elterjedt gépek fordítóihoz képest nagyobb teret biztosít fantáziánk kibontakoztatására.
Kezdjük talán azzal, hogy programunk írása közben egy szövegszerkesztőben dolgozunk, amit az operációs rendszer tesz lehetővé számunkra. Ez többek között azért kényelmes, mert például amikor egy programot listázunk és az nem fér ki a képernyőre, nyugodtan hagyhatjuk kifutni a listát: később a kurzor felfelé való mozgatásával bármikor visszamehetünk a program első sorára is - persze csak meghatározott hosszúságú program esetében. Még nagyon sok-más előnye is van ennek a szövegszerkesztő rendszernek: például a tetszés szerint beállítható tabulátor, a margók változtatása, vagy a teljes sorok képernyőn való mozgatása.
Ide tartozik még az is, hogy egy betűt kétféleképpen is törölhetünk. Az egyik módszer az ERASE billentyűvel - úgy, mint a C64-en: a betű mögé állítva a kurzort -, a másik pedig a DEL billentyűvel, ahogy a Spectrumon: a betű elé állva a kurzorral. Természetesen ugyanilyen törlést alkalmazhatunk egy teljes szóra (a legközelebbi üres karakterig töröl) az ALT vagy a CTRL gomb és a törlőbillentyű egyidejű lenyomásával. Sorokat is törölhetünk, ha a törlőbillentyűt a SHIFT-tel együtt nyomjuk le.
A szerkesztőnek egyébként még számos jó tulajdonsága van, de ezekre itt nem térek ki, hiszen a felhasználói kézikönyvben megtalálhatók.
Mivel ez a gép összességében lényegesen több lehetőséget nyújt, mint az eddigiek, ezért nem írok az általános utasításokról, csupán az újdonságokat emelem ki, illetve rámutatok a gyengékre is.
A BASIC maximum 31 karakteres változóneveket képes azonosítani. A változóknak azonban nincs kezdeti értékük, tehát ezt egy értékadással vagy egy definiálással be kell állítanunk: A változók definiálása a NUMERIC és a STRING utasításokkal történik, és ekkor 0 a kezdeti érték. Az értékadásnál nem kell beírnunk a LET utasítást, a gép azonban automatikusan beírja ezt a programba.
A szöveges változók maximális hossza 127 karakter (megjegyzés: ez az érték hibás, valójában 254 karakter hosszú lehet). Ez nagyon kevés, mert például a Commodore gépeken 255 karakter, a Spectrumon és az Atari 800XL-en pedig bármilyen hosszú karakteres változókat használhatunk. Arra azonban ügyelni kell, hogy a változók hosszúsága egy karakteres tömb dimenzionálásakor a maximális értéket veszi fel, ezért ajánlatos például a DIM A$(40) utasítás helyett a STRING a$(40)*8 utasítás kiadása, ahol a * utáni szám a változó maximális hosszúságát jelenti.
Ciklusok szervezésére rendelkezésre áll a DO-LOOP és a FOR - NEXT típus egyaránt.
Feltételszabásra a már megszokott IF THEN - ELSE-en kívül az IF - END IF szerkezet is megfelel, ahol nem kényszerülünk arra, hogy az utasításokat egyetlen sorba írjuk. Segítségünkre van még a SELECT CASE - END SELECT szerkezet is, amivel egy szám változó értéke alapján tudunk elágaztatni.
A DEF név utasítás szintén újdonságnak számít BASIC-ben. Ezzel egy utasítássornak nevet adhatunk, majd a CALL névvel bármikor végrehajtathatjuk azt. Természetesen a szokásos függvénydefiníciót is ismeri a gép. Mindkét esetben lehetőség van paraméterátadásra. Arra azonban vigyázni kell, hogy ha egy változót csak egy ilyen függvényben definiáltunk, akkor azt a főprogram nem tudja használni.
Ritka a hasonló kategóriájú gépek körében, hogy a BASIC megszakításkezelésre alkalmas. Az Enterprise 128-on ez lehetséges. Először is írnunk kell egy hibakezelő rutint, majd meg kell adnunk a főprogramban, hogy melyik rutint használja a gép hiba esetén. Ezután be kell állítani egy adott változót, így megadhatjuk, hogy hány másodperc múlva kérjük a megszakítást. A számláló lejártával egy bizonyos kódú hibát kapunk, és a vezérlést a hibakezelő rutin kapja meg. Ily módon persze lehetőség van egyéb hibák kezelésére is. Ha például a program egy hibánál hibaüzenettel leállna, ez nem következik be, hanem mi dönthetjük el, hogy mi történjék. Segítségünkre van ebben az, hogy speciális változókban megkapjuk a hiba sorát és típusát.
A grafikát teljes mértékben támogatja a BASIC. Pontok, vonalak és ellipszisek rajzolhatók, de nem akárhogyan. Kiválasztható ugyanis a vonalhúzás módja (normál, AND, OR, XOR) és stílusa, ami szaggatott vonalakkal való rajzolásra ad lehetőséget. Módunkban áll zárt alakzatok kifestése, és használhatjuk a LOGO nyelvből ismerős teknősbéka-grafikát is, ahol az elfordulás szöge fokokban és radiánban egyaránt megadható.
Szintén a grafikát támogatja az ablak-technika is. Tetszőleges méretű és grafikus üzemmódú ablakokat definiálhatunk, s miután egy video-ablaknak egy számmal ellátott csatornát kell nyitnunk, az ablakra úgy rajzolhatunk, hogy a csatornaszámot beírjuk a rajzolóutasításba. Egy ablakot bárhol elhelyezhetünk a képernyőn, de mivel erre külön utasítás szolgál; ezért megtehetjük, hogy úgy rajzolunk egy ablakra, hogy az nem látható, majd amikor kész a rajz, láthatóvá tesszük. Ezáltal gyors mozgások és változások jeleníthetők meg, igen látványosan.
Nemcsak a video-ablakokat, de szinte minden eszközt csatornákon keresztül érhetünk el. A csatornák így igen fontos szerepet töltenek be ezen a gépen; s úgyszólván el sem hagyhatók egy-egy programból.
A hanggenerátor programozására csupán két utasítás szolgál, de ezek annyira rugalmasak és változatosak, hogy elegendők a hangkeltéshez. Az egyik, az ENVELOPE a hullámformát választja ki, a másik, a SOUND pedig a hangkeltésre szolgál. A gép arra is képes, hogy zenélés közben az rajzoljon. Ha többszólamú zenét írunk; egyszerre is indíthatjuk őket. A hang stílusának kiválasztásával különböző torzításokat érhetünk el. Így állítható elő például a szintetizátor hangja.
A beépített függvények mennyiségétől elámultam. Olyanokat találtam köztük, amilyeneket még sehol sem láttam. Most csak néhányat sorolok fel. Itt van mindjárt az ANGLE, amely egy egyenes iránytangensét számítja ki. Beépítették a trigonometrikus függvények ellentettjét és hiperbolikus függvényeit. A fokokat átszámolja a gép radiánba és vissza. Számok felfelé és lefelé kerekítésére egyaránt lehetőség van. A természetes alapú logaritmuson kívül a tízes és a kettes alapú is rendelkezésre áll. A maradékos osztást kétféleképpen kérhetjük: az egyik egész, a másik tört maradékot számol. Sokféle új függvény szolgál karakteres változók és tömbök kezelésére is. Egy "új" függvényt is találtam: aki ismeri a BASIC nyelvet, biztosan találkozott már az ASC függvénnyel; ennek itt csak a neve más (ORD), egyébként mindenben megegyezik a megszokottal.
A gépi kódú rutinok használata is kényelmes. A rutinoknak nevet adhatunk, s utána ezzel a névvel hivatkozhatunk rájuk. A HEX$ függvény segítségével a hexadecimális bájtsorozatban adhatjuk meg a gépi kódú programot.

Az EXOS
Az EXOS az Enterprise 128 ki/bemeneti rendszere. Rutinjainak hívása az RST 30h gépi utasítással történik, ami után egy adatnak kell állnia. Ez az adat határozza meg a funkciót. Az EXOS változóinak írása egyébként BASIC-ből is lehetséges a SET utasítással.

A perifériák
Perifériák tekintetében is rugalmas a gép. Bármilyen magnetofon csatlakoztatható hozzá, s amelyik távvezérelhető; azt irányítja is.
A lemezmeghajtó vezérlőkártyájához mindenféle párhuzamos lemezmeghajtót minden beavatkozás nélkül tudunk csatlakoztatni. Ha soros lemezmeghajtót (például VC-1541-et) akarunk csatlakoztatni a géphez, akkor egy programra van szükség, amely kezeli azt. A DOS egyébként nagyon intelligens, hiszen többféle lemezformátumot képes olvasni, többekközött az IBM-ét is.
A printer feliratú csatlakozón keresztül szinte mindenféle nyomtató hozzáköthető az Enterprise-hoz: például az EPSON nyomtatókat is képes kezelni.

Végezetül
Mindent összevetve a gép kiemelkedik a házi számítógépek kategóriájából, s valahol a C64 és az Amiga között helyezkedik el. Az egyetlen nagyobb probléma az, hogy a kiegészítő egységek és perifériák drágák és nehezen szerezhetők be. Igaz, hogy bármilyen tévére ráköthető, de az ilyen nagy felbontás megjelenítésére alkalmas monitor ára hazánkban több mint 100 ezer forint. A nyomtató és a lemezmeghajtó sem olcsó. Valószínűnek tartom azonban, hogy ha nagyobb mennyiségű, tízezernél több Enterprise-t sikerül eladni, akkor valamelyik cég importál hozzá lemezmeghajtót is, hiszen abból is elég sokat tudnának eladni ahhoz, hogy viszonylag olcsón lehessen forgalomba hozni. Nyomtatónak megfelel a Seikosha SP180 is. Ezt a kis nyomtatót, amely tudásban megközelíti az EPSON 80-ast és 100-ast, már nálunk is lehetett kapni 24 300 forintért. Persze ki tudja, lesz-e még belőle ezután is.
Ami a dokumentációt illeti: az a felhasználói kézikönyv, amelyet a géphez adnak, messze felülmúlja a megszokott szintet, bár egy-két hiba ebben is felfedezhető. Ha azonban valaki nem akar BASIC-ben programozni, vagy esetleg szeretné belülről megismerni a gépet és gépi kódban programozni, akkor nehéz dolga van. Az Enterprise-ról ugyanis külföldön is kevés dokumentáció jelent meg.
A géphez egyelőre 49 program kapható. Ezek között található felhasználói és játékprogram egyaránt. Tulajdonképpen kezdetnek ez jó, hiszen a Commodore is így kezdte. A további szoftverek megírása a magyar programozókra vár.
Az Entetprise 128 nagyobb gépek termináljaként is működtethető, az összekötés nem túl bonyolult. A gép kiváló programozás tanulására, többféle magas szintű programnyelven. No és természetesen tökéletesen megfelel otthoni szórakozásra, játékra.

(1987 szeptember) Romvári Gábor

Még egyszer az Enterprise-ról
Kopácsy Vilmos számítástechnikus olvasónk számos észrevételt Szinkronban az idővel című, az Enterprise gépet ismertető cikkünk tartalmával kapcsolatban. Kopácsy Vilmos az 'A' Stúdió Szakcsoportnál dolgozik. Ők kapták a megbízást a Novotrade-tól és a Centrum Áruházak Vállalattól az Enterprise géphez való szoftverek és perifériák fejlesztésére. Következzenek az észrevételek:

  1. Az angol és német gép közötti különbség
    Kétfajta gépet hoztak forgalomba: egy részük német, a többi angol klaviatúrás. Ennek oka, hogy a gépeket más-más forrásból szerezték be. (A gépek beszerzésének részletkérdéseiről nincs információnk, és nem kutatjuk az üzleti hátteret.) A felhasználói kézikönyv 12-13. oldalán tájékoztatást kap a különféle gépekről is (igaz, röviden - a szerk.). A billentyűzetet tekintve a két géptípus között lényeges különbség nincs, viszont a gépekhez mellékelt (tartozó) BASIC interpreterek közötti igen jelentős. Erről a :HELP parancs begépelésével győződhetünk meg.
       Angol BASIC:
       - WP
       - BASIC
       Német BASIC:
       - VSAVE
       - VLOAD
       - VDUMP
       - BRD
       - UK
       - WP
       - BASIC
    Az angol cartridge esetén a rendszer csak a BASIC interpreterrel bővül, a német cartridge esetén öt többletparancs áll rendelkezésünkre. A VSAVE, VLOAD, VDUMP a videocsatornák kimentését, betöltését, illetve ezek kinyomtatását teszik lehetővé. A BRD és UK parancsok a klaviatúra és a hibaüzenetek nyelvének (angol, német) kiválasztására szolgálnak. A fejlesztés során észleltünk néhány paraméterezési különbséget a két BASIC egyes utasításai között. A két interpreter méretkülönbsége is jelentős: a német BASIC 32K, amíg az angol 16K.

  2. A hanggenerátorral kapcsolatban
    A hanggenerátor (csak) 3 hang + 1 zajcsatornával rendelkezik. A hullámformát nem a felhasználó választja meg (ez mindig négyszögjel). A burkológörbét (ADSR) lehet programozni.

  3. A PAUSE (HOLD) billentyű használata
    A PAUSE (HOLD) billentyűvel a rendszer alatt futó programok végrehajtását függeszthetjük fel tetszőleges ideig - a gomb ismétel leütéséig.

  4. A programmodulok
    A programnyelvet tartalmazó (LISP, FORTH, ASMON) modulokat a gép bal oldalán lévő CARTRIDGE PORT-ba kell csatlakoztatni. A PASCAL CARTRIDGE a levélíró szerint nem létezik és az eredeti szoftverajánlatban sem szerepel.

  5. A RESET gomb és a ki-be kapcsoló
    A gépen azért nem kapott helyet egy külön ki-be kapcsoló, mert az Enterprise "intelligens" RESET gombbal van ellátva. Ha egyszer nyomjuk meg, akkor egy melegindítás következik be, amely a memóriában tárolt adatokat, valamint a rendszerváltozókat nem változtatja meg. Kétszeri lenyomás hidegindításnak felel meg, ami a gép ki-be kapcsolásával egyenértékű.

  6. Mit csinál a DAVE chip
    A DAVE chip a következő funkciókat látja el:
    - hang generálása (3 hang + 1 zajcsatorna)
    - memórialapozások vezérlése
    - megszakítások vezérlése
    - RESET vezérlése
    - 1 MHz-s órajel generálása
    - Wait ciklusok generálása
    Ezeken kívül a DAVE chip generálja a 4 MBájt kezeléséhez szükséges A0-A15-ön felüli címvezetékeket (A16-A21, CART1, CART2), valamint a három I/O strobe jelet a B5, B6, B7-es portok számára.

  7. A Line parameter table kezelése
    Az LPT-vel definiálhat a felhasználó egy tetszőleges formátumú képernyőt. Az LPT ún. LINE PARAMETER BLOKK-okból áll, és a fizikai képernyő egy sorára vonatkozó adatokat tartalmazza. Így csinálhatjuk meg, hogy látszólag a keretre írunk, valójában pedig az LPT-t egészítettük ki 9 darab LTB-vel, amelyeket karakteres üzemmódba állítottunk. Az operációs rendszer az LPT-ben meghatározott képernyőt kezeli, a keret méretét pedig a LPB-ben definiáljuk. A képernyő megjelenítését a NICK chio vezérli.

  8. A BASIC rövid ismertetése
    Az Enterprise gépben BASIC interpreter van. A videocsatornák megjelenítésénél a felhasználó csak az Y irányú paramétereket adhat meg, az X irányú elhelyezést a rendszer kezeli, illetve a videocsatorna méretétől függetlenül mindig középre helyezi. Az Enterprise minden eszközt csatornákon keresztül ér el.
    A BASIC nyelvben ismert az ORD függvény, amelyet az Enterprise is használ. Az Enterprise BASIC interpretere a MICROSOFT 5.0 BASIC-jének változata. (Az MS-BASIC nem ismeri az ORD függvényt - a szerk.)
    Az Enterprise BASIC interpretere felhasználja az EXOS nyújtotta lehetőségeket. Az EXOS - Expandable Operating System - bővíthető operációs rendszert jelent. A rendszert a gépi kódú programok az alábbiak szerint hívhatják:
       RST 030H
       DEFB xxh

    ahol xx a meghívott funkció kódja.
    A rendszerfunkciók kódjai megtalálhatók a Felhasználói Kézikönyvben. A paraméterátadások az A, BC, DE regiszterekben történnek.

  9. A perifériákkal kapcsolatban
    A lemezvezérlő kártya SHUGART 401-es szabványnak megfelelő egységeket képes kezelni. A lemezvezérlő operációs rendszert EXDOS-nak hívják. A lemezvezérlő kártya képes 40 és 80 sávos, illetve egyoldalas és kétoldalas meghajtókat kezelni, de az adatrögzítés mindig MS-DOS formátumú. Ez annyit jelent, hogy az Enterprise-zal felírt lemezeket az IBM PC-vel olvasni tudjuk és fordítva.
    A perifériák áráról nem nyilatkozhatott a szerző, mivel azokat jelenleg fejlesztjük. (Reméljük, hogy igazodni fog a gép szerény árához - a szerk.)
    A BÁV üzleteiben egy 80 karakteres monochrom monitor 8-15 ezer Forintba kerül, a színes változat ára 25-40 ezer Forint.
    A printercsatlakozón keresztül csak Centronics felülettel rendelkező nyomtatókat illeszthetünk. A serial csatlakozón keresztül viszont bármilyen soros (RS232, RS422) szabványnak megfelelő perifériát lehet illeszteni (sornyomtató, modem stb.)

(1987 november) Kopácsy Vilmos

"Kis karácsony, nagy karácsony..." - Mikrogépek, makroárak
Kinek milyen. Van akinek gazdag ajándékokat hoz, utána kellemes emlékek maradnak, míg másoknak szegényesebb, szolidabb. Vannak karácsonykor boldogok, és vannak szorongók, magányosak. Ahány család, annyiféle karácsonyi program. Ami közös az a faállítás és az ajándékozás. Addig azonban végig kell járni a vásárlás stációit, elviselni a nyűgét, eldönteni, hogy pénztárcától függően ki milyen meglepetést szerezzen hozzátartozóinak. És akkor még egyáltalán nem biztos, hogy az elhatározás nyomán megtalálja az elképzelt ajándékot az üzletben, vagy hogy tudja az ajándékozó, mire hol lel. Itt most azoknak kívánunk segíteni, akik ifjabb vagy idősebb szeretteiknek számítástechnikai berendezést, ahhoz kiegészítőt, illetve programokat akarnak ajándékozni. Szeptemberi körsétánkon felkerestünk néhány üzletet, ahol ugyan pontos adatokkal nem szolgálhattak e termékek áráról, sem mennyiségéről, de körülbelüli összegeket azért mondtak. Természetesen ajánlásunkban nem törekedhetünk a teljességre. Arra viszont igen, hogy megkíséreljünk metszetet adni arról, hogy mi és milyen áron kapható a boltokban.

Az V. kerület Múzeum körút 19-ben található Foto Elektronik reprezentatív üzlete. Hrabovszky Tibor boltvezető készségesen adta a következő felvilágosítást.
- A Commodore számítógépcsaládból Plus/4-et, C16-ot és C64-et megfelelő mennyiségben kínálunk, és van választékunk ezekhez lapcsolható perifériákból is. A Plus/4 magnóval együtt 18 ezer, a C16 magnóval együtt 10-11 ezer, a C64 ugyancsak magnóval 24-26 forint lesz. Ajánlunk ezekhez a berendezésekhet lemezmeghajtót (az 1541-es típus ára 25-28 ezer forint), továbbá nyomtatókat. Ezek közül az MPS-803-ast 25 ezer forintért, a Citizen 120D típusút pedig minőségtől függően 38-42 ezer forintért. Monitorokat is árusítunk a karácsonyi nagy vásárkor: a színesek ára 40 ezer forint lesz, a Philips márkájú monokrom 16-18 ezerbe kerül.
A vastagabb pénztárcájúaknak szól a következő ajánlat. Eredeti IBM PC XT és AT - kiépítéstől függően - 500 ezer, illetve 850 ezer forinttól kapható. A kompatibilis XT ára 150 ezer forintnál, az AT-é 300 ezernél kezdődik. Mind a két típushoz ugyanazok a perifériák használhatók. Ennek megfelelően kínáljuk az EPSON FX-1000-es nyomtatót 115-130 ezer forint körüli áron, a PLOTTER HP7475A-t 400 ezer forintért. Ez utóbbi A/3-as formátumban hat színben rajzol.
Üzletünkben felkészültünk a különböző winchesterek és streamerek (például 10-től 80 Mbájtosig) és különféle számítógép-tartozékok, többek között nyomtatókhoz szükséges festékszalagok (800-1500 forint), floppyk (10 darabos, dobozonként 1000-4000 forint), kazetták árusítására. Forgalomba hoztunk számítógépes részegységeket is: például az IBM PC XT-hez kártyákat, vázat, tápegységet.

A Centrum-hálózat karácsonyra kínált termékeiről Pásztor Tamás rendszerszervező számolt be részletesen.
- Változatlanul árusítjuk - és remélhetőleg lesz belőle elegendő - az Enterprise mikroszámítógépet, 16 900 forintért, és ismét forgalomba hozzuk hozzá a korábban nagy sikert aratott és gyorsan szétkapkodott 15 legkeresettebb játékprogramot. Slágerlista alapján állítottuk össze a leginkább hiányolt játékok listáját, és ezeket igyekszünk pótolni. Újra kaphatók lesznek például a Sorcery , az Autóverseny, az Orient Express, a Beach Head és a sakk (Cyrius II) kazetták. Újdonságként 10 további játékprogrammal jelentkezünk a piacon, amelyeket reméljük tetszéssel fogadnak majd az Enterprise-tulajdonosok. Ezek közül csak példaként sorolom fel a Digitális pókot, a Newton almáját és a Hungaroring Forma-1 autóversenyt.
A fordítóprogramok árusításával bővíteni kívánjuk az Enterprise-hoz kapható programok körét. Így vásárolható majd assembler, LISP, Pascal illetve FORTH program. És ami bizonyára tetszést arat: üzletünkbe kerül az a speciális program, amellyel a Commodore perifériákat csatlakoztatni lehet az Enterprise-hoz. Ilyen lesz a VC-1541-es floppyhoz és a MPS-801-es mátrixnyomtatóhoz alkalmazható program. E termékünk árát még nem tudjuk. Azt viszont igen, hogy háromkötetes könyvsorozattal jelentkezünk. A Hetedhét Enterprise, az EXOS 2.1, EXDOS 1.3 és ISDOS című könyvek 150 illetve 300 forintért kaphatóak majd. Katalógust, programozási segédlet, ötleteket, a géphez trükköket és forráslistát tartalmaznak.
Végül különböző kiegészítőket és tartozékokat ajánlok az Enterprise számítógéphez: monitor csatlakozókábeleket 648 forintért, RS232C interfészkábelt 648 forintért, s ugyanennyiért Centronics interfészkábelt nyomtatóhoz. Az Enterprise, Sinclair hálózati mikrokapcoló ára 618 forint. Segítségével ki- és bekapcsolhatóvá tehető a számítógép. A hobbi kategóriájú DATACOOP PRT-42 BABY típusú mátrixnyomtató kábellel együtt 22 950 forintba, a professzionális EPSON-RX 80-as mátrixnyomtató 49 950 forintba kerül. Mindkettő a szabványos magyar ábécé betűit is nyomtatja.

A VII. kerület, Tanács körút 3/A-ban a nagy műszaki áruházban Martinov László üzletvezető és helyettese, Erki Imre adott tájékoztatást. Mindketten elmondták, hogy a szeptemberi adatok nem véglegesek, csupán informatív jellegűek.
A Sinclair ZX 128K-s berendezés a cég legújabb terméke. Mi 33 ezer forintért árusítjuk. A C64 régebbi típus, így ára várhatóan csökken, 25-30 ezer forintért kapható majd. A Commodore 128 ma még drágább, de karácsonykor valószínűleg 55 ezer forint lesz az ára. A perifériákból a következőket ajánlhatjuk. DATASETTE magnó - a C64-hez - eredeti és hazai gyártmány 4 ezer forint körüli áron kapható. A Sinclair ZX 128K géphez kínálunk kis lemezmeghajtót 10 ezer forintért, és ugyanennyiért árusítjuk az Interface I-et. Új típus a 128K-s Plus 2-es Sinclair gyártmányú, beépített magnóval rendelkező számítógép 35 ezer forintért.
Commodore gépekhez 1541-es lemezmeghajtó 30 ezerért, illetve az 1541C típus 35 ezerért vásárolható nálunk. Ugyanehhez a számítógéptípushoz nyomtatóink is vannak: az MPS-803-as 33 ezer forint, a Citizen 120D 38 ezer, a Seikosha SP 180 szintén 38 ezer forintba kerül. A Panasonic KXP 1090i típusú nyomtató 45 ezerért, az MPS-802-es típus 49 ezerért kapható. Természetesen valamennyi nyomtatónkhoz festékkazettákat is forgalmazunk, 1-2 ezer forint közötti áron.
A floppyválaszték bőséges. Általában 10 darabos csomagolásban kerülnek forgalomba, de darabonként is megvásárolhatók. Egy-, illetve kétoldalas dupla sűrűségű floppyk 700-1500 forinttól kaphatók. Az ugyanilyen tulajdonságú márkásak viszont 2-4 ezer forintba kerülnek. A márkás 3M típusú 3,5", egyoldalas, dupla sűrűségű, darabja 800 forint. Széles skáláját kínáljuk a különböző kazettáknak, játékprogramoknak 300-1000 forint közötti áron. A Quick Shot I., II., IX. és X. botkormánytípusok ára 1000-3000 forint.
Az IBM PC XT és AT gépek eredeti kiépítéstől függően 500 ezer forinttól kaphatók. Az IBM PS/2-es modell 30 (a legújabb berendezés) 900 ezer forint. Az IBM PC XT/AT kompatibilis gép - 640k, multiprogramozhatóság, monokrom monitorral, flopyymeghajtóval (360k) - 105 ezer forint, s ugyanehhez a 20 Mbájtos winchester 60 ezer forint. Az IBM PC-hez kapható kompatibilis Philips monitorok ára 50 ezer forint.
A nyomtatók közül a Manesmann-Tally MT80 PC-t ajánljuk 49 ezerért és az EPSON FX-1000-et 114 ezer forintért. A Canon PC5 típusú fénymásoló ára 150 ezer forint.

A Skála Metró Kereskedelmi Leányvállalat Metro-Comp boltjában a VI. kerület, Jókai utca 40-ben Hatlaczki Tibor osztályigazgató a következőket mondta karácsonyi kínálatukról.
- Számítástechnikai termékeink közül az IBM PC XT/AT kompatibilis gépek, kiegészítőktől függően 140 ezer forinttól kaphatóak. Az ezekhez való nyomtatók választékából ajánlom az EPSON FX-1000-et (130 karakteres) 125-130 ezer forintért, illetve a Citizen 120D-t (kisebb írásszélességű, vagyis 80 karakteres) 40 ezerért.
A C64-et várhatóan 15 ezer (!) forintért hozunk forgalomba a karácsonyi vásár idejére. Ehhez a perifériák sem lesznek drágák, hiszen a floppymeghajtó 16-20 ezerbe, a Philips színes monitor 35 ezerbe, a Commodoere nyomtató pedig - a MPS-803-as típus - 28 ezerbe kerül majd. A Commodore 128 ára 49 ezer, a hozzá tartozó 1571-es floppymeghajtó szintén 49 ezer, a Citizen 120D (80 karakteres) nyomtató 40 ezer forint lesz. A termékekre általában fél-, illetve egy év garanciát vállalunk.
Alkatrészeket is árusítunk. Kaphatók majd az IBM PC XT-hez és az IBM PC AT-hez gépépítéshez alkalmas alkatrészek, melyek ára mindegy 10-15 százalékkal olcsóbb, mint a kész terméké.
Testvérboltunkban, a hozzánk közel eső Metro-Printben (V. kerület, Bajcsy-Zsilinszky út 78.) hasonló termékeket hasonló árakon hoznak forgalomba.

A Novotrade Octa Soft és a Novotrade Delta Soft új játék- és oktatóprogramokkal kedveskednek a számítógép tulajdonosoknak. Ezekről elöljáróban annyit, hogy áruk a cikk írásakor még nem volt végleges.
A Newton almája rejtvény-játékprogrammal (360 forint) valamennyi Commodore-on, Spectrumon, Videoton TV Computer-en és Enterprise-on szórakozhatnak tulajdonosaik. Külön érdekessége ennek az újdonságnak, hogy a programmal nyerni is lehet!
A Viktor Piktor (250 forint) játékkal 101 labirintus útvesztő járható be, s ezek falát festegetni, színezni is kell. Szegény Viktort kóborlása során szellemek üldözik. A program Plus 4-es és C16-os mikroszámítógépen futtatható. Az Elvarázsolt kastély (350 forint) Plus 4-re íródott, s azoknak ajánljuk, akik szeretik az izgalmas, kalandos játékokat. A Water Polo (450 forint) C64-es géphez használható. A vízilabda kedvelőinek nyújt elsősorban élvezetes szórakozást. A Kocka póker (340 forint) Plus 4-re íródott, s a hagyományos számítógépes változataként játszható.
Néhány oktatóprogramot is ajánlunk. Így például a Nyuszi olvasni tanít (950 forint) programot, melyet Plus 4-re és C64-re készítettek. A 6 kazettából álló csomaggal az alsó tagozatosokhoz kívánják közelebb vinni az olvasást. Szintén Plus 4-es illetve TVC számítógép tulajdonosok vehetik hasznát az Optika (290 forint) oktatóprogramnak. Ez a szoftver a felső tagozatos fizikaórák szemléltető eszköze lehet. A 3 kazettából álló Gyorsolvasó programot Plus 4-re (a programcsomag 500 forint) és C16-ra (420 forint a 3 kazetta) írták. Ígérik kiötlői, hogy 3 hét alatt a programmal az olvasás sebessége és megértési szintje javítható.
A Videoton TV Computer tulajdonosoknak készült a következő 2 program. Az Öt labdajáték (350 forint) a sport rajongóinak lesz üdítő szórakozás. A Bűvös négyzetek (280 forint) oktatóprogram az általános iskola 3. osztályától segít a matematika útvesztőiben eligazodni.
És végül egy különleges csemegét ajánlunk. Az irodai munka könnyítésére készítették a Deltex Plus-t (2500 forint), mely a Robotron írógépekhez illeszthető szövegszerkesztő cartridge.
Reméljük, mindenki megtalálja az ízlésének és pénztárcájának legmegfelelőbbet.

(1987 december) Krasznai Éva

Szerviz a város peremén...
Ellátogattunk a Professional Országos Számítógépszervizbe, ahol Gottfried Tibor, a lakossági szolgáltatásokat végző részleg vezetője az Enterprise-tulajdonosok egyre népesedő táborának szóló hasznos tanácsokat adott. Ezeket mi is olvasóink figyelmébe ajánljuk, mielőtt hibás(nak vélt) gépükkel a szervizbe rohannának.

Billentyűzet és botkormány
Talán sokan nem is tudják, hogy ha óvatosabban bánnak a kényesebb mechanikai részekkel, és az elektronikára vonatkozó néhány szabályt betartanak, rengeteg bosszúságtól kímélhetik meg magukat.
A gép használata során a billentyűzet és a botkormány van a legnagyobb igénybevételnek kitéve. Az Enterprise 128 billentyűzetének, az ún. fóliabillentyűzetnek egyik nagy előnye, hogy kis helyen elfér; ennek köszönhető a gép lapos kivitele. Hátrányai közül kiemelendő, hogy óvatos kezelést igényel. Ez persze nem azt jelenti, hogy úgy kell vigyázni rá, mint a hímes tojásra, és minden billentyű lenyomása előtt meg kell gondolni, nem fölöslegesen ütjük-e le. Csupán arról van szó. hogy ha kíméletesen bánunk a billentyűkkel, nem nyomjuk őket túl erősen, sokkal kisebb a valószínűsége annak, hogy tönkremennek. A gép egyébként minden billentyű leütését hangjelzéssel nyugtázza; így tájékoztatja a felhasználót arról, hogy nem kell erősebben nyomnia a billentyűt, mert már érzékelte azt.
A botkormánynak még nagyobb igénybevételt kell elviselnie, hiszen nemcsak a kurzor, hanem a legtöbb játék is azzal irányítható. Gyakori eset, hogy az ember a játék hevében a kelleténél erősebben tolja a botkormányt; ez szinte természetes is. Az is érthető, hogy sokan szeretnék a gépet játékra is használni. Aki teheti, külső botkormányt használjon a játékhoz, mert azt kifejezetten erre a célra készítették, és sokkal jobban bírja a strapát.

Amit a magnóról tudni kell
A géphez tartozó magnó sem a legmasszívabbak közül való. Már a kazettacserét is jó, ha óvatosan végezzük, de a magnó legérzékenyebb pontja a számláló, ezen belül is ennek nullázógombja; elég könnyen törik. Finoman kell bánni a magnó és a gép csatlakozóival is. Volt már rá példa, hogy valaki olyan erősen nyomta a gépbe a magnó csatlakozóját, hogy az letört a panelről. Ezeknek a csatlakozóknak nincs más felfüggesztésük, csak az a három forrasztás, amivel a panelhoz kapcsolódnak. Ezért ha mód van rá, ne bolygassuk a már összeállított konfigurációt, és lehetőleg minél ritkábban nyúljunk a csatlakozókhoz.

Hogyan csatlakozzunk?
A csatlakozókkal kapcsolatban rá is térhetünk a legfontosabb elektronikai szabályokra. Nagyon fontos tudnivaló, hogy a csatlakozókat csak akkor szabad kihúzni vagy bedugni, ha a gép ki van kapcsolva. A vezetékekben ugyan normál állapotban nincs túl nagy feszültség, de előfordulhat, hogy az ember elektromosan feltöltődik, és ez a töltés a gépbe jut. Ilyenkor ott a megengedettnél nagyobb feszültség keletkezik, amely könnyen eljuthat a bonyolult integrált áramkörökig, és tönkreteheti azokat.

A tápegységről
Ügyelni kell arra, hogy a tápegység szabadon legyen. Ne rakjunk rá semmit (például könyvet), ami gátolná a hűtését! A tápegységet úgy tervezték, hogy a lehető legkevésbé melegedjen, de a hőfejlődés így is elkerülhetetlen.
Ahhoz, hogy jó minőségű és zavarmentes képet kapjunk, a gépet a tévétől legalább másfél méterre kell elhelyezni. Ez egyébként egészségügyi szempontból is kívánatos, hiszen aki túl közelről nézi a tévét, rontja a szemét.

Vigyem, ne vigyem?
Persze előfordul, hogy a leggondosabb bánásmód ellenére is meghibásodik a gép. Ha viszont elromlik, nem kell feltétlenül az egész berendezést elcipelni a szervizbe; sokszor elég, ha csak a hibás egységet visszük el. A hiba helyét úgy a legkönnyebb megtalálni, ha egy másik konfiguráció is rendelkezésünkre áll, és egyenként cserélgetjük a különböző egységeket és kábeleket. Ha erre nincs módunk, akkor a hiba jellegéből indulhatunk ki. Például ha bekapcsolás után a képernyő nem változik meg. és a gép LED-je sem jelzi a bekapcsolt állapotot, akkor minden valószínűség szerint a tápegység hibás. Ha bekapcsolás után megjelenik a megszokott kép, és a tesztelés után a villogó ENTERPRISE feliratot is látjuk, de egy billentyűt lenyomva nem jelentkezik be a BASIC, akkor biztosan a cartridge rossz. A hibás csatlakozót vagy vezetéket is megtalálhatjuk, ha ezeket óvatosan megmozgatva, változást észlelünk.
Aranyszabály, hogy ha valamilyen funkció nem működik, akkor a gép használója először magában keresse a hibát.
Legtöbbször a magnóról való betöltéssel van probléma. Ha a gép nem tölti be a programot a kazettáról, a hibának többféle forrása lehet. Gyakran csak a magnó feje piszkos, ezért tisztítsuk meg alkoholos ruhával. De más bajok is lehetnek a magnetofon fejével, mert nem mindegy, hogy hogyan áll; helyzetét a magnó előlapján található fejbeállító csavarral változtathatjuk. A módszer a következő. Betesszük a beolvasandó kazettát a magnóba és elkezdjük lejátszani. Közben kis csavarhúzóval csavargatjuk a fejbeállító csavart. Akkor jó a fejállás, amikor a legélesebb, legmagasabb hangot halljuk. Aki még soha nem csinált ilyet, csak hozzáértő személy jelenlétében nyúljon a csavarhoz!
Előfordulhat, hogy a tévé okozza a töltési hibát; vannak ugyanis olyan típusok, amelyekkel a gép nem hajlandó tölteni. Ezt egyszerű tévécserével megállapíthatjuk, vagy ha nincs még egy tévénk, akkor meg kell próbálni a betöltést a tévé kiiktatásával. Ha így sikerül, akkor biztosan azzal van a gond. Ilyenkor csak a gépet kell bevinni a szervizbe, ahol egy kis átalakítással megszüntetik a hibát.
A szervizben az átlagos javítási idő három-négy munkanap. A javítást végző szakemberek készséggel válaszolnak mind a hardverrel, mind a szoftverrel kapcsolatos kérdésekre.

(1988 január) Romvári Gábor

Az ENTERPRISE-al hosszú távon számolhatunk
A Centrum Áruházak Vállalat egy éve e cikk megírása előtt jelentette be: boltjaiban forgalomba hozza az Enterprise 128 számítógépet. Az egy esztendő alatt jó néhány ENTERPRISE-os olvasónktól kaptunk a gépről észrevételt, Információt. Most megpróbáljuk összefoglalni szerkesztőségünk és kedves olvasóink tapasztalatait e kissé sokat vitatott gépről.

A kezdet...
A NOVOTRADE Rt. és a CENTRUM ÁRUHÁZAK Vállalat jól szervezett reklámhadjárattal vezette be az új gép honi értékesítését. Az olcsó számítógépre "kiéhezett" tábor érdeklődése szinte határtalan volt, ami a mai napig sem csökkent. Ennek köszönhetően a magazinban megjelent felhívásnak is: "Szívesen fogadnánk a géppel kapcsolatos további szakmai információkat", nagy foganatja volt. Nézzük hát, mi fán terem az a tapasztalat! - Az újdonsült tulajdonosok már a gép beszerzésekor sajátságos helyzetbe kerülnek, amolyan beugratósdiba. Ugyanis két alapvetően (ezeken belül több eltérés létezik) különböző gépet hoztak forgalomba. Hogy ez baj avagy sem, nem a szerkesztőség feladata elbírálni. Az azonban, hogy erről a kedves vásárló a Felhasználói kézikönyv - amelyet a megvásárlás után kapunk kézhez - tizenharmadik oldalának tájékoztatásán kívül mit sem tudott, a kevésbé alapos pedig még most sem, már kereskedelemetikai kérdés. Amint az is, hogy a "programkazettát nem cserélünk" elv akkor is érvényesül, amikor a felhasználó teljesen tájékozatlan. Meggyőződésűnk, hogy ha egy programkazettát - nem is olcsón - Enterprise 128 gépre eladnak, annak működnie kell! Kivéve, ha az eladó felhívta a vásárló figyelmét, hogy az azonos nevű és típusú, de egyébként csak egy pontosan meghatározott gépen működik.
Félreértés ne essék! Nem az Enterprise gép ellen lépünk fel, hanem annak sokszor "homályos" értékesítését bíráljuk. A cikk írója nem tud azonosulni az "Ismerkedés az Enterprise számítógéppel" c. könyv szerzőinek azon ajánlásával, hogy "programszerző útjainkra legalább gépünk külső tárát vigyük magunkkal".
A szerzők (Benedikti István és Huszka Béla) jóindulatú és gyakorlatias tanácsa szerint, ha ne adj isten gyári videokazettát akarunk vásárolni, érdemes magunkkal vinnünk a készülékűnket, de legalábbis a televíziónkat. Igaz, más vélemény is van, amely úgy tartja, a felhasználóknak ilyen bonyolult gép esetében már illik felnőttekké válniuk. Ma ugyanis az már senkit nem lep meg, hogy a PC-ken nem minden gyári szoftver fut, ezt a vásárlásnál kell tisztázni! Más kérdés az, hogy az ilyen programok leírásában feltüntetik a lehetséges géptípusokat, illetve a kívánalmakat.

Ígéret és valóság
A beharangozás szerint az új géphez folyamatosan gyári programokat fejlesztenek ki, de ha ez késne is, a Spectrum-emulátor segítségével a választék szinte korlátlan. A perifériákról csak annyit, hogy - hála a fejlesztők előrelátásának - majdnem minden szabványos eszköz felhasználható. Ezek egyébként igen praktikusan és könnyen kezelhető módon csatolhatók, ami a gép felépítéséből adódik. Az EXDOS felhasználói kézikönyv a lemezmeghajtó egységek tizenhét típusát sorolja fel, amelyekkel tesztelték a gépet, azaz amikkel működik. Csak egy dolog hiányzott! Az interfész hardver és szoftver kiegészítése.
A vásárlók többsége nem barkácsoló típus. Aki azonban rászánta magát a különböző alkatrészek beszerzésére és még nyomtatott áramkört is csinált, beforrasztotta az alkatrészeket, hozzájuthatott az "ígéret földjéhez", és az egyik legmodernebb perifériakezelési rendszert használhatja. Vagy másik megoldásként megvehette azt egy, az igényt és a hiányt jól kihasználó gmk-tól. Amennyiben ezt a kis momentumot is figyelembe vesszük, úgy a kedves felhasználó szinkronban lehetett az idővel és aszinkronban a pénztárcájával. Sőt még gépe garanciáját is elveszítette.

Az ígéretek megvalósulnak?
A Spectrum-emulátor valóban létezett, igaz, csak prototípusban. A sorozatgyártás alkatrészhiány miatt nem indult meg. A többször áttervezett emulátorhoz olyan alkatrészek kellettek, amelyek vagy COCOM-listán voltak, vagy beszerzésüket a magyar kereskedelem több mint egyéves határidővel vállalta. Közben elterjedt a hír, hogy nem is oldható meg a Spectrum-emulálás. Ebből annyi az igazság, hogy csak szoftverrel valóban nem. Az emulátor tervezője, az "A" Stúdió megmutatta az elkészült konstrukciót. Meggyőződhettem arról, hogy valóban működik. Ötszáz Spectrum programon próbálták ki, amelyeknek 85-90%-a futott. Nem tudja jelenleg kezelni a flash és a különleges turbo loadert.
Szintén ez alkalommal láthattam a sokak által hiányolt lemezmeghajtó illesztőt, a kontrollert. Mit mondjak? A "félmaszek" és a gyári között nemcsak árban, hanem minőségben is óriási a különbség. Szintén elterjedt rémhír, hogy a géphez nem lesznek további programok. Ebből az az igazság, hogy külföldről már valóban nem várhatóak, de csak az "A" Stúdió jelenleg nyolc szoftver fejlesztésén dolgozik. (Valószínűleg a cikk megjelenésekor már több kapható is.) A lemezmeghajtóhoz kapcsolt kontroller és az IS-DOS operációs rendszer lehetővé teszi a CP/M operációs rendszerek többségének a használatát, amiről szintén meggyőződhettem.

Valóság és távlatok
A levélírók egyértelműen dicsérték az Enterprise 128 számítógépet, de elmarasztalták a hozzá kapható szegényes irodalmat. A felhasználói kézikönyvön kívül eddig megjelent az EXOS 2.1, az EXDOS 1.3 és az IS-DOS 1.0, valamint a már említett "Ismerkedés az Enterprise számítógéppel" és "A hetedhét Enterprise" című könyv.
Akik lemaradtak valamelyiknek az első ki adásáról, azoknak jó hír, hogy hamarosan megjelenik a második kiadás is. Remélhetőén most már elég példányszámban. Ezen kívül szerkesztés alatt van több más kiadvány is. Mivel a könyvek megjelenését eddigi tapasztalatunk alapján nem követi különösebb hírverés, ezért a felhasználóknak csak azt tudjuk ajánlani, hogy gyakran érdeklődjenek a CENTRUM műszaki osztályain.
Korábban gond volt a NYÁK-csatlakozóval, de ez a múlté. Igaz, a gyártó KONTAKTA hőre lágyuló műanyagból készíti foglalatot, ami forrasztáskor sok kellemet lenséget okozhat. Végre-valahára most már az összes perifériakábel összeállítható. Kapható a külső botkormányhoz interfész illetve adapter, így csupán a vevő ízlésér múlik, hogy milyen típust választ.
A VIDEOTON Elektronikai Leányvállalata a tavaszi BNV idejére ígéri az emulátort. Reméljük, betartja szavát (Az olvasó a cikk megjelenésekor már tudja.) Jelenleg is több típusú, megfelelő lemezmeghajtó kapható, amely az "interfész kérdés" megoldódása után jól használható Mi lesz a szoftverrel? Az éppen vásárolható külföldi programok utánpótlása nem várható. Folyamatos azonban a magyar fejlesztés. Aki komolyabban bele akarja magát vetni a számítástechnikába, annak szinte korlátlan távlatokat nyújt a CP/M rend szer alatt futó programok választéka. Nem tartjuk és tarthatjuk lebecsülendőnek a már több mint tízezer Enterprise-tulajdonos programkészítő hajlamát sem.

Az évforduló margójára
Általános vélemény és tapasztalat, hogy az Enterprise 128 a kategóriájában és árfekvésében igen jó számítógép. A cég megszűnésének nem a konstrukció volt az oka, hanem az elhibázott kereskedelempolitika.
Magyarországon az eladások mennyisége alapján a gép lassan meghatározónak mondható e kategóriában. A becslések szerint a nyolcvanezer Commodore 64 és az ötvenezer Spectrum után az Enterprise a harmadik helyre tör. Ez olyan elterjedtségre utal, hogy hosszú távon is számolni kell vele. Amennyiben tárgyilagosan ítéljük meg a gép kezdeti értékesítési bonyodalmait, akkor az az igazság, hogy kicsit türelmetlenek voltunk. A szervizelés szinte az első pillanattól megoldott volt.
Ha szűkösen is, de kevesebb mint egy éven belül hozzájuthattunk az alapvető kiegészítőkhöz. Habár ez nem lehet mentség, mégis emlékezzünk a más gépek értékesítése körül kialakult állapotokra. A Commodore gépekhez például évekig csak turistaforgalomban érkezett be periféria, és a többivel sem (volt) jobb a helyzet. Úgy tűnik, hogy Magyarországon egy új géptípus helyzetének viszonylagos "stabilizálásához" minimum egy évre van szükség. Ezért aztán természetesen érhető a géptulajdonosok adandó jogos türelmetlensége.

Mi kapható az Enterprise 128-hoz?
Az alábbi listát cikkünk megírásakor állítottuk össze, ezért az 1988. áprilisi helyzetet tükrözi. Az Enterprise géphez folyamatosan érkeznek kiegészítők és szoftverek. Azért ez a gépre jellemző összeállítás jól tájékoztatja az olvasót.
Enterprise egér
4000 Ft
EPSON RX80 nyomtató
63600 Ft
SPEAKEASY beszédszintetizátor
3750 Ft
Software: Commodore Multi File Transfer
2360 Ft
Gun Shot botkormány
1170 Ft
Entervideo Segédprogram
(A német nyelvű gépek bővítései angol gépek számára)
529 Ft
VT 94104 botkormány
998 Ft
Fine Pen sprite rajzoló
411 Ft
Botkormány átalakító
456 Ft
BASIC-bővítő
411 Ft
Soros kábel (szabad végű)
680 Ft
Egyszerűbb játékok (kb. 5-6 fajta)
390-470 Ft
Párhuzamos interfész kábel
680 Ft
Összetettebb játékok (kb. 6-7 fajta)
470-600 Ft
Monitorkábel
1298 Ft
Irodalom: EXDOS
300 Ft
VT dupla lemezmeghajtó (illesztő nélkül)
46700 Ft
Controller (komplett)
10550 Ft

(1988 Július) Pinke György

Csatlakozzunk, de mivel?
Már a C16-os és a C Plus4-es gépek megjelenésekor a vevők bizonyos fokú zsarolásnak tekintették a gyártók részéről azt a tényt, hogy a botkormány csatlakozási felülete nem szabványos, és speciális botkormánnyal vagy ún. joystick-adapterrel lehet csak a számítógéphez botkormányt csatlakoztatni. De amikor az első Enterprise gépek megjelentek a Centrum Áruházak műszaki osztályain, sokan úgy vélték, hogy ez a gép éppen azért, mert ún. NYÁK-kivezetéses csatlakozási felülete van (csak az RF antenna csatlakozási pontja szabványos), hamarosan meg fog bukni a hazai számítástechnikai piacon.
Való igaz, közel két évnek kellett eltelnie ahhoz, hogy ma már minden egyes csatlakozási ponthoz akár OEM, akár kész állapotban lévő kábeleket, adaptereket lehessen kapni a géphez! A fenti NYÁK-kiosztásos filozófiát számos világhírű cég tette sajátjává, például a Sony, a Sharp, az Amstrad, a Philips és a Scheider. Ma már úgy ítélhetjük meg, hogy a NYÁK-lap, illetve az alaplapok ilyen megtervezése és legyártatása még az aranyozott csatlakozási pontok ellenére is jóval olcsóbb, mint ha valamennyi kimeneti pontot szabványos NYÁK-ba ültethető csatlakozóval látták volna el. Azaz az egységnyi számítógépben megtestesülő kivezetési pontok előállítási költsége lényegesen olcsóbbá vált.

A koncepció áldozatai
A gyártók már jóval kevesebbet törődtek a járulékos beruházásnak számító interfészek és speciális kábelek előállításával, hiszen a fogadó oldaláról kellett biztosítani azt a csatlakozási felületet, amelyet több esetben éppen a számítógépből spóroltak ki. Nos, ennek a hibás fejlesztési koncepciónak esett áldozatul maga az Enterprise is. Igaz, hogy ma már mindenféle csatlakozókábel és interfész kapható az EP-hez, de ha összeadjuk ezek értékét, meghaladja a 4000 forintot. Bár az is tény, hogy nem kell azt sem egyszerre megvenni!
Az Enterprise valamennyi csatlakozókábelét és magát a botkormány-interfészt is a Sprint Kisszövetkezet gyártotta. Az összes csatlakozási felület más-más kiosztású, és még véletlenül sem lehet őket felcserélni. Ezért nem tipizálhatók, és mindegyik kábel elkészítéséhez egy külön szerszámot kellett gyártani. A kisszövetkezet a Kontakta gyár csatlakozóit használta fel, az esetek többségében. A manuális szerelést követően úgy összeragasztották a csatlakozófejeket, hogy azokat egy esetleges javításkor nem lehet szétszedni.
A kábelek választékában csupán a Centronics printerkábel és az EUROSCART-os monitorkábel származik tőkés importból. A forgalmazó által jelzett adatok szerint eddig csak a botkormány-adapterek szerelése során jelentkezett hibás termék. A kábel, illetve interfész bedugását a számítógép hátsó kimeneti pontjába megkönnyíti a csatlakoztatandó kiegészítőnek egy hornya (vájata), melynek ellenpólusa éppen a számítógép csatlakozási felületével esik egybe.
A forgalmazás kezdetén előfordultak olyan idegesítő hibák is, hogy a "motherboard" 4 pontos felcsavarozása 2-3 milliméterrel balra vagy jobbra sikerült a NYÁK-kivezető sínek eredetileg tervezett és a műanyag házzal összemért elhelyezkedésétől. Ennek az lett az eredménye, hogy bár a csatlakozókábel-doboz a vezető sínre rácsúszott, a NYÁK kivezetési pontjai sohasem érintkezhettek a kábel csatlakozási pontjaival. Az EP Márkaszerviz azonban ezt a problémát is megoldotta: az alaplap tartó furatait kiszélesítette, és az alaplapot balra vagy jobbra elmozgatta olyan mértékben, hogy most már a csatlakoztatandó kábel felfeküdhessen a NYÁK-lapon.

Tv és számítógép kapcsolata
Az otthoni számítógépek legtöbbjéhez a tv-készüléket használják monitorként. A tv-hez a számítógépet háromféleképpen lehet illeszteni:

  • RF, rádiófrekvenciásan (97 %),
  • CVS, azaz Composit Video Signal segítségével (2,6%),
  • RGB, azaz a három színcsatornát és a szinkroncsatornát külön-külön (0,4%).

Zárójelben az EP-tulajdonosok alkalmazási mutatóit tüntettük fel.
Mielőtt végignéznénk a lehetőségek közötti különbségeket, beszéljünk pár szót arról is, hogy hogyan jelenik meg a tv-kép az adókból sugárzott jel hatására. A tv-adó ún. RF jeleket sugároz, ezeket érzékeli az antenna, és egy antennakábelen keresztül továbbítja a tv-készülékbe. Itt először egy olyan áramkörbe kerül általában, amely előállítja az ún. Composit Video Signalt (CVS-t). A CVS egy másik áramkörbe jut, ahol különválasztódnak a színjelek - piros, zöld és kék -, valamint a megjelenítéshez szükséges szinkronjel (RGBY). A színjelek egy illesztő fokozat után közvetlenül a képcső színágyúját vezérlik. A szinkronjelet egy újabb áramkör választja szét a képcső vezérléséhez szükséges vezérlőjelekre, amelyek a kép megjelenítését irányítják. Ez a leírás azonban a végletekig leegyszerűsített változata annak, ahogyan az adóból érkező jelből kép lesz. Tudni kell azt is, hogy minden jel, amely áthalad egy áramkörön, nemcsak átalakítást, illesztést végez, hanem "zajt" is ad hozzá a jelhez. Természetesen ez a "zaj" a jelhez képest igen kicsi, de minél több áramkörön halad át a jel, annál több zaj kerül bele, és ez az összegeződés a végén már zavaró lehet.
RF összeköttetés esetén a jel igen zajos, hiszen az összes áramkörön áthalad. Maga az RF-CVS, illetve a CVS-RF eszköz a legzajosabb, tehát a legnagyobb nyereséget úgy tudjuk csak elérni, ha ezt az átalakítást és visszaalakítást kiiktatjuk.
Composit Video Signal összeköttetés esetén az előző összeköttetéshez képest már igen látványos javulás várható:

  • megszűnik a nagy egyszínű foltok "grízes" vibrálása,
  • láthatóvá válik a sárga alapon a fehér pont is,
  • olvashatóak lesznek a betűk a 80 karakteres üzemmódban,
  • megszűnik a kép "hullámzása", remegése,
  • az eddig összemosódott foltok jól látható határvonalat kapnak,
  • az RF hurok okozta programbetöltési gondok teljesen megszűnnek, nem kell az egyes programok esetén a kábelt ki-be húzogatni.

Az újabb típusú Orion és Videoton tv-k DIN, a nyugati tv-k Siemens, ITT EUROSCART bemenettel rendelkeznek.

RGBY összeköttetésnél legrövidebb a jel útja: RGBY - kábel - RGBY. Az előzőekhez képest a javulás még szembetűnőbb: a kép tisztább, a színek kontrasztosak, a változás azonban már nem olyan mértékű, mint az RF és a CVS közötti volt. A normál tv-k nagy többsége nem rendelkezik ilyen csatlakozási lehetőségekkel. Sajnos a személyi számítógépeknél sincs meg mindenhol ez a kimeneti lehetőség. Az EP-nél, az Amstrad és a Scheider számítógépeknél azonban megtalálható. Az Enterprise által biztosítható Interlace technika már csak ilyen nagy felbontású monitorral érhető el. Ilyen esetben a pixelek száma a képernyőn eléri az 1280*720-as képfelbontást.

Hasznos tarácsok
Ha a tv-a vagy monitoron a számítógép képét nézzük, vegyük a megszokottnál kisebbre a fényerőt, a kontrasztot és a színtelítettséget. Lehetőleg ügyeljünk arra, hogy ha nem szükséges, ne legyenek a képen sokáig egy helyben maradó fények, jelek (betűk), mert azok a képben "beégést" okozhatnak. Használjunk antisztatikus tisztítófolyadékot a képernyő tisztítására!

Monitorkábelek Enterprise gépekhez

BNC-mono/sztereo
(SONY, JVC)

1998 Ft
RCA-Pin JACK
(Philips, Commodore, Samsung, NEC)
1298 Ft
EUROSCART
(ITT, Siemens, Thomson, Grundig, Waltham, Loewe)
1298 Ft
6 pólusú DIN
(Orion, Videoton)
1298 Ft
OEM nyílt végű monitorkábel 1148 Ft
TV-RF antennajel-erősítő doboz
(Beijing, Videoton, Orion)
 

Minősítés
Annak ellenére, hogy a monitorkábelek árai különböző szolgáltatásokat is magukba foglalnak - felvilágosítás, szaktanácsadás, az Enterprise számítógép átalakítása az RGBY fogadására garanciával -, meg kell állapítani, hogy az OEM termékek kivételével a csatlakozókábelek drágák. A műanyag palástok összeragasztása során előfordul, hogy a ragasztó kifolyik, és a termék esztétikai értékét erősen rontja. A termék kiszerelése sem áll arányban a magas árral.
Az EUROSCART és az RF csatlakozók használatán kívül, bármilyen más monitorkábel alkalmazása esetén az Enterprise márkaszervizekhez kell fordulni az átalakítások garanciális elvégzéséért. Úgy ítéljük meg, hogy csak abban az esetben csökkentjük kiadásainkat, ha nyílt végű OEM kábeleket vásárolunk. Ez azonban feltételezi, hogy a műszaki életben jártasak vagyunk, és igen jól ismerjük a NYÁK-lap kivezetési pontjainak definiált funkcióit, nem beszélve arról a tényről, hogy a kábel másik oldalán lévő csatlakozóval már rendelkezünk!
A forgalmazó egyértelmű hibájának róható fel, hogy mind a mai napig nem hajlandó félkész termék formájában műanyag palástokat forgalomba hozni azok számára, akik maguk akarnák a fenti termékeket összeszerelni.
Mindent egybevetve azonban, dicséretes gyorsasággal fejlesztette ki a forgalmazó a különféle kábeleket és interfészeket az Enterprise számítógéphez. Ezt a kényszerű fejlesztést még ha a forgalmazó nem is akarta, akkor is meg kellett volna tennie, mivel a mai napig ilyen széles választék a Nyugaton forgalomba hozott Enterprise számítógépekhez csak hazánkban található.
Vajha egyszer elérhetnénk, hogy mi exportálhatunk számítástechnikai tartozékokat, kiegészítőket Angliába, Hollandiába és az NSZK-ba!

Kérdések
Szokásunkhoz híven most is néhány olyan kérdéssel zárjuk az elemzést, amelyekre mind a mai napig nem ismerjük a választ! Miért nincs válasz arra az "RF-hurok" problémára, amelynek sajnálatos következményeképpen néhány kazetta betöltésekor ki kell húzni az RF-kábelt a tv-ből (például Nautilus)? Lehet, hogy az "RF-hurok" az Enterprise Bermuda-háromszöge? Nem lett volna egyszerűbb valamennyi forgalomba kerülő számítógéppel együtt magához a géphez adni - vagy talán a számítógép dobozában elhelyezni - az oly nélkülözhetetlen botkormány-adaptert? Miért olyan kevés az a játék, amellyel párosban is lehet játszani?

(1989 november) P. T

Válaszoltak a tulajdonosok
A Magazin előző számaiban megjelent az Enterprise TOTÓ és az információs lap. Ezek eredményeiről kérdeztük Pásztor Tamást, a Centrum Áruházak Vállalat márkamenedzserét. Az ő értékelését adjuk közre az alábbiakban.

Várakozáson felüli érdeklődés
A TOTÓ I-re több mint 1700 válasz érkezett. Ez a szám az eddigi Enterprise-tulajdonosok tíz százalékát jelenti, az érdeklődés tehát várakozáson felüli volt. Nem titkolt szándékunk volt, hogy a TOTÓ-játékon keresztül is információkat gyűjtsünk az Enterprise-osok táboráról. Ezért is örülünk a kedvező fogadtatásnak.
Az információs lapra szeptember elejéig 1550 válasz érkezett. Ez azonban még nem végleges szám, mert továbbra is folyamatosan érkeznek adatlapok. A TOTÓ-szelvényeket és az információs lapot is számítógéppel dolgoztuk fel, mert össze akarjuk gyűjteni az Enterprise-tulajdonosok címeit. Adatbankunkban eddig mintegy 2500 cím szerepel. El szeretném mondani, hogy a személyi számokat csak az adatfeldolgozás miatt, technikai okokból kértük, ezeket az információkat később meg fogjuk semmisíteni. Sok választ kaptunk Csehszlovákiából és a Szovjetunióból. Ez megerősítette azt az eddigi érzésünket, hogy nagyon sok gépet vásároltak határmenti forgalomban.
A számítógépes feldolgozás néhány érdekes dolgot is "kihozott". Néhány versenyző több, egymástói eltérő választ küldött be. Ez azt jelenti, hogy nem tudták a jó választ, és azok variálásával akartak jó eredményt elérni. Ez ötletes fogás ugyan, de nem tartjuk tisztességesnek, mivel nem a tényleges ismereteket tükrözi. Így hosszas megfontolás után a versenybizottság kizárta a versenyből Bodnár Zoltánt (Kazincbarcika, 14 db szelvény), Bujtor Gyulát (Budapest, 7 db szelvény) és Kőhalmi Attilát (Ajka, 5 db szelvény). Néhány versenyző a szerencséjét a beküldött szelvények számával próbálta meg elősegíteni. Őket a versenybizottság intésben részesítette, de nem zárta ki.
Összesen két darab 13+1-es és öt 13-as találatot elért szelvény érkezett. Spectrum-emulátort Fehér Péter (Pécs), EP-egeret Fehér Katalin (Kaposvár) nyert. Akik 13 találatos szelvényt küldtek be, tíz játékprogramos kazettát kapnak. Ők a következők: Fülöp Csaba (Debrecen), Nagy Krisztián (Nyírbátor), Földes Imre (Budapest), Fisli Gyula (Kaposvár), Lengyel Zsolt (Kecskemét).
Sajnálatosan mind a két TOTÓ-ba került nyomdahiba. Az elsőben a NASA-GUY program neve hibásan jelent meg, ez azonban nem volt zavaró. A TOTÓ II-ben viszont a 7. kérdést törölni kellett, mivel kimaradt a "nem" szó, és ez már félreértésre adhatott okot. A kérdés helyesen: A felsorolt programok közül melyik nem jelent meg áruházi forgalomban?

Le kell vonni a tanulságokat!
Említettem, hogy az Enterprise-piaccal kapcsolatos kérdésekre is igen sok választ kaptunk. Ez szignifikáns minta, és komolyan kell vennünk a válaszokat. A válaszok 30 százaléka Pestről, 70 százaléka vidékről érkezett. Ez már önmagában is megdöbbentő adat, mert a gépeket éppen fordított arányban adtuk el. A gépek típusának megoszlása is ellentétes az eladásokkal. A beküldők megoszlásából arra kell következtetnünk, hogy a gépnek vidéken nincs supportja. Néhány áruház tartja csak magát, mint a győri, miskolci, kecskeméti és a szegedi.

Továbbra is másolás
A szoftverre vonatkozó válaszokból egyértelműen kiderül, hogy gyenge az ellátás. A megkérdezetteknek átlagosan 9 gyári és 73 másolt játékprogramjuk van. A felhasználói programok száma 16, a könyveké 4. Ez a szám híven tükrözi a könyvpiacot. A programok sikerlistája a következőképpen alakult:

Játékok:
1. Last Ninja II. (Spectrum átirat)
2. Batman
3. Magic Ball

Felhasználói:
1. ASMON / SIMON Assembler Compiler
2. Zzzip BASIC Compiler
3. HiSoft DEVPACK

Kiosztottuk a citromdíjat is. Ezt a következők kapták:
1. Körmöci arany
2. Bioritmus
3. CBM MFT (Commodore-segédprogram)

A hardver sikeresebb
A kiértékelés szerint a hardverrel kapcsolatban kevesebb gond van. A gép leggyengébb elemei: a fóliatasztatúra, a billentyűzet és a csatlakozópontok. Sok kritika érte az adatmagnót és a system bus bridge-et. A gép leggyengébb szoftvereleme egybehangzóan a szövegszerkesztő.
Meglepő választ kaptunk arra a kérdésre, hogy: mivel bővítené a hardver-termékskálát? Az igények 7 százaléka a fényceruza. Ezt túlzott elvárásnak érezzük, mert a fényceruza függvénye a monitornak. A sorrend egyébként így alakult: numerikus tasztatúra, memóriabővítő, EPROM-égető, floppydoboz, midi interfész. A szoftvertermékek körét a jó szövegszerkesztővel, zeneiprogram-készítővel, adatbázis-kezelővel, játékprogram-generátorral és oktatóprogramokkal bővítenék a válaszolók.
A kereskedelemre vonatkozó kérdésekre a következőképpen alakultak a válaszok:

A legjobban ellátott forgalmazó helyek:
1. Úttörő Áruház (29%)
2. Novotrade 2C (11%)
3. Centrum Flórián (6%)
Egyéb vagy nem minősített 54%.

A legképzettebb eladókra vonatkozó válasz:
1. Úttörő Áruház (20%)
2. Otthon Áruház (13%)
3. Novotrade 2C (6%)
Egyéb, nem minősített (61%)

Tervek és tanulságok
Az igényeket mérlegelni kell. Nem lehet mindenbe belevágni. Nem fogunk tudni lépni, beszerzési lehetőség hiányában, az olcsó nyomtató és színes monitor területén. Floppydobozt és tápegységet a közeljövőben fogunk árulni. Memóriabővítés esetében csak az alaplemezt forgalmazzuk, és a szerelést vállaljuk. A memória IC-ket a vásárló maga választhatja, pénztárcája függvényében. A beszerzéshez azonban segítséget nyújtunk.
Ami a szoftvert illeti, itt már keményebb kritikát kaptunk. A választék valóban gyenge. Főleg az alkalmazói programokat hiányolják, ami azért egyben igazolja előzetes elképzeléseinket is. Ugyanis mi az Enterprise-t családi gépnek szántuk. Ezért az alkalmazói programok fejlesztésére fogunk koncentrálni. Megfontoljuk a CP/M alatt futó programok fejlesztését, illetve a már meglévők jogdíjának megszerzését.
Nagyon elgondolkoztató, hogy a válaszolók három százaléka olyan programokat is keresett, amelyek léteznek és vannak is. Ez a forgalmazásunk kritikája! Különösen a vidéki felhasználókat sajnálom nagyon.

(1989 december) Pinke György

Enterprise - vállalkozás, avagy miért plusz a PLUS?
A CentrumNagyker - amely sokáig kizárólagos hazai forgalmazója volt az Enterprise számítógépeknek és tartozékoknak - a több mint kétéves szakmai ismeretanyag és információs tömeg birtokában saját fejlesztésbe kezdett. A kifejlesztett termékeket maga menedzseli, forgalmazza, terjeszti - stílszerűen az Enterprise nevéhez: vállalkozik is! Nemrégen az EP márkaboltokban megjelent az Enterprise PLUS SOFTCART fantázianevű firmware-termék (IC-be égetett program. Alapját az a felismerés adta, hogy az eltelt két év alatt kifejlődött egy magasabb szintű igény, amely most már nem elégszik meg a felhasználói programok és utilityk kazettás változatainak szűkös lehetőségeivel.
Egyes fejlesztési munkák során a program betöltése kazettáról nehézséget okozhat a felhasználónak. A körülményes állománykezelés és a sok vesződséggel járó fordítás még a legtürelmesebb. fejlesztő kedvét is hamar elveszi. Az Enterprise bal oldali csatlakozási felülete, a ROM BAY így szinte kínálta a megoldást a SOFTCART elnevezésű újdonság bevezetéséhez. Ugyanakkor az is tény, hogy jelenleg csak egy szűk réteg engedheti meg magának az EX-DOS lemezvezérlő kártya és vele együtt egy mono vagy dual floppy használatát. Nem beszélve arról, hogy a Centrum Áruházak számítástechnikai választékából még mindig hiányzik a fordítók és utilityk lemezes verziója.


ROM BAY

Mindenki előtt ismert, hogy az Enterprise egyelőre 4 x 16 kbájtos ROM-ot képes kezelni a bal oldali cartridge csatlakozója felől. Ennek a ténynek az ismeretében - és annak az információnak tudatában, hogy a felhasználók kezdettől fogva kedvezően fogadták a BASIC interpreter modulban történő elhelyezését - született a SOFTCART. A forgalmazó információja szerint 2000 darab PLUS cartridge kerül folyamatosan a boltokba. A 2950 forintos irányár meglepően olcsó a korábbi drága kiegészítők és tartozékok áraihoz képest. Az ár alapján úgy tűnik, sikerült a termék gyártása során igen kedvező arányt kialakítani az import és a hazai alkatrészek között.

Enterprise PLUS cartridge
Az esztétikus, vákuumfóliás kiszerelésben forgalomba kerülő termék az alábbiakat tartalmazza. Egy műanyag cartridge-dobozt, egy háromfoglalatos NYÁK-lapot, egy 27128 jelű, japán EPROM-ot, egy használatba vételi engedélyt és végül egy öntapadós színes cartridge-címkét - ez utóbbi kettő a használati utasításban van benne.
Az EP PLUS jelölésű gyári EPROM a középső foglalatban van elhelyezve. A bevezető NYÁK-sínhez közelebb eső másik szabad foglalatba is csak 16 kbájtos EPROM helyezhető el, a harmadik foglalat 1 db 32 kbájtos EPROM fogadására alkalmas.

Üzembe helyezés
Az EP PLUS cartridge üzembe helyezésére három lehetőség kínálkozik. A vevőnek azonban minden esetben célszerű magával vinnie az eredeti BASIC cartridge-et az áruházba, így mindjárt a helyszínen kipróbálhatja a terméket. A legkevesebb probléma azokkal az angol cartridge-ekkel van, amelyekhez csak egy foglalat tartozik: Ilyen a forgalomba hozott gépek 86 százaléka. A gépek 3 százaléka olyan speciális, kétfoglalatos NYÁK-kal került az üzletekbe, amely. tartalmazza az angol BASIC interpreter PROM-ot és egy 128 kbájtos EPROM-ot, a német BASIC interpretert. A fennmaradó 11 százalék esetén azonban a 27256-os EPROM szolgál arra, hogy annak alsó részében a német, a felső részében az angol BASIC interpreter helyezkedjen el.
Az Enterprise PLUS-nak csak az angol BASIC interpreterre van szüksége. Az EPROM ki- és beszerelését végezheti az eladó (ki vannak képezve) vagy a vevő, amennyiben szakember. De ha sem az eladó, serre a vevő nem meri behelyezni az EPROM-ot a foglalatba, akkor az EP márkaszerviz, illetve az IC-k cseréjét a gyártó Titán Kisszövetkezet (Bp. XIV., Nagy Lajos király útja 110-112.) percek alatt elvégezheti.
Azok, akiknek beégetett EPROM-juk van, vagy leadják az EPROM-ot és kapnak egy angol BASIC PROM-ot, vagy a CA. FLÓRIÁN Alkatrész Shopban vásárolhatnak külön egy angol BASIC PROM-ot, és akkor megmarad a 27256-os EPROM-juk is. Újszerű a firmware-termékben, hogy valamennyi EPROM-nak önálló gyári sorszáma van, amelyet a forgalmazó a vevő nevével együtt számítógépes, nyilvántartásba vesz. Így kívánja biztosítani, hogy a folyamatos fejlesztések eredményei eljussanak a régi vevőkhöz. Ez utóbbi tényt a két fél közötti használatba vételi engedély szabályozza.

Mitől plusz a PLUS!

  1. Az EP PLUS EPROM három olyan szoftvert is tartalmaz, amelyek a gép már meglévő jó tulajdonságait még tovább fokozzák: a WP (Word Processor Plus) 2.1 jelű verzióját, az Enter Video 2.3 jelű verzióját és a BASIC Extension I-IV. 2.0 jelű verzióját.
    Az új szövegszerkesztő, a WP 2.1 verziója az időközben felfedezett hibákat korrigálta. Megoldást talált a 40/80 karakteres képernyőkezelés problematikájára és az ékezetes magyar ábécé használatára is. A szövegszerkesztő bővített verziója révén a. szerkesztett szövegek zavartalanul kiírathatók EPSON RX-80-as, illetve Datacoop BABY printeren. A sokak által ismert EnterVideo révén direkt módon hívhatók meg a VSAVE, VLOAD, VDUMP javított kiterjesztések. A BASIC EXtension 2.0 a Pascal szintű BASIC 200 utasítását újabb 65 utasítással és függvénnyel egészítette ki.
    Külön figyelmet érdemel az EP PLUS JOY_MOD: változója, amely alkalmassá teszi a számítógépet egy a közeljövőben megjelenő 10 DIN-es szabványú numerikus billentyűzet kezelésére. A DATUM_FLAG: egy öröknaptár paraméterezésére szolgál, a DEFAULT A$ pedig beállítja a mentéshez / betöltéshez használt alapértelmezésű eszköz nevét.
  2. A forgalmazó ígérete szerint már az ősszel megjelennek az eddig csak kazettán forgalmazott felhasználói programok firmware-változatai, illetve azok -továbbfejlesztett moduljai. Így egy cartridge-en belül további programfejlesztési lehetőségek nyílnak a felhasználók számára. Mivel egyelőre a forgalomba kerülő firmware-termékek egyike sem lesz nagyobb, mint 32 kbájt, a harmadik üres foglalatba az alábbi programok ültethetők majd be:
    Zzzip BASIC Compiler 3.0
    IS-LISP Compiler 1.0
    lS-FORTH Compiler 2.0
    HiSOFT PASCAL Compiler 1.0
    SEMI-SOFT ASMON 1.3
    "HYDE" DEBUGGER 1.0
    CBM Interface 4.1
    UWP (Universal Word Processor) 3.0
  3. "Kétnyelvűvé" teszi a számítógépet.
  4. A szabaddá váló üres cartridge-dobozzal és _a PLUS cartridge-dzsal egy időben forgalomba hozott 2 x 32 kbájtos EPROM-bővítő (1198,- Ft) NYÁK-kal szinte korláttán lehetőséget biztosít a felhasználónak; akit most már legfeljebb csak a pénztárcája korlátoz abban, hogy hány felhasználói programot működtet.
  5. A gyártók a termék külső megjelenésében is egy plusz szolgáltatással jelentkeztek: az öntapadós. színes cartridge-címkével, valamint az Index Regiszterrel, amelyre fel lehet írni az adott EPROM-ok, illetve PROM tartalmát.

A fejlesztési sorozat első gyümölcse
Már gőzerővel fejlesztik az EP PLUS filozófiáját alapul vevő, GAMECART elnevezésű termékcsalád tagjait. Egy a közeljövőben megalakuló kft. segítségéven közel 20 játékprogram jelenik meg cartridge-ban, s így megoldhatónak látszik a játékprogramok bérleti rendszerének kialakítása. Hiszen az egyre növekvő kazettaárak miatt jelentősen visszaesett a forgalom a Centrum Áruházak hálózatán belül. Az. említett játékok bérlési lehetőségével minden bizonnyal nemcsak a ma már közel 200 program választéka fog növekedni, hanem az árbevétel is. Az elképzelések szerint egy bizonyos bérleti idő elteltével - illetve az EURSOFT Club tagjainak kedvezményes áron - felkínálják megvételre a GAMECART -márkájú játékmodulokat.
A fejlesztések másik területe a felhasználó-orientált témakörök megvalósítása egy cartridge-ban. Bizonyára örömmel szereznek tudomást á zenerajongók a MIDI intérfész fejlesztéséről. Az aktív memóriakártya elvén működő MEDICART, JUSTISCART, PETROLCART, XCART elnevezéses célorientált alkalmazási módok a pacientúrával is rendelkező orvosoknak; ügyvédeknek, szállodáknak nyújthatnak speciális szolgáltatásokat. Ezek azonban igen drága berendezéseikkel és egyéb járulékos eszközeikkel belátható időn belül aligha kerülnének nálunk alkalmazásra.

Minősítés
Kedvezőnek mondható az ár / teljesítmény / használhatóság összefüggések vonatkozásában az EP PLUS cartridge. Emeli a szolgáltatások értékét a használatba vételi. engedélyben vállalt kötelezettségek újszerűsége. Hiányoljuk azonban, hogy különféle billentyűzetek generálásakor az eltérő betűtípusokat nem, lehet öntapadós matricával felülragasztani. Kissé szokatlannak tűik az eredeti EP BASIC cartridge-ből a BASIC interpreter PROM kivétele, illetve az a tény, hogy a cartridge nélkül kockázatos elindulni vásárolni: Jelentős hibaforrás lehet az egy vonalról 8 vonalra dekódoló demultiplexor, a szovjet gyártmányú K555ID7. Úgy véljük, jobb lett volna például a Texas SN74LS138N vagy az SN74ALS138N. Szintén zavaró a góliát méretű magyar gyártmányú 100nF-os szűrőkondenzátor. A NYÁK-lap felületi kiképzése és az eredetivel szinte azonos megjelenésű műanyag doboz minőségi munka.
Mindent egybevetve, ha a forgalmazó és a fejlesztő betartja ígéretét, hogy még az ősszel és a jövő év tavaszán a VSZM Enterprise Klubban egy, a felhasználókkal megtartandó szakmai bemutató alkalmával felvetett problémákat, programlistákat és a hiányok pótlását egy újabb verzióban. az eredeti EPROM-ba beégetve kiadja, minden bizonnyal kárpótolhatja az EP-felhasználók kissé megcsappant, reményét vesztett és hitehagyott táborát.
A forgalmazótól kapott legfrissebb információ Szerint az eddig eladott PLUS cartridge-ek száma már a 300-at is meghaladja.

P.T

Fordítás vagy értelmezés?
Programok írásához - egyéb kellékek mellett - nem nélkülözhető valamilyen programozási nyelv használata. A nyelvek bábeli zűrzavaráról már könyvtárnyi irodalom szól. Most nem nyelvekről, hanem azok számítógépes "megvalósításáról" (implementációjáról) lesz szó. A téma a számítástudomány területéhez tartozik. Van azonban néhány olyan vonatkozása is, amely minden számítástechnikus és érdeklődő számára érdekes lehet.

Az alapprobléma onnan ered, hogy az emberek nem szívesen tanulják meg a gépek bináris "nyelvét", a gépek pedig - érzelemnyilvánítás nélkül ugyan, de - maguktól nem értik az emberek nyelvét. Ezért az élő nyelvek helyett egyszerűsített, pontos és betartandó szabályokkal definiált nyelvek jöttek (és jönnek) létre a gépekkel való érintkezés (programozás) megvalósítására. Sajnos, a gépek egyedül még ezeket a nyelveket sem értették, a programozók pedig már nem akartak a nyelv emberi vonásaiból tovább engedni.
A konfliktus kétféle módon oldható fel:

Az első megoldás nagyon munka- és költségigényes, és csak akkor jöhetne szóba, ha sikerülne egy - vagy néhány - általánosan elfogadott programozási nyelvet és számítógépes rendszert bevezetni, amely hosszabb ideig uralná a szakmát. Mivel ennek az elmúlt 40 év tapasztalatai és a műszaki fejlődési üteme határozottan ellentmondanak, maradt a második, a "szoftver" út. Ha egy gépet megtanítunk egy programozási nyelv megértésére, azt mondjuk, hogy a kérdéses nyelvet az adott gépen "megvalósítottuk". A nyelvek gépi megvalósítása általában bonyolult programok segítségével történik, és a számítástechnikán belül egy külön területet alkot. E terület részletei nem tartanak közérdeklődésre számot, de a programozási nyelvek feldolgozásának két alapvető módszerével célszerű megismerkedni.
Bevezetésül - a közös szóhasználat érdekében - néhány alapvető fogalmat összefoglaltunk:

Annyit sokan tudnak, hogy egy nem gépi kódban írt programot a gépen vagy fordítás vagy értelmezés segítségével lehet csak futtatni. Mivel a két technika előnyök és hátrányok szempontjából sok tekintetben kiegészíti egymást, érdemes megvizsgálni, hogy a programfejlesztés során mikor melyiket jó preferálni.
A fordítás folyamán először a fordítóprogram létrehozza a tárgyprogramot, melyet a gépbe betöltve végrehajthatunk. Előfordul, hogy a kapott tárgyprogram még nem gépi kódú, ezért a "futtatásra" csak újabb fordítás után kerülhet sor. (A C nyelv fordítói például első lépésben általában assembly nyelvre fordítanak.) A logikai teljesség kedvéért el kell mondanunk azt is, hogy a programvégrehajtás tulajdonképpen egy értelmezési folyamat, amely abban különbözik a futás idejű értelmezéstől, hogy az értelmező "programot" a gép áramkörei testesítik meg.
Maga az értelmezés úgy zajlik le, hogy az értelmező program - melyet különösen BASIC esetén gyakran a gép ROM memóriájában tárolnak - utasításonként végighalad a forrásprogramon, közben elemzi annak utasításait, és behívja a rendszer azon alprogramjait, amelyek a gépből a kérdéses utasításnak megfelelő tevékenységet váltják ki.
Ha mindkét technika előnyös és hátrányos vonásait át akarjuk tekinteni, négy alcímre van szükség.

Az értelmezés előnyei
Mivel a forrásprogram - az értelmező automatikus működését nem tekintve - "közvetlenül" hajtódik végre, a programozó egyszerűen és hamar lát eredményt vagy hibát, hiszen a géppel, úgy tűnik, egy nyelvet beszél (nem véletlenül a BASIC a tanuláshoz általánosan használt nyelv). Ennek megfelelően igen barátságos kapcsolat alakítható ki a rendszer és a programozó között. A programot egy célszerűen a nyelvre orientált szerkesztőprogram segítségével "inkrementálisan" írhatjuk, ami azt jelenti, hogy akár az egyes utasítások vagy próbarészek után sem igényel különösebb erőfeszítést egy próbafutás. A szerkesztő utasításonként ellenőrizheti programunk formai helyességét (az IS-BASIC ezt megteszi), és ezzel sok utólagos fáradságot takaríthat meg.
Az értelmezés technikai megvalósításából következik a dinamikus tárkezelés (a változó számára lefoglalt tárterület mérete csak a program futásakor válik ismertté) viszonylag egyszerű megoldása. A tárkezelő rutinokat nem kell a tárgyprogramba beépíteni, azok az értelmező részei lehetnek.
A program hibáinak felderítésekor nem közömbös, hogy az értelmező rendszerek jó nyomkövetést tesznek lehetővé, hiszen a forrásprogram futás közben folyamatosan rendelkezésre áll.

Az értelmezés hátrányai
Mivel az értelmező program minden utasítást minden végrehajtáskor kénytelen újra és újra "megérteni", a programunk futása számottevően lassul. Az értelmező nemcsak időben, de tárban is csökkenti a hasznos kapacitást. Az utasítások végrehajtási sorrendje előre nem jósolható meg, ezért az értelmező rendszereknél az operatív tárban kell tartani az értelmező program mellett a teljes forrásprogramot is. Az előző pontban említett előnyökért tehát komoly árat kell fizetni.

A fordítás előnyei
Itt a tárgyprogram létrehozása és végrehajtása szétválasztható, ezért a tárigény eleve kisebb lehet. Mivel a fordítóprogram csak egyszer (vagy néhányszor) olvassa végig a forrásprogramot, az háttértárban is tárolható, ahova a generált tárgyprogram akár részletekben is kivihető. A fordítást két futtatás között csak akkor kell ismételni, ha a forráson változtattunk, ezért a fordítás időigénye - különösen a fejlesztés vége felé, az alapvető hibák kiszűrése után - nem kritikus. így lehetőség van arra, hogy a fordító tömörség vagy futási idő szempontjából optimális tárgyprogramot hozzon létre. Ez a program későbbi gyakori használata során halmozott időmegtakarítást eredményez.
Az értelmezésnél említett inkrementális fejlesztés itt ún. moduláris programozással pótolható, amelyben ugyan előre meghatározott szerkezettel, de kisebb egységekből lehet a végső programot összeállítani.

A fordítás hátrányai
A fejlesztői ciklus - amíg egy programból eredményt látunk óhatatlanul meghosszabbodik. Különösen igaz ez akkor, ha a szövegszerkesztő, a fordító és a kapcsolatszerkesztő (linkage) programok nem egyetlen integrált rendszerben dolgoznak, hanem csak az operációs rendszeren keresztül (jellemzően parancssori utasításokkal) aktivizálhatók. A forrásprogram hibáinak jelzése a fordítás közben azért nehézkes, mert minden hibához igen sok "következmény" hiba is csatlakozhat, ami áttekinthetetlenné teszi a hibajelzéseket.
A dinamikus tárkezelés csak úgy oldható meg, hogy a fordító a tárgyprogramba beépíti a tárkezelő rutinokat. Ezért sok fordítással megvalósított nyelvben a dinamikus tárkezelést nem engedik meg, vagy csupán mutatók (indirekt címzés) segítségével realizálják.
A tárgyprogram futása során fellépő hibák jelzése is bonyolultabb, hiszen ilyenkor a forrásprogram már nem áll rendelkezésre, a programozó pedig a forrásprogram környezetében várná a hibajelzést.

Látjuk, hogy mindkét technika mellett és ellen nyomós érvek szólnak. Ilyen esetben a választás előtt további feltételeket kell elemezni, és akkor kiderül, hogy a programok fejlesztési szakaszában, amikor sokat módosítunk, csak tesztadatokkal, egy-egy ágat próbálunk futtatni, az értelmezés a hatékonyabb. Üzemszerű, ismétlődő futtatás esetén viszont, amikor a program már többé-kevésbé változatlan, a fordítás kétségtelenül célszerűbb.
Az ily módon való fejlesztés egyetlen akadálya jelenleg, hogy a nyelvekhez általában vagy csak értelmező (BASIC, PROLOG, LISP, LOGO stb.) vagy csak fordító- program (Pascal, C, COBOL, FORTRAN, PL/I stb.) tartozik. A fejlődés azonban kétségtelenül az ún. negyedik generációs nyelvek irányába mutat, ahol egy integrált fejlesztői rendszerben mind az értelmezés, mind a fordítás megoldható (dBASE, BASIC), illetve a fordítás és értelmezés egy speciális keveréke használható (FORTH), vagy egy fordító rendszeren belül az értelmezéshez közel álló üzemmód is megengedett (Turbo Pascal).
(Megjegyzés: az értelmező és a fordítós nyelven való fejlesztés előnyeit ötvözhetjük, ha a programunkat először IS-BASIC-ben írjuk meg (mely sokkal jobban hasonlít a Pascal-ra, mint a BASIC-re, sőt a Pascal-nál rugalmasabb). A már belőtt programot "tükörfordításban" átírhatjuk Turbo Pascal-ba. Csak arra kell figyelnünk, hogy az IS-BASIC-ben való fejlesztés során tekintettel legyünk a Pascal korlátaira: pl. a Pascal csak egyféle elől- és hátul tesztelő ciklust ismer, a FOR ciklusban a lépésköz kötött, szögfüggvényeket csak radiánban számolhatunk stb.)

(1988 július) Bakos Tamás

Mit tud a Forth?
Habent sua fata libelli - állítja a latin mondás. Úgy tűnik azonban, hogy manapság már nemcsak a könyveknek, hanem a programozási nyelveknek is megvan a maguk sorsa. Vajon sejthette-e Charles H. Moore, a FORTH nyelv, illetve programozási rendszer megalkotója, hogy saját céljaira kidolgozott rendszere éppen napjainkban, azaz 15 év múltán válik majd igazán népszerűvé?

Honnan indult, merre tart?
Ma már nem kétséges ugyanis, hogy a FORTH, ez a rendkívül szellemes és egyszerű programozástechnikai megoldás megcsinálta a maga karrierjét.
A '60-as évek végén még csak egy-két amerikai csillagászati obszervatóriumban, néhány lelkes, alkotó szellemű programozó ismerte fel a FORTH-ban rejlő lehetőségeket. Itt rádió teleszkópok és optikai távcsövek automatikus pozicionálását, valamint a vett jelek, illetve asztronómiai felvételek számítógépes feldolgozását programozták a rendszer segítségével.
A nyelv mai alkalmazási területe a játékautomatáktól és az egyszerű lift-vezérlőktől kezdve az űrtávközlésen át. egészen a legmodernebb ipari robotokig terjed, sőt olyan tendencia is megfigyelhető, hogy a mikroprocesszoros automaták, de főként a robotok programozásában a FORTH nyelv fokozatosan kiszorítja a többi programozási nyelvet.
A FORTH programozási rendszer körül nemzetközi szervezetek, szabványosítási bizottságok, tőkés vállalatok és felhasználói klubok sora alakult ki. Évente több tíz könyv és sok száz folyóiratcikk jelenik meg a FORTH-ról és alkalmazásairól az egész világon. Több tekintélyes szakmai folyóirat speciális célszámot is szentelt a FORTH rendszer sokoldalú ismertetésének, míg más folyóiratok állandó FORTH rovatot tartanak fenn. (Egy magyar nyelvű FORTH könyv kiadása is folyamatban van a Műszaki Könyvkiadónál. e cikk szerzőjének tollából. A szerk.) A FORTH iránti érdeklődés "lázgörbéje" tehát egyre meredekebben emelkedik, és ma még semmi jelét sem látni annak, hogy elérte volna a csúcspontját.
Vajon mi a FORTH titka? Melyek azok a tulajdonságok, illetve körülmények, amelyek "felhozták" a FORTH-ot? Mi is a FORTH tulajdonképpen? Mire és hogyan alkalmazható a mi viszonyaink között? Ilyen és ezekhez hasonló kérdésekre keressük a választ ebben a bevezető jellegű cikkben, amelynek egyetlen célja, hogy a FORTH lényegével ismertesse meg az érdeklődő olvasót.

A FORTH operációs rendszer
Mindenekelőtt le kell szögeznünk, hogy a FORTH nem egyszerűen programnyelv, hanem sajátos programozási módszer is, amely egy FORTH operációs rendszer keretében alkalmazható tetszőleges számítástechnikai feladatok megoldására. A FORTH operációs rendszerek minimális kiépítésben egy exekutívot (azaz parancs interpretert), egy FORTH interpretert, egy párbeszédes assemblert, egy text-editort, valamint virtuális tárkezelést tartalmaznak. Mindez így együtt kb. 5-8 kbájt tárat igényel. Ez a tömörség annak köszönhető, hogy ezek a rendszerek nagyrészt saját nyelvükön, azaz FORTH-ban vannak megírva, amelyről tudni kell, hogy tömörebb kódot állít elő, mint ha a rendszert assemblerben írták volna. (Hogy miért, arra később még visszatérünk.) A FORTH operációs rendszerek többnyire "önhordó" (ún. stand-alone) kivitelűek, de más operációs rendszer vezérlete alatt is működhetnek, mint szub- operációs rendszerek.
A FORTH-ban irt programok tömörségére jellemző, hogy például egy Intel 8085-ön futó FORTH rendszer saját párbeszédes assembleré alig több, mint 800 bájt területen elfér. Ugyanennek az assemblernek a forrásprogramja pedig 36 forrássort tesz ki. (Nem tévedés, 36 forrássorból áll az egész program, ahol a sorok hossza 64 karakter vagy annál rövidebb!)
Már ezekből az adatokból is látható, hogy a FORTH különösen alkalmas a kevés tárolóval rendelkező mikro-, sőt piko-számítógépek programozására. illetve az ilyen gépek operációs rendszerének megvalósítására. A FORTH rendszerek növekvő népszerűségének egyik oka tehát a mikroszámítógépek elterjedésében kereshető.

Hordozhatóság
A FORTH terjedésének másik lényeges oka az, hogy a rendszer bármely gépen viszonylag egyszerűen megvalósítható. 150 200 sornyi gépi kódú program kidolgozása után a rendszer már saját nyelvén épül tovább, méghozzá úgy, hogy a FORTH kódot egyszerűen lemásoljuk egy másik FORTH implementációról. Ma már nincs is olyan számítógép vagy mikroprocesszor, amelyre a FORTH rendszert ne implementálták volna.
A virtuális tárkezelés a FORTH-ban 1 kbájtos "screen"-ekben történik. A screenek FORTH forrásprogramokat vagy adatokat tartalmazhatnak. A FORTH exekutív az aktuálisan használt 1 kbájtos blokkokat az operatív tárban tartja, és csak akkor írja vissza őket a mágneslemezre, ha a tárterületre még aktuálisabb screenek beolvasása miatt szüksége van, illetve ha a lecserélendő blokkon előzőleg valamilyen változtatást hajtott végre valamely program vagy az operációs rendszer.
A legtipikusabb FORTH implementáció 6-8 kbájt terjedelmű, emellett 8-10 kbájt szabad RAM tároló marad a programok és adatok tárolására. A FORTH programok tömörségéi tekintve ez igen nagy tárnak számít.

FORTH vagy BASIC?
A FORTH mint önálló operációs és programozási rendszer, némileg hasonlít a BASIC rendszerekre. A lényeges különbségek a következők.
A FORTH részben strukturált és rendkívül moduláris programozást tesz lehetővé. A FORTH programok jóval tömörebbek, és 10-20-szor gyorsabban hajtódnak végre, mint a hasonló feladatokat ellátó BASIC programok. A BASIC nyelv elsősorban számolási feladatokra orientált, míg a FORTH főként vezérlési, automatikai, grafikai, méréstechnikai és szövegfeldolgozási feladatok megoldásában mulatja erényeit.
Bátran állíthatjuk, hogy a FORTH ideális nyelv az automatikával foglalkozó mérnökök számára. Használatához számítástechnikai ismeretekre nincs szükség. A FORTH-ban történő programozás nem "programírás", hanem olyan konstrukciós munka, amelynek során az eleve adott építőelemekből a konstruktőr összetettebb modulokat, majd ilyen modulokból funkcionális részegységeket, ezekből pedig komplex vezérlőrendszereket épít fel. Minden építőelem, modul, részegység és rendszer, amelyet egyszer kidolgozott a konstruktőr, bármikor rendelkezésre áll más, hasonló feladatok megoldásához.

FORTH szavak
A FORTH programok elemi építőkövei a mnemotechnikus FORTH szavak. Minden "szó" önálló szemantikai egység, azaz egy-egy elemi funkciót (egy primitív bemeneti/kimeneti műveletet, aritmetikai, logikai vagy adatmozgató műveletet) végez.
Ha egy FORTH szót begépelünk a rendszer klaviatúráján, azt a FORTH interpreter megkeresi a szótárában, és a szóhoz tartozó rutinra adja a vezérlési, amely azonnal lefut, és a benne meghatározott műveletet végrehajtja. Egy-egy ilyen művelet lehet közvetlenül gépi kódban vagy szekundér kódban kódolva (azaz olyan címlista formájában, amelynek elemei primér (gépi) kódú rutinokra mulatnak).
Amikor a FORTH külső interpretere a szótárban egy szekundér kódú FORTH szót talál, akkor átadja a vezérlést a belső interpreternek, amely gondoskodik a címlistában szereplő címeken található gépi kódú rutinok egymás utáni lefuttatásáról. Egy tipikus FORTH implementáció kb. 50 primér és 100-200 szekundér FORTH szót tartalmaz.
Eddig szóltunk a FORTH rendszer öt fő összetevőjéről: a szótárról, a külső és belső interpreterről, a primér és szekundér műveleti rutinokról. A műveletekhez azonban általában paraméterek (ki- és bemenő adatok) is szükségesek. Ezeket a FORTH-ban egy közös veremtárolón lehet csak elhelyezni. Más paraméterátadási mód a FORTH-ban nincs, és nem is szükséges, hogy legyen.

A FORTH verem-gép
Mielőtt egy FORTH szót továbbítunk a külső interpreter bemenetére, az adott művelethez szükséges adatokat a verem tetejére kell helyezni. Ezeken az adatokon a hívott szó elvégzi a műveletet, miközben a bemeneti paramétereket "elfogyasztja" (azaz törli a veremből). Ha a műveletnek adat jellegű kimeneti eredménye is van, akkor ezt az eredményadatot a verem tetején hagyja kiíratás vagy esetleg további felhasználás céljából. Közbenső eredmények változókban történő tárolására a FORTH-ban tehát nincs szükség. Ez is jelentős tár- és futásidő megtakarítást eredményez.
Egy tipikus FORTH utasítás például a következőképpen állítható össze FORTH szavakból:

4 5 + .

A külső FORTH interpreter felismeri, hogy a 4 és az nem szó, hanem szám, ezért ezeket ebben a sorrendben elhelyezi a paraméterverem tetejére. A + jelet megtalálja a szótárban, és a neki megfelelő összeadás műveletei végrehajtja. Ennek eredményeként a bemeneti adatok eltűnnek, és a verem tetején megjelenik az összeadás eredménye. Ezután a "pont" szó hajtódik végre, amely kiírja a konzolon a verem tetején levő számot - esetünkben a 9-est -, a verem pedig kiürül.
A példából látható, hogy a FORTH, ha aritmetikai műveleteket végez, úgy működik, mint egy régebbi Hewlett-Packard kalkulátor, először az operandusokat adjuk meg, majd a rajtuk elvégezni kívánt műveletet. Ez nem más, mint a matematikából ismert posztfix, vagy más néven fordított lengyel írásmódja az operandusoknak, illetve operátoroknak.
A fordított lengyel írásmód kezdetben szokatlan lehet, de az összetettebb feladatoknál olyan sok előnnyel jár, hogy nem leheteti lemondani róla; sőt éppen ez a veremkezdési koncepció (stack machine) lett a FORTH rendszer egyik alapelve és előnyös tulajdonságainak egyik hordozója.
A FORTH másik nagy jelentőségű koncepciója a párbeszédes, moduláris, alulról felfelé történő programépítés.

Interaktivitás és modularitás
A FORTH programozó néhány perc alatt bővítheti a FORTH rendszert egy új utasítással (FORTH szóval) olyan módon, hogy legépel egy kettőspontot (ebből az interpreter megtudja, hogy utasítás definíció következik, és compiler módba kapcsol), majd megadja az új utasítás nevét, és emögött felsorolja azokat a már ismert FORTH szavakat, amelyeket majd sorban végre kell hajtani, ha ezt a nevet az interpreter működése során később, mint végrehajtandó szót felismeri.
A FORTH szavak sorát pontosvesszővel zárjuk le. A kompiláció abból áll, hogy az új név mögött felsorolt ismert szavakat a rendszer megkeresi a szótárban, de most nem hajtja végre azokat, hanem csak egy listába helyezi sorban a címüket. A compiler az új névről szótári bejegyzést készít, amelynek jobb oldala tartalmazza az így elkészült címlista címét. A pontosvessző (mint FORTH szó) végrehajtása után a rendszer ismét interpreter módba kapcsol.
Az újonnan készült FORTH utasítást azonnal ki is próbálhatja a programozó. Ehhez megadja a szükséges bemeneti adatokat a veremben, majd legépeli az utasítás nevét, végül pedig kiíratja a művelet végeredményét a veremből. Az így letesztelt utasítás ezután már kockázat nélkül használható újabb, még magasabb szintű utasítások megvalósításához. A műveletek ilyen egymásba építésének végső eredménye a legmagasabb szintű FORTH szó, azaz a felhasználói program.
Mivel a közbenső szintek szavainak definiálása után is mindig elvégeztük azok tesztelését, ezért a legfelső szintű szó elkészültekor az egész program letesztelve, készen áll a futtatásra. A programozásnak ez a módja hihetetlenül termelékeny, amellett, hogy az elkészült program - szinte különösebb odafigyelés nélkül - egyben optimalizált kivitelben jelenik meg.
Látható, hogy a FORTH ösztönzi a programozót a moduláris programozásra, illetve a kis lépésekben történő tesztelésre. Ez a két kényszerítőerő rendkívül megbízható, sokszorosan felhasználható programrészeket eredményez, és legalább ötszörösére emeli a programozás teljesítményét (Moore a FORTH-ot "programmer amplifier"-nek, azaz programozó-erősítőnek nevezte).

Élvezet a programozás
Mindemellett a FORTH-ban való párbeszédes programozás élvezetes is, mert a programozó úgy "játszik" az építőelemekkel, mint a gyerek a LEGO építőjátékkal, és eközben folyamatosan figyelemmel követheti programja "intelligenciájának" fokozatos fejlődését.
A FORTH-ban való programozás teljesítményére jellemző, hogy a FORTH Inc. vállalat tizedannyi időre vállalja egy-egy feladat programozását, mint amennyire a FORTRAN-ban vagy Pascalban programozó szoftverházak adnak ajánlatot.
Ez a teljesítmény persze nemcsak annak köszönhető, amit már az eddigiekben is megállapíthattunk a FORTH programozásról, hanem annak is, hogy a már elkészült FORTH programokon kívül az azok fejlesztésében közbülső lépésként keletkező definíciók is, le egészen a legelemibb szintig, újra felhasználhatók. Egy-egy új program megírása hasonló feladatkörben pusztán abból áll. hogy a programozó átnézi az általa, illetve a kollégái által korábban definiált FORTH-szavak jegyzékét, es ezekből válogatva és kombinálva szinte órák alatt új programot készít. FORTH-ban ez a fajta programozás százszor egyszerűbb és gyorsabb, mint bármely más programozási rendszerben.

Tömörség kontra futásidő
Most már láthatjuk, hogy a FORTH-ban irt programok nagyfokú tömörségéi az adja, hogy például egy 16 bites bináris gépi szó kezdetben csak egy egyszerű elemi műveletet ábrázol, de a későbbi sokszintű egymásba skatulyázási lánc végén ugyanaz a 16 bites szó már egy óriási funkciócsoportnak felel meg. A tömörségért azonban némi időveszteséggel kell fizetnünk, hiszen az egymásba skatulyázott FORTH szavaknak megfelelő címláncok futás közbeni felgöngyölítése annál több meddő időt használ fel, minél több szintű (azaz minél tömörebb) a kód.
E két ellentmondó igény között azonban a programozó határozhatja mega kompromisszumot. Például futásidőre orientált programokban a programozó a FORTH szerves részét képező párbeszédes assembler segítségével gépi kódú FORTH szavakat definiálhat, melyek természetes gépi sebességgel hajlódnak végre.

Megbízhatóság
A FORTH-ban írt programok megbízhatósága sokkal nagyobb, mint a többi nyelven irt programoké, pedig a FORTH-ban csak egyetlen szintaktikai és szemantikai ellenőrzés valósul meg a kompiláció során. Ez pedig abból a vizsgálatból áll, hogy a begépelt szó megtalálható-e a szótárban, és ha nem, akkor szám- vagy szövegadatként értelmezhető-e. A nagy megbízhatóság abból ered, hogy mindig csak egy néhány szavas műveletsort kell tesztelni, nem pedig egy előre megírt nagy programban a rejtett hibákat kiböngészni. (Ez utóbbi módszer gyakorlatilag nem is teszi lehetővé hibátlan programok írását.)
A FORTH programozó azonban mindjárt elakad, amint az általa definiált szó tesztelése során hibát észlel, és addig nem folytatja a munkát, amíg a hibát ebben a kis programrészletben meg nem találta. A kész programban így hiba már alig fordulhat elő.
A szintaktikai és szemantikai ellenőrzés hiánya tehát nem okoz zavart a FORTH programozásnál. Ugyanakkor azzal az előnnyel jár, hogy nem köti meg a programozót a lehetséges utasítás- és adattípusok használatában. Ez nagymértékben megnöveli a FORTH rugalmasságát.

Nyitottság
A FORTH harmadik és egyben legnagyszerűbb vívmánya a nyelv teljes nyitottsága. Ezen azt értjük, hogy a FORTH nyelv nemcsak új FORTH szavakkal bővíthető, hanem új direktívákkal is. Az új direktívákkal új compilerek alakíthatók ki a FORTH rendszeren belül, más programnyelvek (például célnyelvek) fordítására.
A FORTH rendelkezik ilyen direktívákkal, mint például: IF - THEN - ELSE, DO - UNTIL stb. Nem rendelkezik azonban mondjuk CASE direktívával. Ha szükségünk volna ilyen direktívára, azt FORTH-ban percek alatt FORTH nyelven megírhatnánk, és ettől kezdve úgy használhatnánk, mintha mindig is része lett volna a nyelvnek.
A FORTH tehát semmit sem tilt meg, hagyja magát továbbfejleszteni, vagy akár teljesen átalakítani is. A FORTH-nak ez a "liberális" szemlélete az egész világon megragadta a legkreatívabb programozókat. Bizonyára ezért írhatta az egyik külföldi folyóirat recenzense, hogy "talán az a FORTH legnagyobb vívmánya és egyben erőssége, hogy bűvkörébe tudta vonni a legragyogóbb számítástechnikai elméket".

A FORTH alkalmazásai
A FORTH-ot teljesítménye, szellemes egyszerűsége, kényelmessége és nyitottsága alkalmassá teszi sok olyan területen való felhasználásra, ahol az eddig használt programozási nyelvek és rendszerek nehézkesnek bizonyultak.
FORTH-ban írták például az IBM személyi számítógépének első "word processor" programját, az OSCAR-7 mesterséges hold fedélzeti irányító és kommunikációs programjait, a legtöbb dugaszolható kazettás videojátékot, több tároltprogram-vezérlésű ipari gép kezelő és fejlesztő rendszerét, a rádióamatőrök automatikus rádió-géptávíró üzenetközvetítő rendszerét, sok CAMAC (mérési adatgyűjtő) programot, fejlesztő rendszereket, operációs és programozási rendszereket. Már ez a rövid felsorolás is mutatja, hogy a FORTH meglehetősen sokoldalú nyelv. Ez nem is meglepő, hiszen olyan rugalmas, hogy könnyűszerrel átalakítható akár célnyelvvé is, bármilyen sajátos alkalmazásra.
Az ipari robotika azért részesíti előnyben a FORTH-ot, mert lehetővé teszi a robotkarok működtetésének párbeszédes programozását, az egymásba épített részmozdulatok lépésenként ellenőrzését. Itt elengedhetetlen, hogy a programozó azonnal kipróbálhassa a célgépen az általa definiált művelet valósidejű végrehajtását. Az ilyen természetű feladatokra ma sem egyszerűbb, sem alkalmasabb programozási módszer nincs, mint a FORTH.
Természetesen a hétköznapi számítástechnikában is sok helyen használható a FORTH. Tételezzük fel például, hogy egy pjt. Z80 alapú mikrogéppel rendelkezik, de Motorola alapú gépre kémek tőle programfejlesztést. Ha van a Z80 gépen FORTH, akkor egy Motorola 6800 assembler és emulátor könnyűszerrel kifejleszthető, és nem kell gépidőért fizetni, illetve más gépterembe elmenni.
Vagy legyen adva egy kisebb üzem, vagy egy gmk, amely mikroprocesszoros vezérlő elektronikai eszközöket gyárt kissorozatban, többcélú felhasználásra. Ha egy ilyen eszközön egyszer megvalósítják a FORTH-ot, akkor a vezérlő programozása, későbbi kezelése és a hibakeresés párbeszédes formában elvégezhető. Az egyszer már kidolgozott rutinok többszörösen felhasználhatók és gazdaságosan értékesíthetők.
Nem kell azonban egy komplett FORTH rendszert betelepíteni a célelektronikába, ha azzal később nem akarunk magas szintű ember gép kapcsolatot kialakítani. Ilyenkor csak egy FORTH alatt futó fejlesztő rendszerre van szükség, amelynek kimenetén ROM/EPROM égető van. Ekkor a célrendszerbe a FORTH szótár nem kerül át, hanem csak egy 5-600 bájtnyi gépi kód (FORTH mag), valamint a célprogram láncolt kódja, amelyet ROM-ba égetve visznek át a célrendszerbe.
A FORTH fejlesztő rendszerek várhatólag rövidesen megjelennek a magyar gyártmányú mikroszámítógépeken is. Az SZKI-ban az MO8X, PROPER 16 és MO6X típusú professzionális személyi számítógépekre már folynak az erre irányuló fejlesztések.

(1983) Pataki Ernő

Mit tud a C nyelv?
A C programozási nyelv megszületése óta páratlan karriert futott be. Ezt részben sajátos erényeinek köszönheti, részben pedig annak, hogy voltak, akik ezekkel az erényekkel maximálisan éltek is.

A C nyelv általános célú, magas szintű programozási nyelv. Ezeknek sorából leginkább azzal válik ki, hogy annyira gépközeli, amennyire ez egyáltalán lehetséges. Azt mondhatnánk,, hogy ő a "legalacsonyabb" magas szintű nyelv. Ráillik a "magas szintű assembler" megnevezés is. Utasításkészlete rendkívül szűk, mindössze a változódeklarációkra, az értékadásra, a vezérlési szerkezetek jó megvalósítására és a függvényhívásra szorítkozik. Tehát minden megvan benne, ami az assemblerekben gépfüggetlen, "gépfeletti" lehet, és mindent kiküszöböltek belőle, ami a nyelvet egy adott géphez vagy egy bizonyos géptípushoz kötné.
Legfontosabb erénye talán az, hogy ismeri a pointerek, a mutatók fogalmát, és a mutatókat a lehető legnagyobb szabadsággal kezeli. Ily módon megvalósíthatjuk a legravaszabb adatszerkezeteket is, és igen szabadon kezelhetjük a rendelkezésre álló memóriát. Ez teszi a C nyelvet rendkívül hatékonnyá.
Ezt használta ki 1972-ben Dennis M. Ritchie, a Bell Laboratórium munkatársa, aki nagy szerepet játszott a C nyelv létrehozásában is. Számos kiváló kollégájával együtt egy merész húzással C-ben írták meg a már 1969 óta létező Unix operációs rendszert. Ezzel minőségileg új szakasz kezdődött a számítástechnikában: jól vizsgázott egy olyan magas szintű programozási nyelv, amely megfelelő kényelmet biztosít ugyan a felhasználónak, de annyira hatékony és "assemblerszerű", hogy lehetővé teszi operációs rendszer megvalósítását. Ugyanakkor elindult a karrierje egy olyan operációs rendszernek, amely nem assemblyben, hanem egy gépfüggetlennek mondható magas szintű programozási nyelven íródott.

Változók, adatszerkezetek
A C nyelv megengedi egyszerű változók, tömbök, valamint adatstruktúrák definícióját. Rendelkezik egy sajátos (persze korántsem ismeretlen) adatszerkezettel is, amelyet "union"-nak nevezünk.

Egyszerű változók
Az egyszerű változók egy-egy adat befogadására képesek. Nevük és típusuk meg-adásával definiálhatók:

int i;

Ez egy integer (egész) típusú változót definiál, melynek neve i. Az általánosan elfogadott típusok:

char karakter
int egész szám
long hosszú (kétszeres pontosságú) egész
float lebegőpontos szám (a Hisoft-C-ben nem implementált)
double kétszeres pontosságú lebegőpontos szám (a Hisoft-C-ben nem implementált)
short u.a., mint az int (nem szabványos, de a Hisoft-C-ben implementált)

Tömbök
Az egyes változókból egyszerűen képezhetünk tömböt:

int arr[20];

ahol a tömb neve arr, elemeinek száma 20 (az indexek 0-tól 19-ig futnak, tehát valóban húsz elemük van), és minden egyes tömbelem típusa egész.
A tömbök használata során az indexek helyén szabadon választhatunk tetszőleges kifejezéseket. De a mi dolgunk arról gondoskodni, hogy az így kapott index ne haladja meg a tömb elmeinek számát. Például:

int arr[20];
int i;
int a,b;
(* tömb definíciója *)
(* indexváltozó *)
(* két munkaváltozó *)

esetén hibás lesz a következő két utasítás:

a=arr[-2];
a=arr[21];

mivel a fordító itt ellenőrzi (képes ellenőrizni) az indexhatárokat. Minden további nélkül leírható és végrehajtható azonban az alábbi utasítássorozat:

i=10;
a=arr[i-16]
b=arr[i+10]

mivel a fordító, nem ismervén i futás közben kapott értékéi, nem is képes semmilyen határellenőrzésre.
A C nyelvben talán a leggyakrabban használt tömbtipus a karakteres tömb, hiszen ez az egyetlen ésszerű lehetőség arra, hogy sztringeket, szövegeket helyezzünk el a programban:

char mess[]="Ez egy uzenet\n";

Ebből a sorból több érdekes tanulságot is levonhatunk. Először is: egy változót vagy tömböt szintaktikailag elég egyszerűen tudunk inicializálni, azaz kezdeti értékkel ellátni. Másodszor: idézőjelek között adhatunk meg szövegeket. Harmadszor: a tömb előkészítésekor nem kötelező megadni, hány eleme van a tömbnek - a fordító meghatározza helyettünk. Például ennek a tömbnek 16 eleme van. És itt következik a negyedik és ötödik fontos dolog. A tömbnek nem azért van 16 eleme, amiért első pillantásra gondolnánk. A \n karaktersorozat az üzenet végén a valóságban nem két, hanem csak egy karaktert ér: ez a karakter a newline. az újsor, amelynek hatására az üzenet kinyomtatása után a terminálon egy kocsivissza-soremelés következik be. (A \ karakter egy ún. ESCAPE (váltó), melynek hatására a fordító elvonatkoztat az utána következő karakter konkrét értékétől, és különleges értelemben használja fel - például az n karakter helyett kocsivissza-soremelés).
Mi akkor hát a 16. karakter, hiszen így csak 15-öt adtunk meg!? Nos, az utolsó megadott karakter, az újsor után a fordító még odatesz egy 0 kódú karaktert is: ez jelzi majd a memóriában a szövegfüzér végét. Az ötödik fontos apróság tehát: a stringek utolsó karaktere mindig a 0 kódú karakter. Programunk innen ismerheti fel a string kezelése közben, hogy vége a szövegnek.

Struktúrák
A C nyelv tetszőleges szerkezetű adatstruktúrák definiálását teszi lehetővé. Ezek segítségével nagyon pontosan és tömören lehet programozni. Lássunk egy példát, utalva a struktúrák egy felhasználási lehetőségére is! Tegyük fel, hogy olyan játékprogramot akarunk írni, amely több tárgyat mozgat egymástól függetlenül a képernyőn. Az egyszerűség kedvéért a tárgyak mindegyike egy-egy karakter, amelyek egyenes vonalú egyenletes mozgást végeznek a képernyőn. Az ilyen tárgyak leírására kiválóan alkalmas a következő struktúra:

struct





};
flyobj {
char code;
int xpos;
int ypos;
int xstep;
int ystep;

(* a karakter kódja *)
(* pillanatnyi pozíció *)
(*       koordinátái *)
(* lépésvektor *)
(*       koordinátái *)

Mint látható, ez a struktúra mindent összefoglal a tárgy mozgatásához szükséges adatokból: a karakter kódját, a tárgy pillanatnyi pozíciójának koordinátáit, valamint a lépésvektort. Magában véve a fenti néhány sor nem hoz létre a memóriában egy ilyen szerkezetű struktúrát. Ezzel pusztán a flyobj nevű struktúra belső felépítését adtuk meg. Egy ilyen struktúra számára a következő utasítással foglalhatunk helyet:

struct flyobj fly1;

ahol az első két szó tulajdonképpen a típus ("legyen egy flyobj típusú struktúra"), fly 1 pedig a memóriaterület neve. Hogyan lehet ezt a struktúrát használni? Sajnos a C nyelv nem teszi lehetővé a struktúrák globális használatát. Nincs tehát mód arra, hogy egy struktúrát egy utasítással átmásoljuk egy azonos szerkezetű másik struktúra területére, nem írhatunk csupa 0-t minden egyes struktúratag helyére stb. A struktúra tagjait külön-külön kell kezelnünk:

fly1.code='*'; (* csillag repül *)

A struktúra tagjai külön-külön változók:

fly.xpos=fly.xpos+fly+xstep;
fly.ypos=fly.ypos+fly.ystep;

Ez az utasítássorozat kiszámítja a repülő tárgy következő pozícióját. Látható, hogy a struktúra tagjaival ugyanúgy bánhatunk, mint az egyes változókkal.
Programunkban természetesen tetszőleges számban definiálhatunk flyobj típusú struktúrákat. Ilyenkor az egyes változókat a kívánt struktúra és a kívánt tag neve azonosítja:

struct flyobj fly1,fly2,fly3;
fly1.code='*';
fly2.code='O';
fly3.xpos=12;

A struktúrák tagjai nemcsak egyszerű változók, de tömbök, sőt újabb struktúrák is lehetnek:

struct


};
struct



};
coord {
int xcoord;
int ycoord;

flyobj {
char code;
sturct coord pos;
struct coord step;

Foglaljunk területet egy ilyen struktúra számára:

struct flyobj fly;

Ekkor persze bonyolultabb lesz a hivatkozás:

fly.pos.xcoord=fly.pos.xcoord+fly.pos.xstep;

hiszen egymásba ágyazott struktúrák tagjaira kell hivatkoznunk.

Unionok
A unión a C nyelv egyik érdekes újdonsága. Definiálása és felhasználása is nagyon hasonlít a struktúráéhoz:

union





};

union

alltyp {
char ch;
int in;
long lg;
float fl;
double db;

alltyp all;

A union egy tagját a következőképpen használhatjuk fel:

all.ch='a'; (* egy karakter beírása *)

A union és a struktúra között az a különbség, hogy a struktúra egyes tagjai egymás után helyezkednek el a tárban, a union tagjai pedig mind egyazon címen kezdődnek. Ha tehát a fenti utasítással felülírom a karakteres uniontagot, akkor egyúttal "belepiszkáltam" a union összes többi tagjába. Felülírtuk az egész típusú "in" alsó felét, a long típusú "lg" negyedéi és így tovább. Az egyes elemek tehát nem egymás mögé, hanem egymásra íródnak - tréfás meglepetéseket tarto-gatva a tájékozatlan programozónak, és kiváló lehetőséget nyújtva különböző típusok fizikai konverziójára:

union


};

dbtost {
double db;
char st[8];

Használjuk most fel ezt a union-deklarációt:

union

dbtost dbst;
dbst.db=3.14159
putchar(dbst.st[3]);

(* double -> string *)
(* be mint double *)
(* 3. byte nyomtatása *)

Egy kétszeres pontosságú lebegőpontos változót tudunk elhelyezni, és ugyanezt az értéket bájtokra bontva kaphatjuk meg, mert a union másik oldala egy nyolc karakteres tömb ennek elemei pedig az egyes bájtok. Ugyanez a konverzió persze visszafelé is elvégezhető.
Természetes, hogy a union is tartalmazhat tömböt és struktúrát is.

Eljárások
A C nyelv eljárásait függvényeknek nevezzük, melyeknek tetszőlegesen sok bemenő paraméterük lehet, viszont csak egy értéket adhatnak vissza a hívójuknak.
A C program függvényekből áll. Minden függvény egyenrangú, azaz nem definiálhatók egymás belsejében, mint például a PL/I nyelvben. Egyenrangúságuk azt is jelenti, hogy bármelyik függvény meghívhatja bármelyiket, beleértve saját magát is - a nyelv lehetővé teszi a rekurzív függvények használatát.
Egyetlen kitüntetett függvény mégis akad, a "main", azaz a "fő" függvény. A program indulásakor a végrehajtás a main első utasításával kezdődik és annak utolsó utasításával ér véget. A main belsejéből hívhatjuk az összes többit - saját függvényeinket éppúgy, mint az ún. könyvtári függvényeket. Lássunk most egy igazi C programot:

main()
{
   printf("Szervusz, kedves olvasom\n");
}

A program meghívja a printf nevű könyvtári függvényt, és ennek segítségével kinyomtatja az idézőjelek közé zárt szöveget beleértve az újsor karaktert is. A \n vezérlőkódon kívül a legtöbb implementációban az alábbi kódokat használhatjuk:

Láthatjuk, hogy egy C függvényt egyszerűen nevének leírásával hívhatunk, a függvény neve után zárójelben megadva a kívánt paramétereket. A paraméterek pedig akár konstansok, akár változók, akár ezekből képzett kifejezések lehetnek. Sőt megengedett az is, hogy egy függvény értéke szolgáljon paraméterként egy másik függvény számára.
Hogyan kell definiálni egy függvényt? Lássunk erre is egy példát:

add(a,b)
int a,b;
{
   int sum;
   sum=a+b;
   return(sum);
}

Ez a függvény két paramétert vesz át, melyek, mint deklarációjuk mutatja, egész típusúak. Az összeadás után a return() utasítás hatására adja vissza paramétereinek összegét.

Mutatók (pointerek)
Nem újdonság, hogy a magas szintű nyelvekben megengedik olyan változók definiálását és használatát, amelyek más változók címét tartalmazzák. A C nyelvben is igen alaposan és precízen átgondolták a mutatók hatékony, logikus szerepét. Ez kényelmessé és biztonságossá teszi az indirekt címzést.
Lássunk akkor egy mutatót! Tegyük fel először, hogy egy stringet akarunk megcí-mezni. Definiáljunk tehát egy karakter típusú stringet és egy mutatót!

char mess[]="Ez egy uzenet!\n";
char *cpnt;

Egy mutatót ugyanúgy kell deklarálni, mint egy közönséges változót, de neve előtt csillaggal jelezzük, hogy ez a változó egy mutató. Hogyan adhatunk értéket a mutatónak és hogy használhatjuk fel azt?

cpnt=&mess[0];

Az "&" ("és") operátor segítségével képezhetjük bármelyik objektumunk címét.
Érdekességként megemlítjük, hogy egy tömb neve az első tömbelem címével egyenértékű, tehát a fenti értékadást így is el lehetne végezni:

cpnt=mess;

Most a cpnt mutató a mess nevű üzenet első karakterére (E) mutat. Ha most indirekt címzéssel kiolvassuk ezt a karaktert, akkor könnyen ki is nyomtathatjuk a putchar() könyvtári függvény segítségével:

putchar(*cpnt);

Itt a cpnt elé írt csillag jelzi az indirekciót - vagyis, hogy nem a cpnt tartalmát, hanem az általa címzett karakteres változó tartalmát kívánjuk felhasználni. Hogyan férhetünk most hozzá a következő karakterhez? Nos, ennek címe éppen eggyel nagyobb, mint az előző karakteré - adjunk tehát egyet a mutatóhoz:

cpnt=cpnt+1;

Ezután az újabb putchar() hívás már a második karaktert fogja kiírni és így tovább.
Mivel egy változó értékének megnövelése vagy csökkentése igen gyakori művelet, erre külön operátort vezetlek be a C megalkotói, a ++ és -- operátorokat. A nyelv egyik erénye, hogy e két operátort ún. prefix (tehát változó előtti) és postfix (változó utáni) helyzetben is használhatjuk. Legyen "a" és "b" két egész típusú változó. Ekkor:

int a,b;
   a=5;
   b=a++; (* "b" 5,"a" 6 lesz *)
   b=++a; (* "b" 7, "a" is 7 lesz *)

Tehát a különbség az, hogy a postfix pozícióban felhasználás után, prefix pozícióban felhasználás előtt növekszik meg a változó értéke. Ezek az operátorok minden változó esetében használhatók, tehát mutatókra is alkalmazhatjuk őket:

cpnt++;

illetve

++cpnt;

Az előbbi első lépésben felhasználja a mutató értékét, majd megnöveli, az utóbbi pedig először növeli, utána használja fel. Ennek számos esetben vehetjük hasznát. Tegyük fel például, hogy egy stringet át akarunk másolni egy másik stringre. A pnt1 mutató címezi a kiindulási stringet, a pnt2 pedig a cél-stringet. Ekkor a

*pnt2++=*pnt1++;

utasítás átmásolja a soron következő karaktert, egyúttal megnöveli a mutatókat - készen állunk tehát a következő karakter másolására, csak valahogy meg kell ismételtetnünk az utasítás végrehajtását.
A mutatók használatában a C nyelv éppen itt, a címaritmetika területén hozott újat. Mi történik, ha nem karakterek, hanem például lebegőpontos változók tömbjét címezzük meg egy mutatóval? Ekkor a ++ operátor természetesen nem eggyel, hanem néggyel, azaz egy lebegőpontos változó hosszával növeli meg a mutatót - így az a tömb soron következő elemére fog mutatni.
Megengedett az, hogy mutatókhoz egész kifejezéseket adjunk, sőt, két azonos típusú mutatót ki is vonhatunk egymásból. Az eredmény az indexek különbsége lesz:

float farr[20];
float *pnt1,*pnt2;
int a;
   pnt1=&farr[8];
   pnt2=&farr[17];
   a=pnt2-pnt1;

Ekkor "a" értéke nem 36 lesz, amennyi a címek közötti fizikai különbség, hanem 9 - a megcímzett elemek indexeinek különbsége.
Egy mutató típusa, mint láttuk, a címaritmetikai műveletek elvégzésében játszik sze-repet. Ha viszont a mutató struktúrára címez, akkor a fordító azt is ellenőrzi, hogy helyesen hivatkoztunk-e a struktúra tagjaira. Tehát igen precízen kell hivatkoznunk a struktúra tagjaira, és nem fenyeget az a veszély, hogy a mutatók segítségével egészen más struktúrák elemeit fogjuk megcímezni.
A struktúramutatók használatának két tény ad különleges fontosságot. Az egyik az a természetes dolog, hogy struktúrákból tömböt is szervezhetünk:

struct flyobj flyarr[10];

Ekkor a tömb elemeit igen kényelmesen címezhetjük meg egy azonos típusú mutató segítségével.
A másik, ennél fontosabb tény, hogy struktúrát "egészben" nem tudunk függvénynek paraméterként átadni, bár ez igen sokszor kívánatos lenne. Ilyen esetben segítenek a mutatók: ha struktúrát nem is adhatunk meg paraméterként, a struktúra címét egyszerűen átpasszolhatjuk a tömbök címéhez hasonlóan.

Ciklusszervező utasítások
A C nyelv háromféle, igen egyszerű és kényelmes ciklusszervező utasításokkal rendelkezik:

A while utasítás a while kulcsszóból, egy kifejezésből és egy utasításból áll. A kifejezés tetszőleges C kifejezés lehet. A program először kiértékeli ezt a kifejezést, majd ha igaz, azaz értéke különbözik a 0-tól, végrehajtja az utasitás(oka)t, és visszatér a ciklus elejére; újra kiértékeli a kifejezést, és ha igaz... Amennyiben a kifejezés értéke hamis (azaz 0), akkor a program végrehajtása a blokk után folytatódik. Lássunk egy nagyon egyszerű példát:

a=20;
while(a)
{
   a--; (* a csökkentése *)
}

Ez a kis ciklus éppen húsz alkalommal fut le. Sok értelme azonban nincs. A következő legyen egy értelmesebb példa. Tegyük fel, hogy a pnt1 mutató egy 0 karakterrel lezárt karakteres tömb kezdetére mutat, a pnt2 mutató pedig egy olyan memóriaterületre, amelyre az előbbi karaktertömböt át akarjuk másolni. Lássuk a ciklust először "gyalogosan", majd pedig egy elegánsabb, C-szerűbb változatban:

while ( *pnt1 !=0)
{
   *pnt2++ = *pnt1++;
}

A while alatti kifejezés most már egy igazi logikai kifejezés - a program összehasonlítja a != (nem egyenlő) operátor két oldalán szereplő kifejezéseket, az egész kifejezésnek pedig igaz az értéke, ha a közéjük irt feltétel teljesül. Tehát a fenti ciklus pontosan addig ismétlődik, amíg a kiindulási tömböt címző pnt1 nem a tömböt lezáró 0 kódú karakterre mutat. A ciklusmag pedig egy fentebb már ismertetett szerkezet: először használja, majd módosítja (növeli) a mutatók értékét - tehát először átmásolja a pnt1 által címzett karaktert a pnt2 által címzett memóriapozícióra, majd megnöveli pnt1 és pnt2 értékét.
Ennek a programrészletnek van egy roppant súlyos hibája: a tömböt lezáró 0 kódú karaktert nem másolja át, így a céltömb "végtelen" hosszú lesz, hacsak külön utasítással a végére nem másoljuk a záró zérót.
Lássuk most az igazi, a valóban C-szerű megoldást! Azt használjuk ki, hogy egy egyszerű értékadás is egy kifejezés, melynek van saját értéke:

int a,b,c,d;
   a=b=c=d=0;

Először d kap egy 0 értéket, de a d=0 értékadás is egy kifejezés, melynek értéke az, amit d kapott - most a 0. Tehát ez a 0 öröklődik" előbb a c, majd a b, végül pedig az a változóba. Ha pedig ez így van, akkor egy értékadást nyugodtan beleírhatunk a ciklusvezérlő részébe is:

while ((*pnt2++ = *pnt1++) != 0)
{
}

Mit csinál ez a (C nyelvben teljesen szokványos) utasítássorozat? Először kiértékeli a while alatti kifejezést, amely egy logikai kifejezés. Jobb oldala 0, bal oldala egy értékadás, amelyet egy külön zárójel emel ki. A program tehát az értékadást végzi el először. Ez a szokásos módon megy végbe, megnöveli a mutatókat, de kimenő értéke az, ami a pnt2 által címzett memóriapozícióba íródott - tehát az átmásolt karakter. A program tehát az átmásolt értéket veti össze a nullával így a ciklus addig ismétlődik, míg csak át nem másolja a kiindulási tömböt lezáró 0 karaktert is, hiszen addig egyetlen karakterkódja sem lehet 0! A ciklus magja ez esetben üres, hiszen minden szükséges tevékenységet elvégzett már a ciklus vezérlő része.

A for ciklust a leggyakrabban akkor használjuk, ha előre tudjuk, hogy egy utasítást hányszor akarunk végrehajtani. A kifejezés1-ben állítjuk be a ciklusváltozó kezdő értékét, a kifejezés kettőben a ciklusba való lépés feltételét, ez a leggyakrabban egy logikai kifejezés, a kifejezés3-ban pedig léptetjük a ciklusváltozót.

A do-while ciklus hasonlít a while ciklushoz. A ciklusba itt is addig lépünk, amíg a kifejezés értéke nem 0, logikai kifejezés esetén amíg a kefejezés igaz. Alapvetően abban különbözik az előző két ciklustól, hogy itt a ciklusmag utasítása legalább egyszer végrehajtódik.

Többszintű mutatók
A mutatók egyik legrokonszenvesebb sajátossága az, hogy nemcsak alaptípusokra vagy struktúrákra tudnak mutatni, hanem mutatókra is. Egy mutatót címző mutató tehát egy változó címének címét tartalmazza. Lássunk erre is példát. Tegyük fel, hogy valamilyen célból ki akarjuk nyomtatni a hónapok nevét. Ekkor persze a neveket előre elhelyezzük egy-egy karakteres tömbben:

char jan[]="Januar"
char feb[]="Februar"
char mar[]="Marcius"
...
char dec[]="December"

Definiáljunk most egy újabb tömböt, amely karaktereket címző mutatókból áll:

char *month={jan,feb,mar,...,dec};

Ez utóbbi definíció egy olyan mutatókból álló, tizenkét elemű tömböt definiál, amelynek elemei rendre megegyezik a jan[], feb[], mar[], ... dec[] karaktertömböket, így tehát például month[5] a hatodik mutató, amely - minthogy 0-tól kezdődik az elemek számozása - a jun[] nevű tömb kezdőcímét tartalmazza. Próbáljunk most meg egy olyan mutatót definiálni, amely a month[] tömb tagjainak megcímzésére képes:

char **monthpnt;

azaz mutató egy karakter(tömb) címét tartalmazó mutatóra. Lássuk most az értékadást:

monthpnt=month;

mivel month egy tömb, amelynek neve egyenértékű a kezdőcímével. Ekkor:

*monthpnt

a month tömb első eleme, vagyis egy olyan mutató, amely a jan[ ] tömbre mutat:

**monthpnt

pedig egyenértékű a jan[] tömb első elemével, azaz a J karakterrel! Ha pedig rendelkezésünkre áll a kívánt hónap sorszáma (például 6. hónap), akkor e hónap nevét megcímzi egyfelől a

month[5]

másfelől pedig a

*(monthpnt+5)

hivatkozás is.

A fenti kis példák és a hozzájuk tartozó eszmefuttatások talán jól körvonalazzák azokat a szokatlan lehetőségeket, amelyek oly használhatóvá teszik a C nyelvet rendszer- vagy rendszerközeli programok írására. Hiszen az előbbihez hasonló indirekt hivatkozás még egy "mindenre elszánt" assembler programozót is arra késztetne, hogy alapos megfontolás után lásson csak neki a program megvalósításának. Egy percig sem állíthatjuk azt, hogy ilyen szerkezetek megvalósítása a C nyelvben nagyon egyszerű lenne: a muta¬tók kezelésének jól átgondolt filozófiája azonban lényegesen egyszerűbbé teszi ilyen és ehhez hasonló rémtettek elkövetését.

(1988 május-június) Pethő Ádám

Fedezzük fel együtt!

Nagyon izgalmas feladat és jó szórakozás egy "fekete doboz", az ismeretlen működését megismerni, leírni. Számítógépünket, az Enterprise-t is felfoghatjuk ilyennek, amiről azt tudhatjuk meg a Felhasználói kézikönyvből, hogy milyen BASIC nyelvű parancsokat, utasításokat fogad el és hatásukra mit csinál a számítógép. Akik a könyv segítségével már megismerték az Enterprise-t, azoknak csupán csak más utat ajánlunk, ami persze sok meglepetéssel szolgálhat. Felfedező utunkra tehát minden Enterprise-tulajdonost meghívunk, figyelembe véve, hogy kezdők is vannak - és remélhetőleg egyre többen lesznek - közöttünk.
Cikksorozatunkkal csak a felfedezés irányítására vállalkozunk. Azt szeretnénk, ha a felfedezés örömét az olvasó élné át, akkor, amikor kis programjainkat futtatja, módosítja, kiegészíti és önállóan is készít programokat. Az utat olyan programok segítségével járjuk be, amelyek bemutatják a "fekete doboz" működését, alkalmazását, ugyanakkor igénylik az olvasó aktív közreműködését.
A Felhasználói kézikönyvre egyébként többször fogunk hivatkozni, mert abban megtalálható az egyes témakörök részletesebb leírása. A hivatkozás jelölése például: F/7, ami azt jelenti, hogy ezen az oldalon kezdődik a számítógép összeállítását leíró fejezet. Amennyiben mást írnánk a cikkben, mint ami a könyvben olvasható, úgy hívjuk segítségül a számítógépet a vita eldöntéséhez.
Segítségünkre lehet a tanulásban az alábbi algoritmus, amivel a javasolt tanulási módszert mutatjuk be:

  1. Gépeljük be az első programot!
  2. Indítsuk el a programot F1 START vagy a megszokott RUN paranccsal!
  3. Figyeljük meg, hogy mi történik, és fogalmazzuk meg, hogy mit csinálnak a programban szereplő utasítások!
  4. Olvassuk el a programhoz tartozó magyarázatot! Nézzük meg a segédkönyvekben az utasítások leírását!
  5. Kísérletezzünk! Változtassuk meg a programban szereplő adatokat, és figyeljük meg, mi történik! Ellenőrizzük az értékhatárokat, az értelmezési tartományokat!
  6. Oldjuk meg másképpen a feladatot! Egészítsük ki! Bővítsük a programot!
  7. Keressünk feladatokat, amelyeknek a megoldásához felhasználhatjuk a tanultakat!
  8. A cikk végére értünk?
    - Igen: próbáljuk meg hasznosítani a tanultakat! Jó munkát kívánunk! Vége.
    - Nem: összehasonlítjuk a következő programmal a már begépelt programot, és szükség szerint módosítjuk vagy töröljük a programot és begépeljük az újat, aztán folytatjuk a munkát a 2. ponttal.

Az ellipszis és a többiek
No, de vágjunk neki az utunknak! Első lépésként gépeljük be az 1. programot. Rögtön egy kis segítség: rossz billentyű lenyomásakor a felesleges karakter(eke)t az ERASE vagy a DEL billentyű lenyomásával törölhetjük. Ha kihagytunk karakter(eke)t, akkor az INS billentyűvel csinálhatunk helyet. A kis botkormánnyal vihetjük a kurzort a javítás helyére. Az utasítássorok végén, illetve a javítás után ne feledkezzünk meg az ENTER billentyű lenyomásáról, mivel az utasítássorok beírása vagy a javítás csak ekkor válik véglegessé. Erről meggyőződhetünk, ha begépeljük a LIST parancsot. A parancsokat is az ENTER billentyű lenyomásával zárjuk le. Akkor is láthatjuk a program listáját, ha a 2-es funkcióbillentyűt nyomjuk le.

1 PROGRAM "Pelda-01.bas"
10 GRAPHICS HIRES 2
20 PLOT 600,360,
30 PLOT ELLIPSE 200,100,
40 PLOT PAINT

A programot a RUN paranccsal, vagy az F1 START lenyomásával indíthatjuk el. Miután megnéztük a képernyőn megjelenő ellipszist, értelmezzük a programban szereplő utasításokat!

Egy grafikus pont több képernyőpontból áll. Változtassuk meg a 40-es sorban a koordinátákat és állapítsuk meg, hogy hány képernyőpontból áll egy pont a kétszínű grafikus képernyőn! Ezután a 10-es sor átírásával nézzük meg a többi grafikus képernyőt is. Ellenőrizzük az alábbi táblázatot, ahol:

A B C D E
GRAPHICS HIRES 2 2 4 640 180
GRAPHICS LORES 2 4 4 320 180
GRAPHICS HIRES 4 4 4 320 180
GRAPHICS LORES 4 8 4 160 180
GRAPHICS HIRES 16 8 4 160 180
GRAPHICS LORES 16 16 4 80 180
GRAPHICS HIRES 256 16 4 80 180
GRAPHICS LORES 256 32 4 40 180

Gyorsabban megkereshetjük az értékeket a 2. példaprogrammal.

1 PROGRAM "Pelda-02.bas"
10 GRAPHICS HIRES 256
20 PLOT 600,360,
30 PLOT ELLIPSE 200,100,
35 INPUT X
40 PLOT X,360
50 GOTO 35

A 35-ös sorban az X változó értékét kérjük, azaz a festés kiindulópontjának vízszintes koordinátáját. Indítsuk el a programot, és a kérdőjel megjelenése után írjuk be a koordináta értékét, és nyomjuk le az ENTER billentyűt. Az 50-es sorról mindig a 35-ös sorra ugrunk vissza a GOTO utasítással, ennélfogva folyamatosan kéri a program a koordinátákat. Ebből a "végtelen ciklus"-ból a STOP billentyű lenyomásával léphetünk ki. Figyeljük meg, hogy csak a négy alsó sorban látszik a kiírás. Ennyi a szöveges képernyő, a képernyő többi része grafikus. Ide rajzolhatunk.

A 3. listának a programjával szakaszokból ábrát rajzolhatunk a képernyőre. A szakaszok végpontjainak koordinátáit úgy kell megadnunk, hogy a két adat közé vesszőt teszünk és a második adat után lenyomjuk az ENTER billentyűt. A program begépelése előtt adjuk ki a NEW parancsot, amivel töröljük az előző programot.

1 PROGRAM "Pelda-03.bas"
10 GRAPHICS HIRES 2
20 INPUT X,Y
30 PLOT X,Y;
40 GOTO 20

A 30-as sorban az PLOT utasításban a koordináták után a pontosvesszővel azt jelezzük, hogy letesszük a "ceruzát" a "papírra". Ez azt jelenti, hogy amikor a következő pontba mozgatjuk a "ceruzát", akkor rajzolni fog egy szakaszt. Keretezzük be a képernyőt, azaz keressük meg a legkisebb és legnagyobb koordinátájú pontjait a képernyőnek!

Most a számítógép adja meg véletlenszerűen a szakaszok végpontjait (4. példa). A begépeléshez segítség: az egyenlőségjel és a zárójelek begépelésekor a SHIFT billentyűt lenyomva kell tartani. A LET kulcsszót nem kell beírni, de listázáskor a gép már kiírja nekünk.

1 PROGRAM "Pelda-04.bas"
10 GRAPHICS HIRES 256
20 FOR I=1 TO 100
30   LET X=RND(1280):LET Y=RND(720)
40   SET INK RND(256)
50   PLOT X,Y;
60 NEXT

A képernyőpontok vízszintes koordinátáit 1280-nál kisebb, függőleges koordinátáit 720-nál kisebb nem negatív egész számmal adjuk meg. Az RND-függvények ilyen számokat állítanak elő a programban (0 <= X < 720; 0 <= Y < 1280). A 256 szín közül az RND-függvénnyel választjuk ki a "ceruza" színét (30-as sor).
A FOR és a NEXT utasítás együtt hoz létre egy ciklust, azaz ismétlődést. I értéke 1-től kezdődően egyesével növekszik 100-ig, tehát százszor ismétlődnek a FOR és NEXT utasítások között megadott utasítások, vagyis száz képernyőpont kerül a képernyőre. (lásd a F. Kézikönyv ciklusokra vonatkozó fejezetét.) Megfigyelhetjük azt is,hogy a program minden lefuttatásakor ugyanaz a "véletlenszerű" ábra jelenik meg.

Most törölni fogjuk a megrajzolt szakaszt, csak egy szakaszt látunk majd a képernyőn (5. példa).

100 PROGRAM "Pelda-05.bas"
110 GRAPHICS HIRES 256
120 SET PAPER 96
130 CLEAR GRAPHICS
140 LET X1=100:LET Y1=200
150 RANDOMIZE
160 FOR I=1 TO 200
170   LET X=RND(1280):LET Y=RND(720)
180   SET INK RND(256)
190   PLOT X1,Y1;X,Y
200   SET INK 96
210   PLOT X1,Y1;X,Y
220   LET X1=X:LET Y1=Y
230 NEXT

A kirajzolt szakasz végpontja lesz a következő szakasz kezdőpontja, ezért az X és Y változók értékeit áttesszük, és így megőrizzük az X1 és Y1 változókban. A SET PAPER utasítással a papír színét állítjuk be, és szükség van a CLEAR GRAPHICS utasításra is, hogy a képernyő beszíneződjön. A vonalat úgy töröljük, hogy a "ceruza" színét a "papír" színére állítjuk (180-as sor).

Gyönyörű színkavalkád
Az előző részben az ismerkedés módszerével és a különböző rajzok elkészítésével foglalkoztunk. Most próbáljuk ki a gép színezési lehetőségeit. A 6. listán lévő programmal az Enterprise 256 színében gyönyörködhetünk, és megtudhatjuk a színek kódszámait. A kódszámok kiírásához a karakterláncokkal végezhető műveleteket és függvényeket kell felismernünk (ld. F. kézikönyv karakterláncokról szóló fejezetét).

100 PROGRAM "Pelda-06.bas"
110 GRAPHICS LORES 256
120 LET K=220
130 FOR I=0 TO 18
140   SET INK K+I
150   PLOT 64*I,0;64*I,719
160   LET K$=STR$(K+I)
170   LET N=LEN(K$)
180   LET L=2*I+1
190   PRINT TAB(L) K$(N-2)
200   PRINT TAB(L) K$(N-1)
210   PRINT TAB(L) K$(N)
220   FOR J=1 TO 5
230     PRINT CHR$(176);
240   NEXT
250 NEXT
260 GET Q$
270 IF Q$="" THEN 260

A program sorainak magyarázata:

Egyszerre 18 vonalat tudunk kirajzolni a programmal, ezért a K értékét kell beállítani a 120-as sorban a program futtatása előtt, ha a többi színt is látni akarjuk.

Ismerős kép jelenik meg a képernyőn, ha a 7. példaprogramot begépeljük és elindítjuk.

100 PROGRAM "Pelda-07.bas"
110 REM --- enterprise ---
120 GRAPHICS HIRES 256
130 RANDOMIZE
140 LET X$="ENTERPRISE"
150 FOR I=1 TO 10
160   SET INK RND(256)
170   PLOT I*128-128,360,
180   PRINT £101:X$(I)
190 NEXT
200 PRINT TAB(5) "C 1985 Intelligent Software Ltd"
210 SET INK RND(256)
220 LET I=RND(10)
230 PLOT I*128,360,
250 PRINT £101:X$(I+1)
260 GET Q$
270 IF Q$="" THEN 210

A 2, 4 és a 16 színű grafikus képernyő színezésének vizsgálatát segíti a 8. példaprogram beírása.

100 PROGRAM "Pelda-08.bas"
110 ! - szinek 2, 4, 16 -
120 GRAPHICS LORES 16
130 SET PALETTE 0,2,3,4,5,6,7
140 SET BIAS 8
150 FOR I=0 TO 15
160   SET INK I
170   PLOT I*64,0;I*64,600
180   PLOT 0,719,:PRINT £101:I
190   GET Q$
200   IF Q$="" THEN 190
210   PLOT 0,719,:PRINT £101:CHR$(159) CHR$(159) CHR$(159)
220 NEXT

A SET PALETTE utasításban nyolc szín kódszámát kell megadnunk. A programban az első nyolc színkódot soroltuk fel. A SET BIAS a következő nyolc színt jelöli ki. A SET INK utasítással - a 2, 4 és 16 színű képernyőnél - a PALETTE és a BIAS utasításokkal kijelölt színek sorszámait kell megadnunk. Ezt változtatjuk a FOR ciklussal.
A kétszínű és négyszínű képernyőkön csak az első kettő, illetve az első négy színt használhatjuk: a 0, 1, illetve a 0, 1, 2, 3 sorszámúakat. Nagyobb sorszám megadásakor a számítógép néggyel osztja a sorszámot, és a maradék jelöli ki a színt. Adjuk ki a SET PALETTE BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE parancsot! A színeket megadhatjuk az RGB függvénnyel is. A grafikus képernyőre írunk a 170-es és a 200-as sorokban. A számítógép alapesetben a 101-es csatornán tárolja a grafikus képernyő tartalmát. Ezt a csatornát kell kijelölnünk, ha írni akarunk a grafikus képernyőre.
Futtassuk le a 7. programot, és nyomjuk le a DISPLAY TEXT funkcióbillentyűt (SHIFT + F5), majd a DISPLAY GRAPHICS funkcióbillentyűt (SHIFT + F6). Így hívhatjuk elő a grafikus, illetve a szöveges képernyőt.
Nyomjuk le a DISPLAY TEXT funkcióbillentyűt, és adjuk ki a

DISPLAY £101:AT 6 FROM 1 TO 5

parancsot! A grafikus képernyő első öt sorát előhívtuk a 101-es lapról, és megjelenítettük a 6. sortól kezdődően.
Nyomjuk le a TEXT billentyűt és adjuk ki a

DISPLAY £102:AT 12 FROM 1 TO 4

parancsot! A 12. sortól kezdődően ugyanaz, mint az első négy sorban. A 101-es csatorna tehát a grafikus, a 102-es a szöveges képernyőt tárolja. A többi csatornáról később lesz szó. Látható, hogy bármelyik nyitott képernyő tartalmát - vagy egy részletét - megjeleníthetjük, tetszőleges pozícióban, akár többször is.
A grafikus képernyőkön a PLOT utasítással is kijelölhetjük a kiírás helyét.

GRAPHICS ATTRIBUTE utasítással olyan grafikus lapon dolgozhatunk, amelyen minden színcellának (8 pont széles és 1 pont magas) egy-egy tinta-, ill. papírszín felel meg. Ez az üzemmód 16 színű palettával még ugyanazt a felbontást adja, mint a négyszínes HIRES grafika. Ennek használatát a 9. példában tanulmányozhatjuk.

100 PROGRAM "Pelda-09.bas"
110 ! - attributum kepernyo -
120 GRAPHICS ATTRIBUTE
130 SET BORDER 42
140 SET PALETTE 0,25,125,12,2,13,38,255
150 SET BIAS 60
160 LET X$="MISKOLC":LET J=15
170 FOR K=0 TO 7
180   SET ATTRIBUTES 2^K
190   LET L=LEN(X$)*32+32:LET I=2*K+2
200   LET X=J*32-48:LET Y=720-I*36-18
210   SET INK 8+K
220   PRINT £101,AT I,J:X$ "    " 2^K
230   SET INK K
240   PLOT X,Y;X+L,Y;X+L,Y+72;X,Y+72;X,Y
250 NEXT

A 10. listán látható program talán ötletet ad egy játékprogram megírásához.

100 PROGRAM "Pelda-10.bas"
110 GRAPHICS ATTRIBUTE
120 LET J=0:X$=" "&CHR$(154)
130 PRINT £101,AT 10,J:X$
140 LET J=J+1
150 IF J<40 THEN 130

Felfedező utunk során arra mindig kell időt szakítanunk, hogy ismereteinket, tapasztalatainkat rendszerezzük és kiegészítsük újabb, talán kevésbé fontos, nélkülözhető, ugyanakkor munkánkat megkönnyítő vagy újabb lehetőségeket nyújtó ismeretekkel.
Nézzük a programok begépelését, javítását, módosítását. A betűk, számok, írás- és műveleti jelek begépelésére szolgáló billentyűkön kívül az ENTER, SHIFT, valamint az ERASE, DEL és az INS billentyűket használtuk eddig. Gyorsabban mozgatharjuk a kurzort és gyorsabban végezhetjük a javítást, ha tudjuk, mi történik akkor, amikor a botkormányt mozgatjuk, vagy az ERASE, az INS, a DEL billentyűk valamelyikét lenyomjuk, miközben lenyomva tartjuk a SHIFT vagy a CTRL billentyűt (lásd a felhasználói kézikönyv 39-40. oldalán). Írassuk ki többször valamelyik programot a képernyőre (LIST), és próbáljuk ki, mi történik a billentyűk használatakor.
A programkezelő parancsok közül a legfontosabb a NEW, a RUN és a LIST parancs. Az AUTO parancs megkímél a sorszámok begépelésétől, a DELETE paranccsal programsorokat törölhetünk, a RENUMBER átsorszámozza a programot. A parancsok közül néhányat a funkcióbillentyűkkel is megadhatunk (Felhasználói kézikönyv, 46. oldal).
Tegyünk különbséget a HOLD és a STOP billentyűk hatása között. Az első csak leállítja (szünetelteti), a második megszakítja a program futását. Megszakításkor a program futása a STOP billentyű lenyomása után, a CONTINUE parancs hatására folytatódik. A programok mentése a SAVE, ellenőrzése a VERIFY, beolvasása a LOAD paranccsal lehetséges. A magnetofon távvezérlésének ki- és bekapcsolására a REM1, illetve a REM2 parancsok szolgálnak. Ez attól függ, hogy a távvezérlőt melyik bemenettel kötöttük össze.
A parancsok részletes leírását a Referencia Kézikönyvben kell keresnünk.

Dőlnek a dominók
Az előző két részben elsősorban az Enterprise színeivel foglalkoztunk. A színek számát a GRAPHICS utasítással adtuk meg, a színeket a SET PALETTE utasítással jelöltük ki, akkor, ha kettő, négy és 16 színnel dolgoztunk. A keret színét a SET BORDER, a "papír" színét a SET PAPER, a "ceruza" színét a SET INK utasítással állíthatjuk be. A SET PALETTE utasítással megadott színek közül egy a SET COLOUR utasítással változtatható. A színezést ezek után az olvasóra bízzuk. Most a grafikával foglalkozunk egy kicsit bővebben, miközben megismerkedhetünk a legalapvetőbb BASIC utasításokkal és programozási alapfogalmakkal, valamint a videolapokkal.
Rajzoljunk egy téglalapot! Először numerikus konstansokkal - számokkal - adjuk meg a csúcspontok koordinátáit (11. példa).

100 PROGRAM "Pelda-11.bas"
110 GRAPHICS HIRES 2
120 PLOT 200,200;500,200;500,400;200,400;200,200
130 PLOT 340,300,PAINT

Jelöljük a téglalap bal felső pontjának koordinátáit X,Y-nal , és az oldalak hossza legyen A és B (12. példa).

100 PROGRAM "Pelda-12.bas"
110 GRAPHICS HIRES 2
120 INPUT PROMPT "csucspont (x,y)=":X,Y
130 INPUT PROMPT "Oldalak (A,B)=":A,B
140 IF X+A>1279 OR Y+B>719 THEN 120
150 PLOT X,Y;X+A,Y;X+A,Y+B;X,Y+B;X,Y
160 PLOT X+A/2,Y+B/2,PAINT

Az X,Y,A és B változók értékeit az INPUT PROMPT utasítással kérjük, amivel szöveg is kiíratható. A 140-es sorban az IF utasítással leellenőrizzük, hogy a megadott értékekkel nem lógunk-e ki a képernyőről. Ha igen, újra bekérjük az adatokat.

Akkor, ha a téglalapot ferdén szeretnénk a képernyőre rajzolni, egyszerűbb a teknőcutasításokat használni.

100 PROGRAM "Pelda-13.bas"
110 OPTION ANGLE DEGREES
120 GRAPHICS HIRES 2
130 LET X=400:LET Y=300:LET A=300:LET B=100
140 INPUT PROMPT "Elforgatas szoge=":FI
150 PLOT X,Y;ANGLE FI;FORWARD A;ANGLE 90+FI;FORWARD B;ANGLE 180+FI;FORWARD A;ANGLE 270+FI;FORWARD B
160 LET X=X+400:PLOT ANGLE 0
170 PLOT X,Y;LEFT FI;FORWARD A;LEFT 90;FORWARD B;LEFT 90;FORWARD A;LEFT 90;FORWARD B
180 PLOT X,Y,ANGLE FI+ATN(B/A)/2,FORWARD SQR(A*A+B*B)/2,PAINT

A 13. példában az OPTION ANGLE DEGREES utasítás hatására az ANGLE, LEFT, illetve a RIGHT utasításokban szögekben adhatjuk meg az elfordulás mértékét. Az ANGLE utasítással a képernyő jobb oldala felé mutató irányhoz képest forgathatjuk a téglalapot, a LEFT és RIGHT utasításokkal pedig a "ceruza" pillanatnyi irányához adódik a szög. A 150-es sorban alaphelyzetbe állítottuk a "ceruzát". Egy kis matematikai ismerettel most is megoldható, hogy a "ceruza" a kifestés előtt a téglalap középpontjába kerüljön (180-es sor).
Szimuláljuk most egy dominó eldőlését. A téglalapot, azaz a "dominót" többször - csökkenő dőlési szögekkel - kirajzoljuk, majd "eltüntetjük". Az eltüntetés úgy történik, hogy a téglalapot a "papír" színével rajzoljuk meg (14. példa).

100 PROGRAM "Pelda-14.bas"
110 OPTION ANGLE DEGREES
120 GRAPHICS HIRES 2
130 LET X=600:LET Y=100:LET A=40:LET B=300
140 FOR FI=90 TO 0 STEP-15
150   SET INK 1
160   PLOT X,Y;ANGLE FI;FORWARD B;ANGLE 90+FI;FORWARD A;ANGLE 180+FI;FORWARD B;ANGLE 270+FI;FORWARD A
170   IF FI=0 THEN EXIT FOR
180   SET INK 0
190   PLOT X,Y;ANGLE FI;FORWARD B;ANGLE 90+FI;FORWARD A;ANGLE 180+FI;FORWARD B;ANGLE 270+FI;FORWARD A
200 NEXT

Láthatóan a szimuláció nem a legtökéletesebb.
Nézzünk egy másik megoldást (15. példa).

100 PROGRAM "Pelda-15.bas"
110 OPTION ANGLE DEGREES
120 GRAPHICS HIRES 16
130 SET PALETTE 0,0,0,0,0,0,0,0
140 LET X=600:LET Y=100:LET A=40:LET B=300:LET T=1
150 PRINT "Varj egy kicsit!"
160 FOR FI=90 TO 0 STEP-15
170   SET INK T:LET T=T+1
180   PLOT X,Y;ANGLE FI;FORWARD B;ANGLE 90+FI;FORWARD A;ANGLE 180+FI;FORWARD B;ANGLE 270+FI;FORWARD A
190 NEXT
200 CLEAR TEXT
210 FOR T=1 TO 6
220   SET COLOUR T,2
230   FOR J=1 TO 20
240   NEXT
250   SET COLOUR T,0
260 NEXT
270 GOTO 210

A 16 színű képernyő nyolc színét a SET PALETTE utasítással a "papír" színére, azaz feketére állítjuk. A dőlés fázisait ezekkel a színekkel megrajzoljuk (160-190-es sorok), majd a SET COLOUR utasítással egy kis időre láthatóvá tesszük az eddig nem látott fázisokat (210-260-as sorok). A 230-240-es sorokban üres, várakozó ciklust írtunk, amivel lassítjuk a "dominó" dőlését.
Ez sem az igazi! A láthatatlanul megrajzolt téglalapok törlik egymás téglalap vonalait. Tovább javítjuk a programot. Ezúttal minden fázist más-más lapra rajzolunk (16. példa).

100 PROGRAM "Pelda-16.bas"
110 OPTION ANGLE DEGREES
120 SET VIDEO MODE 1
130 SET VIDEO COLOUR 2
140 SET VIDEO X 24
150 SET VIDEO Y 12
160 LET X=300:LET Y=50:LET A=40:LET B=300:LET T=1
170 PRINT "Varj egy kicsit!"
180 FOR FI=90 TO 0 STEP-15
190   OPEN £T:"video:"
200   PLOT £T:X,Y;ANGLE FI;FORWARD B;ANGLE 90+FI;FORWARD A;ANGLE 180+FI;FORWARD B;ANGLE 270+FI;FORWARD A
210   LET T=T+1
220 NEXT
230 CLEAR TEXT
240 FOR T=1 TO 7
250   DISPLAY £T:AT 5 FROM 1 TO 12
260   FOR J=1 TO 40
270   NEXT
280 NEXT
290 GOTO 240

Hét lapra van szükségünk, ezért már takarékoskodnunk kell a memóriával. A 120-130-as sorokban a megnyitandó videólapok típusát állítjuk be. A lapok méretét kisebbre vesszük, magasságuk legyen 12 sor, szélességük 24 karakter (140-150-as sorok). Miután megnyitjuk a T. lapot (190-es sor), megrajzoljuk a "dominót" (200-As sor). A lapokat egymás után megjelenítjük a képernyő 5. sorától kezdve (250-es sor). Jól látszik a lapméret, ha kiadjuk a SET BORDER 2 parancsot.

10 PROGRAM "Pelda-17.bas"
100 ! Szinek keverese
110 OPTION ANGLE DEGREES
120 TEXT
130 SET VIDEO MODE 1
140 SET VIDEO COLOUR 2
150 SET VIDEO X 10
160 SET VIDEO Y 5
170 FOR J=1 TO 36
180   OPEN £J:"video:"
190 NEXT
200 FOR J=1 TO 36
210   SET £J:PALETTE BLACK,RED,GREEN,BLUE
220   PLOT £J:160,90
230   PLOT £J:ELLIPSE 60,60
240   FOR I=1 TO 3
250     PLOT £J:160,90
260     PLOT £J:ANGLE I*120+J*250-360*INT(J*190/360);
270     PLOT £J:FORWARD 60
280   NEXT
290   FOR I=1 TO 3
300     SET £J:INK I
310     PLOT £J:160,90
320     PLOT £J:ANGLE I*120+J*250-360*INT(J*190/360)+60
330     PLOT £J:FORWARD 40,
340     PLOT £J:PAINT
350   NEXT
355   TEXT :PRINT J;". lap"
360   DISPLAY £J:AT 3 FROM 1 TO 5
370 NEXT
380 ! megjelenites
385 CLEAR TEXT
390 FOR J=1 TO 36
400   DISPLAY £J:AT 12 FROM 1 TO 5
410 NEXT
420 GET Q$
430 IF Q$="" THEN 390

A 17. példaprogrammal a színek keverését mutatjuk be. Egy körlapot három körcikkre osztunk, és a körcikkeket befestjük a három alapszínnel. Ezután a körlapot megforgatjuk. A körlap fehér színűnek látszik. Futtassuk le a programot, majd változtassuk a színek arányát és összetételét! Ezek után talán könnyebb megérteni az RGB függvény jelentését.

Tanítványom, Nagy Ákos, a miskolci Földes Ferenc Gimnázium II. E osztályos tanulója készítette az alábbi két programot, amelyek ugyancsak a videolapokat használják. Mindenki ismeri azt a játékot, hogy ha egy füzetnek jobb oldali lapjaira egy mozgássorozat egyes elemeit laponként lerajzoljuk, és a lapokat gyorsan lepergetjük, mozgó képet kapunk. Ezzel a módszerrel készíthetünk az Enterprise-on gyorsan mozgó grafikus ábrákat. Az előbb leírt játékot úgy valósíthatjuk meg a számítógéppel, hogy a papírlapok helyett videolapokat használunk, és arra rajzoljuk a mozgás fázisait. A legegyszerűbben például integető emberkét készíthetünk.

1 PROGRAM "Pelda-18.bas"
2 ! Inteegto emberke
3 ! Nagy Akos - Miskolc
100 SET VIDEO MODE 1
110 SET VIDEO COLOUR 1
120 SET VIDEO X 19
130 SET VIDEO Y 11
140 FOR G=1 TO 2
150   OPEN £G:"video:"
160   SET £G:INK YELLOW
170   PLOT £G:300,320,ELLIPSE 30,30,PAINT
180   PLOT £G:300,290;300,140
190   PLOT £G:300,140;380,40
200   PLOT £G:300,140;220,40
210 NEXT
220 PLOT £1:200,300;300,240;400,300
230 PLOT £2:400,180;300,240;200,180
240 TEXT
250 FOR T=1 TO 2
260   DISPLAY £T:AT 6 FROM 1 TO 11
270   WAIT 1
280 NEXT
290 GET G$
300 IF G$="" THEN 250

100 PROGRAM "Pelda-19.bas"
110 ! Forgo kockak
120 ! Nag Akos - Miskolc
130 TEXT
140 SET VIDEO MODE 1
150 SET VIDEO COLOUR 1
160 SET VIDEO X 18
170 SET VIDEO Y 11
180 FOR G=1 TO 14
190   OPEN £G:"video:"
200 NEXT
210 ! nagy kockak rajzolasa
220 CALL RAJZOLAS(25600,100,2500,160,0)
230 ! kis kockak rajzolasa
240 CALL RAJZOLAS(4900,150,1200,70,1)
250 CALL FORGATAS
260 DISPLAY TEXT
270 FOR G=14 TO 1 STEP-1
280   CLOSE £G
290 NEXT
Ugyanerre a módszerre épül a következő, a 19. példaprogram is, amellyel forgó kockákat varázsolhatunk a képernyőre.A program első részében megnyitjuk a 14 videolapot (160-180-as sorok). Előtte megadjuk a videolapok típusát és méretét. A 200-210-es sorokban beállítjuk a "nagy kockák" adatait, majd meghívjuk a kockarajzoló eljárást (220-as sor). Ezután ugyanezt csináljuk a "kis kockákkal" (230-260-as sorok) is. A kockarajzoló függvény a program végén található (350-610-es sorok). Amikor befejeződik a kockák rajzolása, elkezdődik a forgatás, azaz a videolapok megjelenítése (270-310-es sorok).
A nagy kockák rajzolása és a kis kockák rajzolása című részben megadott adatok átírásával megváltoztathatók a kockák méretei. Az A változóval jelezzük, hogy melyik kockáról van szó. Videolaponként mintegy 6,4 fokos az elforgatás, így a 14 lapon 90 fokkal fordulnak el a kockák. A videolapokat négyszer kell megjelenítenünk ahhoz, hogy a kockák egy teljes fordulatot tegyenek.
300 DEF RAJZOLAS(W,R,Q,K,A)
310   DIM I(4),C(4),Z(4)
320   FOR L=1 TO 14
330     IF A=1 THEN
340       LET M=15-L
350       SET £M:INK YELLOW
360     ELSE
370       LET M=L
380       SET £M:INK CYAN
390     END IF
400     DISPLAY £M:AT 12 FROM 1 TO 11
410     LET I(2)=(L-1)*(K/13.5)
420     LET I(1)=-1*(K-I(2))
430     LET I(4)=-1*I(2)
440     LET I(3)=K-I(2)
450     FOR P=1 TO 4
460       LET Z(P)=300+I(P)
470       LET C(P)=R+(1+2*(P<=2))*SQR(Q*(1-(I(P)^2)/W))
480       PLOT £M:Z(P),C(P);Z(P),C(P)+K
490     NEXT
500     PLOT £M:Z(1),C(1);Z(2),C(2);
510     PLOT £M:Z(3),C(3);Z(4),C(4);Z(1),C(1)
520     PLOT £M:Z(1),C(1)+K;Z(2),C(2)+K;Z(3),C(3)+K;Z(4),C(4)+K;Z(1),C(1)+K
530     DISPLAY £M:AT 1 FROM 1 TO 11
540   NEXT
550 END DEF
560 DEF FORGATAS
570   DO
580     FOR T=1 TO 14
590     DISPLAY £T:AT 1 FROM 1 TO 11
600     DISPLAY £(15-T):AT 12 FROM 1 TO 11
610   NEXT
620   GET Q$
630   LOOP WHILE Q$=""
640 END DEF

Mielőtt valaki hamar "hibázna"
A strukturális vagy moduláris programozás olyan programozási technika, amely részfeladatok megoldására szolgáló, Logikailag jól elkülöníthető programrészek - struktúrák (szerkezetek), eljárások, modulok, szubrutinok, függvények - használatán alapul. A BASIC nyelv hibájaként legtöbbször azt róják fel, hogy nem támogatja ezt a programozási módszert, és emiatt rossz programozási gyakorlat alakul ki azokban, akik ezen a nyelven nevelkednek. Mielőtt bárki elhamarkodottan véleményt alkotna erről, ajánlom, induljon ki abból, hogy a hiba nem a BASIC nyelvben keresendő. Meggyőződésem ugyanis:

Az Enterprise BASIC nyelvében a szubrutinok és a függvények lesznek azok a modulok, amelyekből felépíthetjük programjainkat.

A szubrutinok
Két összetettebb, rokon feladat megoldásával mutatjuk be a szubrutinok, illetve a függvényblokkok - eljárásfüggvények - alkalmazását, működését. Tesszük ezt annak ellenére, hogy ezek alkalmazása az IS-BASIC-ban felesleges; hisz eljárásokat, függvényeket is használhatunk. Előbb a szubrutinokkal foglalkozhatunk, mert más BASIC nyelvekben csak ez a lehetőség adott

Milyen részekből áll össze a program?

  1. Véletlenszámokkal előállítunk két törtet és azokat tört alakban megjelenítjük a képernyőn.
  2. Kérjük az eredményt. Ezt is tört alakban.
  3. Elvégezzük az összehasonlítást. A válasz akkor hibás, ha a gép által előállított és a válaszként begépelt tört egyszerűsített alakban nem azonos.

Most kell eldöntenünk, hogy mit tudjon egy szubrutin, mi legyen a kezdő sorszáma és milyen változókat használunk:

A program megírása
Először megírjuk a szubrutinokat. A szubrutinok elé rövid kis főprogramot írunk, hogy kipróbálhassuk.
Nem biztos, hogy a program tervezésekor mindent figyelembe tudunk venni és mindenre, gondolunk. A szubrutinok megírásakor is merülnek fel újabb szempontok, amik módosíthatják eredeti elképzelésünket. Több feltételt legtöbbször csak a szubrutin kipróbálása után adhatunk meg. Például a TORTKI és a TORTBE szubrutinokban 1 <= MS <= 18; 1 <= MO <= 38 lehet. A feltételeket a szubrutinban is megadhatjuk. Ez azzal az előnnyel jár, hogy a szubrutin alkalmazásakor nem kell a dokumentációk között keresgélni. Miután összeállítottuk a programot és az működik, ezeket a megjegyzéseket törölhetjük, hogy a program rövidebb legyen és gyorsabban fusson.
A bemenő paramétereket a szubrutinban is megvizsgálhatjuk. Ez azzal az előnnyel jár, hogy a hibakeresés egyszerűbb lesz. Amennyiben nincs ellenőrzés, jobban kell támaszkodnunk a szubrutinok leírására. A szubrutinokat külön-külön is elkészíthetjük, azokat kimentés után MERGE paranccsal egymás után beolvashatjuk, és az így összeállt program elé beírjuk a főprogramot (20. példaprogram). A főprogram megírásakor arra ügyeljünk, hogy a szubrutinok hívása előtt a bemenő paramétereknek értéket kell adni. A szubrutin változóit a főprogramban nem tanácsos másra használni. Ezért választunk szokatlanabb neveket a szubrutin változóinak.

A függvények
Amint azt korábban már említettük, most csak a függvényblokkokról lesz szó. A függvényblokk olyan programrészlet, amelyik a DEF név (paraméterek) utasítással kezdődik és az END DEF utasítással végződik. Hívása a CALL név paraméterek utasítással lehetséges.
A 21. példaprogram függvényeit az előző program szubrutinjaiból készttettük. A név helyett, azaz a REM sorokba beírtuk a DEF, a RETURN helyére az END DEF utasításokat. A függvényeknél a sorszámoknak már nincs szerepük, azokat bárhol elhelyezhetjük a programban, a függvényeket nevükkel azonosítjuk. A DEF szó után adjuk meg a függvény nevét, amelyre a CALL utasítással hivatkozhatunk. A függvények kimenő paraméterei elé a REF szót kell írni. A paraméterek elnevezését több helyen megváltoztattuk, hogy bemutassuk a globális, azaz a programba bárhol, és a lokális, csak a függvényben használt változók közötti különbséget.
A globális változókat a főprogramban definiáljuk a LET, INPUT, READ, GET vagy a NUMERIC és a STRING utasításokkal. A lokális változókat a DEF utasításban kell megadni, és azokat csak a függvényen belül használhatjuk. A lokális változók a programban: MS, MO, KP, KQ, BP, BQ, A9, B9, D9.
A CALL utasításban fel kell sorolni a be- és kimenő paramétereit abban a sorrendben, ahogyan azok a DEF utasításban szerepelnek. Itt természetesen csak globális változókat használhatunk, hiszen a főprogramban adunk értékeket ezeknek a változóknak, és ott használjuk fel a függvények kimenő paramétereit is.
Lokális változót nem használhatunk ugyanabban a függvényben be- és kimenő paraméterként. Ezért kellett az LNKO függvényben a D9 változót beírni. A TORTBE függvény is eltér a szubrutinoktól. A program futtatásakor a kiegészítés miértjére is választ kapunk.

1 PROGRAM "Pelda-20.bas"
2 ! tortek szorzasa
10 TEXT
15 SET CHARACTER 128,0,0,0,0,255,0,0,0,0
20 GOSUB 400:REM-->TORT
25 LET SP=VP:LET SQ=VQ
30 LET MP=VP:LET MQ=VQ
35 LET MS=10:LET MO=4
40 GOSUB 500:REM-->TORT KI
45 PRINT AT MS+1,MO+2:" * "
50 LET MO=MO+4
55 GOSUB 400:REM-->TORT
60 LET SP=SP*VP:LET SQ=SQ*VQ
65 LET MP=VP:LET MQ=VQ
70 GOSUB 500:REM-->TORT KI
75 PRINT AT MS+1,MO+2:" = "
80 LET MO=MO+5
85 GOSUB 600:REM-->OSSZEG BE
90 LET A9=BP:LET B9=BQ
95 GOSUB 700:REM-->LNKO
100 LET BD=A9
105 LET A9=SP:LET B9=SQ
110 GOSUB 700:REM-->LNKO
115 LET SD=A9
120 !
125 REM --- valasz vizsgalata ---
130 PRINT AT 16,5:CHR$(161)
135 IF SP/SD<>BP/BD OR SQ/SD<>BQ/BD THEN
140   PRINT AT 16,5:"Nem sikerult! Probald ujra!"
145   GOTO 85
150 END IF
155 IF BD=1 THEN
160   PRINT AT 16,5:"Helyes!"
165   END
170 END IF
175 PRINT AT 16,5:"Egyszerusitsd!"
180 PRINT AT MS+1,MO+3:"="
185 LET MO=MO+5
190 GOTO 85
321 !-----------------------------
322 ! A program eddig tart
325 !-----------------------------
400 REM --- velszam2---
410 RANDOMIZE
420 LET VP=RND(9)+1
430 LET VQ=RND(9)+1
440 RETURN
500 REM ---tortki---
520 PRINT AT MS,MO:MP
530 PRINT AT MS+1,MO+1:CHR$(128)
540 PRINT AT MS+2,MO:MQ
550 RETURN
600 REM ---tortbe---
610 PRINT AT MS+1,MO:CHR$(128);CHR$(128)
620 INPUT AT MS,MO,PROMPT "":BP
630 INPUT AT MS+2,MO,PROMPT "":BQ
640 RETURN
700 REM ---lnko---
710 IF A9=B9 THEN 780
720 IF A9>B9 THEN
730   LET A9=A9-B9
740 ELSE
750   LET B9=B9-A9
760 END IF
770 GOTO 710
780 RETURN
1 PROGRAM "Pelda-21.bas"
10 ! Tortek osszegzese
20 TEXT
30 SET CHARACTER 128,0,0,0,0,255,0,0,0,0
40 NUMERIC P,Q,R,S,E,D
50 CALL VELSZAM2(P,Q)
60 LET SP=P:LET SQ=Q
70 LET I=10:LET J=4
80 CALL TORTKI(I,J,P,Q)
90 PRINT AT I+1,J+2:" + "
100 LET J=J+4
110 CALL VELSZAM2(P,Q)
120 LET SP=SP*Q+P*SQ:LET SQ=SQ*Q
130 CALL TORTKI(I,J,P,Q)
140 PRINT AT I+1,J+2:" = "
150 LET J=J+5:LET W=0:LET T=0
160 CALL TORTBE(I,J,R,S)
170 CALL LNKO(R,S,E)
180 CALL LNKO(SP,SQ,D)
185 ! ---valasz vizsgalata---
190 PRINT AT 16,5:CHR$(161)
200 IF SP/D<>R/E OR SQ/D<>S/E THEN
210   PRINT AT 16,5:"Nem sikerult! Probald ujra!":LET W=1
220   GOTO 160
230 END IF
240 IF E=1 THEN
250   PRINT AT 16,5:"Helyes!"
260   END
270 END IF
280 PRINT AT 16,5:"Egyszerusitsd!"
290 PRINT AT I+1,J+3:"="
300 LET J=J+5:LET T=1
310 GOTO 160
400 DEF VELSZAM2(REF P,REF Q)
410   RANDOMIZE
420   LET P=RND(9)+1
430   LET Q=RND(9)+1
440 END DEF
500 DEF TORTKI(MS,MO,KP,KQ)
520   PRINT AT MS,MO:KP
530   PRINT AT MS+1,MO+1:CHR$(128)
540   PRINT AT MS+2,MO:KQ
550 END DEF
600 DEF TORTBE(I,J,REF BP,REF BQ)
605   PRINT AT I+1,J:CHR$(128);CHR$(128)
610   IF W=0 OR T=0 THEN
615     INPUT AT I+2,J,PROMPT "":BQ
620     INPUT AT I,J,PROMPT "":BP
625     LET W=1
630   ELSE
635     INPUT AT I,J,PROMPT "":BP
640     INPUT AT I+2,J,PROMPT "":BQ
645   END IF
650 END DEF
700 DEF LNKO(A9,B9,REF D9)
710   DO UNTIL A9=B9
720     IF A9>B9 THEN
730       LET A9=A9-B9
740     ELSE
750       LET B9=B9-A9
760     END IF
770   LOOP
780   LET D9=A9
790 END DEF

Függvények függvényében
A beépített függvények számát tekintve nem lehet okunk panaszra. Az ábécé szerinti felsorolásuk a Felhasználói kézikönyv mellékletét képező Referencia kézikönyvben található. Mi most más rendezőelvet követünk. A függvényekből csoportokat alakítunk ki az egyszerűbb eligazodás kedvéért. A csoportosításunkon kívül természetesen más szempontok alapján is lehet osztályozni a függvényeket: ismerem - nem ismerem, már alkalmaztam - még nem alkalmaztam stb. Ezek a megkülönböztetések is segítségünkre lehetnek a tanulásban.

Az Enterprise belső függvényeit a következőképpen csoportosíthatjuk:

  • A színfüggvények: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE és az RGB.
    Miután ezeket már ismerjük, a soknak tűnő függvények száma máris csökkent. Az RGB függvényről még lesz szó a 22. programban.
  • A matematikai függvények. Ezekből van a legtöbb, ezért további csoportokat hozunk létre:
    • Egyparaméteresek: nevüket a 26. program DATA listájában találjuk meg.
    • Kétparaméteresek: ezeket a 25. listán mutatjuk be.
    • Átalakítást végzők: DEG, RAD és BIN.
  • Tömbfüggvények: LBOUND, SIZE, UBOUND.
  • Beolvasó és kiíratási függvények (beolvasó: IN, JOY, kiíratási: TAB). A számítógép állapotát jelző függvények: INF, PEEK, SPEEK, FREE, EXTYPE, EXLINE, FBS
  • A gépi szubrutin hívása: USR

A színekről már volt szó, ennélfogva nem ismeretlenek előttünk a színek megadására szolgáló függvények. Arról, hogy ezek a kulcsszavak tényleg függvények, meggyőződhetünk, ha kiadjuk például a PRINT BLUE parancsot. A függvény értéke a két szín kódja lesz.
A 22. példaprogrammal azt a 256 színt mutatjuk be, amivel a számítógépen dolgozhatunk. Az RGB függvény paramétereivel az alapszínek - piros, zöld, kék - arányait adhatjuk meg. A megjelenítés helyének kiszámításához a MOD és az INT függvényeket alkalmazzuk.

Az egyváltozós matematikai függvények vizsgálatához, megismeréséhez három programot készítettünk. A 23. listán látható program elég rövid. Tekinthető "egy-két sorosnak" is. Sajnos, az Enterprise-tulajdonosok az "egy-két soros programok" írásában nem rúghatnak labdába, mert a gép csak áttekinthető programok írását segíti elő és teszi lehetővé (azaz pl. minden ciklusszervező utasítást külön sorba kell írnunk). Lehet, hogy az utasítások száma jobban jellemzi a program készítőjének ötletességét?
Rövid programunk azonban az E paraméter változtatására jó néhány dologra hibát jelezne, amit a 190-es sorban lévő feltétellel szűrünk ki. Most egy nagyon durva megoldást adunk, ami arra lesz jó, hogy megismerkedjünk a hibák kezelésével. A 24. listáról beírható programba beépítettünk egy hibafigyelést és az azt lekezelő HANDLER-blokkot. A WHEN-blokkba azt a programrészletet tettük, ahol várjuk a hiba megjelenését. A hiba bekövetkezésekor a végrehajtás a HANDLER-blokkban folytatódik. Itt most csak a hiba kódját íratjuk ki az EXTYPE függvénnyel. A CONTINUE hatására a hibát jelző sort követő soron folytatódik a program. Egy másik, a RETRY utasítással arra a sorra lehet visszatérni, amelyikben a hiba bekövetkezett.
A különböző függvények ábrázolásakor - ha a hibakódokat figyeljük - az is kiderül, hogy mi az, amit vizsgálnunk kell. Mire figyeljünk?

  • Ismernünk kell a függvények értelmezési tartományát.
  • Azokat a pontokat, amelyek nem esnek a képernyőre, ne próbáljuk meg kirajzolni!

A hibakezelés nagy szolgálatot tehet adatbekérésnél (INPUT) és lemez- illetve kazettaműveletek (adatot kívánunk a programból kimenteni, vagy betölteni) esetén is.
Nézzük ezek után a matematikai függvények legismertebb és legnagyobb csoportjának bemutatását a 25. Program segítségével; amelyik több szubrutinból áll. Vizsgáljuk meg mindegyiket a végrehajtásuk sorrendjében!

  • Kiválasztás szubrutin. Egyszerű "menü", ahol először feltöltjük a Q$ vektort a függvények nevével. Itt látunk példát az egyik tömbfüggvény alkalmazására.
    A JOY függvénnyel a botkormány helyzetét kérdezzük le, aminek a mozgatásával kikereshetjük az ábrázolandó függvényt. A választás a SPACE billentyű lenyomásával lehetséges. Ez a beépített, azaz a 0-ás botkormány "tűz" billentyűje.
    A DATA-ba újabb függvényeket is írhatunk a * karakter elé. A DIM utasítás harminc névnek ad helyet (a 0. indexet nem használjuk). Ha új függvényeket írunk be, meg kell határoznunk még az értelmezési tartományt és az ábrázolás módját is. Ez utóbbi azt jelenti, hogy pontokkal vagy vonalakkal rajzoljunk-e.
  • Koordináta-rendszer szubrutin. Bemenő paraméterként az E-t, azaz az egységnek választott képernyőpontok számát és a függvény sorszámát, a V-t kell megadni.
  • Ábrázolás szubrutin. Mielőtt belépnénk a szubrutinba, határozzuk meg az értelmezési tartományt, azaz A és B értékét.
    A szakadásos függvények közül néhánynak az ábrázolását úgy oldottuk meg, hogy egy kis ügyeskedéssel kikerültük azokban a pontokban a függvény értékének kiszámítását, ahol nincs értelmezve. Ezért lesz A=1. Az SGN függvényben az SGN(0) értékének ábrázolása miatt A=0. X>0 esetén A=641, X=>0-nál A=640. A 11, 12, 13, 17-es és az 5-ös sorszámú függvények ábráját pontokból alakítottuk ki, a többinél összekötöttük a pontokat (350-380-as sorok).

100 PROGRAM "Pelda-22.bas"
110 LET L=0
120 GRAPHICS HIRES 256
130 FOR R=.125 TO 1 STEP .125
140   FOR G=.125 TO 1 STEP .125
150     FOR B=.25 TO 1 STEP .25
160       PRINT "Szinkod:";RGB(R,G,B)
170       PRINT "R:";R;TAB(11);"G:";G,;TAB(22);"B:";B
180       SET INK RGB(R,G,B)
190       LET J=32*MOD(L,32):LET I=64*INT(L/32)
200       PLOT 120+J,600-I;120+J,600-I-32
210       LET L=L+1
220       GET Q$
230       IF Q$="" THEN 220
240     NEXT
250   NEXT
260 NEXT


100 PROGRAM "Pelda-23.bas"
110 GRAPHICS HIRES 4
120 PLOT 640,719;640,0
130 PLOT 0,360;1279,360
135 SET INK 2
140 LET E=100
150 FOR I=0 TO 1279 STEP 4
160   LET X=(I-640)/E
170   LET Y=SIN(X)
180   LET J=360+E*Y
190   IF J>0 AND J<720 THEN PLOT I,J
200 NEXT


100 PROGRAM "Pelda-24.bas"
110 GRAPHICS HIRES 4
120 PLOT 640,719;640,0
130 PLOT 0,360;1279,360
135 SET INK 2
140 LET E=100:LET V=0
145 WHEN EXCEPTION USE HIBA
150   FOR I=0 TO 1279 STEP 4
160     LET X=(I-640)/E
170     LET Y=COT(X)
180     LET J=360+E*Y
190     PLOT I,J
200   NEXT
210 END WHEN
250 ! ---hibakezelo---
260 HANDLER HIBA
270   PRINT EXTYPE
280   CONTINUE
290 END HANDLER


(a 25. példa a letölthető file-ban megtalálható)


100 PROGRAM "Pelda-26.bas"
110 TEXT
120 INPUT AT 3,2,PROMPT "a,b (b>0):":A,B
130 IF B=0 THEN
140   PRINT "0-val nem lehet osztani!"
150   END
160 END IF
170 PRINT AT 5,3:"MOD(A,B)=";MOD(A,B);
180 IF B<0 THEN 200
190 PRINT TAB(20) "a-b*INT(a/b)=" A-B*INT(A/B)
200 PRINT AT 7,3:"REM(a,b)=" REM(A,B);
210 PRINT TAB(20) "a-b*IP(a/b)=" A-B*IP(A/B)
220 PRINT AT 9,3:"CEIL(a)=" CEIL(A);
230 PRINT TAB(20) "-INT(-a)="-INT(-A)
240 PRINT AT 11,3:"A/B=" A/B
250 PRINT AT 13,3:"FP(a/b)=" FP(A/B);
260 PRINT AT 15,3:"a/b-IP(a/b)=" A/B-IP(A/B)
270 RANDOMIZE :LET N=RND(6)-3
290 PRINT AT 17,3:"ROUND(a/b,n)=" ROUND(A/B,N)
300 PRINT AT 19,3:"INT(a/b*10^n+0.5)/10^n=" INT(A/B*10^N+.5)/10^N

Függvények szubrutin. Ezzel az ON GOSUB utasítást is bemutatjuk. Újabb függvény beírásakor az utasítássor sorszámát ide is be kell írni. A függvények közül az INT, IP, CEIL és az FP függvényekre szeretném felhívni a figyelmet. Alkalmazásukra bemutatunk néhány példát a 26. lista programjával. Van ugyan néhány kétparaméteres függvény, amelyekkel ezek az átalakítások, számítások egyszerűbben megoldhatók, de úgy gondolom, érdemes összehasonlítani a megoldásokat.

Eddig még az RND függvénnyel nem foglalkoztunk. Nem is soroltuk be egyik csoportba sem. A két alak miatt nem döntöttem: RND(6) a hatnál kisebb nem negatív egész számok közül választ véletlenszerűen (270-es sor). A "hagyományos Az RND 0 és 1 közé eső véletlenszámot állít elő. Így az N=RND(6) egyenértékű az N=INT(6*RND) utasítással.
Hármat azért vonunk ki, hogy negatív számokat is kapjunk.

Karakterek, karakterláncok

Amikor a billentyűzeten begépelünk egy programot vagy egy programnak adatokat adunk meg, karakterekkel - betűkkel, számjegyekkel és írásjelekkel - kódoljuk a számítógépbe jutó információkat, mint ahogy a gép is így írja vissza azokat. A képernyőn karaktereket, karakterláncokat látunk. Természetesen az, hogy milyen az információ a képernyőn, és az, hogyan dolgozhatunk tovább, a programtól függ, a program pedig a programozótól. Attól, hogy milyen ügyesen kezeli a karakterekre, karakterláncokra vonatkozó utasításokat, függványeket.

Készítsünk először egy számítógépes órát (27. lista)!
A PRINT DATE$,TIME$ parancs kiadásával megtudhatjuk, milyen formában kell megadni a dátumot és az időt definiáló karakterláncot a DATE és a TIME utasításokkal. Nézzük végig azokat a műveleteket, amelyekkel kialakítjuk a bemenő adatokból a 300 és 310-es sorokban szereplő karakterláncokat! A beolvasott adatok helyességének vizsgálatával most nem foglalkozunk, ezt az olvasóra bízzuk. A POT függvényblokkban (260-as sor) az egyjegyű számok miatt teszünk a számok elé nullákat, az & művelettel. Összefűzzük a 00 és az X$ karakterláncokat. Végül az X$=X$(LEN(X$)-1:) utasítással az X$-ba az utolsó két számjegy kerül. A LEN függvény a karakterlánc hosszát adja meg, ezért az utolsó két karakter lesz az X$ új értéke; egy szeletet kivettünk a karakterláncból.
A karakterláncok szeletelését legegyszerűbben a következő parancsokkal vizsgálhatjuk:

A$="ABCDEFG"
PRINT A$(2:4),A$(3),A$(2:),A$(:5)

Az R$ karakterlánc-változóba egy vezérlőkaraktert tettünk, amelyiknek a kódszáma 161. Kiírásakor törlődik a sor, így nem marad "szemét" az új értékek megjelenésekor. Az idő és dátum kijelzésekor a T$ és D$ szeleteit írjuk ki, de úgy, hogy a számjegyekből álló karakterláncokat átalakítjuk számokká a VAL függvénnyel. Erre azért van szükség, hogy az elöl álló nullák ne jelenjenek meg a képernyőn.
A programból az ENTER billentyű lenyomásával léphetünk ki. Ez is egy vezérlőkarakter, aminek kódszáma 13. Ezt vizsgáljuk a 400-as sorban.
A Felhasználói kézikönyvben olvashatjuk, hogy a DATE$ nemcsak a hónapok napjainak számát, de a szóközöket is figyelembe veszi. A programmal könnyen megnézhetjük, hogy ez igaz-e. A program érvényességi körének kiterjesztését (az 1980 előtti évekre is legyen igaz) az olvasóra bízzuk.

100 PROGRAM "Pelda-27.bas"
110 ! ---ora---
120 TEXT
130 STRING X$
140 INPUT AT 6,14,PROMPT "Ev: ":E$
150 INPUT AT 8,14,PROMPT "Ho: ":H$
160 INPUT AT 10,14,PROMPT "Nap: ":N$
170 INPUT AT 12,14,PROMPT "Ora: ":O$
180 INPUT AT 14,14,PROMPT "Perc: ":P$
190 INPUT AT 16,14,PROMPT "Masodperc:":M$
210 CALL POT(H$,H$)
220 CALL POT(N$,N$)
230 CALL POT(O$,O$)
240 CALL POT(P$,P$)
250 CALL POT(M$,M$)
260 DEF POT(X$,REF X$)
270   LET X$="00"&X$:LET X$=X$(LEN(X$)-1:)
280 END DEF
290 REM ---datum, ido beallitas---
300 DATE E$&H$&N$
310 TIME O$&":"&P$&":"&M$
320 REM ---ido kijelzes---
330 TEXT :LET R$=CHR$(161)
340 LET T$=TIME$
350 PRINT AT 6,10:"Ora: ";R$;VAL(T$(1:2))
360 PRINT AT 8,10:"Perc: ";R$;VAL(T$(4:5))
370 PRINT AT 10,10:"Masodperc:";R$;VAL(T$(7:))
380 GET Q$
390 IF Q$="" THEN 340
400 IF Q$=CHR$(13) THEN 480
410 REM ---datum kijekzes---
420 TEXT :LET D$=DATE$
430 PRINT AT 6,16:"Ev: ";R$;VAL(D$(1:4))
440 PRINT AT 8,16:"Ho: ";R$;VAL(D$(5:6))
450 PRINT AT 10,16:"Nap: ";R$;VAL(D$(7:))
460 WAIT 5
470 GOTO 340
480 END

Kis helyen hosszabb szöveg megjelenítésére szolgál az úgynevezett ablak, ami ugyanúgy működik, mint a fényújság (28. példaprogram).

100 PROGRAM "Pelda-28.bas"
110 ! ---fenyujsag---
120 TEXT
140 INPUT AT 1,2,PROMPT "Szoveg: ":X$
145 LET X$=X$&"   ***   "
150 INPUT AT 6,2,PROMPT "Ablak hossza (max.38): ":N
155 IF N>38 THEN 150
160 IF LEN(X$)<N THEN
180   LET X$=X$(:N-LEN(X$))
190 END IF
200 PRINT AT 12,20-INT(N/2):X$(:N)
210 LET X$=X$(2:LEN(X$))&X$(1)
220 GET Q$
230 FOR T=1 TO 100
240 NEXT
250 IF Q$="" THEN 200
260 CLEAR SCREEN

Ennek alapötlete az, hogy a karakterlánc első n karakterét kiírjuk, ezután az első karaktert a karakterlánc végére tesszük. A szöveg vége és eleje közé elválasztónak berakunk három csillagot (145. sor).
A 29. programmal az ORD függvényt mutatjuk be, amivel a billentyűzettel és a botkormánnyal megadható karakterek kódját határozhatjuk meg. Gondoljunk azokra a karakterekre is, amelyeket két billentyű lenyomásával adhatunk meg (SHIFT, CTRL, ALT)!

100 PROGRAM "Pelda-29.bas"
110 TEXT :PRINT AT 2,8:"Nyomj le egy billentyut!"
130 LET Q$=INKEY$
140 IF Q$="" THEN 130
150 PRINT AT 10,16:"Karakter: ";CHR$(161);Q$
160 PRINT AT 12,16:"Kod: ";CHR$(161);ORD(Q$)
170 IF ORD(Q$)<>13 THEN 130

A kódokhoz tartozó karaktereket a 30. programmal írathatjuk ki, a CHR$ függvény alkalmazásával. A 150-es és a 170-es sorokkal IF utasításokat váltottunk ki. Ha a kifejezésben szereplő logikai kifejezés igaz, akkor annak értéke -1, egyébként 0.

100 PROGRAM "Pelda-30.bas"
110 TEXT :LET I=32
120 PRINT AT 22,6:"A botkormanyt le-fel mozgasd!"
130 GET Q$
140 IF Q$="" THEN 130
150 LET I=I-(ORD(Q$)=180 AND I<160)
160 LET I=I+(ORD(Q$)=176 AND I>32)
170 PRINT AT 12,8:CHR$(161);"Kod: ";I;TAB(20);"Karakter: ";CHR$(I)
180 GOTO 13
0

Dusza Árpád

SPOKE-SPEEK
Aki olyan programot szeretne írni, amely szöveges adatokat tárol (szótár, lexikon, adatnyilvántartás stb.), előbb-utóbb szűknek érzi az IS BASIC STRING utasításával lefoglalható tömbméretet. Mindent megpróbál, hogy minél több helyet biztosítson egyre szaporodó adatainak. A kézikönyv tanulmányozásakor felfigyel arra, hogy a gép alapkiépítésben 128 k-s, és kissé értetlenül rázza a fejét. Az ugye tény, hogy az IS BASIC is lefoglal egy kis helyet, s ha floppyt is csatlakoztatunk, ez a lefoglalt terület csak nő, noha nem végzetesen. Helyet foglal továbbá az interpreter, adminisztrációs célokra is. Ezt az INFO billentyű megnyomásakor tapasztalja. Nem érti azonban, hogy az IS BASIC miért csak 64 k-t kezel. Az IS BASIC végül is gondol ránk, s két kulcsszóval segít gondjainkon, hogy a még szabad 64 k-t is hasznosíthassuk. Ez a két kulcsszó a jól ismert POKE-PEEK testvére, egy S betűvel megtoldva. Mi a különbség a két POKE, illetve PEEK között?
A POKE-PEEK utasítás, az első (nevezzük elsőnek) 64k memóriába történő (0-255 nagyságú) számok beírására és kiolvasására ad lehetőséget, ami annyit jelent, hogy a 0. memóriacímtől a 65536. memóriacímig írhatunk, illetve olvashatunk. Ez formailag így néz ki:
POKE a,b illetve PEEK (a)
a = 0-65536
b = 0-255
A SPOKE-SPEEK utasítás a teljes 128k memória kezelését teszi lehetővé, azzal az apró nehezítéssel, hogy a szegmenskiosztást figyelembe kell venni. Az Enterprise 128 memóriája 8 db, egyenként 16 k-s (16384 bájtos) szegmensre van felosztva. A szegmensekre 0-255 értékű számmal hivatkozhatunk. A SPOKE formailag így használható:
SPOKE a,b,c illetve SPEEK (a,b)
A = a szegmens címe (0-255)
B = a szegmensen belüli memóriarekesz címe (0-16383)
C = a memóriában elhelyezendő szám (0-255)
Az első 8 szegmenst végignézhetjük az alábbi módon:

10 FOR I=0 TO 7
20   FOR II=0 TO 16383
30     PRINT SPEEK (I,II)
40   NEXT
50 NEXT

Elárulom, hogy nincs sok értelme, ugyanis azt láthatjuk csak, hogy telis-tele van írva mind a 8 szegmens, tehát végig kell nézni mind a 255 szegmenscímet. Erre azonban az alábbi kis program talán célszerűbb:

10 FOR I=0 TO 255
20   PRINT I, SPEEK (I,X)
30 NEXT

Ha az x értékét megváltoztatva többször futtatjuk a programot, akkor a következő megállapításra juthatunk. Az Enterprise nyolc használatos szegmense a 248, 249, 250, 251, 252, 253, 254, 255. Ezek szerint a szegmensek címei memóriabővítés esetén lefelé bővülnek Az IS BASIC a 248-251 szegmenstartományt használja. A számunkra lényeges plusz 64 k a 252-255-ös szegmenseken helyezkedik el. A lényeg, hogy rendelkezésre áll a szabad, "szűz" 64 k, valamint a kezeléséhez két utasítás. Hogyan használjuk? Segítségül még álljon itt egy mintaprobléma:
A 252-es szegmens 0. rekeszében szeretnénk tárolni például egy "A" betűt. Ez nem okozhat nagyobb fejtörést, mert tudjuk, hogy mindegyik karakterünk megfeleltethető egy, a 32-159 értékű számtartományba tartozó számmal. Ennek ismeretében pedig a megoldás:

SPOKE 252,0,ORD ("A")

Még egy megjegyzés. Ekkora tárterület kezelése már felveti egy fordító (compiler) szükségességét is. Hiszen aki megszerette a BASIC-programozást, az már csak a szerelem miatt sem mond le róla, noha tudja, hogy vannak sokkal hatékonyabb célnyelvek is.
Papp Miklós

Érdekes görbék Enterprise gépre
Az Enterprise személyi számítógép megjelenésével igen olcsó és az árához képest jó képességű gép került forgalomba. A gép BASIC-interpretere igen sokat tud, de lassú. Ennek ellenére szerintem elterjedése csak a forgalmazókon múlik. Különösen kiemelendőnek tartom a gép grafikai képességeit. BASIC-ből is 640x720 felbontású grafikus lapot tud kezelni. A Nick chip ki tudja használni a felhasználói kézikönyvben írt 1280x720-as felbontást is. A közölt programok grafikus képernyője nem egészen ilyen felbontású. Az INIT alprogram megnyit egy grafikus csatornát a két színű, nagy felbontású grafikának, amit a 101-es csatornához rendel (lásd az 1. listát):

330 DEF INIT
340   OPTION ANGLE RADIANS
350   SET VIDEO COLOR 0:SET VIDEO MODE 1
360   SET VIDEO X 38:SET VIDEO Y 24
370   OPEN £101:"video:"
380   SET PALETTE BLACK,YELLOW
390   DISPLAY £101:AT 1 FROM 1 TO 24
400 END DEF

A sorszámok a programoknál nem fedik egymást, tehát külön-külön beírhatok, majd MERGE utasítással fűzhetők össze. Ha nem mindegyik programot próbáljuk ki, akkor az INIT alaprogramot mindig hozzá kell írni a programhoz, de megpróbálhatjuk saját grafikus képernyő készítését is.
A programok mind paraméteres görbéket ábrázolnak. Természetesen néhol lenne egyszerűbb megoldás is, például a teknőcparancsok alkalmazása. Én azért nem használtam ezeket, hogy szemléltessem két szögfüggvény összetételével, milyen bonyolultnak tűnő görbéket lehet kapni.

Sinus- és cosinus-görbék
E két függvény csak annyiban különbözik, hogy egymáshoz képest 90 fokkal el vannak tolva, pontosabban:
   SIN(X+90)=COS(X)
Ennek alapján elég, ha csak az egyik függvény ábrázolására írunk programot. Mert ha például a SIN(x) görbét ábrázoljuk, akkor a COS(x) görbét úgy kaphatjuk meg, hogy az x ciklusváltozóhoz hozzáadunk 90 foknak megfelelő értéket.
Ezek után már csak az van hátra, hogy a görbéket jól helyezzük el a képernyőn. A PLOT utasításban szereplő konstans szorzók szerepe az, hogy a SIN függvényt megfelelően nagyra nyújtsák meg a képernyőn. A 193 éppen a MAX-X-nek a 2*PI-ed része, a 270 pedig a MAX-Y-nak a negyede.
Bemenő paraméterek:

A lépésközt azért tettem az ómegától függővé, hogy a rajzolás viszonylag gyors legyen, de a kép még ne legyen túlságosan szögletes (2. lista):

410 DEF SIN_COS
420   LET AMP=2:LET OM=2:LET FAZ=.1
430   LET FAZ=FAZ*PI/180
440   LET LEP=.2/OM
450   FOR X=0 TO 2*PI STEP LEP
460     PLOT 193*X,207*AMP*SIN(OM*X+FAZ)+414;
470   NEXT
480 END DEF

Lissajous-görbék
Az előbbi sinus-, illetve cosinus-görbéket felfoghatjuk harmonikus rezgőmozgás grafikonjaiként is. Két, egymásra merőleges rezgés eredőjének általában bonyolultabb görbék felelnek meg. Ennek a demonstrálására is lehetne alkalmazni a következő programot.
A program paraméterei az első rezgés amplitúdója (A1), körfrekvenciája (O1), fázisa (F1), és a második rezgés paraméterei(A2, O2, F2). Ezzel a programmal előállítható kör és ellipszis egyaránt. Az omegák arányának változtatásával hasonló jellegű görbéket kapunk (3. lista):

490 DEF LISS8370
500   LET A1=3:LET O1=.6:LET F1=1.6
510   LET A2=2:LET O2=.8:LET F2=1.2
520   LET F1=F1*PI/180:LET F2=F2*PI/180
530   LET LEP=.3/((O1+O2)+ABS(O1-O2))/2
540   FOR X=0 TO 10*PI+LEP STEP LEP
550     PLOT A1*193*SIN(O1*X+F1)+607,207*A2*SIN(O2*X+F2)+414;
560   NEXT
570 END DEF

Egyéb paraméteres görbék
A paraméterrel megadható görbék három alapesete - a körön kívül - a ciklois, a szívgörbe és a csillaggörbe. A három görbét a következőképpen származtathatjuk:

Ciklois: egy egyenesen csúszás nélkül gördülő körnek egy kerületi pontja cikloist ír le (4. lista):

580 DEF CIKLOISZ
590   LET RX=1:LET RY=1
600   IF RX<=.5 THEN LET ST=8
610   IF RX=1 AND RX>.5 THEN LET ST=4
620   IF RX>1 THEN LET ST=2
630   FOR X=0 TO ST*PI STEP .1
640     PLOT 85*RX*(X-SIN(X)),103*RY*(1-COS(X))+414;
650   NEXT
660 END DEF

Szívgörbe: egy r sugarú kör külső oldalán csúszás nélkül gördülő másik r sugarú kör egy kerületi pontja szívgörbét ír le (5. lista):

670 DEF SZIVGORBE
680   LET RX=2.2:LET RY=2
690   FOR X=0 TO 2*PI STEP .1
700     PLOT 80*RX*(2*COS(X)-COS(2*X))+607,75*RY*(2*SIN(X)-SIN(2*X))+414;
710   NEXT
720 END DEF

Csillaggörbe: egy r sugarú kör belső oldalán csúszás nélkül gördülő r/4 sugarú kör egy kerületi pontja csillaggörbét ír le (6. lista):

730 DEF CSILLAG
740   LET RX,RY=2
750   FOR X=0 TO 2*PI STEP .1
760     PLOT 193*RX*COS(X)^3+607,207*RY*SIN(X)^3+414;
770   NEXT
780 END DEF

Valamivel bonyolultabbak a következő görbék. Nemcsak a képzési szabályuk miatt, hanem azért is, mert igen nehéz eltalálni helyüket a képernyőn.
Az első három egy téma három változata. Igen nehéz a második kettőnél megtalálni azt a konstanst, amelyiket hatványozunk. Ha túl nagyra választjuk, akkor a koordináták túlságosan gyorsan nőnek, és így még körbe sem ért, már kimegy a képernyőről a következő pont. Érdekes, hogy milyen szemléletesen látszik a két görbéből az exponenciális és a logaritmus-függvény közötti lényeges különbség.
A 7. lista egy euklideszi spirált ábrázol:

790 DEF SPIRAL
800   FOR X=0 TO 16*PI STEP .1
810     PLOT 7*X*SIN(X)+607,7*X*COS(X)+414;
820   NEXT
830 END DEF

a 8. lista logaritmikus spirált,

840 DEF LG_SPIRAL
850   FOR X=0 TO 16*PI STEP .1
860     PLOT 75*LOG(X+.9)*SIN(X)+607,75*LOG(X+.9)*COS(X)+414;
870   NEXT
880 END DEF

a 9. lista exponenciális spirált ábrázol.

890 DEF EXP_SPIRAL
900   FOR X=0 TO 9.6*PI STEP .1
910     PLOT 2*1.2^X*SIN(X)+607,2*1.2^X*COS(X)+414;
920   NEXT
930 END DEF

A 10. lista programja által létrehozott görbét a következőképpen lehet megkonstruálni. Vegyük kiindulásnak azt a Lissajous-görbét, amelynek paraméterei a következők:

Így a kapott görbe paraméteres egyenlete: x=a*cos(t) y=a*sin(2*t). Hogy nyolcas legyen belőle, cseréljük fel a két koordinátafüggvényt. Így az x=a*sin(2*t) és y=a*cos(t) lesz a két egyenlet.
Ahhoz, hogy a görbe periódusonként csak egyszer metssze önmagát, először tükrözzük a nyolcast az y tengelyre:
   (x=-a*sin(2*t) y=a*cos(t)).
Hogy a görbét x irányban széthúzzuk, a következő módosítást hajtjuk végre az egyenleteken:
   x=-a*sin(4*pi*t)+a*3*t
   y=a*cos(2*pi*t).

940 DEF SUJTAS
950   FOR X=0 TO PI/2+.04 STEP .02
960   PLOT -100*SIN(10*PI*X)+600*X+100,100*COS(5*PI*X)+414;
970   NEXT
980 END DEF

Ha a görbénél a sinus- és a cosinus- függvények argumentumában szereplő konstans szorzótényezőt megváltoztatjuk, érdekes aszimmetrikus görbéket kaphatunk:

  990 DEF CSAVAR
1000   FOR X=-1 TO 13*PI+1 STEP .2
1010   PLOT 50*COS(X)+25*X+100,80*SIN(-X)+414;
1020   NEXT
1030 END DEF

GORBEK.BAS
Koller Pál

Animációs boszorkánykodás
A személyi számítógépek egyik legvonzóbb "képessége" a nagyfelbontású grafikának az alkalmazási lehetősége. Egy szemléltető program, egy jelenség stimulációja a legegyszerűbb grafikával is többet mond, mint egy táblázat, számsor vagy szöveges információ. A játékprogramok többsége pedig el sem képzelhető grafika nélkül. A legnagyobb hatást természetesen a rajzok, ábrarészletek animációjával, rajzfilmszerű mozgatásával érhetjük el. Ha a megjelenítendő ábra egy periodikusan változó objektum (például egy lüktető szív a vérkörökkel vagy egy forgó kommutátoros motor), a képernyőn megelevenedő látvány magyarázó ereje igen nagy. Így nem csupán a felépítés, hanem a működés is szemléltethető. Ily módon a személyi számítógépek például az oktatástechnikában elérhetik az oktatófilmek, modellek hatékonyságát, sőt az egyéni hozzáférés és - interaktív kivitelnél - a beavatkozás (lassítás, leállítás, megfordítás, szöveges információ kérése az egyes fázisokban stb.) lehetősége révén minőségileg új szintet is jelenthetnek. Az elérhető látványosság révén természetesen bármilyen más programtípusnál is "megtérül" a befektetett többletenergia, ami géptípusonként igencsak eltérő lehet.
Az Enterprise 128 a hazánkban elterjedt személyi számítógépek között egyedülálló mértékben segíti az animációt. Sőt a hardver által lehetővé tett szolgáltatások nagy része BASIC-ből is elérhető. Ezen a géptípuson tisztán BASIC nyelven, viszonylag kis munkával írható olyan (vagy jobb) program, mint amilyen más típuson csak speciális alkalmazói szoftver (például C64, Giga Movie) vagy gépi kódú rutinok felhasználásával készíthető.
A folyamatos, vibrálásmentes mozgásérzet elérésének kulcsa:

100 PROGRAM "anim.bas"
110 !
120 ! Elokeszites
130 SET VIDEO MODE 1
140 SET VIDEO COLOR 1
150 SET VIDEO X 10
160 SET VIDEO Y 10
170 !
180 ! Lapok nyitasa
190 !
200 FOR N=1 TO 20
210   OPEN £N:"video:"
220   CALL RAJZOK(N)
230 NEXT
240 !
250 LET A$=INKEY$
260 IF A$="" THEN 250
270 !
280 ! Megjelenites
290 !
300 FOR N=1 TO 20
310   DISPLAY £N:AT 1 FROM 1 TO 10
320   GOSUB 430
330 NEXT
340 !
350 FOR N=20 TO 1 STEP-1
360   DISPLAY £N:AT 1 FROM 1 TO 10
370   GOSUB 430
380   NEXT
390 GOTO 300
400 !
410 ! Kesleltetes
420 !
430 FOR T=1 TO 10
440 NEXT
450 RETURN
460 !
470 ! Fazisrajzok
480 !
490 DEF RAJZOK(N)
500   DISPLAY £N:AT 1 FROM 1 TO 10
510   SET £N:PALETTE 0,GREEN,YELLOW,RED
520   PLOT £N:0,0;319,0;319,359;0,359;0,0,
530   SET £N:INK 1
540   PLOT £N:-10+16*N,160,
550   PLOT £N:ELLIPSE 70,70,
560   SET £N:INK 2
570   PLOT £N:PAINT
580   SET £N:INK 3
590   PLOT £N:328-16*N,200,
600   PLOT £N:ELLIPSE 70,70,
610   PLOT £N:328-16*N,245,
620   PLOT £N:PAINT
630   SET £N:INK 1
640   PLOT £N:-10+16*N,130,
650   PLOT £N:PAINT
660 END DEF

Az Enterprise IS-BASIC-ben mindkét feltétel teljesíthető. A munka során igen sok grafikus csatorna (egy-egy rajzlap) nyitható. Ezek bármelyikére rajzolhatunk akár láthatóan, akár "vakon" a háttérben, és bármikor megjeleníthetők a képernyőn. Ezzel teljesül az első feltétel: egy-egy elkészített fázisrajz készen áll a memóriában a megjelenítésre várva.
A második feltétel is a hallatlanul sokoldalú videoegység (NICK-chip) és a kiszolgáló szoftver révén teljesíthető. A két fázisrajz közötti átkapcsolás gyakorlatilag pillanatszerű: az egyik térképet még az első rajz alapján generálja a chip, az 1/25-öd másodperc múlva következő képen már a másik rajzot látjuk.
Természetesen nem kis probléma a fázisrajzok időre való elkészítése. Az elvileg ideális megoldás - amelyben az új rajzot a megjelenések közötti időben a program készíti el - a BASIC sebességével nemigen érhető el. Csak egészen egyszerű változások esetén kapunk viszonylag folytonos mozgásképet. Ebben a technikában lényegében két lapon dolgozunk. A mozgássor felépítésének algoritmusa a következő lehet:

  • az n. fázisrajz elkészítése az 1. lapon
  • az 1. lap megjelenítése
  • a 2. lap előkészítése [az (n- 1). Fázisrajz törlése]
  • az (n+1). rajz elkészítése a 2. lapon
  • a 2. lap megjelenítése
  • az 1. lap előkészítése (az n. rajz törlése)
  • az (n + 2). rajz elkészítése az 1. lapon, vissza a ciklus elejére.

Lényegesen egyszerűbb a helyzet, ha egy ciklikusan ismétlődő rajzsorozatot szeretnénk megjeleníteni, vagy ha tetszőleges sorrendben, de adott rajzkészletből dolgozunk. Ekkor ugyanis a fázisrajzok (bemutatás előtt) tetszőleges idő alatt készíthetők el az egyes videolapokon. A megjelenítéskor ismét élvezhetjük az Enterprise előnyeit. A többi géptípuson általában egy - vagy igen kevés - memóriaterület jeleníthető meg. A kijelzésre szánt képet ideiglenes helyéről egy blokkmozgató rutinnal kell erre a területre vinni, aminek végrehajtási ideje általában nem elhanyagolható. Az Enterprise-on a felső négy szegmensben bármilyen memóriaterület megjeleníthető. Ezért ezen a gépen nem kell adatokat mozgatni. Elég a NICK-chippel "közölni", hogy honnan vegye a képinformációt, ami - még a BASIC interpreter közvetítésével is - elég gyors az animációhoz.
Az egyetlen szűk keresztmetszetet a lapok száma jelenti, ami persze függ a lapok választott méretétől is. Például a mintaprogramban választott 10 x 10-es lapoknál az operációs rendszer 20 lapnak foglal helyet a memóriában. Hatékonyabb memóriagazdálkodást az operációs rendszer ismeretében, gépi kódú programmal érhetünk el.
A listán látható mintaprogram - az animációs lehetőségek egyszerű illusztrációjaként - két egymást metsző színes kört mozgat egy 10 x 10 karakternyi méretű grafikus ablakban.

130-160 beállítja a fázisrajzok közös video feltételeit:
nagyfelbontású grafikus üzem,
négy szín,
10 x 10-es méret
200-230 megnyit 20 videolapot, és ezeken elkészíti a fázisrajzokat
250-260 Billentyű lenyomásra vár
300-390 megjeleníti a kész fázisrajzokat:
300-330 - "előre" sorrendben
350-380 - "hátra" sorrendben
390

végtelen ciklusban ismétli a megjelenítést

430-450 késleltetés az optimális mozgásérzet eléréséhez
500

megjeleníti a megnyitott lapot (ez a sor futtatáskor elhagyható)

510 színválaszték
520 megrajzolja a lap keretét
530-570 megrajzolja és sárgára festi az első kört
580-620 megrajzolja és pirosra festi a második kört
630-650

zöldre festi az első kör másodikkal nem közös részét

 

Más rajzsorozatnál a 170-310-es sorok helyett építhető be a saját rutin vagy az azt hívó utasítás. Természetesen az előre-hátra pörgetés is fölösleges lehet. A DISPLAY utasítások AT utáni paraméterével adhatjuk meg, hogy a 10 sornyi grafikus ablak a képernyő hányadik sorától jelenjen meg. Ha az animált ablakot egy előre megrajzolt grafikus képernyő közepére "vetítjük", ügyes rajztechnikával elérhető, hogy a mozgó képrészletet alul-felül egy olyan álló háttér egészíti ki, mint amilyen például egy motor forgó- és állórésze.

ANIM.BAS, még egy példaprogram: POFA.BAS

Felföld József

Hívja önmagát!
A rekurzív programozásról, feladatmegoldásról sokszor és sokan beszélnek számítógépes berkekben. A szokványos BASIC nyelvjárósok alkalmatlanok vagy csak igen nagy megkötöttségekkel tesznek lehetővé olyan programozási fogásokat, amelyek legalábbis bemutatnák, illetve felhasználnák ezt a lehetőséget. Az Enterprise IS BASIC-je - talán már nem is BASIC - támogatja ezt a programozási technikát.
Mit is jelent az eljárás? A számítás, illetve az algoritmus során a program a legegyszerűbb esetig - az eredetig - visszalép, egyszerűsíti a feladatot, és onnan kezdi a megoldást. A kiindulási állapotig való visszalépéskor a részeredményeket vagy a feltételeket a számítógép tárolja. Minthogy esetenként a kiindulási feltételhez való visszalépéskor mindig ugyanannak a változónak adunk újabb és újabb értéket, és ezt az értéket csak egy bizonyos feltétel, meghívási mélységnél használja a program, ezért lokális változóként tároljuk. Az Enterprise képes erre (is)!

100 PROGRAM "Rekurzio.bas"
110 INPUT PROMPT "Hany futas?":N
120 CALL DEMO(N)
130 END
140 DEF DEMO(N)
150   IF N=0 THEN EXIT DEF
160   PRINT N;256*PEEK(522)+PEEK(553)
170   CALL DEMO(N-1)
180   PRINT "Dolgozz tovabb!"
190   PRINT N;256*PEEK(552)+PEEK(553)
200 END DEF
Nézzük meg közelebbről, hogyan? Az első programban a rekurzió működésének feltételeit, hatását próbáljuk vizsgálni (Rekurzio.bas). Bemenetként közöljük a programmal, hogy hányszor kívánjuk ugyanazt a blokkot, eljárást önmaga által alkalmazni, meghívni.
A program DEMO(N) eljárása a 170-es sor tanúsága szerint mindig eggyel kisebb N érték felhasználásával hívja meg önmagát. A képernyőn leolvashatjuk az éppen aktuális N értékét. Folyamatosan követhető a veremmutató értéke is. Látható, hogy egy DEF blokk önmagára való hivatkozása mintegy 1500 bájt hosszú területet foglal le a veremben. Ebből következik, hogy egy eljárás a program hosszúságától függően maximum 38 alkalommal hívhatja meg önmagát. Ha ennél is többször hívná meg magát az eljárás, akkor "összeakadna" a memória. A verembejegyzések felülírják a programot és az "elszáll".
A 150-es sor kilépési - visszatérési - feltétele mindig csak az adott mélységből az eggyel korábbi szintre való visszatéréssel jár. Addig viszont az abban a mélységben érvényes - és csak ott érvényes - lokális értéket használja.
A rekurzív hívások alkalmazásának iskolapéldája a faktoriális kiszámítása. Ez definíció szerint:
n!=n*(n-1)!
Ha ezt az algoritmust követjük a faktoriális kiszámításához, akkor n! számításához előbb ismerni kell (n-1)! értékét, ahhoz viszont az (n-2)! értékét. Ne bonyolódjunk bele, bízzuk az egészet az Enterprise számítógépre.
Mint Faktror.bas program futási eredményéből láthatjuk, a számoláshoz nem is kezd addig, amíg vissza nem vezeti a feladatmegoldást a legegyszerűbb, az 1! kiszámításához. Majd innen indulva sorba az adott meghívási mélység lokális változójával szoroz.
100 PROGRAM "Faktor.bas"
110 INPUT PROMPT "N= ":N
120 IF N<1 OR N>35 OR N<>(N) THEN 110
130 LET S=1
140 CALL F(N)
150 END
160 DEF F(N)
170   IF N=0 THEN EXIT DEF
180   CALL F(N-1)
190   LET S=S*N
200   PRINT "(";N;"!)=";S
210 END DEF
100 PROGRAM "Koch.bas"
110 GRAPHICS
120 OPTION ANGLE DEGREES
130 SET INK WHITE
140 PLOT 1000,20;:PLOT ANGLE 180;
150 FOR I=1 TO 3
160   LET S=810:LET N=3
170   CALL KOCH(S,N)
180   PLOT RIGHT 120;
190 NEXT
200 END
210 DEF KOCH(S,N)
220   IF N=0 THEN PLOT FORWARD S;:EXIT DEF
230   CALL KOCH(S/3,N-1)
240   PLOT RIGHT 60;:CALL KOCH(S/3,N-1)
250   PLOT LEFT 120;:CALL KOCH(S/3,N-1)
260   PLOT RIGHT 60;:CALL KOCH(S/3,N-1)
270 END DEF

A rekurzióval megoldható feladatok másik iskolapéldája a bináris fa rajzolása. Erre programokat - Enterprise-ra is - közölt már a Magazin. Most nézzünk ismét egy példát. Rajzoljuk meg az ábra szerinti Koch-görbét. Igaz, ez a forma eltér a szokásos hópehely alaktól, noha megrajzolási algoritmusa attól alig különbözik. (Tudjuk jól, mit jelent a számítástechnikában az alig vagy a majdnem olyan hatása!)
A kiindulási idom itt is egy egyenlő oldalú háromszög, de ennek oldalaira befelé rajzoljuk az oldal harmada hosszúságú újabb egyenlő oldalú háromszögeket, és mindig csak az újabban született vonalakat rajzoljuk meg. E munka algoritmusa a görbe rendjétől függően egy adott mélységben a következő:

  • menj S/3 egységet előre,
  • fordulj 60 fokot jobbra,
  • menj S/3 egységet előre,
  • fordulj 120 fokot balra,
  • menj S/3 egységet előre,
  • fordulj 60 fokot jobbra,
  • menj S/3 egységet előre,

Most már a Koch-görbe rendjétől függően csak (csak?) ismételni kell. A feladat rekurzióval történő megoldását a Koch.bas mutatja.

Ennek a családnak a tagja a Hilbert-göbe is. Felfedezője azt bizonyította be, hogy a véges négyzet alakú síkdarab végtelen törtvonallal kitölthető úgy; hogy ez a vonal sehol sem metszi önmagát és nem is záródik.
Minden magasabb sorszámmal jelzett rendű görbe - ezek egyre összetettebbek -mindig négy alacsonyabb rendű görbéből áll, de az n. rendű görbe és az n-1. rendű görbe körüljárási iránya ellentétes (ellenkező paritású).
A Hilbert.bas program rekurzió támogatásával biztosítja ennek a törtvonalnak a megrajzolását.
A kísérletező kedvű olvasó az ilyen, önmagát segítségül hívó - rekurzív - néhány soros programmal és az Enterprise-al csodálatos dolgokat művelhet.

Sz. Lukács János

100 PROGRAM "Hilbert.bas"
110 GRAPHICS
120 OPTION ANGLE DEGREES
130 SET INK WHITE:LET P=1
140 PLOT 940,700,ANGLE 180;
150 INPUT PROMPT "A gorbe rendje? 1<n<6 ":N
160 LET S=10*2^(6-N)
170 CALL HILBERT(S,N,P)
180 END
190 DEF HILBERT(S,N,P)
200   IF N=0 THEN EXIT DEF
210   PLOT LEFT 90*P;
220   CALL HILBERT(S,N-1,-P)
230   PLOT FORWARD S;RIGHT 90*P;
240   CALL HILBERT(S,N-1,P)
250   PLOT FORWARD S;
260   CALL HILBERT(S,N-1,P)
270   PLOT RIGHT 90*P;FORWARD S;
280   CALL HILBERT(S,N-1,-P)
290   PLOT LEFT 90*P;
300 END DEF

Hol az INPUT? Itt az INPUT!

A rutin, melynek listáját közöljük, a képernyő általunk meghatározott részén kérdez meg a használótól adott hosszúságú szöveget. Ezzel nemcsak látványossá tehetjük programunkat, hanem, a begépelés hibalehetőségeit is csökkenthetjük. A rutint

CALL INPUT (x, y, hossz, b$)

utasítással hívhatjuk meg. Nem működik a DEL, az INS billentyű és a kurzormozgatás. Kilépni az ENTER-rel lehet, ekkor a hívó programban térünk vissza a beolvasott B$ sztringgel. Törlésre az ERASE billentyű használható. A 9920 és 9921 számú sorokban az ASCII kódhatárok beállításával változtathatjuk, hogy mely karaktereket fogadja el. Jelenleg a kis- és nagybetűket, a számokat, a vesszőt, a kötőjelet, a pontot, azaz a 44-126 közé eső kódú karaktereket. A beolvasható string maximális hosszúságát a képernyő mérete (sorhosszúság) korlátozza. Ha hosszabb stringet akarunk beolvasni, mint a sorhosszúság, hibaüzenetet kapunk (invalid cursor coordinates).
A rutin leírása:

  • 9905: a segédváltozó törlése,
  • 9906-9908: a beolvasás, ill. kiírás helyére pontokat ír,
  • 9911: a kurzor pótlására szolgáló nem villogó négyzet kiírása,
  • 9912-9914: a billentyűzet figyelése,
  • 9915: ha az ERASE-zel sokat törlünk, azaz DB kisebb lesz mint 0, kezdjük elölről,
  • 9916-9918: ha a teljes hosszúságú beolvasott string végső karaktere nem az ENTER, akkor kezdjük elölről,
  • 9919: ha az utolsó karakter az ENTER, akkor ugrás a program végére,
  • 9920-9921: az elfogadott karakterek kiválasztása,
  • 9922-9927: ha a lenyomott billentyű az ERASE, akkor a kiírt kurzor és egy karakter törlése. Új kurzor és karakter kiírása
  • 9929: az új karakter hozzáadása az eredmény-stringhez
  • 9931-9933: az INPUT rutinhoz felhasznált képernyőterület törlése.

Piros András

1 PROGRAM "INPUT.bas"
2 ! Pelda
3 CLEAR SCREEN
4 LET NEV$=""
5 PRINT AT 2,2:"Neved:"
6 CALL INPUT(5,2,30,NEV$)
7 PRINT "hello ";NEV$
9900 DEF INPUT(X,Y,HOSSZ,REF B$)
9901   ! INPUT rutin
9902   ! Keszitette: Piros Ansras
9903   ! Debrecen
9905   LET G$=""
9906   FOR I=0 TO HOSSZ-1
9907     PRINT AT X,Y+I:"."
9908   NEXT
9909   LET DB=-1:LET B$=""
9910   LET DB=DB+1
9911   PRINT AT X,Y+DB:CHR$(159)
9912   DO
9913     LET D$=INKEY$
9914   LOOP WHILE D$=""
9915   IF DB<0 THEN 9905
9916   IF DB=HOSSZ THEN
9917     IF D$<>CHR$(13) THEN 9906
9918   END IF
9919   IF D$=CHR$(13) THEN 9931
9920   IF D$=CHR$(44) OR D$>CHR$(164) THEN 9912
9921   IF D$>CHR$(126) AND D$<CHR$(164) THEN 9912
9922   IF D$=CHR$(164) THEN
9923     PRINT AT X,Y+DB:" "
9924     LET DB=DB-1:LET G$=B$(1:DB)
9925     LET B$=G$
9926     GOTO 9911
9927   END IF
9928   PRINT AT X,Y+DB:D$;
9929   LET B$=B$&D$
9930   GOTO 9910
9931   FOR I=DB TO HOSSZ
9932     PRINT AT X,Y+I:" "
9933   NEXT
9934 END DEF

Egy kis botkormányosdi
Bár az EXOS hatékonyan támogatja mindhárom botkormány kezelését a §§JOY nevű speciális funkcióval (alfunkciókód: 9), alkalmanként jó lehet, ha a körülményes csatornakezelést megkerülve, közvetlenül a portokat írva-olvasva férhetünk hozzájuk. Mivel a belső botkormány szerves része a billentyűzetnek, úgy olvashatjuk le, mint bármelyik billentyűt. Más azonban a helyzet a külső botkormányokkal. Közvetlen elérésükről, ha jól tudom, nem jelent meg eddig semmi, még az EXOS leírásban sincs megemlítve. A CONTROL aljzatokba csatlakoztatott botkormányok leolvasásának előkészítése ugyanolyan, mint a billentyűzetleolvasásé: a 0B5H (181) port 0-3. bitjeibe kell írni OUT utasítással egy 0 és 9 közé eső értéket. Ha ez 0 és 4 között van, a CONTROL1 botkormányt, ha 5 és 9 között, akkor a CONTROL2-t fogjuk olvasni. A 0, illetve 5 esetében a tűzgomb felöl "érdeklődünk", 1 és 6 esetén a fel-, 2 és 7 esetén a le-helyzetről. 3 és 8 adja meg, hogy a botkormány balra van-e húzva és 4, illetve 9 azt, hogy jobbra-e. Ezt foglalja össze az alábbi kis táblázat:

 
tűz
fel
le
bal
jobb
CONTROL 1
0
1
2
3
4
CONTROL 2
5
6
7
8
9

Ilyen előkészítés után a 0B6H (182) port olvasása IN utasítással adja meg a kívánt információt. Ha a beolvasott port 0. bitje alacsony (0 értékű), akkor az azt jelenti, hogy a botkormány 0B5H porton beállított funkciója él. Vagyis, ha a 0B5H (181) portra előzőleg 2-t írtunk, a 0B6H (182) port 0. bitjének 0 értéke azt jelenti, hogy a CONTROL1-be csatlakoztatott botkormány lefelé van húzva. Ha a bit 1-es értékű, akkor a botkormány ebben az irányban nyugalomban van.
Ha a botkormány összes jellemzőjére rá akarunk kérdezni, a 0B5H portra sorban ki kell írni a 0-4, illetve az 5-9 értékeket például egy ciklussal, vagy minden kiírás után le kell olvasni a 0B6H port 0. bitjét. a gépi kódú lista az elmondottakat szemlélteti. Egyébként a program nem más, mint a §§JOY speciális funkciót megvalósító rutin részlete a ROM-ban.
A rutin kezdete (RD JOY címke értéke) az angol gépeken a 00:EFD7H címen van (0. szegmens, 61399); kétnyelvű gépeken két példányban található meg: először az előbbi címen, másodszor a bővítő szegmens 0E3DEH címén (58334). Az, hogy a bővítő szegmens hányas számot visel, az eltérő hardvermegoldások miatt gépenként különböző. Eddigi tapasztalataim szerint vagy 4 vagy 5. Hogy a kettő közül melyik, azt úgy lehet eldönteni, hogy kiolvassuk, mondjuk PEEK utasítással a 00C5H (179) abszolút című bájt tartalmát. Ha ennek értéke 4, akkor a bővítő szegmens száma a gépünkön 5, illetve fordítva.

Most pedig a listáról. A rutinba belépéskor a C regiszter határozza meg, hogy melyik botkormányt fogja leolvasni a funkció. Ha C=0, akkor a belsőt, ha C=1, akkor a CONTROL1-be csatlakoztatottat (EXT1), ha C-nek bármi más értéke van, akkor a CONTROL2 (EXT2) csatlakozóról kapunk tájékoztatót.
C regiszter tartalma a program lefutása után: 4. bit magas (=16); tűz nyomva; 3. bit (=8): fel; 2. bit (=4): le; 1. bit (=2): balra; 0. bit (= 1): jobbra. Mindenütt a magas értékek (1 értékű bit) jelzik az aktív állapotot! Fordítva, mint a közvetlen port kiolvasásnál.
Mivel ez csak egy részlete a rutinnak, az RD INT címke nem mutat sehová. A rutin most következő hexadecimális dumpjában ezért alacsonyabb helyi értékű bájtja helyett NL áll, a magasabb helyett NH. Ezt tetszésünk szerint átírhatjuk a saját belső botkormány-leolvasó rutinunkra vagy a megelőző 0FAH értékű bájttal együtt elhagyhatjuk. Ekkor ez a rutin nem lesz képes a belső botkormányt tesztelni. (A címke eredeti értéke angol gépen 0EFEFH, német gépen ugyanez, illetve a bővítő szegmens 0E3F6H.)

RD_JOY



RD_EXT2


RD_EXT1
DEC C
JP M,RD_INT


LD B,05
JR Z,RD_EXT1
LD C,B
LD A,C
INC C

OUT (0B5H),A
IN A,(0B6H)
RRA
CCF

RL D

DJNZ RD_EXT1
LD C,D

XOR A
RET
; C regiszter csökkentése eggyel
; ha C-ben mínusz érték lett,
; akkor a belső botkormányt kell
; leolvasni
; a ciklust ötször kell lefuttatni
; ha C-ben 00 van
; EXT2 esetén 5-től kezdi a ciklust
; a portra kiírandó érték beállítása
; a ciklus következő futásakor
; szükséges érték
; botkormányállapot beolvasása
; a portról
; a 0 bit a carry flag-be kerül
; a carry 1 lesz, ha eddig
; 0 volt ill. viszont
; a bitek összegyűjtése D
; regiszterbe
; ciklusvég
; C-ben a botkormány 5
; állapotbitje
; A=0, azaz nem volt hiba

A dumpban minden érték hexadecimális számként értendő:
0D FA NL NH 06 05 28 01 48 79 0C D3 B5 DB B6 1F 3F CB 12 10 F4 4A AF C9.

Racskó Tamás

Memóriaböngésző
Az Enterprise-ban Z80 típusú processzor van, amely 64 kbájtnyi memóriát címezhet. Hogy ennél nagyobb memória legyen kezelhető, a gép készítői ezt a tartományt négy darab 16 kbájtos lapra osztották fel. Minden laphoz tartozik egy regiszter a DAVE chip-ben, ahol be lehet állítani, hogy a teljes 4 Mbájt melyik 16 kbájtos részét "lássa" a Z80 processzor az adott lapon. A 4 Mbájt 256 ilyen 16 kbájtos szegmensre van felosztva. A gép bekapcsoláskor ellenőrzi a rendelkezésre álló memóriát: a RAM-ok tesztelődnek, amikor a "TESTING FE" stb. felŹiratokat látjuk a státuszsorban Az Enterprise a RAM-okat FFh-től lefelé, a ROM-okat 00h-tól felfelé számozza meg.
Két RAM-szegmensnek a továbbiakban speciális funkciója van: a legnagyobb sorszámú (működőképes) RAM, az FFh szegmens lesz a rendszerszegmens (itt találhatók a rendszerváltozók, a képernyőtár stb.), a legalacsonyabb sorszámú (128 k-s gépnél az F8h) pedig belapozódik a 0. lapra, és végleg itt marad. Ezen található az IT és az EXOS belépési pontja. A négy lap tehát:

A négy laphoz rendre a B0h - B3h pontokon írható/olvasható DAVE chip regiszterek tartoznak.

10 REM aktuális szegmensek lekérdezése
20 FOR P=0 TO 3
30   PRINT P; . lap=";IN(176+P);"szegmens"
40 NEXT

Az OUT utasítással lapozhatunk be új szegmenseket, ezzel azonban óvatosan kell bánni. A 0. lap ellapozásával például elszáll a rendszer. Nézzük meg, miért?
A 0. lapon 128 kbájtos gépnél az F8 szegmens látható. Ennek első 256 bájtja a következőképpen néz ki:

Végül egy program, amely bemutatja, hogyan lehet egy BASIC programban gépi kódú rutinokat használni. Ha a program lefutott a CALL USR (DUMP,****) utasítással, a decimális *** címtől kezdve 64 bájt tartalmát írhatjuk ki hexadecimálisan és karakteresen.

10 PROGRAM "Dump.bas"
15 ! DUMP64 (c) 1988 C.C.Guys
20 ALLOCATE 88
100 CODE DUMP=HEX$("7D")
110 FOR R=1 TO 11
120   READ H$
130   CODE D=HEX$(H$)
140 NEXT
150 FOR R=1 TO 7
160   READ ADDR
170   CALL WPOKE(DUMP+ADDR,DUMP+WPEEK(DUMP+ADDR))
180 NEXT
490 ! Demo
500 TEXT
510 INPUT PROMPT "Kezdocim (decimalis):":ADDR
520 CALL USR(DUMP,ADDR)
530 END
1000 DATA "E6,F8,6F,0E,08,06,08"
1005 DATA "E5,CD,30,00,7E,CD,35,00"
1010 DATA "23,10,F9,E1,06,08,7E,FE"
1015 DATA "7F,30,04,FE,20,30,02,3E"
1020 DATA "2E,CD,4D,00,23,10,EF,3E"
1025 DATA "0D,CD,4D,00,0D,20,D7,C9"
1030 DATA "7C,CD,3C,00,7D,CD,3C,00"
1035 DATA "3E,20,18,11,F5,0F,0F,0F"
1040 DATA "0F,CD,45,00,F1,E6,0F,C6"
1045 DATA "90,27,CE,40,27,C5,47,3E"
1050 DATA "00,F7,07,C1,C9"
2000 DATA 10,14,34,42,50,54,66
5000 DEF WPEEK(A)
5005   ! Szavas PEEK fuggveny
5010   LET WPEEK=PEEK(A)+256*PEEK(A+1)
5020 END DEF
5050 DEF WPOKE(A,D)
5055   ! Szavas POKE eljaras
5060   POKE A+1,INT(D/256):POKE A,D-256*PEEK(A+1)
5070 END DEF

Erdei András

Kalandozások a karaktermemóriában
Ahogyan a láthatatlanság elbűvöli fantáziánkat, úgy valamit láthatóvá tenni, szintén izgalmas. Különösen a számítógépen. Tegyük hát "láthatóvá" az EP128 karakter RAM-ját, hogy érthetőbbé váljon a karaktermemória felépítése. Az EP128-nak alaphelyzetben 128-féle megjeleníthető karaktere (ASCII kód 32-159) van. Az 1-31 kódok a különböző vezérlő, azaz meg nem jeleníthető karaktereknek vannak fenntartva.
Hogyan alakul ki a képernyőn egy karakter képe? A karakterek egy 9x8-as ponthálózatban jelenítődnek meg, 9 bájt 8-8 bitje segítségével. Azok a bitek, melyeknek értéke 1, tinta-, a 0 értékűek pedig papírszínűek lesznek.
A 128 darabos karakterkészlet képét ekképpen meghatározó bájtok a karakter ROM-ban vannak, ahonnan a számítógép bekapcsolásakor az, operációs rendszer átmásolja a RAM-ba. Így az Ep128 eleve lehetővé teszi a karakterátdefiniálást a felhasználó számára, ellentétben például a C64-gyel. Egy-egy karakter megjelenítésekor az operációs rendszer a karakter RAM-ból átmásolja a megfelelő 9 bájtot a képernyő-memória megfelelő helyére.
A karakter RAM az alapkiépítettségű Ep128-ban a 46208-as címen kezdődik, és értelemszerűen 128 x 9 bájt a mérete. Mivel azonban a karaktertábla helye konfigurációtól függően változhat, érdemes inkább kezdőcímét az EXOS-tól lekérdezni:

LET FONT=(SPEEK(255,16372)+SPEEK(255,16373)*256)-1152

A karakterek képét hordozó bájtok elhelyezkedését a RAM-ban a jobb oldali ábra mutatja. A jelölések, például az "ASCII 66/3" azt jelenti, hogy a 46530-as memóriacímen a "B" karaktert reprezentáló kilenc bájtból a harmadikat találjuk.
A karakter RAM tartalmát az alábbi programmal (CHAR.BAS) kinagyítva" meg is jeleníthetjük, miáltal láthatóvá válik, hogy az egyes karakterek valójában hogyan is helyezkednek el a 9 x 8-as ponthálózatban. Ez hasznos lehet egyrészt a karakterek átdefiniálásánál, az új karakterek képének megtervezésekor, másrészt az egyéni érdeklődőknek is.
A program a karakter kinagyított képén kívül kiírja a karakternek a memóriában elfoglalt sorszámát, az ASCII kódját (az utóbbi két adat az ábrából következően 32-127-ig megegyezik), továbbá magát a karaktert, szokásos méretben, valamint a kinagyított karakterrészletet tároló memória címét és annak tartalmát.

Losonczi János

CHAR.BAS

BASIC programok tárolása a memóriában

Az Enterprise is, mint más számítógépek, a BASIC programokat az értelmezés meggyorsítása érdekében átalakítva, kódolva tárolja a memóriájában.
Az Enterprise BASIC memóriája a nullás lap szegmensen a 4827 (=12DBh) címen kezdődik. Mivel ez a szegmens (248 = 0F8h) normális esetben mindig a nullás lapon van, ezért a BASIC programok ezen a címen mindig elérhetők. Az ennél nagyobb címek ezen a szegmensen csak a BASIC editornak vannak fenntartva, de természetesen kellő óvatossággal itt is elhelyezhetünk gépi kódú programokat. A programok a memóriában tárolva is megtartják soros felépítésüket, és a sorok sorszám szerinti sorrendben állnak. Egy memóriában tárolt BASIC-sor felépítése a következő:

Ezután közvetlenül a következő sor adatai jönnek, ugyanilyen struktúrában. Hogyha a soron következő BASIC-sor első bájtjának, azaz a hosszúságbájtnak az értéke nulla, ez a program végét jelzi. Egyébként a NEW utasítás sem csinál mást, mint az első programsor hosszúságbájtját törli. Az BASIC-értelmező tehát azt hiszi, hogy nincs a tárban érvényes program. Ennek ismeretében a NEW utasítással meggondolatlanul kitörölt programunkat "restaurálni" tudjuk.
Ezek után talán érthető a kézikönyvnek az a kitétele, hogy egy BASIC programsor maximálisan 250 karakterből állhat: ugyanis a sor térbeli képéhez hozzájön még plusz öt bájt. Így kaphatjuk meg az egy bájton maximálisan ábrázolható 255-ös értéket. A kézikönyv szintén írja, hogy a programsorszámok 1 és 9999 között lehetnek. Ez így is van, ha a BASIC-szerkesztővel dolgozunk. Ám utólag például POKE utasítással felülírhatjuk a sorszámokat 0 és 9999-nél nagyobb értékre. Ekkor is értelmes, futtatható programot kapunk, csak a sorszámok helyett értelmetlen karakterek íródnak ki, és a programsort nem lehet editálni, módosítani. Ezzel elérhetjük azt, hogy avatatlan kezek ne tudjanak belekontárkodni programjainkba, vagy mi ne tudjuk véletlenül kitörölni a sort.
A sor érdemi része nem ASCII kódok formájában tárolódik, hanem ún. BASIC kódokkal. Ezek kódolhatnak egyrészt karaktereket - például kettőspontot -, utalhatnak arra, hogy utánuk milyen típusú adat következik - történetesen sztring -, illetve lehetnek tokenek. A tokenek BASIC kulcsszavak helyett álló kódokat jelentenek. A mellékelt táblázatban megtalálhatók a BASIC kódok és a tokenek.
A különleges kódok rövidítéseinek magyarázata:

A programlistában lévő szóközök nem tárolódnak, azokat az értelmező listázóprogramja szúrja be értelem szerint. Egyébként a fent említett változásokat leszámítva a BASIC program térbeli szintaxisa megegyezik az editorba való begépeléskor előírtakkal.

A BASIC program után közvetlenül a változók területe kezdődik, vagyis ha a szerkesztőt megkerülve bővítjük programunkat, megtörténhet, hogy az értelmező nem ismervén a BASIC programterületnek új végcímét, a változókkal felülírja azt. Ezért ilyenkor célszerű néhány felesleges REM sorral helyet biztosítani az illegális programbővítésnek.

A BASIC kódok és tokenek táblázata:

dec hex kód token   dec hex kód token
0 00 <ERV> ALLOCATE   53 35 <NUV> PLOT
1 01   ASK   54 36 <NUV> POKE
2 02 <ERV> AUTO   55 37 <NUV> SPOKE
3 03 £ CALL   56 38 <NUV> PRINT
4 04 $ CAPTURE   57 39 <NUV> PROGRAM
5 05 % CASE   58 3A <NUV> RANDOMIZE
6 06 & CAUSE   59 3B <NUV> READ
7 07 ' CLEAR   60 3C <NUV> REDIRECT
8 08 ( CLOSE   61 3D <NUV> REM
9 09 ) CODE   62 3E <NUV> RENUMBER
10 0A * CONTINUE   63 3F <NUV> RESTORE
11 0B + COPY   64 40 <STV> RETRY
12 0C , DATA   65 41 <STV> RETURN
13 0D - DEF   66 42 <STV> REN
14 0E . DEF   67 43 <STV> SAVE
15 0F / DELETE   68 44 <STV> SELECT
16 10 : DIM   69 45 <STV> SET
17 11 ; DISPLAY   70 46 <STV> SOUND
18 12 < DO   71 47 <STV> START
19 13 = CHAIN   72 48 <STV> STOP
20 14 > EDIT   73 49 <STV> INFO
21 15 <> ELSE   74 4A <STV> STRING
22 16 <= ELSE IF   75 4B <STV> TEXT
23 17 >= END   76 4C <STV> TOGGLE
24 18 Ä END DEF   77 4D <STV> TRACE
25 19 Ö END HANDLER   78 4E <STV> TYPE
26 1A Ü END IF   79 4F <STV> VERIFY
27 1B   END SELECT   80 50 <STV> WHEN
28 1C   END WHEN   81 51 <STV> !
29 1D   ENVELOPE   82 52 <STV> LLIST
30 1E   EXIT   83 53 <STV> LPRINT
31 1F   FOR   84 54 <STV> EXT
32 20 <NUV> GOSUB   85 55 <STV> GET
33 21 <NUV> GOTO   86 56 <STV> FLUSH
34 22 <NUV> GRAPHICS   87 57 <STV> LOOK
35 23 <NUV> HANDLER   88 58 <STV> PING
36 24 <NUV> IMAGE   89 59 <STV> DATE

37

25 <NUV> IF   90 5A <STV> TIME
38 26 <NUV> IF   91 5B <STV> WAIT
39 27 <NUV> INPUT   92 5C <STV> ON
40 28 <NUV> LET   93 5D <STV>  
41 29 <NUV> LINE   94 5E <STV>  
42 2A <NUV> LIST   95 5F <STV>  
43 2B <NUV> LOAD   96 60 <TKN>  
44 2C <NUV> LOOP   ...      
45 2D <NUV> MERGE   128 80 <STR>  
46 2E <NUV> NEW   ...      
47 2F <NUV> TEXT   162 A2 <RWN>  
48 30 <NUV> NUMERIC   ...      
49 31 <NUV> OPEN   194 C2 <INT>  
50 32 <NUV> OPTION   ...      
51 33 <NUV> OK   198 C6 <FP>  
52 34 <NUV> OUT          

Megjegyzés a táblázathoz:
Mint látható, a táblázatban két DEF, illetve IF token szerepel. Az első tokenek egyetlen BASIC sorban elhelyezkedő utasításra, míg a második tokenek utasításblokkot kezdő parancsra vonatkoznak.
Az ON szimbólum az ON .. GOTO utasítástokenje, sohasem az opciókapcsoló ON szócskáé.
A LINE INPUT utasításban csak a LINE tokenizálódik, az INPUT nem, ha azonban az INPUT önmagában alkot utasítást, akkor átíródik tokenné.

Racskó Tamás

Elforgatott ellipszisek

Ez Enterprise IS-BASIC ELLIPSE utasításával nem rajzolhatunk elforgatott ellipsziseket. Az 1. listán látható eljárás ezt a hiányosságot pótolja. Az elforgatott ellipszis rajzolására a következő módszer használható:

CALL ARC(ch,x,z,xs,ys,n)

ahol:

  • ch = a csatornaszám, ahová rajzolunk,
  • x = az ellipszis középpontja (X koordináta),
  • y = az ellipszis középpontja (Y koordináta),
  • xs = az ellipszis vízszintes sugara
  • ys = az ellipszis függőleges sugara
  • n = a negatív elforgatás fokban.

Megjegyzés: a 9990-es sor végén az 50-es konstans csökkentésével az ellipszis közelítése javítható. Ennek különösen kis sugarú ellipsziseknél van jelentősége. Az eljárás a szögfüggvényeket radiánban számítja, ezért,ha a főprogramban fokban számolunk, akár az eljárás meghívása előtt, akár az eljárásban váltsunk át radiánba (OPTION ANGLE RADIANS).
A 2. lista egy demo program, amely az ARC eljárással együtt használható.

9985 DEF ARC(CH,X,Y,XS,YS,N)
9986   SET £CH:BEAM OFF
9987   NUMERIC T,XP,YP,SI,CO,ST,X1,Y1
9988   LET ST=RAD(REM(N,180))
9989   LET SI=SIN(ST):LET CO=COS(ST)
9990   LET ST=PI*2/((XS+YS)*PI/50)
9991   FOR T=0 TO PI*2+ST STEP ST
9992     LET XP=SIN(T)*XS+X:LET YP=COS(T)*YS+Y
9993     LET X1=(XP-X)*CO+(YP-Y)*SI+X
9994     LET Y1=(YP-Y)*CO-(XP-X)*SI+Y
9995     PLOT £CH:X1,Y1;
9996   NEXT
9997   SET £CH:BEAM OFF
9998   PLOT £CH:X,Y,
9999 END DEF

100 PROGRAM "Ellipse.bas"
110 GRAPHICS HIRES 2
120 FOR T=0 TO 179 STEP 30
130   CALL ARC(101,640,360,200,340,T)
140 NEXT
150 PLOT PAINT

Escape szekvenciák mentése file-ba

Akinek kétnyelvű Enterprise-a van, beépítve használhatja a VSAVE és VLOAD programokat. Az angol cartridge-ben viszont ezek nincsenek benne, külön kell megvásárolni, ami persze költséges móka. Egy trükkel azonban nincs szükségünk ezekre a programokra, ha a saját rajzainkat akarjuk BASIC programból elmenteni.
Ez a trükk azon alapul, hogy az Enterprise videókezelője escape szekvenciákkal vezérelhető. Ha tehát kazettára / lemezre akarjuk küldeni grafikáinkat, nem kell mást tennünk, csak azt a csatornát, amit grafikára nyitnánk meg, TAPE, DISK vagy alapértelmezett egységként nyitunk meg írásra. A kész, belőtt programban a GRAPHICS utasítás helyére az alábbi parancsot:

OPEN £101:"filenév" ACCESS OUTPUT

Csatornaszámnak azt adjuk meg, amire a rajzoló utasításokban hivatkozunk. Ha a rajzoló utasításban nincs csatornaszám, az alapértelmezés szerinti 101-es csatornát használja a BASIC. Ezután jöhetnek a rajzoló utasítások, melyek hatása most nem a képernyőn jelennek meg, hanem a megnyitott file-ba íródnak bele a megfelelő escape szekvenciák. Végül pedig le kell zárni a megnyitott csatornát:

CLOSE £101

A rajz visszatöltése:

OPEN £106:"filenév"
COPY FROM £106 TO £101
CLOSE £106

Természetesen először meg kell nyitni a megadott csatornára a megfelelő méretű videolapot.
A módszer előnye a VSAVE-hez képest, hogy a létrejövő file még bonyolultabb rajzoknál is valószínűleg kisebb lesz, és minden gépen használható akkor is, ha nincs a rendszerben VSAVE / VLOAD bővítés. További előny, hogy a rajzoló utasítások nem a BASIC programban foglalják a helyet, és ha a rajz bonyolult számítás eredménye lenne, a megjelenítés is gyorsabb.
Ezzel a módszerrel nem csak grafikát tudunk kimenteni, hanem hangkezelőre irányuló escape szekvenciákat is. Ilyenkor a SOUND egység helyett nyitjuk meg a file-t. Az eljárás ugyanaz, mint a grafikánál. Ekképpen kiszedhetjük egy program zenéjét, annak minimális módosításával.

Göbölös László

EXOS gyakorlatok
Az első feladat: grafikus lapok görgetése jobbra. Ha az Enterprise-on általunk definiált videolap kezdőcímére vagyunk kíváncsiak, az első pillanatban nehéznek tűnő feladat előtt állunk. Az EP ugyanis minden csatornapuffer létrehozásával, illetve megszüntetésével járó utasítás után mozgatja a RAM megfelelő területeit. Rendelkezésünkre áll egy gépi kódban alkalmazható ún. EXOS-funkcióhívás (1. lista), de ezt csak gyakorlott programozóknak ajánlatos alkalmazniuk. Én a kezdők számára is könnyen érthető BASIC programot mutatok be (2. lista).
A program megértését néhány mondatos magyarázattal szeretném elősegíteni. Az EP 255. lapján helyezkedik el a rendszerszegmens. Itt található az LP_POINTER nevű változó a 49140-49141-es címen. Az itt kiolvasható érték a Video Sorparaméter Tábla Z80-as kezdőcíme. Mi az a sorparamétertábla? A képernyő minden egyes sorához tartozik egy-egy 16 bájt hosszú adattábla, amely az adott sor videojellemzőire vonatkozóan tartalmaz adatokat (például videomód, video színmód, a margók értékei, palettaszínek stb.). Közöttük szerepel az adott sor bal felső bájtjának kezdőcíme is. Ezt az értéket a 16-os egységen belül az 5-6. bájt adja meg. Figyelem! A 16-os egységek közül az első a STATUS sor paramétereit tartalmazza. Tehát az LP-POINTER által megadott értékhez 20-at hozzáadva találjuk meg a legelső sor kezdő bájtjának alsó, és 21-et hozzáadva a felső helyiértékű cím értékét (lásd az ábrát).
Külön magyarázatra szorul a program 250-es sora. Az EP FC-től FF-ig terjedő RAM-szegmensét VIDEORAM-nak nevezzük. Ezt a Nick chip közvetlenül címezi, függetlenül attól, hogy be vannak-e lapozva a Z80-as lapszegmensek valamelyikére. Mivel az előző sorban kapott "CÍM" nevű változó a 255. RAM-szegmensre mutat, de ez a második Z80 lapszegmensre van belapozva, értékéből egy szegmensnyit, azaz 16384-et le kell vonnunk. Ekkor kapjuk a tényleges Z80-as címet.
Futtassuk le a begépelt programot! Ha figyelmesen szemléljük, észrevehetjük, hogy nem pixel-scrollt látunk, hanem bájtonkénti léptetéssel van dolgunk. Ennek magyarázatát az adja, hogy az egy bájttal megjeleníthető négy képernyőpixel színe a bájton belül kevert sorrendben van kódolva, így bitenkénti léptetésnél gördülő színkavalkádban lenne részünk.
Most javítsuk át a 110-es sorban található 36h értéket 77h-ra. Futtatáskor azt tapasztaljuk, hogy az ablak jobb oldalán kilépő karakterek a bal oldalon újra megjelennek.
Az EP ATTRIBUTUM-videolapja hasonlít leginkább a Spectrum képernyőkezelésének elvéhez. Itt is külön tárolódik az ún. bittérkép és külön az egyes bájtokhoz tartozó PAPER és INK színérték. A 3. lista tartalmazza az ATTR-videolap görgetését. Itt már lehetőség nyílt a bitenkénti léptetésre. Figyelem! ATTR-videolapok esetén a sorparaméter-tábla 16-os egységeiben a bittérkép kezdőcíme a 7-8. bájt. Ezért a megváltozott érték a program 220-as sorában. Az eltolási érték 22, illetve 23 lett. Ennél a video-módnál is lehetőségünk van egy pici változtatással más eredmény elérésére.
Írjuk át ennek a programnak is a 110-es sorában két bájt értékét. Legyen F0h helyett 08h, CB,1Eh helyett CB,3Eh. Ezzel elértük, hogy futtatáskor karakterhelyen belül gördül ki a képernyőtartalom.
A két gépi kódú rutint bármilyen méretű videolapra alkalmazhatjuk a listákon jelzett változók átírása után.

1 PROGRAM "Scroll.bas"
100 ALLOCATE 36
110 CODE SCROLL=HEX$("11,8b,0a,19,e5,d1,06,3c,
c5,d5,06,2d,d5,e1,2b,c5,01,3b,00,1a,ed,b8,23,36,
00,2b,2b,1b,c1,10,ed,d1,c1,10,e5,c9")
120 SET VIDEO MODE 1
130 SET VIDEO COLOR 1
140 SET VIDEO X 30
150 SET VIDEO Y 5
160 OPEN £1:"video:"
170 SET £1:PALETTE 7,0,2,4
180 DISPLAY £1:AT 1 FROM 1 TO 5
190 PLOT £1:10,179,
200 PRINT £1:"ENTERPRISE scroll rutin"
210 PLOT £1:10,36,
220 PRINT £1:"INTERSTELLAR Software 1988"
230 LET SPT=PEEK(49140)+PEEK(49141)*256
240 LET CIM=PEEK(SPT+20)+PEEK(SPT+21)*256
250 LET CIM=CIM-16384
260 WAIT 2
270 CALL USR(SCROLL,CIM)
280 END

A program assembler listája:

11 8B 0A
19
E5
D1
06 3C
C5
D5
06 2D
D5
E1
2B
C5
01 3B 00
1A
ED B8
23
36 00
2B
2B
1B
C1
10 ED
D1
C1
10 E5
C9
LD DE,2699
ADD HL,DE
PUSH HL
POP DE
LD B,60
PUSH BC
PUSH DE
LD B,45
PUSH DE
POP HL
DEC HL
PUSH BC
LD BC,59
LD A,(DE)
LDDR
INC HL
LD (HL),0
DEC HL
DEC HL
DEC DE
POP BC
DJNZ 237
POP DE
POP BC
DJNZ 229
RET
; 18*X*Y-1



; 2*X


; 9*Y




; 2*X-1



; Ezt cseréld 77h-ra
 
62 01
06 03
F7 0B
LD A,1
LD B,3
EXOS 11
; videolap csat. száma
; funkciószám
; funkcióhívás
 
1. lista
 

1 PROGRAM "ATTR.bas"
100 ALLOCATE 26
110 CODE SCROLL=HEX$("e5,d1,06,f0,c5,62,6b,06,
2d,c5,37,3f,06,1e,cb,1e,23,10,fb,c1,10,f3,c1,10,eb,c9")
120 SET VIDEO MODE 15
130 SET VIDEO X 30
140 SET VIDEO Y 5
150 OPEN £1:"video:"
160 SET £1:PALETTE 7,0,2,4
170 DISPLAY £1:AT 1 FROM 1 TO 5
180 PRINT £1,AT 1,1:"ENTERPRISE ATTR scroll"
190 PRINT £1,AT 5,1:"INTERSTELLAR Software 1988"
200 LET SPT=PEEK(49140)+PEEK(49141)*256
210 LET CIM=PEEK(SPT+22)+PEEK(SPT+23)*256
220 LET CIM=CIM-16384
230 WAIT 2
240 CALL USR(SCROLL,CIM)
250 END

A program assembler listája:

E5
D1
06 F0
C5
62
6B
06 2D
C5
37
3F
06 1E
CB 1E
23
10 FB
C1
10 F3
C1
10 EB
C9
PUSH HL
PO DE
LD B,240
PUSH BC
LD H,D
LD L,E
LD B,45
PUSH BC
SCF
CCF
LD B,30
RR (HL)
INC (HL)
DJNZ 251
POP BC
DJNZ 243
POP BC
DJNZ 235
RET


; 8*X (ide írj 06 08-at)



; 9*Y



; Y
; Ide írj CB 3E-t
2. lista
 
3. lista
SCROLL.BAS; ATTR.BAS  
Szaniszló Zoltán

EXOS példák
Néhány tanács azoknak, akik most ismerkednek Enterprise-zal és van EXOS 2.1 műszaki leírásuk.

AZ ESCAPE SZEKVENCIÁKRÓL
A szekvenciák rendkívüli módon egyszerűsítik a gép programozását. Az EXOS ellipszist rajzol, egyenest húz, ADSR-görbét definiál stb. Az escape szekvenciák használatakor lényegében egy sztringet készítünk, amelynek első karaktere minden esetben az ESC (értéke 27 dec = 01B hex). A második karakter határozza meg, hogy melyik szekvenciát indítjuk. Az esetleges további karakterek a paraméterek. - Ezután a kész sztringet a kívánt csatornára - hang esetén például a 067 hex csatornára - írjuk. Az első példaprogram (ESC_DEMO.BAS) IS-BASIC-ben demonstrálja a szekvenciák használatát: definiál egy karaktert, állítja a palettaszíneket, ADSR-görbét, majd hangot generál.

EGY HASZNOS RUTIN
A kép valamennyi jellemzője egy sorparaméter-táblában (LPT), a táblán belül sorparaméter blokkokban (LPB) tárolódik. A tábla kezdetére az LP-POINTER (0BFF4H-0BFF5H) mutat. (Erről az EXOS könyvben a 284. oldaltól olvashatunk.) Hardver szövegmódban (TEXT 40) a képernyősorok összekeveredhetnek, így ha valaki direkt POKE-kal ír a memóriába, meglepetések érhetik. A PYX.BAS kis rutint olyan nagyobb programokba érdemes beépíteni, ahol BASIC-ből a gyorsaság kedvéért POKE-ot használnánk. Paramétereit tekintve hasonlít a PRINT AT utasításhoz, csak gyorsabb annál. Hívása:

CALL POS (y koordináta, x koordináta, ASCII kód)

EXOS BEMUTATÓ
Az utolsó program (EXOS_DEM.BAS) azoknak szól, akik most kezdenek EXOS-t gépi kódban programozni. Egy grafikus ablakot definiál és excape szekvenciákkal egy grafikát rajzol a program. Működésére könnyen rájöhetnek az EXOS-leirás és egy disassembler (MON) segítségével.

Hajnal Csaba

 

Mankó a gépi kódhoz

A mellékelt program segítséget nyújt azoknak az Enterprise tulajdonosoknak, akik most kezdenek a BASIC nyelv után a gépi kódú programozással foglalkozni. A programmal különböző (bináris, decimális, hexadecimális) számrendszerek közötti átváltást lehet elvégezni táblázatos formában és kinyomtatni. Ez kezdőknek komoly segítséget jelenthet.

Boros József

NUMCONV.BAS

Fej vagy írás
A közismert éremmel játszott szerencsejátékot szimulálja Vicsotka Gyula olvasónk programja. A játék lényege, hogy előre meghatározott téttel játszva az a játékos nyer, aki eltalálja, hogy a feldobott érme melyik oldalára esik. A programmal kitűnően érvényesülnek a gép animációs lehetőségei. Jó szerencsét!

ERME.BAS

Csipkés RND

Az alábbi kis program az RND (végtelenszám-generáló függvény) segítségével "csipkét" rajzol a képernyőre. A program a szinusz, koszinusz és a PI (3,14...) segítségével felrajzol egy vonalakból álló, kör alakú mintázatot. A FOR-NEXT cikluson belül definiált x és y értékek csak abban térnek el az xx és yy értékektől, hogy az e értékkel, azaz e*PI / lépésközzel előbbre halad a "körpályán". A PLOT x,y;xx,yy egy egyenest rajzol, és a csipke így alakul ki, a vonal elfordulásával.
Érdemes a programon belül az értékeket megváltoztatni, kísérletezni, mert így a program megértése könnyebbé válik és új, talán érdekesebb csipkék is kialakulhatnak. Például x=a+b*cos(i) esetében, ahol a = a kör középpontja, b = a kör sugara.
Az x-en és az xx-en belül a b-t, azaz a sugarat azonos mértékben megváltoztatva, ellipszist kapunk.

Papp Miklós

CSIPKE.BAS
1 PROGRAM "Csipke.bas"
5 RANDOMIZE
10 GRAPHICS HIRES 4
15 SET INK 3
16 FOR C=1 TO 2
20   LET SZ=INT(10+RND*40)
30   LET E=INT(20+RND*35)
70   FOR I=0 TO PI*2 STEP PI/SZ
80     LET X=600+350*COS(I)
85     LET XX=600+350*COS(I+E*PI/SZ)
90     LET Y=350+350*SIN(I)
95     LET YY=350+350*SIN(I+E*PI/SZ)
110     PLOT X,Y;XX,YY
120   NEXT
130 NEXT

"Önindítós" BASIC programok
Az Enterprise IS-BASIC kevéssé ismert lehetősége, hogy módunkban áll programjaink automatikus indítását kérni. A módszer lényege, hogy az EXOS modulfejrész 5-ös (azaz a 6.) bájtját megváltoztatjuk 0-tól különböző értékre (ez eredetileg 00h). A megoldást az ASMON alkalmazásával egy példaprogramon keresztül ismertetjük:

10 TEXT 40
20 PRINT "Magatol undul"

Mentsük ki a programunkat (SAVE "PELDA.BAS") és indítsuk el az ASMON-t! Először be kell töltenünk a BASIC programunkat: Nyomjuk le az R billentyűt (Read BIN file), írjuk be a betöltési kezdőcímet (javasolt cím: 1000), majd a legmagasabb végcímet (BFFF), végül a program nevét (PELDA.BAS); minden esetben ENTER-t is kell ütnünk!
A program betöltése után az ASMON kiírja, meddig a címig töltött (LAST ADRESS), a példánkban ez 1040h. Ezt gondosan jegyezzük fel magunknak! Nyomjuk le az M billentyűt (Modify memory), majd írjuk be a kezdőcímnél öttel nagyobb értéket: 1005. A kurzor megjelenik a kívánt helyen (a fejléc 5. bájtján), ide írjunk be 0-tól különböző tetszőleges értéket (például FF). Az ESC megnyomásával kiszállhatunk ebből a módból, a program módosítása ezzel kész.
Már csak ki kell mentenünk a programot. Üssük le az S billentyűt (Save BIN file)! itt megint meg kell adni a kezdőcímet (1000), a végcímet - amit feljegyeztünk (a példában: 1040) - és a módosított program nevét. (Nem javasolt felülírni az eredeti programot!) A kimentés után lépjünk ki az ASMON-nól (:BASIC)és próbáljuk betölteni az átalakított programunkat! Amint látjuk, a LOAD utasításra tényleg magától indul a program, mintha RUN-nal indítottuk volna.

KO-GA

Mi a manó?

1988 Augusztus

A Centrum Áruházakban Enterprise lemezmeghajtó csatlakozó / kontroller kapható. Az eredeti angol csatlakozóból ötszáz darab érkezett, de ha igény lesz rá, importálnak még többet is, illetve megindítják a magyarországi gyártását.

A gépkönyv nem tartalmazza a SET utasítás három opcióját. Ezekkel a lehetőségekkel alkalmazhatjuk mint az ASK, mind a TOGGLE utasítást: A TAPE PROTECT a 34. EXOS változót (PROTECT) állítja be, amely a kazetta másolásvédelmét állítja be (0-nál nagyobb érték esetén van védelem). A PRIORITY a 38. EXOS rendszerváltozót (SPRITE-ot), míg a SOUND STOP a 13. EXOS rendszerváltozót (WAIT_SND) állítja.
A gépkönyvből még két bináris függvény - a BAND és a BOR - is kimaradt, pedig ezek igen hasznosak lehetnek. Amíg például az AND logikai ÉS műveletet végez, vagyis igazán csak az IF utasításban hasznos, addig a BAND - amint a neve is mutatja - bitenkénti ÉS-nek felel meg, Így
   5 AND 6=6
   5 BAND 6 = 4

Szintén hiányzik a gépkönyvből a VERNUM és a VER$ függvény, amely a BASIC-ünk verziószámát, - szövegét tartalmazza.
Elterjed a nézet, hogy egy sorba nem lehet több BASIC utasítást írni. Ez így nem igaz. Próbáljuk ki:
   10 LET a=0:PRINT A:LET A=1:PRINT A
Az ún. blokkszervező utasításokat (FOR - NEXT, IF - END IF, DO - LOOP, stb.) azonban valóban külön sorba kell írni. A programunk áttekinthetősége érdekében érdemes a többi utasítást is külön sorba írnunk.
A tanácsokat Racskó Tamás és Erdei András olvasóink írták.

1988 Szeptember

Enterprise tervek. Pásztor Tamás, a Centrum Áruházak Vállalat márkamenedzsere nyilatkozott az Enterprise gépekkel kapcsolatos tervekről. Pontos időpontokat nem tudunk közölni, de nagy valószínűséggel az év végéig kapható lesz a turbo Enterprise, ami Z80/B processzort tartalmaz. Ennek órajele 6.0 MHz. A gép ezzel jelentős mértékben felgyorsul. Akinek régebbi típusa van, annak sincs oka elkeseredésre, mert gépét a Professional szerviz megrendelésre átalakítja.
Szintén Pásztor Tamás mondta el, hogy tervezik az Enterprise Plus változatot is, amely hatvan új BASIC utasítással bővül. A tervek szerint ebbe a gépbe beépítik a magyar ékezetes szövegszerkesztőt is.

1988 Október

Lemezmeghajtó. A Videoton által a TVC-hez gyártott meghajtók kitűnően használhatók az Enterprise-hoz is, csak egy kis átalakítás szükségeltetik. Az interfész bemenete pontosan fordítva van az Enterprise kontrolleréhez képest. Nem tehetünk mást, mint, hogy a csatlakozást gátló illesztőt lereszeljük. Ezt egyébként nem tanácsos megtenni, de ezúttal ez az egyetlen és biztos megoldás.

Fölös kontroller. A Videoton által gyártott lemezmeghajtókhoz a vásárlóknak meg kell vennie a TVC-kontrollert is, akár akarja, akár nem. Ez az Enterprise tulajdonosoknak felesleges kiadás, a TVC tulajdonosoknál pedig előfordulhat, hogy csak kontrollerre lenne szükségük. A Centrum megígérte, hogy tárgyal a szállítóval a kontroller és a lemezmeghajtó szétválasztásáról.

1988 November

Fölös kontroller továbbra is. A Centrum és a Videoton nem tudott megegyezni abban, hogyan bontsák meg a lemezmeghajtó egységcsomagját. Jelenleg az az Enterprise-tulajdonos, aki Videoton lemezmeghajtót vásárol, kénytelen gazdagodni egy TVC kontrollerrel és szegényedni pár ezer forinttal. A Centrum a sikertelen tárgyalás ellenére is három budapesti márkaboltjában szétválasztja a kényszerű árukapcsolást.

Számítógép OTP-hitelre. Magyarországon először kapható számítógép OTP-hitelre a Centrum új akciója révén. Így 3900 forint előleg befizetésével azok a gépkedvelők is hozzájuthatnak az Enterprisehoz, akiknek az amúgy nem magas gépár is megterhelő lenne.

Enterprise közületnek. A profi felhasználók is jól alkalmazhatják az Enterprise-t kisegítő gépként. Emellett szólnak az alábbi lehetőségek:

A közületi alkalmazás nem megy a lakossági ellátás rovására, mert gép van elég. A programfejlesztés azonban valószínűleg fellendül.

Hardverfilozófia. Az Enterprise gépekhez árusított hardverkiegészítők ára a Centrumnál eleve tartalmazza a géphez illesztés költségét. A vásárlási blokk bemutatása után a szerviz díjtalanul elvégzi az átalakítást.

Programkazetta-kölcsönzés. Hasonlóan a videokazettához, várhatóan programkazetták is kölcsönözhetők lesznek. A Centrum és az "A" Stúdió karácsonyra tervezi az új szolgáltatás megkezdését. Akinek a kazettán lévő szoftver megtetszik, kedvezményes áron meg is vásárolhatja.

1988 December

Fórum az Enterprise-ról. A Centrum Áruházak Vállalat és a Mikroszámítógép Magazin szervezésében fórum lesz az Enterprise géppel kapcsolatban. A feltett kérdésekre a Centrum, az "A" Stúdió, a Novotrade, a Professional Szerviz és az Enterprise cég NSZK-beli képviselői válaszolnak. A kérdéseket írásban a szerkesztőségünkbe várjuk, de a helyszínen is feltehetik. A fórum helyéről és időpontjáról a napilapokban jelenik meg tájékoztatás.

Enterprise összeszerelés Magyarországon? H. M. Windisch, az Enterprise Computer GmbH igazgatója elmondta, hogy magyarországi panelgyártást illetve összeszerelést terveznek. Jelenleg tárgyalásokat folytatnak, de igen pozitívan ítélik meg a lehetőséget. Típusváltozást is terveznek az új Enterprise-gépet standard DIN-szabvány csatlakozókkal szerelnék. A konstrukciót is modernizálnák, a gép gyorsabb lesz, tárkapacitását bővítik és önálló külső tasztatúra is csatlakoztatható hozzá. Így például az IBM PC-billentyűzet is. A jelenlegi elképzelések szerint az új gép olcsóbb lesz.

Enterprise a Szovjetunióban. Az Enterprise GmbH tárgyalásokat folytatott a Szovjetunióval. A várható igény 100 000 db / év. A Szovjetunióba szánt gépek nyomtatott áramkörű kártyáit egyelőre Magyarországon kívánják gyártani. Ebben az ügyben is bíztató tárgyalásokat folytatnak.

Enterprise PC. Az Enterprise cég PC-ket fog gyártani, ezek kompatibilisek lesznek a jelenleg kapható gépekkel. Az új Enterprise PC a jövő év első negyedében jelenik meg az NSZK piacon. Az Enterprise céggel megállapodtunk abban, hogy magazinunk részére folyamatosan kis híreket és anyagokat küld. Az általuk kiadott Enternews című kiadványból bármelyik cikket átvehetjük. A hozzánk érkezett olvasói leveleket is szívesen megválaszolják. Lapunk olvasói várhatóan kedvezményt is kapnak az Enterprise cég müncheni irodájában.

1989 Január

Német nyelvű gép átépítése. Az ENTERPRISE Computers GmbH München cég közölte szerkesztőségünkkel azt, hogyan lehet a német nyelvű gépet angol nyelvűvé átépíteni. Ehhez egy darab UM RIN típusú miniatűr kapcsoló kell, aminek rendelési száma MS 24 L 244. Az átalakítást a következőképpen csináljuk:

  • A gép tetejét rögzítő csavarokat vegyük ki, így a tető levehető. Húzzuk ki az érintkezőket.
  • A 08-59-es EPROM-ot az U1 csatlakozó aljzatba helyezzük.
  • A 08-46-A számú ROMot az UÁ-es csatlakozóba dugjuk.
  • Távolítsuk el az LK1 összekötést, azaz vágjuk el a huzalt.
  • Ki kell iktatni az 1. ábra szerinti kapcsolót.
  • Fúrjunk a ROM felső részébe egy öt mm átmérőjű menetet a 2. ábra alapján.
  • Helyezzük be az érintkezőket a dobozház alsó részébe.
  • Tegyük vissza a gép tetejét, rögzítsük a csavarokat.
  • A kapcsolót a hozzá mellékelt csavarokkal erősítsük fel.

Ezzel átkapcsolhatóvá tettük a gépet. Ha a kapcsoló zárt állásban van, akkor a gép német nyelven üzemel. Nyitott állapotban angol nyelvű BASIC-kel dolgozik. A gép üzem közben is átkapcsolható, de ez hideg indítást eredményez.

A német nyelvű gépen lehetőség van a grafika tárolására a :VSAVE és a :VLOAD utasítás illetve parancs segítségével. A :VSAVE paranccsal kazettára vagy lemezre kimenthetjük az általunk megnyitott grafikus csatorna tartalmát. Parancsmódban ez a következőképpen történik:

:VSAVE#[csat.sz.]:"[eszköz]:[adatnév]"

A csatornaszámhoz az általunk megnyitott videocsatorna számát kell beírni. Az eszköz helyére az adatrögzítő típusát, amelyen tárolni akarunk (TAPE: vagy A:). Az adatnév megengedett hosszúságú karakterlánc lehet.
Ha BASIC programból utasításként adjuk ki, akkor a szintaktikája a következőképpen alakul:

EXT "VSAVE#[csat.sz.]:""[eszköz]:[adatnév]"""

Figyelembe kell venni, hogy a VSAVE paranccsal csak a grafikát tárolhatjuk, a kiválasztott színeket nem. A tárolt grafikát a VLOAD paranccsal tölthetjük be a tetszőlegesen megnyitott videolapra. Természetesen csak a kép tartalmát kapjuk vissza, a színeket újra be kell állítani a BASIC programból. A szintaktikája megegyezik a VSAVE paranccsal illetve utasítással.

1989 Február

Enterprise panaszok. Wágner Miklós budapesti olvasónk többek között a következőket panaszolja. A Spectrum-emulátort és a lemezmeghajtót nem lehet egyszerre használni, így választás elé kerül, hogy melyiket csatlakoztassa. Hasonló válaszút elé állították szerinte a felhasználót a kapható programokkal is. Ugyanis, ha a géphez csatlakozókártyát illesztünk, akkor a kazettán levő programokat nem lehet használni. Az első fájl betöltése után a gép lemezről akar tovább tölteni, és mivel ez nem sikerül neki, leáll. Ha a programot átmásolja lemezre, a betöltésnél az első fájl után szintén leáll a gép, mivel a periféria más-más hosszúságú fájlnevet fogad el, és így a rövidebb néven a gép megint csak nem találja a folytatást. Ezek után szerinte a következő lehetőségek közül választhat:
- Szükség szerint fel-le szereli a csatlakozókártyát, várva, hogy a csatlakozó meddig bírja.
- Addig megy, amíg a lemezre átírt programokat nem tudja lemásolni.
- Megfogadja a Novotrade Rt. eddig ki nem mondott tanácsát: aki annyira nem ért a számítógéphez, hogy egy nyavalyás játékprogramot sem tud átírni, az maradjon meg a Commodore-jánál.
Olvasónk panaszait azért tesszük közzé, hogy hátha valaki praktikus, könnyen megvalósítható tanáccsal segíteni tud neki.

1989 Március

Újabb Enterprise-titok. A gép forgalmazása körüli rejtélyek újabb adalékkal gyarapodtak. A Novotrade 2C számítástechnikai áruházában az Enterprise 128 tizenegyezer-kilencszáz forintért kapható. OTP-hitelre ugyan nem vásárolható, de a hétezer forinttal alacsonyabb ár felbolygatta a piacot. Hogyan lehetséges ez az alacsony ár és hogyan adhatnak rá jótállást, amikor a Professional szervizzel a Centrum kötött szerződést? - Ez titok. Igaz, Rényi Gábor vezérigazgató a vele korábban készített interjúban kijelentette: egy cég üzletpolitikája nem tartozik a nyilvánosságra.

Zzzzip competition. Az Enterprise BASIC Compiler minden rég elfeledett, a fiókok mélyén porosodó, lassúságuk miatt mellőzött programot újjávarázsol.
Szerkesztőségünk az "a" STUDIO-val karöltve felajánl száz darab mintapéldányt ebből a szinte nélkülözhetetlen programcsomagból, azoknak a lelkes programalkotóknak, akik részt vesznek játékos pályázatunkon. Eszerint: készítsen BASIC nyelvű játék- vagy demo-programot és ne zavarja, hogy lassú. Ahhoz, hogy minél előbb Zzzzip-tulajdonos lehessen, programját kazettán rövid leírással, valamint neve és pontos lakcíme feltüntetésével küldje el a szerkesztőségünk címére: Mikroszámítógép Magazin 1371 Budapest Pf. 433. A programokat a Magazin szakmai zsűrije értékeli és a legsikeresebb pályaművek felkerülnek a Zzzip toplistájára, amit az Enterprise rovat rendszeresen közöl majd.

Racskó Tamás lelkes olvasónk küldött néhány tanácsot az Enterprise-tulajdonosoknak. A kétnyelvű gépeken van egy nem ismertetett EXOS-változó, a kódja 90h (144). Értéke 0, ha német, 255, ha angol módban van a gép.
Az EXOS-leírás nem ismerteti, hogyan kell saját editorcsatornát definiálni. Csatornamegnyitásként a VID EDIT (1Dh = 29) EXOS-változóba egy létező videocsatorna kódját kell írni. Ennek természetesen szöveges lapnak kell lennie. Az X irányú méret legalább 4, az Y méret legalább 3 karakternyi legyen. A KEY EDIT? (1Eh=30) változónak a billentyűzetcsatorna kódját kell tartalmaznia. A BUF EDIT (1Fh=31) változót szükség szerint be kell állítani, aminek maximális értéke 63 lehet. Ha ennél nagyobb értéket írunk bele, nem lesz hibajelzés, a rendszer csak az alsó 7 bitet veszi figyelembe (modulo 64). Ezután megnyithatjuk az editorcsatornát. Ha a csatornakód nem 0, akkor nem íródik ki promt a bemenetnél, de helyettesíthetjük az editorcsatornára író PRINT vagy PRINT AT utasítással, majd közvetlenül utána egy INPUT-tal. A hatás ugyanaz.

1989 Április

Magyarország = Budapest. Sok panaszos levelet kapunk vidéki Enterprise-tulajdonosoktól, hogy nem jutnak hozzá helybéli áruházakban programokhoz, szakirodalomhoz és kiegészítőkhöz. Sajnos saját országjáró körutainkon ugyanezt tapasztaltuk. Nincs jó hírünk sem, mivel részben a vidéki áruházak felkészületlensége (a szakértelem hiánya), részben az elmúlt évben kialakult Centrum-Novotrade viszály miatt sem, illetve csak nagyon mérsékelten rendelnek számítástechnikai eszközöket. A kialakult helyzettel ugyan egyáltalán nem értünk egyet, azonban csak azt tanácsolhatjuk az Enterprise-osoknak, hogyha biztosra akarnak menni, a kijelölt márkaáruházakat keressék fel. Ezek Budapesten vannak! Emiatt a vidékieknek sajnos utazniuk kell. A szakosodott üzletek a következők: az úttörő, az Otthon, a Kispesti és a Novotrade 2C Áruház. Nagyon nem örülünk annak, hogy e remek és olcsó gép körül újabb vihar dúl.

Monogram. Írjunk az ST FLAG rendszerváltozóba (1Ah = 26) 42-t. Érdekes dolog történik. Az állapotsorban a ROM programok íróinak monogramjai jelennek meg.

1989 Május

Kövér Gábor, a miskolci Enterprise klub tagja a következőkre hívja fel a géptulajdonosok figyelmét: A SIMON vagy ASMON használatakor a RESET gomb megnyomása esetén az editorban lévő forrásszöveg elveszni látszik ugyan, de nem törlődik ki. Igaz, az assembler változói átíródnak. A 0271h-72h címeken tárolódik az editor-puffer kezdőcíme, ami általában 0801h. Innen D paranccsal kilistázva a memória tartalmát, megállapíthatjuk az elveszettnek vélt szöveg végcímét. Ezután az utolsó bájt tartalmát be kell írni a 0273h, illetve a 0289h-8Ah címekre, ezenkívül egy ennél eggyel nagyobb értéket a 0279h-7Ah címre. Mivel az assembler a szövegünk első bájtját kinullázta, ennek eredeti értékét is vissza kell állítani. Így visszakapjuk kényszerűségből elveszett assembly progamunkat.

Nyomtatás. Racskó Tamás, aki a szegedi Enterprise klub tagja, az RPR 210-01 típusú nyomtatóval szerzett tapasztalatát osztja meg olvasóinkkal: bár az EXOS-leírás szerint a gép a nyomtató betöltésénél a printer aljzaton '/ready' jelölést alkalmaz, azaz egy negatív szintű jelet, a nyomtató nem működik. A ROM listát tanulmányozva láthatjuk, hogy ezt a jelet az Enterprise az adat kiküldése után vizsgálja. Ezek szerint a '/ack' (acknowledge) jelet vár a nyomtatótól, de az én gépemen csak a 'busy' jel betöltése után működött helyesen.

1989 Július

Olvasóink leveleiből megtudtuk, hogy a szegedi Centrum Áruházban több Enterprise gépet is eladtak 2.0 verziószámú BASIC cartridge-dzsel. Elképzelhető, hogy ez más áruházban is így volt, vagyis hogy erre nem hívták fel a vásárlók figyelmét. A gépkönyv, amit a géphez mellékeltek, a 2.1 verziót tartalmazza. Ezért az újdonsült géptulajdonosok meglepődtek, amikor a "BASIC nyomozás" során a következőkre derült fény. A 2.0 verzió ismeri ugyan a CALL-függvényhívást, de nem tudja értelmezni, ha gépi kódú program részére helyet foglalunk az ALLOCATE paranccsal. Együtt a kettő nem alkalmazható. Így - többek között - nem működik a fejbeállító program sem. Ilyenkor "A változónak nincs értéke" hibaüzenetet kapjuk azokra a sorokra, amelyekben a CALL hívás szerepel.
A sztringeket is kényesebben kezeli ez a változat. Például a 2.0 verzió csak az alábbiak szerint megírt sorokat fogadja el:

100 LET AS$= "PRINTER"
110 PRINT A$(3:7)

A 2.1 verzió ezzel szemben a következőket is elfogadja:

100 LET A$="PRINTER"
110 PRINT A$(3:)

Szegedi olvasóinknak ez sajnos csak három hónap után tűnt fel, de akkor már a gépeket nem cserélték ki. Elkeseredésükben a szegedi Professional Szervizhez fordultak. Ott nagy segítőkészséggel találkoztak: kaptak új, 2.1 verziójú BASIC kártyákat. Bár a szerviz dolgozói hasonló esettel eddig nem találkoztak, azért elképzelhetőnek tartják, hogy nemcsak ezeket a gépeket adták el 2.0 verziószámú BASIC-kel. Ezért javasoljuk, hogy akik még nem próbálták ki, most gépeljék be a HELP parancsot, és így győződjenek meg a BASIC kártyájuk verziószámáról. Sok rejtélyes gondnak elejét vehetik ezzel. Egyúttal tolmácsoljuk a szegedi Professional Szerviz dolgozóinak olvasóink köszönetét.

1989 Szeptember

A Centrum Áruházakban 498 forintos áron megjelent a Quelle katalógusban is fellelhető TV-Computer átkapcsoló szerkezet. Ez az eszköz lehetőséget nyújt a hazai számítógépet használók népes táborának arra, hogy a tévékészüléket, illetve számítógépet úgy használhassa, hogy a csatlakozókábeleket ne kelljen minduntalan ki-be húzogatni a tévékészülékből. A 75 ohmos antennakábelt kell bedugni a TV feliratú csatlakozórészbe, a szabadon maradó, Computer feliratú aljzatba pedig számítógépünk RF antennacsatlakozóját kell bedugni. A kis doboz saját antennacsatlakozóját ezután biztonságosan dughatjuk be a tévékészülékünk antennabemenetébe. Hasznos dolog, hogy a négy színben forgalomba hozott átkapcsoló felragasztható a bútor oldalfalára.

Kedvező fogadtatásra talált az úttörő Áruházban a Public Domain kazetták másolása (az ott megvásárolt kazetták B oldalára ingyen másolják a programot). Az eddig így eladott kazetták száma megközelíti az ezret. A sikeren felbuzdulva rövidesen Miskolcon, Szegeden és Győrött is megteremtik a lehetőséget a Public Domain kazetták másolására.

A Kerminél, a MEEI-nél és a Postánál már vizsgálják a 180 kbájt kapacitású hajlékonylemez-meghajtót, amelyet a Novotrade szándékozik forgalmazni.

A Novotrade Rt. és a Centrum Áruházak különválása óta a Novotrade két új programmal, a Centrum pedig tíz újabb játékkal jelentkezett a hazai Enterprise-piacon.

Meg nem erősített hírek szerint újabb 2000 darab Enterprise 128K jelű számítógép érkezik az országba, de az importőr nem a Novotrade Rt. Ugyanakkor 4000 darab EP-64K jelű gép hamarosan behajózik Egyiptomba.

1989 Október

Egyre több a panasz, hogy a tápegység csatlakozó végének ki-be húzogatása miatt (néhány program RESET gombbal nem törölhető ki, például a Heathrow ATC.) a tartólamella meglágyul, és ilyenkor már gyakorivá válik az érintkezési hiba. A. csere, illetve javítás is csak egy ideig oldja meg a problémát. Javasoljuk, használják a tápegység feszültségének ki/be kapcsolóját, egy japán alkatrészekből összeállított, piros. LED kijelzővel ellátott olyan mikrokapcsolót, amely nemcsak az Enterprise gépekhez, hanem. a Sirnclair gépek számos típusához is jó. Ára 768 forint.

Hamarosan befejeződnék a tárgyalások az EP Márkaszerviz és a Centrum Nagyker között, aminek eredményeképpen várhatóan a Centrum Flórián Áruházban (csak itt!) számítógépalkatrész-részleg nyílik a műszaki osztály keretén belül. Eldöntésre vár, hogy az EP-alkatrészek, közül melyeket forgalmazzák, és még azt sem tisztázták, hogy az EP-n kívül lesz-e alkatrész más - például TVC - számítógépekhez is.

Az egyre erősödő dollárárfolyam miatt egyre kevesebb az esély arra, hogy a már katalógusunkban is meghirdetett DYRAS Boostert, az "aktív mini hangdobozt" és a CUMANA mono, illetve dual shasse-t tápegységgel importálhassuk - hangzott az egyik legfrissebb információ a Centrum Nagykerből.

Elfogyott és -már csak az áruházakban kapható az eredeti Enterprise eredeti gyártmányú EX-DOS lemezvezérlő kártyája.

A forgalmazótól kapott információ szerint az RF hangmodulátorból a készletnek több mint a felét eladták már. Ez a kis berendezés, amelyet a márkaszervizek szerelnek bele a számítógépbe, arra szolgál, hogy a tévékészüléken hallgathassuk az Enterprise számítógép hangját. A berendezés ára szereléssel együtt 998 forint.

1989 November

Az "a" Stúdióval közösen meghirdetett ZZZIP pályázatunk továbbra is érvényben van. Számos érdekes játékprogramot kaptunk, tulajdonosaikat ZZZIP BASIC fordítóval jutalmaztuk. Azonban egyiket sem tudtuk átalakítás nélkül lefordítani. Ezért felhívjuk a pályázók figyelmét, hogy a ZZZIP egy egész értékű fordító. Így a BASIC programban lévő konstansok és változók csak egész értékűek lehetnek. Továbbá nem minden utasítást fogad el. Ezek a CHAIN, IMAGE, PRINT USING, TRACE, TYPE. A beépített függvényeket egész értékűnek tekinti. Amennyiben használni akarják, akkor kezdő értéküket arányosítani kell, azaz egész értékűvé kell transzformálni. Továbbra is várjuk pályázataikat, cikkeiket és észrevételeiket.

1990 Január

Kivételesen nem információkat és tanácsokat közlünk eben a rovatocskában, hanem apró, trükkös programokat. A listákat begépelve érdekes dolgokat tapasztalhatnak a kezdő Enterprise-osok, a profik pedig összehasonlíthatják a közölt programokat saját megoldásaikkal. Kérjük olvasóinkat, hogy fejtsék meg e programokat, és küldjenek hasonlókat szerkesztőségünkbe.

1 PROGRAM "Flines.bas"
2 ! Villogo sorok megszakitasban
3 FOR I=48897 TO 48905
4   READ A
5   POKE I,A
6 NEXT
7 SPOKE 255,49134,191:SPOKE 255,49133,0
8 DATA 237,95,50,24,185,50,136,186,201

1 PROGRAM "FStatus.bas"
2 ! Villogo status-sor megszakitasban
3 FOR I=48897 TO 48905
4   READ A
5   POKE I,A
6 NEXT
7 SPOKE 255,49134,191:SPOKE 255,49133,0
8 DATA 237,95,50,9,185,50,11,185,201

1 PROGRAM "Statuscl.bas"
2 TEXT
3 INPUT AT 11,7,PROMPT "STATUS sor szine (0-255)?":A
4 SPOKE 255,14601,A:SPOKE 255,14603,A
5 LET A$="Nyomd le a SPACE billentyut!"
6 FOR I=1 TO LEN(A$)
7   SPOKE 255,16061+I,ORD(A$(I:I)):SPOKE 255,16062+I,142
8   SOUND PITCH 56,DURATION 1
9 NEXT
10 SPOKE 255,16062+LEN(A$),32
11 DO
12   GET A$
13 LOOP UNTIL A$=" "

1990 Február

A kecskeméti Szalvay Mihály Úttörő- és Ifjúsági Otthonban működő Enterprise Klub (Kecskemét, Széchenyi u. 7.) jelentkezett szerkesztőségünknél. Jelenlegi taglétszámuk 30 fő. Várják a további jelentkezőket - mi pedig híreket további EP kluboktól.

Katona László olvasónk küldött a "Mi a manó?" részére Enterprise gépre vonatkozó érdekességeket. Ezek egyike: ha a szövegszerkesztő üzemmódban megtelik a memória, akkoragép figyelmeztetés nélkül törli a szöveg elejét vagy a végét, attól függően, melyik van éppen távolabb a kurzortól.

 

Megkérdeztük az ENTERPRISE-ról

A Centrum Áruházak Vállalat az elmúlt évben kőzet tízezer darab Enterprise 128 számítógépet adott el. Ezt s típust kizárólag ez a vállalat forgalmazta. Az eddigi tapasztalatokról kérdeztük Kaszás Kálmán vezérigazgatót.
M. M. Noha a Centrum Áruházak Vállalatnál már hagyománya van a számítógépek értékesítésének, nem kifejezettei erre a területre szakosodtak. Miért döntöttek úgy, hogy nagy mennyiségben, nálunk ismeretlen számítógép forgalmazását kezdik el?
K. K. Az ilyen tevékenység nálunk nem új keletű. A Commodore 610 típusú géppel kezdtük, ebből hatszázat adtunk el. Amíg a gép ára a hazai piacon hatszázezer forint körül volt, mi jóval kétszázezer alatt kínáltuk. Tehát már akkor is törekedtünk arra, hogy kedvező árat alakítsunk ki. Valós piaci viszonyok között egy kereskedelmi vállalat azt szerzi be, amit forgalmazni kíván. A mi körülményeink között csak abban dönthettünk, hogy a hazai kínálatban megjelent Enterprise számítógépet bevezetjük-e vagy sem. Mi vezérelt minket? Ilyen kategóriájú gépet Magyarországon csak a Videoton gyárt. Ezért vállalnunk kellett a nehézségeket, az ismeretlen márkát, a szervizhálózat kialakítását, a használati utasítással való ellátást, a szoftverek beszerzését. A perifériák lehetőség szerinti jó ellátására is sok energiát fordítottunk. Végül is az üzleti szempont vezérelt minket. Ilyetén a hazai keresletet akartuk megfelelő árú géppel kielégíteni, megteremtve egyúttal a gondos értékesítés körülményeit is. Tízezer Enterprise értékesítésére szerződtünk a Novotrade Rt.-vet, de további háromezret is átvettünk.
M. M. Ezenkívül nem vesznek át értékesítésre gépeket?
K. K. Nem. Ennek több oka is van. Az eredetileg szerződött tízezer gép nem a megállapodás szerinti ütemben érkezett. Az engedélyezési eljárás elhúzódása miatt azonban csak 3500-at kaptunk. Futottunk a gép után, hiszen már mindent előkészítettünk. Az ütemtelen szállítás ellenére is átvettünk összesen tizenháromezer Enterprise-t. Úgy véljük, hogy ez a mennyiség a keresletet kielégíti. Importlehetőségünket inkább a kiegészítők és a tartozékok beszerzésére kell fordítanunk. Másik gondunk az, hogy a megváltozott gazdasági szabályozók miatt az új beszerzés nem fér bele a kialakított árba, ami már az átvett utolsó tételre is igaz. Ennek ellenére mi továbbra is tartottuk a számunkra már kedvezőtlen árat, de további tételeket nem veszünk át. A még meglévő mennyiséget a nagykereskedelmi részlegünkön keresztül más kereskedelmi vállalatok számára is értékesíteni kívánjuk. Ebbeli döntésünkben az is közrejátszott, hogy nagyon magnövekedett a számítógépek magánimportja. Bizonyára ez az új útlevélrendeletnek, a többszöri kiutazásnak a következménye.
M. M. Nem titok, hogy az Enterprise 128 a nyugati piacon megbukott. Igaz, nem a konstrukciója, hanem a rossz marketingtevékenység miatt. Az viszont nyilvánvaló, hogy a vásárlók nem mentesek az előítélettől. Nem vállaltak-e túlzott kockázatot, amikor mindezek ellenére az értékesítés mellett döntöttek?
K. K. Ismereteink szerint a gép nem szakmailag bukott meg. Ezenkívül azért döntöttünk mellette, mert egy hasonló típus licencét az egyik magyar vállalat megvásárolta. Vállalkozásunkkor számoltunk azzal, hogy egy nálunk ismeretlen márkát kell a vásárlókkal elfogadtatni. A gépet bevizsgáltattuk, és a szakértők nagyon jó véleményt adtak róla. Mivel a tudása és az ára jó volt, ezért szántuk rá magunkat, hogy forgalmazzuk. Így aztán a bevezető reklámmal egyidőben Budapesten kívül még tizenhét helyen kezdtük a gépet eladni. Az eddigi, több mint tízezer értékesítés minket igazol.
M. M. Megítélés kérdése, hogy az Enterprise 128 szoftverrel, szakkönyvvel és kiegészítőkkel való ellátása jó-e vagy rossz. Az azonban saját tapasztalatunk, hogy nem egyenletes. Miért?
K. K. Annak az árunak, aminek import tartalma van, annak beszerzése függ a engedélyezési eljárástól. Ez az egész magyar kínálatra jellemző: valamit mindig lehet kapni, de nem folyamatosan. Az áruházak megrendeléseikben önállóak, így készleteikkel is maguk gazdálkodnak. Úgy érzem, mégsincs sehol sem hiány, mert nagykereskedelmi raktárunkból folyamatosan ellátjuk az üzleteket. Megemlítem 1987-ben az eladott tízezer géphez 39500 játék- és oktatókazetta fogyott el.
M. M. Hogyan ítéli meg az Enterprise jövőjét? Jogosnak tartja-e azoknak a véleményét, akik a lassú elsorvadását jósolják illetve mivel akadályozható ez meg?
K. K. Amint említettem, vállalatunk már átvett tizenháromezer gépen kívül nem kíván többet beszerezni. Importlehetőségeinket a meglévő gépeknek kiegészítőkkel és tartozékokkal való folyamatos ellátására fordítjuk. Ezt hosszú távon kívánjuk fenntartani, mert a vásárlóinkkal szemben felelősséget érzünk.
M. M. Tehát az Enterprise-tulajdonosok megnyugodhatnak?
K. K. Igen. Kérem, ez nálunk nemcsak jogi, hanem erkölcsi kötelezettség is, vállalatunk jó híre függ ettől.
M. M. Néhány olvasónk azzal vádolja Centrumot, hogy az Enterprise-t túlzottan preferálja más gépek hátrányára.
K. K. Először is nagyon meglep ez "vád". A Videotonnal szerződésünk van és mi annak továbbra is eleget teszünk. A kínálat bővítésére is változatlanul erőfeszítéseket teszünk. Ezért semmilyen érdekünk nem fűződik a kivételezéshez. Talán az Enterprise reklámozására nagyobb gondot fordítunk - amit az új típus bevezetése indokol -, de még gondolatba sem fordul elő, hogy más gépeket emiatt háttérbe szorítsunk.

(Remélem senki nem fordult le a székről, miközben ezeket a sorokat olvasta, sajnos az idő mást igazolt...)

(1988 Augusztus)

A Novotrade Rt. az Enterprise 128-as rendszertelelőse, ami annyit jelent, hogy a cég vállalta e gépek folyamatos szervizelését és programjaik fejlesztését. Erről az elkötelezettségről és a kissé talányos előzményekről interjúvoltuk meg Rényi Gábort, a Novotrade Rt. vezérigazgatóját.
M. M. Önök ez ideig nagyon szűkszavúan nyilatkoztak az Enterprise gépek eredetéről. Ez sok találgatásra, pletykálkodásra adott okot. Most, miután több mint egy éve kapható a gép, lehullhat-e a lepel: tulajdonképpen miért és milyen szempontok alapján választották éppen ezt a típust?
R. G. Többször hangoztattam már és most is az a véleményem, hogy egy cég üzleti információi nem tartoznak a nyilvánosságra, csak az üzletpolitikája. Lényeg, hogy az Enterprise 128 rendkívül jó műszaki megoldás. Ennek a készüléknek a legjobb szerintem az ár / teljesítmény viszonya ebben a kategóriában. Igaz, Nyugaton "meghalt", megszüntették a gyártását, de csak az Enterprise cég marketingtevékenységének köszönhetően. Megcsinálták a legjobb kisszámítógépet, de egyszerűen szegények voltak a piaci bevezetéséhez. így a többi ismert és jól reklámozott géppel szemben nem volt képes a piacon lábra kapni. Végső soron olcsón jutottunk hozzá, mert más gyártók, például a Commodore is nemhogy csökkentették, hanem emelték az áraikat. Az sem utolsó szempont, hogy a beszerzésre fordítható keretünkből kétszer annyi Enterprise-t vásárolhattunk, mint más típusból. Meggyőződésem, hogy az ára és a tudása összhangban van, így az ország és a vevő is jól jár.
M. M. Elmondaná a gép útját a beszerzéstől az értékesítésig?
R. G. A gépet először átalakítjuk a magyar szabványoknak megfelelően. Az eredeti angol csatlakozót magyarra cseréljük, majd a gépeket bevizsgáljuk és magyar nyelvű gépkönyvvel látjuk el.
M. M. Hogyan fordulhat elő, hogy sokszor az eredeti csomagolású dobozban fel van cserélve a német és az angol nyelvű géphez tartozó kártya vagy a demo-kazetta?
R. G. Ilyen panaszról még nem hallottam! Ha ilyesmi elő is fordult a csomagolásnál, biztos, hogy csak nagyon ritkán.
M. M. Ha már a felcserélésről esett szó: jónak tartja, hogy két típusú Enterprise-t értékesítenek?
R. G. Nem tartom jónak, de ahogy mondani szokták: ez van! Nem lehet a gazdasági realitásoktól és kényszertől elszakadni. Egyébként forgalomba hoztunk 1500 példányban az angol gépekhez egy EnterVideo című kazettát, amellyel a német gépekkel kompatibilissé tehetők. Ez tulajdonképpen egy BASIC bővítés.
M. M. Miként fordulhat elő, hogy a Novotrade Rt. bevizsgálása ellenére a bontatlan dobozokban hibás a gép?
R. G. Ez nemcsak az Enterprise-ra jellemző. Minden számítógéppel, még a professzionálissal is ez a problémánk. Ezek érzékeny készülékek! Meg kell nézni, hogyan szállítják őket. Dobálják, leejtik, és nem ritka, hogy berakják a raktárba a forró fűtőtest mellé. Nem csoda, hogy ilyen körülmények között egy-egy gyengébb forrasztás elenged. S mint minden számítógépnél, vannak gyári hibák is, amelyek az első bekapcsoláskor még nem jönnek elő. Kétségtelen tény, hogy az első részszállításban előfordultak hibás készülékek, de a folyamatos utánszállításoknál már ezek a hibák elmaradtak, és a szerviz szakemberei is "beletanultak" az Enterprise gépek javításába.
M. M. Hogyan látja az Enterprise jövőjét? Megalapozott-e azoknak a félelme, akik a további alkatrész- és szoftverellátást illetően tamáskodnak?
R. G. A Novotrade Rt. az Enterprise teljes supportját vállalta. Féljenek a Spectrum-tulajdonosok, mert azzal valóban senki nem foglalkozik hivatalból, szakszerűen! Az Enterprise-ban két speciális alkatrész van, a DAVE és a NICK chip. Ezekből van elegendő raktárkészlet a szállító vállalatnál. A többi mind helyettesíthető. A kiegészítőket is folyamatosan fejlesztjük. Már gyártják a Spectrum-emulátort. Állítom, hogy a Novotrade Rt. igenis eleget fog tenni az Enterprise supportjának. A szoftvereket is folyamatosan gyártjuk, de ha továbbra is lopják, akkor a fejlesztést abbahagyjuk. A gengszterizmus alapján létező klubokban" szervezett másolás folyik. Azok fosztják meg a többieket a programoktól, akik lopják. Tudomásul kell venni, hogy a szoftvereknél is van gazdaságos darabszám. Ha az eladott mennyiség ez alá csökken, senki sem fog szoftvert fejleszteni.
M. M. Az Enterprise-hoz elég sokféle program és kiegészítő kapható, de nem folyamatosan. Például a szakkönyvek miért fogytak el?
R. G. Nehéz a könyvek terjesztése, mert területenként más-másra van igény. Ez attól is függ, hogy milyen az adott területen a számítógép alkalmazása. A könyveknél a forgalmazóval valóban nem minden esetben mértük fel helyesen a piaci igényeket. Ezért például az EXOS könyvből az eredeti példányszám közel háromszorosát nyomtuk újra. Az újabb könyveknél azonban tanultunk ezekből a tapasztalatokból, és már nagyobb példányszámot nyomtatunk.
M. M. Az Enterprise-al kapcsolatban igen nagy az érdeklődés, sőt a vita is. Úgy látom, egy kicsit felbolydult a szakma. Ezt az új iránti érdeklődésnek tudhatjuk be, vagy lát valamilyen más okot is?
R. G. Amikor először behoztuk a Commodore 64-et, a szakma gyilkosainak tartottak minket. A számítástechnikai szakemberek fel voltak háborodva, és ezt a tettet a számítástechnika halálának nevezték. Pedig mi soha nem állítottuk, hogy a Commodore 64 megoldja a vállalati igényeket. Szerintem Magyarországon még nem szokták meg a piac szabályozó szerepét, és ennek megfelelően a piaci döntéseket sem. Egyeseket ez bőszít, másokat örömmel tölt el. Természetesen az érdeklődés az újdonságnak is tulajdonítható.

(1988 Szeptember)

Romvári Gábor a HCC Enterprise Klub vezetője. A klub 1987 szeptembere óta működik a VSZM Közösségi Házban, Nagy István létesítményvezető támogatásával. 1988 májusában már háromszázötven tagja volt.
M. M. Miért éppen az Enterprise Klub létrehozásának gondolata fogant meg a VSZM Közösségi Ház vezetőiben?
R. G. Mert az Enterprise új géptípus. Abban az időben egyetlen ilyen klubról sem volt tudomásunk. Már akkor elkezdtük a szervezését, amikor a gépek értékesítése megindult. Alapvetően új igényt akartunk kielégíteni.
M. M. A VSZM Közösségi Ház régebben szervezett más géppel klubot?
R. G. Igen, C64-re. Ez igen népszerű volt, de a gépeket az LSI-ATSZ elvitte, amikor az ott tartott tanfolyamot befejezte. Ezután a tagok szétszéledtek.
M. M. A Centrum segítette a klub megalakulását?
R. G. Nem. Kértünk támogatást, amit meg is ígértek. Végül is nem adtak semmit, mert érdektelennek tartották a másolások miatt a klub működését. Mi a segítség fejében megígértük, hogy megszüntetjük a programok másolását, és javaslatot is tettünk, aminek a lényege az volt, hogy kapjuk meg a forgalomba kerülő programokat, és azokat egymás között cseréljük. A szellemi termékért járó díjat megfizettük volna.
M. M. Ez számomra egy kicsit bizarr ötletnek tűnik, de mit szólt az érdekelt?
R. G. Úgy érzem, ők úgy gondolták, hogy azonnal tiltsuk be a másolást. Ezt én egy szóbeli ígéretre nem tettem meg. Ezután megszakadt velük a kapcsolat.
M. M. Bizonyára tudja, hogy a programok másolását hazárakban is törvény tiltja. Hogyan egyeztetik ezt össze a klub tevékenységével?
R. G. Természetesen tudom. De kérdem én, a Bitlet rendezhetett hivatalos másolást a Csokonai Művelődési Házban?
M. M. Ezen a példán felbuzdulva ön bocsánatos bűnnek érzi a -másolást?
R. G. Nem teljesen, de ha egy hivatalos rendezvényen megengedhetik maguknak, akkor miért nem csinálhatja egy kisebb klub? A világon minden klub elsősorban a másolások alapján jön létre.
M. M. Ez valószínűleg igaz, de a tagok által készített programok cseréjére!
R. G. Szerintem ez mindenütt csak álca! Minden klubban gyári programokat is cserélnek. Ezenkívül vannak olyan programok, amelyek másképpen be sem jutnának az országba.
M. M. Az Enterprise Klub milyen céllal alakult meg? Feltételezem, hogy nem a programok másolására.
R. G. Természetesen nem. A klubot azért hoztuk létre, mert szerettünk volna otthont adni egy új géptípusnak, ahol alkalom nyílik az információcserére és a tanulásra. Tisztában voltunk azzal, hogy a másolás nem kerülhető el! Úgy érzem, ezért nem a klubokat kell megszűntetni, hanem az emberek szemléletét kell megváltoztatni.
M. M. Hogyan?
R. G. Erre nem tudok pontosan válaszolni, de ezt a kérdést nemcsak számítástechnikai oldalról kell közelíteni. Az ilyen magatartás általános.
M. M. Ön mint klubvezető meg tudná-e tiltani a másolást?
R. G. A klubban igen, ha mindig figyelnénk a másikat és beavatkoznánk. De ha az illetőt ki is tiltanánk a klubból, ezzel sem vennénk elejét a másolásoknak, mert új helyet keresnének. Nem látom értelmét ilyen jellegű beavatkozásnak.
M. M. Tehát kénytelen elfogadni, annak ellenére, hogy tudja: törvénytelen.
R. G. Így van. A másolások számát csökkenteni a hatékony programvédelemmel lehetne, és olyan áron kellene a programokat forgalomba hozni, hogy senkinek se legyen érdeke a feltörés.
M. M. Mi a véleménye arról, hogy a fejlesztők olyan védelmet terveznek, amely feltörési kísérletnél tönkreteszi a számítógépet?
R. G. Amennyiben ez a programhoz mellékelt tájékoztatón szerepel, semmi kivetnivalót nem találok benne. Ezt a tulajdonságot azonban nagyon figyelemfelhívóan kell közölni.
M. M. A kereskedők és a fejlesztők azon a véleményen vannak, hogy a kalózok miatt senki sem fog programot készíteni. Így a másolók lesznek a felelősök a gyenge ellátásért.
R. G. Tizennyolcezer gép van forgalomban, feltehetően ennyi tulajdonossal. A klubnak háromszázötven tagja van: Ha csak a nem klubtagok vásárolnak, akkor sem fognak a fejlesztők és a kereskedők éhenhalni. Nem lehet ezt a problémát egy klubra ráfogni! Az Enterprise egyébként is speciális helyzetben van, mert ez az első olyan nagy számban elterjedt gép, amelynek esetében a fejlesztők nem számíthatnak tág külföldi piacra és a felhasználók külföldi programokra.

(1988 Október)

Ezúttal Kopácsy Vilmostól kértünk interjút, aki az "A" Stúdióban a nyolcbites számítógépek rendszerfelelőse. Az "A" Stúdió magja 1984-ben jött létre, majd szakcsoportként működtek, míg végül kisszövetkezetté nőtték ki magukat. Szakmai körök általános véleménye szerint amit az Enterprise-ról tudni lehet, azt ők tudják. A Centrummal való együttműködés alapján szoftvereket fejlesztenek és könyveket írnak az Enterprise-hoz.
M. M. Mikor és hogyan kerültek először kapcsolatba az Enterprise-al?
K. V. Amikor az Enterprise 1985-ben megjelent, a cégnek - hasonlóan a későbbi magyar helyzethez - a gép bevezetéséhez programokra volt szüksége. Ezért megkeresett szakmailag párhuzamos vállalatokat, olyanokat, mint az Entersoft szoftverkiadót és más cégeket. Így teremtettek kapcsolatot a Novotrade-del is. A Novotrade az "A" Stúdióval kötött programfejlesztésre szerződést. Nehéz körülmények között, hiányos dokumentációkra támaszkodva, két játék- és egy sprite-tervező programot készítettünk. Ez jó alkalom volt a Magyarországon még ismeretlen Enterprise tanulmányozására.
M. M. Mi volt a vélemény a munkájukról?
K. V. Szakmailag elégedettek voltak, igaz, közben az Enterprise cég pénzügyi helyzete megingott.
M. M. Hogyan jutott eszükbe a Spectrum-emulátor fejlesztése?
K. V. Az angolok arra törekedtek, hogy minél több szoftver legyen a géphez. Mi felismertük a két gép közötti hasonlóságot, és egyre kézenfekvőbb lett a megoldás. Az Enterprise cég bizonytalan anyagi helyzete miatt a tervek fiókba kerültek. Nem a teljes cég ment tönkre, a német része fennmaradt, de ez nem sokat lendített az ügyeken.
M. M. A szerződésük lejárta után miként elevenítették fel ismét a kapcsolatot az Enterprise-zal?
K. V. Mi egy pillanatra sem felejtettük el ezt a gépet. Igaz, hogy a dokumentumok a fiókban pihentek, de az Enterprise fejlesztőgéppé nőtte ki magát az "A" Stúdióban.
M. M. Milyen fejlesztéseik voltak?
K. V. Mindenekelőtt megrendelésre meglévő szoftvereket átírtunk másik gépre. Többek között a C64-es programokat Spectrumra. Ebben az esetben azon a gépen fejleszteni, amelyiken a program fut, nagyon körülményes és lassú. Ezért a teljes programrendszert a fordítással együtt az Enterprise-ra vittük, ami összeköttetésben volt a célgéppel. A fejlesztési műveleteket az Enterprise-on végeztük el, és az eredményt átadtuk annak a gépnek, amelyen futnia kell. Így nemcsak időt lehet nyerni, hanem felesleges munka is megtakarítható, mert ha a program "elszáll", még mindig rajta marad a főgépen. Az Enterprise-t ideálisan lehet használni cross-fejlesztésre.
M. M. Mit szóltak hozzá, amikor megkezdődött az Enterprise gépek importja?
K. V. Nagyon jó ötletnek tartottuk, különösen a gép tudását és minőségét figyelembe véve. Messzemenően jobb, mint az akkori köztudatban domináló C64. Az a véleményem, kinőttünk már abból, hogy csak játszani akarunk. Az emberek lassacskán otthon is komolyabb feladatokat akarnak megoldani.
M. M. Az importot követően megújult az üzleti kapcsolatuk az Enterprise céggel?
K. V. Velük nem. Tény azonban, hogy Dániában, Hollandiában és Angliában képviselve vagyunk. Ezekben az országokban is forgalmazták az Enterprise-t, és ennek a szupportjához járulunk hozzá. Nyugaton is jó pár ezer ilyen gép kelt el, és kellenek a programok. Az ottani forgalmazókkal is nagyon jó a kapcsolatunk, programokat fejlesztünk számukra, és adott esetben értékesítési jogokat cserélünk.
M. M. Önök voltak egy ideig a legilletékesebbek a Spectrum-emulátor gyártásában. Mi az igazság a nagy port kavart ügyben?
K. V. Ahogy közhelyként mondani szokták: Magyarországon élünk, és ez a körülmény behatárolja a munkánkat is. Az emulátort megpróbáltuk gyártani, és ezzel betonfalnak rohantunk! Többek között a tervezés előtt megkérdeztünk minden erre hivatott vállalatot, hogy milyen alkatrészek kaphatók. Mire a gyártás megkezdődött volna, a tervezett alkatrész eltűnt a piacról. Ezután jött a doboz! Amelyik dobozt elfogadható áron gyártották volna, az minőségileg és esztétikailag is alkalmatlan volt. Ezután merült fel az a gondolat, hogy az emulátort a Videoton Automatika Leányvállalat gyártsa. Ez mindenkinek jobb volt, de úgy tudom, ők is nehézségekkel küzdenek.
M. M. Nem látja sötétnek az Enterprise jelenlegi helyzetét, illetve a jövőjét?
K. V. Ha ilyennek látnám, akkor nem lenne egy Enterprise az asztalomon egy PC/AT és Atari ST társaságában.
M. M. Melyek az "A" Stúdió ígéretes újdonságai a hazai Enterprise-tulajdonosok számára?
K. V. Jelenleg hat szoftveren dolgozunk. Munkánkat alapvetően két részre bontom: egyrészről a szórakoztatásra, másrészről a komolyabb programozást célzó fejlesztésekre. Ilyen a BASIC-fordító és a BASIC-bővítés, amely a gépi kód és a BASIC-utasítás optimális arányát teremti meg, ráadásul még hatvan függvényt is tartalmaz. Szándékunk hosszú távon foglalkozni az Enterprise-al, természetesen ameddig üzletileg is megéri.
M. M. A programlopásokra gondol?
K. V. Nemcsak arra, habár igaz, hogy ez is rontja üzleti érdekeinket. A szoftverfejlesztés az egyik legrizikósabb vállalkozás. Egy középszintű játékprogram kifejlesztése négy ember hat hónapig tartó munkájának eredménye. Az értékesített programok után darabonként tizenöt forint szerzői rész jut átlagosan. Ebből könnyen ki lehet számítani a programozó félévi jövedelmét. Ugyanakkor a fejlesztés nagyon eszközigényes, nagy a rezsije és drága számítógépek kellenek hozzá.
M. M. Azt hallottam, hogy már a fejlesztéskor is kijutnak kalózpéldányok. Ez hogyan történhet meg?
K. V. Tőlünk biztosan nem. A teszteléskor és a gyártás során kerülhetnek ki, ami megmagyarázhatatlan magatartás a tesztelők és a gyártók részéről.

(1988 November)

A Professional Szerviz 1985-ben alakult meg az Agroindustria Innovációs Vállalaton belül. Tizenkét vidéki városban az egész országot behálózó, egymással szoros kapcsolatban álló egységekből szervizhálózatot alakított ki. Az Enterprise gépek garanciális javítását kezdettől fogva ellátják. Az eközben gyűjtött tapasztalataikról kérdeztük meg Gottfried Tibor szervizvezetőt.
M. M. Miért a Professional Szervizre esett a választás, amikor szerződést kötött a forgalmazó az Enterprise gépek garanciális javítására?
G. T. A Professional a Novotrade márkaszervize, és ezért minket ajánlott a Centrumnak. Különben hagyománya van már nálunk a kisgépek javításának, mert a C Plus/4-et és egyéb iskola-számítógépeket is mi szervizeljük.
M. M. Nem vállaltak-e túlzottan nagy kockázatot azzal, hogy egy nálunk teljesen ismeretlen, új géptípussal kezdtek el foglalkozni?
G. T. Számunkra nem volt ismeretlen, ugyanis előzőleg kaptunk három gépet. Ezeket szétszedtük és megvizsgáltuk a szervizelés szempontjából. Azért sem volt annyira új, mert az Enterprise nagyon hasonlít a ZX-Spectrumra. Tulajdonképpen egy általános Z80 alapú gép, amelyet két koprocesszorral "okosabbá" tettek. Az üzlet anyagi kockázatát egy általunk felállított menedzsercsoport gazdaságossági mutatók alapján is jónak ítélte.
M. M. Elterjedt az a hír, hogy ezek a cég nyakán maradt, félig összeszerelt gépek voltak, és a megrendeléskor úgy "hányták össze" azokat.
G. T. Nagyon sok hír terjedt el, jó és rossz egyaránt. Ennek az lehet az oka, hogy soha nem látott mennyiségű gép jött be a magyar piacra, viszonylag alacsony áron. A számítógép olyan, mint a gépkocsi: mindenkinek a sajátja a legjobb. Én attól féltem, hogy az Enterprise-al is elkövetik azt a hibát, amit a C64-gyel: nem lesz hozzá hardver- és szoftver-kiegészítés. Végül azonban gyorsan reagált a Novotrade, az "A" Stúdió és a Centrum is. Itt jegyzem meg, hogy minden hardver-kiegészítőt is mi szervizelünk.
M. M. Van-e az Enterprise-nak típushibája?
G. T. Ami van, az a fizikai kialakításából adódik, ugyanis a gép nagyon lapos. Az ebből eredő hátrányok persze "kivédhetők". Leggyakoribb a fóliatasztatúra törése, főleg a botkormány alatt. Nagyon sokszor elmondtuk, hogy a beépített botkormány nem játékra való. Előfordul, hogy a gép hátulján levő kis magnetofoncsatlakozó kitörik. A csatlakozókra vigyázni kell, mert elég gyengék. Nem tanácsos más magnetofont csatlakoztatni, mint amelyiket a géphez árulnak. Már csak azért sem, mert a magasabb remotáram elrontja a gépet. Igaz, tönkre nem teszi, de javítást igényel.
M. M. Nem hátrányos-e szervizelés szempontjából, hogy két típus érkezett be?
G. T. Nem! A két típus szervizelése megegyezik.
M. M. Egyik olvasónk megkérdezte, az Enterprise gépre is igaz-e, hogy a színes televízió színeit kiégeti?
G. T. Igaz, mert tévéműsor vételére is alkalmas! A számítógép a képcső azonos pontjait intenzíven használja, és ezek a területek idővel bemattulnak. Ezt azonban több száz üzemóra idézi elő. Vigyázni is lehet a képcsőre. A színtelítettséget és a fényerőt le kell venni, és ha nem programozunk, akkor kapcsoljunk át másik csatornára.
M. M. A programok kazettáról általában jól tölthetők. Néhány olvasónk mégis panaszkodott, hogy bizonyos típusú tévék visszahatnak betöltéskor.
G. T. A Beijing-nél és a legtöbb Videoton-tévénél mi is észleltük ezt a visszahatást.
M. M. Nekem ez elég elképzelhetetlennek tűnik. Hogyan fordulhat elő?
G. T. Valószínűleg egy földhurok alakul ki, de ennek megállapításához olyan műszerek kellenek, amelyek nekünk nincsenek a birtokunkban. Azt javaslom, hogy a két televíziót gyártó cég és a szerviz együtt vizsgálja meg ezt a dolgot. A Beijing akkor is lehetetlenné teszi a betöltést, ha a gép nincs rákötve, de a közelében működik. Sajnos a műszerek hiánya miatt nem tudok pontosabb választ adni. A Videotonnal a kapcsolatot már felvettük.
M. M. Hány Enterprise-t hoztak be javítani az elmúlt időben?
G. T. Az ügyfeleink száma szeptember elsejéig körülbelül 2400 volt. Többségük valamilyen tanácsot kért. A legtöbb kérdés a magnetofon beállításával volt kapcsolatban. Legtöbbször a fejen kellett állítani. A programbetöltés visszatérő gond, igaz, sokszor a hozzá nem értésből adódik.
M. M. Találtak-e konstrukciós hibát?
G. T. Tervezésit nem. Egyéb beállítási hibák előfordulnak, mint a szín-, illetve szinkroneltérés.
M. M. Hogyan viseli az Enterprise a melegedést? Téved-e a gép hosszú üzem alatt?
G. T. Ilyen hibát nem tapasztaltunk. Ha a gép három órát hibamentesen üzemel, akkor nem téved. Ha rossz a gép, ez elég korán kiderül. Néhány jellemző hibalehetőség: a "tünet" attól függ, hogy melyik alkatrész melegszik. Ha a Z80 mikroprocesszor, akkor alapvető funkciókat sem kezel. Amennyiben a RAM-ban vaj hiba, kisimul a kép és nem kezdi el a tesztet. A Nick chip hibája nem megengedett vízszintes csíkokat okoz, a Dave pedig eltorzuló kattogó hangokat eredményez, ha nem működik rendesen. Ha a kép "összetörik", az hangolással helyrehozható.
M. M. Ezek a gépek egyre idősebbek lesznek. Gyarapodnak-e ezáltal a meghibásodások?
G. T. Nem! Legalábbis egyelőre egyre kevesebb a meghibásodás.
M. M. Adna végezetül néhány tanácsot az Enterprise-tulajdonosoknak?
G. T. A meglévő programokat érdemes egy igen jó minőségű magnetofonnal rögzíteni. A gépet nem szabad zárt helyen, például íróasztalba beépítve üzemeltetni. Sok mérgelődéstől és költségtől megkímélhetjük magunkat, ha a tasztatúrát és a beépített botkormányt finoman kezeljük. Érdemes külön botkormányt vásárolni. Ez azért is fontos, mert a fóliatasztatúra-csere körülbelül 1500 forintba kerül, ha gép már nem garanciális. A gépen lévő nem használt csatlakozók nyílt sebek. Ha ezek statikus elektromossággal feltöltött tárgyhoz érnek, az katasztrofális hibát okozhat. Ha nem használjuk a csatlakozót, ne vegyük le a jobb oldali takarólemezt. Végül egy kis kuriózum, amivel újjávarázsolható a Remot Reed relé. Az alábbi két programot futtassuk le:

10 TOGGLE REM1
20 GOTO 10
10 TOGGLE REM2
20 GOTO 10

A program ellenkező állapotba váltja a Reed relé állapotát, majd a 20-as sorban ciklusszerűen újra utasítást kap erre. A stop billentyű megnyomásáig egy halk, percegő hangot halhatunk. A programot tíz-húsz másodpercig futtatva elvégezzük a relé mágnesezését.

(1988 December)

Néhány napos magyarországi látogatásakor, megragadva az alkalmat, H. M. Windisch úrral, az NSZK-beli ENTERPRISE Computere GmbH igazgatójával sikerült interjút készítenünk aki szívesen válaszolt az ENTERPRISE cég eddigi tevékenységére és terveire vonatkozó kérdéseinkre.
M. M. Az Enterprise általános megítélés szerint teljesen újszerű és remek konstrukció. Összefoglalná-e a gép fejlesztésének "filozófiáját"?
H. M. W. Az Enterprise számítógépeket nagyon kedvezőtlen körülmények között bocsátottuk útjukra. Bár az előzetes elképzelések közül nagyon sok helyénvalónak bizonyult, mégis súlyos hibákat követtünk el, amelyeket nem lehetett korrigálni. A műszaki koncepciónk kiindulópontja és feltétele az volt, hogy egy átlagos teljesítményű, piacképes, a termék és annak tudása szerint úgymond "ármegfelelő" gépet állítsunk elő. Az Enterprise ismerőinek nem újdonság, hogy az operációs rendszer és ennek bővítései, az IS-DOS, az EXDOS és az EXOS ma még egyetlen más hasonló gépnél sem érik el ezt a szintet a teljesítmény szempontjából.
M. M. Az Enterprise a rossz marketingtevékenység miatt bukott meg a nyugat-európai országokban. Miben nyilvánult ez meg?
H. M. W. A piaci bevezetés első szakaszában többször módosítottuk a termék nevét. A bejelentett szállítási időpontokat nem tartottuk be a két speciális chippel, a Dave-vel és a Nick-kel kapcsolatos műszaki nehézségek miatt. Ezenkívül téves marketing döntések születtek, érthetetlenül rossz árpolitikát folytattunk. Mindezek a tervezett termelési költségek tekintélyes túllépéséhez és a várt, illetve kalkulált eladások kieséséhez vezettek. Mivel az Enterprise-t a Mahtani család finanszírozta, ez azt eredményezte, hogy az 1985/86. években az NSZK-ba irányuló és a döntő piaci fázisban meghatározott eladási célokhoz nem állt rendelkezésre elegendő pénz. A fejlesztésre húszmillió USA-dollárt költöttek, és így az értékesítésre nem maradt semmi. Ehhez járult még, hogy a müncheni ENTERPRISE üzletvezetése olyan üzleti stratégiát követett, amely egyszerűen nem vált be. Így bár 1985-ben Münchenben még további ötmillió dollárt költöttek a fejlesztésre, a célokat mégsem érték el. 1986 elején az ENTERPRISE úgy döntött, hogy konszolidálja tevékenységét. Ezzel oda jutottak, hogy 1986-ban a müncheni cég kivételével az összes külföldi vállalatukat bezárták, a londoni központ pedig önálló elszámolású lett.
M. M. Milyen tevékenységet folytat a müncheni cég?
H. M. W. Az ENTERPRISE Computers GmbH München a hardver és a szoftver területén minden jogot elnyert, és a fejlesztésekben is központként illetékes. Az utóbbi két évben az ENTERPRISE folyamatosan javított a működési módszerén és számos szoftvert fejlesztett. A hardvert aktualizálták, teljesítményét javították és továbbfejlesztették. Ma az eredeti Enterprise mellett olyan, már ismert perifériák vannak - EXDOS controller, nyomtatók, monitorok, tárbővítők egészen 576 kbájtig, valamint egy sor komplett lemezmeghajtó -, amelyek kapacitása 180-tól 720 kbájtig terjed. Sőt lehetőségünk van már arra, hogy 60 Mbájtos összkapacitású, két merevlemezegységet az Enterprise-hoz csatlakoztassunk. A fenti fejlesztéseken kívül éppen most dolgoznak két univerzális hardverbővítő rendszeren, melyeknek segítségével az Enterprise a tetszőleges szintre bővíthető. Így többek között mérési adatok regisztrálására (áram, feszültség, ellenállás, hőmérséklet stb.). Többféle kártya is az előkészítésnél tart. Az Enterprise mérőhely-számlálókén való alkalmazásának semmi sem ál útjában.
M. M. Elterjedt a hír, hogy új modelleken is dolgoznak. Mondana erről néhány szót?
H. M. W. A már ismert 64 és 128 k-hoz tartozó kiegészítőkön kívül természetesen egy következő modellen is dolgozunk, amely a professzionális igényeket is kielégíti majd. A magyarországi Enterprise-sikerek arra késztették a céget, hogy vizsgáljuk meg, vajon az alapgép és tartozékai gyártására Magyarországon adottak-e a megbízható műszaki feltételek, és versenyképes áron tudnák-e gyártani, Már feladtunk rendelést hat mintapanel elkészítésére. A későbbiekben az ENTERPRISE érdekelt lenne egy, a magyar vállalatokkal folytatandó kooperációban, amely az Enterprise gépet használók részére a kellő mennyiséget és természetesen a sokoldalú hardver- és szoftverkínálatot elérhetővé tenné. A gyártás Magyarországon kívüli igényeket is kielégíthetne. Amit még hiányolunk Magyarországon, az egy Enterprise újság. Olyan, mint például Münchenben az úgynevezett "Enterprise-t használók csoportja" nevű, az "ENTERPRISE USER GROUPS", amelyet klubújságként adunk ki. Ez egy hotline (forródrót), amelyhez általában minden Enterprise-rajongó, a programok előállításához indíttatást érző szabadon hozzájuthat. Az olvasók többek között pályázatokat és versenyeket nyerhetnek. A müncheni ENTERPRISE szívesen támogatna egy hasonló lapot Magyarországon is.

(1989 Január)

Az Úttörő Áruháznak kiemelkedő szerepe van az Enterprise gépek értékesítésében. Ez az egyik a három budapesti márkabolt közül. A gépek kiskereskedelmi forgalmazása során összegyűjtött tapasztalatokról kérdeztük Herbert Ferencet, a műszaki osztály dolgozóját.
M. M.
Az önök áruháza nagy lendülettel és hozzáértéssel kezdte el hazánkban egy teljesen új és ismeretlen típusú számítógép- értékesítését. Kezdetben milyen nehézségei támadtak a műszaki osztálynak?
H. F. Azokban az áruházakban volt gond, ahol nem is akartak az új számítógéppel foglalkozni. Mi nagyon örültünk ennek az új, nagy tudású és olcsó gépnek. Az áruház rögtön az elején ötszázat rendelt belőle. Ez mutatja, hogy nagyon bíztunk benne.
M. M.
Ennek köszönhető, hogy később az áruházat márkabolttá jelölték ki?
H. F. Azt hiszem, részben igen. Bár ez szerintem visszalépés az eredeti célokhoz képest. Az ország minden részéből jönnek hozzánk Enterprise-t vásárolni, miközben majd szétdurrannak a méregtől, hogy miért nem kapnak gépet a lakhelyükhöz közelebb.
M. M. Hány gépet értékesítettek 1988 októberéig?
H. F. Körülbelül kétezer darabot. Ez elég nagy munkát igényelt tőlünk. Néha szédelegve megyek haza. Most is eladunk naponta három-négy darabot, de nehezebb feltételek között.
M. M. A megnövekedett turistaimportra gondol?
H. F. Nemcsak arra. Az embereknek kevesebb pénzük van szórakoztató elektronika vásárlására. Az OTPhitelakció észrevehetően fellendítette a forgalmat. Sok vásárló kéri, hogy hasonlítsuk össze az Enterprise-t a Commodore gépekkel. Én nem vagyok a Commodore-ok ellensége, de ezt egyszerűen nem lehet megtenni. Az Enterprise teljesen más gép, és összehasonlíthatatlanul többet tud.
M. M. Nézzük meg az árakat. Egy Commodore-konfiguráció, hazai árakon számolva, monitor nélkül körülbelül nyolcvanezer forintért megvásárolható. Ugyanez az Enterprise-nál mennyibe kerül?
H. F. Nézzük! Az alapgép 15 800 forint, a DOS controller 10 550 forint, egy jól használható nyomtató 24 400 forint és a VT meghajtó 29 300 forint. Ez is kijön körülbelül nyolcvanezer forintból. A vásárló azonban minőségileg sokkal többet kap. A lemez 720 kbájtra formázható; nem beszélve a gépbe beépített RAM diszkről, ami további 4 x 16 kbájt virtuális tárat jelent. Ha valaki komolyan fejleszteni akar, annak ez kitűnő lehetőség. A tárolt adatok IBM formátumúak. Ez sem lebecsülendő, mert több vevő azért vett Enterprise-t, hogy a munkahelyére lemezen vigye be az otthon összeállított adatokat.
M. M. Sokat hallottunk a Spectrum-emulátor körüli bonyodalmakról. Hogyan élték át önök ezt az időszakot?
H. F. Nagyon sokan keresték. Ezek között volt, aki ennek reményében vette meg az alapgépet. Aztán emulátor helyett jöttek a kifogások. Egyéves késésre nincs mentség!
M. M. Milyen a jelenlegi helyzet?
H. F. Nemigen fogy. Nekünk az igazságnak megfelelően el kell mondanunk a vásárlónak az előnyeit, de a korlátait is. Ez nemcsak az emulátorra, hanem minden kiegészítőre is igaz. Sokan az árát is mérlegelve arra az álláspontra jutnak, hogy inkább vesznek egy Spectrumot.
M. M. A különböző "nyelvű" Enterprise gépek okoztak-e gondot?
H. F: Számottevő gondunk nem volt vele. Kétnyelvű és angol nyelvű gépeket kaptunk.
M. M. Milyen gyakori a három napon belüli reklamáció?
H. F. Nekünk ez olyan, mintha nem is lenne, gyakorlatilag nem fordul elő, mert alaposan kipróbált, "meleg" gépeket adunk el.
M. M. És milyen gyakran találnak hibás gépet?
H. F. A gépek minősége elég rapszodikus. Nem tudom pontosan, hogy hol és kik gyártották, de vannak öt és hat számjegyből álló gyártási számú gépek. Az öt számjegyűek között gyakori hiba, hogy nem érzékelik a DOS-t és valami rendellenesség van a felső 64 kbájton. Szerintem az Enterprise gyenge pontja az RF modulátor. Lehet, hogy erre nem fordítottak a tervezésnél kellő figyelmet. Minden típusú, gyártási hibás televíziónál előfordulhat a sokat reklamált "visszahatás". Ennek az az oka, hogy ha az RF-jel valamiért visszaáramlik, azt a gép zavarként értékeli és megszakítja a betöltést. Ez kiküszöbölhető az általunk forgalmazott szűrőtaggal, de ennek az 599 forintos árát soknak találom. Szerintem a programok is drágák, és egyre többe kerülnek. A másolásoknak is szerintem az az oka, hogy drága és kevés szoftver van.
M. M. Sok panasz érkezett hozzánk, hogy a programkazettákhoz gyenge és rossz leírások vannak.
H. F. Erre nem mondok semmit, inkább megmutatom azokat.
M. M. Amint látom, egyértelmű, hogy játékprogramokat ismertető füzetekben a leírások meglehetősen kurták és egyes esetekben érthetetlenek, illetve elnagyoltak. A vásárlók szoktak erre panaszkodni?
H. F. Elég gyakran. Itt jegyzem meg, hogy kérdéseire mindig a vásárlók észrevételei alapján válaszoltam, szinte az ő véleményüket mondtam el. Engem nem elsősorban mint kereskedőt, hanem mint embert bánt, hogy a vásárlók többsége nem számítógépet akar vásárolni, hanem "játékautomatát". Nem is tudják, mennyi lehetőség, és szépség rejlik egy ilyen gépben. Ók valószínűleg a szakmai folyóiratokat sem olvassák, ezért jó lenne különböző fórumokon erre a figyelmüket felhívni. Mert különben hatalmas lehetőségek maradnak kihasználatlanul.

(1989 Február)

Nyirő Árpád, a Fehérhajó utcai Gelka művezetője elsők között vásárolt Enterprise-t. Két gyerek apja, érthető hát, hogy eredetileg a gépet "családi gépnek" szánta. Ebből az elképzelésből annyi mindenesetre valóra vált, hogy tizenegy éves fiával szinte egymás kezéből kapkodják ki a számítógépet. A szándék és a való később kikerekedett.
M. M. Munkaköréből adódóan is jól ismeri az elterjedt kisgépeket, mint a Spectrumot, a Commodore családot, a, Primo-t. Sőt IBM klónokon is dolgozott. Miért éppen az Enterprise mellett döntött?
Ny. Á. Elhatároztam, hogy veszek egy kisgépet a fiamnak, amit én is tudok használni a munkámhoz, amikor meghallottam a Centrum hirdetését. Úgy gondoltam, ha annak, ami éthangzott, csak a fele is igaz, akkor nekem egy ilyen gépre van szükségem. Nem tagadom, igen kellemesen csalódtam, mert az Enterprise még annál is sokkal többet tud, mint amit híreszteltek róla. C64-et azért nem vettem, mert olyan gépet akartam, amelyik játékra is alkalmas, de - mint említettem - a munkámban is hasznosíthatom. Ennek következtében tehát feltétel volt, hogy a gép olyan legyen, amely más típusú gépekkel is bizonyos szinten hardver- és szoftverkompatibilis. Igaz, az operációs rendszere nehézkesebb, de igen fejlett. Főleg a CP/M alatt futtatható programok igen jók.
M. M. Én sok helyen kerestem üzletekben CP/M alatt futó programokat, de sajnos eredménytelenül.
Ny. Á. Még az első időszakban felkértek, hogy tervezzek kontrollert. Amikor elkészültem, elkezdtem keresni a kollégáimnál olyan programokat, amelyek CP/M alatt futnak. Tény és való, hogy ilyen programok a kereskedelemben vagy már nincsenek, vagy még nincsenek. Az NSZK-ban például az Amstrad cégnél kaphatók Enterprise-ra adaptálható programok.
M. M. Ön elsősorban a CP/M alatt futtatható programok használatát szorgalmazná?
Ny. Á. Feltétlenül! Szerintem a Centrum elsősorban a játékprogramokat erőlteti. Ha más igényt is, mint például az iskolákét is figyelembe vettek volna, akkor ezek a programok létfontosságúak lennének.
M. M. Ön nagyon régóta használja az Enterprise-t. Véleménye szerint ennek a gépnek el kellene terjednie az iskolákban?
Ny. Á. Igen, nagyon sok szempont miatt. A hardverrésze sokkal inkább megfelel a nemzetközi irányzatnak, mint a jelenleg elterjedt gépeké. A gépen futtatható szoftverek kiválóan hasznosíthatók a számítástechnika oktatásában, de egyéb területeken is. Ne feledjük, a gép ára is kedvezőbb a többiénél.
M. M. Megkérdeztük a TII-t az Enterprise iskolai alkalmazásáról. Véleményük szerint bevezetése megbontaná az iskolai gépek homogenitását; a másik kifogás, hogy nem magyar ábécével készült.
Ny. Á. Miért, most homogén géppark van? Igaz, hogy a TVC-vel ellentétben a billentyűzete nem magyar ékezetes, de kis átalakítással a képernyőn megjelenik a teljes magyar ábécé. Ezt nem a géptől kell megkövetelni, hanem a felhasználótól.
M. M. Mint gyakorló apa, észrevette-e, hogy a fia helyesírása romlott, amióta ezen a gépen programozik?
Ny. A Egyáltalán nem. Szerintem nem ezen múlik, hanem hogy mennyit olvas és ír. A gyerek nagyon jól megkülönbözteti, mikor dolgozik géppel és mikor kell magyarul írnia. Automatikusan átáll egyikről a másikra. A programnyelv magyarosítása pedig kifejezetten ártalmas.
M. M. Ha már így elkalandoztunk a pedagógiában, arra kérem, mondjon néhány szót a fia fejlődéséről.
Ny. Á. Fiamnak ez az első gépe. Eleinte nehezen ment neki a gép kezelése, programozása. Sokat kellett segíteni neki. Azután elkezdte magától kikínlódni a feladat megoldását, nekem már csak az eredményt mutatja meg. Ami a játékprogramokat illeti, egyre kevesebbet foglalkozik velük.
M. M. Kellett-e különösebben ösztönözni a számítógép megszeretésére, illetve hozzájárultak-e ehhez a játékok?
Ny. Á. Igen, a játék elősegítette a gép megkedvelését, de nem kellett őt különösen ösztönözni. Van azonban ellenpélda is! A lányom játszani szeret, de különösebben nem érdekli a számítógép. Az Enterprise-zal sikerült a fiamnál célt érnem, vagyis hogy megismerje a számítástechnika alapjait és a programozás logikáját. Ezt olyan gépen tanulta meg, amelynek ismerete alapján könnyebben elmélyedhet a profi szintű számítástechnikában is.
M. M. A gyerek fejlődése szempontjából lényeges volt, hogy milyen gépen tanult?
Ny. Á. Tulajdonképpen az alapok szempontjából ez érdektelen. Ha úgy dönt, hogy tovább akar számítástechnikával foglalkozni, akkor már egyáltalán nem mindegy. Ugyanis amint már mondtam, az Enterprise hardverkialakítása és operációs rendszere nagyon hasonlít az IBM-kompatibilis gépekéhez.
M. M. Az ön munkáját mennyire segítette az Enterprise?
Ny. Á.
Nagyon sok kellemes meglepetésben volt részem vele kapcsolatban. Hamar rájöttem, hogy ez a gép több célra is alkalmas. A Gelkánál már nyolc-tíz helyen alkalmazzák munkalapok feldolgozására.
M. M. Ezt a rendszert ön vezette be?
Ny. Á. Igen. A Gelkának volt egy nagyszámítógépe, amit idővel kivontak a munkából. Jelenleg a munkalapok adatait, amelyektől az emberek fizetése is függ, az egységek Enterprise gépeken viszik fel lemezekre. A lemezeket a közfontban dolgozzák fel IBM-kompatibilis gépen. Az ilyen munkához azonban kiegészítő numerikus billentyűzet kell, amit 1989 első negyedévében már kapni lehet.
M. M. Az Enterprise teljes konfigurációval már drága, megközelíti az IBM klónok árait!
Ny. Á. Ezzel egyetértek, de az IBM-kompatibilis gépek árai nagyon ingadoznak. Enterprise telepítése a vállalatokhoz nemcsak ár kérdése, hanem az adottságoktól is függ. Ahol nincs még IBM-kompatibilis gép, ott érdemes Enterprise-t venni.
M. M. Milyen hiányosságokat tud mondani az Enterprise-zal kapcsolatban?
NY. Á. Még mindig kevés a szakirodalom, és ami van, az hibás, mint például az EXOS 2.1. Furcsállom, hogy nem jelenik meg a kiegészítés. A legkomolyabb probléma azonban a kontroller illesztéssel van. Nagyon gyakori eset ugyanis, hogy nem, illetve hibásan illeszkedik.

(1989 Március)

Pinke György

Egy gép száz bajt csinál?
A hiány hiányt szül

1988. június. Az ország különböző pontjain 12 ezer TVC van, ennek nagy része iskolákban. A gép olcsó és közkedvelt, a programok száma viszont kevés, és akad más kisebb-nagyobb hiba, kifogásolnivaló is. Mi hát mindezek oka, mi a valóság, s mi igaz a szóbeszédből? Elsősorban a tulajdonosok levelei nyomán indultunk útnak az illetékes cégekhez. Aztán az eredetileg egyszerűnek tűnő "nyomozás" érdekes fordulatokat vett.

Először Budapesten, a Videoton Számítástechnikai Kereskedelmi és Szolgáltató Leányvállalatánál jártunk, ahol Gergely János és Kiss Pál fogadott minket szívélyesen.
- Elterjedtek olyan pletykák, melyek szerint a TVC egy régebbi Enterprise gép licence. Tényleg így van?
- Ebben csupán annyi az igazság, hogy mindkettőt ugyanaz az angol cég tervezte.
- Pontosan mióta gyártják a TVC-t, s milyen a kereslet iránta?
- A sorozatgyártást 1985-ben kezdtük el, azóta majdnem 3000 darab 32 k és 9000 darab 64 k gép talált gazdára, illetve van kereskedelmi forgalomban. A vásárlók elsősorban az iskolák, hiszen iskolaszámítógépnek is szántuk, de bőven akadnak magánszemélyek is, akik főként a gép tudásához viszonyított olcsó ára miatt vesznek ilyen típusú számítógépet.
- Hogyan lehetett azt elérni, hogy a gép ára ne emelkedjen túlzottan?
- Igaz, hogy az árra rá kellett tenni az általános forgalmi adót, viszont máshol a gyártás folyamán csökkenteni tudtuk a kiadásokat, s ez eredményezte a csekély mértékű áremelést.
- Ez mindenesetre örvendetes, ám a géppel szemben problémák is felmerültek. A beépített botkormány labilis, hamar tönkremegy, ezenkívül a reset gomb sem tökéletes.
- Ezekről mi is tudunk, de sajnos, megváltoztatásukkal kapcsolatban még nem született döntés. Erről talán a székesfehérvári fejlesztők többet tudnak mondani.
- Ugyanez a helyzet a kitámasztó lábakkal is?
- Nem, az újabb gépek már stabil lábakkal készülnek.
- És az a billyentyű, amelyik backlash helyett aposztrófot ír?
(Erre mindketten nyomogatni kezdik az előttük levő gép billentyűit, próbálják kinyomtatni újra és újra, de a backlash csak nem akar a helyére kerülni.)
- Erre azt hiszem, nem tudok válaszolni, ez még számomra is újdonság.
- Hallottunk panaszokat a lemezegységgel kapcsolatban is. Várható-e új lemezegység megjelenése?
- Igen, már el is készült néhány egy- és kétmeghajtós egység. A régi UPM kompatibilis volt. Az új VT-DOS kompatibilis, de képes lesz elolvasni az elődje által készített lemezeket is. Ennek nagy előnye, hogy egy cartridge segítségével használhatóvá válik a CP/M operációs rendszer a 64K+ és a 32 k-s gép kibővített változatán.
- És mit tudnak tenni azok a felhasználók, akiknek 64 k-s régi gépük van?
- Természetesen át lehet majd alakítani ezeket a gépeket is. Valószínűleg a szervizek is elfogadják a javaslatunkat, s vállalják majd az átalakítást, hiszen csupán egy IC beültetéséről van szó.
- Mely szervizek foglalkoznak a javítással?
- A TVC-vel több szervizlánc is foglalkozik. Az iskolai gépeket a Professional Országos Számítógép Szerviz, a magántulajdonúakat az Agroindustria Innovációs Vállalat javítja.
(Kaptunk egy listát, amelyen további nyolc cég neve és címe olvasható. Ezzel, úgy érezzük, a szervizelés gondja tényleg megoldottnak tekinthető. Minket azonban nemcsak ez érdekelt.)
- Egy gép megítélésében egyik legfontosabb szempont a szoftver. Milyen a programellátottság?
- Ez igen összetett kérdés. A tulajdonosok mindig több és több programot szeretnének, ami miatt a kínálat lemaradozik. Meg kell azonban mondani, hogy sajnos ennek más oka is van. Természetesen a Videoton is készített jó néhány programot, de született egy szerződés a Novotrade-dal, amely szerint ők a 2,6 millió forint értékű gépek, valamint a 400 ezer forint reklámköltség fejében vállalják hardverkiegészítők, évi száz program és négy könyv elkészítését. Most 1988 júniusa van, harminc programmal és két könyvvel.
- Mi volt erre az önök reakciója?
- Sajnos, nem tehettünk semmit, mivel a szerződés szankciókat nem tartalmaz.
- És ez miért van így?
- A Novotrade a magyar piacon monopolhelyzetben van. De találtak ürügyet is. Azzal védekeznek, hogy a gépeket és dokumentációkat két hónapos késéssel, 1987 februárjában szállítottuk le részükre. Azóta eltelt másfél év, s programokat, könyveket még ma is alig lehet látni. Hivatkozásuk alapja most a kazettahiány.
- De hát sorra látni a Novotrade-os kazettákat és a hozzájuk kapcsolódó hirdetéseket, úgyhogy kazettahiányról ilyen értelemben aligha beszélhetünk.
- Sajnos, nemcsak a kazetták számával, hanem a minőségükkel is baj van. A szalagok könnyen nyúlnak, hamar használhatatlanná válnak.
- Hol lehet ezeket egyáltalán beszerezni?
- Elvileg a Centrum áruházak foglalkoznak árusításukkal, ám ők előtérbe helyezik az Enterprise gépek és programok forgalmazását. A TVC csak ezután jön. Ez mindenképpen késlelteti a TVC 64 K+ megjelenését is, ami üzletpolitikai okok miatt majd csak akkor kerülhet a pultokra, ha az elődje elfogyott.

Haszontalan reklám
Utunk ezek után Székesfehérvárra vezetett, ahol kissé körülményesen, a bürokrácia által kiszabott utakat megjárva ugyan, de bejutottunk a gyárba. Itt Cseh Tibornak, aki a Számítástechnikai Gyár fejlesztési osztályán dolgozik, az előbbiekhez hasonló kérdéseket tettünk fel. Ő ugyan bizonyos dolgokról csak magánemberként mondott véleményt, de volt némi tanulság a válaszaiban.
- Olvasóink panaszolták a reset gomb és a beépített botkormány gyenge minőségét, s a billentyűzet egy apró hibáját. Lehetne ezeken valamit javítani?

- Természetesen ezeket házilag bárki kicserélheti, de mi a gyártáskor arra törekszünk, hogy a gép minél olcsóbb legyen, hiszen magasabb áron valószínűleg kisebb lenne a kereslet. A botkormány nyomókeresztje egyébként most már erősebb anyagból készül, de ha mégis eltörne, a garancia erre is vonatkozik. A reset gomb kicserélése többek között azért sincs betervezve, mert a gép dobozát előállító szerszámot kellene módosítani, ami pedig ugyancsak drága. A billentyűzet szépséghibája a festéshez szükséges maszk pontatlanságából ered, de a gépkönyv végén található egy helyesen kinyomtatott kiosztás, ami garantáltan pontos.
- Szerintünk a gépnek nagyobb reklámra volna szüksége. Mi erről a véleménye?
- A Videotonnak nem érdeke a gép reklámozása, ezen nekünk semmi hasznunk nincs; a TVC-t ugyanis körülbelül ugyanolyan áron állítjuk elő, mint amennyiért adjuk. Mi állami nagyvállalat vagyunk, fentről kapjuk az utasítást és néha a támogatást. Ezek után nem hinném, hogy a vállalat érdekei nagyobb propagandát kívánnának meg.
- És mi a helyzet a TVC klubokkal?
- A Videoton a klubjainak csak gépeket ad. Én személy szerint csupán két TVC-s klubról tudok, az egyik itt Székesfehérváron, a Videoton Oktatási Központban, a másik Budapesten, a Marcibányi téri művelődési házban található. (A budapesti klubot időközben kitették innen, jelenleg a Bem rakparton találtak otthont. - A szerzők.)

Az ördög sohasem alszik?!
Természetesen kíváncsiak voltunk a Novotrade hozzáállására is. Csak kisebb kutatással tudtuk meg a TVC-ügyben jártas emberek nevét, de sajnos, a szerződés ügyében illetékes nem került elő. Szerencsére azonban más jellegű információkat bőven kaptunk az Octasoft-ban. Első kérdésünk a kazettahiánnyal volt kapcsolatos.
- Sajnos, az utóbbi időben tényleg nagyon nagy kazettagondokkal küzdöttünk, de remélem, hogy ez már a múlté. A szocialista importban semmiféle szankcióra nincs lehetőségünk, aminek következménye, hogy a megrendelt kazetták csak néha-néha érkeznek meg. Ráadásul egy másik Enterprise-os megrendelésnél már kötbért is fizettünk, így annak a sorozatnak az előállítása fontosabb volt, ennélfogva az élvezett előnyt. Az áruházakban pedig azért szembetűnőbb az Enterprise programok magasabb száma, mert azokat a Centrum már korábban felvásárolta. A TVC programokra viszont jóval kisebb a kereslet.
- De a minőséggel is vannak problémák.
- A kazetta ma már nem a legmodernebb adathordozó, ennek ellenére még szükség van rá, s ha használjuk, legalább a magnetofon lejátszófejének pontos beállítására ügyeljünk. Ugyanazt a programot az egyik magnón be lehet tölteni, a másikon nem. Egyébként már mi is szerettünk volna venni egy modernebb másológépet, de ez a lehetőség anyagi okok miatt kútba esett, mert az oktatóprogram nem a legkifizetődőbb.
- Egyáltalán hány program kapható a Novotrade forgalmazásában?
- Jelenleg körülbelül negyven. De mutatok egy megrendelőt, ez ha jól tudom, teljes.
- Ez elképesztő, ebből a 39 féle programból összesen csak 77 darabra van megrendelés?
- Ettől a cégtől igen, de a többi sem különb. Szeretnénk nagyobb tételben is eladni iskoláknak, hogy az árakat lejjebb szoríthassuk. Állami támogatás inkább csak a gépekre van, s a programok vásárlására kevés pénz jut.
- Pedig ha nincs program, a gépet sem veszik annyian.
- Ez már csak egy ilyen ördögi kör. Mi olcsón behoztuk volna továbbra is a C Plus/4-et, saját valutakeretből, de a belföldi ipar tért hódított. Mire kezdtünk belejönni a Plus/4-be, stílust kellett váltanunk. De ha csak ezen múlott volna! Jártam én már olyan számítástechnika-oktatási tanácskozásokon is, ahol ... De ezt hagyjuk.

Gép - kazetta - könyv. Három egység, amely nélkülözhetetlen. Vajon mi lehet a legsanyarúbb sorsúval, a harmadikkal, a könyvvel? Erről a Novotrade-nél telefonon érdeklődtünk. Kérdéseinkre Szemeke Gabriella adott választ.
- Szeretnénk tudni, hogy az eddig megjelent kiadványokon kívül (TVC BASIC, Operációs rendszer) számíthatunk-e újabbakra?
- Igen, most jelenik meg egy hardverről szóló kiadvány, és további két könyv is szerepel terveinkben, a gépi kódú programozásról és a TVC ROM-ról szólóak, melyeket az év végéig szeretnénk megjelentetni.

Mindenkinek kára ...
Az eddigiek mindenképpen azt sugallják, hogy a Novotrade és a Videoton kapcsolatai nem nevezhetők rózsásnak. Erre konkrét példa, hogy a gépre eddig a hivatalosan forgalomba került programokról sehol sem tudtak összefoglaló kiadványt adni. A két cég szerződésében szó van egyébként hardver-kiegészítőkről is, holott a Novotrade-esek szerint cégük nem is foglalkozik ilyesmivel, továbbá a szerződés nem köti ki ezek számát sem, tehát akár semmibe is vehető. Szomorú, de végül a boltokban tapasztaltak szerint sem a legjobb a programkínálat. Sehol sem haladta meg a hat-nyolc darabot.
Ez hát a keserű igazság, s mindennek kárát a felhasználó vagy az a diák látja, akinek az iskolában ilyen gépparkon kell tanulnia. De mi van akkor, ha nem csak kell, hanem meg is szeretné tanulni szegény diák a számítástechnika fortélyait, vagy a számítógép segítségével szeretné elsajátítani más tantárgyak ismeretanyagait? Hiszen azért van a gép, hogy vele tanuljunk, vagy legalábbis azért lenne. Vagy netán valami porszem került az iskolaszámítógép-program gondosan megolajozott fogaskerekei közé?

Bártfai Barnabás, Vámos Sándor

Vissza