Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/nml/nmlnic.lst
There are no other files named nmlnic.lst in the archive.
								24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page   1
								 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (1)

;	  0001	! <BRANDT.DEVELOPMENT>NMLNIC.BLI.1 22-Sep-82 10:45:21, Edit by BRANDT
;	  0002	!
;	  0003	!  Ident 31.
;	  0004	!   Change code in NML$NICE_RESPONSE so that the RB_ERROR_DETAIL field
;	  0005	!   of the REQUEST block is reset after the current value is obtained.
;	  0006	!   Otherwise, if the request block is reused for multiple response
;	  0007	!   messages, we would have an invalid entry in that field.
;	  0008	!
;	  0009	! NET:<BRANDT.DEVELOPMENT>NMLNIC.BLI.2 9-Jun-82 12:10:12, Edit by BRANDT
;	  0010	!
;	  0011	!  Ident 30.
;	  0012	!   Change code in NML$NICE_EXECUTE that returns the memory allocated
;	  0013	!   for node entity id so that the memory is returned by the completion
;	  0014	!   routine, since this field will still be referenced.
;	  0015	!
;	  0016	! NET:<BRANDT.DEVELOPMENT>NMLNIC.BLI.2 10-May-82 9:10:12, Edit by BRANDT
;	  0017	!
;	  0018	!  Ident 29.
;	  0019	!   Move code to NML$NICE_RESPONSE that inserts an entity id field into
;	  0020	!   the response message.  This code used to be in routine
;	  0021	!   COPY_RESP_PARAMETERS in module NMLRCZ.
;	  0022	!
;	  0023	! NET:<BRANDT.DEVELOPMENT>NMLNIC.BLI.2 5-May-82 14:17:12, Edit by BRANDT
;	  0024	!
;	  0025	! Ident 28.
;	  0026	! Initialize the error detail value in the Request Block to -1.
;	  0027	! Unless the response message is type 2 or -128, always put the error
;	  0028	! detail into the response message.  Error detail values of 0 could be
;	  0029	! significant.
;	  0030	!
;	  0031	! NET:<PECKHAM.DEVELOPMENT>NMLNIC.BLI.2 28-Apr-82 09:07:12, Edit by PECKHAM
;	  0032	!
;	  0033	! Ident 27.
;	  0034	! Do not abort function if node entity does not map in NML$NICE_EXECUTE.
;	  0035	!
;	  0036	! NET:<VOBA.NML.DEVELOPMENT>NMLNIC.BLI.11 21-Apr-82 13:17:05, Edit by VOBA
;	  0037	!
;	  0038	! Ident 26.
;	  0039	! Fix code to check for CLEAR_PURGE bit inside the SCAN_PARAMETER routine,
;	  0040	! instead of prior to invoking it.
;	  0041	!
;	  0042	! NET:<VOBA.NML.DEVELOPMENT>NMLNIC.BLI.5 26-Mar-82 18:17:12, Edit by VOBA
;	  0043	!
;	  0044	! Ident 25.
;	  0045	! Fix VY_ZERO_REQUEST to check for qualifier in ZERO MODULE message.
;	  0046	!
;	  0047	! NET:<VOBA.NML.DEVELOPMENT>NMLNIC.BLI.11 25-Mar-82 16:43:55, Edit by VOBA
;	  0048	!
;	  0049	! Ident 24.
;	  0050	! Fix SCAN_PARAMETER not to allow multiple qualified NICE message to be
;	  0051	! processed.
;	  0052	! Fix NML$NICE_EXECUTE not to map LOGGING entity id to upper case.
								24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page   2
								 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (1)

;	  0053	!
;	  0054	! NET:<VOBA.NML.DEVELOPMENT>NMLNIC.BLI.4 15-Mar-82 17:34:30, Edit by VOBA
;	  0055	!
;	  0056	! Ident 23.
;	  0057	! Fix SCAN_PARAMETER to recognize KNOWN SINKS which has CMN data format
;	  0058	! to be formatted with node count byte as -1.
;	  0059	!
;	  0060	! NET:<VOBA.NML.DEVELOPMENT>NMLNIC.BLI.5 12-Mar-82 14:43:20, Edit by VOBA
;	  0061	!
;	  0062	! Ident 22.
;	  0063	! Fix SCAN_PARAMETER to recognize KNOWN qualifiers (i.e. NETWORKS, DTES,
;	  0064	! GROUPS, and DESTINATIONS) which have AI data format to be formatted with
;	  0065	! count byte as -1.
;	  0066	! Fix the local LENGTH in SCAN_PARAMETER to recognize signed byte value
;	  0067	! from the NICE message count byte.
;	  0068	! Remove checking of multiple qualifiers from SCAN_PARAMETER. Let the lower
;	  0069	! layers do that.
;	  0070	!
;	  0071	! NET:<VOBA.NML.DEVELOPMENT>NMLNIC.BLI.5  5-Mar-82 10:37:06, Edit by VOBA
;	  0072	!
;	  0073	! Ident 21.
;	  0074	! Fix a typo in SCAN_PARAMETER.
;	  0075	!
;	  0076	! <VOBA.NML.DEVELOPMENT>NMLNIC.BLI.3  5-Mar-82 09:57:46, Edit by VOBA
;	  0077	!
;	  0078	! Ident 20.
;	  0079	! Fix bug in SCAN_PARAMETER to check for the count byte before proceeding
;	  0080	! to parse the rest of the AI and HI fields.
;	  0081	!
;	  0082	! NET:<VOBA.NML.DEVELOPMENT>NMLNIC.BLI.3  2-Mar-82 15:37:57, Edit by VOBA
;	  0083	!
;	  0084	! Ident 19.
;	  0085	! Remove pointer to parameter name text in data structure of NICE parameter
;	  0086	! tables for MCB.
;	  0087	!
;	  0088	! <VOBA.NML.DEVELOPMENT>NMLNIC.BLI.3  1-Mar-82 17:25:19, Edit by VOBA
;	  0089	!
;	  0090	! Ident 18.
;	  0091	! Fix bug in SCAN_PARAMETER to obtain the NICE parameter entry to parameter
;	  0092	! table given to the routine.
;	  0093	!
;	  0094	! NET:<VOBA.NML.DEVELOPMENT>NMLNIC.BLI.3  1-Mar-82 14:46:28, Edit by VOBA
;	  0095	!
;	  0096	! Ident 17.
;	  0097	! Assign HI a distinct value different from AI.
;	  0098	!
;	  0099	! <VOBA.NML.DEVELOPMENT>NMLNIC.BLI.24  1-Mar-82 11:31:04, Edit by VOBA
;	  0100	!
;	  0101	! Ident 16.
;	  0102	! Replace routines NODE_PARAMETERS, LINE_PARAMETERS, CIRCUIT_PARAMETERS,
;	  0103	! LOGGING_PARAMETERS, and MODULE_PARAMETERS with one single routine to do
;	  0104	! the parsing, SCAN_PARAMETER. This routine verifies the format of each
								24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page   3
								 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (1)

;	  0105	! parameter based on the data type information supplied by the data structure
;	  0106	! tables in NMLPRM module. The entry of each parameter in the tables is
;	  0107	! requested by reference to the routine NML$PARAMETER_LOOKUP in routine
;	  0108	! VERIFY_PARAMETERS.
;	  0109	!
;	  0110	! NET:<PECKHAM.DEVELOPMENT>NMLNIC.BLI                       Edit by PECKHAM
;	  0111	!
;	  0112	! Ident 15.
;	  0113	! Handle logging entity in GET_ENTITY_ID.
;	  0114	! Cleanup in VY_LOGGING_PARAMETERS.
;	  0115	!
;	  0116	! NET:<PECKHAM.DEVELOPMENT>NMLNIC.BLI.2  7-Feb-82 19:12:55, Edit by PECKHAM
;	  0117	!
;	  0118	! Ident 14.
;	  0119	! Fix HOST parameter number to 141 (bug introduced in #13.)
;	  0120	!
;	  0121	! NET:<PECKHAM.DEVELOPMENT>NMLNIC.BLI.3  7-Feb-82 17:46:53, Edit by PECKHAM
;	  0122	!
;	  0123	! Ident 13.
;	  0124	! Fix NODE_PARAMETERS, CIRCUIT_PARAMETERS, LINE_PARAMETERS, LOGGING_PARAMETERS
;	  0125	! to avoid references to NCPTAB variables.
;	  0126	!
;	  0127	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.2 13-Nov-81 15:25:18, Edit by BRANDT
;	  0128	!
;	  0129	! Ident 12.
;	  0130	!   Fix NML$NICE_EXECUTE to have RB_NICE_ENTITY in the request block
;	  0131	!   point to an entity id that is always uppercase.  This allows NML and
;	  0132	!   lower layers to match either lower or uppercase entity id strings
;	  0133	!   without further checking for case distinction.
;	  0134	!
;	  0135	! NET:<DECNET20-V3P1.NMU.LIBRARY>NMLNIC.BLI.2 30-Jun-81 13:07:51, Edit by GUNN
;	  0136	!
;	  0137	! Ident 11.
;	  0138	! Fix VY_LOAD_REQUEST, VY_DUMP_REQUEST, and VY_TRIGGER_REQUEST to
;	  0139	! set RB_NICE_ENTITY_TYPE before calling GET_ENTITY_ID.
;	  0140	!
;	  0141	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.2 16-Jun-81 17:05:14, Edit by GUNN
;	  0142	!
;	  0143	! Ident 10.
;	  0144	! Make VY_TEST_REQUEST set RB_NICE_ENTITY_TYPE to NODE when calling
;	  0145	! VERIFY_PARAMETERS. All LOOP parameters are NODE parameters regardless
;	  0146	! of the actual entity type for the request.
;	  0147	!
;	  0148	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.8 10-Apr-81 11:26:06, Edit by GUNN
;	  0149	!
;	  0150	! Modify code in NML$DEQUEUE_REQUEST to not build a NICE response
;	  0151	! message on failure of the processing routine if the RB_RESPONSE_LENGTH
;	  0152	! is non-zero. This allows the lower level routines to build their own
;	  0153	! response messages if they desire.
;	  0154	! Modify NML$NICE_RESPONSE to allocate a response buffer only if one
;	  0155	! has not previously been allocated.
;	  0156	!
								24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page   4
								 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (1)

;	  0157	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.6  7-Apr-81 12:22:49, Edit by GUNN
;	  0158	!
;	  0159	! Fix test for valid entity type in VY_LOAD_REQUEST, VY_DUMP_REQUEST,
;	  0160	! & VY_TRIGGER_REQUEST.
;	  0161	!
;	  0162	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.4  1-Apr-81 16:35:26, Edit by GUNN
;	  0163	!
;	  0164	! Fix GET_ENTITY_ID to store pointer to non NODE entity ids pointing
;	  0165	! at length byte.
;	  0166	!
;	  0167	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.3  1-Apr-81 10:26:09, Edit by GUNN
;	  0168	!
;	  0169	! Change allowed entity type in VY_LOAD_REQUEST, VY_DUMP_REQUEST,
;	  0170	! and VY_TRIGGER_REQUEST from LINE to CIRCUIT.
;	  0171	!
;	  0172	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.2 13-Mar-81 12:40:18, Edit by GUNN
;	  0173	!
;	  0174	! Add code in NML$NICE_EXECUTE to convert executor node id to local
;	  0175	! name.
;	  0176	!
;	  0177	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.3  6-Mar-81 11:19:27, Edit by GUNN
;	  0178	!
;	  0179	! Change all references to [RB_NICE_ENTITY_ID_LENGTH] to be treated
;	  0180	! as signed fullword value.
;	  0181	!
;	  0182	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.10  3-Mar-81 16:12:57, Edit by GUNN
;	  0183	!
;	  0184	! Remove references to RB_RESPONSE_SIZE field of request block.
;	  0185	!
;	  0186	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.8 27-Feb-81 15:19:12, Edit by GUNN
;	  0187	!
;	  0188	! Fix problem of passing length of buffer in $NML$MAP_NODE_ID macro call.
;	  0189	!
;	  0190	! NET:<DECNET20-V3P1.NML>NMLNIC.BLI.4 12-Feb-81 17:06:29, Edit by GUNN
;	  0191	!
;	  0192	! Add code to map an input node name to node address.
;	  0193	! Update copyright date.
;	  0194	!
		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page   5
								 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (2)

;	  0195	%title 'NMLNIC -- NICE Message Verifier'
;	  0196	module NMLNIC	(
;	  0197			ident = 'X03.30'
;	  0198			) =
;	  0199	begin
;	  0200	
;	  0201	!
;	  0202	!                    COPYRIGHT (c) 1980, 1981, 1982
;	  0203	!                    DIGITAL EQUIPMENT CORPORATION
;	  0204	!                        Maynard, Massachusetts
;	  0205	!
;	  0206	!     This software is furnished under a license and may  be  used
;	  0207	!     and copied only in accordance with the terms of such license
;	  0208	!     and with the inclusion of the above copyright notice.   This
;	  0209	!     software  or any other copies thereof may not be provided or
;	  0210	!     otherwise made available to any other person.  No  title  to
;	  0211	!     and ownership of the software is hereby transferred.
;	  0212	!
;	  0213	!     The information  in  this  software  is  subject  to  change
;	  0214	!     without  notice  and should not be construed as a commitment
;	  0215	!     by DIGITAL EQUIPMENT CORPORATION.
;	  0216	!
;	  0217	!     DIGITAL assumes no responsibility for the use or reliability
;	  0218	!     of  its  software  on  equipment  which  is  not supplied by
;	  0219	!     DIGITAL.
;	  0220	!
;	  0221	
;	  0222	!++
;	  0223	! FACILITY:	DECnet-10/20 V3.0 Network Management Layer (NML)
;	  0224	!
;	  0225	! ABSTRACT:
;	  0226	!
;	  0227	!	This module contains the routines which perform NICE request message
;	  0228	!	receipt and processing. NICE requests are processed from the NML
;	  0229	!	request queue. The queued NICE messages are checked for valid syntax
;	  0230	!	and converted to an internal format suitable for processing by the
;	  0231	!	local NML. Invalid NICE request messages result in a NICE error
;	  0232	!	response message being built and the NML request is terminated. Valid
;	  0233	!	NICE requests are dispatched for processing.
;	  0234	!
;	  0235	! ENVIRONMENT:	TOPS-10/20 & MCB/RSX11 User mode under NML
;	  0236	!
;	  0237	! AUTHOR: Dale C. Gunn , CREATION DATE:  5-Nov-80
;	  0238	!
;	  0239	! MODIFIED BY:
;	  0240	!
;	  0241	!	, : VERSION
;	  0242	! 01	-
;	  0243	!--
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page   6
X03.30								 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (3)

;	  0244	
;	  0245	!
;	  0246	! INCLUDE FILES:
;	  0247	!
;	  0248	
;	  0249	library 'NMLLIB';                       ! All required definitions
;	  0250	require 'NMLEXT';                       ! NML External routines
;	  0356	
;	  0357	!
;	  0358	! TABLE OF CONTENTS
;	  0359	!
;	  0360	
;	  0361	forward routine
;	  0362	        NML$DEQUEUE_REQUEST : novalue,  ! Dequeues NICE requests for processing
;	  0363		NML$NICE_VERIFY,                ! Performs syntax verification
;	  0364	        VY_LOAD_REQUEST,                ! Verify NICE load request message
;	  0365	        VY_DUMP_REQUEST,                ! Verify NICE dump request message
;	  0366	        VY_TRIGGER_REQUEST,             ! Verify NICE trigger request message
;	  0367	        VY_TEST_REQUEST,                ! Verify NICE test request message
;	  0368	        VY_CHANGE_REQUEST,              ! Verify NICE change request message
;	  0369	        VY_READ_REQUEST,                ! Verify NICE read request message
;	  0370	        VY_ZERO_REQUEST,                ! Verify NICE zero request message
;	  0371	        VY_SYSTEM_SPECIFIC,             ! Verify NICE system specific message
;	  0372	        GET_ENTITY_ID,                  ! Extracts entity id from NICE message
;	  0373	        SCAN_PARAMETER,                 ! Scan and verify parameter data fields
;	  0374	        VERIFY_PARAMETERS,              ! Verify NICE request parameters
;	  0375		NML$NICE_EXECUTE,               ! Dispatches NICE request for execute
;	  0376		NML$NICE_RESPONSE : novalue;    ! Builds NICE response message
;	  0377	
;	  0378	!
;	  0379	! MACROS:
;	  0380	!
;	  0381	         
;	  0382	macro
;	M 0383	     NEXTB_NICE =
;	M 0384	         NEXTB (.REQ[RB_NICE_LENGTH],
;	  0385	                REQ[RB_NICE_POSITION]) %;
;	  0386	
;	  0387	macro
;	M 0388	     NEXTF_NICE =
;	M 0389	         NEXTF (.REQ[RB_NICE_LENGTH],
;	M 0390	                REQ[RB_NICE_POSITION],
;	  0391	                .REQ[RB_NICE_POINTER]) %;
;	  0392	
;	  0393	macro
;	M 0394	     NEXTW_NICE =
;	M 0395	         NEXTW (.REQ[RB_NICE_LENGTH],
;	  0396	                REQ[RB_NICE_POSITION]) %;
;	  0397	
;	  0398	macro
;	M 0399	     NEXTN_NICE (N) =
;	M 0400	         NEXTN (.REQ[RB_NICE_LENGTH],
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page   7
X03.30								 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (3)

;	M 0401	                REQ[RB_NICE_POSITION],
;	  0402	                N) %;
;	  0403	
;	  0404	macro
;	M 0405	     ADVANCE (POINTER, COUNT) =
;	  0406	         POINTER = ch$plus (.POINTER, COUNT) %;
;	  0407	
;	  0408	$show (all);
;	  0409	
;	  0410	$field TABLE_ENTRY_FIELDS =
;	  0411	    set
;	L 0412	    NICE_PARAMETER_NUMBER = [$integer],
; %PRINT:				  [0,0,16,1]   (+%O'0')
;	L 0413	    NICE_PARAMETER_ENTRY = [$address]
; %PRINT:				  [1,0,16,0]   (+%O'2')
;	  0414	    tes;
;	  0415	
;	  0416	literal
;	L 0417	    TABLE_ENTRY_SIZE = $field_set_size;
; %PRINT:				  2 fullwords
;	  0418	
;	  0419	macro
;	M 0420	     NICE_PARAMETER_TABLE_ENTRY =
;	  0421	         block [TABLE_ENTRY_SIZE] field (TABLE_ENTRY_FIELDS) %;
;	  0422	
;	  0423	$field PARAMETER_ENTRY_FIELDS =
;	  0424	    set
;	U 0425	    %if not $MCB %then
;	U 0426	    _NAME = [$pointer],                 ! Pointer to parameter name text
;	  0427	    %fi
;	  0428	
;	L 0429	    _DATA_FORMAT = [$byte],             ! Data format code
; %PRINT:				  [0,0,8,0]   (+%O'0')
;	L 0430	    _DATA_TYPE = [$byte],               ! Data type byte
; %PRINT:				  [0,8,8,0]   (+%O'1')
;	  0431	
;	  0432	        $align (byte)                   ! Restrictions
;	L 0433	    _NML_PARAMETER = [$bit],            ! ON if NML owns this parameter
; %PRINT:				  [1,0,1,0]   (+%O'2')
;	L 0434	    _SETTABILITY = [$bits(2)],
; %PRINT:				  [1,1,2,0]   (+%O'2')
;	L 0435	    _APPLICABILITY = [$bits(5)],
; %PRINT:				  [1,3,5,0]   (+%O'2')
;	  0436	        $overlay (_SETTABILITY)         ! Settability restrictions
;	L 0437	    _READ_ONLY = [$bit],
; %PRINT:				  [1,1,1,0]   (+%O'2')
;	L 0438	    _WRITE_ONLY = [$bit],
; %PRINT:				  [1,2,1,0]   (+%O'2')
;	  0439	        $continue
;	  0440	        $overlay (_APPLICABILITY)       ! Applicability restrictions
;	L 0441	    _QUALIFIED = [$bit],
; %PRINT:				  [1,3,1,0]   (+%O'2')
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page   8
X03.30								 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (3)

;	L 0442	    _EXECUTOR_ONLY = [$bit],
; %PRINT:				  [1,4,1,0]   (+%O'2')
;	L 0443	    _OTHER_NODES = [$bits(3)],
; %PRINT:				  [1,5,3,0]   (+%O'2')
;	  0444	        $overlay (_OTHER_NODES)
;	L 0445	    _ADJACENT_ONLY = [$bit],
; %PRINT:				  [1,5,1,0]   (+%O'2')
;	L 0446	    _REMOTE_ONLY = [$bit],
; %PRINT:				  [1,6,1,0]   (+%O'2')
;	L 0447	    _SINK_ONLY = [$bit],
; %PRINT:				  [1,7,1,0]   (+%O'2')
;	  0448	        $continue
;	  0449	        $continue
;	  0450	
;	  0451	        $align (byte)                   ! Information type applicability
;	L 0452	    _CHARACTERISTIC = [$bit],
; %PRINT:				  [1,8,1,0]   (+%O'3')
;	L 0453	    _STATUS = [$bit],
; %PRINT:				  [1,9,1,0]   (+%O'3')
;	L 0454	    _SUMMARY = [$bit],
; %PRINT:				  [1,10,1,0]   (+%O'3')
;	L 0455	    _EVENTS = [$bit],
; %PRINT:				  [1,11,1,0]   (+%O'3')
;	L 0456	    _QUALIFIER = [$bit],
; %PRINT:				  [1,12,1,0]   (+%O'3')
;	  0457	
;	L 0458	    _CLEARABLE = [$bit],
; %PRINT:				  [1,13,1,0]   (+%O'3')
;	L 0459	    _UPPER_CASE = [$bit]
; %PRINT:				  [1,14,1,0]   (+%O'3')
;	  0460	    tes;
;	  0461	
;	  0462	literal
;	L 0463	    PARAMETER_ENTRY_SIZE = $field_set_size;
; %PRINT:				  2 fullwords
;	  0464	
;	  0465	macro
;	M 0466	     PARAMETER_ENTRY =
;	  0467	         block [PARAMETER_ENTRY_SIZE] field (PARAMETER_ENTRY_FIELDS) %;
;	  0468	
;	  0469	$show (none);
;	  0470	
;	  0471	!
;	  0472	! EXTERNAL REFERENCES:
;	  0473	!
;	  0474	
;	  0475	external routine
;	  0476	         NML$LOAD,                      ! Perform remote node load
;	  0477	         NML$DUMP,                      ! Perform remote node dump
;	  0478	         NML$TRIGGER,                   ! Perform remote node trigger boot
;	  0479	         NML$TEST,                      ! Perform loopback test
;	  0480	         NML$CHANGE,                    ! Perform change parameters
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page   9
X03.30								 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (3)

;	  0481	         NML$READ,                      ! Perform read information
;	  0482	         NML$ZERO,                      ! Perform zero counters
;	  0483	         NML$SYSTEM_SPECIFIC,           ! Perform system specific operations
;	  0484	         NML$PARAMETER_LOOKUP,          ! Lookup NICE parameter
;	  0485	         NMU$NETWORK_LOCAL;             ! Obtain pointer to local node id
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  10
X03.30		NML$DEQUEUE_REQUEST as NL_DQR			 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (4)

;	  0486	%global_routine ('NML$DEQUEUE_REQUEST') : novalue =
;	  0487	
;	  0488	!++
;	  0489	! FUNCTIONAL DESCRIPTION:
;	  0490	!
;	  0491	!	Retrieves NML NICE requests from the NML request queue, calls
;	  0492	!       NML$NICE_VERIFY to perform NICE message syntax verification and
;	  0493	!       preprocessing. If the NICE request message is valid calls 
;	  0494	!       NML$NICE_EXECUTE to perform the requested NICE function, otherwise
;	  0495	!       calls NML$NICE_RESPONSE to build a NICE error response message and
;	  0496	!       NML$REQUEST_FINISH to remove the request from the active queue.
;	  0497	!       This is the main processing loop for NML requests. 
;	  0498	!
;	  0499	! FORMAL PARAMETERS
;	  0500	!
;	  0501	!	NONE.
;	  0502	!
;	  0503	! IMPLICIT INPUTS
;	  0504	!
;	  0505	!	NML NICE request queue.
;	  0506	!
;	  0507	! ROUTINE VALUE:
;	  0508	!
;	  0509	!	NONE.
;	  0510	!
;	  0511	! SIDE EFFECTS:
;	  0512	!
;	  0513	!	The processed NML NICE local request is removed from the active queue.
;	  0514	!
;	  0515	!--
;	  0516	
;	  0517	    begin
;	  0518	
;	  0519	    bind
;	  0520		NULL = UPLIT(0);		! An "I-0" message
;	  0521	
;	  0522	    local
;	  0523	         RTN_COD,                       ! NICE return code
;	  0524	         REQ: ref REQUEST_BLOCK;        ! Address of NML request block
;	  0525	
;	  0526	    !
;	  0527	    ! Top level loop for NICE requests
;	  0528	    !
;	  0529	
;	  0530	    while 1                             ! Main NML Request processing loop
;	  0531	    do begin
;	  0532	       REQ = NML$REQUEST_NEXT (RT$LOCAL); ! Get next local request to process
;	  0533	       REQ[RB_NICE_POSITION] = 0;       ! Initialize position in NICE message
;	  0534	       REQ[RB_NICE_POINTER] = ch$ptr(.REQ[RB_NICE],,8); ! Initialize pointer
;	  0535	       REQ[RB_ERROR_DETAIL] = -1;       ! Initialize for response msg
;	  0536	       REQ[RB_ERROR_POINTER] = ch$ptr (NULL,,8);
;	  0537	
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  11
X03.30		NML$DEQUEUE_REQUEST as NL_DQR			 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (4)

;	  0538	       RTN_COD = NML$NICE_VERIFY (.REQ); ! Verify the NICE message syntax 
;	  0539	
;	  0540	       if .RTN_COD eql 1                ! And if valid
;	  0541	       then RTN_COD = NML$NICE_EXECUTE (.REQ); ! Execute the request
;	  0542	
;	  0543	       if .RTN_COD neq 1                ! If failed
;	  0544	       then begin                       ! Return reason if invalid 
;	  0545	            if .REQ[RB_RESPONSE_LENGTH] eql 0
;	  0546	            then begin
;	  0547	                 REQ[RB_RETURN_CODE] = .RTN_COD; ! Set return code in RB
;	  0548	                 NML$NICE_RESPONSE (.REQ); ! Format response message
;	  0549	                 end;
;	  0550	            NML$REQUEST_FINISH (.REQ);  ! Queue request for completion
;	  0551	            end;
;	  0552	       end;
;	  0553	
;	  0554	    end;				! End of NML$DEQUEUE_REQUEST


						.TITLE	NMLNIC NMLNIC -- NICE Message Verifier
						.IDENT	/X03.30/


000000						.PSECT	$PLIT$,  RO ,  D  
000000	000000 				P.AAA:	.WORD	0


						.GLOBL	US.CREATE, US.ABORT, US.FINI, US.COMPLETE
						.GLOBL	US.ERROR, US.INSERT, US.REMOVE
						.GLOBL	US.QRESET, US.QQINS, US.QQREM
						.GLOBL	US.QQSET, US.QQEXT, US.EVENT, US.WAIT
						.GLOBL	US.FLAG, US.SLEEP, US.CURRENT
						.GLOBL	US.DESCHEDULE, UM.RESET, UM.INITIALIZE
						.GLOBL	UM.GET, UM.RELEASE, UQ.RESET, UQ.INSERT
						.GLOBL	UQ.REMOVE, UQ.EXTRACT, UQ.LENGTH
						.GLOBL	UQ.SCAN, UQ.SEXTRACT, NL.INIT
						.GLOBL	NL.RENTER, NL.REMOVE, NL.FINISH
						.GLOBL	NL.LOD, NL.DMP, NL.TRG, NL.TST
						.GLOBL	NL.CHG, NL.REA, NL.ZRO, NL.SPC
						.GLOBL	NL.PLU, UN.LOCAL


	000000'				NULL=		    P.AAA


						.SBTTL	NL.DQR NML$DEQUEUE_REQUEST as NL_DQR
000000						.PSECT	$CODE$,  RO 

000000	004167  000000G			NL.DQR::JSR	R1,$SAVE2			;					0486
000004	012746  000001 			1$:	MOV	#1,-(SP)			;					0532
000010	004767  000000G				JSR	PC,NL.REMOVE
000014	010001 					MOV	R0,R1				; *,REQ
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  12
X03.30		NML$DEQUEUE_REQUEST as NL_DQR			 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (4)

000016	005061  000070 				CLR	70(R1)				; *(REQ)				0533
000022	016161  000024  000066 			MOV	24(R1),66(R1)			; *(REQ),*(REQ)				0534
000030	012761  177777  000120 			MOV	#-1,120(R1)			; *,*(REQ)				0535
000036	012761  000000' 000122 			MOV	#NULL,122(R1)			; *,*(REQ)				0536
000044	010116 					MOV	R1,(SP)				; REQ,*					0538
000046	004767  000000V				JSR	PC,NML$NICE.VERIFY
000052	010002 					MOV	R0,R2				; *,RTN.COD
000054	020227  000001 				CMP	R2,#1				; RTN.COD,*				0540
000060	001007 					BNE	2$
000062	010116 					MOV	R1,(SP)				; REQ,*					0541
000064	004767  000000V				JSR	PC,NML$NICE.EXECUTE
000070	010002 					MOV	R0,R2				; *,RTN.COD
000072	020227  000001 				CMP	R2,#1				; RTN.COD,*				0543
000076	001413 					BEQ	4$
000100	005761  000034 			2$:	TST	34(R1)				; *(REQ)				0545
000104	001005 					BNE	3$
000106	110261  000116 				MOVB	R2,116(R1)			; RTN.COD,*(REQ)			0547
000112	010116 					MOV	R1,(SP)				; REQ,*					0548
000114	004767  000000V				JSR	PC,NL.RSP
000120	010116 				3$:	MOV	R1,(SP)				; REQ,*					0550
000122	004767  000000G				JSR	PC,NL.FINISH
000126	005726 				4$:	TST	(SP)+				;					0531
000130	000725 					BR	1$				;					0530
; Routine Size:  45 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  5 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  13
X03.30		NML$NICE_VERIFY					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (5)

;	  0555	%routine ('NML$NICE_VERIFY', REQ) =
;	  0556	
;	  0557	!++
;	  0558	! FUNCTIONAL DESCRIPTION:
;	  0559	!
;	  0560	!	Performs syntax verification of NICE request messages.
;	  0561	!
;	  0562	! FORMAL PARAMETERS
;	  0563	!
;	  0564	!	REQ - Address of NICE request block (RB).
;	  0565	!
;	  0566	! IMPLICIT INPUTS
;	  0567	!
;	  0568	!	NONE.
;	  0569	!
;	  0570	! ROUTINE VALUE:
;	  0571	!
;	  0572	!	1 if NICE request message has valid syntax.
;	  0573	!       NEGATIVE NICE error return code if invalid.
;	  0574	!
;	  0575	! SIDE EFFECTS:
;	  0576	!
;	  0577	!	NONE.
;	  0578	!
;	  0579	!--
;	  0580	
;	  0581	    begin
;	  0582	
;	  0583	    map
;	  0584	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0585	
;	  0586	    if NEXTB_NICE                       ! Get NICE request function code
;	  0587	    then REQ[RB_NICE_FUNCTION] = GETB (REQ[RB_NICE_POINTER])
;	L 0588	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0589	
;	  0590	    !
;	  0591	    ! Verify validity of NICE function code and dispatch to function
;	  0592	    ! specific verification routine if valid.
;	  0593	    !
;	  0594	
;	  0595	    case .REQ[RB_NICE_FUNCTION] from LOAD_ to SYSTEM_SPECIFIC_ of
;	  0596	        set
;	  0597	        [LOAD_]:
;	  0598	             return VY_LOAD_REQUEST (.REQ);
;	  0599	        [DUMP_]:
;	  0600	             return VY_DUMP_REQUEST (.REQ);
;	  0601	        [TRIGGER_]:
;	  0602	             return VY_TRIGGER_REQUEST (.REQ);
;	  0603	        [TEST_]:
;	  0604	             return VY_TEST_REQUEST (.REQ);
;	  0605	        [CHANGE_]:
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  14
X03.30		NML$NICE_VERIFY					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (5)

;	  0606	             return VY_CHANGE_REQUEST (.REQ);
;	  0607	        [READ_]:
;	  0608	             return VY_READ_REQUEST (.REQ);
;	  0609	        [ZERO_]:
;	  0610	             return VY_ZERO_REQUEST (.REQ);
;	  0611	        [SYSTEM_SPECIFIC_]:
;	  0612	             return VY_SYSTEM_SPECIFIC (.REQ);
;	  0613	        [inrange,
;	  0614	         outrange]:
;	L 0615	            return $NICE$ERR_UFO;
; %PRINT:	Unrecognized function or option
;	  0616	        tes;
;	  0617	
;	  0618	    end;				! End of NML$NICE_VERIFY


						.SBTTL	NML$NICE.VERIFY NML$NICE_VERIFY
000000	010146 				NML$NICE.VERIFY:
						MOV	R1,-(SP)			;					0555
000002	016601  000004 				MOV	4(SP),R1			; REQ,*					0586
000006	016100  000070 				MOV	70(R1),R0			; *,$$NEXTB.TEMP
000012	005200 					INC	R0				; $$NEXTB.TEMP
000014	026100  000030 				CMP	30(R1),R0			; *,$$NEXTB.TEMP
000020	002412 					BLT	1$
000022	010061  000070 				MOV	R0,70(R1)			; $$NEXTB.TEMP,*
000026	005261  000066 				INC	66(R1)				;					0587
000032	016100  000066 				MOV	66(R1),R0
000036	116061  177777  000072 			MOVB	-1(R0),72(R1)
000044	000403 					BR	2$				;					0586
000046	012700  177776 			1$:	MOV	#-2,R0				;					0588
000052	000456 					BR	13$
000054	005000 				2$:	CLR	R0				;					0595
000056	156100  000072 				BISB	72(R1),R0
000062	162700  000017 				SUB	#17,R0
000066	020027  000007 				CMP	R0,#7
000072	101003 					BHI	3$
000074	006300 					ASL	R0
000076	066007  000002'				ADD	P.AAB(R0),PC			; Case dispatch
000102	012700  177777 			3$:	MOV	#-1,R0
000106	000440 					BR	13$
000110	010146 				4$:	MOV	R1,-(SP)			;					0598
000112	004767  000000V				JSR	PC,VY.LOAD.REQUEST
000116	000433 					BR	12$
000120	010146 				5$:	MOV	R1,-(SP)			;					0600
000122	004767  000000V				JSR	PC,VY.DUMP.REQUEST
000126	000427 					BR	12$
000130	010146 				6$:	MOV	R1,-(SP)			;					0602
000132	004767  000000V				JSR	PC,VY.TRIGGER.REQUEST
000136	000423 					BR	12$
000140	010146 				7$:	MOV	R1,-(SP)			;					0604
000142	004767  000000V				JSR	PC,VY.TEST.REQUEST
000146	000417 					BR	12$
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  15
X03.30		NML$NICE_VERIFY					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (5)

000150	010146 				8$:	MOV	R1,-(SP)			;					0606
000152	004767  000000V				JSR	PC,VY.CHANGE.REQUEST
000156	000413 					BR	12$
000160	010146 				9$:	MOV	R1,-(SP)			;					0608
000162	004767  000000V				JSR	PC,VY.READ.REQUEST
000166	000407 					BR	12$
000170	010146 				10$:	MOV	R1,-(SP)			;					0610
000172	004767  000000V				JSR	PC,VY.ZERO.REQUEST
000176	000403 					BR	12$
000200	010146 				11$:	MOV	R1,-(SP)			;					0612
000202	004767  000000V				JSR	PC,VY.SYSTEM.SPECIFIC
000206	005726 				12$:	TST	(SP)+
000210	012601 				13$:	MOV	(SP)+,R1			;					0555
000212	000207 					RTS	PC
; Routine Size:  70 words,	Routine Base:  $CODE$ + 0132
; Maximum stack depth per invocation:  3 words


000002						.PSECT	$PLIT$,  RO ,  D  

					P.AAB:						; CASE Table for NML$NICE.VERIFY+0076	0595
000002	000006 					.WORD	6				; [4$]
000004	000016 					.WORD	16				; [5$]
000006	000026 					.WORD	26				; [6$]
000010	000036 					.WORD	36				; [7$]
000012	000046 					.WORD	46				; [8$]
000014	000056 					.WORD	56				; [9$]
000016	000066 					.WORD	66				; [10$]
000020	000076 					.WORD	76				; [11$]
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  16
X03.30		VY_LOAD_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (6)

;	  0619	%routine ('VY_LOAD_REQUEST', REQ) =
;	  0620	
;	  0621	!++
;	  0622	! FUNCTIONAL DESCRIPTION:
;	  0623	!
;	  0624	!	Performs syntax verification of NICE load request messages.
;	  0625	!
;	  0626	! FORMAL PARAMETERS
;	  0627	!
;	  0628	!	REQ - Address of NICE request block (RB).
;	  0629	!
;	  0630	! IMPLICIT INPUTS
;	  0631	!
;	  0632	!	NONE.
;	  0633	!
;	  0634	! ROUTINE VALUE:
;	  0635	!
;	  0636	!	1 if NICE request message has valid syntax.
;	  0637	!       NEGATIVE NICE error return code if invalid.
;	  0638	!
;	  0639	! SIDE EFFECTS:
;	  0640	!
;	  0641	!	NONE.
;	  0642	!
;	  0643	!--
;	  0644	
;	  0645	    begin
;	  0646	
;	  0647	    literal
;	  0648	           SET_DEFINE = 0;              ! Parameters with value as in SET
;	  0649	
;	  0650	    map
;	  0651	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0652	
;	  0653	    local
;	  0654	         OPT: block[1] field (LOAD_OPTIONS), ! NICE request options
;	  0655	         RTN_COD;                       ! NICE return code
;	  0656	
;	  0657	    if NEXTB_NICE
;	  0658	    then OPT = GETB (REQ[RB_NICE_POINTER]) ! Get the option byte
;	L 0659	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0660	
;	  0661	    REQ[RB_NICE_OPTION] = .OPT;         ! Store option byte in RB
;	  0662	
;	  0663	    if (.OPT[LO_ENTITY_TYPE] neq NODE_E) ! Check for allowable entity
;	  0664	    and (.OPT[LO_ENTITY_TYPE] neq CIRCUIT_)
;	L 0665	    then return $NICE$ERR_UFO;
; %PRINT:	Unrecognized function or option
;	  0666	
;	  0667	    if .OPT[LO_RESERVED] neq 0          ! Check for reserved bits all zero
;	L 0668	    then return $NICE$ERR_UFO;
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  17
X03.30		VY_LOAD_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (6)

; %PRINT:	Unrecognized function or option
;	  0669	
;	  0670	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[LO_ENTITY_TYPE]; ! Get the entity type
;	  0671	    RTN_COD = GET_ENTITY_ID (.REQ);     ! Process entity id
;	  0672	
;	  0673	    if .RTN_COD leq -1                  ! Check for valid entity id
;	  0674	    then return .RTN_COD;
;	  0675	
;	  0676	    REQ[RB_NICE_ENTITY_TYPE] = NODE_E;  ! Parameters belong to node
;	  0677	    RTN_COD = VERIFY_PARAMETERS (SET_DEFINE, .REQ);
;	  0678	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[LO_ENTITY_TYPE]; ! Get the entity type
;	  0679	
;	  0680	    return .RTN_COD;
;	  0681	    end;				! End of VY_LOAD_REQUEST


						.SBTTL	VY.LOAD.REQUEST VY_LOAD_REQUEST
000346						.PSECT	$CODE$,  RO 

000000	004167  000000G			VY.LOAD.REQUEST:
						JSR	R1,$SAVE4			;					0619
000004	016603  000014 				MOV	14(SP),R3			; REQ,*					0657
000010	016300  000070 				MOV	70(R3),R0			; *,$$NEXTB.TEMP
000014	005200 					INC	R0				; $$NEXTB.TEMP
000016	026300  000030 				CMP	30(R3),R0			; *,$$NEXTB.TEMP
000022	002412 					BLT	1$
000024	010063  000070 				MOV	R0,70(R3)			; $$NEXTB.TEMP,*
000030	005263  000066 				INC	66(R3)				;					0658
000034	016300  000066 				MOV	66(R3),R0
000040	005002 					CLR	R2				; OPT
000042	156002  177777 				BISB	-1(R0),R2			; *,OPT
000046	000403 					BR	2$				;					0657
000050	012700  177776 			1$:	MOV	#-2,R0				;					0659
000054	000207 					RTS	PC
000056	110263  000073 			2$:	MOVB	R2,73(R3)			; OPT,*					0661
000062	032702  000007 				BIT	#7,R2				; *,OPT					0663
000066	001406 					BEQ	3$
000070	010200 					MOV	R2,R0				; OPT,*					0664
000072	042700  177770 				BIC	#177770,R0
000076	020027  000003 				CMP	R0,#3
000102	001003 					BNE	4$				;					0665
000104	032702  000370 			3$:	BIT	#370,R2				; *,OPT					0667
000110	001403 					BEQ	5$
000112	012700  177777 			4$:	MOV	#-1,R0				;					0668
000116	000207 					RTS	PC
000120	012704  000074 			5$:	MOV	#74,R4				;					0670
000124	060304 					ADD	R3,R4
000126	010200 					MOV	R2,R0				; OPT,*
000130	042700  177770 				BIC	#177770,R0
000134	105014 					CLRB	(R4)
000136	150014 					BISB	R0,(R4)
000140	010346 					MOV	R3,-(SP)			;					0671
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  18
X03.30		VY_LOAD_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (6)

000142	004767  000000V				JSR	PC,GET.ENTITY.ID
000146	010001 					MOV	R0,R1				; *,RTN.COD
000150	002002 					BGE	6$				;					0673
000152	005726 					TST	(SP)+				;					0674
000154	000414 					BR	7$
000156	105014 				6$:	CLRB	(R4)				;					0676
000160	005016 					CLR	(SP)				;					0677
000162	010346 					MOV	R3,-(SP)
000164	004767  000000V				JSR	PC,VERIFY.PARAMETERS
000170	010001 					MOV	R0,R1				; *,RTN.COD
000172	010200 					MOV	R2,R0				; OPT,*					0678
000174	042700  177770 				BIC	#177770,R0
000200	105014 					CLRB	(R4)
000202	150014 					BISB	R0,(R4)
000204	022626 					CMP	(SP)+,(SP)+			;					0619
000206	010100 				7$:	MOV	R1,R0				; RTN.COD,*				0645
000210	000207 					RTS	PC				;					0619
; Routine Size:  69 words,	Routine Base:  $CODE$ + 0346
; Maximum stack depth per invocation:  8 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  19
X03.30		VY_DUMP_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (7)

;	  0682	%routine ('VY_DUMP_REQUEST', REQ) =
;	  0683	
;	  0684	!++
;	  0685	! FUNCTIONAL DESCRIPTION:
;	  0686	!
;	  0687	!	Performs syntax verification of NICE dump request messages.
;	  0688	!
;	  0689	! FORMAL PARAMETERS
;	  0690	!
;	  0691	!	REQ - Address of NICE request block (RB).
;	  0692	!
;	  0693	! IMPLICIT INPUTS
;	  0694	!
;	  0695	!	NONE.
;	  0696	!
;	  0697	! ROUTINE VALUE:
;	  0698	!
;	  0699	!	1 if NICE request message has valid syntax.
;	  0700	!       NEGATIVE NICE error return code if invalid.
;	  0701	!
;	  0702	! SIDE EFFECTS:
;	  0703	!
;	  0704	!	NONE.
;	  0705	!
;	  0706	!--
;	  0707	
;	  0708	    begin
;	  0709	
;	  0710	    literal
;	  0711	           SET_DEFINE = 0;              ! Parameters with value as in SET
;	  0712	
;	  0713	    map
;	  0714	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0715	
;	  0716	    local
;	  0717	         OPT: block[1] field (DUMP_OPTIONS), ! NICE request options
;	  0718	         RTN_COD;                       ! NICE return code
;	  0719	
;	  0720	    if NEXTB_NICE
;	  0721	    then OPT = GETB (REQ[RB_NICE_POINTER]) ! Get the option byte
;	L 0722	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0723	
;	  0724	    REQ[RB_NICE_OPTION] = .OPT;         ! Store option byte in RB
;	  0725	
;	  0726	    if (.OPT[DO_ENTITY_TYPE] neq NODE_E) ! Check for allowable entity
;	  0727	    and (.OPT[DO_ENTITY_TYPE] neq CIRCUIT_)
;	L 0728	    then return $NICE$ERR_UFO;
; %PRINT:	Unrecognized function or option
;	  0729	
;	  0730	    if .OPT[DO_RESERVED] neq 0          ! Check for reserved bits all zero
;	L 0731	    then return $NICE$ERR_UFO;
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  20
X03.30		VY_DUMP_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (7)

; %PRINT:	Unrecognized function or option
;	  0732	
;	  0733	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[DO_ENTITY_TYPE]; ! Get the entity type
;	  0734	    RTN_COD = GET_ENTITY_ID (.REQ);     ! Process entity id
;	  0735	
;	  0736	    if .RTN_COD leq -1                  ! Check for valid entity id
;	  0737	    then return .RTN_COD;
;	  0738	
;	  0739	    REQ[RB_NICE_ENTITY_TYPE] = NODE_E;  ! Parameters belong to node
;	  0740	    RTN_COD = VERIFY_PARAMETERS (SET_DEFINE, .REQ);
;	  0741	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[DO_ENTITY_TYPE]; ! Get the entity type
;	  0742	
;	  0743	    return .RTN_COD;
;	  0744	    end;				! End of VY_DUMP_REQUEST


						.SBTTL	VY.DUMP.REQUEST VY_DUMP_REQUEST
000000	004167  000000G			VY.DUMP.REQUEST:
						JSR	R1,$SAVE4			;					0682
000004	016603  000014 				MOV	14(SP),R3			; REQ,*					0720
000010	016300  000070 				MOV	70(R3),R0			; *,$$NEXTB.TEMP
000014	005200 					INC	R0				; $$NEXTB.TEMP
000016	026300  000030 				CMP	30(R3),R0			; *,$$NEXTB.TEMP
000022	002412 					BLT	1$
000024	010063  000070 				MOV	R0,70(R3)			; $$NEXTB.TEMP,*
000030	005263  000066 				INC	66(R3)				;					0721
000034	016300  000066 				MOV	66(R3),R0
000040	005002 					CLR	R2				; OPT
000042	156002  177777 				BISB	-1(R0),R2			; *,OPT
000046	000403 					BR	2$				;					0720
000050	012700  177776 			1$:	MOV	#-2,R0				;					0722
000054	000207 					RTS	PC
000056	110263  000073 			2$:	MOVB	R2,73(R3)			; OPT,*					0724
000062	032702  000007 				BIT	#7,R2				; *,OPT					0726
000066	001406 					BEQ	3$
000070	010200 					MOV	R2,R0				; OPT,*					0727
000072	042700  177770 				BIC	#177770,R0
000076	020027  000003 				CMP	R0,#3
000102	001003 					BNE	4$				;					0728
000104	032702  000370 			3$:	BIT	#370,R2				; *,OPT					0730
000110	001403 					BEQ	5$
000112	012700  177777 			4$:	MOV	#-1,R0				;					0731
000116	000207 					RTS	PC
000120	012704  000074 			5$:	MOV	#74,R4				;					0733
000124	060304 					ADD	R3,R4
000126	010200 					MOV	R2,R0				; OPT,*
000130	042700  177770 				BIC	#177770,R0
000134	105014 					CLRB	(R4)
000136	150014 					BISB	R0,(R4)
000140	010346 					MOV	R3,-(SP)			;					0734
000142	004767  000000V				JSR	PC,GET.ENTITY.ID
000146	010001 					MOV	R0,R1				; *,RTN.COD
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  21
X03.30		VY_DUMP_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (7)

000150	002002 					BGE	6$				;					0736
000152	005726 					TST	(SP)+				;					0737
000154	000414 					BR	7$
000156	105014 				6$:	CLRB	(R4)				;					0739
000160	005016 					CLR	(SP)				;					0740
000162	010346 					MOV	R3,-(SP)
000164	004767  000000V				JSR	PC,VERIFY.PARAMETERS
000170	010001 					MOV	R0,R1				; *,RTN.COD
000172	010200 					MOV	R2,R0				; OPT,*					0741
000174	042700  177770 				BIC	#177770,R0
000200	105014 					CLRB	(R4)
000202	150014 					BISB	R0,(R4)
000204	022626 					CMP	(SP)+,(SP)+			;					0682
000206	010100 				7$:	MOV	R1,R0				; RTN.COD,*				0708
000210	000207 					RTS	PC				;					0682
; Routine Size:  69 words,	Routine Base:  $CODE$ + 0560
; Maximum stack depth per invocation:  8 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  22
X03.30		VY_TRIGGER_REQUEST				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (8)

;	  0745	%routine ('VY_TRIGGER_REQUEST', REQ) =
;	  0746	
;	  0747	!++
;	  0748	! FUNCTIONAL DESCRIPTION:
;	  0749	!
;	  0750	!	Performs syntax verification of NICE trigger boot request messages.
;	  0751	!
;	  0752	! FORMAL PARAMETERS
;	  0753	!
;	  0754	!	REQ - Address of NICE request block (RB).
;	  0755	!
;	  0756	! IMPLICIT INPUTS
;	  0757	!
;	  0758	!	NONE.
;	  0759	!
;	  0760	! ROUTINE VALUE:
;	  0761	!
;	  0762	!	1 if NICE request message has valid syntax.
;	  0763	!       NEGATIVE NICE error return code if invalid.
;	  0764	!
;	  0765	! SIDE EFFECTS:
;	  0766	!
;	  0767	!	NONE.
;	  0768	!
;	  0769	!--
;	  0770	
;	  0771	    begin
;	  0772	
;	  0773	    literal
;	  0774	           SET_DEFINE = 0;              ! Parameters with value as in SET
;	  0775	
;	  0776	    map
;	  0777	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0778	
;	  0779	    local
;	  0780	         OPT: block[1] field (BOOT_OPTIONS), ! NICE request options
;	  0781	         RTN_COD;                       ! NICE return code
;	  0782	
;	  0783	    if NEXTB_NICE
;	  0784	    then OPT = GETB (REQ[RB_NICE_POINTER]) ! Get the option byte
;	L 0785	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0786	
;	  0787	    REQ[RB_NICE_OPTION] = .OPT;         ! Store option byte in RB
;	  0788	
;	  0789	    if (.OPT[BO_ENTITY_TYPE] neq NODE_E) ! Check for allowable entity
;	  0790	    and (.OPT[BO_ENTITY_TYPE] neq CIRCUIT_)
;	L 0791	    then return $NICE$ERR_UFO;
; %PRINT:	Unrecognized function or option
;	  0792	
;	  0793	    if .OPT[BO_RESERVED] neq 0          ! Check for reserved bits all zero
;	L 0794	    then return $NICE$ERR_UFO;
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  23
X03.30		VY_TRIGGER_REQUEST				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (8)

; %PRINT:	Unrecognized function or option
;	  0795	
;	  0796	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[BO_ENTITY_TYPE]; ! Get the entity type
;	  0797	    RTN_COD = GET_ENTITY_ID (.REQ);     ! Process entity id
;	  0798	
;	  0799	    if .RTN_COD leq -1                  ! Check for valid entity id
;	  0800	    then return .RTN_COD;
;	  0801	
;	  0802	    REQ[RB_NICE_ENTITY_TYPE] = NODE_E;  ! Parameters belong to node
;	  0803	    RTN_COD = VERIFY_PARAMETERS (SET_DEFINE, .REQ);
;	  0804	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[BO_ENTITY_TYPE]; ! Get the entity type
;	  0805	
;	  0806	    return .RTN_COD;
;	  0807	    end;				! End of VY_TRIGGER_REQUEST


						.SBTTL	VY.TRIGGER.REQUEST VY_TRIGGER_REQUEST
000000	004167  000000G			VY.TRIGGER.REQUEST:
						JSR	R1,$SAVE4			;					0745
000004	016603  000014 				MOV	14(SP),R3			; REQ,*					0783
000010	016300  000070 				MOV	70(R3),R0			; *,$$NEXTB.TEMP
000014	005200 					INC	R0				; $$NEXTB.TEMP
000016	026300  000030 				CMP	30(R3),R0			; *,$$NEXTB.TEMP
000022	002412 					BLT	1$
000024	010063  000070 				MOV	R0,70(R3)			; $$NEXTB.TEMP,*
000030	005263  000066 				INC	66(R3)				;					0784
000034	016300  000066 				MOV	66(R3),R0
000040	005002 					CLR	R2				; OPT
000042	156002  177777 				BISB	-1(R0),R2			; *,OPT
000046	000403 					BR	2$				;					0783
000050	012700  177776 			1$:	MOV	#-2,R0				;					0785
000054	000207 					RTS	PC
000056	110263  000073 			2$:	MOVB	R2,73(R3)			; OPT,*					0787
000062	032702  000007 				BIT	#7,R2				; *,OPT					0789
000066	001406 					BEQ	3$
000070	010200 					MOV	R2,R0				; OPT,*					0790
000072	042700  177770 				BIC	#177770,R0
000076	020027  000003 				CMP	R0,#3
000102	001003 					BNE	4$				;					0791
000104	032702  000370 			3$:	BIT	#370,R2				; *,OPT					0793
000110	001403 					BEQ	5$
000112	012700  177777 			4$:	MOV	#-1,R0				;					0794
000116	000207 					RTS	PC
000120	012704  000074 			5$:	MOV	#74,R4				;					0796
000124	060304 					ADD	R3,R4
000126	010200 					MOV	R2,R0				; OPT,*
000130	042700  177770 				BIC	#177770,R0
000134	105014 					CLRB	(R4)
000136	150014 					BISB	R0,(R4)
000140	010346 					MOV	R3,-(SP)			;					0797
000142	004767  000000V				JSR	PC,GET.ENTITY.ID
000146	010001 					MOV	R0,R1				; *,RTN.COD
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  24
X03.30		VY_TRIGGER_REQUEST				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (8)

000150	002002 					BGE	6$				;					0799
000152	005726 					TST	(SP)+				;					0800
000154	000414 					BR	7$
000156	105014 				6$:	CLRB	(R4)				;					0802
000160	005016 					CLR	(SP)				;					0803
000162	010346 					MOV	R3,-(SP)
000164	004767  000000V				JSR	PC,VERIFY.PARAMETERS
000170	010001 					MOV	R0,R1				; *,RTN.COD
000172	010200 					MOV	R2,R0				; OPT,*					0804
000174	042700  177770 				BIC	#177770,R0
000200	105014 					CLRB	(R4)
000202	150014 					BISB	R0,(R4)
000204	022626 					CMP	(SP)+,(SP)+			;					0745
000206	010100 				7$:	MOV	R1,R0				; RTN.COD,*				0771
000210	000207 					RTS	PC				;					0745
; Routine Size:  69 words,	Routine Base:  $CODE$ + 0772
; Maximum stack depth per invocation:  8 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  25
X03.30		VY_TEST_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (9)

;	  0808	%routine ('VY_TEST_REQUEST', REQ) =
;	  0809	
;	  0810	!++
;	  0811	! FUNCTIONAL DESCRIPTION:
;	  0812	!
;	  0813	!	Performs syntax verification of NICE test request messages.
;	  0814	!
;	  0815	! FORMAL PARAMETERS
;	  0816	!
;	  0817	!	REQ - Address of NICE request block (RB).
;	  0818	!
;	  0819	! IMPLICIT INPUTS
;	  0820	!
;	  0821	!	NONE.
;	  0822	!
;	  0823	! ROUTINE VALUE:
;	  0824	!
;	  0825	!	1 if NICE request message has valid syntax.
;	  0826	!       NEGATIVE NICE error return code if invalid.
;	  0827	!
;	  0828	! SIDE EFFECTS:
;	  0829	!
;	  0830	!	NONE.
;	  0831	!
;	  0832	!--
;	  0833	
;	  0834	    begin
;	  0835	
;	  0836	    literal
;	  0837	           SET_DEFINE = 0;              ! Parameters with value as in SET
;	  0838	
;	  0839	    map
;	  0840	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0841	
;	  0842	    local
;	  0843	         OPT: block[1] field (TEST_OPTIONS), ! NICE request options
;	  0844	         RTN_COD;                       ! NICE return code
;	  0845	
;	  0846	    if NEXTB_NICE                       ! Process option byte if present
;	  0847	    then REQ[RB_NICE_OPTION] = GETB (REQ[RB_NICE_POINTER])
;	L 0848	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0849	
;	  0850	    OPT = .REQ[RB_NICE_OPTION];         ! Get the option byte
;	  0851	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[TO_ENTITY_TYPE]; ! Get the entity type
;	  0852	
;	  0853	    if .OPT[TO_RESERVED] neq 0          ! Check for reserved bits all zero
;	L 0854	    then return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0855	
;	  0856	    RTN_COD = GET_ENTITY_ID (.REQ);     ! Process entity id
;	  0857	
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  26
X03.30		VY_TEST_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (9)

;	  0858	    if .RTN_COD leq -1                  ! Check for valid entity id
;	  0859	    then return .RTN_COD;
;	  0860	
;	  0861	    if .REQ[RB_NICE_ENTITY_TYPE] neq NODE_E ! Get and check entity type
;	  0862	    then begin                          ! LINE type loop test
;	  0863	         local ENT_TYP;                 ! Temporary for entity type
;	  0864	
;	  0865	         if .OPT[TO_ACCESS_CONTROL]     ! Access control not valid with LINE
;	L 0866	         then return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0867	         ENT_TYP = .REQ[RB_NICE_ENTITY_TYPE]; ! Save entity type
;	  0868	         REQ[RB_NICE_ENTITY_TYPE] = NODE_E; ! Parameters are for NODE entity
;	  0869		 RTN_COD = VERIFY_PARAMETERS (SET_DEFINE,.REQ); ! Process parameters
;	  0870	         REQ[RB_NICE_ENTITY_TYPE] = .ENT_TYP;
;	  0871	         end
;	  0872	    else begin                          ! NODE type loop test
;	  0873	
;	  0874	         ! Clear access control fields in RB for our use 
;	  0875	
;	  0876	         REQ[RB_USER_LENGTH] = REQ[RB_USER] = 0;
;	  0877	         REQ[RB_PASSWORD_LENGTH] = REQ[RB_PASSWORD] = 0;
;	  0878	         REQ[RB_ACCOUNT_LENGTH] = REQ[RB_ACCOUNT] = 0;
;	  0879	
;	  0880	         if .OPT[TO_ACCESS_CONTROL]
;	  0881	         then begin                     ! Process the 3 access control fields 
;	  0882	              if NEXTF_NICE
;	  0883	              then begin                ! Process User id field if in message
;	  0884	                   REQ[RB_USER_LENGTH] = GETB (REQ[RB_NICE_POINTER]);
;	  0885	                   if (.REQ[RB_USER_LENGTH] gtr 0)
;	  0886	                   and (.REQ[RB_NICE_LENGTH] gtr .REQ[RB_NICE_POSITION])
;	  0887	                   then REQ[RB_USER] = .REQ[RB_NICE_POINTER];
;	  0888	                   ADVANCE (REQ[RB_NICE_POINTER], .REQ[RB_USER_LENGTH]);  
;	  0889	                   end
;	L 0890	              else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0891	
;	  0892	              if NEXTF_NICE
;	  0893	              then begin                     ! Process password field
;	  0894	                   REQ[RB_PASSWORD_LENGTH] = GETB (REQ[RB_NICE_POINTER]);
;	  0895	                   if (.REQ[RB_PASSWORD_LENGTH] gtr 0)
;	  0896	                   and (.REQ[RB_NICE_LENGTH] gtr .REQ[RB_NICE_POSITION])
;	  0897	                   then REQ[RB_PASSWORD] = .REQ[RB_NICE_POINTER];
;	  0898	                   ADVANCE (REQ[RB_NICE_POINTER], .REQ[RB_PASSWORD_LENGTH]);  
;	  0899	                   end
;	L 0900	              else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0901	
;	  0902	              if NEXTF_NICE
;	  0903	              then begin                     ! Process account field
;	  0904	                   REQ[RB_ACCOUNT_LENGTH] = GETB (REQ[RB_NICE_POINTER]);
;	  0905	                   if (.REQ[RB_ACCOUNT_LENGTH] gtr 0)
;	  0906	                   and (.REQ[RB_NICE_LENGTH] gtr .REQ[RB_NICE_POSITION])
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  27
X03.30		VY_TEST_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (9)

;	  0907	                   then REQ[RB_ACCOUNT] = .REQ[RB_NICE_POINTER];
;	  0908	                   ADVANCE (REQ[RB_NICE_POINTER], .REQ[RB_ACCOUNT_LENGTH]);  
;	  0909	                   end
;	L 0910	              else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0911	              end;
;	  0912	
;	  0913		 RTN_COD = VERIFY_PARAMETERS (SET_DEFINE, .REQ);
;	  0914	         end;
;	  0915	
;	  0916	    return .RTN_COD;
;	  0917	    end;				! End of VY_TEST_REQUEST


						.SBTTL	VY.TEST.REQUEST VY_TEST_REQUEST
000000	004167  000000G			VY.TEST.REQUEST:
						JSR	R1,$SAVE5			;					0808
000004	162706  000006 				SUB	#6,SP
000010	016605  000024 				MOV	24(SP),R5			; REQ,*					0846
000014	012766  000030  000004 			MOV	#30,4(SP)
000022	060566  000004 				ADD	R5,4(SP)
000026	012766  000070  000002 			MOV	#70,2(SP)
000034	060566  000002 				ADD	R5,2(SP)
000040	017600  000002 				MOV	@2(SP),R0			; *,$$NEXTB.TEMP
000044	005200 					INC	R0				; $$NEXTB.TEMP
000046	027600  000004 				CMP	@4(SP),R0			; *,$$NEXTB.TEMP
000052	002002 					BGE	2$
000054	000167  000526 			1$:	JMP	10$
000060	010076  000002 			2$:	MOV	R0,@2(SP)			; $$NEXTB.TEMP,*
000064	005265  000066 				INC	66(R5)				;					0847
000070	016500  000066 				MOV	66(R5),R0
000074	116065  177777  000073 			MOVB	-1(R0),73(R5)
000102	005002 					CLR	R2				; OPT					0850
000104	156502  000073 				BISB	73(R5),R2			; *,OPT
000110	012703  000074 				MOV	#74,R3				;					0851
000114	060503 					ADD	R5,R3
000116	010200 					MOV	R2,R0				; OPT,*
000120	042700  177770 				BIC	#177770,R0
000124	105013 					CLRB	(R3)
000126	150013 					BISB	R0,(R3)
000130	032702  000170 				BIT	#170,R2				; *,OPT					0853
000134	001347 					BNE	1$				;					0854
000136	010546 					MOV	R5,-(SP)			;					0856
000140	004767  000000V				JSR	PC,GET.ENTITY.ID
000144	010004 					MOV	R0,R4				; *,RTN.COD
000146	002003 					BGE	3$				;					0858
000150	005726 					TST	(SP)+				;					0859
000152	000167  000452 				JMP	13$
000156	105713 				3$:	TSTB	(R3)				;					0861
000160	001417 					BEQ	5$
000162	105702 					TSTB	R2				; OPT					0865
000164	100002 					BPL	4$				;					0866
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  28
X03.30		VY_TEST_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (9)

000166	000167  000412 				JMP	9$
000172	005001 				4$:	CLR	R1				; ENT.TYP				0867
000174	151301 					BISB	(R3),R1				; *,ENT.TYP
000176	105013 					CLRB	(R3)				;					0868
000200	005016 					CLR	(SP)				;					0869
000202	010546 					MOV	R5,-(SP)
000204	004767  000000V				JSR	PC,VERIFY.PARAMETERS
000210	010004 					MOV	R0,R4				; *,RTN.COD
000212	110113 					MOVB	R1,(R3)				; ENT.TYP,*				0870
000214	000167  000406 				JMP	12$				;					0861
000220	012701  000054 			5$:	MOV	#54,R1				;					0876
000224	060501 					ADD	R5,R1
000226	005065  000052 				CLR	52(R5)
000232	005011 					CLR	(R1)
000234	012766  000060  000002 			MOV	#60,2(SP)			;					0877
000242	060566  000002 				ADD	R5,2(SP)
000246	005065  000056 				CLR	56(R5)
000252	005076  000002 				CLR	@2(SP)
000256	012703  000064 				MOV	#64,R3				;					0878
000262	060503 					ADD	R5,R3
000264	005065  000062 				CLR	62(R5)
000270	005013 					CLR	(R3)
000272	105702 					TSTB	R2				; OPT					0880
000274	100147 					BPL	11$
000276	017600  000004 				MOV	@4(SP),R0			; *,$$NEXTF.TEMP			0882
000302	005200 					INC	R0				; $$NEXTF.TEMP
000304	027600  000006 				CMP	@6(SP),R0			; *,$$NEXTF.TEMP
000310	002535 					BLT	9$
000312	117576  000066  000004 			MOVB	@66(R5),@4(SP)
000320	042776  177400  000004 			BIC	#177400,@4(SP)
000326	060076  000004 				ADD	R0,@4(SP)			; $$NEXTF.TEMP,*
000332	012702  000066 				MOV	#66,R2				;					0884
000336	060502 					ADD	R5,R2
000340	005212 					INC	(R2)
000342	011200 					MOV	(R2),R0
000344	116011  177777 				MOVB	-1(R0),(R1)
000350	105061  000001 				CLRB	1(R1)
000354	005711 					TST	(R1)				;					0885
000356	003406 					BLE	6$
000360	027676  000006  000004 			CMP	@6(SP),@4(SP)			;					0886
000366	003402 					BLE	6$
000370	010065  000052 				MOV	R0,52(R5)			;					0887
000374	061112 				6$:	ADD	(R1),(R2)			;					0888
000376	017600  000004 				MOV	@4(SP),R0			; *,$$NEXTF.TEMP			0892
000402	005200 					INC	R0				; $$NEXTF.TEMP
000404	027600  000006 				CMP	@6(SP),R0			; *,$$NEXTF.TEMP
000410	002475 					BLT	9$
000412	117576  000066  000004 			MOVB	@66(R5),@4(SP)
000420	042776  177400  000004 			BIC	#177400,@4(SP)
000426	060076  000004 				ADD	R0,@4(SP)			; $$NEXTF.TEMP,*
000432	012700  000066 				MOV	#66,R0				;					0894
000436	060500 					ADD	R5,R0
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  29
X03.30		VY_TEST_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (9)

000440	005210 					INC	(R0)
000442	011002 					MOV	(R0),R2
000444	116276  177777  000002 			MOVB	-1(R2),@2(SP)
000452	042776  177400  000002 			BIC	#177400,@2(SP)
000460	003406 					BLE	7$				;					0895
000462	027676  000006  000004 			CMP	@6(SP),@4(SP)			;					0896
000470	003402 					BLE	7$
000472	010265  000056 				MOV	R2,56(R5)			;					0897
000476	067610  000002 			7$:	ADD	@2(SP),(R0)			;					0898
000502	017600  000004 				MOV	@4(SP),R0			; *,$$NEXTF.TEMP			0902
000506	005200 					INC	R0				; $$NEXTF.TEMP
000510	027600  000006 				CMP	@6(SP),R0			; *,$$NEXTF.TEMP
000514	002433 					BLT	9$
000516	117576  000066  000004 			MOVB	@66(R5),@4(SP)
000524	042776  177400  000004 			BIC	#177400,@4(SP)
000532	060076  000004 				ADD	R0,@4(SP)			; $$NEXTF.TEMP,*
000536	012702  000066 				MOV	#66,R2				;					0904
000542	060502 					ADD	R5,R2
000544	005212 					INC	(R2)
000546	011200 					MOV	(R2),R0
000550	116013  177777 				MOVB	-1(R0),(R3)
000554	105063  000001 				CLRB	1(R3)
000560	005713 					TST	(R3)				;					0905
000562	003406 					BLE	8$
000564	027676  000006  000004 			CMP	@6(SP),@4(SP)			;					0906
000572	003402 					BLE	8$
000574	010065  000062 				MOV	R0,62(R5)			;					0907
000600	061312 				8$:	ADD	(R3),(R2)			;					0908
000602	000404 					BR	11$				;					0902
000604	005726 				9$:	TST	(SP)+				;					0910
000606	012700  177776 			10$:	MOV	#-2,R0
000612	000407 					BR	14$
000614	005016 				11$:	CLR	(SP)				;					0913
000616	010546 					MOV	R5,-(SP)
000620	004767  000000V				JSR	PC,VERIFY.PARAMETERS
000624	010004 					MOV	R0,R4				; *,RTN.COD
000626	022626 				12$:	CMP	(SP)+,(SP)+			;					0808
000630	010400 				13$:	MOV	R4,R0				; RTN.COD,*				0834
000632	062706  000006 			14$:	ADD	#6,SP				;					0808
000636	000207 					RTS	PC
; Routine Size:  208 words,	Routine Base:  $CODE$ + 1204
; Maximum stack depth per invocation:  12 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  30
X03.30		VY_CHANGE_REQUEST				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (10)

;	  0918	%routine ('VY_CHANGE_REQUEST', REQ) =
;	  0919	
;	  0920	!++
;	  0921	! FUNCTIONAL DESCRIPTION:
;	  0922	!
;	  0923	!	Performs syntax verification of NICE change parameter request messages.
;	  0924	!
;	  0925	! FORMAL PARAMETERS
;	  0926	!
;	  0927	!	REQ - Address of NICE request block (RB).
;	  0928	!
;	  0929	! IMPLICIT INPUTS
;	  0930	!
;	  0931	!	NONE.
;	  0932	!
;	  0933	! ROUTINE VALUE:
;	  0934	!
;	  0935	!	1 if NICE request message has valid syntax.
;	  0936	!       NEGATIVE NICE error return code if invalid.
;	  0937	!
;	  0938	! SIDE EFFECTS:
;	  0939	!
;	  0940	!	NONE.
;	  0941	!
;	  0942	!--
;	  0943	
;	  0944	    begin
;	  0945	
;	  0946	    map
;	  0947	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0948	
;	  0949	    local
;	  0950	         OPT: block[1] field (CHANGE_OPTIONS), ! NICE request options
;	  0951	         RTN_COD;                       ! NICE return code
;	  0952	
;	  0953	    if NEXTB_NICE
;	  0954	    then REQ[RB_NICE_OPTION] = GETB (REQ[RB_NICE_POINTER])
;	L 0955	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  0956	
;	  0957	    OPT = .REQ[RB_NICE_OPTION];         ! Get the option byte
;	  0958	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[CO_ENTITY_TYPE]; ! Get the entity type
;	  0959	
;	  0960	    if .OPT[CO_RESERVED] neq 0          ! Check for reserved bits all zero
;	L 0961	    then return $NICE$ERR_UFO;
; %PRINT:	Unrecognized function or option
;	  0962	
;	  0963	    RTN_COD = GET_ENTITY_ID (.REQ);     ! Process entity id
;	  0964	
;	  0965	    if .RTN_COD leq -1                  ! Check for valid entity id
;	  0966	    then return .RTN_COD;
;	  0967	
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  31
X03.30		VY_CHANGE_REQUEST				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (10)

;	  0968	    return VERIFY_PARAMETERS (.OPT[CO_CLEAR_PURGE], .REQ);
;	  0969	    end;				! End of VY_CHANGE_REQUEST


						.SBTTL	VY.CHANGE.REQUEST VY_CHANGE_REQUEST
000000	004167  000000G			VY.CHANGE.REQUEST:
						JSR	R1,$SAVE2			;					0918
000004	016602  000010 				MOV	10(SP),R2			; REQ,*					0953
000010	016200  000070 				MOV	70(R2),R0			; *,$$NEXTB.TEMP
000014	005200 					INC	R0				; $$NEXTB.TEMP
000016	026200  000030 				CMP	30(R2),R0			; *,$$NEXTB.TEMP
000022	002412 					BLT	1$
000024	010062  000070 				MOV	R0,70(R2)			; $$NEXTB.TEMP,*
000030	005262  000066 				INC	66(R2)				;					0954
000034	016200  000066 				MOV	66(R2),R0
000040	116062  177777  000073 			MOVB	-1(R0),73(R2)
000046	000403 					BR	2$				;					0953
000050	012700  177776 			1$:	MOV	#-2,R0				;					0955
000054	000207 					RTS	PC
000056	005001 				2$:	CLR	R1				; OPT					0957
000060	156201  000073 				BISB	73(R2),R1			; *,OPT
000064	010100 					MOV	R1,R0				; OPT,*					0958
000066	042700  177770 				BIC	#177770,R0
000072	105062  000074 				CLRB	74(R2)
000076	150062  000074 				BISB	R0,74(R2)
000102	032701  000070 				BIT	#70,R1				; *,OPT					0960
000106	001403 					BEQ	3$
000110	012700  177777 				MOV	#-1,R0				;					0961
000114	000207 					RTS	PC
000116	010246 				3$:	MOV	R2,-(SP)			;					0963
000120	004767  000000V				JSR	PC,GET.ENTITY.ID
000124	005700 					TST	R0				; RTN.COD				0965
000126	002002 					BGE	4$
000130	005726 					TST	(SP)+				;					0966
000132	000207 					RTS	PC
000134	005016 				4$:	CLR	(SP)				;					0968
000136	032701  000100 				BIT	#100,R1				; *,OPT
000142	001401 					BEQ	5$
000144	005216 					INC	(SP)
000146	010246 				5$:	MOV	R2,-(SP)
000150	004767  000000V				JSR	PC,VERIFY.PARAMETERS
000154	022626 					CMP	(SP)+,(SP)+			;					0918
000156	000207 					RTS	PC
; Routine Size:  56 words,	Routine Base:  $CODE$ + 2044
; Maximum stack depth per invocation:  6 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  32
X03.30		VY_READ_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (11)

;	  0970	%routine ('VY_READ_REQUEST', REQ) =
;	  0971	
;	  0972	!++
;	  0973	! FUNCTIONAL DESCRIPTION:
;	  0974	!
;	  0975	!	Performs syntax verification of NICE read information request messages.
;	  0976	!
;	  0977	! FORMAL PARAMETERS
;	  0978	!
;	  0979	!	REQ - Address of NICE request block (RB).
;	  0980	!
;	  0981	! IMPLICIT INPUTS
;	  0982	!
;	  0983	!	NONE.
;	  0984	!
;	  0985	! ROUTINE VALUE:
;	  0986	!
;	  0987	!	1 if NICE request message has valid syntax.
;	  0988	!       NEGATIVE NICE error return code if invalid.
;	  0989	!
;	  0990	! SIDE EFFECTS:
;	  0991	!
;	  0992	!	NONE.
;	  0993	!
;	  0994	!--
;	  0995	
;	  0996	    begin
;	  0997	
;	  0998	    literal
;	  0999	           SET_DEFINE = 0;              ! Parameters with value as in SET
;	  1000	
;	  1001	    map
;	  1002	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1003	
;	  1004	    local
;	  1005	         OPT: block[1] field (READ_OPTIONS), ! NICE request options
;	  1006	         RTN_COD;                       ! NICE return code
;	  1007	
;	  1008	    if NEXTB_NICE
;	  1009	    then REQ[RB_NICE_OPTION] = GETB (REQ[RB_NICE_POINTER])
;	L 1010	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  1011	
;	  1012	    OPT = .REQ[RB_NICE_OPTION];         ! Get the option byte
;	  1013	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[RO_ENTITY_TYPE]; ! Get the entity type
;	  1014	
;	  1015	    if .OPT[RO_RESERVED] neq 0          ! Check for reserved bits all zero
;	L 1016	    then return $NICE$ERR_UFO;
; %PRINT:	Unrecognized function or option
;	  1017	
;	  1018	    if .OPT[RO_INFO_TYPE] gtru 4        ! Check for valid information type
;	L 1019	    then return $NICE$ERR_UFO;
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  33
X03.30		VY_READ_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (11)

; %PRINT:	Unrecognized function or option
;	  1020	
;	  1021	    RTN_COD = GET_ENTITY_ID (.REQ);     ! Process entity id
;	  1022	
;	  1023	    if .RTN_COD leq -1                  ! Check for valid entity id
;	  1024	    then return .RTN_COD;
;	  1025	
;	  1026	    return VERIFY_PARAMETERS (SET_DEFINE, .REQ);
;	  1027	    end;				! End of VY_READ_REQUEST


						.SBTTL	VY.READ.REQUEST VY_READ_REQUEST
000000	004167  000000G			VY.READ.REQUEST:
						JSR	R1,$SAVE2			;					0970
000004	016601  000010 				MOV	10(SP),R1			; REQ,*					1008
000010	016100  000070 				MOV	70(R1),R0			; *,$$NEXTB.TEMP
000014	005200 					INC	R0				; $$NEXTB.TEMP
000016	026100  000030 				CMP	30(R1),R0			; *,$$NEXTB.TEMP
000022	002412 					BLT	1$
000024	010061  000070 				MOV	R0,70(R1)			; $$NEXTB.TEMP,*
000030	005261  000066 				INC	66(R1)				;					1009
000034	016100  000066 				MOV	66(R1),R0
000040	116061  177777  000073 			MOVB	-1(R0),73(R1)
000046	000403 					BR	2$				;					1008
000050	012700  177776 			1$:	MOV	#-2,R0				;					1010
000054	000207 					RTS	PC
000056	005000 				2$:	CLR	R0				; OPT					1012
000060	156100  000073 				BISB	73(R1),R0			; *,OPT
000064	010002 					MOV	R0,R2				; OPT,*					1013
000066	042702  177770 				BIC	#177770,R2
000072	105061  000074 				CLRB	74(R1)
000076	150261  000074 				BISB	R2,74(R1)
000102	032700  000010 				BIT	#10,R0				; *,OPT					1015
000106	001005 					BNE	3$				;					1016
000110	042700  177617 				BIC	#177617,R0			;					1018
000114	020027  000100 				CMP	R0,#100
000120	101403 					BLOS	4$
000122	012700  177777 			3$:	MOV	#-1,R0				;					1019
000126	000207 					RTS	PC
000130	010146 				4$:	MOV	R1,-(SP)			;					1021
000132	004767  000000V				JSR	PC,GET.ENTITY.ID
000136	005700 					TST	R0				; RTN.COD				1023
000140	002002 					BGE	5$
000142	005726 					TST	(SP)+				;					1024
000144	000207 					RTS	PC
000146	005016 				5$:	CLR	(SP)				;					1026
000150	010146 					MOV	R1,-(SP)
000152	004767  000000V				JSR	PC,VERIFY.PARAMETERS
000156	022626 					CMP	(SP)+,(SP)+			;					0970
000160	000207 					RTS	PC
; Routine Size:  57 words,	Routine Base:  $CODE$ + 2224
; Maximum stack depth per invocation:  6 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  34
X03.30		VY_ZERO_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (12)

;	  1028	%routine ('VY_ZERO_REQUEST', REQ) =
;	  1029	
;	  1030	!++
;	  1031	! FUNCTIONAL DESCRIPTION:
;	  1032	!
;	  1033	!	Performs syntax verification of NICE zero counters request messages.
;	  1034	!
;	  1035	! FORMAL PARAMETERS
;	  1036	!
;	  1037	!	REQ - Address of NICE request block (RB).
;	  1038	!
;	  1039	! IMPLICIT INPUTS
;	  1040	!
;	  1041	!	NONE.
;	  1042	!
;	  1043	! ROUTINE VALUE:
;	  1044	!
;	  1045	!	1 if NICE request message has valid syntax.
;	  1046	!       NEGATIVE NICE error return code if invalid.
;	  1047	!
;	  1048	! SIDE EFFECTS:
;	  1049	!
;	  1050	!	NONE.
;	  1051	!
;	  1052	!--
;	  1053	
;	  1054	    begin
;	  1055	
;	  1056	    literal
;	  1057	           QUALIFIER_PARAMETER = 0;
;	  1058	
;	  1059	    map
;	  1060	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1061	
;	  1062	    local
;	  1063	         OPT: block [1] field (ZERO_OPTIONS), ! NICE request options
;	  1064	         RTN_COD;                       ! NICE return code
;	  1065	
;	  1066	    if NEXTB_NICE                       ! Check for NICE option byte
;	  1067	    then REQ[RB_NICE_OPTION] = GETB (REQ[RB_NICE_POINTER])
;	L 1068	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  1069	
;	  1070	    OPT = .REQ[RB_NICE_OPTION];         ! Get the option byte
;	  1071	    REQ[RB_NICE_ENTITY_TYPE] = .OPT[ZO_ENTITY_TYPE]; ! Get the entity type
;	  1072	
;	  1073	    if .OPT[ZO_RESERVED] neq 0          ! Check for reserved bits all zero
;	L 1074	    then return $NICE$ERR_UFO;
; %PRINT:	Unrecognized function or option
;	  1075	
;	  1076	    RTN_COD = GET_ENTITY_ID (.REQ);     ! Process entity id
;	  1077	
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  35
X03.30		VY_ZERO_REQUEST					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (12)

;	  1078	    if .RTN_COD leq -1                  ! Check for valid entity id
;	  1079	    then return .RTN_COD;
;	  1080	
;	  1081	    if .REQ[RB_NICE_ENTITY_TYPE] eql MODULE_
;	  1082	    then return VERIFY_PARAMETERS (QUALIFIER_PARAMETER, .REQ)
;	  1083	    else return 1;
;	  1084	
;	  1085	    end;				! End of VY_ZERO_REQUEST


						.SBTTL	VY.ZERO.REQUEST VY_ZERO_REQUEST
000000	004167  000000G			VY.ZERO.REQUEST:
						JSR	R1,$SAVE2			;					1028
000004	016601  000010 				MOV	10(SP),R1			; REQ,*					1066
000010	016100  000070 				MOV	70(R1),R0			; *,$$NEXTB.TEMP
000014	005200 					INC	R0				; $$NEXTB.TEMP
000016	026100  000030 				CMP	30(R1),R0			; *,$$NEXTB.TEMP
000022	002412 					BLT	1$
000024	010061  000070 				MOV	R0,70(R1)			; $$NEXTB.TEMP,*
000030	005261  000066 				INC	66(R1)				;					1067
000034	016100  000066 				MOV	66(R1),R0
000040	116061  177777  000073 			MOVB	-1(R0),73(R1)
000046	000403 					BR	2$				;					1066
000050	012700  177776 			1$:	MOV	#-2,R0				;					1068
000054	000207 					RTS	PC
000056	005000 				2$:	CLR	R0				; OPT					1070
000060	156100  000073 				BISB	73(R1),R0			; *,OPT
000064	010002 					MOV	R0,R2				; OPT,*					1071
000066	042702  177770 				BIC	#177770,R2
000072	105061  000074 				CLRB	74(R1)
000076	150261  000074 				BISB	R2,74(R1)
000102	032700  000170 				BIT	#170,R0				; *,OPT					1073
000106	001403 					BEQ	3$
000110	012700  177777 				MOV	#-1,R0				;					1074
000114	000207 					RTS	PC
000116	010146 				3$:	MOV	R1,-(SP)			;					1076
000120	004767  000000V				JSR	PC,GET.ENTITY.ID
000124	005700 					TST	R0				; RTN.COD				1078
000126	002414 					BLT	5$				;					1079
000130	126127  000074  000004 			CMPB	74(R1),#4			;					1081
000136	001006 					BNE	4$
000140	005016 					CLR	(SP)				;					1082
000142	010146 					MOV	R1,-(SP)
000144	004767  000000V				JSR	PC,VERIFY.PARAMETERS
000150	005726 					TST	(SP)+
000152	000402 					BR	5$				;					1081
000154	012700  000001 			4$:	MOV	#1,R0
000160	005726 				5$:	TST	(SP)+				;					1028
000162	000207 					RTS	PC
; Routine Size:  58 words,	Routine Base:  $CODE$ + 2406
; Maximum stack depth per invocation:  6 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  36
X03.30		VY_SYSTEM_SPECIFIC				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (13)

;	  1086	%routine ('VY_SYSTEM_SPECIFIC', REQ) =
;	  1087	
;	  1088	!++
;	  1089	! FUNCTIONAL DESCRIPTION:
;	  1090	!
;	  1091	!	Performs syntax verification of NICE system-specific request messages.
;	  1092	!
;	  1093	! FORMAL PARAMETERS
;	  1094	!
;	  1095	!	REQ - Address of NICE request block (RB).
;	  1096	!
;	  1097	! IMPLICIT INPUTS
;	  1098	!
;	  1099	!	NONE.
;	  1100	!
;	  1101	! ROUTINE VALUE:
;	  1102	!
;	  1103	!	1 if NICE request message has valid syntax.
;	  1104	!       NEGATIVE NICE error return code if invalid.
;	  1105	!
;	  1106	! SIDE EFFECTS:
;	  1107	!
;	  1108	!	NONE.
;	  1109	!
;	  1110	!--
;	  1111	
;	  1112	    begin
;	  1113	
;	  1114	    map
;	  1115	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1116	
;	  1117	    local
;	  1118	         SYS_TYPE,                      ! Specific system type
;	  1119	         RTN_COD;                       ! NICE return code
;	  1120	
;	  1121	    if NEXTB_NICE
;	  1122	    then REQ[RB_NICE_OPTION] = GETB (REQ[RB_NICE_POINTER])
;	L 1123	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  1124	
;	  1125	    SYS_TYPE = .REQ[RB_NICE_OPTION];    ! Get the system type
;	  1126	
;	  1127	    if .SYS_TYPE nequ TOPS20_           ! Check for valid system type
;	L 1128	    then return $NICE$ERR_UFO
; %PRINT:	Unrecognized function or option
;	  1129	    else return 1;
;	  1130	
;	  1131	    end;				! End of VY_SYSTEM_SPECIFIC


						.SBTTL	VY.SYSTEM.SPECIFIC VY_SYSTEM_SPECIFIC
000000	010146 				VY.SYSTEM.SPECIFIC:
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  37
X03.30		VY_SYSTEM_SPECIFIC				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (13)

						MOV	R1,-(SP)			;					1086
000002	016601  000004 				MOV	4(SP),R1			; REQ,*					1121
000006	016100  000070 				MOV	70(R1),R0			; *,$$NEXTB.TEMP
000012	005200 					INC	R0				; $$NEXTB.TEMP
000014	026100  000030 				CMP	30(R1),R0			; *,$$NEXTB.TEMP
000020	002412 					BLT	1$
000022	010061  000070 				MOV	R0,70(R1)			; $$NEXTB.TEMP,*
000026	005261  000066 				INC	66(R1)				;					1122
000032	016100  000066 				MOV	66(R1),R0
000036	116061  177777  000073 			MOVB	-1(R0),73(R1)
000044	000403 					BR	2$				;					1121
000046	012700  177776 			1$:	MOV	#-2,R0				;					1123
000052	000413 					BR	4$
000054	005000 				2$:	CLR	R0				; SYS.TYPE				1125
000056	156100  000073 				BISB	73(R1),R0			; *,SYS.TYPE
000062	020027  000003 				CMP	R0,#3				; SYS.TYPE,*				1127
000066	001403 					BEQ	3$
000070	012700  177777 				MOV	#-1,R0
000074	000402 					BR	4$
000076	012700  000001 			3$:	MOV	#1,R0
000102	012601 				4$:	MOV	(SP)+,R1			;					1086
000104	000207 					RTS	PC
; Routine Size:  35 words,	Routine Base:  $CODE$ + 2572
; Maximum stack depth per invocation:  2 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  38
X03.30		GET_ENTITY_ID					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (14)

;	  1132	%routine ('GET_ENTITY_ID', REQ) =
;	  1133	
;	  1134	!++
;	  1135	! FUNCTIONAL DESCRIPTION:
;	  1136	!
;	  1137	!	Extracts the entity id field from a NICE request message.
;	  1138	!
;	  1139	! FORMAL PARAMETERS
;	  1140	!
;	  1141	!	REQ - Address of NICE request block (RB).
;	  1142	!
;	  1143	! IMPLICIT INPUTS
;	  1144	!
;	  1145	!	NONE.
;	  1146	!
;	  1147	! ROUTINE VALUE:
;	  1148	!
;	  1149	!	1 if NICE request message has valid syntax.
;	  1150	!       NEGATIVE NICE error return code if invalid.
;	  1151	!
;	  1152	! SIDE EFFECTS:
;	  1153	!
;	  1154	!	NONE.
;	  1155	!
;	  1156	!--
;	  1157	
;	  1158	    begin
;	  1159	
;	  1160	    map
;	  1161	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1162	
;	  1163	    local
;	  1164	         FORMAT: $SIGNED_BYTE_VALUE;    ! Local signed entity id length
;	  1165	
;	  1166	    !
;	  1167	    ! Get the entity format byte, checking for entity class case first.
;	  1168	    !
;	  1169	
;	  1170	    if NEXTB_NICE                       ! Entity id in message?
;	  1171	    then begin                          ! Handle entity classes
;	  1172	         FORMAT = GETB (REQ[RB_NICE_POINTER]); ! Fetch format byte
;	  1173	         REQ[RB_NICE_ENTITY_ID_LENGTH] = .FORMAT[VALUE]; ! Get class or length
;	  1174	         if .FORMAT[VALUE] lss 0        ! Check for entity class, ACTIVE, 
;	  1175	         then begin                     ! KNOWN, or LOOP
;	  1176	              REQ[RB_NICE_ENTITY] = 0;  ! Null entity pointer
;	  1177	              return 1;                 ! Done if entity class
;	  1178	              end
;	  1179	         else begin                     ! Back up position so not counted twice
;	  1180	              REQ[RB_NICE_POSITION] = .REQ[RB_NICE_POSITION] - 1;
;	  1181	              ADVANCE (REQ[RB_NICE_POINTER], -1);
;	  1182	              end;
;	  1183	         end
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  39
X03.30		GET_ENTITY_ID					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (14)

;	L 1184	    else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  1185	
;	  1186	    !
;	  1187	    ! Handle specific entity id. Note that we already accounted for the
;	  1188	    ! format byte which if greater than zero is the length byte of an
;	  1189	    ! of an I-field.
;	  1190	    !
;	  1191	
;	  1192	    !
;	  1193	    ! Process rest of entity id format according to entity type.
;	  1194	    !
;	  1195	
;	  1196	    case .REQ[RB_NICE_ENTITY_TYPE] from NODE_E to MODULE_ of
;	  1197	        set
;	  1198	        [NODE_E]:
;	  1199	            begin
;	  1200	            if NEXTF_NICE               ! Is the id field present
;	  1201	            then begin
;	  1202	                 if .REQ[RB_NICE_LENGTH] geq .REQ[RB_NICE_POSITION]
;	  1203	                 then ADVANCE (REQ[RB_NICE_POINTER], 1)
;	L 1204	                 else return $NICE$ERR_IMF; ! No room for image text
; %PRINT:	Invalid message format
;	  1205	                 end
;	L 1206	            else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  1207	
;	  1208	            if .FORMAT[VALUE] eql 0
;	  1209	            then begin                  ! NODE address format
;	  1210	                 if not NEXTW_NICE
;	L 1211	                 then return $NICE$ERR_IMF
; %PRINT:	Invalid message format
;	  1212	                 else begin             ! Set pointer to id
;	  1213	                      REQ[RB_NICE_ENTITY] = .REQ[RB_NICE_POINTER];
;	  1214	                      ADVANCE (REQ[RB_NICE_POINTER], 2);
;	  1215	                      end;
;	  1216	                 end
;	  1217	            else if .FORMAT[VALUE] gtr 0
;	  1218	                 then begin             ! NODE name format, point to id
;	  1219	                      REQ[RB_NICE_ENTITY] = .REQ[RB_NICE_POINTER];
;	  1220	                      ADVANCE (REQ[RB_NICE_POINTER], .FORMAT[VALUE]);
;	  1221	                      end
;	  1222	                 else REQ[RB_NICE_ENTITY] = 0;
;	  1223	            end;
;	  1224	
;	  1225	        [LINE_,
;	  1226	         CIRCUIT_,
;	  1227	         MODULE_]:
;	  1228	            begin
;	  1229	            if NEXTF_NICE               ! Is the id field present ?
;	  1230	            then begin
;	  1231	                 if .REQ[RB_NICE_LENGTH] geq .REQ[RB_NICE_POSITION]
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  40
X03.30		GET_ENTITY_ID					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (14)

;	  1232	                 then ADVANCE (REQ[RB_NICE_POINTER], 1)
;	L 1233	                 else return $NICE$ERR_IMF; ! No room for image text
; %PRINT:	Invalid message format
;	  1234	                 end
;	L 1235	            else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  1236	
;	  1237	            if .FORMAT[VALUE] gtr 0     ! Save pointer to id string,
;	  1238	            then begin                  ! including length as first byte
;	  1239	                 REQ[RB_NICE_ENTITY] = ch$plus (.REQ[RB_NICE_POINTER],-1);
;	  1240	
;	  1241	                 ! Bump past the complete entity id.
;	  1242	
;	  1243	                 ADVANCE (REQ[RB_NICE_POINTER], .FORMAT[VALUE]);
;	  1244	                 end
;	  1245	            else REQ[RB_NICE_ENTITY] = 0;
;	  1246	            end;
;	  1247	
;	  1248	        [LOGGING_]:
;	  1249	            begin
;	  1250	            REQ[RB_NICE_ENTITY] = .REQ[RB_NICE_POINTER];
;	  1251	            if NEXTB_NICE
;	  1252	            then ADVANCE (REQ[RB_NICE_POINTER], 1) ! Bypass sink type
;	L 1253	            else return $NICE$ERR_URC;
; %PRINT:	Unrecognized component
;	  1254	            end;
;	  1255	
;	  1256	        [inrange,
;	  1257	         outrange]:
;	L 1258	            return $NICE$ERR_URC;
; %PRINT:	Unrecognized component
;	  1259	        tes;
;	  1260	
;	  1261	    return $TRUE;
;	  1262	    end;				! End of GET_ENTITY_ID


						.SBTTL	GET.ENTITY.ID GET_ENTITY_ID
000000	004167  000000G			GET.ENTITY.ID:
						JSR	R1,$SAVE4			;					1132
000004	016601  000014 				MOV	14(SP),R1			; REQ,*					1170
000010	012704  000030 				MOV	#30,R4
000014	060104 					ADD	R1,R4
000016	012703  000070 				MOV	#70,R3
000022	060103 					ADD	R1,R3
000024	011300 					MOV	(R3),R0				; *,$$NEXTB.TEMP
000026	005200 					INC	R0				; $$NEXTB.TEMP
000030	021400 					CMP	(R4),R0				; *,$$NEXTB.TEMP
000032	002507 					BLT	5$
000034	010013 					MOV	R0,(R3)				; $$NEXTB.TEMP,*
000036	012702  000066 				MOV	#66,R2				;					1172
000042	060102 					ADD	R1,R2
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  41
X03.30		GET_ENTITY_ID					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (14)

000044	005212 					INC	(R2)
000046	011200 					MOV	(R2),R0
000050	114000 					MOVB	-(R0),R0			; *,FORMAT
000052	042700  177400 				BIC	#177400,R0			; *,FORMAT
000056	110061  000076 				MOVB	R0,76(R1)			; FORMAT,*				1173
000062	002511 					BLT	8$				;					1176
000064	005313 					DEC	(R3)				;					1180
000066	005312 					DEC	(R2)				;					1181
000070	005002 					CLR	R2				;					1196
000072	156102  000074 				BISB	74(R1),R2
000076	020227  000004 				CMP	R2,#4
000102	101117 					BHI	10$
000104	006302 					ASL	R2
000106	066207  000022'				ADD	P.AAC(R2),PC			; Case dispatch
000112	000513 				1$:	BR	10$				;					1258
000114	011302 				2$:	MOV	(R3),R2				; *,$$NEXTF.TEMP			1200
000116	005202 					INC	R2				; $$NEXTF.TEMP
000120	021402 					CMP	(R4),R2				; *,$$NEXTF.TEMP
000122	002453 					BLT	5$
000124	117113  000066 				MOVB	@66(R1),(R3)
000130	105063  000001 				CLRB	1(R3)
000134	060213 					ADD	R2,(R3)				; $$NEXTF.TEMP,*
000136	021413 					CMP	(R4),(R3)			;					1202
000140	002444 					BLT	5$
000142	005261  000066 				INC	66(R1)				;					1203
000146	105700 					TSTB	R0				; FORMAT				1208
000150	001015 					BNE	3$
000152	011302 					MOV	(R3),R2				; *,$$NEXTW.TEMP			1210
000154	062702  000002 				ADD	#2,R2				; *,$$NEXTW.TEMP
000160	021402 					CMP	(R4),R2				; *,$$NEXTW.TEMP
000162	002433 					BLT	5$
000164	010213 					MOV	R2,(R3)				; $$NEXTW.TEMP,*
000166	016161  000066  000102 			MOV	66(R1),102(R1)			;					1213
000174	062761  000002  000066 			ADD	#2,66(R1)			;					1214
000202	000462 					BR	11$				;					1208
000204	003440 				3$:	BLE	8$				;					1217
000206	016161  000066  000102 			MOV	66(R1),102(R1)			;					1219
000214	000430 					BR	7$				;					1220
000216	011302 				4$:	MOV	(R3),R2				; *,$$NEXTF.TEMP			1229
000220	005202 					INC	R2				; $$NEXTF.TEMP
000222	021402 					CMP	(R4),R2				; *,$$NEXTF.TEMP
000224	002412 					BLT	5$
000226	117113  000066 				MOVB	@66(R1),(R3)
000232	105063  000001 				CLRB	1(R3)
000236	060213 					ADD	R2,(R3)				; $$NEXTF.TEMP,*
000240	021413 					CMP	(R4),(R3)			;					1231
000242	002403 					BLT	5$
000244	005261  000066 				INC	66(R1)				;					1232
000250	000403 					BR	6$				;					1231
000252	012700  177776 			5$:	MOV	#-2,R0				;					1235
000256	000207 					RTS	PC
000260	105700 				6$:	TSTB	R0				; FORMAT				1237
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  42
X03.30		GET_ENTITY_ID					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (14)

000262	003411 					BLE	8$
000264	016161  000066  000102 			MOV	66(R1),102(R1)			;					1239
000272	005361  000102 				DEC	102(R1)
000276	110002 				7$:	MOVB	R0,R2				; FORMAT,*				1243
000300	060261  000066 				ADD	R2,66(R1)
000304	000421 					BR	11$				;					1237
000306	005061  000102 			8$:	CLR	102(R1)				;					1245
000312	000416 					BR	11$				;					1196
000314	016161  000066  000102 		9$:	MOV	66(R1),102(R1)			;					1250
000322	011300 					MOV	(R3),R0				; *,$$NEXTB.TEMP			1251
000324	005200 					INC	R0				; $$NEXTB.TEMP
000326	021400 					CMP	(R4),R0				; *,$$NEXTB.TEMP
000330	002404 					BLT	10$
000332	010013 					MOV	R0,(R3)				; $$NEXTB.TEMP,*
000334	005261  000066 				INC	66(R1)				;					1252
000340	000403 					BR	11$				;					1251
000342	012700  177770 			10$:	MOV	#-10,R0				;					1253
000346	000207 					RTS	PC
000350	012700  000001 			11$:	MOV	#1,R0				;					1158
000354	000207 					RTS	PC				;					1132
; Routine Size:  119 words,	Routine Base:  $CODE$ + 2700
; Maximum stack depth per invocation:  6 words


000022						.PSECT	$PLIT$,  RO ,  D  

					P.AAC:						; CASE Table for GET.ENTITY.ID+0106	1196
000022	000002 					.WORD	2				; [2$]
000024	000104 					.WORD	104				; [4$]
000026	000202 					.WORD	202				; [9$]
000030	000104 					.WORD	104				; [4$]
000032	000104 					.WORD	104				; [4$]
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  43
X03.30		SCAN_PARAMETER					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (15)

;	  1263	%routine ('SCAN_PARAMETER', ENTRY, REQ, CLEAR_PURGE) =
;	  1264	
;	  1265	!++
;	  1266	! FUNCTIONAL DESCRIPTION:
;	  1267	!
;	  1268	!
;	  1269	! FORMAL PARAMETERS
;	  1270	!
;	  1271	!       ENTRY           Address of the entry to the parameter data base.
;	  1272	!	REQ             Address of NICE request block (RB).
;	  1273	!       CLEAR_PURGE     Flag to indicate if this request is a CLEAR/PURGE
;	  1274	!                       request message.
;	  1275	!
;	  1276	! IMPLICIT INPUTS
;	  1277	!
;	  1278	!	NONE.
;	  1279	!
;	  1280	! ROUTINE VALUE:
;	  1281	!
;	  1282	!	1 if NICE request message has valid syntax.
;	  1283	!       NEGATIVE NICE error return code if invalid.
;	  1284	!
;	  1285	! SIDE EFFECTS:
;	  1286	!
;	  1287	!	NONE.
;	  1288	!
;	  1289	!--
;	  1290	
;	  1291	    begin
;	  1292	
;	  1293	    map
;	  1294	       REQ: ref REQUEST_BLOCK,
;	  1295	       ENTRY: ref NICE_PARAMETER_TABLE_ENTRY;
;	  1296	
;	  1297	    local
;	  1298	         PARAMETER: ref PARAMETER_ENTRY;
;	  1299	
;	  1300	    PARAMETER = .ENTRY[NICE_PARAMETER_ENTRY]; ! Get data block entry
;	  1301	
;	  1302	    ! Upon return if this parameter is a qualifier, the pointer stored
;	  1303	    ! in RB_NICE_QUALIFIER field points to the field of the qualifier
;	  1304	    ! parameter, STARTING WITH THE PARAMETER NUMBER.
;	  1305	
;	  1306	    if .PARAMETER[_QUALIFIER]           ! Is this parameter a qualifier ?
;	  1307	    then begin                          ! Yes, check if we already got one
;	  1308	         if .REQ[RB_NICE_QUALIFIER] eql 0
;	  1309	         then REQ[RB_NICE_QUALIFIER] = ch$plus (.REQ[RB_NICE_POINTER], -2)
;	L 1310	         else return $NICE$ERR_IPG;     ! Already got one, cannot handle second
; %PRINT:	Invalid parameter grouping
;	  1311	         end;
;	  1312	
;	  1313	    if .CLEAR_PURGE                     ! If this is CLEAR/PURGE NICE request
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  44
X03.30		SCAN_PARAMETER					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (15)

;	  1314	    and not .PARAMETER[_QUALIFIER]      ! and parameter is not a qualifier
;	  1315	    then return NICE$_SUC;              ! do not bother checking for data
;	  1316	
;	  1317	    case .PARAMETER[_DATA_FORMAT] from DU1 to HX8 of
;	  1318	        set                             ! Parse and verify data format
;	  1319	        [DU1] :                         ! 1 byte field (C1)
;	  1320	            begin
;	  1321	            if NEXTB_NICE               ! Is there 1 byte to get ?
;	  1322	            then ADVANCE (REQ[RB_NICE_POINTER], 1) ! Yes
;	L 1323	            else return $NICE$ERR_IMF;  ! No
; %PRINT:	Invalid message format
;	  1324	            end;
;	  1325	
;	  1326	        [DU2] :                         ! 2 byte field
;	  1327	            begin
;	  1328	            if NEXTW_NICE               ! Are there 2 bytes to get ?
;	  1329	            then ADVANCE (REQ[RB_NICE_POINTER], 2) ! Yes
;	L 1330	            else return $NICE$ERR_IMF;  ! No
; %PRINT:	Invalid message format
;	  1331	            end;
;	  1332	
;	  1333	        [DU4] :                         ! 4 byte field (O4)
;	  1334	            begin
;	  1335	            if NEXTN_NICE (4)           ! Are there 4 bytes to get ?
;	  1336	            then ADVANCE (REQ[RB_NICE_POINTER], 4) ! Yes
;	L 1337	            else return $NICE$ERR_IMF;  ! No
; %PRINT:	Invalid message format
;	  1338	            end;
;	  1339	
;	  1340	        [CM2] :                         ! Coded 2 2-byte field
;	  1341	            begin
;	  1342	            incr I from 0 to 1          ! Do it twice
;	  1343	            do if NEXTW_NICE            ! Are there 2 bytes to get ?
;	  1344	               then ADVANCE (REQ[RB_NICE_POINTER], 2) ! Yes
;	L 1345	               else return $NICE$ERR_IMF; ! No
; %PRINT:	Invalid message format
;	  1346	            end;
;	  1347	
;	  1348	        [CMN,                           ! Coded node (address/name) field
;	  1349	         CMO] :                         ! Coded object (number/name) field
;	  1350	            begin
;	  1351	            if NEXTB_NICE               ! Is there a count byte to get ?
;	  1352	            then begin                  ! Yes
;	  1353	                 local LENGTH: $SIGNED_BYTE_VALUE;
;	  1354	
;	  1355	                 LENGTH = GETB (REQ[RB_NICE_POINTER]);
;	  1356	                 if .LENGTH[VALUE] eql 0
;	  1357	                 then begin             ! Node address or Object number
;	  1358	                      if .PARAMETER[_DATA_FORMAT] eql CMN
;	  1359	                      then begin        ! Node address
;	  1360	                           if NEXTW_NICE ! Are there 2 bytes of node address ?
;	  1361	                           then ADVANCE (REQ[RB_NICE_POINTER], 2) ! Yes
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  45
X03.30		SCAN_PARAMETER					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (15)

;	L 1362	                           else return $NICE$ERR_IMF; ! No
; %PRINT:	Invalid message format
;	  1363	                           end
;	  1364	                      else begin        ! Object number
;	  1365	                           if NEXTB_NICE ! Is there 1 byte of object number ?
;	  1366	                           then ADVANCE (REQ[RB_NICE_POINTER], 1) ! Yes
;	L 1367	                           else return $NICE$ERR_IMF; ! No
; %PRINT:	Invalid message format
;	  1368	                           end;
;	  1369	                      end
;	  1370	                 else begin             ! Node name or Object name
;	  1371	                      if .LENGTH[VALUE] gtr 0
;	  1372	                      then begin
;	  1373	                           if NEXTN_NICE (.LENGTH[VALUE])
;	  1374	                           and .REQ[RB_NICE_LENGTH] geq .REQ[RB_NICE_POSITION]
;	  1375	                           then ADVANCE (REQ[RB_NICE_POINTER], .LENGTH[VALUE])
;	L 1376	                           else return $NICE$ERR_IMF;
; %PRINT:	Invalid message format
;	  1377	                           end
;	  1378	                      else if not .PARAMETER[_EVENTS] ! Is it KNOWN SINKS ?
;	L 1379	                           then return $NICE$ERR_IMF; ! If not, return error
; %PRINT:	Invalid message format
;	  1380	                      end;
;	  1381	                 end
;	L 1382	            else return $NICE$ERR_IMF;  ! No
; %PRINT:	Invalid message format
;	  1383	            end;
;	  1384	
;	  1385	        [CMU] :                         ! Coded user/owner field
;	  1386	            begin
;	  1387	            if NEXTB_NICE               ! Is there an entity byte to get ?
;	  1388	            then begin                  ! Yes
;	  1389	                 local ENTITY, LENGTH: $SIGNED_BYTE_VALUE;
;	  1390	
;	  1391	                 ENTITY = GETB (REQ[RB_NICE_POINTER]); ! Get entity byte
;	  1392	
;	  1393	                 if NEXTB_NICE          ! Is there a count byte to get ?
;	  1394	                 then LENGTH = GETB (REQ[RB_NICE_POINTER]) ! Yes, get it
;	L 1395	                 else return $NICE$ERR_IMF; ! No
; %PRINT:	Invalid message format
;	  1396	
;	  1397	                 if (.ENTITY eql NODE_E) and (.LENGTH[VALUE] eql 0)
;	  1398	                 then begin             ! Get node address
;	  1399	                      if NEXTW_NICE     ! Are there 2 bytes of address
;	  1400	                      then ADVANCE (REQ[RB_NICE_POINTER], 2) ! Yes
;	L 1401	                      else return $NICE$ERR_IMF; ! No
; %PRINT:	Invalid message format
;	  1402	                      end
;	  1403	                 else begin             ! Get entity id
;	  1404	                      if (.LENGTH[VALUE] gtr 0) ! Is the count positive ?
;	  1405	                      and NEXTN_NICE (.LENGTH[VALUE]) ! Does the field exist ?
;	  1406	                      and .REQ[RB_NICE_LENGTH] geq .REQ[RB_NICE_POSITION]
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  46
X03.30		SCAN_PARAMETER					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (15)

;	  1407	                      then ADVANCE (REQ[RB_NICE_POINTER], .LENGTH[VALUE]) ! Yes
;	L 1408	                      else return $NICE$ERR_IMF; ! No
; %PRINT:	Invalid message format
;	  1409	                      end;
;	  1410	                 end
;	L 1411	            else return $NICE$ERR_IMF;  ! No
; %PRINT:	Invalid message format
;	  1412	            end;
;	  1413	
;	  1414	        [AI,                            ! ASCII image field
;	  1415	         HI] :                          ! Hexadecimal image field
;	  1416	            begin
;	  1417	            if NEXTB_NICE               ! Is there a count byte to get ?
;	  1418	            then begin                  ! Yes
;	  1419	                 local LENGTH: $SIGNED_BYTE_VALUE;
;	  1420	
;	  1421	                 LENGTH = GETB (REQ[RB_NICE_POINTER]); ! Get count byte
;	  1422	                 if .LENGTH[VALUE] gtr 0 ! Is the count positive ?
;	  1423	                 then begin
;	  1424	                      if NEXTN_NICE (.LENGTH[VALUE]) ! Does the field exist ?
;	  1425	                      and (.REQ[RB_NICE_LENGTH] geq .REQ[RB_NICE_POSITION])
;	  1426	                      then ADVANCE (REQ[RB_NICE_POINTER], .LENGTH[VALUE]) ! Yes
;	L 1427	                      else return $NICE$ERR_IMF; ! No
; %PRINT:	Invalid message format
;	  1428	                      end
;	  1429	                 else begin
;	  1430	                      if .LENGTH[VALUE] eql 0
;	L 1431	                      then return $NICE$ERR_IMF ! Null parameter id field
; %PRINT:	Invalid message format
;	  1432	                      else begin        ! If parameter count byte is negative
;	  1433	                           if (.PARAMETER[_DATA_FORMAT] eql AI) ! Check if
;	  1434	                           and not .PARAMETER[_QUALIFIER] ! it is a qualifier
;	L 1435	                           then return $NICE$ERR_UPT; ! If not, return error
; %PRINT:	Unrecognized parameter type
;	  1436	                           end;         ! Otherwise, do nothing
;	  1437	                      end;              ! Already got the count byte
;	  1438	                 end
;	L 1439	            else return $NICE$ERR_IMF;  ! No
; %PRINT:	Invalid message format
;	  1440	            end;
;	  1441	
;	  1442	        [HX8] :                         ! Hexadecimal 8 byte field
;	  1443	            begin
;	  1444	            if NEXTN_NICE (8)           ! Are there 8 bytes to get ?
;	  1445	            then ADVANCE (REQ[RB_NICE_POINTER], 8) ! Yes
;	L 1446	            else return $NICE$ERR_IMF;  ! No
; %PRINT:	Invalid message format
;	  1447	            end;
;	  1448	
;	  1449	        [inrange,
;	  1450	         outrange] :
;	L 1451	            return $NICE$ERR_UPT;
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  47
X03.30		SCAN_PARAMETER					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (15)

; %PRINT:	Unrecognized parameter type
;	  1452	        tes;
;	  1453	
;	  1454	    return $TRUE;
;	  1455	    end;                                ! End of SCAN_PARAMETER


						.SBTTL	SCAN.PARAMETER SCAN_PARAMETER
003256						.PSECT	$CODE$,  RO 

000000	004167  000000G			SCAN.PARAMETER:
						JSR	R1,$SAVE5			;					1263
000004	005746 					TST	-(SP)
000006	016600  000024 				MOV	24(SP),R0			; ENTRY,*				1300
000012	016003  000002 				MOV	2(R0),R3			; *,PARAMETER
000016	016346  000002 				MOV	2(R3),-(SP)			; *(PARAMETER),*			1306
000022	005066  000002 				CLR	2(SP)
000026	032726  010000 				BIT	#10000,(SP)+
000032	001401 					BEQ	1$
000034	005216 					INC	(SP)
000036	032716  000001 			1$:	BIT	#1,(SP)
000042	001420 					BEQ	3$
000044	016600  000022 				MOV	22(SP),R0			; REQ,*					1308
000050	012701  000110 				MOV	#110,R1
000054	060001 					ADD	R0,R1
000056	005711 					TST	(R1)
000060	001005 					BNE	2$
000062	016011  000066 				MOV	66(R0),(R1)			;					1309
000066	162711  000002 				SUB	#2,(R1)
000072	000404 					BR	3$				;					1308
000074	012700  177745 			2$:	MOV	#-33,R0				;					1310
000100	000167  001002 				JMP	35$
000104	032766  000001  000020 		3$:	BIT	#1,20(SP)			; *,CLEAR.PURGE				1313
000112	001403 					BEQ	4$
000114	032716  000001 				BIT	#1,(SP)				;					1314
000120	001575 					BEQ	14$				;					1315
000122	005000 				4$:	CLR	R0				;					1317
000124	151300 					BISB	(R3),R0				; PARAMETER,*
000126	005300 					DEC	R0
000130	020027  000012 				CMP	R0,#12
000134	101003 					BHI	5$
000136	006300 					ASL	R0
000140	066007  000034'				ADD	P.AAD(R0),PC			; Case dispatch
000144	000167  000660 			5$:	JMP	30$				;					1451
000150	016601  000022 			6$:	MOV	22(SP),R1			; REQ,*					1321
000154	016100  000070 				MOV	70(R1),R0			; *,$$NEXTB.TEMP
000160	005200 					INC	R0				; $$NEXTB.TEMP
000162	026100  000030 				CMP	30(R1),R0			; *,$$NEXTB.TEMP
000166	002573 					BLT	17$
000170	010061  000070 				MOV	R0,70(R1)			; $$NEXTB.TEMP,*
000174	005261  000066 				INC	66(R1)				;					1322
000200	000545 					BR	14$				;					1321
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  48
X03.30		SCAN_PARAMETER					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (15)

000202	016601  000022 			7$:	MOV	22(SP),R1			; REQ,*					1328
000206	016100  000070 				MOV	70(R1),R0			; *,$$NEXTW.TEMP
000212	062700  000002 				ADD	#2,R0				; *,$$NEXTW.TEMP
000216	026100  000030 				CMP	30(R1),R0			; *,$$NEXTW.TEMP
000222	002572 					BLT	18$
000224	010061  000070 				MOV	R0,70(R1)			; $$NEXTW.TEMP,*
000230	062761  000002  000066 			ADD	#2,66(R1)			;					1329
000236	000526 					BR	14$				;					1328
000240	016601  000022 			8$:	MOV	22(SP),R1			; REQ,*					1335
000244	016100  000070 				MOV	70(R1),R0			; *,$$NEXTN.TEMP
000250	062700  000004 				ADD	#4,R0				; *,$$NEXTN.TEMP
000254	026100  000030 				CMP	30(R1),R0			; *,$$NEXTN.TEMP
000260	002572 					BLT	19$
000262	010061  000070 				MOV	R0,70(R1)			; $$NEXTN.TEMP,*
000266	062761  000004  000066 			ADD	#4,66(R1)			;					1336
000274	000570 					BR	20$				;					1335
000276	016601  000022 			9$:	MOV	22(SP),R1			; REQ,*					1343
000302	005002 					CLR	R2				; I					1342
000304	016100  000070 			10$:	MOV	70(R1),R0			; *,$$NEXTW.TEMP			1343
000310	062700  000002 				ADD	#2,R0				; *,$$NEXTW.TEMP
000314	026100  000030 				CMP	30(R1),R0			; *,$$NEXTW.TEMP
000320	002567 					BLT	23$
000322	010061  000070 				MOV	R0,70(R1)			; $$NEXTW.TEMP,*
000326	062761  000002  000066 			ADD	#2,66(R1)			;					1344
000334	005202 					INC	R2				; I					1342
000336	020227  000001 				CMP	R2,#1				; I,*
000342	003760 					BLE	10$
000344	000560 					BR	24$				;					1317
000346	016601  000022 			11$:	MOV	22(SP),R1			; REQ,*					1351
000352	012705  000030 				MOV	#30,R5
000356	060105 					ADD	R1,R5
000360	012704  000070 				MOV	#70,R4
000364	060104 					ADD	R1,R4
000366	011400 					MOV	(R4),R0				; *,$$NEXTB.TEMP
000370	005200 					INC	R0				; $$NEXTB.TEMP
000372	021500 					CMP	(R5),R0				; *,$$NEXTB.TEMP
000374	002577 					BLT	26$
000376	010014 					MOV	R0,(R4)				; $$NEXTB.TEMP,*
000400	012702  000066 				MOV	#66,R2				;					1355
000404	060102 					ADD	R1,R2
000406	005212 					INC	(R2)
000410	011200 					MOV	(R2),R0
000412	005001 					CLR	R1				; LENGTH
000414	156001  177777 				BISB	-1(R0),R1			; *,LENGTH
000420	001023 					BNE	13$				;					1356
000422	121327  000006 				CMPB	(R3),#6				; PARAMETER,*				1358
000426	001011 					BNE	12$
000430	011400 					MOV	(R4),R0				; *,$$NEXTW.TEMP			1360
000432	062700  000002 				ADD	#2,R0				; *,$$NEXTW.TEMP
000436	021500 					CMP	(R5),R0				; *,$$NEXTW.TEMP
000440	002560 					BLT	27$
000442	010014 					MOV	R0,(R4)				; $$NEXTW.TEMP,*
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  49
X03.30		SCAN_PARAMETER					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (15)

000444	062712  000002 				ADD	#2,(R2)				;					1361
000450	000557 					BR	28$				;					1360
000452	011400 				12$:	MOV	(R4),R0				; *,$$NEXTB.TEMP			1365
000454	005200 					INC	R0				; $$NEXTB.TEMP
000456	021500 					CMP	(R5),R0				; *,$$NEXTB.TEMP
000460	002576 					BLT	32$
000462	010014 					MOV	R0,(R4)				; $$NEXTB.TEMP,*
000464	005212 					INC	(R2)				;					1366
000466	000550 					BR	28$				;					1365
000470	003412 				13$:	BLE	15$				;					1371
000472	110100 					MOVB	R1,R0				; LENGTH,$$NEXTN.TEMP			1373
000474	061400 					ADD	(R4),R0				; *,$$NEXTN.TEMP
000476	021500 					CMP	(R5),R0				; *,$$NEXTN.TEMP
000500	002575 					BLT	33$
000502	010014 					MOV	R0,(R4)				; $$NEXTN.TEMP,*
000504	021500 					CMP	(R5),R0				;					1374
000506	002572 					BLT	33$
000510	110100 					MOVB	R1,R0				; LENGTH,*				1375
000512	060012 					ADD	R0,(R2)
000514	000572 				14$:	BR	34$				;					1373
000516	032763  004000  000002 		15$:	BIT	#4000,2(R3)			; *,*(PARAMETER)			1378
000524	001166 					BNE	34$
000526	000562 					BR	33$				;					1379
000530	016601  000022 			16$:	MOV	22(SP),R1			; REQ,*					1387
000534	012705  000030 				MOV	#30,R5
000540	060105 					ADD	R1,R5
000542	012702  000070 				MOV	#70,R2
000546	060102 					ADD	R1,R2
000550	011200 					MOV	(R2),R0				; *,$$NEXTB.TEMP
000552	005200 					INC	R0				; $$NEXTB.TEMP
000554	021500 					CMP	(R5),R0				; *,$$NEXTB.TEMP
000556	002546 				17$:	BLT	33$
000560	010012 					MOV	R0,(R2)				; $$NEXTB.TEMP,*
000562	012704  000066 				MOV	#66,R4				;					1391
000566	060104 					ADD	R1,R4
000570	005214 					INC	(R4)
000572	011400 					MOV	(R4),R0
000574	005001 					CLR	R1				; ENTITY
000576	156001  177777 				BISB	-1(R0),R1			; *,ENTITY
000602	011200 					MOV	(R2),R0				; *,$$NEXTB.TEMP			1393
000604	005200 					INC	R0				; $$NEXTB.TEMP
000606	021500 					CMP	(R5),R0				; *,$$NEXTB.TEMP
000610	002531 				18$:	BLT	33$
000612	010012 					MOV	R0,(R2)				; $$NEXTB.TEMP,*
000614	005214 					INC	(R4)				;					1394
000616	011403 					MOV	(R4),R3
000620	114303 					MOVB	-(R3),R3			; *,LENGTH
000622	042703  177400 				BIC	#177400,R3			; *,LENGTH
000626	005701 					TST	R1				; ENTITY				1397
000630	001013 					BNE	21$
000632	105703 					TSTB	R3				; LENGTH
000634	001012 					BNE	22$
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  50
X03.30		SCAN_PARAMETER					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (15)

000636	010001 					MOV	R0,R1				; *,$$NEXTW.TEMP			1399
000640	062701  000002 				ADD	#2,R1				; *,$$NEXTW.TEMP
000644	021501 					CMP	(R5),R1				; *,$$NEXTW.TEMP
000646	002512 				19$:	BLT	33$
000650	010112 					MOV	R1,(R2)				; $$NEXTW.TEMP,*
000652	062714  000002 				ADD	#2,(R4)				;					1400
000656	000511 				20$:	BR	34$				;					1399
000660	105703 				21$:	TSTB	R3				; LENGTH				1404
000662	003504 				22$:	BLE	33$
000664	110301 					MOVB	R3,R1				; LENGTH,$$NEXTN.TEMP			1405
000666	061201 					ADD	(R2),R1				; *,$$NEXTN.TEMP
000670	021501 					CMP	(R5),R1				; *,$$NEXTN.TEMP
000672	002500 					BLT	33$
000674	010112 					MOV	R1,(R2)				; $$NEXTN.TEMP,*
000676	021501 					CMP	(R5),R1				;					1406
000700	002475 				23$:	BLT	33$
000702	110300 					MOVB	R3,R0				; LENGTH,*				1407
000704	060014 					ADD	R0,(R4)
000706	000475 				24$:	BR	34$				;					1404
000710	016601  000022 			25$:	MOV	22(SP),R1			; REQ,*					1417
000714	012704  000030 				MOV	#30,R4
000720	060104 					ADD	R1,R4
000722	012705  000070 				MOV	#70,R5
000726	060105 					ADD	R1,R5
000730	011500 					MOV	(R5),R0				; *,$$NEXTB.TEMP
000732	005200 					INC	R0				; $$NEXTB.TEMP
000734	021400 					CMP	(R4),R0				; *,$$NEXTB.TEMP
000736	002456 					BLT	33$
000740	010015 					MOV	R0,(R5)				; $$NEXTB.TEMP,*
000742	012700  000066 				MOV	#66,R0				;					1421
000746	060100 					ADD	R1,R0
000750	005210 					INC	(R0)
000752	011001 					MOV	(R0),R1
000754	114101 					MOVB	-(R1),R1			; *,LENGTH
000756	042701  177400 				BIC	#177400,R1			; *,LENGTH
000762	105701 					TSTB	R1				; LENGTH				1422
000764	003412 					BLE	29$
000766	110103 					MOVB	R1,R3				; LENGTH,$$NEXTN.TEMP			1424
000770	061503 					ADD	(R5),R3				; *,$$NEXTN.TEMP
000772	021403 					CMP	(R4),R3				; *,$$NEXTN.TEMP
000774	002437 				26$:	BLT	33$
000776	010315 					MOV	R3,(R5)				; $$NEXTN.TEMP,*
001000	021403 					CMP	(R4),R3				;					1425
001002	002434 				27$:	BLT	33$
001004	110102 					MOVB	R1,R2				; LENGTH,*				1426
001006	060210 					ADD	R2,(R0)
001010	000434 				28$:	BR	34$				;					1424
001012	001430 				29$:	BEQ	33$				;					1431
001014	121327  000011 				CMPB	(R3),#11			; PARAMETER,*				1433
001020	001030 					BNE	34$
001022	032716  000001 				BIT	#1,(SP)				;					1434
001026	001025 					BNE	34$
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  51
X03.30		SCAN_PARAMETER					 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (15)

001030	012700  177772 			30$:	MOV	#-6,R0				;					1435
001034	000424 					BR	35$
001036	016601  000022 			31$:	MOV	22(SP),R1			; REQ,*					1444
001042	016100  000070 				MOV	70(R1),R0			; *,$$NEXTN.TEMP
001046	062700  000010 				ADD	#10,R0				; *,$$NEXTN.TEMP
001052	026100  000030 				CMP	30(R1),R0			; *,$$NEXTN.TEMP
001056	002406 				32$:	BLT	33$
001060	010061  000070 				MOV	R0,70(R1)			; $$NEXTN.TEMP,*
001064	062761  000010  000066 			ADD	#10,66(R1)			;					1445
001072	000403 					BR	34$				;					1444
001074	012700  177776 			33$:	MOV	#-2,R0				;					1446
001100	000402 					BR	35$
001102	012700  000001 			34$:	MOV	#1,R0				;					1291
001106	005726 				35$:	TST	(SP)+				;					1263
001110	000207 					RTS	PC
; Routine Size:  293 words,	Routine Base:  $CODE$ + 3256
; Maximum stack depth per invocation:  8 words


000034						.PSECT	$PLIT$,  RO ,  D  

					P.AAD:						; CASE Table for SCAN.PARAMETER+0140	1317
000034	000004 					.WORD	4				; [6$]
000036	000036 					.WORD	36				; [7$]
000040	000074 					.WORD	74				; [8$]
000042	000132 					.WORD	132				; [9$]
000044	000664 					.WORD	664				; [30$]
000046	000202 					.WORD	202				; [11$]
000050	000202 					.WORD	202				; [11$]
000052	000364 					.WORD	364				; [16$]
000054	000544 					.WORD	544				; [25$]
000056	000544 					.WORD	544				; [25$]
000060	000672 					.WORD	672				; [31$]
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  52
X03.30		VERIFY_PARAMETERS				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (16)

;	  1456	%routine ('VERIFY_PARAMETERS', CLEAR_PURGE, REQ) =
;	  1457	
;	  1458	!++
;	  1459	! FUNCTIONAL DESCRIPTION:
;	  1460	!
;	  1461	!
;	  1462	! FORMAL PARAMETERS
;	  1463	!
;	  1464	!	REQ - Address of NICE request block (RB).
;	  1465	!
;	  1466	! IMPLICIT INPUTS
;	  1467	!
;	  1468	!	NONE.
;	  1469	!
;	  1470	! ROUTINE VALUE:
;	  1471	!
;	  1472	!	1 if NICE request message has valid syntax.
;	  1473	!       NEGATIVE NICE error return code if invalid.
;	  1474	!
;	  1475	! SIDE EFFECTS:
;	  1476	!
;	  1477	!	NONE.
;	  1478	!
;	  1479	!--
;	  1480	
;	  1481	    begin
;	  1482	
;	  1483	    map
;	  1484	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1485	
;	  1486	    local
;	  1487	         ENTITY,                        ! Entity type
;	  1488	         PARAMETER;                     ! NICE parameter number
;	  1489	
;	  1490	    REQ[RB_NICE_PARAMETERS] = .REQ[RB_NICE_POINTER];  ! Store parameters
;	  1491	    ENTITY = .REQ[RB_NICE_ENTITY_TYPE];
;	  1492	
;	  1493	    if (.ENTITY lss NODE_E) or (.ENTITY gtr MODULE_)
;	  1494	    then begin                          ! Illegal entity type
;	  1495	         REQ[RB_ERROR_DETAIL] = .REQ[RB_NICE_ENTITY_TYPE];
;	L 1496	         return $NICE$ERR_URC;
; %PRINT:	Unrecognized component
;	  1497	         end;
;	  1498	
;	  1499	    ! Loop through the NICE message, verifying each parameter, stopping
;	  1500	    ! at end of the message.
;	  1501	
;	  1502	    while NEXTW_NICE                    ! Process parameter
;	  1503	    do begin
;	  1504	       local CODE, ENTRY;
;	  1505	
;	  1506	       PARAMETER = GETW (REQ[RB_NICE_POINTER]); ! Get parameter number
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  53
X03.30		VERIFY_PARAMETERS				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (16)

;	  1507	       if (ENTRY = NML$PARAMETER_LOOKUP (.ENTITY, .PARAMETER)) eql 0
;	L 1508	       then return $NICE$ERR_UPT;       ! Cannot find parameter in tables
; %PRINT:	Unrecognized parameter type
;	  1509	
;	  1510	       if (CODE = SCAN_PARAMETER (.ENTRY, .REQ, .CLEAR_PURGE)) neq $TRUE
;	  1511	       then return .CODE;               ! Verify parameter data fields
;	  1512	       end;
;	  1513	
;	  1514	    return $TRUE;                       ! All parameters are OK
;	  1515	    end;				! End of VERIFY_PARAMETERS


						.SBTTL	VERIFY.PARAMETERS VERIFY_PARAMETERS
004370						.PSECT	$CODE$,  RO 

000000	004167  000000G			VERIFY.PARAMETERS:
						JSR	R1,$SAVE5			;					1456
000004	005746 					TST	-(SP)
000006	016602  000020 				MOV	20(SP),R2			; REQ,*					1490
000012	012704  000066 				MOV	#66,R4
000016	060204 					ADD	R2,R4
000020	011462  000104 				MOV	(R4),104(R2)
000024	005003 					CLR	R3				; ENTITY				1491
000026	156203  000074 				BISB	74(R2),R3			; *,ENTITY
000032	005703 					TST	R3				; ENTITY				1493
000034	002403 					BLT	1$
000036	020327  000004 				CMP	R3,#4				; ENTITY,*
000042	003410 					BLE	2$
000044	005062  000120 			1$:	CLR	120(R2)				;					1495
000050	116262  000074  000120 			MOVB	74(R2),120(R2)
000056	012700  177770 				MOV	#-10,R0				;					1494
000062	000454 					BR	5$
000064	016200  000070 			2$:	MOV	70(R2),R0			; *,$$NEXTW.TEMP			1502
000070	062700  000002 				ADD	#2,R0				; *,$$NEXTW.TEMP
000074	026200  000030 				CMP	30(R2),R0			; *,$$NEXTW.TEMP
000100	002443 					BLT	4$
000102	010062  000070 				MOV	R0,70(R2)			; $$NEXTW.TEMP,*
000106	005214 					INC	(R4)				;					1506
000110	011400 					MOV	(R4),R0
000112	116016  177777 				MOVB	-1(R0),(SP)			; *,$$GETB.X
000116	005214 					INC	(R4)
000120	011400 					MOV	(R4),R0
000122	116066  177777  000001 			MOVB	-1(R0),1(SP)			; *,$$GETB.X
000130	011605 					MOV	(SP),R5				; $$GETB.X,PARAMETER
000132	010346 					MOV	R3,-(SP)			; ENTITY,*				1507
000134	010546 					MOV	R5,-(SP)			; PARAMETER,*
000136	004767  000000G				JSR	PC,NL.PLU
000142	022626 					CMP	(SP)+,(SP)+
000144	005700 					TST	R0				; ENTRY
000146	001003 					BNE	3$
000150	012700  177772 				MOV	#-6,R0				;					1508
000154	000417 					BR	5$
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  54
X03.30		VERIFY_PARAMETERS				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (16)

000156	010046 				3$:	MOV	R0,-(SP)			; ENTRY,*				1510
000160	010246 					MOV	R2,-(SP)
000162	016646  000026 				MOV	26(SP),-(SP)			; CLEAR.PURGE,*
000166	004767  176474 				JSR	PC,SCAN.PARAMETER
000172	062706  000006 				ADD	#6,SP
000176	010001 					MOV	R0,R1				; *,CODE
000200	005300 					DEC	R0
000202	001730 					BEQ	2$
000204	010100 					MOV	R1,R0				; CODE,*				1511
000206	000402 					BR	5$
000210	012700  000001 			4$:	MOV	#1,R0				;					1481
000214	005726 				5$:	TST	(SP)+				;					1456
000216	000207 					RTS	PC
; Routine Size:  72 words,	Routine Base:  $CODE$ + 4370
; Maximum stack depth per invocation:  11 words
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  55
X03.30		NML$NICE_EXECUTE				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (17)

;	  1516	%routine ('NML$NICE_EXECUTE', REQ) =
;	  1517	
;	  1518	!++
;	  1519	! FUNCTIONAL DESCRIPTION:
;	  1520	!
;	  1521	!	Dispatches to the appropriate NML NICE request processing routine.
;	  1522	!
;	  1523	! FORMAL PARAMETERS
;	  1524	!
;	  1525	!	REQ - Address of NICE request block (RB).
;	  1526	!
;	  1527	! IMPLICIT INPUTS
;	  1528	!
;	  1529	!	NONE.
;	  1530	!
;	  1531	! ROUTINE VALUE:
;	  1532	!
;	  1533	!	1 if NICE request message has valid syntax.
;	  1534	!       NEGATIVE NICE error return code if invalid.
;	  1535	!
;	  1536	! SIDE EFFECTS:
;	  1537	!
;	  1538	!	NONE.
;	  1539	!
;	  1540	!--
;	  1541	
;	  1542	    begin
;	  1543	
;	  1544	    map
;	  1545	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1546	
;	  1547	    local
;	  1548	         RESULT,
;	  1549	         EID_LEN: $SIGNED_BYTE_VALUE,   ! Signed length of entity id
;	  1550	         EID_PTR,
;	  1551	         EID_ADR;
;	  1552	
;	  1553	    ! Make sure we start at beginning of NICE request message.
;	  1554	
;	  1555	    REQ[RB_NICE_POSITION] = 0;          ! Initialize position in NICE message
;	  1556	    REQ[RB_NICE_POINTER] = ch$ptr(.REQ[RB_NICE],,8); ! Initialize pointer
;	  1557	    REQ[RB_NICE_ENTITY_ADR] = 0;	! Initially no allocated memory
;	  1558	
;	  1559	    RESULT = 1;                         ! Initially success unless error
;	  1560	
;	  1561	    ! If the entity type is NODE,
;	  1562	    ! then transform node entity id from NICE input format 
;	  1563	    ! to full address and name format for use internally.
;	  1564	    ! The contents of REQ[RB_NICE_ENTITY] which points into the entity
;	  1565	    ! entity id portion of the NICE message on entry to this routine
;	  1566	    ! will be replaced by a pointer into a buffer allocated here and
;	  1567	    ! filled in with the full node id. 
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  56
X03.30		NML$NICE_EXECUTE				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (17)

;	  1568	
;	  1569	    selectone .REQ[RB_NICE_ENTITY_TYPE] of
;	  1570	        set
;	  1571	        [NODE_E]:
;	  1572	            begin
;	  1573	            local L, ADDRESS;
;	  1574	
;	  1575	            EID_ADR = NMU$MEMORY_GET (NODE_ID_BUFFER_ALLOCATION);
;	  1576	            if .EID_ADR eql 0           ! If cannot get buffer
;	L 1577	            then return $NICE$ERR_REE;  ! return error
; %PRINT:	Resource error
;	  1578	
;	  1579		    REQ[RB_NICE_ENTITY_ADR] = .EID_ADR;
;	  1580	            EID_PTR = ch$ptr (.EID_ADR,,8);
;	  1581	            EID_LEN = .REQ[RB_NICE_ENTITY_ID_LENGTH]; ! Pick up the id length
;	  1582	            L = NODE_ID_BUFFER_LENGTH;
;	  1583	
;	  1584	            if .EID_LEN[VALUE] eql 0
;	  1585	            then begin                  ! NODE address format
;	  1586	                 ADDRESS = GETW (REQ[RB_NICE_ENTITY]); ! Get node address value
;	  1587	                 if .ADDRESS eql 0
;	  1588	                 then begin
;	  1589	                      ch$move (NODE_ID_BUFFER_LENGTH,
;	  1590	                               NMU$NETWORK_LOCAL (),
;	  1591	                               .EID_PTR);
;	  1592	                      REQ[RB_NICE_ENTITY] = ch$ptr (.EID_ADR,,8);
;	  1593	                      end
;	  1594	                 else begin
;	  1595	                      PUTW (ADDRESS, EID_PTR); ! Store node address
;	  1596	                      PUTB (0, EID_PTR); ! Zero length node name
;	  1597	                      REQ[RB_NICE_ENTITY] = ch$ptr (.EID_ADR,,8);
;	  1598	                      $NML$MAP_NODE_ID (L, .REQ[RB_NICE_ENTITY]);
;	  1599	                      end;
;	  1600	                 end
;	  1601	            else begin
;	  1602	                 if .EID_LEN[VALUE] gtr 0
;	  1603	                 then begin             ! NODE name format
;	  1604	                      ADDRESS = 0;      ! Node address is zero
;	  1605	                      PUTW (ADDRESS, EID_PTR); ! Store node address of zero
;	  1606	                      PUTB (.EID_LEN[VALUE], EID_PTR);
;	  1607	                      ch$move (.EID_LEN[VALUE], ! Move node name string
;	  1608	                               .REQ[RB_NICE_ENTITY],
;	  1609	                               .EID_PTR);
;	  1610	                      REQ[RB_NICE_ENTITY] = ch$ptr (.EID_ADR,,8);
;	  1611	                      $NML$MAP_NODE_ID (L, .REQ[RB_NICE_ENTITY]);
;	  1612	                      end
;	  1613	                 else REQ[RB_NICE_ENTITY] = 0; ! Means entity class
;	  1614	                 end;
;	  1615	            end;
;	  1616	
;	  1617	        [LOGGING_]:                     ! No mapping for LOGGING entity
;	  1618	            0;
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  57
X03.30		NML$NICE_EXECUTE				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (17)

;	  1619	
;	  1620	        [otherwise]:                    ! Other entities
;	  1621	            begin
;	  1622	            local PTR, LEN: $SIGNED_BYTE_VALUE;
;	  1623	
;	  1624	            PTR = .REQ[RB_NICE_ENTITY]; ! Get string pointer
;	  1625	            LEN[VALUE] = ch$rchar (.PTR); ! Read count byte
;	  1626	
;	  1627	            if .LEN[VALUE] gtr 0        ! If count byte is positive
;	  1628	            then begin
;	  1629	                 incr N from 1 to .LEN[VALUE]
;	  1630	                 do begin               ! Convert text to upper case
;	  1631	                    local C;
;	  1632	
;	  1633	                    C = ch$a_rchar (PTR);
;	  1634	                    if (.C geq %c'a') and (.C leq %c'z')
;	  1635	                    then ch$wchar ((.C - %C'a' + %C'A'), .PTR);
;	  1636	                    end;
;	  1637	                 end;
;	  1638	            end;
;	  1639	        tes;
;	  1640	
;	  1641	    if .RESULT eql 1
;	  1642	    then begin
;	  1643	         case .REQ[RB_NICE_FUNCTION] from LOAD_ to SYSTEM_SPECIFIC_ of
;	  1644	             set
;	  1645	             [LOAD_]:
;	  1646	                 RESULT = NML$LOAD (.REQ);
;	  1647	
;	  1648	             [DUMP_]:
;	  1649	                 RESULT = NML$DUMP (.REQ);
;	  1650	
;	  1651	             [TRIGGER_]:
;	  1652	                 RESULT = NML$TRIGGER (.REQ);
;	  1653	
;	  1654	             [TEST_]:
;	  1655	                 RESULT = NML$TEST (.REQ);
;	  1656	
;	  1657	             [CHANGE_]:
;	  1658	                 RESULT = NML$CHANGE (.REQ);
;	  1659	
;	  1660	             [READ_]:
;	  1661	                 RESULT = NML$READ (.REQ);
;	  1662	
;	  1663	             [ZERO_]:
;	  1664	                 RESULT = NML$ZERO (.REQ);
;	  1665	
;	  1666	             [SYSTEM_SPECIFIC_]:
;	  1667	                 RESULT = NML$SYSTEM_SPECIFIC (.REQ);
;	  1668	
;	  1669	             [inrange,                  ! NML's internal error if here
;	  1670	              outrange]:
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  58
X03.30		NML$NICE_EXECUTE				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (17)

;	L 1671	                 RESULT = $NICE$ERR_MPE;
; %PRINT:	Management program error
;	  1672	             tes;
;	  1673	        end;
;	  1674	
;	  1675	    return .RESULT;
;	  1676	    end;				! End of NML$NICE_EXECUTE



000000						.PSECT	$OWN$,  D  
000000					IOSB:	.BLKW	2
000004					IOSB:	.BLKW	2


						.GLOBL	LUN$NS, EFN$NS


						.SBTTL	NML$NICE.EXECUTE NML$NICE_EXECUTE
004610						.PSECT	$CODE$,  RO 

000000	004167  000000G			NML$NICE.EXECUTE:
						JSR	R1,$SAVE5			;					1516
000004	162706  000010 				SUB	#10,SP
000010	016605  000026 				MOV	26(SP),R5			; REQ,*					1555
000014	005065  000070 				CLR	70(R5)
000020	016565  000024  000066 			MOV	24(R5),66(R5)			;					1556
000026	005065  000100 				CLR	100(R5)				;					1557
000032	012702  000001 				MOV	#1,R2				; *,RESULT				1559
000036	005000 					CLR	R0				;					1569
000040	156500  000074 				BISB	74(R5),R0
000044	005700 					TST	R0
000046	001402 					BEQ	1$
000050	000167  000446 				JMP	8$
000054	012746  000012 			1$:	MOV	#12,-(SP)			;					1575
000060	004767  000000G				JSR	PC,UM.GET
000064	010004 					MOV	R0,R4				; *,EID.ADR
000066	001005 					BNE	2$				;					1576
000070	005726 					TST	(SP)+				;					1577
000072	012700  177761 				MOV	#-17,R0
000076	000167  000654 				JMP	23$
000102	010465  000100 			2$:	MOV	R4,100(R5)			; EID.ADR,*				1579
000106	010466  000004 				MOV	R4,4(SP)			; EID.ADR,EID.PTR			1580
000112	005003 					CLR	R3				; EID.LEN				1581
000114	156503  000076 				BISB	76(R5),R3			; *,EID.LEN
000120	012766  000011  000006 			MOV	#11,6(SP)			; *,L					1582
000126	012766  000102  000002 			MOV	#102,2(SP)			;					1586
000134	060566  000002 				ADD	R5,2(SP)
000140	105703 					TSTB	R3				; EID.LEN				1584
000142	001102 					BNE	4$
000144	005276  000002 				INC	@2(SP)				;					1586
000150	017600  000002 				MOV	@2(SP),R0
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  59
X03.30		NML$NICE_EXECUTE				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (17)

000154	116066  177777  000010 			MOVB	-1(R0),10(SP)			; *,$$GETB.X
000162	005276  000002 				INC	@2(SP)
000166	017600  000002 				MOV	@2(SP),R0
000172	116066  177777  000011 			MOVB	-1(R0),11(SP)			; *,$$GETB.X
000200	016601  000010 				MOV	10(SP),R1			; $$GETB.X,ADDRESS
000204	001014 					BNE	3$				;					1587
000206	012716  000011 				MOV	#11,(SP)			;					1591
000212	004767  000000G				JSR	PC,UN.LOCAL			;					1590
000216	010046 					MOV	R0,-(SP)			;					1591
000220	016646  000006 				MOV	6(SP),-(SP)			; EID.PTR,*
000224	004767  000000G				JSR	PC,BL$MOV
000230	010476  000006 				MOV	R4,@6(SP)			; EID.ADR,*				1592
000234	000523 					BR	5$				;					1588
000236	110176  000004 			3$:	MOVB	R1,@4(SP)			; ADDRESS,EID.PTR			1595
000242	005266  000004 				INC	4(SP)				; EID.PTR
000246	010100 					MOV	R1,R0				; ADDRESS,*
000250	000300 					SWAB	R0
000252	110076  000004 				MOVB	R0,@4(SP)			; *,EID.PTR
000256	005266  000004 				INC	4(SP)				; EID.PTR
000262	105076  000004 				CLRB	@4(SP)				; EID.PTR				1596
000266	005266  000004 				INC	4(SP)				; EID.PTR
000272	010476  000002 				MOV	R4,@2(SP)			; EID.ADR,*				1597
000276	005046 					CLR	-(SP)				;					1598
000300	005046 					CLR	-(SP)
000302	005046 					CLR	-(SP)
000304	012746  000002 				MOV	#2,-(SP)
000310	016646  000016 				MOV	16(SP),-(SP)			; L,*
000314	010446 					MOV	R4,-(SP)
000316	005046 					CLR	-(SP)
000320	012746  000000'				MOV	#IOSB,-(SP)
000324	012746  000000G				MOV	#EFN$NS,-(SP)
000330	012746  000000G				MOV	#LUN$NS,-(SP)
000334	012746  016670 				MOV	#16670,-(SP)
000340	012746  006003 				MOV	#6003,-(SP)
000344	104377 					EMT	377
000346	000463 					BR	7$
000350	003460 				4$:	BLE	6$				;					1602
000352	005001 					CLR	R1				; ADDRESS				1604
000354	105076  000004 				CLRB	@4(SP)				; EID.PTR				1605
000360	005266  000004 				INC	4(SP)				; EID.PTR
000364	005000 					CLR	R0
000366	000300 					SWAB	R0
000370	110076  000004 				MOVB	R0,@4(SP)			; *,EID.PTR
000374	005266  000004 				INC	4(SP)				; EID.PTR
000400	110376  000004 				MOVB	R3,@4(SP)			; EID.LEN,EID.PTR			1606
000404	005266  000004 				INC	4(SP)				; EID.PTR
000410	110303 					MOVB	R3,R3				; EID.LEN,*				1609
000412	010316 					MOV	R3,(SP)
000414	017646  000002 				MOV	@2(SP),-(SP)
000420	016646  000006 				MOV	6(SP),-(SP)			; EID.PTR,*
000424	004767  000000G				JSR	PC,BL$MOV
000430	010476  000006 				MOV	R4,@6(SP)			; EID.ADR,*				1610
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  60
X03.30		NML$NICE_EXECUTE				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (17)

000434	005046 					CLR	-(SP)				;					1611
000436	005046 					CLR	-(SP)
000440	005046 					CLR	-(SP)
000442	012746  000002 				MOV	#2,-(SP)
000446	016646  000022 				MOV	22(SP),-(SP)			; L,*
000452	010446 					MOV	R4,-(SP)
000454	005046 					CLR	-(SP)
000456	012746  000004'				MOV	#IOSB,-(SP)
000462	012746  000000G				MOV	#EFN$NS,-(SP)
000466	012746  000000G				MOV	#LUN$NS,-(SP)
000472	012746  016670 				MOV	#16670,-(SP)
000476	012746  006003 				MOV	#6003,-(SP)
000502	104377 					EMT	377
000504	062706  000006 			5$:	ADD	#6,SP
000510	000437 					BR	11$				;					1602
000512	005076  000002 			6$:	CLR	@2(SP)				;					1613
000516	005726 				7$:	TST	(SP)+
000520	000433 					BR	11$				;					1569
000522	020027  000002 			8$:	CMP	R0,#2
000526	001430 					BEQ	11$
000530	016504  000102 				MOV	102(R5),R4			; *,PTR					1624
000534	105003 					CLRB	R3				; LEN					1625
000536	151403 					BISB	(R4),R3				; PTR,LEN
000540	003423 					BLE	11$				;					1627
000542	005001 					CLR	R1				; N					1629
000544	000415 					BR	10$
000546	005204 				9$:	INC	R4				; PTR					1633
000550	005000 					CLR	R0				; C
000552	151400 					BISB	(R4),R0				; PTR,C
000554	020027  000141 				CMP	R0,#141				; C,*					1634
000560	002407 					BLT	10$
000562	020027  000172 				CMP	R0,#172				; C,*
000566	003004 					BGT	10$
000570	010046 					MOV	R0,-(SP)			; C,*					1635
000572	162716  000040 				SUB	#40,(SP)
000576	112614 					MOVB	(SP)+,(R4)			; *,PTR
000600	005201 				10$:	INC	R1				; N					1629
000602	110300 					MOVB	R3,R0				; LEN,*
000604	020100 					CMP	R1,R0				; N,*
000606	003757 					BLE	9$
000610	020227  000001 			11$:	CMP	R2,#1				; RESULT,*				1641
000614	001057 					BNE	22$
000616	005000 					CLR	R0				;					1643
000620	156500  000072 				BISB	72(R5),R0
000624	162700  000017 				SUB	#17,R0
000630	020027  000007 				CMP	R0,#7
000634	101003 					BHI	12$
000636	006300 					ASL	R0
000640	066007  000062'				ADD	P.AAE(R0),PC			; Case dispatch
000644	012702  177773 			12$:	MOV	#-5,R2				; *,RESULT				1671
000650	000441 					BR	22$				;					1643
000652	010546 				13$:	MOV	R5,-(SP)			;					1646
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  61
X03.30		NML$NICE_EXECUTE				 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (17)

000654	004767  000000G				JSR	PC,NL.LOD
000660	000433 					BR	21$
000662	010546 				14$:	MOV	R5,-(SP)			;					1649
000664	004767  000000G				JSR	PC,NL.DMP
000670	000427 					BR	21$
000672	010546 				15$:	MOV	R5,-(SP)			;					1652
000674	004767  000000G				JSR	PC,NL.TRG
000700	000423 					BR	21$
000702	010546 				16$:	MOV	R5,-(SP)			;					1655
000704	004767  000000G				JSR	PC,NL.TST
000710	000417 					BR	21$
000712	010546 				17$:	MOV	R5,-(SP)			;					1658
000714	004767  000000G				JSR	PC,NL.CHG
000720	000413 					BR	21$
000722	010546 				18$:	MOV	R5,-(SP)			;					1661
000724	004767  000000G				JSR	PC,NL.REA
000730	000407 					BR	21$
000732	010546 				19$:	MOV	R5,-(SP)			;					1664
000734	004767  000000G				JSR	PC,NL.ZRO
000740	000403 					BR	21$
000742	010546 				20$:	MOV	R5,-(SP)			;					1667
000744	004767  000000G				JSR	PC,NL.SPC
000750	010002 				21$:	MOV	R0,R2				; *,RESULT
000752	005726 					TST	(SP)+
000754	010200 				22$:	MOV	R2,R0				; RESULT,*				1542
000756	062706  000010 			23$:	ADD	#10,SP				;					1516
000762	000207 					RTS	PC
; Routine Size:  250 words,	Routine Base:  $CODE$ + 4610
; Maximum stack depth per invocation:  27 words


000062						.PSECT	$PLIT$,  RO ,  D  

					P.AAE:						; CASE Table for NML$NICE.EXECUT+0640	1643
000062	000006 					.WORD	6				; [13$]
000064	000016 					.WORD	16				; [14$]
000066	000026 					.WORD	26				; [15$]
000070	000036 					.WORD	36				; [16$]
000072	000046 					.WORD	46				; [17$]
000074	000056 					.WORD	56				; [18$]
000076	000066 					.WORD	66				; [19$]
000100	000076 					.WORD	76				; [20$]
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  62
X03.30		NML$NICE_RESPONSE as NL_RSP			 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (18)

;	  1677	%global_routine ('NML$NICE_RESPONSE', REQ) : novalue =
;	  1678	
;	  1679	!++
;	  1680	! FUNCTIONAL DESCRIPTION:
;	  1681	!
;	  1682	!	Builds a NICE response message for the current NML NICE request.
;	  1683	!       If a NICE response message buffer has not yet been allocated
;	  1684	!       will allocate one.
;	  1685	!
;	  1686	! FORMAL PARAMETERS
;	  1687	!
;	  1688	!	REQ - Address of NICE request block (RB).
;	  1689	!
;	  1690	! IMPLICIT INPUTS
;	  1691	!
;	  1692	!	Various fields in NICE request block set during processing.
;	  1693	!
;	  1694	! ROUTINE VALUE:
;	  1695	!
;	  1696	!	NONE.
;	  1697	!
;	  1698	! SIDE EFFECTS:
;	  1699	!
;	  1700	!	NONE.
;	  1701	!
;	  1702	!--
;	  1703	
;	  1704	    begin
;	  1705	
;	  1706	    map
;	  1707	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1708	
;	  1709	    literal
;	  1710	           RESPONSE_LENGTH = 256,       ! Length of response buffer in bytes
;	  1711	           RESPONSE_SIZE = ch$allocation (RESPONSE_LENGTH,8),
;	  1712	           RESPONSE_ALLOCATION = RESPONSE_SIZE * %upval;
;	  1713	
;	  1714	    local
;	  1715		 EID_PTR,
;	  1716		 EID_LEN,
;	  1717	         ERR_DTL,
;	  1718		 LENGTH,
;	  1719		 NICE_EID_LEN: $SIGNED_BYTE_VALUE,
;	  1720	         RESP_PTR;                      ! Pointer to NICE response message
;	  1721	
;	  1722	    !
;	  1723	    ! If there is no NICE repsonse buffer allocated then allocate one.
;	  1724	    ! Store allocation size for response message buffer.
;	  1725	    ! The NICE response buffer is released by the request completion
;	  1726	    ! routine.
;	  1727	
;	  1728	    if .REQ[RB_RESPONSE_ALLOCATION] eql 0
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  63
X03.30		NML$NICE_RESPONSE as NL_RSP			 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (18)

;	  1729	    then begin
;	  1730	         REQ[RB_RESPONSE_ALLOCATION] = RESPONSE_ALLOCATION;
;	  1731	         REQ[RB_RESPONSE] = NMU$MEMORY_GET (RESPONSE_ALLOCATION);
;	  1732	         end;
;	  1733	
;	  1734	    !
;	  1735	    ! Initialize buffer for NICE response.
;	  1736	    !
;	  1737	
;	  1738	    REQ[RB_RESPONSE_LENGTH] = 0;        ! Initialize length of response
;	  1739	    RESP_PTR = ch$ptr (.REQ[RB_RESPONSE],,8); ! Initialize pointer to response
;	  1740	
;	  1741	    PUTB (.REQ[RB_RETURN_CODE], RESP_PTR); ! Stash NICE return code
;	  1742	    REQ[RB_RESPONSE_LENGTH] = .REQ[RB_RESPONSE_LENGTH] + 1;
;	  1743	
;	  1744	    if ((.REQ[RB_RETURN_CODE] eql 2) or ! If short response message
;	  1745	        (.REQ[RB_RETURN_CODE] eql -128)) ! we are done
;	  1746	    then return;
;	  1747	        
;	  1748	    ERR_DTL = .REQ[RB_ERROR_DETAIL];
;	  1749	    REQ[RB_ERROR_DETAIL] = -1;          ! Reset for next response msg
;	  1750	    PUTW (ERR_DTL, RESP_PTR);           ! Stash error detail
;	  1751	    REQ[RB_RESPONSE_LENGTH] = .REQ[RB_RESPONSE_LENGTH] + 2;
;	  1752	
;	  1753	    LENGTH = ch$rchar(.REQ[RB_ERROR_POINTER]) + 1;
;	  1754	    RESP_PTR = ch$move (.LENGTH,        ! Text count
;	  1755	                        .REQ[RB_ERROR_POINTER],
;	  1756	                        .RESP_PTR);
;	  1757	    REQ[RB_RESPONSE_LENGTH] = .REQ[RB_RESPONSE_LENGTH] + .LENGTH;
;	  1758	
;	  1759	    NICE_EID_LEN = .REQ[RB_NICE_ENTITY_ID_LENGTH];
;	  1760	
;	  1761	    if ((.NICE_EID_LEN[VALUE] lss 0) or       ! If plural entity class
;	  1762	        (.REQ[RB_NICE_FUNCTION] eql READ_) or !  or READ
;	  1763	        (.REQ[RB_NICE_FUNCTION] eql ZERO_ and !  or READ and ZERO
;	  1764	         .REQ[$sub_field (RB_NICE_OPTION, ZO_READ_AND_ZERO)] eql 1))
;	  1765	    then
;	  1766		begin				      ! include an entity ID
;	  1767	        EID_PTR = .REQ[RB_NICE_ENTITY];
;	  1768	        selectone .REQ[RB_NICE_ENTITY_TYPE] of
;	  1769	            set
;	  1770	            [NODE_E]:			! NODE has special format
;	  1771	                begin
;	  1772	                local
;	  1773	                    NODE_ID_PTR,
;	  1774	                    LOCAL_NODE_PTR;
;	  1775	
;	  1776	                LOCAL_NODE_PTR = NMU$NETWORK_LOCAL (); ! Local node id
;	  1777	                NODE_ID_PTR = .RESP_PTR; ! Make copy of current pointer
;	  1778	
;	  1779	                EID_LEN = ch$rchar (ch$plus (.EID_PTR,2)) + 3;
;	  1780	                RESP_PTR = ch$move (.EID_LEN, .EID_PTR, .RESP_PTR);
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  64
X03.30		NML$NICE_RESPONSE as NL_RSP			 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (18)

;	  1781	                !
;	  1782	                ! If node addresses are equal this is the executor node,
;	  1783	                ! so set bit 7 in length byte to indicate this fact.
;	  1784	                !
;	  1785	                if GETB (NODE_ID_PTR) eql GETB (LOCAL_NODE_PTR)
;	  1786	                then if GETB (NODE_ID_PTR) eql GETB (LOCAL_NODE_PTR)
;	  1787	                     then ch$wchar ((ch$rchar (.NODE_ID_PTR) or (1 ^ 7)), .NODE_ID_PTR);
;	  1788	
;	  1789	                REQ[RB_RESPONSE_LENGTH] = .REQ[RB_RESPONSE_LENGTH] + .EID_LEN;
;	  1790	                end;
;	  1791	
;	  1792	            [LOGGING_]:
;	  1793	                begin
;	  1794	                ch$wchar_a (ch$rchar (.EID_PTR),RESP_PTR);
;	  1795	                REQ[RB_RESPONSE_LENGTH] = .REQ[RB_RESPONSE_LENGTH] + 1;
;	  1796	                end;
;	  1797	
;	  1798	            [otherwise]:
;	  1799	                begin
;	  1800	                EID_LEN = ch$rchar (.EID_PTR) + 1;
;	  1801	                RESP_PTR = ch$move (.EID_LEN, .EID_PTR, .RESP_PTR);
;	  1802	                REQ[RB_RESPONSE_LENGTH] = .REQ[RB_RESPONSE_LENGTH] + .EID_LEN;
;	  1803	                end;
;	  1804	            tes;
;	  1805	        end;
;	  1806	
;	  1807	    end;				! End of NML$NICE_RESPONSE


						.SBTTL	NL.RSP NML$NICE_RESPONSE as NL_RSP
005574						.PSECT	$CODE$,  RO 

000000	004167  000000G			NL.RSP::JSR	R1,$SAVE5			;					1677
000004	005746 					TST	-(SP)
000006	016602  000020 				MOV	20(SP),R2			; REQ,*					1728
000012	012700  000036 				MOV	#36,R0
000016	060200 					ADD	R2,R0
000020	005710 					TST	(R0)
000022	001010 					BNE	1$
000024	012710  000400 				MOV	#400,(R0)			;					1730
000030	011046 					MOV	(R0),-(SP)			;					1731
000032	004767  000000G				JSR	PC,UM.GET
000036	010062  000026 				MOV	R0,26(R2)
000042	005726 					TST	(SP)+				;					1729
000044	012716  000034 			1$:	MOV	#34,(SP)			;					1738
000050	060216 					ADD	R2,(SP)
000052	005076  000000 				CLR	@0(SP)
000056	016205  000026 				MOV	26(R2),R5			; *,RESP.PTR				1739
000062	116225  000116 				MOVB	116(R2),(R5)+			; *,RESP.PTR				1741
000066	005276  000000 				INC	@0(SP)				;					1742
000072	126227  000116  000002 			CMPB	116(R2),#2			;					1744
000100	001541 					BEQ	7$
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  65
X03.30		NML$NICE_RESPONSE as NL_RSP			 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (18)

000102	126227  000116  177600 			CMPB	116(R2),#-200			;					1745
000110	001535 					BEQ	7$				;					1746
000112	016200  000120 				MOV	120(R2),R0			; *,ERR.DTL				1748
000116	012762  177777  000120 			MOV	#-1,120(R2)			;					1749
000124	110025 					MOVB	R0,(R5)+			; ERR.DTL,RESP.PTR			1750
000126	010001 					MOV	R0,R1				; ERR.DTL,*
000130	000301 					SWAB	R1
000132	110125 					MOVB	R1,(R5)+			; *,RESP.PTR
000134	062776  000002  000000 			ADD	#2,@0(SP)			;					1751
000142	005001 					CLR	R1				; LENGTH				1753
000144	157201  000122 				BISB	@122(R2),R1			; *,LENGTH
000150	005201 					INC	R1				; LENGTH
000152	010146 					MOV	R1,-(SP)			; LENGTH,*				1756
000154	016246  000122 				MOV	122(R2),-(SP)
000160	010546 					MOV	R5,-(SP)			; RESP.PTR,*
000162	004767  000000G				JSR	PC,BL$MOV
000166	010005 					MOV	R0,R5				; *,RESP.PTR				1754
000170	060176  000006 				ADD	R1,@6(SP)			; LENGTH,*				1757
000174	005000 					CLR	R0				; NICE.EID.LEN				1759
000176	156200  000076 				BISB	76(R2),R0			; *,NICE.EID.LEN
000202	002413 					BLT	2$				;					1761
000204	126227  000072  000024 			CMPB	72(R2),#24			;					1762
000212	001407 					BEQ	2$
000214	126227  000072  000025 			CMPB	72(R2),#25			;					1763
000222	001066 					BNE	6$
000224	005762  000072 				TST	72(R2)				;					1764
000230	100063 					BPL	6$
000232	016201  000102 			2$:	MOV	102(R2),R1			; *,EID.PTR				1767
000236	005000 					CLR	R0				;					1768
000240	156200  000074 				BISB	74(R2),R0
000244	005700 					TST	R0
000246	001031 					BNE	3$
000250	004767  000000G				JSR	PC,UN.LOCAL			;					1776
000254	010002 					MOV	R0,R2				; *,LOCAL.NODE.PTR
000256	010503 					MOV	R5,R3				; RESP.PTR,NODE.ID.PTR			1777
000260	005004 					CLR	R4				; EID.LEN				1779
000262	156104  000002 				BISB	2(R1),R4			; *(EID.PTR),EID.LEN
000266	062704  000003 				ADD	#3,R4				; *,EID.LEN
000272	010416 					MOV	R4,(SP)				; EID.LEN,*				1780
000274	010146 					MOV	R1,-(SP)			; EID.PTR,*
000276	010546 					MOV	R5,-(SP)			; RESP.PTR,*
000300	004767  000000G				JSR	PC,BL$MOV
000304	010005 					MOV	R0,R5				; *,RESP.PTR
000306	122322 					CMPB	(R3)+,(R2)+			; NODE.ID.PTR,LOCAL.NODE.PTR		1785
000310	001030 					BNE	5$
000312	122322 					CMPB	(R3)+,(R2)+			; NODE.ID.PTR,LOCAL.NODE.PTR		1786
000314	001026 					BNE	5$
000316	005000 					CLR	R0				;					1787
000320	151300 					BISB	(R3),R0				; NODE.ID.PTR,*
000322	052700  000200 				BIS	#200,R0
000326	110013 					MOVB	R0,(R3)				; *,NODE.ID.PTR
000330	000420 					BR	5$				;					1789
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  66
X03.30		NML$NICE_RESPONSE as NL_RSP			 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (18)

000332	020027  000002 			3$:	CMP	R0,#2				;					1768
000336	001004 					BNE	4$
000340	111125 					MOVB	(R1),(R5)+			; EID.PTR,RESP.PTR			1794
000342	005276  000006 				INC	@6(SP)				;					1795
000346	000414 					BR	6$				;					1768
000350	005004 				4$:	CLR	R4				; EID.LEN				1800
000352	151104 					BISB	(R1),R4				; EID.PTR,EID.LEN
000354	005204 					INC	R4				; EID.LEN
000356	010416 					MOV	R4,(SP)				; EID.LEN,*				1801
000360	010146 					MOV	R1,-(SP)			; EID.PTR,*
000362	010546 					MOV	R5,-(SP)			; RESP.PTR,*
000364	004767  000000G				JSR	PC,BL$MOV
000370	010005 					MOV	R0,R5				; *,RESP.PTR
000372	060476  000012 			5$:	ADD	R4,@12(SP)			; EID.LEN,*				1802
000376	022626 					CMP	(SP)+,(SP)+			;					1799
000400	062706  000006 			6$:	ADD	#6,SP				;					1704
000404	005726 				7$:	TST	(SP)+				;					1677
000406	000207 					RTS	PC
; Routine Size:  132 words,	Routine Base:  $CODE$ + 5574
; Maximum stack depth per invocation:  13 words


;	  1808	end                                     ! End of Module NMLNIC
;	  1809	eludom



;					OTS external references
						.GLOBL	$SAVE5, $SAVE4, $SAVE2, BL$MOV


;					PSECT SUMMARY
;
;	Psect Name			Words	  Attributes
;	 $PLIT$				   33	    RO ,  D  ,  LCL,  REL,  CON
;	 $CODE$				 1602	    RO ,  I  ,  LCL,  REL,  CON
;	 $OWN$				    4	    RW ,  D  ,  LCL,  REL,  CON




;				LIBRARY STATISTICS
;
;					     -------- Symbols --------    Blocks
;	File				     Total    Loaded   Percent      Read
;
;  DNET61:<MCB.NML>NMLLIB.L16.2		      2718       226         8         0
NMLNIC		NMLNIC -- NICE Message Verifier			24-May-1985 13:19:37	TOPS-20 Bliss-16 2A(530)	    Page  67
X03.30		NML$NICE_RESPONSE as NL_RSP			 3-Jan-1983 01:38:17	DNET61:<MCB.NML>NMLNIC.BLI.1 (18)

;	  1810	! Local Modes:
;	  1811	! Mode:BLISS
;	  1812	! Auto Save Mode:2
;	  1813	! Comment Column:40
;	  1814	! Comment Rounding:+1
;	  1815	! End:
; Size:		1602 code + 37 data words
; Run Time:	00:33.7
; Elapsed Time:	00:42.4
; Memory Used:	76 pages
; Compilation Complete
ADDRESS				1573	1586#	1587	1595	1604#	1605
ADVANCE				 405#	 888	 898	 908	1181	1203	1214	1220	1232	1243	1252	1322
				1329	1336	1344	1361	1366	1375	1400	1407	1426	1445
AI				1414	1433
ALL				 408
BOOT_OPTIONS			 780
BO_ENTITY_TYPE			 789	 790	 796	 804
BO_RESERVED			 793
C				1631	1633#	1634	1635
CH$WCHAR			1635	1787
CHANGE_				 605	1657
CHANGE_OPTIONS			 950
CIRCUIT_			 664	 727	 790	1226
CLEAR_PURGE			1263	1313	1456	1510
CM2				1340
CMN				1348	1358
CMO				1349
CMU				1385
COUNT				 405	 406
CO_CLEAR_PURGE			 968
CO_ENTITY_TYPE			 958
CO_RESERVED			 960
DO_ENTITY_TYPE			 726	 727	 733	 741
DO_RESERVED			 730
DU1				1317	1319
DU2				1326
DU4				1333
DUMMY				 330+	 332+	 333+
DUMP_OPTIONS			 717
DUMP_				 599	1648
EID_ADR				1551	1575#	1576	1579	1580	1592	1597	1610
EID_LEN				1549	1581#	1584	1602	1606	1607	1716	1779#	1780	1789	1800#	1801
				1802
EID_PTR				1550	1580#	1591	1595	1596	1605	1606	1609	1715	1767#	1779	1780
				1794	1800	1801
ENTITY				1389	1391#	1397	1487	1491#	1493	1507
ENT_TYP				 863	 867#	 870
ERR_DTL				1717	1748#	1750
FORMAT				1164	1172#	1173	1174	1208	1217	1220	1237	1243
GETB				 587	 658	 721	 784	 847	 884	 894	 904	 954	1009	1067	1122
				1172	1355	1391	1394	1421	1785	1786
GETW				1506#	1586
GET_ENTITY_ID			 372	 671	 734	 797	 856	 963	1021	1076
HI				1415
HX8				1317	1442
I				1342
L				1573	1582#	1598	1611
LEN				1622	1625#	1627	1629
LINE_				1225
LOAD_OPTIONS			 654
LOAD_				 595	 597	1643	1645
LOCAL_NODE_PTR			1774	1776#	1785	1786
LOGGING_			1248	1617	1792
LO_ENTITY_TYPE			 663	 664	 670	 678
LO_RESERVED			 667
MODULE_				1081	1196	1227	1493
N				 399	 402	1629
NEXTB_NICE			 383#	 586	 657	 720	 783	 846	 953	1008	1066	1121	1170	1251
				1321	1351	1365	1387	1393#	1417
NEXTB				 384
NEXTF_NICE			 388#	 882	 892	 902	1200	1229
NEXTF				 389
NEXTN_NICE			 399#	1335	1373	1405	1424	1444
NEXTN				 400
NEXTW_NICE			 394#	1210	1328	1343	1360	1399	1502
NEXTW				 395
NICE$_SUC			1315
NICE_EID_LEN			1719	1759#	1761
NICE_PARAMETER_ENTRY		 413#	1300
NICE_PARAMETER_NUMBER		 412#
NICE_PARAMETER_TABLE_ENTRY	 420#	1295
NML$CHANGE			 480	1658
NML$DEQUEUE_REQUEST		 362
NML$DUMP			 477	1649
NML$LOAD			 476*	1646
NML$NICE_EXECUTE		 375	 541
NML$NICE_RESPONSE		 376	 548
NML$NICE_VERIFY			 363	 538
NML$PARAMETER_LOOKUP		 484	1507
NML$READ			 481	1661
NML$REQUEST_FINISH		 550
NML$REQUEST_MANAGER		 346+
NML$REQUEST_NEXT		 532
NML$SYSTEM_SPECIFIC		 483	1667
NML$TEST			 479	1655
NML$TRIGGER			 478	1652
NML$ZERO			 482	1664
NMLNIC				 196#
NMU$MEMORY_GET			1575	1731
NMU$MEMORY_MANAGER		 344+
NMU$NETWORK_LOCAL		 485	1590	1776
NMU$QUEUE_MANAGER		 345+
NMU$SCHED_MANAGER		 343+*
NODE_E				 663	 676	 726	 739	 789	 802	 861	 868	1196	1198	1397	1493
				1571	1770
NODE_ID_BUFFER_ALLOCATION	1575
NODE_ID_BUFFER_LENGTH		1582	1589
NODE_ID_PTR			1773	1777#	1785	1786	1787
NONE				 469
NULL				 520#	 536
OPT				 654	 658#	 661	 663	 664	 667	 670	 678	 717	 721#	 724	 726
				 727	 730	 733	 741	 780	 784#	 787	 789	 790	 793	 796	 804
				 843	 850#	 851	 853	 865	 880	 950	 957#	 958	 960	 968	1005
				1012#	1013	1015	1018	1063	1070#	1071	1073
PARAMETER			1298	1300#	1306	1314	1317	1358	1378	1433	1434	1488	1506#	1507
PARAMETER_ENTRY_FIELDS		 423#	 467
PARAMETER_ENTRY_SIZE		 463#	 467
PARAMETER_ENTRY			 466#	1298
POINTER				 405	 406#
PTR				1622	1624#	1625	1633	1635
PUTB				1596	1606	1741
PUTW				1595	1605	1750
QUALIFIER_PARAMETER		1057#	1082
RB_ACCOUNT_LENGTH		 878	 904	 905	 908
RB_ACCOUNT			 878	 907
RB_ERROR_DETAIL			 535	1495	1748	1749
RB_ERROR_POINTER		 536	1753	1755
RB_NICE				 534	1556
RB_NICE_ENTITY			1176	1213	1219	1222	1239	1245	1250	1586	1592	1597	1598	1608
				1610	1611	1613	1624	1767
RB_NICE_ENTITY_ADR		1557	1579
RB_NICE_ENTITY_ID_LENGTH	1173	1581	1759
RB_NICE_ENTITY_TYPE		 670	 676	 678	 733	 739	 741	 796	 802	 804	 851	 861	 867
				 868	 870	 958	1013	1071	1081	1196	1491	1495	1569	1768
RB_NICE_FUNCTION		 587	 595	1643	1762	1763
RB_NICE_LENGTH			 384	 389	 395	 400	 886	 896	 906	1202	1231	1374	1406	1425
RB_NICE_OPTION			 661	 724	 787	 847	 850	 954	 957	1009	1012	1067	1070	1122
				1125	1764
RB_NICE_PARAMETERS		1490
RB_NICE_POINTER			 391	 534	 587	 658	 721	 784	 847	 884	 887	 888	 894	 897
				 898	 904	 907	 908	 954	1009	1067	1122	1172	1181	1203	1213
				1214	1219	1220	1232	1239	1243	1250	1252	1309	1322	1329	1336
				1344	1355	1361	1366	1375	1391	1394	1400	1407	1421	1426	1445
				1490	1506	1556
RB_NICE_POSITION		 385	 390	 396	 401	 533	 886	 896	 906	1180	1202	1231	1374
				1406	1425	1555
RB_NICE_QUALIFIER		1308	1309
RB_PASSWORD			 877	 897
RB_PASSWORD_LENGTH		 877	 894	 895	 898
RB_RESPONSE			1731	1739
RB_RESPONSE_ALLOCATION		1728	1730
RB_RESPONSE_LENGTH		 545	1738	1742	1751	1757	1789	1795	1802
RB_RETURN_CODE			 547	1741	1744	1745
RB_USER				 876	 887
RB_USER_LENGTH			 876	 884	 885	 888
READ_OPTIONS			1005
READ_				 607	1660	1762
REQ				 384	 385	 389	 390	 391	 395	 396	 400	 401	 524	 532#	 533#
				 534#	 535#	 536#	 538	 541	 545	 547#	 548	 550	 555	 584	 587#
				 595	 598	 600	 602	 604	 606	 608	 610	 612	 619	 651	 658
				 661#	 670#	 671	 676#	 677	 678#	 682	 714	 721	 724#	 733#	 734
				 739#	 740	 741#	 745	 777	 784	 787#	 796#	 797	 802#	 803	 804#
				 808	 840	 847#	 850	 851#	 856	 861	 867	 868#	 869	 870#	 876#
				 877#	 878#	 884#	 885	 886	 887#	 888	 894#	 895	 896	 897#	 898
				 904#	 905	 906	 907#	 908	 913	 918	 947	 954#	 957	 958#	 963
				 968	 970	1002	1009#	1012	1013#	1021	1026	1028	1060	1067#	1070
				1071#	1076	1081	1082	1086	1115	1122#	1125	1132	1161	1172	1173#
				1176#	1180#	1181	1196	1202	1203	1213#	1214	1219#	1220	1222#	1231
				1232	1239#	1243	1245#	1250#	1252	1263	1294	1308	1309#	1322	1329
				1336	1344	1355	1361	1366	1374	1375	1391	1394	1400	1406	1407
				1421	1425	1426	1445	1456	1484	1490#	1491	1495#	1506	1510	1516
				1545	1555#	1556#	1557#	1569	1579#	1581	1586	1592#	1597#	1598	1608
				1610#	1611	1613#	1624	1643	1646	1649	1652	1655	1658	1661	1664
				1667	1677	1707	1728	1730#	1731#	1738#	1739	1741	1742#	1744	1745
				1748	1749#	1751#	1753	1755	1757#	1759	1762	1763	1764	1767	1768
				1789#	1795#	1802#
REQUEST_BLOCK			 524	 584	 651	 714	 777	 840	 947	1002	1060	1115	1161	1294
				1484	1545	1707
RESPONSE_ALLOCATION		1712#	1730	1731
RESPONSE_LENGTH			1710#	1711
RESPONSE_SIZE			1711#	1712
RESP_PTR			1720	1739#	1741	1750	1754#	1756	1777	1780#	1794	1801#
RESULT				1548	1559#	1641	1646#	1649#	1652#	1655#	1658#	1661#	1664#	1667#	1671#
				1675
RO_ENTITY_TYPE			1013
RO_INFO_TYPE			1018
RO_RESERVED			1015
RT$LOCAL			 532
RTN_COD				 523	 538#	 540	 541#	 543	 547	 655	 671#	 673	 674	 677#	 680
				 718	 734#	 736	 737	 740#	 743	 781	 797#	 799	 800	 803#	 806
				 844	 856#	 858	 859	 869#	 913#	 916	 951	 963#	 965	 966	1006
				1021#	1023	1024	1064	1076#	1078	1079	1119
SCAN_PARAMETER			 373	1510
SET_DEFINE			 648#	 677	 711#	 740	 774#	 803	 837#	 869	 913	 999#	1026
SYSTEM_SPECIFIC_		 595	 611	1643	1666
SYS_TYPE			1118	1125#	1127
TABLE_ENTRY_FIELDS		 410#	 421
TABLE_ENTRY_SIZE		 417#	 421
TASK_INFO			 318+
TEST_OPTIONS			 843
TEST_				 603	1654
TOPS20_				1127
TO_ACCESS_CONTROL		 865	 880
TO_ENTITY_TYPE			 851
TO_RESERVED			 853
TRIGGER_			 601	1651
VALUE				1173	1174	1208	1217	1220	1237	1243	1356	1371	1373	1375	1397
				1404	1405	1407	1422	1424	1426	1430	1584	1602	1606	1607	1625
				1627	1629	1761
VERIFY_PARAMETERS		 374	 677	 740	 803	 869	 913	 968	1026	1082
VY_CHANGE_REQUEST		 368	 606
VY_DUMP_REQUEST			 365	 600
VY_LOAD_REQUEST			 364	 598
VY_READ_REQUEST			 369	 608
VY_SYSTEM_SPECIFIC		 371	 612
VY_TEST_REQUEST			 367	 604
VY_TRIGGER_REQUEST		 366	 602
VY_ZERO_REQUEST			 370	 610
ZERO_OPTIONS			1063
ZERO_				 609	1663	1763
ZO_ENTITY_TYPE			1071
ZO_READ_AND_ZERO		1764
ZO_RESERVED			1073
_ADJACENT_ONLY			 445#
_APPLICABILITY			 435#	 440
_CHARACTERISTIC			 452#
_CLEARABLE			 458#
_DATA_FORMAT			 429#	1317	1358	1433
_DATA_TYPE			 430#
_EVENTS				 455#	1378
_EXECUTOR_ONLY			 442#
_NAME				 426#
_NML_PARAMETER			 433#
_OTHER_NODES			 443#	 444
_QUALIFIED			 441#
_QUALIFIER			 456#	1306	1314	1434
_READ_ONLY			 437#
_REMOTE_ONLY			 446#
_SETTABILITY			 434#	 436
_SINK_ONLY			 447#
_STATUS				 453#
_SUMMARY			 454#
_UPPER_CASE			 459#
_WRITE_ONLY			 438#
$ADDRESS			 413
$ALIGN				 432	 451
$BIT				 433	 437	 438	 441	 442	 445	 446	 447	 452	 453	 454	 455
				 456	 458	 459
$BITS				 434	 435	 443
$BYTE				 429	 430
$CONTINUE			 439	 448	 449
$FALSE				 319+
$FIELD				 410	 423
$FIELD_SET_SIZE			 417	 463
$INCOMPLETE$			 330+#
$INTEGER			 412
$INTERNAL_ERROR$		 315+#
$MCB				 425
$NICE$ERR_IMF			 588	 659	 722	 785	 848	 854	 866	 890	 900	 910	 955	1010
				1068	1123	1184	1204	1206	1211	1233	1235	1323	1330	1337	1345
				1362	1367	1376	1379	1382	1395	1401	1408	1411	1427	1431	1439
				1446
$NICE$ERR_IPG			1310
$NICE$ERR_MPE			1671
$NICE$ERR_OPF			 335+
$NICE$ERR_REE			1577
$NICE$ERR_UFO			 615	 665	 668	 728	 731	 791	 794	 961	1016	1019	1074	1128
$NICE$ERR_UPT			1435	1451	1508#
$NICE$ERR_URC			1253	1258	1496
$NML$MAP_NODE_ID		1598	1611
$OVERLAY			 436	 440	 444
$POINTER			 426
$SHOW				 408	 469
$SIGNED_BYTE_VALUE		1164	1353#	1389	1419#	1549	1622	1719
$SUB_FIELD			1764
$TRUE				1261	1454	1510	1514
%GLOBAL_ROUTINE			 486#	1677#
%REMAINING			 318+
%ROUTINE			 555#	 619#	 682#	 745#	 808#	 918#	 970#	1028#	1086#	1132#	1263#	1456#
				1516#