The Lambda Lab
/
projects
/
forth.jl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d56814a
)
Added TICK, BRANCH, 0BRANCH
author
Tim Vaughan
<tgvaughan@gmail.com>
Fri, 22 Apr 2016 03:21:16 +0000
(15:21 +1200)
committer
Tim Vaughan
<tgvaughan@gmail.com>
Fri, 22 Apr 2016 03:21:16 +0000
(15:21 +1200)
src/forth.jl
patch
|
blob
|
history
diff --git
a/src/forth.jl
b/src/forth.jl
index
8c5c3de
..
101cca8
100644
(file)
--- a/
src/forth.jl
+++ b/
src/forth.jl
@@
-726,9
+726,30
@@
IMMEDIATE = defPrim("IMMEDIATE", () -> begin
return mem[NEXT]
end, flags=F_IMMEDIATE)
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()
#### VM loop ####
function runVM()
- jmp =
NEXT
+ jmp =
mem[NEXT]
while (jmp = callPrim(jmp)) != 0 end
end
while (jmp = callPrim(jmp)) != 0 end
end