Glossar

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:

Stackabkuerzung Zahlentyp Zahlenbereich min. Feldweite (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 (Byte) nicht angebbar 8
16b 16 beliebige Bits nicht angebbar 16
n Zahl (gewichtete Bits) -32768 … 32767 16
+n positive Zahl 0 … 32767 16
u vorzeichenlose Zahl 0 … 65535 16
w nichtspezifizierte Zahl (n oder u) -32768 … 65535 16
adr Adresse (gleich u) 0 … 65535 16
32b 32 beliebige Bits nicht angebbar 32
d doppelt genaue Zahl -2147483648 … 2147483647 32
+d positive doppelt genaue Zahl 0 … 2147483647 32
ud vorzeichenlose doppelt genaue Zahl 0 … 4294967295 32
wd nichtspezifizierte doppelt genaue Zahl (d oder u) -2147483648 … 4294967295 32
sys 0, 1 oder mehrere systemabhaengige Stackeintragungen nicht angebbar nicht angebbar
!  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>.

+LOOP    n --  C, I, "plus-loop"
                    sys --    (comp.Mod.)
   n  wird  zum Schleifenindex  addiert.  Schleifenabbruch  (mit 
   Beseitigung der Schleifenparameter auf dem Returnstack), wenn
   Index  die Grenze zwischen  Limit - 1 und Limit  ueberschrei-
   tet,  sonst Fortsetzung der Schleife hinter DO.  sys wird mit
   DO ausbalanciert. Vgl. DO

,      16b --         "comma"
   Reserviere Platz fuer 16 Bit,  dann speichere 16b in  Adresse 
   HERE 2-.

,"         --
   Vok.: HIDDEN
   Fuegt den folgenden Text bis " ins Woerterbuch ein.

-    w1 w2 -- w3      "minus"
   w3 ist das Subtraktionsergebnis w1 - w2.

-->      --   I, M, "next-block"
   Fortsetzung  der Interpretation auf naechst-folgendem  Block. 
   Verwendung  in Doppelpuntdefinitionen,  die eine  Blockgrenze 
   ueberschreiten.

-ROT 16b1 16b2 16b3 -- 16b3 16b1 16b2  "minus-rote" 
   Die  3  obersten Stackeintraege werden rotiert,  der  Oberste 
   gelangt an die 3. Stackposition. 

-TRAILING  adr +n1 -- adr +n2  "dash-trailing"
   Der  Zeichenzaehler der ab adr stehenden Zeichenkette wird so 
   korrigiert,  dass nachfolgende Leerzeichen unterdrueckt  wer-
   den.  +n2  = 0,  falls +n1 = 0 oder wenn die Zeichenkette nur 
   Leerzeichen enthaelt.

.      n --   M,  "dot"
   Formatfreie und vorzeichenbehaftete Ausgabe von n.

."       --   C, I, "dot-quote"
   Zeichenkette ccc in ."ccc" wird compiliert und bei spaeterer 
   Ausfuehrung ausgegeben.  Abschluss durch ".  Das  Leerzeichen 
   nach ." gehoert nicht zum Text.

.(       --   I, M,  "dot-paren"
   Zeichenkette ccc in .( ccc) wird bis ) ausgegeben.  Das Leer-
   zeichen nach .( gehoert nicht zum Text.

.2     n --
   Druckt n zweistellig ohne Vorzeichen.
  
.ID  adr --      "dot-id"
   Gibt den Definitionsnamen der Namensfeldadresse adr  aus.

.R  n +n --   M, "dot-r"
   Konvertierung  von  n bezueglich der  aktuellen  Zahlenbasis, 
   rechtsbuendige  Ausgabe in einem gedachten Feld der Weite  +n 
   mit vorangestelltem '-' fuer negatives n. 

.S       --      "dot-s"
   Anzeige des Inhaltes des Datenstacks (zerstoerungsfrei).

.VERSION    --
   Druckt Versionsbezeichnung des Systems aus.
 
/     n1 n2 -- n3    "divide"
   n3  ist der gerundete Wert des Quotienten (n1 / n2).  Fehler: 
   Division durch 0 oder Quotient ausserhalb des Bereichs -32768 
   ... 32767. 
   Vgl "Division mit Rundung" in Anlage Definitionen

/LINE       -- n      "per-line"
   Konstante  haelt  die  Anzahl der  je  Dumpzeile  ausgegebenen 
   Bytes.    Damit    ist   eine leichte Anpassung an das
   Bildschirmformat moeglich. s. DUMP


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


/STRING   adr1 n1 n3 -- adr2 n2   "up-string" 
   Liefert  Adresse  adr2 und die Laenge n2 des noch  zu  durch-   
   suchenden  Eingabestromes  (adr1  Quelladresse,  n1  maximale    
   Laenge, n3 schon durchsuchte Zeichen).  

0        -- n
   Ist eine System-Konstante mit dem Wert n=0.

0<     n -- flag  "zero-less"
   Flag ist wahr, falls n negativ ist, d.h. n < 0.

0=     w -- flag "zero-equals"
   Flag ist wahr, falls w = 0. 

0>     n -- flag "zero-greater"
   Flag ist wahr, falls n nicht negativ ist, d.h.  n > 0.


1         -- n
   Ist eine System-Konstante mit dem Wert n=1.

1+     w1 -- w2   "one-plus"
   w2  ist  das Ergebnis der Addition  w1+1  entsprechend  der 
   Operation +.


1-     w1 -- w2   "one-minus"
   w2  ist das Ergebnis der Subtraktion w1 - 1 entsprechend  der 
   Operation -.

2         -- n
   Ist eine System-Konstante mit dem Wert n=2.

2!  32b adr --    "two-store"
   32b wird ab adr abgespeichert. Vgl. "Zahlen"

2+     w1 -- w2   "two-plus"
   w2  ist  das  Ergebnis der Addition w1 + 2  entsprechend  der 
   Operation +.

2-     w1 -- w2   "two-minus"
   w2  ist das Ergebnis der Subtraktion w1 - 2 entsprechend  der 
   Operation -.

2*     w1 -- w2   "two-times"
   w2  ist das Ergebnis der arithmetischen Linksverschiebung von 
   w1  um  1 Bit.  In die frei werdende Bitposition wird  0 ge-
   schrieben.

2/     n1 -- n2   "two-divide"
   n2 ist das Ergebnis der arithmetischen Rechtsverschiebung von 
   n1  um  1 Bit.  Das Vorzeichen wird mit verschoben und  nicht 
   veraendert.

2@    adr -- 32b  "two-at"
   32b ist das Bitmuster ab adr. 

2CONSTANT 32b --   M, "two-constant"
   Definitionswort  fuer  32b  Konstanten.  Bei  Ausfuehrung  von 
   Wortname wird 32b auf dem Stack abgelegt.

2DROP  32b --     "two-drop"
   32b wird vom Stack entfernt.

2DUP   32b -- 32b 32b  "two-dup"
   Duplizieren von 32b

2OVER  32b1 32b2 -- 32b1 32b2 32b3  "two-over"
   32b3 ist eine Kopie von 32b1.

2ROT   32b1 32b2 32b3 -- 32b2 32b3 32b1 "two-rote"
   Die 3 obersten 32-Bit-Eintraege auf dem Stack werden rotiert, 
   der drittoberste Eintrag gelangt an die Spitze.   

2SWAP  32b1 32b2 -- 32b2 32b1      "two-swap"
   Die  2  obersten 32-Bit-Eintraege auf dem Stack  werden  ver-
   tauscht.

2VARIABLE  --  M, "two-variable"
   Definitionswort  fuer 32-Bit-Variablen:  2VARIABLE Wortname  . 
   Zuweisung  von  4 Byte im Parameterfeld zur Abspeicherung  des 
   Variableninhalts.   Bei  Ausfuehrung  von  Wortname  wird  die 
   Parameterfeldadresse auf dem Stack abgelegt.

3        -- n
   Ist ein System-Konstante mit dem Wert n=3.


:        --  M, "colon"
   Definitionswort,  mit dem durch :Wortname...; ein  Eintrag 
   (Doppelpunktdefinition)  im Compilationswoerterbuch  erfolgt; 
   anschl.  Einschalten  des compilierenden Modus (nachfolgender 
   Text  wird  compiliert).  Das Wort Wortname  kann  erst  nach 
   Abschluss  der  Definition  mit ; oder ;CODE  im  Woerterbuch 
   gefunden werden.

;        --  C, I, "semi-colon"
                        --    (comp.Mod.)
   Beendigung der Compilation einer Doppelpunktdefinition Wortname 
   ,  Einschalten des ausfuehrenden Modus,  Compilation von EXIT . 
   Wortname kann nun im Woerterbuch gefunden werden. Vgl EXIT :

;CODE    --  C, I, "semi-colon-code"
                        --         (comp.Mod.)
   Wird in folgender Form verwendet: 
   Wortnamex...<create>...;CODE ... END-CODE
   Beendet die Compilation,  schliesst das Definitionswort Wort-
   namex ab und fuehrt ASSEMBLER aus.  Nachfolgende Zeichenfolge 
   wird  in Maschinencode uebersetzt.  Bei Ausfuehrung von Wort-
   namex Wortname wird Wortname definiert.  Dieses Wort enthaelt 
   als Ausfuehrungsadresse die Adresse der Kodesequenz,  die auf 
   ;CODE in Wortnamex folgt,  so dass spaeter dieser  Maschinen-
   kode  ausgefuehrt wird.  

;USES    --  I,C,Def,
   Wird folgendermaszen verwendet:
   : name ... <create> ... ;USES label ,
   Beendet  die  Compilation.  Bei  Ausfuehrung des  mit  <name>
   angelegten  Wortes  wird  die  Codesequenz  auf  der  Adresse 
   <label> zur Ausfuehrung gebracht. s. ;CODE

<  n1 n2 -- flag  "less"
   flag  ist wahr fuer n1 < n2.  -32768 32767 < und  -32768 0  < 
   muss jeweils wahr ergeben.

<#       --       "less-sharp"
   Initialisierung der Ausgabekonvertierung einer 32-Bit-Zahl in 
   ASCII-Darstellung mit # #> #S <# HOLD SIGN. 

<MARK	 -- adr   C, "backward-mark"
   Verwendung  am Zielpunkt eines Rueckwaertssprungs.  adr  wird 
   typisch  nur  von <RESOLVE fuer die Compilation  der  Sprung-
   adresse verwendet.   

<RESOLVE adr --  C, "backward-resolve"
   Verwendung  am Ausgangspunkt eines Rueckwaertssprungs  hinter 
   BRANCH  oder ?BRANCH.  Compilation einer Sprungadresse  unter 
   Verwendung der Zieladresse adr.

=      w1 w2 -- flag "equals"
   Flag ist wahr fuer w1 = w2.

>      w1 w2 -- flag "greater-than"
   Flag  ist wahr fuer n1 > n2 .  -32768 32767 > und -32768 0  > 
   muss jeweils falsch ergeben.

>BODY    cfa -- pfa  "to-body"
   die  Parameterfeldadresse des Wortes wird aus dessen 
   Codefeldadresse ermittelt.

>DOES        -- n
   Ist   eine  System-Konstante.   Entspricht  der  Adresse   der 
   Laufzeit-Routine von DOES>.

>IN          -- adr  U,  "to-in"
   Adresse  einer Variablen,  die den aktuellen Zeichenoffset im 
   Eingabestrom enthaelt. Vgl WORD

>IS     adr1 -- adr2   "to-is"
   Teilt einem Kode-Feld (adr1)  ein Daten-Feld (adr2) zu.  Wenn 
   sich  das Wort im Nutzerbereich der Worte  (words)  befindet, 
   muss   die  Datenadresse (adr2) relativ  zum  CURRENT-Nutzer-
   Zeiger  berechnet  werden.  Andernfalls ist adr1  sofort  das 
   Parameterfeld.

>LINK    cfa -- lfa   "to-link"
   Ausgehend von der cfa eines Wortes wird die lfa berechnet.

>MARK  -- adr  C, "forward-mark"
   Verwendung am Ausgangspunkt eines  Vorwaertssprungs, und zwar 
   meist  hinter BRANCH oder ?BRANCH.  Compiliert Platz im Woer-
   terbuch  fuer eine Sprungadresse,  die spaeter  von  >RESOLVE 
   aufgeloest wird.

>NAME    cfa -- nfa  "to-name"
   Ausgehend von der cfa eines Wortes wird die nfa berechnet.

>NEXT        -- adr
   Ist  eine Konstante.  adr entspricht der Adresse des  inneren 
   Interpreters.

>R       16b --    C, "to-r"
   Transfer von 16b zum Returnstack. Vgl. "Returnstack"

>RESOLVE adr -- C, "forward-resolve"
   Verwendung  am Zielpunkt eines   Vorwaertssprungs.  Berechnet 
   die  Adresse eines Sprungs zur aktuellen  Woerterbuchposition 
   unter  Verwendung  von adr,  traegt diese Adresse in den  von 
   >MARK freigelassenen Platz ein. . 

>TYPE  adr n -- M
   s.  TYPE,  jedoch  wird  vor dem Drucken der String nach  PAD 
   transportiert. Ermoeglicht Multitaskarbeit mit Blockinhalten.

      
?       adr --       "question"
   Druckt  den Inhalt der Adresse adr aus (in freiem Format 
   und in Uebereinstimmung mit der aktuellen Zahlenbasis).

?BRANCH  flag --   C, "question branch"
   Compilation eines bedingten  Sprungs, der
   ausgefuehrt wird, wenn flag falsch ist, ansonsten Fortsetzung
   der Abarbeitung auf der Compilationsadresse,  die der Sprung-
   adresse folgt. Vgl BRANCH

?CONDITION n1 n2 --            
   Erzeugt  eine  Fehlermeldung  falls n1  ungleich  n2  ist.
   Die  Meldung  zeigt  an, dass  die Compilationsbedingungen
   nicht eingehalten wurden.

?CSP             --                      
   Erzeugt  eine Fehlermeldung wenn die Stackposition (Inhalt 
   von  SP) sich von dem in CSP geretteten Wert unterscheidet.

?DNEGATE   d1 d2 -- d3
                 -- d1
   Negiert die vorzeichenbehaftete Doppelzahl d1, falls d2
   negativ  ist  (d2 kann z.B.  auch das Duplikat von d1 sein)
   und hinterlaesst sie als d2 auf dem Datenstack, andernfalls
   wird der Wert d1 beibehalten.
                             
?DO        w1 w2 --
   Testet,  ob w1=w2.  Ist dies der Fall,  wird hinter LOOP bzw. 
   +LOOP gesprungen. Ansonsten Abarbeitung wie DO.

?DUP  16b -- 16b 16b  "question-dupe"
 oder   0 -- 16b, falls 16b =| 0 ist.


?ENOUGH       +n --
   Gibt eine Fehlermeldung aus, wenn nicht genug Werte (+n ist
   die Anzahl) auf dem Datenstack vorhanden sind.  Wird z.B. am
   Anfang  eines Programms zur Stackkontrolle benutzt.

?ERROR   adr n f --       
   Fuehrt  bei wahrem Flag zur Ausgabe des Strings auf  adr 
   als  Fehlermeldung und Abbruch nach QUIT.

?LEAVE      flag --
   bedingter vorzeitiger Abbruch einer DO...LOOP(bzw....+LOOP)
   -Schleife (siehe auch LEAVE).
   Anwendung: DO...?LEAVE...LOOP (bzw. ...+LOOP) 

?LINE         +n --
   Kontrolliert  bei Ausgabe einer Zeile mit +n  Zeichen,  ob 
   das Zeilenende erreicht wird. Wenn dies der Fall ist,  wird
   vorher  CR (carriage return) ausgefuehrt.

?MISSING    flag --
   Erzeugt eine Fehlermeldung,  wenn das Flag flag wahr ist,
   d.h.  z.B. das Wort  Wortname unbekannt ist.

?NEGATE    n1 n2 -- n3                            
                 -- n1 
   Ist die Zahl n2 negativ,  wird die Zahl n1 negiert und als n3
   auf den Datenstack gelegt.  (n2 kann z.B.  auch das Duplikat
   von  n1 sein),  andernfalls bleibt die Zahl n1 in ihrer  Form    
   erhalten.                   

?STACK           --                 
   Erzeugt  eine Fehlermeldung,  wenn der Stackpointer ausser-
   halb der  vorgegebenen Grenzen liegt.  

@            adr -- 16b   "at"
   16b ist das Bitmuster auf der Adresse adr.

ABORT
   Datenstack  saeubern,  keine Ausgabe einer Nachricht und
   Ausfuehrung von QUIT.

ABORT"   flag --   C, I, "abort-quote"
              --     (comp.Mod.)
   Mit  ABORT" ccc" wird ccc ausgegeben und  ABORT  ausgefuehrt,
   falls das Flag wahr ist,  ansonsten wird die normale Abarbei-
   tung  fortgesetzt.  Das Leerzeichen nach ABORT" gehoert
   nicht zur Zeichenkette ccc.

ABS         n -- u   "absolute"
   u  ist der absolute Betrag von n.  ABS -32768 ergibt  -32768. 

AGAIN         --    C, I
          sys --   (comp.Mod.)
   Ausfuehrung  eines unbedingten Ruecksprungs zum Anfang  einer
   BEGIN...AGAIN  - Schleife.  sys wird mit BEGIN ausbalanciert. 
   Vgl. BEGIN

ALLOT       w --                    
   Belegung  von w Byte Speicherplatz im Woerterbuch.

ALLOT       n --    U
   Vok.: USER 
   Reserviert  n  Byte  im USER-Area. Zusammen mit  USER  CREATE
   benutzt koennen Felder im USER-Area angelegt werden.  

ALSO          --    Voc
   Vok.: ROOT
   Fuegt   ein  weiteres  Vocabular  in  die  z.   Z.   gueltige
   Suchreihenfolge ein.
   ONLY voc#1 ALSO voc#2
   macht  das  Vokabular #1 in  der  Suchordnung  resident.  Die
   Durchsuchung  des Woerterbuches beginnt mit Vokabular #2  und
   wird  mit #1 und ROOT fortgesetzt.  Es koennen maximal  #VOCS
   (  hier  8  ) Vokabulare durch mehrfache Anwendung  von  ALSO
   nacheinander durchsucht werden.

AND 16b1 16b2 -- 16b3                
   Bitweise logische UND-Verknuepfung von 16b1 und 16b2 zu 16b3.

ASCII   -- char  I, M  "as-key"
                        --   (comp.Mod.)
   Mit ASCII ccc wird der ASCII des ersten Zeichens von ccc 
   auf dem Stack eingetragen (ausfuehrender Modus) oder ins
   Woerterbuch als Literal compiliert (compilierender Modus).

ASSEMBLER      --    Voc,   
   Das  erste Woerterbuch in der Suchreihenfolge wird durch
   ASSEMBLER ersetzt. Das ASSEMBLER-Vokabular enthaelt im Grund-
   zustand nur das Wort END-CODE. Weiterhin ist es zur Aufnahme
   des FORTH-Assembler-Wortschatzes vorgesehen,  der  nachgeladen 
   werden kann.

AVOC           -- adr   "a-voc"
   Ist eine Variable.  Wird systemintern  zur  Umschaltung  auf
   ASSEMBLER verwendet.

B/BUF   -- +n  "bytes-per-buffer"
   Ist  eine  Konstante und entspricht der Anzahl der  Bytes  je
   Blockpuffer.

BASE           -- adr  U,   
   Adresse  einer Variablen,  die die Zahlenbasis fuer  Eingabe-
   und Ausgabekonvertierungen enthaelt. Zahlenbasis: 2...72

BEGIN     --    C, I,   
          -- sys     (comp.Mod.)
   Eroeffnung einer Strukturierungssequenz: BEGIN ...flag UNTIL.
   Wird abgearbeitet,  bis flag wahr ist;
   BEGIN...flag  WHILE...REPEAT wird abgearbeitet, bis flag
   falsch ist. sys wird mit UNTIL bzw. WHILE ausbalanciert. 

BELL           -- n   M
   Konstante, deren Ausgabe ein akustisches Zeichen hervorruft.

BETWEEN  n3 n2 n1 -- flag
   Der  Vergleich der 16-Bit-Zahl n3 mit dem Minimum n2 und  dem
   Maximum n1 wird ausgewertet.  Liegt n3 ausserhalb dem Bereich
   von n1 und n2, ist Flag wahr andernfalls falsch.

BL             -- 32    "b-l"
   Uebergabe des ASCII-Code fuer ein Leerzeichen.

BLANK      adr u --                    
   u Speicherbytes ab adr werden mit Leerzeichen gefuellt, falls 
   u > 0. 

BLK          -- adr U,  "b-l-k"
   Adresse  der  Variablen,  die die Nummer des Massenspeicher-
   blocks enthaelt,  der  als Eingabestrom  interpretiert  wird
   (Nummer  = 0 impliziert Eingabestrom vom Texteingabepuffer).

BLK#      -- adr 
   Vok.: HIDDEN
   Variable, die die Nummer des Blockes im Blockpuffer enthaelt.
   Der Blockpuffer  beinhaltet  nur einen Block,  da  dies  bei
   Arbeit mit einer RAM-Disk ausreichend ist.
   
BLOCK   u -- adr   M,   
   adr zeigt auf erstes Byte in Block u im  Blockpuffer.  Steht
   darin zunaechst ein anderer Block, so wird Block u eingeles-
   en. Der alte Blockinhalt wird zuvor zurueckgschrieben, falls
   dieser als aktualisiert gekennzeichnet ist. Nur Dateninhalte,
   die zuletzt mit BLOCK oder BUFFER angesprochen  wurden, sind 
   gueltig.

BODY>  pfa -- cfa   "from-body"
   Ausgehend von der pfa eines Wortes wird die cfa berechnet.

BOOT       --     Vec
   erstes Wort beim Kaltstart.  Fuehrt alle  Nutzerspezifischen
   Initialisierungen  aus. Da  es ein Vector  ist,  kann  seine
   Funktion  jederzeit  geaendert  werden,  z.B. um  Turn-Key-
   Applikationen zu erstellen.

BRANCH     --     C,
   Vok.: HIDDEN
   In  COMPILE BRANCH Compilation eines unbedingten Sprungs  mit
   nachfolgender   Sprungadresse,  die meist von <RESOLVE oder 
   >MARK aufgeloest wird.

BS         -- n
   Konstante, die den Wert 8 fuer Backspace liefert.

BUFFER   u -- adr  M,   
   Zuweisung eines Blockpuffers zu Block u . Diese Funktion ist 
   vollstaendig mit BLOCK spezifiziert, es sei denn, der Block 
   befindet sich noch nicht im Puffer. Dann wird der  Block  n
   nicht vom Massenspeicher gelesen. Der Inhalt eines mit BUFFER
   ausgewaehlten Blockpuffers ist noch unbestimmt.

BYE        --
   Bewirkt das Verlassen des FORTH-Systems.  Rueckkehr in  den 
   Monitor. Vorher werden alle Blockpuffer gerettet.


C!  16b adr --     "c-store"
   Die  niederwertigen  8  Bits von 16b werden im Byte  auf  adr 
   abgespeichert.


C,      16b --     "c-comma"
   Zuweisung von  1 Byte Speicherplatz im  Woerterbuch,  danach 
   Abspeicherung  der niederwertigen 8 Bit von 16b  auf  Adresse 
   HERE - 1.

C/L    -- n "character-per-line"
   Entspricht der Anzahl der Zeichen pro Screen-Zeile.

C@      adr -- 8b       "c-at"
   8b ist der Inhalt des Bytes auf adr .

CMOVE   adr1 adr2 u --  "c-move"
   Transfer  von u Bytes ab adr1 in Bereich ab adr2.  Das  erste 
   Byte wird zuerst transferiert (Vorwaertstransfer). Transfer
   erfolgt nur, wenn u ungleich 0 .

CMOVE> adr1 adr2 u -- "c-move-up"
   Transfer von u Bytes ab adr1 nach adr2.  Transfer beginnt  am 
   Ende bei adr1 + u - 1 (Rueckwaertstransfer).

CODE         --      M,   
   Definitionwort  fuer Woerterbucheintraege, deren Funktionsum-
   fang durch Assemblertext beschrieben wird (Codedefinitionen):
   CODE Wortname ... END-CODE.  Vor Abschluss der Definition mit
   END-CODE kann Wortname nicht aufgefunden werden. 

COLD         --             
   Das  FORTH-System und wird schrittweise  initialisiert  und 
   laeuft ueber BOOT nach ABORT,  wo die restliche Initialisier-
   ung erfolgt, in den Textinterpreter.    

COMPARE  adr1 adr2 +n -- flag
   Fuehrt einen Zeichenkettenvergleich durch (Zeichenkette1  ab
   adr1 und Zeichenkette2 ab adr2 mit der Laenge +n). 
   Sind die beiden Zeichenketten:
      Zeichenkette1 = Zeichenkette2 ==> flag:=0
      Zeichenkette1 < Zeichenkette2 ==> flag:=-1
      Zeichenkette1 > Zeichenkette2 ==> flag:=1
   Alle Vergleiche sind relativ zur ASCII-Ordnung.

COMPILE        --     C,   
   Typisch  verwendet in:Wortname...COMPILE Wortnamex...;.
   Bei Ausfuehrung von Wortname wird die Compilationsadresse von  
   Wortnamex nicht ausgefuehrt, sondern compiliert. 

CONSTANT   16b --     M,   
   Definitionswort fuer Konstanten: 16b CONSTANT Wortname . Bei
   spaeterer Ausfuehrung von Wortname wird 16b  auf  dem  Stack 
   uebergeben.

CONTEXT        -- adr    U,   
   Adresse  des  Feldes,  das die Suchreihenfolge im  Woerterbuch 
   festlegt. s.ORDER ALSO

CONTROL        -- n
   Ermittlung des Kodes n der "Control-Tasten"-Belegung.
   s. auch ASCII

CONVERT  +d1 adr1 -- +d2 adr2           
   Eingabekonvertierung  einer  FORTH-Zeichenkette  (Laengenbyte 
   auf  adr,  Zeichenkette ab adr + 1) mit Startwert +d1 in  32-
   Bit-Zahl  +d2.  Die  Adresse des ersten  nichtkonvertierbaren 
   Zeichens ist adr2.

COPY     n1 n2 --
   kopiert Block n1 in RAM-Disk nach n2.
      
COUNT     adr1 -- adr2 +n            
   Ermittlung  von Anfangsadresse adr2 und Laenge  +n  (0...255) 
   einer FORTH-Zeichenkette ab adr1.

CR             --   M, Vec "c-r"
   Loest einen Zeilenvorschub auf dem Ausgabegeraet aus, loescht 
   #OUT und erhoeht #LINE um eins.

CRASH          --
   Bewirkt die Ausgabe einer  Systemmitteilung:  (no  execution 
   vector), wenn Vektor noch nicht initialisert wurde.

CREATE         --    M,   
   Definitionswort.  CREATE  Wortname richtet Woerterbucheintrag 
   ein. Die  darauf folgende freie Adresse im Speicher ist  die 
   Parameterfeldadresse.  Bei Ausfuehrung von Wortname Uebergabe 
   dieser Adresse auf dem Datenstack, d.h. keine Reservierung
   von Speicherplatz im Parameterfeld.

CREATE         --   Vok.: USER
   Definiert ein Wort,  welches die Adresse des naechsten freien 
   Eintrages im USER-Area uebergibt. s. USER

CRESET            w adr -- 
   Logische Verknuepfung des Inhaltes von adr.  mit der Maske w 
   nach der Gleichung: <adr>:= /w AND <adr>

CRLF          --  I/O  
   Vok.: I/O
   gibt Hex 0D und 0A aus. Incrementiert den Zeilenzaehler #LINE 
   und loescht den Spaltenzaehler  #OUT.  Standartvoreinstellung 
   fuer CR.

CSET     w adr -- 
   Logische  Verknuepfung des Inhaltes von adr mit der  Maske  w 
   nach der Gleichung:   <adr>:=  w OR <adr>

CSP            -- adr
   Ist  eine System-Variable.  Sie dient zur Sicherung des  beim 
   Aufruf  gerade  aktuellen Stackpointers.  Der Inhalt von  adr 
   wird am Ende des Compilationsvorganges fuer einen  Fehlertest 
   benoetigt.

CTOGGLE  w adr -- 
   Logische Verknuepfung des Inhaltes von adr mit der Maske w 
   nach der Gleichung:
      <adr>:=  w XOR <adr>

CURRENT        -- adr   U,   
   Adresse der Variablen, die das Compilationswoerterbuch
   spezifiziert.

D+     wd1 wd2 -- wd3  "d-plus"
   wd3 ist die arithmetische Summe wd1 + wd2.

D-     wd1 wd2 -- wd3  "d-minus"
   wd3 ist das Ergebnis der Subtraktion wd1 - wd2 .

D.           d --   M, "d-dot"
   Formatfreie Ausgabe des Betrags von d mit vorangestelltem '-' 
   fuer negatives d. 

D.R       d +n --   M, "d-dot-r"
   Konvertierung  von  d bezueglich der  aktuellen  Zahlenbasis, 
   rechtsbuendige  Ausgabe in einem gedachten Feld der Weite  +n 
   mit vorangestelltem '-' fuer negatives d.  

D0=  wd -- flag "d-zero-equals"
   flag ist wahr, falls wd = 0.

D2/   d1 -- d2   "d-two-divide"
   d2 ist das Ergebnis der arithmetischen Rechtsverschiebung von 
   d1  um  1 Bit.  Das Vorzeichen wird mit verschoben und  nicht 
   veraendert.

D<  wd1 wd2 -- flag  "d-less"
   flag ist wahr, falls d1 < d2. Vgl. <

D=  wd1 wd2 -- flag  "d-equal"
   Das Flag flag ist wahr, falls wd1 = wd2.

D>    d1 d2 -- flag  "d-greater"
   Das Flag ist true, falls d1 > d2 (vgl. >).

DABS      d -- ud    "d-absolute"
   ud ist der Betrag von d . Fuer d = -2 147 483 648 ist d = ud. 
   Vgl. "Zweierkomplementarithmetik"

DECIMAL     --                    
   Zahlenbasis  fuer Eingabe-/Ausgabekonvertierungen auf 10 set-
   zen

DEFER       --
   Definiert  einen Woerterbucheintrag fuer spaetere  Verwendung 
   als Vektor.
   
DEFER       --    
   Vok.: USER
   Definiert  einen  Ausfuehrungsvektor,  der  fuer  jedes  Task 
   unterschiedlich sein kann. s. USER

DEFINED     -- adr flag
   Sucht nach dem naechsten Wort im Eingabestrom:
    flag:=-1   - es existiert und adr:=cfa und normales Wort
    flag:= 1   - es existiert und adr:=cfa und IMMEDIATE-Wort
    flag:= 0   - es existiert nicht  und adr:=HERE.

DEFINITIONS    --                    
   Zum  Compilationswoerterbuch wird das erste  Woerterbuch  der 
   Suchreihenfolge.

DEFINITIONS    --   
   Vok.: ROOT
   Redefinition s. Vokabular FORTH

DEPTH          -- +n                 
   +n  ist die Anzahl der Datenstackeintraege vor Uebergabe  von 
   +n.

DIGIT    n1 n2 -- n3 flag
   Es  wird  ein Flag zurueckgegeben,  welches anzeigt,  ob  das 
   Zeichen eine gueltige Dezimalstelle in gegebener  Zahlenbasis 
   n2  ist oder nicht.  Wenn es ein gueltiges Zeichen ist,  wird 
   ein  konvertierter Wert n3 und das Flag wahr  zurueckgegeben. 
   Andernfalls das Zeichen n3=n1 und das Flag falsch.

DLITERAL      d --         
   Compilation  einer 32-Bit-Zahl in die naechste freie Woerter-
   buchposition.

DMAX      d1 d2 -- d  "d-max"
   d3 ist die groessere der beiden Zahlen d1 und d2.

DMIN      d1 d2 -- d3  "d-min"
   d3 ist die kleinere der beiden Zahlen d1 und d2.

DNEGATE      d1 -- d2  "d-negate"
   d2 ist das Zweierkomplement von d1.

DO   w1 w2 --    C, I,   
           -- sys    (comp.Mod.)
   Anwendung in DO ...  LOOP oder DO ... +LOOP. Eroeffnung einer 
   Schleife,  die    im Laufbereich des Indexes zwischen w2  und 
   w1 (Limit) abgearbeitet wird, und zwar wenigstens einmal. sys 
   wird mit LOOP bzw. +LOOP ausbalanciert.

DOES>      -- adr   C, I,   
           --    (comp.Mod.)
   Festlegeung  der Laufzeitaktivitaet  eines  Definitionswortes 
   mit : Wortnamex ... <create> ... DOES> ... ; und anschl.
   Wortnamex  Wortname.  <create> ist CREATE oder ein beliebiges 
   anderes Wort,  welches CREATE ausfuehrt.  DOES> schliesst den 
   Teil  fuer die Spezifikation der  Compilationsaktivitaet  des 
   Definitionswortes  ab  und eroeffnet den Teil fuer  die 
   Ausfuehrungsaktivitaet.  Zur  Laufzeit wird die   Parameterfeld-
   adresse  von Wortname auf dem Datenstack eingetragen und 
   anschliessend die Sequenz zwischen DOES> und ; abgearbeitet. 

DOUBLE?    -- f
   f  ist TRUE,  wenn die von NUMBER konvertierte Zahl  doppelte 
   Genauigkeit hatte; sonst FALSE

DP         -- adr    U 
   Ist  eine Systemvariable (Woerterbuchzeiger),  welche in  adr 
   die  Adresse  des naechsten freien Speicherzelle am Ende  des 
   Woerterbuches enthaelt. Der Wert von DP kann mit HERE gelesen 
   und mit ALLOT geaendert werden.

DPL        -- adr    U
   Ist eine Variable,  die die Anzahl der Stellen nach dem
   Dezimalpunkt bei Eingabekonvertierungen enthaelt.

DROP   16b --                    
   16b wird vom Stack entnommen.

DU<  ud1 ud2 -- flag "d-u-less"
   Das Flag flag ist wahr,  falls ud1 < ud2.  Beide Zahlen  sind 
   vorzeichenlos.

DU       adr -- adr +40H
   Ausgabe von 40H Bytes ab Adresse adr als Hexdump.  Die
   Folgeadresse  wird  auf dem Stack hinterlassen und kann fuer  
   einen weiteren Aufruf von DU verwendet werden.

DUMP   adr u --    M
   Ausgabe von u Bytes,  die im Speicher ab adr stehen. Vor jeder 
   Zeile wird die Anfangsadresse ausgegeben. 

DUP      16b -- 16b 16b  "dup"
   Dupliziert 16b.

ELSE      --    C, I,   
     sys1 -- sys2    (comp.Mod.)
   ELSE  wird  innerhalb IF...ELSE...THEN hinter  dem  IF- Zweig 
   abgearbeitet,  Ausfuehrung  setzt sich bis hinter THEN  fort. 
   sys1 wird mit IF, sys2 mit THEN ausbalanciert. 
   Vgl. IF, THEN

EMIT    16b --     M, Vec
   Ausgabe  der  niederwertigen 8 Bit auf dem aktuellen 
   Ausgabegeraet. #OUT wird incrementiert.

EMPTY       --
   Letztes Wort im Kernvokabular. Bei Aufruf werden alle spaeter 
   definierten Worte geloescht.

EMPTY-BUFFERS   --   M, "empty-buffers"
   Freigabe  aller  Blockpuffer.  Aktualisierte  Bloecke  werden 
   nicht zum Massenspeicher zurueckgeschrieben. Vgl. BLOCK

END-CODE        --   
   Vok.: ASSEMBLER
   Schliesst  eine Primitivdefinition ab und macht das vor  CODE 
   gueltige Vokabular wieder zum aktullen CONTEXT-Vokabular. 
   s. ASSEMBLER

ENTRY       -- adr   U
   eine  USER-Variable mit spezieller Bedeutung  fuer  Multitask. 
   Hier wird ein Stueck MC eingetragen, welches bestimmt, ob das 
   Task aktiv ist oder nicht.

EOD         -- adr  
   Vok.: I/O
   Uebergibt die Adresse im Boot-Bereich, auf der die erste von 
   der RAM-Disk nicht mehr benutztbare Adresse steht.

ERASE  adr u --                    
   u Speicherbytes ab adr werden auf 0 gesetzt, falls u > 0 

EXECUTE    adr --                    
   Ausfuehrung der mit adr bezeichneten Wortdefinition. 

EXIT         --     C,   
   Rueckkehr  zu einer aufrufenden Doppelpunktdefinition  hinter 
   die  Aufrufstelle aus der aufgerufenen  Doppelpunktdefinition 
   heraus;  ( entspricht ;S in fig)  in Schleifen verboten!  

EXPECT  adr +n --    M, Vec
   Fuer +n > 0 Eingabe und byteweises Abspeichern von Zeichen ab
   adr in  Richtung hoeherer Adressen, bis der Steuerkode der
   ENTER-Taste [RET] erkannt wird oder +n Zeichen  eingegeben
   sind. Ausgabe (Echo) aller Zeichen (ausser <ret>, statt
   dessen Ausgabe eines Leerzeichens). Als Korrekturcode
   sind 08H und 7FH installiert. Siehe (EXPECT). Vgl. SPAN

FALSE          -- n   
   Ist eine Konstante, welche den Wert n=0 liefert 
   (false entspricht falsch).

FENCE          -- adr              
   Ist eine Systemvariable, die eine Adresse enthaelt. Unterhalb 
   dieser  Adresse wird FORGET nicht ausgefuehrt.  Um unter  die 
   angegebene Adresse zu gelangen,  muss der Benutzer den Inhalt    
   von FENCE aendern.

FH            n --   "from-here"
   Dient  der relativen Adressierung des zu ladenden Screens  von 
   dem Screen in dem FH steht aus gerechnet. 
   1  FH  LOAD laedt den naechsten Screen,  2 FH 4  FH  THRU  die 
   Reihenfolge vom uebernaechsten bis zum 4. folgenden.
   
FILL   adr u 8b --                    
   u Speicherbytes ab adr werden mit 8b gefuellt, falls u > 0 .

FIND       adr1 -- adr2 flag          
   Suche  des  Wortes,  das  in der FORTH-Zeichenkette  ab  adr1 
   enthalten  ist,  in der aktuellen Suchreihenfolge.  Kann  das 
   Wort gefunden werden,  so ist adr2 dessen Compilationsadresse 
   und n = 1 (IMMEDIATE-Wort) oder n = -1.  Wurde das Wort nicht 
   gefunden, so ist adr2 = adr1 und n = 0 .

FIRST           -- adr               
   Bringt die Adresse des ersten Blockpuffers auf den Datenstack. 

FLUSH           --   M,   
   Ausfuehrung von SAVE-BUFFERS und EMPTY-BUFFERS

FORGET          --   M,   
   Mit  FORGET  Wortname werden Wortname und alle  nachfolgenden 
   Eintraege  (unabhaengig von ihrer Woerterbuchzugehoerigkeit)
   entfernt,  falls Wortname im Compilationswoerterbuch
   gefunden werden kann. Fehler: Name wird nicht gefunden bzw.
   Compilationswoerterbuch soll entfernt werden. s. (FORGET) 

FORTH           --                    
   Name des Basis- (Primaer-) Woerterbuchs.  Bei Ausfuehrung
   von  FORTH  wird dieses zum ersten Woerterbuch in der 
   Suchreihenfolge. Bei Systeminitialisierung ist FORTH das
   erste Woerterbuch und gleichzeitig Compilationswoerterbuch. 
   Alle Definitionen  werden  darin eingetragen,  bis ein
   anderes Compilationswoerterbuch eingerichtet wird. 
   Vgl. VOCABULARY 

FORTH           --   
   Vok.: ROOT
   Redefinition  von  FORTH  um  vom  ROOT-Vocabular  auf  
   FORTH  umschalten zu koennen.

FORTH-83        --                    
   Sicherung der Verfuegbarkeit eines FORTH-83-Systems,
   anderenfalls Fehler!

GET             --
   Laedt eine Screendatei vom Magnetband in die RAM-Disk.
   Beachte je nach Rechnertyp installationsabhaengige
   Besonderheiten.  
HASH  adr1 adr2 -- +n
   Es ist eine Zeichenkettenadresse (adr1) und ein Zeiger(adr2)
   zu  einem  Woerterbuch  gegeben.  Als Resultat  erscheint     
   der  aktuelle  Faden (+n).  Es wird das erste Zeichen der 
   Zeichenkette genutzt, um den Faden zu bestimmen. 

HEADER          --
   Teilfunktion von CREATE. Baut einen Namensheader auf.


HELLO        --
   Aktuell von BOOT benutzt, um die Systemmeldung auszugeben und
   EMPTY-BUFFERS und  DECIMAL auszufuehren.

HERE         --                    
   Adresse der naechsten verfuegbaren Adresse im Woerterbuch.


HEX          --                    
   Setzen der Zahlenbasis fuer Ein- / Ausgabekonvertierungen auf 
   16.

HIDDEN       --      Voc
   Das Vokabular enthaelt alle  normalerweise   "verborgenen" 
   Laufzeitroutinen und Teilaktionen, die fuer den Nutzer 
   meist uninteressant sind und die nur benoetigt werden,  wenn 
   das Compile-Verhalten erweitert werden soll.

HIDE         --
   Verbirgt den letzten Worteintrag im Woerterbuch,  so dasz  er 
   von  (FIND) erst nach Aufruf von REVEAL gefunden werden  kann. 
   
HLD          -- adr     U
   Ist eine Systemvariable, die die Zieladresse  enthaelt,  auf 
   der das naechste erzeugte ASCII-Zeichen abgespeichert wird.

HOLD    char --                    
   Einfuegen von char in die Ausgabezeichenkette bei Ausgabekon-
   vertierungen mit <# ... #>.

I            -- w       C,   
   w  ist die Kopie des Schleifenindexes in DO...I...LOOP  (bzw. 
   ... +LOOP).

I/O          --        Voc
   Woerterbuch welches alle Worte,  die zur  Anpassung  an  die 
   systemspezifischen Ein- und  Ausgabefunktionen  erforderlich
   sind, enthaelt. Dazu gehoert auch die Behandlung des  Block-
   lesens und -schreibens  (in der Grundversion  fuer  RAM-Disk 
   installiert). Diese  Worte sind meist Zielpunkt fuer  Vektor-
   aufrufe aus dem Stammvokabular. Nutzerspezifische Aenderungen
   der Ein- und Ausgabe bzw. Massenspeicherbehandlung  sollten 
   ebenfalls dementsprechend in diesem Vokabular  untergebracht 
   werden.

IF    flag --       C, I,   
           -- sys    (comp.Mod.)
   Wird in Strukturen der Form:  IF...ELSE...THEN oder IF...THEN 
   verwendet.  Wenn flag wahr ist,  Ausfuehrung der Woerter zwi-
   schen  IF  und THEN bzw.  IF und ELSE mit Fortsetzung  hinter 
   THEN . sys wird mit ELSE bzw. THEN ausbalanciert.

IMMEDIATE    --                    
   Kennzeichnung  des zuletzt gebildeten Woerterbucheintrags als 
   ein  Wort,  welches auch im compilierenden Modus  ausgefuehrt 
   und nicht compiliert wird.

INDEX  u1 u2 --      M
   Ausgabe  der jeweils ersten Zeile jedes Screens von  Screen 
   Nr. u1 bis Screen u2 (Titelzeile).

INTERPRET    --      M,   
   Beginn der Interpretation bei dem Zeichen,  welches mit  >IN 
   relativ  zum  Blockanfang  des Massenspeicherblocks  mit  der 
   Nummer, die in BLK steht, indiziert wird.  Wenn die Blocknum-
   mer 0 ist, erfolgt Interpretation vom Texteingabepuffer. 
   s. auch (INTERPRET) und (COMPILE).

IS           --                        
   Abhaengig  von STATE wird entweder das  folgende  DEFER-ierte
   Wort (Vector) sofort gesetzt oder zum spaeteren Setzen compi-
liert. z.B. ' .S IS STATUS stellt den Vector so um, dasz nach
   jeder Eingabezeile der Datenstack gedruckt wird; sehr geeig-
   net fuer Tests.

J            -- w      C,   
   w  ist eine Kopie des Indexes der naechst aeusseren Schleife. 
   Nur  in genesteten Schleifen DO...LOOP (bzw.  ...+LOOP )  an-
   wendbar,  wenn  dazwischen  keine Werte auf  dem  Returnstack 
   eingetragen werden, z.B. DO...DO...J...LOOP...LOOP .

KEY          -- 16b    M, Vec,   
   Die  niederwertigen  7 Bit sind die Kodierung  des  naechsten 
   eingegebenen ASCII-Zeichens. Alle ASCII-Zeichen sind gueltig, 
   auch CTRL-Zeichen (keine Echofunktion, keine Aufbereitung).

KEY?         -- f      Vec
   liefert  TRUE,  wenn  eine Tate  betaetigt  wurde.  Entspricht 
   ?TERMINAL in FIG.

L/SCR        -- u   "lines-per-screen"
   Ist  eine Konstante.  Der Wert stellt die Zeilenanzahl  eines 
   Screens dar.

L>NAME   lfa -- nfa  "l-to-name"  
   Ausgehend von der lfa eines Wortes wird die nfa berechnet.

LABEL        --
   Wird  zur  Bildung  von  Marken  im  Maschinenkode   genutzt. 
   Vgl. ASSEMBLER 

LAST         -- adr     U
   Ist eine Variable, die die Anfangsadresse des letzten (u.U. 
   unvollstaendigen oder ungueltigen)  Woerterbucheintrags
   enthaelt.

LEAVE        --       C, I,   
   Sofortiges Verlassen  einer Schleife DO...LEAVE...LOOP  (bzw. 
   ...+LOOP) mit Beseitigung  der  Schleifenparameter  auf  dem 
   Returnstack. Auch in genesteten Strukturierungssequenzen  in 
   Schleifen anwendbar, auch mehrere LEAVE in einer Schleife. 

LINK         -- adr
   USER-Variable  die  die  Adresse des naechsten Tasks  in  der 
   Round-Robin-Schleife enthaelt.

LINK>   lfa  -- cfa  "from-link"
   Ausgehend von der lfa eines Wortes wird die cfa berechnet.

LITERAL      -- 16b     C, I,   
         16b --    (comp.Mod.)
   Typische Anwendung im  compilierenden Modus: [ 16b ] LITERAL. 
   Compilation von 16b als Literal,  bei der spaeteren  Ausfueh-
   rung erfolgt eine Eintragung von 16b auf dem Datenstack.

LIST       u --         M,   
   SCR wird auf u gesetzt, Screen u wird ausgegeben. Vgl. BLOCK

LOAD       u --         M,   
   Sicherung der aktuellen Parameter des Eingabestroms  >IN  und 
   BLK ; IN wird auf 0 und BLK auf Screennummer u gesetzt, damit 
   Interpretation  von Screen u .  Beendigung der  Interpretation 
   und Rueckkehr zu den alten Werten von >IN und BLK explizit mit 
   \S oder bei Blockende.
   Fehler: u = 0 Vgl. >IN BLK BLOCK

LOOP         --         C, I,   
         sys --    (comp.Mod.)
   Inkrementieren des Schleifenindexes um  1.  Schleifenabbruch,  
   wenn  Index  die Grenze zwischen Limit - 1 und  Limit  ueber-
   schreitet,  sonst  Fortsetzung der Schleife hinter  DO.  
   sys wird mit DO ausbalanciert.

M/MOD   d n1 -- n2 n3
   die  doppeltgenaue  Zahl d wird durch n1  dividiert.  n3  ist 
   Quotient, n2 Rest. ACHTUNG: nicht identisch mit M/MOD in FIG.
   
MARK         --
   MARK  <name>  erzeugt  einen  Woerterbucheintrag  <name>,  bei 
   dessen  Aufruf  alle nach <name> definierten  Worte  geloescht 
   werden. s. EMPTY
  
MAX    n1 n2 -- n3     "max"
   n3  ist  die groessere der beiden Zahlen n1 oder n2  entspre-
   chend der Operation >.

MAX#         -- n
   Vok.: I/O
   Anzahl der maximal in der RAM-Disk verfuegbaren Bloecke.

MIN    n1 n2 -- n3      "min"
   n3 ist die kleinere der beiden Zahlen n1 oder n2 entsprechend 
   der Operation <.

MOD    n1 n2 -- n3                 
   n3 ist der Rest der Division n1 / n2 mit gleichem  Vorzeichen 
   wie  n2  oder gleich 0 .  Fehler:  Divisor = 0 oder n1  /  n2 
   ausserhalb des Bereichs -32768 ...  +32767.  

MOVE  adr1 adr2 u --               
   Falls  u > 0,  werden u Bytes ab adr1 in den Bereich ab  adr2 
   transferiert.

MU/MOD   ud1 u1 -- u2 ud2                
   Ist  eine mathematische Operation mit gemischten  Zahlentypen    
   ohne Vorzeichen, die den Rest u2 und den Doppelzahlquotienten    
   ud2 bei der Division einer Doppelzahl ud1 durch einen Divisor    
   u1 liefert.       ud1/u1=:ud2 Rest u2 

N>LINK   nfa -- lfa  "n-to-link"
   Ausgehend von der nfa eines Wortes wird die lfa berechnet.

NAME>    nfa -- cfa  "from-name"
   Ausgehend von der nfa eines Wortes wird die cfa berechnet.

NEGATE    n1 -- n2                 
   n2 ist das Zweierkomplement von n1. 

NIP    w1 w2 -- w2 
   Loescht den zweiten Stackeintrag.

NOOP         --              
   Ist eine leere Anweisung.

NOT     16b1 -- 16b2               
   16b2 ist das Einerkomplement von 16b1.

NUMBER?  adr -- d f      Vec
   Konvertiere  die Zeichenkette,  deren erstes Zeichen auf  adr 
   steht,  in eine 32-Bit-Zahl entsprechend dem aktuellen Inhalt 
   von BASE . Standartmaessig auf (INUMBER?) vektorisiert.
   Flag gibt Auskunft ueber Erfolg der Konvertierung.

OFF      adr -- 
   Setzt Inhalt von adr  auf FALSE.

OFFSET       -- n      U,   
   Ist eine Variable,  die den Blockoffset enthaelt, welcher bei 
   Ausfuehrung  von  BLOCK oder BUFFER zur Blocknummer  auf  dem 
   Stack addiert wird.

ON       adr -- 
   Setzt Inhalt von adr  auf TRUE.

ONLY         --
   Vok.: ROOT
   Das erste Woerterbuch in der Suchreihenfolge wird durch  ROOT 
   ersetzt. ROOT wird  gleichzeitig zum  einzigen  durchsuchten
   Vocabular. Vgl. VOCABULARY und Teilwoerterbuch ROOT

OR  16b1 16b2 -- 16b3               
   16b3 ist die bitweise ODER-Verknuepfung von 16b1 mit 16b2 .

ORDER        --    Vok.: ROOT
   zeigt die z. Z. gueltige Vokabular-Suchreihenfolge.

OS         n --    Vok.: I/O
   Aufruf der Systemroutinen im Installationsbereich.  n ist der 
   Adressoffset zum Aufruf von CI (Zeicheneingabe).

OVER 16b1 16b2 -- 16b1 16b2 16b3     
   16b3 ist die Kopie von 16b1 .

P!     n adr --
   Direkte  Portausgabe,  wobei n der auszugebende Wert und  adr 
   die Adresse des Ports ist.

P@       adr -- n
   Direkte Porteingabe, wobei n der einzugebene Wert und adr die 
   Adresse des Ports ist.

PAD          -- adr                
   Anfangsadresse eines mindestens 84 Byte langen Textzwischen-
   puffers.

PARSE    +n1 -- adr +n2 
   Separiert  im  Eingabestrom eine Zeichenkette,  die  mit  +n1        
   endet, liefert die Anfangsadresse adr  und die Laenge +n2 der    
   Zeichenkette. Aktualisiert den >IN-Zeiger.

PARSE-WORD  +n1 -- adr +n2   
   Separiert im  Eingabestrom eine Zeichenkette,  die  mit  +n1  
   beginnt, liefert  die Anfangsadresse adr und die Laenge  +n2 
   der Zeichenkette. Aktualisiert den >IN-Zeiger.

PAUSE        --                           
   Ist eine leere Anweisung. Sie ist fuer Multitask reserviert,
   wo sie eine Umschaltung auf das naechste Task bewirkt.
   
PICK      +n -- 16b                
   16b  ist  die Kopie des n-ten Stackeintrags (+n nicht  mitge-
   rechnet). 0 PICK entspricht DUP , 1 PICK entspricht OVER .

PLACE  adr1 n adr2 -- 
   Lagert  Zeichenkette  der Laenge n  von  adr1  (Quelladresse)    
   nach adr2 (Zieladresse) um.   

PREVIOUS     --    
   Vok.: ROOT
   entfernt  als  Gegenstueck zu ALSO  das  zuletzt  deklarierte 
   Woerterbuch aus der Suchreihenfolge.

PRINTING     -- adr    U
   USER-Variable,  die anzeigt, ob Drucker als Echo zugeschaltet 
   ist. PRINTING ON bzw. OFF schaltet den Drucker zu bzw. ab.

PRIOR        -- adr
   Ist eine Variable,  die zur Woerterbuchsuche verwendet  wird. 
   Zeigt zum letzten Woerterbuch, das durchsucht wurde.

PUT          --
   Speichert den Inhalt der RAM-Disk auf Magnetband ab. Beachte 
   rechnerspezifische Unterschiede.

QUERY        --        M,   
   Empfangen von 80 Zeichen in den TIB und zwar so  lange,  bis 
   <ret> erkannt wird oder der Textpuffer gefuellt ist. >IN und 
   BLK werden auf 0 gesetzt, #TIB enthaelt den Wert von SPAN  . 
   Vgl. EXPECT 

QUIT         --                    
   Fuehrt folgende Operationen aus: Returnstack saeubern, aus-
   fuehrenden Modus einschalten, Eingabe ueber das aktuelle Ein-
   gabegeraet, Beginn der Wortinterpretation. KeineSystemaus-
   schrift.

R#           -- adr  U "r-sharp"
   Ist eine Systemvariable,  die den Ort eines Editcursors  oder 
   anderer mit Files zusammenhaengender Funktionen enthalten
   kann.

R>           -- 16b    C,   
   Entnahme von 16b vom Returnstack und Transfer zum  Parameter-
   stack.

R@           -- 16b    C,   
   Kopiert  den  obersten Wert des Returnstacks als 16b auf  den 
   Datenstack.

READ   adr n --      
   Vok.: I/O
   liest  aus  der RAM-Disk Block n und schafft ihn auf  Adresse 
   adr. Standartvoreinstellung fuer READ-BLOCK.

READ-BLOCK   adr n --   Vec
   liest Block n von (RAM) Disk nach Adresse adr.

RECURSE      --     C, I,   
   Compiliert die Compilationsadresse der Definition, die gerade 
   compiliert wird. Ausfuehrung erfolgt spaeter rekursiv.

REPEAT       --     C, I,           
         sys --    (comp.Mod.)
   Verwendung  in BEGIN...WHILE...REPEAT.  Zur  Ausfuehrungszeit 
   Sprung von REPEAT zur Stelle hinter BEGIN. sys wird mit WHILE 
   ausbalanciert. Vgl. BEGIN

REVEAL       --
   Replaziert die letzte Definition in das Hauptwoerterbuch.

ROLL      +n --                    
   Der +n - te Stackeintrag (+n nicht mitgerechnet) wird an  die 
   oberste Stackposition rotiert, die folgenden Eintraege gelan-
   gen  auf  die  jeweils frei werdenden Plaetze.  2  ROLL  ent-
   spricht ROT , 0 ROLL ist eine Nulloperation.

RMARGIN      -- adr
   Ist  eine Variable.  Der Inhalt der Adresse (adr)  entspricht 
   der Anzahl der Stellen,  die bei einer Ausgabe auf Bildschirm 
   oder Drucker rechts maximal ausgegeben werden. Wird bisher
   nur von WORDS genutzt. 

ROOT         --      Vok
   Das Vokabular  ROOT   enthaelt  die   zur   Steuerung   der 
   Suchreihenfolge notwendigen   Worte  und  basiert  auf   den 
   Experimentalvorschlaegen von ... 
   (s. auch Der Standart FORTH 83)

ROT 16b1 16b2 16b3 -- 16b2 16b3 16b1            
   Die 3 obersten Stackeintraege werden rotiert,  der drittober-
   ste gelangt an die Spitze.

RP0         -- adr   U "r-zero"
   Ist eine Systemvariable,  die die Ausgangsposition des
   Returnstack-Zeigers enthaelt.

RP!     adr  --     "r-p-store"
   Setzt Returnstackanfang auf die Adresse adr.

RP@          -- adr   "r-p-at"
   Hinterlaesst  den  aktuellen Returnstack-Zeiger-Wert auf  dem 
   Datenstack.

S>D        n -- d             
   Wandelt eine  vorzeichenbehaftete Einfachintegerzahl  n  in 
   eine Doppelintegerzahl d.

SAVE-BUFFERS   --   M, "save-buffers"
   Die Inhalte aller als aktualisiert gekennzeichneten Blockpuf-
   fer  werden in die entsprechenden  Massenspeicherbloecke  zu-
   rueckgeschrieben, alle Puffer werden nicht laenger als aktua-
   lisiert gekennzeichnet, bleiben aber u.U. zugewiesen.

SCAN  adr1 +n1 n2 -- adr2 +n3
   Aus  einer Zeichenkette mit der Adresse adr1 und  der  Laenge 
   +n1  wird nach einem Zeichen n2 gesucht.  Auf dem  Datenstack 
   wird  nach  der Ausfuehrung des Wortes die Adresse  adr2  des 
   gefundenen  Zeichens n2 und die Laenge der verbleibenden Zei-
   chenkette (+n3).

SCR          -- adr     "s-c-r"
   Adresse der Variablen,  die die Nummer des zuletzt ausgegeben 
   Screens enthaelt. Vgl. LIST

SEAL         --    Vok.: ROOT
   SEAL  <name>   macht  das  Woerterbuch  <name>  zum  alleinig 
   durchsuchten.  Kann z.B.  fuer versiegelte Applikationen ver-
   wendet werden. 

SIGN       n --                    
   Bei  n < 0 Einfuegen eines ASCII-Zeichens '-'  (Minuszeichen) 
   an  die Zeichenkette der Ausgabekonvertierung.  Anwendung in-
   nerhalb <# ... #>.

SKIP   adr1 +n1 n2 -- adr2 +n3 
   Aus  einer Zeichenkette mit der Adresse adr1 und  der  Laenge 
   +n1 wird nach einem Zeichen +n2 gesucht. Auf dem Stack liegen 
   nach  Ausfuehrung  des  Wortes die Adresse  adr2  des  ersten 
   Zeichens  nach dem gefundenen Zeichen +n2 und die Laenge  der 
   verbleibenden Zeichenkette (+n3).

SOD          -- adr   Vok.: I/O
   Uebergibt die Adresse im Boot-Bereich, auf der die erste  von 
   der RAM-Disk benutzte Adresse steht.

SOURCE       -- adr  n 
   Liefert Quelladresse adr  und Laenge n des Eingabestromes.  

SP0         -- adr   U "s-zero"
   Variable,  die  den Initialisierungswert des  Datenstack-
   pointers enthaelt.

SP!      adr --     "s-p-store"
   Setzt Datenstackanfang auf adr. 

SP@          -- adr    "s-p-at"
   adr  ist die Adresse des obersten Stackeintrags,  bevor  SP@
   ausgefuehrt wurde.

SPACE        --     M,   
   Ausgabe eines ASCII-Leerzeichens.

SPACES    +n --     M,   
   Ausgabe von +n ASCII-Leerzeichen.

SPAN         -- adr                
   Adresse der Variablen,  die die Laenge der zuletzt mit EXPECT 
   empfangenen Zeichenkette enthaelt. Vgl. EXPECT

STATE        -- adr                
   Adresse  der  Variablen,  die  die  Systemzustandsinformation 
   enthaelt (compilierender Modus:  Inhalt ungleich 0) 

STATUS       --        Vec
   Ausfuehrungsvektor, der jeweils  nach  Abarbeitung einer 
   Eingabezeile ausgefuehrt  wird und den  Systemstatus  meldet. 
   (Normalerweise CR, sinnvoll ist fuer Testfaelle die Umstel-
   lung mit ' .S IS STATUS)

SWAP  16b1 16b2 -- 16b2 16b1          
   Die 2 obersten Stackeintraege werden getauscht.

THEN         --        C, I,   
         sys --    (comp.Mod.)
   In  IF...ELSE...THEN oder IF...THEN verwendet  markiert  THEN 
   die Stelle,  wo die Ausfuehrung nach der Abarbeitung des IF - 
   bzw. des ELSE - Zweigs fortgesetzt wird. 
   sys wird mit IF bzw. ELSE ausbalanciert.

THRU   u1 u2 --        M,   
   Lade die aufeinanderfolgenden Bloecke von u1 bis u2.

TIB          -- adr     "t-i-b"
   Adresse des Texteingabepuffers, darin Speicherung der Zeichen 
   des Eingabestroms vom aktuellen Geraet.

TOS          -- adr
   User-Variable, die bei Taskumschaltung den TOS des jeweiligen 
   Task zwischenspeichert.

TRIM    adr voc-adr --   
   Vok.: HIDDEN
   Stutzt die  4  Hash-Faeden eines Vocabulars  so,  dasz  sie 
   kleiner als adr sind.

TRUE         -- n   
   Ist eine Konstante und liefert den Wert n=-1 (0FFFFH).

TUCK   w1 w2 -- w2 w1 w2 
   Verdoppelt  den letzten Stackeintrag und bringt  diesen  Wert 
   auf die 3. Stackposition.    

TYPE  adr +n --     M,   
   +n Zeichen werden fortlaufend ab adr aus dem Speicher gelesen 
   und ausgegeben, falls +n > 0. 

U.         u --     M, "u-dot"
   Formatfreie Ausgabe von u als vorzeichenlose Zahl.

U.R     u +n --     M, "u-dot-r"
   Konvertierung  von  u bezueglich der  aktuellen  Zahlenbasis, 
   rechtsbuendige  Ausgabe in einem gedachten Feld der Weite +n. 
   Fehler:  Feldweite reicht nicht zur Darstellung aller Zeichen 
   aus. Vgl. "Zahlenkonvertierung"

U2/       u1 -- u2 
   u2 ist das Ergebnis der arithmetischen Rechtsverschiebung von 
   u1 um 1 Bit.  In die frei werdende Bitposition wird eine Null 
   geschoben.

U<     u1 u2 -- flag   "u-less"
   Das flag ist wahr, falls u1 < u2.

UM*    u1 u2 -- ud     "u-star"
   ud ist das vorzeichenlose Produkt  u1 * u2.   

UM/MOD ud u1 -- u2 u3 "u-m-divide-mod"
   u2  ist  der  Rest  und u3 der  Quotient  nach  der  Division 
   u1/u2.  Fehler:  Division durch 0 oder Quotient  ausserhalb
    0...65 535 . Vgl. "Division mit Rundung"

UNTIL   flag --      C, I,   
         sys --    (comp.Mod.)
   Markiert  das  Ende  in  einer  Schleife  BEGIN...flag UNTIL.
   Schleifenabbruch, falls flag wahr ist, sonst Fortsetzung der 
   Abarbeitung  hinter BEGIN.  sys wird mit BEGIN ausbalanciert. 
   Vgl. BEGIN

UP         -- adr "user-pointer"
   Ist eine System-Variable.  Enthaelt die Adresse des aktuellen 
   USER-Areas.

UPD        -- adr  Vok.: HIDDEN   
   Variable, die anzeigt, ob der Block im Buffer UPDATE ist.

UPDATE     --                    
   Kennzeichnung des aktuell gueltigen Blockpuffers als aktuali-
   siert.  Vor Aenderung des Blockinhalts (Beschreiben mit einem 
   anderen  Blockinhalt  oder Ausfuehrung von FLUSH  oder  SAVE-
   BUFFERS)  erfolgt  automatisches Rueckschreiben  zur RAM-Disk.

USER         --       Voc, M
   Vokabular zur Definition von USER-Variablen und -Vektoren. Die 
   Definition dieser Worte weicht vom bisher bekannten etwas  ab. 
   Die  Position  im USER-Area wird vom System selbst  verwaltet. 
   Die Definition einer Variablen lautet dann:
      USER VARIABLE name
   Die eines USER-Vektors:
      USER DEFER name

VARIABLE     --         M,   
   Definitionswort fuer 16-Bit-Variablen: VARIABLE Wortname. Bei 
   Ausfuehrung von Wortname wird die Parameterfeldadresse auf dem 
   Stack abgelegt.

VARIABLE     --     
   Voc.: USER
   Definiert eine  USER-Variable und ist somit  aequivalent  zum    
   Befehl USER in FIG.

VOCABULARY   --         M,   
   Definitionswort fuer Woerterbuecher: VOCABULARY Wortname. 
   Eintragen  von  Wortname ins Woerterbuch  zur  Spezifizierung 
   einer neuen geordneten Liste von Wortdefinitionen.  Die  Aus-
   fuehrung  von  Wortname ersetzt das erste Woerterbuch in  der 
   Suchreihenfolge durch Wortname.  Wenn Wortname  Compilations-
   woerterbuch ist, so werden neue Definitionen an die Liste von 
   Wortname angefuegt. 
   Vgl. DEFINITIONS 

VOC-LINK     -- adr  
   Ist eine Systemvariable,  welche die Adresse eines Feldes  in       
   der  Definition des zuletzt erzeugten Woerterbuches enthaelt.    
   Alle Woerterbuchnamen sind ueber diese Felder  verkettet,  um 
   eine  Steuerung  von FORGET ueber mehrere moegliche  Woerter-
   buecher zu ermoeglichen.

VOCS         --     Vok.: ROOT
   zeigt alle definierten Vokabulare.

WARM         --                
   Die Warmstartprozedur liefert eine Systemmeldung und fuehrt 
   ABORT aus.

WARNING      -- addr
   Systemvariable. Wenn ihr Inhalt <>0 ist, wird bei Redefini-
   tion eines Wortes eine entsprechende Warnung ausgegeben.

WHERE  off n --      Vec
   Lokalisiert  Screen  n und Position des  Wortes,  dass  einen 
   Fehler verursachte.

WIDTH        -- adr    U
   Ist  eine Systemvariable,  welche die Hoechstzahl von Zeichen    
   enthaelt,  die  bei der Uebersetzung eines  Definitionsnamens 
   abgespeichert werden.  Der Wert muss zwischen 1 und 31 liegen 
   und wird mit 31 vorbesetzt.  

WHILE   flag --      C, I,   
     sys1 -- sys2    (comp.Mod.)
   In  BEGIN...flag WHILE...REPEAT   wird die  Abarbeitung  fuer 
   flag = wahr zwischen WHILE und REPEAT fortgesetzt, anschlies-
   send Ruecksprung zur Stelle hinter BEGIN .  Bei flag = falsch 
   Fortsetzung  der  Abarbeitung hinter REPEAT.  
   sys1 wird mit BEGIN, sys2 mit REPEAT ausbalanciert.

WORD    char -- adr      M,   
   Erzeugen  einer  Teilzeichenkette  (Token) als  FORTH-Zeichen-
   kette aus dem aktuellen Eingabestrom.  Abschluss  durch  char
   oder  bei Erschoepfung des Eingabestroms. Fuehrende Trennzei-
   chen char werden ignoriert. Die Laenge des Token wird auf
adr, die Zeichenkette ab adr+1 als Bytefolge mit nachfolgendem 
   Leerzeichen (zaehlt nicht zur Laenge) abgespeichert.  Laenge 
   der  Zeichenkette: maximal 255 Byte, sonst unbestimmt. Bei 
   erschoepftem Eingabestrom zum Zeitpunkt des Aufrufs von WORD 
   Generierung einer Zeichenkette der Laenge 0 . Wenn char nicht 
   gefunden wird, ist der Inhalt von >IN die Laenge des Eingabe-
   stroms, sonst wird >IN so korrigiert, dass der Offset hinter 
   die Teilzeichenkette zeigt.  #TIB wird nicht veraendert. Die
   generierte FORTH-Zeichenkette wird nach HERE transportiert
   und ihre Adresse uebergeben. 

WORDS        --         M
   Ausgabe aller Wortnamen des ersten Woerterbuchs der aktuellen 
   Suchreihenfolge.

WORDS        --   
   Vok.: ROOT
   Redefinition. s. Vokabular FORTH.

WRITE  adr n --   Vok.: I/O
   schreibt Block n von Adresse adr in die  RAM-Disk.  Standart-
   Voreinstellung fuer WRITE-BLOCK. 

WRITE-BLOCK   adr n --    Vec
   schreibt  Block n,  welcher auf Adresse adr steht  zur  (RAM)
   Disk. 

XOR  16b1 16b2 -- 16b3    "x-or"
   16b3 ist das Ergebnis der bitweisen Exklusiv-ODER-Verknuep-
   fung von 16b1 mit 16b2. 

[         --   I, "left-bracket"
   Einschalten des ausfuehrenden Modus, nachfolgend Interpreta-
   tion des Textes aus dem  Eingabestrom.  Typische  Anwendung:
   Vgl. LITERAL und  ]

[']    -- adr  C, I, M, "bracket-tick"
   Mit ['] Wortname wird die Compilationsadresse von Wortname in
   eine  Doppelpunktdefinition compiliert.  Bei deren  spaeterer 
   Ausfuehrung wird adr auf dem Stack abgelegt. Fehler: Wortname 
   kann  nicht in der aktuellen Suchreihenfolge gefunden werden. 
   Vgl. LITERAL

[COMPILE]    --    C, I, M,    "bracket-compile"
   In [COMPILE] Wortname wird das IMMEDIATE-Wort Wortname compi-
  liert und nicht ausgefuehrt. 

\            --    "skip-line"
   Auf \ folgender Kommentar in der Screenzeile  wird  bei  der 
   interpretativen Abarbeitung des Screens ignoriert.

\S           --    "skip-screen"
   Beendet die Abarbeitung des Screens.

]            --  "right-bracket"
   Einschalten des compilierenden Modus mit nachfolgender Compi-
   lation des Textes aus dem Eingabestrom. In diesem Wort steckt
   die Hauptcompilerschleife (anders als in fig). s. RUN INTER-
   PRET