The commit ended up being much bigger than anticipated. This was a long thread
of underlying complexities. This lead to the creation of interesting concepts
such as (sysv).
Forth-ification of Collapse OS goes forward. What will happen is that assembly
code in apps/ will become Forth code. The concept of an assembler code library
will become obsolete.
However, Forth's core use some of that code. To facilitate the transition, I'm
inlining that code directly in Forth's code.
Change the mainloop so that words are executed immediately after they're read.
This greatly simplifies execution model and allow the "DEFINE" word to become
an IMMEDIATE and stop its "copy from compiled words" scheme.
The downside to this is that flow control words no longer work when being used
directly in the input buffer. They only work as part of a definition.
It also broke "RECURSE", but I've replaced it with "BEGIN" and "AGAIN".
Another effect of this change is that definitions can now span multiple lines.
All in all, it feels good to get rid of that COMPBUF...
Readline, instead of being triggered by the end of execution of the last
compiled line is now triggered "just in time", by "WORD".
This allows IMMEDIATE words reading input buffer to span multiple lines
( comments for example, but colon definitions will soon follow ).
Add words "COMPILE" and "DROP". The goal is to soon make "DEFINE" immediate
and have it compile from input directly. This whole "main loop compiles
everything and DEFINE picks up compiled atoms" is a bit messy.
This will allow us to support backward branching with just one new (bbr) word.
Also, this allow us to have "(" word sooned in core.fth and thus allow for
earlier commenting.