NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)    3400  HISTORY

   (1)    4200  DECLARATIONS

   (1)    7500  PHYSICAL LINE FUNCTIONS

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   1

X01                                                                                                                              (1)



                                     0000   100 

                                     0000   200 	.TITLE	NETCTLLIN - PROCESS LINE CONTROL QIO'S

                                     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 PROCESSES CONTROL QIO'S FOR LINE FUNCTIONS

                                     0000  2900 ;

                                     0000  3000 ; ENVIRONMENT:

                                     0000  3100 ;	MODE = KERNEL

                                     0000  3200 ;--

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   2

X01             HISTORY                                                                                                          (1)



                                     0000  3400 	.SBTTL	HISTORY

                                     0000  3500 ; AUTHOR:	SCOTT G. DAVIS, CREATION DATE: 04-JAN-1978

                                     0000  3600 ;

                                     0000  3700 ; MODIFIED BY:

                                     0000  3800 ;

                                     0000  3900 ;	, : VERSION

                                     0000  4000 ; 01	- 

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   3

X01             DECLARATIONS                                                                                                     (1)



                                     0000  4200 	.SBTTL	DECLARATIONS

                                     0000  4300 ;

                                     0000  4400 ; INCLUDE FILES:

                                     0000  4500 ;

                                     0000  4600 	$AQBDEF

                                     0000  4700 	$CCBDEF

                                     0000  4800 	$DYNDEF

                                     0000  4900 	$LINDEF

                                     0000  5000 	$NDBDEF

                                     0000  5100 	$PRVDEF

                                     0000  5200 	$UCBDEF

                                     0000  5300 	$XMDEF

                                     0000  5400 

                                     0000  5500 ;

                                     0000  5600 ; MACROS:

                                     0000  5700 ;

                                     0000  5800 

                                     0000  5900 ;

                                     0000  6000 ; EQUATED SYMBOLS:

                                     0000  6100 ;

                           000000B4  0000  6200 UCB$L_XM_BASAD = ^X00B4			; ***** TEMP UNTIL IN $UCBDEF

                                     0000  6300 

                                     0000  6400 ;

                                     0000  6500 ; OWN STORAGE:

                                     0000  6600 ;

                                     0000  6700 

                                 00000000  6800 	.PSECT	NET_IMPURE,WRT,NOEXE

                                     0000  6900 

                                     0000  7000 LINE_DESC:				; DESCRIPTOR OF LINE NAME FOR $ASSIGN

                           00000004  0000  7100 	.LONG	4			; 4 BYTES OF NAME

                           00000008  0004  7200 	.BLKL	1			; ADDRESS OF NAME

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   4

X01             DECLARATIONS                                                                                                     (1)



                                 00000000  7400 	.PSECT	NET_CONTROL,NOWRT

                                     0000  7500 	.SBTTL	PHYSICAL LINE FUNCTIONS

                                     0000  7600 ;++

                                     0000  7700 ;

                                     0000  7800 ; FUNCTIONAL DESCRIPTION

                                     0000  7900 ;

                                     0000  8000 ; NET$SET_LIN_STA - SET THE NEW STATE OF THE LINE ON OR OFF

                                     0000  8100 ; NET$GET_LIN_STA - RETURN THE CURRENT STATE OF THE LINE

                                     0000  8200 ; NET$GET_LIN_CTR - RETURN THE PHYLK COUNTERS FOR THE LINE

                                     0000  8300 ; NET$CLR_LIN_CTR - CLEAR THE PHYLK COUNTERS FOR THE LINE

                                     0000  8400 ;

                                     0000  8500 ;--

                                     0000  8600 

                                     0000  8700 NET$SET_LIN_STA::

            50            12     D0  0000  8800 	MOVL	#PRV$V_OPER,R0		; NEED OPERATOR PRIVILEGE FOR THIS

                          FFFA'  30  0003  8900 	BSBW	NET$CTL_CHKPRV		; CHECK IT OUT

       0000'CF            6B     B0  0006  9000 	MOVW	(R11),W^NET$GW_CTLCOUNT	; PUT BACK THE PARAMETER

            50            00'    3C  000B  9100 	MOVZWL	S^#SS$_BADPARAM,R0	; ASSUME NO GOOD

                          59     D4  000E  9200 	CLRL	R9			; NO NDB, YET

                          FFED'  30  0010  9300 	BSBW	NET$CTL_NDBLINE		; FIND THE NDB, IF ANY, FOR THIS LINE NAME

                                     0013  9400 

                                     0013  9500 	ASSUME	NDB$C_ON EQ 0

                                     0013  9600 	ASSUME	NDB$C_OFF EQ 1

                                     0013  9700 	ASSUME	NDB$C_LOOP EQ 3

                                     0013  9800 	ASSUME	NDB$C_CTL_LOOP EQ 5

                                     0013  9900 

                                     0013 10000 	CASE	(R11),TYPE=B,<-		; DISPATCH ON PARAMETER

                                     0013 10100 		30$,-			; ON

                                     0013 10200 		10$,-			; OFF

                                     0013 10300 		110$,-			; SHUT (UNUSED)

                                     0013 10400 		20$,-			; LOOPBACK

                                     0013 10500 		110$,-			; MAINTENANCE

                                     0013 10600 		25$,-			; DEVICE LOOPBACK

                                     0013 10700 >

                          00C0   31  0023 10800 	BRW	110$			; BAD PARAMETER

                                     0026 10900 ;

                                     0026 11000 ; COMMAND IS "SET STATE LINE OFF"

                                     0026 11100 ;

                                     0026 11200 10$:

                          59     D5  0026 11300 	TSTL	R9			; IS THE LINE ALREADY OFF?

                          03     13  0028 11400 	BEQL	15$			; IF EQL YES

                          FFD3'  30  002A 11500 	BSBW	NET$CTL_SET_OFF		; SET THE LINE OFF

                                     002D 11600 15$:

                                 04  002D 11700 	RET				; DONE

                                     002E 11800 ;

                                     002E 11900 ; THE COMMAND WAS "SET STATE LINE LOOPBACK"

                                     002E 12000 ;

                                     002E 12100 20$:

                          01     DD  002E 12200 	PUSHL	#NDB$M_LOOPBACK		; SET THE STATUS CODE

                          06     11  0030 12300 	BRB	40$			; GO TO COMMON CODE

                                     0032 12400 ;

                                     0032 12500 ; THE COMMAND WAS "SET STA LIN DEVICE_LOOP"

                                     0032 12600 ;

                                     0032 12700 25$:

                          09     DD  0032 12800 	PUSHL	#NDB$M_LOOPBACK!NDB$M_CTL_LOOP ; INIT BITS

                          02     11  0034 12900 	BRB	40$			; GO TO COMMON CODE

                                     0036 13000 

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   5

X01             PHYSICAL LINE FUNCTIONS                                                                                          (1)



                                     0036 13100 ;

                                     0036 13200 ; THE COMMAND WAS "SET STATE LINE ON"

                                     0036 13300 ;

                                     0036 13400 30$:

                          7E     D4  0036 13500 	CLRL	-(SP)			; SET THE NODE STATUS

                                     0038 13600 40$:

                          59     D5  0038 13700 	TSTL	R9			; IS THERE ALREADY AN NDB?

                          24     13  003A 13800 	BEQL	50$			; IF EQL THERE IS NO NDB

       0000'CF         14 A9     B0  003C 13900 	MOVW	NDB$W_CHANNEL(R9),W^NET$GW_CHANNEL ; SET THE CHANNEL NO.

                          6E     D5  0042 14000 	TSTL	(SP)			; IS THIS "LINE ON"?

                          06     13  0044 14100 	BEQL	42$			; IF EQL YES

                                     0046 14200 

                                     0046 14300 	ASSUME	NDB$V_LOOPBACK EQ 0

                                     0046 14400 

            06         17 A9     E8  0046 14500 	BLBS	NDB$B_STATUS(R9),45$	; IF BS ALREADY IN LOOPBACK

                          0C     11  004A 14600 	BRB	47$			; PROCEED

                                     004C 14700 42$:

            08         17 A9     E8  004C 14800 	BLBS	NDB$B_STATUS(R9),47$	; IF BS NOT ON

                                     0050 14900 45$:

         17 A9            01     E5  0050 15000 	BBCC	#NDB$V_OFF,NDB$B_STATUS(R9),46$ ; RESET THE "OFF" BIT

                          00         0054       

                                     0055 15100 46$:

                          00A7   31  0055 15200 	BRW	115$			; IGNORE COMMAND - RETURN SUCCESS

                                     0058 15300 47$:

       0000'CF       0000'8F     3C  0058 15400 	MOVZWL	#SS$_ILLCNTRFUNC,W^NET$GQ_USR_STAT ; CAN'T SWITCH "ON"-TYPE STATES

                                 04  005F 15500 	RET				; RETURN WITH ERROR

                                     0060 15600 50$:

                                     0060 15700 ;

                                     0060 15800 ; SET UP THE NODE DESCRIPTOR BLOCK (NDB)

                                     0060 15900 ;

                                     0060 16000 

                                     0060 16100 	ASSUME	LIN$L_NAME EQ 0

                                     0060 16200 	ASSUME	LIN$B_NODE EQ LIN$W_CHAR+2

                                     0060 16300 	ASSUME	LIN$W_BUFSIZE EQ LIN$B_NODE+7

                                     0060 16400 

                     0000'CF     B4  0060 16500 	CLRW	W^NET$GW_CHANNEL	; NO CHANNEL YET

            50            00'    3C  0064 16600 	MOVZWL	S^#SS$_BADPARAM,R0	; ASSUME WRONG LIN LENGTH

            13       0000'CF     D1  0067 16700 	CMPL	W^NET$GL_NAME_LTH,#LIN$C_SIZE ; RIGHT SIZE?

                          78     12  006C 16800 	BNEQ	110$			; IF NEQ NO

            58       0000'CF     D0  006E 16900 	MOVL	W^NET$GL_NAME_PTR,R8	; POINT TO INFORMATION BLOCK

                          71     13  0073 17000 	BEQL	110$			; IF EQL NO NAME WAS GIVEN

                                     0075 17100 ;

                                     0075 17200 ; ALLOCATE AN NDB

                                     0075 17300 ;

            51         BC 8F     9A  0075 17400 	MOVZBL	#NDB$C_LENGTH,R1	; GET LENGTH

                          FF84'  30  0079 17500 	BSBW	NET$ALONONPAGED		; ALLOCATE IT

            07            50     E8  007C 17600 	BLBS	R0,60$			; IF LBS OK

            50       0000'8F     3C  007F 17700 	MOVZWL	#SS$_INSFMEM,R0		; TOUGH NOOGIES!

                          60     11  0084 17800 	BRB	110$			; GO TO COMMON CODE

            59            52     D0  0086 17900 60$:	MOVL	R2,R9			; SAVE ITS BASE ADDRESS

                          82     D4  0089 18000 	CLRL	(R2)+			; NO LINK LONGWORD

       0004'CF            52     D0  008B 18100 	MOVL	R2,W^LINE_DESC+4	; SET ADDRESS OF LINE DESCRIPTOR

            82            68     D0  0090 18200 	MOVL	(R8),(R2)+		; STORE THE LINE NAME

            82            51     B0  0093 18300 	MOVW	R1,(R2)+		; STORE THE BLOCK SIZE

            82            1C     90  0096 18400 	MOVB	#DYN$C_NDB,(R2)+	; STORE THE BLOCK TYPE

            82         12 A8     90  0099 18500 	MOVB	LIN$B_NUMBUF(R8),(R2)+	; STORE NO. OF PREALLOCATED BUFFERS

            82       0000'CF     7D  009D 18600 	MOVQ	W^NET$GQ_DUMMYAST,(R2)+	; SET UP PHYLK AST ADDRESS

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   6

X01             PHYSICAL LINE FUNCTIONS                                                                                          (1)



                                     00A2 18700 ;

                                     00A2 18800 ; NOW ASSIGN A CHANNEL TO THE DEVICE, IF YOU CAN

                                     00A2 18900 ;

                                     00A2 19000 	$ASSIGN_S	DEVNAM=W^LINE_DESC,CHAN=W^NET$GW_CHANNEL ; GET A CHANNEL

            30            50     E9  00B3 19100 	BLBC	R0,110$			; IF LBC ERROR

            50       0000'CF     3C  00B6 19200 	MOVZWL	W^NET$GW_CHANNEL,R0	; GET THE CHANNEL NO.

            82            50     B0  00BB 19300 	MOVW	R0,(R2)+		; STORE THE PHYLK CHANNEL NO.

                          0084   30  00BE 19400 	BSBW	GET_UCB			; GET THE UCB ADDRESS

            50       0000'8F     3C  00C1 19500 	MOVZWL	#SS$_NOTNETDEV,R0	; ASSUME NOT A NETWORK COMM DEVICE

         34 A5            00'    E1  00C6 19600 	BBC	S^#DEV$V_NET,UCB$L_DEVCHAR(R5),110$ ; IF BC NOT A NETWORK DEVICE

                          1B         00CA       

         34 A5            00'    E0  00CB 19700 	BBS	S^#DEV$V_MBX,UCB$L_DEVCHAR(R5),110$ ; IF BS A LOGICAL LINK

                          16         00CF       

            50            00'    3C  00D0 19800 	MOVZWL	S^#SS$_BADPARAM,R0	; ASSUME NO GOOD

            51         07 A8     9E  00D3 19900 	MOVAB	LIN$W_CHAR(R8),R1	; POINT TO LINE CHARACTERISTICS WORD

       00AA C9            81     B0  00D7 20000 	MOVW	(R1)+,NDB$W_CHAR(R9)	; STORE THEM AWAY

            52            61     9A  00DC 20100 	MOVZBL	(R1),R2			; GET THE NAME LTH

                          05     15  00DF 20200 	BLEQ	110$			; IF LEQ NO GOOD

            52            00'    91  00E1 20300 	CMPB	S^#NET$C_MAXNODLTH,R2	; TOO MANY?

                          1A     1E  00E4 20400 	BGEQU	120$			; IF GEQU NO

                                     00E6 20500 110$:

       0000'CF            50     D0  00E6 20600 	MOVL	R0,W^NET$GQ_USR_STAT	; STORE THE ERROR CODE

            50            59     D0  00EB 20700 	MOVL	R9,R0			; WAS AN NDB ALLOCATED?

                          0F     13  00EE 20800 	BEQL	115$			; IF EQL NO

                          FF0D'  30  00F0 20900 	BSBW	NET$DEANONPAGED		; DEALLOCATE IT

                                     00F3 21000 	$DASSGN_S	W^NET$GW_CHANNEL ; DEASSIGN ANY CHANNEL

                                     00FF 21100 115$:

                                 04  00FF 21200 	RET				; DONE

                                     0100 21300 120$:

            61            01'    28  0100 21400 	MOVC3	S^#NET$C_MAXNODLTH+1,(R1),NDB$T_NAME(R9) ; STORE NODE NAME

                       1A A9         0103       

         24 A9            61     B0  0105 21500 	MOVW	(R1),NDB$W_NSPSIZE(R9)	; SET THE STUFF FOR THE NODE INIT

         22 A9            61     B0  0109 21600 	MOVW	(R1),NDB$W_BLKSIZE(R9)	; SAME - NO BLOCKING

       00A8 C9            81     B0  010D 21700 	MOVW	(R1)+,NDB$W_BUFSIZE(R9)	; STORE SIZE OF PREALLOCATED BUFFERS

                                     0112 21800 ;

                                     0112 21900 ; NOW  LINK THE NDB INTO THE LIST

                                     0112 22000 ;

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

            58            57     D0  0117 22200 130$:	MOVL	R7,R8			; SAVE THE BASE

            57            68     D0  011A 22300 	MOVL	NDB$L_NEXT(R8),R7	; GET LINK TO NEXT

                          F8     12  011D 22400 	BNEQ	130$			; IF NEQ NOT AT END

            68            59     D0  011F 22500 	MOVL	R9,NDB$L_NEXT(R8)	; STORE THE LINK TO THE NEW NDB

         16 A9            00'    90  0122 22600 	MOVB	S^#NET$C_ST_OFF,NDB$B_STATE(R9) ; SET THE STATE

            50       0000'CF     D0  0126 22700 	MOVL	W^NET$GL_Q_HEAD,R0	; GET THE AQB ADDRESS

                       0B A0     96  012B 22800 	INCB	AQB$B_MNTCNT(R0)	; BUMP THE MOUNT COUNT

                                     012E 22900 140$:

            53            00'    9A  012E 23000 	MOVZBL	S^#NET$C_EV_NSPON,R3	; THE EVENT IS " NSP ON"

         17 A9            8E     F6  0131 23100 	CVTLB	(SP)+,NDB$B_STATUS(R9)	; SET THE STATUS

                                     0135 23200 150$:

            56            01     D0  0135 23300 	MOVL	#NDB$C_MSG_START,R6	; LINE STARTING UP

                          FEC5'  30  0138 23400 	BSBW	NET$OPCOM		; TELL THE OPERATOR

            57         16 A9     9E  013B 23500 	MOVAB	NDB$B_STATE(R9),R7	; GET THE STATE ADDRESS

       0000'CF            00     FB  013F 23600 	CALLS	#0,W^NET$TRN		; DO A TRANSITION

                                 04  0144 23700 	RET				; THAT IS ALL

                                     0145 23800 

                                     0145 23900 

                                     0145 24000 ;++

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   7

X01             PHYSICAL LINE FUNCTIONS                                                                                          (1)



                                     0145 24100 ; GET_UCB - GET UCB OF PHYLK DEVICE OF CHANNEL

                                     0145 24200 ;

                                     0145 24300 ; INPUTS:	R0 - CHANNEL NO.

                                     0145 24400 ;

                                     0145 24500 ; OUTPUTS:	R5 - UCB ADDRESS

                                     0145 24600 ;

                                     0145 24700 ;--

                                     0145 24800 

                                     0145 24900 GET_UCB:

                 00000000'EF     16  0145 25000 	JSB	IOC$VERIFYCHAN		; GET THE CCB

            55            61     D0  014B 25100 	MOVL	CCB$L_UCB(R1),R5	; GET THE UCB

                                 05  014E 25200 	RSB				; DONE

                                     014F 25300 

                                     014F 25400 NET$GET_LIN_STA::

            50            12     D0  014F 25500 	MOVL	#PRV$V_OPER,R0		; NEED OPERATOR PRIVILEGE FOR THIS

                          FEAB'  30  0152 25600 	BSBW	NET$CTL_CHKPRV		; CHECK IT OUT

                                     0155 25700 					; ASSUME "ON"

                          FEA8'  30  0155 25800 	BSBW	NET$CTL_NDBLINE		; GET THE NDB, IF ANY

                          1E     13  0158 25900 	BEQL	10$			; IF EQL NONE - "OFF"

         17 A9            01     E0  015A 26000 	BBS	#NDB$V_OFF,NDB$B_STATUS(R9),10$ ; IF BS "OFF"

                          19         015E       

            00'        16 A9     91  015F 26100 	CMPB	NDB$B_STATE(R9),S^#NET$C_ST_ON ; IS THE LINE REALLY ON?

                          13     12  0163 26200 	BNEQ	10$			; IF NEQ NO - INITING

            13         17 A9     E9  0165 26300 	BLBC	NDB$B_STATUS(R9),20$	; IF BC "ON"

         17 A9            03     E1  0169 26400 	BBC	#NDB$V_CTL_LOOP,NDB$B_STATUS(R9),5$ ; IF BC NOT DEVICE LOOPBACK

                          05         016D       

       0000'CF            02     80  016E 26500 	ADDB	#2,W^NET$GW_CTLCOUNT	; BUMP THE RETURN CODE

                                     0173 26600 5$:

       0000'CF            02     80  0173 26700 	ADDB	#2,W^NET$GW_CTLCOUNT	; "LOOPBACK"

                     0000'CF     96  0178 26800 10$:	INCB	W^NET$GW_CTLCOUNT	; "OFF"

                                 04  017C 26900 20$:	RET				; "ON"

                                     017D 27000 

                                     017D 27100 

                                     017D 27200 ;++

                                     017D 27300 ;

                                     017D 27400 ; CHECK_NDB - SEE IF COUNTERS CAN BE ACCESSED

                                     017D 27500 ;

                                     017D 27600 ;--

                                     017D 27700 

                                     017D 27800 CHECK_NDB:

            50            06     D0  017D 27900 	MOVL	#PRV$V_DIAGNOSE,R0	; NEED DIAGNOSTIC PRIVILEGE FOR THIS ONE

                          FE7D'  30  0180 28000 	BSBW	NET$CTL_CHKPRV		; CHECK IT OUT

                          FE7A'  30  0183 28100 	BSBW	NET$CTL_NDBLINE		; GET THE NDB ADDRESS

                          08     12  0186 28200 	BNEQ	10$			; IF NEQ THERE IS ONE

       0000'CF       0000'8F     3C  0188 28300 	MOVZWL	#SS$_NOSUCHNODE,W^NET$GQ_USR_STAT ; SAY "UNH-UNH"

                                 04  018F 28400 	RET				; THAT IS ALL

                                     0190 28500 10$:

                                 05  0190 28600 	RSB				; DONE

                                     0191 28700 

                                     0191 28800 NET$GET_LIN_CTR::

                          EA     10  0191 28900 	BSBB	CHECK_NDB		; VALIDATE ACCESS

       0000'CF            59     D1  0193 29000 	CMPL	R9,W^NET$GL_NODLST	; IS IT ME (LINE NAME NULL)?

                          08     12  0198 29100 	BNEQ	15$			; IF NEQ NO

       0000'CF       0000'8F     B0  019A 29200 	MOVW	#SS$_NOTNETDEV,W^NET$GQ_USR_STAT ; THAT'S A NO-NO

                                 04  01A1 29300 	RET				; DONE

                                     01A2 29400 15$:

            50         14 A9     B0  01A2 29500 	MOVW	NDB$W_CHANNEL(R9),R0	; GET THE CHANNEL NO.

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   8

X01             PHYSICAL LINE FUNCTIONS                                                                                          (1)



                          9D     10  01A6 29600 	BSBB	GET_UCB			; GET THE UCB OF THE LINK DEVICE

                                     01A8 29700 ;

                                     01A8 29800 ; MOVE THE BYTE COUNTERS TO THE WORD BUFFER

                                     01A8 29900 ;

       00B4 C5            03     C1  01A8 30000 	ADDL3	#3,UCB$L_XM_BASAD(R5),R6 ; POINT TO THE COUNTERS

                          56         01AD       

            57       0000'CF     DE  01AE 30100 	MOVAL	W^NET$AW_STARTLCT,R7	; POINT TO THE COUNTER BUFFER

            58            00'    D0  01B3 30200 	MOVL	S^#NET$C_LINE_CTRS,R8	; GET NO. OF ITEMS

                                     01B6 30300 20$:

         3C A5            0B     E0  01B6 30400 	BBS	#XM$V_STS_ACTIVE,UCB$L_DEVDEPEND(R5),30$ ; IF BS ACTIVE

                          04         01BA       

                          87     B4  01BB 30500 	CLRW	(R7)+			; CLEAR THE COUNTER

                          03     11  01BD 30600 	BRB	40$			; LOOP

                                     01BF 30700 30$:

            87            86     9B  01BF 30800 	MOVZBW	(R6)+,(R7)+		; MOVE A COUNTER

                                     01C2 30900 40$:

            F1            58     F5  01C2 31000 	SOBGTR	R8,20$			; LOOP

                                     01C5 31100 

                                     01C5 31200 	ASSUME	NDB$W_XMTBLKS-NDB$W_RCVBLKS EQ 2

                                     01C5 31300 

            87       00B4 C9     D0  01C5 31400 	MOVL	NDB$W_RCVBLKS(R9),(R7)+	; STORE BLOCK COUNTERS

            56       00AC C9     7D  01CA 31500 	MOVQ	NDB$Q_ZEROTIME(R9),R6	; GET THE TIME

            58       0000'CF     DE  01CF 31600 	MOVAL	W^NET$AW_STARTLCT,R8	; GET THE STARTING ADDRESS

            59       0000'CF     DE  01D4 31700 	MOVAL	W^NET$AW_ENDLCT,R9	; GET THE ENDING ADDRESS

                          FE24'  31  01D9 31800 	BRW	NET$CTL_GET_CNT		; FINISH IN COMMON CODE

                                     01DC 31900 

                                     01DC 32000 NET$CLR_LIN_CTR::

                          9F     10  01DC 32100 	BSBB	CHECK_NDB		; CHECK IT OUT

                                     01DE 32200 	$GETTIM_S	NDB$Q_ZEROTIME(R9) ; RESET THE CURRENT TICK COUNT

                     00B4 C9     D4  01E9 32300 	CLRL	NDB$W_RCVBLKS(R9)	; RESET BLOCK COUNTERS

                                 04  01ED 32400 	RET				; DONE - MEANINGLESS OPERATION

                                     01EE 32500 

                                     01EE 32600 	.END

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page   9

SYMBOL TABLE                                                                                                                     (1)



$$T1           = 00000001            DYN$C_MTL      = 00000019            NDB$C_MSG_LOOPB= 00000008            

AQB$B_ACPTYPE    00000015            DYN$C_MVL      = 00000016            NDB$C_MSG_MAINT= 00000002            

AQB$B_CLASS      00000016            DYN$C_NDB      = 0000001C            NDB$C_MSG_NGINI= 00000004            

AQB$B_MNTCNT     0000000B            DYN$C_NET      = 00000017            NDB$C_MSG_OKINI= 00000005            

AQB$B_STATUS     00000014            DYN$C_PBH      = 00000020            NDB$C_MSG_SHUT = 00000006            

AQB$B_TYPE       0000000A            DYN$C_PCB      = 0000000C            NDB$C_MSG_START= 00000001            

AQB$C_LENGTH     00000018            DYN$C_PDB      = 00000021            NDB$C_OFF      = 00000001            

AQB$K_F11V1    = 00000001            DYN$C_PFL      = 00000023            NDB$C_ON       = 00000000            

AQB$K_F11V2    = 00000002            DYN$C_PIB      = 00000022            NDB$C_SHUT     = 00000002            

AQB$K_LENGTH     00000018            DYN$C_PQB      = 0000000D            NDB$K_LENGTH     000000BC            

AQB$K_MTA      = 00000003            DYN$C_PTR      = 00000025            NDB$L_LINE_NAME  00000004            

AQB$K_NET      = 00000004            DYN$C_RVT      = 0000000E            NDB$L_NEXT       00000000            

AQB$K_UNDEFINED= 00000000            DYN$C_SFT      = 00000024            NDB$M_CTL_LOOP = 00000008            

AQB$L_ACPPID     0000000C            DYN$C_SSB      = 0000001D            NDB$M_LOOPBACK = 00000001            

AQB$L_ACPQBL     00000004            DYN$C_TQE      = 0000000F            NDB$M_OFF      = 00000002            

AQB$L_ACPQFL     00000000            DYN$C_TYPAHD   = 00000014            NDB$M_SHUT     = 00000004            

AQB$L_LINK       00000010            DYN$C_UCB      = 00000010            NDB$Q_AST        0000000C            

AQB$M_CREATING = 00000008            DYN$C_VCB      = 00000011            NDB$Q_ZEROTIME   000000AC            

AQB$M_DEFCLASS = 00000002            DYN$C_WCB      = 00000012            NDB$T_NAME       0000001A            

AQB$M_DEFSYS   = 00000004            GBL...         = 00000000            NDB$T_SYSVER     0000002E            

AQB$M_UNIQUE   = 00000001            GET_UCB          00000145 R     04   NDB$V_CTL_LOOP = 00000003            

AQB$V_CREATING = 00000003            IOC$VERIFYCHAN   ********   X   04   NDB$V_LOOPBACK = 00000000            

AQB$V_DEFCLASS = 00000001            LIN$B_ADDRESS    00000006            NDB$V_OFF      = 00000001            

AQB$V_DEFSYS   = 00000002            LIN$B_CNTRL      00000004            NDB$V_SHUT     = 00000002            

AQB$V_UNIQUE   = 00000000            LIN$B_LINE       00000005            NDB$W_BLKSIZE    00000022            

AQB$W_SIZE       00000008            LIN$B_NODE       00000009            NDB$W_BUFSIZE    000000A8            

BIT...         = 00000018            LIN$B_NUMBUF     00000012            NDB$W_CHANNEL    00000014            

CCB$B_AMOD       00000009            LIN$C_SIZE       00000013            NDB$W_CHAR       000000AA            

CCB$B_STS        00000008            LIN$K_SIZE       00000013            NDB$W_HISBLKSIZ  000000B8            

CCB$C_LENGTH     00000010            LIN$L_NAME       00000000            NDB$W_HISNSPSIZ  000000BA            

CCB$K_LENGTH     00000010            LIN$M_HDX      = 00000004            NDB$W_MAXLNK     00000026            

CCB$L_DIRP       0000000C            LIN$M_LOOP     = 00000002            NDB$W_NODEADDR   00000018            

CCB$L_UCB        00000000            LIN$M_SLAVE    = 00000008            NDB$W_NSPSIZE    00000024            

CCB$L_WIND       00000004            LIN$T_NODE       0000000A            NDB$W_RCVBLKS    000000B4            

CCB$W_IOC        0000000A            LIN$V_HDX      = 00000002            NDB$W_SIZE       00000008            

CHECK_NDB        0000017D R     04   LIN$V_LOOP     = 00000001            NDB$W_XMTBLKS    000000B6            

DEV$V_MBX        ********   X   04   LIN$V_SLAVE    = 00000003            NET$ALONONPAGED  ********   X   04   

DEV$V_NET        ********   X   04   LIN$W_BUFSIZE    00000010            NET$AW_ENDLCT    ********   X   04   

DYN$C_ACB      = 00000002            LIN$W_CHAR       00000007            NET$AW_STARTLCT  ********   X   04   

DYN$C_ADP      = 00000001            LINE_DESC        00000000 R     03   NET$CLR_LIN_CTR  000001DC RG    04   

DYN$C_AQB      = 00000003            NDB$B_COMMVER    0000002B            NET$CTL_CHKPRV   ********   X   04   

DYN$C_BRDCST   = 0000001A            NDB$B_CONNTMO    0000004F            NET$CTL_GET_CNT  ********   X   04   

DYN$C_BUFIO    = 00000013            NDB$B_FUNC       00000021            NET$CTL_NDBLINE  ********   X   04   

DYN$C_CEB      = 00000004            NDB$B_NONPRVACC  00000050            NET$CTL_SET_OFF  ********   X   04   

DYN$C_CRB      = 00000005            NDB$B_NUMBUF     0000000B            NET$C_EV_NSPON   ********   X   04   

DYN$C_CXB      = 0000001B            NDB$B_PRVACC     0000007C            NET$C_LINE_CTRS  ********   X   04   

DYN$C_DDB      = 00000006            NDB$B_RTEVER     00000028            NET$C_MAXNODLTH  ********   X   04   

DYN$C_DPT      = 0000001E            NDB$B_STATE      00000016            NET$C_ST_OFF     ********   X   04   

DYN$C_FCB      = 00000007            NDB$B_STATUS     00000017            NET$C_ST_ON      ********   X   04   

DYN$C_FRK      = 00000008            NDB$B_TYPE       0000000A            NET$DEANONPAGED  ********   X   04   

DYN$C_GSD      = 00000015            NDB$C_CTL_LOOP = 00000005            NET$GET_LIN_CTR  00000191 RG    04   

DYN$C_IDB      = 00000009            NDB$C_LENGTH     000000BC            NET$GET_LIN_STA  0000014F RG    04   

DYN$C_IRP      = 0000000A            NDB$C_LOOP     = 00000003            NET$GL_NAME_LTH  ********   X   04   

DYN$C_JPB      = 0000001F            NDB$C_MAINT    = 00000004            NET$GL_NAME_PTR  ********   X   04   

DYN$C_KFH      = 00000026            NDB$C_MSG_DCHK = 00000009            NET$GL_NODLST    ********   X   04   

DYN$C_KFI      = 00000018            NDB$C_MSG_DOWN = 00000003            NET$GL_Q_HEAD    ********   X   04   

DYN$C_LOG      = 0000000B            NDB$C_MSG_DSRCH= 00000007            NET$GQ_DUMMYAST  ********   X   04   

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page  10

SYMBOL TABLE                                                                                                                     (1)



NET$GQ_USR_STAT  ********   X   04   UCB$B_SECTORS    0000003C            UCB$M_ERLOGIP  = 00000004            

NET$GW_CHANNEL   ********   X   04   UCB$B_SLAVE      00000074            UCB$M_INT      = 00000002            

NET$GW_CTLCOUNT  ********   X   04   UCB$B_SPR        00000075            UCB$M_INTTYPE  = 00000080            

NET$OPCOM        ********   X   04   UCB$B_STATE      00000052            UCB$M_JOB      = 00000001            

NET$SET_LIN_STA  00000000 RG    04   UCB$B_TRACKS     0000003D            UCB$M_MOUNTING = 00000200            

NET$TRN          ********   X   04   UCB$B_TYPE       0000000A            UCB$M_NOCNVRT  = 00000004            

PRV$V_ALLSPOOL = 00000004            UCB$B_VERTSZ     0000003F            UCB$M_NT_BFROVF= 00000004            

PRV$V_BUGCHK   = 00000017            UCB$C_LENGTH     00000074            UCB$M_NT_BREAK = 00000020            

PRV$V_CMEXEC   = 00000001            UCB$C_LOGLNK   = 00000001            UCB$M_NT_NAME  = 00000010            

PRV$V_CMKRNL   = 00000000            UCB$K_LENGTH     00000074            UCB$M_ONLINE   = 00000010            

PRV$V_DETACH   = 00000005            UCB$L_AMB        00000054            UCB$M_POWER    = 00000020            

PRV$V_DIAGNOSE = 00000006            UCB$L_ASTQBL     00000010            UCB$M_PRMMBX   = 00000001            

PRV$V_EXQUOTA  = 00000013            UCB$L_ASTQFL     0000000C            UCB$M_TIM      = 00000001            

PRV$V_GROUP    = 00000008            UCB$L_CPID       0000005C            UCB$M_TIMOUT   = 00000040            

PRV$V_GRPNAM   = 00000003            UCB$L_CRB        00000020            UCB$M_TT_NOTIF = 00000004            

PRV$V_LOG_IO   = 00000007            UCB$L_DDB        00000024            UCB$M_TT_TIMO  = 00000002            

PRV$V_MOUNT    = 00000011            UCB$L_DEVCHAR    00000034            UCB$M_UNLOAD   = 00001000            

PRV$V_NETMBX   = 00000014            UCB$L_DEVDEPEND  0000003C            UCB$M_VALID    = 00000800            

PRV$V_NOACNT   = 00000009            UCB$L_DPC        00000080            UCB$S_LNKPRI   = 00000002            

PRV$V_OPER     = 00000012            UCB$L_DUETIM     0000005C            UCB$S_LTYPE    = 00000002            

PRV$V_PHY_IO   = 00000016            UCB$L_DX_BFPNT   0000009C            UCB$T_PARTNER    0000000C            

PRV$V_PRMCEB   = 0000000A            UCB$L_DX_BUF     00000098            UCB$V_BACKP    = 00000005            

PRV$V_PRMGBL   = 00000018            UCB$L_DX_RXDB    000000A0            UCB$V_BSY      = 00000008            

PRV$V_PRMMBX   = 0000000B            UCB$L_EMB        00000078            UCB$V_CANCEL   = 00000003            

PRV$V_PSWAPM   = 0000000C            UCB$L_FIRST      00000014            UCB$V_DEADMO   = 0000000A            

PRV$V_SETPRI   = 0000000D            UCB$L_FPC        0000000C            UCB$V_DELMBX   = 00000001            

PRV$V_SETPRV   = 0000000E            UCB$L_FQBL       00000004            UCB$V_DIAGBUF  = 00000001            

PRV$V_SYSGBL   = 00000019            UCB$L_FQFL       00000000            UCB$V_DX_WRITE = 00000003            

PRV$V_SYSNAM   = 00000002            UCB$L_FR3        00000010            UCB$V_ECC      = 00000000            

PRV$V_TMPMBX   = 0000000F            UCB$L_FR4        00000014            UCB$V_ERLOGIP  = 00000002            

PRV$V_VOLPRO   = 00000015            UCB$L_IOQBL      00000044            UCB$V_INT      = 00000001            

PRV$V_WORLD    = 00000010            UCB$L_IOQFL      00000040            UCB$V_INTTYPE  = 00000007            

SS$_BADPARAM     ********   X   04   UCB$L_IRP        0000004C            UCB$V_JOB      = 00000000            

SS$_ILLCNTRFUNC  ********   X   04   UCB$L_LINK       0000002C            UCB$V_LNKPRI   = 00000006            

SS$_INSFMEM      ********   X   04   UCB$L_LOGADR     00000064            UCB$V_LTYPE    = 00000000            

SS$_NOSUCHNODE   ********   X   04   UCB$L_MAXBLOCK   00000084            UCB$V_MOUNTING = 00000009            

SS$_NOTNETDEV    ********   X   04   UCB$L_MEDIA      0000008C            UCB$V_MSGACK   = 00000004            

SYS$ASSIGN       ********   X   04   UCB$L_NT_DATSSB  00000074            UCB$V_MSGFLO   = 00000003            

SYS$DASSGN       ********   X   04   UCB$L_NT_INTSSB  00000078            UCB$V_NOCNVRT  = 00000002            

SYS$GETTIM       ********   X   04   UCB$L_OPCNT      00000060            UCB$V_NT_BFROVF= 00000002            

UCB$B_AMOD       00000053            UCB$L_OWNUIC     0000001C            UCB$V_NT_BREAK = 00000005            

UCB$B_CEX        00000077            UCB$L_PID        00000028            UCB$V_NT_NAME  = 00000004            

UCB$B_CM1        0000004A            UCB$L_RQBL       00000004            UCB$V_ONLINE   = 00000004            

UCB$B_CM2        0000004B            UCB$L_RQFL       00000000            UCB$V_POWER    = 00000005            

UCB$B_DEVCLASS   00000038            UCB$L_SVAPTE     00000068            UCB$V_PRMMBX   = 00000000            

UCB$B_DEVTYPE    00000039            UCB$L_SVPN       00000064            UCB$V_SEGFLO   = 00000002            

UCB$B_DIPL       00000052            UCB$L_TTCHAR     0000003C            UCB$V_TIM      = 00000000            

UCB$B_DX_SCTCNT  000000A6            UCB$L_VCB        00000030            UCB$V_TIMOUT   = 00000006            

UCB$B_ERTCNT     00000070            UCB$L_XM_BASAD = 000000B4            UCB$V_TT_NOTIF = 00000002            

UCB$B_ERTMAX     00000071            UCB$M_BACKP    = 00000020            UCB$V_TT_TIMO  = 00000001            

UCB$B_ESCAPE     0000004B            UCB$M_BSY      = 00000100            UCB$V_UNLOAD   = 0000000C            

UCB$B_FEX        00000076            UCB$M_CANCEL   = 00000008            UCB$V_VALID    = 0000000B            

UCB$B_FIPL       0000000B            UCB$M_DEADMO   = 00000400            UCB$W_BCNT       0000006E            

UCB$B_LOCSRV     0000003C            UCB$M_DELMBX   = 00000002            UCB$W_BCR        00000096            

UCB$B_OFFNDX     00000094            UCB$M_DIAGBUF  = 00000002            UCB$W_BOFF       0000006C            

UCB$B_OFFRTC     00000095            UCB$M_DX_WRITE = 00000008            UCB$W_BUFQUO     00000018            

UCB$B_REMSRV     0000003D            UCB$M_ECC      = 00000001            UCB$W_BYTESTOGO  0000003E            

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page  11

SYMBOL TABLE                                                                                                                     (1)



UCB$W_CHARGE     0000004A            

UCB$W_CYLINDERS  0000003E            

UCB$W_DA         0000008C            

UCB$W_DC         0000008E            

UCB$W_DEVBUFSIZ  0000003A            

UCB$W_DEVSTS     0000005A            

UCB$W_DIRSEQ     00000088            

UCB$W_DSTADDR    00000018            

UCB$W_DX_BCR     000000A4            

UCB$W_EC1        00000090            

UCB$W_EC2        00000092            

UCB$W_ERRCNT     00000072            

UCB$W_FUNC       0000007E            

UCB$W_MB_SEED    FFFFFFFC            

UCB$W_MSGCNT     00000016            

UCB$W_MSGMAX     00000014            

UCB$W_NT_CHAN    0000007C            

UCB$W_OFFSET     0000008A            

UCB$W_REFC       00000050            

UCB$W_SIZE       00000008            

UCB$W_SRCADDR    0000001A            

UCB$W_STS        00000058            

UCB$W_UNIT       00000048            

UCB$W_VPROT      0000001A            

XM$M_CHR_HDPLX = 00000004            

XM$M_CHR_LOOPB = 00000002            

XM$M_CHR_MBX   = 00000010            

XM$M_CHR_MOP   = 00000001            

XM$M_CHR_SLAVE = 00000008            

XM$M_ERR_FATAL = 00010000            

XM$M_ERR_LOST  = 00100000            

XM$M_ERR_MAINT = 00080000            

XM$M_ERR_START = 00800000            

XM$M_STS_ACTIVE= 00000800            

XM$M_STS_DCHK  = 00000100            

XM$M_STS_DISC  = 00004000            

XM$M_STS_ORUN  = 00000400            

XM$M_STS_TIMO  = 00000200            

XM$V_CHR_HDPLX = 00000002            

XM$V_CHR_LOOPB = 00000001            

XM$V_CHR_MBX   = 00000004            

XM$V_CHR_MOP   = 00000000            

XM$V_CHR_SLAVE = 00000003            

XM$V_ERR_FATAL = 00000010            

XM$V_ERR_LOST  = 00000014            

XM$V_ERR_MAINT = 00000013            

XM$V_ERR_START = 00000017            

XM$V_STS_ACTIVE= 0000000B            

XM$V_STS_DCHK  = 00000008            

XM$V_STS_DISC  = 0000000E            

XM$V_STS_ORUN  = 0000000A            

XM$V_STS_TIMO  = 00000009            





PROGRAM SECTION SYNOPSIS



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

NETCTLLIN       - PROCESS LINE CONTROL QIO'S                     22-AUG-1978 00:51:02   VAX-11 MACRO X0.3-11               Page  12

PROGRAM SECTION SYNOPSIS                                                                                                         (1)



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

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

NET_IMPURE       00000008      03     NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD    WRT BYTE  

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





THERE WERE NO ERRORS OR WARNINGS.

14132. BYTES LEFT IN FREE MEMORY POOL.

2196. BYTES OF RECLAIMED MEMORY.

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

74 MLB DIR RDS - 652 GETS TO DEFINE 24 MACROS. 45 INTER. FILE WRITES. 

