Google
 

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