# Compilation
+STATE, STATE_CFA = defNewVar("STATE", 0)
+
HEADER = defPrimWord("HEADER", () -> begin
wordLen = popPS()
return NEXT
end)
-STATE, STATE_CFA = defNewVar("STATE", 0)
-
LBRAC = defPrimWord("[", () -> begin
mem[STATE] = 0
return NEXT
BTICK = defWord("[']",
[FROMR, DUP, INCR, TOR, FETCH, EXIT])
+# CREATE and DOES>
+
+CREATE = defWord("CREATE",
+ [WORD,
+ HEADER,
+ LIT, DOVAR, COMMA, EXIT]);
+
+DODOES = defPrim(() -> begin
+ pushRS(reg.IP)
+ reg.IP = reg.W + 1
+ return NEXT
+end, name="DOCOL")
+
+defConst("DODOES", DODOES)
+
+FROMDOES_PAREN = defWord("(DOES>)",
+ [DODOES, LAST, FETCH, TOCFA, STORE, EXIT])
+
+FROMDOES = defWord("DOES>",
+ [BTICK, FROMDOES_PAREN, COMMA, BTICK, EXIT, COMMA,
+ BTICK, LIT, COMMA, LATEST, FETCH, TODFA, COMMA], flags=F_IMMED)
+
# Strings