~vdupras/collapseos

8086: implement stack overflow error condition

Also, remove RSP underflow check from next for the same reason as
in the previous commit in z80.
z80: move lbluflw code around

with uflw checks not being in next anymore, we can save ourselves
a forward jump.
z80: implement stack overflow error condition

Also, remove underflow checks from next: it's taxing and useless
because underflow check already takes place in each relevant native
word.
cvm: implement stack overflow error condition
cvm: improve comments

They were a bit terse.
tools: improve stty-related advices in README
tools/exec: exec specified file instead of hardcoding on stdin

Under OpenBSD, stdin is already used by the device itself because of
the whole "stty has no memory" situation.
recipes/arduinouno/at28: add companion at28dump program
recipes/arduinouno/at28: improve reliability

Previously, it could never write more than a few bytes before pingpong
getting a mismatch error. Now, I can pingpong Collapse OS binary
without a mismatch.
Replace "-ansi" with "-std=c89" in emul/Makefile

"-ansi" is not supported by tcc, but according to gcc
documentation, "-std=c89" produces identical behavior.

See: https://gcc.gnu.org/onlinedocs/gcc-3.4.2/gcc/Standards.html
Add arduinouno/at28 recipe
z80: Use BC as IP register instead of IY

It's a bit more inconvenient in terms of register protection (BC
is much more generally useful than IY), but it makes tight spots
such as next and execute much faster, so I think it's worth it.
Make br cells 1 byte wide

The 1 byte limitation has been effective for a while now, but I
hadn't made the move yet, I wanted to see if the limitation would
cause me problems. It doesn't.

Doing this now slightly facilitates the IY->BC move in z80.

Bootstrapping: if you try to recreate the CVM binary from the
previous commit with this code, you'll have bootstrapping problems.
The first bootstrap will compile a binary with 2-bytes wide cells
but branching conditionals that yields 1-byte cells. That's bad.

I got around the issue by temporarily inserting a "397 399 LOADR"
instruction in cvm/xcomp.fs, right before the xcomp overrides. This
way, I force 1-byte cells everywhere on the first compiliation,
which then allows me to apply the logic change in cvm/vm.c and have
a properly running binary.
z80: protect or avoid BC wherever it's used

For the IY->BC move, of course.
z80: protect BC in _find

In preparation for the IY->BC move
z80: inline lblfind's routine into _find word
z80: move boot code around

Bring native words together, make the next/exec/does/compiled
cluster be at the beginning.

Next step: bring find code into _find word.
z80: inline all uses of pushRS/popRS

I'm trying to move stuff around and it simplifies things. Will make
a lot more sense to inline when BC replaces IY.
Fix broken LIT"
z80a: make PUSH* macros use DE instead of BC

This is in preparation of using BC instead of IY for IP. I've
verified all PUSH* usage and none was problematic.
Next