additional part-cell primitives
[rrq/rrqforth.git] / compile.asm
index ff5d853421005525e02035f3374abadc0a890390..d99504c8131f934150d9ebc8c59dcfe358357873 100644 (file)
@@ -57,15 +57,41 @@ p_quote_end:
        ;; Compile down " LIT value "
        dq p_literal, p_literal, p_comma,p_quote, p_comma, p_return
 
-       WORD p_comma,','
-       ;; ( v -- )
-       ;; Put cell value onto the heap and advance "HERE"
-       dq p_here, p_literal, 8, p_get_n_increment, p_put, p_return
-
        WORD p_Ccomma,'C,'
        ;; ( c -- )
        ;; Put byte value onto the heap and advance "HERE"
-       dq p_here, p_Cput, p_literal, 1, p_here, p_put_plus, p_return
+       mov rax,[p_here_DFA]
+       pop rbx
+       mov byte [rax],bl
+       inc qword [p_here_DFA]
+       next
+
+       WORD p_Wcomma,'W,'
+       ;; ( c -- )
+       ;; Put byte value onto the heap and advance "HERE"
+       mov rax,[p_here_DFA]
+       pop rbx
+       mov word [rax],bx
+       add qword [p_here_DFA],2
+       next
+
+       WORD p_Dcomma,'D,'
+       ;; ( d -- )
+       ;; Put byte value onto the heap and advance "HERE"
+       mov rax,[p_here_DFA]
+       pop rbx
+       mov dword [rax],ebx
+       add qword [p_here_DFA],4
+       next
+
+       WORD p_comma,','
+       ;; ( v -- )
+       ;; Put byte value onto the heap and advance "HERE"
+       mov rax,[p_here_DFA]
+       pop rbx
+       mov qword [rax],rbx
+       add qword [p_here_DFA],8
+       next
 
        WORD p_does,"DOES>",fasm,IMMEDIATE
        ;; ( -- )