+ return NEXT
+end)
+
+TWOMUL_CFA = defPrimWord("2*", () -> begin
+ pushPS(popPS() << 1)
+ return NEXT
+end)
+
+TWODIV_CFA = defPrimWord("2/", () -> begin
+ pushPS(popPS() >> 1)
+ return NEXT
+end)
+
+EQ_CFA = defPrimWord("=", () -> begin
+ b = popPS()
+ a = popPS()
+ pushPS(a==b ? -1 : 0)
+ return NEXT
+end)
+
+NE_CFA = defPrimWord("<>", () -> begin
+ b = popPS()
+ a = popPS()
+ pushPS(a!=b ? -1 : 0)
+ return NEXT
+end)
+
+LT_CFA = defPrimWord("<", () -> begin
+ b = popPS()
+ a = popPS()
+ pushPS(a<b ? -1 : 0)
+ return NEXT
+end)
+
+GT_CFA = defPrimWord(">", () -> begin
+ b = popPS()
+ a = popPS()
+ pushPS(a>b ? -1 : 0)
+ return NEXT
+end)
+
+LE_CFA = defPrimWord("<=", () -> begin
+ b = popPS()
+ a = popPS()
+ pushPS(a<=b ? -1 : 0)
+ return NEXT
+end)
+
+GE_CFA = defPrimWord(">=", () -> begin
+ b = popPS()
+ a = popPS()
+ pushPS(a>=b ? -1 : 0)
+ return NEXT
+end)
+
+ZE_CFA = defPrimWord("0=", () -> begin
+ pushPS(popPS() == 0 ? -1 : 0)
+ return NEXT
+end)
+
+ZNE_CFA = defPrimWord("0<>", () -> begin
+ pushPS(popPS() != 0 ? -1 : 0)
+ return NEXT
+end)
+
+ZLT_CFA = defPrimWord("0<", () -> begin
+ pushPS(popPS() < 0 ? -1 : 0)
+ return NEXT
+end)
+
+ZGT_CFA = defPrimWord("0>", () -> begin
+ pushPS(popPS() > 0 ? -1 : 0)
+ return NEXT
+end)
+
+ZLE_CFA = defPrimWord("0<=", () -> begin
+ pushPS(popPS() <= 0 ? -1 : 0)
+ return NEXT
+end)
+
+ZGE_CFA = defPrimWord("0>=", () -> begin
+ pushPS(popPS() >= 0 ? -1 : 0)
+ return NEXT
+end)
+
+AND_CFA = defPrimWord("AND", () -> begin
+ b = popPS()
+ a = popPS()
+ pushPS(a & b)
+ return NEXT
+end)
+
+OR_CFA = defPrimWord("OR", () -> begin
+ b = popPS()
+ a = popPS()
+ pushPS(a | b)
+ return NEXT
+end)
+
+XOR_CFA = defPrimWord("XOR", () -> begin
+ b = popPS()
+ a = popPS()
+ pushPS(a $ b)
+ return NEXT
+end)
+
+INVERT_CFA = defPrimWord("INVERT", () -> begin
+ pushPS(~popPS())
+ return NEXT