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
Updated run() to call new INCLUDED word.
[forth.jl.git]
/
src
/
forth.jl
diff --git
a/src/forth.jl
b/src/forth.jl
index
f125707
..
37c41ec
100644
(file)
--- a/
src/forth.jl
+++ b/
src/forth.jl
@@
-99,6
+99,10
@@
end
getString(addr::Int64, len::Int64) = AbstractString([Char(c) for c in mem[addr:(addr+len-1)]])
getString(addr::Int64, len::Int64) = AbstractString([Char(c) for c in mem[addr:(addr+len-1)]])
+function putString(str::AbstractString, addr::Int64)
+ mem[addr:(addr+length(str)-1)] = [Int64(c) for c in str]
+end
+
function putString(str::AbstractString, addr::Int64, maxLen::Int64)
len = min(length(str), maxLen)
mem[addr:(addr+len-1)] = [Int64(c) for c in str]
function putString(str::AbstractString, addr::Int64, maxLen::Int64)
len = min(length(str), maxLen)
mem[addr:(addr+len-1)] = [Int64(c) for c in str]
@@
-979,6
+983,8
@@
QUERY_CFA = defWord("QUERY",
LIT_CFA, 0, TOIN_CFA, STORE_CFA,
EXIT_CFA])
LIT_CFA, 0, TOIN_CFA, STORE_CFA,
EXIT_CFA])
+# ( fid -- flag )
+# Flag is false when EOF is reached.
QUERY_FILE_CFA = defWord("QUERY-FILE",
[FIB_CFA, LIT_CFA, 160, ROT_CFA, READ_LINE_CFA,
DROP_CFA, SWAP_CFA,
QUERY_FILE_CFA = defWord("QUERY-FILE",
[FIB_CFA, LIT_CFA, 160, ROT_CFA, READ_LINE_CFA,
DROP_CFA, SWAP_CFA,
@@
-1209,20
+1215,16
@@
QUIT_CFA = defWord("QUIT",
INTERPRET_CFA, PROMPT_CFA,
BRANCH_CFA,-4])
INTERPRET_CFA, PROMPT_CFA,
BRANCH_CFA,-4])
-IN
TERPRET_CFA = defWord("INTERPRET
",
+IN
CLUDED_CFA = defWord("INCLUDED
",
[SOURCE_ID_CFA, FETCH_CFA, TOR_CFA, # Store current source on return stack
[SOURCE_ID_CFA, FETCH_CFA, TOR_CFA, # Store current source on return stack
-
- LIT_CFA, 32, WORD_CFA, # Read next word from current input source
-
FAM_RO_CFA, OPEN_FILE_CFA, DROP_CFA, # Open the file named by this word.
FAM_RO_CFA, OPEN_FILE_CFA, DROP_CFA, # Open the file named by this word.
-
DUP_CFA, SOURCE_ID_CFA, STORE_CFA, # Mark this as the current source
DUP_CFA, SOURCE_ID_CFA, STORE_CFA, # Mark this as the current source
-
DUP_CFA, QUERY_FILE_CFA, # Read line from file
DUP_CFA, QUERY_FILE_CFA, # Read line from file
-
INTERPRET_CFA,
INTERPRET_CFA,
+ INVERT_CFA, ZBRANCH_CFA, -5,
+ DROP_CFA, EXIT_CFA])
- BRANCH_CFA, -4])
+INCLUDE_CFA = defWord("INCLUDE", [LIT_CFA, 32, WORD_CFA, INCLUDED_CFA]);
ABORT_CFA = defWord("ABORT",
ABORT_CFA = defWord("ABORT",