Added EOF word back in.
[forth.jl.git] / src / forth.jl
index d911e21..5aa447d 100644 (file)
@@ -665,6 +665,22 @@ CLOSE_FILES_CFA = defPrimWord("CLOSE-FILES", () -> begin
 end)
 
 READ_LINE_CFA = defPrimWord("READ-LINE", () -> begin
+    fid = popPS()
+    maxSize = popPS()
+    addr = popPS()
+
+    fh = openFiles[fid]
+    line = readline(fh)
+
+    eofFlag = endswith(line, '\n') ? 0 : -1
+    line = chomp(line)
+
+    putString(line, addr, maxSize)
+
+    pushPS(length(line))
+    pushPS(eofFlag)
+    pushPS(0)
+
     return NEXT
 end)
 
@@ -1201,6 +1217,10 @@ BYE_CFA = defPrimWord("BYE", () -> begin
     return 0
 end)
 
+EOF_CFA = defPrimWord("\x04", () -> begin
+    return 0
+end)
+
 #### VM loop ####
 
 initialized = false