I've confirmed my earlier guess that Snap uses bytecode rather than
pointers as a normal FORTH. The BRK instruction ($00) is used
for entry into Snap, and is followed by bytecodes. The interrupt
handler checks the B flag to see if a BRK occurred. If so, it pulls
the PC from the stack into registers, subtracts one, and stores it into
the Snap instruction pointer at $0015/16.
The BRK handler and Snap primitives end with a jump to NEXT at $0009, which
points to $CC2E. The code there fetches the byte pointed to by the Snap
instruction pointer, and depending on the two high order bits, jumps indirect
via jump tables from $c000-$c0ff, $c100-$c17f, or $0000-$007f.
At least, that's what happens if the contents of $66 is zero. If it's
non-zero, it goes somewhere else, and I haven't figured out what's up
with that.
Anyone else ever dig into the innards of Snap?
Eric