diff --git a/emul/forth/z80c.bin b/emul/forth/z80c.bin index 1e712c7..c421fc7 100644 Binary files a/emul/forth/z80c.bin and b/emul/forth/z80c.bin differ diff --git a/forth/boot.z80 b/forth/boot.z80 index 2126c87..1171b52 100644 --- a/forth/boot.z80 +++ b/forth/boot.z80 @@ -281,6 +281,7 @@ PC ORG @ 0x1b + ! ( next ) IY INCss, ( continue to execute ) +L3 BSET PC ORG @ 0x34 + ! ( execute ) ( DE points to wordref ) EXDEHL, @@ -292,6 +293,7 @@ PC ORG @ 0x34 + ! ( execute ) ( DE points to PFA ) JP(HL), +L1 BSET PC ORG @ 0x0f + ! ( compiledWord ) ( Execute a list of atoms, which always end with EXIT. DE points to that list. What do we do: @@ -308,7 +310,7 @@ PC ORG @ 0x0f + ! ( compiledWord ) D (HL) LDrr, HL INCss, HL PUSHqq, IY POPqq, ( --> IP ) - 0x33 JPnn, ( 33 == execute ) + JR, L3 BWR ( execute ) PC ORG @ 0x0c + ! ( cellWord ) ( Pushes PFA directly ) @@ -330,7 +332,7 @@ PC ORG @ 0x2c + ! ( doesWord ) E (HL) LDrr, HL INCss, D (HL) LDrr, - 0x0e JPnn, ( 0e == compiledWord ) + JR, L1 BWR ( compiledWord ) ( Core words ) KEY and EMIT are not defined here. There're @@ -340,7 +342,7 @@ PC ORG @ 0x2c + ! ( doesWord ) CODE EXECUTE DE POPqq, chkPS, - 0x33 JPnn, ( 33 == execute ) + JR, L3 BWR ( execute ) ( a b c -- b c a ) CODE ROT