.TITLE TRPHDL ; ; TRAP HANDLER CODE FOR OBJECT CODE DISASSEMBLER ; ; MACRO CALLS USED HERE .MCALL MOUT$ MODF$ PUT$ DIR$ CLOSE$ MOWA$S ; ; GLOBALS DEFINED ELSEWHERE .GLOBL OUTFDB FILFDB ENDPRC STKSAV DETACH ; DEFINE TRAP CODES GLOBALLY TE.GCM==1 ;GCML ERROR TE.CSI==2 ;CSI ERROR TE.OPI==3 ;ERROR OPENING INPUT FILE TE.OPO==4 ;ERROR OPENING OUTPUT FILE TE.INP==5 ;ERROR READING INPUT FILE TE.OUT==6 ;ERROR WRITING OUTPUT FILE TE.RTP==7 ;RECORD TYPE ERROR TE.PSC==10 ;TOO MANY PSECTS FOR PROGRAM TE.PSE==11 ;PSECT NOT IN REQUIRED RANGE TE.URL==12 ;UNEXPECTED RLD TYPE TE.RLF==13 ;RLD TYPE ERROR IN FINISHING TE.RAM==14 ;RLD - ASCII BUFFER MISMATCH TE.LSF==15 ;LIBRARY SEARCH FAILURE ; ; DEFINE MO DPB MODPB: MOUT$ STRDSC,PARLST,0,CONT,SYLOG,,,MOSTAT,MOLUN MODF$ MOLUN=4 ;DEFINE MO LUN MOSTAT: .BLKW 2 PARLST: .BLKW 3 STRDSC: .WORD STR1E-STR1 .WORD STR1 STR1: .ASCII /TRAP # %O AT PC= %P, PS= %P/ STR1E: FILMSG: .ASCII /ABNORMAL TERMINATION/ FILEND: .EVEN .GLOBL TRPHDL TRPHDL: MOV #SY$STM,MODPB+M.ODST MOV (SP)+,PARLST ;ERROR CODE IN PARAM LIST ASR PARLST ;DIVIDE BY 2 TO GET ORIGINAL CODE MOV (SP)+,PARLST+2 MOV (SP)+,PARLST+4 JSR PC,DETACH PUT$ #OUTFDB,#FILMSG,#FILEND-FILMSG DIR$ #MODPB BCS 2$ MOWA$S BCS 2$ MOV STKSAV,SP ;RESTORE ORIGINAL STACK JMP ENDPRC ;GO FINISH AND RE-PROMPT 2$: MOV @#0,R0 MOV MOSTAT,R1 MOVB FILFDB+F.ERR,R2 MOVB OUTFDB+F.ERR,R3 HALT .END