Theo: |
EVALUATE operates on the string, using the stack.
Apparently 0 0 was on the stack when the error occurred.
Now for the serious stuff: EX 5 ' CHAR CATCH 8 .S |
Leo: |
CATCH executes CHAR.
CHAR puts the ASCII-code of 8 on stack after which
CATCH adds an "allright zero."
[rtn] ( 5 56 0 ) ok |
Theo: |
Right.
For the next example it's important to remember that CATCH saves
the current input stream before going to work.
When an error develops, the stack(s) and the input stream are restored.
Why? Consider what happens when loading a file,
when after an error the input stream is not restored.
EX 6 ' ' CATCH 666 .S [rtn] ( 6 -13 666 ) okCATCH executes the Tick on 666. Of course, that doesn't work. So CATCH puts error number -13 on the stack and restores the input stream. That stream was pointing to just after CATCH. 666 is read again and executed and after that .S gets its turn. I'm terribly sorry, but I have to go now. Here are some puzzles you should be able to solve, given the state of your knowledge at this point. EX 7 ' S" CATCH Vijgeblaadje" .S EX 8 ' ' CATCH FIG .S EX 9 ' TO CATCH BL .S EX 10 ' DUP ' CATCH EXECUTE .S EX 11 ' DUP ' CATCH CATCH .S EX 12 ' DUP ' CATCH ' CATCH CATCH .S EX ( 13 ) ' DROP CATCH .S EX 14 ' THROW CATCH .SGoodbye. |
Leo: | Goodbye. |