On Sun, Apr 17, 2016 at 08:45:31PM -0400, Programmingkid wrote:
I implemented another stack that two new words use in place of >r and r> when running code in the bootscript. I see this message with and without the '\r' to '\n' patch:
Dictionary space overflow: dicthead=000c3fe4 dictlimit=00080000
this image is not for this platform
This means the implementing another stack did not fix the problem. It appears to make it worse.
Here is the patch:
Oh my.
hex 20 cells CREATE stash VARIABLE #stash #stash off : stash-push stash #stash cells + ! 1 stash +! ; : stash-pop -1 stash +! stash #stash cells + @ ; : >r state @ IF postpone >r EXIT THEN stash-push ; : r> state @ IF postpone r> EXIT THEN stash-pop ; : r@ state @ IF postpone r@ EXIT THEN stash-pop dup stash-push ;
Anyway, I had a quick look at the openbios code and it seems it doesn't even support IF and similar structure words in interpretation state at all. That is a little more work (requires a temporary definition, use a buffer for that (don't put it at HERE) because you can allocate from that temp definition; when you reach THEN that temp definition ends (not just at ; ); but things can nest, IF ... IF ... THEN ... THEN.)
It's not too hard but it interacts a little bit with the rest of the Forth system, so it needs testing etc. Maybe next weekend.
Segher