The Lambda Lab
/
projects
/
forth.jl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Working on standardizing FIND.
[forth.jl.git]
/
src
/
forth.jl
diff --git
a/src/forth.jl
b/src/forth.jl
index
80f6b76
..
5956a0d
100644
(file)
--- a/
src/forth.jl
+++ b/
src/forth.jl
@@
-649,6
+649,19
@@
end)
# Dictionary searches
# Dictionary searches
+TOCFA = defPrimWord(">CFA", () -> begin
+
+ addr = popPS()
+ lenAndFlags = mem[addr+1]
+ len = lenAndFlags & F_LENMASK
+
+ pushPS(addr + 2 + len)
+
+ return NEXT
+end)
+
+TOBODY = defWord(">BODY", [INCR, EXIT])
+
FIND = defPrimWord("FIND", () -> begin
countedAddr = popPS()
FIND = defPrimWord("FIND", () -> begin
countedAddr = popPS()
@@
-676,23
+689,23
@@
FIND = defPrimWord("FIND", () -> begin
end
end
end
end
- pushPS(latest)
-
- return NEXT
-end)
-
-TOCFA = defPrimWord(">CFA", () -> begin
-
- addr = popPS()
- lenAndFlags = mem[addr+1]
- len = lenAndFlags & F_LENMASK
+ if latest > 0
+ pushPS(latest)
+ callPrim(mem[TOCFA])
+ if (lenAndFlags & F_IMMED) == F_IMMED
+ pushPS(1)
+ else
+ pushPS(-1)
+ end
+ else
+ pushPS(countedAddr)
+ pushPS(0)
+ end
- pushPS(addr + 2 + len)
return NEXT
end)
return NEXT
end)
-TOPFA = defWord(">PFA", [TOCFA, INCR, EXIT])
# Branching
# Branching