NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)    3600  HISTORY

   (1)    4400  DECLARATIONS

   (1)    9100  NSP ACK PROCESSING

   (1)   13000  SEGNUM/ACKNUM ARITHMETIC

   (1)   31900  DATA MESSAGE RCVD WITH SYNCH DISCONNECT PENDING

   (1)   34800  PROCESS DATA MSG PREAMBLE

   (1)   44800  ACK MSG TRANSMISSION

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   1

X01                                                                                                                              (1)



                                     0000   100 

                                     0000   200 	.TITLE	NETACKNAK - CHECK DATA PREAMBLE, DO ACK 

                                     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 ;

                                     0000  2900 ; THIS MODULE CONTAINS ROUTINES TO PROCESS THE PREAMBLES OF NSP DATA

                                     0000  3000 ; MESSAGES (THROUGH SEGNUM) AND TO TRANSMIT AND RECEIVE EXPLICIT OR

                                     0000  3100 ; IMPLICIT ACK'S OR NAK'S.

                                     0000  3200 ; ENVIRONMENT:

                                     0000  3300 ;	MODE = KERNEL

                                     0000  3400 ;--

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   2

X01             HISTORY                                                                                                          (1)



                                     0000  3600 	.SBTTL	HISTORY

                                     0000  3700 ; AUTHOR:	SCOTT G. DAVIS, CREATION DATE: 09-MAY-77

                                     0000  3800 ;

                                     0000  3900 ; MODIFIED BY:

                                     0000  4000 ;

                                     0000  4100 ;	, : VERSION

                                     0000  4200 ; 01	- 

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   3

X01             DECLARATIONS                                                                                                     (1)



                                     0000  4400 	.SBTTL	DECLARATIONS

                                     0000  4500 ;

                                     0000  4600 ; INCLUDE FILES:

                                     0000  4700 ;

                                     0000  4800 	$CXBDEF

                                     0000  4900 	$DYNDEF

                                     0000  5000 	$IRPDEF

                                     0000  5100 	$NETMSGDEF

                                     0000  5200 	$PRDEF

                                     0000  5300 	$SSBDEF

                                     0000  5400 	$UCBDEF

                                     0000  5500 

                                     0000  5600 ;

                                     0000  5700 ; MACROS:

                                     0000  5800 ;

                                     0000  5900 

                                     0000  6000 ;

                                     0000  6100 ; EQUATED SYMBOLS:

                                     0000  6200 ;

                                     0000  6300 	$EQULST	NET_,LOCAL,,,<-

                                     0000  6400 		<ACKLTH,9>,-		; MAX LTH OF AN ACK MSG

                                     0000  6500 >

                                     0000  6600 	_VIELD	NET,0,<-		; ACKNUM FIELD

                                     0000  6700 		<ACKNUM,12>,-		; ACKNUM

                                     0000  6800 		<QUAL,3>,-		; QUAL FIELD

                                     0000  6900 		<ACKFLG,,M>,-		; FLAG TO INDICATE ACKNUM FIELD

                                     0000  7000 >

                                     0000  7100 	$EQULST	NET_,,0,1,<-		; QUAL FIELD VALUES

                                     0000  7200 		ACK,-			; QUALIFIER IS AN ACK

                                     0000  7300 		NAK,-			; QUALIFIER IS A NAK

                                     0000  7400 >

                                     0000  7500 

                           0000000F  0000  7600 MASK = ^XF

                           00000000  0000  7700 OFF = 0

                           00000001  0000  7800 ON = 1

                                     0000  7900 

                                     0000  8000 ;

                                     0000  8100 ; OWN STORAGE:

                                     0000  8200 ;

                                 00000000  8300 	.PSECT	NET_IMPURE,WRT,NOEXE

                                     0000  8400 

                                     0000  8500 NET$GQ_POOL_HD::			; HEAD OF MY CORE POOL

                           00000000  0000  8600 	.LONG	0			; ADDRESS

                           00000000  0004  8700 	.LONG	0			;

                                     0008  8800 

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   4

X01             DECLARATIONS                                                                                                     (1)



                                 00000000  9000 	.PSECT	NET_CODE,NOWRT

                                     0000  9100 	.SBTTL	NSP ACK PROCESSING

                                     0000  9200 ;++

                                     0000  9300 ; FUNCTIONAL DESCRIPTION:

                                     0000  9400 ;

                                     0000  9500 ; NET$RCVACKI - RECEIVE ACK/NAK OF SEGMENT ON INT/LS SUBCHANNEL

                                     0000  9600 ; NET$RCVACKD - RECEIVE ACK/NAK OF SEGMENT ON DATA SUBCHANNEL

                                     0000  9700 ;

                                     0000  9800 ; IF A SYNCHRONOUS DISCONNECT IS IN PROGRESS, A TERMINATION CHECK IS MADE

                                     0000  9900 ;

                                     0000 10000 ; CALLING SEQUENCE:

                                     0000 10100 ;

                                     0000 10200 ;	ENTERED VIA CASE IN NET$TRN

                                     0000 10300 ;

                                     0000 10400 ; INPUT PARAMETERS:

                                     0000 10500 ;

                                     0000 10600 ;	R5 - LOGICAL LINK UCB ADDRESS

                                     0000 10700 ;

                                     0000 10800 ; IMPLICIT INPUTS:

                                     0000 10900 ;

                                     0000 11000 ;	R10 - PTR TO MSG BFR

                                     0000 11100 ;	R11 - ADDRESS BEYOND END OF MSG

                                     0000 11200 ;

                                     0000 11300 ; SIDE EFFECTS:

                                     0000 11400 ;

                                     0000 11500 ;	'AWAITING ACK' QUEUE (WACKQ) UPDATED

                                     0000 11600 ;	SEGMENTS MAY BE RETRANSMITTED - FLOW COUNTS MAY BE UPDATED

                                     0000 11700 ;

                                     0000 11800 ;--

                                     0000 11900 

                                     0000 12000 NET$RCVACKI::

            52         78 A5     D0  0000 12100 	MOVL	UCB$L_NT_INTSSB(R5),R2	; GET SSB ADDRESS

                          04     11  0004 12200 	BRB	COMMON			; FINISH IN COMMON CODE

                                     0006 12300 

                                     0006 12400 NET$RCVACKD::

            52         74 A5     D0  0006 12500 	MOVL	UCB$L_NT_DATSSB(R5),R2	; GET SSB ADDRESS

                                     000A 12600 COMMON:

                          03     10  000A 12700 	BSBB	PROCESS_ACK		; PROCESS THE ACK

                          FFF1'  31  000C 12800 	BRW	NET$AST_EXIT		; TERMINATE

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   5

X01             SEGNUM/ACKNUM ARITHMETIC                                                                                         (1)



                                     000F 13000 	.SBTTL	SEGNUM/ACKNUM ARITHMETIC

                                     000F 13100 ;++

                                     000F 13200 ; FUNCTIONAL DESCRIPTION:

                                     000F 13300 ;

                                     000F 13400 ; PROCESS_ACK - THIS ROUTINE SETS UP FOR CHKACKNUM AND FALLS THROUGH

                                     000F 13500 ;

                                     000F 13600 ; CHKACKNUM - THIS ROUTINE DETERMINES WHETHER AN ACKNUM FIELD

                                     000F 13700 ;	IS VALID.  IF IT IS, THE ACK'D ITEMS ARE REMOVED FROM THE

                                     000F 13800 ;	'WACK' QUEUE, AND SSB$W_XMTSEGACK IS UPDATED.

                                     000F 13900 ;

                                     000F 14000 ; CHKACKNUM1 - SAME, BUT R0 ALREADY VERIFIED AS ACKNUM

                                     000F 14100 ;

                                     000F 14200 ; NET$FAKE_ACK - CLEAN UP AFTER DISCONNECT

                                     000F 14300 ;

                                     000F 14400 ; CALLING SEQUENCE:

                                     000F 14500 ;

                                     000F 14600 ;	BSB	CHKACKNUM/PROCESS_ACK

                                     000F 14700 ;

                                     000F 14800 ; INPUT PARAMETERS:

                                     000F 14900 ;

                                     000F 15000 ;	R0 - ACKNUM FIELD FROM DATA OR ACK MSG (CHKACKNUM), SEGNUM(NET$FAKE_ACK)

                                     000F 15100 ;	R2 - SSB ADDRESS (CHKACKNUM)

                                     000F 15200 ;	R5 - LOGICAL LINK UCB ADDRESS

                                     000F 15300 ;

                                     000F 15400 ; IMPLICIT INPUTS:

                                     000F 15500 ;

                                     000F 15600 ;	NET$GW_USR_STAT - CONTAINS SS$_NORMAL, ABORT, OR CANCEL

                                     000F 15700 ;

                                     000F 15800 ; IMPLICIT OUTPUTS:

                                     000F 15900 ;

                                     000F 16000 ;	UPDATE OF WACK QUEUE AND SSB$W_XMTSEGACK

                                     000F 16100 ;

                                     000F 16200 ; COMPLETION CODES:

                                     000F 16300 ;

                                     000F 16400 ;	SS$_ABORT - IF CALL IS DUE TO DISCONNECT SEQUENCE

                                     000F 16500 ;	SS$_CANCEL - IF SEGMENT ACK'D WAS LAST OF A CANCELED MESSAGE

                                     000F 16600 ;	SS$_NORMAL - IF ACK'D SEG WAS LAST OF XMITTED MSG

                                     000F 16700 ;

                                     000F 16800 ; SIDE EFFECTS:

                                     000F 16900 ;

                                     000F 17000 ;	IF THE SEGMENT BEING ACK'D IS AN INTERRUPT MSG OR EOM (THE

                                     000F 17100 ;	BUFFER CONTAINS THE PACKET ADDRESS), THEN THE I/O IS TERMINATED.

                                     000F 17200 ;

                                     000F 17300 ;--

                                     000F 17400 

                                     000F 17500 PROCESS_ACK:

                                     000F 17600 	BMSGOV	ACK_ERROR,2		; NEED TWO BYTES

            50            8A     3C  0017 17700 	MOVZWL	(R10)+,R0		; PICK UP ACKNUM FIELD

                                     001A 17800 					; FALL THROUGH TO CHKACKNUM

                                     001A 17900 

                                     001A 18000 CHKACKNUM:

            50            0F     E1  001A 18100 	BBC	#NET_V_ACKFLG,R0,ACK_ERROR ; IF BC NOT ACKNUM FIELD

                          0D         001D       

                                     001E 18200 

                                     001E 18300 CHKACKNUM1:

                                     001E 18400 ;

                                     001E 18500 ; MAKE SURE NO RESERVED ACKNUM QUALIFIER IS USE

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   6

X01             SEGNUM/ACKNUM ARITHMETIC                                                                                         (1)



                                     001E 18600 ;

            03            0C     EF  001E 18700 	EXTZV	#NET_V_QUAL,#NET_S_QUAL,R0,R3 ; GET QUALIFIER FIELD

            53            50         0021       

                                     0023 18800 

                                     0023 18900 	ASSUME	NET_ACK EQ 0

                                     0023 19000 	ASSUME	NET_NAK EQ 1

                                     0023 19100 

                                     0023 19200 	CASE	R3,<-			; DISPATCH ON VALID VALUE

                                     0023 19300 		CHKACKNUM2,-		; ACK - OK

                                     0023 19400 		CHKACKNUM2,-		; NAK - OK

                                     0023 19500 >

                                     002B 19600 ;

                                     002B 19700 ; SOMETHING IS ROTTEN - BREAK THE LINK

                                     002B 19800 ;

                                     002B 19900 ACK_ERROR:

                          FFD2'  31  002B 20000 	BRW	NET$PROT_ERROR		; PROCESS PROTOCOL ERROR

                                     002E 20100 CHKACKNUM2:

       0000'CF            00'    B0  002E 20200 	MOVW	S^#SS$_NORMAL,W^NET$GQ_USR_STAT ; INIT I/O COMPLETION CODE

                                     0033 20300 

                                     0033 20400 NET$FAKE_ACK::

                          50     DD  0033 20500 	PUSHL	R0			; SAVE FIELD FOR ACK/NAK CHECK

            53         1E A2     B0  0035 20600 	MOVW	SSB$W_XMTSEGACK(R2),R3	; GET LAST SEGMENT ACK'D

         1C A2       F000 8F     AA  0039 20700 	BICW	#^C<4096-1>,SSB$W_XMTSEGNUM(R2) ; MOD 4096

         1C A2            53     A3  003F 20800 	SUBW3	R3,SSB$W_XMTSEGNUM(R2),R1 ; NO. OF OUTSTANDING SEGMENTS

                          51         0043       

                          05     1E  0044 20900 	BCC	5$			; IF CC OK

            51       1000 8F     A0  0046 21000 	ADDW	#4096,R1		; MODULO 4096

                          0143   30  004B 21100 5$:	BSBW	CHK4096			; CHECK 12-BIT FIELD

                          37     13  004E 21200 	BEQL	40$			; IF EQL REMOVE ANY FROM Q

                          3E     1F  0050 21300 	BCS	45$			; IF CS TOO LARGE - TOSS IT

                          33     11  0052 21400 	BRB	40$			; SEE IF ANY TO ACK

            56         0C B2     0F  0054 21500 10$:	REMQUE	@SSB$L_WACKQFL(R2),R6	; TAKE OFF NEXT ACK'D MSG

                          78     1D  0058 21600 	BVS	85$			; IF VS THERE WAS NOTHING

                          07     BB  005A 21700 	PUSHR	#^M<R0,R1,R2>		; SAVE REGS

            53         10 A6     D0  005C 21800 	MOVL	CXB$L_IRP(R6),R3	; GET THE PACKET ADDRESS (MAYBE)

                          16     13  0060 21900 	BEQL	30$			; IF EQL NOTHING TO TERMINATE

                                     0062 22000 ;

                                     0062 22100 ; THE TRANSMISSION IS COMPLETE

                                     0062 22200 ;

       0002'CF         38 A3     B0  0062 22300 	MOVW	IRP$L_MEDIA+4(R3),W^NET$GQ_USR_STAT+2 ; GET BFR COUNT

                          FF95'  30  0068 22400 	BSBW	NET$IODONE		; POST THE USER'S I/O

            08       0000'CF     E9  006B 22500 	BLBC	W^NET$GQ_USR_STAT,30$	; IF BC DON'T COUNT THE I/O

                                     0070 22600 	UPDATE	MSGXMT			; ANOTHER MESSAGE TRANSMITTED

                                     0078 22700 30$:

                       0B A6     97  0078 22800 	DECB	CXB$B_CODE(R6)		; TIME TO DEALLOCATE?

                          05     12  007B 22900 	BNEQ	35$			; IF NEQ NO - XMT AST DIDN'T HAPPEN, YET

            50            56     D0  007D 23000 	MOVL	R6,R0			; GET ADDRESS OF BUFFER

                          69     10  0080 23100 	BSBB	NET$DEANONPAGED		; DEALLOCATE IT

                                     0082 23200 35$:

                          07     BA  0082 23300 	POPR	#^M<R0,R1,R2>		; RESTORE REGS

                       1E A2     B6  0084 23400 	INCW	SSB$W_XMTSEGACK(R2)	; BUMP THE LAST ACK'D SEGMENT

            CA            50     F4  0087 23500 40$:	SOBGEQ	R0,10$			; LOOP

         1E A2       F000 8F     AA  008A 23600 	BICW	#^C<4096-1>,SSB$W_XMTSEGACK(R2) ; MODULO 4096

                          50   8ED0  0090 23700 45$:	POPL	R0			; GET THE ACKNUM BACK

            03            0C     ED  0093 23800 	CMPZV	#NET_V_QUAL,#NET_S_QUAL,R0,#NET_NAK ; WAS THAT A NAK?

            01            50         0096       

                          02     13  0098 23900 	BEQL	50$			; IF EQL YES

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   7

X01             SEGNUM/ACKNUM ARITHMETIC                                                                                         (1)



                          51     D4  009A 24000 	CLRL	R1			; NO SEGMENTS TO REMOVE

                          51     D5  009C 24100 50$:	TSTL	R1			; ANY SEGMENTS TO NAK?

                          4A     13  009E 24200 	BEQL	100$			; IF EQL NO SEGMENTS TO NAK

                                     00A0 24300 ;

                                     00A0 24400 ; A NAK HAS BEEN RECEIVED

                                     00A0 24500 ;

                                     00A0 24600 ; REQUEUED SEGMENTS WILL HAVE THEIR CXB CODES RESET TO CXB$C_DDCDAT.

                                     00A0 24700 ; NOTE THAT THIS WILL CAUSE A POTENTIAL RACE CONDITION IF THE LINE IS IN

                                     00A0 24800 ; LOOPBACK, SINCE I MAY NOT HAVE RECEIVED THE XMT AST, YET.  THIS WILL ONLY

                                     00A0 24900 ; BE A PROBLEM (AT THIS DATE: 28-MAR-1978) WHERE DATA IS RECEIVED AND

                                     00A0 25000 ; A SYNCHRONOUS DISCONNECT IS PENDING.  THERE IS NO PARTICULARLY GOOD REASON

                                     00A0 25100 ; THAT THIS WILL OCCUR (EXCEPT, OF COURSE, MURPHY'S LAW).

                                     00A0 25200 ;

         74 A5            52     D1  00A0 25300 	CMPL	R2,UCB$L_NT_DATSSB(R5)	; IS THIS THE DATA SUBCHANNEL?

                          26     12  00A4 25400 	BNEQ	80$			; IF NEQ NO

                                     00A6 25500 ;

                                     00A6 25600 ; REQUEUE SEGMENTS ON DATA SUBCHANNEL FOR TRANSMISSION

                                     00A6 25700 ;

            56         10 B2     0F  00A6 25800 55$:	REMQUE	@SSB$L_WACKQBL(R2),R6	; PICK UP ITEM AT END OF WACKQ

                          26     1D  00AA 25900 	BVS	85$			; IF VS THERE WAS NOTHING

         0B A6            02     90  00AC 26000 	MOVB	#CXB$C_DDCDAT,CXB$B_CODE(R6) ; RESET CXB CODE

         3D A5            02     E0  00B0 26100 	BBS	#UCB$V_SEGFLO,UCB$B_REMSRV(R5),60$ ; IF BS SEGMENT FLOW

                          0A         00B4       

         3D A5            03     E1  00B5 26200 	BBC	#UCB$V_MSGFLO,UCB$B_REMSRV(R5),70$ ; IF BC NO FLOW CONTROL

                          08         00B9       

                       10 A6     D5  00BA 26300 	TSTL	CXB$L_IRP(R6)		; MSG FLOW CONTROL - LAST SEGMENT?

                          03     13  00BD 26400 	BEQL	70$			; IF EQL NO

                                     00BF 26500 60$:

                       22 A2     96  00BF 26600 	INCB	SSB$B_REQCNT(R2)	; ANOTHER MESSAGE SOLICITED BY PARTNER

            62            66     0E  00C2 26700 70$:	INSQUE	(R6),SSB$L_XQFL(R2)	; PUT ITEMS AT FRONT OF XMTQ

            DE            51     F5  00C5 26800 	SOBGTR	R1,55$			; LOOP

                          FF35'  31  00C8 26900 	BRW	NET$USRXMT		; TRY TO SEND ON BEHALF OF USER

                                 05  00CB 27000 75$:	RSB				; DONE

                                     00CC 27100 ;

                                     00CC 27200 ; RETRANSMIT SEGMENTS FOR INT/LS SUBCHANNEL

                                     00CC 27300 ;

            56         0C B2     0F  00CC 27400 80$:	REMQUE	@SSB$L_WACKQFL(R2),R6	; PULL OFF NEXT ITEM

                          09     1C  00D0 27500 	BVC	90$			; IF VC THERE WAS SOMETHING

                                     00D2 27600 85$:

         5A A5            05     E0  00D2 27700 	BBS	#UCB$V_NT_BREAK,UCB$W_DEVSTS(R5),100$ ; IF BS LINK HAS BEEN CLEANED UP

                          13         00D6       

                                     00D7 27800 	BUG_CHECK	WACKQEMPTY,FATAL ; DATA OR I/LS WACK QUEUE EMPTY

                                     00DB 27900 90$:

         0B A6            02     90  00DB 28000 	MOVB	#CXB$C_DDCDAT,CXB$B_CODE(R6) ; RESET CXB CODE

                          51     DD  00DF 28100 	PUSHL	R1			; SAVE COUNTER

                          FF1C'  30  00E1 28200 	BSBW	NET$RE_XMT_MSG		; RETRANSMIT IT

                          51   8ED0  00E4 28300 	POPL	R1			; RESTORE COUNTER

            E2            51     F5  00E7 28400 	SOBGTR	R1,80$			; LOOP

                                     00EA 28500 100$:

                                 05  00EA 28600 	RSB				; DONE

                                     00EB 28700 

                                     00EB 28800 

                                     00EB 28900 

                                     00EB 29000 ;++

                                     00EB 29100 ;

                                     00EB 29200 ; NET$DEANONPAGED - LOCAL(ACP) CALL TO EXE$DEANONPAGED

                                     00EB 29300 ;

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   8

X01             SEGNUM/ACKNUM ARITHMETIC                                                                                         (1)



                                     00EB 29400 ; INPUTS:	R0 - ADDRESS OF BLOCK TO BE DEALLOCATED

                                     00EB 29500 ;--

                                     00EB 29600 

                                     00EB 29700 NET$DEANONPAGED::

                          50     D5  00EB 29800 	TSTL	R0			; DID THIS BLOCK COME FROM EXEC SPACE?

                          3B     19  00ED 29900 	BLSS	50$			; IF LSS YES

            50            0F     D3  00EF 30000 	BITL	#MASK,R0		;BLOCK ALIGNED ON BOUNDARY?

                          0C     12  00F2 30100 	BNEQ	10$			;IF NEQ NO - BAD DEALLOCATION

            51         08 A0     3C  00F4 30200 	MOVZWL	IRP$W_SIZE(R0),R1	;GET SIZE OF BLOCK IN BYTES

            51            0F     C0  00F8 30300 	ADDL	#MASK,R1		;ROUND SIZE UP TO NEXT BOUNDARY

            51            0F     CA  00FB 30400 	BICL	#MASK,R1		;TRUNCATE SIZE BACK TO MULTIPLE

                          06     12  00FE 30500 	BNEQ	20$			;IF NEQ OKAY

                                     0100 30600 10$:	BUG_CHECK BADDALRQSZ,FATAL	;BAD DEALLOCATION REQUEST SIZE OR ADDRESS

                          8E     D5  0104 30700 	TSTL	(SP)+			;REMOVE RETURN FROM STACK

                                     0106 30800 20$:

            53       0000'CF     9E  0106 30900 	MOVAB	W^NET$GQ_POOL_HD,R3	; GET MY POOL HEAD

            7E            50     7D  010B 31000 	MOVQ	R0,-(SP)		; SAVE PARAMS

                                     010E 31100 	$SETAST_S	#OFF		; DISABLE AST'S

            50            8E     7D  0117 31200 	MOVQ	(SP)+,R0		; RESTORE PARAMS

                 00000000'EF     16  011A 31300 	JSB	EXE$DEALLOCATE		; DEALLOCATE THE BLOCK

                                     0120 31400 	$SETAST_S	#ON		; REENABLE AST'S

                                 05  0129 31500 	RSB				; DONE

                                     012A 31600 50$:

                 00000000'EF     17  012A 31700 	JMP	EXE$DEANONPAGED		; DEALLOCATE AND RETURN

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page   9

X01             DATA MESSAGE RCVD WITH SYNCH DISCONNECT PENDING                                                                  (1)



                                     0130 31900 	.SBTTL	DATA MESSAGE RCVD WITH SYNCH DISCONNECT PENDING

                                     0130 32000 ;++

                                     0130 32100 ; FUNCTIONAL DESCRIPTION:

                                     0130 32200 ;

                                     0130 32300 ; NET$NAK_INTER - NAK SEGMENT ON INT/LS SUBCHANNEL

                                     0130 32400 ; NET$NAK_DATA - NAK SEGMENT ON DATA SUBCHANNEL

                                     0130 32500 ;

                                     0130 32600 ; CALLING SEQUENCE:

                                     0130 32700 ;

                                     0130 32800 ;	ENTERED VIA CASE IN NETTRN

                                     0130 32900 ;

                                     0130 33000 ; INPUT PARAMETERS:

                                     0130 33100 ;

                                     0130 33200 ;	R5 - LOGICAL LINK UCB ADDRESS

                                     0130 33300 ;

                                     0130 33400 ;--

                                     0130 33500 

                                     0130 33600 NET$NAK_INTER::

            52         78 A5     D0  0130 33700 	MOVL	UCB$L_NT_INTSSB(R5),R2	; GET THE INT/LS SSB ADDRESS

                          04     11  0134 33800 	BRB	NAK_COMMON		; GO TO COMMON CODE

                                     0136 33900 

                                     0136 34000 NET$NAK_DATA::

            52         74 A5     D0  0136 34100 	MOVL	UCB$L_NT_DATSSB(R5),R2	; GET THE DATA SSB ADDRESS

                                     013A 34200 

                                     013A 34300 NAK_COMMON:

                          05     10  013A 34400 	BSBB	NET$PRECHK		; SEE IF THERE IS AN ACK IN PREAMBLE

                          66     10  013C 34500 	BSBB	NET$XMT_NAK		; SEND A NAK

                          FEBF'  31  013E 34600 	BRW	NET$AST_EXIT		; THAT IS ALL

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  10

X01             PROCESS DATA MSG PREAMBLE                                                                                        (1)



                                     0141 34800 	.SBTTL	PROCESS DATA MSG PREAMBLE

                                     0141 34900 ;++

                                     0141 35000 ; FUNCTIONAL DESCRIPTION:

                                     0141 35100 ;

                                     0141 35200 ; NET$PRECHK - CHECK PREAMBLE (THROUGH SEGNUM FIELD) OF DATA MESSAGES

                                     0141 35300 ;		SEGMENTS WITH NUMBERS .LE. EXPECTED NUMBER WILL HAVE ACK SENT.

                                     0141 35400 ;		ANY NAK'ED SEGMENTS ARE REQUEUED OR RETRANSMITTED.

                                     0141 35500 ;

                                     0141 35600 ; CALLING SEQUENCE:

                                     0141 35700 ;

                                     0141 35800 ;	BSB	NET$PRECHK

                                     0141 35900 ;

                                     0141 36000 ; INPUT PARAMETERS:

                                     0141 36100 ;

                                     0141 36200 ;	R2 - SSB ADDRESS

                                     0141 36300 ;	R5 - LOGICAL LINK UCB ADDRESS

                                     0141 36400 ;

                                     0141 36500 ; IMPLICIT INPUTS:

                                     0141 36600 ;

                                     0141 36700 ;	R10 - PTR TO CURRENT MSG BFR

                                     0141 36800 ;	R11 - PTR BEYOND END OF MSG

                                     0141 36900 ;

                                     0141 37000 ; OUTPUT PARAMETERS:

                                     0141 37100 ;

                                     0141 37200 ;	NONE

                                     0141 37300 ;

                                     0141 37400 ; SIDE EFFECTS:

                                     0141 37500 ;

                                     0141 37600 ;	SEGMENTS MAY BE TRANSMITTED TO PARTNER

                                     0141 37700 ;

                                     0141 37800 ;--

                                     0141 37900 

                                     0141 38000 NET$PRECHK::

                                     0141 38100 	BMSGOV	90$,2			; NEED TWO BYTES

            50            8A     3C  0149 38200 	MOVZWL	(R10)+,R0		; GET ACKNUM OR SEGNUM

            50            0F     E1  014C 38300 	BBC	#NET_V_ACKFLG,R0,80$	; IF BC THIS IS A SEGNUM FIELD

                          12         014F       

                          FECB   30  0150 38400 	BSBW	CHKACKNUM1		; CHECK ACKNUM FIELD

                                     0153 38500 	BMSGOV	90$,2			; NEED TWO BYTES

            50            8A     3C  015B 38600 	MOVZWL	(R10)+,R0		; GET SEGNUM

            50            0F     E0  015E 38700 	BBS	#NET_V_ACKFLG,R0,90$	; IF BS NOT SEGNUM FIELD

                          07         0161       

                                     0162 38800 80$:

            03            0C     ED  0162 38900 	CMPZV	#NET_V_QUAL,#NET_S_QUAL,R0,#0 ; RESERVED BITS OK?

            00            50         0165       

                          03     13  0167 39000 	BEQL	100$			; IF EQL YES

                          FE94'  31  0169 39100 90$:	BRW	NET$PROT_ERROR		; PROTOCOL ERROR

            51       0800 8F     3C  016C 39200 100$:	MOVZWL	#2048,R1		; PUT IN WRAPAROUND WINDOW

            53         18 A2     3C  0171 39300 	MOVZWL	SSB$W_RCVSEGNUM(R2),R3	; GET EXPECTED NUMBER

                          1A     10  0175 39400 	BSBB	CHK4096			; SEE IF IN RANGE

            50            50     B0  0177 39500 	MOVW	R0,R0			; TEST R0, DO NOT DISTURB C-BIT

                          07     13  017A 39600 	BEQL	120$			; IF EQL JUST RIGHT - KEEP IT

                          02     1E  017C 39700 	BCC	110$			; IF CC TOO HIGH - TOSS SEGMENT

                          24     10  017E 39800 	BSBB	NET$XMT_NAK		; TOO LOW - NAK THE SEGMENT

                                     0180 39900 

                          FE7D'  31  0180 40000 110$:	BRW	NET$AST_EXIT		; TERMINATE

                                     0183 40100 ;

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  11

X01             PROCESS DATA MSG PREAMBLE                                                                                        (1)



                                     0183 40200 ; THIS IS THE EXPECTED SEGMENT - DO WHAT'S RIGHT

                                     0183 40300 ;

                                     0183 40400 120$:

                                     0183 40500 	

                                     0183 40600 	ASSUME	SSB$W_RCVSEGACK-SSB$W_RCVSEGNUM EQ 2

                                     0183 40700 

            58         18 A2     9E  0183 40800 	MOVAB	SSB$W_RCVSEGNUM(R2),R8	; GET ADDRESS OF RCVD SEGNUM

            68            88     B0  0187 40900 	MOVW	(R8)+,(R8)		; STUFF IT AS LAST SEGMENT ACK'D

                          78     B6  018A 41000 	INCW	-(R8)			; BUMP THE EXPECTED SEGMENT NUMBER

            68            0C     E4  018C 41100 	BBSC	#NET_S_ACKNUM,(R8),130$	; MODULO 4096

                          00         018F       

                                     0190 41200 130$:

                                 05  0190 41300 	RSB				; DONE

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  12

X01             PROCESS DATA MSG PREAMBLE                                                                                        (1)



                                     0191 41500 ;++

                                     0191 41600 ; FUNCTIONAL DESCRIPTION:

                                     0191 41700 ;

                                     0191 41800 ; CHK4096 - THIS ROUTINES DETERMINES WHETHER A NUMBER

                                     0191 41900 ; FALLS WITHIN A GIVEN WINDOW.

                                     0191 42000 ;

                                     0191 42100 ; CALLING SEQUENCE:

                                     0191 42200 ;

                                     0191 42300 ;	BSB	CHK4096

                                     0191 42400 ;

                                     0191 42500 ; INPUT PARAMETERS:

                                     0191 42600 ;

                                     0191 42700 ;	R0 - NUMBER TO BE CHECKED (ACKNUM OR SEGNUM)

                                     0191 42800 ;	R1 - WINDOW

                                     0191 42900 ;	R3 - LOW END OF RANGE (ACKNUM) OR EXPECTED NUMBER (SEGNUM)

                                     0191 43000 ;

                                     0191 43100 ; OUTPUT PARAMETERS:

                                     0191 43200 ;

                                     0191 43300 ;	R0 - NO. OF ITEMS TO BE ACKED (ACKNUM) OR 0 IF SEGNUM VALID (SEGNUM)

                                     0191 43400 ;	R1 - NO. OF ITEMS TO BE RETRANSMITTED (NAK FROM ACKNUM)

                                     0191 43500 ;	CC==>NO. OK (ACKNUM) OR HIGH (SEGNUM)

                                     0191 43600 ;	CS==>NO. NG (ACKNUM) OR NOT HIGH (SEGNUM)

                                     0191 43700 ;

                                     0191 43800 ;--

                                     0191 43900 

                                     0191 44000 CHK4096:

            50       F000 8F     AA  0191 44100 	BICW	#^C<4096-1>,R0		; MODULO 4096

            50            53     A2  0196 44200 	SUBW	R3,R0			; DETERMINE NO. ACK'D (MAYBE)

                          05     1E  0199 44300 	BCC	10$			; IF CC NO WRAPAROUND OCCURRED

            50       1000 8F     A0  019B 44400 	ADDW	#4096,R0		; WRAPAROUND

            51            50     A2  01A0 44500 10$:	SUBW	R0,R1			; SET C-BIT PROPERLY AND COMPUTE NAK'S

                                 05  01A3 44600 	RSB				; DONE

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  13

X01             ACK MSG TRANSMISSION                                                                                             (1)



                                     01A4 44800 	.SBTTL	ACK MSG TRANSMISSION

                                     01A4 44900 ;++

                                     01A4 45000 ; FUNCTIONAL DESCRIPTION:

                                     01A4 45100 ;

                                     01A4 45200 ; NET$XMT_ACK - THIS ROUTINE XMITS AN ACK MESSAGE

                                     01A4 45300 ; NET$XMT_NAK - THIS ROUTINE XMITS A NAK MESSAGE

                                     01A4 45400 ;

                                     01A4 45500 ; CALLING SEQUENCE:

                                     01A4 45600 ;

                                     01A4 45700 ;	BSB	NET$XMT_ACK/NAK

                                     01A4 45800 ;

                                     01A4 45900 ; INPUT PARAMETERS:

                                     01A4 46000 ;

                                     01A4 46100 ;	R2 - SSB ADDRESS

                                     01A4 46200 ;	R5 - LOGICAL LINK UCB ADDRESS

                                     01A4 46300 ;

                                     01A4 46400 ; SIDE EFFECTS:

                                     01A4 46500 ;

                                     01A4 46600 ;	ACK MESSAGE IS TRANSMITTED

                                     01A4 46700 ;	R8 CLOBBERED

                                     01A4 46800 ;

                                     01A4 46900 ;--

                                     01A4 47000 

                                     01A4 47100 

                                     01A4 47200 

                                     01A4 47300 NET$XMT_NAK::

                                 A9  01A4 47400 	BISW3	#NET_M_ACKFLG!<NET_NAK@NET_V_QUAL>,-

         1A A2       9000 8F         01A5 47500 		SSB$W_RCVSEGACK(R2),R8 ; SET UP NAK

                          58         01AA       

                          07     11  01AB 47600 	BRB	ACK_COMMON		; GO TO COMMON CODE

                                     01AD 47700 

                                     01AD 47800 NET$XMT_ACK::

                                 A9  01AD 47900 	BISW3	#NET_M_ACKFLG!<NET_ACK@NET_V_QUAL>,-

         1A A2       8000 8F         01AE 48000 		SSB$W_RCVSEGACK(R2),R8 ; SET UP ACK

                          58         01B3       

                                     01B4 48100 

                                     01B4 48200 ACK_COMMON:

                                     01B4 48300 

                                     01B4 48400 ;

                                     01B4 48500 ; SEE IF THE SUBCHANNEL IS BUSY

                                     01B4 48600 ;

                       20 A2     95  01B4 48700 	TSTB	SSB$B_TIPC(R2)		; ANY TRANSMITS IN PROGRESS?

                          06     13  01B7 48800 	BEQL	10$			; IF EQL NO - SEND THE ACK NOW

         1A A2            0F     E2  01B9 48900 	BBSS	#SSB$V_ACKP,SSB$W_RCVSEGACK(R2),5$ ; FLAG ACK PENDING

                          00         01BD       

                                 05  01BE 49000 5$:	RSB				; THAT IS ALL FOR NOW

                                     01BF 49100 ;

                                     01BF 49200 ; SUBCHANNEL IS FREE - SEND THE ACKNOWLEDGEMENT

                                     01BF 49300 ;

                                     01BF 49400 10$:

                          52     DD  01BF 49500 	PUSHL	R2			; SAVE SSB ADDRESS

            51            09     9A  01C1 49600 	MOVZBL	#NET_ACKLTH,R1		; MSG LTH

                          27     10  01C4 49700 	BSBB	NET$ALLOCBUF		; ALLOCATE A MSG BFR

                          04     BA  01C6 49800 	POPR	#^M<R2>			; RESTORE SSB ADDRESS

                          83     D4  01C8 49900 	CLRL	(R3)+			; NO SSB - DON'T WANT TIPC BUMPED FOR NONDATA

                          83     B4  01CA 50000 	CLRW	(R3)+			; MAKE COMMON WITH DATA MSGS

            83            04     90  01CC 50100 	MOVB	#<NET$C_MSGFLG@NET$V_MSGID>!- ; MSGID BYTE

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  14

X01             ACK MSG TRANSMISSION                                                                                             (1)



                                     01CF 50200 		 <NET$C_ACKM@NET$V_MSGTYP>,(R3)+ ; MSGTYP

            83         18 A5     D0  01CF 50300 	MOVL	UCB$W_DSTADDR(R5),(R3)+	; PUT IN DSTADDR/SRCADDR

            52         74 A5     D1  01D3 50400 	CMPL	UCB$L_NT_DATSSB(R5),R2	; IS MSG FOR DATA SUBCHANNEL?

                          04     13  01D7 50500 	BEQL	20$			; IF EQL YES

         FB A3            10     88  01D9 50600 	BISB	#NET$M_INTLS,-5(R3)	; ACK INT/LS SUBCHANNEL

                                     01DD 50700 20$:

            83            58     B0  01DD 50800 	MOVW	R8,(R3)+		; STORE THE ACKNUM FIELD

            54         7C A5     B0  01E0 50900 	MOVW	UCB$W_NT_CHAN(R5),R4	; GET THE PHYLK CHANNEL NUMBER

                          52     DD  01E4 51000 	PUSHL	R2			; SAVE SSB ADDRESS

                          FE17'  30  01E6 51100 	BSBW	NET$XMT_MSG		; SEND THE ACK

                          52   8ED0  01E9 51200 	POPL	R2			; RESTORE THE SSB ADDRESS

                                 05  01EC 51300 	RSB				; DONE

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  15

X01             ACK MSG TRANSMISSION                                                                                             (1)



                                     01ED 51500 ;

                                     01ED 51600 ; NET$ALLOCBUF - ALLOCATE AND PARTIALLY FILL IN A BUFFERED I/O BLOCK

                                     01ED 51700 ;

                                     01ED 51800 ; INPUT PARAMETERS:

                                     01ED 51900 ;

                                     01ED 52000 ;	R1 - LTH OF DATA PORTION OF BLOCK

                                     01ED 52100 ;

                                     01ED 52200 ; OUTPUT PARAMETERS:

                                     01ED 52300 ;

                                     01ED 52400 ;	R1 - LTH OF BLOCK

                                     01ED 52500 ;	R3 - PTR TO DATA AREA OF BLOCK

                                     01ED 52600 ;	R6 - BASE OF BLOCK, MARKED AS "CONTROL-OUT CXB"

                                     01ED 52700 ;

                                     01ED 52800 

                                     01ED 52900 NET$ALLOCBUF::

            51            18     C0  01ED 53000 	ADDL	#CXB$C_LENGTH,R1	; ACCOUNT FOR OVERHEAD

                          13     10  01F0 53100 	BSBB	NET$ALONONPAGED		; ALLOCATE A BUFFER

            56            52     D0  01F2 53200 	MOVL	R2,R6			; COPY THE BASE ADDRESS

            53         08 A6     DE  01F5 53300 	MOVAL	UCB$W_SIZE(R6),R3	; SET PTR FOR FILLING IN

            83            51     B0  01F9 53400 	MOVW	R1,(R3)+		; SET THE BLOCK SIZE

            83            1B     90  01FC 53500 	MOVB	#DYN$C_CXB,(R3)+	; SET THE BLOCK TYPE

            83            01     90  01FF 53600 	MOVB	#CXB$C_DDCCON,(R3)+	; SET BLOCK TYPE TO "CONTROL OUT"

                          83     7C  0202 53700 	CLRQ	(R3)+			; RESET MSG LTH, CHANNEL, AND BFR LINK

                                 05  0204 53800 	RSB				; DONE

                                     0205 53900 

                                     0205 54000 

                                     0205 54100 ;++

                                     0205 54200 ;

                                     0205 54300 ; NET$ALONONPAGED - ALLOCATE A MEMORY BLOCK

                                     0205 54400 ; NET$ALLOC_BLOCK - SAME, BUT AST'S ARE ASSUMED TO BE DISABLED

                                     0205 54500 ;

                                     0205 54600 ; INPUTS:	R1 - BLOCK SIZE

                                     0205 54700 ;--

                                     0205 54800 

                                     0205 54900 NET$ALONONPAGED::

                          51     DD  0205 55000 	PUSHL	R1			; SAVE LTH

                                     0207 55100 	$SETAST_S	#OFF		; TURN OFF AST'S

                          51   8ED0  0210 55200 	POPL	R1			; RESTORE LTH

                          10     10  0213 55300 	BSBB	NET$ALLOC_BLOCK		; ALLOCATE A BLOCK

            7E            50     7D  0215 55400 	MOVQ	R0,-(SP)		; SAVE RETURN CODE + LTH

                                     0218 55500 	$SETAST_S	#ON		; TURN ON AST'S

            50            8E     7D  0221 55600 	MOVQ	(SP)+,R0		; RESTORE RETURN CODE + LTH

                                 05  0224 55700 	RSB				; DONE

                                     0225 55800 

                                     0225 55900 

                                     0225 56000 NET$ALLOC_BLOCK::

            51            0F     C0  0225 56100 	ADDL	#MASK,R1		;ROUND SIZE UP TO NEXT BOUNDARY

            51            0F     CA  0228 56200 	BICL	#MASK,R1		;TRUNCATE SIZE BACK TO MULTIPLE

                          13     13  022B 56300 	BEQL	20$			;IF EQL BAD ALLOCATION REQUEST

            53       0000'CF     9E  022D 56400 	MOVAB	W^NET$GQ_POOL_HD,R3	; GET ADDRESS OF MEMORY LISTHEAD

                 00000000'EF     16  0232 56500 	JSB	EXE$ALLOCATE		;ALLOCATE BLOCK

            01            50     E9  0238 56600 	BLBC	R0,10$			; IF LBC ERROR

                                 05  023B 56700 	RSB				; DONE

                                     023C 56800 10$:

                                     023C 56900 	BUG_CHECK	NETNOBUF,FATAL	; ALLOCATION FAILURE

                                     0240 57000 20$:	BUG_CHECK	BADALORQSZ,FATAL ;BAD ALLOCATION REQUEST SIZE

                                     0244 57100 

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  16

X01             ACK MSG TRANSMISSION                                                                                             (1)



                                     0244 57200 	.END

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  17

SYMBOL TABLE                                                                                                                     (1)



ACK_COMMON       000001B4 R     04   DYN$C_PFL      = 00000023            IRP$V_DIAGBUF  = 00000007            

ACK_ERROR        0000002B R     04   DYN$C_PIB      = 00000022            IRP$V_FCODE    = 00000000            

BIT...         = 00000002            DYN$C_PQB      = 0000000D            IRP$V_FMOD     = 00000006            

BUG$_BADALORQSZ  ********   X   04   DYN$C_PTR      = 00000025            IRP$V_FUNC     = 00000001            

BUG$_BADDALRQSZ  ********   X   04   DYN$C_RVT      = 0000000E            IRP$V_MBXIO    = 0000000A            

BUG$_NETNOBUF    ********   X   04   DYN$C_SFT      = 00000024            IRP$V_MODE     = 00000000            

BUG$_WACKQEMPTY  ********   X   04   DYN$C_SSB      = 0000001D            IRP$V_PAGIO    = 00000002            

CHK4096          00000191 R     04   DYN$C_TQE      = 0000000F            IRP$V_PHYSIO   = 00000008            

CHKACKNUM        0000001A R     04   DYN$C_TYPAHD   = 00000014            IRP$V_PRIVIO   = 00000009            

CHKACKNUM1       0000001E R     04   DYN$C_UCB      = 00000010            IRP$V_SWAPIO   = 00000006            

CHKACKNUM2       0000002E R     04   DYN$C_VCB      = 00000011            IRP$V_VIRTUAL  = 00000004            

COMMON           0000000A R     04   DYN$C_WCB      = 00000012            IRP$W_ABCNT      0000003C            

CXB$B_CODE       0000000B            EXE$ALLOCATE     ********   X   04   IRP$W_BCNT       00000032            

CXB$B_TYPE       0000000A            EXE$DEALLOCATE   ********   X   04   IRP$W_BOFF       00000030            

CXB$C_DDCCON   = 00000001            EXE$DEANONPAGED  ********   X   04   IRP$W_CHAN       00000028            

CXB$C_DDCDAT   = 00000002            GBL...         = 00000000            IRP$W_FUNC       00000020            

CXB$C_DDCERR   = 00000004            IRP$B_CARCON     00000038            IRP$W_OBCNT      0000003E            

CXB$C_DDCRCV   = 00000003            IRP$B_EFN        00000022            IRP$W_SIZE       00000008            

CXB$C_LENGTH     00000018            IRP$B_PRI        00000023            IRP$W_STS        0000002A            

CXB$C_NSPSTART   0000001A            IRP$B_RMOD       0000000B            IRP$W_TT_PRMPT   0000003C            

CXB$K_LENGTH     00000018            IRP$B_TYPE       0000000A            MASK           = 0000000F            

CXB$K_NSPSTART   0000001A            IRP$C_LENGTH     0000004C            NAK_COMMON       0000013A R     04   

CXB$L_BL         00000004            IRP$K_LENGTH     0000004C            NET$ALLOCBUF     000001ED RG    04   

CXB$L_FL         00000000            IRP$L_AST        00000010            NET$ALLOC_BLOCK  00000225 RG    04   

CXB$L_IRP        00000010            IRP$L_ASTPRM     00000014            NET$ALONONPAGED  00000205 RG    04   

CXB$L_LINK       00000010            IRP$L_DIAGBUF    00000044            NET$AST_EXIT     ********   X   04   

CXB$L_SSB        00000014            IRP$L_IOQBL      00000004            NET$C_ACKM     = 00000001            

CXB$W_CHANNEL    00000010            IRP$L_IOQFL      00000000            NET$C_ACKOFF   = 00000005            

CXB$W_LENGTH     0000000C            IRP$L_IOSB       00000024            NET$C_CC       = 00000002            

CXB$W_OFFSET     0000000E            IRP$L_IOST1      00000034            NET$C_CI       = 00000001            

CXB$W_SIZE       00000008            IRP$L_IOST2      00000038            NET$C_CTRLM    = 00000002            

DYN$C_ACB      = 00000002            IRP$L_MEDIA      00000034            NET$C_DATAM    = 00000000            

DYN$C_ADP      = 00000001            IRP$L_PID        0000000C            NET$C_DATREQ   = 00000000            

DYN$C_AQB      = 00000003            IRP$L_SEGVBN     00000040            NET$C_DC       = 00000004            

DYN$C_BRDCST   = 0000001A            IRP$L_SEQNUM     00000048            NET$C_DI       = 00000003            

DYN$C_BUFIO    = 00000013            IRP$L_SVAPTE     0000002C            NET$C_INTREQ   = 00000001            

DYN$C_CEB      = 00000004            IRP$L_TT_TERM    00000038            NET$C_LOGLNK   = 00000001            

DYN$C_CRB      = 00000005            IRP$L_UCB        0000001C            NET$C_MAXNSPOVH= 00000018            

DYN$C_CXB      = 0000001B            IRP$L_WIND       00000018            NET$C_MSGFLG   = 00000000            

DYN$C_DDB      = 00000006            IRP$M_BUFIO    = 00000001            NET$C_NODMSG   = 00000005            

DYN$C_DPT      = 0000001E            IRP$M_CHAINED  = 00000020            NET$C_NOP      = 00000000            

DYN$C_FCB      = 00000007            IRP$M_COMPLX   = 00000008            NET$C_NSPOVH   = 0000000B            

DYN$C_FRK      = 00000008            IRP$M_DIAGBUF  = 00000080            NET$C_NSPV3    = 00000000            

DYN$C_GSD      = 00000015            IRP$M_FUNC     = 00000002            NET$C_PIGGYBACK= 00008000            

DYN$C_IDB      = 00000009            IRP$M_MBXIO    = 00000400            NET$C_PRINRM   = 00000001            

DYN$C_IRP      = 0000000A            IRP$M_PAGIO    = 00000004            NET$C_RTHDR    = 00000002            

DYN$C_JPB      = 0000001F            IRP$M_PHYSIO   = 00000100            NET$C_RTHDROVH = 0000000F            

DYN$C_KFH      = 00000026            IRP$M_PRIVIO   = 00000200            NET$DEANONPAGED  000000EB RG    04   

DYN$C_KFI      = 00000018            IRP$M_SWAPIO   = 00000040            NET$FAKE_ACK     00000033 RG    04   

DYN$C_LOG      = 0000000B            IRP$M_VIRTUAL  = 00000010            NET$GQ_POOL_HD   00000000 RG    03   

DYN$C_MTL      = 00000019            IRP$Q_NT_PRVMSK  0000003C            NET$GQ_USR_STAT  ********   X   04   

DYN$C_MVL      = 00000016            IRP$S_FCODE    = 00000006            NET$GW_MSGXMT    ********   X   04   

DYN$C_NDB      = 0000001C            IRP$S_FMOD     = 0000000A            NET$IODONE       ********   X   04   

DYN$C_NET      = 00000017            IRP$S_MODE     = 00000002            NET$M_BOM      = 00000020            

DYN$C_PBH      = 00000020            IRP$V_BUFIO    = 00000000            NET$M_EOM      = 00000040            

DYN$C_PCB      = 0000000C            IRP$V_CHAINED  = 00000005            NET$M_INTLS    = 00000010            

DYN$C_PDB      = 00000021            IRP$V_COMPLX   = 00000003            NET$M_INTMSG   = 00000020            

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  18

SYMBOL TABLE                                                                                                                     (1)



NET$NAK_DATA     00000136 RG    04   PR$_ACCR       = 00000029            SSB$S_NAKP     = 00000003            

NET$NAK_INTER    00000130 RG    04   PR$_ACCS       = 00000028            SSB$V_ACKP     = 0000000F            

NET$PRECHK       00000141 RG    04   PR$_ASTLVL     = 00000013            SSB$V_NAKP     = 0000000C            

NET$PROT_ERROR   ********   X   04   PR$_ESP        = 00000001            SSB$W_RCVSEGACK  0000001A            

NET$RCVACKD      00000006 RG    04   PR$_ICCS       = 00000018            SSB$W_RCVSEGNUM  00000018            

NET$RCVACKI      00000000 RG    04   PR$_ICR        = 0000001A            SSB$W_SIZE       00000008            

NET$RE_XMT_MSG   ********   X   04   PR$_IPL        = 00000012            SSB$W_XMTSEGACK  0000001E            

NET$S_ACKOPT   = 00000001            PR$_ISP        = 00000004            SSB$W_XMTSEGNUM  0000001C            

NET$S_BOM      = 00000001            PR$_KSP        = 00000000            SYS$SETAST       ********   X   04   

NET$S_EFMT     = 00000002            PR$_MAPEN      = 00000038            UCB$B_AMOD       00000053            

NET$S_EOM      = 00000001            PR$_NICR       = 00000019            UCB$B_CEX        00000077            

NET$S_FCINT    = 00000002            PR$_P0BR       = 00000008            UCB$B_CM1        0000004A            

NET$S_FCMOD    = 00000002            PR$_P0LR       = 00000009            UCB$B_CM2        0000004B            

NET$S_FCOPT    = 00000002            PR$_P1BR       = 0000000A            UCB$B_DEVCLASS   00000038            

NET$S_INTLS    = 00000001            PR$_P1LR       = 0000000B            UCB$B_DEVTYPE    00000039            

NET$S_INTMSG   = 00000001            PR$_PCBB       = 00000010            UCB$B_DIPL       00000052            

NET$S_LTYPE    = 00000002            PR$_PME        = 0000003D            UCB$B_DX_SCTCNT  000000A6            

NET$S_MPRI     = 00000002            PR$_RXCS       = 00000020            UCB$B_ERTCNT     00000070            

NET$S_MSGFLG   = 00000005            PR$_RXDB       = 00000021            UCB$B_ERTMAX     00000071            

NET$S_MSGID    = 00000002            PR$_SBIER      = 00000034            UCB$B_ESCAPE     0000004B            

NET$S_MSGTYP   = 00000002            PR$_SBIFS      = 00000030            UCB$B_FEX        00000076            

NET$S_REMLFS   = 00000004            PR$_SBIMT      = 00000033            UCB$B_FIPL       0000000B            

NET$S_RFMT     = 00000001            PR$_SBIQC      = 00000036            UCB$B_LOCSRV     0000003C            

NET$S_SUBTYP   = 00000003            PR$_SBIS       = 00000031            UCB$B_OFFNDX     00000094            

NET$UP_COUNTER   ********   X   04   PR$_SBISC      = 00000032            UCB$B_OFFRTC     00000095            

NET$USRXMT       ********   X   04   PR$_SBITA      = 00000035            UCB$B_REMSRV     0000003D            

NET$V_ACKOPT   = 00000004            PR$_SBR        = 0000000C            UCB$B_SECTORS    0000003C            

NET$V_BOM      = 00000005            PR$_SCBB       = 00000011            UCB$B_SLAVE      00000074            

NET$V_EFMT     = 00000004            PR$_SID        = 0000003E            UCB$B_SPR        00000075            

NET$V_EOM      = 00000006            PR$_SIRR       = 00000014            UCB$B_STATE      00000052            

NET$V_FCINT    = 00000002            PR$_SISR       = 00000015            UCB$B_TRACKS     0000003D            

NET$V_FCMOD    = 00000000            PR$_SLR        = 0000000D            UCB$B_TYPE       0000000A            

NET$V_FCOPT    = 00000002            PR$_SSP        = 00000002            UCB$B_VERTSZ     0000003F            

NET$V_INTLS    = 00000004            PR$_TBIA       = 00000039            UCB$C_LENGTH     00000074            

NET$V_INTMSG   = 00000005            PR$_TBIS       = 0000003A            UCB$C_LOGLNK   = 00000001            

NET$V_LTYPE    = 00000000            PR$_TODR       = 0000001B            UCB$K_LENGTH     00000074            

NET$V_MPRI     = 00000002            PR$_TXCS       = 00000022            UCB$L_AMB        00000054            

NET$V_MSGFLG   = 00000002            PR$_TXDB       = 00000023            UCB$L_ASTQBL     00000010            

NET$V_MSGID    = 00000000            PR$_USP        = 00000003            UCB$L_ASTQFL     0000000C            

NET$V_MSGTYP   = 00000002            PR$_WCSA       = 0000002C            UCB$L_CPID       0000005C            

NET$V_REMLFS   = 00000004            PR$_WCSD       = 0000002D            UCB$L_CRB        00000020            

NET$V_RFMT     = 00000006            PROCESS_ACK      0000000F R     04   UCB$L_DDB        00000024            

NET$V_SUBTYP   = 00000004            SS$_NORMAL       ********   X   04   UCB$L_DEVCHAR    00000034            

NET$XMT_ACK      000001AD RG    04   SSB$B_FCVAL      00000021            UCB$L_DEVDEPEND  0000003C            

NET$XMT_MSG      ********   X   04   SSB$B_PNDCNT     00000023            UCB$L_DPC        00000080            

NET$XMT_NAK      000001A4 RG    04   SSB$B_REQCNT     00000022            UCB$L_DUETIM     0000005C            

NET_ACK        = 00000000            SSB$B_TIPC       00000020            UCB$L_DX_BFPNT   0000009C            

NET_ACKLTH     = 00000009            SSB$B_TYPE       0000000A            UCB$L_DX_BUF     00000098            

NET_M_ACKFLG   = 00008000            SSB$C_LENGTH     00000024            UCB$L_DX_RXDB    000000A0            

NET_NAK        = 00000001            SSB$K_LENGTH     00000024            UCB$L_EMB        00000078            

NET_S_ACKNUM   = 0000000C            SSB$L_UCB        00000014            UCB$L_FIRST      00000014            

NET_S_QUAL     = 00000003            SSB$L_WACKQBL    00000010            UCB$L_FPC        0000000C            

NET_V_ACKFLG   = 0000000F            SSB$L_WACKQFL    0000000C            UCB$L_FQBL       00000004            

NET_V_ACKNUM   = 00000000            SSB$L_XQBL       00000004            UCB$L_FQFL       00000000            

NET_V_QUAL     = 0000000C            SSB$L_XQFL       00000000            UCB$L_FR3        00000010            

OFF            = 00000000            SSB$M_ACKP     = 00008000            UCB$L_FR4        00000014            

ON             = 00000001            SSB$M_NAKP     = 00007000            UCB$L_IOQBL      00000044            

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   VAX-11 MACRO X0.3-11               Page  19

SYMBOL TABLE                                                                                                                     (1)



UCB$L_IOQFL      00000040            UCB$V_JOB      = 00000000            

UCB$L_IRP        0000004C            UCB$V_LNKPRI   = 00000006            

UCB$L_LINK       0000002C            UCB$V_LTYPE    = 00000000            

UCB$L_LOGADR     00000064            UCB$V_MOUNTING = 00000009            

UCB$L_MAXBLOCK   00000084            UCB$V_MSGACK   = 00000004            

UCB$L_MEDIA      0000008C            UCB$V_MSGFLO   = 00000003            

UCB$L_NT_DATSSB  00000074            UCB$V_NOCNVRT  = 00000002            

UCB$L_NT_INTSSB  00000078            UCB$V_NT_BFROVF= 00000002            

UCB$L_OPCNT      00000060            UCB$V_NT_BREAK = 00000005            

UCB$L_OWNUIC     0000001C            UCB$V_NT_NAME  = 00000004            

UCB$L_PID        00000028            UCB$V_ONLINE   = 00000004            

UCB$L_RQBL       00000004            UCB$V_POWER    = 00000005            

UCB$L_RQFL       00000000            UCB$V_PRMMBX   = 00000000            

UCB$L_SVAPTE     00000068            UCB$V_SEGFLO   = 00000002            

UCB$L_SVPN       00000064            UCB$V_TIM      = 00000000            

UCB$L_TTCHAR     0000003C            UCB$V_TIMOUT   = 00000006            

UCB$L_VCB        00000030            UCB$V_TT_NOTIF = 00000002            

UCB$M_BACKP    = 00000020            UCB$V_TT_TIMO  = 00000001            

UCB$M_BSY      = 00000100            UCB$V_UNLOAD   = 0000000C            

UCB$M_CANCEL   = 00000008            UCB$V_VALID    = 0000000B            

UCB$M_DEADMO   = 00000400            UCB$W_BCNT       0000006E            

UCB$M_DELMBX   = 00000002            UCB$W_BCR        00000096            

UCB$M_DIAGBUF  = 00000002            UCB$W_BOFF       0000006C            

UCB$M_DX_WRITE = 00000008            UCB$W_BUFQUO     00000018            

UCB$M_ECC      = 00000001            UCB$W_BYTESTOGO  0000003E            

UCB$M_ERLOGIP  = 00000004            UCB$W_CHARGE     0000004A            

UCB$M_INT      = 00000002            UCB$W_CYLINDERS  0000003E            

UCB$M_INTTYPE  = 00000080            UCB$W_DA         0000008C            

UCB$M_JOB      = 00000001            UCB$W_DC         0000008E            

UCB$M_MOUNTING = 00000200            UCB$W_DEVBUFSIZ  0000003A            

UCB$M_NOCNVRT  = 00000004            UCB$W_DEVSTS     0000005A            

UCB$M_NT_BFROVF= 00000004            UCB$W_DIRSEQ     00000088            

UCB$M_NT_BREAK = 00000020            UCB$W_DSTADDR    00000018            

UCB$M_NT_NAME  = 00000010            UCB$W_DX_BCR     000000A4            

UCB$M_ONLINE   = 00000010            UCB$W_EC1        00000090            

UCB$M_POWER    = 00000020            UCB$W_EC2        00000092            

UCB$M_PRMMBX   = 00000001            UCB$W_ERRCNT     00000072            

UCB$M_TIM      = 00000001            UCB$W_FUNC       0000007E            

UCB$M_TIMOUT   = 00000040            UCB$W_MB_SEED    FFFFFFFC            

UCB$M_TT_NOTIF = 00000004            UCB$W_MSGCNT     00000016            

UCB$M_TT_TIMO  = 00000002            UCB$W_MSGMAX     00000014            

UCB$M_UNLOAD   = 00001000            UCB$W_NT_CHAN    0000007C            

UCB$M_VALID    = 00000800            UCB$W_OFFSET     0000008A            

UCB$S_LNKPRI   = 00000002            UCB$W_REFC       00000050            

UCB$S_LTYPE    = 00000002            UCB$W_SIZE       00000008            

UCB$T_PARTNER    0000000C            UCB$W_SRCADDR    0000001A            

UCB$V_BACKP    = 00000005            UCB$W_STS        00000058            

UCB$V_BSY      = 00000008            UCB$W_UNIT       00000048            

UCB$V_CANCEL   = 00000003            UCB$W_VPROT      0000001A            

UCB$V_DEADMO   = 0000000A            

UCB$V_DELMBX   = 00000001            

UCB$V_DIAGBUF  = 00000001            

UCB$V_DX_WRITE = 00000003            

UCB$V_ECC      = 00000000            

UCB$V_ERLOGIP  = 00000002            

UCB$V_INT      = 00000001            

UCB$V_INTTYPE  = 00000007            

NETACKNAK       - CHECK DATA PREAMBLE, DO ACK                    22-AUG-1978 00:45:21   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  

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

NET_CODE         00000244      04     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

13228. BYTES LEFT IN FREE MEMORY POOL.

2264. BYTES OF RECLAIMED MEMORY.

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

70 MLB DIR RDS - 711 GETS TO DEFINE 25 MACROS. 51 INTER. FILE WRITES. 

