Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/nml/nmlvdb.lst
There are no other files named nmlvdb.lst in the archive.
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page   1
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0001	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 8-Dec-82 11:45:13, Edit by BRANDT
;	  0002	!
;	  0003	!   Ident 89.
;	  0004	!     Change MATCH_NODE_ID so that it checks only for matching addresses
;	  0005	!     rather than matching addresses and names.
;	  0006	!
;	  0007	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 13-Oct-82 10:54:23, Edit by BRANDT
;	  0008	!
;	  0009	!   Ident 88.
;	  0010	!     For CLEAR functions in NML$VDB, modify the code for returning
;	  0011	!     value.  Before this edit, the right conditions would return the
;	  0012	!     value of of an uninitialized local variable (NMX).
;	  0013	!
;	  0014	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 12-Oct-82 00:45:32, Edit by BRANDT
;	  0015	!
;	  0016	!   Ident 87.
;	  0017	!     In VDB_CHANGE, when setting a SERVICE CIRCUIT parameter for a
;	  0018	!     node, don't fail with a CWS error if the circuit is already
;	  0019	!     assigned to that node.
;	  0020	!
;	  0021	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 11-Oct-82 12:23:14, Edit by BRANDT
;	  0022	!
;	  0023	!   Ident 86.
;	  0024	!     In NML$VDB add additional code to return a CWS error for CLEAR
;	  0025	!     ALL, CLEAR NAME, and CLEAR ADDRESS operations for the executor
;	  0026	!     node.
;	  0027	!
;	  0028	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 28-Sep-82 13:43:41, Edit by BRANDT
;	  0029	!
;	  0030	!   Ident 85.
;	  0031	!     In NML$VDB add additional code to return ERR_DETAIL for errors
;	  0032	!     CWS and IID.
;	  0033	!
;	  0034	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 28-Sep-82 12:39:14, Edit by BRANDT
;	  0035	!
;	  0036	!   Ident 84.
;	  0037	!     In ENTITY_IS_VALID, for NODE entities, check for OCM error if MCB
;	  0038	!     and REE error if TOPS20.
;	  0039	!
;	  0040	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.2 28-Sep-82 11:13:07, Edit by PECKHAM
;	  0041	!
;	  0042	!   Ident 83.
;	  0043	!     Fix X_NOD_NDB dot bugs in NML$VDB_INITIALIZE for setting
;	  0044	!     EXECUTOR HOST and IDENTIFICATION parameters (introduced by #76).
;	  0045	!     Fix NML$SET_VDB_PARAMETER not to exclude node entity changes.
;	  0046	!
;	  0047	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 27-Sep-82 15:38:41, Edit by BRANDT
;	  0048	!
;	  0049	!   Ident 82.
;	  0050	!     In ENTITY_IS_VALID, for NODE entities, check for OCM error rather
;	  0051	!     than REE error.
;	  0052	!
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page   2
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0053	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 23-Sep-82 9:38:14, Edit by BRANDT
;	  0054	!
;	  0055	!   Ident 81.
;	  0056	!     In NML$VDB add additional argument ERR_DETAIL for returning the
;	  0057	!     error detail field for response messages signalling errors.
;	  0058	!
;	  0059	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 20-Sep-82 16:49:32, Edit by BRANDT
;	  0060	!
;	  0061	!   Ident 80.
;	  0062	!     More for edit 78.  Change the way ENTITY_IS_VALID checks for a
;	  0063	!     NODE entity since a valid LOOP node will have a zero address.
;	  0064	!     Also, in NML$VDB, for SET functions, add a check to see if the
;	  0065	!     NODE parameters specified for either SERVICE CIRCUIT or CIRCUIT
;	  0066	!     are valid entities.
;	  0067	!
;	  0068	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 20-Sep-82 10:29:57, Edit by BRANDT
;	  0069	!
;	  0070	!   Ident 79.
;	  0071	!     In NML$VDB, for SET functions, add a check to see if the parameter
;	  0072	!     is applicable for executor nodes only.  If it
;	  0073	!     turns out that the parameter is a lower layer parameter, $NML$SET
;	  0074	!     is called rather than VDB_CHANGE.  (VDB_CHANGE calls APPLICABLE,
;	  0075	!     $NML$SET does not.)  So, if an executor node only param (e.g.,
;	  0076	!     DELAY FACTOR) that is a lower layer param is specified for an
;	  0077	!     entity that is not the executor, we miss the call to APPLICABLE,
;	  0078	!     and the NTMAN JSYS does the wrong thing--sets the parameter for
;	  0079	!     the executor.
;	  0080	!
;	  0081	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 20-Sep-82 9:43:27, Edit by BRANDT
;	  0082	!
;	  0083	!   Ident 78.
;	  0084	!     In NML$VDB, for SHOW functions, immediately return the error code
;	  0085	!     from VDB_READ for REE as well as URC errors.  Since VDB_READ
;	  0086	!     calls ENTITY_IS_VALID, the URC error is valid for NML as well as
;	  0087	!     lower layers.  Without this fix, a SHOW NODE X with the DN20 as
;	  0088	!     EXECUTOR will succeed even though X is invalid.
;	  0089	!
;	  0090	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 17-Sep-82 13:34:43, Edit by BRANDT
;	  0091	!
;	  0092	!   Ident 77.
;	  0093	!     In REMOVE_PARAMETER, fix code that loops over PVB so that CLEAR
;	  0094	!     ALL works.  As loop was coded, some parameters were deleted more
;	  0095	!     than once since after a deletion, the PVB is compacted but we
;	  0096	!     always advanced on to the next entry.  Eventually, we reach the
;	  0097	!     "old copies" of entries that have already bubbled up the vector.
;	  0098	!     This caused problems when we tried to re-release any dynamic
;	  0099	!     memory associated with the entry.
;	  0100	!
;	  0101	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 15-Sep-82 13:43:34, Edit by BRANDT
;	  0102	!
;	  0103	!   Ident 76.
;	  0104	!     Move the executor node's EDB and its associated parameter vector
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page   3
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0105	!     from OWN storage to dynamic storage.  Then when a command is given
;	  0106	!     to modify an executor parameter, we don't die trying to deallocate
;	  0107	!     a chunk of permanent data.
;	  0108	!
;	  0109	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.2 13-Sep-82 09:59:03, Edit by PECKHAM
;	  0110	!
;	  0111	! Ident 75.
;	  0112	!  Correct input to INSERT_PARAMETER for HOST (bug introduced by #73).
;	  0113	!
;	  0114	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 2-Sep-82 13:43:34, Edit by BRANDT
;	  0115	!
;	  0116	!   Ident 74.
;	  0117	!     Special case SET NODE foo ADDRESS so it returns CWS error
;	  0118	!     if foo is the EXECUTOR.
;	  0119	!
;	  0120	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.7  2-Sep-82 10:19:42, Edit by PECKHAM
;	  0121	!
;	  0122	! Ident 73.
;	  0123	!  Remove the default EXECUTOR IDENTIFICATION for NMLMCB
;	  0124	!   (it will be set by NMLEVT).
;	  0125	!  Move PRM_BFR from NML$SET_VDB_PARAMETER to module
;	  0126	!   (for access by NML$VDB_INITIALIZE).
;	  0127	!  Make NML$VDB_INITIALIZE get EXECUTOR HOST from SC for NMLMCB.
;	  0128	!  Fix NML$VDB to set EXECUTOR HOST to NMX for NMLMCB.
;	  0129	!
;	  0130	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.2 29-Jun-82 15:31:35, Edit by PECKHAM
;	  0131	!
;	  0132	! Ident 72.
;	  0133	!  Fix duplicate executor node in returned node list from NML$VDB.
;	  0134	!
;	  0135	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 22-Jun-82 17:34:43, Edit by BRANDT
;	  0136	!
;	  0137	!   Ident 71.
;	  0138	!     Move the check in READ_PARAMETER so that a buffer length of at
;	  0139	!     least 3 is quaranteed before calling READ_PARAMETER_DATA.
;	  0140	!     The current check is useless once we get into the loop.
;	  0141	!
;	  0142	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 9-Jun-82 14:34:43, Edit by BRANDT
;	  0143	!
;	  0144	!   Ident 70.
;	  0145	!     In READ_PARAMETER_DATA always check the current available space
;	  0146	!     remaining in the buffer before copying in any data.
;	  0147	!     This was not done for multiple field parameters, and so buffer
;	  0148	!     overflow occurred.  Also, in READ_PARAMETER, check for an initial
;	  0149	!     availability of at least 3 bytes, since each entry requires a 3
;	  0150	!     byte header.
;	  0151	!
;	  0152	!
;	  0153	! Ident 69.
;	  0154	! Remove TOPS20 accomodation for NICE$_IID.
;	  0155	! Do not change parameters in INSERT_PARAMETER if they are read-only.
;	  0156	! Add PRIVLEDGED parameter to INSERT_PARAMETER to allow read-only override.
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page   4
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0157	! Conditionalize filter handling.
;	  0158	!
;	  0159	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.5 27-May-82 10:20:08, Edit by PECKHAM
;	  0160	!
;	  0161	! Ident 68.
;	  0162	! Incorrect assumptions were being made about the executor entry in
;	  0163	! the returned node list from $NML$RETURN in NML$VDB.
;	  0164	! Fix it so the returned length is correct.
;	  0165	! Do not play with EXECUTOR for return LOOP NODES.
;	  0166	! Accomodate TOPS20's return of NICE$_IID to loop nodes by changing
;	  0167	! that return status to NICE$_URC.
;	  0168	!
;	  0169	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.2 24-May-82 09:35:07, Edit by PECKHAM
;	  0170	!
;	  0171	! Ident 67.
;	  0172	! Fix NML$VDB_INITIALIZE to dynamically set the IDENTIFICATION
;	  0173	! instead of hard-coding it.
;	  0174	! This is to keep from crashing when someone CLEARs it!
;	  0175	!
;	  0176	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.5 20-May-82 14:58:04, Edit by PECKHAM
;	  0177	!
;	  0178	! Ident 66.
;	  0179	! Move the code that disables display of CIRCUIT/LINE STATE
;	  0180	! from READ_PARAMETER_DATA to READ_PARAMETERS.
;	  0181	! Also allow display for the TOPS20 version.
;	  0182	! Optimize code in READ_PARAMETERS.
;	  0183	! Optimize layer choice code in NML$VDB and
;	  0184	! avoid setting state in lower layer for TOPS20.
;	  0185	!
;	  0186	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 14-May-82 10:34:43, Edit by BRANDT
;	  0187	!
;	  0188	!   Ident 65.
;	  0189	!     Have ENTITY_IS_VALID return $TRUE for a node only when there is
;	  0190	!     a non zero address specified in the entity id.
;	  0191	!     At this time, the entity id will be the full id, and if an
;	  0192	!     address is associated with the name, it will be specified.
;	  0193	!
;	  0194	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.6 14-May-82 17:50:16, Edit by PECKHAM
;	  0195	!
;	  0196	! Ident 64.
;	  0197	! Fix TOPS20 'SHO KNO/ACT CIR' to call new routine NMU$DLX_RETURN_CIRCUITS
;	  0198	! to get circuit list.
;	  0199	! Move NMU$DLX_KNOWN_DEVICE synonym to NMUCOM.
;	  0200	! Fix returned NODE lists to have the EXECUTOR node first
;	  0201	! Fix TOPS20 SHOW CIRCUIT to return success if RESULT was URC
;	  0202	! and ENTITY_IS_VALID.  This is so circuits with no data bases get recognized.
;	  0203	!
;	  0204	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 14-May-82 10:34:43, Edit by BRANDT
;	  0205	!
;	  0206	!   Ident 63.
;	  0207	!     Special case the STATE parameter in READ_PARAMETER_DATA and do
;	  0208	!     not return any information from the VDB.  
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page   5
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0209	!     Routine NML$GET_VDB_PARAMETER will still be able to obtain this
;	  0210	!     parameter from the VDB.
;	  0211	!     This fix prevents the SHOW commands from displaying this
;	  0212	!     parameter twice;  once from the VDB and once from the lower layer.
;	  0213	!     However, other NML processes can still access the data from the
;	  0214	!     VDB.
;	  0215	!
;	  0216	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 10-May-82 10:34:43, Edit by BRANDT
;	  0217	!
;	  0218	!   Ident 62.
;	  0219	!     Rework of edit 60.  Have ENTITY_IS_VALID always return TRUE for
;	  0220	!     NODE entities.  This is as it was before.  In routine VDB_READ,
;	  0221	!     don't call ENTITY_IS_VALID if no entry exists in the volatile
;	  0222	!     database.  Have VDB_READ return URC error.  If the entity does
;	  0223	!     exist in a lower layer, the routine that called VDB_READ will
;	  0224	!     discover this and not return the error.  This eliminates special
;	  0225	!     case checking in ENTITY_IS_VALID to see if this function is a
;	  0226	!     READ or SET, since it is legal to do a SET on a node that does not
;	  0227	!     yet exist in the database.
;	  0228	!
;	  0229	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.1 10-May-82 9:44:43, Edit by BRANDT
;	  0230	!
;	  0231	!   Ident 61.
;	  0232	!     Fix ENTITY_IS_VALID so that for NODE entities, it checks the
;	  0233	!     lower layers for the existence of the entity.  As is, it always
;	  0234	!     returns TRUE for NODE entities, and so a SHOW for a non-existent
;	  0235	!     node returns a NICE success code.
;	  0236	!
;	  0237	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.18 7-May-82 13:36:34, Edit by BRANDT
;	  0238	!
;	  0239	!   Ident 60.
;	  0240	!     Fix NML$VDB and READ_PARAMETER so that NICE$_REE gets returned
;	  0241	!     on read functions when the buffer is inadequate.
;	  0242	!
;	  0243	! <PLATUKIS>NMLVDB.BLI.4  6-May-82 14:26:52, Edit by PLATUKIS
;	  0244	!   ident 59.
;	  0245	!   disallow changing of local node name in routine NML$VDB.
;	  0246	!
;	  0247	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.3  6-May-82 09:53:27, Edit by PECKHAM
;	  0248	!
;	  0249	! Ident 58.
;	  0250	! Allow NML$*_VDB_PARAMETER to override set/clear restrictions:
;	  0251	!  Add PRIVLEDGED switch to REMOVE_PARAMETER and REMOVE_QUALIFIED_PARAMETER.
;	  0252	!
;	  0253	! <BRANDT.DEVELOPMENT>NMLVDB.BLI.18 5-May-82 12:36:34, Edit by BRANDT
;	  0254	!
;	  0255	! Ident 57.
;	  0256	! Remove "Loadtest" from executor node identification parameter
;	  0257	!
;	  0258	! <VOBA.NML.DEVELOPMENT>NMLVDB.BLI.18 14-Apr-82 14:36:34, Edit by VOBA
;	  0259	!
;	  0260	! Ident 56.
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page   6
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0261	! Fix REMOVE_PARAMETER to generate optimized code for the MCB.
;	  0262	! Fix it to clear all parameters appropriately, as well.
;	  0263	! Add REMOVE_QUALIFIED_PARAMETER for X25-ACCESS volatile data base.
;	  0264	! Fix bug in $NML$SHOW macro call (missing actual parameter), in routine
;	  0265	! ENTITY_IS_VALID.
;	  0266	!
;	  0267	! <VOBA.NML.DEVELOPMENT>NMLVDB.BLI.88 25-Mar-82 18:12:36, Edit by VOBA
;	  0268	!
;	  0269	! Ident 55.
;	  0270	! Add code to handle MODULE X25-ACCESS volatile data base.
;	  0271	!
;	  0272	! <VOBA.NML.DEVELOPMENT>NMLVDB.BLI.15 10-Mar-82 14:12:00, Edit by VOBA
;	  0273	!
;	  0274	! Ident 54.
;	  0275	! Condition the X.25 code checking the validity of MODULE entity not to
;	  0276	! be included in the source for now (until we have the X.25 gateway in place).
;	  0277	! Fix a number of bugs in the source.
;	  0278	!
;	  0279	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.27  8-Mar-82 02:27:48, Edit by PECKHAM
;	  0280	!
;	  0281	! Ident 53.
;	  0282	! Provide support for lower layers in this central place.
;	  0283	! Hard-code the event filter settings in.
;	  0284	!
;	  0285	! <VOBA.NML.DEVELOPMENT>NMLVDB.BLI.48  5-Mar-82 08:36:52, Edit by VOBA
;	  0286	!
;	  0287	! Ident 52.
;	  0288	! Added code to handle MODULE entities.
;	  0289	!
;	  0290	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.12  2-Mar-82 15:06:25, Edit by PECKHAM
;	  0291	!
;	  0292	! Ident 51.
;	  0293	! Work on entities too numerous to mention.
;	  0294	!
;	  0295	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.9 25-Feb-82 10:57:31, Edit by PECKHAM
;	  0296	!
;	  0297	! Ident 50.
;	  0298	! Add QH_LOGGING_FILTERS data base queue.
;	  0299	! Add global names of data bases for MCBDA.
;	  0300	! Remove restriction on modules from VDB_READ, VDB_CHANGE.
;	  0301	! Change input parameters to READ_FILTERS.
;	  0302	! Remove references to P$ALL by specifying parameter -1 to REMOVE_PARAMETER
;	  0303	! to remove all parameters.
;	  0304	! Fix REMOVE_PARAMETERS to not RELEASE_PVB until all parameter memory
;	  0305	! is released
;	  0306	! Set FIND_DB_FOR_ENTITY to only create data bases for NODE, LINE and CIRCUIT.
;	  0307	! Make GET_VDB_ENTITY handle the MODULE queue.
;	  0308	! General handling of NMU$MEMORY_GET failures.
;	  0309	! Add routine values to GET_PVB, EXPAND_PVB, SET_PARAMETER_DATA,
;	  0310	! SET_IMAGE_FIELD.
;	  0311	!
;	  0312	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.3 23-Feb-82 13:48:42, Edit by PECKHAM
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page   7
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0313	!
;	  0314	! Ident 49.
;	  0315	! Fix calculated length of existing memory block in SET_IMAGE_FIELD.
;	  0316	!
;	  0317	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.2 23-Feb-82 08:46:26, Edit by PECKHAM
;	  0318	!
;	  0319	! Ident 48.
;	  0320	! Dummy! Fixed mis-spelled return codes.
;	  0321	!
;	  0322	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.5 22-Feb-82 17:09:07, Edit by PECKHAM
;	  0323	!
;	  0324	! Ident 47.
;	  0325	! Fix NML$VDB, READ_* to return NICE$_SUC when nothing to SHOW
;	  0326	! when no counters to ZERO.
;	  0327	!
;	  0328	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.2 22-Feb-82 12:17:07, Edit by PECKHAM
;	  0329	!
;	  0330	! Ident 46.
;	  0331	! Fix memory deallocation of image field buffers in CLEAR_PARAMETER_DATA.
;	  0332	!
;	  0333	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.2 19-Feb-82 09:31:27, Edit by PECKHAM
;	  0334	!
;	  0335	! Ident 45.
;	  0336	! Add more items to EXECUTOR data base (LOOP variables).
;	  0337	! Support logging data base for STATE and NAME logging parameters.
;	  0338	! Increase PRM_BFR_LENGTH in NML$SET_VDB_PARAMETER
;	  0339	! and use OWN space instead of stack space.
;	  0340	!
;	  0341	! NET:<GROSSMAN>NMLVDB.BLI.3 27-Jan-82 08:58:17, Edit by GROSSMAN
;	  0342	!
;	  0343	! Ident 44.
;	  0344	! Fix call to NML$COUNTER_TIMER_SET. It now returns $false if the parameter
;	  0345	! was a counter timer, and its value is out of range. It will now return with
;	  0346	! a nice error code of "Illegal Parameter Value".
;	  0347	!
;	  0348	! NET:<GUNN>NMLVDB.BLI.8 21-Jan-82 17:13:17, Edit by GUNN
;	  0349	!
;	  0350	! Ident 43.
;	  0351	! Fix NODE HOST parameter to map the id when set so that
;	  0352	! a valid node address is displayed.
;	  0353	! Fix call to NML$COUNTER_TIMER_CLEAR.
;	  0354	!
;	  0355	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.2 20-Jan-82 10:04:29, Edit by PECKHAM
;	  0356	!
;	  0357	! Ident 42.
;	  0358	! Fix call from NML$CHARACTERISTICS to NML$CHARACTERISTIC.
;	  0359	!
;	  0360	! NET:<PECKHAM.DEVELOPMENT>NMLVDB.BLI.8 18-Jan-82 19:50:42, Edit by PECKHAM
;	  0361	!
;	  0362	! Ident 41.
;	  0363	! Add selector recognition in READ_PARAMETERS so that right parameters
;	  0364	! are displayed for right selectors.
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page   8
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0365	! Begin work on logging data base support.
;	  0366	! Add calls for counter timer data base maintenance (for GROSSMAN).
;	  0367	!
;	  0368	! NET:<GUNN.DEVELOPMENT>NMLVDB.BLI.4 12-Jan-82 15:45:44, Edit by GUNN
;	  0369	!
;	  0370	! Ident 40.
;	  0371	! Fix C_STRING and C_CHAR macros for BLIS16.
;	  0372	!
;	  0373	! NET:<GUNN.DEVELOPMENT>NMLVDB.BLI.34  6-Jan-82 15:26:52, Edit by GUNN
;	  0374	!
;	  0375	! Ident 39.
;	  0376	!
;	  0377	!   Add support for reading Network Management Version, 
;	  0378	!   (Parameter #101) from Volatile Data Base. Initialize
;	  0379	!   a node data base for the EXECUTOR node.
;	  0380	!
;	  0381	!   Add routine SET_NODE_ENTITY.
;	  0382	!
;	  0383	!   Remove declaration of QH_CIRCUIT_NDB. It was not used or needed.
;	  0384	!
;	  0385	! NET:<BRANDT.DEVELOP>NMLVDB.BLI.2 23-Dec-81 17:13:30, Edit by BRANDT
;	  0386	!
;	  0387	! Ident 38.
;	  0388	!   Change names of "matching routines" so they are all unique in
;	  0389	!   the first six characters to facilitate DDT debugging.
;	  0390	!
;	  0391	!   Reduce size of code for MCB by--
;	  0392	!     changing some CASE statements to IF THEN ELSEs
;	  0393	!     restructure code and make common code into callable routines
;	  0394	!     eliminate some parameters in routine interfaces
;	  0395	!
;	  0396	!   Fix SVC_CKT_MATCH to pick up parameter correctly.  Eliminate setting
;	  0397	!   the additional field in the NODE_DB because currently all data base
;	  0398	!   entries are allocated as ENTITY_DBs.  These are smaller than
;	  0399	!   NODE_DBs.
;	  0400	!
;	  0401	!   Change some comments and/or variable names so they are correct
;	  0402	!   and not misleading
;	  0403	!
;	  0404	!   In REMOVE_PARAMETER add an EXITLOOP after the code that clears
;	  0405	!   the parameter.  Otherwise we would loop again with everything
;	  0406	!   off by one because the parameter vector has been shrunk.
;	  0407	!
;	  0408	!   In NML$SET_VDB_PARAMETER make the parameter buffer a local block
;	  0409	!   because it is small, and the dynamic block was never released
;	  0410	!   anyway.
;	  0411	!
;	  0412	!   In NML$SET_VDB_PARAMETER return TRUE or FALSE in all cases.
;	  0413	!
;	  0414	!   Clean up code in INSERT_PARAMETER and add routines RELEASE_PVB,
;	  0415	!   GET_PVB, and EXPAND_PVB.
;	  0416	!
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page   9
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0417	!   Fix MATCH_ID so it does not distinguish between cases.
;	  0418	!
;	  0419	! NET:<DECNET20-V3P1.BASELEVEL-2.MCB>NMLVDB.BLI.2 16-Nov-81 11:31:30, Edit by WEBBER
;	  0420	!
;	  0421	! Ident 37.
;	  0422	!   Modify interface to GET_VDB_PARAMETER to pass back the value of all
;	  0423	!   binary fields, even if the field occupies more than one BLISS value.
;	  0424	!
;	  0425	! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLVDB.BLI.15 13-Oct-81 23:45:52, Edit by PECKHAM
;	  0426	!
;	  0427	! Ident 36.
;	  0428	! Correct parameter pass in NML$FIND_NDB.
;	  0429	!
;	  0430	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.4 13-Oct-81 11:52:23, Edit by GUNN
;	  0431	!
;	  0432	! Ident 35.
;	  0433	! Fix READ_COUNTERS routine to make SHOW CIRCUIT xxx COUNTERS command
;	  0434	! to work properly.
;	  0435	!
;	  0436	! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLVDB.BLI.13  9-Oct-81 15:59:13, Edit by GUNN
;	  0437	!
;	  0438	! Ident 34.
;	  0439	! Change SELECTOR to not be system dependent.
;	  0440	!
;	  0441	! NET:<DECNET20-V3P1.BASELEVEL-2.MCB>NMLVDB.BLI.2  3-Aug-81 08:46:13, Edit by GUNN
;	  0442	!
;	  0443	! Ident 33.
;	  0444	! Remove $INTERNAL_ERROR$ macros.
;	  0445	!
;	  0446	! NET:<DECNET20-V3P1.NMU.LIBRARY>NMLVDB.BLI.5 30-Jun-81 10:42:58, Edit by GUNN
;	  0447	!
;	  0448	! Ident 32.
;	  0449	! Add routine NML$CLR_VDB_PARAMETER.
;	  0450	!
;	  0451	! NET:<DECNET20-V3P1.NMU.LIBRARY>NMLVDB.BLI.3 29-Jun-81 17:28:23, Edit by GUNN
;	  0452	!
;	  0453	! Ident 31.
;	  0454	! Fix NML$SET_VDB_PARAMETER to pass pointer to begginning of temporary
;	  0455	! parameter buffer when calling INSERT_PARAMETER.
;	  0456	!
;	  0457	! NET:<DECNET20-V3P1.NMU.LIBRARY>NMLVDB.BLI.2 29-Jun-81 16:15:11, Edit by JENNESS
;	  0458	!
;	  0459	! Ident 30.
;	  0460	! Fix dot problems in NML$SET_VDB_PARAMETER.
;	  0461	!
;	  0462	! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLVDB.BLI.9 25-Jun-81 16:33:11, Edit by JENNESS
;	  0463	!
;	  0464	! Ident 29.
;	  0465	! Fix SVC_CKT_MATCH, local PVB should be a ref.
;	  0466	!
;	  0467	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.4 18-Jun-81 08:30:20, Edit by GUNN
;	  0468	!
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  10
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0469	! Ident 28.
;	  0470	! Move check for 'ALL' parameter prior to picking up parameter number
;	  0471	! in REMOVE_PARAMETER.
;	  0472	! Change test condition in loop in REMOVE_PARAMETER.
;	  0473	!
;	  0474	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.3 17-Jun-81 17:08:31, Edit by GUNN
;	  0475	!
;	  0476	! Ident 27.
;	  0477	! Fix REMOVE_PARAMETER to make CLEAR command work. Unneeded dot on
;	  0478	! GETW of parameter number.
;	  0479	! Add code to NML$SET_VDB_PARAMETER.
;	  0480	!
;	  0481	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.6 12-Jun-81 00:04:40, Edit by GUNN
;	  0482	!
;	  0483	! Ident 26.
;	  0484	! Move macro definition of NML$SET_VDB_PARAMETER to NMUCOM.
;	  0485	!
;	  0486	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.5  3-Jun-81 20:19:05, Edit by GUNN
;	  0487	!
;	  0488	! Ident 25.
;	  0489	! Add code for NML$SET_VDB_PARAMETER.
;	  0490	! Fix code in NML$GET_VDB_PARAMETER to eliminate compiler INFO message.
;	  0491	!
;	  0492	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.2  28-May-81 16:56:44, Edit by GUNN
;	  0493	!
;	  0494	! Ident 24.
;	  0495	! Add code to NML$GET_VDB_PARAMETER to return pointer if necessary based
;	  0496	! on data type of parameter.
;	  0497	! Change test in loop in NML$GET_VDB_PARAMETER.
;	  0498	!
;	  0499	! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLVDB.BLI.6 26-May-81 13:58:10, Edit by GUNN
;	  0500	!
;	  0501	! Ident 23.
;	  0502	! Remove use of RTN_COD in NML$GET_VDB_PARAMETER and return either
;	  0503	! $TRUE or $FALSE at point of detection.
;	  0504	!
;	  0505	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.47 13-May-81 10:31:30, Edit by GUNN
;	  0506	!
;	  0507	! Ident 22.
;	  0508	! Only allocate new buffer for HOST id first time.
;	  0509	!
;	  0510	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.46 13-May-81 10:19:36, Edit by GUNN
;	  0511	!
;	  0512	! Ident 21.
;	  0513	! Fix ch$move in HOST code.
;	  0514	!
;	  0515	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.45 13-May-81 09:37:32, Edit by GUNN
;	  0516	!
;	  0517	! Ident 20.
;	  0518	! Update PRM_PTR on ch$move when reading HOST parameter.
;	  0519	!
;	  0520	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.44 13-May-81 09:07:49, Edit by GUNN
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  11
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0521	!
;	  0522	! Ident 19.
;	  0523	! Fix code which sets HOST parameter. Handle fact that input format of
;	  0524	! node entity is either address or name.
;	  0525	! Fix typos in code which reads HOST parameter. Missing dots on PRM_PTR.
;	  0526	!
;	  0527	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.42 12-May-81 17:50:47, Edit by GUNN
;	  0528	!
;	  0529	! Ident 18.
;	  0530	! Fix code to handle read/write parameters.
;	  0531	!
;	  0532	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.41 12-May-81 09:02:00, Edit by GUNN
;	  0533	!
;	  0534	! Ident 17.
;	  0535	! Fix parameter handling routines to use DT_LENGTH for uncoded fields
;	  0536	! instead of DT_NUMBER.
;	  0537	!
;	  0538	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.40 11-May-81 23:45:13, Edit by GUNN
;	  0539	!
;	  0540	! Ident 16.
;	  0541	! Fix code to read long binary number.
;	  0542	!
;	  0543	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.39 11-May-81 10:02:29, Edit by GUNN
;	  0544	!
;	  0545	! Ident 15.
;	  0546	! Only add count for inserted parameter if it's not already in table.
;	  0547	! Handle binary number parameters longer than %BPVAL correctly.
;	  0548	!
;	  0549	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.37  8-May-81 11:25:42, Edit by GUNN
;	  0550	!
;	  0551	! Ident 14.
;	  0552	! Fix REMOVE_PARAMETER code.
;	  0553	!
;	  0554	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.36  8-May-81 11:04:22, Edit by GUNN
;	  0555	!
;	  0556	! Fix typo from last edit.
;	  0557	!
;	  0558	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.35  8-May-81 10:00:31, Edit by GUNN
;	  0559	!
;	  0560	! Fix INSERT_PARAMETER logic. Not properly copying parameters from old
;	  0561	! vector.
;	  0562	!
;	  0563	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.33  6-May-81 18:05:39, Edit by GUNN
;	  0564	!
;	  0565	! Yet more typos.
;	  0566	!
;	  0567	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.32  6-May-81 17:57:38, Edit by GUNN
;	  0568	!
;	  0569	! Fix typos from last edit.
;	  0570	!
;	  0571	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.31  6-May-81 17:39:32, Edit by GUNN
;	  0572	!
								24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  12
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (1)

;	  0573	! Fix bad code in INSERT_PARAMETER and other places.
;	  0574	!
;	  0575	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.29  5-May-81 17:40:45, Edit by GUNN
;	  0576	!
;	  0577	! Add code in VDB_READ for entities other than NODE.
;	  0578	!
;	  0579	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.28  5-May-81 15:59:26, Edit by GUNN
;	  0580	!
;	  0581	! Remove 'ref' from bind of PVB_QE in READ_PARAMETERS routine.
;	  0582	!
;	  0583	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.27  5-May-81 15:07:34, Edit by GUNN
;	  0584	!
;	  0585	! Make READ_PARAMETERS work.
;	  0586	! Fix call to VDB_READ from NML$VDB to pass pointer address not the
;	  0587	! argument address.
;	  0588	!
;	  0589	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.26  5-May-81 12:08:17, Edit by GUNN
;	  0590	!
;	  0591	! Fix READ_ENTITY to return correct value. $NICE$ERR_MPE was generating
;	  0592	! a procedure call.
;	  0593	!
;	  0594	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.24 17-Apr-81 16:57:19, Edit by GUNN
;	  0595	!
;	  0596	! Pass contents of PVB_QE in call to SET_PARAMETER_DATA from
;	  0597	! INSERT_PARAMETER_DATA.
;	  0598	!
;	  0599	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.21 17-Apr-81 07:59:28, Edit by GUNN
;	  0600	!
;	  0601	! Fix BIND in INSERT_PARAMETER routine.
;	  0602	! Make SET_PARAMETER_DATA handle special cases for multiple fields.
;	  0603	!
;	  0604	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.11  3-Apr-81 14:08:26, Edit by GUNN
;	  0605	!
;	  0606	! Add routine NML$GET_VDB_PARAMETER to return data for a specific parameter
;	  0607	! from the volatile data base.
;	  0608	!
;	  0609	! Add routine NML$FIND_NDB to find a NODE given a circuit id.
;	  0610	!
;	  0611	! Fix coding errors in INSERT_PARAMETER and REMOVE_PARAMETER.
;	  0612	!
;	  0613	! NET:<DECNET20-V3P1.NML>NMLVDB.BLI.71  5-Mar-81 13:00:10, Edit by GUNN
;	  0614	!
;	  0615	! Make NMX interface code symbols be system specific.
;	  0616	!
		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  13
								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (2)

;	  0617	%title 'NMLVDB -- Volatile Data Base Processing'
;	  0618	module NMLVDB	(
;	  0619			ident = 'X00.89'
;	  0620			) =
;	  0621	begin
;	  0622	
;	  0623	!                    COPYRIGHT (c) 1980, 1981, 1982
;	  0624	!                    DIGITAL EQUIPMENT CORPORATION
;	  0625	!                        Maynard, Massachusetts
;	  0626	!
;	  0627	!     This software is furnished under a license and may  be  used
;	  0628	!     and copied only in accordance with the terms of such license
;	  0629	!     and with the inclusion of the above copyright notice.   This
;	  0630	!     software  or any other copies thereof may not be provided or
;	  0631	!     otherwise made available to any other person.  No  title  to
;	  0632	!     and ownership of the software is hereby transferred.
;	  0633	!
;	  0634	!     The information  in  this  software  is  subject  to  change
;	  0635	!     without  notice  and should not be construed as a commitment
;	  0636	!     by DIGITAL EQUIPMENT CORPORATION.
;	  0637	!
;	  0638	!     DIGITAL assumes no responsibility for the use or reliability
;	  0639	!     of  its  software  on  equipment  which  is  not supplied by
;	  0640	!     DIGITAL.
;	  0641	!
;	  0642	
;	  0643	!++
;	  0644	! FACILITY:	DECnet-10/20 V3.0 Network Management Layer (NML)
;	  0645	!
;	  0646	! ABSTRACT:
;	  0647	!
;	  0648	!	This module contains the volatile data base definitions 
;	  0649	!       and access routines.
;	  0650	!
;	  0651	! ENVIRONMENT:	TOPS-10/20 & MCB/RSX11 User mode under NML
;	  0652	!
;	  0653	! AUTHOR: Dale C. Gunn , CREATION DATE:  2-Feb-81
;	  0654	!
;	  0655	! MODIFIED BY:
;	  0656	!
;	  0657	!	, : VERSION
;	  0658	! 01	-
;	  0659	!--
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  14
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (3)

;	  0660	
;	  0661	!
;	  0662	! INCLUDE FILES:
;	  0663	!
;	  0664	
;	  0665	library 'NMLLIB';                       ! All required definitions
;	  0666	
;	  0667	literal
;	  0668	    NML$CFG_FILTERS = $false;
;	  0669	
;	  0670	!
;	  0671	! TABLE OF CONTENTS
;	  0672	!
;	  0673	
;	  0674	forward routine
;	  0675	        NML$VDB_INITIALIZE : novalue,   ! Initialize the Volatile DB
;	  0676	        NML$VDB,                        ! Perform NMX operation on DB
;	  0677	        NML$GET_VDB_PARAMETER,          ! Extract data for specific parameter
;	  0678	        NML$SET_VDB_PARAMETER,          ! Set parameter in Volatile DB
;	  0679	        NML$CLR_VDB_PARAMETER,          ! Remove parameter from VDB
;	  0680	        NML$FIND_NDB,                   ! Find NODE associated with CIRCUIT
;	  0681	        SELECT_LOGGING,
;	  0682	        SELECT_MODULE,
;	  0683		VDB_READ,
;	U 0684	        %if $X25 and not $MCB %then
;	U 0685	        READ_QUALIFIED_ENTITY,
;	U 0686	        READ_QUALIFIER : novalue,
;	  0687	        %fi
;	  0688	        READ_ENTITY,
;	  0689	        READ_PARAMETERS,
;	  0690	        READ_COUNTERS,
;	  0691	        READ_FILTERS,
;	  0692	        READ_FILTER,
;	  0693	        READ_FILTER_SINK,
;	  0694	        READ_FILTER_MASKS,
;	  0695		VDB_CHANGE,
;	U 0696	        %if $X25 and not $MCB %then
;	U 0697	        SET_QUALIFIED_ENTITY,
;	  0698	        %fi
;	  0699	        SET_NODE_ENTITY : novalue,
;	  0700	        GET_EXISTING_ENTITY_DB,
;	  0701	        SET_ENTITY_DB,
;	  0702	        ENTITY_IS_VALID,
;	  0703	        MODULE_IS_VALID,
;	  0704	        GET_VDB_ENTITY_QUEUE,
;	  0705	        INSERT_PARAMETER,
;	  0706	        COPY_PARAMETER_VECTOR: novalue,
;	  0707	        APPLICABLE,
;	U 0708	        %if $X25 and not $MCB %then
;	U 0709	        REMOVE_QUALIFIED_PARAMETER,
;	  0710	        %fi
;	  0711	        REMOVE_PARAMETER: novalue,
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  15
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (3)

;	  0712	        RELEASE_PVB: novalue,
;	  0713	        GET_PVB,
;	  0714	        EXPAND_PVB,
;	  0715	        SET_PARAMETER_DATA,
;	  0716	        SET_FILTER,
;	  0717	        SET_IMAGE_FIELD,
;	  0718	        CLEAR_PARAMETER_DATA: novalue,
;	  0719	        CLEAR_FILTER,
;	  0720	        READ_PARAMETER_DATA,
;	  0721	        LOGGING_ID_MATCH,
;	  0722	        NODE_ID_MATCH,
;	  0723	        NON_NODE_ID_MATCH,
;	  0724	        SVC_CKT_MATCH,
;	  0725	        MATCH_ID;
;	  0726	
;	  0727	!
;	  0728	! MACROS
;	  0729	!
;	  0730	
;	  0731	! Macro - GETMB
;	  0732	!
;	  0733	! Function - To get the next 8 bit value from a byte string
;	  0734	!            and map lower case ASCII codes into the
;	  0735	!            corresponding upper case ASCII code.
;	  0736	!            The byte pointer is updated to point to the next
;	  0737	!	     byte to read.
;	  0738	!
;	  0739	! Parameters -
;	  0740	!
;	  0741	!    PTR_ADR	Address of byte string pointer
;	  0742	!
;	  0743	! Value returned -
;	  0744	!
;	  0745	!    The next byte in the string.
;	  0746	!
;	  0747	
;	  0748	macro
;	M 0749	     GETMB (PTR_ADR) =
;	M 0750	         begin
;	M 0751	         local C;
;	M 0752	
;	M 0753	         C = ch$rchar_a(PTR_ADR);
;	M 0754	         if .C geq %C'a' and .C leq %C'z'
;	M 0755	         then .C - %C'a' + %C'A'
;	M 0756	         else .C
;	  0757	         end %;
;	  0758	
;	  0759	macro
;	M 0760	     $EXPAND_FIELD (FIELD_NAME) =
;	M 0761	         %print ('field-name ', %string(FIELD_NAME), ' = [',
;	M 0762	                 %fieldexpand(FIELD_NAME,0), ', ',
;	M 0763	                 %fieldexpand(FIELD_NAME,1), ', ',
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  16
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (3)

;	M 0764	                 %fieldexpand(FIELD_NAME,2), ', ',
;	  0765	                 %fieldexpand(FIELD_NAME,3), ']') %;
;	  0766	
;	  0767	macro
;	M 0768	     $SHOW_EDB =
;	M 0769	         $EXPAND_FIELD (EDB_QLINK)
;	M 0770	         $EXPAND_FIELD (EDB_ENTITY_ID)
;	M 0771	         $EXPAND_FIELD (NDB_ENTITY_ID)
;	M 0772	         $EXPAND_FIELD (NDB_NODE_TYPE)
;	M 0773	         $EXPAND_FIELD (EDB_PARAMETER_COUNT)
;	M 0774	         $EXPAND_FIELD (EDB_PARAMETER_ALLOCATION)
;	  0775	         $EXPAND_FIELD (EDB_PARAMETER_VECTOR) %;
;	  0776	
;	  0777	macro
;	M 0778	     $SHOW_NDB =
;	M 0779	         $EXPAND_FIELD (EDB_QLINK)
;	M 0780	         $EXPAND_FIELD (EDB_ENTITY_ID)
;	M 0781	         $EXPAND_FIELD (NDB_ENTITY_ID)
;	M 0782	         $EXPAND_FIELD (NDB_NODE_TYPE)
;	M 0783	         $EXPAND_FIELD (EDB_PARAMETER_COUNT)
;	M 0784	         $EXPAND_FIELD (EDB_PARAMETER_ALLOCATION)
;	M 0785	         $EXPAND_FIELD (EDB_PARAMETER_VECTOR)
;	M 0786	         $EXPAND_FIELD (EDB_FIELDS)
;	M 0787	         $EXPAND_FIELD (NDB_CIRCUIT_QLINK)
;	  0788	         $EXPAND_FIELD (NDB_SVC_CIRCUIT) %;
;	  0789	
;	  0790	!
;	  0791	! EQUATED SYMBOLS:
;	  0792	!
;	  0793	$show (fields);                         ! Turn on XPORT field display
;	  0794	$show (literals);                       ! Turn on XPORT literal display
;	  0795	
;	  0796	literal
;	  0797	    PRM_BFR_LENGTH = 2 + 1 + 255, ! Length in bytes
;	  0798	    PRM_BFR_SIZE = ch$allocation (PRM_BFR_LENGTH,8),
;	  0799	    PRM_BFR_ALLOCATION = PRM_BFR_SIZE * %upval;
;	  0800	
;	  0801	!
;	  0802	! Miscelaneous data definitions
;	  0803	!
;	  0804	$field                                  ! For event logging filter masks
;	L 0805	    MASK_BITS = [$bits (32)];
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	  0806	
;	  0807	literal
;	L 0808	    MASK_SIZE = $field_set_size;
; %PRINT:				  2 fullwords
;	  0809	
;	  0810	!
;	  0811	! FDB_*
;	  0812	!  QH_LOGGING_FILTER entry.
;	  0813	!  Contains identification for a sink node and
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  17
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (3)

;	  0814	!  pointers to event filter sets for CONSOLE_, FILE_, and MONITOR_.
;	  0815	!
;	  0816	$field FDB_FIELDS =
;	  0817	    set
;	L 0818	    FDB_BASE = [$sub_block (0)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0819	    FDB_QLINK = [$sub_block (Q_ENTRY_SIZE)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0820	    FDB_NODE_ID = [$bytes (2 + 1 + 6)],
; %PRINT:				  [3,0,0,0]   (+%O'6')
;	L 0821	    FDB_CONSOLE_FILTERS = [$sub_block (Q_ENTRY_SIZE)],
; %PRINT:				  [8,0,0,0]   (+%O'20')
;	L 0822	    FDB_FILE_FILTERS = [$sub_block (Q_ENTRY_SIZE)],
; %PRINT:				  [11,0,0,0]   (+%O'26')
;	L 0823	    FDB_MONITOR_FILTERS = [$sub_block (Q_ENTRY_SIZE)]
; %PRINT:				  [14,0,0,0]   (+%O'34')
;	  0824	    tes;
;	  0825	
;	  0826	literal
;	L 0827	    FDB_SIZE = $field_set_size;
; %PRINT:				  17 fullwords
;	  0828	
;	  0829	macro
;	  0830	    FDB_BLOCK = block [FDB_SIZE] field (FDB_FIELDS) %;
;	  0831	
;	  0832	!
;	  0833	! FDBS_*
;	  0834	!  General or entity specific filter mask set
;	  0835	!  Contains an entity type (2 bytes) and identification for
;	  0836	!   NO_ENTITY_ (0 bytes)
;	  0837	!   NODE_E (9 bytes)
;	  0838	!   LINE_, CIRCUIT_, or MODULE_ (17 bytes)
;	  0839	!  The first filter mask set is also part of this data base.
;	  0840	!
;	  0841	$field
;	  0842	    FDBS_FIELDS =
;	  0843	        set
;	L 0844	        FDBS_BASE = [$sub_block (0)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0845	        FDBS_QLINK = [$sub_block (Q_ENTRY_SIZE)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0846	        FDBS_ENTITY = [$bytes (2 + max (0, 9, 17))],
; %PRINT:				  [3,0,0,0]   (+%O'6')
;	L 0847	        FDBS_MASKS = [$sub_block (0)]
; %PRINT:				  [13,0,0,0]   (+%O'32')
;	  0848	        tes;
;	  0849	
;	  0850	literal
;	L 0851	    FDBS_SIZE = $field_set_size;
; %PRINT:				  13 fullwords
;	  0852	
;	  0853	macro
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  18
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (3)

;	  0854	    FDBS_BLOCK = block [FDBS_SIZE] field (FDBS_FIELDS) %;
;	  0855	
;	  0856	!
;	  0857	! FDNM_*
;	  0858	!  Filter mask set.
;	  0859	!  Contains a set of 8 filter masks for the given range of
;	  0860	!  event types.
;	  0861	!
;	  0862	$field
;	  0863	    FDBM_FIELDS =
;	  0864	        set
;	L 0865	        FDBM_BASE = [$sub_block (0)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0866	        FDBM_QLINK = [$sub_block (Q_ENTRY_SIZE)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0867	        FDBM_LOW = [$short_integer],
; %PRINT:				  [3,0,16,1]   (+%O'6')
;	L 0868	        FDBM_HIGH = [$short_integer],
; %PRINT:				  [4,0,16,1]   (+%O'10')
;	L 0869	        FDBM_MASKS = [$sub_block (8*MASK_SIZE)]
; %PRINT:				  [5,0,0,0]   (+%O'12')
;	  0870	        tes;
;	  0871	
;	  0872	literal
;	L 0873	    FDBM_SIZE = $field_set_size;
; %PRINT:				  21 fullwords
;	  0874	
;	  0875	macro
;	  0876	    FDBM_BLOCK = block [FDBM_SIZE] field (FDBM_FIELDS) %;
;	  0877	
;	  0878	!
;	  0879	! PBF_*
;	  0880	!  Parameter block for filter handling routines.
;	  0881	!  This block is used to hold all the pertinent parameters to
;	  0882	!  allow generation of more efficient code, and also to allow
;	  0883	!  parameter passage through NMU$QUEUE_SCAN.
;	  0884	!
;	  0885	$field
;	  0886	    PBF_FIELDS =
;	  0887	        set
;	L 0888	        PBF_BASE = [$sub_block (0)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0889	        PBF_PE = [$sub_block (PVB_ENTRY_SIZE)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0890	        PBF_NODE_ID_PTR = [$pointer],   ! Pointer to current FDB_NODE_ID
; %PRINT:				  [2,0,16,0]   (+%O'4')
;	L 0891	        PBF_ENTITY_PTR = [$pointer],    ! Pointer to current FDBS_ENTITY
; %PRINT:				  [3,0,16,0]   (+%O'6')
;	L 0892	        PBF_BUF_PTR_ADR = [$address],   ! Address of buffer pointer
; %PRINT:				  [4,0,16,0]   (+%O'10')
;	L 0893	        PBF_LEN_ADR = [$address],       ! Address of buffer length
; %PRINT:				  [5,0,16,0]   (+%O'12')
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  19
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (3)

;	L 0894	        PBF_MASK = [$bytes (4)],        ! Local copy of current filter mask
; %PRINT:				  [6,0,0,0]   (+%O'14')
;	L 0895	        PBF_SELECTOR = [$tiny_integer], ! Return list selector
; %PRINT:				  [8,0,8,1]   (+%O'20')
;	L 0896	        PBF_SINK = [$tiny_integer]      ! Current sink type
; %PRINT:				  [8,8,8,1]   (+%O'21')
;	  0897	        tes;
;	  0898	
;	  0899	literal
;	L 0900	    PBF_SIZE = $field_set_size;
; %PRINT:				  9 fullwords
;	  0901	
;	  0902	macro
;	  0903	    PBF_BLOCK = block [PBF_SIZE] field (PBF_FIELDS) %;
;	  0904	
;	  0905	!
;	  0906	! PBM_*
;	  0907	!  Parameter block for module handling routines.
;	  0908	!  This block is used to hold all the pertinent parameters to
;	  0909	!  allow generation of more efficient code, and also to allow
;	  0910	!  parameter passage through NMU$QUEUE_SCAN.
;	  0911	!
;	  0912	$field
;	  0913	    PBM_FIELDS =
;	  0914	        set
;	L 0915	        PBM_BASE = [$sub_block (0)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0916	        PBM_BUF_PTR_ADR = [$address],   ! Address of buffer pointer
; %PRINT:				  [0,0,16,0]   (+%O'0')
;	L 0917	        PBM_LEN_ADR = [$address],       ! Address of buffer length
; %PRINT:				  [1,0,16,0]   (+%O'2')
;	L 0918	        PBM_SELECTOR = [$tiny_integer]  ! Return list selector
; %PRINT:				  [2,0,8,1]   (+%O'4')
;	  0919	        tes;
;	  0920	
;	  0921	literal
;	L 0922	    PBM_SIZE = $field_set_size;
; %PRINT:				  3 fullwords
;	  0923	
;	  0924	macro
;	  0925	    PBM_BLOCK = block [PBM_SIZE] field (PBM_FIELDS) %;
;	  0926	
;	  0927	!
;	  0928	! Parameter block usage being phased in
;	  0929	!
;	  0930	
;	  0931	$field
;	  0932	    PARAMETER_FIELDS =
;	  0933	        set
;	L 0934	        PB_BASE = [$sub_block (0)],
; %PRINT:				  [0,0,0,0]   (+%O'0')
;	L 0935	        PB_ENTITY_POINTER = [$pointer],
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  20
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (3)

; %PRINT:				  [0,0,16,0]   (+%O'0')
;	L 0936	        PB_QUALIFIER_POINTER = [$pointer],
; %PRINT:				  [1,0,16,0]   (+%O'2')
;	L 0937	        PB_FUNCTION = [$integer],
; %PRINT:				  [2,0,16,1]   (+%O'4')
;	L 0938	        PB_ENTITY_TYPE = [$integer],
; %PRINT:				  [3,0,16,1]   (+%O'6')
;	L 0939	        PB_SELECTOR = [$integer],
; %PRINT:				  [4,0,16,1]   (+%O'10')
;	L 0940	        PB_DATA_LENGTH = [$integer],
; %PRINT:				  [5,0,16,1]   (+%O'12')
;	L 0941	        PB_DATA_POINTER = [$integer],
; %PRINT:				  [6,0,16,1]   (+%O'14')
;	L 0942	        PB_PARAMETER_NUMBER = [$integer],
; %PRINT:				  [7,0,16,1]   (+%O'16')
;	L 0943	        PB_EDB = [$address],
; %PRINT:				  [8,0,16,0]   (+%O'20')
;	L 0944	        PB_PARAMETER_DATA_BLOCK = [$address],
; %PRINT:				  [9,0,16,0]   (+%O'22')
;	L 0945	        PB_PRIVLEDGED = [$bit]
; %PRINT:				  [10,0,1,0]   (+%O'24')
;	  0946	        tes;
;	  0947	
;	  0948	literal
;	L 0949	    PARAMETER_BLOCK_SIZE = $field_set_size,
; %PRINT:				  11 fullwords
;	L 0950	    PARAMETER_BLOCK_ALLOCATION = $field_set_units;
; %PRINT:				  21 addressable units
;	  0951	
;	  0952	macro
;	  0953	    PARAMETER_BLOCK = block [PARAMETER_BLOCK_SIZE] field (PARAMETER_BLOCK_FIELDS) %;
;	  0954	
;	  0955	$show (none);                           ! Turn off XPORT display
;	  0956	!
;	  0957	! OWN STORAGE:
;	  0958	!
;	  0959	
;	  0960	own
;	  0961	   PRM_BFR: block [PRM_BFR_ALLOCATION];
;	  0962	
;	C 0963	%( N.B. - To ensure integrity of the volatile data base when running
;	C 0964	          in the multi-tasking environment, the data bases must be
;	  0965	          locked during access. )%
;	  0966	
;	  0967	own                                     ! Heads of NML volatile parameter DB
;	  0968	    QH_NODE_PARAMETERS: Q_HEADER,
;	  0969	    QH_LINE_PARAMETERS: Q_HEADER,
;	  0970	    QH_CIRCUIT_PARAMETERS: Q_HEADER,
;	  0971	    QH_LOGGING_PARAMETERS: Q_HEADER,
;	  0972	    QH_LOGGING_FILTERS: Q_HEADER,
;	  0973	    QH_MODULE_PARAMETERS: Q_HEADER;
;	  0974	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  21
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (3)

;	  0975	%if $MCB %then
;	  0976	global bind
;	  0977	    NODDB = QH_NODE_PARAMETERS,
;	  0978	    LINDB = QH_LINE_PARAMETERS,
;	  0979	    CKTDB = QH_CIRCUIT_PARAMETERS,
;	  0980	    LOGDB = QH_LOGGING_PARAMETERS,
;	  0981	    FLTDB = QH_LOGGING_FILTERS,
;	  0982	    MODDB = QH_MODULE_PARAMETERS;
;	  0983	%fi
;	  0984	
;	  0985	!
;	  0986	! EXTERNAL REFERENCES:
;	  0987	!
;	  0988	
;	  0989	external routine
;	  0990	         NMU$MEMORY_MANAGER,
;	  0991	         NMU$QUEUE_MANAGER,
;	  0992	         NMU$NETWORK_LOCAL,
;	  0993	         NML$VDB_PARAMETER,
;	  0994	         NML$EXECUTOR_ONLY,
;	  0995	         NML$SUMMARY,
;	  0996	         NML$STATUS,
;	  0997	         NML$CHARACTERISTIC,
;	  0998	         NML$CLEARABLE,
;	  0999	         NML$READ_ONLY,
;	  1000	         NML$GET_PDB_DATA_TYPE,
;	  1001	         NML$COUNTER_TIMER_SET,
;	  1002	         NML$COUNTER_TIMER_CLEAR;
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  22
X00.89		NML$VDB_INITIALIZE as NL_VDI			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (4)

;	  1003	%global_routine ('NML$VDB_INITIALIZE') : novalue =
;	  1004	
;	  1005	!++
;	  1006	! FUNCTIONAL DESCRIPTION:
;	  1007	!
;	  1008	!	Resets the NML volatile data bases to an initially
;	  1009	!       cleared state. 
;	  1010	!
;	  1011	!       Initializes volatile data base for EXECUTOR NODE.
;	  1012	!
;	  1013	! FORMAL PARAMETERS
;	  1014	!
;	  1015	!	NONE.
;	  1016	!
;	  1017	! IMPLICIT INPUTS
;	  1018	!
;	  1019	!	NONE.
;	  1020	!
;	  1021	! ROUTINE VALUE:
;	  1022	!
;	  1023	!	NONE.
;	  1024	!
;	  1025	! SIDE EFFECTS:
;	  1026	!
;	  1027	!	NONE.
;	  1028	!
;	  1029	!--
;	  1030	
;	  1031	    begin
;	  1032	
;	  1033	    macro
;	M 1034	         C_STRING [ ] =                 ! Counted string
;	M 1035	             %if not $MCB
;	M 1036	             %then C_CHAR(%char(%charcount(%remaining)), %explode(%remaining)) 
;	M 1037	             %else %string(%char(%charcount(%remaining)), %remaining)
;	  1038	             %fi %;
;	  1039	
;	L 1040	    %if not $MCB
;	U 1041	    %then
;	U 1042	    macro
;	U 1043	         C_CHAR [B1,B2,B3,B4] =
;	U 1044	             ((%C B1 ^ (%bpval-8))
;	U 1045	              %if not %null(B2)
;	U 1046	              %then or (%C B2 ^ (%bpval-16))
;	U 1047	                    %if not %null(B3)
;	U 1048	                    %then or (%C B3 ^ (%bpval-24))
;	U 1049	                          %if not %null(B4)
;	U 1050	                          %then or (%C B4 ^ (%bpval-32)) %fi
;	U 1051	                    %fi
;	U 1052	              %fi) %;
;	  1053	    %else
;	  1054	    macro
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  23
X00.89		NML$VDB_INITIALIZE as NL_VDI			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (4)

;	M 1055	         C_CHAR [] =
;	  1056	             (%string (%remaining)) %;
;	  1057	    %fi
;	  1058	
;	  1059	!
;	  1060	! Reset the volatile parameter data base header for each entity.
;	  1061	!
;	  1062	
;	  1063	    NMU$QUEUE_RESET (QH_NODE_PARAMETERS);
;	  1064	    NMU$QUEUE_RESET (QH_LINE_PARAMETERS);
;	  1065	    NMU$QUEUE_RESET (QH_CIRCUIT_PARAMETERS);
;	  1066	    NMU$QUEUE_RESET (QH_LOGGING_PARAMETERS);
;	  1067	    NMU$QUEUE_RESET (QH_LOGGING_FILTERS);
;	  1068	    NMU$QUEUE_RESET (QH_MODULE_PARAMETERS);
;	  1069	
;	  1070	!
;	  1071	! Set up the initial data base for EXECUTOR NODE.
;	  1072	!
;	  1073	    begin
;	  1074	
;	  1075	    external
;	  1076	            NMLVER;                     ! NML Version Number
;	  1077	
;	  1078	    literal
;	  1079	           N_PARMS = 4,                 ! Number of initial EXECUTOR parameters
;	  1080	           M_PARMS = 7;                 ! Maximum number of EXECUTOR parameters
;	  1081	                                        ! Allow for maximum number parameters
;	  1082	                                        ! so the parameter vector never needs
;	  1083	                                        ! to be deallocated.
;	  1084	
;	  1085	    own
;	  1086	       X_NOD_NDB : ref ENTITY_DB_BLOCK,
;	  1087	
;	  1088	       X_NOD_PVB : $NML$PVB_ENTRY_VECTOR (M_PARMS)
;	  1089	                   preset ([0,PE_NUMBER] = 101, ! MANAGEMENT VERSION
;	  1090	                           [0,PE_ADDRESS] = NMLVER,
;	  1091	                           [1,PE_NUMBER] = 150, ! LOOP COUNT 1
;	  1092	                           [1,PE_ADDRESS] = 1,
;	  1093	                           [2,PE_NUMBER] = 151, ! LOOP LENGTH 127
;	  1094	                           [2,PE_ADDRESS] = 127, ! (to work with RSX-11M)
;	  1095	                           [3,PE_NUMBER] = 152, ! LOOP WITH MIXED
;	  1096	                           [3,PE_ADDRESS] = 2);
;	  1097	
;	  1098	    X_NOD_NDB = SET_ENTITY_DB (NODE_E, NMU$NETWORK_LOCAL ());
;	  1099	
;	  1100	    X_NOD_NDB[NDB_NODE_TYPE] = NDB$EXECUTOR;
;	  1101	    X_NOD_NDB[EDB_PARAMETER_COUNT] = N_PARMS;
;	  1102	    X_NOD_NDB[EDB_PARAMETER_ALLOCATION] = PVB_ENTRY_ALLOCATION * M_PARMS;
;	  1103	    X_NOD_NDB[EDB_PARAMETER_VECTOR] =
;	  1104			NMU$MEMORY_GET (.X_NOD_NDB[EDB_PARAMETER_ALLOCATION]);
;	  1105	
;	  1106	    COPY_PARAMETER_VECTOR (X_NOD_PVB, .X_NOD_NDB[EDB_PARAMETER_VECTOR],
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  24
X00.89		NML$VDB_INITIALIZE as NL_VDI			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (4)

;	  1107				   M_PARMS);
;	  1108	
;	L 1109	%if $MCB
;	  1110	%then
;	  1111	    begin                               ! Get host node from Session Control
;	  1112	
;	  1113	    bind
;	  1114	        DATA_ID = uplit (141);
;	  1115	
;	  1116	    local
;	  1117	        PTR;
;	  1118	
;	  1119	    PTR = ch$ptr (PRM_BFR,, 8);
;	  1120	    PUTW (DATA_ID, PTR);
;	  1121	    PUTB (0, PTR);
;	  1122	    $NML$GET_HOST_ID (uplit (2 + 1 + 6), .PTR);
;	  1123	    INSERT_PARAMETER (.X_NOD_NDB, NODE_E, ch$ptr (PRM_BFR,,8), $true);
;	  1124	    end;
;	U 1125	%else
;	U 1126	    begin
;	U 1127	
;	U 1128	    macro
;	U 1129	        DEFAULT_IDENTIFICATION = 'DECnet-20 Version 3.0' %;
;	U 1130	
;	U 1131	    INSERT_PARAMETER (.X_NOD_NDB, NODE_E,
;	U 1132	                     ch$ascii (%char ((100 and %o'377'),
;	U 1133	                                      (100^-8 and %o'377'),
;	U 1134	                                      %charcount (DEFAULT_IDENTIFICATION)),
;	U 1135	                               DEFAULT_IDENTIFICATION), $true);
;	U 1136	    end;
;	  1137	%fi
;	  1138	    end;
;	  1139	
;	  1140	!
;	  1141	! Set up the logging filter data base
;	  1142	!
;	  1143	
;	L 1144	%if NML$CFG_FILTERS
;	U 1145	%then
;	U 1146	    begin
;	U 1147	
;	U 1148	    $field
;	U 1149	        BYTE_0 = [$byte],
;	U 1150	        BYTE_1 = [$byte];
;	U 1151	
;	U 1152	    own
;	U 1153	        FDB : block [FDB_SIZE] field (FDB_FIELDS)
;	U 1154	              initial (rep FDB_SIZE of (0)),
;	U 1155	        FDBS : block [FDBS_SIZE + FDBM_SIZE] field (FDBS_FIELDS)
;	U 1156	              initial (rep FDBS_SIZE of (0));
;	U 1157	
;	U 1158	    bind
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  25
X00.89		NML$VDB_INITIALIZE as NL_VDI			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (4)

;	U 1159	        ENTITY_ID = uplit (NO_ENTITY_),
;	U 1160	        FDBM = FDBS [FDBS_MASKS] : block [FDBM_SIZE] field (FDBM_FIELDS);
;	U 1161	
;	U 1162	    $NML$GET_HOST_ID (uplit (2 + 1 + 6), ch$ptr (FDB [FDB_NODE_ID],, 8));
;	U 1163	    NMU$QUEUE_RESET (FDB [FDB_CONSOLE_FILTERS]);
;	U 1164	    NMU$QUEUE_RESET (FDB [FDB_FILE_FILTERS]);
;	U 1165	    NMU$QUEUE_RESET (FDB [FDB_MONITOR_FILTERS]);
;	U 1166	    PUTW (ENTITY_ID, ch$ptr (FDBS [FDBS_ENTITY],, 8));
;	U 1167	    NMU$QUEUE_RESET (FDBM [FDBM_QLINK]);
;	U 1168	    FDBM [FDBM_LOW] = 0;
;	U 1169	    FDBM [FDBM_HIGH] = 7;
;	U 1170	    NMU$QUEUE_INSERT (FDB [FDB_FILE_FILTERS], FDBS);
;	U 1171	    NMU$QUEUE_INSERT (QH_LOGGING_FILTERS, FDB);
;	U 1172	    end;
;	  1173	%fi
;	  1174	
;	C 1175	%( N.B. - Maybe we want to call the interface function here to
;	  1176	   return a list of known entities for each data base. )%
;	  1177	
;	  1178	    end;				! End of NML$VDB_INITIALIZE


						.TITLE	NMLVDB NMLVDB -- Volatile Data Base Processing
						.IDENT	/X00.89/


000000						.PSECT	$PLIT$,  RO ,  D  
000000	000215 				P.AAA:	.WORD	215
000002	000011 				P.AAB:	.WORD	11



000000						.PSECT	$OWN$,  D  
000000					PRM.BFR:.BLKW	402
001004					QH.NODE.PARAMETERS:
						.BLKW	3
001012					QH.LINE.PARAMETERS:
						.BLKW	3
001020					QH.CIRCUIT.PARAMETERS:
						.BLKW	3
001026					QH.LOGGING.PARAMETERS:
						.BLKW	3
001034					QH.LOGGING.FILTERS:
						.BLKW	3
001042					QH.MODULE.PARAMETERS:
						.BLKW	3
001050					X.NOD.NDB:
						.BLKW	1
001052	000145 				X.NOD.PVB:
						.WORD	145
001054	000000G					.WORD	NMLVER
001056	000226 					.WORD	226
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  26
X00.89		NML$VDB_INITIALIZE as NL_VDI			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (4)

001060	000001 					.WORD	1
001062	000227 					.WORD	227
001064	000177 					.WORD	177
001066	000230 					.WORD	230
001070	000002 					.WORD	2
001072						.BLKB	14
001106					IOSB:	.BLKW	2


						.GLOBL	UM.RESET, UM.INITIALIZE, UM.GET
						.GLOBL	UM.RELEASE, UQ.RESET, UQ.INSERT
						.GLOBL	UQ.REMOVE, UQ.EXTRACT, UQ.LENGTH
						.GLOBL	UQ.SCAN, UQ.SEXTRACT, UN.LOCAL
						.GLOBL	NL.PVD, NL.PEX, NL.PSU, NL.PST
						.GLOBL	NL.PCH, NL.CLR, NL.RO, NL.PDT
						.GLOBL	NL.SCT, NL.CCT, NMLVER, LUN$NS
						.GLOBL	EFN$NS


	001004'				NODDB==		    QH.NODE.PARAMETERS
	001012'				LINDB==		    QH.LINE.PARAMETERS
	001020'				CKTDB==		    QH.CIRCUIT.PARAMETERS
	001026'				LOGDB==		    QH.LOGGING.PARAMETERS
	001034'				FLTDB==		    QH.LOGGING.FILTERS
	001042'				MODDB==		    QH.MODULE.PARAMETERS
	000000'				DATA.ID=	    P.AAA


						.SBTTL	NL.VDI NML$VDB_INITIALIZE as NL_VDI
000000						.PSECT	$CODE$,  RO 

000000	010146 				NL.VDI::MOV	R1,-(SP)			;					1003
000002	012746  001004'				MOV	#QH.NODE.PARAMETERS,-(SP)	;					1063
000006	004767  000000G				JSR	PC,UQ.RESET
000012	012716  001012'				MOV	#QH.LINE.PARAMETERS,(SP)	;					1064
000016	004767  000000G				JSR	PC,UQ.RESET
000022	012716  001020'				MOV	#QH.CIRCUIT.PARAMETERS,(SP)	;					1065
000026	004767  000000G				JSR	PC,UQ.RESET
000032	012716  001026'				MOV	#QH.LOGGING.PARAMETERS,(SP)	;					1066
000036	004767  000000G				JSR	PC,UQ.RESET
000042	012716  001034'				MOV	#QH.LOGGING.FILTERS,(SP)	;					1067
000046	004767  000000G				JSR	PC,UQ.RESET
000052	012716  001042'				MOV	#QH.MODULE.PARAMETERS,(SP)	;					1068
000056	004767  000000G				JSR	PC,UQ.RESET
000062	005016 					CLR	(SP)				;					1098
000064	004767  000000G				JSR	PC,UN.LOCAL
000070	010046 					MOV	R0,-(SP)
000072	004767  000000V				JSR	PC,SET.ENTITY.DB
000076	010067  001050'				MOV	R0,X.NOD.NDB
000102	010001 					MOV	R0,R1				; X.NOD.NDB,*				1100
000104	042761  003400  000016 			BIC	#3400,16(R1)
000112	052761  000400  000016 			BIS	#400,16(R1)
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  27
X00.89		NML$VDB_INITIALIZE as NL_VDI			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (4)

000120	012761  000004  000030 			MOV	#4,30(R1)			;					1101
000126	012761  000034  000032 			MOV	#34,32(R1)			;					1102
000134	012716  000034 				MOV	#34,(SP)			;					1104
000140	004767  000000G				JSR	PC,UM.GET
000144	010061  000034 				MOV	R0,34(R1)			;					1103
000150	012716  001052'				MOV	#X.NOD.PVB,(SP)			;					1106
000154	016700  001050'				MOV	X.NOD.NDB,R0
000160	016046  000034 				MOV	34(R0),-(SP)
000164	012746  000007 				MOV	#7,-(SP)
000170	004767  000000V				JSR	PC,COPY.PARAMETER.VECTOR
000174	012700  000000'				MOV	#PRM.BFR,R0			; *,PTR					1119
000200	116720  000000'				MOVB	DATA.ID,(R0)+			; *,PTR					1120
000204	116720  000001'				MOVB	DATA.ID+1,(R0)+			; *,PTR
000210	105020 					CLRB	(R0)+				; PTR					1121
000212	005046 					CLR	-(SP)				;					1122
000214	005046 					CLR	-(SP)
000216	005046 					CLR	-(SP)
000220	012746  000003 				MOV	#3,-(SP)
000224	016746  000002'				MOV	P.AAB,-(SP)
000230	010046 					MOV	R0,-(SP)			; PTR,*
000232	005046 					CLR	-(SP)
000234	012746  001106'				MOV	#IOSB,-(SP)
000240	012746  000000G				MOV	#EFN$NS,-(SP)
000244	012746  000000G				MOV	#LUN$NS,-(SP)
000250	012746  016670 				MOV	#16670,-(SP)
000254	012746  006003 				MOV	#6003,-(SP)
000260	104377 					EMT	377
000262	062706  000006 				ADD	#6,SP
000266	016716  001050'				MOV	X.NOD.NDB,(SP)			;					1123
000272	005046 					CLR	-(SP)
000274	012746  000000'				MOV	#PRM.BFR,-(SP)
000300	012746  000001 				MOV	#1,-(SP)
000304	004767  000000V				JSR	PC,INSERT.PARAMETER
000310	062706  000010 				ADD	#10,SP				;					1031
000314	012601 					MOV	(SP)+,R1			;					1003
000316	000207 					RTS	PC
; Routine Size:  104 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  19 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  28
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

;	  1179	%global_routine ('NML$VDB', FUNCTION, TYPE, ENTITY, QUALIFIER, SELECTOR, LENGTH, BUFFER, ERR_DETAIL) =
;	  1180	
;	  1181	!++
;	  1182	! FUNCTIONAL DESCRIPTION:
;	  1183	!
;	  1184	!	Performs operations on NML volatile parameters.
;	  1185	!
;	  1186	! FORMAL PARAMETERS
;	  1187	!
;	  1188	!	FUNCTION  - Code to denote whether the specified parameter is to be
;	  1189	!                   defined or purged, etc.
;	  1190	!       TYPE      - The NML entity type number of the entity to which the
;	  1191	!                   parameter pertains.
;	  1192	!       ENTITY    - Character sequence pointer to the entity id.
;	  1193	!       QUALIFIER - An optional character sequence pointer to a qualifier in
;	  1194	!                   parameter format.
;	  1195	!       SELECTOR  - For the return function, the class of entities to return.
;	  1196	!       LENGTH    - The address of a variable.
;	  1197	!		    For SHOW functions, the variable will
;	  1198	!		    contain the size of space available in the buffer.
;	  1199	!		    It will be reduced by the length of the data
;	  1200	!		    returned in the buffer.
;	  1201	!		    For SET and CLEAR functions, the address will
;	  1202	!		    contain the length of the specified parameter.
;	  1203	!       BUFFER   -  For SHOW functions, the address of a
;	  1204	!		    character sequence pointer to the buffer in which
;	  1205	!		    to return the parameter data.  These functions will
;	  1206	!		    update the pointer to point to the next available
;	  1207	!		    byte in the buffer.
;	  1208	!		    For SET and CLEAR functions, a character sequence
;	  1209	!		    pointer to the specific parameter.
;	  1210	!       ERR_DETAIL- The address of a variable in which to return the
;	  1211	!		    error detail field for the response message if this
;	  1212	!		    request fails.
;	  1213	!
;	  1214	! IMPLICIT INPUTS
;	  1215	!
;	  1216	!	NONE.
;	  1217	!
;	  1218	! ROUTINE VALUE:
;	  1219	!
;	  1220	!	NICE return code.
;	  1221	!
;	  1222	! SIDE EFFECTS:
;	  1223	!
;	  1224	!	NONE.
;	  1225	!
;	  1226	!--
;	  1227	
;	  1228	    begin
;	  1229	
;	  1230	    case .FUNCTION from %bliss36($NTSET) %bliss16(N$FSET) 
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  29
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

;	  1231	                   to %bliss36($NTRET) %bliss16(N$FRET)  of
;	  1232	        set
;	  1233	        [%bliss36($NTSET) %bliss16(N$FSET)]: ! Set parameter
;	  1234	            begin
;	  1235	            macro HIGHER_LAYER = NML <0, 1>%,
;	  1236	                  LOWER_LAYER = NML <1, 1>%;
;	  1237	            local NML, PARAMETER, RESULT;
;	  1238	
;	  1239	            PARAMETER = GETW_NA (.BUFFER); ! Get parameter number
;	  1240	
;	  1241	            if NML$VDB_PARAMETER (.TYPE, .PARAMETER)
;	  1242	            then NML = 1
;	  1243	            else NML = 2;
;	  1244	
;	  1245	            selectone .TYPE of
;	  1246	                set
;	  1247	                [NODE_E]:
;	  1248			    begin
;	  1249	                        local PTR, LOCAL_NODE; 
;	  1250	                        PTR = NMU$NETWORK_LOCAL();
;	  1251	                        LOCAL_NODE = ch$eql( 9, .PTR, 9, .ENTITY);
;	L 1252	%if $TOPS20
;	U 1253	%then
;	U 1254			    if NML$EXECUTOR_ONLY (.TYPE, .PARAMETER)
;	U 1255			    then
;	U 1256				if not .LOCAL_NODE
;	U 1257	                        then return $NICE$ERR_PNA;
;	  1258	%fi
;	  1259	                    selectone .PARAMETER of
;	  1260	                        set
;	  1261				[110, 501]:	    ! SERVICE CIRCUIT or CIRCUIT
;	  1262	                            begin
;	  1263				    PTR = ch$plus (.BUFFER, 2); ! Circuit_id
;	  1264				    if not ENTITY_IS_VALID (CIRCUIT_, .PTR)
;	  1265	                            then begin
;	  1266					.ERR_DETAIL = CIRCUIT_;
;	L 1267					 return $NICE$ERR_URC;
; %PRINT:	Unrecognized component
;	  1268					 end;
;	  1269	                            end;
;	  1270	
;	  1271	                        [500, 502]:         ! NAME or ADDRESS
;	  1272	                            begin
;	  1273	                            if .local_node
;	  1274	                            then begin
;	  1275					.ERR_DETAIL = NODE_E;
;	L 1276					 return $NICE$ERR_CWS;
; %PRINT:	Component in wrong state
;	  1277					 end;
;	  1278	                            end;
;	L 1279	%if $MCB
;	  1280	%then
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  30
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

;	  1281	                        [141]:              ! HOST
;	  1282	                            NML = 3;
;	  1283	%fi
;	  1284	                        [otherwise]:
;	  1285	                            0;
;	  1286	                        tes;
;	  1287			    end;
;	L 1288	%if $MCB
;	  1289	%then
;	  1290	                [LINE_, CIRCUIT_]:
;	  1291	                    if .PARAMETER eql 0
;	  1292	                    then NML = 3;
;	  1293	%fi
;	  1294	                [otherwise]:
;	  1295	                    ;
;	  1296	                tes;
;	  1297	
;	  1298	            if .HIGHER_LAYER            ! If NML parameter
;	  1299	            then RESULT = VDB_CHANGE (.FUNCTION,
;	  1300	                                      .TYPE,
;	  1301	                                      .QUALIFIER,
;	  1302	                                      .ENTITY,
;	  1303	                                      ..LENGTH,
;	  1304	                                      .BUFFER,
;	  1305					      .ERR_DETAIL);
;	  1306	
;	  1307	            if .LOWER_LAYER             ! If NMX parameter
;	  1308	            then begin
;	P 1309	                 RESULT = $NML$SET (.TYPE,
;	P 1310	                                    .ENTITY,
;	P 1311	                                    .QUALIFIER,
;	P 1312	                                    .LENGTH,
;	  1313	                                    .BUFFER);
;	  1314	
;	  1315			 if ((.RESULT eql NICE$_URC) or
;	  1316			     (.RESULT eql NICE$_CWS) or
;	  1317			     (.RESULT eql NICE$_IID))
;	  1318			 then .ERR_DETAIL = .TYPE;
;	  1319	                 end;
;	  1320	
;	  1321	            .RESULT
;	  1322	            end;
;	  1323	
;	  1324	        [%bliss36($NTCLR) %bliss16(N$FCLR)]: ! Clear parameter
;	  1325	            begin
;	  1326	            macro HIGHER_LAYER = NML <0, 1>%,
;	  1327	                  LOWER_LAYER = NML <1, 1>%;
;	  1328	            local NML, PARAMETER, VDB, NMX, RESULT;
;	  1329	
;	  1330	            if ..LENGTH eql 0
;	  1331	            then
;	  1332			begin
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  31
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

;	  1333			PARAMETER = -1;			! Clear ALL
;	  1334			NML = 3;
;	  1335			end
;	  1336	            else
;	  1337			begin
;	  1338	                PARAMETER = GETW_NA (.BUFFER); ! Get parameter number
;	  1339	                if NML$VDB_PARAMETER (.TYPE, .PARAMETER)
;	  1340	                then NML = 1
;	  1341	                else NML = 2;
;	  1342			end;
;	  1343	
;	  1344	            selectone .TYPE of
;	  1345	                set
;	  1346	                [NODE_E]:
;	  1347			    begin
;	  1348	                        local PTR, LOCAL_NODE; 
;	  1349	                        PTR = NMU$NETWORK_LOCAL();
;	  1350	                        LOCAL_NODE = ch$eql( 9, .PTR, 9, .ENTITY);
;	L 1351	%if $TOPS20
;	U 1352	%then
;	U 1353			    if NML$EXECUTOR_ONLY (.TYPE, .PARAMETER)
;	U 1354			    then
;	U 1355				if not .LOCAL_NODE
;	U 1356	                        then return $NICE$ERR_PNA;
;	  1357	%fi
;	  1358	                    selectone .PARAMETER of
;	  1359	                        set
;	  1360	                        [-1, 500, 502]:     ! ALL, NAME, or ADDRESS
;	  1361	                            begin
;	  1362	                            if .local_node
;	  1363	                            then begin
;	  1364					.ERR_DETAIL = NODE_E;
;	L 1365					 return $NICE$ERR_CWS;
; %PRINT:	Component in wrong state
;	  1366					 end;
;	  1367	                            end;
;	L 1368	%if $MCB
;	  1369	%then
;	  1370	                        [141]:              ! HOST
;	  1371	                            NML = 3;
;	  1372	%fi
;	  1373	                        [otherwise]:
;	  1374	                            ;
;	  1375	                        tes;
;	  1376			    end;
;	  1377	                [otherwise]:
;	  1378	                    ;
;	  1379	                tes;
;	  1380	
;	  1381	            if .HIGHER_LAYER            ! If NML parameter
;	  1382	            then RESULT = (VDB = VDB_CHANGE (.FUNCTION,
;	  1383	                                   	     .TYPE,
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  32
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

;	  1384	                                   	     .QUALIFIER,
;	  1385	                                   	     .ENTITY,
;	  1386	                                   	     ..LENGTH,
;	  1387	                                             .BUFFER,
;	  1388					   	     .ERR_DETAIL));
;	  1389	
;	  1390	            if .LOWER_LAYER             ! If NMX parameter
;	  1391	            then begin
;	P 1392	                 RESULT = (NMX = $NML$CLR (.TYPE,
;	P 1393	                                 	   .ENTITY,
;	P 1394		                                   .QUALIFIER,
;	P 1395		                                   .LENGTH,
;	  1396		                                   .BUFFER));
;	  1397	
;	  1398			 if .NMX eql NICE$_URC
;	  1399			 then .ERR_DETAIL = .TYPE;
;	  1400	                 end;
;	  1401	
;	  1402	            if (.VDB eql 1) and (.NML eql 3)
;	  1403	            then 1                      ! If either one succeed, ok
;	  1404	            else .RESULT                ! Return last result
;	  1405	            end;
;	  1406	
;	  1407	        [%bliss36($NTZRO) %bliss16(N$FZRO)]: ! Zero counters
;	  1408	            begin
;	  1409	            local
;	  1410	                NMX;
;	  1411	            NMX = $NML$ZERO (.TYPE, .ENTITY, .QUALIFIER);
;	  1412	
;	  1413		    if .NMX eql NICE$_URC
;	  1414		    then .ERR_DETAIL = .TYPE;
;	  1415	
;	  1416	            .NMX
;	  1417	            end;
;	  1418	
;	  1419	        [%bliss36($NTSHO) %bliss16(N$FSHO)]: ! Show parameters
;	  1420	            begin
;	  1421	            local VDB_CODE, RESULT;
;	  1422	
;	  1423	            !
;	  1424	            ! Get any parameters out of the volatile data base.
;	  1425	            !
;	  1426	
;	  1427	            VDB_CODE = VDB_READ (.FUNCTION,
;	  1428	                                 .TYPE,
;	  1429	                                 .ENTITY,
;	  1430	                                 .QUALIFIER,
;	  1431	                                 .SELECTOR,
;	  1432	                                 .LENGTH,
;	  1433	                                 .BUFFER,
;	  1434					 .ERR_DETAIL);
;	  1435	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  33
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

;	  1436	            if ((.VDB_CODE eql NICE$_REE) or  ! On resource error
;	  1437	                (.VDB_CODE eql NICE$_URC))    !  or illegal entity
;	  1438	            then return .VDB_CODE             !  return error, now
;	  1439	            else
;	  1440	
;	  1441	            !
;	  1442	            ! Try to get parameters kept at lower layers of architecture.
;	  1443	            ! There may not be any, or entity may not be known there.
;	  1444	            ! Fail only if the entity is not known in either NML or other
;	  1445	            ! layers.
;	  1446	            !
;	  1447	
;	  1448	                begin
;	  1449	                local BUFFER_LENGTH;
;	  1450	
;	  1451	                BUFFER_LENGTH = ..LENGTH;
;	P 1452	                RESULT = $NML$SHOW (.TYPE,
;	P 1453	                                    .ENTITY,
;	P 1454	                                    .QUALIFIER,
;	P 1455	                                    .SELECTOR,
;	P 1456	                                    BUFFER_LENGTH,
;	  1457	                                    ..BUFFER);
;	  1458	
;	  1459	                if .RESULT eql 1        ! If successful, update buffer length
;	  1460	                then .LENGTH = ..LENGTH - .BUFFER_LENGTH;
;	  1461	                end;
;	  1462	
;	  1463	            !
;	  1464	            ! If call across NMX interface failed, assume an empty buffer.
;	  1465	            ! Return NICE success if either VDB or NMX calls succeed.
;	  1466	            !
;	  1467	
;	  1468	            if (.VDB_CODE eql 1) then RESULT = 1;
;	L 1469	%if $TOPS20
;	U 1470	%then
;	U 1471	            if .RESULT eql NICE$_URC
;	U 1472	            then if (.TYPE eql CIRCUIT_) and ENTITY_IS_VALID (.TYPE, .ENTITY)
;	U 1473	                 then RESULT = 1;
;	  1474	%fi
;	  1475	            .RESULT
;	  1476	            end;
;	  1477	
;	  1478	        [%bliss36($NTSZC) %bliss16(N$FSZC)]: ! Show and zero counters
;	  1479	            begin
;	  1480	            local BUFFER_LENGTH, STATUS;
;	  1481	
;	  1482	            BUFFER_LENGTH = ..LENGTH;
;	P 1483	            STATUS = $NML$SHOZC (.TYPE,
;	P 1484	                                 .ENTITY,
;	P 1485	                                 .QUALIFIER,
;	P 1486	                                 BUFFER_LENGTH,
;	  1487	                                 ..BUFFER);
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  34
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

;	  1488	            .LENGTH = ..LENGTH - .BUFFER_LENGTH;
;	  1489	
;	  1490		    if .STATUS eql NICE$_URC
;	  1491		    then .ERR_DETAIL = .TYPE;
;	  1492	
;	  1493	            .STATUS
;	  1494	            end;
;	  1495	
;	  1496	        [%bliss36($NTRET) %bliss16(N$FRET)]: ! Return list of entity ids
;	  1497	            selectone .TYPE of
;	  1498	                set
;	  1499	                [NODE_E,
;	L 1500	%if not $TOPS20
;	  1501	%then            CIRCUIT_,
;	  1502	%fi
;	  1503	                 LINE_]:
;	  1504	                    begin
;	  1505	                    local BUF_LEN, BUF_PTR, LCL_ADDRESS, LCL_LEN, STATUS;
;	  1506	                    BUF_PTR = ..BUFFER;
;	  1507	                    BUF_LEN = ..LENGTH;
;	  1508	
;	  1509	                    !
;	  1510	                    ! If asking for ACT/KNO NOD, then put the exeutor first
;	  1511	                    !
;	  1512	
;	  1513	                    if (.TYPE eql NODE_E) and (.SELECTOR neq -3)
;	  1514	                    then
;	  1515	                        begin
;	  1516	                        LCL_ADDRESS = NMU$NETWORK_LOCAL ();
;	  1517	                        LCL_LEN = 3 + ch$rchar (ch$plus (.LCL_ADDRESS, 2));
;	  1518	                        if .LCL_LEN gtr ..LENGTH then return NICE$_REE;
;	  1519	                        BUF_PTR = ch$move (.LCL_LEN, .LCL_ADDRESS, .BUF_PTR);
;	  1520	                        BUF_LEN = .BUF_LEN - .LCL_LEN;
;	  1521	                        LCL_ADDRESS = GETW (LCL_ADDRESS);
;	  1522	                        end;
;	  1523	
;	P 1524	                    STATUS = $NML$RETURN (.TYPE,
;	P 1525	                                          .SELECTOR,
;	P 1526	                                          .QUALIFIER,
;	P 1527	                                          BUF_LEN,
;	  1528	                                          .BUF_PTR);
;	  1529	
;	  1530	                    if .STATUS eql 1    ! If successful,
;	  1531	                    then                ! then
;	  1532	                        begin           ! account for inserted info.
;	  1533	                        label SEARCH_FOR_EXECUTOR;
;	  1534	                        .LENGTH = ..LENGTH - .BUF_LEN;
;	  1535	                        if (.TYPE eql NODE_E) and (.SELECTOR neq -3)
;	  1536	                        then            ! For nodes,
;	  1537	SEARCH_FOR_EXECUTOR:                    ! juggle the executor.
;	  1538	                            begin       ! SEARCH_FOR_EXECUTOR
;	  1539	                            local CNT, LNG, TEMP;
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  35
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

;	  1540	                            .LENGTH = ..LENGTH - .LCL_LEN; ! Include our copy.
;	  1541	                            do          ! Look for returned copy
;	  1542	                                begin
;	  1543	                                if .BUF_LEN leq 0
;	  1544	                                then leave SEARCH_FOR_EXECUTOR;
;	  1545	                                TEMP = GETW(BUF_PTR);
;	  1546	                                CNT = GETB(BUF_PTR);
;	  1547	                                BUF_PTR = ch$plus (.BUF_PTR, .CNT);
;	  1548	                                BUF_LEN = .BUF_LEN - (3 + .CNT);
;	  1549	                                end
;	  1550	                            while .TEMP neq .LCL_ADDRESS;
;	  1551	                            ch$move (.BUF_LEN, .BUF_PTR, ch$plus (.BUF_PTR, -(3 + .CNT)));
;	  1552	                                        ! Squeeze returned copy out.
;	  1553	                            .LENGTH = ..LENGTH + (3 + .CNT);
;	  1554	                            end;        ! SEARCH_FOR_EXECUTOR
;	  1555	                        end;
;	  1556	
;	  1557	                    .STATUS
;	  1558	                    end;
;	L 1559	%if $TOPS20
;	U 1560	%then           [CIRCUIT_]:
;	U 1561	                    begin
;	U 1562	                    local BUFFER_LENGTH, STATUS;
;	U 1563	                    external routine NMU$DLX_RETURN_CIRCUITS;
;	U 1564	
;	U 1565	                    BUFFER_LENGTH = ..LENGTH;
;	U 1566	                    STATUS = NMU$DLX_RETURN_CIRCUITS (.SELECTOR,
;	U 1567	                                                      BUFFER_LENGTH,
;	U 1568	                                                      ..BUFFER);
;	U 1569	
;	U 1570	                    if .STATUS eql 1
;	U 1571	                    then .LENGTH = ..LENGTH - .BUFFER_LENGTH;
;	U 1572	
;	U 1573	                    .STATUS
;	U 1574	                    end;
;	  1575	%fi
;	  1576	                [LOGGING_]:
;	  1577	                    begin
;	  1578	                    local PBF : PBF_BLOCK;
;	  1579	                    PBF [PBF_LEN_ADR] = .LENGTH;
;	  1580	                    PBF [PBF_BUF_PTR_ADR] = .BUFFER;
;	  1581	                    PBF [PBF_SELECTOR] = .SELECTOR;
;	  1582	                    NMU$QUEUE_SCAN (QH_LOGGING_PARAMETERS, PBF [PBF_BASE], SELECT_LOGGING);
;	L 1583	                    if ..LENGTH lss 0 then return $NICE$ERR_REE;
; %PRINT:	Resource error
;	  1584	                    NICE$_SUC
;	  1585	                    end;
;	  1586	
;	  1587	                [MODULE_]:
;	  1588	                    begin
;	  1589	                    local LEN, NMX, PBM : PBM_BLOCK;
;	  1590	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  36
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

;	  1591	                    if .SELECTOR neq -1 ! Check for known qualifier
;	L 1592	                    then return $NICE$ERR_MPE;
; %PRINT:	Management program error
;	  1593	
;	  1594	                    PBM [PBM_LEN_ADR] = .LENGTH;
;	  1595	                    PBM [PBM_BUF_PTR_ADR] = .BUFFER;
;	  1596	                    PBM [PBM_SELECTOR] = .SELECTOR;
;	  1597	                    NMU$QUEUE_SCAN (QH_MODULE_PARAMETERS, PBM [PBM_BASE], SELECT_MODULE);
;	L 1598	                    if ..LENGTH lss 0 then return $NICE$ERR_REE;
; %PRINT:	Resource error
;	  1599	
;	  1600	                    LEN = ..LENGTH;
;	P 1601	                    NMX = $NML$RETURN (.TYPE, ! Get entity ids from NMX
;	P 1602	                                       .SELECTOR,
;	P 1603	                                       .QUALIFIER,
;	P 1604	                                       LEN,
;	  1605	                                       ..BUFFER);
;	  1606	
;	  1607	                    if .NMX eql 1       ! If successful, update buffer length
;	  1608	                    then .LENGTH = ..LENGTH - .LEN;
;	  1609	
;	  1610	                    if .NMX eql NICE$_REE then return .NMX;
;	  1611	
;	  1612	                    NICE$_SUC           ! Return success
;	  1613	                    end;
;	  1614	
;	  1615	                [otherwise]:
;	L 1616	                    $NICE$ERR_MPE;
; %PRINT:	Management program error
;	  1617	                tes;
;	  1618	
;	  1619	        [inrange,                       ! Invalid function code
;	  1620	         outrange]:
;	L 1621	            $NICE$ERR_MPE;
; %PRINT:	Management program error
;	  1622	        tes
;	  1623	
;	  1624	    end;				! End of NML$VDB


						.GLOBL	LUN$NM, EFN$NM


						.SBTTL	NL.VDB NML$VDB as NL_VDB
000000	004167  000000G			NL.VDB::JSR	R1,$SAVE5			;					1179
000004	162706  000032 				SUB	#32,SP
000010	016666  000066  000004 			MOV	66(SP),4(SP)			; FUNCTION,*				1230
000016	016600  000004 				MOV	4(SP),R0			;					1228
000022	005300 					DEC	R0
000024	020027  000005 				CMP	R0,#5
000030	101003 					BHI	1$
000032	006300 					ASL	R0
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  37
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

000034	066007  000004'				ADD	P.AAC(R0),PC			; Case dispatch
000040	000167  003140 			1$:	JMP	81$
000044	016666  000052  000006 		2$:	MOV	52(SP),6(SP)			; BUFFER,*				1239
000052	117666  000006  000030 			MOVB	@6(SP),30(SP)			; *,$$GETW.NA.X
000060	016600  000006 				MOV	6(SP),R0
000064	116066  000001  000031 			MOVB	1(R0),31(SP)			; *,$$GETW.NA.X
000072	016605  000030 				MOV	30(SP),R5			; $$GETW.NA.X,*
000076	010501 					MOV	R5,R1				; *,PARAMETER
000100	016603  000064 				MOV	64(SP),R3			; TYPE,*				1241
000104	010346 					MOV	R3,-(SP)
000106	010146 					MOV	R1,-(SP)			; PARAMETER,*
000110	004767  000000G				JSR	PC,NL.PVD
000114	022626 					CMP	(SP)+,(SP)+
000116	006000 					ROR	R0
000120	103003 					BCC	3$
000122	012702  000001 				MOV	#1,R2				; *,NML					1242
000126	000402 					BR	4$				;					1241
000130	012702  000002 			3$:	MOV	#2,R2				; *,NML					1243
000134	005703 				4$:	TST	R3				;					1245
000136	001073 					BNE	10$
000140	004767  000000G				JSR	PC,UN.LOCAL			;					1250
000144	010004 					MOV	R0,R4				; *,PTR
000146	012746  000011 				MOV	#11,-(SP)			;					1251
000152	010446 					MOV	R4,-(SP)			; PTR,*
000154	012746  000011 				MOV	#11,-(SP)
000160	016646  000070 				MOV	70(SP),-(SP)			; ENTITY,*
000164	005046 					CLR	-(SP)
000166	004767  000000G				JSR	PC,BL$EQL
000172	020127  000156 				CMP	R1,#156				; PARAMETER,*				1259
000176	001403 					BEQ	5$
000200	020127  000765 				CMP	R1,#765				; PARAMETER,*
000204	001026 					BNE	6$
000206	012746  000002 			5$:	MOV	#2,-(SP)			;					1263
000212	066616  000022 				ADD	22(SP),(SP)
000216	012604 					MOV	(SP)+,R4			; *,PTR
000220	012716  000003 				MOV	#3,(SP)				;					1264
000224	010446 					MOV	R4,-(SP)			; PTR,*
000226	004767  000000V				JSR	PC,ENTITY.IS.VALID
000232	005726 					TST	(SP)+
000234	006000 					ROR	R0
000236	103430 					BLO	9$
000240	012776  000003  000062 			MOV	#3,@62(SP)			; *,ERR.DETAIL				1266
000246	062706  000012 				ADD	#12,SP				;					1264
000252	012700  177770 				MOV	#-10,R0				;					1265
000256	000167  002726 				JMP	82$
000262	020127  000764 			6$:	CMP	R1,#764				; PARAMETER,*				1259
000266	001403 					BEQ	7$
000270	020127  000766 				CMP	R1,#766				; PARAMETER,*
000274	001004 					BNE	8$
000276	006000 				7$:	ROR	R0				; LOCAL.NODE				1273
000300	103007 					BCC	9$
000302	000167  000476 				JMP	25$				;					1275
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  38
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

000306	020127  000215 			8$:	CMP	R1,#215				; PARAMETER,*				1259
000312	001002 					BNE	9$
000314	012702  000003 				MOV	#3,R2				; *,NML					1282
000320	062706  000012 			9$:	ADD	#12,SP				;					1248
000324	000412 					BR	12$				;					1245
000326	020327  000001 			10$:	CMP	R3,#1
000332	001403 					BEQ	11$
000334	020327  000003 				CMP	R3,#3
000340	001004 					BNE	12$
000342	005701 				11$:	TST	R1				; PARAMETER				1291
000344	001002 					BNE	12$
000346	012702  000003 				MOV	#3,R2				; *,NML					1292
000352	032702  000001 			12$:	BIT	#1,R2				; *,NML					1298
000356	001422 					BEQ	13$
000360	016646  000004 				MOV	4(SP),-(SP)			;					1299
000364	010346 					MOV	R3,-(SP)
000366	016646  000064 				MOV	64(SP),-(SP)			; QUALIFIER,*
000372	016646  000070 				MOV	70(SP),-(SP)			; ENTITY,*
000376	017646  000064 				MOV	@64(SP),-(SP)			; LENGTH,*
000402	016646  000020 				MOV	20(SP),-(SP)
000406	016646  000064 				MOV	64(SP),-(SP)			; ERR.DETAIL,*
000412	004767  000000V				JSR	PC,VDB.CHANGE
000416	010001 					MOV	R0,R1				; *,RESULT
000420	062706  000016 				ADD	#16,SP
000424	032702  000002 			13$:	BIT	#2,R2				; *,NML					1307
000430	001465 					BEQ	19$
000432	005046 					CLR	-(SP)				;					1313
000434	016646  000062 				MOV	62(SP),-(SP)			; QUALIFIER,*
000440	016646  000066 				MOV	66(SP),-(SP)			; ENTITY,*
000444	010300 					MOV	R3,R0
000446	005200 					INC	R0
000450	072027  000010 				ASH	#10,R0
000454	010046 					MOV	R0,-(SP)
000456	052716  000002 				BIS	#2,(SP)
000462	017646  000064 				MOV	@64(SP),-(SP)			; LENGTH,*
000466	005716 					TST	(SP)				; LENGTH
000470	001002 					BNE	14$
000472	005046 					CLR	-(SP)
000474	000402 					BR	15$
000476	016646  000020 			14$:	MOV	20(SP),-(SP)
000502	005046 				15$:	CLR	-(SP)
000504	012746  000046 				MOV	#46,-(SP)
000510	060616 					ADD	SP,(SP)				; IOSB,*
000512	012746  000000G				MOV	#EFN$NM,-(SP)
000516	012746  000000G				MOV	#LUN$NM,-(SP)
000522	012746  016400 				MOV	#16400,-(SP)
000526	012746  006003 				MOV	#6003,-(SP)
000532	104377 					EMT	377
000534	010576  000054 				MOV	R5,@54(SP)			; *,LENGTH
000540	116600  000026 				MOVB	26(SP),R0			; IOSB,*
000544	002403 					BLT	16$
000546	012701  000001 				MOV	#1,R1				; *,RESULT
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  39
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

000552	000401 					BR	17$
000554	010001 				16$:	MOV	R0,R1				; *,RESULT
000556	020127  177770 			17$:	CMP	R1,#-10				; RESULT,*				1315
000562	001406 					BEQ	18$
000564	020127  177765 				CMP	R1,#-13				; RESULT,*				1316
000570	001403 					BEQ	18$
000572	020127  177767 				CMP	R1,#-11				; RESULT,*				1317
000576	001002 					BNE	19$
000600	010376  000050 			18$:	MOV	R3,@50(SP)			; *,ERR.DETAIL				1318
000604	000167  002006 			19$:	JMP	68$				;					1228
000610	017602  000054 			20$:	MOV	@54(SP),R2			; LENGTH,*				1330
000614	005066  000006 				CLR	6(SP)
000620	005702 					TST	R2
000622	001007 					BNE	21$
000624	005266  000006 				INC	6(SP)
000630	012704  177777 				MOV	#-1,R4				; *,PARAMETER				1333
000634	012705  000003 				MOV	#3,R5				; *,NML					1334
000640	000427 					BR	23$				;					1330
000642	117666  000052  000030 		21$:	MOVB	@52(SP),30(SP)			; BUFFER,$$GETW.NA.X			1338
000650	016600  000052 				MOV	52(SP),R0			; BUFFER,*
000654	116066  000001  000031 			MOVB	1(R0),31(SP)			; *,$$GETW.NA.X
000662	016604  000030 				MOV	30(SP),R4			; $$GETW.NA.X,PARAMETER
000666	016646  000064 				MOV	64(SP),-(SP)			; TYPE,*				1339
000672	010446 					MOV	R4,-(SP)			; PARAMETER,*
000674	004767  000000G				JSR	PC,NL.PVD
000700	022626 					CMP	(SP)+,(SP)+
000702	006000 					ROR	R0
000704	103003 					BCC	22$
000706	012705  000001 				MOV	#1,R5				; *,NML					1340
000712	000402 					BR	23$				;					1339
000714	012705  000002 			22$:	MOV	#2,R5				; *,NML					1341
000720	016603  000064 			23$:	MOV	64(SP),R3			; TYPE,*				1344
000724	001046 					BNE	29$
000726	004767  000000G				JSR	PC,UN.LOCAL			;					1349
000732	012746  000011 				MOV	#11,-(SP)			;					1350
000736	010046 					MOV	R0,-(SP)			; PTR,*
000740	012746  000011 				MOV	#11,-(SP)
000744	016646  000070 				MOV	70(SP),-(SP)			; ENTITY,*
000750	005046 					CLR	-(SP)
000752	004767  000000G				JSR	PC,BL$EQL
000756	020427  177777 				CMP	R4,#-1				; PARAMETER,*				1358
000762	001406 					BEQ	24$
000764	020427  000764 				CMP	R4,#764				; PARAMETER,*
000770	001403 					BEQ	24$
000772	020427  000766 				CMP	R4,#766				; PARAMETER,*
000776	001012 					BNE	27$
001000	006000 				24$:	ROR	R0				; LOCAL.NODE				1362
001002	103015 					BCC	28$
001004	005076  000062 			25$:	CLR	@62(SP)				; ERR.DETAIL				1364
001010	062706  000012 				ADD	#12,SP				;					1362
001014	012700  177765 				MOV	#-13,R0				;					1363
001020	000167  002164 			26$:	JMP	82$
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  40
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

001024	020427  000215 			27$:	CMP	R4,#215				; PARAMETER,*				1358
001030	001002 					BNE	28$
001032	012705  000003 				MOV	#3,R5				; *,NML					1371
001036	062706  000012 			28$:	ADD	#12,SP				;					1347
001042	032705  000001 			29$:	BIT	#1,R5				; *,NML					1381
001046	001422 					BEQ	30$
001050	016646  000004 				MOV	4(SP),-(SP)			;					1382
001054	010346 					MOV	R3,-(SP)
001056	016646  000064 				MOV	64(SP),-(SP)			; QUALIFIER,*
001062	016646  000070 				MOV	70(SP),-(SP)			; ENTITY,*
001066	010246 					MOV	R2,-(SP)
001070	016646  000064 				MOV	64(SP),-(SP)			; BUFFER,*
001074	016646  000064 				MOV	64(SP),-(SP)			; ERR.DETAIL,*
001100	004767  000000V				JSR	PC,VDB.CHANGE
001104	010004 					MOV	R0,R4				; *,VDB
001106	010001 					MOV	R0,R1				; *,RESULT
001110	062706  000016 				ADD	#16,SP
001114	032705  000002 			30$:	BIT	#2,R5				; *,NML					1390
001120	001460 					BEQ	34$
001122	005046 					CLR	-(SP)				;					1396
001124	016646  000062 				MOV	62(SP),-(SP)			; QUALIFIER,*
001130	016646  000066 				MOV	66(SP),-(SP)			; ENTITY,*
001134	010300 					MOV	R3,R0
001136	005200 					INC	R0
001140	072027  000010 				ASH	#10,R0
001144	010046 					MOV	R0,-(SP)
001146	052716  000004 				BIS	#4,(SP)
001152	010246 					MOV	R2,-(SP)
001154	032766  000001  000020 			BIT	#1,20(SP)
001162	001402 					BEQ	31$
001164	005046 					CLR	-(SP)
001166	000402 					BR	32$
001170	016646  000064 			31$:	MOV	64(SP),-(SP)			; BUFFER,*
001174	005046 				32$:	CLR	-(SP)
001176	012746  000046 				MOV	#46,-(SP)
001202	060616 					ADD	SP,(SP)				; IOSB,*
001204	012746  000000G				MOV	#EFN$NM,-(SP)
001210	012746  000000G				MOV	#LUN$NM,-(SP)
001214	012746  016400 				MOV	#16400,-(SP)
001220	012746  006003 				MOV	#6003,-(SP)
001224	104377 					EMT	377
001226	016676  000030  000054 			MOV	30(SP),@54(SP)			; IOSB+2,LENGTH
001234	116600  000026 				MOVB	26(SP),R0			; IOSB,*
001240	002402 					BLT	33$
001242	012700  000001 				MOV	#1,R0				; *,NMX
001246	010001 				33$:	MOV	R0,R1				; NMX,RESULT				1392
001250	020027  177770 				CMP	R0,#-10				; NMX,*					1398
001254	001002 					BNE	34$
001256	010376  000050 				MOV	R3,@50(SP)			; *,ERR.DETAIL				1399
001262	005304 				34$:	DEC	R4				; VDB					1402
001264	001002 					BNE	35$
001266	020527  000003 				CMP	R5,#3				; NML,*
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  41
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

001272	001402 				35$:	BEQ	36$
001274	000167  001316 				JMP	68$
001300	000167  001672 			36$:	JMP	80$
001304	005046 				37$:	CLR	-(SP)				;					1411
001306	016646  000062 				MOV	62(SP),-(SP)			; QUALIFIER,*
001312	016646  000066 				MOV	66(SP),-(SP)			; ENTITY,*
001316	016600  000072 				MOV	72(SP),R0			; TYPE,*
001322	005200 					INC	R0
001324	072027  000010 				ASH	#10,R0
001330	010046 					MOV	R0,-(SP)
001332	052716  000006 				BIS	#6,(SP)
001336	005046 					CLR	-(SP)
001340	005046 					CLR	-(SP)
001342	005046 					CLR	-(SP)
001344	012746  000046 				MOV	#46,-(SP)
001350	060616 					ADD	SP,(SP)				; IOSB,*
001352	012746  000000G				MOV	#EFN$NM,-(SP)
001356	012746  000000G				MOV	#LUN$NM,-(SP)
001362	012746  016400 				MOV	#16400,-(SP)
001366	012746  006003 				MOV	#6003,-(SP)
001372	104377 					EMT	377
001374	116600  000026 				MOVB	26(SP),R0			; IOSB,*
001400	002402 					BLT	38$
001402	012700  000001 				MOV	#1,R0				; *,NMX
001406	020027  177770 			38$:	CMP	R0,#-10				; NMX,*					1413
001412	001202 					BNE	26$
001414	000167  000424 				JMP	52$				;					1414
001420	016646  000004 			39$:	MOV	4(SP),-(SP)			;					1427
001424	016646  000066 				MOV	66(SP),-(SP)			; TYPE,*
001430	016646  000066 				MOV	66(SP),-(SP)			; ENTITY,*
001434	016646  000066 				MOV	66(SP),-(SP)			; QUALIFIER,*
001440	016601  000066 				MOV	66(SP),R1			; SELECTOR,*				1431
001444	010146 					MOV	R1,-(SP)			;					1427
001446	016604  000066 				MOV	66(SP),R4			; LENGTH,*				1432
001452	010446 					MOV	R4,-(SP)			;					1427
001454	016646  000066 				MOV	66(SP),-(SP)			; BUFFER,*
001460	016646  000066 				MOV	66(SP),-(SP)			; ERR.DETAIL,*
001464	004767  000000V				JSR	PC,VDB.READ
001470	010002 					MOV	R0,R2				; *,VDB.CODE
001472	020227  177761 				CMP	R2,#-17				; VDB.CODE,*				1436
001476	001403 					BEQ	40$
001500	020227  177770 				CMP	R2,#-10				; VDB.CODE,*				1437
001504	001004 					BNE	41$
001506	062706  000020 			40$:	ADD	#20,SP				;					1438
001512	010200 					MOV	R2,R0				; VDB.CODE,*
001514	000556 					BR	53$
001516	011403 				41$:	MOV	(R4),R3				; *,BUFFER.LENGTH			1451
001520	005046 					CLR	-(SP)				;					1457
001522	016646  000102 				MOV	102(SP),-(SP)			; QUALIFIER,*
001526	016646  000106 				MOV	106(SP),-(SP)			; ENTITY,*
001532	005701 					TST	R1
001534	002003 					BGE	42$
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  42
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

001536	010100 					MOV	R1,R0
001540	005400 					NEG	R0
001542	000402 					BR	43$
001544	010100 				42$:	MOV	R1,R0
001546	005200 					INC	R0
001550	072027  000014 			43$:	ASH	#14,R0
001554	010001 					MOV	R0,R1
001556	016600  000112 				MOV	112(SP),R0			; TYPE,*
001562	005200 					INC	R0
001564	072027  000010 				ASH	#10,R0
001570	050100 					BIS	R1,R0
001572	010046 					MOV	R0,-(SP)
001574	052716  000010 				BIS	#10,(SP)
001600	010346 					MOV	R3,-(SP)			; BUFFER.LENGTH,*
001602	001002 					BNE	44$
001604	005046 					CLR	-(SP)
001606	000402 					BR	45$
001610	017646  000104 			44$:	MOV	@104(SP),-(SP)			; BUFFER,*
001614	005046 				45$:	CLR	-(SP)
001616	012746  000066 				MOV	#66,-(SP)
001622	060616 					ADD	SP,(SP)				; IOSB,*
001624	012746  000000G				MOV	#EFN$NM,-(SP)
001630	012746  000000G				MOV	#LUN$NM,-(SP)
001634	012746  016400 				MOV	#16400,-(SP)
001640	012746  006003 				MOV	#6003,-(SP)
001644	104377 					EMT	377
001646	062706  000020 				ADD	#20,SP
001652	016603  000030 				MOV	30(SP),R3			; IOSB+2,BUFFER.LENGTH
001656	116600  000026 				MOVB	26(SP),R0			; IOSB,*
001662	002402 					BLT	46$
001664	012700  000001 				MOV	#1,R0				; *,RESULT
001670	020027  000001 			46$:	CMP	R0,#1				; RESULT,*				1459
001674	001001 					BNE	47$
001676	160314 					SUB	R3,(R4)				; BUFFER.LENGTH,*			1460
001700	005302 				47$:	DEC	R2				; VDB.CODE				1468
001702	001063 					BNE	53$
001704	000167  001266 				JMP	80$
001710	017601  000054 			48$:	MOV	@54(SP),R1			; LENGTH,BUFFER.LENGTH			1482
001714	005046 					CLR	-(SP)				;					1487
001716	016646  000062 				MOV	62(SP),-(SP)			; QUALIFIER,*
001722	016646  000066 				MOV	66(SP),-(SP)			; ENTITY,*
001726	016600  000072 				MOV	72(SP),R0			; TYPE,*
001732	005200 					INC	R0
001734	072027  000010 				ASH	#10,R0
001740	010046 					MOV	R0,-(SP)
001742	052716  000012 				BIS	#12,(SP)
001746	010146 					MOV	R1,-(SP)			; BUFFER.LENGTH,*
001750	001002 					BNE	49$
001752	005046 					CLR	-(SP)
001754	000402 					BR	50$
001756	017646  000064 			49$:	MOV	@64(SP),-(SP)			; BUFFER,*
001762	005046 				50$:	CLR	-(SP)
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  43
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

001764	012746  000046 				MOV	#46,-(SP)
001770	060616 					ADD	SP,(SP)				; IOSB,*
001772	012746  000000G				MOV	#EFN$NM,-(SP)
001776	012746  000000G				MOV	#LUN$NM,-(SP)
002002	012746  016400 				MOV	#16400,-(SP)
002006	012746  006003 				MOV	#6003,-(SP)
002012	104377 					EMT	377
002014	016601  000030 				MOV	30(SP),R1			; IOSB+2,BUFFER.LENGTH
002020	116600  000026 				MOVB	26(SP),R0			; IOSB,*
002024	002402 					BLT	51$
002026	012700  000001 				MOV	#1,R0				; *,STATUS
002032	160176  000054 			51$:	SUB	R1,@54(SP)			; BUFFER.LENGTH,LENGTH			1488
002036	020027  177770 				CMP	R0,#-10				; STATUS,*				1490
002042	001003 					BNE	53$
002044	016676  000064  000050 		52$:	MOV	64(SP),@50(SP)			; TYPE,ERR.DETAIL			1491
002052	000167  001132 			53$:	JMP	82$				;					1228
002056	016602  000064 			54$:	MOV	64(SP),R2			; TYPE,*				1497
002062	002403 					BLT	55$
002064	020227  000001 				CMP	R2,#1
002070	003405 					BLE	56$
002072	020227  000003 			55$:	CMP	R2,#3
002076	001402 					BEQ	56$
002100	000167  000516 				JMP	69$
002104	017605  000052 			56$:	MOV	@52(SP),R5			; BUFFER,BUF.PTR			1506
002110	016666  000054  000006 			MOV	54(SP),6(SP)			; LENGTH,*				1507
002116	017616  000006 				MOV	@6(SP),(SP)			; *,BUF.LEN
002122	005066  000004 				CLR	4(SP)				;					1513
002126	005702 					TST	R2
002130	001057 					BNE	58$
002132	005266  000004 				INC	4(SP)
002136	026627  000056  177775 			CMP	56(SP),#-3			; SELECTOR,*
002144	001451 					BEQ	58$
002146	004767  000000G				JSR	PC,UN.LOCAL			;					1516
002152	010066  000002 				MOV	R0,2(SP)			; *,LCL.ADDRESS
002156	005004 					CLR	R4				; LCL.LEN				1517
002160	156004  000002 				BISB	2(R0),R4			; *(LCL.ADDRESS),LCL.LEN
002164	062704  000003 				ADD	#3,R4				; *,LCL.LEN
002170	020476  000006 				CMP	R4,@6(SP)			; LCL.LEN,*				1518
002174	003402 					BLE	57$
002176	000167  000602 				JMP	72$
002202	010446 				57$:	MOV	R4,-(SP)			; LCL.LEN,*				1519
002204	010046 					MOV	R0,-(SP)			; LCL.ADDRESS,*
002206	010546 					MOV	R5,-(SP)			; BUF.PTR,*
002210	004767  000000G				JSR	PC,BL$MOV
002214	010005 					MOV	R0,R5				; *,BUF.PTR
002216	160466  000006 				SUB	R4,6(SP)			; LCL.LEN,BUF.LEN			1520
002222	005266  000010 				INC	10(SP)				; LCL.ADDRESS				1521
002226	016600  000010 				MOV	10(SP),R0			; LCL.ADDRESS,*
002232	116066  177777  000036 			MOVB	-1(R0),36(SP)			; *(LCL.ADDRESS),$$GETB.X
002240	005266  000010 				INC	10(SP)				; LCL.ADDRESS
002244	016600  000010 				MOV	10(SP),R0			; LCL.ADDRESS,*
002250	116066  177777  000037 			MOVB	-1(R0),37(SP)			; *(LCL.ADDRESS),$$GETB.X
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  44
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

002256	016666  000036  000010 			MOV	36(SP),10(SP)			; $$GETB.X,LCL.ADDRESS
002264	062706  000006 				ADD	#6,SP				;					1515
002270	005046 				58$:	CLR	-(SP)				;					1528
002272	016646  000062 				MOV	62(SP),-(SP)			; QUALIFIER,*
002276	005046 					CLR	-(SP)
002300	016603  000064 				MOV	64(SP),R3			; SELECTOR,*
002304	002003 					BGE	59$
002306	010300 					MOV	R3,R0
002310	005400 					NEG	R0
002312	000402 					BR	60$
002314	010300 				59$:	MOV	R3,R0
002316	005200 					INC	R0
002320	072027  000014 			60$:	ASH	#14,R0
002324	010001 					MOV	R0,R1
002326	010200 					MOV	R2,R0
002330	005200 					INC	R0
002332	072027  000010 				ASH	#10,R0
002336	050100 					BIS	R1,R0
002340	010046 					MOV	R0,-(SP)
002342	052716  000014 				BIS	#14,(SP)
002346	016646  000010 				MOV	10(SP),-(SP)			; BUF.LEN,*
002352	005716 					TST	(SP)				; BUF.LEN
002354	001002 					BNE	61$
002356	005046 					CLR	-(SP)
002360	000401 					BR	62$
002362	010546 				61$:	MOV	R5,-(SP)			; BUF.PTR,*
002364	005046 				62$:	CLR	-(SP)
002366	012746  000046 				MOV	#46,-(SP)
002372	060616 					ADD	SP,(SP)				; IOSB,*
002374	012746  000000G				MOV	#EFN$NM,-(SP)
002400	012746  000000G				MOV	#LUN$NM,-(SP)
002404	012746  016400 				MOV	#16400,-(SP)
002410	012746  006003 				MOV	#6003,-(SP)
002414	104377 					EMT	377
002416	016616  000030 				MOV	30(SP),(SP)			; IOSB+2,BUF.LEN
002422	116600  000026 				MOVB	26(SP),R0			; IOSB,*
002426	002403 					BLT	63$
002430	012701  000001 				MOV	#1,R1				; *,STATUS
002434	000401 					BR	64$
002436	010001 				63$:	MOV	R0,R1				; *,STATUS
002440	020127  000001 			64$:	CMP	R1,#1				; STATUS,*				1530
002444	001064 					BNE	68$
002446	161676  000006 				SUB	(SP),@6(SP)			; BUF.LEN,*				1534
002452	032766  000001  000004 			BIT	#1,4(SP)			;					1535
002460	001456 					BEQ	68$
002462	020327  177775 				CMP	R3,#-3
002466	001453 					BEQ	68$
002470	160476  000006 				SUB	R4,@6(SP)			; LCL.LEN,*				1540
002474	005716 				65$:	TST	(SP)				; BUF.LEN				1543
002476	003003 					BGT	66$
002500	162706  000006 				SUB	#6,SP				;					1544
002504	000442 					BR	67$
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  45
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

002506	112566  000030 			66$:	MOVB	(R5)+,30(SP)			; BUF.PTR,$$GETB.X			1545
002512	112566  000031 				MOVB	(R5)+,31(SP)			; BUF.PTR,$$GETB.X
002516	016603  000030 				MOV	30(SP),R3			; $$GETB.X,TEMP
002522	005004 					CLR	R4				; CNT					1546
002524	152504 					BISB	(R5)+,R4			; BUF.PTR,CNT
002526	060405 					ADD	R4,R5				; CNT,BUF.PTR				1547
002530	011600 					MOV	(SP),R0				; BUF.LEN,*				1548
002532	160400 					SUB	R4,R0				; CNT,*
002534	010016 					MOV	R0,(SP)				; *,BUF.LEN
002536	162716  000003 				SUB	#3,(SP)				; *,BUF.LEN
002542	020366  000002 				CMP	R3,2(SP)			; TEMP,LCL.ADDRESS			1550
002546	001352 					BNE	65$
002550	011646 					MOV	(SP),-(SP)			; BUF.LEN,*				1551
002552	010546 					MOV	R5,-(SP)			; BUF.PTR,*
002554	012700  000003 				MOV	#3,R0
002560	060400 					ADD	R4,R0				; CNT,*
002562	010546 					MOV	R5,-(SP)			; BUF.PTR,*
002564	160016 					SUB	R0,(SP)
002566	004767  000000G				JSR	PC,BL$MOV
002572	010400 					MOV	R4,R0				; CNT,*					1553
002574	067600  000014 				ADD	@14(SP),R0
002600	010076  000014 				MOV	R0,@14(SP)
002604	062776  000003  000014 			ADD	#3,@14(SP)
002612	062706  000006 			67$:	ADD	#6,SP				;					1535
002616	010100 				68$:	MOV	R1,R0				; STATUS,*				1497
002620	000573 					BR	82$
002622	020227  000002 			69$:	CMP	R2,#2
002626	001030 					BNE	70$
002630	016666  000054  000022 			MOV	54(SP),22(SP)			; LENGTH,PBF+12				1579
002636	016666  000052  000020 			MOV	52(SP),20(SP)			; BUFFER,PBF+10				1580
002644	116666  000056  000030 			MOVB	56(SP),30(SP)			; SELECTOR,PBF+20			1581
002652	012746  001026'				MOV	#QH.LOGGING.PARAMETERS,-(SP)	;					1582
002656	012746  000014 				MOV	#14,-(SP)
002662	060616 					ADD	SP,(SP)				; PBF,*
002664	012746  000000V				MOV	#SELECT.LOGGING,-(SP)
002670	004767  000000G				JSR	PC,UQ.SCAN
002674	005776  000062 				TST	@62(SP)				; LENGTH				1583
002700	002437 					BLT	71$
002702	062706  000006 				ADD	#6,SP				;					1577
002706	000533 					BR	80$				;					1497
002710	020227  000004 			70$:	CMP	R2,#4
002714	001133 					BNE	81$
002716	016604  000056 				MOV	56(SP),R4			; SELECTOR,*				1591
002722	020427  177777 				CMP	R4,#-1
002726	001126 					BNE	81$				;					1592
002730	016601  000054 				MOV	54(SP),R1			; LENGTH,*				1594
002734	010166  000026 				MOV	R1,26(SP)			; *,PBM+2
002740	016666  000052  000024 			MOV	52(SP),24(SP)			; BUFFER,PBM				1595
002746	110466  000030 				MOVB	R4,30(SP)			; *,PBM+4				1596
002752	012746  001042'				MOV	#QH.MODULE.PARAMETERS,-(SP)	;					1597
002756	012746  000030 				MOV	#30,-(SP)
002762	060616 					ADD	SP,(SP)				; PBM,*
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  46
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

002764	012746  000000V				MOV	#SELECT.MODULE,-(SP)
002770	004767  000000G				JSR	PC,UQ.SCAN
002774	005711 					TST	(R1)				;					1598
002776	002005 					BGE	73$
003000	062706  000006 			71$:	ADD	#6,SP
003004	012700  177761 			72$:	MOV	#-17,R0
003010	000477 					BR	82$
003012	011105 				73$:	MOV	(R1),R5				; *,LEN					1600
003014	005046 					CLR	-(SP)				;					1605
003016	016646  000070 				MOV	70(SP),-(SP)			; QUALIFIER,*
003022	005046 					CLR	-(SP)
003024	005704 					TST	R4
003026	002003 					BGE	74$
003030	010400 					MOV	R4,R0
003032	005400 					NEG	R0
003034	000402 					BR	75$
003036	010400 				74$:	MOV	R4,R0
003040	005200 					INC	R0
003042	072027  000014 			75$:	ASH	#14,R0
003046	010004 					MOV	R0,R4
003050	010200 					MOV	R2,R0
003052	005200 					INC	R0
003054	072027  000010 				ASH	#10,R0
003060	050400 					BIS	R4,R0
003062	010046 					MOV	R0,-(SP)
003064	052716  000014 				BIS	#14,(SP)
003070	010546 					MOV	R5,-(SP)			; LEN,*
003072	001002 					BNE	76$
003074	005046 					CLR	-(SP)
003076	000402 					BR	77$
003100	017646  000072 			76$:	MOV	@72(SP),-(SP)			; BUFFER,*
003104	005046 				77$:	CLR	-(SP)
003106	012746  000046 				MOV	#46,-(SP)
003112	060616 					ADD	SP,(SP)				; IOSB,*
003114	012746  000000G				MOV	#EFN$NM,-(SP)
003120	012746  000000G				MOV	#LUN$NM,-(SP)
003124	012746  016400 				MOV	#16400,-(SP)
003130	012746  006003 				MOV	#6003,-(SP)
003134	104377 					EMT	377
003136	062706  000006 				ADD	#6,SP
003142	016605  000022 				MOV	22(SP),R5			; IOSB+2,LEN
003146	116600  000020 				MOVB	20(SP),R0			; IOSB,*
003152	002402 					BLT	78$
003154	012700  000001 				MOV	#1,R0				; *,NMX
003160	020027  000001 			78$:	CMP	R0,#1				; NMX,*					1607
003164	001001 					BNE	79$
003166	160511 					SUB	R5,(R1)				; LEN,*					1608
003170	020027  177761 			79$:	CMP	R0,#-17				; NMX,*					1610
003174	001405 					BEQ	82$
003176	012700  000001 			80$:	MOV	#1,R0				;					1497
003202	000402 					BR	82$
003204	012700  177773 			81$:	MOV	#-5,R0
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  47
X00.89		NML$VDB as NL_VDB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (5)

003210	062706  000032 			82$:	ADD	#32,SP				;					1179
003214	000207 					RTS	PC
; Routine Size:  839 words,	Routine Base:  $CODE$ + 0320
; Maximum stack depth per invocation:  41 words


000004						.PSECT	$PLIT$,  RO ,  D  

					P.AAC:						; CASE Table for NL.VDB+0034		1228
000004	000004 					.WORD	4				; [2$]
000006	000550 					.WORD	550				; [20$]
000010	001244 					.WORD	1244				; [37$]
000012	001360 					.WORD	1360				; [39$]
000014	001650 					.WORD	1650				; [48$]
000016	002016 					.WORD	2016				; [54$]
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  48
X00.89		NML$GET_VDB_PARAMETER as NL_VGP			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (6)

;	  1625	%global_routine ('NML$GET_VDB_PARAMETER', ENTITY_TYPE, ENTITY_PTR, PARM_NO, DATA_ADDR) =
;	  1626	
;	  1627	!++
;	  1628	! FUNCTIONAL DESCRIPTION:
;	  1629	!
;	  1630	!	Extracts the data for a specific parameter from the volatile
;	  1631	!       data base. Upon return the value of the parameter is stored
;	  1632	!       at the address specified by DATA_ADDR.
;	  1633	!
;	  1634	! FORMAL PARAMETERS
;	  1635	!
;	  1636	!	ENTITY_TYPE - Entity type number.
;	  1637	!       ENTITY_PTR  - Character pointer to entity id.
;	  1638	!       PARM_NO     - Parameter number.
;	  1639	!       DATA_ADDR   - Address of returned data.
;	  1640	!
;	  1641	! IMPLICIT INPUTS
;	  1642	!
;	  1643	!	NONE.
;	  1644	!
;	  1645	! ROUTINE VALUE:
;	  1646	!
;	  1647	!	TRUE, if the parameter exists in the volatile data base;
;	  1648	!       FALSE, otherwise.
;	  1649	!
;	  1650	! SIDE EFFECTS:
;	  1651	!
;	  1652	!	NONE.
;	  1653	!
;	  1654	!--
;	  1655	
;	  1656	    begin
;	  1657	
;	  1658	    local
;	  1659	         EDB_QE: ref ENTITY_DB_BLOCK,
;	  1660	         PVB: ref $NML$PVB_ENTRY_VECTOR (0);
;	  1661	
;	  1662	    if (EDB_QE = GET_EXISTING_ENTITY_DB (.ENTITY_TYPE, .ENTITY_PTR)) eql 0
;	  1663	    then return $FALSE;
;	  1664	
;	  1665	    !
;	  1666	    ! Perform special casing for parameters which have seperate
;	  1667	    ! parameter numbers for reading and writing.
;	  1668	    !
;	  1669	
;	  1670	    if (.ENTITY_TYPE eql NODE_E)        ! HOST Parameter (Read)
;	  1671	    and (.PARM_NO eql 140)
;	  1672	    then PARM_NO = 141;        ! Make it 141
;	  1673	
;	  1674	    if ((.EDB_QE[EDB_PARAMETER_ALLOCATION] eql 0) ! They better all be in
;	  1675	    and (.EDB_QE[EDB_PARAMETER_VECTOR] eql 0)) ! agreement.
;	  1676	    or (.EDB_QE[EDB_PARAMETER_COUNT] eql 0)
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  49
X00.89		NML$GET_VDB_PARAMETER as NL_VGP			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (6)

;	  1677	    then return $FALSE;
;	  1678	
;	  1679	    PVB = .EDB_QE[EDB_PARAMETER_VECTOR];  ! Get address of parameter vector
;	  1680	
;	  1681	    incr N from 0 to .EDB_QE[EDB_PARAMETER_COUNT] - 1
;	  1682	    do begin
;	  1683	       bind PVB_QE = PVB[.N,0,0,0,0]: $NML$PVB_ENTRY_BLOCK;
;	  1684	
;	  1685	       if .PARM_NO leq .PVB_QE[PE_NUMBER]
;	  1686	       then begin
;	  1687	            if .PARM_NO eql .PVB_QE[PE_NUMBER]
;	  1688	            then begin
;	  1689	                 local DATA_TYPE: block [1] field (DATA_TYPE_FIELDS);
;	  1690	
;	  1691	                 DATA_TYPE = NML$GET_PDB_DATA_TYPE (.ENTITY_TYPE, .PARM_NO);
;	  1692	                 if .DATA_TYPE[DT_CODED] eql 0 ! Not coded
;	  1693	                 then begin
;	  1694	                      if .DATA_TYPE[DT_FTYPE] eql 0
;	  1695	                      then begin        ! Binary number
;	  1696	                           if .DATA_TYPE[DT_LENGTH] eql 0 ! Image field
;	  1697	                           then .DATA_ADDR = ch$ptr (.PVB_QE[PE_ADDRESS],,8)
;	  1698	                           else begin   ! Data stored in ....
;	  1699	                                if .DATA_TYPE[DT_LENGTH] leq %bpval/8
;	  1700	                                then .DATA_ADDR = .PVB_QE[PE_DATA] ! Value
;	  1701	                                else begin ! Buffer
;	  1702	                                     local PTR;
;	  1703	
;	  1704	                                     PTR = ch$ptr (.PVB_QE[PE_ADDRESS],,8);
;	  1705	                                     get32 (PTR, .DATA_ADDR);
;	  1706	                                     end;
;	  1707	                                end;
;	  1708	                           end
;	  1709	                      else begin        ! ASCII image field
;	  1710	                           .DATA_ADDR = ch$ptr (.PVB_QE[PE_ADDRESS],,8);
;	  1711	                           end;
;	  1712	                      end
;	  1713	                 else begin             ! Coded
;	  1714	                      if .DATA_TYPE[DT_FTYPE] eql 0
;	  1715	                      then .DATA_ADDR = .PVB_QE[PE_DATA] ! Single field
;	  1716	                      else begin  ! Multiple field
;	  1717	                           local DT: block [1] field (DATA_TYPE_FIELDS);
;	  1718	
;	  1719	                           if (.ENTITY_TYPE eql NODE_E) ! Special cases.
;	  1720	                           and (.PVB_QE[PE_NUMBER] eql 141) ! HOST
;	  1721	                           then .DATA_ADDR = ch$ptr (.PVB_QE[PE_ADDRESS],,8)
;	  1722	                           else .DATA_ADDR = 0; ! Unknown multiple parameter
;	  1723	                           end;
;	  1724	                      end;
;	  1725	
;	  1726	                 return $TRUE;
;	  1727	                 end;
;	  1728	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  50
X00.89		NML$GET_VDB_PARAMETER as NL_VGP			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (6)

;	  1729	            exitloop;
;	  1730	            end;
;	  1731	       end;
;	  1732	
;	  1733	    return $FALSE;  
;	  1734	    end;				! End of NML$GET_VDB_PARAMETER


						.SBTTL	NL.VGP NML$GET_VDB_PARAMETER as NL_VGP
003536						.PSECT	$CODE$,  RO 

000000	004167  000000G			NL.VGP::JSR	R1,$SAVE5			;					1625
000004	162706  000006 				SUB	#6,SP
000010	016666  000032  000002 			MOV	32(SP),2(SP)			; ENTITY.TYPE,*				1662
000016	016646  000002 				MOV	2(SP),-(SP)
000022	016646  000032 				MOV	32(SP),-(SP)			; ENTITY.PTR,*
000026	004767  000000V				JSR	PC,GET.EXISTING.ENTITY.DB
000032	022626 					CMP	(SP)+,(SP)+
000034	010002 					MOV	R0,R2				; *,EDB.QE
000036	001531 					BEQ	10$				;					1663
000040	005016 					CLR	(SP)				;					1670
000042	005766  000002 				TST	2(SP)
000046	001010 					BNE	1$
000050	005216 					INC	(SP)
000052	026627  000026  000214 			CMP	26(SP),#214			; PARM.NO,*				1671
000060	001003 					BNE	1$
000062	012766  000215  000026 			MOV	#215,26(SP)			; *,PARM.NO				1672
000070	005762  000032 			1$:	TST	32(R2)				; *(EDB.QE)				1674
000074	001003 					BNE	2$
000076	005762  000034 				TST	34(R2)				; *(EDB.QE)				1675
000102	001507 					BEQ	10$
000104	005762  000030 			2$:	TST	30(R2)				; *(EDB.QE)				1676
000110	001504 					BEQ	10$				;					1677
000112	016266  000034  000004 			MOV	34(R2),4(SP)			; *(EDB.QE),PVB				1679
000120	016605  000026 				MOV	26(SP),R5			; PARM.NO,*				1685
000124	005004 					CLR	R4				; N					1681
000126	000472 					BR	9$
000130	010401 				3$:	MOV	R4,R1				; N,*					1683
000132	006301 					ASL	R1
000134	006301 					ASL	R1
000136	066601  000004 				ADD	4(SP),R1			; PVB,*
000142	020511 					CMP	R5,(R1)				;					1685
000144	003062 					BGT	8$
000146	001065 					BNE	10$				;					1687
000150	016646  000002 				MOV	2(SP),-(SP)			;					1691
000154	010546 					MOV	R5,-(SP)
000156	004767  000000G				JSR	PC,NL.PDT
000162	016603  000030 				MOV	30(SP),R3			; DATA.ADDR,*				1697
000166	032700  000200 				BIT	#200,R0				; *,DATA.TYPE				1692
000172	001025 					BNE	4$
000174	032700  000100 				BIT	#100,R0				; *,DATA.TYPE				1694
000200	001034 					BNE	5$
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  51
X00.89		NML$GET_VDB_PARAMETER as NL_VGP			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (6)

000202	032700  000017 				BIT	#17,R0				; *,DATA.TYPE				1696
000206	001431 					BEQ	5$				;					1697
000210	042700  177760 				BIC	#177760,R0			;					1699
000214	020027  000002 				CMP	R0,#2
000220	101424 					BLOS	5$				;					1700
000222	016100  000002 				MOV	2(R1),R0			; *,PTR					1704
000226	112013 					MOVB	(R0)+,(R3)			; PTR,*					1705
000230	112063  000001 				MOVB	(R0)+,1(R3)			; PTR,*
000234	112063  000002 				MOVB	(R0)+,2(R3)			; PTR,*
000240	112063  000003 				MOVB	(R0)+,3(R3)			; PTR,*
000244	000416 					BR	7$				;					1694
000246	032700  000100 			4$:	BIT	#100,R0				; *,DATA.TYPE				1714
000252	001407 					BEQ	5$				;					1715
000254	032766  000001  000004 			BIT	#1,4(SP)			;					1719
000262	001406 					BEQ	6$
000264	021127  000215 				CMP	(R1),#215			;					1720
000270	001003 					BNE	6$
000272	016113  000002 			5$:	MOV	2(R1),(R3)			;					1721
000276	000401 					BR	7$				;					1719
000300	005013 				6$:	CLR	(R3)				;					1722
000302	022626 				7$:	CMP	(SP)+,(SP)+			;					1687
000304	012700  000001 				MOV	#1,R0				;					1688
000310	000405 					BR	11$
000312	005204 				8$:	INC	R4				; N					1681
000314	020462  000030 			9$:	CMP	R4,30(R2)			; N,*(EDB.QE)
000320	002703 					BLT	3$
000322	005000 				10$:	CLR	R0				;					1625
000324	062706  000006 			11$:	ADD	#6,SP
000330	000207 					RTS	PC
; Routine Size:  109 words,	Routine Base:  $CODE$ + 3536
; Maximum stack depth per invocation:  12 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  52
X00.89		NML$SET_VDB_PARAMETER as NL_VSP			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (7)

;	  1735	%global_routine ('NML$SET_VDB_PARAMETER', ENTITY_TYPE, ENTITY_PTR, PARM_NO, DATA_ADDR) =
;	  1736	
;	  1737	!++
;	  1738	! FUNCTIONAL DESCRIPTION:
;	  1739	!
;	  1740	!	Inserts the data for a specific parameter into the volatile
;	  1741	!       data base. The value of the parameter is stored
;	  1742	!       at the address specified by DATA_ADDR.
;	  1743	!
;	  1744	! FORMAL PARAMETERS
;	  1745	!
;	  1746	!	ENTITY_TYPE - Entity type number.
;	  1747	!       ENTITY_PTR  - Character pointer to entity id.
;	  1748	!       PARM_NO     - Parameter number.
;	  1749	!       DATA_ADDR   - Address of data for value.
;	  1750	!
;	  1751	! IMPLICIT INPUTS
;	  1752	!
;	  1753	!	NONE.
;	  1754	!
;	  1755	! ROUTINE VALUE:
;	  1756	!
;	  1757	!	TRUE, if the parameter was set in the volatile data base;
;	  1758	!       FALSE, otherwise.
;	  1759	!
;	  1760	! SIDE EFFECTS:
;	  1761	!
;	  1762	!	NONE.
;	  1763	!
;	  1764	!--
;	  1765	
;	  1766	    begin
;	  1767	
;	  1768	    local
;	  1769	         LPVB_QE: $NML$PVB_ENTRY_BLOCK, ! Local PVB entry
;	  1770	         EDB_QE: ref ENTITY_DB_BLOCK,   ! Entity DB entry
;	  1771	         L,                             ! Length of parameter data
;	  1772	         PRM_PTR;                       ! Pointer to parameter buffer
;	  1773	
;	  1774	    if (EDB_QE = GET_EXISTING_ENTITY_DB (.ENTITY_TYPE, .ENTITY_PTR)) eql 0
;	  1775	    then if (EDB_QE = SET_ENTITY_DB (.ENTITY_TYPE, .ENTITY_PTR)) eql 0
;	  1776	         then return $FALSE;            ! Could not get entity db
;	  1777	
;	  1778	    !
;	  1779	    ! Allocate a buffer for parameter, build a local temporary PVB
;	  1780	    ! entry, and place the parameter number and data in the buffer
;	  1781	    ! in format for response. Then get rid of the data type byte in
;	  1782	    ! in the buffer.
;	  1783	    !
;	  1784	
;	  1785	    PRM_PTR = ch$ptr (PRM_BFR,,8);
;	  1786	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  53
X00.89		NML$SET_VDB_PARAMETER as NL_VSP			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (7)

;	  1787	    LPVB_QE[PE_NUMBER] = .PARM_NO;      ! Get parameter number
;	  1788	    LPVB_QE[PE_DATA] = ..DATA_ADDR;
;	  1789	
;	  1790	    L = READ_PARAMETER_DATA (.ENTITY_TYPE,
;	  1791	                             LPVB_QE,
;	  1792	                             PRM_BFR_LENGTH,
;	  1793	                             PRM_PTR);
;	  1794	
;	  1795	    ch$move (.L, ch$ptr (PRM_BFR,3,8), ch$ptr (PRM_BFR,2,8));
;	  1796	
;	  1797	    !
;	  1798	    ! Insert the parameter into the table vector.
;	  1799	    !
;	  1800	
;	  1801	    return (INSERT_PARAMETER (.EDB_QE, .ENTITY_TYPE, ch$ptr (PRM_BFR,,8), $true) eql NICE$_SUC);
;	  1802	    end;				! End of NML$SET_VDB_PARAMETER


						.SBTTL	NL.VSP NML$SET_VDB_PARAMETER as NL_VSP
000000	004167  000000G			NL.VSP::JSR	R1,$SAVE2			;					1735
000004	162706  000006 				SUB	#6,SP
000010	016602  000024 				MOV	24(SP),R2			; ENTITY.TYPE,*				1774
000014	010246 					MOV	R2,-(SP)
000016	016646  000024 				MOV	24(SP),-(SP)			; ENTITY.PTR,*
000022	004767  000000V				JSR	PC,GET.EXISTING.ENTITY.DB
000026	022626 					CMP	(SP)+,(SP)+
000030	010001 					MOV	R0,R1				; *,EDB.QE
000032	001010 					BNE	1$
000034	010246 					MOV	R2,-(SP)			;					1775
000036	016646  000024 				MOV	24(SP),-(SP)			; ENTITY.PTR,*
000042	004767  000000V				JSR	PC,SET.ENTITY.DB
000046	022626 					CMP	(SP)+,(SP)+
000050	010001 					MOV	R0,R1				; *,EDB.QE
000052	001453 					BEQ	3$				;					1776
000054	012716  000000'			1$:	MOV	#PRM.BFR,(SP)			; *,PRM.PTR				1785
000060	016666  000020  000002 			MOV	20(SP),2(SP)			; PARM.NO,LPVB.QE			1787
000066	017666  000016  000004 			MOV	@16(SP),4(SP)			; DATA.ADDR,LPVB.QE+2			1788
000074	010246 					MOV	R2,-(SP)			;					1790
000076	012746  000006 				MOV	#6,-(SP)
000102	060616 					ADD	SP,(SP)				; LPVB.QE,*
000104	012746  000402 				MOV	#402,-(SP)
000110	012746  000010 				MOV	#10,-(SP)
000114	060616 					ADD	SP,(SP)				; PRM.PTR,*
000116	004767  000000V				JSR	PC,READ.PARAMETER.DATA
000122	010016 					MOV	R0,(SP)				; L,*					1795
000124	012746  000003'				MOV	#PRM.BFR+3,-(SP)
000130	012746  000002'				MOV	#PRM.BFR+2,-(SP)
000134	004767  000000G				JSR	PC,BL$MOV
000140	010116 					MOV	R1,(SP)				; EDB.QE,*				1801
000142	010246 					MOV	R2,-(SP)
000144	012746  000000'				MOV	#PRM.BFR,-(SP)
000150	012746  000001 				MOV	#1,-(SP)
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  54
X00.89		NML$SET_VDB_PARAMETER as NL_VSP			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (7)

000154	004767  000000V				JSR	PC,INSERT.PARAMETER
000160	005001 					CLR	R1
000162	020027  000001 				CMP	R0,#1
000166	001001 					BNE	2$
000170	005201 					INC	R1
000172	062706  000022 			2$:	ADD	#22,SP				;					1735
000176	010100 					MOV	R1,R0				;					1766
000200	000401 					BR	4$
000202	005000 				3$:	CLR	R0				;					1735
000204	062706  000006 			4$:	ADD	#6,SP
000210	000207 					RTS	PC
; Routine Size:  69 words,	Routine Base:  $CODE$ + 4070
; Maximum stack depth per invocation:  16 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  55
X00.89		NML$CLR_VDB_PARAMETER as NL_VCP			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (8)

;	  1803	%global_routine ('NML$CLR_VDB_PARAMETER', ENTITY_TYPE, ENTITY_PTR, PARM_NO) =
;	  1804	
;	  1805	!++
;	  1806	! FUNCTIONAL DESCRIPTION:
;	  1807	!
;	  1808	!	Removes a parameter from the volatile data base.
;	  1809	!
;	  1810	! FORMAL PARAMETERS
;	  1811	!
;	  1812	!	ENTITY_TYPE - Entity type number.
;	  1813	!       ENTITY_PTR  - Character pointer to entity id.
;	  1814	!       PARM_NO     - Parameter number.
;	  1815	!
;	  1816	! IMPLICIT INPUTS
;	  1817	!
;	  1818	!	NONE.
;	  1819	!
;	  1820	! ROUTINE VALUE:
;	  1821	!
;	  1822	!	TRUE, if the parameter exists in the volatile data base;
;	  1823	!       FALSE, otherwise.
;	  1824	!
;	  1825	! SIDE EFFECTS:
;	  1826	!
;	  1827	!	NONE.
;	  1828	!
;	  1829	!--
;	  1830	
;	  1831	    begin
;	  1832	
;	  1833	    local
;	  1834	         EDB_QE: ref ENTITY_DB_BLOCK;   ! Entity DB entry
;	  1835	
;	  1836	    if (EDB_QE = GET_EXISTING_ENTITY_DB(.ENTITY_TYPE,.ENTITY_PTR)) eql 0
;	  1837	    then return $FALSE;
;	  1838	
;	  1839	    !
;	  1840	    ! Perform special casing for parameters which have seperate
;	  1841	    ! parameter numbers for reading and writing.
;	  1842	    !
;	  1843	
;	  1844	    if (.ENTITY_TYPE eql NODE_E)        ! HOST Parameter (Read)
;	  1845	    and (.PARM_NO eql 140)
;	  1846	    then PARM_NO = 141;                 ! Make it 141
;	  1847	
;	  1848	    !
;	  1849	    ! Remove the parameter from the table vector, always succeeds.
;	  1850	    !
;	  1851	
;	  1852	    REMOVE_PARAMETER (.EDB_QE, .ENTITY_TYPE, .PARM_NO, $true);
;	  1853	
;	  1854	    return $TRUE;
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  56
X00.89		NML$CLR_VDB_PARAMETER as NL_VCP			 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (8)

;	  1855	    end;				! End of NML$CLR_VDB_PARAMETER


						.SBTTL	NL.VCP NML$CLR_VDB_PARAMETER as NL_VCP
000000	010146 				NL.VCP::MOV	R1,-(SP)			;					1803
000002	016601  000010 				MOV	10(SP),R1			; ENTITY.TYPE,*				1836
000006	010146 					MOV	R1,-(SP)
000010	016646  000010 				MOV	10(SP),-(SP)			; ENTITY.PTR,*
000014	004767  000000V				JSR	PC,GET.EXISTING.ENTITY.DB
000020	022626 					CMP	(SP)+,(SP)+
000022	005700 					TST	R0				; EDB.QE
000024	001426 					BEQ	2$				;					1837
000026	005701 					TST	R1				;					1844
000030	001007 					BNE	1$
000032	026627  000004  000214 			CMP	4(SP),#214			; PARM.NO,*				1845
000040	001003 					BNE	1$
000042	012766  000215  000004 			MOV	#215,4(SP)			; *,PARM.NO				1846
000050	010046 				1$:	MOV	R0,-(SP)			; EDB.QE,*				1852
000052	010146 					MOV	R1,-(SP)
000054	016646  000010 				MOV	10(SP),-(SP)			; PARM.NO,*
000060	012746  000001 				MOV	#1,-(SP)
000064	004767  000000V				JSR	PC,REMOVE.PARAMETER
000070	062706  000010 				ADD	#10,SP				;					1803
000074	012700  000001 				MOV	#1,R0				;					1831
000100	000401 					BR	3$
000102	005000 				2$:	CLR	R0				;					1803
000104	012601 				3$:	MOV	(SP)+,R1
000106	000207 					RTS	PC
; Routine Size:  36 words,	Routine Base:  $CODE$ + 4302
; Maximum stack depth per invocation:  6 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  57
X00.89		NML$FIND_NDB as NL_VFN				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (9)

;	  1856	%global_routine ('NML$FIND_NDB', CKT_ENTITY_ID) =
;	  1857	
;	  1858	!++
;	  1859	! FUNCTIONAL DESCRIPTION:
;	  1860	!
;	  1861	!	Searches the NODE entity volatile data base for the node
;	  1862	!       which has the service circuit parameter corresponding to the
;	  1863	!       CIRCUIT entity specified as an argument.
;	  1864	!
;	  1865	! FORMAL PARAMETERS
;	  1866	!
;	  1867	!	CKT_ENTITY_ID - Pointer to circuit entity id.
;	  1868	!
;	  1869	! IMPLICIT INPUTS
;	  1870	!
;	  1871	!	NONE.
;	  1872	!
;	  1873	! ROUTINE VALUE:
;	  1874	!
;	  1875	!	Pointer to the node entity id if the node is found;
;	  1876	!       0 if not found.
;	  1877	!
;	  1878	! SIDE EFFECTS:
;	  1879	!
;	  1880	!	NONE.
;	  1881	!
;	  1882	!--
;	  1883	
;	  1884	    begin
;	  1885	
;	  1886	    local
;	  1887	         NDB_QE: ref NODE_DB_BLOCK;
;	  1888	
;	L 1889	    $SHOW_NDB
; %PRINT:	field-name EDB_QLINK = [0, 0, 0, 0]
; %PRINT:	field-name EDB_ENTITY_ID = [3, 0, 0, 0]
; %PRINT:	field-name NDB_ENTITY_ID = [3, 0, 0, 0]
; %PRINT:	field-name NDB_NODE_TYPE = [7, 8, 3, 0]
; %PRINT:	field-name EDB_PARAMETER_COUNT = [12, 0, 16, 1]
; %PRINT:	field-name EDB_PARAMETER_ALLOCATION = [13, 0, 16, 1]
; %PRINT:	field-name EDB_PARAMETER_VECTOR = [14, 0, 16, 0]
; %PRINT:	field-name EDB_FIELDS = [0, 0, 0, 0]
; %PRINT:	field-name NDB_CIRCUIT_QLINK = [15, 0, 0, 0]
; %PRINT:	field-name NDB_SVC_CIRCUIT = [18, 0, 16, 0]
;	  1890	
;	  1891	    NDB_QE = NMU$QUEUE_SCAN (QH_NODE_PARAMETERS, .CKT_ENTITY_ID, SVC_CKT_MATCH);
;	  1892	
;	  1893	    if .NDB_QE neq 0
;	  1894	    then return ch$ptr (NDB_QE[NDB_ENTITY_ID],,8)
;	  1895	    else return 0;
;	  1896	
;	  1897	    end;				! End of NML$FIND_NDB
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  58
X00.89		NML$FIND_NDB as NL_VFN				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (9)



						.SBTTL	NL.VFN NML$FIND_NDB as NL_VFN
000000	012746  001004'			NL.VFN::MOV	#QH.NODE.PARAMETERS,-(SP)	;					1891
000004	016646  000004 				MOV	4(SP),-(SP)			; CKT.ENTITY.ID,*
000010	012746  000000V				MOV	#SVC.CKT.MATCH,-(SP)
000014	004767  000000G				JSR	PC,UQ.SCAN
000020	005700 					TST	R0				; NDB.QE				1893
000022	001403 					BEQ	1$
000024	062700  000006 				ADD	#6,R0				; *,NDB.QE				1894
000030	000401 					BR	2$				;					1893
000032	005000 				1$:	CLR	R0
000034	062706  000006 			2$:	ADD	#6,SP				;					1856
000040	000207 					RTS	PC
; Routine Size:  17 words,	Routine Base:  $CODE$ + 4412
; Maximum stack depth per invocation:  4 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  59
X00.89		SELECT_LOGGING					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (10)

;	  1898	%routine ('SELECT_LOGGING', EDB_QE : ref ENTITY_DB_BLOCK, PBF : ref PBF_BLOCK) =
;	  1899	
;	  1900	!++
;	  1901	! FUNCTIONAL DESCRIPTION:
;	  1902	!
;	  1903	!       No filters supported yet.
;	  1904	!
;	  1905	! FORMAL PARAMETERS
;	  1906	!
;	  1907	!	NONE.
;	  1908	!
;	  1909	! IMPLICIT INPUTS
;	  1910	!
;	  1911	!	NONE.
;	  1912	!
;	  1913	! ROUTINE VALUE:
;	  1914	!
;	  1915	!	NONE.
;	  1916	!
;	  1917	! SIDE EFFECTS:
;	  1918	!
;	  1919	!	NONE.
;	  1920	!
;	  1921	!--
;	  1922	
;	  1923	    begin
;	  1924	
;	  1925	    selectone .PBF [PBF_SELECTOR] of
;	  1926	        set
;	  1927	        [-1]:
;	  1928	            ;
;	  1929	        [otherwise]:
;	  1930	            begin
;	  1931	            literal ON = 0, OFF = 1, HOLD = 2;
;	  1932	            local STATE;
;	  1933	
;	  1934	            NML$GET_VDB_PARAMETER (LOGGING_,
;	  1935	                                   ch$ptr (EDB_QE[EDB_ENTITY_ID],,8),
;	  1936	                                   0,
;	  1937	                                   STATE);
;	  1938	            selectone .STATE of
;	  1939	                set
;	  1940	                [ON, HOLD]:
;	  1941	                    ;
;	  1942	                [otherwise]:
;	  1943	                    return 0;
;	  1944	                tes;
;	  1945	            end;
;	  1946	        tes;
;	  1947	
;	  1948	    if (.PBF [PBF_LEN_ADR] = ..PBF [PBF_LEN_ADR] - 1) geq 0
;	  1949	    then
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  60
X00.89		SELECT_LOGGING					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (10)

;	  1950	        ch$wchar_a (ch$rchar (ch$ptr (EDB_QE[EDB_ENTITY_ID],,8)),
;	  1951	                    .PBF [PBF_BUF_PTR_ADR]);
;	  1952	
;	  1953	    return 0
;	  1954	    end;				! End of SELECT_LOGGING


						.SBTTL	SELECT.LOGGING SELECT_LOGGING
000000	004167  000000G			SELECT.LOGGING:
						JSR	R1,$SAVE2			;					1898
000004	005746 					TST	-(SP)
000006	016601  000012 				MOV	12(SP),R1			; PBF,*					1925
000012	116100  000020 				MOVB	20(R1),R0
000016	020027  177777 				CMP	R0,#-1
000022	001427 					BEQ	2$
000024	012746  000002 				MOV	#2,-(SP)			;					1934
000030	016646  000016 				MOV	16(SP),-(SP)			; EDB.QE,*				1935
000034	062716  000006 				ADD	#6,(SP)
000040	005046 					CLR	-(SP)				;					1934
000042	012746  000010 				MOV	#10,-(SP)
000046	060616 					ADD	SP,(SP)				; STATE,*
000050	004767  177006 				JSR	PC,NL.VGP
000054	016600  000010 				MOV	10(SP),R0			; STATE,*				1938
000060	001406 					BEQ	1$
000062	020027  000002 				CMP	R0,#2
000066	001403 					BEQ	1$
000070	062706  000010 				ADD	#10,SP				;					1943
000074	000415 					BR	3$
000076	062706  000010 			1$:	ADD	#10,SP				;					1930
000102	005371  000012 			2$:	DEC	@12(R1)				;					1948
000106	100410 					BMI	3$
000110	017102  000010 				MOV	@10(R1),R2			;					1951
000114	016600  000014 				MOV	14(SP),R0			; EDB.QE,*				1950
000120	116012  000006 				MOVB	6(R0),(R2)			;					1951
000124	005271  000010 				INC	@10(R1)
000130	005000 				3$:	CLR	R0				;					1898
000132	005726 					TST	(SP)+
000134	000207 					RTS	PC
; Routine Size:  47 words,	Routine Base:  $CODE$ + 4454
; Maximum stack depth per invocation:  9 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  61
X00.89		SELECT_MODULE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (11)

;	  1955	%routine ('SELECT_MODULE', EDB_QE : ref ENTITY_DB_BLOCK, PBM : ref PBM_BLOCK) =
;	  1956	
;	  1957	!++
;	  1958	! FUNCTIONAL DESCRIPTION:
;	  1959	!
;	  1960	!       No filters supported yet.
;	  1961	!
;	  1962	! FORMAL PARAMETERS
;	  1963	!
;	  1964	!	NONE.
;	  1965	!
;	  1966	! IMPLICIT INPUTS
;	  1967	!
;	  1968	!	NONE.
;	  1969	!
;	  1970	! ROUTINE VALUE:
;	  1971	!
;	  1972	!	NONE.
;	  1973	!
;	  1974	! SIDE EFFECTS:
;	  1975	!
;	  1976	!	NONE.
;	  1977	!
;	  1978	!--
;	  1979	
;	  1980	    begin
;	  1981	    local LEN;
;	  1982	
;	  1983	    selectone .PBM [PBM_SELECTOR] of
;	  1984	        set
;	  1985	        [-1]:
;	  1986	            ;
;	  1987	        [otherwise]:
;	  1988	            return 0;
;	  1989	        tes;
;	  1990	
;	  1991	    LEN = ch$rchar (ch$ptr (EDB_QE[EDB_ENTITY_ID],,8)) + 1;
;	  1992	
;	  1993	    if (.PBM [PBM_LEN_ADR] = ..PBM [PBM_LEN_ADR] - .LEN) geq 0
;	  1994	    then
;	  1995	        .PBM [PBM_BUF_PTR_ADR] = ch$move (.LEN,
;	  1996	                                          ch$ptr (EDB_QE[EDB_ENTITY_ID],,8),
;	  1997	                                          ..PBM [PBM_BUF_PTR_ADR]);
;	  1998	
;	  1999	    return 0
;	  2000	    end;				! End of SELECT_MODULE


						.SBTTL	SELECT.MODULE SELECT_MODULE
000000	004167  000000G			SELECT.MODULE:
						JSR	R1,$SAVE2			;					1955
000004	016601  000010 				MOV	10(SP),R1			; PBM,*					1983
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  62
X00.89		SELECT_MODULE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (11)

000010	116100  000004 				MOVB	4(R1),R0
000014	020027  177777 				CMP	R0,#-1
000020	001025 					BNE	1$				;					1988
000022	016600  000012 				MOV	12(SP),R0			; EDB.QE,*				1991
000026	005002 					CLR	R2				; LEN
000030	156002  000006 				BISB	6(R0),R2			; *,LEN
000034	005202 					INC	R2				; LEN
000036	160271  000002 				SUB	R2,@2(R1)			; LEN,*					1993
000042	100414 					BMI	1$
000044	010246 					MOV	R2,-(SP)			; LEN,*					1997
000046	012746  000006 				MOV	#6,-(SP)			;					1996
000052	060016 					ADD	R0,(SP)
000054	017146  000000 				MOV	@0(R1),-(SP)			;					1997
000060	004767  000000G				JSR	PC,BL$MOV
000064	010071  000000 				MOV	R0,@0(R1)			;					1995
000070	062706  000006 				ADD	#6,SP
000074	005000 				1$:	CLR	R0				;					1955
000076	000207 					RTS	PC
; Routine Size:  32 words,	Routine Base:  $CODE$ + 4612
; Maximum stack depth per invocation:  7 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  63
X00.89		VDB_READ					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (12)

;	  2001	%routine ('VDB_READ', FUNCTION, TYPE, ENTITY, QUALIFIER, SELECTOR, LENGTH, BP_ADDR, ERR_DETAIL) =
;	  2002	
;	  2003	!++
;	  2004	! FUNCTIONAL DESCRIPTION:
;	  2005	!
;	  2006	!	Performs the NML NICE read function for NML volatile parameters.
;	  2007	!
;	  2008	! FORMAL PARAMETERS
;	  2009	!
;	  2010	!	FUNCTION  - Code to denote whether the specified parameter is to be
;	  2011	!                   defined or purged.
;	  2012	!       TYPE      - The NML entity type number of the entity to which the
;	  2013	!                   parameter pertains.
;	  2014	!       ENTITY    - Character sequence pointer to the entity id.
;	  2015	!       QUALIFIER - An optional character sequence pointer to a qualifier in
;	  2016	!                   parameter format.
;	  2017	!       SELECTOR  - For the return function, the class of entities to return.
;	  2018	!       LENGTH    - The address of a variable to be updated with the length
;	  2019	!                   of the data returned in the buffer.
;	  2020	!       BP_ADDR   - The address of a character sequence pointer to 
;	  2021	!                   the parameter buffer.
;	  2022	!       ERR_DETAIL- The address of a variable in which to return the
;	  2023	!		    error detail field for the response message if this
;	  2024	!		    request fails.
;	  2025	!
;	  2026	! IMPLICIT INPUTS
;	  2027	!
;	  2028	!	NONE.
;	  2029	!
;	  2030	! ROUTINE VALUE:
;	  2031	!
;	  2032	!	NML specified NICE return code.
;	  2033	!
;	  2034	! SIDE EFFECTS:
;	  2035	!
;	  2036	!	NONE.
;	  2037	!
;	  2038	!--
;	  2039	
;	  2040	    begin
;	  2041	
;	  2042	    local
;	  2043	         RESULT,
;	  2044	         EDB_QE: ref ENTITY_DB_BLOCK;
;	  2045	
;	L 2046	    $SHOW_EDB
; %PRINT:	field-name EDB_QLINK = [0, 0, 0, 0]
; %PRINT:	field-name EDB_ENTITY_ID = [3, 0, 0, 0]
; %PRINT:	field-name NDB_ENTITY_ID = [3, 0, 0, 0]
; %PRINT:	field-name NDB_NODE_TYPE = [7, 8, 3, 0]
; %PRINT:	field-name EDB_PARAMETER_COUNT = [12, 0, 16, 1]
; %PRINT:	field-name EDB_PARAMETER_ALLOCATION = [13, 0, 16, 1]
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  64
X00.89		VDB_READ					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (12)

; %PRINT:	field-name EDB_PARAMETER_VECTOR = [14, 0, 16, 0]
;	  2047	
;	  2048	    if (EDB_QE = GET_EXISTING_ENTITY_DB (.TYPE, .ENTITY)) eql 0
;	  2049	    then RESULT = (if ENTITY_IS_VALID (.TYPE, .ENTITY)
;	  2050	                   then NICE$_SUC
;	  2051	                   else begin
;	  2052				.ERR_DETAIL = .TYPE;
;	L 2053				$NICE$ERR_URC
; %PRINT:	Unrecognized component
;	  2054				end)
;	  2055	    else begin
;	L 2056	         %if $X25 and not $MCB
;	U 2057	         %then
;	U 2058	
;	U 2059	         if .TYPE eql MODULE_
;	U 2060	         then begin
;	U 2061	              RESULT = READ_QUALIFIED_ENTITY (.EDB_QE,
;	U 2062	                                              .FUNCTION,
;	U 2063	                                              .TYPE,
;	U 2064	                                              .ENTITY,
;	U 2065	                                              .QUALIFIER,
;	U 2066	                                              .SELECTOR,
;	U 2067	                                              .LENGTH,
;	U 2068	                                              .BP_ADDR);
;	U 2069	
;	U 2070	              return .RESULT;
;	U 2071	              end;
;	U 2072	
;	  2073	         %fi
;	  2074	
;	  2075	         RESULT = READ_ENTITY (.EDB_QE,
;	  2076	                               .FUNCTION,
;	  2077	                               .TYPE,
;	  2078	                               .ENTITY,
;	  2079	                               .QUALIFIER,
;	  2080	                               .SELECTOR,
;	  2081	                               .LENGTH,
;	  2082	                               .BP_ADDR);
;	  2083	         end;
;	  2084	
;	  2085	    return .RESULT;
;	  2086	    end;				! End of VDB_READ


						.SBTTL	VDB.READ VDB_READ
000000	004167  000000G			VDB.READ:
						JSR	R1,$SAVE2			;					2001
000004	016602  000024 				MOV	24(SP),R2			; TYPE,*				2048
000010	010246 					MOV	R2,-(SP)
000012	016601  000024 				MOV	24(SP),R1			; ENTITY,*
000016	010146 					MOV	R1,-(SP)
000020	004767  000000V				JSR	PC,GET.EXISTING.ENTITY.DB
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  65
X00.89		VDB_READ					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (12)

000024	022626 					CMP	(SP)+,(SP)+
000026	005700 					TST	R0				; EDB.QE
000030	001017 					BNE	2$
000032	010246 					MOV	R2,-(SP)			;					2049
000034	010146 					MOV	R1,-(SP)
000036	004767  000000V				JSR	PC,ENTITY.IS.VALID
000042	022626 					CMP	(SP)+,(SP)+
000044	006000 					ROR	R0
000046	103003 					BCC	1$
000050	012701  000001 				MOV	#1,R1				; *,RESULT
000054	000427 					BR	3$
000056	010276  000010 			1$:	MOV	R2,@10(SP)			; *,ERR.DETAIL				2052
000062	012701  177770 				MOV	#-10,R1				; *,RESULT				2049
000066	000422 					BR	3$				;					2048
000070	010046 				2$:	MOV	R0,-(SP)			; EDB.QE,*				2075
000072	016646  000030 				MOV	30(SP),-(SP)			; FUNCTION,*
000076	010246 					MOV	R2,-(SP)
000100	010146 					MOV	R1,-(SP)
000102	016646  000030 				MOV	30(SP),-(SP)			; QUALIFIER,*
000106	016646  000030 				MOV	30(SP),-(SP)			; SELECTOR,*
000112	016646  000030 				MOV	30(SP),-(SP)			; LENGTH,*
000116	016646  000030 				MOV	30(SP),-(SP)			; BP.ADDR,*
000122	004767  000000V				JSR	PC,READ.ENTITY
000126	010001 					MOV	R0,R1				; *,RESULT
000130	062706  000020 				ADD	#20,SP				;					2055
000134	010100 				3$:	MOV	R1,R0				; RESULT,*				2040
000136	000207 					RTS	PC				;					2001
; Routine Size:  48 words,	Routine Base:  $CODE$ + 4712
; Maximum stack depth per invocation:  12 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  66
X00.89		VDB_READ					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (13)

;	U 2087	%if $X25 and not $MCB %then
;	U 2088	%routine ('READ_QUALIFIED_ENTITY', EDB_QE, FUNCTION, TYPE, ENTITY, QUALIFIER, SELECTOR, LENGTH, POINTER) =
;	U 2089	
;	U 2090	!++
;	U 2091	! FUNCTIONAL DESCRIPTION:
;	U 2092	!
;	U 2093	!	Perform the read information function for a specific entity
;	U 2094	!       in the volatile data base which has qualifier sub-queues.
;	U 2095	!
;	U 2096	! FORMAL PARAMETERS
;	U 2097	!
;	U 2098	!	EDB_QE    - Address of the entity data base entry.
;	U 2099	!	FUNCTION  - Code to denote whether a straight read parameters/counters
;	U 2100	!                   operation or a show and zero counters is performed.
;	U 2101	!       TYPE      - The NML entity type number of the entity to which the
;	U 2102	!                   parameter pertains.
;	U 2103	!       ENTITY    - Character sequence pointer to the entity id.
;	U 2104	!       QUALIFIER - An optional character sequence pointer to a qualifier in
;	U 2105	!                   parameter format.
;	U 2106	!       SELECTOR  - For the return function, the class of entities to return.
;	U 2107	!       LENGTH    - The address of a variable to be updated with the length
;	U 2108	!                   of the data returned in the buffer.
;	U 2109	!       POINTER   - The address of a character sequence pointer to 
;	U 2110	!                   the parameter buffer.
;	U 2111	!
;	U 2112	! IMPLICIT INPUTS
;	U 2113	!
;	U 2114	!	NONE.
;	U 2115	!
;	U 2116	! ROUTINE VALUE:
;	U 2117	!
;	U 2118	!	NICE return code.
;	U 2119	!
;	U 2120	! SIDE EFFECTS:
;	U 2121	!
;	U 2122	!	NONE.
;	U 2123	!
;	U 2124	!--
;	U 2125	
;	U 2126	    begin
;	U 2127	
;	U 2128	    map
;	U 2129	        EDB_QE: ref ENTITY_DB_BLOCK;
;	U 2130	
;	U 2131	    local
;	U 2132	        QUALIFIER_QUEUE: ref Q_HEADER,
;	U 2133	        ENTRY: ref ENTITY_DB_BLOCK;
;	U 2134	
;	U 2135	    QUALIFIER_QUEUE = EDB_QE[EDB_QUALIFIER_QUEUE]; ! Get qualified queue header
;	U 2136	
;	U 2137	    if .QUALIFIER eql 0
;	U 2138	    then begin                          ! Read default existing queue
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  67
X00.89		VDB_READ					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (13)

;	U 2139	
;	U 2140	         ! If the queue length (number of entries) is not 1,
;	U 2141	         ! i.e. the queue does not have any entries or more than one
;	U 2142	
;	U 2143	         if NMU$QUEUE_LENGTH (.QUALIFIER_QUEUE) neq 1
;	U 2144	         then begin                     ! Return list of network names
;	U 2145	              local NEXT: ref Q_ENTRY;
;	U 2146	
;	U 2147	              NEXT = .QUALIFIER_QUEUE[Q_FORWARD];
;	U 2148	              while ((ENTRY = .NEXT) neq .QUALIFIER_QUEUE)
;	U 2149	              do begin
;	U 2150	                 NEXT = .NEXT[Q_FORWARD];
;	U 2151	                 READ_QUALIFIER (.ENTRY, .LENGTH, .POINTER);
;	U 2152	                 end;
;	U 2153	
;	U 2154	              return NICE$_SUC;
;	U 2155	              end;
;	U 2156	
;	U 2157	         ENTRY = .QUALIFIER_QUEUE[Q_FORWARD]; ! Default qualified queue
;	U 2158	         end
;	U 2159	    else begin                          ! Read specific queue
;	U 2160	         local ID_STRING, COUNT: $SIGNED_BYTE_VALUE;
;	U 2161	
;	U 2162	         ID_STRING = ch$plus (.QUALIFIER, 2);
;	U 2163	         COUNT = ch$rchar (.ID_STRING); ! Get the count byte
;	U 2164	
;	U 2165	         if .COUNT[VALUE] lss 0         ! If count byte is negative ....
;	U 2166	         then begin                     ! Read KNOWN qualified queues
;	U 2167	              local RESULT, NEXT: ref Q_ENTRY;
;	U 2168	
;	U 2169	              NEXT = .QUALIFIER_QUEUE[Q_FORWARD];
;	U 2170	              RESULT = NICE$_SUC;
;	U 2171	
;	U 2172	              while (.RESULT eql NICE$_SUC)
;	U 2173	              and ((ENTRY = .NEXT) neq .QUALIFIER_QUEUE)
;	U 2174	              do begin
;	U 2175	                 NEXT = .NEXT[Q_FORWARD];
;	U 2176	                 READ_QUALIFIER (.ENTRY, .LENGTH, .POINTER);
;	U 2177	                 RESULT = READ_ENTITY (.ENTRY,
;	U 2178	                                       .FUNCTION,
;	U 2179	                                       .TYPE,
;	U 2180	                                       .ENTITY,
;	U 2181	                                       .QUALIFIER,
;	U 2182	                                       .SELECTOR,
;	U 2183	                                       .LENGTH,
;	U 2184	                                       .POINTER);
;	U 2185	                 end;
;	U 2186	
;	U 2187	              return .RESULT;
;	U 2188	              end
;	U 2189	         else begin                     ! Read specific qualified queue
;	U 2190	              ENTRY = NMU$QUEUE_SCAN (.QUALIFIER_QUEUE,
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  68
X00.89		VDB_READ					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (13)

;	U 2191	                                      .ID_STRING,
;	U 2192	                                      NON_NODE_ID_MATCH);
;	U 2193	
;	U 2194	              if .ENTRY eql 0           ! No data base for specified qualifier
;	U 2195	              then return NICE$_SUC;
;	U 2196	              end;
;	U 2197	         end;
;	U 2198	
;	U 2199	    READ_QUALIFIER (.ENTRY, .LENGTH, .POINTER);
;	U 2200	
;	U 2201	    return READ_ENTITY (.ENTRY,
;	U 2202	                        .FUNCTION,
;	U 2203	                        .TYPE,
;	U 2204	                        .ENTITY,
;	U 2205	                        .QUALIFIER,
;	U 2206	                        .SELECTOR,
;	U 2207	                        .LENGTH,
;	U 2208	                        .POINTER);
;	U 2209	    end;				! End of READ_QUALIFIED_ENTITY
;	  2210	%fi
;	  2211	%sbttl ''
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  69
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (14)

;	U 2212	%if $X25 and not $MCB %then
;	U 2213	%routine ('READ_QUALIFIER', ENTRY, LENGTH, POINTER) : novalue =
;	U 2214	
;	U 2215	!++
;	U 2216	! FUNCTIONAL DESCRIPTION:
;	U 2217	!
;	U 2218	!	Perform the read qualifier for a specific qualifier queue
;	U 2219	!       in the volatile data base.
;	U 2220	!
;	U 2221	! FORMAL PARAMETERS
;	U 2222	!
;	U 2223	!	ENTRY   Address of the entity data base entry.
;	U 2224	!       LENGTH  The address of a variable to be updated with the length
;	U 2225	!               of the data returned in the buffer.
;	U 2226	!       POINTER The address of a character sequence pointer to 
;	U 2227	!               the parameter buffer.
;	U 2228	!
;	U 2229	! IMPLICIT INPUTS
;	U 2230	!
;	U 2231	!	NONE.
;	U 2232	!
;	U 2233	! ROUTINE VALUE:
;	U 2234	!
;	U 2235	!	NONE.
;	U 2236	!
;	U 2237	! SIDE EFFECTS:
;	U 2238	!
;	U 2239	!	NONE.
;	U 2240	!
;	U 2241	!--
;	U 2242	
;	U 2243	    begin
;	U 2244	
;	U 2245	    map
;	U 2246	        ENTRY: ref ENTITY_DB_BLOCK;
;	U 2247	
;	U 2248	    local
;	U 2249	        VAL;
;	U 2250	
;	U 2251	    VAL = 1110;                         ! NETWORK parameter number
;	U 2252	    PUTW (VAL, .POINTER);
;	U 2253	
;	U 2254	    PUTB (%O'100', .POINTER);           ! Data type byte
;	U 2255	
;	U 2256	    VAL = ch$rchar (ch$ptr (ENTRY[EDB_QUALIFIER],,8)) + 1;
;	U 2257	    .POINTER = ch$move (.VAL,           ! Network name string
;	U 2258	                        ch$ptr (ENTRY[EDB_QUALIFIER],,8),
;	U 2259	                        ..POINTER);
;	U 2260	
;	U 2261	    .LENGTH = ..LENGTH - .VAL - 3;      ! Remaining length of the buffer
;	U 2262	
;	U 2263	    return;
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  70
X00.89								 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (14)

;	U 2264	    end;                                ! End of READ_QUALIFIER
;	  2265	%fi
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  71
X00.89		READ_ENTITY					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (15)

;	  2266	%routine ('READ_ENTITY', EDB_QE, FUNCTION, TYPE, ENTITY, QUALIFIER, SELECTOR, LENGTH, BP_ADDR) =
;	  2267	
;	  2268	!++
;	  2269	! FUNCTIONAL DESCRIPTION:
;	  2270	!
;	  2271	!	Perform the read information function for a specific entity
;	  2272	!       in the volatile data base.
;	  2273	!
;	  2274	! FORMAL PARAMETERS
;	  2275	!
;	  2276	!	EDB_QE    - Address of the entity data base entry.
;	  2277	!	FUNCTION  - Code to denote whether a straight read parameters/counters
;	  2278	!                   operation or a show and zero counters is performed.
;	  2279	!       TYPE      - The NML entity type number of the entity to which the
;	  2280	!                   parameter pertains.
;	  2281	!       ENTITY    - Character sequence pointer to the entity id.
;	  2282	!       QUALIFIER - An optional character sequence pointer to a qualifier in
;	  2283	!                   parameter format.
;	  2284	!       SELECTOR  - For the return function, the class of entities to return.
;	  2285	!       LENGTH    - The address of a variable to be updated with the length
;	  2286	!                   of the data returned in the buffer.
;	  2287	!       BP_ADDR   - The address of a character sequence pointer to 
;	  2288	!                   the parameter buffer.
;	  2289	!
;	  2290	! IMPLICIT INPUTS
;	  2291	!
;	  2292	!	NONE.
;	  2293	!
;	  2294	! ROUTINE VALUE:
;	  2295	!
;	  2296	!	NICE return code.
;	  2297	!
;	  2298	! SIDE EFFECTS:
;	  2299	!
;	  2300	!	NONE.
;	  2301	!
;	  2302	!--
;	  2303	
;	  2304	    begin
;	  2305	
;	  2306	    map
;	  2307	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  2308	
;	  2309	    local
;	  2310	         PVB_QE: ref $NML$PVB_ENTRY_BLOCK;
;	  2311	
;	  2312	    selectone .FUNCTION of
;	  2313	        set
;	  2314	        [%bliss36($NTSHO)
;	  2315	         %bliss16(N$FSHO)]:               ! Show parameters
;	  2316	            begin
;	  2317	            case .SELECTOR from SUMMARY_ to EVENTS_ of
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  72
X00.89		READ_ENTITY					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (15)

;	  2318	                set
;	  2319	                [SUMMARY_, STATUS_, CHARACTERISTICS_]: 
;	  2320	                    READ_PARAMETERS (.EDB_QE, .TYPE, .SELECTOR,
;	  2321	                                     .LENGTH, .BP_ADDR);
;	  2322	                [COUNTERS_]:
;	  2323	                    READ_COUNTERS (.EDB_QE, .TYPE, .SELECTOR,
;	  2324	                                   .LENGTH, .BP_ADDR);
;	  2325	                [EVENTS_]:
;	  2326	                    READ_FILTERS (.EDB_QE, .TYPE, .QUALIFIER,
;	  2327	                                  .LENGTH, .BP_ADDR);
;	  2328	                tes
;	  2329	            end;
;	  2330	
;	  2331	        [%bliss36($NTSZC)
;	  2332	         %bliss16(N$FSZC)]:             ! Show and zero counters
;	  2333	            READ_COUNTERS (.EDB_QE, .TYPE, .SELECTOR,
;	  2334	                           .LENGTH, .BP_ADDR);
;	  2335	        [otherwise]:
;	L 2336	            $NICE$ERR_MPE;
; %PRINT:	Management program error
;	  2337	        tes
;	  2338	
;	  2339	    end;				! End of READ_ENTITY


						.SBTTL	READ.ENTITY READ_ENTITY
000000	004167  000000G			READ.ENTITY:
						JSR	R1,$SAVE5			;					2266
000004	016600  000032 				MOV	32(SP),R0			; FUNCTION,*				2312
000010	020027  000004 				CMP	R0,#4
000014	001045 					BNE	4$
000016	016604  000034 				MOV	34(SP),R4			; EDB.QE,*				2320
000022	016603  000030 				MOV	30(SP),R3			; TYPE,*
000026	016602  000020 				MOV	20(SP),R2			; LENGTH,*				2321
000032	016601  000016 				MOV	16(SP),R1			; BP.ADDR,*
000036	016600  000022 				MOV	22(SP),R0			; SELECTOR,*				2317
000042	010005 					MOV	R0,R5				;					2316
000044	006305 					ASL	R5
000046	066507  000020'				ADD	P.AAD(R5),PC			; Case dispatch
000052	010446 				1$:	MOV	R4,-(SP)			;					2320
000054	010346 					MOV	R3,-(SP)
000056	010046 					MOV	R0,-(SP)
000060	010246 					MOV	R2,-(SP)
000062	010146 					MOV	R1,-(SP)
000064	004767  000000V				JSR	PC,READ.PARAMETERS
000070	000436 					BR	6$				;					2316
000072	010446 				2$:	MOV	R4,-(SP)			;					2323
000074	010346 					MOV	R3,-(SP)
000076	010046 					MOV	R0,-(SP)
000100	010246 					MOV	R2,-(SP)
000102	010146 					MOV	R1,-(SP)
000104	000426 					BR	5$
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  73
X00.89		READ_ENTITY					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (15)

000106	010446 				3$:	MOV	R4,-(SP)			;					2326
000110	010346 					MOV	R3,-(SP)
000112	016646  000030 				MOV	30(SP),-(SP)			; QUALIFIER,*
000116	010246 					MOV	R2,-(SP)
000120	010146 					MOV	R1,-(SP)
000122	004767  000000V				JSR	PC,READ.FILTERS
000126	000417 					BR	6$				;					2316
000130	020027  000005 			4$:	CMP	R0,#5				;					2312
000134	001017 					BNE	7$
000136	016646  000034 				MOV	34(SP),-(SP)			; EDB.QE,*				2333
000142	016646  000032 				MOV	32(SP),-(SP)			; TYPE,*
000146	016646  000026 				MOV	26(SP),-(SP)			; SELECTOR,*
000152	016646  000026 				MOV	26(SP),-(SP)			; LENGTH,*
000156	016646  000026 				MOV	26(SP),-(SP)			; BP.ADDR,*
000162	004767  000000V			5$:	JSR	PC,READ.COUNTERS
000166	062706  000012 			6$:	ADD	#12,SP
000172	000207 					RTS	PC				;					2312
000174	012700  177773 			7$:	MOV	#-5,R0
000200	000207 					RTS	PC				;					2266
; Routine Size:  65 words,	Routine Base:  $CODE$ + 5052
; Maximum stack depth per invocation:  12 words


000020						.PSECT	$PLIT$,  RO ,  D  

					P.AAD:						; CASE Table for READ.ENTITY+0046	2316
000020	000000 					.WORD	0				; [1$]
000022	000000 					.WORD	0				; [1$]
000024	000000 					.WORD	0				; [1$]
000026	000020 					.WORD	20				; [2$]
000030	000034 					.WORD	34				; [3$]
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  74
X00.89		READ_PARAMETERS					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (16)

;	  2340	%routine ('READ_PARAMETERS', EDB_QE, TYPE, SELECTOR, LENGTH, BP_ADDR) =
;	  2341	
;	  2342	!++
;	  2343	! FUNCTIONAL DESCRIPTION:
;	  2344	!
;	  2345	!	Reads all of the NML parameters out of the volatile
;	  2346	!       data base for an entity.
;	  2347	!
;	  2348	! FORMAL PARAMETERS
;	  2349	!
;	  2350	!	EDB_QE    - Address of the entity data base entry.
;	  2351	!       TYPE      - The NML entity type number of the entity to which the
;	  2352	!                   parameter pertains.
;	  2353	!       SELECTOR  - For the return function, the class of entities to return.
;	  2354	!       LENGTH    - The address of a variable to be updated with the length
;	  2355	!                   of the data returned in the buffer.
;	  2356	!       BP_ADDR   - The address of a character sequence pointer to 
;	  2357	!                   the parameter buffer.
;	  2358	!
;	  2359	! IMPLICIT INPUTS
;	  2360	!
;	  2361	!	When called, the contents of the address passed as LENGTH
;	  2362	!	specifies the characters currently available in the buffer.
;	  2363	!
;	  2364	! ROUTINE VALUE:
;	  2365	!
;	  2366	!	NICE return code.
;	  2367	!
;	  2368	! SIDE EFFECTS:
;	  2369	!
;	  2370	!	The contents of LENGTH are updated.
;	  2371	!
;	  2372	!--
;	  2373	
;	  2374	    begin
;	  2375	
;	  2376	    map
;	  2377	        EDB_QE: ref ENTITY_DB_BLOCK;
;	  2378	
;	  2379	    label
;	  2380	        DISPLAY_CHECK;
;	  2381	
;	  2382	    literal
;	  2383		CPARM_STATE = 0;                ! Circuit STATE
;	  2384	
;	  2385	    !
;	  2386	    ! If parameter count is zero or a parameter vector is not currently
;	  2387	    ! allocated there is nothing to show.
;	  2388	    !
;	  2389	
;	  2390	    if ((.EDB_QE[EDB_PARAMETER_ALLOCATION] eql 0) ! They better all be in
;	  2391	    and (.EDB_QE[EDB_PARAMETER_VECTOR] eql 0)) ! agreement.
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  75
X00.89		READ_PARAMETERS					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (16)

;	  2392	    or (.EDB_QE[EDB_PARAMETER_COUNT] eql 0)
;	  2393	    then return NICE$_SUC;
;	  2394	
;	  2395	    !
;	  2396	    ! Otherwise, if the count is non-zero and a parameter vector is
;	  2397	    ! allocated, then search through the vector for each parameter
;	  2398	    ! in the volatile data base and place a formatted entry in the
;	  2399	    ! buffer representing its current value.
;	  2400	    !
;	  2401	
;	  2402	    begin
;	  2403	
;	  2404	    local
;	  2405	        PVB_QE: ref $NML$PVB_ENTRY_BLOCK;
;	  2406	
;	  2407	    PVB_QE = .EDB_QE[EDB_PARAMETER_VECTOR];
;	  2408	
;	  2409	    decru N from .EDB_QE[EDB_PARAMETER_COUNT] to 1
;	  2410	    do begin
;	  2411	DISPLAY_CHECK:
;	  2412	       begin                            ! DISPLAY_CHECK
;	  2413	       local L;
;	  2414	
;	  2415	       case .SELECTOR from SUMMARY_ to COUNTERS_ of
;	  2416	           set
;	  2417	           [STATUS_]:
;	  2418	               if not NML$STATUS (.TYPE, .PVB_QE[PE_NUMBER])
;	  2419	               then leave DISPLAY_CHECK;
;	  2420	           [SUMMARY_]:
;	  2421	               if not NML$SUMMARY (.TYPE, .PVB_QE[PE_NUMBER])
;	  2422	               then leave DISPLAY_CHECK;
;	  2423	           [CHARACTERISTICS_]:
;	  2424	               if not NML$CHARACTERISTIC (.TYPE, .PVB_QE[PE_NUMBER])
;	  2425	               then leave DISPLAY_CHECK;
;	  2426	           [inrange]:
;	  2427	               return NICE$_MPE;
;	  2428	           tes;
;	L 2429	%if $MCB
;	  2430	%then
;	  2431	       selectone .TYPE of
;	  2432	           set
;	  2433	           [LINE_, CIRCUIT_]:
;	  2434	               if .PVB_QE[PE_NUMBER] eql CPARM_STATE
;	  2435	               then leave DISPLAY_CHECK;
;	  2436	           [otherwise]:
;	  2437	               ;
;	  2438	           tes;
;	  2439	%fi
;	  2440	
;	  2441	       !
;	  2442	       ! If the parameter buffer length is 3 or less, we can't fill in
;	  2443	       ! any data in the buffer.
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  76
X00.89		READ_PARAMETERS					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (16)

;	  2444	       !
;	  2445	
;	  2446	       if ..LENGTH leq 3 then return NICE$_REE;
;	  2447	
;	  2448	       L = READ_PARAMETER_DATA (.TYPE, .PVB_QE, ..LENGTH-3, .BP_ADDR) + 3;
;	  2449	
;	L 2450	       if ..LENGTH lss .L then return $NICE$ERR_REE;
; %PRINT:	Resource error
;	  2451	
;	  2452	       .LENGTH = ..LENGTH - .L
;	  2453	       end;                             ! DISPLAY_CHECK
;	  2454	       PVB_QE = vector [.PVB_QE, PVB_ENTRY_SIZE];
;	  2455	       end;
;	  2456	
;	  2457	    end;
;	  2458	
;	  2459	    if (.TYPE eql LOGGING_) and (.SELECTOR eql CHARACTERISTICS_)
;	  2460	    then READ_FILTERS (.EDB_QE, .TYPE, 0, .LENGTH, .BP_ADDR);
;	  2461	
;	  2462	    return NICE$_SUC;
;	  2463	    end;				! End of READ_PARAMETERS


						.SBTTL	READ.PARAMETERS READ_PARAMETERS
005254						.PSECT	$CODE$,  RO 

000000	004167  000000G			READ.PARAMETERS:
						JSR	R1,$SAVE4			;					2340
000004	016603  000024 				MOV	24(SP),R3			; EDB.QE,*				2390
000010	005763  000032 				TST	32(R3)
000014	001003 					BNE	1$
000016	005763  000034 				TST	34(R3)				;					2391
000022	001553 					BEQ	15$
000024	005763  000030 			1$:	TST	30(R3)				;					2392
000030	001550 					BEQ	15$				;					2393
000032	016304  000034 				MOV	34(R3),R4			; *,PVB.QE				2407
000036	016302  000030 				MOV	30(R3),R2			; *,N					2409
000042	001517 					BEQ	14$
000044	016600  000020 			2$:	MOV	20(SP),R0			; SELECTOR,*				2415
000050	006300 					ASL	R0
000052	066007  000032'				ADD	P.AAE(R0),PC			; Case dispatch
000056	016646  000022 			3$:	MOV	22(SP),-(SP)			; TYPE,*				2418
000062	011446 					MOV	(R4),-(SP)			; PVB.QE,*
000064	004767  000000G				JSR	PC,NL.PST
000070	022626 					CMP	(SP)+,(SP)+
000072	006000 					ROR	R0
000074	103426 					BLO	7$
000076	000437 					BR	9$				;					2419
000100	016646  000022 			4$:	MOV	22(SP),-(SP)			; TYPE,*				2421
000104	011446 					MOV	(R4),-(SP)			; PVB.QE,*
000106	004767  000000G				JSR	PC,NL.PSU
000112	022626 					CMP	(SP)+,(SP)+
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  77
X00.89		READ_PARAMETERS					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (16)

000114	006000 					ROR	R0
000116	103415 					BLO	7$
000120	000426 					BR	9$				;					2422
000122	016646  000022 			5$:	MOV	22(SP),-(SP)			; TYPE,*				2424
000126	011446 					MOV	(R4),-(SP)			; PVB.QE,*
000130	004767  000000G				JSR	PC,NL.PCH
000134	022626 					CMP	(SP)+,(SP)+
000136	006000 					ROR	R0
000140	103404 					BLO	7$
000142	000415 					BR	9$				;					2425
000144	012700  177773 			6$:	MOV	#-5,R0				;					2427
000150	000207 					RTS	PC
000152	016600  000022 			7$:	MOV	22(SP),R0			; TYPE,*				2431
000156	020027  000001 				CMP	R0,#1
000162	001403 					BEQ	8$
000164	020027  000003 				CMP	R0,#3
000170	001005 					BNE	10$
000172	005714 				8$:	TST	(R4)				; PVB.QE				2434
000174	001003 					BNE	10$
000176	162706  000010 			9$:	SUB	#10,SP				;					2435
000202	000431 					BR	13$
000204	017601  000016 			10$:	MOV	@16(SP),R1			; LENGTH,*				2446
000210	020127  000003 				CMP	R1,#3
000214	003417 					BLE	11$
000216	010046 					MOV	R0,-(SP)			;					2448
000220	010446 					MOV	R4,-(SP)			; PVB.QE,*
000222	010146 					MOV	R1,-(SP)
000224	162716  000003 				SUB	#3,(SP)
000230	016646  000022 				MOV	22(SP),-(SP)			; BP.ADDR,*
000234	004767  000000V				JSR	PC,READ.PARAMETER.DATA
000240	062700  000003 				ADD	#3,R0
000244	020100 					CMP	R1,R0				; *,L					2450
000246	002005 					BGE	12$
000250	062706  000010 				ADD	#10,SP
000254	012700  177761 			11$:	MOV	#-17,R0
000260	000207 					RTS	PC
000262	160076  000026 			12$:	SUB	R0,@26(SP)			; L,LENGTH				2452
000266	062704  000004 			13$:	ADD	#4,R4				; *,PVB.QE				2454
000272	062706  000010 				ADD	#10,SP				;					2410
000276	005302 					DEC	R2				; N					0000
000300	001261 					BNE	2$
000302	026627  000022  000002 		14$:	CMP	22(SP),#2			; TYPE,*				2459
000310	001020 					BNE	15$
000312	026627  000020  000002 			CMP	20(SP),#2			; SELECTOR,*
000320	001014 					BNE	15$
000322	010346 					MOV	R3,-(SP)			;					2460
000324	016646  000024 				MOV	24(SP),-(SP)			; TYPE,*
000330	005046 					CLR	-(SP)
000332	016646  000024 				MOV	24(SP),-(SP)			; LENGTH,*
000336	016646  000024 				MOV	24(SP),-(SP)			; BP.ADDR,*
000342	004767  000000V				JSR	PC,READ.FILTERS
000346	062706  000012 				ADD	#12,SP
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  78
X00.89		READ_PARAMETERS					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (16)

000352	012700  000001 			15$:	MOV	#1,R0				;					2374
000356	000207 					RTS	PC				;					2340
; Routine Size:  120 words,	Routine Base:  $CODE$ + 5254
; Maximum stack depth per invocation:  11 words


000032						.PSECT	$PLIT$,  RO ,  D  

					P.AAE:						; CASE Table for READ.PARAMETERS+0052	2415
000032	000022 					.WORD	22				; [4$]
000034	000000 					.WORD	0				; [3$]
000036	000044 					.WORD	44				; [5$]
000040	000066 					.WORD	66				; [6$]
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  79
X00.89		READ_COUNTERS					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (17)

;	  2464	%routine ('READ_COUNTERS', EDB_QE, TYPE, SELECTOR, LENGTH, BP_ADDR) =
;	  2465	
;	  2466	!++
;	  2467	! FUNCTIONAL DESCRIPTION:
;	  2468	!
;	  2469	!       No counters are supported at this level.
;	  2470	!
;	  2471	! FORMAL PARAMETERS
;	  2472	!
;	  2473	!	NONE.
;	  2474	!
;	  2475	! IMPLICIT INPUTS
;	  2476	!
;	  2477	!	NONE.
;	  2478	!
;	  2479	! ROUTINE VALUE:
;	  2480	!
;	  2481	!	NONE.
;	  2482	!
;	  2483	! SIDE EFFECTS:
;	  2484	!
;	  2485	!	NONE.
;	  2486	!
;	  2487	!--
;	  2488	
;	  2489	    begin
;	  2490	
;	  2491	    return $TRUE;
;	  2492	    end;				! End of READ_COUNTERS


						.SBTTL	READ.COUNTERS READ_COUNTERS
005634						.PSECT	$CODE$,  RO 

000000	012700  000001 			READ.COUNTERS:
						MOV	#1,R0				;					2489
000004	000207 					RTS	PC				;					2464
; Routine Size:  3 words,	Routine Base:  $CODE$ + 5634
; Maximum stack depth per invocation:  0 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  80
X00.89		READ_FILTERS					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (18)

;	  2493	%routine ('READ_FILTERS', EDB_QE, TYPE, QUALIFIER, LENGTH, BP_ADDR) =
;	  2494	
;	  2495	!++
;	  2496	! FUNCTIONAL DESCRIPTION:
;	  2497	!
;	  2498	!       No filters supported yet.
;	  2499	!
;	  2500	! FORMAL PARAMETERS
;	  2501	!
;	  2502	!	NONE.
;	  2503	!
;	  2504	! IMPLICIT INPUTS
;	  2505	!
;	  2506	!	NONE.
;	  2507	!
;	  2508	! ROUTINE VALUE:
;	  2509	!
;	  2510	!	NONE.
;	  2511	!
;	  2512	! SIDE EFFECTS:
;	  2513	!
;	  2514	!	NONE.
;	  2515	!
;	  2516	!--
;	  2517	
;	  2518	    begin
;	  2519	
;	  2520	    map
;	  2521	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  2522	
;	  2523	    local
;	  2524	        PBF : PBF_BLOCK,
;	  2525	        FDB : ref FDB_BLOCK,
;	  2526	        NODE_PTR;
;	  2527	
;	L 2528	%if NML$CFG_FILTERS
;	U 2529	%then
;	U 2530	
;	U 2531	    PBF [PBF_LEN_ADR] = .LENGTH;
;	U 2532	    PBF [PBF_BUF_PTR_ADR] = .BP_ADDR;
;	U 2533	    PBF [PBF_SINK] = ch$rchar (ch$ptr (EDB_QE [EDB_ENTITY_ID],, 8));
;	U 2534	
;	U 2535	    if (NODE_PTR = .QUALIFIER) eql 0
;	U 2536	    then begin
;	U 2537	         FDB = NMU$QUEUE_SCAN (QH_LOGGING_FILTERS,
;	U 2538	                               NMU$NETWORK_LOCAL (),
;	U 2539	                               NODE_ID_MATCH);
;	U 2540	         if .FDB neq 0
;	U 2541	         then if READ_FILTER (.FDB, PBF) neq 0
;	U 2542	              then return $FALSE;
;	U 2543	         end
;	U 2544	    else begin
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  81
X00.89		READ_FILTERS					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (18)

;	U 2545	         if (FDB = ch$rchar_a (NODE_PTR)) lequ 127
;	U 2546	         then begin
;	U 2547	              local NODE_BUF : block [NODE_ID_BUFFER_SIZE];
;	U 2548	
;	U 2549	              if .FDB eql 0
;	U 2550	              then begin
;	U 2551	                   local NODE_ADR;
;	U 2552	
;	U 2553	                   if (NODE_ADR = GETW (NODE_PTR)) eql 0
;	U 2554	                   then begin
;	U 2555	                        ch$move (NODE_ID_BUFFER_LENGTH,
;	U 2556	                                 NMU$NETWORK_LOCAL (),
;	U 2557	                                 ch$ptr (NODE_BUF,, 8));
;	U 2558	                        NODE_PTR = 0;
;	U 2559	                        end
;	U 2560	                   else begin
;	U 2561	                        NODE_PTR = ch$ptr (NODE_BUF,, 8);
;	U 2562	                        PUTW (NODE_ADR, NODE_PTR);
;	U 2563	                        PUTB (0, NODE_PTR);
;	U 2564	                        end;
;	U 2565	                   end
;	U 2566	              else begin
;	U 2567	                   NODE_PTR = ch$ptr (NODE_BUF,, 8);
;	U 2568	                   PUTB (0, NODE_PTR);
;	U 2569	                   PUTB (0, NODE_PTR);
;	U 2570	                   ch$move (.FDB + 1, .QUALIFIER, .NODE_PTR);
;	U 2571	                   end;
;	U 2572	
;	U 2573	              if .NODE_PTR neq 0
;	U 2574	              then begin
;	U 2575	                   NODE_PTR = NODE_ID_BUFFER_LENGTH;
;	U 2576	                   $NML$MAP_NODE_ID (NODE_PTR, ch$ptr (NODE_BUF,, 8));
;	U 2577	                   end;
;	U 2578	
;	U 2579	              FDB = NMU$QUEUE_SCAN (QH_LOGGING_FILTERS,
;	U 2580	                                    ch$ptr (NODE_BUF,, 8),
;	U 2581	                                    NODE_ID_MATCH);
;	U 2582	              if .FDB neq 0
;	U 2583	              then if READ_FILTER (.FDB, PBF) neq 0
;	U 2584	                   then return $false;
;	U 2585	              end
;	U 2586	         else if NMU$QUEUE_SCAN (QH_LOGGING_FILTERS, PBF, READ_FILTER) neq 0
;	U 2587	              then return $FALSE;
;	U 2588	         end;
;	U 2589	
;	U 2590	    return $TRUE
;	  2591	%else
;	  2592	    return $false
;	  2593	%fi
;	  2594	    end;				! End of READ_FILTERS
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  82
X00.89		READ_FILTERS					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (18)

						.SBTTL	READ.FILTERS READ_FILTERS
000000	005000 				READ.FILTERS:
						CLR	R0				;					2518
000002	000207 					RTS	PC				;					2493
; Routine Size:  2 words,	Routine Base:  $CODE$ + 5642
; Maximum stack depth per invocation:  9 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  83
X00.89		READ_FILTER					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (19)

;	  2595	%routine ('READ_FILTER', FDB : ref FDB_BLOCK, PBF : ref PBF_BLOCK) =
;	  2596	
;	  2597	!++
;	  2598	! FUNCTIONAL DESCRIPTION:
;	  2599	!
;	  2600	!       No filters supported yet.
;	  2601	!
;	  2602	! FORMAL PARAMETERS
;	  2603	!
;	  2604	!	NONE.
;	  2605	!
;	  2606	! IMPLICIT INPUTS
;	  2607	!
;	  2608	!	NONE.
;	  2609	!
;	  2610	! ROUTINE VALUE:
;	  2611	!
;	  2612	!	NONE.
;	  2613	!
;	  2614	! SIDE EFFECTS:
;	  2615	!
;	  2616	!	NONE.
;	  2617	!
;	  2618	!--
;	  2619	
;	  2620	    begin
;	  2621	    PBF [PBF_NODE_ID_PTR] = ch$ptr (FDB [FDB_NODE_ID],, 8);
;	  2622	
;	L 2623	%if NML$CFG_FILTERS
;	U 2624	%then
;	U 2625	
;	U 2626	    selectone .PBF [PBF_SINK] of
;	U 2627	        set
;	U 2628	        [CONSOLE_]:
;	U 2629	            NMU$QUEUE_SCAN (FDB [FDB_CONSOLE_FILTERS], .PBF, READ_FILTER_SINK);
;	U 2630	        [FILE_]:
;	U 2631	            NMU$QUEUE_SCAN (FDB [FDB_FILE_FILTERS], .PBF, READ_FILTER_SINK);
;	U 2632	        [MONITOR_]:
;	U 2633	            NMU$QUEUE_SCAN (FDB [FDB_MONITOR_FILTERS], .PBF, READ_FILTER_SINK);
;	U 2634	        tes
;	U 2635	
;	  2636	%else
;	  2637	    0
;	  2638	%fi
;	  2639	    end;				! End of READ_FILTER


						.SBTTL	READ.FILTER READ_FILTER
000000	016600  000002 			READ.FILTER:
						MOV	2(SP),R0			; PBF,*					2621
000004	016660  000004  000004 			MOV	4(SP),4(R0)			; FDB,*
000012	062760  000006  000004 			ADD	#6,4(R0)
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  84
X00.89		READ_FILTER					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (19)

000020	005000 					CLR	R0				;					2595
000022	000207 					RTS	PC
; Routine Size:  10 words,	Routine Base:  $CODE$ + 5646
; Maximum stack depth per invocation:  0 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  85
X00.89		READ_FILTER_SINK				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (20)

;	  2640	%routine ('READ_FILTER_SINK', FDBS : ref FDBS_BLOCK, PBF : ref PBF_BLOCK) =
;	  2641	
;	  2642	!++
;	  2643	! FUNCTIONAL DESCRIPTION:
;	  2644	!
;	  2645	!       No filters supported yet.
;	  2646	!
;	  2647	! FORMAL PARAMETERS
;	  2648	!
;	  2649	!	NONE.
;	  2650	!
;	  2651	! IMPLICIT INPUTS
;	  2652	!
;	  2653	!	NONE.
;	  2654	!
;	  2655	! ROUTINE VALUE:
;	  2656	!
;	  2657	!	NONE.
;	  2658	!
;	  2659	! SIDE EFFECTS:
;	  2660	!
;	  2661	!	NONE.
;	  2662	!
;	  2663	!--
;	  2664	
;	  2665	    begin
;	L 2666	%if NML$CFG_FILTERS
;	U 2667	%then
;	U 2668	    PBF [PBF_ENTITY_PTR] = ch$ptr (FDBS [FDBS_ENTITY],, 8);
;	U 2669	    NMU$QUEUE_SCAN (FDBS [FDBS_MASKS], .PBF, READ_FILTER_MASKS)
;	  2670	%else
;	  2671	    0
;	  2672	%fi
;	  2673	    end;				! End of READ_FILTER_SINK


						.SBTTL	READ.FILTER.SINK READ_FILTER_SINK
000000	005000 				READ.FILTER.SINK:
						CLR	R0				;					2640
000002	000207 					RTS	PC
; Routine Size:  2 words,	Routine Base:  $CODE$ + 5672
; Maximum stack depth per invocation:  0 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  86
X00.89		READ_FILTER_MASKS				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (21)

;	  2674	%routine ('READ_FILTER_MASKS', FDBM : ref FDBM_BLOCK, PBF : ref PBF_BLOCK) =
;	  2675	
;	  2676	!++
;	  2677	! FUNCTIONAL DESCRIPTION:
;	  2678	!
;	  2679	!       No filters supported yet.
;	  2680	!
;	  2681	! FORMAL PARAMETERS
;	  2682	!
;	  2683	!	NONE.
;	  2684	!
;	  2685	! IMPLICIT INPUTS
;	  2686	!
;	  2687	!	NONE.
;	  2688	!
;	  2689	! ROUTINE VALUE:
;	  2690	!
;	  2691	!	NONE.
;	  2692	!
;	  2693	! SIDE EFFECTS:
;	  2694	!
;	  2695	!	NONE.
;	  2696	!
;	  2697	!--
;	  2698	
;	  2699	    begin
;	  2700	
;	  2701	    bind
;	  2702	        PE = PBF[PBF_PE] : $NML$PVB_ENTRY_BLOCK;
;	  2703	
;	  2704	    local
;	  2705	        MASK : ref block field (MASK_BITS);
;	  2706	
;	L 2707	%if NML$CFG_FILTERS
;	U 2708	%then
;	U 2709	
;	U 2710	    MASK = FDBM[FDBM_MASKS];
;	U 2711	
;	U 2712	    incr TYPE from .FDBM[FDBM_LOW] to .FDBM[FDBM_HIGH]
;	U 2713	    do begin
;	U 2714	       local LNG, PTR;
;	U 2715	
;	U 2716	       LNG = 0;                         ! Copy BITVECTOR into 4 bytes
;	U 2717	       PTR = ch$ptr (PBF[PBF_MASK],, 8);
;	U 2718	       PUT32 (MASK[MASK_BITS], PTR);
;	U 2719	       LNG = 0;                         ! Check if house is full or empty
;	U 2720	       PTR = ch$ptr (PBF[PBF_MASK],, 8);
;	U 2721	       decru CNT from 4 to 1 do LNG = .LNG + ch$rchar_a (PTR);
;	U 2722	       if .LNG neq 0
;	U 2723	       then begin
;	U 2724	            if .LNG eql 4*255
;	U 2725	            then LNG = -1
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  87
X00.89		READ_FILTER_MASKS				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (21)

;	U 2726	            else LNG = 4; %(for now)%
;	U 2727	
;	U 2728	            if .PBF[PBF_NODE_ID_PTR] neq 0
;	U 2729	            then begin
;	U 2730	                 local L;
;	U 2731	
;	U 2732	                 PE[PE_NUMBER] = 200;
;	U 2733	                 PE[PE_ADDRESS] = .PBF[PBF_NODE_ID_PTR];
;	U 2734	                 L = READ_PARAMETER_DATA (LOGGING_,
;	U 2735	                                          PE,
;	U 2736	                                          (..PBF[PBF_LEN_ADR] - 3),
;	U 2737	                                          .PBF[PBF_BUF_PTR_ADR]) + 3;
;	U 2738	                 if ..PBF[PBF_LEN_ADR] lss .L then return NICE$_REE;
;	U 2739	
;	U 2740	                 .PBF[PBF_LEN_ADR] = ..PBF[PBF_LEN_ADR] + .L;
;	U 2741	                 PBF[PBF_NODE_ID_PTR] = 0;
;	U 2742	                 end;
;	U 2743	
;	U 2744	            %(record ENTITY TYPE from FDBS[FDBS_ENTITY])%
;	U 2745	
;	U 2746	            if .LNG gtr 0
;	U 2747	            then begin %(record EVENT CLASS from 0^14 + .TYPE)%
;	U 2748	                 0 %(record EVENT MASK from LNG and MASK[MASK_BITS])%
;	U 2749	                 end
;	U 2750	            else begin
;	U 2751	                 0 %(record EVENT CLASS from 2^14 + .TYPE)%
;	U 2752	                 end;
;	U 2753	            end;
;	U 2754	
;	U 2755	       MASK = vector [.MASK, MASK_SIZE];
;	U 2756	       end;
;	  2757	%fi
;	  2758	
;	  2759	    return 0
;	  2760	    end;				! End of READ_FILTER_MASKS


						.SBTTL	READ.FILTER.MASKS READ_FILTER_MASKS
000000	005000 				READ.FILTER.MASKS:
						CLR	R0				;					2699
000002	000207 					RTS	PC				;					2674
; Routine Size:  2 words,	Routine Base:  $CODE$ + 5676
; Maximum stack depth per invocation:  0 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  88
X00.89		VDB_CHANGE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (22)

;	  2761	%routine ('VDB_CHANGE', FUNCTION, TYPE, QUALIFIER, ENTITY, LENGTH, POINTER, ERR_DETAIL) =
;	  2762	
;	  2763	!++
;	  2764	! FUNCTIONAL DESCRIPTION:
;	  2765	!
;	  2766	!	Performs the NML NICE change function for NML volatile parameters.
;	  2767	!
;	  2768	! FORMAL PARAMETERS
;	  2769	!
;	  2770	!	FUNCTION  - Code to denote whether the specified parameter is to be
;	  2771	!                   set or cleared.
;	  2772	!       TYPE      - The NML entity type number of the entity to which the
;	  2773	!                   parameter pertains.
;	  2774	!       QUALIFIER - An optional character sequence pointer to a qualifier in
;	  2775	!                   parameter format.
;	  2776	!       ENTITY    - Character sequence pointer to the entity id.
;	  2777	!       LENGTH    - The length of the parameter data passed in the
;	  2778	!		    parameter buffer.
;	  2779	!       POINTER   - A character sequence pointer to the parameter buffer.
;	  2780	!       ERR_DETAIL- The address of a variable in which to return the
;	  2781	!		    error detail field for the response message if this
;	  2782	!		    request fails.
;	  2783	!
;	  2784	! IMPLICIT INPUTS
;	  2785	!
;	  2786	!	NONE.
;	  2787	!
;	  2788	! ROUTINE VALUE:
;	  2789	!
;	  2790	!	NML specified NICE return code.
;	  2791	!
;	  2792	! SIDE EFFECTS:
;	  2793	!
;	  2794	!	NONE.
;	  2795	!
;	  2796	!--
;	  2797	
;	  2798	    begin
;	  2799	
;	  2800	    local
;	  2801	         EDB_QE: ref ENTITY_DB_BLOCK;
;	  2802	
;	  2803	    selectone .FUNCTION of
;	  2804	        set
;	  2805	        [%bliss36($NTSET) %bliss16(N$FSET)]: ! SET parameter
;	  2806	            begin
;	  2807	            if (EDB_QE = GET_EXISTING_ENTITY_DB (.TYPE, .ENTITY)) eql 0
;	  2808	            then begin                  ! Could not locate data base entry
;	  2809	                 if not ENTITY_IS_VALID (.TYPE, .ENTITY) ! Is entity valid ?
;	  2810	                 then begin
;	  2811			      .ERR_DETAIL = .TYPE;
;	L 2812			      return $NICE$ERR_URC; ! No, return error
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  89
X00.89		VDB_CHANGE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (22)

; %PRINT:	Unrecognized component
;	  2813			      end;
;	  2814	
;	  2815	                 if (EDB_QE = SET_ENTITY_DB (.TYPE, .ENTITY)) eql 0
;	L 2816	                 then return $NICE$ERR_NRE; ! Try to create data base entry
; %PRINT:	No room for new entry
;	  2817	
;	L 2818	                 %if $X25 and not $MCB
;	U 2819	                 %then
;	U 2820	
;	U 2821	                 if .TYPE eql MODULE_   ! Initialize queue for network entries
;	U 2822	                 then NMU$QUEUE_RESET (EDB_QE[EDB_QUALIFIER_QUEUE]);
;	U 2823	
;	  2824	                 %fi
;	  2825	                 end;
;	  2826	
;	  2827	            selectone .TYPE of          ! Put the parameter entry into
;	  2828	                set                     ! the parameter data vector.
;	  2829	                [NODE_E]:
;	  2830	                    begin
;	  2831	                    local PTR;
;	  2832	
;	  2833	                    PTR = .POINTER;     ! Get local copy of pointer
;	  2834	                    if GETW (PTR) eql 110 ! SERVICE CIRCUIT
;	  2835	                    then begin          ! Check if circuit already assigned
;	  2836	                         if (PTR = NML$FIND_NDB (.PTR)) neq 0
;	  2837	                         then
;	  2838				     if not ch$eql (9, .PTR, 9, .ENTITY)
;	  2839				     then begin
;	  2840					  .ERR_DETAIL = CIRCUIT_;
;	L 2841					  return $NICE$ERR_CWS;
; %PRINT:	Component in wrong state
;	  2842					  end;
;	  2843	                         end;
;	  2844	
;	  2845	                    return INSERT_PARAMETER (.EDB_QE, .TYPE, .POINTER, $false);
;	  2846	                    end;
;	  2847	
;	L 2848	                %if $X25 and not $MCB   ! MODULE X25-ACCESS volatile data base
;	U 2849	                %then                   ! exists in the TOPS only
;	U 2850	
;	U 2851	                [MODULE_]:
;	U 2852	                    return SET_QUALIFIED_ENTITY (.EDB_QE,
;	U 2853	                                                 .TYPE,
;	U 2854	                                                 .QUALIFIER,
;	U 2855	                                                 .POINTER);
;	  2856	                %fi
;	  2857	
;	  2858	                [otherwise]:
;	  2859	                    return INSERT_PARAMETER (.EDB_QE, .TYPE, .POINTER, $false);
;	  2860	                tes;
;	  2861	            end;
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  90
X00.89		VDB_CHANGE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (22)

;	  2862	
;	  2863	        [%bliss36($NTCLR) %bliss16(N$FCLR)]: ! CLEAR parameter
;	  2864	            begin
;	  2865	            if (EDB_QE = GET_EXISTING_ENTITY_DB (.TYPE, .ENTITY)) eql 0
;	  2866	            then begin
;	  2867			 .ERR_DETAIL = .TYPE;
;	L 2868			 return $NICE$ERR_URC;
; %PRINT:	Unrecognized component
;	  2869			 end
;	  2870	            else selectone .TYPE of
;	  2871	                     set
;	  2872	                     [MODULE_]:
;	U 2873	                         %if $X25 and not $MCB %then
;	U 2874	                         return REMOVE_QUALIFIED_PARAMETER (.EDB_QE,
;	U 2875	                                                            .TYPE,
;	U 2876	                                                            .QUALIFIER,
;	U 2877	                                                            .POINTER,
;	U 2878	                                                            .LENGTH,
;	U 2879	                                                            $false);
;	  2880	                         %else
;	  2881				 begin
;	  2882				 .ERR_DETAIL = .TYPE;
;	L 2883	                         return $NICE$ERR_URC;
; %PRINT:	Unrecognized component
;	  2884				 end;
;	  2885	                         %fi
;	  2886	
;	  2887	                     [otherwise]:
;	  2888	                         REMOVE_PARAMETER (.EDB_QE,
;	  2889	                                           .TYPE,
;	  2890	                                           (if .LENGTH gtr 0
;	  2891	                                            then GETW_NA (.POINTER)
;	  2892	                                            else -1), ! Zero implies ALL
;	  2893	                                           $false);
;	  2894	                     tes;
;	  2895	            end;
;	  2896	
;	  2897	        [otherwise]:
;	L 2898	            return $NICE$ERR_UFO;
; %PRINT:	Unrecognized function or option
;	  2899	        tes;
;	  2900	
;	  2901	    return NICE$_SUC;
;	  2902	    end;				! End of VDB_CHANGE


						.SBTTL	VDB.CHANGE VDB_CHANGE
000000	004167  000000G			VDB.CHANGE:
						JSR	R1,$SAVE4			;					2761
000004	005746 					TST	-(SP)
000006	016600  000032 				MOV	32(SP),R0			; FUNCTION,*				2803
000012	020027  000001 				CMP	R0,#1
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  91
X00.89		VDB_CHANGE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (22)

000016	001112 					BNE	3$
000020	016603  000030 				MOV	30(SP),R3			; TYPE,*				2807
000024	010346 					MOV	R3,-(SP)
000026	016604  000026 				MOV	26(SP),R4			; ENTITY,*
000032	010446 					MOV	R4,-(SP)
000034	004767  000000V				JSR	PC,GET.EXISTING.ENTITY.DB
000040	022626 					CMP	(SP)+,(SP)+
000042	010002 					MOV	R0,R2				; *,EDB.QE
000044	001021 					BNE	1$
000046	010346 					MOV	R3,-(SP)			;					2809
000050	010446 					MOV	R4,-(SP)
000052	004767  000000V				JSR	PC,ENTITY.IS.VALID
000056	022626 					CMP	(SP)+,(SP)+
000060	006000 					ROR	R0
000062	103110 					BHIS	4$				;					2811
000064	010346 					MOV	R3,-(SP)			;					2815
000066	010446 					MOV	R4,-(SP)
000070	004767  000000V				JSR	PC,SET.ENTITY.DB
000074	022626 					CMP	(SP)+,(SP)+
000076	010002 					MOV	R0,R2				; *,EDB.QE
000100	001003 					BNE	1$
000102	012700  177754 				MOV	#-24,R0				;					2816
000106	000541 					BR	10$
000110	005703 				1$:	TST	R3				;					2827
000112	001042 					BNE	2$
000114	016601  000020 				MOV	20(SP),R1			; POINTER,PTR				2833
000120	112116 					MOVB	(R1)+,(SP)			; PTR,$$GETB.X				2834
000122	112166  000001 				MOVB	(R1)+,1(SP)			; PTR,$$GETB.X
000126	011600 					MOV	(SP),R0				; $$GETB.X,*
000130	020027  000156 				CMP	R0,#156
000134	001031 					BNE	2$
000136	010146 					MOV	R1,-(SP)			; PTR,*					2836
000140	004767  176344 				JSR	PC,NL.VFN
000144	005726 					TST	(SP)+
000146	010001 					MOV	R0,R1				; *,PTR
000150	001423 					BEQ	2$
000152	012746  000011 				MOV	#11,-(SP)			;					2838
000156	010146 					MOV	R1,-(SP)			; PTR,*
000160	012746  000011 				MOV	#11,-(SP)
000164	010446 					MOV	R4,-(SP)
000166	005046 					CLR	-(SP)
000170	004767  000000G				JSR	PC,BL$EQL
000174	062706  000012 				ADD	#12,SP
000200	006000 					ROR	R0
000202	103406 					BLO	2$
000204	012776  000003  000016 			MOV	#3,@16(SP)			; *,ERR.DETAIL				2840
000212	012700  177765 				MOV	#-13,R0				;					2839
000216	000475 					BR	10$
000220	010246 				2$:	MOV	R2,-(SP)			; EDB.QE,*				2859
000222	010346 					MOV	R3,-(SP)
000224	016646  000024 				MOV	24(SP),-(SP)			; POINTER,*
000230	005046 					CLR	-(SP)
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  92
X00.89		VDB_CHANGE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (22)

000232	004767  000000V				JSR	PC,INSERT.PARAMETER
000236	062706  000010 				ADD	#10,SP				;					2803
000242	000463 					BR	10$				;					2806
000244	020027  000002 			3$:	CMP	R0,#2				;					2803
000250	001053 					BNE	8$
000252	016603  000030 				MOV	30(SP),R3			; TYPE,*				2865
000256	010346 					MOV	R3,-(SP)
000260	016646  000026 				MOV	26(SP),-(SP)			; ENTITY,*
000264	004767  000000V				JSR	PC,GET.EXISTING.ENTITY.DB
000270	022626 					CMP	(SP)+,(SP)+
000272	010002 					MOV	R0,R2				; *,EDB.QE
000274	001403 					BEQ	4$				;					2867
000276	020327  000004 				CMP	R3,#4				;					2870
000302	001005 					BNE	5$
000304	010376  000016 			4$:	MOV	R3,@16(SP)			; *,ERR.DETAIL				2882
000310	012700  177770 				MOV	#-10,R0				;					2881
000314	000436 					BR	10$
000316	010246 				5$:	MOV	R2,-(SP)			; EDB.QE,*				2888
000320	010346 					MOV	R3,-(SP)
000322	005766  000026 				TST	26(SP)				; LENGTH				2890
000326	003414 					BLE	6$
000330	117666  000024  000004 			MOVB	@24(SP),4(SP)			; POINTER,$$GETW.NA.X			2891
000336	016600  000024 				MOV	24(SP),R0			; POINTER,*
000342	116066  000001  000005 			MOVB	1(R0),5(SP)			; *,$$GETW.NA.X
000350	016600  000004 				MOV	4(SP),R0			; $$GETW.NA.X,*
000354	010046 					MOV	R0,-(SP)			;					2890
000356	000402 					BR	7$
000360	012746  177777 			6$:	MOV	#-1,-(SP)
000364	005046 				7$:	CLR	-(SP)				;					2888
000366	004767  000000V				JSR	PC,REMOVE.PARAMETER
000372	062706  000010 				ADD	#10,SP
000376	000403 					BR	9$				;					2803
000400	012700  177777 			8$:	MOV	#-1,R0				;					2898
000404	000402 					BR	10$
000406	012700  000001 			9$:	MOV	#1,R0				;					2798
000412	005726 				10$:	TST	(SP)+				;					2761
000414	000207 					RTS	PC
; Routine Size:  135 words,	Routine Base:  $CODE$ + 5702
; Maximum stack depth per invocation:  12 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  93
X00.89		VDB_CHANGE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (23)

;	U 2903	%if $X25 and not $MCB %then
;	U 2904	%routine ('SET_QUALIFIED_ENTITY', EDB_QE, ENTITY, QUALIFIER, PARAMETER) =
;	U 2905	
;	U 2906	!++
;	U 2907	! FUNCTIONAL DESCRIPTION:
;	U 2908	!
;	U 2909	!       Set the parameter entry in the qualified sub queues.
;	U 2910	!
;	U 2911	! FORMAL PARAMETERS
;	U 2912	!
;	U 2913	!	EDB_QE          Address of the qualified entity data base structure to
;	U 2914	!                       which the parameter is to be inserted.
;	U 2915	!       ENTITY          The entity type number to which the parameter applies.
;	U 2916	!       QUALIFIER       A character sequence pointer to the qualifier
;	U 2917	!                       parameter.
;	U 2918	!       PARAMETER       A character sequence pointer to the parameter to
;	U 2919	!                       be inserted.
;	U 2920	!
;	U 2921	! IMPLICIT INPUTS
;	U 2922	!
;	U 2923	!	NONE.
;	U 2924	!
;	U 2925	! ROUTINE VALUE:
;	U 2926	!
;	U 2927	!	NICE return code.
;	U 2928	!
;	U 2929	! SIDE EFFECTS:
;	U 2930	!
;	U 2931	!	NONE.
;	U 2932	!
;	U 2933	!--
;	U 2934	
;	U 2935	    begin
;	U 2936	
;	U 2937	    map
;	U 2938	        EDB_QE: ref ENTITY_DB_BLOCK;
;	U 2939	
;	U 2940	    local
;	U 2941	        QH_QUALIFIER: ref Q_HEADER,
;	U 2942	        QE_QUALIFIER: ref ENTITY_DB_BLOCK;
;	U 2943	
;	U 2944	    QH_QUALIFIER = EDB_QE[EDB_QUALIFIER_QUEUE];
;	U 2945	
;	U 2946	    if .QUALIFIER eql 0
;	U 2947	    then begin                          ! Use default existing qualifier queue
;	U 2948	         if NMU$QUEUE_LENGTH (.QH_QUALIFIER) eql 1 ! Queue has only 1 entry ?
;	U 2949	         then QE_QUALIFIER = .QH_QUALIFIER[Q_FORWARD] ! Yes, default queue
;	U 2950	         else return $NICE$ERR_PAM;     ! No, expecting qualifier name
;	U 2951	         end
;	U 2952	    else begin                          ! Use specific qualifier queue
;	U 2953	         local ID_STRING, COUNT: $SIGNED_BYTE_VALUE;
;	U 2954	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  94
X00.89		VDB_CHANGE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (23)

;	U 2955	         ID_STRING = ch$plus (.QUALIFIER, 2); ! Get qualifier id string
;	U 2956	         COUNT = ch$rchar (.ID_STRING); ! Get count byte
;	U 2957	
;	U 2958	         if .COUNT[VALUE] lss 0         ! If count byte is negative ....
;	U 2959	         then begin                     ! Set KNOWN qualified queues
;	U 2960	              local RESULT, NEXT: ref Q_ENTRY;
;	U 2961	
;	U 2962	              NEXT = .QH_QUALIFIER[Q_FORWARD];
;	U 2963	              RESULT = NICE$_SUC;
;	U 2964	
;	U 2965	              while (.RESULT eql NICE$_SUC)
;	U 2966	              and ((QE_QUALIFIER = .NEXT) neq .QH_QUALIFIER)
;	U 2967	              do begin
;	U 2968	                 NEXT = .NEXT[Q_FORWARD];
;	U 2969	                 RESULT = INSERT_PARAMETER (.QE_QUALIFIER,
;	U 2970	                                            .ENTITY,
;	U 2971	                                            .PARAMETER,
;	U 2972	                                            $false);
;	U 2973	                 end;
;	U 2974	
;	U 2975	              return .RESULT;
;	U 2976	              end
;	U 2977	         else begin                     ! Set specific qualified queue
;	U 2978	              QE_QUALIFIER = NMU$QUEUE_SCAN (.QH_QUALIFIER,
;	U 2979	                                             .ID_STRING,
;	U 2980	                                             NON_NODE_ID_MATCH);
;	U 2981	
;	U 2982	              if .QE_QUALIFIER eql 0    ! Does entry exist ?
;	U 2983	              then begin                ! No, create new entry for qualifier
;	U 2984	                   QE_QUALIFIER = NMU$MEMORY_GET (ENTITY_DB_BLOCK_ALLOCATION);
;	U 2985	
;	U 2986	                   if .QE_QUALIFIER eql 0 ! Fail to allocate memory
;	U 2987	                   then return $NICE$ERR_NRE;
;	U 2988	
;	U 2989	                   ch$move ((.COUNT[VALUE] + 1),
;	U 2990	                            .ID_STRING,
;	U 2991	                            ch$ptr (QE_QUALIFIER[EDB_QUALIFIER],,8));
;	U 2992	
;	U 2993	                   NMU$QUEUE_INSERT (.QH_QUALIFIER, .QE_QUALIFIER);
;	U 2994	                   end;
;	U 2995	              end;
;	U 2996	         end;
;	U 2997	
;	U 2998	    return INSERT_PARAMETER (.QE_QUALIFIER, .ENTITY, .PARAMETER, $false);
;	U 2999	    end;				! End of SET_QUALIFIED_ENTITY
;	  3000	%fi
;	  3001	%sbttl ''
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  95
X00.89		SET_NODE_ENTITY					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (24)

;	  3002	%routine ('SET_NODE_ENTITY', NDB_QE: ref NODE_DB_BLOCK, ENTITY_PTR) : novalue =
;	  3003	
;	  3004	!++
;	  3005	! FUNCTIONAL DESCRIPTION:
;	  3006	!
;	  3007	!       Sets up the entity id portion of an EDB for NODE entity.
;	  3008	!
;	  3009	! FORMAL PARAMETERS
;	  3010	!
;	  3011	!	NDB_QE - Address of the NDB Queue Entry.
;	  3012	!       ENTITY_PTR - Pointer to the NODE id.
;	  3013	!
;	  3014	! IMPLICIT INPUTS
;	  3015	!
;	  3016	!	NONE.
;	  3017	!
;	  3018	! ROUTINE VALUE:
;	  3019	!
;	  3020	!	NONE.
;	  3021	!
;	  3022	! SIDE EFFECTS:
;	  3023	!
;	  3024	!	NONE.
;	  3025	!
;	  3026	!--
;	  3027	
;	  3028	    begin
;	  3029	
;	  3030	    local
;	  3031	         NODE_PTR,
;	  3032	         NODE_ADDR;
;	  3033	
;	  3034	    NODE_ADDR = GETW (ENTITY_PTR);
;	  3035	    NODE_PTR = ch$ptr (NDB_QE[NDB_ENTITY_ID],,8);
;	  3036	    PUTW (NODE_ADDR, NODE_PTR);
;	  3037	    ch$move ((ch$rchar (.ENTITY_PTR) + 1), .ENTITY_PTR, .NODE_PTR);
;	  3038	
;	  3039	    end;				! End of SET_NODE_ENTITY


						.SBTTL	SET.NODE.ENTITY SET_NODE_ENTITY
000000	004167  000000G			SET.NODE.ENTITY:
						JSR	R1,$SAVE3			;					3002
000004	005266  000012 				INC	12(SP)				; ENTITY.PTR				3034
000010	016600  000012 				MOV	12(SP),R0			; ENTITY.PTR,*
000014	116046  177777 				MOVB	-1(R0),-(SP)			; *,$$GETB.X
000020	005266  000014 				INC	14(SP)				; ENTITY.PTR
000024	016601  000014 				MOV	14(SP),R1			; ENTITY.PTR,*
000030	116166  177777  000001 			MOVB	-1(R1),1(SP)			; *,$$GETB.X
000036	011600 					MOV	(SP),R0				; $$GETB.X,NODE.ADDR
000040	016602  000016 				MOV	16(SP),R2			; NDB.QE,NODE.PTR			3035
000044	062702  000006 				ADD	#6,R2				; *,NODE.PTR
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  96
X00.89		SET_NODE_ENTITY					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (24)

000050	110022 					MOVB	R0,(R2)+			; NODE.ADDR,NODE.PTR			3036
000052	010003 					MOV	R0,R3				; NODE.ADDR,*
000054	000303 					SWAB	R3
000056	110322 					MOVB	R3,(R2)+			; *,NODE.PTR
000060	005046 					CLR	-(SP)				;					3037
000062	111116 					MOVB	(R1),(SP)
000064	005216 					INC	(SP)
000066	010146 					MOV	R1,-(SP)
000070	010246 					MOV	R2,-(SP)			; NODE.PTR,*
000072	004767  000000G				JSR	PC,BL$MOV
000076	062706  000010 				ADD	#10,SP				;					3002
000102	000207 					RTS	PC
; Routine Size:  34 words,	Routine Base:  $CODE$ + 6320
; Maximum stack depth per invocation:  9 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  97
X00.89		GET_EXISTING_ENTITY_DB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (25)

;	  3040	%routine ('GET_EXISTING_ENTITY_DB', ENTITY_TYPE, ENTITY_PTR) =
;	  3041	
;	  3042	!++
;	  3043	! FUNCTIONAL DESCRIPTION:
;	  3044	!
;	  3045	!	Searches the volatile data base for the specified entity,
;	  3046	!	and if found, returns the address of the entity data block.
;	  3047	!
;	  3048	! FORMAL PARAMETERS
;	  3049	!
;	  3050	!	ENTITY_TYPE - Entity type number.
;	  3051	!       ENTITY_PTR  - Character pointer to entity id.
;	  3052	!
;	  3053	! IMPLICIT INPUTS
;	  3054	!
;	  3055	!	NONE.
;	  3056	!
;	  3057	! ROUTINE VALUE:
;	  3058	!
;	  3059	!	The address of the entity data block if the entity exists
;	  3060	!	    in the volatile data base.
;	  3061	!       Otherwise, 0.
;	  3062	!
;	  3063	! SIDE EFFECTS:
;	  3064	!
;	  3065	!	NONE.
;	  3066	!
;	  3067	!--
;	  3068	
;	  3069	    begin
;	  3070	
;	  3071	    local
;	  3072		QUEUE,
;	  3073		MATCH_ROUTINE;
;	  3074	
;	  3075	    !
;	  3076	    ! Determine the queue to which this entity belongs and the routine
;	  3077	    ! to be used for matching the entity id.
;	  3078	    !
;	  3079	
;	  3080	    if GET_VDB_ENTITY_QUEUE (.ENTITY_TYPE, QUEUE, MATCH_ROUTINE)
;	  3081	    then NMU$QUEUE_SCAN (.QUEUE, .ENTITY_PTR, .MATCH_ROUTINE)
;	  3082	    else 0
;	  3083	
;	  3084	    end;				! End of GET_EXISTING_ENTITY_DB


						.SBTTL	GET.EXISTING.ENTITY.DB GET_EXISTING_ENTITY_DB
000000	024646 				GET.EXISTING.ENTITY.DB:
						CMP	-(SP),-(SP)			;					3040
000002	016646  000010 				MOV	10(SP),-(SP)			; ENTITY.TYPE,*				3080
000006	012746  000006 				MOV	#6,-(SP)
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  98
X00.89		GET_EXISTING_ENTITY_DB				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (25)

000012	060616 					ADD	SP,(SP)				; QUEUE,*
000014	012746  000006 				MOV	#6,-(SP)
000020	060616 					ADD	SP,(SP)				; MATCH.ROUTINE,*
000022	004767  000000V				JSR	PC,GET.VDB.ENTITY.QUEUE
000026	062706  000006 				ADD	#6,SP
000032	006000 					ROR	R0
000034	103013 					BCC	1$
000036	016646  000002 				MOV	2(SP),-(SP)			; QUEUE,*				3081
000042	016646  000010 				MOV	10(SP),-(SP)			; ENTITY.PTR,*
000046	016646  000004 				MOV	4(SP),-(SP)			; MATCH.ROUTINE,*
000052	004767  000000G				JSR	PC,UQ.SCAN
000056	062706  000006 				ADD	#6,SP
000062	000401 					BR	2$				;					3080
000064	005000 				1$:	CLR	R0
000066	022626 				2$:	CMP	(SP)+,(SP)+			;					3040
000070	000207 					RTS	PC
; Routine Size:  29 words,	Routine Base:  $CODE$ + 6424
; Maximum stack depth per invocation:  6 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page  99
X00.89		SET_ENTITY_DB					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (26)

;	  3085	%routine ('SET_ENTITY_DB', ENTITY_TYPE, ENTITY_PTR) =
;	  3086	
;	  3087	!++
;	  3088	! FUNCTIONAL DESCRIPTION:
;	  3089	!
;	  3090	!       Allocate and initialize an entry in the data base.
;	  3091	!       Returns the address of the entry in all cases.
;	  3092	!
;	  3093	! FORMAL PARAMETERS
;	  3094	!
;	  3095	!       ENTITY_TYPE - The entity type number.
;	  3096	!       ENTITY_PTR - A character sequence pointer to the entity id
;	  3097	!                    to be created.
;	  3098	!
;	  3099	! IMPLICIT INPUTS
;	  3100	!
;	  3101	!	NONE.
;	  3102	!
;	  3103	! ROUTINE VALUE:
;	  3104	!
;	  3105	!	Address of the entity data base block.
;	  3106	!	0 if no insufficient resources for data base creation.
;	  3107	!
;	  3108	! SIDE EFFECTS:
;	  3109	!
;	  3110	!	NONE.
;	  3111	!
;	  3112	!--
;	  3113	
;	  3114	    begin
;	  3115	
;	  3116	    local
;	  3117	         QHEADER,
;	  3118	         EDB_QE: ref ENTITY_DB_BLOCK;
;	  3119	
;	  3120	    selectone .ENTITY_TYPE of
;	  3121	        set
;	  3122	        [NODE_E]:
;	  3123	            begin
;	  3124	            if (EDB_QE = NMU$MEMORY_GET (ENTITY_DB_BLOCK_ALLOCATION)) eql 0
;	  3125	            then return 0;
;	  3126	
;	  3127	            SET_NODE_ENTITY (.EDB_QE, .ENTITY_PTR);
;	  3128	            end;
;	  3129	
;	  3130	        [LINE_,
;	  3131	         CIRCUIT_,
;	  3132	         LOGGING_,
;	  3133	         MODULE_]:
;	  3134	            begin
;	  3135	            if (EDB_QE = NMU$MEMORY_GET (ENTITY_DB_BLOCK_ALLOCATION)) eql 0
;	  3136	            then return 0;
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 100
X00.89		SET_ENTITY_DB					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (26)

;	  3137	
;	  3138	            ch$move ((ch$rchar (.ENTITY_PTR) + 1), ! Copy entity id
;	  3139	                     .ENTITY_PTR,
;	  3140	                     ch$ptr (EDB_QE[EDB_ENTITY_ID],,8));
;	  3141	            end;
;	  3142	
;	  3143	        [otherwise]:                    ! NOT supported entity
;	  3144	            begin
;	  3145	            TASK_ERROR ('Invalid entity for data base creation');
;	  3146	            return 0;
;	  3147	            end;
;	  3148	        tes;
;	  3149	
;	  3150	    if GET_VDB_ENTITY_QUEUE (.ENTITY_TYPE, QHEADER, 0) ! Get queue header
;	  3151	    then NMU$QUEUE_INSERT (.QHEADER, .EDB_QE) ! Insert the entity in data base.
;	  3152	    else begin                          ! No queue header for this entity
;	  3153	         TASK_ERROR ('Missing queue for data base creation');
;	  3154	         return 0;
;	  3155	         end;
;	  3156	
;	  3157	    return .EDB_QE;                     ! Return address of entry
;	  3158	    end;				! End of SET_ENTITY_DB


						.GLOBL	US.COMPLETE


						.SBTTL	SET.ENTITY.DB SET_ENTITY_DB
000000	004167  000000G			SET.ENTITY.DB:
						JSR	R1,$SAVE2			;					3085
000004	005746 					TST	-(SP)
000006	016602  000014 				MOV	14(SP),R2			; ENTITY.TYPE,*				3120
000012	001016 					BNE	1$
000014	012746  000036 				MOV	#36,-(SP)			;					3124
000020	004767  000000G				JSR	PC,UM.GET
000024	005726 					TST	(SP)+
000026	010001 					MOV	R0,R1				; *,EDB.QE
000030	001465 					BEQ	4$				;					3125
000032	010146 					MOV	R1,-(SP)			; EDB.QE,*				3127
000034	016646  000014 				MOV	14(SP),-(SP)			; ENTITY.PTR,*
000040	004767  177536 				JSR	PC,SET.NODE.ENTITY
000044	022626 					CMP	(SP)+,(SP)+			;					3123
000046	000434 					BR	3$				;					3120
000050	003430 				1$:	BLE	2$
000052	020227  000004 				CMP	R2,#4
000056	003025 					BGT	2$
000060	012746  000036 				MOV	#36,-(SP)			;					3135
000064	004767  000000G				JSR	PC,UM.GET
000070	005726 					TST	(SP)+
000072	010001 					MOV	R0,R1				; *,EDB.QE
000074	001443 					BEQ	4$				;					3136
000076	005046 					CLR	-(SP)				;					3138
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 101
X00.89		SET_ENTITY_DB					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (26)

000100	117616  000014 				MOVB	@14(SP),(SP)			; ENTITY.PTR,*
000104	005216 					INC	(SP)
000106	016646  000014 				MOV	14(SP),-(SP)			; ENTITY.PTR,*				3140
000112	010146 					MOV	R1,-(SP)			; EDB.QE,*
000114	062716  000006 				ADD	#6,(SP)
000120	004767  000000G				JSR	PC,BL$MOV
000124	062706  000006 				ADD	#6,SP				;					3134
000130	000403 					BR	3$				;					3120
000132	004767  000000G			2$:	JSR	PC,US.COMPLETE			;					3145
000136	000422 					BR	4$				;					3144
000140	010246 				3$:	MOV	R2,-(SP)			;					3150
000142	012746  000004 				MOV	#4,-(SP)
000146	060616 					ADD	SP,(SP)				; QHEADER,*
000150	005046 					CLR	-(SP)
000152	004767  000000V				JSR	PC,GET.VDB.ENTITY.QUEUE
000156	062706  000006 				ADD	#6,SP
000162	006000 					ROR	R0
000164	103362 					BCC	2$
000166	011646 					MOV	(SP),-(SP)			; QHEADER,*				3151
000170	010146 					MOV	R1,-(SP)			; EDB.QE,*
000172	004767  000000G				JSR	PC,UQ.INSERT
000176	022626 					CMP	(SP)+,(SP)+
000200	010100 					MOV	R1,R0				; EDB.QE,*				3114
000202	000401 					BR	5$
000204	005000 				4$:	CLR	R0				;					3085
000206	005726 				5$:	TST	(SP)+
000210	000207 					RTS	PC
; Routine Size:  69 words,	Routine Base:  $CODE$ + 6516
; Maximum stack depth per invocation:  8 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 102
X00.89		ENTITY_IS_VALID					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (27)

;	  3159	%routine ('ENTITY_IS_VALID', ENTITY_TYPE, ENTITY_PTR) =
;	  3160	
;	  3161	!++
;	  3162	! FUNCTIONAL DESCRIPTION:
;	  3163	!
;	  3164	!       Determine if we should allow this entity to be added
;	  3165	!       to the data bases.  In MCB, we ask NMX about LINEs and CIRCUITs.
;	  3166	!       In TOPS20, determine if a DTE is legal.
;	  3167	!
;	  3168	! FORMAL PARAMETERS
;	  3169	!
;	  3170	!       ENTITY_TYPE - The entity type number.
;	  3171	!       ENTITY_PTR - A character sequence pointer to the entity id
;	  3172	!                    to be created.
;	  3173	!
;	  3174	! IMPLICIT INPUTS
;	  3175	!
;	  3176	!	NONE.
;	  3177	!
;	  3178	! ROUTINE VALUE:
;	  3179	!
;	  3180	!	$true - if entity is acceptable
;	  3181	!       $false - Don't add this to the data bases!
;	  3182	!
;	  3183	! SIDE EFFECTS:
;	  3184	!
;	  3185	!	NONE.
;	  3186	!
;	  3187	!--
;	  3188	
;	  3189	    begin
;	  3190	
;	  3191	    local
;	  3192	         EDB_QE: ref ENTITY_DB_BLOCK;
;	  3193	
;	  3194	    selectone .ENTITY_TYPE of
;	  3195	        set
;	  3196	        [NODE_E]:
;	  3197	            begin                    ! Verify existence of entity ....
;	  3198	            EDB_QE = 2;
;	P 3199	            return ($NML$SHOW (.ENTITY_TYPE,       ! Returns OCM error
;	P 3200	                               .ENTITY_PTR,	   !  if valid entity
;	P 3201	                               0,		   !  since buffer is
;	P 3202	                               SUMMARY_,	   !  too small.
;	P 3203	                               EDB_QE,		   ! Otherwise,
;	  3204	                               ch$ptr (EDB_QE,,8)) !  entity is invalid.
;	  3205	                    eql
;	L 3206				%if $MCB
;	  3207				%then
;	L 3208				      $NICE$ERR_OCM);      ! in the MCB
; %PRINT:	Oversized Management command message
;	U 3209				%else
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 103
X00.89		ENTITY_IS_VALID					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (27)

;	U 3210				      $NICE$ERR_REE);      ! in the TOPS
;	  3211				%fi
;	  3212	            end;
;	  3213	
;	  3214	        [MODULE_]:
;	  3215	            return (MODULE_IS_VALID (ch$rchar (.ENTITY_PTR),
;	  3216	                                     ch$plus (.ENTITY_PTR, 1)));
;	  3217	
;	  3218	        [LOGGING_]:
;	  3219	            return (GET_EXISTING_ENTITY_DB (.ENTITY_TYPE, .ENTITY_PTR) neq 0);
;	  3220	
;	  3221	        [LINE_, CIRCUIT_]:
;	  3222	            begin
;	L 3223	            %if $MCB                    ! Verify existence of entity ....
;	  3224	            %then                       ! in the MCB
;	  3225	            EDB_QE = 2;
;	P 3226	            return ($NML$SHOW (.ENTITY_TYPE,
;	P 3227	                               .ENTITY_PTR,
;	P 3228	                               0,
;	P 3229	                               SUMMARY_,
;	P 3230	                               EDB_QE,
;	  3231	                               ch$ptr (EDB_QE,,8))
;	L 3232	                    neq $NICE$ERR_URC);
; %PRINT:	Unrecognized component
;	  3233	
;	U 3234	            %else                       ! in the TOPS
;	U 3235	            external routine NMU$DLX_KNOWN_DEVICE;
;	U 3236	
;	U 3237	            return (NMU$DLX_KNOWN_DEVICE (.ENTITY_PTR));
;	  3238	            %fi
;	  3239	
;	  3240	            end;
;	  3241	
;	  3242	        [otherwise]:
;	  3243	            TASK_ERROR ('Invalid entity for data base creation');
;	  3244	        tes;
;	  3245	
;	  3246	    return $FALSE;
;	  3247	    end;				! End of ENTITY_IS_VALID


						.SBTTL	ENTITY.IS.VALID ENTITY_IS_VALID
000000	004167  000000G			ENTITY.IS.VALID:
						JSR	R1,$SAVE2			;					3159
000004	162706  000006 				SUB	#6,SP
000010	016601  000020 				MOV	20(SP),R1			; ENTITY.TYPE,*				3194
000014	001060 					BNE	4$
000016	012716  000002 				MOV	#2,(SP)				; *,EDB.QE				3198
000022	005046 					CLR	-(SP)				;					3204
000024	005046 					CLR	-(SP)
000026	016646  000022 				MOV	22(SP),-(SP)			; ENTITY.PTR,*
000032	010100 					MOV	R1,R0
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 104
X00.89		ENTITY_IS_VALID					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (27)

000034	005200 					INC	R0
000036	072027  000010 				ASH	#10,R0
000042	010046 					MOV	R0,-(SP)
000044	052716  010010 				BIS	#10010,(SP)
000050	012746  000002 				MOV	#2,-(SP)
000054	005716 					TST	(SP)
000056	001002 					BNE	1$
000060	005046 					CLR	-(SP)
000062	000404 					BR	2$
000064	012700  000012 			1$:	MOV	#12,R0
000070	060600 					ADD	SP,R0				; EDB.QE,*
000072	010046 					MOV	R0,-(SP)
000074	005046 				2$:	CLR	-(SP)
000076	012746  000022 				MOV	#22,-(SP)
000102	060616 					ADD	SP,(SP)				; IOSB,*
000104	012746  000000G				MOV	#EFN$NM,-(SP)
000110	012746  000000G				MOV	#LUN$NM,-(SP)
000114	012746  016400 				MOV	#16400,-(SP)
000120	012746  006003 				MOV	#6003,-(SP)
000124	104377 					EMT	377
000126	016616  000004 				MOV	4(SP),(SP)			; IOSB+2,EDB.QE
000132	116601  000002 				MOVB	2(SP),R1			; IOSB,*
000136	002402 					BLT	3$
000140	012701  000001 				MOV	#1,R1
000144	005000 				3$:	CLR	R0				;					3199
000146	020127  177774 				CMP	R1,#-4
000152	001127 					BNE	14$
000154	000521 					BR	12$
000156	020127  000004 			4$:	CMP	R1,#4				;					3194
000162	001012 					BNE	5$
000164	005046 					CLR	-(SP)				;					3215
000166	117616  000020 				MOVB	@20(SP),(SP)			; ENTITY.PTR,*
000172	016646  000020 				MOV	20(SP),-(SP)			; ENTITY.PTR,*				3216
000176	005216 					INC	(SP)
000200	004767  000000V				JSR	PC,MODULE.IS.VALID		;					3215
000204	022626 					CMP	(SP)+,(SP)+
000206	000511 					BR	14$
000210	020127  000002 			5$:	CMP	R1,#2				;					3194
000214	001014 					BNE	7$
000216	010146 					MOV	R1,-(SP)			;					3219
000220	016646  000020 				MOV	20(SP),-(SP)			; ENTITY.PTR,*
000224	004767  177244 				JSR	PC,GET.EXISTING.ENTITY.DB
000230	005002 					CLR	R2
000232	005700 					TST	R0
000234	001401 					BEQ	6$
000236	005202 					INC	R2
000240	022626 				6$:	CMP	(SP)+,(SP)+
000242	010200 					MOV	R2,R0
000244	000472 					BR	14$
000246	020127  000001 			7$:	CMP	R1,#1				;					3194
000252	001403 					BEQ	8$
000254	020127  000003 				CMP	R1,#3
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 105
X00.89		ENTITY_IS_VALID					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (27)

000260	001061 					BNE	13$
000262	012716  000002 			8$:	MOV	#2,(SP)				; *,EDB.QE				3225
000266	005046 					CLR	-(SP)				;					3231
000270	005046 					CLR	-(SP)
000272	016646  000022 				MOV	22(SP),-(SP)			; ENTITY.PTR,*
000276	010100 					MOV	R1,R0
000300	005200 					INC	R0
000302	072027  000010 				ASH	#10,R0
000306	010046 					MOV	R0,-(SP)
000310	052716  010010 				BIS	#10010,(SP)
000314	012746  000002 				MOV	#2,-(SP)
000320	005716 					TST	(SP)
000322	001002 					BNE	9$
000324	005046 					CLR	-(SP)
000326	000404 					BR	10$
000330	012700  000012 			9$:	MOV	#12,R0
000334	060600 					ADD	SP,R0				; EDB.QE,*
000336	010046 					MOV	R0,-(SP)
000340	005046 				10$:	CLR	-(SP)
000342	012746  000022 				MOV	#22,-(SP)
000346	060616 					ADD	SP,(SP)				; IOSB,*
000350	012746  000000G				MOV	#EFN$NM,-(SP)
000354	012746  000000G				MOV	#LUN$NM,-(SP)
000360	012746  016400 				MOV	#16400,-(SP)
000364	012746  006003 				MOV	#6003,-(SP)
000370	104377 					EMT	377
000372	016616  000004 				MOV	4(SP),(SP)			; IOSB+2,EDB.QE
000376	116601  000002 				MOVB	2(SP),R1			; IOSB,*
000402	002402 					BLT	11$
000404	012701  000001 				MOV	#1,R1
000410	005000 				11$:	CLR	R0				;					3226
000412	020127  177770 				CMP	R1,#-10
000416	001405 					BEQ	14$
000420	005200 				12$:	INC	R0
000422	000403 					BR	14$				;					3222
000424	004767  000000G			13$:	JSR	PC,US.COMPLETE			;					3243
000430	005000 					CLR	R0				;					3189
000432	062706  000006 			14$:	ADD	#6,SP				;					3159
000436	000207 					RTS	PC
; Routine Size:  144 words,	Routine Base:  $CODE$ + 6730
; Maximum stack depth per invocation:  20 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 106
X00.89		MODULE_IS_VALID					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (28)

;	  3248	%routine ('MODULE_IS_VALID', LENGTH, POINTER) =
;	  3249	
;	  3250	!++
;	  3251	! FUNCTIONAL DESCRIPTION:
;	  3252	!
;	  3253	!       Determine if we should allow this module data base to be handled
;	  3254	!       in this layer.
;	  3255	!
;	  3256	! FORMAL PARAMETERS
;	  3257	!
;	  3258	!       LENGTH          The module name length
;	  3259	!       POINTER         A character sequence pointer to the module name
;	  3260	!
;	  3261	! IMPLICIT INPUTS
;	  3262	!
;	  3263	!	NONE.
;	  3264	!
;	  3265	! ROUTINE VALUE:
;	  3266	!
;	  3267	!	$TRUE           If module is acceptable
;	  3268	!       $FALSE          Otherwise
;	  3269	!
;	  3270	! SIDE EFFECTS:
;	  3271	!
;	  3272	!	NONE.
;	  3273	!
;	  3274	!--
;	  3275	
;	  3276	    begin
;	  3277	
;	L 3278	    %if $X25
;	U 3279	    %then %if $MCB
;	U 3280	          %then                         ! These modules are valid in the MCB
;	U 3281	          return (ch$eql (.LENGTH,
;	U 3282	                          .POINTER,
;	U 3283	                          %charcount ('X25-PROTOCOL'),
;	U 3284	                          CH$ASCIZ ('X25-PROTOCOL'),
;	U 3285	                          0) or
;	U 3286	                  ch$eql (.LENGTH,
;	U 3287	                          .POINTER,
;	U 3288	                          %charcount ('X25-SERVER'),
;	U 3289	                          CH$ASCIZ ('X25-SERVER'),
;	U 3290	                          0));
;	U 3291	
;	U 3292	          %else                         ! These modules are valid in the TOPS
;	U 3293	          return (ch$eql (.LENGTH,
;	U 3294	                          .POINTER,
;	U 3295	                          %charcount ('X25-ACCESS'),
;	U 3296	                          CH$ASCIZ ('X25-ACCESS'),
;	U 3297	                          0));
;	U 3298	          %fi
;	U 3299	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 107
X00.89		MODULE_IS_VALID					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (28)

;	  3300	    %else
;	  3301	    return $FALSE;                      ! No module is available
;	  3302	    %fi
;	  3303	
;	  3304	    end;				! End of MODULE_IS_VALID


						.SBTTL	MODULE.IS.VALID MODULE_IS_VALID
000000	005000 				MODULE.IS.VALID:
						CLR	R0				;					3276
000002	000207 					RTS	PC				;					3248
; Routine Size:  2 words,	Routine Base:  $CODE$ + 7370
; Maximum stack depth per invocation:  0 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 108
X00.89		GET_VDB_ENTITY_QUEUE				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (29)

;	  3305	%routine ('GET_VDB_ENTITY_QUEUE', ENTITY_TYPE, QUEUE, MATCH_ROUTINE) =
;	  3306	
;	  3307	!++
;	  3308	! FUNCTIONAL DESCRIPTION:
;	  3309	!
;	  3310	!	This routine determines the queue in the volatile data base
;	  3311	!       as well as the matching routine associated with the specified
;	  3312	!       entity type.
;	  3313	!
;	  3314	! FORMAL PARAMETERS
;	  3315	!
;	  3316	!	ENTITY_TYPE     Entity type number.
;	  3317	!       QUEUE           The address in which to return the address of the
;	  3318	!                       queue header for this type of entity.
;	  3319	!       MATCH_ROUTINE   The address in which to return the address
;	  3320	!                       of the associated string matching routine.
;	  3321	!
;	  3322	! IMPLICIT INPUTS
;	  3323	!
;	  3324	!	NONE.
;	  3325	!
;	  3326	! ROUTINE VALUE:
;	  3327	!
;	  3328	!	$TRUE   If the volatile data base contains this entity type.
;	  3329	!       $FALSE  Otherwise.
;	  3330	!
;	  3331	! SIDE EFFECTS:
;	  3332	!
;	  3333	!	NONE.
;	  3334	!
;	  3335	!--
;	  3336	
;	  3337	    begin
;	  3338	
;	  3339	    local
;	  3340	        QUEUE_HEADER,
;	  3341	        QUEUE_MATCH_ROUTINE;
;	  3342	
;	  3343	    case .ENTITY_TYPE from NODE_E to MODULE_ of
;	  3344	        set
;	  3345	        [NODE_E]:
;	  3346	            begin
;	  3347	            QUEUE_HEADER = QH_NODE_PARAMETERS;
;	  3348	            QUEUE_MATCH_ROUTINE = NODE_ID_MATCH;
;	  3349	            end;
;	  3350	
;	  3351	        [LINE_]:
;	  3352	            begin
;	  3353	            QUEUE_HEADER = QH_LINE_PARAMETERS;
;	  3354	            QUEUE_MATCH_ROUTINE = NON_NODE_ID_MATCH;
;	  3355	            end;
;	  3356	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 109
X00.89		GET_VDB_ENTITY_QUEUE				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (29)

;	  3357	        [LOGGING_]:
;	  3358	            begin
;	  3359	            QUEUE_HEADER = QH_LOGGING_PARAMETERS;
;	  3360	            QUEUE_MATCH_ROUTINE = LOGGING_ID_MATCH;
;	  3361	            end;
;	  3362	
;	  3363	        [CIRCUIT_]:
;	  3364	            begin
;	  3365	            QUEUE_HEADER = QH_CIRCUIT_PARAMETERS;
;	  3366	            QUEUE_MATCH_ROUTINE = NON_NODE_ID_MATCH;
;	  3367	            end;
;	  3368	
;	  3369	        [MODULE_]: 
;	  3370	            begin
;	L 3371	            %if $X25
;	U 3372	            %then
;	U 3373	            QUEUE_HEADER = QH_MODULE_PARAMETERS;
;	U 3374	            QUEUE_MATCH_ROUTINE = NON_NODE_ID_MATCH;
;	U 3375	
;	  3376	            %else
;	  3377	            return $FALSE;
;	  3378	            %fi
;	  3379	
;	  3380	            end;
;	  3381	
;	  3382	        [inrange,
;	  3383	         outrange]:
;	  3384	            return $FALSE;
;	  3385	        tes;
;	  3386	
;	  3387	!
;	  3388	! If no address is specified do not return value
;	  3389	!
;	  3390	
;	  3391	    if .QUEUE neq 0
;	  3392	    then .QUEUE = .QUEUE_HEADER;
;	  3393	
;	  3394	    if .MATCH_ROUTINE neq 0
;	  3395	    then .MATCH_ROUTINE = .QUEUE_MATCH_ROUTINE;
;	  3396	
;	  3397	    return $TRUE;
;	  3398	    end;				! End of GET_VDB_ENTITY_QUEUE


						.SBTTL	GET.VDB.ENTITY.QUEUE GET_VDB_ENTITY_QUEUE
000000	004167  000000G			GET.VDB.ENTITY.QUEUE:
						JSR	R1,$SAVE2			;					3305
000004	016600  000014 				MOV	14(SP),R0			; ENTITY.TYPE,*				3343
000010	020027  000004 				CMP	R0,#4
000014	101040 					BHI	10$
000016	006300 					ASL	R0
000020	066007  000042'				ADD	P.AAF(R0),PC			; Case dispatch
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 110
X00.89		GET_VDB_ENTITY_QUEUE				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (29)

000024	000434 				1$:	BR	10$				;					3384
000026	012702  001004'			2$:	MOV	#QH.NODE.PARAMETERS,R2		; *,QUEUE.HEADER			3347
000032	012701  000000V				MOV	#NODE.ID.MATCH,R1		; *,QUEUE.MATCH.ROU			3348
000036	000414 					BR	7$				;					3343
000040	012702  001012'			3$:	MOV	#QH.LINE.PARAMETERS,R2		; *,QUEUE.HEADER			3353
000044	000407 					BR	6$				;					3354
000046	012702  001026'			4$:	MOV	#QH.LOGGING.PARAMETERS,R2	; *,QUEUE.HEADER			3359
000052	012701  000000V				MOV	#LOGGING.ID.MATCH,R1		; *,QUEUE.MATCH.ROU			3360
000056	000404 					BR	7$				;					3343
000060	012702  001020'			5$:	MOV	#QH.CIRCUIT.PARAMETERS,R2	; *,QUEUE.HEADER			3365
000064	012701  000000V			6$:	MOV	#NON.NODE.ID.MATCH,R1		; *,QUEUE.MATCH.ROU			3366
000070	016600  000012 			7$:	MOV	12(SP),R0			; QUEUE,*				3391
000074	001401 					BEQ	8$
000076	010210 					MOV	R2,(R0)				; QUEUE.HEADER,*			3392
000100	016600  000010 			8$:	MOV	10(SP),R0			; MATCH.ROUTINE,*			3394
000104	001401 					BEQ	9$
000106	010110 					MOV	R1,(R0)				; QUEUE.MATCH.ROU,*			3395
000110	012700  000001 			9$:	MOV	#1,R0				;					3337
000114	000207 					RTS	PC
000116	005000 				10$:	CLR	R0				;					3305
000120	000207 					RTS	PC
; Routine Size:  41 words,	Routine Base:  $CODE$ + 7374
; Maximum stack depth per invocation:  4 words


000042						.PSECT	$PLIT$,  RO ,  D  

					P.AAF:						; CASE Table for GET.VDB.ENTITY.+0020	3343
000042	000002 					.WORD	2				; [2$]
000044	000014 					.WORD	14				; [3$]
000046	000022 					.WORD	22				; [4$]
000050	000034 					.WORD	34				; [5$]
000052	000072 					.WORD	72				; [10$]
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 111
X00.89		INSERT_PARAMETER				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (30)

;	  3399	%routine ('INSERT_PARAMETER', EDB_QE, ENTITY_TYPE, PRM_PTR, PRIVLEDGED) =
;	  3400	
;	  3401	!++
;	  3402	! FUNCTIONAL DESCRIPTION:
;	  3403	!
;	  3404	!	Inserts a parameter entry into the parameter vector of the
;	  3405	!       data base for an entity.
;	  3406	!
;	  3407	! FORMAL PARAMETERS
;	  3408	!
;	  3409	!	EDB_QE      - The address of the entity data base structure to
;	  3410	!                     which the parameter is to be inserted.
;	  3411	!       ENTITY_TYPE - The entity type number to which the parameter
;	  3412	!		      applies.
;	  3413	!       PRM_PTR     - A character sequence pointer to the parameter to
;	  3414	!                     be inserted.
;	  3415	!
;	  3416	! IMPLICIT INPUTS
;	  3417	!
;	  3418	!	NONE.
;	  3419	!
;	  3420	! ROUTINE VALUE:
;	  3421	!
;	  3422	!	NICE return code.
;	  3423	!
;	  3424	! SIDE EFFECTS:
;	  3425	!
;	  3426	!	NONE.
;	  3427	!
;	  3428	!--
;	  3429	
;	  3430	    begin
;	  3431	
;	  3432	    map
;	  3433	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  3434	
;	  3435	    local
;	  3436	         PVB: ref $NML$PVB_ENTRY_VECTOR (0),
;	  3437		 PVB_QE: ref $NML$PVB_ENTRY_BLOCK,
;	  3438	         PARM_NO;
;	  3439	
;	  3440	    PARM_NO = GETW (PRM_PTR);
;	  3441	
;	C 3442	%( Does the parameter apply to this entity?
;	C 3443	   Does the entity exist and is it in the ON state?
;	C 3444	   If a node entity and the parameter is one which applies to
;	  3445	   an adjacent node, is the node address valid? )%
;	  3446	
;	  3447	    if not APPLICABLE (.ENTITY_TYPE, .EDB_QE, .PARM_NO)
;	L 3448	    then return $NICE$ERR_PNA;
; %PRINT:	Parameter not applicable
;	  3449	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 112
X00.89		INSERT_PARAMETER				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (30)

;	  3450	    if NML$READ_ONLY (.ENTITY_TYPE, .PARM_NO) and not .PRIVLEDGED
;	L 3451	    then return $NICE$ERR_PNA;
; %PRINT:	Parameter not applicable
;	  3452	
;	  3453	    !
;	  3454	    ! If this is a counter timer, adjust the counter time data base
;	  3455	    ! to reflect the time change.
;	  3456	    !
;	  3457	
;	  3458	    if not NML$COUNTER_TIMER_SET (.PARM_NO,
;	  3459	                                  .ENTITY_TYPE,
;	  3460	                                  EDB_QE[EDB_ENTITY_ID],
;	  3461					  .PRM_PTR)
;	L 3462	    then return $NICE$ERR_IPV;          ! Illegal parameter value
; %PRINT:	Invalid parameter value
;	  3463	
;	  3464	    !
;	  3465	    ! Search through the vector for the location to insert the
;	  3466	    ! parameter.  If the parameter is already in the vector,
;	  3467	    ! simply change its value.  Otherwise, ripple all parameters
;	  3468	    ! numbered higher than the new one up one position in the vector,
;	  3469	    ! and then insert the new parameter.
;	  3470	    !
;	  3471	
;	  3472	    PVB = .EDB_QE[EDB_PARAMETER_VECTOR];
;	  3473	
;	  3474	    incr N from 0 to .EDB_QE[EDB_PARAMETER_COUNT] - 1
;	  3475	    do begin
;	  3476	       PVB_QE = PVB[.N,0,0,0,0];
;	  3477	
;	  3478	       if .PARM_NO leq .PVB_QE[PE_NUMBER]
;	  3479	       then begin
;	  3480	            if .PARM_NO eql .PVB_QE[PE_NUMBER]
;	  3481	            then begin			! Found in table
;	  3482			 if SET_PARAMETER_DATA (.ENTITY_TYPE, .PRM_PTR, .PVB_QE)
;	  3483	                 then return NICE$_SUC
;	L 3484	                 else return $NICE$ERR_REE;
; %PRINT:	Resource error
;	  3485			 end
;	  3486		    else begin			! Entry not in table
;	  3487			 if not EXPAND_PVB (.EDB_QE, .N)
;	L 3488	                 then return $NICE$ERR_REE;
; %PRINT:	Resource error
;	  3489	
;	  3490			 PVB = .EDB_QE[EDB_PARAMETER_VECTOR];
;	  3491			 PVB_QE = PVB[.N,0,0,0,0];
;	  3492	 		 PVB_QE[PE_NUMBER] = .PARM_NO;
;	  3493			 if not SET_PARAMETER_DATA (.ENTITY_TYPE, .PRM_PTR, .PVB_QE)
;	L 3494	                 then return $NICE$ERR_REE;
; %PRINT:	Resource error
;	  3495	
;	  3496			 EDB_QE[EDB_PARAMETER_COUNT] = .EDB_QE[EDB_PARAMETER_COUNT] + 1;
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 113
X00.89		INSERT_PARAMETER				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (30)

;	  3497			 return NICE$_SUC;
;	  3498			 end;
;	  3499	            end;
;	  3500	       end;
;	  3501	
;	  3502	    !
;	  3503	    ! If we get here, the parameter could not be inserted within the
;	  3504	    ! vector.  If there were initially no parameters, this will be the
;	  3505	    ! first entry;  otherwise it will be the last entry.
;	  3506	    !
;	  3507	
;	  3508	    if not GET_PVB (.EDB_QE)
;	L 3509	    then return $NICE$ERR_REE;
; %PRINT:	Resource error
;	  3510	
;	  3511	    PVB = .EDB_QE[EDB_PARAMETER_VECTOR];
;	  3512	    PVB_QE = PVB[.EDB_QE[EDB_PARAMETER_COUNT],0,0,0,0];
;	  3513	    PVB_QE[PE_NUMBER] = .PARM_NO;
;	  3514	
;	  3515	    if not SET_PARAMETER_DATA (.ENTITY_TYPE, .PRM_PTR, .PVB_QE)
;	L 3516	    then return $NICE$ERR_REE;
; %PRINT:	Resource error
;	  3517	
;	  3518	    EDB_QE[EDB_PARAMETER_COUNT] = .EDB_QE[EDB_PARAMETER_COUNT] + 1;
;	  3519	
;	  3520	    return NICE$_SUC;
;	  3521	    end;				! End of INSERT_PARAMETER


						.SBTTL	INSERT.PARAMETER INSERT_PARAMETER
007516						.PSECT	$CODE$,  RO 

000000	004167  000000G			INSERT.PARAMETER:
						JSR	R1,$SAVE5			;					3399
000004	162706  000014 				SUB	#14,SP
000010	005266  000034 				INC	34(SP)				; PRM.PTR				3440
000014	016600  000034 				MOV	34(SP),R0			; PRM.PTR,*
000020	116066  177777  000012 			MOVB	-1(R0),12(SP)			; *,$$GETB.X
000026	005266  000034 				INC	34(SP)				; PRM.PTR
000032	016605  000034 				MOV	34(SP),R5			; PRM.PTR,*
000036	116566  177777  000013 			MOVB	-1(R5),13(SP)			; *,$$GETB.X
000044	016646  000012 				MOV	12(SP),-(SP)			; $$GETB.X,PARM.NO
000050	016666  000040  000012 			MOV	40(SP),12(SP)			; ENTITY.TYPE,*				3447
000056	016646  000012 				MOV	12(SP),-(SP)
000062	016604  000044 				MOV	44(SP),R4			; EDB.QE,*
000066	010446 					MOV	R4,-(SP)
000070	016646  000004 				MOV	4(SP),-(SP)			; PARM.NO,*
000074	004767  000000V				JSR	PC,APPLICABLE
000100	062706  000006 				ADD	#6,SP
000104	006000 					ROR	R0
000106	103015 					BHIS	1$				;					3448
000110	016646  000012 				MOV	12(SP),-(SP)			;					3450
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 114
X00.89		INSERT_PARAMETER				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (30)

000114	016646  000002 				MOV	2(SP),-(SP)			; PARM.NO,*
000120	004767  000000G				JSR	PC,NL.RO
000124	022626 					CMP	(SP)+,(SP)+
000126	006000 					ROR	R0
000130	103007 					BCC	2$
000132	032766  000001  000034 			BIT	#1,34(SP)			; *,PRIVLEDGED
000140	001003 					BNE	2$
000142	012700  177752 			1$:	MOV	#-26,R0				;					3451
000146	000570 					BR	11$
000150	011646 				2$:	MOV	(SP),-(SP)			; PARM.NO,*				3458
000152	016646  000014 				MOV	14(SP),-(SP)
000156	010446 					MOV	R4,-(SP)			;					3460
000160	062716  000006 				ADD	#6,(SP)
000164	010546 					MOV	R5,-(SP)			;					3458
000166	004767  000000G				JSR	PC,NL.SCT
000172	062706  000010 				ADD	#10,SP
000176	006000 					ROR	R0
000200	103403 					BLO	3$
000202	012700  177760 				MOV	#-20,R0				;					3462
000206	000550 					BR	11$
000210	012766  000034  000004 		3$:	MOV	#34,4(SP)			;					3472
000216	060466  000004 				ADD	R4,4(SP)
000222	017601  000004 				MOV	@4(SP),R1			; *,PVB
000226	012766  000030  000010 			MOV	#30,10(SP)			;					3474
000234	060466  000010 				ADD	R4,10(SP)
000240	017666  000010  000002 			MOV	@10(SP),2(SP)
000246	005003 					CLR	R3				; N
000250	000463 					BR	7$
000252	010302 				4$:	MOV	R3,R2				; N,*					3476
000254	006302 					ASL	R2
000256	006302 					ASL	R2
000260	010266  000006 				MOV	R2,6(SP)			; *,PVB.QE
000264	060166  000006 				ADD	R1,6(SP)			; PVB,PVB.QE
000270	021676  000006 				CMP	(SP),@6(SP)			; PARM.NO,PVB.QE			3478
000274	003050 					BGT	6$
000276	001014 					BNE	5$				;					3480
000300	016646  000012 				MOV	12(SP),-(SP)			;					3482
000304	010546 					MOV	R5,-(SP)
000306	016646  000012 				MOV	12(SP),-(SP)			; PVB.QE,*
000312	004767  000000V				JSR	PC,SET.PARAMETER.DATA
000316	062706  000006 				ADD	#6,SP
000322	006000 					ROR	R0
000324	103072 					BCC	8$
000326	000476 					BR	10$
000330	010446 				5$:	MOV	R4,-(SP)			;					3487
000332	010346 					MOV	R3,-(SP)			; N,*
000334	004767  000000V				JSR	PC,EXPAND.PVB
000340	022626 					CMP	(SP)+,(SP)+
000342	006000 					ROR	R0
000344	103062 					BHIS	8$				;					3488
000346	017601  000004 				MOV	@4(SP),R1			; *,PVB					3490
000352	010266  000006 				MOV	R2,6(SP)			; *,PVB.QE				3491
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 115
X00.89		INSERT_PARAMETER				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (30)

000356	060166  000006 				ADD	R1,6(SP)			; PVB,PVB.QE
000362	011676  000006 				MOV	(SP),@6(SP)			; PARM.NO,PVB.QE			3492
000366	016646  000012 				MOV	12(SP),-(SP)			;					3493
000372	010546 					MOV	R5,-(SP)
000374	016646  000012 				MOV	12(SP),-(SP)			; PVB.QE,*
000400	004767  000000V				JSR	PC,SET.PARAMETER.DATA
000404	062706  000006 				ADD	#6,SP
000410	006000 					ROR	R0
000412	103442 					BLO	9$
000414	000436 					BR	8$				;					3494
000416	005203 				6$:	INC	R3				; N					3474
000420	020366  000002 			7$:	CMP	R3,2(SP)			; N,*
000424	002712 					BLT	4$
000426	010446 					MOV	R4,-(SP)			;					3508
000430	004767  000000V				JSR	PC,GET.PVB
000434	005726 					TST	(SP)+
000436	006000 					ROR	R0
000440	103024 					BHIS	8$				;					3509
000442	017601  000004 				MOV	@4(SP),R1			; *,PVB					3511
000446	017600  000010 				MOV	@10(SP),R0			;					3512
000452	006300 					ASL	R0
000454	006300 					ASL	R0
000456	060100 					ADD	R1,R0				; PVB,*
000460	010066  000006 				MOV	R0,6(SP)			; *,PVB.QE
000464	011610 					MOV	(SP),(R0)			; PARM.NO,PVB.QE			3513
000466	016646  000012 				MOV	12(SP),-(SP)			;					3515
000472	010546 					MOV	R5,-(SP)
000474	010046 					MOV	R0,-(SP)			; PVB.QE,*
000476	004767  000000V				JSR	PC,SET.PARAMETER.DATA
000502	062706  000006 				ADD	#6,SP
000506	006000 					ROR	R0
000510	103403 					BLO	9$
000512	012700  177761 			8$:	MOV	#-17,R0				;					3516
000516	000404 					BR	11$
000520	005276  000010 			9$:	INC	@10(SP)				;					3518
000524	012700  000001 			10$:	MOV	#1,R0				;					3430
000530	062706  000016 			11$:	ADD	#16,SP				;					3399
000534	000207 					RTS	PC
; Routine Size:  175 words,	Routine Base:  $CODE$ + 7516
; Maximum stack depth per invocation:  18 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 116
X00.89		COPY_PARAMETER_VECTOR				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (31)

;	  3522	%routine ('COPY_PARAMETER_VECTOR', OPVB, NPVB, COUNT) : novalue =
;	  3523	
;	  3524	!++
;	  3525	! FUNCTIONAL DESCRIPTION:
;	  3526	!
;	  3527	! Copy a parameter vector.
;	  3528	!
;	  3529	! FORMAL PARAMETERS
;	  3530	!
;	  3531	!	OPVB - The address of the old parameter vector.
;	  3532	!       NPVB - The address of the new parameter vector.
;	  3533	!       COUNT - The number of elements to copy.
;	  3534	!
;	  3535	! IMPLICIT INPUTS
;	  3536	!
;	  3537	!	NONE.
;	  3538	!
;	  3539	! ROUTINE VALUE:
;	  3540	!
;	  3541	!	NONE.
;	  3542	!
;	  3543	! SIDE EFFECTS:
;	  3544	!
;	  3545	!	NONE.
;	  3546	!
;	  3547	!--
;	  3548	
;	  3549	    begin
;	  3550	
;	  3551	    local
;	  3552	       CNPVB: ref vector,
;	  3553	       COPVB: ref vector;
;	  3554	
;	  3555	    CNPVB = .NPVB;
;	  3556	    COPVB = .OPVB;
;	  3557	
;	  3558	    decru CNT from (.COUNT*PVB_ENTRY_SIZE) to 1
;	  3559	    do begin
;	  3560	       CNPVB [0] = .COPVB [0];
;	  3561	       CNPVB = CNPVB [1];
;	  3562	       COPVB = COPVB [1];
;	  3563	       end;
;	  3564	
;	  3565	    end;				! End of COPY_PARAMETER_VECTOR


						.SBTTL	COPY.PARAMETER.VECTOR COPY_PARAMETER_VECTOR
000000	004167  000000G			COPY.PARAMETER.VECTOR:
						JSR	R1,$SAVE2			;					3522
000004	016602  000012 				MOV	12(SP),R2			; NPVB,CNPVB				3555
000010	016601  000014 				MOV	14(SP),R1			; OPVB,COPVB				3556
000014	016600  000010 				MOV	10(SP),R0			; COUNT,*				3558
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 117
X00.89		COPY_PARAMETER_VECTOR				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (31)

000020	006300 					ASL	R0
000022	001402 					BEQ	2$
000024	012122 				1$:	MOV	(R1)+,(R2)+			; COPVB,CNPVB				3560
000026	077002 					SOB	R0,1$				; CNT,*					0000
000030	000207 				2$:	RTS	PC				;					3522
; Routine Size:  13 words,	Routine Base:  $CODE$ + 10254
; Maximum stack depth per invocation:  4 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 118
X00.89		APPLICABLE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (32)

;	  3566	%routine ('APPLICABLE', ENTITY_TYPE, EDB_QE, PARM_NO) =
;	  3567	
;	  3568	!++
;	  3569	! FUNCTIONAL DESCRIPTION:
;	  3570	!
;	  3571	!	Determines whether a parameter, if an NML data base parameter,
;	  3572	!       applies to an entry in the NML data base which represents a
;	  3573	!       specific entity. I.e., if a parameter is applicable to the
;	  3574	!       executor node only, then it could not apply to a data base
;	  3575	!       entry for a remote node.
;	  3576	!
;	  3577	! FORMAL PARAMETERS
;	  3578	!
;	  3579	!	ENTITY_TYPE - The entity type number of this entity.
;	  3580	!       EDB_QE      - The address of the entity data base entry for
;	  3581	!                     particular entity.
;	  3582	!       PARM_NO     - The parameter type number.
;	  3583	!
;	  3584	! IMPLICIT INPUTS
;	  3585	!
;	  3586	!	NONE.
;	  3587	!
;	  3588	! ROUTINE VALUE:
;	  3589	!
;	  3590	!	TRUE, if the parameter is applies to this entity;
;	  3591	!       FALSE, otherwise.
;	  3592	!
;	  3593	! SIDE EFFECTS:
;	  3594	!
;	  3595	!	NONE.
;	  3596	!
;	  3597	!--
;	  3598	
;	  3599	    begin
;	  3600	
;	  3601	    map
;	  3602	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  3603	
;	  3604	    case .ENTITY_TYPE from NODE_E to MODULE_ of
;	  3605	        set
;	  3606	        [NODE_E]:
;	  3607	            if NML$EXECUTOR_ONLY (.ENTITY_TYPE, .PARM_NO)
;	  3608	            then begin
;	  3609	                 if .EDB_QE[NDB_NODE_TYPE] eql NDB$EXECUTOR
;	  3610	                 then return $TRUE
;	  3611	                 else return $FALSE;
;	  3612	                 end
;	  3613	            else return $TRUE;
;	  3614	
;	  3615	        [LINE_, CIRCUIT_, LOGGING_, MODULE_]:
;	  3616	            return $TRUE;
;	  3617	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 119
X00.89		APPLICABLE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (32)

;	  3618	        [inrange,
;	  3619	         outrange]:
;	  3620	        tes;
;	  3621	
;	  3622	    return $FALSE;
;	  3623	    end;				! End of APPLICABLE


						.SBTTL	APPLICABLE APPLICABLE
000000	016600  000006 			APPLICABLE:
						MOV	6(SP),R0			; ENTITY.TYPE,*				3604
000004	020027  000004 				CMP	R0,#4
000010	101031 					BHI	4$
000012	006300 					ASL	R0
000014	066007  000054'				ADD	P.AAG(R0),PC			; Case dispatch
000020	000425 				1$:	BR	4$
000022	016646  000006 			2$:	MOV	6(SP),-(SP)			; ENTITY.TYPE,*				3607
000026	016646  000004 				MOV	4(SP),-(SP)			; PARM.NO,*
000032	004767  000000G				JSR	PC,NL.PEX
000036	022626 					CMP	(SP)+,(SP)+
000040	006000 					ROR	R0
000042	103011 					BCC	3$
000044	016600  000004 				MOV	4(SP),R0			; EDB.QE,*				3609
000050	016000  000016 				MOV	16(R0),R0
000054	042700  174377 				BIC	#174377,R0
000060	020027  000400 				CMP	R0,#400
000064	001003 					BNE	4$
000066	012700  000001 			3$:	MOV	#1,R0				;					3616
000072	000207 					RTS	PC
000074	005000 				4$:	CLR	R0				;					3566
000076	000207 					RTS	PC
; Routine Size:  32 words,	Routine Base:  $CODE$ + 10306
; Maximum stack depth per invocation:  3 words


000054						.PSECT	$PLIT$,  RO ,  D  

					P.AAG:						; CASE Table for APPLICABLE+0014	3604
000054	000002 					.WORD	2				; [2$]
000056	000046 					.WORD	46				; [3$]
000060	000046 					.WORD	46				; [3$]
000062	000046 					.WORD	46				; [3$]
000064	000046 					.WORD	46				; [3$]
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 120
X00.89		APPLICABLE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (33)

;	U 3624	%if $X25 and not $MCB %then
;	U 3625	%routine ('REMOVE_QUALIFIED_PARAMETER', EDB_QE, ENTITY, QUALIFIER, POINTER, LENGTH, PRIVLEDGED) =
;	U 3626	
;	U 3627	!++
;	U 3628	! FUNCTIONAL DESCRIPTION:
;	U 3629	!
;	U 3630	!       Remove parameters in the qualifier sub queues.
;	U 3631	!
;	U 3632	! FORMAL PARAMETERS
;	U 3633	!
;	U 3634	!	EDB_QE          Address of the qualified entity data base structure to
;	U 3635	!                       which the parameter is to be inserted.
;	U 3636	!       ENTITY          The entity type number to which the parameter applies.
;	U 3637	!       QUALIFIER       A character sequence pointer to the qualifier
;	U 3638	!                       parameter.
;	U 3639	!       POINTER         A character sequence pointer to the parameter to
;	U 3640	!                       be inserted.
;	U 3641	!       LENGTH          The length of the parameter data passed in the
;	U 3642	!                       parameter buffer.
;	U 3643	!
;	U 3644	! IMPLICIT INPUTS
;	U 3645	!
;	U 3646	!	NONE.
;	U 3647	!
;	U 3648	! ROUTINE VALUE:
;	U 3649	!
;	U 3650	!	NICE return code.
;	U 3651	!
;	U 3652	! SIDE EFFECTS:
;	U 3653	!
;	U 3654	!	NONE.
;	U 3655	!
;	U 3656	!--
;	U 3657	
;	U 3658	    begin
;	U 3659	
;	U 3660	    map
;	U 3661	        EDB_QE: ref ENTITY_DB_BLOCK;
;	U 3662	
;	U 3663	    local
;	U 3664	        PARAMETER,
;	U 3665	        QH_QUALIFIER: ref Q_HEADER,
;	U 3666	        QE_QUALIFIER: ref ENTITY_DB_BLOCK;
;	U 3667	
;	U 3668	    QH_QUALIFIER = EDB_QE[EDB_QUALIFIER_QUEUE];
;	U 3669	    PARAMETER = (if .LENGTH gtr 0       ! Get parameter number
;	U 3670	                 then GETW_NA (.POINTER)
;	U 3671	                 else -1);              ! Zero length implies ALL
;	U 3672	
;	U 3673	    if .QUALIFIER eql 0
;	U 3674	    then begin                          ! Use default existing qualifier queue
;	U 3675	         if NMU$QUEUE_LENGTH (.QH_QUALIFIER) eql 1 ! Queue has only 1 entry ?
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 121
X00.89		APPLICABLE					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (33)

;	U 3676	         then QE_QUALIFIER = .QH_QUALIFIER[Q_FORWARD] ! Yes, default queue
;	U 3677	         else return $NICE$ERR_PAM;     ! No, expecting qualifier name
;	U 3678	         end
;	U 3679	    else begin                          ! Use specific qualifier queue
;	U 3680	         local ID_STRING, COUNT: $SIGNED_BYTE_VALUE;
;	U 3681	
;	U 3682	         ID_STRING = ch$plus (.QUALIFIER, 2); ! Get qualifier id string
;	U 3683	         COUNT = ch$rchar (.ID_STRING); ! Get count byte
;	U 3684	
;	U 3685	         if .COUNT[VALUE] lss 0         ! If count byte is negative ....
;	U 3686	         then begin                     ! Set KNOWN qualified queues
;	U 3687	              local NEXT: ref Q_ENTRY;
;	U 3688	
;	U 3689	              NEXT = .QH_QUALIFIER[Q_FORWARD];
;	U 3690	
;	U 3691	              while (QE_QUALIFIER = .NEXT) neq .QH_QUALIFIER
;	U 3692	              do begin
;	U 3693	                 NEXT = .NEXT[Q_FORWARD];
;	U 3694	                 REMOVE_PARAMETER (.QE_QUALIFIER, .ENTITY, .PARAMETER, .PRIVLEDGED);
;	U 3695	                 end;
;	U 3696	
;	U 3697	              return NICE$_SUC;
;	U 3698	              end
;	U 3699	         else begin                     ! Set specific qualified queue
;	U 3700	              QE_QUALIFIER = NMU$QUEUE_SCAN (.QH_QUALIFIER,
;	U 3701	                                             .ID_STRING,
;	U 3702	                                             NON_NODE_ID_MATCH);
;	U 3703	
;	U 3704	              if .QE_QUALIFIER eql 0    ! Does entry exist ?
;	U 3705	              then return $NICE$ERR_IPV;
;	U 3706	              end;
;	U 3707	         end;
;	U 3708	
;	U 3709	    REMOVE_PARAMETER (.QE_QUALIFIER, .ENTITY, .PARAMETER, .PRIVLEDGED);
;	U 3710	
;	U 3711	    return NICE$_SUC;
;	U 3712	    end;				! End of REMOVE_QUALIFIED_PARAMETER
;	  3713	%fi
;	  3714	%sbttl ''
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 122
X00.89		REMOVE_PARAMETER				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (34)

;	  3715	%routine ('REMOVE_PARAMETER', EDB_QE, ENTITY_TYPE, PARM_NO, PRIVLEDGED) : novalue =
;	  3716	
;	  3717	!++
;	  3718	! FUNCTIONAL DESCRIPTION:
;	  3719	!
;	  3720	!	Removes a parameter entry from the parameter vector of the
;	  3721	!       data base for an entity.
;	  3722	!
;	  3723	! FORMAL PARAMETERS
;	  3724	!
;	  3725	!	EDB_QE      - The address of the entity data base structure from
;	  3726	!                     which the parameter is to be removed.
;	  3727	!       ENTITY_TYPE - The entity type number to which the parameter applies.
;	  3728	!       PARM_NO     - The parameter number for the parameter to be removed.
;	  3729	!       PRIVLEDGED  - If true, clear the parameter even if not clearable.
;	  3730	!
;	  3731	! IMPLICIT INPUTS
;	  3732	!
;	  3733	!	NONE.
;	  3734	!
;	  3735	! ROUTINE VALUE:
;	  3736	!
;	  3737	!	NONE.
;	  3738	!
;	  3739	! SIDE EFFECTS:
;	  3740	!
;	  3741	!	NONE.
;	  3742	!
;	  3743	!--
;	  3744	
;	  3745	    begin
;	  3746	
;	  3747	    map
;	  3748	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  3749	
;	  3750	    !
;	  3751	    !  Verify that all fields related to the parameter vector are
;	  3752	    !  in agreement.  If there is any indication that there is no
;	  3753	    !  PVB, reset all the fields.
;	  3754	    !
;	  3755	
;	  3756	    if (.EDB_QE[EDB_PARAMETER_COUNT] eql 0)
;	  3757	    or (.EDB_QE[EDB_PARAMETER_VECTOR] eql 0)
;	  3758	    or (.EDB_QE[EDB_PARAMETER_ALLOCATION] eql 0)
;	  3759	    then begin
;	  3760		 RELEASE_PVB (.EDB_QE);
;	  3761		 return;
;	  3762		 end;
;	  3763	
;	  3764	    !
;	  3765	    ! Otherwise, get the parameter number and check it for applicability.
;	  3766	    !
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 123
X00.89		REMOVE_PARAMETER				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (34)

;	  3767	
;	  3768	    if not APPLICABLE (.ENTITY_TYPE, .EDB_QE, .PARM_NO)
;	L 3769	    then return $NICE$ERR_PNA
; %PRINT:	Parameter not applicable
;	  3770	
;	  3771	    !
;	  3772	    ! Search through the vector for the parameter to
;	  3773	    ! to be removed and ripple all parameters numbered higher than
;	  3774	    ! the one to be removed down one position in the vector. 
;	  3775	    !
;	  3776	
;	  3777	    else begin
;	  3778	         local CNT,
;	  3779	               ENTRY: ref $NML$PVB_ENTRY_BLOCK;
;	  3780	
;	  3781	         ENTRY = .EDB_QE[EDB_PARAMETER_VECTOR];
;	  3782	         CNT = .EDB_QE[EDB_PARAMETER_COUNT];
;	  3783	
;	  3784	         do begin
;	  3785	
;	  3786	            ! Note: ALL (-1) is less than any parameter number
;	  3787	
;	  3788	            if .PARM_NO leq .ENTRY[PE_NUMBER]
;	  3789	            then begin
;	  3790	                 if not ((.PARM_NO eql .ENTRY[PE_NUMBER]) or ! parameter #
;	  3791	                         (.PARM_NO lss 0))                   ! ALL
;	  3792	                 then exitloop;         ! No match
;	  3793	
;	  3794	                 ! Found parameter or removing all
;	  3795	
;	  3796	                 if NML$CLEARABLE (.ENTITY_TYPE, .ENTRY[PE_NUMBER]) or
;	  3797	                    .PRIVLEDGED
;	  3798	                 then begin             ! Check if user can clear parameter
;	  3799	
;	  3800	                      ! If this is a counter timer, adjust the counter
;	  3801	                      ! timer data base to reflect the time change.
;	  3802	
;	  3803	                      NML$COUNTER_TIMER_CLEAR (.PARM_NO,
;	  3804	                                               .ENTITY_TYPE,
;	  3805	                                               EDB_QE[EDB_ENTITY_ID]);
;	  3806	
;	  3807	                      CLEAR_PARAMETER_DATA (.ENTITY_TYPE, .ENTRY);
;	  3808	                      COPY_PARAMETER_VECTOR (vector [.ENTRY, PVB_ENTRY_SIZE],
;	  3809	                                             .ENTRY,
;	  3810	                                             .CNT - 1);
;	  3811	                      EDB_QE[EDB_PARAMETER_COUNT] = .EDB_QE[EDB_PARAMETER_COUNT] - 1;
;	  3812	                      end
;	  3813	                 else begin             ! Move down one entry
;	  3814	                      ENTRY = vector [.ENTRY, PVB_ENTRY_SIZE];
;	  3815	                      end;
;	  3816	
;	  3817	                 if .PARM_NO geq 0 then exitloop; ! Done Removing single parameter
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 124
X00.89		REMOVE_PARAMETER				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (34)

;	  3818	                 end
;	  3819	            else				  ! Move down one entry
;	  3820	                 ENTRY = vector [.ENTRY, PVB_ENTRY_SIZE];
;	  3821	            end
;	  3822	         while (CNT = .CNT - 1) neq 0;
;	  3823	         end;
;	  3824	
;	  3825	    ! If there are now no more parameters left in the vector, release
;	  3826	    ! storage used by the vector.
;	  3827	
;	  3828	    if .EDB_QE[EDB_PARAMETER_COUNT] eql 0
;	  3829	    then RELEASE_PVB (.EDB_QE);
;	  3830	
;	  3831	    return;
;	  3832	    end;				! End of REMOVE_PARAMETER


						.SBTTL	REMOVE.PARAMETER REMOVE_PARAMETER
010406						.PSECT	$CODE$,  RO 

000000	004167  000000G			REMOVE.PARAMETER:
						JSR	R1,$SAVE5			;					3715
000004	016603  000024 				MOV	24(SP),R3			; EDB.QE,*				3756
000010	012746  000030 				MOV	#30,-(SP)
000014	060316 					ADD	R3,(SP)
000016	005776  000000 				TST	@0(SP)
000022	001512 					BEQ	9$
000024	005763  000034 				TST	34(R3)				;					3757
000030	001507 					BEQ	9$
000032	005763  000032 				TST	32(R3)				;					3758
000036	001504 					BEQ	9$				;					3760
000040	016605  000024 				MOV	24(SP),R5			; ENTITY.TYPE,*				3768
000044	010546 					MOV	R5,-(SP)
000046	010346 					MOV	R3,-(SP)
000050	016601  000026 				MOV	26(SP),R1			; PARM.NO,*
000054	010146 					MOV	R1,-(SP)
000056	004767  177616 				JSR	PC,APPLICABLE
000062	062706  000006 				ADD	#6,SP
000066	006000 					ROR	R0
000070	103073 					BHIS	10$				;					3769
000072	016304  000034 				MOV	34(R3),R4			; *,ENTRY				3781
000076	017602  000000 				MOV	@0(SP),R2			; *,CNT					3782
000102	020114 				1$:	CMP	R1,(R4)				; *,ENTRY				3788
000104	003053 					BGT	6$
000106	001402 					BEQ	2$				;					3790
000110	005701 					TST	R1				;					3791
000112	002053 					BGE	8$				;					3792
000114	010546 				2$:	MOV	R5,-(SP)			;					3796
000116	011446 					MOV	(R4),-(SP)			; ENTRY,*
000120	004767  000000G				JSR	PC,NL.CLR
000124	022626 					CMP	(SP)+,(SP)+
000126	006000 					ROR	R0
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 125
X00.89		REMOVE_PARAMETER				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (34)

000130	103404 					BLO	3$
000132	032766  000001  000020 			BIT	#1,20(SP)			; *,PRIVLEDGED				3797
000140	001430 					BEQ	4$
000142	010146 				3$:	MOV	R1,-(SP)			;					3803
000144	010546 					MOV	R5,-(SP)
000146	012746  000006 				MOV	#6,-(SP)			;					3805
000152	060316 					ADD	R3,(SP)
000154	004767  000000G				JSR	PC,NL.CCT			;					3803
000160	010516 					MOV	R5,(SP)				;					3807
000162	010446 					MOV	R4,-(SP)			; ENTRY,*
000164	004767  000000V				JSR	PC,CLEAR.PARAMETER.DATA
000170	012716  000004 				MOV	#4,(SP)				;					3808
000174	060416 					ADD	R4,(SP)				; ENTRY,*
000176	010446 					MOV	R4,-(SP)			; ENTRY,*
000200	010246 					MOV	R2,-(SP)			; CNT,*					3810
000202	005316 					DEC	(SP)
000204	004767  177436 				JSR	PC,COPY.PARAMETER.VECTOR	;					3808
000210	005376  000014 				DEC	@14(SP)				;					3811
000214	062706  000014 				ADD	#14,SP				;					3798
000220	000402 					BR	5$				;					3796
000222	062704  000004 			4$:	ADD	#4,R4				; *,ENTRY				3814
000226	005701 				5$:	TST	R1				;					3817
000230	002403 					BLT	7$
000232	000403 					BR	8$
000234	062704  000004 			6$:	ADD	#4,R4				; *,ENTRY				3820
000240	077260 				7$:	SOB	R2,1$				; CNT,*					3822
000242	005776  000000 			8$:	TST	@0(SP)				;					3828
000246	001004 					BNE	10$
000250	010346 				9$:	MOV	R3,-(SP)			;					3829
000252	004767  000000V				JSR	PC,RELEASE.PVB
000256	005726 					TST	(SP)+
000260	005726 				10$:	TST	(SP)+				;					3715
000262	000207 					RTS	PC
; Routine Size:  90 words,	Routine Base:  $CODE$ + 10406
; Maximum stack depth per invocation:  14 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 126
X00.89		RELEASE_PVB					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (35)

;	  3833	%routine ('RELEASE_PVB', EDB_QE) : novalue =
;	  3834	
;	  3835	!++
;	  3836	! FUNCTIONAL DESCRIPTION:
;	  3837	!
;	  3838	!	Clears all related fields and releases the parameter entry
;	  3839	!       vector block for a specific entity data base structure.
;	  3840	!
;	  3841	! FORMAL PARAMETERS
;	  3842	!
;	  3843	!	EDB_QE  - The address of the entity data base structure from
;	  3844	!                 which the PVB is to be removed.
;	  3845	!
;	  3846	! IMPLICIT INPUTS
;	  3847	!
;	  3848	!	NONE.
;	  3849	!
;	  3850	! ROUTINE VALUE:
;	  3851	!
;	  3852	!	NONE.
;	  3853	!
;	  3854	! SIDE EFFECTS:
;	  3855	!
;	  3856	!   The following fields of the entity data base entry will be cleared:
;	  3857	!         EDB_QE[EDB_PARAMETER_ALLOCATION]
;	  3858	!         EDB_QE[EDB_PARAMETER_VECTOR]
;	  3859	!         EDB_QE[EDB_PARAMETER_COUNT]
;	  3860	!
;	  3861	!--
;	  3862	
;	  3863	    begin
;	  3864	
;	  3865	    map
;	  3866	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  3867	
;	  3868	    !
;	  3869	    ! If a parameter vector is not currently allocated there is
;	  3870	    !  no memory to be released.
;	  3871	    !
;	  3872	
;	  3873	    if (.EDB_QE[EDB_PARAMETER_ALLOCATION] neq 0) ! They better all be in
;	  3874	    and (.EDB_QE[EDB_PARAMETER_VECTOR] neq 0) ! agreement.
;	  3875	    then NMU$MEMORY_RELEASE (.EDB_QE[EDB_PARAMETER_VECTOR],
;	  3876	                             .EDB_QE[EDB_PARAMETER_ALLOCATION]);
;	  3877	
;	  3878	    EDB_QE[EDB_PARAMETER_ALLOCATION] = 0;
;	  3879	    EDB_QE[EDB_PARAMETER_VECTOR] = 0;
;	  3880	    EDB_QE[EDB_PARAMETER_COUNT] = 0;
;	  3881	
;	  3882	    return;
;	  3883	    end;				! End of RELEASE_PVB
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 127
X00.89		RELEASE_PVB					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (35)


						.SBTTL	RELEASE.PVB RELEASE_PVB
000000	004167  000000G			RELEASE.PVB:
						JSR	R1,$SAVE2			;					3833
000004	016601  000010 				MOV	10(SP),R1			; EDB.QE,*				3873
000010	012702  000032 				MOV	#32,R2
000014	060102 					ADD	R1,R2
000016	005712 					TST	(R2)
000020	001411 					BEQ	1$
000022	005761  000034 				TST	34(R1)				;					3874
000026	001406 					BEQ	1$
000030	016146  000034 				MOV	34(R1),-(SP)			;					3875
000034	011246 					MOV	(R2),-(SP)
000036	004767  000000G				JSR	PC,UM.RELEASE
000042	022626 					CMP	(SP)+,(SP)+
000044	005012 				1$:	CLR	(R2)				;					3878
000046	005061  000034 				CLR	34(R1)				;					3879
000052	005061  000030 				CLR	30(R1)				;					3880
000056	000207 					RTS	PC				;					3833
; Routine Size:  24 words,	Routine Base:  $CODE$ + 10672
; Maximum stack depth per invocation:  6 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 128
X00.89		GET_PVB						 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (36)

;	  3884	%routine ('GET_PVB', EDB_QE) =
;	  3885	
;	  3886	!++
;	  3887	! FUNCTIONAL DESCRIPTION:
;	  3888	!
;	  3889	!	Gets a parameter entry vector block for a specific entity
;	  3890	!	data base structure.  If a parameter vector is already
;	  3891	!	allocated, a new one will not be allocated provided there
;	  3892	!	is enough room for 1 more entry in the existing vector.
;	  3893	!	If there is not enough room, a larger vector will be allocated
;	  3894	!	and the existing entries will be copied to the new vector.
;	  3895	!	The associated fields in the data base structure will be
;	  3896	!	updated.
;	  3897	!
;	  3898	! FORMAL PARAMETERS
;	  3899	!
;	  3900	!	EDB_QE  - The address of the entity data base structure from
;	  3901	!                 which the PVB is to be allocated.
;	  3902	!
;	  3903	! IMPLICIT INPUTS
;	  3904	!
;	  3905	!	NONE.
;	  3906	!
;	  3907	! ROUTINE VALUE:
;	  3908	!
;	  3909	!	NONE.
;	  3910	!
;	  3911	! SIDE EFFECTS:
;	  3912	!
;	  3913	!   The following fields of the entity data base entry will be changed:
;	  3914	!         EDB_QE[EDB_PARAMETER_ALLOCATION]
;	  3915	!         EDB_QE[EDB_PARAMETER_VECTOR]
;	  3916	!
;	  3917	!--
;	  3918	
;	  3919	    begin
;	  3920	
;	  3921	    map
;	  3922	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  3923	
;	  3924	    if .EDB_QE[EDB_PARAMETER_ALLOCATION] lss
;	  3925	    ((.EDB_QE[EDB_PARAMETER_COUNT] + 1) * PVB_ENTRY_ALLOCATION)
;	  3926	    then begin
;	  3927	         local COUNT, NPVB: ref $NML$PVB_ENTRY_VECTOR (0);
;	  3928	         bind NEW_ALLOCATION = .EDB_QE[EDB_PARAMETER_ALLOCATION] +
;	  3929	                               PVB_ENTRY_ALLOCATION;
;	  3930	
;	  3931	         if (NPVB = NMU$MEMORY_GET (NEW_ALLOCATION)) eql 0
;	  3932	         then return $FALSE;
;	  3933	
;	  3934	         COUNT = .EDB_QE[EDB_PARAMETER_COUNT];
;	  3935	         COPY_PARAMETER_VECTOR(.EDB_QE[EDB_PARAMETER_VECTOR],
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 129
X00.89		GET_PVB						 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (36)

;	  3936	                               .NPVB,
;	  3937	                               .EDB_QE[EDB_PARAMETER_COUNT]);
;	  3938	
;	  3939	         RELEASE_PVB (.EDB_QE);
;	  3940	         EDB_QE[EDB_PARAMETER_VECTOR] = .NPVB;
;	  3941	         EDB_QE[EDB_PARAMETER_ALLOCATION] = NEW_ALLOCATION;
;	  3942	         EDB_QE[EDB_PARAMETER_COUNT] = .COUNT;
;	  3943	         end;
;	  3944	
;	  3945	    return $TRUE;
;	  3946	    end;				! End of GET_PVB


						.SBTTL	GET.PVB GET_PVB
000000	004167  000000G			GET.PVB:JSR	R1,$SAVE5			;					3884
000004	016604  000016 				MOV	16(SP),R4			; EDB.QE,*				3924
000010	016402  000030 				MOV	30(R4),R2			;					3925
000014	010200 					MOV	R2,R0
000016	006300 					ASL	R0
000020	006300 					ASL	R0
000022	062700  000004 				ADD	#4,R0
000026	026400  000032 				CMP	32(R4),R0			;					3924
000032	002034 					BGE	1$
000034	016405  000032 				MOV	32(R4),R5			;					3928
000040	062705  000004 				ADD	#4,R5
000044	010546 					MOV	R5,-(SP)			;					3931
000046	004767  000000G				JSR	PC,UM.GET
000052	005726 					TST	(SP)+
000054	010001 					MOV	R0,R1				; *,NPVB
000056	001425 					BEQ	2$				;					3932
000060	010203 					MOV	R2,R3				; *,COUNT				3934
000062	016446  000034 				MOV	34(R4),-(SP)			;					3935
000066	010146 					MOV	R1,-(SP)			; NPVB,*
000070	010246 					MOV	R2,-(SP)
000072	004767  177204 				JSR	PC,COPY.PARAMETER.VECTOR
000076	010416 					MOV	R4,(SP)				;					3939
000100	004767  177614 				JSR	PC,RELEASE.PVB
000104	010164  000034 				MOV	R1,34(R4)			; NPVB,*				3940
000110	010564  000032 				MOV	R5,32(R4)			;					3941
000114	010364  000030 				MOV	R3,30(R4)			; COUNT,*				3942
000120	062706  000006 				ADD	#6,SP				;					3926
000124	012700  000001 			1$:	MOV	#1,R0				;					3919
000130	000207 					RTS	PC
000132	005000 				2$:	CLR	R0				;					3884
000134	000207 					RTS	PC
; Routine Size:  47 words,	Routine Base:  $CODE$ + 10752
; Maximum stack depth per invocation:  10 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 130
X00.89		EXPAND_PVB					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (37)

;	  3947	%routine ('EXPAND_PVB', EDB_QE, N) =
;	  3948	
;	  3949	!++
;	  3950	! FUNCTIONAL DESCRIPTION:
;	  3951	!
;	  3952	!	Expands the parameter entry vector block for a specific entity
;	  3953	!	data base structure.  If a parameter vector is already
;	  3954	!	allocated, a new one will not be allocated provided there
;	  3955	!	is enough room for 1 more entry in the existing vector.
;	  3956	!	If there is not enough room, a larger vector will be allocated
;	  3957	!	and the existing entries will be copied to the new vector.
;	  3958	!	In any case, the parameter vector will be opened up and
;	  3959	!	a null entry will be placed in the vector at position N,
;	  3960	!	where N varies from 0 to count-1.
;	  3961	!	The associated fields in the data base structure will be
;	  3962	!	updated.
;	  3963	!
;	  3964	! FORMAL PARAMETERS
;	  3965	!
;	  3966	!	EDB_QE  - The address of the entity data base structure from
;	  3967	!                 which the PVB is to be expanded.
;	  3968	!	N	- The number of the vector entry, where the null
;	  3969	!		  entry is to be placed. (0 <= N < count)
;	  3970	!
;	  3971	! IMPLICIT INPUTS
;	  3972	!
;	  3973	!	NONE.
;	  3974	!
;	  3975	! ROUTINE VALUE:
;	  3976	!
;	  3977	!	NONE.
;	  3978	!
;	  3979	! SIDE EFFECTS:
;	  3980	!
;	  3981	!   The following fields of the entity data base entry will be changed:
;	  3982	!         EDB_QE[EDB_PARAMETER_ALLOCATION]
;	  3983	!         EDB_QE[EDB_PARAMETER_VECTOR]
;	  3984	!
;	  3985	!--
;	  3986	
;	  3987	    begin
;	  3988	
;	  3989	    map
;	  3990	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  3991	
;	  3992	    local
;	  3993	         PVB: ref $NML$PVB_ENTRY_VECTOR (0);
;	  3994	
;	  3995	    if .EDB_QE[EDB_PARAMETER_ALLOCATION]
;	  3996	    lss ((.EDB_QE[EDB_PARAMETER_COUNT] + 1) * PVB_ENTRY_ALLOCATION)
;	  3997	    then if not GET_PVB (.EDB_QE)
;	  3998	         then return $FALSE;
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 131
X00.89		EXPAND_PVB					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (37)

;	  3999	
;	  4000	    PVB = .EDB_QE[EDB_PARAMETER_VECTOR];
;	  4001	    decr M from .EDB_QE[EDB_PARAMETER_COUNT] - 1 to .N
;	  4002	    do begin
;	  4003	       PVB[.M+1,PE_NUMBER] = .PVB[.M,PE_NUMBER];
;	  4004	       PVB[.M+1,PE_DATA] = .PVB[.M,PE_DATA];
;	  4005	       end;
;	  4006	
;	  4007	    PVB[.N,PE_NUMBER] = 0;
;	  4008	    PVB[.N,PE_DATA] = 0;
;	  4009	
;	  4010	    return $TRUE;
;	  4011	    end;				! End of EXPAND_PVB


						.SBTTL	EXPAND.PVB EXPAND_PVB
000000	004167  000000G			EXPAND.PVB:
						JSR	R1,$SAVE5			;					3947
000004	016604  000020 				MOV	20(SP),R4			; EDB.QE,*				3995
000010	016400  000030 				MOV	30(R4),R0			;					3996
000014	006300 					ASL	R0
000016	006300 					ASL	R0
000020	062700  000004 				ADD	#4,R0
000024	026400  000032 				CMP	32(R4),R0
000030	002006 					BGE	1$
000032	010446 					MOV	R4,-(SP)			;					3997
000034	004767  177602 				JSR	PC,GET.PVB
000040	005726 					TST	(SP)+
000042	006000 					ROR	R0
000044	103052 					BHIS	4$				;					3998
000046	016402  000034 			1$:	MOV	34(R4),R2			; *,PVB					4000
000052	016405  000030 				MOV	30(R4),R5			; *,M					4001
000056	000423 					BR	3$
000060	010504 				2$:	MOV	R5,R4				; M,*					4003
000062	006304 					ASL	R4
000064	006304 					ASL	R4
000066	010401 					MOV	R4,R1
000070	060201 					ADD	R2,R1				; PVB,*
000072	010503 					MOV	R5,R3				; M,*
000074	006303 					ASL	R3
000076	006303 					ASL	R3
000100	010300 					MOV	R3,R0
000102	060200 					ADD	R2,R0				; PVB,*
000104	011061  000004 				MOV	(R0),4(R1)
000110	010401 					MOV	R4,R1				;					4004
000112	060201 					ADD	R2,R1				; PVB,*
000114	010300 					MOV	R3,R0
000116	060200 					ADD	R2,R0				; PVB,*
000120	016061  000002  000006 			MOV	2(R0),6(R1)
000126	005305 				3$:	DEC	R5				; M					4001
000130	020566  000016 				CMP	R5,16(SP)			; M,N
000134	002351 					BGE	2$
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 132
X00.89		EXPAND_PVB					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (37)

000136	016601  000016 				MOV	16(SP),R1			; N,*					4007
000142	006301 					ASL	R1
000144	006301 					ASL	R1
000146	010100 					MOV	R1,R0
000150	060200 					ADD	R2,R0				; PVB,*
000152	005010 					CLR	(R0)
000154	010100 					MOV	R1,R0				;					4008
000156	060200 					ADD	R2,R0				; PVB,*
000160	005060  000002 				CLR	2(R0)
000164	012700  000001 				MOV	#1,R0				;					3987
000170	000207 					RTS	PC
000172	005000 				4$:	CLR	R0				;					3947
000174	000207 					RTS	PC
; Routine Size:  63 words,	Routine Base:  $CODE$ + 11110
; Maximum stack depth per invocation:  8 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 133
X00.89		SET_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (38)

;	  4012	%routine ('SET_PARAMETER_DATA', ENTITY_TYPE, PRM_PTR, PVB_QE) =
;	  4013	
;	  4014	!++
;	  4015	! FUNCTIONAL DESCRIPTION:
;	  4016	!
;	  4017	!	Stores the data for a parameter in the parameter vector block.
;	  4018	!       The data stored is dependent on the type of data for the 
;	  4019	!       parameter. For coded and binary value parameters the data is
;	  4020	!       stored directly. For image fields the address of a dynamically
;	  4021	!       allocated block containing the image field is stored.
;	  4022	!
;	  4023	! FORMAL PARAMETERS
;	  4024	!
;	  4025	!	ENTITY_TYPE - Entity type number.
;	  4026	!       PRM_PTR     - Pointer to data portion of parameter.
;	  4027	!       PVB_QE      - Address of Parameter Vector Block Queue Entry.
;	  4028	!
;	  4029	! IMPLICIT INPUTS
;	  4030	!
;	  4031	!	NONE.
;	  4032	!
;	  4033	! ROUTINE VALUE:
;	  4034	!
;	  4035	!	NONE.
;	  4036	!
;	  4037	! SIDE EFFECTS:
;	  4038	!
;	  4039	!	NONE.
;	  4040	!
;	  4041	!--
;	  4042	
;	  4043	    begin
;	  4044	
;	  4045	    map
;	  4046	       PVB_QE: ref $NML$PVB_ENTRY_BLOCK;
;	  4047	
;	  4048	    local
;	  4049	         DATA_TYPE: block [1] field (DATA_TYPE_FIELDS);
;	  4050	
;	  4051	    DATA_TYPE = NML$GET_PDB_DATA_TYPE (.ENTITY_TYPE, .PVB_QE[PE_NUMBER]);
;	  4052	
;	  4053	    if .DATA_TYPE[DT_CODED] eql 0       ! Not coded
;	  4054	    then begin
;	  4055	         if .DATA_TYPE[DT_FTYPE] eql 0  ! Binary number
;	  4056	         then begin
;	  4057	              if .DATA_TYPE[DT_LENGTH] eql 0 ! Image field
;	  4058	              then begin
;	  4059	                   if not SET_IMAGE_FIELD (PVB_QE[PE_ADDRESS], .PRM_PTR)
;	  4060	                   then return $FALSE;
;	  4061	                   end
;	  4062	              else begin
;	  4063	                   if .DATA_TYPE[DT_LENGTH] leq %bpval/8
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 134
X00.89		SET_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (38)

;	  4064	                   then PVB_QE[PE_DATA] = GETN (PRM_PTR, .DATA_TYPE[DT_LENGTH])
;	  4065	                   else begin
;	  4066	                        bind L = .DATA_TYPE[DT_LENGTH],
;	  4067	                             A = ch$allocation (L,8) * %upval;
;	  4068	
;	  4069	                        if .PVB_QE[PE_ADDRESS] eql 0
;	  4070	                        then if (PVB_QE[PE_ADDRESS] = NMU$MEMORY_GET (A)) eql 0
;	  4071	                             then return $FALSE;
;	  4072	
;	  4073	                        ch$move (L, .PRM_PTR, ch$ptr (.PVB_QE[PE_ADDRESS],,8));
;	  4074	                        end;
;	  4075	                   end;
;	  4076	              end
;	  4077	         else begin                     ! ASCII image field
;	  4078	              if not SET_IMAGE_FIELD (PVB_QE[PE_ADDRESS], .PRM_PTR)
;	  4079	              then return $FALSE;
;	  4080	              end;
;	  4081	         end
;	  4082	    else begin                          ! Coded
;	  4083	         if .DATA_TYPE[DT_FTYPE] eql 0  ! Single field
;	  4084	         then PVB_QE[PE_DATA] = GETN (PRM_PTR, .DATA_TYPE[DT_NUMBER])
;	  4085	         else begin                     ! Multiple field
;	  4086	              if begin                  ! Special cases for mutiple fields of
;	  4087	                 selectone .ENTITY_TYPE of
;	  4088	                     set
;	  4089	                     [NODE_E]:          ! NODE entity
;	  4090	                         selectone .PVB_QE[PE_NUMBER] of
;	  4091	                             set
;	  4092	                             [141]:     ! HOST
;	  4093	                                 $TRUE;
;	  4094	                             [otherwise]:
;	  4095	                                 $FALSE;
;	  4096	                             tes;
;	  4097	                     [MODULE_]:         ! MODULE entity
;	  4098	                         selectone .PVB_QE[PE_NUMBER] of
;	  4099	                             set
;	  4100	                             [320]:     ! NODE
;	  4101	                                 $TRUE;
;	  4102	                             [otherwise]:
;	  4103	                                 $FALSE;
;	  4104	                             tes;
;	  4105	                     [otherwise]:
;	  4106	                         $FALSE;
;	  4107	                     tes
;	  4108	                 end
;	  4109	              then begin
;	  4110	                   local PTR, TEMP;
;	  4111	
;	  4112	                   if .PVB_QE[PE_ADDRESS] eql 0
;	  4113	                   then if (PVB_QE[PE_ADDRESS] = NMU$MEMORY_GET (NODE_ID_BUFFER_ALLOCATION)) eql 0
;	  4114	                        then return $FALSE;
;	  4115	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 135
X00.89		SET_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (38)

;	  4116	                   PTR = ch$ptr (.PVB_QE[PE_ADDRESS],,8);
;	  4117	                   TEMP = GETB (PRM_PTR);
;	  4118	                   if .TEMP eql 0
;	  4119	                   then begin
;	  4120	                        TEMP = GETW (PRM_PTR);
;	  4121	                        PUTW (TEMP, PTR);
;	  4122	                        PUTB (0, PTR);
;	  4123	                        end
;	  4124	                   else begin
;	  4125	                        local ADDR;
;	  4126	
;	  4127	                        ADDR = 0;
;	  4128	                        PUTW (ADDR, PTR);
;	  4129	                        PUTB (.TEMP, PTR);
;	  4130	                        ch$move (.TEMP, .PRM_PTR, .PTR);
;	  4131	                        end;
;	  4132	
;	  4133	                   PTR = ch$ptr (.PVB_QE[PE_ADDRESS],,8);
;	  4134	                   TEMP = NODE_ID_BUFFER_LENGTH;
;	  4135	
;	  4136	                   !
;	  4137	                   ! Map node address so a valid address
;	  4138	                   ! is displayed.
;	  4139	                   !
;	  4140	
;	  4141	                   $NML$MAP_NODE_ID (TEMP, .PTR);
;	  4142	                   end
;	  4143	              else PVB_QE[PE_ADDRESS] = 0; ! Unknown multiple parameter
;	  4144	              end;
;	  4145	         end;
;	  4146	
;	  4147	    return $TRUE;
;	  4148	    end;				! End of SET_PARAMETER_DATA



001112						.PSECT	$OWN$,  D  
001112					IOSB:	.BLKW	2


						.SBTTL	SET.PARAMETER.DATA SET_PARAMETER_DATA
011306						.PSECT	$CODE$,  RO 

000000	004167  000000G			SET.PARAMETER.DATA:
						JSR	R1,$SAVE5			;					4012
000004	005746 					TST	-(SP)
000006	016603  000024 				MOV	24(SP),R3			; ENTITY.TYPE,*				4051
000012	010346 					MOV	R3,-(SP)
000014	017601  000022 				MOV	@22(SP),R1			; PVB.QE,*
000020	010146 					MOV	R1,-(SP)
000022	004767  000000G				JSR	PC,NL.PDT
000026	010002 					MOV	R0,R2				; *,DATA.TYPE
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 136
X00.89		SET_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (38)

000030	016600  000024 				MOV	24(SP),R0			; PVB.QE,*				4059
000034	012705  000002 				MOV	#2,R5
000040	060005 					ADD	R0,R5
000042	032702  000200 				BIT	#200,R2				; *,DATA.TYPE				4053
000046	001133 					BNE	9$
000050	032702  000100 				BIT	#100,R2				; *,DATA.TYPE				4055
000054	001117 					BNE	8$
000056	032702  000017 				BIT	#17,R2				; *,DATA.TYPE				4057
000062	001013 					BNE	2$
000064	010516 					MOV	R5,(SP)				;					4059
000066	016646  000026 				MOV	26(SP),-(SP)			; PRM.PTR,*
000072	004767  000000V				JSR	PC,SET.IMAGE.FIELD
000076	005726 					TST	(SP)+
000100	006000 					ROR	R0
000102	103560 					BLO	12$
000104	022626 				1$:	CMP	(SP)+,(SP)+			;					4060
000106	000167  000626 				JMP	21$
000112	010200 				2$:	MOV	R2,R0				; DATA.TYPE,*				4063
000114	042700  177760 				BIC	#177760,R0
000120	020027  000002 				CMP	R0,#2
000124	101041 					BHI	5$
000126	005266  000026 				INC	26(SP)				; PRM.PTR				4064
000132	016600  000026 				MOV	26(SP),R0			; PRM.PTR,*
000136	005003 					CLR	R3				; $$GETN.X
000140	156003  177777 				BISB	-1(R0),R3			; *,$$GETN.X
000144	010200 					MOV	R2,R0				; DATA.TYPE,*
000146	042700  177760 				BIC	#177760,R0
000152	072027  000003 				ASH	#3,R0
000156	010004 					MOV	R0,R4
000160	162704  000010 				SUB	#10,R4
000164	005001 					CLR	R1				; $$GETN.P
000166	000412 					BR	4$
000170	005266  000026 			3$:	INC	26(SP)				; PRM.PTR
000174	016600  000026 				MOV	26(SP),R0			; PRM.PTR,*
000200	114000 					MOVB	-(R0),R0
000202	042700  177400 				BIC	#177400,R0
000206	072001 					ASH	R1,R0				; $$GETN.P,*
000210	060300 					ADD	R3,R0				; $$GETN.X,*
000212	010003 					MOV	R0,R3				; *,$$GETN.X
000214	062701  000010 			4$:	ADD	#10,R1				; *,$$GETN.P
000220	020104 					CMP	R1,R4				; $$GETN.P,*
000222	003762 					BLE	3$
000224	010315 					MOV	R3,(R5)				; $$GETN.X,*
000226	000506 					BR	12$				;					4063
000230	010200 				5$:	MOV	R2,R0				; DATA.TYPE,*				4067
000232	042700  177760 				BIC	#177760,R0
000236	005200 					INC	R0
000240	010001 					MOV	R0,R1
000242	006700 					SXT	R0
000244	071027  000002 				DIV	#2,R0
000250	006300 					ASL	R0
000252	005715 					TST	(R5)				;					4069
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 137
X00.89		SET_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (38)

000254	001005 					BNE	7$
000256	010016 					MOV	R0,(SP)				;					4070
000260	004767  000000G				JSR	PC,UM.GET
000264	010015 					MOV	R0,(R5)
000266	001706 				6$:	BEQ	1$				;					4071
000270	010216 				7$:	MOV	R2,(SP)				; DATA.TYPE,*				4073
000272	042716  177760 				BIC	#177760,(SP)
000276	016646  000026 				MOV	26(SP),-(SP)			; PRM.PTR,*
000302	011546 					MOV	(R5),-(SP)
000304	004767  000000G				JSR	PC,BL$MOV
000310	022626 					CMP	(SP)+,(SP)+			;					4065
000312	000454 					BR	12$				;					4055
000314	010516 				8$:	MOV	R5,(SP)				;					4078
000316	016646  000026 				MOV	26(SP),-(SP)			; PRM.PTR,*
000322	004767  000000V				JSR	PC,SET.IMAGE.FIELD
000326	005726 					TST	(SP)+
000330	006000 					ROR	R0
000332	103576 					BLO	20$
000334	000663 					BR	1$				;					4079
000336	032702  000100 			9$:	BIT	#100,R2				; *,DATA.TYPE				4083
000342	001041 					BNE	13$
000344	005266  000026 				INC	26(SP)				; PRM.PTR				4084
000350	016600  000026 				MOV	26(SP),R0			; PRM.PTR,*
000354	005001 					CLR	R1				; $$GETN.X
000356	156001  177777 				BISB	-1(R0),R1			; *,$$GETN.X
000362	010200 					MOV	R2,R0				; DATA.TYPE,*
000364	042700  177700 				BIC	#177700,R0
000370	072027  000003 				ASH	#3,R0
000374	010002 					MOV	R0,R2
000376	162702  000010 				SUB	#10,R2
000402	005004 					CLR	R4				; $$GETN.P
000404	000412 					BR	11$
000406	005266  000026 			10$:	INC	26(SP)				; PRM.PTR
000412	016600  000026 				MOV	26(SP),R0			; PRM.PTR,*
000416	114000 					MOVB	-(R0),R0
000420	042700  177400 				BIC	#177400,R0
000424	072004 					ASH	R4,R0				; $$GETN.P,*
000426	060100 					ADD	R1,R0				; $$GETN.X,*
000430	010001 					MOV	R0,R1				; *,$$GETN.X
000432	062704  000010 			11$:	ADD	#10,R4				; *,$$GETN.P
000436	020402 					CMP	R4,R2				; $$GETN.P,*
000440	003762 					BLE	10$
000442	010115 					MOV	R1,(R5)				; $$GETN.X,*
000444	000531 				12$:	BR	20$
000446	005703 				13$:	TST	R3				;					4087
000450	001004 					BNE	14$
000452	020127  000215 				CMP	R1,#215				;					4090
000456	001123 					BNE	19$
000460	000406 					BR	15$
000462	020327  000004 			14$:	CMP	R3,#4				;					4087
000466	001117 					BNE	19$
000470	020127  000500 				CMP	R1,#500				;					4098
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 138
X00.89		SET_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (38)

000474	001114 					BNE	19$
000476	005715 				15$:	TST	(R5)				;					4112
000500	001006 					BNE	16$
000502	012716  000012 				MOV	#12,(SP)			;					4113
000506	004767  000000G				JSR	PC,UM.GET
000512	010015 					MOV	R0,(R5)
000514	001664 					BEQ	6$				;					4114
000516	011502 				16$:	MOV	(R5),R2				; *,PTR					4116
000520	005266  000026 				INC	26(SP)				; PRM.PTR				4117
000524	016600  000026 				MOV	26(SP),R0			; PRM.PTR,*
000530	005001 					CLR	R1				; TEMP
000532	156001  177777 				BISB	-1(R0),R1			; *,TEMP
000536	005701 					TST	R1				; TEMP					4118
000540	001026 					BNE	17$
000542	005266  000026 				INC	26(SP)				; PRM.PTR				4120
000546	016600  000026 				MOV	26(SP),R0			; PRM.PTR,*
000552	116066  177777  000004 			MOVB	-1(R0),4(SP)			; *,$$GETB.X
000560	005266  000026 				INC	26(SP)				; PRM.PTR
000564	016600  000026 				MOV	26(SP),R0			; PRM.PTR,*
000570	116066  177777  000005 			MOVB	-1(R0),5(SP)			; *,$$GETB.X
000576	016601  000004 				MOV	4(SP),R1			; $$GETB.X,TEMP
000602	110122 					MOVB	R1,(R2)+			; TEMP,PTR				4121
000604	010100 					MOV	R1,R0				; TEMP,*
000606	000300 					SWAB	R0
000610	110022 					MOVB	R0,(R2)+			; *,PTR
000612	105022 					CLRB	(R2)+				; PTR					4122
000614	000415 					BR	18$				;					4118
000616	005000 				17$:	CLR	R0				; ADDR					4127
000620	105022 					CLRB	(R2)+				; PTR					4128
000622	005003 					CLR	R3
000624	000303 					SWAB	R3
000626	110322 					MOVB	R3,(R2)+			; *,PTR
000630	110122 					MOVB	R1,(R2)+			; TEMP,PTR				4129
000632	010116 					MOV	R1,(SP)				; TEMP,*				4130
000634	016646  000026 				MOV	26(SP),-(SP)			; PRM.PTR,*
000640	010246 					MOV	R2,-(SP)			; PTR,*
000642	004767  000000G				JSR	PC,BL$MOV
000646	022626 					CMP	(SP)+,(SP)+			;					4124
000650	011502 				18$:	MOV	(R5),R2				; *,PTR					4133
000652	012701  000011 				MOV	#11,R1				; *,TEMP				4134
000656	005046 					CLR	-(SP)				;					4141
000660	005046 					CLR	-(SP)
000662	005046 					CLR	-(SP)
000664	012746  000002 				MOV	#2,-(SP)
000670	010146 					MOV	R1,-(SP)			; TEMP,*
000672	010246 					MOV	R2,-(SP)			; PTR,*
000674	005046 					CLR	-(SP)
000676	012746  001112'				MOV	#IOSB,-(SP)
000702	012746  000000G				MOV	#EFN$NS,-(SP)
000706	012746  000000G				MOV	#LUN$NS,-(SP)
000712	012746  016670 				MOV	#16670,-(SP)
000716	012746  006003 				MOV	#6003,-(SP)
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 139
X00.89		SET_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (38)

000722	104377 					EMT	377
000724	000401 					BR	20$
000726	005015 				19$:	CLR	(R5)				;					4143
000730	022626 				20$:	CMP	(SP)+,(SP)+
000732	012700  000001 				MOV	#1,R0				;					4043
000736	000401 					BR	22$
000740	005000 				21$:	CLR	R0				;					4012
000742	005726 				22$:	TST	(SP)+
000744	000207 					RTS	PC
; Routine Size:  243 words,	Routine Base:  $CODE$ + 11306
; Maximum stack depth per invocation:  23 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 140
X00.89		SET_FILTER					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (39)

;	  4149	%routine ('SET_FILTER', FDB_QE, TYPE, BUF_PTR) =
;	  4150	
;	  4151	!++
;	  4152	! FUNCTIONAL DESCRIPTION:
;	  4153	!
;	  4154	!
;	  4155	! FORMAL PARAMETERS
;	  4156	!
;	  4157	!	NONE.
;	  4158	!
;	  4159	! IMPLICIT INPUTS
;	  4160	!
;	  4161	!	NONE.
;	  4162	!
;	  4163	! ROUTINE VALUE:
;	  4164	!
;	  4165	!	NONE.
;	  4166	!
;	  4167	! SIDE EFFECTS:
;	  4168	!
;	  4169	!	NONE.
;	  4170	!
;	  4171	!--
;	  4172	
;	  4173	    begin
;	  4174	
;	  4175	    TASK_INFO ('INTERNAL ERROR: SET_FILTER routine not coded');
;	  4176	
;	  4177	    return $FALSE;
;	  4178	    end;				! End of SET_FILTER


						.SBTTL	SET.FILTER SET_FILTER
000000	005000 				SET.FILTER:
						CLR	R0				;					4173
000002	000207 					RTS	PC				;					4149
; Routine Size:  2 words,	Routine Base:  $CODE$ + 12254
; Maximum stack depth per invocation:  0 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 141
X00.89		SET_IMAGE_FIELD					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (40)

;	  4179	%routine ('SET_IMAGE_FIELD', ADDR, PTR) =
;	  4180	
;	  4181	!++
;	  4182	! FUNCTIONAL DESCRIPTION:
;	  4183	!
;	  4184	!	Sets an image field in the parameter data base.
;	  4185	!
;	  4186	! FORMAL PARAMETERS
;	  4187	!
;	  4188	!	ADDR - The address within the parameter data base vector which
;	  4189	!              contains the address of the dynamically allocated storage
;	  4190	!              which contains the image string. If zero a block will be
;	  4191	!              allocated.
;	  4192	!
;	  4193	!	PTR  - A pointer to the image field to be set in the data base.
;	  4194	!
;	  4195	! IMPLICIT INPUTS
;	  4196	!
;	  4197	!	NONE.
;	  4198	!
;	  4199	! ROUTINE VALUE:
;	  4200	!
;	  4201	!	NONE.
;	  4202	!
;	  4203	! SIDE EFFECTS:
;	  4204	!
;	  4205	!	NONE.
;	  4206	!
;	  4207	!--
;	  4208	
;	  4209	    begin
;	  4210	
;	  4211	    local
;	  4212	         XLEN,
;	  4213	         TLEN;
;	  4214	
;	  4215	    TLEN = ch$rchar(.PTR) + 1;
;	  4216	
;	  4217	    if ..ADDR eql 0
;	  4218	    then .ADDR = NMU$MEMORY_GET ((ch$allocation (.TLEN,8) * %upval))
;	  4219	    else if .TLEN neq (XLEN = ch$rchar (ch$ptr (..ADDR,,8)) + 1)
;	  4220	         then begin
;	  4221	              NMU$MEMORY_RELEASE (..ADDR, (ch$allocation (.XLEN,8) * %upval));
;	  4222	              .ADDR = NMU$MEMORY_GET ((ch$allocation (.TLEN,8) * %upval));
;	  4223	              end;
;	  4224	
;	  4225	    if ..ADDR eql 0
;	  4226	    then return $FALSE;
;	  4227	
;	  4228	    ch$move (.TLEN, .PTR, ch$ptr (..ADDR,,8));
;	  4229	
;	  4230	    return $TRUE;
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 142
X00.89		SET_IMAGE_FIELD					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (40)

;	  4231	    end;				! End of SET_IMAGE_FIELD


						.SBTTL	SET.IMAGE.FIELD SET_IMAGE_FIELD
000000	004167  000000G			SET.IMAGE.FIELD:
						JSR	R1,$SAVE3			;					4179
000004	005002 					CLR	R2				; TLEN					4215
000006	157602  000012 				BISB	@12(SP),R2			; PTR,TLEN
000012	005202 					INC	R2				; TLEN
000014	016603  000014 				MOV	14(SP),R3			; ADDR,*				4217
000020	011300 					MOV	(R3),R0
000022	001015 					BNE	1$
000024	010200 					MOV	R2,R0				; TLEN,*				4218
000026	005200 					INC	R0
000030	010001 					MOV	R0,R1
000032	006700 					SXT	R0
000034	071027  000002 				DIV	#2,R0
000040	010046 					MOV	R0,-(SP)
000042	006316 					ASL	(SP)
000044	004767  000000G				JSR	PC,UM.GET
000050	010013 					MOV	R0,(R3)
000052	005726 					TST	(SP)+
000054	000434 					BR	2$				;					4217
000056	005000 				1$:	CLR	R0				; XLEN					4219
000060	157300  000000 				BISB	@0(R3),R0			; *,XLEN
000064	005200 					INC	R0				; XLEN
000066	020200 					CMP	R2,R0				; TLEN,XLEN
000070	001426 					BEQ	2$
000072	011346 					MOV	(R3),-(SP)			;					4221
000074	005200 					INC	R0				; XLEN
000076	010001 					MOV	R0,R1
000100	006700 					SXT	R0
000102	071027  000002 				DIV	#2,R0
000106	010046 					MOV	R0,-(SP)
000110	006316 					ASL	(SP)
000112	004767  000000G				JSR	PC,UM.RELEASE
000116	010200 					MOV	R2,R0				; TLEN,*				4222
000120	005200 					INC	R0
000122	010001 					MOV	R0,R1
000124	006700 					SXT	R0
000126	071027  000002 				DIV	#2,R0
000132	010016 					MOV	R0,(SP)
000134	006316 					ASL	(SP)
000136	004767  000000G				JSR	PC,UM.GET
000142	010013 					MOV	R0,(R3)
000144	022626 					CMP	(SP)+,(SP)+			;					4220
000146	005713 				2$:	TST	(R3)				;					4225
000150	001413 					BEQ	3$				;					4226
000152	010246 					MOV	R2,-(SP)			; TLEN,*				4228
000154	016646  000014 				MOV	14(SP),-(SP)			; PTR,*
000160	011346 					MOV	(R3),-(SP)
000162	004767  000000G				JSR	PC,BL$MOV
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 143
X00.89		SET_IMAGE_FIELD					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (40)

000166	062706  000006 				ADD	#6,SP				;					4179
000172	012700  000001 				MOV	#1,R0				;					4209
000176	000207 					RTS	PC
000200	005000 				3$:	CLR	R0				;					4179
000202	000207 					RTS	PC
; Routine Size:  66 words,	Routine Base:  $CODE$ + 12260
; Maximum stack depth per invocation:  8 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 144
X00.89		CLEAR_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (41)

;	  4232	%routine ('CLEAR_PARAMETER_DATA', ENTITY_TYPE, PVB_QE) : novalue =
;	  4233	
;	  4234	!++
;	  4235	! FUNCTIONAL DESCRIPTION:
;	  4236	!
;	  4237	!	Clears the data for a parameter in the parameter vector block.
;	  4238	!       The data stored is dependent on the type of data for the 
;	  4239	!       parameter. For coded and binary value parameters the data is
;	  4240	!       cleared to zero. For image fields the address of a dynamically
;	  4241	!       allocated block containing the image field is used to release
;	  4242	!       the storage containing the image field. The address is then set
;	  4243	!       to zero.
;	  4244	!
;	  4245	! FORMAL PARAMETERS
;	  4246	!
;	  4247	!	ENTITY_TYPE - Entity type number.
;	  4248	!       PVB_QE      - Address of Parameter Vector Block Queue Entry.
;	  4249	!
;	  4250	! IMPLICIT INPUTS
;	  4251	!
;	  4252	!	NONE.
;	  4253	!
;	  4254	! ROUTINE VALUE:
;	  4255	!
;	  4256	!	NONE.
;	  4257	!
;	  4258	! SIDE EFFECTS:
;	  4259	!
;	  4260	!	NONE.
;	  4261	!
;	  4262	!--
;	  4263	
;	  4264	    begin
;	  4265	
;	  4266	    map
;	  4267	       PVB_QE: ref $NML$PVB_ENTRY_BLOCK;
;	  4268	
;	  4269	    local
;	  4270	         DATA_TYPE: block [1] field (DATA_TYPE_FIELDS);
;	  4271	
;	  4272	    DATA_TYPE = NML$GET_PDB_DATA_TYPE (.ENTITY_TYPE, .PVB_QE[PE_NUMBER]);
;	  4273	
;	  4274	    if .DATA_TYPE[DT_CODED] eql 0       ! Not coded
;	  4275	    then begin
;	  4276	         if .DATA_TYPE[DT_FTYPE] eql 0  ! Binary number
;	  4277	         then begin
;	  4278	              if .DATA_TYPE[DT_LENGTH] eql 0
;	  4279	              then begin                ! Image binary
;	  4280	                   bind L = ch$rchar (ch$ptr (.PVB_QE[PE_ADDRESS],,8)) + 1,
;	  4281	                        A = ch$allocation (L,8) * %upval;
;	  4282	
;	  4283	                   NMU$MEMORY_RELEASE (.PVB_QE[PE_ADDRESS], A);
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 145
X00.89		CLEAR_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (41)

;	  4284	                   PVB_QE[PE_ADDRESS] = 0;
;	  4285	                   end
;	  4286	              else begin
;	  4287	                   if .DATA_TYPE[DT_LENGTH] leq %bpval/8
;	  4288	                   then PVB_QE[PE_DATA] = 0 
;	  4289	                   else begin
;	  4290	                        bind L = .DATA_TYPE[DT_LENGTH],
;	  4291	                             A = ch$allocation (L,8) * %upval;
;	  4292	
;	  4293	                        NMU$MEMORY_RELEASE (.PVB_QE[PE_ADDRESS], A);
;	  4294	                        PVB_QE[PE_ADDRESS] = 0;
;	  4295	                        end;
;	  4296	                   end;
;	  4297	              end
;	  4298	         else begin                     ! ASCII image field
;	  4299	              bind L = ch$rchar (ch$ptr (.PVB_QE[PE_ADDRESS],,8)) + 1,
;	  4300	                   A = ch$allocation (L,8) * %upval;
;	  4301	
;	  4302	              NMU$MEMORY_RELEASE (.PVB_QE[PE_ADDRESS], A);
;	  4303	              PVB_QE[PE_ADDRESS] = 0;
;	  4304	              end;
;	  4305	         end
;	  4306	    else begin                          ! Coded
;	  4307	
;	C 4308	         %( N.B. - Do special casing here just like in SET_PARAMETER_DATA.
;	  4309	            Else we gonna mess up storage allocation. )%
;	  4310	
;	  4311	         if .DATA_TYPE[DT_FTYPE] eql 0  ! Single field
;	  4312	         then PVB_QE[PE_DATA] = 0
;	  4313	         else begin                     ! Multiple field
;	  4314	              if (.ENTITY_TYPE eql NODE_E) ! Special cases for HOST
;	  4315	              and (.PVB_QE[PE_NUMBER] eql 141)
;	  4316	              then NMU$MEMORY_RELEASE (.PVB_QE[PE_ADDRESS], NODE_ID_BUFFER_ALLOCATION)
;	  4317	              else PVB_QE[PE_ADDRESS] = 0; ! Unknown multiple parameter
;	  4318	              end;
;	  4319	         end;
;	  4320	
;	  4321	    end;				! End of CLEAR_PARAMETER_DATA


						.SBTTL	CLEAR.PARAMETER.DATA CLEAR_PARAMETER_DATA
000000	004167  000000G			CLEAR.PARAMETER.DATA:
						JSR	R1,$SAVE2			;					4232
000004	016646  000012 				MOV	12(SP),-(SP)			; ENTITY.TYPE,*				4272
000010	017646  000012 				MOV	@12(SP),-(SP)			; PVB.QE,*
000014	004767  000000G				JSR	PC,NL.PDT
000020	010001 					MOV	R0,R1				; *,DATA.TYPE
000022	016600  000014 				MOV	14(SP),R0			; PVB.QE,*				4280
000026	012702  000002 				MOV	#2,R2
000032	060002 					ADD	R0,R2
000034	032701  000200 				BIT	#200,R1				; *,DATA.TYPE				4274
000040	001057 					BNE	4$
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 146
X00.89		CLEAR_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (41)

000042	032701  000100 				BIT	#100,R1				; *,DATA.TYPE				4276
000046	001034 					BNE	2$
000050	032701  000017 				BIT	#17,R1				; *,DATA.TYPE				4278
000054	001012 					BNE	1$
000056	005000 					CLR	R0				;					4280
000060	157200  000000 				BISB	@0(R2),R0
000064	062700  000002 				ADD	#2,R0				;					4281
000070	010001 					MOV	R0,R1
000072	006700 					SXT	R0
000074	071027  000002 				DIV	#2,R0
000100	000430 					BR	3$
000102	010100 				1$:	MOV	R1,R0				; DATA.TYPE,*				4287
000104	042700  177760 				BIC	#177760,R0
000110	020027  000002 				CMP	R0,#2
000114	101452 					BLOS	6$				;					4288
000116	010100 					MOV	R1,R0				; DATA.TYPE,*				4291
000120	042700  177760 				BIC	#177760,R0
000124	005200 					INC	R0
000126	010001 					MOV	R0,R1
000130	006700 					SXT	R0
000132	071027  000002 				DIV	#2,R0
000136	000411 					BR	3$
000140	005000 				2$:	CLR	R0				;					4299
000142	157200  000000 				BISB	@0(R2),R0
000146	062700  000002 				ADD	#2,R0				;					4300
000152	010001 					MOV	R0,R1
000154	006700 					SXT	R0
000156	071027  000002 				DIV	#2,R0
000162	006300 				3$:	ASL	R0
000164	011216 					MOV	(R2),(SP)			;					4302
000166	010046 					MOV	R0,-(SP)
000170	004767  000000G				JSR	PC,UM.RELEASE
000174	005012 					CLR	(R2)				;					4303
000176	000417 					BR	5$				;					4298
000200	032701  000100 			4$:	BIT	#100,R1				; *,DATA.TYPE				4311
000204	001416 					BEQ	6$				;					4312
000206	005766  000016 				TST	16(SP)				; ENTITY.TYPE				4314
000212	001013 					BNE	6$
000214	027627  000014  000215 			CMP	@14(SP),#215			; PVB.QE,*				4315
000222	001007 					BNE	6$
000224	011216 					MOV	(R2),(SP)			;					4316
000226	012746  000012 				MOV	#12,-(SP)
000232	004767  000000G				JSR	PC,UM.RELEASE
000236	005726 				5$:	TST	(SP)+
000240	000401 					BR	7$				;					4314
000242	005012 				6$:	CLR	(R2)				;					4317
000244	022626 				7$:	CMP	(SP)+,(SP)+			;					4264
000246	000207 					RTS	PC				;					4232
; Routine Size:  84 words,	Routine Base:  $CODE$ + 12464
; Maximum stack depth per invocation:  7 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 147
X00.89		CLEAR_FILTER					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (42)

;	  4322	%routine ('CLEAR_FILTER', FDB_QE, TYPE, PARM_NO) =
;	  4323	
;	  4324	!++
;	  4325	! FUNCTIONAL DESCRIPTION:
;	  4326	!
;	  4327	!
;	  4328	! FORMAL PARAMETERS
;	  4329	!
;	  4330	!	NONE.
;	  4331	!
;	  4332	! IMPLICIT INPUTS
;	  4333	!
;	  4334	!	NONE.
;	  4335	!
;	  4336	! ROUTINE VALUE:
;	  4337	!
;	  4338	!	NONE.
;	  4339	!
;	  4340	! SIDE EFFECTS:
;	  4341	!
;	  4342	!	NONE.
;	  4343	!
;	  4344	!--
;	  4345	
;	  4346	    begin
;	  4347	
;	  4348	    TASK_INFO ('INTERNAL ERROR: CLEAR_FILTER routine not coded');
;	  4349	
;	  4350	    return $FALSE;
;	  4351	    end;				! End of CLEAR_FILTER


						.SBTTL	CLEAR.FILTER CLEAR_FILTER
000000	005000 				CLEAR.FILTER:
						CLR	R0				;					4346
000002	000207 					RTS	PC				;					4322
; Routine Size:  2 words,	Routine Base:  $CODE$ + 12734
; Maximum stack depth per invocation:  0 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 148
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

;	  4352	%routine ('READ_PARAMETER_DATA', ENTITY_TYPE, ENTRY, LENGTH, POINTER) =
;	  4353	
;	  4354	!++
;	  4355	! FUNCTIONAL DESCRIPTION:
;	  4356	!
;	  4357	!	Reads the data portion of a volatile data base parameter
;	  4358	!       into the parameter buffer.
;	  4359	!
;	  4360	! FORMAL PARAMETERS
;	  4361	!
;	  4362	!	ENTITY_TYPE     Entity type number.
;	  4363	!	ENTRY           The address of the parameter vector block entry
;	  4364	!                       for this parameter.
;	  4365	!       LENGTH          The length of the buffer remaining.
;	  4366	!       POINTER         The address of a character sequence pointer to the
;	  4367	!                       buffer.
;	  4368	!
;	  4369	! IMPLICIT INPUTS
;	  4370	!
;	  4371	!	NONE.
;	  4372	!
;	  4373	! ROUTINE VALUE:
;	  4374	!
;	  4375	!	The number of bytes for this parameter excluding data id
;	  4376	!	and datatype bytes.  
;	  4377	!
;	  4378	! SIDE EFFECTS:
;	  4379	!
;	  4380	!	If the parameter will fit in the buffer, it is copied into
;	  4381	!	the buffer.
;	  4382	!
;	  4383	!--
;	  4384	
;	  4385	    begin
;	  4386	
;	  4387	    macro
;	M 4388	         PUTN (VALUE, PTR_ADR, N) =
;	M 4389	             begin
;	M 4390	             local L, X;
;	M 4391	
;	M 4392	             X = VALUE;
;	M 4393	             ch$wchar_a (.X, PTR_ADR);
;	M 4394	             incr L from 256 to ((N - 1) * 256) by 256
;	M 4395	             do begin
;	M 4396	                X = .X / .L;
;	M 4397	                ch$wchar_a (.X, PTR_ADR);
;	M 4398	                end;
;	M 4399	
;	M 4400	             .L / 256
;	  4401	             end %;
;	  4402	
;	  4403	    map
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 149
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

;	  4404	       ENTRY: ref $NML$PVB_ENTRY_BLOCK;
;	  4405	
;	  4406	    local
;	  4407	         BUF_PTR,
;	  4408	         BUF_LEN,
;	  4409	         DATA_ID: block [1] field (DATA_ID_FIELDS), ! Data ID 
;	  4410	         DATA_TYPE: block [1] field (DATA_TYPE_FIELDS);
;	  4411	
;	  4412	    BUF_PTR = ..POINTER;
;	  4413	    DATA_ID = 0;
;	  4414	    DATA_ID[DI_PARMNO] = .ENTRY[PE_NUMBER]; ! Get parameter number
;	  4415	    DATA_ID[DI_TYPE] = 0;               ! This is a parameter
;	  4416	    DATA_TYPE = NML$GET_PDB_DATA_TYPE (.ENTITY_TYPE, .ENTRY[PE_NUMBER]);
;	  4417	
;	  4418	    if .DATA_TYPE[DT_CODED] eql 0       ! Not coded
;	  4419	    then begin
;	  4420	         PUTW (DATA_ID, BUF_PTR);       ! Write data id into buffer
;	  4421	         PUTB (.DATA_TYPE, BUF_PTR);    ! Write data type into buffer
;	  4422	         if .DATA_TYPE[DT_FTYPE] eql 0  ! Binary number
;	  4423	         then begin
;	  4424	              if .DATA_TYPE[DT_LENGTH] eql 0
;	  4425	              then begin                ! Binary image field
;	  4426	                   BUF_LEN = ch$rchar (ch$ptr (.ENTRY[PE_ADDRESS],,8)) + 1;
;	  4427	                   if .LENGTH geq .BUF_LEN
;	  4428	                   then BUF_PTR = ch$move (.BUF_LEN,
;	  4429	                                           ch$ptr (.ENTRY[PE_ADDRESS],,8),
;	  4430	                                           .BUF_PTR);
;	  4431	                   end
;	  4432	              else begin
;	  4433	                   BUF_LEN = .DATA_TYPE[DT_LENGTH];
;	  4434	                   if .DATA_TYPE[DT_LENGTH] leq %bpval/8
;	  4435	                   then begin           ! Data stored in value
;	  4436	                        if .LENGTH geq .BUF_LEN
;	P 4437	                        then PUTN (.ENTRY[PE_DATA],
;	P 4438	                                   BUF_PTR,
;	  4439	                                   .DATA_TYPE[DT_LENGTH]);
;	  4440	                        end
;	  4441	                   else begin           ! Data stored in buffer
;	  4442	                        BUF_LEN = .DATA_TYPE[DT_LENGTH];
;	  4443	                        if .LENGTH geq .BUF_LEN
;	  4444	                        then BUF_PTR = ch$move (.BUF_LEN,
;	  4445	                                                ch$ptr (.ENTRY[PE_ADDRESS],,8),
;	  4446	                                                .BUF_PTR);
;	  4447	                        end;
;	  4448	                   end;
;	  4449	              end
;	  4450	         else begin                     ! ASCII image field
;	  4451	              BUF_LEN = ch$rchar (ch$ptr (.ENTRY[PE_ADDRESS],,8)) + 1;
;	  4452	              if .LENGTH geq .BUF_LEN
;	  4453	              then BUF_PTR = ch$move (.BUF_LEN,
;	  4454	                                      ch$ptr (.ENTRY[PE_ADDRESS],,8),
;	  4455	                                      .BUF_PTR);
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 150
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

;	  4456	              end;
;	  4457	         end
;	  4458	    else begin                          ! Coded
;	  4459	
;	C 4460	         %( N.B. - We have to do special casing here for multiple coded
;	  4461	            fields. )%
;	  4462	
;	  4463	         if .DATA_TYPE[DT_FTYPE] eql 0  ! Single field
;	  4464	         then begin
;	  4465	              PUTW (DATA_ID, BUF_PTR);  ! Write data id into buffer
;	  4466	              PUTB (.DATA_TYPE, BUF_PTR); ! Write data type into buffer
;	  4467	              BUF_LEN = .DATA_TYPE[DT_NUMBER];
;	  4468	              if .LENGTH geq .BUF_LEN
;	  4469	              then PUTN (.ENTRY[PE_DATA], BUF_PTR, .DATA_TYPE[DT_NUMBER]);
;	  4470	              end
;	  4471	         else begin                     ! Multiple field
;	  4472	              literal
;	  4473	                  DATA_NODE_ID = 1,
;	  4474	                  DATA_VERSION = 2,
;	  4475	                  DATA_EVENTS = 3;
;	  4476	
;	  4477	              selectone
;	  4478	                  begin
;	  4479	                  selectone .ENTITY_TYPE of
;	  4480	                      set
;	  4481	                      [NODE_E]:
;	  4482	                          selectone .ENTRY[PE_NUMBER] of
;	  4483	                              set
;	  4484	                              [141]:    ! HOST
;	  4485	                                  begin
;	  4486	                                  DATA_ID = .DATA_ID - 1; ! Read # 140
;	  4487	                                  DATA_NODE_ID
;	  4488	                                  end;
;	  4489	                              [101]:    ! MANAGEMENT VERSION
;	  4490	                                  DATA_VERSION;
;	  4491	                              [otherwise]:
;	  4492	                                  0;
;	  4493	                              tes;
;	  4494	
;	  4495	                      [LOGGING_]:
;	  4496	                          selectone .ENTRY[PE_NUMBER] of
;	  4497	                              set
;	  4498	                              [200]:    ! SINK NODE
;	  4499	                                  DATA_NODE_ID;
;	  4500	                              [201]:    ! EVENTS
;	  4501	                                  DATA_EVENTS;
;	  4502	                              [otherwise]:
;	  4503	                                  0;
;	  4504	                              tes;
;	  4505	
;	L 4506	                      %if $X25
;	U 4507	                      %then
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 151
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

;	U 4508	
;	U 4509	                      [MODULE_]:
;	U 4510	                          selectone .ENTRY[PE_NUMBER] of
;	U 4511	                              set
;	U 4512	                              [320]:    ! NODE
;	U 4513	                                  DATA_NODE_ID;
;	U 4514	                              [otherwise]:
;	U 4515	                                  0;
;	U 4516	                              tes;
;	U 4517	
;	  4518	                      %fi
;	  4519	
;	  4520	                      [otherwise]:
;	  4521	                          0;
;	  4522	                      tes
;	  4523	                  end of
;	  4524	                  set
;	  4525	                  [DATA_NODE_ID] :      ! Node identification
;	  4526	                      begin
;	  4527	                      local PTR;
;	  4528	
;	  4529	                      PTR = ch$ptr (.ENTRY[PE_ADDRESS],,8);
;	  4530	                      PUTW (DATA_ID, BUF_PTR); ! Write data id 
;	  4531	                      PUTB (.DATA_TYPE, BUF_PTR); ! Write data type 
;	  4532	
;	  4533	                      BUF_LEN = 6 + 5;	! Assume node name of 6 chars
;	  4534	                      if .LENGTH geq .BUF_LEN
;	  4535	                      then
;	  4536	                        begin
;	  4537	                        !
;	  4538	                        ! Node address
;	  4539	                        !
;	  4540	
;	  4541	                          begin
;	  4542	                          literal DATA_TYPE = 0^7 + 0^6 + 0^4 + 2;
;	  4543	                          local NODE_ADDRESS;
;	  4544	
;	  4545	                          NODE_ADDRESS = GETW (PTR);
;	  4546	                          PUTB (DATA_TYPE, BUF_PTR); ! Write Data Type
;	  4547	                          PUTW (NODE_ADDRESS, BUF_PTR); ! Write address
;	  4548	                          end;
;	  4549	
;	  4550	                        !
;	  4551	                        ! Node name
;	  4552	                        !
;	  4553	
;	  4554	                          begin
;	  4555	                          literal DATA_TYPE = 0^7 + 1^6;
;	  4556	                          local NODE_NAME_LENGTH;
;	  4557	
;	  4558	                          PUTB (DATA_TYPE, BUF_PTR); ! Write Data Type
;	  4559	                          NODE_NAME_LENGTH = GETB (PTR); ! Get I-length
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 152
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

;	  4560	                          PUTB (.NODE_NAME_LENGTH, BUF_PTR);
;	  4561	                          BUF_PTR = ch$move (.NODE_NAME_LENGTH,
;	  4562	                                             .PTR,
;	  4563	                                             .BUF_PTR);
;	  4564	                          BUF_LEN = .NODE_NAME_LENGTH + 5; ! Real length
;	  4565	                          end;
;	  4566	                        end;
;	  4567	                      end;
;	  4568	
;	  4569	                  [DATA_VERSION] :      ! Version number
;	  4570	                      begin
;	  4571	                      external          ! Version numbers defined in NMUSKD
;	  4572	                          NMLVER,       ! Major version
;	  4573	                          DECECO,       ! Minor version
;	  4574	                          USRECO;       ! Customer version
;	  4575	
;	  4576	                      PUTW (DATA_ID, BUF_PTR); ! Write data id 
;	  4577	                      PUTB (.DATA_TYPE, BUF_PTR); ! Write data type 
;	  4578	                      BUF_LEN = 6;      ! Six bytes to write excluding
;	  4579	                                        ! data id and data type bytes
;	  4580	
;	  4581	                      if .LENGTH geq .BUF_LEN
;	  4582	                      then
;	  4583	                          begin
;	  4584	                          literal DATA_TYPE = 0^7 + 0^6 + 0^4 + 1;
;	  4585	
;	  4586	                          PUTB (DATA_TYPE, BUF_PTR); ! Write Data Type
;	  4587	                          PUTB (.NMLVER, BUF_PTR); ! Write version byte
;	  4588	                          PUTB (DATA_TYPE, BUF_PTR); ! Write Data Type
;	  4589	                          PUTB (.DECECO, BUF_PTR); ! Write version byte
;	  4590	                          PUTB (DATA_TYPE, BUF_PTR); ! Write Data Type
;	  4591	                          PUTB (.USRECO, BUF_PTR); ! Write version byte
;	  4592	                          end;
;	  4593	
;	  4594	                      end;
;	  4595	
;	  4596	                  [otherwise] :
;	  4597	                      BUF_LEN = 0;      ! Unknown multiple parameter
;	  4598	                  tes;
;	  4599	              end;
;	  4600	         end;
;	  4601	
;	  4602	    .POINTER = .BUF_PTR;
;	  4603	
;	  4604	    return .BUF_LEN;                    ! Return number of bytes written
;	  4605	    end;				! End of READ_PARAMETER_DATA


						.GLOBL	DECECO, USRECO


						.SBTTL	READ.PARAMETER.DATA READ_PARAMETER_DATA
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 153
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

000000	004167  000000G			READ.PARAMETER.DATA:
						JSR	R1,$SAVE5			;					4352
000004	005746 					TST	-(SP)
000006	017646  000020 				MOV	@20(SP),-(SP)			; POINTER,BUF.PTR			4412
000012	005002 					CLR	R2				; DATA.ID				4413
000014	016605  000026 				MOV	26(SP),R5			; ENTRY,*				4414
000020	011500 					MOV	(R5),R0
000022	042700  170000 				BIC	#170000,R0
000026	042702  007777 				BIC	#7777,R2			; *,DATA.ID
000032	050002 					BIS	R0,R2				; *,DATA.ID
000034	042702  100000 				BIC	#100000,R2			; *,DATA.ID				4415
000040	016603  000030 				MOV	30(SP),R3			; ENTITY.TYPE,*				4416
000044	010346 					MOV	R3,-(SP)
000046	011546 					MOV	(R5),-(SP)
000050	004767  000000G				JSR	PC,NL.PDT
000054	010001 					MOV	R0,R1				; *,DATA.TYPE
000056	032701  000200 				BIT	#200,R1				; *,DATA.TYPE				4418
000062	001134 					BNE	7$
000064	110276  000004 				MOVB	R2,@4(SP)			; DATA.ID,BUF.PTR			4420
000070	005266  000004 				INC	4(SP)				; BUF.PTR
000074	010200 					MOV	R2,R0				; DATA.ID,*
000076	000300 					SWAB	R0
000100	110076  000004 				MOVB	R0,@4(SP)			; *,BUF.PTR
000104	005266  000004 				INC	4(SP)				; BUF.PTR
000110	110176  000004 				MOVB	R1,@4(SP)			; DATA.TYPE,BUF.PTR			4421
000114	005266  000004 				INC	4(SP)				; BUF.PTR
000120	016600  000030 				MOV	30(SP),R0			; LENGTH,*				4427
000124	032701  000100 				BIT	#100,R1				; *,DATA.TYPE				4422
000130	001070 					BNE	5$
000132	032701  000017 				BIT	#17,R1				; *,DATA.TYPE				4424
000136	001007 					BNE	1$
000140	005003 					CLR	R3				; BUF.LEN				4426
000142	157503  000002 				BISB	@2(R5),R3			; *,BUF.LEN
000146	005203 					INC	R3				; BUF.LEN
000150	020003 					CMP	R0,R3				; *,BUF.LEN				4427
000152	002563 					BLT	10$
000154	000464 					BR	6$				;					4430
000156	010103 				1$:	MOV	R1,R3				; DATA.TYPE,BUF.LEN			4433
000160	042703  177760 				BIC	#177760,R3			; *,BUF.LEN
000164	010102 					MOV	R1,R2				; DATA.TYPE,*				4434
000166	042702  177760 				BIC	#177760,R2
000172	020227  000002 				CMP	R2,#2
000176	101037 					BHI	4$
000200	020003 					CMP	R0,R3				; *,BUF.LEN				4436
000202	002547 					BLT	10$
000204	016504  000002 				MOV	2(R5),R4			; *,X					4439
000210	110476  000004 				MOVB	R4,@4(SP)			; X,BUF.PTR
000214	005266  000004 				INC	4(SP)				; BUF.PTR
000220	010100 					MOV	R1,R0				; DATA.TYPE,*
000222	042700  177760 				BIC	#177760,R0
000226	072027  000010 				ASH	#10,R0
000232	010005 					MOV	R0,R5
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 154
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

000234	162705  000400 				SUB	#400,R5
000240	005002 					CLR	R2				; L
000242	000410 					BR	3$
000244	010401 				2$:	MOV	R4,R1				; X,*
000246	006700 					SXT	R0
000250	071002 					DIV	R2,R0				; L,*
000252	010004 					MOV	R0,R4				; *,X
000254	110476  000004 				MOVB	R4,@4(SP)			; X,BUF.PTR
000260	005266  000004 				INC	4(SP)				; BUF.PTR
000264	062702  000400 			3$:	ADD	#400,R2				; *,L
000270	020205 					CMP	R2,R5				; L,*
000272	003764 					BLE	2$
000274	000512 					BR	10$				;					4434
000276	010103 				4$:	MOV	R1,R3				; DATA.TYPE,BUF.LEN			4442
000300	042703  177760 				BIC	#177760,R3			; *,BUF.LEN
000304	020003 					CMP	R0,R3				; *,BUF.LEN				4443
000306	002572 					BLT	18$
000310	000406 					BR	6$				;					4446
000312	005003 				5$:	CLR	R3				; BUF.LEN				4451
000314	157503  000002 				BISB	@2(R5),R3			; *,BUF.LEN
000320	005203 					INC	R3				; BUF.LEN
000322	020003 					CMP	R0,R3				; *,BUF.LEN				4452
000324	002563 					BLT	18$
000326	010316 				6$:	MOV	R3,(SP)				; BUF.LEN,*				4455
000330	016546  000002 				MOV	2(R5),-(SP)
000334	016646  000006 				MOV	6(SP),-(SP)			; BUF.PTR,*
000340	004767  000000G				JSR	PC,BL$MOV
000344	010066  000010 				MOV	R0,10(SP)			; *,BUF.PTR				4453
000350	000167  000450 				JMP	19$
000354	032701  000100 			7$:	BIT	#100,R1				; *,DATA.TYPE				4463
000360	001061 					BNE	11$
000362	110276  000004 				MOVB	R2,@4(SP)			; DATA.ID,BUF.PTR			4465
000366	005266  000004 				INC	4(SP)				; BUF.PTR
000372	010200 					MOV	R2,R0				; DATA.ID,*
000374	000300 					SWAB	R0
000376	110076  000004 				MOVB	R0,@4(SP)			; *,BUF.PTR
000402	005266  000004 				INC	4(SP)				; BUF.PTR
000406	110176  000004 				MOVB	R1,@4(SP)			; DATA.TYPE,BUF.PTR			4466
000412	005266  000004 				INC	4(SP)				; BUF.PTR
000416	010103 					MOV	R1,R3				; DATA.TYPE,BUF.LEN			4467
000420	042703  177700 				BIC	#177700,R3			; *,BUF.LEN
000424	026603  000030 				CMP	30(SP),R3			; LENGTH,BUF.LEN			4468
000430	002576 					BLT	20$
000432	016504  000002 				MOV	2(R5),R4			; *,X					4469
000436	110476  000004 				MOVB	R4,@4(SP)			; X,BUF.PTR
000442	005266  000004 				INC	4(SP)				; BUF.PTR
000446	010100 					MOV	R1,R0				; DATA.TYPE,*
000450	042700  177700 				BIC	#177700,R0
000454	072027  000010 				ASH	#10,R0
000460	010005 					MOV	R0,R5
000462	162705  000400 				SUB	#400,R5
000466	005002 					CLR	R2				; L
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 155
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

000470	000410 					BR	9$
000472	010401 				8$:	MOV	R4,R1				; X,*
000474	006700 					SXT	R0
000476	071002 					DIV	R2,R0				; L,*
000500	010004 					MOV	R0,R4				; *,X
000502	110476  000004 				MOVB	R4,@4(SP)			; X,BUF.PTR
000506	005266  000004 				INC	4(SP)				; BUF.PTR
000512	062702  000400 			9$:	ADD	#400,R2				; *,L
000516	020205 					CMP	R2,R5				; L,*
000520	003764 					BLE	8$
000522	000541 				10$:	BR	20$				;					4463
000524	005703 				11$:	TST	R3				;					4479
000526	001013 					BNE	13$
000530	021527  000215 				CMP	(R5),#215			;					4482
000534	001002 					BNE	12$
000536	005302 					DEC	R2				; DATA.ID				4486
000540	000414 					BR	14$				;					4482
000542	021527  000145 			12$:	CMP	(R5),#145
000546	001022 					BNE	16$
000550	012700  000002 				MOV	#2,R0
000554	000420 					BR	17$
000556	020327  000002 			13$:	CMP	R3,#2				;					4479
000562	001014 					BNE	16$
000564	021527  000310 				CMP	(R5),#310			;					4496
000570	001003 					BNE	15$
000572	012700  000001 			14$:	MOV	#1,R0
000576	000407 					BR	17$
000600	021527  000311 			15$:	CMP	(R5),#311
000604	001003 					BNE	16$
000606	012700  000003 				MOV	#3,R0
000612	000401 					BR	17$
000614	005000 				16$:	CLR	R0				;					4478
000616	020027  000001 			17$:	CMP	R0,#1				;					4477
000622	001102 					BNE	21$
000624	016505  000002 				MOV	2(R5),R5			; *,PTR					4529
000630	110276  000004 				MOVB	R2,@4(SP)			; DATA.ID,BUF.PTR			4530
000634	005266  000004 				INC	4(SP)				; BUF.PTR
000640	010200 					MOV	R2,R0				; DATA.ID,*
000642	000300 					SWAB	R0
000644	110076  000004 				MOVB	R0,@4(SP)			; *,BUF.PTR
000650	005266  000004 				INC	4(SP)				; BUF.PTR
000654	110176  000004 				MOVB	R1,@4(SP)			; DATA.TYPE,BUF.PTR			4531
000660	005266  000004 				INC	4(SP)				; BUF.PTR
000664	012703  000013 				MOV	#13,R3				; *,BUF.LEN				4533
000670	026603  000030 				CMP	30(SP),R3			; LENGTH,BUF.LEN			4534
000674	002543 				18$:	BLT	23$
000676	112566  000006 				MOVB	(R5)+,6(SP)			; PTR,$$GETB.X				4545
000702	112566  000007 				MOVB	(R5)+,7(SP)			; PTR,$$GETB.X
000706	016600  000006 				MOV	6(SP),R0			; $$GETB.X,NODE.ADDRESS
000712	112776  000002  000004 			MOVB	#2,@4(SP)			; *,BUF.PTR				4546
000720	005266  000004 				INC	4(SP)				; BUF.PTR
000724	110076  000004 				MOVB	R0,@4(SP)			; NODE.ADDRESS,BUF.PTR			4547
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 156
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

000730	005266  000004 				INC	4(SP)				; BUF.PTR
000734	010001 					MOV	R0,R1				; NODE.ADDRESS,*
000736	000301 					SWAB	R1
000740	110176  000004 				MOVB	R1,@4(SP)			; *,BUF.PTR
000744	005266  000004 				INC	4(SP)				; BUF.PTR
000750	112776  000100  000004 			MOVB	#100,@4(SP)			; *,BUF.PTR				4558
000756	005266  000004 				INC	4(SP)				; BUF.PTR
000762	005001 					CLR	R1				; NODE.NAME.LENGT			4559
000764	152501 					BISB	(R5)+,R1			; PTR,NODE.NAME.LENGT
000766	110176  000004 				MOVB	R1,@4(SP)			; NODE.NAME.LENGT,BUF.PTR		4560
000772	005266  000004 				INC	4(SP)				; BUF.PTR
000776	010116 					MOV	R1,(SP)				; NODE.NAME.LENGT,*			4563
001000	010546 					MOV	R5,-(SP)			; PTR,*
001002	016646  000006 				MOV	6(SP),-(SP)			; BUF.PTR,*
001006	004767  000000G				JSR	PC,BL$MOV
001012	010066  000010 				MOV	R0,10(SP)			; *,BUF.PTR				4561
001016	010103 					MOV	R1,R3				; NODE.NAME.LENGT,BUF.LEN		4564
001020	062703  000005 				ADD	#5,R3				; *,BUF.LEN
001024	022626 				19$:	CMP	(SP)+,(SP)+			;					4536
001026	000466 				20$:	BR	23$				;					4477
001030	020027  000002 			21$:	CMP	R0,#2
001034	001062 					BNE	22$
001036	110276  000004 				MOVB	R2,@4(SP)			; DATA.ID,BUF.PTR			4576
001042	005266  000004 				INC	4(SP)				; BUF.PTR
001046	010200 					MOV	R2,R0				; DATA.ID,*
001050	000300 					SWAB	R0
001052	110076  000004 				MOVB	R0,@4(SP)			; *,BUF.PTR
001056	005266  000004 				INC	4(SP)				; BUF.PTR
001062	110176  000004 				MOVB	R1,@4(SP)			; DATA.TYPE,BUF.PTR			4577
001066	005266  000004 				INC	4(SP)				; BUF.PTR
001072	012703  000006 				MOV	#6,R3				; *,BUF.LEN				4578
001076	026603  000030 				CMP	30(SP),R3			; LENGTH,BUF.LEN			4581
001102	002440 					BLT	23$
001104	112776  000001  000004 			MOVB	#1,@4(SP)			; *,BUF.PTR				4586
001112	005266  000004 				INC	4(SP)				; BUF.PTR
001116	116776  000000G 000004 			MOVB	NMLVER,@4(SP)			; *,BUF.PTR				4587
001124	005266  000004 				INC	4(SP)				; BUF.PTR
001130	112776  000001  000004 			MOVB	#1,@4(SP)			; *,BUF.PTR				4588
001136	005266  000004 				INC	4(SP)				; BUF.PTR
001142	116776  000000G 000004 			MOVB	DECECO,@4(SP)			; *,BUF.PTR				4589
001150	005266  000004 				INC	4(SP)				; BUF.PTR
001154	112776  000001  000004 			MOVB	#1,@4(SP)			; *,BUF.PTR				4590
001162	005266  000004 				INC	4(SP)				; BUF.PTR
001166	116776  000000G 000004 			MOVB	USRECO,@4(SP)			; *,BUF.PTR				4591
001174	005266  000004 				INC	4(SP)				; BUF.PTR
001200	000401 					BR	23$				;					4477
001202	005003 				22$:	CLR	R3				; BUF.LEN				4597
001204	016676  000004  000026 		23$:	MOV	4(SP),@26(SP)			; BUF.PTR,POINTER			4602
001212	010300 					MOV	R3,R0				; BUF.LEN,*				4385
001214	062706  000010 				ADD	#10,SP				;					4352
001220	000207 					RTS	PC
; Routine Size:  329 words,	Routine Base:  $CODE$ + 12740
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 157
X00.89		READ_PARAMETER_DATA				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (43)

; Maximum stack depth per invocation:  13 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 158
X00.89		LOGGING_ID_MATCH				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (44)

;	  4606	%routine ('LOGGING_ID_MATCH', EDB_QE, EID_PTR) =
;	  4607	
;	  4608	!++
;	  4609	! FUNCTIONAL DESCRIPTION:
;	  4610	!
;	  4611	!	Makes determination as to whether a particular ENTITY_DB_BLOCK
;	  4612	!       for the LOGGING entity is the one being searched for when called 
;	  4613	!       by NMU$QUEUE_SCAN as an exit routine.
;	  4614	!
;	  4615	! FORMAL PARAMETERS
;	  4616	!
;	  4617	!	EDB_QE  - Address of the LOGGING entity data base block to be tested.
;	  4618	!	EID_PTR - Pointer to the entity id being searched for.
;	  4619	!
;	  4620	! IMPLICIT INPUTS
;	  4621	!
;	  4622	!	NONE.
;	  4623	!
;	  4624	! ROUTINE VALUE:
;	  4625	!
;	  4626	!	Address of LOGGING entity data base block if it matches the entity id;
;	  4627	!	Zero (0), otherwise.
;	  4628	!
;	  4629	! SIDE EFFECTS:
;	  4630	!
;	  4631	!	NONE.
;	  4632	!
;	  4633	!--
;	  4634	
;	  4635	    begin
;	  4636	
;	  4637	    map
;	  4638	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  4639	
;	  4640	    if ch$rchar (ch$ptr (EDB_QE [EDB_ENTITY_ID],, 8)) eql ch$rchar (.EID_PTR)
;	  4641	    then return .EDB_QE
;	  4642	    else return 0;
;	  4643	
;	  4644	    end;				! End of NODE_ID_MATCH


						.SBTTL	LOGGING.ID.MATCH LOGGING_ID_MATCH
000000	016600  000004 			LOGGING.ID.MATCH:
						MOV	4(SP),R0			; EDB.QE,*				4640
000004	126076  000006  000002 			CMPB	6(R0),@2(SP)			; *,EID.PTR
000012	001401 					BEQ	1$
000014	005000 					CLR	R0
000016	000207 				1$:	RTS	PC				;					4606
; Routine Size:  8 words,	Routine Base:  $CODE$ + 14162
; Maximum stack depth per invocation:  0 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 159
X00.89		NODE_ID_MATCH					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (45)

;	  4645	%routine ('NODE_ID_MATCH', EDB_QE, EID_PTR) =
;	  4646	
;	  4647	!++
;	  4648	! FUNCTIONAL DESCRIPTION:
;	  4649	!
;	  4650	!	Makes determination as to whether a particular ENTITY_DB_BLOCK
;	  4651	!       for the NODE entity is the one being searched for when called 
;	  4652	!       by NMU$QUEUE_SCAN as an exit routine.
;	  4653	!
;	  4654	! FORMAL PARAMETERS
;	  4655	!
;	  4656	!	EDB_QE  - Address of the NODE entity data base block to be tested.
;	  4657	!	EID_PTR - Pointer to the entity id being searched for.
;	  4658	!
;	  4659	! IMPLICIT INPUTS
;	  4660	!
;	  4661	!	NONE.
;	  4662	!
;	  4663	! ROUTINE VALUE:
;	  4664	!
;	  4665	!	Address of NODE entity data base block if it matches the entity id;
;	  4666	!	Zero (0), otherwise.
;	  4667	!
;	  4668	! SIDE EFFECTS:
;	  4669	!
;	  4670	!	NONE.
;	  4671	!
;	  4672	!--
;	  4673	
;	  4674	    begin
;	  4675	
;	  4676	    map
;	  4677	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  4678	
;	  4679	    local
;	  4680	         PTR;
;	  4681	
;	  4682	    PTR = ch$ptr (EDB_QE[NDB_ENTITY_ID],,8);
;	  4683	
;	  4684	    if GETW (PTR) eql GETW (EID_PTR)
;	  4685	    then return .EDB_QE
;	  4686	    else return 0;
;	  4687	
;	  4688	    end;				! End of NODE_ID_MATCH


						.SBTTL	NODE.ID.MATCH NODE_ID_MATCH
000000	010146 				NODE.ID.MATCH:
						MOV	R1,-(SP)			;					4645
000002	016600  000006 				MOV	6(SP),R0			; EDB.QE,PTR				4682
000006	062700  000006 				ADD	#6,R0				; *,PTR					4684
000012	112046 					MOVB	(R0)+,-(SP)			; PTR,$$GETB.X
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 160
X00.89		NODE_ID_MATCH					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (45)

000014	112066  000001 				MOVB	(R0)+,1(SP)			; PTR,$$GETB.X
000020	011601 					MOV	(SP),R1				; $$GETB.X,*
000022	005266  000006 				INC	6(SP)				; EID.PTR
000026	016600  000006 				MOV	6(SP),R0			; EID.PTR,*
000032	116016  177777 				MOVB	-1(R0),(SP)			; *,$$GETB.X
000036	005266  000006 				INC	6(SP)				; EID.PTR
000042	016600  000006 				MOV	6(SP),R0			; EID.PTR,*
000046	116066  177777  000001 			MOVB	-1(R0),1(SP)			; *,$$GETB.X
000054	011600 					MOV	(SP),R0				; $$GETB.X,*
000056	020100 					CMP	R1,R0
000060	001003 					BNE	1$
000062	016600  000010 				MOV	10(SP),R0			; EDB.QE,*
000066	000401 					BR	2$
000070	005000 				1$:	CLR	R0
000072	005726 				2$:	TST	(SP)+				;					4645
000074	012601 					MOV	(SP)+,R1
000076	000207 					RTS	PC
; Routine Size:  32 words,	Routine Base:  $CODE$ + 14202
; Maximum stack depth per invocation:  3 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 161
X00.89		NON_NODE_ID_MATCH				 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (46)

;	  4689	%routine ('NON_NODE_ID_MATCH', EDB_QE, EID_PTR) =
;	  4690	
;	  4691	!++
;	  4692	! FUNCTIONAL DESCRIPTION:
;	  4693	!
;	  4694	!	Makes determination as to whether a particular ENTITY_DB_BLOCK
;	  4695	!       is the one being searched for when called by NMU$QUEUE_SCAN
;	  4696	!       as an exit routine.
;	  4697	!
;	  4698	! FORMAL PARAMETERS
;	  4699	!
;	  4700	!	EDB_QE  - Address of the entity data base block to be tested.
;	  4701	!	EID_PTR - Pointer to the entity id being searched for.
;	  4702	!
;	  4703	! IMPLICIT INPUTS
;	  4704	!
;	  4705	!	NONE.
;	  4706	!
;	  4707	! ROUTINE VALUE:
;	  4708	!
;	  4709	!	Address of entity data base entry if it matches the entity id;
;	  4710	!	Zero (0), otherwise.
;	  4711	!
;	  4712	! SIDE EFFECTS:
;	  4713	!
;	  4714	!	NONE.
;	  4715	!
;	  4716	!--
;	  4717	
;	  4718	    begin
;	  4719	
;	  4720	    map
;	  4721	       EDB_QE: ref ENTITY_DB_BLOCK;
;	  4722	
;	  4723	    return MATCH_ID (.EDB_QE, ch$ptr (EDB_QE[EDB_ENTITY_ID],,8), .EID_PTR);
;	  4724	    end;				! End of NON_NODE_ID_MATCH


						.SBTTL	NON.NODE.ID.MATCH NON_NODE_ID_MATCH
000000	016646  000004 			NON.NODE.ID.MATCH:
						MOV	4(SP),-(SP)			; EDB.QE,*				4723
000004	011646 					MOV	(SP),-(SP)			; EDB.QE,*
000006	062716  000006 				ADD	#6,(SP)
000012	016646  000006 				MOV	6(SP),-(SP)			; EID.PTR,*
000016	004767  000000V				JSR	PC,MATCH.ID
000022	062706  000006 				ADD	#6,SP				;					4689
000026	000207 					RTS	PC
; Routine Size:  12 words,	Routine Base:  $CODE$ + 14302
; Maximum stack depth per invocation:  4 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 162
X00.89		SVC_CKT_MATCH					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (47)

;	  4725	%routine ('SVC_CKT_MATCH', NDB_QE, CKT_ID_PTR) =
;	  4726	
;	  4727	!++
;	  4728	! FUNCTIONAL DESCRIPTION:
;	  4729	!
;	  4730	!	Makes determination as to whether a particular NODE_DB_BLOCK
;	  4731	!       contains the circuit id, passed as an argument, as the 
;	  4732	!       SERVICE CIRCUIT parameter by NMU$QUEUE_SCAN as an exit routine.
;	  4733	!
;	  4734	! FORMAL PARAMETERS
;	  4735	!
;	  4736	!	NDB_QE  - Address of the NODE entity data base block to be tested.
;	  4737	!	CKT_ID_PTR - Pointer to the circuit entity id being searched for.
;	  4738	!
;	  4739	! IMPLICIT INPUTS
;	  4740	!
;	  4741	!	NONE.
;	  4742	!
;	  4743	! ROUTINE VALUE:
;	  4744	!
;	  4745	!	Address of NODE entity data base block if its SERVICE CIRCUIT 
;	  4746	!          parameter matches the circuit entity id;
;	  4747	!	Zero (0), otherwise.
;	  4748	!
;	  4749	! SIDE EFFECTS:
;	  4750	!
;	  4751	!	NONE.
;	  4752	!
;	  4753	!--
;	  4754	
;	  4755	    begin
;	  4756	
;	  4757	    map
;	  4758	       NDB_QE: ref NODE_DB_BLOCK;
;	  4759	
;	  4760	    bind
;	  4761		PVB = NDB_QE[EDB_PARAMETER_VECTOR] : ref $NML$PVB_ENTRY_VECTOR (0);
;	  4762	
;	  4763	    local
;	  4764	         ADR_AI_FIELD;
;	  4765	
;	  4766	    ADR_AI_FIELD = 0;
;	  4767	
;	  4768	    incr N from 0 to .NDB_QE[EDB_PARAMETER_COUNT] - 1
;	  4769	    do begin
;	  4770	       if .PVB[.N,PE_NUMBER] eql 110
;	  4771	       then begin
;	  4772	            ADR_AI_FIELD = .PVB[.N,PE_ADDRESS];
;	  4773	            exitloop;		! Found SERVICE CIRCUIT parameter
;	  4774	            end;
;	  4775	       end;
;	  4776	
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 163
X00.89		SVC_CKT_MATCH					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (47)

;	  4777	    if .ADR_AI_FIELD eql 0	! No SERVICE CIRCUIT parameter
;	  4778	    then return 0
;	  4779	    else return MATCH_ID (.NDB_QE, ch$ptr (.ADR_AI_FIELD,,8), .CKT_ID_PTR);
;	  4780	
;	  4781	    end;				! End of SVC_CKT_MATCH


						.SBTTL	SVC.CKT.MATCH SVC_CKT_MATCH
000000	004167  000000G			SVC.CKT.MATCH:
						JSR	R1,$SAVE4			;					4725
000004	016603  000016 				MOV	16(SP),R3			; NDB.QE,*				4761
000010	005004 					CLR	R4				; ADR.AI.FIELD				4766
000012	005002 					CLR	R2				; N					4768
000014	000420 					BR	3$
000016	010201 				1$:	MOV	R2,R1				; N,*					4770
000020	006301 					ASL	R1
000022	006301 					ASL	R1
000024	010100 					MOV	R1,R0
000026	066300  000034 				ADD	34(R3),R0
000032	021027  000156 				CMP	(R0),#156
000036	001006 					BNE	2$
000040	010100 					MOV	R1,R0				;					4772
000042	066300  000034 				ADD	34(R3),R0
000046	016004  000002 				MOV	2(R0),R4			; *,ADR.AI.FIELD
000052	000405 					BR	4$				;					4773
000054	005202 				2$:	INC	R2				; N					4768
000056	020263  000030 			3$:	CMP	R2,30(R3)			; N,*
000062	002755 					BLT	1$
000064	005704 					TST	R4				; ADR.AI.FIELD				4777
000066	001002 				4$:	BNE	5$
000070	005000 					CLR	R0
000072	000207 					RTS	PC
000074	010346 				5$:	MOV	R3,-(SP)			;					4779
000076	010446 					MOV	R4,-(SP)			; ADR.AI.FIELD,*
000100	016646  000020 				MOV	20(SP),-(SP)			; CKT.ID.PTR,*
000104	004767  000000V				JSR	PC,MATCH.ID
000110	062706  000006 				ADD	#6,SP
000114	000207 					RTS	PC				;					4725
; Routine Size:  39 words,	Routine Base:  $CODE$ + 14332
; Maximum stack depth per invocation:  9 words
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 164
X00.89		MATCH_ID					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (48)

;	  4782	%routine ('MATCH_ID', EDB_QE, PTR1, PTR2) =
;	  4783	
;	  4784	!++
;	  4785	! FUNCTIONAL DESCRIPTION:
;	  4786	!
;	  4787	!	Compares the entity id referenced by pointer 1 with the entity
;	  4788	!       id referenced by pointer 2.  No distinction is made between
;	  4789	!       upper and lower case when comparing the strings.  If the ids
;	  4790	!       match, the address of the entity data block is returned.
;	  4791	!
;	  4792	! FORMAL PARAMETERS
;	  4793	!
;	  4794	!	EDB_QE  - Address of the entity data base block.
;	  4795	!	PTR1 - Pointer to the first entity id.
;	  4796	!	PTR2 - Pointer to the second entity id.
;	  4797	!
;	  4798	! IMPLICIT INPUTS
;	  4799	!
;	  4800	!	NONE.
;	  4801	!
;	  4802	! ROUTINE VALUE:
;	  4803	!
;	  4804	!	Address of entity data base entry if the strings match;
;	  4805	!	Zero (0), otherwise.
;	  4806	!
;	  4807	! SIDE EFFECTS:
;	  4808	!
;	  4809	!	NONE.
;	  4810	!
;	  4811	!--
;	  4812	
;	  4813	    begin
;	  4814	
;	  4815	    local
;	  4816		L;
;	  4817	
;	  4818	    if (L = GETB (PTR1)) eql GETB (PTR2)
;	  4819	    then begin
;	  4820	         incr N from 1 to .L
;	  4821	         do begin
;	  4822	            if GETMB (PTR1) neq GETMB (PTR2)
;	  4823	            then return 0;
;	  4824	            end;
;	  4825	
;	  4826	         return .EDB_QE;
;	  4827	         end
;	  4828	    else return 0;
;	  4829	
;	  4830	    end;				! End of MATCH_ID


						.SBTTL	MATCH.ID MATCH_ID
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 165
X00.89		MATCH_ID					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (48)

000000	004167  000000G			MATCH.ID:
						JSR	R1,$SAVE3			;					4782
000004	005266  000014 				INC	14(SP)				; PTR1					4818
000010	016600  000014 				MOV	14(SP),R0			; PTR1,*
000014	005003 					CLR	R3				; L
000016	156003  177777 				BISB	-1(R0),R3			; *,L
000022	005266  000012 				INC	12(SP)				; PTR2
000026	016600  000012 				MOV	12(SP),R0			; PTR2,*
000032	005001 					CLR	R1
000034	156001  177777 				BISB	-1(R0),R1
000040	020301 					CMP	R3,R1				; L,*
000042	001051 					BNE	5$
000044	005002 					CLR	R2				; N					4820
000046	000441 					BR	4$
000050	005266  000014 			1$:	INC	14(SP)				; PTR1					4822
000054	016600  000014 				MOV	14(SP),R0			; PTR1,*
000060	114000 					MOVB	-(R0),R0			; *,C
000062	042700  177400 				BIC	#177400,R0			; *,C
000066	020027  000141 				CMP	R0,#141				; C,*
000072	002405 					BLT	2$
000074	020027  000172 				CMP	R0,#172				; C,*
000100	003002 					BGT	2$
000102	162700  000040 				SUB	#40,R0				; *,C
000106	010001 				2$:	MOV	R0,R1				; C,*
000110	005266  000012 				INC	12(SP)				; PTR2
000114	016600  000012 				MOV	12(SP),R0			; PTR2,*
000120	114000 					MOVB	-(R0),R0			; *,C
000122	042700  177400 				BIC	#177400,R0			; *,C
000126	020027  000141 				CMP	R0,#141				; C,*
000132	002405 					BLT	3$
000134	020027  000172 				CMP	R0,#172				; C,*
000140	003002 					BGT	3$
000142	162700  000040 				SUB	#40,R0				; *,C
000146	020100 				3$:	CMP	R1,R0
000150	001006 					BNE	5$				;					4823
000152	005202 				4$:	INC	R2				; N					4820
000154	020203 					CMP	R2,R3				; N,L
000156	003734 					BLE	1$
000160	016600  000016 				MOV	16(SP),R0			; EDB.QE,*				4818
000164	000207 					RTS	PC
000166	005000 				5$:	CLR	R0				;					4782
000170	000207 					RTS	PC
; Routine Size:  61 words,	Routine Base:  $CODE$ + 14450
; Maximum stack depth per invocation:  5 words


;	  4831	end                                     ! End of Module NMLVDB
;	  4832	eludom



;					OTS external references
NMLVDB		NMLVDB -- Volatile Data Base Processing		24-May-1985 13:23:24	TOPS-20 Bliss-16 2A(530)	    Page 166
X00.89		MATCH_ID					 3-Jan-1983 03:09:26	DNET61:<MCB.NML>NMLVDB.BLI.1 (48)

						.GLOBL	$SAVE5, $SAVE4, $SAVE3, $SAVE2
						.GLOBL	BL$EQL, BL$MOV


;					PSECT SUMMARY
;
;	Psect Name			Words	  Attributes
;	 $OWN$				  295	    RW ,  D  ,  LCL,  REL,  CON
;	 $PLIT$				   27	    RO ,  D  ,  LCL,  REL,  CON
;	 $CODE$				 3281	    RO ,  I  ,  LCL,  REL,  CON




;				LIBRARY STATISTICS
;
;					     -------- Symbols --------    Blocks
;	File				     Total    Loaded   Percent      Read
;
;  DNET61:<MCB.NML>NMLLIB.L16.2		      2718       195         7         0





;	  4833	! Local Modes:
;	  4834	! Mode:BLISS
;	  4835	! Auto Save Mode:2
;	  4836	! Comment Column:40
;	  4837	! Comment Rounding:+1
;	  4838	! End:
; Size:		3281 code + 322 data words
; Run Time:	00:59.1
; Elapsed Time:	01:13.0
; Memory Used:	132 pages
; Compilation Complete
A				4067#	4070	4281#	4283	4291#	4293	4300#	4302
ADDR				4125	4127#	4128	4179	4217	4218#	4219	4221	4222#	4225	4228
ADR_AI_FIELD			4764	4766#	4772#	4777	4779
APPLICABLE			 707	3447	3768
B1				1043	1044
B2				1043	1045	1046
B3				1043	1047	1048
B4				1043	1049	1050
BP_ADDR				2001	2068	2082	2266	2321	2324	2327	2334	2340	2448	2460	2464
				2493	2532
BUFFER				1179	1239	1263	1304	1313	1338	1387	1396	1433	1457	1487	1506
				1568	1580	1595	1605
BUFFER_LENGTH			1449	1451#	1456	1460	1480	1482#	1486	1488	1562	1565#	1567	1571
BUF_LEN				1505	1507#	1520#	1527	1534	1543	1548#	1551	4408	4426#	4427	4428
				4433#	4436	4442#	4443	4444	4451#	4452	4453	4467#	4468	4533#	4534
				4564#	4578#	4581	4597#	4604
BUF_PTR				1505	1506#	1519#	1528	1545	1546	1547#	1551	4149	4407	4412#	4420
				4421	4428#	4430	4438	4444#	4446	4453#	4455	4465	4466	4469	4530
				4531	4546	4547	4558	4560	4561#	4563	4576	4577	4586	4587	4588
				4589	4590	4591	4602
BYTE_0				1149#
BYTE_1				1150#
C				 751	 753#	 754	 755	 756
CH$ASCII			1132
CH$ASCIZ			3284	3289	3296
CHARACTERISTICS_		2319	2423	2459
CIRCUIT_			1264	1266	1290	1472	1501	1560	2433	2840	3131	3221	3363	3615
CKTDB				 979#
CKT_ENTITY_ID			1856	1891
CKT_ID_PTR			4725	4779
CLEAR_FILTER			 719
CLEAR_PARAMETER_DATA		 718	3807
CNPVB				3552	3555#	3560#	3561#
CNT				1539	1546#	1547	1548	1551	1553	2721	3558	3778	3782#	3810	3822#
CONSOLE_			2628
COPVB				3553	3556#	3560	3562#
COPY_PARAMETER_VECTOR		 706	1106	3808	3935
COUNTERS_			2322	2415
COUNT				2160	2163#	2165	2953	2956#	2958	2989	3522	3558	3680	3683#	3685
				3927	3934#	3942
CPARM_STATE			2383#	2434
C_CHAR				1036	1043#	1055#
C_STRING			1034#
DATA_ADDR			1625	1697#	1700#	1705	1710#	1715#	1721#	1722#	1735	1788
DATA_EVENTS			4475#	4501
DATA_ID				1114#	1120	4409	4413#	4414#	4415#	4420	4465	4486#	4530	4576
DATA_ID_FIELDS			4409
DATA_NODE_ID			4473#	4487	4499	4513	4525
DATA_TYPE			1689	1691#	1692	1694	1696	1699	1714	4049	4051#	4053	4055	4057
				4063	4064	4066	4083	4084	4270	4272#	4274	4276	4278	4287	4290
				4311	4410	4416#	4418	4421	4422	4424	4433	4434	4439	4442	4463
				4466	4467	4469	4531	4542#	4546	4555#	4558	4577	4584#	4586	4588
				4590
DATA_TYPE_FIELDS		1689	1717	4049	4270	4410
DATA_VERSION			4474#	4490	4569
DECECO				4573	4589
DEFAULT_IDENTIFICATION		1129#	1134	1135
DISPLAY_CHECK			2380	2411	2419	2422	2425	2435
DI_PARMNO			4414
DI_TYPE				4415
DT				1717
DT_CODED			1692	4053	4274	4418
DT_FTYPE			1694	1714	4055	4083	4276	4311	4422	4463
DT_LENGTH			1696	1699	4057	4063	4064	4066	4278	4287	4290	4424	4433	4434
				4439	4442
DT_NUMBER			4084	4467	4469
EDB_ENTITY_ID			 770	 780	1935	1950	1991	1996	2533	3140	3460	3805	4640	4723
EDB_FIELDS			 786
EDB_PARAMETER_ALLOCATION	 774	 784	1102	1104	1674	2390	3758	3873	3876	3878	3924	3928
				3941	3995
EDB_PARAMETER_COUNT		 773	 783	1101	1676	1681	2392	2409	3474	3496	3512	3518	3756
				3782	3811	3828	3880	3925	3934	3937	3942	3996	4001	4768
EDB_PARAMETER_VECTOR		 775	 785	1103	1106	1675	1679	2391	2407	3472	3490	3511	3757
				3781	3874	3875	3879	3935	3940	4000	4761
EDB_QE				1659	1662#	1674	1675	1676	1679	1681	1770	1774#	1775#	1801	1834
				1836#	1852	1898	1935	1950	1955	1991	1996	2044	2048#	2061	2075
				2088	2129	2135	2266	2307	2320	2323	2326	2333	2340	2377	2390
				2391	2392	2407	2409	2460	2464	2493	2521	2533	2801	2807#	2815#
				2822	2845	2852	2859	2865#	2874	2888	2904	2938	2944	3118	3124#
				3127	3135#	3140	3151	3157	3192	3198#	3203	3204	3225#	3230	3231
				3399	3433	3447	3460	3472	3474	3487	3490	3496#	3508	3511	3512
				3518#	3566	3602	3609	3625	3661	3668	3715	3748	3756	3757	3758
				3760	3768	3781	3782	3805	3811#	3828	3829	3833	3866	3873	3874
				3875	3876	3878#	3879#	3880#	3884	3922	3924	3925	3928	3934	3935
				3937	3939	3940#	3941#	3942#	3947	3990	3995	3996	3997	4000	4001
				4606	4638	4640	4641	4645	4677	4682	4685	4689	4721	4723	4782
				4826
EDB_QLINK			 769	 779
EDB_QUALIFIER			2256	2258	2991
EDB_QUALIFIER_QUEUE		2135	2822	2944	3668
EID_PTR				4606	4640	4645	4684	4689	4723
ENTITY				1179	1251	1302	1310	1350	1385	1393	1411	1429	1453	1472	1484
				2001	2048	2049	2064	2078	2088	2180	2204	2266	2761	2807	2809
				2815	2838	2865	2904	2970	2998	3625	3694	3709
ENTITY_DB_BLOCK_ALLOCATION	2984	3124	3135
ENTITY_DB_BLOCK			1086	1659	1770	1834	1898	1955	2044	2129	2133	2246	2307	2377
				2521	2801	2938	2942	3118	3192	3433	3602	3661	3666	3748	3866
				3922	3990	4638	4677	4721
ENTITY_ID			1159#	1166
ENTITY_IS_VALID			 702	1264	1472	2049	2809
ENTITY_PTR			1625	1662	1735	1774	1775	1803	1836	3002	3034	3037	3040	3081
				3085	3127	3138	3139	3159	3200	3215	3216	3219	3227	3237
ENTITY_TYPE			1625	1662	1670	1691	1719	1735	1774	1775	1790	1801	1803	1836
				1844	1852	3040	3080	3085	3120	3150	3159	3194	3199	3219	3226
				3305	3343	3399	3447	3450	3459	3482	3493	3515	3566	3604	3607
				3715	3768	3796	3804	3807	4012	4051	4087	4232	4272	4314	4352
				4416	4479
ERR_DETAIL			1179	1266#	1275#	1305	1318#	1364#	1388	1399#	1414#	1434	1491#	2001
				2052#	2761	2811#	2840#	2867#	2882#
EVENTS_				2317	2325
EXPAND_PVB			 714	3487
FDB				1153	1162	1163	1164	1165	1170	1171	2525	2537#	2540	2541	2545#
				2549	2570	2579#	2582	2583	2595	2621	2629	2631	2633
FDBM				1160#	1167	1168#	1169#	2674	2710	2712
FDBM_BASE			 865#
FDBM_BLOCK			 876#	2674
FDBM_FIELDS			 863#	 876	1160
FDBM_HIGH			 868#	1169	2712
FDBM_LOW			 867#	1168	2712
FDBM_MASKS			 869#	2710
FDBM_QLINK			 866#	1167
FDBM_SIZE			 873#	 876	1155	1160
FDBS				1155	1160	1166	1170	2640	2668	2669
FDBS_BASE			 844#
FDBS_BLOCK			 854#	2640
FDBS_ENTITY			 846#	1166	2668
FDBS_FIELDS			 842#	 854	1155
FDBS_MASKS			 847#	1160	2669
FDBS_QLINK			 845#
FDBS_SIZE			 851#	 854	1155	1156
FDB_BASE			 818#
FDB_BLOCK			 830#	2525	2595
FDB_CONSOLE_FILTERS		 821#	1163	2629
FDB_FIELDS			 816#	 830	1153
FDB_FILE_FILTERS		 822#	1164	1170	2631
FDB_MONITOR_FILTERS		 823#	1165	2633
FDB_NODE_ID			 820#	1162	2621
FDB_QE				4149	4322
FDB_QLINK			 819#
FDB_SIZE			 827#	 830	1153	1154
FIELDS				 793
FIELD_NAME			 760	 761	 762	 763	 764	 765
FILE_				2630
FLTDB				 981#
FUNCTION			1179	1230	1299	1382	1427	2001	2062	2076	2088	2178	2202	2266
				2312	2761	2803
GET32				1705
GETB				1546	4117	4559	4818
GETMB				 749#	4822
GETN				4064	4084
GETW				1521	1545	2553	2834	3034	3440	4120	4545	4684
GETW_NA				1239	1338	2891	3670
GET_EXISTING_ENTITY_DB		 700	1662	1774	1836	2048	2807	2865	3219
GET_PVB				 713	3508	3997
GET_VDB_ENTITY_QUEUE		 704	3080	3150
HIGHER_LAYER			1235#	1298	1326#	1381
HOLD				1931#	1940
ID_STRING			2160	2162#	2163	2191	2953	2955#	2956	2979	2990	3680	3682#	3683
				3701
INSERT_PARAMETER		 705	1123	1131	1801	2845	2859	2969	2998
L				1771	1790#	1795	2413	2448#	2450	2452	2730	2734#	2738	2740	4066#
				4067	4073	4280#	4281	4290#	4291	4299#	4300	4390	4394	4396	4400
				4816	4818#	4820
LCL_ADDRESS			1505	1516#	1517	1519	1521#	1550#
LCL_LEN				1505	1517#	1518	1519	1520	1540
LEN				1589	1600#	1604	1608	1981	1991#	1993	1995
LINDB				 978#
LINE_				1290	1503	2433	3130	3221	3351	3615
LITERALS			 794
LNG				1539	2714	2716#	2719#	2721#	2722	2724	2725#	2726#	2746
LOCAL_NODE			1249	1251#	1256	1273	1348	1350#	1355	1362
LOGDB				 980#
LOGGING_			1576	1934	2459	2734	3132	3218	3357	3615	4495
LOGGING_ID_MATCH		 721	3360
LOWER_LAYER			1236#	1307	1327#	1390
LPVB_QE				1769	1787#	1788#	1791
M				4001	4003	4004
MASK				2705	2710#	2718	2755#
MASK_BITS			 805#	2705	2718
MASK_SIZE			 808#	 869	2755
MATCH_ID			 725	4723	4779
MATCH_ROUTINE			3073	3080	3081	3305	3394	3395#
MODDB				 982#
MODULE_				1587	2059	2821	2851	2872	3133	3214	3343	3369	3604	3615	4097
				4509
MODULE_IS_VALID			 703	3215
MONITOR_			2632
M_PARMS				1080#	1088	1102	1107
N				1681	1683	2409	3474	3476	3487	3491	3947	4001	4007	4008	4388
				4394	4768	4770	4772	4820
N$FCLR				1324	2863
N$FRET				1231	1496
N$FSET				1230	1233	2805
N$FSHO				1419	2315
N$FSZC				1478	2332
N$FZRO				1407
NDB$EXECUTOR			1100	3609
NDB_CIRCUIT_QLINK		 787
NDB_ENTITY_ID			 771	 781	1894	3035	4682
NDB_NODE_TYPE			 772	 782	1100	3609
NDB_QE				1887	1891#	1893	1894	3002	3035	4725	4758	4761	4768	4779
NDB_SVC_CIRCUIT			 788
NEW_ALLOCATION			3928#	3931	3941
NEXT				2145	2147#	2148	2150#	2167	2169#	2173	2175#	2960	2962#	2966	2968#
				3687	3689#	3691	3693#
NICE$_CWS			1316
NICE$_IID			1317
NICE$_MPE			2427
NICE$_REE			1436	1518	1610	2446	2738
NICE$_SUC			1584	1612	1801	2050	2154#	2170	2172	2195	2393	2462	2901	2963
				2965	3483	3497	3520	3697	3711
NICE$_URC			1315	1398	1413	1437	1471	1490
NML				1235	1236	1237	1242#	1243#	1282#	1292#	1326	1327	1328	1334#	1340#
				1341#	1371#	1402
NML$CFG_FILTERS			 668#	1144	2528	2623	2666	2707
NML$CHARACTERISTIC		 997	2424
NML$CLEARABLE			 998	3796
NML$CLR_VDB_PARAMETER		 679
NML$COUNTER_TIMER_CLEAR		1002	3803
NML$COUNTER_TIMER_SET		1001	3458
NML$EXECUTOR_ONLY		 994	1254	1353	3607
NML$FIND_NDB			 680	2836
NML$GET_PDB_DATA_TYPE		1000	1691	4051	4272	4416
NML$GET_VDB_PARAMETER		 677	1934
NML$READ_ONLY			 999	3450
NML$SET_VDB_PARAMETER		 678
NML$STATUS			 996	2418
NML$SUMMARY			 995	2421
NML$VDB				 676
NML$VDB_INITIALIZE		 675
NML$VDB_PARAMETER		 993	1241	1339
NMLVDB				 618#
NMLVER				1076	1090#	4572	4587
NMU$DLX_KNOWN_DEVICE		3235*	3237
NMU$DLX_RETURN_CIRCUITS		1563*	1566
NMU$MEMORY_GET			1104	2984	3124	3135	3931	4070	4113	4218	4222
NMU$MEMORY_MANAGER		 990*
NMU$MEMORY_RELEASE		3875	4221	4283	4293	4302	4316
NMU$NETWORK_LOCAL		 992	1098	1250	1349	1516	2538	2556
NMU$QUEUE_INSERT		1170	1171	2993	3151
NMU$QUEUE_LENGTH		2143	2948	3675
NMU$QUEUE_MANAGER		 991
NMU$QUEUE_RESET			1063	1064	1065	1066	1067	1068	1163	1164	1165	1167	2822
NMU$QUEUE_SCAN			1582	1597	1891	2190	2537	2579	2586	2629	2631	2633	2669	2978
				3081	3700
NMX				1328	1392#	1398	1410	1411#	1413	1416	1589	1601#	1607#	1610
NODDB				 977#
NODE_ADDR			3032	3034#	3036
NODE_ADDRESS			4543	4545#	4547
NODE_ADR			2551	2553#	2562
NODE_BUF			2547	2557	2561	2567	2576	2580
NODE_DB_BLOCK			1887	3002	4758
NODE_E				1098	1123	1131	1247	1275	1346	1364	1499	1513	1535	1670	1719
				1844	2829	3122	3196	3343	3345	3604	3606	4089	4314	4481
NODE_ID_BUFFER_ALLOCATION	4113	4316
NODE_ID_BUFFER_LENGTH		2555	2575	4134
NODE_ID_BUFFER_SIZE		2547
NODE_ID_MATCH			 722	2539	2581	3348
NODE_NAME_LENGTH		4556	4559#	4560	4561	4564
NODE_PTR			2526	2535#	2545	2553	2558#	2561#	2562	2563	2567#	2568	2569	2570
				2573	2575#	2576	3031	3035#	3036	3037
NONE				 955
NON_NODE_ID_MATCH		 723	2192	2980	3354	3366	3374	3702
NO_ENTITY_			1159
NPVB				3522	3555	3927	3931#	3936	3940
N_PARMS				1079#	1101
OFF				1931#
ON				1931#	1940
OPVB				3522	3556
PARAMETER			1237	1239#	1241	1254	1259	1291	1328	1333#	1338#	1339	1353	1358
				2904	2971	2998	3664	3669#	3694	3709
PARAMETER_BLOCK_ALLOCATION	 950#
PARAMETER_BLOCK_FIELDS		 953
PARAMETER_BLOCK_SIZE		 949#	 953
PARAMETER_BLOCK			 953#
PARAMETER_FIELDS		 932#
PARM_NO				1625	1671	1672#	1685	1687	1691	1735	1787	1803	1845	1846#	1852
				3438	3440#	3447	3450	3458	3478	3480	3492	3513	3566	3607	3715
				3768	3788	3790	3791	3803	3817#	4322
PBF				1578	1579#	1580#	1581#	1582	1898	1925	1948#	1951	2524	2531#	2532#
				2533#	2541	2583	2586	2595	2621#	2626	2629	2631	2633	2640	2668#
				2669	2674	2702	2717	2720	2728	2733	2736	2737	2738	2740#	2741#
PBF_BASE			 888#	1582
PBF_BLOCK			 903#	1578	1898	2524	2595	2640	2674
PBF_BUF_PTR_ADR			 892#	1580	1951	2532	2737
PBF_ENTITY_PTR			 891#	2668
PBF_FIELDS			 886#	 903
PBF_LEN_ADR			 893#	1579	1948	2531	2736	2738	2740
PBF_MASK			 894#	2717	2720
PBF_NODE_ID_PTR			 890#	2621	2728	2733	2741
PBF_PE				 889#	2702
PBF_SELECTOR			 895#	1581	1925
PBF_SINK			 896#	2533	2626
PBF_SIZE			 900#	 903
PBM				1589	1594#	1595#	1596#	1597	1955	1983	1993#	1995#	1997
PBM_BASE			 915#	1597
PBM_BLOCK			 925#	1589	1955
PBM_BUF_PTR_ADR			 916#	1595	1995	1997
PBM_FIELDS			 913#	 925
PBM_LEN_ADR			 917#	1594	1993
PBM_SELECTOR			 918#	1596	1983
PBM_SIZE			 922#	 925
PB_BASE				 934#
PB_DATA_LENGTH			 940#
PB_DATA_POINTER			 941#
PB_EDB				 943#
PB_ENTITY_POINTER		 935#
PB_ENTITY_TYPE			 938#
PB_FUNCTION			 937#
PB_PARAMETER_DATA_BLOCK		 944#
PB_PARAMETER_NUMBER		 942#
PB_PRIVLEDGED			 945#
PB_QUALIFIER_POINTER		 936#
PB_SELECTOR			 939#
PE				2702#	2732#	2733#	2735
PE_ADDRESS			1090	1092	1094	1096	1697	1704	1710	1721	2733	4059	4069	4070
				4073	4078	4112	4113	4116	4133	4143	4280	4283	4284	4293	4294
				4299	4302	4303	4316	4317	4426	4429	4445	4451	4454	4529	4772
PE_DATA				1700	1715	1788	4004	4008	4064	4084	4288	4312	4437	4469
PE_NUMBER			1089	1091	1093	1095	1685	1687	1720	1787	2418	2421	2424	2434
				2732	3478	3480	3492	3513	3788	3790	3796	4003	4007	4051	4090
				4098	4272	4315	4414	4416	4482	4496	4510	4770
POINTER				2088	2151	2176	2184	2199	2208	2213	2252	2254	2257#	2259	2761
				2833	2845	2855	2859	2877	2891	3248	3282	3287	3294	3625	3670
				4352	4412	4602#
PRIVLEDGED			3399	3450	3625	3694	3709	3715	3797
PRM_BFR				 961	1119	1123	1785	1795	1801
PRM_BFR_ALLOCATION		 799#	 961
PRM_BFR_LENGTH			 797#	 798	1792
PRM_BFR_SIZE			 798#	 799
PRM_PTR				1772	1785#	1793	3399	3440	3461	3482	3493	3515	4012	4059	4064
				4073	4078	4084	4117	4120	4130
PTR				1117	1119#	1120	1121	1122	1249	1250#	1251	1263#	1264	1348	1349#
				1350	1702	1704#	1705	2714	2717#	2718	2720#	2721	2831	2833#	2834
				2836#	2838	4110	4116#	4121	4122	4128	4129	4130	4133#	4141	4179
				4215	4228	4527	4529#	4545	4559	4562	4680	4682#	4684
PTR1				4782	4818	4822
PTR2				4782	4818	4822
PTR_ADR				 749	 753	4388	4393	4397
PUT32				2718
PUTB				1121	2254	2563	2568	2569	4122	4129	4421	4466	4531	4546	4558
				4560	4577	4586	4587	4588	4589	4590	4591
PUTN				4388#	4437	4469
PUTW				1120	1166	2252	2562	3036	4121	4128	4420	4465	4530	4547	4576
PVB				1660	1679#	1683	3436	3472#	3476	3490#	3491	3511#	3512	3993	4000#
				4003#	4004#	4007#	4008#	4761#	4770	4772
PVB_ENTRY_ALLOCATION		1102	3925	3929	3996
PVB_ENTRY_SIZE			 889	2454	3558	3808	3814	3820
PVB_QE				1683#	1685	1687	1697	1700	1704	1710	1715	1720	1721	2310	2405
				2407#	2418	2421	2424	2434	2448	2454#	3437	3476#	3478	3480	3482
				3491#	3492#	3493	3512#	3513#	3515	4012	4046	4051	4059	4064#	4069
				4070#	4073	4078	4084#	4090	4098	4112	4113#	4116	4133	4143#	4232
				4267	4272	4280	4283	4284#	4288#	4293	4294#	4299	4302	4303#	4312#
				4315	4316	4317#
QE_QUALIFIER			2942	2949#	2966#	2969	2978#	2982	2984#	2986	2991	2993	2998	3666
				3676#	3691#	3694	3700#	3704	3709
QHEADER				3117	3150	3151
QH_CIRCUIT_PARAMETERS		 970	 979	1065	3365
QH_LINE_PARAMETERS		 969	 978	1064	3353
QH_LOGGING_FILTERS		 972	 981	1067	1171	2537	2579	2586
QH_LOGGING_PARAMETERS		 971	 980	1066	1582	3359
QH_MODULE_PARAMETERS		 973	 982	1068	1597	3373
QH_NODE_PARAMETERS		 968	 977	1063	1891	3347
QH_QUALIFIER			2941	2944#	2948	2949	2962	2966	2978	2993	3665	3668#	3675	3676
				3689	3691	3700
QUALIFIER			1179	1301	1311	1384	1394	1411	1430	1454	1485	1526	1603	2001
				2065	2079	2088	2137	2162	2181	2205	2266	2326	2493	2535	2570
				2761	2854	2876	2904	2946	2955	3625	3673	3682
QUALIFIER_QUEUE			2132	2135#	2143	2147	2148	2157	2169	2173	2190
QUEUE_HEADER			3340	3347#	3353#	3359#	3365#	3373#	3392
QUEUE_MATCH_ROUTINE		3341	3348#	3354#	3360#	3366#	3374#	3395
QUEUE				3072	3080	3081	3305	3391	3392#
Q_ENTRY				2145	2167	2960	3687
Q_ENTRY_SIZE			 819	 821	 822	 823	 845	 866
Q_FORWARD			2147	2150	2157	2169	2175	2949	2962	2968	3676	3689	3693
Q_HEADER			 968	 969	 970	 971	 972	 973	2132	2941	3665
READ_COUNTERS			 690	2323	2333
READ_ENTITY			 688	2075	2177	2201
READ_FILTER			 692	2541	2583	2586
READ_FILTERS			 691	2326	2460
READ_FILTER_MASKS		 694	2669
READ_FILTER_SINK		 693	2629	2631	2633
READ_PARAMETERS			 689	2320
READ_PARAMETER_DATA		 720	1790	2448	2734
READ_QUALIFIED_ENTITY		 685	2061
READ_QUALIFIER			 686	2151	2176	2199
RELEASE_PVB			 712	3760	3829	3939
REMOVE_PARAMETER		 711	1852	2888	3694	3709
REMOVE_QUALIFIED_PARAMETER	 709	2874
RESULT				1237	1299#	1309#	1315	1316	1317	1321	1328	1382#	1392#	1404	1421
				1452#	1459#	1468#	1471	1473#	1475	2043	2049#	2061#	2070	2075#	2085
				2167	2170#	2172	2177#	2187#	2960	2963#	2965	2969#	2975
SEARCH_FOR_EXECUTOR		1533#	1537	1544
SELECTOR			1179	1431	1455	1513	1525	1535	1566	1581	1591	1596	1602	2001
				2066	2080	2088	2182	2206	2266	2317	2320	2323	2333	2340	2415
				2459	2464
SELECT_LOGGING			 681	1582
SELECT_MODULE			 682	1597
SET_ENTITY_DB			 701	1098	1775	2815
SET_FILTER			 716
SET_IMAGE_FIELD			 717	4059	4078
SET_NODE_ENTITY			 699	3127
SET_PARAMETER_DATA		 715	3482	3493	3515
SET_QUALIFIED_ENTITY		 697	2852
STATE				1932	1937	1938
STATUS				1480	1483#	1490	1493	1505	1524#	1530	1557	1562	1566#	1570#	1573
STATUS_				2319	2417
SUMMARY_			2317	2319	2415	2420	3202	3229
SVC_CKT_MATCH			 724	1891
TASK_ERROR			3145	3153	3243
TASK_INFO			4175	4348
TEMP				1539#	1545#	1550	4110	4117#	4118	4120#	4121	4129	4130	4134#	4141
TLEN				4213	4215#	4218	4219	4222	4228
TYPE				1179	1241	1245	1254	1300	1309	1318	1339	1344	1353	1383	1392
				1399	1411	1414	1428	1452	1472	1483	1491	1497	1513	1524	1535
				1601	2001	2048	2049	2052	2059	2063	2077	2088	2179	2203	2266
				2320	2323	2326	2333	2340	2418	2421	2424	2431	2448	2459	2460
				2464	2493	2712	2761	2807	2809	2811	2815	2821	2827	2845	2853
				2859	2865	2867	2870	2875	2882	2889	4149	4322
USRECO				4574	4591
VAL				2249	2251#	2252	2256#	2257	2261
VALUE				2165	2958	2989	3685	4388	4392
VDB				1328	1382#	1402
VDB_CHANGE			 695	1299	1382
VDB_CODE			1421	1427#	1436	1437	1438	1468
VDB_READ			 683	1427
X				4390	4392#	4393	4396#	4397
XLEN				4212	4219#	4221
X_NOD_NDB			1086	1098#	1100#	1101#	1102#	1103#	1104	1106	1123	1131
X_NOD_PVB			1088	1106
$ADDRESS			 892	 893	 916	 917	 943	 944
$BIT				 945
$BITS				 805
$BYTES				 820	 846	 894
$BYTE				1149	1150
$EXPAND_FIELD			 760#	 769	 770	 771	 772	 773	 774	 775	 779	 780	 781	 782
				 783	 784	 785	 786	 787	 788
$FALSE				 668	1663	1677	1733	1776	1837	2542	2584	2587	2592	2845	2859
				2879	2893	2972	2998	3246	3301	3377	3384	3611	3622	3932	3998
				4060	4071	4079	4095	4103	4106	4114	4177	4226	4350
$FIELD				 804	 816	 841	 862	 885	 912	 931	1148
$FIELD_SET_SIZE			 808	 827	 851	 873	 900	 922	 949
$FIELD_SET_UNITS		 950
$INTEGER			 937	 938	 939	 940	 941	 942
$MCB				 684	 696	 708	 975	1035	1040	1109	1279	1288	1368	2056	2087
				2212	2429	2818	2848	2873	2903	3206	3223	3279	3624
$NICE$ERR_CWS			1276	1365	2841
$NICE$ERR_IPV			3462	3705
$NICE$ERR_MPE			1592	1616	1621	2336
$NICE$ERR_NRE			2816	2987
$NICE$ERR_OCM			3208
$NICE$ERR_PAM			2950	3677
$NICE$ERR_PNA			1257	1356	3448	3451	3769
$NICE$ERR_REE			1583	1598	2450#	3210	3484	3488	3494	3509	3516
$NICE$ERR_UFO			2898
$NICE$ERR_URC			1267	2053	2812	2868	2883	3232
$NML$CLR			1392
$NML$GET_HOST_ID		1122	1162
$NML$MAP_NODE_ID		2576	4141
$NML$PVB_ENTRY_BLOCK		1683	1769	2310	2405	2702	3437	3779#	4046	4267	4404
$NML$PVB_ENTRY_VECTOR		1088#	1660	3436	3927	3993	4761
$NML$RETURN			1524	1601
$NML$SET			1309
$NML$SHOW			1452	3199	3226
$NML$SHOZC			1483#
$NML$ZERO			1411
$NTCLR				1324	2863
$NTRET				1231	1496
$NTSET				1230	1233	2805
$NTSHO				1419	2314
$NTSZC				1478	2331
$NTZRO				1407
$POINTER			 890	 891	 935	 936
$SHORT_INTEGER			 867	 868
$SHOW_EDB			 768#	2046
$SHOW_NDB			 778#	1889
$SHOW				 793	 794	 955
$SIGNED_BYTE_VALUE		2160	2953	3680
$SUB_BLOCK			 818	 819	 821	 822	 823	 844	 845	 847	 865	 866	 869	 888
				 889	 915	 934
$TINY_INTEGER			 895	 896	 918
$TOPS20				1252	1351	1469	1500	1559
$TRUE				1123	1135	1726	1801	1852	1854	2491	2590	3397	3610	3613	3616
				3945	4010	4093	4101	4147	4230
$X25				 684	 696	 708	2056	2087	2212	2818	2848	2873	2903	3278	3371
				3624	4506
%BLISS16			1230	1231	1233	1324	1407	1419	1478	1496	2315	2332	2805	2863
%BLISS36			1230	1231	1233	1324	1407	1419	1478	1496	2314	2331	2805	2863
%GLOBAL_ROUTINE			1003#	1179#	1625#	1735#	1803#	1856#
%REMAINING			1036	1037	1056
%ROUTINE			1898#	1955#	2001#	2088#	2213#	2266#	2340#	2464#	2493#	2595#	2640#	2674#
				2761#	2904#	3002#	3040#	3085#	3159#	3248#	3305#	3399#	3522#	3566#	3625#
				3715#	3833#	3884#	3947#	4012#	4149#	4179#	4232#	4322#	4352#	4606#	4645#
				4689#	4725#	4782#