Google
 

Trailing-Edge - PDP-10 Archives - BB-H348C-RM_1982 - swskit-v21/listings/mcb/nsprc.lst
There are no other files named nsprc.lst in the archive.
NSPRC	MACRO M1110  13-OCT-79 10:04
TABLE OF CONTENTS

     4-   73	RCVMSG - PRIMARY LEVEL MESSAGE DISPATCH
     5-  125	RCVCTL
     6-  155	RCVDAT - DATA MESSAGE PROCESSING
     7-  270	RCVLS - LINK SERVICE MESSAGE PROCESSING
     8-  370	RCVSEG
     9-  441	RCVACK
    10-  519	CHKNUM - VALIDATE A RECEIVED ACK NUMBER
    10-  520	CHKNMS - VALIDATE A RECEIVED SEGMENT NUMBER
    11-  558	DATACK
    12-  595	ACKCTL
    13-  640	PROACK
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 3


      1						.IIF DF N$$ICF,  .TITLE	NSPRI
      2						.IIF NDF N$$ICF, .TITLE	NSPRC
      3						.IDENT	/X01.08/
      4
      5					;
      6					; COPYRIGHT (C) 1978 BY
      7					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
      8					;
      9					;
     10					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
     11					; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
     12					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
     13					; COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
     14					; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
     15					; TRANSFERRED.
     16					;
     17					; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
     18					; AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
     19					; CORPORATION.
     20					;
     21					; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
     22					; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
     23					;
     24					;
     25					; MODULE DESCRIPTION
     26					;
     27					;	NSP RECEIVE MESSAGE PROCESSING
     28					;
     29					;
     30					; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
     31					;
     32					; IDENT HISTORY:
     33					;
     34					; 1.00	10-FEB-78
     35					;	VERSION 2.0 RELEASE
     36					;
     37					;	AP0001	21-DEC-77 ALAN D. PECKHAM
     38					;		TO ENABLE USE OF THE SYSTEM INTERFACE.
     39					;	AP0002	20-MAR-78 ALAN D. PECKHAM
     40					;		CALLERS OF "NOTUSR" MUST HAVE 'LSFLAGS' IN R2
     41					;	AP0003	8-JUN-78 ALAN D. PECKHAM
     42					;		NOTUSR NO LONGER NEEDS LSFLAGS IN R2
     43					;	AP0004	14-JUL-78 ALAN D. PECKHAM
     44					;		SEPERATE SYSTEM INTERFACE INTERRUPT FLOW COUNT
     45					;		CHANGE IN RCVLS.
     46					;	AP0005	13-NOV-78 ALAN D. PECKHAM
     47					;		MAKE CHKNMS GLOBAL
     48					;	AP0006	13-FEB-79 ALAN D. PECKHAM
     49					;		FIX HANDLING OF RECEIVED MESSAGES COUNTER
     50					;		ADD CODE TO SUPPORT EXTRANEOUS MESSAGES RECEIVED COUNTER
     51					;	AP0007	22-MAY-79 ALAN D. PECKHAM
     52					;		FIX RCVSEG TO AVOID CALLING SNDAKD AND SNDAKI FOR
     53					;		INTERCEPT LINKS.
     54
     55					;
     56					; EXTERNAL MACRO DEFINITIONS
     57					;
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 3-1


     58						.MCALL	MAP,SAVMAP,RESMAP
     59						.MCALL	SAVRG,RESRG,$MVTBF
     60						.MCALL	CCBDF$,NSPSY$
     61	000000					CCBDF$			; DEFINE THE CCB OFFSETS
     62	000000					NSPSY$			; DEFINE THE NSP SYMBOLS
     63
     64
     65						.IF NDF	N$$SYS&N$$USR
     66						N$$SYS=1		;IF NEITHER INTERFACE IS SPECIFIED
     67									;DEFAULT TO SYSTEM INTERFACE
     68						.ENDC
     69
     70
     71	000000					.PSECT	NSPRC
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 4
RCVMSG - PRIMARY LEVEL MESSAGE DISPATCH

     73						.SBTTL	RCVMSG - PRIMARY LEVEL MESSAGE DISPATCH
     74
     75					;+
     76					; **-RCVMSG-DECODE BASIC MESSSAGE TYPE AND DISPATCH
     77					;
     78					; THIS ROUTINE ISOLATES THE BASIC MESSAGE TYPE FROM THE MESSAGE FLAGS
     79					; FIELD (BITS 2 & 3) AND DISPATCHES TO THE APPROPRIATE PROCESSING
     80					; ROUTINE.
     81					;
     82					; INPUTS:
     83					;
     84					;	R5 = ADDRESS OF CCB WHICH DESRCRIBE THE RECEIVED MESSAGE
     85					;	R4 = MESSAGE POINTER TO [MSGFLGS]
     86					;	R3 = POINTER TO SOURCE NODE NAME
     87					;
     88					; OUTPUTS TO PROCESSING ROUTINES:
     89					;
     90					;	R1 = DISPACTCH CODE (WORD INDEX)
     91					;	R2 = MESSAGE FLAGS
     92					;	R4 = POINTER TO FIELD FOLLOWING MESSAGE FLAGS
     93					;	R5 = ADDRESS OF RECEIVED MESSAGE CCB
     94					;
     95					; 	PROCESSING ROUTINES MUST CLEAR R5 IF THE MESSAGE CCB IS PASSED
     96					;	ON FOR FURTHER PROCESSING.  IF R5 IS NON ZERO, IT IS ASSUMED TO
     97					;	BE THE ADDRESS OF THE MESSAGE CCB AND WILL BE RELEASED TO THE
     98					;	SYSTEM.
     99					;-
    100
    101	000000	016565 	000016 	000012 	RCVMSG::MOV	C.BUF+2(R5),C.STS(R5) ; COMPUTE THE ADDRESS OF THE END OF
    102	000006	066565 	000020 	000012 		ADD	C.CNT(R5),C.STS(R5)   ; ...THE END OF THE MESSAGE + 1
    103	000014					CALL	GETEX1		; GET MSGFLGS
    104	000020	103415 				BCS	TOSS		; FIELD TOO LONG
    105	000022	032701 	000003 			BIT	#3,R1		; IS THIS FIELD MSGFLGS?
    106	000026	001012 				BNE	TOSS		; NO TOSS MSG
    107	000030	010102 				MOV	R1,R2		; MSGFLGS
    108	000032	006201 				ASR	R1		; GET OFF MSGFLG ID..NOW WORD INDEX
    109	000034	042701 	177771 			BIC	#^C<6>,R1	; ISOLATE TYPE <BITS 1,2>
    110	000040					CALLR	@RCVTBL(R1)	; DISPATCH
    111
    112					;
    113					; BASIC MESSAGE TYPE DISPATCH TABLE
    114					;
    115	000044	000114'			RCVTBL:	.WORD	RCVDAT		; PROCESS DATA, LINK SERVICE /INTERRUPT MESSAGES
    116	000046	001020'				.WORD	RCVACK		; PROCESS EXPLICIT ACK'S OR NACK'S
    117	000050	000056'				.WORD	RCVCTL		; PROCESS CONTROL MESSAGES
    118	000052	000054'				.WORD	TOSS		; RESERVED MESSAGE TYPE
    119
    120					;
    121					; AT THIS LEVEL OF HTE PROTOCOL, RESERVED MESSAGED ARE IGNORED.
    122					;
    123	000054				TOSS:	RETURN			; RETURN TO CALLER (R5 = CCB ADDRESS)
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 5
RCVCTL

    125						.SBTTL	RCVCTL
    126					;+
    127					; **-RCVCTL-RECEIVE A CONTROL MESSAGE
    128					; **-RVCICT-RECEIVE AN INTERCEPT CONTROL MESSAGE
    129					;
    130					; CONTROL MESSAGES ARE PROCESSED IN THE ACP.  THE KEY PARAMETERS
    131					; ARE SAVED IN THE SECOND BUFFER DESCRIPTOR OF THE SPAWNED CCB
    132					; AND THE CCB IS LINKED TO THE ACP CCB QUEUE AND A SCHEDULE REQUEST
    133					; FOR THE ACP IS POSTED.
    134					;
    135					;-
    136						.IF DF	N$$ICF
    137
    138					RCVICT::MOV	R0,C.CNT2(R5)	; SAVE POINTER TO DESTINATION NODE NAME
    139						MOVB	C.MOD(R5),C.RSV(R5) ;SAVE CODE FOR UNSPWN
    140						MOVB	#2,C.MOD(R5)	; SET SUBFUCTION CODE TO INDICATE A
    141						BR	CTLCMN		; ...CONTROL MESSAGE
    142
    143						.ENDC
    144
    145	000056	116565 	000011 	000002 	RCVCTL:	MOVB	C.MOD(R5),C.RSV(R5) ;SAVE CODE FOR UNSPWN
    146	000064	105065 	000011 			CLRB	C.MOD(R5)	; INDICATE THAT THIS A CONTROL MESSAGE
    147
    148	000070	010465 	000024 		CTLCMN:	MOV	R4,C.BUF2(R5)	; SAVE MESSAGE POINTER
    149	000074	010365 	000032 			MOV	R3,C.FLG2(R5)	; SAVE POINTER TO REMOTE NODE NAME
    150	000100	010265 	000022 			MOV	R2,C.FLG1(R5)	; SAVE MESSAGE FLAGS
    151	000104	010504 				MOV	R5,R4		; CHANGE REGISTER CONVENTIONS
    152	000106	005005 				CLR	R5		; INDICATE CCB PASSED ON & NO ERROR (C=0)
    153	000110					CALLR	QNSPA		; QUEUE CCB AND SCHEDULE THE ACP
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 6
RCVDAT - DATA MESSAGE PROCESSING

    155						.SBTTL	RCVDAT - DATA MESSAGE PROCESSING
    156
    157					;+
    158					; **-RCVDAT-DATA MESSAGE PROCESSING
    159					;
    160					; THIS ROUTINE IS DISPATCHED TO WHEN A DATA TYPE PROTOCOL MESSAGE IS
    161					; RECEIVED.  INCLUDED IN THIS CATAGORY ARE USER DATA MESSAGES, USER
    162					; INTERRUPT MESSAGES, AND LINK SERVICE MESSAGES.
    163					;
    164					; INPUTS:
    165					;
    166					;	R5 = ADDRESS OF THE MESSAGE CCB
    167					;	R4 = POINTER TO MSGFLGS
    168					;	R3 = POINTER TO SOURCE NODE NAME
    169					;	R2 = MSGFLGS
    170					;
    171					; OUTPUTS:
    172					;
    173					;	R5 = CCB ADDRESS IF CCB IS TO BE RELEASED
    174					;	   = 0 IF CCB IS NOT TO BE RELEASED
    175					;
    176					; ALL REGISTERS MAY BE USED
    177					;
    178					;-
    179
    180	000114				RCVDAT::CALL	PRODS		; PROCESS DST,SRC ADDRESS
    181	000120	103541 				BCS	100$		; IF CS, MESSAGE IS FOR AN IDLE LINK
    182	000122	122710 	000001 			CMPB	#ST$CIS,(R0)	; IS THE LINK WAITING FOR AN ACCEPT OR REJECT ?
    183	000126	001531 				BEQ	90$		; IF EQ, YES - SET FLAG TO SEND A NAK
    184	000130	026001 	000010 			CMP	L.RLA(R0),R1	; IS THE SOURCE LINK ADDRESS CORRECT ?
    185	000134	001133 				BNE	100$		; IF NE, NO - MESSAGE IS FOR AN IDLE LINK
    186	000136	122710 	000005 			CMPB	#ST$DAT,(R0)	; ARE WE IN RUN STATE ?
    187	000142	001126 				BNE	80$		; NO - RECORD THE FACT AND IGNORE.              ;AP0006
    188					                                                                                ;**-1
    189	000144					CALL	RCDAK		; PROCESS THE ACKNUM FIELD
    190
    191	000150					CALL	RCVSEG		; PROCESS THE SEGNUM FIELD
    192	000154	103521 				BCS	80$		; IF CS, BAD SEGNUM - RECORD AND TOSS.          ;AP0006
    193	000156	016565 	000004 	000022 		MOV	C.NSP(R5),C.FLG(R5) ; SAVE TRANSMITERS LLT ADDR FOR INTERNAL LOO;**-1
    194	000164	032702 	000020 			BIT	#MD.IM,R2	; INTERRUPT/LINK SERVICE OR DATA
    195	000170	001011 				BNE	30$		; INTERRUPT/LINK SERVICE
    196	000172	112765 	000002 	000011 		MOVB	#NT$DAT,C.MOD(R5) ; SET SUBFUNCTION CODE FOR DATA
    197	000200	110265 	000012 			MOVB	R2,C.STS(R5)	; USER DATA FLAGS
    198	000204	042765 	177637 	000012 		BIC	#^C<NT.EOM!NT.BOM>,C.STS(R5) ; CLEAR ALL BUT DATA BITS
    199	000212	000422 				BR	60$
    200
    201	000214	005260 	000032 		30$:	INC	L.LSA(R0)	; BUMP THE HIGHEST I/LS NUMBER ACK'D
    202	000220	042760 	170000 	000032 		BIC	#LA.MSK,L.LSA(R0) ; REMOVE GARBAGE IF OVERFLOW
    203	000226	052760 	100000 	000032 		BIS	#LA.ACK,L.LSA(R0) ; SET ACK REQUIRED FLAGS
    204	000234					CALL	SNDAKI		  ; ATTEMPT TO SEND THE ACK MESSAGE
    205	000240	032702 	000040 			BIT	#MD.ILS,R2	; INTERRUPT OR LINK SERVICE
    206	000244	001002 				BNE	50$		; INTERRUPT
    207	000246					CALLR	RCVLS		; LINK SERVICE PROCESSING AND RETURN
    208
    209	000252	112765 	000004 	000011 	50$:	MOVB	#NT$INT,C.MOD(R5) ; SET SUBFUNCTION CODE FOR INTERRUPT
    210
    211	000260	166504 	000016 		60$:	SUB	C.BUF+2(R5),R4	; COMPUTE THE LENGTH OF THE NSP HEADER
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 6-1
RCVDAT - DATA MESSAGE PROCESSING

    212	000264	160465 	000020 			SUB	R4,C.CNT(R5)	; ...AND REDUCE THE MESSAGE LENGTH
    213	000270	100447 				BMI	70$		; IMPROPER MESSAGE COUNT
    214	000272	060465 	000016 			ADD	R4,C.BUF+2(R5)	; SET THE BUFFER ADDRESSTO THE START OF THE MESSAGE
    215
    216	000276	016065 	000020 	000004 		MOV	L.RNO(R0),C.NSP(R5) ; STORE SEGMENT NUMBER IN THE CCB
    217	000304	005365 	000004 			DEC	C.NSP(R5)	    ; WAS INCREMENTED BY 'RCVSEG'
    218	000310	042765 	170000 	000004 		BIC	#LA.MSK,C.NSP(R5)   ; CLEAR UNDERFLOW
    219	000316	016702 	000000G			MOV	$NSDDB,R2	; GET THE                                       ;AP0006
    220	000322	016202 	000044 			MOV	N$STS+2(R2),R2	; STATISTICS BLOCK                              ;AP0006
    221	000326	005262 	000004 			INC	S$UMR(R2)	; BUMP THE RECEIVE COUNT                        ;AP0006
    222	000332	001002 				BNE	62$		; AND IF OVERFLOWED                             ;AP0006
    223	000334	005362 	000004 			DEC	S$UMR(R2)	; THEN BACK IT UP AGAIN.                        ;AP0006
    224	000340				62$:                                                                            ;AP0006
    225
    226						.IF DF	N$$SYS&N$$USR
    227	000340	105760 	000041 			TSTB	L.PDV(R0)	; SYSTEM OR USER INTERFACE?                     ;AP0001
    228	000344	001017 				BNE	65$		; SYSTEM                                        ;**-1
    229						.ENDC
    230
    231						.IF DF	N$$USR
    232	000346	016065 	000040 	000006 		MOV	L.ULA(R0),C.LIN(R5) ; PUT ULA INTO CCB
    233	000354	122765 	000004 	000011 		CMPB	#NT$INT,C.MOD(R5)   ; IS THIS AN INTERRUPT MESSAGE ?
    234	000362	001004 				BNE	61$		    ; IF NE, NO
    235	000364	010504 				MOV	R5,R4		; SET UP CCB ADDRESS FOR QUEUING TO THE ACP
    236	000366					CALL	QNSPA		; QUEUE INTERRUPT MESSAGE TO THE ACP
    237	000372	000402 				BR	63$		;
    238
    239	000374				61$:	CALL	$QDATR		; CALL QIO INTERFACE ROUTINE                    ;AP0006
    240	000400	005005 			63$:	CLR	R5		; INDICATE CCB NOT TO BE UNSPAWN'ED NOW         ;**-7
    241	000402	000402 				BR	70$
    242						.ENDC
    243	000404				65$:
    244						.IF DF	N$$SYS
    245	000404					CALL	GIVUSR		; GIVE DATA OR INTERRUPT TO USER
    246						.ENDC
    247
    248	000410				70$:	RETURN
    249
    250					;
    251					; SINCE DATA MAY BE TRANSMITTED IMMEDIATELY FOLLOWING A CONNECT CONFIRM,
    252					; IT IS POSIBLE TO RECEIVE A DATA OR LINK SERVICE MESSAGE BEFORE THE ACP
    253					; HAS HAS PLACED THE LINK IN DATA STATE.  IF DATA IS RECEIVED IN THIS
    254					; WINDOW, A NAK FOR SEGMENT ZERO WILL BE SENT WHEN THE LINK ENTERS DATA.
    255					;
    256	000412	052760 	002000 	000012 	90$:	BIS	#LF.NTS,L.FLG(R0) ; RECORD THE EVENT FOR LATER
    257	000420				80$:	CALLR	EMRCTR		; AND RECORD EXTRANEOUS MESSAGE.                ;AP0006
    258					                                                                                ;**-1
    259					;
    260					; THE STANDARD RESPONSE TO AN RECEIVED MESSAGE WHICH DOES NOT MATCH THE
    261					; LOGICAL LINK DATA IS A DISCONNECT CONFIRM.  THE DC IS BUILT IN THE
    262					; BUFFER OF THE RECEIVED MESSAGE, HENCE NO RESOURCE FAULT CAN OCCUR.
    263					; EVENTUALLY THE BUFFER IS RETURNED AT TRANSMIT COMPLETE OF THE DC.
    264					; THIS OPERATION CAN NEVER HAPPEN FOR LOCAL LOGICAL LINKS.
    265					;
    266	000424				100$:	CALL	EMRCTR		; RECORD EXTRANEOUS MESSAGE                     ;AP0006
    267	000430					CALLR	DODC		; SEND A DC IN RESPONSE TO A MESSAGE RECEIVED   ;AP0006
    268									; FOR AN IDLE LINK AND RETURN                   ;**-1
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 7
RCVLS - LINK SERVICE MESSAGE PROCESSING

    270						.SBTTL	RCVLS - LINK SERVICE MESSAGE PROCESSING
    271
    272					;+
    273					; **-RCVLS-LINK SERVICE MESSAGE PROCESSING
    274					;
    275					; THIS SUBROUTINE IS CALLED FROM THE MAINLIN DATA MESSAGE PROCESSING
    276					; ROUTINE WHEN THE MESSAGE TYPE IS LINK SERVICE.  THIS ROUTINE VALIDATES
    277					; THE REMAINING BYTES OF THE MESSAGE, ADJUSTS TRANSMIT COUNTS AND BACK
    278					; PRESSURE FLAGS, AND ATTEMPTS TO INITIATE TRANSMISSION IF IT WAS BLOCKED
    279					; DUE TO FLOW CONTROL.
    280					;
    281					; INPUTS:
    282					;
    283					;	R5 = ADDRESS OF THE MESSAGE CCB
    284					;	R4 = POINTER TO 'LSFLAGS'
    285					;	R3 = POINTER TO SOURCE NODE NAME
    286					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    287					;
    288					; OUTPUTS:
    289					;
    290					;	THE LOGICAL LINK WILL BE ABORTED ON ANY PROTOCOL ERROR.
    291					;	THE BACKPRESSURE FLAGS ARE UPDATED AND TRANSMIT COUNTS
    292					;	ARE UPDATED.  AN ATTEMPT IS MADE TO INITIATE TRANSMISSION IF
    293					;	FLOW CONTROL WAS A BLOCKING CONDITION.
    294					;
    295					; REGISTERS MODIFIED:
    296					;
    297					;	R1, R2, R3, AND R4
    298					;-
    299
    300	000434	005046 			RCVLS::	CLR	-(SP)		; INITIALIZE A FLAG FOR UNBLOCKING TRANSMISSION
    301	000436					CALL	GETEX1		; GET LSFLAGS,RETURNS IN R1
    302	000442	103465 				BCS	60$		; LSFLAGS EXTENSION BIT ON,ERROR
    303	000444	132701 	000360 			BITB	#LS.RES,R1	; ANY RESERVED LINK SERVICE FLAGS ?
    304	000450	001062 				BNE	60$		; IF NE, YES - ABORT THE LOGICAL LINK
    305
    306					;
    307					; PROCESS ANY CHANGE IN THE BACKPRESSURE
    308					;
    309	000452	032701 	000001 			BIT	#LS.FC0,R1	; FLOW CLOSED
    310	000456	001404 				BEQ	10$		; NO
    311	000460	052760 	001000 	000012 		BIS	#LF.HF0,L.FLG(R0) ; RECORD FLOW CLOSED IN LLT
    312
    313						.IF DF	N$$LV2
    314						CLR	L.TIMD(R0)	; CLEAR DATA TIMER AND RETRY COUNT
    315						.ENDC
    316
    317	000466	000406 				BR	15$		; GO TELL THE USER                              ;AP0002
    318					                                                                                ;**-1
    319	000470	032701 	000002 		10$:	BIT	#LS.FC1,R1	; FLOW OPEN
    320	000474	001404 				BEQ	20$		; NO
    321	000476	042760 	001000 	000012 		BIC	#LF.HF0,L.FLG(R0) ; RECORD FLOW OPEN IN LLT
    322	000504	005216 			15$:	INC	(SP)		; INDICATE THAT TRANSMISSION COULD BE INITIATED ;AP0003
    323	000506				20$:				;                                               ;**-1
    324
    325					;
    326					; PROCESS ANY CHANGE IN THE FLOW CONTROL REQUEST COUNTS
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 7-1
RCVLS - LINK SERVICE MESSAGE PROCESSING

    327					;
    328	000506	005002 				CLR	R2		; USE FOR FLOW CONTROL VALUE
    329	000510	151402 				BISB	(R4),R2		; FLOW CONTOL VALUE
    330	000512	032701 	000004 			BIT	#LS.FCC,R1	; FLOW CONTROL INTERPRETATION=INTERRUPT
    331	000516	001415 				BEQ	40$		; NO
    332	000520	000302 				SWAB	R2		; MOVE FCVAL TO UPPER BYTE
    333	000522	105002 				CLRB	R2		; PREPARE FOR ADD
    334	000524	060260 	000042 			ADD	R2,L.TC(R0)	; ADJUST INTERRUPT REQUEST COUNT
    335	000530	102432 				BVS	60$		; ON OVERFLOW FOR 8 BIT NO.,SEND DI
    336					                                                                                ;AP0004
    337						.IF DF	N$$SYS                                                          ;AP0004
    338	000532	105760 	000041 			TSTB	L.PDV(R0)	; IF SYSTEM INTERFACE LINK                      ;AP0004
    339	000536	001033 				BNE	70$		; THEN NO FLOW NOTIFICATION NECESSARY.          ;AP0004
    340						.ENDC                                                                   ;AP0004
    341					                                                                                ;AP0004
    342	000540	116003 	000040 			MOVB	L.ULA(R0),R3	; SET UP THE ULA
    343	000544					CALL	$QIFC		; NOTIFY USER INTERFACE OF FLOW CONTROL CHANGE
    344	000550	000426 				BR	70$
    345
    346	000552	105702 			40$:	TSTB	R2		; IF DATA REQUEST COUNT
    347	000554	100004 				BPL	50$		; IS NEGATIVE
    348	000556	032760 	020000 	000012 		BIT	#LF.HMF,L.FLG(R0) ; AND MESSAGE FLOW CONTROLLED
    349	000564	001014 				BNE	60$		; THEN ERROR
    350
    351	000566	005001 			50$:	CLR	R1		; USE FOR XMIT COUNTS
    352	000570	156001 	000042 			BISB	L.TC(R0),R1	; PREPARE FOR 8 BIT OVERFLOW
    353	000574	060102 				ADD	R1,R2
    354	000576	032702 	177400 			BIT	#177400,R2
    355	000602	001005 				BNE	60$		; 8 BIT OVERFLOW ON DATA REQUEST COUNT
    356	000604	110260 	000042 			MOVB	R2,L.TC(R0)	; ADJUST DATA REQUEST COUNT
    357	000610	003406 				BLE	70$		; IF DATA REQUEST COUNT IS LESS THAN OR EQUAL TO ZERO
    358									; ... NO NEED TO SIGNAL FOR TRANSMIT DATA
    359	000612	005216 				INC	(SP)		; OTHERWISE, ATTEMPT TO INITAITE TRANSMISSION
    360	000614	000404 				BR	70$
    361
    362	000616	012703 	000030 		60$:	MOV	#ER$IFC,R3	; SET INVALID FCVAL ERROR CODE
    363	000622					CALL	DESLNK		; DONT CARE IF WE ATTEMPT TRANSMISSION
    364
    365	000626	005726 			70$:	TST	(SP)+		; SHOULD WE TRY TO INITIATE DATA ?
    366	000630	001402 				BEQ	80$		; IF EQ, NO
    367	000632					CALL	NOTUSR		; TRY TO INITIATE DATA TRANSMISSION
    368	000636				80$:	RETURN			; EXIT WITH R5 NO ZERO TO RELEASE BUFFER
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 8
RCVSEG

    370						.SBTTL RCVSEG
    371					;+
    372					; **-RCVSEG-PROCESS RECEIVED SEGMENT NUMBERS
    373					;
    374					;	ACKNUM,SEGNUM FOR INTERRUPT,LINK SERVICE AND DATA
    375					;
    376					; INPUTS:
    377					;	R5=CCB
    378					;	R4=PTR[DSTADDR]
    379					;	R3=NODE INDEX
    380					;	R2=MSGFLG
    381					;	R0=LLT ADDRESS                                                          ;AP0008
    382					;
    383					; OUTPUTS:
    384					;	R1=PERFORM/DONT PERFORM ACTION FLAG FOR DATA/I/LS
    385					;	   IF NEGATIVE,TOSS THE SEGMENT OTHERWISE PROCESS IT.
    386					;-
    387
    388	000640				RCVSEG::SAVRG	<R2>		; SAVE R2
    389	000642					CALL	GETBIN		; R1=SEGMENT NUMBER
    390
    391	000646	032702 	000020 			BIT	#MD.IM,R2	; INTERRUPT/LINK SERVICE OR DATA ?
    392	000652	001033 				BNE	30$		; IF NE, INTERRUPT/LINK SERVICE
    393
    394	000654	020160 	000020 			CMP	R1,L.RNO(R0)	; IS THIS THE EXPECTED SEGMENT NUMBER ?
    395	000660	001417 				BEQ	20$		; IF EQ, YES - CONTINUE  (C-BIT CLEAR)
    396	000662	016002 	000020 			MOV	L.RNO(R0),R2	; SET NEXT SEGMENT NUMBER TO BE RECEIVED
    397	000666					CALL	CHKNMS		; WILL INDICATE WHETHER SEGNUM HIGH OR LOW
    398	000672	032760 	000400 	000012 		BIT	#LF.NKS,L.FLG(R0) ; HAS A NAK BEEN SENT ?
    399	000700	001044 				BNE	60$		  ; IF NE, YES - TOSS SEGMENT
    400	000702	103043 				BCC	60$		  ; IF CS, SEGNUM TOO HIGH - TOSS IT
    401					                                                                                ;AP0008
    402						.IF DF	N$$ICF                                                          ;AP0008
    403						BIT	#LF.INT,(R0)	; IF NOT INTERCEPT NODE                         ;AP0008
    404						BNE	60$		; THEN                                          ;AP0008
    405						.ENDC                                                                   ;AP0008
    406					                                                                                ;AP0008
    407	000704	052760 	100000 	000030 		BIS	#LA.ACK,L.USA(R0) ; SET ACK REQUIRED FLAG
    408	000712					CALL	SNDAKD		; ATTEMPT TO SEND THE ACK MESSAGE
    409	000716	000435 				BR	60$		; EXIT WITH C-BIT SET
    410
    411	000720	042760 	000400 	000012 	20$:	BIC	#LF.NKS,L.FLG(R0) ; RESET NAK SENT FLAG
    412	000726	005260 	000020 			INC	L.RNO(R0)	; SET NEXT SEGMENT NUMBER EXPECTED
    413	000732	042760 	170000 	000020 		BIC	#LA.MSK,L.RNO(R0) ; CORRECT WRAP AROUND
    414	000740	000425 				BR	70$		; EXIT WITH C-BIT CLEAR
    415
    416
    417	000742	020160 	000022 		30$:	CMP	R1,L.LNO(R0)	; IS THE I/LS SEGMENT NO. RECVD EXPECTED
    418	000746	001413 				BEQ	50$		; IF EQ, YES - CONTINUE  (C-BIT CLEAR)
    419	000750	016002 	000022 			MOV	L.LNO(R0),R2	; SET NEXT I/LS SEGMENT NUMBER
    420	000754					CALL	CHKNMS		; SEGNUM CHECK ON I/LS
    421	000760	103014 				BCC	60$		; IF CC, SEGMENT NUMBER HIGH - TOSS IT
    422					                                                                                ;AP0008
    423						.IF DF	N$$ICF                                                          ;AP0008
    424						BIT	#LF.INT,(R0)	; IF NOT INTERCEPT NODE                         ;AP0008
    425						BNE	60$		; THEN                                          ;AP0008
    426						.ENDC                                                                   ;AP0008
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 8-1
RCVSEG

    427					                                                                                ;AP0008
    428	000762	052760 	100000 	000032 		BIS	#LA.ACK,L.LSA(R0) ; SET ACK REQUIRED FLAG
    429	000770					CALL	SNDAKI		; ATTEMPT TO SEND THE ACK MESSGAE
    430	000774	000406 				BR	60$		; EXIT WITH C-BIT SET
    431
    432	000776	005260 	000022 		50$:	INC	L.LNO(R0)	; SET NEXT SEGMENT NUMBER EXPECTED
    433	001002	042760 	170000 	000022 		BIC	#LA.MSK,L.LNO(R0) ; CORRECT WRAP AROUND
    434	001010	000401 				BR	70$		; EXIT WITH C-BIT CLEAR
    435
    436	001012	000261 			60$:	SEC			; SET C-BIT TO INDICATE BAD SEGMENT NUMBER
    437
    438	001014				70$:	RESRG	<R2>		; RESTORE R2
    439	001016					RETURN			; RETURN TO CALLER
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 9
RCVACK

    441						.SBTTL RCVACK
    442					;++
    443					;
    444
    445					; INPUTS:
    446					;	R5=CCB
    447					;	R4=PTR[DSTADDR]
    448					;	R3=NODE INDEX
    449					;	R2=MSGFLG
    450					;	R0=LLT
    451
    452					; OUTPUTS:
    453
    454					; CALLING SEQUENCE:
    455
    456					;	THIS ROUTINE PROCESSES THE ACKNUM FIELD IN
    457					;	LINK SERVICE,DATA MESSAGES.
    458
    459					;--
    460						.ENABL LSB
    461
    462	001020				RCVACK::CALL	PRODS		; PROCESS DST,SRC ADDRESS
    463	001024	103434 				BCS	100$		; IF CS, MESSAGE RECEIVED ON AN IDLE LINK
    464	001026	026001 	000010 			CMP	L.RLA(R0),R1	; IS THE SOURCE LINK ADDRESS CORRECT ?
    465	001032	001031 				BNE	100$		; IF NE, NO - MESSAGE RECEIVED ON AN IDLE LINK
    466	001034	122710 	000005 			CMPB	#ST$DAT,(R0)	; ARE WE IN RUN STATE ?
    467	001040	001401 				BEQ	40$		; YES
    468
    469						.IF	DF	N$$LV2
    470						CMPB	#ST$CIS,(R0)	; ARE WE IN CIS STATE ?
    471						BNE	30$		; NO
    472						TST	R1		; SOURCE ADDRESS=0
    473						BEQ	40$		; YES
    474						BR	100$		; SEND A DC
    475
    476					30$:	CMPB	#ST$CC,(R0)	; ARE WE IN CC STATE ?
    477						BNE	70$		; NO,TOSS THE ACK
    478
    479						.IFF
    480	001042	000415 				BR	70$
    481						.ENDC
    482
    483					;
    484					; ENTRY FOR PIGGYBACKED ACK PROCESSING
    485					;
    486	001044				RCDAK::
    487	001044	105764 	000001 		40$:	TSTB	1(R4)		; ACKNUM FIELD PRESENT
    488	001050	100012 				BPL	70$		; NO,JUST RETURN
    489
    490	001052					CALL	GETBIN		; GET ACKNUM FIELD IN R1
    491	001056	032701 	060000 			BIT	#LA.RES,R1	; ARE ANY INVALID BITS SET ?
    492	001062	001007 				BNE	90$		; IF NE, YES - DESTROY THE LINK
    493
    494						.IF DF	N$$LV2
    495						CMPB	#ST$CIS,L.STA(R0) ; ARE WE IN CIS STATE
    496						BEQ	50$		  ; YES
    497						CMPB	#ST$CC,L.STA(R0)  ; ARE WE IN CC STATE
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 9-1
RCVACK

    498						BNE	60$		  ; NO
    499					50$:	CALL	ACKCTL		  ; PROCESS CONTROL ACK
    500						BR	80$
    501						.ENDC
    502
    503	001064				60$:	CALL	DATACK		; VALIDATE THE 'ACKNUM'
    504	001070	103402 				BCS	70$		; EXCEPTION CONDITION, ACKNUM BAD
    505	001072					CALL	PROACK		; PROCESS THE DATA ACK/NAK
    506	001076	000241 			70$:	CLC
    507	001100				80$:	RETURN
    508
    509	001102	012703 	000007 		90$:	MOV	#ER$GEN,R3	; SET REASON CODE FOR LINK ABORT
    510	001106					CALL	DESLNK		; INITIATE LINK DESTRUCTION
    511	001112	000261 				SEC			; INDICATE ERROR
    512	001114					RETURN			; RETURN TO CALLER
    513
    514	001116				100$:	CALLR	DODC		; SEND A DC IN RESPONSE TO A MESSAGE RECEIVED
    515									; FOR AN IDLE LINK AND RETURN
    516
    517						.DSABL LSB
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 10
CHKNUM - VALIDATE A RECEIVED ACK NUMBER

    519						.SBTTL	CHKNUM - VALIDATE A RECEIVED ACK NUMBER
    520						.SBTTL	CHKNMS - VALIDATE A RECEIVED SEGMENT NUMBER
    521					;+
    522					; **-CHKNMS-VALIDATE A RECEIVED SEGMENT NUMBER
    523					; **-CHKNUM-VALIDATE A RECEIVED ACK NUMBER
    524					;
    525					; INPUTS:
    526					;	R1=ACKNUM OR SEGNUM
    527					;	R2=LAST DATA ACKED/LAST ILS ACKED OR LAST DATA RECVD/LAST ILS RECVD.
    528					;	R3=WINDOW (CALCULATED AS # OF OUTSTANDING SEGMENTS FOR
    529					;	   ACKNUM, 'CHKNUM' ONLY)
    530					;
    531					; OUTPUTS:
    532					;	R3=COUNT OF CCBS TO BE ACKED AND RETURNED TO USER
    533					;	   OR C-BIT SET INDICATING IMPROPER ACKNUM.
    534					;	FOR SEGNUM CHECKING,THE C-BIT WILL BE USED
    535					;	IF CLEAR , THEN SEGNUM TOO HIGH,WE WILL TOSS THIS
    536					;	SEGMENT.
    537					;	IF SET, THEN SEGNUM LOW,WE WILL TOSS THIS SEGMENT
    538					;	AND THEN SEND ACK WITH HIGHEST ACKNUM.
    539					;	R3 IS MEANINGLESS FOR SEGNUM CHECKING
    540					;-
    541
    542	001122	012703 	004000 		CHKNMS::MOV	#WINDOW,R3	; SET RANGE FOR SEGMENT NUMBERS                 ;AP0005
    543					                                                                                ;**-1
    544	001126	042701 	170000 		CHKNUM:	BIC	#LA.MSK,R1	; ACKNUM 12 BIT FIELD
    545	001132	042702 	170000 			BIC	#LA.MSK,R2	; LAST DATA SEGMENT ACKED OR RECEIVED 12 BIT FIELD
    546
    547	001136	160201 				SUB	R2,R1		; R1=POTENTIAL COUNT OF CCBS TO BE ACKED
    548	001140	103002 				BHIS	10$		; NO WRAP-AROUND
    549	001142	062701 	010000 			ADD	#LA.NMS,R1	; ADJUST FOR WRAP-AROUND
    550
    551	001146	020301 			10$:	CMP	R3,R1	        ; IS LAST DATA ACKED WITHIN THE WINDOW
    552	001150	103401 				BLO	20$		; SETS -C BIT-,ACKNUM IMPROPER OR SEGNUM LOW
    553
    554	001152	010103 				MOV	R1,R3		; NO. OF SEGMENTS TO BE ACKED,C-BIT CLEARED
    555
    556	001154				20$:	RETURN			; RETURN TO CALLER
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 11
DATACK

    558						.SBTTL DATACK
    559					;++
    560					;
    561
    562					; INPUTS:
    563					;	R2=MSGFLG
    564					;	R1=ACKNUM
    565					;	R0=LLT
    566
    567					; OUTPUTS:
    568
    569					; CALLING SEQUENCE:
    570
    571					;	THIS ROUTINE DISPATCHES A DATA ACK AS EITHER AN
    572					;	INTERRUPT/LINK SERVICE OR DATA ACK. IT CALLS
    573					;	THE ROUTINE CHKNUM TO INSPECT THE ACKNUM.
    574
    575					;--
    576
    577	001156				DATACK:	SAVRG	<R1,R2>		; SAVE R1 AND R2
    578	001162	032702 	000020 			BIT	#MD.IM,R2	; INTERRUPT/LINK SERVICE OR DATA ?
    579	001166	001005 				BNE	10$		; IF NE, INTERRUPT/LINK SERVICE
    580
    581	001170	016002 	000024 			MOV	L.LDA(R0),R2	; LAST DATA ACKED
    582	001174	016003 	000014 			MOV	L.NXN(R0),R3	; NEXT SEGMENT NO. TO SEND
    583	001200	000404 				BR	20$		;
    584
    585	001202	016002 	000026 		10$:	MOV	L.LIA(R0),R2	; LAST I/LS ACKED
    586	001206	016003 	000016 			MOV	L.NIN(R0),R3	; NEXT I/LS NO TO SEND
    587	001212	160203 			20$:	SUB	R2,R3		; COMPUTE NUMBER OF UNACKNOWLEDGED SEGMENTS
    588	001214	103002 				BHIS	30$		; IF HIS, NO WRAP AROUND
    589	001216	062703 	010000 			ADD	#LA.NMS,R3	; OTHERWISE ADJUST FOR WRAP AROUND
    590	001222	005303 			30$:	DEC	R3		; HIGHEST NUMBER IS ONE LESS THAN THE COUNT
    591	001224					CALL	CHKNUM		; CHECKS LAST I/LS ACKED IS PROPER
    592	001230					RESRG	<R2,R1>		; RESTORE REGISTERS
    593	001234					RETURN			; RETURN TO CALLER
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 12
ACKCTL

    595						.SBTTL ACKCTL
    596					;++
    597					;
    598
    599					; INPUTS:
    600					;	R3=NODE INDEX
    601					;	R1=ACKNUM
    602					;	R0=LLT
    603
    604					; OUTPUTS:
    605
    606					; CALLING SEQUENCE:
    607
    608					;	THIS ROUTINE PROCESSES CONNECT INITIATE OR
    609					;	CONNECT CONFIRM ACKS.
    610
    611					;--
    612						.IF DF	N$$LV2
    613
    614					ACKCTL:
    615						SAVRG	<R0,R1>
    616						BIT	#A.NAK,R1	;IS THIS A NAK FOR CI,CC
    617						BNE	30$		;IGNORE IT
    618						BIC	#ACKMSK,R1	;12 BIT ACKNUM
    619						BEQ	10$		;CONTROL ACK
    620						MOV	L.RLA(R0),R1	;DESTINATION LINK IDENTIFIER
    621						MOV	L.LLA(R0),R0	;SOURCE LINK IDENTIFIER
    622						MOV	#ER$IAC,ERRCEL  ;INVALID ACK FOR CI,CC
    623						CALL	DODC		;SEND A DISCONNECT CONFIRM
    624						BR	30$
    625
    626					10$:	CMPB	#ST$CC,L.STA(R0) ;CONNECT CONFIRM
    627						BNE	20$		;NO
    628						CALL	ENTDAT		;ENTER DATA MODE
    629
    630					20$:	.IF	DF	N$$LV2
    631						CALL	STPTMD		; STOP DATA ACK TIMER
    632						.ENDC
    633						CLC			;NO RESOURCE ERROR
    634
    635					30$:	RESRG	<R1,R0>
    636						RETURN
    637
    638						.ENDC
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 13
PROACK

    640						.SBTTL PROACK
    641					;++
    642					;
    643
    644					; INPUTS:
    645					;	R5=CCB
    646					;	R3=COUNT OF CCBS TO BE RELEASED
    647					;	R2=MSGFLG
    648					;	R1=ACKNUM
    649					;	R0=LLT
    650
    651					; OUTPUTS:
    652
    653					; CALLING SEQUENCE
    654
    655					;	THIS ROUTINE PROCESSES THE IMPLIED ACK FOR
    656					;	THE ACK OR NAK
    657
    658					;--
    659
    660	001236				PROACK:	CALL	ACKNSP		; ACKNOWLEDGE ALL POSSIBLE SEGMENTS
    661	001242	032701 	010000 			BIT	#LA.NMS,R1	; DO WE HAVE A NEGATIVE ACK ?
    662	001246	001423 				BEQ	30$		; NO
    663
    664						.IF DF	N$$ICF
    665
    666						BIT	#LF.INT,(R0)	; INTERCEPT LINK?
    667						BEQ	7$		; NO
    668						BIT	#MD.IM,R2	; I/LS MESSAGE?
    669						BNE	5$		; YES
    670						MOV	I.LDA(R0),I.NXN(R0) ; READJUST NEXT SEG TO BE RECVD FROM ITERCEPTED NODE
    671						INC	I.NXN(R0)	; SYNC WITH NAK
    672						BIC	#LA.MSK,L.NXN(R0) ; WRAPAROUND
    673						BR	30$
    674
    675					5$:	MOV	I.LIA(R0),I.NIN(R0) ; RE-ADJUST NEXT SEG TO BE RECVD FROM INTERCEPTED NO
    676						INC	I.NIN(R0)	; DUE TO NAK
    677						BIC	#LA.MSK,I.NIN(R0) ; WRAPAROUND
    678						BR	30$
    679					7$:
    680						.ENDC
    681
    682	001250	032702 	000020 			BIT	#MD.IM,R2	; INTERRUPT/LINK SERVICE OR DATA
    683	001254	001010 				BNE	20$		; INTERRUPT/LINK SERVICE
    684	001256	052760 	000200 	000012 		BIS 	#LF.NKR,L.FLG(R0) ; ASSUME THAT NAK PROCESSING WILL BE DEFERRED
    685	001264	105760 	000005 			TSTB	L.TIPD(R0)	; ANY DATA TRANSMITS IN PROGRESS ?
    686	001270	001012 				BNE	30$		; IF NE, YES - DEFER NAK PROCESSING
    687	001272					CALLR	NAKNSP		; ATTEMPT TO INITIATE RETRANSMISSION
    688
    689	001276	052760 	000100 	000012 	20$:	BIS	#LF.INR,L.FLG(R0) ; ASSUME NAK PROCESSING WILL BE DEFERRED
    690	001304	105760 	000004 			TSTB	L.TIPI(R0)	; ANY INTERRUPT OR LS TRANSMITS IN PROGRESS ?
    691	001310	001002 				BNE	30$		; IF NE, YES - DEFER NAK PROCESSING
    692	001312					CALLR	RETLS		; RETRANSMIT I/LS ON XQ3
    693
    694	001316				30$:	RETURN
    695
    696		000001 				.END
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 13-1
SYMBOL TABLE

ACKMAS= 170000   	C.BUF   000014   	ER$SSS= 000045   	LD$LP = 000000   	L.ULA   000040
ACKNSP= ****** GX	C.BUF1  000014   	ER$STA= 000051   	LF.DFL= 000060   	L.USA   000030
ACKPRE= 100000   	C.BUF2  000024   	ER$TCN= 000040   	LF.DSP= 000040   	L.USTA  000024
ACKRES= 060000   	C.CNT   000020   	ER$TCO= 000041   	LF.DST= 000020   	L.XQ1   000046
ACKWRA= 010000   	C.CNT1  000020   	ER$TPA= 000010   	LF.FPN= 000010   	L.XQ2   000050
A$$CHK= 000000   	C.CNT2  000030   	ER$UOB= 000004   	LF.HF0= 001000   	L.XQ3   000052
A$$CPS= 000000   	C.FLG   000022   	E$$XPR= 000000   	LF.HMF= 020000   	MA.DA = 000000
A$$PRI= 000000   	C.FLG1  000022   	FC.CCP= 000020   	LF.HSF= 010000   	MA.IL = 000020
A$$TRP= 000000   	C.FLG2  000032   	FC.CTL= 000006   	LF.INR= 000100   	MC.CC = 000040
A.NAK = 010000   	C.FNC   000010   	FC.KCP= 000016   	LF.INT= 000400   	MC.CI = 000020
CB.CCB= 000002   	C.LIN   000006   	FC.KIL= 000004   	LF.LCL= 040000   	MC.DC = 000100
CB.RDB= 000004   	C.LNK   000000   	FC.RCE= 000002   	LF.MMF= 100000   	MC.DI = 000060
CE.ABO= 100362   	C.MOD   000011   	FC.RCP= 000014   	LF.MSF= 040000   	MC.NO = 000000
CE.DIS= 100366   	C.NSP   000004   	FC.TIM= 000010   	LF.NKR= 000200   	MC.ST = 000120
CE.ERR= 100370   	C.RSV   000002   	FC.XCP= 000012   	LF.NKS= 000400   	MD.BM = 000040
CE.MOP= 100372   	C.STA   000007   	FC.XME= 000000   	LF.NPN= 000001   	MD.EM = 000100
CE.NTE= 100361   	C.STS   000012   	FS.AST= 000000   	LF.NTS= 002000   	MD.ILS= 000040
CE.RTE= 100376   	DATACK  001156R     002	FS.CIB= 002000   	LF.RSU= 100000   	MD.IM = 000020
CE.SRC= 100364   	DESLNK= ****** GX	FS.CRA= 001000   	LS.DLS= 000200   	MF.ACK= 000004
CE.TMO= 100374   	DF$ADJ= 020000   	FS.DIS= 013000   	LS.FCC= 000004   	MF.CTL= 000010
CF.EOM= 000004   	DF$DWN= 001000   	FS.DVC= 001000   	LS.FC0= 000001   	MF.DAT= 000000
CF.HDR= 000020   	DF$FRE= 070000   	FS.ENB= 012000   	LS.FC1= 000002   	MSGHDR= 000007
CF.LB = 100000   	DF$LCL= 040000   	FS.GET= 006000   	LS.ILS= 000200   	M$$CRB= 000124
CF.SOM= 000010   	DF$LNK= 004000   	FS.INI= 000000   	LS.MAK= 000020   	M$$CRX= 000000
CF.SYN= 000040   	DF$REM= 010000   	FS.KIL= 000000   	LS.MNK= 000040   	M$$FCS= 000000
CF.TRN= 000100   	DF$RES= 002000   	FS.LTM= 001000   	LS.RES= 000360   	M$$MGE= 000000
CHKNMS  001122RG    002	DF$TMP= 100000   	FS.MNT= 004000   	LS.RSV= 000300   	M$$OVR= 000000
CHKNUM  001126R     002	DODC  = ****** GX	FS.MSN= 014000   	L$$ASG= 000000   	NAKNSP= ****** GX
CL$ACK= 000040   	D$CHN   000002   	FS.RNG= 011000   	L$$DRV= 000000   	NC.FM0= 000000
CL$MFL= 000010   	D$FLG   000000   	FS.RTN= 001000   	L$$P11= 000001   	NC.FM1= 000001
CL$NRM= 000020   	D$LEN   000014   	FS.SET= 005000   	L$$11R= 000000   	NC.FM2= 000002
CL$SFL= 000004   	D$LNG   000005   	FS.STM= 000000   	L.CIQ   000026   	NETTIM= 000005
CL$TYP= 000001   	D$NAM   000006   	FS.STP= 002000   	L.DCR   000036   	NE.ABO= 177776
CL.MU1= 000001   	D$USE   000004   	FS.STR= 001000   	L.FLG   000012   	NE.ACT= 177771
CL.MU2= 000002   	D$$BUG= 177514   	FS.TRM= 003000   	L.LDA   000024   	NE.CLS= 177767
CL.RES= 177774   	D$$ISK= 000000   	FS.XKL= 002000   	L.LIA   000026   	NE.DIS= 177777
CS.ABO= 000100   	D$$L11= 000001   	FS.XOF= 010000   	L.LLA   000002   	NE.FMT= 177770
CS.BUF= 000200   	D$$YNC= 000000   	FS.XON= 007000   	L.LNG1  000054   	NE.NDT= 177766
CS.DCR= 000400   	D$$YNM= 000000   	F$$LVL= 000001   	L.LNO   000022   	NE.NOD= 177774
CS.DEV= 000002   	EMRCTR= ****** GX	GETBIN= ****** GX	L.LSA   000032   	NE.REJ= 177775
CS.DIS= 000040   	ER$ABO= 000046   	GETEX1= ****** GX	L.LSF   000044   	NE.RES= 177773
CS.ENB= 000020   	ER$ABT= 000011   	GIVUSR= ****** GX	L.LVL   000001   	NE.TIM= 177772
CS.EOF= 000001   	ER$ACC= 000042   	G$$TPP= 000000   	L.NDA   000034   	NI.FLI= 000002
CS.ERR= 100000   	ER$ACT= 000044   	G$$TSS= 000000   	L.NIN   000016   	NI.FRI= 000004
CS.HFE= 002000   	ER$CDI= 000052   	G$$TTK= 000000   	L.NLA   000036   	NI.FRT= 000001
CS.LST= 040000   	ER$COM= 000047   	G$$WRD= 000000   	L.NSTA  000025   	NI.FUB= 000010
CS.MTL= 004000   	ER$FCF= 000050   	I$$RAR= 000000   	L.NXN   000014   	NI.INI= 000001
CS.RNG= 000010   	ER$FMT= 000005   	I$$RDN= 000000   	L.PDV   000041   	NI.RLI= 000002
CS.ROV= 000004   	ER$GEN= 000007   	K$$CNT= 177546   	L.REM   000006   	NI.RRI= 000004
CS.RSN= 010000   	ER$IFC= 000030   	K$$CSR= 177546   	L.RLA   000010   	NI.RVE= 000001
CS.SUC= 000001   	ER$ILS= 000043   	K$$LDC= 000000   	L.RNO   000020   	NI.VER= 000002
CS.TMO= 020000   	ER$IMG= 000053   	K$$TPS= 000074   	L.STA   000000   	NOTUSR= ****** GX
CTLCMN  000070R     002	ER$MLB= 000006   	LA.ACK= 100000   	L.TC    000042   	NP$RTR= 000003
C$$CKP= 000000   	ER$NOD= 000002   	LA.MSK= 170000   	L.TIC   000043   	NS.BOM= 000040
C$$ORE= 000400   	ER$NSD= 000003   	LA.NAK= 110000   	L.TIPD  000005   	NS.EOM= 000100
C$$RSH= 177564   	ER$RES= 000001   	LA.NMS= 010000   	L.TIPI  000004   	NS.MFL= 000003
C.BID   000003   	ER$SSR= 000000   	LA.RES= 060000   	L.UDQ   000034   	NS.MOM= 000000
NSPRC	MACRO M1110  13-OCT-79 10:04  PAGE 13-2
SYMBOL TABLE

NS.NFL= 000001   	NT.MOD= 000020   	N.OPTD  000140   	P$FSP   000013   	ST$CC = 000002
NS.SET= 000002   	NT.MOM= 000000   	N.PASL  000102   	P$LCD   000002   	ST$CIR= 000003
NS.SFL= 000002   	NT.NAK= 000002   	N.PASS  000104   	P$LEN   000014   	ST$CIS= 000001
NS.SOL= 000140   	NT.NFL= 000000   	N.RQDL  000060   	P$LST   000000   	ST$DAT= 000005
NS.SUC= 000001   	NT.SFL= 000001   	N.RQID  000062   	P$NOD   000010   	ST$DID= 000015
NT$ABO= 000022   	NT.SOL= 000140   	N.RSRV= 000030   	P$PFQ   000006   	ST$DIP= 000006
NT$ACC= 000002   	NT.XOF= 000004   	N.SDL1  000036   	P$TIM   000003   	ST$DIR= 000012
NT$ADS= 000000   	NT.XON= 000010   	N.SDL2  000042   	P$$P45= 000000   	ST$DIS= 000014
NT$AKD= 000016   	N$ACQ   000000   	N.SDS1  000040   	P$$WRD= 000000   	ST$UDI= 000013
NT$AKI= 000020   	N$ICF   000006   	N.SDS2  000056   	QNSPA = ****** GX	ST$UNR= 000011
NT$CC = 000012   	N$LNI   000010   	N.SEG   000006   	Q$$OPT= 000010   	S$EMR   000006
NT$CON= 000000   	N$LVC   000022   	N.SFMT  000034   	RCDAK   001044RG    002	S$FMT   000012
NT$DAT= 000002   	N$NOD   000032   	N.SGRP  000036   	RCVACK  001020RG    002	S$LEN   000040
NT$DIS= 000010   	N$PLD   000026   	N.SOBJ  000035   	RCVCTL  000056R     002	S$LNK   000022
NT$IDC= 000034   	N$STS   000042   	N.SUSR  000040   	RCVDAT  000114RG    002	S$MLK   000024
NT$IDN= 000030   	N$TCB   000004   	PF$EIP= 000100   	RCVLS   000434RG    002	S$NKS   000010
NT$ILN= 000032   	N$TMP   000012   	PF$ENB= 000200   	RCVMSG  000000RG    002	S$RES   000014
NT$IND= 000024   	N$VER   000036   	PF$OFF= 000000   	RCVSEG  000640RG    002	S$SEC   000000
NT$INL= 000026   	N$$DAT= 000030   	PF$RLI= 000002   	RCVTBL  000044R     002	S$SNI   000016
NT$INT= 000004   	N$$DIS= 000020   	PF$RRI= 000004   	RETLS = ****** GX	S$UMR   000004
NT$LS = 000014   	N$$INT= 000020   	PF$RVE= 000001   	RF.CLN= 000000   	S$UMS   000002
NT$MOD= 000012   	N$$LDV= 000001   	PF$RVR= 000040   	RF.CTL= 000003   	S$UNI   000020
NT$NAK= 000022   	N$$MOV= 000010   	PF$SLI= 000002   	RF.TIM= 177400   	S$$WRG= 000000
NT$OFF= 000026   	N$$OPT= 000020   	PF$SRI= 000004   	RF.TM0= 000400   	S$$YSZ= 007600
NT$ON = 000002   	N$$OVR= 000042   	PF$SRT= 000001   	RF.WTD= 000020   	TOSS    000054R     002
NT$QRY= 000014   	N$$SYS= 000001   	PF$STA= 000003   	RF.WTM= 000030   	T$$KMG= 000000
NT$REJ= 000004   	N$$USR= 000001   	PF$SUB= 000010   	RF.WTS= 000010   	T$$MIN= 000000
NT$ROU= 000022   	N.ACNT  000116   	PF$UP = 000001   	RH.CNT= 000001   	VF$RCV= 100000
NT$RTI= 000010   	N.ACTL  000114   	PROACK  001236R     002	RH.EFM= 000020   	VF$XMT= 040000
NT$RTN= 000000   	N.DDL1  000012   	PRODS = ****** GX	RH.HDR= 000002   	V$FLG   000000
NT$SNG= 000006   	N.DDL2  000016   	PS$NTI= 000003   	RH.PRI= 000014   	V$LEN   000022
NT$STP= 000004   	N.DDS1  000014   	PS$OFF= 000000   	RH.PR1= 000004   	V$RCV   000002
NT$XOF= 000020   	N.DDS2  000020   	PS$STR= 000001   	RH.RFM= 000100   	V$XMT   000012
NT$XON= 000016   	N.DFMT  000010   	PS$UP = 000005   	R$$DER= 000000   	V$$CTR= 001000
NT.ACK= 000001   	N.DGRP  000012   	PS$VER= 000004   	R$$K11= 000001   	WINDOW= 004000
NT.BOM= 000040   	N.DOBJ  000011   	PS$WT = 000002   	R$$SND= 000000   	X$$DBT= 000000
NT.EOM= 000100   	N.DUSR  000014   	P$CHN   000004   	R$$11M= 000000   	$NSDDB= ****** GX
NT.FCN= 037400   	N.LGTH= 000160   	P$CNT   000005   	SNDAKD= ****** GX	$QDATR= ****** GX
NT.MD1= 000420   	N.NODE  000000   	P$FRQ   000012   	SNDAKI= ****** GX	$QIFC = ****** GX
NT.MFL= 000002   	N.OPDL  000136

. ABS.	000160	   000
      	000000	   001
NSPRC 	001320	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  18050 WORDS  ( 71 PAGES)
DYNAMIC MEMORY:  19564 WORDS  ( 75 PAGES)
ELAPSED TIME:  00:00:48
NSPRC,[131,34]NSPRC/CR/-SP=[130,10]NETLIB/ML,RSXMC4/PA:1,[131,10]NSPRC
NSPRC      CREATED BY  MACRO  ON 13-OCT-79 AT 10:04	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ACKNSP	= ******  GX	 13-660    
CHKNMS	  001122 RG	 8-397      8-420     #10-542    
CHKNUM	  001126 R	#10-544     11-591    
CTLCMN	  000070 R	#5-148     
C.BUF 	  000014	 4-101      6-211     *6-214     
C.BUF2	  000024	*5-148     
C.CNT 	  000020	 4-102     *6-212     
C.FLG 	  000022	*6-193     
C.FLG1	  000022	*5-150     
C.FLG2	  000032	*5-149     
C.LIN 	  000006	*6-232     
C.MOD 	  000011	 5-145     *5-146     *6-196     *6-209      6-233     
C.NSP 	  000004	 6-193     *6-216     *6-217     *6-218     
C.RSV 	  000002	*5-145     
C.STS 	  000012	*4-101     *4-102     *6-197     *6-198     
DATACK	  001156 R	 9-503     #11-577    
DESLNK	= ******  GX	 7-363      9-510     
DODC  	= ******  GX	 6-267      9-514     
EMRCTR	= ******  GX	 6-257      6-266     
ER$GEN	= 000007	 9-509     
ER$IFC	= 000030	 7-362     
GETBIN	= ******  GX	 8-389      9-490     
GETEX1	= ******  GX	 4-103      7-301     
GIVUSR	= ******  GX	 6-245     
LA.ACK	= 100000	 6-203      8-407      8-428     
LA.MSK	= 170000	 6-202      6-218      8-413      8-433      10-544     10-545    
LA.NMS	= 010000	 10-549     11-589     13-661    
LA.RES	= 060000	 9-491     
LF.HF0	= 001000	 7-311      7-321     
LF.HMF	= 020000	 7-348     
LF.INR	= 000100	 13-689    
LF.NKR	= 000200	 13-684    
LF.NKS	= 000400	 8-398      8-411     
LF.NTS	= 002000	 6-256     
LS.FCC	= 000004	 7-330     
LS.FC0	= 000001	 7-309     
LS.FC1	= 000002	 7-319     
LS.RES	= 000360	 7-303     
L.FLG 	  000012	*6-256     *7-311     *7-321      7-348      8-398     *8-411     *13-684    *13-689    
L.LDA 	  000024	 11-581    
L.LIA 	  000026	 11-585    
L.LNO 	  000022	 8-417      8-419     *8-432     *8-433     
L.LSA 	  000032	*6-201     *6-202     *6-203     *8-428     
L.NIN 	  000016	 11-586    
L.NXN 	  000014	 11-582    
L.PDV 	  000041	 6-227      7-338     
L.RLA 	  000010	 6-184      9-464     
L.RNO 	  000020	 6-216      8-394      8-396     *8-412     *8-413     
L.TC  	  000042	*7-334      7-352     *7-356     
L.TIPD	  000005	 13-685    
L.TIPI	  000004	 13-690    
L.ULA 	  000040	 6-232      7-342     
NSPRC      CREATED BY  MACRO  ON 13-OCT-79 AT 10:04	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

L.USA 	  000030	*8-407     
MD.ILS	= 000040	 6-205     
MD.IM 	= 000020	 6-194      8-391      11-578     13-682    
NAKNSP	= ******  GX	 13-687    
NOTUSR	= ******  GX	 7-367     
NT$DAT	= 000002	 6-196     
NT$INT	= 000004	 6-209      6-233     
NT.BOM	= 000040	 6-198     
NT.EOM	= 000100	 6-198     
N$STS 	  000042	 6-220     
N$$ICF	= ******	 3-1        3-2        5-136      8-402      8-423      13-664    
N$$LV2	= ******	 7-313      9-469      9-494      12-612    
N$$SYS	= 000001	 3-65       6-226      6-244      7-337     
N$$USR	= 000001	 3-65       6-226      6-231     
PROACK	  001236 R	 9-505     #13-660    
PRODS 	= ******  GX	 6-180      9-462     
QNSPA 	= ******  GX	 5-153      6-236     
RCDAK 	  001044 RG	 6-189     #9-486     
RCVACK	  001020 RG	 4-116     #9-462     
RCVCTL	  000056 R	 4-117     #5-145     
RCVDAT	  000114 RG	 4-115     #6-180     
RCVLS 	  000434 RG	 6-207     #7-300     
RCVMSG	  000000 RG	#4-101     
RCVSEG	  000640 RG	 6-191     #8-388     
RCVTBL	  000044 R	 4-110     #4-115     
RETLS 	= ******  GX	 13-692    
SNDAKD	= ******  GX	 8-408     
SNDAKI	= ******  GX	 6-204      8-429     
ST$CIS	= 000001	 6-182     
ST$DAT	= 000005	 6-186      9-466     
S$UMR 	  000004	*6-221     *6-223     
TOSS  	  000054 R	 4-104      4-106      4-118     #4-123     
WINDOW	= 004000	 10-542    
$NSDDB	= ******  GX	 6-219     
$QDATR	= ******  GX	 6-239     
$QIFC 	= ******  GX	 7-343     
NSPRC      CREATED BY  MACRO  ON 13-OCT-79 AT 10:04	PAGE 3

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

CALL  		 4-103      6-180      6-189      6-191      6-204      6-236      6-239      6-245      6-266      7-301     
                 7-343      7-363      7-367      8-389      8-397      8-408      8-420      8-429      9-462      9-490     
                 9-503      9-505      9-510      11-591     13-660    
CALLR 		#4-110     #5-153     #6-207     #6-257     #6-267     #9-514     #13-687    #13-692    
CCBDF$		#3-60      #3-61      
MAP   		#3-58      
NSPSY$		#3-60      #3-62      
RESMAP		#3-58      
RESRG 		#3-59       8-438      11-592    
RETURN		 4-123      6-248      7-368      8-439      9-507      9-512      10-556     11-593     13-694    
SAVMAP		#3-58      
SAVRG 		#3-59       8-388      11-577    
$MVTBF		#3-59