Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/drivers/dmc.lst
There are no other files named dmc.lst in the archive.
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page   1
								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)

;	  0001	module DMC (	! Driver for DMC11
;	  0002			ident = 'X04690',
;	  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 DMC Driver
;	  0031	!
;	  0032	! ABSTRACT:
;	  0033	!
;	  0034	!	This is the DLC process which services the DMC11 synchronous
;	  0035	!	line interface.
;	  0036	!
;	  0037	! ENVIRONMENT: MCB V3.0
;	  0038	!
;	  0039	! AUTHOR: Alan D. Peckham	CREATION DATE: 7-Apr-80
;	  0040	!
;	  0041	! MODIFIED BY:
;	  0042	!
;	  0043	!	Maynard, 10-Feb-78: Version 1
;	  0044	!	Maynard, 29-Feb-79: Version 3
;	  0045	!	Alan D. Peckham, 7-Apr-80: Version 4
;	  0046	! 01	-  Update to operate under MCB V3.0
;	  0047	! 02	- Check DS.MC properly in GET_PORT.
;	  0048	!	  Clear DS.MC after DMC is set up in CTLSTR.
;	  0049	!	  Make initialization handle D.XBFC properly.
;	  0050	!	  Correct queue address calculation in CTLSTP.
;	  0051	!	  Receive buffer lengths come from .RDBSZ, not C.CNT!
;	  0052	!	  Save the CTL/STP CCB while flushing the queues.
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page   2
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)

;	  0053	! 03	- Do not copy transmit buffer if single segment message.
;	  0054	! 04	- Change call JMPs to CALLRs and add macro for debugging.
;	  0055	! 05	- Seperate DLC and DDM dispatch tables to avoid C.MOD bug.
;	  0056	! 06	- Put routines in alphabetical order.
;	  0057	!	  Eliminate CALLRs.
;	  0058	!	  Fix bit test in CTLSTP.
;	  0059	!	  Master clear DMC on fatal errors in CONTROL_OUT.
;	  0060	!	  Turn off output interrupts during interrupt service.
;	  0061	!	  Ignore output interrupt while DMC inactive.
;	  0062	! 07	- Insert SIGNALs for empty queues.
;	  0063	! 08	- Rewrite in BLISS and update for MCB V3.1.
;	  0064	! 09	- Add internal event logging.
;	  0065	! 10	- Map the data base and add Network Management code.
;	  0066	! 11	- Add Network Management event logging.
;	  0067	! 12	- Clean up current Network Management code.
;	  0068	! 13	- Signal on event logging buffer too small.
;	  0069	! 14	- Add long timer control.
;	  0070	! 15	- Compensate for UNWIND bug in condition handling.
;	  0071	! 16	- Process multiple output transfers during output interrupt.
;	  0072	!	  Allow master clear to fail.
;	  0073	! 17	- Fix interrupt vector assignment bug in DMCNMX.
;	  0074	!	  Allow number of receive buffers to be specified in CETAB.
;	  0075	! 18	- Temporarily remove RQI test in GET_PORT to allow lost
;	  0076	!	  RDYI recovery.
;	  0077	! 19	- Identify line and circuit to NMX in DMCNMX.
;	  0078	! 20	- Move BASE-IN and CONTROL-IN in test loop in SET_PORT.
;	  0079	! 21	- Argh! Create common interrupt service routine which
;	  0080	!	  processes both input and output requests.
;	  0081	! 22	- Streamline linkages.
;	  0082	!	  Do not SYNCH unless interrupt enable is on.
;	  0083	! 23	- Do not reset IEO during interrupt handling (no-no on DMR).
;	  0084	!	  Rewrite port handling code.
;	  0085	! 24	- Rework HALT command handling.
;	  0086	!	  Reset certain variables on CTL/STR.
;	  0087	! 25	- Flush transmits before waiting for the cows to come home in CTLSTP.
;	  0088	! 26	- Hunting for bugs. Rework timer code.
;	  0089	!	  Rework CCB control function handling.
;	  0090	! 27	- Experimental bug fixes to look for shutdown bug.
;	  0091	! 29	- Correct event logging bugs.
;	  0092	! 30	- Add code to record program flow of shutdown.
;	  0093	!	  Verify message lengths by examination in RECEIVE_OUT.
;	  0094	!	  Verify receive buffer addresses on RECEIVE_OUT.
;	  0095	! 31	- Remove message length verification.
;	  0096	!	  Add transmit buffer address verification in TRANSMIT_OUT.
;	  0097	! 32	- Fix transmit buffer address verification in TRANSMIT_OUT.
;	  0098	!	  Optimize some generated code.
;	  0099	! 33	- Close window in CTL/STP/STR which allowed CTL deadlock.
;	  0100	! 34	- Do not set function code during port load in SERVICE_DMC
;	  0101	!	  in order to avoid clearing RDI.
;	  0102	! 35	- Remove DLC interface.
;	  0103	! 36	- Add controller loopback support.
;	  0104	! 37	- Add 96+5/13 event for NM line attention.
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page   3
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)

;	  0105	! 38	- Distinguish between overrun due to no buffer available
;	  0106	!	  and due to transmission threshold.
;	  0107	! 39	- Finish DLC interface removal.
;	  0108	!	  Add parameter to SHOW LINE CHARACTERISTICS.
;	  0109	! 40	- Do NOT send state when there is no circuit owner.
;	  0110	! 41	- Do not set half duplex when in maintenance mode.
;	  0111	! 42	- Add DMR line/device name display and support for DMR process.
;	  0112	! 43	- Adapt to using new UNIBUS address conversion routines.
;	  0113	!	  Adjust buffer address checking for DMC bug.
;	  0114	! 44	- Eliminate extra OFF notification in CURRENT_STATUS.
;	  0115	!	  Optimize CHECK_BA.
;	  0116	! 45	- Add device and performance error counter support.
;	  0117	!	  Fix control CCB handling - CTLNXT had not been updated.
;	  0118	! 46	- Do not declare interrupt lost in TIMLTM if synchronization
;	  0119	!	  in progress.
;	  0120	! 47	- Turn off FLUSHING_DMC when DMC shuts down.
;	  0121	! 48	- More work on non-existent device notification.
;	  0122	! 49	- Cut down on extraneous functionality to save space.
;	  0123	! 50	- Set threshold errors to display circuit counters.
;	  0124	! 51	- Handle counters by copying when zeroed and using differences
;	  0125	!	  for reporting.
;	  0126	! 52	- Add "counters zeroed" event.
;	  0127	! 53	- Remove "counters zeroed" event.
;	  0128	! 54	- Update to NM V3.0.0 .
;	  0129	! 55	- Set default DMC receive buffers to 7 in DMCINI.
;	  0130	!	  Add MAXIMUM RECEIVE BUFFERS parameter support in DMCNMX.
;	  0131	! 56	- Schedule DC_CONTROL_IN after ZERO_x_COUNTERS in SET_INPUT_REQUEST
;	  0132	!	  if DMC is only DD_HALTED.
;	  0133	! 57	- Disable TRANSMIT_THRESHOLD_ERROR notification on O_RUN.
;	  0134	!	  Do not force HALT state for ZERO_COUNTERS.
;	  0135	! 58	- Support new system specific line counters.
;	  0136	! 59	- De-commit half-duplex.
;	  0137	! 60	- Poke our DEVTYP into any MOP message requiring it.
;	  0138	! 61	- Handle change in NMX interface in DMCINI.
;	  0139	! 62	- Re-enable half-duplex code.
;	  0140	! 63	- Disable time out for first transmit.  This is because protocol
;	  0141	!	  may not have been established yet.
;	  0142	! 64	- Make sure flag is cleared at appropriate places.
;	  0143	! 65	- Fix display of DMC counter #1021 in DMCNMX.
;	  0144	! 66	- Modify CTLSTR to return the CIRCUIT COST to XPT in C_PRM1.
;	  0145	! 67	- We got the meaning of the timer bit in a control-in wrong -
;	  0146	!	  the 1 and 3 second timers were reversed.
;	  0147	! 68	- Fix TIMLTM to do a transmit timeout on maintenance messages.
;	  0148	!
;	  0149	!	Dennis Brannon, 23-Sep-83: Version 4 autopatch tape 7
;	  0150	! 69	- Fix CONTROL_OUT to reinitialize DMR/DMC after it turns the
;	  0151	!	  circuit off when a DDCMP START is received.
;	  0152	!--
;	  0153	!
;	  0154	! INCLUDE FILES:
;	  0155	!
;	  0156	
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page   4
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)

;	  0157	library 'MCBLIB';
;	  0158	
;	  0159	library 'XPORTX';
;	  0160	
;	  0161	$SHOW (NONE)
;	  0162	require 'DLLLIB';
;	  0416	
;	  0417	library 'NMXLIB';
;	  0418	
;	  0419	library 'DMCDAT';
;	  0420	
;	  0421	!
;	  0422	! TABLE OF CONTENTS:
;	  0423	!
;	  0424	
;	  0425	linkage
;	  0426	    CBIT_LINKAGE = jsr (register = 4) : clearstack valuecbit,
;	  0427	    DMC_CCB_DB = jsr (register = 4, register = 5) : nopreserve (4),
;	  0428	    DMC_CCB_DB_STS = jsr (register = 4, register = 5, register = 0) :
;	  0429		nopreserve (4),
;	  0430	    DMC_DB = jsr (register = 5) : nopreserve (0, 1, 2, 3, 4),
;	  0431	    DMC_DB_BIAS_ADDR = jsr (register = 5, register = 2, register = 3) :
;	  0432		nopreserve (0, 2, 3),
;	  0433	    DMC_DB_CCB = jsr (register = 5, register = 4) : nopreserve (4),
;	  0434	    DMC_DB_ERR = jsr (register = 5, register = 3) : nopreserve (3, 4),
;	  0435	    DMC_DB_LOW_HIGH = jsr (register = 5) : nopreserve (2, 3, 4),
;	  0436	    DMC_REG = jsr (register = 1) : nopreserve (1),
;	  0437	    DMC_DB_STS = jsr (register = 5, register = 3) : nopreserve (3, 4);
;	  0438	
;	  0439	forward routine
;	  0440	    BASE_IN : DMC_DB_LOW_HIGH novalue,
;	  0441	    CHECK_BA : DMC_DB_BIAS_ADDR,
;	  0442	    CONTROL_OUT : DMC_DB_ERR novalue,
;	  0443	    CTLNXT : LINKAGE_DB novalue,
;	  0444	    CTLSTP : MCB_DB_CCB novalue,
;	  0445	    CTLSTR : MCB_DB_CCB novalue,
;	  0446	    CURRENT_STATUS : LINKAGE_DB,
;	  0447	    DEVICE_SHUT_DOWN : LINKAGE_DB novalue,
;	  0448	    DLLINI : DMC_DB_CCB novalue,
;	  0449	    DLLMOP : DMC_DB_CCB novalue,
;	  0450	    DLLSTP : DMC_DB_CCB novalue,
;	  0451	    DMC_INTERRUPT : MCB_INTERRUPT novalue,
;	  0452	    DMC_SYNCHRONIZE : MCB_DB novalue,
;	  0453	    DMCCTL : MCB_DB_CCB_MOD novalue,
;	  0454	    DMCDB : CALL$ novalue,
;	  0455	    DMCRCE : MCB_DB_CCB novalue,
;	  0456	    DMCTIM : MCB_DB_MOD novalue,
;	  0457	    DMCXME : MCB_DB_CCB_MOD novalue,
;	  0458	    FLUSH_QUEUES : DMC_DB novalue,
;	  0459	    MASTER_CLEAR : LINKAGE_DB,
;	  0460	    OUTPUT_TRANSFER : LINKAGE_DB novalue,
;	  0461	    PARAMETER_DEVICE_REGISTERS : DMC_REG novalue,
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page   5
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)

;	  0462	    QUEUE_TRANSMIT : DMC_DB_CCB novalue,
;	  0463	    RECEIVE_IN : DMC_DB_LOW_HIGH novalue,
;	  0464	    RECEIVE_OUT : DMC_DB_LOW_HIGH novalue,
;	  0465	    RESET_TIMER : LINKAGE_DB novalue,
;	  0466	    SCHEDULE_PERSISTENT_AST : DMC_CCB_DB novalue,
;	  0467	    SCHEDULE_RECEIVE : DMC_CCB_DB novalue,
;	  0468	    SCHEDULE_STATE_AST : DMC_CCB_DB novalue,
;	  0469	    SCHEDULE_TRANSIENT_AST : DMC_CCB_DB novalue,
;	  0470	    SCHEDULE_TRANSMIT : DMC_CCB_DB_STS novalue,
;	  0471	    SEND_PERSISTENT_ERROR : DMC_DB_STS novalue,
;	  0472	    SEND_STATE : DMC_DB novalue,
;	  0473	    SEND_TRANSIENT_ERROR : DMC_DB_STS novalue,
;	  0474	    SERVICE_DMC : MCB_DB novalue,
;	  0475	    SET_INPUT_REQUEST : LINKAGE_DB novalue,
;	  0476	    SET_PORT : LINKAGE_DB novalue,
;	  0477	    TIMCCB : MCB_DB_CCB novalue,
;	  0478	    TIMLTM : MCB_DB novalue,
;	  0479	    TIMPIN : MCB_DB novalue,
;	  0480	    TIMPWF : MCB_DB novalue,
;	  0481	    TIMRDB : MCB_DB_CCB novalue,
;	  0482	    TRANSMIT_IN : DMC_DB_LOW_HIGH novalue,
;	  0483	    TRANSMIT_OUT : DMC_DB_LOW_HIGH novalue,
;	  0484	    ZERO_CIRCUIT_COUNTERS : LINKAGE_DB novalue,
;	  0485	    ZERO_LINE_COUNTERS : LINKAGE_DB novalue;
;	  0486	
;	  0487	global bind routine
;	  0488	    DMCIN = DMC_INTERRUPT : MCB_INTERRUPT novalue,
;	  0489	    DMCOUT = DMC_INTERRUPT : MCB_INTERRUPT novalue;
;	  0490	
;	  0491	!
;	  0492	! MACROS:
;	  0493	!
;	  0494	
;	  0495	macro
;	M 0496	    CHANGE_PROTOCOL_STATE (DUMMY, STATE, REASON) =
;	M 0497		begin
;	M 0498		literal LCL = 0, RMT = 1;
;	M 0499		$NM_DLL_EVENT (REASON, .DB [D_CIRCUIT_ENTITY],
;	M 0500		    PARAMETER_C_1 (0, DB [D_PROTOCOL_STATE]),
;	M 0501		    DB [D_PROTOCOL_STATE] = STATE,
;	M 0502		    PARAMETER_C_1 (1, DB [D_PROTOCOL_STATE]));
;	M 0503		SEND_STATE (DB [D_TIM]);
;	  0504		end %;
;	  0505	
;	  0506	macro
;	M 0507	    FLUSH_QUEUE (QUEUE, RETURN_CALL) =
;	M 0508		while 1 eql 1 do
;	M 0509		    begin
;	M 0510	
;	M 0511		    local
;	M 0512			CCB;
;	M 0513	
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page   6
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)

;	M 0514		    if not CMQRM$ (QUEUE, CCB) then exitloop;
;	M 0515	
;	M 0516		    RETURN_CALL (.CCB %if not %null (%remaining) %then , %remaining %fi);
;	  0517		    end %;
;	  0518	
;	  0519	!
;	  0520	! EQUATED SYMBOLS:
;	  0521	!
;	  0522	
;	  0523	literal
;	  0524	    TRUE = 1 EQL 1,
;	  0525	    FALSE = 1 EQL 0,
;	  0526	    NO_OPERATION = 0;
;	  0527	
;	  0528	macro
;	  0529	    C_HANDLE = %fieldexpand (C_LIX, 0), 0, 16, 0 %;
;	  0530	
;	  0531	global literal
;	  0532	    %name ('DD.INI') = DD_CLEARED,
;	  0533	    %name ('D.LEN') = %fieldexpand (D_BUF, 0)^1;
;	  0534	
;	  0535	!
;	  0536	! OWN STORAGE:
;	  0537	!
;	  0538	
;	  0539	external routine
;	  0540	    $DSPCR : novalue;
;	  0541	
;	  0542	bind
;	P 0543	    DMC_TABLE = TABLE$ ($DSPCR, FC_CCP,
;	P 0544		(FC_XME, DMCXME),			!  Transmit enable
;	P 0545		(FC_RCE, DMCRCE),			!  Receive enable
;	P 0546		(FC_CTL, DMCCTL),			!  Control enable
;	  0547		(FC_TIM, DMCTIM));			!  Timeout
;	  0548	
;	  0549	
;	P 0550	$MCB_PROCESS (
;	P 0551	    NAME = DMC,					! Process name
;	  0552	    DLC_DISPATCH = DMC_TABLE)			! DLC dispatch vector
;	  0553	!
;	  0554	! EXTERNAL REFERENCES:
;	  0555	!
;	  0556	
;	  0557	external routine
;	  0558	    DMCDBI : novalue,
;	  0559	    DMCDVI,
;	  0560	    DMCNM : MCB_DB_CCB novalue,
;	  0561	    DMCNMI;
;	  0562	
;	  0563	external
;	  0564	    MCB$GA_PROCESS_DISPATCH,
;	  0565	    MCB$GAW_PROCESS_DATA_BASE : vector [2],
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page   7
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)

;	  0566	    MCB$GW_PROCESS_HANDLE,
;	  0567	    MCB$GW_RDB_SIZE;		! Size of RDB buffer.
;	  0568	
;	  0569	bind
;	  0570	    DB_BIAS = MCB$GAW_PROCESS_DATA_BASE [0];
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page   8
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (2)

;	  0571	routine BASE_IN (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
;	  0572	
;	  0573	!++
;	  0574	! FUNCTIONAL DESCRIPTION:
;	  0575	!
;	  0576	!
;	  0577	! FORMAL PARAMETERS:
;	  0578	!	DB = address of DMC data base.
;	  0579	!
;	  0580	! IMPLICIT INPUTS:
;	  0581	!	None
;	  0582	!
;	  0583	! IMPLICIT OUTPUTS:
;	  0584	!	None
;	  0585	!
;	  0586	! ROUTINE VALUE:
;	  0587	! COMPLETION CODES:
;	  0588	!	None
;	  0589	!
;	  0590	! SIDE EFFECTS:
;	  0591	!	None
;	  0592	!--
;	  0593	
;	  0594	    begin
;	  0595	    GET_DMC_DATA_BASE (DB)
;	  0596	
;	  0597	    local
;	  0598		TEMP;
;	  0599	
;	  0600	    $MCB_CONVERT_TO_UBA_ADDRESS ((.DB_BIAS, DB [D_LNTB]), .LOW, TEMP);
;	  0601	    .HIGH = (TEMP = .TEMP^%fieldexpand (BA_HIGH, 1));
;	  0602	    end;			!of routine BASE_IN


						.TITLE	DMC
						.IDENT	/X04690/


000000						.PSECT	......,  D  
000000	015413 				HEADER: .RAD50	/DMC/
000002	000403 					.WORD	403
000004	000000 					.WORD	0
000006	000000 					.WORD	0
000010	000000 					.WORD	0
000012	000000G					.WORD	.DSPCR
000014	000000'					.WORD	DMC.TABLE
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
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page   9
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (2)

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	DMCXME
000004	000000V					.WORD	DMCRCE
000006	000000G					.WORD	$DSPCR
000010	000000V					.WORD	DMCCTL
000012	000000V					.WORD	DMCTIM
000014	000000G					.WORD	$DSPCR
000016	000000G					.WORD	$DSPCR
000020	000000G					.WORD	$DSPCR
000022	000000G					.WORD	$DSPCR


						.GLOBL	$DSPCR, .DSPCR, MCB$V0, MCB$V1
						.GLOBL	DMCDBI, DMCDVI, DMCNM, DMCNMI
						.GLOBL	.CRDSP, .CRDAT, .CRPIX, .RDBSZ
						.GLOBL	$PHY18


	000005 				DD.INI==	    5
	000616 				D.LEN==		    616
	000000'				DMC.TABLE=	    P.AAA


						.SBTTL	BASE.IN
000000						.PSECT	$CODE$,  RO 

000000	010546 				BASE.IN:MOV	R5,-(SP)			;					0571
000002	062705  000154 				ADD	#154,R5				; *,DB					0600
000006	016702  000000G				MOV	.CRDAT,R2
000012	010503 					MOV	R5,R3
000014	004767  000000G				JSR	PC,$PHY18
000020	010376  000006 				MOV	R3,@6(SP)			; *,LOW
000024	072227  000016 				ASH	#16,R2				;					0601
000030	010276  000004 				MOV	R2,@4(SP)			; TEMP,HIGH
000034	012605 					MOV	(SP)+,R5			;					0571
000036	000207 					RTS	PC

; Routine Size:  16 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  2 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  10
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (3)

;	  0603	routine CHECK_BA (DB, BIAS, ADDR) : DMC_DB_BIAS_ADDR =
;	  0604	
;	  0605	!++
;	  0606	! FUNCTIONAL DESCRIPTION:
;	  0607	!
;	  0608	!
;	  0609	! FORMAL PARAMETERS:
;	  0610	!	?
;	  0611	!
;	  0612	! IMPLICIT INPUTS:
;	  0613	!	None
;	  0614	!
;	  0615	! IMPLICIT OUTPUTS:
;	  0616	!	None
;	  0617	!
;	  0618	! ROUTINE VALUE:
;	  0619	! COMPLETION CODES:
;	  0620	!	None
;	  0621	!
;	  0622	! SIDE EFFECTS:
;	  0623	!	None
;	  0624	!--
;	  0625	
;	  0626	    begin
;	  0627	    GET_DMC_DATA_BASE (DB)
;	  0628	
;	  0629	    bind
;	  0630		BUF = DB [D_OUTPUT_DATA] : block field (DMC_FIELDS);
;	  0631	
;	  0632	    local
;	  0633		HIGH,
;	  0634		LOW;
;	  0635	
;	  0636	    if .ADDR eqla 0 then return TRUE;
;	  0637	
;	  0638	    $MCB_CONVERT_TO_UBA_ADDRESS ((.BIAS, .ADDR), LOW, HIGH);
;	  0639	
;	  0640	    if .LOW nequ .BUF [$SUB_FIELD (SEL4, BA_LOW)] then return FALSE;
;	  0641	
;	  0642	    if not .DB [DF_DMR] then return TRUE;
;	  0643	
;	  0644	    if .HIGH eqlu .BUF [$SUB_FIELD (SEL6, BA_HIGH)] then return TRUE;
;	  0645	
;	  0646	    FALSE
;	  0647	    end;				! of routine CHECK_BA


						.SBTTL	CHECK.BA
000000	005703 				CHECK.BA:
						TST	R3				; ADDR					0636
000002	001422 					BEQ	1$
000004	004767  000000G				JSR	PC,$PHY18			;					0638
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  11
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (3)

000010	020365  000026 				CMP	R3,26(R5)			; LOW,*(DB)				0640
000014	001020 					BNE	2$
000016	032765  010000  000032 			BIT	#10000,32(R5)			; *,*(DB)				0642
000024	001411 					BEQ	1$
000026	016503  000030 				MOV	30(R5),R3			; *(DB),*				0644
000032	072327  177762 				ASH	#-16,R3
000036	042703  177774 				BIC	#177774,R3
000042	010200 					MOV	R2,R0				; HIGH,*
000044	020003 					CMP	R0,R3
000046	001003 					BNE	2$
000050	012700  000001 			1$:	MOV	#1,R0
000054	000207 					RTS	PC
000056	005000 				2$:	CLR	R0				;					0603
000060	000207 					RTS	PC

; Routine Size:  25 words,	Routine Base:  $CODE$ + 0040
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  12
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)

;	  0648	routine CONTROL_OUT (DB, ERROR) : DMC_DB_ERR novalue =
;	  0649	
;	  0650	!++
;	  0651	! FUNCTIONAL DESCRIPTION:
;	  0652	!
;	  0653	!
;	  0654	! FORMAL PARAMETERS:
;	  0655	!	DB = address of DMC data base.
;	  0656	!
;	  0657	! IMPLICIT INPUTS:
;	  0658	!	None
;	  0659	!
;	  0660	! IMPLICIT OUTPUTS:
;	  0661	!	None
;	  0662	!
;	  0663	! ROUTINE VALUE:
;	  0664	! COMPLETION CODES:
;	  0665	!	None
;	  0666	!
;	  0667	! SIDE EFFECTS:
;	  0668	!	None
;	  0669	!--
;	  0670	
;	  0671	    begin
;	  0672	    GET_DMC_DATA_BASE (DB)
;	  0673	
;	  0674	    map
;	  0675		ERROR : block [1] field (DMC_FIELDS);
;	  0676	
;	  0677	    if .ERROR [O_RUN]			! Buffer not available
;	  0678	    then
;	  0679		begin
;	  0680	
;	  0681		if FALSE %(.DB [D_ASSIGNED_RECEIVE_COUNT] neq 0)%
;	  0682		then
;	  0683		    SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_TRANSMIT_THRESHOLD);
;	  0684	
;	  0685		return;
;	  0686		end;
;	  0687	
;	  0688	    if .ERROR [DATA_CK]			! Non-fatal error
;	  0689	    then
;	  0690		begin
;	  0691	
;	  0692		external routine
;	  0693		    PARAMETER_CIRCUIT_COUNTERS : LINKAGE_DB novalue;
;	  0694	
;	P 0695		$NM_DLL_EVENT (4, .DB [D_CIRCUIT_ENTITY], ! Transmit Threshold Error
;	  0696		    PARAMETER_CIRCUIT_COUNTERS (DB [D_TIM]));
;	  0697	
;	  0698		SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_RECEIVE_THRESHOLD);
;	  0699		return;
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  13
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)

;	  0700		end;
;	  0701	
;	  0702	    if .ERROR [DISC]			! Non-fatal error
;	  0703	    then
;	  0704		begin
;	  0705	
;	  0706		local
;	  0707		    STATE;
;	  0708	
;	  0709		STATE = 0;
;	P 0710		$NM_PLL_EVENT (0, .DB [D_LINE_ENTITY], ! Data Set Ready Transition
;	  0711		    PARAMETER_C_1 (1, STATE));
;	  0712		return;
;	  0713		end;
;	  0714	
;	  0715	    if .ERROR [TIME_OUT]		! Non-fatal error
;	  0716	    then
;	  0717		begin
;	  0718	
;	  0719		external routine
;	  0720		    PARAMETER_CIRCUIT_COUNTERS : LINKAGE_DB novalue;
;	  0721	
;	P 0722		$NM_DLL_EVENT (3, .DB [D_CIRCUIT_ENTITY], ! Transmit Threshold Error
;	  0723		    PARAMETER_CIRCUIT_COUNTERS (DB [D_TIM]));
;	  0724	
;	  0725		SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_TRANSMIT_THRESHOLD);
;	  0726		return;
;	  0727		end;
;	  0728	
;	  0729	    if .ERROR [PROC_ERR] and .DB [DF_FLUSHING_DMC] ! Procedure error
;	  0730	    then
;	  0731		begin
;	  0732		DB [DF_FLUSHING_DMC] = FALSE;
;	  0733		DB [D_DEVICE_STATE] = DD_HALTED;
;	  0734		return;
;	  0735		end;
;	  0736	
;	  0737	    if .ERROR [STR_RCVD]
;	  0738	    then
;	  0739		begin
;	  0740	
;	  0741		if .DB [D_PROTOCOL_STATE] eqlu DS_MAINTENANCE
;	  0742		then
;	  0743		    $NM_DLL_EVENT (2, .DB [D_CIRCUIT_ENTITY]);
;	  0744	
;	  0745		SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_START_RECEIVED);
;	  0746		DEVICE_SHUT_DOWN (DB [D_TIM]);
;	  0747		SET_PORT (DB [D_TIM]);
;	  0748		return;
;	  0749		end;
;	  0750	
;	  0751	    if .ERROR [DATA_LOST]
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  14
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)

;	  0752	    then
;	  0753		begin
;	P 0754		$NM_DLL_EVENT (9, .DB [D_CIRCUIT_ENTITY],
;	  0755		    PARAMETER_DU_2 (8, MCB$GW_RDB_SIZE));
;	  0756		DEVICE_SHUT_DOWN (DB [D_TIM]);
;	  0757		return;
;	  0758		end;
;	  0759	
;	  0760	    if .ERROR [MNT_RCVD]		! Fatal error
;	  0761	    then
;	  0762		begin
;	  0763		$NM_DLL_EVENT (96^6 + 13, .DB [D_CIRCUIT_ENTITY]);
;	  0764		SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_MAINTENANCE_RECEIVED);
;	  0765		DEVICE_SHUT_DOWN (DB [D_TIM]);
;	  0766		return;
;	  0767		end;
;	  0768	
;	  0769	    if .ERROR [NXM]			! Fatal error
;	  0770	    then
;	  0771		begin
;	P 0772		$NM_PLL_EVENT (3, .DB [D_LINE_ENTITY], ! Memory Access Error
;	  0773		    PARAMETER_DEVICE_REGISTERS (DB [D_OUTPUT_DATA]));
;	  0774		COUNTER_INCREMENT (DB, D_NXM_TO_DEVICE);
;	  0775		COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
;	  0776		SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
;	  0777		DEVICE_SHUT_DOWN (DB [D_TIM]);
;	  0778		return;
;	  0779		end;
;	  0780	
;	P 0781	    $NM_PLL_EVENT (4, .DB [D_LINE_ENTITY],
;	  0782		PARAMETER_DEVICE_REGISTERS (DB [D_OUTPUT_DATA]));
;	  0783	    SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
;	  0784	
;	  0785	    if .ERROR [PROC_ERR]
;	  0786	    then
;	  0787		begin
;	  0788		COUNTER_INCREMENT (DB, D_PROCEDURE_ERROR);
;	  0789		COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
;	  0790		DEVICE_SHUT_DOWN (DB [D_TIM]);
;	  0791		return;
;	  0792		end;
;	  0793	
;	  0794	    COUNTER_INCREMENT (DB, D_INVALID_REGISTER_CONTENTS);
;	  0795	    COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
;	  0796	    MASTER_CLEAR (DB [D_TIM]);
;	  0797	    end;			!of routine CONTROL_OUT


						.GLOBL	CKCTRS, $NLBEG, $NLEND, $DPC1
						.GLOBL	$DPDU2, $IC8
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  15
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)

						.SBTTL	CONTROL.OUT
000000	010146 				CONTROL.OUT:
						MOV	R1,-(SP)			;					0648
000002	010246 					MOV	R2,-(SP)
000004	010546 					MOV	R5,-(SP)
000006	010302 					MOV	R3,R2				; *,ERROR
000010	010546 					MOV	R5,-(SP)
000012	032702  000004 				BIT	#4,R2				; *,ERROR				0677
000016	001177 					BNE	9$				;					0679
000020	032702  000001 				BIT	#1,R2				; *,ERROR				0688
000024	001420 					BEQ	1$
000026	004767  000000G				JSR	PC,$NLBEG			;					0696
000032	011605 					MOV	(SP),R5
000034	004767  000000G				JSR	PC,CKCTRS
000040	012700  000504 				MOV	#504,R0
000044	011603 					MOV	(SP),R3
000046	016301  000100 				MOV	100(R3),R1
000052	004767  000000G				JSR	PC,$NLEND
000056	011605 					MOV	(SP),R5				;					0698
000060	012703  100110 				MOV	#-77670,R3
000064	000446 					BR	3$
000066	032702  000100 			1$:	BIT	#100,R2				; *,ERROR				0702
000072	001421 					BEQ	2$
000074	005001 					CLR	R1				; STATE					0709
000076	004767  000000G				JSR	PC,$NLBEG			;					0711
000102	012746  000001 				MOV	#1,-(SP)
000106	110100 					MOVB	R1,R0				; STATE,*
000110	004767  000000G				JSR	PC,$DPC1
000114	012700  000600 				MOV	#600,R0
000120	016603  000002 				MOV	2(SP),R3
000124	016301  000102 				MOV	102(R3),R1
000130	004767  000000G				JSR	PC,$NLEND
000134	000527 					BR	8$				;					0702
000136	032702  000002 			2$:	BIT	#2,R2				; *,ERROR				0715
000142	001422 					BEQ	4$
000144	004767  000000G				JSR	PC,$NLBEG			;					0723
000150	011605 					MOV	(SP),R5
000152	004767  000000G				JSR	PC,CKCTRS
000156	012700  000503 				MOV	#503,R0
000162	011603 					MOV	(SP),R3
000164	016301  000100 				MOV	100(R3),R1
000170	004767  000000G				JSR	PC,$NLEND
000174	011605 					MOV	(SP),R5				;					0725
000176	012703  100100 				MOV	#-77700,R3
000202	004767  000000V			3$:	JSR	PC,SEND.TRANSIENT.ERROR
000206	000503 					BR	9$				;					0717
000210	032702  001000 			4$:	BIT	#1000,R2			; *,ERROR				0729
000214	001414 					BEQ	5$
000216	032776  010000  000000 			BIT	#10000,@0(SP)
000224	001410 					BEQ	5$
000226	042776  010000  000000 			BIC	#10000,@0(SP)			;					0732
000234	011600 					MOV	(SP),R0				;					0733
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  16
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)

000236	112760  000001  000040 			MOVB	#1,40(R0)
000244	000464 					BR	9$				;					0731
000246	105702 				5$:	TSTB	R2				; ERROR					0737
000250	100032 					BPL	7$
000252	011600 					MOV	(SP),R0				;					0741
000254	126027  000034  000004 			CMPB	34(R0),#4
000262	001011 					BNE	6$
000264	004767  000000G				JSR	PC,$NLBEG			;					0743
000270	012700  000502 				MOV	#502,R0
000274	011603 					MOV	(SP),R3
000276	016301  000100 				MOV	100(R3),R1
000302	004767  000000G				JSR	PC,$NLEND
000306	011605 				6$:	MOV	(SP),R5				;					0745
000310	012703  100130 				MOV	#-77650,R3
000314	004767  000000V				JSR	PC,SEND.PERSISTENT.ERROR
000320	011605 					MOV	(SP),R5				;					0746
000322	004767  000000V				JSR	PC,DEVICE.SHUT.DOWN
000326	011605 					MOV	(SP),R5				;					0747
000330	004767  000000V				JSR	PC,SET.PORT
000334	000575 					BR	16$				;					0739
000336	032702  000020 			7$:	BIT	#20,R2				; *,ERROR				0751
000342	001426 					BEQ	10$
000344	004767  000000G				JSR	PC,$NLBEG			;					0755
000350	012746  000010 				MOV	#10,-(SP)
000354	016700  000000G				MOV	.RDBSZ,R0
000360	004767  000000G				JSR	PC,$DPDU2
000364	012700  000511 				MOV	#511,R0
000370	016603  000002 				MOV	2(SP),R3
000374	016301  000100 				MOV	100(R3),R1
000400	004767  000000G				JSR	PC,$NLEND
000404	016605  000002 				MOV	2(SP),R5			;					0756
000410	004767  000000V				JSR	PC,DEVICE.SHUT.DOWN
000414	005726 				8$:	TST	(SP)+				;					0751
000416	000544 				9$:	BR	16$				;					0753
000420	032702  000010 			10$:	BIT	#10,R2				; *,ERROR				0760
000424	001415 					BEQ	11$
000426	004767  000000G				JSR	PC,$NLBEG			;					0763
000432	012700  014515 				MOV	#14515,R0
000436	011603 					MOV	(SP),R3
000440	016301  000100 				MOV	100(R3),R1
000444	004767  000000G				JSR	PC,$NLEND
000450	011605 					MOV	(SP),R5				;					0764
000452	012703  100142 				MOV	#-77636,R3
000456	000437 					BR	12$
000460	032702  000400 			11$:	BIT	#400,R2				; *,ERROR				0769
000464	001437 					BEQ	13$
000466	004767  000000G				JSR	PC,$NLBEG			;					0773
000472	011605 					MOV	(SP),R5
000474	062705  000022 				ADD	#22,R5
000500	010501 					MOV	R5,R1
000502	004767  000000V				JSR	PC,PLL0
000506	012700  000603 				MOV	#603,R0
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  17
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)

000512	011603 					MOV	(SP),R3
000514	016301  000102 				MOV	102(R3),R1
000520	004767  000000G				JSR	PC,$NLEND
000524	011600 					MOV	(SP),R0				;					0774
000526	052760  004000  000152 			BIS	#4000,152(R0)
000534	012701  000152 				MOV	#152,R1				;					0775
000540	060001 					ADD	R0,R1
000542	010100 					MOV	R1,R0
000544	004767  000000G				JSR	PC,$IC8
000550	011605 					MOV	(SP),R5				;					0776
000552	012703  100174 				MOV	#-77604,R3
000556	004767  000000V			12$:	JSR	PC,SEND.PERSISTENT.ERROR
000562	000441 					BR	14$				;					0777
000564	004767  000000G			13$:	JSR	PC,$NLBEG			;					0782
000570	011605 					MOV	(SP),R5
000572	062705  000022 				ADD	#22,R5
000576	010501 					MOV	R5,R1
000600	004767  000000V				JSR	PC,PLL0
000604	012700  000604 				MOV	#604,R0
000610	011603 					MOV	(SP),R3
000612	016301  000102 				MOV	102(R3),R1
000616	004767  000000G				JSR	PC,$NLEND
000622	011605 					MOV	(SP),R5				;					0783
000624	012703  100174 				MOV	#-77604,R3
000630	004767  000000V				JSR	PC,SEND.PERSISTENT.ERROR
000634	032702  001000 				BIT	#1000,R2			; *,ERROR				0785
000640	001416 					BEQ	15$
000642	011600 					MOV	(SP),R0				;					0788
000644	052760  100000  000152 			BIS	#100000,152(R0)
000652	012701  000152 				MOV	#152,R1				;					0789
000656	060001 					ADD	R0,R1
000660	010100 					MOV	R1,R0
000662	004767  000000G				JSR	PC,$IC8
000666	011605 				14$:	MOV	(SP),R5				;					0790
000670	004767  000000V				JSR	PC,DEVICE.SHUT.DOWN
000674	000415 					BR	16$				;					0787
000676	011600 				15$:	MOV	(SP),R0				;					0794
000700	052760  000400  000152 			BIS	#400,152(R0)
000706	012701  000152 				MOV	#152,R1				;					0795
000712	060001 					ADD	R0,R1
000714	010100 					MOV	R1,R0
000716	004767  000000G				JSR	PC,$IC8
000722	011605 					MOV	(SP),R5				;					0796
000724	004767  000000V				JSR	PC,MASTER.CLEAR
000730	005726 				16$:	TST	(SP)+				;					0648
000732	012605 					MOV	(SP)+,R5
000734	012602 					MOV	(SP)+,R2
000736	012601 					MOV	(SP)+,R1
000740	000207 					RTS	PC

; Routine Size:  241 words,	Routine Base:  $CODE$ + 0122
; Maximum stack depth per invocation:  7 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  18
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (5)

;	  0798	routine CTLNXT (DB) : LINKAGE_DB novalue =
;	  0799	
;	  0800	!++
;	  0801	! FUNCTIONAL DESCRIPTION:
;	  0802	!
;	  0803	!
;	  0804	! FORMAL PARAMETERS:
;	  0805	!	DB = address of DMC data base.
;	  0806	!
;	  0807	! IMPLICIT INPUTS:
;	  0808	!	None
;	  0809	!
;	  0810	! IMPLICIT OUTPUTS:
;	  0811	!	None
;	  0812	!
;	  0813	! ROUTINE VALUE:
;	  0814	! COMPLETION CODES:
;	  0815	!	None
;	  0816	!
;	  0817	! SIDE EFFECTS:
;	  0818	!	None
;	  0819	!--
;	  0820	
;	  0821	    begin
;	  0822	    GET_DMC_DATA_BASE (DB)
;	  0823	
;	  0824	    local
;	  0825		CCB : ref block field (C_FIELDS);
;	  0826	
;	  0827	    DB [DF_CTL] = FALSE;
;	  0828	
;	  0829	    if not $MCB_DEQUEUE_CCB (DB [D_PENDING_CONTROLS], CCB) then return;
;	  0830	
;	  0831	    CCB [C_FNC] = FC_CCP;
;	  0832	    CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
;	  0833	    $MCB_SCHEDULE_CCB (.CCB);
;	  0834	    end;			!of routine CTLNXT


						.GLOBL	$CMQRM, $SCHED


						.SBTTL	CTLNXT
000000	004167  000000G			CTLNXT: JSR	R1,$SAVE4			;					0798
000004	042765  040000  000032 			BIC	#40000,32(R5)			; *,*(DB)				0827
000012	010500 					MOV	R5,R0				; DB,*					0829
000014	062700  000072 				ADD	#72,R0
000020	010003 					MOV	R0,R3
000022	004767  000000G				JSR	PC,$CMQRM
000026	103411 					BCS	1$
000030	112764  000022  000012 			MOVB	#22,12(R4)			; *,*(CCB)				0831
000036	004767  000000V				JSR	PC,CURRENT.STATUS		;					0832
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  19
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (5)

000042	010064  000014 				MOV	R0,14(R4)			; *,*(CCB)
000046	004767  000000G				JSR	PC,$SCHED			;					0833
000052	000207 				1$:	RTS	PC				;					0798

; Routine Size:  22 words,	Routine Base:  $CODE$ + 1064
; Maximum stack depth per invocation:  6 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  20
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (6)

;	  0835	routine CTLSTP
;	  0836	
;	  0837	!++
;	  0838	! FUNCTIONAL DESCRIPTION:
;	  0839	!
;	  0840	!
;	  0841	! FORMAL PARAMETERS:
;	  0842	!
;	  0843	       (DB : ref block field (D_FIELDS),
;	  0844		CCB : ref block field (C_FIELDS))
;	  0845	!
;	  0846	! IMPLICIT INPUTS:
;	  0847	!	None
;	  0848	!
;	  0849	! IMPLICIT OUTPUTS:
;	  0850	!	None
;	  0851	!
;	  0852	! ROUTINE VALUE:
;	  0853	!
;	  0854		: MCB_DB_CCB novalue =
;	  0855	!
;	  0856	! SIDE EFFECTS:
;	  0857	!	None
;	  0858	!--
;	  0859	
;	  0860	    begin
;	  0861	    DB [DF_NOTIFY_OFF] = FALSE;
;	  0862	    DB [DF_NOTIFY_STATE] = FALSE;
;	  0863	    DB [D_TRANSIENT_ERROR] = 0;
;	  0864	    DB [D_PERSISTENT_ERROR] = 0;
;	  0865	    DB [D_OWNER_HANDLE] = 0;
;	  0866	
;	  0867	    if .DB [D_ACTIVE_BUFFERS] neq 0
;	  0868	    then
;	  0869		begin
;	  0870		! Wait for transmits and receives to complete
;	  0871		CMQIF$ (DB [D_PENDING_CONTROLS], .CCB);
;	  0872		DB [DF_CTL] = TRUE;
;	  0873		return;
;	  0874		end;
;	  0875	
;	  0876	    CCB [C_FNC] = FC_CCP;
;	  0877	    CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
;	  0878	    $MCB_SCHEDULE_CCB (.CCB);
;	  0879	    end;			!of routine CTLSTP


						.GLOBL	$CMQIF


						.SBTTL	CTLSTP
000000	042715  001400 			CTLSTP: BIC	#1400,(R5)			; *,DB					0862
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  21
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (6)

000004	005065  000104 				CLR	104(R5)				; *(DB)					0863
000010	005065  000106 				CLR	106(R5)				; *(DB)					0864
000014	005065  000042 				CLR	42(R5)				; *(DB)					0865
000020	005765  000110 				TST	110(R5)				; *(DB)					0867
000024	001411 					BEQ	1$
000026	012703  000072 				MOV	#72,R3				;					0871
000032	060503 					ADD	R5,R3				; DB,*
000034	004767  000000G				JSR	PC,$CMQIF
000040	052765  040000  000032 			BIS	#40000,32(R5)			; *,*(DB)				0872
000046	000207 					RTS	PC				;					0869
000050	112764  000022  000012 		1$:	MOVB	#22,12(R4)			; *,*(CCB)				0876
000056	004767  000000V				JSR	PC,CURRENT.STATUS		;					0877
000062	010064  000014 				MOV	R0,14(R4)			; *,*(CCB)
000066	004767  000000G				JSR	PC,$SCHED			;					0878
000072	000207 					RTS	PC				;					0835

; Routine Size:  30 words,	Routine Base:  $CODE$ + 1140
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  22
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (7)

;	  0880	routine CTLSTR
;	  0881	
;	  0882	!++
;	  0883	! FUNCTIONAL DESCRIPTION:
;	  0884	!
;	  0885	!
;	  0886	! FORMAL PARAMETERS:
;	  0887	!
;	  0888	       (DB : ref block field (D_FIELDS),
;	  0889		CCB : ref block field (C_FIELDS))
;	  0890	!
;	  0891	! IMPLICIT INPUTS:
;	  0892	!	None
;	  0893	!
;	  0894	! IMPLICIT OUTPUTS:
;	  0895	!	None
;	  0896	!
;	  0897	! ROUTINE VALUE:
;	  0898	!
;	  0899		: MCB_DB_CCB novalue =
;	  0900	!
;	  0901	! SIDE EFFECTS:
;	  0902	!	None
;	  0903	!--
;	  0904	
;	  0905	    begin
;	  0906	    GET_DMC_DATA_BASE (DB)
;	  0907	    DB [D_OWNER_HANDLE] = .CCB [C_HANDLE];
;	  0908	
;	  0909	    if .CCB [C_PRM1] eql 0
;	  0910	    then
;	  0911		CCB [C_PRM1] = .DB [D_CIRCUIT_COST];
;	  0912	
;	  0913	    CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
;	  0914	    CCB [C_FNC] = FC_CCP;
;	  0915	    $MCB_SCHEDULE_CCB (.CCB);
;	  0916	    end;			!of routine CTLSTR


						.SBTTL	CTLSTR
000000	016465  000010  000042 		CTLSTR: MOV	10(R4),42(R5)			; *(CCB),*(DB)				0907
000006	012700  000024 				MOV	#24,R0				;					0909
000012	060400 					ADD	R4,R0				; CCB,*
000014	005710 					TST	(R0)
000016	001002 					BNE	1$
000020	016510  000112 				MOV	112(R5),(R0)			; *(DB),*				0911
000024	004767  000000V			1$:	JSR	PC,CURRENT.STATUS		;					0913
000030	010064  000014 				MOV	R0,14(R4)			; *,*(CCB)
000034	112764  000022  000012 			MOVB	#22,12(R4)			; *,*(CCB)				0914
000042	004767  000000G				JSR	PC,$SCHED			;					0915
000046	000207 					RTS	PC				;					0880
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  23
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (7)

; Routine Size:  20 words,	Routine Base:  $CODE$ + 1234
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  24
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (8)

;	  0917	routine CURRENT_STATUS (DB) : LINKAGE_DB =
;	  0918	
;	  0919	!++
;	  0920	! FUNCTIONAL DESCRIPTION:
;	  0921	!
;	  0922	!
;	  0923	! FORMAL PARAMETERS:
;	  0924	!	DB = address of DMC data base.
;	  0925	!
;	  0926	! IMPLICIT INPUTS:
;	  0927	!	None
;	  0928	!
;	  0929	! IMPLICIT OUTPUTS:
;	  0930	!	None
;	  0931	!
;	  0932	! ROUTINE VALUE:
;	  0933	! COMPLETION CODES:
;	  0934	!	None
;	  0935	!
;	  0936	! SIDE EFFECTS:
;	  0937	!	None
;	  0938	!--
;	  0939	
;	  0940	    begin
;	  0941	    GET_DMC_DATA_BASE (DB)
;	  0942	
;	  0943	    literal
;	  0944		DLL_OFF = 0,
;	  0945		DLL_SYNCHRONIZING = 1,
;	  0946		DLL_RUNNING = 2,
;	  0947		DLL_MAINTENANCE = 3;
;	  0948	
;	  0949	    bind
;	P 0950		REPORT_STATUS = TABLE$ (0, 0,
;	P 0951		    (DS_HALTED^1, DLL_OFF),
;	P 0952		    (DS_ISTRT^1, DLL_SYNCHRONIZING),
;	P 0953		    (DS_ASTRT^1, DLL_SYNCHRONIZING),
;	P 0954		    (DS_RUNNING^1, DLL_RUNNING),
;	  0955		    (DS_MAINTENANCE^1, DLL_MAINTENANCE)) : vector,
;	P 0956		DLL_STATUS = TABLE$ (0, 0,
;	P 0957		    (DLL_OFF^1, DLL$_STATE_OFF),
;	P 0958		    (DLL_SYNCHRONIZING^1, DLL$_STATE_SYNCHRONIZING),
;	P 0959		    (DLL_RUNNING^1, DLL$_STATE_RUNNING),
;	  0960		    (DLL_MAINTENANCE^1, DLL$_STATE_MAINTENANCE)) : vector;
;	  0961	
;	  0962	    if .DB [DF_NOTIFY_OFF]
;	  0963	    then
;	  0964		begin
;	  0965		DB [DF_NOTIFY_OFF] = FALSE;
;	  0966	
;	  0967		if .DB [D_PROTOCOL_STATE] eql DS_HALTED
;	  0968		then
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  25
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (8)

;	  0969		    DB [DF_NOTIFY_STATE] = FALSE;
;	  0970	
;	  0971		return .DLL_STATUS [DB [D_REPORTED_STATE] = DLL_OFF];
;	  0972		end;
;	  0973	
;	  0974	    DB [DF_NOTIFY_STATE] = FALSE;
;	  0975	    .DLL_STATUS [DB [D_REPORTED_STATE] = .REPORT_STATUS [.DB [D_PROTOCOL_STATE]]]
;	  0976	    end;			!of routine CURRENT_STATUS



000024						.PSECT	$PLIT$,  RO ,  D  
000024	000000 				P.AAB:	.WORD	0
000026	000001 					.WORD	1
000030	000001 					.WORD	1
000032	000002 					.WORD	2
000034	000003 					.WORD	3
000036	100043 				P.AAC:	.WORD	-77735
000040	100053 					.WORD	-77725
000042	100063 					.WORD	-77715
000044	100073 					.WORD	-77705


	000024'				REPORT.STATUS=	    P.AAB
	000036'				DLL.STATUS=	    P.AAC


						.SBTTL	CURRENT.STATUS
001304						.PSECT	$CODE$,  RO 

000000	010546 				CURRENT.STATUS:
						MOV	R5,-(SP)			;					0917
000002	010500 					MOV	R5,R0				; *,DB
000004	032710  000400 				BIT	#400,(R0)			; *,DB					0962
000010	001414 					BEQ	2$
000012	042710  000400 				BIC	#400,(R0)			; *,DB					0965
000016	105760  000034 				TSTB	34(R0)				; *(DB)					0967
000022	001002 					BNE	1$
000024	042710  001000 				BIC	#1000,(R0)			; *,DB					0969
000030	105060  000036 			1$:	CLRB	36(R0)				; *(DB)					0971
000034	016700  000036'				MOV	DLL.STATUS,R0			;					0964
000040	000414 					BR	3$
000042	042710  001000 			2$:	BIC	#1000,(R0)			; *,DB					0974
000046	116005  000034 				MOVB	34(R0),R5			; *(DB),*				0975
000052	006305 					ASL	R5
000054	016505  000024'				MOV	REPORT.STATUS(R5),R5
000060	110560  000036 				MOVB	R5,36(R0)			; *,*(DB)
000064	006305 					ASL	R5
000066	016500  000036'				MOV	DLL.STATUS(R5),R0		;					0917
000072	012605 				3$:	MOV	(SP)+,R5
000074	000207 					RTS	PC
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  26
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (8)

; Routine Size:  31 words,	Routine Base:  $CODE$ + 1304
; Maximum stack depth per invocation:  2 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  27
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (9)

;	  0977	routine DEVICE_SHUT_DOWN
;	  0978	
;	  0979	!++
;	  0980	! FUNCTIONAL DESCRIPTION:
;	  0981	!
;	  0982	!
;	  0983	! FORMAL PARAMETERS:
;	  0984	!
;	  0985	       (DB : ref block field (D_FIELDS))
;	  0986	!
;	  0987	! IMPLICIT INPUTS:
;	  0988	!	None
;	  0989	!
;	  0990	! IMPLICIT OUTPUTS:
;	  0991	!	None
;	  0992	!
;	  0993	! ROUTINE VALUE:
;	  0994	!
;	  0995		: LINKAGE_DB novalue =
;	  0996	!
;	  0997	! SIDE EFFECTS:
;	  0998	!	None
;	  0999	!--
;	  1000	
;	  1001	    begin
;	  1002	    CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_HALTED, RMT);
;	  1003	    DB [D_DEVICE_STATE] = DD_SHUT_DOWN;
;	  1004	    DB [DF_FLUSHING_DMC] = FALSE;
;	  1005	    DB [D_INPUT_COMMAND] = 0;
;	  1006	    DB [DF_PROTOCOL_UP] = FALSE;
;	  1007	    DB [DC_MASTER_CLEAR] = FALSE;
;	  1008	    DB [DC_BASE_IN] = FALSE;
;	  1009	    DB [DC_CONTROL_IN] = FALSE;
;	  1010	    DB [DC_SET_REQUESTED_STATE] = FALSE;
;	  1011	    end;			!of routine DEVICE_SHUT_DOWN


						.SBTTL	DEVICE.SHUT.DOWN
000000	004167  000000G			DEVICE.SHUT.DOWN:
						JSR	R1,$SAVE4			;					0977
000004	004767  000000G				JSR	PC,$NLBEG			;					1002
000010	005046 					CLR	-(SP)
000012	012701  000034 				MOV	#34,R1
000016	060501 					ADD	R5,R1				; DB,*
000020	111100 					MOVB	(R1),R0
000022	004767  000000G				JSR	PC,$DPC1
000026	105011 					CLRB	(R1)
000030	012716  000001 				MOV	#1,(SP)
000034	105000 					CLRB	R0
000036	004767  000000G				JSR	PC,$DPC1
000042	012700  000501 				MOV	#501,R0
000046	016501  000100 				MOV	100(R5),R1			; *(DB),*
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  28
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (9)

000052	004767  000000G				JSR	PC,$NLEND
000056	004767  000000V				JSR	PC,SEND.STATE
000062	112765  000004  000040 			MOVB	#4,40(R5)			; *,*(DB)				1003
000070	042715  010000 				BIC	#10000,(R5)			; *,DB					1004
000074	105065  000012 				CLRB	12(R5)				; *(DB)					1005
000100	012700  000032 				MOV	#32,R0				;					1006
000104	060500 					ADD	R5,R0				; DB,*
000106	042710  020162 				BIC	#20162,(R0)			;					1010
000112	005726 					TST	(SP)+				;					1001
000114	000207 					RTS	PC				;					0977

; Routine Size:  39 words,	Routine Base:  $CODE$ + 1402
; Maximum stack depth per invocation:  7 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  29
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (10)

;	  1012	routine DLLINI (DB, CCB) : DMC_DB_CCB novalue =
;	  1013	
;	  1014	!++
;	  1015	! FUNCTIONAL DESCRIPTION:
;	  1016	!
;	  1017	!
;	  1018	! FORMAL PARAMETERS:
;	  1019	!	DB = address of DMC data base.
;	  1020	!	CCB = address of CCB.
;	  1021	!
;	  1022	! IMPLICIT INPUTS:
;	  1023	!	None
;	  1024	!
;	  1025	! IMPLICIT OUTPUTS:
;	  1026	!	None
;	  1027	!
;	  1028	! ROUTINE VALUE:
;	  1029	! COMPLETION CODES:
;	  1030	!	None
;	  1031	!
;	  1032	! SIDE EFFECTS:
;	  1033	!	None
;	  1034	!--
;	  1035	
;	  1036	    begin
;	  1037	    GET_DMC_DATA_BASE (DB)
;	  1038	
;	  1039	    map
;	  1040		CCB : ref block field (C_FIELDS);
;	  1041	
;	  1042	    DB [DC_HALT] = TRUE;
;	  1043	    DB [DC_MASTER_CLEAR] = TRUE;
;	  1044	    DB [D_REQUESTED_STATE] = DS_RUNNING;
;	  1045	    DB [DC_SET_REQUESTED_STATE] = TRUE;
;	  1046	    CCB [C_FNC] = FC_XCP;
;	  1047	    CCB [C_STS] = DLL$_SUCCESS;
;	  1048	    $MCB_SCHEDULE_CCB (.CCB);
;	  1049	
;	  1050	    if .DB [D_DEVICE_STATE] eql DD_CLEARED
;	  1051	    then
;	  1052		begin
;	  1053		SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
;	  1054		SEND_STATE (DB [D_TIM]);
;	  1055		end;
;	  1056	
;	  1057	    end;			!of routine DLLINI


						.SBTTL	DLLINI
000000	004167  000000G			DLLINI: JSR	R1,$SAVE3			;					1012
000004	012700  000032 				MOV	#32,R0				;					1042
000010	060500 					ADD	R5,R0				; DB,*
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  30
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (10)

000012	112765  000003  000035 			MOVB	#3,35(R5)			; *,*(DB)				1044
000020	152710  000103 				BISB	#103,(R0)			;					1045
000024	112764  000014  000012 			MOVB	#14,12(R4)			; *,*(CCB)				1046
000032	012764  100001  000014 			MOV	#-77777,14(R4)			; *,*(CCB)				1047
000040	004767  000000G				JSR	PC,$SCHED			;					1048
000044	126527  000040  000005 			CMPB	40(R5),#5			; *(DB),*				1050
000052	001006 					BNE	1$
000054	012703  100174 				MOV	#-77604,R3			;					1053
000060	004767  000000V				JSR	PC,SEND.PERSISTENT.ERROR
000064	004767  000000V				JSR	PC,SEND.STATE			;					1054
000070	000207 				1$:	RTS	PC				;					1012

; Routine Size:  29 words,	Routine Base:  $CODE$ + 1520
; Maximum stack depth per invocation:  5 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  31
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (11)

;	  1058	routine DLLMOP (DB, CCB) : DMC_DB_CCB novalue =
;	  1059	
;	  1060	!++
;	  1061	! FUNCTIONAL DESCRIPTION:
;	  1062	!
;	  1063	!
;	  1064	! FORMAL PARAMETERS:
;	  1065	!	DB = address of DMC data base.
;	  1066	!	CCB = address of CCB.
;	  1067	!
;	  1068	! IMPLICIT INPUTS:
;	  1069	!	None
;	  1070	!
;	  1071	! IMPLICIT OUTPUTS:
;	  1072	!	None
;	  1073	!
;	  1074	! ROUTINE VALUE:
;	  1075	! COMPLETION CODES:
;	  1076	!	None
;	  1077	!
;	  1078	! SIDE EFFECTS:
;	  1079	!	None
;	  1080	!--
;	  1081	
;	  1082	    begin
;	  1083	    GET_DMC_DATA_BASE (DB)
;	  1084	
;	  1085	    map
;	  1086		CCB : ref block field (C_FIELDS);
;	  1087	
;	  1088	    DB [DC_HALT] = TRUE;
;	  1089	    DB [DC_MASTER_CLEAR] = TRUE;
;	  1090	    DB [D_REQUESTED_STATE] = DS_MAINTENANCE;
;	  1091	    DB [DC_SET_REQUESTED_STATE] = TRUE;
;	  1092	    CCB [C_FNC] = FC_XCP;
;	  1093	    CCB [C_STS] = DLL$_SUCCESS;
;	  1094	    $MCB_SCHEDULE_CCB (.CCB);
;	  1095	
;	  1096	    if .DB [D_DEVICE_STATE] eql DD_CLEARED
;	  1097	    then
;	  1098		begin
;	  1099		SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
;	  1100		SEND_STATE (DB [D_TIM]);
;	  1101		end;
;	  1102	
;	  1103	    end;			!of routine DLLMOP


						.SBTTL	DLLMOP
000000	004167  000000G			DLLMOP: JSR	R1,$SAVE3			;					1058
000004	012700  000032 				MOV	#32,R0				;					1088
000010	060500 					ADD	R5,R0				; DB,*
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  32
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (11)

000012	112765  000004  000035 			MOVB	#4,35(R5)			; *,*(DB)				1090
000020	152710  000103 				BISB	#103,(R0)			;					1091
000024	112764  000014  000012 			MOVB	#14,12(R4)			; *,*(CCB)				1092
000032	012764  100001  000014 			MOV	#-77777,14(R4)			; *,*(CCB)				1093
000040	004767  000000G				JSR	PC,$SCHED			;					1094
000044	126527  000040  000005 			CMPB	40(R5),#5			; *(DB),*				1096
000052	001006 					BNE	1$
000054	012703  100174 				MOV	#-77604,R3			;					1099
000060	004767  000000V				JSR	PC,SEND.PERSISTENT.ERROR
000064	004767  000000V				JSR	PC,SEND.STATE			;					1100
000070	000207 				1$:	RTS	PC				;					1058

; Routine Size:  29 words,	Routine Base:  $CODE$ + 1612
; Maximum stack depth per invocation:  5 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  33
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (12)

;	  1104	routine DLLSTP (DB, CCB) : DMC_DB_CCB novalue =
;	  1105	
;	  1106	!++
;	  1107	! FUNCTIONAL DESCRIPTION:
;	  1108	!
;	  1109	!
;	  1110	! FORMAL PARAMETERS:
;	  1111	!	DB = address of DMC data base.
;	  1112	!	CCB = address of CCB.
;	  1113	!
;	  1114	! IMPLICIT INPUTS:
;	  1115	!	None
;	  1116	!
;	  1117	! IMPLICIT OUTPUTS:
;	  1118	!	None
;	  1119	!
;	  1120	! ROUTINE VALUE:
;	  1121	! COMPLETION CODES:
;	  1122	!	None
;	  1123	!
;	  1124	! SIDE EFFECTS:
;	  1125	!	None
;	  1126	!--
;	  1127	
;	  1128	    begin
;	  1129	    GET_DMC_DATA_BASE (DB)
;	  1130	
;	  1131	    map
;	  1132		CCB : ref block field (C_FIELDS);
;	  1133	
;	  1134	    DB [DC_HALT] = TRUE;
;	  1135	    DB [DC_MASTER_CLEAR] = TRUE;
;	  1136	    DB [D_REQUESTED_STATE] = DS_HALTED;
;	  1137	    DB [DC_SET_REQUESTED_STATE] = TRUE;
;	  1138	    CCB [C_FNC] = FC_XCP;
;	  1139	    CCB [C_STS] = DLL$_SUCCESS;
;	  1140	    $MCB_SCHEDULE_CCB (.CCB);
;	  1141	    end;			!of routine DLLSTP


						.SBTTL	DLLSTP
000000	012700  000032 			DLLSTP: MOV	#32,R0				;					1134
000004	060500 					ADD	R5,R0				; DB,*
000006	105065  000035 				CLRB	35(R5)				; *(DB)					1136
000012	152710  000103 				BISB	#103,(R0)			;					1137
000016	112764  000014  000012 			MOVB	#14,12(R4)			; *,*(CCB)				1138
000024	012764  100001  000014 			MOV	#-77777,14(R4)			; *,*(CCB)				1139
000032	004767  000000G				JSR	PC,$SCHED			;					1140
000036	000207 					RTS	PC				;					1104

; Routine Size:  16 words,	Routine Base:  $CODE$ + 1704
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  34
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (13)

;	  1142	routine DMC_INTERRUPT (DB) : MCB_INTERRUPT novalue =
;	  1143	
;	  1144	!++
;	  1145	! FUNCTIONAL DESCRIPTION:
;	  1146	!
;	  1147	!
;	  1148	! FORMAL PARAMETERS:
;	  1149	!	DB = address of DMC data base.
;	  1150	!
;	  1151	! IMPLICIT INPUTS:
;	  1152	!	None
;	  1153	!
;	  1154	! IMPLICIT OUTPUTS:
;	  1155	!	None
;	  1156	!
;	  1157	! ROUTINE VALUE:
;	  1158	! COMPLETION CODES:
;	  1159	!	None
;	  1160	!
;	  1161	! SIDE EFFECTS:
;	  1162	!	None
;	  1163	!--
;	  1164	
;	  1165	    begin
;	  1166	    GET_DMC_DATA_BASE (DB)
;	  1167	
;	  1168	    if .DB [DF_SYNCHRONIZING]
;	  1169	    then
;	  1170		return
;	  1171	    else
;	  1172		DB [DF_SYNCHRONIZING] = TRUE;
;	  1173	
;	  1174	    SYNCH$ (.DB [D_SYNCH_BLOCK], DMC_SYNCHRONIZE);
;	  1175	    end;			!of routine DMC_INTERRUPT


						.GLOBL	$SYNCH


						.SBTTL	DMC.INTERRUPT
000000	032715  020000 			DMC.INTERRUPT:
						BIT	#20000,(R5)			; *,DB					1168
000004	001011 					BNE	1$				;					1170
000006	052715  020000 				BIS	#20000,(R5)			; *,DB					1172
000012	016504  000010 				MOV	10(R5),R4			; *(DB),*				1174
000016	012764  000000V 000004 			MOV	#DMC.SYNCHRONIZE,4(R4)
000024	004767  000000G				JSR	PC,$SYNCH
000030	000207 				1$:	RTS	PC				;					1142

; Routine Size:  13 words,	Routine Base:  $CODE$ + 1744
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  35
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (14)

;	  1176	routine DMC_SYNCHRONIZE (DB) : MCB_DB novalue =
;	  1177	
;	  1178	!++
;	  1179	! FUNCTIONAL DESCRIPTION:
;	  1180	!
;	  1181	!
;	  1182	! FORMAL PARAMETERS:
;	  1183	!	DB = address of DMC data base.
;	  1184	!
;	  1185	! IMPLICIT INPUTS:
;	  1186	!	None
;	  1187	!
;	  1188	! IMPLICIT OUTPUTS:
;	  1189	!	None
;	  1190	!
;	  1191	! ROUTINE VALUE:
;	  1192	! COMPLETION CODES:
;	  1193	!	None
;	  1194	!
;	  1195	! SIDE EFFECTS:
;	  1196	!	None
;	  1197	!--
;	  1198	
;	  1199	    begin
;	  1200	    GET_DMC_DATA_BASE (DB)
;	  1201	    $DMC_CLEAR_BITS (.DB [D_REGISTER], SEL0, IEI);
;	  1202	    DB [DF_SYNCHRONIZING] = FALSE;
;	  1203	    SERVICE_DMC (DB [D_TIM]);
;	  1204	    end;			!of routine DMC_SYNCHRONIZE


						.SBTTL	DMC.SYNCHRONIZE
000000	042775  000100  000002 		DMC.SYNCHRONIZE:
						BIC	#100,@2(R5)			; *,*(DB)				1201
000006	042715  020000 				BIC	#20000,(R5)			; *,DB					1202
000012	004767  000000V				JSR	PC,SERVICE.DMC			;					1203
000016	000207 					RTS	PC				;					1176

; Routine Size:  8 words,	Routine Base:  $CODE$ + 1776
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  36
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (15)

;	  1205	routine DMCCTL
;	  1206	
;	  1207	!++
;	  1208	! FUNCTIONAL DESCRIPTION:
;	  1209	!
;	  1210	!
;	  1211	! FORMAL PARAMETERS:
;	  1212	!
;	  1213	       (DB : ref block field (D_FIELDS),
;	  1214		CCB : ref block field (C_FIELDS),
;	  1215		MODIFIER)
;	  1216	!
;	  1217	! IMPLICIT INPUTS:
;	  1218	!	None
;	  1219	!
;	  1220	! IMPLICIT OUTPUTS:
;	  1221	!	None
;	  1222	!
;	  1223	! ROUTINE VALUE:
;	  1224	!
;	  1225		: MCB_DB_CCB_MOD novalue =
;	  1226	!
;	  1227	! SIDE EFFECTS:
;	  1228	!	None
;	  1229	!--
;	  1230	
;	  1231	    begin
;	P 1232	    DISPATCH$ (.MODIFIER,
;	P 1233		TABLE$ ($DSPCR, FD_CTL,		! Control dispatch table:
;	P 1234		    (FM_NM, DMCNM),		!  Network Management
;	P 1235		    (FM_STR, CTLSTR),		!  Start line
;	P 1236		    (FM_STP, CTLSTP)),		!  Stop line
;	P 1237		(DB [D_TIM], .CCB),
;	  1238		MCB_DB_CCB);
;	  1239	    SET_PORT (DB [D_TIM]);
;	  1240	    end;			!of routine DMCCTL



000046						.PSECT	$PLIT$,  RO ,  D  
000046	000000G				P.AAD:	.WORD	$DSPCR
000050	001234'					.WORD	CTLSTR
000052	001140'					.WORD	CTLSTP
000054	000000G					.WORD	DMCNM
000056	000000G					.WORD	$DSPCR
000060	000000G					.WORD	$DSPCR
000062	000000G					.WORD	$DSPCR


						.SBTTL	DMCCTL
002016						.PSECT	$CODE$,  RO 
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  37
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (15)

000000	010546 				DMCCTL: MOV	R5,-(SP)			;					1205
000002	004773  000046'				JSR	PC,@P.AAD(R3)			; *,*(MODIFIER)				1238
000006	011605 					MOV	(SP),R5				;					1239
000010	004767  000000V				JSR	PC,SET.PORT
000014	005726 					TST	(SP)+				;					1205
000016	000207 					RTS	PC

; Routine Size:  8 words,	Routine Base:  $CODE$ + 2016
; Maximum stack depth per invocation:  2 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  38
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (16)

;	  1241	global routine DMCDB
;	  1242	
;	  1243	!++
;	  1244	! FUNCTIONAL DESCRIPTION:
;	  1245	!
;	  1246	!
;	  1247	! FORMAL PARAMETERS:
;	  1248	!
;	  1249	       (BIAS,
;	  1250		DB : ref block field (D_FIELDS))
;	  1251	!
;	  1252	! IMPLICIT INPUTS:
;	  1253	!	None
;	  1254	!
;	  1255	! IMPLICIT OUTPUTS:
;	  1256	!	None
;	  1257	!
;	  1258	! ROUTINE VALUE:
;	  1259	!
;	  1260		: CALL$ novalue =
;	  1261	!
;	  1262	! SIDE EFFECTS:
;	  1263	!	None
;	  1264	!--
;	  1265	
;	  1266	    begin
;	  1267	    MCB$GAW_PROCESS_DATA_BASE [0] = .BIAS;
;	  1268	    MCB$GAW_PROCESS_DATA_BASE [1] = DB [D_TIM];
;	  1269	    MCB$GA_PROCESS_DISPATCH = DMC_TABLE;
;	  1270	    DMCDBI ();
;	  1271	    DMCNMI ();
;	  1272	    DMCDVI ();
;	  1273	
;	  1274	    if .DB [D_LINE_STATE] eql DL_ON then $MCB_ENABLE_LONG_TIMER ();
;	  1275	
;	  1276	    end;			!of routine DMCDB


						.GLOBL	$LTMEN


						.SBTTL	DMCDB
000000	016567  000002  000000G		DMCDB:: MOV	2(R5),.CRDAT			; BIAS(.AP.),*				1267
000006	016567  000004  000002G			MOV	4(R5),.CRDAT+2			; DB(.AP.),*				1268
000014	012767  000000' 000000G			MOV	#DMC.TABLE,.CRDSP		;					1269
000022	004767  000000G				JSR	PC,DMCDBI			;					1270
000026	004767  000000G				JSR	PC,DMCNMI			;					1271
000032	004767  000000G				JSR	PC,DMCDVI			;					1272
000036	016500  000004 				MOV	4(R5),R0			; DB(.AP.),*				1274
000042	105760  000037 				TSTB	37(R0)
000046	001002 					BNE	1$
000050	004767  000000G				JSR	PC,$LTMEN
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  39
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (16)

000054	000207 				1$:	RTS	PC				;					1241

; Routine Size:  23 words,	Routine Base:  $CODE$ + 2036
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  40
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (17)

;	  1277	routine DMCRCE (DB, CCB) : MCB_DB_CCB novalue =
;	  1278	
;	  1279	!++
;	  1280	! FUNCTIONAL DESCRIPTION:
;	  1281	!
;	  1282	!
;	  1283	! FORMAL PARAMETERS:
;	  1284	!	DB = address of DMC data base.
;	  1285	!	CCB = 
;	  1286	!
;	  1287	! IMPLICIT INPUTS:
;	  1288	!	None
;	  1289	!
;	  1290	! IMPLICIT OUTPUTS:
;	  1291	!	None
;	  1292	!
;	  1293	! ROUTINE VALUE:
;	  1294	! COMPLETION CODES:
;	  1295	!	None
;	  1296	!
;	  1297	! SIDE EFFECTS:
;	  1298	!	None
;	  1299	!--
;	  1300	
;	  1301	    begin
;	  1302	    GET_DMC_DATA_BASE (DB)
;	  1303	
;	  1304	    map
;	  1305		CCB : ref block field (C_FIELDS);
;	  1306	
;	  1307	    RDBRT$ (.CCB);
;	  1308	    DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] - 1;
;	  1309	
;	  1310	    if .DB [D_ACTIVE_BUFFERS] neq 0 then return;
;	  1311	
;	  1312	    if .DB [DF_CTL] then CTLNXT (DB [D_TIM]);
;	  1313	
;	  1314	    end;			!of routine DMCRCE


						.GLOBL	$RDBRT


						.SBTTL	DMCRCE
000000	004767  000000G			DMCRCE: JSR	PC,$RDBRT			;					1307
000004	005365  000110 				DEC	110(R5)				; *(DB)					1308
000010	001006 					BNE	1$				;					1310
000012	032765  040000  000032 			BIT	#40000,32(R5)			; *,*(DB)				1312
000020	001402 					BEQ	1$
000022	004767  176722 				JSR	PC,CTLNXT
000026	000207 				1$:	RTS	PC				;					1277
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  41
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (17)

; Routine Size:  12 words,	Routine Base:  $CODE$ + 2114
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  42
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (18)

;	  1315	routine DMCTIM (DB, MODIFIER) : MCB_DB_MOD novalue =
;	  1316	
;	  1317	!++
;	  1318	! FUNCTIONAL DESCRIPTION:
;	  1319	!
;	  1320	!
;	  1321	! FORMAL PARAMETERS:
;	  1322	!	DB = address of DMC data base.
;	  1323	!	MODIFIER = timer function modifier.
;	  1324	!
;	  1325	! IMPLICIT INPUTS:
;	  1326	!	None
;	  1327	!
;	  1328	! IMPLICIT OUTPUTS:
;	  1329	!	None
;	  1330	!
;	  1331	! ROUTINE VALUE:
;	  1332	! COMPLETION CODES:
;	  1333	!	None
;	  1334	!
;	  1335	! SIDE EFFECTS:
;	  1336	!	None
;	  1337	!--
;	  1338	
;	  1339	    begin
;	  1340	    GET_DMC_DATA_BASE (DB)
;	P 1341	    DISPATCH$ (
;	P 1342		.MODIFIER,
;	P 1343		TABLE$ ($DSPCR, FD_TIM,		! Timer dispatch table:
;	P 1344		    (FM_PIN, TIMPIN),		!  Process initialization
;	P 1345		    (FM_PWF, TIMPWF),		!  Power failure
;	P 1346		    (FM_LTM, TIMLTM),		!  Long timer
;	P 1347		    (FM_CCB, TIMCCB),		!  CCB available
;	P 1348		    (FM_RDB, TIMRDB)),		!  RDB available
;	P 1349		(DB [D_TIM]),
;	  1350		MCB_DB);
;	  1351	    end;			!of routine DMCTIM



000064						.PSECT	$PLIT$,  RO ,  D  
000064	000000G				P.AAE:	.WORD	$DSPCR
000066	000000V					.WORD	TIMLTM
000070	000000V					.WORD	TIMPWF
000072	000000V					.WORD	TIMPIN
000074	000000V					.WORD	TIMCCB
000076	000000V					.WORD	TIMRDB


						.SBTTL	DMCTIM
002144						.PSECT	$CODE$,  RO 
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  43
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (18)

000000	004773  000064'			DMCTIM: JSR	PC,@P.AAE(R3)			; *,*(MODIFIER)				1350
000004	000207 					RTS	PC				;					1315

; Routine Size:  3 words,	Routine Base:  $CODE$ + 2144
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  44
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (19)

;	  1352	routine DMCXME (DB, CCB, MODIFIER) : MCB_DB_CCB_MOD novalue =
;	  1353	
;	  1354	!++
;	  1355	! FUNCTIONAL DESCRIPTION:
;	  1356	!
;	  1357	!
;	  1358	! FORMAL PARAMETERS:
;	  1359	!	DB = address of DMC data base.
;	  1360	!	CCB = address of transmit CCB.
;	  1361	!	MODIFIER = transmit function modifier (from C_MOD of CCB).
;	  1362	!
;	  1363	! IMPLICIT INPUTS:
;	  1364	!	None
;	  1365	!
;	  1366	! IMPLICIT OUTPUTS:
;	  1367	!	None
;	  1368	!
;	  1369	! ROUTINE VALUE:
;	  1370	! COMPLETION CODES:
;	  1371	!	None
;	  1372	!
;	  1373	! SIDE EFFECTS:
;	  1374	!	None
;	  1375	!--
;	  1376	
;	  1377	    begin
;	  1378	    GET_DMC_DATA_BASE (DB)
;	  1379	
;	  1380	    map
;	  1381		CCB : ref block field (C_FIELDS);
;	  1382	
;	P 1383	    DISPATCH$ (
;	P 1384		.MODIFIER,
;	P 1385		TABLE$ ($DSPCR, 0,
;	P 1386		    (DLL$K_ENTER_MAINTENANCE, DLLMOP),
;	P 1387		    (DLL$K_INITIALIZE_LINK, DLLINI),
;	P 1388		    (DLL$K_STOP_LINK, DLLSTP),
;	P 1389		    (DLL$K_TRANSMIT, QUEUE_TRANSMIT),
;	P 1390		    (DLL$K_TRANSMIT_AND_TIME, QUEUE_TRANSMIT)),
;	P 1391		(DB [D_TIM], .CCB),
;	  1392		DMC_DB_CCB);
;	  1393	    SET_PORT (DB [D_TIM]);
;	  1394	    end;			!of routine DMCXME



000100						.PSECT	$PLIT$,  RO ,  D  
000100	000000V				P.AAF:	.WORD	QUEUE.TRANSMIT
000102	001520'					.WORD	DLLINI
000104	001704'					.WORD	DLLSTP
000106	001612'					.WORD	DLLMOP
000110	000000V					.WORD	QUEUE.TRANSMIT
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  45
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (19)



						.SBTTL	DMCXME
002152						.PSECT	$CODE$,  RO 

000000	004773  000100'			DMCXME: JSR	PC,@P.AAF(R3)			; *,*(MODIFIER)				1392
000004	004767  000000V				JSR	PC,SET.PORT			;					1393
000010	000207 					RTS	PC				;					1352

; Routine Size:  5 words,	Routine Base:  $CODE$ + 2152
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  46
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (20)

;	  1395	routine FLUSH_QUEUES (DB) : DMC_DB novalue =
;	  1396	
;	  1397	!++
;	  1398	! FUNCTIONAL DESCRIPTION:
;	  1399	!
;	  1400	!
;	  1401	! FORMAL PARAMETERS:
;	  1402	!	DB = address of DMC data base.
;	  1403	!
;	  1404	! IMPLICIT INPUTS:
;	  1405	!	None
;	  1406	!
;	  1407	! IMPLICIT OUTPUTS:
;	  1408	!	None
;	  1409	!
;	  1410	! ROUTINE VALUE:
;	  1411	! COMPLETION CODES:
;	  1412	!	None
;	  1413	!
;	  1414	! SIDE EFFECTS:
;	  1415	!	None
;	  1416	!--
;	  1417	
;	  1418	    begin
;	  1419	    GET_DMC_DATA_BASE (DB)
;	  1420	
;	  1421	    local
;	  1422		CCB : ref block field (C_FIELDS);
;	  1423	
;	  1424	    RDBCN$ ();
;	  1425	    FLUSH_QUEUE (DB [D_ASSIGNED_TRANSMIT_CCBS], %quote SCHEDULE_TRANSMIT, DB [D_TIM], DLL$_ABORTED);
;	  1426	    FLUSH_QUEUE (DB [D_ASSIGNABLE_TRANSMIT_CCBS], %quote SCHEDULE_TRANSMIT, DB [D_TIM], DLL$_ABORTED);
;	  1427	    FLUSH_QUEUE (DB [D_ASSIGNED_RECEIVE_CCBS], %quote RDBRT$);
;	  1428	    FLUSH_QUEUE (DB [D_ASSIGNABLE_RECEIVE_CCBS], %quote RDBRT$);
;	  1429	    DB [D_ASSIGNABLE_TRANSMIT_COUNT] = 0;
;	  1430	    DB [D_ASSIGNABLE_RECEIVE_COUNT] = 0;
;	  1431	    end;			!of routine FLUSH_QUEUES


						.GLOBL	$RDBCN


						.SBTTL	FLUSH.QUEUES
000000	004767  000000G			FLUSH.QUEUES:
						JSR	PC,$RDBCN			;					1424
000004	010501 					MOV	R5,R1				; DB,*					1425
000006	062701  000060 				ADD	#60,R1
000012	010103 				1$:	MOV	R1,R3
000014	004767  000000G				JSR	PC,$CMQRM
000020	103405 					BCS	2$
000022	012700  100030 				MOV	#-77750,R0
000026	004767  000000V				JSR	PC,SCHEDULE.TRANSMIT
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  47
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (20)

000032	000767 					BR	1$
000034	010501 				2$:	MOV	R5,R1				; DB,*					1426
000036	062701  000054 				ADD	#54,R1
000042	010103 				3$:	MOV	R1,R3
000044	004767  000000G				JSR	PC,$CMQRM
000050	103405 					BCS	4$
000052	012700  100030 				MOV	#-77750,R0
000056	004767  000000V				JSR	PC,SCHEDULE.TRANSMIT
000062	000767 					BR	3$
000064	010501 				4$:	MOV	R5,R1				; DB,*					1427
000066	062701  000050 				ADD	#50,R1
000072	010103 				5$:	MOV	R1,R3
000074	004767  000000G				JSR	PC,$CMQRM
000100	103403 					BCS	6$
000102	004767  000000G				JSR	PC,$RDBRT
000106	000771 					BR	5$
000110	010501 				6$:	MOV	R5,R1				; DB,*					1428
000112	062701  000044 				ADD	#44,R1
000116	010103 				7$:	MOV	R1,R3
000120	004767  000000G				JSR	PC,$CMQRM
000124	103403 					BCS	8$
000126	004767  000000G				JSR	PC,$RDBRT
000132	000771 					BR	7$
000134	105065  000115 			8$:	CLRB	115(R5)				; *(DB)					1429
000140	105065  000114 				CLRB	114(R5)				; *(DB)					1430
000144	000207 					RTS	PC				;					1395

; Routine Size:  51 words,	Routine Base:  $CODE$ + 2164
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  48
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (21)

;	  1432	global routine MASTER_CLEAR (DB) : LINKAGE_DB =
;	  1433	
;	  1434	!++
;	  1435	! FUNCTIONAL DESCRIPTION:
;	  1436	!
;	  1437	!
;	  1438	! FORMAL PARAMETERS:
;	  1439	!	DB = address of DMC data base.
;	  1440	!
;	  1441	! IMPLICIT INPUTS:
;	  1442	!	None
;	  1443	!
;	  1444	! IMPLICIT OUTPUTS:
;	  1445	!	None
;	  1446	!
;	  1447	! ROUTINE VALUE:
;	  1448	! COMPLETION CODES:
;	  1449	!	None
;	  1450	!
;	  1451	! SIDE EFFECTS:
;	  1452	!	None
;	  1453	!--
;	  1454	
;	  1455	    begin
;	  1456	    GET_DMC_DATA_BASE (DB)
;	  1457	
;	  1458	    local
;	  1459		STATUS;
;	  1460	
;	  1461	    STATUS = FALSE;
;	  1462	
;	  1463	    if .DB [D_DEVICE_STATE] eql DD_CLEARED then return .STATUS;
;	  1464	
;	  1465	    $DMC_WRITE (.DB [D_REGISTER], BSEL2, 0);
;	  1466	    $DMC_WRITE (.DB [D_REGISTER], SEL0, 1^%fieldexpand (MC, 1));
;	  1467	
;	  1468	    do
;	  1469		begin
;	  1470	
;	  1471		if not $DMC_BITS_CLEAR (.DB [D_REGISTER], SEL0, RUN) then exitloop STATUS = TRUE;
;	  1472	
;	  1473		end
;	  1474	    until (STATUS = .STATUS - 1) eql FALSE;
;	  1475	
;	  1476	    if .DB [D_PROTOCOL_STATE] neq DS_HALTED
;	  1477	    then
;	  1478		CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_HALTED, LCL);
;	  1479	
;	  1480	    if .DB [D_DEVICE_STATE] neq DD_MASTER_CLEARED
;	  1481	    then
;	  1482		begin
;	  1483		FLUSH_QUEUES (DB [D_TIM]);
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  49
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (21)

;	  1484		DB [D_ASSIGNED_TRANSMIT_COUNT] = 0;
;	  1485		DB [D_ASSIGNED_RECEIVE_COUNT] = 0;
;	  1486		DB [D_DEVICE_STATE] = DD_MASTER_CLEARED;
;	  1487		DB [D_INPUT_COMMAND] = 0;
;	  1488		DB [DF_PROTOCOL_UP] = FALSE;
;	  1489		end;
;	  1490	
;	  1491	    .STATUS
;	  1492	    end;			!of routine MASTER_CLEAR


						.SBTTL	MASTER.CLEAR
000000	004167  000000G			MASTER.CLEAR::
						JSR	R1,$SAVE4			;					1432
000004	005046 					CLR	-(SP)				; STATUS				1461
000006	012746  000040 				MOV	#40,-(SP)			;					1463
000012	060516 					ADD	R5,(SP)				; DB,*
000014	127627  000000  000005 			CMPB	@0(SP),#5
000022	001472 					BEQ	5$
000024	016500  000002 				MOV	2(R5),R0			; *(DB),*				1465
000030	105060  000002 				CLRB	2(R0)
000034	012710  040000 				MOV	#40000,(R0)			;					1466
000040	032710  100000 			1$:	BIT	#-100000,(R0)			;					1471
000044	001404 					BEQ	2$
000046	012766  000001  000002 			MOV	#1,2(SP)			; *,STATUS
000054	000403 					BR	3$
000056	005366  000002 			2$:	DEC	2(SP)				; STATUS				1474
000062	001366 					BNE	1$
000064	012701  000034 			3$:	MOV	#34,R1				;					1476
000070	060501 					ADD	R5,R1				; DB,*
000072	105711 					TSTB	(R1)
000074	001425 					BEQ	4$
000076	004767  000000G				JSR	PC,$NLBEG			;					1478
000102	005046 					CLR	-(SP)
000104	111100 					MOVB	(R1),R0
000106	004767  000000G				JSR	PC,$DPC1
000112	105011 					CLRB	(R1)
000114	012716  000001 				MOV	#1,(SP)
000120	105000 					CLRB	R0
000122	004767  000000G				JSR	PC,$DPC1
000126	012700  000500 				MOV	#500,R0
000132	016501  000100 				MOV	100(R5),R1			; *(DB),*
000136	004767  000000G				JSR	PC,$NLEND
000142	004767  000000V				JSR	PC,SEND.STATE
000146	005726 					TST	(SP)+
000150	105776  000000 			4$:	TSTB	@0(SP)				;					1480
000154	001415 					BEQ	5$
000156	004767  177450 				JSR	PC,FLUSH.QUEUES			;					1483
000162	105065  000117 				CLRB	117(R5)				; *(DB)					1484
000166	105065  000116 				CLRB	116(R5)				; *(DB)					1485
000172	105076  000000 				CLRB	@0(SP)				;					1486
000176	105065  000012 				CLRB	12(R5)				; *(DB)					1487
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  50
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (21)

000202	042765  020000  000032 			BIC	#20000,32(R5)			; *,*(DB)				1488
000210	016600  000002 			5$:	MOV	2(SP),R0			; STATUS,*				1432
000214	022626 					CMP	(SP)+,(SP)+
000216	000207 					RTS	PC

; Routine Size:  72 words,	Routine Base:  $CODE$ + 2332
; Maximum stack depth per invocation:  9 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  51
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (22)

;	  1493	routine OUTPUT_TRANSFER (DB) : LINKAGE_DB novalue =
;	  1494	
;	  1495	!++
;	  1496	! FUNCTIONAL DESCRIPTION:
;	  1497	!
;	  1498	!
;	  1499	! FORMAL PARAMETERS:
;	  1500	!	DB = address of DMC data base.
;	  1501	!
;	  1502	! IMPLICIT INPUTS:
;	  1503	!	None
;	  1504	!
;	  1505	! IMPLICIT OUTPUTS:
;	  1506	!	None
;	  1507	!
;	  1508	! ROUTINE VALUE:
;	  1509	! COMPLETION CODES:
;	  1510	!	None
;	  1511	!
;	  1512	! SIDE EFFECTS:
;	  1513	!	None
;	  1514	!--
;	  1515	
;	  1516	    begin
;	  1517	    GET_DMC_DATA_BASE (DB)
;	  1518	
;	  1519	    macro
;	  1520		REG (FLD) = DB [$SUB_FIELD (D_OUTPUT_DATA, FLD)] %;
;	  1521	
;	  1522	    field
;	  1523		CMD = [$SUB_FIELD (SEL2, TYPEO)];
;	  1524	
;	  1525	    case .REG [CMD] from 0 to 7 of
;	  1526		set
;	  1527		[BA_CC_O + XMT] :
;	  1528		    begin
;	  1529		    TRANSMIT_OUT (DB [D_TIM], .REG [SEL4], .REG [SEL6]);
;	  1530		    DB [D_ASSIGNED_TRANSMIT_COUNT] = .DB [D_ASSIGNED_TRANSMIT_COUNT] - 1;
;	  1531		    RESET_TIMER (DB [D_TIM]);
;	  1532		    end;
;	  1533		[BA_CC_O + RCV] :
;	  1534		    begin
;	  1535		    RECEIVE_OUT (DB [D_TIM], .REG [SEL4], .REG [SEL6]);
;	  1536		    DB [D_ASSIGNED_RECEIVE_COUNT] = .DB [D_ASSIGNED_RECEIVE_COUNT] - 1;
;	  1537		    end;
;	  1538		[CNTL_O + XMT, CNTL_O + RCV] :
;	  1539		    begin
;	  1540		    CONTROL_OUT (DB [D_TIM], .REG [SEL6]);
;	  1541		    end;
;	  1542		[inrange] :
;	  1543		    begin
;	P 1544		    $NM_PLL_EVENT (4, .DB [D_LINE_ENTITY],
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  52
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (22)

;	  1545			PARAMETER_DEVICE_REGISTERS (REG [SEL0]));
;	  1546		    COUNTER_INCREMENT (DB, D_INVALID_REGISTER_CONTENTS);
;	  1547		    COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
;	  1548		    SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
;	  1549		    MASTER_CLEAR (DB [D_TIM]);
;	  1550		    end;
;	  1551		tes;
;	  1552	
;	  1553	    SET_PORT (DB [D_TIM]);
;	  1554	    end;			!of routine OUTPUT_TRANSFER


						.SBTTL	OUTPUT.TRANSFER
000000	004167  000000G			OUTPUT.TRANSFER:
						JSR	R1,$SAVE5			;					1493
000004	010546 					MOV	R5,-(SP)
000006	010501 					MOV	R5,R1				;					1525
000010	116100  000024 				MOVB	24(R1),R0
000014	042700  177770 				BIC	#177770,R0
000020	006300 					ASL	R0
000022	066007  000112'				ADD	P.AAG(R0),PC			; Case dispatch
000026	011600 				1$:	MOV	(SP),R0				;					1529
000030	016046  000026 				MOV	26(R0),-(SP)
000034	016046  000030 				MOV	30(R0),-(SP)
000040	010005 					MOV	R0,R5
000042	004767  000000V				JSR	PC,TRANSMIT.OUT
000046	016601  000004 				MOV	4(SP),R1			;					1530
000052	105361  000117 				DECB	117(R1)
000056	010105 					MOV	R1,R5				;					1531
000060	004767  000000V				JSR	PC,RESET.TIMER
000064	000414 					BR	3$				;					1528
000066	011600 				2$:	MOV	(SP),R0				;					1535
000070	016046  000026 				MOV	26(R0),-(SP)
000074	016046  000030 				MOV	30(R0),-(SP)
000100	010005 					MOV	R0,R5
000102	004767  000000V				JSR	PC,RECEIVE.OUT
000106	016601  000004 				MOV	4(SP),R1			;					1536
000112	105361  000116 				DECB	116(R1)
000116	022626 				3$:	CMP	(SP)+,(SP)+			;					1534
000120	000450 					BR	6$				;					1525
000122	011605 				4$:	MOV	(SP),R5				;					1540
000124	010500 					MOV	R5,R0
000126	016003  000030 				MOV	30(R0),R3
000132	004767  175212 				JSR	PC,CONTROL.OUT
000136	000441 					BR	6$				;					1525
000140	004767  000000G			5$:	JSR	PC,$NLBEG			;					1545
000144	011605 					MOV	(SP),R5
000146	062705  000022 				ADD	#22,R5
000152	010501 					MOV	R5,R1
000154	004767  000000V				JSR	PC,PLL0
000160	012700  000604 				MOV	#604,R0
000164	011602 					MOV	(SP),R2
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  53
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (22)

000166	016201  000102 				MOV	102(R2),R1
000172	004767  000000G				JSR	PC,$NLEND
000176	011600 					MOV	(SP),R0				;					1546
000200	052760  000400  000152 			BIS	#400,152(R0)
000206	012701  000152 				MOV	#152,R1				;					1547
000212	060001 					ADD	R0,R1
000214	010100 					MOV	R1,R0
000216	004767  000000G				JSR	PC,$IC8
000222	011605 					MOV	(SP),R5				;					1548
000224	012703  100174 				MOV	#-77604,R3
000230	004767  000000V				JSR	PC,SEND.PERSISTENT.ERROR
000234	011605 					MOV	(SP),R5				;					1549
000236	004767  177316 				JSR	PC,MASTER.CLEAR
000242	011605 				6$:	MOV	(SP),R5				;					1553
000244	004767  000000V				JSR	PC,SET.PORT
000250	005726 					TST	(SP)+				;					1493
000252	000207 					RTS	PC

; Routine Size:  86 words,	Routine Base:  $CODE$ + 2552
; Maximum stack depth per invocation:  10 words


000112						.PSECT	$PLIT$,  RO ,  D  

					P.AAG:						; CASE Table for OUTPUT.TRANSFER+0022	1525
000112	000000 					.WORD	0				; [1$]
000114	000074 					.WORD	74				; [4$]
000116	000112 					.WORD	112				; [5$]
000120	000112 					.WORD	112				; [5$]
000122	000040 					.WORD	40				; [2$]
000124	000074 					.WORD	74				; [4$]
000126	000112 					.WORD	112				; [5$]
000130	000112 					.WORD	112				; [5$]
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  54
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (23)

;	  1555	global routine PARAMETER_DEVICE_REGISTERS
;	  1556	
;	  1557	!++
;	  1558	! FUNCTIONAL DESCRIPTION:
;	  1559	!
;	  1560	!
;	  1561	! FORMAL PARAMETERS:
;	  1562	!
;	  1563	       (REG : ref vector)
;	  1564	!
;	  1565	! IMPLICIT INPUTS:
;	  1566	!	None
;	  1567	!
;	  1568	! IMPLICIT OUTPUTS:
;	  1569	!	None
;	  1570	!
;	  1571	! ROUTINE VALUE:
;	  1572		: DMC_REG novalue =
;	  1573	!
;	  1574	! SIDE EFFECTS:
;	  1575	!	None
;	  1576	!--
;	  1577	
;	  1578	    begin
;	  1579	
;	  1580	    !
;	  1581	    ! DMC registers
;	  1582	    !
;	  1583	
;	  1584	    PARAMETER_H_2 (0, REG [0]);
;	  1585	    REG = REG [1];
;	  1586	    PARAMETER_H_2 (0, REG [0]);
;	  1587	    REG = REG [1];
;	  1588	    PARAMETER_H_2 (0, REG [0]);
;	  1589	    REG = REG [1];
;	  1590	    PARAMETER_H_2 (0, REG [0]);
;	  1591	    end;			!of routine PARAMETER_DEVICE_REGISTERS


						.GLOBL	$DPH2


						.SBTTL	PLL0
003026						.PSECT	$CODE$,  RO 

000000	005046 				PLL0::	CLR	-(SP)				;					1584
000002	011100 					MOV	(R1),R0				; REG,*
000004	004767  000000G				JSR	PC,$DPH2
000010	062701  000002 				ADD	#2,R1				; *,REG					1585
000014	005016 					CLR	(SP)				;					1586
000016	011100 					MOV	(R1),R0				; REG,*
000020	004767  000000G				JSR	PC,$DPH2
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  55
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (23)

000024	062701  000002 				ADD	#2,R1				; *,REG					1587
000030	005016 					CLR	(SP)				;					1588
000032	011100 					MOV	(R1),R0				; REG,*
000034	004767  000000G				JSR	PC,$DPH2
000040	062701  000002 				ADD	#2,R1				; *,REG					1589
000044	005016 					CLR	(SP)				;					1590
000046	011100 					MOV	(R1),R0				; REG,*
000050	004767  000000G				JSR	PC,$DPH2
000054	005726 					TST	(SP)+				;					1578
000056	000207 					RTS	PC				;					1555

; Routine Size:  24 words,	Routine Base:  $CODE$ + 3026
; Maximum stack depth per invocation:  2 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  56
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (24)

;	  1592	routine QUEUE_TRANSMIT (DB, CCB) : DMC_DB_CCB novalue =
;	  1593	
;	  1594	!++
;	  1595	! FUNCTIONAL DESCRIPTION:
;	  1596	!
;	  1597	!
;	  1598	! FORMAL PARAMETERS:
;	  1599	!	DB = address of DMC data base.
;	  1600	!	CCB = address of CCB.
;	  1601	!
;	  1602	! IMPLICIT INPUTS:
;	  1603	!	None
;	  1604	!
;	  1605	! IMPLICIT OUTPUTS:
;	  1606	!	None
;	  1607	!
;	  1608	! ROUTINE VALUE:
;	  1609	! COMPLETION CODES:
;	  1610	!	None
;	  1611	!
;	  1612	! SIDE EFFECTS:
;	  1613	!	None
;	  1614	!--
;	  1615	
;	  1616	    begin
;	  1617	    GET_DMC_DATA_BASE (DB)
;	  1618	
;	  1619	    map
;	  1620		CCB : ref block field (C_FIELDS);
;	  1621	
;	  1622	    local
;	  1623		MSG_CNT;
;	  1624	
;	  1625	    if .DB [D_PROTOCOL_STATE] eql DS_MAINTENANCE
;	  1626	    then
;	  1627		begin
;	  1628		local
;	  1629		    SAVE_MAP;
;	  1630		SMAP$ (SAVE_MAP);
;	  1631		MAP$ (.CCB [C_BIAS]);
;	  1632		selectone ch$rchar (.CCB [C_ADDR]) of
;	  1633		    set
;	  1634		    [8, 12]:
;	  1635			ch$wchar (12, ch$plus (.CCB [C_ADDR], 1));
;	  1636		    tes;
;	  1637		MAP$ (.SAVE_MAP);
;	  1638		end;
;	  1639	
;	  1640	    DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] + 1;
;	  1641	    DB [D_ASSIGNABLE_TRANSMIT_COUNT] = .DB [D_ASSIGNABLE_TRANSMIT_COUNT] + 1;
;	  1642	    CMQIN$ (DB [D_ASSIGNABLE_TRANSMIT_CCBS], .CCB);
;	  1643	
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  57
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (24)

;	  1644	    if .CCB [C_CHN] eqla 0 then return;
;	  1645	
;	  1646	    MSG_CNT = .DB [D_TRANSMIT_BUFFER_SIZE];
;	  1647	
;	  1648	    do
;	  1649		begin
;	  1650	
;	  1651		if (MSG_CNT = .MSG_CNT - .CCB [C_CNT]) lss 0
;	  1652		then
;	  1653		    SIGNAL_STOP (DMC$_MTL, .DB [$SUB_FIELD (D_ASSIGNABLE_TRANSMIT_CCBS, LIST_LAST)]);
;	  1654	
;	  1655		end
;	  1656	    while (CCB = .CCB [C_CHN]) neq 0;
;	  1657	
;	  1658	    end;			!of routine QUEUE_TRANSMIT


						.GLOBL	KISAR6, $CMQIN


						.SBTTL	QUEUE.TRANSMIT
000000	010146 				QUEUE.TRANSMIT:
						MOV	R1,-(SP)			;					1592
000002	010346 					MOV	R3,-(SP)
000004	010546 					MOV	R5,-(SP)
000006	010501 					MOV	R5,R1				; *,DB
000010	126127  000034  000004 			CMPB	34(R1),#4			; *(DB),*				1625
000016	001025 					BNE	3$
000020	016703  000000G				MOV	KISAR6,R3			; *,SAVE.MAP				1630
000024	016467  000016  000000G			MOV	16(R4),KISAR6			; *(CCB),*				1631
000032	005000 					CLR	R0				;					1632
000034	157400  000020 				BISB	@20(R4),R0			; *(CCB),*
000040	020027  000010 				CMP	R0,#10
000044	001403 					BEQ	1$
000046	020027  000014 				CMP	R0,#14
000052	001005 					BNE	2$
000054	016400  000020 			1$:	MOV	20(R4),R0			; *(CCB),*				1635
000060	112760  000014  000001 			MOVB	#14,1(R0)
000066	010367  000000G			2$:	MOV	R3,KISAR6			; SAVE.MAP,*				1637
000072	005261  000110 			3$:	INC	110(R1)				; *(DB)					1640
000076	105261  000115 				INCB	115(R1)				; *(DB)					1641
000102	010105 					MOV	R1,R5				; DB,*					1642
000104	062705  000054 				ADD	#54,R5
000110	010503 					MOV	R5,R3
000112	004767  000000G				JSR	PC,$CMQIN
000116	005764  000002 				TST	2(R4)				; *(CCB)				1644
000122	001422 					BEQ	6$
000124	016103  000064 				MOV	64(R1),R3			; *(DB),MSG.CNT				1646
000130	166403  000022 			4$:	SUB	22(R4),R3			; *(CCB),MSG.CNT			1651
000134	100012 					BPL	5$
000136	016146  000056 				MOV	56(R1),-(SP)			; *(DB),*				1653
000142	012746  100024 				MOV	#-77754,-(SP)
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  58
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (24)

000146	012746  000002 				MOV	#2,-(SP)
000152	004767  000000G				JSR	PC,$STOP
000156	062706  000006 				ADD	#6,SP
000162	016404  000002 			5$:	MOV	2(R4),R4			; *(CCB),CCB				1656
000166	001360 					BNE	4$
000170	012605 				6$:	MOV	(SP)+,R5			;					1592
000172	012603 					MOV	(SP)+,R3
000174	012601 					MOV	(SP)+,R1
000176	000207 					RTS	PC

; Routine Size:  64 words,	Routine Base:  $CODE$ + 3106
; Maximum stack depth per invocation:  7 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  59
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (25)

;	  1659	routine RECEIVE_IN (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
;	  1660	
;	  1661	!++
;	  1662	! FUNCTIONAL DESCRIPTION:
;	  1663	!
;	  1664	!
;	  1665	! FORMAL PARAMETERS:
;	  1666	!	DB = address of DMC data base.
;	  1667	!
;	  1668	! IMPLICIT INPUTS:
;	  1669	!	None
;	  1670	!
;	  1671	! IMPLICIT OUTPUTS:
;	  1672	!	None
;	  1673	!
;	  1674	! ROUTINE VALUE:
;	  1675	! COMPLETION CODES:
;	  1676	!	None
;	  1677	!
;	  1678	! SIDE EFFECTS:
;	  1679	!	None
;	  1680	!--
;	  1681	
;	  1682	    begin
;	  1683	    GET_DMC_DATA_BASE (DB)
;	  1684	
;	  1685	    local
;	  1686		CCB : ref block field (C_FIELDS);
;	  1687	
;	  1688	    if not CMQRM$ (DB [D_ASSIGNABLE_RECEIVE_CCBS], CCB)
;	  1689	    then
;	  1690		return SIGNAL_STOP (DMC$_QUE, DB [D_ASSIGNABLE_RECEIVE_CCBS]);
;	  1691	
;	  1692	    DB [D_ASSIGNABLE_RECEIVE_COUNT] = .DB [D_ASSIGNABLE_RECEIVE_COUNT] - 1;
;	  1693	    CMQIN$ (DB [D_ASSIGNED_RECEIVE_CCBS], .CCB);
;	  1694	    begin
;	  1695	
;	  1696	    local
;	  1697		TEMP;
;	  1698	
;	  1699	    $MCB_CONVERT_TO_UBA_ADDRESS ((.CCB [C_BIAS], .CCB [C_ADDR]), .LOW, TEMP);
;	  1700	    TEMP = .TEMP^%fieldexpand (BA_HIGH, 1);
;	  1701	    .HIGH = (TEMP = .TEMP + .MCB$GW_RDB_SIZE);
;	  1702	    end;
;	  1703	    end;			!of routine RECEIVE_IN


						.SBTTL	RECEIVE.IN
000000	010546 				RECEIVE.IN:
						MOV	R5,-(SP)			;					1659
000002	010500 					MOV	R5,R0				; DB,*					1688
000004	062700  000044 				ADD	#44,R0
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  60
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (25)

000010	010003 					MOV	R0,R3
000012	004767  000000G				JSR	PC,$CMQRM
000016	103012 					BHIS	1$
000020	010046 					MOV	R0,-(SP)			;					1690
000022	012746  100034 				MOV	#-77744,-(SP)
000026	012746  000002 				MOV	#2,-(SP)
000032	004767  000000G				JSR	PC,$STOP
000036	062706  000006 				ADD	#6,SP
000042	000425 					BR	2$
000044	105365  000114 			1$:	DECB	114(R5)				; *(DB)					1692
000050	062705  000050 				ADD	#50,R5				; *,DB					1693
000054	010503 					MOV	R5,R3
000056	004767  000000G				JSR	PC,$CMQIN
000062	016402  000016 				MOV	16(R4),R2			; *(CCB),*				1699
000066	016403  000020 				MOV	20(R4),R3			; *(CCB),*
000072	004767  000000G				JSR	PC,$PHY18
000076	010376  000006 				MOV	R3,@6(SP)			; *,LOW
000102	072227  000016 				ASH	#16,R2				;					1700
000106	066702  000000G				ADD	.RDBSZ,R2			; *,TEMP				1701
000112	010276  000004 				MOV	R2,@4(SP)			; TEMP,HIGH
000116	012605 				2$:	MOV	(SP)+,R5			;					1659
000120	000207 					RTS	PC

; Routine Size:  41 words,	Routine Base:  $CODE$ + 3306
; Maximum stack depth per invocation:  5 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  61
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (26)

;	  1704	routine RECEIVE_OUT (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
;	  1705	
;	  1706	!++
;	  1707	! FUNCTIONAL DESCRIPTION:
;	  1708	!
;	  1709	!
;	  1710	! FORMAL PARAMETERS:
;	  1711	!	DB = address of DMC data base.
;	  1712	!
;	  1713	! IMPLICIT INPUTS:
;	  1714	!	None
;	  1715	!
;	  1716	! IMPLICIT OUTPUTS:
;	  1717	!	None
;	  1718	!
;	  1719	! ROUTINE VALUE:
;	  1720	! COMPLETION CODES:
;	  1721	!	None
;	  1722	!
;	  1723	! SIDE EFFECTS:
;	  1724	!	None
;	  1725	!--
;	  1726	
;	  1727	    begin
;	  1728	    GET_DMC_DATA_BASE (DB)
;	  1729	
;	  1730	    map
;	  1731		HIGH : block [1] field (DMC_FIELDS),
;	  1732		LOW : block [1] field (DMC_FIELDS);
;	  1733	
;	  1734	    local
;	  1735		CCB : ref block field (C_FIELDS);
;	  1736	
;	  1737	    if not CMQRM$ (DB [D_ASSIGNED_RECEIVE_CCBS], CCB)
;	  1738	    then
;	  1739		SIGNAL_STOP (DMC$_QUE, DB [D_ASSIGNED_RECEIVE_CCBS]);
;	  1740	
;	  1741	    if not CHECK_BA (DB [D_TIM], .CCB [C_BIAS], .CCB [C_ADDR])
;	  1742	    then
;	  1743		begin
;	  1744		RDBRT$ (.CCB);
;	  1745		COUNTER_INCREMENT (DB, D_RECEIVE_BA_MISMATCH);
;	  1746		COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
;	  1747		SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
;	  1748		MASTER_CLEAR (DB [D_TIM]);
;	  1749		return;
;	  1750		end;
;	  1751	
;	  1752	    CCB [C_CNT] = .HIGH [CC];
;	  1753	
;	  1754	    if .DB [D_PROTOCOL_STATE] eql DS_RUNNING
;	  1755	    then
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  62
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (26)

;	  1756		begin
;	  1757		COUNTER_ADD (DB, D_BYTES_RECEIVED, .CCB [C_CNT]);
;	  1758		COUNTER_INCREMENT (DB, D_BLOCKS_RECEIVED);
;	  1759		end;
;	  1760	
;	  1761	    DB [DF_PROTOCOL_UP] = TRUE;
;	  1762	    SCHEDULE_RECEIVE (.CCB, DB [D_TIM]);
;	  1763	    DB [DF_WAITING_FOR_RECEIVE] = FALSE;
;	  1764	    end;			!of routine RECEIVE_OUT


						.GLOBL	$AC32, $IC32


						.SBTTL	RECEIVE.OUT
000000	010146 				RECEIVE.OUT:
						MOV	R1,-(SP)			;					1704
000002	005746 					TST	-(SP)
000004	012703  000050 				MOV	#50,R3				;					1737
000010	060503 					ADD	R5,R3				; DB,*
000012	004767  000000G				JSR	PC,$CMQRM
000016	103402 					BCS	1$
000020	010416 					MOV	R4,(SP)				; $MCB$R4,CCB
000022	000411 					BR	2$
000024	010346 				1$:	MOV	R3,-(SP)			;					1739
000026	012746  100034 				MOV	#-77744,-(SP)
000032	012746  000002 				MOV	#2,-(SP)
000036	004767  000000G				JSR	PC,$STOP
000042	062706  000006 				ADD	#6,SP
000046	011600 				2$:	MOV	(SP),R0				; CCB,*					1741
000050	016002  000016 				MOV	16(R0),R2			; *(CCB),*
000054	016003  000020 				MOV	20(R0),R3			; *(CCB),*
000060	004767  174324 				JSR	PC,CHECK.BA
000064	006000 					ROR	R0
000066	103422 					BLO	3$
000070	011604 					MOV	(SP),R4				; CCB,*					1744
000072	004767  000000G				JSR	PC,$RDBRT
000076	052765  001000  000152 			BIS	#1000,152(R5)			; *,*(DB)				1745
000104	012700  000152 				MOV	#152,R0				;					1746
000110	060500 					ADD	R5,R0				; DB,*
000112	004767  000000G				JSR	PC,$IC8
000116	012703  100174 				MOV	#-77604,R3			;					1747
000122	004767  000000V				JSR	PC,SEND.PERSISTENT.ERROR
000126	004767  176550 				JSR	PC,MASTER.CLEAR			;					1748
000132	000440 					BR	5$				;					1743
000134	011600 				3$:	MOV	(SP),R0				; CCB,*					1752
000136	016660  000006  000022 			MOV	6(SP),22(R0)			; HIGH,*(CCB)
000144	042760  140000  000022 			BIC	#140000,22(R0)			; *,*(CCB)
000152	126527  000034  000003 			CMPB	34(R5),#3			; *(DB),*				1754
000160	001015 					BNE	4$
000162	012700  000126 				MOV	#126,R0				;					1757
000166	060500 					ADD	R5,R0				; DB,*
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  63
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (26)

000170	011602 					MOV	(SP),R2				; CCB,*
000172	016201  000022 				MOV	22(R2),R1			; *(CCB),*
000176	004767  000000G				JSR	PC,$AC32
000202	012700  000136 				MOV	#136,R0				;					1758
000206	060500 					ADD	R5,R0				; DB,*
000210	004767  000000G				JSR	PC,$IC32
000214	052765  020000  000032 		4$:	BIS	#20000,32(R5)			; *,*(DB)				1761
000222	011604 					MOV	(SP),R4				; CCB,*					1762
000224	004767  000000V				JSR	PC,SCHEDULE.RECEIVE
000230	042715  100000 				BIC	#100000,(R5)			; *,DB					1763
000234	005726 				5$:	TST	(SP)+				;					1704
000236	012601 					MOV	(SP)+,R1
000240	000207 					RTS	PC

; Routine Size:  81 words,	Routine Base:  $CODE$ + 3430
; Maximum stack depth per invocation:  6 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  64
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (27)

;	  1765	routine RESET_TIMER (DB) : LINKAGE_DB novalue =
;	  1766	
;	  1767	!++
;	  1768	! FUNCTIONAL DESCRIPTION:
;	  1769	!
;	  1770	!
;	  1771	! FORMAL PARAMETERS:
;	  1772	!	DB = address of DMC data base.
;	  1773	!
;	  1774	! IMPLICIT INPUTS:
;	  1775	!	None
;	  1776	!
;	  1777	! IMPLICIT OUTPUTS:
;	  1778	!	None
;	  1779	!
;	  1780	! ROUTINE VALUE:
;	  1781	! COMPLETION CODES:
;	  1782	!	None
;	  1783	!
;	  1784	! SIDE EFFECTS:
;	  1785	!	None
;	  1786	!--
;	  1787	
;	  1788	    begin
;	  1789	    GET_DMC_DATA_BASE (DB)
;	  1790	    DB [D_TIM] = 0;
;	  1791	
;	  1792	    selectone TRUE of
;	  1793		set
;	  1794		[.DB [DF_WAITING_FOR_RDYI]] :
;	  1795		    DB [D_TIM] = .DB [D_TIM] + 1;
;	  1796	
;	  1797		[.DB [DF_FLUSHING_DMC]] :
;	  1798		    DB [D_TIM] = 3;
;	  1799	
;	  1800		[.DB [D_TRANSIENT_ERROR] neq 0] :
;	  1801		    DB [D_TIM] = 2;
;	  1802	
;	  1803		[.DB [D_PERSISTENT_ERROR] neq 0] :
;	  1804		    DB [D_TIM] = 2;
;	  1805	
;	  1806		[.DB [D_ASSIGNED_TRANSMIT_COUNT] neq 0] :
;	  1807		    DB [D_TIM] = .DB [D_TRANSMIT_TIMEOUT];
;	  1808	
;	  1809		[.DB [DF_WAITING_FOR_RECEIVE]] :
;	  1810		    DB [D_TIM] = .DB [D_SERVICE_TIMER];
;	  1811	
;	  1812		tes;
;	  1813	    end;			!of routine RESET_TIMER


						.SBTTL	RESET.TIMER
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  65
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (27)

000000	105015 				RESET.TIMER:
						CLRB	(R5)				; DB					1790
000002	032715  004000 				BIT	#4000,(R5)			; *,DB					1792
000006	001402 					BEQ	1$
000010	105215 					INCB	(R5)				; DB					1795
000012	000207 					RTS	PC				;					1792
000014	032715  010000 			1$:	BIT	#10000,(R5)			; *,DB
000020	001403 					BEQ	2$
000022	112715  000003 				MOVB	#3,(R5)				; *,DB					1798
000026	000207 					RTS	PC				;					1792
000030	005765  000104 			2$:	TST	104(R5)				; *(DB)					1800
000034	001003 					BNE	3$				;					1801
000036	005765  000106 				TST	106(R5)				; *(DB)					1803
000042	001403 					BEQ	4$
000044	112715  000002 			3$:	MOVB	#2,(R5)				; *,DB					1804
000050	000207 					RTS	PC				;					1792
000052	105765  000117 			4$:	TSTB	117(R5)				; *(DB)					1806
000056	001403 					BEQ	5$
000060	116515  000041 				MOVB	41(R5),(R5)			; *(DB),DB				1807
000064	000207 					RTS	PC				;					1792
000066	005715 				5$:	TST	(R5)				; DB
000070	100002 					BPL	6$
000072	116515  000076 				MOVB	76(R5),(R5)			; *(DB),DB				1810
000076	000207 				6$:	RTS	PC				;					1765

; Routine Size:  32 words,	Routine Base:  $CODE$ + 3672
; Maximum stack depth per invocation:  0 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  66
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (28)

;	  1814	routine SCHEDULE_PERSISTENT_AST (CCB, DB) : DMC_CCB_DB novalue =
;	  1815	
;	  1816	!++
;	  1817	! FUNCTIONAL DESCRIPTION:
;	  1818	!
;	  1819	!
;	  1820	! FORMAL PARAMETERS:
;	  1821	!	CCB = address of CCB to use for status nodification.
;	  1822	!	DB = address of DMC data base.
;	  1823	!
;	  1824	! IMPLICIT INPUTS:
;	  1825	!	None
;	  1826	!
;	  1827	! IMPLICIT OUTPUTS:
;	  1828	!	None
;	  1829	!
;	  1830	! ROUTINE VALUE:
;	  1831	! COMPLETION CODES:
;	  1832	!	None
;	  1833	!
;	  1834	! SIDE EFFECTS:
;	  1835	!	None
;	  1836	!--
;	  1837	
;	  1838	    begin
;	  1839	    GET_DMC_DATA_BASE (DB)
;	  1840	
;	  1841	    map
;	  1842		CCB : ref block field (C_FIELDS);
;	  1843	
;	  1844	    CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
;	  1845	    CCB [C_FNC] = FC_AST;
;	  1846	    CCB [C_MOD] = DLL$K_PERSISTENT_ERROR;
;	  1847	    CCB [C_STS] = .DB [D_PERSISTENT_ERROR];
;	  1848	    $MCB_SCHEDULE_CCB (.CCB);
;	  1849	    DB [D_PERSISTENT_ERROR] = 0;
;	  1850	    end;			!of routine SCHEDULE_PERSISTENT_AST


						.SBTTL	SCHEDULE.PERSISTENT.AST
000000	016564  000042  000010 		SCHEDULE.PERSISTENT.AST:
						MOV	42(R5),10(R4)			; *(DB),*(CCB)				1844
000006	105064  000012 				CLRB	12(R4)				; *(CCB)				1845
000012	112764  000004  000013 			MOVB	#4,13(R4)			; *,*(CCB)				1846
000020	016564  000106  000014 			MOV	106(R5),14(R4)			; *(DB),*(CCB)				1847
000026	004767  000000G				JSR	PC,$SCHED			;					1848
000032	005065  000106 				CLR	106(R5)				; *(DB)					1849
000036	000207 					RTS	PC				;					1814

; Routine Size:  16 words,	Routine Base:  $CODE$ + 3772
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  67
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (29)

;	  1851	routine SCHEDULE_RECEIVE (CCB, DB) : DMC_CCB_DB novalue =
;	  1852	
;	  1853	!++
;	  1854	! FUNCTIONAL DESCRIPTION:
;	  1855	!
;	  1856	!
;	  1857	! FORMAL PARAMETERS:
;	  1858	!	DB = address of DMC data base.
;	  1859	!
;	  1860	! IMPLICIT INPUTS:
;	  1861	!	None
;	  1862	!
;	  1863	! IMPLICIT OUTPUTS:
;	  1864	!	None
;	  1865	!
;	  1866	! ROUTINE VALUE:
;	  1867	! COMPLETION CODES:
;	  1868	!	None
;	  1869	!
;	  1870	! SIDE EFFECTS:
;	  1871	!	None
;	  1872	!--
;	  1873	
;	  1874	    begin
;	  1875	    GET_DMC_DATA_BASE (DB)
;	  1876	
;	  1877	    map
;	  1878		CCB : ref block field (C_FIELDS);
;	  1879	
;	  1880	    CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
;	  1881	
;	  1882	    if .CCB [C_HANDLE] eqlu 0 then return RDBRT$ (.CCB);
;	  1883	
;	  1884	    DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] + 1;
;	  1885	    CCB [C_FNC] = FC_RCP;
;	  1886	    CCB [C_MOD] = DLL$K_DATA_RECEIVED;
;	  1887	    CCB [C_STS] = DLL$_SUCCESS;
;	  1888	    $MCB_SCHEDULE_CCB (.CCB);
;	  1889	    end;			!of routine SCHEDULE_RECEIVE


						.SBTTL	SCHEDULE.RECEIVE
000000	010400 				SCHEDULE.RECEIVE:
						MOV	R4,R0				; *,CCB					1851
000002	016560  000042  000010 			MOV	42(R5),10(R0)			; *(DB),*(CCB)				1880
000010	001003 					BNE	1$				;					1882
000012	004767  000000G				JSR	PC,$RDBRT
000016	000207 					RTS	PC
000020	005265  000110 			1$:	INC	110(R5)				; *(DB)					1884
000024	112760  000016  000012 			MOVB	#16,12(R0)			; *,*(CCB)				1885
000032	105060  000013 				CLRB	13(R0)				; *(CCB)				1886
000036	012760  100001  000014 			MOV	#-77777,14(R0)			; *,*(CCB)				1887
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  68
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (29)

000044	010004 					MOV	R0,R4				; CCB,*					1888
000046	004767  000000G				JSR	PC,$SCHED
000052	000207 					RTS	PC				;					1851

; Routine Size:  22 words,	Routine Base:  $CODE$ + 4032
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  69
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (30)

;	  1890	routine SCHEDULE_STATE_AST (CCB, DB) : DMC_CCB_DB novalue =
;	  1891	
;	  1892	!++
;	  1893	! FUNCTIONAL DESCRIPTION:
;	  1894	!
;	  1895	!
;	  1896	! FORMAL PARAMETERS:
;	  1897	!	CCB = address of CCB to use for status nodification.
;	  1898	!	DB = address of DMC data base.
;	  1899	!
;	  1900	! IMPLICIT INPUTS:
;	  1901	!	None
;	  1902	!
;	  1903	! IMPLICIT OUTPUTS:
;	  1904	!	None
;	  1905	!
;	  1906	! ROUTINE VALUE:
;	  1907	! COMPLETION CODES:
;	  1908	!	None
;	  1909	!
;	  1910	! SIDE EFFECTS:
;	  1911	!	None
;	  1912	!--
;	  1913	
;	  1914	    begin
;	  1915	    GET_DMC_DATA_BASE (DB)
;	  1916	
;	  1917	    map
;	  1918		CCB : ref block field (C_FIELDS);
;	  1919	
;	  1920	    if not .DB [DF_NOTIFY_STATE] then return $MCB_RETURN_CCB (.CCB);
;	  1921	
;	  1922	    CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
;	  1923	    CCB [C_FNC] = FC_AST;
;	  1924	    CCB [C_MOD] = DLL$K_STATE;
;	  1925	    CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
;	  1926	    $MCB_SCHEDULE_CCB (.CCB);
;	  1927	
;	  1928	    if .DB [DF_NOTIFY_STATE]
;	  1929	    then
;	  1930	
;	  1931		if $MCB_GET_CCB (CCB)
;	  1932		then
;	  1933		    SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
;	  1934		else
;	  1935		    $MCB_REQUEST_CCB ();
;	  1936	
;	  1937	    end;			!of routine SCHEDULE_STATE_AST


						.GLOBL	$CCBRT, $CCBGT, $CCBRQ
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  70
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (30)


						.SBTTL	SCHEDULE.STATE.AST
000000	010146 				SCHEDULE.STATE.AST:
						MOV	R1,-(SP)			;					1890
000002	010401 					MOV	R4,R1				; *,CCB
000004	032715  001000 				BIT	#1000,(R5)			; *,DB					1920
000010	001003 					BNE	1$
000012	004767  000000G				JSR	PC,$CCBRT
000016	000432 					BR	3$
000020	016561  000042  000010 		1$:	MOV	42(R5),10(R1)			; *(DB),*(CCB)				1922
000026	105061  000012 				CLRB	12(R1)				; *(CCB)				1923
000032	105061  000013 				CLRB	13(R1)				; *(CCB)				1924
000036	004767  175134 				JSR	PC,CURRENT.STATUS		;					1925
000042	010061  000014 				MOV	R0,14(R1)			; *,*(CCB)
000046	010104 					MOV	R1,R4				; CCB,*					1926
000050	004767  000000G				JSR	PC,$SCHED
000054	032715  001000 				BIT	#1000,(R5)			; *,DB					1928
000060	001411 					BEQ	3$
000062	004767  000000G				JSR	PC,$CCBGT			;					1931
000066	103404 					BCS	2$
000070	010401 					MOV	R4,R1				; $MCB$R4,CCB
000072	004767  177702 				JSR	PC,SCHEDULE.STATE.AST		;					1933
000076	000402 					BR	3$				;					1931
000100	004767  000000G			2$:	JSR	PC,$CCBRQ			;					1935
000104	012601 				3$:	MOV	(SP)+,R1			;					1890
000106	000207 					RTS	PC

; Routine Size:  36 words,	Routine Base:  $CODE$ + 4106
; Maximum stack depth per invocation:  2 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  71
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (31)

;	  1938	routine SCHEDULE_TRANSIENT_AST (CCB, DB) : DMC_CCB_DB novalue =
;	  1939	
;	  1940	!++
;	  1941	! FUNCTIONAL DESCRIPTION:
;	  1942	!
;	  1943	!
;	  1944	! FORMAL PARAMETERS:
;	  1945	!	CCB = address of CCB to use for status nodification.
;	  1946	!	DB = address of DMC data base.
;	  1947	!
;	  1948	! IMPLICIT INPUTS:
;	  1949	!	None
;	  1950	!
;	  1951	! IMPLICIT OUTPUTS:
;	  1952	!	None
;	  1953	!
;	  1954	! ROUTINE VALUE:
;	  1955	! COMPLETION CODES:
;	  1956	!	None
;	  1957	!
;	  1958	! SIDE EFFECTS:
;	  1959	!	None
;	  1960	!--
;	  1961	
;	  1962	    begin
;	  1963	      GET_DMC_DATA_BASE (DB)
;	  1964	
;	  1965	    map
;	  1966		CCB : ref block field (C_FIELDS);
;	  1967	
;	  1968	    CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
;	  1969	    CCB [C_FNC] = FC_AST;
;	  1970	    CCB [C_MOD] = DLL$K_TRANSIENT_ERROR;
;	  1971	    CCB [C_STS] = .DB [D_TRANSIENT_ERROR];
;	  1972	    $MCB_SCHEDULE_CCB (.CCB);
;	  1973	    DB [D_TRANSIENT_ERROR] = 0;
;	  1974	    end;			!of routine SCHEDULE_TRANSIENT_AST


						.SBTTL	SCHEDULE.TRANSIENT.AST
000000	016564  000042  000010 		SCHEDULE.TRANSIENT.AST:
						MOV	42(R5),10(R4)			; *(DB),*(CCB)				1968
000006	105064  000012 				CLRB	12(R4)				; *(CCB)				1969
000012	112764  000002  000013 			MOVB	#2,13(R4)			; *,*(CCB)				1970
000020	016564  000104  000014 			MOV	104(R5),14(R4)			; *(DB),*(CCB)				1971
000026	004767  000000G				JSR	PC,$SCHED			;					1972
000032	005065  000104 				CLR	104(R5)				; *(DB)					1973
000036	000207 					RTS	PC				;					1938

; Routine Size:  16 words,	Routine Base:  $CODE$ + 4216
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  72
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (32)

;	  1975	routine SCHEDULE_TRANSMIT (CCB, DB, STATUS) : DMC_CCB_DB_STS novalue =
;	  1976	
;	  1977	!++
;	  1978	! FUNCTIONAL DESCRIPTION:
;	  1979	!
;	  1980	!
;	  1981	! FORMAL PARAMETERS:
;	  1982	!	DB = address of DMC data base.
;	  1983	!
;	  1984	! IMPLICIT INPUTS:
;	  1985	!	None
;	  1986	!
;	  1987	! IMPLICIT OUTPUTS:
;	  1988	!	None
;	  1989	!
;	  1990	! ROUTINE VALUE:
;	  1991	! COMPLETION CODES:
;	  1992	!	None
;	  1993	!
;	  1994	! SIDE EFFECTS:
;	  1995	!	None
;	  1996	!--
;	  1997	
;	  1998	    begin
;	  1999	    GET_DMC_DATA_BASE (DB)
;	  2000	
;	  2001	    map
;	  2002		CCB : ref block field (C_FIELDS);
;	  2003	
;	  2004	    CCB [C_FNC] = FC_XCP;
;	  2005	    CCB [C_STS] = .STATUS;
;	  2006	    $MCB_SCHEDULE_CCB (.CCB);
;	  2007	
;	  2008	    DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] - 1;
;	  2009	
;	  2010	    if .DB [D_ACTIVE_BUFFERS] neq 0 then return;
;	  2011	
;	  2012	    if .DB [DF_CTL] then CTLNXT (DB [D_TIM]);
;	  2013	
;	  2014	    end;			!of routine SCHEDULE_TRANSMIT


						.SBTTL	SCHEDULE.TRANSMIT
000000	112764  000014  000012 		SCHEDULE.TRANSMIT:
						MOVB	#14,12(R4)			; *,*(CCB)				2004
000006	010064  000014 				MOV	R0,14(R4)			; STATUS,*(CCB)				2005
000012	004767  000000G				JSR	PC,$SCHED			;					2006
000016	005365  000110 				DEC	110(R5)				; *(DB)					2008
000022	001006 					BNE	1$				;					2010
000024	032765  040000  000032 			BIT	#40000,32(R5)			; *,*(DB)				2012
000032	001402 					BEQ	1$
000034	004767  174546 				JSR	PC,CTLNXT
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  73
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (32)

000040	000207 				1$:	RTS	PC				;					1975

; Routine Size:  17 words,	Routine Base:  $CODE$ + 4256
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  74
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (33)

;	  2015	routine SEND_PERSISTENT_ERROR (DB, STATUS) : DMC_DB_STS novalue =
;	  2016	
;	  2017	!++
;	  2018	! FUNCTIONAL DESCRIPTION:
;	  2019	!
;	  2020	!
;	  2021	! FORMAL PARAMETERS:
;	  2022	!	DB = address of DMC data base.
;	  2023	!
;	  2024	! IMPLICIT INPUTS:
;	  2025	!	None
;	  2026	!
;	  2027	! IMPLICIT OUTPUTS:
;	  2028	!	None
;	  2029	!
;	  2030	! ROUTINE VALUE:
;	  2031	! COMPLETION CODES:
;	  2032	!	None
;	  2033	!
;	  2034	! SIDE EFFECTS:
;	  2035	!	None
;	  2036	!--
;	  2037	
;	  2038	    begin
;	  2039	    GET_DMC_DATA_BASE (DB)
;	  2040	
;	  2041	    local
;	  2042		CCB : ref block field (C_FIELDS);
;	  2043	
;	  2044	    if .DB [D_OWNER_HANDLE] eql 0 then return;
;	  2045	
;	  2046	    DB [D_PERSISTENT_ERROR] = .STATUS;
;	  2047	
;	  2048	    if $MCB_GET_CCB (CCB)
;	  2049	    then
;	  2050		SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM])
;	  2051	    else
;	  2052		$MCB_REQUEST_CCB ();
;	  2053	
;	  2054	    end;			!of routine SEND_PERSISTENT_ERROR


						.SBTTL	SEND.PERSISTENT.ERROR
000000	005765  000042 			SEND.PERSISTENT.ERROR:
						TST	42(R5)				; *(DB)					2044
000004	001412 					BEQ	2$
000006	010365  000106 				MOV	R3,106(R5)			; STATUS,*(DB)				2046
000012	004767  000000G				JSR	PC,$CCBGT			;					2048
000016	103403 					BCS	1$
000020	004767  177426 				JSR	PC,SCHEDULE.PERSISTENT.AST	;					2050
000024	000207 					RTS	PC				;					2048
000026	004767  000000G			1$:	JSR	PC,$CCBRQ			;					2052
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  75
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (33)

000032	000207 				2$:	RTS	PC				;					2015

; Routine Size:  14 words,	Routine Base:  $CODE$ + 4320
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  76
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (34)

;	  2055	routine SEND_STATE (DB) : DMC_DB novalue =
;	  2056	
;	  2057	!++
;	  2058	! FUNCTIONAL DESCRIPTION:
;	  2059	!
;	  2060	!
;	  2061	! FORMAL PARAMETERS:
;	  2062	!	DB = address of DMC data base.
;	  2063	!
;	  2064	! IMPLICIT INPUTS:
;	  2065	!	None
;	  2066	!
;	  2067	! IMPLICIT OUTPUTS:
;	  2068	!	None
;	  2069	!
;	  2070	! ROUTINE VALUE:
;	  2071	! COMPLETION CODES:
;	  2072	!	None
;	  2073	!
;	  2074	! SIDE EFFECTS:
;	  2075	!	None
;	  2076	!--
;	  2077	
;	  2078	    begin
;	  2079	    GET_DMC_DATA_BASE (DB)
;	  2080	
;	  2081	    local
;	  2082		CCB : ref block field (C_FIELDS);
;	  2083	
;	  2084	    if .DB [D_OWNER_HANDLE] eql 0 then return;
;	  2085	
;	  2086	    if .DB [D_PROTOCOL_STATE] eql DS_HALTED then DB [DF_NOTIFY_OFF] = TRUE;
;	  2087	
;	  2088	    DB [DF_NOTIFY_STATE] = TRUE;
;	  2089	
;	  2090	    if $MCB_GET_CCB (CCB)
;	  2091	    then
;	  2092		SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
;	  2093	    else
;	  2094		$MCB_REQUEST_CCB ();
;	  2095	
;	  2096	    end;			!of routine SEND_STATE


						.SBTTL	SEND.STATE
000000	005765  000042 			SEND.STATE:
						TST	42(R5)				; *(DB)					2084
000004	001417 					BEQ	3$
000006	105765  000034 				TSTB	34(R5)				; *(DB)					2086
000012	001002 					BNE	1$
000014	052715  000400 				BIS	#400,(R5)			; *,DB
000020	052715  001000 			1$:	BIS	#1000,(R5)			; *,DB					2088
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  77
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (34)

000024	004767  000000G				JSR	PC,$CCBGT			;					2090
000030	103403 					BCS	2$
000032	004767  177474 				JSR	PC,SCHEDULE.STATE.AST		;					2092
000036	000207 					RTS	PC				;					2090
000040	004767  000000G			2$:	JSR	PC,$CCBRQ			;					2094
000044	000207 				3$:	RTS	PC				;					2055

; Routine Size:  19 words,	Routine Base:  $CODE$ + 4354
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  78
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (35)

;	  2097	routine SEND_TRANSIENT_ERROR (DB, STATUS) : DMC_DB_STS novalue =
;	  2098	
;	  2099	!++
;	  2100	! FUNCTIONAL DESCRIPTION:
;	  2101	!
;	  2102	!
;	  2103	! FORMAL PARAMETERS:
;	  2104	!	DB = address of DMC data base.
;	  2105	!
;	  2106	! IMPLICIT INPUTS:
;	  2107	!	None
;	  2108	!
;	  2109	! IMPLICIT OUTPUTS:
;	  2110	!	None
;	  2111	!
;	  2112	! ROUTINE VALUE:
;	  2113	! COMPLETION CODES:
;	  2114	!	None
;	  2115	!
;	  2116	! SIDE EFFECTS:
;	  2117	!	None
;	  2118	!--
;	  2119	
;	  2120	    begin
;	  2121	    GET_DMC_DATA_BASE (DB)
;	  2122	
;	  2123	    local
;	  2124		CCB : ref block field (C_FIELDS);
;	  2125	
;	  2126	    if .DB [D_OWNER_HANDLE] eql 0 then return;
;	  2127	
;	  2128	    DB [D_TRANSIENT_ERROR] = .STATUS;
;	  2129	
;	  2130	    if $MCB_GET_CCB (CCB)
;	  2131	    then
;	  2132		SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM])
;	  2133	    else
;	  2134		$MCB_REQUEST_CCB ();
;	  2135	
;	  2136	    end;			!of routine SEND_TRANSIENT_ERROR


						.SBTTL	SEND.TRANSIENT.ERROR
000000	005765  000042 			SEND.TRANSIENT.ERROR:
						TST	42(R5)				; *(DB)					2126
000004	001412 					BEQ	2$
000006	010365  000104 				MOV	R3,104(R5)			; STATUS,*(DB)				2128
000012	004767  000000G				JSR	PC,$CCBGT			;					2130
000016	103403 					BCS	1$
000020	004767  177550 				JSR	PC,SCHEDULE.TRANSIENT.AST	;					2132
000024	000207 					RTS	PC				;					2130
000026	004767  000000G			1$:	JSR	PC,$CCBRQ			;					2134
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  79
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (35)

000032	000207 				2$:	RTS	PC				;					2097

; Routine Size:  14 words,	Routine Base:  $CODE$ + 4422
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  80
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)

;	  2137	routine SERVICE_DMC (DB) : MCB_DB novalue =
;	  2138	
;	  2139	!++
;	  2140	! FUNCTIONAL DESCRIPTION:
;	  2141	!
;	  2142	!
;	  2143	! FORMAL PARAMETERS:
;	  2144	!	DB = address of DMC data base.
;	  2145	!
;	  2146	! IMPLICIT INPUTS:
;	  2147	!	None
;	  2148	!
;	  2149	! IMPLICIT OUTPUTS:
;	  2150	!	None
;	  2151	!
;	  2152	! ROUTINE VALUE:
;	  2153	! COMPLETION CODES:
;	  2154	!	None
;	  2155	!
;	  2156	! SIDE EFFECTS:
;	  2157	!	None
;	  2158	!--
;	  2159	
;	  2160	    begin
;	  2161	    GET_DMC_DATA_BASE (DB)
;	  2162	
;	  2163	    label
;	  2164		SERVICE_FOUND;
;	  2165	
;	  2166	    bind
;	  2167		CSR = .DB [D_REGISTER];
;	  2168	
;	  2169	    DB [DF_SERVICING_DMC] = TRUE;
;	  2170	
;	  2171	    do
;	  2172		SERVICE_FOUND : begin
;	  2173	
;	  2174		case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
;	  2175		    set
;	  2176		    [DD_CLEARED, DD_MASTER_CLEARED, DD_SHUT_DOWN] :
;	  2177			begin
;	  2178			DB [DF_SERVICING_DMC] = FALSE;
;	  2179			return;
;	  2180			end;
;	  2181		    [inrange] :
;	  2182			NO_OPERATION;
;	  2183		    tes;
;	  2184	
;	  2185		decru COUNT from 4 to 1 do
;	  2186		    begin
;	  2187	
;	  2188		    if not $DMC_BITS_CLEAR (CSR, SEL0, RDYI)
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  81
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)

;	  2189		    then
;	  2190			begin
;	  2191	
;	  2192			if not $DMC_BITS_CLEAR (CSR, SEL0, RQI)
;	  2193			then
;	  2194			    begin
;	  2195			    !
;	  2196			    ! We have requested the input port and
;	  2197			    ! the DMC has complied.
;	  2198			    !
;	  2199	
;	  2200			    bind
;	  2201				BUF = DB [D_INPUT_DATA] : block field (DMC_FIELDS);
;	  2202	
;	  2203			    DB [DF_WAITING_FOR_RDYI] = FALSE;
;	  2204			    RESET_TIMER (DB [D_TIM]);
;	  2205			    $DMC_WRITE (CSR, SEL6, .BUF [SEL6]);
;	  2206			    $DMC_WRITE (CSR, SEL4, .BUF [SEL4]);
;	  2207			    $DMC_CLEAR_BITS (CSR, SEL0, RQI);
;	  2208			    DB [D_INPUT_COMMAND] = 0;
;	  2209			    SET_INPUT_REQUEST (DB [D_TIM]);
;	  2210			    leave SERVICE_FOUND;
;	  2211			    end
;	  2212			else
;	  2213			    begin
;	  2214			    !
;	  2215			    ! We have given the DMC a command
;	  2216			    ! the DMC is processing it.
;	  2217			    !
;	  2218			    NO_OPERATION
;	  2219			    end;
;	  2220	
;	  2221			end
;	  2222		    else
;	  2223			begin
;	  2224	
;	  2225			if $DMC_BITS_CLEAR (CSR, SEL0, RQI)
;	  2226			then
;	  2227			    begin
;	  2228			    !
;	  2229			    ! No input transfer operation in progress.
;	  2230			    !
;	  2231	
;	  2232			    if .DB [D_INPUT_COMMAND] neq 0
;	  2233			    then
;	  2234				begin
;	  2235	
;	  2236				bind
;	  2237				    BUF = DB [D_INPUT_DATA] : block field (DMC_FIELDS);
;	  2238	
;	  2239				$DMC_WRITE (CSR, BSEL0, .BUF [BSEL0]);
;	  2240				DB [DF_WAITING_FOR_RDYI] = TRUE;
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  82
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)

;	  2241				RESET_TIMER (DB [D_TIM]);
;	  2242				leave SERVICE_FOUND;
;	  2243				end;
;	  2244	
;	  2245			    end
;	  2246			else
;	  2247			    begin
;	  2248			    !
;	  2249			    ! We have requested the input port and
;	  2250			    ! the DMC hasn't complied yet.
;	  2251			    !
;	  2252			    NO_OPERATION
;	  2253			    end;
;	  2254	
;	  2255			end;
;	  2256	
;	  2257		    if not $DMC_BITS_CLEAR (CSR, SEL2, RDYO)
;	  2258		    then
;	  2259		    begin
;	  2260			!
;	  2261			! The DMC has data for us.
;	  2262			!
;	  2263	
;	  2264			bind
;	  2265			    BUF = DB [D_OUTPUT_DATA] : block field (DMC_FIELDS);
;	  2266	
;	  2267			BUF [SEL0] = $DMC_READ (CSR, SEL0);
;	  2268			BUF [SEL2] = $DMC_READ (CSR, SEL2);
;	  2269			BUF [SEL4] = $DMC_READ (CSR, SEL4);
;	  2270			BUF [SEL6] = $DMC_READ (CSR, SEL6);
;	  2271			$DMC_CLEAR_BITS (CSR, SEL2, RDYO);
;	  2272			OUTPUT_TRANSFER (DB [D_TIM]);
;	  2273			leave SERVICE_FOUND;
;	  2274			end;
;	  2275	
;	  2276		    end;
;	  2277	
;	  2278		if not $DMC_BITS_CLEAR (CSR, SEL0, RQI)
;	  2279		then
;	  2280		    begin
;	  2281		    $DMC_SET_BITS (CSR, SEL0, IEI);
;	  2282		    $DMC_SET_BITS (CSR, SEL0, IEI);
;	  2283		    end;
;	  2284	
;	  2285		DB [DF_SERVICING_DMC] = FALSE;
;	  2286		return;
;	  2287		end
;	  2288	    while TRUE;
;	  2289	
;	  2290	    end;			!of routine SERVICE_DMC
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  83
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)

						.SBTTL	SERVICE.DMC
000000	016503  000002 			SERVICE.DMC:
						MOV	2(R5),R3			; *(DB),*				2160
000004	052715  040000 				BIS	#40000,(R5)			; *,DB					2169
000010	116500  000040 			1$:	MOVB	40(R5),R0			; *(DB),*				2174
000014	006300 					ASL	R0
000016	066007  000132'				ADD	P.AAH(R0),PC			; Case dispatch
000022	000504 				2$:	BR	8$				;					2178
000024	012702  000004 			3$:	MOV	#4,R2				; *,COUNT				2185
000030	105713 				4$:	TSTB	(R3)				;					2188
000032	100026 					BPL	5$
000034	032713  000040 				BIT	#40,(R3)			;					2192
000040	001441 					BEQ	6$
000042	012701  000012 				MOV	#12,R1				;					2201
000046	060501 					ADD	R5,R1				; DB,*
000050	042715  004000 				BIC	#4000,(R5)			; *,DB					2203
000054	004767  177134 				JSR	PC,RESET.TIMER			;					2204
000060	016163  000006  000006 			MOV	6(R1),6(R3)			;					2205
000066	016163  000004  000004 			MOV	4(R1),4(R3)			;					2206
000074	042713  000040 				BIC	#40,(R3)			;					2207
000100	105011 					CLRB	(R1)				;					2208
000102	004767  000000V				JSR	PC,SET.INPUT.REQUEST		;					2209
000106	000740 					BR	1$				;					2194
000110	032713  000040 			5$:	BIT	#40,(R3)			;					2225
000114	001013 					BNE	6$
000116	012700  000012 				MOV	#12,R0				;					2232
000122	060500 					ADD	R5,R0				; DB,*
000124	105710 					TSTB	(R0)
000126	001406 					BEQ	6$
000130	111013 					MOVB	(R0),(R3)			;					2239
000132	052715  004000 				BIS	#4000,(R5)			; *,DB					2240
000136	004767  177052 				JSR	PC,RESET.TIMER			;					2241
000142	000722 					BR	1$				;					2234
000144	105763  000002 			6$:	TSTB	2(R3)				;					2257
000150	100023 					BPL	7$
000152	012700  000022 				MOV	#22,R0				;					2259
000156	060500 					ADD	R5,R0				; DB,*
000160	011310 					MOV	(R3),(R0)			;					2267
000162	016360  000002  000002 			MOV	2(R3),2(R0)			;					2268
000170	016360  000004  000004 			MOV	4(R3),4(R0)			;					2269
000176	016360  000006  000006 			MOV	6(R3),6(R0)			;					2270
000204	042763  000200  000002 			BIC	#200,2(R3)			;					2271
000212	004767  175656 				JSR	PC,OUTPUT.TRANSFER		;					2272
000216	000674 					BR	1$				;					2259
000220	077275 				7$:	SOB	R2,4$				; COUNT,*				0000
000222	032713  000040 				BIT	#40,(R3)			;					2278
000226	001402 					BEQ	8$
000230	052713  000100 				BIS	#100,(R3)			;					2282
000234	042715  040000 			8$:	BIC	#40000,(R5)			; *,DB					2285
000240	000207 					RTS	PC				;					2137

; Routine Size:  81 words,	Routine Base:  $CODE$ + 4456
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  84
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)

; Maximum stack depth per invocation:  1 word


000132						.PSECT	$PLIT$,  RO ,  D  

					P.AAH:						; CASE Table for SERVICE.DMC+0016	2174
000132	000212 					.WORD	212				; [8$]
000134	000002 					.WORD	2				; [3$]
000136	000002 					.WORD	2				; [3$]
000140	000002 					.WORD	2				; [3$]
000142	000212 					.WORD	212				; [8$]
000144	000212 					.WORD	212				; [8$]
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  85
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)

;	  2291	routine SET_INPUT_REQUEST (DB) : LINKAGE_DB novalue =
;	  2292	
;	  2293	!++
;	  2294	! FUNCTIONAL DESCRIPTION:
;	  2295	!
;	  2296	!
;	  2297	! FORMAL PARAMETERS:
;	  2298	!	DB = address of DMC data base.
;	  2299	!
;	  2300	! IMPLICIT INPUTS:
;	  2301	!	None
;	  2302	!
;	  2303	! IMPLICIT OUTPUTS:
;	  2304	!	None
;	  2305	!
;	  2306	! ROUTINE VALUE:
;	  2307	! COMPLETION CODES:
;	  2308	!	None
;	  2309	!
;	  2310	! SIDE EFFECTS:
;	  2311	!	None
;	  2312	!--
;	  2313	
;	  2314	    begin
;	  2315	    GET_DMC_DATA_BASE (DB)
;	  2316	
;	  2317	    bind
;	  2318		BUF = DB [D_INPUT_DATA] : block field (DMC_FIELDS);
;	  2319	
;	  2320	    while .DB [D_CONTROL_FLAGS] neq 0 do
;	  2321	
;	  2322	        selectone TRUE of
;	  2323		    set
;	  2324		    [.DB [DC_HALT]] :
;	  2325			begin
;	  2326	
;	  2327			if .DB [DF_FLUSHING_DMC] then return;
;	  2328	
;	  2329			case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
;	  2330			    set
;	  2331			    [DD_RUNNING] :
;	  2332				begin
;	  2333				DB [DF_FLUSHING_DMC] = TRUE;
;	  2334				RESET_TIMER (DB [D_TIM]);
;	  2335				BUF [SEL6] = 0;
;	  2336				BUF [SEL4] = 0;
;	  2337				BUF [BSEL0] = HALT + 1^%fieldexpand (RQI, 1);
;	  2338				return;
;	  2339				end;
;	  2340			    [DD_CLEARED, DD_MASTER_CLEARED, DD_HALTED] :
;	  2341				DB [DC_HALT] = FALSE;
;	  2342			    [inrange] :
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  86
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)

;	  2343				begin
;	  2344				DB [DC_MASTER_CLEAR] = TRUE;
;	  2345				DB [DC_HALT] = FALSE;
;	  2346				end;
;	  2347			    tes;
;	  2348	
;	  2349			end;
;	  2350		    [.DB [DC_MASTER_CLEAR]] :
;	  2351			case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
;	  2352			    set
;	  2353			    [DD_CLEARED, DD_MASTER_CLEARED] :
;	  2354				DB [DC_MASTER_CLEAR] = FALSE;
;	  2355			    [inrange] :
;	  2356				begin
;	  2357				MASTER_CLEAR (DB [D_TIM]);
;	  2358				DB [DC_MASTER_CLEAR] = FALSE;
;	  2359				end;
;	  2360			    tes;
;	  2361		    [.DB [DC_ZERO_CIRCUIT_COUNTERS]] :
;	  2362			begin
;	  2363			ZERO_CIRCUIT_COUNTERS (DB [D_TIM]);
;	  2364			DB [DC_ZERO_CIRCUIT_COUNTERS] = FALSE;
;	  2365			end;
;	  2366		    [.DB [DC_ZERO_LINE_COUNTERS]] :
;	  2367			begin
;	  2368			ZERO_LINE_COUNTERS (DB [D_TIM]);
;	  2369			DB [DC_ZERO_LINE_COUNTERS] = FALSE;
;	  2370			end;
;	  2371		    [.DB [DC_BASE_IN]] :
;	  2372			case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
;	  2373			    set
;	  2374			    [DD_RUNNING] : DB [DC_HALT] = TRUE;
;	  2375			    [DD_HALTED, DD_MASTER_CLEARED] :
;	  2376				begin
;	  2377	
;	  2378				if .DB [D_DEVICE_STATE] eql DD_MASTER_CLEARED
;	  2379				then
;	  2380				    $DMC_SET_BITS (.DB [D_REGISTER], SEL2, IEO);
;	  2381	
;	  2382				BASE_IN (DB [D_TIM], BUF [SEL4], BUF [SEL6]);
;	  2383				BUF [$SUB_FIELD (SEL6, RESUME)] = 0;
;	  2384	
;	  2385				if .DB [D_DEVICE_STATE] neq DD_MASTER_CLEARED
;	  2386				then
;	  2387				    BUF [$SUB_FIELD (SEL6, RESUME)] = 1;
;	  2388	
;	  2389				BUF [BSEL0] = BASE_I + 1^%fieldexpand (RQI, 1);
;	  2390				DB [DC_BASE_IN] = FALSE;
;	  2391				DB [D_DEVICE_STATE] = DD_BASE_TABLE_ASSIGNED;
;	  2392				return;
;	  2393				end;
;	  2394			    [DD_BASE_TABLE_ASSIGNED, DD_CLEARED] : DB [DC_BASE_IN] = FALSE;
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  87
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)

;	  2395			    [inrange] : DB [DC_MASTER_CLEAR] = TRUE;
;	  2396			    tes;
;	  2397		    [.DB [DC_CONTROL_IN]] :
;	  2398			case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
;	  2399			    set
;	  2400			    [DD_BASE_TABLE_ASSIGNED] :
;	  2401				begin
;	  2402				DB [DC_CONTROL_IN] = FALSE;
;	  2403				BUF [SEL4] = 0;
;	  2404				BUF [SEL6] = 0;
;	  2405	
;	  2406				if .DB [DF_CONTROLLER_LOOPBACK]
;	  2407				then
;	  2408				    $DMC_SET_BITS (.DB [D_REGISTER], SEL0, LU_LOOP)
;	  2409				else
;	  2410				    $DMC_CLEAR_BITS (.DB [D_REGISTER], SEL0, LU_LOOP);
;	  2411	
;	  2412				if .DB [DF_HALF_DUPLEX]
;	  2413				then
;	  2414				    BUF [$SUB_FIELD (SEL6, HD)] = 1;
;	  2415	
;	  2416				if .DB [D_REQUESTED_STATE] eql DS_MAINTENANCE
;	  2417				then
;	  2418				    BUF [$SUB_FIELD (SEL6, MAINT)] = 1;
;	  2419	
;	  2420				if not .DB [DF_1_SEC]
;	  2421				then
;	  2422				    BUF [$SUB_FIELD (SEL6, SEC)] = 1;
;	  2423	
;	  2424				BUF [BSEL0] = CNTL_I + 1^%fieldexpand (RQI, 1);
;	  2425				DB [D_DEVICE_STATE] = DD_RUNNING;
;	  2426				CHANGE_PROTOCOL_STATE (DB [D_TIM], .DB [D_REQUESTED_STATE], LCL);
;	  2427				return;
;	  2428				end;
;	  2429			    [DD_CLEARED, DD_RUNNING] : DB [DC_CONTROL_IN] = FALSE;
;	  2430			    [inrange] : DB [DC_BASE_IN] = TRUE;
;	  2431			    tes;
;	  2432		    [.DB [DC_SET_REQUESTED_STATE]] :
;	  2433	
;	  2434			selectone TRUE of
;	  2435			    set
;	  2436			    [.DB [D_LINE_STATE] neq DL_ON] :
;	  2437				DB [DC_SET_REQUESTED_STATE] = FALSE;
;	  2438			    [.DB [D_DEVICE_STATE] eql DD_CLEARED] :
;	  2439				DB [DC_SET_REQUESTED_STATE] = FALSE;
;	  2440			    [.DB [D_PROTOCOL_STATE] eql .DB [D_REQUESTED_STATE]] :
;	  2441				DB [DC_SET_REQUESTED_STATE] = FALSE;
;	  2442			    [.DB [D_REQUESTED_STATE] eql DS_HALTED] :
;	  2443				DB [DC_MASTER_CLEAR] = TRUE;
;	  2444			    [otherwise] :
;	  2445				DB [DC_CONTROL_IN] = TRUE;
;	  2446			    tes;
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  88
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)

;	  2447	
;	  2448		    [.DB [DC_CONTINUE_CONTROL]] :
;	  2449			begin
;	  2450			DB [DC_CONTINUE_CONTROL] = FALSE;
;	  2451	
;	  2452			if .DB [DF_CTL] then CTLNXT (DB [D_TIM]);
;	  2453	
;	  2454			end;
;	  2455		    tes;
;	  2456	
;	  2457	    if .DB [D_DEVICE_STATE] neq DD_RUNNING then return;
;	  2458	
;	  2459	    if .DB [D_ASSIGNED_RECEIVE_COUNT] lssu .DB [D_MAXIMUM_RECEIVE_COUNT]
;	  2460	    then
;	  2461	
;	  2462		if .DB [D_ASSIGNABLE_RECEIVE_COUNT] neq 0
;	  2463		then
;	  2464		    begin
;	  2465		    RECEIVE_IN (DB [D_TIM], BUF [SEL4], BUF [SEL6]);
;	  2466		    BUF [BSEL0] = BA_CC_I + RCV + 1^%fieldexpand (RQI, 1);
;	  2467		    DB [D_ASSIGNED_RECEIVE_COUNT] = .DB [D_ASSIGNED_RECEIVE_COUNT] + 1;
;	  2468		    return;
;	  2469		    end
;	  2470		else
;	  2471		    begin
;	  2472	
;	  2473		    local
;	  2474			RDB : ref block field (C_FIELDS);
;	  2475	
;	  2476		    if RDBGT$ (RDB)
;	  2477		    then
;	  2478			begin
;	  2479			DB [D_ASSIGNABLE_RECEIVE_COUNT] = .DB [D_ASSIGNABLE_RECEIVE_COUNT] + 1;
;	  2480			CMQIN$ (DB [D_ASSIGNABLE_RECEIVE_CCBS], .RDB);
;	  2481			RECEIVE_IN (DB [D_TIM], BUF [SEL4], BUF [SEL6]);
;	  2482			BUF [BSEL0] = BA_CC_I + RCV + 1^%fieldexpand (RQI, 1);
;	  2483			DB [D_ASSIGNED_RECEIVE_COUNT] = .DB [D_ASSIGNED_RECEIVE_COUNT] + 1;
;	  2484			return;
;	  2485			end
;	  2486		    else
;	  2487			RDBRQ$ ();
;	  2488	
;	  2489		    end;
;	  2490	
;	  2491	    if .DB [D_ASSIGNED_TRANSMIT_COUNT] lssu .DB [D_MAXIMUM_TRANSMIT_COUNT]
;	  2492	    then
;	  2493	
;	  2494		if .DB [D_ASSIGNABLE_TRANSMIT_COUNT] neq 0
;	  2495		then
;	  2496		    begin
;	  2497		    TRANSMIT_IN (DB [D_TIM], BUF [SEL4], BUF [SEL6]);
;	  2498		    BUF [BSEL0] = BA_CC_I + XMT + 1^%fieldexpand (RQI, 1);
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  89
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)

;	  2499		    DB [D_ASSIGNED_TRANSMIT_COUNT] = .DB [D_ASSIGNED_TRANSMIT_COUNT] + 1;
;	  2500		    return;
;	  2501		    end;
;	  2502	
;	  2503	    end;			!of routine SET_INPUT_REQUEST


						.GLOBL	$RDBGT, $RDBRQ


						.SBTTL	SET.INPUT.REQUEST
004720						.PSECT	$CODE$,  RO 

000000	004167  000000G			SET.INPUT.REQUEST:
						JSR	R1,$SAVE4			;					2291
000004	005746 					TST	-(SP)
000006	012746  000012 				MOV	#12,-(SP)			;					2314
000012	060516 					ADD	R5,(SP)				; DB,*
000014	012746  000032 				MOV	#32,-(SP)			;					2320
000020	060516 					ADD	R5,(SP)				; DB,*
000022	105776  000000 			1$:	TSTB	@0(SP)
000026	001002 				2$:	BNE	3$
000030	000167  001024 				JMP	37$
000034	132776  000001  000000 		3$:	BITB	#1,@0(SP)			;					2322
000042	001435 					BEQ	8$
000044	032715  010000 				BIT	#10000,(R5)			; *,DB					2327
000050	001021 					BNE	5$
000052	116500  000040 				MOVB	40(R5),R0			; *(DB),*				2329
000056	006300 					ASL	R0
000060	066007  000146'				ADD	P.AAI(R0),PC			; Case dispatch
000064	052715  010000 			4$:	BIS	#10000,(R5)			; *,DB					2333
000070	004767  176656 				JSR	PC,RESET.TIMER			;					2334
000074	016600  000002 				MOV	2(SP),R0			;					2335
000100	005060  000006 				CLR	6(R0)
000104	005060  000004 				CLR	4(R0)				;					2336
000110	112710  000042 				MOVB	#42,(R0)			;					2337
000114	000167  001174 			5$:	JMP	42$				;					2332
000120	152776  000002  000000 		6$:	BISB	#2,@0(SP)			;					2344
000126	142776  000001  000000 		7$:	BICB	#1,@0(SP)			;					2345
000134	000734 					BR	2$				;					2322
000136	132776  000002  000000 		8$:	BITB	#2,@0(SP)
000144	001414 					BEQ	12$
000146	116500  000040 				MOVB	40(R5),R0			; *(DB),*				2351
000152	006300 					ASL	R0
000154	066007  000162'				ADD	P.AAJ(R0),PC			; Case dispatch
000160	000402 				9$:	BR	11$				;					2354
000162	004767  175224 			10$:	JSR	PC,MASTER.CLEAR			;					2357
000166	142776  000002  000000 		11$:	BICB	#2,@0(SP)			;					2358
000174	000714 					BR	2$				;					2322
000176	132776  000004  000000 		12$:	BITB	#4,@0(SP)
000204	001406 					BEQ	13$
000206	004767  000000V				JSR	PC,ZERO.CIRCUIT.COUNTERS	;					2363
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  90
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)

000212	142776  000004  000000 			BICB	#4,@0(SP)			;					2364
000220	000702 					BR	2$				;					2322
000222	132776  000010  000000 		13$:	BITB	#10,@0(SP)
000230	001406 					BEQ	14$
000232	004767  000000V				JSR	PC,ZERO.LINE.COUNTERS		;					2368
000236	142776  000010  000000 			BICB	#10,@0(SP)			;					2369
000244	000670 					BR	2$				;					2322
000246	132776  000020  000000 		14$:	BITB	#20,@0(SP)
000254	001471 					BEQ	20$
000256	012766  000040  000004 			MOV	#40,4(SP)			;					2372
000264	060566  000004 				ADD	R5,4(SP)			; DB,*
000270	117600  000004 				MOVB	@4(SP),R0
000274	006300 					ASL	R0
000276	066007  000176'				ADD	P.AAK(R0),PC			; Case dispatch
000302	152776  000001  000000 		15$:	BISB	#1,@0(SP)			;					2374
000310	000646 					BR	2$				;					2372
000312	105776  000004 			16$:	TSTB	@4(SP)				;					2378
000316	001005 					BNE	17$
000320	016500  000002 				MOV	2(R5),R0			; *(DB),*				2380
000324	052760  000100  000002 			BIS	#100,2(R0)
000332	012700  000004 			17$:	MOV	#4,R0				;					2382
000336	066600  000002 				ADD	2(SP),R0
000342	010046 					MOV	R0,-(SP)
000344	012700  000006 				MOV	#6,R0
000350	066600  000004 				ADD	4(SP),R0
000354	010001 					MOV	R0,R1
000356	010146 					MOV	R1,-(SP)
000360	004767  172474 				JSR	PC,BASE.IN
000364	042711  020000 				BIC	#20000,(R1)			;					2383
000370	105776  000010 				TSTB	@10(SP)				;					2385
000374	001402 					BEQ	18$
000376	052711  020000 				BIS	#20000,(R1)			;					2387
000402	112776  000043  000006 		18$:	MOVB	#43,@6(SP)			;					2389
000410	142776  000020  000004 			BICB	#20,@4(SP)			;					2390
000416	112776  000002  000010 			MOVB	#2,@10(SP)			;					2391
000424	000167  000662 				JMP	41$				;					2372
000430	142776  000020  000000 		19$:	BICB	#20,@0(SP)			;					2394
000436	000570 					BR	34$				;					2372
000440	132776  000040  000000 		20$:	BITB	#40,@0(SP)			;					2322
000446	001527 					BEQ	29$
000450	116500  000040 				MOVB	40(R5),R0			; *(DB),*				2398
000454	006300 					ASL	R0
000456	066007  000212'				ADD	P.AAL(R0),PC			; Case dispatch
000462	142776  000040  000000 		21$:	BICB	#40,@0(SP)			;					2402
000470	016600  000002 				MOV	2(SP),R0			;					2403
000474	005060  000004 				CLR	4(R0)
000500	012701  000006 				MOV	#6,R1				;					2404
000504	060001 					ADD	R0,R1
000506	010100 					MOV	R1,R0
000510	005010 					CLR	(R0)
000512	032776  002000  000000 			BIT	#2000,@0(SP)			;					2406
000520	001404 					BEQ	22$
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  91
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)

000522	052775  004000  000002 			BIS	#4000,@2(R5)			; *,*(DB)				2408
000530	000403 					BR	23$				;					2406
000532	042775  004000  000002 		22$:	BIC	#4000,@2(R5)			; *,*(DB)				2410
000540	032776  000400  000000 		23$:	BIT	#400,@0(SP)			;					2412
000546	001402 					BEQ	24$
000550	052710  002000 				BIS	#2000,(R0)			;					2414
000554	012701  000034 			24$:	MOV	#34,R1				;					2416
000560	060501 					ADD	R5,R1				; DB,*
000562	126127  000001  000004 			CMPB	1(R1),#4
000570	001002 					BNE	25$
000572	052710  000400 				BIS	#400,(R0)			;					2418
000576	032776  001000  000000 		25$:	BIT	#1000,@0(SP)			;					2420
000604	001002 					BNE	26$
000606	052710  004000 				BIS	#4000,(R0)			;					2422
000612	112776  000041  000002 		26$:	MOVB	#41,@2(SP)			;					2424
000620	112765  000003  000040 			MOVB	#3,40(R5)			; *,*(DB)				2425
000626	004767  000000G				JSR	PC,$NLBEG			;					2426
000632	005046 					CLR	-(SP)
000634	111100 					MOVB	(R1),R0
000636	004767  000000G				JSR	PC,$DPC1
000642	116111  000001 				MOVB	1(R1),(R1)
000646	012716  000001 				MOV	#1,(SP)
000652	111100 					MOVB	(R1),R0
000654	004767  000000G				JSR	PC,$DPC1
000660	012700  000500 				MOV	#500,R0
000664	016501  000100 				MOV	100(R5),R1			; *(DB),*
000670	004767  000000G				JSR	PC,$NLEND
000674	004767  176534 				JSR	PC,SEND.STATE
000700	005726 					TST	(SP)+				;					2398
000702	000167  000406 				JMP	42$				;					2401
000706	142776  000040  000000 		27$:	BICB	#40,@0(SP)			;					2429
000714	000441 					BR	34$				;					2398
000716	152776  000020  000000 		28$:	BISB	#20,@0(SP)			;					2430
000724	000435 					BR	34$				;					2322
000726	132776  000100  000000 		29$:	BITB	#100,@0(SP)
000734	001433 					BEQ	35$
000736	105765  000037 				TSTB	37(R5)				; *(DB)					2436
000742	001010 					BNE	30$				;					2437
000744	126527  000040  000005 			CMPB	40(R5),#5			; *(DB),*				2438
000752	001404 					BEQ	30$				;					2439
000754	126565  000034  000035 			CMPB	34(R5),35(R5)			; *(DB),*(DB)				2440
000762	001004 					BNE	31$
000764	142776  000100  000000 		30$:	BICB	#100,@0(SP)			;					2441
000772	000412 					BR	34$				;					2434
000774	105765  000035 			31$:	TSTB	35(R5)				; *(DB)					2442
001000	001004 					BNE	33$
001002	152776  000002  000000 		32$:	BISB	#2,@0(SP)			;					2443
001010	000403 					BR	34$				;					2434
001012	152776  000040  000000 		33$:	BISB	#40,@0(SP)			;					2445
001020	000167  177002 			34$:	JMP	2$				;					2322
001024	105776  000000 			35$:	TSTB	@0(SP)
001030	100373 					BPL	34$
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  92
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)

001032	142776  000200  000000 			BICB	#200,@0(SP)			;					2450
001040	032776  040000  000000 			BIT	#40000,@0(SP)			;					2452
001046	001402 					BEQ	36$
001050	004767  173070 				JSR	PC,CTLNXT
001054	000167  176742 			36$:	JMP	1$				;					2320
001060	126527  000040  000003 		37$:	CMPB	40(R5),#3			; *(DB),*				2457
001066	001112 					BNE	42$
001070	012766  000116  000004 			MOV	#116,4(SP)			;					2459
001076	060566  000004 				ADD	R5,4(SP)			; DB,*
001102	127665  000004  000120 			CMPB	@4(SP),120(R5)			; *,*(DB)
001110	103042 					BHIS	40$
001112	012701  000114 				MOV	#114,R1				;					2462
001116	060501 					ADD	R5,R1				; DB,*
001120	105711 					TSTB	(R1)
001122	001011 					BNE	38$				;					2465
001124	004767  000000G				JSR	PC,$RDBGT			;					2476
001130	103430 					BCS	39$
001132	105211 					INCB	(R1)				;					2479
001134	012703  000044 				MOV	#44,R3				;					2480
001140	060503 					ADD	R5,R3				; DB,*
001142	004767  000000G				JSR	PC,$CMQIN
001146	012700  000004 			38$:	MOV	#4,R0				;					2481
001152	066600  000002 				ADD	2(SP),R0
001156	010046 					MOV	R0,-(SP)
001160	012700  000006 				MOV	#6,R0
001164	066600  000004 				ADD	4(SP),R0
001170	010046 					MOV	R0,-(SP)
001172	004767  175170 				JSR	PC,RECEIVE.IN
001176	112776  000044  000006 			MOVB	#44,@6(SP)			;					2482
001204	105276  000010 				INCB	@10(SP)				;					2483
001210	000440 					BR	41$				;					2476
001212	004767  000000G			39$:	JSR	PC,$RDBRQ			;					2487
001216	005001 				40$:	CLR	R1				;					2491
001220	156501  000121 				BISB	121(R5),R1			; *(DB),*
001224	017600  000004 				MOV	@4(SP),R0
001230	105000 					CLRB	R0
001232	000300 					SWAB	R0
001234	020001 					CMP	R0,R1
001236	103026 					BHIS	42$
001240	105765  000115 				TSTB	115(R5)				; *(DB)					2494
001244	001423 					BEQ	42$
001246	012700  000004 				MOV	#4,R0				;					2497
001252	066600  000002 				ADD	2(SP),R0
001256	010046 					MOV	R0,-(SP)
001260	012700  000006 				MOV	#6,R0
001264	066600  000004 				ADD	4(SP),R0
001270	010046 					MOV	R0,-(SP)
001272	004767  000000V				JSR	PC,TRANSMIT.IN
001276	112776  000040  000006 			MOVB	#40,@6(SP)			;					2498
001304	062776  000400  000010 			ADD	#400,@10(SP)			;					2499
001312	022626 				41$:	CMP	(SP)+,(SP)+			;					2494
001314	062706  000006 			42$:	ADD	#6,SP				;					2291
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  93
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)

001320	000207 					RTS	PC

; Routine Size:  361 words,	Routine Base:  $CODE$ + 4720
; Maximum stack depth per invocation:  11 words


000146						.PSECT	$PLIT$,  RO ,  D  

					P.AAI:						; CASE Table for SET.INPUT.REQUE+0060	2329
000146	000042 					.WORD	42				; [7$]
000150	000042 					.WORD	42				; [7$]
000152	000034 					.WORD	34				; [6$]
000154	000000 					.WORD	0				; [4$]
000156	000034 					.WORD	34				; [6$]
000160	000042 					.WORD	42				; [7$]

					P.AAJ:						; CASE Table for SET.INPUT.REQUE+0154	2351
000162	000006 					.WORD	6				; [11$]
000164	000002 					.WORD	2				; [10$]
000166	000002 					.WORD	2				; [10$]
000170	000002 					.WORD	2				; [10$]
000172	000002 					.WORD	2				; [10$]
000174	000006 					.WORD	6				; [11$]

					P.AAK:						; CASE Table for SET.INPUT.REQUE+0276	2372
000176	000010 					.WORD	10				; [16$]
000200	000010 					.WORD	10				; [16$]
000202	000126 					.WORD	126				; [19$]
000204	000000 					.WORD	0				; [15$]
000206	000500 					.WORD	500				; [32$]
000210	000126 					.WORD	126				; [19$]

					P.AAL:						; CASE Table for SET.INPUT.REQUE+0456	2398
000212	000234 					.WORD	234				; [28$]
000214	000234 					.WORD	234				; [28$]
000216	000000 					.WORD	0				; [21$]
000220	000224 					.WORD	224				; [27$]
000222	000234 					.WORD	234				; [28$]
000224	000224 					.WORD	224				; [27$]
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  94
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (38)

;	  2504	global routine SET_PORT (DB) : LINKAGE_DB novalue =
;	  2505	
;	  2506	!++
;	  2507	! FUNCTIONAL DESCRIPTION:
;	  2508	!
;	  2509	!
;	  2510	! FORMAL PARAMETERS:
;	  2511	!	DB = address of DMC data base.
;	  2512	!
;	  2513	! IMPLICIT INPUTS:
;	  2514	!	None
;	  2515	!
;	  2516	! IMPLICIT OUTPUTS:
;	  2517	!	None
;	  2518	!
;	  2519	! ROUTINE VALUE:
;	  2520	! COMPLETION CODES:
;	  2521	!	None
;	  2522	!
;	  2523	! SIDE EFFECTS:
;	  2524	!	None
;	  2525	!--
;	  2526	
;	  2527	    begin
;	  2528	    GET_DMC_DATA_BASE (DB)
;	  2529	
;	  2530	    if .DB [D_INPUT_COMMAND] eql 0
;	  2531	    then
;	  2532		SET_INPUT_REQUEST (DB [D_TIM]);
;	  2533	
;	  2534	    if not .DB [DF_SERVICING_DMC] then SERVICE_DMC (DB [D_TIM]);
;	  2535	
;	  2536	    end;			!of routine SET_PORT


						.SBTTL	SET.PORT
006242						.PSECT	$CODE$,  RO 

000000	004167  000000G			SET.PORT::
						JSR	R1,$SAVE5			;					2504
000004	105765  000012 				TSTB	12(R5)				; *(DB)					2530
000010	001002 					BNE	1$
000012	004767  176440 				JSR	PC,SET.INPUT.REQUEST		;					2532
000016	032715  040000 			1$:	BIT	#40000,(R5)			; *,DB					2534
000022	001002 					BNE	2$
000024	004767  176164 				JSR	PC,SERVICE.DMC
000030	000207 				2$:	RTS	PC				;					2504

; Routine Size:  13 words,	Routine Base:  $CODE$ + 6242
; Maximum stack depth per invocation:  7 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  95
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (39)

;	  2537	routine TIMCCB (DB, CCB) : MCB_DB_CCB novalue =
;	  2538	
;	  2539	!++
;	  2540	! FUNCTIONAL DESCRIPTION:
;	  2541	!
;	  2542	!
;	  2543	! FORMAL PARAMETERS:
;	  2544	!	DB = address of DMC data base.
;	  2545	!	CCB = 
;	  2546	!
;	  2547	! IMPLICIT INPUTS:
;	  2548	!	None
;	  2549	!
;	  2550	! IMPLICIT OUTPUTS:
;	  2551	!	None
;	  2552	!
;	  2553	! ROUTINE VALUE:
;	  2554	! COMPLETION CODES:
;	  2555	!	None
;	  2556	!
;	  2557	! SIDE EFFECTS:
;	  2558	!	None
;	  2559	!--
;	  2560	
;	  2561	    begin
;	  2562	    GET_DMC_DATA_BASE (DB)
;	  2563	
;	  2564	    map
;	  2565		CCB : ref block field (C_FIELDS);
;	  2566	
;	  2567	    label
;	  2568		RECOVERY;
;	  2569	
;	  2570	    if .DB [D_OWNER_HANDLE] eql 0 then return $MCB_RETURN_CCB (.CCB);
;	  2571	
;	  2572	    do RECOVERY :
;	  2573		begin
;	  2574	
;	  2575		if .DB [DF_NOTIFY_OFF]
;	  2576		then
;	  2577		    leave RECOVERY with SCHEDULE_STATE_AST (.CCB, DB [D_TIM]);
;	  2578	
;	  2579		if .DB [DF_NOTIFY_STATE]
;	  2580		then
;	  2581		    leave RECOVERY with SCHEDULE_STATE_AST (.CCB, DB [D_TIM]);
;	  2582	
;	  2583		if .DB [D_TRANSIENT_ERROR] neq 0
;	  2584		then
;	  2585		    leave RECOVERY with SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM]);
;	  2586	
;	  2587		if .DB [D_PERSISTENT_ERROR] neq 0
;	  2588		then
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  96
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (39)

;	  2589		    leave RECOVERY with SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM]);
;	  2590	
;	  2591		return $MCB_RETURN_CCB (.CCB);
;	  2592		end
;	  2593	    while $MCB_GET_CCB (CCB);
;	  2594	
;	  2595	    end;			!of routine TIMCCB


						.SBTTL	TIMCCB
000000	010401 				TIMCCB: MOV	R4,R1				; *,CCB					2537
000002	005765  000042 				TST	42(R5)				; *(DB)					2570
000006	001430 					BEQ	5$
000010	032715  000400 			1$:	BIT	#400,(R5)			; *,DB					2575
000014	001003 					BNE	2$				;					2577
000016	032715  001000 				BIT	#1000,(R5)			; *,DB					2579
000022	001404 					BEQ	3$
000024	010104 				2$:	MOV	R1,R4				; CCB,*					2581
000026	004767  175560 				JSR	PC,SCHEDULE.STATE.AST
000032	000422 					BR	7$
000034	005765  000104 			3$:	TST	104(R5)				; *(DB)					2583
000040	001404 					BEQ	4$
000042	010104 					MOV	R1,R4				; CCB,*					2585
000044	004767  175652 				JSR	PC,SCHEDULE.TRANSIENT.AST
000050	000413 					BR	7$
000052	005765  000106 			4$:	TST	106(R5)				; *(DB)					2587
000056	001404 					BEQ	5$
000060	010104 					MOV	R1,R4				; CCB,*					2589
000062	004767  175410 				JSR	PC,SCHEDULE.PERSISTENT.AST
000066	000404 					BR	7$
000070	010104 				5$:	MOV	R1,R4				; CCB,*					2591
000072	004767  000000G				JSR	PC,$CCBRT
000076	000207 				6$:	RTS	PC				;					2572
000100	004767  000000G			7$:	JSR	PC,$CCBGT			;					2593
000104	103774 					BCS	6$
000106	010401 					MOV	R4,R1				; $MCB$R4,CCB
000110	000737 					BR	1$

; Routine Size:  37 words,	Routine Base:  $CODE$ + 6274
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  97
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (40)

;	  2596	routine TIMLTM (DB) : MCB_DB novalue =
;	  2597	
;	  2598	!++
;	  2599	! FUNCTIONAL DESCRIPTION:
;	  2600	!
;	  2601	!
;	  2602	! FORMAL PARAMETERS:
;	  2603	!	DB = address of DMC data base.
;	  2604	!
;	  2605	! IMPLICIT INPUTS:
;	  2606	!	None
;	  2607	!
;	  2608	! IMPLICIT OUTPUTS:
;	  2609	!	None
;	  2610	!
;	  2611	! ROUTINE VALUE:
;	  2612	! COMPLETION CODES:
;	  2613	!	None
;	  2614	!
;	  2615	! SIDE EFFECTS:
;	  2616	!	None
;	  2617	!--
;	  2618	
;	  2619	    begin
;	  2620	    GET_DMC_DATA_BASE (DB)
;	  2621	
;	  2622	    if not .DB [DF_SYNCHRONIZING] and
;	  2623		not ($DMC_BITS_CLEAR (.DB [D_REGISTER], SEL0, RDYI) and
;	  2624		$DMC_BITS_CLEAR (.DB [D_REGISTER], SEL2, RDYO))
;	  2625	    then
;	  2626		begin
;	  2627		RESET_TIMER (DB [D_TIM]);
;	  2628		COUNTER_INCREMENT (DB, D_LOST_INTERRUPT);
;	  2629		COUNTER_INCREMENT (DB, D_DEVICE_SERVICE_ERRORS);
;	  2630		SERVICE_DMC (DB [D_TIM]);
;	  2631		return;
;	  2632		end;
;	  2633	
;	  2634	    if .DB [DF_WAITING_FOR_RDYI]
;	  2635	    then
;	  2636		begin
;	  2637		RESET_TIMER (DB [D_TIM]);
;	  2638		COUNTER_INCREMENT (DB, D_LOST_RDYI);
;	  2639		COUNTER_INCREMENT (DB, D_DEVICE_SERVICE_ERRORS);
;	  2640		SET_PORT (DB [D_TIM]);
;	  2641		! SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_RESPONSE_ERROR);
;	  2642		return;
;	  2643		end;
;	  2644	
;	  2645	    if .DB [DF_FLUSHING_DMC]
;	  2646	    then
;	  2647		begin
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  98
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (40)

;	  2648		DB [DF_FLUSHING_DMC] = FALSE;
;	  2649		COUNTER_INCREMENT (DB, D_LOST_HALT);
;	  2650		COUNTER_INCREMENT (DB, D_DEVICE_SERVICE_ERRORS);
;	  2651		MASTER_CLEAR (DB [D_TIM]);
;	  2652		RESET_TIMER (DB [D_TIM]);
;	  2653		SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_RESPONSE_ERROR);
;	  2654		CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_HALTED, RMT);
;	  2655		SET_PORT (DB [D_TIM]);
;	  2656		return;
;	  2657		end;
;	  2658	
;	  2659	    if .DB [D_ASSIGNED_TRANSMIT_COUNT] neq 0
;	  2660	    then
;	  2661	
;	  2662		if (.DB [D_PROTOCOL_STATE] eql DS_MAINTENANCE) or .DB [DF_PROTOCOL_UP]
;	  2663		then
;	  2664		    begin
;	  2665		    SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_RESPONSE_ERROR);
;	  2666		    COUNTER_INCREMENT (DB, D_LOST_TRANSMIT);
;	  2667		    COUNTER_INCREMENT (DB, D_DEVICE_SERVICE_ERRORS);
;	  2668		    MASTER_CLEAR (DB [D_TIM]);
;	  2669		    RESET_TIMER (DB [D_TIM]);
;	  2670		    SET_PORT (DB [D_TIM]);
;	  2671		    return;
;	  2672		    end;
;	  2673	
;	  2674	    if .DB [DF_WAITING_FOR_RECEIVE]
;	  2675	    then
;	  2676		begin
;	  2677		DB [DF_WAITING_FOR_RECEIVE] = FALSE;
;	  2678		SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_SERVICE_TIMEOUT);
;	  2679		RESET_TIMER (DB [D_TIM]);
;	  2680		return;
;	  2681		end;
;	  2682	
;	  2683	    end;			!of routine TIMLTM


						.SBTTL	TIMLTM
000000	010546 				TIMLTM: MOV	R5,-(SP)			;					2596
000002	032715  020000 				BIT	#20000,(R5)			;					2622
000006	001033 					BNE	2$
000010	010500 					MOV	R5,R0				;					2623
000012	105770  000002 				TSTB	@2(R0)
000016	100406 					BMI	1$
000020	010501 					MOV	R5,R1				;					2624
000022	016100  000002 				MOV	2(R1),R0
000026	105760  000002 				TSTB	2(R0)
000032	100021 					BPL	2$
000034	011605 				1$:	MOV	(SP),R5				;					2627
000036	004767  175222 				JSR	PC,RESET.TIMER
000042	011600 					MOV	(SP),R0				;					2628
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page  99
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (40)

000044	052760  000400  000150 			BIS	#400,150(R0)
000052	012701  000150 				MOV	#150,R1				;					2629
000056	060001 					ADD	R0,R1
000060	010100 					MOV	R1,R0
000062	004767  000000G				JSR	PC,$IC8
000066	011605 					MOV	(SP),R5				;					2630
000070	004767  175754 				JSR	PC,SERVICE.DMC
000074	000565 					BR	7$				;					2626
000076	032776  004000  000000 		2$:	BIT	#4000,@0(SP)			;					2634
000104	001416 					BEQ	3$
000106	011605 					MOV	(SP),R5				;					2637
000110	004767  175150 				JSR	PC,RESET.TIMER
000114	011600 					MOV	(SP),R0				;					2638
000116	052760  001000  000150 			BIS	#1000,150(R0)
000124	012701  000150 				MOV	#150,R1				;					2639
000130	060001 					ADD	R0,R1
000132	010100 					MOV	R1,R0
000134	004767  000000G				JSR	PC,$IC8
000140	000540 					BR	6$				;					2640
000142	032776  010000  000000 		3$:	BIT	#10000,@0(SP)			;					2645
000150	001473 					BEQ	4$
000152	042776  010000  000000 			BIC	#10000,@0(SP)			;					2648
000160	011600 					MOV	(SP),R0				;					2649
000162	052760  002000  000150 			BIS	#2000,150(R0)
000170	012701  000150 				MOV	#150,R1				;					2650
000174	060001 					ADD	R0,R1
000176	010100 					MOV	R1,R0
000200	004767  000000G				JSR	PC,$IC8
000204	011605 					MOV	(SP),R5				;					2651
000206	004767  173512 				JSR	PC,MASTER.CLEAR
000212	011605 					MOV	(SP),R5				;					2652
000214	004767  175044 				JSR	PC,RESET.TIMER
000220	011605 					MOV	(SP),R5				;					2653
000222	012703  100154 				MOV	#-77624,R3
000226	004767  175460 				JSR	PC,SEND.PERSISTENT.ERROR
000232	004767  000000G				JSR	PC,$NLBEG			;					2654
000236	005046 					CLR	-(SP)
000240	012700  000034 				MOV	#34,R0
000244	066600  000002 				ADD	2(SP),R0
000250	010001 					MOV	R0,R1
000252	111100 					MOVB	(R1),R0
000254	004767  000000G				JSR	PC,$DPC1
000260	105011 					CLRB	(R1)
000262	012716  000001 				MOV	#1,(SP)
000266	105000 					CLRB	R0
000270	004767  000000G				JSR	PC,$DPC1
000274	012700  000501 				MOV	#501,R0
000300	016602  000002 				MOV	2(SP),R2
000304	016201  000100 				MOV	100(R2),R1
000310	004767  000000G				JSR	PC,$NLEND
000314	016605  000002 				MOV	2(SP),R5
000320	004767  175422 				JSR	PC,SEND.STATE
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 100
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (40)

000324	016605  000002 				MOV	2(SP),R5			;					2655
000330	004767  177300 				JSR	PC,SET.PORT
000334	005726 					TST	(SP)+				;					2645
000336	000463 					BR	9$				;					2647
000340	011600 				4$:	MOV	(SP),R0				;					2659
000342	105760  000117 				TSTB	117(R0)
000346	001441 					BEQ	8$
000350	126027  000034  000004 			CMPB	34(R0),#4			;					2662
000356	001404 					BEQ	5$
000360	032760  020000  000032 			BIT	#20000,32(R0)
000366	001431 					BEQ	8$
000370	011605 				5$:	MOV	(SP),R5				;					2665
000372	012703  100154 				MOV	#-77624,R3
000376	004767  175310 				JSR	PC,SEND.PERSISTENT.ERROR
000402	011600 					MOV	(SP),R0				;					2666
000404	052760  004000  000150 			BIS	#4000,150(R0)
000412	012701  000150 				MOV	#150,R1				;					2667
000416	060001 					ADD	R0,R1
000420	010100 					MOV	R1,R0
000422	004767  000000G				JSR	PC,$IC8
000426	011605 					MOV	(SP),R5				;					2668
000430	004767  173270 				JSR	PC,MASTER.CLEAR
000434	011605 					MOV	(SP),R5				;					2669
000436	004767  174622 				JSR	PC,RESET.TIMER
000442	011605 				6$:	MOV	(SP),R5				;					2670
000444	004767  177164 				JSR	PC,SET.PORT
000450	000416 				7$:	BR	9$				;					2664
000452	005776  000000 			8$:	TST	@0(SP)				;					2674
000456	100013 					BPL	9$
000460	042776  100000  000000 			BIC	#100000,@0(SP)			;					2677
000466	011605 					MOV	(SP),R5				;					2678
000470	012703  100210 				MOV	#-77570,R3
000474	004767  175314 				JSR	PC,SEND.TRANSIENT.ERROR
000500	011605 					MOV	(SP),R5				;					2679
000502	004767  174556 				JSR	PC,RESET.TIMER
000506	005726 				9$:	TST	(SP)+				;					2596
000510	000207 					RTS	PC

; Routine Size:  165 words,	Routine Base:  $CODE$ + 6406
; Maximum stack depth per invocation:  3 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 101
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (41)

;	  2684	routine TIMPIN (DB) : MCB_DB novalue =
;	  2685	
;	  2686	!++
;	  2687	! FUNCTIONAL DESCRIPTION:
;	  2688	!
;	  2689	!
;	  2690	! FORMAL PARAMETERS:
;	  2691	!	DB = address of DMC data base.
;	  2692	!
;	  2693	! IMPLICIT INPUTS:
;	  2694	!	None
;	  2695	!
;	  2696	! IMPLICIT OUTPUTS:
;	  2697	!	None
;	  2698	!
;	  2699	! ROUTINE VALUE:
;	  2700	! COMPLETION CODES:
;	  2701	!	None
;	  2702	!
;	  2703	! SIDE EFFECTS:
;	  2704	!	None
;	  2705	!--
;	  2706	
;	  2707	    begin
;	  2708	    GET_DMC_DATA_BASE (DB)
;	  2709	
;	  2710	    if .DB [DF_DMR_LINE] then return;
;	  2711	
;	  2712	    DMCDBI ();
;	  2713	    DMCNMI ();
;	  2714	    DMCDVI ();
;	  2715	
;	  2716	    if .DB [D_LINE_STATE] eql DL_ON then $MCB_ENABLE_LONG_TIMER ();
;	  2717	
;	  2718	    end;			!of routine TIMPIN


						.SBTTL	TIMPIN
000000	032765  004000  000032 		TIMPIN: BIT	#4000,32(R5)			; *,*(DB)				2710
000006	001013 					BNE	1$
000010	004767  000000G				JSR	PC,DMCDBI			;					2712
000014	004767  000000G				JSR	PC,DMCNMI			;					2713
000020	004767  000000G				JSR	PC,DMCDVI			;					2714
000024	105765  000037 				TSTB	37(R5)				; *(DB)					2716
000030	001002 					BNE	1$
000032	004767  000000G				JSR	PC,$LTMEN
000036	000207 				1$:	RTS	PC				;					2684

; Routine Size:  16 words,	Routine Base:  $CODE$ + 7120
; Maximum stack depth per invocation:  1 word
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 102
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (42)

;	  2719	routine TIMPWF (DB) : MCB_DB novalue =
;	  2720	
;	  2721	!++
;	  2722	! FUNCTIONAL DESCRIPTION:
;	  2723	!
;	  2724	!
;	  2725	! FORMAL PARAMETERS:
;	  2726	!	DB = address of DMC data base.
;	  2727	!
;	  2728	! IMPLICIT INPUTS:
;	  2729	!	None
;	  2730	!
;	  2731	! IMPLICIT OUTPUTS:
;	  2732	!	None
;	  2733	!
;	  2734	! ROUTINE VALUE:
;	  2735	! COMPLETION CODES:
;	  2736	!	None
;	  2737	!
;	  2738	! SIDE EFFECTS:
;	  2739	!	None
;	  2740	!--
;	  2741	
;	  2742	    begin
;	  2743	    GET_DMC_DATA_BASE (DB)
;	  2744	    SIGNAL_STOP (DMC$_PWF);
;	  2745	    end;			!of routine TIMPWF


						.SBTTL	TIMPWF
000000	012746  100014 			TIMPWF: MOV	#-77764,-(SP)			;					2744
000004	012746  000001 				MOV	#1,-(SP)
000010	004767  000000G				JSR	PC,$STOP
000014	022626 					CMP	(SP)+,(SP)+			;					2742
000016	000207 					RTS	PC				;					2719

; Routine Size:  8 words,	Routine Base:  $CODE$ + 7160
; Maximum stack depth per invocation:  3 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 103
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (43)

;	  2746	routine TIMRDB (DB, CCB) : MCB_DB_CCB novalue =
;	  2747	
;	  2748	!++
;	  2749	! FUNCTIONAL DESCRIPTION:
;	  2750	!
;	  2751	!
;	  2752	! FORMAL PARAMETERS:
;	  2753	!	DB = address of DMC data base.
;	  2754	!	CCB = 
;	  2755	!
;	  2756	! IMPLICIT INPUTS:
;	  2757	!	None
;	  2758	!
;	  2759	! IMPLICIT OUTPUTS:
;	  2760	!	None
;	  2761	!
;	  2762	! ROUTINE VALUE:
;	  2763	! COMPLETION CODES:
;	  2764	!	None
;	  2765	!
;	  2766	! SIDE EFFECTS:
;	  2767	!	None
;	  2768	!--
;	  2769	
;	  2770	    begin
;	  2771	    GET_DMC_DATA_BASE (DB)
;	  2772	
;	  2773	    map
;	  2774		CCB : ref block field (C_FIELDS);
;	  2775	
;	  2776	    case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
;	  2777		set
;	  2778		[DD_CLEARED, DD_MASTER_CLEARED] :
;	  2779		    RDBRT$ (.CCB);
;	  2780		[inrange] :
;	  2781		    begin
;	  2782		    DB [D_ASSIGNABLE_RECEIVE_COUNT] = .DB [D_ASSIGNABLE_RECEIVE_COUNT] + 1;
;	  2783		    CMQIN$ (DB [D_ASSIGNABLE_RECEIVE_CCBS], .CCB);
;	  2784		    SET_PORT (DB [D_TIM]);
;	  2785		    end;
;	  2786		tes;
;	  2787	    end;			!of routine TIMRDB


						.SBTTL	TIMRDB
000000	010401 				TIMRDB: MOV	R4,R1				; *,CCB					2746
000002	116500  000040 				MOVB	40(R5),R0			; *(DB),*				2776
000006	006300 					ASL	R0
000010	066007  000226'				ADD	P.AAM(R0),PC			; Case dispatch
000014	010104 				1$:	MOV	R1,R4				; CCB,*					2779
000016	004767  000000G				JSR	PC,$RDBRT
000022	000207 					RTS	PC				;					2776
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 104
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (43)

000024	105265  000114 			2$:	INCB	114(R5)				; *(DB)					2782
000030	010500 					MOV	R5,R0				; DB,*					2783
000032	062700  000044 				ADD	#44,R0
000036	010104 					MOV	R1,R4				; CCB,*
000040	010003 					MOV	R0,R3
000042	004767  000000G				JSR	PC,$CMQIN
000046	004767  176770 				JSR	PC,SET.PORT			;					2784
000052	000207 					RTS	PC				;					2746

; Routine Size:  22 words,	Routine Base:  $CODE$ + 7200
; Maximum stack depth per invocation:  1 word


000226						.PSECT	$PLIT$,  RO ,  D  

					P.AAM:						; CASE Table for TIMRDB+0010		2776
000226	000000 					.WORD	0				; [1$]
000230	000010 					.WORD	10				; [2$]
000232	000010 					.WORD	10				; [2$]
000234	000010 					.WORD	10				; [2$]
000236	000010 					.WORD	10				; [2$]
000240	000000 					.WORD	0				; [1$]
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 105
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (44)

;	  2788	routine TRANSMIT_IN (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
;	  2789	
;	  2790	!++
;	  2791	! FUNCTIONAL DESCRIPTION:
;	  2792	!
;	  2793	!
;	  2794	! FORMAL PARAMETERS:
;	  2795	!	DB = address of DMC data base.
;	  2796	!
;	  2797	! IMPLICIT INPUTS:
;	  2798	!	None
;	  2799	!
;	  2800	! IMPLICIT OUTPUTS:
;	  2801	!	None
;	  2802	!
;	  2803	! ROUTINE VALUE:
;	  2804	! COMPLETION CODES:
;	  2805	!	None
;	  2806	!
;	  2807	! SIDE EFFECTS:
;	  2808	!	None
;	  2809	!--
;	  2810	
;	  2811	    begin
;	  2812	    GET_DMC_DATA_BASE (DB)
;	  2813	
;	  2814	    local
;	  2815		ADDRESS,
;	  2816		BIAS,
;	  2817		CCB : ref block field (C_FIELDS),
;	  2818		LENGTH;
;	  2819	
;	  2820	    if not CMQRM$ (DB [D_ASSIGNABLE_TRANSMIT_CCBS], CCB)
;	  2821	    then
;	  2822		return SIGNAL_STOP (DMC$_QUE, DB [D_ASSIGNABLE_TRANSMIT_CCBS]);
;	  2823	
;	  2824	    DB [D_ASSIGNABLE_TRANSMIT_COUNT] = .DB [D_ASSIGNABLE_TRANSMIT_COUNT] - 1;
;	  2825	    CMQIN$ (DB [D_ASSIGNED_TRANSMIT_CCBS], .CCB);
;	  2826	
;	  2827	    if .CCB [C_CHN] eql 0
;	  2828	    then
;	  2829		begin
;	  2830		BIAS = .CCB [C_BIAS];
;	  2831		ADDRESS = .CCB [C_ADDR];
;	  2832		LENGTH = .CCB [C_CNT];
;	  2833		end
;	  2834	    else
;	  2835		begin
;	  2836		BIAS = .DB_BIAS;
;	  2837		ADDRESS = LENGTH = .DB [D_NEXT_TRANSMIT_BUFFER];
;	  2838		LENGTH = $MCB_COPY_CHAIN_TO_BUFFER (.CCB, (.BIAS, .ADDRESS));
;	  2839		MAP$ (.DB_BIAS);
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 106
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (44)

;	  2840		DB [D_NEXT_TRANSMIT_BUFFER] = .DB [D_NEXT_TRANSMIT_BUFFER] + .DB [D_TRANSMIT_BUFFER_SIZE];
;	  2841	
;	  2842		if .DB [D_NEXT_TRANSMIT_BUFFER] geqa .DB [D_HIGHEST_TRANSMIT_BUFFER]
;	  2843		then
;	  2844		    DB [D_NEXT_TRANSMIT_BUFFER] = DB [D_BUF];
;	  2845	
;	  2846		end;
;	  2847	
;	  2848	    begin
;	  2849	
;	  2850	    local
;	  2851		TEMP;
;	  2852	
;	  2853	    $MCB_CONVERT_TO_UBA_ADDRESS ((.BIAS, .ADDRESS), .LOW, TEMP);
;	  2854	    TEMP = .TEMP^%fieldexpand (BA_HIGH, 1);
;	  2855	    .HIGH = (TEMP = .TEMP + .LENGTH);
;	  2856	    end;
;	  2857	    end;			!of routine TRANSMIT_IN


						.GLOBL	$CPTBF


						.SBTTL	TRANSMIT.IN
007254						.PSECT	$CODE$,  RO 

000000	010146 				TRANSMIT.IN:
						MOV	R1,-(SP)			;					2788
000002	010500 					MOV	R5,R0				; DB,*					2820
000004	062700  000054 				ADD	#54,R0
000010	010003 					MOV	R0,R3
000012	004767  000000G				JSR	PC,$CMQRM
000016	103012 					BHIS	1$
000020	010046 					MOV	R0,-(SP)			;					2822
000022	012746  100034 				MOV	#-77744,-(SP)
000026	012746  000002 				MOV	#2,-(SP)
000032	004767  000000G				JSR	PC,$STOP
000036	062706  000006 				ADD	#6,SP
000042	000462 					BR	5$
000044	105365  000115 			1$:	DECB	115(R5)				; *(DB)					2824
000050	010500 					MOV	R5,R0				; DB,*					2825
000052	062700  000060 				ADD	#60,R0
000056	010003 					MOV	R0,R3
000060	004767  000000G				JSR	PC,$CMQIN
000064	005764  000002 				TST	2(R4)				; *(CCB)				2827
000070	001007 					BNE	2$
000072	016402  000016 				MOV	16(R4),R2			; *(CCB),BIAS				2830
000076	016403  000020 				MOV	20(R4),R3			; *(CCB),ADDRESS			2831
000102	016400  000022 				MOV	22(R4),R0			; *(CCB),LENGTH				2832
000106	000427 					BR	4$				;					2827
000110	016702  000000G			2$:	MOV	.CRDAT,R2			; *,BIAS				2836
000114	012701  000066 				MOV	#66,R1				;					2837
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 107
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (44)

000120	060501 					ADD	R5,R1				; DB,*
000122	011100 					MOV	(R1),R0				; *,LENGTH
000124	010003 					MOV	R0,R3				; LENGTH,ADDRESS
000126	010246 					MOV	R2,-(SP)			; BIAS,*				2838
000130	010346 					MOV	R3,-(SP)			; ADDRESS,*
000132	004767  000000G				JSR	PC,$CPTBF
000136	016767  000000G 000000G			MOV	.CRDAT,KISAR6			;					2839
000144	066511  000064 				ADD	64(R5),(R1)			; *(DB),*				2840
000150	021165  000070 				CMP	(R1),70(R5)			; *,*(DB)				2842
000154	103403 					BLO	3$
000156	010511 					MOV	R5,(R1)				; DB,*					2844
000160	062711  000616 				ADD	#616,(R1)
000164	022626 				3$:	CMP	(SP)+,(SP)+			;					2835
000166	004767  000000G			4$:	JSR	PC,$PHY18			;					2853
000172	010376  000006 				MOV	R3,@6(SP)			; *,LOW
000176	072227  000016 				ASH	#16,R2				;					2854
000202	060002 					ADD	R0,R2				; LENGTH,TEMP				2855
000204	010276  000004 				MOV	R2,@4(SP)			; TEMP,HIGH
000210	012601 				5$:	MOV	(SP)+,R1			;					2788
000212	000207 					RTS	PC

; Routine Size:  70 words,	Routine Base:  $CODE$ + 7254
; Maximum stack depth per invocation:  5 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 108
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (45)

;	  2858	routine TRANSMIT_OUT (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
;	  2859	
;	  2860	!++
;	  2861	! FUNCTIONAL DESCRIPTION:
;	  2862	!
;	  2863	!
;	  2864	! FORMAL PARAMETERS:
;	  2865	!	DB = address of DMC data base.
;	  2866	!
;	  2867	! IMPLICIT INPUTS:
;	  2868	!	None
;	  2869	!
;	  2870	! IMPLICIT OUTPUTS:
;	  2871	!	None
;	  2872	!
;	  2873	! ROUTINE VALUE:
;	  2874	! COMPLETION CODES:
;	  2875	!	None
;	  2876	!
;	  2877	! SIDE EFFECTS:
;	  2878	!	None
;	  2879	!--
;	  2880	
;	  2881	    begin
;	  2882	    GET_DMC_DATA_BASE (DB)
;	  2883	
;	  2884	    map
;	  2885		HIGH : block [1] field (DMC_FIELDS),
;	  2886		LOW : block [1] field (DMC_FIELDS);
;	  2887		
;	  2888	    local
;	  2889		CCB : ref block field (C_FIELDS);
;	  2890	
;	  2891	    if not CMQRM$ (DB [D_ASSIGNED_TRANSMIT_CCBS], CCB)
;	  2892	    then
;	  2893		SIGNAL_STOP (DMC$_QUE, DB [D_ASSIGNED_TRANSMIT_CCBS]);
;	  2894	
;	  2895	    if
;	  2896		not begin
;	  2897	
;	  2898		if .CCB [C_CHN] eqla 0
;	  2899		then
;	  2900		    CHECK_BA (DB [D_TIM], .CCB [C_BIAS], .CCB [C_ADDR])
;	  2901		else
;	  2902		    CHECK_BA (DB [D_TIM], .DB_BIAS, 0)
;	  2903	
;	  2904		end
;	  2905	    then
;	  2906		begin
;	  2907		SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_ABORTED);
;	  2908		COUNTER_INCREMENT (DB, D_TRANSMIT_BA_MISMATCH);
;	  2909		COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 109
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (45)

;	  2910		SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
;	  2911		MASTER_CLEAR (DB [D_TIM]);
;	  2912		return;
;	  2913		end;
;	  2914	
;	  2915	    selectone .DB [D_PROTOCOL_STATE] of
;	  2916		set
;	  2917		[DS_RUNNING] :
;	  2918		    begin
;	  2919		    COUNTER_ADD (DB, D_BYTES_TRANSMITTED, .HIGH [CC]);
;	  2920		    COUNTER_INCREMENT (DB, D_BLOCKS_TRANSMITTED);
;	  2921		    end;
;	  2922		[DS_MAINTENANCE] :
;	  2923	
;	  2924		    if .CCB [C_MOD] eql DLL$K_TRANSMIT_AND_TIME
;	  2925		    then
;	  2926			DB [DF_WAITING_FOR_RECEIVE] = TRUE;
;	  2927	
;	  2928		tes;
;	  2929	
;	  2930	    DB [DF_PROTOCOL_UP] = TRUE;
;	  2931	    SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_SUCCESS);
;	  2932	    end;			!of routine TRANSMIT_OUT


						.SBTTL	TRANSMIT.OUT
000000	010146 				TRANSMIT.OUT:
						MOV	R1,-(SP)			;					2858
000002	005746 					TST	-(SP)
000004	012703  000060 				MOV	#60,R3				;					2891
000010	060503 					ADD	R5,R3				; DB,*
000012	004767  000000G				JSR	PC,$CMQRM
000016	103402 					BCS	1$
000020	010416 					MOV	R4,(SP)				; $MCB$R4,CCB
000022	000411 					BR	2$
000024	010346 				1$:	MOV	R3,-(SP)			;					2893
000026	012746  100034 				MOV	#-77744,-(SP)
000032	012746  000002 				MOV	#2,-(SP)
000036	004767  000000G				JSR	PC,$STOP
000042	062706  000006 				ADD	#6,SP
000046	011600 				2$:	MOV	(SP),R0				; CCB,*					2898
000050	005760  000002 				TST	2(R0)				; *(CCB)
000054	001011 					BNE	3$
000056	016002  000016 				MOV	16(R0),R2			; *(CCB),*				2900
000062	016003  000020 				MOV	20(R0),R3			; *(CCB),*
000066	004767  170256 				JSR	PC,CHECK.BA
000072	006000 					ROR	R0
000074	103010 					BCC	4$
000076	000433 					BR	5$
000100	016702  000000G			3$:	MOV	.CRDAT,R2			;					2902
000104	005003 					CLR	R3
000106	004767  170236 				JSR	PC,CHECK.BA
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 110
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (45)

000112	006000 					ROR	R0
000114	103424 					BLO	5$
000116	011604 				4$:	MOV	(SP),R4				; CCB,*					2907
000120	012700  100030 				MOV	#-77750,R0
000124	004767  174436 				JSR	PC,SCHEDULE.TRANSMIT
000130	052765  002000  000152 			BIS	#2000,152(R5)			; *,*(DB)				2908
000136	012700  000152 				MOV	#152,R0				;					2909
000142	060500 					ADD	R5,R0				; DB,*
000144	004767  000000G				JSR	PC,$IC8
000150	012703  100174 				MOV	#-77604,R3			;					2910
000154	004767  174450 				JSR	PC,SEND.PERSISTENT.ERROR
000160	004767  172456 				JSR	PC,MASTER.CLEAR			;					2911
000164	000446 					BR	8$				;					2906
000166	116500  000034 			5$:	MOVB	34(R5),R0			; *(DB),*				2915
000172	020027  000003 				CMP	R0,#3
000176	001017 					BNE	6$
000200	012700  000122 				MOV	#122,R0				;					2919
000204	060500 					ADD	R5,R0				; DB,*
000206	016601  000006 				MOV	6(SP),R1			; HIGH,*
000212	042701  140000 				BIC	#140000,R1
000216	004767  000000G				JSR	PC,$AC32
000222	012700  000132 				MOV	#132,R0				;					2920
000226	060500 					ADD	R5,R0				; DB,*
000230	004767  000000G				JSR	PC,$IC32
000234	000412 					BR	7$				;					2915
000236	020027  000004 			6$:	CMP	R0,#4
000242	001007 					BNE	7$
000244	011600 					MOV	(SP),R0				; CCB,*					2924
000246	126027  000013  000010 			CMPB	13(R0),#10			; *(CCB),*
000254	001002 					BNE	7$
000256	052715  100000 				BIS	#100000,(R5)			; *,DB					2926
000262	052765  020000  000032 		7$:	BIS	#20000,32(R5)			; *,*(DB)				2930
000270	011604 					MOV	(SP),R4				; CCB,*					2931
000272	012700  100001 				MOV	#-77777,R0
000276	004767  174264 				JSR	PC,SCHEDULE.TRANSMIT
000302	005726 				8$:	TST	(SP)+				;					2858
000304	012601 					MOV	(SP)+,R1
000306	000207 					RTS	PC

; Routine Size:  100 words,	Routine Base:  $CODE$ + 7470
; Maximum stack depth per invocation:  6 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 111
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (46)

;	  2933	routine ZERO_CIRCUIT_COUNTERS (DB) : LINKAGE_DB novalue =
;	  2934	
;	  2935	!++
;	  2936	! FUNCTIONAL DESCRIPTION:
;	  2937	!
;	  2938	!
;	  2939	! FORMAL PARAMETERS:
;	  2940	!	DB = address of DMC data base.
;	  2941	!
;	  2942	! IMPLICIT INPUTS:
;	  2943	!	None
;	  2944	!
;	  2945	! IMPLICIT OUTPUTS:
;	  2946	!	None
;	  2947	!
;	  2948	! ROUTINE VALUE:
;	  2949	!	The appropriate NM status code
;	  2950	!
;	  2951	! COMPLETION CODES:
;	  2952	!	None
;	  2953	!
;	  2954	! SIDE EFFECTS:
;	  2955	!	None
;	  2956	!--
;	  2957	
;	  2958	    begin
;	  2959	    GET_DMC_DATA_BASE (DB)
;	  2960	    COUNTER_ZERO (DB, D_BYTES_RECEIVED);	! [1000]
;	  2961	    COUNTER_ZERO (DB, D_BYTES_TRANSMITTED);	! [1001]
;	  2962	    COUNTER_ZERO (DB, D_BLOCKS_RECEIVED);	! [1010]
;	  2963	    COUNTER_ZERO (DB, D_BLOCKS_TRANSMITTED);	! [1011]
;	  2964	
;	  2965	    begin
;	  2966	
;	  2967	    macro
;	  2968		BASE (FLD) = DB [$SUB_FIELD (D_LNTB, FLD)] %,
;	  2969		COPY (FLD) = DB [$SUB_FIELD (D_CPTB, FLD)] %;
;	  2970	
;	  2971	    begin
;	  2972	
;	  2973	    local
;	  2974		CNT,
;	  2975		FRM_PTR,
;	  2976		TO_PTR;
;	  2977	
;	  2978	    FRM_PTR = BASE [BASE_COUNTER_BEGIN];
;	  2979	    TO_PTR = COPY [BASE_COUNTER_BEGIN];
;	  2980	    CNT = %fieldexpand (BASE_NAKS_RCV_REP, 0)^1 + %fieldexpand (BASE_NAKS_RCV_REP, 1)/8
;	  2981		- %fieldexpand (BASE_COUNTER_BEGIN, 0)^1 + %fieldexpand (BASE_COUNTER_BEGIN, 1)/8;
;	  2982	
;	  2983	    do ch$wchar_a (ch$rchar_a (FRM_PTR), TO_PTR) while (CNT = .CNT - 1) nequ 0;
;	  2984	
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 112
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (46)

;	  2985	    end;
;	  2986	
;	  2987	    if .DB [DF_DMR]
;	  2988	    then
;	  2989		begin
;	  2990		COPY [BASE_NAKS_RCV_REP] = .BASE [BASE_NAKS_RCV_REP];
;	  2991		COPY [BASE_NAKS_RCV_TOO_LONG] = .BASE [BASE_NAKS_RCV_TOO_LONG];
;	  2992		COPY [BASE_NAKS_SND_RCV_REP] = .BASE [BASE_NAKS_SND_RCV_REP];
;	  2993		COPY [BASE_INCOMPLETE_SEL] = .BASE [BASE_INCOMPLETE_SEL];
;	  2994		COPY [BASE_NO_REPLY_TO_SEL] = .BASE [BASE_NO_REPLY_TO_SEL];
;	  2995		end;
;	  2996	
;	  2997	    end;
;	  2998	    end;


						.SBTTL	ZERO.CIRCUIT.COUNTERS
000000	004167  000000G			ZERO.CIRCUIT.COUNTERS:
						JSR	R1,$SAVE5			;					2933
000004	010502 					MOV	R5,R2				; *,DB
000006	005062  000126 				CLR	126(R2)				; *(DB)					2960
000012	005062  000130 				CLR	130(R2)				; *(DB)
000016	005062  000122 				CLR	122(R2)				; *(DB)					2961
000022	005062  000124 				CLR	124(R2)				; *(DB)
000026	005062  000136 				CLR	136(R2)				; *(DB)					2962
000032	005062  000140 				CLR	140(R2)				; *(DB)
000036	005062  000132 				CLR	132(R2)				; *(DB)					2963
000042	005062  000134 				CLR	134(R2)				; *(DB)
000046	062705  000156 				ADD	#156,R5				; *,FRM.PTR				2978
000052	010201 					MOV	R2,R1				; DB,TO.PTR				2979
000054	062701  000556 				ADD	#556,R1				; *,TO.PTR
000060	012700  000011 				MOV	#11,R0				; *,CNT					2980
000064	112521 				1$:	MOVB	(R5)+,(R1)+			; FRM.PTR,TO.PTR			2983
000066	077002 					SOB	R0,1$				; CNT,*
000070	032762  010000  000032 			BIT	#10000,32(R2)			; *,*(DB)				2987
000076	001417 					BEQ	2$
000100	116262  000167  000567 			MOVB	167(R2),567(R2)			; *(DB),*(DB)				2990
000106	116262  000172  000572 			MOVB	172(R2),572(R2)			; *(DB),*(DB)				2991
000114	116262  000173  000573 			MOVB	173(R2),573(R2)			; *(DB),*(DB)				2992
000122	116262  000214  000614 			MOVB	214(R2),614(R2)			; *(DB),*(DB)				2993
000130	116262  000215  000615 			MOVB	215(R2),615(R2)			; *(DB),*(DB)				2994
000136	000207 				2$:	RTS	PC				;					2933

; Routine Size:  48 words,	Routine Base:  $CODE$ + 10000
; Maximum stack depth per invocation:  7 words
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 113
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (47)

;	  2999	routine ZERO_LINE_COUNTERS (DB) : LINKAGE_DB novalue =
;	  3000	
;	  3001	!++
;	  3002	! FUNCTIONAL DESCRIPTION:
;	  3003	!
;	  3004	!
;	  3005	! FORMAL PARAMETERS:
;	  3006	!	DB = address of DMC data base.
;	  3007	!
;	  3008	! IMPLICIT INPUTS:
;	  3009	!	None
;	  3010	!
;	  3011	! IMPLICIT OUTPUTS:
;	  3012	!	None
;	  3013	!
;	  3014	! ROUTINE VALUE:
;	  3015	!	The appropriate NM status code
;	  3016	!
;	  3017	! COMPLETION CODES:
;	  3018	!	None
;	  3019	!
;	  3020	! SIDE EFFECTS:
;	  3021	!	None
;	  3022	!--
;	  3023	
;	  3024	    begin
;	  3025	    GET_DMC_DATA_BASE (DB)
;	  3026	
;	  3027	    if .DB [DF_DMR]
;	  3028	    then
;	  3029		begin
;	  3030	
;	  3031		macro
;	  3032		    BASE (FLD) = DB [$SUB_FIELD (D_LNTB, FLD)] %,
;	  3033		    COPY (FLD) = DB [$SUB_FIELD (D_CPTB, FLD)] %;
;	  3034	
;	  3035		COPY [BASE_NAKS_RCV_RCV_OVRN] = .BASE [BASE_NAKS_RCV_RCV_OVRN];
;	  3036		COPY [BASE_NAKS_RCV_HDR_FMT] = .BASE [BASE_NAKS_RCV_HDR_FMT];
;	  3037		COPY [BASE_NAKS_SND_RCV_OVRN] = .BASE [BASE_NAKS_SND_RCV_OVRN];
;	  3038		COPY [BASE_NAKS_SND_HDR_FMT] = .BASE [BASE_NAKS_SND_HDR_FMT];
;	  3039		COPY [BASE_XMT_UNDR] = .BASE [BASE_XMT_UNDR];
;	  3040		COPY [BASE_STRM_TIMEOUT] = .BASE [BASE_STRM_TIMEOUT];
;	  3041		end;
;	  3042	
;	  3043	    end;


						.SBTTL	ZERO.LINE.COUNTERS
000000	032765  010000  000032 		ZERO.LINE.COUNTERS:
						BIT	#10000,32(R5)			; *,*(DB)				3027
000006	001422 					BEQ	1$
000010	116565  000170  000570 			MOVB	170(R5),570(R5)			; *(DB),*(DB)				3035
DMC								21-Feb-1984 12:56:46	TOPS-20 Bliss-16 3(552)		    Page 114
X04690								 9-Nov-1983 10:58:01	EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (47)

000016	116565  000171  000571 			MOVB	171(R5),571(R5)			; *(DB),*(DB)				3036
000024	116565  000174  000574 			MOVB	174(R5),574(R5)			; *(DB),*(DB)				3037
000032	116565  000175  000575 			MOVB	175(R5),575(R5)			; *(DB),*(DB)				3038
000040	116565  000176  000576 			MOVB	176(R5),576(R5)			; *(DB),*(DB)				3039
000046	116565  000203  000603 			MOVB	203(R5),603(R5)			; *(DB),*(DB)				3040
000054	000207 				1$:	RTS	PC				;					2999

; Routine Size:  23 words,	Routine Base:  $CODE$ + 10140
; Maximum stack depth per invocation:  0 words


;	  3044	end
;	  3045	eludom



;					OTS external references
						.GLOBL	$SAVE5, $SAVE4, $SAVE3, $STOP


;					PSECT SUMMARY
;
;	Psect Name			Words	  Attributes
;	 $PLIT$				   81	    RO ,  D  ,  LCL,  REL,  CON
;	 ......				   16	    RW ,  D  ,  LCL,  REL,  CON
;	 $CODE$				 2119	    RO ,  I  ,  LCL,  REL,  CON




;				LIBRARY STATISTICS
;
;					     -------- Symbols --------    Blocks
;	File				     Total    Loaded   Percent      Read
;
;  NETPKG:<V3P0>MCBLIB.L16.7		       372       100        26         0
;  NETPKG:<MCB>XPORTX.L16.15		       599         9         1         0
;  NETPKG:<MCB>NMXLIB.L16.13		       200        15         7         0
;  EXODUS:<BRANNON.AP8.DMR>DMCDAT.L16.3        220       181        82         0





; Size:		2119 code + 97 data words
; Run Time:	   00:48.7
; Elapsed Time:	   01:37.2
; Memory Used:	91 pages
; Compilation Complete
ADDR				 603	 636	 638
ADDRESS				2815	2831#	2837#	2838	2853
BASE				2968#	2978	2990	2991	2992	2993	2994	3032#	3035	3036	3037	3038
				3039	3040
BASE_COUNTER_BEGIN		2978	2979	2981
BASE_I				2389
BASE_IN				 440	 571*	2382
BASE_INCOMPLETE_SEL		2993
BASE_NAKS_RCV_HDR_FMT		3036
BASE_NAKS_RCV_RCV_OVRN		3035
BASE_NAKS_RCV_REP		2980	2990
BASE_NAKS_RCV_TOO_LONG		2991
BASE_NAKS_SND_HDR_FMT		3038
BASE_NAKS_SND_RCV_OVRN		3037
BASE_NAKS_SND_RCV_REP		2992
BASE_NO_REPLY_TO_SEL		2994
BASE_STRM_TIMEOUT		3040
BASE_XMT_UNDR			3039
BA_CC_I				2466	2482	2498
BA_CC_O				1527	1533
BA_HIGH				 601	 644	1700	2854
BA_LOW				 640
BIAS				 603	 638	1249	1267	2816	2830#	2836#	2838	2853
BLISS16				   3
BSEL0				2239	2337	2389	2424	2466	2482	2498
BSEL2				1465
BUF				 630#	 640	 644	2201#	2205	2206	2237#	2239	2265#	2267#	2268#	2269#
				2270#	2318#	2335#	2336#	2337#	2382	2383#	2387#	2389#	2403#	2404#	2414#
				2418#	2422#	2424#	2465	2466#	2481	2482#	2497	2498#
CALL$				 454	1260#
CBIT_LINKAGE			 426#
CC				1752	2919
CCB				 237+	 241+	 253+	 257+	 280+	 284+	 293+	 297+	 306+	 310+	 328+	 332+
				 512	 514	 516	 825	 829	 831#	 832#	 833	 844	 871	 876#	 877#
				 878	 889	 907	 909	 911#	 913#	 914#	 915	1012	1040	1046#	1047#
				1048	1058	1086	1092#	1093#	1094	1104	1132	1138#	1139#	1140	1214
				1237	1277	1305	1307	1352	1381	1391	1422	1592	1620	1631	1632
				1635	1642	1644	1651	1656#	1686	1688	1693	1699	1735	1737	1741
				1744	1752#	1757	1762	1814	1842	1844#	1845#	1846#	1847#	1848	1851
				1878	1880#	1882	1885#	1886#	1887#	1888	1890	1918	1920	1922#	1923#
				1924#	1925#	1926	1931	1933	1938	1966	1968#	1969#	1970#	1971#	1972
				1975	2002	2004#	2005#	2006	2042	2048	2050	2082	2090	2092	2124
				2130	2132	2537	2565	2570	2577	2581	2585	2589	2591	2593	2746
				2774	2779	2783	2817	2820	2825	2827	2830	2831#	2832	2838	2889
				2891	2898	2900	2907	2924	2931
CH$WCHAR			1635
CHANGE_PROTOCOL_STATE		 496#	1002	1478	2426	2654
CHECK_BA			 441	 603*	1741	2900	2902
CMD				1523#	1525
CMQIF$				 871
CMQIN$				1642	1693	2480	2783	2825
CMQRM$				 514	1688	1737	2820	2891
CNT				2974	2980#	2983#
CNTL_I				2424
CNTL_O				1538
CONTROL_OUT			 442	 648*	1540
COPY				2969#	2979	2990#	2991#	2992#	2993#	2994#	3033#	3035#	3036#	3037#	3038#
				3039#	3040#
COUNTER_ADD			1757	2919
COUNTER_INCREMENT		 774	 775	 788	 789	 794	 795	1546	1547	1745	1746	1758	2628
				2629	2638	2639	2649	2650	2666	2667	2908	2909	2920
COUNTER_ZERO			2960	2961	2962	2963
COUNT				2185
CSR				2167#	2188	2192	2205	2206	2207	2225	2239	2257	2267	2268	2269
				2270	2271	2278	2281	2282
CTLNXT				 443	 798*	1312	2012	2452
CTLSTP				 444	 835*	1236
CTLSTR				 445	 880*	1235
CURRENT_STATUS			 446	 832	 877	 913	 917*	1925
C_ADDR				1632	1635	1699	1741	2831	2900
C_BIAS				1631	1699	1741	2830	2900
C_CHN				1644	1656	2827	2898
C_CNT				1651	1752	1757	2832
C_FIELDS			 241+	 257+	 284+	 297+	 310+	 332+	 825	 844	 889	1040	1086	1132
				1214	1305	1381	1422	1620	1686	1735	1842	1878	1918	1966	2002
				2042	2082	2124	2474	2565	2774	2817	2889
C_FNC				 249+	 262+	 289+	 302+	 315+	 337+	 831	 876	 914	1046	1092	1138
				1845	1885	1923	1969	2004
C_HANDLE			 529#	 907	1844	1880	1882	1922	1968
C_LIN				 247+
C_LIX				 529
C_LNK				 251+	 264+	 291+	 304+	 317+	 339+
C_MOD				 250+	 263+	 290+	 303+	 316+	 338+	1846	1886	1924	1970	2924
C_PIX				 244+	 260+	 287+	 300+	 313+	 335+
C_PRM1				 909	 911
C_STS				 832	 877	 913	1047	1093	1139	1847	1887	1925	1971	2005
DATA_CK				 688
DATA_LOST			 751
DB				 499	 500	 501#	 502	 503	 571	 595	 600	 603	 627	 630	 642
				 648	 672	 683	 695	 696	 698	 710	 722	 723	 725	 729	 732#
				 733#	 741	 743	 745	 746	 747	 754	 756	 763	 764	 765	 772
				 773	 774	 775	 776	 777	 781	 782	 783	 788	 789	 790	 794
				 795	 796	 798	 822	 827#	 829	 832	 843	 861#	 862#	 863#	 864#
				 865#	 867	 871	 872#	 877	 888	 906	 907#	 911	 913	 917	 941
				 962	 965#	 967	 969#	 971#	 974#	 975#	 985	1002	1003#	1004#	1005#
				1006#	1007#	1008#	1009#	1010#	1012	1037	1042#	1043#	1044#	1045#	1050
				1053	1054	1058	1083	1088#	1089#	1090#	1091#	1096	1099	1100	1104
				1129	1134#	1135#	1136#	1137#	1142	1166	1168	1172#	1174	1176	1200
				1201	1202#	1203	1213	1237	1239	1250	1268	1274	1277	1302	1308#
				1310	1312	1315	1340	1349	1352	1378	1391	1393	1395	1419	1425
				1426	1427	1428	1429#	1430#	1432	1456	1463	1465	1466	1471	1476
				1478	1480	1483	1484#	1485#	1486#	1487#	1488#	1493	1517	1520	1529
				1530#	1531	1535	1536#	1540	1544	1546	1547	1548	1549	1553	1592
				1617	1625	1640#	1641#	1642	1646	1653	1659	1683	1688	1690	1692#
				1693	1704	1728	1737	1739	1741	1745	1746	1747	1748	1754	1757
				1758	1761#	1762	1763#	1765	1789	1790#	1794	1795#	1797	1798#	1800
				1801#	1803	1804#	1806	1807#	1809	1810#	1814	1839	1844	1847	1849#
				1851	1875	1880	1884#	1890	1915	1920	1922	1925	1928	1933	1938
				1963	1968	1971	1973#	1975	1999	2008#	2010	2012	2015	2039	2044
				2046#	2050	2055	2079	2084	2086#	2088#	2092	2097	2121	2126	2128#
				2132	2137	2161	2167	2169#	2174	2178#	2201	2203#	2204	2208#	2209
				2232	2237	2240#	2241	2265	2272	2285#	2291	2315	2318	2320	2324
				2327	2329	2333#	2334	2341#	2344#	2345#	2350	2351	2354#	2357	2358#
				2361	2363	2364#	2366	2368	2369#	2371	2372	2374#	2378	2380	2382
				2385	2390#	2391#	2394#	2395#	2397	2398	2402#	2406	2408	2410	2412
				2416	2420	2425#	2426	2429#	2430#	2432	2436	2437#	2438	2439#	2440
				2441#	2442	2443#	2445#	2448	2450#	2452	2457	2459	2462	2465	2467#
				2479#	2480	2481	2483#	2491	2494	2497	2499#	2504	2528	2530	2532
				2534	2537	2562	2570	2575	2577	2579	2581	2583	2585	2587	2589
				2596	2620	2622	2623	2624	2627	2628	2629	2630	2634	2637	2638
				2639	2640	2645	2648#	2649	2650	2651	2652	2653	2654	2655	2659
				2662	2665	2666	2667	2668	2669	2670	2674	2677#	2678	2679	2684
				2708	2710	2716	2719	2743	2746	2771	2776	2782#	2783	2784	2788
				2812	2820	2822	2824#	2825	2837#	2840#	2842	2844#	2858	2882	2891
				2893	2900	2902	2907	2908	2909	2910	2911	2915	2919	2920	2926#
				2930#	2931	2933	2959	2960	2961	2962	2963	2968	2969	2987	2999
				3025	3027	3032	3033
DB_BIAS				 570#	 600	2836	2839	2902
DC_BASE_IN			1008	2371	2390	2394	2430
DC_CONTINUE_CONTROL		2448	2450
DC_CONTROL_IN			1009	2397	2402	2429	2445
DC_HALT				1042	1088	1134	2324	2341	2345	2374
DC_MASTER_CLEAR			1007	1043	1089	1135	2344	2350	2354	2358	2395	2443
DC_SET_REQUESTED_STATE		1010	1045	1091	1137	2432	2437	2439	2441
DC_ZERO_CIRCUIT_COUNTERS	2361	2364
DC_ZERO_LINE_COUNTERS		2366	2369
DD_BASE_TABLE_ASSIGNED		2391	2394	2400
DD_CLEARED			 532#	1050	1096	1463	2176	2340	2353	2394	2429	2438	2778
DD_HALTED			 733	2340	2375
DD_HIGH				2174	2329	2351	2372	2398	2776
DD_LOW				2174	2329	2351	2372	2398	2776
DD_MASTER_CLEARED		1480	1486	2176	2340	2353	2375	2378	2385	2778
DD_RUNNING			2331	2374	2425	2429	2457
DD_SHUT_DOWN			1003	2176
DECLARE_SEVERITY		 342+
DEVICE_SHUT_DOWN		 447	 746	 756	 765	 777	 790	 977*
DF_1_SEC			2420
DF_CONTROLLER_LOOPBACK		2406
DF_CTL				 827	 872	1312	2012	2452
DF_DMR				 642	2987	3027
DF_DMR_LINE			2710
DF_FLUSHING_DMC			 729	 732	1004	1797	2327	2333	2645	2648
DF_HALF_DUPLEX			2412
DF_NOTIFY_OFF			 861	 962	 965	2086	2575
DF_NOTIFY_STATE			 862	 969	 974	1920	1928	2088	2579
DF_PROTOCOL_UP			1006	1488	1761	2662	2930
DF_SERVICING_DMC		2169	2178	2285	2534
DF_SYNCHRONIZING		1168	1172	1202	2622
DF_WAITING_FOR_RDYI		1794	2203	2240	2634
DF_WAITING_FOR_RECEIVE		1763	1809	2674	2677	2926
DISC				 702
DISPATCH$			1232	1341	1383
DLC_DISPATCH			 552#
DLL				 342+
DLL$A_CIRCUIT_NAME		 217+#
DLL$B_PROVIDER_LINE_INDEX	 212+#
DLL$B_PROVIDER_PROCESS_INDEX	 213+#
DLL$FW_START_CCB_PRM1		 210+#
DLL$FW_START_CCB_PRM2		 215+#
DLL$FW_START_CCB_PRM3		 219+#
DLL$K_DATA_RECEIVED		 356+#	1886
DLL$K_ENTER_MAINTENANCE		 316+	 350+#	1386
DLL$K_INITIALIZE_LINK		 290+	 348+#	1387
DLL$K_MAINTENANCE_RECEIVED	 357+#
DLL$K_PERSISTENT_ERROR		 364+#	1846
DLL$K_STATE			 362+#	1924
DLL$K_STOP_LINK			 303+	 349+#	1388
DLL$K_TRANSIENT_ERROR		 363+#	1970
DLL$K_TRANSMIT			 338+	 347+#	1389
DLL$K_TRANSMIT_AND_TIME		 351+#	1390	2924
DLL$V_DTE_CIRCUIT		 221+#
DLL$_ABORTED			 371+	1425	1426	2907
DLL$_DEVICE_OPERATION_ERROR	 400+	 776	 783	1053	1099	1548	1747	2910
DLL$_DEVICE_RESPONSE_ERROR	 396+	2653	2665
DLL$_DEVICE_SERVICE_ERROR	 398+
DLL$_MAINTENANCE_RECEIVED	 394+	 764
DLL$_NOT_SUPPORTED		 370+
DLL$_PAUSE_TIMEOUT		 403+
DLL$_PRIVLEDGE_VIOLATION	 369+
DLL$_RECEIVE_ERROR		 410+
DLL$_RECEIVE_THRESHOLD		 384+	 698
DLL$_SELECTION_THRESHOLD	 386+
DLL$_SERVICE_TIMEOUT		 408+	2678
DLL$_START_RECEIVED		 392+	 745
DLL$_STATE_MAINTENANCE		 378+	 960
DLL$_STATE_OFF			 375+	 957
DLL$_STATE_RUNNING		 377+	 959
DLL$_STATE_SYNCHRONIZING	 376+	 958
DLL$_SUCCESS			 368+	1047	1093	1139	1887	2931
DLL$_TRANSMIT_THRESHOLD		 382+	 683	 725
DLLINI				 448	1012*	1387
DLLMOP				 449	1058*	1386
DLLSTP				 450	1104*	1388
DLL_MAINTENANCE			 947#	 955	 960
DLL_OFF				 944#	 951	 957	 971
DLL_RUNNING			 946#	 954	 959
DLL_STATUS			 956#	 971	 975
DLL_SYNCHRONIZING		 945#	 952	 953	 958
DL_ON				1274	2436	2716
DMC				   1#	 551
DMC$_MTL			1653
DMC$_PWF			2744
DMC$_QUE			1690	1739	2822	2893
DMCCTL				 453	 546	1205*
DMCDBI				 558*	1270	2712
DMCDB				 454	1241*
DMCDVI				 559	1272	2714
DMCIN				 488*
DMCNMI				 561	1271	2713
DMCNM				 560	1234
DMCOUT				 489#
DMCRCE				 455	 545	1277*
DMCTIM				 456	 547	1315*
DMCXME				 457	 544	1352*
DMC_CCB_DB_STS			 428#	 470	1975#
DMC_CCB_DB			 427#	 466	 467	 468	 469	1814#	1851#	1890#	1938#
DMC_DB				 430#	 458	 472	1395#	2055#
DMC_DB_BIAS_ADDR		 431#	 441	 603#
DMC_DB_CCB			 433#	 448	 449	 450	 462	1012#	1058#	1104#	1392	1592#
DMC_DB_ERR			 434#	 442	 648#
DMC_DB_LOW_HIGH			 435#	 440	 463	 464	 482	 483	 571#	1659#	1704#	2788#	2858#
DMC_DB_STS			 437#	 471	 473	2015#	2097#
DMC_FIELDS			 630	 675	1731	1732	2201	2237	2265	2318	2885	2886
DMC_INTERRUPT			 451	 488	 489	1142*
DMC_REG				 436#	 461	1572#
DMC_SYNCHRONIZE			 452	1174	1176*
DMC_TABLE			 543#	 552	1269
DS_ASTRT			 953
DS_HALTED			 951	 967	1002	1136	1476	1478	2086	2442	2654
DS_ISTRT			 952
DS_MAINTENANCE			 741	 955	1090	1625	2416	2662	2922
DS_RUNNING			 954	1044	1754	2917
DUMMY				 496
D_ACTIVE_BUFFERS		 867	1308	1310	1640	1884	2008	2010
D_ASSIGNABLE_RECEIVE_CCBS	1428	1688	1690	2480	2783
D_ASSIGNABLE_RECEIVE_COUNT	1430	1692	2462	2479	2782
D_ASSIGNABLE_TRANSMIT_CCBS	1426	1642	1653	2820	2822
D_ASSIGNABLE_TRANSMIT_COUNT	1429	1641	2494	2824
D_ASSIGNED_RECEIVE_CCBS		1427	1693	1737	1739
D_ASSIGNED_RECEIVE_COUNT	1485	1536	2459	2467	2483
D_ASSIGNED_TRANSMIT_CCBS	1425	2825	2891	2893
D_ASSIGNED_TRANSMIT_COUNT	1484	1530	1806	2491	2499	2659
D_BLOCKS_RECEIVED		1758	2962
D_BLOCKS_TRANSMITTED		2920	2963
D_BUF				 533	2844
D_BYTES_RECEIVED		1757	2960
D_BYTES_TRANSMITTED		2919	2961
D_CIRCUIT_COST			 911
D_CIRCUIT_ENTITY		 499	 695	 722	 743	 754	 763
D_CONTROL_FLAGS			2320
D_CPTB				2969	3033
D_DEVICE_SERVICE_ERRORS		2629	2639	2650	2667
D_DEVICE_STATE			 733	1003	1050	1096	1463	1480	1486	2174	2329	2351	2372	2378
				2385	2391	2398	2425	2438	2457	2776
D_FATAL_DEVICE_ERRORS		 775	 789	 795	1547	1746	2909
D_FIELDS			 843	 888	 985	1213	1250
D_HIGHEST_TRANSMIT_BUFFER	2842
D_INPUT_COMMAND			1005	1487	2208	2232	2530
D_INPUT_DATA			2201	2237	2318
D_INVALID_REGISTER_CONTENTS	 794	1546
D_LINE_ENTITY			 710	 772	 781	1544
D_LINE_STATE			1274	2436	2716
D_LNTB				 600	2968	3032
D_LOST_HALT			2649
D_LOST_INTERRUPT		2628
D_LOST_RDYI			2638
D_LOST_TRANSMIT			2666
D_MAXIMUM_RECEIVE_COUNT		2459
D_MAXIMUM_TRANSMIT_COUNT	2491
D_NEXT_TRANSMIT_BUFFER		2837	2840	2842	2844
D_NXM_TO_DEVICE			 774
D_OUTPUT_DATA			 630	 773	 782	1520	2265
D_OWNER_HANDLE			 865	 907	1844	1880	1922	1968	2044	2084	2126	2570
D_PENDING_CONTROLS		 829	 871
D_PERSISTENT_ERROR		 864	1803	1847	1849	2046	2587
D_PROCEDURE_ERROR		 788
D_PROTOCOL_STATE		 500	 501	 502	 741	 967	 975	1476	1625	1754	2086	2440	2662
				2915
D_RECEIVE_BA_MISMATCH		1745
D_REGISTER			1201	1465	1466	1471	2167	2380	2408	2410	2623	2624
D_REPORTED_STATE		 971	 975
D_REQUESTED_STATE		1044	1090	1136	2416	2426	2440	2442
D_SERVICE_TIMER			1810
D_SYNCH_BLOCK			1174
D_TIM				 503	 683	 696	 698	 723	 725	 745	 746	 747	 756	 764	 765
				 776	 777	 783	 790	 796	 832	 877	 913	1002	1053	1054	1099
				1100	1203	1237	1239	1268	1312	1349	1391	1393	1425	1426	1478
				1483	1529	1531	1535	1540	1548	1549	1553	1741	1747	1748	1762
				1790	1795	1798	1801	1804	1807	1810	1925	1933	2012	2050	2092
				2132	2204	2209	2241	2272	2334	2357	2363	2368	2382	2426	2452
				2465	2481	2497	2532	2534	2577	2581	2585	2589	2627	2630	2637
				2640	2651	2652	2653	2654	2655	2665	2668	2669	2670	2678	2679
				2784	2900	2902	2907	2910	2911	2931
D_TRANSIENT_ERROR		 863	1800	1971	1973	2128	2583
D_TRANSMIT_BA_MISMATCH		2908
D_TRANSMIT_BUFFER_SIZE		1646	2840
D_TRANSMIT_TIMEOUT		1807
EQLU				 644	 741	1882
ERROR				 342+	 648	 675	 677	 688	 702	 715	 729	 737	 751	 760	 769
				 785
FALSE				 525#	 640	 646	 681	 732	 827	 861	 862	 965	 969	 974	1004
				1006	1007	1008	1009	1010	1202	1461	1474	1488	1763	2178	2203
				2285	2341	2345	2354	2358	2364	2369	2390	2394	2402	2429	2437
				2439	2441	2450	2648	2677
FC_AST				1845	1923	1969
FC_CCP				 543	 831	 876	 914
FC_CTL				 249+	 262+	 546
FC_RCE				 545
FC_RCP				1885
FC_TIM				 547
FC_XCP				1046	1092	1138	2004
FC_XME				 289+	 302+	 315+	 337+	 544
FD_CTL				1233
FD_TIM				1343
FLD				1520	2968	2969	3032	3033
FLUSH_QUEUE			 507#	1425	1426	1427	1428
FLUSH_QUEUES			 458	1395*	1483
FM_CCB				1347
FM_LTM				1346
FM_NM				1234
FM_PIN				1344
FM_PWF				1345
FM_RDB				1348
FM_STP				 263+	1236
FM_STR				 250+	1235
FRM_PTR				2975	2978#	2983
GET_DMC_DATA_BASE		 595	 627	 672	 822	 906	 941	1037	1083	1129	1166	1200	1302
				1340	1378	1419	1456	1517	1617	1683	1728	1789	1839	1875	1915
				1963	1999	2039	2079	2121	2161	2315	2528	2562	2620	2708	2743
				2771	2812	2882	2959	3025
HALT				2337
HD				2414
HIGH				 571	 601#	 633	 638	 644	1659	1701#	1704	1731	1752	2788	2855#
				2858	2885	2919
IEI				1201	2281	2282
IEO				2380
INFO				 342+
LANGUAGE			   3
LCL				 498#	1478	2426
LIN				 237+	 246+	 247+
LINKAGE_DB			 443	 446	 447	 459	 460	 465	 475	 476	 484	 485	 693	 720
				 798#	 917#	 995#	1432#	1493#	1765#	2291#	2504#	2933#	2999#
LIST_LAST			1653
LOW				 571	 600	 634	 638	 640	1659	1699	1704	1732	2788	2853	2858
				2886
LU_LOOP				2408	2410
MAINT				2418
MAP$				1631	1637	2839
MASTER_CLEAR			 459	 796	1432*	1549	1748	2357	2651	2668	2911
MC				1466
MCB$GAW_PROCESS_DATA_BASE	 565	 570	1267#	1268#
MCB$GA_PROCESS_DISPATCH		 564	1269#
MCB$GW_PROCESS_HANDLE		 566
MCB$GW_RDB_SIZE			 567	 755	1701
MCB_DB				 452	 474	 478	 479	 480	1176#	1350	2137#	2596#	2684#	2719#
MCB_DB_CCB_MOD			 453	 457	1225#	1352#
MCB_DB_CCB			 444	 445	 455	 477	 481	 560	 854#	 899#	1238	1277#	2537#	2746#
MCB_DB_MOD			 456	1315#
MCB_INTERRUPT			 451	 488	 489	1142#
MNT_RCVD			 760
MODIFIER			1215	1232	1315	1342	1352	1384
MSG_CNT				1623	1646#	1651#
NAME				 551#
NONE				 161
NO_OPERATION			 526#	2182	2218	2252
NXM				 769
OUTPUT_TRANSFER			 460	1493*	2272
O_RUN				 677
PARAMETER_CIRCUIT_COUNTERS	 693*	 696	 720*	 723
PARAMETER_C_1			 500	 502	 711
PARAMETER_DEVICE_REGISTERS	 461	 773	 782	1545	1555*
PARAMETER_DU_2			 755
PARAMETER_H_2			1584	1586	1588	1590
PROC_ERR			 729	 785
PROVIDER_PIX			 237+	 243+	 244+	 253+	 259+	 260+	 280+	 286+	 287+	 293+	 299+	 300+
				 306+	 312+	 313+	 328+	 334+	 335+
QUEUE_TRANSMIT			 462	1389	1390	1592*
QUEUE				 507	 514
RCV				1533	1538	2466	2482
RDB				2474	2476	2480
RDBCN$				1424
RDBGT$				2476
RDBRQ$				2487
RDBRT$				1307	1427	1428	1744	1882	2779
RDYI				2188	2623
RDYO				2257	2271	2624
REASON				 496	 499
RECEIVE_IN			 463	1659*	2465	2481
RECEIVE_OUT			 464	1535	1704*
RECOVERY			2568	2572	2577	2581	2585	2589
REG				1520#	1525	1529	1535	1540	1545	1563	1584	1585#	1586	1587#	1588
				1589#	1590
REPORT_STATUS			 950#	 975
RESET_TIMER			 465	1531	1765*	2204	2241	2334	2627	2637	2652	2669	2679
RESUME				2383	2387
RETURN_CALL			 507	 516
RMT				 498#	1002	2654
RQI				2192	2207	2225	2278	2337	2389	2424	2466	2482	2498
RUN				1471
SAVE_MAP			1629	1630	1637
SCHEDULE_PERSISTENT_AST		 466	1814*	2050	2589
SCHEDULE_RECEIVE		 467	1762	1851*
SCHEDULE_STATE_AST		 468	1890*	1933	2092	2577	2581
SCHEDULE_TRANSIENT_AST		 469	1938*	2132	2585
SCHEDULE_TRANSMIT		 470	1425	1426	1975*	2907	2931
SEC				2422
SEL0				1201	1466	1471	1545	2188	2192	2207	2225	2267	2278	2281	2282
				2408	2410	2623
SEL2				1523	2257	2268	2271	2380	2624
SEL4				 640	1529	1535	2206	2269	2336	2382	2403	2465	2481	2497
SEL6				 644	1529	1535	1540	2205	2270	2335	2382	2383	2387	2404	2414
				2418	2422	2465	2481	2497
SEND_PERSISTENT_ERROR		 471	 745	 764	 776	 783	1053	1099	1548	1747	2015*	2653	2665
				2910
SEND_STATE			 472	 503	1054	1100	2055*
SEND_TRANSIENT_ERROR		 473	 683	 698	 725	2097*	2678
SERVICE_DMC			 474	1203	2137*	2534	2630
SERVICE_FOUND			2164	2172	2210	2242	2273
SET_INPUT_REQUEST		 475	2209	2291*	2532
SET_PORT			 476	 747	1239	1393	1553	2504*	2640	2655	2670	2784
SEVERE				 342+
SMAP$				1630
STATE				 496	 501	 707	 709#	 711
STATUS				1459	1461#	1463	1471#	1474#	1491	1975	2005	2015	2046	2097	2128
STR_RCVD			 737
SUCCESS				 342+
SYNCH$				1174
TABLE$				 543	 950	 956	1233	1343	1385
TEMP				 598	 600	 601#	1697	1699	1700#	1701#	2851	2853	2854#	2855#
TIMCCB				 477	1347	2537*
TIME_OUT			 715
TIMLTM				 478	1346	2596*
TIMPIN				 479	1344	2684*
TIMPWF				 480	1345	2719*
TIMRDB				 481	1348	2746*
TO_PTR				2976	2979#	2983
TRANSMIT_IN			 482	2497	2788*
TRANSMIT_OUT			 483	1529	2858*
TRUE				 524#	 636	 642	 644	 872	1042	1043	1045	1088	1089	1091	1134
				1135	1137	1172	1471	1761	1792	2086	2088	2169	2240	2288	2322
				2333	2344	2374	2395	2430	2434	2443	2445	2926	2930
TYPEO				1523
VALUECBIT			 426
WARNING				 342+
XMT				1527	1538	2498
ZERO_CIRCUIT_COUNTERS		 484	2363	2933*
ZERO_LINE_COUNTERS		 485	2368	2999*
$DLL$CCB			 241+#	 244+#	 247+#	 249+#	 250+#	 251+	 257+#	 260+#	 262+#	 263+#	 264+	 284+#
				 287+#	 289+#	 290+#	 291+	 297+#	 300+#	 302+#	 303+#	 304+	 310+#	 313+#	 315+#
				 316+#	 317+	 332+#	 335+#	 337+#	 338+#	 339+
$DLL_ENTER_MAINTENANCE		 306+#
$DLL_ERROR			 369+	 370+	 394+
$DLL_INFO			 375+	 376+	 377+	 378+
$DLL_INITIALIZE			 280+#
$DLL_RELEASE_CIRCUIT		 253+#
$DLL_REQUEST_CIRCUIT		 237+#
$DLL_SEVERE			 396+	 398+	 400+
$DLL_STOP			 293+#
$DLL_SUCCESS			 368+
$DLL_TRANSMIT			 328+#
$DLL_WARNING			 371+	 382+	 384+	 386+	 392+	 403+	 408+	 410+
$DMC_BITS_CLEAR			1471	2188	2192	2225	2257	2278	2623	2624
$DMC_CLEAR_BITS			1201	2207	2271	2410
$DMC_READ			2267	2268	2269	2270
$DMC_SET_BITS			2281	2282	2380	2408
$DMC_WRITE			1465	1466	2205	2206	2239
$DSPCR				 540*	 543	1233	1343	1385
$MCB_CONVERT_TO_UBA_ADDRESS	 600	 638	1699	2853
$MCB_COPY_CHAIN_TO_BUFFER	2838
$MCB_DEQUEUE_CCB		 829
$MCB_ENABLE_LONG_TIMER		1274	2716
$MCB_GET_CCB			1931	2048	2090	2130	2593
$MCB_PROCESS			 550
$MCB_REQUEST_CCB		1935	2052	2094	2134
$MCB_RETURN_CCB			1920	2570	2591
$MCB_SCHEDULE_CCB		 251+	 264+	 291+	 304+	 317+	 339+	 833	 878	 915	1048	1094	1140
				1848	1888	1926	1972	2006
$NM_DLL_EVENT			 499	 695	 722	 743	 754	 763
$NM_PLL_EVENT			 710	 772	 781	1544
$SHOW				 161
$SUB_FIELD			 640	 644	1520	1523	1653	2383	2387	2414	2418	2422	2968	2969
				3032	3033
%REMAINING			 516