133 lines
3.3 KiB
Plaintext
133 lines
3.3 KiB
Plaintext
|
|
|
|
|
|
|
|
15. THE SYSTEM EXTENSION WORD SET
|
|
|
|
|
|
|
|
|
|
15. THE SYSTEM EXTENSION WORD SET
|
|
|
|
|
|
|
|
15.1 The System Extension Word Set Layers
|
|
|
|
|
|
Nucleus layer
|
|
|
|
BRANCH ?BRANCH
|
|
|
|
|
|
Device layer
|
|
|
|
none
|
|
|
|
|
|
Interpreter layer
|
|
|
|
CONTEXT CURRENT
|
|
|
|
|
|
Compiler layer
|
|
|
|
<MARK <RESOLVE >MARK >RESOLVE
|
|
|
|
|
|
15.2 System Extension Word Set Usage
|
|
|
|
After BRANCH or ?BRANCH is compiled, >MARK or <RESOLVE is
|
|
executed. The addr left by >MARK is passed to >RESOLVE . The
|
|
addr left by <MARK is passed to <RESOLVE . For example:
|
|
: IF COMPILE ?BRANCH >MARK ; IMMEDIATE
|
|
: THEN >RESOLVE ; IMMEDIATE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
|
|
|
15. THE SYSTEM EXTENSION WORD SET
|
|
|
|
|
|
|
|
|
|
|
|
15.3 The System Extension Word Set Glossary
|
|
|
|
<MARK -- addr C,83 "backward-mark"
|
|
Used at the destination of a backward branch. addr is
|
|
typically only used by <RESOLVE to compile a branch address.
|
|
|
|
<RESOLVE addr -- C,83"backward-resolve"
|
|
Used at the source of a backward branch after either BRANCH
|
|
or ?BRANCH . Compiles a branch address using addr as the
|
|
destination address.
|
|
|
|
>MARK -- addr C,83 "forward-mark"
|
|
Used at the source of a forward branch. Typically used
|
|
after either BRANCH or ?BRANCH . Compiles space in the
|
|
dictionary for a branch address which will later be resolved
|
|
by >RESOLVE .
|
|
|
|
>RESOLVE addr -- C,83"forward-resolve"
|
|
Used at the destination of a forward branch. Calculates the
|
|
branch address (to the current location in the dictionary)
|
|
using addr and places this branch address into the space
|
|
left by >MARK .
|
|
|
|
?BRANCH flag -- C,83"question-branch"
|
|
When used in the form: COMPILE ?BRANCH a conditional
|
|
branch operation is compiled. See BRANCH for further
|
|
details. When executed, if flag is false the branch is
|
|
performed as with BRANCH . When flag is true execution
|
|
continues at the compilation address immediately following
|
|
the branch address.
|
|
|
|
BRANCH -- C,83
|
|
When used in the form: COMPILE BRANCH an unconditional
|
|
branch operation is compiled. A branch address must be
|
|
compiled immediately following this compilation address.
|
|
The branch address is typically generated by following
|
|
BRANCH with <RESOLVE or >MARK .
|
|
|
|
CONTEXT -- addr U,79
|
|
The address of a variable which determines the dictionary
|
|
search order.
|
|
|
|
CURRENT -- addr U,79
|
|
The address of a variable specifying the vocabulary in which
|
|
new word definitions are appended.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51
|
|
|