Spectrum Basic Converter

1987 - Novotrade


Tartalom

A SPECTRUM BASIC-et ENTERPRISE BASIC-be konvertáló programcsomag
A SPECTAPE és SPECEDIT programok használata
SPECEDIT parancsok
Hogy működik a BASIC-BASIC KONVERTER?
SPECTRUM BASIC KONVERTER specifikáció
Hogyan konvertáljunk egy programot?
Példa


Bevezetés
Az Enterprise Spectrum konverter programcsomaggal gyorsan és hatékonyan lehet Spectrumra írt Basic programot Enterprise személyi számítógépen futtatni. Ezenkívül arra is alkalmas, hogy az Enterprise-zal csak most ismerkedők többet tudjanak meg az itt használt Basic változatról, valamint a Spectrum Basic-et jól ismerők a programcsomag segítségével mélyebben megismerhetik a programnyelveket általában, a két nyelv közti konvertálási folyamat követésével.

A SPECTRUM BASIC-et ENTERPRISE BASIC-be konvertáló programcsomag

A Basic-Basic konvertálási folyamat nem bonyolult, könnyen végigvihető, legegyszerűbb formájában egy Spectrum szalag olvasásából és egy szövegszerkesztés / konvertálásból áll. Ugyanakkor, hogy a legegyszerűbb konverzió eredményéhez képest nagyobb hatékonyságot érjünk el, különböző segédprogramok állnak rendelkezésre, ezekkel tehető az Enterprise a Spectrumhoz hasonlóbbá és terjeszthető ki saját Basic nyelve.
Alább egy listát adunk a felhasználható file-okról, abban a sorrendben, ahogy a szalagon megjelennek, rövid leírásukkal együtt. További részleteket a file-ok használatával kapcsolatban ld. később a megfelelő fejezetekben.

Megjegyzés
Ennek a kézikönyvnek a végén megadunk egy példát, ami lépésről lépésre követi, hogyan kell egy programot Enterprise Basic programmá konvertálni. Tanácsos, hogy mielőtt élesben használjuk a konvertert, a kézikönyv végére lapozzunk és ezt a példát alaposan áttanulmányozzuk.

SPECTAPE.EXT Spectrum szalagolvasó egység
SPECEDIT.EXT Szövegszerkesztő / konvertáló
SPECGOTO.COM

Basic GOTO, GOSUB és RESTORE kiterjesztések

SPECCOLO.BAS Színkezelő rutinok
SPECGRAP.BAS Grafika rutinok

Indítás
Hogy egy Spectrum programot az Enterprise-on futtassunk, be kell tölteni az Enterprise-ba, majd konvertálni olyan formára, ami kompatibilis a gépen futó Basic nyelvvel. Mivel ez két különböző folyamatnak számít, a szalagon különálló programok hajtják végre ezeket.
Kapcsolja be az Enterprise számítógépet és a kazetta­egységet, az installálási kézikönyv szerint. A szalag kerüljön alapállásba. Nyomja meg az 1-es száma funkciós gombot. (START). Így betöltődik a SPECTAPE program. Ez rendszerbővítésként van megírva, ami azt jelenti, hogy amikor a program betöltődött, az OK kijelzés látható lesz, de a program nem listázható ki a LIST utasítással a szokásos mádon.
Ennek ellenére meg lehet győződni a sikeres betöltésről, úgy, hogy a Basic-en belül a HELP utasítás segítségével listát kérünk a perifériákról és kiterjesztésekről. Ha a SPECTAPE ezek között van, akkor dolgozhatunk tovább; ha nem, a betöltést meg kell ismételni. Ha nehézség merül fel, próbálja meg a hangerőt megváltoztatni a magnón.
Egyszerre is betölthető a SPECTAPE és SPECEDIT program.

A SPECTAPE és SPECEDIT programok használata
A SPECEDIT Basic-ből betölthető akár a START, akár a LOAD utasítással - éppúgy, ahogy a SPECTAPE. (Amikor a SPECEDIT-et betöltötte, az inicializálja a gépet, ezért minden, a memóriában lévő Basic program eltűnik). A betöltés után gépelje be: SPECEDIT (további információt a SPECEDIT program használatáról a következő fejezetben talál). Egy Spectrum programot a

LOAD"SPECTAPE:"

utasítással lehet betölteni.
A SPECTAPE betöltése közben a saját címsorát is megjelenteti a képernyőn, egy hangerősség jellel a status sorban, jelezve, hogy a Play gomb megnyomható a magnón.

Bevezetés a SPECEDIT programhoz

A SPECEDIT editor/konverter program, amely egy előzőleg a SPECTAPE által beolvasott Spectrum programot konvertál olyan formára, amit az IS-BASIC ért. Ehhez néhány Basic jellegű parancs segít, az editor memóriájában levő programok egyszerű kezelésére.
Ha a SPECEDIT be van töltve, egyszerűen elindítható, begépelve:

SPECEDIT

(nem kell kettőspont elé!)
Észre fogja venni, hogy a keret sárgára vált, jelezve, hogy SPECEDIT-ben vagyunk, nem pedig az IS-BASIC-ben. A képernyő tetején a status sorban a SPECEDIT cím lesz, ezt követi egy szám, ami a SPECEDIT pufferében lévő szabad munkaterületet jelenti byte-okban. A keret eredeti színére vált, ha rendszerkiterjesztést hívunk, ez azt jelzi, hogy nem a SPECEDIT hajtja végre ezt a funkciót.
A SPECEDIT-ben a rendszerkiterjesztési parancsokat nem kell a : jellel kezdeni, hacsak nincs egy ugyanolyan neve SPECEDIT parancs. Pl.:

HELP SPECEDIT

hatására a lehetséges parancsok listája jelenik meg.
Hogy egy SPECEDIT által kimentett programot szerkesztés vagy konverzió céljából betöltsünk, arra a LOAD parancs szolgál, mint a Basicben, csak az " (idézőjel) karakterek nem szükségesek a file-név körül, bár szerepelhetnek is. Pl.

LOAD MYFILE

hatására az ilyen néven kimentett file töltődik be.
Betöltés után a file konvertálható. Ehhez be kell gépelni:

CONVERT

ekkor a

Spectrum Convert Version X.X

üzenet íródik ki.
Ezt négyzetek követik, amelyek a konverzió futása közben, egymás után jelennek meg, a program hosszától függő sebességgel. Mikor öt ilyen négyzet a képernyőn látható, a konverzió megtörtént. A konverzióval kapcsolatos minden üzenetet kiír a gép ilyenkor, az OK prompttal lezárva.
Négy fajta üzenet lehetséges. Ezek jelentése a következő:

Lines have been renumbered

Az összes sor, ami új sorszámot kapott, kiíródik, új sorszámukkal együtt, mint commentek a program végén. Amikor ezeket a sorokat a SPECEDIT-beli LIST paranccsal í ratjuk ki, nem árt, ha tudjuk, melyik sorral kezdődnek, ha a program hosszú. Ezt a sort a FIND paranccsal kereshetjük meg, a

! lines renumbered:

szavakat keresve, mivel ez szerepel commentek előtti sorban.

Graphics functions are required

A SPECGRAF file-ban lévő grafika rutinokra van szükség az utolsó programhoz, így azokat hozzá kell merge-ölni a konvertált programhoz (amelyet ekkor már Basic munkaterületre töltünk) a MERGE paranccsal.

COLOUR functions are required

Szükség van a színkezelő rutinokra és merge-ölni kell őket, mint fent.

GOTO extensions are required

Szükség van a Basic kiterjesztésekre a SPECGOTO file-ból. Ezeket a LOAD paranccsal kell betölteni, mielőtt a konvertált programot a Basic munkaterületre vittük. Amikor ez az üzenet megjelenik, a

:BASIC

paranccsal kell átmenni BASIC-be, betölteni a SPECGOTO-t a szalagról és SPECEDIT-be újra átmenni, mielőtt a konvertált programot áthelyeztük, begépelve:

BASIC

Kétféle módon juthatunk vissza a Basic-be; "BASIC"-et gépelve éppen a SPECEDIT memóriarészében levő szöveg áthelyeződik (alább ezt bővebben megmagyarázzuk), ":BASIC"-et gépelve viszont elhagyja a SPECEDIT-et, anélkül, hogy ezt a szöveget áthelyezné. Az utóbbi parancs használatakor az összes memóriában levő IS-Basic program eltűnik, míg a SPECEDIT program megmarad.

A konvertált program áthelyezése

Most a konvertált programot át kell vinni az IS munkaterületre. Ezt kétféle módon tehetjük meg. Ezek közül az egyszerűbb, hogy begépeljük:

BASIC

Ekkor belép a Basic és a program automatikusan betöltődik annak munkaterületére. Amíg ez történik, a program a képernyőn látható, mintha kilistáznánk. A hibás sorok egy-egy üres sorral lesznek azonosíthatók, amit a

"***Not understood"

hibaüzenet követ, mintha klaviatúrán gépeltünk volna be egy hibás sort.
Ha az eredeti programba túl hosszú sorok kerültek, ez az áthelyezéskor különös hibaüzeneteket okozhat. Ezeket a sorokat fel kell osztani, ha szükséges, akkor az eredeti program szerkesztése és újrakonvertálása útján.
A szöveg elég gyorsan halad a képernyőn, hogy az áthelyezéssel töltött idő csökkenjen. Ha ideiglenesen meg kívánja állítani az áthelyezés folyamatát, hogy megvizsgálja a hibás sort, ez a Hold gomb egyszeri megnyomásával történhet, újra megnyomva ezt a gombot, az áthelyezés folytatódik.
Amikor az áthelyezés megtörtént, új ra az IS-Basic-ben vagyunk. A program most futtatható RUN-t gépelve a szokásos módon. Ha a rendelkezésre álló programok bármelyike merge-ölést igényel, ahogy ezt az előző részben elmagyaráztuk, először ezt kell elvégezni. Akármilyen hiba lép fel az átvitel során, először azt kell kijavítani, mivel a hibás sorok nem kerülnek át az IS-Basic-be.
Ezeknek a soroknak a kijavítása történhet a Basic-ből vagy a SPECEDIT-ből, tetszés szerint. Ha csak kevés hiba van és nyilvánvalóak, valószínűleg gyorsabb egyszerűen behozni a teljes sorokat Basic-ből, mint ahogy általában hibát javítunk. Ha azonban sok a hiba, vagy nem vagyunk biztosak benne, mi okozta, jobb a SPECEDIT által nyújtott hatásosabb eszközöket használni erre a célra. Gépelje be : SPECEDIT, mint fent. Ekkor viszont észre fogja venni, hogy a konvertált program legfelső sora automatikusan látszik a képernyőn, mutatva a program jelenlétét.(Ha az átvitel a Stop gomb lenyomásának hatására leállt, akkor ehelyett az a sor látszik, ahol a leállás történt).

A program átvitelének másik módja, hogy elhagyjuk a SPECEDIT-et

:BASIC

szöveget gépelve (jegyezzük meg, hogy ez az összes éppen tárolt IS-Basic programot törli) és a Basic-ből

LOAD"SPECEDIT:"

utasítást adunk ki. E módszer alkalmazásakor nem íródik ki szöveg, mivel az átvitel miatt a módszer gyorsabb. Bármilyen előforduló hiba leállítja az átvitel folyamatát és ekkor a Basic-ben leszünk. Ha ekkor újra belépünk a SPECEDIT-be, a hibás sor javításra készen vár a képernyőn.
A programok átvitelének ez a módja lehetséges még akkor, ha elhagyjuk a SPECEDIT-et a Basic paranccsal, és későbbi időpontban vissza akarjuk vinni, de szükséges lehet, hogy először lezárjuk az 1. csatornát, kiadva BASIC-ből a

CLOSE £1

parancsot.
Az aktuális Basic program, ha ilyen van, törlődik, függetlenül attól, hogy sikeres volt-e az átvitel, míg az első módszer mellett választhattuk, hogy inkább az aktuális programmal merge-ölünk. A 0-s BASIC program szerkesztésekor felülírásra, MERGE-re van szükség.

SPECEDIT parancsok

A program kilistázható teljesen vagy részben, kívánság szerint, mintha Basicben volnánk, a LIST parancs segítségével, pl.

LIST 30

hatására a 30-as sor listázódik ki, csak ha az létezik, míg

LIST 20-80

hatására az összes sor a 20. és a 80. közt kilistázódik.

A sorok törölhetők is a DELETE paranccsal hasonló módon vagy egyszerűen a sor számát írva ENTER kíséretében, pl.

DELETE 30

hatása ugyanaz, mint

30 (ENTER)

hatása, a 30-as sor törlődik a programból, míg

DELETE 40-90

az összes sort törli a 40-től a 90-ig bezárólag.

Ha az egész programot törölni akarja, használhatja a NEW parancsot, amely teljesen kiüríti a SPECEDIT munkaterületét.
Az összes hagyományos szerkesztési lehetőségek, amiket az Enterprise joystick-kel irányított editorja ad, rendelkezésünkre áll, mintha Basicben lennénk, így ha egy program ki van listázva, rajta a változtatások egyszerűen és direkt módon megtehetők. Ráadásul egy FIND parancs is kiadható, bonyolult kulcsszavak, stringek vagy változók megkeresésére akárhol a programban. Ehhez egyszerűen írja be:

FIND

és utána a keresendő betűket. Ennek megfelelően, az összes olyan sor megjelenik, amely tartalmazza ezt a betűkombinációt. Ha a keresendő betűsorozat nagyon gyakori, esetleg nagyon sok sor jelenik meg, egyesek a képernyő tetején túlkerülnek.
Ugyanakkor, mint az átviteli folyamat esetében, a képernyő leállítható alaposabb megtekintés végett a Hold gomb megnyomásával. Akármelyik fázisban, ha az egész keresést le akarja állítani, pl. mert a keresett sor már megjelent, nyomja meg a Stop gombot.
Olyan programok, amelyek a konverzió közbülső fázisában vannak, azaz már konvertáltuk őket, de még szerkesztésre szorulnak az IS-Basic-beli futás előtt, kimenthetők a SPECEDIT-ből, leírva:

SAVE

és utána a file-nevet. Jegyezzük meg, hogy a " karakter, amire általában a Basic-beli SAVE utasításnál szükség van, itt nem feltétlenül szükséges. Ugyanez áll a SPECEDIT-beli LOAD parancsra.

A CONVERT parancs játssza a főszerepet ebben a Konverterben. Feladata, hogy felépítsen egy Basic környezetet a konvertált program számára, hogy az fusson, és hogy konvertáljon minden Spectrum Basic utasítást IS-Basic utasítássá.
Az első feladatot úgy oldja meg, hogy minden programhoz néhány Basic sort tesz hozzá. Ezek alapértelmezést adnak a színeknek (...) és átalakítják a képernyőt is, hogy illeszkedjék a Spectruméhoz. Mivel ezek a sorok mindig hozzátevődnek a programhoz, megtekinthetők a

CONVERT

paranccsal, programnév paraméter nélkül.

A második feladat, az utasításkonverzió, kétféleképp történhet. Az első módszer, hogy a majdnem kompatibilis parancsokon kis változásokat ér el a konverzió, pl. felcseréli a paraméterek sorrendjét, egy ú ,ú-t ú;ú-vel helyettesit, feloszt több utasításból álló sorokat, amik máskülönben érvénytelenek volnának, vagy akár hozzáad egy konstanst egy képernyő-pozícióhoz, hogy az Enterprise-on hasonló display képet kapjon a programról, mint a Spectrumon. Bizonyos esetekben ez tágabban értendő és az eredeti parancs valójában több IS-basic paranccsá alakul.
A konverzió másik módja, hogy egy adott parancshoz egy függvénydefiníciót rendel egy rá vonatkozó hívással együtt, s ez pótolja az eredeti parancsot. Ez akkor történik, ha túl sok alapvető különbség van a parancsok között, vagy ha egyáltalán nincs ekvivalense az adott parancsnak és egyáltalán nem lehetne implementálni. Ilyen parancsoknak két csoportjáról található definíció a mellékelt SPECGRAF és SPECCOL f ile-okban. Azért ott, mert csak akkor szükségesek, ha az eredeti program tényleg tartalmaz bizonyos speciális parancsokat.
Mivel ezek a file-ok közvetlen Basic eljárás definíciók, amelyek kreálhatók Basicből, elmentve egy új set-et, nincs semmi ok rá, miért ne változtathatnák meg őket vagy miért ne kísérletezhetnének velük az IS-Basicet jobban ismerők, viszont erősen ajánlott, hogy az eredeti példányt ne változtassuk meg. Az eljárás definíciók közül kettő helye - a Spectrum FLASH és BRIGHT parancsokhoz kapcsolódók! - szándékosan üres, hogy a felhasználó töltse ki a saját programjához illeszkedően, mivel pontos ekvivalenseket ezekhez a parancsokhoz implementálni lehetetlen.

A konverzió 5, különálló lépésre bomlik. Minden lépés befejezésekor a CONVERT üzenet mögé egy újabb kitöltött négyzet kerül. Ez lehetővé teszi, hogy megbecsüljük, mennyi ideig fog tartani a konverzió.
A konverzió működése során megkeresi a programhibákat és mindegyik hibás sort megjelöli, a !* jellel, amit egy 1-től 4-ig terjedő szám követ, ez a hiba típusát jelöli. A ! szimbólum használata miatt a hibás sor további része nem vevődik figyelembe, hanem IS-Basic commentnek tekinthető. Mivel a konverzió addig dolgozik, amíg a program végére nem ér, tekintet nélkül a talált hibák számára, a program még betölthető, tesztelés vagy változtatás céljából. A hibatípusok jelentését adjuk meg a továbbiakban.

A hibajelzések mind eltávolíthatók egyszerű editálással, a SPECEDIT-en vagy a Basicen belül és adott típusú hiba keresése történhet a SPECEDIT -beli FIND paranccsal, pl.

FIND !*3

További részletek az összes Spectrum Basic parancs konverziójáról az 7-es Függelékben találhatók.

Már konvertált programot azonnal újrakonvertálni nem lehet. Ha mégis megpróbáljuk, a

*** Already converted

üzenet íródik ki. Megtehetjük ugyanakkor, hogy kimentjük a konvertált programot SPECEDIT-ben, és később újra betöltjük. Ilyenkor már nincs védelem a második konverzió ellen.

Az Enterprise funkciós gombjai úgy vannak elrendezve, hogy a legtöbb, SPECEDIT-ben kiadható parancs kiadható egy funkciós gomb lenyomásával is, bár, biztonsági okokból, a DELETE és a NEW parancs ez alól kivétel. Alább táblázatot adunk meg a funkciós gombok elrendezéséről, amely hasonló az IS-Basic-éhez.

 
F1
F2
F3
F4
F5
F6
F7
F8
Shift   SAVE           :BASIC
Norm CONVERT LIST FIND     LOAD SAVE BASIC

Hogy működik a BASIC-BASIC KONVERTER?

Az ön Basic-Basic konverter programcsomagja sok programból áll, amelyek közül a két legfontosabb, a SPECEDIT és a SPECTAPE nevű, végzik a tényleges átvitelt és konverziót. Mindkettő egy teljes szegmenst foglal el, és így mindketten 16K-t használnak az Enterprise memóriájából. A SPECEDIT egy további teljes szegmenst puffernek használ, amelyben szövegét tárolja.
Mivel az eredeti Spectrum kazetta olvasása és konvertálása a folyamatnak két különböző része, minden baj nélkül futtathatók külön. Bár a két program egyszerre betölthető a 128K-s gépbe, a SPECTAPE akkor is elfoglalja a 16K-nyi memóriarészt, ha már elvégezte feladatát. Így, ha az IS-Basic memórianyereség fontos, mint ahogy az eredeti program jelentős növelésekor pl. az, nagy gép esetén is tanácsos, hogy külön töltsük be és futtassuk a két programot.
A standard HELP parancs, a Basic-ből kiadva, használható arra, hogy megadja, melyik program van a gépben egy adott pillanatban.
A SPECEDIT Basic kiterjesztésként implementálódott, betöltés után önmagát szerkeszti össze. Bár a SPECEDIT "eszköz", automatikusan úgy installálódik, hogy egy további lehetőséget adjon programok átvitelére. Ugyanakkor csak-olvasható eszköz, és csak egy csatorna nyitható számára egyszerre. Ez akkor a legelőnyösebb, amikor konvertált programokat direkt módon akarunk másolni , mert elkerülhetővé teszi, hogy átmenjünk a Basic-be vagy szalagot használjunk.
A SPECTAPE periféria-meghajtó, amely lehetővé teszi, hogy Enterprise programok és utility-k Spectrum szalagokat olvassanak. Ez úgy történik, hogy egy csatornát nyitunk a SPECTAPE: eszköz számára, ahelyett, hogy

TAPE:

számára nyitnánk, ahogy szokásos.
Bár egységszám megadható, pl.

SPECTAPE1:

éppúgy mint

TAPE1:

csak-olvasható eszköz, felülírni nem lehet.

A SPECGOTO file-ban levő kiterjesztések segítségével hatékonyabbá lehet tenni a GOTO, GOSUB, és RESTORE IS-Basic parancsokat, azzal, hogy egy változót is használhatnak paraméterként. Ezek önállóan is alkalmazhatók az IS-Basic gazdagítására általában, nemcsak a SPECEDIT által konvertált programokkal kapcsolatban.

SPECTRUM BASIC KONVERTER specifikáció

1. Mit konvertálunk?

1.1 Sorszámok

Spectrum

A sorszámok 1-tól 9999-ig terjednek.

IS-Basic A sorszámok 1-tól 9999-ig terjednek.
Konverzió

Ha a program tartalmaz egy sort 9000-es vagy annál nagyobb sorszámmal, akkor az egész program újraszámozódik. A sorszámok másképp csak akkor változnak, ha plusz sorokra van szükség és a számozás konzekutiv.

1.2 Sorok

Spectrum

A sorok hossza (elméletileg) 65535 karakterig terjedhet. Minden kulcsszó és függvény egyetlen karakternek számít Egy sor több utasításból is állhat, amiket kettőspont (:) választ el. Nincs megkötés a több utasítást tartalmazó sorokban lévő kulcsszavakra.

IS-Basic

A sorok hossza 254 karakterig terjedhet. Minden szintaktikus egység egy egységleíró byte-tal kezdődik, majd a kulcsszavak és függvények következnek, egy-egy karakterrel reprezentálva. Egy sor több utasításból is állhat; az utasításokat kettőspont (:) választja el. Vannak bizonyos szabályok, amelyek korlátozzák, hogy mely kulcsszavak jelenhetnek meg egy több utasításból álló sor második ill. későbbi utasításában, valamint, hogy mely kulcsszavakat követhetnek további utasítások ugyanabban a sorban.

Konverzió

Ha egy kulcsszó egy több utasításból álló sorban az IS-Basic szabályoknak ellentmond, akkor új sorba kerül, ami az eredeti sort követi. A sorok hosszára nem történik ellenőrzés. Kivételesen hosszú sorok kellemetlen és rejtélyes hibákat okozhatnak az IS-Basic-be töltéskor.

1.3 Azonosítók és kulcsszavak

Spectrum

Az azonosítók mind kisbetűsre konvertálódnak, míg az összes kulcsszó nagybetűsre. Az azonosítók hossza tetszőleges és tartalmazhat belső space-eket vagy szín-kódokat, amiket a Spectrum Basic nem vesz figyelembe. Ellenőrző változóknak, tömböknek és függvényeknek csak egy betű lehet az azonosítója. Azonosító nevek és kulcsszavak megegyezhetnek.

IS-Basic

Mind az azonosítók, mind a kulcsszavak nagy­ betűsre konvertálódnak. Az azonosítók 31 karakterig bármilyen hosszúak lehetnek, de 31 karakternél nem lehetnek hosszabbak; minden karakter számít. Az azonosítók tartalmazhatnak belül pontot és vonal alatti karaktereket.

Konverzió

Az azonosítók változatlanok, a konverter tud kezelni kisbetűs, nagybetűs és vegyes formákat is és ezeket mind nagybetűsre konvertálja. A belső space-ek és a szín-kódok hatására "Not Understood" üzenet jelenik meg, 31 karakternél hosszabb változók hatására pedig az "Identifier too long" üzenet.

1.4 Konstansok és változók

Spectrum

A numerikus konstansokat tárolja bináris reprezentációban is és tetszőleges számú számjegyet tartalmazó karakter-stringekként is. A pontosság 9 vagy 10 jegy, a kitevő intervalluma pedig 10E-30-tól 10 E-38-ig terjed.

IS-Basic

A numerikus konstansokat vagy 16 bites egészekként tárolja (amelynek értéke legfeljebb 9999) lebegőpontos számokként BCD reprezentációban. A pontosság 10 fix jegy, a kitevő intervalluma 10 E-64-től 10E-62-ig terjed.

Konverzió

A numerikus konstansok változatlanok maradnak. A kontroll-kódok azokban a string-konstansokban, amiknek nincs megtelelője az IS-Basic-ben, DEL karakterre cserélődnek.

1.5 Tömbök

Spectrum

A tömbök lehetnek akármilyen méretűek és lehet akármennyi a dimenziójuk. Az indexek 1-től kezdődnek. A stringek mérete tetszőleges. Levágási operációk rendelkezésre állnak, a TO kulcsszó használatával. String tömbök egy DIM utasítás segítségével definiálhatók. Substring hozzárendelés lehetséges.

IS-Basic

A tömbök csak 1 vagy két dimenziósak lehetnek. Az indexek alapértelmezése zérónál kezdődik. A stringek 254 karakterig bármilyen hosszúak lehetnek, de 132 hosszúvá konvertálódnak. A DIM-mel definiált string tömbök hossza fix, 12 karakter. Levágási operátor rendelkezésre áll, a ":" operátor használatával. Substring hozzárendelés nem lehetséges.

Konverzió

Sem a string- vagy tömb-deklarációk, sem a változók nem módosulnak. Egy olyan program, amelyik nem egyszerű változókként használ stringeket, nem fog működni, a különböző levágási operátorok és a különböző index-alap miatt.

1.6 Operátorok

Spectrum

A Spectrumban a következő operátorok álinak rendelkezésre:

+ - * / =     AND OR NOT

A TRUE Boole-változót az 1, a FALSE-ot a 0 reprezentálja. Az operátorok nem azonos precedenciájúak, a következő sorrendben értékelődnek ki:

  • Indexelés és levágás
  • Függvények
  • Előjel-mínusz
  • * /
  • + -
  • NOT
  • AND
  • OR

A "+" operátor string-láncolást ad.
A "+" és a U-U operátorok használhatók kétváltozós és egyváltozós műveletekként is. Nem szükséges a zárójelek használata bináris és unáris műveletek összekapcsolásakor. (azaz A*-10 érvényes kifejezés.)
Az AND operáció első változója numerikus vagy string ; eredményül az első változót adja, ha a második változó TRUE (nem-0) zérót vagy null-stringet, ha a második változó FALSE (zéró).
Az OR operátornak csak numerikus változói lehetnek, és az AND-del ellentétes módon működik.
A NOT operátor eredményül FALSE-ot (zéró) ad, ha változója nem-zéró; TRUE-t (1-et) egyébként.

IS-Basic

Az operátorok:

+ - * / ^ & = < <> > <= =>     AND OR BAND BOR NOT

IS-Basic precedencia:

  • * /
  • + - (bináris és unáris)
  • NOT
  • AND BAND
  • OR BOR

A string-láncolás a & operátorral végezhető.
Unáris operátorok binárisakkal összekapcsolva zárójelet igényelnek.

Konverzió

A következő operátorok konvertálódnak:
A string-láncolásra szolgáló "+"-ból "&" lesz.
AND és OR - BAND és BOR lesz. Az IS-Basic-ben nincs a Spectrum-beli AND és OR operátoroknak pontos megfelelője. Azok a programok, amelyek ezen operátorokat szokatlanabb módon használják, valószínűleg nem fognak helyesen működni.

1.7 Függvények

Spectrum konvertált forma Megjegyzés
ABS x ABS(x)  
ACS x ACOS(x)  
ASN x ASIN(x)  
ATTR(i,j) !*ATTR(i,j) Az (i,j) képernyőpozíció attributumának értékét adja
BIN ddd... BIN(ddd...)  
CHR$ i CHR$(i)  
CODE s$ ORD(s$)  
COS x COS(x)  
EXP x EXP(x)  
FN f(p,..) FNf(p,..)  
IN n !*2 IN(n)  
INKEY$ INKEY$  
INT x INT(x)  
LEN s$ LEN(s$)  
LN x LOG(x)  
PEEK n !*2 PEEK(n)  
PI PI  
POINT(i,j) CALL POINT... TRUE-t ad, ha pixel (i,j)...
RND RND  
SCREEN$(i,j) !*1 SCREEN$... Az (i,j) képernyőpozíción lévő karakter értékét adja
SGN x SGN(x)  
SIN x SIN(x)  
SQR x SQR(x)  
STR$ x STR$(x)  
TAN x TAN(x)  
USR n !*1 USR(n) Hasonló az IS USR-hez.
USR s$ !*1 USR(s$) A felhasználó által definiált char (s$) címét adja
VAL s$ VAL(s$) A Spectrum-beli VAL egy kifejezést fog elfogadni
VAL$ s$ !*1VAL(s$) String-kifejezést értékel ki.

Ha a programban szerepel a POINT függvény, akkor a program futása előtt az IS-Basic GRAPHICS függvényeket is merge-ölni kell. A konverzió végén ennek érdekében üzenet fog megjelenni.

A Spectrum Basicben a függvények egyszerű paramétereit nem kell zárójelbe tenni. A zárójeleket a konverter pótolja.

1.8 Utasítások

BEEP x,y SOUND DURATION 50*(x), PITCH 37+(y)
BORDER n

SET £C: BORDER n !*4
Az utasítás azért van megjelölve, mert az n paraméter paletta-szín és szín-értéknek kellene lennie. Ennek ellenére az utasítás végrehajtódik.

BRIGHT n
CALL BRIGHT(n)
Ha a programban BRIGHT utasítás szerepel, a program futása előtt az IS-Basic COLOUR függvényeket merge-ölni kell. A konverzió végén ennek érdekében üzenet jelenik meg.
CAT !*1 CAT
CIRCLE x,y,z CALL CIRCLE (x,y,z)
CIRCLE c,n;x,y,z
CALL T.c(n): CALL CIRCLE(x,y,z): CALL T.UNDO
Ha szerepel a CIRCLE utasítás a programban, akkor az IS-Basic GRAPHICS függvényeket merge-ölni kell a program futása előtt. A konverzió végén ennek érdekében üzenet jelenik meg.
Ha szín-egységek szerepelnek a programban, akkor az IS-Basic COLOUR függvényeket merge-ölni kell a program futása előtt. A konverzió végén ennek érdekében üzenet jelenik meg.
CLEAR ALLOCATE 0: RESTORE
CALL C.SETUP
CLEAR n CALL C.SETUP: RESTORE !*2 n
CLOSE £ !*1 CLOSE £
CLS CLEAR SCREEN
CONTINUE !*1 CONTINUE
COPY !*1 COPY
DATA e,e..

DATA e,e..
Az adategységek kifejezések is lehetnek. Az IS-Basic nem enged meg kifejezéseket a DATA utasításban.

DEF FN f(p1,.)=e

DEF FNf(p1,.)=e

DIM v(i,i,...) DIM v(i,i,...)
DRAW x,y CALL DRAW(x,y,0)
DRAW x,y,z CALL DRAW(x,y,z)
DRAW (c,n;x,y,z)
CALL T.c(n): CALL DRAW (x,y,z): CALL T.UNDO
Ha szerepel a programban a DRAW utasítás, akkor az IS-Basic GRAPHICS függvényeket a program futása előtt merge-ölni kell. A konverzió végén ennek érdekében üzenet jelenik meg.
Ha szerepelnek szín-eg ységek a programban, akkor a program futása előtt az IS-Basic COLOUR függvényeket merge-ölni kell. A konverzió végén ennek érdekében üzenet jelenik meg.
ERASE f !*1 ERASE f
FLASH n CALL FLASH(n)
FOR v=x TO y FOR v=x TO y
FOR v=x TO y STEP z FOR v=x TO y STEP z
FORMAT f !*1 FORMAT f
GO SUB n GOSUB n
GO TO n
GOTO n
A Spectrum megengedi, hogy a GO SUB, ill. a GO TO utasítás nem létező sorra hivatkozzon, és a következő sorra viszi a vezérlést. Az IS-Basic hibát jelez, ha az illető sor nem létezik.
Ha szerepel a programban a GO SUB vagy a GO TO utasítás, egy változóval, mint paraméterrel, akkor be kell tölteni az IS-Basic GOTO modult a program betöltése előtt. A konverzió végén ennek érdekében üzenet jelenik meg.
A konvertáló program a GOTO és a GOSUB kulcsszavakat is érvényes Spectrum kulcsszavakként kezeli.
IF x THEN s IF x THEN s
INK n
CALL INK(n)
Ha szerepel INK utasítás a programban, akkor az IS-Basic COLOUR függvényeket merge-ölni kell a program futása előtt. A konverzió végén ennek érdekében üzenet jelenik meg.
INPUT c n !*2 c n
INPUT LINE v LINE INPUT £0:v
INPUT v
INPUT £0:v
Az INPUT utasításban levő szín-egységek azért vannak megjelölve, mert az Enterprise editor nem tud színnel működni.
INVERSE n
CALL INVERSE(n)
Ha szerepel INVERSE utasítás a programban, akkor az IS-Basic COLOUR függvényeket merge-ölni kell a program futása előtt. A konverzió végén ennek érdekében üzenet jelenik meg.
LET v=e LET v=e
LIST ... !*1 LIST ...
LLIST ... !*1 LLIST ...
LOAD ... !*1 LOAD ...
LPRINT v PRINT £104:
LPRINT AT i,j PRINT £104,AT i+1, j+1:
LPRINT TAB n PRINT £104:TAB(n+1)
LPRINT' PRINT £104:;CHR$(13);CHR$(10);
LPRINT c n
!*2 c n
Az LPRINT utasításban levő szín-egységek azért vannak megjelölve, mert a printer számára szükséges kódok ismeretlenek.
MERGE f !*1 MERGE f
MOVE f,f !*1 MOVE f,f
NEW !*1 NEW
NEXT v NEXT v
OPEN £ !*1 OPEN £
OUT m,n !*1 OUT m,n
OVER n
CALL OVER(n)
Ha szerepel a programban OVER utasítás, akkor az IS-Basic COLOUR függvényeket merge-ölni kell a program futása előtt. Ennek érdekében a konverzib végén üzenet jelenik meg.
PAPER n CALL PAPER(n)
Ha szerepel a programban PAPER utasítás, akkor az IS-Basic COLOUR függvényeket merge-ölni kell a program futása előtt. Ennek érdekében a konverzió végén üzenet jelenik meg.
PAUSE n

CALL PAUSE(n)
Ha a PAUSE utasítás szerepel a programban, a következő deklaráció csatolódik a programhoz:

DEF PAUSE(N)
NUMERIC A,B
IF N=0 TNEN
DO WHILE INKEYS=" "
LOOP
ELSE
ASK 39 A
DO WHILE INKEY$=" "
ASK 39 B
IF A B THEN N=N-1
LOOP WHILE N=0
END IF
END DEF

A 39. rendszerváltozó minden interrupt-kor növekszik 1-gyel, az interrupt-ot a video hardware okozza, minden frame végén.

PLOT m,n CALL PLOT(m,n)
PLOT c n;m,n
CALL T.c(n): CALL PLOT(m,n): CALL T.UNDO
Ha szerepel PLOT utasítás a programban, akkor merge-ölni kell az IS-Basic GRAPHICS függvényeket a program futása előtt. Ennek érdekében a konverzió végén üzenet jelenik meg.
Ha szerepelnek szín-egységek a programban, akkor az IS-Basic COLOUR függvényeket merge-ölni kell a program futása előtt. Ennek érdekében a konverzió végén üzenet jelenik meg.
POKE m,n !*1 POKE m,n
PRINT v PRINT £C.:v
PRINT AT i,j PRINT £C.,AT i+1,j+1:
PRINT TAB n PRINT £C.:TAB(n+1)
PRINT' PRINT £C.:;CHR$(13);CHR$(10);
PRINT c n CALL T,c(n): PRINT £C:... : CALL T.UNDO
Ha szerepelnek a programban szín-egységek, akkor az IS-Basic COLOUR függvényeket merge-ölni kell a program futása előtt. Ennek érdekében a konverzió végén üzenet jelenik meg.
RANDOMIZE RANDOMIZE
RANDOMIZE n RANDOMIZE !*2 n
READ v,v,... READ v,v,...
REM ... REM ...
RESTORE n RESTORE n
Ha szerepel a programban egy RESTORE utasítás, egy változóval paraméterként, akkor az IS-Basic GOTO modult be kell tölteni a program betöltése előtt. A konverzió végén ennek érdekében üzenet jelenik meg.
RETURN RETURN
RUN RUN
RUN n CALL C.SETUP: RUN n
Ha szerepel a programban egy RUN utasítás, egy változóval paraméterként, akkor az IS-Basic GOTO modult be kell tölteni a program betöltése előtt. A konverzió végén ennek érdekében üzenet jelenik meg.
SAVE ... !*1 SAVE ...
STOP STOP
VERIFY ...
!*1 VERIFY ...

Ha az alábbi utasítások bármelyike egy több utasításból álló sorban jelenik meg, akkor a sor a megjelenés helyén felosztódik és új sor kerül a programba:
BEEP, DATA, DEF, DIM, FIX2, GOSUB, GOTO, IF, NEXT
Ha az alábbi utasítások bármelyikét egy több utasítást tartalmazó sorban követ valamilyen utasítás, akkor a sor felosztódik és a rákövetkező utasítás az új sorba kerül.
FOR, GOSUB, INPUT, OPEN, READ

1.9 Program

A következő sorok minden konvertált program elejére odakerülnek:

1 C.=101: I.=0: P.=7: A.=8: M.=0
2 X.,Y.=0
3 CALL C.SETUP

A változók jelentése a következő:

C.
Ez a képernyő összes output színváltozására használt csatornaszám. Ha a program nem használ szint és tisztán szövegalapú, ez a változó kinullázható és a normál IS-Basic editor fog működni.
I., P.
Ezek tartalmazzák a betűszint és a papírszint. Azért kell változókat használni, mert nincs más mód, hogy az Enterprise rendszerből ezt az információt megtudjuk.
A. Ez tartalmazza az attribútum-jelző aktuális értékét. Részletesebben ld. az Enterprise Programozói Kézikönyv 1. Változatának 188. oldalát.
M.

Ez tartalmazza a sormód jelző aktuális értékét. Részletesebben ld. a fenti könyv 190. oldalát.

X., Y. Ezek tartalmazzák együtt az aktuális PLOT pozíciót . Ezt a pozíciót a Spectrum saját koordinátarendszerében (0..255,0..175)-ként kezeli.

A C.SETUP eljárást a következő sorok definiálják (a program végére kerülnek):

DEF C.SETUP
GRAPHICS ATTRIBUTE: CLOSE £101
SET VIDEO MODE 15: SET VIDEO COLOUR 0
SET VIDEO X 32: SET VIDEO Y 22
OPEN £C.:"VIDEO:"
DISPLAY £C.:AT 1 FROM I TO 22
SET £C.:INK I.: SET £C.:PAPER P.
SET £C.:ATTRIBUTES A.:SET £C.: LINE MODE M.
CLEAR SCREEN: PRINT: PRINT
END DEF

A GRAPHICS ATTRIBUTE: CLOSE £101 sor egyrészt biztosítja, hogy a 101-es csatorna zárva legyen és a szöveges oldalt a képernyő alsó négy sorába rakja.
Az eljárás törzse egy grafikus oldalt annyira hasonlóvá tesz a Spectrum-éhoz, amennyire lehetséges. A fő különbségek a következők:

A befejező PRINT utasítások arra valók, hogy a szöveges oldal kurzora látható legyen a grafikus oldal alatt (a szöveges oldal négy sorból áll, és ebből kettőt a grafikus oldal elsötétít).
Ha a konvertáló program a sorokat újraszámozta, a C.SETUP definíciót követően további sorok szúródnak be, arról, hogy mely sorok számozódtak újra. Például:

379 ! 100 to 45 ! 110 to 46
380 ! 120 to 47

Hogyan konvertáljunk egy programot?

SPECEDIT betöltése

A SPECEDIT program olyan környezetből tölthető be, amely támogatja a rendszermodul betöltést (azaz IS-Basic, WP, EXDOS, stb.). Betöltés után SPECEDIT automatikusan újraindítja az IS-Basic-et.

F i g y e l m e z t e t é s
Így megszűnik minden tranziens adat, pl. a Basic programok vagy a WP dokumentumok amelyek a SPECEDIT betöltésekor a gépben voltak.

A Specedit 16 Kbyte-ot igényel önmaga számára és legalább 16 Kbyte-ot pufferterületként.

SPECEDIT parancsok

LIST  
LIST n  
LIST n-  
LIST -n  
LIST n-n Az editor területéről listáz ki sorokat.
DELETE  
LOAD  
LOAD f  
LOAD "f" Szöveges file-t tölt be az editorba. Modulok betöltésére nem használható.
NEW Kiüríti az editor memóriáját.
FIND s
Kilistázza az összes olyan sort, amely az s stringet tartalmazza. Ha a stringet egynél több space előzi meg, akkor azok a keresett stringbe nem kerülnek bele. Az s-et követők azonban igen.
CONVERT

Végrehajtja a konverziót. Ez nagy program esetében néhány percig is eltarthat.

BASIC Visszatér az IS-Basic-be és betölti az editor memóriáját. Ez nagy program esetében néhány percig is eltarthat.

Minden más beadott parancs a rendszerhez kerül át interpretációra. Ha egy parancsot a kettőspont karakter előz meg, a parancs egyenesen átkerül a rendszerhez. Például :BASIC újraindítja az IS-Basicet, anélkül, hogy az editor memóriát betöltené.

Hibaüzenetek

A következő hibaüzenetek fordulhatnak elő:

*** Not understood

Nem szorul magyarázatra.

*** Out of range A sorokra vonatkozik.
*** Store full Nem szorul magyarázatra.
*** Already converted NEW és LOAD hatására ez a helyzet megszűnik.

Minden más hibaüzenet magyarázata a rendszert ismertető kézikönyvben van.

Az editor tár

Az editor tár állandó memória (hidegindításkor nem íródik felül) és a SPECEDIT: eszközön keresztül érhető el. Például, hogy EXDOS-ból kimentsük az editor tartalmát, írjuk be:

COPY SPECEDIT: My Program

A tár 16K-s egységekben allokálódik.

Amíg a SPECEDIT aktív, a tár addig bővül, míg lehetséges, de egy formális kilépés a SPECEDIT-ből azt eredményezi, hogy a tár addig szűkül, amíg lehetséges (zéró hosszúságig, ha a tárban nincs semmi). Hogy a SPECEDIT-ben levő összes RAM-ot felszabadítsuk, kiadhatjuk SPECEDIT-ből a NEW parancsot.

Megszorítások

Enterprise 128 Az editor tár legfeljebb 48K.

Általában. Az azonosító nevek nem egyezhetnek meg semmilyen kulcsszóval. Ha mégis, akkor kulcsszóként értelmeződnek és a konvertálást teljesen elronthatják.

Példa

Egy működő példát adunk arra, hogyan konvertálható egy Spectrum Basic program Enterprise Basic-be.
A következőkben lépésről lépésre követjük végig, ahogy Enterprise Basic-be konvertálódik a Spectrum Basic program, amely a Basic to Basic szalag A oldalán az utolsó file. Ez világos fogalmat nyújt önnek a program használatáról és segít saját konvertálási munkáinak elvégzéséhez is.

Konverzió

Helyezze a Basic to Basic szalagot a magnóba, az A oldalával fölfelé. Írja be :

LOAD "SPECTAPE.EXT"

és nyomja meg az ENTER gombot.
Nyomja meg a PLAY gombot a magnón. A "SPECEDIT" program most a magnóról fog betöltődni. Amikor az "OK' prompt megjelenik, írja be:

LOAD "SPECEDIT.EXT"

és nyomja meg az ENTER-t.
Nyomja meg a PLAY-t a magnón. Mikor az "OK" prompt megjelenik, írja be:

SPECEDIT

és nyomja meg az ENTER-t.
A keret most szint fog váltani és a státusz sorban 'SPECEDIT XXXX BYTES FREE' lesz olvasható. Írja be:

LOAD "SPECTAPE:DEMO"

és nyomja meg az ENTER-t.
Nyomja meg a PLAY-t a magnón Amikor a program betöltődött, az "OK" üzenet fog megjelenni. Hogy ellenőrizze, vajon a program tényleg betöltődött-e, nyomja meg a 2-es Funkciós gombot. Most a program listája lesz látható a képernyőn.
A program most készen áll a konverzióra. Ehhez írja be:

CONVERT

és nyomja meg az ENTER-t (vagy az 1-es Funkciós gombot). Most meg fog jelenni egy üzenet: Spectrum Convert Version X.X
Az üzenet mögött egy kis négyzet lesz látható. Nemsokára egy új négyzet jelenik meg. Amikor öt négyzet lesz a sorban, a program konverziója befejeződött. Ekkor a BASIC to BASIC kiírja:

Lines heve been renumbered.
Graphics functions are required.
Colour functions are required.

Az első comment csak informálásra szolgál.
Graphics functions... Azt jelenti, hogy szükségünk lesz a "SPECGRAF" file-ra a kész program futtatásához.
Colour functions... Azt jelenti, hogy szükségünk lesz a "SPECCOL" file-ra a kész program futtatásához. Most átviheti IS-Basicbe a konvertált programot, hogy futtathassa. Írja be:

BASIC

és nyomja meg az ENTER-t (vagy a 8-as Funkciós gombot Shifttel).
Most ön újra IS-BASIC-ben van, és hogy betölthesse a programot SPECEDIT-ből, írja be:

LOAD "SPECEDIT:"

és nyomja meg az ENTER-t.
Ahogy azt a fenti üzenet jelezte, szükségesek lesznek a szín- és grafikus függvények, most ezeket a kész programhoz kell merge-ölni.
A szalagot tekerje az elejére. Írja be:

MERGE "SPECCOLO.BAS"

és nyomja meg az ENTER-t.
Amikor megjelenik az "OK" üzenet, írja be:

MERGE "SPECGRAP.BAS"

és nyomja meg az ENTER-t.
Az "OK" üzenet megjelenése után már futtathatja a konvertált programot. Írja be:

RUN

és nyomja meg az ENTER-t (vagy az 1-es Funkciós gombot).
A program most úgy fog futni, mint bármilyen más IS-BASIC program, kilistázódik és úgy változik meg, ahogy az az Enterprise-hoz mellékelt IS-BASIC kézikönyvben le van írva.

Vissza