NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)    3600  HISTORY

   (1)    4400  DECLARATIONS

   (1)    9600  CHECK NODE VERIFICATION MSG FROM PARTNER

   (1)   22000  REINITIALIZE PHYSICAL LINK CONTROL LAYER

   (1)   30900  SET STATE LINE OFF

   (1)   35400  PROCESS INCOMING NODE INIT MESSAGE

   (1)   55100  PHYSICAL LINK ERROR PROCESSING

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   1

X01                                                                                                                              (1)



                                     0000   100 

                                     0000   200 	.TITLE	NETNODMSG - PROCESS NODE STARTUP MESSAGES 

                                     0000   300 	.IDENT	/X01/

                                     0000   400 

                                     0000   500 ;

                                     0000   600 ; COPYRIGHT (C) 1977, 1978

                                     0000   700 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000   800 ;

                                     0000   900 ; THIS SOFTWARE IS FURNISHED  UNDER A LICENSE FOR USE ONLY ON A SINGLE

                                     0000  1000 ; COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH  THE INCLUSION OF THE

                                     0000  1100 ; ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

                                     0000  1200 ; MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

                                     0000  1300 ; EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

                                     0000  1400 ; TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

                                     0000  1500 ; REMAIN IN DEC.

                                     0000  1600 ;

                                     0000  1700 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE

                                     0000  1800 ; AND SHOULD  NOT BE CONSTRUED  AS A COMMITMENT  BY DIGITAL  EQUIPMENT

                                     0000  1900 ; CORPORATION.

                                     0000  2000 ;

                                     0000  2100 ; DEC ASSUMES  NO  RESPONSIBILITY  FOR  THE USE OR  RELIABILITY OF ITS

                                     0000  2200 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

                                     0000  2300 

                                     0000  2400 ;++

                                     0000  2500 ; FACILITY:	NETWORK ACP

                                     0000  2600 ;

                                     0000  2700 ; ABSTRACT:

                                     0000  2800 ;	THIS MODULE SENDS AND RECEIVES NSP NODE STARTUP MESSAGES.

                                     0000  2900 ;	IT SENDS A NODE INIT MSG AND REQUESTS A NODE VERIFICATION MSG.

                                     0000  3000 ;	IF EVERYTHING IS COPASETIC, THE NSP LINK IS DECLARED UP.

                                     0000  3100 ;

                                     0000  3200 ; ENVIRONMENT:

                                     0000  3300 ;	MODE = KERNEL

                                     0000  3400 ;--

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   2

X01             HISTORY                                                                                                          (1)



                                     0000  3600 	.SBTTL	HISTORY

                                     0000  3700 ; AUTHOR:	SCOTT G. DAVIS, CREATION DATE: 10-JUN-77

                                     0000  3800 ;

                                     0000  3900 ; MODIFIED BY:

                                     0000  4000 ;

                                     0000  4100 ;	, : VERSION

                                     0000  4200 ; 01	- 

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   3

X01             DECLARATIONS                                                                                                     (1)



                                     0000  4400 	.SBTTL	DECLARATIONS

                                     0000  4500 ;

                                     0000  4600 ; INCLUDE FILES:

                                     0000  4700 ;

                                     0000  4800 	$AQBDEF

                                     0000  4900 	$CXBDEF

                                     0000  5000 	$NDBDEF

                                     0000  5100 	$NETMSGDEF

                                     0000  5200 	$RMTDEF

                                     0000  5300 	$XMDEF

                                     0000  5400 

                                     0000  5500 ;

                                     0000  5600 ; MACROS:

                                     0000  5700 ;

                                     0000  5800 

                                     0000  5900 ;

                                     0000  6000 ; EQUATED SYMBOLS:

                                     0000  6100 ;

                                     0000  6200 	$EQULST	NET_C_,,,,<-		; LOCAL CONSTANTS

                                     0000  6300 		<INIT,1>,-		; NODE INIT MSG

                                     0000  6400 		<VERIF,2>,-		; NODE VERIFICATION MSG

                                     0000  6500 		<NODLTH,52>,-		; LTH OF A NODE STARTUP MSG

                                     0000  6600 		<LOWNODE,2>,-		; LOWEST POSSIBLE NODEADDR

                                     0000  6700 		<HIGHNODE,240>,-	; HIGHEST POSSIBLE NODEADDR

                                     0000  6800 >

                                     0000  6900 	_VIELD	NET,0,<-		; REQUESTED FUNCTIONS

                                     0000  7000 		<VERIF,,M>,-		; VERIFICATION REQUIRED

                                     0000  7100 		<LINTREQ,,M>,-		; LINK INTERCEPT REQUESTED

                                     0000  7200 		<RINTREQ,,M>,-		; ROUTING INTERCEPT REQUESTED

                                     0000  7300 >

                                     0000  7400 	_VIELD	NET,0,<-		; SUPPORTED FUNCTIONS

                                     0000  7500 		<RTE,,M>,-		; ROUTE-THROUGH SUPPORTED

                                     0000  7600 		<LINT,,M>,-		; LINK INTERCEPT SUPPORTED

                                     0000  7700 		<RINT,,M>,-		; ROUTING INTERCEPT SUPPORTED

                                     0000  7800 		<UNBLK,,M>,-		; MESSAGE UNBLOCKING SUPPORTED

                                     0000  7900 >

                                     0000  8000 

                                     0000  8100 ;

                                     0000  8200 ; OWN STORAGE:

                                     0000  8300 ;

                                 00000000  8400 	.PSECT	NET_PURE,NOWRT,NOEXE

                                     0000  8500 

                                     0000  8600 DLE_IMAGE:	DESCRIPTOR <SYS$SYSTEM:DLE>

                           45 4C 44  0016  8700 DLE_NAME:	.ASCII	/DLE/		; DOWN-LINE LOADER

                           00000003  0019  8800 DLE_LTH=.-DLE_NAME

                                     0019  8900 

                                     0019  9000 RESTART_TIMER:				; TO DELAY LINE RESTART ATTEMPTS

                  FFFFFFFF F70F2E80  0019  9100 	.LONG	-10000000*15,-1		; 15 SECONDS

                                     0021  9200 NOP_TIMER:				; TIME BETWEEN "NOP" TRANSMISSIONS

                  FFFFFFFF 94B62E00  0021  9300 	.LONG	-10000000*60*3,-1	; 3 MINUTES

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   4

X01             DECLARATIONS                                                                                                     (1)



                                 00000000  9500 	.PSECT	NET_CONTROL,NOWRT

                                     0000  9600 	.SBTTL	CHECK NODE VERIFICATION MSG FROM PARTNER

                                     0000  9700 ;++

                                     0000  9800 ; FUNCTIONAL DESCRIPTION:

                                     0000  9900 ;

                                     0000 10000 ; NET$CHKVFY - PROCESS NODE VERIFICATION MESSAGE FROM REMOTE NSP.

                                     0000 10100 ;		IF PASSWORD IS OK, DECLARE NODE UP.

                                     0000 10200 ;		IF PASSWORD IS NG, DEALLOCATE THE NDB, AND SET THE STATE TO

                                     0000 10300 ;		"START".

                                     0000 10400 ;

                                     0000 10500 ; NET$NOP_AST - SERVICE NSP NOP MSG TIMEOUT

                                     0000 10600 ;

                                     0000 10700 ; NET$INI_AST - SERVICE NODE INIT TIMEOUT

                                     0000 10800 ;

                                     0000 10900 ; CALLING SEQUENCE:

                                     0000 11000 ;

                                     0000 11100 ;	ENTERED VIA CASE FROM NET$TRN

                                     0000 11200 ;

                                     0000 11300 ; INPUT PARAMETERS:

                                     0000 11400 ;

                                     0000 11500 ;	R10 - PTR TO CURRENT MSG BYTE

                                     0000 11600 ;	R11 - PTR BEYOND END OF MSG

                                     0000 11700 ;

                                     0000 11800 ;

                                     0000 11900 ;--

                                     0000 12000 

                                     0000 12100 NET$CHKVFY::

                          FFFD'  30  0000 12200 	BSBW	NET$FND_NDB_CHN		; FIND THE NDB ON THIS CHANNEL

                          3C     13  0003 12300 	BEQL	NDB_GONE		; IF EQL IT WENT AWAY!!

                                     0005 12400 

                                     0005 12500 	ASSUME	NDB$V_LOOPBACK EQ 0

                                     0005 12600 

            24         17 A9     E8  0005 12700 	BLBS	NDB$B_STATUS(R9),NODINI_OK ; IF BS, LINE IS IN LOOPBACK

                                     0009 12800 ;

                                     0009 12900 ; THIS IS A REAL INIT - CHECK IT OUT

                                     0009 13000 ;

            58            59     D0  0009 13100 	MOVL	R9,R8			; MATCH AND STUFF NDB'S SAME

                          5A     DD  000C 13200 	PUSHL	R10			; SAVE MSG ADDRESS

                          0333   30  000E 13300 	BSBW	NET$FIND_RMT		; FIND THE RMT RECORD

                          5A   8ED0  0011 13400 	POPL	R10			; RESTORE MESSAGE ADDRESS

            5B            50     E9  0014 13500 	BLBC	R0,NODINI_NG		; IF BC NOT FOUND

            50         11 A7     7E  0017 13600 	MOVAQ	RMT$Q_RCVPW(R7),R0	; POINT TO THE RECEIVE PASSWORD

                          60     95  001B 13700 	TSTB	(R0)			; DO I HAVE ONE?

                          0E     13  001D 13800 	BEQL	NODINI_OK		; IF EQL NO - ANYTHING HE HAS MATCHES

                                     001F 13900 	CMPAL	B^NET$C_PASSWLTH(R10),R11 ; ENOUGH BYTES FOR PASSWORD?

                          4B     12  0025 14000 	BNEQ	NODINI_NG		; IF NEQ NO

            60            00'    29  0027 14100 	CMPC3	S^#NET$C_PASSWLTH,(R0),(R10) ; MATCH?

                          6A         002A       

                          45     12  002B 14200 	BNEQ	NODINI_NG		; IF NEQ NO

                                     002D 14300 ;

                                     002D 14400 ; NODE INIT WAS GOOD

                                     002D 14500 ;

                                     002D 14600 NODINI_OK:

            56            05     D0  002D 14700 	MOVL	#NDB$C_MSG_OKINI,R6	; INIT WAS OK

                          FFCD'  30  0030 14800 	BSBW	NET$OPCOM		; TELL THE WORLD

                                     0033 14900 	UPDATE	OKINITS			; ANOTHER GOOD INITIALIZATION

         16 A9            00'    90  003B 15000 	MOVB	S^#NET$C_ST_ON,NDB$B_STATE(R9) ; THE NODE IS UP

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   5

X01             CHECK NODE VERIFICATION MSG FROM PARTNER                                                                         (1)



                          03     10  003F 15100 	BSBB	START_NOP		; TURN ON NOP'S FOR THIS LINE

                          FFBC'  31  0041 15200 NDB_GONE:	BRW	NET$AST_EXIT	; TERMINATE PROCESSING

                                     0044 15300 

                                     0044 15400 START_NOP:

                                     0044 15500 	$SETIMR_S	DAYTIM= W^NOP_TIMER,- ; SET TO SEND PERIODIC NOP'S

                                     0044 15600 			ASTADR= W^NET$SET_NOP_AST,-

                                     0044 15700 			REQIDT= R9

                                 05  0057 15800 	RSB				; DONE

                                     0058 15900 

                                     0058 16000 

                               0000  0058 16100 NET$NOP_AST::	.WORD	0		; ENTRY POINT

            59         04 AC     D0  005A 16200 	MOVL	4(AP),R9		; GET THE NDB ADDRESS

                          45     10  005E 16300 	BSBB	CHECK_NDB		; SEE IF THE LINE IS STILL AROUND

                          E2     10  0060 16400 	BSBB	START_NOP		; START ANOTHER TIMEOUT

            51            01     D0  0062 16500 	MOVL	#1,R1			; NO. OF BYTES IN NOP MSG

                          FF98'  30  0065 16600 	BSBW	NET$ALLOCBUF		; ALLOCATE A CXB

                                     0068 16700 	

                          83     D4  0068 16800 	CLRL	(R3)+			; NO SSB

                          83     B4  006A 16900 	CLRW	(R3)+			; MAKE COMMON WITH DATA MSGS

            83            08     90  006C 17000 	MOVB	#<NET$C_MSGFLG@NET$V_MSGID>!- ; MSGID BYTE

                                     006F 17100 		 <NET$C_CTRLM@NET$V_MSGTYP>!- ; MSGTYP

                                     006F 17200 		 <NET$C_NOP@NET$V_SUBTYP>,(R3)+ ; SUBTYP

                          02C7   31  006F 17300 	BRW	COMMON			; FINISH IN COMMON CODE

                                     0072 17400 

                                     0072 17500 NODINI_NG:

            56            04     D0  0072 17600 	MOVL	#NDB$C_MSG_NGINI,R6	; INIT WAS NG

                          FF88'  30  0075 17700 	BSBW	NET$OPCOM		; TELL THE WORLD

                                     0078 17800 	UPDATE	NGINITS			; ANOTHER BAD INITIALIZATION

                                     0080 17900 

                                     0080 18000 NET$RESTART::

                          0173   30  0080 18100 	BSBW	RESET_CHANNEL		; CLEAN UP THE CHANNEL

                          59     D5  0083 18200 	TSTL	R9			; DID THE CHANNEL GO AWAY?

                          1B     13  0085 18300 	BEQL	10$			; IF EQL YES

                                     0087 18400 	$SETIMR_S	DAYTIM= W^RESTART_TIMER,- ; DELAY RESTART ATTEMPT

                                     0087 18500 			ASTADR= W^NET$SET_INI_AST,-

                                     0087 18600 			REQIDT= R9	; USE THE NDB

         16 A9            00'    90  009A 18700 	MOVB	S^#NET$C_ST_INIT,NDB$B_STATE(R9) ; NODE IS DOWN

         17 A9            04     88  009E 18800 	BISB	#NDB$M_SHUT,NDB$B_STATUS(R9) ; MARK LINE IN STARTUP

                          029C   31  00A2 18900 10$:	BRW	NODMSG_EXIT		; CLEAN UP

                                     00A5 19000 

                                     00A5 19100 

                                     00A5 19200 ;++

                                     00A5 19300 ;

                                     00A5 19400 ; CHECK_NDB - SEE IF LINE IS STILL IN USE: THERE MAY BE A RACE

                                     00A5 19500 ;		WHEN THE LINE IS TURNED OFF

                                     00A5 19600 ;

                                     00A5 19700 ; INPUTS:	R9 - NDB ADDRESS

                                     00A5 19800 ;

                                     00A5 19900 ; OUTPUTS:	NET$GW_CHANNEL CONTAINS CHANNEL NO.

                                     00A5 20000 ;

                                     00A5 20100 ;--

                                     00A5 20200 

                                     00A5 20300 CHECK_NDB:

            50       0000'CF     D0  00A5 20400 	MOVL	W^NET$GL_NODLST,R0	; POINT TO NDB LIST

                                     00AA 20500 10$:

            50            60     D0  00AA 20600 	MOVL	(R0),R0			; GET ADDRESS OF NEXT NDB

                          0C     13  00AD 20700 	BEQL	20$			; IF EQL AT END OF LIST

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   6

X01             CHECK NODE VERIFICATION MSG FROM PARTNER                                                                         (1)



            59            50     D1  00AF 20800 	CMPL	R0,R9			; MATCH?

                          F6     12  00B2 20900 	BNEQ	10$			; IF NEQ NO, LOOP

       0000'CF         14 A9     B0  00B4 21000 	MOVW	NDB$W_CHANNEL(R9),W^NET$GW_CHANNEL ; STUFF THE CHANNEL NO.

                                 05  00BA 21100 	RSB				; DONE

                                 04  00BB 21200 20$:	RET				; NDB DISAPPEARED - GO AWAY

                                     00BC 21300 

                                     00BC 21400 

                               0000  00BC 21500 NET$INI_AST::	.WORD	0		; ENTRY POINT

            59         04 AC     D0  00BE 21600 	MOVL	4(AP),R9		; GET THE NDB ADDRESS

                          E1     10  00C2 21700 	BSBB	CHECK_NDB		; MAKE SURE THERE IS NO RACE ON LINE

                                     00C4 21800 					; FALL THROUGH TO RESTART LINE

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   7

X01             REINITIALIZE PHYSICAL LINK CONTROL LAYER                                                                         (1)



                                     00C4 22000 	.SBTTL	REINITIALIZE PHYSICAL LINK CONTROL LAYER

                                     00C4 22100 ;++

                                     00C4 22200 ; FUNCTIONAL DESCRIPTION:

                                     00C4 22300 ;

                                     00C4 22400 ; NET$START - CAUSE PHYSICAL LINK TO "START".

                                     00C4 22500 ;		BREAK ANY LOGICAL LINKS FOR THIS PHYSICAL LINK.

                                     00C4 22600 ;

                                     00C4 22700 ; CALLING SEQUENCE:

                                     00C4 22800 ;

                                     00C4 22900 ;	ENTERED VIA CASE FROM NET$TRN

                                     00C4 23000 ;

                                     00C4 23100 ; INPUT PARAMETERS:

                                     00C4 23200 ;

                                     00C4 23300 ;	NET$GW_CHANNEL - CHANNEL NO. OF PHYSICAL LINK

                                     00C4 23400 ;

                                     00C4 23500 ;--

                                     00C4 23600 

                                     00C4 23700 NET$START::

                          012F   30  00C4 23800 	BSBW	RESET_CHANNEL		; INIT FOR CHANNEL OPERATION

                          DC     10  00C7 23900 	BSBB	CHECK_NDB		; SEE IF THE CHANNEL WENT AWAY

                          030C   30  00C9 24000 	BSBW	GET_STATUS		; GET THE CHANNEL STATUS

                                     00CC 24100 

                                     00CC 24200 	ASSUME	NDB$W_CHAR-NDB$W_BUFSIZE EQ 2

                                     00CC 24300 

       0006'CF       00A8 C9     D0  00CC 24400 	MOVL	NDB$W_BUFSIZE(R9),W^NET$AB_UTLBUF+6 ; SET THE BUFSIZE AND CHARACS

                                     00D3 24500 	$CANCEL_S	CHAN=R4		; CLEAN UP THE CHANNEL

            58         0B A9     9A  00DD 24600 	MOVZBL	NDB$B_NUMBUF(R9),R8	; GET NO. OF PREALLOCATED BUFFERS

                                     00E1 24700 	$QIOW_S	CHAN=R4,FUNC=#IO$_SETMODE!IO$M_SHUTDOWN,- ; TURN IT OFF

                                     00E1 24800 		P1=W^NET$AB_UTLBUF+4	;

                                     0100 24900 	$QIOW_S	CHAN=R4,FUNC=#IO$_SETMODE!IO$M_STARTUP,- ; TURN IT ON

                                     0100 25000 		IOSB=W^NET$AB_UTLBUF+12,- ; IOSB

                                     0100 25100 		P1=W^NET$AB_UTLBUF+4,P3=R8 ; SET NO. AND SIZE OF RCV BUFFERS

            46            50     E9  0123 25200 	BLBC	R0,30$			; IF LBC SOMETHING BAD HAPPENED - KILL IT

            50       000C'CF     3C  0126 25300 	MOVZWL	W^NET$AB_UTLBUF+12,R0	; GET THE IOSB CODE

            3E            50     E9  012B 25400 	BLBC	R0,30$			; LIKEWISE, I'M SURE

                                     012E 25500 	$GETTIM_S	NDB$Q_ZEROTIME(R9) ; RESET THE CURRENT TICK COUNT (ZERO CTRS)

                                     0139 25600 

                                     0139 25700 	ASSUME	NDB$W_XMTBLKS-NDB$W_RCVBLKS EQ 2

                                     0139 25800 

                     00B4 C9     D4  0139 25900 	CLRL	NDB$W_RCVBLKS(R9)	; RESET BLOCK COUNTS

                                     013D 26000 	$QIO_S	CHAN=R4,FUNC=#IO$_SETMODE!IO$M_ATTNAST,- ; ENABLE AST

                                     013D 26100 		P1=NDB$Q_AST(R9)

            04            50     E8  015B 26200 	BLBS	R0,20$			; IF LBS OK

                                     015E 26300 	BUG_CHECK	NETSYSSRV,FATAL

                                     0162 26400 20$:

                          3B     10  0162 26500 	BSBB	ALLOC_NODMSG		; ALLOCATE A NODE STARTUP MSG

            0A            50     E8  0164 26600 	BLBS	R0,40$			; IF BS OK

            50       0000'8F     3C  0167 26700 	MOVZWL	#SS$_INSFMEM,R0		; USE THIS ERROR CODE

                                     016C 26800 30$:

                          FE91'  30  016C 26900 	BSBW	NET$OPCOM_ERROR		; PRINT THE ERROR

                          3D     11  016F 27000 	BRB	NET$NODE_OFF		; SHUT DOWN THE LINE

                                     0171 27100 40$:

            57       0000'CF     D0  0171 27200 	MOVL	W^NET$GL_NODLST,R7	; GET ADDRESS OF LOCAL NODE

            51         18 A7     9E  0176 27300 	MOVAB	NDB$W_NODEADDR(R7),R1	; POINT TO MY NDB ITEMS FOR MSG

            83            01     90  017A 27400 	MOVB	#NET_C_INIT,(R3)+	; THIS IS A NODE INIT MSG

            83            81     B0  017D 27500 	MOVW	(R1)+,(R3)+		; NODEADDR

                          FE7D'  30  0180 27600 	BSBW	NET$MOVE_STRING		; MOVE IN MY NODE NAME

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   8

X01             REINITIALIZE PHYSICAL LINK CONTROL LAYER                                                                         (1)



            83         21 A7     90  0183 27700 	MOVB	NDB$B_FUNC(R7),(R3)+	; STORE MY FUNCTIONS

            83            07     90  0187 27800 	MOVB	#<NET_M_VERIF!NET_M_LINTREQ!NET_M_RINTREQ>,(R3)+ ; REQUESTS

            83         22 A9     B0  018A 27900 	MOVW	NDB$W_BLKSIZE(R9),(R3)+	; BLKSIZE ON THIS LINE

            83         24 A9     B0  018E 28000 	MOVW	NDB$W_NSPSIZE(R9),(R3)+	; NSPSIZE ON THIS LINE

                                     0192 28100 

                                     0192 28200 	ASSUME	NDB$B_RTEVER EQ NDB$W_MAXLNK+2

                                     0192 28300 	ASSUME	NDB$B_COMMVER EQ NDB$B_RTEVER+3

                                     0192 28400 	ASSUME	NDB$T_SYSVER EQ NDB$B_COMMVER+3

                                     0192 28500 

            51         26 A7     9E  0192 28600 	MOVAB	NDB$W_MAXLNK(R7),R1	; POINT TO MAXLNK

            83            81     7D  0196 28700 	MOVQ	(R1)+,(R3)+		; MAXLNK+RTEVER+COMMVER

                          FE64'  30  0199 28800 	BSBW	NET$MOVE_STRING		; SYSVER

                          019A   31  019C 28900 	BRW	COMMON			; FINISH IN COMMON CODE

                                     019F 29000 

                                     019F 29100 

                                     019F 29200 

                                     019F 29300 ; ALLOC_NODMSG - ALLOCATE A NODE STARTUP MESSAGE

                                     019F 29400 ;

                                     019F 29500 ; OUTPUTS:	R3 - POINTER TO NEXT BYTE IN MSG

                                     019F 29600 ;		R6 - BASE ADDRESS OF MSG BUFFER

                                     019F 29700 ;

                                     019F 29800 

                                     019F 29900 ALLOC_NODMSG:

            51            34     9A  019F 30000 	MOVZBL	#NET_C_NODLTH,R1	; SET MSG LTH

                          FE5B'  30  01A2 30100 	BSBW	NET$ALLOCBUF		; ALLOCATE A BFR

                          83     D4  01A5 30200 	CLRL	(R3)+			; NO SSB

                          83     B4  01A7 30300 	CLRW	(R3)+			; MAKE COMMON WITH DATA MSGS

            83         58 8F     90  01A9 30400 	MOVB	#<NET$C_MSGFLG@NET$V_MSGID>!- ; MSGID BYTE

                                     01AD 30500 		 <NET$C_CTRLM@NET$V_MSGTYP>!- ; MSGTYP

                                     01AD 30600 		 <NET$C_NODMSG@NET$V_SUBTYP>,(R3)+ ; SUBTYP

                                 05  01AD 30700 	RSB				; DONE

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page   9

X01             SET STATE LINE OFF                                                                                               (1)



                                     01AE 30900 	.SBTTL	SET STATE LINE OFF

                                     01AE 31000 

                                     01AE 31100 ;++

                                     01AE 31200 ;

                                     01AE 31300 ; NET$NODE_OFF - TAKE A LINE DOWN

                                     01AE 31400 ;

                                     01AE 31500 ; INPUTS:	NET$GW_CHANNEL CONTAINS CHANNEL NUMBER

                                     01AE 31600 ;--

                                     01AE 31700 

                                     01AE 31800 NET$NODE_OFF::

                          46     10  01AE 31900 	BSBB	RESET_CHANNEL		; INIT CHANNEL OPERATION

                                     01B0 32000 	$DASSGN_S	W^NET$GW_CHANNEL ; DEASSIGN THE CHANNEL

            50       0000'CF     D0  01BC 32100 	MOVL	W^NET$GL_NODLST,R0	; GET ADDRESS OF NODE LIST

       0000'CF            59     D1  01C1 32200 	CMPL	R9,W^NET$GL_FRONTEND	; IS THIS MY INTERCEPT GOING AWAY?

                          04     12  01C6 32300 	BNEQ	10$			; IF NEQ NO

                     0000'CF     D4  01C8 32400 	CLRL	W^NET$GL_FRONTEND	; RESET

            51            50     D0  01CC 32500 10$:	MOVL	R0,R1			; INIT POINTER TO PREVIOUS NDB

            50            60     D0  01CF 32600 	MOVL	NDB$L_NEXT(R0),R0	; GET ADDRESS OF NEXT NDB

                          21     13  01D2 32700 	BEQL	20$			; IF EQL THIS NODE NEVER EXISTED

         14 A0       0000'CF     B1  01D4 32800 	CMPW	W^NET$GW_CHANNEL,NDB$W_CHANNEL(R0) ; IS THIS THE ONE?

                          F0     12  01DA 32900 	BNEQ	10$			; IF NEQ NO - LOOP

            61            60     D0  01DC 33000 	MOVL	NDB$L_NEXT(R0),NDB$L_NEXT(R1) ; RELINK

                          FE1E'  30  01DF 33100 	BSBW	NET$DEANONPAGED		; DEALLOCATE THE NDB

            50       0000'CF     D0  01E2 33200 	MOVL	W^NET$GL_Q_HEAD,R0	; GET AQB ADDRESS

                       0B A0     97  01E7 33300 	DECB	AQB$B_MNTCNT(R0)	; ANOTHER "VOLUME" GONE

                                     01EA 33400 	$WAKE_S				; FORCE A DISMOUNT CHECK

                                     01F5 33500 20$:

                                 04  01F5 33600 	RET				; DONE

                                     01F6 33700 

                                     01F6 33800 

                                     01F6 33900 ;++

                                     01F6 34000 ;

                                     01F6 34100 ; RESET_CHANNEL - INIT FOR CHANNEL OPERATION

                                     01F6 34200 ;

                                     01F6 34300 ; INPUTS:	NET$GW_CHANNEL - CURRENT CHANNEL NO.

                                     01F6 34400 ; OUTPUTS:	R9 - NDB ADDRESS

                                     01F6 34500 ;

                                     01F6 34600 ;--

                                     01F6 34700 

                                     01F6 34800 RESET_CHANNEL:

                          FE07'  30  01F6 34900 	BSBW	NET$BREAK		; BREAK ALL LOGICAL LINKS

                          FE04'  30  01F9 35000 	BSBW	NET$FND_NDB_CHN		; FIND THE CHANNEL

                                     01FC 35100 	$CANTIM_S	REQIDT= R9	; KILL THE NOP TIMER

                                 05  0207 35200 	RSB				; RETURN

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page  10

X01             PROCESS INCOMING NODE INIT MESSAGE                                                                               (1)



                                     0208 35400 	.SBTTL	PROCESS INCOMING NODE INIT MESSAGE

                                     0208 35500 ;++

                                     0208 35600 ; FUNCTIONAL DESCRIPTION:

                                     0208 35700 ;

                                     0208 35800 ; NET$NSPINI - TAKE INCOMING NODE INIT MSG AND SET UP NDB.

                                     0208 35900 ;		SEND NODE VERIFICATION MESSAGE IF PARTNER REQUIRES.

                                     0208 36000 ;		RESTART LINE AND NSP INIT IF ERROR IN MESSAGE.

                                     0208 36100 ;

                                     0208 36200 ; CALLING SEQUENCE:

                                     0208 36300 ;

                                     0208 36400 ;	ENTERED VIA CASE FROM NET$TRN

                                     0208 36500 ;

                                     0208 36600 ; INPUT PARAMETERS:

                                     0208 36700 ;

                                     0208 36800 ;	R10 - PTR TO NODEADDR FIELD

                                     0208 36900 ;	R11 - PTR BEYOND END OF MSG

                                     0208 37000 ;

                                     0208 37100 ; IMPLICIT INPUTS:

                                     0208 37200 ;

                                     0208 37300 ;	TENTATIVE NDB, IF SET UP DUE TO NCP START LINE OPERATION

                                     0208 37400 ;

                                     0208 37500 ;--

                                     0208 37600 

                                     0208 37700 NET$NSPINI::

                          FDF5'  30  0208 37800 	BSBW	NET$FND_NDB_CHN		; FIND THE NDB BY THE CHANNEL

                          03     12  020B 37900 	BNEQ	10$			; IF NEQ HAVE IT

                          FDF0'  31  020D 38000 	BRW	NET$AST_EXIT		; THE LINE WENT AWAY - IGNORE THE MSG

                                     0210 38100 10$:

                                     0210 38200 ;

                                     0210 38300 ; GET ITEMS FROM MESSAGE

                                     0210 38400 ;

                                     0210 38500 	BMSGOV	20$			; NEED AT LEAST 1 BYTE OF NODEADDR

            7E            8A     98  0215 38600 	CVTBL	(R10)+,-(SP)		; GET THE LOW BYTE

                          06     19  0218 38700 	BLSS	20$			; IF LSS NODEADDR IS EXTENSIBLE

            6E         80 8F     88  021A 38800 	BISB	#^O200,(SP)		; SET THE EXTENSION BIT

                          0B     11  021E 38900 	BRB	30$			; PROCEED

                                     0220 39000 

                                     0220 39100 20$:	BMSGOV	60$			; NEED ANOTHER BYTE FOR NODEADDR

         01 AE            8A     90  0225 39200 	MOVB	(R10)+,1(SP)		; GET IT

                          55     19  0229 39300 	BLSS	60$			; IF LSS, EXTENSIBLE

                                     022B 39400 

                                     022B 39500 30$:

         18 A9            6E     B0  022B 39600 	MOVW	(SP),NDB$W_NODEADDR(R9)	; KEEP THE NODE ADDRESS (NUMBER)

                       02 AE     B4  022F 39700 	CLRW	2(SP)			; SET TO DO RANGE CHECK ON NODEADDR

            6E            02     84  0232 39800 	MULB2	#2,(SP)			; SHIFT OFF EXTENSION BIT

            6E            02     A6  0235 39900 	DIVW2	#2,(SP)			; GET THE UNEXTENDED NODE NUMBER

       00F0 8F            6E     B1  0238 40000 	CMPW	(SP),#NET_C_HIGHNODE	; CHECK HIGH END OF RANGE

                          41     1A  023D 40100 	BGTRU	60$			; IF GTRU NG

            02            8E     D1  023F 40200 	CMPL	(SP)+,#NET_C_LOWNODE	; CHECK LOW END OF RANGE

                          3C     1F  0242 40300 	BLSSU	60$			; IF LSSU NG

                                     0244 40400 

                                     0244 40500 	BMSGOV	60$			; NEED A BYTE OF NODENAME LTH

                                     0249 40600 

                                     0249 40700 	ASSUME	NDB$V_LOOPBACK EQ 0

                                     0249 40800 

            15         17 A9     E9  0249 40900 	BLBC	NDB$B_STATUS(R9),40$	; IF BC NOT LOOPBACK

                                     024D 41000 ;

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page  11

X01             PROCESS INCOMING NODE INIT MESSAGE                                                                               (1)



                                     024D 41100 ; LINE IS IN LOOPBACK - SEE IF NODE INIT IS FROM ME

                                     024D 41200 ;

            56            5A     D0  024D 41300 	MOVL	R10,R6			; SET UP POINTER TO MSG NAME

            57       0000'CF     9E  0250 41400 	MOVAB	W^NET$GT_MYNAME,R7	; POINTER TO MY NAME

                          FDA8'  30  0255 41500 	BSBW	NET$COMP_STRING		; CHECK FOR MATCH

                          26     12  0258 41600 	BNEQ	60$			; IF NO MATCH, NO GOOD

            56            8A     9A  025A 41700 	MOVZBL	(R10)+,R6		; SKIP NAME

            5A            56     C0  025D 41800 	ADDL	R6,R10			; THIS IS IT

                          24     11  0260 41900 	BRB	80$			; GO TO COMMON CODE

                                     0262 42000 40$:

            53         1A A9     9E  0262 42100 	MOVAB	NDB$T_NAME(R9),R3	; GET ADDRESS OF NAME

            58            53     D0  0266 42200 	MOVL	R3,R8			; KEEP THIS ADDRESS

            56            00'    9A  0269 42300 	MOVZBL	S^#NET$C_MAXNAME,R6	; MAX LTH OF A NODE NAME

                          FD91'  30  026C 42400 	BSBW	NET$MOVE_IFIELD		; MOVE IN THE NODE NAME

            0E            50     E9  026F 42500 	BLBC	R0,60$			; IF ERROR, CAN THE MESSAGE

            56            88     9A  0272 42600 	MOVZBL	(R8)+,R6		; GET THE NAME LTH

                          09     13  0275 42700 	BEQL	60$			; IF EQL NG - CAN THE MESSAGE

                                     0277 42800 ;

                                     0277 42900 ; MAKE SURE NODE NAME IS VALID

                                     0277 43000 ;

                                     0277 43100 50$:

            54            88     9A  0277 43200 	MOVZBL	(R8)+,R4		; GET THE NEXT BYTE

                          FD83'  30  027A 43300 	BSBW	NET$CHECK_ASCII		; CHECK FOR VALID CHARACTER

            03            50     E8  027D 43400 	BLBS	R0,70$			; IF LBS CHAR IS VALID FOR NODENAME

                          FDEF   31  0280 43500 60$:	BRW	NODINI_NG		; BAD NODE INIT MESSAGE

                                     0283 43600 70$:

            F1            56     F5  0283 43700 	SOBGTR	R6,50$			; LOOP

                                     0286 43800 ;

                                     0286 43900 ; NOW SCAN THE LIST OF NDB'S TO SEE IF DUPLICATE INFO EXISTS

                                     0286 44000 ;

                                     0286 44100 80$:

            57       0000'CF     9E  0286 44200 	MOVAB	W^NET$GL_NODLST-NDB$L_NEXT,R7 ; INIT POINTER

            57            67     D0  028B 44300 90$:	MOVL	NDB$L_NEXT(R7),R7	; GET LINK TO NEXT NDB

                          34     13  028E 44400 	BEQL	110$			; IF EQL NO NDB - NO CONFLICT

            59            57     D1  0290 44500 	CMPL	R7,R9			; IS IT THE SAME NODE?

                          F6     13  0293 44600 	BEQL	90$			; IF EQL YES - OK

                                     0295 44700 

                                     0295 44800 	ASSUME	NDB$T_NAME-NDB$W_NODEADDR EQ 2

                                     0295 44900 

            56         18 A9     9E  0295 45000 	MOVAB	NDB$W_NODEADDR(R9),R6	; POINT TO NODEADDR IN NEW NDB

         18 A7            86     B1  0299 45100 	CMPW	(R6)+,NDB$W_NODEADDR(R7) ; DO THE NODE ADDRESSES MATCH?

                          17     12  029D 45200 	BNEQ	100$			; IF NEQ OK

            13         17 A9     E8  029F 45300 	BLBS	NDB$B_STATUS(R9),100$	; IF BS OK

       0000'CF            57     D1  02A3 45400 	CMPL	R7,W^NET$GL_NODLST	; WAS IT ME?

                          D6     12  02A8 45500 	BNEQ	60$			; IF NEQ NO - STRAIGHT ERROR

                                     02AA 45600 ;

                                     02AA 45700 ; SOMEBODY TURNED A LINE WITH A LOOPBACK CONNECTOR TO "ON"

                                     02AA 45800 ;

            56            08     D0  02AA 45900 	MOVL	#NDB$C_MSG_LOOPB,R6	; SET MSG CODE

                          FD50'  30  02AD 46000 	BSBW	NET$OPCOM		; TELL THE OPERATOR

                          FD4D'  30  02B0 46100 	BSBW	NET$CTL_SET_OFF		; TURN THE LINE OFF

                          008B   31  02B3 46200 	BRW	NODMSG_EXIT		; DONE

                                     02B6 46300 100$:

            50            66     9A  02B6 46400 	MOVZBL	(R6),R0			; PICK UP LTH OF NODENAME

                          50     D6  02B9 46500 	INCL	R0			; UP BY 1

            66            50     29  02BB 46600 	CMPC3	R0,(R6),NDB$T_NAME(R7)	; NAMES SAME?

                       1A A7         02BE       

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page  12

X01             PROCESS INCOMING NODE INIT MESSAGE                                                                               (1)



                          C9     12  02C0 46700 	BNEQ	90$			; IF NEQ OK - LOOP

                          BC     11  02C2 46800 105$:	BRB	60$			; ERROR

                                     02C4 46900 110$:

                                     02C4 47000 	BMSGOV	60$,14			; NEED 14 BYTES

         21 A9            8A     90  02CC 47100 	MOVB	(R10)+,NDB$B_FUNC(R9)	; STORE THE FUNCTIONS

            7E            8A     9A  02D0 47200 	MOVZBL	(R10)+,-(SP)		; SAVE THE REQUESTED FUNCTIONS BYTE

       00B8 C9            8A     B0  02D3 47300 	MOVW	(R10)+,NDB$W_HISBLKSIZ(R9) ; GET BLKSIZE

       00B8 C9            6A     B1  02D8 47400 	CMPW	(R10),NDB$W_HISBLKSIZ(R9) ; NSPSIZE .LEQ. BLKSIZE?

                          A1     1A  02DD 47500 	BGTRU	60$			; IF GTRU NO

       00BA C9            8A     B0  02DF 47600 	MOVW	(R10)+,NDB$W_HISNSPSIZ(R9) ; STORE NSPSIZE

                                     02E4 47700 

                                     02E4 47800 	ASSUME	NDB$B_RTEVER-NDB$W_MAXLNK EQ 2

                                     02E4 47900 	ASSUME	NDB$B_COMMVER-NDB$B_RTEVER EQ 3

                                     02E4 48000 	ASSUME	NDB$T_SYSVER-NDB$B_COMMVER EQ 3

                                     02E4 48100 

            53         26 A9     9E  02E4 48200 	MOVAB	NDB$W_MAXLNK(R9),R3	; RESET NDB PTR

            83            8A     7D  02E8 48300 	MOVQ	(R10)+,(R3)+		; MAXLNKS, RTEVER, COMMVER

         2B A9       0000'CF     91  02EB 48400 	CMPB	W^NET$GB_MYCOMVER,NDB$B_COMMVER(R9) ; PROTOCOLS MATCH?

                          8D     12  02F1 48500 	BNEQ	60$			; IF NEQ NO

         28 A9       0000'CF     91  02F3 48600 	CMPB	W^NET$GB_MYRTEVER,NDB$B_RTEVER(R9) ; PROTOCOLS MATCH?

                          85     12  02F9 48700 	BNEQ	60$			; IF NEQ NO

            56            00'    9A  02FB 48800 	MOVZBL	S^#NET$C_MAXSYSVER,R6	; MAX LTH OF SYSVER FIELD

                          FCFF'  30  02FE 48900 	BSBW	NET$MOVE_IFIELD		; GET IT

            BE            50     E9  0301 49000 	BLBC	R0,105$			; IF LBC ERROR

         21 A9            01     E1  0304 49100 	BBC	#NET_V_LINT,NDB$B_FUNC(R9),120$ ; IF BC NOT A POSSIBLE INTERCEPT NODE

                          0B         0308       

                     0000'CF     D5  0309 49200 	TSTL	W^NET$GL_FRONTEND	; DO I ALREADY HAVE AN INTERCEPT?

                          05     12  030D 49300 	BNEQ	120$			; IF NEQ YES

       0000'CF            59     D0  030F 49400 	MOVL	R9,W^NET$GL_FRONTEND	; NOPE - BUT NOW I DO

                                     0314 49500 120$:

            58            59     D0  0314 49600 	MOVL	R9,R8			; ASSUME NAME TO BE FOUND IS IN CURRENT NDB

            05         17 A9     E9  0317 49700 	BLBC	NDB$B_STATUS(R9),130$	; IF BC LINE NOT IN LOOPBACK

            58       0000'CF     9E  031B 49800 	MOVAB	W^NET$AB_LOCALNDB,R8	; SET TO USE INFO OF LOCAL NODE

                                     0320 49900 130$:

                          22     10  0320 50000 	BSBB	NET$FIND_RMT		; FIND THE PROPER RMT RECORD

            9D            50     E9  0322 50100 	BLBC	R0,105$			; IF BC IT WASN'T THERE

         07 A7         18 A9     B1  0325 50200 	CMPW	NDB$W_NODEADDR(R9),RMT$W_NUMBER(R7) ; NUMBERS MATCH?

                          96     12  032A 50300 	BNEQ	105$			; IF NEQ NO - ERROR

                                     032C 50400 

                                     032C 50500 	ASSUME NET_V_VERIF EQ 0

                                     032C 50600 

            12            8E     E9  032C 50700 	BLBC	(SP)+,NODMSG_EXIT	; IF LBC NODE VERIFICATION MSG NOT NEEDED

                          FE6D   30  032F 50800 	BSBW	ALLOC_NODMSG		; ALLOCATE A NODE STARTUP MSG

            83            02     90  0332 50900 	MOVB	#NET_C_VERIF,(R3)+	; THIS IS A VERIFICATION MESSAGE

            83         09 A7     7D  0335 51000 	MOVQ	RMT$Q_XMTPW(R7),(R3)+	; MOVE IN WHAT I THINK IS HIS PASSWORD

                                     0339 51100 COMMON:

            54       0000'CF     B0  0339 51200 	MOVW	W^NET$GW_CHANNEL,R4	; SET UP THE PHYSICAL LINK CHANNEL NO.

                          FCBF'  30  033E 51300 	BSBW	NET$XMT_MSG		; SEND IT

                                     0341 51400 NODMSG_EXIT:

                          FCBC'  31  0341 51500 	BRW	NET$AST_EXIT		; DEALLOCATE THE MSG AND DONE

                                     0344 51600 

                                     0344 51700 

                                     0344 51800 ;++

                                     0344 51900 ; NET$FIND_RMT - FIND THE RMT (REMOTE DATA) RECORD FOR THE NAME IN THE NDB

                                     0344 52000 ;	AND STUFF SOME INFO.

                                     0344 52100 ;

                                     0344 52200 ; INPUTS:	R8 - NDB ADDRESS FOR NAME MATCH

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page  13

X01             PROCESS INCOMING NODE INIT MESSAGE                                                                               (1)



                                     0344 52300 ;		R9 - NDB ADDRESS FOR INFO STUFFING

                                     0344 52400 ;

                                     0344 52500 ; OUTPUTS:	R0:	LBC=>FAILURE

                                     0344 52600 ;			LBS=>SUCCESS

                                     0344 52700 ;		R7 - RMT ADDRESS IF R0 LBS

                                     0344 52800 ;--

                                     0344 52900 

                                     0344 53000 NET$FIND_RMT::

            57       0000'CF     D0  0344 53100 	MOVL	W^NET$GL_REMOTES,R7	; GET PTR TO RMT RECORD AREA

            5A       0000'CF     D0  0349 53200 	MOVL	W^NET$GL_RMTCOUNT,R10	; GET NO. OF RECORDS

                          10     13  034E 53300 	BEQL	20$			; IF EQL NONE

            56         1A A8     9E  0350 53400 	MOVAB	NDB$T_NAME(R8),R6	; POINT TO NAME SOUGHT

                                     0354 53500 

                                     0354 53600 	ASSUME	RMT$B_NAME EQ 0

                                     0354 53700 

                                     0354 53800 10$:

                          FCA9'  30  0354 53900 	BSBW	NET$COMP_STRING		; NAMES MATCH?

                          0A     13  0357 54000 	BEQL	30$			; IF EQL YES

            57         72 A7     9E  0359 54100 	MOVAB	RMT$C_SIZE(R7),R7	; POINT TO NEXT RECORD

            F4            5A     F5  035D 54200 	SOBGTR	R10,10$			; LOOP

                                     0360 54300 20$:

                          50     D4  0360 54400 	CLRL	R0			; RMT RECORD NOT FOUND

                                 05  0362 54500 	RSB				; DONE

                                     0363 54600 30$:

         19 A7       0059 8F     28  0363 54700 	MOVC3	#<1+44+44>,RMT$B_CONNECT(R7),NDB$B_CONNTMO(R9) ;STUFF INFO

                       4F A9         0369       

            50            01     D0  036B 54800 	MOVL	#1,R0			; SUCCESS

                                 05  036E 54900 	RSB				; DONE

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page  14

X01             PHYSICAL LINK ERROR PROCESSING                                                                                   (1)



                                     036F 55100 	.SBTTL	PHYSICAL LINK ERROR PROCESSING

                                     036F 55200 ;++

                                     036F 55300 ; FUNCTIONAL DESCRIPTION:

                                     036F 55400 ;

                                     036F 55500 ; NET$PHYLK_ERROR - PHYSICAL LINK WENT INACTIVE: FIND OUT WHY

                                     036F 55600 ;

                                     036F 55700 ; CALLING SEQUENCE:

                                     036F 55800 ;

                                     036F 55900 ;	BSB FROM NET$PHYLK_ERROR

                                     036F 56000 ;

                                     036F 56100 ; INPUT PARAMETERS:

                                     036F 56200 ;

                                     036F 56300 ;	NET$GW_CHANNEL - PHYSICAL LINK CHANNEL NO.

                                     036F 56400 ;	R11 - CXB TO BE DEALLOCATED

                                     036F 56500 ;	CXB$L_SSB(R11) - STATUS BITS

                                     036F 56600 ;

                                     036F 56700 ; SIDE EFFECTS:

                                     036F 56800 ;

                                     036F 56900 ;	LINE MAY BE RESTARTED OR BOOTER MAY BE STARTED

                                     036F 57000 ;

                                     036F 57100 ;--

                                     036F 57200 

                                     036F 57300 NET$PHYLK_ERROR::

            50            5B     D0  036F 57400 	MOVL	R11,R0			; PREPARE TO DEALLOCATE

            5B         14 A0     D0  0372 57500 	MOVL	CXB$L_SSB(R0),R11	; GET THE STATUS AND ERROR BITS

                          FC87'  30  0376 57600 	BSBW	NET$DEALLOC_BUF		; DEALLOCATE THE CXB

                          FC84'  30  0379 57700 	BSBW	NET$FND_NDB_CHN		; GET THE NDB ADDRESS

                          59     13  037C 57800 	BEQL	LINK_END		; IF EQL THE LINE WENT AWAY

            5B            13     E0  037E 57900 	BBS	#XM$V_ERR_MAINT,R11,START_BOOT ; IF BS MAINTENANCE MODE ENTERED

                          75         0381       

            56            07     D0  0382 58000 	MOVL	#NDB$C_MSG_DSRCH,R6	; ASSUME DSR ON-TO-OFF TRANSITION

            5B            0E     E0  0385 58100 	BBS	#XM$V_STS_DISC,R11,20$ ; IF BS DSR TRANSITION

                          07         0388       

            56            09     D0  0389 58200 	MOVL	#NDB$C_MSG_DCHK,R6	; ASSUME ERROR THRESHOLD EXCEEDED

            5B            08     E1  038C 58300 	BBC	#XM$V_STS_DCHK,R11,30$ ; IF BC NO ERROR

                          27         038F       

                                     0390 58400 20$:

                          FC6D'  30  0390 58500 	BSBW	NET$OPCOM		; TELL THE OPERATOR

                          43     10  0393 58600 	BSBB	GET_STATUS		; GET CHANNEL STATUS

                     0008'CF     D4  0395 58700 	CLRL	W^NET$AB_UTLBUF+8	; CLEAR STATUS BITS

                                     0399 58800 	$QIO_S	CHAN=R4,FUNC=S^#IO$_SETMODE,- ; RESET STATUS BITS

                                     0399 58900 		P1=W^NET$AB_UTLBUF+4	;

                                 05  03B6 59000 	RSB				; DONE

                                     03B7 59100 30$:

            5B   00910200 8F     D3  03B7 59200 	BITL	#<XM$M_ERR_START!XM$M_ERR_FATAL!- ; SEE IF ERROR

                                     03BE 59300 		XM$M_ERR_LOST!XM$M_STS_TIMO>,R11 ; SEE IF ERROR

                          17     13  03BE 59400 	BEQL	LINK_END		; IF EQL NOTHING TO DO

                                     03C0 59500 

                                     03C0 59600 ;

                                     03C0 59700 ; PHYSICAL LINK HAS BEEN DECLARED DOWN

                                     03C0 59800 ;

                                     03C0 59900 LINK_DOWN:

         17 A9            02     E0  03C0 60000 	BBS	#NDB$V_SHUT,NDB$B_STATUS(R9),LINK_END ; IF BS LINE IS RESTARTING

                          12         03C4       

            56            03     D0  03C5 60100 	MOVL	#NDB$C_MSG_DOWN,R6	; MSG NO.

                          FC35'  30  03C8 60200 	BSBW	NET$OPCOM		; INFORM THE OPERATOR

            53            00'    9A  03CB 60300 	MOVZBL	S^#NET$C_EV_DDCDN,R3	; SET THE EVENT CODE

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page  15

X01             PHYSICAL LINK ERROR PROCESSING                                                                                   (1)



            57         16 A9     9E  03CE 60400 	MOVAB	NDB$B_STATE(R9),R7	; POINT TO STATE TRANSITION BYTE

       0000'CF            00     FB  03D2 60500 	CALLS	#0,W^NET$TRN		; DO A TRANSITION

                                     03D7 60600 LINK_END:

                                 05  03D7 60700 	RSB				; DONE

                                     03D8 60800 

                                     03D8 60900 ;++

                                     03D8 61000 ;

                                     03D8 61100 ; GET_STATUS - GET CHANNEL STATUS

                                     03D8 61200 ;

                                     03D8 61300 ; INPUTS:	NET$GW_CHANNEL - CURRENT CHANNEL NO.

                                     03D8 61400 ; OUTPUTS:	R4 - CHANNEL NO.

                                     03D8 61500 ;

                                     03D8 61600 ;--

                                     03D8 61700 

                                     03D8 61800 GET_STATUS:

            54       0000'CF     B0  03D8 61900 	MOVW	W^NET$GW_CHANNEL,R4	; RESTORE THE CHANNEL NO.

       0000'CF            30     D0  03DD 62000 	MOVL	#48,W^NET$GQ_UTLDESC	; SET LENGTH OF CHARACTERISTICS BFR

                                     03E2 62100 	$GETCHN_S	CHAN=R4,PRIBUF=W^NET$GQ_UTLDESC ; GET CHANNEL INFO

                                 05  03F6 62200 	RSB				; DONE

                                     03F7 62300 

                                     03F7 62400 

                                     03F7 62500 ;

                                     03F7 62600 ; PHYSICAL LINK MAINTENANCE MODE HAS BEEN ENTERED

                                     03F7 62700 ;

                                     03F7 62800 START_BOOT:

            56            02     D0  03F7 62900 	MOVL	#NDB$C_MSG_MAINT,R6	; MSG NO.

                          FC03'  30  03FA 63000 	BSBW	NET$OPCOM		; TELL THE OPERATOR

       0000'CF         04 A9     D0  03FD 63100 	MOVL	NDB$L_LINE_NAME(R9),W^NET$AB_UTLBUF ; SET UP LINE NAME

       0000'CF            04     D0  0403 63200 	MOVL	#4,W^NET$GQ_UTLDESC	; USE NAME AS SYS$ERROR

            56       0004'CF     DE  0408 63300 	MOVAL	W^NET$GQ_IMAGE+4,R6	; SET UP FOR IMAGE AND PROCESS NAME

            66       0016'CF     DE  040D 63400 	MOVAL	W^DLE_NAME,(R6)		; ADDRESS

            76            03     D0  0412 63500 	MOVL	#DLE_LTH,-(R6)		; SET UP LENGTH OF IMAGE AND PROCESS NAME

                                     0415 63600 	$CREPRC_S	-		; CREATE A PROCESS

                                     0415 63700 		INPUT=	W^NET$GQ_TERM,-	; DEVICE INPUT IS TERMINAL

                                     0415 63800 		OUTPUT=	W^NET$GQ_TERM,-	; LIKEWISE FOR THE DEVICE OUTPUT

                                     0415 63900 		ERROR=	W^NET$GQ_UTLDESC,- ; NCB DESCRIPTOR

                                     0415 64000 		PRCNAM=	(R6),-		; ESTABLISH PROCESS NAME

                                     0415 64100 		IMAGE=	W^DLE_IMAGE,-	; IMAGE TO RUN

                                     0415 64200 		BASPRI=	#4,-		; PRIORITY

                                     0415 64300 		UIC=#<^O10@16+^O40>	; UIC IS [10,40]

                                 05  0441 64400 	RSB				; DONE

                                     0442 64500 

                                     0442 64600 	.END

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page  16

SYMBOL TABLE                                                                                                                     (1)



$$T1           = 00000000            IO$M_STARTUP     ********   X   04   NDB_GONE         00000041 R     04   

ALLOC_NODMSG     0000019F R     04   IO$_SETMODE      ********   X   04   NET$AB_LOCALNDB  ********   X   04   

AQB$B_ACPTYPE    00000015            LINK_DOWN        000003C0 R     04   NET$AB_UTLBUF    ********   X   04   

AQB$B_CLASS      00000016            LINK_END         000003D7 R     04   NET$ALLOCBUF     ********   X   04   

AQB$B_MNTCNT     0000000B            NDB$B_COMMVER    0000002B            NET$AST_EXIT     ********   X   04   

AQB$B_STATUS     00000014            NDB$B_CONNTMO    0000004F            NET$BREAK        ********   X   04   

AQB$B_TYPE       0000000A            NDB$B_FUNC       00000021            NET$CHECK_ASCII  ********   X   04   

AQB$C_LENGTH     00000018            NDB$B_NONPRVACC  00000050            NET$CHKVFY       00000000 RG    04   

AQB$K_F11V1    = 00000001            NDB$B_NUMBUF     0000000B            NET$COMP_STRING  ********   X   04   

AQB$K_F11V2    = 00000002            NDB$B_PRVACC     0000007C            NET$CTL_SET_OFF  ********   X   04   

AQB$K_LENGTH     00000018            NDB$B_RTEVER     00000028            NET$C_ACKM     = 00000001            

AQB$K_MTA      = 00000003            NDB$B_STATE      00000016            NET$C_ACKOFF   = 00000005            

AQB$K_NET      = 00000004            NDB$B_STATUS     00000017            NET$C_CC       = 00000002            

AQB$K_UNDEFINED= 00000000            NDB$B_TYPE       0000000A            NET$C_CI       = 00000001            

AQB$L_ACPPID     0000000C            NDB$C_CTL_LOOP = 00000005            NET$C_CTRLM    = 00000002            

AQB$L_ACPQBL     00000004            NDB$C_LENGTH     000000BC            NET$C_DATAM    = 00000000            

AQB$L_ACPQFL     00000000            NDB$C_LOOP     = 00000003            NET$C_DATREQ   = 00000000            

AQB$L_LINK       00000010            NDB$C_MAINT    = 00000004            NET$C_DC       = 00000004            

AQB$M_CREATING = 00000008            NDB$C_MSG_DCHK = 00000009            NET$C_DI       = 00000003            

AQB$M_DEFCLASS = 00000002            NDB$C_MSG_DOWN = 00000003            NET$C_EV_DDCDN   ********   X   04   

AQB$M_DEFSYS   = 00000004            NDB$C_MSG_DSRCH= 00000007            NET$C_INTREQ   = 00000001            

AQB$M_UNIQUE   = 00000001            NDB$C_MSG_LOOPB= 00000008            NET$C_LOGLNK   = 00000001            

AQB$V_CREATING = 00000003            NDB$C_MSG_MAINT= 00000002            NET$C_MAXNAME    ********   X   04   

AQB$V_DEFCLASS = 00000001            NDB$C_MSG_NGINI= 00000004            NET$C_MAXNSPOVH= 00000018            

AQB$V_DEFSYS   = 00000002            NDB$C_MSG_OKINI= 00000005            NET$C_MAXSYSVER  ********   X   04   

AQB$V_UNIQUE   = 00000000            NDB$C_MSG_SHUT = 00000006            NET$C_MSGFLG   = 00000000            

AQB$W_SIZE       00000008            NDB$C_MSG_START= 00000001            NET$C_NODMSG   = 00000005            

BIT...         = 00000004            NDB$C_OFF      = 00000001            NET$C_NOP      = 00000000            

BUG$_NETSYSSRV   ********   X   04   NDB$C_ON       = 00000000            NET$C_NSPOVH   = 0000000B            

CHECK_NDB        000000A5 R     04   NDB$C_SHUT     = 00000002            NET$C_NSPV3    = 00000000            

COMMON           00000339 R     04   NDB$K_LENGTH     000000BC            NET$C_PASSWLTH   ********   X   04   

CXB$B_CODE       0000000B            NDB$L_LINE_NAME  00000004            NET$C_PIGGYBACK= 00008000            

CXB$B_TYPE       0000000A            NDB$L_NEXT       00000000            NET$C_PRINRM   = 00000001            

CXB$C_DDCCON   = 00000001            NDB$M_CTL_LOOP = 00000008            NET$C_RTHDR    = 00000002            

CXB$C_DDCDAT   = 00000002            NDB$M_LOOPBACK = 00000001            NET$C_RTHDROVH = 0000000F            

CXB$C_DDCERR   = 00000004            NDB$M_OFF      = 00000002            NET$C_ST_INIT    ********   X   04   

CXB$C_DDCRCV   = 00000003            NDB$M_SHUT     = 00000004            NET$C_ST_ON      ********   X   04   

CXB$C_LENGTH     00000018            NDB$Q_AST        0000000C            NET$DEALLOC_BUF  ********   X   04   

CXB$C_NSPSTART   0000001A            NDB$Q_ZEROTIME   000000AC            NET$DEANONPAGED  ********   X   04   

CXB$K_LENGTH     00000018            NDB$T_NAME       0000001A            NET$FIND_RMT     00000344 RG    04   

CXB$K_NSPSTART   0000001A            NDB$T_SYSVER     0000002E            NET$FND_NDB_CHN  ********   X   04   

CXB$L_BL         00000004            NDB$V_CTL_LOOP = 00000003            NET$GB_MYCOMVER  ********   X   04   

CXB$L_FL         00000000            NDB$V_LOOPBACK = 00000000            NET$GB_MYRTEVER  ********   X   04   

CXB$L_IRP        00000010            NDB$V_OFF      = 00000001            NET$GL_FRONTEND  ********   X   04   

CXB$L_LINK       00000010            NDB$V_SHUT     = 00000002            NET$GL_NODLST    ********   X   04   

CXB$L_SSB        00000014            NDB$W_BLKSIZE    00000022            NET$GL_Q_HEAD    ********   X   04   

CXB$W_CHANNEL    00000010            NDB$W_BUFSIZE    000000A8            NET$GL_REMOTES   ********   X   04   

CXB$W_LENGTH     0000000C            NDB$W_CHANNEL    00000014            NET$GL_RMTCOUNT  ********   X   04   

CXB$W_OFFSET     0000000E            NDB$W_CHAR       000000AA            NET$GQ_IMAGE     ********   X   04   

CXB$W_SIZE       00000008            NDB$W_HISBLKSIZ  000000B8            NET$GQ_TERM      ********   X   04   

DLE_IMAGE        00000000 R     03   NDB$W_HISNSPSIZ  000000BA            NET$GQ_UTLDESC   ********   X   04   

DLE_LTH        = 00000003            NDB$W_MAXLNK     00000026            NET$GT_MYNAME    ********   X   04   

DLE_NAME         00000016 R     03   NDB$W_NODEADDR   00000018            NET$GW_CHANNEL   ********   X   04   

GBL...         = 00000000            NDB$W_NSPSIZE    00000024            NET$GW_NGINITS   ********   X   04   

GET_STATUS       000003D8 R     04   NDB$W_RCVBLKS    000000B4            NET$GW_OKINITS   ********   X   04   

IO$M_ATTNAST     ********   X   04   NDB$W_SIZE       00000008            NET$INI_AST      000000BC RG    04   

IO$M_SHUTDOWN    ********   X   04   NDB$W_XMTBLKS    000000B6            NET$MOVE_IFIELD  ********   X   04   

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page  17

SYMBOL TABLE                                                                                                                     (1)



NET$MOVE_STRING  ********   X   04   NET_M_LINT     = 00000002            XM$M_STS_DISC  = 00004000            

NET$M_BOM      = 00000020            NET_M_LINTREQ  = 00000002            XM$M_STS_ORUN  = 00000400            

NET$M_EOM      = 00000040            NET_M_RINT     = 00000004            XM$M_STS_TIMO  = 00000200            

NET$M_INTLS    = 00000010            NET_M_RINTREQ  = 00000004            XM$V_CHR_HDPLX = 00000002            

NET$M_INTMSG   = 00000020            NET_M_RTE      = 00000001            XM$V_CHR_LOOPB = 00000001            

NET$NODE_OFF     000001AE RG    04   NET_M_UNBLK    = 00000008            XM$V_CHR_MBX   = 00000004            

NET$NOP_AST      00000058 RG    04   NET_M_VERIF    = 00000001            XM$V_CHR_MOP   = 00000000            

NET$NSPINI       00000208 RG    04   NET_V_LINT     = 00000001            XM$V_CHR_SLAVE = 00000003            

NET$OPCOM        ********   X   04   NET_V_LINTREQ  = 00000001            XM$V_ERR_FATAL = 00000010            

NET$OPCOM_ERROR  ********   X   04   NET_V_RINT     = 00000002            XM$V_ERR_LOST  = 00000014            

NET$PHYLK_ERROR  0000036F RG    04   NET_V_RINTREQ  = 00000002            XM$V_ERR_MAINT = 00000013            

NET$RESTART      00000080 RG    04   NET_V_RTE      = 00000000            XM$V_ERR_START = 00000017            

NET$SET_INI_AST  ********   X   04   NET_V_UNBLK    = 00000003            XM$V_STS_ACTIVE= 0000000B            

NET$SET_NOP_AST  ********   X   04   NET_V_VERIF    = 00000000            XM$V_STS_DCHK  = 00000008            

NET$START        000000C4 RG    04   NODINI_NG        00000072 R     04   XM$V_STS_DISC  = 0000000E            

NET$S_ACKOPT   = 00000001            NODINI_OK        0000002D R     04   XM$V_STS_ORUN  = 0000000A            

NET$S_BOM      = 00000001            NODMSG_EXIT      00000341 R     04   XM$V_STS_TIMO  = 00000009            

NET$S_EFMT     = 00000002            NOP_TIMER        00000021 R     03   

NET$S_EOM      = 00000001            RESET_CHANNEL    000001F6 R     04   

NET$S_FCINT    = 00000002            RESTART_TIMER    00000019 R     03   

NET$S_FCMOD    = 00000002            RMT$B_CONNECT    00000019            

NET$S_FCOPT    = 00000002            RMT$B_NAME       00000000            

NET$S_INTLS    = 00000001            RMT$B_NONPRVACC  0000001A            

NET$S_INTMSG   = 00000001            RMT$B_PRVACC     00000046            

NET$S_LTYPE    = 00000002            RMT$C_FILE     = 00000001            

NET$S_MPRI     = 00000002            RMT$C_SIZE       00000072            

NET$S_MSGFLG   = 00000005            RMT$K_SIZE       00000072            

NET$S_MSGID    = 00000002            RMT$Q_RCVPW      00000011            

NET$S_MSGTYP   = 00000002            RMT$Q_XMTPW      00000009            

NET$S_REMLFS   = 00000004            RMT$T_NAME       00000001            

NET$S_RFMT     = 00000001            RMT$T_NONPRVACC  0000001B            

NET$S_SUBTYP   = 00000003            RMT$T_PRVACC     00000047            

NET$TRN          ********   X   04   RMT$W_NUMBER     00000007            

NET$UP_COUNTER   ********   X   04   SS$_INSFMEM      ********   X   04   

NET$V_ACKOPT   = 00000004            START_BOOT       000003F7 R     04   

NET$V_BOM      = 00000005            START_NOP        00000044 R     04   

NET$V_EFMT     = 00000004            SYS$CANCEL       ********   X   04   

NET$V_EOM      = 00000006            SYS$CANTIM       ********   X   04   

NET$V_FCINT    = 00000002            SYS$CREPRC       ********   X   04   

NET$V_FCMOD    = 00000000            SYS$DASSGN       ********   X   04   

NET$V_FCOPT    = 00000002            SYS$GETCHN       ********   X   04   

NET$V_INTLS    = 00000004            SYS$GETTIM       ********   X   04   

NET$V_INTMSG   = 00000005            SYS$QIO          ********   X   04   

NET$V_LTYPE    = 00000000            SYS$QIOW         ********   X   04   

NET$V_MPRI     = 00000002            SYS$SETIMR       ********   X   04   

NET$V_MSGFLG   = 00000002            SYS$WAKE         ********   X   04   

NET$V_MSGID    = 00000000            XM$M_CHR_HDPLX = 00000004            

NET$V_MSGTYP   = 00000002            XM$M_CHR_LOOPB = 00000002            

NET$V_REMLFS   = 00000004            XM$M_CHR_MBX   = 00000010            

NET$V_RFMT     = 00000006            XM$M_CHR_MOP   = 00000001            

NET$V_SUBTYP   = 00000004            XM$M_CHR_SLAVE = 00000008            

NET$XMT_MSG      ********   X   04   XM$M_ERR_FATAL = 00010000            

NET_C_HIGHNODE = 000000F0            XM$M_ERR_LOST  = 00100000            

NET_C_INIT     = 00000001            XM$M_ERR_MAINT = 00080000            

NET_C_LOWNODE  = 00000002            XM$M_ERR_START = 00800000            

NET_C_NODLTH   = 00000034            XM$M_STS_ACTIVE= 00000800            

NET_C_VERIF    = 00000002            XM$M_STS_DCHK  = 00000100            

NETNODMSG       - PROCESS NODE STARTUP MESSAGES                  22-AUG-1978 00:57:32   VAX-11 MACRO X0.3-11               Page  18

PROGRAM SECTION SYNOPSIS                                                                                                         (1)







PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            000000BC      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

NET_PURE         00000029      03     NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD  NOWRT BYTE  

NET_CONTROL      00000442      04     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

15656. BYTES LEFT IN FREE MEMORY POOL.

46. BYTES OF RECLAIMED MEMORY.

OBJ$:NETNODMSG,LIS$:NETNODMSG/-SP=EXECML$/ML,M1/ML,M2/ML,SRC$:NETNODMSG

95 MLB DIR RDS - 540 GETS TO DEFINE 36 MACROS. 38 INTER. FILE WRITES. 

