X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=src%2Fforth.jl;h=97dcc57dd4328cded9b96d176ced9b86df5e4c55;hb=213140aac1ad3c08a74dd5eea06464c474d54cd2;hp=d6a3ff932508d38a5f1344d0000399b270a74bea;hpb=4eaa3dc4bf437227e52d366dc019c743091eeb92;p=forth.jl.git diff --git a/src/forth.jl b/src/forth.jl index d6a3ff9..97dcc57 100644 --- a/src/forth.jl +++ b/src/forth.jl @@ -1000,7 +1000,7 @@ QUERY_CFA = defWord("QUERY", EXIT_CFA]) # ( fid -- flag ) -# Flag is false when EOF is reached. +# flag set to true if EOF is reached QUERY_FILE_CFA = defWord("QUERY-FILE", [FIB_CFA, LIT_CFA, 160, ROT_CFA, READ_LINE_CFA, DROP_CFA, SWAP_CFA, @@ -1236,15 +1236,18 @@ QUIT_CFA = defWord("QUIT", BRANCH_CFA,-4]) # Loop INCLUDED_CFA = defWord("INCLUDED", - [LIT_CFA, 0, STATE_CFA, STORE_CFA, # Set mode to interpret - FAM_RO_CFA, OPEN_FILE_CFA, DROP_CFA, # Open the file - SOURCE_ID_CFA, FETCH_CFA, SWAP_CFA, # Store current source on stack - DUP_CFA, SOURCE_ID_CFA, STORE_CFA, # Mark this as the current source - DUP_CFA, QUERY_FILE_CFA, # Read line from file - INTERPRET_CFA, # Interpret line - ZBRANCH_CFA, -4, # Loop if not EOF - CLOSE_FILE_CFA, DROP_CFA, # Close file - SOURCE_ID_CFA, STORE_CFA, # Restore input source + [LIT_CFA, 0, STATE_CFA, STORE_CFA, # Set mode to interpret + FAM_RO_CFA, OPEN_FILE_CFA, DROP_CFA, # Open the file + SOURCE_ID_CFA, FETCH_CFA, SWAP_CFA, # Store current source on stack + SOURCE_ID_CFA, STORE_CFA, # Mark this as the current source + SOURCE_ID_CFA, FETCH_CFA, QUERY_FILE_CFA, # Read line from file + NUMFIB_CFA, FETCH_CFA, ZE_CFA, AND_CFA, # Test for EOF and empty line + INVERT_CFA, ZBRANCH_CFA, 4, # Break out if EOF + INTERPRET_CFA, # Interpret line + BRANCH_CFA, -12, # Loop + SOURCE_ID_CFA, FETCH_CFA, + CLOSE_FILE_CFA, DROP_CFA, # Close file + SOURCE_ID_CFA, STORE_CFA, # Restore input source EXIT_CFA]) INCLUDE_CFA = defWord("INCLUDE", [LIT_CFA, 32, WORD_CFA,