NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      34  HISTORY

   (1)      42  DECLARATIONS

   (1)     106  FUNCTION DECISION TABLE

   (1)     127  QIO PROCESSING INITIALIZATION

   (1)     186  READ VIRTUAL BLOCK PROCESSING

   (1)     210  PROCESS TRANSMIT QIO REQUEST

   (1)     396  SET MSG LTH IN CXB

   (1)     419  ACCESS AND CONTROL QIO PROCESSING

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   1

V06                                                                                                                              (1)



                                     0000     1 

                                     0000     2 	.TITLE	NETDRIVER - PROCESS NETWORK I/O REQUESTS

                                     0000     3 	.IDENT	/V06/

                                     0000     4 

                                     0000     5 ;

                                     0000     6 ; COPYRIGHT (C) 1978

                                     0000     7 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000     8 ;

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

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

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

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

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

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

                                     0000    15 ; REMAIN IN DEC.

                                     0000    16 ;

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

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

                                     0000    19 ; CORPORATION.

                                     0000    20 ;

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

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

                                     0000    23 

                                     0000    24 ;++

                                     0000    25 ; FACILITY:	EXECUTIVE

                                     0000    26 ;

                                     0000    27 ; ABSTRACT:

                                     0000    28 ;	THIS MODULE PROCESSES NETWORK USER I/O REQUESTS.

                                     0000    29 ;

                                     0000    30 ; ENVIRONMENT:

                                     0000    31 ;	MODE = KERNEL

                                     0000    32 ;--

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   2

V06             HISTORY                                                                                                          (1)



                                     0000    34 	.SBTTL	HISTORY

                                     0000    35 ; AUTHOR:	SCOTT G. DAVIS, CREATION DATE: 06-SEP-77

                                     0000    36 ;

                                     0000    37 ; MODIFIED BY:

                                     0000    38 ;

                                     0000    39 ;	, : VERSION

                                     0000    40 ; 01	- 

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   3

V06             DECLARATIONS                                                                                                     (1)



                                     0000    42 	.SBTTL	DECLARATIONS

                                     0000    43 ;

                                     0000    44 ; INCLUDE FILES:

                                     0000    45 ;

                                     0000    46 	$CCBDEF

                                     0000    47 	$CXBDEF

                                     0000    48 	$DYNDEF

                                     0000    49 	$IODEF

                                     0000    50 	$IPLDEF

                                     0000    51 	$IRPDEF

                                     0000    52 	$NETDEF

                                     0000    53 	$PCBDEF

                                     0000    54 	$PHDDEF

                                     0000    55 	$PRDEF

                                     0000    56 	$UCBDEF

                                     0000    57 	$VCBDEF

                                     0000    58 

                                     0000    59 ;

                                     0000    60 ; MACROS:

                                     0000    61 ;

                                     0000    62 

                                     0000    63 ;

                                     0000    64 ; EQUATED SYMBOLS:

                                     0000    65 ;

                                     0000    66 	$EQULST	NET$C_,GLOBAL,,,<-

                                     0000    67 		<MAXINT,16>,-		; MAX LTH OF AN INTERRUPT MSG

                                     0000    68 >

                                     0000    69 ;

                                     0000    70 ; ARGUMENT LIST OFFSETS FOR QIO 

                                     0000    71 ;

                           00000000  0000    72 P1	= 0				; BUFFER ADDRESS

                           00000004  0000    73 P2	= 4				; BUFFER LENGTH

                                     0000    74 

                                     0000    75 ;

                                     0000    76 ; OWN STORAGE:

                                     0000    77 ;

                                     0000    78 ; DRIVER PROLOGUE TABLE

                                     0000    79 ;

                                     0000    80  

                                 00000000    81 	.PSECT	$$$105_PROLOGUE

                                     0000    82 NET$DPT::				;

                                     0000    83 	DPTAB	-			; DEFINE DRIVER PROLOGUE TABLE

                                     0000    84 		END=NET_END,-		; END OF DRIVER

                                     0000    85 		ADAPTER=UBA,-		; ADAPTER TYPE

                                     0000    86 		UCBSIZE=128,-		; UCB SIZE

                                     0000    87 		NAME=NETDRIVER		; DRIVER NAME

                                     0020    88 	DPT_STORE INIT			; CONTROL BLOCK INIT VALUES

                                     0020    89 	DPT_STORE REINIT		; CONTROL BLOCK RE-INIT VALUES

                                     0020    90 	DPT_STORE END			;

                                     0000    91  

                                     0000    92 ;

                                     0000    93 ; DRIVER DISPATCH TABLE

                                     0000    94 ;

                                 00000000    95 	.PSECT	$$$115_DRIVER,LONG

                                     0000    96  

                                     0000    97 	DDTAB	NET,-			; DRIVER DISPATCH TABLE

                                     0000    98 		0,-			; START I/O OPERATION

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   4

V06             DECLARATIONS                                                                                                     (1)



                                     0000    99 		0,-			; UNSOLICITED INTERRUPT

                                     0000   100 		FUNCTABLE,-		; FUNCTION DECISION TABLE ADDRESS

                                     0000   101 		0,-			; CANCEL I/O ENTRY POINT

                                     0000   102 		0,-			; ADDRESS OF REGISTER DUMP ROUTINE

                                     0000   103 		0,-			; SIZE OF DIAGNOSTIC BUFFER

                                     0000   104 		0			; SIZE OF ERROR LOG BUFFER

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   5

V06             FUNCTION DECISION TABLE                                                                                          (1)



                                     0018   106 	.SBTTL	FUNCTION DECISION TABLE

                                     0018   107  

                                     0018   108 FUNCTABLE:				; FUNCTION DECISION TABLE

                                     0018   109 	FUNCTAB	,-			; LEGAL FUNCTIONS

                                     0018   110 		<READVBLK,-		; READ VIRTUAL BLOCK

                                     0018   111 		 WRITEVBLK,-		; WRITE VIRTUAL BLOCK

                                     0018   112 		 ACCESS,-		; ACCESS FILE AND/OR FIND DIRECTORY ENTRY

                                     0018   113 		 ACPCONTROL,-		; ACP CONTROL FUNCTION

                                     0018   114 		 DEACCESS>		; DEACCESS FILE

                                     0020   115 	FUNCTAB	,-			; BUFFERED I/O FUNCTIONS

                                     0020   116 		<ACCESS,-		; ACCESS FILE AND/OR FIND DIRECTORY ENTRY

                                     0020   117 		 READVBLK,-		; READ VIRTUAL

                                     0020   118 		 WRITEVBLK,-		; WRITE VIRTUAL

                                     0020   119 		 ACPCONTROL,-		; ACP CONTROL FUNCTION

                                     0020   120 		 DEACCESS>		; DEACCESS FILE

                                     0028   121 	FUNCTAB	RCV_QIO,<READLBLK>	; READ FUNCTION *** - WAS CONVERTED TO LOGICAL

                                     0034   122 	FUNCTAB	XMT_QIO,<WRITELBLK>	; WRITE FUNCTION *** - WAS CONVERTED TO LOGICAL

                                     0040   123 	FUNCTAB	NET_ACCESS,<ACCESS,CREATE> ; ACCESS AND CREATE FILE OR DIRECTORY

                                     004C   124 	FUNCTAB	+ACP$DEACCESS,<DEACCESS>; DEACCESS FILE

                                     0058   125 	FUNCTAB	NET_CONTROL,<ACPCONTROL> ; ACP CONTROL FUNCTIONS

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   6

V06             QIO PROCESSING INITIALIZATION                                                                                    (1)



                                     0064   127 	.SBTTL	QIO PROCESSING INITIALIZATION

                                     0064   128  

                                 00000000   129 	.PSECT	Y$EXEPAGED

                                     0000   130 ;++

                                     0000   131 ; FUNCTIONAL DESCRIPTION:

                                     0000   132 ;

                                     0000   133 ; QIO_INIT - PICK UP BUFFER DESCRIPTION AND VERIFY ACCESS

                                     0000   134 ;

                                     0000   135 ; CALLING SEQUENCE:

                                     0000   136 ;

                                     0000   137 ;	BSB	QIO_INIT

                                     0000   138 ;

                                     0000   139 ; INPUT PARAMETERS:

                                     0000   140 ;

                                     0000   141 ;	R3 = I/O PACKET ADDRESS

                                     0000   142 ;	R4 = PCB ADDRESS

                                     0000   143 ;	R5 = UCB ADDRESS

                                     0000   144 ;	R6 = CCB ADDRESS

                                     0000   145 ;	R7 = FUNCTION CODE

                                     0000   146 ;	AP = ADDRESS OF THE FIRST OPERATION SPECIFIC QIO PARAMETER

                                     0000   147 ;	R8 - ADDRESS OF BUFFER ACCESS CHECK ROUTINE

                                     0000   148 ;

                                     0000   149 ; OUTPUT PARAMETERS:

                                     0000   150 ;

                                     0000   151 ;	R0 - BUFFER ADDRESS

                                     0000   152 ;	R1 - BUFFER LENGTH

                                     0000   153 ;

                                     0000   154 ; COMPLETION CODES:

                                     0000   155 ;

                                     0000   156 ;	SS$_ABORT - LOGICAL LINK MARKED FOR BREAK (DEACCESS PENDING)

                                     0000   157 ;	SS$_BADPARAM - TRANSFER SIZE OF 0 SPECIFIED

                                     0000   158 ;	SS$_FILNOTACC - NO LOGICAL LINK

                                     0000   159 ;

                                     0000   160 ;--

                                     0000   161 

                                     0000   162 QIO_INIT:

            50       0000'8F     3C  0000   163 	MOVZWL	#SS$_FILNOTACC,R0	; ASSUME NOT ACCESSED

                       04 A6     D5  0005   164 	TSTL	CCB$L_WIND(R6)		; CHECK THE WINDOW ADDRESS

                          25     18  0008   165 	BGEQ	ABORT_IO		; IF GEQ NO GOOD

            50            00'    3C  000A   166 	MOVZWL	S^#SS$_ABORT,R0		; ASSUME LINK MARKED FOR BREAK

         5A A5            05     E0  000D   167 	BBS	#UCB$V_NT_BREAK,UCB$W_DEVSTS(R5),ABORT_IO ; IF BS CAN'T DO I/O

                          1D         0011       

            50            00'    3C  0012   168 	MOVZWL	S^#SS$_BADPARAM,R0	; ASSUME ERROR

            51         04 AC     3C  0015   169 	MOVZWL	P2(AP),R1		; GET BUFFER COUNT

                          14     13  0019   170 	BEQL	ABORT_IO		; IF EQL NOT ALLOWED

            50            6C     D0  001B   171 	MOVL	P1(AP),R0		; GET USER BUFFER ADDRESS

         34 A3            50     7D  001E   172 	MOVQ	R0,IRP$L_MEDIA(R3)	; SAVE BUFFER ADDR AND COUNT

                          0B     BB  0022   173 	PUSHR	#^M<R0,R1,R3>		; SAVE SOME REGS

                          68     16  0024   174 	JSB	(R8)			; CALL THE ACCESS CHECK ROUTINE

                 00000000'GF     16  0026   175 	JSB	G^EXE$BUFQUOPRC		; SEE IF REQUEST IS WITHIN PROCESS'S QUOTA

            08            50     E8  002C   176 	BLBS	R0,QIO_INIT_END		; IF LBS OK

                                     002F   177 ABORT_IO:

                          51     D4  002F   178 	CLRL	R1			; CLEAR 2ND I/O STATUS LONGWORD

                 00000000'GF     17  0031   179 	JMP	G^EXE$ABORTIO		; KILL IT RIGHT HERE

                                     0037   180 QIO_INIT_END:

                          0B     BA  0037   181 	POPR	#^M<R0,R1,R3>		; RESTORE REGS

         42 A4            51     A2  0039   182 	SUBW	R1,PCB$W_BYTCNT(R4)	;ADJUST BUFFERED I/O QUOTA

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   7

V06             QIO PROCESSING INITIALIZATION                                                                                    (1)



         30 A3            51     B0  003D   183 	MOVW	R1,IRP$W_BOFF(R3)	;SET NUMBER OF BYTES CHARGED TO QUOTA

                                 05  0041   184 	RSB				; DONE

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   8

V06             READ VIRTUAL BLOCK PROCESSING                                                                                    (1)



                                     0042   186 	.SBTTL	READ VIRTUAL BLOCK PROCESSING

                                     0042   187 ;++

                                     0042   188 ; FUNCTIONAL DESCRIPTION:

                                     0042   189 ;

                                     0042   190 ; RCV_QIO - ROUTINE TO PROCESS RECEIVE REQUESTS (READVBLK) BY USER.

                                     0042   191 ;		PACKET IS VALIDATED AND QUEUED TO ACP

                                     0042   192 ;

                                     0042   193 ; INPUT PARAMETERS:

                                     0042   194 ;

                                     0042   195 ;	R3 = I/O PACKET ADDRESS

                                     0042   196 ;	R4 = PCB ADDRESS

                                     0042   197 ;	R5 = UCB ADDRESS

                                     0042   198 ;	R6 = CCB ADDRESS

                                     0042   199 ;	R7 = FUNCTION CODE

                                     0042   200 ;	AP = ADDRESS OF THE FIRST OPERATION SPECIFIC QIO PARAMETER

                                     0042   201 ;

                                     0042   202 ;--

                                     0042   203 

                                     0042   204 

                                     0042   205 RCV_QIO:

            58   00000000'GF     9E  0042   206 	MOVAB	G^EXE$READCHK,R8	; SET ACCESS CHECK ROUTINE ADDRESS

                          B5     10  0049   207 	BSBB	QIO_INIT		; INIT PROCESSING

                 00000064'EF     17  004B   208 	JMP	GO_TO_ACP		; QUEUE FUNCTION FOR ACP

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page   9

V06             PROCESS TRANSMIT QIO REQUEST                                                                                     (1)



                                     0051   210 	.SBTTL	PROCESS TRANSMIT QIO REQUEST

                                     0051   211 ;++

                                     0051   212 ; FUNCTIONAL DESCRIPTION:

                                     0051   213 ;

                                     0051   214 ; XMT_QIO - SERVICE USER TRANSMIT QIO'S.

                                     0051   215 ;	INTERRUPT MESSAGES ARE CHECKED FOR MAX OF 16 BYTES.

                                     0051   216 ;	OTHER MESSAGES ARE SEGMENTED FOR TRANSMISSION.

                                     0051   217 ;

                                     0051   218 ; INPUT PARAMETERS:

                                     0051   219 ;

                                     0051   220 ;	R3 = I/O PACKET ADDRESS

                                     0051   221 ;	R4 = PCB ADDRESS

                                     0051   222 ;	R5 = UCB ADDRESS

                                     0051   223 ;	R6 = CCB ADDRESS

                                     0051   224 ;	R7 = FUNCTION CODE

                                     0051   225 ;	AP = ADDRESS OF THE FIRST OPERATION SPECIFIC QIO PARAMETER

                                     0051   226 ;

                                     0051   227 ; COMPLETION CODES:

                                     0051   228 ;

                                     0051   229 ;	SS$_INSFMEM - COULDN'T ALLOCATE BUFFER

                                     0051   230 ;	SS$_TOOMUCHDATA - INTERRUPT MESSAGE TOO LONG

                                     0051   231 ;

                                     0051   232 ; SIDE EFFECTS:

                                     0051   233 ;

                                     0051   234 ;	SEGMENTED OR INTERRUPT MESSAGE QUEUED FOR PARTNER.

                                     0051   235 ;

                                     0051   236 ;--

                                     0051   237 

                                     0051   238 	.ENABL	LSB

                                     0051   239 

                                     0051   240 XMT_QIO:

            58   00000000'GF     9E  0051   241 	MOVAB	G^EXE$WRITECHK,R8	; SET ACCESS CHECK ROUTINE ADDRESS

                          A6     10  0058   242 	BSBB	QIO_INIT		; INIT PROCESSING

            5B            50     D0  005A   243 	MOVL	R0,R11			; SET UP USER VA FOR SEGMENTATION

                       2C A3     D4  005D   244 	CLRL	IRP$L_SVAPTE(R3)	; INIT PTR TO XMT BFR CHAIN

         4C A5            53     D0  0060   245 	MOVL	R3,UCB$L_IRP(R5)	; HANG ON TO THE IRP ADDRESS

            57         1C A3     9E  0064   246 	MOVAB	IRP$L_SVAPTE-CXB$L_LINK(R3),R7 ; SEED THE CHAINING

         20 A3            06     E1  0068   247 	BBC	S^#IO$V_INTERRUPT,IRP$W_FUNC(R3),20$ ; IF BC NOT INTERRUPT

                          14         006C       

                                     006D   248 ;

                                     006D   249 ; PROCESS A USER INTERRUPT MESSAGE

                                     006D   250 ;

            50       0000'8F     3C  006D   251 	MOVZWL	#SS$_TOOMUCHDATA,R0	; ASSUME USER'S MSG IS TOO BIG

            51            10     B1  0072   252 	CMPW	#NET$C_MAXINT,R1	; CHECK MAX LTH OF AN INTMSG

                          B8     1F  0075   253 	BLSSU	ABORT_IO		; IF LSSU NG

            58            51     D0  0077   254 	MOVL	R1,R8			; NO. OF BYTES IN MSG

                          35     10  007A   255 	BSBB	SETUP_SEGMENT		; SETUP A DATA SEGMENT

            59            30     90  007C   256 	MOVB	#NET$M_INTMSG!NET$M_INTLS,R9 ; INTERRUPT MESSAGE

                          26     11  007F   257 	BRB	50$			; QUEUE FUNCTION FOR ACP

                                     0081   258 

                                     0081   259 

                                     0081   260 ;

                                     0081   261 ; PROCESS A USER DATA MESSAGE - I SEGMENT IT FOR HIM

                                     0081   262 ;

                                     0081   263 20$:

            58         3A A5     3C  0081   264 	MOVZWL	UCB$W_DEVBUFSIZ(R5),R8	; GET THE MAX SIZE OF A SEGMENT

            59            20     90  0085   265 	MOVB	#NET$M_BOM,R9		; MARK FIRST SEG AS BOM

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  10

V06             PROCESS TRANSMIT QIO REQUEST                                                                                     (1)



                                     0088   266 ;

                                     0088   267 ; DETERMINE THE NUMBER OF SEGMENTS AND THE SIZE OF THE LAST ONE

                                     0088   268 ;

                          52     D4  0088   269 	CLRL	R2			; RESET HIGH ORDER DIVIDEND

            51            58     7B  008A   270 	EDIV	R8,R1,R10,-(SP)		; DO THE DIVISION - LTH OF FINAL SEG TO STACK

            7E            5A         008D       

                          0B     13  008F   271 	BEQL	40$			; IF EQL ONLY ONE SEGMENT

                                     0091   272 

                                     0091   273 ;

                                     0091   274 ; MAIN SEGMENTATION LOOP

                                     0091   275 ;

                                     0091   276 30$:

                          1E     10  0091   277 	BSBB	SETUP_SEGMENT		; SET UP DATA SEGMENT

         1A A6            59     88  0093   278 	BISB	R9,CXB$C_NSPSTART(R6)	; SET THE SUBTYP BIT

                          59     D4  0097   279 	CLRL	R9			; RESET FOR SUBSEQUENT SEGMENTS

            F5            5A     F5  0099   280 	SOBGTR	R10,30$			; LOOP

                                     009C   281 ;

                                     009C   282 ; PROCESS FINAL SEGMENT OF MESSAGE

                                     009C   283 ;

                                     009C   284 40$:

            59         40 8F     88  009C   285 	BISB	#NET$M_EOM,R9		; SET EOM BIT

                          58   8ED0  00A0   286 	POPL	R8			; SET LTH OF FINAL SEGMENT

                          02     13  00A3   287 	BEQL	50$			; IF EQL NOTHING THERE

                          0A     10  00A5   288 	BSBB	SETUP_SEGMENT		; SET UP DATA SEGMENT

                                     00A7   289 50$:

         1A A6            59     88  00A7   290 	BISB	R9,CXB$C_NSPSTART(R6)	; SET THE EOM BIT

                 00000064'EF     17  00AB   291 	JMP	GO_TO_ACP		; ENTER ACP

                                     00B1   292  

                                 00000064   293 	.PSECT	$$$115_DRIVER,LONG

                                     0064   294 

                                     0064   295 GO_TO_ACP:

         2A A3            28     A8  0064   296 	BISW	#<IRP$M_CHAINED!IRP$M_COMPLX>,IRP$W_STS(R3) ; MARK AS COMPLEX CHAINED BFR

            50         30 A5     D0  0068   297 	MOVL	UCB$L_VCB(R5),R0	; GET THE VCB ADDRESS

                                     006C   298 	SETIPL	#IPL$_SYNCH

                       0C A0     B6  006F   299 	INCW	VCB$W_TRANS(R0)		; BUMP THE TRANSACTION COUNT

                 00000000'GF     17  0072   300 	JMP	G^EXE$QIOACPPKT		; QUEUE THE PACKET FOR THE ACP

                                     0078   301 

                                 000000B1   302 	.PSECT	Y$EXEPAGED

                                     00B1   303 	.DSABL	LSB

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  11

V06             PROCESS TRANSMIT QIO REQUEST                                                                                     (1)



                                     00B1   305 ;

                                     00B1   306 ; SETUP_SEGMENT - ALLOCATE A DATA SEGMENT AND MOVE IN THE DATA

                                     00B1   307 ;

                                     00B1   308 ; INPUTS:

                                     00B1   309 ;		R5 - UCB ADDRESS

                                     00B1   310 ;		R7 - BASE ADDRESS FOR BUFFER CHAINING

                                     00B1   311 ;		R8 - NO. OF BYTES TO MOVE

                                     00B1   312 ;		R11 - CURRENT ADDRESS OF USER DATA

                                     00B1   313 ;

                                     00B1   314 ; OUTPUTS:	R6 - BASE OF BUFFERED I/O BLOCK ALLOCATED AND FILLED IN

                                     00B1   315 ;

                                     00B1   316 

                                     00B1   317 SETUP_SEGMENT:

                          38     BB  00B1   318 	PUSHR	#^M<R3,R4,R5>		; SAVE REGS

                                     00B3   319 ;

                                     00B3   320 ; ALLOCATE A CHAINED COMPLEX BUFFER

                                     00B3   321 ;

            58            23     C1  00B3   322 	ADDL3	#<NET$C_NSPOVH+CXB$C_LENGTH>,R8,R1 ; ACCOUNT FOR OVERHEAD

                          51         00B6       

                          00     DD  00B7   323 	PUSHL	#0			; ASSUME NOT LOCAL CONNECT

                 00000000'GF     16  00B9   324 	JSB	G^EXE$ALLOCBUF		; ALLOCATE A BUFFER

            1D            50     E9  00BF   325 	BLBC	R0,10$			; IF BC ALLOCATION FAILURE

            56            52     D0  00C2   326 	MOVL	R2,R6			; COPY THE BASE ADDRESS

                       7C A5     B5  00C5   327 	TSTW	UCB$W_NT_CHAN(R5)	; LOCAL CONNECT?

                          3D     12  00C8   328 	BNEQ	50$			; IF NEQ NO

                 00000000'GF     16  00CA   329 	JSB	G^EXE$ALLOCBUF		; ALLOCATE

            6E            52     D0  00D0   330 	MOVL	R2,(SP)			; BUFFER ADDRESS TO STACK

            31            50     E8  00D3   331 	BLBS	R0,50$			; IF BS ALLOCATION OK

            50            56     D0  00D6   332 	MOVL	R6,R0			; ALLOCATION OF RCV BFR FAILED

                 00000000'GF     16  00D9   333 	JSB	G^EXE$DEANONPAGED	; DEALLOCATE THE XMT BUFFER

                                     00DF   334 ;

                                     00DF   335 ; ALLOCATION FAILED - DEALLOCATE ALL BUFFERS AND RETURN ERROR TO USER

                                     00DF   336 ;

                                     00DF   337 10$:

            53         4C A5     D0  00DF   338 	MOVL	UCB$L_IRP(R5),R3	; GET THE IRP ADDRESS

            56         2C A3     D0  00E3   339 	MOVL	IRP$L_SVAPTE(R3),R6	; GET ADDRESS OF FIRST BUFFER

                                     00E7   340 20$:

            50            56     D0  00E7   341 	MOVL	R6,R0			; COPY BUFFER ADDRESS

                          0C     13  00EA   342 	BEQL	30$			; IF EQL DONE

            56         10 A0     D0  00EC   343 	MOVL	CXB$L_LINK(R0),R6	; SAVE ADDRESS OF NEXT BUFFER

                 00000000'GF     16  00F0   344 	JSB	G^EXE$DEANONPAGED	; DEALLOCATE THE BUFFER

                          EF     11  00F6   345 	BRB	20$			; LOOP

                                     00F8   346 30$:

            53         4C A5     D0  00F8   347 	MOVL	UCB$L_IRP(R5),R3	; GET THE IRP ADDRESS

                       2C A3     D4  00FC   348 	CLRL	IRP$L_SVAPTE(R3)	; AVOID DOUBLE DEALLOCATION

            50       0000'8F     3C  00FF   349 	MOVZWL	#SS$_INSFMEM,R0		; SET ERROR CODE

                          FF28   31  0104   350 	BRW	ABORT_IO		; ABORT THE I/O

                                     0107   351 50$:

                                     0107   352 ;

                                     0107   353 ; SET UP THE CXB HEADER AND NSP OVERHEAD

                                     0107   354 ;

            53         0A A6     DE  0107   355 	MOVAL	CXB$B_TYPE(R6),R3	; SET PTR FOR FILLING IN

            83            1B     90  010B   356 	MOVB	#DYN$C_CXB,(R3)+	; SET THE BLOCK TYPE

                                     010E   357 

                                     010E   358 	ASSUME	NET$C_MSGFLG EQ 0

                                     010E   359 	ASSUME	NET$C_DATAM EQ 0

                                     010E   360 

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  12

V06             PROCESS TRANSMIT QIO REQUEST                                                                                     (1)



                                     010E   361 ;

                                     010E   362 ; THE SEQUENCE:

                                     010E   363 ;

                                     010E   364 ;	MOVB	#CXB$C_DDCDAT,(R3)+	; SET BLOCK TYPE TO "DATA OUT"

                                     010E   365 ;	CLRQ	(R3)+			; RESET MSG LTH, OFFSET, AND BFR LINK

                                     010E   366 ;	CLRL	(R3)+			; LEAVE ROOM FOR THE SSB ADDRESS

                                     010E   367 ;	CLRW	(R3)+			; LEAVE ROOM FOR ACKNUM, MAYBE

                                     010E   368 ;	CLRB	(R3)+			; MSGID BYTE

                                     010E   369 ;

                                     010E   370 ; IS REPLACED BY THE FOLLOWING 2 INSTRUCTIONS:

                                     010E   371 ;

            83            02     7D  010E   372 	MOVQ	#CXB$C_DDCDAT,(R3)+	; INIT BLOCK TYPE AND CLEAR SOME BYTES

                          83     7C  0111   373 	CLRQ	(R3)+			; CLEAR SOME MORE BYTES

                                     0113   374 

            83         18 A5     D0  0113   375 	MOVL	UCB$W_DSTADDR(R5),(R3)+	; HIS LINK ADDRESS AND MINE

                          83     B4  0117   376 	CLRW	(R3)+			; LEAVE ROOM FOR SEGNUM

                                     0119   377 ;

                                     0119   378 ; MOVE IN THE DATA

                                     0119   379 ;

            6B            58     28  0119   380 	MOVC3	R8,(R11),(R3)		; DO IT

                          63         011C       

            5B            51     D0  011D   381 	MOVL	R1,R11			; UPDATE BUFFER POINTER

                          17     10  0120   382 	BSBB	NET$SET_LENGTH		; COMPUTE THE LENGTH OF THE DATA

                                     0122   383 ;

                                     0122   384 ; LINK BUFFER INTO CHAIN

                                     0122   385 ;

         10 A7            56     D0  0122   386 	MOVL	R6,CXB$L_LINK(R7)	; LINK IN THE SEGMENT

            57            56     D0  0126   387 	MOVL	R6,R7			; COPY BASE ADDRESS FOR NEXT PASS

                       10 A7   8ED0  0129   388 	POPL	CXB$L_LINK(R7)		; SEE IF A RCV BUFFER WAS ALLOCATED

                          07     13  012D   389 	BEQL	60$			; IF EQL NO

            57         10 A7     D0  012F   390 	MOVL	CXB$L_LINK(R7),R7	; COPY BASE ADDRESS FOR NEXT PASS

                       10 A7     D4  0133   391 	CLRL	CXB$L_LINK(R7)		; MARK AS END OF CHAIN

                                     0136   392 60$:

                          38     BA  0136   393 	POPR	#^M<R3,R4,R5>		; RESTORE REGS

                                 05  0138   394 	RSB				; DONE

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  13

V06             SET MSG LTH IN CXB                                                                                               (1)



                                     0139   396 	.SBTTL	SET MSG LTH IN CXB

                                     0139   397 ;++

                                     0139   398 ; FUNCTIONAL DESCRIPTION:

                                     0139   399 ;

                                     0139   400 ; NET$SET_LENGTH - THIS ROUTINE COMPUTES THE LTH OF A MSG TO BE SENT

                                     0139   401 ;

                                     0139   402 ; CALLING SEQUENCE:

                                     0139   403 ;

                                     0139   404 ;	BSB	NET$SET_LENGTH

                                     0139   405 ;

                                     0139   406 ; INPUT PARAMETERS:

                                     0139   407 ;

                                     0139   408 ;	R3 - END OF MSG BFR+1

                                     0139   409 ;	R6 - BEGINNING OF BUFIO BLOCK

                                     0139   410 ;

                                     0139   411 ;--

                                     0139   412 

                                     0139   413 NET$SET_LENGTH::

                       1A A6     9F  0139   414 	PUSHAB	CXB$C_NSPSTART(R6)	; GET POINTER TO DATA

            53            8E     C3  013C   415 	SUBL3	(SP)+,R3,CXB$W_LENGTH(R6) ; COMPUTE LTH OF MSG - WORD AFTER LENGTH NOT USED

                       0C A6         013F       

         0E A6            1A     B0  0141   416 	MOVW	#CXB$C_NSPSTART,CXB$W_OFFSET(R6) ; INIT OFFSET TO MSG

                                 05  0145   417 	RSB

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  14

V06             ACCESS AND CONTROL QIO PROCESSING                                                                                (1)



                                     0146   419 	.SBTTL	ACCESS AND CONTROL QIO PROCESSING

                                     0146   420 ;++

                                     0146   421 ; FUNCTIONAL DESCRIPTION:

                                     0146   422 ;

                                     0146   423 ; NET_ACCESS - THIS ROUTINE GETS THE PROCESS'S PRIVILEGE MASK,

                                     0146   424 ;	STUFFS IT IN THE IRP, AND CONTINUES IN THE ACP FDT ROUTINES.

                                     0146   425 ;

                                     0146   426 ; NET_CONTROL - THIS ROUTINE GETS THE PROCESS'S PRIVILEGE MASK,

                                     0146   427 ;	STUFFS IT IN THE IRP, AND CONTINUES IN THE ACP FDT ROUTINES.

                                     0146   428 ;

                                     0146   429 ; INPUT PARAMETERS:

                                     0146   430 ;

                                     0146   431 ;	R3 = I/O PACKET ADDRESS

                                     0146   432 ;	R4 = PCB ADDRESS

                                     0146   433 ;

                                     0146   434 ;--

                                     0146   435 

                                     0146   436 

                                     0146   437 NET_ACCESS:

                                     0146   438 

                                     0146   439 	ASSUME	PHD$Q_PRIVMSK EQ 0

                                     0146   440 

         3C A3         64 B4     7D  0146   441 	MOVQ	@PCB$L_PHD(R4),IRP$Q_NT_PRVMSK(R3) ; STORE IT

                 00000000'GF     17  014B   442 	JMP	G^ACP$ACCESSNET		; CONTINUE IN EXEC

                                     0151   443 

                                     0151   444 NET_CONTROL:

         3C A3         64 B4     7D  0151   445 	MOVQ	@PCB$L_PHD(R4),IRP$Q_NT_PRVMSK(R3) ; STORE IT

                 00000000'GF     17  0156   446 	JMP	G^ACP$MODIFY		; CONTINUE IN EXEC

                                     015C   447 NET_END:				;ADDRESS OF LAST LOCATION IN DRIVER

                                     015C   448 

                                     015C   449 	.END

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                     (1)



ABORT_IO         0000002F R     05   DYN$C_NDB      = 0000001C            IO$M_PURGE     = 00000800            

ACP$ACCESSNET    ********   X   05   DYN$C_NET      = 00000017            IO$M_READATTN  = 00000080            

ACP$DEACCESS     ********   X   04   DYN$C_PBH      = 00000020            IO$M_REVERSE   = 00000040            

ACP$MODIFY       ********   X   05   DYN$C_PCB      = 0000000C            IO$M_SHUTDOWN  = 00000080            

AT$_UBA          ********   X   03   DYN$C_PDB      = 00000021            IO$M_STARTUP   = 00000040            

BIT...         = 00000009            DYN$C_PFL      = 00000023            IO$M_SYNCH     = 00000200            

CCB$B_AMOD       00000009            DYN$C_PIB      = 00000022            IO$M_TIMED     = 00000080            

CCB$B_STS        00000008            DYN$C_PQB      = 0000000D            IO$M_TRMNOECHO = 00001000            

CCB$C_LENGTH     00000010            DYN$C_PTR      = 00000025            IO$M_WRTATTN   = 00000100            

CCB$K_LENGTH     00000010            DYN$C_RVT      = 0000000E            IO$S_FCODE     = 00000006            

CCB$L_DIRP       0000000C            DYN$C_SFT      = 00000024            IO$V_ABORT     = 00000008            

CCB$L_UCB        00000000            DYN$C_SSB      = 0000001D            IO$V_ACCESS    = 00000006            

CCB$L_WIND       00000004            DYN$C_TQE      = 0000000F            IO$V_ATTNAST   = 00000008            

CCB$W_IOC        0000000A            DYN$C_TYPAHD   = 00000014            IO$V_BINARY    = 00000006            

CXB$B_CODE       0000000B            DYN$C_UCB      = 00000010            IO$V_CANCTRLO  = 00000006            

CXB$B_TYPE       0000000A            DYN$C_VCB      = 00000011            IO$V_COMMOD    = 00000006            

CXB$C_DDCCON   = 00000001            DYN$C_WCB      = 00000012            IO$V_CREATE    = 00000007            

CXB$C_DDCDAT   = 00000002            EXE$ABORTIO      ********   X   05   IO$V_CTRLCAST  = 00000008            

CXB$C_DDCERR   = 00000004            EXE$ALLOCBUF     ********   X   05   IO$V_CTRLYAST  = 00000007            

CXB$C_DDCRCV   = 00000003            EXE$BUFQUOPRC    ********   X   05   IO$V_CVTLOW    = 00000008            

CXB$C_LENGTH     00000018            EXE$DEANONPAGED  ********   X   05   IO$V_DATACHECK = 0000000E            

CXB$C_NSPSTART   0000001A            EXE$QIOACPPKT    ********   X   04   IO$V_DELETE    = 00000008            

CXB$K_LENGTH     00000018            EXE$READCHK      ********   X   05   IO$V_DMOUNT    = 0000000A            

CXB$K_NSPSTART   0000001A            EXE$WRITECHK     ********   X   05   IO$V_DSABLMBX  = 0000000A            

CXB$L_BL         00000004            FUNCTABLE        00000018 R     04   IO$V_ENABLMBX  = 00000007            

CXB$L_FL         00000000            GBL...         = 00000001            IO$V_FCODE     = 00000000            

CXB$L_IRP        00000010            GO_TO_ACP        00000064 R     04   IO$V_HANGUP    = 00000009            

CXB$L_LINK       00000010            IO$M_ABORT     = 00000100            IO$V_INHERLOG  = 0000000B            

CXB$L_SSB        00000014            IO$M_ACCESS    = 00000040            IO$V_INHEXTGAP = 0000000C            

CXB$W_CHANNEL    00000010            IO$M_ATTNAST   = 00000100            IO$V_INHRETRY  = 0000000F            

CXB$W_LENGTH     0000000C            IO$M_BINARY    = 00000040            IO$V_INHSEEK   = 0000000C            

CXB$W_OFFSET     0000000E            IO$M_CANCTRLO  = 00000040            IO$V_INTERRUPT = 00000006            

CXB$W_SIZE       00000008            IO$M_COMMOD    = 00000040            IO$V_INTSKIP   = 00000008            

DPT$INITAB       00000020 R     03   IO$M_CREATE    = 00000080            IO$V_MOUNT     = 00000009            

DPT$REINITAB     00000020 R     03   IO$M_CTRLCAST  = 00000100            IO$V_NOECHO    = 00000006            

DPT$TAB          00000000 R     03   IO$M_CTRLYAST  = 00000080            IO$V_NOFILTR   = 00000009            

DYN$C_ACB      = 00000002            IO$M_CVTLOW    = 00000100            IO$V_NOFORMAT  = 00000008            

DYN$C_ADP      = 00000001            IO$M_DATACHECK = 00004000            IO$V_NOW       = 00000006            

DYN$C_AQB      = 00000003            IO$M_DELETE    = 00000100            IO$V_NOWAIT    = 00000007            

DYN$C_BRDCST   = 0000001A            IO$M_DMOUNT    = 00000400            IO$V_PACKED    = 00000007            

DYN$C_BUFIO    = 00000013            IO$M_DSABLMBX  = 00000400            IO$V_PURGE     = 0000000B            

DYN$C_CEB      = 00000004            IO$M_ENABLMBX  = 00000080            IO$V_READATTN  = 00000007            

DYN$C_CRB      = 00000005            IO$M_FCODE     = 0000003F            IO$V_REVERSE   = 00000006            

DYN$C_CXB      = 0000001B            IO$M_HANGUP    = 00000200            IO$V_SHUTDOWN  = 00000007            

DYN$C_DDB      = 00000006            IO$M_INHERLOG  = 00000800            IO$V_STARTUP   = 00000006            

DYN$C_DPT      = 0000001E            IO$M_INHEXTGAP = 00001000            IO$V_SYNCH     = 00000009            

DYN$C_FCB      = 00000007            IO$M_INHRETRY  = 00008000            IO$V_TIMED     = 00000007            

DYN$C_FRK      = 00000008            IO$M_INHSEEK   = 00001000            IO$V_TRMNOECHO = 0000000C            

DYN$C_GSD      = 00000015            IO$M_INTERRUPT = 00000040            IO$V_WRTATTN   = 00000008            

DYN$C_IDB      = 00000009            IO$M_INTSKIP   = 00000100            IO$_ACCESS     = 00000032            

DYN$C_IRP      = 0000000A            IO$M_MOUNT     = 00000200            IO$_ACPCONTROL = 00000038            

DYN$C_JPB      = 0000001F            IO$M_NOECHO    = 00000040            IO$_CREATE     = 00000033            

DYN$C_KFH      = 00000026            IO$M_NOFILTR   = 00000200            IO$_DEACCESS   = 00000034            

DYN$C_KFI      = 00000018            IO$M_NOFORMAT  = 00000100            IO$_DELETE     = 00000035            

DYN$C_LOG      = 0000000B            IO$M_NOW       = 00000040            IO$_DIAGNOSE   = 0000001D            

DYN$C_MTL      = 00000019            IO$M_NOWAIT    = 00000080            IO$_DRVCLR     = 00000004            

DYN$C_MVL      = 00000016            IO$M_PACKED    = 00000080            IO$_ERASETAPE  = 00000006            

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  16

SYMBOL TABLE                                                                                                                     (1)



IO$_LOGICAL    = 0000002F            IRP$K_LENGTH     0000004C            NET$C_ACKM     = 00000001            

IO$_MODIFY     = 00000036            IRP$L_AST        00000010            NET$C_CTRLM    = 00000002            

IO$_MOUNT      = 00000039            IRP$L_ASTPRM     00000014            NET$C_DATAM    = 00000000            

IO$_NOP        = 00000000            IRP$L_DIAGBUF    00000044            NET$C_MAXINT   = 00000010  G         

IO$_OFFSET     = 00000006            IRP$L_IOQBL      00000004            NET$C_MAXNSPOVH= 00000018            

IO$_PACKACK    = 00000008            IRP$L_IOQFL      00000000            NET$C_MSGFLG   = 00000000            

IO$_PHYSICAL   = 0000001F            IRP$L_IOSB       00000024            NET$C_NSPOVH   = 0000000B            

IO$_READHEAD   = 0000000E            IRP$L_IOST1      00000034            NET$DDT          00000000 RG    04   

IO$_READLBLK   = 00000021            IRP$L_IOST2      00000038            NET$DPT          00000000 RG    03   

IO$_READPBLK   = 0000000C            IRP$L_MEDIA      00000034            NET$M_BOM      = 00000020            

IO$_READPRESET = 00000019            IRP$L_PID        0000000C            NET$M_EOM      = 00000040            

IO$_READPROMPT = 00000037            IRP$L_SEGVBN     00000040            NET$M_INTLS    = 00000010            

IO$_READTRACKD = 00000010            IRP$L_SEQNUM     00000048            NET$M_INTMSG   = 00000020            

IO$_READVBLK   = 00000031            IRP$L_SVAPTE     0000002C            NET$SET_LENGTH   00000139 RG    05   

IO$_RECAL      = 00000003            IRP$L_TT_TERM    00000038            NET$S_BOM      = 00000001            

IO$_RELEASE    = 00000005            IRP$L_UCB        0000001C            NET$S_EOM      = 00000001            

IO$_RETCENTER  = 00000007            IRP$L_WIND       00000018            NET$S_INTLS    = 00000001            

IO$_REWIND     = 00000024            IRP$M_BUFIO    = 00000001            NET$S_INTMSG   = 00000001            

IO$_REWINDOFF  = 00000022            IRP$M_CHAINED  = 00000020            NET$S_MSGFLG   = 00000005            

IO$_SEARCH     = 00000009            IRP$M_COMPLX   = 00000008            NET$S_MSGID    = 00000002            

IO$_SEEK       = 00000002            IRP$M_DIAGBUF  = 00000080            NET$S_MSGTYP   = 00000002            

IO$_SENSECHAR  = 0000001B            IRP$M_FUNC     = 00000002            NET$S_SUBTYP   = 00000003            

IO$_SENSEMODE  = 00000027            IRP$M_MBXIO    = 00000400            NET$V_BOM      = 00000005            

IO$_SETCHAR    = 0000001A            IRP$M_PAGIO    = 00000004            NET$V_EOM      = 00000006            

IO$_SETMODE    = 00000023            IRP$M_PHYSIO   = 00000100            NET$V_INTLS    = 00000004            

IO$_SKIPFILE   = 00000025            IRP$M_PRIVIO   = 00000200            NET$V_INTMSG   = 00000005            

IO$_SKIPRECORD = 00000026            IRP$M_SWAPIO   = 00000040            NET$V_MSGFLG   = 00000002            

IO$_SPACEFILE  = 00000002            IRP$M_VIRTUAL  = 00000010            NET$V_MSGID    = 00000000            

IO$_SPACERECORD= 00000009            IRP$Q_NT_PRVMSK  0000003C            NET$V_MSGTYP   = 00000002            

IO$_STARTSPNDL = 00000019            IRP$S_FCODE    = 00000006            NET$V_SUBTYP   = 00000004            

IO$_UNLOAD     = 00000001            IRP$S_FMOD     = 0000000A            NET_ACCESS       00000146 R     05   

IO$_VIRTUAL    = 0000003F            IRP$S_MODE     = 00000002            NET_CONTROL      00000151 R     05   

IO$_WRITECHECK = 0000000A            IRP$V_BUFIO    = 00000000            NET_END          0000015C R     05   

IO$_WRITECHECKH= 00000018            IRP$V_CHAINED  = 00000005            P1             = 00000000            

IO$_WRITEHEAD  = 0000000D            IRP$V_COMPLX   = 00000003            P2             = 00000004            

IO$_WRITELBLK  = 00000020            IRP$V_DIAGBUF  = 00000007            PCB$B_ASTACT     0000000C            

IO$_WRITEMARK  = 0000001C            IRP$V_FCODE    = 00000000            PCB$B_ASTEN      0000000D            

IO$_WRITEOF    = 00000028            IRP$V_FMOD     = 00000006            PCB$B_PRI        0000000B            

IO$_WRITEPBLK  = 0000000B            IRP$V_FUNC     = 00000001            PCB$B_PRIB       00000033            

IO$_WRITETRACKD= 0000000F            IRP$V_MBXIO    = 0000000A            PCB$B_TYPE       0000000A            

IO$_WRITEVBLK  = 00000030            IRP$V_MODE     = 00000000            PCB$B_WEFC       00000032            

IOC$RETURN       ********   X   04   IRP$V_PAGIO    = 00000002            PCB$C_LENGTH     0000007C            

IPL$_ASTDEL    = 00000002            IRP$V_PHYSIO   = 00000008            PCB$K_LENGTH     0000007C            

IPL$_HWCLK     = 00000018            IRP$V_PRIVIO   = 00000009            PCB$L_ASTQBL     00000014            

IPL$_IOPOST    = 00000004            IRP$V_SWAPIO   = 00000006            PCB$L_ASTQFL     00000010            

IPL$_MAILBOX   = 0000000B            IRP$V_VIRTUAL  = 00000004            PCB$L_EFC2P      00000058            

IPL$_POWER     = 0000001F            IRP$W_ABCNT      0000003C            PCB$L_EFC3P      0000005C            

IPL$_QUEUEAST  = 00000006            IRP$W_BCNT       00000032            PCB$L_EFCS       00000050            

IPL$_SCHED     = 00000003            IRP$W_BOFF       00000030            PCB$L_EFCU       00000054            

IPL$_SYNCH     = 00000007            IRP$W_CHAN       00000028            PCB$L_EFWM       0000004C            

IPL$_TIMER     = 00000007            IRP$W_FUNC       00000020            PCB$L_OWNER      0000001C            

IRP$B_CARCON     00000038            IRP$W_OBCNT      0000003E            PCB$L_PHD        00000064            

IRP$B_EFN        00000022            IRP$W_SIZE       00000008            PCB$L_PHYPCB     00000018            

IRP$B_PRI        00000023            IRP$W_STS        0000002A            PCB$L_PID        00000060            

IRP$B_RMOD       0000000B            IRP$W_TT_PRMPT   0000003C            PCB$L_PQB        0000004C            

IRP$B_TYPE       0000000A            MASKH          = 01000000            PCB$L_SQBL       00000004            

IRP$C_LENGTH     0000004C            MASKL          = 00000000            PCB$L_SQFL       00000000            

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  17

SYMBOL TABLE                                                                                                                     (1)



PCB$L_STS        00000028            PHD$L_CPUTIM     0000003C            PHD$W_PHVINDEX   00000046            

PCB$L_UIC        00000020            PHD$L_DIOCNT     00000050            PHD$W_PRCLM      00000042            

PCB$L_WSSWP      00000024            PHD$L_ESP        0000007C            PHD$W_PST        00000020            

PCB$L_WTIME      0000002C            PHD$L_FREP0VA    00000028            PHD$W_PSTBASMAX  0000004A            

PCB$T_LNAME      0000006C            PHD$L_FREP1VA    00000030            PHD$W_PSTFREE    00000026            

PCB$V_ASTPEN   = 00000011            PHD$L_FREPTECNT  0000002C            PHD$W_PSTLAST    00000024            

PCB$V_BATCH    = 0000000E            PHD$L_KSP        00000078            PHD$W_PTCNTACT   00000070            

PCB$V_DELPEN   = 00000001            PHD$L_P0BR       000000C8            PHD$W_PTCNTLCK   0000006C            

PCB$V_FORCPEN  = 00000002            PHD$L_P0LRASTL   000000CC            PHD$W_PTCNTMAX   00000072            

PCB$V_HIBER    = 00000013            PHD$L_P1BR       000000D0            PHD$W_PTCNTVAL   0000006E            

PCB$V_INQUAN   = 00000003            PHD$L_P1LR       000000D4            PHD$W_QUANT      00000040            

PCB$V_LOGIN    = 00000014            PHD$L_PAGEFLTS   0000004C            PHD$W_TQLM       00000062            

PCB$V_NETWRK   = 00000015            PHD$L_PAGFIL     0000001C            PHD$W_WSAUTH     0000000A            

PCB$V_NOACNT   = 0000000F            PHD$L_PC         000000C0            PHD$W_WSDYN      0000000E            

PCB$V_NODELET  = 00000017            PHD$L_PCB        00000078            PHD$W_WSFLUID    00000074            

PCB$V_PHDRES   = 00000012            PHD$L_PGFLCNT    00000034            PHD$W_WSLAST     00000012            

PCB$V_PSWAPM   = 00000004            PHD$L_PGFLQUOTA  0000005C            PHD$W_WSLIST     00000008            

PCB$V_PWRAST   = 00000016            PHD$L_PSL        000000C4            PHD$W_WSLOCK     0000000C            

PCB$V_RES      = 00000000            PHD$L_PSTBASOFF  00000020            PHD$W_WSLX       0000004A            

PCB$V_RESPEN   = 00000005            PHD$L_PTWSLELCK  00000064            PHD$W_WSNEXT     00000010            

PCB$V_SSFEXC   = 00000006            PHD$L_PTWSLEVAL  00000068            PHD$W_WSQUOTA    00000018            

PCB$V_SSFEXCE  = 00000007            PHD$L_R0         00000088            PR$_ACCR       = 00000029            

PCB$V_SSFEXCS  = 00000008            PHD$L_R1         0000008C            PR$_ACCS       = 00000028            

PCB$V_SSFEXCU  = 00000009            PHD$L_R10        000000B0            PR$_ASTLVL     = 00000013            

PCB$V_SSRWAIT  = 0000000A            PHD$L_R11        000000B4            PR$_ESP        = 00000001            

PCB$V_SUSPEN   = 0000000B            PHD$L_R12        000000B8            PR$_ICCS       = 00000018            

PCB$V_SWPVBN   = 00000010            PHD$L_R13        000000BC            PR$_ICR        = 0000001A            

PCB$V_WAKEPEN  = 0000000C            PHD$L_R2         00000090            PR$_IPL        = 00000012            

PCB$V_WALL     = 0000000D            PHD$L_R3         00000094            PR$_ISP        = 00000004            

PCB$W_APTCNT     00000034            PHD$L_R4         00000098            PR$_KSP        = 00000000            

PCB$W_ASTCNT     0000003C            PHD$L_R5         0000009C            PR$_MAPEN      = 00000038            

PCB$W_BIOCNT     0000003E            PHD$L_R6         000000A0            PR$_NICR       = 00000019            

PCB$W_BIOLM      00000040            PHD$L_R7         000000A4            PR$_P0BR       = 00000008            

PCB$W_BYTCNT     00000042            PHD$L_R8         000000A8            PR$_P0LR       = 00000009            

PCB$W_BYTLM      00000068            PHD$L_R9         000000AC            PR$_P1BR       = 0000000A            

PCB$W_DIOCNT     00000044            PHD$L_REFERFLT   00000014            PR$_P1LR       = 0000000B            

PCB$W_DIOLM      00000046            PHD$L_SSP        00000080            PR$_PCBB       = 00000010            

PCB$W_FILCNT     00000048            PHD$L_USP        00000084            PR$_PME        = 0000003D            

PCB$W_GPGCNT     00000038            PHD$L_WSL        00000118            PR$_RXCS       = 00000020            

PCB$W_GRP        00000022            PHD$M_DALCSTX  = 00000002            PR$_RXDB       = 00000021            

PCB$W_MEM        00000020            PHD$M_PFMFLG   = 00000001            PR$_SBIER      = 00000034            

PCB$W_MTXCNT     0000000E            PHD$M_WSPEAKCHK= 00000004            PR$_SBIFS      = 00000030            

PCB$W_PPGCNT     0000003A            PHD$Q_PRIVMSK    00000000            PR$_SBIMT      = 00000033            

PCB$W_PRCCNT     0000006A            PHD$S_ASTLVL   = 00000008            PR$_SBIQC      = 00000036            

PCB$W_SIZE       00000008            PHD$S_P0LR     = 00000018            PR$_SBIS       = 00000031            

PCB$W_STATE      00000030            PHD$V_ASTLVL   = 00000018            PR$_SBISC      = 00000032            

PCB$W_TMBU       00000036            PHD$V_DALCSTX  = 00000001            PR$_SBITA      = 00000035            

PCB$W_TQCNT      0000004A            PHD$V_P0LR     = 00000000            PR$_SBR        = 0000000C            

PHD$B_ASTLVL     000000CF            PHD$V_PFMFLG   = 00000000            PR$_SCBB       = 00000011            

PHD$B_DFPFC      00000038            PHD$V_WSPEAKCHK= 00000002            PR$_SID        = 0000003E            

PHD$B_PAGFIL     0000001F            PHD$W_ASTLM      00000044            PR$_SIRR       = 00000014            

PHD$B_PGTBPFC    00000039            PHD$W_BAK        00000048            PR$_SISR       = 00000015            

PHD$C_LENGTH     00000118            PHD$W_DFWSCNT    0000001A            PR$_SLR        = 0000000D            

PHD$C_PHDPAGCTX= 00000008            PHD$W_EMPTPG     000000D8            PR$_SSP        = 00000002            

PHD$K_LENGTH     00000118            PHD$W_EXTDYNWS   00000076            PR$_TBIA       = 00000039            

PHD$L_BIOCNT     00000054            PHD$W_FILLM      00000060            PR$_TBIS       = 0000003A            

PHD$L_CPULIM     00000058            PHD$W_FLAGS      0000003A            PR$_TODR       = 0000001B            

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  18

SYMBOL TABLE                                                                                                                     (1)



PR$_TXCS       = 00000022            UCB$L_FQBL       00000004            UCB$V_DX_WRITE = 00000003            

PR$_TXDB       = 00000023            UCB$L_FQFL       00000000            UCB$V_ECC      = 00000000            

PR$_USP        = 00000003            UCB$L_FR3        00000010            UCB$V_ERLOGIP  = 00000002            

PR$_WCSA       = 0000002C            UCB$L_FR4        00000014            UCB$V_INT      = 00000001            

PR$_WCSD       = 0000002D            UCB$L_IOQBL      00000044            UCB$V_INTTYPE  = 00000007            

QIO_INIT         00000000 R     05   UCB$L_IOQFL      00000040            UCB$V_JOB      = 00000000            

QIO_INIT_END     00000037 R     05   UCB$L_IRP        0000004C            UCB$V_LNKPRI   = 00000006            

RCV_QIO          00000042 R     05   UCB$L_LINK       0000002C            UCB$V_LTYPE    = 00000000            

SETUP_SEGMENT    000000B1 R     05   UCB$L_LOGADR     00000064            UCB$V_MOUNTING = 00000009            

SS$_ABORT        ********   X   05   UCB$L_MAXBLOCK   00000084            UCB$V_MSGACK   = 00000004            

SS$_BADPARAM     ********   X   05   UCB$L_MEDIA      0000008C            UCB$V_MSGFLO   = 00000003            

SS$_FILNOTACC    ********   X   05   UCB$L_NT_DATSSB  00000074            UCB$V_NOCNVRT  = 00000002            

SS$_INSFMEM      ********   X   05   UCB$L_NT_INTSSB  00000078            UCB$V_NT_BFROVF= 00000002            

SS$_TOOMUCHDATA  ********   X   05   UCB$L_OPCNT      00000060            UCB$V_NT_BREAK = 00000005            

UCB$B_AMOD       00000053            UCB$L_OWNUIC     0000001C            UCB$V_NT_NAME  = 00000004            

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

UCB$B_CM1        0000004A            UCB$L_RQBL       00000004            UCB$V_POWER    = 00000005            

UCB$B_CM2        0000004B            UCB$L_RQFL       00000000            UCB$V_PRMMBX   = 00000000            

UCB$B_DEVCLASS   00000038            UCB$L_SVAPTE     00000068            UCB$V_SEGFLO   = 00000002            

UCB$B_DEVTYPE    00000039            UCB$L_SVPN       00000064            UCB$V_TIM      = 00000000            

UCB$B_DIPL       00000052            UCB$L_TTCHAR     0000003C            UCB$V_TIMOUT   = 00000006            

UCB$B_DX_SCTCNT  000000A6            UCB$L_VCB        00000030            UCB$V_TT_NOTIF = 00000002            

UCB$B_ERTCNT     00000070            UCB$M_BACKP    = 00000020            UCB$V_TT_TIMO  = 00000001            

UCB$B_ERTMAX     00000071            UCB$M_BSY      = 00000100            UCB$V_UNLOAD   = 0000000C            

UCB$B_ESCAPE     0000004B            UCB$M_CANCEL   = 00000008            UCB$V_VALID    = 0000000B            

UCB$B_FEX        00000076            UCB$M_DEADMO   = 00000400            UCB$W_BCNT       0000006E            

UCB$B_FIPL       0000000B            UCB$M_DELMBX   = 00000002            UCB$W_BCR        00000096            

UCB$B_LOCSRV     0000003C            UCB$M_DIAGBUF  = 00000002            UCB$W_BOFF       0000006C            

UCB$B_OFFNDX     00000094            UCB$M_DX_WRITE = 00000008            UCB$W_BUFQUO     00000018            

UCB$B_OFFRTC     00000095            UCB$M_ECC      = 00000001            UCB$W_BYTESTOGO  0000003E            

UCB$B_REMSRV     0000003D            UCB$M_ERLOGIP  = 00000004            UCB$W_CHARGE     0000004A            

UCB$B_SECTORS    0000003C            UCB$M_INT      = 00000002            UCB$W_CYLINDERS  0000003E            

UCB$B_SLAVE      00000074            UCB$M_INTTYPE  = 00000080            UCB$W_DA         0000008C            

UCB$B_SPR        00000075            UCB$M_JOB      = 00000001            UCB$W_DC         0000008E            

UCB$B_STATE      00000052            UCB$M_MOUNTING = 00000200            UCB$W_DEVBUFSIZ  0000003A            

UCB$B_TRACKS     0000003D            UCB$M_NOCNVRT  = 00000004            UCB$W_DEVSTS     0000005A            

UCB$B_TYPE       0000000A            UCB$M_NT_BFROVF= 00000004            UCB$W_DIRSEQ     00000088            

UCB$B_VERTSZ     0000003F            UCB$M_NT_BREAK = 00000020            UCB$W_DSTADDR    00000018            

UCB$C_LENGTH     00000074            UCB$M_NT_NAME  = 00000010            UCB$W_DX_BCR     000000A4            

UCB$C_LOGLNK   = 00000001            UCB$M_ONLINE   = 00000010            UCB$W_EC1        00000090            

UCB$K_LENGTH     00000074            UCB$M_POWER    = 00000020            UCB$W_EC2        00000092            

UCB$L_AMB        00000054            UCB$M_PRMMBX   = 00000001            UCB$W_ERRCNT     00000072            

UCB$L_ASTQBL     00000010            UCB$M_TIM      = 00000001            UCB$W_FUNC       0000007E            

UCB$L_ASTQFL     0000000C            UCB$M_TIMOUT   = 00000040            UCB$W_MB_SEED    FFFFFFFC            

UCB$L_CPID       0000005C            UCB$M_TT_NOTIF = 00000004            UCB$W_MSGCNT     00000016            

UCB$L_CRB        00000020            UCB$M_TT_TIMO  = 00000002            UCB$W_MSGMAX     00000014            

UCB$L_DDB        00000024            UCB$M_UNLOAD   = 00001000            UCB$W_NT_CHAN    0000007C            

UCB$L_DEVCHAR    00000034            UCB$M_VALID    = 00000800            UCB$W_OFFSET     0000008A            

UCB$L_DEVDEPEND  0000003C            UCB$S_LNKPRI   = 00000002            UCB$W_REFC       00000050            

UCB$L_DPC        00000080            UCB$S_LTYPE    = 00000002            UCB$W_SIZE       00000008            

UCB$L_DUETIM     0000005C            UCB$T_PARTNER    0000000C            UCB$W_SRCADDR    0000001A            

UCB$L_DX_BFPNT   0000009C            UCB$V_BACKP    = 00000005            UCB$W_STS        00000058            

UCB$L_DX_BUF     00000098            UCB$V_BSY      = 00000008            UCB$W_UNIT       00000048            

UCB$L_DX_RXDB    000000A0            UCB$V_CANCEL   = 00000003            UCB$W_VPROT      0000001A            

UCB$L_EMB        00000078            UCB$V_DEADMO   = 0000000A            VCB$B_CUR_RVN    0000002F            

UCB$L_FIRST      00000014            UCB$V_DELMBX   = 00000001            VCB$B_EOFDELTA   0000004E            

UCB$L_FPC        0000000C            UCB$V_DIAGBUF  = 00000001            VCB$B_IBMAPSIZE  00000038            

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  19

SYMBOL TABLE                                                                                                                     (1)



VCB$B_IBMAPVBN   0000003A            VCB$V_OVREXP   = 00000000            

VCB$B_LRU_LIM    00000049            VCB$V_OVRLBL   = 00000002            

VCB$B_QNAMECNT   0000000B            VCB$V_OVRSETID = 00000003            

VCB$B_RESFILES   0000004F            VCB$V_PARTFILE = 00000000            

VCB$B_SBMAPSIZE  00000039            VCB$V_STARFILE = 00000008            

VCB$B_SBMAPVBN   0000003B            VCB$V_SYSTEM   = 00000007            

VCB$B_STATUS     0000000B            VCB$V_WAIMOUVOL= 00000002            

VCB$B_TM         0000002E            VCB$V_WAIREWIND= 00000003            

VCB$B_TYPE       0000000A            VCB$V_WAIUSRLBL= 00000004            

VCB$B_WINDOW     00000048            VCB$V_WRITE_IF = 00000000            

VCB$C_COMLEN     00000024            VCB$V_WRITE_SM = 00000001            

VCB$C_LENGTH     00000054            VCB$W_CLUSTER    0000003C            

VCB$C_MRKLEN     0000000B            VCB$W_CUR_NUM    00000024            

VCB$K_COMLEN     00000024            VCB$W_CUR_SEQ    00000026            

VCB$K_LENGTH     00000054            VCB$W_EXTEND     0000003E            

VCB$K_MRKLEN     0000000B            VCB$W_FILEPROT   0000004A            

VCB$L_AQB        00000010            VCB$W_MCOUNT     0000004C            

VCB$L_BLOCKBL    00000004            VCB$W_MODE       0000002C            

VCB$L_BLOCKFL    00000000            VCB$W_RECORDSZ   00000050            

VCB$L_CUR_FID    00000024            VCB$W_RVN        0000000E            

VCB$L_FCBBL      00000004            VCB$W_SIZE       00000008            

VCB$L_FCBFL      00000000            VCB$W_START_NUM  00000028            

VCB$L_FREE       00000040            VCB$W_START_SEQ  0000002A            

VCB$L_HOME2LBN   00000028            VCB$W_TRANS      0000000C            

VCB$L_HOMELBN    00000024            XMT_QIO          00000051 R     05   

VCB$L_IBMAPLBN   00000030            

VCB$L_IXHDR2LBN  0000002C            

VCB$L_MAXFILES   00000044            

VCB$L_MVL        00000034            

VCB$L_RVT        00000020            

VCB$L_SBMAPLBN   00000034            

VCB$L_START_FID  00000028            

VCB$L_ST_RECORD  00000030            

VCB$L_USRLBLAST  00000044            

VCB$L_VPBL       00000040            

VCB$L_VPFL       0000003C            

VCB$L_WCB        00000038            

VCB$M_CANCELIO = 00000020            

VCB$M_MUSTCLOSE= 00000040            

VCB$M_NOWRITE  = 00000080            

VCB$M_WAIMOUVOL= 00000004            

VCB$M_WAIREWIND= 00000008            

VCB$M_WAIUSRLBL= 00000010            

VCB$T_QNAME      0000000C            

VCB$T_VOLNAME    00000014            

VCB$V_CANCELIO = 00000005            

VCB$V_EBCDIC   = 00000005            

VCB$V_EXTFID   = 00000005            

VCB$V_GROUP    = 00000006            

VCB$V_HOMBLKBAD= 00000002            

VCB$V_IDXHDRBAD= 00000003            

VCB$V_INTCHG   = 00000004            

VCB$V_LOGICEOVS= 00000001            

VCB$V_MUSTCLOSE= 00000006            

VCB$V_NOALLOC  = 00000004            

VCB$V_NOWRITE  = 00000007            

VCB$V_OVRACC   = 00000001            

NETDRIVER       - PROCESS NETWORK I/O REQUESTS                   21-AUG-1978 20:57:07   VAX-11 MACRO X0.3-11               Page  20

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$            FFFFFFFE      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

$$$105_PROLOGUE  00000021      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$$$115_DRIVER    00000078      04     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT LONG  

Y$EXEPAGED       0000015C      05     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

3858. BYTES LEFT IN FREE MEMORY POOL.

3974. BYTES OF RECLAIMED MEMORY.

OBJ$:NETDRIVER,LIS$:NETDRIVER/-SP=EXECML$/ML,SRC$:NETDRIVER

15 MLB DIR RDS - 1305 GETS TO DEFINE 28 MACROS. 89 INTER. FILE WRITES. 

