.TITLE TRPHDL ; ; TRAP HANDLER CODE FOR OBJECT CODE DISASSEMBLER ; ; MODIFIED TO USE $EDSMG ROUTINE INSTEAD OF MO CODES FOR USE WITH 11M ; ; ; MACRO CALLS USED HERE .MCALL DIR$,QIOW$ ; ; 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 ERROR DPB ERROR: QIOW$ IO.WLB,5,1,,,, PARLST: .BLKW 3 EDMESS: .ASCII /TRAP # %O AT PC= %P, PS= %P/ .ASCIZ / *** ABNORMAL TERMINATION/ .EVEN ERRMES: .BLKB 80. .GLOBL TRPHDL TRPHDL: MOV (SP)+,PARLST ;ERROR CODE TO PARAM LIST ASR PARLST ;DIVIDE BY 2 TO GET ORIGINAL CODE MOV (SP)+,PARLST+2 MOV (SP)+,PARLST+4 JSR PC,DETACH MOV #EDMESS,R1 ;ADDRESS OF ASCII STRING MOV #ERRMES,R0 ;OUTPUT BLOCK ADDRESS TO R0 MOV #PARLST,R2 ;ADDRESS OF ARGUMENT BLOCK TO R2 JSR PC,$EDMSG ;DO ERROR CONVERSION MOV R1,ERROR+Q.IOPL+2 ;CHANGE LENGTH IN IO DPB DIR$ #ERROR ;DO ERROR THING BCS 2$ MOV STKSAV,SP ;RESTORE ORIGINAL STACK JMP ENDPRC ;GO FINISH AND RE-PROMPT 2$: MOV @#0,R0 MOVB FILFDB+F.ERR,R2 MOVB OUTFDB+F.ERR,R3 HALT .END