Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/rsx11s/sysxt.list
There are no other files named sysxt.list in the archive.
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3
1 .TITLE SYSXT
2 .IDENT /08/
3
4 ;
5 ; COPYRIGHT (C) 1974, 1978
6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
7 ;
8 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
9 ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
10 ;
11 ; VERSION 08
12 ;
13 ; D. N. CUTLER 10-AUG-73
14 ;
15 ; PREVIOUSLY MODIFIED BY:
16 ;
17 ; D. N. CUTLER
18 ; C. A. D'ELIA
19 ; T. J. MILLER
20 ;
21 ; MODIFIED BY:
22 ;
23 ; T. J. MILLER 11-MAR-77
24 ;
25 ; TM075 -- CLEAR I.PRM+16 ON COMPLETION OF TERMINAL I/O.
26 ;
27 ; P. WANNHEDEN 8-JUN-77
28 ;
29 ; PW001 -- ADDITION OF SPECIAL INTERRUPT SAVE ROUTINE
30 ; AND FORK ROUTINE FOR USE IN CONJUNCTION
31 ; WITH THE CINT$ DIRECTIVE.
32 ; CALL ROUTINE WHOSE ADDRESS IS STORED IN AST BLOCK
33 ; WHEN DEQUEUING AST BLOCK WITH A.CBL=0.
34 ;
35 ; T. J. MILLER 12-SEP-77
36 ;
37 ; TM101 -- REPLACE NULL TASK WITH IDLE CODE IN EXEC.
38 ;
39 ; SYSTEM ENTRANCE, EXIT, AND PROCESSOR DISPATCHING
40 ;
41 ; MACRO LIBRARY CALLS
42 ;
43
44 .MCALL ABODF$,HDRDF$,HWDDF$,PCBDF$,TCBDF$
45 .MCALL ITBDF$ ; PW001
46 000000 ABODF$ ;DEFINE TASK ABORT CODES
47 000000 HDRDF$ ;DEFINE TASK HEADER OFFSETS
48 000000 HWDDF$ ;DEFINE HARDWARE REGISTERS
49 000000 PCBDF$ ;DEFINE PARTITION CONTROL BLOCK OFFSETS
50 000000 TCBDF$ ;DEFINE TASK CONTROL BLOCK OFFSETS
51 000000 ITBDF$ ;DEFINE INTERRUPT TRANSFER BLOCK OFFSETS; PW001
52
53 ;+
54 ; **-$DIRSV-DIRECTIVE SAVE
55 ;
56 ; THIS ROUTINE IS CALLED FROM DIRECTIVE LEVEL TRAP SERVICE ROUTINES. THE
57 ; STACK DEPTH IS +1, THUS A SWITCH TO THE SYSTEM STACK IS ALWAYS NEC-
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-1
58 ; ESSARY. AT THE END OF TRAP PROCESSING A RETURN IS EXECUTED TO EXIT
59 ; FROM THE SYSTEM.
60 ;
61 ; INPUTS:
62 ;
63 ; 4(SP)=PS WORD PUSHED BY TRAP.
64 ; 2(SP)=PC WORD PUSHED BY TRAP.
65 ; 0(SP)=SAVED R5 PUSHED BY 'JSR R5,$DIRSV'.
66 ;
67 ; OUTPUTS:
68 ;
69 ; REGISTER R4 IS PUSHED ONTO THE CURRENT STACK AND THEN A SWITCH
70 ; TO THE SYSTEM STACK IS EXECUTED. REGISTERS R3 THRU R0 ARE
71 ; PUSHED ON THE SYSTEM STACK, THE NEW PROCESSOR PRIORITY IS
72 ; SET, AND A CALL TO THE CALLER IS EXECUTED.
73 ;-
74
75 000000 010446 $DIRSV::MOV R4,-(SP) ;;;SAVE REGISTER R4
76 000002 005367 000000G DEC $STKDP ;;;SET PROPER STACK DEPTH
77 000006 001002 BNE 10$ ;;;IF NE DON'T SWITCH STACKS
78 000010 010677 000000G MOV SP,@$HEADR ;;;SAVE CURRENT STACK POINTER
79
80
81 .IF NDF M$$MGE
82
83 MOV #$STACK,SP ;;;LOAD SYSTEM STACK POINTER
84
85 .ENDC
86
87
88 000014 10$: MTPS #0 ;;;ALLOW INTERRUPTS
89 000020 010346 MOV R3,-(SP) ;SAVE REGISTERS R3 THRU R0
90 000022 010246 MOV R2,-(SP) ;
91 000024 010146 MOV R1,-(SP) ;
92 000026 010046 MOV R0,-(SP) ;
93 000030 CALL (R5) ;CALL SYNCHRONOUS TRAP ROUTINE
94 000032 000472 BR $DIRXT ;EXIT FROM TRAP
95
96 ;+
97 ; **-$FORK-FORK AND CREATE SYSTEM PROCESS
98 ;
99 ; THIS ROUTINE IS CALLED FROM AN I/O DRIVER TO CREATE A SYSTEM PROCESS THAT
100 ; WILL RETURN TO THE DRIVER AT STACK DEPTH ZERO TO FINISH PROCESSING.
101 ;
102 ; INPUTS:
103 ;
104 ; R5=ADDRESS OF THE UCB FOR THE UNIT BEING PROCESSED.
105 ;
106 ; OUTPUTS:
107 ;
108 ; REGISTERS R5 AND R4 ARE SAVED IN THE CONTROLLER FORK BLOCK AND
109 ; A SYSTEM PROCESS IS CREATED. THE PROCESS IS LINKED TO THE FORK
110 ; QUEUE AND A JUMP TO $INTXT IS EXECUTED.
111 ;-
112
113 000034 010446 $FORK:: MOV R4,-(SP) ;SAVE REGISTER R4
114 000036 016504 000000G MOV U.SCB(R5),R4 ;POINT TO CONTROLLER STATUS BLOCK
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-2
115 000042 105064 000000G CLRB S.CTM(R4) ;DISABLE TIMEOUT
116 000046 062704 000006G ADD #S.FRK+6,R4 ;POINT TO END OF FORK BLOCK
117 000052 012614 MOV (SP)+,(R4) ;PUT SAVED R4 IN FORK BLOCK
118
119 ;+
120 ; **-$FORK1-FORK AND CREATE SYSTEM PROCESS
121 ;
122 ; THIS ROUTINE IS AN ALTERNATE ENTRY TO CREATE A SYSTEM PROCESS AND
123 ; SAVE REGISTER R5.
124 ;
125 ; INPUTS:
126 ;
127 ; R4=ADDRESS OF THE LAST WORD OF A 3 WORD FORK BLOCK PLUS 2.
128 ; R5=REGISTER TO BE SAVED IN THE FORK BLOCK.
129 ;
130 ; OUTPUTS:
131 ;
132 ; REGISTER R5 IS SAVED IN THE SPECIFIED FORK BLOCK AND A SYSTEM
133 ; PROCESS IS CREATED. THE PROCESS IS LINKED TO THE FORK QUEUE
134 ; AND A JUMP TO $INTXT IS EXECUTED.
135 ;-
136
137 000054 010544 $FORK1::MOV R5,-(R4) ;SAVE REGISTER R5
138
139 ;+
140 ; **-$FORK0-FORK AND CREATE SYSTEM PROCESS
141 ;
142 ; THIS ROUTINE IS AN ALTERNATE ENTRY TO CREATE A SYSTEM PROCESS.
143 ;
144 ; INPUTS:
145 ;
146 ; R4=ADDRESS OF THE LAST WORD OF A 2 WORD FORK BLOCK PLUS 2.
147 ;
148 ; OUTPUTS:
149 ;
150 ; A SYSTEM PROCESS IS CREATED, LINKED TO THE FORK QUEUE AND A
151 ; JUMP TO $INTXT IS EXECUTED.
152 ;-
153
154 000056 012644 $FORK0::MOV (SP)+,-(R4) ;SET FORK PC
155 000060 005044 CLR -(R4) ;CLEAR LINK TO NEXT FORK BLOCK
156 000062 MFPS -(SP) ;SAVE CURRENT PROCESSOR PRIORITY
157 000066 MTPS #PR7 ;;;LOCK OUT INTERRUPTS
158 000074 010477 000002G MOV R4,@$FRKHD+2 ;;;LINK NEW ENTRY TO OLD LAST
159 000100 010467 000002G MOV R4,$FRKHD+2 ;;;SET ADDRESS OF NEW LAST
160 000104 MTPS (SP)+ ;;;RESTORE PROCESSOR PRIORITY
161 000110 106267 000000G ASRB $IDLFL ;INTERRUPT OF IDLE LOOP? ; TM101
162 000114 103003 BCC $INTXT ;IF CC NO ; TM101
163 ; TM101
164 ; TM101
165 .IF DF M$$MGE ; TM101
166 ; TM101
167 000116 012767 000220' 177754G MOV #$DIRXT,$STACK-24 ;FORCE DEQUEUE FROM FORK LIST ; TM101
168 ; TM101
169 .IFF ; TM101
170 ; TM101
171 MOV #$DIRXT,$STACK-14 ;FORCE DEQUEUE FROM FORK LIST ; TM101
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-3
172 ; TM101
173 .ENDC ; TM101
174 ; TM101
175 ; PW001
176 .IF DF C$$INT ; PW001
177 ; PW001
178 RETURN ; ; PW001
179 ; PW001
180 ;+ ; PW001
181 ; **-$FORK2-FORK ROUTINE FOR USE IN CONJUNCTION WITH ; PW001
182 ; THE CINT$ DIRECTIVE. ; PW001
183 ; ; PW001
184 ; INPUT: ; PW001
185 ; R5 POINTING TO FORK BLOCK IN ITB ; PW001
186 ; ; PW001
187 ; OUTPUT: ; PW001
188 ; IF THE FORK BLOCK IS ALREADY IN USE (FORK PC NON-ZERO), ; PW001
189 ; A SYSTEM PROCESS IS CREATED, LINKED TO THE FORK QUEUE AND A ; PW001
190 ; JUMP TO $INTXT IS EXECUTED. ; PW001
191 ; ELSE THE INTERRUPT IS DISMISSED (NO RETURN TO CALLER). ; PW001
192 ; ; PW001
193 ; IMMEDIATELY ON RETURN FROM THIS ROUTINE, THE FOLLOWING ; PW001
194 ; INSTRUCTION SHOULD BE EXECUTED: ; PW001
195 ; ; PW001
196 ; CLR @R3 ; PW001
197 ; ; PW001
198 ; WHICH DECLARES THE FORK BLOCK FREE. ; PW001
199 ;- ; PW001
200 ; PW001
201 $FORK2::TST 2(R5) ;;;FORK BLOCK ALREADY IN USE? ; PW001
202 BNE 10$ ;;;Y - JUMP ; PW001
203 MOV R4,6(R5) ;;;SAVE R4 IN FORK BLOCK ; PW001
204 MOV R5,R4 ;;; ; PW001
205 ADD #6,R4 ;;;POINT JUST AFTER 3-WORD FORK BLOCK ; PW001
206 BR $FORK1 ;;; ; PW001
207 10$: TST (SP)+ ;;;CLEAR STACK ; PW001
208 ;;;FALL THRU TO $INTXT ; PW001
209 ; PW001
210 .ENDC ; PW001
211 ; PW001
212
213 ;+
214 ; **-$INTXT-INTERRUPT EXIT
215 ;
216 ; THIS ROUTINE MAY BE CALLED VIA A JMP TO EXIT FROM AN INTERRUPT.
217 ;
218 ; INPUTS:
219 ;
220 ; 0(SP)=INTERRUPT SAVE RETURN ADDRESS.
221 ;
222 ; OUTPUTS:
223 ;
224 ; A RETURN TO INTERRUPT SAVE IS EXECUTED.
225 ;-
226
227 000124 $INTXT::RETURN ;
228 ; PW001
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-4
229 ;+ ; PW001
230 ; **-$INTSC-INTERRUPT SAVE (INTERRUPT FROM VECTOR CONNECTED ; PW001
231 ; TO VIA CINT$ DIRECTIVE). ; PW001
232 ; ; PW001
233 ; CALLS ISR WITH R4 AND R5 SAVED AND: ; PW001
234 ; ; PW001
235 ; R5 POINTER TO FORK BLOCK IN ITB ; PW001
236 ; PRI TAKEN FROM ITB ; PW001
237 ; CONDITION CODES TAKEN FROM ITB ; PW001
238 ;- ; PW001
239 ; PW001
240 .IF DF C$$INT ; PW001
241 ; PW001
242 $INTSC::MOV R4,-(SP) ;;;SAVE R4 ; PW001
243 DEC $STKDP ;;;SWITCH STACKS? ; PW001
244 BNE 10$ ;;;N - JUMP ; PW001
245 MOV SP,@$HEADR ;;;Y - SAVE STACK POINTER ; PW001
246 ; PW001
247 .IF NDF M$$MGE ; PW001
248 ; PW001
249 MOV #$STACK,SP ;;;LOAD SYSTEM STACK POINTER ; PW001
250 ; PW001
251 .IFTF ; PW001
252 10$: ;;;REF LABEL ; PW001
253 ; PW001
254 .IFF ; PW001
255 ; PW001
256 MOV KISAR5,-(SP) ;;;SAVE KERNEL APR 5 ; PW001
257 MOV X.REL-X.PSW(R5),KISAR5 ;;;MAP ISR IN KERNEL APR5 ; PW001
258 ; PW001
259 .ENDC ; PW001
260 ; PW001
261 $INTS2: MTPS (R5)+ ;;;LOAD ISR PRIORITY ; PW001
262 INC R5 ;;;SKIP OVER UNUSED BYTE ; PW001
263 CALL @(R5)+ ;;;CALL ISR ; PW001
264 ; PW001
265 .IF DF M$$MGE ; PW001
266 ; PW001
267 MOV (SP)+,KISAR5 ;;;RESTORE KERNEL APR 5 ; PW001
268 ; PW001
269 .ENDC ; PW001
270 ; PW001
271 BR $INTX1 ;;;EXIT FROM INTERRUPT ; PW001
272 ; PW001
273 .ENDC ; PW001
274 ; PW001
275 ; PW001
276
277 ;+
278 ; **-$INTSE-INTERRUPT SAVE (ERROR LOGGING DEVICES)
279 ;
280 ; THIS ROUTINE IS CALLED FROM AN INTERRUPT SERVICE ROUTINE WHEN AN
281 ; INTERRUPT IS NOT GOING TO BE IMMEDIATELY DISMISSED. REGISTER R4 IS
282 ; SAVED AND THEN LOADED WITH THE ADDRESS OF THE SCB OF THE CONTROLLER
283 ; THAT CAUSED THE INTERRUPT. A CHECK IS THEN MADE TO SEE IF AN ERROR IS
284 ; ALREADY IN PROGRESS. IF IT IS NOT, THEN THE CURRENT I/O ACTIVE BITMAP
285 ; IS SAVED IN THE SCB. THE APPROPRIATE BIT IS THEN CLEARED IN THE ACTIVE
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-5
286 ; BITMAP AND REGISTER R4 IS LOADED WITH THE CONTROLLER INDEX. A NORMAL
287 ; INTERRUPT SAVE IS THEN EXECUTED.
288 ;
289 ; INPUTS:
290 ;
291 ; 4(SP)=PS WORD PUSHED BY INTERRUPT.
292 ; 2(SP)=PC WORD PUSHED BY INTERRUPT.
293 ; 0(SP)=SAVED R5 PUSHED BY 'JSR R5,$INTSE'.
294 ; 0(R5)=ADDRESS OF THE SCB OF INTERRUPTING CONTROLLER.
295 ; 2(R5)=NEW PROCESSOR PRIORITY.
296 ;
297 ; OUTPUTS:
298 ;
299 ; REGISTER R4 IS PUSHED ONTO THE CURRENT STACK AND THEN LOADED
300 ; WITH THE ADDRESS OF THE SCB OF THE CONTROLLER THAT CAUSED THE
301 ; INTERRUPT. IF AN ERROR IS NOT IN PROGRESS, THEN THE I/O ACTIVE
302 ; BITMAP IS SAVE IN THE SCB. THE APPROPRIATE BIT IS CLEARED IN THE
303 ; ACTIVE BITMAP AND REGISTER R4 IS LOADED WITH THE CONTROLLER
304 ; INDEX.
305 ;-
306
307 .ENABL LSB
308 000126 010446 $INTSE::MOV R4,-(SP) ;;;SAVE REGISTER R4
309 000130 012504 MOV (R5)+,R4 ;;;GET ADDRESS OF SCB
310
311
312 .IF DF E$$DVC
313
314 BITB #SP.EIP,S.PRI(R4) ;;;ERROR IN PROGRESS?
315 BNE 1$ ;;;IF NE YES
316 MOV $IOABM,S.BMSV(R4) ;;;SAVE I/O ACTIVE BITMAP
317 1$: BIC S.BMSK(R4),$IOABM ;;;CLEAR APPROPRIATE BIT
318
319 .ENDC
320
321
322 000132 116404 000000G MOVB S.CON(R4),R4 ;;;GET CONTROLLER INDEX
323 000136 000401 BR 2$ ;;;FINISH IN COMMON CODE
324
325 ;+
326 ; **-$INTSV-INTERRUPT SAVE
327 ;
328 ; THIS ROUTINE IS CALLED FROM AN INTERRUPT SERVICE ROUTINE WHEN AN
329 ; INTERRUPT IS NOT GOING TO BE IMMEDIATELY DISMISSED. A SWITCH TO
330 ; THE SYSTEM STACK IS EXECUTED IF THE CURRENT STACK DEPTH IS +1. WHEN
331 ; THE INTERRUPT SERVICE ROUTINE FINISHES ITS PROCESSING, IT EITHER FORKS
332 ; , JUMPS TO $INTXT, OR EXECUTES A RETURN.
333 ;
334 ; INPUTS:
335 ;
336 ; 4(SP)=PS WORD PUSHED BY INTERRUPT.
337 ; 2(SP)=PC WORD PUSHED BY INTERRUPT.
338 ; 0(SP)=SAVED R5 PUSHED BY 'JSR R5,$INTSV'.
339 ; 0(R5)=NEW PROCESSOR PRIORITY.
340 ;
341 ; OUTPUTS:
342 ;
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-6
343 ; REGISTER R4 IS PUSHED ONTO THE CURRENT STACK AND THE CURRENT
344 ; STACK DEPTH IS DECREMENTED. IF THE RESULT IS ZERO, THEN
345 ; A SWITCH TO THE SYSTEM STACK IS EXECUTED. THE NEW PROCESSOR
346 ; STATUS IS SET AND A CO-ROUTINE CALL TO THE CALLER IS EXECUTED
347 ;-
348
349 000140 010446 $INTSV::MOV R4,-(SP) ;;;SAVE REGISTER R4
350 000142 005367 000000G 2$: DEC $STKDP ;;;SWITCH STACKS?
351 000146 001002 BNE 3$ ;;;IF NE NO
352 000150 010677 000000G MOV SP,@$HEADR ;;;SAVE CURRENT STACK POINTER
353
354
355 .IF NDF M$$MGE
356
357 MOV #$STACK,SP ;;;LOAD SYSTEM STACK POINTER
358
359 .ENDC
360
361
362 .IF DF L$$SI1
363
364 3$: MTPS (R5) ;;;LOAD NEW PRIORITY
365 CALL 2(R5) ;;;CALL THE CALLER BACK
366
367 .IFF
368
369 000154 042567 177776 3$: BIC (R5)+,PS ;;;LOAD NEW PRIORITY
370 000160 CALL (R5) ;;;CALL THE CALLER BACK
371
372 .ENDC
373
374
375 ;+
376 ; **-$INTXT-INTERRUPT EXIT
377 ;
378 ; THIS ROUTINE IS ENTERED VIA A RETURN TO EXIT FROM AN INTERRUPT. IF THE
379 ; STACK DEPTH IS NOT EQUAL TO ZERO, THEN REGISTERS R4 AND R5 ARE
380 ; RESTORED AND AN RTI IS EXECUTED. ELSE A CHECK IS MADE TO SEE
381 ; IF THERE ARE ANY ENTRIES IN THE FORK QUEUE. IF NONE, THEN R4 AND
382 ; R5 ARE RESTORED AND AN RTI IS EXECUTED. ELSE REGISTERS R3 THRU
383 ; R0 ARE SAVED ON THE CURRENT STACK AND A DIRECTIVE EXIT IS EXECUTED.
384 ;
385 ; INPUTS: (MAPPED SYSTEM)
386 ;
387 ; 06(SP)=PS WORD PUSHED BY INTERRUPT.
388 ; 04(SP)=PC WORD PUSHED BY INTERRUPT.
389 ; 02(SP)=SAVED R5.
390 ; 00(SP)=SAVED R4.
391 ;
392 ; INPUTS: (REAL MEMORY SYSTEM)
393 ;
394 ; NONE.
395 ;-
396
397 000162 $INTX1::MTPS #PR7 ;;;LOCK OUT INTERRUPTS ; PW001
398 000170 005767 000000G TST $STKDP ;;;STACK DEPTH ZERO? ;**-1
399 000174 001026 BNE 10$ ;;;IF NE NO
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-7
400 000176 005767 000000G TST $FRKHD ;;;ANYTHING IN FORK QUEUE?
401 000202 001423 BEQ 5$ ;;;IF EQ NO
402 000204 MTPS #0 ;;;ALLOW INTERRUPTS
403 000210 010346 MOV R3,-(SP) ;SAVE REGISTERS R3 THRU R0
404 000212 010246 MOV R2,-(SP) ;
405 000214 010146 MOV R1,-(SP) ;
406 000216 010046 MOV R0,-(SP) ;
407
408 ;+
409 ; **-$DIRXT-DIRECTIVE EXIT
410 ;
411 ; THIS ROUTINE IS CALLED VIA A JUMP TO EXIT FROM A DIRECTIVE OR TRAP
412 ; SERVICE ROUTINE. IF THERE ARE ANY ENTRIES IN THE FORK QUEUE, THEN
413 ; THE FIRST ENTRY IS REMOVED AND THE FORK ROUTINE IS EXECUTED. ELSE
414 ; A CHECK IS MADE TO SEE IF REDISPATCHING OF THE PROCESSOR IS NECES-
415 ; SARY. IF NOT, THEN REGISTERS R0 THRU R5 ARE RESTORED AND AN RTI
416 ; IS EXECUTED. ELSE THE PROCESSOR IS REDISPATCHED AND THE EXIT
417 ; SEQUENCE IS EXECUTED AGAIN.
418 ;
419 ; INPUTS: (MAPPED SYSTEM)
420 ;
421 ; 16(SP)=PS WORD PUSHED BY INTERRUPT OR TRAP.
422 ; 14(SP)=PC WORD PUSHED BY INTERRUPT OR TRAP.
423 ; 12(SP)=SAVED R5.
424 ; 10(SP)=SAVED R4.
425 ; 06(SP)=SAVED R3.
426 ; 04(SP)=SAVED R2.
427 ; 02(SP)=SAVED R1.
428 ; 00(SP)=SAVED R0.
429 ;
430 ; INPUTS: (REAL MEMORY (SYSTEM)
431 ;
432 ; 06(SP)=SAVED R3.
433 ; 04(SP)=SAVED R2.
434 ; 01(SP)=SAVED R1.
435 ; 00(SP)=SAVED R0.
436 ;-
437
438 000220 $DIRXT::MTPS #PR7 ;;;LOCK OUT INTERRUPTS
439 000226 016703 000000G MOV $FRKHD,R3 ;;;ANYTHING IN FORK QUEUE
440 000232 001014 BNE 20$ ;;;IF NE YES
441 000234 016705 000000G MOV $RQSCH,R5 ;;;SCHEDULING REQUESTED?
442 000240 001035 BNE 40$ ;;;IF NE YES
443 000242 012600 MOV (SP)+,R0 ;;;RESTORE REGISTERS R0 THRU R3
444 000244 012601 MOV (SP)+,R1 ;;;
445 000246 012602 MOV (SP)+,R2 ;;;
446 000250 012603 MOV (SP)+,R3 ;;;
447 000252 5$: ;;;REF LABEL
448
449 .IF NDF M$$MGE
450
451 MOV @$HEADR,SP ;;;RELOAD USER STACK POINTER
452
453 .ENDC
454
455
456 000252 005267 000000G 10$: INC $STKDP ;;;INCREMENT STACK DEPTH
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-8
457 000256 012604 MOV (SP)+,R4 ;;;RESTORE REGISTERS R4 AND R5
458 000260 012605 MOV (SP)+,R5 ;;;
459
460 ;+
461 ; NONSENSE INTERRUPT ENTRY/EXIT
462 ;-
463
464
465 .IF NDF E$$NSI
466
467 ;
468 ; IF ERROR LOGGING OF UNDEFINED INTERRUPTS IS NOT SUPPORTED,
469 ; ALL UNUSED VECTORS POINT TO THE NONSENSE INTERRUPT ADDRESS.
470 ;
471
472 000262 $NS0:: ;
473 000262 $NS1:: ;
474 000262 $NS2:: ;
475 000262 $NS3:: ;
476 000262 $NS4:: ;
477 000262 $NS5:: ;
478 000262 $NS6:: ;
479 000262 $NS7:: ;
480
481 .ENDC
482
483
484 000262 000002 $NONSI::RTI ;;;
485
486 ;
487 ; EXECUTE FORK ROUTINE
488 ;
489 ; FORK ROUTINES ARE ENTERED VIA A CALL WITH THE ARGUMENTS:
490 ;
491 ; R3=ADDRESS OF THE BEGINNING OF THE FORK BLOCK+2.
492 ; R4=RESTORED FROM FORK BLOCK.
493 ; R5=RESTORED FROM FORK BLOCK.
494 ;
495
496 000264 011367 000000G 20$: MOV (R3),$FRKHD ;;;REMOVE ENTRY FROM FORK QUEUE
497 000270 001003 BNE 30$ ;;;IF NE MORE ENTRIES
498 000272 012767 000000G 000002G MOV #$FRKHD,$FRKHD+2 ;;;RESET FORK QUEUE LISTHEAD
499 000300 30$: MTPS #0 ;;;ALLOW INTERRUPTS
500 000304 062703 000010 ADD #10,R3 ;POINT PAST SAVED R4
501
502
503 .IF DF L$$DRV&M$$MGE
504
505 000310 016746 172352 MOV KISAR5,-(SP) ;SAVE APR5
506 000314 011367 172352 MOV (R3),KISAR5 ;MAP THE DRIVER
507
508 .IFTF
509
510 000320 014304 MOV -(R3),R4 ;RESTORE REGISTERS R4 AND R5
511 000322 014305 MOV -(R3),R5 ;
512 000324 CALL @-(R3) ;CALL FORK ROUTINE
513
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-9
514 .IFT
515
516 000326 012667 172352 MOV (SP)+,KISAR5 ;RESTORE APR5
517
518 .ENDC
519
520
521 000332 000732 BR $DIRXT ;TRY EXIT AGAIN
522
523 ;
524 ; RESCHEDULING OR POWERFAIL
525 ;
526
527 000334 40$: MTPS #0 ;;;ALLOW INTERRUPTS
528 000340 005767 000000G TST $PWRFL ;POWER FAILURE?
529 000344 001403 BEQ RESCH ;IF EQ NO
530 000346 CALL $POWER ;EXECUTE POWER RECOVERY ROUTINES
531 000352 000722 BR $DIRXT ;TRY EXIT AGAIN
532 .DSABL LSB
533
534 ;
535 ; RESCHEDULING REQUESTED
536 ;
537
538 000354 005067 000000G RESCH: CLR $RQSCH ;CLEAR SCHEDULE REQUEST
539
540
541 .IF NDF M$$MGE
542
543 MOV $HEADR,R4 ;GET ADDRESS OF CURRENT HEADER
544 BEQ 5$ ;IF EQ NO CURRENT TASK
545 TST @H.GARD(R4) ;STACK OVERFLOW?
546 BEQ 5$ ;IF EQ NO
547 CLR @H.GARD(R4) ;CLEAR HEADER GUARD WORD
548 MOV #S.CSST,R0 ;SET SST ABORT-BAD STACK
549 CALL $ABCTK ;ABORT CURRENT TASK
550
551 .ENDC
552
553
554 000360 012701 000025 5$: MOV #T2.STP!T2.SPN!T2.WFR,R1 ;SET SUSPEND-WAITFOR MASK
555 000364 012704 000024 MOV #T2.STP!T2.SPN,R4 ;SET SUSPEND MASK
556 000370 005765 000032 10$: TST T.STAT(R5) ;TASK BLOCKED?
557 000374 001030 BNE 30$ ;IF NE YES
558
559
560 .IF DF C$$CKP&T$$BUF!A$$TRP
561
562 000376 016502 000016 MOV T.ASTL(R5),R2 ;AST QUEUED?
563 000402 001407 BEQ 20$ ;IF EQ NO
564 000404 032765 140000 000034 BIT #T2.AST!T2.DST,T.ST2(R5) ;AST IN PROGRESS OR DISABLED?
565 000412 001447 BEQ 70$ ;IF EQ NO
566 000414 105762 000002 TSTB A.CBL(R2) ;BUFFERED I/O REQUEST?
567 000420 100444 BMI 70$ ;IF MI YES
568
569 .IFTF
570
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-10
571 000422 030165 000034 20$: BIT R1,T.ST2(R5) ;SUSPENDED OR IN WAITFOR?
572 000426 001440 BEQ 60$ ;IF EQ NO
573 000430 030465 000034 BIT R4,T.ST2(R5) ;SUSPENDED?
574 000434 001010 BNE 30$ ;IF NE YES
575 000436 016503 000046 MOV T.PCB(R5),R3 ;GET PCB ADDRESS OF TASK PARTITION
576 000442 016302 000000G MOV P.HDR(R3),R2 ;POINT TO TASK HEADER
577 000446 036272 000004 000006 BIT H.EFLM(R2),@H.EFLM+2(R2) ;WAITFOR SATISFIED?
578 000454 001023 BNE 50$ ;IF NE YES
579 000456 016505 000052 30$: MOV T.ACTL(R5),R5 ;GET ADDRESS OF NEXT TCB
580 000462 001342 BNE 10$ ;IF NE OKAY
581 ; TM101
582 ; ; TM101
583 ; EXECUTIVE IDLE LOOP ; TM101
584 ; ; TM101
585 ; THE EXECUTIVE IDLE LOOP IS ENTERED WHEN THERE ARE NO RUNNABLE TASKS. ; TM101
586 ; THE NULL TCB AT THE END OF THE TASK LIST IS ALWAYS GUARANTEED TO BE ; TM101
587 ; BLOCKED. TWO FLAGS ARE SET FOR OTHER EXECUTIVE ROUTINES IN THE IDLE ; TM101
588 ; LOOP. ; TM101
589 ; ; TM101
590 ; 1. THE ADDRESS OF THE NULL TCB (#$HEADR) IS SET INTO THE RESCHEDULE; TM101
591 ; POINTER ($RQSCH) TO PREVENT $DIRXT FROM EVER RETURNING TO SYSTEM; TM101
592 ; STATE WHILE THE EXEC IS IDLE. THIS FORCES EXECUTION BACK TO THE; TM101
593 ; IDLE LOOP IN LIEU OF A REAL SCHEDULE REQUEST. ; TM101
594 ; ; TM101
595 ; 2. AN IDLE FLAG IS SET ($IDLFL) FOR THE FORK ROUTINES TO CAUSE THEM; TM101
596 ; TO FORCE CONTROL BACK TO $DIRXT WHEN NECESSARY TO DEQUEUE A ; TM101
597 ; FORK. (IT IS IMPOSSIBLE FOR THE IDLE LOOP TO ALWAYS RETURN TO ; TM101
598 ; $DIRXT WHEN NECESSARY BECAUSE OF A WINDOW BETWEEN THE CHECK OF ; TM101
599 ; THE FORK LIST AND THE WAIT INSTRUCTION.) ; TM101
600 ; ; TM101
601 ; TM101
602 000464 012767 000000G 000000G MOV #$HEADR,$RQSCH ;PREVENT $DIRXT RETURN TO USER STATE ; TM101
603 000472 012701 000000G MOV #$IDLPT,R1 ;POINT TO IDLE PATTERN WORD ; TM101
604 000476 105067 000000G CLRB $CURPR ;CLEAR CURRENT TASK PRIORITY ; TM101
605 000502 40$: ;REF LABEL ; TM101
606 ; TM101
607 ; TM101
608 .IF DF P$$P45 ; TM101
609 ; TM101
610 DECB $IDLCT ;TIME TO MOVE PATTERN? ; TM101
611 BGE 45$ ;IF GE NO ; TM101
612 MOVB #4,$IDLCT ;RESET COUNT ; TM101
613 ASLB (R1)+ ;MOVE PATTERN ($IDLPT) ; TM101
614 RORB (R1) ;($IDLPT+1) ; TM101
615 ADCB -(R1) ;($IDLPT) ; TM101
616 45$: MOV (R1),R0 ;PUT IT WHERE IT CAN BE SEEN ($IDLPT) ; TM101
617 ; TM101
618 .ENDC ; TM101
619 ; TM101
620 ; TM101
621 000502 105241 INCB -(R1) ;INDICATE IN IDLE STATE ($IDLFL) ; TM101
622 000504 005767 000000G TST $FRKHD ;FORK QUEUED SINCE LAST TIME IN $DIRXT? ; TM101
623 000510 001003 BNE 46$ ;IF NE YES ; TM101
624 000512 000001 WAIT ;WAIT FOR INTERRUPT ; TM101
625 000514 105021 CLRB (R1)+ ;RESET IDLE FLAG ($IDLFL) ; TM101
626 000516 000771 BR 40$ ; ; TM101
627 000520 105011 46$: CLRB (R1) ;RESET IDLE FLAG ($IDLFL) ; TM101
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-11
628 000522 000636 BR $DIRXT ;BR TO DEQUEUE FORK ; TM101
629 ;**-1
630 ;
631 ; WAITFOR SATISFIED-CLEAR WAIT STATE
632 ;
633
634 000524 005365 000034 50$: DEC T.ST2(R5) ;CLEAR WAITFOR STATE
635
636 ;
637 ; RESTART OR CONTINUE A TASK
638 ;
639
640 000530 60$: ;REF LABEL
641
642 .IFT
643
644 000530 005004 CLR R4 ;SET FLAG TO SIGNIFY RESTART OF TASK
645
646 .ENDC
647
648
649 000532 012700 000046 70$: MOV #H.DSW,R0 ;POINT TO DIRECTIVE STATUS WORD
650 000536 116567 000002 000000G MOVB T.PRI(R5),$CURPR ;SET CURRENT TASK PRIORITY ; TM101
651 000544 016703 000000G MOV $HEADR,R3 ;GET ADDRESS OF CURRENT TASK HEADER
652 000550 001424 BEQ 80$ ;IF EQ NO CURRENT TASK
653 000552 020567 000000G CMP R5,$TKTCB ;NEW TASK SAME AS CURRENT?
654 000556 001002 BNE 73$ ;IF NE NO
655 000560 000167 000324 JMP 130$ ;NO CONTEXT SWITCH NECESSARY
656
657 ;
658 ; SAVE CONTEXT OF CURRENT TASK
659 ;
660
661 000564 016302 000072 73$: MOV H.GARD(R3),R2 ;POINT TO HEADER GUARD WORD
662 000570 010601 MOV SP,R1 ;POINT TO SAVED R0
663 000572 012142 MOV (R1)+,-(R2) ;SAVE R0
664 000574 012142 MOV (R1)+,-(R2) ;SAVE R1
665 000576 012142 MOV (R1)+,-(R2) ;SAVE R2
666 000600 012142 MOV (R1)+,-(R2) ;SAVE R3
667
668
669 .IF DF M$$MGE
670
671 000602 012142 MOV (R1)+,-(R2) ;SAVE R4
672 000604 012142 MOV (R1)+,-(R2) ;SAVE R5
673 000606 012142 MOV (R1)+,-(R2) ;SAVE PC
674 000610 011142 MOV (R1),-(R2) ;SAVE PS
675 000612 006506 MFPI SP ;GET USER STACK POINTER
676 000614 012613 MOV (SP)+,(R3) ;SAVE USER STACK POINTER IN HEADER
677
678 .IFF
679
680
681 .IF DF E$$EAE
682
683 MOV H.FPSA(R3),R2 ;POINT TO EAE SAVE AREA
684 BEQ 75$ ;IF EQ TASK DOES NOT USE EAE
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-12
685 MOV SC,(R2)+ ;SAVE EAE REGISTERS
686 MOV AC,(R2)+ ;
687 MOV MQ,(R2) ;
688
689 .ENDC
690
691
692 .IFTF
693
694 000616 011063 000046 75$: MOV (R0),H.DSW(R3) ;SAVE DIRECTIVE STATUS WORD
695
696
697 .IF DF F$$LPP
698
699 MOV H.FPSA(R3),R2 ;POINT TO FLOATING POINT SAVE AREA
700 BEQ 80$ ;IF EQ TASK DOES NOT USE FLOATING POINT
701
702
703 .IF DF M$$MGE
704
705 MOV $TKTCB,R3 ;GET TCB ADDRESS OF CURRENT TASK
706 MOV T.PCB(R3),R1 ;GET ADDRESS OF TASK PARTITION PCB
707 MOV P.REL(R1),KISAR6 ;MAP TO TASK PARTITION
708
709
710 .IF DF P$$LAS
711
712 ADD T.OFF(R3),KISAR6 ;ADD IN OFFSET TO TASK IMAGE
713
714 .ENDC
715
716
717 .ENDC
718
719
720 STFPS (R2)+ ;SAVE FLOATING POINT STATUS
721 SETD ;SET FLOATING DOUBLE MODE
722 STD R0,(R2)+ ;SAVE FLOATING POINT REGISTERS
723 LDD R4,R0 ;
724 STD R0,(R2)+ ;
725 LDD R5,R0 ;
726 STD R0,(R2)+ ;
727 STD R1,(R2)+ ;
728 STD R2,(R2)+ ;
729 STD R3,(R2)+ ;
730
731 .ENDC
732
733
734 ;
735 ; LOAD CONTEXT OF NEW TASK
736 ;
737
738 000622 010567 000000G 80$: MOV R5,$TKTCB ;SET ADDRESS OF NEW TCB
739 000626 016503 000046 MOV T.PCB(R5),R3 ;GET ADDRESS OF TASK PARTITION PCB
740 000632 016302 000000G MOV P.HDR(R3),R2 ;GET ADDRESS OF TASK HEADER
741 000636 010267 000000G MOV R2,$HEADR ;SET ADDRESS OF TASK HEADER
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-13
742
743 .IFT
744
745
746 .IF DF C$$CKP&T$$BUF!A$$TRP
747
748 000642 010446 MOV R4,-(SP) ;SAVE EFFECT AST FLAG
749
750 .ENDC
751
752
753 000644 016204 000044 MOV H.WND(R2),R4 ;POINT TO NUMBER OF WINDOW BLOCKS
754 000650 005764 000004 TST W.BLVR+2(R4) ;IS TASK MAPPED TO THE EXEC?
755 000654 001436 BEQ 85$ ;IF EQ NO
756
757 .IFTF
758
759 000656 010201 MOV R2,R1 ;COPY ADDRESS OF TASK HEADER
760 000660 060001 ADD R0,R1 ;POINT TO DIRECTIVE STATUS WORD
761 000662 012120 MOV (R1)+,(R0)+ ;RESTORE DIRECTIVE STATUS WORD
762 000664 012120 MOV (R1)+,(R0)+ ;RESTORE POINTER TO FCS IMPURE AREA
763 000666 012120 MOV (R1)+,(R0)+ ;RESTORE POINTER TO FORTRAN IMPURE AREA
764 000670 012120 MOV (R1)+,(R0)+ ;RESTORE POINTER TO OVERLAY IMPURE AREA
765 000672 012120 MOV (R1)+,(R0)+ ;RESTORE PTR TO VECTOR OF IMPURE PTRS
766
767 .IFT
768
769 000674 012700 177600 MOV #UISDR0,R0 ;POINT TO USER DESCRIPTOR REGISTER 0
770 000700 012710 077406 MOV #77406,(R0) ;SETUP PRIVILEGED TASK DESCRIPTOR REGISTERS
771 000704 012010 MOV (R0)+,(R0) ;
772 000706 012010 MOV (R0)+,(R0) ;
773 000710 012010 MOV (R0)+,(R0) ;
774
775
776 .IF DF R$$EXV
777
778 000712 012010 MOV (R0)+,(R0) ;
779
780 .ENDC
781
782
783 000714 011067 177616 MOV (R0),UISDR0+14. ;ALLOW FULL ACCESS TO I/O PAGE
784 000720 012701 177640 MOV #UISAR0,R1 ;POINT TO USER ADDRESS REGISTER 0
785 000724 012700 172340 MOV #KISAR0,R0 ;POINT TO KERNAL ADDRESS REGISTER 0
786 000730 012021 MOV (R0)+,(R1)+ ;SETUP PRIVILEGED TASK ADDRESS REGISTERS
787 000732 012021 MOV (R0)+,(R1)+ ;
788 000734 012021 MOV (R0)+,(R1)+ ;
789
790
791 .IF DF R$$EXV
792
793 000736 012021 MOV (R0)+,(R1)+ ;
794
795 .ENDC
796
797
798 000740 011011 MOV (R0),(R1) ;
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-14
799 000742 012767 177600 177656 MOV #177600,UISAR0+14. ;SET ADDRESS REGISTER 7 FOR I/O PAGE
800 000750 000412 BR 90$ ;
801 000752 012700 177600 85$: MOV #UISDR0,R0 ;POINT TO USER DESCRIPTOR REGISTER 0
802 000756 005020 CLR (R0)+ ;CLEAR ALL USER DESCRIPTOR REGISTERS
803 000760 005020 CLR (R0)+ ;
804 000762 005020 CLR (R0)+ ;
805 000764 005020 CLR (R0)+ ;
806 000766 005020 CLR (R0)+ ;
807 000770 005020 CLR (R0)+ ;
808 000772 005020 CLR (R0)+ ;
809 000774 005010 CLR (R0) ;
810 000776 012446 90$: MOV (R4)+,-(SP) ;PUSH NUMBER OF WINDOW BLOCKS
811 001000 062704 000020 100$: ADD #W.BLGH,R4 ;POINT PAST CURRENT WINDOW BLOCK
812 001004 016403 177760 MOV -W.BLGH(R4),R3 ;PICK UP NEXT PCB ADDRESS
813 001010 001417 BEQ 115$ ;IF EQ WINDOW IS NOT MAPPED
814 001012 024444 CMP -(R4),-(R4) ;POINT TO FIRST PDR ADDRESS
815 001014 016300 000014 MOV P.REL(R3),R0 ;PICK UP PARTITION RELOCATION BIAS
816
817
818 .IF DF P$$LAS
819
820 ADD -2(R4),R0 ;ADD IN WINDOW OFFSET
821
822 .ENDC
823
824
825 001020 112401 MOVB (R4)+,R1 ;POINT TO FIRST PDR
826 001022 112403 MOVB (R4)+,R3 ;PICK UP NUMBER OF PDR'S TO LOAD
827 001024 111421 110$: MOVB (R4),(R1)+ ;SET USER DESCRIPTOR ACCESS CODE
828 001026 112721 000177 MOVB #177,(R1)+ ;SET BLOCK LENGTH
829 001032 010061 000036 MOV R0,UISAR0-UISDR0-2(R1) ;LOAD USER ADDRESS REGISTER
830 001036 062700 000200 ADD #200,R0 ;ADVANCE TO NEXT 4K BOUNDARY
831 001042 005303 DEC R3 ;ANY MORE TO LOAD?
832 001044 003367 BGT 110$ ;IF GT NO
833 001046 012441 MOV (R4)+,-(R1) ;LOAD LAST USER DESCRIPTOR REGISTER
834 001050 005316 115$: DEC (SP) ;ANY MORE WINDOW BLOCKS?
835 001052 003352 BGT 100$ ;IF GT YES
836 001054 011216 MOV (R2),(SP) ;LOAD USER STACK POINTER
837 001056 006606 MTPI SP ;
838
839
840 .IF DF C$$CKP&T$$BUF!A$$TRP
841
842 001060 012604 MOV (SP)+,R4 ;RESTORE EFFECT AST INDICATOR
843
844 .ENDC
845
846
847 .IFF
848
849
850 .IF DF E$$EAE
851
852 MOV H.FPSA(R2),R0 ;POINT TO EAE SAVE AREA
853 BEQ 120$ ;IF EQ TASK DOES NOT USE EAE
854 CMP (R0)+,(R0)+ ;POINT TO SAVED MQ REGISTER
855 MOV (R0),MQ ;RESTORE EAE REGISTERS
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-15
856 MOV -(R0),AC ;
857 MOV -(R0),SC ;
858
859 .ENDC
860
861
862 .IFTF
863
864
865 .IF DF F$$LPP
866
867 MOV H.FPSA(R2),R0 ;POINT TO FLOATING POINT SAVE AREA
868 BEQ 120$ ;IF EQ TASK DOES NOT USE FLOATING POINT
869
870
871 .IF DF M$$MGE
872
873 MOV T.PCB(R5),R1 ;GET ADDRESS OF TCB OF NEXT TASK
874 MOV P.REL(R1),KISAR6 ;MAP TO TASK PARTITION
875
876
877 .IF DF P$$LAS
878
879 ADD T.OFF(R5),KISAR6 ;ADD IN OFFSET TO TASK IMAGE
880
881 .ENDC
882
883
884 .ENDC
885
886
887 TST (R0)+ ;POINT TO SAVED FLOATING POINT REGISTERS
888 SETD ;SET FLOATING DOUBLE MODE
889 LDD (R0)+,R0 ;RESTORE FLOATING POINT REGISTERS
890 LDD (R0)+,R1 ;
891 STD R1,R4 ;
892 LDD (R0)+,R1 ;
893 STD R1,R5 ;
894 LDD (R0)+,R1 ;
895 LDD (R0)+,R2 ;
896 LDD (R0)+,R3 ;
897 LDFPS @H.FPSA(R2) ;RESTORE FLOATING POINT STATUS
898
899 .ENDC
900
901
902 001062 016200 000072 120$: MOV H.GARD(R2),R0 ;POINT TO HEADER GUARD WORD
903 001066 010601 MOV SP,R1 ;POINT TO CURRENT CONTEXT
904 001070 014021 MOV -(R0),(R1)+ ;RESTORE R0
905 001072 014021 MOV -(R0),(R1)+ ;RESTORE R1
906 001074 014021 MOV -(R0),(R1)+ ;RESTORE R2
907 001076 014021 MOV -(R0),(R1)+ ;RESTORE R3
908
909 .IFT
910
911 001100 014021 MOV -(R0),(R1)+ ;RESTORE R4
912 001102 014021 MOV -(R0),(R1)+ ;RESTORE R5
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-16
913 001104 014021 MOV -(R0),(R1)+ ;RESTORE PC
914 001106 014011 MOV -(R0),(R1) ;RESTORE PS
915
916 .ENDC
917
918
919 001110 130$: ;REF LABEL
920
921
922 .IF DF C$$CKP&T$$BUF!A$$TRP
923
924 001110 005704 TST R4 ;EFFECT AST?
925 001112 001520 BEQ 190$ ;IF EQ NO
926 001114 010500 MOV R5,R0 ;CALCULATE ADDRESS OF AST LISTHEAD
927 001116 062700 000016 ADD #T.ASTL,R0 ;
928 001122 CALL $QRMVF ;REMOVE AST ENTRY FROM QUEUE
929
930
931 .IF DF C$$CKP&T$$BUF
932
933 TSTB A.CBL(R1) ;BUFFERED I/O REQUEST?
934 BMI 210$ ;IF MI YES
935
936 .ENDC
937
938
939 .ENDC
940
941
942 .IF DF A$$TRP
943
944 001126 010504 MOV R5,R4 ;CALCULATE ADDRESS OF STATUS WORD
945 001130 062704 000034 ADD #T.ST2,R4 ;
946 001134 111446 MOVB (R4),-(SP) ;COPY CURRENT EXTENSION BYTE
947 001136 042716 177752 BIC #^C<T2.STP!T2.SPN!T2.WFR>,(SP) ;CLEAR ALL BUT WAIT STATE
948 001142 006316 ASL (SP) ;SHIFT INTO POSITITON FOR SAVE
949 001144 042714 000077 BIC #<T2.STP!T2.SPN!T2.WFR>*2!T2.STP!T2.SPN!T2.WFR,(R4) ;
950 001150 052614 BIS (SP)+,(R4) ;SAVE WAIT STATE
951 001152 052714 100000 BIS #T2.AST,(R4) ;SET AST IN PROGRESS
952 001156 010103 MOV R1,R3 ;COPY AST CONTROL BLOCK ADDRESS
953 001160 010346 MOV R3,-(SP) ;SAVE AST CONTROL BLOCK ADDRESS
954 001162 022323 CMP (R3)+,(R3)+ ;POINT TO NUMBER OF BYTES TO ALLOCATE
955 001164 016704 000000G MOV $HEADR,R4 ;POINT TO TASK HEADER
956
957
958 .IF DF M$$MGE
959
960 001170 006506 MFPI SP ;GET CURRENT STACK POINTER
961 001172 012600 MOV (SP)+,R0 ;
962
963 .IFF
964
965 MOV (R4),R0 ;GET CURRENT STACK POINTER
966
967 .ENDC
968
969
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-17
970 001174 012301 MOV (R3)+,R1 ;GET NUMBER OF BYTES TO ALLOCATE ON TASK STACK
971 001176 160100 SUB R1,R0 ;CALCULATE NEW TOP OF STACK
972
973
974 .IF DF A$$CHK!M$$MGE
975
976 001200 CALL $ACHCK ;ADDRESS CHECK STACK SPACE
977 001204 103435 BCS 160$ ;IS CS ADDRESS CHECK FAILURE
978
979 .ENDC
980
981
982 .IF DF M$$MGE
983
984 001206 010046 MOV R0,-(SP) ;SET NEW TASK STACK POINTER
985 001210 006606 MTPI SP ;
986 001212 CALL $RELOM ;RELOCATE AND MAP STACK ADDRESS
987 001216 010601 MOV SP,R1 ;CALCULATE ADDRESS OF TRAP PC
988 001220 062701 000016 ADD #7*2,R1 ;
989
990 .IFF
991
992 MOV (R4),R1 ;RETRIEVE OLD TOP OF STACK
993 MOV R0,(R4) ;SET NEW TASK STACK POINTER
994 MOV (R1)+,(R0)+ ;MOVE SAVED R4
995 MOV (R1)+,(R0)+ ;MOVE SAVED R5
996 MOV (R3)+,(R0)+ ;SET AST TRAP PC
997 CLR (R0)+ ;SET AST TRAP PS
998
999 .IFTF
1000
1001 001224 012146 MOV (R1)+,-(SP) ;SAVE PC AT TRAP
1002 001226 011102 MOV (R1),R2 ;SAVE PS AT TRAP
1003
1004 .IFT
1005
1006 001230 012711 170000 MOV #CMODE!PMODE,(R1) ;SET AST TRAP PS
1007 001234 012341 MOV (R3)+,-(R1) ;SET AST TRAP PC
1008
1009 .IFTF
1010
1011 001236 012346 MOV (R3)+,-(SP) ;GET NUMBER OF PARAMETERS TO MOVE
1012 001240 005316 140$: DEC (SP) ;ANY MORE PARAMETERS TO MOVE?
1013 001242 002402 BLT 150$ ;IF LT NO
1014 001244 012320 MOV (R3)+,(R0)+ ;MOVE PARAMETER TO USER STACK
1015 001246 000774 BR 140$ ;
1016 001250 005726 150$: TST (SP)+ ;CLEAN STACK
1017
1018 .IFF
1019
1020 MOV @.DSW,(R0)+ ;MOVE DSW TO TASK STACK
1021
1022 .IFT
1023
1024 001252 006537 000046 MFPI @#H.DSW ;GET USER DSW
1025 001256 012620 MOV (SP)+,(R0)+ ;MOVE DSW TO TASK STACK
1026
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-18
1027 .ENDC
1028
1029
1030 001260 012620 MOV (SP)+,(R0)+ ;MOVE PC AT TRAP TO TASK STACK
1031 001262 010220 MOV R2,(R0)+ ;MOVE PS AT TRAP TO TASK STACK
1032 001264 016410 000004 MOV H.EFLM(R4),(R0) ;SAVE WAITFOR MASK WORD
1033 001270 016464 000006 000040 MOV H.EFLM+2(R4),H.EFSV(R4) ;SAVE WAITFOR MASK ADDRESS
1034
1035
1036 .IF DF A$$CHK!M$$MGE
1037
1038 001276 000404 BR 170$ ;TAKE COMMON EXIT
1039 001300 012700 000022 160$: MOV #S.CAST,R0 ;SET AST ABORT
1040 001304 CALL $ABCTK ;ABORT CURRENT TASK
1041
1042 .ENDC
1043
1044
1045 001310 012600 170$: MOV (SP)+,R0 ;RETRIEVE AST CONTROL BLOCK ADDRESS
1046 001312 016001 000002 MOV A.CBL(R0),R1 ;GET LENGTH OF BLOCK TO RELEASE ; PW001
1047 001316 001005 BNE 175$ ;JUMP IF NON-ZERO ; PW001
1048 ; PW001
1049 .IF DF M$$MGE ; PW001
1050 ; PW001
1051 001320 024040 CMP -(R0),-(R0) ;ZERO - POINT TO A.KSR5 ; PW001
1052 001322 012067 172352 MOV (R0)+,KISAR5 ;MAP DEQUEUE SUBROUTINE IN APR 5 ; PW001
1053 001326 CALL @(R0)+ ;CALL DEQUEUE SUBROUTINE ; PW001
1054 ; PW001
1055 .IFF ; PW001
1056 ; PW001
1057 CALL @-2(R0) ;CALL DEQUEUE SUBROUTINE ; PW001
1058 ; PW001
1059 .ENDC ; PW001
1060 ; PW001
1061 001330 000416 BR 200$ ;EXIT ; PW001
1062 001332 105701 175$: TSTB R1 ;LENGTH NON-ZERO? ; PW001
1063 001334 001004 BNE 180$ ;Y - JUMP ; PW001
1064 001336 000301 SWAB R1 ;N - GET OFFSET TO CONTROL BLOCK ADDRESS; PW001
1065 001340 060401 ADD R4,R1 ;CALCULATE ADDRESS TO STORE BLOCK ADDRES;**-3
1066 001342 010011 MOV R0,(R1) ;RESET FOR NEXT AST
1067 001344 000410 BR 200$ ;TRY EXIT AGAIN
1068 001346 180$: CALL $DEACB ;DEALLOCATE CONTROL BLOCK
1069 001352 000405 BR 200$ ;TRY EXIT AGAIN
1070
1071 .ENDC
1072
1073
1074 001354 105765 000034 190$: TSTB T.ST2(R5) ;TASK BEING HALTED?
1075 001360 100002 BPL 200$ ;IF PL NO
1076 001362 CALL $DREXT ;FORCE TASK EXIT
1077 001366 000167 176626 200$: JMP $DIRXT ;
1078 001372 012746 000220' 210$: MOV #$DIRXT,-(SP) ;SET RETURN ADDRESS
1079 001376 010100 MOV R1,R0 ;SET ADDRESS OF AST CONTROL BLOCK
1080
1081 ;+
1082 ; **-$FINBF-FINISH TERMINAL INPUT BUFFERED I/O
1083 ;
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-19
1084 ; THIS ROUTINE IS CALLED TO COMPLETE A BUFFERED TERMINAL INPUT
1085 ; REQUEST THAT HAS BEEN PLACED IN THE AST QUEUE.
1086 ;
1087 ; INPUTS:
1088 ;
1089 ; R0=ADDRESS OF I/O PACKET.
1090 ;
1091 ; OUTPUTS:
1092 ;
1093 ; THE BUFFERED I/O IS TRANSFERED TO THE USER TASK AND $IOFIN
1094 ; IS CALLED TO FINISH THE I/O REQUEST.
1095 ;-
1096
1097
1098 .IF DF C$$CKP&T$$BUF
1099
1100 $FINBF::SAVNR ;SAVE NONVOLITILE REGISTERS
1101 MOV R0,R3 ;COPY I/O PACKET ADDRESS
1102 MOV I.TCB(R3),R5 ;RETRIEVE TASK TCB ADDRESS
1103 INCB T.IOC(R5) ;INCREMENT OUTSTANDING I/O COUNT
1104
1105
1106 .IF DF M$$MGE
1107
1108 MOV I.IOSB(R3),R0 ;GET VIRTUAL ADDRESS OF I/O STATUS BLK
1109 BEQ 10$ ;IF EQ NONE SPECIFIED
1110 CALL $RELOC ;RELOCATE I/O STATUS BLOCK
1111 MOV R1,I.IOSB+2(R3) ;SET RELOCATION BIAS
1112 MOV R2,I.IOSB+4(R3) ;SET BUFFER ADDRESS
1113
1114 .IFTF
1115
1116 10$: MOV I.UCB(R3),R5 ;GET TERMINAL UCB ADDRESS
1117 MOV R3,R4 ;COPY ADDRESS OF I/O PACKET
1118 ADD #I.PRM+12,R4 ;POINT TO INPUT BUFFER ADDRESS
1119 MOV (R4),-(SP) ;SAVE INPUT BUFFER ADDRESS
1120 MOV (R4),R2 ;SET ADDRESS OF INPUT BUFFER FOR COPY
1121 MOV -(R4),-(SP) ;GET NUMBER OF BYTES TRANSFERED
1122 MOV (SP),-(SP) ;COPY NUMBER OF BYTES TRANSFERED
1123 MOV -(R4),R0 ;GET FINAL I/O STATUS
1124 TST -(R4) ;BYPASS SIZE OF USER BUFFER
1125 MOV -(R4),R1 ;SET ADDRESS OF USER BUFFER FOR COPY
1126
1127 .IFT
1128
1129
1130 .IF DF D$$YNM
1131
1132 MOV 14(R4),R1 ;GET ADDRESS OF DESCRIPTOR PCB
1133 ; TM075
1134 ; TM075
1135 .IF DF R$$LKL ; TM075
1136 ; TM075
1137 CLR 14(R4) ;CLEAR LAST PARAMETER WORD ; TM075
1138 ; TM075
1139 .ENDC ; TM075
1140 ; TM075
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-20
1141 ; TM075
1142 ADD P.REL(R1),-(R4) ;CONVERT TO ACTUAL RELOCATION BIAS
1143 MOV (R4)+,KISAR6 ;MAP TO USER BUFFER
1144 MOV (R4),R1 ;RELOAD USER BUFFER ADDRESS
1145
1146 .IFF
1147
1148 MOV -(R4),KISAR6 ;MAP TO USER BUFFER
1149
1150 .ENDC
1151
1152
1153 .ENDC
1154
1155
1156 20$: DEC (SP) ;ANY MORE BYTES TO COPY?
1157 BLT 30$ ;IF LT NO
1158 MOVB (R2)+,(R1)+ ;TRANSFER BYTE TO USER BUFFER
1159 BR 20$ ;
1160 30$: TST (SP)+ ;CLEAN STACK
1161 MOV (SP)+,R1 ;SET SECOND I/O STATUS WORD
1162 CALL $IOFIN ;FINISH I/O OPERATION
1163 MOV (SP)+,R0 ;RETRIEVE ADDRESS OF INPUT BUFFER
1164
1165
1166 .IF NDF T$$VBF
1167
1168 CMP -(R0),-(R0) ;ADJUST TO START OF BUFFER
1169 MOV #84.,R1 ;SET SIZE OF BLOCK TO RELEASE
1170
1171 .IFF
1172
1173 MOV -(R0),R1 ;PICK UP BUFFER SIZE
1174 TST -(R0) ;POINT TO START OF BUFFER
1175
1176 .ENDC
1177
1178
1179 CALL $DEACB ;DEALLOCATE INPUT BUFFER
1180 RETURN ;
1181
1182 .ENDC
1183
1184
1185 ;+
1186 ; **-$SAVNR-SAVE NONVOLATILE REGISTERS
1187 ;
1188 ; THIS ROUTINE IS A CO-ROUTINE THAT SAVES REGISTERS R4 AND R5.
1189 ;-
1190
1191 001400 010446 $SAVNR::MOV R4,-(SP) ;SAVE R4
1192 001402 010546 MOV R5,-(SP) ;SET RETURN ADDRESS
1193 001404 016605 000004 MOV 4(SP),R5 ;RESTORE R5
1194 001410 CALL @(SP)+ ;CALL THE CALLER
1195 001412 012604 MOV (SP)+,R4 ;RESTORE R4
1196 001414 012605 MOV (SP)+,R5 ;RESTORE R5
1197 001416 RETURN ;RETURN TO ORIGINAL CALLER
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-21
1198
1199 ;+
1200 ; **$SWSTK-SWITCH STACKS
1201 ;
1202 ; THIS ROUTINE IS CALLED FROM TASK LEVEL TO SWITCH TO THE SYSTEM
1203 ; STACK THUS INHIBITING TASK SWITCHING. THE CALLING TASK MUST BE
1204 ; PRIVILEGED IF RUNNING IN A MAPPED SYSTEM AND MAPPED TO THE EXEC.
1205 ; CONTROL IS PASSED HERE FROM DRDSP AFTER THE TRAP HAS OCCURED AND
1206 ; $DIRSV HAS BEEN CALLED.
1207 ;
1208 ; CALLING SEQUENCE:
1209 ;
1210 ; EMT 376 ;TRAP TO $EMSST IN DRDSP
1211 ; .WORD ADDR ;ADDRESS FOR RETURN TO USER STATE
1212 ;
1213 ; INPUTS AT THIS POINT:
1214 ;
1215 ; R3=ADDRESS OF PC WORD OF TRAP ON STACK + 2
1216 ;
1217 ; MAPPED SYSTEM:
1218 ;
1219 ; 22(SP)=PS PUSHED BY TRAP
1220 ; 20(SP)=PC PUSHED BY TRAP
1221 ; 16(SP)=SAVED R5
1222 ; 14(SP)=SAVED R4
1223 ; 12(SP)=SAVED R3
1224 ; 10(SP)=SAVED R2
1225 ; 06(SP)=SAVED R1
1226 ; 04(SP)=SAVED R0
1227 ; 02(SP)=RETURN ADDRESS FOR SYSTEM EXIT
1228 ; 00(SP)=104376
1229 ;
1230 ; UNMAPPED SYSTEM:
1231 ;
1232 ; 10(SP)=SAVED R3
1233 ; 06(SP)=SAVED R2
1234 ; 04(SP)=SAVED R1
1235 ; 02(SP)=SAVED R0
1236 ; 00(SP)=RETURN ADDRESS FOR SYSTEM EXIT
1237 ;
1238 ; OUTPUTS:
1239 ;
1240 ; THE USER IS CALLED BACK ON THE SYSTEM STACK WITH ALL REGISTERS
1241 ; PRESERVED. TO RETURN TO TASK LEVEL THE CALLER MERELY EXECUTES
1242 ; A RETURN.
1243 ;
1244 ;-
1245
1246 001420 105013 $SWSTK::CLRB (R3) ;SET INITIAL PS WORD
1247
1248
1249 .IF DF M$$MGE
1250
1251 001422 012705 172354 MOV #KISAR6,R5 ;POINT TO KERNAL APR 6
1252 001426 016715 177654 MOV UISAR6,(R5) ;SET UP KERNAL APR 6
1253 001432 016745 177652 MOV UISAR5,-(R5) ;SET UP KERNAL APR 5
1254
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-22
1255
1256 .IF NDF R$$EXV
1257
1258 MOV UISAR4,-(R5) ;SET UP KERNAL APR 4
1259
1260 .ENDC
1261
1262
1263 .IFTF
1264
1265 001436 014305 MOV -(R3),R5 ;PICK UP TRAP PC WORD
1266 001440 012513 MOV (R5)+,(R3) ;SET ADDRESS FOR RETURN TO USER STATE
1267
1268 .IFT
1269
1270 001442 010516 MOV R5,(SP) ;SET CALLER'S ADDRESS
1271
1272 .IFF
1273
1274 MOV R5,-(SP) ;SET CALLER'S ADDRESS
1275
1276 .ENDC
1277
1278
1279 001444 014305 MOV -(R3),R5 ;RESTORE R5
1280 001446 016603 000012 MOV 12(SP),R3 ;RESTORE R3
1281 001452 CALLR @(SP)+ ;CALL THE CALLER
1282
1283 000001 .END
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-23
SYMBOL TABLE
AS.DEL= 000010 H.NML 000061 PS.APR= 000007 S.CTRP= 000014 T3.ACP= 100000
AS.EXT= 000004 H.ODVA 000022 PS.CHK= 010000 S.FRK = ****** GX T3.CAL= 000100
AS.RED= 000001 H.ODVL 000024 PS.CKP= 040000 S.IOMG= 000032 T3.CLI= 001000
AS.WRT= 000002 H.OVLY 000054 PS.CKR= 020000 S.PRTY= 000034 T3.MCR= 004000
A$$CHK= 000000 H.PFVA 000032 PS.COM= 000200 TPS = 177564 T3.NET= 000020
A$$CPS= 000000 H.RCVA 000036 PS.DEL= 000010 TS.BLK= 170700 T3.NSD= 000200
A$$TRP= 000000 H.RRVA 000062 PS.DRV= 000020 TS.CKP= 000200 T3.PMD= 040000
A.AST 000006 H.SPRI 000060 PS.FXD= 004000 TS.CKR= 000100 T3.PRV= 010000
A.BYT 000004 H.TKVA 000026 PS.LIO= 001000 TS.EXE= 100000 T3.REM= 020000
A.CBL 000002 H.TKVL 000030 PS.NSF= 000400 TS.MSG= 020000 T3.ROV= 000040
A.DQSR 177776 H.VEXT 000056 PS.OUT= 100000 TS.NRP= 010000 T3.RST= 000400
A.IOC 000003 H.WND 000044 PS.PER= 002000 TS.OUT= 000400 T3.SLV= 002000
A.KSR5 177774 I$$RDN= 000000 PS.PIC= 000100 TS.RDN= 040000 UBMPR = 170200
A.LGTH= 000014 I.AST 000022 PS.SYS= 000040 TS.RUN= 004000 UDSAR0= 177660
A.MPCT 000011 I.ATTL= 000044 P$$RTY= 000000 T.ACTL 000052 UDSDR0= 177620
A.NPR 000010 I.EFN 000003 P$$TPT= 000000 T.ASTL 000016 UISAR0= 177640
A.PCB 000012 I.FCN 000012 P.BLKS 000016 T.ATT 000054 UISAR4= 177650
A.PCBL 000000 I.IOSB 000014 P.BUSY 000024 T.CPCB 000004 UISAR5= 177652
A.PRI 000002 I.LGTH= 000044 P.HDR = ****** GX T.DPRI 000040 UISAR6= 177654
A.PRM 000012 I.LNK 000000 P.IOC 000003 T.EFLG 000022 UISAR7= 177656
A.STAT 000010 I.LN2 000006 P.LNK 000000 T.IOC 000003 UISDR0= 177600
A.TCB 000004 I.PRI 000002 P.MAIN 000012 T.LBN 000041 UISDR4= 177610
A.TCBL 000006 I.PRM 000024 P.NAM 000004 T.LDV 000044 UISDR5= 177612
CMODE = 140000 I.TCB 000004 P.OWN 000026 T.LNK 000000 UISDR6= 177614
C$$ORE= 002000 I.UCB 000010 P.PRI 000002 T.MXSZ 000050 UISDR7= 177616
FE.CAL= 000040 KDSAR0= 172360 P.REL 000014 T.NAM 000006 U.SCB = ****** GX
FE.CEX= 020000 KDSDR0= 172320 P.SIZE 000016 T.NCRE= 000006 V$$CTR= 001200
FE.DRV= 000010 KISAR0= 172340 P.STAT 000030 T.NCWF= 000004 V$$RSN= 000031
FE.EXP= 000200 KISAR5= 172352 P.SUB 000010 T.NDMO= 000010 W.BATT 000006
FE.EXT= 000001 KISAR6= 172354 P.SWSZ 000022 T.NDNR= 000000 W.BFPD 000014
FE.EXV= 000004 KISAR7= 172356 P.TCB 000026 T.NDSE= 000002 W.BHVR 000004
FE.LSI= 000400 KISDR0= 172300 P.WAIT 000020 T.NLDN= 000014 W.BLGH 000020
FE.MUP= 000002 KISDR6= 172314 RESCH 000354R T.NLUP= 000016 W.BLPD 000016
FE.MXT= 040000 KISDR7= 172316 R$$DER= 000000 T.OFF 000060 W.BLVR 000002
FE.NLG= 100000 K$$CNT= 177546 R$$EXV= 000000 T.PCB 000046 W.BNPD 000015
FE.PKT= 000100 K$$CSR= 177546 R$$SND= 000000 T.PRI 000002 W.BOFF 000012
FE.PLA= 000020 K$$IEN= 000115 R$$11M= 000000 T.RCVL 000012 W.BPCB 000000
G$$TPP= 000000 K$$LDC= 000001 R$$11S= 000000 T.RRFL 000064 W.BSIZ 000010
G$$TTK= 000000 K$$TPS= 000074 SISDR0= 172200 T.SRCT 000063 X$$DBT= 000000
H$$RTZ= 000074 L$$ASG= 000000 SR0 = 177572 T.STAT 000032 X.DSI 000024
H.CSP 000000 L$$DRV= 000000 SR3 = 172516 T.ST2 000034 X.FORK 000012
H.CUIC 000010 MPAR = 172100 SWR = 177570 T.ST3 000036 X.ISR 000010
H.DSW 000046 MPCSR = 177746 S$$YSZ= 001740 T.TCBL 000030 X.JSR 000002
H.DUIC 000012 M$$CRB= 000124 S.CABO= 000024 T.UCB 000026 X.LNK 000000
H.EFLM 000004 M$$MGE= 000000 S.CAST= 000022 T2.ABO= 000100 X.PSW 000006
H.EFSV 000040 M$$NET= 000000 S.CBPT= 000004 T2.AST= 100000 X.REL 000022
H.FCS 000050 M$$NT2= 000000 S.CCRF= 000030 T2.BFX= 004000 X.TCB 000026
H.FORT 000052 N$$LDV= 000001 S.CEMT= 000012 T2.CAF= 000400 $ABCTK= ****** GX
H.FPSA 000042 PIRQ = 177772 S.CFLT= 000016 T2.CHK= 020000 $ACHCK= ****** GX
H.FPVA 000034 PMODE = 030000 S.CILI= 000010 T2.CKD= 010000 $CURPR= ****** GX
H.GARD 000072 PR0 = 000000 S.CIOT= 000006 T2.DST= 040000 $DEACB= ****** GX
H.HDLN 000002 PR1 = 000040 S.CLRF= 000026 T2.FXD= 002000 $DIRSV 000000RG
H.IPC 000016 PR4 = 000200 S.COAD= 000000 T2.HLT= 000200 $DIRXT 000220RG
H.IPS 000014 PR5 = 000240 S.CON = ****** GX T2.SPN= 000004 $DREXT= ****** GX
H.ISP 000020 PR6 = 000300 S.CSGF= 000002 T2.STP= 000020 $FORK 000034RG
H.LUN 000076 PR7 = 000340 S.CSST= 000020 T2.TIO= 001000 $FORK0 000056RG
H.NLUN 000074 PS = 177776 S.CTM = ****** GX T2.WFR= 000001 $FORK1 000054RG
SYSXT MACRO M1110 22-AUG-79 07:12 PAGE 3-24
SYMBOL TABLE
$FRKHD= ****** GX $INTXT 000124RG $NS3 000262RG $POWER= ****** GX $SAVNR 001400RG
$HEADR= ****** GX $INTX1 000162RG $NS4 000262RG $PWRFL= ****** GX $STACK= ****** GX
$IDLFL= ****** GX $NONSI 000262RG $NS5 000262RG $QRMVF= ****** GX $STKDP= ****** GX
$IDLPT= ****** GX $NS0 000262RG $NS6 000262RG $RELOM= ****** GX $SWSTK 001420RG
$INTSE 000126RG $NS1 000262RG $NS7 000262RG $RQSCH= ****** GX $TKTCB= ****** GX
$INTSV 000140RG $NS2 000262RG
. ABS. 177776 000
001454 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 5200 WORDS ( 21 PAGES)
DYNAMIC MEMORY: 6148 WORDS ( 23 PAGES)
ELAPSED TIME: 00:00:49
[11,24]SYSXT,SY0:[11,34]SYSXT/-SP=[1,1]EXEMC/ML,[11,10]RSXMC/PA:1,SYSXT