TITLE ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS SUBTTL 8-9-65 EXTERNAL APRCHL,APRRET,HOLD,HOLDI,APRCHN EXTERNAL JOB,JOBADR,JOBREL,TTYFND,TTYCTR,TTYSTR EXTERNAL JBTADR, UXIT,JOBPDP,JOBTRP,USRPDP,UBUF,PJOBN EXTERNAL CPOPJ,HOLDI1,WAIT1,USRPOV,JOBPFI EXTERNAL CRLF,MJOBPD,JOBPDL,CPOPJ1 ;CALL: PUSHJ PDP,ADRCK ; HRRZ TAC,LOC ; OK RETURN INTERNAL ADRCK ADRCK: PUSH PDP, TAC XCT @-1(PDP) AOS -1(PDP) PUSH PDP,TAC1 LDB TAC1,PJOBN HLRZ TAC1,JBTADR(TAC1) CAILE TAC,JOBPFI ;IN IO PROTECTED PART OF DATA AREA? CAMLE TAC,TAC1 ;NO,IS IT GREATER THAN PROTECTION? PUSHJ PDP,ADRERR ;YES POP PDP,TAC1 ;NO POP PDP, TAC POPJ PDP, INTERNAL ADRERR ADRERR: HRRZ TAC1,PDP CAMG TAC1,JOBADR ;IS THIS ERROR AT UUO OR INTERRUPT SERV JRST ADRERI ;INTERRUPT SERVICE LEVEL JSP TAC,ERRPTU POINT 7,AERM1 PUSHJ PDP,ERNAM JRST ERSYC1 AERM1: ASCIZ /ADDRESS CHECK FOR / ADRERI: LDB ITEM, PJOBN JSP TAC,ERRPNT POINT 7,AERM1 PUSHJ PDP,ERNAM MOVEI TAC1,AERM3 PUSHJ PDP,MESPNT ADRER2: EXCH DEVDAT, (PDP) ;GET ADDRESS OF D.D. BLOCK DECTECTING ER LDB TAC, [POINT 3, DEVCHR(DEVDAT), 11] ;GET PI CHANNEL NO. PUSH PDP, TAC ;AND SAVE MOVE TAC,DEVSER(DEVDAT) PUSHJ PDP,DRL(TAC) ;RELEASE DEVICE POP PDP, TAC ;RESTORE PI CHANNEL NO. EXCH DEVDAT,(PDP) JRST HOLDI ;AND GO DISMISS CHANNEL AERM3: ASCIZ / DURING INTERRUPT/ INTERNAL APRILM EXTERNAL USRREL POVF=200000 POVC=400000 NXM=10000 ILM=20000 APRILM: MOVEI TAC,APRCHN CONSO APR,ILM JRST APRNXM CONO APR,ILM(TAC) HRRZ TAC,APRCHL CAMLE TAC, USRREL JRST APRJRS JSP TAC,ERRPTU POINT 7,APM1 APRIL1: PUSHJ PDP,EPTADR JRST APRDMS ;GO DISMISS APR CHANNEL APRJRS: JSP TAC,ERRPTU POINT 7,APM2 PUSHJ PDP,EPTADR JRST APRDMS APM1: ASCIZ /ILL MEM REF/ APM2: ASCIZ /PC EXCEEDS MEM BOUND/ APRNXM: CONSO APR,NXM JRST APRPDL CONO APR,NXM(TAC) JSP TAC,ERRPTU POINT 7,APM3 JRST APRIL1 APM3: ASCIZ /NON EX MEM/ APRPDL: CONSO APR,POVF JSP DAT, ERROR ;NOT APR, MUST BE HARDWARE PROB. CONO APR,POVC(TAC) MOVE TAC,APRCHL SKIPE TAC1,USRPOV TLNN TAC,10000 ;WAS OVF IN USER MODE? JRST PDLOV ;NO, GO PRINT MESSAGE HRRM TAC1,APRCHL ;RESET RETURN JRST APRRET ;DISMISS CLOCK PDLOV: JSP TAC,ERRPTU POINT 7,APM4 PUSHJ PDP,EPTADR MOVE TAC,APRCHL TLNE TAC,10000 JRST APRDMS ;GO DISMISS APR CHANNEL MOVEI TAC1,ERMS1 PUSHJ PDP,MESPC APRDMS: MOVEI TAC, 0 ;SET TO DISMISS APR CHANNEL JRST HOLDI1 APM4: ASCIZ .PDL OV. APMSYS: ASCIZ / AT EXEC LOC / APMUSR: ASCIZ / AT USER LOC / EPTADR: MOVE TAC,APRCHL EPTAD1: PUSH PDP,TAC ;PPRINT "AT EXEC LOC " OR "AT USER LOC" MOVEI TAC1,APMSYS TLNE TAC,10000 MOVEI TAC1,APMUSR PUSHJ PDP,MESPNT POP PDP,TAC ANDI TAC,-1 JRST OCTPNT INTERNAL ERNAM ERNAM: MOVEI TAC1,ERRDEV PUSHJ PDP,MESPNT MOVE TAC1,[POINT 6,@-(PDP)] MOVEI 0,6 ERNAM1: ILDB TAC,TAC1 JUMPE TAC,.+4 ADDI TAC,240 IDPB TAC,DAT SOJG 0,ERNAM1 POPJ PDP, ERRDEV: ASCIZ /DEVICE / INTERNAL DIRERR DIRERR: POP PDP,0 ;FLUSH RETURN ADDRESS JSP TAC,ERRPTU POINT 7,DIRER1 PUSHJ PDP,ERNAM JRST ERSYC1 DIRER1: ASCIZ /BAD DIRECTORY FOR / ; INTERNAL ERRDIS ;ERRDIS: LDB TAC,[POINT 4,DEVCHR(DEVDAT),17] ; ADDI TAC,ERRC2 ; SKIPL TAC1,@TAC ; JRST 4,. ; TLZ TAC1,400000 ; MOVEM TAC1,@TAC ; MOVE PDP,JOBPDP(PROG) ; MOVE TAC,@TAC ; HRLI TAC,PROG ; MOVE TAC,@TAC ; HLL TAC,1(PDP) ; PUSH PDP,TAC ; JRST UXIT ;ERRC2: XWD PROG,JOBTRP ;UNEXPLAINED ERROR ENTRY ;CALL: JSP DAT, ERROR INTERNAL ERROR EXTERNAL JOBPD1 ERROR: MOVEI ITEM,1 ;PRINT ON OPERATORS CONSOLE(JOB 1) JSP TAC,ERRPNT POINT 7,ERR1 HRRZ TAC,-2(PDP) ;GET LOC OF CALL TO ERROR EPOCT: PUSHJ PDP,PCPNT ERSYC1: MOVEI TAC1,ERMS1 ERSYCL: PUSHJ PDP,MESPC JRST HOLD EPCAD0: PUSHJ PDP,MESPNT ;PRINT MESS EPCAD1: PUSHJ PDP,EPCAD ;PRINT LAST USER CALL TO MONITOR JRST HOLD EPCADR: PUSHJ PDP,MESPNT EPCAD: MOVE TAC, JOBPD1(JDAT) ;GET LAST USER UUO CALL SOJA TAC,EPTAD1 ERR1: ASCIZ /ERROR IN MONITOR AT / ERMS1: ASCIZ /; EXEC CALLED FROM / ;ERROR SETUP ROUTINE ;CALL: MOVE ITEM, JOBNUMBER ; MOVE DEVDAT, DEVICE DATA BLOCK IF DEVICE ERROR ; JSP TAC, ERRPNT ; POINT 7, ERROR MESSAGE ; RETURN INTERNAL ERRPNT,ERRPTU ERRPTU: MOVE ITEM,JOB ERRPNT: MOVE PROG,JBTADR(ITEM) MOVE JDAT,JBTADR(ITEM) ;GET ADDRESS OF JOB DATA AREA JUMPE JDAT, ERRPD ;SET UP PDP IN USER AREA IF HE HAS CORE MOVSI PDP, MJOBPD HRRI PDP, JOBPDL(JDAT) AOBJN PDP, .+1 ;LEAVE ROOM FOR UUO RETURN ERRPD: PUSH PDP, DAT ;SAVE CLALL TO ERROR SUB PUSH PDP, DEVDAT PUSH PDP, TAC ;SAVE RETURN PUSHJ PDP, TTYFND MOVEI TAC1,SYSERR PUSHJ PDP,MESPNT MOVE TAC, ITEM PUSHJ PDP,RADX10 PUSHJ PDP, CRLF ;PRINT CRLF MOVE TAC1, @(PDP) PUSHJ PDP, MESPNT JRST CPOPJ1 SYSERR: ASCIZ / ERROR IN JOB / ,ERROR TRAP HANDLING ;ERRTRP: LDB TAC,[POINT 4,DEVCHR(DEVDAT),17] ; ADDI TAC,ERRC2 ; SKIPG TAC1,@TAC ; TLO TAC1,400000 ; MOVEM TAC1,@TAC ; AOS TAC ; MOVE PDP,JOBPDP(PROG) ; AOS TAC ; MOVE TAC1,1(PDP) ; PUSH PDP,TAC ; HLL TAC1,0(PDP) ; HRLI TAC1,PROG ; MOVEM TAC,@TAC1 ; JRST UXIT INTERNAL ILLINP ILLINP: JSP TAC,ERRPTU POINT 7,ILLOT PUSHJ PDP,ERNAM JSP TAC1, EPCAD0 ASCIZ / CANNOT DO INPUT/ ILLOT: ASCIZ /OUTPUT / INTERNAL ILLINS ILLINS: JSP TAC,ERRPTU POINT 7,ERRIL JRST EPCAD1 ERRIL: ASCIZ /ILL INST/ INTERNAL ILLMOD ILLMOD: JSP TAC,ERRPTU POINT 7,ILLMO1 PUSHJ PDP,ERNAM JRST EPCAD1 ILLMO1: ASCIZ /ILL DEVICE DATA MODE FOR / INTERNAL ILLOUT ILLOUT: JSP TAC,ERRPTU POINT 7,ILLIN PUSHJ PDP,ERNAM JSP TAC1,EPCAD0 ILM3: ASCIZ / CANNOT DO OUTPUT/ ILLIN: ASCIZ /INPUT / INTERNAL IOIERR IOIERR: JSP TAC,ERRPTU POINT 7,IOIER1 JRST EPCAD1 IOIER1: ASCIZ /IO TO UNASSIGNED CHANNEL/ ,CALL WITH DEST. POINTER IN DAT ,SOURCE POINTER IN TAC1 ,MOVES UNTIL A ZERO CHAR. IS FOUND INTERNAL MESPNT MESPNT: HRLI TAC1,440700 MES1: ILDB TAC, TAC1 JUMPE TAC,CPOPJ IDPB TAC, DAT JRST MES1 ,ANY RADIX PRINT , TAC1 = RADIX , DAT = BYTE POINTER , TAC = NUMBER INTERNAL OCTPNT, ANYRDX, PCPNT EXTERNAL UUO0,JOBPD1 MESPC: PUSHJ PDP, MESPNT ;PRINT LAST USER UUO CALL HRRZ TAC,JOBPD1(JDAT) PCPNT: SUBI TAC,1 AND TAC,-1 OCTPNT: MOVEI TAC1,10 ANYRDX: PUSH PDP,ITEM HRRZM TAC1, ITEM PUSHJ PDP,OCTP1 POP PDP,ITEM POPJ PDP, OCTP1: IDIV TAC,ITEM HRLM TAC1, (PDP) JUMPE TAC, .+2 PUSHJ PDP, OCTP1 HLRZ TAC, (PDP) ADDI TAC, "0" IDPB TAC, DAT POPJ PDP, INTERNAL RADX10 RADX10: PUSH PDP,TAC1 ;OUTPUT DECIMAL MOVEI TAC1,12 PUSHJ PDP,ANYRDX POP PDP,TAC1 POPJ PDP, REPEAT 0,< PCPNT: SUBI TAC,1 OCTPNT: HRLZ TAC1,TAC MOVSI TAC,-1 LSHC TAC,3 TRNN TAC,7 JUMPN TAC1,.-2 OCTPN1: ADDI TAC,"0" IDPB TAC,DAT JUMPGE TAC,CPOPJ HLLZS TAC LSHC TAC,3 JRST OCTPN1 > INTERNAL UTBKER UTBKER: LDB ITEM,PJOBN ;JOB NUMBER JSP TAC,ERRPNT POINT 7,UTERM MOVE TAC,UBUF SUBI TAC,(PROG) PUSHJ PDP,OCTPNT MOVEI TAC1, [ASCII / /] PUSHJ PDP, MESPNT PUSHJ PDP,ERNAM JRST ADRER2 UTERM: ASCIZ /ILL DT BLOCK NO. , BUFFER AT / INTERNAL UUOERR EXTERNAL UUO0 UUOERR: JSP TAC,ERRPTU POINT 7,UUOER1 MOVE TAC, UUO0 ;UUO PC TLNE TAC, 10000 ;WAS IT FROM USER? JRST EPCAD1 ;YES, JUST PRINT LOC OF CALL PUSHJ PDP,EPTAD1 ;NO, PRINT BOTH EXEC CALL JRST ERSYC1 ;AND USER CALL UUOER1: ASCIZ /ILL PROG. OP. USED/ END,