1 TITLE ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS
\r
3 EXTERNAL APRCHL,APRRET,HOLD,HOLDI,APRCHN
\r
4 EXTERNAL JOB,JOBADR,JOBREL,TTYFND,TTYCTR,TTYSTR
\r
5 EXTERNAL JBTADR, UXIT,JOBPDP,JOBTRP,USRPDP,UBUF,PJOBN
\r
6 EXTERNAL CPOPJ,HOLDI1,WAIT1,USRPOV,JOBPFI
\r
7 EXTERNAL CRLF,MJOBPD,JOBPDL,CPOPJ1
\r
9 ;CALL: PUSHJ PDP,ADRCK
\r
15 ADRCK: PUSH PDP, TAC
\r
20 HLRZ TAC1,JBTADR(TAC1)
\r
21 CAILE TAC,JOBPFI ;IN IO PROTECTED PART OF DATA AREA?
\r
22 CAMLE TAC,TAC1 ;NO,IS IT GREATER THAN PROTECTION?
\r
23 PUSHJ PDP,ADRERR ;YES
\r
30 ADRERR: HRRZ TAC1,PDP
\r
31 CAMG TAC1,JOBADR ;IS THIS ERROR AT UUO OR INTERRUPT SERV
\r
32 JRST ADRERI ;INTERRUPT SERVICE LEVEL
\r
38 AERM1: ASCIZ /ADDRESS CHECK FOR /
\r
40 ADRERI: LDB ITEM, PJOBN
\r
46 ADRER2: EXCH DEVDAT, (PDP) ;GET ADDRESS OF D.D. BLOCK DECTECTING ER
\r
47 LDB TAC, [POINT 3, DEVCHR(DEVDAT), 11] ;GET PI CHANNEL NO.
\r
48 PUSH PDP, TAC ;AND SAVE
\r
49 MOVE TAC,DEVSER(DEVDAT)
\r
50 PUSHJ PDP,DRL(TAC) ;RELEASE DEVICE
\r
51 POP PDP, TAC ;RESTORE PI CHANNEL NO.
\r
53 JRST HOLDI ;AND GO DISMISS CHANNEL
\r
55 AERM3: ASCIZ / DURING INTERRUPT/
\r
65 APRILM: MOVEI TAC,APRCHN
\r
74 APRIL1: PUSHJ PDP,EPTADR
\r
75 JRST APRDMS ;GO DISMISS APR CHANNEL
\r
77 APRJRS: JSP TAC,ERRPTU
\r
82 APM1: ASCIZ /ILL MEM REF/
\r
84 APM2: ASCIZ /PC EXCEEDS MEM BOUND/
\r
89 APRNXM: CONSO APR,NXM
\r
96 APM3: ASCIZ /NON EX MEM/
\r
99 APRPDL: CONSO APR,POVF
\r
100 JSP DAT, ERROR ;NOT APR, MUST BE HARDWARE PROB.
\r
104 TLNN TAC,10000 ;WAS OVF IN USER MODE?
\r
105 JRST PDLOV ;NO, GO PRINT MESSAGE
\r
106 HRRM TAC1,APRCHL ;RESET RETURN
\r
107 JRST APRRET ;DISMISS CLOCK
\r
108 PDLOV: JSP TAC,ERRPTU
\r
113 JRST APRDMS ;GO DISMISS APR CHANNEL
\r
116 APRDMS: MOVEI TAC, 0 ;SET TO DISMISS APR CHANNEL
\r
119 APM4: ASCIZ .PDL OV.
\r
121 APMSYS: ASCIZ / AT EXEC LOC /
\r
124 APMUSR: ASCIZ / AT USER LOC /
\r
127 EPTADR: MOVE TAC,APRCHL
\r
128 EPTAD1: PUSH PDP,TAC ;PPRINT "AT EXEC LOC " OR "AT USER LOC"
\r
140 ERNAM: MOVEI TAC1,ERRDEV
\r
142 MOVE TAC1,[POINT 6,@-(PDP)]
\r
144 ERNAM1: ILDB TAC,TAC1
\r
151 ERRDEV: ASCIZ /DEVICE /
\r
155 DIRERR: POP PDP,0 ;FLUSH RETURN ADDRESS
\r
161 DIRER1: ASCIZ /BAD DIRECTORY FOR /
\r
165 ;ERRDIS: LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]
\r
171 ; MOVE PDP,JOBPDP(PROG)
\r
179 ;ERRC2: XWD PROG,JOBTRP
\r
181 ;UNEXPLAINED ERROR ENTRY
\r
182 ;CALL: JSP DAT, ERROR
\r
187 ERROR: MOVEI ITEM,1 ;PRINT ON OPERATORS CONSOLE(JOB 1)
\r
190 HRRZ TAC,-2(PDP) ;GET LOC OF CALL TO ERROR
\r
191 EPOCT: PUSHJ PDP,PCPNT
\r
192 ERSYC1: MOVEI TAC1,ERMS1
\r
194 ERSYCL: PUSHJ PDP,MESPC
\r
197 EPCAD0: PUSHJ PDP,MESPNT ;PRINT MESS
\r
198 EPCAD1: PUSHJ PDP,EPCAD ;PRINT LAST USER CALL TO MONITOR
\r
201 EPCADR: PUSHJ PDP,MESPNT
\r
202 EPCAD: MOVE TAC, JOBPD1(JDAT) ;GET LAST USER UUO CALL
\r
205 ERR1: ASCIZ /ERROR IN MONITOR AT /
\r
206 ERMS1: ASCIZ /; EXEC CALLED FROM /
\r
208 ;ERROR SETUP ROUTINE
\r
209 ;CALL: MOVE ITEM, JOBNUMBER
\r
210 ; MOVE DEVDAT, DEVICE DATA BLOCK IF DEVICE ERROR
\r
212 ; POINT 7, ERROR MESSAGE
\r
216 INTERNAL ERRPNT,ERRPTU
\r
218 ERRPTU: MOVE ITEM,JOB
\r
219 ERRPNT: MOVE PROG,JBTADR(ITEM)
\r
220 MOVE JDAT,JBTADR(ITEM) ;GET ADDRESS OF JOB DATA AREA
\r
221 JUMPE JDAT, ERRPD ;SET UP PDP IN USER AREA IF HE HAS CORE
\r
223 HRRI PDP, JOBPDL(JDAT)
\r
225 AOBJN PDP, .+1 ;LEAVE ROOM FOR UUO RETURN
\r
226 ERRPD: PUSH PDP, DAT ;SAVE CLALL TO ERROR SUB
\r
228 PUSH PDP, TAC ;SAVE RETURN
\r
234 PUSHJ PDP, CRLF ;PRINT CRLF
\r
242 ,ERROR TRAP HANDLING
\r
244 ;ERRTRP: LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]
\r
250 ; MOVE PDP,JOBPDP(PROG)
\r
261 ILLINP: JSP TAC,ERRPTU
\r
265 ASCIZ / CANNOT DO INPUT/
\r
267 ILLOT: ASCIZ /OUTPUT /
\r
272 ILLINS: JSP TAC,ERRPTU
\r
276 ERRIL: ASCIZ /ILL INST/
\r
280 ILLMOD: JSP TAC,ERRPTU
\r
285 ILLMO1: ASCIZ /ILL DEVICE DATA MODE FOR /
\r
289 ILLOUT: JSP TAC,ERRPTU
\r
294 ILM3: ASCIZ / CANNOT DO OUTPUT/
\r
296 ILLIN: ASCIZ /INPUT /
\r
299 IOIERR: JSP TAC,ERRPTU
\r
303 IOIER1: ASCIZ /IO TO UNASSIGNED CHANNEL/
\r
305 ,CALL WITH DEST. POINTER IN DAT
\r
306 ,SOURCE POINTER IN TAC1
\r
307 ,MOVES UNTIL A ZERO CHAR. IS FOUND
\r
310 MESPNT: HRLI TAC1,440700
\r
311 MES1: ILDB TAC, TAC1
\r
318 , DAT = BYTE POINTER
\r
321 INTERNAL OCTPNT, ANYRDX, PCPNT
\r
322 EXTERNAL UUO0,JOBPD1
\r
324 MESPC: PUSHJ PDP, MESPNT ;PRINT LAST USER UUO CALL
\r
325 HRRZ TAC,JOBPD1(JDAT)
\r
328 OCTPNT: MOVEI TAC1,10
\r
329 ANYRDX: PUSH PDP,ITEM
\r
335 OCTP1: IDIV TAC,ITEM
\r
346 RADX10: PUSH PDP,TAC1 ;OUTPUT DECIMAL
\r
354 OCTPNT: HRLZ TAC1,TAC
\r
359 OCTPN1: ADDI TAC,"0"
\r
368 UTBKER: LDB ITEM,PJOBN ;JOB NUMBER
\r
374 MOVEI TAC1, [ASCII / /]
\r
379 UTERM: ASCIZ /ILL DT BLOCK NO. , BUFFER AT /
\r
384 UUOERR: JSP TAC,ERRPTU
\r
386 MOVE TAC, UUO0 ;UUO PC
\r
387 TLNE TAC, 10000 ;WAS IT FROM USER?
\r
388 JRST EPCAD1 ;YES, JUST PRINT LOC OF CALL
\r
389 PUSHJ PDP,EPTAD1 ;NO, PRINT BOTH EXEC CALL
\r
390 JRST ERSYC1 ;AND USER CALL
\r
392 UUOER1: ASCIZ /ILL PROG. OP. USED/
\r