correction
[rrq/rrqforth.git] / memory.asm
index 4fe4772f76c38b3652e4308b1941ca1871541b27..a20c438971de084a45e52219c153a79e9a556753 100644 (file)
@@ -70,9 +70,9 @@
        ;; ( addr -- v )
        ;; Load the (unsigned) byte v from address addr.
        pop rax
-       mov bl,[rax]
-       push 0
-       mov [rsp],bl
+       xor rbx,rbx
+       mov bl,byte [rax]
+       push rbx
        next
        
        WORD p_Cput, 'C!',fasm
        mov byte [rax], bl
        next
 
+       WORD p_Wget, 'W@',fasm
+       ;; ( addr -- v )
+       ;; Load the (unsigned) double-byte v from address addr.
+       pop rax
+       xor rbx,rbx
+       mov bx,word [rax]
+       push rbx
+       next
+       
+       WORD p_Wput, 'W!',fasm
+       ;; ( v addr -- )
+       ;; Store byte value v at address addr.
+       pop rax
+       pop rbx
+       mov word [rax], bx
+       next
+
+       WORD p_Dget, 'D@',fasm
+       ;; ( addr -- v )
+       ;; Load the (unsigned) double-byte v from address addr.
+       pop rax
+       xor rbx,rbx
+       mov ebx,dword [rax]
+       push rbx
+       next
+       
+       WORD p_Dput, 'D!',fasm
+       ;; ( v addr -- )
+       ;; Store byte value v at address addr.
+       pop rax
+       pop rbx
+       mov dword [rax], ebx
+       next
+
        WORD p_2get, '2@',fasm
        ;; ( addr -- v2 v1 )
        ;; Load the cell pair {v1,v2} from address addr.
@@ -127,7 +161,7 @@ p_erase_last:
        ;; Add n to the value at addr.
        pop rbx
        pop rax
-       add [rax],rbx
+       add qword [rax],rbx
        next
 
        WORD p_shift_left, '<<',fasm