10 REM > ErrorTrap
   20 REM Source for error trap ROM
   30 :
   40 OSBYTE=&FFF4
   50 mcode%=TOP+&1800:HIMEM=mcode%
   60 FOR P=0 TO 1
   70   O%=mcode%:P%=&8000
   80   [OPT P*3+4
   90   BRK:BRK:BRK
  100   JMP serv
  110   EQUB &C2
  120   EQUB copy-&8000
  130   EQUB 10
  140   EQUS "Error Trap":BRK:EQUS "0.00 (13 Aug 1987)"
  150   .copy
  160   BRK:EQUS "(C)J.G.Harston":BRK
  170   \
  180   .serv
  190   CMP #6:BEQ errors:RTS
  200   \
  210   .errors
  220   TYA:PHA
  230   LDA &FD:STA &F6
  240   LDA &FE:STA &F7
  250   LDX #0:LDY #255:LDA #186:JSR OSBYTE
  260   TXA:TAY:JSR &FFB9
  270   \ A has error number
  280   LDY #0:STA &A8
  290   LDA #table AND 255:STA &A9
  300   LDA #table DIV 256:STA &AA
  310   .loop
  320   LDA (&A9),Y:BEQ exit
  330   CMP &A8:BEQ found
  340   .loop2
  350   INY:LDA (&A9),Y:BNE loop2
  360   TYA:SEC:ADC &A9:STA &A9
  370   LDA #0:ADC &AA:STA &AA
  380   LDY #0:BEQ loop
  390   JMP exit
  400   .found
  410   LDY #1
  420   .loop3
  430   LDA (&A9),Y:STA &101,Y
  440   INY:CMP #0:BNE loop3
  450   LDA #1:STA &FD:STA &FE
  460   .exit
  470   PLA:TAY:LDX &F4:LDA #6:RTS
  480   .table
  490   EQUB 17:EQUS "That was the ESCAPE key!":BRK
  500   EQUB 214:EQUS "You must be crazy if you're trying to find that file":BRK
  510   EQUB 251:EQUS "16 function keys not enough for you?":BRK
  520   EQUB 254:EQUS "Check your spelling and parameters":BRK
  530   EQUB 250:EQUS "Hold on, let me finish with the key first":BRK
  540   EQUB 198:EQUS "You've no more disk space left!":BRK
  550   EQUB 4:EQUS "Mistake - Check that spelling":BRK
  560   EQUB 21:EQUS "-ve root - you know they are impossible":BRK
  570   EQUB 25:EQUS "Bad MODE - don't do it in a PROC, or when there's no memory":BRK
  580   EQUB 26:EQUS "No such variable - You probably spelt it wrong":BRK
  590   EQUB 247:EQUS "Sigma OS 4.00":BRK
  600   :
  610   :
  620   BRK
  630 ]NEXT
  640 PRINT"SAVE ROM ";~mcode%;" ";~O%+1