+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.