a7dcb522c2
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.
14 lines
429 B
Plaintext
14 lines
429 B
Plaintext
( TODO: move these words with other native words. )
|
|
H@ 4 + XCURRENT ! ( make next CODE have 0 prev field )
|
|
CODE (br) L1 BSET ( used in ?br )
|
|
PC 0x3f - ORG @ 0x3d + ! ( stable abi )
|
|
DI DX MOVxx, AL [DI] MOVr[], AH AH XORrr, CBW,
|
|
DX AX ADDxx,
|
|
;CODE
|
|
CODE (?br)
|
|
PC 0x43 - ORG @ 0x41 + ! ( stable abi )
|
|
AX POPx, AX AX ORxx, JZ, L1 @ RPCs, ( False, branch )
|
|
( True, skip next byte and don't branch )
|
|
DX INCx,
|
|
;CODE
|