commit 14b704fd0125b6fd575c7186d2a20be1b1ecbf44 parent 25cc4a1329f185d8ccdb2af491c167be818155f2 Author: Devine Lu Linvega <aliceffekt@gmail.com> Date: Sat, 15 Apr 2023 09:49:58 -0700 (system.tal) Added error handler example Diffstat:
A | projects/examples/devices/system.tal | | | 80 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 80 insertions(+), 0 deletions(-)
diff --git a/projects/examples/devices/system.tal b/projects/examples/devices/system.tal @@ -0,0 +1,80 @@ +|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 + +|0100 + + ;on-halt .System/vector DEO2 + + ( underflow ) POP + ( overflow ) #00 &l #ffff ROT INC DUP ?&l POP + ( divzero ) #02 #00 DIV + + #80 .System/halt DEO + +BRK + +@on-halt ( addr* inst code -> ) + + #00 SWP DUP ADD ;err ADD2 LDA2 pstr + ;dict/error pstr + print-opcode + ;dict/at pstr + phex LIT2 0a ". #18 DEO #18 DEO + #01 .System/halt DEO + +BRK + +@print-opcode ( byte -- ) + + DUP #20 EQU ?&jci + DUP #40 EQU ?&jmi + DUP #60 EQU ?&jsi + DUP #00 EQU ?&brk + #00 OVR #1f AND #20 SFT2 ;opcodes ADD2 pstr + DUP #20 AND #00 EQU ?&no-2 LIT "2 #18 DEO &no-2 + DUP #1f AND #00 EQU ?&no-k + DUP #80 AND #00 EQU ?&no-k LIT "k #18 DEO &no-k + DUP #40 AND #00 EQU ?&no-r LIT "r #18 DEO &no-r + POP + +JMP2r + &brk POP ;opcodes/brk !pstr + &jmi POP ;opcodes/jmi !pstr + &jci POP ;opcodes/jci !pstr + &jsi POP ;opcodes/jsi !pstr + +@phex ( short* -- ) + + SWP phex/b + &b ( byte -- ) DUP #04 SFT phex/c + &c ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO + +JMP2r + +@pstr ( str* -- ) + &w + LDAk #18 DEO + INC2 LDAk ,&w JCN + POP2 +JMP2r + +@err + =dict/unknown + =dict/underflow + =dict/overflow + =dict/divzero + +@dict + &error "Error, 20 "during 20 $1 + &unknown "Unkown 20 $1 + &underflow "Underflow 20 $1 + &overflow "Overflow 20 $1 + &divzero "Division 20 "by 20 "zero 20 $1 + &at ", 20 "at 20 "# $1 + +@opcodes + "LIT $1 "INC $1 "POP $1 "NIP $1 "SWP $1 "ROT $1 "DUP $1 "OVR $1 + "EQU $1 "NEQ $1 "GTH $1 "LTH $1 "JMP $1 "JCN $1 "JSR $1 "STH $1 + "LDZ $1 "STZ $1 "LDR $1 "STR $1 "LDA $1 "STA $1 "DEI $1 "DEO $1 + "ADD $1 "SUB $1 "MUL $1 "DIV $1 "AND $1 "ORA $1 "EOR $1 "SFT $1 + &brk "BRK $1 &jmi "JMI $1 &jci "JCI $1 &jsi "JSI $1 +