Documentation: CP/M specific words

This commit is contained in:
Carsten Strotmann 2020-06-28 16:26:46 +02:00
parent c7f5bfbb7b
commit 46dd9ebcd0

View File

@ -1,15 +1,16 @@
.HE CP/M 2.2 - spezifische Worte
#bs ( -- n ) "number-backspace"
n ist der Ascii-Wert f}r Backspace.
#+Title: CP/M 2.2 - spezifische Worte
#cr ( -- n ) "number-c-r"
n ist der Ascii-Wert f}r Carriage-Return.
* =#bs ( -- n )= "number-backspace"
n ist der Ascii-Wert für Backspace.
* =#cr ( -- n )= "number-c-r"
n ist der Ascii-Wert für Carriage-Return.
#esc ( -- n ) "number-escape"
n ist der Ascii-Wert f}r Escape.
n ist der Ascii-Wert für Escape.
#lf ( -- n ) "number-linefeed"
n ist der Ascii-Wert f}r Linefeed.
n ist der Ascii-Wert für Linefeed.
(at ( row col -- ) "paren-at"
Positioniert den Cursor in die Zeile row, Spalte col und setzt OUT.
@ -26,7 +27,7 @@
(cr ( -- ) "paren-c-r"
Setzt den Cursor in die erste Spalte der n{chsten Zeile. PAUSE wird
ausgef}hrt.
ausgeführt.
(decode ( addr pos1 key --- addr pos2 ) "paren-decode"
Wertet key aus. key wird in der Speicherzelle addr+pos1 abgelegt und
@ -35,7 +36,7 @@
Control-S und Control-D beeinflussen nur pos1 und den Cursor. Ctrl-G
l|scht das Zeichen unter dem Cursor und dekrementiert SPAN.
Backspace (Control-H) und Delete ($7F) l|schen das Zeichen links vom
Cursor und dekrementieren pos1 und SPAN. Control T f}gt an der
Cursor und dekrementieren pos1 und SPAN. Control T fügt an der
Cursorposition ein Leerzeichen ein. SPAN wird inkrementiert. Return
positioniert den Cursor auf das letzte Zeichen.
Vergleiche INPUT: und (EXPECT.
@ -45,7 +46,7 @@
Vergleiche auch DEL.
(emit ( 8b -- ) "paren-emit"
Gib 8b auf dem Bildschirm aus. Ein PAUSE wird ausgef}hrt. Alle Werte
Gib 8b auf dem Bildschirm aus. Ein PAUSE wird ausgeführt. Alle Werte
werden als Zeichen ausgegeben. Steuercodes sind nicht m|glich, d.h.
alle Werte < $20 werden als Punkt "." ausgegeben.
Vergleiche CON! und EMIT.
@ -55,16 +56,16 @@
abgelegt werden. Ein Echo der Zeichne wird ausgegeben. Return be
endet die Eingabe vorzeitig. Ein abschlie~endes Leerzeichen wird
immer ausgegeben. Die L{nge der Zeichenkette wird in der Variablen
SPAN }bergeben. Vergleiche EXPECT.
SPAN übergeben. Vergleiche EXPECT.
.PA
(key ( -- char ) "paren-key"
Wartet auf einen Tastendruck. W{hrend der Wartezeit wird PAUSE
ausgef}hrt. Die untersten 7 Bit von char enthalten den Ascii-Code
der gedr}ckten Taste. Steuerzeichen werden nicht ausgewertet,
ausgeführt. Die untersten 7 Bit von char enthalten den Ascii-Code
der gedrückten Taste. Steuerzeichen werden nicht ausgewertet,
sondern unver{ndert abgeliefert. Vergleiche KEY.
(key? ( -- flag ) "paren-key-question"
flag ist TRUE, wenn eine Taste gedr}ckt wurde, sonst false.
flag ist TRUE, wenn eine Taste gedrückt wurde, sonst false.
Vergleiche auch KEY?.
(page ( -- ) "paren-page"
@ -75,13 +76,13 @@
Ist r/wf<>FALSE, wird der Forth-Block mit der absoluten Blocknummer
blk von der Diskette gelesen. Ist r/wf=FALSE so wird er geschrieben.
adr gibt die Addresse des Block-Puffers an. file mu~ null sein, da
(r/w den Zugriff auf Files nicht unterst}tzt. flag ist TRUE wenn ein
(r/w den Zugriff auf Files nicht unterstützt. flag ist TRUE wenn ein
Diskettenfehler vorlag.
(type ( addr len -- ) "paren-type"
Gibt den String, der im Speicher bei addr beginnt und die L{nge len
hat, auf dem Blidschirm aus. Genau ein PAUSE wird nach der Ausgabe
ausgf}hrt. Vergleiche TYPE, OUTPUT: und (EMIT.
ausgführt. Vergleiche TYPE, OUTPUT: und (EMIT.
/drive ( blk -- blk' drv ) "per-drive"
blk gibt die absolute Nummer eines Forth-Blocks an. /DRIVE
@ -90,7 +91,7 @@
Laufwerks hat. Siehe DRV?, >DRIVE.
>drive ( blk drv -- block' ) "to-drive"
blk gibt die relative Blocknummer eine Forth-Blocks bez}glich des
blk gibt die relative Blocknummer eine Forth-Blocks bezüglich des
Anfangs von Laufwerk drv an. >DRIVE berechnet daraus, unter welcher
Blocknummer dieser Block beim momentanen Stand von OFFSET erreicht
werden kann (block'). In gewisser Weise Umkehrung von /DRIVE.
@ -99,7 +100,7 @@
Ist f=FALSE, so wird "beyond capacity" als Fehlermeldung ausgegeben.
?drive ( n -- n ) "question-drive"
]berpr}ft, ob das Laufwerk n existiert, und gibt "beyond capacity"
]berprüft, ob das Laufwerk n existiert, und gibt "beyond capacity"
als Fehlermeldung aus, wenn dies nicht der Fall ist.
b/blk ( -- b/blk ) "bytes-per-block"
@ -108,7 +109,7 @@ b/blk ( -- b/blk ) "bytes-per-block"
bios ( -- addr ) "bios"
Adresse eines 8080-Unterprogramms, das einen Sprung ins BIOS aus
f}hrt. Das Low-Byte der Einsprungadresse steht dabei in HL. Wird von
führt. Das Low-Byte der Einsprungadresse steht dabei in HL. Wird von
con!, (key?, getkey und read/write benutzt.
blk/drv ( -- #blk ) "blocks-per-drive"
@ -138,7 +139,7 @@ dark ( -- ) "dark"
display ( -- ) "display"
Ein mit OUTPUT: definiertes Wort, das den Bildschirm als Ausgabe
ger{t anw{hlt, wenn es ausgef}hrt wird. Die Worte EMIT, CR, TYPE,
ger{t anw{hlt, wenn es ausgeführt wird. Die Worte EMIT, CR, TYPE,
DEL, PAGE, AT, und AT? beziehen sich dann auf das aktuelle Terminal.
Siehe TERMINAL:.
@ -156,7 +157,7 @@ drv! ( drv f -- dph ) "drive-store"
nach einem CP/M Warmstart handelt. dph ist die Adresse des CP/M
Disk-Parameter-Headders. (Siehe CP/M Operating System Manual)
Ist dph=0, so ist das angesprochene Laufwerk in diesem Komputer
system nicht unterst}tzt.
system nicht unterstützt.
drv? ( blk -- drv ) "drive-question"
blk gibt die absolute Nummer eines FORTH-Blocks an, DRV? berechnet
@ -164,11 +165,11 @@ drv? ( blk -- drv ) "drive-question"
Siehe /DRIVE, >DRIVE.
drv0 ( -- ) "drive-zero"
W{hlt Laufwerk 0 (A) als aktuelles Laufwerk f}r R/W an. Siehe DRIVE
W{hlt Laufwerk 0 (A) als aktuelles Laufwerk für R/W an. Siehe DRIVE
und >DRIVE.
drv1 ( -- ) "drive-one"
W{hlt Laufwerk 1 (B) als aktuelles Laufwerk f}r R/W an. Siehe DRIVE
W{hlt Laufwerk 1 (B) als aktuelles Laufwerk für R/W an. Siehe DRIVE
und >DRIVE.
drvinit ( -- ) "drive-init"
@ -178,7 +179,7 @@ drvinit ( -- ) "drive-init"
default-Laufwerk selektiert.
dumb ( -- ) "dumb"
Ein mit TERMINAL: definiertes Wort, das ein ignorantes Terminal
anw{hlt, wenn es ausgef}hrt wird. CURON, CUROFF, CURLEFT, CURRITE,
anw{hlt, wenn es ausgeführt wird. CURON, CUROFF, CURLEFT, CURRITE,
RVSON, RVSOFF, DARK und LOCATE haben dann keine Wirkung. Mit ihnen
auch die sie benutzenden Worte (PAGE, (AT, (DEL. Wenn DISPLAY
eingeschaltet ist, sind also auch PAGE, AT und DEL wirkungslos.
@ -187,7 +188,7 @@ dumb ( -- ) "dumb"
getkey ( -- char ) "getkey"
die unteren 7 Bit von char enthalten den Ascii-Code des letzten
Tastendrucks. Ist noch keine Taste gedr}ckt, dann wartet getkey.
Tastendrucks. Ist noch keine Taste gedrückt, dann wartet getkey.
Siehe auch KEY? und KEY.
home ( -- ) "home"
@ -237,22 +238,22 @@ sec! ( sec -- ) "sec-store"
sec ist der beim n{chsten Diskettenzugriff zu verwendende Sektor.
.PA
Term: ( offset -- offset' ) "term-colon"
Ein definierendes Wort f}r Terminalfunktionen. Wird benutzt um die
Ein definierendes Wort für Terminalfunktionen. Wird benutzt um die
einzelnen Komponenten eines Terminal-Vektors zu definieren.
Vordefinierte Terminalfunktionen sind CURON, CUROFF, CURLEFT,
CURRITE, RVSON, RVSOFF, DARK und LOCATE. Siehe auch TERMINAL:
Terminal: ( -- ) "terminal-colon"
Ein definierendes Wort f}r Terminals. Benutzt in der Form:
Ein definierendes Wort für Terminals. Benutzt in der Form:
Terminal: <name>
newCURON newCUROFF newCURLEFT newCURRITE
newRVSON newRVSOFF newDARK newLOACTE ;
TERMINAL: erzeugt einen Kopf f}r <name> im Dictionary und kompiliert
einen Vektor von Zeigern auf Worte die f}r die Ausf}hrung von Ter
minalfunktionen zust{ndig sind. Wird <name> ausgef}hrt, so werden
TERMINAL: erzeugt einen Kopf für <name> im Dictionary und kompiliert
einen Vektor von Zeigern auf Worte die für die Ausführung von Ter
minalfunktionen zust{ndig sind. Wird <name> ausgeführt, so werden
die Terminalfunktionen von <name> zu den aktuellen Terminal
funktionen gemacht, das Terminal <name> ist damit aktiv. Terminal
funktionen werden von AT, PAGE, DEL ausgef}hrt, wenn die Ausgabe auf
funktionen werden von AT, PAGE, DEL ausgeführt, wenn die Ausgabe auf
DISPLAY geschaltet ist. Siehe OUTPUT:, DISPLAY, DUMB.
trk! ( trk -- ) "track-store"