Fixed library loading bug.
[forth.jl.git] / src / forth.jl
index c8cd131..1a65ff6 100644 (file)
@@ -840,9 +840,6 @@ COMMA_CFA = defPrimWord(",", () -> begin
     return NEXT
 end)
 
-BTICK_CFA = defWord("[']",
-    [FROMR_CFA, DUP_CFA, INCR_CFA, TOR_CFA, FETCH_CFA, EXIT_CFA])
-
 HERE_CFA = defWord("HERE",
     [H_CFA, FETCH_CFA, EXIT_CFA])
 
@@ -885,8 +882,8 @@ DOES_HELPER_CFA = defPrimWord("(DOES>)", () -> begin
 end, flags=F_IMMED)
 
 DOES_CFA = defWord("DOES>",
-    [BTICK_CFA, LIT_CFA, COMMA_CFA, HERE_CFA, LIT_CFA, 3, ADD_CFA, COMMA_CFA,
-    BTICK_CFA, DOES_HELPER_CFA, COMMA_CFA, BTICK_CFA, EXIT_CFA, COMMA_CFA, EXIT_CFA],
+    [LIT_CFA, LIT_CFA, COMMA_CFA, HERE_CFA, LIT_CFA, 3, ADD_CFA, COMMA_CFA,
+    LIT_CFA, DOES_HELPER_CFA, COMMA_CFA, LIT_CFA, EXIT_CFA, COMMA_CFA, EXIT_CFA],
     flags=F_IMMED)
 
 LBRAC_CFA = defPrimWord("[", () -> begin
@@ -952,7 +949,7 @@ INTERPRET_CFA = defWord("INTERPRET",
                 COMMA_CFA, BRANCH_CFA, -29,
 
             # No word found, parse number
-            NUMBER_CFA, BTICK_CFA, LIT_CFA, COMMA_CFA, COMMA_CFA, BRANCH_CFA, -36,
+            NUMBER_CFA, LIT_CFA, LIT_CFA, COMMA_CFA, COMMA_CFA, BRANCH_CFA, -36,
         
        # Interpreting
         FIND_CFA, QDUP_CFA, ZBRANCH_CFA, 5,
@@ -997,7 +994,14 @@ INCLUDE_CFA = defPrimWord("INCLUDE", () -> begin
     wordLen = mem[wordAddr-1]
     word = getString(wordAddr, wordLen)
 
-    push!(sources, open(word, "r"))
+    fname = word
+    if !isfile(fname)
+        fname = Pkg.dir("forth","src",word)
+        if !isfile(fname)
+            error("No file named $word found in current directory or package source directory.")
+        end
+    end
+    push!(sources, open(fname, "r"))
 
     # Clear input buffer
     mem[NUMTIB] = 0
@@ -1012,8 +1016,8 @@ initialized = false
 initFileName = nothing
 if isfile("lib.4th")
     initFileName = "lib.4th"
-elseif isfile(Pkg.dir("forth/src/lib.4th"))
-    initFileName = Pkg.dir("forth/src/lib.4th")
+elseif isfile(Pkg.dir("forth","src", "lib.4th"))
+    initFileName = Pkg.dir("forth","src","lib.4th")
 end
 
 function run(;initialize=true)