Page 21 - Enterpress Magazin - 2020. 3-6.
P. 21
2020. május – december 21. oldal
Hasznos, de nem szabványos szavak: Formázott kiírásra ad lehetőséget a
Van néhány veremkezelő FORTH szó, amely nincs benne .R ( n m - - - - )
a FIG FORTH alapszókészletben, az IS-FORTH-ban azon-
ban szerepel: A szó n-et egy m szélességű mezőben jobbra igazítva
DEPTH ( - - - - n ) írja ki.
A szó (jelentése: mélység) a verem tetejére teszi a verem
elemeinek (a DEPTH végrehajtása előtti) számát. 1.9. Hogyan tároljuk programjainkat?
PICK (n1 - - - - n2)
A verem bármely elemét a verem tetejére másolja. Hasz- Eddigi próbálkozásainkban az a bosszantó, hogy a prog-
nálatakor a 0 jelenti a verem első elemét, az 2 a másodikat ramok szövegei nem maradnak meg, nem lehet őket
és így tovább. Ha például a negyedik elemet akarjuk leg- kijavítva vagy változatlanul újra felhasználni. Megtehet-
felülre másolni és a verem tartalma a következő: 1 2 3 4 5, jük, hogy a programokat nem közvetlenül adjuk át az
akkor adjuk írjuk be: 3 PICK interpreternek, hanem valamilyen adathordozóra, az ún.
Ennek hatására a verem tartalma a következő lesz: 1 2 3 screen-ekbe írjuk őket; itt bármikor javíthatók vagy elol-
4 5 2 vastathatók az interpreterrel. A screen (ejtsd: szkrín) szó
Érdemes megjegyezni, hogy a 0 PICK megegyezik a DUP- magyarul képernyőt jelent, amit mi rövidítve kernyőnek
pal, az 1 PICK pedig az OVER-rel. fogunk nevezni, de a szakirodalom blokként is említi.
ROLL A kernyő a szöveges információ tárolásának eszköze. Egy
Kiszedi a verem n-edik elemét és a verem tetejére teszi. kernyőben annyi szövegnek van hely, amennyit egyszerre
Hasonló a ROT-hoz, csak itt tetszőleges számú elem kezelhetünk a képernyőn.; ez a FORTH szabvány szerint
megforgatható (rotálható). Tegyük fel, hogy a verem tar- 16 sor, egy sorban 64 karakterrel. Az IS-FORTH-ban egy
talma a következő: 1 2 3 4 5 6 7 kernyő 1024 byte (16*64). A szabvány FORTH egy lemezt
A 4 ROLL hatására az eredmény a következő: 1 2 4 5 6 7 3 egy szektorhalmaznak tekint, amelyet feloszt magának
A 3 ROLL a ROT, a 2 ROLL a SWAP szóval egyenlő hatású. kernyőkre.
A veremhatás szokásos jelölésével a ROLL működését
csak pontatlanul írhatjuk le. Az IS-FORTH ún. kernyőfile-okat használ, ezzel lehetővé
téve, hogy ugyanazon lemezen más file-okat is tárolhas-
Verem mélység sunk. A file neve a kernyő száma lesz (a kiterjesztése pedig
Egy helyesen futó program esetén nagyon valószínűtlen, 4TH). Az IS-FORTH nem csak a hagományos blokk-for-
hogy a verem kitöltené a rendszer memóriáját. Ennek elle- mátumot kezeli, mert azt magnós rendszerben nem ké-
nére, ha egy ciklusban maradék elemet hagyunk a verem- nyelmes használni.
ben, előfordulhat a verem túlcsordulása. Az ilyen hibák elke- Lemezes rendszerben ezek a blokkok a lemezen helyez-
rülésére tanácsos felkészülni. Ezt nagyban segíti a „DEPTH” kednek el. A megfelelő részek szerkesztéskor progra-
(mélység) parancsszó. Ha használjuk, akkor a verem tetejére míráskor bekerülnek a memóriába (bufferekbe), majd ké-
kerül a DEPTH végrehajtása előtti veremmélység. Ezután ez sőbb kiíródnak. Mindez láthatatlan a felhasználó számára.
az érték kiíratható a „.” operátorral. Ez szintén használható Amikor egy blokkot a BLOCK-kal el akarunk érni, akkor
összetettebb ciklusok ellenőrzésére. Ha a ciklusmélység esetleg már az előbbi műveletek miatt bent van memóriá-
meghalad egy irreális értéket (pl. 2000), akkor ezt a hibát ban. Ebben az esetben a memóriabufferek tartalma jelení-
egy adott programrésszel lekezeljük. Ez könnyen megvaló- tődik meg szerkesztésre. Ha a kért blokk nincs a memóri-
sítható egy feltételes vezérlésátadó (IF) utasítással. A jó prog- ában, akkor az egy üres bufferba másolódik. Amennyiben
ramozási módszerek elkerülik ezt a típusú problémát. már az összes buffer foglalt, akkor a legrégebben használt
visszakerül lemezre, és így felszabadul egy az új blokk szá-
1.8. Még egy szó a kiírásról mára.
Egy kazettás rendszerben, a blokkoknak mindenképp a
A bufferekben kell lenniük. A blokkok folyamatos mozgatá-
sa, a memória és a szalag közt hosszadalmas és kényel-
.” metlen lenne. Ha nincs elég memória a blokkoknak, hiba-
jelzést kapunk. A CREATE-BUFFERS hívás további helyeket
szó kiírja az utána megadott szöveget egészen a legkö- szabadít fel (lásd referencia rész).
zelebbi idézőjelig („) A záró idézőjelnek és a .” szónak egy
sorban kell lennie! A .” szó csak szódefinícióban alkalmaz- Az editor
va működik! Parancsmódban a .( szó használható. Két A programok szerkesztéséhez a beépített szövegszer-
egyszerű példa: kesztő használható. A szövegszerkesztőt az
: LOCSI-FECSI CR .” En vagyok az ENTERPRISE” CR ; EDIT ( n - - - - )
.( En vagyok az ENTERPRISE ) CR paranccsal indíthatjuk. Az n szám a szerkeszteni kívánt
kernyő sorszáma lesz. (Pl. 1 EDIT parancs kiadása után
Nem szabad elfeledkezni róla, hogy a .” és .( után szóközt az 1. kernyőt (blokkot) szerkeszthetjük.) A blokkok sor-
kell hagyni! Így jelezzük, hogy a .” és .( külön szó. A szóköz száma 1-től 32767-ig terjedhet. A szerkesztés közben a
nem számít bele a kiírandó szövegbe. szabványos Exos szerkesztő-funkciókat használhatjuk.

