? adr -- "question" Druckt den Inhalt der Adresse adr aus (in freiem Format und in Uebereinstimmung mit der aktuellen Zahlenbasis). ?BRANCH flag -- C, "question-branch" Vok.: HIDDEN In COMPILE ?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 -- 0 Dupliziere 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.