X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=temp.asm;h=46a1358e85632fd4c6c41a4de1f5f8a9f443b9c2;hb=83a89e9e9793e18d26f9d8e67ab6385d31256346;hp=9759f546eee4e62dbbbb1e6079f15ecac59d3b28;hpb=42844a6fe395162a374bd7bb6e8ed9a04b8d580c;p=rrq%2Frrqforth.git diff --git a/temp.asm b/temp.asm index 9759f54..46a1358 100644 --- a/temp.asm +++ b/temp.asm @@ -7,9 +7,9 @@ WORD p_objectspace,'TEMPSPACE',dovariable ;; Holds size and address of the object space. - dq 104857600 ; Total object space size (request size) - dq 0 ; Object space base address - dq 0 ; Currently used. + dq 104857600 ; [0] Total object space size (request size) + dq 0 ; [8] Object space base address + dq 0 ; [16] Currently used. WORD p_temp,'TEMP',fasm ;; ( size -- addr ) @@ -40,11 +40,12 @@ p_objecthole_from_tail: ;; ( char* n -- char* n ) ;; Capture a given [n:char*] string as a new temp object with ;; leading size cell. - dq p_dup, p_gtR ; size - dq p_dup, p_temp - dq p_dup, p_gtR ; address + dq p_dup, p_gtR ; ( -- char* n ) [ n ] + dq p_dup, p_literal, 8, p_plus ; ( -- char* n n+8 ) + dq p_temp ; ( -- char* n addr ) dq p_2dup, p_put - dq p_literal, 8, p_plus - dq p_swap, p_strncpy - dq p_Rgt, p_Rgt, p_swap - dq p_exit + dq p_literal, 8, p_plus ; ( -- char* n addr+8 ) [ n ] + dq p_dup, p_gtR ; ( -- char* n addr+8 ) [ n addr+8 ] + dq p_swap, p_strncpy ; ( -- ) [ n addr+8 ] + dq p_Rgt, p_Rgt ; ( -- addr+8 n ) [ ] + dq p_return