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
Implemented ABORT".
[forth.jl.git]
/
src
/
forth.jl
diff --git
a/src/forth.jl
b/src/forth.jl
index
37ce5d1
..
f10ea04
100644
(file)
--- a/
src/forth.jl
+++ b/
src/forth.jl
@@
-13,7
+13,7
@@
mem = Array{Int64,1}(size_mem)
primitives = Array{Function,1}()
primNames = Array{ASCIIString,1}()
primitives = Array{Function,1}()
primNames = Array{ASCIIString,1}()
-#
B
uilt-in variables
+#
Memory geography and b
uilt-in variables
nextVarAddr = 1
H = nextVarAddr; nextVarAddr += 1 # Next free memory address
nextVarAddr = 1
H = nextVarAddr; nextVarAddr += 1 # Next free memory address
@@
-84,6
+84,8
@@
function putString(str::ASCIIString, addr::Int64)
mem[addr:(addr+length(str)-1)] = [Int64(c) for c in str]
end
mem[addr:(addr+length(str)-1)] = [Int64(c) for c in str]
end
+stringAsInts(str::ASCIIString) = [Int(c) for c in collect(str)]
+
# Primitive creation and calling functions
function defPrim(f::Function; name="nameless")
# Primitive creation and calling functions
function defPrim(f::Function; name="nameless")
@@
-1010,8
+1012,11
@@
INTERPRET_CFA = defWord("INTERPRET",
EXIT_CFA])
PROMPT_CFA = defPrimWord("PROMPT", () -> begin
EXIT_CFA])
PROMPT_CFA = defPrimWord("PROMPT", () -> begin
- if (mem[STATE] == 0 && currentSource() == STDIN)
- println(" ok")
+ if currentSource() == STDIN
+ if mem[STATE] == 0
+ print(" ok")
+ end
+ println()
end
return NEXT
end
return NEXT