- DUP, FETCH, ZE, ZBRANCH, 3,
- DROP, EXIT, # Exit if TIB is exhausted
+LBRAC_CFA = defPrimWord("[", () -> begin
+ mem[STATE] = 0
+ return NEXT
+end, flags=F_IMMED)
+
+RBRAC_CFA = defPrimWord("]", () -> begin
+ mem[STATE] = 1
+ return NEXT
+end, flags=F_IMMED)
+
+HIDDEN_CFA = defPrimWord("HIDDEN", () -> begin
+ lenAndFlagsAddr = mem[LATEST] + 1
+ mem[lenAndFlagsAddr] = mem[lenAndFlagsAddr] $ F_HIDDEN
+ return NEXT
+end)
+
+COLON_CFA = defWord(":",
+ [LIT_CFA, 32, WORD_CFA,
+ HEADER_CFA,
+ LIT_CFA, DOCOL, COMMA_CFA,
+ HIDDEN_CFA,
+ RBRAC_CFA,
+ EXIT_CFA])
+
+SEMICOLON_CFA = defWord(";",
+ [LIT_CFA, EXIT_CFA, COMMA_CFA,
+ HIDDEN_CFA,
+ LBRAC_CFA,
+ EXIT_CFA], flags=F_IMMED)
+
+IMMEDIATE_CFA = defPrimWord("IMMEDIATE", () -> begin
+ lenAndFlagsAddr = mem[LATEST] + 1
+ mem[lenAndFlagsAddr] = mem[lenAndFlagsAddr] $ F_IMMED
+ return NEXT
+end, flags=F_IMMED)
+
+# Outer Interpreter
+
+EXECUTE_CFA = defPrimWord("EXECUTE", () -> begin
+ reg.W = popPS()
+ return mem[reg.W]
+end)