Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/nml/nmunet.lst
There are no other files named nmunet.lst in the archive.
								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page   1
								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (1)

;	  0001	! <BRANDT.DEVELOPMENT>NMUNET.B16.1 21-Oct-82 14:39:37, Edit by BRANDT
;	  0002	!
;	  0003	!   Ident 09.
;	  0004	!     Rework code in ASSIGN_A_LUN to compress code size.
;	  0005	!
;	  0006	! <BRANDT.DEVELOPMENT>NMUNET.B16.1 21-Oct-82 9:00:17, Edit by BRANDT
;	  0007	!
;	  0008	!   Ident 08.
;	  0009	!     In NMU$NETWORK_OPEN, for source_links having no node name, convert
;	  0010	!     the node number to an ASCII string and use that for the name.
;	  0011	!     Remove code from ident 5.
;	  0012	!     And finally some simple code compression so we can task build.
;	  0013	!
;	  0014	! <BRANDT.DEVELOPMENT>NMUNET.B16.1 14-Sep-82 14:22:34, Edit by BRANDT
;	  0015	!
;	  0016	!   Ident 07.
;	  0017	!     In NMU$NETWORK_OPEN set the error detail field of a response
;	  0018	!     message for RSX error codes other than IE$NRJ.  Thus "rejected
;	  0019	!     by object" will no longer be a catch all error.
;	  0020	!
;	  0021	! <BRANDT.DEVELOPMENT>NMUNET.B16.1 9-Sep-82 17:00:17, Edit by BRANDT
;	  0022	!
;	  0023	!   Ident 06.
;	  0024	!     Change FAIL_TYPE mappings for reject codes 0 and 5.
;	  0025	!
;	  0026	! <BRANDT.DEVELOPMENT>NMUNET.B16.1 9-Sep-82 15:30:17, Edit by BRANDT
;	  0027	!
;	  0028	!   Ident 05.
;	  0029	!     In NMU$NETWORK_OPEN make a check for source_links to verify that
;	  0030	!     a node name is supplied.
;	  0031	!
;	  0032	!NET:<PECKHAM.DEVELOPMENT>NMUNET.B16.3 25-Jun-82 19:39:37, Edit by PECKHAM
;	  0033	!
;	  0034	! Ident 04.
;	  0035	! Add global symbols UN$USER, UN$PASSWORD, UN$ACCOUNT for access control
;	  0036	! (they are filled in by NMLEVT with data from NMX).
;	  0037	! In NMU$NETWORK_VALIDATE, check the connect accounting data
;	  0038	! against the strings supplied in the above.
;	  0039	!
;	  0040	!NET:<PECKHAM.DEVELOPMENT>NMUNET.B16.3 23-Mar-82 08:25:40, Edit by PECKHAM
;	  0041	!
;	  0042	! Ident 03.
;	  0043	! Make response pointers optional in NMU$NETWORK_OPEN.
;	  0044	!
;	  0045	!NET:<PECKHAM.DEVELOPMENT>NMUNET.B16.3  3-Mar-82 08:37:38, Edit by PECKHAM
;	  0046	!
;	  0047	! Ident 02.
;	  0048	! Revise to accomodate fix in SCX X1(42).
;	  0049	! After receiving NT$DSC/ABO/ABT, insure that an ABO is done.
;	  0050	!
;	  0051	!NET:<PECKHAM.DEVELOPMENT>NMUNET.B16.2 23-Jan-82 20:47:26, Edit by PECKHAM
;	  0052	!
								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page   2
								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (1)

;	  0053	! Ident 01.
;	  0054	! Fix call to NMU$SCHED_WAIT to include timeout value.
;	  0055	!
;	  0056	module NMUNET (					! Task to task network communications
;	  0057			ident = 'X01.09'
;	  0058			) =
;	  0059	begin
;	  0060	!
;	  0061	!                    COPYRIGHT (c) 1980, 1981, 1982
;	  0062	!                    DIGITAL EQUIPMENT CORPORATION
;	  0063	!                        Maynard, Massachusetts
;	  0064	!
;	  0065	!     This software is furnished under a license and may  be  used
;	  0066	!     and copied only in accordance with the terms of such license
;	  0067	!     and with the inclusion of the above copyright notice.   This
;	  0068	!     software  or any other copies thereof may not be provided or
;	  0069	!     otherwise made available to any other person.  No  title  to
;	  0070	!     and ownership of the software is hereby transferred.
;	  0071	!
;	  0072	!     The information  in  this  software  is  subject  to  change
;	  0073	!     without  notice  and should not be construed as a commitment
;	  0074	!     by DIGITAL EQUIPMENT CORPORATION.
;	  0075	!
;	  0076	!     DIGITAL assumes no responsibility for the use or reliability
;	  0077	!     of  its  software  on  equipment  which  is  not supplied by
;	  0078	!     DIGITAL.
;	  0079	!
;	  0080	
;	  0081	!++
;	  0082	! Facility: LSG DECnet Network Management
;	  0083	!
;	  0084	! Abstract: This module provides a "generic" interface to DECnet
;	  0085	!	    task to task communications.
;	  0086	!
;	  0087	!	    As perceived by  the user of  these interfaces, there  are
;	  0088	!	    two types of link ends: TARGET and SOURCE.  A TARGET  task
;	  0089	!	    (sometimes known as  a SERVER) waits  for another task  to
;	  0090	!	    issue a connect to it.  A SOURCE task issues a connect  to
;	  0091	!	    the task it  wishes to communicate  with.  Thus the  major
;	  0092	!	    difference  between  the  ends  of  a  link  is  the  link
;	  0093	!	    connection operation.
;	  0094	!
;	  0095	! Environment: TOPS10/TOPS20 user mode, MCB RSX task level
;	  0096	!
;	  0097	! Author: Scott G. Robinson, Creation Date: 26-JAN-81
;	  0098	!
;	  0099	!	From NMUNET.B36 by Steven M. Jenness
;	  0100	!
;	  0101	! Modified by:
;	  0102	!
;	  0103	! 02 - Fix Maximum Logical Links and Error Detail on Server Rejects
;	  0104	! 03 - Install Limit Protection code on ch$copy and ch$moves
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page   3
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (1)

;	  0105	! 04 - Remove Synchronization Race Condition on LSB_CONNECTED
;	  0106	! 05 - Ensure no conflicts on simultaneous Transmits and Receives
;	  0107	! 06 - Prevent Queue Interlocks from deadlocking non-Interrupt processing
;	  0108	! 07 - Conform to Node_ID format in CONN_BLK
;	  0109	! 08 - Support Assignment of DLX Luns
;	  0110	! 09 - Have NETWORK_OPEN build a response message on error.
;	  0111	! 10 - Add a response code -2 to NETWORK_OPEN, to mean "don't retry".
;	  0112	!
;	  0113	!--
;	  0114	
;	  0115	!<BLF/SYNONYM $FIELD=FIELD>
;	  0116	!<BLF/SYNONYM %unquote =>
;	  0117	!<BLF/PAGE>
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page   4
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (2)

;	  0118	!
;	  0119	! Include files
;	  0120	!
;	  0121	
;	  0122	library 'NMULIB';				! All required definitions
;	  0123	
;	  0124	!
;	  0125	! Global routines
;	  0126	!
;	  0127	
;	  0128	forward routine
;	  0129	    NMU$NETWORK_UTILITIES;			! Define global entry points
;	  0130	
;	  0131	!
;	  0132	! Local routines
;	  0133	!
;	  0134	
;	  0135	forward routine
;	  0136	    DECLARE_NETWORK_EVENT : novalue,		! Declare a Network Event
;	  0137	    GND_AST : VANILLA_INTERRUPT_LINKAGE,	! Network Mailbox Interrupt Service
;	  0138	    PROCESS_MAILBOX_ENTRY : novalue,		! Process a Mailbox Entry
;	  0139	    IQ_SCAN,					! Scanning routine for info queue
;	  0140	    ASSIGN_A_LUN;				! Assign a LUN for Network Usage
;	  0141	
;	  0142	!
;	  0143	! Global Items
;	  0144	!
;	  0145	
;	  0146	global literal 					!These are used in the NML
;	  0147	    LUN$NM = NMU$_NM_DEVICE_LUN,
;	  0148	    EFN$NM = NMU$_NM_DEVICE_FLAG,
;	  0149	    LUN$NS = NMU$_NETWORK_LUN,
;	  0150	    EFN$NS = NMU$_NETWORK_FLAG;
;	  0151	
;	  0152	!
;	  0153	! Own variables
;	  0154	!
;	  0155	
;	  0156	literal
;	  0157	    NODE_ID_LENGTH = 9;
;	  0158	
;	  0159	bind
;	  0160	    FAIL_TYPE = uplit
;	  0161	
;	  0162	!	Failure code			Reject/object code
;	  0163	!	------------			------------------
;	  0164	
;	  0165		(      10,			!       0
;	  0166			4,			!       1
;	  0167			2,			!       2
;	  0168		       11,			!       3
;	  0169			7,			!       4
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page   5
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (2)

;	  0170			6,			!       5
;	  0171			9,			!       6
;	  0172		       12,			!       7
;	  0173		       15,			!       8
;	  0174		       14,			!       9
;	  0175	    rep 22 of (15),			!   10-31
;	  0176			4,			!      32
;	  0177			9,			!      33
;	  0178			8,			!      34
;	  0179		       15,			!      35
;	  0180			8,			!      36
;	  0181		       15,			!      37
;	  0182		       10,			!      38
;	  0183			3,			!      39
;	  0184		       15,			!      40
;	  0185		       15,			!      41
;	  0186		       15,			!      42
;	  0187			8): vector;		!      43
;	  0188	
;	  0189	bind
;	  0190	    RETRY_CODE = uplit
;	  0191	
;	  0192	!	Return code			Reject/object code
;	  0193	!	-----------			------------------
;	  0194	
;	  0195		(	-2,			!	0
;	  0196			-1,			!	1
;	  0197			-2,			!	2
;	  0198			-2,			!	3
;	  0199			-2,			!	4
;	  0200			-2,			!	5
;	  0201			-1,			!	6
;	  0202			-2,			!	7
;	  0203			-1,			!	8
;	  0204			-2,			!	9
;	  0205	    rep 22 of (-2),			!   10-31
;	  0206			-1,			!      32
;	  0207			-1,			!      33
;	  0208			-2,			!      34
;	  0209			-2,			!      35
;	  0210			-2,			!      36
;	  0211			-2,			!      37
;	  0212			-1,			!      38
;	  0213			-2,			!      39
;	  0214			-2,			!      40
;	  0215			-2,			!      41
;	  0216			-2,			!      42
;	  0217			-2): vector;		!      43
;	  0218	own
;	  0219	    LOCAL_NODE : block [ch$allocation (NODE_ID_LENGTH, 8)],	! Local node id
;	  0220	    NEXT_LINK_ID,				! Link identification sequence
;	  0221	    INFO_QUEUE : Q_HEADER,			! Queue of all link info blocks
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page   6
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (2)

;	  0222	    NETWORK_LUNS : VECTOR [NMU$_NETWORK_MAX_LUNS];	! LUN Assignment Vector
;	  0223	
;	  0224	global
;	  0225	    UN$USER : block [ch$allocation (1 + 16, 8)],
;	  0226	    UN$PASSWORD : block [ch$allocation (1 + 8, 8)],
;	  0227	    UN$ACCOUNT : block [ch$allocation (1 + 16, 8)];
;	  0228	
;	  0229	!
;	  0230	! Structures
;	  0231	!
;	  0232	! 	All contained in NMUNTS
;	  0233	!
;	  0234	! Local Macros
;	  0235	!
;	  0236	
;	  0237	macro
;	M 0238	    WAIT_FOR_NETWORK (LNKINFO, WHILE_COND) =
;	M 0239		begin
;	M 0240	
;	M 0241		bind
;	M 0242		    LNKSTS = LNKINFO[LINK_STATUS] : LINK_STATUS_BLOCK;
;	M 0243	
;	M 0244		while (WHILE_COND) do
;	M 0245		    NMU$SCHED_WAIT(LNKINFO[LINK_EVENT], 0)
;	  0246		end %;
;	  0247	
;	  0248	!
;	  0249	! External routines
;	  0250	!
;	  0251	
;	  0252	external routine
;	  0253	    NMU$QUEUE_MANAGER,				! Queue management routines
;	  0254	    NMU$MEMORY_MANAGER,				! Memory management routines
;	  0255	    NMU$SCHED_MANAGER;				! Scheduler interface
;	  0256	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page   7
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (3)

;	  0257	global routine %unquote NMU$NETWORK_INITIALIZE : novalue =
;	  0258	
;	  0259	!++
;	  0260	! Functional description:
;	  0261	!
;	  0262	!	This routine initializes the network system interface.
;	  0263	!
;	  0264	! Formal parameters: none
;	  0265	!
;	  0266	! Routine value: none
;	  0267	! Side effects:
;	  0268	!
;	  0269	!	The local node id is retrieved for NMU$NETWORK_LOCAL.
;	  0270	!
;	  0271	!--
;	  0272	
;	  0273	    begin
;	  0274	
;	  0275	    own
;	  0276		NETWORK_STATUS : $NETWORK_STATUS_BLOCK,
;	  0277		OPN_DIR : OPNW$ (NMU$_NETWORK_LUN, NMU$_NETWORK_FLAG, NETWORK_STATUS,, <NMU$_NETWORK_MAX_LUNS>),
;	P 0278		GLN_DIR : GLNW$ (NMU$_NETWORK_LUN, NMU$_NETWORK_FLAG, NETWORK_STATUS,,
;	  0279			<LOCAL_NODE, NODE_ID_LENGTH, 1>);
;	  0280	
;	  0281	!
;	  0282	! Interrupt Service Routine for SPA$ Initialization
;	  0283	!
;	  0284	    routine SPA_AST NETWORK_INTERRUPT_ROUTINE =
;	  0285		begin
;	  0286	
;	  0287		map
;	  0288		    NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
;	  0289	
;	  0290		bind
;	  0291		    NUMBER_OF_ENTRIES = NETWORK_STATUS_BLOCK [NETSB$IO_COUNT];
;	  0292	
;	  0293	!
;	  0294	! See if we were successful and if so process a few entries
;	  0295	! from the mailbox.
;	  0296	!
;	  0297	
;	  0298		if .NETWORK_STATUS_BLOCK [NETSB$ERR] eql IS$SUC
;	  0299		then
;	  0300	
;	  0301		    until .NUMBER_OF_ENTRIES eql 0 do
;	  0302			begin
;	  0303			PROCESS_MAILBOX_ENTRY ();
;	  0304			NUMBER_OF_ENTRIES = .NUMBER_OF_ENTRIES - 1;
;	  0305			end;
;	  0306	
;	  0307	!
;	  0308		end;					!of SPA_AST
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page   8
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (3)



						.TITLE	NMUNET
						.IDENT	/X01.09/


000000						.PSECT	$PLIT$,  RO ,  D  
000000	000012 				P.AAA:	.WORD	12
000002	000004 					.WORD	4
000004	000002 					.WORD	2
000006	000013 					.WORD	13
000010	000007 					.WORD	7
000012	000006 					.WORD	6
000014	000011 					.WORD	11
000016	000014 					.WORD	14
000020	000017 					.WORD	17
000022	000016 					.WORD	16
000024	000017 					.WORD	17
000026	000017 					.WORD	17
000030	000017 					.WORD	17
000032	000017 					.WORD	17
000034	000017 					.WORD	17
000036	000017 					.WORD	17
000040	000017 					.WORD	17
000042	000017 					.WORD	17
000044	000017 					.WORD	17
000046	000017 					.WORD	17
000050	000017 					.WORD	17
000052	000017 					.WORD	17
000054	000017 					.WORD	17
000056	000017 					.WORD	17
000060	000017 					.WORD	17
000062	000017 					.WORD	17
000064	000017 					.WORD	17
000066	000017 					.WORD	17
000070	000017 					.WORD	17
000072	000017 					.WORD	17
000074	000017 					.WORD	17
000076	000017 					.WORD	17
000100	000004 					.WORD	4
000102	000011 					.WORD	11
000104	000010 					.WORD	10
000106	000017 					.WORD	17
000110	000010 					.WORD	10
000112	000017 					.WORD	17
000114	000012 					.WORD	12
000116	000003 					.WORD	3
000120	000017 					.WORD	17
000122	000017 					.WORD	17
000124	000017 					.WORD	17
000126	000010 					.WORD	10
000130	177776 				P.AAB:	.WORD	-2
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page   9
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (3)

000132	177777 					.WORD	-1
000134	177776 					.WORD	-2
000136	177776 					.WORD	-2
000140	177776 					.WORD	-2
000142	177776 					.WORD	-2
000144	177777 					.WORD	-1
000146	177776 					.WORD	-2
000150	177777 					.WORD	-1
000152	177776 					.WORD	-2
000154	177776 					.WORD	-2
000156	177776 					.WORD	-2
000160	177776 					.WORD	-2
000162	177776 					.WORD	-2
000164	177776 					.WORD	-2
000166	177776 					.WORD	-2
000170	177776 					.WORD	-2
000172	177776 					.WORD	-2
000174	177776 					.WORD	-2
000176	177776 					.WORD	-2
000200	177776 					.WORD	-2
000202	177776 					.WORD	-2
000204	177776 					.WORD	-2
000206	177776 					.WORD	-2
000210	177776 					.WORD	-2
000212	177776 					.WORD	-2
000214	177776 					.WORD	-2
000216	177776 					.WORD	-2
000220	177776 					.WORD	-2
000222	177776 					.WORD	-2
000224	177776 					.WORD	-2
000226	177776 					.WORD	-2
000230	177777 					.WORD	-1
000232	177777 					.WORD	-1
000234	177776 					.WORD	-2
000236	177776 					.WORD	-2
000240	177776 					.WORD	-2
000242	177776 					.WORD	-2
000244	177777 					.WORD	-1
000246	177776 					.WORD	-2
000250	177776 					.WORD	-2
000252	177776 					.WORD	-2
000254	177776 					.WORD	-2
000256	177776 					.WORD	-2



000000						.PSECT	$OWN$,  D  
000000					LOCAL.NODE:
						.BLKW	5
000012					NEXT.LINK.ID:
						.BLKW	1
000014					INFO.QUEUE:
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  10
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (3)

						.BLKW	3
000022					NETWORK.LUNS:
						.BLKW	10
000042					NETWORK.STATUS:
						.BLKW	3
000050	006003 				OPN.DIR:.WORD	6003
000052	016400 					.WORD	16400
000054	000005 					.WORD	5
000056	000005 					.WORD	5
000060	000042'					.WORD	NETWORK.STATUS
000062	000000 					.WORD	0
000064	000010 					.WORD	10
000066	000000 					.WORD	0
000070	000000 					.WORD	0
000072	000000 					.WORD	0
000074	000000 					.WORD	0
000076	000000 					.WORD	0
000100	006003 				GLN.DIR:.WORD	6003
000102	016670 					.WORD	16670
000104	000005 					.WORD	5
000106	000005 					.WORD	5
000110	000042'					.WORD	NETWORK.STATUS
000112	000000 					.WORD	0
000114	000000'					.WORD	LOCAL.NODE
000116	000011 					.WORD	11
000120	000001 					.WORD	1
000122	000000 					.WORD	0
000124	000000 					.WORD	0
000126	000000 					.WORD	0



000000						.PSECT	$GLOB$,  D  
000000					UN$USER::
						.BLKW	11
000022					UN$PASSWORD::
						.BLKW	5
000034					UN$ACCOUNT::
						.BLKW	11


						.GLOBL	UQ.RESET, UQ.INSERT, UQ.REMOVE
						.GLOBL	UQ.EXTRACT, UQ.LENGTH, UQ.SCAN
						.GLOBL	UQ.SEXTRACT, UM.RESET, UM.INITIALIZE
						.GLOBL	UM.GET, UM.RELEASE, US.CREATE
						.GLOBL	US.ABORT, US.FINI, US.COMPLETE
						.GLOBL	US.ERROR, US.INSERT, US.REMOVE
						.GLOBL	US.QRESET, US.QQINS, US.QQREM
						.GLOBL	US.QQSET, US.QQEXT, US.EVENT, US.WAIT
						.GLOBL	US.FLAG, US.SLEEP, US.CURRENT
						.GLOBL	US.DESCHEDULE
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  11
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (3)


	000002 				LUN$NM==	    2
	000002 				EFN$NM==	    2
	000005 				LUN$NS==	    5
	000005 				EFN$NS==	    5
	000000'				FAIL.TYPE=	    P.AAA
	000130'				RETRY.CODE=	    P.AAB


						.SBTTL	SPA.AST
000000						.PSECT	$CODE$,  RO 

000000	010046 				SPA.AST:MOV	R0,-(SP)			;					0284
000002	010146 					MOV	R1,-(SP)
000004	016601  000004 				MOV	4(SP),R1			; NETWORK.STATUS.,*			0291
000010	062701  000002 				ADD	#2,R1
000014	127627  000004  000001 			CMPB	@4(SP),#1			; NETWORK.STATUS.,*			0298
000022	001006 					BNE	2$
000024	005711 					TST	(R1)				;					0301
000026	001404 				1$:	BEQ	2$
000030	004767  000000V				JSR	PC,PROCESS.MAILBOX.ENTRY	;					0303
000034	005311 					DEC	(R1)				;					0304
000036	000773 					BR	1$				;					0301
000040	012601 				2$:	MOV	(SP)+,R1			;					0284
000042	012600 					MOV	(SP)+,R0

					;+
					;	RSX AST Service Routine Exit
					;-

000044	012716  000563 				MOV	#563,(SP)
000050	104377 					EMT	377
; Routine Size:  21 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  5 words


;	  0309	!
;	  0310	! Reset Network queues
;	  0311	!
;	  0312	    NMU$QUEUE_RESET (INFO_QUEUE);
;	  0313	!
;	  0314	! Reset Internal Link IDs
;	  0315	!
;	  0316	    NEXT_LINK_ID = 1;
;	  0317	!
;	  0318	! Assign the network LUNS and make them available for assignment
;	  0319	!
;	  0320	
;	  0321	    INCR LUN_NUMBER from NMU$_NETWORK_LUN to NMU$_NETWORK_LUN + NMU$_NETWORK_MAX_LUNS do
;	  0322		begin
;	  0323		ALUN$S (.LUN_NUMBER, %ASCII'NS', 0);
;	  0324		NETWORK_LUNS [.LUN_NUMBER - NMU$_NETWORK_LUN] = 0;
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  12
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (3)

;	  0325		end;
;	  0326	
;	  0327	!
;	  0328	! Assign the NM: device to its' LUN
;	  0329	!
;	  0330	    ALUN$S (NMU$_NM_DEVICE_LUN, %ASCII'NM', 0);
;	  0331	!
;	  0332	! Assign the NM: DLX device to its' LUNS
;	  0333	!
;	  0334	    ALUN$S (NMU$_DL0_DEVICE_LUN, %ASCII'NM', 0);
;	  0335	    ALUN$S (NMU$_DL1_DEVICE_LUN, %ASCII'NM', 0);
;	  0336	!
;	  0337	! Identify us to the network
;	  0338	!
;	  0339	    dir$ (OPN_DIR);
;	  0340	!
;	  0341	! We are now known to the network; Get local node information and
;	  0342	! construct local node information.
;	  0343	!
;	  0344	    dir$ (GLN_DIR);
;	  0345	!
;	  0346	! Startup Mailbox Interrupt Service
;	  0347	!
;	  0348	    SPA$S (NMU$_NETWORK_LUN,, NETWORK_STATUS, SPA_AST, <GND_AST>);
;	  0349	!
;	  0350	    end;					! End of NMU$NETWORK_INITIALIZE


						.SBTTL	UN.INIT
000000	010146 				UN.INIT::
						MOV	R1,-(SP)			;					0257
000002	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					0312
000006	004767  000000G				JSR	PC,UQ.RESET
000012	012767  000001  000012'			MOV	#1,NEXT.LINK.ID			;					0316
000020	012701  000005 				MOV	#5,R1				; *,LUN.NUMBER				0321
000024	005046 				1$:	CLR	-(SP)				;					0323
000026	012746  051516 				MOV	#51516,-(SP)
000032	010146 					MOV	R1,-(SP)			; LUN.NUMBER,*
000034	012746  002007 				MOV	#2007,-(SP)
000040	104377 					EMT	377
000042	010100 					MOV	R1,R0				; LUN.NUMBER,*				0324
000044	006300 					ASL	R0
000046	005060  000010'				CLR	NETWORK.LUNS-12(R0)
000052	005201 					INC	R1				; LUN.NUMBER				0321
000054	020127  000015 				CMP	R1,#15				; LUN.NUMBER,*
000060	003761 					BLE	1$
000062	005046 					CLR	-(SP)				;					0330
000064	012746  046516 				MOV	#46516,-(SP)
000070	012746  000002 				MOV	#2,-(SP)
000074	012746  002007 				MOV	#2007,-(SP)
000100	104377 					EMT	377
000102	005016 					CLR	(SP)				;					0334
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  13
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (3)

000104	012746  046516 				MOV	#46516,-(SP)
000110	012746  000003 				MOV	#3,-(SP)
000114	012746  002007 				MOV	#2007,-(SP)
000120	104377 					EMT	377
000122	005046 					CLR	-(SP)				;					0335
000124	012746  046516 				MOV	#46516,-(SP)
000130	012746  000004 				MOV	#4,-(SP)
000134	012746  002007 				MOV	#2007,-(SP)
000140	104377 					EMT	377
000142	012746  000050'				MOV	#OPN.DIR,-(SP)			;					0339
000146	104377 					EMT	377
000150	012746  000100'				MOV	#GLN.DIR,-(SP)			;					0344
000154	104377 					EMT	377
000156	005046 					CLR	-(SP)				;					0348
000160	005046 					CLR	-(SP)
000162	005046 					CLR	-(SP)
000164	005046 					CLR	-(SP)
000166	005046 					CLR	-(SP)
000170	012746  000000V				MOV	#GND.AST,-(SP)
000174	012746  000000'				MOV	#SPA.AST,-(SP)
000200	012746  000042'				MOV	#NETWORK.STATUS,-(SP)
000204	005046 					CLR	-(SP)
000206	012746  000005 				MOV	#5,-(SP)
000212	012746  016420 				MOV	#16420,-(SP)
000216	012746  006001 				MOV	#6001,-(SP)
000222	104377 					EMT	377
000224	012601 					MOV	(SP)+,R1			;					0257
000226	000207 					RTS	PC
; Routine Size:  76 words,	Routine Base:  $CODE$ + 0052
; Maximum stack depth per invocation:  15 words


;	  0351	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  14
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

;	  0352	global routine %unquote NMU$NETWORK_OPEN (TYPE, CONN_BLK, RESPONSE_PTR,
;	  0353				  RESPONSE_LEN, RESPONSE_CODE) =
;	  0354	
;	  0355	!++
;	  0356	! Functional description:
;	  0357	!
;	  0358	!	This routine opens a logical link.  It blocks the running
;	  0359	!	task until a successful connect is made or the link connection
;	  0360	!	is aborted for some explicit reason.
;	  0361	!
;	  0362	!	TARGET_LINK:	When this routine returns it will have filled
;	  0363	!			in the connect block fields: OPTIONAL_DATA,
;	  0364	!			USER, ACCOUNT and PASSWORD.  The link must
;	  0365	!			still be accepted or rejected.
;	  0366	!
;	  0367	!	SOURCE_LINK:	When this routine returns it will have filled
;	  0368	!			in the connect block fields: OPTIONAL_DATA,
;	  0369	!			REJECT_REASON.
;	  0370	!
;	  0371	! Formal parameters:
;	  0372	!
;	  0373	!	.TYPE	   	Link type to open (SOURCE_LINK, TARGET_LINK).
;	  0374	!	.CONN_BLK  	Address of a link connect block.
;	  0375	!	.RESPONSE_PTR	Pointer to a response buffer
;	  0376	!			if 0, no response is built.
;	  0377	!	.RESPONSE_LEN	Address of a value which on input contains the
;	  0378	!			maximum length of the response buffer, and on
;	  0379	!			output contains the actual length (if any).
;	  0380	!	.RESPONSE_CODE	NICE error code to put into response message
;	  0381	!			(usually LCF or MCF).
;	  0382	!
;	  0383	! Routine value:
;	  0384	!
;	  0385	!	gtr 0	Link id to be used in all future link references.
;	  0386	!	lss 0	DECnet link failure indication.
;	  0387	!
;	  0388	! Side effects: none
;	  0389	!
;	  0390	!--
;	  0391	
;	  0392	    begin
;	  0393	
;	  0394	    map
;	  0395		CONN_BLK : ref CONNECT_BLOCK;
;	  0396	
;	  0397	    local
;	  0398		LINK_INFO : ref LINK_INFO_BLOCK,
;	  0399		TEMP_PTR;
;	  0400	
;	  0401	!
;	  0402	! The interrupt service routine for SOURCE_LINK connects.
;	  0403	!
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  15
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

;	  0404	    routine CON_AST NETWORK_INTERRUPT_ROUTINE =
;	  0405		begin
;	  0406	
;	  0407		map
;	  0408		    NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
;	  0409	
;	  0410		local
;	  0411		    LINK_INFO : ref LINK_INFO_BLOCK;
;	  0412	
;	  0413	!
;	  0414	! Find our LINK_INFO block
;	  0415	!
;	  0416	
;	  0417		if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
;	  0418		then
;	  0419	!
;	  0420	! Update status to reflect connect complete
;	  0421	!
;	  0422		    begin
;	  0423	
;	  0424		    bind
;	  0425			LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  0426	
;	  0427		    if .NETWORK_STATUS_BLOCK [NETSB$ERR] eql IS$SUC
;	  0428		    then
;	  0429			begin
;	  0430			LNKSTS [LSB_CONNECTED] = 1;
;	  0431			LNKSTS [LSB_CLOSED] = 0;
;	  0432			end;
;	  0433	
;	  0434		    LNKSTS [LSB_CCWAIT] = 0;
;	  0435	!
;	  0436	! Startup waiting process
;	  0437	!
;	  0438		    DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  0439		    end;
;	  0440	
;	  0441		end;					! of CON_AST


						.SBTTL	CON.AST
000000	010046 				CON.AST:MOV	R0,-(SP)			;					0404
000002	010146 					MOV	R1,-(SP)
000004	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					0417
000010	016600  000006 				MOV	6(SP),R0			; NETWORK.STATUS.,*
000014	016046  000004 				MOV	4(R0),-(SP)
000020	012746  000000V				MOV	#IQ.SCAN,-(SP)
000024	004767  000000G				JSR	PC,UQ.SCAN
000030	062706  000006 				ADD	#6,SP
000034	005700 					TST	R0				; LINK.INFO
000036	001421 					BEQ	2$
000040	012701  000050 				MOV	#50,R1				;					0422
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  16
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

000044	060001 					ADD	R0,R1				; LINK.INFO,*
000046	127627  000004  000001 			CMPB	@4(SP),#1			; NETWORK.STATUS.,*			0427
000054	001004 					BNE	1$
000056	052711  000400 				BIS	#400,(R1)			;					0430
000062	142711  000004 				BICB	#4,(R1)				;					0431
000066	142711  000040 			1$:	BICB	#40,(R1)			;					0434
000072	010046 					MOV	R0,-(SP)			; LINK.INFO,*				0438
000074	004767  000000V				JSR	PC,DECLARE.NETWORK.EVENT
000100	005726 					TST	(SP)+				;					0422
000102	012601 				2$:	MOV	(SP)+,R1			;					0404
000104	012600 					MOV	(SP)+,R0

					;+
					;	RSX AST Service Routine Exit
					;-

000106	012716  000563 				MOV	#563,(SP)
000112	104377 					EMT	377
; Routine Size:  38 words,	Routine Base:  $CODE$ + 0302
; Maximum stack depth per invocation:  6 words


;	  0442	!
;	  0443	! Main OPEN Processing
;	  0444	!
;	  0445	    LINK_INFO = NMU$MEMORY_GET (LINK_INFO_BLOCK_ALLOCATION);
;	  0446	    LINK_INFO [LINK_ID] = (NEXT_LINK_ID = .NEXT_LINK_ID + 1);
;	  0447	
;	  0448	    if .NEXT_LINK_ID lss 0 then NEXT_LINK_ID = 1;
;	  0449	
;	  0450	    NMU$SCHED_EVENT (LINK_INFO [LINK_EVENT], $true);
;	  0451	    LINK_INFO [LINK_TYPE] = .TYPE;
;	  0452	!
;	  0453	! All LINK_INFO_BLOCKs go into the INFO_QUEUE.
;	  0454	!
;	  0455	    NMU$QUEUE_INSERT (INFO_QUEUE, LINK_INFO [LINK_QUEUE]);
;	  0456	    begin
;	  0457	
;	  0458	    bind
;	  0459		LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK,
;	  0460		CONB = LINK_INFO [LINK_CONB] : RSX$_CONB_BLOCK,
;	  0461		GNDB = LINK_INFO [LINK_GNDB] : RSX$_GNDB_BLOCK,
;	  0462		LNKSB = LINK_INFO [LINK_LINK_SB] : $NETWORK_STATUS_BLOCK,
;	  0463		INSB = LINK_INFO [LINK_IN_SB] : $NETWORK_STATUS_BLOCK,
;	  0464		OUTSB = LINK_INFO [LINK_OUT_SB] : $NETWORK_STATUS_BLOCK;
;	  0465	
;	  0466	!
;	  0467	! Setup other LINK_IDs for AST Routines
;	  0468	!
;	  0469	    LNKSB [NETSB$LINK_ID] = .LINK_INFO [LINK_ID];
;	  0470	    INSB [NETSB$LINK_ID] = .LINK_INFO [LINK_ID];
;	  0471	    OUTSB [NETSB$LINK_ID] = .LINK_INFO [LINK_ID];
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  17
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

;	  0472	!
;	  0473	! Format appropriate blocks for SOURCE and TARGET Links.
;	  0474	!
;	  0475	    LNKSTS [LSB_CONNECTED] = 0;
;	  0476	
;	  0477	    if .TYPE eql TARGET_LINK
;	  0478	    then
;	  0479		begin					! TARGET_LINK Open
;	  0480	!
;	  0481	! Construct GNDB from CONN_BLK information. The GNDB is used to
;	  0482	! match incoming connects in PROCESS_MAILBOX_ENTRY.
;	  0483	!
;	  0484		GNDB [GNDB_DEST_OBJECT] = .CONN_BLK [CB_OBJECT];
;	  0485		GNDB [GNDB_DEST_FORMAT] = 0;		!Format 0 Descriptor
;	  0486	
;	  0487		if .CONN_BLK [CB_DESCRIPTOR_LENGTH] GTR 0
;	  0488		then
;	  0489		    begin				!Format 1 Descriptor
;	  0490		    GNDB [GNDB_DEST_FORMAT] = 1;
;	  0491		    GNDB [GNDB_D1_LENGTH] = .CONN_BLK [CB_DESCRIPTOR_LENGTH];
;	  0492		    ch$move (.CONN_BLK [CB_DESCRIPTOR_LENGTH], .CONN_BLK [CB_DESCRIPTOR],
;	  0493			ch$ptr (GNDB [GNDB_D1_TASK_NAME]));
;	  0494		    end;
;	  0495	
;	  0496	!
;	  0497	! Flag we are waiting for a connect and that we are a server.
;	  0498	! We then wait for the incoming connect to happen.
;	  0499	!
;	  0500		LNKSTS [LSB_SERVER] = 1;
;	  0501		LNKSTS [LSB_CIWAIT] = 1;
;	  0502		LNKSTS [LSB_CCWAIT] = 0;
;	  0503		end
;	  0504	    else
;	  0505		begin					! SOURCE Open
;	  0506		ch$copy (minu (ch$rchar (ch$plus (.CONN_BLK [CB_HOST], 2)), 6), ch$plus (.CONN_BLK [CB_HOST], 3),
;	  0507		    %C' ', 6, ch$ptr (CONB [CONB_NODE_NAME]));
;	  0508		if (ch$rchar (ch$plus (.CONN_BLK [CB_HOST], 2)) eql 0)
;	  0509		then					! If no node name,
;	  0510		    begin				!  use node number as name
;	  0511	            linkage CBDSG = JSR (register=0,register=1,register=2;
;	  0512	                                 register=0) : nopreserve (1,2);
;	  0513	            external routine $CBDSG : CBDSG novalue;
;	  0514		    local TEMP_PTR;
;	  0515	
;	  0516		    TEMP_PTR = .CONN_BLK [CB_HOST];	! Pointer to node number
;	  0517	            $CBDSG (CONB [CONB_NODE_NAME],	! ASCII output to here
;	  0518			    GETW(TEMP_PTR),		! Value to convert
;	  0519	                    0;				! Zero suppress
;	  0520			    TEMP_PTR);			! For updated pointer
;	  0521	            end;
;	  0522		CONB [CONB_FORMAT] = 0;
;	  0523		CONB [CONB_OBJECT] = .CONN_BLK [CB_OBJECT];
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  18
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

;	  0524	
;	  0525		if .CONN_BLK [CB_DESCRIPTOR_LENGTH] gtr 0
;	  0526		then
;	  0527		    begin				!Descriptor Format 1
;	  0528		    CONB [CONB_FORMAT] = 1;
;	  0529		    CONB [CONB_1_LENGTH] = .CONN_BLK [CB_DESCRIPTOR_LENGTH];
;	  0530		    ch$move (.CONB [CONB_1_LENGTH], .CONN_BLK [CB_DESCRIPTOR], ch$ptr (CONB [CONB_1_TASK_NAME]));
;	  0531		    end;
;	  0532	
;	  0533		CONB [CONB_USER_LENGTH] = .CONN_BLK [CB_USERID_LENGTH];
;	  0534		ch$move (.CONB [CONB_USER_LENGTH], .CONN_BLK [CB_USERID], ch$ptr (CONB [CONB_USER_ID]));
;	  0535		CONB [CONB_PASSWORD_LENGTH] = .CONN_BLK [CB_PASSWORD_LENGTH];
;	  0536		ch$move (.CONB [CONB_PASSWORD_LENGTH], .CONN_BLK [CB_PASSWORD], ch$ptr (CONB [CONB_PASSWORD]));
;	  0537		CONB [CONB_ACCOUNT_LENGTH] = .CONN_BLK [CB_ACCOUNT_LENGTH];
;	  0538		ch$move (.CONB [CONB_ACCOUNT_LENGTH], .CONN_BLK [CB_ACCOUNT], ch$ptr (CONB [CONB_ACCOUNT]));
;	  0539	
;	  0540		if ASSIGN_A_LUN (.LINK_INFO) lss 0
;	  0541		then
;	  0542		    return $false
;	  0543		else
;	  0544		    begin
;	  0545		    LNKSTS [LSB_CCWAIT] = 1;
;	  0546		    LNKSTS [LSB_CIWAIT] = 0;
;	  0547		    LNKSTS [LSB_SERVER] = 0;
;	  0548		    TEMP_PTR = .CONN_BLK [CB_DATA];
;	  0549		    CONN_BLK [CB_DATA] = ch$ptr (CONN_BLK [CB_DATA_BUFFER]);
;	P 0550		    CON$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_LINK_SB], CON_AST,
;	P 0551			<LINK_INFO [LINK_CONB],
;	P 0552			    RSX$_CONB_ALLOCATION, (if .CONN_BLK [CB_DATA_LENGTH] eql 0 then 0 else .TEMP_PTR),
;	  0553			    .CONN_BLK [CB_DATA_LENGTH], .CONN_BLK [CB_DATA], 16>);
;	  0554		    end;
;	  0555	
;	  0556		end;
;	  0557	
;	  0558	!
;	  0559	! Wait for the link to become valid or an error is detected
;	  0560	!
;	  0561	    WAIT_FOR_NETWORK (LINK_INFO, (.LNKSTS [LSB_CIWAIT] or .LNKSTS [LSB_CCWAIT]));
;	  0562	!
;	  0563	! We have had some activity on the logical link which has removed us from
;	  0564	! waiting.
;	  0565	!
;	  0566	    begin
;	  0567	
;	  0568	    bind
;	  0569		NETSTS = LINK_INFO [LINK_LINK_SB] : $NETWORK_STATUS_BLOCK;
;	  0570	
;	  0571	    if .NETSTS [NETSB$ERR] eql IS$SUC
;	  0572	    then
;	  0573		begin
;	  0574		CONN_BLK [CB_DATA_LENGTH] = .NETSTS [NETSB$CNT]; !SOURCE_LINK
;	  0575		if .LINK_INFO [LINK_TYPE] eql TARGET_LINK
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  19
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

;	  0576		then
;	  0577		    begin				!TARGET_LINK Processing
;	  0578	
;	  0579		    bind
;	  0580			LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK,
;	  0581			GNDB = LINK_INFO [LINK_GNDB] : RSX$_GNDB_BLOCK;
;	  0582	
;	  0583		    local
;	  0584			TEMP_PTR,
;	  0585			TEMP_PTR1,
;	  0586			TEMP_LEN;
;	  0587	
;	  0588		    LNKSTS [LSB_CCWAIT] = 1;
;	  0589		    CONN_BLK [CB_HOST] = ch$ptr (CONN_BLK [CB_HOST_BUFFER]);
;	  0590		    TEMP_PTR1 = .CONN_BLK [CB_HOST];
;	  0591		    PUTB (0, TEMP_PTR1);
;	  0592		    PUTB (0, TEMP_PTR1);
;	  0593		    TEMP_PTR = ch$find_ch (6, ch$ptr (GNDB [GNDB_SOURCE_NODE_NAME]), %c' ');
;	  0594		    TEMP_LEN = (if ch$fail (.TEMP_PTR) then 6 else ch$diff (.TEMP_PTR,
;	  0595			    ch$ptr (GNDB [GNDB_SOURCE_NODE_NAME])));
;	  0596		    CONN_BLK [CB_HOST_LENGTH] = minu (.TEMP_LEN, 6) + 3;
;	  0597		    PUTB (.TEMP_LEN, TEMP_PTR1);
;	  0598		    ch$copy (minu (.TEMP_LEN, 6), ch$ptr (GNDB [GNDB_SOURCE_NODE_NAME]), 0, 6, .TEMP_PTR1);
;	  0599		    CONN_BLK [CB_TASK] = ch$ptr (CONN_BLK [CB_TASK_BUFFER]);
;	  0600	
;	  0601		    case .GNDB [GNDB_SOURCE_FORMAT] from 0 to 2 of
;	  0602			set
;	  0603	
;	  0604			[0] : 				!Format 0 Descriptor
;	  0605			    begin
;	  0606			    CONN_BLK [CB_TASK_LENGTH] = 0;
;	  0607			    end;
;	  0608	
;	  0609			[1] : 				!Format 1 Descriptor
;	  0610			    begin
;	  0611			    CONN_BLK [CB_TASK_LENGTH] = .GNDB [GNDB_S1_LENGTH];
;	  0612			    ch$copy (minu (.GNDB [GNDB_S1_LENGTH], 16), ch$ptr (GNDB [GNDB_S1_TASK_NAME]), 0, 17,
;	  0613				.CONN_BLK [CB_TASK]);
;	  0614			    end;
;	  0615	
;	  0616			[2] : 				!Format 2 Descriptor
;	  0617			    begin
;	  0618			    CONN_BLK [CB_TASK_LENGTH] = .GNDB [GNDB_S2_LENGTH];
;	  0619			    ch$copy (minu (.GNDB [GNDB_S2_LENGTH], 16), ch$ptr (GNDB [GNDB_S2_TASK_NAME]), 0, 17,
;	  0620				.CONN_BLK [CB_TASK]);
;	  0621			    end;
;	  0622			tes;
;	  0623	
;	  0624		    CONN_BLK [CB_USERID] = ch$ptr (CONN_BLK [CB_USERID_BUFFER]);
;	  0625		    CONN_BLK [CB_USERID_LENGTH] = .GNDB [GNDB_SOURCE_TASK_LENGTH];
;	  0626		    ch$copy (minu (.GNDB [GNDB_SOURCE_TASK_LENGTH], 16), ch$ptr (GNDB [GNDB_SOURCE_TASK_ID]), 0, 17,
;	  0627			.CONN_BLK [CB_USERID]);
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  20
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

;	  0628		    CONN_BLK [CB_PASSWORD] = ch$ptr (CONN_BLK [CB_PASSWORD_BUFFER]);
;	  0629		    CONN_BLK [CB_PASSWORD_LENGTH] = .GNDB [GNDB_SOURCE_PASSWORD_LENGTH];
;	  0630		    ch$copy (minu (.GNDB [GNDB_SOURCE_PASSWORD_LENGTH], 8), ch$ptr (GNDB [GNDB_SOURCE_PASSWORD]), 0,
;	  0631			9, .CONN_BLK [CB_PASSWORD]);
;	  0632		    CONN_BLK [CB_ACCOUNT] = ch$ptr (CONN_BLK [CB_ACCOUNT_BUFFER]);
;	  0633		    CONN_BLK [CB_ACCOUNT_LENGTH] = .GNDB [GNDB_SOURCE_ACCOUNT_LENGTH];
;	  0634		    ch$copy (minu (.GNDB [GNDB_SOURCE_ACCOUNT_LENGTH], 16), ch$ptr (GNDB [GNDB_SOURCE_ACCOUNT]), 0,
;	  0635			17, .CONN_BLK [CB_ACCOUNT]);
;	  0636		    CONN_BLK [CB_DATA] = ch$ptr (CONN_BLK [CB_DATA_BUFFER]);
;	  0637		    CONN_BLK [CB_DATA_LENGTH] = .GNDB [GNDB_OPTIONAL_LENGTH];
;	  0638		    ch$copy (minu (.GNDB [GNDB_OPTIONAL_LENGTH], 16), ch$ptr (GNDB [GNDB_OPTIONAL_DATA]), 0, 17,
;	  0639			.CONN_BLK [CB_DATA]);
;	  0640		    end;
;	  0641	
;	  0642		.LINK_INFO [LINK_ID]
;	  0643		end
;	  0644	    else
;	  0645		begin					!Link Connect Unsuccessful
;	  0646	!
;	  0647	! Source links can still return optional data so ensure count is correct.
;	  0648	!
;	  0649	
;	  0650		CONN_BLK [CB_REJECT_CODE] = 0;
;	  0651		if .LINK_INFO [LINK_TYPE] eql SOURCE_LINK
;	  0652		then
;	  0653		    begin
;	  0654		    CONN_BLK [CB_DATA_LENGTH] = .NETSTS [NETSB$CNT];
;	  0655		    if .NETSTS [NETSB$ERR] eql IE$NRJ
;	  0656		    then
;	  0657			begin
;	  0658			CONN_BLK [CB_REJECT_CODE] = .NETSTS [NETSB$CNT];
;	  0659			CONN_BLK [CB_DATA_LENGTH] = 0;
;	  0660			end
;	  0661		    end;
;	  0662	
;	  0663	!
;	  0664	!	Build a response message
;	  0665	!
;	  0666	
;	  0667		if .RESPONSE_PTR neq 0
;	  0668		then
;	P 0669		    .RESPONSE_LEN = $RESPONSE (.RESPONSE_PTR, .RESPONSE_CODE,
;	P 0670			(selectone .NETSTS [NETSB$ERR] of  ! Error detail
;	P 0671			     set
;	P 0672			     [IE$ABO]:	15;	! Abort by management
;	P 0673			     [IE$URJ]:	5;	! Rejected by object
;	P 0674			     [IE$BAD]:	8;	! Access Control Rejected
;	P 0675			     [IE$SPC,
;	P 0676			      IE$RSU]:	4;	! Network resources
;	P 0677			     [IE$NNT]:	3;	! Node unreachable
;	P 0678			     [IS$DAO]:	9;	! Object too busy
;	P 0679			     [IE$NRJ]:	.FAIL_TYPE [.CONN_BLK[CB_REJECT_CODE]];
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  21
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

;	P 0680			     [otherwise]: 10;	! No response from object
;	  0681			     tes));
;	  0682	
;	  0683	!
;	  0684	!	Return LINK_INFO Resources
;	  0685	!
;	  0686		NETWORK_LUNS [.LINK_INFO [LINK_LUN] - NMU$_NETWORK_LUN] = 0;
;	  0687		NMU$QUEUE_EXTRACT (INFO_QUEUE, .LINK_INFO);
;	  0688		NMU$MEMORY_RELEASE (.LINK_INFO, LINK_INFO_BLOCK_ALLOCATION);
;	  0689		-1
;	  0690		end
;	  0691	
;	  0692	    end
;	  0693	    end
;	  0694	    end;					! End of NMU$NETWORK_OPEN


						.GLOBL	$CBDSG


						.SBTTL	UN.OPEN
000000	004167  000000G			UN.OPEN::
						JSR	R1,$SAVE5			;					0352
000004	162706  000022 				SUB	#22,SP
000010	012746  000236 				MOV	#236,-(SP)			;					0445
000014	004767  000000G				JSR	PC,UM.GET
000020	010066  000010 				MOV	R0,10(SP)			; *,LINK.INFO
000024	012700  000006 				MOV	#6,R0				;					0446
000030	066600  000010 				ADD	10(SP),R0			; LINK.INFO,*
000034	010066  000020 				MOV	R0,20(SP)
000040	016700  000012'				MOV	NEXT.LINK.ID,R0
000044	005200 					INC	R0
000046	010067  000012'				MOV	R0,NEXT.LINK.ID
000052	010076  000020 				MOV	R0,@20(SP)
000056	002003 					BGE	1$				;					0448
000060	012767  000001  000012'			MOV	#1,NEXT.LINK.ID
000066	016666  000010  000016 		1$:	MOV	10(SP),16(SP)			; LINK.INFO,*				0450
000074	062766  000036  000016 			ADD	#36,16(SP)
000102	016616  000016 				MOV	16(SP),(SP)
000106	012746  000001 				MOV	#1,-(SP)
000112	004767  000000G				JSR	PC,US.EVENT
000116	012700  000044 				MOV	#44,R0				;					0451
000122	066600  000012 				ADD	12(SP),R0			; LINK.INFO,*
000126	010066  000016 				MOV	R0,16(SP)
000132	016610  000054 				MOV	54(SP),(R0)			; TYPE,*
000136	012716  000014'				MOV	#INFO.QUEUE,(SP)		;					0455
000142	016646  000012 				MOV	12(SP),-(SP)			; LINK.INFO,*
000146	004767  000000G				JSR	PC,UQ.INSERT
000152	012700  000050 				MOV	#50,R0				;					0459
000156	066600  000014 				ADD	14(SP),R0			; LINK.INFO,*
000162	010066  000016 				MOV	R0,16(SP)
000166	012700  000104 				MOV	#104,R0				;					0460
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  22
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

000172	066600  000014 				ADD	14(SP),R0			; LINK.INFO,*
000176	010005 					MOV	R0,R5
000200	012700  000054 				MOV	#54,R0				;					0461
000204	066600  000014 				ADD	14(SP),R0			; LINK.INFO,*
000210	010066  000012 				MOV	R0,12(SP)
000214	012700  000014 				MOV	#14,R0				;					0462
000220	066600  000014 				ADD	14(SP),R0			; LINK.INFO,*
000224	010004 					MOV	R0,R4
000226	017664  000024  000004 			MOV	@24(SP),4(R4)			;					0469
000234	016600  000014 				MOV	14(SP),R0			; LINK.INFO,*				0470
000240	016460  000004  000026 			MOV	4(R4),26(R0)			; *,*(LINK.INFO)
000246	016460  000004  000034 			MOV	4(R4),34(R0)			; *,*(LINK.INFO)			0471
000254	042776  000400  000016 			BIC	#400,@16(SP)			;					0475
000262	016666  000054  000010 			MOV	54(SP),10(SP)			; CONN.BLK,*				0484
000270	012700  000034 				MOV	#34,R0				;					0487
000274	066600  000010 				ADD	10(SP),R0
000300	010066  000006 				MOV	R0,6(SP)
000304	026627  000056  000001 			CMP	56(SP),#1			; TYPE,*				0477
000312	001056 					BNE	3$
000314	012701  000004 				MOV	#4,R1				;					0484
000320	066601  000012 				ADD	12(SP),R1
000324	010100 					MOV	R1,R0
000326	016601  000010 				MOV	10(SP),R1
000332	116160  000004  000001 			MOVB	4(R1),1(R0)
000340	105010 					CLRB	(R0)				;					0485
000342	005776  000006 				TST	@6(SP)				;					0487
000346	003423 					BLE	2$
000350	112710  000001 				MOVB	#1,(R0)				;					0490
000354	016600  000012 				MOV	12(SP),R0			;					0491
000360	017660  000006  000006 			MOV	@6(SP),6(R0)
000366	016016  000006 				MOV	6(R0),(SP)			;					0493
000372	010100 					MOV	R1,R0
000374	016046  000032 				MOV	32(R0),-(SP)
000400	016646  000014 				MOV	14(SP),-(SP)
000404	062716  000010 				ADD	#10,(SP)
000410	004767  000000G				JSR	PC,BL$MOV
000414	022626 					CMP	(SP)+,(SP)+			;					0489
000416	152776  000200  000016 		2$:	BISB	#200,@16(SP)			;					0500
000424	152776  000100  000016 			BISB	#100,@16(SP)			;					0501
000432	142776  000040  000016 			BICB	#40,@16(SP)			;					0502
000440	062706  000006 				ADD	#6,SP				;					0479
000444	000167  000524 				JMP	10$				;					0477
000450	017601  000010 			3$:	MOV	@10(SP),R1			;					0506
000454	005016 					CLR	(SP)
000456	116116  000002 				MOVB	2(R1),(SP)
000462	021627  000006 				CMP	(SP),#6
000466	101402 					BLOS	4$
000470	012716  000006 				MOV	#6,(SP)
000474	017646  000010 			4$:	MOV	@10(SP),-(SP)
000500	062716  000003 				ADD	#3,(SP)
000504	012746  000040 				MOV	#40,-(SP)			;					0507
000510	012746  000006 				MOV	#6,-(SP)
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  23
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

000514	010546 					MOV	R5,-(SP)
000516	012746  177773 				MOV	#-5,-(SP)
000522	004767  000000G				JSR	PC,BL$CPY
000526	105761  000002 				TSTB	2(R1)				;					0508
000532	001015 					BNE	5$
000534	017603  000022 				MOV	@22(SP),R3			; *,TEMP.PTR				0516
000540	112366  000040 				MOVB	(R3)+,40(SP)			; TEMP.PTR,$$GETB.X			0518
000544	112366  000041 				MOVB	(R3)+,41(SP)			; TEMP.PTR,$$GETB.X
000550	016601  000040 				MOV	40(SP),R1			; $$GETB.X,*
000554	010500 					MOV	R5,R0				;					0517
000556	005002 					CLR	R2
000560	004767  000000G				JSR	PC,$CBDSG
000564	010003 					MOV	R0,R3
000566	012700  000006 			5$:	MOV	#6,R0				;					0522
000572	060500 					ADD	R5,R0
000574	105010 					CLRB	(R0)
000576	016601  000022 				MOV	22(SP),R1			;					0523
000602	116160  000004  000001 			MOVB	4(R1),1(R0)
000610	005776  000020 				TST	@20(SP)				;					0525
000614	003420 					BLE	6$
000616	112710  000001 				MOVB	#1,(R0)				;					0528
000622	017665  000020  000010 			MOV	@20(SP),10(R5)			;					0529
000630	016516  000010 				MOV	10(R5),(SP)			;					0530
000634	010100 					MOV	R1,R0
000636	016046  000032 				MOV	32(R0),-(SP)
000642	010546 					MOV	R5,-(SP)
000644	062716  000012 				ADD	#12,(SP)
000650	004767  000000G				JSR	PC,BL$MOV
000654	022626 					CMP	(SP)+,(SP)+			;					0527
000656	016600  000022 			6$:	MOV	22(SP),R0			;					0533
000662	016065  000014  000032 			MOV	14(R0),32(R5)
000670	016516  000032 				MOV	32(R5),(SP)			;					0534
000674	016046  000012 				MOV	12(R0),-(SP)
000700	010546 					MOV	R5,-(SP)
000702	062716  000034 				ADD	#34,(SP)
000706	004767  000000G				JSR	PC,BL$MOV
000712	016600  000026 				MOV	26(SP),R0			;					0535
000716	016065  000030  000054 			MOV	30(R0),54(R5)
000724	016516  000054 				MOV	54(R5),(SP)			;					0536
000730	016046  000026 				MOV	26(R0),-(SP)
000734	010546 					MOV	R5,-(SP)
000736	062716  000056 				ADD	#56,(SP)
000742	004767  000000G				JSR	PC,BL$MOV
000746	016600  000032 				MOV	32(SP),R0			;					0537
000752	016065  000024  000066 			MOV	24(R0),66(R5)
000760	016516  000066 				MOV	66(R5),(SP)			;					0538
000764	016046  000022 				MOV	22(R0),-(SP)
000770	010546 					MOV	R5,-(SP)
000772	062716  000070 				ADD	#70,(SP)
000776	004767  000000G				JSR	PC,BL$MOV
001002	016616  000042 				MOV	42(SP),(SP)			; LINK.INFO,*				0540
001006	004767  000000V				JSR	PC,ASSIGN.A.LUN
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  24
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

001012	005700 					TST	R0
001014	002005 					BGE	7$
001016	062706  000034 				ADD	#34,SP				;					0542
001022	005000 					CLR	R0
001024	000167  001562 				JMP	39$
001030	152776  000040  000044 		7$:	BISB	#40,@44(SP)			;					0545
001036	142776  000100  000044 			BICB	#100,@44(SP)			;					0546
001044	142776  000200  000044 			BICB	#200,@44(SP)			;					0547
001052	012701  000016 				MOV	#16,R1				;					0548
001056	066601  000036 				ADD	36(SP),R1
001062	010100 					MOV	R1,R0
001064	011001 					MOV	(R0),R1				; *,TEMP.PTR
001066	012702  000204 				MOV	#204,R2				;					0549
001072	066602  000036 				ADD	36(SP),R2
001076	010210 					MOV	R2,(R0)
001100	012746  000020 				MOV	#20,-(SP)			;					0553
001104	010246 					MOV	R2,-(SP)
001106	016600  000042 				MOV	42(SP),R0
001112	016046  000020 				MOV	20(R0),-(SP)
001116	005716 					TST	(SP)
001120	001002 					BNE	8$
001122	005046 					CLR	-(SP)
001124	000401 					BR	9$
001126	010146 				8$:	MOV	R1,-(SP)			; TEMP.PTR,*
001130	012746  000110 			9$:	MOV	#110,-(SP)
001134	010546 					MOV	R5,-(SP)
001136	012746  000302'				MOV	#CON.AST,-(SP)
001142	010446 					MOV	R4,-(SP)
001144	005046 					CLR	-(SP)
001146	016600  000064 				MOV	64(SP),R0			; LINK.INFO,*
001152	016046  000010 				MOV	10(R0),-(SP)			; *(LINK.INFO),*
001156	012746  015400 				MOV	#15400,-(SP)
001162	012746  006001 				MOV	#6001,-(SP)
001166	104377 					EMT	377
001170	062706  000034 				ADD	#34,SP
001174	132776  000100  000010 		10$:	BITB	#100,@10(SP)			;					0561
001202	001004 					BNE	11$
001204	132776  000040  000010 			BITB	#40,@10(SP)
001212	001407 					BEQ	12$
001214	016646  000014 			11$:	MOV	14(SP),-(SP)
001220	005046 					CLR	-(SP)
001222	004767  000000G				JSR	PC,US.WAIT
001226	022626 					CMP	(SP)+,(SP)+
001230	000761 					BR	10$
001232	121427  000001 			12$:	CMPB	(R4),#1				;					0571
001236	001402 					BEQ	13$
001240	000167  001100 				JMP	30$
001244	016600  000002 			13$:	MOV	2(SP),R0			;					0574
001250	116460  000002  000020 			MOVB	2(R4),20(R0)
001256	105060  000021 				CLRB	21(R0)
001262	027627  000012  000001 			CMP	@12(SP),#1			;					0575
001270	001402 					BEQ	14$
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  25
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

001272	000167  001040 				JMP	29$
001276	152776  000040  000010 		14$:	BISB	#40,@10(SP)			;					0588
001304	012700  000040 				MOV	#40,R0				;					0589
001310	066600  000002 				ADD	2(SP),R0
001314	010076  000002 				MOV	R0,@2(SP)
001320	010003 					MOV	R0,R3				; *,TEMP.PTR1				0590
001322	105023 					CLRB	(R3)+				; TEMP.PTR1				0591
001324	105023 					CLRB	(R3)+				; TEMP.PTR1				0592
001326	012746  000006 				MOV	#6,-(SP)			;					0593
001332	016602  000006 				MOV	6(SP),R2
001336	062702  000030 				ADD	#30,R2
001342	010246 					MOV	R2,-(SP)
001344	012746  000040 				MOV	#40,-(SP)
001350	004767  000000G				JSR	PC,BL$FCH
001354	005700 					TST	R0				; TEMP.PTR				0594
001356	001003 					BNE	15$
001360	012701  000006 				MOV	#6,R1				; *,TEMP.LEN
001364	000402 					BR	16$
001366	010001 				15$:	MOV	R0,R1				; TEMP.PTR,TEMP.LEN			0595
001370	160201 					SUB	R2,R1				; *,TEMP.LEN
001372	010100 				16$:	MOV	R1,R0				; TEMP.LEN,*				0596
001374	020027  000006 				CMP	R0,#6
001400	101402 					BLOS	17$
001402	012700  000006 				MOV	#6,R0
001406	016604  000010 			17$:	MOV	10(SP),R4
001412	010064  000002 				MOV	R0,2(R4)
001416	062764  000003  000002 			ADD	#3,2(R4)
001424	110123 					MOVB	R1,(R3)+			; TEMP.LEN,TEMP.PTR1			0597
001426	010016 					MOV	R0,(SP)				;					0598
001430	010246 					MOV	R2,-(SP)
001432	005046 					CLR	-(SP)
001434	012746  000006 				MOV	#6,-(SP)
001440	010346 					MOV	R3,-(SP)			; TEMP.PTR1,*
001442	012746  177773 				MOV	#-5,-(SP)
001446	004767  000000G				JSR	PC,BL$CPY
001452	012700  000006 				MOV	#6,R0				;					0599
001456	066600  000022 				ADD	22(SP),R0
001462	010001 					MOV	R0,R1
001464	012700  000052 				MOV	#52,R0
001470	066600  000022 				ADD	22(SP),R0
001474	010011 					MOV	R0,(R1)
001476	012702  000010 				MOV	#10,R2				;					0606
001502	066602  000022 				ADD	22(SP),R2
001506	010200 					MOV	R2,R0
001510	005002 					CLR	R2				;					0601
001512	016603  000024 				MOV	24(SP),R3
001516	156302  000036 				BISB	36(R3),R2
001522	006302 					ASL	R2
001524	066207  000260'				ADD	P.AAC(R2),PC			; Case dispatch
001530	005010 				18$:	CLR	(R0)				;					0606
001532	000453 					BR	24$				;					0601
001534	016602  000024 			19$:	MOV	24(SP),R2			;					0611
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  26
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

001540	016210  000040 				MOV	40(R2),(R0)
001544	010200 					MOV	R2,R0				;					0612
001546	016016  000040 				MOV	40(R0),(SP)
001552	021627  000020 				CMP	(SP),#20
001556	101402 					BLOS	20$
001560	012716  000020 				MOV	#20,(SP)
001564	016646  000024 			20$:	MOV	24(SP),-(SP)
001570	062716  000042 				ADD	#42,(SP)
001574	000420 					BR	23$				;					0613
001576	016602  000024 			21$:	MOV	24(SP),R2			;					0618
001602	016210  000044 				MOV	44(R2),(R0)
001606	010200 					MOV	R2,R0				;					0619
001610	016016  000044 				MOV	44(R0),(SP)
001614	021627  000020 				CMP	(SP),#20
001620	101402 					BLOS	22$
001622	012716  000020 				MOV	#20,(SP)
001626	016646  000024 			22$:	MOV	24(SP),-(SP)
001632	062716  000046 				ADD	#46,(SP)
001636	005046 				23$:	CLR	-(SP)				;					0620
001640	012746  000021 				MOV	#21,-(SP)
001644	011146 					MOV	(R1),-(SP)
001646	012746  177773 				MOV	#-5,-(SP)
001652	004767  000000G				JSR	PC,BL$CPY
001656	062706  000012 				ADD	#12,SP				;					0617
001662	012700  000074 			24$:	MOV	#74,R0				;					0624
001666	066600  000022 				ADD	22(SP),R0
001672	016601  000022 				MOV	22(SP),R1
001676	010061  000012 				MOV	R0,12(R1)
001702	010100 					MOV	R1,R0				;					0625
001704	016601  000024 				MOV	24(SP),R1
001710	016160  000062  000014 			MOV	62(R1),14(R0)
001716	010100 					MOV	R1,R0				;					0626
001720	016016  000062 				MOV	62(R0),(SP)
001724	021627  000020 				CMP	(SP),#20
001730	101402 					BLOS	25$
001732	012716  000020 				MOV	#20,(SP)
001736	016646  000024 			25$:	MOV	24(SP),-(SP)
001742	062716  000064 				ADD	#64,(SP)
001746	005046 					CLR	-(SP)				;					0627
001750	012746  000021 				MOV	#21,-(SP)
001754	016600  000030 				MOV	30(SP),R0
001760	016046  000012 				MOV	12(R0),-(SP)
001764	012746  177773 				MOV	#-5,-(SP)
001770	004767  000000G				JSR	PC,BL$CPY
001774	012700  000116 				MOV	#116,R0				;					0628
002000	066600  000034 				ADD	34(SP),R0
002004	016601  000034 				MOV	34(SP),R1
002010	010061  000026 				MOV	R0,26(R1)
002014	010100 					MOV	R1,R0				;					0629
002016	016601  000036 				MOV	36(SP),R1
002022	016160  000104  000030 			MOV	104(R1),30(R0)
002030	010100 					MOV	R1,R0				;					0630
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  27
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

002032	016016  000104 				MOV	104(R0),(SP)
002036	021627  000010 				CMP	(SP),#10
002042	101402 					BLOS	26$
002044	012716  000010 				MOV	#10,(SP)
002050	016646  000036 			26$:	MOV	36(SP),-(SP)
002054	062716  000106 				ADD	#106,(SP)
002060	005046 					CLR	-(SP)				;					0631
002062	012746  000011 				MOV	#11,-(SP)
002066	016600  000042 				MOV	42(SP),R0
002072	016046  000026 				MOV	26(R0),-(SP)
002076	012746  177773 				MOV	#-5,-(SP)
002102	004767  000000G				JSR	PC,BL$CPY
002106	012700  000140 				MOV	#140,R0				;					0632
002112	066600  000046 				ADD	46(SP),R0
002116	016601  000046 				MOV	46(SP),R1
002122	010061  000022 				MOV	R0,22(R1)
002126	010100 					MOV	R1,R0				;					0633
002130	016601  000050 				MOV	50(SP),R1
002134	016160  000116  000024 			MOV	116(R1),24(R0)
002142	010100 					MOV	R1,R0				;					0634
002144	016016  000116 				MOV	116(R0),(SP)
002150	021627  000020 				CMP	(SP),#20
002154	101402 					BLOS	27$
002156	012716  000020 				MOV	#20,(SP)
002162	016646  000050 			27$:	MOV	50(SP),-(SP)
002166	062716  000120 				ADD	#120,(SP)
002172	005046 					CLR	-(SP)				;					0635
002174	012746  000021 				MOV	#21,-(SP)
002200	016600  000054 				MOV	54(SP),R0
002204	016046  000022 				MOV	22(R0),-(SP)
002210	012746  177773 				MOV	#-5,-(SP)
002214	004767  000000G				JSR	PC,BL$CPY
002220	012700  000204 				MOV	#204,R0				;					0636
002224	066600  000060 				ADD	60(SP),R0
002230	016601  000060 				MOV	60(SP),R1
002234	010061  000016 				MOV	R0,16(R1)
002240	010100 					MOV	R1,R0				;					0637
002242	016601  000062 				MOV	62(SP),R1
002246	016160  000140  000020 			MOV	140(R1),20(R0)
002254	010100 					MOV	R1,R0				;					0638
002256	016016  000140 				MOV	140(R0),(SP)
002262	021627  000020 				CMP	(SP),#20
002266	101402 					BLOS	28$
002270	012716  000020 				MOV	#20,(SP)
002274	016646  000062 			28$:	MOV	62(SP),-(SP)
002300	062716  000142 				ADD	#142,(SP)
002304	005046 					CLR	-(SP)				;					0639
002306	012746  000021 				MOV	#21,-(SP)
002312	016600  000066 				MOV	66(SP),R0
002316	016046  000016 				MOV	16(R0),-(SP)
002322	012746  177773 				MOV	#-5,-(SP)
002326	004767  000000G				JSR	PC,BL$CPY
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  28
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

002332	062706  000070 				ADD	#70,SP				;					0577
002336	017600  000016 			29$:	MOV	@16(SP),R0			;					0571
002342	000523 					BR	39$
002344	012701  000036 			30$:	MOV	#36,R1				;					0650
002350	066601  000002 				ADD	2(SP),R1
002354	010100 					MOV	R1,R0
002356	005010 					CLR	(R0)
002360	027627  000012  000002 			CMP	@12(SP),#2			;					0651
002366	001007 					BNE	31$
002370	016601  000002 				MOV	2(SP),R1			;					0654
002374	116461  000002  000020 			MOVB	2(R4),20(R1)
002402	105061  000021 				CLRB	21(R1)
002406	016601  000044 			31$:	MOV	44(SP),R1			; RESPONSE.PTR,*			0667
002412	001451 					BEQ	38$
002414	010102 					MOV	R1,R2				; *,STRPTR				0681
002416	116622  000040 				MOVB	40(SP),(R2)+			; RESPONSE.CODE,STRPTR
002422	121427  177761 				CMPB	(R4),#-17
002426	001003 					BNE	32$
002430	012700  000017 				MOV	#17,R0				; *,DETAIL
002434	000427 					BR	37$
002436	121427  177777 			32$:	CMPB	(R4),#-1
002442	001003 					BNE	33$
002444	012700  000010 				MOV	#10,R0				; *,DETAIL
002450	000421 					BR	37$
002452	121427  177757 			33$:	CMPB	(R4),#-21
002456	001403 					BEQ	34$
002460	121427  177772 				CMPB	(R4),#-6
002464	001003 					BNE	35$
002466	012700  000004 			34$:	MOV	#4,R0				; *,DETAIL
002472	000410 					BR	37$
002474	121427  000002 			35$:	CMPB	(R4),#2
002500	001003 					BNE	36$
002502	012700  000011 				MOV	#11,R0				; *,DETAIL
002506	000402 					BR	37$
002510	012700  000012 			36$:	MOV	#12,R0				; *,DETAIL
002514	110022 				37$:	MOVB	R0,(R2)+			; DETAIL,STRPTR
002516	010003 					MOV	R0,R3				; DETAIL,*
002520	000303 					SWAB	R3
002522	110322 					MOVB	R3,(R2)+			; *,STRPTR
002524	105022 					CLRB	(R2)+				; STRPTR
002526	010276  000042 				MOV	R2,@42(SP)			; STRPTR,RESPONSE.LEN
002532	160176  000042 				SUB	R1,@42(SP)			; *,RESPONSE.LEN
002536	016601  000006 			38$:	MOV	6(SP),R1			; LINK.INFO,*				0686
002542	016100  000010 				MOV	10(R1),R0			; *(LINK.INFO),*
002546	006300 					ASL	R0
002550	005060  000010'				CLR	NETWORK.LUNS-12(R0)
002554	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					0687
002560	010146 					MOV	R1,-(SP)			; LINK.INFO,*
002562	004767  000000G				JSR	PC,UQ.EXTRACT
002566	016616  000012 				MOV	12(SP),(SP)			; LINK.INFO,*				0688
002572	012746  000236 				MOV	#236,-(SP)
002576	004767  000000G				JSR	PC,UM.RELEASE
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  29
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (4)

002602	062706  000006 				ADD	#6,SP				;					0645
002606	012700  177777 				MOV	#-1,R0				;					0571
002612	062706  000022 			39$:	ADD	#22,SP				;					0352
002616	000207 					RTS	PC
; Routine Size:  712 words,	Routine Base:  $CODE$ + 0416
; Maximum stack depth per invocation:  44 words


000260						.PSECT	$PLIT$,  RO ,  D  

					P.AAC:						; CASE Table for UN.OPEN+1524		0601
000260	000000 					.WORD	0				; [18$]
000262	000004 					.WORD	4				; [19$]
000264	000046 					.WORD	46				; [21$]



;	  0695	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  30
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (5)

;	  0696	global routine %unquote NMU$NETWORK_ACCEPT (LINK_IDENTIFIER, DATA_LEN, DATA_PTR) =
;	  0697	
;	  0698	!++
;	  0699	! Functional description:
;	  0700	!
;	  0701	!	This routine accepts the connection to a TARGET link
;	  0702	!	end.  The link was initially opened by a call to the
;	  0703	!	NMU$NETWORK_TARGET routine.
;	  0704	!
;	  0705	! Formal parameters: none
;	  0706	!
;	  0707	!	.LINK_IDENTIFIER    Link id for the target link end.
;	  0708	!	.DATA_LEN	    Length of optional accept data
;	  0709	!	.DATA_PTR	    Pointer to optional accept data
;	  0710	!
;	  0711	! Routine value:
;	  0712	!
;	  0713	!	$true - Accept Done
;	  0714	!	$false - Accept Not Done
;	  0715	!
;	  0716	! Side effects: none
;	  0717	!
;	  0718	!--
;	  0719	
;	  0720	    begin
;	  0721	
;	  0722	    local
;	  0723		LINK_INFO : ref LINK_INFO_BLOCK;
;	  0724	
;	  0725	!
;	  0726	! Routine to process ACC$ ASTs
;	  0727	!
;	  0728	    routine ACC_AST NETWORK_INTERRUPT_ROUTINE =
;	  0729		begin
;	  0730	
;	  0731		map
;	  0732		    NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
;	  0733	
;	  0734		local
;	  0735		    LINK_INFO : ref LINK_INFO_BLOCK;
;	  0736	
;	  0737	!
;	  0738	! Find our LINK_INFO block
;	  0739	!
;	  0740	
;	  0741		if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
;	  0742		then
;	  0743	!
;	  0744	! Update status to reflect connect complete
;	  0745	!
;	  0746		    begin
;	  0747	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  31
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (5)

;	  0748		    bind
;	  0749			LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  0750	
;	  0751		    if .NETWORK_STATUS_BLOCK [NETSB$ERR] eql IS$SUC
;	  0752		    then
;	  0753			begin
;	  0754			LNKSTS [LSB_CONNECTED] = 1;
;	  0755			LNKSTS [LSB_CLOSED] = 0;
;	  0756			end;
;	  0757	
;	  0758		    LNKSTS [LSB_CCWAIT] = 0;
;	  0759	!
;	  0760	! Startup waiting process
;	  0761	!
;	  0762		    DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  0763		    end;
;	  0764	
;	  0765		end;					! of ACC_AST


						.SBTTL	ACC.AST
003236						.PSECT	$CODE$,  RO 

000000	010046 				ACC.AST:MOV	R0,-(SP)			;					0728
000002	010146 					MOV	R1,-(SP)
000004	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					0741
000010	016600  000006 				MOV	6(SP),R0			; NETWORK.STATUS.,*
000014	016046  000004 				MOV	4(R0),-(SP)
000020	012746  000000V				MOV	#IQ.SCAN,-(SP)
000024	004767  000000G				JSR	PC,UQ.SCAN
000030	062706  000006 				ADD	#6,SP
000034	005700 					TST	R0				; LINK.INFO
000036	001421 					BEQ	2$
000040	012701  000050 				MOV	#50,R1				;					0746
000044	060001 					ADD	R0,R1				; LINK.INFO,*
000046	127627  000004  000001 			CMPB	@4(SP),#1			; NETWORK.STATUS.,*			0751
000054	001004 					BNE	1$
000056	052711  000400 				BIS	#400,(R1)			;					0754
000062	142711  000004 				BICB	#4,(R1)				;					0755
000066	142711  000040 			1$:	BICB	#40,(R1)			;					0758
000072	010046 					MOV	R0,-(SP)			; LINK.INFO,*				0762
000074	004767  000000V				JSR	PC,DECLARE.NETWORK.EVENT
000100	005726 					TST	(SP)+				;					0746
000102	012601 				2$:	MOV	(SP)+,R1			;					0728
000104	012600 					MOV	(SP)+,R0

					;+
					;	RSX AST Service Routine Exit
					;-

000106	012716  000563 				MOV	#563,(SP)
000112	104377 					EMT	377
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  32
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (5)

; Routine Size:  38 words,	Routine Base:  $CODE$ + 3236
; Maximum stack depth per invocation:  6 words


;	  0766	!
;	  0767	! Main Accept Processing
;	  0768	!
;	  0769	
;	  0770	    if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
;	  0771		.LINK_INFO) neq 0
;	  0772	    then
;	  0773		begin
;	  0774	
;	  0775		bind
;	  0776		    LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK,
;	  0777		    NETSTS = LINK_INFO [LINK_LINK_SB] : $NETWORK_STATUS_BLOCK;
;	  0778	
;	P 0779		ACC$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_LINK_SB], ACC_AST,
;	P 0780		    <LINK_INFO [LINK_GNDB],
;	  0781			RSX$_GNDB_ALLOCATION, (if .DATA_LEN eql 0 then 0 else .DATA_PTR), .DATA_LEN>);
;	  0782		WAIT_FOR_NETWORK (LINK_INFO, (.LNKSTS [LSB_CCWAIT]));
;	  0783	
;	  0784		if (.LNKSTS [LSB_CONNECTED])
;	  0785		then
;	  0786		    $true
;	  0787		else
;	  0788		    begin
;	  0789	
;	  0790		    if .NETSTS [NETSB$ERR] neq IS$SUC then NMU$NETWORK_REJECT (.LINK_IDENTIFIER, 0, 0);
;	  0791	
;	  0792		    $false
;	  0793		    end
;	  0794	
;	  0795		end
;	  0796	    else
;	  0797		$false
;	  0798	!
;	  0799	    end;					! End of NMU$NETWORK_ACCEPT


						.GLOBL	INTNST


						.SBTTL	UN.ACCEPT
000000	004167  000000G			UN.ACCEPT::
						JSR	R1,$SAVE2			;					0696
000004	012746  000543 				MOV	#543,-(SP)			;					0770
000010	104377 					EMT	377
000012	005267  000000G				INC	INTNST
000016	012746  000014'				MOV	#INFO.QUEUE,-(SP)
000022	016646  000016 				MOV	16(SP),-(SP)			; LINK.IDENTIFIER,*
000026	012746  000000V				MOV	#IQ.SCAN,-(SP)
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  33
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (5)

000032	004767  000000G				JSR	PC,UQ.SCAN
000036	022626 					CMP	(SP)+,(SP)+
000040	010001 					MOV	R0,R1				; *,LINK.INFO
000042	012716  000543 				MOV	#543,(SP)
000046	104377 					EMT	377
000050	005367  000000G				DEC	INTNST
000054	000243 					.WORD CLV!CLC
							
000056	003005 					BGT	1$
000060	005067  000000G				CLR	INTNST
000064	012746  000545 				MOV	#545,-(SP)
000070	104377 					EMT	377
000072	005701 				1$:	TST	R1				; LINK.INFO				0771
000074	001474 					BEQ	7$
000076	005046 					CLR	-(SP)				;					0781
000100	005046 					CLR	-(SP)
000102	016646  000016 				MOV	16(SP),-(SP)			; DATA.LEN,*
000106	005716 					TST	(SP)				; DATA.LEN
000110	001002 					BNE	2$
000112	005046 					CLR	-(SP)
000114	000402 					BR	3$
000116	016646  000016 			2$:	MOV	16(SP),-(SP)			; DATA.PTR,*
000122	012746  000162 			3$:	MOV	#162,-(SP)
000126	010146 					MOV	R1,-(SP)			; LINK.INFO,*
000130	062716  000054 				ADD	#54,(SP)
000134	012746  003236'				MOV	#ACC.AST,-(SP)
000140	012746  000014 				MOV	#14,-(SP)
000144	060116 					ADD	R1,(SP)				; LINK.INFO,*
000146	005046 					CLR	-(SP)
000150	016146  000010 				MOV	10(R1),-(SP)			; *(LINK.INFO),*
000154	012746  015410 				MOV	#15410,-(SP)
000160	012746  006001 				MOV	#6001,-(SP)
000164	104377 					EMT	377
000166	010102 					MOV	R1,R2				; LINK.INFO,*				0782
000170	062702  000036 				ADD	#36,R2
000174	132761  000040  000050 		4$:	BITB	#40,50(R1)			; *,*(LINK.INFO)
000202	001406 					BEQ	5$
000204	010246 					MOV	R2,-(SP)
000206	005046 					CLR	-(SP)
000210	004767  000000G				JSR	PC,US.WAIT
000214	022626 					CMP	(SP)+,(SP)+
000216	000766 					BR	4$
000220	032761  000400  000050 		5$:	BIT	#400,50(R1)			; *,*(LINK.INFO)			0784
000226	001403 					BEQ	6$
000230	012700  000001 				MOV	#1,R0
000234	000207 					RTS	PC
000236	126127  000014  000001 		6$:	CMPB	14(R1),#1			; *(LINK.INFO),*			0790
000244	001410 					BEQ	7$
000246	016646  000014 				MOV	14(SP),-(SP)			; LINK.IDENTIFIER,*
000252	005046 					CLR	-(SP)
000254	005046 					CLR	-(SP)
000256	004767  000000V				JSR	PC,UN.REJECT
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  34
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (5)

000262	062706  000006 				ADD	#6,SP
000266	005000 				7$:	CLR	R0				;					0770
000270	000207 					RTS	PC				;					0696
; Routine Size:  93 words,	Routine Base:  $CODE$ + 3352
; Maximum stack depth per invocation:  17 words


;	  0800	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  35
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (6)

;	  0801	global routine %unquote NMU$NETWORK_REJECT (LINK_IDENTIFIER, REASON, DATA_LEN, DATA_PTR) =
;	  0802	
;	  0803	!++
;	  0804	! Functional description:
;	  0805	!
;	  0806	!	This routine rejects the connection to a TARGET link
;	  0807	!	end.  The link was initially opened by a call to the
;	  0808	!	NMU$NETWORK_TARGET routine.
;	  0809	!
;	  0810	! Formal parameters: none
;	  0811	!
;	  0812	!	.LINK_IDENTIFIER    Link id for the target link end.
;	  0813	!	.REASON		    Reason code for rejection
;	  0814	!	.DATA_LEN	    Length of optional reject data
;	  0815	!	.DATA_PTR	    Pointer to optional reject data
;	  0816	!
;	  0817	! Routine value:
;	  0818	!
;	  0819	!	$true - Reject Done
;	  0820	!	$false - Reject Not Done
;	  0821	!
;	  0822	! Side effects: none
;	  0823	!
;	  0824	!--
;	  0825	
;	  0826	    begin
;	  0827	
;	  0828	    local
;	  0829		LINK_INFO : ref LINK_INFO_BLOCK;
;	  0830	
;	  0831	!
;	  0832	! Routine to process REJ$ ASTs
;	  0833	!
;	  0834	    routine REJ_AST NETWORK_INTERRUPT_ROUTINE =
;	  0835		begin
;	  0836	
;	  0837		map
;	  0838		    NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
;	  0839	
;	  0840		local
;	  0841		    LINK_INFO : ref LINK_INFO_BLOCK;
;	  0842	
;	  0843	!
;	  0844	! Find our LINK_INFO block
;	  0845	!
;	  0846	
;	  0847		if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
;	  0848		then
;	  0849	!
;	  0850	! Update status to reflect connect complete
;	  0851	!
;	  0852		    begin
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  36
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (6)

;	  0853	
;	  0854		    bind
;	  0855			LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  0856	
;	  0857		    LNKSTS [LSB_CLOSED] = 1;
;	  0858		    LNKSTS [LSB_CONNECTED] = 0;
;	  0859		    LNKSTS [LSB_CCWAIT] = 0;
;	  0860	!
;	  0861	! Startup waiting process
;	  0862	!
;	  0863		    DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  0864		    end;
;	  0865	
;	  0866		end;					! of REJ_AST


						.SBTTL	REJ.AST
000000	010046 				REJ.AST:MOV	R0,-(SP)			;					0834
000002	010146 					MOV	R1,-(SP)
000004	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					0847
000010	016600  000006 				MOV	6(SP),R0			; NETWORK.STATUS.,*
000014	016046  000004 				MOV	4(R0),-(SP)
000020	012746  000000V				MOV	#IQ.SCAN,-(SP)
000024	004767  000000G				JSR	PC,UQ.SCAN
000030	062706  000006 				ADD	#6,SP
000034	005700 					TST	R0				; LINK.INFO
000036	001413 					BEQ	1$
000040	012701  000050 				MOV	#50,R1				;					0852
000044	060001 					ADD	R0,R1				; LINK.INFO,*
000046	152711  000004 				BISB	#4,(R1)				;					0857
000052	042711  000440 				BIC	#440,(R1)			;					0859
000056	010046 					MOV	R0,-(SP)			; LINK.INFO,*				0863
000060	004767  000000V				JSR	PC,DECLARE.NETWORK.EVENT
000064	005726 					TST	(SP)+				;					0852
000066	012601 				1$:	MOV	(SP)+,R1			;					0834
000070	012600 					MOV	(SP)+,R0

					;+
					;	RSX AST Service Routine Exit
					;-

000072	012716  000563 				MOV	#563,(SP)
000076	104377 					EMT	377
; Routine Size:  32 words,	Routine Base:  $CODE$ + 3644
; Maximum stack depth per invocation:  6 words


;	  0867	!
;	  0868	! Main Reject Processing
;	  0869	!
;	  0870	
;	  0871	    if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  37
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (6)

;	  0872		.LINK_INFO) neq 0
;	  0873	    then
;	  0874		begin
;	P 0875		REJ$S (NMU$_NETWORK_LUN,, LINK_INFO [LINK_LINK_SB], REJ_AST,
;	P 0876		    <LINK_INFO [LINK_GNDB],
;	  0877			RSX$_GNDB_ALLOCATION, (if .DATA_LEN eql 0 then 0 else .DATA_PTR), .DATA_LEN>);
;	  0878		WAIT_FOR_NETWORK (LINK_INFO, (.LNKSTS [LSB_CCWAIT]));
;	  0879		$true
;	  0880		end
;	  0881	    else
;	  0882		$false
;	  0883	!
;	  0884	    end;					! End of NMU$NETWORK_REJECT


						.SBTTL	UN.REJECT
000000	004167  000000G			UN.REJECT::
						JSR	R1,$SAVE2			;					0801
000004	012746  000543 				MOV	#543,-(SP)			;					0871
000010	104377 					EMT	377
000012	005267  000000G				INC	INTNST
000016	012746  000014'				MOV	#INFO.QUEUE,-(SP)
000022	016646  000020 				MOV	20(SP),-(SP)			; LINK.IDENTIFIER,*
000026	012746  000000V				MOV	#IQ.SCAN,-(SP)
000032	004767  000000G				JSR	PC,UQ.SCAN
000036	022626 					CMP	(SP)+,(SP)+
000040	010001 					MOV	R0,R1				; *,LINK.INFO
000042	012716  000543 				MOV	#543,(SP)
000046	104377 					EMT	377
000050	005367  000000G				DEC	INTNST
000054	000243 					.WORD CLV!CLC
							
000056	003005 					BGT	1$
000060	005067  000000G				CLR	INTNST
000064	012746  000545 				MOV	#545,-(SP)
000070	104377 					EMT	377
000072	005701 				1$:	TST	R1				; LINK.INFO				0872
000074	001454 					BEQ	6$
000076	005046 					CLR	-(SP)				;					0877
000100	005046 					CLR	-(SP)
000102	016646  000016 				MOV	16(SP),-(SP)			; DATA.LEN,*
000106	005716 					TST	(SP)				; DATA.LEN
000110	001002 					BNE	2$
000112	005046 					CLR	-(SP)
000114	000402 					BR	3$
000116	016646  000016 			2$:	MOV	16(SP),-(SP)			; DATA.PTR,*
000122	012746  000162 			3$:	MOV	#162,-(SP)
000126	010146 					MOV	R1,-(SP)			; LINK.INFO,*
000130	062716  000054 				ADD	#54,(SP)
000134	012746  003644'				MOV	#REJ.AST,-(SP)
000140	010146 					MOV	R1,-(SP)			; LINK.INFO,*
000142	062716  000014 				ADD	#14,(SP)
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  38
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (6)

000146	005046 					CLR	-(SP)
000150	012746  000005 				MOV	#5,-(SP)
000154	012746  016020 				MOV	#16020,-(SP)
000160	012746  006001 				MOV	#6001,-(SP)
000164	104377 					EMT	377
000166	010102 					MOV	R1,R2				; LINK.INFO,*				0878
000170	062702  000036 				ADD	#36,R2
000174	132761  000040  000050 		4$:	BITB	#40,50(R1)			; *,*(LINK.INFO)
000202	001406 					BEQ	5$
000204	010246 					MOV	R2,-(SP)
000206	005046 					CLR	-(SP)
000210	004767  000000G				JSR	PC,US.WAIT
000214	022626 					CMP	(SP)+,(SP)+
000216	000766 					BR	4$
000220	012700  000001 			5$:	MOV	#1,R0				;					0871
000224	000207 					RTS	PC
000226	005000 				6$:	CLR	R0
000230	000207 					RTS	PC				;					0801
; Routine Size:  77 words,	Routine Base:  $CODE$ + 3744
; Maximum stack depth per invocation:  17 words


;	  0885	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  39
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (7)

;	  0886	global routine %unquote NMU$NETWORK_READ (LINK_IDENTIFIER, BUFFER_SIZE, BUFFER) =
;	  0887	
;	  0888	!++
;	  0889	! Functional description:
;	  0890	!
;	  0891	!	This routine reads data from the specified logical link into
;	  0892	!	the supplied buffer.  This calls blocks until either data is
;	  0893	!	available or the link is disco<<nnected.
;	  0894	!
;	  0895	! Formal parameters:
;	  0896	!
;	  0897	!	.LINK_IDENTIFIER Link identifier.
;	  0898	!	.BUFFER		Address of buffer to read data into.
;	  0899	!	.BUFFER_SIZE	Number of 8 bit bytes available in buffer.
;	  0900	!
;	  0901	! Routine value:
;	  0902	!
;	  0903	!	Number of bytes read in (0 = link error)
;	  0904	!
;	  0905	! Side effects: none
;	  0906	!
;	  0907	!--
;	  0908	
;	  0909	    begin
;	  0910	
;	  0911	    local
;	  0912		LINK_INFO : ref LINK_INFO_BLOCK;
;	  0913	
;	  0914	!
;	  0915	! Interrupt Service Routine for Receives
;	  0916	!
;	  0917	    routine REC_AST NETWORK_INTERRUPT_ROUTINE =
;	  0918		begin
;	  0919	
;	  0920		map
;	  0921		    NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
;	  0922	
;	  0923		local
;	  0924		    LINK_INFO : ref LINK_INFO_BLOCK;
;	  0925	
;	  0926	!
;	  0927	! Find our LINK_INFO block
;	  0928	!
;	  0929	
;	  0930		if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
;	  0931		then
;	  0932	!
;	  0933	! Update status to reflect receive complete
;	  0934	!
;	  0935		    begin
;	  0936		    LINK_INFO [LINK_INPUT_IN_PROGRESS] = 0;
;	  0937	!
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  40
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (7)

;	  0938	! Startup waiting process
;	  0939	!
;	  0940		    DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  0941		    end;
;	  0942	
;	  0943		end;					! of REC_AST


						.SBTTL	REC.AST
000000	010046 				REC.AST:MOV	R0,-(SP)			;					0917
000002	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					0930
000006	016600  000004 				MOV	4(SP),R0			; NETWORK.STATUS.,*
000012	016046  000004 				MOV	4(R0),-(SP)
000016	012746  000000V				MOV	#IQ.SCAN,-(SP)
000022	004767  000000G				JSR	PC,UQ.SCAN
000026	062706  000006 				ADD	#6,SP
000032	005700 					TST	R0				; LINK.INFO
000034	001407 					BEQ	1$
000036	142760  000002  000046 			BICB	#2,46(R0)			; *,*(LINK.INFO)			0936
000044	010046 					MOV	R0,-(SP)			; LINK.INFO,*				0940
000046	004767  000000V				JSR	PC,DECLARE.NETWORK.EVENT
000052	005726 					TST	(SP)+				;					0935
000054	012600 				1$:	MOV	(SP)+,R0			;					0917

					;+
					;	RSX AST Service Routine Exit
					;-

000056	012716  000563 				MOV	#563,(SP)
000062	104377 					EMT	377
; Routine Size:  26 words,	Routine Base:  $CODE$ + 4176
; Maximum stack depth per invocation:  5 words


;	  0944	!
;	  0945	! Main Receive Processing
;	  0946	!
;	  0947	
;	  0948	    if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
;	  0949		.LINK_INFO) neq 0
;	  0950	    then
;	  0951		begin
;	  0952	
;	  0953		bind
;	  0954		    LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  0955	
;	  0956		if not .LNKSTS [LSB_CONNECTED]
;	  0957		then
;	  0958		    0
;	  0959		else
;	  0960		    begin
;	  0961		    LINK_INFO [LINK_INPUT_IN_PROGRESS] = 1;
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  41
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (7)

;	  0962		    REC$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_IN_SB], REC_AST, <.BUFFER, .BUFFER_SIZE>);
;	  0963	!
;	  0964	! Wait for data buffer to be received
;	  0965	!
;	  0966		    WAIT_FOR_NETWORK (LINK_INFO, (.LINK_INFO [LINK_INPUT_IN_PROGRESS]));
;	  0967	!
;	  0968	! Return Error Indication if any
;	  0969	!
;	  0970		    begin
;	  0971	
;	  0972		    bind
;	  0973			LNKIOSB = LINK_INFO [LINK_IN_SB] : $NETWORK_STATUS_BLOCK;
;	  0974	
;	  0975		    if .LNKIOSB [NETSB$ERR] neq IS$SUC then 0 else .LNKIOSB [NETSB$IO_COUNT]
;	  0976	
;	  0977		    end
;	  0978		    end
;	  0979	
;	  0980		end
;	  0981	    else
;	  0982		0
;	  0983	
;	  0984	    end;					! End of NMU$NETWORK_READ


						.SBTTL	UN.READ
000000	004167  000000G			UN.READ::
						JSR	R1,$SAVE3			;					0886
000004	012746  000543 				MOV	#543,-(SP)			;					0948
000010	104377 					EMT	377
000012	005267  000000G				INC	INTNST
000016	012746  000014'				MOV	#INFO.QUEUE,-(SP)
000022	016646  000020 				MOV	20(SP),-(SP)			; LINK.IDENTIFIER,*
000026	012746  000000V				MOV	#IQ.SCAN,-(SP)
000032	004767  000000G				JSR	PC,UQ.SCAN
000036	022626 					CMP	(SP)+,(SP)+
000040	010001 					MOV	R0,R1				; *,LINK.INFO
000042	012716  000543 				MOV	#543,(SP)
000046	104377 					EMT	377
000050	005367  000000G				DEC	INTNST
000054	000243 					.WORD CLV!CLC
							
000056	003005 					BGT	1$
000060	005067  000000G				CLR	INTNST
000064	012746  000545 				MOV	#545,-(SP)
000070	104377 					EMT	377
000072	005701 				1$:	TST	R1				; LINK.INFO				0949
000074	001460 					BEQ	4$
000076	032761  000400  000050 			BIT	#400,50(R1)			; *,*(LINK.INFO)			0956
000104	001454 					BEQ	4$
000106	152761  000002  000046 			BISB	#2,46(R1)			; *,*(LINK.INFO)			0961
000114	005046 					CLR	-(SP)				;					0962
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  42
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (7)

000116	005046 					CLR	-(SP)
000120	005046 					CLR	-(SP)
000122	005046 					CLR	-(SP)
000124	016646  000024 				MOV	24(SP),-(SP)			; BUFFER.SIZE,*
000130	016646  000024 				MOV	24(SP),-(SP)			; BUFFER,*
000134	012746  004176'				MOV	#REC.AST,-(SP)
000140	010103 					MOV	R1,R3				; LINK.INFO,*
000142	062703  000022 				ADD	#22,R3
000146	010346 					MOV	R3,-(SP)
000150	005046 					CLR	-(SP)
000152	016146  000010 				MOV	10(R1),-(SP)			; *(LINK.INFO),*
000156	012746  015000 				MOV	#15000,-(SP)
000162	012746  006001 				MOV	#6001,-(SP)
000166	104377 					EMT	377
000170	010102 					MOV	R1,R2				; LINK.INFO,*				0966
000172	062702  000036 				ADD	#36,R2
000176	132761  000002  000046 		2$:	BITB	#2,46(R1)			; *,*(LINK.INFO)
000204	001406 					BEQ	3$
000206	010246 					MOV	R2,-(SP)
000210	005046 					CLR	-(SP)
000212	004767  000000G				JSR	PC,US.WAIT
000216	022626 					CMP	(SP)+,(SP)+
000220	000766 					BR	2$
000222	121327  000001 			3$:	CMPB	(R3),#1				;					0975
000226	001003 					BNE	4$
000230	016300  000002 				MOV	2(R3),R0
000234	000207 					RTS	PC				;					0948
000236	005000 				4$:	CLR	R0
000240	000207 					RTS	PC				;					0886
; Routine Size:  81 words,	Routine Base:  $CODE$ + 4262
; Maximum stack depth per invocation:  18 words


;	  0985	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  43
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (8)

;	  0986	global routine %unquote NMU$NETWORK_WRITE (LINK_IDENTIFIER, EOM_FLAG, BUFFER_SIZE, BUFFER) =
;	  0987	
;	  0988	!++
;	  0989	! Functional description:
;	  0990	!
;	  0991	!	This routine writes data to the specified logical link from
;	  0992	!	the supplied buffer.
;	  0993	!
;	  0994	! Formal parameters:
;	  0995	!
;	  0996	!	.LINK_IDENTIFIER Link identifier.
;	  0997	!	.EOM_FLAG	Flag to indicate end of message.
;	  0998	!	.BUFFER		Address of buffer to write data from.
;	  0999	!	.BUFFER_SIZE	Number of 8 bit bytes of data in buffer.
;	  1000	!
;	  1001	! Routine value:
;	  1002	!
;	  1003	!	$true	Write succeeded
;	  1004	!	$false	Write failed, link disconnected.
;	  1005	!
;	  1006	! Side effects: none
;	  1007	!
;	  1008	!--
;	  1009	
;	  1010	    begin
;	  1011	
;	  1012	    local
;	  1013		LINK_INFO : ref LINK_INFO_BLOCK;
;	  1014	
;	  1015	!
;	  1016	! Interrupt Service Routine for Transmits
;	  1017	!
;	  1018	    routine SND_AST NETWORK_INTERRUPT_ROUTINE =
;	  1019		begin
;	  1020	
;	  1021		map
;	  1022		    NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
;	  1023	
;	  1024		local
;	  1025		    LINK_INFO : ref LINK_INFO_BLOCK;
;	  1026	
;	  1027	!
;	  1028	! Find our LINK_INFO block
;	  1029	!
;	  1030	
;	  1031		if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
;	  1032		then
;	  1033	!
;	  1034	! Update status to reflect transmit complete
;	  1035	!
;	  1036		    begin
;	  1037		    LINK_INFO [LINK_OUTPUT_IN_PROGRESS] = 0;
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  44
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (8)

;	  1038	!
;	  1039	! Startup waiting process
;	  1040	!
;	  1041		    DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  1042		    end;
;	  1043	
;	  1044		end;					! of SND_AST


						.SBTTL	SND.AST
000000	010046 				SND.AST:MOV	R0,-(SP)			;					1018
000002	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					1031
000006	016600  000004 				MOV	4(SP),R0			; NETWORK.STATUS.,*
000012	016046  000004 				MOV	4(R0),-(SP)
000016	012746  000000V				MOV	#IQ.SCAN,-(SP)
000022	004767  000000G				JSR	PC,UQ.SCAN
000026	062706  000006 				ADD	#6,SP
000032	005700 					TST	R0				; LINK.INFO
000034	001407 					BEQ	1$
000036	142760  000001  000046 			BICB	#1,46(R0)			; *,*(LINK.INFO)			1037
000044	010046 					MOV	R0,-(SP)			; LINK.INFO,*				1041
000046	004767  000000V				JSR	PC,DECLARE.NETWORK.EVENT
000052	005726 					TST	(SP)+				;					1036
000054	012600 				1$:	MOV	(SP)+,R0			;					1018

					;+
					;	RSX AST Service Routine Exit
					;-

000056	012716  000563 				MOV	#563,(SP)
000062	104377 					EMT	377
; Routine Size:  26 words,	Routine Base:  $CODE$ + 4524
; Maximum stack depth per invocation:  5 words


;	  1045	!
;	  1046	! Main Send Processing
;	  1047	!
;	  1048	
;	  1049	    if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
;	  1050		.LINK_INFO) neq 0
;	  1051	    then
;	  1052		begin
;	  1053	
;	  1054		bind
;	  1055		    LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  1056	
;	  1057		if not .LNKSTS [LSB_CONNECTED]
;	  1058		then
;	  1059		    $false
;	  1060		else
;	  1061		    begin
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  45
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (8)

;	  1062	
;	  1063		    if not .EOM_FLAG
;	  1064		    then
;	  1065			return $false
;	  1066		    else
;	  1067			begin
;	  1068	
;	  1069			bind
;	  1070			    NETSTS = LINK_INFO [LINK_OUT_SB] : $NETWORK_STATUS_BLOCK;
;	  1071	
;	  1072			LINK_INFO [LINK_OUTPUT_IN_PROGRESS] = 1;
;	  1073			SND$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_OUT_SB], SND_AST, <.BUFFER, .BUFFER_SIZE>);
;	  1074	!
;	  1075	! Wait for data buffer to be transmitted
;	  1076	!
;	  1077			WAIT_FOR_NETWORK (LINK_INFO, (.LINK_INFO [LINK_OUTPUT_IN_PROGRESS]));
;	  1078	
;	  1079			if .NETSTS [NETSB$ERR] neq IS$SUC then $false else $true
;	  1080	
;	  1081			end
;	  1082	
;	  1083		    end
;	  1084	
;	  1085		end
;	  1086	    else
;	  1087		$false
;	  1088	
;	  1089	    end;					! End of NMU$NETWORK_WRITE


						.SBTTL	UN.WRITE
000000	004167  000000G			UN.WRITE::
						JSR	R1,$SAVE2			;					0986
000004	012746  000543 				MOV	#543,-(SP)			;					1049
000010	104377 					EMT	377
000012	005267  000000G				INC	INTNST
000016	012746  000014'				MOV	#INFO.QUEUE,-(SP)
000022	016646  000020 				MOV	20(SP),-(SP)			; LINK.IDENTIFIER,*
000026	012746  000000V				MOV	#IQ.SCAN,-(SP)
000032	004767  000000G				JSR	PC,UQ.SCAN
000036	022626 					CMP	(SP)+,(SP)+
000040	010001 					MOV	R0,R1				; *,LINK.INFO
000042	012716  000543 				MOV	#543,(SP)
000046	104377 					EMT	377
000050	005367  000000G				DEC	INTNST
000054	000243 					.WORD CLV!CLC
							
000056	003005 					BGT	1$
000060	005067  000000G				CLR	INTNST
000064	012746  000545 				MOV	#545,-(SP)
000070	104377 					EMT	377
000072	005701 				1$:	TST	R1				; LINK.INFO				1050
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  46
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (8)

000074	001464 					BEQ	4$
000076	032761  000400  000050 			BIT	#400,50(R1)			; *,*(LINK.INFO)			1057
000104	001460 					BEQ	4$
000106	032766  000001  000014 			BIT	#1,14(SP)			; *,EOM.FLAG				1063
000114	001454 					BEQ	4$				;					1065
000116	152761  000001  000046 			BISB	#1,46(R1)			; *,*(LINK.INFO)			1072
000124	005046 					CLR	-(SP)				;					1073
000126	005046 					CLR	-(SP)
000130	005046 					CLR	-(SP)
000132	005046 					CLR	-(SP)
000134	016646  000022 				MOV	22(SP),-(SP)			; BUFFER.SIZE,*
000140	016646  000022 				MOV	22(SP),-(SP)			; BUFFER,*
000144	012746  004524'				MOV	#SND.AST,-(SP)
000150	012746  000030 				MOV	#30,-(SP)
000154	060116 					ADD	R1,(SP)				; LINK.INFO,*
000156	005046 					CLR	-(SP)
000160	016146  000010 				MOV	10(R1),-(SP)			; *(LINK.INFO),*
000164	012746  014400 				MOV	#14400,-(SP)
000170	012746  006001 				MOV	#6001,-(SP)
000174	104377 					EMT	377
000176	010102 					MOV	R1,R2				; LINK.INFO,*				1077
000200	062702  000036 				ADD	#36,R2
000204	132761  000001  000046 		2$:	BITB	#1,46(R1)			; *,*(LINK.INFO)
000212	001406 					BEQ	3$
000214	010246 					MOV	R2,-(SP)
000216	005046 					CLR	-(SP)
000220	004767  000000G				JSR	PC,US.WAIT
000224	022626 					CMP	(SP)+,(SP)+
000226	000766 					BR	2$
000230	126127  000030  000001 		3$:	CMPB	30(R1),#1			; *(LINK.INFO),*			1079
000236	001003 					BNE	4$
000240	012700  000001 				MOV	#1,R0
000244	000207 					RTS	PC				;					1049
000246	005000 				4$:	CLR	R0
000250	000207 					RTS	PC				;					0986
; Routine Size:  85 words,	Routine Base:  $CODE$ + 4610
; Maximum stack depth per invocation:  17 words


;	  1090	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  47
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (9)

;	  1091	global routine %unquote NMU$NETWORK_ABORT (LINK_IDENTIFIER, REASON, DATA_LEN, DATA_PTR) =
;	  1092	
;	  1093	!++
;	  1094	! Functional description:
;	  1095	!
;	  1096	!
;	  1097	! Formal parameters:
;	  1098	!
;	  1099	!	.LINK_IDENTIFIER    Identifier of link to abort
;	  1100	!	.REASON		    Reason code to aborting link
;	  1101	!	.DATA_LEN	    Length of optional abort data
;	  1102	!	.DATA_PTR	    Pointer to optional abort data
;	  1103	!
;	  1104	! Routine value:
;	  1105	!
;	  1106	!	$true - Abort has been done
;	  1107	!	$false - Abort could not be done
;	  1108	!
;	  1109	! Side effects: none
;	  1110	!
;	  1111	!--
;	  1112	
;	  1113	    begin
;	  1114	
;	  1115	    local
;	  1116		LINK_INFO : ref LINK_INFO_BLOCK;
;	  1117	
;	  1118	!
;	  1119	! Interrupt Service Routine for Aborts
;	  1120	!
;	  1121	    routine ABT_AST NETWORK_INTERRUPT_ROUTINE =
;	  1122		begin
;	  1123	
;	  1124		map
;	  1125		    NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
;	  1126	
;	  1127		local
;	  1128		    LINK_INFO : ref LINK_INFO_BLOCK;
;	  1129	
;	  1130	!
;	  1131	! Find our LINK_INFO block
;	  1132	!
;	  1133	
;	  1134		if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
;	  1135		then
;	  1136	!
;	  1137	! Update status to reflect disconnect complete
;	  1138	!
;	  1139		    begin
;	  1140	
;	  1141		    bind
;	  1142			LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  48
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (9)

;	  1143	
;	  1144		    LNKSTS [LSB_ABORTED] = 1;
;	  1145		    LNKSTS [LSB_CLOSED] = 1;
;	  1146		    LNKSTS [LSB_CCWAIT] = 0;
;	  1147		    LNKSTS [LSB_CIWAIT] = 0;
;	  1148		    LNKSTS [LSB_CONNECTED] = 0;
;	  1149	!
;	  1150	! Startup waiting process
;	  1151	!
;	  1152		    DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  1153		    end;
;	  1154	
;	  1155		end;					! of ABT_AST


						.SBTTL	ABT.AST
000000	010046 				ABT.AST:MOV	R0,-(SP)			;					1121
000002	010146 					MOV	R1,-(SP)
000004	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					1134
000010	016600  000006 				MOV	6(SP),R0			; NETWORK.STATUS.,*
000014	016046  000004 				MOV	4(R0),-(SP)
000020	012746  000000V				MOV	#IQ.SCAN,-(SP)
000024	004767  000000G				JSR	PC,UQ.SCAN
000030	062706  000006 				ADD	#6,SP
000034	005700 					TST	R0				; LINK.INFO
000036	001413 					BEQ	1$
000040	012701  000050 				MOV	#50,R1				;					1139
000044	060001 					ADD	R0,R1				; LINK.INFO,*
000046	152711  000014 				BISB	#14,(R1)			;					1145
000052	042711  000540 				BIC	#540,(R1)			;					1148
000056	010046 					MOV	R0,-(SP)			; LINK.INFO,*				1152
000060	004767  000000V				JSR	PC,DECLARE.NETWORK.EVENT
000064	005726 					TST	(SP)+				;					1139
000066	012601 				1$:	MOV	(SP)+,R1			;					1121
000070	012600 					MOV	(SP)+,R0

					;+
					;	RSX AST Service Routine Exit
					;-

000072	012716  000563 				MOV	#563,(SP)
000076	104377 					EMT	377
; Routine Size:  32 words,	Routine Base:  $CODE$ + 5062
; Maximum stack depth per invocation:  6 words


;	  1156	!
;	  1157	! Main Processing for Aborts
;	  1158	!
;	  1159	
;	  1160	    if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
;	  1161		.LINK_INFO) neq 0
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  49
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (9)

;	  1162	    then
;	  1163		begin
;	  1164	
;	  1165		bind
;	  1166		    LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  1167	
;	  1168		if not .LNKSTS [LSB_CLOSED]
;	  1169		then
;	  1170		    begin
;	P 1171		    ABT$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_LINK_SB], ABT_AST,
;	  1172			<(if .DATA_LEN eql 0 then 0 else .DATA_PTR), .DATA_LEN>);
;	  1173		    WAIT_FOR_NETWORK (LINK_INFO, ( not .LNKSTS [LSB_ABORTED]));
;	  1174		    end;
;	  1175	
;	  1176		NETWORK_LUNS [.LINK_INFO [LINK_LUN] - NMU$_NETWORK_LUN] = 0;
;	  1177		NMU$QUEUE_EXTRACT (INFO_QUEUE, .LINK_INFO);
;	  1178		NMU$MEMORY_RELEASE (.LINK_INFO, LINK_INFO_BLOCK_ALLOCATION);
;	  1179		$true
;	  1180		end
;	  1181	    else
;	  1182		$false
;	  1183	
;	  1184	    end;					! End of NMU$NETWORK_ABORT


						.SBTTL	UN.ABORT
000000	004167  000000G			UN.ABORT::
						JSR	R1,$SAVE2			;					1091
000004	012746  000543 				MOV	#543,-(SP)			;					1160
000010	104377 					EMT	377
000012	005267  000000G				INC	INTNST
000016	012746  000014'				MOV	#INFO.QUEUE,-(SP)
000022	016646  000020 				MOV	20(SP),-(SP)			; LINK.IDENTIFIER,*
000026	012746  000000V				MOV	#IQ.SCAN,-(SP)
000032	004767  000000G				JSR	PC,UQ.SCAN
000036	022626 					CMP	(SP)+,(SP)+
000040	010001 					MOV	R0,R1				; *,LINK.INFO
000042	012716  000543 				MOV	#543,(SP)
000046	104377 					EMT	377
000050	005367  000000G				DEC	INTNST
000054	000243 					.WORD CLV!CLC
							
000056	003005 					BGT	1$
000060	005067  000000G				CLR	INTNST
000064	012746  000545 				MOV	#545,-(SP)
000070	104377 					EMT	377
000072	005701 				1$:	TST	R1				; LINK.INFO				1161
000074	001476 					BEQ	6$
000076	132761  000004  000050 			BITB	#4,50(R1)			; *,*(LINK.INFO)			1168
000104	001046 					BNE	5$
000106	005046 					CLR	-(SP)				;					1172
000110	005046 					CLR	-(SP)
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  50
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (9)

000112	005046 					CLR	-(SP)
000114	005046 					CLR	-(SP)
000116	016646  000022 				MOV	22(SP),-(SP)			; DATA.LEN,*
000122	005716 					TST	(SP)				; DATA.LEN
000124	001002 					BNE	2$
000126	005046 					CLR	-(SP)
000130	000402 					BR	3$
000132	016646  000022 			2$:	MOV	22(SP),-(SP)			; DATA.PTR,*
000136	012746  005062'			3$:	MOV	#ABT.AST,-(SP)
000142	010146 					MOV	R1,-(SP)			; LINK.INFO,*
000144	062716  000014 				ADD	#14,(SP)
000150	005046 					CLR	-(SP)
000152	016146  000010 				MOV	10(R1),-(SP)			; *(LINK.INFO),*
000156	012746  016010 				MOV	#16010,-(SP)
000162	012746  006001 				MOV	#6001,-(SP)
000166	104377 					EMT	377
000170	010102 					MOV	R1,R2				; LINK.INFO,*				1173
000172	062702  000036 				ADD	#36,R2
000176	132761  000010  000050 		4$:	BITB	#10,50(R1)			; *,*(LINK.INFO)
000204	001006 					BNE	5$
000206	010246 					MOV	R2,-(SP)
000210	005046 					CLR	-(SP)
000212	004767  000000G				JSR	PC,US.WAIT
000216	022626 					CMP	(SP)+,(SP)+
000220	000766 					BR	4$
000222	016100  000010 			5$:	MOV	10(R1),R0			; *(LINK.INFO),*			1176
000226	006300 					ASL	R0
000230	005060  000010'				CLR	NETWORK.LUNS-12(R0)
000234	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					1177
000240	010146 					MOV	R1,-(SP)			; LINK.INFO,*
000242	004767  000000G				JSR	PC,UQ.EXTRACT
000246	010116 					MOV	R1,(SP)				; LINK.INFO,*				1178
000250	012746  000236 				MOV	#236,-(SP)
000254	004767  000000G				JSR	PC,UM.RELEASE
000260	062706  000006 				ADD	#6,SP				;					1163
000264	012700  000001 				MOV	#1,R0				;					1160
000270	000207 					RTS	PC
000272	005000 				6$:	CLR	R0
000274	000207 					RTS	PC				;					1091
; Routine Size:  95 words,	Routine Base:  $CODE$ + 5162
; Maximum stack depth per invocation:  17 words


;	  1185	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  51
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (10)

;	  1186	global routine %unquote NMU$NETWORK_CLOSE (LINK_IDENTIFIER, DATA_LEN, DATA_PTR) =
;	  1187	
;	  1188	!++
;	  1189	! Functional description:
;	  1190	!
;	  1191	!
;	  1192	! Formal parameters:
;	  1193	!
;	  1194	!	.LINK_IDENTIFIER    Identifier of link to close
;	  1195	!	.DATA_LEN	    Length of optional close data
;	  1196	!	.DATA_PTR	    Pointer to optional close data
;	  1197	!
;	  1198	! Routine value:
;	  1199	!
;	  1200	!	$true - Close Completed
;	  1201	!	$false - Close could not be done
;	  1202	!
;	  1203	! Side effects: none
;	  1204	!
;	  1205	!--
;	  1206	
;	  1207	    begin
;	  1208	
;	  1209	    local
;	  1210		LINK_INFO : ref LINK_INFO_BLOCK;
;	  1211	
;	  1212	!
;	  1213	! Interrupt Service Routine for Disconnects
;	  1214	!
;	  1215	    routine DSC_AST NETWORK_INTERRUPT_ROUTINE =
;	  1216		begin
;	  1217	
;	  1218		map
;	  1219		    NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
;	  1220	
;	  1221		local
;	  1222		    LINK_INFO : ref LINK_INFO_BLOCK;
;	  1223	
;	  1224	!
;	  1225	! Find our LINK_INFO block
;	  1226	!
;	  1227	
;	  1228		if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
;	  1229		then
;	  1230	!
;	  1231	! Update status to reflect disconnect complete
;	  1232	!
;	  1233		    begin
;	  1234	
;	  1235		    bind
;	  1236			LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  1237	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  52
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (10)

;	  1238		    LNKSTS [LSB_CLOSED] = 1;
;	  1239		    LNKSTS [LSB_CCWAIT] = 0;
;	  1240		    LNKSTS [LSB_CIWAIT] = 0;
;	  1241		    LNKSTS [LSB_CONNECTED] = 0;
;	  1242	!
;	  1243	! Startup waiting process
;	  1244	!
;	  1245		    DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  1246		    end;
;	  1247	
;	  1248		end;					! of DSC_AST


						.SBTTL	DSC.AST
000000	010046 				DSC.AST:MOV	R0,-(SP)			;					1215
000002	010146 					MOV	R1,-(SP)
000004	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					1228
000010	016600  000006 				MOV	6(SP),R0			; NETWORK.STATUS.,*
000014	016046  000004 				MOV	4(R0),-(SP)
000020	012746  000000V				MOV	#IQ.SCAN,-(SP)
000024	004767  000000G				JSR	PC,UQ.SCAN
000030	062706  000006 				ADD	#6,SP
000034	005700 					TST	R0				; LINK.INFO
000036	001413 					BEQ	1$
000040	012701  000050 				MOV	#50,R1				;					1233
000044	060001 					ADD	R0,R1				; LINK.INFO,*
000046	152711  000004 				BISB	#4,(R1)				;					1238
000052	042711  000540 				BIC	#540,(R1)			;					1241
000056	010046 					MOV	R0,-(SP)			; LINK.INFO,*				1245
000060	004767  000000V				JSR	PC,DECLARE.NETWORK.EVENT
000064	005726 					TST	(SP)+				;					1233
000066	012601 				1$:	MOV	(SP)+,R1			;					1215
000070	012600 					MOV	(SP)+,R0

					;+
					;	RSX AST Service Routine Exit
					;-

000072	012716  000563 				MOV	#563,(SP)
000076	104377 					EMT	377
; Routine Size:  32 words,	Routine Base:  $CODE$ + 5460
; Maximum stack depth per invocation:  6 words


;	  1249	!
;	  1250	! Main Processing for Disconnects
;	  1251	!
;	  1252	
;	  1253	    if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
;	  1254		.LINK_INFO) neq 0
;	  1255	    then
;	  1256		begin
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  53
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (10)

;	  1257	
;	  1258		bind
;	  1259		    LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  1260	
;	  1261		if not .LNKSTS [LSB_CLOSED]
;	  1262		then
;	  1263		    begin
;	P 1264		    DSC$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_LINK_SB], DSC_AST,
;	  1265			<(if .DATA_LEN eql 0 then 0 else .DATA_PTR), .DATA_LEN>);
;	  1266		    WAIT_FOR_NETWORK (LINK_INFO, ( not .LNKSTS [LSB_CLOSED]));
;	  1267		    end;
;	  1268	
;	  1269		NETWORK_LUNS [.LINK_INFO [LINK_LUN] - NMU$_NETWORK_LUN] = 0;
;	  1270		NMU$QUEUE_EXTRACT (INFO_QUEUE, .LINK_INFO);
;	  1271		NMU$MEMORY_RELEASE (.LINK_INFO, LINK_INFO_BLOCK_ALLOCATION);
;	  1272		$true
;	  1273		end
;	  1274	    else
;	  1275		$false
;	  1276	
;	  1277	    end;					! End of NMU$NETWORK_CLOSE


						.SBTTL	UN.CLOSE
000000	004167  000000G			UN.CLOSE::
						JSR	R1,$SAVE2			;					1186
000004	012746  000543 				MOV	#543,-(SP)			;					1253
000010	104377 					EMT	377
000012	005267  000000G				INC	INTNST
000016	012746  000014'				MOV	#INFO.QUEUE,-(SP)
000022	016646  000016 				MOV	16(SP),-(SP)			; LINK.IDENTIFIER,*
000026	012746  000000V				MOV	#IQ.SCAN,-(SP)
000032	004767  000000G				JSR	PC,UQ.SCAN
000036	022626 					CMP	(SP)+,(SP)+
000040	010001 					MOV	R0,R1				; *,LINK.INFO
000042	012716  000543 				MOV	#543,(SP)
000046	104377 					EMT	377
000050	005367  000000G				DEC	INTNST
000054	000243 					.WORD CLV!CLC
							
000056	003005 					BGT	1$
000060	005067  000000G				CLR	INTNST
000064	012746  000545 				MOV	#545,-(SP)
000070	104377 					EMT	377
000072	005701 				1$:	TST	R1				; LINK.INFO				1254
000074	001476 					BEQ	6$
000076	132761  000004  000050 			BITB	#4,50(R1)			; *,*(LINK.INFO)			1261
000104	001046 					BNE	5$
000106	005046 					CLR	-(SP)				;					1265
000110	005046 					CLR	-(SP)
000112	005046 					CLR	-(SP)
000114	005046 					CLR	-(SP)
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  54
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (10)

000116	016646  000022 				MOV	22(SP),-(SP)			; DATA.LEN,*
000122	005716 					TST	(SP)				; DATA.LEN
000124	001002 					BNE	2$
000126	005046 					CLR	-(SP)
000130	000402 					BR	3$
000132	016646  000022 			2$:	MOV	22(SP),-(SP)			; DATA.PTR,*
000136	012746  005460'			3$:	MOV	#DSC.AST,-(SP)
000142	010146 					MOV	R1,-(SP)			; LINK.INFO,*
000144	062716  000014 				ADD	#14,(SP)
000150	005046 					CLR	-(SP)
000152	016146  000010 				MOV	10(R1),-(SP)			; *(LINK.INFO),*
000156	012746  016000 				MOV	#16000,-(SP)
000162	012746  006001 				MOV	#6001,-(SP)
000166	104377 					EMT	377
000170	010102 					MOV	R1,R2				; LINK.INFO,*				1266
000172	062702  000036 				ADD	#36,R2
000176	132761  000004  000050 		4$:	BITB	#4,50(R1)			; *,*(LINK.INFO)
000204	001006 					BNE	5$
000206	010246 					MOV	R2,-(SP)
000210	005046 					CLR	-(SP)
000212	004767  000000G				JSR	PC,US.WAIT
000216	022626 					CMP	(SP)+,(SP)+
000220	000766 					BR	4$
000222	016100  000010 			5$:	MOV	10(R1),R0			; *(LINK.INFO),*			1269
000226	006300 					ASL	R0
000230	005060  000010'				CLR	NETWORK.LUNS-12(R0)
000234	012746  000014'				MOV	#INFO.QUEUE,-(SP)		;					1270
000240	010146 					MOV	R1,-(SP)			; LINK.INFO,*
000242	004767  000000G				JSR	PC,UQ.EXTRACT
000246	010116 					MOV	R1,(SP)				; LINK.INFO,*				1271
000250	012746  000236 				MOV	#236,-(SP)
000254	004767  000000G				JSR	PC,UM.RELEASE
000260	062706  000006 				ADD	#6,SP				;					1256
000264	012700  000001 				MOV	#1,R0				;					1253
000270	000207 					RTS	PC
000272	005000 				6$:	CLR	R0
000274	000207 					RTS	PC				;					1186
; Routine Size:  95 words,	Routine Base:  $CODE$ + 5560
; Maximum stack depth per invocation:  17 words


;	  1278	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  55
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (11)

;	  1279	global routine %unquote NMU$NETWORK_STATUS (LINK_IDENTIFIER, STS_BLK) =
;	  1280	
;	  1281	!++
;	  1282	! Functional description:
;	  1283	!
;	  1284	!	This routine supplies the status of a logical link.
;	  1285	!
;	  1286	! Formal parameters:
;	  1287	!
;	  1288	!	.LINK_IDENTIFIER   Link identifier.
;	  1289	!	.STS_BLK	   Address of status block.
;	  1290	!
;	  1291	! Routine value:
;	  1292	!
;	  1293	!	$true - Link Status Available
;	  1294	!	$false - Link Status Unavailable
;	  1295	!
;	  1296	! Side effects: none
;	  1297	!
;	  1298	!--
;	  1299	
;	  1300	    begin
;	  1301	
;	  1302	    local
;	  1303		LINK_INFO : ref LINK_INFO_BLOCK;
;	  1304	
;	  1305	    if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
;	  1306		.LINK_INFO) neq 0
;	  1307	    then
;	  1308		begin
;	  1309	
;	  1310		bind
;	  1311		    LNKSTS = LINK_INFO [LINK_STATUS] : vector [1];
;	  1312	
;	  1313		.STS_BLK = .LNKSTS [0];
;	  1314		$true
;	  1315		end
;	  1316	    else
;	  1317		$false
;	  1318	
;	  1319	    end;					! End of NMU$NETWORK_STATUS


						.SBTTL	UN.STATUS
000000	010146 				UN.STATUS::
						MOV	R1,-(SP)			;					1279
000002	012746  000543 				MOV	#543,-(SP)			;					1305
000006	104377 					EMT	377
000010	005267  000000G				INC	INTNST
000014	012746  000014'				MOV	#INFO.QUEUE,-(SP)
000020	016646  000010 				MOV	10(SP),-(SP)			; LINK.IDENTIFIER,*
000024	012746  000000V				MOV	#IQ.SCAN,-(SP)
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  56
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (11)

000030	004767  000000G				JSR	PC,UQ.SCAN
000034	022626 					CMP	(SP)+,(SP)+
000036	010001 					MOV	R0,R1				; *,LINK.INFO
000040	012716  000543 				MOV	#543,(SP)
000044	104377 					EMT	377
000046	005367  000000G				DEC	INTNST
000052	000243 					.WORD CLV!CLC
							
000054	003005 					BGT	1$
000056	005067  000000G				CLR	INTNST
000062	012746  000545 				MOV	#545,-(SP)
000066	104377 					EMT	377
000070	005701 				1$:	TST	R1				; LINK.INFO				1306
000072	001406 					BEQ	2$
000074	016176  000050  000004 			MOV	50(R1),@4(SP)			; *(LINK.INFO),STS.BLK			1313
000102	012700  000001 				MOV	#1,R0				;					1305
000106	000401 					BR	3$
000110	005000 				2$:	CLR	R0
000112	012601 				3$:	MOV	(SP)+,R1			;					1279
000114	000207 					RTS	PC
; Routine Size:  39 words,	Routine Base:  $CODE$ + 6056
; Maximum stack depth per invocation:  5 words


;	  1320	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  57
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (12)

;	  1321	global routine %unquote NMU$NETWORK_VALIDATE (CONN_BLK) =
;	  1322	
;	  1323	!++
;	  1324	! Functional description:
;	  1325	!
;	  1326	!
;	  1327	! Formal parameters:
;	  1328	!
;	  1329	!	.CONN_BLK  	Address of a link connect block.
;	  1330	!
;	  1331	! Routine value:
;	  1332	!
;	  1333	!	 0 - Unprivledged user
;	  1334	!	 1 - Privledged user
;	  1335	!
;	  1336	! Side effects: none
;	  1337	!
;	  1338	!--
;	  1339	
;	  1340	    begin
;	  1341	
;	  1342	    map
;	  1343		CONN_BLK : ref CONNECT_BLOCK;
;	  1344	
;	  1345	    local
;	  1346		CNT,
;	  1347		PTR;
;	  1348	
;	  1349	    PTR = ch$ptr (UN$USER,, 8);
;	  1350	
;	  1351	    if (CNT = ch$rchar_a (PTR)) neq 0
;	  1352	    then
;	  1353		begin
;	  1354	
;	  1355		if .CONN_BLK [CB_USERID_LENGTH] neq .CNT then return 0;
;	  1356	
;	  1357		if ch$neq (.CNT, .CONN_BLK [CB_USERID], .CNT, .PTR, 0) then return 0;
;	  1358	
;	  1359		end;
;	  1360	
;	  1361	    PTR = ch$ptr (UN$PASSWORD,, 8);
;	  1362	
;	  1363	    if (CNT = ch$rchar_a (PTR)) neq 0
;	  1364	    then
;	  1365		begin
;	  1366	
;	  1367		if .CONN_BLK [CB_PASSWORD_LENGTH] neq .CNT then return 0;
;	  1368	
;	  1369		if ch$neq (.CNT, .CONN_BLK [CB_PASSWORD], .CNT, .PTR, 0) then return 0;
;	  1370	
;	  1371		end;
;	  1372	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  58
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (12)

;	  1373	    PTR = ch$ptr (UN$ACCOUNT,, 8);
;	  1374	
;	  1375	    if (CNT = ch$rchar_a (PTR)) neq 0
;	  1376	    then
;	  1377		begin
;	  1378	
;	  1379		if .CONN_BLK [CB_ACCOUNT_LENGTH] neq .CNT then return 0;
;	  1380	
;	  1381		if ch$neq (.CNT, .CONN_BLK [CB_ACCOUNT], .CNT, .PTR, 0) then return 0;
;	  1382	
;	  1383		end;
;	  1384	
;	  1385	    1
;	  1386	    end;					! End of NMU$NETWORK_VALIDATE


						.SBTTL	UN.VALIDATE
000000	004167  000000G			UN.VALIDATE::
						JSR	R1,$SAVE2			;					1321
000004	012702  000000'				MOV	#UN$USER,R2			; *,PTR					1349
000010	005001 					CLR	R1				; CNT					1351
000012	152201 					BISB	(R2)+,R1			; PTR,CNT
000014	005701 					TST	R1				; CNT
000016	001421 					BEQ	1$
000020	016600  000010 				MOV	10(SP),R0			; CONN.BLK,*				1355
000024	026001  000014 				CMP	14(R0),R1			; *,CNT
000030	001072 					BNE	3$
000032	010146 					MOV	R1,-(SP)			; CNT,*					1357
000034	016046  000012 				MOV	12(R0),-(SP)
000040	010146 					MOV	R1,-(SP)			; CNT,*
000042	010246 					MOV	R2,-(SP)			; PTR,*
000044	005046 					CLR	-(SP)
000046	004767  000000G				JSR	PC,BL$NEQ
000052	062706  000012 				ADD	#12,SP
000056	006000 					ROR	R0
000060	103456 					BLO	3$
000062	012702  000022'			1$:	MOV	#UN$PASSWORD,R2			; *,PTR					1361
000066	005001 					CLR	R1				; CNT					1363
000070	152201 					BISB	(R2)+,R1			; PTR,CNT
000072	005701 					TST	R1				; CNT
000074	001421 					BEQ	2$
000076	016600  000010 				MOV	10(SP),R0			; CONN.BLK,*				1367
000102	026001  000030 				CMP	30(R0),R1			; *,CNT
000106	001043 					BNE	3$
000110	010146 					MOV	R1,-(SP)			; CNT,*					1369
000112	016046  000026 				MOV	26(R0),-(SP)
000116	010146 					MOV	R1,-(SP)			; CNT,*
000120	010246 					MOV	R2,-(SP)			; PTR,*
000122	005046 					CLR	-(SP)
000124	004767  000000G				JSR	PC,BL$NEQ
000130	062706  000012 				ADD	#12,SP
000134	006000 					ROR	R0
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  59
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (12)

000136	103427 					BLO	3$
000140	012702  000034'			2$:	MOV	#UN$ACCOUNT,R2			; *,PTR					1373
000144	005001 					CLR	R1				; CNT					1375
000146	152201 					BISB	(R2)+,R1			; PTR,CNT
000150	005701 					TST	R1				; CNT
000152	001423 					BEQ	4$
000154	016600  000010 				MOV	10(SP),R0			; CONN.BLK,*				1379
000160	026001  000024 				CMP	24(R0),R1			; *,CNT
000164	001014 					BNE	3$
000166	010146 					MOV	R1,-(SP)			; CNT,*					1381
000170	016046  000022 				MOV	22(R0),-(SP)
000174	010146 					MOV	R1,-(SP)			; CNT,*
000176	010246 					MOV	R2,-(SP)			; PTR,*
000200	005046 					CLR	-(SP)
000202	004767  000000G				JSR	PC,BL$NEQ
000206	062706  000012 				ADD	#12,SP
000212	006000 					ROR	R0
000214	103002 					BCC	4$
000216	005000 				3$:	CLR	R0
000220	000207 					RTS	PC
000222	012700  000001 			4$:	MOV	#1,R0				;					1321
000226	000207 					RTS	PC
; Routine Size:  76 words,	Routine Base:  $CODE$ + 6174
; Maximum stack depth per invocation:  9 words


;	  1387	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  60
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (13)

;	  1388	global routine %unquote NMU$NETWORK_LOCAL =
;	  1389	
;	  1390	!++
;	  1391	! Functional description:
;	  1392	!
;	  1393	!	This routine returns a pointer to the local node
;	  1394	!	name string.
;	  1395	!
;	  1396	! Formal parameters: none
;	  1397	!
;	  1398	! Routine value:
;	  1399	!
;	  1400	!	Byte pointer to node name string.
;	  1401	!
;	  1402	! Side effects: none
;	  1403	!
;	  1404	!--
;	  1405	
;	  1406	    begin
;	  1407	    ch$ptr (LOCAL_NODE,, 8)
;	  1408	    end;					! End of NMU$NETWORK_LOCAL


						.SBTTL	UN.LOCAL
000000	012700  000000'			UN.LOCAL::
						MOV	#LOCAL.NODE,R0			;					1388
000004	000207 					RTS	PC
; Routine Size:  3 words,	Routine Base:  $CODE$ + 6424
; Maximum stack depth per invocation:  0 words


;	  1409	
;	  1410	!<BLF/PAGE>
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  61
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (14)

;	  1411	routine DECLARE_NETWORK_EVENT (LINK_INFO) : novalue =
;	  1412	
;	  1413	!++
;	  1414	! Functional description:
;	  1415	!
;	  1416	!	This routine flags a network event and wakes up the scheduler.
;	  1417	!
;	  1418	! Formal parameters:
;	  1419	!
;	  1420	!	.LINK_INFO is the LINK_INFO_BLOCK for this event
;	  1421	!
;	  1422	! Routine value: none
;	  1423	!
;	  1424	! Side effects: none
;	  1425	!
;	  1426	!--
;	  1427	
;	  1428	    begin
;	  1429	
;	  1430	    map
;	  1431		LINK_INFO : ref LINK_INFO_BLOCK;
;	  1432	
;	  1433	    NMU$SCHED_FLAG (LINK_INFO [LINK_EVENT]);
;	  1434	    PROCESS_WAKE;
;	  1435	    end;					! of DECLARE_NETWORK_EVENT


						.SBTTL	DECLARE.NETWORK.EVENT
000000	016646  000002 			DECLARE.NETWORK.EVENT:
						MOV	2(SP),-(SP)			; LINK.INFO,*				1433
000004	062716  000036 				ADD	#36,(SP)
000010	004767  000000G				JSR	PC,US.FLAG
000014	012746  000040 				MOV	#40,-(SP)
000020	012746  001041 				MOV	#1041,-(SP)
000024	104377 					EMT	377
000026	005726 					TST	(SP)+
000030	000207 					RTS	PC				;					1411
; Routine Size:  13 words,	Routine Base:  $CODE$ + 6432
; Maximum stack depth per invocation:  5 words


;	  1436	!<BLF/PAGE>
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  62
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (15)

;	  1437	
;	  1438	!++
;	  1439	!	routine GND_AST VANILLA_INTERRUPT_ROUTINE
;	  1440	!	routine PROCESS_MAILBOX_ENTRY
;	  1441	!
;	  1442	! Functional description:
;	  1443	!
;	  1444	!	These routines process various asynchronous network events signaled
;	  1445	!	via the "Network Mailbox".
;	  1446	!	GND_AST is entered when asynchronous events are available.
;	  1447	!	PROCESS_MAILBOX_ENTRY is the main processing code for the events.
;	  1448	!
;	  1449	! Formal parameters:
;	  1450	!
;	  1451	!     $RSX_AST_PARAMETERS - Not Touched
;	  1452	!
;	  1453	! Routine value: none
;	  1454	!
;	  1455	! Side effects: none
;	  1456	!
;	  1457	!--
;	  1458	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  63
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (16)

;	  1459	routine GND_AST VANILLA_INTERRUPT_ROUTINE =
;	  1460	    begin
;	  1461	    PROCESS_MAILBOX_ENTRY ();
;	  1462	    end;					!of GND_AST


						.SBTTL	GND.AST
000000	010046 				GND.AST:MOV	R0,-(SP)			;					1459
000002	004767  000000V				JSR	PC,PROCESS.MAILBOX.ENTRY	;					1461
000006	012600 					MOV	(SP)+,R0			;					1459

					;+
					;	RSX AST Service Routine Exit
					;-

000010	012746  000563 				MOV	#563,-(SP)
000014	104377 					EMT	377
; Routine Size:  7 words,	Routine Base:  $CODE$ + 6464
; Maximum stack depth per invocation:  4 words
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  64
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (17)

;	  1463	routine PROCESS_MAILBOX_ENTRY : novalue =
;	  1464	
;	  1465	!++
;	  1466	! Functional description:
;	  1467	!
;	  1468	!
;	  1469	! Formal parameters:
;	  1470	!
;	  1471	!
;	  1472	! Routine value: none
;	  1473	!
;	  1474	! Side effects: none
;	  1475	!
;	  1476	!--
;	  1477	
;	  1478	    begin
;	  1479	
;	  1480	    own
;	  1481		GND_SB : $NETWORK_STATUS_BLOCK,
;	  1482		REJ_BUF : vector [3, byte] initial (byte (-21, 9, 0)),
;	  1483		GND_BUF : RSX$_GNDB_BLOCK,
;	  1484		GND_DIR : GNDW$ (NMU$_NETWORK_LUN, NMU$_NETWORK_FLAG, GND_SB,, <GND_BUF, RSX$_GNDB_ALLOCATION>),
;	P 1485		REJ_DIR : REJW$ (NMU$_NETWORK_LUN, NMU$_NETWORK_FLAG, GND_SB,,
;	P 1486			<GND_BUF, RSX$_GNDB_ALLOCATION,
;	  1487			    REJ_BUF, 3>);
;	  1488	
;	  1489	    local
;	  1490		LINK_INFO : ref LINK_INFO_BLOCK;
;	  1491	
;	  1492	!
;	  1493	! Routine to find Target Links which match connections
;	  1494	!
;	  1495	    routine TQ_SCAN (LINK_INFO, CURRENT_GNDB) =
;	  1496		begin
;	  1497	
;	  1498		map
;	  1499		    CURRENT_GNDB : ref RSX$_GNDB_BLOCK,
;	  1500		    LINK_INFO : ref LINK_INFO_BLOCK;
;	  1501	
;	  1502		bind
;	  1503		    GNDB = LINK_INFO [LINK_GNDB] : RSX$_GNDB_BLOCK,
;	  1504		    LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  1505	
;	  1506	!
;	  1507	! Ensure this link is a waiting target.
;	  1508	!
;	  1509	
;	  1510		if (.LNKSTS [LSB_SERVER] and .LNKSTS [LSB_CIWAIT])
;	  1511		then
;	  1512	!
;	  1513	! Compare objects and determine matching characteristics
;	  1514	!
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  65
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (17)

;	  1515	
;	  1516		    case .GNDB [GNDB_DEST_FORMAT] from 0 to 2 of
;	  1517			set
;	  1518	
;	  1519			[0] : 				! Format 0 Descriptor
;	  1520			    begin
;	  1521	
;	  1522			    if .CURRENT_GNDB [GNDB_DEST_FORMAT] neq 0 then return 0;
;	  1523	
;	  1524			    if .CURRENT_GNDB [GNDB_DEST_OBJECT] eql .GNDB [GNDB_DEST_OBJECT]
;	  1525			    then
;	  1526				return .LINK_INFO
;	  1527			    else
;	  1528				return 0;
;	  1529	
;	  1530			    end;
;	  1531	
;	  1532			[1] : 				! Format 1 Descriptor
;	  1533			    begin
;	  1534	
;	  1535			    if .CURRENT_GNDB [GNDB_DEST_FORMAT] neq 1 then return 0;
;	  1536	
;	  1537			    if .CURRENT_GNDB [GNDB_DEST_OBJECT] neq .GNDB [GNDB_DEST_OBJECT] then return 0;
;	  1538	
;	  1539			    if ch$eql (.CURRENT_GNDB [GNDB_D1_LENGTH], ch$ptr (CURRENT_GNDB [GNDB_D1_TASK_NAME]),
;	  1540				    .GNDB [GNDB_D1_LENGTH], ch$ptr (GNDB [GNDB_D1_TASK_NAME]), 0)
;	  1541			    then
;	  1542				return .LINK_INFO
;	  1543			    else
;	  1544				return 0;
;	  1545	
;	  1546			    end;
;	  1547	
;	  1548			[2] : 				! Format 2 Descriptor
;	  1549			    return 0;
;	  1550			tes
;	  1551	
;	  1552		else
;	  1553		    0
;	  1554	
;	  1555		end;					! of TQ_SCAN



000130						.PSECT	$OWN$,  D  
000130					GND.SB: .BLKW	3
000136					REJ.BUF:
000136	   353 					.BYTE	-25
000137	   011 					.BYTE	11
000140	   000 					.BYTE	0
						.EVEN
000142					GND.BUF:.BLKW	71
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  66
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (17)

000324	006003 				GND.DIR:.WORD	6003
000326	016630 					.WORD	16630
000330	000005 					.WORD	5
000332	000005 					.WORD	5
000334	000130'					.WORD	GND.SB
000336	000000 					.WORD	0
000340	000142'					.WORD	GND.BUF
000342	000162 					.WORD	162
000344	000000 					.WORD	0
000346	000000 					.WORD	0
000350	000000 					.WORD	0
000352	000000 					.WORD	0
000354	006003 				REJ.DIR:.WORD	6003
000356	016020 					.WORD	16020
000360	000005 					.WORD	5
000362	000005 					.WORD	5
000364	000130'					.WORD	GND.SB
000366	000000 					.WORD	0
000370	000142'					.WORD	GND.BUF
000372	000162 					.WORD	162
000374	000136'					.WORD	REJ.BUF
000376	000003 					.WORD	3
000400	000000 					.WORD	0
000402	000000 					.WORD	0


						.SBTTL	TQ.SCAN
006502						.PSECT	$CODE$,  RO 

000000	004167  000000G			TQ.SCAN:JSR	R1,$SAVE3			;					1495
000004	016603  000014 				MOV	14(SP),R3			; LINK.INFO,*				1503
000010	012701  000054 				MOV	#54,R1				;					1496
000014	060301 					ADD	R3,R1
000016	105763  000050 				TSTB	50(R3)				;					1510
000022	100064 					BPL	4$
000024	132763  000100  000050 			BITB	#100,50(R3)
000032	001460 					BEQ	4$
000034	012702  000004 				MOV	#4,R2				;					1516
000040	060102 					ADD	R1,R2
000042	005000 					CLR	R0				;					1510
000044	151200 					BISB	(R2),R0
000046	006300 					ASL	R0
000050	066007  000266'				ADD	P.AAD(R0),PC			; Case dispatch
000054	016600  000012 			1$:	MOV	12(SP),R0			; CURRENT.GNDB,*			1522
000060	062700  000004 				ADD	#4,R0
000064	105710 					TSTB	(R0)
000066	001042 					BNE	4$
000070	126062  000001  000001 			CMPB	1(R0),1(R2)			;					1524
000076	001036 					BNE	4$
000100	000433 					BR	3$
000102	016600  000012 			2$:	MOV	12(SP),R0			; CURRENT.GNDB,*			1535
000106	126027  000004  000001 			CMPB	4(R0),#1
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  67
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (17)

000114	001027 					BNE	4$
000116	126062  000005  000001 			CMPB	5(R0),1(R2)			;					1537
000124	001023 					BNE	4$
000126	016046  000006 				MOV	6(R0),-(SP)			;					1540
000132	012746  000010 				MOV	#10,-(SP)			;					1539
000136	060016 					ADD	R0,(SP)
000140	016146  000006 				MOV	6(R1),-(SP)			;					1540
000144	010146 					MOV	R1,-(SP)
000146	062716  000010 				ADD	#10,(SP)
000152	005046 					CLR	-(SP)
000154	004767  000000G				JSR	PC,BL$EQL
000160	062706  000012 				ADD	#12,SP
000164	006000 					ROR	R0
000166	103002 					BCC	4$
000170	010300 				3$:	MOV	R3,R0				;					1539
000172	000207 					RTS	PC
000174	005000 				4$:	CLR	R0				;					1510
000176	000207 					RTS	PC				;					1495
; Routine Size:  64 words,	Routine Base:  $CODE$ + 6502
; Maximum stack depth per invocation:  10 words


000266						.PSECT	$PLIT$,  RO ,  D  

					P.AAD:						; CASE Table for TQ.SCAN+0050		1510
000266	000000 					.WORD	0				; [1$]
000270	000026 					.WORD	26				; [2$]
000272	000120 					.WORD	120				; [4$]



;	  1556	!
;	  1557	! Routine to find LINK_INFO block via LUN
;	  1558	!
;	  1559	    routine IQ_LUN_SCAN (LINK_INFO, LUN) =
;	  1560		begin
;	  1561	
;	  1562		map
;	  1563		    LINK_INFO : ref LINK_INFO_BLOCK;
;	  1564	
;	  1565		if .LINK_INFO [LINK_LUN] eql .LUN then .LINK_INFO else 0
;	  1566	
;	  1567		end;					! of IQ_LUN_SCAN


						.SBTTL	IQ.LUN.SCAN
006702						.PSECT	$CODE$,  RO 

000000	016600  000004 			IQ.LUN.SCAN:
						MOV	4(SP),R0			; LINK.INFO,*				1565
000004	026066  000010  000002 			CMP	10(R0),2(SP)			; *,LUN
000012	001401 					BEQ	1$
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  68
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (17)

000014	005000 					CLR	R0
000016	000207 				1$:	RTS	PC				;					1559
; Routine Size:  8 words,	Routine Base:  $CODE$ + 6702
; Maximum stack depth per invocation:  0 words


;	  1568	!
;	  1569	! Main processing of Mailbox Entries
;	  1570	! Get the mailbox entry
;	  1571	!
;	  1572	    dir$ (GND_DIR);
;	  1573	
;	  1574	    if .GND_SB [NETSB$ERR] neq IS$SUC then return;
;	  1575	
;	  1576	!
;	  1577	! Classify request into Connects, Disconnects, and Interrupt Messages. Then
;	  1578	! process accordingly.
;	  1579	!
;	  1580	
;	  1581	    case .GND_SB [NETSB$ERR1] from NT$CON to NT$ABO of
;	  1582		set
;	  1583	
;	  1584		[NT$CON] : 				!Connect Received
;	  1585		    begin
;	  1586	
;	  1587		    if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, GND_BUF, TQ_SCAN)) eql 0
;	  1588		    then
;	  1589			begin				! No waiting TARGET found, Reject Connection
;	  1590			dir$ (REJ_DIR);
;	  1591			end
;	  1592		    else
;	  1593			begin				! We have a waiting TARGET
;	  1594	
;	  1595			if ASSIGN_A_LUN (.LINK_INFO) lss 0
;	  1596			then
;	  1597			    dir$ (REJ_DIR)
;	  1598			else
;	  1599			    begin
;	  1600	
;	  1601			    bind
;	  1602				LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK,
;	  1603				NETSTS = LINK_INFO [LINK_LINK_SB] : $NETWORK_STATUS_BLOCK;
;	  1604	
;	  1605			    NETSTS [NETSB$ERROR] = IS$SUC;
;	  1606			    ch$copy (minu (.GND_SB [NETSB$CNT], RSX$_GNDB_ALLOCATION), ch$ptr (GND_BUF), 0,
;	  1607				RSX$_GNDB_ALLOCATION, ch$ptr (LINK_INFO [LINK_GNDB]));
;	  1608			    LNKSTS [LSB_CIWAIT] = 0;
;	  1609			    DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  1610			    end;
;	  1611	
;	  1612			end;
;	  1613	
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  69
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (17)

;	  1614		    end;
;	  1615	
;	  1616		[NT$INT] : 				!Interrupt Message Received
;	  1617		    return;				!Ignore for now
;	  1618	
;	  1619		[NT$DSC, NT$ABT] : 			!Disconnect or Abort Received
;	  1620		    begin
;	  1621	
;	  1622		    if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .GND_SB [NETSB$CNT1], IQ_LUN_SCAN)) eql 0
;	  1623		    then
;	  1624			return
;	  1625		    else
;	  1626			begin
;	  1627	
;	  1628			bind
;	  1629			    LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  1630	
;	  1631			LINK_INFO [LINK_OPTI_LENGTH] = .GND_SB [NETSB$CNT];
;	  1632			ch$copy (minu (.GND_SB [NETSB$CNT], 16), ch$ptr (GND_BUF), 0, 16,
;	  1633			    ch$ptr (LINK_INFO [LINK_OPTI_DATA]));
;	  1634			LNKSTS [LSB_CONNECTED] = 0;
;	  1635			DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  1636			end;
;	  1637	
;	  1638		    end;
;	  1639	
;	  1640		[NT$ABO] :
;	  1641		    begin
;	  1642	
;	  1643		    if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .GND_SB [NETSB$CNT1], IQ_LUN_SCAN)) eql 0
;	  1644		    then
;	  1645			return
;	  1646		    else
;	  1647			begin
;	  1648	
;	  1649			bind
;	  1650			    LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
;	  1651	
;	  1652			LNKSTS [LSB_REASON] = .GND_SB [NETSB$CNT];
;	  1653			LINK_INFO [LINK_OPTI_LENGTH] = 0;
;	  1654			LNKSTS [LSB_CONNECTED] = 0;
;	  1655			DECLARE_NETWORK_EVENT (.LINK_INFO);
;	  1656			end;
;	  1657	
;	  1658		    end;
;	  1659	
;	  1660		[INRANGE, OUTRANGE] : 			!Erroneous code
;	  1661		    return;
;	  1662		tes;
;	  1663	
;	  1664	!
;	  1665	    end;					! of PROCESS_MAILBOX_ENTRY
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  70
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (17)



						.SBTTL	PROCESS.MAILBOX.ENTRY
000000	010146 				PROCESS.MAILBOX.ENTRY:
						MOV	R1,-(SP)			;					1463
000002	012746  000324'				MOV	#GND.DIR,-(SP)			;					1572
000006	104377 					EMT	377
000010	126727  000130' 000001 			CMPB	GND.SB,#1			;					1574
000016	001151 					BNE	9$
000020	116700  000131'				MOVB	GND.SB+1,R0			;					1581
000024	005300 					DEC	R0
000026	020027  000004 				CMP	R0,#4
000032	101175 					BHI	11$
000034	006300 					ASL	R0
000036	066007  000274'				ADD	P.AAE(R0),PC			; Case dispatch
000042	000571 				1$:	BR	11$				;					1661
000044	012746  000014'			2$:	MOV	#INFO.QUEUE,-(SP)		;					1587
000050	012746  000142'				MOV	#GND.BUF,-(SP)
000054	012746  006502'				MOV	#TQ.SCAN,-(SP)
000060	004767  000000G				JSR	PC,UQ.SCAN
000064	062706  000006 				ADD	#6,SP
000070	010001 					MOV	R0,R1				; *,LINK.INFO
000072	001406 					BEQ	3$				;					1590
000074	010146 					MOV	R1,-(SP)			; LINK.INFO,*				1595
000076	004767  000000V				JSR	PC,ASSIGN.A.LUN
000102	005726 					TST	(SP)+
000104	005700 					TST	R0
000106	002004 					BGE	4$
000110	012746  000354'			3$:	MOV	#REJ.DIR,-(SP)			;					1597
000114	104377 					EMT	377
000116	000543 					BR	11$				;					1595
000120	012761  000001  000014 		4$:	MOV	#1,14(R1)			; *,*(LINK.INFO)			1605
000126	005046 					CLR	-(SP)				;					1606
000130	116716  000132'				MOVB	GND.SB+2,(SP)
000134	021627  000162 				CMP	(SP),#162
000140	101402 					BLOS	5$
000142	012716  000162 				MOV	#162,(SP)
000146	012746  000142'			5$:	MOV	#GND.BUF,-(SP)			;					1607
000152	005046 					CLR	-(SP)
000154	012746  000162 				MOV	#162,-(SP)
000160	010146 					MOV	R1,-(SP)			; LINK.INFO,*
000162	062716  000054 				ADD	#54,(SP)
000166	012746  177773 				MOV	#-5,-(SP)
000172	004767  000000G				JSR	PC,BL$CPY
000176	142761  000100  000050 			BICB	#100,50(R1)			; *,*(LINK.INFO)			1608
000204	000451 					BR	8$				;					1609
000206	012746  000014'			6$:	MOV	#INFO.QUEUE,-(SP)		;					1622
000212	005046 					CLR	-(SP)
000214	116716  000133'				MOVB	GND.SB+3,(SP)
000220	012746  006702'				MOV	#IQ.LUN.SCAN,-(SP)
000224	004767  000000G				JSR	PC,UQ.SCAN
000230	062706  000006 				ADD	#6,SP
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  71
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (17)

000234	010001 					MOV	R0,R1				; *,LINK.INFO
000236	001473 					BEQ	11$				;					1624
000240	016761  000132' 000214 			MOV	GND.SB+2,214(R1)		; *,*(LINK.INFO)			1631
000246	105061  000215 				CLRB	215(R1)				; *(LINK.INFO)
000252	005046 					CLR	-(SP)				;					1632
000254	116716  000132'				MOVB	GND.SB+2,(SP)
000260	021627  000020 				CMP	(SP),#20
000264	101402 					BLOS	7$
000266	012716  000020 				MOV	#20,(SP)
000272	012746  000142'			7$:	MOV	#GND.BUF,-(SP)			;					1633
000276	005046 					CLR	-(SP)
000300	012746  000020 				MOV	#20,-(SP)
000304	010146 					MOV	R1,-(SP)			; LINK.INFO,*
000306	062716  000216 				ADD	#216,(SP)
000312	012746  177773 				MOV	#-5,-(SP)
000316	004767  000000G				JSR	PC,BL$CPY
000322	042761  000400  000050 			BIC	#400,50(R1)			; *,*(LINK.INFO)			1634
000330	010116 				8$:	MOV	R1,(SP)				; LINK.INFO,*				1635
000332	004767  177152 				JSR	PC,DECLARE.NETWORK.EVENT
000336	062706  000014 				ADD	#14,SP				;					1626
000342	000431 				9$:	BR	11$				;					1581
000344	012746  000014'			10$:	MOV	#INFO.QUEUE,-(SP)		;					1643
000350	005046 					CLR	-(SP)
000352	116716  000133'				MOVB	GND.SB+3,(SP)
000356	012746  006702'				MOV	#IQ.LUN.SCAN,-(SP)
000362	004767  000000G				JSR	PC,UQ.SCAN
000366	062706  000006 				ADD	#6,SP
000372	010001 					MOV	R0,R1				; *,LINK.INFO
000374	001414 					BEQ	11$				;					1645
000376	116761  000132' 000052 			MOVB	GND.SB+2,52(R1)			; *,*(LINK.INFO)			1652
000404	005061  000214 				CLR	214(R1)				; *(LINK.INFO)				1653
000410	042761  000400  000050 			BIC	#400,50(R1)			; *,*(LINK.INFO)			1654
000416	010146 					MOV	R1,-(SP)			; LINK.INFO,*				1655
000420	004767  177064 				JSR	PC,DECLARE.NETWORK.EVENT
000424	005726 					TST	(SP)+				;					1647
000426	012601 				11$:	MOV	(SP)+,R1			;					1463
000430	000207 					RTS	PC
; Routine Size:  141 words,	Routine Base:  $CODE$ + 6722
; Maximum stack depth per invocation:  8 words


000274						.PSECT	$PLIT$,  RO ,  D  

					P.AAE:						; CASE Table for PROCESS.MAILBOX+0036	1581
000274	000002 					.WORD	2				; [2$]
000276	000364 					.WORD	364				; [11$]
000300	000144 					.WORD	144				; [6$]
000302	000144 					.WORD	144				; [6$]
000304	000302 					.WORD	302				; [10$]
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  72
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (18)

;	  1666	routine IQ_SCAN (LINK_INFO, LINK_IDENTIFIER) =
;	  1667	
;	  1668	!++
;	  1669	! Functional description:
;	  1670	!
;	  1671	!	This routine is called when scanning the INFO_QUEUE by
;	  1672	!	NMU$QUEUE_SCAN to find the entry associated with a
;	  1673	!	particular link identifier.
;	  1674	!
;	  1675	! Formal parameters:
;	  1676	!
;	  1677	!	.LINK_INFO	  address of current entry on the info queue.
;	  1678	!	.LINK_IDENTIFIER  identifier of link to find data base for.
;	  1679	!
;	  1680	! Routine value:
;	  1681	!
;	  1682	!	Address of link info block if matched (0 otherwise).
;	  1683	!
;	  1684	! Side effects: none
;	  1685	!
;	  1686	!--
;	  1687	
;	  1688	    begin
;	  1689	
;	  1690	    map
;	  1691		LINK_INFO : ref LINK_INFO_BLOCK;
;	  1692	
;	  1693	    if .LINK_INFO [LINK_ID] eql .LINK_IDENTIFIER then .LINK_INFO else 0
;	  1694	
;	  1695	    end;					! End of IQ_SCAN


						.SBTTL	IQ.SCAN
007354						.PSECT	$CODE$,  RO 

000000	016600  000004 			IQ.SCAN:MOV	4(SP),R0			; LINK.INFO,*				1693
000004	026066  000006  000002 			CMP	6(R0),2(SP)			; *,LINK.IDENTIFIER
000012	001401 					BEQ	1$
000014	005000 					CLR	R0
000016	000207 				1$:	RTS	PC				;					1666
; Routine Size:  8 words,	Routine Base:  $CODE$ + 7354
; Maximum stack depth per invocation:  0 words
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  73
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (19)

;	  1696	routine ASSIGN_A_LUN (LINK_INFO) =
;	  1697	
;	  1698	!++
;	  1699	! Functional description:
;	  1700	!
;	  1701	!	This routine assigns a LUN for usage by a link. It assigns the
;	  1702	!	LUN based upon the TYPE or LINK (e.g. SOURCE_LINK or TARGET_LINK).
;	  1703	!
;	  1704	! Formal parameters:
;	  1705	!
;	  1706	!	LINK_INFO = LINK_INFO_BLOCK for this link
;	  1707	!
;	  1708	! Routine value:
;	  1709	!
;	  1710	!	gtr 0 - the LUN number assigned
;	  1711	!	lss 0 - No LUN available
;	  1712	!
;	  1713	! Side effects:
;	  1714	!
;	  1715	!	*******Warning*******
;	  1716	!	SOURCE_LINK LUNs are assigned at non-interrupt level
;	  1717	!	TARGET_LINK LUNs are assigned at interrupt level
;	  1718	!
;	  1719	!--
;	  1720	
;	  1721	    begin
;	  1722	
;	  1723	    map
;	  1724		LINK_INFO : ref LINK_INFO_BLOCK;
;	  1725	
;	  1726	    local
;	  1727		LUN_ADR : ref vector,
;	  1728		LUN_CNT,
;	  1729		LUN_NUMBER;
;	  1730	
;	  1731	!
;	  1732	! Determine search algorithm based upon type
;	  1733	!
;	  1734	
;	  1735	    LUN_NUMBER = NMU$_NETWORK_LUN + 1;
;	  1736	    LUN_CNT = NMU$_NETWORK_MAX_INCOMING;
;	  1737	    LUN_ADR = NETWORK_LUNS [1];
;	  1738	
;	  1739	    if .LINK_INFO [LINK_TYPE] eql SOURCE_LINK
;	  1740	    then
;	  1741		begin
;	  1742	        LUN_NUMBER = NMU$_NETWORK_LUN + NMU$_NETWORK_MAX_INCOMING + 1;
;	  1743	        LUN_CNT = NMU$_NETWORK_MAX_LUNS - NMU$_NETWORK_MAX_INCOMING;
;	  1744	        LUN_ADR = NETWORK_LUNS [NMU$_NETWORK_MAX_INCOMING + 1];
;	  1745	        end;
;	  1746	
;	  1747	    do
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  74
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (19)

;	  1748	        begin
;	  1749	
;	  1750	        if
;	  1751	            begin
;	  1752	            local VAL;
;	  1753	            VAL = .LUN_ADR [0];
;	  1754	            LUN_ADR = LUN_ADR [1];  %(force auto-increment)%
;	  1755	            .VAL
;	  1756	            end eql 0
;	  1757	        then
;	  1758	            begin
;	  1759	            LUN_ADR = LUN_ADR [-1];  %(force auto-decrement)%
;	  1760	            LUN_ADR [0] = .LINK_INFO;
;	  1761	            LINK_INFO [LINK_LUN] = .LUN_NUMBER;
;	  1762	            LINK_INFO [LINK_FLAG] = .LUN_NUMBER;
;	  1763	            return .LUN_NUMBER;
;	  1764	            end;
;	  1765	
;	  1766		LUN_NUMBER = .LUN_NUMBER + 1;
;	  1767		end
;	  1768	    while (LUN_CNT = .LUN_CNT - 1) neq 0;
;	  1769	
;	  1770	    LUN_NUMBER = -1;
;	  1771	    return .LUN_NUMBER
;	  1772	    end;					! of ASSIGN_A_LUN


						.SBTTL	ASSIGN.A.LUN
000000	004167  000000G			ASSIGN.A.LUN:
						JSR	R1,$SAVE4			;					1696
000004	012701  000006 				MOV	#6,R1				; *,LUN.NUMBER				1735
000010	012703  000003 				MOV	#3,R3				; *,LUN.CNT				1736
000014	012704  000024'				MOV	#NETWORK.LUNS+2,R4		; *,LUN.ADR				1737
000020	016602  000014 				MOV	14(SP),R2			; LINK.INFO,*				1739
000024	026227  000044  000002 			CMP	44(R2),#2
000032	001006 					BNE	1$
000034	012701  000011 				MOV	#11,R1				; *,LUN.NUMBER				1742
000040	012703  000005 				MOV	#5,R3				; *,LUN.CNT				1743
000044	012704  000032'				MOV	#NETWORK.LUNS+10,R4		; *,LUN.ADR				1744
000050	012400 				1$:	MOV	(R4)+,R0			; LUN.ADR,VAL				1753
000052	001006 					BNE	2$				;					1756
000054	010244 					MOV	R2,-(R4)			; *,LUN.ADR				1760
000056	010162  000010 				MOV	R1,10(R2)			; LUN.NUMBER,*				1761
000062	010162  000012 				MOV	R1,12(R2)			; LUN.NUMBER,*				1762
000066	000404 					BR	3$				;					1758
000070	005201 				2$:	INC	R1				; LUN.NUMBER				1766
000072	077312 					SOB	R3,1$				; LUN.CNT,*				1768
000074	012701  177777 				MOV	#-1,R1				; *,LUN.NUMBER				1770
000100	010100 				3$:	MOV	R1,R0				; LUN.NUMBER,*				1721
000102	000207 					RTS	PC				;					1696
; Routine Size:  34 words,	Routine Base:  $CODE$ + 7374
; Maximum stack depth per invocation:  6 words
NMUNET								24-May-1985 13:29:47	TOPS-20 Bliss-16 2A(530)	    Page  75
X01.09								 3-Jan-1983 17:12:34	DNET61:<MCB.NML>NMUNET.B16.1 (19)

;	  1773	end						! End of module NMUNET
;	  1774	
;	  1775	eludom



;					OTS external references
						.GLOBL	$SAVE5, $SAVE4, $SAVE3, $SAVE2
						.GLOBL	BL$FCH, BL$NEQ, BL$EQL, BL$CPY
						.GLOBL	BL$MOV


;					PSECT SUMMARY
;
;	Psect Name			Words	  Attributes
;	 $PLIT$				   99	    RO ,  D  ,  LCL,  REL,  CON
;	 $OWN$				  130	    RW ,  D  ,  LCL,  REL,  CON
;	 $GLOB$				   23	    RW ,  D  ,  LCL,  REL,  CON
;	 $CODE$				 1952	    RO ,  I  ,  LCL,  REL,  CON




;				LIBRARY STATISTICS
;
;					     -------- Symbols --------    Blocks
;	File				     Total    Loaded   Percent      Read
;
;  DNET61:<MCB.NML>NMULIB.L16.1		      2716       268         9         0





;	  1776	! Local Modes:
;	  1777	! Mode:Fundamental
;	  1778	! Comment Start:!
;	  1779	! Comment Column:40
;	  1780	! Comment Rounding:+1
;	  1781	! Auto Save Mode:2
;	  1782	! End:
; Size:		1952 code + 252 data words
; Run Time:	00:28.6
; Elapsed Time:	00:35.8
; Memory Used:	109 pages
; Compilation Complete
ABT$S				1171
ABT_AST				1121*	1171
ACC$S				 779
ACC_AST				 728*	 779
ALUN$S				 323	 330	 334	 335
ASSIGN_A_LUN			 140	 540	1595	1696*
BUFFER				 886	 962	 986	1073
BUFFER_SIZE			 886	 962	 986	1073
CBDSG				 511#	 513
CB_ACCOUNT_BUFFER		 632
CB_ACCOUNT_LENGTH		 537	 633	1379
CB_ACCOUNT			 538	 632	 635	1381
CB_DATA				 548	 549	 553	 636	 639
CB_DATA_BUFFER			 549	 636
CB_DATA_LENGTH			 552	 553	 574	 637	 654	 659
CB_DESCRIPTOR			 492	 530
CB_DESCRIPTOR_LENGTH		 487	 491	 492	 525	 529
CB_HOST				 506	 508	 516	 589	 590
CB_HOST_BUFFER			 589
CB_HOST_LENGTH			 596
CB_OBJECT			 484	 523
CB_PASSWORD			 536	 628	 631	1369
CB_PASSWORD_BUFFER		 628
CB_PASSWORD_LENGTH		 535	 629	1367
CB_REJECT_CODE			 650	 658	 679
CB_TASK				 599	 613	 620
CB_TASK_BUFFER			 599
CB_TASK_LENGTH			 606	 611	 618
CB_USERID			 534	 624	 627	1357
CB_USERID_BUFFER		 624
CB_USERID_LENGTH		 533	 625	1355
CNT				1346	1351#	1355	1357	1363#	1367	1369	1375#	1379	1381
CON$S				 550
CONB				 460#	 507	 517	 522#	 523#	 528#	 529#	 530	 533#	 534	 535#	 536
				 537#	 538
CONB_ACCOUNT			 538
CONB_ACCOUNT_LENGTH		 537	 538
CONB_FORMAT			 522	 528
CONB_NODE_NAME			 507	 517
CONB_OBJECT			 523
CONB_PASSWORD			 536
CONB_PASSWORD_LENGTH		 535	 536
CONB_USER_ID			 534
CONB_USER_LENGTH		 533	 534
CONB_1_LENGTH			 529	 530
CONB_1_TASK_NAME		 530
CONNECT_BLOCK			 395	1343
CONN_BLK			 352	 395	 484	 487	 491	 492	 506	 508	 516	 523	 525	 529
				 530	 533	 534	 535	 536	 537	 538	 548	 549#	 552	 553	 574#
				 589#	 590	 596#	 599#	 606#	 611#	 613	 618#	 620	 624#	 625#	 627
				 628#	 629#	 631	 632#	 633#	 635	 636#	 637#	 639	 650#	 654#	 658#
				 659#	 679	1321	1343	1355	1357	1367	1369	1379	1381
CON_AST				 404*	 550
CURRENT_GNDB			1495	1499	1522	1524	1535	1537	1539
DATA_LEN			 696	 781	 801	 877	1091	1172	1186	1265
DATA_PTR			 696	 781	 801	 877	1091	1172	1186	1265
DECLARE_NETWORK_EVENT		 136	 438	 762	 863	 940	1041	1152	1245	1411*	1609	1635	1655
DIR$				 339	 344	1572	1590	1597
DSC$S				1264
DSC_AST				1215*	1264
EFN$NM				 148#
EFN$NS				 150#
EOM_FLAG			 986	1063
FAIL_TYPE			 160#	 679
GETW				 518
GLNW$				 278
GLN_DIR				 278	 344
GNDB				 461#	 484#	 485#	 490#	 491#	 493	 581#	 593	 595	 598	 601	 611
				 612	 618	 619	 625	 626	 629	 630	 633	 634	 637	 638	1503#
				1516	1524	1537	1540
GNDB_D1_LENGTH			 491	1539	1540
GNDB_D1_TASK_NAME		 493	1539	1540
GNDB_DEST_FORMAT		 485	 490	1516	1522	1535
GNDB_DEST_OBJECT		 484	1524	1537
GNDB_OPTIONAL_DATA		 638
GNDB_OPTIONAL_LENGTH		 637	 638
GNDB_S1_LENGTH			 611	 612
GNDB_S1_TASK_NAME		 612
GNDB_S2_LENGTH			 618	 619
GNDB_S2_TASK_NAME		 619
GNDB_SOURCE_ACCOUNT		 634
GNDB_SOURCE_ACCOUNT_LENGTH	 633	 634
GNDB_SOURCE_FORMAT		 601
GNDB_SOURCE_NODE_NAME		 593	 595	 598
GNDB_SOURCE_PASSWORD_LENGTH	 629	 630
GNDB_SOURCE_PASSWORD		 630
GNDB_SOURCE_TASK_ID		 626
GNDB_SOURCE_TASK_LENGTH		 625	 626
GNDW$				1484
GND_AST				 137	 348	1459*
GND_BUF				1483	1484	1486	1587	1606	1632
GND_DIR				1484	1572
GND_SB				1481	1484	1485	1574	1581	1606	1622	1631	1632	1643	1652
IE$ABO				 672
IE$BAD				 674
IE$NNT				 677
IE$NRJ				 655	 679
IE$RSU				 676
IE$SPC				 675
IE$URJ				 673
INFO_QUEUE			 221	 312	 417	 455	 687	 741	 770	 847	 871	 930	 948	1031
				1049	1134	1160	1177	1228	1253	1270	1305	1587	1622	1643
INSB				 463#	 470#
INTERRUPT_OFF			 770	 871	 948	1049	1160	1253	1305
INTERRUPT_ON			 770	 871	 948	1049	1160	1253	1305
IQ_LUN_SCAN			1559*	1622	1643
IQ_SCAN				 139	 417	 741	 770	 847	 871	 930	 948	1031	1049	1134	1160
				1228	1253	1305	1666*
IS$DAO				 678
IS$SUC				 298	 427	 571	 751	 790	 975	1079	1574	1605
LINK_CONB			 460	 551
LINK_EVENT			 245	 450	1433
LINK_FLAG			1762
LINK_GNDB			 461	 581	 780	 876	1503	1607
LINK_ID				 446	 469	 470	 471	 642	1693
LINK_IDENTIFIER			 696	 770	 790	 801	 871	 886	 948	 986	1049	1091	1160	1186
				1253	1279	1305	1666	1693
LINK_INFO			 398	 411	 417#	 425	 438	 445#	 446#	 450	 451#	 455	 459	 460
				 461	 462	 463	 464	 469	 470	 471	 540	 550	 551	 561	 569
				 575	 580	 581	 642	 651	 686	 687	 688	 723	 735	 741#	 749
				 762	 770#	 771	 776	 777	 779	 780	 782	 829	 841	 847#	 855
				 863	 871#	 872	 875	 876	 878	 912	 924	 930#	 936#	 940	 948#
				 949	 954	 961#	 962	 966	 973	1013	1025	1031#	1037#	1041	1049#
				1050	1055	1070	1072#	1073	1077	1116	1128	1134#	1142	1152	1160#
				1161	1166	1171	1173	1176	1177	1178	1210	1222	1228#	1236	1245
				1253#	1254	1259	1264	1266	1269	1270	1271	1303	1305#	1306	1311
				1411	1431	1433	1490	1495	1500	1503	1504	1526	1542	1559	1563
				1565	1587#	1595	1602	1603	1607	1609	1622#	1629	1631#	1633	1635
				1643#	1650	1653#	1655	1666	1691	1693	1696	1724	1739	1760	1761#
				1762#
LINK_INFO_BLOCK_ALLOCATION	 445	 688	1178	1271
LINK_INFO_BLOCK			 398	 411	 723	 735	 829	 841	 912	 924	1013	1025	1116	1128
				1210	1222	1303	1431	1490	1500	1563	1691	1724
LINK_INPUT_IN_PROGRESS		 936	 961	 966
LINK_IN_SB			 463	 962	 973
LINK_LINK_SB			 462	 550	 569	 777	 779	 875	1171	1264	1603
LINK_LUN			 550	 686	 779	 962	1073	1171	1176	1264	1269	1565	1761
LINK_OPTI_DATA			1633
LINK_OPTI_LENGTH		1631	1653
LINK_OUTPUT_IN_PROGRESS		1037	1072	1077
LINK_OUT_SB			 464	1070	1073
LINK_QUEUE			 455
LINK_STATUS			 242	 425	 459	 580	 749	 776	 855	 954	1055	1142	1166	1236
				1259	1311	1504	1602	1629	1650
LINK_STATUS_BLOCK		 242	 425	 459	 580	 749	 776	 855	 954	1055	1142	1166	1236
				1259	1504	1602	1629	1650
LINK_TYPE			 451	 575	 651	1739
LNKINFO				 238	 242	 245
LNKIOSB				 973#	 975
LNKSB				 462#	 469#
LNKSTS				 242#	 425#	 430#	 431#	 434#	 459#	 475#	 500#	 501#	 502#	 545#	 546#
				 547#	 561	 580#	 588#	 749#	 754#	 755#	 758#	 776#	 782	 784	 855#
				 857#	 858#	 859#	 878	 954#	 956	1055#	1057	1142#	1144#	1145#	1146#
				1147#	1148#	1166#	1168	1173	1236#	1238#	1239#	1240#	1241#	1259#	1261
				1266	1311#	1313	1504#	1510	1602#	1608#	1629#	1634#	1650#	1652#	1654#
LOCAL_NODE			 219	 279	1407
LSB_ABORTED			1144	1173
LSB_CCWAIT			 434	 502	 545	 561	 588	 758	 782	 859	 878	1146	1239
LSB_CIWAIT			 501	 546	 561	1147	1240	1510	1608
LSB_CLOSED			 431	 755	 857	1145	1168	1238	1261	1266
LSB_CONNECTED			 430	 475	 754	 784	 858	 956	1057	1148	1241	1634	1654
LSB_REASON			1652
LSB_SERVER			 500	 547	1510
LUN				1559	1565
LUN$NM				 147#
LUN$NS				 149#
LUN_ADR				1727	1737#	1744#	1753	1754#	1759#	1760#
LUN_CNT				1728	1736#	1743#	1768#
LUN_NUMBER			 321	 323	 324	1729	1735#	1742#	1761	1762	1763	1766#	1770#	1771
NETSB$CNT			 574	 654	 658	1606	1631	1632	1652
NETSB$CNT1			1622	1643
NETSB$ERR			 298	 427	 571	 655	 670	 751	 790	 975	1079	1574
NETSB$ERR1			1581
NETSB$ERROR			1605
NETSB$IO_COUNT			 291	 975
NETSB$LINK_ID			 417	 469	 470	 471	 741	 847	 930	1031	1134	1228
NETSTS				 569#	 571	 574	 654	 655	 658	 670	 777#	 790	1070#	1079	1603#
				1605#
NETWORK_INTERRUPT_ROUTINE	 284#	 404#	 728#	 834#	 917#	1018#	1121#	1215#
NETWORK_LUNS			 222	 324#	 686#	1176#	1269#	1737	1744
NETWORK_STATUS			 276	 277	 278	 348
NETWORK_STATUS_BLOCK		 288	 291	 298	 408	 417	 427	 732	 741	 751	 838	 847	 921
				 930	1022	1031	1125	1134	1219	1228
NEXT_LINK_ID			 220	 316#	 446#	 448#
NMU$MEMORY_GET			 445
NMU$MEMORY_MANAGER		 254
NMU$MEMORY_RELEASE		 688	1178	1271
NMU$NETWORK_ABORT		1091#
NMU$NETWORK_ACCEPT		 696#
NMU$NETWORK_CLOSE		1186#
NMU$NETWORK_INITIALIZE		 257#
NMU$NETWORK_LOCAL		1388#
NMU$NETWORK_OPEN		 352#
NMU$NETWORK_READ		 886#
NMU$NETWORK_REJECT		 790	 801#
NMU$NETWORK_STATUS		1279#
NMU$NETWORK_UTILITIES		 129
NMU$NETWORK_VALIDATE		1321#
NMU$NETWORK_WRITE		 986#
NMU$QUEUE_EXTRACT		 687	1177	1270
NMU$QUEUE_INSERT		 455
NMU$QUEUE_MANAGER		 253*
NMU$QUEUE_RESET			 312
NMU$QUEUE_SCAN			 417	 741	 770	 847	 871	 930	 948	1031	1049	1134	1160	1228
				1253	1305	1587	1622	1643
NMU$SCHED_EVENT			 450
NMU$SCHED_FLAG			1433
NMU$SCHED_MANAGER		 255
NMU$SCHED_WAIT			 245
NMU$_DL0_DEVICE_LUN		 334
NMU$_DL1_DEVICE_LUN		 335
NMU$_NETWORK_FLAG		 150	 277	 278	1484	1485
NMU$_NETWORK_LUN		 149	 277	 278	 321	 324	 348	 686	 875	1176	1269	1484	1485
				1735	1742
NMU$_NETWORK_MAX_INCOMING	1736	1742	1743	1744
NMU$_NETWORK_MAX_LUNS		 222	 277	 321	1743
NMU$_NM_DEVICE_FLAG		 148
NMU$_NM_DEVICE_LUN		 147	 330
NMUNET				  56#
NODE_ID_LENGTH			 157#	 219	 279
NT$ABO				1581	1640
NT$ABT				1619
NT$CON				1581	1584
NT$DSC				1619
NT$INT				1616
NUMBER_OF_ENTRIES		 291#	 301	 304#
OPNW$				 277
OPN_DIR				 277	 339
OUTSB				 464#	 471#
PROCESS_MAILBOX_ENTRY		 138	 303	1461	1463*
PROCESS_WAKE			1434
PTR				1347	1349#	1351	1357	1361#	1363	1369	1373#	1375	1381
PUTB				 591	 592	 597
Q_HEADER			 221
REASON				 801	1091
REC$S				 962
REC_AST				 917*	 962
REJ$S				 875
REJW$				1485
REJ_AST				 834*	 875
REJ_BUF				1482	1487
REJ_DIR				1485	1590	1597
RESPONSE_CODE			 353	 669
RESPONSE_LEN			 353	 669#
RESPONSE_PTR			 352	 667	 669
RETRY_CODE			 190#
RSX$_CONB_ALLOCATION		 552
RSX$_CONB_BLOCK			 460
RSX$_GNDB_ALLOCATION		 781	 877	1484	1486	1606	1607
RSX$_GNDB_BLOCK			 461	 581	1483	1499	1503
SND$S				1073
SND_AST				1018*	1073
SOURCE_LINK			 651	1739
SPA$S				 348
SPA_AST				 284*	 348
STS_BLK				1279	1313#
TARGET_LINK			 477	 575
TEMP_LEN			 586	 594#	 596	 597	 598
TEMP_PTR			 399	 514	 516#	 518	 520	 548#	 552	 584	 593#	 594
TEMP_PTR1			 585	 590#	 591	 592	 597	 598
TQ_SCAN				1495*	1587
TYPE				 352	 451	 477
UN$ACCOUNT			 227	1373
UN$PASSWORD			 226	1361
UN$USER				 225	1349
VAL				1752	1753#	1755
VANILLA_INTERRUPT_LINKAGE	 137
VANILLA_INTERRUPT_ROUTINE	1459#
WAIT_FOR_NETWORK		 238#	 561	 782	 878	 966	1077	1173	1266
WHILE_COND			 238	 244
$CBDSG				 513*	 517
$FALSE				 542	 792	 797	 882	1059	1065	1079	1087	1182	1275	1317
$NETWORK_STATUS_BLOCK		 276	 288	 408	 462	 463	 464	 569	 732	 777	 838	 921	 973
				1022	1070	1125	1219	1481	1603
$RESPONSE			 669
$TRUE				 450	 786	 879	1079	1179	1272	1314