TITLE ILLMEM - Routine to trap ILL MEM REFs SUBTTL Joe Smith, CSM, 28-Jun-83 T1=1 T2=2 T3=3 T4=4 L=16 P=17 SEARCH MACTEN,JOBDAT,UUOSYM SALL ; CALL ILLMEM(1) !To enable trapping ; CALL ILLMEM(0) !To disable it ENTRY ILLMEM SIXBIT /ILLMEM/ ILLMEM: SKIPE T1,@0(L) ;Turn on trapping? MOVEI T1,INTBLK ;Yes, get addr of interrupt block MOVEM T1,.JBINT ;Store SETZM OLDPC ;Clear possible garbage POPJ P, INTBLK: XWD 4,NEWPC ;4 words long, new PC after interrupt EXP ER.EIJ ;Catch error in job (Ill Mem Ref) OLDPC: 0 ;PC at time of error 0 ;Code for actual error NEWPC: OUTSTR [ASCIZ / [ILLMEM - Starting trace]/] PUSH P,OLDPC ;Put address of error on stack PUSHJ P,TRACE.## ;Ask FOROTS to trace subroutine calls POP P,.JBOPC ;Store error PC OUTSTR [ASCIZ /?ILLMEM - Aborting due to Ill Mem Ref/] MONRT. ;Quiet exit HALT @.JBOPC ;Cannot CONTinue END