"TOOLS Programming-Tools (without ASSEMBLER)"tools
The ANS Forth defines some "Programming Tools", words to
inspect the stack (.S ), memory (DUMP ),
compiled code (SEE ) and what words
are defined (WORDS ).
There are also word that provide some precompiler support
and explicit acces to the CS-STACK .
[ANS]
print the stack content in vertical nice format.
tries to show cell-stack and float-stack side-by-side,
Depending on configuration,
there are two parameter stacks: for integers and for
floating point operations. If both stacks are empty, .S
will display the message lt;stacks emptygt; .
If only the floating point stack is empty, .S displays
the integer stack items in one column, one item per line,
both in hex and in decimal like this (the first item is topmost):
12345 HEX 67890 .S
424080 [00067890]
12345 [00003039] ok
If both stacks ar not empty, .S displays both stacks, in two
columns, one item per line
HEX 123456.78E90 ok
DECIMAL 123456.78E90 .S
291 [00000123] 1.234568E+95
1164414608 [45678E90] ok
Confusing example? Remember that floating point input only works
when the BASE number is DECIMAL . The first number looks like
a floating point but it is a goodhex double integer too - the number
base is HEX . Thus it is accepted as a hex number. Second try
with a decimal base will input the floating point number.
If only the integer stack is empty, .S shows two columns, but
he first columns is called lt;stack emptygt;, and the
second column is the floating point stack, topmost item first.
| tools ordinary primitive
show a hex-dump of the given area, if it's more than a screenful
it will ask using ?CR
You can easily cause a segmentation fault of something like that
by accessing memory that does not belong to the pfe-process.
| tools ordinary primitive
decompile word - tries to show it in re-compilable form.
(SEE) tries to display the word as a reasonable indented
source text. If you defined your own control structures or
use extended control-flow patterns, the indentation may be
suboptimal.
simulate:
: SEE [COMPILE] ' (SEE) ;
| tools ordinary primitive
uses CONTEXT and lists the words defined in that vocabulary.
usually the vocabulary to list is named directly in before.
example:
FORTH WORDS or LOADED WORDS
| tools ordinary primitive
simulate:
: AHEAD MARK> (ORIG#) ;
| tools immediate primitive
should quit the forth environment completly
| tools ordinary primitive
pick a value in the compilation-stack - note that the compilation
stack _can_ be seperate in some forth-implemenations. In PFE
the parameter-stack is used in a double-cell fashion, so CS-PICK
would 2PICK a DP-mark and a COMP-magic, see PICK
| tools ordinary primitive
roll a value in the compilation-stack - note that the compilation
stack _can_ be seperate in some forth-implemenations. In PFE
the parameter-stack is used in a double-cell fashion, so CS-ROLL
would 2ROLL a DP-mark and a COMP-magic, see ROLL
| tools ordinary primitive
simulate:
: FORGET [COMPILE] ' >NAME (FORGET) ; IMMEDIATE
| tools ordinary primitive
eat up everything upto and including the next [THEN]. count
nested [IF] ... [THEN] constructs. see [IF]
this word provides a simple pre-compiler mechanism
| tools immediate primitive
check the condition in the CS-STACK. If true let the following
text flow into INTERPRET , otherwise eat up everything upto
and including the next [ELSE] or [THEN] . In case of
skipping, count nested [IF] ... [THEN] constructs.
this word provides a simple pre-compiler mechanism
| tools immediate primitive
[ANS] [THEN] no special info, see general notes tools immediate primitive
Display the (integer) content of at address addr.
This word is sensitive to BASE
simulate:
: ? @ . ;
| tools ordinary primitive
ENVIRONMENT
ENVIRONMENT TOOLS-EXT no special info, see general notes tools ordinary constant
|