Plus
Tartalom
Bevezetés
BASIC bővítő utasítások és függvények
Assembler fordító és futtató
EXOS bővítések
Az ENTERPRISE PLUS változói
A Centrum Nagykereskedelmi Vállalat - az Enterprise számítógép és annak tartozékainak kizárólagos hazai forgalmazója - a több mint egy éves eladói tapasztalatok birtokában ma már nemcsak elad, hanem az összegyűjtött ismeret- és információanyag segítségével fejlesztésekbe is kezdett. A kifejlesztett termékeket saját maga menedzseli stílszerűen az Enterprise nevéhez: azaz vállalkozik is! A SOFTCART elnevezésű firmware termék kapcsán az ötlet alapját az a felismerés adta, mely szerint az elmúlt másfél év alatt kifejlődött egy ún. "elite kemény mag", mely nem elégszik meg a felhasználói programok kazettás változata nyújtotta körülményekkel. Ilyen fejlesztési munkák esetén az adott program betöltése Kazettáról rendkívüli nehézséget okoz a felhasználónak. A körülményes állománykezelés és a sok vesződséggel járó compilálás még a legkeményebb idegzetű fejlesztő kedvét is hamar elveszi. Az Enterprise bal oldali csatlakozási felülete ROM BAY, szinte kínálta a megoldást a SOFTCART elnevezésű újítás bevezetéséhez. Ugyanakkor az is tény, hogy az ismert okok miatt csak egy szűk réteg engedheti meg magának az EXDOS és vele együtt a mono ill. a dual floppy használatát. Nem beszélve arról a tényről, hogy a Centrum Áruházak számítástechnikai választékából egyenlőre hiányzik a compilerek floppy-s verziója.
Mindenki előtt ismert, hogy az Enterprise 4*16 Kbyte-os ROM-ot képes a bal oldali cartridge csatlakozója felől lekezelne. Nos ennek a ténynek ismeretében és annak a tudatában, hogy a forgalomban lévő BASIC Cartridge Interpreter kedvező fogadtatásra talált a felhasználók körében - született az ötlet! A felhasználói programok valamennyi típusát forgalomba hozzák egy cartridge-on belül úgy, hogy az további programfejlesztési lehetőségeket a feljasználókszámára.
A rövidesen forgalomba kerülő 2000 darab ENTERPRISE PLUS elnevezésű cartridge külső formájában semmiben sem tér el a BASIC cartridge-től. A lényeg a cartridge-on belül található! Az új tervezésű nyák három foglalattal bír, ahol 2 db 27128-as E-PROM-ot és 1 db 27256-os E-PROM-ot lehet zavartalanul elhelyezni. A PLUS gyári jelölésű E-PROM a középső szabad foglalatba lesz beültetve. Sikerült a termék gyártása során egy igen kedvező arányt kialakítani az import és a hazai alkatrészek árai között.
Újszerű a firmware termékben az is, hogy valamennyi E-PROM önálló gyári sorozatszámmal rendelkezik, melyet a forgalmazó a Tisztelt Vevő nevével együtt nyilvántartásába fog venni! Így kívánja biztosítani a folyamatos fejlesztések névre szólóan történő hozzáférhetőségét! Ez utóbbi tényt a két fél közötti Licence Agreement keretén belül rögzíteni és szabályozni is fogják! Joggal vetődik fel a kérdés, mitől lesz plusz a PLUS. Nos a válasz: mert ez az IC három olyan software-t tartalmaz, mely a gép meglévő jó tulajdonságait még tovább fokozzák:
Word Processor Plus | version 2.1 |
Enter Video | version 2.3 |
Basic Exension I.-IV. | version 2.0 |
Az új szövegszerkesztő az abban időközben felfedezett valamennyi hibát korrigálta. Megoldást talált a 40/80 karakteres képernyőkezelés problematikájára éppúgy, mint az ékezetes magyar ABC használatára. A szövegszerkesztő bővített verziója biztosítja a szerkesztett szövegnek EPSON-RX-80, illetve a DATACOOP BABY printerjén történő zavartalan kiíratását is! A sokak által ismert ENTER VIDEO direkt módon történő meghívási lehetősége is adott lesz.
BASIC EXTENSION: A több mint 200 BASIC utasításnak további 65 újabb BASIC utasítással ill. függvénnyel történő kiegészítése.
Az első szabad 128 Kbit-es foglalatba kell elhelyezni az eredeti BASIC cartridge-ban található BASIC Interpretert. Az utolsó foglalat szabadon marad helyet adva más szoftverek használatához. Mivel valamennyi forgalmazott felhasználói program 32 (16) Kbyte méretű, így ide akár az IS-FORTH, vagy akár a LISP compiler E-PROM-ja is beültethető. Mindebből már következik az, hogy az alábbi programok egy szép és biztonságos kis műanyag dobozban (E-PROM-ba égetve) és részletes magyar nyelvű dokumentációval ellátva kerülnek majd forgalomba az alábbi várható sorrendben:
A következő kérdés szinte már magától értetődik, mit csináljon a felhasználó a szabadon maradó BASIC Interpreter üres dobozával? Nos a rendszer erre is ad választ. Ne dobja el! Forgalomba kerül egy olyan nyáklap, mely 2 db 27256-os E-PROM foglalatot tartalmaz. Ez a nyák behelyezve a korábbi BASIC cartridge dobozába alkalmassá válik egy "Software toolkit" használatára. A Tisztelt Vásárlónak most már csak a pénztárcája szabhat határt, hogy hány felhasználói programot tartalmazó EPROM-ot fog vásárolni a Centrum Áruházak Márka Osztályain. A piaci igényeknek megfelelően a cartridge dobozhoz a gyártók terveztek egy szép öntapadós matricát, melyet a kész E-PROM-okkal feltöltött cartridge-ra kell majd felragasztani.
BASIC bővítő utasítások és függvények
A következőkben Ismertetjük a BASIC bővítő utasítások és függvények használatát.
A$ | - egy szabályos stringet, vagy stringváltozót jelent |
[...] | - az ilyen zárójelben lévők nem szükségesek |
CSAT | - egy szabályos EXOS csatorna, pl: £30 |
Utasítások:
CHRROR A$
Az A$-ban lévő karakter képét 90 fokkal jobbra fordítja. A$ csak egy karaktert tartalmazhat.
STRROR A$
Ugyanaz mint CHRROR, azzal a különbséggel, hogy A$ több karakterből állhat.
CHRROL A$
Az A$-ban lévő karakter képét 90 fokkal balra fordítja. A$ csak egy karaktert tartalmazhat.
STRROL A$
Ugyanaz mint CHRROL, azzal a különbséggel, hogy A$ több karakterből állhat.
CHRINV A$
Az A$-ban lévő karakter képét invertálja. A$ csak egy karaktert tartalmazhat.
STRINV A$
Ugyanaz mint CHRINV, azzal a különbséggel, hogy A$ több karakterből állhat.
CHRFLP A$
Az A$-ban lévő karakter képét fejjel lefelé fordítja. A$ csak egy karaktert tartalmazhat.
STRFLP A$
Ugyanaz mint CHRFLP, azzal a különbséggel, hogy A$ több karakterből állhat.
CHRDEF A$
Az A$-ban adott karakter definiálásának kezdetét jelzi. Ezután kilenc, nem feltétlenül egymást követő CHRLIN utasítás kell, hogy kövesse.
CHRLIN A$
Meghatározza a CHRDEF utasítással megadott karakter egy sorát. A$ nyolc karakter, hosszú kell, hogy legyen, valamint kilenc ilyen utasításnak kell szerepelnie. A$ minden egyes karaktere egy bitet képvisel a karakter definícióban. Szóköz hatására a megfelelő bit törlődik, "." (pont) hatására megmarad az eredeti karakter pontja, minden más karakter pedig egybe állítja a bitet. Például:
CHRDEF "ö"
CHRLIN " "
CHRLIN "XX....XX"
CHRLIN " "
CHRLIN "........"
CHRLIN ". . . . ", stb kilencszer.
CHRLET A1$=A2$
Az A2$-ban lévő karakter képét az A1$-ban lévő karakter képének másolja. Pl: ha A1$="£" és A2$="Z", akkor az utasítás hatására a "£" karaktert "Z"-nek definiálja. A CHRLET "£"="Z" ugyanezt a hatást éri el.
DEFAULT A$
Beállítja a mentéshez/betöltéshez használt alapértelmezésű eszköz nevét. Nem kell Kettőspontot használni. Pl:
DEFAULT "TAPE" vagy
DEFAULT A$, ha A$="TAPE"
FILE [CSAT] PTR=szám
Beállítja a meghatározott csatorna file-mutatóját. Ez az utasítás leltetővé teszi, hogy egy (szalagon vagy lemezen lévő) file adott számú karakterét átugorjuk, majd a file-mutatót a közvetlen követő byte olvasására állítsuk. Az alapértelmezésű csatorna a 106-os. Pl:
FILE £10;PTR=20
Ha egy file az "ABCDEFGHIJKLM" Karakterekből áll, és kiadjuk a FILE PTR=10 utasítást, akkor a következő GET A$ utasítás a "K"-t olvassa be. Megjegyzés: a FILE utasítás csak lemezes rendszerben használható.
VDU [CSAT;] [8 bites szám,] [16 bites szám;] [string]
Az adott csatornára kiküldi a megadott karaktersorozatot. A karaktersorozat állhat 8 bites, 16 bites vagy hexadecimális számokból, vagy karakter stringekből. Pl:
VDU £101;27,"s",HEX(H1B),"A",500;500;"Sziasztok!"
A "27" az ESC kódja, amely után a kis "s" kikapcsolja a rajzoló sugarat, a nagy "A"-t követő két szám pedig megadja annak az új pozíciónak a helyét, ahová a "Sziasztok!" üzenet kerül.
DOKE A,B
A 16 bites "B" egész számot leteszi az "A" és "A"+1 címre (először a kisebb helyértékű byte-ot).
SDOKE S,A,B
Ugyanúgy mint a DOKE-nál, csak a "B"-t az 'S' szegmens 'A' címére teszi.
VPOKE cím, 8 bites érték
A 8 bites értéket leteszi a cím által meghatározott videó byte-ba.
LOCK [OFF] vagy [CAPS] vagy [ALT] vagy [SHIFT]
A billentyűzet állapotát az adott szöveg szerint állítja.
CR [CSAT]
Kiküld az adott csatornára egy "CR" Kódot. ("kocsi vissza".)
LF [CSAT]
Kiküld az adott csatornára egy "LF" kódot. ("soremelés".)
CLS [CSAT]
Kiküld az adott csatornára egy "CLS" kódot. ("Képernyő törlés".)
LOCATE [CSAT] A,B
Az adott csatornán a kurzor pozíciót az (A,B) helyre állítja.
FIND változó
Megkeresi a programban a "változó" első előfordulását. A "változó" egy függvény vagy egy változó lehet, de nem lehet utasítás.
FNEXT változó
Az előző, FIND-dal vagy NEXT-tel meghatározott helytől kezdve tovább keresi a "változót".
MENU A,B,C,A$,B$ [,C$] [,D$] ...
Ez egy roppant jól használható utasítás. Az adott képernyőn megnyit egy belső- menü képernyőt. Ennek méretei: "A" széles, "B" magasságban kezdődik a "C" pozícióban. A fejlécébe "A$" kerül kiírásra, majd a választható pontok: "C$", "D$", stb. Az írás színe az INK 3. A MENU parancs csak TEXT 40 módban üzemel. A mező szélességét legalább egy karakterrel hosszabbra kell állítanunk, mint a leghosszabb menüpont hossza! Ellenkező esetben hibaüzenetet kapunk: "OVERFLOW IN STRING EXPRESSION". A használható sorok száma a sorok szélességétől függ, mivel csak korlátozott memória áll rendelkezésre. A "C" értékét 10-nél nagyobbra érdemes megválasztani, mivel ez a képernyő fizikai címét adja meg. A MENU utasítások nem ágyazhatók egymásba!
CLR_MENU
Törli a képernyőről az előbbi MENU paranccsal létrehozott képernyőrészt, visszaállítja az eredeti állapotot.
MENU
Ezzel a függvénnyel tudunk választani a MEMU parancsnál megadott lehetőségekből. A választási állapotból a szóköz vagy az ESC lenyomásával léphetünk ki, a lehetőségek között a botkormánnyal mozoghatunk. A felső sorra 1-et, a második sorra kettőt ad, stb. Az ESC lenyomása esetén a függvény a -1 értéket adja vissza. A következőkben példát adunk a MENU használatára:
10 CLS
100 MENU 13,10,12,"Ujra fusson?","Igen","Nem"
110 SET £102: PALETTE BLACK, GREEN, BLACK,WHITE
120 DO
130 LET OKE=MENU
140 LOOP WHILE OKE=-1
150 CLR_MENU
160 IF OKE=1 THEN
170 RUN
180 ELSE
190 END
200 END IF
A fenti programban megjelenik egy menü az 'Ujra fusson?' fejléccel. Két választási lehetőség van: "Igen" vagy "Nem". Ha az "Igen"-t választjuk, a program újra indul, és ismét megjelenik ez a menü. "Nem" esetén megáll a program.
DEEK (cím)
Visszaadja a "cím" és a "cím"+1-en lévő 2 byte-os szó értékét.
GET [CSAT]
Beolvas egy karaktert az adott csatornáról, és visszaadja annak ASCII értékét. Az alapértelmezésű csatorna a 105-ös. Egy billentyű lenyomására is lehet várni vele.
GET$ [CSAT]
Mint az előbbi GET, azzal a különbséggel, hogy a karaktert string formában adja vissza.
BEAMX [CSAT]
Visszaadja az adott videó csatorna rajzoló sugarának x koordinátáját. Alapértelmezésű csatorna a 101-es.
BEAMY [CSAT]
Mint a BEAMX, csak az y koordinátára. A BEAMX és BEAMY csak grafikus csatornán működik.
Pl.
PRINT BEAMX £1;,BEAMY £1;
CURX [CSAT]
Visszaadja az adott videó csatorna kurzorának x koordinátáját. Alapértelmezésű csatorna a 102-es.
CURY [CSAT]
Mint a BEAMY, csak az y koordinátára. A BEAMX és BEAMY csak szöveges csatornán működik.
Pl:
100 LET X=CURX £102;
110 LET Y=CURY £102;
SDEEK (szegm,cím)
Beolvassa a "szegm" szegmensen lévő "cím" és "cím"+1-ről a két byte-os szót.
EOF [CSAT]
Visszaadja az adott csatorna állapotát. Az alapértelmezésű csatorna a billentyűzet (105). Ezzel megvizsgálhatjuk, hogy van-e lenyomott billentyű anélkül, hogy kivennénk a pufferből.
Pl:
100 OPEN £1:"readme.txt"
110 DO UNTIL EOF £1;
120 PRINT GET$ £1;;
130 LOOP
140 CLOSE £1
STRING$ (hossz,string)
Egy olyan "hossz" hosszúságú stringet ad vissza, amely a "string" többször egymás után írásából keletkezik. A függvény használatánál legyünk figyelemmel arra, hogy amennyiben a megadott stringet nem hosszának egész számú többszörösével kívánjuk megtöbbszörözni, a keletkezett strint eleje lesz csonkolva és nem a vége! Pl:
PRINT STRING$(10,"ABC")
a "CABCABCABC" stringet írja ki.
VADDR1 [CSAT]
Visszaadja az adott csatorna attribútum adatok címét. Az alapértelmezésű csatorna a 101-es.
VADDR2 [CSAT]
Visszaadja az adott csatorna képpont adatok címét. Az alapértelmezésű csatorna a 101-es. VADDR2 a csatorna bal felső képpontjának címét adja meg.
FILE (CSAT) LEN vagy PTR
FILE LEN esetén az adott csatornán megnyitott file hosszát adja meg, FILE PTR esetén pedig az aktuális pozíciót a file-on belül. Alapértelmezésű csatorna a 106-os.
VIDX [CSAT]
Visszaadja az adott csatornán lévő videó file karakterekben számolt szélességet. Alapértelmezésű csatorna a 101-es.
VIDY [CSAT]
Mint a VIDX , csak a k arakter sorok számát adja meg.
Pl:
PRINT VIDX £102;,VIDY £102;
VIDMODE [CSAT]
Mint a VIDX, csak a videó módot adja meg.
Pl.:
PRINT VIDMODE £102;
VPEEK (cím)
Visszaadja a " cím " videó címen lévő byte-ot.
XOR (A,B)
Visszaadja az "A" és "B" értékek bitenkénti XOR műveletének eredményét.
FIND változó
Hasonló a FIND utasításhoz azzal, hogy visszaadja annak a sornak a számát, amelyben a változó előfordul. Amennyiben ez -1, akkor nem talált ilyet.
FNEXT
Az előző FIND vagy FNEXT függvény utáni újabb előfordulás sorszámát adja meg. -1, ha nem talál többet.
OPT (vált. szám)
Visszaadja a "vált. szám"-mal megadott EXOS változó aktuális értékét. Hasonló az ASK-hoz.
IF (feltétel,igaz,hamis)
Ha a "feltétel" igaz, akkor az "igaz", ha hamis, a "hamis" értéket adja vissza a függvény. Például a PRINT IF (A>0,B,C) utasítás "A" pozitív értékére "B"-t, negatív értékre pedig "C"-t nyomtatja ki.
Pl:
100 DEF PARATLAN=IF(MOD(A,2),0,-1)
IF$ (feltétel,igaz$,hamis$)
Mint az előző IF függvény azzal a különbséggel, hogy itt a második és harmadik paraméter string. Például PRINT IF (A>0,"A","B")
POINTER
Visszaadja az assembler fordításnál az aktuális elhelyezés számláló értékét. Ennek segítségével átadhatjuk az értéket egy változónak.
HEX (Hszám)
Visszaadja a hexadecimális "szám" tízes számrendszerbeli értékét. Vagyis ezt tizenhatos számrendszerbeli számnak tekinti, amely betűt is tartalmazhat. A zárójelben lévő "H" betű a függvényhez tartozik, ennek kell megelőznie a "szám"-ot. Pl:
PRINT HEX(H1A3D)
Most pedig ismertetjük a programban biztosított BASIC-ből használható assembler fordítót és futtatót. A program felismeri az összes ZILOG mnemonikot. Néhány kivétel azonban van. Ezek a következők:
nem ismeri:
LD A,I
LD I,A
LD A,R
LD R,A
IM 0, 1, 2
RETI
RETN
változások:
CALL helyett CAL használandó!
OUT helyett OUTT használandó!
A beépített assembler rosszul fordítja a ADC A,(HL) -t! 8E helyett 9E-re konvertál ami így összeadás helyett kivon.
A használható direktívák :
ENT | - beállítja az indítási címet. |
ORG | - értéket ad az elhelyezés számlálónak (fordítási cím). |
BEG | - egy blokk kezdetét jelöli, amely a következő BND-ig tart; nincs hatással a kódra. |
BND | - lezárja az előző BEG-et. |
LAB | - egy címkét definiál, amelynek az aktuális elhelyezés számláló értékét adja, így később hivatkozhatunk erre. |
EXE | - lefuttatja az adott programot; megadható indítási cím is. |
ASS | - bekapcsolja a fordítást; LISTING ON-nal bekapcsolható a program listázása is. |
EAS | - lezárja a fordítást. |
OPT | - megadható a LISTING ON vagy LISTING OFF parancs |
DEFB | - byte foglalás. |
DEFW | - szó foglalás. |
Az assemblerrel kapcsolatos két plusz parancs:
ALLOCATES
Igényel egy üres szegmenst a program lefordításához. Akkor szükséges, ha nem az eredeti BASIC ALLOCATE paranccsal a 0. lapon foglalt helyre akarunk fordítani, hanem külön helyre. Ezt a fordítás során a 3. lapra lapozza be, és a futtatás során is oda teszi.
FREES
Visszaadja az igényelt szegmenst az EXOS-nak. Ezzel elvész a lefordított program.
VSAVE version 2.3
A bővítés célja hogy lehetővé tegye a video csatornák tartalmának lementését.
:VSAVE (CSAT:) file-név
az alapértelmezés szerinti csatornaszám - ha nem adnak meg mást - a 101-es.
VLOAD version 2.3
A bővítés célja hogy lehetővé tegye a video csatornák feltöltését.
:VLOAD [ CSAT:] file-név (/o) (/d) (/l) (/a)
Az alapértelmezés szerinti csatorna szám - ha nem adnak meg mást - a 101-es.
VDUMP version 2.3
A bővítés célja hogy lehetővé tegye a grafikus video csatornák tartalmának kinyomtatását, természetesen egy a rendszerhez tartozó grafikus (EPSON vagy VT kompatibilis) nyomtató segítségével.
:VDUMP [CSAT:]
az alapértelmezés szerinti csatorna szám - ha nem adnak meg mást - a 101-es.
A nyomtató típusa valamint a nyomtatás mérete a VDUMP_RES, JOY_MOD, VTPR_FLAG változókkal állítható be.
DATUM version 2.3
A bővítés nem más, mint egy öröknaptár, amely a mindenkori dátumhoz hozzárendeli a hét megfelelő napját a DATUM_FLAG változó tartalmának megfelelően.
UK version 2.3
Az alap, angol szabványnak megfelelő billentyűzet és karakterkészlet bekapcsolására szolgál.
:UK
BRD version 2.3
A német szabványnak megfelelő billentyűzet és karakterkészlet bekapcsolására szolgál.
:BRD
HUN version 2.3
A magyar szabványnak megfelelő billentyűzet és karakterkészlet bekapcsolására szolgál.
:HUN
A rutin a magyar szabványnak megfelelő ASCII kódokhoz rendeli hozzá az ékezetes karaktereket és ezek a billentyűzeten az ALT ill. CTRL billentyű és az 1-től 9-ig terjedő számok lenyomósával válik elérhetővé.
Az ALT gomb nyomva tartása mellett a számok lenyomására a következő karakterek jelennek meg:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
á |
é |
í |
ó |
ö |
ő |
ú |
ü |
ű |
A CTRL gomb nyomva tartása mellett a számok lenyomására a következő karakterek jelennek meg:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Á |
É |
Í |
Ó |
Ö |
Ő |
Ú |
Ü |
Ű |
A fent leírt funkciókon kívül ez a parancs ad lehetőséget a Külső-belső joystick párhuzamosítására valamint a hamarosan forgalomba Kerülő numerikus tasztatúra fogadására a JOYMOD változó tartalmának megfelelően.
Az EP PLUS a BRD bővítés funkcióinak jó részét megvalósítja, igaz a hibaüzenetek fordítását (helyhiány miatt) nem. De a 144-es EXOS változót létrehozza (az eredeti dokumentációból ez kimaradt), így pl. a két nyelvű EXDOS működik vele. Mivel van HUN is benne, így a változó értéke 0:BRD, 1:UK, 2:HUN.
PRN version 1.1
A HUN módban írt szövegek kinyomtatására a PRINTER: eszköz helyett a PRN: nevű eszközt kell használni.
WP-ből:
F3 majd
PRN: + ENTER
BASIC-ből:
OPEN £105:"PRN:" ACCESS OUTPUT
LLIST £105
CLOSE £105
Figyelem: a PRN: eszköz EPSON nyomtatót tételez fel, a DATACOOP BABY PRINTER esetén a standard PRINTER: eszköz használandó.
144 | A beállított nyelvi üzemmód kérdezhető le vele. 0 = BRD, 1 = UK, 2 = HUN. |
199 | EPPLUS_VARS |
200 | VDUMP_RES |
201 | JOY_MOD |
202 | VTPR_FLAG |
203 | DATUM_FLAG: |
Ha a 201-es EXOS változó 2. bitjét 1-be állítjuk, a külső botkormányt úgy használhatjuk, mintha belső botkormány lenne. (Mozgathatjuk így pl. a kurzort, de játékoknál nem működik!). Ezt BASIC-ból a SET 201,4 paranccsal kapcsolhatjuk be. Sajnos ez a funkció azonban nem működik tökéletesen, időnként az irányok összezavarodnak, és a MENU sem működik a parancs kiadása után. Ezt a hibát az alább letölthető programmal orvosolhatjuk, egyben demonstrálja a menükezelést, és az Assembler működését.