rename
[rrq/rrqforth.git] / compile.asm
index 53dbaecdd9ddb233439e5931984a8bc1e8304883..defb1acaa5dcfc25e59eac9acbe315c216b5c450 100644 (file)
@@ -18,7 +18,7 @@
        mov qword [rbx+24],rcx  ; PFA (length)
        pop rsi                 ; chars* (source)
        lea rdi,[rbx+32]        ; (dest)
-       ;; clear DF
+       cld
 p_create_COPY:
        movsb
        dec rcx
@@ -60,8 +60,8 @@ p_quote_end:
        WORD p_comma,','
        ;; ( v -- )
        ;; Put cell value onto the heap and advance "HERE"
-       dq p_here, p_put, p_literal, 8, p_here, p_put_plus, p_exit
-       
+       dq p_here, p_literal, 8, p_get_n_increment, p_put, p_exit
+
        WORD p_Ccomma,'C,'
        ;; ( c -- )
        ;; Put byte value onto the heap and advance "HERE"
@@ -193,6 +193,8 @@ p_number_ALPHA:
        cmp al,'Z'
        jg p_number_alpha
        sub al,'A'-10
+       cmp rax,qword [p_base_DFA]
+       jge p_number_BAD
        jmp p_number_CONSUME
 p_number_alpha:
        cmp al,'a'
@@ -200,6 +202,8 @@ p_number_alpha:
        cmp al,'z'
        jg p_number_BAD
        sub al,'a'-10
+       cmp rax,qword [p_base_DFA]
+       jge p_number_BAD
        jmp p_number_CONSUME
 p_number_BAD:
        push qword 0
@@ -316,9 +320,10 @@ p_evaluate_stream_BAD:
        dq 15000
        
        WORD p_open_file,'OPEN-FILE',fasm
-       ;; ( chaz* -- fd )
+       ;; ( chaz* -- fd )
        ;; Open the nominated file
        pushr rsi
+       add rsp,8 ; drop n ... assuming NUL-ended string
        push qword 0
        push qword 0
        DOFORTH sys_open
@@ -326,7 +331,7 @@ p_evaluate_stream_BAD:
        next
 
        WORD p_load_file,'LOAD-FILE'
-       ;; ( chaz* -- )
+       ;; ( chaz* -- )
        dq p_open_file
        dq p_dup, p_0less
        BRANCH 1,p_load_file_badfile