Google
 

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

     4-   90	ADDLNK - ADD A LOGICAL LINK TABLE
     5-  163	CHKULA
     6-  209	CHKFLG
     7-  247	GETNNO - FIND DESTINATION NODE FOR A USER CONNECT
     7-  326	NDLNG - FIND THE LENGTH OF A NODE NAME
     8-  358	CFRNOD - COUNT THE SPACES IN THE NODE NAME TABLE                ;JS0001
     9-  390	NWNOD - ADD A NODE FOR A CONNECT INITIATE                       ;JS0001
     9-  419	ADNOD - ADD A NODE NAME TO THE DATA BASE
    10-  458	LINE PARAMETER SET UP
    11-  504	STLVC - COMPUTE ADDRESS OF LOGICAL LINK VECTOR
    12-  530	CONSM2
    14-  670	GETDBK,RLSDBK
    15-  726	GETLDB - ALLOCATE A LARGE DATA BUFFER
    15-  755	GTCCB  - ALLOCATE A CCB
    16-  784	PROCI
    17-  935	SETFLG
    18-  983	UCRDAT
    19- 1021	GETEXB
    20- 1072	VERASC
    21- 1121	DISCONNECT PROCESSING SUBROUTINES
    21- 1122	HNGUSR
    21- 1149	DISUSR
    22- 1190	DISUS0,DISUS0
    23- 1268	DISUS2
    23- 1303	DISUS3
    24- 1319	ENTDIP
    25- 1344	CLNLNK
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 3


      1						.IIF DF N$$ICF,  .TITLE	NSPSBI
      2						.IIF NDF N$$ICF, .TITLE	NSPSBA
      3						.IDENT	/V01.10/
      4
      5					;
      6					; COPYRIGHT (C) 1978 BY
      7					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
      8					;
      9					;
     10					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
     11					; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
     12					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
     13					; COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
     14					; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
     15					; TRANSFERRED.
     16					;
     17					; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
     18					; AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
     19					; CORPORATION.
     20					;
     21					; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
     22					; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
     23					;
     24					;
     25					; MODULE DESCRIPTION
     26					;
     27					;	NETWORK ACP SUBROUTINES
     28					;
     29					;
     30					; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
     31					;
     32					; IDENT HISTORY:
     33					;
     34					; 1.00	10-FEB-78
     35					;	VERSION 2.0 RELEASE
     36					;
     37					; MODIFICATIONS:
     38					;	JS0001	12-APR-78 JOHN SAUTER
     39					;		ADD A SUBROUTINE WHICH COUNTS THE AMOUNT
     40					;		OF FREE SPACE IN THE NODE NAME TABLE, AND
     41					;		ADD A CALL TO IT FROM GETNNO SO THAT WE CANNOT
     42					;		USE UP ALL OF THE NODE NAME TABLE ISSUING
     43					;		CONNECTS TO REMOTE NODES.
     44					;	LW0002	3-MAY-78  LEE WEBBER
     45					;		CHANGE "CHKULA" TO DETECT SEARCH FAILURE.
     46					;	LW0003	19-MAY-78 LEE WEBBER
     47					;		ENHANCE SYSTEM INTERFACE SUPPORT.
     48					;	AP0004	25-OCT-78 ALAN D. PECKHAM
     49					;		CORRECT CALL TO RETUSR IN CLNLNK.
     50					;		MERGE REMXQ* CALLS TO REMSYS.
     51					;		ATTEMPT TO FLUSH TRANSMIT QUEUES IN DISUS1.
     52					;	AP0005	20-NOV-78 ALAN D. PECKHAM
     53					;		CONDITIONALIZE JS0001 ADDITIONS
     54					;	AP0006	24-JAN-79 ALAN D. PECKHAM
     55					;		HANDLE SUBSTITUTIONS FOR A BLANK NODE NAME
     56					;		USE $HOST IF NOT BLANK, OTHERWISE $NTNAM.
     57					;	LW0007	30-APR-79  L. WEBBER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 3-1


     58					;		VERIFY FOR ILT BEING FREED BY "CLNLNK" THAT 1) THE
     59					;		LINK IS DISCONNECTING OR 2) THE OTHER HALF OF THE
     60					;		ILT PAIR IS PRESENT
     61					;	AP0008	18-MAY-79 ALAN D. PECKHAM
     62					;		CONDITIONALIZE INTERCEPT CODE FOR LW0007
     63					;		AND LIMIT THE CHECKING SOMEWHAT TO AVOID VALID CONDITION.
     64					;	LW0009	5-JUL-79  LEE WEBBER
     65					;		REMOVE CHECK "LW0007"
     66					;	AP0010	28-AUG-79 ALAN D. PECKHAM
     67					;		SET INPUT CONDITIONS FOR SRNOD IN ROUTINE GETNNO.
     68					;
     69
     70					; EXTERNAL MACRO DEFINTIONS
     71					;
     72
     73						.MCALL	SAVMAP,MAP,RESMAP,RECMAP
     74						.MCALL	SAVRG,RESRG
     75						.MCALL	CALLC,CALLX
     76						.MCALL	$QDLC,$QLLC
     77						.MCALL	$MVTBF,$MVFBF
     78						.MCALL	CCBDF$,NSPSY$
     79	000000					CCBDF$			; DEFINE THE CCB OFFSETS
     80	000000					NSPSY$			; DEFINE THE NSP SYMBOLS
     81
     82
     83						.IF NDF N$$SYS&N$$USR
     84						N$$SYS=1		;IF NEITHER INTERFACE IS SPECIFIED
     85									;THEN DEFAULT TO SYSTEM INTERFACE
     86						.ENDC
     87
     88	000000					.PSECT	NSPSBA
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 4
ADDLNK - ADD A LOGICAL LINK TABLE

     90						.SBTTL ADDLNK - ADD A LOGICAL LINK TABLE
     91					;+
     92					; **-ADDLNK-ADD A LOGICAL LINK
     93					;
     94					; THIS SUBROUTINE IS CALLED TO ADD ANOTHER LOGICAL LINK TABLE.
     95					;
     96					; INPUTS:
     97					;
     98					;	NONE
     99					;
    100					; OUTPUTS:
    101					;
    102					;	C-BIT CLEAR:
    103					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    104					;
    105					;	C-BIT SET:
    106					;	R0 IS UNDEFINED, UNABLE TO ADD ANOTHER LOGICAL LINK TABLE
    107					;	R1 = ERROR CODE  (ER$RES)
    108					;
    109					; REGISTERS MODIFIED:
    110					;
    111					;	R1, R2
    112					;
    113					;-
    114
    115	000000	004567 	000000G		ADDLNK::JSR	R5,$SAVRG	; SAVE REGISTERS
    116	000004					CALL	STLVC		; COMPUTE ADDRESS OF THE LOGICAL LINK DESCRIPTOR
    117	000010	010305 				MOV	R3,R5		; SAVE THE MAXIMUM NUMBER OF LINKS
    118
    119	000012	005724 			10$:	TST	(R4)+		; SEARCH THE ADDRESS TABLE FOR A FREE SLOT
    120	000014	001403 				BEQ	20$		; IF EQ, FOUND A FREE SLOT
    121	000016					SOB	R5,10$		; KEEP LOOKING
    122	000022	000452 				BR	40$		; NO ROOM TO ADD ANOTHER LLT - ERROR
    123
    124	000024				20$:				;
    125						.IF DF	N$$LV2
    126						MOV	#L.LNG2,R1	; SET LENGTH OF A LEVEL 2 LLT
    127						.IFF
    128	000024	012701 	000054 			MOV	#L.LNG1,R1	; SET LENGTH OF A LEVEL 1 LLT
    129						.ENDC
    130
    131	000030					CALL	$ALOCB		; ALLOCATE THE LLT FROM THE SYSTEM
    132	000034	103445 				BCS	40$		; IF CS, ALLOCATION FAILURE - ERROR
    133	000036	010002 				MOV	R0,R2		; COPY THE LLT ADDRESS
    134	000040	060102 				ADD	R1,R2		; POINT TO THE END OF THE LLT
    135	000042	005042 			30$:	CLR	-(R2)		; INITIALIZE THE LLT TO ALL ZEROS
    136	000044	020002 				CMP	R0,R2		; DONE YET ?
    137	000046	001375 				BNE	30$		; IF NE, NO - KEEP AT IT
    138
    139	000050	010044 				MOV	R0,-(R4)	; STORE THE LLT ADDRESS IN THE TABLE
    140	000052	160503 				SUB	R5,R3		; COMPUTE THE LOCAL LINK ADDRESS
    141	000054	005203 				INC	R3		; ...
    142	000056	056703 	000000G			BIS	$ENCOD,R3	; RANDOMIZE THE HIGH BYTE OF THE LINK ADDRESS
    143	000062	105267 	000001G			INCB	$ENCOD+1	; ...
    144	000066	010360 	000002 			MOV	R3,L.LLA(R0)	; STORE LOCAL LINK ADDRESS IN THE LLT
    145	000072	005260 	000014 			INC	L.NXN(R0)	; INITIALIZE SEGNUM=1 FOR DATA
    146	000076	005260 	000016 			INC	L.NIN(R0)	; INITIALIZE SEGNUM=1 FOR I/LS
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 4-1
ADDLNK - ADD A LOGICAL LINK TABLE

    147	000102	005260 	000020 			INC	L.RNO(R0)	; INITIALIZE NEXT NO. TO RCV.=1 FOR DATA
    148	000106	005260 	000022 			INC	L.LNO(R0)	; INITIALIZE NEXT NO. TO RCV.=1 FOR I/LS
    149
    150	000112	016705 	000000G			MOV	$NSADB,R5	; GET THE ADDRESS OF THE DATA DESCRIPTOR BLOCK
    151	000116	016505 	000044 			MOV	N$STS+2(R5),R5	; GET THE ADDRESS OF THE STATISTICS BLOCK
    152	000122	005265 	000022 			INC	S$LNK(R5)	; COUNT ANOTHER ACTIVE LOGICAL LINK
    153	000126	026565 	000022 	000024 		CMP	S$LNK(R5),S$MLK(R5) ; IS THIS A NEW HIGH WATER MARK ?
    154	000134	101403 				BLOS	45$		; IF LOS, NO
    155	000136	016565 	000022 	000024 		MOV	S$LNK(R5),S$MLK(R5) ; OTHERWISE SET NEW HIGH WATER MARK
    156	000144	000241 			45$:	CLC			; MAKE SURE NO ERROR IS REPORTED
    157	000146	000403 				BR	50$		;
    158
    159	000150	012701 	000001 		40$:	MOV	#ER$RES,R1	; SET RESOURCE FAILURE ERROR CODE
    160	000154	000261 				SEC			; MARK THE ERROR
    161	000156				50$:	RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 5
CHKULA

    163						.SBTTL	CHKULA
    164					;+
    165					; **-CHKULA-FIND A LOGICAL LINK BY THE ULA
    166					;
    167					; THIS SUBROUTINE IS CALLED TO FIND A LOGICAL LINK BY USER LINK
    168					; ADDRESS.  NO ERROR CHECKING IF PERFORMED AS THE LINK MUST
    169					; ALWAYS EXIST.
    170					;
    171					; INPUTS:
    172					;
    173					;	R5 = ADDRESS OF A CCB WITH A VALID ULA IN 'C.NSP'
    174					;
    175					; OUTPUTS:
    176					;
    177					;	R0 = ADDRESS OF THE CORRESPONDING LLT
    178					;
    179					; REGISTERS MODIFIED:
    180					;
    181					;	R3, R4
    182					;
    183					;-
    184	000000					.PSECT	$NSACP
    185
    186	000000				CHKULA::CALL	STLVC		; COMPUTE ADDRESS OF THE LOGICAL LINK DESCRIPTOR
    187	000004	010346 				MOV	R3,-(SP)	; SAVE R3                                       ;LW0002
    188	000006	012400 			10$:	MOV	(R4)+,R0	; GET AN LLT
    189	000010	001406 				BEQ	20$		; IF EQ, NO LLT - TRY NEXT ENTRY                ;LW0002
    190					                                                                                ;**-1
    191						.IF DF	N$$ICF
    192
    193						BIT	#LF.INT,(R0)	; INTERCEPT LINK ?
    194						BNE	20$		; IF NE, YES - TRY NEXT ENTRY                   ;LW0002
    195					                                                                                ;**-1
    196						.ENDC
    197
    198	000012	026560 	000004 	000040 		CMP	C.NSP(R5),L.ULA(R0) ; IS THIS THE LINK WE WANT ?
    199	000020	001002 				BNE	20$		; IF NE, NO - TRY NEXT ENTRY                    ;LW0002
    200	000022	000241 				CLC			; GOT IT..                                      ;LW0002
    201	000024	000403 				BR	100$		;   GO HOME                                     ;LW0002
    202	000026				20$:	SOB	R3,10$		; TRY NEXT ENTRY IF THERE IS ONE                ;LW0002
    203	000032	000261 				SEC			;   (NOT)                                       ;LW0002
    204	000034	012603 			100$:	MOV	(SP)+,R3	; RECOVER R3 AND                                ;LW0002
    205	000036					RETURN			; RETURN TO CALLER                              ;**-1
    206
    207	000160					.PSECT	NSPSBA
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 6
CHKFLG

    209						.SBTTL	CHKFLG
    210					;+
    211					; **-CHKFLG-SET UP LOGICAL LINK TYPE AND FLOW CONTROL OPTIONS
    212					;
    213					; INPUTS:
    214					;
    215					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    216					;
    217					;
    218					; OUTPUTS:
    219					;
    220					;	R3 = MESSAGE FLAGS FOR LOGICAL LINK TYPE
    221					;
    222					; REGISTERS MODIFIED:
    223					;
    224					;	NONE
    225					;
    226					;-
    227
    228	000160				CHKFLG::                                                                        ;LW0003
    229	000160	012703 	000001 			MOV	#CL$TYP,R3	; ASSUME NO FLOW CONTROL.                       ;LW0003
    230						.IF DF N$$SYS&N$$USR                                                    ;LW0003
    231	000164	105760 	000041 			TSTB	L.PDV(R0)	; SYSTEM OR USER INTERFACE?                     ;LW0003
    232	000170	001416 				BEQ	20$		; USER (ALWAYS MSG FLOW)                        ;LW0003
    233						.ENDC                                                                   ;LW0003
    234						.IF DF N$$SYS                                                           ;LW0003
    235	000172	032762 	000001 	000012 		BIT	#NT.SFL,C.STS(R2) ; IF SEGMENT FLOW CONTROL REQUESTED,          ;LW0003
    236	000200	001406 				BEQ	10$		  ; (AND NOT OTHERWISE)                         ;LW0003
    237	000202	052760 	040000 	000012 		BIS	#LF.MSF,L.FLG(R0) ; SAY SO IN THE LLT                           ;LW0003
    238	000210	052703 	000004 			BIS	#CL$SFL,R3	  ; AND THE MESSAGE FLAGS                       ;LW0003
    239	000214	000411 				BR	30$                                                             ;LW0003
    240	000216	032762 	000002 	000012 	10$:	BIT	#NT.MFL,C.STS(R2) ; IF, ON THE OTHER HAND,                      ;LW0003
    241	000224	001405 				BEQ	30$		  ; MESSAGE FLOW CONTROL IS REQUESTED,          ;LW0003
    242						.ENDC                                                                   ;LW0003
    243	000226	052760 	100000 	000012 	20$:	BIS	#LF.MMF,L.FLG(R0) ; SAY THAT IN THE LLT                         ;LW0003
    244	000234	052703 	000010 			BIS	#CL$MFL,R3	  ; AND THE MESSAGE FLAGS                       ;LW0003
    245	000240				30$:	RETURN                                                                  ;LW0003
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 7
GETNNO - FIND DESTINATION NODE FOR A USER CONNECT

    247						.SBTTL	GETNNO - FIND DESTINATION NODE FOR A USER CONNECT
    248					;+
    249					; **-GETNNO-FIND DESTINATION NODE FOR A USER REQUEST
    250					;
    251					; THIS SUBROUTINE IS CALLED TO RESOLVE A NODE NAME FOR A USER CONNECT
    252					; REQUEST. THE DESTINATION NODE MUST EITHER EXIST AS AN ADJACENT NODE
    253					; OR THIS NODE MUST BE INTERCEPTED AND SUFFICIENT SPACE AVAILABLE TO
    254					; ADD THE NODE NAME TO THE DATA BASE.
    255					;
    256					; INPUTS:
    257					;
    258					;	R5 = ADDRESS OF USER CONNECT CCB
    259					;		THE USER CONNECT BLOCK IS ASSUMED TO BE MAPPED
    260					;
    261					; OUTPUTS:
    262					;
    263					;	C-BIT CLEAR:
    264					;	R3 = POINTER TO DESTINATION NODE IN NODE DATA BASE
    265					;	R4 = LOGICAL LINK TYPE FLAGS
    266					;
    267					;	C-BIT SET:
    268					;	R1 = NSP ERROR CODE  (ER$NOD)
    269					;	R3 = UNDEFINED
    270					;
    271					; REGISTERS MODIFIED:
    272					;
    273					;	R0, R1, AND R2
    274					;
    275					;-
    276
    277	000242				GETNNO::SAVRG	<R5>		; SAVE CCB ADDRESS
    278	000244	016500 	000016 			MOV	C.BUF+2(R5),R0	; GET ADDRESS OF USER CONNECT BLOCK
    279	000250	005004 				CLR	R4		; INITIALIZE LINK TYPE FLAGS WORD
    280	000252	016705 	000000G			MOV	$NSADB,R5	; GET THE ADDRESS OF THE DATA DESCRIPTOR BLOCK
    281	000256					CALL	NDLNG		; GET THE LENGTH OF THE NODE NAME STRING
    282	000262	001011 				BNE	10$		; IF NULL,                                      ;AP0006
    283	000264	012700 	000000G			MOV	#$HOST,R0	; THEN TRY DEFAULT HOST.                        ;AP0006
    284	000270					CALL	NDLNG		; CHECK ITS LENGTH                              ;AP0006
    285	000274	001004 				BNE	10$		; AND IF THAT IS NULL                           ;AP0006
    286	000276	012700 	000000G			MOV	#$NTNAM,R0	; THEN USE LOCAL NODE NAME.                     ;AP0006
    287	000302					CALL	NDLNG		; GET ITS LENGTH.                               ;AP0006
    288	000306	005003 			10$:	CLR	R3		; LET SRNOD KNOW NOT TO RESERVE NODE ENTRY      ;AP0010
    289	000310					CALLC	SRNOD		; SEARCH FOR THE NODE NAME IN THE DATA BASE
    290	000320	103015 				BCC	30$		; IF CC, FOUND IT - EXIT
    291	000322	005713 				TST	(R3)		; IS THE FREE ENTRY THE SCRATCH ENTRY ?
    292	000324	100437 				BMI	60$		; IF MI, YES - CANNOT REACH DESTINATION
    293						.IF DF	N$$ICF                                                          ;AP0005
    294						CALL	CFRNOD		; COUNT THE FREE SPACES IN THE NODE NAME TABLE  ;JS0001
    295						CMP	R2,#3		; IS THERE PLENTY OF SPACE?                     ;JS0001
    296						BLE	60$		; IF LE, NO: DONT PERMIT THIS CONNECT           ;JS0001
    297						.ENDC                                                                   ;AP0005
    298	000326	016505 	000006 			MOV	N$ICF(R5),R5	; DOES ANY PHYSICAL LINK INTERCEPT FOR THIS NODE ?
    299	000332	001434 				BEQ	60$		; IF EQ, NO - CANNOT REACH DESTINATION
    300	000334	122715 	000005 			CMPB	#PS$UP,(R5)	; LINK TO INTERCEPT AVAILABLE ?
    301	000340	001031 				BNE	60$		; IF NE, NO - CANNOT REACH DESTINATION
    302	000342	012702 	010000 			MOV	#DF$REM,R2	; SET FLAGS TO ADD A NEW NODE NAME
    303	000346					CALL	ADNOD		; ADD A NEW NODE TO THE DATA BASE
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 7-1
GETNNO - FIND DESTINATION NODE FOR A USER CONNECT

    304	000352	000416 				BR	45$		; EXIT
    305
    306	000354	032713 	040000 		30$:	BIT	#DF$LCL,(R3)	; IS THE TARGET NODE THE LOCAL NODE ?
    307	000360	001415 				BEQ	50$		; IF EQ, NO - CHECK IF PHYSICAL LINK IS AVAILABLE
    308	000362	005765 	000010 			TST	N$LNI(R5)	; IS LOOPBACK ENABLED FOR ANY PHYSICAL LINK ?
    309	000366	001406 				BEQ	40$		; IF EQ, NO - DON'T BOTHER TO CHECK IF LINK IS UP
    310	000370	016305 	000002 			MOV	D$CHN(R3),R5	; IS THERE ANY PHYSICAL LINK ?
    311	000374	001403 				BEQ	40$		; IF EQ, NO - CHECK IF THIS IS THE LOCAL NODE
    312	000376	122715 	000005 			CMPB	#PS$UP,(R5)	; IS THE PHYSICAL LINK AVAILABLE ?
    313	000402	001413 				BEQ	70$		; IF EQ, YES - USE IT (C-BIT CLEAR)
    314	000404	052704 	040000 		40$:	BIS	#LF.LCL,R4	; BUILD THE LINK INTERNALLY
    315	000410	000241 			45$:	CLC			; INDICATE SUCCESS
    316	000412	000407 				BR	70$		;
    317
    318	000414	122773 	000005 	000002 	50$:	CMPB	#PS$UP,@D$CHN(R3) ; IS THE DESTINATION NODE REACHABLE ?
    319	000422	001403 				BEQ	70$		; IF EQ, YES - USE THE PHYSICAL LINK
    320	000424	000261 			60$:	SEC			; SET DESTINATION NODE CANNOT BE REACHED
    321	000426	012701 	000002 			MOV	#ER$NOD,R1	; ...ERROR CODE
    322	000432				70$:	RESRG	<R5>		; RESTORE R5
    323	000434					RETURN			; RETURN TO CALLER
    324
    325
    326						.SBTTL	NDLNG - FIND THE LENGTH OF A NODE NAME
    327					;+
    328					; **-NDLNG-FIND THE LENGTH OF A NODE NAME
    329					;
    330					; THIS SUBROUTINE IS CALLED TO COMPUTE THE LENGTH OF A NODE NAME STRING
    331					; PROVIDED BY A USER.  THE MAXIMUM LENGTH OF THE STRING IS SIX CHARACTERS,
    332					; BUT A SPACE CODE MAY SHORT TERMINATE THE STRING.
    333					;
    334					; INPUTS:
    335					;
    336					;	R0 = ADDDRESS OF THE NODE NAME STRING
    337					;
    338					; OUTPUTS:
    339					;
    340					;	R1 = LENGTH OF THE STRING
    341					;
    342					; REGISTERS MODIFIED:
    343					;
    344					;	R3
    345					;
    346					;-
    347
    348	000436	012703 	000006 		NDLNG::	MOV	#6,R3		; SET MAXIMUM LENGTH OF NODE NAME
    349	000442	010001 				MOV	R0,R1		; COPY THE POINTER TO THE NODE NAME
    350	000444	122721 	000040 		10$:	CMPB	#' ,(R1)+	; SCAN THE STRING FOR A SPACE CODE
    351	000450	001403 				BEQ	20$		; IF EQ, FOUND THE END OF THE STRING
    352	000452					SOB	R3,10$		; LOOP UNTIL DONE
    353	000456	005201 				INC	R1		; NEED AN EXTRA IF STRING IS SIX CHARACTERS
    354	000460	160001 			20$:	SUB	R0,R1		; COMPUTE THE LENGTH OF THE NODE NAME
    355	000462	005301 				DEC	R1		; ...
    356	000464					RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 8
CFRNOD - COUNT THE SPACES IN THE NODE NAME TABLE

    358						.SBTTL	CFRNOD - COUNT THE SPACES IN THE NODE NAME TABLE                ;JS0001
    359					;+                                                                              ;JS0001
    360					; **-CFRNOD-COUNT THE EMPTY SPACES IN THE NODE NAME TABLE                       ;JS0001
    361					;                                                                               ;JS0001
    362					; INPUTS:                                                                       ;JS0001
    363					;                                                                               ;JS0001
    364					;	NONE                                                                    ;JS0001
    365					;                                                                               ;JS0001
    366					; OUTPUTS:                                                                      ;JS0001
    367					;                                                                               ;JS0001
    368					;	R2 CONTAINS THE NUMBER OF FREE SPACES IN THE NODE NAME TBALE            ;JS0001
    369					;                                                                               ;JS0001
    370					;-                                                                              ;JS0001
    371					;                                                                               ;JS0001
    372						.IF DF	N$$ICF                                                          ;AP0005
    373					                                                                                ;JS0001
    374					CFRNOD::SAVRG	<R3,R4>                                                         ;JS0001
    375						CLR	R2		;INITIALIZE COUNT CELL                          ;JS0001
    376						MOV	$NSADB,R3	;POINT TO NSP DATA BASE                         ;JS0001
    377						ADD	#N$NOD,R3	;POINT TO NODE NAME TABLE DESCRIPTOR            ;JS0001
    378						MOV	(R3)+,R4	;NUMBER OF NODE NAME ENTRIES IN THE TABLE       ;JS0001
    379						MOV	(R3),R3		;ADDRESS OF TABLE                               ;JS0001
    380					10$:	BIT	#DF$FRE,(R3)	;IS THIS ENTRY FREE?                            ;JS0001
    381						BNE	20$		;IF NE, NO.                                     ;JS0001
    382						INC	R2		;YES, COUNT ANOTHER FREE ENTRY                  ;JS0001
    383					20$:	ADD	#D$LEN,R3	;ADVANCE TO NEXT TABLE ENTRY                    ;JS0001
    384						SOB	R4,10$		;CHECK EACH ENTRY                               ;JS0001
    385						RESRG	<R4,R3>                                                         ;JS0001
    386						RETURN                                                                  ;JS0001
    387						.ENDC                                                                   ;AP0005
    388					;                                                                               ;JS0001
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 9
NWNOD - ADD A NODE FOR A CONNECT INITIATE

    390						.SBTTL	NWNOD - ADD A NODE FOR A CONNECT INITIATE                       ;JS0001
    391					;+                                                                              ;**-1
    392					; **-NWNOD-ADD A NEW NODE FOR A CONNECT INITIATE
    393					;
    394					; INPUTS:
    395					;
    396					;	R4 = POINTER TO AN IMAGE FIELD NODE NAME
    397					;	R5 = ADDRESS OF MESSAGE CCB WHICH CONTAINS A VALID 'C.LIN'
    398					;
    399					; OUTPUTS:
    400					;
    401					;	THE NODE NAME RECEIVED IN THE MESSAGE IS ADDED TO THE NODE DATA
    402					;	BASE
    403					;
    404					; REGISTERS MODIFIED:
    405					;
    406					;	NONE
    407					;
    408					;-
    409						.ENABL	LSB
    410
    411	000466	004567 	000000G		NWNOD::	JSR	R5,$SAVRG	; SAVE R5, R4, AND R3
    412	000472					CALL	STPLD		; COMPUTE PHYSICAL LINK DATA BASE ADDRESS
    413	000476	112401 				MOVB	(R4)+,R1	; GET THE LENGTH OF THE SOURCE NODE NAME
    414	000500	010400 				MOV	R4,R0		; SET THE POINTER TO THE NAME
    415	000502	012702 	010000 			MOV	#DF$REM,R2	; SET THE FLAGS FOR A REMOTE NODE
    416	000506	000402 				BR	10$		; CONTINUE
    417
    418
    419						.SBTTL	ADNOD - ADD A NODE NAME TO THE DATA BASE
    420					;+
    421					; **-ADNOD-ADD A NODE NAME TO THE DATA BASE
    422					;
    423					; INPUTS:
    424					;
    425					;	R0 = ADDRESS OF THE NEW NODE NAME STRING
    426					;	R1 = LENGTH OF THE NODE NAME STRING
    427					;	R2 = NODE NAME ENTRY FLAGS
    428					;	R3 = POINTER TO A FREE ENTRY IN THE NODE DATA BASE
    429					;	R5 = ADDRESS OF THE PHYSICAL LINK BLOCK TO USE
    430					;
    431					; OUTPUTS:
    432					;
    433					;	C-BIT CLEAR:
    434					;	THE NODE NAME IS ADDED TO THE DATA BASE
    435					;
    436					; REGISTERS MODIFIED:
    437					;
    438					;	R0, R1, AND R2
    439					;
    440					;-
    441
    442	000510	004567 	000000G		ADNOD::	JSR	R5,$SAVRG	; SAVE R5, R4, AND R3
    443	000514	050223 			10$:	BIS	R2,(R3)+	; STORE THE NODE ENTRY FLAGS
    444	000516	010523 				MOV	R5,(R3)+	; STORE THE LINK BLOCK ADDRESS
    445	000520	105723 				TSTB	(R3)+		; SKIP OVER THE USE COUNT (CLEAR C-BIT)
    446	000522	110123 				MOVB	R1,(R3)+	; STORE THE NODE NAME LENGTH
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 9-1
ADNOD - ADD A NODE NAME TO THE DATA BASE

    447	000524	010304 				MOV	R3,R4		; COPY THE ADDRESS
    448	000526	012724 	020040 			MOV	#"  ,(R4)+	; INITIALIZE THE NODE NAME TO SPACES
    449	000532	012724 	020040 			MOV	#"  ,(R4)+	; ...
    450	000536	012724 	020040 			MOV	#"  ,(R4)+	; ...
    451	000542	112023 			20$:	MOVB	(R0)+,(R3)+	; NOW MOVE IN THE NODE NAME
    452	000544					SOB	R1,20$		; ...
    453	000550					RETURN			; RETURN TO CALLER
    454
    455						.DSABL	LSB
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 10
ADNOD - ADD A NODE NAME TO THE DATA BASE

    457
    458						.SBTTL	LINE PARAMETER SET UP
    459					;+
    460					; **-STLN0-SETUP PHYSICAL LINK PARAMETERS FROM A CCB
    461					; **-STPLD-ALTERNATE ENTRY
    462					;
    463					; INPUTS:
    464					;
    465					;	R4 = ADDRESS OF CCB  (ENTRY AT STLN0 ONLY)
    466					;	R5 = ADDRESS OF CCB  (ENTRY AT STPLD ONLY)
    467					;
    468					; OUTPUTS:
    469					;
    470					;	R2 = ADDRESS OF LINE CLEAN UP WORD
    471					;	R4 = UNMODIFIED
    472					;	R5 = ADDRESS OF LINE FLAGS & STATE WORD
    473					;
    474					; REGISTERS MODIFIED:
    475					;
    476					;	R0 AND R1
    477					;
    478					;-
    479						.ENABL	LSB
    480
    481	000552	005000 			STPLD::	CLR	R0		; EXTRACT CHANNEL NUMBER FOR THE CCB
    482	000554	156500 	000006 			BISB	C.LIN(R5),R0	; ...
    483	000560	000403 				BR	10$		;
    484
    485	000562	005000 			STLN0::	CLR	R0		; EXTRACT CHANNEL NUMBER FROM THE CCB
    486	000564	156400 	000006 			BISB	C.LIN(R4),R0	; ...
    487	000570	012701 	000014 		10$:	MOV	#P$LEN,R1	; SET LENGTH OF THE LINK BLOCK
    488
    489						.IF DF	R$$EIS
    490						MUL	R0,R1		; COMPUTE OFFSET INTO DATA BASE
    491						.IFF
    492	000574					CALL	$MUL		; COMPUTE THE OFFSET INTO THE DATA BASE
    493						.ENDC
    494
    495	000600	016705 	000000G			MOV	$NSADB,R5	; GET THE ADDRESS OF THE PHYSICAL LINK
    496	000604	016505 	000030 			MOV	N$PLD+2(R5),R5	; ...DESCRIPTOR
    497	000610	060105 				ADD	R1,R5		; COMPUTE THE ADDRESS OF THE PHYSICAL LINK BLOCK
    498	000612	010502 				MOV	R5,R2		; COMPUTE THE ADDRESS OF THE RECOVERY CELL
    499	000614	005722 				TST	(R2)+		; ...
    500	000616					RETURN			; RETURN TO CALLER
    501
    502						.DSABL	LSB
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 11
STLVC - COMPUTE ADDRESS OF LOGICAL LINK VECTOR

    504						.SBTTL	STLVC - COMPUTE ADDRESS OF LOGICAL LINK VECTOR
    505					;+
    506					; **-STLVC-COMPUTE ADDRESS OF LOGICAL LINK VECTOR
    507					;
    508					; INPUTS:
    509					;
    510					;	NONE
    511					;
    512					; OUTPUTS:
    513					;
    514					;	R3 = MAXIMUM NUMBER OF LOGICAL LINKS
    515					;	R4 = ADDRESS OF FIRST ENTRY OF THE LOGICAL LINK VECTOR
    516					;
    517					; REGISTERS MODIFIED:
    518					;
    519					;	NONE
    520					;
    521					;-
    522
    523	000620	016704 	000000G		STLVC::	MOV	$NSADB,R4	; COMPUTE ADDRESS OF THE LOGICAL LINK DESCRIPTOR
    524	000624	062704 	000022 			ADD	#N$LVC,R4	; ...
    525	000630	012403 				MOV	(R4)+,R3	; GET THE MAXIMUM NUMBER OF LINKS
    526	000632	011404 				MOV	(R4),R4		; GET THE ADDRESS OF THE LLT ADDRESS TABLE
    527	000634	005724 				TST	(R4)+		; SKIP OVER THE (UNUSED) FIRST ENTRY
    528	000636					RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 12
CONSM2

    530						.SBTTL	CONSM2
    531					;+
    532					; **-CONSM2-BUILD PROCESS NAMES, ACCESS CONTROL AND USER DATA FIELDS
    533					;
    534					; THIS ROUTINE IS CALLED TO BUILD THE DESTINATION DESCRIPTOR NAME,
    535					; THE SOURCE DESCRIPTOR NAME, THE ACCESS CONTROL AND USER DATA FIELDS
    536					; OF THE CONNECT MESSAGE.
    537					;
    538					; INPUTS:
    539					;
    540					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    541					;	R4 = MESSAGE POINTER (MUST ALSO BE MAPPED TO THE MESSAGE BUFFER)
    542					;	R5 = CCB ADDRESS FROM USERS CONNECT REQUEST
    543					;
    544					; OUTPUTS:
    545					;
    546					;	C-BIT CLEAR:
    547					;	CONNECT BLOCK FORMATTED AND BUILT SUCCESSFULLY
    548					;
    549					;	C-BIT SET:
    550					;	ERROR IN FORMATTING THE CONNECT BLOCK
    551					;	R1 = NSP ERROR CODE (ER$FMT)
    552					;
    553					;-
    554
    555	000640				CONSM2::SAVRG	<R0,R5>		; SAVE REGISTERS REQUIRED
    556	000644	016500 	000016 			MOV	C.BUF+2(R5),R0	; GET THE ADDRESS OF THE DESCRIPTOR BLOCK
    557
    558					; BUILD THE CORRECT SEGMENT SIZE
    559	000650	016703 	000000G			MOV	$RDBSZ,R3	; COMPUTE OUR MAXIMUM SEGMENT SIZE
    560	000654	162703 	000042 			SUB	#N$$OVR,R3	; ...
    561	000660	016001 	000006 			MOV	N.SEG(R0),R1	; GET USER REQUESTED SIZE
    562	000664	001402 				BEQ	10$		; IF EQ, USE OUR SEGMENT SISE
    563	000666	020103 				CMP	R1,R3		; DOES THE USER WANT LESS THAN THE MAXIMUM ?
    564	000670	103401 				BLO	20$		; IF LO, YES - LET HIM HAVE IT
    565	000672	010301 			10$:	MOV	R3,R1		; OTHERWISE USER OUR MAXIMUM SIZE
    566	000674				20$:	CALLC	PUTBIN		; PUT SEGMENT SIZE IN THE MESSAGE
    567
    568					; BUILD THE DESTINATION AND SOURCE DESRCIPTOR NAMES
    569	000704	012705 	010010 			MOV	#16.*400!N.DFMT,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
    570	000710					CALL	CONSM3		; BUILD THE DESTINATION DESCIPTOR NAME
    571	000714	103432 				BCS	30$		; IF CS, FIELD FORMAT ERROR
    572	000716	012705 	010034 			MOV	#16.*400!N.SFMT,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
    573	000722					CALL	CONSM3		; BUILD THE SOURCE DESCRIPTOR NAME
    574	000726	103425 				BCS	30$		; IF CS, FIELD FORMAT ERROR
    575
    576					; BUILD THE ACCESS CONTROL FIELDS
    577	000730	112724 	000003 			MOVB	#CL.MU1!CL.MU2,(R4)+ ; SET ACCESS CONTROL AND USER DATA FIELDS
    578									;   ARE PRESENT IN THE MESSAGE
    579	000734	012705 	010060 			MOV	#16.*400!N.RQDL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
    580	000740					CALL	BLDIMG		; BUILD THE REQUESTOR ID FIELD
    581	000744	103416 				BCS	30$		; IF CS, FIELD FORMAT ERROR
    582	000746	012705 	004102 			MOV	#8.*400!N.PASL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
    583	000752					CALL	BLDIMG		; BUILD THE PASSWORD FIELD
    584	000756	103411 				BCS	30$		; IF CS, FIELD FORMAT ERROR
    585	000760	012705 	010114 			MOV	#16.*400!N.ACTL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
    586	000764					CALL	BLDIMG		; BUILD THE ACCOUNT DATA FIELD
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 12-1
CONSM2

    587	000770	103404 				BCS	30$		; IF CS, FIELD FORMAT ERROR
    588	000772	012705 	010136 			MOV	#16.*400!N.OPDL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
    589	000776					CALL	BLDIMG		; BUILD THE USER DATA FIELD
    590	001002	012701 	000005 		30$:	MOV	#ER$FMT,R1	; ASSUME A FIELD FORMAT ERROR
    591	001006					RESRG	<R5,R0>		; RESTORE THE REGISTERS
    592	001012					RETURN			; RETURN TO CALLER
    593
    594					;+
    595					; **-CONSM3-BUILD A DESCRIPTOR NAME INTO THE MESSAGE
    596					;
    597					; INPUTS:
    598					;
    599					;	R0 = ADDRESS OF THE DESCRIPTOR BLOCK
    600					;	R4 = MESSAGE POINTER TO NEXT FIELD
    601					;	R5 = MAXIMUM FIELD LENGTH  (HIGH BYTE)
    602					;	     OFFSET IN THE BLOCK   (LOW BYTE)
    603					;
    604					; OUTPUTS:
    605					;
    606					;	C-BIT CLEAR:
    607					;	DESCRIPTOR FORMATTED CORRECTLY
    608					;
    609					;	C-BIT SET:
    610					;	INVALID DESCRIPTOR FORMAT
    611					;-
    612
    613	001014	110502 			CONSM3:	MOVB	R5,R2		; COMPUTE THE ADDERSS IN DESCRIPTOR BLOCK
    614	001016	060002 				ADD	R0,R2		; ...
    615	001020	112201 				MOVB	(R2)+,R1	; GET THE FORMAT TYPE CODE
    616	001022	110124 				MOVB	R1,(R4)+	; STORE IN THE MESSAGE
    617	001024	112224 				MOVB	(R2)+,(R4)+	; STORE THE OBJECT TYPE CODE
    618	001026	022701 	000002 			CMP	#NC.FM2,R1	; IS THE FORMAT TYPE WITHIN RANGE ?
    619	001032	103421 				BLO	20$		; IF LO, NO - ERROR (C-BIT SET)
    620	001034	005301 				DEC	R1		; WHICH FORMAT IS IT ?
    621	001036	100417 				BMI	20$		; IF MI, FORMAT TYPE 0 - ALL DONE
    622	001040	001414 				BEQ	10$		; IF EQ, FORMAT TYPE 1 - JUST MOVE THE DATA
    623	001042	012201 				MOV	(R2)+,R1	; OTHERWISE, FORMAT TYPE 2 - GET GROUP CODE
    624	001044					CALLC	PUTBIN		; STORE IN THE MESSAGE
    625	001054	012201 				MOV	(R2)+,R1	; GET THE USER CODE
    626	001056					CALLC	PUTBIN		; STORE IN THE MESSAGE
    627	001066	162705 	002000 			SUB	#4*400,R5	; REDUCE THE FIELD SIZE APPROPRIATELY
    628	001072				10$:	CALL	BLDIMA		; BUILD THE REST OF THE DESCRIPTOR NAME FIELD
    629	001076				20$:	RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 13
CONSM2

    631					;+
    632					; **-BLDIMG-BUILD AN IMMAGE FIELD FROM THE USER DESCRIPTOR BLOCK
    633					; **-BLDIMA-ALTERNATE ENTRY
    634					;
    635					; INPUTS:
    636					;
    637					;	R0 = ADDRESS OF THE DESCRIPTOR BLOCK
    638					;	R4 = MESSAGE POINTER TO NEXT FIELD
    639					;	R5 = MAXIMUM FIELD LENGTH  (HIGH BYTE)
    640					;	     OFFSET IN THE BLOCK   (LOW BYTE)
    641					;
    642					; OUTPUTS:
    643					;
    644					;	THE FIELD IS BUILT IN THE MESASGE ACCORDING TO THE PARAMETERS
    645					;	IN THE DESCRIPTOR BLOCK.
    646					;
    647					;	NOTE: THIS ROUTINE EXPECTS THAT THE LENGTH OF THE FIELD IN THE
    648					;	DESCRIPTOR BLOCK IS WORD ALIGNED AND TWO BYTES IN LENGTH.  THIS
    649					;	ROUTINE ALSO EXPECTS THAT ONLY THE LOW BYTE OF THE FIELD LENGTH
    650					;	IS SIGNIFICANT.
    651					;
    652					; REGISTERS MODIFIED:
    653					;
    654					;	R1, R2, R3, AND R5
    655					;-
    656
    657	001100	110502 			BLDIMG:	MOVB	R5,R2		; COMPUTE THE ADDRESS IN THE DESCRIPTOR BLOCK
    658	001102	060002 				ADD	R0,R2		; ...
    659
    660	001104	000305 			BLDIMA:	SWAB	R5		; GET MAXIMUM FIELD LENGTH IN THE LOW BYTE
    661	001106	120512 				CMPB	R5,(R2)		; IS THE LENGTH WITHIN RANGE ?
    662	001110	103406 				BLO	20$		; IF LO, NO - ERROR (C-BIT SET)
    663	001112	111224 				MOVB	(R2),(R4)+	; STORE THE IMAGE FIELD LENGTH IN THE MESSAGE
    664	001114	012203 				MOV	(R2)+,R3	; GET THE FIELD LENGTH
    665	001116	001403 				BEQ	20$		; IF EQ, ALL DONE WITH THIS FIELD
    666	001120	112224 			10$:	MOVB	(R2)+,(R4)+	; MOVE THE DATA
    667	001122					SOB	R3,10$		; LOOP UNTIL DONE
    668	001126				20$:	RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 14
GETDBK,RLSDBK

    670						.SBTTL	GETDBK,RLSDBK
    671					;+
    672					; **-GETDBK-GET A DESRCIPTOR BLOCK FOR AN INCOMING CONNECT
    673					;
    674					; INPUTS:
    675					;
    676					;	NONE
    677					;
    678					; OUTPUTS:
    679					;
    680					;	C-BIT CLEAR:
    681					;	R5 = ADDRESS OF A CCB WHICH HAS THE FIRST BUFFER DESCRIPTOR
    682					;	     POINTING TO THE DESCRIPTOR BLOCK
    683					;
    684					;	C-BIT SET:
    685					;	CCB OR POOL ALLOCATION FAILURE
    686					;	R1 = ERROR CODE  (ER$RES)
    687					;
    688					;-
    689						.ENABL	LSB
    690
    691	001130				GETDBK::SAVRG	<R0,#ER$RES,R4>	; SAVE REGISTERS AND ASSUME A RESOURCE ERROR
    692	001140					CALL	CCBGT		; ALLOCATE A CCB
    693	001144	103433 				BCS	30$		; IF CS, ALLOCATION FAILURE
    694	001146	010405 				MOV	R4,R5		; COPY CCB ADDRESS
    695	001150	012701 	000160 			MOV	#N.LGTH,R1	; SET LENGTH OF DESRCIPTOR BLOCK TO ALLOCATE
    696	001154					CALL	$ALOCB		; ALLOCATE THE BLOCK
    697	001160	103423 				BCS	20$		; IF CS, ALLOCATION ERROR
    698	001162	005065 	000014 			CLR	C.BUF(R5)	; ZERO RELOCATION BIAS
    699	001166	010065 	000016 			MOV	R0,C.BUF+2(R5)	; STORE DESCRIPTOR BLOCK ADDRESS
    700	001172	060001 				ADD	R0,R1		; POINT TO ADDRESS BEYOND LAST CELL
    701	001174	005041 			10$:	CLR	-(R1)		; CLEAR ALL CELLS
    702	001176	020001 				CMP	R0,R1		; BACK TO THE BEGINNING YET ?
    703	001200	001375 				BNE	10$		; IF NE, NO - KEEP GOING
    704	001202	000414 				BR	30$		; RETURN
    705
    706					;+
    707					; **-RLSDBK-RELEASE A DESCRIPTOR BLOCK
    708					;
    709					; INPUTS:
    710					;
    711					;	R5 = ADDRESS OF THE CCB AND BUFFER PAIR
    712					;
    713					;-
    714
    715	001204				RLSDBK::SAVRG	<R0,R1,R4>	; SAVE THE REGISTERS
    716	001212	010504 				MOV	R5,R4		; SWAP REGISTERS
    717	001214	016500 	000016 			MOV	C.BUF+2(R5),R0	; GET ADDRESS OF DESCRIPTOR BLOCK
    718	001220	012701 	000160 			MOV	#N.LGTH,R1	; SET LENGTH OF THE DESCRIPTOR BLOCK
    719	001224					CALL	$DEACB		; DEALLOCATE THE BLOCK
    720	001230				20$:	CALL	$CCBRT		; DEALLOCATE THE CCB
    721	001234				30$:	RESRG	<R4,R1,R0>	; RESTORE REGISTERS
    722	001242					RETURN			; RETURN TO CALLER
    723
    724						.DSABL	LSB
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 15
GETLDB - ALLOCATE A LARGE DATA BUFFER

    726						.SBTTL	GETLDB - ALLOCATE A LARGE DATA BUFFER
    727					;+
    728					; **-GETLDB-ALLOCATE A LARGE DATA BUFFER
    729					;
    730					; INPUTS:
    731					;
    732					;	NONE
    733					;
    734					; OUTPUTS:
    735					;
    736					;	C-BIT CLEAR:
    737					;	R5 = ADDRESS OF CCB WITH LARGE DATA BUFFER
    738					;	THE USER IS MAPPED TO THE DATA BUFFER
    739					;
    740					;	C-BIT SET:
    741					;	NO CCB ALLOCATED, RESOURCE ERROR COUNT IS INCREMENTED
    742					;	R5 IS UNDEFINED
    743					;-
    744						.ENABL	LSB
    745
    746	001244				GETLDB::CALL	$LDBGT		; ALLOCATE A LARGE DATA BUFFER
    747	001250	103415 				BCS	10$		; IF CS, ALLOCATION ERROR
    748	001252	010405 				MOV	R4,R5		; COPY ADDRESS OF CCB
    749	001254					MAP	C.BUF(R5)	; MAP TO THE DATA AREA
    750	001262	062765 	000020 	000016 		ADD	#16.,C.BUF+2(R5) ; LEAVE ENOUGH ROOM FOR A ROUTE HEADER
    751	001270	016504 	000016 			MOV	C.BUF+2(R5),R4	; GET THE VIRTUAL ADDRESS OF THE DATA AREA
    752	001274					RETURN			; RETURN TO CALLER
    753
    754
    755						.SBTTL	GTCCB  - ALLOCATE A CCB
    756					;+
    757					; **-GTCCB - ALLCATE A CCB
    758					;
    759					; INPUTS:
    760					;
    761					;	NONE
    762					;
    763					; OUTPUTS:
    764					;
    765					;	C-BIT CLEAR:
    766					;	R4 = ADDRESS OF THE CCB
    767					;
    768					;	C-BIT SET:
    769					;	NO CCB ALLOCATED, RESOURCE ERROR COUNT IS INCREMENTED
    770					;	R4 IS UNDEFINED
    771					;
    772					; REGISTERS MODIFIED:
    773					;
    774					;	R1
    775					;-
    776
    777	001276				CCBGT::	CALL	$CCBGT		; ALLOCATE A CCB FROM THE COMM EXEC
    778	001302	103004 				BCC	20$		; IF CC, NO ERROR - JUST RETURN
    779	001304				10$:	CALLC	CTRES		; COUNT THE RESOURCE ERROR (SETS C-BIT)
    780	001314				20$:	RETURN			; RETURN TO CALLER
    781
    782						.DSABL	LSB
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 16
PROCI

    784						.SBTTL	PROCI
    785					;+
    786					; **-PROCI-PROCESS DESCRIPTOR NAME AND ACCESS CONTROL FIELDS
    787					;
    788					; THIS ROUTINE PROCESSES THE DESTINATION DESCRIPTOR NAME, SOURCE
    789					; DESCRIPTOR NAME, ACCESS CONTROL AND USER DATA FIELDS OF A RECEIVED
    790					; CONNECT INITIATE MESSAGE.
    791					;
    792					; INPUTS:
    793					;
    794					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    795					;	R3 = REMOTE NODE INDEX
    796					;	R4 = MESSAGE POINTER (SEGMENT SIZE)
    797					;	R5 = ADDRESS OF A CCB WITH A DESCRIPTOR BLOCK
    798					;
    799					; OUTPUTS:
    800					;
    801					;	C-BIT CLEAR:
    802					;	R1 = PDV INDEX OF DESTINATION PROCESS
    803					;
    804					;	C-BIT SET:
    805					;	R1 CONTAINS ERROR CODE (ER$FMT, ER$UOB)
    806					;
    807					; REGISTERS MODIFIED:
    808					;
    809					;	R2, R3
    810					;-
    811
    812	001316				PROCI::	SAVRG	<R0,R5>		; SAVE R0 AND R5
    813	001322	016500 	000016 			MOV	C.BUF+2(R5),R0	; GET ADDRESS OF DESCRIPTOR BLOCK
    814
    815					; SET UP SOURCE NODE NAME
    816	001326	010002 				MOV	R0,R2		; SET OUTPUT ADDRESS
    817	001330	062703 	000006 			ADD	#D$NAM,R3	; POINT TO THE NODE NAME
    818	001334	012322 				MOV	(R3)+,(R2)+	; THE NODE NAME IS STORED PADDED WITH
    819	001336	012322 				MOV	(R3)+,(R2)+	; ...SPACES, AND IS WORD ALIGNED
    820	001340	012322 				MOV	(R3)+,(R2)+	; ...
    821
    822					; SET UP CORRECT SEGMENT SIZE
    823	001342					CALLC	GETBIN		; GET THE SEGMENT SIZE
    824	001352	016746 	000000G			MOV	$RDBSZ,-(SP)	; COMPUTE OUR MAXIMUM SEGMENT SIZE
    825	001356	162716 	000042 			SUB	#N$$OVR,(SP)	; ...
    826	001362	020116 				CMP	R1,(SP)		; SELECT THE SMALLER OF THE TWO VALUES
    827	001364	101001 				BHI	20$		; IF HI, USE OUR SEGMENT SIZE
    828	001366	010116 				MOV	R1,(SP)		; OTHERWISE USE THE ONE RECEIVED
    829	001370	012660 	000006 		20$:	MOV	(SP)+,N.SEG(R0)	; STORE RESULTS IN THE DESCRIPTOR BLOCK
    830
    831					; SET UP DESTINATION AND SOURCE PROCESS NAMES
    832	001374	012705 	010010 			MOV	#16.*400!N.DFMT,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
    833	001400					CALL	PRONAM		; CONVERT AND STORE THE DESTINATION PROCESS NAME
    834	001404	103457 				BCS	50$		; IF CS, FIELD FORMAT ERROR
    835	001406	012705 	010034 			MOV	#16.*400!N.SFMT,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
    836	001412					CALL	PRONAM		; CONVERT AND STORE TO SOURCE PROCESS NAME
    837	001416	103452 				BCS	50$		; IF CS, FIELD FORMAT ERROR
    838
    839					; PROCESS ACCESS CONTROL AND USER DATA FIELDS
    840	001420					CALLC	GETEX1		; GET THE MENU FIELD FLAGS
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 16-1
PROCI

    841	001430	103445 				BCS	50$		; IF CS, FIELD FORMAT ERROR
    842	001432	032701 	177774 			BIT	#CL.RES,R1	; ARE ANY OF THE RESERVED BITS SET ?
    843	001436	001042 				BNE	50$		; IF NE, YES - FIELD FORMAT ERROR
    844	001440	032701 	000001 			BIT	#CL.MU1,R1	; ARE RQSTID, PASSWD, ACCNT FIELDS PRESENT ?
    845	001444	001417 				BEQ	30$		; IF EQ, NO - DON'T ATTEMPT TO PROCESS IMAGE FIELDS
    846	001446	012705 	010060 			MOV	#16.*400!N.RQDL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
    847	001452					CALL	CNVIMG		; CONVERT AND STORE REQUESTOR ID FIELD
    848	001456	103432 				BCS	50$		; IF CS, FIELD FORMAT ERROR
    849	001460	012705 	004102 			MOV	#8.*400!N.PASL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
    850	001464					CALL	CNVIMG		; CONVERT AND STORE THE PASSWORD
    851	001470	103425 				BCS	50$		; IF CS, FIELD FORMAT ERROR
    852	001472	012705 	010114 			MOV	#16.*400!N.ACTL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
    853	001476					CALL	CNVIMG		; CONVERT AND STORE THE ACCOUNT DATA
    854	001502	103420 				BCS	50$		; IF CS, FIELD FORMAT ERROR
    855	001504	032701 	000002 		30$:	BIT	#CL.MU2,R1	; IS THERE A USER DATA FIELD ?
    856	001510	001405 				BEQ	40$		; IF EQ, NO - DON'T ATTEMPT TO PROCESS THE IMAGE FIELD
    857	001512	012705 	010136 			MOV	#16.*400!N.OPDL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
    858	001516					CALL	CNVIMG		; CONVERT AND STORE THE USER DATA
    859	001522	103410 				BCS	50$		; IF CS, FIELD FORMAT ERROR
    860
    861					; GET THE PDV INDEX OF THE DESTINATION PROCESS
    862	001524	116001 	000011 		40$:	MOVB	N.DOBJ(R0),R1	; GET THE DESTINATION OBJSET TYPE
    863	001530					CALL	$MPOBJ		; MAP OBJECT TO A PDV INDEX
    864	001534	103005 				BCC	60$		; IF CC, OBJECT TYPE EXISTS
    865	001536	012701 	000004 			MOV	#ER$UOB,R1	; OTHERWISE SET THE ERROR CODE
    866	001542	000402 				BR	60$		;
    867
    868	001544	012701 	000005 		50$:	MOV	#ER$FMT,R1	; SET THE FIELD FORMAT ERROR CODE
    869	001550				60$:	RESRG	<R5,R0>		; RESTORE THE REGISTERS
    870	001554					RETURN			; RETURN TO THE CALLER
    871
    872					;+
    873					; **-PRONAM-PROCESS DESCRIPTOR NAMES
    874					;
    875					; INPUTS:
    876					;
    877					;	R0 = ADDRESS OF THE CONNECT BLOCK
    878					;	R4 = MESSAGE POINTER TO NEXT FIELD
    879					;	R5 = MAXIMUM FIELD LENGTH  (HIGH BYTE)
    880					;	     OFFSET IN THE BLOCK   (LOW BYTE)
    881					;
    882					;-
    883
    884	001556	110502 			PRONAM:	MOVB	R5,R2		; COMPUTE ADDRESS IN DESCRIPTOR BLOCK
    885	001560	060002 				ADD	R0,R2		; ...
    886	001562	112401 				MOVB	(R4)+,R1	; GET THE FORMAT TYPE CODE
    887	001564	110122 				MOVB	R1,(R2)+	; STORE IT IN THE DESCIPTOR BLOCK
    888	001566	112422 				MOVB	(R4)+,(R2)+	; STORE THE OBJECT TYPE IN THE DESCIPTOR BLOCK
    889	001570	022701 	000002 			CMP	#2,R1		; CHECK IF THE TYPE CODE IS IN RANGE
    890	001574	103421 				BLO	20$		; IF LO, NO - FIELD FORMAT ERROR (C-BIT SET)
    891	001576	005301 				DEC	R1		; DECIDE WHICH FORMAT
    892	001600	100417 				BMI	20$		; IF MI, FORMAT TYPE 0 - ALL DONE
    893	001602	001414 				BEQ	10$		; IF EQ, FORMAT TYPE 1 - JUST MOVE THE DATA
    894	001604					CALLC	GETBIN		; OTHERWISE, FORMAT TYPE 2 - GET GROUP CODE
    895	001614	010122 				MOV	R1,(R2)+	; AND STORE IN THE DESCIPTOR BLOCK
    896	001616					CALLC	GETBIN		; GET THE USER CODE
    897	001626	010122 				MOV	R1,(R2)+	; AND STORE IT ALSO
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 16-2
PROCI

    898	001630	162705 	002000 			SUB	#4.*400,R5	; REDUCE THE MAXIMUM FIELD SIZE APPROPRIATELY
    899	001634				10$:	CALL	CNVIMA		; CONVERT AND STORE PROCESS NAME
    900	001640				20$:	RETURN			; RETURN TO CALLER
    901
    902					;+
    903					; **-CNVIMG-CONVERT MESSAGE IMAGE TO DESCRIPTOR IMAGE FORMAT
    904					; **-CNVIMA-ALTERNATE ENTRY
    905					;
    906					; INPUTS:
    907					;
    908					;	R0 = ADDRESS OF THE CONNECT BLOCK
    909					;	R4 = MESSAGE POINTER TO NEXT FIELD
    910					;	R5 = MAXIMUM FIELD LENGTH  (HIGH BYTE)
    911					;	     OFFSET IN THE BLOCK   (LOW BYTE)
    912					;
    913					; OUTPUTS:
    914					;
    915					;	C-BIT CLEAR:
    916					;	DATA IS MOVED AS REQUIRED
    917					;
    918					;	C-BIT SET:
    919					;	FIELD FORMAT ERROR
    920					;-
    921
    922	001642	110502 			CNVIMG:	MOVB	R5,R2		; COMPUTE THE ADDRESS IN THE DECRIPTOR BLOCK
    923	001644	060002 				ADD	R0,R2		; ...
    924
    925	001646	112403 			CNVIMA:	MOVB	(R4)+,R3	; GET THE LENGTH OF THE IMAGE FIELD
    926	001650	000305 				SWAB	R5		; GET THE MAXIMUM FIELD LENGTH
    927	001652	120503 				CMPB	R5,R3		; IS THE FIELD TOO LONG ?
    928	001654	103405 				BLO	20$		; IF LO, YES - ERROR (C-BIT SET)
    929	001656	010322 				MOV	R3,(R2)+	; STORE OUTPUT FIELD LENGTH AS A WORD
    930	001660	001403 				BEQ	20$		; IF EQ, END OF THE FIELD (C-BIT CLEAR)
    931	001662	112422 			10$:	MOVB	(R4)+,(R2)+	; MOVE THE DATA FROM THE MESSAGE TO THE DESCIPTOR BLOCK
    932	001664					SOB	R3,10$		; LOOP UNTIL DONE
    933	001670				20$:	RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 17
SETFLG

    935						.SBTTL	SETFLG
    936					;+
    937					; **-SETFLG-VALIDATE CONNECT MESSAGE SERVICES FIELD
    938					;
    939					; THIS SUBROUTINE IS CALLED TO VALIDATE THE SERVICES FIELD IN A RECEIVED
    940					; CONNECT MESSAGE AND SET UP THE FLOW CONTROL OPTIONS IN THE LOGICAL
    941					; LINK TABLE.
    942					;
    943					; INPUTS:
    944					;
    945					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    946					;	R1 = SERVICES
    947					;
    948					; OUTPUTS:
    949					;
    950					;	C-BIT CLEAR:
    951					;	FLOW CONTROL OPTIONS (NONE, SEGMENT, OR MESSGAGE) SET IN THE LLT
    952					;
    953					;	C-BIT SET:
    954					;	INVALID SERVICES REQUEST
    955					;	R0 = ERROR CODE (ER$ILS)
    956					;
    957					; REGISTERS MODIFIED:
    958					;
    959					;	NONE
    960					;
    961					;-
    962
    963	001672	032701 	000001 		SETFLG::BIT	#CL$TYP,R1	; IS THIS A SINGLE MESSAGE?
    964	001676	001424 				BEQ	20$		; YES..WE DON'T SUPPORT THIS SERVICE
    965	001700	032701 	000040 			BIT	#CL$ACK,R1	; REMOTE USER WANT MESSAGE ACKING?
    966	001704	001021 				BNE	20$		; YES..WE DON'T SUPPORT THAT SERVICE
    967	001706	032701 	000004 			BIT	#CL$SFL,R1	; REMOTE USER WANT SEGMENT FLOW CONTROL?
    968	001712	001407 				BEQ	10$		; NO
    969	001714	052760 	010000 	000012 		BIS	#LF.HSF,L.FLG(R0) ; REMOTE USER IS SEGMENT FLOW CONTROLLED
    970	001722	032701 	000010 			BIT	#CL$MFL,R1	; IS HE ALSO ASKING TO BE MESSAGE FLOW CONTROLLED?
    971	001726	001010 				BNE	20$		; YES..CANNOT REQUEST BOTH FUNCTIONS
    972	001730	000412 				BR	30$
    973
    974	001732	032701 	000010 		10$:	BIT	#CL$MFL,R1	; REMOTE USER WANT TO BE MESSAGE FLOW CONTROLLED?
    975	001736	001407 				BEQ	30$		; NO..THIS LINK IS NON-FLOW CONTROLLED
    976	001740	052760 	020000 	000012 		BIS	#LF.HMF,L.FLG(R0) ; REMOTE USER IS MESSAGE FLOW CONTROLLED
    977	001746	000403 				BR	30$
    978
    979	001750	012701 	000043 		20$:	MOV	#ER$ILS,R1	; INVALID SERVICES REQUEST
    980	001754	000261 				SEC			;
    981	001756				30$:	RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 18
UCRDAT

    983						.SBTTL	UCRDAT
    984					;+
    985					; **-UCRDAT-DEQUEUE CONNECT REQUEST AND MOVE USER DATA
    986					;
    987					; THIS SUBROUTINE IS CALLED TO DEQUEUE A USER CONNECT REQUEST FROM THE
    988					; LOGICAL LINK TABLE AND MOVE ANY RECEIVED USER DATA.
    989					;
    990					; INPUTS:
    991					;
    992					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
    993					;	R4 = ADDRESS OF COUNT FIELD IN THE MESSAGE OR ZERO
    994					;
    995					; OUTPUTS:
    996					;
    997					;	R5 = ADDRESS OF CONNECT REQUEST CCB
    998					;
    999					; REGISTERS MODIFIED:
   1000					;
   1001					;	R2
   1002					;
   1003					;-
   1004
   1005	001760	016005 	000046 		UCRDAT::MOV	L.XQ1(R0),R5	; DEQUEUE CONNECT REQUEST CCB
   1006	001764	005060 	000046 			CLR	L.XQ1(R0)	; ...
   1007	001770	010403 				MOV	R4,R3		; IS THERE A POINTER TO A COUNT FIELD ?
   1008	001772	001406 				BEQ	10$		; IF EQ, NO USER DATA - CLEAR C.CNT2 AND EXIT
   1009	001774	112403 				MOVB	(R4)+,R3	; GET LENGTH OF THE USER DATA
   1010	001776	026503 	000030 			CMP	C.CNT2(R5),R3	; IS THE USER BUFFER LARGE ENOUGH ?
   1011	002002	103002 				BHIS	10$		; IF HIS, YES - USE RECEIVED LENGTH
   1012	002004	016503 	000030 			MOV	C.CNT2(R5),R3	; OTHERWISE TRUNCATE TO USER BUFFER SIZE
   1013	002010	010365 	000030 		10$:	MOV	R3,C.CNT2(R5)	; ...AND STORE IT IN THE CCB
   1014	002014	001405 				BEQ	30$		; IF EQ, NO USER DATA - JUST EXIT
   1015	002016	016502 	000026 			MOV	C.BUF2+2(R5),R2	; GET THE ADDRESS OF THE USER BUFFER
   1016	002022	112422 			20$:	MOVB	(R4)+,(R2)+	; ...AND MOVE THE DATA
   1017	002024					SOB	R3,20$		; ...
   1018	002030				30$:	RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 19
UCRDAT

   1020
   1021						.SBTTL	GETEXB
   1022					;++
   1023					;  GETEXB
   1024
   1025					; INPUTS:
   1026					;	R4=MSG PTR TO EXTENSIBLE BINARY FIELD
   1027
   1028					; OUTPUTS:
   1029					;	C=0:
   1030					;		R4=PTR TO FIELD FOLLOWING EXT BIN FIELD
   1031					;		R1=BINARY VALUE
   1032					;	C=1:
   1033
   1034					;	THIS ROUTINE CONVERTS UP TO TWO EXTENSIBLE BINARY FIELDS
   1035					;	INTO A SINGLE 14-BIT VALUE IN A REGISTER. FAILS IF FIELD
   1036					;	IS LONGER THAN TWO BYTES.
   1037					;--
   1038
   1039	002032				GETEXB::
   1040	002032				GETEX2::
   1041	002032	005001 				CLR	R1		;CLEAR RESULT AND SCRATCH LOC
   1042	002034	005046 				CLR	-(SP)
   1043	002036	152401 				BISB	(R4)+,R1	;DATA <0:6>-> LOW BYTE R1
   1044	002040	100026 				BPL	10$		;DONE IF POSITIVE
   1045	002042	106101 				ROLB	R1		;DATA IN R1 <1:7>
   1046	002044	000301 				SWAB	R1		;DATA IN R1 <9:15>
   1047	002046	152401 				BISB	(R4)+,R1	;DATA <7:13> INTO R1 <0:6>
   1048	002050	000301 				SWAB	R1		;DATA IN R1 <1:7> AND <8:14>
   1049	002052	006201 				ASR	R1		;DATA IN R1 <0:7> AND <8:13>
   1050	002054	100020 				BPL	10$		;DONE IN NO EXTENSION WAS ON
   1051	002056	042701 	140000 			BIC	#140000,R1	;2 MORE BITS CLEAR THEIR POSITON
   1052	002062	152416 				BISB	(R4)+,(SP)	;BITS (14,15) TO (SP)
   1053	002064	100006 				BPL	5$		;MORE?
   1054	002066					CALL 	SKPEXB		;YES, CANT HANDLE THAT
   1055	002072	012701 	000005 			MOV	#ER$FMT,R1	;SET FORMAT ERROR CODE
   1056	002076	005126 				COM	(SP)+		;SET C, POP STACK
   1057	002100	000407 				BR	15$		;DONE
   1058
   1059	002102	000003 			5$:	.REPT	3		;PUT (14,15) INTO THAT POSITION
   1060						ROR	(SP)
   1061						.ENDR
   1062	002110	042716 	037777 			BIC	#^C<140000>,(SP)	;MASK OUT ALL BUT (14,15)
   1063	002114	051601 				BIS	(SP),R1		;AND PUT IT INTO R1
   1064	002116	005726 			10$:	TST	(SP)+		;CLEAR STACK AND C-BIT
   1065	002120				15$:	RETURN			;RETURN
   1066
   1067	002122				SKPEXB::
   1068	002122	105724 				TSTB	(R4)+		;SKIP TO 1 PAST FIRST NON-
   1069	002124	100776 				BMI	SKPEXB		;EXTENSIBLE FIELD
   1070	002126					RETURN			;RETURN  C-BIT CLEAR
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 20
VERASC

   1072						.SBTTL	VERASC
   1073					;+
   1074					; **-VERASC-VALIDATE THE CHARATERS IN A NODE NAME
   1075					;
   1076					; THIS SUBROUTINE IS CALLED TO VERIFY THE CHARACTERS IN A NODE NAME
   1077					; ARE UPPER CASE ALPHABETIC (101-132) OR NUMERIC (060-072).
   1078					;
   1079					; INPUTS:
   1080					;
   1081					;	R4 = MESSAGE POINTER TO LENGTH OF NODE NAME
   1082					;
   1083					; OUTPUTS:
   1084					;
   1085					;	C-BIT CLEAR:
   1086					;	NODE NAME IS VALID ASCII
   1087					;
   1088					;	C-BIT SET:
   1089					;	NODE NAME IS INVALID
   1090					;
   1091					; REGISTERS MODIFIED:
   1092					;
   1093					;	NONE
   1094					;
   1095					;-
   1096
   1097					;
   1098					; LOCAL DATA
   1099					;
   1100		000060 			LNUM=	60
   1101		000071 			HNUM=	71
   1102		000101 			LALP=	101
   1103		000132 			HALP=	132
   1104
   1105	002130	004567 	000000G		VERASC::JSR	R5,$SAVRG	; SAVE R5, R4, AND R3
   1106	002134	112403 				MOVB	(R4)+,R3	; GET THE LENGTH OF THE NODE NAME
   1107	002136	122703 	000006 			CMPB	#6,R3		; IS THE LENGTH WITHIN RANGE ?
   1108	002142	103417 				BLO	30$		; IF LO, NO - ERROR
   1109	002144	121427 	000060 		10$:	CMPB	(R4),#LNUM	; CHAR LESS THAN ZERO ?
   1110	002150	103414 				BLO	30$		; YES..INVALID CHAR
   1111	002152	122714 	000071 			CMPB	#HNUM,(R4)	; CHAR PART OF NUMERIC SET ?
   1112	002156	103006 				BHIS	20$		; YES..VALID ASCII NUMERIC
   1113	002160	121427 	000101 			CMPB	(R4),#LALP	; CHAR FALL BELOW ALPHA RANGE ?
   1114	002164	103406 				BLO	30$		; YES..INVALID CHAR
   1115	002166	122714 	000132 			CMPB	#HALP,(R4)	; CHAR FIT IN ALPHA SET ?
   1116	002172	103403 				BLO	30$		; NO..INVALID CHAR
   1117	002174	105724 			20$:	TSTB	(R4)+		; UPDATE MESSAGE PTR TO NEXT CHAR (CLEAR C-BIT)
   1118	002176					SOB	R3,10$		; TEST ALL CHARACTERS
   1119	002202				30$:	RETURN			; RETURN WITH C-BIT
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 21
DISCONNECT PROCESSING SUBROUTINES

   1121						.SBTTL	DISCONNECT PROCESSING SUBROUTINES
   1122						.SBTTL	HNGUSR
   1123					;+
   1124					; **-HNGUSR-INITIATE LOGICAL LINK DESTRUCTION ON A PHYSICAL LINK FAILURE
   1125					;
   1126					; INPUTS:
   1127					;
   1128					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
   1129					;
   1130					; OUTPUTS:
   1131					;
   1132					;	THE LOGICAL LINK IS SET INTO THE DISCONNECT STATE WITH NO FURTHER
   1133					;	REQUIRED WITH THE NETWORK AND THE USER IS NOTIFIED OF THE ERROR.
   1134					;
   1135					; REGISTERS MODIFIED:
   1136					;
   1137					;	R1, R2
   1138					;
   1139					;-
   1140						.ENABL	LSB
   1141
   1142	002204	004567 	000000G		HNGUSR::JSR	R5,$SAVRG	; SAVE R5, R4, AND R3
   1143	002210	005004 				CLR	R4		; INDICATE THAT THERE IS NO USER DATA
   1144	002212	112760 	000015 	000025 		MOVB	#ST$DID,L.NSTA(R0) ; NO MORE ACTIVITY WITH THE NETWORK
   1145	002220	012703 	000047 			MOV	#ER$COM,R3	; ERROR CODE FOR COMMUNICATIONS FAILURE
   1146	002224	000402 				BR	10$		; CONTINUE IN COMMON CODE
   1147
   1148
   1149						.SBTTL	DISUSR
   1150					;+
   1151					; **-DISUSR-INITIATE LOGICAL LINK DISCONNECTION
   1152					;
   1153					; THIS ROUTINE IS CALLED TO INITIATE THE DISCONNECTION OF A LOGICAL LINK
   1154					; IN ANY STATE.  THE DISCONNECT REASON CODE IS STORED IN THE LOGICAL LINK
   1155					; TABLE AND THE MAJOR DISCONNECT STATE (ST$DIP) IS ESTABLISHED.  SERVICE
   1156					; ROUTINES DISPATCHED BASED ON THE CURRENT LINK STATE.
   1157					;
   1158					; INPUTS:
   1159					;
   1160					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
   1161					;	R3 = DISCONNECT REASON CODE
   1162					;	R4 = ADDRESS OF USER DATA COUNT OR ZERO
   1163					;
   1164					; OUTPUTS TO SERVICE ROUTINES:
   1165					;
   1166					;	SAME AS INPUTS
   1167					;
   1168					; REGISTERS MODIFIED ON SERVICE ROUTINE EXIT:
   1169					;
   1170					;	R1, R2
   1171					;
   1172					;-
   1173
   1174	002226	004567 	000000G		DISUSR::JSR	R5,$SAVRG	; SAVE R5, R4, AND R3
   1175	002232	010360 	000036 		10$:	MOV	R3,L.DCR(R0)	; SAVE DISCONNECT REASON CODE IN THE LINK TABLE
   1176	002236	111001 				MOVB	(R0),R1		; GET THE CURRENT LINK STATE (ENTDIP MODIFIES IT)
   1177	002240					CALL	ENTDIP		; SET MAJOR DISCONNECT STATE FOR LINK (ST$DIP)
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 21-1
DISUSR

   1178	002244	006301 				ASL	R1		; MAKE STATE A WORD INDEX
   1179	002246					CALLR	@20$-2(R1)	; ...AND DISPATCH ON IT
   1180
   1181	002252	002542'			20$:	.WORD	DISUS2		; SERVICE ROUTINE FOR STATE ST$CIS
   1182	002254	002274'				.WORD	DISUS1		;			    ST$CC
   1183	002256	002646'				.WORD	DISUS3		;			    ST$CIR
   1184	002260	177777 				.WORD	-1		; UNUSED STATE
   1185	002262	002274'				.WORD	DISUS1		;			    ST$DAT
   1186	002264	002670'				.WORD	CLNLNK		;			    ST$DIP
   1187
   1188						.DSABL	LSB
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 22
DISUS0,DISUS0

   1190						.SBTTL	DISUS0,DISUS0
   1191					;+
   1192					; **-DISUS1-DISCONNECT SERVICE WHEN A RESOURCE IS NEEDED
   1193					; **-DISUS0-ENTRY FOR RECOVERY ON A TIMEOUT
   1194					;
   1195					; THIS SERVICE ROUTINE IS USED WHEN A RESOURCE IS REQUIRED IN ORDER TO
   1196					; NOTIFY THE USER OF A LOGICAL LINK DISCONNECTION.  TYPICALLY, THIS
   1197					; OCCURS IF THE LINK STATE IS DATA OR CONNECT CONFIRM, BUT INCLUDES THE
   1198					; CASE OF A USER ACCEPT WITH A LINK STATE OF DISCONNECT.  IF THE RESOURCES
   1199					; CAN BE ALLOCATED, ANY RECEIVED USER DATA IS COPIED, THE COMPLETION STATUS
   1200					; IS SET AND THE USER INTRFACE IS NOTIFIED.  IF THE RESOURCES CANNOT BE
   1201					; ALLOCATED, THE DISCONNECT REASON IS CHANGED TO INDICATE AN ABORT DUE TO
   1202					; DATA LOSS AND THE USER NOTIFICATION REQUIRED STATE IS SET.  THE LINK
   1203					; WILL BE SCANNED AND THE OPERATION RETRIED.
   1204					;
   1205					;-
   1206
   1207	002266	004567 	000000G		DISUS0::JSR	R5,$SAVRG	; SAVE REGISTERS  (R5, R4, & R3)
   1208	002272	005004 				CLR	R4		; INDICATE NO USER DATA POSSIBLE
   1209
   1210	002274	010402 			DISUS1::MOV	R4,R2		; COPY MESSAGE POINTER
   1211	002276					CALL	CCBGT		; ALLOCATE A CCB
   1212	002302	103502 				BCS	60$		; IF CS, ALLOCATION FAILURE - SET UP RECOVERY
   1213	002304	005064 	000016 			CLR	C.BUF+2(R4)	; INITIALIZE THE BUFFER POINTER AND THE
   1214	002310	005064 	000020 			CLR	C.CNT(R4)	; ...COUNT FIELDS
   1215	002314	005702 				TST	R2		; IS THERE A POINTER TO A DATA COUNT ?
   1216	002316	001427 				BEQ	40$		; IF EQ, NO - NO USER DATA
   1217	002320	112203 				MOVB	(R2)+,R3	; GET THE COUNT OF THE USER DATA
   1218	002322	001425 				BEQ	40$		; IF EQ, NO USER DATA
   1219	002324	010401 				MOV	R4,R1		; COPY THE ADDRESS OF THE CCB
   1220	002326					CALL	CCBGT		; ALLOCATE ANOTHER CCB
   1221	002332	103415 				BCS	30$		; IF CS, ALLOCATION FAILURE - NO DATA WILL BE MOVED
   1222	002334	010164 	000016 			MOV	R1,C.BUF+2(R4)	; STORE THE ADDRESS OF THE FIRST CCB IN THE SECOND
   1223	002340	022703 	000020 			CMP	#N$$DIS,R3	; IS THE RECEIVED DATA LENGTH WITHIN RANGE ?
   1224	002344	103002 				BHIS	10$		; IF HIS, YES - USE THE RECEIVED LENGTH
   1225	002346	012703 	000020 			MOV	#N$$DIS,R3	; SET THE MAXIMUM LENGTH AS THE COUNT
   1226	002352	010364 	000020 		10$:	MOV	R3,C.CNT(R4)	; STORE THE COUNT IN THE CCB
   1227	002356	112221 			20$:	MOVB	(R2)+,(R1)+	; MOVE THE USER DATA
   1228	002360					SOB	R3,20$		; ...
   1229	002364	000404 				BR	40$		;
   1230
   1231	002366	010104 			30$:	MOV	R1,R4		; RECOVER THE ADDRESS OF THE FIRST CCB
   1232	002370	012760 	000001 	000036 		MOV	#ER$RES,L.DCR(R0) ; CHANGE THE REASON TO RESOURCE ERROR
   1233	002376	010405 			40$:	MOV	R4,R5		; COPY ADDRESS OF CCB
   1234	002400	112760 	000012 	000024 		MOVB	#ST$DIR,L.USTA(R0) ; SET LINK SUBSTATE TO USER NOTIFIED
   1235	002406	012704 	177777 			MOV	#NE.DIS,R4	; ASSUME SYNCHRONOUS DISCONNECT
   1236	002412	016065 	000036 	000004 		MOV	L.DCR(R0),C.NSP(R5) ; STORE DISCONNECT REASON CODE
   1237	002420	001402 				BEQ	50$		; IF EQ, ASSUMPTION IS CORRECT
   1238	002422	012704 	177776 			MOV	#NE.ABO,R4	; OTHERWISE SET ABORT COMPLETION STATUS
   1239	002426				50$:                                                                            ;LW0003
   1240						.IF DF	N$$SYS&N$$USR                                                   ;LW0003
   1241	002426	105760 	000041 			TSTB	L.PDV(R0)	; SYSTEM OR USER INTERFACE?                     ;LW0003
   1242	002432	001012 				BNE	55$		; SYSTEM                                        ;LW0003
   1243						.ENDC                                                                   ;LW0003
   1244					                                                                                ;LW0003
   1245	002434	010465 	000012 			MOV	R4,C.STS(R5)	; STORE STATUS IN THE CCB                       ;LW0003
   1246	002440	016065 	000040 	000006 		MOV	L.ULA(R0),C.LIN(R5) ; STORE USER LINK ADDRESS                   ;**-1
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 22-1
DISUS0,DISUS0

   1247	002446					RECMAP			; RESTORE PROPER ACP MAPPING
   1248	002454					CALLR	$QDIR		; NOTIFY THE USER FO THE DISCONNECT
   1249					                                                                                ;LW0003
   1250						.IF DF	N$$SYS                                                          ;LW0003
   1251	002460	112765 	000010 	000011 	55$:	MOVB	#NT$DIS,C.MOD(R5) ; SET SUBFUNCTION CODE                        ;LW0003
   1252	002466					CALLC	PSTUSR		; NOTIFY THE SYSTEM USER OF THE DISCONNECT      ;LW0003
   1253	002476					CALLC	REMSYS		; AND TRY TO FLUSH THE TRANSMIT QUEUES.         ;AP0004
   1254	002506					RETURN                                                                  ;LW0003
   1255						.ENDC                                                                   ;LW0003
   1256					;
   1257					; ALLOCATION FAILURE PREVENTS NOTIFICATION OF THE DISCONNECT
   1258					;
   1259	002510	112760 	000011 	000024 	60$:	MOVB	#ST$UNR,L.USTA(R0) ; SETUP THE RECOVERY SUBSTATE
   1260	002516	052710 	100000 			BIS	#LF.RSU,(R0)	; SET RECOVERY STATUS REQUIRED
   1261	002522	005702 				TST	R2		; THERE IS NO NEED TO CHANGE THE DISCONNECT
   1262	002524	001405 				BEQ	70$		; ...REASON CODE UNLESS THERE IS USER DATA
   1263	002526	105722 				TSTB	(R2)+		; ...IN THE MESSAGE
   1264	002530	001403 				BEQ	70$		; IF EQ, NO - JUST EXIT ADN WAIT FOR RECOVERY
   1265	002532	012760 	000001 	000036 		MOV	#ER$RES,L.DCR(R0) ; OTHERWISE SET ABORT DUE TO RESOURCE ERROR
   1266	002540				70$:	RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 23
DISUS2

   1268						.SBTTL	DISUS2
   1269					;+
   1270					; **-DISUS2-DISCONNECT SERVICE FOR CONNECT REJECT
   1271					;
   1272					; THIS SERVICE ROUTINE IS USED TO TERMINATE A CONNECT REQUEST WITH
   1273					; A REJECT.  THIS OCCURS IF THE USER OR SYSTEM ABORTS CONNECTION THAT
   1274					; IS STILL OUTSTANDING OR IF A DISCONNECT MESSAGE IS RECEIVED AND THE
   1275					; LINK STATE IS CONNECT INITIATE.
   1276					;
   1277					;-
   1278
   1279	002542				DISUS2:	CALL	UCRDAT		; DEQUEUE CONNECT REQUEST AND COPY USER DATA
   1280	002546	112760 	000013 	000024 		MOVB	#ST$UDI,L.USTA(R0) ; SET SUBSTATE TO DONE WITH THE USER
   1281	002554	012704 	177775 			MOV	#NE.REJ,R4	; ASSUME CONNECT REJECT BY THE OTHER USER
   1282	002560	016065 	000036 	000004 		MOV	L.DCR(R0),C.NSP(R5) ; STORE DISCONNECT REASON CODE
   1283	002566	001402 				BEQ	10$		; IF EQ, ASSUMPTION IS CORRECT
   1284	002570	012704 	177776 			MOV	#NE.ABO,R4	; OTHERWISE SET ABORT STATUS
   1285	002574				10$:                                                                            ;LW0003
   1286						.IF DF	N$$SYS&N$$USR                                                   ;LW0003
   1287	002574	105760 	000041 			TSTB	L.PDV(R0)	; SYSTEM OR USER INTERFACE?                     ;LW0003
   1288	002600	001014 				BNE	20$		; SYSTEM                                        ;LW0003
   1289						.ENDC                                                                   ;LW0003
   1290					                                                                                ;LW0003
   1291	002602	010465 	000012 			MOV	R4,C.STS(R5)	; STORE ABORT STATUS IN THE CONNECT CCB         ;LW0003
   1292	002606	016065 	000040 	000006 		MOV	L.ULA(R0),C.LIN(R5) ; SETUP THE USER LINK ADDRESS               ;**-1
   1293	002614					RECMAP			; RESTORE PROPER ACP MAPPING
   1294	002622					CALL	$QCRR		; CALL USER INTERFACE FOR CONNECT REJECT
   1295	002626					CALLR	CLNLNK		; ATTEMPT TO REMOVE THE LOGICAL LINK
   1296					                                                                                ;LW0003
   1297						.IF DF	N$$SYS                                                          ;LW0003
   1298	002632				20$:	CALLC	RETUSR		; SEND CONNECT CCB TO USER                      ;LW0003
   1299	002642					CALLR	CLNLNK		; ATTEMPT TO REMOVE THE LOGICAL LINK            ;LW0003
   1300						.ENDC                                                                   ;LW0003
   1301
   1302
   1303						.SBTTL	DISUS3
   1304					;+
   1305					; **-DISUS3-DISCONNECT SERVICE FOR CONNECT INITIATE RECEIVED
   1306					;
   1307					; THIS SERVICE ROUTINE IS USED TO INITIATE LOGICAL LINK DISCONNECTION
   1308					; WHEN THE STATE IS CONNECT INITIATE RECEIVED.  THIS OCCURS ONLY AS THE
   1309					; RESULT OF A COMMUNICATIONS FAULT WITH THE SOURCE NODE, SINCE DISCONNECT
   1310					; MESSAGES RECEIVED IN THIS STATE ARE IGNORED.  SINCE IT IS POSSIBLE FOR
   1311					; THE USER TO ACCEPT OR REJECT THE CONNECT REQUEST, AND NOTIFICATION
   1312					; MUST ONLY BE DONE ON AN ACCEPT, THE LOGICAL LINK MUST WAIT.
   1313					;
   1314					;-
   1315
   1316	002646	112760 	000012 	000024 	DISUS3:	MOVB	#ST$DIR,L.USTA(R0) ; SET SUBSTATE TO USER DISCONNECT STARTED
   1317	002654					RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 24
ENTDIP

   1319						.SBTTL	ENTDIP
   1320					;+
   1321					; **-ENTDIP-SET MAJOR DISCONNECT STATE
   1322					;
   1323					; INPUTS:
   1324					;
   1325					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
   1326					;
   1327					; OUTPUTS:
   1328					;
   1329					;
   1330					;-
   1331
   1332	002656	112710 	000006 		ENTDIP::MOVB	#ST$DIP,(R0)	; LINK IS BEING DISCONNECTED
   1333	002662	052710 	100000 			BIS	#LF.RSU,(R0)	; MAKE SURE LINK IS SCANNED TO COMPLETE DISCONNECT
   1334
   1335						.IF DF	N$$LV2
   1336
   1337						CLR	L.TIMD(R0)	;DISABLE DATA TIMER AND RETRY COUNT
   1338						CLR	L.TIML(R0)	;DISABLE LINK SERVICE TIMER AND RETRY COUNT
   1339
   1340						.ENDC
   1341
   1342	002666					RETURN			; RETURN TO CALLER
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 25
CLNLNK

   1344						.SBTTL	CLNLNK
   1345					;+
   1346					; **-CLNLNK-ATTEMPT TO REMOVE THE LOGICAL LINK
   1347					;
   1348					; THIS SUBROUTINE IS CALLED WHENEVER IT MAY BE POSSIBLE FOR A LOGICAL
   1349					; TO BE REMOVED.  IF THE MAJOR STATE IS DISCONNECT AND THE SUBSTATES
   1350					; ARE COMPLETE AND ALL TRANSMITS HAVE COMPLETED, ANY PENDING DISCONNECT
   1351					; REQUEST IS COMPLETED AND THE LOGICAL LINK IS REMOVED.
   1352					;
   1353					; INPUTS:
   1354					;
   1355					;	R0 = ADDRESS OF THE LOGICAL LINK TABLE
   1356					;
   1357					; OUTPUTS:
   1358					;
   1359					;	AS DESCRIBED
   1360					;
   1361					; REGISTERS MODIFIED:
   1362					;
   1363					;	R1 AND R2
   1364					;
   1365					;-
   1366
   1367	002670	004567 	000000G		CLNLNK::JSR	R5,$SAVRG	; SAVE R5, R4, AND R3
   1368	002674	122710 	000006 			CMPB	#ST$DIP,(R0)	; ARE WE BEING DISCONNECTED?
   1369	002700	001054 				BNE	20$		; NO
   1370	002702	022760 	006413 	000024 		CMP	#ST$DID*400!ST$UDI,L.USTA(R0) ; ARE WE DONE WITH SUBSTATE PROCESSING
   1371	002710	001050 				BNE	20$		; NO
   1372	002712	005760 	000004 			TST	L.TIPI(R0)	; ARE THERE ANY DATA OR INT/LS TRANSMITS IN PROGRESS ?
   1373	002716	001045 				BNE	20$		; YES
   1374
   1375						.IF DF	N$$ICF
   1376
   1377						BIT	#LF.INT,(R0)	; INTERCEPT LINK ?
   1378						BNE	10$		; YES
   1379
   1380						.ENDC
   1381					                                                                                ;AP0003
   1382						.IF DF	N$$SYS&N$$USR                                                   ;AP0003
   1383	002720	105760 	000041 			TSTB	L.PDV(R0)	; SYSTEM OR USER INTERFACE ?                    ;AP0003
   1384	002724	001405 				BEQ	2$		; USER                                          ;AP0003
   1385						.ENDC                                                                   ;AP0003
   1386
   1387						.IF DF	N$$SYS
   1388	002726					CALLC	REMSYS		; CLEAR THE SYSTEM TRANSMIT QUEUES              ;AP0004
   1389	002736	000404 				BR	3$                                                              ;AP0003
   1390						.ENDC                                                                   ;**-4
   1391
   1392						.IF DF	N$$USR
   1393	002740				2$:                                                                             ;AP0003
   1394	002740					CALLC	REMUSR		; REMOVE CCBS FROM XQ1 AND XQ3 FOR USER
   1395						.ENDC
   1396	002750				3$:                                                                             ;AP0003
   1397
   1398	002750	016005 	000034 			MOV	L.UDQ(R0),R5	; GET USER DISCONNECT REQUEST
   1399	002754	001422 				BEQ	10$		; IF EQ, NONE - JUST REMOVE THE LINK
   1400
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 25-1
CLNLNK

   1401						.IF DF	N$$SYS&N$$USR
   1402	002756	105760 	000041 			TSTB	L.PDV(R0)	; SYSTEM OR USER INTERFACE?                     ;LW0003
   1403	002762	001011 				BNE	5$		; SYSTEM                                        ;**-1
   1404
   1405						.ENDC
   1406
   1407						.IF DF	N$$USR
   1408	002764	016065 	000040 	000006 		MOV	L.ULA(R0),C.LIN(R5) ; GET ULA
   1409	002772					RECMAP			; RESTORE PROPER ACP MAPPING
   1410	003000					CALL	$QDIC		; CALL QIO ROUTINE TO PROCESS DISCONNECT COMPLETE
   1411	003004	000406 				BR	10$		; JOIN COMMON CODE                              ;LW0003
   1412						.ENDC
   1413	003006				5$:
   1414						.IF DF	N$$SYS
   1415	003006	012704 	000001 			MOV	#NS.SUC,R4	; SET COMPLETION STATUS                         ;AP0004
   1416	003012					CALLC	RETUSR		; GIVE TO USER                                  ;**-1
   1417						.ENDC
   1418
   1419	003022				10$:	CALLC	REMLNK		; REMOVE LINK
   1420	003032				20$:	RETURN			; RESTORE REGISTERS AND RETURN
   1421
   1422
   1423
   1424		000001 				.END
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 25-2
SYMBOL TABLE

ACKMAS= 170000   	CS.RNG= 000010   	ER$COM= 000047   	FS.TRM= 003000   	LF.RSU= 100000
ACKPRE= 100000   	CS.ROV= 000004   	ER$FCF= 000050   	FS.XKL= 002000   	LNUM  = 000060
ACKRES= 060000   	CS.RSN= 010000   	ER$FMT= 000005   	FS.XOF= 010000   	LS.DLS= 000200
ACKWRA= 010000   	CS.SUC= 000001   	ER$GEN= 000007   	FS.XON= 007000   	LS.FCC= 000004
ADDLNK  000000RG    002	CS.TMO= 020000   	ER$IFC= 000030   	F$$LVL= 000001   	LS.FC0= 000001
ADNOD   000510RG    002	CTRES = ****** GX	ER$ILS= 000043   	GETBIN= ****** GX	LS.FC1= 000002
A$$CHK= 000000   	C$$CKP= 000000   	ER$IMG= 000053   	GETDBK  001130RG    002	LS.ILS= 000200
A$$CPS= 000000   	C$$ORE= 000400   	ER$MLB= 000006   	GETEXB  002032RG    002	LS.MAK= 000020
A$$PRI= 000000   	C$$RSH= 177564   	ER$NOD= 000002   	GETEX1= ****** GX	LS.MNK= 000040
A$$TRP= 000000   	C.BID   000003   	ER$NSD= 000003   	GETEX2  002032RG    002	LS.RES= 000360
A.NAK = 010000   	C.BUF   000014   	ER$RES= 000001   	GETLDB  001244RG    002	LS.RSV= 000300
BLDIMA  001104R     002	C.BUF1  000014   	ER$SSR= 000000   	GETNNO  000242RG    002	L$$ASG= 000000
BLDIMG  001100R     002	C.BUF2  000024   	ER$SSS= 000045   	G$$TPP= 000000   	L$$DRV= 000000
CB.CCB= 000002   	C.CNT   000020   	ER$STA= 000051   	G$$TSS= 000000   	L$$P11= 000001
CB.RDB= 000004   	C.CNT1  000020   	ER$TCN= 000040   	G$$TTK= 000000   	L$$11R= 000000
CCBGT   001276RG    002	C.CNT2  000030   	ER$TCO= 000041   	G$$WRD= 000000   	L.CIQ   000026
CE.ABO= 100362   	C.FLG   000022   	ER$TPA= 000010   	HALP  = 000132   	L.DCR   000036
CE.DIS= 100366   	C.FLG1  000022   	ER$UOB= 000004   	HNGUSR  002204RG    002	L.FLG   000012
CE.ERR= 100370   	C.FLG2  000032   	E$$XPR= 000000   	HNUM  = 000071   	L.LDA   000024
CE.MOP= 100372   	C.FNC   000010   	FC.CCP= 000020   	I$$RAR= 000000   	L.LIA   000026
CE.NTE= 100361   	C.LIN   000006   	FC.CTL= 000006   	I$$RDN= 000000   	L.LLA   000002
CE.RTE= 100376   	C.LNK   000000   	FC.KCP= 000016   	KDSAR0= 172360   	L.LNG1  000054
CE.SRC= 100364   	C.MOD   000011   	FC.KIL= 000004   	KDSDR0= 172320   	L.LNO   000022
CE.TMO= 100374   	C.NSP   000004   	FC.RCE= 000002   	KISAR0= 172340   	L.LSA   000032
CF.EOM= 000004   	C.RSV   000002   	FC.RCP= 000014   	KISAR5= 172352   	L.LSF   000044
CF.HDR= 000020   	C.STA   000007   	FC.TIM= 000010   	KISAR6= 172354   	L.LVL   000001
CF.LB = 100000   	C.STS   000012   	FC.XCP= 000012   	KISAR7= 172356   	L.NDA   000034
CF.SOM= 000010   	DF$ADJ= 020000   	FC.XME= 000000   	KISDR0= 172300   	L.NIN   000016
CF.SYN= 000040   	DF$DWN= 001000   	FE.CAL= 000040   	KISDR6= 172314   	L.NLA   000036
CF.TRN= 000100   	DF$FRE= 070000   	FE.DRV= 000010   	KISDR7= 172316   	L.NSTA  000025
CHKFLG  000160RG    002	DF$LCL= 040000   	FE.EXP= 000200   	K$$CNT= 177546   	L.NXN   000014
CHKULA  000000RG    003	DF$LNK= 004000   	FE.EXT= 000001   	K$$CSR= 177546   	L.PDV   000041
CLNLNK  002670RG    002	DF$REM= 010000   	FE.EXV= 000004   	K$$LDC= 000000   	L.REM   000006
CL$ACK= 000040   	DF$RES= 002000   	FE.LSI= 000400   	K$$TPS= 000074   	L.RLA   000010
CL$MFL= 000010   	DF$TMP= 100000   	FE.MUP= 000002   	LALP  = 000101   	L.RNO   000020
CL$NRM= 000020   	DISUSR  002226RG    002	FE.MXT= 040000   	LA.ACK= 100000   	L.STA   000000
CL$SFL= 000004   	DISUS0  002266RG    002	FE.NLG= 100000   	LA.MSK= 170000   	L.TC    000042
CL$TYP= 000001   	DISUS1  002274RG    002	FE.PKT= 000100   	LA.NAK= 110000   	L.TIC   000043
CL.MU1= 000001   	DISUS2  002542R     002	FE.PLA= 000020   	LA.NMS= 010000   	L.TIPD  000005
CL.MU2= 000002   	DISUS3  002646R     002	FS.AST= 000000   	LA.RES= 060000   	L.TIPI  000004
CL.RES= 177774   	D$CHN   000002   	FS.CIB= 002000   	LD$LP = 000000   	L.UDQ   000034
CMODE = 140000   	D$FLG   000000   	FS.CRA= 001000   	LF.DFL= 000060   	L.ULA   000040
CNVIMA  001646R     002	D$LEN   000014   	FS.DIS= 013000   	LF.DSP= 000040   	L.USA   000030
CNVIMG  001642R     002	D$LNG   000005   	FS.DVC= 001000   	LF.DST= 000020   	L.USTA  000024
CONSM2  000640RG    002	D$NAM   000006   	FS.ENB= 012000   	LF.FPN= 000010   	L.XQ1   000046
CONSM3  001014R     002	D$USE   000004   	FS.GET= 006000   	LF.HF0= 001000   	L.XQ2   000050
CS.ABO= 000100   	D$$BUG= 177514   	FS.INI= 000000   	LF.HMF= 020000   	L.XQ3   000052
CS.BUF= 000200   	D$$ISK= 000000   	FS.KIL= 000000   	LF.HSF= 010000   	MA.DA = 000000
CS.DCR= 000400   	D$$L11= 000001   	FS.LTM= 001000   	LF.INR= 000100   	MA.IL = 000020
CS.DEV= 000002   	D$$YNC= 000000   	FS.MNT= 004000   	LF.INT= 000400   	MC.CC = 000040
CS.DIS= 000040   	D$$YNM= 000000   	FS.MSN= 014000   	LF.LCL= 040000   	MC.CI = 000020
CS.ENB= 000020   	ENTDIP  002656RG    002	FS.RNG= 011000   	LF.MMF= 100000   	MC.DC = 000100
CS.EOF= 000001   	ER$ABO= 000046   	FS.RTN= 001000   	LF.MSF= 040000   	MC.DI = 000060
CS.ERR= 100000   	ER$ABT= 000011   	FS.SET= 005000   	LF.NKR= 000200   	MC.NO = 000000
CS.HFE= 002000   	ER$ACC= 000042   	FS.STM= 000000   	LF.NKS= 000400   	MC.ST = 000120
CS.LST= 040000   	ER$ACT= 000044   	FS.STP= 002000   	LF.NPN= 000001   	MD.BM = 000040
CS.MTL= 004000   	ER$CDI= 000052   	FS.STR= 001000   	LF.NTS= 002000   	MD.EM = 000100
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 25-3
SYMBOL TABLE

MD.ILS= 000040   	NT$IDN= 000030   	N.DDS1  000014   	P$CHN   000004   	S$LEN   000040
MD.IM = 000020   	NT$ILN= 000032   	N.DDS2  000020   	P$CNT   000005   	S$LNK   000022
MF.ACK= 000004   	NT$IND= 000024   	N.DFMT  000010   	P$FRQ   000012   	S$MLK   000024
MF.CTL= 000010   	NT$INL= 000026   	N.DGRP  000012   	P$FSP   000013   	S$NKS   000010
MF.DAT= 000000   	NT$INT= 000004   	N.DOBJ  000011   	P$LCD   000002   	S$RES   000014
MPAR  = 172100   	NT$LS = 000014   	N.DUSR  000014   	P$LEN   000014   	S$SEC   000000
MPCSR = 177746   	NT$MOD= 000012   	N.LGTH= 000160   	P$LST   000000   	S$SNI   000016
MSGHDR= 000007   	NT$NAK= 000022   	N.NODE  000000   	P$NOD   000010   	S$UMR   000004
M$$CRB= 000124   	NT$OFF= 000026   	N.OPDL  000136   	P$PFQ   000006   	S$UMS   000002
M$$CRX= 000000   	NT$ON = 000002   	N.OPTD  000140   	P$TIM   000003   	S$UNI   000020
M$$FCS= 000000   	NT$QRY= 000014   	N.PASL  000102   	P$$P45= 000000   	S$$WRG= 000000
M$$MGE= 000000   	NT$REJ= 000004   	N.PASS  000104   	P$$WRD= 000000   	S$$YSZ= 007600
M$$OVR= 000000   	NT$ROU= 000022   	N.RQDL  000060   	Q$$OPT= 000010   	TPS   = 177564
NC.FM0= 000000   	NT$RTI= 000010   	N.RQID  000062   	REMLNK= ****** GX	T$$KMG= 000000
NC.FM1= 000001   	NT$RTN= 000000   	N.RSRV= 000030   	REMSYS= ****** GX	T$$MIN= 000000
NC.FM2= 000002   	NT$SNG= 000006   	N.SDL1  000036   	REMUSR= ****** GX	UBMPR = 170200
NDLNG   000436RG    002	NT$STP= 000004   	N.SDL2  000042   	RETUSR= ****** GX	UCRDAT  001760RG    002
NETTIM= 000005   	NT$XOF= 000020   	N.SDS1  000040   	RF.CLN= 000000   	UDSAR0= 177660
NE.ABO= 177776   	NT$XON= 000016   	N.SDS2  000056   	RF.CTL= 000003   	UDSDR0= 177620
NE.ACT= 177771   	NT.ACK= 000001   	N.SEG   000006   	RF.TIM= 177400   	UISAR0= 177640
NE.CLS= 177767   	NT.BOM= 000040   	N.SFMT  000034   	RF.TM0= 000400   	UISAR4= 177650
NE.DIS= 177777   	NT.EOM= 000100   	N.SGRP  000036   	RF.WTD= 000020   	UISAR5= 177652
NE.FMT= 177770   	NT.FCN= 037400   	N.SOBJ  000035   	RF.WTM= 000030   	UISAR6= 177654
NE.NDT= 177766   	NT.MD1= 000420   	N.SUSR  000040   	RF.WTS= 000010   	UISAR7= 177656
NE.NOD= 177774   	NT.MFL= 000002   	PD$NSP= ****** GX	RH.CNT= 000001   	UISDR0= 177600
NE.REJ= 177775   	NT.MOD= 000020   	PF$EIP= 000100   	RH.EFM= 000020   	UISDR4= 177610
NE.RES= 177773   	NT.MOM= 000000   	PF$ENB= 000200   	RH.HDR= 000002   	UISDR5= 177612
NE.TIM= 177772   	NT.NAK= 000002   	PF$OFF= 000000   	RH.PRI= 000014   	UISDR6= 177614
NI.FLI= 000002   	NT.NFL= 000000   	PF$RLI= 000002   	RH.PR1= 000004   	UISDR7= 177616
NI.FRI= 000004   	NT.SFL= 000001   	PF$RRI= 000004   	RH.RFM= 000100   	VERASC  002130RG    002
NI.FRT= 000001   	NT.SOL= 000140   	PF$RVE= 000001   	RLSDBK  001204RG    002	VF$RCV= 100000
NI.FUB= 000010   	NT.XOF= 000004   	PF$RVR= 000040   	R$$DER= 000000   	VF$XMT= 040000
NI.INI= 000001   	NT.XON= 000010   	PF$SLI= 000002   	R$$K11= 000001   	V$FLG   000000
NI.RLI= 000002   	NWNOD   000466RG    002	PF$SRI= 000004   	R$$SND= 000000   	V$LEN   000022
NI.RRI= 000004   	N$ACQ   000000   	PF$SRT= 000001   	R$$11M= 000000   	V$RCV   000002
NI.RVE= 000001   	N$ICF   000006   	PF$STA= 000003   	SETFLG  001672RG    002	V$XMT   000012
NI.VER= 000002   	N$LNI   000010   	PF$SUB= 000010   	SISDR0= 172200   	V$$CTR= 001000
NP$RTR= 000003   	N$LVC   000022   	PF$UP = 000001   	SKPEXB  002122RG    002	WINDOW= 004000
NS.BOM= 000040   	N$NOD   000032   	PIRQ  = 177772   	SRNOD = ****** GX	X$$DBT= 000000
NS.EOM= 000100   	N$PLD   000026   	PMODE = 030000   	SR0   = 177572   	$ALOCB= ****** GX
NS.MFL= 000003   	N$STS   000042   	PROCI   001316RG    002	SR3   = 172516   	$CALLX= ****** GX
NS.MOM= 000000   	N$TCB   000004   	PRONAM  001556R     002	STLN0   000562RG    002	$CCBGT= ****** GX
NS.NFL= 000001   	N$TMP   000012   	PR0   = 000000   	STLVC   000620RG    002	$CCBRT= ****** GX
NS.SET= 000002   	N$VER   000036   	PR1   = 000040   	STPLD   000552RG    002	$DEACB= ****** GX
NS.SFL= 000002   	N$$DAT= 000030   	PR4   = 000200   	ST$CC = 000002   	$ENCOD= ****** GX
NS.SOL= 000140   	N$$DIS= 000020   	PR5   = 000240   	ST$CIR= 000003   	$HOST = ****** GX
NS.SUC= 000001   	N$$INT= 000020   	PR6   = 000300   	ST$CIS= 000001   	$LDBGT= ****** GX
NT$ABO= 000022   	N$$LDV= 000001   	PR7   = 000340   	ST$DAT= 000005   	$MPOBJ= ****** GX
NT$ACC= 000002   	N$$MOV= 000010   	PS    = 177776   	ST$DID= 000015   	$MUL  = ****** GX
NT$ADS= 000000   	N$$OPT= 000020   	PSTUSR= ****** GX	ST$DIP= 000006   	$NSADB= ****** GX
NT$AKD= 000016   	N$$OVR= 000042   	PS$NTI= 000003   	ST$DIR= 000012   	$NTNAM= ****** GX
NT$AKI= 000020   	N$$SYS= 000001   	PS$OFF= 000000   	ST$DIS= 000014   	$QCRR = ****** GX
NT$CC = 000012   	N$$USR= 000001   	PS$STR= 000001   	ST$UDI= 000013   	$QDIC = ****** GX
NT$CON= 000000   	N.ACNT  000116   	PS$UP = 000005   	ST$UNR= 000011   	$QDIR = ****** GX
NT$DAT= 000002   	N.ACTL  000114   	PS$VER= 000004   	SWR   = 177570   	$RDBSZ= ****** GX
NT$DIS= 000010   	N.DDL1  000012   	PS$WT = 000002   	S$EMR   000006   	$SAVRG= ****** GX
NT$IDC= 000034   	N.DDL2  000016   	PUTBIN= ****** GX	S$FMT   000012
NSPSBA	MACRO M1110  13-OCT-79 10:17  PAGE 25-4
SYMBOL TABLE


. ABS.	000160	   000
      	000000	   001
NSPSBA	003034	   002
$NSACP	000040	   003
ERRORS DETECTED:  0

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

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ADDLNK	  000000 RG	#4-115     
ADNOD 	  000510 RG	 7-303     #9-442     
BLDIMA	  001104 R	 12-628    #13-660    
BLDIMG	  001100 R	 12-580     12-583     12-586     12-589    #13-657    
CCBGT 	  001276 RG	 14-692    #15-777     22-1211    22-1220   
CHKFLG	  000160 RG	#6-228     
CHKULA	  000000 RG	#5-186     
CLNLNK	  002670 RG	 21-1186    23-1295    23-1299   #25-1367   
CL$ACK	= 000040	 17-965    
CL$MFL	= 000010	 6-244      17-970     17-974    
CL$SFL	= 000004	 6-238      17-967    
CL$TYP	= 000001	 6-229      17-963    
CL.MU1	= 000001	 12-577     16-844    
CL.MU2	= 000002	 12-577     16-855    
CL.RES	= 177774	 16-842    
CNVIMA	  001646 R	 16-899    #16-925    
CNVIMG	  001642 R	 16-847     16-850     16-853     16-858    #16-922    
CONSM2	  000640 RG	#12-555    
CONSM3	  001014 R	 12-570     12-573    #12-613    
CTRES 	= ******  GX	 15-779    
C.BUF 	  000014	 7-278      12-556    *14-698    *14-699     14-717     15-749    *15-750     15-751     16-813    
                        *22-1213   *22-1222   
C.BUF2	  000024	 18-1015   
C.CNT 	  000020	*22-1214   *22-1226   
C.CNT2	  000030	 18-1010    18-1012   *18-1013   
C.LIN 	  000006	 10-482     10-486    *22-1246   *23-1292   *25-1408   
C.MOD 	  000011	*22-1251   
C.NSP 	  000004	 5-198     *22-1236   *23-1282   
C.STS 	  000012	 6-235      6-240     *22-1245   *23-1291   
DF$LCL	= 040000	 7-306     
DF$REM	= 010000	 7-302      9-415     
DISUSR	  002226 RG	#21-1174   
DISUS0	  002266 RG	#22-1207   
DISUS1	  002274 RG	 21-1182    21-1185   #22-1210   
DISUS2	  002542 R	 21-1181   #23-1279   
DISUS3	  002646 R	 21-1183   #23-1316   
D$CHN 	  000002	 7-310      7-318     
D$NAM 	  000006	 16-817    
ENTDIP	  002656 RG	 21-1177   #24-1332   
ER$COM	= 000047	 21-1145   
ER$FMT	= 000005	 12-590     16-868     19-1055   
ER$ILS	= 000043	 17-979    
ER$NOD	= 000002	 7-321     
ER$RES	= 000001	 4-159      14-691     22-1232    22-1265   
ER$UOB	= 000004	 16-865    
GETBIN	= ******  GX	 16-823     16-894     16-896    
GETDBK	  001130 RG	#14-691    
GETEXB	  002032 RG	#19-1039   
GETEX1	= ******  GX	 16-840    
GETEX2	  002032 RG	#19-1040   
GETLDB	  001244 RG	#15-746    
GETNNO	  000242 RG	#7-277     
NSPSBA     CREATED BY  MACRO  ON 13-OCT-79 AT 10:17	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

HALP  	= 000132	#20-1103    20-1115   
HNGUSR	  002204 RG	#21-1142   
HNUM  	= 000071	#20-1101    20-1111   
KISAR6	= 172354	*15-749    *22-1247   *23-1293   *25-1409   
LALP  	= 000101	#20-1102    20-1113   
LF.HMF	= 020000	 17-976    
LF.HSF	= 010000	 17-969    
LF.LCL	= 040000	 7-314     
LF.MMF	= 100000	 6-243     
LF.MSF	= 040000	 6-237     
LF.RSU	= 100000	 22-1260    24-1333   
LNUM  	= 000060	#20-1100    20-1109   
L.DCR 	  000036	*21-1175   *22-1232    22-1236   *22-1265    23-1282   
L.FLG 	  000012	*6-237     *6-243     *17-969    *17-976    
L.LLA 	  000002	*4-144     
L.LNG1	  000054	 4-128     
L.LNO 	  000022	*4-148     
L.NIN 	  000016	*4-146     
L.NSTA	  000025	*21-1144   
L.NXN 	  000014	*4-145     
L.PDV 	  000041	 6-231      22-1241    23-1287    25-1383    25-1402   
L.RNO 	  000020	*4-147     
L.TIPI	  000004	 25-1372   
L.UDQ 	  000034	 25-1398   
L.ULA 	  000040	 5-198      22-1246    23-1292    25-1408   
L.USTA	  000024	*22-1234   *22-1259   *23-1280   *23-1316    25-1370   
L.XQ1 	  000046	 18-1005   *18-1006   
M$$MGE	= 000000	 7-289      7-289      12-566     12-566     12-624     12-624     12-626     12-626     15-749    
                         15-779     15-779     16-823     16-823     16-840     16-840     16-894     16-894     16-896    
                         16-896     22-1247    22-1252    22-1252    22-1253    22-1253    23-1293    23-1298    23-1298   
                         25-1388    25-1388    25-1394    25-1394    25-1409    25-1416    25-1416    25-1419    25-1419   
NC.FM2	= 000002	 12-618    
NDLNG 	  000436 RG	 7-281      7-284      7-287     #7-348     
NE.ABO	= 177776	 22-1238    23-1284   
NE.DIS	= 177777	 22-1235   
NE.REJ	= 177775	 23-1281   
NS.SUC	= 000001	 25-1415   
NT$DIS	= 000010	 22-1251   
NT.MFL	= 000002	 6-240     
NT.SFL	= 000001	 6-235     
NWNOD 	  000466 RG	#9-411     
N$ICF 	  000006	 7-298     
N$LNI 	  000010	 7-308     
N$LVC 	  000022	 11-524    
N$PLD 	  000026	 10-496    
N$STS 	  000042	 4-151     
N$$DIS	= 000020	 22-1223    22-1225   
N$$ICF	= ******	 3-1        3-2        5-191      7-293      8-372      25-1375   
N$$LV2	= ******	 4-125      24-1335   
N$$OVR	= 000042	 12-560     16-825    
N$$SYS	= 000001	 3-83       6-230      6-234      22-1240    22-1250    23-1286    23-1297    25-1382    25-1387   
                         25-1401    25-1414   
NSPSBA     CREATED BY  MACRO  ON 13-OCT-79 AT 10:17	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

N$$USR	= 000001	 3-83       6-230      22-1240    23-1286    25-1382    25-1392    25-1401    25-1407   
N.ACTL	  000114	 12-585     16-852    
N.DFMT	  000010	 12-569     16-832    
N.DOBJ	  000011	 16-862    
N.LGTH	= 000160	 14-695     14-718    
N.OPDL	  000136	 12-588     16-857    
N.PASL	  000102	 12-582     16-849    
N.RQDL	  000060	 12-579     16-846    
N.SEG 	  000006	 12-561    *16-829    
N.SFMT	  000034	 12-572     16-835    
PD$NSP	= ******  GX	 7-289      12-566     12-624     12-626     15-779     16-823     16-840     16-894     16-896    
                         22-1252    22-1253    23-1298    25-1388    25-1394    25-1416    25-1419   
PROCI 	  001316 RG	#16-812    
PRONAM	  001556 R	 16-833     16-836    #16-884    
PSTUSR	= ******  GX	 22-1252   
PS$UP 	= 000005	 7-300      7-312      7-318     
PUTBIN	= ******  GX	 12-566     12-624     12-626    
P$LEN 	  000014	 10-487    
REMLNK	= ******  GX	 25-1419   
REMSYS	= ******  GX	 22-1253    25-1388   
REMUSR	= ******  GX	 25-1394   
RETUSR	= ******  GX	 23-1298    25-1416   
RLSDBK	  001204 RG	#14-715    
RSX11D	= ******	 7-289      7-289      12-566     12-566     12-624     12-624     12-626     12-626     15-779    
                         15-779     16-823     16-823     16-840     16-840     16-894     16-894     16-896     16-896    
                         22-1252    22-1252    22-1253    22-1253    23-1298    23-1298    25-1388    25-1388    25-1394   
                         25-1394    25-1416    25-1416    25-1419    25-1419   
R$$EIS	= ******	 10-489    
SETFLG	  001672 RG	#17-963    
SKPEXB	  002122 RG	 19-1054   #19-1067    19-1069   
SRNOD 	= ******  GX	 7-289     
STLN0 	  000562 RG	#10-485    
STLVC 	  000620 RG	 4-116      5-186     #11-523    
STPLD 	  000552 RG	 9-412     #10-481    
ST$DID	= 000015	 21-1144    25-1370   
ST$DIP	= 000006	 24-1332    25-1368   
ST$DIR	= 000012	 22-1234    23-1316   
ST$UDI	= 000013	 23-1280    25-1370   
ST$UNR	= 000011	 22-1259   
S$LNK 	  000022	*4-152      4-153      4-155     
S$MLK 	  000024	 4-153     *4-155     
UCRDAT	  001760 RG	#18-1005    23-1279   
UISAR6	= 177654	 22-1247    23-1293    25-1409   
VERASC	  002130 RG	#20-1105   
$ALOCB	= ******  GX	 4-131      14-696    
$CALLX	= ******  GX	 7-289      12-566     12-624     12-626     15-779     16-823     16-840     16-894     16-896    
                         22-1252    22-1253    23-1298    25-1388    25-1394    25-1416    25-1419   
$CCBGT	= ******  GX	 15-777    
$CCBRT	= ******  GX	 14-720    
$DEACB	= ******  GX	 14-719    
$ENCOD	= ******  GX	 4-142     *4-143     
$HOST 	= ******  GX	 7-283     
NSPSBA     CREATED BY  MACRO  ON 13-OCT-79 AT 10:17	PAGE 4

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

$LDBGT	= ******  GX	 15-746    
$MPOBJ	= ******  GX	 16-863    
$MUL  	= ******  GX	 10-492    
$NSADB	= ******  GX	 4-150      7-280      10-495     11-523    
$NTNAM	= ******  GX	 7-286     
$QCRR 	= ******  GX	 23-1294   
$QDIC 	= ******  GX	 25-1410   
$QDIR 	= ******  GX	 22-1248   
$RDBSZ	= ******  GX	 12-559     16-824    
$SAVRG	= ******  GX	 4-115      9-411      9-442      20-1105    21-1142    21-1174    22-1207    25-1367   
NSPSBA     CREATED BY  MACRO  ON 13-OCT-79 AT 10:17	PAGE 5

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

CALL  		 4-116      4-131      5-186      7-281      7-284      7-287      7-303      9-412      10-492     12-570    
                 12-573     12-580     12-583     12-586     12-589     12-628     14-692     14-696     14-719     14-720    
                 15-746     15-777     16-833     16-836     16-847     16-850     16-853     16-858     16-863     16-899    
                 19-1054    21-1177    22-1211    22-1220    23-1279    23-1294    25-1410   
CALLC 		#3-75      #7-289     #12-566    #12-624    #12-626    #15-779    #16-823    #16-840    #16-894    #16-896    
                #22-1252   #22-1253   #23-1298   #25-1388   #25-1394   #25-1416   #25-1419   
CALLR 		#21-1179   #22-1248   #23-1295   #23-1299   
CALLX 		#3-75       7-289      12-566     12-624     12-626     15-779     16-823     16-840     16-894     16-896    
                 22-1252    22-1253    23-1298    25-1388    25-1394    25-1416    25-1419   
CCBDF$		#3-78       3-79      
HWDDF$		#15-749    #15-749    #22-1247   #22-1247   #23-1293   #23-1293   #25-1409   #25-1409   
MAP   		#3-73      #15-749    
NSPSY$		#3-78      #3-80      
RECMAP		#3-73      #22-1247   #23-1293   #25-1409   
RESMAP		#3-73      
RESRG 		#3-74       7-322      12-591     14-721     16-869    
RETURN		 4-161      5-205      6-245      7-323      7-356      9-453      10-500     11-528     12-592     12-629    
                 13-668     14-722     15-752     15-780     16-870     16-900     16-933     17-981     18-1018    19-1065   
                 19-1070    20-1119    22-1254    22-1266    23-1317    24-1342    25-1420   
SAVMAP		#3-73      
SAVRG 		#3-74      #7-277     #12-555    #14-691    #14-715    #16-812    
SOB   		#4-121     #5-202     #7-352     #9-452     #13-667    #16-932    #18-1017   #20-1118   #22-1228   
$MVFBF		#3-77      
$MVTBF		#3-77      
$QDLC 		#3-76      
$QLLC 		#3-76