saving prebuilt binaries
[rrq/rrqforth.git] / compile.asm
index 8e87bf87012e2403217c7aa8e29963c79a41f70f..fe19b203620ee3dab25f407657704c588641fe20 100644 (file)
@@ -250,6 +250,9 @@ p_numper_POSITIVE:
        ;; returns 1 if stream ends and 0 if an unknown word is found
        dq p_gtR                ; Keep the stream on the return stack.
 p_evaluate_stream_PROMPT:
+       dq p_verboseQ
+       dq p_get
+       BRANCH 0,p_evaluate_stream_LOOP
        dq p_depth
        dq p_dot
        dq p_literal_string
@@ -287,7 +290,9 @@ p_evaluate_stream_COMPILE:
 p_evaluate_stream_NOTWORD:
        dq p_drop
        dq p_number
+       dq p_dup
        BRANCH 0,p_evaluate_stream_BAD ; branch if 0
+       dq p_drop
        dq p_state
        dq p_get
        BRANCH 0,p_evaluate_stream_AFTER ; branch if 0
@@ -335,3 +340,25 @@ p_evaluate_stream_BAD:
        mov rax,qword [rax]     ; tfa of most recent word
        mov qword [rax+16],1    ; set the flags field to 1
        next
+
+       WORD p_open_file_quote,'OPEN-FILE"'
+       ;; ( "name" -- fd )
+       dq p_double_quote
+       dq p_create
+       dq p_tfa2namez
+       dq p_literal,0
+       dq p_literal,0
+       dq sys_open
+       dq p_exit
+
+       WORD p_load_file_quote,'LOAD-FILE"'
+       ;; ( "name" -- )
+       ;; Create a word for the nominated file for a stream to,
+       ;; and store that stream pointer, then invoke evaluate-stream
+       dq p_open_file_quote ; fd
+       dq p_literal, 15000 ; buffer size
+       dq p_stream
+       dq p_dup
+       dq p_comma
+       dq p_evaluate_stream
+       dq p_exit