end)
RSPSTORE = defPrimWord("RSP!", () -> begin
- RSP = popPS()
+ reg.RSP = popPS()
return NEXT
end)
end)
PSPSTORE = defPrimWord("PSP!", () -> begin
- PSP = popPS()
+ reg.PSP = popPS()
return NEXT
end)
TOIN, TOIN_CFA = defNewVar(">IN", 0)
QUERY = defWord("QUERY",
- [TIB_CFA, LIT, 80, EXPECT,
+ [TIB_CFA, LIT, 160, EXPECT,
SPAN_CFA, FETCH, NUMTIB_CFA, STORE,
LIT, 0, TOIN_CFA, STORE,
EXIT])
end)
QUIT = defWord("QUIT",
- [RSP0_CFA, RSPSTORE,
+ [LIT, 0, STATE_CFA, STORE,
+ LIT, 0, NUMTIB_CFA, STORE,
+ RSP0_CFA, FETCH, RSPSTORE,
QUERY,
INTERPRET, PROMPT,
BRANCH,-4])
+ABORT = defWord("ABORT",
+ [PSP0_CFA, FETCH, PSPSTORE, QUIT])
+
INCLUDE = defPrimWord("INCLUDE", () -> begin
pushPS(32)
callPrim(mem[WORD])
close(pop!(sources))
end
- # Want backtrace in here eventually
- println("reg.W: $(reg.W) reg.IP: $(reg.IP)")
- print("PS: "); printPS()
- print("RS: "); printRS()
-
- mem[STATE] = 0
- mem[NUMTIB] = 0
- reg.PSP = mem[PSP0]
- reg.RSP = mem[RSP0]
- reg.IP = QUIT + 1
+ # QUIT
+ reg.IP = ABORT + 1
jmp = NEXT
end
end