From cf53a68bcea007d723e2037fb94577700532b00e Mon Sep 17 00:00:00 2001 From: Tim Vaughan Date: Fri, 22 Apr 2016 15:21:16 +1200 Subject: [PATCH] Added TICK, BRANCH, 0BRANCH --- src/forth.jl | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/forth.jl b/src/forth.jl index 8c5c3de..101cca8 100644 --- a/src/forth.jl +++ b/src/forth.jl @@ -726,9 +726,30 @@ IMMEDIATE = defPrim("IMMEDIATE", () -> begin return mem[NEXT] end, flags=F_IMMEDIATE) +TICK = defWord("'", [WORD, FIND, TOCFA, EXIT]) + +# Branching + +BRANCH = defPrim("BRANCH", () -> begin + reg.IP += mem[reg.IP] + return mem[NEXT] +end) + +ZBRANCH = defPrim("0BRANCH", () -> begin + if (popPS() == 0) + reg.IP += mem[reg.IP] + else + reg.IP += 1 + end + + return mem[NEXT] +end) + +# Strings + #### VM loop #### function runVM() - jmp = NEXT + jmp = mem[NEXT] while (jmp = callPrim(jmp)) != 0 end end -- 2.20.1