Open aw opened 2 years ago
After thinking more about where these "builtin" vars should go, I'm leaning toward putting at the base of the dictionary memory just after the interpreter. Since other user-defined vars will end up living in the dict memory, this will keep ALL vars within the same "block". Taking an extra 20 bytes from the interpreter / dict segment shouldn't be too big of deal.
Once the var locations are chosen, the code you wrote should do the trick. The body of each var's corresponding code word will look much the same. In the future, once I've got user-defined vars working, there might be a way to come back and have ALL vars (builtin and user-defined) share the same code path / helper funcs.
As discussed previously, variables
STATE, HERE, LATEST, TIB
should be stored at memory addresses, not in registers.Below are a few ideas which could help you:
Store each variable at a memory location right below
TIB_BASE_ADDR = 0x3000
:Since the values are in memory instead of registers, the
body_fun
needs a small change, example:Repeat for
body_state, body_tib, etc..
. Well you know, there's quite a few other places this is needed, but if you had macros you could write one which performs those first two instructions (li
andlw
), so anywherederzforth.asm
makes use ofLATEST, STATE, HERE, TIB
could be replaced witht0
or something like that.. just a thought (I realize it's not going to be that simple).I don't know if the above code is correct since I haven't tested it, but I think that's the idea.