Google
 

Trailing-Edge - PDP-10 Archives - TOPS-20_V6.1_DECnetSrc_7-23-85 - mcb/nsp/ns1.lst
There is 1 other file named ns1.lst in the archive. Click here to see a list.
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page   1
								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (1)

;	  0001	Module NS1 (	!
;	  0002			ident = 'X01080'
;	  0003			) =
;	  0004	begin
;	  0005	
;	  0006	!
;	  0007	!                    COPYRIGHT (c) 1980, 1981, 1982
;	  0008	!                    DIGITAL EQUIPMENT CORPORATION
;	  0009	!                        Maynard, Massachusetts
;	  0010	!
;	  0011	!     This software is furnished under a license and may  be  used
;	  0012	!     and copied only in accordance with the terms of such license
;	  0013	!     and with the inclusion of the above copyright notice.   This
;	  0014	!     software  or any other copies thereof may not be provided or
;	  0015	!     otherwise made available to any other person.  No  title  to
;	  0016	!     and ownership of the software is hereby transferred.
;	  0017	!
;	  0018	!     The information  in  this  software  is  subject  to  change
;	  0019	!     without  notice  and should not be construed as a commitment
;	  0020	!     by DIGITAL EQUIPMENT CORPORATION.
;	  0021	!
;	  0022	!     DIGITAL assumes no responsibility for the use or reliability
;	  0023	!     of  its  software  on  equipment  which  is  not supplied by
;	  0024	!     DIGITAL.
;	  0025	!
;	  0026	
;	  0027	!++
;	  0028	!
;	  0029	! FACILITY:		Network Services Layer
;	  0030	!
;	  0031	! ABSTRACT:	This module contains all the routines for transmitting
;	  0032	!		and receiving Data and Other Data messages.
;	  0033	!
;	  0034	!
;	  0035	! ENVIRONMENT:		MCB
;	  0036	!
;	  0037	! AUTHOR:	Ron Platukis	CREATION DATE:	1-july-80
;	  0038	!
;	  0039	! MODIFIED BY:
;	  0040	!
;	  0041	!	Alan Peckham,Ron Platukis  22-Oct-80
;	  0042	! 01	- Move NDB bind in CCB_RETRN.
;	  0043	!	  Clear C_STS before sending CCB to XPT in XPT_XMIT.
;	  0044	!	  Set C_PRM4 to PDB address or -1 if Reserve Port in XPT_XMIT.
;	  0045	!
;	  0046	!	Ron Platukis  23-oct-80
;	  0047	! 02	- Set PORTstate negative if  Reserved Port.
;	  0048	!
;	  0049	! 03	Ron Platukis  1-dec-80
;	  0050	!	-Add CMP_LSS and CMP_LEQ macros to perform 12-bit arith.
;	  0051	!
;	  0052	! 04	Ron Platukis  13-jan-81
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page   2
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (1)

;	  0053	!	-Change linkages to BLISS, add access for NSP Data Base address.
;	  0054	!
;	  0055	! 05	Ron Platukis  20-jan-81
;	  0056	!	-Add Network Management event logging code.
;	  0057	!
;	  0058	! 06	Ron Platukis 24-feb-81
;	  0059	!	-fix bug in SND_DATA to set ACK_queue to chain word of CCB when
;	  0060	!	dequeueing.
;	  0061	!
;	  0062	! 07	Ron Platukis 15-sept-81
;	  0063	!	-in routine SEG_BLD set FLAGseg to true if it is false and the
;	  0064	!	ACK_queue is empty.
;	  0065	!
;	  0066	! 08	Ron Platukis 4-february-82
;	  0067	!	-in routine PROC_DATA_ACK set FLAGseg to true if ACKrcv_dat equals
;	  0068	!	NUMsent.
;	  0069	!--
;	  0070	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page   3
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (2)

;	  0071	!
;	  0072	! INCLUDE FILES:
;	  0073	!
;	  0074	library
;	  0075		'mcb:xportx';
;	  0076	library
;	  0077		'mcb:mcblib';
;	  0078	library
;	  0079		'mcb:nmxlib';
;	  0080	require
;	  0081		'nspbli:nspdata';
;	  0567	require
;	  0568		'nspbli:nsinfo';
;	  0680	
;	  0681	
;	  0682	!
;	  0683	! TABLE OF CONTENTS:
;	  0684	!
;	  0685	forward routine
;	  0686		ACK_BLD:    novalue,		!format an ACK
;	  0687		ACK_DATA_SND: ,			!send a data ack
;	  0688		ACK_OTH_RCV:   novalue,		!process Other Ack
;	  0689		ACK_RCV:   novalue,		!process Data Ack
;	  0690		ACK_OTH_SND: ,			!send Other ACK
;	  0691		CCB_GET:,
;	  0692		CCB_HDR_GET:,
;	  0693		CCB_RETRN: novalue,
;	  0694		DADD: novalue,
;	  0695		DATA_RECVD: novalue,
;	  0696		DATA_TO_SND: ,			!check if data to send
;	  0697		DRQ_BLD:    novalue,		!format a Data Req
;	  0698		DRQ_RCV:   novalue,		!process Data Request
;	  0699		D_RCV:   novalue,		!process a Segment
;	  0700		D_REQ_TO_SND: ,			!check if data req to send
;	  0701		IRQ_BLD:    novalue,		!format an INT Req
;	  0702		IRQ_RCV:   novalue,		!process Interrupt Request
;	  0703		INTERRUPT_TO_SND: ,		!check if int to send
;	  0704		INTR_REQ_TO_SND: ,		!check if int req to send
;	  0705		INT_BLD:    novalue,		!format an INT msg
;	  0706		INT_RCV:   novalue,		!process Interrupt 
;	  0707		INT_RECVD: novalue,
;	  0708		LS_RCV:   novalue,		!dispatch on request type
;	  0709		MSG_RCV: CALL$ novalue,		!dispatch on NSP message type
;	  0710		ONCE_A_SECOND: CALL$ novalue,	!Resource revovery routine
;	  0711		OTHACK_BLD:     novalue,	!format an OTH ACK
;	  0712		PROC_DATA_ACK:   novalue,	!more process Data Ack
;	  0713		PROC_OTH_ACK:   novalue,	!more process Other Ack
;	  0714		REAS_DATA:   novalue,		!reassembly routine
;	  0715		SEG_BLD:    novalue,		!format a Data Seg
;	  0716		SND_DATA: ,			!send a data segment
;	  0717		SND_MSG:  CALL$  novalue,	!send a message
;	  0718		SND_INTERRUPT: CALL$,		!send int msg
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page   4
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (2)

;	  0719		SND_INTR_REQ: ,			!send int req msg
;	  0720		SND_ONE_DATA: CALL$ novalue,	!send one segment only
;	  0721		SND_REQ_DATA: ,			!send data req msg
;	  0722		TRICKLE: CALL$,			!send only one msg and quit
;	  0723		UPDATE_DELAY:  novalue,		!update round trip delay
;	  0724		XPT_XMIT:    novalue;		!queue CCB to XPT
;	  0725	!
;	  0726	! macros:
;	  0727	!
;	  0728	
;	  0729	!
;	  0730	! equated symbols:
;	  0731	!
;	  0732	
;	  0733	!
;	  0734	! own storage:
;	  0735	!
;	  0736		$MCB_PROCESS( name = NS1)
;	  0737	!
;	  0738	! external references:
;	  0739	!
;	  0740	external
;	  0741		%name('.crdat'): vector[2],
;	  0742		$DSPCR;
;	  0743	
;	  0744		bind DB = %name('.crdat')[1]: ref block field(NSP_fields);
;	  0745	
;	  0746	
;	  0747	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page   5
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (3)

;	  0748	routine ACK_BLD ( CCB, PDB) :  novalue =	!
;	  0749	
;	  0750	!++
;	  0751	! FUNCTIONAL DESCRIPTION:
;	  0752	!	This routine formats an NSP Data Acknowledgement message and 
;	  0753	!	queues it to Transport.
;	  0754	!
;	  0755	! FORMAL PARAMETERS:
;	  0756	!	PDB = Port Data Base Address
;	  0757	!	CCB = CCB Address
;	  0758	!
;	  0759	! IMPLICIT INPUTS:
;	  0760	!	DB = NSP Data Base Address
;	  0761	!
;	  0762	! IMPLICIT OUTPUTS:
;	  0763	!	None
;	  0764	!
;	  0765	! ROUTINE VALUE:
;	  0766	! COMPLETION CODES:
;	  0767	!	None
;	  0768	!
;	  0769	! SIDE EFFECTS:
;	  0770	!	None
;	  0771	!--
;	  0772	
;	  0773		begin
;	  0774		map CCB: ref block field(C_fields);
;	  0775		map PDB: ref block field(PORT_fields);
;	  0776	
;	  0777		local
;	  0778		PTR;
;	  0779	
;	  0780		PTR = .CCB[C_ADDR];
;	  0781	
;	  0782		ch$wchar_a( FLG_DAT_ACK, PTR);
;	  0783		ch$wchar_a( .PDB[L_rem_addr], PTR);
;	  0784		ch$wchar_a( .PDB[H_rem_addr], PTR);
;	  0785		ch$wchar_a( .PDB[PID], PTR);
;	  0786		ch$wchar_a( .PDB[ADDran], PTR);
;	  0787		PUT2BYTES( .PDB[ACKdat_xmt] + Q_ACK^12 + true^15, PTR);
;	  0788	
;	  0789		CCB[C_CNT] = ch$diff(.PTR, .CCB[C_ADDR]);
;	  0790		PDB[FLAGdat_ack] = false;
;	  0791		XPT_XMIT( .CCB, .PDB)	
;	  0792		end;


						.TITLE	NS1
						.IDENT	/X01080/


000000						.PSECT	......,  D  
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page   6
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (3)

000000	055227 				; HEADER
					U.46:	.RAD50	/NS1/
000002	000403 					.WORD	403
000004	000000 					.WORD	0
000006	000000 					.WORD	0
000010	000000 					.WORD	0
000012	000000G					.WORD	.DSPCR
000014	000000G					.WORD	.DSPCR
000016	000000G					.WORD	.DSPCR
000020	000000G					.WORD	MCB$V0
000022	000000G					.WORD	MCB$V1
000024	140310 					.WORD	140310
000026	143716 					.WORD	143716
000030	001400 					.WORD	1400
000032	000000 					.WORD	0
000034	000000 					.WORD	0
000036	000000 					.WORD	0


						.GLOBL	.DSPCR, MCB$V0, MCB$V1, .CRDAT
						.GLOBL	$DSPCR


	073470 				; SC
					U.1=		    73470
	055210 				; NSP
					U.2=		    55210
	114224 				; XPT
					U.3=		    114224
	114205 				; XPE
					U.4=		    114205
	055227 				; NS1
					U.5=		    55227
	055230 				; NS2
					U.6=		    55230


						.SBTTL	ACK.BLD
000000						.PSECT	$CODE$,  RO 

000000	004167  000000G			; ACK.BLD
					U.7:	JSR	R1,$SAVE4			;					0748
000004	016602  000016 				MOV	16(SP),R2			; CCB,*					0780
000010	016203  000020 				MOV	20(R2),R3			; *,PTR
000014	112723  000004 				MOVB	#4,(R3)+			; *,PTR					0782
000020	016601  000014 				MOV	14(SP),R1			; PDB,*					0783
000024	116123  000006 				MOVB	6(R1),(R3)+			; *,PTR
000030	116123  000007 				MOVB	7(R1),(R3)+			; *,PTR					0784
000034	116123  000004 				MOVB	4(R1),(R3)+			; *,PTR					0785
000040	116123  000005 				MOVB	5(R1),(R3)+			; *,PTR					0786
000044	016100  000030 				MOV	30(R1),R0			; *,TEMP				0787
000050	162700  100000 				SUB	#100000,R0			; *,TEMP
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page   7
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (3)

000054	110023 					MOVB	R0,(R3)+			; TEMP,PTR
000056	010004 					MOV	R0,R4				; TEMP,*
000060	000304 					SWAB	R4
000062	110423 					MOVB	R4,(R3)+			; *,PTR
000064	010362  000022 				MOV	R3,22(R2)			; PTR,*					0789
000070	166262  000020  000022 			SUB	20(R2),22(R2)
000076	042761  020000  000040 			BIC	#20000,40(R1)			;					0790
000104	010246 					MOV	R2,-(SP)			;					0791
000106	010146 					MOV	R1,-(SP)
000110	004767  000000V				JSR	PC,U.45
000114	022626 					CMP	(SP)+,(SP)+			;					0773
000116	000207 					RTS	PC				;					0748

; Routine Size:  40 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  8 words


;	  0793	
;	  0794	
;	  0795	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page   8
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (4)

;	  0796	routine ACK_DATA_SND ( PDB) : =	!
;	  0797	
;	  0798	!++
;	  0799	! FUNCTIONAL DESCRIPTION:
;	  0800	!	This routine transmits a Data Acknowledgement message.
;	  0801	!
;	  0802	! FORMAL PARAMETERS:
;	  0803	!	PDB = Port Data Base Address
;	  0804	!
;	  0805	! IMPLICIT INPUTS:
;	  0806	!	DB = NSP Data Base Address
;	  0807	!
;	  0808	! IMPLICIT OUTPUTS:
;	  0809	!	None
;	  0810	!
;	  0811	! ROUTINE VALUE:
;	  0812	! COMPLETION CODES:
;	  0813	!	None
;	  0814	!
;	  0815	! SIDE EFFECTS:
;	  0816	!	None
;	  0817	!--
;	  0818	
;	  0819		begin
;	  0820		local
;	  0821		CCB: ref block field(C_fields);
;	  0822	
;	  0823		If CCB_HDR_GET( 0, CCB, .PDB)
;	  0824		Then
;	  0825			begin
;	  0826			ACK_BLD( .CCB, .PDB);
;	  0827			return true
;	  0828			end;
;	  0829		return false
;	  0830	
;	  0831		end;


						.SBTTL	ACK.DATA.SND
000000	005746 				; ACK.DATA.SND
					U.8:	TST	-(SP)				;					0796
000002	005046 					CLR	-(SP)				;					0823
000004	012746  000004 				MOV	#4,-(SP)
000010	060616 					ADD	SP,(SP)				; CCB,*
000012	016646  000010 				MOV	10(SP),-(SP)			; PDB,*
000016	004767  000000V				JSR	PC,U.13
000022	062706  000006 				ADD	#6,SP
000026	006000 					ROR	R0
000030	103011 					BCC	1$
000032	011646 					MOV	(SP),-(SP)			; CCB,*					0826
000034	016646  000006 				MOV	6(SP),-(SP)			; PDB,*
000040	004767  177614 				JSR	PC,U.7
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page   9
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (4)

000044	022626 					CMP	(SP)+,(SP)+			;					0823
000046	012700  000001 				MOV	#1,R0				;					0825
000052	000401 					BR	2$
000054	005000 				1$:	CLR	R0				;					0819
000056	005726 				2$:	TST	(SP)+				;					0796
000060	000207 					RTS	PC

; Routine Size:  25 words,	Routine Base:  $CODE$ + 0120
; Maximum stack depth per invocation:  5 words


;	  0832	
;	  0833	
;	  0834	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  10
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (5)

;	  0835	routine ACK_OTH_RCV ( CCB, PDB) :  novalue =	!
;	  0836	
;	  0837	!++
;	  0838	! FUNCTIONAL DESCRIPTION:
;	  0839	!	This routine processes a received Other Data Acknowledgement message.
;	  0840	!
;	  0841	! FORMAL PARAMETERS:
;	  0842	!	PDB = Port Data Base Address
;	  0843	!	CCB = CCB Address
;	  0844	!
;	  0845	! IMPLICIT INPUTS:
;	  0846	!	DB = NSP Data Base Address
;	  0847	!
;	  0848	! IMPLICIT OUTPUTS:
;	  0849	!	None
;	  0850	!
;	  0851	! ROUTINE VALUE:
;	  0852	! COMPLETION CODES:
;	  0853	!	None
;	  0854	!
;	  0855	! SIDE EFFECTS:
;	  0856	!	None
;	  0857	!--
;	  0858	
;	  0859		begin
;	  0860		map CCB: ref block field(C_fields);
;	  0861		map PDB: ref block field(PORT_fields);
;	  0862	
;	  0863		PROC_OTH_ACK( .CCB, .PDB);
;	  0864		CCB[C_FNC] = FC_RCE;
;	  0865		LLCRS$( .CCB)
;	  0866		end;


						.GLOBL	$SCHED


						.SBTTL	ACK.OTH.RCV
000000	010446 				; ACK.OTH.RCV
					U.9:	MOV	R4,-(SP)			;					0835
000002	016604  000006 				MOV	6(SP),R4			; CCB,*					0863
000006	010446 					MOV	R4,-(SP)
000010	016646  000006 				MOV	6(SP),-(SP)			; PDB,*
000014	004767  000000V				JSR	PC,U.34
000020	112764  000004  000012 			MOVB	#4,12(R4)			;					0864
000026	004767  000000G				JSR	PC,$SCHED			;					0865
000032	022626 					CMP	(SP)+,(SP)+			;					0859
000034	012604 					MOV	(SP)+,R4			;					0835
000036	000207 					RTS	PC

; Routine Size:  16 words,	Routine Base:  $CODE$ + 0202
; Maximum stack depth per invocation:  4 words
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  11
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (5)

;	  0867	
;	  0868	
;	  0869	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  12
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (6)

;	  0870	routine ACK_OTH_SND ( PDB) : =	!
;	  0871	
;	  0872	!++
;	  0873	! FUNCTIONAL DESCRIPTION:
;	  0874	!	This routine allocates a CCB and passes control to the Other Data
;	  0875	!	Acknowledgement Format routine.
;	  0876	!
;	  0877	! FORMAL PARAMETERS:
;	  0878	!	PDB = Port Data Base Address
;	  0879	!
;	  0880	! IMPLICIT INPUTS:
;	  0881	!	DB = NSP Data Base Address
;	  0882	!
;	  0883	! IMPLICIT OUTPUTS:
;	  0884	!	None
;	  0885	!
;	  0886	! ROUTINE VALUE:
;	  0887	! COMPLETION CODES:
;	  0888	!	None
;	  0889	!
;	  0890	! SIDE EFFECTS:
;	  0891	!	None
;	  0892	!--
;	  0893	
;	  0894		begin
;	  0895	
;	  0896		local
;	  0897		CCB: ref block field(C_fields);
;	  0898	
;	  0899		If CCB_HDR_GET( 0, CCB, .PDB)
;	  0900		Then
;	  0901			begin
;	  0902			OTHACK_BLD( .CCB, .PDB);
;	  0903			return true
;	  0904			end;
;	  0905		return false
;	  0906		End;


						.SBTTL	ACK.OTH.SND
000000	005746 				; ACK.OTH.SND
					U.11:	TST	-(SP)				;					0870
000002	005046 					CLR	-(SP)				;					0899
000004	012746  000004 				MOV	#4,-(SP)
000010	060616 					ADD	SP,(SP)				; CCB,*
000012	016646  000010 				MOV	10(SP),-(SP)			; PDB,*
000016	004767  000000V				JSR	PC,U.13
000022	062706  000006 				ADD	#6,SP
000026	006000 					ROR	R0
000030	103011 					BCC	1$
000032	011646 					MOV	(SP),-(SP)			; CCB,*					0902
000034	016646  000006 				MOV	6(SP),-(SP)			; PDB,*
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  13
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (6)

000040	004767  000000V				JSR	PC,U.32
000044	022626 					CMP	(SP)+,(SP)+			;					0899
000046	012700  000001 				MOV	#1,R0				;					0901
000052	000401 					BR	2$
000054	005000 				1$:	CLR	R0				;					0894
000056	005726 				2$:	TST	(SP)+				;					0870
000060	000207 					RTS	PC

; Routine Size:  25 words,	Routine Base:  $CODE$ + 0242
; Maximum stack depth per invocation:  5 words


;	  0907	
;	  0908	
;	  0909	
;	  0910	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  14
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (7)

;	  0911	routine ACK_RCV ( CCB, PDB) :  novalue =	!
;	  0912	
;	  0913	!++
;	  0914	! FUNCTIONAL DESCRIPTION:
;	  0915	!	This routine processes a received Data Acknowledgement message.
;	  0916	!
;	  0917	! FORMAL PARAMETERS:
;	  0918	!	PDB = Port Data Base Address
;	  0919	!	CCB = CCB Address
;	  0920	!
;	  0921	! IMPLICIT INPUTS:
;	  0922	!	DB = NSP Data Base Address
;	  0923	!
;	  0924	! IMPLICIT OUTPUTS:
;	  0925	!	None
;	  0926	!
;	  0927	! ROUTINE VALUE:
;	  0928	! COMPLETION CODES:
;	  0929	!	None
;	  0930	!
;	  0931	! SIDE EFFECTS:
;	  0932	!	None
;	  0933	!--
;	  0934	
;	  0935		begin
;	  0936		map CCB: ref block field(C_fields);
;	  0937		map PDB: ref block field(PORT_fields);
;	  0938	
;	  0939		PROC_DATA_ACK( .CCB, .PDB);
;	  0940		CCB[C_FNC] = FC_RCE;
;	  0941		LLCRS$( .CCB)
;	  0942		end;


						.SBTTL	ACK.RCV
000000	010446 				; ACK.RCV
					U.10:	MOV	R4,-(SP)			;					0911
000002	016604  000006 				MOV	6(SP),R4			; CCB,*					0939
000006	010446 					MOV	R4,-(SP)
000010	016646  000006 				MOV	6(SP),-(SP)			; PDB,*
000014	004767  000000V				JSR	PC,U.33
000020	112764  000004  000012 			MOVB	#4,12(R4)			;					0940
000026	004767  000000G				JSR	PC,$SCHED			;					0941
000032	022626 					CMP	(SP)+,(SP)+			;					0935
000034	012604 					MOV	(SP)+,R4			;					0911
000036	000207 					RTS	PC

; Routine Size:  16 words,	Routine Base:  $CODE$ + 0324
; Maximum stack depth per invocation:  4 words


;	  0943	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  15
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (7)

;	  0944	
;	  0945	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  16
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (8)

;	  0946	routine CCB_GET (CCB, PDB) =	!
;	  0947	
;	  0948	!++
;	  0949	! FUNCTIONAL DESCRIPTION:
;	  0950	!	This routine allocates a CCB.
;	  0951	!
;	  0952	! FORMAL PARAMETERS:
;	  0953	!	CCB = CCB address
;	  0954	!	PDB = Port Data Base address
;	  0955	!
;	  0956	! IMPLICIT INPUTS:
;	  0957	!	None
;	  0958	!
;	  0959	! IMPLICIT OUTPUTS:
;	  0960	!	None
;	  0961	!
;	  0962	! ROUTINE VALUE:
;	  0963	! COMPLETION CODES:
;	  0964	!	None
;	  0965	!
;	  0966	! SIDE EFFECTS:
;	  0967	!	None
;	  0968	!--
;	  0969	
;	  0970	
;	  0971		begin
;	  0972		map PDB: ref block field(PORT_fields);
;	  0973	
;	  0974		local 
;	  0975		LCCB: ref block field(C_fields);
;	  0976	
;	  0977		If not CCBGT$(LCCB)
;	  0978		Then
;	  0979			return false;
;	  0980		LCCB[C_STK] = 0;
;	  0981		LCCB[C_CHN] = 0;
;	  0982		LCCB[C_BIAS] = 0;
;	  0983		LCCB[C_ADDR] = 0;
;	  0984		LCCB[C_PRM1] = 0;
;	  0985		LCCB[C_PRM2] = 0;
;	  0986		LCCB[C_PRM3] = 0;
;	  0987		LCCB[C_PRM4] = 0;
;	  0988		LCCB[C_PRM5] = 0;
;	  0989	
;	  0990		If .PDB neq -1
;	  0991		Then
;	  0992			PDB[COUNTres] = .PDB[COUNTres] + 1;
;	  0993		.CCB = .LCCB;
;	  0994		return true;
;	  0995		end;
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  17
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (8)

						.GLOBL	$CCBGT


						.SBTTL	CCB.GET
000000	010446 				; CCB.GET
					U.12:	MOV	R4,-(SP)			;					0946
000002	004767  000000G				JSR	PC,$CCBGT			;					0977
000006	103437 					BLO	2$				;					0979
000010	005064  000004 				CLR	4(R4)				; *(LCCB)				0980
000014	005064  000002 				CLR	2(R4)				; *(LCCB)				0981
000020	005064  000016 				CLR	16(R4)				; *(LCCB)				0982
000024	005064  000020 				CLR	20(R4)				; *(LCCB)				0983
000030	005064  000024 				CLR	24(R4)				; *(LCCB)				0984
000034	005064  000026 				CLR	26(R4)				; *(LCCB)				0985
000040	005064  000030 				CLR	30(R4)				; *(LCCB)				0986
000044	005064  000032 				CLR	32(R4)				; *(LCCB)				0987
000050	005064  000034 				CLR	34(R4)				; *(LCCB)				0988
000054	026627  000004  177777 			CMP	4(SP),#-1			; PDB,*					0990
000062	001404 					BEQ	1$
000064	016600  000004 				MOV	4(SP),R0			; PDB,*					0992
000070	005260  000054 				INC	54(R0)
000074	010476  000006 			1$:	MOV	R4,@6(SP)			; LCCB,CCB				0993
000100	012700  000001 				MOV	#1,R0				;					0971
000104	000401 					BR	3$
000106	005000 				2$:	CLR	R0				;					0946
000110	012604 				3$:	MOV	(SP)+,R4
000112	000207 					RTS	PC

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


;	  0996	
;	  0997	
;	  0998	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  18
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (9)

;	  0999	routine CCB_HDR_GET ( CCB, LCCB, PDB ) =	!
;	  1000	
;	  1001	!++
;	  1002	! FUNCTIONAL DESCRIPTION:
;	  1003	!	This routine allocates a CCB and a header buffer from DSR space.
;	  1004	!
;	  1005	! FORMAL PARAMETERS:
;	  1006	!	LCCB = CCB Address to stack
;	  1007	!	PDB = Port Data Base address
;	  1008	!	CCB = CCB address
;	  1009	!
;	  1010	! IMPLICIT INPUTS:
;	  1011	!	none
;	  1012	!
;	  1013	! IMPLICIT OUTPUTS:
;	  1014	!	None
;	  1015	!
;	  1016	! ROUTINE VALUE:
;	  1017	! COMPLETION CODES:
;	  1018	!	None
;	  1019	!
;	  1020	! SIDE EFFECTS:
;	  1021	!	None
;	  1022	!--
;	  1023	
;	  1024	
;	  1025		begin
;	  1026		map CCB: ref block field(C_fields);
;	  1027		map PDB: ref block field(PORT_fields);
;	  1028		map LCCB: ref block field(C_fields);
;	  1029	
;	  1030		If not CCBGT$(.LCCB)
;	  1031		Then
;	  1032			return false;
;	  1033		begin
;	  1034		bind XCCB = .LCCB: ref block field(C_fields);
;	  1035		XCCB[C_STK] = 0;
;	  1036		XCCB[C_CHN] = 0;
;	  1037		XCCB[C_PRM1] = 0;
;	  1038		XCCB[C_PRM2] = 0;
;	  1039		XCCB[C_PRM3] = 0;
;	  1040		XCCB[C_PRM4] = 0;
;	  1041		XCCB[C_PRM5] = 0;
;	  1042		XCCB[C_BIAS] = 0;
;	  1043	
;	  1044		If not $MCB_GET_DSR(hdb_size, XCCB[C_ADDR])
;	  1045		Then
;	  1046			begin
;	  1047			CCBRT$(..LCCB);
;	  1048			return false;
;	  1049			end;
;	  1050		If .CCB neq 0
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  19
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (9)

;	  1051		Then
;	  1052			XCCB[C_STK] = .CCB;
;	  1053		end;
;	  1054	
;	  1055		If .PDB neq -1
;	  1056		Then
;	  1057			PDB[COUNTres] = .PDB[COUNTres] + 1;
;	  1058		return true;
;	  1059		end;


						.GLOBL	$DSRGT, $CCBRT


						.SBTTL	CCB.HDR.GET
000000	004167  000000G			; CCB.HDR.GET
					U.13:	JSR	R1,$SAVE4			;					0999
000004	004767  000000G				JSR	PC,$CCBGT			;					1030
000010	103460 					BCS	5$
000012	010476  000016 				MOV	R4,@16(SP)			; $MCB$R4,LCCB
000016	010402 					MOV	R4,R2				; LCCB,*				1035
000020	005062  000004 				CLR	4(R2)
000024	005062  000002 				CLR	2(R2)				;					1036
000030	005062  000024 				CLR	24(R2)				;					1037
000034	005062  000026 				CLR	26(R2)				;					1038
000040	005062  000030 				CLR	30(R2)				;					1039
000044	005062  000032 				CLR	32(R2)				;					1040
000050	005062  000034 				CLR	34(R2)				;					1041
000054	005062  000016 				CLR	16(R2)				;					1042
000060	012701  000014 				MOV	#14,R1				;					1044
000064	004767  000000G				JSR	PC,$DSRGT
000070	103403 					BCS	1$
000072	010062  000020 				MOV	R0,20(R2)			; $MCB$R0,*
000076	000405 					BR	2$
000100	017604  000016 			1$:	MOV	@16(SP),R4			; LCCB,*				1047
000104	004767  000000G				JSR	PC,$CCBRT
000110	000420 					BR	5$				;					1046
000112	016600  000020 			2$:	MOV	20(SP),R0			; CCB,*					1050
000116	001402 					BEQ	3$
000120	010062  000004 				MOV	R0,4(R2)			;					1052
000124	026627  000014  177777 		3$:	CMP	14(SP),#-1			; PDB,*					1055
000132	001404 					BEQ	4$
000134	016600  000014 				MOV	14(SP),R0			; PDB,*					1057
000140	005260  000054 				INC	54(R0)
000144	012700  000001 			4$:	MOV	#1,R0				;					1025
000150	000207 					RTS	PC
000152	005000 				5$:	CLR	R0				;					0999
000154	000207 					RTS	PC

; Routine Size:  55 words,	Routine Base:  $CODE$ + 0500
; Maximum stack depth per invocation:  6 words
;	  1060	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  20
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (9)

;	  1061	
;	  1062	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  21
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (10)

;	  1063	routine CCB_RETRN ( CCB, PDB):  novalue =	!
;	  1064	
;	  1065	!++
;	  1066	! FUNCTIONAL DESCRIPTION:
;	  1067	!	This routine deallocates a CCB.
;	  1068	!
;	  1069	! FORMAL PARAMETERS:
;	  1070	!	CCB = CCB address
;	  1071	!	PDB = Port Data Base address
;	  1072	!
;	  1073	! IMPLICIT INPUTS:
;	  1074	!	None
;	  1075	!
;	  1076	! IMPLICIT OUTPUTS:
;	  1077	!	None
;	  1078	!
;	  1079	! ROUTINE VALUE:
;	  1080	! COMPLETION CODES:
;	  1081	!	None
;	  1082	!
;	  1083	! SIDE EFFECTS:
;	  1084	!	None
;	  1085	!--
;	  1086	
;	  1087	
;	  1088		begin
;	  1089		map PDB: ref block field(PORT_fields);
;	  1090	
;	  1091		local
;	  1092		temp,
;	  1093		NDB : ref block field(NODE_fields),
;	  1094		CLZ_CCB: ref block field(C_fields);
;	  1095	
;	  1096	
;	  1097		CCBRT$( .CCB);
;	  1098	
;	  1099		If .PDB neq -1
;	  1100		Then
;	  1101			begin
;	  1102			PDB[COUNTres] = .PDB[COUNTres] - 1;
;	  1103	
;	  1104			If .PDB[PORTstate] eql N$SCL and
;	  1105			.PDB[COUNTres] eql 0
;	  1106			Then
;	  1107				begin
;	  1108				NDB = .PDB[NODElnk];
;	  1109				PDB[FLAGinuse] = false;
;	  1110				CMQRM$( PDB[MSG_queue], CLZ_CCB);
;	  1111				CLZ_CCB[C_FNC] = FC_XCP;
;	  1112				CLZ_CCB[C_STS] = N$SSUC;
;	  1113				LLCRS$( .CLZ_CCB);
;	  1114				end;
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  22
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (10)

;	  1115			End;
;	  1116		end;


						.GLOBL	$CMQRM


						.SBTTL	CCB.RETRN
000000	004167  000000G			; CCB.RETRN
					U.14:	JSR	R1,$SAVE4			;					1063
000004	016604  000016 				MOV	16(SP),R4			; CCB,*					1097
000010	004767  000000G				JSR	PC,$CCBRT
000014	016603  000014 				MOV	14(SP),R3			; PDB,*					1099
000020	020327  177777 				CMP	R3,#-1
000024	001431 					BEQ	1$
000026	005363  000054 				DEC	54(R3)				;					1102
000032	121327  000017 				CMPB	(R3),#17			;					1104
000036	001024 					BNE	1$
000040	005763  000054 				TST	54(R3)				;					1105
000044	001021 					BNE	1$
000046	016304  000010 				MOV	10(R3),R4			; *,NDB					1108
000052	142763  000001  000042 			BICB	#1,42(R3)			;					1109
000060	062703  000102 				ADD	#102,R3				;					1110
000064	004767  000000G				JSR	PC,$CMQRM
000070	112764  000014  000012 			MOVB	#14,12(R4)			; *,*(CLZ.CCB)				1111
000076	012764  000001  000014 			MOV	#1,14(R4)			; *,*(CLZ.CCB)				1112
000104	004767  000000G				JSR	PC,$SCHED			;					1113
000110	000207 				1$:	RTS	PC				;					1063

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


;	  1117	
;	  1118	
;	  1119	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  23
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (11)

;	  1120	routine DADD ( double_word, value ) :novalue =		!
;	  1121	
;	  1122	!++
;	  1123	! FUNCTIONAL DESCRIPTION:
;	  1124	!	This routine performs double percision arithemitic.
;	  1125	!
;	  1126	! FORMAL PARAMETERS:
;	  1127	!	DOUBLE_WORD = address to add VALUE to
;	  1128	!	VALUE = value to add to DOUBLE_WORD
;	  1129	!
;	  1130	! IMPLICIT INPUTS:
;	  1131	!	None
;	  1132	!
;	  1133	! IMPLICIT OUTPUTS:
;	  1134	!	None
;	  1135	!
;	  1136	! ROUTINE VALUE:
;	  1137	! COMPLETION CODES:
;	  1138	!	None
;	  1139	!
;	  1140	! SIDE EFFECTS:
;	  1141	!	None
;	  1142	!--
;	  1143	
;	  1144	
;	  1145		begin
;	  1146		builtin  ROT;
;	  1147		map double_word: ref block field(long_word);
;	  1148	
;	  1149		if rot(double_word[low] = .double_word[low] + .value, 1)
;	  1150		then
;	  1151			begin
;	  1152			if rot(double_word[hi] = .double_word[hi] + 1, 1)
;	  1153			then
;	  1154				begin
;	  1155				double_word[low] = -1;
;	  1156				double_word[hi] = -1;
;	  1157				end
;	  1158			end
;	  1159		end;


						.SBTTL	DADD
000000	010146 				; DADD
					U.15:	MOV	R1,-(SP)			;					1120
000002	016601  000006 				MOV	6(SP),R1			; DOUBLE.WORD,*				1149
000006	011100 					MOV	(R1),R0
000010	066600  000004 				ADD	4(SP),R0			; VALUE,*
000014	010011 					MOV	R0,(R1)
000016	103013 					BCC	1$
000020	016100  000002 				MOV	2(R1),R0			;					1152
000024	062700  000001 				ADD	#1,R0
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  24
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (11)

000030	010061  000002 				MOV	R0,2(R1)
000034	103004 					BCC	1$
000036	012711  177777 				MOV	#-1,(R1)			;					1155
000042	011161  000002 				MOV	(R1),2(R1)			;					1156
000046	012601 				1$:	MOV	(SP)+,R1			;					1120
000050	000207 					RTS	PC

; Routine Size:  21 words,	Routine Base:  $CODE$ + 0770
; Maximum stack depth per invocation:  2 words


;	  1160	
;	  1161	
;	  1162	
;	  1163	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  25
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (12)

;	  1164	routine DATA_TO_SND ( PDB) : =	!
;	  1165	
;	  1166	!++
;	  1167	! FUNCTIONAL DESCRIPTION:
;	  1168	!	This routine checks to see if flow control permission allows
;	  1169	!	a data segment to be transmitted.
;	  1170	!
;	  1171	! FORMAL PARAMETERS:
;	  1172	!	PDB = Port Data Base Address
;	  1173	!
;	  1174	! IMPLICIT INPUTS:
;	  1175	!	DB = NSP Data Base Address
;	  1176	!
;	  1177	! IMPLICIT OUTPUTS:
;	  1178	!	None
;	  1179	!
;	  1180	! ROUTINE VALUE:
;	  1181	! COMPLETION CODES:
;	  1182	!	None
;	  1183	!
;	  1184	! SIDE EFFECTS:
;	  1185	!	None
;	  1186	!--
;	  1187	
;	  1188		begin
;	  1189		map PDB: ref block field(PORT_fields);
;	  1190	
;	  1191		If ((.PDB[PORTstate] eql N$SRUN) or
;	  1192		(.PDB[PORTstate] eql N$SDI and 
;	  1193		(CMP_NEQ(.PDB[NUMhigh], .PDB[ACKrcv_dat]))))
;	  1194		Then
;	  1195			begin
;	  1196			If not .PDB[FLOWsw_rem]
;	  1197			Then
;	  1198				return false;
;	  1199			If (CMP_LEQ( .PDB[NUMdat], .PDB[NUMhigh])) or 
;	  1200			.PDB[FLAGseg] eql false
;	  1201			Then
;	  1202				begin
;	  1203				Case .PDB[FLOWtyp_rem] from FLOWnone to FLOWmsg of
;	  1204					Set
;	  1205					[FLOWnone]:
;	  1206						return true;
;	  1207					[FLOWseg]:
;	  1208						begin
;	  1209						If .PDB[FLAGseg] eql true
;	  1210						Then
;	  1211							begin
;	  1212							If (CMP_LEQ( .PDB[NUMdat], (.PDB[ACKrcv_dat] + .PDB[FLOWdat_rem]))) 
;	  1213							Then
;	  1214								return true
;	  1215							end
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  26
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (12)

;	  1216						Else
;	  1217							begin
;	  1218							bind CCB = .PDB[ACK_queue]: block field(C_fields);
;	  1219							If (CMP_LEQ( .CCB[C_STS], (.PDB[ACKrcv_dat] + .PDB[FLOWdat_rem]))) 
;	  1220							Then
;	  1221								return true
;	  1222							end;
;	  1223						end;
;	  1224					[FLOWmsg]: 
;	  1225						If (0 lss .PDB[FLOWdat_rem]) or
;	  1226						.PDB[FLAGseg] eql false
;	  1227						Then
;	  1228							return true;
;	  1229					Tes;
;	  1230				end;
;	  1231			return false
;	  1232	
;	  1233			end
;	  1234		Else
;	  1235			return false;
;	  1236		end;


						.SBTTL	DATA.TO.SND
000000	010146 				; DATA.TO.SND
					U.17:	MOV	R1,-(SP)			;					1164
000002	016601  000004 				MOV	4(SP),R1			; PDB,*					1191
000006	121127  000013 				CMPB	(R1),#13
000012	001412 					BEQ	1$
000014	121127  000014 				CMPB	(R1),#14			;					1192
000020	001121 					BNE	8$
000022	016100  000034 				MOV	34(R1),R0			;					1193
000026	166100  000026 				SUB	26(R1),R0
000032	032700  007777 				BIT	#7777,R0
000036	001512 					BEQ	8$
000040	032761  002000  000040 		1$:	BIT	#2000,40(R1)			;					1196
000046	001506 					BEQ	8$				;					1198
000050	016100  000026 				MOV	26(R1),R0			;					1199
000054	166100  000020 				SUB	20(R1),R0
000060	062700  004000 				ADD	#4000,R0
000064	042700  170000 				BIC	#170000,R0
000070	020027  004000 				CMP	R0,#4000
000074	103004 					BHIS	2$
000076	132761  000040  000042 			BITB	#40,42(R1)			;					1200
000104	001067 					BNE	8$
000106	016100  000040 			2$:	MOV	40(R1),R0			;					1203
000112	072027  177766 				ASH	#-12,R0
000116	042700  177771 				BIC	#177771,R0
000122	066007  000000'				ADD	P.AAA(R0),PC			; Case dispatch
000126	000453 				3$:	BR	7$				;					1206
000130	132761  000040  000042 		4$:	BITB	#40,42(R1)			;					1209
000136	001417 					BEQ	5$
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  27
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (12)

000140	005000 					CLR	R0				;					1212
000142	156100  000037 				BISB	37(R1),R0
000146	066100  000034 				ADD	34(R1),R0
000152	166100  000020 				SUB	20(R1),R0
000156	062700  004000 				ADD	#4000,R0
000162	042700  170000 				BIC	#170000,R0
000166	020027  004000 				CMP	R0,#4000
000172	103434 					BLO	8$
000174	000430 					BR	7$				;					1214
000176	005000 				5$:	CLR	R0				;					1219
000200	156100  000037 				BISB	37(R1),R0
000204	066100  000034 				ADD	34(R1),R0
000210	016101  000116 				MOV	116(R1),R1
000214	166100  000014 				SUB	14(R1),R0
000220	062700  004000 				ADD	#4000,R0
000224	042700  170000 				BIC	#170000,R0
000230	020027  004000 				CMP	R0,#4000
000234	103413 					BLO	8$
000236	000407 					BR	7$				;					1221
000240	105761  000037 			6$:	TSTB	37(R1)				;					1225
000244	001004 					BNE	7$
000246	132761  000040  000042 			BITB	#40,42(R1)			;					1226
000254	001003 					BNE	8$
000256	012700  000001 			7$:	MOV	#1,R0				;					1228
000262	000401 					BR	9$
000264	005000 				8$:	CLR	R0				;					1164
000266	012601 				9$:	MOV	(SP)+,R1
000270	000207 					RTS	PC

; Routine Size:  93 words,	Routine Base:  $CODE$ + 1042
; Maximum stack depth per invocation:  2 words


000000						.PSECT	$PLIT$,  RO ,  D  

					P.AAA:						; CASE Table for DATA.TO.SND+0122	1203
000000	000130 					.WORD	130				; [7$]
000002	000002 					.WORD	2				; [4$]
000004	000112 					.WORD	112				; [6$]



;	  1237	
;	  1238	
;	  1239	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  28
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (13)

;	  1240	routine DATA_RECVD ( CCB, PDB): novalue = !
;	  1241	
;	  1242	!++
;	  1243	! FUNCTIONAL DESCRIPTION:
;	  1244	!	This routine generates a DATA-RECIEVED call to Session Control.
;	  1245	!
;	  1246	! FORMAL PARAMETERS:
;	  1247	!	DB = NSP Data Base Address
;	  1248	!	PDB = Port Data Base Address
;	  1249	!	CCB = CCB Address
;	  1250	!
;	  1251	! IMPLICIT INPUTS:
;	  1252	!	None
;	  1253	!
;	  1254	! IMPLICIT OUTPUTS:
;	  1255	!	None
;	  1256	!
;	  1257	! ROUTINE VALUE:
;	  1258	! COMPLETION CODES:
;	  1259	!	None
;	  1260	!
;	  1261	! SIDE EFFECTS:
;	  1262	!	None
;	  1263	!--
;	  1264	
;	  1265	
;	  1266		begin
;	  1267		map PDB: ref block field(PORT_fields);
;	  1268		map CCB: ref block field(C_fields);
;	  1269	
;	  1270		bind STK_CCB = .CCB[C_STK]: block field(C_fields);
;	  1271	
;	  1272		local 
;	  1273		PTR,
;	  1274		CHR;
;	  1275	
;	  1276		PTR = .STK_CCB[C_ADDR];
;	  1277		MAP$( .STK_CCB[C_BIAS]);
;	  1278		CHR = ch$rchar( .PTR);
;	  1279	
;	  1280		If (.CHR and FLG_EOM) neq 0
;	  1281		Then
;	  1282			CCB[C_PRM1] = N$FEOM;
;	  1283		If (.CHR and FLG_BOM) neq 0
;	  1284		Then
;	  1285			CCB[C_PRM1] = .CCB[C_PRM1] or N$FBOM;
;	  1286		PTR = ch$plus( .STK_CCB[C_ADDR], 6 );
;	  1287		CHR = ch$rchar( .PTR);
;	  1288	
;	  1289		If .CHR<7, 1>
;	  1290		Then
;	  1291			CHR = 9
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  29
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (13)

;	  1292		Else
;	  1293			CHR = 7;
;	  1294	
;	  1295		MAP$( .DB[BIASports]);
;	  1296	
;	  1297		CCB[C_FNC] = FC_RCP;
;	  1298		CCB[C_MOD] = N_RDAT;
;	  1299		CCB[C_LIX] = .PDB[PID];
;	  1300		CCB[C_BIAS] = .STK_CCB[C_BIAS];
;	  1301		CCB[C_CNT] = .STK_CCB[C_CNT] - .CHR;
;	  1302		CCB[C_ADDR] = ch$plus( .STK_CCB[C_ADDR], .CHR);
;	  1303		CCB[C_STS] = N$SSUC;
;	  1304		CCB[C_PIX] = .DB[NSPsc_pix];
;	  1305		LLCRS$( .CCB);
;	  1306		end;


						.GLOBL	KISAR6


						.SBTTL	DATA.RECVD
001334						.PSECT	$CODE$,  RO 

000000	004167  000000G			; DATA.RECVD
					U.16:	JSR	R1,$SAVE4			;					1240
000004	016604  000016 				MOV	16(SP),R4			; CCB,*					1270
000010	016402  000004 				MOV	4(R4),R2			;					1266
000014	016203  000020 				MOV	20(R2),R3			;					1276
000020	010300 					MOV	R3,R0				; *,PTR
000022	016267  000016  000000G			MOV	16(R2),KISAR6			;					1277
000030	005001 					CLR	R1				; CHR					1278
000032	151001 					BISB	(R0),R1				; PTR,CHR
000034	032701  000100 				BIT	#100,R1				; *,CHR					1280
000040	001403 					BEQ	1$
000042	012764  000001  000024 			MOV	#1,24(R4)			;					1282
000050	032701  000040 			1$:	BIT	#40,R1				; *,CHR					1283
000054	001403 					BEQ	2$
000056	052764  000002  000024 			BIS	#2,24(R4)			;					1285
000064	010300 				2$:	MOV	R3,R0				; *,PTR					1286
000066	062700  000006 				ADD	#6,R0				; *,PTR
000072	005001 					CLR	R1				; CHR					1287
000074	151001 					BISB	(R0),R1				; PTR,CHR
000076	100003 					BPL	3$				;					1289
000100	012701  000011 				MOV	#11,R1				; *,CHR					1291
000104	000402 					BR	4$				;					1289
000106	012701  000007 			3$:	MOV	#7,R1				; *,CHR					1293
000112	016700  000002G			4$:	MOV	.CRDAT+2,R0			;					1295
000116	016067  000014  000000G			MOV	14(R0),KISAR6
000124	112764  000016  000012 			MOVB	#16,12(R4)			;					1297
000132	112764  000010  000013 			MOVB	#10,13(R4)			;					1298
000140	016600  000014 				MOV	14(SP),R0			; PDB,*					1299
000144	116064  000004  000010 			MOVB	4(R0),10(R4)
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  30
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (13)

000152	016264  000016  000016 			MOV	16(R2),16(R4)			;					1300
000160	016264  000022  000022 			MOV	22(R2),22(R4)			;					1301
000166	160164  000022 				SUB	R1,22(R4)			; CHR,*
000172	010164  000020 				MOV	R1,20(R4)			; CHR,*					1302
000176	060364  000020 				ADD	R3,20(R4)
000202	012764  000001  000014 			MOV	#1,14(R4)			;					1303
000210	016700  000002G				MOV	.CRDAT+2,R0			;					1304
000214	116064  000044  000011 			MOVB	44(R0),11(R4)
000222	004767  000000G				JSR	PC,$SCHED			;					1305
000226	000207 					RTS	PC				;					1240

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


;	  1307	
;	  1308	
;	  1309	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  31
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (14)

;	  1310	routine DRQ_BLD ( CCB, PDB) :   novalue =	!
;	  1311	
;	  1312	!++
;	  1313	! FUNCTIONAL DESCRIPTION:
;	  1314	!	This routine formats an NSP Data Request message and queues it to
;	  1315	!	Transport.
;	  1316	!
;	  1317	! FORMAL PARAMETERS:
;	  1318	!	PDB = Port Data Base Address
;	  1319	!	CCB = CCB Address
;	  1320	!
;	  1321	! IMPLICIT INPUTS:
;	  1322	!	DB = NSP Data Base Address
;	  1323	!
;	  1324	! IMPLICIT OUTPUTS:
;	  1325	!	None
;	  1326	!
;	  1327	! ROUTINE VALUE:
;	  1328	! COMPLETION CODES:
;	  1329	!	None
;	  1330	!
;	  1331	! SIDE EFFECTS:
;	  1332	!	None
;	  1333	!--
;	  1334	
;	  1335		begin
;	  1336		map CCB: ref block field(C_fields);
;	  1337		map PDB: ref block field(PORT_fields);
;	  1338	
;	  1339		bind STK_CCB = .CCB[C_STK]: block field(C_fields);
;	  1340	
;	  1341		local
;	  1342		PTR;
;	  1343	
;	  1344		PTR = .CCB[C_ADDR];
;	  1345	
;	  1346		ch$wchar_a( FLG_REQ, PTR);
;	  1347		ch$wchar_a( .PDB[L_rem_addr], PTR);
;	  1348		ch$wchar_a( .PDB[H_rem_addr], PTR);
;	  1349		ch$wchar_a( .PDB[PID], PTR);
;	  1350		ch$wchar_a( .PDB[ADDran], PTR);
;	  1351		PUT2BYTES( (.PDB[ACKoth_xmt] and %o'7777') + Q_ACK^12 + true^15, PTR);
;	  1352		PUT2BYTES( (.PDB[NUMoth] and %o'7777'), PTR);
;	  1353	
;	  1354		If .STK_CCB[C_PRM1] eql 0
;	  1355		Then
;	  1356			ch$wchar_a( FC_NCHG + FC_DATA^2, PTR)
;	  1357		Else
;	  1358			ch$wchar_a( FC_SEND + FC_DATA^2, PTR);
;	  1359		ch$wchar_a( .STK_CCB[C_PRM1], PTR);
;	  1360	
;	  1361		CCB[C_CNT] = ch$diff(.PTR, .CCB[C_ADDR]);
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  32
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (14)

;	  1362		STK_CCB[C_STS] = .PDB[NUMoth];
;	  1363	
;	  1364		PDB[OTHtyp] = OTHdrequest;
;	  1365		PDB[FLAGoth_ack] = false;
;	  1366		PDB[OTHstate] = OTHsent;
;	  1367	
;	  1368		XPT_XMIT( .CCB, .PDB)	
;	  1369		end;


						.SBTTL	DRQ.BLD
000000	004167  000000G			; DRQ.BLD
					U.18:	JSR	R1,$SAVE5			;					1310
000004	016603  000020 				MOV	20(SP),R3			; CCB,*					1339
000010	016302  000004 				MOV	4(R3),R2			;					1335
000014	016304  000020 				MOV	20(R3),R4			; *,PTR					1344
000020	112724  000020 				MOVB	#20,(R4)+			; *,PTR					1346
000024	016601  000016 				MOV	16(SP),R1			; PDB,*					1347
000030	116124  000006 				MOVB	6(R1),(R4)+			; *,PTR
000034	116124  000007 				MOVB	7(R1),(R4)+			; *,PTR					1348
000040	116124  000004 				MOVB	4(R1),(R4)+			; *,PTR					1349
000044	116124  000005 				MOVB	5(R1),(R4)+			; *,PTR					1350
000050	016100  000032 				MOV	32(R1),R0			; *,TEMP				1351
000054	042700  170000 				BIC	#170000,R0			; *,TEMP
000060	162700  100000 				SUB	#100000,R0			; *,TEMP
000064	110024 					MOVB	R0,(R4)+			; TEMP,PTR
000066	010005 					MOV	R0,R5				; TEMP,*
000070	000305 					SWAB	R5
000072	110524 					MOVB	R5,(R4)+			; *,PTR
000074	016100  000024 				MOV	24(R1),R0			; *,TEMP				1352
000100	042700  170000 				BIC	#170000,R0			; *,TEMP
000104	110024 					MOVB	R0,(R4)+			; TEMP,PTR
000106	010005 					MOV	R0,R5				; TEMP,*
000110	000305 					SWAB	R5
000112	110524 					MOVB	R5,(R4)+			; *,PTR
000114	016200  000024 				MOV	24(R2),R0			;					1354
000120	001002 					BNE	1$
000122	105014 					CLRB	(R4)				; PTR					1356
000124	000402 					BR	2$				;					1354
000126	112714  000002 			1$:	MOVB	#2,(R4)				; *,PTR					1358
000132	005204 				2$:	INC	R4				; PTR					1356
000134	110024 					MOVB	R0,(R4)+			; *,PTR					1359
000136	010463  000022 				MOV	R4,22(R3)			; PTR,*					1361
000142	166363  000020  000022 			SUB	20(R3),22(R3)
000150	016162  000024  000014 			MOV	24(R1),14(R2)			;					1362
000156	112761  000004  000065 			MOVB	#4,65(R1)			;					1364
000164	042761  040000  000040 			BIC	#40000,40(R1)			;					1365
000172	112761  000001  000064 			MOVB	#1,64(R1)			;					1366
000200	010346 					MOV	R3,-(SP)			;					1368
000202	010146 					MOV	R1,-(SP)
000204	004767  000000V				JSR	PC,U.45
000210	022626 					CMP	(SP)+,(SP)+			;					1335
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  33
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (14)

000212	000207 					RTS	PC				;					1310

; Routine Size:  70 words,	Routine Base:  $CODE$ + 1564
; Maximum stack depth per invocation:  9 words


;	  1370	
;	  1371	
;	  1372	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  34
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (15)

;	  1373	routine DRQ_RCV ( CCB, PDB) :  novalue =	!
;	  1374	
;	  1375	!++
;	  1376	! FUNCTIONAL DESCRIPTION:
;	  1377	!	This routine processes a received Data Request message.
;	  1378	!
;	  1379	! FORMAL PARAMETERS:
;	  1380	!	PDB = Port Data Base Address
;	  1381	!	CCB = CCB Address
;	  1382	!
;	  1383	! IMPLICIT INPUTS:
;	  1384	!	DB = NSP Data Base Address
;	  1385	!
;	  1386	! IMPLICIT OUTPUTS:
;	  1387	!	None
;	  1388	!
;	  1389	! ROUTINE VALUE:
;	  1390	! COMPLETION CODES:
;	  1391	!	None
;	  1392	!
;	  1393	! SIDE EFFECTS:
;	  1394	!	None
;	  1395	!--
;	  1396	
;	  1397		begin
;	  1398		map CCB: ref block field(C_fields);
;	  1399		map PDB: ref block field(PORT_fields);
;	  1400	
;	  1401		MAP$( .DB[BIASports]);
;	  1402	
;	  1403		If .DB[Q_FLG]
;	  1404		Then
;	  1405			PROC_OTH_ACK( .CCB, .PDB);
;	  1406		If .DB[SEGNUM] eql ((.PDB[ACKoth_xmt] + 1) and %o'7777')
;	  1407		Then
;	  1408			begin
;	  1409			PDB[FLOWsw_rem] = (Selectone .DB[FCMOD] of
;	  1410				Set
;	  1411				[FC_SEND]: 	true;
;	  1412				[FC_DONT]:	false;
;	  1413				Tes);
;	  1414			Selectone .PDB[FLOWtyp_rem] of
;	  1415			Set
;	  1416			[FLOWseg]:
;	  1417	
;	  1418				begin
;	  1419				If (-128 leq .PDB[FLOWdat_rem] + .DB[FCVAL]) and
;	  1420				(127 geq .PDB[FLOWdat_rem] + .DB[FCVAL])
;	  1421				Then
;	  1422					begin
;	  1423					PDB[FLOWdat_rem] = .PDB[FLOWdat_rem] + .DB[FCVAL];
;	  1424					PDB[ACKoth_xmt] = .PDB[ACKoth_xmt] + 1;
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  35
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (15)

;	  1425					PDB[FLAGoth_ack] = true;
;	  1426					end
;	  1427				Else
;	  1428					CALL$E( EVENT_LOG, .DB[NSPns2_pix], invflw, .PDB[FLOWdat_rem], .PDB, .CCB);
;	  1429				end;
;	  1430			[FLOWnone]:
;	  1431	
;	  1432				begin
;	  1433				PDB[ACKoth_xmt] = .PDB[ACKoth_xmt] + 1;
;	  1434				PDB[FLAGoth_ack] = true;
;	  1435				end;
;	  1436	
;	  1437			[FLOWmsg]:
;	  1438	
;	  1439				begin
;	  1440				If (0 leq .DB[FCVAL]) and
;	  1441				(127 geq .DB[FCVAL])
;	  1442				Then
;	  1443					begin
;	  1444					PDB[FLOWdat_rem] = .PDB[FLOWdat_rem] + .DB[FCVAL];
;	  1445					PDB[ACKoth_xmt] = .PDB[ACKoth_xmt] + 1;
;	  1446					PDB[FLAGoth_ack] = true;
;	  1447					end
;	  1448				Else
;	  1449					CALL$E( EVENT_LOG, .DB[NSPns2_pix], invflw, .PDB[FLOWdat_rem], .PDB, .CCB);
;	  1450	
;	  1451				end
;	  1452			Tes;
;	  1453			end
;	  1454		Else
;	  1455			begin
;	  1456			If (CMP_LEQ( .DB[SEGNUM], .PDB[ACKoth_xmt]))
;	  1457			Then
;	  1458				PDB[FLAGoth_ack] = true
;	  1459			end;
;	  1460		CCB[C_FNC] = FC_RCE;
;	  1461		LLCRS$( .CCB)
;	  1462		end;


						.GLOBL	EVENT.LOG, $CALLE


						.SBTTL	DRQ.RCV
000000	004167  000000G			; DRQ.RCV
					U.19:	JSR	R1,$SAVE5			;					1373
000004	016700  000002G				MOV	.CRDAT+2,R0			;					1401
000010	016067  000014  000000G			MOV	14(R0),KISAR6
000016	016700  000002G				MOV	.CRDAT+2,R0			;					1403
000022	005760  000060 				TST	60(R0)
000026	100007 					BPL	1$
000030	016646  000020 				MOV	20(SP),-(SP)			; CCB,*					1405
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  36
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (15)

000034	016646  000020 				MOV	20(SP),-(SP)			; PDB,*
000040	004767  000000V				JSR	PC,U.34
000044	022626 					CMP	(SP)+,(SP)+
000046	016702  000002G			1$:	MOV	.CRDAT+2,R2			;					1406
000052	016604  000016 				MOV	16(SP),R4			; PDB,*
000056	012705  000032 				MOV	#32,R5
000062	060405 					ADD	R4,R5
000064	011500 					MOV	(R5),R0
000066	005200 					INC	R0
000070	010003 					MOV	R0,R3
000072	042703  170000 				BIC	#170000,R3
000076	016201  000062 				MOV	62(R2),R1
000102	020103 					CMP	R1,R3
000104	001172 					BNE	11$
000106	012703  000040 				MOV	#40,R3				;					1409
000112	060403 					ADD	R4,R3
000114	016200  000056 				MOV	56(R2),R0
000120	072027  177770 				ASH	#-10,R0
000124	042700  177774 				BIC	#177774,R0
000130	020027  000002 				CMP	R0,#2
000134	001003 					BNE	2$
000136	012700  000001 				MOV	#1,R0
000142	000407 					BR	4$
000144	020027  000001 			2$:	CMP	R0,#1
000150	001403 					BEQ	3$
000152	012700  177777 				MOV	#-1,R0
000156	000401 					BR	4$
000160	005000 				3$:	CLR	R0
000162	042713  002000 			4$:	BIC	#2000,(R3)
000166	032700  000001 				BIT	#1,R0
000172	001402 					BEQ	5$
000174	052713  002000 				BIS	#2000,(R3)
000200	011300 				5$:	MOV	(R3),R0				;					1414
000202	042700  163777 				BIC	#163777,R0
000206	020027  004000 				CMP	R0,#4000
000212	001044 					BNE	7$
000214	005001 					CLR	R1				;					1419
000216	156401  000037 				BISB	37(R4),R1
000222	005000 					CLR	R0
000224	156200  000071 				BISB	71(R2),R0
000230	060100 					ADD	R1,R0
000232	020027  177600 				CMP	R0,#-200
000236	002415 					BLT	6$
000240	020027  000177 				CMP	R0,#177				;					1420
000244	003012 					BGT	6$
000246	005001 					CLR	R1				;					1423
000250	156401  000037 				BISB	37(R4),R1
000254	005000 					CLR	R0
000256	156200  000071 				BISB	71(R2),R0
000262	060100 					ADD	R1,R0
000264	110064  000037 				MOVB	R0,37(R4)
000270	000450 					BR	8$				;					1424
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  37
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (15)

000272	016646  000020 			6$:	MOV	20(SP),-(SP)			; CCB,*					1428
000276	010446 					MOV	R4,-(SP)
000300	005046 					CLR	-(SP)
000302	116416  000037 				MOVB	37(R4),(SP)
000306	012746  000001 				MOV	#1,-(SP)
000312	012746  000004 				MOV	#4,-(SP)
000316	012746  000000G				MOV	#EVENT.LOG,-(SP)
000322	000453 					BR	10$
000324	032713  014000 			7$:	BIT	#14000,(R3)			;					1414
000330	001430 					BEQ	8$				;					1433
000332	011300 					MOV	(R3),R0				;					1414
000334	042700  163777 				BIC	#163777,R0
000340	020027  010000 				CMP	R0,#10000
000344	001067 					BNE	12$
000346	012701  000036 				MOV	#36,R1				;					1444
000352	060401 					ADD	R4,R1
000354	005000 					CLR	R0				;					1440
000356	156200  000071 				BISB	71(R2),R0
000362	005700 					TST	R0
000364	002416 					BLT	9$
000366	020027  000177 				CMP	R0,#177				;					1441
000372	003013 					BGT	9$
000374	116146  000001 				MOVB	1(R1),-(SP)			;					1444
000400	105066  000001 				CLRB	1(SP)
000404	060016 					ADD	R0,(SP)
000406	112661  000001 				MOVB	(SP)+,1(R1)
000412	005215 				8$:	INC	(R5)				;					1445
000414	052713  040000 				BIS	#40000,(R3)			;					1446
000420	000441 					BR	12$				;					1440
000422	016646  000020 			9$:	MOV	20(SP),-(SP)			; CCB,*					1449
000426	010446 					MOV	R4,-(SP)
000430	005046 					CLR	-(SP)
000432	116116  000001 				MOVB	1(R1),(SP)
000436	012746  000001 				MOV	#1,-(SP)
000442	012746  000004 				MOV	#4,-(SP)
000446	012746  000000G				MOV	#EVENT.LOG,-(SP)
000452	005046 				10$:	CLR	-(SP)
000454	116216  000047 				MOVB	47(R2),(SP)
000460	004767  000000G				JSR	PC,$CALLE
000464	062706  000016 				ADD	#16,SP
000470	000415 					BR	12$				;					1414
000472	011500 				11$:	MOV	(R5),R0				;					1456
000474	166200  000062 				SUB	62(R2),R0
000500	062700  004000 				ADD	#4000,R0
000504	042700  170000 				BIC	#170000,R0
000510	020027  004000 				CMP	R0,#4000
000514	103403 					BLO	12$
000516	052764  040000  000040 			BIS	#40000,40(R4)			;					1458
000524	016600  000020 			12$:	MOV	20(SP),R0			; CCB,*					1460
000530	112760  000004  000012 			MOVB	#4,12(R0)
000536	010004 					MOV	R0,R4				; CCB,*					1461
000540	004767  000000G				JSR	PC,$SCHED
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  38
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (15)

000544	000207 					RTS	PC				;					1373

; Routine Size:  179 words,	Routine Base:  $CODE$ + 2000
; Maximum stack depth per invocation:  14 words


;	  1463	
;	  1464	
;	  1465	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  39
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (16)

;	  1466	routine D_REQ_TO_SND ( PDB) : =	!
;	  1467	
;	  1468	!++
;	  1469	! FUNCTIONAL DESCRIPTION:
;	  1470	!	This routine tests all the conditions needed to transmit a Data
;	  1471	!	Request message.
;	  1472	!
;	  1473	! FORMAL PARAMETERS:
;	  1474	!	PDB = Port Data Base Address
;	  1475	!
;	  1476	! IMPLICIT INPUTS:
;	  1477	!	DB = NSP Data Base Address
;	  1478	!
;	  1479	! IMPLICIT OUTPUTS:
;	  1480	!	None
;	  1481	!
;	  1482	! ROUTINE VALUE:
;	  1483	! COMPLETION CODES:
;	  1484	!	None
;	  1485	!
;	  1486	! SIDE EFFECTS:
;	  1487	!	None
;	  1488	!--
;	  1489	
;	  1490		begin
;	  1491		map PDB: ref block field(PORT_fields);
;	  1492	
;	  1493		If .PDB[PORTstate] eql N$SRUN or
;	  1494		(.PDB[PORTstate] eql N$SDI and
;	  1495		(CMP_NEQ(.PDB[NUMhigh], .PDB[ACKrcv_dat])))
;	  1496		Then
;	  1497			begin
;	  1498			If (.PDB[DATRhead] neq 0 and .PDB[OTHstate] eql OTHready)
;	  1499			Then
;	  1500				return true;
;	  1501			return false;
;	  1502			end
;	  1503		Else
;	  1504			return false;
;	  1505		end;


						.SBTTL	D.REQ.TO.SND
000000	010146 				; D.REQ.TO.SND
					U.21:	MOV	R1,-(SP)			;					1466
000002	016601  000004 				MOV	4(SP),R1			; PDB,*					1493
000006	121127  000013 				CMPB	(R1),#13
000012	001412 					BEQ	1$
000014	121127  000014 				CMPB	(R1),#14			;					1494
000020	001020 					BNE	2$
000022	016100  000034 				MOV	34(R1),R0			;					1495
000026	166100  000026 				SUB	26(R1),R0
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  40
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (16)

000032	032700  007777 				BIT	#7777,R0
000036	001411 					BEQ	2$
000040	005761  000112 			1$:	TST	112(R1)				;					1498
000044	001406 					BEQ	2$
000046	105761  000064 				TSTB	64(R1)
000052	001003 					BNE	2$
000054	012700  000001 				MOV	#1,R0				;					1500
000060	000401 					BR	3$
000062	005000 				2$:	CLR	R0				;					1493
000064	012601 				3$:	MOV	(SP)+,R1			;					1466
000066	000207 					RTS	PC

; Routine Size:  28 words,	Routine Base:  $CODE$ + 2546
; Maximum stack depth per invocation:  2 words


;	  1506	
;	  1507	
;	  1508	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  41
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (17)

;	  1509	routine D_RCV ( CCB, PDB) :  novalue =	!
;	  1510	
;	  1511	!++
;	  1512	! FUNCTIONAL DESCRIPTION:
;	  1513	!	This routine processes a received Data Segment.
;	  1514	!
;	  1515	! FORMAL PARAMETERS:
;	  1516	!	PDB = Port Data Base Address
;	  1517	!	CCB = CCB Address
;	  1518	!
;	  1519	! IMPLICIT INPUTS:
;	  1520	!	DB = NSP Data Base Address
;	  1521	!
;	  1522	! IMPLICIT OUTPUTS:
;	  1523	!	None
;	  1524	!
;	  1525	! ROUTINE VALUE:
;	  1526	! COMPLETION CODES:
;	  1527	!	None
;	  1528	!
;	  1529	! SIDE EFFECTS:
;	  1530	!	None
;	  1531	!--
;	  1532	
;	  1533		begin
;	  1534		map CCB: ref block field(C_fields);
;	  1535		map PDB: ref block field(PORT_fields);
;	  1536	
;	  1537		local PTR;
;	  1538	
;	  1539		MAP$( .DB[BIASports]);
;	  1540	
;	  1541		If .DB[Q_FLG]
;	  1542		Then
;	  1543			PROC_DATA_ACK( .CCB, .PDB);
;	  1544	
;	  1545		If (CMP_EQL( .DB[SEGNUM], (.PDB[ACKdat_xmt] + 1)))
;	  1546		Then
;	  1547			REAS_DATA( .CCB, .PDB)
;	  1548		Else
;	  1549			begin
;	  1550			If (CMP_LEQ( .DB[SEGNUM], .PDB[ACKdat_xmt]))
;	  1551			Then
;	  1552				PDB[FLAGdat_ack] = true;
;	  1553			CCB[C_FNC] = FC_RCE;
;	  1554			LLCRS$( .CCB)
;	  1555			end
;	  1556		end;


						.SBTTL	D.RCV
000000	004167  000000G			; D.RCV
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  42
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (17)

					U.20:	JSR	R1,$SAVE4			;					1509
000004	016700  000002G				MOV	.CRDAT+2,R0			;					1539
000010	016067  000014  000000G			MOV	14(R0),KISAR6
000016	016700  000002G				MOV	.CRDAT+2,R0			;					1541
000022	005760  000060 				TST	60(R0)
000026	100007 					BPL	1$
000030	016646  000016 				MOV	16(SP),-(SP)			; CCB,*					1543
000034	016646  000016 				MOV	16(SP),-(SP)			; PDB,*
000040	004767  000000V				JSR	PC,U.33
000044	022626 					CMP	(SP)+,(SP)+
000046	016604  000016 			1$:	MOV	16(SP),R4			; CCB,*					1547
000052	016602  000014 				MOV	14(SP),R2			; PDB,*					1545
000056	016701  000002G				MOV	.CRDAT+2,R1
000062	016200  000030 				MOV	30(R2),R0
000066	166100  000062 				SUB	62(R1),R0
000072	005200 					INC	R0
000074	032700  007777 				BIT	#7777,R0
000100	001006 					BNE	2$
000102	010446 					MOV	R4,-(SP)			;					1547
000104	010246 					MOV	R2,-(SP)
000106	004767  000000V				JSR	PC,U.35
000112	022626 					CMP	(SP)+,(SP)+
000114	000207 					RTS	PC				;					1545
000116	016200  000030 			2$:	MOV	30(R2),R0			;					1550
000122	166100  000062 				SUB	62(R1),R0
000126	062700  004000 				ADD	#4000,R0
000132	042700  170000 				BIC	#170000,R0
000136	020027  004000 				CMP	R0,#4000
000142	103403 					BLO	3$
000144	052762  020000  000040 			BIS	#20000,40(R2)			;					1552
000152	112764  000004  000012 		3$:	MOVB	#4,12(R4)			;					1553
000160	004767  000000G				JSR	PC,$SCHED			;					1554
000164	000207 					RTS	PC				;					1509

; Routine Size:  59 words,	Routine Base:  $CODE$ + 2636
; Maximum stack depth per invocation:  8 words


;	  1557	
;	  1558	
;	  1559	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  43
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (18)

;	  1560	routine IRQ_BLD ( CCB, PDB) :   novalue =	!
;	  1561	
;	  1562	!++
;	  1563	! FUNCTIONAL DESCRIPTION:
;	  1564	!	This routine formats an NSP Interrupt Request message and queues it to
;	  1565	!	Transport.
;	  1566	!
;	  1567	! FORMAL PARAMETERS:
;	  1568	!	PDB = Port Data Base Address
;	  1569	!	CCB = CCB Address
;	  1570	!
;	  1571	! IMPLICIT INPUTS:
;	  1572	!	DB = NSP Data Base Address
;	  1573	!
;	  1574	! IMPLICIT OUTPUTS:
;	  1575	!	None
;	  1576	!
;	  1577	! ROUTINE VALUE:
;	  1578	! COMPLETION CODES:
;	  1579	!	None
;	  1580	!
;	  1581	! SIDE EFFECTS:
;	  1582	!	None
;	  1583	!--
;	  1584	
;	  1585		begin
;	  1586		map CCB: ref block field(C_fields);
;	  1587		map PDB: ref block field(PORT_fields);
;	  1588	
;	  1589		bind STK_CCB = .CCB[C_STK]: block field(C_fields);
;	  1590	
;	  1591		local
;	  1592		PTR;
;	  1593	
;	  1594		PTR = .CCB[C_ADDR];
;	  1595	
;	  1596		ch$wchar_a( FLG_REQ, PTR);
;	  1597		ch$wchar_a( .PDB[L_rem_addr], PTR);
;	  1598		ch$wchar_a( .PDB[H_rem_addr], PTR);
;	  1599		ch$wchar_a( .PDB[PID], PTR);
;	  1600		ch$wchar_a( .PDB[ADDran], PTR);
;	  1601		PUT2BYTES( (.PDB[ACKoth_xmt] and %o'7777') + Q_ACK^12 + true^15, PTR);
;	  1602		PUT2BYTES( (.PDB[NUMoth] and %o'7777'), PTR);
;	  1603		ch$wchar_a( FC_INTERRUPT^2, PTR);
;	  1604		ch$wchar_a( 1, PTR);
;	  1605		CCB[C_CNT] = ch$diff(.PTR, .CCB[C_ADDR]);
;	  1606	
;	  1607		STK_CCB[C_STS] = .PDB[NUMoth];
;	  1608		PDB[OTHtyp] = OTHirequest;
;	  1609		PDB[FLAGoth_ack] = false;
;	  1610		PDB[OTHstate] = OTHsent;
;	  1611	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  44
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (18)

;	  1612		XPT_XMIT( .CCB, .PDB)	
;	  1613		end;


						.SBTTL	IRQ.BLD
000000	004167  000000G			; IRQ.BLD
					U.22:	JSR	R1,$SAVE5			;					1560
000004	016603  000020 				MOV	20(SP),R3			; CCB,*					1589
000010	016302  000004 				MOV	4(R3),R2			;					1585
000014	016304  000020 				MOV	20(R3),R4			; *,PTR					1594
000020	112724  000020 				MOVB	#20,(R4)+			; *,PTR					1596
000024	016601  000016 				MOV	16(SP),R1			; PDB,*					1597
000030	116124  000006 				MOVB	6(R1),(R4)+			; *,PTR
000034	116124  000007 				MOVB	7(R1),(R4)+			; *,PTR					1598
000040	116124  000004 				MOVB	4(R1),(R4)+			; *,PTR					1599
000044	116124  000005 				MOVB	5(R1),(R4)+			; *,PTR					1600
000050	016100  000032 				MOV	32(R1),R0			; *,TEMP				1601
000054	042700  170000 				BIC	#170000,R0			; *,TEMP
000060	162700  100000 				SUB	#100000,R0			; *,TEMP
000064	110024 					MOVB	R0,(R4)+			; TEMP,PTR
000066	010005 					MOV	R0,R5				; TEMP,*
000070	000305 					SWAB	R5
000072	110524 					MOVB	R5,(R4)+			; *,PTR
000074	016100  000024 				MOV	24(R1),R0			; *,TEMP				1602
000100	042700  170000 				BIC	#170000,R0			; *,TEMP
000104	110024 					MOVB	R0,(R4)+			; TEMP,PTR
000106	010005 					MOV	R0,R5				; TEMP,*
000110	000305 					SWAB	R5
000112	110524 					MOVB	R5,(R4)+			; *,PTR
000114	112724  000004 				MOVB	#4,(R4)+			; *,PTR					1603
000120	112724  000001 				MOVB	#1,(R4)+			; *,PTR					1604
000124	010463  000022 				MOV	R4,22(R3)			; PTR,*					1605
000130	166363  000020  000022 			SUB	20(R3),22(R3)
000136	016162  000024  000014 			MOV	24(R1),14(R2)			;					1607
000144	112761  000002  000065 			MOVB	#2,65(R1)			;					1608
000152	042761  040000  000040 			BIC	#40000,40(R1)			;					1609
000160	112761  000001  000064 			MOVB	#1,64(R1)			;					1610
000166	010346 					MOV	R3,-(SP)			;					1612
000170	010146 					MOV	R1,-(SP)
000172	004767  000000V				JSR	PC,U.45
000176	022626 					CMP	(SP)+,(SP)+			;					1585
000200	000207 					RTS	PC				;					1560

; Routine Size:  65 words,	Routine Base:  $CODE$ + 3024
; Maximum stack depth per invocation:  9 words


;	  1614	
;	  1615	
;	  1616	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  45
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (19)

;	  1617	routine IRQ_RCV ( CCB, PDB) :  novalue =	!
;	  1618	
;	  1619	!++
;	  1620	! FUNCTIONAL DESCRIPTION:
;	  1621	!	This routine processes a received Interrupt Request message.
;	  1622	!
;	  1623	! FORMAL PARAMETERS:
;	  1624	!	PDB = Port Data Base Address
;	  1625	!	CCB = CCB Address
;	  1626	!
;	  1627	! IMPLICIT INPUTS:
;	  1628	!	DB = NSP Data Base Address
;	  1629	!
;	  1630	! IMPLICIT OUTPUTS:
;	  1631	!	None
;	  1632	!
;	  1633	! ROUTINE VALUE:
;	  1634	! COMPLETION CODES:
;	  1635	!	None
;	  1636	!
;	  1637	! SIDE EFFECTS:
;	  1638	!	None
;	  1639	!--
;	  1640	
;	  1641		begin
;	  1642		map CCB: ref block field(C_fields);
;	  1643		map PDB: ref block field(PORT_fields);
;	  1644	
;	  1645		MAP$( .DB[BIASports]);
;	  1646	
;	  1647		If .DB[Q_FLG]
;	  1648		Then
;	  1649			PROC_OTH_ACK(  .CCB, .PDB);
;	  1650		If .DB[SEGNUM] eql ((.PDB[ACKoth_xmt] + 1) and %o'7777')
;	  1651		Then
;	  1652			begin
;	  1653			If .DB[FCVAL] gtr 0 and
;	  1654			0 leq .PDB[FLOWint_rem] + .DB[FCVAL] and
;	  1655			127 geq .PDB[FLOWint_rem] + .DB[FCVAL] 
;	  1656			Then
;	  1657				begin
;	  1658				PDB[ACKoth_xmt] = .PDB[ACKoth_xmt] + 1;
;	  1659				PDB[FLAGoth_ack] = true;
;	  1660				PDB[FLOWint_rem] = .PDB[FLOWint_rem] + .DB[FCVAL]
;	  1661				end
;	  1662			Else
;	  1663				CALL$E( EVENT_LOG, .DB[NSPns2_pix], invflw, .PDB[FLOWint_rem], .PDB, .CCB);
;	  1664			end
;	  1665		Else
;	  1666			begin
;	  1667			If (CMP_LEQ( .DB[SEGNUM], .PDB[ACKoth_xmt]))
;	  1668			Then
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  46
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (19)

;	  1669				PDB[FLAGoth_ack] = true
;	  1670			end;
;	  1671		CCB[C_FNC] = FC_RCE;
;	  1672		LLCRS$( .CCB)
;	  1673		end;


						.SBTTL	IRQ.RCV
000000	004167  000000G			; IRQ.RCV
					U.23:	JSR	R1,$SAVE4			;					1617
000004	016700  000002G				MOV	.CRDAT+2,R0			;					1645
000010	016067  000014  000000G			MOV	14(R0),KISAR6
000016	016700  000002G				MOV	.CRDAT+2,R0			;					1647
000022	005760  000060 				TST	60(R0)
000026	100007 					BPL	1$
000030	016646  000016 				MOV	16(SP),-(SP)			; CCB,*					1649
000034	016646  000016 				MOV	16(SP),-(SP)			; PDB,*
000040	004767  000000V				JSR	PC,U.34
000044	022626 					CMP	(SP)+,(SP)+
000046	016702  000002G			1$:	MOV	.CRDAT+2,R2			;					1650
000052	016601  000014 				MOV	14(SP),R1			; PDB,*
000056	016100  000032 				MOV	32(R1),R0
000062	005200 					INC	R0
000064	010004 					MOV	R0,R4
000066	042704  170000 				BIC	#170000,R4
000072	016203  000062 				MOV	62(R2),R3
000076	020304 					CMP	R3,R4
000100	001060 					BNE	3$
000102	012703  000040 				MOV	#40,R3				;					1659
000106	060103 					ADD	R1,R3
000110	005004 					CLR	R4				;					1653
000112	156204  000071 				BISB	71(R2),R4
000116	005704 					TST	R4
000120	003425 					BLE	2$
000122	005000 					CLR	R0				;					1654
000124	156100  000040 				BISB	40(R1),R0
000130	060400 					ADD	R4,R0
000132	100420 					BMI	2$
000134	005000 					CLR	R0				;					1655
000136	156100  000040 				BISB	40(R1),R0
000142	060400 					ADD	R4,R0
000144	020027  000177 				CMP	R0,#177
000150	003011 					BGT	2$
000152	005261  000032 				INC	32(R1)				;					1658
000156	052713  040000 				BIS	#40000,(R3)			;					1659
000162	005000 					CLR	R0				;					1660
000164	151300 					BISB	(R3),R0
000166	060400 					ADD	R4,R0
000170	110013 					MOVB	R0,(R3)
000172	000441 					BR	4$				;					1653
000174	016646  000016 			2$:	MOV	16(SP),-(SP)			; CCB,*					1663
000200	010146 					MOV	R1,-(SP)
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  47
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (19)

000202	005046 					CLR	-(SP)
000204	111316 					MOVB	(R3),(SP)
000206	012746  000001 				MOV	#1,-(SP)
000212	012746  000004 				MOV	#4,-(SP)
000216	012746  000000G				MOV	#EVENT.LOG,-(SP)
000222	005046 					CLR	-(SP)
000224	116216  000047 				MOVB	47(R2),(SP)
000230	004767  000000G				JSR	PC,$CALLE
000234	062706  000016 				ADD	#16,SP
000240	000416 					BR	4$				;					1650
000242	016100  000032 			3$:	MOV	32(R1),R0			;					1667
000246	166200  000062 				SUB	62(R2),R0
000252	062700  004000 				ADD	#4000,R0
000256	042700  170000 				BIC	#170000,R0
000262	020027  004000 				CMP	R0,#4000
000266	103403 					BLO	4$
000270	052761  040000  000040 			BIS	#40000,40(R1)			;					1669
000276	016600  000016 			4$:	MOV	16(SP),R0			; CCB,*					1671
000302	112760  000004  000012 			MOVB	#4,12(R0)
000310	010004 					MOV	R0,R4				; CCB,*					1672
000312	004767  000000G				JSR	PC,$SCHED
000316	000207 					RTS	PC				;					1617

; Routine Size:  104 words,	Routine Base:  $CODE$ + 3226
; Maximum stack depth per invocation:  13 words


;	  1674	
;	  1675	
;	  1676	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  48
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (20)

;	  1677	routine INT_BLD ( CCB, PDB) :   novalue =	!
;	  1678	
;	  1679	!++
;	  1680	! FUNCTIONAL DESCRIPTION:
;	  1681	!	This routine formats an NSP Interrupt message and queues it to
;	  1682	!	Transport.
;	  1683	!
;	  1684	! FORMAL PARAMETERS:
;	  1685	!	PDB = Port Data Base Address
;	  1686	!	CCB = CCB Address
;	  1687	!
;	  1688	! IMPLICIT INPUTS:
;	  1689	!	DB = NSP Data Base Address
;	  1690	!
;	  1691	! IMPLICIT OUTPUTS:
;	  1692	!	None
;	  1693	!
;	  1694	! ROUTINE VALUE:
;	  1695	! COMPLETION CODES:
;	  1696	!	None
;	  1697	!
;	  1698	! SIDE EFFECTS:
;	  1699	!	None
;	  1700	!--
;	  1701	
;	  1702		begin
;	  1703		map CCB: ref block field(C_fields);
;	  1704		map PDB: ref block field(PORT_fields);
;	  1705	
;	  1706		bind STK_CCB = .CCB[C_STK]: block field(C_fields);
;	  1707	
;	  1708		local
;	  1709		PTR;
;	  1710	
;	  1711		PTR = .CCB[C_ADDR];
;	  1712	
;	  1713		ch$wchar_a( FLG_INT, PTR);
;	  1714		ch$wchar_a( .PDB[L_rem_addr], PTR);
;	  1715		ch$wchar_a( .PDB[H_rem_addr], PTR);
;	  1716		ch$wchar_a( .PDB[PID], PTR);
;	  1717		ch$wchar_a( .PDB[ADDran], PTR);
;	  1718		PUT2BYTES( (.PDB[ACKoth_xmt] and %o'7777') + Q_ACK^12 + true^15, PTR);
;	  1719		PUT2BYTES( (.PDB[NUMoth] and %o'7777'), PTR);
;	  1720	
;	  1721		CCB[C_CNT] = ch$diff(.PTR, .CCB[C_ADDR]);
;	  1722	
;	  1723		CCB[C_CHN] = .CCB[C_STK];
;	  1724		STK_CCB[C_STS] = .PDB[NUMoth];
;	  1725		PDB[OTHtyp] = OTHinterrupt;
;	  1726		PDB[FLAGoth_ack] = false;
;	  1727		PDB[OTHstate] = OTHsent;
;	  1728	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  49
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (20)

;	  1729		XPT_XMIT( .CCB, .PDB)	
;	  1730		end;


						.SBTTL	INT.BLD
000000	004167  000000G			; INT.BLD
					U.26:	JSR	R1,$SAVE5			;					1677
000004	016603  000020 				MOV	20(SP),R3			; CCB,*					1706
000010	016302  000004 				MOV	4(R3),R2			;					1702
000014	016304  000020 				MOV	20(R3),R4			; *,PTR					1711
000020	112724  000060 				MOVB	#60,(R4)+			; *,PTR					1713
000024	016601  000016 				MOV	16(SP),R1			; PDB,*					1714
000030	116124  000006 				MOVB	6(R1),(R4)+			; *,PTR
000034	116124  000007 				MOVB	7(R1),(R4)+			; *,PTR					1715
000040	116124  000004 				MOVB	4(R1),(R4)+			; *,PTR					1716
000044	116124  000005 				MOVB	5(R1),(R4)+			; *,PTR					1717
000050	016100  000032 				MOV	32(R1),R0			; *,TEMP				1718
000054	042700  170000 				BIC	#170000,R0			; *,TEMP
000060	162700  100000 				SUB	#100000,R0			; *,TEMP
000064	110024 					MOVB	R0,(R4)+			; TEMP,PTR
000066	010005 					MOV	R0,R5				; TEMP,*
000070	000305 					SWAB	R5
000072	110524 					MOVB	R5,(R4)+			; *,PTR
000074	016100  000024 				MOV	24(R1),R0			; *,TEMP				1719
000100	042700  170000 				BIC	#170000,R0			; *,TEMP
000104	110024 					MOVB	R0,(R4)+			; TEMP,PTR
000106	010005 					MOV	R0,R5				; TEMP,*
000110	000305 					SWAB	R5
000112	110524 					MOVB	R5,(R4)+			; *,PTR
000114	010463  000022 				MOV	R4,22(R3)			; PTR,*					1721
000120	166363  000020  000022 			SUB	20(R3),22(R3)
000126	010263  000002 				MOV	R2,2(R3)			;					1723
000132	016162  000024  000014 			MOV	24(R1),14(R2)			;					1724
000140	112761  000001  000065 			MOVB	#1,65(R1)			;					1725
000146	042761  040000  000040 			BIC	#40000,40(R1)			;					1726
000154	112761  000001  000064 			MOVB	#1,64(R1)			;					1727
000162	010346 					MOV	R3,-(SP)			;					1729
000164	010146 					MOV	R1,-(SP)
000166	004767  000000V				JSR	PC,U.45
000172	022626 					CMP	(SP)+,(SP)+			;					1702
000174	000207 					RTS	PC				;					1677

; Routine Size:  63 words,	Routine Base:  $CODE$ + 3546
; Maximum stack depth per invocation:  9 words


;	  1731	
;	  1732	
;	  1733	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  50
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (21)

;	  1734	routine INT_RECVD ( CCB, PDB): novalue = !
;	  1735	
;	  1736	!++
;	  1737	! FUNCTIONAL DESCRIPTION:
;	  1738	!	This routine generates an INTERRUPT-RECIEVED call to Session Control.
;	  1739	!
;	  1740	! FORMAL PARAMETERS:
;	  1741	!	PDB = Port Data Base Address
;	  1742	!	CCB = CCB Address
;	  1743	!
;	  1744	! IMPLICIT INPUTS:
;	  1745	!	DB = NSP Data Base Address
;	  1746	!
;	  1747	! IMPLICIT OUTPUTS:
;	  1748	!	None
;	  1749	!
;	  1750	! ROUTINE VALUE:
;	  1751	! COMPLETION CODES:
;	  1752	!	None
;	  1753	!
;	  1754	! SIDE EFFECTS:
;	  1755	!	None
;	  1756	!--
;	  1757	
;	  1758	
;	  1759		begin
;	  1760		map PDB: ref block field(PORT_fields);
;	  1761		map CCB: ref block field(C_fields);
;	  1762	
;	  1763		bind STK_CCB = .CCB[C_STK]: block field(C_fields);
;	  1764	
;	  1765		local
;	  1766		PTR,
;	  1767		CHR;
;	  1768	
;	  1769		PTR = ch$plus( .STK_CCB[C_ADDR], 6);
;	  1770		MAP$( .STK_CCB[C_BIAS]);
;	  1771		CHR = ch$rchar( .PTR);
;	  1772	
;	  1773		If .CHR<7, 1>
;	  1774		Then
;	  1775			CHR = 9
;	  1776		Else
;	  1777			CHR = 7;
;	  1778	
;	  1779		MAP$( .DB[BIASports]);
;	  1780		CCB[C_FNC] = FC_RCP;
;	  1781		CCB[C_MOD] = N_RINT;
;	  1782		CCB[C_LIX] = .PDB[PID];
;	  1783		CCB[C_BIAS] = .STK_CCB[C_BIAS];
;	  1784		CCB[C_CNT] = .STK_CCB[C_CNT] - .CHR;
;	  1785		CCB[C_ADDR] = ch$plus( .STK_CCB[C_ADDR], .CHR);
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  51
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (21)

;	  1786		CCB[C_STS] = N$SSUC;
;	  1787		CCB[C_PIX] = .DB[NSPsc_pix];
;	  1788		LLCRS$( .CCB);
;	  1789		end;


						.SBTTL	INT.RECVD
000000	004167  000000G			; INT.RECVD
					U.28:	JSR	R1,$SAVE4			;					1734
000004	016604  000016 				MOV	16(SP),R4			; CCB,*					1763
000010	016402  000004 				MOV	4(R4),R2			;					1759
000014	016200  000020 				MOV	20(R2),R0			; *,PTR					1769
000020	062700  000006 				ADD	#6,R0				; *,PTR
000024	016267  000016  000000G			MOV	16(R2),KISAR6			;					1770
000032	005001 					CLR	R1				; CHR					1771
000034	151001 					BISB	(R0),R1				; PTR,CHR
000036	100003 					BPL	1$				;					1773
000040	012701  000011 				MOV	#11,R1				; *,CHR					1775
000044	000402 					BR	2$				;					1773
000046	012701  000007 			1$:	MOV	#7,R1				; *,CHR					1777
000052	016700  000002G			2$:	MOV	.CRDAT+2,R0			;					1779
000056	016067  000014  000000G			MOV	14(R0),KISAR6
000064	112764  000016  000012 			MOVB	#16,12(R4)			;					1780
000072	112764  000012  000013 			MOVB	#12,13(R4)			;					1781
000100	016600  000014 				MOV	14(SP),R0			; PDB,*					1782
000104	116064  000004  000010 			MOVB	4(R0),10(R4)
000112	016264  000016  000016 			MOV	16(R2),16(R4)			;					1783
000120	016264  000022  000022 			MOV	22(R2),22(R4)			;					1784
000126	160164  000022 				SUB	R1,22(R4)			; CHR,*
000132	016264  000020  000020 			MOV	20(R2),20(R4)			;					1785
000140	060164  000020 				ADD	R1,20(R4)			; CHR,*
000144	012764  000001  000014 			MOV	#1,14(R4)			;					1786
000152	016700  000002G				MOV	.CRDAT+2,R0			;					1787
000156	116064  000044  000011 			MOVB	44(R0),11(R4)
000164	004767  000000G				JSR	PC,$SCHED			;					1788
000170	000207 					RTS	PC				;					1734

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


;	  1790	
;	  1791	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  52
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (22)

;	  1792	routine INT_RCV ( CCB, PDB) :  novalue =	!
;	  1793	
;	  1794	!++
;	  1795	! FUNCTIONAL DESCRIPTION:
;	  1796	!	This routine processses a received Interrupt message.
;	  1797	!
;	  1798	! FORMAL PARAMETERS:
;	  1799	!	PDB = Port Data Base Address
;	  1800	!	CCB = CCB Address
;	  1801	!
;	  1802	! IMPLICIT INPUTS:
;	  1803	!	DB = NSP Data Base Address
;	  1804	!
;	  1805	! IMPLICIT OUTPUTS:
;	  1806	!	None
;	  1807	!
;	  1808	! ROUTINE VALUE:
;	  1809	! COMPLETION CODES:
;	  1810	!	None
;	  1811	!
;	  1812	! SIDE EFFECTS:
;	  1813	!	None
;	  1814	!--
;	  1815	
;	  1816		begin
;	  1817		map CCB: ref block field(C_fields);
;	  1818		map PDB: ref block field(PORT_fields);
;	  1819	
;	  1820		local
;	  1821		temp,
;	  1822		NDB : ref block field(NODE_fields),	
;	  1823		WK_CCB: ref block field(c_fields);
;	  1824	
;	  1825		NDB = .PDB[NODElnk];
;	  1826		temp = 7;
;	  1827		MAP$( .DB[BIASports]);
;	  1828	
;	  1829		If .DB[Q_FLG]
;	  1830		Then
;	  1831			begin
;	  1832			temp = 9;
;	  1833			PROC_OTH_ACK( .CCB, .PDB);
;	  1834			end;
;	  1835		If .DB[SEGNUM] eql (.PDB[ACKoth_xmt] + 1 and %o'7777') and
;	  1836		.PDB[COUNTloc_int] gtr 0 and
;	  1837		.PDB[BUFFrcv_int] eql 0
;	  1838		Then
;	  1839			begin
;	  1840			PDB[COUNTloc_int] = .PDB[COUNTloc_int] - 1;
;	  1841			PDB[FLAGoth_ack] = true;
;	  1842			PDB[ACKoth_xmt] = .PDB[ACKoth_xmt] + 1;
;	  1843			MAP$( .DB[BIASnodes]);
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  53
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (22)

;	  1844			DADD( NDB[NDb_rcv], .CCB[C_CNT] - .temp);
;	  1845			MAP$( .DB[BIASports]);
;	  1846	
;	  1847			If CCB_GET( WK_CCB, .PDB)
;	  1848			Then
;	  1849				begin
;	  1850				WK_CCB[C_STK] = .CCB;
;	  1851				INT_RECVD( .WK_CCB, .PDB);
;	  1852				return
;	  1853				end;
;	  1854			PDB[BUFFrcv_int] = .CCB;
;	  1855			end;
;	  1856		If (CMP_LEQ( .DB[SEGNUM], .PDB[ACKoth_xmt]))
;	  1857		Then
;	  1858			PDB[FLAGoth_ack] = true;
;	  1859		CCB[C_FNC] = FC_RCE;
;	  1860		LLCRS$( .CCB)
;	  1861		end;


						.SBTTL	INT.RCV
000000	004167  000000G			; INT.RCV
					U.27:	JSR	R1,$SAVE5			;					1792
000004	005746 					TST	-(SP)
000006	016602  000020 				MOV	20(SP),R2			; PDB,*					1825
000012	016203  000010 				MOV	10(R2),R3			; *,NDB
000016	012704  000007 				MOV	#7,R4				; *,TEMP				1826
000022	016700  000002G				MOV	.CRDAT+2,R0			;					1827
000026	016067  000014  000000G			MOV	14(R0),KISAR6
000034	016700  000002G				MOV	.CRDAT+2,R0			;					1829
000040	005760  000060 				TST	60(R0)
000044	100010 					BPL	1$
000046	012704  000011 				MOV	#11,R4				; *,TEMP				1832
000052	016646  000022 				MOV	22(SP),-(SP)			; CCB,*					1833
000056	010246 					MOV	R2,-(SP)
000060	004767  000000V				JSR	PC,U.34
000064	022626 					CMP	(SP)+,(SP)+			;					1831
000066	016700  000002G			1$:	MOV	.CRDAT+2,R0			;					1835
000072	012701  000032 				MOV	#32,R1
000076	060201 					ADD	R2,R1
000100	011105 					MOV	(R1),R5
000102	005205 					INC	R5
000104	010546 					MOV	R5,-(SP)
000106	042716  170000 				BIC	#170000,(SP)
000112	016046  000062 				MOV	62(R0),-(SP)
000116	022626 					CMP	(SP)+,(SP)+
000120	001065 					BNE	3$
000122	005762  000056 				TST	56(R2)				;					1836
000126	003462 					BLE	3$
000130	005762  000046 				TST	46(R2)				;					1837
000134	001057 					BNE	3$
000136	005362  000056 				DEC	56(R2)				;					1840
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  54
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (22)

000142	052762  040000  000040 			BIS	#40000,40(R2)			;					1841
000150	005211 					INC	(R1)				;					1842
000152	016067  000030  000000G			MOV	30(R0),KISAR6			;					1843
000160	010346 					MOV	R3,-(SP)			; NDB,*					1844
000162	062716  000010 				ADD	#10,(SP)
000166	016603  000024 				MOV	24(SP),R3			; CCB,*
000172	016346  000022 				MOV	22(R3),-(SP)
000176	160416 					SUB	R4,(SP)				; TEMP,*
000200	004767  174426 				JSR	PC,U.15
000204	016700  000002G				MOV	.CRDAT+2,R0			;					1845
000210	016067  000014  000000G			MOV	14(R0),KISAR6
000216	012716  000004 				MOV	#4,(SP)				;					1847
000222	060616 					ADD	SP,(SP)				; WK.CCB,*
000224	010246 					MOV	R2,-(SP)
000226	004767  173774 				JSR	PC,U.12
000232	005726 					TST	(SP)+
000234	006000 					ROR	R0
000236	103013 					BCC	2$
000240	016600  000004 				MOV	4(SP),R0			; WK.CCB,*				1850
000244	010360  000004 				MOV	R3,4(R0)
000250	010016 					MOV	R0,(SP)				; WK.CCB,*				1851
000252	010246 					MOV	R2,-(SP)
000254	004767  177326 				JSR	PC,U.28
000260	062706  000006 				ADD	#6,SP				;					1847
000264	000432 					BR	5$				;					1849
000266	010362  000046 			2$:	MOV	R3,46(R2)			;					1854
000272	022626 					CMP	(SP)+,(SP)+			;					1839
000274	016700  000002G			3$:	MOV	.CRDAT+2,R0			;					1856
000300	011101 					MOV	(R1),R1
000302	166001  000062 				SUB	62(R0),R1
000306	062701  004000 				ADD	#4000,R1
000312	042701  170000 				BIC	#170000,R1
000316	020127  004000 				CMP	R1,#4000
000322	103403 					BLO	4$
000324	052762  040000  000040 			BIS	#40000,40(R2)			;					1858
000332	016600  000022 			4$:	MOV	22(SP),R0			; CCB,*					1859
000336	112760  000004  000012 			MOVB	#4,12(R0)
000344	010004 					MOV	R0,R4				; CCB,*					1860
000346	004767  000000G				JSR	PC,$SCHED
000352	005726 				5$:	TST	(SP)+				;					1792
000354	000207 					RTS	PC

; Routine Size:  119 words,	Routine Base:  $CODE$ + 4136
; Maximum stack depth per invocation:  11 words


;	  1862	
;	  1863	
;	  1864	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  55
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (23)

;	  1865	routine INTERRUPT_TO_SND ( PDB) : =	!
;	  1866	
;	  1867	!++
;	  1868	! FUNCTIONAL DESCRIPTION:
;	  1869	!	This routine tests all the conditions needed to transmit an
;	  1870	!	Interrupt message.
;	  1871	!
;	  1872	! FORMAL PARAMETERS:
;	  1873	!	PDB = Port Data Base Address
;	  1874	!
;	  1875	! IMPLICIT INPUTS:
;	  1876	!	DB = NSP Data Base Address
;	  1877	!
;	  1878	! IMPLICIT OUTPUTS:
;	  1879	!	None
;	  1880	!
;	  1881	! ROUTINE VALUE:
;	  1882	! COMPLETION CODES:
;	  1883	!	None
;	  1884	!
;	  1885	! SIDE EFFECTS:
;	  1886	!	None
;	  1887	!--
;	  1888	
;	  1889		begin
;	  1890		map PDB: ref block field(PORT_fields);
;	  1891	
;	  1892		IF .PDB[PORTstate] neq N$SRUN
;	  1893		Then
;	  1894			return false;
;	  1895		If ((.PDB[INThead] neq 0) and (.PDB[OTHstate] eql OTHready)  and 
;	  1896		(.PDB[FLOWint_rem] gtr 0)) or .PDB[OTHstate] eql OTHtimeout
;	  1897		Then
;	  1898			return true;
;	  1899		return false;
;	  1900		end;


						.SBTTL	INTERRUPT.TO.SND
000000	016600  000002 			; INTERRUPT.TO.SND
					U.24:	MOV	2(SP),R0			; PDB,*					1892
000004	121027  000013 				CMPB	(R0),#13
000010	001020 					BNE	3$				;					1894
000012	005760  000076 				TST	76(R0)				;					1895
000016	001406 					BEQ	1$
000020	105760  000064 				TSTB	64(R0)
000024	001003 					BNE	1$
000026	105760  000040 				TSTB	40(R0)				;					1896
000032	001004 					BNE	2$
000034	126027  000064  000002 		1$:	CMPB	64(R0),#2
000042	001003 					BNE	3$
000044	012700  000001 			2$:	MOV	#1,R0				;					1898
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  56
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (23)

000050	000207 					RTS	PC
000052	005000 				3$:	CLR	R0				;					1865
000054	000207 					RTS	PC

; Routine Size:  23 words,	Routine Base:  $CODE$ + 4514
; Maximum stack depth per invocation:  0 words


;	  1901	
;	  1902	
;	  1903	
;	  1904	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  57
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (24)

;	  1905	routine INTR_REQ_TO_SND ( PDB) : =	!
;	  1906	
;	  1907	!++
;	  1908	! FUNCTIONAL DESCRIPTION:
;	  1909	!	This routine tests all the conditions needed to transmit an Interrupt
;	  1910	!	Request message.
;	  1911	!
;	  1912	! FORMAL PARAMETERS:
;	  1913	!	PDB = Port Data Base Address
;	  1914	!
;	  1915	! IMPLICIT INPUTS:
;	  1916	!	DB = NSP Data Base Address
;	  1917	!
;	  1918	! IMPLICIT OUTPUTS:
;	  1919	!	None
;	  1920	!
;	  1921	! ROUTINE VALUE:
;	  1922	! COMPLETION CODES:
;	  1923	!	None
;	  1924	!
;	  1925	! SIDE EFFECTS:
;	  1926	!	None
;	  1927	!--
;	  1928	
;	  1929		begin
;	  1930		map PDB: ref block field(PORT_fields);
;	  1931	
;	  1932		If .PDB[PORTstate] neq N$SRUN
;	  1933		Then
;	  1934			return false;
;	  1935		If (.PDB[INTRhead] neq 0) and (.PDB[OTHstate] eql OTHready) and
;	  1936		(.PDB[COUNTloc_int] eql 0) and (.PDB[BUFFrcv_int] eql 0)
;	  1937		Then
;	  1938			return true;
;	  1939		return false;
;	  1940		end;


						.SBTTL	INTR.REQ.TO.SND
000000	016600  000002 			; INTR.REQ.TO.SND
					U.25:	MOV	2(SP),R0			; PDB,*					1932
000004	121027  000013 				CMPB	(R0),#13
000010	001017 					BNE	1$				;					1934
000012	005760  000106 				TST	106(R0)				;					1935
000016	001414 					BEQ	1$
000020	105760  000064 				TSTB	64(R0)
000024	001011 					BNE	1$
000026	005760  000056 				TST	56(R0)				;					1936
000032	001006 					BNE	1$
000034	005760  000046 				TST	46(R0)
000040	001003 					BNE	1$
000042	012700  000001 				MOV	#1,R0				;					1938
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  58
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (24)

000046	000207 					RTS	PC
000050	005000 				1$:	CLR	R0				;					1905
000052	000207 					RTS	PC

; Routine Size:  22 words,	Routine Base:  $CODE$ + 4572
; Maximum stack depth per invocation:  0 words


;	  1941	
;	  1942	
;	  1943	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  59
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (25)

;	  1944	routine LS_RCV ( CCB, PDB) :  novalue =	!
;	  1945	
;	  1946	!++
;	  1947	! FUNCTIONAL DESCRIPTION:
;	  1948	!	This routine dispatches to th appropriate routine bases on the
;	  1949	!	type of Link Service message received.
;	  1950	!
;	  1951	! FORMAL PARAMETERS:
;	  1952	!	PDB = Port Data Base Address
;	  1953	!	CCB = CCB Address
;	  1954	!
;	  1955	! IMPLICIT INPUTS:
;	  1956	!	DB = NSP Data Base Address
;	  1957	!
;	  1958	! IMPLICIT OUTPUTS:
;	  1959	!	None
;	  1960	!
;	  1961	! ROUTINE VALUE:
;	  1962	! COMPLETION CODES:
;	  1963	!	None
;	  1964	!
;	  1965	! SIDE EFFECTS:
;	  1966	!	None
;	  1967	!--
;	  1968	
;	  1969		begin
;	  1970		map CCB: ref block field(C_fields);
;	  1971		map PDB: ref block field(PORT_fields);
;	  1972	
;	  1973		local PTR;
;	  1974	
;	  1975		MAP$( .CCB[C_BIAS]);
;	  1976	
;	  1977		If not .DB[Q_FLG]
;	  1978		Then
;	  1979			PTR = ch$plus( .CCB[C_ADDR], 7 )
;	  1980		Else
;	  1981			PTR = ch$plus( .CCB[C_ADDR], 9 );
;	  1982		DB[LSFLAGS] = ch$rchar_a( PTR);
;	  1983		DB[FCVAL] = ch$rchar_a( PTR);
;	  1984	
;	  1985		MAP$( .DB[BIASports]);
;	  1986	
;	  1987		If not (.DB[LSFLAGS] and LS_RSV)
;	  1988		Then
;	  1989			begin
;	  1990			If .DB[FCVALINT] eql FC_INTERRUPT
;	  1991			Then
;	  1992				IRQ_RCV( .CCB, .PDB)
;	  1993			Else
;	  1994				DRQ_RCV( .CCB, .PDB)
;	  1995			end
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  60
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (25)

;	  1996		Else
;	  1997			begin
;	  1998			CALL$E( EVENT_LOG, .DB[NSPns2_pix], invmsg, 0, .PDB, .CCB);
;	  1999			CCB[C_FNC] = FC_RCE;
;	  2000			LLCRS$( .CCB)
;	  2001			end
;	  2002		end;


						.SBTTL	LS.RCV
000000	004167  000000G			; LS.RCV
					U.29:	JSR	R1,$SAVE4			;					1944
000004	016604  000016 				MOV	16(SP),R4			; CCB,*					1975
000010	016467  000016  000000G			MOV	16(R4),KISAR6
000016	016701  000002G				MOV	.CRDAT+2,R1			;					1977
000022	005761  000060 				TST	60(R1)
000026	100405 					BMI	1$
000030	016400  000020 				MOV	20(R4),R0			; *,PTR					1979
000034	062700  000007 				ADD	#7,R0				; *,PTR
000040	000404 					BR	2$				;					1977
000042	016400  000020 			1$:	MOV	20(R4),R0			; *,PTR					1981
000046	062700  000011 				ADD	#11,R0				; *,PTR
000052	012702  000056 			2$:	MOV	#56,R2				;					1982
000056	060102 					ADD	R1,R2
000060	112062  000001 				MOVB	(R0)+,1(R2)			; PTR,*
000064	112061  000071 				MOVB	(R0)+,71(R1)			; PTR,*					1983
000070	016167  000014  000000G			MOV	14(R1),KISAR6			;					1985
000076	016600  000014 				MOV	14(SP),R0			; PDB,*					1992
000102	011202 					MOV	(R2),R2				;					1990
000104	042702  171777 				BIC	#171777,R2
000110	020227  002000 				CMP	R2,#2000
000114	001005 					BNE	3$
000116	010446 					MOV	R4,-(SP)			;					1992
000120	010046 					MOV	R0,-(SP)
000122	004767  176232 				JSR	PC,U.23
000126	000404 					BR	4$				;					1989
000130	010446 				3$:	MOV	R4,-(SP)			;					1994
000132	010046 					MOV	R0,-(SP)
000134	004767  174772 				JSR	PC,U.19
000140	022626 				4$:	CMP	(SP)+,(SP)+			;					1969
000142	000207 					RTS	PC				;					1944

; Routine Size:  50 words,	Routine Base:  $CODE$ + 4646
; Maximum stack depth per invocation:  13 words


;	  2003	
;	  2004	
;	  2005	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  61
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (26)

;	  2006	global routine MSG_RCV ( CCB, PDB) :CALL$ novalue =	!
;	  2007	
;	  2008	!++
;	  2009	! FUNCTIONAL DESCRIPTION:
;	  2010	!	This routine dispatches on the type of NSP message received.
;	  2011	!
;	  2012	! FORMAL PARAMETERS:
;	  2013	!	PDB = Port Data Base Address
;	  2014	!	CCB = CCB Address
;	  2015	!
;	  2016	! IMPLICIT INPUTS:
;	  2017	!	DB = NSP Data Base Address
;	  2018	!
;	  2019	! IMPLICIT OUTPUTS:
;	  2020	!	None
;	  2021	!
;	  2022	! ROUTINE VALUE:
;	  2023	! COMPLETION CODES:
;	  2024	!	None
;	  2025	!
;	  2026	! SIDE EFFECTS:
;	  2027	!	None
;	  2028	!--
;	  2029	
;	  2030		begin
;	  2031		map CCB: ref block field(C_fields);
;	  2032		map PDB: ref block field(PORT_fields);
;	  2033	
;	  2034		local
;	  2035		SC_CCB:ref block field(C_fields),
;	  2036		PTR;
;	  2037	
;	  2038		MAP$( .CCB[C_BIAS]);
;	  2039		PTR = ch$plus( .CCB[C_ADDR], 5 );
;	  2040		DB[ACKNUM] = GET2BYTES( PTR);
;	  2041	
;	  2042		If not .DB[Q_FLG] 
;	  2043		Then
;	  2044			PTR = ch$plus( .PTR, -2);
;	  2045	
;	  2046		MAP$( .DB[BIASports]);
;	  2047	
;	  2048		If .PDB[PORTstate] eql N$SCC or
;	  2049		.PDB[PORTstate] eql N$SRUN or
;	  2050		(.PDB[PORTstate] eql N$SDI and
;	  2051		(CMP_NEQ(.PDB[NUMhigh], .PDB[ACKrcv_dat])))
;	  2052		Then
;	  2053			begin
;	  2054			If .PDB[PORTstate] eql N$SCC and
;	  2055			(.DB[MSGFLG] eql FLG_INT or .DB[MSGFLG] eql FLG_REQ or
;	  2056			.DB[MSGFLG] eql FLG_DAT_ACK)
;	  2057			Then
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  62
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (26)

;	  2058				begin
;	  2059				PDB[PORTstate] = N$SRUN;
;	  2060				UPDATE_DELAY( .PDB);
;	  2061				PDB[CONFIDENCE] = true;
;	  2062				PDB[TIMERcon] = 0;
;	  2063				PDB[COUNTdat_retrans] = 0;
;	  2064				If CMQRM$( PDB[MSG_queue], SC_CCB)
;	  2065				Then
;	  2066					begin
;	  2067					SC_CCB[C_STS] = N$SSUC;
;	  2068					SC_CCB[C_FNC] = FC_XCP;
;	  2069					LLCRS$( .SC_CCB);
;	  2070					end
;	  2071				end;
;	  2072			PDB[TIMERinact] = .DB[NSPact_tim];
;	  2073	
;	  2074			IF not ((.DB[MSGFLG] eql FLG_DAT_ACK) or
;	  2075			(.DB[MSGFLG] eql FLG_OTH_ACK))
;	  2076			Then
;	  2077				begin
;	  2078				MAP$( .CCB[C_BIAS]);
;	  2079				DB[SEGNUM] = GET2BYTES( PTR);
;	  2080				MAP$( .DB[BIASports]);
;	  2081				end;
;	  2082	
;	  2083			Selectone .DB[MSGFLG] of
;	  2084				Set
;	  2085				[FLG_INT]:	INT_RCV( .CCB, .PDB);
;	  2086				[FLG_REQ]:	LS_RCV( .CCB, .PDB);
;	  2087				[FLG_DAT_ACK]:	ACK_RCV( .CCB, .PDB);
;	  2088				[FLG_OTH_ACK]:	ACK_OTH_RCV( .CCB, .PDB);
;	  2089				[FLG_EOM]:	D_RCV( .CCB, .PDB);
;	  2090				[FLG_BOM]:	D_RCV( .CCB, .PDB);
;	  2091				[FLG_BEOM]:	D_RCV( .CCB, .PDB);
;	  2092				[FLG_NBEOM]:	D_RCV( .CCB, .PDB);
;	  2093				Tes;
;	  2094			end
;	  2095		Else
;	  2096			begin
;	  2097			CCB[C_FNC] = FC_RCE;
;	  2098			LLCRS$( .CCB)
;	  2099			end;
;	  2100		CALL$L(SND_MSG, .PDB)
;	  2101		end;


						.SBTTL	MSG.RCV
000000	016502  000002 			MSG.RCV::
					U.30:	MOV	2(R5),R2			; CCB(.AP.),*				2038
000004	016267  000016  000000G			MOV	16(R2),KISAR6
000012	016201  000020 				MOV	20(R2),R1			; *,PTR					2039
000016	016703  000002G				MOV	.CRDAT+2,R3			;					2040
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  63
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (26)

000022	062701  000005 				ADD	#5,R1				; *,PTR
000026	105000 					CLRB	R0				; TEMP
000030	152100 					BISB	(R1)+,R0			; PTR,TEMP
000032	010046 					MOV	R0,-(SP)			; TEMP,*
000034	112166  000001 				MOVB	(R1)+,1(SP)			; PTR,*
000040	012600 					MOV	(SP)+,R0			; *,TEMP
000042	010063  000060 				MOV	R0,60(R3)			; TEMP,*
000046	100402 					BMI	1$				;					2042
000050	162701  000002 				SUB	#2,R1				; *,PTR					2044
000054	016367  000014  000000G		1$:	MOV	14(R3),KISAR6			;					2046
000062	016505  000004 				MOV	4(R5),R5			; PDB(.AP.),*				2048
000066	005004 					CLR	R4
000070	121527  000005 				CMPB	(R5),#5
000074	001002 					BNE	2$
000076	005204 					INC	R4
000100	000415 					BR	3$
000102	121527  000013 			2$:	CMPB	(R5),#13			;					2049
000106	001412 					BEQ	3$
000110	121527  000014 				CMPB	(R5),#14			;					2050
000114	001177 					BNE	14$
000116	016500  000034 				MOV	34(R5),R0			;					2051
000122	166500  000026 				SUB	26(R5),R0
000126	032700  007777 				BIT	#7777,R0
000132	001570 					BEQ	14$
000134	006004 				3$:	ROR	R4				;					2054
000136	103047 					BCC	6$
000140	005000 					CLR	R0				;					2055
000142	156300  000052 				BISB	52(R3),R0
000146	020027  000060 				CMP	R0,#60
000152	001406 					BEQ	4$
000154	020027  000020 				CMP	R0,#20
000160	001403 					BEQ	4$
000162	020027  000004 				CMP	R0,#4				;					2056
000166	001033 					BNE	6$
000170	112715  000013 			4$:	MOVB	#13,(R5)			;					2059
000174	010546 					MOV	R5,-(SP)			;					2060
000176	004767  000000V				JSR	PC,U.44
000202	152765  000020  000042 			BISB	#20,42(R5)			;					2061
000210	005065  000016 				CLR	16(R5)				;					2062
000214	105065  000052 				CLRB	52(R5)				;					2063
000220	012703  000102 				MOV	#102,R3				;					2064
000224	060503 					ADD	R5,R3
000226	004767  000000G				JSR	PC,$CMQRM
000232	103410 					BCS	5$
000234	012764  000001  000014 			MOV	#1,14(R4)			; *,*(SC.CCB)				2067
000242	112764  000014  000012 			MOVB	#14,12(R4)			; *,*(SC.CCB)				2068
000250	004767  000000G				JSR	PC,$SCHED			;					2069
000254	005726 				5$:	TST	(SP)+				;					2058
000256	016700  000002G			6$:	MOV	.CRDAT+2,R0			;					2072
000262	116065  000004  000036 			MOVB	4(R0),36(R5)
000270	126027  000052  000004 			CMPB	52(R0),#4			;					2074
000276	001422 					BEQ	7$
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  64
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (26)

000300	126027  000052  000024 			CMPB	52(R0),#24			;					2075
000306	001416 					BEQ	7$
000310	016267  000016  000000G			MOV	16(R2),KISAR6			;					2078
000316	105003 					CLRB	R3				; TEMP					2079
000320	152103 					BISB	(R1)+,R3			; PTR,TEMP
000322	010346 					MOV	R3,-(SP)			; TEMP,*
000324	112166  000001 				MOVB	(R1)+,1(SP)			; PTR,*
000330	012603 					MOV	(SP)+,R3			; *,TEMP
000332	010360  000062 				MOV	R3,62(R0)			; TEMP,*
000336	016067  000014  000000G			MOV	14(R0),KISAR6			;					2080
000344	005003 				7$:	CLR	R3				;					2083
000346	156003  000052 				BISB	52(R0),R3
000352	020327  000060 				CMP	R3,#60
000356	001005 					BNE	8$
000360	010246 					MOV	R2,-(SP)			;					2085
000362	010546 					MOV	R5,-(SP)
000364	004767  176534 				JSR	PC,U.27
000370	000447 					BR	13$
000372	020327  000020 			8$:	CMP	R3,#20				;					2083
000376	001005 					BNE	9$
000400	010246 					MOV	R2,-(SP)			;					2086
000402	010546 					MOV	R5,-(SP)
000404	004767  177224 				JSR	PC,U.29
000410	000437 					BR	13$
000412	020327  000004 			9$:	CMP	R3,#4				;					2083
000416	001005 					BNE	10$
000420	010246 					MOV	R2,-(SP)			;					2087
000422	010546 					MOV	R5,-(SP)
000424	004767  172662 				JSR	PC,U.10
000430	000427 					BR	13$
000432	020327  000024 			10$:	CMP	R3,#24				;					2083
000436	001005 					BNE	11$
000440	010246 					MOV	R2,-(SP)			;					2088
000442	010546 					MOV	R5,-(SP)
000444	004767  172520 				JSR	PC,U.9
000450	000417 					BR	13$
000452	020327  000100 			11$:	CMP	R3,#100				;					2083
000456	001410 					BEQ	12$				;					2089
000460	020327  000040 				CMP	R3,#40				;					2083
000464	001405 					BEQ	12$				;					2090
000466	020327  000140 				CMP	R3,#140				;					2083
000472	001402 					BEQ	12$				;					2091
000474	005703 					TST	R3				;					2083
000476	001014 					BNE	15$
000500	010246 				12$:	MOV	R2,-(SP)			;					2092
000502	010546 					MOV	R5,-(SP)
000504	004767  175114 				JSR	PC,U.20
000510	022626 				13$:	CMP	(SP)+,(SP)+
000512	000406 					BR	15$				;					2048
000514	112762  000004  000012 		14$:	MOVB	#4,12(R2)			;					2097
000522	010204 					MOV	R2,R4				;					2098
000524	004767  000000G				JSR	PC,$SCHED
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  65
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (26)

000530	010546 				15$:	MOV	R5,-(SP)			;					2100
000532	012746  000001 				MOV	#1,-(SP)
000536	012746  000000V				MOV	#U.38,-(SP)
000542	004767  000000G				JSR	PC,$CALL
000546	062706  000006 				ADD	#6,SP				;					2030
000552	000207 					RTS	PC				;					2006

; Routine Size:  182 words,	Routine Base:  $CODE$ + 5012
; Maximum stack depth per invocation:  4 words


;	  2102	
;	  2103	
;	  2104	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  66
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (27)

;	  2105	global routine ONCE_A_SECOND : CALL$ novalue =	!
;	  2106	
;	  2107	!++
;	  2108	! FUNCTIONAL DESCRIPTION:
;	  2109	!	This routine is called every second to attempt to clear up any
;	  2110	!	resource deadlocks that may have occured.
;	  2111	!
;	  2112	! FORMAL PARAMETERS:
;	  2113	!	None
;	  2114	!
;	  2115	! IMPLICIT INPUTS:
;	  2116	!	DB = NSP data base address
;	  2117	!
;	  2118	! IMPLICIT OUTPUTS:
;	  2119	!	None
;	  2120	!
;	  2121	! ROUTINE VALUE:
;	  2122	! COMPLETION CODES:
;	  2123	!	None
;	  2124	!
;	  2125	! SIDE EFFECTS:
;	  2126	!	None
;	  2127	!--
;	  2128	
;	  2129	
;	  2130	!********************************************************************
;	  2131	! Now check thru the Session Control ports for any stalled transmits
;	  2132	!********************************************************************
;	  2133	
;	  2134	
;	  2135		begin
;	  2136	
;	  2137		local PORT: ref blockvector[0, PDB_size] field(PORT_fields),
;	  2138		CCB: ref block field(C_fields);
;	  2139	
;	  2140		port = .DB[ADDRports];
;	  2141		MAP$( .DB[BIASports]);
;	  2142		
;	  2143		Incr J from 0 to (.DB[NSPtotal] - 1) do
;	  2144			begin
;	  2145			bind PDB = PORT[.DB[NSPnxt_port],0,0,0,0]: block field(PORT_fields);
;	  2146			If .DB[NSPnxt_port] + 1 lss .DB[NSPtotal]
;	  2147			Then
;	  2148				DB[NSPnxt_port] = .DB[NSPnxt_port] + 1
;	  2149			Else
;	  2150				DB[NSPnxt_port] = 0;
;	  2151			If .PDB[FLAGinuse]
;	  2152			Then
;	  2153				begin
;	  2154				If .PDB[BUFFctl] neq 0
;	  2155				Then
;	  2156					CALL$E(CTL_RECVD, .DB[NSPns2_pix], PDB);
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  67
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (27)

;	  2157				If .PDB[RCVmsg_queue] neq 0
;	  2158				Then
;	  2159					begin
;	  2160					If CCB_GET( CCB, PDB)
;	  2161					Then
;	  2162						begin
;	  2163						CMQRM$( PDB[RCVmsg_queue], CCB[C_STK]);
;	  2164						DATA_RECVD( .CCB, PDB);
;	  2165						end;
;	  2166					end;
;	  2167				If .PDB[OTHres]
;	  2168				Then
;	  2169					begin
;	  2170					If .PDB[PORTstate] eql N$SRUN
;	  2171					Then
;	  2172						begin
;	  2173						PDB[OTHres] = false;
;	  2174						CALL$L( TRICKLE, PDB);
;	  2175						end
;	  2176					Else
;	  2177						begin
;	  2178						If CCB_HDR_GET( 0, CCB, PDB)
;	  2179						Then
;	  2180							begin
;	  2181							PDB[OTHres] = false;
;	  2182							If not CMQRM$( PDB[MSG_queue], CCB[C_STK])
;	  2183							Then
;	  2184								SIGNAL_STOP( NSP$_ICE);
;	  2185							Selectone .PDB[PORTstate] of
;	  2186								Set
;	  2187								[N$SCI]:
;	  2188								CALL$E(CI_BLD, .DB[NSPns2_pix], .CCB, PDB);
;	  2189								[N$SCC]:
;	  2190								CALL$E(CC_BLD, .DB[NSPns2_pix], .CCB, PDB);
;	  2191								[N$SDI, N$SDR]:
;	  2192								CALL$E(DI_BLD, .DB[NSPns2_pix], .CCB, PDB);
;	  2193								Tes;
;	  2194							end;
;	  2195						end;
;	  2196					end;
;	  2197				If .PDB[DATres] 
;	  2198				Then
;	  2199					begin
;	  2200					PDB[DATres] = false;
;	  2201					CALL$L(SND_ONE_DATA, PDB);
;	  2202					end;
;	  2203	
;	  2204				If .PDB[FLAGsnd_dc] and
;	  2205				CCB_HDR_GET( 0, CCB, PDB)
;	  2206				Then
;	  2207					CALL$E(DC_BLD, .DB[NSPns2_pix], .CCB, PDB);
;	  2208				end;
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  68
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (27)

;	  2209	
;	  2210				If (.PDB[BUFFrcv_int] neq 0) and
;	  2211				CCB_GET( CCB, PDB)
;	  2212				Then
;	  2213					begin
;	  2214					CCB[C_STK] = .PDB[BUFFrcv_int];
;	  2215					PDB[BUFFrcv_int] = 0;
;	  2216					INT_RECVD(.CCB, PDB);
;	  2217					end;
;	  2218			end;
;	  2219	
;	  2220	
;	  2221	!********************************************************************
;	  2222	! Now check thru the reserved ports for any stalled transmits
;	  2223	!********************************************************************
;	  2224	
;	  2225	
;	  2226			begin
;	  2227			local PORT: ref blockvector[0, RDB_size] field(PORT_fields);
;	  2228			MAP$( .DB[BIASresv]);
;	  2229			port = .DB[ADDRresv];
;	  2230	
;	  2231			Incr j from 0 to (.DB[NSPt_rsv] -1 ) do
;	  2232				begin
;	  2233				bind RDB = PORT[.j,0,0,0,0]: block field(PORT_fields);		
;	  2234				If .RDB[MSGtyp] neq MSG_NONE
;	  2235				Then
;	  2236					begin
;	  2237					If CCB_HDR_GET( 0, ccb, -1)
;	  2238					Then
;	  2239						begin
;	  2240						If .RDB[MSGtyp] eql N_LNK
;	  2241						Then
;	  2242							CALL$E(NL_BLD, .DB[NSPns2_pix], .CCB, RDB)
;	  2243						Else
;	  2244							CALL$E(NR_BLD, .DB[NSPns2_pix], .CCB, RDB);
;	  2245						RDB[MSGtyp] = MSG_NONE;
;	  2246						exitloop
;	  2247						end
;	  2248					Else
;	  2249						exitloop;
;	  2250					end;
;	  2251				end;
;	  2252			end;
;	  2253		end;


						.GLOBL	CTL.RECVD, CI.BLD, CC.BLD, DI.BLD
						.GLOBL	DC.BLD, NL.BLD, NR.BLD


						.SBTTL	ONCE.A.SECOND
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  69
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (27)

000000	005746 				ONCE.A.SECOND::
					U.31:	TST	-(SP)				;					2105
000002	016700  000002G				MOV	.CRDAT+2,R0			;					2140
000006	016046  000016 				MOV	16(R0),-(SP)			; *,PORT
000012	016067  000014  000000G			MOV	14(R0),KISAR6			;					2141
000020	016002  000020 				MOV	20(R0),R2			;					2143
000024	005005 					CLR	R5				; J
000026	000167  000716 				JMP	19$
000032	016700  000002G			1$:	MOV	.CRDAT+2,R0			;					2145
000036	012704  000040 				MOV	#40,R4
000042	060004 					ADD	R0,R4
000044	011403 					MOV	(R4),R3
000046	070327  000140 				MUL	#140,R3
000052	010301 					MOV	R3,R1
000054	061601 					ADD	(SP),R1				; PORT,*
000056	011403 					MOV	(R4),R3				;					2146
000060	005203 					INC	R3
000062	020360  000020 				CMP	R3,20(R0)
000066	002002 					BGE	2$
000070	005214 					INC	(R4)				;					2148
000072	000401 					BR	3$				;					2146
000074	005014 				2$:	CLR	(R4)				;					2150
000076	132761  000001  000042 		3$:	BITB	#1,42(R1)			;					2151
000104	001002 					BNE	4$
000106	000167  000554 				JMP	17$
000112	005761  000050 			4$:	TST	50(R1)				;					2154
000116	001414 					BEQ	5$
000120	010146 					MOV	R1,-(SP)			;					2156
000122	012746  000001 				MOV	#1,-(SP)
000126	012746  000000G				MOV	#CTL.RECVD,-(SP)
000132	005046 					CLR	-(SP)
000134	116016  000047 				MOVB	47(R0),(SP)
000140	004767  000000G				JSR	PC,$CALLE
000144	062706  000010 				ADD	#10,SP
000150	012703  000134 			5$:	MOV	#134,R3				;					2157
000154	060103 					ADD	R1,R3
000156	005713 					TST	(R3)
000160	001426 					BEQ	7$
000162	012746  000004 				MOV	#4,-(SP)			;					2160
000166	060616 					ADD	SP,(SP)				; CCB,*
000170	010146 					MOV	R1,-(SP)
000172	004767  172400 				JSR	PC,U.12
000176	022626 					CMP	(SP)+,(SP)+
000200	006000 					ROR	R0
000202	103015 					BCC	7$
000204	004767  000000G				JSR	PC,$CMQRM			;					2163
000210	103404 					BCS	6$
000212	016600  000002 				MOV	2(SP),R0			; CCB,*
000216	010460  000004 				MOV	R4,4(R0)			; $MCB$R4,*
000222	016646  000002 			6$:	MOV	2(SP),-(SP)			; CCB,*					2164
000226	010146 					MOV	R1,-(SP)
000230	004767  173312 				JSR	PC,U.16
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  70
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (27)

000234	022626 					CMP	(SP)+,(SP)+			;					2162
000236	012703  000070 			7$:	MOV	#70,R3				;					2167
000242	060103 					ADD	R1,R3
000244	032713  000001 				BIT	#1,(R3)
000250	001531 					BEQ	15$
000252	121127  000013 				CMPB	(R1),#13			;					2170
000256	001013 					BNE	8$
000260	005013 					CLR	(R3)				;					2173
000262	010146 					MOV	R1,-(SP)			;					2174
000264	012746  000001 				MOV	#1,-(SP)
000270	012746  000000V				MOV	#U.43,-(SP)
000274	004767  000000G				JSR	PC,$CALL
000300	062706  000006 				ADD	#6,SP				;					2172
000304	000513 					BR	15$				;					2170
000306	005046 				8$:	CLR	-(SP)				;					2178
000310	012746  000006 				MOV	#6,-(SP)
000314	060616 					ADD	SP,(SP)				; CCB,*
000316	010146 					MOV	R1,-(SP)
000320	004767  172366 				JSR	PC,U.13
000324	062706  000006 				ADD	#6,SP
000330	006000 					ROR	R0
000332	103100 					BCC	15$
000334	005013 					CLR	(R3)				;					2181
000336	010104 					MOV	R1,R4				;					2182
000340	062704  000102 				ADD	#102,R4
000344	010403 					MOV	R4,R3
000346	004767  000000G				JSR	PC,$CMQRM
000352	103405 					BCS	9$
000354	016600  000002 				MOV	2(SP),R0			; CCB,*
000360	010460  000004 				MOV	R4,4(R0)			; $MCB$R4,*
000364	000407 					BR	10$
000366	012746  100044 			9$:	MOV	#-77734,-(SP)			;					2184
000372	012746  000001 				MOV	#1,-(SP)
000376	004767  000000G				JSR	PC,$STOP
000402	022626 					CMP	(SP)+,(SP)+
000404	121127  000006 			10$:	CMPB	(R1),#6				;					2185
000410	001010 					BNE	11$
000412	010146 					MOV	R1,-(SP)			;					2188
000414	016646  000004 				MOV	4(SP),-(SP)			; CCB,*
000420	012746  000002 				MOV	#2,-(SP)
000424	012746  000000G				MOV	#CI.BLD,-(SP)
000430	000430 					BR	14$
000432	121127  000005 			11$:	CMPB	(R1),#5				;					2185
000436	001010 					BNE	12$
000440	010146 					MOV	R1,-(SP)			;					2190
000442	016646  000004 				MOV	4(SP),-(SP)			; CCB,*
000446	012746  000002 				MOV	#2,-(SP)
000452	012746  000000G				MOV	#CC.BLD,-(SP)
000456	000415 					BR	14$
000460	121127  000003 			12$:	CMPB	(R1),#3				;					2185
000464	001403 					BEQ	13$
000466	121127  000014 				CMPB	(R1),#14
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  71
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (27)

000472	001020 					BNE	15$
000474	010146 				13$:	MOV	R1,-(SP)			;					2192
000476	016646  000004 				MOV	4(SP),-(SP)			; CCB,*
000502	012746  000002 				MOV	#2,-(SP)
000506	012746  000000G				MOV	#DI.BLD,-(SP)
000512	016700  000002G			14$:	MOV	.CRDAT+2,R0
000516	005046 					CLR	-(SP)
000520	116016  000047 				MOVB	47(R0),(SP)
000524	004767  000000G				JSR	PC,$CALLE
000530	062706  000012 				ADD	#12,SP
000534	032761  000001  000066 		15$:	BIT	#1,66(R1)			;					2197
000542	001413 					BEQ	16$
000544	005061  000066 				CLR	66(R1)				;					2200
000550	010146 					MOV	R1,-(SP)			;					2201
000552	012746  000001 				MOV	#1,-(SP)
000556	012746  000000V				MOV	#U.41,-(SP)
000562	004767  000000G				JSR	PC,$CALL
000566	062706  000006 				ADD	#6,SP				;					2199
000572	005761  000040 			16$:	TST	40(R1)				;					2204
000576	100033 					BPL	17$
000600	005046 					CLR	-(SP)				;					2205
000602	012746  000006 				MOV	#6,-(SP)
000606	060616 					ADD	SP,(SP)				; CCB,*
000610	010146 					MOV	R1,-(SP)
000612	004767  172074 				JSR	PC,U.13
000616	062706  000006 				ADD	#6,SP
000622	006000 					ROR	R0
000624	103020 					BCC	17$
000626	010146 					MOV	R1,-(SP)			;					2207
000630	016646  000004 				MOV	4(SP),-(SP)			; CCB,*
000634	012746  000002 				MOV	#2,-(SP)
000640	012746  000000G				MOV	#DC.BLD,-(SP)
000644	016700  000002G				MOV	.CRDAT+2,R0
000650	005046 					CLR	-(SP)
000652	116016  000047 				MOVB	47(R0),(SP)
000656	004767  000000G				JSR	PC,$CALLE
000662	062706  000012 				ADD	#12,SP
000666	012703  000046 			17$:	MOV	#46,R3				;					2210
000672	060103 					ADD	R1,R3
000674	005713 					TST	(R3)
000676	001423 					BEQ	18$
000700	012746  000004 				MOV	#4,-(SP)			;					2211
000704	060616 					ADD	SP,(SP)				; CCB,*
000706	010146 					MOV	R1,-(SP)
000710	004767  171662 				JSR	PC,U.12
000714	022626 					CMP	(SP)+,(SP)+
000716	006000 					ROR	R0
000720	103012 					BCC	18$
000722	016600  000002 				MOV	2(SP),R0			; CCB,*					2214
000726	011360  000004 				MOV	(R3),4(R0)
000732	005013 					CLR	(R3)				;					2215
000734	010046 					MOV	R0,-(SP)			; CCB,*					2216
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  72
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (27)

000736	010146 					MOV	R1,-(SP)
000740	004767  175212 				JSR	PC,U.28
000744	022626 					CMP	(SP)+,(SP)+			;					2213
000746	005205 				18$:	INC	R5				; J					2143
000750	020502 				19$:	CMP	R5,R2				; J,*
000752	002002 					BGE	20$
000754	000167  177052 				JMP	1$
000760	016700  000002G			20$:	MOV	.CRDAT+2,R0			;					2228
000764	016067  000024  000000G			MOV	24(R0),KISAR6
000772	016005  000026 				MOV	26(R0),R5			; *,PORT				2229
000776	016004  000022 				MOV	22(R0),R4			;					2231
001002	005001 					CLR	R1				; J
001004	000462 					BR	25$
001006	010103 				21$:	MOV	R1,R3				; J,*					2233
001010	070327  000012 				MUL	#12,R3
001014	060503 					ADD	R5,R3				; PORT,*
001016	121327  177775 				CMPB	(R3),#-3			;					2234
001022	001452 					BEQ	24$
001024	005046 					CLR	-(SP)				;					2237
001026	012746  000006 				MOV	#6,-(SP)
001032	060616 					ADD	SP,(SP)				; CCB,*
001034	012746  177777 				MOV	#-1,-(SP)
001040	004767  171646 				JSR	PC,U.13
001044	062706  000006 				ADD	#6,SP
001050	006000 					ROR	R0
001052	103041 					BCC	26$
001054	016700  000002G				MOV	.CRDAT+2,R0			;					2242
001060	121327  177777 				CMPB	(R3),#-1			;					2240
001064	001010 					BNE	22$
001066	010346 					MOV	R3,-(SP)			;					2242
001070	016646  000004 				MOV	4(SP),-(SP)			; CCB,*
001074	012746  000002 				MOV	#2,-(SP)
001100	012746  000000G				MOV	#NL.BLD,-(SP)
001104	000407 					BR	23$
001106	010346 				22$:	MOV	R3,-(SP)			;					2244
001110	016646  000004 				MOV	4(SP),-(SP)			; CCB,*
001114	012746  000002 				MOV	#2,-(SP)
001120	012746  000000G				MOV	#NR.BLD,-(SP)
001124	005046 				23$:	CLR	-(SP)
001126	116016  000047 				MOVB	47(R0),(SP)
001132	004767  000000G				JSR	PC,$CALLE
001136	112713  000375 				MOVB	#375,(R3)			;					2245
001142	062706  000012 				ADD	#12,SP				;					2246
001146	000403 					BR	26$
001150	005201 				24$:	INC	R1				; J					2231
001152	020104 				25$:	CMP	R1,R4				; J,*
001154	002714 					BLT	21$
001156	022626 				26$:	CMP	(SP)+,(SP)+			;					2105
001160	000207 					RTS	PC

; Routine Size:  313 words,	Routine Base:  $CODE$ + 5566
; Maximum stack depth per invocation:  8 words
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  73
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (27)

;	  2254	
;	  2255	
;	  2256	
;	  2257	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  74
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (28)

;	  2258	routine OTHACK_BLD ( CCB, PDB) :  novalue =	!
;	  2259	
;	  2260	!++
;	  2261	! FUNCTIONAL DESCRIPTION:
;	  2262	!	This routine formats an NSP Other Data Acknowledgement message 
;	  2263	!	and queues it to Transport.
;	  2264	!
;	  2265	! FORMAL PARAMETERS:
;	  2266	!	PDB = Port Data Base Address
;	  2267	!	CCB = CCB Address
;	  2268	!
;	  2269	! IMPLICIT INPUTS:
;	  2270	!	DB = NSP Data Base Address
;	  2271	!
;	  2272	! IMPLICIT OUTPUTS:
;	  2273	!	None
;	  2274	!
;	  2275	! ROUTINE VALUE:
;	  2276	! COMPLETION CODES:
;	  2277	!	None
;	  2278	!
;	  2279	! SIDE EFFECTS:
;	  2280	!	None
;	  2281	!--
;	  2282	
;	  2283		begin
;	  2284		map CCB: ref block field(C_fields);
;	  2285		map PDB: ref block field(PORT_fields);
;	  2286	
;	  2287		local
;	  2288		PTR;
;	  2289	
;	  2290		PTR = .CCB[C_ADDR];
;	  2291	
;	  2292		ch$wchar_a( FLG_OTH_ACK, PTR);
;	  2293		ch$wchar_a( .PDB[L_rem_addr], PTR);
;	  2294		ch$wchar_a( .PDB[H_rem_addr], PTR);
;	  2295		ch$wchar_a( .PDB[PID], PTR);
;	  2296		ch$wchar_a( .PDB[ADDran], PTR);
;	  2297		PUT2BYTES( (.PDB[ACKoth_xmt] and %o'7777') + Q_ACK^12 + true^15, PTR);
;	  2298	
;	  2299		CCB[C_CNT] = ch$diff(.PTR, .CCB[C_ADDR]);
;	  2300		PDB[FLAGoth_ack] = false;
;	  2301		XPT_XMIT( .CCB, .PDB)	
;	  2302		end;


						.SBTTL	OTHACK.BLD
000000	004167  000000G			; OTHACK.BLD
					U.32:	JSR	R1,$SAVE4			;					2258
000004	016602  000016 				MOV	16(SP),R2			; CCB,*					2290
000010	016203  000020 				MOV	20(R2),R3			; *,PTR
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  75
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (28)

000014	112723  000024 				MOVB	#24,(R3)+			; *,PTR					2292
000020	016601  000014 				MOV	14(SP),R1			; PDB,*					2293
000024	116123  000006 				MOVB	6(R1),(R3)+			; *,PTR
000030	116123  000007 				MOVB	7(R1),(R3)+			; *,PTR					2294
000034	116123  000004 				MOVB	4(R1),(R3)+			; *,PTR					2295
000040	116123  000005 				MOVB	5(R1),(R3)+			; *,PTR					2296
000044	016100  000032 				MOV	32(R1),R0			; *,TEMP				2297
000050	042700  170000 				BIC	#170000,R0			; *,TEMP
000054	162700  100000 				SUB	#100000,R0			; *,TEMP
000060	110023 					MOVB	R0,(R3)+			; TEMP,PTR
000062	010004 					MOV	R0,R4				; TEMP,*
000064	000304 					SWAB	R4
000066	110423 					MOVB	R4,(R3)+			; *,PTR
000070	010362  000022 				MOV	R3,22(R2)			; PTR,*					2299
000074	166262  000020  000022 			SUB	20(R2),22(R2)
000102	042761  040000  000040 			BIC	#40000,40(R1)			;					2300
000110	010246 					MOV	R2,-(SP)			;					2301
000112	010146 					MOV	R1,-(SP)
000114	004767  000000V				JSR	PC,U.45
000120	022626 					CMP	(SP)+,(SP)+			;					2283
000122	000207 					RTS	PC				;					2258

; Routine Size:  42 words,	Routine Base:  $CODE$ + 6750
; Maximum stack depth per invocation:  8 words


;	  2303	
;	  2304	
;	  2305	
;	  2306	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  76
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (29)

;	  2307	routine PROC_DATA_ACK ( CCB, PDB) :  novalue =	!
;	  2308	
;	  2309	!++
;	  2310	! FUNCTIONAL DESCRIPTION:
;	  2311	!	This routine processes the NUMBER and QUAL fields of a received
;	  2312	!	Data Acknowledgement message.
;	  2313	!
;	  2314	! FORMAL PARAMETERS:
;	  2315	!	PDB = Port Data Base Address
;	  2316	!	CCB = CCB Address
;	  2317	!
;	  2318	! IMPLICIT INPUTS:
;	  2319	!	DB = NSP Data Base Address
;	  2320	!
;	  2321	! IMPLICIT OUTPUTS:
;	  2322	!	None
;	  2323	!
;	  2324	! ROUTINE VALUE:
;	  2325	! COMPLETION CODES:
;	  2326	!	None
;	  2327	!
;	  2328	! SIDE EFFECTS:
;	  2329	!	None
;	  2330	!--
;	  2331	
;	  2332		begin
;	  2333		map CCB: ref block field(C_fields);
;	  2334		map PDB: ref block field(PORT_fields);
;	  2335	
;	  2336		local
;	  2337		WK_CCB: ref block field(C_fields),
;	  2338		NDB : ref block field(NODE_fields),
;	  2339		temp;
;	  2340	
;	  2341		MAP$( .DB[BIASports]);
;	  2342		NDB = .PDB[NODElnk];
;	  2343	
;	  2344		If (CMP_LSS( .PDB[ACKrcv_dat], .DB[NUMBER]) and 
;	  2345		(CMP_LEQ( .DB[NUMBER], .PDB[NUMsent])) and .DB[QUAL] eql Q_ACK) or
;	  2346		(CMP_LEQ( .PDB[ACKrcv_dat], .DB[NUMBER]) and 
;	  2347		(CMP_LEQ( .DB[NUMBER], .PDB[NUMsent])) and .DB[QUAL] eql Q_NAK) 
;	  2348		Then
;	  2349			begin
;	  2350			PDB[CONFIDENCE] = true;
;	  2351			PDB[COUNTdat_retrans] = 0;
;	  2352			If .PDB[FLOWtyp_rem] eql FLOWseg
;	  2353			Then
;	  2354				PDB[FLOWdat_rem] = .PDB[FLOWdat_rem] - (( .DB[NUMBER] - .PDB[ACKrcv_dat]) and %o'7777');
;	  2355			PDB[ACKrcv_dat] = .DB[NUMBER];
;	  2356			temp = .PDB[ACKhead];
;	  2357			While (CMQPT$( temp, WK_CCB)) do
;	  2358				begin
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  77
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (29)

;	  2359				If CMP_LEQ( .WK_CCB[C_STS], .PDB[ACKrcv_dat])
;	  2360				Then
;	  2361					begin
;	  2362					WK_CCB = .PDB[ACK_queue];
;	  2363					PDB[ACK_queue] = .WK_CCB[C_LNK];
;	  2364					If (.WK_CCB[C_PRM3] and N$FCMP) neq 0
;	  2365					Then
;	  2366						begin
;	  2367						bind SC_CCB = .WK_CCB[C_STK]: block field(C_fields);
;	  2368						SC_CCB[C_FNC] = FC_XCP;
;	  2369						SC_CCB[C_STS] = N$SSUC;
;	  2370						LLCRS$( SC_CCB);
;	  2371	
;	  2372						If .PDB[FLOWtyp_rem] eql FLOWmsg
;	  2373						Then
;	  2374							PDB[FLOWdat_rem] = .PDB[FLOWdat_rem] - 1;
;	  2375						end;
;	  2376	
;	  2377					CCB_RETRN( .WK_CCB, .PDB);
;	  2378					end
;	  2379				Else
;	  2380					exitloop;
;	  2381	
;	  2382				end;
;	  2383			PDB[TIMERdat] = 0;
;	  2384			If .PDB[ACKrcv_dat] eql .PDB[NUMsent]
;	  2385			Then
;	  2386				PDB[FLAGseg] = true;
;	  2387	
;	  2388			If (CMP_LSS( .PDB[ACKrcv_dat], .PDB[NUMsent]) and .DB[QUAL] eql Q_ACK)
;	  2389			Then
;	  2390				begin
;	  2391				MAP$( .DB[BIASnodes]);
;	  2392				temp = .NDB[NDdelay];
;	  2393				MAP$( .DB[BIASports]);
;	  2394				PDB[TIMERdat] = .temp * .DB[NSPdelay]
;	  2395				end;
;	  2396			If (CMP_LEQ( .PDB[DELAYmsg_num], .PDB[ACKrcv_dat]))
;	  2397			and .PDB[DELAYstr_tim] neq 0
;	  2398			Then
;	  2399				UPDATE_DELAY( .PDB);
;	  2400			If .PDB[PORTstate] eql N$SDI and 
;	  2401			(CMP_EQL( .PDB[NUMhigh], .PDB[ACKrcv_dat])) and
;	  2402			.PDB[BUFFsync_dsc] neq 0
;	  2403			Then
;	  2404				begin
;	  2405				If CCB_HDR_GET( 0, WK_CCB, .PDB)
;	  2406				Then
;	  2407					begin
;	  2408					WK_CCB[C_STK] = .PDB[BUFFsync_dsc];
;	  2409					CALL$E(DI_BLD, .DB[NSPns2_pix], .WK_CCB, .PDB)
;	  2410					end
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  78
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (29)

;	  2411				Else
;	  2412					begin
;	  2413					CMQIN$( PDB[MSG_queue], .PDB[BUFFsync_dsc]);
;	  2414					PDB[OTHres] = true
;	  2415					end;
;	  2416				PDB[BUFFsync_dsc] = 0;
;	  2417				end;
;	  2418			end
;	  2419		end;


						.GLOBL	$CMQIN


						.SBTTL	PROC.DATA.ACK
000000	004167  000000G			; PROC.DATA.ACK
					U.33:	JSR	R1,$SAVE5			;					2307
000004	005746 					TST	-(SP)
000006	016700  000002G				MOV	.CRDAT+2,R0			;					2341
000012	016067  000014  000000G			MOV	14(R0),KISAR6
000020	016602  000020 				MOV	20(SP),R2			; PDB,*					2342
000024	016205  000010 				MOV	10(R2),R5			; *,NDB
000030	016700  000002G				MOV	.CRDAT+2,R0			;					2344
000034	012701  000060 				MOV	#60,R1
000040	060001 					ADD	R0,R1
000042	012746  000034 				MOV	#34,-(SP)
000046	060216 					ADD	R2,(SP)
000050	011100 					MOV	(R1),R0
000052	042700  170000 				BIC	#170000,R0
000056	167600  000000 				SUB	@0(SP),R0
000062	010003 					MOV	R0,R3
000064	062703  004000 				ADD	#4000,R3
000070	010300 					MOV	R3,R0
000072	042700  170000 				BIC	#170000,R0
000076	020027  004000 				CMP	R0,#4000
000102	101420 					BLOS	1$
000104	011104 					MOV	(R1),R4				;					2345
000106	042704  170000 				BIC	#170000,R4
000112	016200  000022 				MOV	22(R2),R0
000116	160400 					SUB	R4,R0
000120	062700  004000 				ADD	#4000,R0
000124	042700  170000 				BIC	#170000,R0
000130	020027  004000 				CMP	R0,#4000
000134	103403 					BLO	1$
000136	032711  070000 				BIT	#70000,(R1)
000142	001432 					BEQ	3$
000144	042703  170000 			1$:	BIC	#170000,R3			;					2346
000150	020327  004000 				CMP	R3,#4000
000154	103423 					BLO	2$
000156	011103 					MOV	(R1),R3				;					2347
000160	042703  170000 				BIC	#170000,R3
000164	016200  000022 				MOV	22(R2),R0
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  79
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (29)

000170	160300 					SUB	R3,R0
000172	062700  004000 				ADD	#4000,R0
000176	042700  170000 				BIC	#170000,R0
000202	020027  004000 				CMP	R0,#4000
000206	103406 					BLO	2$
000210	011100 					MOV	(R1),R0
000212	042700  107777 				BIC	#107777,R0
000216	020027  010000 				CMP	R0,#10000
000222	001402 					BEQ	3$
000224	000167  000620 			2$:	JMP	13$
000230	152762  000020  000042 		3$:	BISB	#20,42(R2)			;					2350
000236	105062  000052 				CLRB	52(R2)				;					2351
000242	016200  000040 				MOV	40(R2),R0			;					2352
000246	042700  163777 				BIC	#163777,R0
000252	020027  004000 				CMP	R0,#4000
000256	001016 					BNE	4$
000260	011103 					MOV	(R1),R3				;					2354
000262	042703  170000 				BIC	#170000,R3
000266	167603  000000 				SUB	@0(SP),R3
000272	010304 					MOV	R3,R4
000274	042704  170000 				BIC	#170000,R4
000300	005000 					CLR	R0
000302	156200  000037 				BISB	37(R2),R0
000306	160400 					SUB	R4,R0
000310	110062  000037 				MOVB	R0,37(R2)
000314	011176  000000 			4$:	MOV	(R1),@0(SP)			;					2355
000320	042776  170000  000000 			BIC	#170000,@0(SP)
000326	012701  000116 				MOV	#116,R1				;					2356
000332	060201 					ADD	R2,R1
000334	011103 					MOV	(R1),R3				; *,TEMP
000336	010366  000002 			5$:	MOV	R3,2(SP)			; TEMP,WK.CCB				2357
000342	010304 					MOV	R3,R4				; WK.CCB,*
000344	011403 					MOV	(R4),R3				; *,TEMP
000346	005704 					TST	R4
000350	001454 					BEQ	7$
000352	017600  000000 				MOV	@0(SP),R0			;					2359
000356	166400  000014 				SUB	14(R4),R0
000362	062700  004000 				ADD	#4000,R0
000366	042700  170000 				BIC	#170000,R0
000372	020027  004000 				CMP	R0,#4000
000376	103441 					BLO	7$
000400	011166  000002 				MOV	(R1),2(SP)			; *,WK.CCB				2362
000404	011100 					MOV	(R1),R0				; WK.CCB,*				2363
000406	011011 					MOV	(R0),(R1)
000410	032760  000004  000030 			BIT	#4,30(R0)			;					2364
000416	001423 					BEQ	6$
000420	016004  000004 				MOV	4(R0),R4			;					2366
000424	112764  000014  000012 			MOVB	#14,12(R4)			;					2368
000432	012764  000001  000014 			MOV	#1,14(R4)			;					2369
000440	004767  000000G				JSR	PC,$SCHED			;					2370
000444	016204  000040 				MOV	40(R2),R4			;					2372
000450	042704  163777 				BIC	#163777,R4
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  80
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (29)

000454	020427  010000 				CMP	R4,#10000
000460	001002 					BNE	6$
000462	105362  000037 				DECB	37(R2)				;					2374
000466	010046 				6$:	MOV	R0,-(SP)			;					2377
000470	010246 					MOV	R2,-(SP)
000472	004767  171064 				JSR	PC,U.14
000476	022626 					CMP	(SP)+,(SP)+			;					2361
000500	000716 					BR	5$				;					2359
000502	005062  000012 			7$:	CLR	12(R2)				;					2383
000506	027662  000000  000022 			CMP	@0(SP),22(R2)			;					2384
000514	001003 					BNE	8$
000516	152762  000040  000042 			BISB	#40,42(R2)			;					2386
000524	016200  000022 			8$:	MOV	22(R2),R0			;					2388
000530	167600  000000 				SUB	@0(SP),R0
000534	062700  004000 				ADD	#4000,R0
000540	042700  170000 				BIC	#170000,R0
000544	020027  004000 				CMP	R0,#4000
000550	101424 					BLOS	9$
000552	016700  000002G				MOV	.CRDAT+2,R0
000556	032760  070000  000060 			BIT	#70000,60(R0)
000564	001016 					BNE	9$
000566	016067  000030  000000G			MOV	30(R0),KISAR6			;					2391
000574	016503  000040 				MOV	40(R5),R3			; *(NDB),TEMP				2392
000600	016067  000014  000000G			MOV	14(R0),KISAR6			;					2393
000606	005001 					CLR	R1				;					2394
000610	156001  000006 				BISB	6(R0),R1
000614	070301 					MUL	R1,R3
000616	010362  000012 				MOV	R3,12(R2)
000622	017600  000000 			9$:	MOV	@0(SP),R0			;					2396
000626	166200  000060 				SUB	60(R2),R0
000632	062700  004000 				ADD	#4000,R0
000636	042700  170000 				BIC	#170000,R0
000642	020027  004000 				CMP	R0,#4000
000646	103407 					BLO	10$
000650	005762  000062 				TST	62(R2)				;					2397
000654	001404 					BEQ	10$
000656	010246 					MOV	R2,-(SP)			;					2399
000660	004767  000000V				JSR	PC,U.44
000664	005726 					TST	(SP)+
000666	121227  000014 			10$:	CMPB	(R2),#14			;					2400
000672	001066 					BNE	13$
000674	017600  000000 				MOV	@0(SP),R0			;					2401
000700	166200  000026 				SUB	26(R2),R0
000704	032700  007777 				BIT	#7777,R0
000710	001057 					BNE	13$
000712	005762  000044 				TST	44(R2)				;					2402
000716	001454 					BEQ	13$
000720	012701  000044 				MOV	#44,R1				;					2408
000724	060201 					ADD	R2,R1
000726	005046 					CLR	-(SP)				;					2405
000730	012746  000006 				MOV	#6,-(SP)
000734	060616 					ADD	SP,(SP)				; WK.CCB,*
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  81
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (29)

000736	010246 					MOV	R2,-(SP)
000740	004767  170440 				JSR	PC,U.13
000744	062706  000006 				ADD	#6,SP
000750	006000 					ROR	R0
000752	103024 					BCC	11$
000754	016600  000002 				MOV	2(SP),R0			; WK.CCB,*				2408
000760	011160  000004 				MOV	(R1),4(R0)
000764	010246 					MOV	R2,-(SP)			;					2409
000766	010046 					MOV	R0,-(SP)			; WK.CCB,*
000770	012746  000002 				MOV	#2,-(SP)
000774	012746  000000G				MOV	#DI.BLD,-(SP)
001000	016700  000002G				MOV	.CRDAT+2,R0
001004	005046 					CLR	-(SP)
001006	116016  000047 				MOVB	47(R0),(SP)
001012	004767  000000G				JSR	PC,$CALLE
001016	062706  000012 				ADD	#12,SP				;					2407
001022	000411 					BR	12$				;					2405
001024	012703  000102 			11$:	MOV	#102,R3				;					2413
001030	060203 					ADD	R2,R3
001032	011104 					MOV	(R1),R4
001034	004767  000000G				JSR	PC,$CMQIN
001040	012762  000001  000070 			MOV	#1,70(R2)			;					2414
001046	005011 				12$:	CLR	(R1)				;					2416
001050	022626 				13$:	CMP	(SP)+,(SP)+			;					2307
001052	000207 					RTS	PC

; Routine Size:  278 words,	Routine Base:  $CODE$ + 7074
; Maximum stack depth per invocation:  14 words


;	  2420	
;	  2421	
;	  2422	
;	  2423	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  82
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (30)

;	  2424	routine PROC_OTH_ACK ( CCB, PDB) :  novalue =	!
;	  2425	
;	  2426	!++
;	  2427	! FUNCTIONAL DESCRIPTION:
;	  2428	!	This routine processes the NUMBER and QUAL fields of a received
;	  2429	!	Other Data Acknowledgement message.
;	  2430	!
;	  2431	! FORMAL PARAMETERS:
;	  2432	!	PDB = Port Data Base Address
;	  2433	!	CCB = CCB Address
;	  2434	!
;	  2435	! IMPLICIT INPUTS:
;	  2436	!	DB = NSP Data Base Address
;	  2437	!
;	  2438	! IMPLICIT OUTPUTS:
;	  2439	!	None
;	  2440	!
;	  2441	! ROUTINE VALUE:
;	  2442	! COMPLETION CODES:
;	  2443	!	None
;	  2444	!
;	  2445	! SIDE EFFECTS:
;	  2446	!	None
;	  2447	!--
;	  2448	
;	  2449		begin
;	  2450		map CCB: ref block field(C_fields);
;	  2451		map PDB: ref block field(PORT_fields);
;	  2452	
;	  2453		local
;	  2454		temp: ref block field(C_fields);
;	  2455	
;	  2456		MAP$( .DB[BIASports]);
;	  2457	
;	  2458		If .PDB[OTHstate] neq OTHready and
;	  2459		((.DB[NUMBER] eql ((.PDB[NUMoth] -1) and %o'7777') and .DB[QUAL] eql Q_NAK) or
;	  2460		(.DB[NUMBER] eql .PDB[NUMoth] and .DB[QUAL] eql Q_ACK))
;	  2461		Then
;	  2462			begin
;	  2463			PDB[CONFIDENCE] = true;
;	  2464			PDB[COUNToth_retrans] = 0;
;	  2465			PDB[TIMERoth] = 0;
;	  2466	
;	  2467			If .DB[QUAL] eql Q_ACK
;	  2468			Then
;	  2469				begin
;	  2470				PDB[OTHstate] = OTHready;
;	  2471				PDB[NUMoth] = .PDB[NUMoth] + 1;
;	  2472				If CMQRM$( PDB[OTHACK_queue], temp)
;	  2473				Then
;	  2474					begin
;	  2475					If .temp[C_MOD] eql N_XBUF
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  83
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (30)

;	  2476					Then
;	  2477						begin
;	  2478						temp[C_STS] = N$SSUC;
;	  2479						CMQIN$( PDB[BUFF_queue], .temp);
;	  2480						end
;	  2481					Else
;	  2482						begin
;	  2483						temp[C_FNC] = FC_XCP;
;	  2484						temp[C_STS] = N$SSUC;
;	  2485						LLCRS$( .temp);
;	  2486						end
;	  2487					end;
;	  2488				If .PDB[OTHtyp] eql OTHinterrupt
;	  2489				Then
;	  2490					PDB[FLOWint_rem] = .PDB[FLOWint_rem] - 1;
;	  2491				end
;	  2492			end
;	  2493		end;


						.SBTTL	PROC.OTH.ACK
000000	004167  000000G			; PROC.OTH.ACK
					U.34:	JSR	R1,$SAVE5			;					2424
000004	016701  000002G				MOV	.CRDAT+2,R1			;					2456
000010	016167  000014  000000G			MOV	14(R1),KISAR6
000016	016600  000016 				MOV	16(SP),R0			; PDB,*					2458
000022	012702  000064 				MOV	#64,R2
000026	060002 					ADD	R0,R2
000030	105712 					TSTB	(R2)
000032	001513 					BEQ	5$
000034	012703  000060 				MOV	#60,R3				;					2459
000040	060103 					ADD	R1,R3
000042	016004  000024 				MOV	24(R0),R4
000046	005304 					DEC	R4
000050	010446 					MOV	R4,-(SP)
000052	011305 					MOV	(R3),R5
000054	074516 					XOR	R5,(SP)
000056	032726  007777 				BIT	#7777,(SP)+
000062	001006 					BNE	1$
000064	011304 					MOV	(R3),R4
000066	042704  107777 				BIC	#107777,R4
000072	020427  010000 				CMP	R4,#10000
000076	001412 					BEQ	2$
000100	016005  000024 			1$:	MOV	24(R0),R5			;					2460
000104	011304 					MOV	(R3),R4
000106	042704  170000 				BIC	#170000,R4
000112	020405 					CMP	R4,R5
000114	001062 					BNE	5$
000116	032713  070000 				BIT	#70000,(R3)
000122	001057 					BNE	5$
000124	152760  000020  000042 		2$:	BISB	#20,42(R0)			;					2463
000132	105060  000053 				CLRB	53(R0)				;					2464
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  84
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (30)

000136	005060  000014 				CLR	14(R0)				;					2465
000142	032761  070000  000060 			BIT	#70000,60(R1)			;					2467
000150	001044 					BNE	5$
000152	105012 					CLRB	(R2)				;					2470
000154	005260  000024 				INC	24(R0)				;					2471
000160	012703  000122 				MOV	#122,R3				;					2472
000164	060003 					ADD	R0,R3
000166	004767  000000G				JSR	PC,$CMQRM
000172	103425 					BCS	4$
000174	126427  000013  000032 			CMPB	13(R4),#32			; *(TEMP),*				2475
000202	001011 					BNE	3$
000204	012764  000001  000014 			MOV	#1,14(R4)			; *,*(TEMP)				2478
000212	012703  000130 				MOV	#130,R3				;					2479
000216	060003 					ADD	R0,R3
000220	004767  000000G				JSR	PC,$CMQIN
000224	000410 					BR	4$				;					2474
000226	112764  000014  000012 		3$:	MOVB	#14,12(R4)			; *,*(TEMP)				2483
000234	012764  000001  000014 			MOV	#1,14(R4)			; *,*(TEMP)				2484
000242	004767  000000G				JSR	PC,$SCHED			;					2485
000246	126227  000001  000001 		4$:	CMPB	1(R2),#1			;					2488
000254	001002 					BNE	5$
000256	105360  000040 				DECB	40(R0)				;					2490
000262	000207 				5$:	RTS	PC				;					2424

; Routine Size:  90 words,	Routine Base:  $CODE$ + 10150
; Maximum stack depth per invocation:  7 words


;	  2494	
;	  2495	
;	  2496	
;	  2497	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  85
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (31)

;	  2498	routine REAS_DATA ( CCB, PDB) :  novalue =	!
;	  2499	
;	  2500	!++
;	  2501	! FUNCTIONAL DESCRIPTION:
;	  2502	!	This routine is the reassembly process.
;	  2503	!
;	  2504	! FORMAL PARAMETERS:
;	  2505	!	CCB = CCB address
;	  2506	!	PDB = Port Data Base Address
;	  2507	!
;	  2508	! IMPLICIT INPUTS:
;	  2509	!	DB = NSP Data Base Address
;	  2510	!
;	  2511	! IMPLICIT OUTPUTS:
;	  2512	!	None
;	  2513	!
;	  2514	! ROUTINE VALUE:
;	  2515	! COMPLETION CODES:
;	  2516	!	None
;	  2517	!
;	  2518	! SIDE EFFECTS:
;	  2519	!	None
;	  2520	!--
;	  2521	
;	  2522		begin
;	  2523		map CCB: ref block field(C_fields);
;	  2524		map PDB: ref block field(PORT_fields);
;	  2525	
;	  2526	
;	  2527		bind BUFF_CCB = .PDB[BUFF_queue]: block field(C_fields);
;	  2528	
;	  2529		local
;	  2530		TO_ADDR,
;	  2531		TEMP,
;	  2532		size,
;	  2533		XFRCNT,
;	  2534		NDB : ref block field(NODE_fields),
;	  2535		GOT_CCB: ref block field(C_fields);
;	  2536	
;	  2537		NDB = .PDB[NODElnk];
;	  2538	
;	  2539		If not .DB[Q_FLG]
;	  2540		Then
;	  2541			size = 7
;	  2542		Else
;	  2543			size = 9;
;	  2544		MAP$( .DB[BIASnodes]);
;	  2545		DADD( NDB[NDb_rcv], .CCB[C_CNT] - .size);
;	  2546		MAP$( .DB[BIASports]);
;	  2547	
;	  2548		If .PDB[FLOWloc_typ] eql FLOWmsg
;	  2549		Then
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  86
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (31)

;	  2550			begin
;	  2551			If .PDB[BUFFhead] eql 0
;	  2552			Then
;	  2553				begin
;	  2554				CCB[C_FNC] = FC_RCE;
;	  2555				LLCRS$( .CCB);
;	  2556				return
;	  2557				end
;	  2558			Else
;	  2559				begin
;	  2560				If .PDB[REAS_PTR] neq 0 and
;	  2561				(.DB[MSGFLG] and NSPbom) neq 0
;	  2562				Then
;	  2563					begin
;	  2564					CCB[C_FNC] = FC_RCE;
;	  2565					LLCRS$( .CCB);
;	  2566					return
;	  2567					end;
;	  2568	
;	  2569				XFRCNT =
;	  2570					begin
;	  2571					If (.PDB[REAS_PTR] + .CCB[C_CNT] - .SIZE) leq .BUFF_CCB[C_CNT]
;	  2572						Then
;	  2573							.CCB[C_CNT] - .SIZE
;	  2574						Else
;	  2575							begin
;	  2576							BUFF_CCB[C_STS] = N$ELST;
;	  2577							.BUFF_CCB[C_CNT] - .PDB[REAS_PTR]
;	  2578							end
;	  2579					end;
;	  2580	
;	  2581				If .XFRCNT neq 0
;	  2582				Then
;	  2583					begin
;	  2584					TEMP = ch$plus( .CCB[C_ADDR], .SIZE);
;	  2585					TO_ADDR = ch$plus( .BUFF_CCB[C_ADDR], .PDB[REAS_PTR]);
;	  2586					MAP$( .CCB[C_BIAS]);
;	  2587					MTBF$S( .XFRCNT, .temp, .BUFF_CCB[C_BIAS], .TO_ADDR);
;	  2588					MAP$( .DB[BIASports]);
;	  2589					end;
;	  2590				PDB[REAS_PTR] = .PDB[REAS_PTR] + .XFRCNT;
;	  2591	
;	  2592				IF (.DB[MSGFLG] and NSPeom) neq 0
;	  2593				Then
;	  2594					begin
;	  2595					BUFF_CCB[C_CNT] = .PDB[REAS_ptr];
;	  2596					BUFF_CCB[C_FNC] = FC_XCP;
;	  2597					PDB[REAS_PTR] = 0;
;	  2598					LLCRS$( BUFF_CCB);
;	  2599					CMQRM$( PDB[BUFF_queue], temp)
;	  2600					end;
;	  2601	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  87
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (31)

;	  2602				CCB[C_FNC] = FC_RCE;
;	  2603				LLCRS$( .CCB);
;	  2604				end
;	  2605			end
;	  2606		Else
;	  2607			begin
;	  2608			If .PDB[RCVmsg_queue] eql 0 and
;	  2609			CCB_GET( GOT_CCB, .PDB)
;	  2610			Then
;	  2611				begin
;	  2612				GOT_CCB[C_STK] = .CCB;
;	  2613				DATA_RECVD( .GOT_CCB, .PDB);
;	  2614				end
;	  2615			Else
;	  2616				CMQIN$( PDB[RCVmsg_queue], .CCB);
;	  2617			end;
;	  2618		PDB[FLAGdat_ack] = true;
;	  2619		PDB[ACKdat_xmt] = (.PDB[ACKdat_xmt] + 1 and %o'7777');
;	  2620		end;


						.GLOBL	$MVTBF


						.SBTTL	REAS.DATA
000000	004167  000000G			; REAS.DATA
					U.35:	JSR	R1,$SAVE5			;					2498
000004	162706  000010 				SUB	#10,SP
000010	016666  000026  000002 			MOV	26(SP),2(SP)			; PDB,*					2527
000016	016600  000002 				MOV	2(SP),R0
000022	016001  000130 				MOV	130(R0),R1
000026	016003  000010 				MOV	10(R0),R3			; *,NDB					2537
000032	016700  000002G				MOV	.CRDAT+2,R0			;					2539
000036	005760  000060 				TST	60(R0)
000042	100403 					BMI	1$
000044	012702  000007 				MOV	#7,R2				; *,SIZE				2541
000050	000402 					BR	2$				;					2539
000052	012702  000011 			1$:	MOV	#11,R2				; *,SIZE				2543
000056	016700  000002G			2$:	MOV	.CRDAT+2,R0			;					2544
000062	016067  000030  000000G			MOV	30(R0),KISAR6
000070	010346 					MOV	R3,-(SP)			; NDB,*					2545
000072	062716  000010 				ADD	#10,(SP)
000076	016605  000032 				MOV	32(SP),R5			; CCB,*
000102	016546  000022 				MOV	22(R5),-(SP)
000106	160216 					SUB	R2,(SP)				; SIZE,*
000110	004767  170220 				JSR	PC,U.15
000114	016700  000002G				MOV	.CRDAT+2,R0			;					2546
000120	016067  000014  000000G			MOV	14(R0),KISAR6
000126	016603  000006 				MOV	6(SP),R3			;					2548
000132	016300  000040 				MOV	40(R3),R0
000136	042700  176377 				BIC	#176377,R0
000142	020027  001000 				CMP	R0,#1000
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  88
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (31)

000146	001152 					BNE	10$
000150	005701 					TST	R1				;					2551
000152	001010 					BNE	4$
000154	112765  000004  000012 		3$:	MOVB	#4,12(R5)			;					2554
000162	010504 					MOV	R5,R4				;					2555
000164	004767  000000G				JSR	PC,$SCHED
000170	000167  000436 				JMP	13$				;					2551
000174	012700  000126 			4$:	MOV	#126,R0				;					2560
000200	066600  000006 				ADD	6(SP),R0
000204	010066  000010 				MOV	R0,10(SP)
000210	005710 					TST	(R0)
000212	001406 					BEQ	5$
000214	016700  000002G				MOV	.CRDAT+2,R0			;					2561
000220	132760  000040  000052 			BITB	#40,52(R0)
000226	001352 					BNE	3$				;					2564
000230	017600  000010 			5$:	MOV	@10(SP),R0			;					2571
000234	066500  000022 				ADD	22(R5),R0
000240	160200 					SUB	R2,R0				; SIZE,*
000242	012704  000022 				MOV	#22,R4
000246	060104 					ADD	R1,R4
000250	020014 					CMP	R0,(R4)
000252	003004 					BGT	6$
000254	016500  000022 				MOV	22(R5),R0			; *,XFRCNT				2573
000260	160200 					SUB	R2,R0				; SIZE,XFRCNT
000262	000406 					BR	7$				;					2570
000264	012761  177770  000014 		6$:	MOV	#-10,14(R1)			;					2576
000272	011400 					MOV	(R4),R0				; *,XFRCNT				2577
000274	167600  000010 				SUB	@10(SP),R0			; *,XFRCNT
000300	001432 				7$:	BEQ	8$				;					2581
000302	016566  000020  000004 			MOV	20(R5),4(SP)			; *,TEMP				2584
000310	060266  000004 				ADD	R2,4(SP)			; SIZE,TEMP
000314	016102  000020 				MOV	20(R1),R2			; *,TO.ADDR				2585
000320	067602  000010 				ADD	@10(SP),R2			; *,TO.ADDR
000324	016567  000016  000000G			MOV	16(R5),KISAR6			;					2586
000332	016116  000016 				MOV	16(R1),(SP)			;					2587
000336	010246 					MOV	R2,-(SP)			; TO.ADDR,*
000340	016602  000006 				MOV	6(SP),R2			; TEMP,*
000344	010003 					MOV	R0,R3				; XFRCNT,*
000346	004767  000000G				JSR	PC,$MVTBF
000352	016702  000002G				MOV	.CRDAT+2,R2			;					2588
000356	016267  000014  000000G			MOV	14(R2),KISAR6
000364	005726 					TST	(SP)+				;					2583
000366	060076  000010 			8$:	ADD	R0,@10(SP)			; XFRCNT,*				2590
000372	016702  000002G				MOV	.CRDAT+2,R2			;					2592
000376	132762  000100  000052 			BITB	#100,52(R2)
000404	001424 					BEQ	9$
000406	017614  000010 				MOV	@10(SP),(R4)			;					2595
000412	112761  000014  000012 			MOVB	#14,12(R1)			;					2596
000420	005076  000010 				CLR	@10(SP)				;					2597
000424	010104 					MOV	R1,R4				;					2598
000426	004767  000000G				JSR	PC,$SCHED
000432	012700  000130 				MOV	#130,R0				;					2599
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  89
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (31)

000436	066600  000006 				ADD	6(SP),R0
000442	010003 					MOV	R0,R3
000444	004767  000000G				JSR	PC,$CMQRM
000450	103402 					BCS	9$
000452	010466  000004 				MOV	R4,4(SP)			; $MCB$R4,TEMP
000456	112765  000004  000012 		9$:	MOVB	#4,12(R5)			;					2602
000464	010504 					MOV	R5,R4				;					2603
000466	004767  000000G				JSR	PC,$SCHED
000472	000437 					BR	12$				;					2548
000474	012700  000134 			10$:	MOV	#134,R0				;					2608
000500	066600  000006 				ADD	6(SP),R0
000504	010003 					MOV	R0,R3
000506	005713 					TST	(R3)
000510	001025 					BNE	11$
000512	012716  000012 				MOV	#12,(SP)			;					2609
000516	060616 					ADD	SP,(SP)				; GOT.CCB,*
000520	016646  000006 				MOV	6(SP),-(SP)
000524	004767  167200 				JSR	PC,U.12
000530	005726 					TST	(SP)+
000532	006000 					ROR	R0
000534	103013 					BCC	11$
000536	016600  000012 				MOV	12(SP),R0			; GOT.CCB,*				2612
000542	010560  000004 				MOV	R5,4(R0)
000546	010016 					MOV	R0,(SP)				; GOT.CCB,*				2613
000550	016646  000006 				MOV	6(SP),-(SP)
000554	004767  170120 				JSR	PC,U.16
000560	005726 					TST	(SP)+				;					2611
000562	000403 					BR	12$				;					2608
000564	010504 				11$:	MOV	R5,R4				;					2616
000566	004767  000000G				JSR	PC,$CMQIN
000572	016600  000006 			12$:	MOV	6(SP),R0			;					2618
000576	052760  020000  000040 			BIS	#20000,40(R0)
000604	010001 					MOV	R0,R1				;					2619
000606	016100  000030 				MOV	30(R1),R0
000612	005200 					INC	R0
000614	016601  000006 				MOV	6(SP),R1
000620	010061  000030 				MOV	R0,30(R1)
000624	042761  170000  000030 			BIC	#170000,30(R1)
000632	062706  000014 			13$:	ADD	#14,SP				;					2498
000636	000207 					RTS	PC

; Routine Size:  208 words,	Routine Base:  $CODE$ + 10434
; Maximum stack depth per invocation:  14 words


;	  2621	
;	  2622	
;	  2623	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  90
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (32)

;	  2624	routine SEG_BLD ( CCB, PDB) :  novalue =	!
;	  2625	
;	  2626	!++
;	  2627	! FUNCTIONAL DESCRIPTION:
;	  2628	!	This routine formats an NSP Data Segment message and queues it to
;	  2629	!	Transport.
;	  2630	!
;	  2631	! FORMAL PARAMETERS:
;	  2632	!	PDB = Port Data Base Address
;	  2633	!	CCB = CCB Address
;	  2634	!
;	  2635	! IMPLICIT INPUTS:
;	  2636	!	DB = NSP Data Base Address
;	  2637	!
;	  2638	! IMPLICIT OUTPUTS:
;	  2639	!	None
;	  2640	!
;	  2641	! ROUTINE VALUE:
;	  2642	! COMPLETION CODES:
;	  2643	!	None
;	  2644	!
;	  2645	! SIDE EFFECTS:
;	  2646	!	None
;	  2647	!--
;	  2648	
;	  2649		begin
;	  2650		map CCB: ref block field(C_fields);
;	  2651		map PDB: ref block field(PORT_fields);
;	  2652	
;	  2653		bind CHN_CCB = .CCB[C_CHN]: block field(C_fields);
;	  2654	
;	  2655		local
;	  2656		xtemp,
;	  2657		PTR,
;	  2658		FLG;
;	  2659		
;	  2660		If .PDB[FLAGseg] eql false
;	  2661		Then
;	  2662			xtemp = .CHN_CCB[C_STS]
;	  2663		Else
;	  2664			xtemp = .PDB[NUMdat];
;	  2665	
;	  2666		xtemp = (.xtemp and %o'7777');
;	  2667		PTR = .CCB[C_ADDR];
;	  2668		FLG = 0;
;	  2669	
;	  2670		If (.CHN_CCB[C_PRM3] and N$FBOM) neq 0
;	  2671		Then
;	  2672			FLG = FLG_BOM;
;	  2673		If (.CHN_CCB[C_PRM3] and N$FEOM) neq 0
;	  2674		Then
;	  2675			FLG = .FLG or FLG_EOM;
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  91
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (32)

;	  2676	
;	  2677		ch$wchar_a( .FLG, PTR);
;	  2678		ch$wchar_a( .PDB[L_rem_addr], PTR);
;	  2679		ch$wchar_a( .PDB[H_rem_addr], PTR);
;	  2680		ch$wchar_a( .PDB[PID], PTR);
;	  2681		ch$wchar_a( .PDB[ADDran], PTR);
;	  2682		PUT2BYTES( .PDB[ACKdat_xmt] + Q_ACK^12 + true^15, PTR);
;	  2683		PUT2BYTES( .xtemp, PTR);
;	  2684	
;	  2685		CCB[C_CNT] = ch$diff(.PTR, .CCB[C_ADDR]);
;	  2686	
;	  2687		CCB[C_STK] = .CCB[C_CHN];
;	  2688		CHN_CCB[C_STS] = .xtemp;
;	  2689		CHN_CCB[C_MOD] = N_XDAT;
;	  2690		PDB[FLAGdat_ack] = false;
;	  2691	
;	  2692		If .PDB[DELAYstr_tim] eql 0
;	  2693		Then
;	  2694			begin
;	  2695			PDB[DELAYstr_tim] = 1;
;	  2696			PDB[DELAYmsg_num] = .xtemp;
;	  2697			end;
;	  2698		If .PDB[FLAGseg] eql true
;	  2699		Then
;	  2700			PDB[NUMdat] = .PDB[NUMdat] + 1
;	  2701		Else
;	  2702			begin
;	  2703			if CMP_EQL( .xtemp, (.PDB[NUMdat] -1))
;	  2704			then
;	  2705				PDB[FLAGseg] = true
;	  2706			end;
;	  2707	
;	  2708		XPT_XMIT( .CCB, .PDB)	
;	  2709		end;


						.SBTTL	SEG.BLD
000000	004167  000000G			; SEG.BLD
					U.36:	JSR	R1,$SAVE5			;					2624
000004	016604  000020 				MOV	20(SP),R4			; CCB,*					2653
000010	016403  000002 				MOV	2(R4),R3			;					2649
000014	016602  000016 				MOV	16(SP),R2			; PDB,*					2660
000020	012746  000042 				MOV	#42,-(SP)
000024	060216 					ADD	R2,(SP)
000026	132776  000040  000000 			BITB	#40,@0(SP)
000034	001003 					BNE	1$
000036	016301  000014 				MOV	14(R3),R1			; *,XTEMP				2662
000042	000402 					BR	2$				;					2660
000044	016201  000020 			1$:	MOV	20(R2),R1			; *,XTEMP				2664
000050	042701  170000 			2$:	BIC	#170000,R1			; *,XTEMP				2666
000054	016405  000020 				MOV	20(R4),R5			; *,PTR					2667
000060	005000 					CLR	R0				; FLG					2668
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  92
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (32)

000062	032763  000002  000030 			BIT	#2,30(R3)			;					2670
000070	001402 					BEQ	3$
000072	012700  000040 				MOV	#40,R0				; *,FLG					2672
000076	032763  000001  000030 		3$:	BIT	#1,30(R3)			;					2673
000104	001402 					BEQ	4$
000106	052700  000100 				BIS	#100,R0				; *,FLG					2675
000112	110025 				4$:	MOVB	R0,(R5)+			; FLG,PTR				2677
000114	116225  000006 				MOVB	6(R2),(R5)+			; *,PTR					2678
000120	116225  000007 				MOVB	7(R2),(R5)+			; *,PTR					2679
000124	116225  000004 				MOVB	4(R2),(R5)+			; *,PTR					2680
000130	116225  000005 				MOVB	5(R2),(R5)+			; *,PTR					2681
000134	016200  000030 				MOV	30(R2),R0			; *,TEMP				2682
000140	162700  100000 				SUB	#100000,R0			; *,TEMP
000144	110025 					MOVB	R0,(R5)+			; TEMP,PTR
000146	010046 					MOV	R0,-(SP)			; TEMP,*
000150	000316 					SWAB	(SP)
000152	112625 					MOVB	(SP)+,(R5)+			; *,PTR
000154	010100 					MOV	R1,R0				; XTEMP,TEMP				2683
000156	110025 					MOVB	R0,(R5)+			; TEMP,PTR
000160	010046 					MOV	R0,-(SP)			; TEMP,*
000162	000316 					SWAB	(SP)
000164	112625 					MOVB	(SP)+,(R5)+			; *,PTR
000166	010564  000022 				MOV	R5,22(R4)			; PTR,*					2685
000172	166464  000020  000022 			SUB	20(R4),22(R4)
000200	016464  000002  000004 			MOV	2(R4),4(R4)			;					2687
000206	010163  000014 				MOV	R1,14(R3)			; XTEMP,*				2688
000212	112763  000022  000013 			MOVB	#22,13(R3)			;					2689
000220	042762  020000  000040 			BIC	#20000,40(R2)			;					2690
000226	012700  000062 				MOV	#62,R0				;					2692
000232	060200 					ADD	R2,R0
000234	005710 					TST	(R0)
000236	001004 					BNE	5$
000240	012710  000001 				MOV	#1,(R0)				;					2695
000244	010162  000060 				MOV	R1,60(R2)			; XTEMP,*				2696
000250	012700  000020 			5$:	MOV	#20,R0				;					2700
000254	060200 					ADD	R2,R0
000256	132776  000040  000000 			BITB	#40,@0(SP)			;					2698
000264	001402 					BEQ	6$
000266	005210 					INC	(R0)				;					2700
000270	000411 					BR	7$				;					2698
000272	011000 				6$:	MOV	(R0),R0				;					2703
000274	160100 					SUB	R1,R0				; XTEMP,*
000276	005300 					DEC	R0
000300	032700  007777 				BIT	#7777,R0
000304	001003 					BNE	7$
000306	152776  000040  000000 			BISB	#40,@0(SP)			;					2705
000314	010446 				7$:	MOV	R4,-(SP)			;					2708
000316	010246 					MOV	R2,-(SP)
000320	004767  000000V				JSR	PC,U.45
000324	062706  000006 				ADD	#6,SP				;					2624
000330	000207 					RTS	PC
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  93
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (32)

; Routine Size:  109 words,	Routine Base:  $CODE$ + 11274
; Maximum stack depth per invocation:  10 words


;	  2710	
;	  2711	
;	  2712	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  94
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (33)

;	  2713	routine SND_DATA ( PDB) :  =	!
;	  2714	
;	  2715	!++
;	  2716	! functional description:
;	  2717	!	This routine performs the actual segmentation of Session Control
;	  2718	!	transmit buffers into NSP segments. Control is passed to to the
;	  2719	!	data segment format routine.
;	  2720	!
;	  2721	! formal parameters:
;	  2722	!	PDB = Port Data Base Address
;	  2723	!
;	  2724	! implicit inputs:
;	  2725	!	DB = NSP Data Base Address
;	  2726	!
;	  2727	! implicit outputs:
;	  2728	!	none
;	  2729	!
;	  2730	! routine value:
;	  2731	! completion codes:
;	  2732	!	none
;	  2733	!
;	  2734	! side effects:
;	  2735	!	none
;	  2736	!--
;	  2737		begin
;	  2738		map PDB: ref block field(PORT_fields);
;	  2739	
;	  2740		bind CHN_CCB = .PDB[MSG_chain]: block field(C_fields);
;	  2741		bind MSG_CCB = .PDB[MSG_queue]: block field(C_fields);
;	  2742	
;	  2743		local
;	  2744		SEG_CCB: ref block field(C_fields),
;	  2745		NDB : ref block field(NODE_fields),
;	  2746		CCB: ref block field(C_fields);
;	  2747	
;	  2748		NDB = .PDB[NODElnk];
;	  2749	
;	  2750		If .PDB[FLAGseg] eql false
;	  2751		Then
;	  2752			begin
;	  2753			If CCB_HDR_GET( .PDB[ACK_queue], CCB, .PDB)
;	  2754			Then
;	  2755				begin
;	  2756				CCB[C_CHN] = .PDB[ACK_queue];
;	  2757				PDB[ACK_queue] = .(.CCB[C_CHN]);
;	  2758				MAP$( .DB[BIASnodes]);
;	  2759				NDB[NDtimeout] = .NDB[NDtimeout] + 1;
;	  2760				MAP$( .DB[BIASports]);
;	  2761				end
;	  2762			Else
;	  2763				begin
;	  2764				PDB[DATres] = true;
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  95
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (33)

;	  2765				return false
;	  2766				end;
;	  2767			end
;	  2768		Else
;	  2769			begin
;	  2770			If CCB_GET( SEG_CCB, .PDB)
;	  2771			Then
;	  2772				begin
;	  2773				If not CCB_HDR_GET(  0, CCB, .PDB)
;	  2774				Then
;	  2775					begin
;	  2776					CCB_RETRN( .SEG_CCB, .PDB);
;	  2777					PDB[DATres] = true;
;	  2778					return false;
;	  2779					end
;	  2780				Else
;	  2781					begin
;	  2782					CCB[C_CHN] = .SEG_CCB;
;	  2783					SEG_CCB[C_STK] = .PDB[MSG_queue];
;	  2784	
;	  2785					If .CHN_CCB[C_CNT] - .MSG_CCB[C_STS] leq .PDB[SIZEseg]
;	  2786					Then
;	  2787						begin
;	  2788						SEG_CCB[C_CNT] = .CHN_CCB[C_CNT] - .MSG_CCB[C_STS];
;	  2789						SEG_CCB[C_ADDR] = ch$plus( .CHN_CCB[C_ADDR], .MSG_CCB[C_STS]);
;	  2790						SEG_CCB[C_BIAS] = .CHN_CCB[C_BIAS];
;	  2791	
;	  2792						If .CHN_CCB[C_CHN] neq 0
;	  2793						Then
;	  2794							begin
;	  2795							MSG_CCB[C_STS] = 0;
;	  2796							PDB[MSG_chain] = .CHN_CCB[C_CHN]
;	  2797							end
;	  2798						Else
;	  2799							begin
;	  2800							If .MSG_CCB[C_PRM1] eql N$FEOM
;	  2801							Then
;	  2802								SEG_CCB[C_PRM3] = N$FEOM;
;	  2803							SEG_CCB[C_PRM3] = .SEG_CCB[C_PRM3] or N$FCMP;
;	  2804							CMQRM$( PDB[MSG_queue], SEG_CCB[C_STK]);
;	  2805							PDB[MSG_chain] = .PDB[MSGhead]
;	  2806							end
;	  2807						end
;	  2808					Else
;	  2809						begin
;	  2810						SEG_CCB[C_ADDR] = ch$plus( .CHN_CCB[C_ADDR], .MSG_CCB[C_STS]);
;	  2811						SEG_CCB[C_BIAS] = .CHN_CCB[C_BIAS];
;	  2812						SEG_CCB[C_CNT] = .PDB[SIZEseg];
;	  2813						MSG_CCB[C_STS] = .MSG_CCB[C_STS] + .PDB[SIZEseg];
;	  2814						end;
;	  2815					IF .PDB[FLAGnew_msg]
;	  2816					Then
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  96
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (33)

;	  2817						begin
;	  2818						SEG_CCB[C_PRM3] = (.SEG_CCB[C_PRM3] or N$FBOM);
;	  2819						PDB[FLAGnew_msg] = false
;	  2820						end;
;	  2821					If .SEG_CCB[C_PRM3] and N$FEOM
;	  2822					Then
;	  2823						PDB[FLAGnew_msg] = true;
;	  2824					MAP$( .DB[BIASnodes]);
;	  2825					DADD( NDB[NDb_xmt], .SEG_CCB[C_CNT]);
;	  2826					MAP$( .DB[BIASports])
;	  2827					end
;	  2828				end
;	  2829			Else
;	  2830				begin
;	  2831				PDB[DATres] = true;
;	  2832				return false
;	  2833				end
;	  2834			end;
;	  2835		SEG_BLD( .CCB, .PDB);
;	  2836		return true;
;	  2837		end;


						.SBTTL	SND.DATA
000000	004167  000000G			; SND.DATA
					U.37:	JSR	R1,$SAVE5			;					2713
000004	162706  000016 				SUB	#16,SP
000010	016646  000034 				MOV	34(SP),-(SP)			; PDB,*					2740
000014	012700  000074 				MOV	#74,R0
000020	061600 					ADD	(SP),R0
000022	010066  000012 				MOV	R0,12(SP)
000026	011003 					MOV	(R0),R3				;					2737
000030	012700  000102 				MOV	#102,R0				;					2741
000034	061600 					ADD	(SP),R0
000036	010066  000010 				MOV	R0,10(SP)
000042	011002 					MOV	(R0),R2				;					2737
000044	011600 					MOV	(SP),R0				;					2748
000046	016066  000010  000002 			MOV	10(R0),2(SP)			; *,NDB
000054	012700  000042 				MOV	#42,R0				;					2750
000060	061600 					ADD	(SP),R0
000062	010066  000006 				MOV	R0,6(SP)
000066	132710  000040 				BITB	#40,(R0)
000072	001053 					BNE	2$
000074	012700  000116 				MOV	#116,R0				;					2753
000100	061600 					ADD	(SP),R0
000102	010001 					MOV	R0,R1
000104	011146 					MOV	(R1),-(SP)
000106	012746  000022 				MOV	#22,-(SP)
000112	060616 					ADD	SP,(SP)				; CCB,*
000114	016646  000004 				MOV	4(SP),-(SP)
000120	004767  166526 				JSR	PC,U.13
000124	062706  000006 				ADD	#6,SP
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  97
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (33)

000130	006000 					ROR	R0
000132	103026 					BCC	1$
000134	016600  000016 				MOV	16(SP),R0			; CCB,*					2756
000140	011160  000002 				MOV	(R1),2(R0)
000144	017011  000002 				MOV	@2(R0),(R1)			;					2757
000150	016700  000002G				MOV	.CRDAT+2,R0			;					2758
000154	016067  000030  000000G			MOV	30(R0),KISAR6
000162	016600  000002 				MOV	2(SP),R0			; NDB,*					2759
000166	005260  000036 				INC	36(R0)				; *(NDB)
000172	016700  000002G				MOV	.CRDAT+2,R0			;					2760
000176	016067  000014  000000G			MOV	14(R0),KISAR6
000204	000167  000454 				JMP	12$				;					2753
000210	011600 				1$:	MOV	(SP),R0				;					2764
000212	012760  000001  000066 			MOV	#1,66(R0)
000220	000443 					BR	3$				;					2763
000222	012746  000016 			2$:	MOV	#16,-(SP)			;					2770
000226	060616 					ADD	SP,(SP)				; SEG.CCB,*
000230	016646  000002 				MOV	2(SP),-(SP)
000234	004767  166276 				JSR	PC,U.12
000240	022626 					CMP	(SP)+,(SP)+
000242	006000 					ROR	R0
000244	103361 					BCC	1$
000246	016605  000014 				MOV	14(SP),R5			; SEG.CCB,*				2776
000252	005046 					CLR	-(SP)				;					2773
000254	012746  000022 				MOV	#22,-(SP)
000260	060616 					ADD	SP,(SP)				; CCB,*
000262	016646  000004 				MOV	4(SP),-(SP)
000266	004767  166360 				JSR	PC,U.13
000272	062706  000006 				ADD	#6,SP
000276	006000 					ROR	R0
000300	103414 					BLO	4$
000302	010546 					MOV	R5,-(SP)			;					2776
000304	016646  000002 				MOV	2(SP),-(SP)
000310	004767  166514 				JSR	PC,U.14
000314	016600  000004 				MOV	4(SP),R0			;					2777
000320	012760  000001  000066 			MOV	#1,66(R0)
000326	022626 					CMP	(SP)+,(SP)+			;					2773
000330	000567 				3$:	BR	13$				;					2775
000332	016600  000016 			4$:	MOV	16(SP),R0			; CCB,*					2782
000336	010560  000002 				MOV	R5,2(R0)
000342	017665  000010  000004 			MOV	@10(SP),4(R5)			;					2783
000350	012766  000022  000004 			MOV	#22,4(SP)			;					2788
000356	060566  000004 				ADD	R5,4(SP)
000362	012704  000014 				MOV	#14,R4				;					2785
000366	060204 					ADD	R2,R4
000370	016301  000022 				MOV	22(R3),R1
000374	161401 					SUB	(R4),R1
000376	011646 					MOV	(SP),-(SP)
000400	062716  000072 				ADD	#72,(SP)
000404	013600 					MOV	@(SP)+,R0
000406	020100 					CMP	R1,R0
000410	003046 					BGT	8$
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  98
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (33)

000412	010176  000004 				MOV	R1,@4(SP)			;					2788
000416	016301  000020 				MOV	20(R3),R1			;					2789
000422	061401 					ADD	(R4),R1
000424	010165  000020 				MOV	R1,20(R5)
000430	016365  000016  000016 			MOV	16(R3),16(R5)			;					2790
000436	016300  000002 				MOV	2(R3),R0			;					2792
000442	001404 					BEQ	5$
000444	005014 					CLR	(R4)				;					2795
000446	010076  000012 				MOV	R0,@12(SP)			;					2796
000452	000440 					BR	9$				;					2792
000454	026227  000024  000001 		5$:	CMP	24(R2),#1			;					2800
000462	001003 					BNE	6$
000464	012765  000001  000030 			MOV	#1,30(R5)			;					2802
000472	052765  000004  000030 		6$:	BIS	#4,30(R5)			;					2803
000500	016603  000010 				MOV	10(SP),R3			;					2804
000504	004767  000000G				JSR	PC,$CMQRM
000510	103402 					BCS	7$
000512	010465  000004 				MOV	R4,4(R5)			; $MCB$R4,*
000516	017676  000010  000012 		7$:	MOV	@10(SP),@12(SP)			;					2805
000524	000413 					BR	9$				;					2785
000526	016301  000020 			8$:	MOV	20(R3),R1			;					2810
000532	061401 					ADD	(R4),R1
000534	010165  000020 				MOV	R1,20(R5)
000540	016365  000016  000016 			MOV	16(R3),16(R5)			;					2811
000546	010076  000004 				MOV	R0,@4(SP)			;					2812
000552	060014 					ADD	R0,(R4)				;					2813
000554	132776  000002  000006 		9$:	BITB	#2,@6(SP)			;					2815
000562	001406 					BEQ	10$
000564	052765  000002  000030 			BIS	#2,30(R5)			;					2818
000572	142776  000002  000006 			BICB	#2,@6(SP)			;					2819
000600	032765  000001  000030 		10$:	BIT	#1,30(R5)			;					2821
000606	001403 					BEQ	11$
000610	152776  000002  000006 			BISB	#2,@6(SP)			;					2823
000616	016701  000002G			11$:	MOV	.CRDAT+2,R1			;					2824
000622	016167  000030  000000G			MOV	30(R1),KISAR6
000630	016646  000002 				MOV	2(SP),-(SP)			; NDB,*					2825
000634	062716  000014 				ADD	#14,(SP)
000640	017646  000006 				MOV	@6(SP),-(SP)
000644	004767  166272 				JSR	PC,U.15
000650	016700  000002G				MOV	.CRDAT+2,R0			;					2826
000654	016067  000014  000000G			MOV	14(R0),KISAR6
000662	022626 					CMP	(SP)+,(SP)+			;					2781
000664	016646  000016 			12$:	MOV	16(SP),-(SP)			; CCB,*					2835
000670	016646  000002 				MOV	2(SP),-(SP)
000674	004767  176546 				JSR	PC,U.36
000700	022626 					CMP	(SP)+,(SP)+			;					2713
000702	012700  000001 				MOV	#1,R0				;					2737
000706	000401 					BR	14$
000710	005000 				13$:	CLR	R0				;					2713
000712	062706  000020 			14$:	ADD	#20,SP
000716	000207 					RTS	PC
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page  99
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (33)

; Routine Size:  232 words,	Routine Base:  $CODE$ + 11626
; Maximum stack depth per invocation:  18 words


;	  2838	
;	  2839	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 100
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (34)

;	  2840	global routine SND_MSG ( PDB) : CALL$ novalue =	!
;	  2841	
;	  2842	!++
;	  2843	! FUNCTIONAL DESCRIPTION:
;	  2844	!	This routine prioritises the message transmission process.
;	  2845	!
;	  2846	! FORMAL PARAMETERS:
;	  2847	!	PDB = Port Data Base Address
;	  2848	!
;	  2849	! IMPLICIT INPUTS:
;	  2850	!	DB = NSP Data Base Address
;	  2851	!
;	  2852	! IMPLICIT OUTPUTS:
;	  2853	!	None
;	  2854	!
;	  2855	! ROUTINE VALUE:
;	  2856	! COMPLETION CODES:
;	  2857	!	None
;	  2858	!
;	  2859	! SIDE EFFECTS:
;	  2860	!	None
;	  2861	!--
;	  2862	
;	  2863		begin
;	  2864		local
;	  2865		sts;
;	  2866	
;	  2867		Do ( STS = CALL$L( TRICKLE, .PDB))
;	  2868		While .STS eql true;
;	  2869		end;


						.SBTTL	SND.MSG
000000	016546  000002 			SND.MSG::
					U.38:
000000					1$:	MOV	2(R5),-(SP)			; PDB(.AP.),*				2867
000004	012746  000001 				MOV	#1,-(SP)
000010	012746  000000V				MOV	#U.43,-(SP)
000014	004767  000000G				JSR	PC,$CALL
000020	010001 					MOV	R0,R1				; *,STS
000022	062706  000006 				ADD	#6,SP
000026	020127  000001 				CMP	R1,#1				; STS,*					2868
000032	001762 					BEQ	1$
000034	000207 					RTS	PC				;					2840

; Routine Size:  15 words,	Routine Base:  $CODE$ + 12546
; Maximum stack depth per invocation:  4 words


;	  2870	
;	  2871	
;	  2872	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 101
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (35)

;	  2873	global routine SND_INTERRUPT ( PDB) : call$ =		!
;	  2874	
;	  2875	!++
;	  2876	! FUNCTIONAL DESCRIPTION:
;	  2877	!	This routine dequeues an INTERRUPT-XMT CCB and passes to control
;	  2878	!	to the Interrupt Format routine.
;	  2879	!
;	  2880	! FORMAL PARAMETERS:
;	  2881	!	PDB = Port Data Base Address
;	  2882	!
;	  2883	! IMPLICIT INPUTS:
;	  2884	!	DB = NSP Data Base Address
;	  2885	!
;	  2886	! IMPLICIT OUTPUTS:
;	  2887	!	None
;	  2888	!
;	  2889	! ROUTINE VALUE:
;	  2890	! COMPLETION CODES:
;	  2891	!	None
;	  2892	!
;	  2893	! SIDE EFFECTS:
;	  2894	!	None
;	  2895	!--
;	  2896	
;	  2897		begin
;	  2898		map PDB: ref block field(PORT_fields);
;	  2899	
;	  2900		local
;	  2901		NDB : ref block field(NODE_fields),
;	  2902		CCB: ref block field(C_fields);
;	  2903	
;	  2904		NDB = .PDB[NODElnk];
;	  2905	
;	  2906		If .PDB[OTHstate] eql OTHtimeout 
;	  2907		Then
;	  2908			begin
;	  2909			If CCB_HDR_GET( 0, CCB, .PDB)
;	  2910			Then
;	  2911				begin
;	  2912				CMQRM$( PDB[OTHack_queue], CCB[C_STK]);
;	  2913				MAP$( .DB[BIASnodes]);
;	  2914				NDB[NDtimeout] = .NDB[NDtimeout] + 1;
;	  2915				MAP$( .DB[BIASports]);
;	  2916	
;	  2917				Selectone .PDB[OTHtyp] of
;	  2918					Set
;	  2919					[OTHirequest]:
;	  2920						IRQ_BLD( .CCB, .PDB);
;	  2921					[OTHdrequest]:
;	  2922						DRQ_BLD( .CCB, .PDB);
;	  2923					[OTHinterrupt]:
;	  2924						INT_BLD( .CCB, .PDB);
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 102
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (35)

;	  2925					Tes;
;	  2926				return true;
;	  2927				end
;	  2928			Else
;	  2929				begin
;	  2930				PDB[OTHres] = true;
;	  2931				return false
;	  2932				end
;	  2933			end;
;	  2934		If .PDB[OTHstate] eql OTHready
;	  2935		Then
;	  2936			begin
;	  2937			If CCB_HDR_GET( 0, CCB, .PDB)
;	  2938			Then
;	  2939				begin
;	  2940				CMQRM$( PDB[INT_queue], CCB[C_STK]);
;	  2941				INT_BLD( .CCB, .PDB);
;	  2942				return true;
;	  2943				end
;	  2944			Else
;	  2945				begin
;	  2946				PDB[OTHres] = true;
;	  2947				return false
;	  2948				end
;	  2949			end;
;	  2950		return false
;	  2951		end;


						.SBTTL	SND.INTERRUPT
000000	005746 				SND.INTERRUPT::
					U.39:	TST	-(SP)				;					2873
000002	016501  000002 				MOV	2(R5),R1			; PDB(.AP.),*				2904
000006	016105  000010 				MOV	10(R1),R5			; *,NDB
000012	012702  000064 				MOV	#64,R2				;					2906
000016	060102 					ADD	R1,R2
000020	121227  000002 				CMPB	(R2),#2
000024	001067 					BNE	4$
000026	005046 					CLR	-(SP)				;					2909
000030	012746  000004 				MOV	#4,-(SP)
000034	060616 					ADD	SP,(SP)				; CCB,*
000036	010146 					MOV	R1,-(SP)
000040	004767  165630 				JSR	PC,U.13
000044	062706  000006 				ADD	#6,SP
000050	006000 					ROR	R0
000052	103112 					BCC	8$
000054	012703  000122 				MOV	#122,R3				;					2912
000060	060103 					ADD	R1,R3
000062	004767  000000G				JSR	PC,$CMQRM
000066	103403 					BCS	1$
000070	011600 					MOV	(SP),R0				; CCB,*
000072	010460  000004 				MOV	R4,4(R0)			; $MCB$R4,*
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 103
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (35)

000076	016700  000002G			1$:	MOV	.CRDAT+2,R0			;					2913
000102	016067  000030  000000G			MOV	30(R0),KISAR6
000110	005265  000036 				INC	36(R5)				; *(NDB)				2914
000114	016700  000002G				MOV	.CRDAT+2,R0			;					2915
000120	016067  000014  000000G			MOV	14(R0),KISAR6
000126	126227  000001  000002 			CMPB	1(R2),#2			;					2917
000134	001005 					BNE	2$
000136	011646 					MOV	(SP),-(SP)			; CCB,*					2920
000140	010146 					MOV	R1,-(SP)
000142	004767  170052 				JSR	PC,U.22
000146	000450 					BR	6$
000150	126227  000001  000004 		2$:	CMPB	1(R2),#4			;					2917
000156	001005 					BNE	3$
000160	011646 					MOV	(SP),-(SP)			; CCB,*					2922
000162	010146 					MOV	R1,-(SP)
000164	004767  166570 				JSR	PC,U.18
000170	000437 					BR	6$
000172	126227  000001  000001 		3$:	CMPB	1(R2),#1			;					2917
000200	001034 					BNE	7$
000202	000426 					BR	5$				;					2924
000204	105712 				4$:	TSTB	(R2)				;					2934
000206	001037 					BNE	9$
000210	005046 					CLR	-(SP)				;					2937
000212	012746  000004 				MOV	#4,-(SP)
000216	060616 					ADD	SP,(SP)				; CCB,*
000220	010146 					MOV	R1,-(SP)
000222	004767  165446 				JSR	PC,U.13
000226	062706  000006 				ADD	#6,SP
000232	006000 					ROR	R0
000234	103021 					BCC	8$
000236	012703  000076 				MOV	#76,R3				;					2940
000242	060103 					ADD	R1,R3
000244	004767  000000G				JSR	PC,$CMQRM
000250	103403 					BCS	5$
000252	011600 					MOV	(SP),R0				; CCB,*
000254	010460  000004 				MOV	R4,4(R0)			; $MCB$R4,*
000260	011646 				5$:	MOV	(SP),-(SP)			; CCB,*					2941
000262	010146 					MOV	R1,-(SP)
000264	004767  170452 				JSR	PC,U.26
000270	022626 				6$:	CMP	(SP)+,(SP)+			;					2939
000272	012700  000001 			7$:	MOV	#1,R0				;					2936
000276	000404 					BR	10$
000300	012761  000001  000070 		8$:	MOV	#1,70(R1)			;					2946
000306	005000 				9$:	CLR	R0				;					2873
000310	005726 				10$:	TST	(SP)+
000312	000207 					RTS	PC

; Routine Size:  102 words,	Routine Base:  $CODE$ + 12604
; Maximum stack depth per invocation:  5 words


;	  2952	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 104
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (35)

;	  2953	
;	  2954	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 105
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (36)

;	  2955	routine SND_INTR_REQ ( PDB) : =	!
;	  2956	
;	  2957	!++
;	  2958	! FUNCTIONAL DESCRIPTION:
;	  2959	!	This routine dequeues an INTERRUPT-REQUEST CCB and passes control
;	  2960	!	to the Interrupt Request Format routine.
;	  2961	!
;	  2962	! FORMAL PARAMETERS:
;	  2963	!	PDB = Port Data Base Address
;	  2964	!
;	  2965	! IMPLICIT INPUTS:
;	  2966	!	DB = NSP Data Base Address
;	  2967	!
;	  2968	! IMPLICIT OUTPUTS:
;	  2969	!	None
;	  2970	!
;	  2971	! ROUTINE VALUE:
;	  2972	! COMPLETION CODES:
;	  2973	!	None
;	  2974	!
;	  2975	! SIDE EFFECTS:
;	  2976	!	None
;	  2977	!--
;	  2978	
;	  2979		begin
;	  2980		map PDB: ref block field(PORT_fields);
;	  2981	
;	  2982		local
;	  2983		CCB: ref block field(C_fields);
;	  2984	
;	  2985	
;	  2986		If CCB_HDR_GET( 0, CCB, .PDB)
;	  2987		Then
;	  2988			begin
;	  2989			CMQRM$( PDB[INTR_queue], CCB[C_STK]);
;	  2990			PDB[COUNTloc_int] = .PDB[COUNTloc_int] + 1;
;	  2991			IRQ_BLD( .CCB, .PDB);
;	  2992			return true;
;	  2993			end
;	  2994		Else
;	  2995			PDB[OTHres] = true;
;	  2996		return false
;	  2997		end;


						.SBTTL	SND.INTR.REQ
000000	004167  000000G			; SND.INTR.REQ
					U.40:	JSR	R1,$SAVE4			;					2955
000004	005746 					TST	-(SP)
000006	005046 					CLR	-(SP)				;					2986
000010	012746  000004 				MOV	#4,-(SP)
000014	060616 					ADD	SP,(SP)				; CCB,*
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 106
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (36)

000016	016601  000022 				MOV	22(SP),R1			; PDB,*
000022	010146 					MOV	R1,-(SP)
000024	004767  165330 				JSR	PC,U.13
000030	062706  000006 				ADD	#6,SP
000034	006000 					ROR	R0
000036	103023 					BCC	2$
000040	010103 					MOV	R1,R3				;					2989
000042	062703  000106 				ADD	#106,R3
000046	004767  000000G				JSR	PC,$CMQRM
000052	103403 					BCS	1$
000054	011600 					MOV	(SP),R0				; CCB,*
000056	010460  000004 				MOV	R4,4(R0)			; $MCB$R4,*
000062	005261  000056 			1$:	INC	56(R1)				;					2990
000066	011646 					MOV	(SP),-(SP)			; CCB,*					2991
000070	010146 					MOV	R1,-(SP)
000072	004767  167606 				JSR	PC,U.22
000076	022626 					CMP	(SP)+,(SP)+			;					2986
000100	012700  000001 				MOV	#1,R0				;					2988
000104	000404 					BR	3$
000106	012761  000001  000070 		2$:	MOV	#1,70(R1)			;					2995
000114	005000 					CLR	R0				;					2979
000116	005726 				3$:	TST	(SP)+				;					2955
000120	000207 					RTS	PC

; Routine Size:  41 words,	Routine Base:  $CODE$ + 13120
; Maximum stack depth per invocation:  10 words


;	  2998	
;	  2999	
;	  3000	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 107
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (37)

;	  3001	global routine SND_ONE_DATA ( PDB) : CALL$ novalue =	!
;	  3002	
;	  3003	!++
;	  3004	! FUNCTIONAL DESCRIPTION:
;	  3005	!	This routine sends one data segment.
;	  3006	!
;	  3007	! FORMAL PARAMETERS:
;	  3008	!	PDB = Port Data Base Address
;	  3009	!
;	  3010	! IMPLICIT INPUTS:
;	  3011	!	DB = NSP Data Base Address
;	  3012	!
;	  3013	! IMPLICIT OUTPUTS:
;	  3014	!	None
;	  3015	!
;	  3016	! ROUTINE VALUE:
;	  3017	! COMPLETION CODES:
;	  3018	!	None
;	  3019	!
;	  3020	! SIDE EFFECTS:
;	  3021	!	None
;	  3022	!--
;	  3023	
;	  3024		begin
;	  3025		If DATA_TO_SND( .PDB)
;	  3026		Then
;	  3027			SND_DATA( .PDB);
;	  3028	
;	  3029		end;


						.SBTTL	SND.ONE.DATA
000000	016546  000002 			SND.ONE.DATA::
					U.41:	MOV	2(R5),-(SP)			; PDB(.AP.),*				3025
000004	004767  165570 				JSR	PC,U.17
000010	005726 					TST	(SP)+
000012	006000 					ROR	R0
000014	103005 					BCC	1$
000016	016546  000002 				MOV	2(R5),-(SP)			; PDB(.AP.),*				3027
000022	004767  176336 				JSR	PC,U.37
000026	005726 					TST	(SP)+
000030	000207 				1$:	RTS	PC				;					3001

; Routine Size:  13 words,	Routine Base:  $CODE$ + 13242
; Maximum stack depth per invocation:  2 words


;	  3030	
;	  3031	
;	  3032	
;	  3033	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 108
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (38)

;	  3034	routine SND_REQ_DATA ( PDB) : =	!
;	  3035	
;	  3036	!++
;	  3037	! FUNCTIONAL DESCRIPTION:
;	  3038	!	This routine dequeues a DATA-REQUEST CCB and passes control to the
;	  3039	!	Data Request Format routine.
;	  3040	!
;	  3041	! FORMAL PARAMETERS:
;	  3042	!	PDB = Port Data Base Address
;	  3043	!
;	  3044	! IMPLICIT INPUTS:
;	  3045	!	DB = NSP Data Base Address
;	  3046	!
;	  3047	! IMPLICIT OUTPUTS:
;	  3048	!	None
;	  3049	!
;	  3050	! ROUTINE VALUE:
;	  3051	! COMPLETION CODES:
;	  3052	!	None
;	  3053	!
;	  3054	! SIDE EFFECTS:
;	  3055	!	None
;	  3056	!--
;	  3057	
;	  3058		begin
;	  3059		map PDB: ref block field(PORT_fields);
;	  3060	
;	  3061		local
;	  3062		CCB: ref block field(C_fields);
;	  3063	
;	  3064		If CCB_HDR_GET( 0, CCB, .PDB)
;	  3065		Then
;	  3066			begin
;	  3067			CMQRM$( PDB[DATR_queue], CCB[C_STK]);
;	  3068			DRQ_BLD( .CCB, .PDB);
;	  3069			return true;
;	  3070			end
;	  3071		Else
;	  3072			PDB[OTHres] = true;
;	  3073		return false
;	  3074		end;


						.SBTTL	SND.REQ.DATA
000000	004167  000000G			; SND.REQ.DATA
					U.42:	JSR	R1,$SAVE4			;					3034
000004	005746 					TST	-(SP)
000006	005046 					CLR	-(SP)				;					3064
000010	012746  000004 				MOV	#4,-(SP)
000014	060616 					ADD	SP,(SP)				; CCB,*
000016	016601  000022 				MOV	22(SP),R1			; PDB,*
000022	010146 					MOV	R1,-(SP)
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 109
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (38)

000024	004767  165154 				JSR	PC,U.13
000030	062706  000006 				ADD	#6,SP
000034	006000 					ROR	R0
000036	103021 					BCC	2$
000040	010103 					MOV	R1,R3				;					3067
000042	062703  000112 				ADD	#112,R3
000046	004767  000000G				JSR	PC,$CMQRM
000052	103403 					BCS	1$
000054	011600 					MOV	(SP),R0				; CCB,*
000056	010460  000004 				MOV	R4,4(R0)			; $MCB$R4,*
000062	011646 				1$:	MOV	(SP),-(SP)			; CCB,*					3068
000064	010146 					MOV	R1,-(SP)
000066	004767  166176 				JSR	PC,U.18
000072	022626 					CMP	(SP)+,(SP)+			;					3064
000074	012700  000001 				MOV	#1,R0				;					3066
000100	000404 					BR	3$
000102	012761  000001  000070 		2$:	MOV	#1,70(R1)			;					3072
000110	005000 					CLR	R0				;					3058
000112	005726 				3$:	TST	(SP)+				;					3034
000114	000207 					RTS	PC

; Routine Size:  39 words,	Routine Base:  $CODE$ + 13274
; Maximum stack depth per invocation:  10 words


;	  3075	
;	  3076	
;	  3077	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 110
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (39)

;	  3078	routine UPDATE_DELAY ( PDB) : novalue =	!
;	  3079	
;	  3080	!++
;	  3081	! FUNCTIONAL DESCRIPTION:
;	  3082	!	This routine calculates the round trip delay for NSp messages.
;	  3083	!
;	  3084	! FORMAL PARAMETERS:
;	  3085	!	PDB = Port Data Base Address
;	  3086	!
;	  3087	! IMPLICIT INPUTS:
;	  3088	!	DB = NSP Data Base Address
;	  3089	!
;	  3090	! IMPLICIT OUTPUTS:
;	  3091	!	None
;	  3092	!
;	  3093	! ROUTINE VALUE:
;	  3094	! COMPLETION CODES:
;	  3095	!	None
;	  3096	!
;	  3097	! SIDE EFFECTS:
;	  3098	!	None
;	  3099	!--
;	  3100	
;	  3101		begin
;	  3102		map PDB: ref block field(PORT_fields);
;	  3103	
;	  3104		local
;	  3105		NDB : ref block field(NODE_fields),
;	  3106		DELAYtime;
;	  3107	
;	  3108		NDB = .PDB[NODElnk];
;	  3109		If .PDB[DELAYstr_tim] neq 0
;	  3110		Then
;	  3111			begin
;	  3112			DELAYtime = .PDB[DELAYstr_tim];
;	  3113	
;	  3114			If .DELAYtime gtr 1
;	  3115			Then
;	  3116				DELAYtime = .DELAYtime - 1;
;	  3117			MAP$( .DB[BIASnodes]);
;	  3118	
;	  3119			If .NDB[NDdelay] eql 0
;	  3120			Then
;	  3121				NDB[NDdelay] = .DELAYtime
;	  3122			Else
;	  3123				begin
;	  3124				DELAYtime = .DELAYtime - .NDB[NDdelay];
;	  3125				NDB[NDdelay] = .NDB[NDdelay] + (.DELAYtime / (.DB[NSPweight] + 1))
;	  3126				end;
;	  3127			MAP$( .DB[BIASports]);
;	  3128			PDB[DELAYstr_tim] = 0;
;	  3129			end
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 111
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (39)

;	  3130		end;


						.SBTTL	UPDATE.DELAY
000000	004167  000000G			; UPDATE.DELAY
					U.44:	JSR	R1,$SAVE5			;					3078
000004	016600  000016 				MOV	16(SP),R0			; PDB,*					3108
000010	016002  000010 				MOV	10(R0),R2			; *,NDB
000014	012705  000062 				MOV	#62,R5				;					3109
000020	060005 					ADD	R0,R5
000022	005715 					TST	(R5)
000024	001437 					BEQ	4$
000026	011501 					MOV	(R5),R1				; *,DELAYTIME				3112
000030	020127  000001 				CMP	R1,#1				; DELAYTIME,*				3114
000034	003401 					BLE	1$
000036	005301 					DEC	R1				; DELAYTIME				3116
000040	016703  000002G			1$:	MOV	.CRDAT+2,R3			;					3117
000044	016367  000030  000000G			MOV	30(R3),KISAR6
000052	012704  000040 				MOV	#40,R4				;					3119
000056	060204 					ADD	R2,R4				; NDB,*
000060	005714 					TST	(R4)
000062	001002 					BNE	2$
000064	010114 					MOV	R1,(R4)				; DELAYTIME,*				3121
000066	000412 					BR	3$				;					3119
000070	161401 				2$:	SUB	(R4),R1				; *,DELAYTIME				3124
000072	005002 					CLR	R2				;					3125
000074	156302  000007 				BISB	7(R3),R2
000100	005202 					INC	R2
000102	005701 					TST	R1
000104	006700 					SXT	R0
000106	071002 					DIV	R2,R0
000110	061400 					ADD	(R4),R0
000112	010014 					MOV	R0,(R4)
000114	016367  000014  000000G		3$:	MOV	14(R3),KISAR6			;					3127
000122	005015 					CLR	(R5)				;					3128
000124	000207 				4$:	RTS	PC				;					3078

; Routine Size:  43 words,	Routine Base:  $CODE$ + 13412
; Maximum stack depth per invocation:  7 words


;	  3131	
;	  3132	
;	  3133	
;	  3134	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 112
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (40)

;	  3135	global routine TRICKLE ( PDB) : CALL$ =	!
;	  3136	
;	  3137	!++
;	  3138	! FUNCTIONAL DESCRIPTION:
;	  3139	!	This routine prioritises the message transmission process.
;	  3140	!
;	  3141	! FORMAL PARAMETERS:
;	  3142	!	PDB = Port Data Base Address
;	  3143	!
;	  3144	! IMPLICIT INPUTS:
;	  3145	!	DB = NSP Data Base Address
;	  3146	!
;	  3147	! IMPLICIT OUTPUTS:
;	  3148	!	None
;	  3149	!
;	  3150	! ROUTINE VALUE:
;	  3151	! COMPLETION CODES:
;	  3152	!	None
;	  3153	!
;	  3154	! SIDE EFFECTS:
;	  3155	!	None
;	  3156	!--
;	  3157	
;	  3158		begin
;	  3159		map PDB: ref block field(PORT_fields);
;	  3160	
;	  3161	
;	  3162		If INTERRUPT_TO_SND( .PDB)
;	  3163		Then
;	  3164			begin
;	  3165			If CALL$L(SND_INTERRUPT, .PDB)
;	  3166			Then
;	  3167				return true
;	  3168			Else
;	  3169				return false
;	  3170			end;
;	  3171		If INTR_REQ_TO_SND( .PDB)
;	  3172		Then
;	  3173			begin
;	  3174			If SND_INTR_REQ( .PDB)
;	  3175			Then
;	  3176				return true
;	  3177			Else
;	  3178				return false
;	  3179			end;
;	  3180		If D_REQ_TO_SND( .PDB)
;	  3181		Then
;	  3182			begin
;	  3183			If SND_REQ_DATA( .PDB)
;	  3184			Then
;	  3185				return true
;	  3186			Else
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 113
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (40)

;	  3187				return false
;	  3188			end;
;	  3189		If .PDB[FLAGoth_ack]
;	  3190		Then
;	  3191			begin
;	  3192			If ACK_OTH_SND( .PDB)
;	  3193			Then
;	  3194				return true
;	  3195			Else
;	  3196				return false
;	  3197			end;
;	  3198		If DATA_TO_SND( .PDB)
;	  3199		Then
;	  3200			begin
;	  3201			If SND_DATA( .PDB)
;	  3202			Then
;	  3203				return true
;	  3204			Else
;	  3205				return false
;	  3206			end;
;	  3207		If .PDB[FLAGdat_ack] and 
;	  3208		((.PDB[PORTstate] eql N$SRUN) or
;	  3209		((.PDB[PORTstate] eql N$SDI) and 
;	  3210		(CMP_NEQ(.PDB[NUMhigh], .PDB[ACKrcv_dat]))))
;	  3211		Then
;	  3212			begin
;	  3213			If ACK_DATA_SND( .PDB)
;	  3214			Then
;	  3215				return true
;	  3216			Else
;	  3217				return false
;	  3218			end;
;	  3219		false
;	  3220		end;


						.SBTTL	TRICKLE
000000	016501  000002 			TRICKLE::
					U.43:	MOV	2(R5),R1			; PDB(.AP.),*				3162
000004	010146 					MOV	R1,-(SP)
000006	004767  170742 				JSR	PC,U.24
000012	005726 					TST	(SP)+
000014	006000 					ROR	R0
000016	103014 					BCC	1$
000020	010146 					MOV	R1,-(SP)			;					3165
000022	012746  000001 				MOV	#1,-(SP)
000026	012746  012604'				MOV	#SND.INTERRUPT,-(SP)
000032	004767  000000G				JSR	PC,$CALL
000036	062706  000006 				ADD	#6,SP
000042	006000 					ROR	R0
000044	103115 					BCC	8$
000046	000511 					BR	7$				;					3164
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 114
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (40)

000050	010146 				1$:	MOV	R1,-(SP)			;					3171
000052	004767  170754 				JSR	PC,U.25
000056	005726 					TST	(SP)+
000060	006000 					ROR	R0
000062	103007 					BCC	2$
000064	010146 					MOV	R1,-(SP)			;					3174
000066	004767  177266 				JSR	PC,U.40
000072	005726 					TST	(SP)+
000074	006000 					ROR	R0
000076	103100 					BCC	8$
000100	000474 					BR	7$				;					3173
000102	010146 				2$:	MOV	R1,-(SP)			;					3180
000104	004767  166676 				JSR	PC,U.21
000110	005726 					TST	(SP)+
000112	006000 					ROR	R0
000114	103007 					BCC	3$
000116	010146 					MOV	R1,-(SP)			;					3183
000120	004767  177410 				JSR	PC,U.42
000124	005726 					TST	(SP)+
000126	006000 					ROR	R0
000130	103063 					BCC	8$
000132	000457 					BR	7$				;					3182
000134	032761  040000  000040 		3$:	BIT	#40000,40(R1)			;					3189
000142	001407 					BEQ	4$
000144	010146 					MOV	R1,-(SP)			;					3192
000146	004767  164330 				JSR	PC,U.11
000152	005726 					TST	(SP)+
000154	006000 					ROR	R0
000156	103050 					BCC	8$
000160	000444 					BR	7$				;					3191
000162	010146 				4$:	MOV	R1,-(SP)			;					3198
000164	004767  165112 				JSR	PC,U.17
000170	005726 					TST	(SP)+
000172	006000 					ROR	R0
000174	103007 					BCC	5$
000176	010146 					MOV	R1,-(SP)			;					3201
000200	004767  175662 				JSR	PC,U.37
000204	005726 					TST	(SP)+
000206	006000 					ROR	R0
000210	103033 					BCC	8$
000212	000427 					BR	7$				;					3200
000214	032761  020000  000040 		5$:	BIT	#20000,40(R1)			;					3207
000222	001426 					BEQ	8$
000224	121127  000013 				CMPB	(R1),#13			;					3208
000230	001412 					BEQ	6$
000232	121127  000014 				CMPB	(R1),#14			;					3209
000236	001020 					BNE	8$
000240	016100  000034 				MOV	34(R1),R0			;					3210
000244	166100  000026 				SUB	26(R1),R0
000250	032700  007777 				BIT	#7777,R0
000254	001411 					BEQ	8$
000256	010146 				6$:	MOV	R1,-(SP)			;					3213
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 115
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (40)

000260	004767  164074 				JSR	PC,U.8
000264	005726 					TST	(SP)+
000266	006000 					ROR	R0
000270	103003 					BCC	8$
000272	012700  000001 			7$:	MOV	#1,R0				;					3212
000276	000207 					RTS	PC
000300	005000 				8$:	CLR	R0				;					3135
000302	000207 					RTS	PC

; Routine Size:  98 words,	Routine Base:  $CODE$ + 13540
; Maximum stack depth per invocation:  4 words


;	  3221	
;	  3222	
;	  3223	
;	  3224	
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 116
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (41)

;	  3225	routine XPT_XMIT ( CCB, XXDB) :  novalue =	!
;	  3226	
;	  3227	!++
;	  3228	! FUNCTIONAL DESCRIPTION:
;	  3229	!	This routine queues CCB's to Transport for transmission.
;	  3230	!
;	  3231	! FORMAL PARAMETERS:
;	  3232	!	XXDB = Reserved/Port Data Base Address
;	  3233	!	CCB = CCB Address
;	  3234	!
;	  3235	! IMPLICIT INPUTS:
;	  3236	!	DB = NSP Data Base Address
;	  3237	!
;	  3238	! IMPLICIT OUTPUTS:
;	  3239	!	None
;	  3240	!
;	  3241	! ROUTINE VALUE:
;	  3242	! COMPLETION CODES:
;	  3243	!	None
;	  3244	!
;	  3245	! SIDE EFFECTS:
;	  3246	!	None
;	  3247	!--
;	  3248	
;	  3249		begin
;	  3250		map CCB: ref block field(C_fields);
;	  3251		map XXDB: ref block field(PORT_fields);
;	  3252	
;	  3253	
;	  3254		local
;	  3255		NDB: ref block field(NODE_fields),
;	  3256		temp;
;	  3257	
;	  3258		NDB = .XXDB[NODElnk];
;	  3259	
;	  3260		If .XXDB[PORTstate] lss 0
;	  3261		Then
;	  3262			CCB[C_PRM4] = -1
;	  3263		Else
;	  3264			CCB[C_PRM4] = .XXDB;
;	  3265		CCB[C_FNC] = FC_XME;
;	  3266		CCB[C_MOD] = FM_DAT;
;	  3267		CCB[C_LIX] = .XXDB[CHANNEL];
;	  3268		CCB[C_PIX] = .DB[NSPxpt_pix];
;	  3269		CCB[C_STS] = 0;
;	  3270		CCB[C_PRM1] = .DB[NSPself];
;	  3271		CCB[C_PRM2] = .XXDB[NODErem];
;	  3272	
;	  3273		If .NDB neq 0
;	  3274		Then
;	  3275			begin
;	  3276			SMAP$( temp);
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 117
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (41)

;	  3277			MAP$( .DB[BIASnodes]);
;	  3278			DADD( NDB[NDm_xmt], 1);
;	  3279			MAP$( .temp);
;	  3280			end;
;	  3281		LLCRS$( .CCB)
;	  3282		end;


						.SBTTL	XPT.XMIT
000000	004167  000000G			; XPT.XMIT
					U.45:	JSR	R1,$SAVE4			;					3225
000004	016601  000014 				MOV	14(SP),R1			; XXDB,*				3258
000010	016102  000010 				MOV	10(R1),R2			; *,NDB
000014	016604  000016 				MOV	16(SP),R4			; CCB,*					3262
000020	105711 					TSTB	(R1)				;					3260
000022	002004 					BGE	1$
000024	012764  177777  000032 			MOV	#-1,32(R4)			;					3262
000032	000402 					BR	2$				;					3260
000034	010164  000032 			1$:	MOV	R1,32(R4)			;					3264
000040	112764  000002  000012 		2$:	MOVB	#2,12(R4)			;					3265
000046	105064  000013 				CLRB	13(R4)				;					3266
000052	116164  000001  000010 			MOVB	1(R1),10(R4)			;					3267
000060	016700  000002G				MOV	.CRDAT+2,R0			;					3268
000064	116064  000050  000011 			MOVB	50(R0),11(R4)
000072	005064  000014 				CLR	14(R4)				;					3269
000076	016064  000002  000024 			MOV	2(R0),24(R4)			;					3270
000104	016164  000002  000026 			MOV	2(R1),26(R4)			;					3271
000112	005702 					TST	R2				; NDB					3273
000114	001417 					BEQ	3$
000116	016701  000000G				MOV	KISAR6,R1			; *,TEMP				3276
000122	016067  000030  000000G			MOV	30(R0),KISAR6			;					3277
000130	010246 					MOV	R2,-(SP)			; NDB,*					3278
000132	062716  000024 				ADD	#24,(SP)
000136	012746  000001 				MOV	#1,-(SP)
000142	004767  164556 				JSR	PC,U.15
000146	010167  000000G				MOV	R1,KISAR6			; TEMP,*				3279
000152	022626 					CMP	(SP)+,(SP)+			;					3275
000154	004767  000000G			3$:	JSR	PC,$SCHED			;					3281
000160	000207 					RTS	PC				;					3225

; Routine Size:  57 words,	Routine Base:  $CODE$ + 14044
; Maximum stack depth per invocation:  8 words


;	  3283	
;	  3284	
;	  3285	end
;	  3286	eludom



;					OTS external references
NS1								25-Jan-1983 10:56:56	TOPS-20 Bliss-16 2A(530)	    Page 118
X01080								30-Dec-1982 20:13:26	NETPKG:<NSP>NS1.BLI.8 (41)

						.GLOBL	$SAVE5, $SAVE4, $CALL, $STOP


;					PSECT SUMMARY
;
;	Psect Name			Words	  Attributes
;	 ......				   16	    RW ,  D  ,  LCL,  REL,  CON
;	 $CODE$				 3147	    RO ,  I  ,  LCL,  REL,  CON
;	 $PLIT$				    3	    RO ,  D  ,  LCL,  REL,  CON




;				LIBRARY STATISTICS
;
;					     -------- Symbols --------    Blocks
;	File				     Total    Loaded   Percent      Read
;
;  NETPKG:<MCB>XPORTX.L16.15		       599        35         5         0
;  NETPKG:<MCB>MCBLIB.L16.15		       372        59        15         0
;  NETPKG:<MCB>NMXLIB.L16.13		       200         1         0         0





;	  3287	
; Size:		3147 code + 19 data words
; Run Time:	00:58.7
; Elapsed Time:	03:53.9
; Memory Used:	66 pages
; Compilation Complete
A				 142+	 143+	 145+	 146+	 148+	 149+	 152+	 153+
ACKDAT_XMT			 349+#	 787	1545	1550	2619	2682
ACKHEAD				 412+#	2356
ACKNUM				 239+#	 240+	2040
ACKOTH_XMT			 351+#	1351	1406	1424	1433	1445	1456	1601	1650	1658	1667	1718
				1835	1842	1856	2297
ACKRCV_DAT			 353+#	1193	1212	1219	1495	2051	2344	2346	2354	2355	2359	2384
				2388	2396	2401	3210
ACKTAIL				 414+#
ACK_BLD				 686	 748*	 826
ACK_DATA_SND			 687	 796*	3213
ACK_OTH_RCV			 688	 835*	2088
ACK_OTH_SND			 690	 870*	3192
ACK_QUEUE			 410+#	 411+	1218	2362	2363	2753	2756	2757
ACK_RCV				 689	 911*	2087
ADDRAN				 318+#	 786	1350	1600	1717	2296	2681
ADDRLOC				 315+#	 316+
ADDRNODES			 205+#
ADDRPORTS			 187+#	2140
ADDRREM				 320+#	 321+
ADDRRESV			 199+#	2229
B				 142+	 143+	 145+	 146+	 148+	 149+	 152+	 153+
BIASNODES			 203+#	1843	2391	2544	2758	2824	2913	3117	3277
BIASPORTS			 185+#	1295	1401	1539	1645	1779	1827	1845	1985	2046	2080	2141
				2341	2393	2456	2546	2588	2760	2826	2915	3127
BIASRESV			 197+#	2228
BLISS16				 514+
BLISS36				 169+	 171+	 173+	 175+	 177+	 179+	 181+	 189+	 191+	 194+	 207+	 221+
				 518+	 523+	 527+	 531+	 536+	 541+	 546+
BUFFCTL				 372+#	2154
BUFFHEAD			 423+#	2551
BUFFRCV_INT			 371+#	1837	1854	1936	2210	2214	2215
BUFFSYNC_DSC			 370+#	2402	2408	2413	2416
BUFFTAIL			 425+#
BUFF_CCB			2527#	2571	2576#	2577	2585	2587	2595#	2596#	2598
BUFF_QUEUE			 421+#	 422+	2479	2527	2599
BYTE_VECTOR			 513+#	 516+	 520+
CALL$E				1428	1449	1663	1998	2156	2188	2190	2192	2207	2242	2244	2409
CALL$L				2100	2174	2201	2867	3165
CALL$				 709	 710	 717	 718	 720	 722	2006#	2105#	2840#	2873#	3001#	3135#
CA_SIZE				 452+#
CCB				 134+	 136+#	 137+	 138+	 748	 774	 780	 789#	 791	 821	 823	 826
				 835	 860	 863	 864#	 865	 897	 899	 902	 911	 936	 939	 940#
				 941	 946	 993#	 999	1026	1050	1052	1063	1097	1218#	1219	1240
				1268	1270	1282#	1285#	1297#	1298#	1299#	1300#	1301#	1302#	1303#	1304#
				1305	1310	1336	1339	1344	1361#	1368	1373	1398	1405	1428	1449
				1460#	1461	1509	1534	1543	1547	1553#	1554	1560	1586	1589	1594
				1605#	1612	1617	1642	1649	1663	1671#	1672	1677	1703	1706	1711
				1721#	1723#	1729	1734	1761	1763	1780#	1781#	1782#	1783#	1784#	1785#
				1786#	1787#	1788	1792	1817	1833	1844	1850	1854	1859#	1860	1944
				1970	1975	1979	1981	1992	1994	1998	1999#	2000	2006	2031	2038
				2039	2078	2085	2086	2087	2088	2089	2090	2091	2092	2097#	2098
				2138	2160	2163	2164	2178	2182	2188	2190	2192	2205	2207	2211
				2214#	2216	2237	2242	2244	2258	2284	2290	2299#	2301	2307	2333
				2424	2450	2498	2523	2545	2554#	2555	2564#	2565	2571	2573	2584
				2586	2602#	2603	2612	2616	2624	2650	2653	2667	2685#	2687#	2708
				2746	2753	2756#	2757	2773	2782#	2835	2902	2909	2912	2920	2922
				2924	2937	2940	2941	2983	2986	2989	2991	3062	3064	3067	3068
				3225	3250	3262#	3264#	3265#	3266#	3267#	3268#	3269#	3270#	3271#	3281
CCBGT$				 977	1030
CCBRT$				1047	1097
CCB_GET				 691	 946*	1847	2160	2211	2609	2770
CCB_HDR_GET			 692	 823	 899	 999*	2178	2205	2237	2405	2753	2773	2909	2937
				2986	3064
CCB_RETRN			 693	1063*	2377	2776
CC_BLD				2190
CC_SIZE				 451+#
CHANNEL				 313+#	3267
CHN_CCB				2653#	2662	2670	2673	2688#	2689#	2740#	2785	2788	2789	2790	2792
				2796	2810	2811
CHR				1274	1278#	1280	1283	1287#	1289	1291#	1293#	1301	1302	1767	1771#
				1773	1775#	1777#	1784	1785
CI_BLD				2188
CI_SIZE				 450+#
CLZ_CCB				1094	1110	1111#	1112#	1113
CMP_EQL				 148+#	1545	2401	2703
CMP_LEQ				 145+#	1199	1212	1219	1456	1550	1667	1856	2345	2346	2347	2359
				2396
CMP_LSS				 142+#	2344	2388
CMP_NEQ				 152+#	1193	1495	2051	3210
CMQIN$				2413	2479	2616
CMQPT$				 134+#	2357
CMQRM$				1110	2064	2163	2182	2472	2599	2804	2912	2940	2989	3067
CONFIDENCE			 367+#	2061	2350	2463
COUNTDAT_RETRANS		 373+#	2063	2351
COUNTLOC_INT			 376+#	1836	1840	1936	2990
COUNTOTH_RETRANS		 374+#	2464
COUNTRES			 375+#	 992	1057	1102	1105
CTL_RECVD			2156
C_ADDR				 780	 789	 983	1044	1276	1286	1302	1344	1361	1594	1605	1711
				1721	1769	1785	1979	1981	2039	2290	2299	2584	2585	2667	2685
				2789	2810
C_BIAS				 982	1042	1277	1300	1770	1783	1975	2038	2078	2586	2587	2790
				2811
C_CHN				 981	1036	1723	2653	2687	2756	2757	2782	2792	2796
C_CNT				 789	1301	1361	1605	1721	1784	1844	2299	2545	2571	2573	2577
				2595	2685	2785	2788	2812	2825
C_FIELDS			 774	 821	 860	 897	 936	 975	1026	1028	1034	1094	1218	1268
				1270	1336	1339	1398	1534	1586	1589	1642	1703	1706	1761	1763
				1817	1823	1970	2031	2035	2138	2284	2333	2337	2367	2450	2454
				2523	2527	2535	2650	2653	2740	2741	2744	2746	2902	2983	3062
				3250
C_FNC				 864	 940	1111	1297	1460	1553	1671	1780	1859	1999	2068	2097
				2368	2483	2554	2564	2596	2602	3265
C_LIX				1299	1782	3267
C_LNK				2363
C_MOD				1298	1781	2475	2689	3266
C_PIX				1304	1787	3268
C_PRM1				 984	1037	1282	1285	1354	1359	2800	3270
C_PRM2				 985	1038	3271
C_PRM3				 986	1039	2364	2670	2673	2802	2803	2818	2821
C_PRM4				 987	1040	3262	3264
C_PRM5				 988	1041
C_STK				 980	1035	1052	1270	1339	1589	1706	1723	1763	1850	2163	2182
				2214	2367	2408	2612	2687	2783	2804	2912	2940	2989	3067
C_STS				1112	1219	1303	1362	1607	1724	1786	2067	2359	2369	2478	2484
				2576	2662	2688	2785	2788	2789	2795	2810	2813	3269
DADD				 694	1120*	1844	2545	2825	3278
DATA_RECVD			 695	1240*	2164	2613
DATA_TO_SND			 696	1164*	3025	3198
DATRES				 382+#	2197	2200	2764	2777	2831
DATRHEAD			 407+#	1498
DATRTAIL			 409+#
DATR_QUEUE			 405+#	 406+	3067
DB				 744#	1295	1304	1401	1403	1406	1409	1419	1420	1423	1428	1440
				1441	1444	1449	1456	1539	1541	1545	1550	1645	1647	1650	1653
				1654	1655	1660	1663	1667	1779	1787	1827	1829	1835	1843	1845
				1856	1977	1982#	1983#	1985	1987	1990	1998	2040#	2042	2046	2055
				2056	2072	2074	2075	2079#	2080	2083	2140	2141	2143	2145	2146
				2148#	2150#	2156	2188	2190	2192	2207	2228	2229	2231	2242	2244
				2341	2344	2345	2346	2347	2354	2355	2388	2391	2393	2394	2409
				2456	2459	2460	2467	2539	2544	2546	2561	2588	2592	2758	2760
				2824	2826	2913	2915	3117	3125	3127	3268	3270	3277
DBRUSE				 493+#
DC_BLD				2207
DECLARE_SEVERITY		 551+
DELAYMSG_NUM			 377+#	2396	2696
DELAYSTR_TIM			 379+#	2397	2692	2695	3109	3112	3128
DELAYTIME			3106	3112#	3114	3116#	3121	3124#	3125
DI_BLD				2192	2409
DI_SIZE				 453+#
DOUBLE_WORD			1120	1147	1149#	1152#	1155#	1156#
DRQ_BLD				 697	1310*	2922	3068
DRQ_RCV				 698	1373*	1994
D_RCV				 699	1509*	2089	2090	2091	2092
D_REQ_TO_SND			 700	1466*	3180
EQLU				 149+
EVB_SIZE			 490+#
EVENT_LOG			1428	1449	1663	1998
FALSE				 138+	 445+#	 790	 829	 905	 979	1032	1048	1109	1198	1200	1226
				1231	1235	1365	1412	1501	1504	1609	1726	1894	1899	1934	1939
				2173	2181	2200	2300	2660	2690	2750	2765	2778	2819	2832	2931
				2947	2950	2996	3073	3169	3178	3187	3196	3205	3217	3219
FCMOD				 236+#	1409
FCOPT				 253+#
FCVALINT			 237+#	1990
FCVAL				 255+#	1419	1420	1423	1440	1441	1444	1653	1654	1655	1660	1983
FC_DATA				 480+#	1356	1358
FC_DONT				 478+#	1412
FC_INTERRUPT			 481+#	1603	1990
FC_NCHG				 479+#	1356
FC_RCE				 864	 940	1460	1553	1671	1859	1999	2097	2554	2564	2602
FC_RCP				1297	1780
FC_SEND				 477+#	1358	1411
FC_XCP				1111	2068	2368	2483	2596
FC_XME				3265
FILL1				 226+#
FILL5				 252+#
FLAGDAT_ACK			 361+#	 790	1552	2618	2690	3207
FLAGINUSE			 364+#	1109	2151
FLAGNEW_MSG			 365+#	2815	2819	2823
FLAGOTH_ACK			 362+#	1365	1425	1434	1446	1458	1609	1659	1669	1726	1841	1858
				2300	3189
FLAGSEG				 368+#	1200	1209	1226	2386	2660	2698	2705	2750
FLAGSND_DC			 363+#	2204
FLG				2658	2668#	2672#	2675#	2677
FLG_BEOM			 465+#	2091
FLG_BOM				 463+#	1283	2090	2672
FLG_CA				 469+#
FLG_CC				 468+#
FLG_CI				 467+#
FLG_DAT_ACK			 474+#	 782	2056	2074	2087
FLG_DC				 471+#
FLG_DI				 470+#
FLG_EOM				 464+#	1280	2089	2675
FLG_INT				 473+#	1713	2055	2085
FLG_NBEOM			 466+#	2092
FLG_NOP				 476+#
FLG_OTH_ACK			 475+#	2075	2088	2292
FLG_REQ				 472+#	1346	1596	2055	2086
FLOWDAT_REM			 356+#	1212	1219	1225	1419	1420	1423	1428	1444	1449	2354	2374
FLOWINT_REM			 357+#	1654	1655	1660	1663	1896	2490
FLOWLOC_TYP			 358+#	2548
FLOWMSG				 455+#	1203	1224	1437	2372	2548
FLOWNONE			 449+#	1203	1205	1430
FLOWRSV				 456+#
FLOWSEG				 454+#	1207	1416	2352
FLOWSW_REM			 359+#	1196	1409
FLOWTYP_REM			 360+#	1203	1414	2352	2372
FM_DAT				3266
FULLWORD			 169+	 171+	 173+	 175+	 177+	 179+	 181+	 189+	 191+	 194+	 207+	 221+
				 223+	 238+	 245+	 247+	 340+	 342+	 344+	 346+	 348+	 350+	 352+	 354+
				 369+	 378+
GET2BYTES			 504+#	2040	2079
GOT_CCB				2535	2609	2612#	2613
HDB_SIZE			 488+#	1044
HI				 116+#	1152	1156
H_DSTADDR			 231+#
H_NSPBUF			 214+#
H_REM_ADDR			 323+#	 784	1348	1598	1715	2294	2679
H_SIZESEG			 387+#
H_SRCADDR			 233+#
I				 513+	 516+	 520+
INFO				 256+#	 257+	 551+
INTERRUPT_TO_SND		 703	1865*	3162
INTHEAD				 392+#	1895
INTRHEAD			 402+#	1935
INTRTAIL			 404+#
INTR_QUEUE			 400+#	 401+	2989
INTR_REQ_TO_SND			 704	1905*	3171
INTTAIL				 394+#
INT_BLD				 705	1677*	2924	2941
INT_QUEUE			 390+#	 391+	2940
INT_RCV				 706	1792*	2085
INT_RECVD			 707	1734*	1851	2216
INVFLW				 492+#	1428	1449	1663
INVMSG				 491+#	1998
IRQ_BLD				 701	1560*	2920	2991
IRQ_RCV				 702	1617*	1992
J				2143	2231	2233
LCCB				 975	 977	 980#	 981#	 982#	 983#	 984#	 985#	 986#	 987#	 988#	 993
				 999	1028	1030	1034	1047
LLCRS$				 865	 941	1113	1305	1461	1554	1672	1788	1860	2000	2069	2098
				2370	2485	2555	2565	2598	2603	3281
LONG_WORD			 113+#	1147
LOW				 115+#	1149	1155
LSFLAGS				 234+#	 235+	1982	1987
LS_RCV				 708	1944*	2086
LS_RSV				 482+#	1987
L_DSTADDR			 230+#
L_NSPBUF			 213+#
L_REM_ADDR			 322+#	 783	1347	1597	1714	2293	2678
L_SIZESEG			 386+#
L_SRCADDR			 232+#
MAP$				1277	1295	1401	1539	1645	1770	1779	1827	1843	1845	1975	1985
				2038	2046	2078	2080	2141	2228	2341	2391	2393	2456	2544	2546
				2586	2588	2758	2760	2824	2826	2913	2915	3117	3127	3277	3279
MORE_FIELDS			 333+#	 437+
MSGFLG				 224+#	 225+	2055	2056	2074	2075	2083	2561	2592
MSGHEAD				 397+#	2805
MSGTAIL				 399+#
MSGTYP				 311+#	2234	2240	2245
MSG_CCB				2741#	2785	2788	2789	2795#	2800	2810	2813#
MSG_CHAIN			 389+#	2740	2796	2805
MSG_NONE			 487+#	2234	2245
MSG_QUEUE			 395+#	 396+	1110	2064	2182	2413	2741	2783	2804
MSG_RCV				 709	2006*
MTBF$S				2587
N				 513+	 516+	 520+
N$EABL				 644+#
N$EABO				 636+#
N$EABR				 637+#
N$ECLS				 642+#
N$ECON				 633+#
N$ELST				 640+#	2576
N$EMTL				 641+#
N$ENUR				 643+#
N$EOPN				 635+#
N$ERES				 632+#
N$ERMO				 639+#
N$ERUN				 645+#
N$ESTE				 634+#
N$ETMI				 638+#
N$ETRN				 646+#
N$FBOM				 655+#	1285	2670	2818
N$FCMP				 656+#	2364	2803
N$FEOM				 654+#	1282	2673	2800	2802	2821
N$FMES				 653+#
N$FSEG				 652+#
N$HI				 628+#
N$LO				 647+#
N$SACC				 630+#
N$SCC				 666+#	2048	2054	2189
N$SCD				 670+#
N$SCI				 667+#	2187
N$SCL				 676+#	1104
N$SCN				 677+#
N$SCR				 663+#
N$SDIC				 674+#
N$SDI				 673+#	1192	1494	2050	2191	2400	3209
N$SDN				 675+#
N$SDRC				 665+#
N$SDR				 664+#	2191
N$SNC				 669+#
N$SNR				 668+#
N$SO				 662+#
N$SREJ				 629+#
N$SRJ				 671+#
N$SRUN				 672+#	1191	1493	1892	1932	2049	2059	2170	3208
N$SSUC				 631+#	1112	1303	1786	2067	2369	2478	2484
NAME				 736#
NDACTIVE			 281+#
NDADDR				 280+#
NDB				1093	1108#	1822	1825#	1844	2338	2342#	2392	2534	2537#	2545	2745
				2748#	2759#	2825	2901	2904#	2914#	3105	3108#	3119	3121#	3124	3125#
				3255	3258#	3273	3278
NDB_RCV				 283+#	1844	2545
NDB_XMT				 284+#	2825
NDC_RCV				 287+#
NDC_REJ				 289+#
NDC_XMT				 288+#
NDDELAY				 291+#	2392	3119	3121	3124	3125
NDM_RCV				 285+#
NDM_XMT				 286+#	3278
NDTIMEOUT			 290+#	2759	2914
NDTIME_ZEROED			 282+#
ND_SIZE				 295+#
NL_BLD				2242
NODELNK				 325+#	1108	1825	2342	2537	2748	2904	3108	3258
NODEREM				 314+#	3271
NODE_FIELDS			 278+#	1093	1822	2338	2534	2745	2901	3105	3255
NR_BLD				2244
NS1				   1#	 541+#	 736
NS2				 546+#
NSP				 527+#	 551+
NSP$_CFN			 563+
NSP$_DSP			 556+
NSP$_ERR			 553+
NSP$_ICE			 557+	2184
NSP$_MSG			 560+
NSP$_NTE			 554+
NSP$_RNG			 555+
NSP$_RTE			 561+
NSP$_RUS			 562+
NSPACT_TIM			 172+#	2072
NSPBOM				 109+#	2561
NSPBUF				 211+#	 212+
NSPDELAY			 174+#	2394
NSPEOM				 110+#	2592
NSPEVENT_BUF			 208+#
NSPMAX				 180+#
NSPNODES			 201+#	 202+
NSPNS0_PIX			 217+#
NSPNS1_PIX			 218+#
NSPNS2_PIX			 219+#	1428	1449	1663	1998	2156	2188	2190	2192	2207	2242	2244
				2409
NSPNXT_PORT			 210+#	2145	2146	2148	2150
NSPPORTS			 183+#	 184+
NSPRESERVED			 195+#	 196+
NSPRETRANS			 178+#
NSPRUNNING			 259+#
NSPSC_PIX			 216+#	1304	1787
NSPSELF				 170+#	3270
NSPTIMER			 168+#
NSPTOTAL			 190+#	2143	2146
NSPT_NODES			 209+#
NSPT_RSV			 192+#	2231
NSPVERSION			 222+#
NSPWEIGHT			 176+#	3125
NSPXPT_PIX			 220+#	3268
NSP_CLASS_EVENT			 489+#
NSP_FIELDS			 166+#	 744
NSP_SIZE			 263+#
NUMBER				 241+#	2344	2345	2346	2347	2354	2355	2459	2460
NUMDAT				 341+#	1199	1212	2664	2700	2703
NUMHIGH				 347+#	1193	1199	1495	2051	2401	3210
NUMOTH				 345+#	1352	1362	1602	1607	1719	1724	2459	2460	2471
NUMSENT				 343+#	2345	2347	2384	2388
N_GSTA				 600+#
N_GSTS				 597+#
N_LNK				 486+#	2240
N_PCLS				 599+#
N_POPN				 598+#
N_RCON				 615+#
N_RDAT				 617+#	1298
N_RDSC				 616+#
N_RES				 485+#
N_RHI				 622+#
N_RINT				 618+#	 622+	1781
N_SCNF				 613+#
N_SCNS				 614+#
N_XABT				 605+#
N_XACC				 602+#
N_XBUF				 610+#	2475
N_XCON				 601+#
N_XDAT				 606+#	2689
N_XDRQ				 609+#
N_XDSC				 604+#
N_XHI				 621+#
N_XINI				 611+#	 621+
N_XINT				 607+#
N_XIRQ				 608+#
N_XREJ				 603+#
ONCE_A_SECOND			 710	2105*
OTHACK_BLD			 711	 902	2258*
OTHACK_QUEUE			 415+#	 416+	2472	2912
OTHDREQUEST			 462+#	1364	2921
OTHHEAD				 417+#
OTHINTERRUPT			 460+#	1725	2488	2923
OTHIREQUEST			 461+#	1608	2919
OTHREADY			 457+#	1498	1895	1935	2458	2470	2934
OTHRES				 383+#	2167	2173	2181	2414	2930	2946	2995	3072
OTHSENT				 458+#	1366	1610	1727
OTHSTATE			 380+#	1366	1498	1610	1727	1895	1896	1935	2458	2470	2906	2934
OTHTAIL				 419+#
OTHTIMEOUT			 459+#	1896	2906
OTHTYP				 381+#	1364	1608	1725	2488	2917
PDB				 748	 775	 783	 784	 785	 786	 787	 790#	 791	 796	 823	 826
				 835	 861	 863	 870	 899	 902	 911	 937	 939	 946	 972	 990
				 992#	 999	1027	1055	1057#	1063	1089	1099	1102#	1104	1105	1108
				1109#	1110	1164	1189	1191	1192	1193	1196	1199	1200	1203	1209
				1212	1218	1219	1225	1226	1240	1267	1299	1310	1337	1347	1348
				1349	1350	1351	1352	1362	1364#	1365#	1366#	1368	1373	1399	1405
				1406	1409#	1414	1419	1420	1423#	1424#	1425#	1428	1433#	1434#	1444#
				1445#	1446#	1449	1456	1458#	1466	1491	1493	1494	1495	1498	1509
				1535	1543	1545	1547	1550	1552#	1560	1587	1597	1598	1599	1600
				1601	1602	1607	1608#	1609#	1610#	1612	1617	1643	1649	1650	1654
				1655	1658#	1659#	1660#	1663	1667	1669#	1677	1704	1714	1715	1716
				1717	1718	1719	1724	1725#	1726#	1727#	1729	1734	1760	1782	1792
				1818	1825	1833	1835	1836	1837	1840#	1841#	1842#	1847	1851	1854#
				1856	1858#	1865	1890	1892	1895	1896	1905	1930	1932	1935	1936
				1944	1971	1992	1994	1998	2006	2032	2048	2049	2050	2051	2054
				2059#	2060	2061#	2062#	2063#	2064	2072#	2085	2086	2087	2088	2089
				2090	2091	2092	2100	2145#	2151	2154	2156	2157	2160	2163	2164
				2167	2170	2173#	2174	2178	2181#	2182	2185	2188	2190	2192	2197
				2200#	2201	2204	2205	2207	2210	2211	2214	2215#	2216	2258	2285
				2293	2294	2295	2296	2297	2300#	2301	2307	2334	2342	2344	2345
				2346	2347	2350#	2351#	2352	2354#	2355#	2356	2359	2362	2363#	2372
				2374#	2377	2383#	2384	2386#	2388	2394#	2396	2397	2399	2400	2401
				2402	2405	2408	2409	2413	2414#	2416#	2424	2451	2458	2459	2460
				2463#	2464#	2465#	2470#	2471#	2472	2479	2488	2490#	2498	2524	2527
				2537	2548	2551	2560	2571	2577	2585	2590#	2595	2597#	2599	2608
				2609	2613	2616	2618#	2619#	2624	2651	2660	2664	2678	2679	2680
				2681	2682	2690#	2692	2695#	2696#	2698	2700#	2703	2705#	2708	2713
				2738	2740	2741	2748	2750	2753	2756	2757#	2764#	2770	2773	2776
				2777#	2783	2785	2796#	2804	2805#	2812	2813	2815	2819#	2823#	2831#
				2835	2840	2867	2873	2898	2904	2906	2909	2912	2917	2920	2922
				2924	2930#	2934	2937	2940	2941	2946#	2955	2980	2986	2989	2990#
				2991	2995#	3001	3025	3027	3034	3059	3064	3067	3068	3072#	3078
				3102	3108	3109	3112	3128#	3135	3159	3162	3165	3171	3174	3180
				3183	3189	3192	3198	3201	3207	3208	3209	3210	3213
PDB_SIZE			 434+#	2137
PID				 317+#	 785	1299	1349	1599	1716	1782	2295	2680
PORT				2137	2140#	2145	2227	2229#	2233
PORTSTATE			 309+#	 310+	1104	1191	1192	1493	1494	1892	1932	2048	2049	2050
				2054	2059	2170	2185	2400	3208	3209	3260
PORT_FIELDS			 437+#	 775	 861	 937	 972	1027	1089	1189	1267	1337	1399	1491
				1535	1587	1643	1704	1760	1818	1890	1930	1971	2032	2137	2145
				2227	2233	2285	2334	2451	2524	2651	2738	2898	2980	3059	3102
				3159	3251
PROC_DATA_ACK			 712	 939	1543	2307*
PROC_OTH_ACK			 713	 863	1405	1649	1833	2424*
PTR				 496+	 500+	 501+	 504+	 507+	 508+	 778	 780#	 782	 783	 784	 785
				 786	 787	 789	1273	1276#	1278	1286#	1287	1342	1344#	1346	1347
				1348	1349	1350	1351	1352	1356	1358	1359	1361	1537	1592	1594#
				1596	1597	1598	1599	1600	1601	1602	1603	1604	1605	1709	1711#
				1713	1714	1715	1716	1717	1718	1719	1721	1766	1769#	1771	1973
				1979#	1981#	1982	1983	2036	2039#	2040	2044#	2079	2288	2290#	2292
				2293	2294	2295	2296	2297	2299	2657	2667#	2677	2678	2679	2680
				2681	2682	2683	2685
PUT2BYTES			 496+#	 787	1351	1352	1601	1602	1718	1719	2297	2682	2683
QUAL				 242+#	2345	2347	2388	2459	2460	2467
QUEUE				 134+	 136+	 137+#
Q_ACK				 483+#	 787	1351	1601	1718	2297	2345	2388	2460	2467	2682
Q_FLG				 243+#	1403	1541	1647	1829	1977	2042	2539
Q_NAK				 484+#	2347	2459
RCVHEAD				 428+#
RCVMSG_QUEUE			 426+#	 427+	2157	2163	2608	2616
RCVTAIL				 430+#
RDB				2233#	2234	2240	2242	2244	2245#
RDB_SIZE			 330+#	2227
REASON				 248+#
REAS_DATA			 714	1547	2498*
REAS_PTR			 420+#	2560	2571	2577	2585	2590	2595	2597
ROT				1146	1149	1152
SC				 523+#
SC_CCB				2035	2064	2067#	2068#	2069	2367#	2368#	2369#	2370
SEGNUM				 246+#	1406	1456	1545	1550	1650	1667	1835	1856	2079
SEGSIZE				 249+#
SEG_BLD				 715	2624*	2835
SEG_CCB				2744	2770	2776	2782	2783#	2788#	2789#	2790#	2802#	2803#	2804	2810#
				2811#	2812#	2818#	2821	2825
SERVICES			 250+#	 251+
SEVERE				 551+
SIZE				2532	2541#	2543#	2545	2571	2573	2584
SIZESEG				 384+#	 385+	2785	2812	2813
SMAP$				3276
SND_DATA			 716	2713*	3027	3201
SND_INTERRUPT			 718	2873*	3165
SND_INTR_REQ			 719	2955*	3174
SND_MSG				 717	2100	2840*
SND_ONE_DATA			 720	2201	3001*
SND_REQ_DATA			 721	3034*	3183
SOME_END			 326+#	 335+
SOME_FIELDS			 307+#	 437+
STK_CCB				1270#	1276	1277	1286	1300	1301	1302	1339#	1354	1359	1362#	1589#
				1607#	1706#	1724#	1763#	1769	1770	1783	1784	1785
STS				2865	2867#	2868
SUBTYPE				 228+#
TEMP				 498+	 499+#	 500+	 501+	 506+	 507+#	 508+#	 509+	1092	1821	1826#	1832#
				1844	2339	2356#	2357	2392#	2394	2454	2472	2475	2478#	2479	2483#
				2484#	2485	2531	2584#	2587	2599	3256	3276	3279
TIMERCON			 339+#	2062
TIMERDAT			 336+#	2383	2394
TIMERINACT			 355+#	2072
TIMEROTH			 338+#	2465
TO_ADDR				2530	2585#	2587
TRICKLE				 722	2174	2867	3135*
TRUE				 138+	 446+#	 787	 827	 903	 994	1058	1206	1209	1214	1221	1228
				1351	1411	1425	1434	1446	1458	1500	1552	1601	1659	1669	1718
				1841	1858	1898	1938	2061	2297	2350	2386	2414	2463	2618	2682
				2698	2705	2764	2777	2823	2831	2836	2868	2926	2930	2942	2946
				2992	2995	3069	3072	3167	3176	3185	3194	3203	3215
TYPE				 227+#
UPDATE_DELAY			 723	2060	2399	3078*
V3_1				 447+#
V3_2				 448+#
VAL				 496+	 499+
VALUE				1120	1149
VER				 258+#
VERSIONREM			 366+#
WK_CCB				1823	1847	1850#	1851	2337	2357	2359	2362#	2363	2364	2367	2377
				2405	2408#	2409
XCCB				1034#	1035#	1036#	1037#	1038#	1039#	1040#	1041#	1042#	1044	1052#
XFRCNT				2533	2569#	2581	2587	2590
XPE				 536+#
XPT				 531+#
XPT_XMIT			 724	 791	1368	1612	1729	2301	2708	3225*
XTEMP				2656	2662#	2664#	2666#	2683	2688	2696	2703
XXDB				3225	3251	3258	3260	3264	3267	3271
$ADDRESX			 183+	 185+	 187+	 195+	 197+	 199+	 201+	 203+	 205+	 325+	 370+	 371+
				 372+	 382+	 383+	 389+	 390+	 392+	 394+	 395+	 397+	 399+	 400+	 402+
				 404+	 405+	 407+	 409+	 410+	 412+	 414+	 415+	 417+	 419+	 420+	 421+
				 423+	 425+	 426+	 428+	 430+
$ALIGN				 169+	 171+	 173+	 175+	 177+	 179+	 181+	 189+	 191+	 194+	 207+	 221+
				 223+	 238+	 245+	 247+	 340+	 342+	 344+	 346+	 348+	 350+	 352+	 354+
				 369+	 378+
$BIT				 243+	 259+	 359+	 361+	 362+	 363+	 364+	 365+	 367+	 368+
$BITS				 226+	 227+	 228+	 236+	 237+	 241+	 242+	 252+	 253+	 258+	 358+	 360+
				 366+
$BYTE				 174+	 176+	 213+	 214+	 216+	 217+	 218+	 219+	 220+	 222+	 224+	 230+
				 231+	 232+	 233+	 234+	 250+	 255+	 256+	 313+	 317+	 318+	 322+	 323+
				 355+	 356+	 357+	 373+	 374+	 380+	 381+	 386+	 387+
$CONTINUE			 186+	 198+	 204+	 215+	 229+	 244+	 254+	 312+	 319+	 324+	 337+	 388+
				 393+	 398+	 403+	 408+	 413+	 418+	 424+	 429+
$DSPCR				 742
$FIELD				 112+	 165+	 277+	 306+
$FIELD_SET_SIZE			 120+	 263+	 295+	 330+	 434+
$INTEGER			 115+	 116+	 280+	 281+	 287+	 288+	 289+	 290+	 291+	 375+
$LONG_WORD			 123+#	 283+	 284+	 285+	 286+
$MCB_GET_DSR			1044
$MCB_PROCESS			 736
$NSP$LENGTH			 120+#	 124+	 127+
$NSP_INFO			 560+	 561+	 562+	 563+
$NSP_SEVERE			 553+	 554+	 555+	 556+	 557+
$OVERLAY			 184+	 196+	 202+	 212+	 225+	 235+	 240+	 251+	 257+	 310+	 316+	 321+
				 335+	 385+	 391+	 396+	 401+	 406+	 411+	 416+	 422+	 427+
$POINTER			 208+
$SHORT_INTEGER			 168+	 170+	 172+	 178+	 180+	 190+	 192+	 209+	 210+	 211+	 239+	 246+
				 248+	 249+	 314+	 315+	 320+	 336+	 338+	 339+	 341+	 343+	 345+	 347+
				 349+	 351+	 353+	 376+	 377+	 379+	 384+
$SUB_BLOCK			 124+	 326+
$TIME				 282+
$TINY_INTEGER			 309+	 311+