mcForth - Befehle

Hier eine Zusammenfassung der Befehle für mcForth:

Konstanten:
TRUE FALSE BL( Konstanten für Vergleiche, Leerzeichen )
#MSB #BITS( Wortgröße )
#TB #C/TB #FB #C/FB( Größe von Terminal- und Filepuffer )
Speicherzugriffe:
XFREE XALLOC( Externer Speicher reservieren )
X+ >X P>X( Umrechnung FORTH-Speicher zu extern )
!X C!X @X C@X( Zugriff auf externen Speicher )
COUNT 2! 2@ ! C! @ C@ ALIGNED( Zugriff auf Variablenbereich )
COUNTP !P C!P @P C@P ALIGNEDP( Zugriff auf Programmbereich )
CMOVEP CMOVE( Speicher verschieben )
CELLS CELL+ CHARS CHAR+( nächste Adresse / Größe ermitteln )
Stackmanipulation:
RDEPTH RINIT( Returnstackgröße und Initialisierung )
RDROP R@ R> >R( Manipulation )
2R> 2R@ 2>R( Doppeltgenaue Werte )
SDEPTH SINIT( Stackgröße und Initialisierung )
DROP SWAP OVER DUP( Manipulation )
-ROT ROT NIP TUCK ?DUP( weitere Manipulation )
2DROP 2OVER 2SWAP 2DUP( Doppeltgenaue Werte )
Arithmetik, Logik und Vergleiche:
1- 1+ - + D- D+( Addition und Subtraktion )
2/ U2/ 2* D2/ DU2/ D2*( Shift )
XOR OR AND( Logik )
UMIN ABS DUMIN DABS UPC( Auswahl )
WITHIN D< DU< D0< D= D0= < U< 0< = 0=( Vergleich )
/ M/MOD * M* UM*( Multiplikation und Division )
Schnittstellen:
IOVEC IOINIT STDIO( IO-Vektor und Default )
KEY? KEY( Eingabe-Grundroutine )
ACCEPT( Eingabe einer Zeile )
EMIT? EMIT( Ausgabe-Grundroutine )
TYPE TYPEP CR SPACES SPACE( Ausgabe von Zeichen und Strings )
AT-MAX AT-XY AT-XY? PAGE( Bildschirm-Manipulation )
DECIMAL HEX BASE( Zahlenbasis umschalten )
#> SIGN #S # HOLD <# HLD( Zahl in String umwandeln )
. .R U. U.R 0U.R D. D.R( Zahl ausgeben )
$>NUMBER? >NUMBER DPL( String in Zahl umwandeln )
STDFILE FILEVEC FINIT( File-Vektor und Default )
BIN R/W W/O R/O( Filetyp )
FWRITE FREAD FSETPOS( File lesen und schreiben )
FGETSIZE FCLOSE FOPEN FCREATE( File anlegen, öffnen und schließen )
FCB FID( Variablen für Filehandler und Filename )
LOADFROM THRU LOAD CAPACITY( Laden von FORTH-Screens )
INCLUDE OPEN CLOSE( Laden von sequenzellen Files )
Struktur:
J' J I' I ?LEAVE LEAVE UNLOOP +LOOP LOOP DO ?DO( Zählschleifen )
NEXT ?FOR n nn FOR( Einfaches Zählen n-1 … 0 )
BEGIN WHILE UNTIL REPEAT AGAIN( Schleifen )
IF ELSE THEN( Bedingungen )
AHEAD RECURSE( Vorwärts-Sprung )
Vokabulare:
VOC CONTEXT CURRENT( Speicher für Vokabularverwaltung )
ORDER VOCS( Anzeige der Vokabulare und Reihenfolge )
PREVIOUS ALSO( Suchreihenfolge erweitern, verkürzen )
ONLYFORTH FORTH HW( Standard oder FORTH-Vokabular )
VOCABULARY DEFINITIONS( neues Vokabular anlegen )
FORTH-Interpreter:
BYE 'BOOT QUIT( Programm beenden oder neu starten)
SAVE FSAVE( Programm im Flash oder File speichern )
?EXIT EXIT EXECUTE NOP( Befehl ausführen oder verlassen / NOP )
EVALUATE INTERPRET( String oder Befehl interpretieren )
REFILL SOURCE >IN SOURCE-ID( Verwalten des Source-Zeigers )
SFIND (SFIND -PARSE PARSE( Befehl extrahieren und suchen )
POSTPONE ['] '( Befehle suchen und einbinden )
NAME> >NAME BODY> >BODY( In den Befehlen bewegen )
>ROM >RAM >RAM? ROM? UNIFIED?( Manipulation des Systems )
] [ STATE REVEAL( Interpreter-Status )
CREATEP CREATE DOES>( Datentypen definieren )
PRG UNUSEDP HEREP( Programm-Pointer )
$,P ,P C,P ALIGNP ALLOTP( Programmbereich manipulieren )
2CONSTANT CONSTANT ALIAS IS DEFER( Konstanten, Alias und Defers )
2LITERAL LITERAL( Inline-Literals )
; : :NONAME IMMEDIATE RESTRICT( Highlevel-Definition )
RAM UNUSED HERE( RAM-Pointer )
$, , C, ALIGN ALLOT( Programmbereich manipulieren )
HEAP UNUSEDH ALLOTH CLEARH( HEAP-Pointer )
>HEAP HEAP>( Variablenbereich und HEAP-Nutzung )
$, , C, ALIGN ALLOT( Variablenbereich manipulieren )
2VARIABLE VARIABLE( Variablen-Definition )
." P" S"( String-Händling )
\\ \ (( Kommentare )
[IFNDEF] [IFDEF] [IF] [ELSE] [THEN]( Bedingte Ausführung )
CHAR [CHAR]( Ein Zeichen ermitteln )
'ABORT ABORT ABORT" ?ABORT CATCH THROW( Fehlerbehandlung )
.S DUMP DUMPP DUMPX WORDS( Anzeige von Stack, Speicher, Befehle)