fix terminating NUL on the captured string
[rrq/rrqforth.git] / logic.asm
index 26963322797442ab1ddbb5a0afd485401b247301..56dd2db88254b8fbf190d3a69ddab35d64d8df28 100644 (file)
--- a/logic.asm
+++ b/logic.asm
        not qword [rsp]
        next
 
-       WORD p_false, 'FALSE',fasm
+       WORD p_false, 'FALSE',dovalue
        ;; ( -- 0 )
        ;; Push a false flag, 0.
-       push qword 0
-       next
+       dq 0
 
-       WORD p_true, 'TRUE',fasm
+       WORD p_true, 'TRUE',dovalue
        ;; ( -- true )
        ;; Return a true flag, -1. (non-zero)
-       push qword -1
-       next
+       dq -1
 
 pop_false_next:
        mov qword [rsp],0
@@ -54,18 +52,15 @@ pop_true_next:
        pop rax
        pop rbx
        cmp qword [rsp],rbx
-       jl p_within_not
+       jl pop_false_next
        cmp qword [rsp],rax
-       jge p_within_not
-       not rcx
-p_within_not:
-       next
-       
+       jge pop_false_next
+       jmp pop_true_next
+
        WORD p_0less, '0<',fasm
        ;; ( n -- flag )
        ;; flag is true (non-zero) if and only if n is less than zero.
-       pop rax
-       cmp rax,qword [rsp]
+       cmp qword [rsp],0
        jl pop_true_next
        jmp pop_false_next
 
@@ -80,7 +75,7 @@ p_within_not:
        ;; ( n1 n2 -- flag )
        ;; flag is true if and only if n1 is less than n2.
        pop rax
-       cmp rax,qword [rsp]
+       cmp qword [rsp],rax
        jl pop_true_next
        jmp pop_false_next
 
@@ -88,7 +83,7 @@ p_within_not:
        ;; ( n1 n2 -- flag )
        ;; flag is true if and only if n1 is less than n2.
        pop rax
-       cmp rax,qword [rsp]
+       cmp qword [rsp],rax
        jle pop_true_next
        jmp pop_false_next
 
@@ -97,7 +92,7 @@ p_within_not:
        ;; flag is true if and only if x1 is bit-for-bit the same as
        ;; x2.
        pop rax
-       cmp rax,qword [rsp]
+       cmp qword [rsp],rax
        je pop_true_next
        jmp pop_false_next
 
@@ -106,7 +101,7 @@ p_within_not:
        ;; flag is true if and only if x1 is bit-for-bit the same as
        ;; x2.
        pop rax
-       cmp qword [rsp], rax
+       cmp qword [rsp],rax
        jne pop_true_next
        jmp pop_false_next
        
@@ -114,7 +109,7 @@ p_within_not:
        ;; ( n1 n2 -- flag )
        ;; flag is true if and only if n1 is greater than n2.
        pop rax
-       cmp rax,qword [rsp]
+       cmp qword [rsp],rax
        jg pop_true_next
        jmp pop_false_next
 
@@ -122,6 +117,6 @@ p_within_not:
        ;; ( n1 n2 -- flag )
        ;; flag is true if and only if n1 is greater than n2.
        pop rax
-       cmp rax,qword [rsp]
+       cmp qword [rsp],rax
        jge pop_true_next
        jmp pop_false_next