forth-riscv

My forth
git clone git://git.electrosoup.com/forth-riscv
Log | Files | Refs

commit f616b132d330bd960a2010ad257a4dce10cbeb9c
parent 31170aa7bba69c8bbb786c7df9f7817b7cc79e9a
Author: Christian Ermann <christianermann@gmail.com>
Date:   Tue,  5 Nov 2024 22:25:39 -0800

Fix default behavior of 'create'd words

Diffstat:
Mforth.s | 11+++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/forth.s b/forth.s @@ -760,12 +760,14 @@ _less_than: # ----------------------------------------------------------------------------- defword "create", 6, 0, 0x26BB595D, create, less_than + .int parse_word .int latest, fetch, comma # link .int hash, comma # hash .int lit, 0, comma # meta .int lit, 0, char_comma # flags .int align .int here, lit, -code_offset, plus, latest, store # update 'latest' + .int lit, dovar, comma .int exit defcode "hash", 4, 0, 0xEDBF0FE3, hash, create @@ -809,7 +811,8 @@ defcode "hidden", 6, 0, 0xF618F139, hidden, r_bracket next defword ":", 1, 0, 0x3F0CB86D, colon, hidden - .int parse_word, create # create header + .int create # create header + .int lit, -cell, allot .int lit, docol, comma # append 'docol' .int latest, fetch, hidden # hide word .int r_bracket # enter 'compile' mode @@ -854,13 +857,13 @@ defword "immediate", 9, 0, 0xF232267A, immediate, postpone .int exit defword "variable", 8, 0, 0x19385305, variable, immediate - .int parse_word, create # create header - .int lit, dovar, comma # append 'dovar' + .int create # create header .int lit, 0, comma # initialize to zero .int exit defword "constant", 8, 0, 0x0691EA25, constant, variable - .int parse_word, create # create header + .int create # create header + .int lit, -cell, allot .int lit, docon, comma # append 'docon' .int comma # initialize to value on stack .int exit