Cleanup of typos.
[retro-software/dec/tops10/v1.19.git] / src / errcon.mac
1 TITLE ERRCON - ERROR HANDLING ROUTINE FOR MONITOR DECTECTED ERRORS\r
2 SUBTTL  8-9-65\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
8 \f\r
9 ;CALL:    PUSHJ PDP,ADRCK\r
10 ;                   HRRZ TAC,LOC\r
11 ;                   OK RETURN\r
12 \r
13           INTERNAL ADRCK\r
14 \r
15 ADRCK:    PUSH PDP, TAC\r
16           XCT @-1(PDP)\r
17           AOS -1(PDP)\r
18           PUSH PDP,TAC1\r
19           LDB TAC1,PJOBN\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
24           POP PDP,TAC1          ;NO\r
25           POP PDP, TAC\r
26           POPJ PDP,\r
27 \f\r
28           INTERNAL ADRERR\r
29 \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
33           JSP TAC,ERRPTU\r
34           POINT 7,AERM1\r
35           PUSHJ PDP,ERNAM\r
36           JRST ERSYC1\r
37 \r
38 AERM1:    ASCIZ /ADDRESS CHECK FOR /\r
39 \r
40 ADRERI:   LDB ITEM, PJOBN\r
41           JSP TAC,ERRPNT\r
42           POINT 7,AERM1\r
43           PUSHJ PDP,ERNAM\r
44           MOVEI TAC1,AERM3\r
45           PUSHJ PDP,MESPNT\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
52           EXCH DEVDAT,(PDP)\r
53           JRST HOLDI                    ;AND GO DISMISS CHANNEL\r
54 \r
55 AERM3:    ASCIZ / DURING INTERRUPT/\r
56 \f\r
57           INTERNAL APRILM\r
58           EXTERNAL USRREL\r
59 \r
60           POVF=200000\r
61           POVC=400000\r
62           NXM=10000\r
63           ILM=20000\r
64 \r
65 APRILM:   MOVEI TAC,APRCHN\r
66           CONSO APR,ILM\r
67           JRST APRNXM\r
68           CONO APR,ILM(TAC)\r
69           HRRZ TAC,APRCHL\r
70           CAMLE TAC, USRREL\r
71           JRST APRJRS\r
72           JSP TAC,ERRPTU\r
73           POINT 7,APM1\r
74 APRIL1:   PUSHJ PDP,EPTADR\r
75           JRST APRDMS           ;GO DISMISS APR CHANNEL\r
76 \r
77 APRJRS:   JSP TAC,ERRPTU\r
78           POINT 7,APM2\r
79           PUSHJ PDP,EPTADR\r
80           JRST APRDMS\r
81 \r
82 APM1:     ASCIZ /ILL MEM REF/\r
83 \r
84 APM2:     ASCIZ /PC EXCEEDS MEM BOUND/\r
85 \r
86 \r
87 \r
88 \r
89 APRNXM:   CONSO APR,NXM\r
90           JRST APRPDL\r
91           CONO APR,NXM(TAC)\r
92           JSP TAC,ERRPTU\r
93           POINT 7,APM3\r
94           JRST APRIL1\r
95 \r
96 APM3:     ASCIZ /NON EX MEM/\r
97 \r
98 \f\r
99 APRPDL:   CONSO APR,POVF\r
100           JSP DAT, ERROR        ;NOT APR, MUST BE HARDWARE PROB.\r
101           CONO APR,POVC(TAC)\r
102           MOVE TAC,APRCHL\r
103           SKIPE TAC1,USRPOV\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
109           POINT 7,APM4\r
110           PUSHJ PDP,EPTADR\r
111           MOVE TAC,APRCHL\r
112           TLNE TAC,10000\r
113           JRST APRDMS           ;GO DISMISS APR CHANNEL\r
114           MOVEI TAC1,ERMS1\r
115           PUSHJ PDP,MESPC\r
116 APRDMS:   MOVEI TAC, 0          ;SET TO DISMISS APR CHANNEL\r
117           JRST HOLDI1\r
118 \r
119 APM4:     ASCIZ .PDL OV.\r
120 \r
121 APMSYS:   ASCIZ / AT EXEC LOC /\r
122 \r
123 \r
124 APMUSR:   ASCIZ / AT USER LOC /\r
125 \r
126 \r
127 EPTADR:   MOVE TAC,APRCHL\r
128 EPTAD1:   PUSH PDP,TAC          ;PPRINT "AT EXEC LOC " OR "AT USER LOC"\r
129           MOVEI TAC1,APMSYS\r
130           TLNE TAC,10000\r
131           MOVEI TAC1,APMUSR\r
132           PUSHJ PDP,MESPNT\r
133           POP PDP,TAC\r
134           ANDI TAC,-1\r
135           JRST OCTPNT\r
136 \f\r
137           INTERNAL ERNAM\r
138 \r
139 \r
140 ERNAM:    MOVEI TAC1,ERRDEV\r
141           PUSHJ PDP,MESPNT\r
142           MOVE TAC1,[POINT 6,@-(PDP)]\r
143           MOVEI 0,6\r
144 ERNAM1:   ILDB TAC,TAC1\r
145           JUMPE TAC,.+4\r
146           ADDI TAC,240\r
147           IDPB TAC,DAT\r
148           SOJG 0,ERNAM1\r
149           POPJ PDP,\r
150 \r
151 ERRDEV:   ASCIZ /DEVICE /\r
152 \r
153 INTERNAL DIRERR\r
154 \r
155 DIRERR:   POP PDP,0 ;FLUSH RETURN ADDRESS\r
156           JSP TAC,ERRPTU\r
157           POINT 7,DIRER1\r
158           PUSHJ PDP,ERNAM\r
159           JRST ERSYC1\r
160 \r
161 DIRER1:   ASCIZ /BAD DIRECTORY FOR /\r
162 \f\r
163 ;         INTERNAL ERRDIS\r
164 \r
165 ;ERRDIS:  LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]\r
166 ;         ADDI TAC,ERRC2\r
167 ;         SKIPL TAC1,@TAC\r
168 ;         JRST 4,.\r
169 ;         TLZ TAC1,400000\r
170 ;         MOVEM TAC1,@TAC\r
171 ;         MOVE PDP,JOBPDP(PROG)\r
172 ;         MOVE TAC,@TAC\r
173 ;         HRLI TAC,PROG\r
174 ;         MOVE TAC,@TAC\r
175 ;         HLL TAC,1(PDP)\r
176 ;         PUSH PDP,TAC\r
177 ;         JRST UXIT\r
178 \r
179 ;ERRC2:   XWD PROG,JOBTRP\r
180 \f\r
181 ;UNEXPLAINED ERROR ENTRY\r
182 ;CALL:    JSP DAT, ERROR\r
183 \r
184 INTERNAL ERROR\r
185 EXTERNAL JOBPD1\r
186 \r
187 ERROR:    MOVEI ITEM,1          ;PRINT ON OPERATORS CONSOLE(JOB 1)\r
188           JSP TAC,ERRPNT\r
189           POINT 7,ERR1\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
193 \r
194 ERSYCL:   PUSHJ PDP,MESPC\r
195           JRST HOLD\r
196 \r
197 EPCAD0:   PUSHJ PDP,MESPNT      ;PRINT MESS\r
198 EPCAD1:   PUSHJ PDP,EPCAD       ;PRINT LAST USER CALL TO MONITOR\r
199           JRST HOLD\r
200 \r
201 EPCADR:   PUSHJ PDP,MESPNT\r
202 EPCAD:    MOVE TAC, JOBPD1(JDAT)        ;GET LAST USER UUO CALL\r
203           SOJA TAC,EPTAD1\r
204 \r
205 ERR1:     ASCIZ /ERROR IN MONITOR AT /\r
206 ERMS1:    ASCIZ /; EXEC CALLED FROM /\r
207 \f\r
208 ;ERROR SETUP ROUTINE\r
209 ;CALL:    MOVE ITEM, JOBNUMBER\r
210 ;         MOVE DEVDAT, DEVICE DATA BLOCK IF DEVICE ERROR\r
211 ;         JSP TAC, ERRPNT\r
212 ;         POINT 7, ERROR MESSAGE\r
213 ;         RETURN\r
214 \r
215 \r
216           INTERNAL ERRPNT,ERRPTU\r
217 \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
222           MOVSI PDP, MJOBPD\r
223           HRRI PDP, JOBPDL(JDAT)\r
224 \r
225           AOBJN PDP, .+1                ;LEAVE ROOM FOR UUO RETURN\r
226 ERRPD:    PUSH PDP, DAT         ;SAVE CLALL TO ERROR SUB\r
227           PUSH PDP, DEVDAT\r
228           PUSH PDP, TAC                 ;SAVE RETURN\r
229           PUSHJ PDP, TTYFND\r
230           MOVEI TAC1,SYSERR\r
231           PUSHJ PDP,MESPNT\r
232           MOVE TAC, ITEM\r
233           PUSHJ PDP,RADX10\r
234           PUSHJ PDP, CRLF               ;PRINT CRLF\r
235           MOVE TAC1, @(PDP)\r
236           PUSHJ PDP, MESPNT\r
237           JRST CPOPJ1\r
238 \r
239 SYSERR:   ASCIZ /\r
240 ERROR IN JOB /\r
241 \f\r
242 ,ERROR TRAP HANDLING\r
243 \r
244 ;ERRTRP:  LDB TAC,[POINT 4,DEVCHR(DEVDAT),17]\r
245 ;         ADDI TAC,ERRC2\r
246 ;         SKIPG TAC1,@TAC\r
247 ;         TLO TAC1,400000\r
248 ;         MOVEM TAC1,@TAC\r
249 ;         AOS       TAC\r
250 ;         MOVE PDP,JOBPDP(PROG)\r
251 ;         AOS       TAC\r
252 ;         MOVE TAC1,1(PDP)\r
253 ;         PUSH PDP,TAC\r
254 ;         HLL TAC1,0(PDP)\r
255 ;         HRLI TAC1,PROG\r
256 ;         MOVEM TAC,@TAC1\r
257 ;         JRST UXIT\r
258 \f\r
259           INTERNAL ILLINP\r
260 \r
261 ILLINP:   JSP TAC,ERRPTU\r
262           POINT 7,ILLOT\r
263           PUSHJ PDP,ERNAM\r
264           JSP TAC1, EPCAD0\r
265 ASCIZ / CANNOT DO INPUT/\r
266 \r
267 ILLOT:    ASCIZ /OUTPUT /\r
268 \r
269 \r
270           INTERNAL ILLINS\r
271 \r
272 ILLINS:   JSP TAC,ERRPTU\r
273           POINT 7,ERRIL\r
274           JRST EPCAD1\r
275 \r
276 ERRIL:    ASCIZ /ILL INST/\r
277 \f\r
278         INTERNAL ILLMOD\r
279 \r
280 ILLMOD: JSP TAC,ERRPTU\r
281         POINT 7,ILLMO1\r
282         PUSHJ PDP,ERNAM\r
283         JRST EPCAD1\r
284 \r
285 ILLMO1: ASCIZ /ILL DEVICE DATA MODE FOR /\r
286 \r
287         INTERNAL ILLOUT\r
288 \r
289 ILLOUT: JSP TAC,ERRPTU\r
290         POINT 7,ILLIN\r
291         PUSHJ PDP,ERNAM\r
292         JSP TAC1,EPCAD0\r
293 \r
294 ILM3:           ASCIZ / CANNOT DO OUTPUT/\r
295 \r
296 ILLIN:  ASCIZ /INPUT /\r
297 INTERNAL IOIERR\r
298 \r
299 IOIERR: JSP TAC,ERRPTU\r
300         POINT 7,IOIER1\r
301         JRST EPCAD1\r
302 \r
303 IOIER1: ASCIZ /IO TO UNASSIGNED CHANNEL/\r
304 \r
305 ,CALL WITH DEST. POINTER IN DAT\r
306 ,SOURCE POINTER IN TAC1\r
307 ,MOVES UNTIL A ZERO CHAR. IS FOUND\r
308 \r
309         INTERNAL MESPNT\r
310 MESPNT: HRLI TAC1,440700\r
311 MES1:   ILDB TAC, TAC1\r
312         JUMPE TAC,CPOPJ\r
313         IDPB TAC, DAT\r
314         JRST MES1\r
315 \r
316 ,ANY RADIX PRINT\r
317 ,  TAC1 = RADIX\r
318 ,  DAT = BYTE POINTER\r
319 ,  TAC = NUMBER\r
320 \r
321         INTERNAL OCTPNT, ANYRDX, PCPNT\r
322         EXTERNAL UUO0,JOBPD1\r
323 \r
324 MESPC:  PUSHJ PDP, MESPNT       ;PRINT LAST USER UUO CALL\r
325         HRRZ TAC,JOBPD1(JDAT)\r
326 PCPNT:  SUBI TAC,1\r
327         AND TAC,-1\r
328 OCTPNT: MOVEI TAC1,10\r
329 ANYRDX: PUSH PDP,ITEM\r
330         HRRZM TAC1, ITEM\r
331         PUSHJ PDP,OCTP1\r
332         POP PDP,ITEM\r
333         POPJ PDP,\r
334 \r
335 OCTP1:  IDIV TAC,ITEM\r
336         HRLM TAC1, (PDP)\r
337         JUMPE TAC, .+2\r
338         PUSHJ PDP, OCTP1\r
339         HLRZ TAC, (PDP)\r
340         ADDI TAC, "0"\r
341         IDPB TAC, DAT\r
342         POPJ PDP,\r
343 \r
344 INTERNAL RADX10\r
345 \r
346 RADX10: PUSH PDP,TAC1   ;OUTPUT DECIMAL\r
347         MOVEI TAC1,12\r
348         PUSHJ PDP,ANYRDX\r
349         POP PDP,TAC1\r
350         POPJ PDP,\r
351 \r
352 REPEAT 0,<\r
353 PCPNT:  SUBI TAC,1\r
354 OCTPNT: HRLZ TAC1,TAC\r
355   MOVSI TAC,-1\r
356  LSHC TAC,3\r
357   TRNN TAC,7\r
358    JUMPN TAC1,.-2\r
359 OCTPN1: ADDI TAC,"0"\r
360   IDPB TAC,DAT\r
361   JUMPGE TAC,CPOPJ\r
362   HLLZS TAC\r
363   LSHC TAC,3\r
364   JRST OCTPN1\r
365 >\r
366 \r
367         INTERNAL UTBKER\r
368 UTBKER: LDB ITEM,PJOBN  ;JOB NUMBER\r
369         JSP TAC,ERRPNT\r
370         POINT 7,UTERM\r
371         MOVE TAC,UBUF\r
372         SUBI TAC,(PROG)\r
373         PUSHJ PDP,OCTPNT\r
374         MOVEI TAC1, [ASCII / /]\r
375         PUSHJ PDP, MESPNT\r
376         PUSHJ PDP,ERNAM\r
377         JRST ADRER2\r
378 \r
379 UTERM:  ASCIZ /ILL DT BLOCK NO. , BUFFER AT /\r
380 \r
381         INTERNAL UUOERR\r
382         EXTERNAL UUO0\r
383 \r
384 UUOERR: JSP TAC,ERRPTU\r
385         POINT 7,UUOER1\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
391 \r
392 UUOER1: ASCIZ /ILL PROG. OP. USED/\r
393         END,\r