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.
   16   17   18   19   20   21   22   23   24   25   26