Theo: |
EVALUATE gaat met de string aan de slag en gebruikt daarbij de stack.
Op het moment van de fout stond daar kennelijk 0 0.
Nu komen de denkertjes: VB 5 ' CHAR CATCH 8 .S |
Leo: |
CATCH voert CHAR uit.
CHAR zet de ASCII-code van 8 op Stack en CATCH zet er een nul bij.
[rtn] ( 5 56 0 ) ok |
Theo: |
Juist.
Voor het volgende voorbeeld moet je weten dat CATCH voordat hij aan werk gaat
de actuele invoerstroom opslaat.
Als er iets fout gaat herstelt hij de stack(s) en de invoerstroom.
Waarom?
Denk er maar eens over na wat er zou gebeuren als je na een fout tijdens het laden
van een file de invoerstroom op zijn beloop zou laten.
VB 6 ' ' CATCH 666 .S [rtn] ( 6 -13 666 ) okCATCH voert de Tick uit op 666. Dat lukt natuurlijk niet. Hij zet foutnummer -13 op stack, en herstelt de invoerstroom. Die wees naar direct achter CATCH. 666 wordt opnieuw gelezen en uitgevoerd en tenslotte is .S aan de beurt. Het spijt me, maar ik moet er nu vandoor. Ik geef je een stuk of wat puzzeltjes die je met de kennis die je nu hebt zou moeten kunnen oplossen. VB 7 ' S" CATCH Vijgeblaadje" .S VB 8 ' ' CATCH FIG .S VB 9 ' TO CATCH BL .S VB 10 ' DUP ' CATCH EXECUTE .S VB 11 ' DUP ' CATCH CATCH .S VB 12 ' DUP ' CATCH ' CATCH CATCH .S VB ( 13 ) ' DROP CATCH .S VB 14 ' THROW CATCH .STot ziens. |
Leo: | Tot ziens. |