Wortverzeichnis

Alphabethischer Index

Symbole Ziffern A B C D E F G H I J K L M N O P Q R S T U V W X Y Z


Thematischer Index

Ablaufkontrolle

/LOOP +LOOP ?DO BEGIN DO ELSE EXIT I IF J LEAVE LOOP QUIT REPEAT THEN UNTIL WHILE

Ein- und Ausgabe

<# -TRAILING . D. ." # #> #S ACCEPT COUNT CR D.R EMIT EXPECT HOLD KEY NUMBER SIGN SPACE SPACES TYPE U. WORD

Definitionsworte

: ; CONSTANT CREATE VARIABLE DOES>

Fehlerbehandlung

ABORT"

Formatierungen

DECIMAL HEX

Jonglieren

2DROP 2DUP 2OVER 2SWAP DROP DUP OVER ROT SWAP

Logik

< = > 0< 0= 0> AND D< D= D0= DU< NOT OR U<

Operatoren

- / /MOD * */ */MOD + 2/ 2* D- D+ ABS DABS DMAX DMIN DNEGATE MAX MIN MOD U* U/MOD

Parsen

( \ EXECUTE INTERPRET

Speicher

! ? @ +! 2! 2@ C! C@ CMOVE DUMP FILL

Stack

.S

Wörterbuch

, ' ['] ALLOT CONTEXT CURRENT DEFINITIONS FIND FORTH VOCABULARY

Zusätzliche Wörter

1+


Symbole

< ( n1 n2 -- flag )

Dieses Wort vergleicht die beiden obersten Zahlen auf dem Stack. Ist n1 kleiner als n2, wird 'wahr' zurück gegeben, sonst 'falsch' (0).

<#

Mit diesem Wort wird die Umwandlung einer doppelten Zahl in einen String aus Ziffern eingeleitet.

= ( n1 n2 -- flag )

Dieses Wort vergleicht die beiden obersten Zahlen auf dem Stack. Sind die beiden Zahlen gleich, wird 'wahr' zurück gegeben, sonst 'falsch' (0).

> ( n1 n2 -- flag )

Dieses Wort vergleicht die beiden obersten Zahlen auf dem Stack. Ist n1 größer als n2, wird 'wahr' zurück gegeben, sonst 'falsch' (0).

- ( n1 n2 -- differenz )

Subtrahiert die oberste Zahl auf dem Stack von der zweitobersten und legt das Ergebnis auf den Stack.

-TRAILING ( sc1 -- sc2 )

Bekommt eine Zeichenkette in der üblichen Form übergeben und entfernt von dieser alle anhängenden Leerzeichen. Die Rückgabe ist dann wieder eine Zeichenkette in der üblichen Form.

, ( n -- )

Speichert den übergebenen Wert hinter das Dictionary und erhöht den Dictionaryzeiger. Dieses Wort kann verwendet werden, um Werte in Variablen vorzubelegen.

;

Beendet eine Doppelpunktdefinition.

:

Beginnt eine Doppelpunktdefinition. Mit einer solchen Definition wird ein neues Wort in Forth erzeugt und seine Eigenschaften festgelegt, die abergearbeitet werden, wenn das neue Wort aufgerufen wird.

! ( n addr -- )

Dieses Wort speichert die Zahl n ab der Adresse addr im Computerspeicher.

? ( addr -- )

Liest die Adresse addr aus und gibt den dort gespeicherten Wert als Zahl aus. Dabei wird die aktuelle Zahlenbasis berücksichtigt und danach ein Leerzeichen ausgegeben.

?DO

Mir diesem Wort wird genauso eine festgelegte Schleife eingeleitet, wie mit DO. Der einzige Unterschied besteht darin, dass bei ?DO die Schleife gar nicht durchlaufen wird, wenn Index gleich Grenze ist.

?DUP ( n1 (wenn 0) -- n1 / n1 -- n1 n1 )

Wenn der oberste Wert auf dem Stack nicht Null ist, wird er verdoppelt, sonst nicht. Dieses Wort kommt vor allem vor 'IF' zum tragen, wenn man den ELSE-Teil vermeiden will.

/ ( n1 n2 -- quotient )

Dividiert die zweitoberste Zahl auf dem Stack durch die oberste (Ganzzahldivision) und legt das Ergebnis auf den Stack.

/LOOP ( u -- )

Wie auch LOOP erhöht /LOOP den Index einer DO ... /LOOP-Schleife und vergleicht ihn mit der Grenze. Im Gegensatz zu LOOP sind Index und Grenze allerdings vorzeichenlos.

/MOD ( n1 n2 -- rest quotient)

Dieses Wort nimmt zwei Zahlen vom Stack, und dividiert die erste durch die zweite nach Art der Grundschule. Es wird also das Divisionsergebnis, der Quotient und der Divisionsrest zurück gegeben.

.

Das Punktwort nimmt die oberste Zahl vom Zahlenstack und gibt sie auf dem Bildschirm aus.

."

Dieses Wort erwartet eine mit einem doppelten Anführungszeichen abgeschlossene Zeichenkette, die dann auf dem Bildschirm ausgegeben wird.

.S

Dieses Wort gibt den aktuellen Inhalt des Zahlenstacks aus, ohne diesen zu verändern. Vor der Ausgabe wird noch die Anzahl der Elemente auf dem Stack in spitzen Klammern ausgegeben. Dieses Wort ist besonders nützlich, wenn man neu Worte austesten will und sich über die Stackeffekte nicht ganz im Klaren ist.

(

Dieses Wort leitet einen Kommentar ein. Alles bis zur nächsten schließenden Klammer wird ignoriert. Da es sich um ein Wort in Forth handelt, muss die öffnende Klammer von einem Leerzeichen gefolgt werden!

' ( -- addr )

Dieses Wort bekommt ein Wort übergeben und sucht es im Dictionary. Wird es gefunden, wird seine Eintragsadresse auf den Stack gelegt. Die Realisation und das, was dieses Wort genau auf den Stack legt, ist implementationsabhängig!

['] ( -- addr )

Dieses Wort holt die Adresse des nächsten Wortes in einer Definition auf den Stack. Damit können in der vektoriellen Ausführung leicht Adressen in Zeigervektoren geändert werden.

@ ( addr -- n )

Dieses Wort bekommt eine Adresse auf dem Stack übergeben und holt ab dieser Adresse die Zahl n aus dem Computerspeicher und legt sie auf den Stack.

* ( n1 n2 -- produkt )

Dieses Wort multipliziert die beiden obersten Zahlen auf dem Stack und legt das Ergebnis dort ab.

*/ ( n1 n2 n3 -- skalierung )

Einfach gesprochen wird n1 mit dem Bruch n2/n3 multipliziert. Dieses Wort ist besonders bei Situationen interessant, die den Dreisatzrechnungen entsprechen. Das Zwischenergebnis (der Multiplikation) wird in einer doppelte Zahl zwischengespeichert, so dass auch mit 'großen' Brüchen skaliert werden kann.

*/MOD ( n1 n2 n3 -- rest skalierung )

Dieses Wort arbeitet wie */, nur dass auch noch der Divisionsrest mit übergeben wird.

\

Dieses Wort (ein Leerzeichen muss folgen) leitet einen Zeilenkommentar ein. Alles bis zum Ende der Zeile wird als Kommentar verstanden.

#

Dieses Wort erzeugt im Ausgabeprozess einer Zahl die nächste Ziffer.

#>

Dieses Wort beendet die Umwandlung einer Zahl in eine Ziffernfolge.

#S

Dieses Wort erzeugt im Ausgabeprozess einer Zahl alle noch zu erstellenden Ziffern, bis die Zahl ausgegeben werden kann.

+ ( n1 n2 -- summe )

Das Wort '+' addiert die beiden obersten Zahlen auf dem Stack.

+! ( n addr -- )

Dieses Wort addiert den Wert n zu dem Wert, der bei der Adresse addr gespeichert ist und speichert ihn dann auch dort wieder. Die Addition wird quasi 'im Speicher' vorgenommen.

+LOOP ( n1 -- )

Arbeitet im Wesentlichen wie LOOP. Allerdings wird der Index in der DO ... +LOOP-Schleife nicht um Eins erhöht, sondern +LOOP erwartet eine Zahl auf dem Stack, um die dann der Index verändert wird. Auch negative Zahlen sind möglich.

Ziffern

0< ( n -- f )

Dieses Wort testet die oberste Zahl daraufhin, ob sie kleiner ist als Null. Ist das der Fall, wird 'wahr' zurück gegeben, sonder 'falsch' (0).

0= ( n -- f )

Wie der Name schon sagt testet dieses Wort die oberste Zahl auf dem Stack daraufhin, ob sie gleich Null ist. Ist das der Fall, dann wird das Flag 'wahr' zurück gegeben, ansonsten 'falsch'. Dieser Test auf Null ist damit das Äquivalent zum logischen not-Operator.

0> ( n -- f )

Dieses Wort testet die oberste Zahl daraufhin, ob sie größer ist als Null. Ist das der Fall, wird 'wahr' zurück gegeben, sonder 'falsch' (0).

1+ ( n -- n+1 )

Dieses Wort erhöht die oberste Zahl auf dem Stack um Eins.

2! ( d addr -- )

Speichert die doppelte Zahl d bei der angegebenen Adresse im Speicher.

2/ ( n -- n )

Teilt die oberste Zahl auf dem Stack durch 2. Da dies durch ein einfaches Shiften der Zahl nach rechts geschieht ist dieser Befehl besonders effektiv.

2@ ( addr -- d )

Holt die doppelte Zahl d von der angegebenen Adresse aus dem Speicher des Computers.

2* ( n -- n )

Multipliziert die oberste Zahl auf dem Stack mit 2. Da dies durch ein einfaches Shiften der Zahl nach links geschieht ist dieser Befehl besonders effektiv.

2DROP ( d -- )

Dieses Wort entfernt die oberste Doppelzahl oder die beiden obersten zwei einfachen Zahlen vom Stack.

2DUP ( d -- d d )

Dieses Wort kopiert die oberste doppelte oder die beiden obersten einfachen Zahlen auf dem Stack und legt sie auf diesem ab.

2OVER ( d1 d2 -- d1 d2 d1 )

Dieses Wort kopiert die zweitoberste Doppelzahl oben auf den Stack. Entsprechend wird mit zwei einfachen Zahlen gearbeitet.

2SWAP ( d1 d2 -- d2 d1 )

Dieses Wort vertauscht die obersten beiden Doppelzahlen auf dem Stack. Analog ist die Behandlung von Paaren einfacher Zahlen; probieren sie es einfach aus.

A

ABORT" ( f -- )

Dieses Wort kann nur innerhalb einer Definition verwendet werden. Es erwartet auf dem Stack ein Flag, ist dieses Flag 'wahr' (ungleich Null), dann wird die hinter dem Wort stehende Meldung ausgegeben und ABORT ausgeführt.

ABS ( n -- n )

Hinterlegt den Absolutwert der obersten Zahl auf dem Stack dort.

ALLOT ( n -- )

Erhöht den Lexikonzeiger um die übergebene Zahl, damit kann zusätzlicher Platz, zum Beispiel für Variablen geschaffen werden. Da auch moderne Rechner Bytes adressieren können, arbeitet dieses Wort ebenfalls mit der Einheit Byte.

AND ( n1 n2 -- f )

Dieses Wort bildet die bitweise Und-Verknüpfung der beiden obersten Zahlen auf dem Stack.

B

BEGIN ( -- addr n Kompilierzeit )

Dieses Wort kommt in Konstruktionen wie
BEGIN ... UNTIL oder
BEGIN ... WHILE ... REPEAT
vor. BEGIN leitet also immer eine bedingte Schleife ein. Für die genaue Nutzung dieses Wortes sollte man sich das entsprechende Kapitel ansehen.

C

C! ( c addr -- )

Speichert das Zeichen c bei der angegebenen Adresse im Speicher.

C@ ( addr -- c )

Holt das Zeichen c von der angegebenen Adresse aus dem Speicher des Computers.

CMOVE ( from to count -- )

Kopiert zeichenweise die Inhalte der Speicherstellen von from nach to. Dabei werden count Bytes kopiert. Der Inhalt an der Speicherstelle from wird als erster kopiert. Man sollte darauf achten, dass man nicht in einen Bereich hineinkopiert, der vom Quellbereich überlagert wird.

CONSTANT ( n -- )

Erzeugt eine Konstante und legt den übergebenen Wert darin ab. Wird die so erzeugte Konstante später aufgerufen, gibt sie den Wert zurück.

CONTEXT

Eine Variable, die einen Zeiger auf das Vokabular enthält, in dem gesucht werden soll. In manchen Forth-Variationen ist die Sache ein bisschen komplizierter, man sollte im Zweifel im Handbuch nachsehen.

CONTEXT ( addr1 -- addr2 n )

Im Normalfall wird dieses Wort im Zusammenhang mit Zeichenketten verwendet. In Forth werden diese normalerweise mit einem führenden Längenbyte gespeichert. Wird die Adresse einer solchen Zeichenkette an COUNT übergeben, dann legt COUNT das Längenbyte auf den Stack und erhöht die Adresse auf den tatsächlichen Anfang der Zeichenkette. So kann die Zeichenkette sofort mit TYPE oder MOVE verwendet werden.

CR

Gibt auf dem Bildschirm ein Carriage Return und ein Line Feed aus, positioniert also den Cursor am Beginn der folgenden Zeile.

CREATE ( -- )

Erzeugt einen neuen Namen im Dictionary. Wird dieser Name später aufgerufen, dann legt er seine PFA auf den Stack. CREATE reserviert allerdings keinen Speicher!

CURRENT

Eine Benutzervariable, die einen Zeiger auf das Vkcabular enthält, an das neue Worte angehängt werden sollen.

D

D< ( d1 d2 -- f )

Vergleicht die beiden obersten doppelten Zahlen auf dem Stack. Es wird dabei getestet, ob d1 kleiner als d2 ist.

D< ( d1 d2 -- f )

Teste, ob die beiden obersten doppelten Zahlen auf dem Stack gleich sind.

D- ( d1 d2 -- d3 )

Subtrahiert die beiden obersten doppelten Zahlen auf dem Stack.

D.

Gibt die beiden oberen Einträge des Stacks als eine doppelte Zahl aus.

D.R ( d n -- )

Gibt die doppelte Zahl d rechtsbündig in einem Feld der Breite n aus.

D+ ( d1 d2 -- d3 )

Addiert die beiden obersten doppelten Zahlen auf dem Stack.

D0= ( d -- f )

Testet, ob die oberste doppelte Zahl auf dem Stack gleich Null ist.

DABS ( d -- d )

Gibt den Absolutbetrag der obersten doppelten Zahl auf dem Stack zurück.

DECIMAL ( -- )

Sorgt dafür, dass das dezimale Zahlsystem eingeschaltet wird. Dieses Wort ist vor allem dann sinnvoll, wenn man mit der Zahlenbasis rumgespielt hat und nicht mehr weiter weiß.

DEFINITIONS

Damit kann ein Vokabular zur Erweiterung ausgewählt werden. Tatsächlich wird der Wert der Variablen CONTEXT in die Variable CURRENT kopiert.

DMAX ( d1 d2 -- dmax )

Legt die größere von zwei doppelten Zahlen auf dem Stack.

DMIN ( d1 d2 -- dmin )

Legt die kleinere von zwei doppelten Zahlen auf dem Stack.

DNEGATE ( d -- -d )

Ändert bei der obersten Zahl auf dem Stack das Vorzeichen.

DO ( n1 n2 -- Laufzeit / addr n -- Kompilierzeit

Dieses Wort darf nur in Doppelpunktdefinitionen gebraucht werden und nur in Verbindung mit LOOP. Zur Laufzeit werden die Werte n1 und n2 auf den Returnstack gelegt. Dabei ist n1 die Schleifengrenze und n2 der Schleifenindex. Wird das Wort LOOP gefunden, dann wird der Index um Eins erhöht. Ist er gleich oder größer als die Grenze, dann wird hinter LOOP wobei die Schleifenwerte zunächst vom Returnstack genommen werden. Ansonsten macht Forth hinter DO weiter. Innerhalb der Schleife kann mit I auf den Index der Schleife zugegriffen werden.

DOES> ( -- addr )

Legt bei der Anlage eines Wortes mit CREATE den Laufzeitkode aller Wörter fest, die mit diesem Wort definiert werden.

DROP ( n -- )

DROP entfernt einfach die oberste Zahl vom Stack.

DUMP ( addr n -- )

DUMP ist kein Forth-Wort! Es wird hier im Rahmen der Untersuchung von Speicher und Speicherbefehlen vorgestellt. Mit DUMP kann man sich n Zeilen a 16 Bytes des Speichers ab der Adresse addr anzeigen lassen.

DUP ( n -- n n )

DUP verdoppelt einfach die oberste Zahl auf dem Stack.

E

ELSE ( addr1 n1 -- addr2 n2 (Kompilierzeit) )

Leitet in einer 'IF ... ELSE ... THEN'-Umgebung den Teil des Kodes ein, der ausgeführt wird, wenn das Flag vor IF falsch war. ELSE darf nur innerhalb dieser Konstruktion und auch nur in einer Doppelpunktdefinition verwendet werden.

EMIT ( n -- )

Das Wort erwartet eine Zahl auf dem Stack und gibt das entsprechende (ASCII)-Zeichen aus. Bei den meisten Forthsystemen wird dabei die ASCII-Kodierung zugrunde gelegt.

EXECUTE ( addr -- )

Das Wort erwartet einen Code-Pointer auf dem Stack und führt dieses Wort dann einfach aus.

EXIT

Beendet die Interpretation der aktuell bearbeiteten Definition. Der Returnstack sollte dabei nicht verändert sein, also sollte EXIT auch nicht in einer DO ... LOOP - Konstruktion aufgerufen werden.

EXPECT ( addr count -- n )

Liest bis zu count Zeichen ein und legt sie bei addr ab. Wenn vorher die Returntaste gedrück wird, bricht EXPECT ab. Zurück gegeben wird die tatsächliche Anzahl Zeichen ohne das Return.
In manchen Forth-Varianten heißt dieses Wort auch ACCEPT.

F

FILL ( addr u b -- )

Wenn u nicht Null ist, dann werden ab der Adresse addr u Bytes mit dem Wert b gefüllt.

FIND ( addr -- xt )

Das Wort erwartet an der Adresse einen String (mit führendem Längenbyte) und sucht in der aktuellen Suchordnung nach einem Wort das auch so heißt. Wird das Wort gefunden, dann wird eine 1 zurückgegeben, wenn das Wort nicht IMMEDIATE ist, ansonsten eine -1. Außerdem wird die Adresse des ersten Codefields zurück gegeben. Wird das Wort nicht gefunden, dann wird Null und die ursprüngliche Adresse zurück gegeben.

FORTH

Macht FORTH wieder zum Vokabular an das neue Worte angehängt werden.

G

H

HEX ( -- )

Schaltet auf hexadezimale Zahldarstellung um.

HOLD

HOLD bekommt eine Zahl auf dem Stack übergeben und fügt das entsprechende Zeichen in eine auszugebende Ziffernfolge einer Zahl ein. Damit können beliebige Zeichen in eine Ziffernfolge eingefügt werden.

I

I ( -- n )

Dieses Wort kopiert den obersten Wert des Returnstacks auf den Zahlenstack. Da der oberste Wert des Returnstacks in einer DO-Schleife den Index enthält, kann auf diese Art und Weise auf den Schleifenindex Bezug genommen werden.

IF ( f -- (Laufzeit) / -- addr n (Kompilierzeit) )

Das Wort IF darf nur in einer Doppelpunktdefinition verwendet werden. Es tritt dabei in der Form 'IF ... THEN' oder in der Form 'IF ... ELSE ... THEN' auf.
Zur Laufzeit nimmt das Wort die oberste Zahl vom Stack und interpretiert diese als Flag. Ist das Flag war, also nicht Null, dann wird der Teil hinter dem IF bis zum THEN oder, wenn es angegeben ist, bis zum ELSE ausgeführt und danach hinter dem THEN weiter gemacht. Ist es falsch, dann wird der Teil, der zwischen ELSE und THEN steht ausgeführt und danach auch wieder hinter THEN weiter gemacht.
Bei der Kompilierung kompiliert IF ein 0BRANCH ins Wörterbuch und reserviert Platz für eine Adresse. Die Adresse und die Nummer wird später für die Sprungadressen gebraucht.

INTERPRET

INTERPRET nimmt das nächste Wort aus der Eingabe entgegen und versucht es auszuführen. Gelingt das nicht, zum Beispiel weil ein Wort nicht existiert, dann versucht INTERPRET das Wort als Zahl zu verstehen. Gelingt auch das nicht, wird eine Fehlermeldung ausgegeben.

J

J ( -- n )

Dieses Wort kopiert den drittobersten Wert des Returnstacks auf den Zahlenstack. Da dieser Wert des Returnstacks in einer verschachtelten DO-Schleife den Index der äußeren Schleife enthält, kann auf diese Art und Weise auf den Schleifenindex Bezug genommen werden.

K

KEY ( -- c )

Holt einen Tastendruck von der Tastatur und legt seine ASCII-Entsprechung auf den Stack.

KEY? ( -- ff )

Testet, ob an der Tastatur ein Zeichen eingegeben wurde und legt ein entsprechendes Flag auf den Stack. Ist das der Fall, dann wird dieses Zeichen beim nächsten Aufruf von KEY sofort geholt.

L

LEAVE

Bricht eine DO ... LOOP oder DO ... +LOOP Schleife sofrt ab. Es gibt unterschiedliche Verfahren diesen Abbruch zu erzwingen. Manche Implementaionen von Forth arbeiten so, dass LEAVE einfach die Grenze so setzt, dass beim nächsten Erreichen von LOOP oder +LOOP die Schleife beendet wird; manche sorgen für einen sofortigen Abbruch und eine direkte Fortsetzung des Ablaufs hinter LOOP.

LOOP ( -- Laufzeit addr n -- Kompilierzeit )

LOOP ist das 'Endwort' einer festgelegten Schleife mit DO ... LOOP. Es erhöht den Index auf dem Returnstack um Eins und testet dann, ob der Wert gleich oder größer als die Grenze ist. Ist das der Fall, werden beide Werte vom Returnstack genommen und hinter LOOP die Ausführung weiter geführt. Ist das nicht der Fall, dann wird hinter DO verzweigt.

M

MAX ( n1 n2 -- nmax )

Legt von zwei Zahlen die größere wieder auf dem Stack ab.

MIN ( n1 n2 -- nmin )

Legt von zwei Zahlen die kleinere wieder auf dem Stack ab.

MOD ( u1 u2 -- u-rest )

Dieses Wort dividiert die beiden vorzeichenlosen Zahlen u2 durch u2 und legt den Divisionsrest auf den Stack. Er ist damit das direkte Gegenstück zum (Ganzzahl)Divisionswort /.

N

NOT ( n1 -- f )

Dieses Wort, in 'lina' gibt es dieses Wort nicht, interpretiert die oberste Zahl auf dem Stack als Wahrheitswert und dreht diesen um, aus 'wahr' wird 'falsch' und umgekehrt. Dieses Wort ist somit gleichbedeutend mit '0='.

NUMBER ( addr -- n/d )

Erwartet eine Adresse und wandelt die Zeichenkette, die dort liegt in eine Zahl um, wobei die aktuelle Zahlenbasis berücksichtigt wird. Enthält die Zeichenkette eine der Zeichen, die eine doppelte Zahl kennzeichnen, wird eine doppelte Zahl, sonst eine einfache Zahl zurück gegeben.

O

OR ( n1 n2 -- f )

Dieses Wort bildet die bitweise OderVerknüpfung der beiden obersten Zahlen auf dem Stack.

OVER ( n1 n2 -- n1 n2 n1 )

OVER kopiert den zweitobersten Zahlenstackeintrag an die oberste Stelle des Stacks.

P

Q

QUIT

QUIT ist die oberste Interpreterebene. Wird dieses Wort aufgerufen, wird der Returnstack geleert, jede Kompilierung beendet und dem Anwender ermöglicht Eingaben zu machen, die dann bearbeitet werden können. Quit ist in der Regel eine Endlosschleife.

R

REPEAT

REPEAT beendet eine BEGIN ... WHILE ... REPEAT Schleife und sorgt dafür, dass die Worte hinter BEGIN ausgeführt werden. Eine Bedingung wir von REPEAT nicht ausgewertet.

ROT ( n1 n2 n3 -- n2 n3 n1 )

ROT rotiert die obersten drei Einträge auf dem Stack, so dass der Eintrag, welcher der drittoberste war an die oberste Stelle kommt.

S

SIGN

Dieses Wort schreibt ein Minuszeichen vor eine auszugebende Ziffernfolge. Das Wort wird üblicherweise unmittelbar vor #> verwendet und das Minuszeichen wird nur dann geschrieben, wenn die drittoberste Zahl auf dem Stack negativ ist.

SPACE

Gibt auf dem Bildschirm ein einfaches Leerzeichen aus.

SPACES ( n -- )

Dieses Wort erwartet auf dem Stack eine Zahl und gibt die entsprechende Anzahl an Leerzeichen aus.

SWAP ( n1 n2 -- n2 n1)

SWAP tauscht einfach die beiden obersten Zahlen auf dem Zahlenstack.

T

THEN ( addr n -- (Kompilierzeit) )

Beendet die 'IF ... ELSE ... THEN'-Umgebung. Nach Auswertung des Flags durch IF wird entweder der wahre oder der falsche Teil ausgeführt und danach in jedem Fall hinter dem THEN weiter gemacht. Auch THEN darf nur in Kombination mit IF und ggf. ELSE und in einer Doppelpunktdefinition verwendet werden.

TYPE ( addr n -- )

Erwartet auf dem Stack eine Anfangsadresse und ein Längenbyte einer Zeichenkette und gibt diese auf dem Bildschirm aus.

U

U/MOD ( u1 u2 -- f )

Prüft vorzeichenlos, ob die Zahl u1 kleiner ist als die Zahl u2.

U/MOD ( ud u1 -- u2 u3 )

Dividiert die doppelte Zahl u durch eine einfache Zahl. Das Ergebnis besteht aus einem einfachen Quotienten und einem einfache Rest.

U. ( u -- )

Gibt die einfache Zahl auf dem Stack als vorzeichenlose Zahl aus.

U* ( u1 u2 -- ud )

Multipliziert zwei einfache vorzeichenlose Zahlen zu einer vorzeichenlosen doppelten Zahl.

UNTIL ( f -- Laufzeit ) ( addr n -- Kompilierzeit )

Stellt das Ende einer BEGIN ... UNTIL-Schleife dar. UNTIL wertet die oberste Zahl auf dem Stack als Flag aus und entscheidet dann über den weiteren Ablauf des definierten Wortes. Ist das Flag 'wahr', dann verzweigt die weitere Ausführung hinter UNTIL. Ist es 'falsch', dann wird hinter dem einleitenden BEGIN weiter gemacht.

V

VARIABLE

Mit VARIABLE cccc wird eine Variable mit dem Namen cccc für eine Datenzelle erzeugt. Bei Verwendung von VARIABLE wird eine Adresse zurück gegeben, die auf den Speicher zeigt, in dem die Daten dann abgelegt werden können. Der Platz für die Daten kann mit ALLOT vergrößert werden.

VOCABULARY

Mit diesem Wort kann ein neues Vokabular angelegt werden. Es wird in der Form VOCABULARY cccc aufgerufen, wobei cccc der Name des neuen Vokabulars ist.

W

WHILE

In einer BEGIN ... WHILE ... REPEAT-Schleife wird die Bedinung zum weiteren Schleifendurchlauf mit WHILE getestet. Die Schleife wird weitergeführt, wenn die oberste Zahl auf dem Stack 'wahr' ist. In diesem Fall werden die Worte hinter WHILE ausgeführt bis REPEAT erreicht wird. Von dort aus verzweigt aus Ausführung wieder auf das erste Wort hinter BEGIN.
Ist das Flag hingegen 'falsch', dann wird die Ausführung auf die Worte hinter REPEAT verzweigt und so die Schleife verlassen.

WORD ( c -- addr )

Durchsucht die Eingabe nach dem Zeichen c, das als Trennzeichen dient (meist Leerzeichen). Der Teil der Eingabe, der sich so trennen lässt, wird an eine andere Stelle kopiert und dort mit führendem Längenbyte abgespeichert.

X

Y

Z