Google
 

Trailing-Edge - PDP-10 Archives - TOPS-20_V6.1_DECnetSrc_7-23-85 - mcb/nmx/nmx.lst
There is 1 other file named nmx.lst in the archive. Click here to see a list.
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page   1
								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (1)

;	  0001	module NMX (					! Network Management External Interface
;	  0002	            ident = 'X01270'
;	  0003	            ) =
;	  0004	begin
;	  0005	!
;	  0006	!                    COPYRIGHT (c) 1980, 1981, 1982
;	  0007	!                    DIGITAL EQUIPMENT CORPORATION
;	  0008	!                        Maynard, Massachusetts
;	  0009	!
;	  0010	!     This software is furnished under a license and may  be  used
;	  0011	!     and copied only in accordance with the terms of such license
;	  0012	!     and with the inclusion of the above copyright notice.   This
;	  0013	!     software  or any other copies thereof may not be provided or
;	  0014	!     otherwise made available to any other person.  No  title  to
;	  0015	!     and ownership of the software is hereby transferred.
;	  0016	!
;	  0017	!     The information  in  this  software  is  subject  to  change
;	  0018	!     without  notice  and should not be construed as a commitment
;	  0019	!     by DIGITAL EQUIPMENT CORPORATION.
;	  0020	!
;	  0021	!     DIGITAL assumes no responsibility for the use or reliability
;	  0022	!     of  its  software  on  equipment  which  is  not supplied by
;	  0023	!     DIGITAL.
;	  0024	!
;	  0025	
;	  0026	!++
;	  0027	!
;	  0028	! FACILITY: MCB Network Management
;	  0029	!
;	  0030	! ABSTRACT:
;	  0031	!
;	  0032	!     NMX supplies an interface between the Network Management Layer
;	  0033	!     process running as an RSX task and the MCB processes supplying
;	  0034	!     NM interfaces.
;	  0035	!
;	  0036	! ENVIRONMENT: MCB V3.x
;	  0037	!
;	  0038	! AUTHOR: Scott G. Robinson	CREATION DATE: 9-SEP-80
;	  0039	!
;	  0040	! MODIFIED BY:
;	  0041	!
;	  0042	! 01 - Modifications to NMXCKT, NMXLIN, NMXMOD for Error Handling
;	  0043	! 02 - Fix RETURN Functions to use MTBF$S correctly
;	  0044	! 03 - Add ERROR_CODE support in Control-Complete Processing
;	  0045	! 04 - Update NMX for MCB V3.1 fixes
;	  0046	! 05 - Update NMXxxx for MCB V3.2 and setup for NMXINI Initialization
;	  0047	! 06 - Continue edit 05 for MCB V3.2
;	  0048	! 07 - Update NMXxxx for new N$Sxxx, N$Fxxx, N$Ixxx nomenclature
;	  0049	!      Fix RETURN_DSR functions to new formats
;	  0050	! 10 - Add routine to NMXINI to allow interrogation of Entity Data
;	  0051	!      bases. Add different buffer checking routines.
;	  0052	! 11 - Fix CLEAR ALL processing in NMXNOD, NMXCKT, NMXLIN, NMXMOD
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page   2
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (1)

;	  0053	! 12 - Add routine $NMGID to NMXINI for data base interrogation
;	  0054	! 13 - Fix returned buffer length bug in NMXxxx show functions
;	  0055	! 14 - Fix various calls and things in NMXINI and NMXUTL
;	  0056	! 15 - Fix missing conditional in NMXLIN
;	  0057	! 16 - Add Event Logging Support
;	  0058	! 17 - Add Direct Line Access Support
;	  0059	! 18 - Add Receive Timeout Code for Direct Line Access
;	  0060	!       Alan D. Peckham, 11-Jan-82
;	  0061	! 19 - Add support for returning completion time into time block
;	  0062	!      supplied in parameter #6
;	  0063	!       Alan D. Peckham, 14-Apr-82
;	  0064	! 20 - Complete rework of NM support.
;	  0065	!      Code compressed and NME process eliminated.
;	  0066	! 21 - Fix buffer length bug in NMXEVE.
;	  0067	! 22 - Fix unrecognized component bug in NMXCCE.
;	  0068	! 23 - Disallow SERVICE state in NMXCCE.
;	  0069	! 24 - Fix DSR return bug in NMXDLE.
;	  0070	!      Check string lengths in NMXINE.
;	  0071	!      Range check entity type in NMX$MAP_ENTITY_ID_TO_DB.
;	  0072	! 25 - Change protocol for events in NMXEVE.
;	  0073	!      Maintain EVENTS_PROCESSED in NMXEVE.
;	  0074	!      Add NMLMCB access control support in NMXEVE.
;	  0075	! 26 - Add code in TIMPIN to get the EXECUTOR ADDRESS/NAME from high core.
;	  0076	! 27 - Fix for system specific parameter in NMXCCE.
;	  0077	!--
;	  0078	
;	  0079	!
;	  0080	! INCLUDE FILES:
;	  0081	!
;	  0082	
;	  0083	library 'XPORTX';
;	  0084	
;	  0085	library 'MCBLIB';
;	  0086	
;	  0087	library 'NMXPAR';
;	  0088	
;	  0089	library 'NMXLIB';
;	  0090	
;	  0091	require 'DLXPAR';
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page   3
X01270								 3-Jan-1983 18:41:32	NETPKG:<NMX>DLXPAR.REQ.7 (1)

;	 R0092	!                    COPYRIGHT (c) 1980, 1981, 1982
;	 R0093	!                    DIGITAL EQUIPMENT CORPORATION
;	 R0094	!                        Maynard, Massachusetts
;	 R0095	!
;	 R0096	!     This software is furnished under a license and may  be  used
;	 R0097	!     and copied only in accordance with the terms of such license
;	 R0098	!     and with the inclusion of the above copyright notice.   This
;	 R0099	!     software  or any other copies thereof may not be provided or
;	 R0100	!     otherwise made available to any other person.  No  title  to
;	 R0101	!     and ownership of the software is hereby transferred.
;	 R0102	!
;	 R0103	!     The information  in  this  software  is  subject  to  change
;	 R0104	!     without  notice  and should not be construed as a commitment
;	 R0105	!     by DIGITAL EQUIPMENT CORPORATION.
;	 R0106	!
;	 R0107	!     DIGITAL assumes no responsibility for the use or reliability
;	 R0108	!     of  its  software  on  equipment  which  is  not supplied by
;	 R0109	!     DIGITAL.
;	 R0110	
;	 R0111	!+
;	 R0112	! DLX processing Parameters
;	 R0113	!-
;	 R0114	%if not %declared (XPO$K_VERSION) %then library 'MCB:XPORTX' %fi;
;	 R0115	%if not %declared (MCB$K_VERSION) %then library 'MCB:MCBLIB' %fi;
;	 R0116	
;	 R0117	!+
;	 R0118	! Fields for DLX CCBs and I/O Packets
;	 R0119	!-
;	 R0120	$field
;	 R0121	    DLX_OVERLAY_CCB_FIELDS =
;	 R0122		set
;	 R0123	           $overlay (C_LIX)
;	 R0124	        C_DLX_EID = [$integer],         ! Full EID specification
;	 R0125	           $overlay (C_PRM1)
;	 R0126	        C_DLX_STATE = [$address],       ! Current processing State for function
;	 R0127	        C_DLX_IOP = [$address],         ! Address of IOP for this CCB
;	 R0128	        C_DLX_LUNBLK = [$address]       ! Address of LUN Block for this CCB
;	 R0129	           $continue
;	 R0130	        tes;
;	 R0131	
;	 R0132	macro
;	MR0133	     DLX_CCB_BLOCK =
;	 R0134	         block field(C_NM_FIELDS, DLX_OVERLAY_CCB_FIELDS) %;
;	 R0135	
;	 R0136	$literal                                ! Contents of DLX_CCB_STATE
;	 R0137	    DLX_TRANSMIT         = $distinct,   ! Have Transmitted Data
;	 R0138	    DLX_STOP_OWNER       = $distinct,   ! Have Sent Stop to Entity Owner
;	 R0139	    DLX_REQUEST_ENTITY   = $distinct,   ! Have Requested Entity
;	 R0140	    DLX_ENTER_MAINT      = $distinct,   ! Have Set Maintenance Mode
;	 R0141	    DLX_STOP_PROTOCOL    = $distinct,   ! Have Stopped Protocol on Entity
;	 R0142	    DLX_RELEASE_ENTITY   = $distinct,   ! Have Released Entity
;	 R0143	    DLX_START_OWNER      = $distinct;   ! Have Started Owner
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page   4
X01270								 3-Jan-1983 18:41:32	NETPKG:<NMX>DLXPAR.REQ.7 (1)

;	 R0144	
;	 R0145	literal
;	 R0146	    DLX_STATE_LOW = DLX_TRANSMIT,       ! Lowest State
;	 R0147	    DLX_STATE_HIGH = DLX_START_OWNER;   ! Highest State
;	 R0148	
;	 R0149	
;	 R0150	$field
;	 R0151	      DLX_LUN_FIELDS =
;	 R0152	         set
;	 R0153	         LUN_LINK = [$address],         ! Link to Next LUN Block
;	 R0154	         LUN_ENTITY_ADDRESS = [$address],! Points to Entity Block for this LUN
;	 R0155	         LUN_ENTITY_BIAS = [$address],  ! Bias for Entity Block
;	 R0156	         LUN_STATE = [$byte],           ! State: Opening, Opened, Closing
;	 R0157	         LUN_ID = [$byte],              ! Unique ID returned in CCB LIX field
;	 R0158	         LUN_RCVS = [$sub_block(2)],    ! Queue of IOPs for RCVs
;	 R0159	         LUN_RCPS = [$sub_block(2)],    ! Queue of CCB RCP buffers
;	 R0160	         LUN_XMTS = [$integer],         ! Number of Outstanding Transmits
;	 R0161	         LUN_ERROR_CODE = [$integer],   ! Error Code from OPEN/CLOSE
;	 R0162	         LUN_RCV_ERROR = [$integer]     ! Pending Receive Error
;	 R0163	         tes;
;	 R0164	
;	 R0165	literal
;	 R0166	    DLX_LUN_SIZE = $field_set_size,
;	 R0167	    DLX_LUN_ALLOCATION = $field_set_units;
;	 R0168	
;	 R0169	macro
;	MR0170	    DLX_LUN_BLOCK =
;	 R0171	        block [DLX_LUN_SIZE] field(DLX_LUN_FIELDS) %;
;	 R0172	
;	 R0173	$literal
;	 R0174	    LUN_OPENING = $distinct,
;	 R0175	    LUN_CLOSING = $distinct,
;	 R0176	    LUN_OPENED = $distinct;
;	 R0177	!+
;	 R0178	!        *****End of DLXPAR*****
;	 R0179	!-
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page   5
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (1)

;	  0180	
;	  0181	!
;	  0182	! TABLE OF CONTENTS:
;	  0183	!
;	  0184	
;	  0185	linkage
;	  0186	    NMX_LKG_NAM = jsr (register = 0);
;	  0187	
;	  0188	forward routine
;	  0189	    QIODSP : RSX_UCB_SCB_IOP novalue,   ! QIO Function Dispatch
;	  0190	    QIONOP : RSX_UCB novalue,           ! Driver Function No operation
;	  0191	    DLXNM : MCB_DB_CCB novalue,         ! FM_NM processor
;	  0192	    DSPTIM : MCB_DB_MOD novalue,        ! FC_TIM processor
;	  0193	    DSPCCP : MCB_DB_CCB_MOD novalue,    ! FC_CCP dispatcher
;	  0194	    BADCCB : MCB_DB_CCB_MOD novalue,    ! Invalid CCB Parameters
;	  0195	    TIMLTM : MCB_DB novalue,            ! FM_LTM Long timer processor
;	  0196	    TIMPIN : MCB_DB novalue,            ! FM_PIN Process initialization
;	  0197	    GET_PIX : NMX_LKG_NAM,              ! Get process index
;	  0198	    NMX$GET_NMX_CCB : NMX$LKG_DB_IOP,   ! Convert IOP to CCB for NMX
;	  0199	    NMX$MAP_ENTITY_ID_TO_DB : NMX$LKG_TYP_ENT,
;	  0200	    NMX$MAP_NMXID_TO_DB : NMX$LKG_NMXID,
;	  0201	    NMX$RETURN_NMX_CCB : NMX$LKG_CCB novalue;   ! Return NMX CCB/NMPAR
;	  0202	
;	  0203	!
;	  0204	! RSX Related Items for NMX
;	  0205	!
;	  0206	
;	  0207	global bind
;	  0208	    $NMTBL =                        ! RSX Driver Dispatch Table
;	  0209		uplit (QIODSP,              !     I/O Initiator Dispatcher
;	  0210	              QIONOP,               !     I/O Cancellation
;	  0211	              QIONOP,               !     I/O Timeout
;	  0212	              QIONOP);              !     Power Failure Notification
;	  0213	
;	  0214	!
;	  0215	
;	  0216	external
;	  0217	    $HEADR : ref block field (HDR_FIELDS),	! Current Task Header
;	  0218	    $TTNS : vector;				! RSX Uptime Vector
;	  0219	
;	  0220	!
;	  0221	! NMX related items
;	  0222	!
;	  0223	
;	  0224	external routine
;	  0225	    BADREQ : MCB_DB_CCB novalue,        ! IE_BAD parameter processor
;	  0226	    CKTCCP : MCB_DB_CCB novalue,        ! Process FC.CCP for CIRCUIT Entities
;	  0227	    CKTREQ : MCB_DB_CCB novalue,        ! Process IOP for CIRCUIT Entities
;	  0228	    DLXAST : MCB_DB_CCB_MOD novalue,    ! Process FC.AST for all items
;	  0229	    DLXCCP : MCB_DB_CCB novalue,        ! Process FC.CCP for DLX functions
;	  0230	    DLXCON : NMX$LKG_UCB_IOP novalue,   ! Process IOP Connect
;	  0231	    DLXCTL : MCB_DB_CCB_MOD novalue,    ! Process FC.CTL for DLX functions
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page   6
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (1)

;	  0232	    DLXDSC : NMX$LKG_UCB_IOP novalue,   ! Process IOP Disconnect
;	  0233	    DLXRCP : MCB_DB_CCB_MOD novalue,    ! Process FC.RCP for all items
;	  0234	    DLXRCV : NMX$LKG_UCB_IOP novalue,   ! Process IOP Receive
;	  0235	    DLXXCP : MCB_DB_CCB_MOD novalue,    ! Process FC.XCP for all items
;	  0236	    DLXXMT : NMX$LKG_UCB_IOP novalue,   ! Process IOP Transmit
;	  0237	    EVPRLB : NMX$LKG_UCB_IOP novalue,   ! Process Read Event Queue
;	  0238	    EVPWAT : MCB_DB_CCB novalue,        ! Process Event Filter Setup
;	  0239	    LINCCP : MCB_DB_CCB novalue,        ! Process FC.CCP for LINE Entities
;	  0240	    LINREQ : MCB_DB_CCB novalue,        ! Process IOP for LINE Entities
;	  0241	    MODCCP : MCB_DB_CCB novalue,        ! Process FC.CCP for MODULE Entities
;	  0242	    MODREQ : MCB_DB_CCB novalue,        ! Process IOP for MODULE Entities
;	  0243	    NODCCP : MCB_DB_CCB novalue,        ! Process FC.CCP for NODE Entities
;	  0244	    NODREQ : MCB_DB_CCB novalue;        ! Process IOP for NODE Entities
;	  0245	
;	  0246	!
;	  0247	! MCB Process Header and related items for NMX
;	  0248	!
;	  0249	
;	  0250	external routine
;	  0251	    $DSPCR : novalue;				! Invalid function crash routine in CEX
;	  0252	
;	  0253	!
;	P 0254	$MCB_PROCESS (					! Define the NMX MCB Process
;	P 0255	    NAME = NMX,
;	P 0256	    LLC_DISPATCH = TABLE$ ($DSPCR, FC_CCP, (FC_AST, DLXAST), 	! Asynchronous Events
;	P 0257		(FC_TIM, DSPTIM), 			! Time Interval Complete/Process init
;	P 0258		(FC_CTL, DLXCTL), 			! Control Enable
;	P 0259		(FC_XCP, DLXXCP), 			! Transmit Complete
;	P 0260		(FC_RCP, DLXRCP), 			! Receive Complete
;	P 0261		(FC_CCP, DSPCCP)), 			! Control Complete
;	  0262	    RSX_DISPATCH = $NMTBL);
;	  0263	!
;	  0264	
;	  0265	external
;	  0266	    MCB$GAW_PROCESS_DATA_BASE : vector [2];
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page   7
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (2)

;	  0267	routine QIODSP (UCB, SCB, IOP) : RSX_UCB_SCB_IOP novalue = 	!QIO Function Processor
;	  0268	
;	  0269	!++
;	  0270	! FUNCTIONAL DESCRIPTION:
;	  0271	!
;	  0272	!      QIODSP processes the receipt of an I/O Packet from RSX. It handles the
;	  0273	!      validation and processing of IO$xxx functions from the NM: device.
;	  0274	!
;	  0275	! FORMAL PARAMETERS:
;	  0276	!
;	  0277	!	UCB - the Unit Control Block for NM:
;	  0278	!       SCB - the Status Control Block for NM:
;	  0279	!       IOP - the I/O Packet
;	  0280	!
;	  0281	! IMPLICIT INPUTS:
;	  0282	!
;	  0283	!	UCB, SCB, IOP contents
;	  0284	!       NMX Process Data Base Items
;	  0285	!
;	  0286	! IMPLICIT OUTPUTS:
;	  0287	!
;	  0288	!	IOP - could be immediately completed via $IOFIN
;	  0289	!
;	  0290	! COMPLETION CODES:
;	  0291	!	None
;	  0292	!
;	  0293	! SIDE EFFECTS:
;	  0294	!
;	  0295	!       IOP completion could be delayed until MCB processing is complete.
;	  0296	!
;	  0297	!--
;	  0298	
;	  0299	    begin
;	  0300	
;	  0301	    map
;	  0302		IOP : ref NMX_IOP_BLOCK,
;	  0303		UCB : ref block field (UCB_FIELDS),
;	  0304		SCB : ref block field (SCB_FIELDS);
;	  0305	
;	  0306	!
;	  0307	! Reformat IOP into internal format, this is essentially a specially
;	  0308	! setup RSX Transfer Function IOP.
;	  0309	!
;	  0310	
;	  0311	    begin
;	  0312	
;	  0313	    macro
;	M 0314	        IOP_MOVE (FLD_S, FLD_D) =
;	M 0315	            %if %fieldexpand (FLD_S, 0) gtr %fieldexpand (FLD_D, 0)
;	M 0316	            %then %warn ('Overlap exists: reorder the fields to move')
;	M 0317	            %else
;	M 0318	                %if %fieldexpand (FLD_S, 0) lss %fieldexpand (FLD_D, 0)
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page   8
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (2)

;	M 0319	                %then IOP [FLD_D] = .IOP [FLD_S]
;	M 0320	                %fi
;	  0321	            %fi %;
;	  0322	
;	  0323	    IOP_MOVE (I_PRM6, I_NMX_TIME);
;	  0324	    IOP_MOVE (I_PRM5, I_NMX_QUALIFIER);
;	  0325	    IOP_MOVE (I_PRM4, I_NMX_ENTITY);
;	  0326	    IOP_MOVE (I_PRM3, I_NMX_TYPE);
;	  0327	    IOP_MOVE (I_PRM2, I_NMX_CNT);
;	  0328	
;	  0329	    if .IOP [I_PRM2] eql 0
;	  0330	    then
;	  0331		begin					! Count = 0 so ignore user buffer
;	  0332		IOP [I_NMX_ADDR] = %o'160001';
;	  0333		IOP [I_NMX_BIAS] = 0;
;	  0334		end
;	  0335	    else
;	  0336		begin					! Count <> 0 so map user buffer
;	  0337	
;	  0338		if not ACHKB$ (.IOP [I_PRM1], .IOP [I_PRM2])	! Check Buffer address first
;	  0339		then
;	  0340		    begin
;	  0341		    $RSX_FINISH_IOP (.UCB, .IOP, $NM$ERR_MPE, 0);
;	  0342		    return;
;	  0343		    end;
;	  0344	
;	  0345		RELOC$ (.IOP [I_PRM1], IOP [I_NMX_BIAS], IOP [I_NMX_ADDR]);
;	  0346		end;
;	  0347	
;	  0348	    end;
;	  0349	
;	  0350	!
;	  0351	! Split Processing based upon Function Code and Entity
;	  0352	!
;	  0353	
;	  0354	    selectone .IOP [I_FCN]^-8 of
;	  0355		set
;	  0356		[IOP_CTL] :
;	  0357		    begin
;	  0358	
;	  0359		    local
;	  0360	                CCB : ref NMX_CCB_BLOCK,
;	  0361			NMXDB : ref NMXDB_BLOCK;
;	  0362	
;	  0363		    bind routine
;	  0364			DISPATCH = (case .IOP [I_NM_ENTITY] from NMX$ENT_lo to NMX$ENT_hi of
;	  0365				set
;	  0366				[NMX$ENT_mod] : MODREQ;
;	  0367				[NMX$ENT_nod] : NODREQ;
;	  0368				[NMX$ENT_ckt] : CKTREQ;
;	  0369				[NMX$ENT_lin] : LINREQ;
;	  0370				[inrange, outrange] : BADREQ;
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page   9
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (2)

;	  0371				tes) : MCB_DB_CCB novalue;
;	  0372	
;	  0373		    $MCB_RSX_TO_MCB (.UCB, NMXDB);
;	  0374	
;	  0375	            if $NMX_GET_NMX_CCB (.IOP, CCB)
;	  0376	            then
;	  0377		        DISPATCH (NMXDB [NMX_BASE], .CCB);
;	  0378	
;	  0379	            $MCB_MCB_TO_RSX (NMXDB [NMX_BASE]);
;	  0380		    end;
;	  0381		[IOP_WAT] :
;	  0382	            begin
;	  0383	
;	  0384		    local
;	  0385	                CCB : ref block field (C_FIELDS),
;	  0386			NMXDB : ref NMXDB_BLOCK;
;	  0387	
;	  0388		    bind routine
;	  0389			DISPATCH = EVPWAT : MCB_DB_CCB novalue;
;	  0390	
;	  0391		    $MCB_RSX_TO_MCB (.UCB, NMXDB);
;	  0392	
;	  0393	            if $NMX_GET_NMX_CCB (.IOP, CCB)
;	  0394	            then
;	  0395	                DISPATCH (NMXDB [NMX_BASE], .CCB);
;	  0396	
;	  0397	            $MCB_MCB_TO_RSX (NMXDB [NMX_BASE]);
;	  0398		    end;
;	  0399		[IOP_RLB] :
;	  0400		    EVPRLB (.UCB, .IOP);
;	  0401		[IOP_CON] :
;	  0402		    DLXCON (.UCB, .IOP);
;	  0403	        [IOP_DSC] :
;	  0404		    DLXDSC (.UCB, .IOP);
;	  0405	        [IOP_RCV] :
;	  0406		    DLXRCV (.UCB, .IOP);
;	  0407	        [IOP_XMT] :
;	  0408		    DLXXMT (.UCB, .IOP);
;	  0409		[otherwise] :
;	  0410		    $RSX_FINISH_IOP (.UCB, .IOP, $NM$ERR_UFO, 0);
;	  0411		tes;
;	  0412	
;	  0413	    end;					!End of QIODSP


						.TITLE	NMX
						.IDENT	/X01270/


000000						.PSECT	......,  D  
000000	054640 				HEADER: .RAD50	/NMX/
000002	000403 					.WORD	403
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  10
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (2)

000004	000000 					.WORD	0
000006	000000 					.WORD	0
000010	000000 					.WORD	0
000012	000010'					.WORD	P.AAB
000014	000000G					.WORD	.DSPCR
000016	000000G					.WORD	.DSPCR
000020	000000G					.WORD	MCB$V0
000022	000000G					.WORD	MCB$V1
000024	140310 					.WORD	140310
000026	143716 					.WORD	143716
000030	001400 					.WORD	1400
000032	000000'					.WORD	$NMTBL
000034	000000 					.WORD	0
000036	000000 					.WORD	0



000000						.PSECT	$PLIT$,  RO ,  D  
000000	000000'				P.AAA:	.WORD	QIODSP
000002	000000V					.WORD	QIONOP
000004	000000V					.WORD	QIONOP
000006	000000V					.WORD	QIONOP
000010	000000G				P.AAB:	.WORD	DLXAST
000012	000000G					.WORD	$DSPCR
000014	000000G					.WORD	$DSPCR
000016	000000G					.WORD	$DSPCR
000020	000000G					.WORD	DLXCTL
000022	000000V					.WORD	DSPTIM
000024	000000G					.WORD	DLXXCP
000026	000000G					.WORD	DLXRCP
000030	000000G					.WORD	$DSPCR
000032	000000V					.WORD	DSPCCP


						.GLOBL	$HEADR, $TTNS, BADREQ, CKTCCP
						.GLOBL	CKTREQ, DLXAST, DLXCCP, DLXCON
						.GLOBL	DLXCTL, DLXDSC, DLXRCP, DLXRCV
						.GLOBL	DLXXCP, DLXXMT, EVPRLB, EVPWAT
						.GLOBL	LINCCP, LINREQ, MODCCP, MODREQ
						.GLOBL	NODCCP, NODREQ, $DSPCR, .DSPCR
						.GLOBL	MCB$V0, MCB$V1, .CRDAT, $ACHKB
						.GLOBL	$IOFIN, $RELOC, $MCB, NX.ITC, $RSX


	000000'				$NMTBL==	    P.AAA


						.SBTTL	QIODSP
000000						.PSECT	$CODE$,  RO 

000000	010146 				QIODSP: MOV	R1,-(SP)			;					0267
000002	010546 					MOV	R5,-(SP)
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  11
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (2)

000004	010100 					MOV	R1,R0				;					0323
000006	016160  000036  000040 			MOV	36(R1),40(R0)
000014	016160  000034  000036 			MOV	34(R1),36(R0)			;					0324
000022	012700  000032 				MOV	#32,R0				;					0325
000026	060100 					ADD	R1,R0
000030	010046 					MOV	R0,-(SP)
000032	010100 					MOV	R1,R0
000034	017660  000000  000034 			MOV	@0(SP),34(R0)
000042	016076  000030  000000 			MOV	30(R0),@0(SP)			;					0326
000050	012700  000026 				MOV	#26,R0				;					0327
000054	066600  000004 				ADD	4(SP),R0
000060	010046 					MOV	R0,-(SP)
000062	016600  000006 				MOV	6(SP),R0
000066	017660  000000  000030 			MOV	@0(SP),30(R0)
000074	012700  000024 				MOV	#24,R0				;					0333
000100	066600  000006 				ADD	6(SP),R0
000104	010046 					MOV	R0,-(SP)
000106	005776  000002 				TST	@2(SP)				;					0329
000112	001006 					BNE	1$
000114	012776  160001  000002 			MOV	#-17777,@2(SP)			;					0332
000122	005076  000000 				CLR	@0(SP)				;					0333
000126	000425 					BR	3$				;					0329
000130	017600  000000 			1$:	MOV	@0(SP),R0			;					0338
000134	017601  000002 				MOV	@2(SP),R1
000140	004767  000000G				JSR	PC,$ACHKB
000144	103006 					BHIS	2$
000146	016605  000006 				MOV	6(SP),R5			;					0341
000152	012700  177773 				MOV	#-5,R0
000156	000167  000406 				JMP	18$
000162	017600  000000 			2$:	MOV	@0(SP),R0			;					0345
000166	004767  000000G				JSR	PC,$RELOC
000172	010176  000000 				MOV	R1,@0(SP)			; $RSX$R1,*
000176	010276  000002 				MOV	R2,@2(SP)			; $RSX$R2,*
000202	016600  000010 			3$:	MOV	10(SP),R0			;					0354
000206	016001  000012 				MOV	12(R0),R1
000212	072127  177770 				ASH	#-10,R1
000216	010102 					MOV	R1,R2
000220	020227  000035 				CMP	R2,#35
000224	001050 					BNE	10$
000226	017600  000004 				MOV	@4(SP),R0			;					0364
000232	072027  177770 				ASH	#-10,R0
000236	042700  177760 				BIC	#177760,R0
000242	005300 					DEC	R0
000244	020027  000004 				CMP	R0,#4
000250	101003 					BHI	4$
000252	006300 					ASL	R0
000254	066007  000034'				ADD	P.AAC(R0),PC			; Case dispatch
000260	012703  000000G			4$:	MOV	#BADREQ,R3
000264	000413 					BR	9$
000266	012703  000000G			5$:	MOV	#MODREQ,R3
000272	000410 					BR	9$
000274	012703  000000G			6$:	MOV	#NODREQ,R3
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  12
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (2)

000300	000405 					BR	9$
000302	012703  000000G			7$:	MOV	#CKTREQ,R3
000306	000402 					BR	9$
000310	012703  000000G			8$:	MOV	#LINREQ,R3
000314	016605  000006 			9$:	MOV	6(SP),R5			;					0373
000320	004767  000000G				JSR	PC,$MCB
000324	016601  000010 				MOV	10(SP),R1			;					0375
000330	004767  000000G				JSR	PC,NX.ITC
000334	005700 					TST	R0				; CCB
000336	001423 					BEQ	11$
000340	010004 					MOV	R0,R4				; CCB,*					0377
000342	004713 					JSR	PC,(R3)
000344	000420 					BR	11$				;					0379
000346	020227  000027 			10$:	CMP	R2,#27				;					0354
000352	001020 					BNE	12$
000354	016605  000006 				MOV	6(SP),R5			;					0391
000360	004767  000000G				JSR	PC,$MCB
000364	016601  000010 				MOV	10(SP),R1			;					0393
000370	004767  000000G				JSR	PC,NX.ITC
000374	005700 					TST	R0				; CCB
000376	001403 					BEQ	11$
000400	010004 					MOV	R0,R4				; CCB,*					0395
000402	004767  000000G				JSR	PC,EVPWAT
000406	004767  000000G			11$:	JSR	PC,$RSX				;					0397
000412	000473 					BR	19$				;					0354
000414	020227  000002 			12$:	CMP	R2,#2
000420	001007 					BNE	13$
000422	016605  000006 				MOV	6(SP),R5			;					0400
000426	016601  000010 				MOV	10(SP),R1
000432	004767  000000G				JSR	PC,EVPRLB
000436	000461 					BR	19$				;					0354
000440	020227  000033 			13$:	CMP	R2,#33
000444	001007 					BNE	14$
000446	016605  000006 				MOV	6(SP),R5			;					0402
000452	016601  000010 				MOV	10(SP),R1
000456	004767  000000G				JSR	PC,DLXCON
000462	000447 					BR	19$				;					0354
000464	020227  000034 			14$:	CMP	R2,#34
000470	001007 					BNE	15$
000472	016605  000006 				MOV	6(SP),R5			;					0404
000476	016601  000010 				MOV	10(SP),R1
000502	004767  000000G				JSR	PC,DLXDSC
000506	000435 					BR	19$				;					0354
000510	020227  000032 			15$:	CMP	R2,#32
000514	001007 					BNE	16$
000516	016605  000006 				MOV	6(SP),R5			;					0406
000522	016601  000010 				MOV	10(SP),R1
000526	004767  000000G				JSR	PC,DLXRCV
000532	000423 					BR	19$				;					0354
000534	020227  000031 			16$:	CMP	R2,#31
000540	001007 					BNE	17$
000542	016605  000006 				MOV	6(SP),R5			;					0408
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  13
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (2)

000546	016601  000010 				MOV	10(SP),R1
000552	004767  000000G				JSR	PC,DLXXMT
000556	000411 					BR	19$				;					0354
000560	016605  000006 			17$:	MOV	6(SP),R5			;					0410
000564	012700  177777 				MOV	#-1,R0
000570	005001 				18$:	CLR	R1
000572	016603  000010 				MOV	10(SP),R3
000576	004767  000000G				JSR	PC,$IOFIN
000602	062706  000012 			19$:	ADD	#12,SP				;					0267
000606	000207 					RTS	PC
; Routine Size:  196 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  6 words


000034						.PSECT	$PLIT$,  RO ,  D  

					P.AAC:						; CASE Table for QIODSP+0254		0364
000034	000014 					.WORD	14				; [6$]
000036	000030 					.WORD	30				; [8$]
000040	000000 					.WORD	0				; [4$]
000042	000022 					.WORD	22				; [7$]
000044	000006 					.WORD	6				; [5$]
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  14
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (3)

;	  0414	routine QIONOP (UCB) : RSX_UCB novalue = 	!Non-Operation Driver Dispatch
;	  0415	
;	  0416	!++
;	  0417	! FUNCTIONAL DESCRIPTION:
;	  0418	!
;	  0419	!     This routine just returns to the caller.
;	  0420	!
;	  0421	! FORMAL PARAMETERS:
;	  0422	!	UCB - Unit Control Block (unused)
;	  0423	!
;	  0424	! IMPLICIT INPUTS:
;	  0425	!	None
;	  0426	!
;	  0427	! IMPLICIT OUTPUTS:
;	  0428	!	None
;	  0429	!
;	  0430	! COMPLETION CODES:
;	  0431	!	None
;	  0432	!
;	  0433	! SIDE EFFECTS:
;	  0434	!	None
;	  0435	!--
;	  0436	
;	  0437	    begin
;	  0438	    return
;	  0439	    end;					!End of QIONOP


						.SBTTL	QIONOP
000610						.PSECT	$CODE$,  RO 

000000	000207 				QIONOP: RTS	PC				;					0414
; Routine Size:  1 word,	Routine Base:  $CODE$ + 0610
; Maximum stack depth per invocation:  0 words
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  15
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (4)

;	  0440	routine DLXNM (NMXDB, CCB) : MCB_DB_CCB novalue =
;	  0441	
;	  0442	!++
;	  0443	! FUNCTIONAL DESCRIPTION:
;	  0444	!
;	  0445	!    This routine dispatches completed NM requests to the lower layers
;	  0446	!
;	  0447	! FORMAL PARAMETERS:
;	  0448	!
;	  0449	!	NMXDB - NMX's Data Base
;	  0450	!
;	  0451	! IMPLICIT INPUTS:
;	  0452	!
;	  0453	!	None
;	  0454	!
;	  0455	! IMPLICIT OUTPUTS:
;	  0456	!
;	  0457	!	None
;	  0458	!
;	  0459	! COMPLETION CODES:
;	  0460	!	None
;	  0461	!
;	  0462	! SIDE EFFECTS:
;	  0463	!	The data base items associated with system specific functions
;	  0464	!       are initialized.
;	  0465	!--
;	  0466	
;	  0467	    begin
;	  0468	
;	  0469	    map
;	  0470	        CCB : ref NMX_CCB_BLOCK,
;	  0471		NMXDB : ref NMXDB_BLOCK;
;	  0472	
;	  0473	    MCB_DB_CCB ((case .CCB [C_NM_ENTITY] from NMX$ENT_lo to NMX$ENT_hi of
;	  0474		set
;	  0475		[NMX$ENT_mod] : MODCCP;
;	  0476		[NMX$ENT_nod] : NODCCP;
;	  0477		[NMX$ENT_ckt] : CKTCCP;
;	  0478		[NMX$ENT_lin] : LINCCP;
;	  0479		[inrange, outrange] : BADCCB;
;	  0480		tes), NMXDB [NMX_BASE], .CCB);
;	  0481	    end;					! End of TIMPIN


						.SBTTL	DLXNM
000000	016400  000024 			DLXNM:	MOV	24(R4),R0			; *(CCB),*				0473
000004	072027  177770 				ASH	#-10,R0
000010	042700  177760 				BIC	#177760,R0
000014	005300 					DEC	R0
000016	020027  000004 				CMP	R0,#4
000022	101003 					BHI	1$
000024	006300 					ASL	R0
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  16
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (4)

000026	066007  000046'				ADD	P.AAD(R0),PC			; Case dispatch
000032	012700  000000V			1$:	MOV	#BADCCB,R0
000036	000413 					BR	6$
000040	012700  000000G			2$:	MOV	#MODCCP,R0
000044	000410 					BR	6$
000046	012700  000000G			3$:	MOV	#NODCCP,R0
000052	000405 					BR	6$
000054	012700  000000G			4$:	MOV	#CKTCCP,R0
000060	000402 					BR	6$
000062	012700  000000G			5$:	MOV	#LINCCP,R0
000066	004710 				6$:	JSR	PC,(R0)
000070	000207 					RTS	PC				;					0440
; Routine Size:  29 words,	Routine Base:  $CODE$ + 0612
; Maximum stack depth per invocation:  1 word


000046						.PSECT	$PLIT$,  RO ,  D  

					P.AAD:						; CASE Table for DLXNM+0026		0473
000046	000014 					.WORD	14				; [3$]
000050	000030 					.WORD	30				; [5$]
000052	000000 					.WORD	0				; [1$]
000054	000022 					.WORD	22				; [4$]
000056	000006 					.WORD	6				; [2$]
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  17
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (5)

;	  0482	routine DSPTIM (NMXDB, FCM) : MCB_DB_MOD novalue =
;	  0483	
;	  0484	!++
;	  0485	! FUNCTIONAL DESCRIPTION:
;	  0486	!
;	  0487	!    DSPTIM handles NMX process initialization.
;	  0488	!
;	  0489	! FORMAL PARAMETERS:
;	  0490	!
;	  0491	!	NMXDB - NMX's Data Base
;	  0492	!       FCM - FC_MOD of FC_TIM
;	  0493	!
;	  0494	! IMPLICIT INPUTS:
;	  0495	!
;	  0496	!	None
;	  0497	!
;	  0498	! IMPLICIT OUTPUTS:
;	  0499	!
;	  0500	!	None
;	  0501	!
;	  0502	! COMPLETION CODES:
;	  0503	!	None
;	  0504	!
;	  0505	! SIDE EFFECTS:
;	  0506	!	The data base items associated with system specific functions
;	  0507	!       are initialized.
;	  0508	!--
;	  0509	
;	  0510	    begin
;	  0511	
;	  0512	    map
;	  0513		NMXDB : ref NMXDB_BLOCK;
;	  0514	
;	P 0515	    DISPATCH$ (
;	P 0516		.FCM,
;	P 0517		TABLE$ ($DSPCR, FD_TIM,		! Timer dispatch table:
;	P 0518		    (FM_PIN, TIMPIN),		!  Process initialization
;	P 0519		    (FM_LTM, TIMLTM)),		!  Long timer
;	P 0520		(NMXDB [NMX_BASE]),
;	  0521		MCB_DB);
;	  0522	    end;					! End of DSPTIM


000060	000000G				P.AAE:	.WORD	$DSPCR
000062	000000V					.WORD	TIMLTM
000064	000000G					.WORD	$DSPCR
000066	000000V					.WORD	TIMPIN
000070	000000G					.WORD	$DSPCR
000072	000000G					.WORD	$DSPCR


						.SBTTL	DSPTIM
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  18
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (5)

000704						.PSECT	$CODE$,  RO 

000000	004773  000060'			DSPTIM: JSR	PC,@P.AAE(R3)			; *,*(FCM)				0521
000004	000207 					RTS	PC				;					0482
; Routine Size:  3 words,	Routine Base:  $CODE$ + 0704
; Maximum stack depth per invocation:  1 word
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  19
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (6)

;	  0523	routine DSPCCP (NMXDB, CCB, FCM) : MCB_DB_CCB_MOD novalue = 	!Dispatch on Control Complete
;	  0524	
;	  0525	!++
;	  0526	! FUNCTIONAL DESCRIPTION:
;	  0527	!
;	  0528	!    Dispatch to appropriate service routine for Control Complete CCB.
;	  0529	!
;	  0530	! FORMAL PARAMETERS:
;	  0531	!
;	  0532	!    NMXDB - the NMX process data base
;	  0533	!    CCB   - the CCP Communication Control Block
;	  0534	!    FCM   - the Function Modified in the CCB
;	  0535	!
;	  0536	!
;	  0537	! IMPLICIT INPUTS:
;	  0538	!
;	  0539	!    Misc Items from NMXDB
;	  0540	!
;	  0541	! IMPLICIT OUTPUTS:
;	  0542	!
;	  0543	!	None
;	  0544	!
;	  0545	! ROUTINE VALUE:
;	  0546	!
;	  0547	!	None
;	  0548	!
;	  0549	! SIDE EFFECTS:
;	  0550	!
;	  0551	!	None
;	  0552	!--
;	  0553	
;	  0554	    begin
;	  0555	
;	  0556	    map
;	  0557		NMXDB : ref NMXDB_BLOCK,
;	  0558		CCB : ref NMX_CCB_BLOCK;
;	  0559	
;	P 0560	    DISPATCH$ (.FCM,
;	P 0561		TABLE$ (DLXCCP, FD_CTL,		! Control complete dispatch table:
;	P 0562		    (FM_NM, DLXNM)),		!  NM request complete
;	P 0563		(NMXDB [NMX_BASE], .CCB),
;	  0564		MCB_DB_CCB);
;	  0565	    end;



000074						.PSECT	$PLIT$,  RO ,  D  
000074	000000G				P.AAF:	.WORD	DLXCCP
000076	000000G					.WORD	DLXCCP
000100	000000G					.WORD	DLXCCP
000102	000612'					.WORD	DLXNM
000104	000000G					.WORD	DLXCCP
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  20
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (6)

000106	000000G					.WORD	DLXCCP
000110	000000G					.WORD	DLXCCP


						.SBTTL	DSPCCP
000712						.PSECT	$CODE$,  RO 

000000	004773  000074'			DSPCCP: JSR	PC,@P.AAF(R3)			; *,*(FCM)				0564
000004	000207 					RTS	PC				;					0523
; Routine Size:  3 words,	Routine Base:  $CODE$ + 0712
; Maximum stack depth per invocation:  1 word


;	  0566	
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  21
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (7)

;	  0567	global routine BADCCB (NMXDB, CCB, FCM) : MCB_DB_CCB_MOD novalue = 	! Crash on bad CCB
;	  0568	
;	  0569	!++
;	  0570	! FUNCTIONAL DESCRIPTION:
;	  0571	!
;	  0572	!    Signal Stop for Bad CCB parameter area
;	  0573	!
;	  0574	! FORMAL PARAMETERS:
;	  0575	!
;	  0576	!    NMXDB - NMX data base
;	  0577	!    CCB - the offending CCB
;	  0578	!    FCM - the Function Modifier
;	  0579	!
;	  0580	! IMPLICIT INPUTS:
;	  0581	!
;	  0582	!	None
;	  0583	!
;	  0584	! IMPLICIT OUTPUTS:
;	  0585	!
;	  0586	!       None
;	  0587	!
;	  0588	! COMPLETION CODES:
;	  0589	!
;	  0590	!	None
;	  0591	!
;	  0592	! SIDE EFFECTS:
;	  0593	!
;	  0594	!    Crashes the system
;	  0595	!--
;	  0596	
;	  0597	    begin
;	  0598	
;	  0599	    map
;	  0600		NMXDB : ref NMXDB_BLOCK,
;	  0601		CCB : ref block field (C_FIELDS);
;	  0602	
;	  0603	!
;	  0604	    SIGNAL_STOP (NMX$_ICP);
;	  0605	    end;


						.SBTTL	BADCCB
000000	012746  100034 			BADCCB::MOV	#-77744,-(SP)			;					0604
000004	012746  000001 				MOV	#1,-(SP)
000010	004767  000000G				JSR	PC,$STOP
000014	022626 					CMP	(SP)+,(SP)+			;					0597
000016	000207 					RTS	PC				;					0567
; Routine Size:  8 words,	Routine Base:  $CODE$ + 0720
; Maximum stack depth per invocation:  3 words


;	  0606	
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  22
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (8)

;	  0607	routine TIMLTM (NMXDB) : MCB_DB novalue =
;	  0608	
;	  0609	!++
;	  0610	! FUNCTIONAL DESCRIPTION:
;	  0611	!
;	  0612	!    TIMLTM handles the long timer dispatches
;	  0613	!
;	  0614	! FORMAL PARAMETERS:
;	  0615	!
;	  0616	!	NMXDB - NMX's Data Base
;	  0617	!
;	  0618	! IMPLICIT INPUTS:
;	  0619	!
;	  0620	!	None
;	  0621	!
;	  0622	! IMPLICIT OUTPUTS:
;	  0623	!
;	  0624	!	None
;	  0625	!
;	  0626	! COMPLETION CODES:
;	  0627	!	None
;	  0628	!
;	  0629	! SIDE EFFECTS:
;	  0630	!	The data base items associated with system specific functions
;	  0631	!       are initialized.
;	  0632	!--
;	  0633	
;	  0634	    begin
;	  0635	
;	  0636	    map
;	  0637		NMXDB : ref NMXDB_BLOCK;
;	  0638	
;	  0639	    local
;	  0640	        LUNBLK : ref DLX_LUN_BLOCK;
;	  0641	
;	  0642	    NMXDB [NMX_TIMER_COUNT] = .NMXDB [NMX_TIMER_COUNT] + 1;
;	  0643	    LUNBLK = NMXDB [NMX_LUN_QUEUE];
;	  0644	
;	  0645	    while (LUNBLK = .LUNBLK [LUN_LINK]) neq 0 do
;	  0646	        begin
;	  0647	
;	  0648	        local
;	  0649	            IOP : ref NMX_IOP_BLOCK;
;	  0650	
;	  0651	        bind
;	  0652	            RCVQ = LUNBLK [LUN_RCVS] : vector;
;	  0653	
;	  0654	        if (IOP = .RCVQ [0]) neq 0
;	  0655	        then
;	  0656	
;	  0657	            selectone true of
;	  0658	                set
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  23
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (8)

;	  0659	                [.IOP [I_NMX_ENTITY] eql 0] :
;	  0660	                    begin       ! Timeout has Occurred
;	  0661	                    $NMX_DEQUEUE (RCVQ, IOP);
;	  0662	                    $NMX_RETURN_RSX_IOP (.IOP, IE$TMO, 0);
;	  0663	                    end;
;	  0664	                [.IOP [I_NMX_ENTITY] gtr 0] :
;	  0665	                    IOP [I_NMX_ENTITY] = .IOP [I_NMX_ENTITY] - 1;
;	  0666	                [otherwise] :
;	  0667	                    ;
;	  0668	                tes;
;	  0669	
;	  0670	        end;
;	  0671	
;	  0672	    end;					! End of TIMLTM


						.GLOBL	$QRMVF


						.SBTTL	TIMLTM
000000	105215 				TIMLTM: INCB	(R5)				; NMXDB					0642
000002	012746  000054 				MOV	#54,-(SP)			; *,LUNBLK				0643
000006	060516 					ADD	R5,(SP)				; NMXDB,LUNBLK
000010	017616  000000 			1$:	MOV	@0(SP),(SP)			; LUNBLK,LUNBLK				0645
000014	001435 					BEQ	3$
000016	011600 					MOV	(SP),R0				; LUNBLK,*				0654
000020	016004  000010 				MOV	10(R0),R4			; *(LUNBLK),IOP
000024	001771 					BEQ	1$
000026	005764  000034 				TST	34(R4)				; *(IOP)				0659
000032	001022 					BNE	2$
000034	012701  000010 				MOV	#10,R1				;					0661
000040	060001 					ADD	R0,R1				; LUNBLK,*
000042	010100 					MOV	R1,R0
000044	004767  000000G				JSR	PC,$QRMVF
000050	010104 					MOV	R1,R4
000052	004767  000000G				JSR	PC,$RSX				;					0662
000056	012700  177666 				MOV	#-112,R0
000062	005001 					CLR	R1
000064	010403 					MOV	R4,R3				; IOP,*
000066	004767  000000G				JSR	PC,$IOFIN
000072	004767  000000G				JSR	PC,$MCB
000076	000744 					BR	1$				;					0657
000100	003743 				2$:	BLE	1$				;					0664
000102	005364  000034 				DEC	34(R4)				; *(IOP)				0665
000106	000740 					BR	1$				;					0657
000110	005726 				3$:	TST	(SP)+				;					0607
000112	000207 					RTS	PC
; Routine Size:  38 words,	Routine Base:  $CODE$ + 0740
; Maximum stack depth per invocation:  2 words
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  24
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (9)

;	  0673	routine TIMPIN (NMXDB) : MCB_DB novalue =
;	  0674	
;	  0675	!++
;	  0676	! FUNCTIONAL DESCRIPTION:
;	  0677	!
;	  0678	!    TIMPIN handles process initialization
;	  0679	!
;	  0680	! FORMAL PARAMETERS:
;	  0681	!
;	  0682	!	NMXDB - NMX's Data Base
;	  0683	!
;	  0684	! IMPLICIT INPUTS:
;	  0685	!
;	  0686	!	None
;	  0687	!
;	  0688	! IMPLICIT OUTPUTS:
;	  0689	!
;	  0690	!	None
;	  0691	!
;	  0692	! COMPLETION CODES:
;	  0693	!	None
;	  0694	!
;	  0695	! SIDE EFFECTS:
;	  0696	!	The data base items associated with system specific functions
;	  0697	!       are initialized.
;	  0698	!--
;	  0699	
;	  0700	    begin
;	  0701	
;	  0702	    map
;	  0703		NMXDB : ref NMXDB_BLOCK;
;	  0704	
;	  0705	    local
;	  0706		ENABLE_VECTOR : VECTOR [3];
;	  0707	
;	  0708	    external routine
;	  0709		$NMEVT : novalue;
;	  0710	
;	  0711	    bind
;	  0712		NMX = rad50'NMX',
;	  0713		SC = rad50'SC ',
;	  0714		NSP = rad50'NSP',
;	  0715		XPT = rad50'XPT';
;	  0716	
;	  0717	    NMXDB [NMX_NMX_PIX] = GET_PIX (NMX);
;	  0718	    NMXDB [NMX_SC_PIX] = GET_PIX (SC);
;	  0719	    NMXDB [NMX_NSP_PIX] = GET_PIX (NSP);
;	  0720	    NMXDB [NMX_XPT_PIX] = GET_PIX (XPT);
;	  0721	!
;	  0722	! Get the EXE ADR and NAM from high core
;	  0723	!
;	  0724	    begin
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  25
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (9)

;	  0725	
;	  0726	    external
;	  0727	        $SYSIZ : block [3];
;	  0728	
;	  0729	    if .$SYSIZ [2, 0, 16, 1] eql -1 and .$SYSIZ [1, 8, 8, 1] eql -1
;	  0730	    then
;	  0731	        begin
;	  0732	
;	  0733	        bind
;	  0734	            PASSED_NUMBER = %o'140000',
;	  0735	            PASSED_NAME = %o'140002';
;	  0736	
;	  0737	        MAP$ (.$SYSIZ [0, 0, 16, 0] - 1);
;	  0738	
;	  0739	        if .PASSED_NUMBER neq 0
;	  0740	        then
;	  0741	            NMXDB [NMX_EXECUTOR_NUMBER] = .PASSED_NUMBER;
;	  0742	
;	  0743	        if ch$rchar (ch$ptr (PASSED_NAME,, 8)) neq %c' '
;	  0744	        then
;	  0745	            begin
;	  0746	
;	  0747	            local
;	  0748	                LEN;
;	  0749	
;	  0750	            LEN = ch$find_ch (6, ch$ptr (PASSED_NAME,, 8), %c' ');
;	  0751	
;	  0752	            if ch$fail (.LEN)
;	  0753	            then
;	  0754	                LEN = 6
;	  0755	            else
;	  0756	                LEN = ch$diff (.LEN, ch$ptr (PASSED_NAME,, 8));
;	  0757	
;	  0758	            NMXDB [NMX_EXECUTOR_NAME_LENGTH] = .LEN;
;	  0759	            ch$move (.LEN, ch$ptr (PASSED_NAME,, 8),ch$ptr (NMXDB [NMX_EXECUTOR_NAME], 1, 8));
;	  0760	            end;
;	  0761	
;	  0762	        end;
;	  0763	
;	  0764	    end;
;	  0765	!
;	  0766	! Setup the Exception Handler for Event Logging
;	  0767	!
;	  0768	    ENABLE_VECTOR [0] = $NMEVT;
;	  0769	    ENABLE_VECTOR [1] = .NMXDB [NMX_NMX_PIX];
;	  0770	    ENABLE_VECTOR [2] = NMXDB [NMX_BASE];
;	  0771	    $MCB_EXCEPTION (1, ENABLE_VECTOR, );
;	  0772	    $MCB_ENABLE_LONG_TIMER ();
;	  0773	    NMXDB [NMX_TIMER_COUNT] = 1;
;	  0774	    begin
;	  0775	
;	  0776	    bind
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  26
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (9)

;	  0777	        EVTDB = NMXDB[NMX_EVENT_QUEUE] : NMX_EVENT_BLOCK;
;	  0778	
;	  0779	    local
;	  0780	        CCB : ref block field (C_FIELDS);
;	  0781	
;	  0782	    if $MCB_GET_CCB (CCB)
;	  0783	    then
;	  0784	        begin
;	  0785	        CCB [C_BIAS] = 0;
;	  0786	        CCB [C_ADDR] = .NMXDB [NMX_NMLINI_ADDR];
;	  0787	        CCB [C_CNT] = .NMXDB [NMX_NMLINI_CNT];
;	  0788	        CCB [C_PRM1] = 0;
;	  0789	        CCB [C_PRM5] = 0;
;	  0790	        $MCB_QUEUE_CCB (EVTDB [EVENT_QUEUE], .CCB);
;	  0791	        end;
;	  0792	
;	  0793	    end;
;	  0794	    begin
;	  0795	
;	  0796	    bind
;	  0797	        NMLMCB = uplit (%rad50_11 'NMLMCB');
;	  0798	
;	  0799	    local
;	  0800	        TCB;
;	  0801	
;	  0802	    if $RSX_GET_TCB (NMLMCB, TCB)
;	  0803	    then
;	  0804	        $RSX_REQUEST_TASK (.TCB);
;	  0805	
;	  0806	    end;
;	  0807	    end;					! End of TIMPIN



000112						.PSECT	$PLIT$,  RO ,  D  
000112	054624  050672 			P.AAG:	.RAD50	/NMLMCB/


						.GLOBL	$NMEVT, $SYSIZ, KISAR6, E.XVST
						.GLOBL	$CALLI, $LTMEN, $CCBGT, $CMQIN
						.GLOBL	$SRSTD, $TSKHD, $EXRQN


	054640 				NMX=		    54640
	073470 				SC=		    73470
	055210 				NSP=		    55210
	114224 				XPT=		    114224
	140000 				PASSED.NUMBER=	    -40000
	140002 				PASSED.NAME=	    -37776
	000112'				NMLMCB=		    P.AAG
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  27
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (9)

						.SBTTL	TIMPIN
001054						.PSECT	$CODE$,  RO 

000000	162706  000006 			TIMPIN: SUB	#6,SP				;					0673
000004	012700  054640 				MOV	#54640,R0			;					0717
000010	004767  000000V				JSR	PC,GET.PIX
000014	110065  000003 				MOVB	R0,3(R5)			; *,*(NMXDB)
000020	012700  073470 				MOV	#73470,R0			;					0718
000024	004767  000000V				JSR	PC,GET.PIX
000030	110065  000005 				MOVB	R0,5(R5)			; *,*(NMXDB)
000034	012700  055210 				MOV	#55210,R0			;					0719
000040	004767  000000V				JSR	PC,GET.PIX
000044	110065  000007 				MOVB	R0,7(R5)			; *,*(NMXDB)
000050	012700  114224 				MOV	#-63554,R0			;					0720
000054	004767  000000V				JSR	PC,GET.PIX
000060	110065  000011 				MOVB	R0,11(R5)			; *,*(NMXDB)
000064	026727  000004G 177777 			CMP	$SYSIZ+4,#-1			;					0729
000072	001055 					BNE	4$
000074	126727  000003G 177777 			CMPB	$SYSIZ+3,#-1
000102	001051 					BNE	4$
000104	016700  000000G				MOV	$SYSIZ,R0			;					0737
000110	005300 					DEC	R0
000112	010067  000000G				MOV	R0,KISAR6
000116	013700  140000 				MOV	@#140000,R0			;					0739
000122	001402 					BEQ	1$
000124	010065  000042 				MOV	R0,42(R5)			; *,*(NMXDB)				0741
000130	123727  140002  000040 		1$:	CMPB	@#140002,#40			;					0743
000136	001433 					BEQ	4$
000140	012746  000006 				MOV	#6,-(SP)			;					0750
000144	012746  140002 				MOV	#-37776,-(SP)
000150	012746  000040 				MOV	#40,-(SP)
000154	004767  000000G				JSR	PC,BL$FCH
000160	005700 					TST	R0				; LEN					0752
000162	001003 					BNE	2$
000164	012700  000006 				MOV	#6,R0				; *,LEN					0754
000170	000402 					BR	3$				;					0752
000172	062700  037776 			2$:	ADD	#37776,R0			; *,LEN					0756
000176	110065  000044 			3$:	MOVB	R0,44(R5)			; LEN,*(NMXDB)				0758
000202	010016 					MOV	R0,(SP)				; LEN,*					0759
000204	012746  140002 				MOV	#-37776,-(SP)
000210	012746  000045 				MOV	#45,-(SP)
000214	060516 					ADD	R5,(SP)				; NMXDB,*
000216	004767  000000G				JSR	PC,BL$MOV
000222	062706  000012 				ADD	#12,SP				;					0745
000226	012716  000000G			4$:	MOV	#$NMEVT,(SP)			; *,ENABLE.VECTOR			0768
000232	116566  000003  000002 			MOVB	3(R5),2(SP)			; *(NMXDB),ENABLE.VECTOR+2		0769
000240	105066  000003 				CLRB	3(SP)				; ENABLE.VECTOR+2
000244	010566  000004 				MOV	R5,4(SP)			; NMXDB,ENABLE.VECTOR+4			0770
000250	005046 					CLR	-(SP)				;					0771
000252	012746  000004 				MOV	#4,-(SP)
000256	060616 					ADD	SP,(SP)				; ENABLE.VECTOR,*
000260	012746  000001 				MOV	#1,-(SP)
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  28
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (9)

000264	012746  000003 				MOV	#3,-(SP)
000270	012746  000000G				MOV	#E.XVST,-(SP)
000274	004767  000000G				JSR	PC,$CALLI
000300	004767  000000G				JSR	PC,$LTMEN			;					0772
000304	112715  000001 				MOVB	#1,(R5)				; *,NMXDB				0773
000310	004767  000000G				JSR	PC,$CCBGT			;					0782
000314	103421 					BCS	5$
000316	005064  000016 				CLR	16(R4)				; *(CCB)				0785
000322	016564  000142  000020 			MOV	142(R5),20(R4)			; *(NMXDB),*(CCB)			0786
000330	016564  000144  000022 			MOV	144(R5),22(R4)			; *(NMXDB),*(CCB)			0787
000336	005064  000024 				CLR	24(R4)				; *(CCB)				0788
000342	005064  000034 				CLR	34(R4)				; *(CCB)				0789
000346	012703  000120 				MOV	#120,R3				;					0790
000352	060503 					ADD	R5,R3				; NMXDB,*
000354	004767  000000G				JSR	PC,$CMQIN
000360	016700  000000G			5$:	MOV	$TSKHD,R0			;					0802
000364	005760  000030 				TST	30(R0)
000370	001410 					BEQ	6$
000372	012703  000112'				MOV	#NMLMCB,R3
000376	004767  000000G				JSR	PC,$SRSTD
000402	103403 					BLO	6$
000404	004767  000000G				JSR	PC,$EXRQN			;					0804
000410	006000 					ROR	R0
000412	062706  000020 			6$:	ADD	#20,SP				;					0673
000416	000207 					RTS	PC
; Routine Size:  136 words,	Routine Base:  $CODE$ + 1054
; Maximum stack depth per invocation:  9 words
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  29
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (10)

;	  0808	routine GET_PIX (NAME) : NMX_LKG_NAM =
;	  0809	
;	  0810	!++
;	  0811	! FUNCTIONAL DESCRIPTION:
;	  0812	!
;	  0813	!    GET_PIX gets the process index for the given process name.
;	  0814	!
;	  0815	! FORMAL PARAMETERS:
;	  0816	!
;	  0817	!    NAME - Rad50 process name
;	  0818	!
;	  0819	! IMPLICIT INPUTS:
;	  0820	!
;	  0821	!	None
;	  0822	!
;	  0823	! IMPLICIT OUTPUTS:
;	  0824	!
;	  0825	!	None
;	  0826	!
;	  0827	! ROUTINE VALUE:
;	  0828	!
;	  0829	!       0 if no such process,
;	  0830	!       process index otherwise.
;	  0831	!
;	  0832	! SIDE EFFECTS:
;	  0833	!
;	  0834	!       None
;	  0835	!--
;	  0836	
;	  0837	    begin
;	  0838	
;	  0839	    local
;	  0840	        PIX;
;	  0841	
;	  0842	    PIX = 0;
;	  0843	    $MCB_GET_PROCESS_HANDLE (.NAME, PIX);
;	  0844	    .PIX
;	  0845	    end;					!of GET_PIX


						.GLOBL	P.DTGT


						.SBTTL	GET.PIX
000000	010146 				GET.PIX:MOV	R1,-(SP)			;					0808
000002	005746 					TST	-(SP)
000004	005001 					CLR	R1				; PIX					0842
000006	012746  000002 				MOV	#2,-(SP)			;					0843
000012	060616 					ADD	SP,(SP)				; $MCB$MY.INDEX,*
000014	010046 					MOV	R0,-(SP)			; NAME,*
000016	012746  000002 				MOV	#2,-(SP)
000022	012746  000000G				MOV	#P.DTGT,-(SP)
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  30
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (10)

000026	004767  000000G				JSR	PC,$CALLI
000032	062706  000010 				ADD	#10,SP
000036	032700  000001 				BIT	#1,R0				; *,$MCB$STATUS
000042	001401 					BEQ	1$
000044	011601 					MOV	(SP),R1				; $MCB$MY.INDEX,PIX
000046	010100 				1$:	MOV	R1,R0				; PIX,*					0808
000050	005726 					TST	(SP)+
000052	012601 					MOV	(SP)+,R1
000054	000207 					RTS	PC
; Routine Size:  23 words,	Routine Base:  $CODE$ + 1474
; Maximum stack depth per invocation:  7 words
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  31
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (11)

;	  0846	global routine NMX$GET_NMX_CCB (NMXDB, IOP) : NMX$LKG_DB_IOP =
;	  0847	
;	  0848	!++
;	  0849	! FUNCTIONAL DESCRIPTION:
;	  0850	!
;	  0851	!    Convert from IOP format to CCB format the
;	  0852	!    requested function.
;	  0853	!
;	  0854	! FORMAL PARAMETERS:
;	  0855	!
;	  0856	!    NMXDB - address of the NMX process data base
;	  0857	!    IOP - the I/O Packet to be converted
;	  0858	!
;	  0859	! IMPLICIT INPUTS:
;	  0860	!
;	  0861	!	None
;	  0862	!
;	  0863	! IMPLICIT OUTPUTS:
;	  0864	!
;	  0865	!    Various CCB fields will be setup
;	  0866	!
;	  0867	! ROUTINE VALUE:
;	  0868	!
;	  0869	!    CCB address - if successful
;	  0870	!    0 - if failure
;	  0871	!
;	  0872	! SIDE EFFECTS:
;	  0873	!
;	  0874	!	None
;	  0875	!--
;	  0876	
;	  0877	    begin
;	  0878	
;	  0879	    map
;	  0880		IOP : ref NMX_IOP_BLOCK,
;	  0881		NMXDB : ref NMXDB_BLOCK;
;	  0882	
;	  0883	    local
;	  0884		CCB : ref NMX_CCB_BLOCK,
;	  0885		NMPAR : ref NMX_NMPAR_BLOCK;
;	  0886	
;	  0887	!
;	  0888	! Allocate the CCB and NMPAR blocks. If resourse failure then return 0.
;	  0889	!
;	  0890	
;	  0891	    if not $MCB_GET_CCB (CCB)
;	  0892	    then
;	  0893		begin
;	  0894		$NMX_RETURN_RSX_IOP (.IOP, $NM$ERR_REE, 0);
;	  0895		return 0		    ! CCB Allocation Failure
;	  0896		end;
;	  0897	
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  32
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (11)

;	  0898	    if not $MCB_GET_DSR (NMX_NMPAR_ALLOCATION, NMPAR)
;	  0899	    then
;	  0900		begin                       ! NMPAR Allocation Failure
;	  0901		$NMX_RETURN_RSX_IOP (.IOP, $NM$ERR_REE, 0);
;	  0902		return 0		    ! Tell user
;	  0903		end;
;	  0904	
;	  0905	    begin
;	  0906	    map NMPAR : ref vector;
;	  0907	    NMPAR [0] = 0;
;	  0908	    NMPAR [1] = 0;
;	  0909	    NMPAR [2] = 0;
;	  0910	    NMPAR [3] = 0;
;	  0911	    end;
;	  0912	
;	  0913	!
;	  0914	! We now have a CCB and the NMPAR block allocated; fill them in from the
;	  0915	! IOP.
;	  0916	!
;	  0917	    CCB [C_NM_NMPAR] = .NMPAR;      ! Point to NMPAR
;	  0918	    CCB [C_CNT] = 0;
;	  0919	
;	  0920	    if (CCB [C_NMX_IOP] = .IOP) neqa 0
;	  0921	    then
;	  0922		begin
;	  0923		CCB [C_BIAS] = .IOP [I_NMX_BIAS];   ! Copy Buffer Descriptor
;	  0924		CCB [C_ADDR] = .IOP [I_NMX_ADDR];
;	  0925		CCB [C_CNT] = .IOP [I_NMX_CNT];
;	  0926		CCB [C_NMX_TYPE] = .IOP [I_NMX_TYPE];       ! and type field
;	  0927	!
;	  0928	! Process Qualifier if specified otherwise flag no qualifier
;	  0929	!
;	  0930		CCB [C_NM_QUAL] = 0;
;	  0931	
;	  0932		if .IOP [I_NMX_QUALIFIER] neq 0
;	  0933		then
;	  0934		    begin
;	  0935		    CCB [C_NM_QUAL] = 1;
;	P 0936		    $RSX_CONVERT_TO_BIAS_ADDRESS (
;	P 0937			.IOP [I_NMX_QUALIFIER],
;	P 0938			NMPAR [NMX_NMPAR_AX0_BIAS],
;	  0939			NMPAR [NMX_NMPAR_AX0_ADDR]);
;	  0940		    end;
;	  0941	
;	  0942	!
;	  0943	! Process Entity and store it in NMPAR is specified.
;	  0944	!
;	  0945	
;	  0946		if (.IOP [I_NMX_ENTITY] neq 0)
;	  0947		then
;	  0948		    begin
;	  0949	
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  33
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (11)

;	  0950		    local
;	  0951			ID_ADDRESS,
;	  0952			ID_BIAS;
;	  0953	
;	P 0954		    $RSX_CONVERT_TO_BIAS_ADDRESS (
;	  0955			.IOP [I_NMX_ENTITY], ID_BIAS, ID_ADDRESS);
;	  0956		    MAP$ (.ID_BIAS);
;	  0957	
;	  0958		    if (.CCB [C_NM_ENTITY] eql NMX$ENT_nod)
;	  0959		    then
;	  0960			begin
;	  0961	
;	  0962	                bind
;	  0963	                    NODE_ENTITY = NMPAR [NMX_NMPAR_ENTITY] : block field (NODE_ENTITY_ID);
;	  0964	
;	  0965			NODE_ENTITY [NODE_ADDRESS] = (ch$rchar (.ID_ADDRESS) + (ch$rchar (ch$plus (.ID_ADDRESS, 1)
;	  0966			)^8));
;	  0967			NODE_ENTITY [NAME_LENGTH] = minu((ch$rchar (ch$plus (.ID_ADDRESS, 2))),6);
;	  0968	
;	  0969			if .NODE_ENTITY [NAME_LENGTH] neq 0
;	  0970			then
;	  0971			    CH$MOVE (.NODE_ENTITY [NAME_LENGTH],
;	  0972			        ch$plus (.ID_ADDRESS, 3), byt$ptr (NODE_ENTITY [NAME_ITSELF]));
;	  0973	
;	  0974			end
;	  0975		    else
;	  0976			begin
;	  0977	
;	  0978	                bind
;	  0979	                    OTHER_ENTITY = NMPAR [NMX_NMPAR_ENTITY] : block field (OTHER_ENTITY_ID);
;	  0980	
;	  0981			OTHER_ENTITY [OTHER_LENGTH] = minu((ch$rchar (.ID_ADDRESS)),16);
;	  0982	
;	  0983			if .OTHER_ENTITY [OTHER_LENGTH] neq 0
;	  0984			then
;	  0985			    CH$MOVE (.OTHER_ENTITY [OTHER_LENGTH],
;	  0986			        ch$plus (.ID_ADDRESS, 1), byt$ptr (OTHER_ENTITY [OTHER_ITSELF]));
;	  0987	
;	  0988			end;
;	  0989	
;	  0990		    end;
;	  0991	
;	  0992	        if .CCB [C_NM_FUNC] eql NMX$FNC_ret
;	  0993	        then
;	  0994	            NMPAR [NMX_NMPAR_RETURN_CNT] = 0;
;	  0995	
;	  0996		end;
;	  0997	
;	  0998	    CCB [C_NMX_CNT] = 0;            ! Store initial buffer count
;	  0999	    CCB [C_NMX_STATE] = ST$INI;	    ! State is DEFAULT
;	  1000	    CCB [C_FNC] = FC_CTL;           ! Control Function
;	  1001	    CCB [C_MOD] = FM_NM;            !  for Network Management
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  34
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (11)

;	  1002	    .CCB
;	  1003	    end;					! of NMX$GET_NMX_CCB


						.GLOBL	$DSRGT


						.SBTTL	NX.ITC
000000	004167  000000G			NX.ITC::JSR	R1,$SAVE5			;					0846
000004	162706  000006 				SUB	#6,SP
000010	010166  000002 				MOV	R1,2(SP)
000014	004767  000000G				JSR	PC,$CCBGT			;					0891
000020	103411 					BCS	1$
000022	010416 					MOV	R4,(SP)				; $MCB$R4,CCB
000024	012701  000026 				MOV	#26,R1				;					0898
000030	004767  000000G				JSR	PC,$DSRGT
000034	103403 					BCS	1$
000036	010066  000004 				MOV	R0,4(SP)			; $MCB$R0,NMPAR
000042	000416 					BR	2$
000044	004767  000000G			1$:	JSR	PC,$RSX				;					0901
000050	012700  177761 				MOV	#-17,R0
000054	005001 					CLR	R1
000056	016603  000002 				MOV	2(SP),R3
000062	004767  000000G				JSR	PC,$IOFIN
000066	004767  000000G				JSR	PC,$MCB
000072	005000 					CLR	R0				;					0900
000074	000167  000446 				JMP	10$
000100	005076  000004 			2$:	CLR	@4(SP)				; NMPAR					0907
000104	016600  000004 				MOV	4(SP),R0			; NMPAR,*				0908
000110	005060  000002 				CLR	2(R0)				; *(NMPAR)
000114	012700  000004 				MOV	#4,R0				;					0909
000120	066600  000004 				ADD	4(SP),R0			; NMPAR,*
000124	010003 					MOV	R0,R3
000126	005013 					CLR	(R3)
000130	016600  000004 				MOV	4(SP),R0			; NMPAR,*				0910
000134	005060  000006 				CLR	6(R0)				; *(NMPAR)
000140	011600 					MOV	(SP),R0				; CCB,*					0917
000142	016660  000004  000026 			MOV	4(SP),26(R0)			; NMPAR,*(CCB)
000150	005060  000022 				CLR	22(R0)				; *(CCB)				0918
000154	016660  000002  000034 			MOV	2(SP),34(R0)			; *,*(CCB)				0920
000162	001555 					BEQ	9$
000164	016601  000002 				MOV	2(SP),R1			;					0923
000170	016160  000024  000016 			MOV	24(R1),16(R0)			; *,*(CCB)
000176	016160  000026  000020 			MOV	26(R1),20(R0)			; *,*(CCB)				0924
000204	016160  000030  000022 			MOV	30(R1),22(R0)			; *,*(CCB)				0925
000212	012700  000024 				MOV	#24,R0				;					0926
000216	061600 					ADD	(SP),R0				; CCB,*
000220	010004 					MOV	R0,R4
000222	010100 					MOV	R1,R0
000224	016014  000032 				MOV	32(R0),(R4)
000230	142714  000001 				BICB	#1,(R4)				;					0930
000234	016100  000036 				MOV	36(R1),R0			;					0932
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  35
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (11)

000240	001412 					BEQ	3$
000242	152714  000001 				BISB	#1,(R4)				;					0935
000246	004767  000000G				JSR	PC,$RELOC			;					0939
000252	010176  000004 				MOV	R1,@4(SP)			; $RSX$R1,NMPAR
000256	016600  000004 				MOV	4(SP),R0			; NMPAR,*
000262	010260  000002 				MOV	R2,2(R0)			; $RSX$R2,*(NMPAR)
000266	016601  000002 			3$:	MOV	2(SP),R1			;					0946
000272	016100  000034 				MOV	34(R1),R0
000276	001500 					BEQ	8$
000300	004767  000000G				JSR	PC,$RELOC			;					0955
000304	010100 					MOV	R1,R0				; $RSX$R1,ID.BIAS
000306	010201 					MOV	R2,R1				; $RSX$R2,ID.ADDRESS
000310	010067  000000G				MOV	R0,KISAR6			; ID.BIAS,*				0956
000314	011400 					MOV	(R4),R0				;					0958
000316	042700  170377 				BIC	#170377,R0
000322	020027  000400 				CMP	R0,#400
000326	001037 					BNE	5$
000330	005000 					CLR	R0				;					0965
000332	156100  000001 				BISB	1(R1),R0			; *(ID.ADDRESS),*
000336	072027  000010 				ASH	#10,R0
000342	005002 					CLR	R2
000344	151102 					BISB	(R1),R2				; ID.ADDRESS,*
000346	060200 					ADD	R2,R0
000350	010013 					MOV	R0,(R3)
000352	005000 					CLR	R0				;					0967
000354	156100  000002 				BISB	2(R1),R0			; *(ID.ADDRESS),*
000360	020027  000006 				CMP	R0,#6
000364	101402 					BLOS	4$
000366	012700  000006 				MOV	#6,R0
000372	110063  000002 			4$:	MOVB	R0,2(R3)
000376	005000 					CLR	R0				;					0969
000400	156300  000002 				BISB	2(R3),R0
000404	005700 					TST	R0
000406	001434 					BEQ	8$
000410	010046 					MOV	R0,-(SP)			;					0972
000412	012746  000003 				MOV	#3,-(SP)
000416	060116 					ADD	R1,(SP)				; ID.ADDRESS,*
000420	012746  000003 				MOV	#3,-(SP)
000424	000420 					BR	7$
000426	005000 				5$:	CLR	R0				;					0981
000430	151100 					BISB	(R1),R0				; ID.ADDRESS,*
000432	020027  000020 				CMP	R0,#20
000436	101402 					BLOS	6$
000440	012700  000020 				MOV	#20,R0
000444	110013 				6$:	MOVB	R0,(R3)
000446	001414 					BEQ	8$				;					0983
000450	005046 					CLR	-(SP)				;					0986
000452	110016 					MOVB	R0,(SP)
000454	012746  000001 				MOV	#1,-(SP)
000460	060116 					ADD	R1,(SP)				; ID.ADDRESS,*
000462	012746  000001 				MOV	#1,-(SP)
000466	060316 				7$:	ADD	R3,(SP)
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  36
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (11)

000470	004767  000000G				JSR	PC,BL$MOV
000474	062706  000006 				ADD	#6,SP
000500	111400 				8$:	MOVB	(R4),R0				;					0992
000502	042700  177401 				BIC	#177401,R0
000506	020027  000014 				CMP	R0,#14
000512	001001 					BNE	9$
000514	005013 					CLR	(R3)				;					0994
000516	011600 				9$:	MOV	(SP),R0				; CCB,*					0998
000520	005060  000030 				CLR	30(R0)				; *(CCB)
000524	012760  000001  000032 			MOV	#1,32(R0)			; *,*(CCB)				0999
000532	112760  000010  000012 			MOVB	#10,12(R0)			; *,*(CCB)				1000
000540	112760  000006  000013 			MOVB	#6,13(R0)			; *,*(CCB)				1001
000546	062706  000006 			10$:	ADD	#6,SP				;					0846
000552	000207 					RTS	PC
; Routine Size:  182 words,	Routine Base:  $CODE$ + 1552
; Maximum stack depth per invocation:  13 words
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  37
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (12)

;	  1004	global routine NMX$MAP_ENTITY_ID_TO_DB (TYPE, ENTID_PTR) : NMX$LKG_TYP_ENT =
;	  1005	
;	  1006	!++
;	  1007	! FUNCTIONAL DESCRIPTION:
;	  1008	!
;	  1009	!    GET_ENTITY searches for a data base that matches ENTID
;	  1010	!    and returns its' address in ENTBLK.
;	  1011	!
;	  1012	! FORMAL PARAMETERS:
;	  1013	!
;	  1014	!    ENTBLK - set to the address of a ENTITY_BLOCK
;	  1015	!    ENTID - points at string for ENTITY_ID
;	  1016	!
;	  1017	! IMPLICIT INPUTS:
;	  1018	!
;	  1019	!	None
;	  1020	!
;	  1021	! IMPLICIT OUTPUTS:
;	  1022	!
;	  1023	!	None
;	  1024	!
;	  1025	! ROUTINE VALUE:
;	  1026	!
;	  1027	!    true - if ENTITY found
;	  1028	!    false - otherwise
;	  1029	!
;	  1030	! SIDE EFFECTS:
;	  1031	!
;	  1032	!    Mapping register APR6 is modified  to map in the ENTITY_BLOCK.
;	  1033	!--
;	  1034	
;	  1035	    begin
;	  1036	
;	  1037	    bind
;	  1038		NMXDB = .MCB$GAW_PROCESS_DATA_BASE [1] : NMXDB_BLOCK;
;	  1039	
;	  1040	    local
;	  1041		ENTADR : ref NMX_GENERAL_BLOCK,
;	  1042		ENTCNT,
;	  1043	        ENTLEN : ref vector;
;	  1044	
;	  1045	    case .TYPE from NMX$ENT_lo to NMX$ENT_hi of
;	  1046	        set
;	  1047	        [NMX$ENT_lin] :
;	  1048	            ENTLEN = NMXDB [NMX_LINES];
;	  1049	        [NMX$ENT_ckt] :
;	  1050	            ENTLEN = NMXDB [NMX_CIRCUITS];
;	  1051	        [NMX$ENT_mod] :
;	  1052	            ENTLEN = NMXDB [NMX_MODULES];
;	  1053	        [inrange, outrange] :
;	  1054	            return 0;
;	  1055	        tes;
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  38
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (12)

;	  1056	
;	  1057	    MAP$ (.ENTLEN [0]);
;	  1058	    ENTLEN = ENTLEN [1];	%(to force auto-increment)%
;	  1059	    ENTADR = .ENTLEN [0];
;	  1060	    ENTLEN = ENTLEN [1];	%(to force auto-increment)%
;	  1061	    if .ENTADR eqla 0 then return 0;
;	  1062	    ENTCNT = .ENTLEN [0];
;	  1063	    ENTLEN = ENTLEN [1];	%(to force auto-increment)%
;	  1064	    if .ENTCNT eql 0 then return 0;
;	  1065	    ENTLEN = .ENTLEN [0];
;	  1066	!
;	  1067	! Search through Entity BLOCKs looking for a matching one.
;	  1068	!
;	  1069	    do
;	  1070		begin
;	  1071	
;	  1072	        if ch$eql (.ENTADR [GENERAL_NAME_LENGTH] + 1,
;	  1073	                   byt$ptr (ENTADR [GENERAL_NAME]),
;	  1074	                   .ENTADR [GENERAL_NAME_LENGTH] + 1,
;	  1075	                   .ENTID_PTR)
;	  1076	        then return .ENTADR;
;	  1077	
;	  1078		ENTADR = .ENTADR + .ENTLEN;
;	  1079		end
;	  1080	    while (ENTCNT = .ENTCNT - 1) neq 0;
;	  1081	
;	  1082	    return 0
;	  1083	    end;					!of NMX$MAP_ENTITY_ID_TO_DB


						.SBTTL	NM.ENT
000000	004167  000000G			NM.ENT::JSR	R1,$SAVE4			;					1004
000004	016702  000002G				MOV	.CRDAT+2,R2			;					1035
000010	005300 					DEC	R0				;					1045
000012	020027  000004 				CMP	R0,#4
000016	101044 					BHI	8$
000020	006300 					ASL	R0
000022	066007  000116'				ADD	P.AAH(R0),PC			; Case dispatch
000026	000440 				1$:	BR	8$				;					1054
000030	062702  000012 			2$:	ADD	#12,R2				;					1048
000034	000405 					BR	5$				;					1045
000036	062702  000022 			3$:	ADD	#22,R2				;					1050
000042	000402 					BR	5$				;					1045
000044	062702  000032 			4$:	ADD	#32,R2				;					1052
000050	012267  000000G			5$:	MOV	(R2)+,KISAR6			; ENTLEN,*				1057
000054	012204 					MOV	(R2)+,R4			; ENTLEN,ENTADR				1059
000056	001424 					BEQ	8$				;					1061
000060	012203 					MOV	(R2)+,R3			; ENTLEN,ENTCNT				1062
000062	001422 					BEQ	8$				;					1064
000064	011202 					MOV	(R2),R2				; ENTLEN,ENTLEN				1065
000066	111400 				6$:	MOVB	(R4),R0				; ENTADR,*				1072
000070	005200 					INC	R0
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  39
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (12)

000072	010046 					MOV	R0,-(SP)			;					1075
000074	010446 					MOV	R4,-(SP)			; ENTADR,*
000076	010046 					MOV	R0,-(SP)
000100	010146 					MOV	R1,-(SP)			; ENTID.PTR,*
000102	005046 					CLR	-(SP)
000104	004767  000000G				JSR	PC,BL$EQL
000110	062706  000012 				ADD	#12,SP
000114	006000 					ROR	R0
000116	103002 					BCC	7$
000120	010400 					MOV	R4,R0				; ENTADR,*				1076
000122	000207 					RTS	PC
000124	060204 				7$:	ADD	R2,R4				; ENTLEN,ENTADR				1078
000126	077321 					SOB	R3,6$				; ENTCNT,*				1080
000130	005000 				8$:	CLR	R0				;					1004
000132	000207 					RTS	PC
; Routine Size:  46 words,	Routine Base:  $CODE$ + 2326
; Maximum stack depth per invocation:  11 words


000116						.PSECT	$PLIT$,  RO ,  D  

					P.AAH:						; CASE Table for NM.ENT+0022		1045
000116	000102 					.WORD	102				; [8$]
000120	000002 					.WORD	2				; [2$]
000122	000102 					.WORD	102				; [8$]
000124	000010 					.WORD	10				; [3$]
000126	000016 					.WORD	16				; [4$]



;	  1084	
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  40
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (13)

;	  1085	global routine NMX$MAP_NMXID_TO_DB (NMXID) : NMX$LKG_NMXID =
;	  1086	
;	  1087	!++
;	  1088	! FUNCTIONAL DESCRIPTION:
;	  1089	!
;	  1090	!    This routine checks for an existing entity data base
;	  1091	!
;	  1092	! FORMAL PARAMETERS:
;	  1093	!
;	  1094	!    .NMXID - A NMX id word
;	  1095	!
;	  1096	! IMPLICIT INPUTS:
;	  1097	!
;	  1098	!	NMXDB items pointing to database entries
;	  1099	!
;	  1100	! IMPLICIT OUTPUTS:
;	  1101	!
;	  1102	!       NMXDB items created
;	  1103	!
;	  1104	! ROUTINE VALUE:
;	  1105	!
;	  1106	!	0 = No such entity
;	  1107	!	adr = Data base found
;	  1108	!
;	  1109	! SIDE EFFECTS:
;	  1110	!
;	  1111	!	None
;	  1112	!--
;	  1113	
;	  1114	    begin
;	  1115	
;	  1116	    bind
;	  1117		NMXDB = .MCB$GAW_PROCESS_DATA_BASE [1] : NMXDB_BLOCK;
;	  1118	
;	  1119	    local
;	  1120		ENTBLK : ref NMX_GENERAL_BLOCK;
;	  1121	
;	  1122	    case .NMXID <8, 8> from NMX$ENT_lo to NMX$ENT_hi of
;	  1123		set
;	  1124		[NMX$ENT_lin] : ENTBLK = NMXDB [NMX_LINES];
;	  1125		[NMX$ENT_ckt] : ENTBLK = NMXDB [NMX_CIRCUITS];
;	  1126		[NMX$ENT_mod] : ENTBLK = NMXDB [NMX_MODULES];
;	  1127		[inrange, outrange] :
;	  1128		    return 0;
;	  1129		tes;
;	  1130	
;	  1131	    begin
;	  1132	
;	  1133	    map
;	  1134		ENTBLK : ref NMX_ENTITY_BLOCK;
;	  1135	
;	  1136	    if .NMXID<0, 8, 0> gequ .ENTBLK [NMX_ENTITY_BLOCK_ENTRIES]
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  41
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (13)

;	  1137	    then
;	  1138		return 0;
;	  1139	
;	  1140	    MAP$ (.ENTBLK [NMX_ENTITY_BLOCK_BIAS]);
;	  1141	    ENTBLK = .ENTBLK [NMX_ENTITY_BLOCK_ADDRESS] +
;	  1142		.NMXID<0, 8, 0>*.ENTBLK [NMX_ENTITY_BLOCK_LENGTH];
;	  1143	    end;
;	  1144	
;	  1145	    if .ENTBLK [GENERAL_NAME_LENGTH] eqlu 0
;	  1146	    then return 0;
;	  1147	
;	  1148	    if (.ENTBLK [GENERAL_ID] nequ .NMXID) then return 0;
;	  1149	
;	  1150	    return .ENTBLK
;	  1151	    end;			    ! of NMX$MAP_NMXID_TO_DB


						.SBTTL	NM.NMX
002462						.PSECT	$CODE$,  RO 

000000	004167  000000G			NM.NMX::JSR	R1,$SAVE2			;					1085
000004	010102 					MOV	R1,R2				; *,NMXID
000006	016700  000002G				MOV	.CRDAT+2,R0			;					1114
000012	105001 					CLRB	R1				;					1122
000014	000301 					SWAB	R1
000016	005301 					DEC	R1
000020	020127  000004 				CMP	R1,#4
000024	101037 					BHI	6$
000026	006301 					ASL	R1
000030	066107  000130'				ADD	P.AAI(R1),PC			; Case dispatch
000034	000433 				1$:	BR	6$				;					1128
000036	062700  000012 			2$:	ADD	#12,R0				;					1124
000042	000405 					BR	5$				;					1122
000044	062700  000022 			3$:	ADD	#22,R0				;					1125
000050	000402 					BR	5$				;					1122
000052	062700  000032 			4$:	ADD	#32,R0				;					1126
000056	005001 				5$:	CLR	R1				;					1136
000060	150201 					BISB	R2,R1				; NMXID,*
000062	020160  000004 				CMP	R1,4(R0)			; *,*(ENTBLK)
000066	103016 					BHIS	6$				;					1138
000070	011067  000000G				MOV	(R0),KISAR6			; ENTBLK,*				1140
000074	005001 					CLR	R1				;					1142
000076	150201 					BISB	R2,R1				; NMXID,*
000100	070160  000006 				MUL	6(R0),R1			; *(ENTBLK),*
000104	066001  000002 				ADD	2(R0),R1			; *(ENTBLK),*				1141
000110	010100 					MOV	R1,R0				; *,ENTBLK
000112	105710 					TSTB	(R0)				; ENTBLK				1145
000114	001403 					BEQ	6$				;					1146
000116	026002  000022 				CMP	22(R0),R2			; *(ENTBLK),NMXID			1148
000122	001401 					BEQ	7$
000124	005000 				6$:	CLR	R0				;					1085
000126	000207 				7$:	RTS	PC
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  42
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (13)

; Routine Size:  44 words,	Routine Base:  $CODE$ + 2462
; Maximum stack depth per invocation:  4 words


000130						.PSECT	$PLIT$,  RO ,  D  

					P.AAI:						; CASE Table for NM.NMX+0030		1122
000130	000070 					.WORD	70				; [6$]
000132	000002 					.WORD	2				; [2$]
000134	000070 					.WORD	70				; [6$]
000136	000010 					.WORD	10				; [3$]
000140	000016 					.WORD	16				; [4$]



;	  1152	
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  43
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (14)

;	  1153	global routine NMX$RETURN_NMX_CCB (CCB) : NMX$LKG_CCB novalue =
;	  1154	
;	  1155	!++
;	  1156	! FUNCTIONAL DESCRIPTION:
;	  1157	!
;	  1158	!    Return the given CCB and NMPAR DSR.
;	  1159	!
;	  1160	! FORMAL PARAMETERS:
;	  1161	!
;	  1162	!    CCB - Address of CCB to be returned
;	  1163	!
;	  1164	! IMPLICIT INPUTS:
;	  1165	!
;	  1166	!	None
;	  1167	!
;	  1168	! IMPLICIT OUTPUTS:
;	  1169	!
;	  1170	!       None
;	  1171	!
;	  1172	! ROUTINE VALUE:
;	  1173	!
;	  1174	!       None
;	  1175	!
;	  1176	! SIDE EFFECTS:
;	  1177	!
;	  1178	!	None
;	  1179	!--
;	  1180	
;	  1181	    begin
;	  1182	
;	  1183	    map
;	  1184		CCB : ref NMX_CCB_BLOCK;
;	  1185	
;	  1186	    begin
;	  1187	
;	  1188	    local
;	  1189		NMPAR;
;	  1190	
;	  1191	    if (NMPAR = .CCB [C_NM_NMPAR]) neqa 0
;	  1192	    then
;	  1193		$MCB_RETURN_DSR (NMX_NMPAR_ALLOCATION, .NMPAR);
;	  1194	
;	  1195	    end;
;	  1196	    begin
;	  1197	
;	  1198	    local
;	  1199	        AMOUNT,
;	  1200	        ERROR_CODE,
;	  1201		IOP : ref NMX_IOP_BLOCK;
;	  1202	
;	  1203	    if (IOP = .CCB [C_NMX_IOP]) neqa 0
;	  1204	    then
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  44
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (14)

;	  1205		begin
;	  1206	        ERROR_CODE = .CCB [C_STS];
;	  1207		AMOUNT = .CCB [C_NMX_CNT];
;	  1208		end;
;	  1209	
;	  1210	    $MCB_RETURN_CCB (.CCB);
;	  1211	
;	  1212	    if .IOP neqa 0
;	  1213	    then
;	  1214	        $NMX_RETURN_RSX_IOP (.IOP, .ERROR_CODE, .AMOUNT);
;	  1215	
;	  1216	    end;
;	  1217	    end;					! of NMX$RETURN_NMX_CCB


						.GLOBL	$DSRRT, $CCBRT


						.SBTTL	NX.RTC
002612						.PSECT	$CODE$,  RO 

000000	004167  000000G			NX.RTC::JSR	R1,$SAVE5			;					1153
000004	016400  000026 				MOV	26(R4),R0			; *(CCB),NMPAR				1191
000010	001404 					BEQ	1$
000012	012701  000026 				MOV	#26,R1				;					1193
000016	004767  000000G				JSR	PC,$DSRRT
000022	016403  000034 			1$:	MOV	34(R4),R3			; *(CCB),IOP				1203
000026	001404 					BEQ	2$
000030	016400  000014 				MOV	14(R4),R0			; *(CCB),ERROR.CODE			1206
000034	016401  000030 				MOV	30(R4),R1			; *(CCB),AMOUNT				1207
000040	004767  000000G			2$:	JSR	PC,$CCBRT			;					1210
000044	005703 					TST	R3				; IOP					1212
000046	001406 					BEQ	3$
000050	004767  000000G				JSR	PC,$RSX				;					1214
000054	004767  000000G				JSR	PC,$IOFIN
000060	004767  000000G				JSR	PC,$MCB
000064	000207 				3$:	RTS	PC				;					1153
; Routine Size:  27 words,	Routine Base:  $CODE$ + 2612
; Maximum stack depth per invocation:  7 words


;	  1218	
;	  1219	end
;	  1220	
;	  1221	eludom



;					OTS external references
						.GLOBL	$SAVE5, $SAVE4, $SAVE2, $STOP
						.GLOBL	BL$FCH, BL$EQL, BL$MOV
NMX								25-Jan-1983 09:24:31	TOPS-20 Bliss-16 3(552)		    Page  45
X01270								 3-Jan-1983 18:43:06	NETPKG:<NMX>NMX.BLI.4 (14)


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




;				LIBRARY STATISTICS
;
;					     -------- Symbols --------    Blocks
;	File				     Total    Loaded   Percent      Read
;
;  NETPKG:<MCB>XPORTX.L16.15		       599        33         5         0
;  NETPKG:<MCB>MCBLIB.L16.15		       372        80        21         0
;  NETPKG:<NMX>NMXPAR.L16.30		       968       266        27         0
;  NETPKG:<MCB>NMXLIB.L16.13		       200        37        18         0





;	  1222	! Local Modes:
;	  1223	! Comment Column:36
;	  1224	! Comment Start:!
;	  1225	! Mode:BLISS
;	  1226	! Auto Save Mode:2
;	  1227	! End:
; Size:		736 code + 65 data words
; Run Time:	   00:19.3
; Elapsed Time:	   01:12.4
; Memory Used:	69 pages
; Compilation Complete
ACHKB$				 337
AMOUNT				1198	1206#	1213
BADCCB				 193	 478	 566*
BADREQ				 224*	 369
BYT$PTR				 971	 985	1072
CCB				 359	 374	 376	 384	 392	 394	 439	 469	 472	 479	 522	 557
				 562	 566	 600	 779	 781	 784#	 785#	 786#	 787#	 788#	 789	 883
				 890	 916#	 917#	 919#	 922#	 923#	 924#	 925#	 929#	 934#	 957	 991
				 997#	 998#	 999#	1000#	1001	1152	1183	1190	1202	1205	1206	1209
CKTCCP				 225	 476
CKTREQ				 226	 367
C_ADDR				 785	 923
C_BIAS				 784	 922
C_CNT				 786	 917	 924
C_DLX_EID			 124+#
C_DLX_IOP			 127+#
C_DLX_LUNBLK			 128+#
C_DLX_STATE			 126+#
C_FIELDS			 384	 600	 779
C_FNC				 999
C_LIX				 123+
C_MOD				1000
C_NMX_CNT			 997	1206
C_NMX_IOP			 919	1202
C_NMX_STATE			 998
C_NMX_TYPE			 925
C_NM_ENTITY			 472	 957
C_NM_FIELDS			 134+
C_NM_FUNC			 991
C_NM_NMPAR			 916	1190
C_NM_QUAL			 929	 934
C_PRM1				 125+	 787
C_PRM5				 788
C_STS				1205
DISPATCH			 363*	 376	 388*	 394
DISPATCH$			 514	 559
DLXAST				 227	 255
DLXCCP				 228	 560
DLXCON				 229	 401
DLXCTL				 230	 257
DLXDSC				 231	 403
DLXNM				 190	 439*	 561
DLXRCP				 232	 259
DLXRCV				 233	 405
DLXXCP				 234	 258
DLXXMT				 235	 407
DLX_CCB_BLOCK			 133+#
DLX_ENTER_MAINT			 140+#
DLX_LUN_ALLOCATION		 167+#
DLX_LUN_BLOCK			 170+#	 639
DLX_LUN_FIELDS			 151+#	 171+
DLX_LUN_SIZE			 166+#	 171+
DLX_OVERLAY_CCB_FIELDS		 121+#	 134+
DLX_RELEASE_ENTITY		 142+#
DLX_REQUEST_ENTITY		 139+#
DLX_START_OWNER			 143+#	 147+
DLX_STATE_HIGH			 147+#
DLX_STATE_LOW			 146+#
DLX_STOP_OWNER			 138+#
DLX_STOP_PROTOCOL		 141+#
DLX_TRANSMIT			 137+#	 146+
DSPCCP				 192	 260	 522*
DSPTIM				 191	 256	 481*
ENABLE_VECTOR			 705	 767#	 768#	 769#	 770
ENTADR				1040	1058#	1060	1071	1072	1073	1075	1077#
ENTBLK				1119	1123#	1124#	1125#	1133	1135	1139	1140#	1141	1144	1147	1149
ENTCNT				1041	1061#	1063	1079#
ENTID_PTR			1003	1074
ENTLEN				1042	1047#	1049#	1051#	1056	1057#	1058	1059#	1061	1062#	1064#	1077
EQLU				1144
ERROR_CODE			1199	1205#	1213
EVENT_QUEUE			 789
EVPRLB				 236	 399
EVPWAT				 237	 388
EVTDB				 776#	 789
FCM				 481	 515	 522	 559	 566
FC_AST				 255
FC_CCP				 255	 260
FC_CTL				 257	 999
FC_RCP				 259
FC_TIM				 256
FC_XCP				 258
FD_CTL				 560
FD_TIM				 516
FLD_D				 313	 314	 317	 318
FLD_S				 313	 314	 317	 318
FM_LTM				 518
FM_NM				 561	1000
FM_PIN				 517
GENERAL_ID			1147
GENERAL_NAME			1072
GENERAL_NAME_LENGTH		1071	1073	1144
GET_PIX				 196	 716	 717	 718	 719	 807*
HDR_FIELDS			 216
ID_ADDRESS			 950	 954	 964	 966	 971	 980	 985
ID_BIAS				 951	 954	 955
IE$TMO				 661
IOP				 266	 301	 318#	 328	 331#	 332#	 337	 340	 344	 353	 363	 374
				 392	 399	 401	 403	 405	 407	 409	 648	 653#	 658	 660	 661
				 663	 664#	 845	 879	 893	 900	 919	 922	 923	 924	 925	 931
				 936	 945	 954	1200	1202#	1211	1213
IOP_CON				 400
IOP_CTL				 355
IOP_DSC				 402
IOP_MOVE			 313#	 322	 323	 324	 325	 326
IOP_RCV				 404
IOP_RLB				 398
IOP_WAT				 380
IOP_XMT				 406
I_FCN				 353
I_NMX_ADDR			 331	 344	 923
I_NMX_BIAS			 332	 344	 922
I_NMX_CNT			 326	 924
I_NMX_ENTITY			 324	 658	 663	 664	 945	 954
I_NMX_QUALIFIER			 323	 931	 936
I_NMX_TIME			 322
I_NMX_TYPE			 325	 925
I_NM_ENTITY			 363
I_PRM1				 337	 344
I_PRM2				 326	 328	 337
I_PRM3				 325
I_PRM4				 324
I_PRM5				 323
I_PRM6				 322
LEN				 747	 749#	 751	 753#	 755#	 757	 758
LINCCP				 238	 477
LINREQ				 239	 368
LLC_DISPATCH			 255#
LUNBLK				 639	 642#	 644#	 651
LUN_CLOSING			 175+#
LUN_ENTITY_ADDRESS		 154+#
LUN_ENTITY_BIAS			 155+#
LUN_ERROR_CODE			 161+#
LUN_ID				 157+#
LUN_LINK			 153+#	 644
LUN_OPENED			 176+#
LUN_OPENING			 174+#
LUN_RCPS			 159+#
LUN_RCVS			 158+#	 651
LUN_RCV_ERROR			 162+#
LUN_STATE			 156+#
LUN_XMTS			 160+#
MAP$				 736	 955	1056	1139
MCB$GAW_PROCESS_DATA_BASE	 265	1037	1116
MCB$K_VERSION			 115+
MCB_DB				 194	 195	 520	 606#	 672#
MCB_DB_CCB_MOD			 192	 193	 227	 230	 232	 234	 522#	 566#
MCB_DB_CCB			 190	 224	 225	 226	 228	 237	 238	 239	 240	 241	 242	 243
				 370	 388	 439#	 472	 563
MCB_DB_MOD			 191	 481#
MODCCP				 240	 474
MODREQ				 241	 365
NAME				 254#	 807	 842
NAME_ITSELF			 971
NAME_LENGTH			 966	 968	 970
NMLMCB				 796#	 801
NMPAR				 884	 897	 905	 906#	 907#	 908#	 909#	 916	 937	 938	 962	 978
				 993#	1188	1190#	1192
NMX				   1#	 254	 711#	 716
NMX$ENT_CKT			 367	 476	1048	1124
NMX$ENT_HI			 363	 472	1044	1121
NMX$ENT_LIN			 368	 477	1046	1123
NMX$ENT_LO			 363	 472	1044	1121
NMX$ENT_MOD			 365	 474	1050	1125
NMX$ENT_NOD			 366	 475	 957
NMX$FNC_RET			 991
NMX$GET_NMX_CCB			 197	 845*
NMX$LKG_CCB			 200	1152#
NMX$LKG_DB_IOP			 197	 845#
NMX$LKG_NMXID			 199	1084#
NMX$LKG_TYP_ENT			 198	1003#
NMX$LKG_UCB_IOP			 229	 231	 233	 235	 236
NMX$MAP_ENTITY_ID_TO_DB		 198	1003*
NMX$MAP_NMXID_TO_DB		 199	1084*
NMX$RETURN_NMX_CCB		 200	1152*
NMX$_ICP			 603
NMXDB_BLOCK			 360	 385	 470	 512	 556	 599	 636	 702	 880	1037	1116
NMXDB				 360	 372	 376	 378	 385	 390	 394	 396	 439	 470	 479	 481
				 512	 519	 522	 556	 562	 566	 599	 606	 636	 641#	 642	 672
				 702	 716#	 717#	 718#	 719#	 740#	 757#	 758	 768	 769	 772#	 776
				 785	 786	 845	 880	1037#	1047	1049	1051	1116#	1123	1124	1125
NMXID				1084	1121	1135	1141	1147
NMX_BASE			 376	 378	 394	 396	 479	 519	 562	 769
NMX_CCB_BLOCK			 359	 469	 557	 883	1183
NMX_CIRCUITS			1049	1124
NMX_ENTITY_BLOCK		1133
NMX_ENTITY_BLOCK_ADDRESS	1140
NMX_ENTITY_BLOCK_BIAS		1139
NMX_ENTITY_BLOCK_ENTRIES	1135
NMX_ENTITY_BLOCK_LENGTH		1141
NMX_EVENT_BLOCK			 776
NMX_EVENT_QUEUE			 776
NMX_EXECUTOR_NAME		 758
NMX_EXECUTOR_NAME_LENGTH	 757
NMX_EXECUTOR_NUMBER		 740
NMX_GENERAL_BLOCK		1040	1119
NMX_IOP_BLOCK			 301	 648	 879	1200
NMX_LINES			1047	1123
NMX_LKG_NAM			 185#	 196	 807#
NMX_LUN_QUEUE			 642
NMX_MODULES			1051	1125
NMX_NMLINI_ADDR			 785
NMX_NMLINI_CNT			 786
NMX_NMPAR_ALLOCATION		 897	1192
NMX_NMPAR_AX0_ADDR		 938
NMX_NMPAR_AX0_BIAS		 937
NMX_NMPAR_BLOCK			 884
NMX_NMPAR_ENTITY		 962	 978
NMX_NMPAR_RETURN_CNT		 993
NMX_NMX_PIX			 716	 768
NMX_NSP_PIX			 718
NMX_SC_PIX			 717
NMX_TIMER_COUNT			 641	 772
NMX_XPT_PIX			 719
NODCCP				 242	 475
NODE_ADDRESS			 964
NODE_ENTITY			 962#	 964#	 966#	 968	 970	 971
NODE_ENTITY_ID			 962
NODREQ				 243	 366
NSP				 713#	 718
OTHER_ENTITY			 978#	 980#	 982	 984	 985
OTHER_ENTITY_ID			 978
OTHER_ITSELF			 985
OTHER_LENGTH			 980	 982	 984
PASSED_NAME			 734#	 742	 749	 755	 758
PASSED_NUMBER			 733#	 738	 740
PIX				 839	 841#	 842	 843
QIODSP				 188	 208	 266*
QIONOP				 189	 209	 210	 211	 413*
RAD50				 711	 712	 713	 714
RCVQ				 651#	 653	 660
RELOC$				 344
RSX_DISPATCH			 261#
RSX_UCB				 189	 413#
RSX_UCB_SCB_IOP			 188	 266#
SC				 712#	 717
SCB				 266	 303
SCB_FIELDS			 303
ST$INI				 998
TABLE$				 255	 516	 560
TCB				 799	 801	 803
TIMLTM				 194	 518	 606*
TIMPIN				 195	 517	 672*
TRUE				 656
TYPE				1003	1044
UCB				 266	 302	 340	 372	 390	 399	 401	 403	 405	 407	 409	 413
UCB_FIELDS			 302
XPO$K_VERSION			 114+
XPT				 714#	 719
$ADDRESS			 126+	 127+	 128+	 153+	 154+	 155+
$BYTE				 156+	 157+
$CONTINUE			 129+
$DISTINCT			 137+	 138+	 139+	 140+	 141+	 142+	 143+	 174+	 175+	 176+
$DSPCR				 250*	 255	 516
$FIELD				 120+	 150+
$FIELD_SET_SIZE			 166+
$FIELD_SET_UNITS		 167+
$HEADR				 216
$INTEGER			 124+	 160+	 161+	 162+
$LITERAL			 136+	 173+
$MCB_ENABLE_LONG_TIMER		 771
$MCB_EXCEPTION			 770
$MCB_GET_CCB			 781	 890
$MCB_GET_DSR			 897
$MCB_GET_PROCESS_HANDLE		 842
$MCB_MCB_TO_RSX			 378	 396
$MCB_PROCESS			 253
$MCB_QUEUE_CCB			 789
$MCB_RETURN_CCB			1209
$MCB_RETURN_DSR			1192
$MCB_RSX_TO_MCB			 372	 390
$NM$ERR_MPE			 340
$NM$ERR_REE			 893	 900
$NM$ERR_UFO			 409
$NMEVT				 708*	 767
$NMTBL				 207#	 261
$NMX_DEQUEUE			 660
$NMX_GET_NMX_CCB		 374	 392
$NMX_RETURN_RSX_IOP		 661	 893	 900	1213
$OVERLAY			 123+	 125+
$RSX_CONVERT_TO_BIAS_ADDRESS	 935	 953
$RSX_FINISH_IOP			 340	 409
$RSX_GET_TCB			 801
$RSX_REQUEST_TASK		 803
$SUB_BLOCK			 158+	 159+
$SYSIZ				 726	 728	 736
$TTNS				 217