Glossarium des Z80 FORTH 83 der IG Forth
Der Aufbau einer Wortbeschreibung im Glossarium:
Wortname -- M, "aussprache"
ausfuehrliche Beschreibung des Wortes Wortname
Dabei bedeutet Wortname das jeweilige FORTH-Wort und
"aussprache", gibt die englische Sprechweise desselben an, wenn
diese nicht aus dem Wort selbst hervorgeht.
-- entspricht der Stackbilanz des Wortes.
Links von --
stehen die Stackparameter (Angaben ueber den Stack) vor und
rechts nach Abarbeitung des Wortes. Dabei ist zu beachten,
dass auf der linken und rechten Seite von -- der am weitesten
rechts stehende Wert die Datenstackspitze darstellt.
Die jeweiligen Wortnamen sind durch Fettdruck hervorgehoben. Die
in den Erlaeuterungen der Worte ebenfalls durch Fettdruck her-
vorgehobenen Woerter verweisen auf andere Definitionen, die
gleichfalls im Glossarium aufgefuehrt und beschrieben sind.
Die letzte Positon der Kopfzeile gibt weitere Informationen
ueber die Worte:
I Immediate-Wort
C nur im Compilemode benutzen
E nur im Executemode
M diese Worte koennen Multitask-Applikationen beeinflussen.
U User-Variable
Voc Vokabular
Vec Vektor, der auf andere Worte zeigen kann.
Fals das Wort nicht im Grundvokabular FORTH enthalten ist,
erfolgt die Angabe des entsprechenden Woerterbuches.
Erlaeuterung der Stackparameter:
Stackab- Zahlentyp Zahlenbereich min. Feld-
kuerzung weite (Bit)
________________________________________________________________
flag Boolsche Groesse 0=falsch, sonst wahr 16
wahr Boolsche Groesse -1 (als Ergebnis) 16
falsch Boolsche Groesse 0 16
b Bit 0 ... 1 1
char Zeichen 0 ... 127 7
8b 8 beliebige Bits nicht angebbar 8
(Byte)
16b 16 beliebige Bits nicht angebbar 16
n Zahl (gewichtete -32768 ... 32767 16
Bits)
+n positive Zahl 0 ... 32767 16
u vorzeichenlose 0 ... 65535 16
Zahl
w nichtspezifi- -32768 ... 65535 16
zierte Zahl
(n oder u)
adr Adresse (gleich u) 0 ... 65535 16
32b 32 beliebige Bits nicht angebbar 32
doppelt genaue -2147483648 ... 32
Zahl 2147483647
+d positive doppelt 0 ... 2147483647 32
genaue Zahl
ud vorzeichenlose 0 ... 4294967295 32
doppelt genaue Zahl
wd nichtspezifi- -2147483648 ... 32
zierte doppelt 4294967295
genaue Zahl (d
oder u)
sys 0, 1 oder mehrere nicht angebbar nicht
systemabhaengige angebbar
Stackeintragungen
! 16b adr -- "store"
16b wird in adr abgespeichert
!CSP -- "store-c-s-p"
Mit diesem Befehl wird der Inhalt des Datenstackzeigers in
CSP gerettet. Er wird zur Erhoehung der Uebersetzungssicher-
heit verwendet.
" --
Compiliert in :-Definitionen einen String ins Worterbuch mit
der Laufzeitroutine ("). Waehrend Runtime werden Adresse und
Laenge des Strings auf den Stack hinterlegt.
# +d1 -- +d2 "sharp"
Ausgabekonvertierungsschritt (+d1 / Zahlenbasis), Ergebnis
+d2; aus Divisionsrest generiertes Zeichen wird vor dem er-
sten Zeichen der Ausgabekette angefuegt.
#> 32b -- adr +n "sharp-greater"
Beendigung der Ausgabekonvertierung, Entfernen des 32b-Wer-
tes. adr ist Adresse, +n Laenge der Zeichenkette (Format fuer
TYPE).
#LINE -- adr U "sharp-line"
Ist eine System-Variable. Der Inhalt der Adresse (adr)
entspricht der Anzahl der CR, die seit dem letzten Rueck-
setzen ausgesandt wurden.
#OUT -- adr U
Ist eine Systemvariable, die einen Wert enthaelt, der durch
EMIT inkrementiert wird. Der Benutzer kann #OUT auslesen oder
veraendern, um die Display-Formatierung zu steuern.
#S +d -- 0 0 "sharp-s"
Folge von Konvertierungsschritten an +d, Generierung der
Ausgabezeichenkette so lange, bis bei #-Teilschritt 0
entsteht. Fuer +d = 0 Uebernahme einer einzelnen 0 in
Ausgabezeichenkette. Vgl. <# #>
#TIB -- adr "number-t-i-b"
Adresse der Variablen, die die aktuelle Byteanzahl im Text-
eingabepuffer enthaelt.
#THREADS -- n "sharp-threads"
Ist eine System-Konstante (Anzahl der Hash-Faeden). Vgl. HASH
#USER -- addr
Systemvariable, die den Offset zum ersten unbelegten Feld im
USER-Area enthaelt. Sie wird bei Definition von USER-Variablen
und -Vektoren automatisch nachgestellt.
#VOCS -- n "sharp-vocs"
Ist eine System-Konstante, maximale Anzahl der Woerterbue-
cher, die durch CONTEXT in der Reihenfolge festgelegt und
durchsucht werden (siehe auch ORDER).
' -- adr M, "tick"
Mit ' Wortname wird die Compilationsadresse (CFA) von
Wortname ermittelt. Fehler: Wortname kann in der aktuellen
Suchreihenfolge nicht gefunden werden.
'RAM n -- adr
Vok.: I/O
rechnet die Blocknummer n in die Adresse des Blockes in der
RAM-Disk um. Prueft dabei, ob der Block ueberhaupt verfuegbar
ist; sonst ABORT.
'TIB -- adr "tick-t-i-b"
Ist eine Variable, welche die Anfangsadresse des TIB ent-
haelt. Durch Aenderung des Inhalts von 'TIB kann der Anfang
des TIB beliebig veraendert werden.
( -- I, M, "paren"
Kommentarzeichen. Mit ( ccc) wird der Kommentar ccc einge-
geben, Abschluss durch ). Keine Verarbeitung von ccc; Das
Leerzeichen nach ( zaehlt nicht zum Text.
(.) n -- a c
Ist die Kern-Routine von ., Konvertierung von n als String
in PAD.
(.") --
Vok.: HIDDEN
Die durch ." compilierte Laufzeit-Routine, uebertraegt den
nachfolgenden Text bis " auf die Konsole.
(") -- a c
Vok.: HIDDEN
Die durch " compilierte Laufzeit-Routine, hinterlaeszt
Adresse und Count des folgenden Textes auf dem Datenstack.
(+LOOP) n --
Vok.: HIDDEN
Ist die Laufzeit-Routine von +LOOP (siehe dort).
(;CODE) --
Vok.: HIDDEN
Ist die durch ;CODE (siehe dort) compilierte Laufzeit-Rou-
tine.
(;USES) --
Vok.: HIDDEN
Ist die durch ;USES (siehe dort) complilierte Laufzeit-
Routine.
(?DO) n1 n2 --
Vok.: HIDDEN
Ist die Laufzeit-Routine von ?DO.
Sind beide Zahlen gleich, so wird die Schleife uebersprungen.
Im anderen Fall beinhaltet sie die gleiche Funktion wie (DO)
(?LEAVE) flag --
Vok.: HIDDEN
Ist die Laufzeit-Routine von ?LEAVE.
(ABORT") flag --
Vok.: HIDDEN
Ist die Laufzeit-Routine von ABORT" (siehe dort).
(CONSOLE) c -- I/O
Vok. I/O
gibt das Zeichen c nur auf dem Bildschirm aus.
(D.) d -- a c
Ist die Kern-Routine von D..Konvertierung von d in einen
String in PAD.
(DO) w1 w2 --
Vok.: HIDDEN
Ist die Laufzeit-Routine von DO (siehe dort).
(EMIT) c -- I/O
Vok.: I/O
gibt Zeichen auf Bildschirm und bei PRINTING ON auch auf dem
Drucker aus. Standartvoreinstellung fuer EMIT.
(FIND) adr1 -- adr2 flag
Vok.: HIDDEN
Ist die Laufzeit-Routine von FIND (siehe dort).
(FORGET) adr --
Vok.: HIDDEN
Vergisst Teil des Woerterbuches ab spezifizierter Adresse.
(IS) adr -- (comp.Mod.)
Ist die Laufzeit-Routine von IS (siehe dort).
Schreibt die cfa des folgenden DEFER-ierten Wortes (Vector)
in die Adresse (adr).
(LEAVE) --
Vok.: HIDDEN
Ist die Laufzeit-Routine von LEAVE (siehe dort).
(LIT) n --
Vok.: HIDDEN
Wird innerhalb einer Doppelpunktdefinition automatisch vor
jede 16-Bit-Zahl n, die im Eingabetext bereitgestellt wird,
compiliert. Bei der Ausfuehrung von (LIT) wird der Inhalt der
auf (LIT) folgenden Woerterbuchadresse auf den Datenstack
gelegt.
(LOOP) --
Vok.: HIDDEN
Ist die Laufzeit-Routine von LOOP (siehe dort).
(KEY) -- c I/O
Vok.: I/O
holt ein Zeichen von der Tastatur. Standartvoreinstellung
fuer KEY.
(KEY?) -- f I/O
Vok.: I/O
Prueft den Status der Tastatur. f=TRUE, wenn eine Taste
gedrueckt war. Standartvoreinstellung fuer KEY?.
(NUMBER?) adr -- d f
Vok.: HIDDEN
wandelt einen Zifferstring in adr+1 in eine doppeltgenaue
Integer-Zahl, die ein fuehrendes Minuszeichen haben darf. Der
String muss mit BL abgeschlossen sein. Als Decimalpunkt,
dessen Position in DPL uebergeben wird, gelten: .-,/
Das Flag teilt mit, ob eine konvertierbare Zahl vorlag.
(PRINT) c -- I/O
Vok.: I/O
gibt das Zeichen nur auf den Drucker aus.
(U.) u -- a c
Ist die Kern-Routine von U.. Konvertiert u in einen String in
PAD.
* w1 w2 -- w3 "star"
w3 = niederwertige 16 Bit des arithmetischen Produkts w1 * w2
*/ n1 n2 n3 -- n4 "times-divide"
Berechnung (n1 * n2) mit 32-Bit-Ergebnis, anschl. Division
durch n3 . n4 ist der Quotient entsprechend den Rundungs-
regeln. Fehler: Division durch 0 oder n4 ausserhalb des
Bereichs -32768...+32767.
*/MOD n1 n2 n3 -- n4 n5
"times-divide-mod"
Funktion wie bei */, jedoch zusaetzlich Uebergabe des Divi-
sionsrests n5 (gleiches Vorzeichen wie n4 bzw. gleich 0).
*D n1 n2 -- d "star-d"
Multipliziert zwei 16-bit-Zahlen (n1 und n2) und hinterlaesst
auf dem Datenstack eine 32-bit-Zahl (d).
+ w1 w2 -- w3
w3 ist die arithmetische Summe w1 + w2.
+! w1 adr -- "plus-store"
w1 wird zum Wert w in <adr> addiert Vgl. + ), die Summe
ersetzt w in <adr>.