1900 3ff1 0000 T ... F83 1.3 GLO 1

Glossarium des Z80 FORTH 83 der IG Forth


Der Aufbau einer Wortbeschreibung im Glossarium:
 

Wortname  --    M,  "aussprache"
  ausfuehrliche Beschreibung des Wortes Wortname

Dabei  bedeutet  Wortname  das jeweilige  FORTH-Wort  und 
"aussprache",  gibt  die  englische Sprechweise desselben  an,  wenn 
diese nicht aus dem Wort selbst hervorgeht. 

-- entspricht  der Stackbilanz des Wortes. 
 Links von  --
stehen  die Stackparameter (Angaben ueber den Stack) vor und
rechts nach Abarbeitung  des Wortes.  Dabei ist zu beachten, 
dass  auf  der  linken und rechten Seite von -- der am weitesten
rechts stehende  Wert die Datenstackspitze darstellt. 

Die jeweiligen Wortnamen sind durch Fettdruck hervorgehoben. Die
in den Erlaeuterungen der Worte ebenfalls durch Fettdruck her-
vorgehobenen  Woerter  verweisen auf  andere  Definitionen,  die
gleichfalls im Glossarium aufgefuehrt und beschrieben sind. 

Die letzte Positon der Kopfzeile gibt weitere Informationen
ueber die Worte:
I      Immediate-Wort
C      nur im Compilemode benutzen
E      nur im Executemode
M      diese Worte koennen Multitask-Applikationen beeinflussen.
U      User-Variable
Voc    Vokabular
Vec    Vektor, der auf andere Worte zeigen kann.

Fals das Wort nicht im Grundvokabular FORTH enthalten ist,
erfolgt die Angabe des entsprechenden Woerterbuches. 

Erlaeuterung der Stackparameter:

Stackab-   Zahlentyp            Zahlenbereich         min. Feld-
kuerzung                                             weite (Bit)
________________________________________________________________
                                                              
flag    Boolsche Groesse 0=falsch, sonst wahr      16
wahr    Boolsche Groesse -1 (als Ergebnis)         16
falsch  Boolsche Groesse 0                         16 
b       Bit              0 ... 1                    1
char    Zeichen          0 ... 127                  7

8b      8 beliebige Bits nicht angebbar             8  
        (Byte)
16b     16 beliebige Bits nicht angebbar            16
n       Zahl (gewichtete  -32768 ... 32767          16
        Bits)               
+n      positive Zahl     0 ... 32767               16
u       vorzeichenlose    0 ... 65535               16   
        Zahl
w       nichtspezifi-     -32768 ... 65535          16 
        zierte Zahl
        (n oder u)

adr     Adresse (gleich u) 0 ... 65535               16

32b     32 beliebige Bits nicht angebbar            32
        doppelt genaue     -2147483648 ...           32
        Zahl              2147483647
+d      positive doppelt  0 ... 2147483647          32
        genaue Zahl      
ud      vorzeichenlose    0 ... 4294967295          32
        doppelt genaue Zahl                             
wd      nichtspezifi-     -2147483648 ...           32
        zierte doppelt    4294967295
        genaue Zahl (d 
        oder u)

sys     0, 1 oder mehrere nicht angebbar          nicht 
        systemabhaengige                            angebbar
        Stackeintragungen            


!  16b adr --   "store"
   16b wird in adr abgespeichert

!CSP       --   "store-c-s-p"
   Mit  diesem  Befehl wird der Inhalt des Datenstackzeigers  in 
   CSP gerettet.  Er wird zur Erhoehung der Uebersetzungssicher-
   heit verwendet.

"          --
   Compiliert in :-Definitionen einen String ins Worterbuch mit 
   der Laufzeitroutine (").  Waehrend Runtime werden Adresse und 
   Laenge des Strings auf den Stack hinterlegt.

#      +d1 -- +d2  "sharp"
   Ausgabekonvertierungsschritt  (+d1 /  Zahlenbasis),  Ergebnis 
   +d2;  aus Divisionsrest generiertes Zeichen wird vor dem  er-
   sten Zeichen der Ausgabekette angefuegt.

#> 32b -- adr +n "sharp-greater"
   Beendigung  der Ausgabekonvertierung,  Entfernen des 32b-Wer-

   tes. adr ist Adresse, +n Laenge der Zeichenkette (Format fuer 
   TYPE).

#LINE  -- adr U       "sharp-line"
   Ist  eine  System-Variable.  Der Inhalt der  Adresse  (adr) 
   entspricht  der Anzahl der CR,  die seit dem letzten Rueck-

   setzen ausgesandt wurden.

#OUT       -- adr U
   Ist eine Systemvariable,  die einen Wert enthaelt,  der durch    
   EMIT inkrementiert wird.  Der Benutzer kann #OUT auslesen oder    
   veraendern, um die Display-Formatierung zu steuern. 

#S      +d -- 0 0  "sharp-s"
   Folge  von  Konvertierungsschritten an  +d,  Generierung  der
   Ausgabezeichenkette  so lange,  bis bei #-Teilschritt 0
   entsteht.  Fuer  +d  = 0 Uebernahme einer einzelnen 0 in 
   Ausgabezeichenkette. Vgl. <# #>

#TIB       -- adr "number-t-i-b"
   Adresse der Variablen,  die die aktuelle Byteanzahl im  Text-
   eingabepuffer  enthaelt.  

#THREADS   -- n  "sharp-threads"
   Ist eine System-Konstante (Anzahl der Hash-Faeden). Vgl. HASH

#USER      -- addr
   Systemvariable,  die  den Offset zum ersten unbelegten Feld im 
   USER-Area enthaelt. Sie wird bei Definition von USER-Variablen 
   und -Vektoren automatisch nachgestellt.

#VOCS      -- n  "sharp-vocs"
   Ist  eine System-Konstante,  maximale Anzahl der  Woerterbue-
   cher,  die  durch CONTEXT in der Reihenfolge  festgelegt  und 
   durchsucht werden (siehe auch ORDER).

'          -- adr M,  "tick"
   Mit  '  Wortname   wird  die  Compilationsadresse  (CFA)   von 
   Wortname  ermittelt.  Fehler:  Wortname kann in der  aktuellen 
   Suchreihenfolge nicht gefunden werden.

'RAM     n -- adr
   Vok.: I/O
   rechnet  die Blocknummer n in die Adresse des Blockes in  der 
   RAM-Disk um. Prueft dabei, ob der Block ueberhaupt verfuegbar 
   ist; sonst ABORT.

'TIB       -- adr   "tick-t-i-b"
   Ist  eine  Variable,  welche die Anfangsadresse des TIB  ent-
   haelt.  Durch Aenderung des Inhalts von 'TIB kann der  Anfang 
   des TIB beliebig veraendert werden.
 
(          -- I, M, "paren"
   Kommentarzeichen.  Mit ( ccc) wird der Kommentar ccc einge-
   geben,  Abschluss durch ).  Keine Verarbeitung von ccc; Das 
   Leerzeichen nach ( zaehlt nicht zum Text.  


(.)      n -- a c
   Ist die Kern-Routine von .,  Konvertierung von n als String 
   in PAD.

(.")       --
   Vok.: HIDDEN
   Die  durch ." compilierte Laufzeit-Routine,  uebertraegt  den 
   nachfolgenden Text bis " auf die Konsole.

(")        -- a c
   Vok.: HIDDEN
   Die  durch  "  compilierte  Laufzeit-Routine,  hinterlaeszt 
   Adresse und Count des folgenden Textes auf dem Datenstack.

(+LOOP)  n --
   Vok.: HIDDEN
   Ist die Laufzeit-Routine von +LOOP (siehe dort).
     
(;CODE)    --
   Vok.: HIDDEN
   Ist  die  durch ;CODE (siehe dort) compilierte  Laufzeit-Rou-
   tine.

(;USES)    --
   Vok.: HIDDEN
   Ist  die  durch  ;USES (siehe  dort)  complilierte  Laufzeit-
   Routine.
 
(?DO)  n1 n2 --
   Vok.: HIDDEN
   Ist die Laufzeit-Routine von ?DO. 
   Sind beide Zahlen gleich, so wird die Schleife uebersprungen.
   Im anderen Fall beinhaltet sie die gleiche Funktion wie (DO)

(?LEAVE) flag --
   Vok.: HIDDEN
   Ist die Laufzeit-Routine von ?LEAVE.

(ABORT") flag --
   Vok.: HIDDEN
   Ist die Laufzeit-Routine von ABORT" (siehe dort).

(CONSOLE)   c --      I/O
   Vok. I/O
   gibt das Zeichen c nur auf dem Bildschirm aus.

(D.)        d -- a c
   Ist  die  Kern-Routine von D..Konvertierung von d in  einen 
   String in PAD.

(DO)    w1 w2 --
   Vok.: HIDDEN
   Ist die Laufzeit-Routine von DO (siehe dort).

(EMIT)      c --      I/O
   Vok.: I/O
   gibt  Zeichen auf Bildschirm und bei PRINTING ON auch auf dem
   Drucker aus. Standartvoreinstellung fuer EMIT.

(FIND)   adr1 -- adr2 flag
   Vok.: HIDDEN
   Ist die Laufzeit-Routine von FIND (siehe dort).

(FORGET)  adr --
   Vok.: HIDDEN
   Vergisst Teil des Woerterbuches ab spezifizierter Adresse.

(IS)      adr --   (comp.Mod.)
   Ist die Laufzeit-Routine von IS (siehe dort).
   Schreibt  die cfa des folgenden DEFER-ierten  Wortes  (Vector) 
   in die Adresse (adr).

(LEAVE)       --
   Vok.: HIDDEN
   Ist die Laufzeit-Routine  von LEAVE (siehe dort).

(LIT)       n --
   Vok.: HIDDEN
   Wird  innerhalb  einer Doppelpunktdefinition automatisch  vor
   jede 16-Bit-Zahl n,  die im Eingabetext bereitgestellt  wird, 
   compiliert. Bei der Ausfuehrung von (LIT) wird der Inhalt der
   auf  (LIT)  folgenden Woerterbuchadresse auf  den  Datenstack 
   gelegt.
  
(LOOP)        --
   Vok.: HIDDEN
   Ist die Laufzeit-Routine von LOOP (siehe dort).

(KEY)         -- c     I/O
   Vok.: I/O
   holt  ein  Zeichen von der  Tastatur. Standartvoreinstellung
   fuer KEY.  
(KEY?)        -- f     I/O
   Vok.: I/O
   Prueft  den  Status der Tastatur.  f=TRUE,  wenn  eine  Taste
   gedrueckt war.  Standartvoreinstellung fuer KEY?.

(NUMBER?) adr -- d f
   Vok.: HIDDEN
   wandelt  einen  Zifferstring in adr+1 in  eine  doppeltgenaue
   Integer-Zahl, die ein fuehrendes Minuszeichen haben darf. Der
   String  muss  mit BL abgeschlossen  sein.  Als  Decimalpunkt,
   dessen Position in DPL uebergeben wird, gelten: .-,/
   Das Flag teilt mit, ob eine konvertierbare Zahl vorlag.

(PRINT)     c --       I/O
   Vok.: I/O
   gibt das Zeichen nur auf den Drucker aus.

(U.)        u -- a c
   Ist die Kern-Routine von U..  Konvertiert u in einen String  in 
   PAD.

*       w1 w2 -- w3   "star"
   w3 = niederwertige 16 Bit des arithmetischen Produkts w1 * w2 

*/ n1 n2 n3 -- n4 "times-divide"
   Berechnung  (n1 * n2) mit 32-Bit-Ergebnis,  anschl.  Division 
   durch  n3 .  n4 ist der Quotient entsprechend  den  Rundungs-
   regeln.  Fehler:  Division  durch  0 oder n4  ausserhalb  des
   Bereichs -32768...+32767.

*/MOD n1 n2 n3 -- n4 n5
                                              "times-divide-mod"
   Funktion  wie bei */,  jedoch zusaetzlich Uebergabe des Divi-
   sionsrests n5 (gleiches Vorzeichen wie n4 bzw. gleich 0).

*D       n1 n2 -- d   "star-d"
   Multipliziert zwei 16-bit-Zahlen (n1 und n2) und hinterlaesst 
   auf dem Datenstack eine 32-bit-Zahl (d).

+        w1 w2 -- w3
   w3 ist die arithmetische Summe w1 + w2.

+!      w1 adr --  "plus-store"
   w1  wird  zum Wert w in <adr> addiert Vgl.  +  ),  die  Summe 
   ersetzt w in <adr>.