Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/rsx11s/panic.list
There are no other files named panic.list in the archive.
PANIC MACRO M1110 22-AUG-79 07:08 PAGE 3
1 .TITLE PANIC
2 .IDENT /05.03/
3
4 ;
5 ; COPYRIGHT (C) 1974,1976,1977
6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
7 ;
8 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
9 ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE
10 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR
11 ; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
12 ; MADE AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH
13 ; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE
14 ; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN
15 ; IN DEC.
16 ;
17 ; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
18 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
19 ; EQUIPMENT CORPORATION.
20 ;
21 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF
22 ; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
23 ;
24 ; VERSION 05.02
25 ;
26 ; D. N. CUTLER 4-AUG-73
27 ;
28 ; MODIFIED BY:
29 ;
30 ; J. M. GILBERT 22-APR-74
31 ;
32 ; D. N. CUTLER 11-MAY-75
33 ;
34 ; DC062 -- REFERENCE PROCESSOR STATUS WORD VIA MFPS/MTPS
35 ; INSTRUCTIONS FOR THE LSI-11.
36 ;
37 ; K. E. KINNEAR 16-DEC-76
38 ;
39 ; KK002 -- ADDITION OF SUPPORT FOR PROCESSORS
40 ; WITH NO SWITCH REGISTERS.
41 ;
42 ; P. J. BEZEREDI 18-AUG-77
43 ;
44 ; PB031 -- ADDITION OF SUPPORT FOR NEW CRASH DUMP
45 ; MODULE.
46 ;
47 ;
48 ; PANIC DUMP ROUTINE
49 ;
50
51
52 .IF DF P$$NIC ; PB031
53 ;**-1
54 ;
55 ; MACRO LIBRARY CALLS
56 ;
57
PANIC MACRO M1110 22-AUG-79 07:08 PAGE 3-1
58 .MCALL HWDDF$
59 HWDDF$ ;DEFINE HARDWARE REGISTERS
60
61 ;
62 ; LOCAL DATA
63 ;
64
65 ; PB031
66 .IF NDF C$$RSH ; PB031
67 ; PB031
68 $CRPBF::.BLKW 18. ;PANIC'S REGISTER BUFFER AND STACK ; PB031
69 $CRPST:: ;TOP OF PANIC'S TEMPORARY STACK ; PB031
70 ; PB031
71 .ENDC ; PB031
72 ; PB031
73 ;**-1
74 .ENDC
75
76
77 ;+
78 ; **-$PANIC-PANIC DUMP
79 ;
80 ; THIS ROUTINE IS ENTERED WHEN THE SYSTEM CRASHES OR BY FORCING AN
81 ; ENTRY VIA THE CONSOLE SWITCHES. ON ENTRY THE PROCESSOR STATUS AND
82 ; REGISTERS ARE SAVED IN A TEMPORARY STORAGE AREA. PANIC THEN HALTS
83 ; AWAITING A SET OF DUMP LIMITS TO BE ENTERED IN THE SWITCH REGISTER.
84 ; THE FOLLOWING PROCEDURE IS USED TO OBTAIN A DUMP:
85 ;
86 ; 1-WITH THE PROCESSOR HALTED ENTER THE LOW DUMP LIMIT IN THE
87 ; SWITCH REGISTER.
88 ; 2-DEPRESS CONTINUE. THE PROCESSOR WILL AGAIN HALT.
89 ; 3-WITH THE PROCESSOR HALTED ENTER THE HIGH DUMP LIMIT IN THE
90 ; SWITCH REGISTER.
91 ; 4-DEPRESS CONTINUE. THE DUMP WILL BE OUTPUT ON THE DEVICE
92 ; 'P$$NIC'. ; PB031
93 ; ;**-1
94 ; THE FIRST LINE OF OUTPUT IS THE DUMP OF PS,R0,R1,R2,R3,R4,R5, AND SP.
95 ; SUCCEEDING LINES OF OUTPUT ARE THE ACTUAL DUMP. WHEN THE DUMP IS
96 ; FINISHED, PANIC AGAIN HALTS AWAITING A NEW SET OF DUMP LIMITS TO
97 ; BE INPUT.
98 ;-
99
100 .ENABL LSB
101 000000 $PANIC:: ;PANIC DUMP ROUTINE ; PB031
102 ;**-1
103
104 .IF NDF P$$NIC ; PB031
105 ; PB031
106 000000 000167 000000G JMP $BTSTP ;RE-BOOT SYSTEM IF NO PANIC DUMP ; PB031
107 ; PB031
108 .IFF ; PB031
109 ; PB031
110 HALT ;GET STARTING DUMP LIMIT ; PB031
111 ;**-1
112
113 .IF DF M$$MGE
114
PANIC MACRO M1110 22-AUG-79 07:08 PAGE 3-2
115 MOV PS,$CRPBF ;SAVE PS WORD ; PB031
116 ;**-1
117 .IFF
118
119 MFPS $CRPBF ;SAVE PS WORD ; PB031
120 ;**-1
121 .ENDC
122
123
124 MTPS #PR7 ;LOCK OUT INTERRUPTS
125 MOV R0,$CRPBF+2 ;;;SAVE RR0 ; PB031
126 MOV #$CRPBF+4,R0 ;;;POINT TO SAVE AREA ; PB031
127 MOV R1,(R0)+ ;SAVE REGISTER R1 TO SP ;**-2
128 MOV R2,(R0)+ ;
129 MOV R3,(R0)+ ;
130 MOV R4,(R0)+ ;
131 MOV R5,(R0)+ ;
132 MOV SP,(R0) ;
133 10$: MOV #$CRPST,SP ;SET NEW STACK POINTER ; PB031
134 ;**-7
135
136 .IF NDF S$$WRG ; KK002
137 ;**-1
138 MOV @#0,-(SP) ;
139
140 .IFF
141
142 MOV SWR,-(SP) ;
143
144 .IFTF
145
146 HALT ;GET ENDING DUMP LIMIT
147 MOV #$CRPBF,R0 ;ALWAYS DUMP REGISTERS FIRST ; PB031
148 MOV #$CRPBF+16,R1 ; ; PB031
149 CALL $PDMP ;DUMP REGISTERS ;**-2
150
151 .IFT
152
153 MOV @#0,R1 ;GET LAST WORD ADDRESS
154
155 .IFF
156
157 MOV SWR,R1 ;GET LAST WORD ADDRESS
158
159 .ENDC
160
161
162 MOV (SP)+,R0 ;AND FIRST WORD ADDRESS
163 BIC #1,R0 ;MAKE SURE START IS EVEN
164 CALL 20$ ;DUMP MEMORY
165 BR 10$ ;GO AGAIN
166
167 ;
168 ; DUMP SELECTED BLOCK OF MEMORY
169 ;
170
171 $PDMP:: MOV #P$$NIC,R5 ;SET OUTPUT DEVICE CSR ; PB031
PANIC MACRO M1110 22-AUG-79 07:08 PAGE 3-3
172 MOV #14,R2 ;OUTPUT A FORM FEED ;**-1
173 CALL $OUT ;
174 20$: MOV R0,-(SP) ;SAVE FOR RELATIVE ADDRESS
175 30$: MOV R0,-(SP) ;SAVE START OF LINE ADDRESS
176 MOV R0,R2 ;SAVE CURRENT LINE
177 40$: MOV #8.,R4 ;COUNT FOR 1 LINE
178 50$: CMP (R0)+,@(SP) ;ARE WORDS EQUAL?
179 BNE 60$ ;IF NOT, PRINT LINE
180 DEC R4 ;COUNT THROUGH LINE
181 BGT 50$ ;IF GT, NOT THROUGH YET
182 MOV R0,R2 ;UPDATE LINE STARTING ADDRESS
183 CMP R0,R1 ;AT END OF DUMP?
184 BLOS 40$ ;IF NOT, CHECK NEXT LINE
185 60$: CMP R2,(SP) ;ANY LINES SUPPRESSED?
186 BEQ 70$ ;NO, IF STARTING ADDRESS SAME
187 MOV (SP),R3 ;EDIT OUT OLD STARTING ADDRESS
188 MOV @(SP),R0 ;GET MASTER WORD
189 MOV R2,(SP) ;NOW HAVE NEW STARTING ADDRESS
190 CALL $EDIT ;WORD EDIT
191 MOV #'-,R2 ;SEPARATE ADDRESSES WITH MINUS
192 CALL $OUT ;OUTPUT MINUS
193 CALL $OUTB ;AND NOW A BLANK
194 MOV (SP),R3 ;NOW OUTPUT LAST SUPPRESSED WORD ADDRESS
195 TST -(R3) ;2 LESS THAN NEW START OF LINE
196 CALL $EDIT ;OUTPUT LAST WORD OF IDENTICAL BLOCK
197 CALL $OUTB ;ISSUE ANOTHER BLANK
198 MOV R0,R3 ;NOW GET REPEATED WORD
199 CALL $EDIT ;OUTPUT REPEATED WORD
200 CALL $CRLF ;ISSUE CARRIAGE RETURN/LINE FEED
201 CALL $OUT ;OUTPUT ANOTHER LINE FEED
202 MOV (SP)+,R0 ;PUT START OF LINE IN R0
203 CMP R0,R1 ;AT END OF DUMP?
204 BHI 110$ ;IF HI, AT END
205 MOV R0,-(SP) ;GET BACK IN SYNC WITH NEXT ROUTINE
206 70$: MOV (SP),R0 ;RECAPTURE NEW START OF LINE
207 CALL WORD ;EDIT WORDS
208 MOV (SP),R0 ;RETRIEVE STARTING ADDRESS
209 CALL BYTE ;EDIT BYTES
210 MOV (SP)+,R0 ;RETRIEVE STARTING ADDRESS
211 MOV #5,R4 ;SET LOOP COUNT
212 80$: CALL $OUTB ;OUTPUT A BLANK
213 DEC R4 ;ANY MORE?
214 BGT 80$ ;IF GT YES
215 MOV #8.,R4 ;SET REPEAT COUNT
216 90$: MOV (R0)+,R3 ;GET NEXT WORD
217 CALL 120$ ;OUTPUT LOW BYTE
218 SWAB R3 ;SWAP BYTES
219 CALL 120$ ;OUTPUT HIGH BYTE
220 DEC R4 ;ANY MORE THIS LINE?
221 BGT 90$ ;IF GT YES
222 100$: CALL $CRLF ;OUTPUT A CR-LF
223 CALL $OUT ;OUTPUT ANOTHER LF
224 CMP R0,R1 ;END OF EDIT YET?
225 BLOS 30$ ;IF NOT, GO AGAIN
226 110$: TST (SP)+ ;REMOVE START FOR RELATIVE ADDRESS
227 CALL $OUT ;OUTPUT 2 MORE LINE FEEDS
228 BR $OUT ;AND DON'T RETURN HERE
PANIC MACRO M1110 22-AUG-79 07:08 PAGE 3-4
229 120$: CALL $OUTB ;OUTPUT TWO BLANKS
230 CALL $OUTB ;
231 BICB #200,R3 ;CLEAR PARITY BIT
232 CMPB R2,R3 ;CONTROL CHARACTER?
233 BLOS 130$ ;IF LOS NO
234 BISB #100,R3 ;CONVERT TO CHARACTER
235 MOVB #136,R2 ;SET TO OUTPUT CARET
236 130$: CALL $OUT ;OUTPUT BLANK OR CARET
237 MOVB R3,R2 ;SET BYTE TO OUTPUT
238 INCB R3 ;CHARACTER A RUBOUT?
239 BMI $OUTB ;IF MI YES OUTPUT A BLANK
240 BR $OUT ;OUTPUT CHARACTER
241 .DSABL LSB
242
243 ;
244 ; WORD EDIT
245 ;
246
247 WORD: MOV R0,R3 ;EDIT LINE ADDRESS
248 MOV #9.,R4 ;SET LOOP COUNT
249 BR 20$ ;
250 10$: MOV (R0)+,R3 ;GET NEXT WORD
251 20$: CALL $EDIT ;EDIT WORD
252 CALL $OUTB ;OUTPUT ANOTHER BLANK
253 DEC R4 ;ANY MORE THIS LINE?
254 BGT 10$ ;IF GT YES
255 BR $CRLF ;
256
257 ;
258 ; BYTE EDIT
259 ;
260
261 BYTE: MOV R0,R3 ;COPY ADDRESS OF LINE
262 SUB 4(SP),R3 ;CALCULATE BLOCK OFFSET
263 CALL $EDIT ;EDIT OFFSET FROM START OF BLOCK
264 MOV #8.,R4 ;SET LOOP COUNT
265 10$: MOV (R0)+,R3 ;GET NEXT WORD
266 CALL EBYT ;EDIT HIGH BYTE
267 CALL EBYT ;EDIT LOW BYTE
268 DEC R4 ;ANY MORE THIS LINE?
269 BGT 10$ ;IF GT YES
270
271 .ENDC
272
273
274 .IF DF C$$TTY!P$$NIC ; PB031
275 ;**-1
276
277 ;
278 ; SUBROUTINE TO OUTPUT CR-LF
279 ;
280
281 $CRLF:: MOVB #15,R2 ;OUTPUT CR
282 CALL $OUT ;
283 MOVB #12,R2 ;OUTPUT A LF
284 BR $OUT ;
285
PANIC MACRO M1110 22-AUG-79 07:08 PAGE 3-5
286 ;
287 ; SUBROUTINE TO EDIT ONE BYTE
288 ;
289
290 EBYT: CLR R2 ;CLEAR CHARACTER ACCUMULATOR
291 MOV #3,-(SP) ;SET CHARACTER COUNT
292 BR EDT2 ;COLLECT HIGH ORDER 2 BITS
293
294 ;
295 ; SUBROUTINE TO EDIT ONE WORD
296 ;
297
298 $EDIT:: CLR R2 ;CLEAR CHARACTER ACCUMULATOR
299 MOV #6,-(SP) ;SET CHARACTER COUNT
300 BR EDT3 ;COLLECT HIGH ORDER BIT
301 EDT1: CLR R2 ;COLLECT NEXT 3 BITS
302 ASL R3 ;
303 ROL R2 ;
304 EDT2: ASL R3 ;
305 ROL R2 ;
306 EDT3: ASL R3 ;
307 ROL R2 ;
308 ADD #'0,R2 ;ADD DIGIT BIAS
309 CALL $OUT ;OUTPUT CHARACTER
310 DEC (SP) ;ANY MORE?
311 BGT EDT1 ;IF GT YES
312 TST (SP)+ ;CLEAR STACK
313
314 ;
315 ; OUTPUT SUBROUTINES
316 ;
317
318 $OUTB:: MOVB #40,R2 ;SET TO OUTPUT BLANK
319 ; PB031
320 .ENDC ; PB031
321 ; PB031
322 ; PB031
323 .IF DF C$$RSH!P$$NIC ; PB031
324 ; PB031
325 $OUT:: TSTB (R5) ;DEVICE READY?
326 BPL $OUT ;IF PL NO
327 MOVB R2,2(R5) ;OUTPUT CHARACTER
328 CMPB #15,R2 ;CARRIAGE RETURN?
329 BNE 20$ ;IF NE NO
330 CMP #177514,R5 ;OUTPUT DEVICE LINE PRINTER?
331 BEQ 20$ ;IF EQ YES
332 CLR R2 ;SET ZERO FILL CHARACTER
333 MOV #5,-(SP) ;SET FILL COUNT
334 10$: CALL $OUT ;OUTPUT A FILL CHARACTER
335 DEC (SP) ;ANY MORE TO FILL?
336 BGT 10$ ;IF GT YES
337 TST (SP)+ ;CLEAN STACK
338 20$: RETURN ;
339
340 .ENDC
341
342
PANIC MACRO M1110 22-AUG-79 07:08 PAGE 3-6
343 000001 .END
PANIC MACRO M1110 22-AUG-79 07:08 PAGE 3-7
SYMBOL TABLE
A$$CHK= 000000 I$$RDN= 000000 L$$DRV= 000000 P$$TPT= 000000 S$$YSZ= 001740
A$$CPS= 000000 K$$CNT= 177546 M$$CRB= 000124 R$$DER= 000000 V$$CTR= 001200
A$$TRP= 000000 K$$CSR= 177546 M$$MGE= 000000 R$$EXV= 000000 V$$RSN= 000031
C$$ORE= 002000 K$$IEN= 000115 M$$NET= 000000 R$$SND= 000000 X$$DBT= 000000
G$$TPP= 000000 K$$LDC= 000001 M$$NT2= 000000 R$$11M= 000000 $BTSTP= ****** GX
G$$TTK= 000000 K$$TPS= 000074 N$$LDV= 000001 R$$11S= 000000 $PANIC 000000RG
H$$RTZ= 000074 L$$ASG= 000000 P$$RTY= 000000
. ABS. 000000 000
000004 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 1150 WORDS ( 5 PAGES)
DYNAMIC MEMORY: 2980 WORDS ( 11 PAGES)
ELAPSED TIME: 00:00:13
[11,24]PANIC,SY0:[11,34]PANIC/-SP=[1,1]EXEMC/ML,[11,10]RSXMC/PA:1,PANIC