Ok After a lot of trial and error as well as much searching I found something that should work, but because of two bugs in redFORTH, does not.
VALUE
\ Works fine, now to reset the value.
: VALUE \ n <name> --
CREATE ,
DOES> @
;
TO
\ Works if not compiling, LITERAL and POSTPONE are broken.
: TO
TIBWORD FIND 3 +
STATE @ IF
POSTPONE LITERAL
POSTPONE !
ELSE
!
THEN
; IMMEDIATE
Demo of bug in LITERAL
\ fails, very wierd error.
: TESTLIT [ 42 ] LITERAL ;
\ TESTLIT Unknown Token: TESTLIT
\ FORGET TESTLIT Unknown Token: TESTLIT
\ WORDS TESTLIT COLD SORTMATCH ...
Demo of bug in POSTPONE
\ fails, postpone is directly equivelent to [']
: TESTPOST POSTPONE + ; IMMEDIATE
: TEST 2 2 TESTPOST . ;
\ . 1935
\ ' + . 1935
I'm off to file a bug report....
EDIT #1: After some more trial and error and not a little swearing (I'm not good with FORTH) I found a way to make it work.
: TO
TIBWORD FIND 3 +
STATE @ IF
(lit) (lit) , , \ store address
(lit) ! ,
ELSE
!
THEN
; IMMEDIATE