bug fix !+
[rrq/rrqforth.git] / memory.asm
index 7d5f1440eb53e93fa7a1eeb1625afa2d52ea140b..a20c438971de084a45e52219c153a79e9a556753 100644 (file)
        next
 
        WORD p_tfa2flags_get,'TFA>FLAGS@',fasm
-       ;; ( cfa -- flags )
+       ;; ( tfa -- flags )
        pop rax
        push qword[rax+16]
        next
 
+       WORD p_tfa2namez,'TFA>NAMEZ',fasm
+       ;; (  tfa -- char* )
+       pop rax
+       add rax,32
+       push rax
+       next
+
+       WORD p_cfa2tfa,'CFA>TFA',fasm
+       ;; ( cfa -- tfa )
+       pop rax
+       cfa2tfa rax
+       push rax
+       next
+
        WORD p_cfa2flags_get,'CFA>FLAGS@',fasm
        ;; ( cfa -- flags )
        pop rax
@@ -56,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.
@@ -113,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