X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=compile.asm;h=fe19b203620ee3dab25f407657704c588641fe20;hb=076f00a88873336acf2c7150281f1a8172683fe7;hp=8e87bf87012e2403217c7aa8e29963c79a41f70f;hpb=d5a8f559318ac57934871a48e964bac18557b601;p=rrq%2Frrqforth.git diff --git a/compile.asm b/compile.asm index 8e87bf8..fe19b20 100644 --- a/compile.asm +++ b/compile.asm @@ -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