return NEXT
end)
-NROT = defPrimWord("-ROT", () -> begin
+ROT = defPrimWord("ROT", () -> begin
a = popPS()
b = popPS()
c = popPS()
return NEXT
end)
-ROT = defPrimWord("ROT", () -> begin
+NROT = defPrimWord("-ROT", () -> begin
a = popPS()
b = popPS()
c = popPS()
d = popPS()
pushPS(b)
pushPS(a)
- pushPS(c)
pushPS(d)
+ pushPS(c)
+ return NEXT
+end)
+
+TWOOVER = defPrimWord("2OVER", () -> begin
+ ensurePSDepth(4)
+ a = mem[reg.PSP-3]
+ b = mem[reg.PSP-2]
+ pushPS(a)
+ pushPS(b)
return NEXT
end)
isImmediate = (mem[wordAddr+1] & F_IMMED) != 0
callPrim(mem[TOCFA])
- callPrim(mem[ROT]) # get rid of extra copy of word string details
+ callPrim(mem[NROT]) # get rid of extra copy of word string details
popPS()
popPS()
mem[STATE] = 0
mem[NUMTIB] = 0
+ reg.PSP = mem[PSP0]
+ reg.RSP = mem[RSP0]
reg.IP = QUIT + 1
jmp = NEXT
end