section id="ff1802.execute" xreflabel="EXECUTE", xref.ff1802.execute, link.ff1802.EXE
Protože interpret slov je již definován jako slovo FORTHu, má hlavičku jenž pedchází tělu. Tato hlavička definuje název slova EXECUTE
, ukazatel na předchozí slovo ve slovníku, což je v našem případě slovo LIT
a ukazatel na strojový kód jenž ukazuje do vlastního těla EXECUTE
jenž v poli PF
obsahuje strojový kód.
000246 009C ; EXECUTE 000247 009C 87455845435554C5 .DB H'87,"EXECUT",H'C5; EXECUTE 000248 00A4 0080 .DW LIT-6 ; link to previous word "LIT" 000249 00A6 00A8 EXE: .DW *+2; CFA→PF containg machine code
Nyní již samotný kód slova. První část vyzvedne ze zásobníku parametrů (PSP
) adresu slova a uloží ji do pomocného registru W
.
; LOAD W FROM STACK ; (psp+)→w 000250 00A8 49 LDA R9 000251 00A9 BB PHI RB 000252 00AA 09 LDN R9 ; LOAD W FROM STACK 000253 00AB AB PLO RB
Druhá část kódu opraví stav zásobníku. V důsledku použítí jedné instrukce LDA a druhé LDN se PSP
zvětší o jedničku. O tuto jedničku jej opravíme první instrukcí DEC a druhé dvě instrukce se posunou na předchozí buňku. Tímto efektivně odstraníme adresu ze zásobníku.
000254 00AC 29 DEC R9 000255 00AD 29 DEC R9 000256 00AE 29 DEC R9
Následuje spuštění vnitřního interpretu. Tento se ovšem spouští od adresy WBR
. Abychom toho dosáhli, musíme opravit ukazatel instrukcí v RB
tak že jej z NEXT
posuneme o čtyřy bajty na WBR
.
; advance RC to point to WBR 000257 00AF 1C INC RC 000258 00B0 1C INC RC 000259 00B1 1C INC RC ; POINT TO WBR 000260 00B2 1C INC RC 000261 00B3 DC SEP RC ; next