Immáron több mint két éve, hogy az Enterprise számítógép megjelent a hazai üzletek polcain. Önnek, aki - reméljük - elégedett tulajdonosa ennek a csodálatos masinának, nem kell részletesebben ecsetelnünk számos jó tulajdonságát, kiemelkedő képességeit. , Ennek ellenére nem mondható el, hogy rangjához méltóan foglalkoztak volna vele. Bizonyítja ezt többek között az is, hogy szinte alig van róla szakirodalom, s sajnos a meglévők is sok pontatlanságot
tartalmaznak. Ezen próbál segíteni az 'a' STUDIO most induló lapja, az
ENTER-FACE
amelynek ez az
ELSŐ SZÁMA


Komámasszony, hol az...

Részlet egy hamarosan megjelenő könyvből

[...] Az első feladat: tanítsuk meg a gépet arra, hogy egy tetszőleges szöveges változóban tárolt szövegben egy másik karaktersorozat valamennyi előfordulására ráleljen, és a pozíciókat visszaadja. Erre való a POS() függvény, amely elvégzi ezt a feladatot az első előfordulásig, ill. egy másik változata egy megadott pozíciótól kezdve a következő, ugyancsak első előfordulásig keres. Ha nem talál azonosságot, 0 értéket ad vissza. A POS() függvénynek ezt a két változatát kellene egy ún. felhasználói függvénybe összeszerkeszteni, hogy az az előbb definiált kívánalomnak megfelelően működjön.
Kezdjünk neki:

10 DEF keres(forras$,keresett$)

A forras$-ban keresem a keresett$-t. De ha sokszor van benne, akkor azt a sok mutatót hová tegyem? Egy függvénynek akármennyi bemenő adata (változója, paramétere) lehet, de csak egy kimenete, egy eredménye. Fejlettebb nyelvekber9 egy valamilyen szempontból összetartozó adatok egy-egy csoportját definiálhatom listaként, halmazként, rekordként stb. Ott egy függvénynek lehet egy olyan halmaz az eredménye, amelynek az elemei például egy szöveg különböző pontjaira mutatnak. Vigyázni kell azonban a típuskeveredésre, ami a BASIC-ben annyit tesz kb., hogy nem adhatok össze egy sztringet és egy lebegőpontos számot. A gépi kódban programozók (ASSEMBLY-ben) nem sokat törődnek az efféle világnézeti kérdésekkel. Megküzdenek viszont egy-egy bonyolultabb algoritmus géprevitelével. Hát semmi sem tökéletes ezen a világon...
Mi viszont írjunk egy eljárást. Egy olyan eljárást, amelyik felismeri, hogy egy rajta kívülálló tömbbe kell majd elhelyeznie az általa megtalált mutatókat. Az első sor tehát máris módosul:

10 DEF keres(forras$,keresett$,REF tomb)

Meg kell nézni, mekkora ez a tömb, amit kívülről kapunk!

20 teteje=UBOUND(tomb):alja=LBOUND(tomb)

A kettő közé kell elférniük a mutatóknak. Megkeressük az első előfordulást.

30 mutato=POS(forras$,keresett$)
40 IF mutato=0 THEN ! ha a mutató értéke 0, akkor nincs benne keresett$.
50 EXIT DEF ! Azaz nincs már itt semmi keresnivalónk, tűnjünk el!
60 ELSE ! ha mégis...
70 tomb(alja)=mutato:alja=alja+1 ! Az elso találat már célbaért. Az alja a következőrekeszre mutat.
80 DO ! cirkulálj barátom!
90 mutato=POS(forras$,keresett$,mutato)

A 90-as sorban elvben a következő előfordulást keresnénk meg, de azt hiszem ebben a formában sosem találnánk meg!

Legyen a forra$="123456 ___789 ___ abc" keressük meg benne a"___" részletet

Ez láthatóan a 7-ik és a 13-ik pozíción kezdődik. Az első keresésnél a mutató értéke 7 lesz. Az újabb keresést a 7-es pozíción kezdi, ott meg is találja így aztán értéke megint 7 lesz, az idők végtelenségéig.
A 90-as sor tehát:

90 mutato=POS(forras$,keresett$,mutato+1)

Itt most a +1 elég. Látni fogjuk, hogy nem minden esetben elég!

100 IF mutato=0 THEN EXIT DEF ! Ugyanaz, mint az 50-es sorban
110 tomb(alja)=mutato:alja=alja+1
120 LOOP UNTIL alja>teteje ! Itt a másik kilépésifeltétel: ha elfogy a tömb, nem keresünk tovább!

A 120-as sorban kiiktattuk egy goromba üzenet lehetőségét, ám nem lehetünk igazán nyugodtak. Ha kisebb méretű tömböt adunk át az eljárásnak, mint az előfordulások száma, nem keresi meg mindet, csak annyit, amennyi a "zsákjába" fér, és erről nem is értesít minket. Most mindenesetre próbáljuk működőképessé tenni az eljárást, de jegyezzük fel az észrevételünket.

130 ! Ha tomb < találatok, nem értesít róla!

Van itt még valami dogunk! Zárjuk le az eljárást és listázzuk ki. A gép elrendezi a kiírást és ha valahol valamit (ciklus, IF-szerkezet, stb.) elfelejtettünk lezárni, az eljárás alja nem fog visszakanyarodni a sorszámhoz.

 10 DEF KERES(FORRAS$,KERESETT$,REF TOMB)
 20   LET TETEJE=UBOUND(TOMB): LET ALJA=LBOUND(TOMB)
 30   LET MUTATO=POS(FORRAS$,KERESETT$)
 40   IF MUTATO=0 THEN
 50     EXIT DEF
 60   ELSE
 70     LET TOMB(ALJA)=MUTATO:LET ALJA=ALJA+1
 80     DO
 90       LET MUTATO=POS(FORRAS$,KERESETT$,MUTATO+1)
100       IF MUTATO=0 THEN EXIT DEF
110       LET TOMB(ALJA)=MUTATO:LET ALJA=ALJA+1
120     LOOP UNTIL ALJA>TETEJE
130     ! Ha tomb < találatok, nem értesít róla!
140   END IF
150 END DEF

Látszólag most jónak tűnik. Próbáljuk ki!

START
ok
a$=11123456 ___ 789___ abcd"
ok
CALL keres (a$ ,"---")
*** Error in DEF parameter

Elhamarkodtam ezt a dolgot! Hát persze, hogy hibát talál a DEF sor paraméterei között, ha egyszer már elhatároztam, hogy oda beírom annak a tömbnek a nevét, amelyikben szeretném visszakapni a mutatókat! De nincs is ilyen tömb! Hát csináljunk egyet! A fenti példában csak két előfordulás számlálható meg, tehát bőven túlméretezem, ha 10-re dimenzionálom. Ezt a programba kell elhelyezni, parancsként nem fogadja el!

1 DIM mutatok(10)

Elvben, most működnie kell. Nézzük:

START
ok
a$="123456___789___abcd"
ok
CALL keres(a$,"___",mutatok)
ok

Nagyszerű! Nézzük meg, mit helyezett bele!

PRINT mutatok(1)
13
ok

Nono! Itt most valami hiba van! Elárulhatom, hogy most nem a program hibás, sem a gép. Bennem van a hiba. Nézzük meg, miért!

PRINT alja
*** Variable not initialised.

Erre visszatérünk!

PRINT teteje
*** Variable not initialised.

Erre is.

PRINT LBOUND(mutatok)
0
ok

Hát ez a magyarázat! Milyen alapon feltételezem én, hogy egy tömb első eleme egy! (Más gépeknél így lehet!) De az ENTERPRISE-on, ha DIM-mel dimenzionálok tömböt, akkor a 0 az elso eleme. Ha viszont NUMERIC-kel, akkor tetszés szerintire tudom beállítani az alsó és a felső indexhatárt is. Az LBOUND() és UBOUND() függvények ezt kérdezik vissza.

PRINT mutatok(0)
7
ok
PRINT mutatok(1)
13
ok

Így már stimmel! De térjünk vissza az alja és teteje változókra amit biztosan használ az eljárás, hiszen beletettük, most meg mégsem tudjuk lekérdezni a tartalmukat. Ez a két változó lokális, azaz helyi az eljáráson belül. Értékük csak addig marad meg, amíg az eljárás végrehajtás alatt van. Ha azonban az eljárás meghívása ..i8tt, azaz rajta kívül létrehozok egy ugyanilyen nevű változót akkor abba fogja beleírni a tömb alsó és felső határának értékeit, azaz az eljárás lefutása után is lekérdezhetem. Ez a másik lehetőség, hogy eljárások és függvények kommunikáljanak a környezetükkel, azaz a globális változók használata, vagyis a környezet és az eljárás egyformán látja a változókat és mind a kettő írni is és olvasni is tudja azokat. És mi van akkor, ha én nem akarom, hogy egy eljárás vagy függvény belekotorásszon az adataimba? Arra is van lehetőség. Az előző eset, mint látható volt, nem tette igazán lokálissá az említett változókat. De ha az eljárás elején a NUMERIC kulcsszó után felsorolom őket, már nyugodtan használhatok az eljáráson (függvényen) kívül is ugyanilyen nevű változókat, nem fogja megváltoztatni azok értékét.
Próbáljuk ki!

2 alja=0:teteje=0
START
ok
a$=11123456___789___abcd"
ok
CALL keres(a$,"___",mutatok)
ok
PRINT mutato(0)
7
PRINT alja
2
PRINT teteje
10

Ez működik. Az alja azért 2, mert már a következő rekeszre mutat. Folytassuk a próbát:

15 NUMERIC alja,teteje
START
ok
a$=11123456___789___abcd"
ok
CALL keres(a$,"___",mutatok)
ok
PRINT alja
0
PRINT teteje
0

Amennyit a 2-es sorban adtunk neki. Ezt a sok vacakot annyiszor írtam már le, hogy akár programba is tehettem volna. Nézzük meg, hogy nézne ki:

3 a$=11123456___789___abcd"
4 call keres (a$ ,"___" ,mutatok)
START
ok
PRINT mutatok(0)
7
PRINT mutatok(1)
13

Írjuk bele ezt a két printet is:

5 PRINT mutatok(0)
6 PRINT mutatok(1)
START
7
13
ok

Most már nekem nem kell csinálnom semmit, csak megnyomnom a START gombot, és megjelenik a 7-es, meg a 13-as. Egy óra múlva már nem fogok rá emlékezni, hogy mi ez a 7-es és ez a 13-as. A következő részben ezt is megbeszéljük.

Kovács Zoltán

 

ENTERPRISE MIDI

Sok Enterprise felhasználó nemigen tud mit kezdeni, ha hangszíneket akar - vagy kell - gyártania gépével. Ezért összefoglaljuk a legfontosabb tudnivalókat a gép hangszintézisével kapcsolatban, kiegészítve néhány elengedhetetlenül szükséges hangszín programozási alapismerettel.
Legjobb, ha a szintetizátorok működését vesszük alapul az Enterprise-zal való hangszín-editálás magyarázatához. Egyszerű hangzások szintéziséhez is legalább négy egység szükséges:

Az EG vezérli a VCA-t, amelybe a VCO és az NG jelét vezetjük. Ha az EG-vel a VCO-t is vezéreljük, az amplitúdó változással párhuzamosan frekvenciaváltozás is történik. A szintetizátorok VCO-kimenetén általában négyféle hullám jelenik meg. Ezek:
szinusz
négyszög
fűrész
négyszögimpulzus

melynek kitöltési tényezője változtatható. A kitöltési tényező a négyszögimpulzus magas és mély összetevőinek aránya.
Az Enterprise-ban a VCO-nak megfelel az SWG (Square Wave Generator), amely - sajnos - csak négyszögjelet képes előállítani. Az NG és az EG a szintetizátorokéhoz hasonló. Az NG a kép jobb oldalán látható jelet produkálja:
Hangszín-editáláskor elsősorban arra kell ügyelnünk, hogyha konkrét hangszerek hangszíneit kívánjuk utánozni, az biztos, hogy ezt csak bizonyos frekvenciatartományokban tehetjük meg. Mivel az Enterprise SWG-je csak négyszögjelet produkál és ezzel a jelformával oly sokféle hangszín nem állítható elő, igénybe kell vennünk gépünk ringmodulátorait. A ringmodulátor bemenetére két SWG jelét kapcsolva a kimeneten a frekvenciák összege és különbsége jelenik meg. így állíthatók elő fémes, gongszerű hangzások. Három SWG van a gépben (0-2) plusz egy NG (3). Ezekkel négyszólamú zenét szerkeszthetünk, hacsak nem ringmodulálunk. Ekkor természetesen a szólamok száma fogy. Az alábbi ringmodulációk lehetségesek:

Az EG egység használata már kicsit bonyolultabb. Az EG felelős a hangzást kísérő amplitúdó- és frekvenciaváltozások kialakításáért, a hangszín burkológörbéjéért. A szintetizátorokban általában négyfázisú EG található - innen az ADSR elnevezés. Az Enterprise-ban a fázisok száma 256 (0-255), de ez a 256 fázis mégsem olyan sok, mint első olvasásra tűnik, hiszen az egyes fázisoknak csak az idejét, az oszcillátorok fázishoz tartozó frekvenciáját, a bal és jobb oldal amplitúdóját (az Enterprise sztereó!) tudjuk állítani. Így sok kis téglalapból kell összeállítanunk azt a görbét (attack fázis), amit a szintetizátoroknál egy potenciométer-tekeréssel elintézhetünk. Az Enterprise-ban követett módszer azonban lehetőséget ad bonyolultabb burkológörbék szerkesztésére is.
Néhány hangszer burkológörbéjének leírása:

 

Válasz néhány megválaszolatlan kérdésre

Aki kérdez: az Olvasó
Aki válaszol: Szűcs Zoltán
K: A közelmúltban vásároltam egy 'ENTERPRISE' számítógépet. Milyen lemezmeghajtót vásárolhatok hozzá?
V: Bármilyen, a SHUGART 410 szabványnak megfelelő meghajtó használható.
K: ???
V: Majdnem minden 3.5"-os és 5.25"-os meghajtó rendelkezik a SHUGART 410 néven közismert összeköttetési szabványnak megfelelő illesztővel és kivezetéssel.
K: Ez mind szép, de hogyan keressem az üzletekben?
V: Ez elszántság kérdése. A mindenre elszántak kereshetik a következő módon: " Keresek

BASF 6182,
Epson SND100, Epson SMD120, Epson SMD130, Epson SMD140,
Sony NPX-0288,
Teac FD3bB, Teac FD36F típusjelű 3.5", valamint
BASF 6128,
Mitsubishi N4853,
Teac FD55BR-506-U, Teac FD55FV-13-U,
Shugart SA465 típusjelű 5.25"-os floppy disk driver-t."

A kevésbé elszántak, akik már ismerik a magyar kereskedők számítástechnikai tájékozottságát, a következőképpen kereshetik: "Olyan floppyt keresek, ami jó az IBM PC/XT gépekbe!" Ez utóbbi esetben nem hozzuk kellemetlen helyzetbe az eladót, és a siker garantált. Lesz floppy.
K: Ezek szerint az 1.2 Mb floppyt is kezeli az 'ENTERPRISE'?
V: Igen, 720 Kb-os formátumban tudja használni. Ennek a következő oka van:
Az 'EXDOS' lemezkezelő egysége tartalmaz egy WD1770-es floppy controller-t. Ez az IC kompatibilis az FD179X IC-kel, tehát csípőből tudja az IBM 3740 szabvány szerinti 'szoft szektoros' felírást, formattálást. Az 'EXDOS' lemezkezelő szoftvere pedig felülről kompatibilis az MS-DOS 2.0 verziójával.
Ez utóbbi teszi lehetővé, hogy az ENTERPRISE' adatkompatibilis legyen az IBM PC/XT/AT és ezekkel kompatibilis gépekkel.
K: Mit jelent ez az 'adatkompatibilitás'?
V: Nagyjából azt, hogy megbízhatóan tudják egymás lemezeit kezelni.


 

Monitor

Előbb-utóbb minden ENTERPRISE-tulajdonos szembetalálja magát azzal, hogy az otthonában található fekete-fehér, vagy színes TV-készülék hosszabb távon nem jól használható sem a játékhoz, főleg nem a programozáshoz. Ez a cikk az ENTERPRISE és a kereskedelemben kapható különböző monitorok összekapcsolásával kapcsolatos tudnivalókat igyekszik összefoglalni azok számára, akik elszánták magukat saját display vásárlására.
A boltokban óriási számú monitor között választhatunk. A probléma csak az, vajon az illető monitor összekapcsolható-e gépünkkel vagy sem. Sok esetben az eladó sem tud konkrét segítséget nyújtani; ennek egész egyszerűen az az oka, hogy sajnos ebben az esetben sem egyetlen világszabvány létezik, hanem legalább egy tucat különféle, szinte minden gyártónál más és más. Nem csupán a csatlakozók különböznek egymástól, hanem a képi információt hordozó jelek is. Ezért tehát egy számítógép összekapcsolása egy monitorral elég komplikált feladat is lehet, s előfordulhat, hogy egyáltalán nem is sikerül.
Az ENTERPRISE-tulajdonosok viszonylag kedvező helyzetben vannak; gépük gyakorlatilag egyetlen a piacon, amely bármilyen monitorral összeköthető.
Az egyetlen komolyabb nehézséget a gép hátoldalán található, meglehetősen különleges kinézetű monitorcsatlakozó. Mint a többi EP-csatlakozás, ez is teljesen egyedi, egyetlen más gépnek sincs ilyen. A kereskedelemben szerencsére kapható ilyen csatlakozással ellátott kábel, amelynek másik vége valamely ismertebb monitorcsatlakozó-szabvánnyal van ellátva. Mégsem haszontalan, ha most ismertetjük e kábelek jellemzőit, mert előfordulhat, hogy a készen kapott mégsem működik a mi konfigurációnkkal.
Ahhoz, hogy saját szükségleteinknek megfelelő kábelt tudjunk építeni, tudnunk kell, az EP monitorkimenetén milyen jelek találhatóak. Tudnunk kell azt, ezek közül melyekre van szükségünk. Ezért ismertetjük az EP jelkiosztását, a hozzájuk tartozó színkódokkal. A B1-el jelölt csatlakozás a bal felső, az A1-el jelölt a bal alsó sarkot jelenti. Ennek a táblázatnak, illetve a következőkben összefoglalt főbb tudnivalókkal már nekiláthatunk a kábel összeszereléséhez.

  FUNKCIÓ SZÍNKÓD     FUNKCIÓ SZÍNKÓD

A1
A2
A3
A4
A5
A6
A7

zöld
föld
monochrom kompozit
HSYNC
VSYNC
nem használt
bal hang

zöld
fekete
lila
nincs bekötve
nincs bekötve

narancs

B1
B2
B3
B4
B5
B6
B7

nem használt
föld
kék
vörös
CSYNC
kapcsoló fesz. 12V
jobb hang


fekete
kék
vörös
barna
sárga
fehér

Az ún. cynch-csatlakozás: többnyire a monochrom, azaz egyszínű monitoroknál használják, ahol a teljes képi jelet egyetlen szálon továbbítják. Ha a monitornak beépített hangszórója is van, a hangot további jelhez egy második csatlakozásra lesz szükségünk. Ebben az esetben a jobb-, illetve baloldali jelet közösen forrasszuk rá a csatlakozásra, ellenkező esetben csak az egyik hangcsatorna lesz hallható a monitor hangszóróján. A föld-jelet (A2) mindkét esetben a dugó külső palástjához kell forrasztani.

FUNKCIÓ

SZÍNKÓD
1 Video kompozit lila
2 föld fekete
3 hang narancs / fehér
4 föld fekete

A 6- vagy 7-pólusú DIN-szabvány: a két szabvány nemcsak külsőleg tér el egymástól, hanem a különböző jeleket hordozó szálak számában is. Ezeket a csatlakozókat többnyire az RGB, Illetve TTL-színes monitoroknál használják. Ebben az esetben az ENTERPRISE megfelelő pontjaihoz kell csatlakoznunk. Ha a színes kép életlen, vagy torz, akkor forrasszunk a piros, zöld és kék jelet hordozó szálakhoz egy-egy 100 ohmos, 1/8 watt teljesítményű ellenállást. Ha ezekután a kép fut a képernyőn, a CSYNC szálhoz is kell egy további 100 ohmos ellenállás. Ezekre azért van szükség, hogy az ENTERPRISE viszonylag magas jelszintjeit az érzékenyebb monitoréhoz igazítsák. Az ellenállások a DIN csatlakozó dobozában is elférnek.

  FUNKCIÓ SZÍNKÓD
1
vörös vörös
2
zöld zöld
3
kék kék
4
CSYNC barna
5
föld fekete
6
nem használt  
  FUNKCIÓ SZÍNKÓD
1
föld fekete
2
CSYNC barna
3
zöld zöld
4
nem használt  
5
kék kék
6
hang narancs / fehér
7
vörös vörös

SCART-szabvány: ez a csatlakozás az utóbbi időkben hódított tért, főleg a videomagnetofonok miatt, néhány színes TV-készülék is már ezzel a 21 pólusi csatlakozással rendelkezik. Ha Ilyen színes TV-nk van, akkor monitorra egyelőre nem is lesz szükségünk, mert a kívánt képminőséget ezzel is elérhetjük. Az összekötésnél ügyeljünk arra, hogy valamennyi föld-jelet az EP A2/B2-es pontjához forrasszuk. A képélességre és a képstabilitásra ugyanaz vonatkozik, mint a DIN csatlakozónál. A SCART-csatlakozásnak van még egy különlegessége: a 16 póluson 12 voltos feszültségnek kell lennie, ez kapcsolja át a TV-készüléket monitor üzemmódba. Az EP-n megvan ez a feszültség, a B6-os pólust kell tehát a SCART 8-as pólusához forrasztanunk. Ezt a 8-as pólust ezután egy 470 ohmos, 1/8 watt teljesítményű ellenállással kössük össze a 16-ossal.

  FUNKCIÓ SZÍNKÓD
2 jobb hang fehér
6 bal hang narancs
7 kék kék
8 kapcsoló fesz. 12V sárga
11 zöld zöld
15 vörös vörös
16 kapcsoló bemenet  
20 CSYNC barna
5, 9 föld fekete

A szinkronjelek TTL szintűek. A színjelek 0-4V-ig lineárisak.
Többeres árnyékolt kábel használandó.

Ezek után feltehetően elboldogulunk már magunk az ENTERPRISE és a monitor összekapcsolásával, még akkor is, ha ne adj' isten egy negyedikféle csatlakozással rendelkezik is.

 

ROUNDSMAN - Útvonal minimalizáló program
A ROUNDSMAN (árukihordó) feladata síkban véletlenszerűen elhelyezkedő célpontok körbejárása minden pont egyszeri érintésével a lehető legrövidebb útvonalon. A program az ENTERPRISE-128 számítógép IS-BASIC programnyelvén ZZZIP compiler-es fordításhoz készült, az útvonalat MONTE-CARLO-szerű találgatásos módszerrel minimalizálja, a számítási folyamatot folyamatosan grafikusan ábrázolja.
A célpontokat tele kör alakúra módosított karakter jelképezi.
Az N (2...40) db célpont koordinátáit az XA,YA numerikus tömbök tárolják. Az ADAT eljárás a véletlen értékeket ad a koordinátáknak, majd a minimum ­ maximum, valamint a karakterméret alapján a videolap méretére illeszti a koordinátákat. A körbejárási sorrendet az U$ sztring elemeinek kódjai adják, a V$ átmeneti munkatároló:

120 STRING U$*254,V$*254

Az EXOS operációs rendszer karakter- és blokkírási funkcióval kezeli a videolapokat. Nagy mennyiségű karakter, pont és vonal ismételt ábrázolásához a PLOT parancsnál hatékonyabb eljárás escape-szekvenciákkal felépített sztringek kiküldése a videocsatornába. A célpontkarakterek és az összekötő vonalak koordinátáit, valamint az escape-szekvenciákat tartalmazó sztringtömbök: VN$ (vonal), PT$ (pont):

130 STRING VN$(40)*6,PT$(40)*7
140 LET ESC$=CHR$(27)

A koordinátákat a WORD$ függvény alakítja byte-okká (alsó és felső helyérték):

970 LET VN$(I)=ESC$&"A"&WORD$(XA(I))&WORD$(YA(I))
980 LET PT$(I)=ESC$&"A"&WORD$(XA(I)-16)

A pontokat mindig természetes (1 ... N) sorrendben a PONT eltárás ábrázolja. A RAJZ eljárás a V$ sztring elemeinek megfelelő sorrendben köti össze vonalakkal a pontokat.

1530 PRINT £CX:ESC$&"s"&VN$(ORD(V$(1)))&ESC$&"S";
1540 FOR IR=2 TO N
1550 PRINT £CX:VN$(ORD(V$(IR)));
1560 NEXT
1570 PRINT £CX:VN$(ORD(V$(1)))@ESC$&"s"

Mivel az EXOS vonalrajzolással mozgatja a videosugarat, az ábra kezdő- és végpontjában a sugarat ki és be kell kapcsolni: ESC$&"s", ESC$&"S"
A plasztikus, ugrálásmentes ábrázolás érdekében két videólap nyitott:
A CL - látható lap van a képernyőn.
A CN - nem látható lapon készül az új rajz. A GRAF eljárás felülről lefelé soronként teríti a képernyőre az új rajzot, és felcseréli a CL,CN csatornaszámokat.
A MATRIX eljárás PITHAGORASZ tétellel szá­ mítja ki a pontok egymástól mért távolságait és a TAV kétdimenziós numerikus tömbben tárolja. A távolság számításánál a 9-cel osztás (1280, 1290. sor) akadályozza meg, hogy a további műveletekben a számok túllépjék a 32767-et (komplementálódás!)
A DIRECT eljárás minimalizálja az útvonalat. A TM az eddig elért minimális távolság. A T1 segédváltozó figyeli, hogy a -loc.min.- ciklusban történt-e újabb minimalizálás;
- ha igen, akkor folytatja a ciklust,
- ha nem, akkor befejezi a számítást.
Kiinduláskor a véletlenszerűen elhelyezkedő pontokat összekötő vonalak összebonyolódott hálózatot alkotnak. A számítás során ez a hálózat fokozatosan egy keresztezés és hurokmentes zárt görbévé egyszerűsödik. A program jelenleg három minimalizáló stratégiával működik:

STRAT_3, STRAT_4, STRAT_5

A stratégiák az U$-ból kiindulva a V$ sorrend­sztring elemeinek átrendezésével keresnek olyan új sorrendeket, melyeknél a T távolság kisebb az előzőekben elért TM minimumnál;
- ha igen, akkor az U$ és a TM változók felveszik a sorrend és a távolság értékelt.
A változást a TEST és a HOSSZ eljárás értékeli.
Mindhárom stratégia N, ill. N-1 -szer próbálkozik és minden művelet végén a sorrend-sztringet ciklikusan balra lépteti, pl:

1990 LET U$=U$(2:)&U$(1)

A számítási módszer hatékonyságát jellemzi, hogy a kiinduló feltételek mellett az elméletileg lehetséges útvonalak száma a célpontok számának faktoriálisa:

10! = 3,3288 E 06
20! = 2.4329 E 18
40! = 8,1592 E 47

A program továbbfejlesztésénél korlátlan tere nyílik új, hatékonyabb stratégiák kidolgozásának. Nagymértékben gyorsítja a minimum megtalálását, ha először kiszámíttatjuk a pontrendszer súlypontjából a pontokhoz húzott sugarak szögeit (polárkoordináták), majd a szögeket nagyság szerint rendező eljárással állítjuk be a kiinduló sorrendet.

ROUNDSMAN (a letölthető állományban a Basic és a lefordított program is megtalálható)

Kóta Béla


Ötféle halált okozó szörny van, melyeknek bármelyikét megölhetjük valamelyik fegyverrel, amelyeket a játéktér különböző részein összeszedhetünk. Van egy varázslatos zsákok, lövöldözős csillag, amely megöli némelyiket, de azt ki kell találni, hogy melyik melyiknek a fegyvere. Sok más tárgy is felhasználható; így találunk kulcsokat, üvegeket és a gyertyatartót, melyek kinyithatják a bezárt szobákat és a csapóajtókat.
Ezekkel a mágikus tárgyakkal kiszabadíthatod az összes varázslót, de nagyon gyorsan kell mozognod, mert energiád rohamosan csökken.
Például a Kastélyban (Chateau) amint meglátod a varázsbárdot, szükséged van egy kulcsra, hogy kinyisd az ajtót és a kulcsot megkaparintva felveheted a mágikus bárdot, ám csak egy kulcs van a szobában. Tehát kell egy másik kulcs is, ezért a bal felső ajtón kell kimenned. A Kastély közelében szemben találod magad két szörnnyel, de találsz egy kulcsot és egy gyertyatartót. Menj vissza a varázsbárdhoz, az ajtót kinyitja a gyertyatartó. Amikor kinyílt az ajtó, visszamehetsz, felkaphatod a kulcsot, majd vissza abba a szobába, amelyben a varázsbárd található. Nyisd ki a csapóajtót, kapd fel a tartalékkulcsot, a bárdot és szöki ki a balkéz felöli ajtón az Alagútba. Tedd a bárdot a baloldalt alsó ajtóhoz. Az Alagútban két szörnnyel találkozol, valamint találsz egy kulcsot, egy folyót és egy energiát adó üstöt, de sajnos két ellenféllel is. Így innen reménytelen vállalkozás kiszabadítani a varázslót, ezért lógj meg minél gyorsabban. Azon az ajtón keresztül elhagyhatod az alagutat, amin bejöttél.
Könnyebb kiszabadítani azt a varázslót, amelyik a Kastély feletti szobában van, ha megtalálod azt a betűskönyvet, amelyik ugyanabban a szobában van. Ha ezt megtaláltad, felfed egy másik ajtót, amelyen azonban nem tudsz kimenni. Miután elhagytad ezt a szobát a tetőn jobbra lévő ajtón, egy olyan szobában találod magad, ahol lebeg egy szem, egy harcos, egy kard és egy üveg található. A harcost a karddal megölheted, ha akarod, de kifelé menet fel kell venned az üveget.
Így a Kastély közelében vagy ismét, két szörnnyel és két tárggyal (az üveggel és az aranyserleggel), de hogy ki tudd nyitni a varázsajtót, tovább kell vinned az erdő felé az üveget. Az üveg kinyitja az ajtót, utána a lövöldözős csillaggal öld meg mindkét szörnyet, töltsd fel az energiádat az üstnél, de nagyon fontos, hogy felkapd a gyertyatartót. Most már elindulhatsz a varázsajtó felé és - Tárulj Szezám! - megjelenik előtted egy másak varázsió, akit kiszabadíthatsz azzal az aranyserleggel, melyet két szobával előbb felvettél.
Mindegyik varázsló kiszabadítható, de csak a megfelelő tárggyal. Például a Stonehenge-ben lévő barátodat a Varázsholddal tudod kiszabadítani. A hárfa szabadítja ki a palota kupolájában fogva tartott varázslót, és egy borospohár segít kihozni a varázslót a Wastelandsből.
Az utolsó két varázslót a legnehezebb kiszabadítani.
A kastélyban az egyik szobában található egy tekercs és egy bilincs. Vedd fel a bilincset, hagyd el a Kastélyt a jobboldali ajtón. Így ki tudod nyitni az ajtót, amely félúton van a sziklafalon. Amint kinyitottad az ajtót, térj vissza a Kastélyba és vedd fel a tekercset. Majd vissza a sziklaajtón keresztül a tömlöcbe, a tekerccsel szabadítsd ki a varázslót, használd a bárdot, amely megöli a szörnyet, amelyik ebben a szobában van. Ment ki a baloldalt ajtón, menetközben vedd fel az üveget. Ez az üveg nyitja a csapóajtót, de előtte a karddal öld meg a harcost, aki az utadban áll. Kapd fel a kulcsot, mely a bal felső sarokban található, és a jobb alsó sarkon lévő ajtón keresztül menj be a Kínzókamrába. A kulccsal nyisd ki a csapóajtót. A varázszsákkal előtte tisztítsd meg a termet az ellenségektől. Hogy kiszabadíthasd a varázslót, vissza kell menned az úton a Kastélyba a címerért, aztán újra tért vissza a tömlöcbe, ahol felvetted a kulcsot.
A baloldali ajtón keresztül menj be Wastelandbe, ahol megtalálod azt a koronát, amelyik kiszabadítja az utolsó varázslót. De ahhoz, hogy a tömlöcbe vissza tudj térni, előbb ki keli nyitnod a címerrel az ajtót. Ezután már csak le kell tenned a koronát a Kínzókamrába és a varázsló márts szabad.
Bármilyen sorrendben Is, de mind a nyolc varázslót ki kell szabadítanod, s utána ne felejts el elmenni a Szentélybe, hogy viszontláthasd kedvenc cimboráidat, a varázslókat. Ezzel telesítetted is a játékot.
Ahhoz, hogy minél nagyobb pontszámot érhess el, a lehető legtöbb ellenséget kell megölnöd, lehetőleg minden termet járj végig, s lehetőleg vegyél fel minél több tárgyat.
Jó szórakozást!


MINER
Az alábbi játékprogram az 'a' STUDIO ZZZIP pályázatára érkezett be. Igen kellemes, jól megírt játék, reméljük, nektek is tetszeni fog. A játék lényege: egy kis emberkével végig kell járni a szobákat. Amerre elhaladsz, a padló más színűre változik. Ha mindenütt befestetted alattad az utat, valahol a szobában megjelenik egy kulcs. Ha felveszed, továbbjuthatsz a következő terembe. 20 pálya van, és bizony nem könnyű végigjárni őket.
MINER

SCROLL
Az alábbi BASIC program jobbra, illetve balra görget bármilyen grafikus képernyőt. A rutin meghívása előtt a következő adatokkal kell feltöltenünk a VAR változókat:

Ezek után a rutint a következőképpen hívhatjuk meg:

CALL USR (LEFT,CSATORNA+256*bájtok-száma-amit-görgetni-akarunk)
CALL USR (RIGHT,CSATORNA+256*bájtok-száma-amit-görgetni-akarunk)

Végül egy grafikai program: LINES

Vissza