Google
 

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

     4-  130	GENERAL QUEUE MANIPULATION ROUTINES
     4-  131	ADDQUE - ADD AN ELEMENT TO A LIST
     4-  161	POPQUE - REMOVE AN ELEMENT FROM A LIST
     6-  194	CHKUSR - GET AN LLT ADDRESS FROM A USER REQUEST
     6-  210	GETLNK - GET AN LLT ADDRESS FROM AN LLA
     7-  241	BINPUT - STORE BINARY BACKWARDS
     7-  271	GETBIN - GET BINARY
     8-  298	SKPIMG - SKIP OVER AN IMAGE FIELD
     9-  317	GETEX1 - GET AN EXTENSIBLE DATA BYTE
    10-  353	GIVUSR,PSTUSR,RETUSR
    11-  399	PRODS - PROCESS DESTINATION AND SOURCE LINK ADDRESSES
    12-  473	BLDMSG - BUILD DESTINATION  & SOURCE LINK ADDRESSES
    12-  505	PUTBIN - STORE BINARY VALUE IN A MESSAGE
    13-  529	LOGICAL LINK TABLE DEALLOCATION ROUTINES
    13-  530	REMLNK - REMOVE AN LLT WITH A NODE ASSIGNMENT
    13-  531	REMLKA - REMOVE AN LLT
    14-  588	NODE DESCRIPTOR MANIPULATION ROUTINES
    14-  589	GTNOD - FIND A NODE NAME WHICH MATCHES A MESSAGE NODE NAME
    14-  628	SRNOD - SEARCH FOR A NODE NAME
    15-  717	RMUSE - REMOVE A LOGICAL LINK FROM A NODE
    15-  754	RMNOD - CONDITIONALLY REMOVE A NODE NAME
    16-  779	REMSYS
    17-  835	REMUSR - RETURN UNACKNOWLEDGED I/LS MESSAGES
    18-  872	COMMON PROTOCOL MESSAGE BUILDING ROUTINES
    18-  873	DODC   - SEND A DISCONNECT CONFIRM
    19-  934	SNDDI - SEND A DISCONNECT INITIATE
    20-  974	RECOVR - RESOURCE RECOVERY ENTRY FOR DATA STATE
    20- 1015	RECOV1 - ACK/NAK REQUIRED FOR DATA & I/LS SUBCHANNELS
    21- 1050	SNDLS  - SEND A LINK SERVICE FOR DATA
    21- 1051	SNILS  - SEND A LINK SERVICE FOR INTERRUPT
    22- 1126	SNDAKD - SEND AN ACK/NAK FOR DATA
    22- 1127	SNDAKI - SEND AN ACK/NAK FOR I/LS
    24- 1220	NAKICF - SPECIAL INTERCEPT NAK ROUTINE
    25- 1272	MESSAGE TRANSMISSION ROUTINES
    25- 1273	SNDMDC - SEND MESSAGE NOT ASSOCIATED WITH AN LLT
    25- 1274	SNDMSI - SEND MESSAGE FOR I/LS SUBCHANNEL
    25- 1275	SNDMSG - SEND MESSAGE FOR DATA SUBCHANNEL
    25- 1276	SNDALT - SEND MESSAGE COMMON PROCESSING
    26- 1349	RTHDR  - BUILD A ROUTE HEADER
    27- 1413	SETPLD - MAP TO THE PLD ENTRY FOR A LINE
    28- 1439	SNDLOW - FORWARD A MESSAGE TO THE DLC
    29- 1470	BUFFER ALLOCATION AND DEALLOCATION ROUTINES
    29- 1471	GETSMR - ALLOCATE A MESSAGE BUFFER
    29- 1472	GETSM1 - ALLOCATE A MESSAGE BUFFER SUBJECT TO THRESHOLD
    30- 1531	GETSMS - ALLOCATE A SMALL DATA BUFFER
    30- 1562	CTRES  - COUNT RESOURCE ALLOCATION FAILURES
    31- 1588	FRBDAT - DECREMENT DATA COUNT AND FREE BUFFER
    31- 1589	FRBILS - DECREMENT ILS COUNT AND FREE MESSAGE BUFFER
    31- 1617	RLSBUF - RELEASE A MESSAGE BUFFER ON BUFFER ID
    31- 1641	UNSPWN - RETURN A MESSAGE BUFFER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 3


      1						.IIF DF N$$ICF,  .TITLE	NSPSCI
      2						.IIF NDF N$$ICF, .TITLE	NSPSBC
      3						.IDENT	/X01.26/
      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					;
     26					; MODULE DESCRIPTION:
     27					;
     28					;	NSP COMMON SUBROUTINES (DRIVER)
     29					;
     30					;
     31					; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
     32					;
     33					; IDENT HISTORY:
     34					;
     35					; 1.00	10-FEB-78
     36					;	VERSION 2.0 RELEASE
     37					;
     38					; MODIFICATIONS:
     39					;
     40					;	LW0001	2-MAY-78  LEE WEBBER
     41					;		ADD INTERCEPT CODE TO THE TWO "SEND ACK" ROUTINES
     42					;	LW0002	7-MAY-78  LEE WEBBER
     43					;		ELIMINATE NODE NAME CHECKING IN "PRODS" FOR LINKS
     44					;		WITHOUT ROUTING HEADERS
     45					;	LW0003	10-MAY-78 LEE WEBBER
     46					;		ADD ROUTINE TO NAK SEGMENT 0 ON AN INTERCEPT LINK
     47					;		(FOR DATA RECEIVED BEFORE CONNECT DONE)
     48					;	LW0004	10-MAY-78 LEE WEBBER
     49					;		DOCUMENTATION CORRECTION
     50					;	LW0005	12-MAY-78 LEE WEBBER
     51					;		ADDITION OF INTERCEPT CODE TO THE RESOURCE
     52					;		RECOVERY ROUTINE
     53					;	LW0006	19-MAY-78 LEE WEBBER
     54					;		ENHANCE SYSTEM INTERFACE CODE
     55					;	AP0007	21-DEC-77 ALAN D. PECKHAM
     56					;		CHANGE $LLCMP CALL TO $LLCRS.
     57					;	AP0008	1-MAY-78  ALAN D. PECKHAM
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 3-1


     58					;		ALTER INPUT PARAMETERS TO SNDLS.
     59					;	MN0009	6-JUN-78  MAYNARD
     60					;		FIX INTERCEPT PROBLEM IN SDC
     61					;	AP0010	9-JUN-78  ALAN D. PECKHAM
     62					;		ADD RESOURCE RECOVERY TO NOTUSR.
     63					;	AP0011	24-OCT-78 ALAN D. PECKHAM
     64					;		CORRECT BUFFER RESET ROUTINES.
     65					;		MERGE REMXQ* ROUTINES TO REMSYS
     66					;		AND FIX TO RETURN LS MESSAGES TO SYSTEM.
     67					;	LW0012	09-JAN-79 LEE WEBBER
     68					;		FALSE NODE INIT MODIFICATIONS
     69					;	LW0013	12-FEB-79 LEE WEBBER
     70					;		PUT IN CRASH ON NEGATIVE USE COUNT FOR NODE
     71					;	AP0014	13-FEB-79 ALAN D. PECKHAM
     72					;		PUT IN COUNTER FOR NAKS SENT
     73					;		AND CORRECT INTERCEPT NAK TESTS
     74					;	LW0015	14-FEB-79 LEE WEBBER
     75					;		ADD CODE TO DODC TO SUPPORT "DCICF" CASE (TRAUMATIC
     76					;		DC FOR AN INTERCEPT LINK)
     77					;	AP0016	20-FEB-79 ALAN D. PECKHAM
     78					;		FIX BUG IN COUNTER CODE
     79					;	LW0017	26-FEB-79  LEE WEBBER
     80					;		DON'T TRY TO KILL LLT FOR DC WHICH DOESN'T HAVE AN
     81					;		ASSOCIATED LINK
     82					;	LW0018	8-MAR-79   LEE WEBBER
     83					;		ADD CODE TO SEND A DC TO A MESSAGE WITHOUT A ROUTING
     84					;		HEADER; SEND IT OVER THE SAME LINE IT CAME IN ON
     85					;	LW0019	9-MAR-79  LEE WEBBER
     86					;		MODIFY INTERFACE TO "GTNOD" AND "RMNOD"
     87					;	LW0020	11-APR-79  LEE WEBBER
     88					;		ADDITION TO #19
     89					;	LW0021	11-APR-79  LEE WEBBER
     90					;		FIX IN "SRNOD" SO THAT THE SAME ENTRY ISN'T PICKED UP
     91					;		FIRST AS A FREE ENTRY AND THEN AS A MATCH
     92					;	AP0022	22-MAY-79 ALAN D. PECKHAM
     93					;		SNDAKD AND SNDAKI CAN NOT BE CALLED FOR INTERCEPT LINKS.
     94					;		REWRITE NAKICF ROUTINE.
     95					;	AP0023	28-MAY-79 ALAN D. PECKHAM
     96					;		FIX BUG INTRODUCED IN NAKICF AND COVER OTHER SNDAK(D!I) CASE.
     97					;	LW0024	11-JUL-79  LEE WEBBER
     98					;		FIX "SNDMSG" SO LOCAL DESTINATION LINKS DON'T HAVE TO
     99					;		HAVE A PHYSICAL LINE; MAKE "SETPLD" GLOBAL
    100					;	AP0025	7-AUG-79  ALAN D. PECKHAM
    101					;		FIX SRNOD TO PICK UP THE TEMPORARY NODE ENTRY CORRECTLY
    102					;	AP0026	16-AUG-79 ALAN D. PECKHAM
    103					;		FIX SRNOD TO ENTER THE GIVEN NODE NAME IN A NEW RESERVED
    104					;		NODE ENTRY. THUS IF DODC GETS IT IT WILL BE ABLE TO USE
    105					;		IT TO CONSTRUCT THE ROUTING HEADER PROPERLY.
    106					;		ADD ROUTINE "DODCR" FOR INTERCEPT USE WHICH DOES A DODCI
    107					;		FOLLOWED BY ATTEMPTS TO REMOVE THE SRC AND DST NODES.
    108					;
    109
    110					; EXTERNAL MACRO DEFINTIONS
    111					;
    112
    113						.MCALL	SAVMAP,MAP,RESMAP
    114						.MCALL	SAVRG,RESRG
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 3-2


    115						.MCALL	STOPDV,STOULA                                                   ;AP0007
    116						.MCALL	$QDLC,$QLLC
    117						.MCALL	$MVTBF,$MVFBF
    118						.MCALL	CCBDF$,NSPSY$
    119	000000					CCBDF$			; DEFINE THE CCB OFFSETS
    120	000000					NSPSY$			; DEFINE THE NSP SYMBOLS
    121
    122
    123						.IF NDF	N$$SYS&N$$USR
    124						N$$SYS=1		;IF NEITHER INTERFACE IS SPECIFIED
    125									;THEN DEFAULT TO SYSTEM INTERFACE
    126						.ENDC
    127
    128	000000					.PSECT	NSPSBC
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 4
GENERAL QUEUE MANIPULATION ROUTINES

    130						.SBTTL	GENERAL QUEUE MANIPULATION ROUTINES
    131						.SBTTL	ADDQUE - ADD AN ELEMENT TO A LIST
    132					;+
    133					; **-ADDQUE-ADD AN ELEMENT TO A LIST
    134					;
    135					; THIS SUBROUTINE IS CALLED TO ADD A CCB TO A SINGLELY LINKED LIST.
    136					;
    137					; INPUTS:
    138					;	 R3 = ADDRESS OF QUEUE HEADER
    139					;	 R5 = ADDRESS OF CCB
    140					;
    141					; OUTPUTS:
    142					;
    143					;	AS DESCRIBED ABOVE
    144					;
    145					; REGISTERS MODIFIED:
    146					;
    147					;	NONE
    148					;
    149					;-
    150
    151	000000				ADDQUE::SAVRG	<R3,R4>		; SAVE REGISTERS
    152	000004	010304 			10$:	MOV	R3,R4		; SEARCH FOR END OF
    153	000006	011303 				MOV	(R3),R3		; THE CCB LIST
    154	000010	001375 				BNE	10$		; THEN ADD THE
    155	000012	010514 				MOV	R5,(R4)		; CCB TO IT
    156	000014	005015 				CLR	(R5)		; CLEAR POINTER TO NEXT CCB
    157	000016					RESRG	<R4,R3>		; RESTORE REGISTERS
    158	000022					RETURN			; RETURN
    159
    160
    161						.SBTTL	POPQUE - REMOVE AN ELEMENT FROM A LIST
    162					;+
    163					; **-POPQUE-REMOVE AN ELEMENT FROM A LIST
    164					;
    165					; THIS SUBROUTINE IS CALLED TO REMOVE A CCB FROM A SINGLELY LINKED LIST.
    166					;
    167					; INPUTS:
    168					;
    169					;	R3 = ADDRESS OF THE QUEUE LISTHEAD
    170					;
    171					; OUTPUTS:
    172					;
    173					;	C-BIT CLEAR:
    174					;	R5 = ADDRESS OF THE CCB DEQUEUED
    175					;
    176					;	C-BIT SET:
    177					;	NO ELEMENTS TO DEQUEUE
    178					;
    179					; REGISTERS MODIFIED:
    180					;
    181					;	NONE
    182					;
    183					;-
    184	000024	011305 			POPQUE::MOV	(R3),R5		; R5=TOP ELEMENT FROM QUE
    185	000026	001403 				BEQ	10$		; YES  GIVE RESOURCE ERROR
    186	000030	011513 				MOV	(R5),(R3)	; SET NEW FIRST POINTER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 4-1
POPQUE - REMOVE AN ELEMENT FROM A LIST

    187	000032	005015 				CLR	(R5)		; CLEAR POINTER TO NEXT CCB (CLEARS C-BIT)
    188	000034					RETURN			; RETURN TO CALLER
    189
    190	000036	000261 			10$:	SEC			; SET C-BIT
    191	000040					RETURN			; RETURN
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 6
CHKUSR - GET AN LLT ADDRESS FROM A USER REQUEST

    194						.SBTTL	CHKUSR - GET AN LLT ADDRESS FROM A USER REQUEST
    195					;+
    196					; **-CHKUSR-GET THE LOGICAL LINK TABLE ADDRESS FROM A USER REQUEST
    197					;
    198					; INPUTS:
    199					;
    200					;	R5 = ADDRESS OF A CCB WHICH CONTAINS THE LLA IN 'C.LIN'.
    201					;
    202					; OUTPUTS:
    203					;
    204					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    205					;-
    206
    207	000042	116500 	000006 		CHKUSR::MOVB	C.LIN(R5),R0	; GET THE LLA
    208
    209
    210						.SBTTL	GETLNK - GET AN LLT ADDRESS FROM AN LLA
    211					;+
    212					; **-GETLNK-GET THE LOGICAL LINK TABLE ADDRESS
    213					;
    214					; INPUTS:
    215					;
    216					;	R0 = LOGICAL LINK ADDRESS
    217					;
    218					; OUTPUTS:
    219					;
    220					;	C-BIT CLEAR:
    221					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    222					;
    223					;	C-BIT SET:
    224					;	R0 = UNDEFINED
    225					;-
    226
    227	000046				GETLNK::SAVRG	<R1>		; SAVE R1
    228	000050	042700 	177400 			BIC	#177400,R0	; REMOVE ANY TRASH FROM THE HIGH BYTE
    229	000054	016701 	000000G			MOV	$NSDDB,R1	; COMPUTE THE ADDRESS OF THE LLT DESCRIPTOR
    230	000060	062701 	000022 			ADD	#N$LVC,R1	; ...
    231	000064	022100 				CMP	(R1)+,R0	; IS THE LLA WITHIN REASON ?
    232	000066	103404 				BLO	10$		; IF LO, NO - ERROR
    233	000070	006300 				ASL	R0		; MAKE THE LLA A WORD INDEX (CLEAR C-BIT)
    234	000072	061100 				ADD	(R1),R0		; COMPUTE THE OFFSET INTO THE LLT ADDRESS TABLE
    235	000074	011000 				MOV	(R0),R0		; GET THE LLT ADDRESS
    236	000076	001001 				BNE	20$		; IF NE, THE LLT EXISTS - R0 HAS THE ADDRESS
    237	000100	000261 			10$:	SEC			; LLT DOESN'T EXIST - INDICATE THE ERROR
    238	000102				20$:	RESRG	<R1>		; RESTORE R1
    239	000104					RETURN			; RETURN TO THE CALLER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 7
BINPUT - STORE BINARY BACKWARDS

    241						.SBTTL	BINPUT - STORE BINARY BACKWARDS
    242					;+
    243					; **-BINPUT-STORE A BINARY VALUE IN A MESSAGE BACKWARDS
    244					;
    245					; NOTE THAT THIS ROUTINE USES THE FACT THAT CALLING THE NEXT INSTRUCTION
    246					; CAUSES THE ALL THE INSTRUCTIONS UP TO AND INCLUDING THE NEXT RETURN
    247					; INSTRUCTION TO BE EXECUTED TWICE.  IN ALL THE PROTOCOL MESSAGES, THE
    248					; HIGH BYTE OF A 16 BIT BINARY VALUE FOLLOWS THE LOW BYTE.
    249					;
    250					; INPUTS:
    251					;
    252					;	R1 = BINARY VALUE
    253					;	R4 = MESSAGE POINTER (ONE AFTER LOCATION WHERE THE BINARY VALUE
    254					;		WILL BE STORED).
    255					;
    256					; OUTPUTS:
    257					;
    258					;	R4 = MESSAGE POINTER MINUS 2
    259					;
    260					; REGISTERS MODIFIED:
    261					;
    262					;	NONE
    263					;-
    264
    265	000106				BINPUT::CALL	(PC)		; EXECUTE THE NEXT INSTRUCTION SEQUENCE TWICE
    266	000110	000301 				SWAB	R1		; GET THE HIGH BYTE WHICH IS STORED FIRST
    267	000112	110144 				MOVB	R1,-(R4)	; STORE IT IN THE MESSAGE
    268	000114					RETURN			; DO IT AGAIN FOR THE LOW BYTE, THEN RETURNS
    269
    270
    271						.SBTTL	GETBIN - GET BINARY
    272					;+
    273					; **-GETBIN-GET A BINARY VALUE FROM A MESSAGE
    274					;
    275					; THIS ROUTINE USES THE SAME TECHNIQUE AS DESRIBED FOR BINPUT
    276					;
    277					; INPUTS:
    278					;
    279					;	R4 = MESSAGE POINTER
    280					;
    281					; OUTPUTS:
    282					;
    283					;	R1 = BINARY VALUE FROM THE NEXT TWO BYTES OF THE MESSAGE
    284					;	R4 = MESSAGE POINTER PLUS 2
    285					;
    286					; REGISTERS MODIFIED:
    287					;
    288					;	NONE
    289					;-
    290
    291	000116	005001 			GETBIN::CLR	R1		; INITIALLY A ZERO (WANT TO AVOID SIGN EXTENTION)
    292	000120					CALL	(PC)		; EXECUTE THE NEXT SEQUENCE OF INSTRUCTIONS TWICE
    293	000122	152401 				BISB	(R4)+,R1	; GET THE FIRST BYTE
    294	000124	000301 				SWAB	R1		; SAVE IT IN THE HIGH BYTE
    295	000126					RETURN			; DO IT AGAIN TO GET THE HIGH BYTE AND RETURN
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 8
GETBIN - GET BINARY

    297
    298						.SBTTL	SKPIMG - SKIP OVER AN IMAGE FIELD
    299					;+
    300					; **-SKPIMG-SKIP AN IMAGE FIELD
    301					;
    302					; INPUTS:
    303					;
    304					;	R4 = POINTER TO LENGTH OF IMAGE FIELD
    305					;
    306					; OUTPUTS:
    307					;
    308					;	R4 = POINTS PAST IMAGE FIELD
    309					;-
    310
    311	000130	005046 			SKPIMG::CLR	-(SP)		; CLEAR A TEMPORARY WORD
    312	000132	112416 				MOVB	(R4)+,(SP)	; GET THE LENGTH OF THE FIELD
    313	000134	062604 				ADD	(SP)+,R4	; POINT BEYOND THE LAST BYTE
    314	000136					RETURN			; RETURN TO CALLER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 9
SKPIMG - SKIP OVER AN IMAGE FIELD

    316
    317						.SBTTL	GETEX1 - GET AN EXTENSIBLE DATA BYTE
    318					;+
    319					; **-GETEX1-GET AN EXTENSIBLE DATA BYTE
    320					;
    321					; THIS SUBROUTINE IS CALLED TO GET AN EXTENSIBLE DATA BYTE FROM A
    322					; MESSAGE AND RETURN AN ERROR CONDITION IF THE EXTENSIBLE FIELD IS
    323					; LONGER THAN ONE BYTE.
    324					;
    325					; INPUTS:
    326					;
    327					;	R4 = POINTER TO THE MESSAGE
    328					;
    329					; OUTPUTS:
    330					;
    331					;	R4 = INPUT MESSAGE POINTER + 1
    332					;
    333					;	C-BIT CLEAR:
    334					;	R1 = DATA BYTE
    335					;
    336					;	C-BIT SET:
    337					;	R1 IS UNDEFINED, FIELD EXTENSION ERROR
    338					;
    339					;
    340					; REGISTERS MODIFIED:
    341					;
    342					;	NONE
    343					;
    344					;-
    345
    346	000140	112401 			GETEX1::MOVB	(R4)+,R1	; GET A BYTE OF DATA FROM THE MESSAGE
    347	000142	000241 				CLC			; ASSUME THAT IT'S NOT EXTENDED
    348	000144	100001 				BPL	10$		; IF PL, EXTENSION BIT IS NOT SET - EXIT
    349	000146	000261 				SEC			; OTHERWISE INDICATE ERROR
    350	000150				10$:	RETURN			; RETURN TO CALLER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 10
GETEX1 - GET AN EXTENSIBLE DATA BYTE

    352						.IF DF	N$$SYS
    353						.SBTTL	GIVUSR,PSTUSR,RETUSR
    354					;++
    355					;  GIVUSR
    356
    357					; INPUTS:
    358					;	R5=CCB ADDRESS
    359					;	R4=COMPLETION STATUS
    360					;	R0=LLT/0
    361
    362					; OUTPUTS:
    363					;	R5=0
    364
    365					;	THIS ROUTINE GIVES A CCB TO A USER WITH A FUNCTION
    366					;	OF RECEIVE COMPLETE.
    367					;--
    368						.ENABL	LSB
    369	000152				GIVUSR::
    370	000152					SAVRG	<R1>
    371	000154	012701 	000014 			MOV	#FC.RCP,R1	;RECV CMPLT CODE
    372	000160	000411 				BR	6$
    373	000162				PSTUSR::
    374	000162					SAVRG	<R1>
    375	000164	012701 	000020 			MOV	#FC.CCP,R1	;CTL COMPLETE
    376	000170	000403 				BR	5$
    377	000172				RETUSR::
    378	000172					SAVRG	<R1>
    379	000174	012701 	000012 			MOV	#FC.XCP,R1	;XMIT CMPLT CODE
    380	000200	010465 	000012 		5$:	MOV	R4,C.STS(R5)	;SET COMPLETION STATUS
    381	000204	005700 			6$:	TST	R0		;DOES AN LLT EXIST ?
    382	000206	001411 				BEQ	10$		;IF EQ, NO - DON'T SET UP A PDV AND CHANNEL
    383	000210					STOPDV	L.PDV(R0)	;PUT PDV IN CCB
    384	000224					STOULA	L.ULA(R0)	;PUT ULA OR 0 IN CCB
    385	000232				10$:	SAVRG	<R4>
    386	000234	010504 				MOV	R5,R4		;COMM EXEC REG CONVENTION
    387	000236	110164 	000010 			MOVB	R1,C.FNC(R4)	;STORE FUNCTION CODE
    388	000242					CALL	$LLCRS		;POST COMPLETION TO SYSTEM USER                 ;AP0007
    389	000246	005005 				CLR	R5		;CLEAR R5 & C-BIT CLEAR                         ;**-1
    390	000250					RESRG	<R4>
    391	000252					RESRG	<R1>
    392	000254					RETURN
    393
    394						.DSABL	LSB
    395
    396						.ENDC
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 11
GIVUSR,PSTUSR,RETUSR

    398
    399						.SBTTL	PRODS - PROCESS DESTINATION AND SOURCE LINK ADDRESSES
    400					;+
    401					; **-PRODS-GET SOURCE AND DESTINATION LINK ADDRESSES
    402					;
    403					; THIS ROUTINE EXTRACTS THE SOURCE AND DESTINATION LOGICAL LINK
    404					; ADDRESSES FROM THE MESSAGE.  IT LOOKS FOR THE LOGICAL LINK
    405					; ADDRESSED BY THE DESTINATION LINK ADDRESS AND IF THE LINK EXISTS,
    406					; VERIFIES THAT THE REMOTE NODE IS THE EXPECTED ONE.
    407					;
    408					; INPUTS:
    409					;
    410					;	R4 = MSG PTR [DESTADDR]
    411					;	R3 = POINTER TO SOURCE NODE NAME
    412					;	R2 = SWITCH FOR SOURCE NODE (INTERCEPT ONLY)
    413					;
    414					; OUTPUTS:
    415					;
    416					;	R4 = MSG PTR [FIELD AFTER SRCADDR]
    417					;	C-BIT CLEAR:
    418					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    419					;	R1 = REMOTE LINK ADDRESS
    420					;
    421					;	C-BIT SET:
    422					;	R0 IS UNDEFINED, NO LOGICAL LINK TABLE
    423					;
    424					; THE ARGBLK IS FORMATTED AS FOLLOWS (C-CLEAR OR C-SET):
    425					;
    426					;	WD0 - REMOTE NODE INDEX (INPUT IN R3)
    427					;	WD1 - SOURCE LINK ADDRESS
    428					;	WD2 - DESTINATION LINK ADDRESS
    429					;	WD3 - ERROR CODE FOR A STATE ERROR (ER$STA)
    430					;
    431					;
    432					; REGISTERS MODIFIED:
    433					;
    434					;	NONE
    435					;-
    436
    437	000256				PRODS::	SAVRG	<R5>		; SAVE R5
    438	000260	016705 	000000G			MOV	$NSDDB,R5	; COMPUTE THE ADDRESS OF THE SCRATCH STORAGE
    439	000264	062705 	000012 			ADD	#N$TMP,R5	; ...AREA
    440	000270	010325 				MOV	R3,(R5)+	; STORE THE POINTER TO THE SOURCE NODE NAME
    441	000272					CALL	GETBIN		; GET THE DESTINATION LINK ADDRESS
    442	000276	010100 				MOV	R1,R0		; COPY IT FOR GETLNK
    443	000300					CALL	GETBIN		; GET SOURCE LINK ADDRESS
    444	000304	010125 				MOV	R1,(R5)+	; STORE SOURCE ADDRESS FOR A POSIBLE DC
    445	000306	010025 				MOV	R0,(R5)+	; STORE DESTINATION ADDRESS
    446	000310					CALL	GETLNK		; FIND THE LOGICAL LINK TABLE
    447	000314	103405 				BCS	40$		; IF CS, ERROR
    448	000316	026065 	000002 	177776 		CMP	L.LLA(R0),-2(R5) ; DOES THE DESTINATION LINK ADDRESS MATCH ?
    449	000324	001001 				BNE	40$		; IF NE, NO - MESSAGE IS FOR AN IDLE LINK
    450
    451						.IF DF	N$$ICF
    452
    453						TST	R3		; SOURCE NODE NAME GIVEN?                       ;LW0002
    454						BEQ	50$		; NO - MESSAGE HAS NO ROUTING HEADER            ;LW0002
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 11-1
PRODS - PROCESS DESTINATION AND SOURCE LINK ADDRESSES

    455						BIT	#LF.INT,(R0)	; IS THIS AN INTERCEPT LINK ?
    456						BEQ	20$		; IF EQ, NO - DO NORMAL SOURCE NAME CHECK
    457						CMPB	#ST$CIR,(R0)	; WAITING FOR CC ?
    458						BEQ	10$		; YES
    459						TST	R2		; LINK TO INTERCEPTED NODE ?
    460						BEQ	20$		; IF EQ, NO - DO THE NORMAL CHECK
    461					10$:	CMP	R3,I.IREM(R0)	; MSG ON CORRECT LINK ?
    462						BR	30$		; CHECK THE RESULTS
    463
    464					20$:	CMP	L.REM(R0),R3	; MESSAGE FROM CORRECT NODE ?                   ;MN0009
    465						.ENDC                                                                   ;MN0009
    466					                                                                                ;MN0009
    467	000326	001401 			30$:	BEQ	50$		; IF EQ, YES - (C-BIT IS CLEAR)                 ;**-3
    468	000330	000261 			40$:	SEC			; SET ERROR EXIT CONDITION CODE
    469	000332	012725 	000051 		50$:	MOV	#ER$STA,(R5)+	; ASSUME A STATE ERROR
    470	000336					RESRG	<R5>		; RESTORE R5
    471	000340					RETURN			; RETURN TO CALLER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 12
BLDMSG - BUILD DESTINATION  & SOURCE LINK ADDRESSES

    473						.SBTTL	BLDMSG - BUILD DESTINATION  & SOURCE LINK ADDRESSES
    474					;+
    475					; **-BLDMSG-BUILD LINK ADDRESSES IN THE MESSAGE
    476					;
    477					; THIS SUBROUTINE IS CALLED TO BUILD THE DESTINATION AND SOURCE
    478					; LINK ADDRESSES IN A MESSAGE FROM THE LOGICAL LINK TABLE. IN
    479					; ADDITION, THE CONTENTS OF R3 ARE STORED IN BINARY FORMAT FOLLOWING
    480					; THE LINK ADDRESSES.
    481					;
    482					; INPUTS:
    483					;
    484					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    485					;	R3 = BINARY VALUE TO BE STUFFED INTO THE MESSAGE
    486					;	R4 = POINTER TO THE MESSAGE
    487					;
    488					; OUTPUTS:
    489					;
    490					;	R4 = MESSAGE ADDRESS + 6
    491					;
    492					; REGISTERS MODIFIED:
    493					;
    494					;	R1
    495					;
    496					;-
    497
    498	000342	016001 	000010 		BLDMSG::MOV	L.RLA(R0),R1	; GET DESTINATION LINK ADDRESS
    499	000346					CALL	PUTBIN		; STORE IT IN THE MESSAGE
    500	000352	016001 	000002 			MOV	L.LLA(R0),R1	; GET THE SOURCE LINK ADDRESS
    501	000356					CALL	PUTBIN		; STORE IT IN THE MESSAGE
    502	000362	010301 				MOV	R3,R1		; COPY THE ADDITIONAL BINARY VALUE
    503									; STORE IT IN THE MESSAGE AND RETURN
    504
    505						.SBTTL	PUTBIN - STORE BINARY VALUE IN A MESSAGE
    506					;+
    507					; **-PUTBIN-STORE BINARY VALUE IN A MESSAGE
    508					;
    509					; INPUTS:
    510					;
    511					;	R1 = BINARY VALUE
    512					;	R4 = MESSAGE POINTER
    513					;
    514					; OUTPUTS:
    515					;
    516					;	THE BINARY VALUE IS MOVED INTO THE MESSAGE
    517					;	R4 = MESSAGE POINTER PLUS 2
    518					;
    519					; REGISTERS MODIFIED:
    520					;
    521					;	R1
    522					;-
    523
    524	000364	110124 			PUTBIN::MOVB	R1,(R4)+	; STORE LOW BYTE IN MESSAGE FIRST
    525	000366	000301 				SWAB	R1		; GET HIGH BYTE
    526	000370	110124 				MOVB	R1,(R4)+	; STORE IT IN THE MESSAGE NEXT
    527	000372					RETURN			; RETURN TO CALLER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 13
LOGICAL LINK TABLE DEALLOCATION ROUTINES

    529						.SBTTL	LOGICAL LINK TABLE DEALLOCATION ROUTINES
    530						.SBTTL	REMLNK - REMOVE AN LLT WITH A NODE ASSIGNMENT
    531						.SBTTL	REMLKA - REMOVE AN LLT
    532					;+
    533					; **-REMLNK-REMOVE AN LLT AND ITS NODE USE COUNT
    534					; **-REMLKA-REMOVE AN LLT
    535					;
    536					; THIS SUBROUTINE IS CALLED TO DEALLOCATE A LOGICAL LINK TABLE AND
    537					; CONDITIONALLY REMOVE THE NODE NAME TABLE ENTRY WHEN THE USE COUNT
    538					; BECOMES ZERO.
    539					;
    540					; INPUTS:
    541					;
    542					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    543					;
    544					; OUTPUTS:
    545					;
    546					;	THE LOGICAL LINK TABLE IS DEALLOCATED, THE POINTER TO IT IN THE
    547					;	LLT ADDRESS TABLE IS CLEARED, THE USE COUNT TO THE DESTINATION
    548					;	NODE IS DECREMENTED, AND IF ZERO AND THE THE NODE IS REMOTE OR
    549					;	MARKED FOR REMOVE THE NODE NAME TABLE ENTRY IS RELEASED.
    550					;
    551					; REGISTERS MODIFIED:
    552					;
    553					;	NONE
    554					;
    555					;-
    556						.ENABL LSB
    557
    558	000374	005700 			REMLNK::TST	R0		; IF THERE IS NO LLT ADDRESS,                   ;LW0017
    559	000376	001436 				BEQ	100$		; THERE IS NO LINK TO KILL                      ;LW0017
    560	000400					SAVRG	<R1,R2,R3>	; SAVE NEEDED REGISTERS                         ;LW0017
    561	000406					CALL	RMUSE		; DECREMENT USE COUNT AND CONDITIONALLY REMOVE N;**-1
    562	000412	000403 				BR	10$		;
    563
    564	000414				REMLKA::SAVRG	<R1,R2,R3>	; SAVE NEEDED REGISTERS
    565
    566	000422	016002 	000002 		10$:	MOV	L.LLA(R0),R2	; GET THE LOCAL LINK ADDRESS
    567	000426	042702 	177400 			BIC	#177400,R2	; REMOVE ENCODING FROM THE HIGH BYTE
    568	000432	006302 				ASL	R2		; MAKE IT A WORD INDEX
    569	000434	016701 	000000G			MOV	$NSDDB,R1	; COMPUTE THE ADDRESS INTO THE LLT ADDRESS
    570	000440	066102 	000024 			ADD	N$LVC+2(R1),R2	; ...TABLE
    571	000444	005012 				CLR	(R2)		; REMOVE THE POINTER TO THE LLT
    572
    573	000446	016101 	000044 			MOV	N$STS+2(R1),R1	; REDUCE THE CURRENT NUMBER OF LOGICAL LINKS
    574	000452	005361 	000022 			DEC	S$LNK(R1)	; ...
    575
    576						.IF DF	N$$LV2
    577						MOV	#L.LNG2,R1	; LENGTH OF LLT FOR LEVEL 2
    578						.IFF
    579	000456	012701 	000054 			MOV	#L.LNG1,R1	; LENGTH OF LLT FOR LEVEL 1
    580						.ENDC
    581
    582	000462					CALL	$DEACB		; RELEASE LLT
    583	000466					RESRG	<R3,R2,R1>	; RESTORE REGISTERS
    584	000474				100$:	RETURN			; RETURN TO CALLER                              ;LW0017
    585					                                                                                ;**-1
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 13-1
REMLKA - REMOVE AN LLT

    586						.DSABL	LSB
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 14
NODE DESCRIPTOR MANIPULATION ROUTINES

    588						.SBTTL	NODE DESCRIPTOR MANIPULATION ROUTINES
    589						.SBTTL	GTNOD - FIND A NODE NAME WHICH MATCHES A MESSAGE NODE NAME
    590					;+
    591					; **-GTNOD-FIND A NODE NAME
    592					;
    593					; THIS SUBROUTINE IS CALLED TO FIND A MATCH ON A NODE NAME RECEIVED IN
    594					; A MESSAGE WITH A NODE NAME IN THE NODE DATA BASE.
    595					;
    596					; INPUTS:
    597					;
    598					;	R3 = SEARCH TYPE                                                        ;LW0019
    599					;		0 - DO NOT RESERVE ANY FREE ENTRY RETURNED, AND RECOGNIZE       ;LW0019
    600					;		    NODE ENTRIES WHICH HAVE THE "DF$DWN" FLAG ON                ;LW0019
    601					;	    NOT 0 - RESERVE ANY FREE ENTRY RETURNED, AND SKIP NODE ENTRIES      ;LW0019
    602					;		    WITH "DF$DWN" ON                                            ;LW0019
    603					;	R4 = POINTER TO NODE NAME LENGTH
    604					;
    605					; OUTPUTS:
    606					;
    607					;	R4 = POINTER TO MESSAGE BEYOND NODE NAME
    608					;
    609					;	C-BIT CLEAR:
    610					;	R3 = POINTER TO NODE NAME ENTRY
    611					;
    612					;	C-BIT SET:
    613					;	R3 = POINTER TO FREE NODE NAME ENTRY
    614					;	THE FLAG 'DF$TMP' MAY BE TESTED TO DETERMINE IF THIS FREE ENTRY
    615					;	IS THE LAST FREE ENTRY.
    616					;
    617					; REGISTERS MODIFIED:
    618					;
    619					;	R0, R1                                                                  ;LW0019
    620					;                                                                               ;**-1
    621					;-
    622
    623	000476	112401 			GTNOD::	MOVB	(R4)+,R1	; GET THE LENGTH OF THE NODE NAME
    624	000500	010400 				MOV	R4,R0		; COPY THE POINTER TO THE NAME
    625	000502	060104 				ADD	R1,R4		; UPDATE THE MESSAGE POINTER
    626
    627
    628						.SBTTL	SRNOD - SEARCH FOR A NODE NAME
    629					;+
    630					; **-SRNOD-SEARCH FOR A NODE NAME
    631					;
    632					; THIS SUBROUTINE IS CALLED TO SEARCH THE NODE NAME DATA BASE FOR
    633					; A PARTICULAR NODE NAME.
    634					;
    635					; INPUTS:
    636					;
    637					;	R0 = ADDRESS OF THE NODE NAME STRING TO FIND
    638					;	R1 = LENGTH OF THE NODE NAME STRING
    639					;	R3 = SEARCH TYPE                                                        ;LW0019
    640					;		0 - DO NOT RESERVE ANY FREE ENTRY RETURNED, AND RECOGNIZE       ;LW0019
    641					;		    NODE ENTRIES WHICH HAVE THE "DF$DWN" FLAG ON                ;LW0019
    642					;	    NOT 0 - RESERVE ANY FREE ENTRY RETURNED, AND SKIP NODE ENTRIES      ;LW0019
    643					;		    WITH "DF$DWN" ON                                            ;LW0019
    644					;
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 14-1
SRNOD - SEARCH FOR A NODE NAME

    645					; OUTPUTS:
    646					;
    647					;	C-BIT CLEAR:
    648					;	R3 = POINTER TO THE NODE NAME IN THE NODE DATA BASE
    649					;
    650					;	C-BIT SET:
    651					;	R3 = POINTER TO A FREE ENTRY IN THE NODE NAME DATA BASE
    652					;	THE FLAG 'DF$TMP' MAY BE TESTED TO DETERMINE IF THIS IS
    653					;	THE LAST FREE ENTRY.
    654					;
    655					; REGISTERS MODIFIED:
    656					;
    657					;	NONE
    658					;
    659					;-
    660
    661	000504				SRNOD::	SAVRG	<R2,R1,R0,R3>	; SAVE THE REGISTERS TO BE USED                 ;LW0019
    662	000514	016703 	000000G			MOV	$NSDDB,R3	; COMPUTE THE ADDRESS OF THE NODE NAME          ;**-1
    663	000520	062703 	000032 			ADD	#N$NOD,R3	; ...DATA BASE
    664	000524	012302 				MOV	(R3)+,R2	; GET THE NUMBER OF NODE NAME ENTRIES
    665	000526	011303 				MOV	(R3),R3		; GET THE ADDRESS OF THE NODE NAME DATA BASE
    666	000530	005046 				CLR	-(SP)		; RESERVE STORAGE FOR THE FREE POINTER
    667	000532	005766 	000002 		10$:	TST	2(SP)		; IF REQUESTED                                  ;LW0019
    668	000536	001403 				BEQ	12$		;   TO DO SO,                                   ;LW0019
    669	000540	032713 	005000 			BIT	#<DF$DWN!DF$LNK>,(R3) ;SKIP THIS ENTRY                          ;LW0019
    670	000544	001033 				BNE	60$		;    IF ITS LINE IS DOWN                        ;LW0019
    671	000546	032713 	072000 		12$:	BIT	#<DF$FRE!DF$RES>,(R3) ; IS THIS A FREE ENTRY?                   ;LW0019
    672	000552	001425 				BEQ	50$		; IF EQ, YES - SAVE THIS ADDRESS                ;**-1
    673	000554	032713 	070000 			BIT	#<DF$FRE>,(R3)	; IS THIS A RESERVED BLANK ENTRY?               ;LW0021
    674	000560	001425 				BEQ	60$		; YES - IT CAN'T COUNT AS A MATCH               ;LW0021
    675	000562	010346 				MOV	R3,-(SP)	; SAVE THE ADDRESS IN THE TABLE
    676	000564	062703 	000005 			ADD	#D$LNG,R3	; POINT TO THE NODE NAME LENGTH
    677	000570	122301 				CMPB	(R3)+,R1	; IS THERE A CHANCE THAT THE NAMES MATCH ?
    678	000572	001013 				BNE	40$		; IF NE, LENGTHS ARE DIFFERRENT - SO NO
    679	000574	122320 			20$:	CMPB	(R3)+,(R0)+	; DO THESE CHARACTERS MATCH ?
    680	000576	001005 				BNE	30$		; IF NE, NO - THE STRINGS DON'T EITHER
    681	000600					SOB	R1,20$		; CHECK EACH CHARACTER IN THE STRING
    682	000604	012616 				MOV	(SP)+,(SP)	; SET THE ADDRESS WHERE THE MATCH OCCURRED
    683	000606	000241 				CLC			; INDICATE SUCCESS
    684	000610	000437 				BR	70$		; EXIT
    685
    686	000612	016600 	000006 		30$:	MOV	6(SP),R0	; RECOVER THE POINTER TO THE STRING             ;LW0020
    687	000616	016601 	000010 			MOV	8.(SP),R1	; RECOVER THE STRING LENGTH                     ;LW0020
    688	000622	012603 			40$:	MOV	(SP)+,R3	; RECOVER THE POINTER TO THE TABLE              ;**-2
    689	000624	000403 				BR	60$		;
    690
    691	000626	005716 			50$:	TST	(SP)		; HAS A FREE ENTRY ALREADY BEEN FOUND ?
    692	000630	001001 				BNE	60$		; IF NE, YES - DON'T SAVE ANOTHER ONE
    693	000632	010316 				MOV	R3,(SP)		; OTHERWISE SAVE THIS ADDRESS AS A FREE ENTRY
    694	000634	062703 	000014 		60$:	ADD	#D$LEN,R3	; POINT TO THE NEXT TABLE ENTRY
    695	000640					SOB	R2,10$		; LOOP THROUGH ALL THE ENTRIES
    696	000644	005716 				TST	(SP)		; IF AN ENTRY WAS NOT FOUND                     ;AP0025
    697	000646	001003 				BNE	65$		; THEN                                          ;AP0025
    698	000650	052713 	100000 			BIS	#DF$TMP,(R3)	; THERE IS ONE MORE ENTRY THAN THE COUNT
    699	000654	010316 				MOV	R3,(SP)		; MAKE IT THIS ENTRY                            ;AP0025
    700	000656	011602 			65$:	MOV	(SP),R2		; GET POINTER                                   ;AP0026
    701	000660	062702 	000012 			ADD	#D$NAM+4,R2	; TO NODE NAME                                  ;AP0026
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 14-2
SRNOD - SEARCH FOR A NODE NAME

    702	000664	012712 	020040 			MOV	#"  ,(R2)	; AND CLEAR IT TO BLANKS                        ;AP0026
    703	000670	011242 				MOV	(R2),-(R2)                                                      ;AP0026
    704	000672	011242 				MOV	(R2),-(R2)                                                      ;AP0026
    705	000674	110162 	177777 			MOVB	R1,-1(R2)	; SET THE NAME LENGTH                           ;AP0026
    706	000700	112022 			68$:	MOVB	(R0)+,(R2)+	; AND COPY THE NAME IN.                         ;AP0026
    707	000702					SOB	R1,68$                                                          ;AP0026
    708	000706	000261 				SEC			; NODE NOT FOUND.                               ;AP0026
    709	000710	012603 			70$:	MOV	(SP)+,R3	; GET THE MATCH ADDRESS OR THE FREE ENTRY       ;**-1
    710	000712	011626 				MOV	(SP),(SP)+	; IF REQUESTED                                  ;LW0019
    711	000714	001402 				BEQ	100$		;   TO DO SO,                                   ;LW0019
    712	000716	052713 	002000 			BIS	#DF$RES,(R3)	;   RESERVE THE ENTRY                           ;LW0019
    713	000722				100$:                                                                           ;LW0019
    714	000722					RESRG	<R0,R1,R2>	; RESTORE THE REGISTERS
    715	000730					RETURN			; RETURN TO THE CALLER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 15
RMUSE - REMOVE A LOGICAL LINK FROM A NODE

    717						.SBTTL	RMUSE - REMOVE A LOGICAL LINK FROM A NODE
    718					;+
    719					; **-RMUSE-REMOVE A LOGICAL LINK FROM A NODE
    720					;
    721					; THIS SUBROUTINE IS CALLED TO DECREMENT THE LOGICAL LINK USE COUNT
    722					; FOR A DESTINATION NODE.
    723					;
    724					; INPUTS:
    725					;
    726					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    727					;
    728					; OUTPUTS:
    729					;
    730					;	AS DESCIBED ABOVE
    731					;
    732					; REGISTERS MODIFIED:
    733					;
    734					;	R3
    735					;
    736					;-
    737						.ENABL	LSB
    738
    739	000732	016003 	000006 		RMUSE:	MOV	L.REM(R0),R3	; GET POINTER TO REMOTE NODE NAME
    740
    741						.IF DF	N$$ICF
    742
    743						BIT	#LF.INT,(R0)	; INTERCEPT LINK ?
    744						BEQ	10$		; NO
    745						MOV	I.IREM(R0),R3	; LINK IS ASSIGNED TO THIS NODE
    746					10$:
    747						.ENDC
    748
    749	000736	105363 	000004 			DECB	D$USE(R3)	; REDUCE THE USE COUNT TO THE NODE
    750	000742	100001 				BPL	RMNOD		; CONTINUE IF WE DIDN'T GO PAST ZERO            ;LW0013
    751	000744					CRASH			; WENT TOO FAR - BOMB                           ;LW0013
    752
    753
    754						.SBTTL	RMNOD - CONDITIONALLY REMOVE A NODE NAME
    755					;+
    756					; **-RMNOD-CONDITIONALLY REMOVE A NODE NAME FOR THE DATA BASE
    757					;
    758					; THIS SUBROUTINE IS CALLED TO REMOVE THE NODE NAME ENTRY WHEN THE
    759					; COUNT BECOMES ZERO AND THE NODE IS REMOTE OR MARKED TO BE REMOVED.
    760					;
    761					; INPUTS:
    762					;
    763					;	R3 = POINTER TO THE NODE NAME IN THE DATA BASE
    764					;
    765					;-
    766
    767	000746	105763 	000004 		RMNOD::	TSTB	D$USE(R3)	; HAVE ALL LINKS GONE AWAY ?
    768	000752	001010 				BNE	20$		; IF NE, LOGICAL LINKS STILL EXIST
    769	000754	032713 	070000 			BIT	#DF$FRE,(R3)	; IF THIS LINK IS NOT IN USE,                   ;LW0019
    770	000760	001403 				BEQ	15$		;   IGNORE ALL THE OTHER FLAGS                  ;LW0019
    771	000762	032713 	014000 			BIT	#DF$REM!DF$LNK,(R3) ; IS IT OK TO REMOVE THE NODE NAME ENTRY ?
    772	000766	001402 				BEQ	20$		; IF EQ, NO - LEAVE IT ALONE
    773	000770	042713 	037777 		15$:	BIC	#^C<DF$TMP!DF$LCL>,(R3) ; FREE THE NODE NAME ENTRY              ;LW0019
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 15-1
RMNOD - CONDITIONALLY REMOVE A NODE NAME

    774	000774				20$:	RETURN			; RETURN TO CALLER                              ;**-1
    775
    776						.DSABL	LSB
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 16
RMNOD - CONDITIONALLY REMOVE A NODE NAME

    778						.IF DF	N$$SYS
    779						.SBTTL	REMSYS
    780					;+                                                                              ;AP0011
    781					; **-REMSYS- REMOVE TRANSMIT CCBS FROM SYSTEM QUEUES                            ;AP0011
    782					;                                                                               ;AP0011
    783					; THIS ROUTINE IS CALLED TO TRY TO FLUSH THE SYSTEM QUEUES. IT WILL             ;AP0011
    784					; RETURN UNSUCCESSFUL IF THERE ARE ANY TRANSMITS OUTSTANDING BECAUSE            ;AP0011
    785					; OTHERWISE THE CCBS WILL BE RETURNED OUT OF SEQUENCE.                          ;AP0011
    786					;                                                                               ;AP0011
    787					; INPUTS:                                                                       ;AP0011
    788					;	R0=LLT                                                                  ;AP0011
    789					;                                                                               ;AP0011
    790					; OUTPUTS:                                                                      ;AP0011
    791					;	CARRY SET IF TRANSMITS STILL OUTSTANDING                                ;AP0011
    792					;-                                                                              ;AP0011
    793					                                                                                ;AP0011
    794	000776	005760 	000004 		REMSYS::TST	L.TIPI(R0)	; IF TRANSMITS STILL OUTSTANDING                ;AP0011
    795	001002	001025 				BNE	10$		; THEN DON'T ALLOW.                             ;AP0011
    796	001004					SAVRG	<R5,R4,R3>	; MAKE SOME ROOM TO WORK                        ;AP0011
    797	001012	012704 	177776 			MOV	#NE.ABO,R4	; AND SET ABORT CODE.                           ;AP0011
    798	001016	012703 	000052 			MOV	#L.XQ3,R3	; I/LS WAITING-TO-BE-ACKED QUEUE                ;AP0011
    799	001022					CALL	REMXQ                                                           ;AP0011
    800	001026	012703 	000050 			MOV	#L.XQ2,R3	; DATA WAITING-TO-BE-ACKED QUEUE                ;AP0011
    801	001032					CALL	REMXQ                                                           ;AP0011
    802	001036	012703 	000046 			MOV	#L.XQ1,R3	; WAITING-TO-BE-TRANSMITTED QUEUE               ;AP0011
    803	001042					CALL	REMXQ                                                           ;AP0011
    804	001046					RESRG	<R3,R4,R5>	; GET REGISTERS BACK.                           ;AP0011
    805	001054	005727 				TST	(PC)+		; SET SUCCESSFUL                                ;AP0011
    806	001056	000261 			10$:	SEC			; OR NOT.                                       ;AP0011
    807	001060					RETURN                                                                  ;AP0011
    808					                                                                                ;AP0011
    809	001062	060003 			REMXQ:	ADD	R0,R3		; GET QUEUE ADDRESS IN LLT.                     ;AP0011
    810	001064				20$:	CALL	POPQUE		; GET NEXT CCB                                  ;AP0011
    811	001070	103420 				BCS	50$		; IF THERE IS ONE...                            ;AP0011
    812	001072	122765 	000002 	000011 		CMPB	#NT$DAT,C.MOD(R5) ; IF IT IS A DATA                             ;AP0011
    813	001100	001404 				BEQ	30$		; OR                                            ;AP0011
    814	001102	122765 	000004 	000011 		CMPB	#NT$INT,C.MOD(R5) ; INTERRUPT MESSAGE                           ;AP0011
    815	001110	001005 				BNE	40$		; THEN                                          ;AP0011
    816	001112				30$:	CALL	REMHDR		; CLEAN UP BUFFER ADDRESS                       ;AP0011
    817	001116					CALL	RETUSR		; RETURN TO SENDER                              ;AP0011
    818	001122	000760 				BR	20$		; AND TRY FOR MORE.                             ;AP0011
    819					                                                                                ;AP0011
    820	001124				40$:	CALL	RLSSMS		; RETURN LS BUFFER                              ;AP0011
    821	001130	000755 				BR	20$		; AND LOOK FOR MORE.                            ;AP0011
    822					                                                                                ;AP0011
    823	001132				50$:	RETURN                                                                  ;AP0011
    824					                                                                                ;AP0011
    825					;+                                                                              ;AP0011
    826					; RESET USER BUFFER ADDRESS BY REMOVING MESSAGE HEADER                          ;AP0011
    827					;-                                                                              ;AP0011
    828					                                                                                ;AP0011
    829	001134	166565 	000024 	000016 	REMHDR::SUB	C.BUF2(R5),C.BUF+2(R5)	; GET HEADER LENGTH (NEGATIVE)          ;AP0011
    830	001142	066565 	000016 	000020 		ADD	C.BUF+2(R5),C.CNT(R5)	; ADJUST COUNT                          ;AP0011
    831	001150	016565 	000024 	000016 		MOV	C.BUF2(R5),C.BUF+2(R5)	; AND RESET BUFFER ADDRESS.             ;AP0011
    832	001156					RETURN                                                                  ;AP0011
    833						.ENDC                                                                   ;**-27
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 17
REMUSR - RETURN UNACKNOWLEDGED I/LS MESSAGES

    835						.SBTTL	REMUSR - RETURN UNACKNOWLEDGED I/LS MESSAGES
    836					;+
    837					; **-REMUSR-RETURN UNACKNOWLEDGED I/LS MESSAGES
    838					;
    839					; THIS SUBROUTINE IS CALLED TO FLUSH UNACKNOWLEDGED INTERRUPT AND
    840					; LINK SERVICE MESSAGES TO THE SYSTEM BUFFER POOL DURING LOGICAL
    841					; LINK ABORT SEQUENCES.
    842					;
    843					; INPUTS:
    844					;
    845					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    846					;
    847					; OUTPUTS:
    848					;
    849					;	AS DESCRIBED ABOVE
    850					;
    851					; REGISTERS MODIFIED:
    852					;
    853					;	NONE
    854					;
    855					;-
    856						.IF DF	N$$USR
    857
    858	001160				REMUSR::SAVRG	<R3,R5>		; SAVE REGISTERS
    859	001164	010003 				MOV	R0,R3		; POINT TO WAITING TO XMITED QUE ..I/LS
    860	001166	062703 	000052 			ADD	#L.XQ3,R3
    861	001172				10$:	CALL	POPQUE		; GET SMALL DATA BUFFER TO BE RETURNED
    862	001176	103403 				BCS	20$		; QUE EMTPY
    863	001200					CALL	RLSSMS
    864	001204	000772 				BR	10$		; FLUSH QUE
    865
    866	001206				20$:	RESRG	<R5,R3>
    867	001212	000241 				CLC
    868	001214					RETURN
    869
    870						.ENDC
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 18
COMMON PROTOCOL MESSAGE BUILDING ROUTINES

    872						.SBTTL	COMMON PROTOCOL MESSAGE BUILDING ROUTINES
    873						.SBTTL	DODC   - SEND A DISCONNECT CONFIRM
    874					;+
    875					; **-DODC-SEND A DISCONNECT CONFIRM
    876					; **-DODCI-ALTERNATE ENTRY
    877					; **-DODCR-DO DODCI FOLLOWED BY RMNOD ON SRC AND DST NODES                      ;AP0026
    878					;
    879					; THIS ROUTINE IS CALLED TO SEND A DISCONNECT CONFIRM MESSAGE. THE
    880					; BUFFER WHICH RECEIVED THE MESSAGE IS USED FOR TRANSMISSION.
    881					;
    882					; INPUTS:
    883					;
    884					;	R2 = POINTER TO SOURCE NODE NAME (ENTRY AT DODCI ONLY)
    885					;	R5 = ADDRESS OF MESSAGE CCB TO BE USED FOR DC
    886					;
    887					; THE ARGBLK IS FORMATTED AS FOLLOWS:
    888					;
    889					;	WD0 - POINTER TO REMOTE NODE NAME
    890					;	WD1 - SOURCE LINK ADDRESS
    891					;	WD2 - REMOTE LINK ADDRESS
    892					;	WD3 - ERROR CODE
    893					;
    894					; OUTPUTS:
    895					;
    896					;	THE MESSAGE IS BUILT IN THE BUFFER AND QUEUED FOR TRANSMISSION
    897					;	THE RESOURCE WILL BE RELEASED WHEN TRANSMISSION COMPLETES.
    898					;
    899					;-
    900					                                                                                ;**-1
    901	001216	016702 	000000G		DODC::	MOV	$NSDDB,R2	; COMPUTE THE ADDRESS OF THE LOCAL NODE
    902	001222	016202 	000034 			MOV	N$NOD+2(R2),R2	; ...NAME BLOCK
    903
    904	001226	016700 	000000G		DODCI::	MOV	$NSDDB,R0	; COMPUTE THE ADDRESS OF THE SCRATCH
    905	001232	062700 	000012 			ADD	#N$TMP,R0	; ...STORAGE AREA
    906	001236					MAP	C.BUF(R5)	; MAKE SURE THAT BUFFER IS MAPPED
    907	001244	016504 	000026 			MOV	C.BUF2+2(R5),R4	; GET THE STARTING ADDRESS OF THE BUFFER
    908	001250	062704 	000020 			ADD	#16.,R4		; LEAVE ENOUGH ROOM FOR A ROUTE HEADER
    909	001254	010465 	000016 			MOV	R4,C.BUF+2(R5)	; SET MESSSAGE STARTING ADDRESS
    910	001260	122765 	000034 	000011 		CMPB	#NT$IDC,C.MOD(R5) ; IF WE AREN'T IN                             ;LW0015
    911	001266	001403 				BEQ	10$		  ;   THE INTERCEPT SPECIAL CASE,               ;LW0015
    912	001270	112765 	000022 	000011 		MOVB	#NT$ROU,C.MOD(R5) ;   PUT MODIFIER IN CCB                       ;LW0015
    913	001276	112724 	000110 		10$:	MOVB	#MF.CTL!MC.DC,(R4)+ ; FILL IN FLAGS                             ;LW0015
    914	001302	012003 				MOV	(R0)+,R3	; GET THE POINTER TO THE NODE NAME              ;**-2
    915	001304	012001 				MOV	(R0)+,R1	; GET NEW DESTINATION LINK ADDRESS
    916	001306					CALL	PUTBIN		; PUT IT IN THE MESSAGE
    917	001312	012001 				MOV	(R0)+,R1	; GET NEW SOURCE LINK ADDRESS
    918	001314					CALL	PUTBIN		; PUT IT IN THE MESSAGE
    919	001320	012001 				MOV	(R0)+,R1	; GET THE DISCONNECT REASON CODE
    920	001322					CALL	PUTBIN		; PUT IT IN THE MESSAGE
    921	001326	166504 	000016 			SUB	C.BUF+2(R5),R4	; LENGTH OF MSG
    922	001332	010465 	000020 			MOV	R4,C.CNT(R5)	; STORE COUNT IN 1ST DESC
    923	001336	005000 				CLR	R0		; INDICATE THAT THERE IS NO LLT
    924	001340					CALLR	SNDMDC		; SEND THE MSG
    925
    926	001344	010246 			DODCR::	MOV	R2,-(SP)	; SAVE SOURCE NODE ADDRESS                      ;AP0026
    927	001346					CALL	DODCI		; AND DO THE DISCONNECT.                        ;AP0026
    928	001352	012603 				MOV	(SP)+,R3	; GET SOURCE NODE BACK                          ;AP0026
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 18-1
DODC   - SEND A DISCONNECT CONFIRM

    929	001354					CALL	RMNOD		; AND TRY TO LET IT GO.                         ;AP0026
    930	001360	016703 	000000G			MOV	$NSDDB,R3	; THROUGH DATA BASE                             ;AP0026
    931	001364	016303 	000012 			MOV	N$TMP(R3),R3	; GET THE DESTINATION NODE                      ;AP0026
    932	001370					CALLR	RMNOD		; AND TRY THAT ONE TOO.                         ;AP0026
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 19
SNDDI - SEND A DISCONNECT INITIATE

    934						.SBTTL	SNDDI - SEND A DISCONNECT INITIATE
    935					;+
    936					; **-SNDDI-SEND A DISCONNECT INITIATE MESSAGE
    937					;
    938					; INPUTS:
    939					;
    940					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    941					;	R3 = DISCONNECT REASON CODE
    942					;	R5 = ADDRESS OF CCB WITH USER DATA
    943					;
    944					; OUTPUTS:
    945					;
    946					;	C-BIT CLEAR:
    947					;	THE DISCONNECT MESSAGE IS SENT FOR THE LOGICAL LINK
    948					;
    949					;	C-BIT SET:
    950					;	ALLOCATION FAILURE ON MESSAGE BUFFER
    951					;
    952					; REGISTERS MODIFIED:
    953					;
    954					;	NONE
    955					;
    956					;-
    957
    958	001374	004567 	000000G		SNDDI::	JSR	R5,$REGSV	; SAVE THE REGISTERS (CO-ROUTINE)
    959	001400	010502 				MOV	R5,R2		; SAVE USER'S CCB ADDR
    960	001402					CALL	GETSMR		; ALLOCATE A MESSAGE BUFFER WITH RECOVERY
    961	001406	112765 	000010 	000011 		MOVB	#NT$DIS,C.MOD(R5) ; SET SUBFUNCTION CODE FOR DISCONNECT INITIATE
    962	001414	112760 	000014 	000025 		MOVB	#ST$DIS,L.NSTA(R0) ; STARTING TO DISCONNECT LINK
    963	001422	112724 	000070 			MOVB	#MF.CTL!MC.DI,(R4)+ ; MSGFLG FOR DISCONNECT INITIATE
    964	001426					CALL	BLDMSG		; BUILD DESTINATION & SOURCE LINK ADDRESSES
    965	001432	016203 	000020 			MOV	C.CNT(R2),R3	; GET LENGTH OF USER DATA
    966	001436	110324 				MOVB	R3,(R4)+	; STORE LENGTH IN THE MESSAGE BUFFER
    967	001440	001411 				BEQ	10$		; IF EQ, NO USER DATA
    968	001442	010201 				MOV	R2,R1		; COPY ADDRESS OF CCB
    969	001444	010402 				MOV	R4,R2		; COPY VIRTUAL ADDRESS OF MAPPED BUFFER
    970	001446					$MVFBF	R1,C.BUF	; MOVE THE DATA
    971	001462	010204 				MOV	R2,R4		; RESTORE THE BUFFER ADDRESS
    972	001464				10$:	CALLR	SNDMSG		; COMPUTE MESSAGE LENGTH AND SEND IT AND RETURN
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 20
RECOVR - RESOURCE RECOVERY ENTRY FOR DATA STATE

    974						.SBTTL	RECOVR - RESOURCE RECOVERY ENTRY FOR DATA STATE
    975					;+
    976					; **-RECOVR-RESOURCE RECOVERY FOR DATA STATE
    977					;
    978					; THIS SUBROUTINE IS CALLED WHEN A RESOURCE ALLOCATION ERROR HAS BEEN
    979					; DETECTED FOR A LOGICAL LINK IN DATA STATE.  LINK SERVICE MESSAGES AND
    980					; ACK/NAK MESSAGES FOR BOTH SUBCHANNELS ARE SENT IF REQUIRED.  ALLOCATION
    981					; FAILURE ON ANY MESSAGE BUFFER RESULTS IN THE LINK RESOURCE FAILURE STATUS.
    982					;
    983					; INPUTS:
    984					;
    985					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    986					;
    987					; OUTPUTS:
    988					;
    989					;	AS DESCRIBED
    990					;
    991					; REGISTERS MODIFIED:
    992					;
    993					;	NONE
    994					;
    995					;-
    996
    997	001470				RECOVR::CALL	SNDLS		; ATTEMPT TO SEND A LINK SERVICE FOR DATA
    998	001474					CALL	SNILS		; ATTEMPT TO SEND A LINK SERVICE FOR I/LS
    999					                                                                                ;AP0010
   1000						.IF DF	N$$SYS&N$$USR                                                   ;AP0010
   1001	001500	105760 	000041 			TSTB	L.PDV(R0)	; SYSTEM OR USER INTERFACE ?                    ;AP0010
   1002	001504	001414 				BEQ	RECOV1		; USER                                          ;AP0010
   1003						.ENDC                                                                   ;AP0010
   1004					                                                                                ;AP0010
   1005						.IF DF	N$$SYS                                                          ;AP0010
   1006	001506	032760 	000010 	000012 		BIT	#LF.FPN,L.FLG(R0) ; IF FLOW NOTIFICATION PENDING                ;AP0010
   1007	001514	001402 				BEQ	10$		; THEN                                          ;AP0010
   1008	001516					CALL	NOTUSR		; TRY AGAIN.                                    ;AP0010
   1009	001522	032760 	000010 	000012 	10$:	BIT	#LF.FPN,L.FLG(R0) ; IF NAK COMPLETE PENDING                     ;AP0010
   1010	001530	001402 				BEQ	RECOV1		; THEN                                          ;AP0010
   1011	001532					CALL	NAKUSR		; TRY IT ALSO.                                  ;AP0010
   1012						.ENDC                                                                   ;AP0010
   1013
   1014
   1015						.SBTTL	RECOV1 - ACK/NAK REQUIRED FOR DATA & I/LS SUBCHANNELS
   1016					;+
   1017					; **-RECOV1 - ACK/NAK REQUIRED FOR DATA & I/LS SUBCHANNELS
   1018					;
   1019					; THIS ROUTINE IS CALLED TO SEND AN ACK/NAK FOR THE DATA & I/LS SUBCHANNELS
   1020					; BASED ON THE CONTROL FLAGS IN THE LOGICAL LINK CELLS 'L.USA' & 'L.LSA'        ;LW0005
   1021					; RESPECTIVELY.                                                                 ;**-1
   1022					;
   1023					; INPUTS:
   1024					;
   1025					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
   1026					;
   1027					;
   1028					; OUTPUTS:
   1029					;
   1030					;	AS DESCRIBED
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 20-1
RECOV1 - ACK/NAK REQUIRED FOR DATA & I/LS SUBCHANNELS

   1031					;
   1032					; REGISTERS MODIFIED:
   1033					;
   1034					;	NONE
   1035					;
   1036					;-
   1037
   1038	001536				RECOV1::                                                                        ;LW0005
   1039						.IF DF N$$ICF                                                           ;LW0005
   1040						BIT	#LF.INT,(R0)	; IF THIS IS AN INTERCEPT LINK,                 ;LW0005
   1041						BEQ	10$		; (NOT)                                         ;LW0005
   1042						BIT	#IF.NTS,I.FLG(R0);AND WE WERE SENDING A PAIR                    ;LW0005
   1043						BEQ	5$		; OF NAKS WHEN INTERRUPTED,                     ;AP0023
   1044						CALLR	NAKICF		; SEND 'EM AGAIN                                ;AP0023
   1045					5$:	RETURN			; AND GO AWAY.                                  ;AP0023
   1046						.ENDC                                                                   ;LW0005
   1047	001536				10$:	CALL	SNDAKD		; ATTEMPT TO SEND AN ACK/NAK FOR DATA           ;LW0005
   1048	001542					CALLR	SNDAKI		; ATTEMPT TO SEND AN ACK/NAK FOR I/LS AND RETURN;**-1
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 21
SNDLS  - SEND A LINK SERVICE FOR DATA

   1050						.SBTTL	SNDLS  - SEND A LINK SERVICE FOR DATA
   1051						.SBTTL	SNILS  - SEND A LINK SERVICE FOR INTERRUPT
   1052					;+
   1053					; **-SNDLS-SEND A LINK SERVICE FOR DATA
   1054					; **-SNILS-SEND A LINK SERVICE FOR INTERRUPT
   1055					;
   1056					; THIS ROUTINE IS CALLED WHEN A REQUEST TO MODIFY THE DATA REQUEST COUNT
   1057					; IS ISSUED BY THE USER AND WHEN A LINK SERVICE MESSAGE FOR DATA IS
   1058					; ACKNOWLEDGED.  A LINK SERVICE MESSAGE IS TRANSMITTED IF THERE IS A
   1059					; NON ZERO ACCUMULATION OF REQUEST COUNTS AND NO PREVIOUS LINK SERVICE
   1060					; FOR DATA OUTSTANDING.
   1061					;
   1062					; INPUTS:
   1063					;
   1064					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
   1065					;
   1066					;-
   1067						.ENABL	LSB
   1068
   1069	001546	004567 	000000G		SNILS::	JSR	R5,$REGSV	; SAVE THE REGISTERS  (CO-ROUTINE)
   1070	001552	122710 	000005 			CMPB	#ST$DAT,(R0)	; IS THE LINK IN DATA STATE ?
   1071	001556	001132 				BNE	30$		; IF NE, NO - EXIT
   1072	001560	116003 	000044 			MOVB	L.LSF(R0),R3	; GET REQUEST COUNT AND TEST CONTROL FLAG
   1073	001564	100527 				BMI	30$		; IF MI, A LINK SERVICE ALREADY OUTSTANDING - EXIT
   1074	001566	001526 				BEQ	30$		; IF EQ, NO REQUEST TO SEND - EXIT
   1075	001570					CALL	GETSM1		; ALLOCATE A MESSAGE BUFFER WITH RECOVERY
   1076	001574	112760 	000200 	000044 		MOVB	#LS.ILS,L.LSF(R0) ; CLEAR REQUEST COUNT AND SET CONTROL FLAG
   1077	001602	052703 	002000 			BIS	#LS.FCC*400,R3	; SET LSTYPE (INTERRUPT)
   1078	001606	112765 	000002 	000002 		MOVB	#2,C.RSV(R5)	; SET TYPE CODE IN CCB (LINK SERVICE FOR INTERRUPT)
   1079	001614	000442 				BR	10$		; COMPLETE MESSAGE IN COMMON CODE
   1080
   1081	001616	004567 	000000G		SNDLS::	JSR	R5,$REGSV	; SAVE THE REGISTERS  (CO-ROUTINE)
   1082	001622	122710 	000005 			CMPB	#ST$DAT,(R0)	; IS THE LINK IN DATA STATE ?
   1083	001626	001106 				BNE	30$		; IF NE, NO - EXIT
   1084	001630	116003 	000045 			MOVB	L.LSF+1(R0),R3	; GET DATA REQUEST COUNT AND TEST CONTROL FLAG
   1085	001634	100503 				BMI	30$		; IF MI, LINK SERVICE ALREADY OUTSTANDING - EXIT
   1086	001636	032760 	000060 	000012 		BIT	#LF.DFL,L.FLG(R0) ; IF FLOW BEING MODIFIED                      ;AP0008
   1087	001644	001411 				BEQ	8$		; THEN                                          ;AP0008
   1088	001646	032760 	000040 	000012 		BIT	#LF.DSP,L.FLG(R0) ; CHECK STOP FLOW FLAG.                       ;AP0008
   1089	001654	001003 				BNE	6$		; IF NOT SET                                    ;AP0008
   1090	001656	052703 	001000 			BIS	#LS.FC1*400,R3	; START THE FLOW.                               ;AP0008
   1091	001662	000402 				BR	8$		; OTHERWISE                                     ;AP0008
   1092	001664	052703 	000400 		6$:	BIS	#LS.FC0*400,R3	; STOP THE FLOW.                                ;AP0008
   1093	001670	005703 			8$:	TST	R3		; IF NO FLOW COUNT MODIFICATION                 ;AP0008
   1094	001672	001464 				BEQ	30$		; THEN NOTHING TO DO.                           ;AP0008
   1095	001674					CALL	GETSM1		; ALLOCATE A MESSAGE BUFFER WITH RECOVERY       ;AP0008
   1096	001700	042760 	000060 	000012 		BIC	#LF.DFL,L.FLG(R0) ; CLEAN UP FLOW REQUEST.                      ;AP0008
   1097	001706	112760 	000200 	000045 		MOVB	#LS.DLS,L.LSF+1(R0) ; CLEAR DATA REQUEST COUNT AND SET CONTROL F;**-2
   1098	001714	112765 	000001 	000002 		MOVB	#1,C.RSV(R5)	; SET TYPE CODE IN CCB (LINK SERVICE FOR DATA)
   1099									; LSTYPE FOR DATA (ZERO) ALREADY IN R3
   1100
   1101	001722	112765 	000014 	000011 	10$:	MOVB	#NT$LS,C.MOD(R5) ; SET THE LINK SERVICE SUBFUNCTION CODE
   1102	001730	112724 	000020 			MOVB	#MF.DAT!MD.IM,(R4)+ ; STORE MESSAGE FLAGS
   1103	001734	016001 	000010 			MOV	L.RLA(R0),R1	; DESTINATION ADDRESS
   1104	001740					CALL	PUTBIN		; PUT INTO MESSAGE
   1105	001744	016001 	000002 			MOV	L.LLA(R0),R1	; SOURCE ADDRESS
   1106	001750					CALL	PUTBIN		; PUT INTO MESSAGE
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 21-1
SNILS  - SEND A LINK SERVICE FOR INTERRUPT

   1107	001754	016001 	000032 			MOV	L.LSA(R0),R1	; GET HIGHEST I/LS SEGNUM ACK'D BY THIS NODE
   1108	001760	100012 				BPL	20$		; IF PL, NO ACK/NAK NEED TO BE SENT
   1109	001762	032701 	010000 			BIT	#LA.NMS,R1	; IF IT IS A NAK                                ;AP0014
   1110	001766	001402 				BEQ	12$		; THEN                                          ;AP0014
   1111	001770					CALL	NKSCTR		; RECORD IT IN THE STATISTICS COUNTERS.         ;AP0014
   1112	001774				12$:                                                                            ;AP0014
   1113	001774	042760 	170000 	000032 		BIC	#LA.MSK,L.LSA(R0) ; CLEAR ACK REQUIRED FLAGS
   1114	002002					CALL	PUTBIN		; PUT ACKNUM INTO MESSAGE
   1115	002006	016001 	000016 		20$:	MOV	L.NIN(R0),R1	; SEGNUM FOR LINK SERVICE MESSAGE
   1116	002012	005260 	000016 			INC	L.NIN(R0)	; NEXT SEGNUM TO BE ASSIGNED
   1117	002016	042760 	170000 	000016 		BIC	#LA.MSK,L.NIN(R0) ; CLEAR WRAPAROUND
   1118	002024					CALL	PUTBIN		; PUT SEGNUM INTO MESSAGE
   1119	002030	010301 				MOV	R3,R1		; COPY REQUEST COUNT AND LSTYPE
   1120	002032	000301 				SWAB	R1		; LSTYPE IS FIRST, LSVAL IS SECOND IN MESSAGE
   1121	002034					CALL	PUTBIN		; PUT REQUEST COUNT AND LSTYPE INTO MESSAGE
   1122	002040					CALLR	SNDMSI		; COMPUTE LENGTH, SEND THE MESSAGE AND RETURN
   1123
   1124	002044				30$:	RETURN			; RETURN TO CALLER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 22
SNDAKD - SEND AN ACK/NAK FOR DATA

   1126						.SBTTL	SNDAKD - SEND AN ACK/NAK FOR DATA
   1127						.SBTTL	SNDAKI - SEND AN ACK/NAK FOR I/LS
   1128					;+
   1129					; **-SNDAKD-SEND AN ACK/NAK FOR DATA
   1130					; **-SNDAKI-SEND AN ACK/NAK FOR I/LS
   1131					;
   1132					; THESE SUBROUTINES ARE CALLED TO SEND AN ACK/NAK MESSAGE FOR THE DATA OR I/LS
   1133					; SUBCHANNELS OF A LOGICAL LINK. THE LOGICAL LINK TABLE CONTAINS ALL
   1134					; THE CONTEXT REQUIRED TO SEND THE MESSAGE IN THE CELLS 'L.USA' AND 'L.LSA'
   1135					; RESPECTIVELY.
   1136					;
   1137					; INPUTS:
   1138					;
   1139					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
   1140					;
   1141					; OUTPUTS:
   1142					;
   1143					;	IF AN ACK/NAK IS REQUIRED, AND A MESSAGE BUFFER CAN BE ALLOCATED,
   1144					;	THE ACK/NAK MESSAGE IS TRANSMITTED AND THE ACK/NAK REQUIRED FLAGS
   1145					;	ARE CLEARED.
   1146					;	IF A MESSAGE BUFFER CANNOT BE ALLOCATED, THE RESOURCE RECOVERY
   1147					;	FLAG IS SET IN THE LOGICAL LINK TABLE.
   1148					;	IF NO ACK/NAK IS REQUIRED, OR THERE ARE OUTSTANDING TRANSMITS ON
   1149					;	THE LOGICAL LINK SUBCHANNEL, NO ACTION IS TAKEN.
   1150					;
   1151					; REGISTERS MODIFIED:
   1152					;
   1153					;	NONE
   1154					;
   1155					;-
   1156
   1157	002046	004567 	000000G		SNDAKD::JSR	R5,$REGSV	; SAVE REGISTERS  (CO-ROUTINE)
   1158	002052	016003 	000030 			MOV	L.USA(R0),R3	; GET THE ACKNUM AND TEST THE CONTROL FLAGS
   1159	002056	100372 				BPL	30$		; IF PL, NO ACK/NAK NEEDS TO BE SENT - EXIT
   1160	002060	105760 	000005 			TSTB	L.TIPD(R0)	; ANY DATA SUBCHANNEL TRANSMITS IN PROGRESS ?
   1161	002064	001367 				BNE	30$		; IF NE, YES - DON'T SEND THE ACK NOW
   1162	002066	122710 	000006 			CMPB	#ST$DIP,(R0)	; IS THE LINK DISCONNECTING ?
   1163	002072	001764 				BEQ	30$		; IF EQ, YES - DON'T TRY TO SEND AN ACK
   1164	002074					CALL	GETSMR		; ALLOCATE A MESSAGE BUFFER WITH RECOVERY
   1165	002100	112765 	000016 	000011 		MOVB	#NT$AKD,C.MOD(R5) ; SET SUBFUNCTION CODE FOR A DATA ACK/NAK
   1166	002106	032703 	010000 			BIT	#LA.NMS,R3	; IF WE ARE SENDING A NAK                       ;AP0014
   1167	002112	001402 				BEQ	40$		; THEN                                          ;AP0014
   1168	002114					CALL	NKSCTR		; RECORD IT IN THE STATISTICS COUNTERS.         ;AP0014
   1169	002120				40$:                                                                            ;AP0014
   1170	002120	042760 	170000 	000030 		BIC	#LA.MSK,L.USA(R0) ; CLEAR ACK/NAK CONTROL FLAGS (MESSAGE WILL BE SENT)
   1171	002126	112724 	000004 			MOVB	#MF.ACK!MA.DA,(R4)+ ; STORE MESSAGE FLAGS FOR A DATA SUBCHANNEL ACK
   1172	002132					CALL	BLDMSG		; BUILD LINK ADDRESSES AND STORE ACKNUM IN MESSAGE
   1173	002136					CALLR	SNDMSG		; COMPUTE LENGTH, SEND THE MESSAGE AND RETURN
   1174
   1175
   1176	002142	004567 	000000G		SNDAKI::JSR	R5,$REGSV	; SAVE THE REGISTERS  (CO-ROUTINE)
   1177	002146	016003 	000032 			MOV	L.LSA(R0),R3	; GET THE ACKNUM AND TEST THE CONTROL FLAGS
   1178	002152	100334 				BPL	30$		; IF PL, NO ACK/NAK NEEDS TO BE SENT - EXIT
   1179	002154	122710 	000006 			CMPB	#ST$DIP,(R0)	; IS THE LINK DISCONNECTING ?
   1180	002160	001731 				BEQ	30$		; IF EQ, YES - DON'T TRY TO SEND AN ACK
   1181	002162	032710 	040000 			BIT	#LF.LCL,(R0)	; IS THIS AN LOCAL LOGICAL LINK ?
   1182	002166	001003 				BNE	5$		; IF NE, YES - DON'T DELAY THE ACK/NAK
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 22-1
SNDAKI - SEND AN ACK/NAK FOR I/LS

   1183	002170	105760 	000004 			TSTB	L.TIPI(R0)	; ANY I/LS SUBCHANNEL TRANSMITS IN PROGRESS ?
   1184	002174	001323 				BNE	30$		; IF NE, YES - DON'T SEND THE ACK NOW
   1185	002176				5$:	CALL	GETSMR		; ALLOCATE A MESSAGE BUFFER WITH RECOVERY
   1186	002202	112765 	000020 	000011 		MOVB	#NT$AKI,C.MOD(R5) ; SET SUBFUNCTION CODE FOR A I/LS ACK/NAK
   1187	002210	032703 	010000 			BIT	#LA.NMS,R3	; IF WE ARE SENDING A NAK                       ;AP0014
   1188	002214	001402 				BEQ	50$		; THEN                                          ;AP0014
   1189	002216					CALL	NKSCTR		; RECORD IT IN THE STATISTICS COUNTERS.         ;AP0014
   1190	002222				50$:                                                                            ;AP0014
   1191	002222	042760 	170000 	000032 		BIC	#LA.MSK,L.LSA(R0) ; CLEAR ACK/NAK CONTROL FLAGS (MESSAGE WILL BE SENT)
   1192	002230	112724 	000024 			MOVB	#MF.ACK!MA.IL,(R4)+ ; STORE MESSAGE FLAGS FOR A I/LS SUBCHANNEL ACK
   1193	002234					CALL	BLDMSG		; BUILD LINK ADDRESSES AND STORE ACKNUM IN MESSAGE
   1194	002240					CALLR	SNDMSI		; COMPUTE LENGTH, SEND THE MESSAGE AND RETURN
   1195
   1196						.DSABL	LSB
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 23
SNDAKI - SEND AN ACK/NAK FOR I/LS

   1198					;+                                                                              ;AP0014
   1199					; STATISTICS COUNTER LOGGING                                                    ;AP0014
   1200					;                                                                               ;AP0014
   1201					; NO REGISTERS MODIFIED                                                         ;AP0014
   1202					;-                                                                              ;AP0014
   1203					                                                                                ;AP0014
   1204	002244	004267 	000010 		NKSCTR::JSR	R2,LOGCTR	; DO LOGGING                                    ;AP0014
   1205	002250	000010 				S$NKS			; FOR NAKS SENT COUNTER.                        ;AP0014
   1206					                                                                                ;AP0014
   1207	002252	004267 	000002 		EMRCTR::JSR	R2,LOGCTR	; DO LOGGING                                    ;AP0014
   1208	002256	000006 				S$EMR			; FOR EXTRANEOUS MESSAGES RECEIVED COUNTER.     ;AP0014
   1209					                                                                                ;AP0014
   1210	002260	011246 			LOGCTR:	MOV	(R2),-(SP)	; SAVE THE COUNTER OFFSET.                      ;AP0014
   1211	002262	016702 	000000G			MOV	$NSDDB,R2	; GET THE                                       ;AP0014
   1212	002266	016202 	000044 			MOV	N$STS+2(R2),R2	; STATISTICS DATA BLOCK                         ;AP0014
   1213	002272	062602 				ADD	(SP)+,R2	; AND ADD THE OFFSET TO THE COUNTER.            ;AP0014
   1214	002274	005212 				INC	(R2)		; BUMP THE COUNTER                              ;AP0014
   1215	002276	001001 				BNE	10$		; AND IF OVERFLOW                               ;AP0014
   1216	002300	005312 				DEC	(R2)		; THEN BACK IT UP.                              ;AP0014
   1217	002302	012602 			10$:	MOV	(SP)+,R2	; RESTORE R2.                                   ;AP0016
   1218	002304					RETURN                                                                  ;AP0016
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 24
NAKICF - SPECIAL INTERCEPT NAK ROUTINE

   1220						.SBTTL	NAKICF - SPECIAL INTERCEPT NAK ROUTINE
   1221					                                                                                ;LW0003
   1222					;+                                                                              ;LW0003
   1223					; **-NAKICF-SPECIAL INTERCEPT NAK ROUTINE                                       ;LW0003
   1224					;                                                                               ;LW0003
   1225					; THIS ROUTINE SENDS A NAK OF SEGMENT/MESSAGE 0 ON THE DATA AND I/LS            ;LW0003
   1226					; SUBCHANNELS OF AN INTERCEPT LINK.  THE ROUTINE DIFFERS FROM THE               ;LW0003
   1227					; STANDARD ACK/NAK ROUTINES IN THAT IT SENDS THE MESSAGES TO THE SOURCE         ;LW0003
   1228					; NODE RATHER THAN THE DESTINATION ONE.                                         ;LW0003
   1229					;                                                                               ;LW0003
   1230					; INPUTS:                                                                       ;LW0003
   1231					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE                                  ;LW0003
   1232					;                                                                               ;LW0003
   1233					; REGISTERS MODIFIED: NONE                                                      ;LW0003
   1234					;                                                                               ;LW0003
   1235					;-                                                                              ;LW0003
   1236					                                                                                ;LW0003
   1237						.IF DF N$$ICF                                                           ;LW0003
   1238					NAKICF::JSR	R5,$REGSV	; SAVE REGISTERS (CO-ROUTINE)                   ;LW0003
   1239						SAVMAP			; SAVE CURRENT MAPPING                          ;LW0003
   1240						CALL	GETSMS		; ALLOCATE A MESSAGE BUFFER                     ;AP0022
   1241						BCS	60$		; IF WE CAN                                     ;AP0022
   1242						MOV	#<<NT$IDN*400>!<MF.ACK!MA.DA>>,R1 ;MSGFLGS AND FNC MODIFIER     ;AP0022
   1243						CALL	80$		; CONSTRUCT AND SEND THE NAK                    ;AP0022
   1244						INCB	I.TIPD(R0)	; INCREMENT DATA TRANSMIT COUNT.                ;AP0022
   1245						CALL	GETSMS		; ALLOCATE A MESSAGE BUFFER                     ;AP0022
   1246						BCS	60$		; IF WE CAN                                     ;AP0022
   1247						MOV	#<<NT$ILN*400>!<MF.ACK!MA.IL>>,R1 ;MSGFLGS/MODIFIER FOR I/LS    ;AP0022
   1248						CALL	80$		; CONSTRUCT AND SEND THE NAK                    ;AP0022
   1249						INCB	I.TIPI(R0)	; INCREMENT I/LS TRANSMIT COUNT.                ;AP0022
   1250						BIC	#IF.NTS,I.FLG(R0);UNFLAG                                        ;LW0003
   1251						CLC                                                                     ;LW0003
   1252					40$:	RESMAP			; RESTORE ORIGINAL MAPPING                      ;LW0003
   1253						RETURN			; DONE                                          ;LW0003
   1254					                                                                                ;LW0003
   1255					60$:	BIS	#LF.RSU,(R0)	; SET TO TRY AGAIN                              ;LW0003
   1256						BR	40$		; AND QUIT FOR NOW.                             ;LW0003
   1257					                                                                                ;LW0003
   1258					80$:	MOVB	R1,(R4)+	; SET MSGFLGS FOR MESSAGE                       ;LW0003
   1259						SWAB	R1                                                              ;LW0003
   1260						MOVB	R1,C.MOD(R5)	; MODIFIER FOR MESSAGE                          ;LW0003
   1261						MOV	#7,C.CNT(R5)	; MESSAGE LENGTH                                ;LW0003
   1262						MOV	I.ILA(R0),R1	; DESTINATION LINK ADDRESS                      ;LW0003
   1263						CALL	PUTBIN                                                          ;LW0003
   1264						MOV	I.LLA(R0),R1	; SOURCE LINK ADDRESS                           ;LW0003
   1265						CALL	PUTBIN                                                          ;LW0003
   1266						MOV	#110000,R1	; CODE FOR NAK OF 0                             ;LW0003
   1267						CALL	PUTBIN                                                          ;LW0003
   1268						MOV	I.IREM(R0),R3	; GET ADJACENT NODE ENTRY                       ;AP0023
   1269						CALLR	SNDICF		; SEND THE MESSAGE                              ;LW0003
   1270						.ENDC                                                                   ;LW0003
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 25
MESSAGE TRANSMISSION ROUTINES

   1272						.SBTTL	MESSAGE TRANSMISSION ROUTINES
   1273						.SBTTL	SNDMDC - SEND MESSAGE NOT ASSOCIATED WITH AN LLT
   1274						.SBTTL	SNDMSI - SEND MESSAGE FOR I/LS SUBCHANNEL
   1275						.SBTTL	SNDMSG - SEND MESSAGE FOR DATA SUBCHANNEL
   1276						.SBTTL	SNDALT - SEND MESSAGE COMMON PROCESSING
   1277					;+
   1278					; **-SNDMDC-SEND MESSAGE NOT ASSOCIATED WITH AN LLT
   1279					;
   1280					; **-SNDMSI-SEND MESSAGE FOR I/LS SUBCHANNEL
   1281					; **-SNDMSG-SEND MESSAGE FOR DATA SUBCHANNEL
   1282					; **-SNDALT-COMMON SEND MESSAGE PROCESSING
   1283					;
   1284					; INPUTS:
   1285					;
   1286					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE (NOT FOR SNDMDC)
   1287					;	R3 = POINTER TO DESTINATION NODE NAME (SNDICF ENTRY ONLY)               ;LW0004
   1288					;	R4 = MESSAGE POINTER (FOR MESSAGE LENGTH CALCULATION)                   ;**-1
   1289					;	R5 = ADDRESS OF MESSAGE CCB
   1290					;
   1291					; OUTPUTS:
   1292					;
   1293					;	R5 = 0  (MESSAGE HAS BEEN TRANSMITTED)
   1294					;
   1295					; REGISTERS MODIFIED:
   1296					;
   1297					;	R1, R2, R3, AND R4
   1298					;
   1299					;-
   1300						.ENABL	LSB
   1301
   1302	002306	010065 	000004 		SNDMDC::MOV	R0,C.NSP(R5)	; INDICATE NO LLT EXISTS
   1303	002312	105765 	000006 			TSTB	C.LIN(R5)	; MESSAGE RECEIVED FROM INTERNAL LOOP ?
   1304	002316	001427 				BEQ	20$		; IF EQ, INTERNAL LOOP - KEEP IT THAT WAY
   1305	002320	005703 				TST	R3		; IF THERE IS NO                                ;LW0018
   1306	002322	001043 				BNE	30$		;   DESTINATION NODE NAME,                      ;LW0018
   1307	002324					CALL	SETPLD		; GET THE ADDRESS OF THE SOURCE LINE            ;LW0018
   1308	002330	016303 	000010 			MOV	P$NOD(R3),R3	;   AND THE ADDRESS IF ITS ADJACENT NODE        ;LW0018
   1309	002334	000436 				BR	30$		; OTHERWISE ROUTE THE MESSAGE
   1310
   1311	002336	105260 	000004 		SNDMSI::INCB	L.TIPI(R0)	;XMTTD AN I/LS MESSAGE
   1312	002342	000402 				BR	10$
   1313
   1314	002344	105260 	000005 		SNDMSG::INCB	L.TIPD(R0)	; XMMTD DATA MESSAGES
   1315	002350	166504 	000016 		10$:	SUB	C.BUF+2(R5),R4	; COMPUTE THE LENGTH OF THE MESSAGE
   1316	002354	010465 	000020 			MOV	R4,C.CNT(R5)	; AND STORE IT IN THE CCB
   1317	002360	016003 	000006 		SNDALT::MOV	L.REM(R0),R3	; GET THE POINTER TO THE DESTINATION NODE
   1318
   1319	002364	010065 	000004 		SNDICF::MOV	R0,C.NSP(R5)	; SAVE THE ADDRESS OF THE LLT
   1320	002370	032710 	040000 			BIT	#LF.LCL,(R0)	; IS THIS AN INTERNAL LINK ?
   1321	002374	001416 				BEQ	30$		; IF EQ, NO - ROUTE THE MESSAGE
   1322
   1323	002376	010504 			20$:	MOV	R5,R4		;COPY THE ADDRESS OF THE CCB
   1324	002400	012764 	000000C	000006 		MOV	#PD$NSP*400,C.LIN(R4) ;SET PDV AND CHANNEL
   1325	002406	112764 	000014 	000010 		MOVB	#FC.RCP,C.FNC(R4) ;SET FUNCTION CODE
   1326	002414	012764 	000001 	000012 		MOV	#CS.SUC,C.STS(R4) ;SET SUCCESS STATUS (DEFAULT)                 ;LW0006
   1327	002422					$QLLC			; QUEUE TO SELF
   1328	002426	005005 				CLR	R5		; INDICATE THAT CCB WAS PASSED ON
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 25-1
SNDALT - SEND MESSAGE COMMON PROCESSING

   1329	002430					RETURN			; RETURN TO CALLER
   1330
   1331	002432	016301 	000002 		30$:	MOV	D$CHN(R3),R1	; GET THE POINTER TO THE PHYSICAL LINK BLOCK
   1332	002436	001757 				BEQ	20$		; NONE - LOCAL DESTINATION                      ;LW0024
   1333	002440	122711 	000005 			CMPB	#PS$UP,(R1)	; IS THIS LINK UP ?
   1334	002444	001015 				BNE	100$		; IF NE, ERROR
   1335	002446	005065 	000006 			CLR	C.LIN(R5)	; SET UP THE NEW CHANNEL NUMBER
   1336	002452	116165 	000004 	000006 		MOVB	P$CHN(R1),C.LIN(R5) ; ...
   1337	002460	132775 	000010 	000016 		BITB	#MF.CTL,@C.BUF+2(R5) ; IF THIS IS A CNTL MSG THEN WE NEED RTHDR
   1338	002466	001402 				BEQ	40$		; NO..DATA OR I/LS  NO RTHDR
   1339	002470					CALL	RTHDR		; BUILD THE ROUTE HEADER
   1340	002474				40$:	CALLR	SNDLOW		; FOWARD THE MESSAGE TO THE DLC
   1341
   1342					;
   1343					; TEMPORARY DEBUGGING AID
   1344					;
   1345	002500				100$:	CRASH
   1346
   1347						.DSABL	LSB
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 26
RTHDR  - BUILD A ROUTE HEADER

   1349						.SBTTL	RTHDR  - BUILD A ROUTE HEADER
   1350					;+
   1351					; **-RTHDR-BUILD AN ASCII ROUTE HEADER
   1352					;
   1353					; THIS ROUTINE IS CALLED TO BUILD AN ASCII ROUTE HEADER IN FRONT OF
   1354					; AN NSP MESSAGE.
   1355					;
   1356					; INPUTS:
   1357					;
   1358					;	R0 = ADDRESS OF AN LLT OR ZERO
   1359					;	R2 = POINTER TO SOURCE NODE NAME (DC AND INTERCEPT)
   1360					;	R3 = POINTER TO DESTINATION NODE NAME
   1361					;	R5 = ADDRESS OF THE MESSAGE CCB
   1362					;		C.BUF+2	VIRTUAL ADDRESS OF THE MESSAGE
   1363					;		C.CNT	LENGTH OF THE MESSAGE
   1364					;
   1365					; OUTPUTS:
   1366					;
   1367					;	IF THERE IS NO LOGICAL LINK TABLE ADDRESS (R0 EQUAL TO ZERO),
   1368					;	OR THE LINK IS AN INTERCEPT LINK, THE ROUTE HEADER IS BUILT
   1369					;	USING THE SOURCE AND DESTINATION NODE NAME POINTERS IN R2 AND
   1370					;	R3, RESPECTIVELY.  OTHERWISE, THE SOURCE NODE NAME IS ASSUMED
   1371					;	TO BE THE LOCAL NODE.
   1372					;	THE MESSAGE POINTER AND THE COUNT IN THE CCB ARE UPDATED TO
   1373					;	REFLECT THE LENGTH OF THE ROUTE HEADER.
   1374					;
   1375					; REGISTERS MODIFIED:
   1376					;
   1377					;	R1, R2, R3, AND R4
   1378					;
   1379					;-
   1380
   1381	002502	016504 	000016 		RTHDR::	MOV	C.BUF+2(R5),R4	; START BUILDING ROUTE HEADER HERE              ;LW0012
   1382	002506	010446 				MOV	R4,-(SP)	; SAVE START OF RTHDR                           ;**-1
   1383
   1384						.IF DF	N$$ICF
   1385
   1386						TST	R0		; IS THERE AN LOGICAL LINK ?
   1387						BEQ	10$		; IF EQ, NO - USE R2 FOR SOURCE NODE NAME
   1388						BIT	#LF.INT,(R0)	; IS THIS AN INTERCEPT LINK ?
   1389						BNE	10$		; IF NE, YES - USE R2 FOR SOURCE NODE NAME
   1390
   1391						.ENDC
   1392
   1393	002510	016702 	000000G			MOV	$NSDDB,R2	; COMPUTE THE ADDRESS OF THE LOCAL NODE
   1394	002514	016202 	000034 			MOV	N$NOD+2(R2),R2	; ...NAME BLOCK
   1395	002520	062702 	000005 		10$:	ADD	#D$LNG,R2	; POINT TO THE LENGTH OF THE NODE NAME
   1396	002524	112201 				MOVB	(R2)+,R1	; GET THE LENGTH
   1397	002526	060201 				ADD	R2,R1		; POINT JUST BEYOND THE NODE NAME
   1398	002530	114144 			20$:	MOVB	-(R1),-(R4)	; COPY THE SOURCE NODE NAME AND THE LENGTH
   1399	002532	020201 				CMP	R2,R1		; HAVE WE MOVED THE NAME AND THE LENGTH ?
   1400	002534	101775 				BLOS	20$		; IF LOS, NOT YET - THE LAST PASS COPIES THE LENGTH
   1401	002536	062703 	000005 			ADD	#D$LNG,R3	; POINT TO THE LENGTH OF THE DESTINATION NAME
   1402	002542	112301 				MOVB	(R3)+,R1	; GET THE LENGTH
   1403	002544	060301 				ADD	R3,R1		; POINT JUST BEYOND THE NODE NAME
   1404	002546	114144 			30$:	MOVB	-(R1),-(R4)	; COPY THE DESTINATION NODE NAME AND THE LENGTH
   1405	002550	020301 				CMP	R3,R1		; HAVE WE MOVED THE NAME AND THE LENGTH ?
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 26-1
RTHDR  - BUILD A ROUTE HEADER

   1406	002552	101775 				BLOS	30$		; IF LOS, NOT YET - THE LAST PASS COPIES THE LENGTH
   1407	002554	112744 	000106 			MOVB	#RH.HDR!RH.RFM!RH.PR1,-(R4) ; BUILD THE ROUTE FLAGS
   1408	002560	010465 	000016 			MOV	R4,C.BUF+2(R5)	; NEW START OF MESSAGE
   1409	002564	160416 				SUB	R4,(SP)		; LENGTH OF HEADER JUST BUILT
   1410	002566	062665 	000020 			ADD	(SP)+,C.CNT(R5)	; ADJUST COUNT TO REFLECT HEADER
   1411	002572					RETURN			; RETURN TO CALLER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 27
SETPLD - MAP TO THE PLD ENTRY FOR A LINE

   1413						.SBTTL	SETPLD - MAP TO THE PLD ENTRY FOR A LINE
   1414					;+                                                                              ;LW0018
   1415					; **-SETPLD - MAP TO THE PLD ENTRY FOR A LINE                                   ;LW0018
   1416					;                                                                               ;LW0018
   1417					; INPUTS:                                                                       ;LW0018
   1418					;                                                                               ;LW0018
   1419					;	R5 = ADDRESS OF MESSAGE CCB                                             ;LW0018
   1420					;	     C.LIN = CHANNEL NUMBER FOR LINE                                    ;LW0018
   1421					;                                                                               ;LW0018
   1422					; OUTPUTS:                                                                      ;LW0018
   1423					;                                                                               ;LW0018
   1424					;	R3 = ADDRESS OF PLD ENTRY FOR GIVEN CHANNEL                             ;LW0018
   1425					;                                                                               ;LW0018
   1426					;-                                                                              ;LW0018
   1427					                                                                                ;LW0018
   1428	002574				SETPLD::SAVRG	<R0,R1>                                                         ;LW0024
   1429	002600	005000 				CLR	R0		; PICK UP                                       ;LW0018
   1430	002602	156500 	000006 			BISB	C.LIN(R5),R0	;   CHANNEL NUMBER                              ;LW0018
   1431	002606	012701 	000014 			MOV	#P$LEN,R1	; CALCULATE OFFSET                              ;LW0018
   1432	002612					CALL	$MUL		;   OF PLD ENTRY IN TABLE                       ;LW0018
   1433	002616	016703 	000000G			MOV	$NSDDB,R3	; ADDRESS THE                                   ;LW0018
   1434	002622	016303 	000030 			MOV	N$PLD+2(R3),R3	;   PHYSICAL LINE DATA BASE                     ;LW0018
   1435	002626	060103 				ADD	R1,R3		; ADDRESS THE RIGHT ENTRY                       ;LW0018
   1436	002630					RESRG	<R1,R0>                                                         ;LW0018
   1437	002634					RETURN                                                                  ;LW0018
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 28
SNDLOW - FORWARD A MESSAGE TO THE DLC

   1439						.SBTTL	SNDLOW - FORWARD A MESSAGE TO THE DLC
   1440					;+
   1441					; **-SNDLOW-SEND A MESSAGE TO A DLC
   1442					;
   1443					; INPUTS:
   1444					;
   1445					;	R5 = ADDRESS OF A MESSAGE CCB
   1446					;		C.LIN	PROCESS CHANNEL NUMBER
   1447					;
   1448					; OUTPUTS:
   1449					;
   1450					;	THE CCB IS FORWARDED TO A DLC PROCESS WITH A TRANSMIT ENABLE
   1451					;	FUNCTION CODE.
   1452					;	R5 = 0  (TO INDICATE MESSAGE IS TRANSMITTED)
   1453					;
   1454					; REGISTERS MODIFIED:
   1455					;
   1456					;	NONE
   1457					;
   1458					;-
   1459
   1460	002636				SNDLOW::SAVRG	<R4>		; SAVE R4
   1461	002640	010504 				MOV	R5,R4		; COPY ADDRESS OF THE MESSAGE CCB
   1462	002642	012764 	100014 	000022 		MOV	#CF.LB!CF.EOM!CF.SOM,C.FLG(R4) ; SET EOM AND SOMAND LAST BUFFER
   1463	002650	112764 	000000 	000010 		MOVB	#FC.XME,C.FNC(R4) ; SET FUNCTION CODE
   1464	002656					$QDLC			; QUEUE REQUEST TO THE DLC
   1465	002662					RESRG	<R4>		; RESTORE R4
   1466	002664	005005 				CLR	R5		; ALSO CLEARS C-BIT
   1467	002666					RETURN			; RETURN TO CALLER
   1468
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 29
BUFFER ALLOCATION AND DEALLOCATION ROUTINES

   1470						.SBTTL	BUFFER ALLOCATION AND DEALLOCATION ROUTINES
   1471						.SBTTL	GETSMR - ALLOCATE A MESSAGE BUFFER
   1472						.SBTTL	GETSM1 - ALLOCATE A MESSAGE BUFFER SUBJECT TO THRESHOLD
   1473					;+
   1474					; **-GETSMR-ALLOCATE A MESSAGE BUFFER WITH RECOVERY
   1475					; **-GETSM1-CONDITIONALLY ALLOCATE A MESSAGE BUFFER
   1476					;
   1477					; THIS SUBROUTINE IS CALLED BY MESSAGE BUILDING ROUTINES WHICH
   1478					; NEED A MESSAGE BUFFER AND RECOVERY PROCESSING ON AN ALLOCATION
   1479					; FAILURE.  THE ALTERNATE ENTRY POINT WILL FAIL TO ALLOCATE A BUFFER
   1480					; IF THE CURRENT SMALL DATA BUFFER COUNT IS BELOW A SET THRESHOLD.
   1481					;
   1482					; INPUTS:
   1483					;
   1484					;	0(SP) = RETURN ADDRESS TO CALLER
   1485					;	2(SP) = RETURN ADDRESS TO CALLER'S CALLER
   1486					;	R0 = ADDRESS OF A LOGICAL LINK TABLE
   1487					;
   1488					; OUTPUTS:
   1489					;
   1490					;	ON CO-ROUTINE RETURN TO CALLER:
   1491					;	0(SP) = RETURN ADDRESS TO CO-ROUTINE
   1492					;	R0 = ADDRESS OF LLT
   1493					;	R4 = VIRTUAL ADDRESS OF MESSAGE BUFFER  (MAPPED)
   1494					;	R5 = ADDRESS OF MESSAGE CCB
   1495					;
   1496					;	RETURN TO CALLER'S CALLER AND C-BIT CLEAR:
   1497					;	BUFFER MAPPING AND REGISTERS PRESERVED, ALL WENT WELL
   1498					;
   1499					;	C-BIT SET:
   1500					;	ALLOCATION FAILURE ON THE MESSAGE CCB OCCURRED
   1501					;	THE RESOURCE RECOVERY REQUIRED FLAG IS SET IN THE LOGICAL LINK TABLE
   1502					;
   1503					; REGISTERS MODIFIED:
   1504					;
   1505					;	R1
   1506					;
   1507					;-
   1508						.ENABL	LSB
   1509
   1510	002670	012601 			GETSM1:	MOV	(SP)+,R1	; GET RETURN ADDRESS TO CALLER
   1511	002672	022767 	000001 	000000G		CMP	#1,$SDBCT	; IS CURRENT LEVEL ABOVE OUR THRESHOLD ?
   1512	002700	103404 				BLO	10$		; IF LO, YES - CONTINUE
   1513	002702					CALL	CTRES		; COUNT THIS AS AN ALLOCATION FAILURE (SETS C-BIT)
   1514	002706	000410 				BR	20$		; SET RESOURCE RECOVERY REQUIRED AND EXIT
   1515
   1516	002710	012601 			GETSMR:	MOV	(SP)+,R1	; GET RETURN ADDRESS TO CALLER
   1517	002712				10$:	SAVMAP			; SAVE CURRENT BUFFER MAPPING
   1518	002716					CALL	GETSMS		; ALLOCATE A SMALL DATA BUFFER AND CCB
   1519	002722	103005 				BCC	30$		; IF CC, NO ALLOCATION FAILURE - CONTINUE
   1520	002724					RESMAP			; RESTORE PREVIOUS BUFFER MAPPING
   1521	002730	052710 	100000 		20$:	BIS	#LF.RSU,(R0)	; MARK RESOURCE RECOVERY REQUIRED IN THE LLT
   1522	002734	000404 				BR	40$		; ...AND RETURN TO CALLER'S CALLER WITH C-BIT SET
   1523
   1524	002736				30$:	CALL	(R1)		; CALL THE CALLER BACK WITH THE BUFFER
   1525	002740					RESMAP			; RESTORE PREVIOUS BUFFER MAPPING
   1526	002744	000241 				CLC			; INDICATE SUCCESS
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 29-1
GETSM1 - ALLOCATE A MESSAGE BUFFER SUBJECT TO THRESHOLD

   1527	002746				40$:	RETURN			; RETURN TO CALLER'S CALLER
   1528
   1529						.DSABL	LSB
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 30
GETSMS - ALLOCATE A SMALL DATA BUFFER

   1531						.SBTTL	GETSMS - ALLOCATE A SMALL DATA BUFFER
   1532					;+
   1533					; **-GETSMS-ALLOCATE A SMALL DATA BUFFER AND CCB
   1534					;
   1535					; INPUTS:
   1536					;
   1537					;	NONE
   1538					;
   1539					; OUTPUTS:
   1540					;
   1541					;	C-BIT CLEAR:
   1542					;	R4 = POINTER TO MESSAGE AREA
   1543					;	R5 = ADDRESS OF CCB
   1544					;
   1545					;	C-BIT SET:
   1546					;	ALLOCATION FAILURE, RESOURCE ERROR COUNTER IS INCREMENTED
   1547					;	R4 AND R5 ARE UNDEFINED
   1548					;
   1549					; NOTE:	THIS ROUTINE MAPS TO THE MESSAGE AREA
   1550					;-
   1551
   1552	002750				GETSMS::CALL	$CSBGT		; ALLOCATE A SMALL DATA BUFFER
   1553	002754	103412 				BCS	CTRES		; IF CS, ALLOCATION FAILURE - RECORD IT
   1554	002756	010405 				MOV	R4,R5		; COPY ADDRESS OF CCB
   1555	002760	016504 	000016 			MOV	C.BUF+2(R5),R4	; GET VIRTUAL ADDRESS OF DATA BUFFER
   1556	002764	010465 	000026 			MOV	R4,C.BUF2+2(R5)	; SAVE START OF BUFFER
   1557	002770	062704 	000020 			ADD	#16.,R4		; LEAVE ENOUGH ROOM FOR A ROUTE HEADER
   1558	002774	010465 	000016 			MOV	R4,C.BUF+2(R5)	; SAVE VIRTUAL ADDRESS
   1559	003000					RETURN			; RETURN TO CALLER
   1560
   1561
   1562						.SBTTL	CTRES  - COUNT RESOURCE ALLOCATION FAILURES
   1563					;+
   1564					; **-CTRES-COUNT RESOURCE ALLOCATION FAILURES
   1565					;
   1566					; INPUTS:
   1567					;
   1568					;	NONE
   1569					;
   1570					; OUTPUTS:
   1571					;
   1572					;	C-BIT SET:
   1573					;	THE RESOURCE ALLOCATION COUNTER IN THE NSP STATITICS BLOCK IS
   1574					;	INCREMENTED BY ONE.
   1575					;
   1576					;-
   1577
   1578	003002				CTRES::	SAVRG	<R1>		; SAVE CALLER'S R1
   1579	003004	016701 	000000G			MOV	$NSDDB,R1	; RECORD THE ALLOCATION FAILURE EVENT
   1580	003010	016101 	000044 			MOV	N$STS+2(R1),R1	; GET THE ADDRESS OF HE STATISTICS BLOCK
   1581	003014	005761 	000014 			TST	S$RES(R1)	; CHECK FOR COUNTER OVERFLOW
   1582	003020	100402 				BMI	10$		; IF MI, OVERFLOW - DON'T TOUCH COUNTER
   1583	003022	005261 	000014 			INC	S$RES(R1)	; OTHERWISE BUMP THE COUNT OF RESOURCE ERRORS
   1584	003026				10$:	RESRG	<R1>		; RESTORE CALLER'S R1
   1585	003030	000261 				SEC			; INDICATE ALLOCATION FAILURE
   1586	003032					RETURN			; RETURN TO CALLER
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 31
FRBDAT - DECREMENT DATA COUNT AND FREE BUFFER

   1588						.SBTTL	FRBDAT - DECREMENT DATA COUNT AND FREE BUFFER
   1589						.SBTTL	FRBILS - DECREMENT ILS COUNT AND FREE MESSAGE BUFFER
   1590					;+
   1591					; **-FRBDAT-DECREMENT DATA COUNT AND FREE THE MESSAGE BUFFER
   1592					; **-FRBILS-DECREMENT ILS COUNT AND FREE MESSAGE BUFFER
   1593					;
   1594					; THESE SUBROUTINES ARE CALLED TO DECREMENT THE TRANSMIT IN PROGRESS
   1595					; COUNTS IN THE LOGICAL LINK TABLE AND DEALLOCATE THE MESSAGE BUFFER
   1596					; BASED ON THE BUFFER ID VALUE.
   1597					;
   1598					; INPUTS:
   1599					;
   1600					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
   1601					;	R5 = ADDRESS OF THE MESSAGE BUFFER CCB
   1602					;
   1603					; OUTPUTS:
   1604					;
   1605					;	AS DESCRIBED
   1606					;-
   1607						.ENABL	LSB
   1608
   1609	003034	105360 	000005 		FRBDAT::DECB	L.TIPD(R0)	; REDUCE THE DATA TRANSMIT IN PROGRESS COUNT
   1610	003040	000402 				BR	5$		;
   1611
   1612	003042	105360 	000004 		FRBILS::DECB	L.TIPI(R0)	; REDUCE THE INTERRUPT/LINK SERVICE TRANSMIT IN
   1613									; ...COUNT
   1614	003046				5$:				; REFERENCE LABEL
   1615
   1616
   1617						.SBTTL	RLSBUF - RELEASE A MESSAGE BUFFER ON BUFFER ID
   1618					;+
   1619					; **-RLSBUF-RELEASE A MESSAGE BUFFER ON BUFFER ID
   1620					;
   1621					; INPUTS:
   1622					;
   1623					;	R5 = ADDRESS OF THE DATA BUFFER
   1624					;		C.BID EQUAL TO CB.RDB IMPLIES A RECEIVE (LARGE) DATA BUFFER
   1625					;			OTHERWISE A COMBINATION DATA BUFFER IS ASSUMED.
   1626					;
   1627					;		C.BUF MUST CONTAIN THE RELOCATION BIAS OF THE BUFFER
   1628					;		C.BUF2+2 MUST CONTAIN THE BASE VIRTUAL ADDRESS OF THE BUFFER
   1629					;-
   1630
   1631	003046				RLSSMS::			; REFERENCE LABEL
   1632	003046				RLSBUF::SAVRG	<R4>		; SAVE R4
   1633	003050	010504 				MOV	R5,R4		; COPY ADDRESS OF THE DATA BUFFER CCB
   1634	003052	122764 	000004 	000003 		CMPB	#CB.RDB,C.BID(R4) ; IS THIS A LARGE DATA BUFFER ?
   1635	003060	001413 				BEQ	10$		; IF EQ, YES - DEALLOCATE THE LDB
   1636	003062	016464 	000026 	000016 		MOV	C.BUF2+2(R4),C.BUF+2(R4) ; RESTORE BEGINNING ADDRESS OF THE BUFFER
   1637	003070					CALL	$CSBRT		; RETURN THE SMALL DATA BUFFER
   1638	003074	000423 				BR	30$		; RESTORE REGISTERS AND RETURN
   1639
   1640
   1641						.SBTTL	UNSPWN - RETURN A MESSAGE BUFFER
   1642					;+
   1643					; **-UNSPWN-RETURN A RECEIVED MESSAGE BUFFER
   1644					;
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 31-1
UNSPWN - RETURN A MESSAGE BUFFER

   1645					; INPUTS:
   1646					;
   1647					;	R5 = ADDRESS OF RECEIVED MESSAGE CCB
   1648					;		C.LIN = 0  INTERNAL LINK OTHERWISE EXTERNAL LINK
   1649					;
   1650					; OUTPUTS:
   1651					;
   1652					;	IF THE MESSAGE WAS RECEIVED FOR AN INTERNAL LINK, THE CCB
   1653					;	IS QUEUED BACK TO THE NSP PROCESS WITH A TRANSMIT COMPLETE
   1654					;	FUNCTION CODE, OTHERWISE IT IS RETURNED TO THE SYSTEM BUFFER
   1655					;	POOL.
   1656					;
   1657					; REGISTERS MODIFIED:
   1658					;
   1659					;	NONE
   1660					;-
   1661
   1662	003076				UNSPWN::SAVRG	<R4>		;SAVE CALLERS R4
   1663	003100	010504 				MOV	R5,R4		;COPY ADDRESS OF CCB (DATA BUFFER)
   1664	003102	105764 	000006 			TSTB	C.LIN(R4)	;WAS CCB FROM SELF?
   1665	003106	001403 				BEQ	20$		;YES..LOOPBACK
   1666	003110				10$:	CALL	$RDBRT		;RETURN IT TO THE POOL
   1667	003114	000413 				BR	30$		;
   1668
   1669	003116	112764 	000000G	000007 	20$:	MOVB	#PD$NSP,C.STA(R4) ;STORE TARGET LLC (NSP)
   1670	003124	112764 	000012 	000010 		MOVB	#FC.XCP,C.FNC(R4) ;SET FUNCTION CODE
   1671	003132	012764 	000001 	000012 		MOV	#CS.SUC,C.STS(R4) ;SET SUCCESS STATUS (DEFAULT)                 ;LW0006
   1672	003140					$QLLC			;QUE CCB TO SELF WITH XMIT CMPLT
   1673	003144				30$:	RESRG	<R4>		;RESTORE R4
   1674	003146	005005 				CLR	R5		;INDICATE THAT BUFFER WAS QUEUED
   1675	003150					RETURN			;RETURN TO CALLER
   1676
   1677						.DSABL	LSB
   1678
   1679		000001 				.END
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 31-2
SYMBOL TABLE

ACKMAS= 170000   	C$$RSH= 177564   	ER$RES= 000001   	GETSMR  002710R     002	L$$ASG= 000000
ACKPRE= 100000   	C.BID   000003   	ER$SSR= 000000   	GETSMS  002750RG    002	L$$DRV= 000000
ACKRES= 060000   	C.BUF   000014   	ER$SSS= 000045   	GETSM1  002670R     002	L$$P11= 000001
ACKWRA= 010000   	C.BUF1  000014   	ER$STA= 000051   	GIVUSR  000152RG    002	L$$11R= 000000
ADDQUE  000000RG    002	C.BUF2  000024   	ER$TCN= 000040   	GTNOD   000476RG    002	L.CIQ   000026
A$$CHK= 000000   	C.CNT   000020   	ER$TCO= 000041   	G$$TPP= 000000   	L.DCR   000036
A$$CPS= 000000   	C.CNT1  000020   	ER$TPA= 000010   	G$$TSS= 000000   	L.FLG   000012
A$$PRI= 000000   	C.CNT2  000030   	ER$UOB= 000004   	G$$TTK= 000000   	L.LDA   000024
A$$TRP= 000000   	C.FLG   000022   	E$$XPR= 000000   	G$$WRD= 000000   	L.LIA   000026
A.NAK = 010000   	C.FLG1  000022   	FC.CCP= 000020   	I$$RAR= 000000   	L.LLA   000002
BINPUT  000106RG    002	C.FLG2  000032   	FC.CTL= 000006   	I$$RDN= 000000   	L.LNG1  000054
BLDMSG  000342RG    002	C.FNC   000010   	FC.KCP= 000016   	KDSAR0= 172360   	L.LNO   000022
CB.CCB= 000002   	C.LIN   000006   	FC.KIL= 000004   	KDSDR0= 172320   	L.LSA   000032
CB.RDB= 000004   	C.LNK   000000   	FC.RCE= 000002   	KISAR0= 172340   	L.LSF   000044
CE.ABO= 100362   	C.MOD   000011   	FC.RCP= 000014   	KISAR5= 172352   	L.LVL   000001
CE.DIS= 100366   	C.NSP   000004   	FC.TIM= 000010   	KISAR6= 172354   	L.NDA   000034
CE.ERR= 100370   	C.RSV   000002   	FC.XCP= 000012   	KISAR7= 172356   	L.NIN   000016
CE.MOP= 100372   	C.STA   000007   	FC.XME= 000000   	KISDR0= 172300   	L.NLA   000036
CE.NTE= 100361   	C.STS   000012   	FE.CAL= 000040   	KISDR6= 172314   	L.NSTA  000025
CE.RTE= 100376   	DF$ADJ= 020000   	FE.DRV= 000010   	KISDR7= 172316   	L.NXN   000014
CE.SRC= 100364   	DF$DWN= 001000   	FE.EXP= 000200   	K$$CNT= 177546   	L.PDV   000041
CE.TMO= 100374   	DF$FRE= 070000   	FE.EXT= 000001   	K$$CSR= 177546   	L.REM   000006
CF.EOM= 000004   	DF$LCL= 040000   	FE.EXV= 000004   	K$$LDC= 000000   	L.RLA   000010
CF.HDR= 000020   	DF$LNK= 004000   	FE.LSI= 000400   	K$$TPS= 000074   	L.RNO   000020
CF.LB = 100000   	DF$REM= 010000   	FE.MUP= 000002   	LA.ACK= 100000   	L.STA   000000
CF.SOM= 000010   	DF$RES= 002000   	FE.MXT= 040000   	LA.MSK= 170000   	L.TC    000042
CF.SYN= 000040   	DF$TMP= 100000   	FE.NLG= 100000   	LA.NAK= 110000   	L.TIC   000043
CF.TRN= 000100   	DODC    001216RG    002	FE.PKT= 000100   	LA.NMS= 010000   	L.TIPD  000005
CHKUSR  000042RG    002	DODCI   001226RG    002	FE.PLA= 000020   	LA.RES= 060000   	L.TIPI  000004
CL$ACK= 000040   	DODCR   001344RG    002	FRBDAT  003034RG    002	LD$LP = 000000   	L.UDQ   000034
CL$MFL= 000010   	D$CHN   000002   	FRBILS  003042RG    002	LF.DFL= 000060   	L.ULA   000040
CL$NRM= 000020   	D$FLG   000000   	FS.AST= 000000   	LF.DSP= 000040   	L.USA   000030
CL$SFL= 000004   	D$LEN   000014   	FS.CIB= 002000   	LF.DST= 000020   	L.USTA  000024
CL$TYP= 000001   	D$LNG   000005   	FS.CRA= 001000   	LF.FPN= 000010   	L.XQ1   000046
CL.MU1= 000001   	D$NAM   000006   	FS.DIS= 013000   	LF.HF0= 001000   	L.XQ2   000050
CL.MU2= 000002   	D$USE   000004   	FS.DVC= 001000   	LF.HMF= 020000   	L.XQ3   000052
CL.RES= 177774   	D$$BUG= 177514   	FS.ENB= 012000   	LF.HSF= 010000   	MA.DA = 000000
CMODE = 140000   	D$$ISK= 000000   	FS.GET= 006000   	LF.INR= 000100   	MA.IL = 000020
CS.ABO= 000100   	D$$L11= 000001   	FS.INI= 000000   	LF.INT= 000400   	MC.CC = 000040
CS.BUF= 000200   	D$$YNC= 000000   	FS.KIL= 000000   	LF.LCL= 040000   	MC.CI = 000020
CS.DCR= 000400   	D$$YNM= 000000   	FS.LTM= 001000   	LF.MMF= 100000   	MC.DC = 000100
CS.DEV= 000002   	EMRCTR  002252RG    002	FS.MNT= 004000   	LF.MSF= 040000   	MC.DI = 000060
CS.DIS= 000040   	ER$ABO= 000046   	FS.MSN= 014000   	LF.NKR= 000200   	MC.NO = 000000
CS.ENB= 000020   	ER$ABT= 000011   	FS.RNG= 011000   	LF.NKS= 000400   	MC.ST = 000120
CS.EOF= 000001   	ER$ACC= 000042   	FS.RTN= 001000   	LF.NPN= 000001   	MD.BM = 000040
CS.ERR= 100000   	ER$ACT= 000044   	FS.SET= 005000   	LF.NTS= 002000   	MD.EM = 000100
CS.HFE= 002000   	ER$CDI= 000052   	FS.STM= 000000   	LF.RSU= 100000   	MD.ILS= 000040
CS.LST= 040000   	ER$COM= 000047   	FS.STP= 002000   	LOGCTR  002260R     002	MD.IM = 000020
CS.MTL= 004000   	ER$FCF= 000050   	FS.STR= 001000   	LS.DLS= 000200   	MF.ACK= 000004
CS.RNG= 000010   	ER$FMT= 000005   	FS.TRM= 003000   	LS.FCC= 000004   	MF.CTL= 000010
CS.ROV= 000004   	ER$GEN= 000007   	FS.XKL= 002000   	LS.FC0= 000001   	MF.DAT= 000000
CS.RSN= 010000   	ER$IFC= 000030   	FS.XOF= 010000   	LS.FC1= 000002   	MPAR  = 172100
CS.SUC= 000001   	ER$ILS= 000043   	FS.XON= 007000   	LS.ILS= 000200   	MPCSR = 177746
CS.TMO= 020000   	ER$IMG= 000053   	F$$LVL= 000001   	LS.MAK= 000020   	MSGHDR= 000007
CTRES   003002RG    002	ER$MLB= 000006   	GETBIN  000116RG    002	LS.MNK= 000040   	M$$CRB= 000124
C$$CKP= 000000   	ER$NOD= 000002   	GETEX1  000140RG    002	LS.RES= 000360   	M$$CRX= 000000
C$$ORE= 000400   	ER$NSD= 000003   	GETLNK  000046RG    002	LS.RSV= 000300   	M$$FCS= 000000
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 31-3
SYMBOL TABLE

M$$MGE= 000000   	NT$ON = 000002   	N.PASL  000102   	P$$P45= 000000   	ST$DIR= 000012
M$$OVR= 000000   	NT$QRY= 000014   	N.PASS  000104   	P$$WRD= 000000   	ST$DIS= 000014
NAKUSR= ****** GX	NT$REJ= 000004   	N.RQDL  000060   	Q$$OPT= 000010   	ST$UDI= 000013
NC.FM0= 000000   	NT$ROU= 000022   	N.RQID  000062   	RECOVR  001470RG    002	ST$UNR= 000011
NC.FM1= 000001   	NT$RTI= 000010   	N.RSRV= 000030   	RECOV1  001536RG    002	SWR   = 177570
NC.FM2= 000002   	NT$RTN= 000000   	N.SDL1  000036   	REMHDR  001134RG    002	S$EMR   000006
NETTIM= 000005   	NT$SNG= 000006   	N.SDL2  000042   	REMLKA  000414RG    002	S$FMT   000012
NE.ABO= 177776   	NT$STP= 000004   	N.SDS1  000040   	REMLNK  000374RG    002	S$LEN   000040
NE.ACT= 177771   	NT$XOF= 000020   	N.SDS2  000056   	REMSYS  000776RG    002	S$LNK   000022
NE.CLS= 177767   	NT$XON= 000016   	N.SEG   000006   	REMUSR  001160RG    002	S$MLK   000024
NE.DIS= 177777   	NT.ACK= 000001   	N.SFMT  000034   	REMXQ   001062R     002	S$NKS   000010
NE.FMT= 177770   	NT.BOM= 000040   	N.SGRP  000036   	RETUSR  000172RG    002	S$RES   000014
NE.NDT= 177766   	NT.EOM= 000100   	N.SOBJ  000035   	RF.CLN= 000000   	S$SEC   000000
NE.NOD= 177774   	NT.FCN= 037400   	N.SUSR  000040   	RF.CTL= 000003   	S$SNI   000016
NE.REJ= 177775   	NT.MD1= 000420   	PD$NSP= ****** GX	RF.TIM= 177400   	S$UMR   000004
NE.RES= 177773   	NT.MFL= 000002   	PF$EIP= 000100   	RF.TM0= 000400   	S$UMS   000002
NE.TIM= 177772   	NT.MOD= 000020   	PF$ENB= 000200   	RF.WTD= 000020   	S$UNI   000020
NI.FLI= 000002   	NT.MOM= 000000   	PF$OFF= 000000   	RF.WTM= 000030   	S$$WRG= 000000
NI.FRI= 000004   	NT.NAK= 000002   	PF$RLI= 000002   	RF.WTS= 000010   	S$$YSZ= 007600
NI.FRT= 000001   	NT.NFL= 000000   	PF$RRI= 000004   	RH.CNT= 000001   	TPS   = 177564
NI.FUB= 000010   	NT.SFL= 000001   	PF$RVE= 000001   	RH.EFM= 000020   	T$$KMG= 000000
NI.INI= 000001   	NT.SOL= 000140   	PF$RVR= 000040   	RH.HDR= 000002   	T$$MIN= 000000
NI.RLI= 000002   	NT.XOF= 000004   	PF$SLI= 000002   	RH.PRI= 000014   	UBMPR = 170200
NI.RRI= 000004   	NT.XON= 000010   	PF$SRI= 000004   	RH.PR1= 000004   	UDSAR0= 177660
NI.RVE= 000001   	N$ACQ   000000   	PF$SRT= 000001   	RH.RFM= 000100   	UDSDR0= 177620
NI.VER= 000002   	N$ICF   000006   	PF$STA= 000003   	RLSBUF  003046RG    002	UISAR0= 177640
NKSCTR  002244RG    002	N$LNI   000010   	PF$SUB= 000010   	RLSSMS  003046RG    002	UISAR4= 177650
NOTUSR= ****** GX	N$LVC   000022   	PF$UP = 000001   	RMNOD   000746RG    002	UISAR5= 177652
NP$RTR= 000003   	N$NOD   000032   	PIRQ  = 177772   	RMUSE   000732R     002	UISAR6= 177654
NS.BOM= 000040   	N$PLD   000026   	PMODE = 030000   	RTHDR   002502RG    002	UISAR7= 177656
NS.EOM= 000100   	N$STS   000042   	POPQUE  000024RG    002	R$$DER= 000000   	UISDR0= 177600
NS.MFL= 000003   	N$TCB   000004   	PRODS   000256RG    002	R$$K11= 000001   	UISDR4= 177610
NS.MOM= 000000   	N$TMP   000012   	PR0   = 000000   	R$$SND= 000000   	UISDR5= 177612
NS.NFL= 000001   	N$VER   000036   	PR1   = 000040   	R$$11M= 000000   	UISDR6= 177614
NS.SET= 000002   	N$$DAT= 000030   	PR4   = 000200   	SETPLD  002574RG    002	UISDR7= 177616
NS.SFL= 000002   	N$$DIS= 000020   	PR5   = 000240   	SISDR0= 172200   	UNSPWN  003076RG    002
NS.SOL= 000140   	N$$INT= 000020   	PR6   = 000300   	SKPIMG  000130RG    002	VF$RCV= 100000
NS.SUC= 000001   	N$$LDV= 000001   	PR7   = 000340   	SNDAKD  002046RG    002	VF$XMT= 040000
NT$ABO= 000022   	N$$MOV= 000010   	PS    = 177776   	SNDAKI  002142RG    002	V$FLG   000000
NT$ACC= 000002   	N$$OPT= 000020   	PSTUSR  000162RG    002	SNDALT  002360RG    002	V$LEN   000022
NT$ADS= 000000   	N$$OVR= 000042   	PS$NTI= 000003   	SNDDI   001374RG    002	V$RCV   000002
NT$AKD= 000016   	N$$SYS= 000001   	PS$OFF= 000000   	SNDICF  002364RG    002	V$XMT   000012
NT$AKI= 000020   	N$$USR= 000001   	PS$STR= 000001   	SNDLOW  002636RG    002	V$$CTR= 001000
NT$CC = 000012   	N.ACNT  000116   	PS$UP = 000005   	SNDLS   001616RG    002	WINDOW= 004000
NT$CON= 000000   	N.ACTL  000114   	PS$VER= 000004   	SNDMDC  002306RG    002	X$$DBT= 000000
NT$DAT= 000002   	N.DDL1  000012   	PS$WT = 000002   	SNDMSG  002344RG    002	$CSBGT= ****** GX
NT$DIS= 000010   	N.DDL2  000016   	PUTBIN  000364RG    002	SNDMSI  002336RG    002	$CSBRT= ****** GX
NT$IDC= 000034   	N.DDS1  000014   	P$CHN   000004   	SNILS   001546RG    002	$DEACB= ****** GX
NT$IDN= 000030   	N.DDS2  000020   	P$CNT   000005   	SRNOD   000504RG    002	$LLCRQ= ****** GX
NT$ILN= 000032   	N.DFMT  000010   	P$FRQ   000012   	SR0   = 177572   	$LLCRS= ****** GX
NT$IND= 000024   	N.DGRP  000012   	P$FSP   000013   	SR3   = 172516   	$MUL  = ****** GX
NT$INL= 000026   	N.DOBJ  000011   	P$LCD   000002   	ST$CC = 000002   	$MVFBF= ****** GX
NT$INT= 000004   	N.DUSR  000014   	P$LEN   000014   	ST$CIR= 000003   	$NSDDB= ****** GX
NT$LS = 000014   	N.LGTH= 000160   	P$LST   000000   	ST$CIS= 000001   	$RDBRT= ****** GX
NT$MOD= 000012   	N.NODE  000000   	P$NOD   000010   	ST$DAT= 000005   	$REGSV= ****** GX
NT$NAK= 000022   	N.OPDL  000136   	P$PFQ   000006   	ST$DID= 000015   	$SDBCT= ****** GX
NT$OFF= 000026   	N.OPTD  000140   	P$TIM   000003   	ST$DIP= 000006
NSPSBC	MACRO M1110  13-OCT-79 10:06  PAGE 31-4
SYMBOL TABLE


. ABS.	000160	   000
      	000000	   001
NSPSBC	003152	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  19280 WORDS  ( 76 PAGES)
DYNAMIC MEMORY:  20620 WORDS  ( 79 PAGES)
ELAPSED TIME:  00:01:32
NSPSBC,[131,34]NSPSBC/CR/-SP=[130,10]NETLIB/ML,RSXMC4/PA:1,[131,10]NSPSBC
NSPSBC     CREATED BY  MACRO  ON 13-OCT-79 AT 10:07	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ADDQUE	  000000 RG	#4-151     
BINPUT	  000106 RG	#7-265     
BLDMSG	  000342 RG	#12-498     19-964     22-1172    22-1193   
CB.RDB	= 000004	 31-1634   
CF.EOM	= 000004	 28-1462   
CF.LB 	= 100000	 28-1462   
CF.SOM	= 000010	 28-1462   
CHKUSR	  000042 RG	#6-207     
CS.SUC	= 000001	 25-1326    31-1671   
CTRES 	  003002 RG	 29-1513    30-1553   #30-1578   
C.BID 	  000003	 31-1634   
C.BUF 	  000014	*16-829     16-830    *16-831     18-906    *18-909     18-921     19-970     19-970     25-1315   
                         25-1337    26-1381   *26-1408    30-1555   *30-1558   *31-1636   
C.BUF2	  000024	 16-829     16-831     18-907    *30-1556    31-1636   
C.CNT 	  000020	*16-830    *18-922     19-965    *25-1316   *26-1410   
C.FLG 	  000022	*28-1462   
C.FNC 	  000010	*10-387    *25-1325   *28-1463   *31-1670   
C.LIN 	  000006	 6-207     *10-384     25-1303   *25-1324   *25-1335   *25-1336    27-1430    31-1664   
C.MOD 	  000011	 16-812     16-814     18-910    *18-912    *19-961    *21-1101   *22-1165   *22-1186   
C.NSP 	  000004	*25-1302   *25-1319   
C.RSV 	  000002	*21-1078   *21-1098   
C.STA 	  000007	*10-383    *10-383    *31-1669   
C.STS 	  000012	*10-380    *25-1326   *31-1671   
DF$DWN	= 001000	 14-669    
DF$FRE	= 070000	 14-671     14-673     15-769    
DF$LCL	= 040000	 15-773    
DF$LNK	= 004000	 14-669     15-771    
DF$REM	= 010000	 15-771    
DF$RES	= 002000	 14-671     14-712    
DF$TMP	= 100000	 14-698     15-773    
DODC  	  001216 RG	#18-901    
DODCI 	  001226 RG	#18-904     18-927    
DODCR 	  001344 RG	#18-926    
D$CHN 	  000002	 25-1331   
D$LEN 	  000014	 14-694    
D$LNG 	  000005	 14-676     26-1395    26-1401   
D$NAM 	  000006	 14-701    
D$USE 	  000004	*15-749     15-767    
EMRCTR	  002252 RG	#23-1207   
ER$STA	= 000051	 11-469    
FC.CCP	= 000020	 10-375    
FC.RCP	= 000014	 10-371     25-1325   
FC.XCP	= 000012	 10-379     31-1670   
FC.XME	= 000000	 28-1463   
FRBDAT	  003034 RG	#31-1609   
FRBILS	  003042 RG	#31-1612   
GETBIN	  000116 RG	#7-291      11-441     11-443    
GETEX1	  000140 RG	#9-346     
GETLNK	  000046 RG	#6-227      11-446    
GETSMR	  002710 R	 19-960     22-1164    22-1185   #29-1516   
GETSMS	  002750 RG	 29-1518   #30-1552   
GETSM1	  002670 R	 21-1075    21-1095   #29-1510   
NSPSBC     CREATED BY  MACRO  ON 13-OCT-79 AT 10:07	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

GIVUSR	  000152 RG	#10-369    
GTNOD 	  000476 RG	#14-623    
KISAR6	= 172354	*18-906     29-1517   *29-1520   *29-1525   
LA.MSK	= 170000	 21-1113    21-1117    22-1170    22-1191   
LA.NMS	= 010000	 21-1109    22-1166    22-1187   
LF.DFL	= 000060	 21-1086    21-1096   
LF.DSP	= 000040	 21-1088   
LF.FPN	= 000010	 20-1006    20-1009   
LF.LCL	= 040000	 22-1181    25-1320   
LF.RSU	= 100000	 29-1521   
LOGCTR	  002260 R	 23-1204    23-1207   #23-1210   
LS.DLS	= 000200	 21-1097   
LS.FCC	= 000004	 21-1077   
LS.FC0	= 000001	 21-1092   
LS.FC1	= 000002	 21-1090   
LS.ILS	= 000200	 21-1076   
L.FLG 	  000012	 20-1006    20-1009    21-1086    21-1088   *21-1096   
L.LLA 	  000002	 11-448     12-500     13-566     21-1105   
L.LNG1	  000054	 13-579    
L.LSA 	  000032	 21-1107   *21-1113    22-1177   *22-1191   
L.LSF 	  000044	 21-1072   *21-1076    21-1084   *21-1097   
L.NIN 	  000016	 21-1115   *21-1116   *21-1117   
L.NSTA	  000025	*19-962    
L.PDV 	  000041	 10-383     20-1001   
L.REM 	  000006	 15-739     25-1317   
L.RLA 	  000010	 12-498     21-1103   
L.TIPD	  000005	 22-1160   *25-1314   *31-1609   
L.TIPI	  000004	 16-794     22-1183   *25-1311   *31-1612   
L.ULA 	  000040	 10-384    
L.USA 	  000030	 22-1158   *22-1170   
L.XQ1 	  000046	 16-802    
L.XQ2 	  000050	 16-800    
L.XQ3 	  000052	 16-798     17-860    
MA.DA 	= 000000	 22-1171   
MA.IL 	= 000020	 22-1192   
MC.DC 	= 000100	 18-913    
MC.DI 	= 000060	 19-963    
MD.IM 	= 000020	 21-1102   
MF.ACK	= 000004	 22-1171    22-1192   
MF.CTL	= 000010	 18-913     19-963     25-1337   
MF.DAT	= 000000	 21-1102   
M$$MGE	= 000000	 18-906     19-970     29-1517    29-1520    29-1525   
NAKUSR	= ******  GX	 20-1011   
NE.ABO	= 177776	 16-797    
NKSCTR	  002244 RG	 21-1111    22-1168    22-1189   #23-1204   
NOTUSR	= ******  GX	 20-1008   
NT$AKD	= 000016	 22-1165   
NT$AKI	= 000020	 22-1186   
NT$DAT	= 000002	 16-812    
NT$DIS	= 000010	 19-961    
NT$IDC	= 000034	 18-910    
NT$INT	= 000004	 16-814    
NSPSBC     CREATED BY  MACRO  ON 13-OCT-79 AT 10:07	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

NT$LS 	= 000014	 21-1101   
NT$ROU	= 000022	 18-912    
N$LVC 	  000022	 6-230      13-570    
N$NOD 	  000032	 14-663     18-902     26-1394   
N$PLD 	  000026	 27-1434   
N$STS 	  000042	 13-573     23-1212    30-1580   
N$TMP 	  000012	 11-439     18-905     18-931    
N$$ICF	= ******	 3-1        3-2        11-451     15-741     20-1039    24-1237    26-1384   
N$$LV2	= ******	 13-576    
N$$SYS	= 000001	 3-123      10-352     16-778     20-1000    20-1005   
N$$USR	= 000001	 3-123      17-856     20-1000   
PD$NSP	= ******  GX	 25-1324    31-1669   
POPQUE	  000024 RG	#4-184      16-810     17-861    
PRODS 	  000256 RG	#11-437    
PSTUSR	  000162 RG	#10-373    
PS$UP 	= 000005	 25-1333   
PUTBIN	  000364 RG	 12-499     12-501    #12-524     18-916     18-918     18-920     21-1104    21-1106    21-1114   
                         21-1118    21-1121   
P$CHN 	  000004	 25-1336   
P$LEN 	  000014	 27-1431   
P$NOD 	  000010	 25-1308   
RECOVR	  001470 RG	#20-997    
RECOV1	  001536 RG	 20-1002    20-1010   #20-1038   
REMHDR	  001134 RG	 16-816    #16-829    
REMLKA	  000414 RG	#13-564    
REMLNK	  000374 RG	#13-558    
REMSYS	  000776 RG	#16-794    
REMUSR	  001160 RG	#17-858    
REMXQ 	  001062 R	 16-799     16-801     16-803    #16-809    
RETUSR	  000172 RG	#10-377     16-817    
RH.HDR	= 000002	 26-1407   
RH.PR1	= 000004	 26-1407   
RH.RFM	= 000100	 26-1407   
RLSBUF	  003046 RG	#31-1632   
RLSSMS	  003046 RG	 16-820     17-863    #31-1631   
RMNOD 	  000746 RG	 15-750    #15-767     18-929     18-932    
RMUSE 	  000732 R	 13-561    #15-739    
RTHDR 	  002502 RG	 25-1339   #26-1381   
SETPLD	  002574 RG	 25-1307   #27-1428   
SKPIMG	  000130 RG	#8-311     
SNDAKD	  002046 RG	 20-1047   #22-1157   
SNDAKI	  002142 RG	 20-1048   #22-1176   
SNDALT	  002360 RG	#25-1317   
SNDDI 	  001374 RG	#19-958    
SNDICF	  002364 RG	#25-1319   
SNDLOW	  002636 RG	 25-1340   #28-1460   
SNDLS 	  001616 RG	 20-997    #21-1081   
SNDMDC	  002306 RG	 18-924    #25-1302   
SNDMSG	  002344 RG	 19-972     22-1173   #25-1314   
SNDMSI	  002336 RG	 21-1122    22-1194   #25-1311   
SNILS 	  001546 RG	 20-998    #21-1069   
SRNOD 	  000504 RG	#14-661    
NSPSBC     CREATED BY  MACRO  ON 13-OCT-79 AT 10:07	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ST$DAT	= 000005	 21-1070    21-1082   
ST$DIP	= 000006	 22-1162    22-1179   
ST$DIS	= 000014	 19-962    
S$EMR 	  000006	 23-1208   
S$LNK 	  000022	*13-574    
S$NKS 	  000010	 23-1205   
S$RES 	  000014	 30-1581   *30-1583   
UNSPWN	  003076 RG	#31-1662   
$CSBGT	= ******  GX	 30-1552   
$CSBRT	= ******  GX	 31-1637   
$DEACB	= ******  GX	 13-582    
$LLCRQ	= ******  GX	 28-1464   
$LLCRS	= ******  GX	 10-388     25-1327    31-1672   
$MUL  	= ******  GX	 27-1432   
$MVFBF	= ******  GX	 19-970    
$NSDDB	= ******  GX	 6-229      11-438     13-569     14-662     18-901     18-904     18-930     23-1211    26-1393   
                         27-1433    30-1579   
$RDBRT	= ******  GX	 31-1666   
$REGSV	= ******  GX	 19-958     21-1069    21-1081    22-1157    22-1176   
$SDBCT	= ******  GX	 29-1511   
NSPSBC     CREATED BY  MACRO  ON 13-OCT-79 AT 10:07	PAGE 5

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

CALL  		 7-265      7-292      10-388     11-441     11-443     11-446     12-499     12-501     13-561     13-582    
                 16-799     16-801     16-803     16-810     16-816     16-817     16-820     17-861     17-863     18-916    
                 18-918     18-920     18-927     18-929     19-960     19-964     20-997     20-998     20-1008    20-1011   
                 20-1047    21-1075    21-1095    21-1104    21-1106    21-1111    21-1114    21-1118    21-1121    22-1164   
                 22-1168    22-1172    22-1185    22-1189    22-1193    25-1307    25-1339    27-1432    29-1513    29-1518   
                 29-1524    30-1552    31-1637    31-1666   
CALLR 		#18-924    #18-932    #19-972    #20-1048   #21-1122   #22-1173   #22-1194   #25-1340   
CCBDF$		#3-118     #3-119     
CRASH 		#15-751    #25-1345   
HWDDF$		#18-906    #18-906    #29-1517   #29-1517   #29-1520   #29-1520   #29-1525   #29-1525   
MAP   		#3-113     #18-906    
NSPSY$		#3-118     #3-120     
RESMAP		#3-113     #29-1520   #29-1525   
RESRG 		#3-114      4-157      6-238      10-390     10-391     11-470     13-583     14-714     16-804     17-866    
                 27-1436    28-1465    30-1584    31-1673   
RETURN		 4-158      4-188      4-191      6-239      7-268      7-295      8-314      9-350      10-392     11-471    
                 12-527     13-584     14-715     15-774     16-807     16-823     16-832     17-868     21-1124    23-1218   
                 25-1329    26-1411    27-1437    28-1467    29-1527    30-1559    30-1586    31-1675   
SAVMAP		#3-113      29-1517   
SAVRG 		#3-114      4-151      6-227      10-370     10-374     10-378     10-385     11-437     13-560     13-564    
                 14-661     16-796     17-858     27-1428    28-1460    30-1578    31-1632    31-1662   
SOB   		#14-681    #14-695    #14-707    
STOPDV		#3-115     #10-383    
STOULA		#3-115     #10-384    
$MVFBF		#3-117      19-970    
$MVTBF		#3-117     
$QDLC 		#3-116     #28-1464   
$QLLC 		#3-116      25-1327    31-1672