Plus

Scan&OCR: Kiss László


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


Bevezetés

A Centrum Nagykereskedelmi Vállal 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:

  1. LISP
  2. PASCAL
  3. ASSEMBLER
  4. FORTH
  5. UTILITY

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.

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 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 12,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.

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.

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.

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. 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.

VIDMODE [CSAT]
Mint a VIDX, csak a videó módot adja meg.

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.

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)

Assembler fordító és futtató

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 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.
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.

EXOS bővítések

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)

Aaz 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.

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ó.

Az ENTERPRISE PLUS változói

199

EPPLUS_VARS
változó változó

200

VDUMP_RES
Ha a VDUMP utasítás EPSON nyomtatóra dolgozik, akkor e változó értéke határozza meg a nyomtató pixel üzemmódját.
0 esetén 480 pixel,
1 esetén 960 pixel,
2 esetén 960 pixel (kiemelt),
3 esetén 1920 pixel.

201

JOY_MOD
Ennek a változónak több jelentése is van.
bit 0: Tömörített nyomtatás Videoton VT21200-as nyomtatón.
bit 1: Numerikus billentyűzet bekapcsolása.
bit 2: EXT-1 botkormány - beépített botkormány konverzió bekapcsolás. (SET 201,4)
Bármely kombináció elfogadott!

202

VTPR_FLAG
Ha e változó értéke nem 0, akkor a VDUMP VT21200-as nyomtatóra dolgozik.

203

DATUM_FLAG:
Ez egy kétfunkciós változó.
Ha értéke 255, akkor a DATUM parancs DEFAULT video csatornára ír, az aktuális kurzorpozíciótól kezdődően. Ha értéke nem 255, akkor a DATUM parancs e változóba teszi le azt, hogy a belső dátum változó által meghatározott nap a hét hányadik napja. 0 = Vasárnap, 1 = Hétfő, stb.

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.

Joy_Menu.bas