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.
16 lines
280 B
Plaintext
16 lines
280 B
Plaintext
: RAM+ [ RAMSTART LITN ] + ;
|
|
: (parse*) 0x0a RAM+ ;
|
|
: HERE 0x04 RAM+ ;
|
|
: CURRENT* 0x51 RAM+ ;
|
|
: CURRENT CURRENT* @ ;
|
|
|
|
( w -- a f )
|
|
: (find) CURRENT @ SWAP _find ;
|
|
|
|
: QUIT
|
|
(resRS)
|
|
0 0x08 RAM+ ! ( 08 == C<* override )
|
|
LIT< INTERPRET (find) DROP EXECUTE
|
|
;
|
|
394 407 LOADR
|