In the Fleet Forth kernel there are eighteen headerless words. Words like the one formerly named TRAVERSE or some of the words used by the sector read/write word, SR/W . These headerless words have no use outside the kernel, which is why they are headerless. There is another group of words which are not directly used outside the kernel, the run-time words of other words.
Some of the run-time words now have the same name as the associated compiling word.
Code: Select all
DO DO
?DO ?DO
LOOP LOOP
+LOOP +LOOP
" "
." ."
ABORT" ABORT"
(IS) is still the run-time for IS and TO .
The run-time words are defined before the word FORTH-83 and the compiling words are defined after. This made updating the source for SEE easier.
To find the run-time words, the FORTH vocabulary is set as both the CONTEXT and CURRENT vocabularies. Create a false vocabulary on the auxiliary stack with FORTH-83 as the latest word with the following:
Code: Select all
0 ' FORTH-83 >LINK 2>A
and make it the CONTEXT vocabulary.
Code: Select all
AP0 @ @ CONTEXT !
The false vocabulary, the portion of the FORTH vocabulary from FORTH-83 to the beginning is searched. If the sought word is not found in this false CONTEXT vocabulary, the CURRENT vocabulary, which is all of the FORTH vocabulary, is searched.
Code: Select all
OK
SEE DO
DO IMMEDIATE
2DA2 20A6 COMPILE
2DA4 912 DO
2DA6 2CAE >MARK
2DA8 12E6 2+
2DAA 2CC2 <MARK
2DAC 12E6 2+
2DAE 9A8 EXIT
E
OK
0 ' FORTH-83 >LINK 2>A AP0 @ @ CONTEXT ! OK
SEE DO
DO
914 INY
915 FB )Y LDA IP
917 PHA
918 DEY
919 FB )Y LDA IP
91B PHA
91C CLC
91D 3 ,X LDA
91F 80 # ADC
921 PHA
922 3 ,X STA
924 2 ,X LDA
926 PHA
927 SEC
928 0 ,X LDA
92A 2 ,X SBC
92C TAY
92D 1 ,X LDA
92F 3 ,X SBC
931 PHA
932 TYA
933 PHA
934 INX
935 INX
936 INX
937 INX
938 8ED ^^ BPL ' ?BRANCH >BODY 8 +
93A 839 JMP ' ! >BODY 14 +
29
OK
CONSOLE
[Edit: Corrected explanation of the vocabulary search.]