Elindulás A szövegszerkesztő A parancsok leírása A Pascal előre programozott funkcióbillentyűi | Hibaüzenetek Lefoglalt szavak és előre definiált azonosítók Adattárolási formátum |
Elindulás
A számítógép kikapcsolt állapotában helyezzük a PASCAL-t tartalmazó cartridge-t a bal oldalon található "ROM BAY" feliratú portba, majd kapcsoljuk be a gépet. Attól függően, hogy melyik EPROM helyen (szegmensen) van a PASCAL-t tartalmazó EPROM megeshet, hogy nem a PASCAL jelentkezik be. Ebben az esetben adjunk ki egy ":HP" parancsot ( illetve EXT "HP") parancsot, ha a LISP-ben tartózkodunk ). A PASCAL induláskor a következő üzenettel jelentkezik be:
A felül látható üzenet a programkészítő cég copyright-ja.
Ez alatt egy lista látható, a szerkesztő parancsaival. Ez egy "H" parancs kiadásával bármikor kiíratható. A szövegben található nagybetűket kell kiadnia kívánt parancs indításához. Például a fordítás megkezdése (Compile) esetén a "C" betűt.
A Hisoft PASCAL - nem úgy, mint az IS-BASIC - ún. COMPILER. Ez azt jelenti, hogy egy sor beírása után még nem történik szintaktikai ellenérzés, hanem a teljes program bevitele után egyszerre fordítja le, egy futtatható állapotra. A fordítás megkezdését program írója kezdeményezi. Eme módszer előnye, hogy míg a BASIC programfutás közben még kénytelen elemezni is a sorok helyességét, addig a PASCAL eleve egy gépi kódú, futtatható programot állít elő. Ez a gépi kódú program már nem végez semmiféle ellenőrzést a programszövegben, a COMPILER rendszer így gyorsabb, mint a BASIC által alkalmazott INTERPRETER. Ezen kívül előnye az is, hogy képes - egy később önállóan is betölthető tárgykódot is előállítani.
A szövegszerkesztő
A PASCAL nyelven megírt programot (a továbbiakban: forrásszöveg) a PASCAL saját szövegszerkesztőjével írhatjuk be. Ez a szövegszerkesztő némiképpen hasonlít a BASIC által alkalmazotthoz, így az egyes parancsok leírásánál hivatkozunk a BASIC-re. Az egyes sorokat itt is sorszámozzuk. Ha egy üres sorszámot írunk be, akkor az adott sor törlődik (feltéve, ha létezik). A megjegyzéseket { és } (kapcsos zárójelek) közé tehetjük!
A szerkesztő parancsainak szintaktikája:
Ahol: <parancs> mindig egy karakter (betű). A rendszer a kis és nagybetűket egyaránt felismeri. <N1> és <N2> 1 és 32767 közötti egész szám. <S1> és <S2> maximálisan 20 karakterből álló karaktersorozat. Amennyiben a két szám operandusára nincs szükség (a parancs nem kívánja), a helyüket akkor is jelezni kell üres határolójelekkel. (Általában a "," karakter. ) Pl.: X"EXOS-modul".
Általános parancsok:
HELP | alak: H |
Kiírja a már említett segítő üzenetet. Itt kell megemlíteni, hogy az F1 billentyű erre a parancsra van beprogramozva, vagyis segítségkéréshez elég leütni az 1. funkcióbillentyűt. | |
Width | alak: W<szélesség> |
A szerkesztő képernyőjének szélessége. 40 esetén 40 karakteres, 80 esetén 80 karakteres lesz a képernyő üzemmódja. | |
default Y | alak: Y |
A parancs kiadása esetén a képernyőre íródnak az alapértelmezések, a következő alakban: <határoló> <N1> <N2> <S1> <S2> A határoló az egyes operandusok közötti elválasztót jelenti (delimiter). Ez általában a vessző, de ez megváltoztatható ( lásd a Q parancsnál ). A többi alapértelmezésről a parancsszintaktika ismertetésnél már volt szó, itt csak annyit, hogy ha számot nem írunk be, akkor az alapértelmezést felelteti meg neki. Ha viszont a parancsnál megadunk egy számot, akkor ez lesz az új alapértelmezés. Például: S 1,600,SZ1,SZ2 ekkor ezek lesznek az alapértelmezések. Ha ezután kiadunk egy üres P parancsot, akkor azt a rendszer a következővé egészíti ki: P 1,600,SZ1,SZ2. Ez nem jelenik meg a képernyőn, de így hajtódik végre. | |
Qdelim | alak: Q,,<delimiter> |
Beállítja az új határolójelet. Például:Q,,! Ezután az operandusokat már nem vesszővel, hanem felkiáltójellel kell egymástól elválasztani. Tehát, ha kiadnánk mégegyszer ugyanezt a parancsot, hibaüzenetet kapnánk! Visszaállítani a vessző határolójelet a Q!! paranccsal lehet. | |
Alter | alak: A |
Használatával a COMPILER opciókat lehet átállítani. Sorban: Symbol table size ( xxxx )? A szimbólumtábla mérete Translate stack ( xxxx )? A fordítási verem helye. Compiler stack ( xxxx )? A COMPILER verem helye. xxxx egy hexadecimális számot jelöl, a választ is így kell megadni. ENTER esetén nem változnak az opciók Nem célszerű az opciók átállítása, kivéve a szimbólumtábla méretének nagyobbra állítását hosszú program esetén. A szimbólumtáblába kerülnek a programban használt változók, konstansok stb. |
Input / Output műveletek:
Get text | alak: G,,<flie-név> |
A <file-név> nevű file-t megkeresi, majd betölti a szerkesztő munkaterületére. Vigyázni kell, hogy csak legális programot töltsünk be, mert egyébként könnyen összeomolhat a rendszer. Például: G,,prog.pas G,,TAPE:program | |
Put text | alak: P<sorsz1>,<sorsz2>,<file-név> |
Az előző parancs megfordítása, kimenti a forrásszöveg egy részét. A kimentendő blokk kezdősorszámát a <sorsz1>, a végsorszámát a <sorsz2> adja meg. Például: P1,123,program Kimenti az 1. sorszámtól a 123. sorszámig PROGRAM néven a forrásszöveg egy részét. Itt említjük meg, hogy a PASCAL-ban alkalmazható legnagyobb sorszám a 32767, így a teljes forrásszöveg kimentése a P1,32767,<file-név> paranccsal történhet. | |
Verify | alak: V<sorsz1>,<sorsz2>,<file-név> |
A P paranccsal kimentett forrásszöveget ellenőrzi. Amennyiben megelőzte egy forrásszöveg kimentés, akkor elhagyhatók az operandusok. Ekkor összehasonlítja a MYPROG nevű file-t a memóriában találhatóval. Ha megegyezik, akkor a "VERIFIED" ha nem, akkor a "FAILED" hibaüzenet jelenik meg. | |
load eXos module | alak: X,,<file-név> |
Betölti a <file-név> nevű file-t, amennyiben az EXOS modul. Ellenkező esetben hibaüzenetet ad. Például: X,,gen Betölti a GEN nevű programot. Itt érdemes megjegyezni, hogy a ":" (kettőspont) után tetszőleges rendszer-parancsot írva a gép végrehajtja azt! (Pl.: :DIR) |
Szövegszerkesztési parancsok:
List | alak: L<sorsz1>,<sorsz2> |
Kilistázza a <sorsz1> sorszámtól a <sorsz2> sorszámig terjedő programsorokat. Hasonlít a BASIC LIST parancsához. Ha nem adunk meg paramétert, az egész programot kilistázza. Például: L 1,100 | |
Insert | I<sorsz1>,<lépésköz> |
Beszúrást kezdeményez a <sorsz1> sorszámú sortól kezdve <lépésköz> növekménnyel. Ha már van ilyen sor, akkor az nem törlődik, hanem eggyel nagyobb sorszámot kap. Ha szükséges, a mögötte lévő sorokat is átsorszámozza. Például: I10,10 Automatikus sorszámozás 10-től kezdve, 10-es lépésközzel. A szolgáltatást a STOP billentyű megnyomásával kapcsolhatjuk ki. Némiképp emlékeztet a BASIC AUTO parancsára. | |
Edit | alak: E<sorsz> |
Kiírja a <sorsz> sorszámú programsort, amit javítani lehet. Például: E123 Lehívja a 123-as sort. | |
Delete | alak: D<sorsz1>,<sorsz2> |
Törli a forrásszövegben a <sorsz1> sorszámtól a <sorsz2> sorszámig tartó szövegblokk valamennyi sorát. Ebben a parancsban (a véletlen törlések kiküszöbölésére) mindkét sorszámot meg kell adni. Például: D1,32767 Törli a teljes forrásszöveget. Megfelel a BASIC DELETE parancsának. | |
reNumber | alak: N<sorsz>,<lépésköz> |
Átsorszámozza a teljes forrásszöveget úgy, hogy a kezdősorszám a <sorsz>, a növekmény a <lépésköz> lesz. Hatása azonos a BASIC RENUMBER parancsával. Például: N1,3 Az első sorszám az 1, a második a 4 lesz, stb. | |
Upper line | alak: U |
Kiírja a forrásszövegben előforduló legnagyobb sorszámot. | |
Buffer left | alak: B |
Kiírja a memóriában még szabadon lévő byteok számát ( hexadecimálisan ). |
Blokkműveletek:
Move | alak: M<sorsz1>,<sorsz2>,<cél> |
Átmozgatja a <sorsz1> sorszámtól a <sorsz2> sorszámig terjedő blokkot a <cél> sorszámú helyre úgy, hogy az eredeti helyen lévő blokk törlődik. Például: M2,5,10 A 2...5 sorokat átmozgatja a 10 sortól kezdődően, majd törli a 2...5 sorokat, így a 2...5 sorok a 10...13 sorok helyén lesznek. |
Keresés és szövegkicserélés:
Find | alak: F<sorsz1>,<sorsz2>,<szöveg> |
A <sorsz1> sorszámtól kezdődő és a <sorsz2> sorszámig tartó blokkban keresi a <szöveg> szöveget. Ha megtalálta kiírja azt a sort, ahol sikeres volt a keresés. Ez a parancs az, ahol érdemes a határolójelet megváltoztatni abban az esetben, ha a vessző karakter is szerepel a keresni kívánt szövegben. Például:
F1,32767,begin | |
Substitute | alak: S<sorsz1>,<sorsz2>,<szöveg1>,<szöveg2> |
A <sorsz1> és <sorsz2> által megadott blokkban kicseréli a <szöveg1> stringet <szöveg2>-re. Amennyiben talált <szöveg1>-et, akkor kiírja a sort a képernyőre. Az ENTER billentyű leütésekor kicseréli a stringeket, majd folytatja a keresést. Például: S1,32767,begn,begin |
Fordítás, futtatás:
Compile | alak: C |
Lefordítja a szöveg-pufferben lévő forrásszöveget. Hiba esetén kiírja az aktuális sort, és megjelöli a hibás részt. Hibátlan fordítás esetén engedélyt kér a futtatásra (Run?), amire "Y" választ adva lefuttatja a programot, egyéb válasz esetén visszatér parancs üzemmódba. | |
Run | alak: R |
Ha a memóriában van lefordított program, lefuttatja azt. | |
Translate | alak: T,,<file-név> |
Lefordítja a forrásszöveget, de nem futtatható formában, hanem létrehoz egy <file-én> nevű programot, ami egy 5-ös formátumú EXOS modul. Ez a kimentett program később visszatölthető, futásához nem szükséges a PASCAL COMPILER-nek a rendszerben lennie. |
A Pascal előre programozott funkcióbillentyűi
A PASCAL-ban a BASIC rendszerhez hasonlóan 8 funkcióbillentyűnek előre programozott funkciójuk van:
Normál | SHIFT + funcióbillentyű | |
F1 | HELP | READ ( |
F2 | PROGRAM | WRITE ( |
F3 | CONST | INTEGER |
F4 | TYPE | WRITELN |
F5 | VAR | WHILE |
F6 | BEGIN | UNTIL |
F7 | END | REPEAT |
F8 | PROCEDURE | FUNCTION |
A hibaüzenetek
Amennyiben fordítás közben a rendszer hibát észlel megáll, kiírja a hibás sort, valamint az alatta léve sorban a hiba számát (ERROR x). A hiba okának felderítését segítendő egy felfelé mutató nyíl ( a "^" karakter ) mutat a hibás szóra. Ekkor a programozó három dolgot tehet:
1. Megnyom egy billentyűt, vagyis folytatja a fordítást.
2. Az "E" billentyűvel javíthatja az aktuális sort.
3. A "P" billentyűvel javíthatja az előző sort.
A hibakódok:
Szövegszerkesztés közben előfordulható üzenetek:
No room - Elfogyott a program számára fenntartott hely.
Failed! - A kimentett program az ellenőrzés során hibásnak bizonyult.
Verified A kimentett program az ellenőrzés során helyes volt.
Futás közben előforduló hibák:
Ha futás közben hibát észlel a gép, akkor visszatér egy "<hibaüzenet> at PC=xxxx" üzenettel, ahol "xxxx" a hiba előfordulási helye (memóriacím!), a hibaüzenet az alábbiak lehetnek.
HALT | Megállás. |
Overflow | Túlcsordulás. |
Out of RAM | Elfogyott a memória. |
/ by zero | Osztás nullával ( a "DIV" is produkálhatja ). |
Index too low | Túl kicsi index. |
Index too high | Túl nagy index. |
Maths Call Error | Matematikai függvény hibás hívása. |
Number too large | Túl nagy szám. |
Number expected | Hiányzó szám. |
Line too long | Túl hosszú sor. |
Exponent expected | Hiányzó kitevő. |
Itt jegyezzük meg, hogy a T(ranslate) paranccsal lefordított és kimentett program, futás közben előforduló hibák esetén visszatér egy primitív parancsértelmezőbe. Először megjelenik a "Run?" kérdés, erre "Y"-t adva válaszként a program újra lefut. Minden más karakter esetén további karakter leütésekre vár, kivéve a ":" (kettőspont) karaktert, amikor utána egy EXOS parancs stringet lehet beírni.
Lefoglalt szavak és előre definiált azonosítók:
AND | ARRAY | BEGIN | CASE | CONST |
DIV | DO | DOWNTO | ELSE | END |
FORWARD | FUNCTION | GOTO | IF | IN |
LABEL | MOD | NIL | NOT | OF |
OR | PACKED | PROCEDURE | PROGRAM | RECORD |
REPEAT | SET | THEN | TO | TYPE |
UNTIL | VAR | WHILE | WITH |
Egyéb előre definiált azonosítók:
Konstans: | MAXINT=32767; | |||
Típus: | BOOLEAN=(FALSE,TRUE); | |||
CHAR {A kibővített ASCII karakterkészlet}; | ||||
INTEGER=-MAXINT..MAXINT; | ||||
REAL {valós számok}; | ||||
Eljárás: | WRITE | WRITELN | READ | READLN |
PAGE | HALT | USER | POKE | |
INLINE | EXOS | OUT | NEW | |
MARK | RELEASE | |||
Fügvény: | ABS | SQR | ODD | RANDOM |
ORD | SUCC | PRED | INCH | |
EOLN | PEEK | CHR | SQRT | |
ENTIER | ROUND | TRUNC | FRAC | |
SIN | COS | TAN | ARCTAN | |
EXP | LN | ADDR | SIZE | |
INP |
Adattárolási formátum:
Minden egész típusú számot 2 byte-on tárol, kettes komplemens formátumban. Pl.:
1 | =0001H |
256 | =0100H |
-256 | =FF00H |
A "HL" Z80-as regiszterben használja az egész számokat.
Karakterek, Boolean és egyéb skalár mennyiségek:
Egy byte-ban (8 bit) tárolja a mennyiségeket, amelyeket az "A" Z80 regiszterben használ fel.
Karakterek: 1 byte, a kibővített ASCII kódrendszert alkalmazva. Pl.:
"A"=41H
Boolean mennyiségek: TRUE=1, FALSE=0
Valós számok:
32 bites számábrázolás, 8 bit karakterisztika, 24 bit a mantissza, 1 bit az előjel. Bináris a mantissza is a karakterisztika is.
Akit részletesebben érdekel a PASCAL nyelv, olvassa el az ENTERPRESS Pascal sorozatát!