816563e2e3
This is done by adding a "C<* override" layer that is reset to 0 on ABORT. The problem was that when ABORT happened during a LOAD, we had a resetted RSP and started from a clean INTERPRET, but LOAD didn't have the opportunity to restore C<*, which caused it to continue interpreting from the faulty BLK. With a C<* override, we don't need to *restore* C<*, we just need to clear the override.
17 lines
430 B
Plaintext
17 lines
430 B
Plaintext
INITIAL_SP holds the initial Stack Pointer value so
|
|
that we know where to reset it on ABORT
|
|
|
|
CURRENT points to the last dict entry.
|
|
|
|
HERE points to current write offset.
|
|
|
|
IP is the Interpreter Pointer
|
|
|
|
PARSEPTR holds routine address called on (parse)
|
|
|
|
C<* holds routine address called on C<. If the C<* override
|
|
at 0x08 is nonzero, this routine is called instead.
|
|
|
|
|
|
(cont.)
|