X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=memory.asm;h=8f8f51e9bc37193f5a4a3b6deae09512cc0df1f1;hb=5e6256c98dcbb53af4f777e4752d6736b9524126;hp=7d5f1440eb53e93fa7a1eeb1625afa2d52ea140b;hpb=bf67023324b2a0c5723dd3167ef757209ba62e01;p=rrq%2Frrqforth.git diff --git a/memory.asm b/memory.asm index 7d5f144..8f8f51e 100644 --- a/memory.asm +++ b/memory.asm @@ -17,11 +17,25 @@ 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 @@ -69,6 +83,40 @@ 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.