Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/drivers/dcp.lst
There are no other files named dcp.lst in the archive.
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page   1
								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (1)
;	  0001	module DCP (	! DDCMP Protocol Processor
;	  0002			ident = 'X05180',
;	  0003			language (bliss16)
;	  0004			) =
;	  0005	begin
;	  0006	
;	  0007	!
;	  0008	!                    COPYRIGHT (c) 1980, 1981, 1982
;	  0009	!                    DIGITAL EQUIPMENT CORPORATION
;	  0010	!                        Maynard, Massachusetts
;	  0011	!
;	  0012	!     This software is furnished under a license and may  be  used
;	  0013	!     and copied only in accordance with the terms of such license
;	  0014	!     and with the inclusion of the above copyright notice.   This
;	  0015	!     software  or any other copies thereof may not be provided or
;	  0016	!     otherwise made available to any other person.  No  title  to
;	  0017	!     and ownership of the software is hereby transferred.
;	  0018	!
;	  0019	!     The information  in  this  software  is  subject  to  change
;	  0020	!     without  notice  and should not be construed as a commitment
;	  0021	!     by DIGITAL EQUIPMENT CORPORATION.
;	  0022	!
;	  0023	!     DIGITAL assumes no responsibility for the use or reliability
;	  0024	!     of  its  software  on  equipment  which  is  not supplied by
;	  0025	!     DIGITAL.
;	  0026	!
;	  0027	
;	  0028	!++
;	  0029	!
;	  0030	! FACILITY: MCB DDCMP Protocol Driver
;	  0031	!
;	  0032	! ABSTRACT:
;	  0033	!
;	  0034	!	This module contains the DDCMP protocol routines.
;	  0035	!
;	  0036	! ENVIRONMENT: MCB V3.2
;	  0037	!
;	  0038	! AUTHOR: Alan D. Peckham	CREATION DATE: 1-Jul-81
;	  0039	!
;	  0040	! MODIFIED BY:
;	  0041	!
;	  0042	!	Alan D. Peckham, 1-Jul-81: Version 5
;	  0043	! 01	- Rewritten in BLISS
;	  0044	! 02	- Rewrite driver control code to insure device stop requests
;	  0045	!	  are performed.
;	  0046	! 03	- Dot bug in CHANGE_PROTOCOL_STATE.
;	  0047	!	  Wrong event class for maintenance "load me" notification.
;	  0048	!	  Wrong event types for threshold notifications.
;	  0049	! 04	- Fix to insure that there is only one control CCB to driver
;	  0050	!	  at any one timer (confuses the KDP driver).
;	  0051	! 05	- The last fix did not catch all cases in SET_DEVICE.
;	  0052	! 06	- Do not set half duplex in maintenance.
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page   2
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (1)
;	  0053	! 07	- Fix REP timer bug in DCPXCP.
;	  0054	! 08	- Fix state reporting.
;	  0055	! 09	- Out-of-range acks should not dump a data message.
;	  0056	! 10	- Update to NM V3.0.0 .
;	  0057	! 11	- Remove 'counters zeroed' event in DCPNMX.
;	  0058	! 12	- Fix event number for MOP requested event.
;	  0059	! 13	- Get KDP parameters from PLL.
;	  0060	! 14	- De-commit half-duplex.
;	  0061	! 15	- Do not use select timer when in FDX maintenance mode.
;	  0062	! 16	- Poke KDP DEVTYPE in maintenance messages that need it.
;	  0063	! 17	- Handle change in NMX interface in DCPINI.
;	  0064	! 18	- Modify CTLSTR to return the CIRCUIT COST to XPT in C_PRM1.
;	  0065	!--
;	  0066	!
;	  0067	! INCLUDE FILES:
;	  0068	!
;	  0069	
;	  0070	library 'MCBLIB';
;	  0071	
;	  0072	library 'XPORTX';
;	  0073	
;	  0074	library 'NMXLIB';
;	  0075	
;	  0076	$SHOW (NONE)
;	  0077	require 'DLLLIB';
;	  0331	
;	  0332	library 'DCPDAT';
;	  0333	
;	  0334	!
;	  0335	! TABLE OF CONTENTS:
;	  0336	!
;	  0337	
;	  0338	linkage
;	  0339	    DCP_CCB_DB = jsr (register = 4, register = 5) :
;	  0340		nopreserve (0, 1, 2, 3, 4),
;	  0341	    DCP_CCB_DB_STS = jsr (register = 4, register = 5, register = 3) :
;	  0342		nopreserve (0, 1, 2, 3, 4),
;	  0343	    DCP_CCB = jsr (register = 4) :
;	  0344		nopreserve (0, 1, 2, 3),
;	  0345	    DCP_CTR = jsr (register = 0),
;	  0346	    DCP_DB = jsr (register = 5) :
;	  0347		nopreserve (0, 1, 2, 3, 4),
;	  0348	    DCP_DB_N0 = jsr (register = 5) :
;	  0349		preserve (0),
;	  0350	    DCP_DB_CCB = jsr (register = 5, register = 4) :
;	  0351		nopreserve (0, 1, 2, 3),
;	  0352	    DCP_DB_CCB_N0 = jsr (register = 5, register = 4) :
;	  0353		preserve (0) nopreserve (3),
;	  0354	    DCP_DB_CCBR = jsr (register = 5, register = 4) :
;	  0355		nopreserve (0, 1, 2, 3, 4),
;	  0356	    DCP_DB_CCB_HDR = jsr (register = 5, register = 4; register = 4) :
;	  0357		nopreserve (0, 1, 2, 3),
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page   3
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (1)
;	  0358	    DCP_DB_CTR_STS = jsr (register = 5, register = 0, register = 3) :
;	  0359		nopreserve (0, 1, 2, 3),
;	  0360	    DCP_DB_STS = jsr (register = 5, register = 3) :
;	  0361		nopreserve (0, 1, 2, 3);
;	  0362	
;	  0363	forward routine
;	  0364	    BUILD_CONTROL_MESSAGE : DCP_DB,
;	  0365	    BUILD_DATA_MESSAGE : DCP_DB_CCBR,
;	  0366	    BUILD_MAINTENANCE_MESSAGE : DCP_DB_CCBR,
;	  0367	    BUMP_8_BIT_COUNTER : DCP_CTR novalue,
;	  0368	    CCPGET : MCB_DB_CCB novalue,
;	  0369	    CCPSET : MCB_DB_CCB novalue,
;	  0370	    CCPSTP : MCB_DB_CCB novalue,
;	  0371	    CCPSTR : MCB_DB_CCB novalue,
;	  0372	    CHANGE_PROTOCOL_STATE : DCP_DB novalue,
;	  0373	    CKACK : DCP_DB,
;	  0374	    CKREP : DCP_DB novalue,
;	  0375	    CTLSTP : MCB_DB_CCB novalue,
;	  0376	    CTLSTR : MCB_DB_CCB novalue,
;	  0377	    DCPCCP : MCB_DB_CCB_MOD novalue,
;	  0378	    DCPCTL : MCB_DB_CCB_MOD novalue,
;	  0379	    DCPKCP : MCB_DB_CCB novalue,
;	  0380	    DCPRCE : MCB_DB_CCB novalue,
;	  0381	    DCPRCP : MCB_DB_CCB novalue,
;	  0382	    DCPTIM : MCB_DB_CCB_MOD novalue,
;	  0383	    DCPXCP : MCB_DB_CCB novalue,
;	  0384	    DCPXME : MCB_DB_CCB_MOD novalue,
;	  0385	    ENTER_MAINTENANCE : MCB_DB_CCB novalue,
;	  0386	    HEADER_CCB : DCP_DB_CCB_HDR,
;	  0387	    HEADER_FORMAT_ERROR : DCP_DB novalue,
;	  0388	    IGNORE_MESSAGE : DCP_DB novalue,
;	  0389	    INITIALIZE_LINK : MCB_DB_CCB novalue,
;	  0390	    MESSAGE_LENGTH : DCP_CCB,
;	  0391	    PROCESS_ACK_MESSAGE : DCP_DB novalue,
;	  0392	    PROCESS_CONTROL_MESSAGE : DCP_DB_CCBR novalue,
;	  0393	    PROCESS_DATA_MESSAGE : DCP_DB_CCBR novalue,
;	  0394	    PROCESS_MAINTENANCE_MESSAGE : DCP_DB_CCBR novalue,
;	  0395	    PROCESS_NAK_MESSAGE : DCP_DB novalue,
;	  0396	    PROCESS_REP_MESSAGE : DCP_DB novalue,
;	  0397	    PROCESS_SELECT_FLAG : DCP_DB novalue,
;	  0398	    PROCESS_STACK_MESSAGE : DCP_DB novalue,
;	  0399	    PROCESS_START_MESSAGE : DCP_DB novalue,
;	  0400	    RECORD_DRIVER_ERROR : DCP_DB_CCB novalue,
;	  0401	    RECORD_NAK_REASON : DCP_DB novalue,
;	  0402	    RESYNCHRONIZE : DCP_DB novalue,
;	  0403	    RETRANSMIT_UNACKED_MESSAGES : DCP_DB novalue,
;	  0404	    RETURN_ACKED_MESSAGES : DCP_DB novalue,
;	  0405	    SCHEDULE_PERSISTENT_AST : DCP_CCB_DB novalue,
;	  0406	    SCHEDULE_RECEIVE : DCP_CCB_DB novalue,
;	  0407	    SCHEDULE_STATE_AST : DCP_CCB_DB novalue,
;	  0408	    SCHEDULE_TRANSIENT_AST : DCP_CCB_DB novalue,
;	  0409	    SCHEDULE_TRANSMIT : DCP_CCB_DB_STS novalue,
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page   4
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (1)
;	  0410	    SEND_DATA : DCP_DB novalue,
;	  0411	    SEND_PERSISTENT_ERROR : DCP_DB_STS novalue,
;	  0412	    SEND_STATE : DCP_DB novalue,
;	  0413	    SEND_TRANSIENT_ERROR : DCP_DB_STS novalue,
;	  0414	    SET_DEVICE : DCP_DB novalue,
;	  0415	    SET_LINK : DCP_DB novalue,
;	  0416	    STARCE : DCP_DB_CCBR novalue,
;	  0417	    START_DEVICE : DCP_CCB_DB novalue,
;	  0418	    STOP_DEVICE : DCP_CCB_DB novalue,
;	  0419	    STOP_LINK : MCB_DB_CCB novalue,
;	  0420	    SYNCHRONIZE : DCP_DB_CCB_N0 novalue,
;	  0421	    TERMINATE_SELECTION_INTERVAL : DCP_DB novalue,
;	  0422	    TEST_RECEIVE_THRESHOLD : DCP_DB_N0 novalue,
;	  0423	    TEST_THRESHOLD : DCP_DB_CTR_STS novalue,
;	  0424	    TEST_TRANSMIT_THRESHOLD : DCP_DB_N0 novalue,
;	  0425	    TEST_SELECT_THRESHOLD : DCP_DB_N0 novalue,
;	  0426	    TIMCCB : MCB_DB_CCB novalue,
;	  0427	    TIMLTM : MCB_DB novalue,
;	  0428	    TIMPWF : MCB_DB novalue,
;	  0429	    TRANSMIT : MCB_DB_CCB novalue;
;	  0430	
;	  0431	global bind routine
;	  0432	    TSTTH = TEST_TRANSMIT_THRESHOLD : DCP_DB novalue;
;	  0433	
;	  0434	!
;	  0435	! MACROS:
;	  0436	!
;	  0437	
;	  0438	macro
;	M 0439	    $SIGNED (FLD0, FLD1, FLD2, FLD3) =
;	M 0440		%if %null (FLD1)
;	M 0441		%then
;	M 0442		    %fieldexpand (FLD0, 0),
;	M 0443		    %fieldexpand (FLD0, 1),
;	M 0444		    %fieldexpand (FLD0, 2)
;	M 0445		%else
;	M 0446		    FLD0, FLD1, FLD2
;	  0447		%fi, 1 %;
;	  0448	
;	  0449	macro
;	M 0450	    FLUSH_QUEUE (QUEUE, RETURN_CALL) =
;	M 0451		while 1 eql 1 do
;	M 0452		    begin
;	M 0453	
;	M 0454		    local
;	M 0455			_DCP_CCB : ref block field (C_FIELDS);
;	M 0456	
;	M 0457		    if not CMQRM$ (QUEUE, _DCP_CCB) then exitloop;
;	M 0458	
;	M 0459		    RETURN_CALL (._DCP_CCB %if not %null (%remaining) %then , %remaining %fi);
;	  0460		    end %;
;	  0461	
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page   5
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (1)
;	  0462	!
;	  0463	! EQUATED SYMBOLS:
;	  0464	!
;	  0465	
;	  0466	literal
;	  0467	    TRUE = 1 EQL 1,
;	  0468	    FALSE = 1 EQL 0,
;	  0469	    NO_OPERATION = 0;
;	  0470	
;	  0471	literal
;	  0472	    LCL = 0,
;	  0473	    RMT = 1;
;	  0474	
;	  0475	macro
;	  0476	    C_HANDLE = %fieldexpand (C_LIN, 0), 0, %bpval, 0 %;
;	  0477	
;	  0478	global literal
;	  0479	    %name ('D.LEN') = D_LENGTH*%upval;
;	  0480	
;	  0481	!
;	  0482	! OWN STORAGE:
;	  0483	!
;	  0484	
;	  0485	external routine
;	  0486	    $DSPCR : novalue;
;	  0487	
;	P 0488	$MCB_PROCESS (
;	P 0489	    NAME = DCP,
;	P 0490	    DLC_DISPATCH = TABLE$ ($DSPCR, FC_CCP,
;	P 0491		(FC_CTL, DCPCTL),
;	P 0492		(FC_XME, DCPXME),
;	P 0493		(FC_RCE, DCPRCE),
;	P 0494		(FC_TIM, DCPTIM),
;	P 0495		(FC_XCP, DCPXCP),
;	P 0496		(FC_RCP, DCPRCP),
;	P 0497		(FC_KCP, DCPKCP),
;	  0498		(FC_CCP, DCPCCP)));
;	  0499	
;	  0500	!
;	  0501	! EXTERNAL REFERENCES:
;	  0502	!
;	  0503	
;	  0504	linkage
;	  0505	    DDM_CCB = jsr (register = 4) : nopreserve (4);
;	  0506	
;	  0507	external routine
;	  0508	    DCPNM : DCP_DB_CCBR novalue,
;	  0509	    TIMPIN : MCB_DB novalue;
;	  0510	
;	  0511	external
;	  0512	    MCB$GAW_PROCESS_DATA_BASE : vector [2],
;	  0513	    MCB$GW_PROCESS_HANDLE;
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page   6
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (1)
;	  0514	
;	  0515	bind
;	  0516	    DB_BIAS = MCB$GAW_PROCESS_DATA_BASE [0];
;	  0517	
;	  0518	macro
;	M 0519	    GET_DCP_DATA_BASE (NAME) =
;	M 0520		%if %declared (NAME)
;	M 0521		%then map NAME : ref
;	M 0522		%else bind NAME = .MCB$GAW_PROCESS_DATA_BASE [1] :
;	  0523		%fi block field (D_FIELDS); %;
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page   7
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (2)
;	  0524	routine BUILD_CONTROL_MESSAGE
;	  0525	
;	  0526	!++
;	  0527	! FUNCTIONAL DESCRIPTION:
;	  0528	!
;	  0529	!
;	  0530	! FORMAL PARAMETERS:
;	  0531	!
;	  0532	       (DB : ref block field (D_FIELDS))
;	  0533	!
;	  0534	! IMPLICIT INPUTS:
;	  0535	!
;	  0536	! IMPLICIT OUTPUTS:
;	  0537	!	None
;	  0538	!
;	  0539	! ROUTINE VALUE:
;	  0540	!
;	  0541		: DCP_DB =
;	  0542	!
;	  0543	! SIDE EFFECTS:
;	  0544	!	None
;	  0545	!--
;	  0546	
;	  0547	    begin
;	  0548	
;	  0549	    local
;	  0550		CCB : ref block field (C_FIELDS),
;	  0551		PTR;
;	  0552	
;	  0553	    if (PTR = HEADER_CCB (DB [D_TIM], 0; CCB)) eqla 0 then return .PTR;
;	  0554	
;	  0555	    ch$wchar_a (CM_ENQ, PTR);
;	  0556	
;	  0557	    selectone TRUE of
;	  0558		set
;	  0559		[.DB [SS_SEND_STACK]] :
;	  0560		    begin
;	  0561		    DB [SS_SEND_STACK] = FALSE;
;	  0562		    DB [SS_START_REP_TIMER] = TRUE;
;	  0563		    TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
;	  0564		    ch$wchar_a (MT_STK, PTR);
;	  0565		    ch$wchar_a (0, PTR);
;	  0566		    ch$wchar_a (0, PTR);
;	  0567		    ch$wchar_a (0, PTR);
;	  0568		    ch$wchar_a (1, PTR);
;	  0569	
;	  0570		    if .DB [L_PROTOCOL] eql DP_DMC then SYNCHRONIZE (DB [D_TIM], .CCB);
;	  0571	
;	  0572		    end;
;	  0573		[.DB [SS_SEND_START]] :
;	  0574		    begin
;	  0575		    DB [SS_SEND_START] = FALSE;
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page   8
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (2)
;	  0576		    DB [SS_START_REP_TIMER] = TRUE;
;	  0577		    TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
;	  0578		    ch$wchar_a (MT_STR, PTR);
;	  0579		    ch$wchar_a (0, PTR);
;	  0580		    ch$wchar_a (0, PTR);
;	  0581		    ch$wchar_a (0, PTR);
;	  0582		    ch$wchar_a (1, PTR);
;	  0583	
;	  0584		    if .DB [L_PROTOCOL] eql DP_DMC then SYNCHRONIZE (DB [D_TIM], .CCB);
;	  0585	
;	  0586		    end;
;	  0587		[.DB [SS_SEND_NAK]] :
;	  0588		    begin
;	  0589		    DB [SS_SEND_NAK] = FALSE;
;	  0590		    ch$wchar_a (MT_NAK, PTR);
;	  0591		    ch$wchar_a (.DB [S_PENDING_NAK_REASON], PTR);
;	  0592		    ch$wchar_a (.DB [S_R], PTR);
;	  0593		    ch$wchar_a (0, PTR);
;	  0594		    ch$wchar_a (1, PTR);
;	  0595		    SYNCHRONIZE (DB [D_TIM], .CCB);
;	  0596		    end;
;	  0597		[.DB [SS_SEND_REP]] :
;	  0598		    begin
;	  0599		    DB [SS_SEND_REP] = FALSE;
;	  0600		    ch$wchar_a (MT_REP, PTR);
;	  0601		    ch$wchar_a (0, PTR);
;	  0602		    ch$wchar_a (0, PTR);
;	  0603		    ch$wchar_a (.DB [S_N], PTR);
;	  0604		    ch$wchar_a (1, PTR);
;	  0605		    SYNCHRONIZE (DB [D_TIM], .CCB);
;	  0606		    end;
;	  0607		[.DB [SS_SEND_ACK]] :
;	  0608		    begin
;	  0609		    DB [SS_SEND_ACK] = FALSE;
;	  0610		    ch$wchar_a (MT_ACK, PTR);
;	  0611		    ch$wchar_a (0, PTR);
;	  0612		    ch$wchar_a (.DB [S_R], PTR);
;	  0613		    ch$wchar_a (0, PTR);
;	  0614		    ch$wchar_a (1, PTR);
;	  0615	
;	  0616		    if .DB [L_PROTOCOL] eql DP_DMC then SYNCHRONIZE (DB [D_TIM], .CCB);
;	  0617	
;	  0618		    end;
;	  0619		tes;
;	  0620	
;	  0621	    if .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0
;	  0622	    then
;	  0623		CCB [C_PRM4] = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)];
;	  0624	
;	  0625	    $MCB_QUEUE_CCB (DB [L_PRE_TRANSMIT], .CCB);
;	  0626	    DB [S_MOTD] = .DB [S_MOTD] + 1;
;	  0627	    .PTR
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page   9
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (2)
;	  0628	    end;			!of routine BUILD_CONTROL_MESSAGE
						.TITLE	DCP
						.IDENT	/X05180/
000000						.PSECT	......,  D  
000000	014610 				HEADER: .RAD50	/DCP/
000002	000403 					.WORD	403
000004	000000 					.WORD	0
000006	000000 					.WORD	0
000010	000000 					.WORD	0
000012	000000G					.WORD	.DSPCR
000014	000000'					.WORD	P.AAA
000016	000000G					.WORD	.DSPCR
000020	000000G					.WORD	MCB$V0
000022	000000G					.WORD	MCB$V1
000024	140310 					.WORD	140310
000026	143716 					.WORD	143716
000030	001400 					.WORD	1400
000032	000000 					.WORD	0
000034	000000 					.WORD	0
000036	000000 					.WORD	0
000000						.PSECT	$PLIT$,  RO ,  D  
000000	000000G				P.AAA:	.WORD	$DSPCR
000002	000000V					.WORD	DCPXME
000004	000000V					.WORD	DCPRCE
000006	000000G					.WORD	$DSPCR
000010	000000V					.WORD	DCPCTL
000012	000000V					.WORD	DCPTIM
000014	000000V					.WORD	DCPXCP
000016	000000V					.WORD	DCPRCP
000020	000000V					.WORD	DCPKCP
000022	000000V					.WORD	DCPCCP
						.GLOBL	$DSPCR, .DSPCR, MCB$V0, MCB$V1
						.GLOBL	DCPNM, TIMPIN, .CRDAT, .CRPIX
						.GLOBL	$CMQIN
	000164 				D.LEN==		    164
						.SBTTL	BUILD.CONTROL.MESSAGE
000000						.PSECT	$CODE$,  RO 
000000	005004 				BUILD.CONTROL.MESSAGE:
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  10
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (2)
						CLR	R4				;					0553
000002	004767  000000V				JSR	PC,HEADER.CCB
000006	005700 					TST	R0				; PTR
000010	001561 					BEQ	9$
000012	112720  000005 				MOVB	#5,(R0)+			; *,PTR					0555
000016	032765  000400  000002 			BIT	#400,2(R5)			; *,*(DB)				0557
000024	001423 					BEQ	1$
000026	042765  000400  000002 			BIC	#400,2(R5)			; *,*(DB)				0561
000034	052715  001000 				BIS	#1000,(R5)			; *,DB					0562
000040	004767  000000V				JSR	PC,TEST.TRANSMIT.THRESHOLD	;					0563
000044	112720  000007 				MOVB	#7,(R0)+			; *,PTR					0564
000050	105020 					CLRB	(R0)+				; PTR					0565
000052	105020 					CLRB	(R0)+				; PTR					0566
000054	105020 					CLRB	(R0)+				; PTR					0567
000056	112720  000001 				MOVB	#1,(R0)+			; *,PTR					0568
000062	126527  000010  000004 			CMPB	10(R5),#4			; *(DB),*				0570
000070	001115 					BNE	7$
000072	000512 					BR	6$
000074	032765  001000  000002 		1$:	BIT	#1000,2(R5)			; *,*(DB)				0557
000102	001423 					BEQ	2$
000104	042765  001000  000002 			BIC	#1000,2(R5)			; *,*(DB)				0575
000112	052715  001000 				BIS	#1000,(R5)			; *,DB					0576
000116	004767  000000V				JSR	PC,TEST.TRANSMIT.THRESHOLD	;					0577
000122	112720  000006 				MOVB	#6,(R0)+			; *,PTR					0578
000126	105020 					CLRB	(R0)+				; PTR					0579
000130	105020 					CLRB	(R0)+				; PTR					0580
000132	105020 					CLRB	(R0)+				; PTR					0581
000134	112720  000001 				MOVB	#1,(R0)+			; *,PTR					0582
000140	126527  000010  000004 			CMPB	10(R5),#4			; *(DB),*				0584
000146	001066 					BNE	7$
000150	000463 					BR	6$
000152	032765  002000  000002 		2$:	BIT	#2000,2(R5)			; *,*(DB)				0557
000160	001413 					BEQ	3$
000162	042765  002000  000002 			BIC	#2000,2(R5)			; *,*(DB)				0589
000170	112720  000002 				MOVB	#2,(R0)+			; *,PTR					0590
000174	116520  000077 				MOVB	77(R5),(R0)+			; *(DB),PTR				0591
000200	116520  000070 				MOVB	70(R5),(R0)+			; *(DB),PTR				0592
000204	105010 					CLRB	(R0)				; PTR					0593
000206	000415 					BR	4$
000210	032765  004000  000002 		3$:	BIT	#4000,2(R5)			; *,*(DB)				0557
000216	001415 					BEQ	5$
000220	042765  004000  000002 			BIC	#4000,2(R5)			; *,*(DB)				0599
000226	112720  000003 				MOVB	#3,(R0)+			; *,PTR					0600
000232	105020 					CLRB	(R0)+				; PTR					0601
000234	105020 					CLRB	(R0)+				; PTR					0602
000236	116510  000073 				MOVB	73(R5),(R0)			; *(DB),PTR				0603
000242	005200 				4$:	INC	R0				; PTR
000244	112720  000001 				MOVB	#1,(R0)+			; *,PTR					0604
000250	000423 					BR	6$				;					0605
000252	032765  010000  000002 		5$:	BIT	#10000,2(R5)			; *,*(DB)				0557
000260	001421 					BEQ	7$
000262	042765  010000  000002 			BIC	#10000,2(R5)			; *,*(DB)				0609
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  11
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (2)
000270	112720  000001 				MOVB	#1,(R0)+			; *,PTR					0610
000274	105020 					CLRB	(R0)+				; PTR					0611
000276	116520  000070 				MOVB	70(R5),(R0)+			; *(DB),PTR				0612
000302	105020 					CLRB	(R0)+				; PTR					0613
000304	112720  000001 				MOVB	#1,(R0)+			; *,PTR					0614
000310	126527  000010  000004 			CMPB	10(R5),#4			; *(DB),*				0616
000316	001002 					BNE	7$
000320	004767  000000V			6$:	JSR	PC,SYNCHRONIZE
000324	012703  000150 			7$:	MOV	#150,R3				;					0621
000330	060503 					ADD	R5,R3				; DB,*
000332	005713 					TST	(R3)
000334	001403 					BEQ	8$
000336	016564  000152  000032 			MOV	152(R5),32(R4)			; *(DB),*(CCB)				0623
000344	004767  000000G			8$:	JSR	PC,$CMQIN			;					0625
000350	105265  000076 				INCB	76(R5)				; *(DB)					0626
000354	000207 				9$:	RTS	PC				;					0524
; Routine Size:  119 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  12
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (3)
;	  0629	routine BUILD_DATA_MESSAGE
;	  0630	
;	  0631	!++
;	  0632	! FUNCTIONAL DESCRIPTION:
;	  0633	!
;	  0634	!
;	  0635	! FORMAL PARAMETERS:
;	  0636	!
;	  0637	       (DB : ref block field (D_FIELDS),
;	  0638		DCCB : ref block field (C_FIELDS))
;	  0639	!
;	  0640	! IMPLICIT INPUTS:
;	  0641	!
;	  0642	! IMPLICIT OUTPUTS:
;	  0643	!	None
;	  0644	!
;	  0645	! ROUTINE VALUE:
;	  0646	!
;	  0647		: DCP_DB_CCBR =
;	  0648	!
;	  0649	! SIDE EFFECTS:
;	  0650	!	None
;	  0651	!--
;	  0652	
;	  0653	    begin
;	  0654	
;	  0655	    local
;	  0656		CCB : ref block field (C_FIELDS),
;	  0657		CNT,
;	  0658		PTR;
;	  0659	
;	  0660	    if (PTR = HEADER_CCB (DB [D_TIM], .DCCB; CCB)) eqla 0 then return .PTR;
;	  0661	
;	  0662	    DB [SS_SEND_ACK] = FALSE;
;	  0663	    DB [L_MESSAGES_AT_DRIVER] = .DB [L_MESSAGES_AT_DRIVER] + 1;
;	  0664	    CNT = MESSAGE_LENGTH (.CCB);
;	  0665	
;	  0666	    if .DB [S_N] eqlu .DB [S_TM1]
;	  0667	    then
;	  0668		begin
;	  0669		DB [S_N] = .DB [S_N] + 1;
;	  0670		COUNTER_ADD (DB, S_BYTES_TRANSMITTED, .CNT);
;	  0671		COUNTER_INCREMENT (DB, S_DATA_BLOCKS_TRANSMITTED);
;	  0672		end;
;	  0673	
;	  0674	    DB [S_TM1] = .DB [S_TM1] + 1;
;	  0675	    ch$wchar_a (CM_SOH, PTR);
;	  0676	    ch$wchar_a (.CNT <0, 8>, PTR);
;	  0677	    ch$wchar_a (.CNT <8, 8>, PTR);
;	  0678	    ch$wchar_a (.DB [S_R], PTR);
;	  0679	    ch$wchar_a (.DB [S_TM1], PTR);
;	  0680	    ch$wchar_a (1, PTR);
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  13
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (3)
;	  0681	
;	  0682	    if .DB [L_PROTOCOL] eql DP_DMC then SYNCHRONIZE (DB [D_TIM], .CCB);
;	  0683	
;	  0684	    if .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0
;	  0685	    then
;	  0686		CCB [C_PRM4] = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)];
;	  0687	
;	  0688	    $MCB_QUEUE_CCB (DB [L_PRE_TRANSMIT], .CCB);
;	  0689	    DB [S_MOTD] = .DB [S_MOTD] + 1;
;	  0690	    .PTR
;	  0691	    end;			!of routine BUILD_DATA_MESSAGE
						.GLOBL	$AC32, $IC32
						.SBTTL	BUILD.DATA.MESSAGE
000000	010546 				BUILD.DATA.MESSAGE:
						MOV	R5,-(SP)			;					0629
000002	024646 					CMP	-(SP),-(SP)
000004	010566  000002 				MOV	R5,2(SP)
000010	004767  000000V				JSR	PC,HEADER.CCB			;					0660
000014	010016 					MOV	R0,(SP)				; *,PTR
000016	001532 					BEQ	4$
000020	016600  000002 				MOV	2(SP),R0			;					0662
000024	042760  010000  000002 			BIC	#10000,2(R0)
000032	010001 					MOV	R0,R1				;					0663
000034	105261  000146 				INCB	146(R1)
000040	004767  000000V				JSR	PC,MESSAGE.LENGTH		;					0664
000044	010001 					MOV	R0,R1				; *,CNT
000046	012700  000070 				MOV	#70,R0				;					0666
000052	066600  000002 				ADD	2(SP),R0
000056	010002 					MOV	R0,R2
000060	016600  000002 				MOV	2(SP),R0
000064	126062  000073  000001 			CMPB	73(R0),1(R2)
000072	001020 					BNE	1$
000074	010003 					MOV	R0,R3				;					0669
000076	105263  000073 				INCB	73(R3)
000102	010005 					MOV	R0,R5				;					0670
000104	062705  000024 				ADD	#24,R5
000110	010500 					MOV	R5,R0
000112	004767  000000G				JSR	PC,$AC32
000116	016605  000002 				MOV	2(SP),R5			;					0671
000122	062705  000034 				ADD	#34,R5
000126	010500 					MOV	R5,R0
000130	004767  000000G				JSR	PC,$IC32
000134	105262  000001 			1$:	INCB	1(R2)				;					0674
000140	112776  000201  000000 			MOVB	#201,@0(SP)			; *,PTR					0675
000146	005216 					INC	(SP)				; PTR
000150	110176  000000 				MOVB	R1,@0(SP)			; CNT,PTR				0676
000154	005216 					INC	(SP)				; PTR
000156	010100 					MOV	R1,R0				; CNT,*					0677
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  14
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (3)
000160	000300 					SWAB	R0
000162	110076  000000 				MOVB	R0,@0(SP)			; *,PTR
000166	005216 					INC	(SP)				; PTR
000170	111276  000000 				MOVB	(R2),@0(SP)			; *,PTR					0678
000174	005216 					INC	(SP)				; PTR
000176	116276  000001  000000 			MOVB	1(R2),@0(SP)			; *,PTR					0679
000204	005216 					INC	(SP)				; PTR
000206	112776  000001  000000 			MOVB	#1,@0(SP)			; *,PTR					0680
000214	005216 					INC	(SP)				; PTR
000216	016600  000002 				MOV	2(SP),R0			;					0682
000222	126027  000010  000004 			CMPB	10(R0),#4
000230	001003 					BNE	2$
000232	010005 					MOV	R0,R5
000234	004767  000000V				JSR	PC,SYNCHRONIZE
000240	012700  000150 			2$:	MOV	#150,R0				;					0684
000244	066600  000002 				ADD	2(SP),R0
000250	010003 					MOV	R0,R3
000252	005713 					TST	(R3)
000254	001405 					BEQ	3$
000256	016600  000002 				MOV	2(SP),R0			;					0686
000262	016064  000152  000032 			MOV	152(R0),32(R4)			; *,*(CCB)
000270	004767  000000G			3$:	JSR	PC,$CMQIN			;					0688
000274	016601  000002 				MOV	2(SP),R1			;					0689
000300	105261  000076 				INCB	76(R1)
000304	012600 				4$:	MOV	(SP)+,R0			; PTR,*					0629
000306	005726 					TST	(SP)+
000310	012605 					MOV	(SP)+,R5
000312	000207 					RTS	PC
; Routine Size:  102 words,	Routine Base:  $CODE$ + 0356
; Maximum stack depth per invocation:  4 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  15
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (4)
;	  0692	routine BUILD_MAINTENANCE_MESSAGE
;	  0693	
;	  0694	!++
;	  0695	! FUNCTIONAL DESCRIPTION:
;	  0696	!
;	  0697	!
;	  0698	! FORMAL PARAMETERS:
;	  0699	!
;	  0700	       (DB : ref block field (D_FIELDS),
;	  0701		DCCB : ref block field (C_FIELDS))
;	  0702	!
;	  0703	! IMPLICIT INPUTS:
;	  0704	!
;	  0705	! IMPLICIT OUTPUTS:
;	  0706	!	None
;	  0707	!
;	  0708	! ROUTINE VALUE:
;	  0709	!
;	  0710		: DCP_DB_CCBR =
;	  0711	!
;	  0712	! SIDE EFFECTS:
;	  0713	!	None
;	  0714	!--
;	  0715	
;	  0716	    begin
;	  0717	
;	  0718	    local
;	  0719		CCB : ref block field (C_FIELDS),
;	  0720		CNT,
;	  0721		PTR;
;	  0722	
;	  0723	    if (PTR = HEADER_CCB (DB [D_TIM], .DCCB; CCB)) eqla 0 then return .PTR;
;	  0724	
;	  0725	    DB [SS_SEND_SELECT] = TRUE;
;	  0726	    DB [L_MESSAGES_AT_DRIVER] = .DB [L_MESSAGES_AT_DRIVER] + 1;
;	  0727	    CNT = MESSAGE_LENGTH (.CCB);
;	  0728	    ch$wchar_a (CM_DLE, PTR);
;	  0729	    ch$wchar_a (.CNT <0, 8>, PTR);
;	  0730	    ch$wchar_a (.CNT <8, 8>, PTR);
;	  0731	    ch$wchar_a (0, PTR);
;	  0732	    ch$wchar_a (0, PTR);
;	  0733	    ch$wchar_a (1, PTR);
;	  0734	    SYNCHRONIZE (DB [D_TIM], .CCB);
;	  0735	
;	  0736	    if .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0
;	  0737	    then
;	  0738		CCB [C_PRM4] = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)];
;	  0739	
;	  0740	    $MCB_QUEUE_CCB (DB [L_PRE_TRANSMIT], .CCB);
;	  0741	    DB [S_MOTD] = .DB [S_MOTD] + 1;
;	  0742	    .PTR
;	  0743	    end;			!of routine BUILD_MAINTENANCE_MESSAGE
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  16
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (4)
						.SBTTL	BUILD.MAINTENANCE.MESSAGE
000000	005746 				BUILD.MAINTENANCE.MESSAGE:
						TST	-(SP)				;					0692
000002	004767  000000V				JSR	PC,HEADER.CCB			;					0723
000006	010016 					MOV	R0,(SP)				; *,PTR
000010	001453 					BEQ	2$
000012	052765  020000  000002 			BIS	#20000,2(R5)			; *,*(DB)				0725
000020	105265  000146 				INCB	146(R5)				; *(DB)					0726
000024	004767  000000V				JSR	PC,MESSAGE.LENGTH		;					0727
000030	112776  000220  000000 			MOVB	#220,@0(SP)			; *,PTR					0728
000036	005216 					INC	(SP)				; PTR
000040	110076  000000 				MOVB	R0,@0(SP)			; CNT,PTR				0729
000044	005216 					INC	(SP)				; PTR
000046	010001 					MOV	R0,R1				; CNT,*					0730
000050	000301 					SWAB	R1
000052	110176  000000 				MOVB	R1,@0(SP)			; *,PTR
000056	005216 					INC	(SP)				; PTR
000060	105076  000000 				CLRB	@0(SP)				; PTR					0731
000064	005216 					INC	(SP)				; PTR
000066	105076  000000 				CLRB	@0(SP)				; PTR					0732
000072	005216 					INC	(SP)				; PTR
000074	112776  000001  000000 			MOVB	#1,@0(SP)			; *,PTR					0733
000102	005216 					INC	(SP)				; PTR
000104	004767  000000V				JSR	PC,SYNCHRONIZE			;					0734
000110	012703  000150 				MOV	#150,R3				;					0736
000114	060503 					ADD	R5,R3				; DB,*
000116	005713 					TST	(R3)
000120	001403 					BEQ	1$
000122	016564  000152  000032 			MOV	152(R5),32(R4)			; *(DB),*(CCB)				0738
000130	004767  000000G			1$:	JSR	PC,$CMQIN			;					0740
000134	105265  000076 				INCB	76(R5)				; *(DB)					0741
000140	012600 				2$:	MOV	(SP)+,R0			; PTR,*					0692
000142	000207 					RTS	PC
; Routine Size:  50 words,	Routine Base:  $CODE$ + 0672
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  17
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (5)
;	  0744	routine BUMP_8_BIT_COUNTER
;	  0745	
;	  0746	!++
;	  0747	! FUNCTIONAL DESCRIPTION:
;	  0748	!
;	  0749	!
;	  0750	! FORMAL PARAMETERS:
;	  0751	!
;	  0752	       (CTR : ref block)
;	  0753	!
;	  0754	! IMPLICIT INPUTS:
;	  0755	!
;	  0756	! IMPLICIT OUTPUTS:
;	  0757	!	None
;	  0758	!
;	  0759	! ROUTINE VALUE:
;	  0760	!
;	  0761		: DCP_CTR novalue =
;	  0762	!
;	  0763	! SIDE EFFECTS:
;	  0764	!	None
;	  0765	!--
;	  0766	
;	  0767	    begin
;	  0768	    CTR [0, 0, 8, 0] = .CTR [0, 0, 8, 0] + 1;
;	  0769	
;	  0770	    if .CTR [0, 0, 8, 0] eql 0
;	  0771	    then
;	  0772		CTR [0, 0, 8, 0] = .CTR [0, 0, 8, 0] - 1;
;	  0773	
;	  0774	    end;			!of routine BUMP_8_BIT_COUNTER
						.SBTTL	BUMP.8.BIT.COUNTER
000000	105210 				BUMP.8.BIT.COUNTER:
						INCB	(R0)				; CTR					0768
000002	001001 					BNE	1$				;					0770
000004	105310 					DECB	(R0)				; CTR					0772
000006	000207 				1$:	RTS	PC				;					0744
; Routine Size:  4 words,	Routine Base:  $CODE$ + 1036
; Maximum stack depth per invocation:  0 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  18
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (6)
;	  0775	routine CCPGET
;	  0776	
;	  0777	!++
;	  0778	! FUNCTIONAL DESCRIPTION:
;	  0779	!
;	  0780	!
;	  0781	! FORMAL PARAMETERS:
;	  0782	!
;	  0783	       (DB : ref block field (D_FIELDS),
;	  0784		CCB : ref block field (C_FIELDS))
;	  0785	!
;	  0786	! IMPLICIT INPUTS:
;	  0787	!
;	  0788	! IMPLICIT OUTPUTS:
;	  0789	!	None
;	  0790	!
;	  0791	! ROUTINE VALUE:
;	  0792	!
;	  0793		: MCB_DB_CCB novalue =
;	  0794	!
;	  0795	! SIDE EFFECTS:
;	  0796	!	None
;	  0797	!--
;	  0798	
;	  0799	    begin
;	  0800	    DB [K_REGISTER] = .CCB [C_PRM1];
;	  0801	    DB [D_REGISTER] = .CCB [C_PRM2];
;	  0802	    DB [K_VECTOR] = .CCB [C_PRM3];
;	  0803	    DB [K_PRIORITY] = .CCB [C_PRM4];
;	  0804	    $MCB_RETURN_CCB (.CCB);
;	  0805	    end;			!of routine CCPGET
						.GLOBL	$CCBRT
						.SBTTL	CCPGET
000000	016465  000024  000102 		CCPGET: MOV	24(R4),102(R5)			; *(CCB),*(DB)				0800
000006	016465  000026  000106 			MOV	26(R4),106(R5)			; *(CCB),*(DB)				0801
000014	016465  000030  000104 			MOV	30(R4),104(R5)			; *(CCB),*(DB)				0802
000022	116465  000032  000101 			MOVB	32(R4),101(R5)			; *(CCB),*(DB)				0803
000030	004767  000000G				JSR	PC,$CCBRT			;					0804
000034	000207 					RTS	PC				;					0775
; Routine Size:  15 words,	Routine Base:  $CODE$ + 1046
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  19
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (7)
;	  0806	routine CCPSET
;	  0807	
;	  0808	!++
;	  0809	! FUNCTIONAL DESCRIPTION:
;	  0810	!
;	  0811	!
;	  0812	! FORMAL PARAMETERS:
;	  0813	!
;	  0814	       (DB : ref block field (D_FIELDS),
;	  0815		CCB : ref block field (C_FIELDS))
;	  0816	!
;	  0817	! IMPLICIT INPUTS:
;	  0818	!
;	  0819	! IMPLICIT OUTPUTS:
;	  0820	!	None
;	  0821	!
;	  0822	! ROUTINE VALUE:
;	  0823	!
;	  0824		: MCB_DB_CCB novalue =
;	  0825	!
;	  0826	! SIDE EFFECTS:
;	  0827	!	None
;	  0828	!--
;	  0829	
;	  0830	    begin
;	  0831	
;	  0832	    external routine
;	  0833		$DDSTR : DDM_CCB novalue;
;	  0834	
;	  0835	    $DDSTR (.CCB);
;	  0836	    end;			!of routine CCPSET
						.GLOBL	$DDSTR
						.SBTTL	CCPSET
000000	004767  000000G			CCPSET: JSR	PC,$DDSTR			;					0835
000004	000207 					RTS	PC				;					0806
; Routine Size:  3 words,	Routine Base:  $CODE$ + 1104
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  20
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (8)
;	  0837	routine CCPSTP
;	  0838	
;	  0839	!++
;	  0840	! FUNCTIONAL DESCRIPTION:
;	  0841	!
;	  0842	!
;	  0843	! FORMAL PARAMETERS:
;	  0844	!
;	  0845	       (DB : ref block field (D_FIELDS),
;	  0846		CCB : ref block field (C_FIELDS))
;	  0847	!
;	  0848	! IMPLICIT INPUTS:
;	  0849	!
;	  0850	! IMPLICIT OUTPUTS:
;	  0851	!	None
;	  0852	!
;	  0853	! ROUTINE VALUE:
;	  0854	!
;	  0855		: MCB_DB_CCB novalue =
;	  0856	!
;	  0857	! SIDE EFFECTS:
;	  0858	!	None
;	  0859	!--
;	  0860	
;	  0861	    begin
;	  0862	    $MCB_RETURN_CCB (.CCB);
;	  0863	    DB [SS_DEVICE_BEING_SET] = FALSE;
;	P 0864	    FLUSH_QUEUE (DB [S_WAITING_FOR_ACK],
;	  0865		%quote SCHEDULE_TRANSMIT, DB [D_TIM], DLL$_ABORTED);
;	P 0866	    FLUSH_QUEUE (DB [S_WAITING_FOR_TRANSMIT],
;	  0867		%quote SCHEDULE_TRANSMIT, DB [D_TIM], DLL$_ABORTED);
;	  0868	    SET_DEVICE (DB [D_TIM]);
;	  0869	    end;			!of routine CCPSTP
						.GLOBL	$CMQRM
						.SBTTL	CCPSTP
000000	005746 				CCPSTP: TST	-(SP)				;					0837
000002	004767  000000G				JSR	PC,$CCBRT			;					0862
000006	042765  004000  000004 			BIC	#4000,4(R5)			; *,*(DB)				0863
000014	010516 					MOV	R5,(SP)				; DB,*					0865
000016	062716  000120 				ADD	#120,(SP)
000022	011603 				1$:	MOV	(SP),R3
000024	004767  000000G				JSR	PC,$CMQRM
000030	103405 					BCS	2$
000032	012703  100030 				MOV	#-77750,R3
000036	004767  000000V				JSR	PC,SCHEDULE.TRANSMIT
000042	000767 					BR	1$
000044	010516 				2$:	MOV	R5,(SP)				; DB,*					0867
000046	062716  000114 				ADD	#114,(SP)
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  21
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (8)
000052	011603 				3$:	MOV	(SP),R3
000054	004767  000000G				JSR	PC,$CMQRM
000060	103405 					BCS	4$
000062	012703  100030 				MOV	#-77750,R3
000066	004767  000000V				JSR	PC,SCHEDULE.TRANSMIT
000072	000767 					BR	3$
000074	004767  000000V			4$:	JSR	PC,SETDEV			;					0868
000100	005726 					TST	(SP)+				;					0837
000102	000207 					RTS	PC
; Routine Size:  34 words,	Routine Base:  $CODE$ + 1112
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  22
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (9)
;	  0870	routine CCPSTR
;	  0871	
;	  0872	!++
;	  0873	! FUNCTIONAL DESCRIPTION:
;	  0874	!
;	  0875	!
;	  0876	! FORMAL PARAMETERS:
;	  0877	!
;	  0878	       (DB : ref block field (D_FIELDS),
;	  0879		CCB : ref block field (C_FIELDS))
;	  0880	!
;	  0881	! IMPLICIT INPUTS:
;	  0882	!
;	  0883	! IMPLICIT OUTPUTS:
;	  0884	!	None
;	  0885	!
;	  0886	! ROUTINE VALUE:
;	  0887	!
;	  0888		: MCB_DB_CCB novalue =
;	  0889	!
;	  0890	! SIDE EFFECTS:
;	  0891	!	None
;	  0892	!--
;	  0893	
;	  0894	    begin
;	  0895	    $MCB_RETURN_CCB (.CCB);
;	  0896	    DB [SS_DEVICE_BEING_SET] = FALSE;
;	  0897	    DB [LS_STATION_ENABLED] = TRUE;
;	  0898	    DB [SS_DEVICE_RUNNING] = TRUE;
;	  0899	    SET_DEVICE (DB [D_TIM]);
;	  0900	    end;			!of routine CCPSTR
						.SBTTL	CCPSTR
000000	004767  000000G			CCPSTR: JSR	PC,$CCBRT			;					0895
000004	042765  004000  000004 			BIC	#4000,4(R5)			; *,*(DB)				0896
000012	052715  100000 				BIS	#100000,(R5)			; *,DB					0897
000016	052765  100000  000004 			BIS	#100000,4(R5)			; *,*(DB)				0898
000024	004767  000000V				JSR	PC,SETDEV			;					0899
000030	000207 					RTS	PC				;					0870
; Routine Size:  13 words,	Routine Base:  $CODE$ + 1216
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  23
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (10)
;	  0901	routine CHANGE_PROTOCOL_STATE
;	  0902	
;	  0903	!++
;	  0904	! FUNCTIONAL DESCRIPTION:
;	  0905	!
;	  0906	!
;	  0907	! FORMAL PARAMETERS:
;	  0908	!
;	  0909	       (DB : ref block field (D_FIELDS),
;	  0910		STATE,
;	  0911		REASON)
;	  0912	!
;	  0913	! IMPLICIT INPUTS:
;	  0914	!
;	  0915	! IMPLICIT OUTPUTS:
;	  0916	!	None
;	  0917	!
;	  0918	! ROUTINE VALUE:
;	  0919	!
;	  0920		: DCP_DB novalue =
;	  0921	!
;	  0922	! SIDE EFFECTS:
;	  0923	!	None
;	  0924	!--
;	  0925	
;	  0926	    begin
;	  0927	
;	  0928	    if .DB [S_PROTOCOL_STATE] eql .STATE then return;
;	  0929	
;	P 0930	    $NM_DLL_EVENT (.REASON, .DB [S_CIRCUIT_ENTITY],
;	P 0931		PARAMETER_C_1 (0, DB [S_PROTOCOL_STATE]),
;	P 0932		DB [S_PROTOCOL_STATE] = .STATE,
;	  0933		PARAMETER_C_1 (1, DB [S_PROTOCOL_STATE]));
;	  0934	    SEND_STATE (DB [D_TIM]);
;	  0935	    end;			!of routine CHANGE_PROTOCOL_STATE
						.GLOBL	$NLBEG, $DPC1, $NLEND
						.SBTTL	CHANGE.PROTOCOL.STATE
000000	012701  000002 			CHANGE.PROTOCOL.STATE:
						MOV	#2,R1				;					0928
000004	060501 					ADD	R5,R1				; DB,*
000006	111100 					MOVB	(R1),R0
000010	020066  000004 				CMP	R0,4(SP)			; *,STATE
000014	001430 					BEQ	1$
000016	004767  000000G				JSR	PC,$NLBEG			;					0933
000022	005046 					CLR	-(SP)
000024	111100 					MOVB	(R1),R0
000026	004767  000000G				JSR	PC,$DPC1
000032	116611  000006 				MOVB	6(SP),(R1)			; STATE,*
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  24
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (10)
000036	012716  000001 				MOV	#1,(SP)
000042	111100 					MOVB	(R1),R0
000044	004767  000000G				JSR	PC,$DPC1
000050	016600  000004 				MOV	4(SP),R0			; REASON,*
000054	062700  000500 				ADD	#500,R0
000060	016501  000126 				MOV	126(R5),R1			; *(DB),*
000064	004767  000000G				JSR	PC,$NLEND
000070	004767  000000V				JSR	PC,SEND.STATE			;					0934
000074	005726 					TST	(SP)+				;					0926
000076	000207 				1$:	RTS	PC				;					0901
; Routine Size:  32 words,	Routine Base:  $CODE$ + 1250
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  25
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (11)
;	  0936	routine CKACK
;	  0937	
;	  0938	!++
;	  0939	! FUNCTIONAL DESCRIPTION:
;	  0940	!
;	  0941	!
;	  0942	! FORMAL PARAMETERS:
;	  0943	!
;	  0944	       (DB : ref block field (D_FIELDS))
;	  0945	!
;	  0946	! IMPLICIT INPUTS:
;	  0947	!
;	  0948	! IMPLICIT OUTPUTS:
;	  0949	!	None
;	  0950	!
;	  0951	! ROUTINE VALUE:
;	  0952	!
;	  0953		: DCP_DB =
;	  0954	!
;	  0955	! SIDE EFFECTS:
;	  0956	!	None
;	  0957	!--
;	  0958	
;	  0959	    begin
;	  0960	
;	  0961	    field
;	  0962		NUM = [0, 0, 8, 0];
;	  0963	
;	  0964	    bind
;	  0965		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  0966	
;	  0967	    local
;	  0968		LAST_ACK : block [1] field (NUM),
;	  0969		NUM_ACKED : block [1] field (NUM),
;	  0970		NUM_SENT : block [1] field (NUM);
;	  0971	
;	  0972	    LAST_ACK = .DB [$SIGNED (S_A)];
;	  0973	    NUM_ACKED = .HEADER [$SIGNED (H_RESP)];
;	  0974	
;	  0975	    if .LAST_ACK [NUM] eql .NUM_ACKED [NUM]
;	  0976	    then
;	  0977		begin
;	  0978	
;	  0979		if .LAST_ACK [NUM] eql .DB [S_N] then DB [S_TRANSMIT_THRESHOLD] = 7;
;	  0980	
;	  0981		return TRUE
;	  0982		end;
;	  0983	
;	  0984	    NUM_ACKED = .NUM_ACKED - .LAST_ACK;
;	  0985	    NUM_SENT = .DB [$SIGNED (S_N)];
;	  0986	    NUM_SENT = .NUM_SENT - .LAST_ACK;
;	  0987	
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  26
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (11)
;	  0988	    if .NUM_SENT [NUM] lssu .NUM_ACKED [NUM]
;	  0989	    then
;	  0990		return FALSE;
;	  0991	
;	  0992	    DB [S_A] = .HEADER [H_RESP];
;	  0993	    RETURN_ACKED_MESSAGES (DB [D_TIM]);
;	  0994	    return TRUE
;	  0995	    end;			!of routine CKACK
						.SBTTL	CKACK
000000	116501  000074 			CKACK:	MOVB	74(R5),R1			; *(DB),LAST.ACK			0972
000004	116502  000157 				MOVB	157(R5),R2			; *(DB),NUM.ACKED			0973
000010	120102 					CMPB	R1,R2				; LAST.ACK,NUM.ACKED			0975
000012	001007 					BNE	1$
000014	120165  000073 				CMPB	R1,73(R5)			; LAST.ACK,*(DB)			0979
000020	001017 					BNE	2$
000022	112765  000007  000016 			MOVB	#7,16(R5)			; *,*(DB)
000030	000413 					BR	2$				;					0977
000032	160102 				1$:	SUB	R1,R2				; LAST.ACK,NUM.ACKED			0984
000034	116500  000073 				MOVB	73(R5),R0			; *(DB),NUM.SENT			0985
000040	160100 					SUB	R1,R0				; LAST.ACK,NUM.SENT			0986
000042	120002 					CMPB	R0,R2				; NUM.SENT,NUM.ACKED			0988
000044	103410 					BLO	3$				;					0990
000046	116565  000157  000074 			MOVB	157(R5),74(R5)			; *(DB),*(DB)				0992
000054	004767  000000V				JSR	PC,RETURN.ACKED.MESSAGES	;					0993
000060	012700  000001 			2$:	MOV	#1,R0				;					0959
000064	000207 					RTS	PC
000066	005000 				3$:	CLR	R0				;					0936
000070	000207 					RTS	PC
; Routine Size:  29 words,	Routine Base:  $CODE$ + 1350
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  27
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (12)
;	  0996	routine CKREP
;	  0997	
;	  0998	!++
;	  0999	! FUNCTIONAL DESCRIPTION:
;	  1000	!
;	  1001	!
;	  1002	! FORMAL PARAMETERS:
;	  1003	!
;	  1004	       (DB : ref block field (D_FIELDS))
;	  1005	!
;	  1006	! IMPLICIT INPUTS:
;	  1007	!
;	  1008	! IMPLICIT OUTPUTS:
;	  1009	!	None
;	  1010	!
;	  1011	! ROUTINE VALUE:
;	  1012	!
;	  1013		: DCP_DB novalue =
;	  1014	!
;	  1015	! SIDE EFFECTS:
;	  1016	!	None
;	  1017	!--
;	  1018	
;	  1019	    begin
;	  1020	    DB [SS_START_REP_TIMER] = FALSE;
;	  1021	    DB [SS_TIMING_REP] = FALSE;
;	  1022	
;	  1023	    if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
;	  1024	
;	  1025	    if
;	  1026		begin
;	  1027	
;	  1028		field
;	  1029		    NUM = [0, 0, 8, 0];
;	  1030	
;	  1031		local
;	  1032		    NUM_NOT_ACKED : block [1] field (NUM),
;	  1033		    NUM_NOT_TRANSMITTED : block [1] field (NUM);
;	  1034	
;	  1035		NUM_NOT_TRANSMITTED = .DB [$SIGNED (S_N)];
;	  1036		NUM_NOT_ACKED = .NUM_NOT_TRANSMITTED;
;	  1037		NUM_NOT_TRANSMITTED = .NUM_NOT_TRANSMITTED - .DB [$SIGNED (S_X)];
;	  1038		NUM_NOT_ACKED = .NUM_NOT_ACKED - .DB [$SIGNED (S_A)];
;	  1039		.NUM_NOT_ACKED [NUM] gtru .NUM_NOT_TRANSMITTED [NUM]
;	  1040		end
;	  1041	    then
;	  1042	
;	  1043		if .DB [L_DUPLEX] eql DL_FULL
;	  1044		then
;	  1045		    begin
;	  1046		    DB [SS_TIMING_REP] = TRUE;
;	  1047		    DB [D_TIM] = .DB [L_RETRANSMIT_TIMER];
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  28
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (12)
;	  1048		    end
;	  1049		else
;	  1050		    DB [SS_START_REP_TIMER] = TRUE;
;	  1051	
;	  1052	    end;			!of routine CKREP
						.SBTTL	CKREP
000000	042715  005000 			CKREP:	BIC	#5000,(R5)			; *,DB					1021
000004	105765  000012 				TSTB	12(R5)				; *(DB)					1023
000010	001001 					BNE	1$
000012	105015 					CLRB	(R5)				; DB
000014	116500  000073 			1$:	MOVB	73(R5),R0			; *(DB),NUM.NOT.TRANSMI			1035
000020	010001 					MOV	R0,R1				; NUM.NOT.TRANSMI,NUM.NOT.ACKED		1036
000022	116502  000072 				MOVB	72(R5),R2			; *(DB),*				1037
000026	160200 					SUB	R2,R0				; *,NUM.NOT.TRANSMI
000030	116502  000074 				MOVB	74(R5),R2			; *(DB),*				1038
000034	160201 					SUB	R2,R1				; *,NUM.NOT.ACKED
000036	120100 					CMPB	R1,R0				; NUM.NOT.ACKED,NUM.NOT.TRANSMI		1039
000040	101412 					BLOS	3$
000042	105765  000012 				TSTB	12(R5)				; *(DB)					1043
000046	001005 					BNE	2$
000050	052715  004000 				BIS	#4000,(R5)			; *,DB					1046
000054	116515  000112 				MOVB	112(R5),(R5)			; *(DB),DB				1047
000060	000207 					RTS	PC				;					1043
000062	052715  001000 			2$:	BIS	#1000,(R5)			; *,DB					1050
000066	000207 				3$:	RTS	PC				;					0996
; Routine Size:  28 words,	Routine Base:  $CODE$ + 1442
; Maximum stack depth per invocation:  0 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  29
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (13)
;	  1053	routine CTLSTP
;	  1054	
;	  1055	!++
;	  1056	! FUNCTIONAL DESCRIPTION:
;	  1057	!
;	  1058	!
;	  1059	! FORMAL PARAMETERS:
;	  1060	!
;	  1061	       (DB : ref block field (D_FIELDS),
;	  1062		CCB : ref block field (C_FIELDS))
;	  1063	!
;	  1064	! IMPLICIT INPUTS:
;	  1065	!
;	  1066	! IMPLICIT OUTPUTS:
;	  1067	!	None
;	  1068	!
;	  1069	! ROUTINE VALUE:
;	  1070	!
;	  1071		: MCB_DB_CCB novalue =
;	  1072	!
;	  1073	! SIDE EFFECTS:
;	  1074	!	None
;	  1075	!--
;	  1076	
;	  1077	    begin
;	  1078	    DB [SS_NOTIFY_STATE] = FALSE;
;	  1079	    DB [S_TRANSIENT_ERROR] = 0;
;	  1080	    DB [S_PERSISTENT_ERROR] = 0;
;	  1081	    DB [S_USER_HANDLE] = 0;
;	  1082	    CCB [C_FNC] = FC_CCP;
;	  1083	    CCB [C_STS] = DLL$_SUCCESS;
;	  1084	
;	  1085	    if .DB [D_USER_BUFFERS] eql 0
;	  1086	    then
;	  1087		$MCB_SCHEDULE_CCB (.CCB)
;	  1088	    else
;	  1089		DB [S_CONTROL_CCB] = .CCB;
;	  1090	
;	  1091	    end;			!of routine CTLSTP
						.GLOBL	$SCHED
						.SBTTL	CTLSTP
000000	010400 				CTLSTP: MOV	R4,R0				; *,CCB					1053
000002	042765  001000  000004 			BIC	#1000,4(R5)			; *,*(DB)				1078
000010	005065  000132 				CLR	132(R5)				; *(DB)					1079
000014	005065  000134 				CLR	134(R5)				; *(DB)					1080
000020	005065  000130 				CLR	130(R5)				; *(DB)					1081
000024	112760  000022  000012 			MOVB	#22,12(R0)			; *,*(CCB)				1082
000032	012760  100001  000014 			MOV	#-77777,14(R0)			; *,*(CCB)				1083
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  30
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (13)
000040	005765  000136 				TST	136(R5)				; *(DB)					1085
000044	001003 					BNE	1$
000046	004767  000000G				JSR	PC,$SCHED			;					1087
000052	000207 					RTS	PC				;					1085
000054	010065  000124 			1$:	MOV	R0,124(R5)			; CCB,*(DB)				1089
000060	000207 					RTS	PC				;					1053
; Routine Size:  25 words,	Routine Base:  $CODE$ + 1532
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  31
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (14)
;	  1092	routine CTLSTR
;	  1093	
;	  1094	!++
;	  1095	! FUNCTIONAL DESCRIPTION:
;	  1096	!
;	  1097	!
;	  1098	! FORMAL PARAMETERS:
;	  1099	!
;	  1100	       (DB : ref block field (D_FIELDS),
;	  1101		CCB : ref block field (C_FIELDS))
;	  1102	!
;	  1103	! IMPLICIT INPUTS:
;	  1104	!
;	  1105	! IMPLICIT OUTPUTS:
;	  1106	!	None
;	  1107	!
;	  1108	! ROUTINE VALUE:
;	  1109	!
;	  1110		: MCB_DB_CCB novalue =
;	  1111	!
;	  1112	! SIDE EFFECTS:
;	  1113	!	None
;	  1114	!--
;	  1115	
;	  1116	    begin
;	  1117	
;	  1118	    bind
;	P 1119		STATUS = TABLE$ (0, 0,
;	P 1120		    (SS_HALTED^1, DLL$_STATE_OFF),
;	P 1121		    (SS_ISTRT^1, DLL$_STATE_SYNCHRONIZING),
;	P 1122		    (SS_ASTRT^1, DLL$_STATE_SYNCHRONIZING),
;	P 1123		    (SS_RUNNING^1, DLL$_STATE_RUNNING),
;	  1124		    (SS_MAINTENANCE^1, DLL$_STATE_MAINTENANCE)) : vector;
;	  1125	
;	  1126	    DB [S_USER_HANDLE] = .CCB [C_HANDLE];
;	  1127	
;	  1128	    if .CCB [C_PRM1] eql 0
;	  1129	    then
;	  1130		CCB [C_PRM1] = .DB [S_CIRCUIT_COST];
;	  1131	
;	  1132	    CCB [C_STS] = .STATUS [.DB [S_PROTOCOL_STATE]];
;	  1133	    CCB [C_FNC] = FC_CCP;
;	  1134	    $MCB_SCHEDULE_CCB (.CCB);
;	  1135	    end;			!of routine CTLSTR
000024						.PSECT	$PLIT$,  RO ,  D  
000024	100043 				P.AAB:	.WORD	-77735
000026	100053 					.WORD	-77725
000030	100053 					.WORD	-77725
000032	100063 					.WORD	-77715
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  32
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (14)
000034	100073 					.WORD	-77705
	000024'				STATUS=		    P.AAB
						.SBTTL	CTLSTR
001614						.PSECT	$CODE$,  RO 
000000	016465  000010  000130 		CTLSTR: MOV	10(R4),130(R5)			; *(CCB),*(DB)				1126
000006	012700  000024 				MOV	#24,R0				;					1128
000012	060400 					ADD	R4,R0				; CCB,*
000014	005710 					TST	(R0)
000016	001002 					BNE	1$
000020	016510  000140 				MOV	140(R5),(R0)			; *(DB),*				1130
000024	116505  000002 			1$:	MOVB	2(R5),R5			; *(DB),*				1132
000030	006305 					ASL	R5
000032	016564  000024' 000014 			MOV	STATUS(R5),14(R4)		; *,*(CCB)
000040	112764  000022  000012 			MOVB	#22,12(R4)			; *,*(CCB)				1133
000046	004767  000000G				JSR	PC,$SCHED			;					1134
000052	000207 					RTS	PC				;					1092
; Routine Size:  22 words,	Routine Base:  $CODE$ + 1614
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  33
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (15)
;	  1136	routine CURRENT_STATUS (DB) : LINKAGE_DB =
;	  1137	
;	  1138	!++
;	  1139	! FUNCTIONAL DESCRIPTION:
;	  1140	!
;	  1141	!
;	  1142	! FORMAL PARAMETERS:
;	  1143	!	DB = address of DCP data base.
;	  1144	!
;	  1145	! IMPLICIT INPUTS:
;	  1146	!	None
;	  1147	!
;	  1148	! IMPLICIT OUTPUTS:
;	  1149	!	None
;	  1150	!
;	  1151	! ROUTINE VALUE:
;	  1152	! COMPLETION CODES:
;	  1153	!	None
;	  1154	!
;	  1155	! SIDE EFFECTS:
;	  1156	!	None
;	  1157	!--
;	  1158	
;	  1159	    begin
;	  1160	    GET_DCP_DATA_BASE (DB)
;	  1161	
;	  1162	    literal
;	  1163		DLL_OFF = 0,
;	  1164		DLL_SYNCHRONIZING = 1,
;	  1165		DLL_RUNNING = 2,
;	  1166		DLL_MAINTENANCE = 3;
;	  1167	
;	  1168	    bind
;	P 1169		STATUS = TABLE$ (0, 0,
;	P 1170		    (SS_HALTED^1, DLL_OFF),
;	P 1171		    (SS_ISTRT^1, DLL_SYNCHRONIZING),
;	P 1172		    (SS_ASTRT^1, DLL_SYNCHRONIZING),
;	P 1173		    (SS_RUNNING^1, DLL_RUNNING),
;	  1174		    (SS_MAINTENANCE^1, DLL_MAINTENANCE)) : vector,
;	P 1175		DLL_STATUS = TABLE$ (0, 0,
;	P 1176		    (DLL_OFF^1, DLL$_STATE_OFF),
;	P 1177		    (DLL_SYNCHRONIZING^1, DLL$_STATE_SYNCHRONIZING),
;	P 1178		    (DLL_RUNNING^1, DLL$_STATE_RUNNING),
;	  1179		    (DLL_MAINTENANCE^1, DLL$_STATE_MAINTENANCE)) : vector;
;	  1180	
;	  1181	    if .DB [SS_NOTIFY_OFF]
;	  1182	    then
;	  1183		begin
;	  1184		DB [SS_NOTIFY_OFF] = FALSE;
;	  1185	
;	  1186		if .DB [D_REPORTED_STATE] eql DLL_OFF
;	  1187		then
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  34
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (15)
;	  1188		    DB [SS_NOTIFY_STATE] = FALSE;
;	  1189	
;	  1190		return .DLL_STATUS [DB [D_REPORTED_STATE] = DLL_OFF];
;	  1191		end;
;	  1192	
;	  1193	    DB [SS_NOTIFY_STATE] = FALSE;
;	  1194	    .DLL_STATUS [DB [D_REPORTED_STATE] = .STATUS [.DB [S_PROTOCOL_STATE]]]
;	  1195	    end;			!of routine CURRENT_STATUS
000036						.PSECT	$PLIT$,  RO ,  D  
000036	000000 				P.AAC:	.WORD	0
000040	000001 					.WORD	1
000042	000001 					.WORD	1
000044	000002 					.WORD	2
000046	000003 					.WORD	3
000050	100043 				P.AAD:	.WORD	-77735
000052	100053 					.WORD	-77725
000054	100063 					.WORD	-77715
000056	100073 					.WORD	-77705
	000036'				STATUS=		    P.AAC
	000050'				DLL.STATUS=	    P.AAD
						.SBTTL	CURRENT.STATUS
001670						.PSECT	$CODE$,  RO 
000000	010546 				CURRENT.STATUS:
						MOV	R5,-(SP)			;					1136
000002	012700  000004 				MOV	#4,R0				;					1181
000006	060500 					ADD	R5,R0				; DB,*
000010	032710  000400 				BIT	#400,(R0)
000014	001412 					BEQ	2$
000016	042710  000400 				BIC	#400,(R0)			;					1184
000022	105710 					TSTB	(R0)				;					1186
000024	001002 					BNE	1$
000026	042710  001000 				BIC	#1000,(R0)			;					1188
000032	105010 				1$:	CLRB	(R0)				;					1190
000034	016700  000050'				MOV	DLL.STATUS,R0			;					1183
000040	000413 					BR	3$
000042	042710  001000 			2$:	BIC	#1000,(R0)			;					1193
000046	116505  000002 				MOVB	2(R5),R5			; *(DB),*				1194
000052	006305 					ASL	R5
000054	016505  000036'				MOV	STATUS(R5),R5
000060	110510 					MOVB	R5,(R0)
000062	006305 					ASL	R5
000064	016500  000050'				MOV	DLL.STATUS(R5),R0		;					1136
000070	012605 				3$:	MOV	(SP)+,R5
000072	000207 					RTS	PC
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  35
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (15)
; Routine Size:  30 words,	Routine Base:  $CODE$ + 1670
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  36
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (16)
;	  1196	routine DCPCCP
;	  1197	
;	  1198	!++
;	  1199	! FUNCTIONAL DESCRIPTION:
;	  1200	!
;	  1201	!
;	  1202	! FORMAL PARAMETERS:
;	  1203	!
;	  1204	       (DB : ref block field (D_FIELDS),
;	  1205		CCB : ref block field (C_FIELDS),
;	  1206		MODIFIER)
;	  1207	!
;	  1208	! IMPLICIT INPUTS:
;	  1209	!
;	  1210	! IMPLICIT OUTPUTS:
;	  1211	!	None
;	  1212	!
;	  1213	! ROUTINE VALUE:
;	  1214	!
;	  1215		: MCB_DB_CCB_MOD novalue =
;	  1216	!
;	  1217	! SIDE EFFECTS:
;	  1218	!	None
;	  1219	!--
;	  1220	
;	  1221	    begin
;	P 1222	    DISPATCH$ (
;	P 1223		.MODIFIER,
;	P 1224		TABLE$ ($DSPCR, FD_TIM,
;	P 1225		    (FM_GET, CCPGET),
;	P 1226		    (FM_SET, CCPSET),
;	P 1227		    (FM_STR, CCPSTR),
;	P 1228		    (FM_STP, CCPSTP)),
;	P 1229		(DB [D_TIM], .CCB),
;	  1230		MCB_DB_CCB);
;	  1231	    end;			!of routine DCPCCP
000060						.PSECT	$PLIT$,  RO ,  D  
000060	000000G				P.AAE:	.WORD	$DSPCR
000062	001216'					.WORD	CCPSTR
000064	001112'					.WORD	CCPSTP
000066	000000G					.WORD	$DSPCR
000070	000000G					.WORD	$DSPCR
000072	001104'					.WORD	CCPSET
000074	001046'					.WORD	CCPGET
						.SBTTL	DCPCCP
001764						.PSECT	$CODE$,  RO 
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  37
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (16)
000000	004773  000060'			DCPCCP: JSR	PC,@P.AAE(R3)			; *,*(MODIFIER)				1230
000004	000207 					RTS	PC				;					1196
; Routine Size:  3 words,	Routine Base:  $CODE$ + 1764
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  38
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (17)
;	  1232	routine DCPCTL
;	  1233	
;	  1234	!++
;	  1235	! FUNCTIONAL DESCRIPTION:
;	  1236	!
;	  1237	!
;	  1238	! FORMAL PARAMETERS:
;	  1239	!
;	  1240	       (DB : ref block field (D_FIELDS),
;	  1241		CCB : ref block field (C_FIELDS),
;	  1242		MODIFIER)
;	  1243	!
;	  1244	! IMPLICIT INPUTS:
;	  1245	!
;	  1246	! IMPLICIT OUTPUTS:
;	  1247	!	None
;	  1248	!
;	  1249	! ROUTINE VALUE:
;	  1250	!
;	  1251		: MCB_DB_CCB_MOD novalue =
;	  1252	!
;	  1253	! SIDE EFFECTS:
;	  1254	!	None
;	  1255	!--
;	  1256	
;	  1257	    begin
;	P 1258	    DISPATCH$ (
;	P 1259		.MODIFIER,
;	P 1260		TABLE$ ($DSPCR, 0,
;	P 1261		    (FM_NM, DCPNM),
;	P 1262		    (FM_STR, CTLSTR),
;	P 1263		    (FM_STP, CTLSTP)),
;	P 1264		(DB [D_TIM], .CCB),
;	  1265		MCB_DB_CCB);
;	  1266	    end;			!of routine DCPCTL
000076						.PSECT	$PLIT$,  RO ,  D  
000076	000000G				P.AAF:	.WORD	$DSPCR
000100	001614'					.WORD	CTLSTR
000102	001532'					.WORD	CTLSTP
000104	000000G					.WORD	DCPNM
						.SBTTL	DCPCTL
001772						.PSECT	$CODE$,  RO 
000000	004773  000076'			DCPCTL: JSR	PC,@P.AAF(R3)			; *,*(MODIFIER)				1265
000004	000207 					RTS	PC				;					1232
; Routine Size:  3 words,	Routine Base:  $CODE$ + 1772
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  39
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (17)
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  40
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (18)
;	  1267	routine DCPKCP
;	  1268	
;	  1269	!++
;	  1270	! FUNCTIONAL DESCRIPTION:
;	  1271	!
;	  1272	!
;	  1273	! FORMAL PARAMETERS:
;	  1274	!
;	  1275	       (DB : ref block field (D_FIELDS),
;	  1276		CCB : ref block field (C_FIELDS))
;	  1277	!
;	  1278	! IMPLICIT INPUTS:
;	  1279	!
;	  1280	! IMPLICIT OUTPUTS:
;	  1281	!	None
;	  1282	!
;	  1283	! ROUTINE VALUE:
;	  1284	!
;	  1285		: MCB_DB_CCB novalue =
;	  1286	!
;	  1287	! SIDE EFFECTS:
;	  1288	!	None
;	  1289	!--
;	  1290	
;	  1291	    begin
;	  1292	    $MCB_RETURN_CCB (.CCB);
;	  1293	    DB [LS_RESYNCH_IN_PROGRESS] = FALSE;
;	  1294	    end;			!of routine DCPKCP
						.SBTTL	DCPKCP
000000	004767  000000G			DCPKCP: JSR	PC,$CCBRT			;					1292
000004	042715  000400 				BIC	#400,(R5)			; *,DB					1293
000010	000207 					RTS	PC				;					1267
; Routine Size:  5 words,	Routine Base:  $CODE$ + 2000
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  41
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (19)
;	  1295	routine DCPRCE
;	  1296	
;	  1297	!++
;	  1298	! FUNCTIONAL DESCRIPTION:
;	  1299	!
;	  1300	!
;	  1301	! FORMAL PARAMETERS:
;	  1302	!
;	  1303	       (DB : ref block field (D_FIELDS),
;	  1304		CCB : ref block field (C_FIELDS))
;	  1305	!
;	  1306	! IMPLICIT INPUTS:
;	  1307	!
;	  1308	! IMPLICIT OUTPUTS:
;	  1309	!	None
;	  1310	!
;	  1311	! ROUTINE VALUE:
;	  1312	!
;	  1313		: MCB_DB_CCB novalue =
;	  1314	!
;	  1315	! SIDE EFFECTS:
;	  1316	!	None
;	  1317	!--
;	  1318	
;	  1319	    begin
;	  1320	    STARCE (DB [D_TIM], .CCB);
;	  1321	    DB [D_USER_BUFFERS] = .DB [D_USER_BUFFERS] - 1;
;	  1322	
;	  1323	    if .DB [D_USER_BUFFERS] neq 0 then return;
;	  1324	
;	  1325	    if .DB [S_CONTROL_CCB] neqa 0
;	  1326	    then
;	  1327		begin
;	  1328		$MCB_SCHEDULE_CCB (.DB [S_CONTROL_CCB]);
;	  1329		DB [S_CONTROL_CCB] = 0;
;	  1330		end;
;	  1331	
;	  1332	    end;			!of routine DCPRCE
						.SBTTL	DCPRCE
000000	004767  000000V			DCPRCE: JSR	PC,STARCE			;					1320
000004	005365  000136 				DEC	136(R5)				; *(DB)					1321
000010	001011 					BNE	1$				;					1323
000012	012700  000124 				MOV	#124,R0				;					1325
000016	060500 					ADD	R5,R0				; DB,*
000020	005710 					TST	(R0)
000022	001404 					BEQ	1$
000024	011004 					MOV	(R0),R4				;					1328
000026	004767  000000G				JSR	PC,$SCHED
000032	005010 					CLR	(R0)				;					1329
000034	000207 				1$:	RTS	PC				;					1295
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  42
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (19)
; Routine Size:  15 words,	Routine Base:  $CODE$ + 2012
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  43
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (20)
;	  1333	routine DCPRCP
;	  1334	
;	  1335	!++
;	  1336	! FUNCTIONAL DESCRIPTION:
;	  1337	!
;	  1338	!
;	  1339	! FORMAL PARAMETERS:
;	  1340	!
;	  1341	       (DB : ref block field (D_FIELDS),
;	  1342		CCB : ref block field (C_FIELDS))
;	  1343	!
;	  1344	! IMPLICIT INPUTS:
;	  1345	!
;	  1346	! IMPLICIT OUTPUTS:
;	  1347	!	None
;	  1348	!
;	  1349	! ROUTINE VALUE:
;	  1350	!
;	  1351		: MCB_DB_CCB novalue =
;	  1352	!
;	  1353	! SIDE EFFECTS:
;	  1354	!	None
;	  1355	!--
;	  1356	
;	  1357	    begin
;	  1358	
;	  1359	    bind
;	  1360		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  1361	
;	  1362	    !
;	  1363	    ! Copy the header and adjust the buffer pointer
;	  1364	    !
;	  1365	    begin
;	  1366	
;	  1367	    map
;	  1368		HEADER : vector [H_LENGTH];
;	  1369	
;	  1370	    local
;	  1371		HDR_0, HDR_1, HDR_2;
;	  1372	
;	  1373	    begin
;	  1374	
;	  1375	    local
;	  1376		SAVE_MAP;
;	  1377	
;	  1378	    SMAP$ (SAVE_MAP);
;	  1379	    MAP$ (.CCB [C_BIAS]);
;	  1380	    begin
;	  1381	
;	  1382	    local
;	  1383		PTR : ref vector;
;	  1384	
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  44
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (20)
;	  1385	    PTR = .CCB [C_ADDR];
;	  1386	    HDR_0 = .PTR [0];
;	  1387	    HDR_1 = .PTR [1];
;	  1388	    HDR_2 = .PTR [2];
;	  1389	    CCB [C_ADDR] = PTR = PTR [3];
;	  1390	    CCB [C_CNT] = .CCB [C_CNT] - H_LENGTH*%upval;
;	  1391	    end;
;	  1392	    MAP$ (.SAVE_MAP);
;	  1393	    end;
;	  1394	    begin
;	  1395	
;	  1396	    local
;	  1397		PTR : ref vector;
;	  1398	
;	  1399	    PTR = HEADER [0];
;	  1400	    PTR [0] = .HDR_0;
;	  1401	    PTR [1] = .HDR_1;
;	  1402	    PTR [2] = .HDR_2;
;	  1403	    PTR = PTR [2]; %(force auto-increment)%
;	  1404	    end;
;	  1405	    end;
;	  1406	    !
;	  1407	    ! Toss if we are re-synchronizing or halted
;	  1408	    !
;	  1409	    if .DB [LS_RESYNCH_IN_PROGRESS] or (.DB [S_PROTOCOL_STATE] eql SS_HALTED)
;	  1410	    then
;	  1411		begin
;	  1412		STARCE (DB [D_TIM], .CCB);
;	  1413		return;
;	  1414		end;
;	  1415	
;	  1416	    if (.CCB [C_STS] geq 0) or (.CCB [C_STS] eql CE_DCR)
;	  1417	    then
;	  1418		begin
;	  1419	
;	  1420		selectone .HEADER [H_IDENTIFIER] of
;	  1421		    set
;	  1422		    [CM_ENQ] : PROCESS_CONTROL_MESSAGE (DB [D_TIM], .CCB);
;	  1423		    [CM_SOH] : PROCESS_DATA_MESSAGE (DB [D_TIM], .CCB);
;	  1424		    [CM_DLE] : PROCESS_MAINTENANCE_MESSAGE (DB [D_TIM], .CCB);
;	  1425		    [otherwise] :
;	  1426			begin
;	  1427			HEADER_FORMAT_ERROR (DB [D_TIM]);
;	  1428			STARCE (DB [D_TIM], .CCB);
;	  1429			end;
;	  1430		    tes;
;	  1431	
;	  1432		end
;	  1433	    else
;	  1434		begin
;	  1435		!
;	  1436		! There was an error in message reception -
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  45
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (20)
;	  1437		! record where appropriate.
;	  1438		!
;	  1439		RECORD_DRIVER_ERROR (DB [D_TIM], .CCB);
;	  1440		STARCE (DB [D_TIM], .CCB);
;	  1441		end;
;	  1442	
;	  1443	    SEND_DATA (DB [D_TIM]);
;	  1444	    end;			!of routine DCPRCP
						.GLOBL	KISAR6
						.SBTTL	DCPRCP
000000	005746 				DCPRCP: TST	-(SP)				;					1333
000002	010446 					MOV	R4,-(SP)
000004	016704  000000G				MOV	KISAR6,R4			; *,SAVE.MAP				1378
000010	011600 					MOV	(SP),R0				;					1379
000012	016067  000016  000000G			MOV	16(R0),KISAR6
000020	010001 					MOV	R0,R1				;					1385
000022	016100  000020 				MOV	20(R1),R0			; *,PTR
000026	012001 					MOV	(R0)+,R1			; PTR,HDR.0				1386
000030	012002 					MOV	(R0)+,R2			; PTR,HDR.1				1387
000032	012003 					MOV	(R0)+,R3			; PTR,HDR.2				1388
000034	011646 					MOV	(SP),-(SP)			;					1389
000036	062716  000020 				ADD	#20,(SP)
000042	010036 					MOV	R0,@(SP)+			; PTR,*
000044	011600 					MOV	(SP),R0				;					1390
000046	162760  000006  000022 			SUB	#6,22(R0)
000054	010467  000000G				MOV	R4,KISAR6			; SAVE.MAP,*				1392
000060	012700  000154 				MOV	#154,R0				; *,PTR					1399
000064	060500 					ADD	R5,R0				; DB,PTR
000066	010120 					MOV	R1,(R0)+			; HDR.0,PTR				1400
000070	010220 					MOV	R2,(R0)+			; HDR.1,PTR				1401
000072	010310 					MOV	R3,(R0)				; HDR.2,PTR				1402
000074	032715  000400 				BIT	#400,(R5)			; *,DB					1409
000100	001003 					BNE	1$
000102	105765  000002 				TSTB	2(R5)				; *(DB)
000106	001004 					BNE	2$
000110	011604 				1$:	MOV	(SP),R4				;					1412
000112	004767  000000V				JSR	PC,STARCE
000116	000457 					BR	10$				;					1411
000120	011601 				2$:	MOV	(SP),R1				;					1416
000122	016100  000014 				MOV	14(R1),R0
000126	002003 					BGE	3$
000130	020027  177570 				CMP	R0,#-210
000134	001040 					BNE	7$
000136	116566  000154  000002 		3$:	MOVB	154(R5),2(SP)			; *(DB),*				1420
000144	105066  000003 				CLRB	3(SP)
000150	026627  000002  000005 			CMP	2(SP),#5
000156	001004 					BNE	4$
000160	011604 					MOV	(SP),R4				;					1422
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  46
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (20)
000162	004767  000000V				JSR	PC,PROCESS.CONTROL.MESSAGE
000166	000431 					BR	9$				;					1420
000170	026627  000002  000201 		4$:	CMP	2(SP),#201
000176	001004 					BNE	5$
000200	011604 					MOV	(SP),R4				;					1423
000202	004767  000000V				JSR	PC,PROCESS.DATA.MESSAGE
000206	000421 					BR	9$				;					1420
000210	026627  000002  000220 		5$:	CMP	2(SP),#220
000216	001004 					BNE	6$
000220	011604 					MOV	(SP),R4				;					1424
000222	004767  000000V				JSR	PC,PROCESS.MAINTENANCE.MESSAGE
000226	000411 					BR	9$				;					1420
000230	004767  000000V			6$:	JSR	PC,HEADER.FORMAT.ERROR		;					1427
000234	000403 					BR	8$				;					1428
000236	011604 				7$:	MOV	(SP),R4				;					1439
000240	004767  000000V				JSR	PC,RECORD.DRIVER.ERROR
000244	011604 				8$:	MOV	(SP),R4				;					1440
000246	004767  000000V				JSR	PC,STARCE
000252	004767  000000V			9$:	JSR	PC,SEND.DATA			;					1443
000256	022626 				10$:	CMP	(SP)+,(SP)+			;					1333
000260	000207 					RTS	PC
; Routine Size:  89 words,	Routine Base:  $CODE$ + 2050
; Maximum stack depth per invocation:  3 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  47
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (21)
;	  1445	routine DCPTIM
;	  1446	
;	  1447	!++
;	  1448	! FUNCTIONAL DESCRIPTION:
;	  1449	!
;	  1450	!
;	  1451	! FORMAL PARAMETERS:
;	  1452	!
;	  1453	       (DB : ref block field (D_FIELDS),
;	  1454		CCB : ref block field (C_FIELDS),
;	  1455		MODIFIER)
;	  1456	!
;	  1457	! IMPLICIT INPUTS:
;	  1458	!
;	  1459	! IMPLICIT OUTPUTS:
;	  1460	!	None
;	  1461	!
;	  1462	! ROUTINE VALUE:
;	  1463	!
;	  1464		: MCB_DB_CCB_MOD novalue =
;	  1465	!
;	  1466	! SIDE EFFECTS:
;	  1467	!	None
;	  1468	!--
;	  1469	
;	  1470	    begin
;	P 1471	    DISPATCH$ (
;	P 1472		.MODIFIER,
;	P 1473		TABLE$ ($DSPCR, FD_TIM,
;	P 1474		    (FM_LTM, TIMLTM),
;	P 1475		    (FM_PWF, TIMPWF),
;	P 1476		    (FM_PIN, TIMPIN),
;	P 1477		    (FM_CCB, TIMCCB)),
;	P 1478		(DB [D_TIM], .CCB),
;	  1479		MCB_DB_CCB);
;	  1480	    end;			!of routine DCPTIM
000106						.PSECT	$PLIT$,  RO ,  D  
000106	000000G				P.AAG:	.WORD	$DSPCR
000110	000000V					.WORD	TIMLTM
000112	000000V					.WORD	TIMPWF
000114	000000G					.WORD	TIMPIN
000116	000000V					.WORD	TIMCCB
000120	000000G					.WORD	$DSPCR
						.SBTTL	DCPTIM
002332						.PSECT	$CODE$,  RO 
000000	004773  000106'			DCPTIM: JSR	PC,@P.AAG(R3)			; *,*(MODIFIER)				1479
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  48
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (21)
000004	000207 					RTS	PC				;					1445
; Routine Size:  3 words,	Routine Base:  $CODE$ + 2332
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  49
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (22)
;	  1481	routine DCPXCP
;	  1482	
;	  1483	!++
;	  1484	! FUNCTIONAL DESCRIPTION:
;	  1485	!
;	  1486	!
;	  1487	! FORMAL PARAMETERS:
;	  1488	!
;	  1489	       (DB : ref block field (D_FIELDS),
;	  1490		CCB : ref block field (C_FIELDS))
;	  1491	!
;	  1492	! IMPLICIT INPUTS:
;	  1493	!
;	  1494	! IMPLICIT OUTPUTS:
;	  1495	!	None
;	  1496	!
;	  1497	! ROUTINE VALUE:
;	  1498	!
;	  1499		: MCB_DB_CCB novalue =
;	  1500	!
;	  1501	! SIDE EFFECTS:
;	  1502	!	None
;	  1503	!--
;	  1504	
;	  1505	    begin
;	  1506	
;	  1507	    bind
;	  1508		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  1509	
;	  1510	    begin
;	  1511	
;	  1512	    map
;	  1513		HEADER : vector [H_LENGTH];
;	  1514	
;	  1515	    local
;	  1516		PTR : ref vector;
;	  1517	
;	  1518	    PTR = .CCB [C_ADDR];
;	  1519	    HEADER [0] = .PTR [0];
;	  1520	    HEADER [1] = .PTR [1];
;	  1521	    HEADER [2] = .PTR [2];
;	  1522	    PTR = PTR [2]; %(force auto-increment)%
;	  1523	    end;
;	  1524	    !
;	  1525	    ! If a data message, put it in the proper place
;	  1526	    !
;	  1527	    if .HEADER [H_IDENTIFIER] neq CM_ENQ
;	  1528	    then
;	  1529		begin
;	  1530		DB [L_MESSAGES_AT_DRIVER] = .DB [L_MESSAGES_AT_DRIVER] - 1;
;	  1531	
;	  1532		if .HEADER [H_IDENTIFIER] eql CM_SOH
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  50
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (22)
;	  1533		then
;	  1534		    begin
;	  1535		    $MCB_QUEUE_CCB (DB [S_WAITING_FOR_ACK], .CCB [C_STK]);
;	  1536		    RETURN_ACKED_MESSAGES (DB [D_TIM]);
;	  1537		    end
;	  1538		else
;	  1539		    SCHEDULE_TRANSMIT (.CCB [C_STK], DB [D_TIM], DLL$_SUCCESS);
;	  1540	
;	  1541		end;
;	  1542	
;	  1543	    $MCB_RETURN_CCB (.CCB);
;	  1544	    !
;	  1545	    ! One less message at the driver
;	  1546	    !
;	  1547	    DB [S_MOTD] = .DB [S_MOTD] - 1;
;	  1548	
;	  1549	    if .DB [S_MOTD] eql 0
;	  1550	    then
;	  1551	
;	  1552		if .DB [SS_RETRANSMIT] then RETRANSMIT_UNACKED_MESSAGES (DB [D_TIM]);
;	  1553	
;	  1554	    !
;	  1555	    ! If halted, then there is nothing else to do.
;	  1556	    !
;	  1557	    if .DB [S_PROTOCOL_STATE] eql SS_HALTED then return;
;	  1558	    !
;	  1559	    ! Do post-transmit processing
;	  1560	    !
;	  1561	    selectone .HEADER [H_IDENTIFIER] of
;	  1562		set
;	  1563		[CM_ENQ] :
;	  1564	
;	  1565		    if .HEADER [H_TYPE] eql MT_REP
;	  1566		    then
;	  1567			DB [SS_START_REP_TIMER] = TRUE;
;	  1568	
;	  1569		[CM_SOH] :
;	  1570		    begin
;	  1571	
;	  1572		    if
;	  1573			begin
;	  1574	
;	  1575			field
;	  1576			    NUM = [0, 0, 8, 0];
;	  1577	
;	  1578			local
;	  1579			    NUM_NOT_ACKED : block [1] field (NUM),
;	  1580			    NUM_NOT_TRANSMITTED : block [1] field (NUM);
;	  1581	
;	  1582			NUM_NOT_TRANSMITTED = .DB [$SIGNED (S_N)];
;	  1583			NUM_NOT_ACKED = .NUM_NOT_TRANSMITTED;
;	  1584			NUM_NOT_TRANSMITTED = .NUM_NOT_TRANSMITTED -
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  51
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (22)
;	  1585			    (DB [S_X] = .HEADER [$SIGNED (H_NUM)]);
;	  1586			NUM_NOT_ACKED = .NUM_NOT_ACKED - .DB [$SIGNED (S_A)];
;	  1587			.NUM_NOT_ACKED [NUM] gtru .NUM_NOT_TRANSMITTED [NUM]
;	  1588			end
;	  1589		    then
;	  1590			begin
;	  1591	
;	  1592			if not (.DB [SS_START_REP_TIMER] or .DB [SS_TIMING_REP])
;	  1593			then
;	  1594			    DB [SS_START_REP_TIMER] = TRUE;
;	  1595	
;	  1596			end
;	  1597		    else
;	  1598			begin
;	  1599			DB [SS_START_REP_TIMER] = FALSE;
;	  1600			DB [SS_TIMING_REP] = FALSE;
;	  1601	
;	  1602			if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
;	  1603	
;	  1604			end;
;	  1605	
;	  1606		    end;
;	  1607		tes;
;	  1608	    !
;	  1609	    ! Start the rep timer if asked
;	  1610	    !
;	  1611	    if .DB [SS_START_REP_TIMER]
;	  1612	    then
;	  1613		begin
;	  1614		DB [SS_START_REP_TIMER] = FALSE;
;	  1615		DB [SS_TIMING_REP] = TRUE;
;	  1616	
;	  1617		if .DB [L_DUPLEX] eql DL_FULL
;	  1618		then DB [D_TIM] = .DB [L_RETRANSMIT_TIMER];
;	  1619	
;	  1620		end;
;	  1621	    !
;	  1622	    ! Process select flag if appropriate
;	  1623	    !
;	  1624	    if .DB [L_DUPLEX] neq DL_FULL
;	  1625	    then
;	  1626	
;	  1627		if .HEADER [H_SELECT]
;	  1628		then
;	  1629		    begin
;	  1630		    COUNTER_INCREMENT (DB, S_SELECTION_INTERVALS);
;	  1631		    DB [D_TIM] = .DB [L_RETRANSMIT_TIMER];
;	  1632		    end;
;	  1633	    !
;	  1634	    ! Send more data
;	  1635	    !
;	  1636	    SEND_DATA (DB [D_TIM]);
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  52
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (22)
;	  1637	    end;			!of routine DCPXCP
						.SBTTL	DCPXCP
000000	010446 				DCPXCP: MOV	R4,-(SP)			;					1481
000002	012746  000154 				MOV	#154,-(SP)			;					1505
000006	060516 					ADD	R5,(SP)				; DB,*
000010	010401 					MOV	R4,R1				;					1518
000012	016100  000020 				MOV	20(R1),R0			; *,PTR
000016	012076  000000 				MOV	(R0)+,@0(SP)			; PTR,*					1519
000022	011601 					MOV	(SP),R1				;					1520
000024	012061  000002 				MOV	(R0)+,2(R1)			; PTR,*
000030	011061  000004 				MOV	(R0),4(R1)			; PTR,*					1521
000034	121127  000005 				CMPB	(R1),#5				;					1527
000040	001431 					BEQ	2$
000042	105365  000146 				DECB	146(R5)				; *(DB)					1530
000046	121127  000201 				CMPB	(R1),#201			;					1532
000052	001014 					BNE	1$
000054	012703  000120 				MOV	#120,R3				;					1535
000060	060503 					ADD	R5,R3				; DB,*
000062	016600  000002 				MOV	2(SP),R0
000066	016004  000004 				MOV	4(R0),R4
000072	004767  000000G				JSR	PC,$CMQIN
000076	004767  000000V				JSR	PC,RETURN.ACKED.MESSAGES	;					1536
000102	000410 					BR	2$				;					1532
000104	016600  000002 			1$:	MOV	2(SP),R0			;					1539
000110	016004  000004 				MOV	4(R0),R4
000114	012703  100001 				MOV	#-77777,R3
000120	004767  000000V				JSR	PC,SCHEDULE.TRANSMIT
000124	016604  000002 			2$:	MOV	2(SP),R4			;					1543
000130	004767  000000G				JSR	PC,$CCBRT
000134	105365  000076 				DECB	76(R5)				; *(DB)					1547
000140	001005 					BNE	3$				;					1549
000142	032715  002000 				BIT	#2000,(R5)			; *,DB					1552
000146	001402 					BEQ	3$
000150	004767  000000V				JSR	PC,RETRANSMIT.UNACKED.MESSAGES
000154	105765  000002 			3$:	TSTB	2(R5)				; *(DB)					1557
000160	001511 					BEQ	13$
000162	127627  000000  000005 			CMPB	@0(SP),#5			;					1561
000170	001007 					BNE	4$
000172	017600  000000 				MOV	@0(SP),R0			;					1565
000176	105000 					CLRB	R0
000200	020027  001400 				CMP	R0,#1400
000204	001042 					BNE	7$
000206	000430 					BR	5$				;					1567
000210	127627  000000  000201 		4$:	CMPB	@0(SP),#201			;					1561
000216	001035 					BNE	7$
000220	116501  000073 				MOVB	73(R5),R1			; *(DB),NUM.NOT.TRANSMI			1582
000224	010102 					MOV	R1,R2				; NUM.NOT.TRANSMI,NUM.NOT.ACKED		1583
000226	011600 					MOV	(SP),R0				;					1585
000230	116000  000004 				MOVB	4(R0),R0
000234	110065  000072 				MOVB	R0,72(R5)			; *,*(DB)
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  53
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (22)
000240	160001 					SUB	R0,R1				; *,NUM.NOT.TRANSMI			1584
000242	116500  000074 				MOVB	74(R5),R0			; *(DB),*				1586
000246	160002 					SUB	R0,R2				; *,NUM.NOT.ACKED
000250	120201 					CMPB	R2,R1				; NUM.NOT.ACKED,NUM.NOT.TRANSMI		1587
000252	101411 					BLOS	6$
000254	032715  001000 				BIT	#1000,(R5)			; *,DB					1592
000260	001017 					BNE	8$
000262	032715  004000 				BIT	#4000,(R5)			; *,DB
000266	001011 					BNE	7$
000270	052715  001000 			5$:	BIS	#1000,(R5)			; *,DB					1594
000274	000406 					BR	7$				;					1572
000276	042715  005000 			6$:	BIC	#5000,(R5)			; *,DB					1600
000302	105765  000012 				TSTB	12(R5)				; *(DB)					1602
000306	001001 					BNE	7$
000310	105015 					CLRB	(R5)				; DB
000312	032715  001000 			7$:	BIT	#1000,(R5)			; *,DB					1611
000316	001411 					BEQ	9$
000320	042715  001000 			8$:	BIC	#1000,(R5)			; *,DB					1614
000324	052715  004000 				BIS	#4000,(R5)			; *,DB					1615
000330	105765  000012 				TSTB	12(R5)				; *(DB)					1617
000334	001005 					BNE	10$
000336	116515  000112 				MOVB	112(R5),(R5)			; *(DB),DB				1618
000342	105765  000012 			9$:	TSTB	12(R5)				; *(DB)					1624
000346	001414 					BEQ	12$
000350	011600 				10$:	MOV	(SP),R0				;					1627
000352	105760  000002 				TSTB	2(R0)
000356	100010 					BPL	12$
000360	012700  000040 				MOV	#40,R0				;					1630
000364	060500 					ADD	R5,R0				; DB,*
000366	005210 					INC	(R0)
000370	001001 					BNE	11$
000372	005310 					DEC	(R0)
000374	116515  000112 			11$:	MOVB	112(R5),(R5)			; *(DB),DB				1631
000400	004767  000000V			12$:	JSR	PC,SEND.DATA			;					1636
000404	022626 				13$:	CMP	(SP)+,(SP)+			;					1481
000406	000207 					RTS	PC
; Routine Size:  132 words,	Routine Base:  $CODE$ + 2340
; Maximum stack depth per invocation:  3 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  54
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (23)
;	  1638	routine DCPXME
;	  1639	
;	  1640	!++
;	  1641	! FUNCTIONAL DESCRIPTION:
;	  1642	!
;	  1643	!
;	  1644	! FORMAL PARAMETERS:
;	  1645	!
;	  1646	       (DB : ref block field (D_FIELDS),
;	  1647		CCB : ref block field (C_FIELDS),
;	  1648		MODIFIER)
;	  1649	!
;	  1650	! IMPLICIT INPUTS:
;	  1651	!
;	  1652	! IMPLICIT OUTPUTS:
;	  1653	!	None
;	  1654	!
;	  1655	! ROUTINE VALUE:
;	  1656	!
;	  1657		: MCB_DB_CCB_MOD novalue =
;	  1658	!
;	  1659	! SIDE EFFECTS:
;	  1660	!	None
;	  1661	!--
;	  1662	
;	  1663	    begin
;	P 1664	    DISPATCH$ (
;	P 1665		.MODIFIER,
;	P 1666		TABLE$ ($DSPCR, 0,
;	P 1667		    (DLL$K_ENTER_MAINTENANCE, ENTER_MAINTENANCE),
;	P 1668		    (DLL$K_INITIALIZE_LINK, INITIALIZE_LINK),
;	P 1669		    (DLL$K_STOP_LINK, STOP_LINK),
;	P 1670		    (DLL$K_TRANSMIT, TRANSMIT),
;	P 1671		    (DLL$K_TRANSMIT_AND_TIME, TRANSMIT)),
;	P 1672		(DB [D_TIM], .CCB),
;	  1673		MCB_DB_CCB);
;	  1674	    end;			!of routine DCPXME
000122						.PSECT	$PLIT$,  RO ,  D  
000122	000000V				P.AAH:	.WORD	TRANSMIT
000124	000000V					.WORD	INITIALIZE.LINK
000126	000000V					.WORD	STOP.LINK
000130	000000V					.WORD	ENTER.MAINTENANCE
000132	000000V					.WORD	TRANSMIT
						.SBTTL	DCPXME
002750						.PSECT	$CODE$,  RO 
000000	004773  000122'			DCPXME: JSR	PC,@P.AAH(R3)			; *,*(MODIFIER)				1673
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  55
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (23)
000004	000207 					RTS	PC				;					1638
; Routine Size:  3 words,	Routine Base:  $CODE$ + 2750
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  56
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (24)
;	  1675	routine ENTER_MAINTENANCE
;	  1676	
;	  1677	!++
;	  1678	! FUNCTIONAL DESCRIPTION:
;	  1679	!
;	  1680	!
;	  1681	! FORMAL PARAMETERS:
;	  1682	!
;	  1683	       (DB : ref block field (D_FIELDS),
;	  1684		CCB : ref block field (C_FIELDS))
;	  1685	!
;	  1686	! IMPLICIT INPUTS:
;	  1687	!
;	  1688	! IMPLICIT OUTPUTS:
;	  1689	!	None
;	  1690	!
;	  1691	! ROUTINE VALUE:
;	  1692	!
;	  1693		: MCB_DB_CCB novalue =
;	  1694	!
;	  1695	! SIDE EFFECTS:
;	  1696	!	None
;	  1697	!--
;	  1698	
;	  1699	    begin
;	  1700	    SET_LINK (DB [D_TIM], SS_HALTED);
;	  1701	    DB [DC_SET_REQUESTED_STATE] = TRUE;
;	  1702	    DB [S_REQUESTED_STATE] = SS_MAINTENANCE;
;	  1703	    SET_DEVICE (DB [D_TIM]);
;	  1704	    CCB [C_FNC] = FC_XCP;
;	  1705	    CCB [C_STS] = DLL$_SUCCESS;
;	  1706	    $MCB_SCHEDULE_CCB (.CCB);
;	  1707	    end;			!of routine ENTER_MAINTENANCE
						.SBTTL	ENTER.MAINTENANCE
000000	010446 				ENTER.MAINTENANCE:
						MOV	R4,-(SP)			;					1675
000002	005046 					CLR	-(SP)				;					1700
000004	004767  000000V				JSR	PC,SETLNK
000010	052765  004000  000006 			BIS	#4000,6(R5)			; *,*(DB)				1701
000016	112765  000004  000006 			MOVB	#4,6(R5)			; *,*(DB)				1702
000024	004767  000000V				JSR	PC,SETDEV			;					1703
000030	016600  000002 				MOV	2(SP),R0			;					1704
000034	112760  000014  000012 			MOVB	#14,12(R0)
000042	012760  100001  000014 			MOV	#-77777,14(R0)			;					1705
000050	010004 					MOV	R0,R4				;					1706
000052	004767  000000G				JSR	PC,$SCHED
000056	022626 					CMP	(SP)+,(SP)+			;					1675
000060	000207 					RTS	PC
; Routine Size:  25 words,	Routine Base:  $CODE$ + 2756
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  57
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (24)
; Maximum stack depth per invocation:  3 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  58
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (25)
;	  1708	routine HEADER_CCB
;	  1709	
;	  1710	!++
;	  1711	! FUNCTIONAL DESCRIPTION:
;	  1712	!
;	  1713	!
;	  1714	! FORMAL PARAMETERS:
;	  1715	!
;	  1716	       (DB : ref block field (D_FIELDS),
;	  1717		STACK_CCB : ref block field (C_FIELDS);
;	  1718		CCB : ref block field (C_FIELDS))
;	  1719	!
;	  1720	! IMPLICIT INPUTS:
;	  1721	!
;	  1722	! IMPLICIT OUTPUTS:
;	  1723	!	None
;	  1724	!
;	  1725	! ROUTINE VALUE:
;	  1726	!
;	  1727		: DCP_DB_CCB_HDR =
;	  1728	!
;	  1729	! SIDE EFFECTS:
;	  1730	!	None
;	  1731	!--
;	  1732	
;	  1733	    begin
;	  1734	
;	  1735	    if not $MCB_GET_CCB (CCB) then return 0;
;	  1736	
;	  1737	    CCB [C_CHN] = CCB [C_STK] = .STACK_CCB;
;	  1738	    CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
;	  1739	    CCB [C_PRM4] = 0;
;	  1740	    CCB [C_CNT] = 6;
;	  1741	    CCB [C_BIAS] = 0;
;	  1742	    CCB [C_ADDR] = ch$ptr (CCB [C_PRM1])
;	  1743	    end;			!of routine HEADER_CCB
						.GLOBL	$CCBGT
						.SBTTL	HEADER.CCB
000000	010400 				HEADER.CCB:
						MOV	R4,R0				; *,STACK.CCB				1708
000002	004767  000000G				JSR	PC,$CCBGT			;					1735
000006	103402 					BCS	1$
000010	010401 					MOV	R4,R1				; $MCB$R4,CCB
000012	000402 					BR	2$
000014	005000 				1$:	CLR	R0
000016	000423 					BR	3$
000020	010061  000004 			2$:	MOV	R0,4(R1)			; STACK.CCB,*(CCB)			1737
000024	010061  000002 				MOV	R0,2(R1)			; STACK.CCB,*(CCB)
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  59
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (25)
000030	016561  000144  000010 			MOV	144(R5),10(R1)			; *(DB),*(CCB)				1738
000036	005061  000032 				CLR	32(R1)				; *(CCB)				1739
000042	012761  000006  000022 			MOV	#6,22(R1)			; *,*(CCB)				1740
000050	005061  000016 				CLR	16(R1)				; *(CCB)				1741
000054	010100 					MOV	R1,R0				; CCB,*					1742
000056	062700  000024 				ADD	#24,R0
000062	010061  000020 				MOV	R0,20(R1)			; *,*(CCB)
000066	010104 				3$:	MOV	R1,R4				; CCB,*					1708
000070	000207 					RTS	PC
; Routine Size:  29 words,	Routine Base:  $CODE$ + 3040
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  60
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (26)
;	  1744	routine HEADER_FORMAT_ERROR
;	  1745	
;	  1746	!++
;	  1747	! FUNCTIONAL DESCRIPTION:
;	  1748	!
;	  1749	!
;	  1750	! FORMAL PARAMETERS:
;	  1751	!
;	  1752	       (DB : ref block field (D_FIELDS))
;	  1753	!
;	  1754	! IMPLICIT INPUTS:
;	  1755	!
;	  1756	! IMPLICIT OUTPUTS:
;	  1757	!	None
;	  1758	!
;	  1759	! ROUTINE VALUE:
;	  1760	!
;	  1761		: DCP_DB novalue =
;	  1762	!
;	  1763	! SIDE EFFECTS:
;	  1764	!	None
;	  1765	!--
;	  1766	
;	  1767	    begin
;	  1768	
;	  1769	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  1770		set
;	  1771		[SS_ISTRT] :
;	  1772		    begin
;	  1773		    DB [SS_SEND_START] = TRUE;
;	  1774		    DB [SS_SEND_SELECT] = TRUE;
;	  1775		    end;
;	  1776		[SS_ASTRT] :
;	  1777		    begin
;	  1778		    DB [SS_SEND_STACK] = TRUE;
;	  1779		    DB [SS_SEND_SELECT] = TRUE;
;	  1780		    end;
;	  1781		[SS_RUNNING] :
;	  1782		    begin
;	  1783		    DB [SS_SEND_NAK] = TRUE;
;	  1784		    DB [S_PENDING_NAK_REASON] = RN_HFE;
;	  1785		    DB [SS_SEND_ACK] = FALSE;
;	  1786		    COUNTER_INCREMENT (DB, L_REMOTE_STATION_ERRORS);
;	  1787		    COUNTER_INCREMENT (DB, LR_N17);
;	P 1788		    $NM_DLL_EVENT (6, .DB [S_CIRCUIT_ENTITY],
;	  1789			PARAMETER_HI (2, 6, DB [L_HEADER]));
;	  1790		    end;
;	  1791		[inrange] :
;	  1792		    NO_OPERATION;
;	  1793		tes;
;	  1794	
;	  1795	    end;			!of routine HEADER_FORMAT_ERROR
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  61
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (26)
						.GLOBL	$IC8, $DPHI
						.SBTTL	HEADER.FORMAT.ERROR
000000	010546 				HEADER.FORMAT.ERROR:
						MOV	R5,-(SP)			;					1744
000002	010502 					MOV	R5,R2				; *,DB
000004	012700  000002 				MOV	#2,R0				;					1769
000010	060200 					ADD	R2,R0				; DB,*
000012	111001 					MOVB	(R0),R1
000014	006301 					ASL	R1
000016	066107  000134'				ADD	P.AAI(R1),PC			; Case dispatch
000022	052710  001000 			1$:	BIS	#1000,(R0)			;					1773
000026	000402 					BR	3$				;					1774
000030	052710  000400 			2$:	BIS	#400,(R0)			;					1778
000034	052710  020000 			3$:	BIS	#20000,(R0)			;					1779
000040	000442 					BR	5$				;					1769
000042	052710  002000 			4$:	BIS	#2000,(R0)			;					1783
000046	112762  000021  000077 			MOVB	#21,77(R2)			; *,*(DB)				1784
000054	042710  010000 				BIC	#10000,(R0)			;					1785
000060	012700  000062 				MOV	#62,R0				;					1786
000064	060200 					ADD	R2,R0				; DB,*
000066	004767  000000G				JSR	PC,$IC8
000072	052762  001000  000062 			BIS	#1000,62(R2)			; *,*(DB)				1787
000100	004767  000000G				JSR	PC,$NLBEG			;					1789
000104	012746  000002 				MOV	#2,-(SP)
000110	010205 					MOV	R2,R5				; DB,*
000112	062705  000154 				ADD	#154,R5
000116	012700  000006 				MOV	#6,R0
000122	010501 					MOV	R5,R1
000124	004767  000000G				JSR	PC,$DPHI
000130	012700  000506 				MOV	#506,R0
000134	016201  000126 				MOV	126(R2),R1			; *(DB),*
000140	004767  000000G				JSR	PC,$NLEND
000144	005726 					TST	(SP)+				;					1782
000146	012605 				5$:	MOV	(SP)+,R5			;					1744
000150	000207 					RTS	PC
; Routine Size:  53 words,	Routine Base:  $CODE$ + 3132
; Maximum stack depth per invocation:  3 words
000134						.PSECT	$PLIT$,  RO ,  D  
					P.AAI:						; CASE Table for HEADER.FORMAT.E+0016	1769
000134	000124 					.WORD	124				; [5$]
000136	000000 					.WORD	0				; [1$]
000140	000006 					.WORD	6				; [2$]
000142	000020 					.WORD	20				; [4$]
000144	000124 					.WORD	124				; [5$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  62
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (26)
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  63
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (27)
;	  1796	routine IGNORE_MESSAGE
;	  1797	
;	  1798	!++
;	  1799	! FUNCTIONAL DESCRIPTION:
;	  1800	!
;	  1801	!
;	  1802	! FORMAL PARAMETERS:
;	  1803	!
;	  1804	       (DB : ref block field (D_FIELDS))
;	  1805	!
;	  1806	! IMPLICIT INPUTS:
;	  1807	!
;	  1808	! IMPLICIT OUTPUTS:
;	  1809	!	None
;	  1810	!
;	  1811	! ROUTINE VALUE:
;	  1812	!
;	  1813		: DCP_DB novalue =
;	  1814	!
;	  1815	! SIDE EFFECTS:
;	  1816	!	None
;	  1817	!--
;	  1818	
;	  1819	    begin
;	  1820	
;	  1821	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  1822		set
;	  1823		[SS_ISTRT] :
;	  1824		    begin
;	  1825		    DB [SS_SEND_START] = TRUE;
;	  1826		    DB [SS_SEND_SELECT] = TRUE;
;	  1827		    end;
;	  1828		[SS_ASTRT] :
;	  1829		    begin
;	  1830		    DB [SS_SEND_STACK] = TRUE;
;	  1831		    DB [SS_SEND_SELECT] = TRUE;
;	  1832		    end;
;	  1833		[inrange] :
;	  1834		    NO_OPERATION;
;	  1835		tes;
;	  1836	
;	  1837	    end;			!of routine IGNORE_MESSAGE
						.SBTTL	IGNORE.MESSAGE
003304						.PSECT	$CODE$,  RO 
000000	012700  000002 			IGNORE.MESSAGE:
						MOV	#2,R0				;					1821
000004	060500 					ADD	R5,R0				; DB,*
000006	111001 					MOVB	(R0),R1
000010	006301 					ASL	R1
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  64
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (27)
000012	066107  000146'				ADD	P.AAJ(R1),PC			; Case dispatch
000016	052710  001000 			1$:	BIS	#1000,(R0)			;					1825
000022	000402 					BR	3$				;					1826
000024	052710  000400 			2$:	BIS	#400,(R0)			;					1830
000030	052710  020000 			3$:	BIS	#20000,(R0)			;					1831
000034	000207 				4$:	RTS	PC				;					1796
; Routine Size:  15 words,	Routine Base:  $CODE$ + 3304
; Maximum stack depth per invocation:  0 words
000146						.PSECT	$PLIT$,  RO ,  D  
					P.AAJ:						; CASE Table for IGNORE.MESSAGE+0012	1821
000146	000016 					.WORD	16				; [4$]
000150	000000 					.WORD	0				; [1$]
000152	000006 					.WORD	6				; [2$]
000154	000016 					.WORD	16				; [4$]
000156	000016 					.WORD	16				; [4$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  65
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (28)
;	  1838	routine INITIALIZE_LINK
;	  1839	
;	  1840	!++
;	  1841	! FUNCTIONAL DESCRIPTION:
;	  1842	!
;	  1843	!
;	  1844	! FORMAL PARAMETERS:
;	  1845	!
;	  1846	       (DB : ref block field (D_FIELDS),
;	  1847		CCB : ref block field (C_FIELDS))
;	  1848	!
;	  1849	! IMPLICIT INPUTS:
;	  1850	!
;	  1851	! IMPLICIT OUTPUTS:
;	  1852	!	None
;	  1853	!
;	  1854	! ROUTINE VALUE:
;	  1855	!
;	  1856		: MCB_DB_CCB novalue =
;	  1857	!
;	  1858	! SIDE EFFECTS:
;	  1859	!	None
;	  1860	!--
;	  1861	
;	  1862	    begin
;	  1863	    SET_LINK (DB [D_TIM], SS_HALTED);
;	  1864	    DB [DC_SET_REQUESTED_STATE] = TRUE;
;	  1865	    DB [S_REQUESTED_STATE] = SS_RUNNING;
;	  1866	    SET_DEVICE (DB [D_TIM]);
;	  1867	    CCB [C_FNC] = FC_XCP;
;	  1868	    CCB [C_STS] = DLL$_SUCCESS;
;	  1869	    $MCB_SCHEDULE_CCB (.CCB);
;	  1870	    end;			!of routine INITIALIZE_LINK
						.SBTTL	INITIALIZE.LINK
003342						.PSECT	$CODE$,  RO 
000000	010446 				INITIALIZE.LINK:
						MOV	R4,-(SP)			;					1838
000002	005046 					CLR	-(SP)				;					1863
000004	004767  000000V				JSR	PC,SETLNK
000010	052765  004000  000006 			BIS	#4000,6(R5)			; *,*(DB)				1864
000016	112765  000003  000006 			MOVB	#3,6(R5)			; *,*(DB)				1865
000024	004767  000000V				JSR	PC,SETDEV			;					1866
000030	016600  000002 				MOV	2(SP),R0			;					1867
000034	112760  000014  000012 			MOVB	#14,12(R0)
000042	012760  100001  000014 			MOV	#-77777,14(R0)			;					1868
000050	010004 					MOV	R0,R4				;					1869
000052	004767  000000G				JSR	PC,$SCHED
000056	022626 					CMP	(SP)+,(SP)+			;					1838
000060	000207 					RTS	PC
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  66
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (28)
; Routine Size:  25 words,	Routine Base:  $CODE$ + 3342
; Maximum stack depth per invocation:  3 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  67
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (29)
;	  1871	routine MESSAGE_LENGTH
;	  1872	
;	  1873	!++
;	  1874	! FUNCTIONAL DESCRIPTION:
;	  1875	!
;	  1876	!
;	  1877	! FORMAL PARAMETERS:
;	  1878	!
;	  1879	       (CCB : ref block field (C_FIELDS))
;	  1880	!
;	  1881	! IMPLICIT INPUTS:
;	  1882	!
;	  1883	! IMPLICIT OUTPUTS:
;	  1884	!	None
;	  1885	!
;	  1886	! ROUTINE VALUE:
;	  1887	!
;	  1888		: DCP_CCB =
;	  1889	!
;	  1890	! SIDE EFFECTS:
;	  1891	!	None
;	  1892	!--
;	  1893	
;	  1894	    begin
;	  1895	
;	  1896	    local
;	  1897		CNT;
;	  1898	
;	  1899	    CCB = .CCB [C_CHN];
;	  1900	    CNT = 0;
;	  1901	
;	  1902	    do (CNT = .CNT + .CCB [C_CNT]) while (CCB = .CCB [C_CHN]) neqa 0;
;	  1903	
;	  1904	    .CNT
;	  1905	    end;			!of routine MESSAGE_LENGTH
						.SBTTL	MESSAGE.LENGTH
000000	010446 				MESSAGE.LENGTH:
						MOV	R4,-(SP)			;					1871
000002	016404  000002 				MOV	2(R4),R4			; *(CCB),CCB				1899
000006	005000 					CLR	R0				; CNT					1900
000010	066400  000022 			1$:	ADD	22(R4),R0			; *(CCB),CNT				1902
000014	016404  000002 				MOV	2(R4),R4			; *(CCB),CCB
000020	001373 					BNE	1$
000022	012604 					MOV	(SP)+,R4			;					1871
000024	000207 					RTS	PC
; Routine Size:  11 words,	Routine Base:  $CODE$ + 3424
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  68
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (30)
;	  1906	routine PROCESS_ACK_MESSAGE
;	  1907	
;	  1908	!++
;	  1909	! FUNCTIONAL DESCRIPTION:
;	  1910	!
;	  1911	!
;	  1912	! FORMAL PARAMETERS:
;	  1913	!
;	  1914	       (DB : ref block field (D_FIELDS))
;	  1915	!
;	  1916	! IMPLICIT INPUTS:
;	  1917	!
;	  1918	! IMPLICIT OUTPUTS:
;	  1919	!	None
;	  1920	!
;	  1921	! ROUTINE VALUE:
;	  1922	!
;	  1923		: DCP_DB novalue =
;	  1924	!
;	  1925	! SIDE EFFECTS:
;	  1926	!	None
;	  1927	!--
;	  1928	
;	  1929	    begin
;	  1930	
;	  1931	    bind
;	  1932		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  1933	
;	  1934	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  1935		set
;	  1936		[SS_ISTRT] :
;	  1937		    return IGNORE_MESSAGE (DB [D_TIM]);
;	  1938		[SS_ASTRT] :
;	  1939	
;	  1940		    if .HEADER [H_RESP] eqlu 0
;	  1941		    then
;	  1942			begin
;	  1943			CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_RUNNING, 1);
;	  1944			DB [S_TRANSMIT_THRESHOLD] = 7;
;	  1945			DB [S_RECEIVE_THRESHOLD] = 7;
;	  1946	
;	  1947			if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
;	  1948	
;	  1949			end
;	  1950		    else
;	  1951			return IGNORE_MESSAGE (DB [D_TIM]);
;	  1952	
;	  1953		[SS_RUNNING] :
;	  1954	
;	  1955		    if CKACK (DB [D_TIM])
;	  1956		    then
;	  1957			CKREP (DB [D_TIM])
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  69
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (30)
;	  1958		    else
;	  1959			return IGNORE_MESSAGE (DB [D_TIM]);
;	  1960	
;	  1961		[SS_MAINTENANCE] :
;	  1962		    NO_OPERATION;
;	  1963		[inrange] :
;	  1964		    return NO_OPERATION;
;	  1965		tes;
;	  1966	
;	  1967	    PROCESS_SELECT_FLAG (DB [D_TIM]);
;	  1968	    end;			!of routine PROCESS_ACK_MESSAGE
						.SBTTL	PROCESS.ACK.MESSAGE
000000	116500  000002 			PROCESS.ACK.MESSAGE:
						MOVB	2(R5),R0			; *(DB),*				1934
000004	006300 					ASL	R0
000006	066007  000160'				ADD	P.AAK(R0),PC			; Case dispatch
000012	000434 				1$:	BR	5$				;					1937
000014	105765  000157 			2$:	TSTB	157(R5)				; *(DB)					1940
000020	001031 					BNE	5$
000022	012746  000003 				MOV	#3,-(SP)			;					1943
000026	012746  000001 				MOV	#1,-(SP)
000032	004767  175540 				JSR	PC,CHANGE.PROTOCOL.STATE
000036	112765  000007  000016 			MOVB	#7,16(R5)			; *,*(DB)				1944
000044	112765  000007  000015 			MOVB	#7,15(R5)			; *,*(DB)				1945
000052	105765  000012 				TSTB	12(R5)				; *(DB)					1947
000056	001001 					BNE	3$
000060	105015 					CLRB	(R5)				; DB
000062	022626 				3$:	CMP	(SP)+,(SP)+			;					1942
000064	000412 					BR	6$				;					1940
000066	004767  175604 			4$:	JSR	PC,CKACK			;					1955
000072	006000 					ROR	R0
000074	103003 					BCC	5$
000076	004767  175666 				JSR	PC,CKREP			;					1957
000102	000403 					BR	6$				;					1955
000104	004767  177522 			5$:	JSR	PC,IGNORE.MESSAGE		;					1959
000110	000207 					RTS	PC
000112	004767  000000V			6$:	JSR	PC,PROCESS.SELECT.FLAG		;					1967
000116	000207 				7$:	RTS	PC				;					1906
; Routine Size:  40 words,	Routine Base:  $CODE$ + 3452
; Maximum stack depth per invocation:  3 words
000160						.PSECT	$PLIT$,  RO ,  D  
					P.AAK:						; CASE Table for PROCESS.ACK.MES+0006	1934
000160	000104 					.WORD	104				; [7$]
000162	000072 					.WORD	72				; [5$]
000164	000002 					.WORD	2				; [2$]
000166	000054 					.WORD	54				; [4$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  70
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (30)
000170	000100 					.WORD	100				; [6$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  71
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (31)
;	  1969	routine PROCESS_CONTROL_MESSAGE
;	  1970	
;	  1971	!++
;	  1972	! FUNCTIONAL DESCRIPTION:
;	  1973	!
;	  1974	!
;	  1975	! FORMAL PARAMETERS:
;	  1976	!
;	  1977	       (DB : ref block field (D_FIELDS),
;	  1978		CCB : ref block field (C_FIELDS))
;	  1979	!
;	  1980	! IMPLICIT INPUTS:
;	  1981	!
;	  1982	! IMPLICIT OUTPUTS:
;	  1983	!	None
;	  1984	!
;	  1985	! ROUTINE VALUE:
;	  1986	!
;	  1987		: DCP_DB_CCBR novalue =
;	  1988	!
;	  1989	! SIDE EFFECTS:
;	  1990	!	None
;	  1991	!--
;	  1992	
;	  1993	    begin
;	  1994	
;	  1995	    bind
;	  1996		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  1997	
;	  1998	    CASE .HEADER [H_TYPE] from MT_LOW to MT_HIGH of
;	  1999		set
;	  2000		[MT_STR] : PROCESS_START_MESSAGE (DB [D_TIM]);
;	  2001		[MT_STK] : PROCESS_STACK_MESSAGE (DB [D_TIM]);
;	  2002		[MT_ACK] : PROCESS_ACK_MESSAGE (DB [D_TIM]);
;	  2003		[MT_NAK] : PROCESS_NAK_MESSAGE (DB [D_TIM]);
;	  2004		[MT_REP] : PROCESS_REP_MESSAGE (DB [D_TIM]);
;	  2005		[inrange, outrange] : HEADER_FORMAT_ERROR (DB [D_TIM]);
;	  2006		tes;
;	  2007	
;	  2008	    STARCE (DB [D_TIM], .CCB);
;	  2009	    end;			!of routine PROCESS_CONTROL_MESSAGE
						.SBTTL	PROCESS.CONTROL.MESSAGE
003572						.PSECT	$CODE$,  RO 
000000	010446 				PROCESS.CONTROL.MESSAGE:
						MOV	R4,-(SP)			;					1969
000002	005000 					CLR	R0				;					1998
000004	156500  000155 				BISB	155(R5),R0			; *(DB),*
000010	005300 					DEC	R0
000012	020027  000006 				CMP	R0,#6
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  72
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (31)
000016	101003 					BHI	1$
000020	006300 					ASL	R0
000022	066007  000172'				ADD	P.AAL(R0),PC			; Case dispatch
000026	004767  177306 			1$:	JSR	PC,HEADER.FORMAT.ERROR		;					2005
000032	000416 					BR	7$				;					1998
000034	004767  000000V			2$:	JSR	PC,PROCESS.START.MESSAGE	;					2000
000040	000413 					BR	7$				;					1998
000042	004767  000000V			3$:	JSR	PC,PROCESS.STACK.MESSAGE	;					2001
000046	000410 					BR	7$				;					1998
000050	004767  177604 			4$:	JSR	PC,PROCESS.ACK.MESSAGE		;					2002
000054	000405 					BR	7$				;					1998
000056	004767  000000V			5$:	JSR	PC,PROCESS.NAK.MESSAGE		;					2003
000062	000402 					BR	7$				;					1998
000064	004767  000000V			6$:	JSR	PC,PROCESS.REP.MESSAGE		;					2004
000070	011604 				7$:	MOV	(SP),R4				;					2008
000072	004767  000000V				JSR	PC,STARCE
000076	005726 					TST	(SP)+				;					1969
000100	000207 					RTS	PC
; Routine Size:  33 words,	Routine Base:  $CODE$ + 3572
; Maximum stack depth per invocation:  2 words
000172						.PSECT	$PLIT$,  RO ,  D  
					P.AAL:						; CASE Table for PROCESS.CONTROL+0022	1998
000172	000022 					.WORD	22				; [4$]
000174	000030 					.WORD	30				; [5$]
000176	000036 					.WORD	36				; [6$]
000200	000000 					.WORD	0				; [1$]
000202	000000 					.WORD	0				; [1$]
000204	000006 					.WORD	6				; [2$]
000206	000014 					.WORD	14				; [3$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  73
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (32)
;	  2010	routine PROCESS_DATA_MESSAGE
;	  2011	
;	  2012	!++
;	  2013	! FUNCTIONAL DESCRIPTION:
;	  2014	!
;	  2015	!
;	  2016	! FORMAL PARAMETERS:
;	  2017	!
;	  2018	       (DB : ref block field (D_FIELDS),
;	  2019		CCB : ref block field (C_FIELDS))
;	  2020	!
;	  2021	! IMPLICIT INPUTS:
;	  2022	!
;	  2023	! IMPLICIT OUTPUTS:
;	  2024	!	None
;	  2025	!
;	  2026	! ROUTINE VALUE:
;	  2027	!
;	  2028		: DCP_DB_CCBR novalue =
;	  2029	!
;	  2030	! SIDE EFFECTS:
;	  2031	!	None
;	  2032	!--
;	  2033	
;	  2034	    begin
;	  2035	
;	  2036	    bind
;	  2037		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  2038	
;	  2039	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  2040		set
;	  2041		[SS_ASTRT] :
;	  2042	
;	  2043		    if .HEADER [H_RESP] eqlu 0
;	  2044		    then
;	  2045			begin
;	  2046	
;	  2047			if
;	  2048			    begin
;	  2049	
;	  2050			    local
;	  2051				NEW_NUM;
;	  2052	
;	  2053			    NEW_NUM = .DB [S_R] + 1;
;	  2054			    .HEADER [H_NUM] eql .NEW_NUM <0, 8>
;	  2055			    end
;	  2056			then
;	  2057			    begin
;	  2058	
;	  2059			    if .CCB [C_STS] geq 0
;	  2060			    then
;	  2061				begin
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  74
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (32)
;	  2062				DB [S_R] = .DB [S_R] + 1;
;	  2063				COUNTER_INCREMENT (DB, S_DATA_BLOCKS_RECEIVED);
;	  2064				COUNTER_ADD (DB, S_BYTES_RECEIVED, .CCB [C_CNT]);
;	  2065				DB [SS_SEND_ACK] = TRUE;
;	  2066				DB [SS_SEND_NAK] = FALSE;
;	  2067				DB [S_RECEIVE_THRESHOLD] = 7;
;	  2068				CCB [C_MOD] = DLL$K_DATA_RECEIVED;
;	  2069				SCHEDULE_RECEIVE (.CCB, DB [D_TIM], DLL$_SUCCESS);
;	  2070				end
;	  2071			    else
;	  2072				begin
;	  2073				RECORD_DRIVER_ERROR (DB [D_TIM], .CCB);
;	  2074				STARCE (DB [D_TIM], .CCB);
;	  2075				end;
;	  2076	
;	  2077			    end
;	  2078			else
;	  2079			    STARCE (DB [D_TIM], .CCB);
;	  2080	
;	  2081			end
;	  2082		    else
;	  2083			STARCE (DB [D_TIM], .CCB);
;	  2084	
;	  2085		[SS_RUNNING] :
;	  2086		    begin
;	  2087	
;	  2088		    if CKACK (DB [D_TIM])
;	  2089		    then
;	  2090			CKREP (DB [D_TIM]);
;	  2091	
;	  2092		    if
;	  2093			begin
;	  2094	
;	  2095			local
;	  2096			    NEW_NUM;
;	  2097	
;	  2098			NEW_NUM = .DB [S_R] + 1;
;	  2099			.HEADER [H_NUM] eql .NEW_NUM <0, 8>
;	  2100			end
;	  2101		    then
;	  2102			begin
;	  2103	
;	  2104			if .CCB [C_STS] geq 0
;	  2105			then
;	  2106			    begin
;	  2107			    DB [S_R] = .DB [S_R] + 1;
;	  2108			    COUNTER_INCREMENT (DB, S_DATA_BLOCKS_RECEIVED);
;	  2109			    COUNTER_ADD (DB, S_BYTES_RECEIVED, .CCB [C_CNT]);
;	  2110			    DB [SS_SEND_ACK] = TRUE;
;	  2111			    DB [SS_SEND_NAK] = FALSE;
;	  2112			    DB [S_RECEIVE_THRESHOLD] = 7;
;	  2113			    CCB [C_MOD] = DLL$K_DATA_RECEIVED;
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  75
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (32)
;	  2114			    SCHEDULE_RECEIVE (.CCB, DB [D_TIM], DLL$_SUCCESS);
;	  2115			    end
;	  2116			else
;	  2117			    begin
;	  2118			    RECORD_DRIVER_ERROR (DB [D_TIM], .CCB);
;	  2119			    STARCE (DB [D_TIM], .CCB);
;	  2120			    end;
;	  2121	
;	  2122			end
;	  2123		    else
;	  2124			STARCE (DB [D_TIM], .CCB);
;	  2125	
;	  2126		    end;
;	  2127		[inrange] :
;	  2128		    STARCE (DB [D_TIM], .CCB);
;	  2129		tes;
;	  2130	
;	  2131	    PROCESS_SELECT_FLAG (DB [D_TIM]);
;	  2132	    end;			!of routine PROCESS_DATA_MESSAGE
						.SBTTL	PROCESS.DATA.MESSAGE
003674						.PSECT	$CODE$,  RO 
000000	010546 				PROCESS.DATA.MESSAGE:
						MOV	R5,-(SP)			;					2010
000002	005746 					TST	-(SP)
000004	010446 					MOV	R4,-(SP)
000006	010566  000002 				MOV	R5,2(SP)
000012	012700  000154 				MOV	#154,R0				;					2034
000016	060500 					ADD	R5,R0
000020	010046 					MOV	R0,-(SP)
000022	012700  000002 				MOV	#2,R0				;					2039
000026	060500 					ADD	R5,R0
000030	010046 					MOV	R0,-(SP)
000032	111000 					MOVB	(R0),R0
000034	006300 					ASL	R0
000036	066007  000210'				ADD	P.AAM(R0),PC			; Case dispatch
000042	016600  000002 			1$:	MOV	2(SP),R0			;					2043
000046	105760  000003 				TSTB	3(R0)
000052	001136 					BNE	6$
000054	005000 					CLR	R0				; NEW.NUM				2053
000056	016601  000006 				MOV	6(SP),R1
000062	156100  000070 				BISB	70(R1),R0			; *,NEW.NUM
000066	005200 					INC	R0				; NEW.NUM
000070	016601  000002 				MOV	2(SP),R1			;					2054
000074	126100  000004 				CMPB	4(R1),R0			; *,NEW.NUM
000100	001123 					BNE	6$
000102	016600  000004 				MOV	4(SP),R0			;					2059
000106	005760  000014 				TST	14(R0)
000112	002510 					BLT	5$
000114	000432 					BR	4$				;					2062
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  76
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (32)
000116	016605  000006 			2$:	MOV	6(SP),R5			;					2088
000122	004767  175326 				JSR	PC,CKACK
000126	006000 					ROR	R0
000130	103004 					BCC	3$
000132	016605  000006 				MOV	6(SP),R5			;					2090
000136	004767  175404 				JSR	PC,CKREP
000142	005000 				3$:	CLR	R0				; NEW.NUM				2098
000144	016601  000006 				MOV	6(SP),R1
000150	156100  000070 				BISB	70(R1),R0			; *,NEW.NUM
000154	005200 					INC	R0				; NEW.NUM
000156	016601  000002 				MOV	2(SP),R1			;					2099
000162	126100  000004 				CMPB	4(R1),R0			; *,NEW.NUM
000166	001070 					BNE	6$
000170	016600  000004 				MOV	4(SP),R0			;					2104
000174	005760  000014 				TST	14(R0)
000200	002455 					BLT	5$
000202	016601  000006 			4$:	MOV	6(SP),R1			;					2107
000206	105261  000070 				INCB	70(R1)
000212	010105 					MOV	R1,R5				;					2108
000214	062705  000030 				ADD	#30,R5
000220	010500 					MOV	R5,R0
000222	004767  000000G				JSR	PC,$IC32
000226	016605  000006 				MOV	6(SP),R5			;					2109
000232	062705  000020 				ADD	#20,R5
000236	010500 					MOV	R5,R0
000240	016602  000004 				MOV	4(SP),R2
000244	016201  000022 				MOV	22(R2),R1
000250	004767  000000G				JSR	PC,$AC32
000254	052776  010000  000000 			BIS	#10000,@0(SP)			;					2110
000262	042776  002000  000000 			BIC	#2000,@0(SP)			;					2111
000270	016600  000006 				MOV	6(SP),R0			;					2112
000274	112760  000007  000015 			MOVB	#7,15(R0)
000302	016600  000004 				MOV	4(SP),R0			;					2113
000306	105060  000013 				CLRB	13(R0)
000312	012746  100001 				MOV	#-77777,-(SP)			;					2114
000316	010004 					MOV	R0,R4
000320	016605  000010 				MOV	10(SP),R5
000324	004767  000000V				JSR	PC,SCHEDULE.RECEIVE
000330	005726 					TST	(SP)+				;					2106
000332	000414 					BR	7$				;					2104
000334	016605  000006 			5$:	MOV	6(SP),R5			;					2118
000340	016604  000004 				MOV	4(SP),R4
000344	004767  000000V				JSR	PC,RECORD.DRIVER.ERROR
000350	016605  000006 			6$:	MOV	6(SP),R5			;					2128
000354	016604  000004 				MOV	4(SP),R4
000360	004767  000000V				JSR	PC,STARCE
000364	016605  000006 			7$:	MOV	6(SP),R5			;					2131
000370	004767  000000V				JSR	PC,PROCESS.SELECT.FLAG
000374	062706  000010 				ADD	#10,SP				;					2010
000400	012605 					MOV	(SP)+,R5
000402	000207 					RTS	PC
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  77
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (32)
; Routine Size:  130 words,	Routine Base:  $CODE$ + 3674
; Maximum stack depth per invocation:  7 words
000210						.PSECT	$PLIT$,  RO ,  D  
					P.AAM:						; CASE Table for PROCESS.DATA.ME+0036	2039
000210	000306 					.WORD	306				; [6$]
000212	000306 					.WORD	306				; [6$]
000214	000000 					.WORD	0				; [1$]
000216	000054 					.WORD	54				; [2$]
000220	000306 					.WORD	306				; [6$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  78
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (33)
;	  2133	routine PROCESS_MAINTENANCE_MESSAGE
;	  2134	
;	  2135	!++
;	  2136	! FUNCTIONAL DESCRIPTION:
;	  2137	!
;	  2138	!
;	  2139	! FORMAL PARAMETERS:
;	  2140	!
;	  2141	       (DB : ref block field (D_FIELDS),
;	  2142		CCB : ref block field (C_FIELDS))
;	  2143	!
;	  2144	! IMPLICIT INPUTS:
;	  2145	!
;	  2146	! IMPLICIT OUTPUTS:
;	  2147	!	None
;	  2148	!
;	  2149	! ROUTINE VALUE:
;	  2150	!
;	  2151		: DCP_DB_CCBR novalue =
;	  2152	!
;	  2153	! SIDE EFFECTS:
;	  2154	!	None
;	  2155	!--
;	  2156	
;	  2157	    begin
;	  2158	
;	  2159	    bind
;	  2160		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  2161	
;	  2162	    if .DB [L_PROTOCOL] eql DP_DMC
;	  2163	    then
;	  2164		begin
;	  2165		HEADER [H_SELECT] = TRUE;
;	  2166		HEADER [H_QSYNC] = TRUE;
;	  2167		end;
;	  2168	
;	  2169	    if not .HEADER [H_SELECT]
;	  2170	    then
;	  2171		HEADER_FORMAT_ERROR (DB [D_TIM]);
;	  2172	
;	  2173	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  2174		set
;	  2175		[SS_ISTRT, SS_ASTRT, SS_RUNNING] :
;	  2176		    begin
;	  2177		    $NM_DLL_EVENT (96^6 + 13, .DB [S_CIRCUIT_ENTITY]);
;	  2178		    SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_MAINTENANCE_RECEIVED);
;	  2179		    SET_LINK (DB [D_TIM], DB [S_REQUESTED_STATE] = SS_HALTED);
;	  2180		    SET_DEVICE (DB [D_TIM]);
;	  2181		    STARCE (DB [D_TIM], .CCB);
;	  2182		    end;
;	  2183		[SS_MAINTENANCE] :
;	  2184		    begin
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  79
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (33)
;	  2185	
;	  2186		    if .CCB [C_STS] geq 0
;	  2187		    then
;	  2188			begin
;	  2189			DB [S_RECEIVE_THRESHOLD] = 7;
;	  2190			CCB [C_MOD] = DLL$K_MAINTENANCE_RECEIVED;
;	  2191			SCHEDULE_RECEIVE (.CCB, DB [D_TIM], DLL$_SUCCESS);
;	  2192			end
;	  2193		    else
;	  2194			begin
;	  2195			COUNTER_INCREMENT (DB, L_MAINTENANCE_BCC_ERRORS);
;	  2196			STARCE (DB [D_TIM], .CCB);
;	  2197			end;
;	  2198	
;	  2199		    end;
;	  2200		[inrange] :
;	  2201		    STARCE (DB [D_TIM], .CCB);
;	  2202		tes;
;	  2203	
;	  2204	    PROCESS_SELECT_FLAG (DB [D_TIM]);
;	  2205	    end;			!of routine PROCESS_MAINTENANCE_MESSAGE
						.SBTTL	PROCESS.MAINTENANCE.MESSAGE
004300						.PSECT	$CODE$,  RO 
000000	010546 				PROCESS.MAINTENANCE.MESSAGE:
						MOV	R5,-(SP)			;					2133
000002	005746 					TST	-(SP)
000004	010446 					MOV	R4,-(SP)
000006	010566  000002 				MOV	R5,2(SP)
000012	010500 					MOV	R5,R0				;					2162
000014	126027  000010  000004 			CMPB	10(R0),#4
000022	001003 					BNE	1$
000024	152760  000300  000156 			BISB	#300,156(R0)			;					2166
000032	016600  000002 			1$:	MOV	2(SP),R0			;					2169
000036	105760  000156 				TSTB	156(R0)
000042	100403 					BMI	2$
000044	010005 					MOV	R0,R5				;					2171
000046	004767  176560 				JSR	PC,HEADER.FORMAT.ERROR
000052	016601  000002 			2$:	MOV	2(SP),R1			;					2173
000056	116100  000002 				MOVB	2(R1),R0
000062	006300 					ASL	R0
000064	066007  000222'				ADD	P.AAN(R0),PC			; Case dispatch
000070	004767  000000G			3$:	JSR	PC,$NLBEG			;					2177
000074	012700  014515 				MOV	#14515,R0
000100	016602  000002 				MOV	2(SP),R2
000104	016201  000126 				MOV	126(R2),R1
000110	004767  000000G				JSR	PC,$NLEND
000114	016605  000002 				MOV	2(SP),R5			;					2178
000120	012703  100142 				MOV	#-77636,R3
000124	004767  000000V				JSR	PC,SEND.PERSISTENT.ERROR
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  80
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (33)
000130	016600  000002 				MOV	2(SP),R0			;					2179
000134	105060  000006 				CLRB	6(R0)
000140	005046 					CLR	-(SP)
000142	010005 					MOV	R0,R5
000144	004767  000000V				JSR	PC,SETLNK
000150	016605  000004 				MOV	4(SP),R5			;					2180
000154	004767  000000V				JSR	PC,SETDEV
000160	016605  000004 				MOV	4(SP),R5			;					2181
000164	016604  000002 				MOV	2(SP),R4
000170	004767  000000V				JSR	PC,STARCE
000174	000424 					BR	5$				;					2176
000176	011600 				4$:	MOV	(SP),R0				;					2186
000200	005760  000014 				TST	14(R0)
000204	002422 					BLT	6$
000206	016600  000002 				MOV	2(SP),R0			;					2189
000212	112760  000007  000015 			MOVB	#7,15(R0)
000220	011600 					MOV	(SP),R0				;					2190
000222	112760  000002  000013 			MOVB	#2,13(R0)
000230	012746  100001 				MOV	#-77777,-(SP)			;					2191
000234	010004 					MOV	R0,R4
000236	016605  000004 				MOV	4(SP),R5
000242	004767  000000V				JSR	PC,SCHEDULE.RECEIVE
000246	005726 				5$:	TST	(SP)+				;					2188
000250	000414 					BR	8$				;					2186
000252	016605  000002 			6$:	MOV	2(SP),R5			;					2195
000256	062705  000067 				ADD	#67,R5
000262	010500 					MOV	R5,R0
000264	004767  000000G				JSR	PC,$IC8
000270	016605  000002 			7$:	MOV	2(SP),R5			;					2201
000274	011604 					MOV	(SP),R4
000276	004767  000000V				JSR	PC,STARCE
000302	016605  000002 			8$:	MOV	2(SP),R5			;					2204
000306	004767  000000V				JSR	PC,PROCESS.SELECT.FLAG
000312	022626 					CMP	(SP)+,(SP)+			;					2133
000314	012605 					MOV	(SP)+,R5
000316	000207 					RTS	PC
; Routine Size:  104 words,	Routine Base:  $CODE$ + 4300
; Maximum stack depth per invocation:  5 words
000222						.PSECT	$PLIT$,  RO ,  D  
					P.AAN:						; CASE Table for PROCESS.MAINTEN+0064	2173
000222	000200 					.WORD	200				; [7$]
000224	000000 					.WORD	0				; [3$]
000226	000000 					.WORD	0				; [3$]
000230	000000 					.WORD	0				; [3$]
000232	000106 					.WORD	106				; [4$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  81
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (34)
;	  2206	routine PROCESS_NAK_MESSAGE
;	  2207	
;	  2208	!++
;	  2209	! FUNCTIONAL DESCRIPTION:
;	  2210	!
;	  2211	!
;	  2212	! FORMAL PARAMETERS:
;	  2213	!
;	  2214	       (DB : ref block field (D_FIELDS))
;	  2215	!
;	  2216	! IMPLICIT INPUTS:
;	  2217	!
;	  2218	! IMPLICIT OUTPUTS:
;	  2219	!	None
;	  2220	!
;	  2221	! ROUTINE VALUE:
;	  2222	!
;	  2223		: DCP_DB novalue =
;	  2224	!
;	  2225	! SIDE EFFECTS:
;	  2226	!	None
;	  2227	!--
;	  2228	
;	  2229	    begin
;	  2230	
;	  2231	    bind
;	  2232		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  2233	
;	  2234	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  2235		set
;	  2236		[SS_ISTRT, SS_ASTRT] :
;	  2237		    return IGNORE_MESSAGE (DB [D_TIM]);
;	  2238		[SS_RUNNING] :
;	  2239	
;	  2240		    if CKACK (DB [D_TIM])
;	  2241		    then
;	  2242			begin
;	  2243	
;	  2244			if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
;	  2245	
;	  2246			RECORD_NAK_REASON (DB [D_TIM]);
;	  2247			PROCESS_SELECT_FLAG (DB [D_TIM]);
;	  2248			end
;	  2249		    else
;	  2250			return IGNORE_MESSAGE (DB [D_TIM]);
;	  2251	
;	  2252		[SS_MAINTENANCE] :
;	  2253		    NO_OPERATION;
;	  2254		[inrange] :
;	  2255		    return NO_OPERATION;
;	  2256		tes;
;	  2257	
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  82
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (34)
;	  2258	    PROCESS_SELECT_FLAG (DB [D_TIM]);
;	  2259	    end;			!of routine PROCESS_NAK_MESSAGE
						.SBTTL	PROCESS.NAK.MESSAGE
004620						.PSECT	$CODE$,  RO 
000000	116500  000002 			PROCESS.NAK.MESSAGE:
						MOVB	2(R5),R0			; *(DB),*				2234
000004	006300 					ASL	R0
000006	066007  000234'				ADD	P.AAO(R0),PC			; Case dispatch
000012	000415 				1$:	BR	4$				;					2237
000014	004767  174510 			2$:	JSR	PC,CKACK			;					2240
000020	006000 					ROR	R0
000022	103011 					BCC	4$
000024	105765  000012 				TSTB	12(R5)				; *(DB)					2244
000030	001001 					BNE	3$
000032	105015 					CLRB	(R5)				; DB
000034	004767  000000V			3$:	JSR	PC,RECORD.NAK.REASON		;					2246
000040	004767  000000V				JSR	PC,PROCESS.SELECT.FLAG		;					2247
000044	000403 					BR	5$				;					2240
000046	004767  176412 			4$:	JSR	PC,IGNORE.MESSAGE		;					2250
000052	000207 					RTS	PC
000054	004767  000000V			5$:	JSR	PC,PROCESS.SELECT.FLAG		;					2258
000060	000207 				6$:	RTS	PC				;					2206
; Routine Size:  25 words,	Routine Base:  $CODE$ + 4620
; Maximum stack depth per invocation:  1 word
000234						.PSECT	$PLIT$,  RO ,  D  
					P.AAO:						; CASE Table for PROCESS.NAK.MES+0006	2234
000234	000046 					.WORD	46				; [6$]
000236	000034 					.WORD	34				; [4$]
000240	000034 					.WORD	34				; [4$]
000242	000002 					.WORD	2				; [2$]
000244	000042 					.WORD	42				; [5$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  83
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (35)
;	  2260	routine PROCESS_REP_MESSAGE
;	  2261	
;	  2262	!++
;	  2263	! FUNCTIONAL DESCRIPTION:
;	  2264	!
;	  2265	!
;	  2266	! FORMAL PARAMETERS:
;	  2267	!
;	  2268	       (DB : ref block field (D_FIELDS))
;	  2269	!
;	  2270	! IMPLICIT INPUTS:
;	  2271	!
;	  2272	! IMPLICIT OUTPUTS:
;	  2273	!	None
;	  2274	!
;	  2275	! ROUTINE VALUE:
;	  2276	!
;	  2277		: DCP_DB novalue =
;	  2278	!
;	  2279	! SIDE EFFECTS:
;	  2280	!	None
;	  2281	!--
;	  2282	
;	  2283	    begin
;	  2284	
;	  2285	    bind
;	  2286		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  2287	
;	  2288	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  2289		set
;	  2290		[SS_ISTRT, SS_ASTRT] :
;	  2291		    return IGNORE_MESSAGE (DB [D_TIM]);
;	  2292		[SS_RUNNING] :
;	  2293	
;	  2294		    if .HEADER [H_NUM] nequ .DB [S_R]
;	  2295		    then
;	  2296			begin
;	  2297			DB [SS_SEND_NAK] = TRUE;
;	  2298			DB [S_PENDING_NAK_REASON] = RN_REP;
;	  2299			DB [SS_SEND_ACK] = FALSE;
;	  2300			TEST_RECEIVE_THRESHOLD (DB [D_TIM]);
;	  2301			COUNTER_INCREMENT (DB, SI_N3);
;	  2302			COUNTER_INCREMENT (DB, S_DATA_ERRORS_INBOUND);
;	  2303			end
;	  2304		    else
;	  2305			begin
;	  2306			DB [SS_SEND_ACK] = TRUE;
;	  2307			DB [SS_SEND_NAK] = FALSE;
;	  2308			COUNTER_INCREMENT (DB, S_REMOTE_REPLY_TIMEOUTS);
;	  2309			end;
;	  2310	
;	  2311		[SS_MAINTENANCE] :
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  84
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (35)
;	  2312		    NO_OPERATION;
;	  2313		[inrange] :
;	  2314		    return NO_OPERATION;
;	  2315		tes;
;	  2316	
;	  2317	    PROCESS_SELECT_FLAG (DB [D_TIM]);
;	  2318	    end;			!of routine PROCESS_REP_MESSAGE
						.SBTTL	PROCESS.REP.MESSAGE
004702						.PSECT	$CODE$,  RO 
000000	010546 				PROCESS.REP.MESSAGE:
						MOV	R5,-(SP)			;					2260
000002	010546 					MOV	R5,-(SP)
000004	012700  000002 				MOV	#2,R0				;					2288
000010	060500 					ADD	R5,R0
000012	010046 					MOV	R0,-(SP)
000014	111000 					MOVB	(R0),R0
000016	006300 					ASL	R0
000020	066007  000246'				ADD	P.AAP(R0),PC			; Case dispatch
000024	016605  000002 			1$:	MOV	2(SP),R5			;					2291
000030	004767  176346 				JSR	PC,IGNORE.MESSAGE
000034	000461 					BR	6$
000036	016600  000002 			2$:	MOV	2(SP),R0			;					2294
000042	010001 					MOV	R0,R1
000044	126160  000160  000070 			CMPB	160(R1),70(R0)
000052	001431 					BEQ	3$
000054	052776  002000  000000 			BIS	#2000,@0(SP)			;					2297
000062	016600  000002 				MOV	2(SP),R0			;					2298
000066	112760  000003  000077 			MOVB	#3,77(R0)
000074	042776  010000  000000 			BIC	#10000,@0(SP)			;					2299
000102	016605  000002 				MOV	2(SP),R5			;					2300
000106	004767  000000V				JSR	PC,TEST.RECEIVE.THRESHOLD
000112	016600  000002 				MOV	2(SP),R0			;					2301
000116	052760  002000  000044 			BIS	#2000,44(R0)
000124	012701  000044 				MOV	#44,R1				;					2302
000130	060001 					ADD	R0,R1
000132	010100 					MOV	R1,R0
000134	000413 					BR	4$
000136	052776  010000  000000 		3$:	BIS	#10000,@0(SP)			;					2306
000144	042776  002000  000000 			BIC	#2000,@0(SP)			;					2307
000152	016605  000002 				MOV	2(SP),R5			;					2308
000156	062705  000055 				ADD	#55,R5
000162	010500 					MOV	R5,R0
000164	004767  000000G			4$:	JSR	PC,$IC8
000170	016605  000002 			5$:	MOV	2(SP),R5			;					2317
000174	004767  000000V				JSR	PC,PROCESS.SELECT.FLAG
000200	022626 				6$:	CMP	(SP)+,(SP)+			;					2260
000202	012605 					MOV	(SP)+,R5
000204	000207 					RTS	PC
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  85
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (35)
; Routine Size:  67 words,	Routine Base:  $CODE$ + 4702
; Maximum stack depth per invocation:  4 words
000246						.PSECT	$PLIT$,  RO ,  D  
					P.AAP:						; CASE Table for PROCESS.REP.MES+0020	2288
000246	000154 					.WORD	154				; [6$]
000250	000000 					.WORD	0				; [1$]
000252	000000 					.WORD	0				; [1$]
000254	000012 					.WORD	12				; [2$]
000256	000144 					.WORD	144				; [5$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  86
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (36)
;	  2319	routine PROCESS_SELECT_FLAG
;	  2320	
;	  2321	!++
;	  2322	! FUNCTIONAL DESCRIPTION:
;	  2323	!
;	  2324	!
;	  2325	! FORMAL PARAMETERS:
;	  2326	!
;	  2327	       (DB : ref block field (D_FIELDS))
;	  2328	!
;	  2329	! IMPLICIT INPUTS:
;	  2330	!
;	  2331	! IMPLICIT OUTPUTS:
;	  2332	!	None
;	  2333	!
;	  2334	! ROUTINE VALUE:
;	  2335	!
;	  2336		: DCP_DB novalue =
;	  2337	!
;	  2338	! SIDE EFFECTS:
;	  2339	!	None
;	  2340	!--
;	  2341	
;	  2342	    begin
;	  2343	
;	  2344	    bind
;	  2345		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  2346	
;	  2347	    if .DB [L_DUPLEX] neq DL_FULL
;	  2348	    then
;	  2349	
;	  2350		if .HEADER [H_SELECT]
;	  2351		then
;	  2352		    begin
;	  2353		    DB [D_TIM] = 0;
;	  2354		    DB [S_SELECT_THRESHOLD] = 7;
;	  2355		    TERMINATE_SELECTION_INTERVAL (DB [D_TIM]);
;	  2356		    end
;	  2357		else
;	  2358		    DB [D_TIM] = .DB [L_RETRANSMIT_TIMER];
;	  2359	
;	  2360	    end;			!of routine PROCESS_SELECT_FLAG
						.SBTTL	PROCESS.SELECT.FLAG
005110						.PSECT	$CODE$,  RO 
000000	105765  000012 			PROCESS.SELECT.FLAG:
						TSTB	12(R5)				; *(DB)					2347
000004	001414 					BEQ	2$
000006	105765  000156 				TSTB	156(R5)				; *(DB)					2350
000012	100007 					BPL	1$
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  87
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (36)
000014	105015 					CLRB	(R5)				; DB					2353
000016	112765  000007  000017 			MOVB	#7,17(R5)			; *,*(DB)				2354
000024	004767  000000V				JSR	PC,TERMINATE.SELECTION.INTERVAL ;					2355
000030	000207 					RTS	PC				;					2350
000032	116515  000112 			1$:	MOVB	112(R5),(R5)			; *(DB),DB				2358
000036	000207 				2$:	RTS	PC				;					2319
; Routine Size:  16 words,	Routine Base:  $CODE$ + 5110
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  88
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (37)
;	  2361	routine PROCESS_STACK_MESSAGE
;	  2362	
;	  2363	!++
;	  2364	! FUNCTIONAL DESCRIPTION:
;	  2365	!
;	  2366	!
;	  2367	! FORMAL PARAMETERS:
;	  2368	!
;	  2369	       (DB : ref block field (D_FIELDS))
;	  2370	!
;	  2371	! IMPLICIT INPUTS:
;	  2372	!
;	  2373	! IMPLICIT OUTPUTS:
;	  2374	!	None
;	  2375	!
;	  2376	! ROUTINE VALUE:
;	  2377	!
;	  2378		: DCP_DB novalue =
;	  2379	!
;	  2380	! SIDE EFFECTS:
;	  2381	!	None
;	  2382	!--
;	  2383	
;	  2384	    begin
;	  2385	
;	  2386	    bind
;	  2387		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  2388	
;	  2389	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  2390		set
;	  2391		[SS_ISTRT, SS_ASTRT] :
;	  2392		    begin
;	  2393	
;	  2394		    if not .HEADER [H_SELECT]
;	  2395		    then
;	  2396			return HEADER_FORMAT_ERROR (DB [D_TIM]);
;	  2397	
;	  2398		    DB [SS_SEND_ACK] = TRUE;
;	  2399	
;	  2400		    if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
;	  2401	
;	  2402		    CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_RUNNING, 0);
;	  2403		    DB [S_TRANSMIT_THRESHOLD] = 7;
;	  2404		    DB [S_RECEIVE_THRESHOLD] = 7;
;	  2405		    end;
;	  2406		[SS_RUNNING] :
;	  2407		    DB [SS_SEND_ACK] = TRUE;
;	  2408		[SS_MAINTENANCE] :
;	  2409		    NO_OPERATION;
;	  2410		[inrange] :
;	  2411		    return NO_OPERATION;
;	  2412		tes;
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  89
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (37)
;	  2413	
;	  2414	    PROCESS_SELECT_FLAG (DB [D_TIM]);
;	  2415	    end;			!of routine PROCESS_STACK_MESSAGE
						.SBTTL	PROCESS.STACK.MESSAGE
000000	012746  000002 			PROCESS.STACK.MESSAGE:
						MOV	#2,-(SP)			;					2389
000004	060516 					ADD	R5,(SP)				; DB,*
000006	117600  000000 				MOVB	@0(SP),R0
000012	006300 					ASL	R0
000014	066007  000260'				ADD	P.AAQ(R0),PC			; Case dispatch
000020	105765  000156 			1$:	TSTB	156(R5)				; *(DB)					2394
000024	100403 					BMI	2$
000026	004767  175730 				JSR	PC,HEADER.FORMAT.ERROR		;					2396
000032	000431 					BR	6$
000034	052776  010000  000000 		2$:	BIS	#10000,@0(SP)			;					2398
000042	105765  000012 				TSTB	12(R5)				; *(DB)					2400
000046	001001 					BNE	3$
000050	105015 					CLRB	(R5)				; DB
000052	012746  000003 			3$:	MOV	#3,-(SP)			;					2402
000056	005046 					CLR	-(SP)
000060	004767  174014 				JSR	PC,CHANGE.PROTOCOL.STATE
000064	112765  000007  000016 			MOVB	#7,16(R5)			; *,*(DB)				2403
000072	112765  000007  000015 			MOVB	#7,15(R5)			; *,*(DB)				2404
000100	022626 					CMP	(SP)+,(SP)+			;					2392
000102	000403 					BR	5$				;					2389
000104	052776  010000  000000 		4$:	BIS	#10000,@0(SP)			;					2407
000112	004767  177622 			5$:	JSR	PC,PROCESS.SELECT.FLAG		;					2414
000116	005726 				6$:	TST	(SP)+				;					2361
000120	000207 					RTS	PC
; Routine Size:  41 words,	Routine Base:  $CODE$ + 5150
; Maximum stack depth per invocation:  4 words
000260						.PSECT	$PLIT$,  RO ,  D  
					P.AAQ:						; CASE Table for PROCESS.STACK.M+0014	2389
000260	000076 					.WORD	76				; [6$]
000262	000000 					.WORD	0				; [1$]
000264	000000 					.WORD	0				; [1$]
000266	000064 					.WORD	64				; [4$]
000270	000072 					.WORD	72				; [5$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  90
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (38)
;	  2416	routine PROCESS_START_MESSAGE
;	  2417	
;	  2418	!++
;	  2419	! FUNCTIONAL DESCRIPTION:
;	  2420	!
;	  2421	!
;	  2422	! FORMAL PARAMETERS:
;	  2423	!
;	  2424	       (DB : ref block field (D_FIELDS))
;	  2425	!
;	  2426	! IMPLICIT INPUTS:
;	  2427	!
;	  2428	! IMPLICIT OUTPUTS:
;	  2429	!	None
;	  2430	!
;	  2431	! ROUTINE VALUE:
;	  2432	!
;	  2433		: DCP_DB novalue =
;	  2434	!
;	  2435	! SIDE EFFECTS:
;	  2436	!	None
;	  2437	!--
;	  2438	
;	  2439	    begin
;	  2440	
;	  2441	    bind
;	  2442		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  2443	
;	  2444	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  2445		set
;	  2446		[SS_ISTRT, SS_ASTRT] :
;	  2447		    begin
;	  2448	
;	  2449		    if not .HEADER [H_SELECT]
;	  2450		    then
;	  2451			return HEADER_FORMAT_ERROR (DB [D_TIM]);
;	  2452	
;	  2453		    CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_ASTRT, 0);
;	  2454		    DB [S_TRANSMIT_THRESHOLD] = 7;
;	  2455		    DB [S_RECEIVE_THRESHOLD] = 7;
;	  2456		    DB [SS_SEND_STACK] = TRUE;
;	  2457		    DB [SS_SEND_SELECT] = TRUE;
;	  2458		    end;
;	  2459		[SS_RUNNING] :
;	  2460		    begin
;	  2461		    SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_START_RECEIVED);
;	  2462		    SET_LINK (DB [D_TIM], DB [S_REQUESTED_STATE] = SS_HALTED);
;	  2463		    SET_DEVICE (DB [D_TIM]);
;	  2464		    end;
;	  2465		[SS_MAINTENANCE] :
;	  2466		    $NM_DLL_EVENT (2, .DB [S_CIRCUIT_ENTITY]);
;	  2467		[inrange] :
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  91
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (38)
;	  2468		    return NO_OPERATION;
;	  2469		tes;
;	  2470	
;	  2471	    PROCESS_SELECT_FLAG (DB [D_TIM]);
;	  2472	    end;			!of routine PROCESS_START_MESSAGE
						.SBTTL	PROCESS.START.MESSAGE
005272						.PSECT	$CODE$,  RO 
000000	012746  000002 			PROCESS.START.MESSAGE:
						MOV	#2,-(SP)			;					2444
000004	060516 					ADD	R5,(SP)				; DB,*
000006	117600  000000 				MOVB	@0(SP),R0
000012	006300 					ASL	R0
000014	066007  000272'				ADD	P.AAR(R0),PC			; Case dispatch
000020	105765  000156 			1$:	TSTB	156(R5)				; *(DB)					2449
000024	100403 					BMI	2$
000026	004767  175606 				JSR	PC,HEADER.FORMAT.ERROR		;					2451
000032	000452 					BR	6$
000034	012746  000002 			2$:	MOV	#2,-(SP)			;					2453
000040	005046 					CLR	-(SP)
000042	004767  173710 				JSR	PC,CHANGE.PROTOCOL.STATE
000046	112765  000007  000016 			MOVB	#7,16(R5)			; *,*(DB)				2454
000054	112765  000007  000015 			MOVB	#7,15(R5)			; *,*(DB)				2455
000062	052776  000400  000004 			BIS	#400,@4(SP)			;					2456
000070	052776  020000  000004 			BIS	#20000,@4(SP)			;					2457
000076	022626 					CMP	(SP)+,(SP)+			;					2447
000100	000425 					BR	5$				;					2444
000102	012703  100130 			3$:	MOV	#-77650,R3			;					2461
000106	004767  000000V				JSR	PC,SEND.PERSISTENT.ERROR
000112	105065  000006 				CLRB	6(R5)				; *(DB)					2462
000116	005046 					CLR	-(SP)
000120	004767  000000V				JSR	PC,SETLNK
000124	004767  000000V				JSR	PC,SETDEV			;					2463
000130	005726 					TST	(SP)+				;					2460
000132	000410 					BR	5$				;					2444
000134	004767  000000G			4$:	JSR	PC,$NLBEG			;					2466
000140	012700  000502 				MOV	#502,R0
000144	016501  000126 				MOV	126(R5),R1			; *(DB),*
000150	004767  000000G				JSR	PC,$NLEND
000154	004767  177436 			5$:	JSR	PC,PROCESS.SELECT.FLAG		;					2471
000160	005726 				6$:	TST	(SP)+				;					2416
000162	000207 					RTS	PC
; Routine Size:  58 words,	Routine Base:  $CODE$ + 5272
; Maximum stack depth per invocation:  4 words
000272						.PSECT	$PLIT$,  RO ,  D  
					P.AAR:						; CASE Table for PROCESS.START.M+0014	2444
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  92
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (38)
000272	000140 					.WORD	140				; [6$]
000274	000000 					.WORD	0				; [1$]
000276	000000 					.WORD	0				; [1$]
000300	000062 					.WORD	62				; [3$]
000302	000114 					.WORD	114				; [4$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  93
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (39)
;	  2473	routine RECORD_DRIVER_ERROR
;	  2474	
;	  2475	!++
;	  2476	! FUNCTIONAL DESCRIPTION:
;	  2477	!
;	  2478	!
;	  2479	! FORMAL PARAMETERS:
;	  2480	!
;	  2481	       (DB : ref block field (D_FIELDS),
;	  2482		CCB : ref block field (C_FIELDS))
;	  2483	!
;	  2484	! IMPLICIT INPUTS:
;	  2485	!
;	  2486	! IMPLICIT OUTPUTS:
;	  2487	!	None
;	  2488	!
;	  2489	! ROUTINE VALUE:
;	  2490	!
;	  2491		: DCP_DB_CCB novalue =
;	  2492	!
;	  2493	! SIDE EFFECTS:
;	  2494	!	None
;	  2495	!--
;	  2496	
;	  2497	    begin
;	  2498	
;	  2499	    selectone .CCB [C_STS] of
;	  2500		set
;	  2501		[CE_DCR] :
;	  2502		    if .DB [S_PROTOCOL_STATE] eql SS_RUNNING
;	  2503		    then
;	  2504			begin
;	  2505			DB [S_PENDING_NAK_REASON] = RN_DBC;
;	  2506			COUNTER_INCREMENT (DB, SI_N2);
;	  2507			COUNTER_INCREMENT (DB, S_DATA_ERRORS_INBOUND);
;	  2508			end
;	  2509		    else
;	  2510			begin
;	  2511			COUNTER_INCREMENT (DB, LL_NNS);
;	  2512			COUNTER_INCREMENT (DB, L_LOCAL_STATION_ERRORS);
;	  2513			return;
;	  2514			end;
;	  2515		[CE_BUF] :
;	  2516		    begin
;	  2517		    DB [S_PENDING_NAK_REASON] = RN_BUF;
;	  2518		    COUNTER_INCREMENT (DB, SL_N8);
;	  2519		    COUNTER_INCREMENT (DB, S_LOCAL_BUFFER_ERRORS);
;	  2520		    end;
;	  2521		[CE_ROV] :
;	  2522		    begin
;	  2523		    DB [S_PENDING_NAK_REASON] = RN_ROV;
;	  2524		    COUNTER_INCREMENT (DB, LL_N9);
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  94
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (39)
;	  2525		    COUNTER_INCREMENT (DB, L_LOCAL_STATION_ERRORS);
;	  2526		    end;
;	  2527		[CE_MTL] :
;	  2528		    begin
;	  2529	
;	  2530		    external
;	  2531			MCB$GW_RDB_SIZE;
;	  2532	
;	P 2533		    $NM_DLL_EVENT (9, .DB [S_CIRCUIT_ENTITY],
;	  2534			PARAMETER_DU_2 (8, MCB$GW_RDB_SIZE));
;	  2535		    DB [S_PENDING_NAK_REASON] = RN_MTL;
;	  2536		    COUNTER_INCREMENT (DB, SL_N16);
;	  2537		    COUNTER_INCREMENT (DB, S_LOCAL_BUFFER_ERRORS);
;	  2538		    end;
;	  2539		[CE_HFE] :
;	  2540		    begin
;	  2541		    DB [S_PENDING_NAK_REASON] = RN_HBC;
;	  2542		    COUNTER_INCREMENT (DB, SI_N1);
;	  2543		    COUNTER_INCREMENT (DB, S_DATA_ERRORS_INBOUND);
;	  2544		    end;
;	  2545		[otherwise] :
;	  2546		    return;
;	  2547		tes;
;	  2548	
;	  2549	    DB [SS_SEND_NAK] = TRUE;
;	  2550	    DB [SS_SEND_ACK] = FALSE;
;	  2551	    TEST_RECEIVE_THRESHOLD (DB [D_TIM]);
;	  2552	    SEND_DATA (DB [D_TIM]);
;	  2553	    end;			!of routine RECORD_DRIVER_ERROR
						.GLOBL	.RDBSZ, $DPDU2
						.SBTTL	RECORD.DRIVER.ERROR
005456						.PSECT	$CODE$,  RO 
000000	010446 				RECORD.DRIVER.ERROR:
						MOV	R4,-(SP)			;					2473
000002	016401  000014 				MOV	14(R4),R1			; *(CCB),*				2499
000006	020127  177570 				CMP	R1,#-210
000012	001024 					BNE	2$
000014	126527  000002  000003 			CMPB	2(R5),#3			; *(DB),*				2502
000022	001007 					BNE	1$
000024	112765  000002  000077 			MOVB	#2,77(R5)			; *,*(DB)				2505
000032	052765  001000  000044 			BIS	#1000,44(R5)			; *,*(DB)				2506
000040	000510 					BR	6$				;					2507
000042	052765  001000  000064 		1$:	BIS	#1000,64(R5)			; *,*(DB)				2511
000050	012700  000064 				MOV	#64,R0				;					2512
000054	060500 					ADD	R5,R0				; DB,*
000056	004767  000000G				JSR	PC,$IC8
000062	000516 					BR	9$				;					2510
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  95
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (39)
000064	020127  177600 			2$:	CMP	R1,#-200			;					2499
000070	001011 					BNE	3$
000072	112765  000010  000077 			MOVB	#10,77(R5)			; *,*(DB)				2517
000100	052765  000400  000046 			BIS	#400,46(R5)			; *,*(DB)				2518
000106	012700  000046 				MOV	#46,R0				;					2519
000112	000465 					BR	7$
000114	020127  177540 			3$:	CMP	R1,#-240			;					2499
000120	001011 					BNE	4$
000122	112765  000011  000077 			MOVB	#11,77(R5)			; *,*(DB)				2523
000130	052765  000400  000064 			BIS	#400,64(R5)			; *,*(DB)				2524
000136	012700  000064 				MOV	#64,R0				;					2525
000142	000451 					BR	7$
000144	020127  177550 			4$:	CMP	R1,#-230			;					2499
000150	001033 					BNE	5$
000152	004767  000000G				JSR	PC,$NLBEG			;					2534
000156	012746  000010 				MOV	#10,-(SP)
000162	016700  000000G				MOV	.RDBSZ,R0
000166	004767  000000G				JSR	PC,$DPDU2
000172	012700  000511 				MOV	#511,R0
000176	016501  000126 				MOV	126(R5),R1			; *(DB),*
000202	004767  000000G				JSR	PC,$NLEND
000206	112765  000020  000077 			MOVB	#20,77(R5)			; *,*(DB)				2535
000214	052765  001000  000046 			BIS	#1000,46(R5)			; *,*(DB)				2536
000222	012700  000046 				MOV	#46,R0				;					2537
000226	060500 					ADD	R5,R0				; DB,*
000230	004767  000000G				JSR	PC,$IC8
000234	005726 					TST	(SP)+				;					2528
000236	000416 					BR	8$				;					2499
000240	020127  177560 			5$:	CMP	R1,#-220
000244	001025 					BNE	9$
000246	112765  000001  000077 			MOVB	#1,77(R5)			; *,*(DB)				2541
000254	052765  000400  000044 			BIS	#400,44(R5)			; *,*(DB)				2542
000262	012700  000044 			6$:	MOV	#44,R0				;					2543
000266	060500 				7$:	ADD	R5,R0				; DB,*
000270	004767  000000G				JSR	PC,$IC8
000274	052765  002000  000002 		8$:	BIS	#2000,2(R5)			; *,*(DB)				2549
000302	042765  010000  000002 			BIC	#10000,2(R5)			; *,*(DB)				2550
000310	004767  000000V				JSR	PC,TEST.RECEIVE.THRESHOLD	;					2551
000314	004767  000000V				JSR	PC,SEND.DATA			;					2552
000320	012604 				9$:	MOV	(SP)+,R4			;					2473
000322	000207 					RTS	PC
; Routine Size:  106 words,	Routine Base:  $CODE$ + 5456
; Maximum stack depth per invocation:  3 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  96
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (40)
;	  2554	routine RECORD_NAK_REASON
;	  2555	
;	  2556	!++
;	  2557	! FUNCTIONAL DESCRIPTION:
;	  2558	!
;	  2559	!
;	  2560	! FORMAL PARAMETERS:
;	  2561	!
;	  2562	       (DB : ref block field (D_FIELDS))
;	  2563	!
;	  2564	! IMPLICIT INPUTS:
;	  2565	!
;	  2566	! IMPLICIT OUTPUTS:
;	  2567	!	None
;	  2568	!
;	  2569	! ROUTINE VALUE:
;	  2570	!
;	  2571		: DCP_DB novalue =
;	  2572	!
;	  2573	! SIDE EFFECTS:
;	  2574	!	None
;	  2575	!--
;	  2576	
;	  2577	    begin
;	  2578	
;	  2579	    bind
;	  2580		HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
;	  2581	
;	  2582	    selectone .HEADER [H_SUBTYPE] of
;	  2583		set
;	  2584		[RN_HBC] :
;	  2585		    begin
;	  2586		    COUNTER_INCREMENT (DB, SO_N1);
;	  2587		    COUNTER_INCREMENT (DB, S_DATA_ERRORS_OUTBOUND);
;	  2588		    TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
;	  2589		    end;
;	  2590		[RN_DBC] :
;	  2591		    begin
;	  2592		    COUNTER_INCREMENT (DB, SO_N2);
;	  2593		    COUNTER_INCREMENT (DB, S_DATA_ERRORS_OUTBOUND);
;	  2594		    TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
;	  2595		    end;
;	  2596		[RN_REP] :
;	  2597		    begin
;	  2598		    COUNTER_INCREMENT (DB, SO_N3);
;	  2599		    COUNTER_INCREMENT (DB, S_DATA_ERRORS_OUTBOUND);
;	  2600		    end;
;	  2601		[RN_BUF] :
;	  2602		    begin
;	  2603		    COUNTER_INCREMENT (DB, SR_N8);
;	  2604		    COUNTER_INCREMENT (DB, S_REMOTE_BUFFER_ERRORS);
;	  2605		    TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  97
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (40)
;	  2606		    end;
;	  2607		[RN_ROV] :
;	  2608		    begin
;	  2609		    COUNTER_INCREMENT (DB, LR_N9);
;	  2610		    COUNTER_INCREMENT (DB, L_REMOTE_STATION_ERRORS);
;	  2611		    TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
;	  2612		    end;
;	  2613		[RN_MTL] :
;	  2614		    begin
;	  2615		    COUNTER_INCREMENT (DB, SR_N16);
;	  2616		    COUNTER_INCREMENT (DB, S_REMOTE_BUFFER_ERRORS);
;	  2617		    TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
;	  2618		    end;
;	  2619		[RN_HFE] :
;	  2620		    begin
;	  2621		    COUNTER_INCREMENT (DB, LL_N17);
;	  2622		    COUNTER_INCREMENT (DB, L_LOCAL_STATION_ERRORS);
;	  2623		    TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
;	  2624		    end;
;	  2625		[otherwise] :
;	  2626		    TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
;	  2627		tes;
;	  2628	
;	  2629	    if .HEADER [H_RESP] neq .DB [S_TM1]
;	  2630	    then
;	  2631		begin
;	  2632		DB [SS_RETRANSMIT] = TRUE;
;	  2633	
;	  2634		if .DB [S_MOTD] eql 0 then RETRANSMIT_UNACKED_MESSAGES (DB [D_TIM]);
;	  2635	
;	  2636		end;
;	  2637	
;	  2638	    DB [SS_START_REP_TIMER] = FALSE;
;	  2639	    DB [SS_TIMING_REP] = FALSE;
;	  2640	
;	  2641	    if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
;	  2642	
;	  2643	    end;			!of routine RECORD_NAK_REASON
						.SBTTL	RECORD.NAK.REASON
000000	005001 				RECORD.NAK.REASON:
						CLR	R1				;					2582
000002	156501  000156 				BISB	156(R5),R1			; *(DB),*
000006	020127  000001 				CMP	R1,#1
000012	001004 					BNE	1$
000014	052765  000400  000042 			BIS	#400,42(R5)			; *,*(DB)				2586
000022	000406 					BR	2$				;					2587
000024	020127  000002 			1$:	CMP	R1,#2				;					2582
000030	001006 					BNE	3$
000032	052765  001000  000042 			BIS	#1000,42(R5)			; *,*(DB)				2592
000040	012700  000042 			2$:	MOV	#42,R0				;					2593
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  98
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (40)
000044	000455 					BR	9$
000046	020127  000003 			3$:	CMP	R1,#3				;					2582
000052	001011 					BNE	4$
000054	052765  002000  000042 			BIS	#2000,42(R5)			; *,*(DB)				2598
000062	012700  000042 				MOV	#42,R0				;					2599
000066	060500 					ADD	R5,R0				; DB,*
000070	004767  000000G				JSR	PC,$IC8
000074	000446 					BR	11$				;					2582
000076	020127  000010 			4$:	CMP	R1,#10
000102	001004 					BNE	5$
000104	052765  000400  000050 			BIS	#400,50(R5)			; *,*(DB)				2603
000112	000417 					BR	7$				;					2604
000114	020127  000011 			5$:	CMP	R1,#11				;					2582
000120	001006 					BNE	6$
000122	052765  000400  000062 			BIS	#400,62(R5)			; *,*(DB)				2609
000130	012700  000062 				MOV	#62,R0				;					2610
000134	000421 					BR	9$
000136	020127  000020 			6$:	CMP	R1,#20				;					2582
000142	001006 					BNE	8$
000144	052765  001000  000050 			BIS	#1000,50(R5)			; *,*(DB)				2615
000152	012700  000050 			7$:	MOV	#50,R0				;					2616
000156	000410 					BR	9$
000160	020127  000021 			8$:	CMP	R1,#21				;					2582
000164	001010 					BNE	10$
000166	052765  004000  000064 			BIS	#4000,64(R5)			; *,*(DB)				2621
000174	012700  000064 				MOV	#64,R0				;					2622
000200	060500 				9$:	ADD	R5,R0				; DB,*
000202	004767  000000G				JSR	PC,$IC8
000206	004767  000000V			10$:	JSR	PC,TEST.TRANSMIT.THRESHOLD	;					2626
000212	126565  000157  000071 		11$:	CMPB	157(R5),71(R5)			; *(DB),*(DB)				2629
000220	001407 					BEQ	12$
000222	052715  002000 				BIS	#2000,(R5)			; *,DB					2632
000226	105765  000076 				TSTB	76(R5)				; *(DB)					2634
000232	001002 					BNE	12$
000234	004767  000000V				JSR	PC,RETRANSMIT.UNACKED.MESSAGES
000240	042715  005000 			12$:	BIC	#5000,(R5)			; *,DB					2639
000244	105765  000012 				TSTB	12(R5)				; *(DB)					2641
000250	001001 					BNE	13$
000252	105015 					CLRB	(R5)				; DB
000254	000207 				13$:	RTS	PC				;					2554
; Routine Size:  87 words,	Routine Base:  $CODE$ + 6002
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page  99
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (41)
;	  2644	routine RESYNCHRONIZE
;	  2645	
;	  2646	!++
;	  2647	! FUNCTIONAL DESCRIPTION:
;	  2648	!
;	  2649	!
;	  2650	! FORMAL PARAMETERS:
;	  2651	!
;	  2652	       (DB : ref block field (D_FIELDS))
;	  2653	!
;	  2654	! IMPLICIT INPUTS:
;	  2655	!
;	  2656	! IMPLICIT OUTPUTS:
;	  2657	!	None
;	  2658	!
;	  2659	! ROUTINE VALUE:
;	  2660	!
;	  2661		: DCP_DB novalue =
;	  2662	!
;	  2663	! SIDE EFFECTS:
;	  2664	!	None
;	  2665	!--
;	  2666	
;	  2667	    begin
;	  2668	
;	  2669	    local
;	  2670		CCB : ref block field (C_FIELDS);
;	  2671	
;	  2672	    external routine
;	  2673		$DDCRA : DDM_CCB novalue;
;	  2674	
;	  2675	    if .DB [LS_RESYNCH_IN_PROGRESS] then return;
;	  2676	
;	  2677	    if not $MCB_GET_CCB (CCB) then return;
;	  2678	
;	  2679	    DB [LS_RESYNCH_IN_PROGRESS] = TRUE;
;	  2680	    CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
;	  2681	    $DDCRA (.CCB);
;	  2682	    end;			!of routine RESYNCHRONIZE
						.GLOBL	$DDCRA
						.SBTTL	RESYNCHRONIZE
000000	032715  000400 			RESYNCHRONIZE:
						BIT	#400,(R5)			; *,DB					2675
000004	001012 					BNE	1$
000006	004767  000000G				JSR	PC,$CCBGT			;					2677
000012	103407 					BCS	1$
000014	052715  000400 				BIS	#400,(R5)			; *,DB					2679
000020	016564  000144  000010 			MOV	144(R5),10(R4)			; *(DB),*(CCB)				2680
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 100
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (41)
000026	004767  000000G				JSR	PC,$DDCRA			;					2681
000032	000207 				1$:	RTS	PC				;					2644
; Routine Size:  14 words,	Routine Base:  $CODE$ + 6260
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 101
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (42)
;	  2683	routine RETRANSMIT_UNACKED_MESSAGES
;	  2684	
;	  2685	!++
;	  2686	! FUNCTIONAL DESCRIPTION:
;	  2687	!
;	  2688	!
;	  2689	! FORMAL PARAMETERS:
;	  2690	!
;	  2691	       (DB : ref block field (D_FIELDS))
;	  2692	!
;	  2693	! IMPLICIT INPUTS:
;	  2694	!
;	  2695	! IMPLICIT OUTPUTS:
;	  2696	!	None
;	  2697	!
;	  2698	! ROUTINE VALUE:
;	  2699	!
;	  2700		: DCP_DB novalue =
;	  2701	!
;	  2702	! SIDE EFFECTS:
;	  2703	!	None
;	  2704	!--
;	  2705	
;	  2706	    begin
;	  2707	    DB [SS_RETRANSMIT] = FALSE;
;	  2708	
;	  2709	    if .DB [$SUB_FIELD (S_WAITING_FOR_ACK, LIST_FIRST)] neqa 0
;	  2710	    then
;	  2711		begin
;	  2712	
;	  2713		if (.DB [$SUB_FIELD (S_WAITING_FOR_ACK, LIST_LAST)] =
;	  2714		    .DB [$SUB_FIELD (S_WAITING_FOR_TRANSMIT, LIST_FIRST)]) eqla 0
;	  2715		then
;	  2716		    DB [$SUB_FIELD (S_WAITING_FOR_TRANSMIT, LIST_LAST)] = .DB [$SUB_FIELD (S_WAITING_FOR_ACK, LIST_LAST)];
;	  2717	
;	  2718		DB [$SUB_FIELD (S_WAITING_FOR_TRANSMIT, LIST_FIRST)] = .DB [$SUB_FIELD (S_WAITING_FOR_ACK, LIST_FIRST)];
;	  2719		$MCB_INITIALIZE_QUEUE (DB [S_WAITING_FOR_ACK]);
;	  2720		end;
;	  2721	
;	  2722	    DB [S_TM1] = .DB [S_A];
;	  2723	    end;			!of routine RETRANSMIT_UNACKED_MESSAGES
						.SBTTL	RETRANSMIT.UNACKED.MESSAGES
000000	042715  002000 			RETRANSMIT.UNACKED.MESSAGES:
						BIC	#2000,(R5)			; *,DB					2707
000004	012701  000120 				MOV	#120,R1				;					2709
000010	060501 					ADD	R5,R1				; DB,*
000012	005711 					TST	(R1)
000014	001414 					BEQ	2$
000016	016500  000122 				MOV	122(R5),R0			; *(DB),*				2713
000022	016510  000114 				MOV	114(R5),(R0)			; *(DB),*
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 102
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (42)
000026	001002 					BNE	1$				;					2714
000030	010065  000116 				MOV	R0,116(R5)			; *,*(DB)				2716
000034	011165  000114 			1$:	MOV	(R1),114(R5)			; *,*(DB)				2718
000040	005011 					CLR	(R1)				;					2719
000042	010161  000002 				MOV	R1,2(R1)
000046	116565  000074  000071 		2$:	MOVB	74(R5),71(R5)			; *(DB),*(DB)				2722
000054	000207 					RTS	PC				;					2683
; Routine Size:  23 words,	Routine Base:  $CODE$ + 6314
; Maximum stack depth per invocation:  0 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 103
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (43)
;	  2724	routine RETURN_ACKED_MESSAGES
;	  2725	
;	  2726	!++
;	  2727	! FUNCTIONAL DESCRIPTION:
;	  2728	!
;	  2729	!
;	  2730	! FORMAL PARAMETERS:
;	  2731	!
;	  2732	       (DB : ref block field (D_FIELDS))
;	  2733	!
;	  2734	! IMPLICIT INPUTS:
;	  2735	!
;	  2736	! IMPLICIT OUTPUTS:
;	  2737	!	None
;	  2738	!
;	  2739	! ROUTINE VALUE:
;	  2740	!
;	  2741		: DCP_DB novalue =
;	  2742	!
;	  2743	! SIDE EFFECTS:
;	  2744	!	None
;	  2745	!--
;	  2746	
;	  2747	    begin
;	  2748	
;	  2749	    until .DB [S_AR] eql .DB [S_A] do
;	  2750		begin
;	  2751	
;	  2752		local
;	  2753		    CCB : ref block field (C_FIELDS);
;	  2754	
;	  2755		if not $MCB_DEQUEUE_CCB (DB [S_WAITING_FOR_ACK], CCB) then return;
;	  2756	
;	  2757		DB [S_AR] = .DB [S_AR] + 1;
;	  2758		DB [S_TRANSMIT_THRESHOLD] = 7;
;	  2759		SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_SUCCESS);
;	  2760		end;
;	  2761	
;	  2762	    end;			!of routine RETURN_ACKED_MESSAGES
						.SBTTL	RETURN.ACKED.MESSAGES
000000	012746  000074 			RETURN.ACKED.MESSAGES:
						MOV	#74,-(SP)			;					2749
000004	060516 					ADD	R5,(SP)				; DB,*
000006	010546 					MOV	R5,-(SP)			; DB,*					2755
000010	062716  000120 				ADD	#120,(SP)
000014	005001 				1$:	CLR	R1				;					2749
000016	157601  000002 				BISB	@2(SP),R1
000022	017600  000002 				MOV	@2(SP),R0
000026	105000 					CLRB	R0
000030	000300 					SWAB	R0
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 104
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (43)
000032	020001 					CMP	R0,R1
000034	001417 					BEQ	2$
000036	011603 					MOV	(SP),R3				;					2755
000040	004767  000000G				JSR	PC,$CMQRM
000044	103413 					BCS	2$
000046	062776  000400  000002 			ADD	#400,@2(SP)			;					2757
000054	112765  000007  000016 			MOVB	#7,16(R5)			; *,*(DB)				2758
000062	012703  100001 				MOV	#-77777,R3			;					2759
000066	004767  000000V				JSR	PC,SCHEDULE.TRANSMIT
000072	000750 					BR	1$				;					2749
000074	022626 				2$:	CMP	(SP)+,(SP)+			;					2724
000076	000207 					RTS	PC
; Routine Size:  32 words,	Routine Base:  $CODE$ + 6372
; Maximum stack depth per invocation:  3 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 105
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (44)
;	  2763	routine SCHEDULE_PERSISTENT_AST
;	  2764	
;	  2765	!++
;	  2766	! FUNCTIONAL DESCRIPTION:
;	  2767	!
;	  2768	!
;	  2769	! FORMAL PARAMETERS:
;	  2770	!
;	  2771	       (CCB : ref block field (C_FIELDS),	! CCB to use for status nodification.
;	  2772		DB : ref block field (D_FIELDS))
;	  2773	!
;	  2774	! IMPLICIT INPUTS:
;	  2775	!	None
;	  2776	!
;	  2777	! IMPLICIT OUTPUTS:
;	  2778	!	None
;	  2779	!
;	  2780	! ROUTINE VALUE:
;	  2781	!
;	  2782		: DCP_CCB_DB novalue =
;	  2783	!
;	  2784	! SIDE EFFECTS:
;	  2785	!	None
;	  2786	!--
;	  2787	
;	  2788	    begin
;	  2789	    CCB [C_HANDLE] = .DB [S_USER_HANDLE];
;	  2790	    CCB [C_FNC] = FC_AST;
;	  2791	    CCB [C_MOD] = DLL$K_PERSISTENT_ERROR;
;	  2792	    CCB [C_STS] = .DB [S_PERSISTENT_ERROR];
;	  2793	    $MCB_SCHEDULE_CCB (.CCB);
;	  2794	    DB [S_PERSISTENT_ERROR] = 0;
;	  2795	    end;			!of routine SCHEDULE_PERSISTENT_AST
						.SBTTL	SCHEDULE.PERSISTENT.AST
000000	016564  000130  000010 		SCHEDULE.PERSISTENT.AST:
						MOV	130(R5),10(R4)			; *(DB),*(CCB)				2789
000006	105064  000012 				CLRB	12(R4)				; *(CCB)				2790
000012	112764  000004  000013 			MOVB	#4,13(R4)			; *,*(CCB)				2791
000020	016564  000134  000014 			MOV	134(R5),14(R4)			; *(DB),*(CCB)				2792
000026	004767  000000G				JSR	PC,$SCHED			;					2793
000032	005065  000134 				CLR	134(R5)				; *(DB)					2794
000036	000207 					RTS	PC				;					2763
; Routine Size:  16 words,	Routine Base:  $CODE$ + 6472
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 106
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (45)
;	  2796	routine SCHEDULE_RECEIVE
;	  2797	
;	  2798	!++
;	  2799	! FUNCTIONAL DESCRIPTION:
;	  2800	!
;	  2801	!
;	  2802	! FORMAL PARAMETERS:
;	  2803	!
;	  2804	       (CCB : ref block field (C_FIELDS),
;	  2805		DB : ref block field (D_FIELDS))
;	  2806	!
;	  2807	! IMPLICIT INPUTS:
;	  2808	!	None
;	  2809	!
;	  2810	! IMPLICIT OUTPUTS:
;	  2811	!	None
;	  2812	!
;	  2813	! ROUTINE VALUE:
;	  2814	!
;	  2815		: DCP_CCB_DB novalue =
;	  2816	!
;	  2817	! SIDE EFFECTS:
;	  2818	!	None
;	  2819	!--
;	  2820	
;	  2821	    begin
;	  2822	    CCB [C_HANDLE] = .DB [S_USER_HANDLE];
;	  2823	
;	  2824	    if .CCB [C_HANDLE] eqlu 0 then return STARCE (DB [D_TIM], .CCB);
;	  2825	
;	  2826	    DB [D_USER_BUFFERS] = .DB [D_USER_BUFFERS] + 1;
;	  2827	    CCB [C_FNC] = FC_RCP;
;	  2828	    CCB [C_STS] = DLL$_SUCCESS;
;	  2829	    $MCB_SCHEDULE_CCB (.CCB);
;	  2830	    end;			!of routine SCHEDULE_RECEIVE
						.SBTTL	SCHEDULE.RECEIVE
000000	010446 				SCHEDULE.RECEIVE:
						MOV	R4,-(SP)			;					2796
000002	010400 					MOV	R4,R0				;					2822
000004	016560  000130  000010 			MOV	130(R5),10(R0)			; *(DB),*
000012	001003 					BNE	1$				;					2824
000014	004767  000000V				JSR	PC,STARCE
000020	000414 					BR	2$
000022	005265  000136 			1$:	INC	136(R5)				; *(DB)					2826
000026	011600 					MOV	(SP),R0				;					2827
000030	112760  000016  000012 			MOVB	#16,12(R0)
000036	012760  100001  000014 			MOV	#-77777,14(R0)			;					2828
000044	010004 					MOV	R0,R4				;					2829
000046	004767  000000G				JSR	PC,$SCHED
000052	005726 				2$:	TST	(SP)+				;					2796
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 107
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (45)
000054	000207 					RTS	PC
; Routine Size:  23 words,	Routine Base:  $CODE$ + 6532
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 108
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (46)
;	  2831	routine SCHEDULE_STATE_AST
;	  2832	
;	  2833	!++
;	  2834	! FUNCTIONAL DESCRIPTION:
;	  2835	!
;	  2836	!
;	  2837	! FORMAL PARAMETERS:
;	  2838	!
;	  2839	       (CCB : ref block field (C_FIELDS),
;	  2840		DB : ref block field (D_FIELDS))
;	  2841	!
;	  2842	! IMPLICIT INPUTS:
;	  2843	!	None
;	  2844	!
;	  2845	! IMPLICIT OUTPUTS:
;	  2846	!	None
;	  2847	!
;	  2848	! ROUTINE VALUE:
;	  2849	!
;	  2850		: DCP_CCB_DB novalue =
;	  2851	!
;	  2852	! SIDE EFFECTS:
;	  2853	!	None
;	  2854	!--
;	  2855	
;	  2856	    begin
;	  2857	
;	  2858	    if not .DB [SS_NOTIFY_STATE] then return $MCB_RETURN_CCB (.CCB);
;	  2859	
;	  2860	    CCB [C_HANDLE] = .DB [S_USER_HANDLE];
;	  2861	    CCB [C_FNC] = FC_AST;
;	  2862	    CCB [C_MOD] = DLL$K_STATE;
;	  2863	    CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
;	  2864	    $MCB_SCHEDULE_CCB (.CCB);
;	  2865	
;	  2866	    if .DB [SS_NOTIFY_STATE]
;	  2867	    then
;	  2868	
;	  2869		if $MCB_GET_CCB (CCB)
;	  2870		then
;	  2871		    SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
;	  2872		else
;	  2873		    $MCB_REQUEST_CCB ();
;	  2874	    end;			!of routine SCHEDULE_STATE_AST
						.GLOBL	$CCBRQ
						.SBTTL	SCHEDULE.STATE.AST
000000	010401 				SCHEDULE.STATE.AST:
						MOV	R4,R1				; *,CCB					2831
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 109
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (46)
000002	032765  001000  000004 			BIT	#1000,4(R5)			; *,*(DB)				2858
000010	001003 					BNE	1$
000012	004767  000000G				JSR	PC,$CCBRT
000016	000207 					RTS	PC
000020	016561  000130  000010 		1$:	MOV	130(R5),10(R1)			; *(DB),*(CCB)				2860
000026	105061  000012 				CLRB	12(R1)				; *(CCB)				2861
000032	105061  000013 				CLRB	13(R1)				; *(CCB)				2862
000036	004767  173016 				JSR	PC,CURRENT.STATUS		;					2863
000042	010061  000014 				MOV	R0,14(R1)			; *,*(CCB)
000046	010104 					MOV	R1,R4				; CCB,*					2864
000050	004767  000000G				JSR	PC,$SCHED
000054	032765  001000  000004 			BIT	#1000,4(R5)			; *,*(DB)				2866
000062	001411 					BEQ	3$
000064	004767  000000G				JSR	PC,$CCBGT			;					2869
000070	103404 					BCS	2$
000072	010401 					MOV	R4,R1				; $MCB$R4,CCB
000074	004767  177700 				JSR	PC,SCHEDULE.STATE.AST		;					2871
000100	000207 					RTS	PC				;					2869
000102	004767  000000G			2$:	JSR	PC,$CCBRQ			;					2873
000106	000207 				3$:	RTS	PC				;					2831
; Routine Size:  36 words,	Routine Base:  $CODE$ + 6610
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 110
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (47)
;	  2875	routine SCHEDULE_TRANSIENT_AST
;	  2876	
;	  2877	!++
;	  2878	! FUNCTIONAL DESCRIPTION:
;	  2879	!
;	  2880	!
;	  2881	! FORMAL PARAMETERS:
;	  2882	!
;	  2883	       (CCB : ref block field (C_FIELDS),
;	  2884		DB : ref block field (D_FIELDS))
;	  2885	!
;	  2886	! IMPLICIT INPUTS:
;	  2887	!	None
;	  2888	!
;	  2889	! IMPLICIT OUTPUTS:
;	  2890	!	None
;	  2891	!
;	  2892	! ROUTINE VALUE:
;	  2893	!
;	  2894		: DCP_CCB_DB novalue =
;	  2895	!
;	  2896	! SIDE EFFECTS:
;	  2897	!	None
;	  2898	!--
;	  2899	
;	  2900	    begin
;	  2901	    CCB [C_HANDLE] = .DB [S_USER_HANDLE];
;	  2902	    CCB [C_FNC] = FC_AST;
;	  2903	    CCB [C_MOD] = DLL$K_TRANSIENT_ERROR;
;	  2904	    CCB [C_STS] = .DB [S_TRANSIENT_ERROR];
;	  2905	    $MCB_SCHEDULE_CCB (.CCB);
;	  2906	    DB [S_TRANSIENT_ERROR] = 0;
;	  2907	    end;			!of routine SCHEDULE_TRANSIENT_AST
						.SBTTL	SCHEDULE.TRANSIENT.AST
000000	016564  000130  000010 		SCHEDULE.TRANSIENT.AST:
						MOV	130(R5),10(R4)			; *(DB),*(CCB)				2901
000006	105064  000012 				CLRB	12(R4)				; *(CCB)				2902
000012	112764  000002  000013 			MOVB	#2,13(R4)			; *,*(CCB)				2903
000020	016564  000132  000014 			MOV	132(R5),14(R4)			; *(DB),*(CCB)				2904
000026	004767  000000G				JSR	PC,$SCHED			;					2905
000032	005065  000132 				CLR	132(R5)				; *(DB)					2906
000036	000207 					RTS	PC				;					2875
; Routine Size:  16 words,	Routine Base:  $CODE$ + 6720
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 111
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (48)
;	  2908	routine SCHEDULE_TRANSMIT
;	  2909	
;	  2910	!++
;	  2911	! FUNCTIONAL DESCRIPTION:
;	  2912	!
;	  2913	!
;	  2914	! FORMAL PARAMETERS:
;	  2915	!
;	  2916	       (CCB : ref block field (C_FIELDS),
;	  2917		DB : ref block field (D_FIELDS),
;	  2918		STATUS)
;	  2919	!
;	  2920	! IMPLICIT INPUTS:
;	  2921	!	None
;	  2922	!
;	  2923	! IMPLICIT OUTPUTS:
;	  2924	!	None
;	  2925	!
;	  2926	! ROUTINE VALUE:
;	  2927	!
;	  2928		: DCP_CCB_DB_STS novalue =
;	  2929	!
;	  2930	! SIDE EFFECTS:
;	  2931	!	None
;	  2932	!--
;	  2933	
;	  2934	    begin
;	  2935	    CCB [C_FNC] = FC_XCP;
;	  2936	    CCB [C_STS] = .STATUS;
;	  2937	    $MCB_SCHEDULE_CCB (.CCB);
;	  2938	
;	  2939	    DB [D_USER_BUFFERS] = .DB [D_USER_BUFFERS] - 1;
;	  2940	
;	  2941	    if .DB [D_USER_BUFFERS] neq 0 then return;
;	  2942	
;	  2943	    if .DB [S_CONTROL_CCB] neqa 0
;	  2944	    then
;	  2945		begin
;	  2946		$MCB_SCHEDULE_CCB (.DB [S_CONTROL_CCB]);
;	  2947		DB [S_CONTROL_CCB] = 0;
;	  2948		end;
;	  2949	
;	  2950	    end;			!of routine SCHEDULE_TRANSMIT
						.SBTTL	SCHEDULE.TRANSMIT
000000	112764  000014  000012 		SCHEDULE.TRANSMIT:
						MOVB	#14,12(R4)			; *,*(CCB)				2935
000006	010364  000014 				MOV	R3,14(R4)			; STATUS,*(CCB)				2936
000012	004767  000000G				JSR	PC,$SCHED			;					2937
000016	005365  000136 				DEC	136(R5)				; *(DB)					2939
000022	001011 					BNE	1$				;					2941
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 112
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (48)
000024	012700  000124 				MOV	#124,R0				;					2943
000030	060500 					ADD	R5,R0				; DB,*
000032	005710 					TST	(R0)
000034	001404 					BEQ	1$
000036	011004 					MOV	(R0),R4				;					2946
000040	004767  000000G				JSR	PC,$SCHED
000044	005010 					CLR	(R0)				;					2947
000046	000207 				1$:	RTS	PC				;					2908
; Routine Size:  20 words,	Routine Base:  $CODE$ + 6760
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 113
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (49)
;	  2951	routine SEND_DATA
;	  2952	
;	  2953	!++
;	  2954	! FUNCTIONAL DESCRIPTION:
;	  2955	!
;	  2956	!
;	  2957	! FORMAL PARAMETERS:
;	  2958	!
;	  2959	       (DB : ref block field (D_FIELDS))
;	  2960	!
;	  2961	! IMPLICIT INPUTS:
;	  2962	!	None
;	  2963	!
;	  2964	! IMPLICIT OUTPUTS:
;	  2965	!	None
;	  2966	!
;	  2967	! ROUTINE VALUE:
;	  2968	!
;	  2969		: DCP_DB novalue =
;	  2970	!
;	  2971	! SIDE EFFECTS:
;	  2972	!	None
;	  2973	!--
;	  2974	
;	  2975	    begin
;	  2976	
;	  2977	    if .DB [D_CONTROL_FLAGS] neq 0 then return;
;	  2978	
;	  2979	    if .DB [L_MESSAGES_AT_DRIVER] gtru 0 then return;
;	  2980	
;	  2981	    if not .DB [LS_STATION_ENABLED] then return;
;	  2982	
;	  2983	    DB [L_BABBLE_COUNT] = .DB [S_MAXIMUM_TRANSMITS] %(4)%;
;	  2984	
;	  2985	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  2986		set
;	  2987		[SS_ISTRT, SS_ASTRT] :
;	  2988		    begin
;	  2989	
;	  2990		    if not (.DB [SS_SEND_START] or .DB [SS_SEND_STACK]) then return;
;	  2991	
;	  2992		    if (BUILD_CONTROL_MESSAGE (DB [D_TIM]) eqla 0) then return;
;	  2993	
;	  2994		    end;
;	  2995		[SS_RUNNING] :
;	  2996		    begin
;	  2997	
;	  2998		    label
;	  2999			BUILD_MESSAGES;
;	  3000	
;	  3001		    BUILD_MESSAGES : begin
;	  3002	
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 114
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (49)
;	  3003		    while (.DB [SS_SEND_REP] or .DB [SS_SEND_NAK]) do
;	  3004	
;	  3005			if (BUILD_CONTROL_MESSAGE (DB [D_TIM]) eqla 0) then leave BUILD_MESSAGES;
;	  3006	
;	  3007		    if not .DB [SS_RETRANSMIT]
;	  3008		    then
;	  3009	
;	  3010			while .DB [L_MESSAGES_AT_DRIVER] lss .DB [L_MAXIMUM_AT_DRIVER] do
;	  3011			    begin
;	  3012	
;	  3013			    local
;	  3014				CCB : ref block field (C_FIELDS);
;	  3015	
;	  3016			    if not $MCB_DEQUEUE_CCB (DB [S_WAITING_FOR_TRANSMIT], CCB) then exitloop;
;	  3017	
;	  3018			    if (BUILD_DATA_MESSAGE (DB [D_TIM], .CCB) eqla 0)
;	  3019			    then
;	  3020				begin
;	  3021				$MCB_STACK_CCB (DB [S_WAITING_FOR_TRANSMIT], .CCB);
;	  3022				leave BUILD_MESSAGES;
;	  3023				end;
;	  3024	
;	  3025			    if (DB [L_BABBLE_COUNT] = .DB [L_BABBLE_COUNT] - 1) eql 0 then exitloop;
;	  3026	
;	  3027			    end;
;	  3028	
;	  3029		    if .DB [SS_SEND_SELECT] and (.DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] eqla 0)
;	  3030		    then
;	  3031			DB [SS_SEND_ACK] = TRUE;
;	  3032	
;	  3033		    if .DB [SS_SEND_ACK]
;	  3034		    then
;	  3035			BUILD_CONTROL_MESSAGE (DB [D_TIM]);
;	  3036	
;	  3037		    end;
;	  3038		    end;
;	  3039		[SS_MAINTENANCE] :
;	  3040		    begin
;	  3041	
;	  3042		    local
;	  3043			CCB : ref block field (C_FIELDS);
;	  3044	
;	  3045		    if not $MCB_DEQUEUE_CCB (DB [S_WAITING_FOR_TRANSMIT], CCB) then return;
;	  3046	
;	  3047		    if (BUILD_MAINTENANCE_MESSAGE (DB [D_TIM], .CCB) eqla 0)
;	  3048		    then
;	  3049			begin
;	  3050			$MCB_STACK_CCB (DB [S_WAITING_FOR_TRANSMIT], .CCB);
;	  3051			return;
;	  3052			end;
;	  3053	
;	  3054		    end;
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 115
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (49)
;	  3055		[inrange] : return;
;	  3056		tes;
;	  3057	
;	  3058	    if .DB [SS_SEND_SELECT] and (.DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0)
;	  3059	    then
;	  3060		begin
;	  3061	
;	  3062		local
;	  3063		    CCB : ref block field (C_FIELDS);
;	  3064	
;	  3065		CCB = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)];
;	  3066		DB [SS_SEND_SELECT] = FALSE;
;	  3067		begin
;	  3068	
;	  3069		local
;	  3070		    HEADER : ref block [H_LENGTH] field (HDR_FIELDS);
;	  3071	
;	  3072		HEADER = .CCB [C_ADDR];
;	  3073		HEADER [H_SELECT] = TRUE;
;	  3074		end;
;	  3075		CCB [C_MOD] = FM_SYN;
;	  3076	
;	  3077		if (CCB = .CCB [C_PRM4]) neqa 0
;	  3078		then
;	  3079		    begin
;	  3080	
;	  3081		    local
;	  3082			HEADER : ref block [H_LENGTH] field (HDR_FIELDS);
;	  3083	
;	  3084		    HEADER = .CCB [C_ADDR];
;	  3085		    HEADER [H_QSYNC] = TRUE;
;	  3086		    end;
;	  3087	
;	  3088	
;	  3089		if .DB [L_DUPLEX] neq DL_FULL
;	  3090		then
;	  3091		    DB [LS_STATION_ENABLED] = FALSE;
;	  3092	
;	  3093		end;
;	  3094	
;	  3095	    begin
;	  3096	
;	  3097	    local
;	  3098		CCB : ref block field (C_FIELDS);
;	  3099	
;	  3100	    if (CCB = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)]) neqa 0
;	  3101	    then
;	  3102		SYNCHRONIZE (DB [D_TIM], .CCB);
;	  3103	
;	  3104	    end;
;	  3105	    begin
;	  3106	
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 116
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (49)
;	  3107	    external routine
;	  3108		$DDXME : DDM_CCB novalue;
;	  3109	
;	  3110	    FLUSH_QUEUE (DB [L_PRE_TRANSMIT], %quote $DDXME);
;	  3111	    end;
;	  3112	    end;			!of routine SEND_DATA
						.GLOBL	$CMQIF, $DDXME
						.SBTTL	SEND.DATA
000000	162706  000012 			SEND.DATA:
						SUB	#12,SP				;					2951
000004	105765  000007 				TSTB	7(R5)				; *(DB)					2977
000010	001052 					BNE	3$
000012	012766  000146  000002 			MOV	#146,2(SP)			;					2979
000020	060566  000002 				ADD	R5,2(SP)			; DB,*
000024	105776  000002 				TSTB	@2(SP)
000030	001042 					BNE	3$
000032	005715 					TST	(R5)				; DB					2981
000034	100176 					BPL	12$
000036	012766  000162  000004 			MOV	#162,4(SP)			;					2983
000044	060566  000004 				ADD	R5,4(SP)			; DB,*
000050	017600  000004 				MOV	@4(SP),R0
000054	000300 					SWAB	R0
000056	110076  000004 				MOVB	R0,@4(SP)
000062	012766  000002  000006 			MOV	#2,6(SP)			;					2985
000070	060566  000006 				ADD	R5,6(SP)			; DB,*
000074	117600  000006 				MOVB	@6(SP),R0
000100	006300 					ASL	R0
000102	066007  000304'				ADD	P.AAS(R0),PC			; Case dispatch
000106	032776  001000  000006 		1$:	BIT	#1000,@6(SP)			;					2990
000114	001004 					BNE	2$
000116	032776  000400  000006 			BIT	#400,@6(SP)
000124	001542 					BEQ	12$
000126	004767  170616 			2$:	JSR	PC,BUILD.CONTROL.MESSAGE	;					2992
000132	005700 					TST	R0
000134	001137 					BNE	13$
000136	000535 				3$:	BR	12$
000140	032776  004000  000006 		4$:	BIT	#4000,@6(SP)			;					3003
000146	001004 					BNE	5$
000150	032776  002000  000006 			BIT	#2000,@6(SP)
000156	001405 					BEQ	6$
000160	004767  170564 			5$:	JSR	PC,BUILD.CONTROL.MESSAGE	;					3005
000164	005700 					TST	R0
000166	001364 					BNE	4$
000170	000521 					BR	13$
000172	032715  002000 			6$:	BIT	#2000,(R5)			; *,DB					3007
000176	001046 					BNE	9$
000200	012766  000114  000010 			MOV	#114,10(SP)			;					3016
000206	060566  000010 				ADD	R5,10(SP)			; DB,*
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 117
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (49)
000212	017601  000002 			7$:	MOV	@2(SP),R1			;					3010
000216	105001 					CLRB	R1
000220	000301 					SWAB	R1
000222	005000 					CLR	R0
000224	157600  000002 				BISB	@2(SP),R0
000230	020001 					CMP	R0,R1
000232	002030 					BGE	9$
000234	016603  000010 				MOV	10(SP),R3			;					3016
000240	004767  000000G				JSR	PC,$CMQRM
000244	103423 					BCS	9$
000246	010416 					MOV	R4,(SP)				; $MCB$R4,CCB
000250	004767  171052 				JSR	PC,BUILD.DATA.MESSAGE		;					3018
000254	005700 					TST	R0
000256	001006 					BNE	8$
000260	011604 					MOV	(SP),R4				; CCB,*					3021
000262	016603  000010 				MOV	10(SP),R3
000266	004767  000000G				JSR	PC,$CMQIF
000272	000460 					BR	13$				;					3020
000274	005000 				8$:	CLR	R0				;					3025
000276	157600  000004 				BISB	@4(SP),R0
000302	005300 					DEC	R0
000304	110076  000004 				MOVB	R0,@4(SP)
000310	005700 					TST	R0
000312	001337 					BNE	7$
000314	032776  020000  000006 		9$:	BIT	#20000,@6(SP)			;					3029
000322	001406 					BEQ	10$
000324	005765  000150 				TST	150(R5)				; *(DB)
000330	001003 					BNE	10$
000332	052776  010000  000006 			BIS	#10000,@6(SP)			;					3031
000340	032776  010000  000006 		10$:	BIT	#10000,@6(SP)			;					3033
000346	001432 					BEQ	13$
000350	004767  170374 				JSR	PC,BUILD.CONTROL.MESSAGE	;					3035
000354	000427 					BR	13$				;					2985
000356	012766  000114  000010 		11$:	MOV	#114,10(SP)			;					3045
000364	060566  000010 				ADD	R5,10(SP)			; DB,*
000370	016603  000010 				MOV	10(SP),R3
000374	004767  000000G				JSR	PC,$CMQRM
000400	103474 					BCS	17$
000402	010466  000004 				MOV	R4,4(SP)			; $MCB$R4,CCB
000406	004767  171230 				JSR	PC,BUILD.MAINTENANCE.MESSAGE	;					3047
000412	005700 					TST	R0
000414	001007 					BNE	13$
000416	016604  000004 				MOV	4(SP),R4			; CCB,*					3050
000422	016603  000010 				MOV	10(SP),R3
000426	004767  000000G				JSR	PC,$CMQIF
000432	000457 				12$:	BR	17$				;					3049
000434	032776  020000  000006 		13$:	BIT	#20000,@6(SP)			;					3058
000442	001435 					BEQ	15$
000444	005765  000150 				TST	150(R5)				; *(DB)
000450	001432 					BEQ	15$
000452	016501  000152 				MOV	152(R5),R1			; *(DB),CCB				3065
000456	042776  020000  000006 			BIC	#20000,@6(SP)			;					3066
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 118
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (49)
000464	016100  000020 				MOV	20(R1),R0			; *(CCB),HEADER				3072
000470	152760  000200  000002 			BISB	#200,2(R0)			; *,*(HEADER)				3073
000476	112761  000004  000013 			MOVB	#4,13(R1)			; *,*(CCB)				3075
000504	016101  000032 				MOV	32(R1),R1			; *(CCB),CCB				3077
000510	001405 					BEQ	14$
000512	016100  000020 				MOV	20(R1),R0			; *(CCB),HEADER				3084
000516	152760  000100  000002 			BISB	#100,2(R0)			; *,*(HEADER)				3085
000524	105765  000012 			14$:	TSTB	12(R5)				; *(DB)					3089
000530	001402 					BEQ	15$
000532	042715  100000 				BIC	#100000,(R5)			; *,DB					3091
000536	016504  000150 			15$:	MOV	150(R5),R4			; *(DB),CCB				3100
000542	001402 					BEQ	16$
000544	004767  000000V				JSR	PC,SYNCHRONIZE			;					3102
000550	012703  000150 			16$:	MOV	#150,R3				;					3110
000554	060503 					ADD	R5,R3				; DB,*
000556	004767  000000G				JSR	PC,$CMQRM
000562	103403 					BCS	17$
000564	004767  000000G				JSR	PC,$DDXME
000570	000767 					BR	16$
000572	062706  000012 			17$:	ADD	#12,SP				;					2951
000576	000207 					RTS	PC
; Routine Size:  192 words,	Routine Base:  $CODE$ + 7030
; Maximum stack depth per invocation:  6 words
000304						.PSECT	$PLIT$,  RO ,  D  
					P.AAS:						; CASE Table for SEND.DATA+0102		2985
000304	000464 					.WORD	464				; [17$]
000306	000000 					.WORD	0				; [1$]
000310	000000 					.WORD	0				; [1$]
000312	000032 					.WORD	32				; [4$]
000314	000250 					.WORD	250				; [11$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 119
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (50)
;	  3113	routine SEND_PERSISTENT_ERROR
;	  3114	
;	  3115	!++
;	  3116	! FUNCTIONAL DESCRIPTION:
;	  3117	!
;	  3118	!
;	  3119	! FORMAL PARAMETERS:
;	  3120	!
;	  3121	       (DB : ref block field (D_FIELDS),
;	  3122		STATUS)
;	  3123	!
;	  3124	! IMPLICIT INPUTS:
;	  3125	!	None
;	  3126	!
;	  3127	! IMPLICIT OUTPUTS:
;	  3128	!	None
;	  3129	!
;	  3130	! ROUTINE VALUE:
;	  3131	!
;	  3132		: DCP_DB_STS novalue =
;	  3133	!
;	  3134	! SIDE EFFECTS:
;	  3135	!	None
;	  3136	!--
;	  3137	
;	  3138	    begin
;	  3139	
;	  3140	    local
;	  3141		CCB : ref block field (C_FIELDS);
;	  3142	
;	  3143	    if .DB [S_USER_HANDLE] eql 0 then return;
;	  3144	
;	  3145	    DB [S_PERSISTENT_ERROR] = .STATUS;
;	  3146	
;	  3147	    if $MCB_GET_CCB (CCB)
;	  3148	    then
;	  3149		SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM])
;	  3150	    else
;	  3151		$MCB_REQUEST_CCB ();
;	  3152	
;	  3153	    end;			!of routine SEND_PERSISTENT_ERROR
						.SBTTL	SEND.PERSISTENT.ERROR
007630						.PSECT	$CODE$,  RO 
000000	010446 				SEND.PERSISTENT.ERROR:
						MOV	R4,-(SP)			;					3113
000002	005765  000130 				TST	130(R5)				; *(DB)					3143
000006	001412 					BEQ	2$
000010	010365  000134 				MOV	R3,134(R5)			; STATUS,*(DB)				3145
000014	004767  000000G				JSR	PC,$CCBGT			;					3147
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 120
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (50)
000020	103403 					BCS	1$
000022	004767  176614 				JSR	PC,SCHEDULE.PERSISTENT.AST	;					3149
000026	000402 					BR	2$				;					3147
000030	004767  000000G			1$:	JSR	PC,$CCBRQ			;					3151
000034	012604 				2$:	MOV	(SP)+,R4			;					3113
000036	000207 					RTS	PC
; Routine Size:  16 words,	Routine Base:  $CODE$ + 7630
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 121
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (51)
;	  3154	routine SEND_STATE
;	  3155	
;	  3156	!++
;	  3157	! FUNCTIONAL DESCRIPTION:
;	  3158	!
;	  3159	!
;	  3160	! FORMAL PARAMETERS:
;	  3161	!
;	  3162	       (DB : ref block field (D_FIELDS))
;	  3163	!
;	  3164	! IMPLICIT INPUTS:
;	  3165	!	None
;	  3166	!
;	  3167	! IMPLICIT OUTPUTS:
;	  3168	!	None
;	  3169	!
;	  3170	! ROUTINE VALUE:
;	  3171	!
;	  3172		: DCP_DB novalue =
;	  3173	!
;	  3174	! SIDE EFFECTS:
;	  3175	!	None
;	  3176	!--
;	  3177	
;	  3178	    begin
;	  3179	
;	  3180	    local
;	  3181		CCB : ref block field (C_FIELDS);
;	  3182	
;	  3183	    if .DB [S_USER_HANDLE] eql 0 then return;
;	  3184	
;	  3185	    if .DB [S_PROTOCOL_STATE] eql SS_HALTED then DB [SS_NOTIFY_OFF] = TRUE;
;	  3186	
;	  3187	    DB [SS_NOTIFY_STATE] = TRUE;
;	  3188	
;	  3189	    if $MCB_GET_CCB (CCB)
;	  3190	    then
;	  3191		SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
;	  3192	    else
;	  3193		$MCB_REQUEST_CCB ();
;	  3194	
;	  3195	    end;			!of routine SEND_STATE
						.SBTTL	SEND.STATE
000000	005765  000130 			SEND.STATE:
						TST	130(R5)				; *(DB)					3183
000004	001421 					BEQ	3$
000006	105765  000002 				TSTB	2(R5)				; *(DB)					3185
000012	001003 					BNE	1$
000014	052765  000400  000004 			BIS	#400,4(R5)			; *,*(DB)
000022	052765  001000  000004 		1$:	BIS	#1000,4(R5)			; *,*(DB)				3187
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 122
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (51)
000030	004767  000000G				JSR	PC,$CCBGT			;					3189
000034	103403 					BCS	2$
000036	004767  176656 				JSR	PC,SCHEDULE.STATE.AST		;					3191
000042	000207 					RTS	PC				;					3189
000044	004767  000000G			2$:	JSR	PC,$CCBRQ			;					3193
000050	000207 				3$:	RTS	PC				;					3154
; Routine Size:  21 words,	Routine Base:  $CODE$ + 7670
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 123
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (52)
;	  3196	routine SEND_TRANSIENT_ERROR
;	  3197	
;	  3198	!++
;	  3199	! FUNCTIONAL DESCRIPTION:
;	  3200	!
;	  3201	!
;	  3202	! FORMAL PARAMETERS:
;	  3203	!
;	  3204	       (DB : ref block field (D_FIELDS),
;	  3205		STATUS)
;	  3206	!
;	  3207	! IMPLICIT INPUTS:
;	  3208	!	None
;	  3209	!
;	  3210	! IMPLICIT OUTPUTS:
;	  3211	!	None
;	  3212	!
;	  3213	! ROUTINE VALUE:
;	  3214	!
;	  3215		: DCP_DB_STS novalue =
;	  3216	!
;	  3217	! SIDE EFFECTS:
;	  3218	!	None
;	  3219	!--
;	  3220	
;	  3221	    begin
;	  3222	
;	  3223	    local
;	  3224		CCB : ref block field (C_FIELDS);
;	  3225	
;	  3226	    if .DB [S_USER_HANDLE] eql 0 then return;
;	  3227	
;	  3228	    DB [S_TRANSIENT_ERROR] = .STATUS;
;	  3229	
;	  3230	    if $MCB_GET_CCB (CCB)
;	  3231	    then
;	  3232		SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM])
;	  3233	    else
;	  3234		$MCB_REQUEST_CCB ();
;	  3235	
;	  3236	    end;			!of routine SEND_TRANSIENT_ERROR
						.SBTTL	SEND.TRANSIENT.ERROR
000000	010446 				SEND.TRANSIENT.ERROR:
						MOV	R4,-(SP)			;					3196
000002	005765  000130 				TST	130(R5)				; *(DB)					3226
000006	001412 					BEQ	2$
000010	010365  000132 				MOV	R3,132(R5)			; STATUS,*(DB)				3228
000014	004767  000000G				JSR	PC,$CCBGT			;					3230
000020	103403 					BCS	1$
000022	004767  176730 				JSR	PC,SCHEDULE.TRANSIENT.AST	;					3232
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 124
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (52)
000026	000402 					BR	2$				;					3230
000030	004767  000000G			1$:	JSR	PC,$CCBRQ			;					3234
000034	012604 				2$:	MOV	(SP)+,R4			;					3196
000036	000207 					RTS	PC
; Routine Size:  16 words,	Routine Base:  $CODE$ + 7742
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 125
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (53)
;	  3237	global routine SET_DEVICE
;	  3238	
;	  3239	!++
;	  3240	! FUNCTIONAL DESCRIPTION:
;	  3241	!
;	  3242	!
;	  3243	! FORMAL PARAMETERS:
;	  3244	!
;	  3245	       (DB : ref block field (D_FIELDS))
;	  3246	!
;	  3247	! IMPLICIT INPUTS:
;	  3248	!	None
;	  3249	!
;	  3250	! IMPLICIT OUTPUTS:
;	  3251	!	None
;	  3252	!
;	  3253	! ROUTINE VALUE:
;	  3254	!
;	  3255		: DCP_DB novalue =
;	  3256	!
;	  3257	! SIDE EFFECTS:
;	  3258	!	None
;	  3259	!--
;	  3260	
;	  3261	    begin
;	  3262	
;	  3263	    while .DB [D_CONTROL_FLAGS] neq 0 do
;	  3264		begin
;	  3265	
;	  3266		if .DB [SS_DEVICE_BEING_SET] then return;
;	  3267	
;	  3268		selectone TRUE of
;	  3269		    set
;	  3270		    [.DB [DC_STOP_DEVICE]] :
;	  3271	
;	  3272			if .DB [SS_DEVICE_RUNNING]
;	  3273			then
;	  3274			    begin
;	  3275	
;	  3276			    local
;	  3277				CCB : ref block field (C_FIELDS);
;	  3278	
;	  3279			    if not $MCB_GET_CCB (CCB) then return $MCB_REQUEST_CCB ();
;	  3280	
;	  3281			    STOP_DEVICE (.CCB, DB [D_TIM]);
;	  3282			    end
;	  3283			else
;	  3284			    DB [DC_STOP_DEVICE] = FALSE;
;	  3285	
;	  3286		    [.DB [DC_START_DEVICE]] :
;	  3287	
;	  3288			if not .DB [SS_DEVICE_RUNNING]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 126
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (53)
;	  3289			then
;	  3290			    begin
;	  3291	
;	  3292			    local
;	  3293				CCB : ref block field (C_FIELDS);
;	  3294	
;	  3295			    if not $MCB_GET_CCB (CCB) then return $MCB_REQUEST_CCB ();
;	  3296	
;	  3297			    START_DEVICE (.CCB, DB [D_TIM]);
;	  3298			    end
;	  3299			else
;	  3300			    DB [DC_START_DEVICE] = FALSE;
;	  3301	
;	  3302		    [.DB [DC_SET_REQUESTED_STATE]] :
;	  3303	
;	  3304			selectone TRUE of
;	  3305			    set
;	  3306			    [.DB [L_LINE_STATE] neq DL_ON]:
;	  3307				DB [DC_SET_REQUESTED_STATE] = FALSE;
;	  3308			    [.DB [S_PROTOCOL_STATE] eql .DB [S_REQUESTED_STATE]] :
;	  3309				DB [DC_SET_REQUESTED_STATE] = FALSE;
;	  3310			    [otherwise] :
;	  3311				begin
;	  3312				SET_LINK (DB [D_TIM], .DB [S_REQUESTED_STATE]);
;	  3313				DB [DC_SET_REQUESTED_STATE] = FALSE;
;	  3314				end;
;	  3315			    tes;
;	  3316	
;	  3317		    tes;
;	  3318	
;	  3319		end;
;	  3320	
;	  3321	    if .DB [S_PROTOCOL_STATE] eql SS_HALTED then return;
;	  3322	
;	  3323	    SEND_DATA (DB [D_TIM]);
;	  3324	    end;			!of routine SET_DEVICE
						.SBTTL	SETDEV
000000	012746  000006 			SETDEV::MOV	#6,-(SP)			;					3263
000004	060516 					ADD	R5,(SP)				; DB,*
000006	012746  000004 				MOV	#4,-(SP)			;					3266
000012	060516 					ADD	R5,(SP)				; DB,*
000014	032776  177400  000002 		1$:	BIT	#177400,@2(SP)			;					3263
000022	001502 					BEQ	10$
000024	032776  004000  000000 			BIT	#4000,@0(SP)			;					3266
000032	001103 					BNE	11$
000034	032776  001000  000002 			BIT	#1000,@2(SP)			;					3268
000042	001415 					BEQ	3$
000044	005776  000000 				TST	@0(SP)				;					3272
000050	100006 					BPL	2$
000052	004767  000000G				JSR	PC,$CCBGT			;					3279
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 127
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (53)
000056	103421 					BLO	4$
000060	004767  000000V				JSR	PC,STOP.DEVICE			;					3281
000064	000753 					BR	1$				;					3272
000066	042776  001000  000002 		2$:	BIC	#1000,@2(SP)			;					3284
000074	000747 					BR	1$				;					3268
000076	032776  002000  000002 		3$:	BIT	#2000,@2(SP)
000104	001420 					BEQ	7$
000106	005776  000000 				TST	@0(SP)				;					3288
000112	100411 					BMI	6$
000114	004767  000000G				JSR	PC,$CCBGT			;					3295
000120	103003 					BHIS	5$
000122	004767  000000G			4$:	JSR	PC,$CCBRQ
000126	000445 					BR	11$
000130	004767  000000V			5$:	JSR	PC,START.DEVICE			;					3297
000134	000727 					BR	1$				;					3288
000136	042776  002000  000002 		6$:	BIC	#2000,@2(SP)			;					3300
000144	000723 					BR	1$				;					3268
000146	032776  004000  000002 		7$:	BIT	#4000,@2(SP)
000154	001717 					BEQ	1$
000156	105765  000014 				TSTB	14(R5)				; *(DB)					3306
000162	001004 					BNE	8$				;					3307
000164	126576  000002  000002 			CMPB	2(R5),@2(SP)			; *(DB),*				3308
000172	001004 					BNE	9$
000174	042776  004000  000002 		8$:	BIC	#4000,@2(SP)			;					3309
000202	000704 					BR	1$				;					3304
000204	117600  000002 			9$:	MOVB	@2(SP),R0			;					3312
000210	010046 					MOV	R0,-(SP)
000212	004767  000000V				JSR	PC,SETLNK
000216	042776  004000  000004 			BIC	#4000,@4(SP)			;					3313
000224	005726 					TST	(SP)+				;					3311
000226	000672 					BR	1$				;					3268
000230	105765  000002 			10$:	TSTB	2(R5)				; *(DB)					3321
000234	001402 					BEQ	11$
000236	004767  176564 				JSR	PC,SEND.DATA			;					3323
000242	022626 				11$:	CMP	(SP)+,(SP)+			;					3237
000244	000207 					RTS	PC
; Routine Size:  83 words,	Routine Base:  $CODE$ + 10002
; Maximum stack depth per invocation:  4 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 128
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (54)
;	  3325	global routine SET_LINK
;	  3326	
;	  3327	!++
;	  3328	! FUNCTIONAL DESCRIPTION:
;	  3329	!
;	  3330	!
;	  3331	! FORMAL PARAMETERS:
;	  3332	!
;	  3333	       (DB : ref block field (D_FIELDS),
;	  3334		STATE)
;	  3335	!
;	  3336	! IMPLICIT INPUTS:
;	  3337	!
;	  3338	! IMPLICIT OUTPUTS:
;	  3339	!	None
;	  3340	!
;	  3341	! ROUTINE VALUE:
;	  3342	!
;	  3343		: DCP_DB novalue =
;	  3344	!
;	  3345	! SIDE EFFECTS:
;	  3346	!	None
;	  3347	!--
;	  3348	
;	  3349	    begin
;	  3350	    DB [LS_STATION_ENABLED] = FALSE;
;	  3351	    DB [SS_TIMING_REP] = FALSE;
;	  3352	    DB [SS_RETRANSMIT] = FALSE;
;	  3353	    DB [SS_START_REP_TIMER] = FALSE;
;	  3354	    DB [LS_RESYNCH_IN_PROGRESS] = FALSE;
;	  3355	    DB [SS_SEND_SELECT] = FALSE;
;	  3356	    DB [SS_SEND_ACK] = FALSE;
;	  3357	    DB [SS_SEND_REP] = FALSE;
;	  3358	    DB [SS_SEND_NAK] = FALSE;
;	  3359	    DB [SS_SEND_START] = FALSE;
;	  3360	    DB [SS_SEND_STACK] = FALSE;
;	  3361	    DB [S_R] = 0;
;	  3362	    DB [S_TM1] = 0;
;	  3363	    DB [S_X] = 0;
;	  3364	    DB [S_N] = 0;
;	  3365	    DB [S_A] = 0;
;	  3366	    DB [S_AR] = 0;
;	  3367	    DB [S_PENDING_NAK_REASON] = 0;
;	  3368	    DB [S_TRANSMIT_THRESHOLD] = 7;
;	  3369	    DB [S_RECEIVE_THRESHOLD] = 7;
;	  3370	    DB [S_SELECT_THRESHOLD] = 7;
;	  3371	
;	  3372	    case .STATE from SS_LOW to SS_HIGH of
;	  3373		set
;	  3374		[SS_ISTRT, SS_ASTRT, SS_RUNNING] :
;	  3375		    begin
;	  3376	
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 129
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (54)
;	  3377		    if .DB [L_DUPLEX] eql DL_FULL
;	  3378		    then
;	  3379			DB [SS_HALF_DUPLEX] = FALSE
;	  3380		    else
;	  3381			DB [SS_HALF_DUPLEX] = TRUE;
;	  3382	
;	  3383		    DB [SS_SEND_START] = TRUE;
;	  3384		    DB [SS_SEND_SELECT] = TRUE;
;	  3385		    DB [DC_START_DEVICE] = TRUE;
;	  3386		    DB [SS_ACTIVE] = TRUE;
;	  3387		    CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_ISTRT, LCL);
;	  3388		    end;
;	  3389		[SS_MAINTENANCE] :
;	  3390		    begin
;	  3391		    DB [SS_HALF_DUPLEX] = TRUE;
;	  3392		    DB [DC_START_DEVICE] = TRUE;
;	  3393		    DB [SS_ACTIVE] = TRUE;
;	  3394		    CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_MAINTENANCE, LCL);
;	  3395		    end;
;	  3396		[inrange] :
;	  3397		    begin
;	  3398		    DB [DC_STOP_DEVICE] = TRUE;
;	  3399		    DB [SS_ACTIVE] = FALSE;
;	  3400		    CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_HALTED, LCL);
;	  3401		    end;
;	  3402		tes;
;	  3403	
;	  3404	    end;			!of routine SET_LINK
						.SBTTL	SETLNK
000000	042715  107400 			SETLNK::BIC	#107400,(R5)			; *,DB					3354
000004	012700  000002 				MOV	#2,R0				;					3355
000010	060500 					ADD	R5,R0				; DB,*
000012	042710  037400 				BIC	#37400,(R0)			;					3360
000016	105065  000070 				CLRB	70(R5)				; *(DB)					3361
000022	105065  000071 				CLRB	71(R5)				; *(DB)					3362
000026	105065  000072 				CLRB	72(R5)				; *(DB)					3363
000032	105065  000073 				CLRB	73(R5)				; *(DB)					3364
000036	105065  000074 				CLRB	74(R5)				; *(DB)					3365
000042	105065  000075 				CLRB	75(R5)				; *(DB)					3366
000046	105065  000077 				CLRB	77(R5)				; *(DB)					3367
000052	112765  000007  000016 			MOVB	#7,16(R5)			; *,*(DB)				3368
000060	112765  000007  000015 			MOVB	#7,15(R5)			; *,*(DB)				3369
000066	112765  000007  000017 			MOVB	#7,17(R5)			; *,*(DB)				3370
000074	012746  000006 				MOV	#6,-(SP)			;					3385
000100	060516 					ADD	R5,(SP)				; DB,*
000102	012746  000004 				MOV	#4,-(SP)			;					3386
000106	060516 					ADD	R5,(SP)				; DB,*
000110	016601  000006 				MOV	6(SP),R1			; STATE,*				3372
000114	006301 					ASL	R1
000116	066107  000316'				ADD	P.AAT(R1),PC			; Case dispatch
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 130
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (54)
000122	105765  000012 			1$:	TSTB	12(R5)				; *(DB)					3377
000126	001003 					BNE	2$
000130	042715  010000 				BIC	#10000,(R5)			; *,DB					3379
000134	000402 					BR	3$				;					3377
000136	052715  010000 			2$:	BIS	#10000,(R5)			; *,DB					3381
000142	052710  021000 			3$:	BIS	#21000,(R0)			;					3384
000146	052776  002000  000002 			BIS	#2000,@2(SP)			;					3385
000154	052776  002000  000000 			BIS	#2000,@0(SP)			;					3386
000162	012746  000001 				MOV	#1,-(SP)			;					3387
000166	000422 					BR	6$
000170	052715  010000 			4$:	BIS	#10000,(R5)			; *,DB					3391
000174	052776  002000  000002 			BIS	#2000,@2(SP)			;					3392
000202	052776  002000  000000 			BIS	#2000,@0(SP)			;					3393
000210	012746  000004 				MOV	#4,-(SP)			;					3394
000214	000407 					BR	6$
000216	052776  001000  000002 		5$:	BIS	#1000,@2(SP)			;					3398
000224	042776  002000  000000 			BIC	#2000,@0(SP)			;					3399
000232	005046 					CLR	-(SP)				;					3400
000234	005046 				6$:	CLR	-(SP)
000236	004767  170536 				JSR	PC,CHANGE.PROTOCOL.STATE
000242	062706  000010 				ADD	#10,SP				;					3325
000246	000207 					RTS	PC
; Routine Size:  84 words,	Routine Base:  $CODE$ + 10250
; Maximum stack depth per invocation:  5 words
000316						.PSECT	$PLIT$,  RO ,  D  
					P.AAT:						; CASE Table for SETLNK+0116		3372
000316	000074 					.WORD	74				; [5$]
000320	000000 					.WORD	0				; [1$]
000322	000000 					.WORD	0				; [1$]
000324	000000 					.WORD	0				; [1$]
000326	000046 					.WORD	46				; [4$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 131
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (55)
;	  3405	global routine STARCE
;	  3406	
;	  3407	!++
;	  3408	! FUNCTIONAL DESCRIPTION:
;	  3409	!
;	  3410	!
;	  3411	! FORMAL PARAMETERS:
;	  3412	!
;	  3413	       (DB : ref block field (D_FIELDS),
;	  3414		CCB : ref block field (C_FIELDS))
;	  3415	!
;	  3416	! IMPLICIT INPUTS:
;	  3417	!
;	  3418	! IMPLICIT OUTPUTS:
;	  3419	!	None
;	  3420	!
;	  3421	! ROUTINE VALUE:
;	  3422	!
;	  3423		: DCP_DB_CCBR novalue =
;	  3424	!
;	  3425	! SIDE EFFECTS:
;	  3426	!	None
;	  3427	!--
;	  3428	
;	  3429	    begin
;	  3430	
;	  3431	    external routine
;	  3432		$DDRCE : DDM_CCB novalue;
;	  3433	
;	  3434	    CCB [C_ADDR] = .CCB [C_ADDR] - H_LENGTH*%upval;
;	  3435	    CCB [C_CNT] = .CCB [C_CNT] + H_LENGTH*%upval;
;	  3436	    CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
;	  3437	    $DDRCE (.CCB);
;	  3438	    end;			!of routine STARCE
						.GLOBL	$DDRCE
						.SBTTL	STARCE
010520						.PSECT	$CODE$,  RO 
000000	162764  000006  000020 		STARCE::SUB	#6,20(R4)			; *,*(CCB)				3434
000006	062764  000006  000022 			ADD	#6,22(R4)			; *,*(CCB)				3435
000014	016564  000144  000010 			MOV	144(R5),10(R4)			; *(DB),*(CCB)				3436
000022	004767  000000G				JSR	PC,$DDRCE			;					3437
000026	000207 					RTS	PC				;					3405
; Routine Size:  12 words,	Routine Base:  $CODE$ + 10520
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 132
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (56)
;	  3439	routine START_DEVICE
;	  3440	
;	  3441	!++
;	  3442	! FUNCTIONAL DESCRIPTION:
;	  3443	!
;	  3444	!
;	  3445	! FORMAL PARAMETERS:
;	  3446	!
;	  3447	       (CCB : ref block field (C_FIELDS),
;	  3448		DB : ref block field (D_FIELDS))
;	  3449	!
;	  3450	! IMPLICIT INPUTS:
;	  3451	!	None
;	  3452	!
;	  3453	! IMPLICIT OUTPUTS:
;	  3454	!	None
;	  3455	!
;	  3456	! ROUTINE VALUE:
;	  3457	!
;	  3458		: DCP_CCB_DB novalue =
;	  3459	!
;	  3460	! SIDE EFFECTS:
;	  3461	!	None
;	  3462	!--
;	  3463	
;	  3464	    begin
;	  3465	
;	  3466	    external routine
;	  3467		$DDSET : DDM_CCB novalue;
;	  3468	
;	  3469	    DB [DC_START_DEVICE] = FALSE;
;	  3470	    DB [SS_DEVICE_BEING_SET] = TRUE;
;	  3471	    CCB [C_PRM4] = .DB [L_CLOCK];
;	  3472	    CCB [C_PRM3] = .DB [L_CONTROLLER];
;	  3473	    CCB [C_PRM2] = .DB [L_DUPLEX];
;	  3474	    CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
;	  3475	    $DDSET (.CCB);
;	  3476	    end;			!of routine START_DEVICE
						.GLOBL	$DDSET
						.SBTTL	START.DEVICE
000000	042765  002000  000006 		START.DEVICE:
						BIC	#2000,6(R5)			; *,*(DB)				3469
000006	052765  004000  000004 			BIS	#4000,4(R5)			; *,*(DB)				3470
000014	116564  000013  000032 			MOVB	13(R5),32(R4)			; *(DB),*(CCB)				3471
000022	105064  000033 				CLRB	33(R4)				; *(CCB)
000026	116564  000011  000030 			MOVB	11(R5),30(R4)			; *(DB),*(CCB)				3472
000034	105064  000031 				CLRB	31(R4)				; *(CCB)
000040	116564  000012  000026 			MOVB	12(R5),26(R4)			; *(DB),*(CCB)				3473
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 133
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (56)
000046	105064  000027 				CLRB	27(R4)				; *(CCB)
000052	016564  000144  000010 			MOV	144(R5),10(R4)			; *(DB),*(CCB)				3474
000060	004767  000000G				JSR	PC,$DDSET			;					3475
000064	000207 					RTS	PC				;					3439
; Routine Size:  27 words,	Routine Base:  $CODE$ + 10550
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 134
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (57)
;	  3477	routine STOP_DEVICE
;	  3478	
;	  3479	!++
;	  3480	! FUNCTIONAL DESCRIPTION:
;	  3481	!
;	  3482	!
;	  3483	! FORMAL PARAMETERS:
;	  3484	!
;	  3485	       (CCB : ref block field (C_FIELDS),
;	  3486		DB : ref block field (D_FIELDS))
;	  3487	!
;	  3488	! IMPLICIT INPUTS:
;	  3489	!	None
;	  3490	!
;	  3491	! IMPLICIT OUTPUTS:
;	  3492	!	None
;	  3493	!
;	  3494	! ROUTINE VALUE:
;	  3495	!
;	  3496		: DCP_CCB_DB novalue =
;	  3497	!
;	  3498	! SIDE EFFECTS:
;	  3499	!	None
;	  3500	!--
;	  3501	
;	  3502	    begin
;	  3503	
;	  3504	    external routine
;	  3505		$DDSTP : DDM_CCB novalue;
;	  3506	
;	  3507	    DB [DC_STOP_DEVICE] = FALSE;
;	  3508	    DB [SS_DEVICE_RUNNING] = FALSE;
;	  3509	    DB [SS_DEVICE_BEING_SET] = TRUE;
;	  3510	    CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
;	  3511	    $DDSTP (.CCB);
;	  3512	    end;			!of routine STOP_DEVICE
						.GLOBL	$DDSTP
						.SBTTL	STOP.DEVICE
000000	042765  001000  000006 		STOP.DEVICE:
						BIC	#1000,6(R5)			; *,*(DB)				3507
000006	042765  100000  000004 			BIC	#100000,4(R5)			; *,*(DB)				3508
000014	052765  004000  000004 			BIS	#4000,4(R5)			; *,*(DB)				3509
000022	016564  000144  000010 			MOV	144(R5),10(R4)			; *(DB),*(CCB)				3510
000030	004767  000000G				JSR	PC,$DDSTP			;					3511
000034	000207 					RTS	PC				;					3477
; Routine Size:  15 words,	Routine Base:  $CODE$ + 10636
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 135
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (58)
;	  3513	routine STOP_LINK
;	  3514	
;	  3515	!++
;	  3516	! FUNCTIONAL DESCRIPTION:
;	  3517	!
;	  3518	!
;	  3519	! FORMAL PARAMETERS:
;	  3520	!
;	  3521	       (DB : ref block field (D_FIELDS),
;	  3522		CCB : ref block field (C_FIELDS))
;	  3523	!
;	  3524	! IMPLICIT INPUTS:
;	  3525	!
;	  3526	! IMPLICIT OUTPUTS:
;	  3527	!	None
;	  3528	!
;	  3529	! ROUTINE VALUE:
;	  3530	!
;	  3531		: MCB_DB_CCB novalue =
;	  3532	!
;	  3533	! SIDE EFFECTS:
;	  3534	!	None
;	  3535	!--
;	  3536	
;	  3537	    begin
;	  3538	    DB [DC_SET_REQUESTED_STATE] = TRUE;
;	  3539	    DB [S_REQUESTED_STATE] = SS_HALTED;
;	  3540	    SET_DEVICE (DB [D_TIM]);
;	  3541	    CCB [C_FNC] = FC_XCP;
;	  3542	    CCB [C_STS] = DLL$_SUCCESS;
;	  3543	    $MCB_SCHEDULE_CCB (.CCB);
;	  3544	    end;			!of routine STOP_LINK
						.SBTTL	STOP.LINK
000000	010446 				STOP.LINK:
						MOV	R4,-(SP)			;					3513
000002	052765  004000  000006 			BIS	#4000,6(R5)			; *,*(DB)				3538
000010	105065  000006 				CLRB	6(R5)				; *(DB)					3539
000014	004767  177066 				JSR	PC,SETDEV			;					3540
000020	011600 					MOV	(SP),R0				;					3541
000022	112760  000014  000012 			MOVB	#14,12(R0)
000030	012760  100001  000014 			MOV	#-77777,14(R0)			;					3542
000036	010004 					MOV	R0,R4				;					3543
000040	004767  000000G				JSR	PC,$SCHED
000044	005726 					TST	(SP)+				;					3513
000046	000207 					RTS	PC
; Routine Size:  20 words,	Routine Base:  $CODE$ + 10674
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 136
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (59)
;	  3545	routine SYNCHRONIZE
;	  3546	
;	  3547	!++
;	  3548	! FUNCTIONAL DESCRIPTION:
;	  3549	!
;	  3550	!
;	  3551	! FORMAL PARAMETERS:
;	  3552	!
;	  3553	       (DB : ref block field (D_FIELDS),
;	  3554		CCB : ref block field (C_FIELDS))
;	  3555	!
;	  3556	! IMPLICIT INPUTS:
;	  3557	!
;	  3558	! IMPLICIT OUTPUTS:
;	  3559	!	None
;	  3560	!
;	  3561	! ROUTINE VALUE:
;	  3562	!
;	  3563		: DCP_DB_CCB_N0 novalue =
;	  3564	!
;	  3565	! SIDE EFFECTS:
;	  3566	!	None
;	  3567	!--
;	  3568	
;	  3569	    begin
;	  3570	
;	  3571	    if .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0
;	  3572	    then
;	  3573		begin
;	  3574	
;	  3575		local
;	  3576		    HEADER : ref block field (HDR_FIELDS);
;	  3577	
;	  3578		HEADER = .block [.DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)], C_ADDR];
;	  3579		HEADER [H_QSYNC] = TRUE;    
;	  3580		end;
;	  3581	
;	  3582	    CCB [C_MOD] = FM_SYN;
;	  3583	    end;			!of routine SYNCHRONIZE
						.SBTTL	SYNCHRONIZE
000000	005765  000150 			SYNCHRONIZE:
						TST	150(R5)				; *(DB)					3571
000004	001407 					BEQ	1$
000006	016503  000152 				MOV	152(R5),R3			; *(DB),*				3578
000012	016303  000020 				MOV	20(R3),R3			; *,HEADER
000016	152763  000100  000002 			BISB	#100,2(R3)			; *,*(HEADER)				3579
000024	112764  000004  000013 		1$:	MOVB	#4,13(R4)			; *,*(CCB)				3582
000032	000207 					RTS	PC				;					3545
; Routine Size:  14 words,	Routine Base:  $CODE$ + 10744
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 137
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (59)
; Maximum stack depth per invocation:  0 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 138
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (60)
;	  3584	routine TERMINATE_SELECTION_INTERVAL
;	  3585	
;	  3586	!++
;	  3587	! FUNCTIONAL DESCRIPTION:
;	  3588	!
;	  3589	!
;	  3590	! FORMAL PARAMETERS:
;	  3591	!
;	  3592	       (DB : ref block field (D_FIELDS))
;	  3593	!
;	  3594	! IMPLICIT INPUTS:
;	  3595	!
;	  3596	! IMPLICIT OUTPUTS:
;	  3597	!	None
;	  3598	!
;	  3599	! ROUTINE VALUE:
;	  3600	!
;	  3601		: DCP_DB novalue =
;	  3602	!
;	  3603	! SIDE EFFECTS:
;	  3604	!	None
;	  3605	!--
;	  3606	
;	  3607	    begin
;	  3608	
;	  3609	    if .DB [SS_TIMING_REP]
;	  3610	    then
;	  3611		begin
;	  3612		DB [SS_START_REP_TIMER] = FALSE;
;	  3613		DB [SS_TIMING_REP] = FALSE;
;	  3614	
;	  3615		case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  3616		    set
;	  3617		    [SS_ISTRT] :
;	  3618			begin
;	  3619			DB [SS_SEND_START] = TRUE;
;	  3620			DB [SS_SEND_SELECT] = TRUE;
;	  3621			end;
;	  3622		    [SS_ASTRT] :
;	  3623			begin
;	  3624			DB [SS_SEND_STACK] = TRUE;
;	  3625			DB [SS_SEND_SELECT] = TRUE;
;	  3626			end;
;	  3627		    [SS_RUNNING] :
;	  3628			begin
;	  3629			DB [SS_SEND_REP] = TRUE;
;	  3630			COUNTER_INCREMENT (DB, S_LOCAL_REPLY_TIMEOUTS);
;	  3631			TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
;	  3632			end;
;	  3633		    [inrange] :
;	  3634			NO_OPERATION;
;	  3635		    tes;
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 139
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (60)
;	  3636	
;	  3637		end;
;	  3638	
;	  3639	    DB [LS_STATION_ENABLED] = TRUE;
;	  3640	
;	  3641	    if .DB [SS_HALF_DUPLEX] then DB [SS_SEND_SELECT] = TRUE;
;	  3642	
;	  3643	    SEND_DATA (DB [D_TIM]);
;	  3644	    end;			!of routine TERMINATE_SELECTION_INTERVAL
						.SBTTL	TERMINATE.SELECTION.INTERVAL
000000	032715  004000 			TERMINATE.SELECTION.INTERVAL:
						BIT	#4000,(R5)			; *,DB					3609
000004	001432 					BEQ	5$
000006	042715  005000 				BIC	#5000,(R5)			; *,DB					3613
000012	012700  000002 				MOV	#2,R0				;					3615
000016	060500 					ADD	R5,R0				; DB,*
000020	111001 					MOVB	(R0),R1
000022	006301 					ASL	R1
000024	066107  000330'				ADD	P.AAU(R1),PC			; Case dispatch
000030	052710  001000 			1$:	BIS	#1000,(R0)			;					3619
000034	000402 					BR	3$				;					3620
000036	052710  000400 			2$:	BIS	#400,(R0)			;					3624
000042	052710  020000 			3$:	BIS	#20000,(R0)			;					3625
000046	000411 					BR	5$				;					3615
000050	052710  004000 			4$:	BIS	#4000,(R0)			;					3629
000054	012700  000054 				MOV	#54,R0				;					3630
000060	060500 					ADD	R5,R0				; DB,*
000062	004767  000000G				JSR	PC,$IC8
000066	004767  000000V				JSR	PC,TEST.TRANSMIT.THRESHOLD	;					3631
000072	052715  100000 			5$:	BIS	#100000,(R5)			; *,DB					3639
000076	032715  010000 				BIT	#10000,(R5)			; *,DB					3641
000102	001403 					BEQ	6$
000104	052765  020000  000002 			BIS	#20000,2(R5)			; *,*(DB)
000112	004767  175712 			6$:	JSR	PC,SEND.DATA			;					3643
000116	000207 					RTS	PC				;					3584
; Routine Size:  40 words,	Routine Base:  $CODE$ + 11000
; Maximum stack depth per invocation:  1 word
000330						.PSECT	$PLIT$,  RO ,  D  
					P.AAU:						; CASE Table for TERMINATE.SELEC+0024	3615
000330	000042 					.WORD	42				; [5$]
000332	000000 					.WORD	0				; [1$]
000334	000006 					.WORD	6				; [2$]
000336	000020 					.WORD	20				; [4$]
000340	000042 					.WORD	42				; [5$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 140
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (61)
;	  3645	routine TEST_RECEIVE_THRESHOLD
;	  3646	
;	  3647	!++
;	  3648	! FUNCTIONAL DESCRIPTION:
;	  3649	!
;	  3650	!
;	  3651	! FORMAL PARAMETERS:
;	  3652	!
;	  3653	       (DB : ref block field (D_FIELDS))
;	  3654	!
;	  3655	! IMPLICIT INPUTS:
;	  3656	!
;	  3657	! IMPLICIT OUTPUTS:
;	  3658	!	None
;	  3659	!
;	  3660	! ROUTINE VALUE:
;	  3661	!
;	  3662		: DCP_DB_N0 novalue =
;	  3663	!
;	  3664	! SIDE EFFECTS:
;	  3665	!	None
;	  3666	!--
;	  3667	
;	  3668	    begin
;	  3669	    TEST_THRESHOLD (DB [D_TIM], DB [S_RECEIVE_THRESHOLD], 4, DLL$_RECEIVE_THRESHOLD);
;	  3670	    end;			!of routine TEST_RECEIVE_THRESHOLD
						.SBTTL	TEST.RECEIVE.THRESHOLD
011120						.PSECT	$CODE$,  RO 
000000	004167  000000G			TEST.RECEIVE.THRESHOLD:
						JSR	R1,$SAVE3			;					3645
000004	010046 					MOV	R0,-(SP)
000006	010500 					MOV	R5,R0				; DB,*					3669
000010	062700  000015 				ADD	#15,R0
000014	012746  100110 				MOV	#-77670,-(SP)
000020	012703  000004 				MOV	#4,R3
000024	004767  000000V				JSR	PC,TEST.THRESHOLD
000030	005726 					TST	(SP)+				;					3668
000032	012600 					MOV	(SP)+,R0			;					3645
000034	000207 					RTS	PC
; Routine Size:  15 words,	Routine Base:  $CODE$ + 11120
; Maximum stack depth per invocation:  7 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 141
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (62)
;	  3671	routine TEST_SELECT_THRESHOLD
;	  3672	
;	  3673	!++
;	  3674	! FUNCTIONAL DESCRIPTION:
;	  3675	!
;	  3676	!
;	  3677	! FORMAL PARAMETERS:
;	  3678	!
;	  3679	       (DB : ref block field (D_FIELDS))
;	  3680	!
;	  3681	! IMPLICIT INPUTS:
;	  3682	!
;	  3683	! IMPLICIT OUTPUTS:
;	  3684	!	None
;	  3685	!
;	  3686	! ROUTINE VALUE:
;	  3687	!
;	  3688		: DCP_DB_N0 novalue =
;	  3689	!
;	  3690	! SIDE EFFECTS:
;	  3691	!	None
;	  3692	!--
;	  3693	
;	  3694	    begin
;	  3695	    TEST_THRESHOLD (DB [D_TIM], DB [S_SELECT_THRESHOLD], 5, DLL$_SELECTION_THRESHOLD);
;	  3696	    end;			!of routine TEST_SELECT_THRESHOLD
						.SBTTL	TEST.SELECT.THRESHOLD
000000	004167  000000G			TEST.SELECT.THRESHOLD:
						JSR	R1,$SAVE3			;					3671
000004	010046 					MOV	R0,-(SP)
000006	010500 					MOV	R5,R0				; DB,*					3695
000010	062700  000017 				ADD	#17,R0
000014	012746  100120 				MOV	#-77660,-(SP)
000020	012703  000005 				MOV	#5,R3
000024	004767  000000V				JSR	PC,TEST.THRESHOLD
000030	005726 					TST	(SP)+				;					3694
000032	012600 					MOV	(SP)+,R0			;					3671
000034	000207 					RTS	PC
; Routine Size:  15 words,	Routine Base:  $CODE$ + 11156
; Maximum stack depth per invocation:  7 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 142
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (63)
;	  3697	routine TEST_THRESHOLD
;	  3698	
;	  3699	!++
;	  3700	! FUNCTIONAL DESCRIPTION:
;	  3701	!
;	  3702	!
;	  3703	! FORMAL PARAMETERS:
;	  3704	!
;	  3705	       (DB : ref block field (D_FIELDS),
;	  3706		CTR : ref block,
;	  3707		TYPE,
;	  3708		STS)
;	  3709	!
;	  3710	! IMPLICIT INPUTS:
;	  3711	!
;	  3712	! IMPLICIT OUTPUTS:
;	  3713	!	None
;	  3714	!
;	  3715	! ROUTINE VALUE:
;	  3716	!
;	  3717		: DCP_DB_CTR_STS novalue =
;	  3718	!
;	  3719	! SIDE EFFECTS:
;	  3720	!	None
;	  3721	!--
;	  3722	
;	  3723	    begin
;	  3724	
;	  3725	    macro
;	  3726		NUM = 0, 0, 8, 1 %;
;	  3727	
;	  3728	    CTR [NUM] = .CTR [NUM] - 1;
;	  3729	
;	  3730	    if .CTR [NUM] neq 0
;	  3731	    then
;	  3732		begin
;	  3733	
;	  3734		if .CTR [NUM] lss 0 then CTR [NUM] = 0;
;	  3735	
;	  3736		return;
;	  3737		end;
;	  3738	
;	  3739	    if .DB [S_PROTOCOL_STATE] eql SS_RUNNING
;	  3740	    then
;	  3741		CTR [NUM] = 7;
;	  3742	
;	  3743	    begin
;	  3744	
;	  3745	    external routine
;	  3746		PARAMETER_CIRCUIT_COUNTERS : LINKAGE_DB novalue;
;	  3747	
;	P 3748	    $NM_DLL_EVENT (.TYPE, .DB [S_CIRCUIT_ENTITY],
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 143
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (63)
;	  3749		PARAMETER_CIRCUIT_COUNTERS (DB [D_TIM]));
;	  3750	    end;
;	  3751	    SEND_TRANSIENT_ERROR (DB [D_TIM], .STS);
;	  3752	    end;			!of routine TEST_THRESHOLD
						.GLOBL	CKCTRS
						.SBTTL	TEST.THRESHOLD
000000	105310 				TEST.THRESHOLD:
						DECB	(R0)				; CTR					3728
000002	001403 					BEQ	1$				;					3730
000004	100027 					BPL	3$				;					3734
000006	105010 					CLRB	(R0)				; CTR
000010	000207 					RTS	PC				;					3732
000012	126527  000002  000003 		1$:	CMPB	2(R5),#3			; *(DB),*				3739
000020	001002 					BNE	2$
000022	112710  000007 				MOVB	#7,(R0)				; *,CTR					3741
000026	004767  000000G			2$:	JSR	PC,$NLBEG			;					3749
000032	004767  000000G				JSR	PC,CKCTRS
000036	062703  000500 				ADD	#500,R3				; *,TYPE
000042	010300 					MOV	R3,R0
000044	016501  000126 				MOV	126(R5),R1			; *(DB),*
000050	004767  000000G				JSR	PC,$NLEND
000054	016603  000002 				MOV	2(SP),R3			; STS,*					3751
000060	004767  176442 				JSR	PC,SEND.TRANSIENT.ERROR
000064	000207 				3$:	RTS	PC				;					3697
; Routine Size:  27 words,	Routine Base:  $CODE$ + 11214
; Maximum stack depth per invocation:  1 word
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 144
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (64)
;	  3753	routine TEST_TRANSMIT_THRESHOLD
;	  3754	
;	  3755	!++
;	  3756	! FUNCTIONAL DESCRIPTION:
;	  3757	!
;	  3758	!
;	  3759	! FORMAL PARAMETERS:
;	  3760	!
;	  3761	       (DB : ref block field (D_FIELDS))
;	  3762	!
;	  3763	! IMPLICIT INPUTS:
;	  3764	!
;	  3765	! IMPLICIT OUTPUTS:
;	  3766	!	None
;	  3767	!
;	  3768	! ROUTINE VALUE:
;	  3769	!
;	  3770		: DCP_DB_N0 novalue =
;	  3771	!
;	  3772	! SIDE EFFECTS:
;	  3773	!	None
;	  3774	!--
;	  3775	
;	  3776	    begin
;	  3777	    TEST_THRESHOLD (DB [D_TIM], DB [S_TRANSMIT_THRESHOLD], 3, DLL$_TRANSMIT_THRESHOLD);
;	  3778	    end;			!of routine TEST_TRANSMIT_THRESHOLD
						.SBTTL	TEST.TRANSMIT.THRESHOLD
000000	004167  000000G			TEST.TRANSMIT.THRESHOLD:
						JSR	R1,$SAVE3			;					3753
000004	010046 					MOV	R0,-(SP)
000006	010500 					MOV	R5,R0				; DB,*					3777
000010	062700  000016 				ADD	#16,R0
000014	012746  100100 				MOV	#-77700,-(SP)
000020	012703  000003 				MOV	#3,R3
000024	004767  177662 				JSR	PC,TEST.THRESHOLD
000030	005726 					TST	(SP)+				;					3776
000032	012600 					MOV	(SP)+,R0			;					3753
000034	000207 					RTS	PC
; Routine Size:  15 words,	Routine Base:  $CODE$ + 11302
; Maximum stack depth per invocation:  7 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 145
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (65)
;	  3779	routine TIMCCB
;	  3780	
;	  3781	!++
;	  3782	! FUNCTIONAL DESCRIPTION:
;	  3783	!
;	  3784	!
;	  3785	! FORMAL PARAMETERS:
;	  3786	!
;	  3787	       (DB : ref block field (D_FIELDS),
;	  3788		CCB : ref block field (C_FIELDS))
;	  3789	!
;	  3790	! IMPLICIT INPUTS:
;	  3791	!
;	  3792	! IMPLICIT OUTPUTS:
;	  3793	!	None
;	  3794	!
;	  3795	! ROUTINE VALUE:
;	  3796	!
;	  3797		: MCB_DB_CCB novalue =
;	  3798	!
;	  3799	! SIDE EFFECTS:
;	  3800	!	None
;	  3801	!--
;	  3802	
;	  3803	    begin
;	  3804	
;	  3805	    map
;	  3806		CCB : ref block field (C_FIELDS);
;	  3807	
;	  3808	    label
;	  3809		RECOVERY;
;	  3810	
;	  3811	    do RECOVERY :
;	  3812		begin
;	  3813	
;	  3814		if .DB [DC_STOP_DEVICE]
;	  3815		then
;	  3816		    leave RECOVERY with STOP_DEVICE (.CCB, DB [D_TIM]);
;	  3817	
;	  3818		if .DB [DC_START_DEVICE]
;	  3819		then
;	  3820		    leave RECOVERY with START_DEVICE (.CCB, DB [D_TIM]);
;	  3821	
;	  3822		if .DB [S_USER_HANDLE] eql 0 then return $MCB_RETURN_CCB (.CCB);
;	  3823	
;	  3824		if .DB [SS_NOTIFY_STATE] or .DB [SS_NOTIFY_OFF]
;	  3825		then
;	  3826		    leave RECOVERY with SCHEDULE_STATE_AST (.CCB, DB [D_TIM]);
;	  3827	
;	  3828		if .DB [S_TRANSIENT_ERROR] neq 0
;	  3829		then
;	  3830		    leave RECOVERY with SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM]);
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 146
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (65)
;	  3831	
;	  3832		if .DB [S_PERSISTENT_ERROR] neq 0
;	  3833		then
;	  3834		    leave RECOVERY with SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM]);
;	  3835	
;	  3836		return $MCB_RETURN_CCB (.CCB);
;	  3837		end
;	  3838	    while $MCB_GET_CCB (CCB);
;	  3839	
;	  3840	    $MCB_REQUEST_CCB ();
;	  3841	    end;			!of routine TIMCCB
						.SBTTL	TIMCCB
000000	005746 				TIMCCB: TST	-(SP)				;					3779
000002	010416 				1$:	MOV	R4,(SP)
000004	032765  001000  000006 			BIT	#1000,6(R5)			; *,*(DB)				3814
000012	001403 					BEQ	2$
000014	004767  177256 				JSR	PC,STOP.DEVICE			;					3816
000020	000451 					BR	8$
000022	032765  002000  000006 		2$:	BIT	#2000,6(R5)			; *,*(DB)				3818
000030	001404 					BEQ	3$
000032	011604 					MOV	(SP),R4				;					3820
000034	004767  177150 				JSR	PC,START.DEVICE
000040	000441 					BR	8$
000042	005765  000130 			3$:	TST	130(R5)				; *(DB)					3822
000046	001432 					BEQ	7$
000050	032765  001000  000004 			BIT	#1000,4(R5)			; *,*(DB)				3824
000056	001004 					BNE	4$
000060	032765  000400  000004 			BIT	#400,4(R5)			; *,*(DB)
000066	001404 					BEQ	5$
000070	011604 				4$:	MOV	(SP),R4				;					3826
000072	004767  175152 				JSR	PC,SCHEDULE.STATE.AST
000076	000422 					BR	8$
000100	005765  000132 			5$:	TST	132(R5)				; *(DB)					3828
000104	001404 					BEQ	6$
000106	011604 					MOV	(SP),R4				;					3830
000110	004767  175244 				JSR	PC,SCHEDULE.TRANSIENT.AST
000114	000413 					BR	8$
000116	005765  000134 			6$:	TST	134(R5)				; *(DB)					3832
000122	001404 					BEQ	7$
000124	011604 					MOV	(SP),R4				;					3834
000126	004767  175000 				JSR	PC,SCHEDULE.PERSISTENT.AST
000132	000404 					BR	8$
000134	011604 				7$:	MOV	(SP),R4				;					3836
000136	004767  000000G				JSR	PC,$CCBRT
000142	000405 					BR	9$				;					3811
000144	004767  000000G			8$:	JSR	PC,$CCBGT			;					3838
000150	103314 					BHIS	1$
000152	004767  000000G				JSR	PC,$CCBRQ			;					3840
000156	005726 				9$:	TST	(SP)+				;					3779
000160	000207 					RTS	PC
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 147
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (65)
; Routine Size:  57 words,	Routine Base:  $CODE$ + 11340
; Maximum stack depth per invocation:  2 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 148
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (66)
;	  3842	routine TIMPWF
;	  3843	
;	  3844	!++
;	  3845	! FUNCTIONAL DESCRIPTION:
;	  3846	!
;	  3847	!
;	  3848	! FORMAL PARAMETERS:
;	  3849	!
;	  3850	       (DB : ref block field (D_FIELDS))
;	  3851	!
;	  3852	! IMPLICIT INPUTS:
;	  3853	!
;	  3854	! IMPLICIT OUTPUTS:
;	  3855	!	None
;	  3856	!
;	  3857	! ROUTINE VALUE:
;	  3858	!
;	  3859		: MCB_DB novalue =
;	  3860	!
;	  3861	! SIDE EFFECTS:
;	  3862	!	None
;	  3863	!--
;	  3864	
;	  3865	    begin
;	  3866	    NO_OPERATION;
;	  3867	    end;			!of routine TIMPWF
						.SBTTL	TIMPWF
000000	000207 				TIMPWF: RTS	PC				;					3842
; Routine Size:  1 word,	Routine Base:  $CODE$ + 11522
; Maximum stack depth per invocation:  0 words
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 149
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (67)
;	  3868	routine TIMLTM
;	  3869	
;	  3870	!++
;	  3871	! FUNCTIONAL DESCRIPTION:
;	  3872	!
;	  3873	!
;	  3874	! FORMAL PARAMETERS:
;	  3875	!
;	  3876	       (DB : ref block field (D_FIELDS))
;	  3877	!
;	  3878	! IMPLICIT INPUTS:
;	  3879	!
;	  3880	! IMPLICIT OUTPUTS:
;	  3881	!	None
;	  3882	!
;	  3883	! ROUTINE VALUE:
;	  3884	!
;	  3885		: MCB_DB novalue =
;	  3886	!
;	  3887	! SIDE EFFECTS:
;	  3888	!	None
;	  3889	!--
;	  3890	
;	  3891	    begin
;	  3892	
;	  3893	    if .DB [L_DUPLEX] neq DL_FULL
;	  3894	    then
;	  3895		begin
;	  3896		COUNTER_INCREMENT (DB, S_SELECTION_TIMEOUTS);
;	  3897		COUNTER_INCREMENT (DB, SS_NRT);
;	  3898		TEST_SELECT_THRESHOLD (DB [D_TIM]);
;	  3899		end;
;	  3900	
;	  3901	    case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
;	  3902		set
;	  3903		[SS_HALTED] :
;	  3904		    return;
;	  3905		[SS_ISTRT, SS_ASTRT, SS_RUNNING] : 
;	  3906	
;	  3907		    if .DB [L_DUPLEX] neq DL_FULL then RESYNCHRONIZE (DB [D_TIM]);
;	  3908	
;	  3909		[SS_MAINTENANCE] :
;	  3910		    RESYNCHRONIZE (DB [D_TIM]);
;	  3911		tes;
;	  3912	
;	  3913	    TERMINATE_SELECTION_INTERVAL (DB [D_TIM]);
;	  3914	    end;			!of routine TIMLTM
						.SBTTL	TIMLTM
000000	012701  000012 			TIMLTM: MOV	#12,R1				;					3893
000004	060501 					ADD	R5,R1				; DB,*
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 150
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (67)
000006	105711 					TSTB	(R1)
000010	001412 					BEQ	1$
000012	012700  000052 				MOV	#52,R0				;					3896
000016	060500 					ADD	R5,R0				; DB,*
000020	004767  000000G				JSR	PC,$IC8
000024	052765  000400  000052 			BIS	#400,52(R5)			; *,*(DB)				3897
000032	004767  177374 				JSR	PC,TEST.SELECT.THRESHOLD	;					3898
000036	116500  000002 			1$:	MOVB	2(R5),R0			; *(DB),*				3901
000042	006300 					ASL	R0
000044	066007  000342'				ADD	P.AAV(R0),PC			; Case dispatch
000050	000207 				2$:	RTS	PC				;					3904
000052	105711 				3$:	TSTB	(R1)				;					3907
000054	001402 					BEQ	5$
000056	004767  174452 			4$:	JSR	PC,RESYNCHRONIZE		;					3910
000062	004767  177166 			5$:	JSR	PC,TERMINATE.SELECTION.INTERVAL ;					3913
000066	000207 				6$:	RTS	PC				;					3868
; Routine Size:  28 words,	Routine Base:  $CODE$ + 11524
; Maximum stack depth per invocation:  1 word
000342						.PSECT	$PLIT$,  RO ,  D  
					P.AAV:						; CASE Table for TIMLTM+0044		3901
000342	000016 					.WORD	16				; [6$]
000344	000002 					.WORD	2				; [3$]
000346	000002 					.WORD	2				; [3$]
000350	000002 					.WORD	2				; [3$]
000352	000006 					.WORD	6				; [4$]
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 151
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (68)
;	  3915	routine TRANSMIT
;	  3916	
;	  3917	!++
;	  3918	! FUNCTIONAL DESCRIPTION:
;	  3919	!
;	  3920	!
;	  3921	! FORMAL PARAMETERS:
;	  3922	!
;	  3923	       (DB : ref block field (D_FIELDS),
;	  3924		CCB : ref block field (C_FIELDS))
;	  3925	!
;	  3926	! IMPLICIT INPUTS:
;	  3927	!
;	  3928	! IMPLICIT OUTPUTS:
;	  3929	!	None
;	  3930	!
;	  3931	! ROUTINE VALUE:
;	  3932	!
;	  3933		: MCB_DB_CCB novalue =
;	  3934	!
;	  3935	! SIDE EFFECTS:
;	  3936	!	None
;	  3937	!--
;	  3938	
;	  3939	    begin
;	  3940	    DB [D_USER_BUFFERS] = .DB [D_USER_BUFFERS] + 1;
;	  3941	
;	  3942	    if .DB [SS_ACTIVE]
;	  3943	    then
;	  3944		begin
;	  3945	
;	  3946		if .DB [S_PROTOCOL_STATE] eql SS_MAINTENANCE
;	  3947		then
;	  3948		    begin
;	  3949		    local
;	  3950			SAVE_MAP;
;	  3951		    SMAP$ (SAVE_MAP);
;	  3952		    MAP$ (.CCB [C_BIAS]);
;	  3953		    selectone ch$rchar (.CCB [C_ADDR]) of
;	  3954			set
;	  3955			[8, 12]:
;	  3956			    ch$wchar (28, ch$plus (.CCB [C_ADDR], 1));
;	  3957			tes;
;	  3958		    MAP$ (.SAVE_MAP);
;	  3959		    end;
;	  3960	
;	  3961		$MCB_QUEUE_CCB (DB [S_WAITING_FOR_TRANSMIT], .CCB);
;	  3962		SEND_DATA (DB [D_TIM]);
;	  3963		end
;	  3964	    else
;	  3965		SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_ABORTED);
;	  3966	
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 152
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (68)
;	  3967	    end;			!of routine TRANSMIT
						.SBTTL	TRANSMIT
011614						.PSECT	$CODE$,  RO 
000000	010501 				TRANSMIT:
						MOV	R5,R1				; *,DB					3915
000002	005261  000136 				INC	136(R1)				; *(DB)					3940
000006	032761  002000  000004 			BIT	#2000,4(R1)			; *,*(DB)				3942
000014	001443 					BEQ	4$
000016	126127  000002  000004 			CMPB	2(R1),#4			; *(DB),*				3946
000024	001025 					BNE	3$
000026	016702  000000G				MOV	KISAR6,R2			; *,SAVE.MAP				3951
000032	016467  000016  000000G			MOV	16(R4),KISAR6			; *(CCB),*				3952
000040	005000 					CLR	R0				;					3953
000042	157400  000020 				BISB	@20(R4),R0			; *(CCB),*
000046	020027  000010 				CMP	R0,#10
000052	001403 					BEQ	1$
000054	020027  000014 				CMP	R0,#14
000060	001005 					BNE	2$
000062	016400  000020 			1$:	MOV	20(R4),R0			; *(CCB),*				3956
000066	112760  000034  000001 			MOVB	#34,1(R0)
000074	010267  000000G			2$:	MOV	R2,KISAR6			; SAVE.MAP,*				3958
000100	010105 				3$:	MOV	R1,R5				; DB,*					3961
000102	062705  000114 				ADD	#114,R5
000106	010503 					MOV	R5,R3
000110	004767  000000G				JSR	PC,$CMQIN
000114	010105 					MOV	R1,R5				; DB,*					3962
000116	004767  175072 				JSR	PC,SEND.DATA
000122	000207 					RTS	PC				;					3942
000124	010105 				4$:	MOV	R1,R5				; DB,*					3965
000126	012703  100030 				MOV	#-77750,R3
000132	004767  175006 				JSR	PC,SCHEDULE.TRANSMIT
000136	000207 					RTS	PC				;					3915
; Routine Size:  48 words,	Routine Base:  $CODE$ + 11614
; Maximum stack depth per invocation:  1 word
;	  3968	end
;	  3969	eludom
;					OTS external references
						.GLOBL	$SAVE3
;					PSECT SUMMARY
;
;	Psect Name			Words	  Attributes
DCP								25-Jan-1983 09:57:24	TOPS-20 Bliss-16 3(552)		    Page 153
X05180								30-Dec-1982 02:25:50	NETPKG:<DRIVERS>DCP.B16.9 (68)
;	 $PLIT$				  118	    RO ,  D  ,  LCL,  REL,  CON
;	 ......				   16	    RW ,  D  ,  LCL,  REL,  CON
;	 $CODE$				 2550	    RO ,  I  ,  LCL,  REL,  CON
;				LIBRARY STATISTICS
;
;					     -------- Symbols --------    Blocks
;	File				     Total    Loaded   Percent      Read
;
;  NETPKG:<V3P0>MCBLIB.L16.7		       372        87        23         0
;  NETPKG:<MCB>XPORTX.L16.15		       599         9         1         0
;  NETPKG:<MCB>NMXLIB.L16.13		       200        13         6         0
;  NETPKG:<DRIVERS>DCPDAT.L16.2		       186       155        83         0
; Size:		2550 code + 134 data words
; Run Time:	   00:52.3
; Elapsed Time:	   02:53.8
; Memory Used:	65 pages
; Compilation Complete