Google
 

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

;	  0001	! <BRANDT.DEVELOPMENT>NMLRCZ.BLI.1 23-Sep-82 10:54:34 Edit by BRANDT
;	  0002	!
;	  0003	!  Ident 35.
;	  0004	!    In READ_SPECIFIC_ENTITY and ZERO_SPECIFIC_ENTITY, copy the value
;	  0005	!    of ERROR_DETAIL (returned by NMLVDB) into the REQUEST block
;	  0006	!    so that it will be formatted into the response message.
;	  0007	!
;	  0008	! <BRANDT.DEVELOPMENT>NMLRCZ.BLI.1 22-Sep-82 15:21:29 Edit by BRANDT
;	  0009	!
;	  0010	!  Ident 34.
;	  0011	!    Add OWN variable ERROR_DETAIL, and include it as an argument
;	  0012	!    in all NML$VDB calls.  In CHANGE_SPECIFIC_ENTITY, copy the value
;	  0013	!    of ERROR_DETAIL (returned by NMLVDB) into the REQUEST block
;	  0014	!    so that it will be formatted into the response message.
;	  0015	!
;	  0016	! <BRANDT.DEVELOPMENT>NMLRCZ.BLI.2 17-Sep-82 10:12:37, Edit by BRANDT
;	  0017	!
;	  0018	!  Ident 33.
;	  0019	!    Rework edit 31 so that CLEAR entity ALL does not get rejected.
;	  0020	!
;	  0021	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.2 23-Jun-82 11:30:26, Edit by PECKHAM
;	  0022	!
;	  0023	! Ident 32.
;	  0024	! Check RB_PRV_* bits in request block before performing requests.
;	  0025	!
;	  0026	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.2  5-Jun-82 12:05:11, Edit by PECKHAM
;	  0027	!
;	  0028	! Ident 31.
;	  0029	! Fix CHANGE_SPECIFIC_ENTITY to reject the no-parameter case (SET entity ALL).
;	  0030	!
;	  0031	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.2 27-May-82 13:05:53, Edit by PECKHAM
;	  0032	!
;	  0033	! Ident 30.
;	  0034	! Add routine MULTIPLE_PARAMETERS to detect a message with multiple parameters.
;	  0035	! Use this in NML$CHANGE to reject requests with multiple parameters.
;	  0036	!
;	  0037	! NET:<BRANDT.DEVELOPMENT>NMLRCZ.BLI.2 11-May-82 9:00:28, Edit by BRANDT
;	  0038	!
;	  0039	!  Ident 29.
;	  0040	!   1)  Move code that puts entity id into response message from routine
;	  0041	!       COPY_RESP_PARAMETERS to NML$NICE_RESPONSE.
;	  0042	!   2)  In PROCESS_ENTITY_CLASS remove call to COPY_RESP_PARAMETERS
;	  0043	!       since this was only called to insert the entity id.
;	  0044	!   3)  Add code to READ_SPECIFIC_ENTITY to handle the case where the
;	  0045	!       data returned requires multiple response messages.  The complete
;	  0046	!	fix for this problem is to put the code added to this routine
;	  0047	!	into a new function which can also be called anytime
;	  0048	!	COPY_RESP_PARAMETERS is called.  This will cover all cases.
;	  0049	!   4)  In READ_SPECIFIC_ENTITY change buffer size to 192 chars from
;	  0050	!	256 chars.  Thus only 192 chars of data will be requested for
;	  0051	!	a single NICE response message.  If 256 chars were obtained,
;	  0052	!	it would not fit in the space currently allocated for NICE
								24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page   2
								 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (1)

;	  0053	!	resp messages (256 chars) since the NICE message also includes
;	  0054	!	some header info.
;	  0055	!
;	  0056	! NET:<VOBA.NML.DEVELOPMENT>NMLRCZ.BLI.23 25-Mar-82 17:52:28, Edit by VOBA
;	  0057	!
;	  0058	! Ident 28.
;	  0059	! Fix GET_NEXT_PARAMETER to parse cluster of parameters with different
;	  0060	! values. For example, CHANNELS parameter of MODULE entity with more than
;	  0061	! one range in a NICE message and formatted in a cluster, i.e. one follows
;	  0062	! another, would be parsed and passed to the parameter processing routine
;	  0063	! as one single unit.
;	  0064	!
;	  0065	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.3 11-Mar-82 08:58:36, Edit by PECKHAM
;	  0066	!
;	  0067	! Ident 27.
;	  0068	! Fix BUFFER1_LENGTH handling in PROCESS_ENTITY_CLASS.
;	  0069	!
;	  0070	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.2  8-Mar-82 17:56:17, Edit by PECKHAM
;	  0071	!
;	  0072	! Ident 26.
;	  0073	! Change test on results of MEMORY_GET so that we don't get
;	  0074	! resource errors in ZERO_SPECIFIC_ENTITY.
;	  0075	!
;	  0076	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.2  8-Mar-82 11:05:04, Edit by PECKHAM
;	  0077	!
;	  0078	! Ident 25.
;	  0079	! Eliminate duplicate response at end of SHOW KNOWN in PROCESS_REQUEST.
;	  0080	!
;	  0081	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.4  8-Mar-82 01:24:11, Edit by PECKHAM
;	  0082	!
;	  0083	! Ident 24.
;	  0084	! Fix up buffer length maintenance understanding with NML$VDB.
;	  0085	!
;	  0086	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.2  6-Mar-82 22:58:06, Edit by PECKHAM
;	  0087	!
;	  0088	! Ident 23.
;	  0089	! Remove direct references to lower level and go through NML$VDB.
;	  0090	!
;	  0091	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.9  6-Mar-82 21:35:17, Edit by PECKHAM
;	  0092	!
;	  0093	! Ident 22.
;	  0094	! Fix SET KNOWN bug - save and restore RB_NICE_PARAMETERS pointer.
;	  0095	! Re-organization to fix response handling for multiple responses
;	  0096	! on SET, SHOW, and ZERO commands.
;	  0097	! Eliminate distinction between qualified and unqualified $NML$xxx calls
;	  0098	! (changes made in NMXINT).
;	  0099	!
;	  0100	! NET:<VOBA.NML.DEVELOPMENT>NMLRCZ.BLI.8  5-Mar-82 08:40:28, Edit by VOBA
;	  0101	!
;	  0102	! Ident 21.
;	  0103	! Added code to handle MODULE entities.
;	  0104	! Undo last change made in PROCESS_ENTITY_CLASS (for PECKHAM).
								24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page   3
								 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (1)

;	  0105	!
;	  0106	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.3  3-Mar-82 10:59:44, Edit by PECKHAM
;	  0107	!
;	  0108	! Ident 20.
;	  0109	! De-optimize code in PROCESS_ENTITY_CLASS in order to avoid confusing
;	  0110	! BLIS16 compiler into creating stack bug.
;	  0111	!
;	  0112	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.3 26-Feb-82 15:16:59, Edit by PECKHAM
;	  0113	!
;	  0114	! Ident 19.
;	  0115	! Fix PROCESS_ENTITY_CLASS so that it generates an isolated '2' response
;	  0116	! before sending back the entity responses.
;	  0117	! General handling of NMU$MEMORY_GET failures.
;	  0118	!
;	  0119	! NET:<GROSSMAN.NML-SOURCES>NMLRCZ.BLI.3 24-Feb-82 09:13:39, Edit by GROSSMAN
;	  0120	!
;	  0121	! Fix PROCESS_ENTITY_CLASS so that it is sensitive to the resource error code
;	  0122	! returned by Tops-10's cruddy NMX. (Ie: it returns Parameter Value Too Long
;	  0123	! when attempting returning a list of active or known items.)
;	  0124	!
;	  0125	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.2                   , Edit by PECKHAM
;	  0126	!
;	  0127	! Ident 18.
;	  0128	! Fix logging entity insertion in COPY_RESPONSE_PARAMETERS.
;	  0129	! Also fix logging list processing in PROCESS_ENTITY_CLASS.
;	  0130	!
;	  0131	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.2  8-Feb-82 12:52:27, Edit by PECKHAM
;	  0132	!
;	  0133	! Ident 17.
;	  0134	! Fix EID_ADR buffer mismanagement bug in PROCESS_ENTITY_CLASS
;	  0135	! introduced by #16.
;	  0136	!
;	  0137	! NET:<PECKHAM.DEVELOPMENT>NMLRCZ.BLI.19 25-Jan-82 15:30:01, Edit by PECKHAM
;	  0138	!
;	  0139	! Ident 16.
;	  0140	! Change GETWs to GETBs in node name comparison in
;	  0141	! READ_SPECIFIC_ENTITY to get around BLISS compiler bug.
;	  0142	! In ZERO_SPECIFIC_ENTITY, always do a "show and zero" to the lower layer
;	  0143	! and use the result for a "counters zeroed" event.
;	  0144	!
;	  0145	! NET:<BRANDT.DEVELOP>NMLRCZ.BLI.1 21-Jan-82 12:15:27, Edit by BRANDT
;	  0146	!
;	  0147	! Ident 15.
;	  0148	! In routine PROCESS_ENTITY_CLASS, change a 7-bit pointer to an 8-bit
;	  0149	! pointer to resolve a problem with bad node addresses.
;	  0150	!
;	  0151	! NET:<GUNN>NMLRCZ.BLI.4 20-Jan-82 12:11:03, Edit by GUNN
;	  0152	!
;	  0153	! Ident 14.
;	  0154	! Update copyright date to 1982.
;	  0155	! Fix PROCESS_ENTITY_CLASS to be smart about handling the buffer
;	  0156	! size required for the list of known entities.
								24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page   4
								 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (1)

;	  0157	!
;	  0158	! NET:<BRANDT.DEVELOP>NMLRCZ.BLI.1 17-Dec-81 15:28:57, Edit by BRANDT
;	  0159	!
;	  0160	! Ident 13.
;	  0161	!   Fix routine CHANGE_SPECIFIC_ENTITY to correctly handle NICE messages
;	  0162	!   that have no parameters.  (e.g., CLEAR CIRCUIT foo ALL)
;	  0163	!   Update comments in GET_NEXT_PARAMETER and change interface to
;	  0164	!   expect only one argument.
;	  0165	!
;	  0166	! <GROSSMAN>NMLRCZ.BLI.2  1-Dec-81 19:07:14, Edit by GROSSMAN
;	  0167	! Ident 12.  (No change from previous)
;	  0168	! Fix a bug introduced accidentally by the previous edit. Makes this module
;	  0169	! compile.
;	  0170	!
;	  0171	! 1-Dec-81 16:59:19, Edit by GROSSMAN, Ident 12.
;	  0172	! Set buffer size to 256*3 in PROCESS_ENTITY_CLASS so that we can accomodate
;	  0173	! all the nodes on the engineering network at once.
;	  0174	!
;	  0175	! NET:<DECNET20-V3P1.NML>NMLRCZ.BLI.2 16-Sep-81 12:27:43, Edit by GUNN
;	  0176	! Ident 11.
;	  0177	! Set buffer count to zero if call to $NML$SHOW fails.
;	  0178	!
;	  0179	! NET:<DECNET20-V3P1.NMU.LIBRARY>NMLRCZ.BLI.4 30-Jun-81 11:25:37, Edit by GUNN
;	  0180	!
;	  0181	! Ident 10.
;	  0182	! Fix code in READ_SPECIFIC_ENTITY to set error return code only if both
;	  0183	! call to VDB and call to NMX fail.
;	  0184	!
;	  0185	! LTNML:<V3-LT.NCPNML.NMLMCB>NMLRCZ.BLI.4 17-Jun-81 09:01:54, Edit by SROBINSON
;	  0186	! X03.09
;	  0187	! Fix NODE_ processing in PROCESS_ENTITY_CLASS to get right ID length
;	  0188	!   and be defensive.
;	  0189	!
;	  0190	! NET:<DECNET20-V3P1.NML>NMLRCZ.BLI.3 12-Jun-81 14:16:51, Edit by GUNN
;	  0191	!
;	  0192	! Ident 08.
;	  0193	! Fix call to $NML$MAP_NODE_ID in PROCESS_ENTITY_CLASS to pass 
;	  0194	! address of length not literal.
;	  0195	!
;	  0196	! NET:<DECNET20-V3P1.NML>NMLRCZ.BLI.5  6-May-81 10:36:50, Edit by GUNN
;	  0197	!
;	  0198	! Pass along updated buffer pointer when calling $NML$SHOxx interface.
;	  0199	!
;	  0200	! NET:<DECNET20-V3P1.NML>NMLRCZ.BLI.4  6-May-81 10:15:43, Edit by GUNN
;	  0201	!
;	  0202	! Add code to read parameters from volatile data base and merge in
;	  0203	! buffer with parameters from lower layers.
;	  0204	!
;	  0205	! NET:<DECNET20-V3P1.NML>NMLRCZ.BLI.2 29-Mar-81 22:47:22, Edit by GUNN
;	  0206	!
;	  0207	! Change GET_NEXT_PARAMETER routine to calculate length of current
;	  0208	! parameter. It now uses NML$PARAMETER_DATA.
								24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page   5
								 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (1)

;	  0209	!
;	  0210	! NET:<DECNET20-V3P1.NML>NMLRCZ.BLI.2 13-Mar-81 17:13:44, Edit by GUNN
;	  0211	!
;	  0212	! Fix PROCESS_ENTITY_CLASS to release NODE id buffer only if one
;	  0213	! has been previously allocated.
;	  0214	!
;	  0215	! NET:<DECNET20-V3P1.NML>NMLRCZ.BLI.4 10-Mar-81 17:49:13, Edit by GUNN
;	  0216	!
;	  0217	! Fix loop in PROCESS_ENTITY_CLASS routine to cycle through all
;	  0218	! entities. Length of executor node id name was not getting bit 7
;	  0219	! masked.
;	  0220	!
;	  0221	! NET:<DECNET20-V3P1.NML>NMLRCZ.BLI.2 13-Feb-81 08:51:27, Edit by GUNN
;	  0222	!
;	  0223	! Add code to expand NODE entity ids returned in class list to full format.
;	  0224	!
;	  0225	! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLRCZ.BLI.14 11-Feb-81 16:18:34, Edit by GUNN
;	  0226	!
;	  0227	! Add code to set bit 7 of node entity name length byte if
;	  0228	! it is the executor.
;	  0229	!
;	  0230	! Change reference to entity id length in request block to be
;	  0231	! treated as signed 8 bit byte.
;	  0232	!
		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page   6
								 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (2)

;	  0233	%title 'NMLRCZ -- NICE Read/Change/Zero Processing'
;	  0234	module NMLRCZ	(
;	  0235			ident = 'X03.35'
;	  0236			) =
;	  0237	begin
;	  0238	
;	  0239	!                    COPYRIGHT (c) 1980, 1981, 1982
;	  0240	!                    DIGITAL EQUIPMENT CORPORATION
;	  0241	!                        Maynard, Massachusetts
;	  0242	!
;	  0243	!     This software is furnished under a license and may  be  used
;	  0244	!     and copied only in accordance with the terms of such license
;	  0245	!     and with the inclusion of the above copyright notice.   This
;	  0246	!     software  or any other copies thereof may not be provided or
;	  0247	!     otherwise made available to any other person.  No  title  to
;	  0248	!     and ownership of the software is hereby transferred.
;	  0249	!
;	  0250	!     The information  in  this  software  is  subject  to  change
;	  0251	!     without  notice  and should not be construed as a commitment
;	  0252	!     by DIGITAL EQUIPMENT CORPORATION.
;	  0253	!
;	  0254	!     DIGITAL assumes no responsibility for the use or reliability
;	  0255	!     of  its  software  on  equipment  which  is  not supplied by
;	  0256	!     DIGITAL.
;	  0257	!
;	  0258	
;	  0259	!++
;	  0260	! FACILITY:	DECnet-10/20 V3.0 Network Management Layer (NML)
;	  0261	!
;	  0262	! ABSTRACT:
;	  0263	!
;	  0264	!	Performs read parameters and counters, change parameters, and zero
;	  0265	!	counters.
;	  0266	!
;	  0267	! ENVIRONMENT:	TOPS-10/20 & MCB/RSX11 User mode under NML
;	  0268	!
;	  0269	! AUTHOR: Dale C. Gunn , CREATION DATE: 12-Nov-80
;	  0270	!
;	  0271	! MODIFIED BY:
;	  0272	!
;	  0273	!	, : VERSION
;	  0274	! 01	-
;	  0275	!--
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page   7
X03.35								 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (3)

;	  0276	
;	  0277	!
;	  0278	! INCLUDE FILES:
;	  0279	!
;	  0280	
;	  0281	library 'NMLLIB';                       ! All required definitions
;	  0282	require 'NMLEXT';                       ! NML External routines
;	  0388	
;	  0389	!
;	  0390	! TABLE OF CONTENTS
;	  0391	!
;	  0392	
;	  0393	forward routine
;	  0394	    NML$READ,                           ! Perform read information
;	  0395	    READ_SPECIFIC_ENTITY : novalue,     ! Reads information for single ID
;	  0396	    NML$CHANGE,                         ! Perform change parameters
;	  0397	    CHANGE_SPECIFIC_ENTITY : novalue,
;	  0398	    MULTIPLE_PARAMETERS,
;	  0399	    GET_NEXT_PARAMETER,
;	  0400	    NML$ZERO,                           ! Perform zero counters
;	  0401	    ZERO_SPECIFIC_ENTITY : novalue,
;	  0402	    PROCESS_REQUEST,
;	  0403	    PROCESS_ENTITY_CLASS,               ! Process 'KNOWN' or 'ACTIVE' entities
;	  0404	    COPY_RESP_PARAMETERS;
;	  0405	
;	  0406	!
;	  0407	! MACROS:
;	  0408	!
;	  0409	
;	  0410	
;	  0411	!
;	  0412	! EQUATED SYMBOLS:
;	  0413	!
;	  0414	
;	  0415	!
;	  0416	! OWN STORAGE:
;	  0417	!
;	  0418	
;	  0419	own
;	  0420	    ERROR_DETAIL: initial (-1);	 ! For error detail returned from NMLVDB
;	  0421	
;	  0422	!
;	  0423	! EXTERNAL REFERENCES:
;	  0424	!
;	  0425	
;	  0426	external routine
;	  0427	         NMU$NETWORK_LOCAL,
;	  0428	         NML$VDB_PARAMETER,
;	  0429	         NML$DECLARE_EVENT,
;	  0430	         NML$PARAMETER_DATA,
;	  0431	         NML$VDB,
;	  0432	         NML$PDB_READ,
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page   8
X03.35								 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (3)

;	  0433	         NML$PDB_CHANGE,
;	  0434	         NML$NICE_RESPONSE;
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page   9
X03.35		NML$READ as NL_REA				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (4)

;	  0435	%global_routine ('NML$READ', REQ) =
;	  0436	
;	  0437	!++
;	  0438	! FUNCTIONAL DESCRIPTION:
;	  0439	!
;	  0440	!	Performs the NICE read information request for the local
;	  0441	!       Network Management Layer.
;	  0442	!
;	  0443	! FORMAL PARAMETERS
;	  0444	!
;	  0445	!	REQ - The address of the NML Request Block for this request.
;	  0446	!
;	  0447	! IMPLICIT INPUTS
;	  0448	!
;	  0449	!	NONE.
;	  0450	!
;	  0451	! ROUTINE VALUE:
;	  0452	!
;	  0453	!	1 if NICE request has completed successfully.
;	  0454	!       NEGATIVE NICE error return code if request failed.
;	  0455	!
;	  0456	! SIDE EFFECTS:
;	  0457	!
;	  0458	!	NONE.
;	  0459	!
;	  0460	!--
;	  0461	
;	  0462	    begin
;	  0463	
;	  0464	    map
;	  0465	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0466	
;	  0467	    if not .REQ[RB_PRV_READ] then return NICE$_PRV;
;	  0468	
;	  0469	    PROCESS_REQUEST (.REQ, READ_SPECIFIC_ENTITY)
;	  0470	    end;				! End of NML$READ


						.TITLE	NMLRCZ NMLRCZ -- NICE Read/Change/Zero Processing
						.IDENT	/X03.35/


000000						.PSECT	$OWN$,  D  
000000	177777 				ERROR.DETAIL:
						.WORD	-1


						.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
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  10
X03.35		NML$READ as NL_REA				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (4)

						.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	UN.LOCAL, NL.PVD, EV.DEC, NL.PDA
						.GLOBL	NL.VDB, NL.PPR, NL.PPC, NL.RSP


						.SBTTL	NL.REA NML$READ as NL_REA
000000						.PSECT	$CODE$,  RO 

000000	016600  000002 			NL.REA::MOV	2(SP),R0			; REQ,*					0467
000004	032760  020000  000076 			BIT	#20000,76(R0)
000012	001003 					BNE	1$
000014	012700  177775 				MOV	#-3,R0
000020	000207 					RTS	PC
000022	016646  000002 			1$:	MOV	2(SP),-(SP)			; REQ,*					0469
000026	012746  000000V				MOV	#READ.SPECIFIC.ENTITY,-(SP)
000032	004767  000000V				JSR	PC,PROCESS.REQUEST
000036	022626 					CMP	(SP)+,(SP)+			;					0462
000040	000207 					RTS	PC				;					0435
; Routine Size:  17 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  3 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  11
X03.35		READ_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (5)

;	  0471	%routine ('READ_SPECIFIC_ENTITY', REQ) : novalue =
;	  0472	
;	  0473	!++
;	  0474	! FUNCTIONAL DESCRIPTION:
;	  0475	!
;	  0476	!	Performs a NICE read information request for a single
;	  0477	!       named entity.
;	  0478	!
;	  0479	! FORMAL PARAMETERS
;	  0480	!
;	  0481	!	REQ - The address of the NML Request Block for this request.
;	  0482	!
;	  0483	! IMPLICIT INPUTS
;	  0484	!
;	  0485	!	NONE.
;	  0486	!
;	  0487	! ROUTINE VALUE:
;	  0488	!
;	  0489	!	NONE.
;	  0490	!
;	  0491	! SIDE EFFECTS:
;	  0492	!
;	  0493	!	NONE.
;	  0494	!
;	  0495	!--
;	  0496	
;	  0497	    begin
;	  0498	
;	  0499	    literal
;	  0500	           OB_LENGTH = 192,             ! Length of output buffer
;	  0501	           OB_SIZE = ch$allocation (OB_LENGTH,8),
;	  0502	           OB_ALLOCATION = OB_SIZE * %upval;
;	  0503	
;	  0504	    map
;	  0505	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0506	
;	  0507	    local
;	  0508	         BUFFER_ADDR,                   ! Address of output buffer
;	  0509	         BUFFER_ALLOC,			! Allocation adjustment
;	  0510	         BUFFER_LEFT,                   ! Output buffer length available
;	  0511	         BUFFER_LEN,                    ! Output buffer length
;	  0512	         BUFFER_USED,                   ! Last item # in current buffer
;	  0513	         BUFFER_OFFSET,                 ! Offset from start of buffer
;	  0514	         BUFFER_PTR,                    ! Pointer to output buffer
;	  0515	         RTN_COD,                       ! NICE return code
;	  0516		 BUFFER_PART: vector[10],
;	  0517		 N,				! Loop counter
;	  0518		 NN,				! Loop counter
;	  0519	         TEMP;
;	  0520	
;	  0521	    ERROR_DETAIL = -1;      	        ! Initialize for response msg
;	  0522	    BUFFER_ALLOC = 0;			! Initial allocation adjustment
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  12
X03.35		READ_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (5)

;	  0523	    N = 0;				! Initialize loop counter
;	  0524	
;	  0525	    do begin
;	  0526	        BUFFER_ALLOC = .BUFFER_ALLOC + OB_ALLOCATION;
;	  0527	        BUFFER_LEN = (.BUFFER_ALLOC/OB_ALLOCATION)*OB_LENGTH;
;	  0528	        BUFFER_LEFT = .BUFFER_LEN;
;	  0529	        if (BUFFER_ADDR = NMU$MEMORY_GET (.BUFFER_ALLOC)) eqla 0
;	  0530	        then begin
;	  0531	             REQ[RB_RETURN_CODE] = NICE$_REE;
;	  0532	             REQ[RB_NICE_PARAMETERS] = 0;   ! No parameter data returned
;	  0533	             NML$NICE_RESPONSE (.REQ);      ! Build response message
;	  0534	             return;
;	  0535	             end;
;	  0536	
;	  0537	        BUFFER_PTR = ch$ptr (.BUFFER_ADDR,,8);
;	  0538	
;	  0539	        if .REQ[$sub_field (RB_NICE_OPTION, RO_PERMANENT)]
;	  0540	        then begin
;	P 0541	             RTN_COD = $NML$GETPDB (.REQ[RB_NICE_ENTITY_TYPE],
;	P 0542	                                    .REQ[RB_NICE_ENTITY],
;	P 0543	                                    .REQ[RB_NICE_QUALIFIER],
;	P 0544	                                    .REQ[$sub_field (RB_NICE_OPTION, RO_INFO_TYPE)],
;	P 0545	                                    BUFFER_LEFT,
;	  0546	                                    ch$ptr (.BUFFER_ADDR,,8));
;	  0547	             end
;	  0548	        else begin
;	  0549	             RTN_COD = NML$VDB (%bliss36($NTSHO) %bliss16(N$FSHO),
;	  0550	                                .REQ[RB_NICE_ENTITY_TYPE],
;	  0551	                                .REQ[RB_NICE_ENTITY],
;	  0552	                                .REQ[RB_NICE_QUALIFIER],
;	  0553	                                .REQ[$sub_field (RB_NICE_OPTION, RO_INFO_TYPE)],
;	  0554	                                BUFFER_LEFT,
;	  0555	                                BUFFER_PTR,
;	  0556					ERROR_DETAIL);
;	  0557	             end;
;	  0558	        end
;	  0559	    while (if .RTN_COD eql NICE$_REE    ! Resource error?
;	  0560	           then begin                   ! Release insufficient buffer 
;	  0561	                NMU$MEMORY_RELEASE (.BUFFER_ADDR, .BUFFER_ALLOC);
;	  0562			BUFFER_PART[.N] = .BUFFER_LEN - .BUFFER_LEFT;
;	  0563			N = .N + 1;
;	  0564			if .N lss 10
;	  0565	                then $TRUE
;	  0566	                else $FALSE
;	  0567	                end
;	  0568	           else begin
;	  0569			BUFFER_PART[.N] = .BUFFER_LEN - .BUFFER_LEFT;
;	  0570			N = .N + 1;
;	  0571			$FALSE
;	  0572			end);
;	  0573	
;	  0574	    if .RTN_COD lss 1
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  13
X03.35		READ_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (5)

;	  0575	    then begin
;	  0576	         REQ[RB_RETURN_CODE] = .RTN_COD; 	! Set NICE return code
;	  0577	         REQ[RB_ERROR_DETAIL] = .ERROR_DETAIL;	! And error detail
;	  0578		 end;
;	  0579	
;	  0580	    if .N gtr 1				! If multiple buffers required
;	  0581	    then
;	  0582		begin
;	  0583		local
;	  0584		    MD_SEQ;			! More/Done sequence flag
;	  0585	
;	  0586		if .REQ[RB_STATE] neq RB$MORE	! If not already in a
;	  0587		then				!  More/Done sequence 
;	  0588		    begin
;	  0589		    REQ[RB_RETURN_CODE] = 2;	! Start More/Done sequence now
;	  0590		    NML$NICE_RESPONSE (.REQ);   ! Build response message
;	  0591		    NML$REQUEST_FINISH (.REQ);  ! Send it off
;	  0592		    MD_SEQ = $TRUE;		! Indicate sequence started here
;	  0593		    end
;	  0594		else
;	  0595		    MD_SEQ = $FALSE;		! Sequence not started here
;	  0596	
;	  0597		NN = 0;				! Start counter
;	  0598		BUFFER_OFFSET = 0;		! Start at beginning of buffer
;	  0599		do
;	  0600		    begin
;	  0601		    if .NN neq (.N - 1)
;	  0602		    then
;	  0603			REQ[RB_RETURN_CODE] = 3  ! Indicate partial reply
;	  0604		    else
;	  0605			REQ[RB_RETURN_CODE] = 1; ! Indicate complete reply
;	  0606		    NML$NICE_RESPONSE (.REQ);   ! Build response message
;	  0607		    BUFFER_USED = .BUFFER_PART[.NN];
;	  0608		    COPY_RESP_PARAMETERS (.REQ,
;	  0609		                          (.BUFFER_USED - .BUFFER_OFFSET),
;	  0610		                          ch$ptr (.BUFFER_ADDR,.BUFFER_OFFSET,8));
;	  0611		    if .REQ[RB_RETURN_CODE] eql 3 or .MD_SEQ
;	  0612		    then
;	  0613			NML$REQUEST_FINISH (.REQ);  ! Send it off
;	  0614	
;	  0615		    BUFFER_OFFSET = .BUFFER_OFFSET + .BUFFER_USED;
;	  0616		    NN = .NN + 1;
;	  0617		    end
;	  0618		until (.NN geq .N);
;	  0619	
;	  0620		if .MD_SEQ			! If we started sequence
;	  0621		then				!  then terminate it here
;	  0622		    begin
;	  0623		    REQ[RB_RETURN_CODE] = -128;	! End More/Done sequence
;	  0624		    NML$NICE_RESPONSE (.REQ);   ! Build response message
;	  0625		    end;
;	  0626		end
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  14
X03.35		READ_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (5)

;	  0627	    else
;	  0628		begin
;	  0629		NML$NICE_RESPONSE (.REQ);       ! Build single response message
;	  0630		COPY_RESP_PARAMETERS (.REQ,
;	  0631		                      (.BUFFER_LEN - .BUFFER_LEFT),
;	  0632		                      ch$ptr (.BUFFER_ADDR,,8));
;	  0633		end;
;	  0634	
;	  0635	    NMU$MEMORY_RELEASE (.BUFFER_ADDR, .BUFFER_ALLOC); ! Release buffer
;	  0636	
;	  0637	    end;				! End of READ_SPECIFIC_ENTITY


						.SBTTL	READ.SPECIFIC.ENTITY READ_SPECIFIC_ENTITY
000000	004167  000000G			READ.SPECIFIC.ENTITY:
						JSR	R1,$SAVE5			;					0471
000004	162706  000042 				SUB	#42,SP
000010	012767  177777  000000'			MOV	#-1,ERROR.DETAIL		;					0521
000016	005066  000010 				CLR	10(SP)				; BUFFER.ALLOC				0522
000022	005046 					CLR	-(SP)				; N					0523
000024	016666  000062  000006 			MOV	62(SP),6(SP)			; REQ,*					0539
000032	012700  000072 				MOV	#72,R0
000036	066600  000006 				ADD	6(SP),R0
000042	010004 					MOV	R0,R4
000044	062766  000300  000012 		1$:	ADD	#300,12(SP)			; *,BUFFER.ALLOC			0526
000052	016601  000012 				MOV	12(SP),R1			; BUFFER.ALLOC,*			0527
000056	006700 					SXT	R0
000060	071027  000300 				DIV	#300,R0
000064	010001 					MOV	R0,R1
000066	070127  000300 				MUL	#300,R1
000072	010103 					MOV	R1,R3				; *,BUFFER.LEN
000074	010366  000016 				MOV	R3,16(SP)			; BUFFER.LEN,BUFFER.LEFT		0528
000100	016646  000012 				MOV	12(SP),-(SP)			; BUFFER.ALLOC,*			0529
000104	004767  000000G				JSR	PC,UM.GET
000110	005726 					TST	(SP)+
000112	010066  000010 				MOV	R0,10(SP)			; *,BUFFER.ADDR
000116	001015 					BNE	2$
000120	016600  000062 				MOV	62(SP),R0			; REQ,*					0531
000124	112760  000361  000116 			MOVB	#361,116(R0)
000132	005060  000104 				CLR	104(R0)				;					0532
000136	010046 					MOV	R0,-(SP)			;					0533
000140	004767  000000G				JSR	PC,NL.RSP
000144	005726 					TST	(SP)+				;					0529
000146	000167  000646 				JMP	17$				;					0530
000152	016666  000010  000014 		2$:	MOV	10(SP),14(SP)			; BUFFER.ADDR,BUFFER.PTR		0537
000160	005714 					TST	(R4)				;					0539
000162	100032 					BPL	3$
000164	012746  000001 				MOV	#1,-(SP)			;					0546
000170	005046 					CLR	-(SP)
000172	016600  000012 				MOV	12(SP),R0
000176	116016  000074 				MOVB	74(R0),(SP)
000202	016046  000102 				MOV	102(R0),-(SP)
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  15
X03.35		READ_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (5)

000206	016046  000110 				MOV	110(R0),-(SP)
000212	011400 					MOV	(R4),R0
000214	072027  177764 				ASH	#-14,R0
000220	042700  177770 				BIC	#177770,R0
000224	010046 					MOV	R0,-(SP)
000226	012746  000032 				MOV	#32,-(SP)
000232	060616 					ADD	SP,(SP)				; BUFFER.LEFT,*
000234	016646  000024 				MOV	24(SP),-(SP)			; BUFFER.ADDR,*
000240	004767  000000G				JSR	PC,NL.PPR
000244	010002 					MOV	R0,R2				; *,RTN.COD				0541
000246	000435 					BR	4$				;					0539
000250	012746  000004 			3$:	MOV	#4,-(SP)			;					0549
000254	005046 					CLR	-(SP)
000256	016600  000012 				MOV	12(SP),R0
000262	116016  000074 				MOVB	74(R0),(SP)
000266	016046  000102 				MOV	102(R0),-(SP)
000272	016046  000110 				MOV	110(R0),-(SP)
000276	011400 					MOV	(R4),R0
000300	072027  177764 				ASH	#-14,R0
000304	042700  177770 				BIC	#177770,R0
000310	010046 					MOV	R0,-(SP)
000312	012746  000032 				MOV	#32,-(SP)
000316	060616 					ADD	SP,(SP)				; BUFFER.LEFT,*
000320	012746  000032 				MOV	#32,-(SP)
000324	060616 					ADD	SP,(SP)				; BUFFER.PTR,*
000326	012746  000000'				MOV	#ERROR.DETAIL,-(SP)
000332	004767  000000G				JSR	PC,NL.VDB
000336	010002 					MOV	R0,R2				; *,RTN.COD
000340	005726 					TST	(SP)+				;					0548
000342	062706  000016 			4$:	ADD	#16,SP				;					0525
000346	011600 					MOV	(SP),R0				; N,*					0562
000350	006300 					ASL	R0
000352	012701  000020 				MOV	#20,R1
000356	060601 					ADD	SP,R1				; BUFFER.PART,*
000360	060100 					ADD	R1,R0
000362	010301 					MOV	R3,R1				; BUFFER.LEN,*
000364	166601  000016 				SUB	16(SP),R1			; BUFFER.LEFT,*
000370	010110 					MOV	R1,(R0)
000372	020227  177761 				CMP	R2,#-17				; RTN.COD,*				0559
000376	001014 					BNE	5$
000400	016646  000010 				MOV	10(SP),-(SP)			; BUFFER.ADDR,*				0561
000404	016646  000014 				MOV	14(SP),-(SP)			; BUFFER.ALLOC,*
000410	004767  000000G				JSR	PC,UM.RELEASE
000414	022626 					CMP	(SP)+,(SP)+
000416	005216 					INC	(SP)				; N					0563
000420	021627  000012 				CMP	(SP),#12			; N,*					0564
000424	002002 					BGE	6$
000426	000606 					BR	1$
000430	005216 				5$:	INC	(SP)				; N					0570
000432	005702 				6$:	TST	R2				; RTN.COD				0574
000434	003007 					BGT	7$
000436	016600  000006 				MOV	6(SP),R0			;					0576
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  16
X03.35		READ_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (5)

000442	110260  000116 				MOVB	R2,116(R0)			; RTN.COD,*
000446	016760  000000' 000120 			MOV	ERROR.DETAIL,120(R0)		;					0577
000454	021627  000001 			7$:	CMP	(SP),#1				; N,*					0580
000460	003533 					BLE	15$
000462	016600  000006 				MOV	6(SP),R0			;					0586
000466	026027  000022  000005 			CMP	22(R0),#5
000474	001416 					BEQ	8$
000476	112760  000002  000116 			MOVB	#2,116(R0)			;					0589
000504	010046 					MOV	R0,-(SP)			;					0590
000506	004767  000000G				JSR	PC,NL.RSP
000512	016616  000010 				MOV	10(SP),(SP)			;					0591
000516	004767  000000G				JSR	PC,NL.FINISH
000522	012703  000001 				MOV	#1,R3				; *,MD.SEQ				0592
000526	005726 					TST	(SP)+				;					0588
000530	000401 					BR	9$				;					0586
000532	005003 				8$:	CLR	R3				; MD.SEQ				0595
000534	005002 				9$:	CLR	R2				; NN					0597
000536	005004 					CLR	R4				; BUFFER.OFFSET				0598
000540	011666  000004 				MOV	(SP),4(SP)			; N,*					0601
000544	005366  000004 				DEC	4(SP)
000550	012700  000116 				MOV	#116,R0				;					0603
000554	066600  000006 				ADD	6(SP),R0
000560	010066  000002 				MOV	R0,2(SP)
000564	020266  000004 			10$:	CMP	R2,4(SP)			; NN,*					0601
000570	001404 					BEQ	11$
000572	112776  000003  000002 			MOVB	#3,@2(SP)			;					0603
000600	000403 					BR	12$				;					0601
000602	112776  000001  000002 		11$:	MOVB	#1,@2(SP)			;					0605
000610	016646  000006 			12$:	MOV	6(SP),-(SP)			;					0606
000614	004767  000000G				JSR	PC,NL.RSP
000620	010200 					MOV	R2,R0				; NN,*					0607
000622	006300 					ASL	R0
000624	012701  000022 				MOV	#22,R1
000630	060601 					ADD	SP,R1				; BUFFER.PART,*
000632	060100 					ADD	R1,R0
000634	011005 					MOV	(R0),R5				; *,BUFFER.USED
000636	016616  000010 				MOV	10(SP),(SP)			;					0608
000642	010546 					MOV	R5,-(SP)			; BUFFER.USED,*				0609
000644	160416 					SUB	R4,(SP)				; BUFFER.OFFSET,*
000646	010446 					MOV	R4,-(SP)			; BUFFER.OFFSET,*			0610
000650	066616  000016 				ADD	16(SP),(SP)			; BUFFER.ADDR,*
000654	004767  000000V				JSR	PC,COPY.RESP.PARAMETERS		;					0608
000660	127627  000010  000003 			CMPB	@10(SP),#3			;					0611
000666	001403 					BEQ	13$
000670	032703  000001 				BIT	#1,R3				; *,MD.SEQ
000674	001404 					BEQ	14$
000676	016616  000014 			13$:	MOV	14(SP),(SP)			;					0613
000702	004767  000000G				JSR	PC,NL.FINISH
000706	060504 				14$:	ADD	R5,R4				; BUFFER.USED,BUFFER.OFFSET		0615
000710	005202 					INC	R2				; NN					0616
000712	062706  000006 				ADD	#6,SP				;					0600
000716	020216 					CMP	R2,(SP)				; NN,N					0618
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  17
X03.35		READ_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (5)

000720	002721 					BLT	10$
000722	006003 					ROR	R3				; MD.SEQ				0620
000724	103026 					BCC	16$
000726	112776  000200  000002 			MOVB	#200,@2(SP)			;					0623
000734	016646  000006 				MOV	6(SP),-(SP)			;					0624
000740	004767  000000G				JSR	PC,NL.RSP
000744	005726 					TST	(SP)+				;					0622
000746	000415 					BR	16$				;					0580
000750	016646  000006 			15$:	MOV	6(SP),-(SP)			;					0629
000754	004767  000000G				JSR	PC,NL.RSP
000760	016616  000010 				MOV	10(SP),(SP)			;					0630
000764	010146 					MOV	R1,-(SP)
000766	016646  000014 				MOV	14(SP),-(SP)			; BUFFER.ADDR,*
000772	004767  000000V				JSR	PC,COPY.RESP.PARAMETERS
000776	062706  000006 				ADD	#6,SP				;					0628
001002	016646  000010 			16$:	MOV	10(SP),-(SP)			; BUFFER.ADDR,*				0635
001006	016646  000014 				MOV	14(SP),-(SP)			; BUFFER.ALLOC,*
001012	004767  000000G				JSR	PC,UM.RELEASE
001016	022626 					CMP	(SP)+,(SP)+			;					0497
001020	062706  000044 			17$:	ADD	#44,SP				;					0471
001024	000207 					RTS	PC
; Routine Size:  267 words,	Routine Base:  $CODE$ + 0042
; Maximum stack depth per invocation:  33 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  18
X03.35		NML$CHANGE as NL_CHG				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (6)

;	  0638	%global_routine ('NML$CHANGE', REQ) =
;	  0639	
;	  0640	!++
;	  0641	! FUNCTIONAL DESCRIPTION:
;	  0642	!
;	  0643	!	Performs the NICE change parameters request for the local
;	  0644	!       Network Management Layer.
;	  0645	!
;	  0646	! FORMAL PARAMETERS
;	  0647	!
;	  0648	!	REQ - The address of the NML Request Block for this request.
;	  0649	!
;	  0650	! IMPLICIT INPUTS
;	  0651	!
;	  0652	!	NONE.
;	  0653	!
;	  0654	! ROUTINE VALUE:
;	  0655	!
;	  0656	!	1 if NICE request has completed successfully.
;	  0657	!       NEGATIVE NICE error return code if request failed.
;	  0658	!
;	  0659	! SIDE EFFECTS:
;	  0660	!
;	  0661	!	NONE.
;	  0662	!
;	  0663	!--
;	  0664	
;	  0665	    begin
;	  0666	
;	  0667	    map
;	  0668	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0669	
;	  0670	    if not .REQ[RB_PRV_CHANGE] then return NICE$_PRV;
;	  0671	
;	  0672	    if not .REQ[RB_PRV_LOCAL] and
;	  0673	       MULTIPLE_PARAMETERS (.REQ)
;	  0674	    then return NICE$_IPG;
;	  0675	
;	  0676	    PROCESS_REQUEST (.REQ, CHANGE_SPECIFIC_ENTITY)
;	  0677	    end;				! End of NML$CHANGE


						.SBTTL	NL.CHG NML$CHANGE as NL_CHG
000000	010146 				NL.CHG::MOV	R1,-(SP)			;					0638
000002	016601  000004 				MOV	4(SP),R1			; REQ,*					0670
000006	032761  010000  000076 			BIT	#10000,76(R1)
000014	001003 					BNE	1$
000016	012700  177775 				MOV	#-3,R0
000022	000423 					BR	3$
000024	032761  000400  000076 		1$:	BIT	#400,76(R1)			;					0672
000032	001011 					BNE	2$
000034	010146 					MOV	R1,-(SP)			;					0673
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  19
X03.35		NML$CHANGE as NL_CHG				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (6)

000036	004767  000000V				JSR	PC,MULTIPLE.PARAMETERS
000042	005726 					TST	(SP)+
000044	006000 					ROR	R0
000046	103003 					BCC	2$
000050	012700  177745 				MOV	#-33,R0				;					0674
000054	000406 					BR	3$
000056	010146 				2$:	MOV	R1,-(SP)			;					0676
000060	012746  000000V				MOV	#CHANGE.SPECIFIC.ENTITY,-(SP)
000064	004767  000000V				JSR	PC,PROCESS.REQUEST
000070	022626 					CMP	(SP)+,(SP)+			;					0665
000072	012601 				3$:	MOV	(SP)+,R1			;					0638
000074	000207 					RTS	PC
; Routine Size:  31 words,	Routine Base:  $CODE$ + 1070
; Maximum stack depth per invocation:  4 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  20
X03.35		CHANGE_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (7)

;	  0678	%routine ('CHANGE_SPECIFIC_ENTITY', REQ) : novalue =
;	  0679	
;	  0680	!++
;	  0681	! FUNCTIONAL DESCRIPTION:
;	  0682	!
;	  0683	!	Performs a NICE change parameter request for a single
;	  0684	!       named entity.
;	  0685	!
;	  0686	! FORMAL PARAMETERS
;	  0687	!
;	  0688	!	REQ - The address of the NML Request Block for this request.
;	  0689	!
;	  0690	! IMPLICIT INPUTS
;	  0691	!
;	  0692	!	NONE.
;	  0693	!
;	  0694	! ROUTINE VALUE:
;	  0695	!
;	  0696	!	1 if NICE request has completed successfully.
;	  0697	!       NEGATIVE NICE error return code if request failed.
;	  0698	!
;	  0699	! SIDE EFFECTS:
;	  0700	!
;	  0701	!	NONE.
;	  0702	!
;	  0703	!--
;	  0704	
;	  0705	    begin
;	  0706	
;	  0707	    map
;	  0708	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0709	
;	  0710	    local
;	  0711	         LENGTH,                        ! Length of parameter
;	  0712	         RTN_COD;                       ! NICE return code
;	  0713	
;	  0714	    if (GET_NEXT_PARAMETER (.REQ) or    ! Get first parameter (if any)
;	  0715	        (.REQ[$sub_field (RB_NICE_OPTION, CO_CLEAR_PURGE)])) ! ALL is OK
;	  0716	    then begin
;	  0717	         REQ[RB_RETURN_CODE] = 1;       ! Assume success
;	  0718	         ERROR_DETAIL = -1;      	! Initialize for response msg
;	  0719	
;	  0720	         do begin
;	  0721	            LENGTH = .REQ[RB_NICE_PARAMETER_LENGTH]; ! Set length of parameter
;	  0722	
;	  0723	            if .REQ[$sub_field (RB_NICE_OPTION, CO_PERMANENT)]
;	  0724	            then begin                  ! Permanent parameters
;	  0725	                 if .REQ[$sub_field (RB_NICE_OPTION, CO_CLEAR_PURGE)]
;	  0726	                 then begin             ! Purge
;	P 0727	                      RTN_COD = $NML$DELPDB (.REQ[RB_NICE_ENTITY_TYPE],
;	P 0728	                                             .REQ[RB_NICE_ENTITY],
;	P 0729	                                             .REQ[RB_NICE_QUALIFIER],
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  21
X03.35		CHANGE_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (7)

;	P 0730	                                             LENGTH,
;	  0731	                                             .REQ[RB_NICE_PARAMETERS]);
;	  0732	                      end
;	  0733	                 else begin             ! Define
;	P 0734	                      RTN_COD = $NML$PUTPDB (.REQ[RB_NICE_ENTITY_TYPE],
;	P 0735	                                             .REQ[RB_NICE_ENTITY],
;	P 0736	                                             .REQ[RB_NICE_QUALIFIER],
;	P 0737	                                             LENGTH,
;	  0738	                                             .REQ[RB_NICE_PARAMETERS]);
;	  0739	                      end;
;	  0740	                 end
;	  0741	            else begin                  ! Volatile parameters
;	  0742	                 if .REQ[$sub_field (RB_NICE_OPTION, CO_CLEAR_PURGE)]
;	  0743	                 then begin             ! Clear
;	  0744	                      RTN_COD = NML$VDB (%bliss36($NTCLR) %bliss16(N$FCLR),
;	  0745	                                         .REQ[RB_NICE_ENTITY_TYPE],
;	  0746	                                         .REQ[RB_NICE_ENTITY],
;	  0747	                                         .REQ[RB_NICE_QUALIFIER],
;	  0748	                                         0 %(selector)%,
;	  0749	                                         LENGTH,
;	  0750	                                         .REQ[RB_NICE_PARAMETERS],
;	  0751						 ERROR_DETAIL);
;	  0752	                      end
;	  0753	                 else begin             ! Set
;	  0754	                      RTN_COD = NML$VDB (%bliss36($NTSET) %bliss16(N$FSET),
;	  0755	                                         .REQ[RB_NICE_ENTITY_TYPE],
;	  0756	                                         .REQ[RB_NICE_ENTITY],
;	  0757	                                         .REQ[RB_NICE_QUALIFIER],
;	  0758	                                         0 %(selector)%,
;	  0759	                                         LENGTH,
;	  0760	                                         .REQ[RB_NICE_PARAMETERS],
;	  0761						 ERROR_DETAIL);
;	  0762	                      end;
;	  0763	                 end;
;	  0764	
;	  0765	        REQ[RB_RETURN_CODE] = .RTN_COD;		! Set NICE return code 
;	  0766	        REQ[RB_ERROR_DETAIL] = .ERROR_DETAIL;	! And error detail
;	  0767	
;	C 0768	%( N.B. - Does this code handle the case of failures during a multiple
;	  0769	          parameter message correctly? )%
;	  0770	
;	  0771	            end
;	  0772	         while GET_NEXT_PARAMETER (.REQ); ! Do all parameters
;	  0773	         end
;	  0774	    else begin
;	L 0775	         REQ[RB_RETURN_CODE] = $NICE$ERR_OPF;
; %PRINT:	Operation failure
;	  0776	         end;
;	  0777	
;	  0778	    NML$NICE_RESPONSE (.REQ);           ! Build response message
;	  0779	    end;				! End of CHANGE_SPECIFIC_ENTITY
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  22
X03.35		CHANGE_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (7)


						.SBTTL	CHANGE.SPECIFIC.ENTITY CHANGE_SPECIFIC_ENTITY
000000	004167  000000G			CHANGE.SPECIFIC.ENTITY:
						JSR	R1,$SAVE5			;					0678
000004	162706  000010 				SUB	#10,SP
000010	016602  000026 				MOV	26(SP),R2			; REQ,*					0714
000014	012704  000116 				MOV	#116,R4				;					0717
000020	060204 					ADD	R2,R4
000022	010246 					MOV	R2,-(SP)			;					0714
000024	004767  000000V				JSR	PC,GET.NEXT.PARAMETER
000030	005726 					TST	(SP)+
000032	006000 					ROR	R0
000034	103404 					BLO	1$
000036	032762  040000  000072 			BIT	#40000,72(R2)			;					0715
000044	001533 					BEQ	9$
000046	112714  000001 			1$:	MOVB	#1,(R4)				;					0717
000052	012767  177777  000000'			MOV	#-1,ERROR.DETAIL		;					0718
000060	012703  000072 				MOV	#72,R3				;					0723
000064	060203 					ADD	R2,R3
000066	012766  000074  000004 			MOV	#74,4(SP)			;					0731
000074	060266  000004 				ADD	R2,4(SP)
000100	012766  000102  000002 			MOV	#102,2(SP)
000106	060266  000002 				ADD	R2,2(SP)
000112	012716  000110 				MOV	#110,(SP)
000116	060216 					ADD	R2,(SP)
000120	012705  000104 				MOV	#104,R5
000124	060205 					ADD	R2,R5
000126	016266  000106  000006 		2$:	MOV	106(R2),6(SP)			; *,LENGTH				0721
000134	005713 					TST	(R3)				;					0723
000136	100027 					BPL	5$
000140	032713  040000 				BIT	#40000,(R3)			;					0725
000144	001403 					BEQ	3$
000146	012746  000003 				MOV	#3,-(SP)			;					0731
000152	000402 					BR	4$
000154	012746  000001 			3$:	MOV	#1,-(SP)			;					0738
000160	005046 				4$:	CLR	-(SP)
000162	117616  000010 				MOVB	@10(SP),(SP)
000166	017646  000006 				MOV	@6(SP),-(SP)
000172	017646  000006 				MOV	@6(SP),-(SP)
000176	012746  000020 				MOV	#20,-(SP)
000202	060616 					ADD	SP,(SP)				; LENGTH,*
000204	011546 					MOV	(R5),-(SP)
000206	004767  000000G				JSR	PC,NL.PPC
000212	010001 					MOV	R0,R1				; *,RTN.COD				0734
000214	000432 					BR	8$				;					0723
000216	032713  040000 			5$:	BIT	#40000,(R3)			;					0742
000222	001403 					BEQ	6$
000224	012746  000002 				MOV	#2,-(SP)			;					0744
000230	000402 					BR	7$
000232	012746  000001 			6$:	MOV	#1,-(SP)			;					0754
000236	005046 				7$:	CLR	-(SP)
000240	117616  000010 				MOVB	@10(SP),(SP)
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  23
X03.35		CHANGE_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (7)

000244	017646  000006 				MOV	@6(SP),-(SP)
000250	017646  000006 				MOV	@6(SP),-(SP)
000254	005046 					CLR	-(SP)
000256	012746  000022 				MOV	#22,-(SP)
000262	060616 					ADD	SP,(SP)				; LENGTH,*
000264	011546 					MOV	(R5),-(SP)
000266	012746  000000'				MOV	#ERROR.DETAIL,-(SP)
000272	004767  000000G				JSR	PC,NL.VDB
000276	010001 					MOV	R0,R1				; *,RTN.COD
000300	022626 					CMP	(SP)+,(SP)+			;					0741
000302	110114 				8$:	MOVB	R1,(R4)				; RTN.COD,*				0765
000304	016762  000000' 000120 			MOV	ERROR.DETAIL,120(R2)		;					0766
000312	062706  000012 				ADD	#12,SP				;					0720
000316	010216 					MOV	R2,(SP)				;					0772
000320	004767  000000V				JSR	PC,GET.NEXT.PARAMETER
000324	005726 					TST	(SP)+
000326	006000 					ROR	R0
000330	103003 					BCC	10$
000332	000675 					BR	2$
000334	112714  000347 			9$:	MOVB	#347,(R4)			;					0775
000340	010246 				10$:	MOV	R2,-(SP)			;					0778
000342	004767  000000G				JSR	PC,NL.RSP
000346	062706  000012 				ADD	#12,SP				;					0678
000352	000207 					RTS	PC
; Routine Size:  118 words,	Routine Base:  $CODE$ + 1166
; Maximum stack depth per invocation:  19 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  24
X03.35		MULTIPLE_PARAMETERS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (8)

;	  0780	%routine ('MULTIPLE_PARAMETERS', REQ) =
;	  0781	
;	  0782	!++
;	  0783	! FUNCTIONAL DESCRIPTION:
;	  0784	!
;	  0785	!	Detect multiple parameters in a request.
;	  0786	!
;	  0787	! FORMAL PARAMETERS
;	  0788	!
;	  0789	!	REQ - The address of the NML Request Block for this request.
;	  0790	!
;	  0791	! IMPLICIT INPUTS
;	  0792	!
;	  0793	!	REQ[RB_NICE_PARAMETERS]
;	  0794	!               Contains a pointer to the previous parameter.
;	  0795	!       REQ[RB_NICE_PARAMETER_LENGTH]
;	  0796	!               Contains the length of the previous parameter in bytes.
;	  0797	!
;	  0798	! ROUTINE VALUE:
;	  0799	!
;	  0800	!	$TRUE, if greater than one parameter
;	  0801	!       $FALSE, otherwise.
;	  0802	!
;	  0803	! SIDE EFFECTS:
;	  0804	!
;	  0805	!	None
;	  0806	!
;	  0807	!--
;	  0808	
;	  0809	    begin
;	  0810	
;	  0811	    map
;	  0812	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0813	
;	  0814	    local
;	  0815	        RTN,
;	  0816	        SAVE_NICE_PARAMETERS;
;	  0817	
;	  0818	    SAVE_NICE_PARAMETERS = .REQ[RB_NICE_PARAMETERS];
;	  0819	    RTN = GET_NEXT_PARAMETER (.REQ) and GET_NEXT_PARAMETER (.REQ);
;	  0820	    REQ[RB_NICE_PARAMETERS] = .SAVE_NICE_PARAMETERS;
;	  0821	    REQ[RB_NICE_PARAMETER_LENGTH] = 0;
;	  0822	    .RTN
;	  0823	    end;				! End of MULTIPLE_PARAMETERS


						.SBTTL	MULTIPLE.PARAMETERS MULTIPLE_PARAMETERS
000000	004167  000000G			MULTIPLE.PARAMETERS:
						JSR	R1,$SAVE4			;					0780
000004	016601  000014 				MOV	14(SP),R1			; REQ,*					0818
000010	016103  000104 				MOV	104(R1),R3			; *,SAVE.NICE.PARAM
000014	010146 					MOV	R1,-(SP)			;					0819
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  25
X03.35		MULTIPLE_PARAMETERS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (8)

000016	004767  000000V				JSR	PC,GET.NEXT.PARAMETER
000022	010002 					MOV	R0,R2
000024	010116 					MOV	R1,(SP)
000026	004767  000000V				JSR	PC,GET.NEXT.PARAMETER
000032	010204 					MOV	R2,R4
000034	005104 					COM	R4
000036	040400 					BIC	R4,R0				; *,RTN
000040	010361  000104 				MOV	R3,104(R1)			; SAVE.NICE.PARAM,*			0820
000044	005061  000106 				CLR	106(R1)				;					0821
000050	005726 					TST	(SP)+				;					0809
000052	000207 					RTS	PC				;					0780
; Routine Size:  22 words,	Routine Base:  $CODE$ + 1542
; Maximum stack depth per invocation:  7 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  26
X03.35		GET_NEXT_PARAMETER				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (9)

;	  0824	%routine ('GET_NEXT_PARAMETER', REQ) =
;	  0825	
;	  0826	!++
;	  0827	! FUNCTIONAL DESCRIPTION:
;	  0828	!
;	  0829	!	Obtains the next parameter in the NICE request message.
;	  0830	!
;	  0831	! FORMAL PARAMETERS
;	  0832	!
;	  0833	!	REQ - The address of the NML Request Block for this request.
;	  0834	!
;	  0835	! IMPLICIT INPUTS
;	  0836	!
;	  0837	!	REQ[RB_NICE_PARAMETERS]
;	  0838	!               Contains a pointer to the previous parameter.
;	  0839	!       REQ[RB_NICE_PARAMETER_LENGTH]
;	  0840	!               Contains the length of the previous parameter in bytes.
;	  0841	!
;	  0842	! ROUTINE VALUE:
;	  0843	!
;	  0844	!	$TRUE, if the next parameter exists.
;	  0845	!       $FALSE, otherwise.
;	  0846	!
;	  0847	! SIDE EFFECTS:
;	  0848	!
;	  0849	!	Updates REQ[RB_NICE_PARAMETER_LENGTH] to be the length of
;	  0850	!	the current parameter.
;	  0851	!	Updates REQ[RB_NICE_PARAMETERS] to point to the current
;	  0852	!       parameter.
;	  0853	!
;	  0854	!--
;	  0855	
;	  0856	    begin
;	  0857	
;	  0858	    map
;	  0859	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0860	
;	  0861	    REQ[RB_NICE_PARAMETERS] = ch$plus (.REQ[RB_NICE_PARAMETERS],
;	  0862	                                       .REQ[RB_NICE_PARAMETER_LENGTH]);
;	  0863	
;	  0864	    !
;	  0865	    ! Return false when all parameters have been processed.
;	  0866	    !
;	  0867	
;	  0868	    if ch$diff (.REQ[RB_NICE_PARAMETERS], .REQ[RB_NICE_POINTER]) geq .REQ[RB_NICE_LENGTH]
;	  0869	    then begin
;	  0870	         REQ[RB_NICE_PARAMETER_LENGTH] = 0;
;	  0871	         return $FALSE;
;	  0872	         end;
;	  0873	
;	  0874	    !
;	  0875	    ! Get length of the parameter, to include the data portion plus
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  27
X03.35		GET_NEXT_PARAMETER				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (9)

;	  0876	    ! two bytes for the DATA ID field.
;	  0877	    !
;	  0878	
;	  0879	        begin
;	  0880	        local PARAMETER, NEXT, POINTER, DATA, LENGTH;
;	  0881	
;	  0882	        POINTER = .REQ[RB_NICE_PARAMETERS]; ! Make copy of pointer
;	  0883	        LENGTH = 0;                     ! Initialize length
;	  0884	
;	  0885	        do begin                        ! Scan parameters and their data
;	  0886	           local LEN;
;	  0887	
;	  0888	           PARAMETER = GETW (POINTER);  ! Get parameter number
;	  0889	
;	  0890	           if .REQ[$sub_field(RB_NICE_OPTION,CO_CLEAR_PURGE)]
;	  0891	           and (.REQ[RB_NICE_PARAMETERS] neq .REQ[RB_NICE_QUALIFIER])
;	  0892	           then LEN = 0                 ! No parameter data for CLEAR/PURGE
;	  0893	           else begin                   ! Otherwise, get data follow
;	  0894	                LEN = NML$PARAMETER_DATA (.REQ[RB_NICE_ENTITY_TYPE],
;	  0895	                                          .PARAMETER,
;	  0896	                                          POINTER,
;	  0897	                                          DATA);
;	  0898	
;	  0899	                if .LEN leq 0           ! Illegal parameter data length
;	  0900	                then return $FALSE;
;	  0901	                end;
;	  0902	
;	  0903	           NEXT = (if ((LENGTH = .LENGTH + 2 + .LEN) lss .REQ[RB_NICE_LENGTH])
;	  0904	                   and (.REQ[RB_NICE_ENTITY_TYPE] eql MODULE_) ! MODULE entity
;	  0905	                   and (.PARAMETER eql 1130) ! CHANNELS parameter
;	  0906	                   then GETW_NA (.POINTER) ! Peek at next parameter number
;	  0907	                   else -1);            ! End of NICE request message
;	  0908	           end                          ! Continue parsing if next parameter
;	  0909	        while (.NEXT eql .PARAMETER);   ! is identical to the current one
;	  0910	
;	  0911	        REQ[RB_NICE_PARAMETER_LENGTH] = .LENGTH; ! Final length of the data
;	  0912	        end;
;	  0913	
;	  0914	    !
;	  0915	    ! If this parameter is a qualifier, then call ourself recursively
;	  0916	    ! to skip over the qualifier to the next real parameter.
;	  0917	    !
;	  0918	
;	  0919	    if .REQ[RB_NICE_PARAMETERS] eql .REQ[RB_NICE_QUALIFIER]
;	  0920	    then return GET_NEXT_PARAMETER (.REQ);
;	  0921	
;	  0922	    return $TRUE;
;	  0923	    end;				! End of GET_NEXT_PARAMETER


						.SBTTL	GET.NEXT.PARAMETER GET_NEXT_PARAMETER
000000	004167  000000G			GET.NEXT.PARAMETER:
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  28
X03.35		GET_NEXT_PARAMETER				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (9)

						JSR	R1,$SAVE5			;					0824
000004	162706  000006 				SUB	#6,SP
000010	016602  000024 				MOV	24(SP),R2			; REQ,*					0861
000014	012746  000104 				MOV	#104,-(SP)
000020	060216 					ADD	R2,(SP)
000022	012746  000106 				MOV	#106,-(SP)			;					0862
000026	060216 					ADD	R2,(SP)
000030	067676  000000  000002 			ADD	@0(SP),@2(SP)
000036	017600  000002 				MOV	@2(SP),R0			;					0868
000042	166200  000066 				SUB	66(R2),R0
000046	020062  000030 				CMP	R0,30(R2)
000052	002403 					BLT	1$
000054	005076  000000 				CLR	@0(SP)				;					0870
000060	000535 					BR	9$				;					0869
000062	017666  000002  000006 		1$:	MOV	@2(SP),6(SP)			; *,POINTER				0882
000070	005003 					CLR	R3				; LENGTH				0883
000072	005266  000006 			2$:	INC	6(SP)				; POINTER				0888
000076	016600  000006 				MOV	6(SP),R0			; POINTER,*
000102	116066  177777  000010 			MOVB	-1(R0),10(SP)			; *,$$GETB.X
000110	005266  000006 				INC	6(SP)				; POINTER
000114	016600  000006 				MOV	6(SP),R0			; POINTER,*
000120	116066  177777  000011 			MOVB	-1(R0),11(SP)			; *,$$GETB.X
000126	016605  000010 				MOV	10(SP),R5			; $$GETB.X,PARAMETER
000132	032762  040000  000072 			BIT	#40000,72(R2)			;					0890
000140	001406 					BEQ	3$
000142	027662  000002  000110 			CMP	@2(SP),110(R2)			;					0891
000150	001402 					BEQ	3$
000152	005001 					CLR	R1				; LEN					0892
000154	000423 					BR	5$				;					0890
000156	005046 				3$:	CLR	-(SP)				;					0894
000160	116216  000074 				MOVB	74(R2),(SP)
000164	010546 					MOV	R5,-(SP)			; PARAMETER,*
000166	012746  000014 				MOV	#14,-(SP)
000172	060616 					ADD	SP,(SP)				; POINTER,*
000174	012746  000014 				MOV	#14,-(SP)
000200	060616 					ADD	SP,(SP)				; DATA,*
000202	004767  000000G				JSR	PC,NL.PDA
000206	010001 					MOV	R0,R1				; *,LEN
000210	003003 					BGT	4$				;					0899
000212	062706  000010 				ADD	#10,SP				;					0900
000216	000456 					BR	9$
000220	062706  000010 			4$:	ADD	#10,SP				;					0893
000224	010100 				5$:	MOV	R1,R0				; LEN,*					0903
000226	060300 					ADD	R3,R0				; LENGTH,*
000230	010003 					MOV	R0,R3				; *,LENGTH
000232	062703  000002 				ADD	#2,R3				; *,LENGTH
000236	020362  000030 				CMP	R3,30(R2)			; LENGTH,*
000242	002022 					BGE	6$
000244	126227  000074  000004 			CMPB	74(R2),#4			;					0904
000252	001016 					BNE	6$
000254	020527  002152 				CMP	R5,#2152			; PARAMETER,*				0905
000260	001013 					BNE	6$
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  29
X03.35		GET_NEXT_PARAMETER				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (9)

000262	117666  000006  000010 			MOVB	@6(SP),10(SP)			; POINTER,$$GETW.NA.X			0906
000270	016600  000006 				MOV	6(SP),R0			; POINTER,*
000274	116066  000001  000011 			MOVB	1(R0),11(SP)			; *,$$GETW.NA.X
000302	016604  000010 				MOV	10(SP),R4			; $$GETW.NA.X,NEXT
000306	000402 					BR	7$				;					0903
000310	012704  177777 			6$:	MOV	#-1,R4				; *,NEXT
000314	020405 				7$:	CMP	R4,R5				; NEXT,PARAMETER			0909
000316	001665 					BEQ	2$
000320	010376  000000 				MOV	R3,@0(SP)			; LENGTH,*				0911
000324	027662  000002  000110 			CMP	@2(SP),110(R2)			;					0919
000332	001005 					BNE	8$
000334	010246 					MOV	R2,-(SP)			;					0920
000336	004767  177436 				JSR	PC,GET.NEXT.PARAMETER
000342	005726 					TST	(SP)+
000344	000404 					BR	10$
000346	012700  000001 			8$:	MOV	#1,R0				;					0856
000352	000401 					BR	10$
000354	005000 				9$:	CLR	R0				;					0824
000356	062706  000012 			10$:	ADD	#12,SP
000362	000207 					RTS	PC
; Routine Size:  122 words,	Routine Base:  $CODE$ + 1616
; Maximum stack depth per invocation:  16 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  30
X03.35		NML$ZERO as NL_ZRO				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (10)

;	  0924	%global_routine ('NML$ZERO', REQ) =
;	  0925	
;	  0926	!++
;	  0927	! FUNCTIONAL DESCRIPTION:
;	  0928	!
;	  0929	!	Performs the NICE zero counters request for the local
;	  0930	!       Network Management Layer.
;	  0931	!
;	  0932	! FORMAL PARAMETERS
;	  0933	!
;	  0934	!	REQ - The address of the NML Request Block for this request.
;	  0935	!
;	  0936	! IMPLICIT INPUTS
;	  0937	!
;	  0938	!	NONE.
;	  0939	!
;	  0940	! ROUTINE VALUE:
;	  0941	!
;	  0942	!	1 if NICE request has completed successfully.
;	  0943	!       NEGATIVE NICE error return code if request failed.
;	  0944	!
;	  0945	! SIDE EFFECTS:
;	  0946	!
;	  0947	!	NONE.
;	  0948	!
;	  0949	!--
;	  0950	
;	  0951	    begin
;	  0952	
;	  0953	    map
;	  0954	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0955	
;	  0956	    if not .REQ[RB_PRV_CHANGE] then return NICE$_PRV;
;	  0957	
;	  0958	    PROCESS_REQUEST (.REQ, ZERO_SPECIFIC_ENTITY)
;	  0959	    end;				! End of NML$ZERO


						.SBTTL	NL.ZRO NML$ZERO as NL_ZRO
000000	016600  000002 			NL.ZRO::MOV	2(SP),R0			; REQ,*					0956
000004	032760  010000  000076 			BIT	#10000,76(R0)
000012	001003 					BNE	1$
000014	012700  177775 				MOV	#-3,R0
000020	000207 					RTS	PC
000022	016646  000002 			1$:	MOV	2(SP),-(SP)			; REQ,*					0958
000026	012746  000000V				MOV	#ZERO.SPECIFIC.ENTITY,-(SP)
000032	004767  000000V				JSR	PC,PROCESS.REQUEST
000036	022626 					CMP	(SP)+,(SP)+			;					0951
000040	000207 					RTS	PC				;					0924
; Routine Size:  17 words,	Routine Base:  $CODE$ + 2202
; Maximum stack depth per invocation:  3 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  31
X03.35		ZERO_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (11)

;	  0960	%routine ('ZERO_SPECIFIC_ENTITY', REQ) : novalue =
;	  0961	
;	  0962	!++
;	  0963	! FUNCTIONAL DESCRIPTION:
;	  0964	!
;	  0965	!
;	  0966	! FORMAL PARAMETERS
;	  0967	!
;	  0968	!	REQ - The address of the NML Request Block for this request.
;	  0969	!
;	  0970	! IMPLICIT INPUTS
;	  0971	!
;	  0972	!	NONE.
;	  0973	!
;	  0974	! ROUTINE VALUE:
;	  0975	!
;	  0976	!	1 if NICE request has completed successfully.
;	  0977	!       NEGATIVE NICE error return code if request failed.
;	  0978	!
;	  0979	! SIDE EFFECTS:
;	  0980	!
;	  0981	!	NONE.
;	  0982	!
;	  0983	!--
;	  0984	
;	  0985	    begin
;	  0986	
;	  0987	    literal
;	  0988	           OB_LENGTH = 256,             ! Length of output buffer
;	  0989	           OB_SIZE = ch$allocation (OB_LENGTH,8),
;	  0990	           OB_ALLOCATION = OB_SIZE * %upval;
;	  0991	
;	  0992	    map
;	  0993	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  0994	
;	  0995	    local
;	  0996	         BUFFER_ADDR,                   ! Address of output buffer
;	  0997	         BUFFER_LEFT,                   ! Output buffer length
;	  0998	         RTN_COD;                       ! NICE return code
;	  0999	
;	  1000	    REQ[RB_RETURN_CODE] = 1;            ! Assume success
;	  1001	    ERROR_DETAIL = -1;      	        ! Initialize for response msg
;	  1002	    BUFFER_LEFT = OB_LENGTH;            ! Get buffer for info
;	  1003	
;	  1004	    if (BUFFER_ADDR = NMU$MEMORY_GET (OB_ALLOCATION)) neqa 0
;	  1005	    then begin
;	  1006	
;	C 1007	         %( N.B. - Insert expression here to read and zero NML counters for
;	C 1008	            this entity into the buffer, and bump the buffer address and 
;	  1009	            length appropriately before calling the lower layers. )%
;	  1010	
;	  1011	         begin
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  32
X03.35		ZERO_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (11)

;	  1012	         local BUFFER_PTR;
;	  1013	         BUFFER_PTR = ch$ptr (.BUFFER_ADDR,,8);
;	  1014	         RTN_COD = NML$VDB (%bliss36($NTSZC) %bliss16(N$FSZC),
;	  1015	                            .REQ[RB_NICE_ENTITY_TYPE],
;	  1016	                            .REQ[RB_NICE_ENTITY],
;	  1017	                            .REQ[RB_NICE_QUALIFIER],
;	  1018	                            0 %(no selector)%,
;	  1019	                            BUFFER_LEFT,
;	  1020	                            BUFFER_PTR,
;	  1021				    ERROR_DETAIL);
;	  1022	         end;
;	  1023	
;	  1024	         !
;	  1025	         ! If ZERO only and the read got a resource error,
;	  1026	         ! the function succeeded anyway.
;	  1027	         !
;	  1028	
;	  1029	         if (.REQ[$sub_field (RB_NICE_OPTION, ZO_READ_AND_ZERO)] eql 0) and
;	  1030	            (.RTN_COD eql NICE$_REE)
;	  1031	         then RTN_COD = 1;
;	  1032	
;	  1033	         REQ[RB_RETURN_CODE] = .RTN_COD; 	! Set NICE return code
;	  1034	         REQ[RB_ERROR_DETAIL] = .ERROR_DETAIL;	! And error detail
;	  1035	         %(set time zeroed)%
;	  1036	
;	  1037	         begin
;	  1038	         local REB : RAW_EVENT_BLOCK;
;	  1039	
;	  1040	         REB [REB_EVENT_CODE] = 0^6 + 9; ! Counters Zeroed
;	  1041	         REB [REB_ENTITY_TYPE] = .REQ [RB_NICE_ENTITY_TYPE];
;	  1042	         REB [REB_ENTITY_POINTER] = .REQ [RB_NICE_ENTITY];
;	  1043	         REB [REB_DATA_POINTER] = ch$ptr (.BUFFER_ADDR,, 8);
;	  1044	         REB [REB_DATA_LENGTH] = (OB_LENGTH - .BUFFER_LEFT);
;	  1045	         REB [REB_TIME_BLOCK] = 0;
;	  1046	         NML$DECLARE_EVENT (REB);
;	  1047	         end;
;	  1048	         end
;	  1049	    else
;	  1050	         REQ [RB_RETURN_CODE] = NICE$_REE;
;	  1051	
;	  1052	     NML$NICE_RESPONSE (.REQ);          ! Build response message
;	  1053	
;	  1054	    if .REQ [RB_RETURN_CODE] gtr 0
;	  1055	    then
;	  1056	
;	  1057	        if .REQ[$sub_field (RB_NICE_OPTION, ZO_READ_AND_ZERO)]
;	  1058	        then COPY_RESP_PARAMETERS (.REQ,
;	  1059	                                   (OB_LENGTH - .BUFFER_LEFT),
;	  1060	                                   ch$ptr (.BUFFER_ADDR,,8));
;	  1061	
;	  1062	    if .BUFFER_ADDR neqa 0              ! Release buffer if there is one
;	  1063	    then NMU$MEMORY_RELEASE (.BUFFER_ADDR, OB_ALLOCATION);
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  33
X03.35		ZERO_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (11)

;	  1064	    end;				! End of ZERO_SPECIFIC_ENTITY


						.SBTTL	ZERO.SPECIFIC.ENTITY ZERO_SPECIFIC_ENTITY
000000	004167  000000G			ZERO.SPECIFIC.ENTITY:
						JSR	R1,$SAVE3			;					0960
000004	162706  000024 				SUB	#24,SP
000010	016601  000036 				MOV	36(SP),R1			; REQ,*					1000
000014	012703  000116 				MOV	#116,R3
000020	060103 					ADD	R1,R3
000022	112713  000001 				MOVB	#1,(R3)
000026	012767  177777  000000'			MOV	#-1,ERROR.DETAIL		;					1001
000034	012766  000400  000002 			MOV	#400,2(SP)			; *,BUFFER.LEFT				1002
000042	012746  000400 				MOV	#400,-(SP)			;					1004
000046	004767  000000G				JSR	PC,UM.GET
000052	005726 					TST	(SP)+
000054	010002 					MOV	R0,R2				; *,BUFFER.ADDR
000056	001477 					BEQ	2$
000060	010216 					MOV	R2,(SP)				; BUFFER.ADDR,BUFFER.PTR		1013
000062	012746  000005 				MOV	#5,-(SP)			;					1014
000066	005046 					CLR	-(SP)
000070	116116  000074 				MOVB	74(R1),(SP)
000074	016146  000102 				MOV	102(R1),-(SP)
000100	016146  000110 				MOV	110(R1),-(SP)
000104	005046 					CLR	-(SP)
000106	012746  000016 				MOV	#16,-(SP)
000112	060616 					ADD	SP,(SP)				; BUFFER.LEFT,*
000114	012746  000016 				MOV	#16,-(SP)
000120	060616 					ADD	SP,(SP)				; BUFFER.PTR,*
000122	012746  000000'				MOV	#ERROR.DETAIL,-(SP)
000126	004767  000000G				JSR	PC,NL.VDB
000132	032761  100000  000072 			BIT	#100000,72(R1)			;					1029
000140	001005 					BNE	1$
000142	020027  177761 				CMP	R0,#-17				; RTN.COD,*				1030
000146	001002 					BNE	1$
000150	012700  000001 				MOV	#1,R0				; *,RTN.COD				1031
000154	110013 				1$:	MOVB	R0,(R3)				; RTN.COD,*				1033
000156	016761  000000' 000120 			MOV	ERROR.DETAIL,120(R1)		;					1034
000164	012766  000011  000034 			MOV	#11,34(SP)			; *,REB+10				1040
000172	116166  000074  000040 			MOVB	74(R1),40(SP)			; *,REB+14				1041
000200	105066  000041 				CLRB	41(SP)				; REB+14
000204	016166  000102  000024 			MOV	102(R1),24(SP)			; *,REB					1042
000212	010266  000030 				MOV	R2,30(SP)			; BUFFER.ADDR,REB+4			1043
000216	012766  000400  000032 			MOV	#400,32(SP)			; *,REB+6				1044
000224	166666  000022  000032 			SUB	22(SP),32(SP)			; BUFFER.LEFT,REB+6
000232	005066  000042 				CLR	42(SP)				; REB+16				1045
000236	012716  000024 				MOV	#24,(SP)			;					1046
000242	060616 					ADD	SP,(SP)				; REB,*
000244	004767  000000G				JSR	PC,EV.DEC
000250	062706  000020 				ADD	#20,SP				;					1005
000254	000402 					BR	3$				;					1004
000256	112713  000361 			2$:	MOVB	#361,(R3)			;					1050
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  34
X03.35		ZERO_SPECIFIC_ENTITY				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (11)

000262	010146 				3$:	MOV	R1,-(SP)			;					1052
000264	004767  000000G				JSR	PC,NL.RSP
000270	105713 					TSTB	(R3)				;					1054
000272	003414 					BLE	4$
000274	005761  000072 				TST	72(R1)				;					1057
000300	100011 					BPL	4$
000302	010116 					MOV	R1,(SP)				;					1058
000304	012746  000400 				MOV	#400,-(SP)			;					1059
000310	166616  000006 				SUB	6(SP),(SP)			; BUFFER.LEFT,*
000314	010246 					MOV	R2,-(SP)			; BUFFER.ADDR,*				1058
000316	004767  000000V				JSR	PC,COPY.RESP.PARAMETERS
000322	022626 					CMP	(SP)+,(SP)+
000324	005702 				4$:	TST	R2				; BUFFER.ADDR				1062
000326	001406 					BEQ	5$
000330	010216 					MOV	R2,(SP)				; BUFFER.ADDR,*				1063
000332	012746  000400 				MOV	#400,-(SP)
000336	004767  000000G				JSR	PC,UM.RELEASE
000342	005726 					TST	(SP)+
000344	062706  000026 			5$:	ADD	#26,SP				;					0960
000350	000207 					RTS	PC
; Routine Size:  117 words,	Routine Base:  $CODE$ + 2244
; Maximum stack depth per invocation:  23 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  35
X03.35		PROCESS_REQUEST					 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (12)

;	  1065	%routine ('PROCESS_REQUEST', REQ, ACTION_ROUTINE) =
;	  1066	
;	  1067	!++
;	  1068	! FUNCTIONAL DESCRIPTION:
;	  1069	!
;	  1070	!	Choose to handle single or multiple requests
;	  1071	!
;	  1072	! FORMAL PARAMETERS
;	  1073	!
;	  1074	!	REQ - The address of the NML Request Block for this request.
;	  1075	!
;	  1076	! IMPLICIT INPUTS
;	  1077	!
;	  1078	!	NONE.
;	  1079	!
;	  1080	! ROUTINE VALUE:
;	  1081	!
;	  1082	!	1 if NICE request has completed successfully.
;	  1083	!       NEGATIVE NICE error return code if request failed.
;	  1084	!
;	  1085	! SIDE EFFECTS:
;	  1086	!
;	  1087	!	NONE.
;	  1088	!
;	  1089	!--
;	  1090	
;	  1091	    begin
;	  1092	
;	  1093	    map
;	  1094	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1095	
;	  1096	    local
;	  1097	         EID_LEN: $SIGNED_BYTE_VALUE,   ! Signed length of entity id
;	  1098	         RTN_COD;                       ! NICE return code
;	  1099	
;	  1100	    EID_LEN = .REQ[RB_NICE_ENTITY_ID_LENGTH];  ! Pick up the id length
;	  1101	
;	  1102	!
;	  1103	! Determine whether a specific entity or class of entities was specified
;	  1104	!
;	  1105	
;	  1106	    if .EID_LEN[VALUE] geq 0
;	  1107	    then begin                          ! Specific entity request
;	  1108	         REQ[RB_RETURN_CODE] = 1;       ! Success for single response
;	  1109	         (.ACTION_ROUTINE) (.REQ);
;	  1110	         NML$REQUEST_FINISH (.REQ);     ! Queue request for completion
;	  1111	         return $TRUE;
;	  1112	         end;
;	  1113	
;	  1114	    !
;	  1115	    ! Acknowledge the command first
;	  1116	    !
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  36
X03.35		PROCESS_REQUEST					 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (12)

;	  1117	
;	  1118	    REQ[RB_RETURN_CODE] = 2;            ! Set return code for multiple response
;	  1119	    NML$NICE_RESPONSE (.REQ);           ! Build response message
;	  1120	    NML$REQUEST_FINISH (.REQ);          ! Queue request for completion
;	  1121	
;	  1122	    !
;	  1123	    ! Now do the indiviual responses
;	  1124	    !
;	  1125	
;	  1126	    RTN_COD = PROCESS_ENTITY_CLASS (.REQ, ! Perform read for each entity
;	  1127	                                    (.ACTION_ROUTINE),
;	  1128	                                    .REQ[$sub_field (RB_NICE_OPTION, RO_PERMANENT)]);
;	  1129	
;	  1130	    !
;	  1131	    ! Finish it up
;	  1132	    !
;	  1133	
;	  1134	    REQ[RB_RETURN_CODE] = -128;         ! Indicate no more responses coming
;	  1135	    NML$NICE_RESPONSE (.REQ);           ! Build final response message
;	  1136	    NML$REQUEST_FINISH (.REQ);          ! Queue request for completion
;	  1137	    return $TRUE;
;	  1138	    end;				! End of PROCESS_REQUEST


						.SBTTL	PROCESS.REQUEST PROCESS_REQUEST
000000	010146 				PROCESS.REQUEST:
						MOV	R1,-(SP)			;					1065
000002	016601  000006 				MOV	6(SP),R1			; REQ,*					1100
000006	005000 					CLR	R0				; EID.LEN
000010	156100  000076 				BISB	76(R1),R0			; *,EID.LEN
000014	002413 					BLT	1$				;					1106
000016	112761  000001  000116 			MOVB	#1,116(R1)			;					1108
000024	010146 					MOV	R1,-(SP)			;					1109
000026	004776  000006 				JSR	PC,@6(SP)			; *,ACTION.ROUTINE
000032	010116 					MOV	R1,(SP)				;					1110
000034	004767  000000G				JSR	PC,NL.FINISH
000040	005726 					TST	(SP)+				;					1106
000042	000436 					BR	3$				;					1107
000044	112761  000002  000116 		1$:	MOVB	#2,116(R1)			;					1118
000052	010146 					MOV	R1,-(SP)			;					1119
000054	004767  000000G				JSR	PC,NL.RSP
000060	010116 					MOV	R1,(SP)				;					1120
000062	004767  000000G				JSR	PC,NL.FINISH
000066	010116 					MOV	R1,(SP)				;					1126
000070	016646  000006 				MOV	6(SP),-(SP)			; ACTION.ROUTINE,*
000074	005046 					CLR	-(SP)
000076	005761  000072 				TST	72(R1)
000102	100001 					BPL	2$
000104	005216 					INC	(SP)
000106	004767  000000V			2$:	JSR	PC,PROCESS.ENTITY.CLASS
000112	112761  000200  000116 			MOVB	#200,116(R1)			;					1134
000120	010116 					MOV	R1,(SP)				;					1135
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  37
X03.35		PROCESS_REQUEST					 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (12)

000122	004767  000000G				JSR	PC,NL.RSP
000126	010116 					MOV	R1,(SP)				;					1136
000130	004767  000000G				JSR	PC,NL.FINISH
000134	062706  000006 				ADD	#6,SP				;					1065
000140	012700  000001 			3$:	MOV	#1,R0				;					1091
000144	012601 					MOV	(SP)+,R1			;					1065
000146	000207 					RTS	PC
; Routine Size:  52 words,	Routine Base:  $CODE$ + 2616
; Maximum stack depth per invocation:  5 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  38
X03.35		PROCESS_ENTITY_CLASS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (13)

;	  1139	%routine ('PROCESS_ENTITY_CLASS', REQ, ACTION_ROUTINE, PERMANENT) =
;	  1140	
;	  1141	!++
;	  1142	! FUNCTIONAL DESCRIPTION:
;	  1143	!
;	  1144	!	Performs processing for a class of entities, i.e., KNOWN or
;	  1145	!       ACTIVE nodes.
;	  1146	!
;	  1147	! FORMAL PARAMETERS
;	  1148	!
;	  1149	!	REQ - The address of the NML Request Block for this request.
;	  1150	!
;	  1151	! IMPLICIT INPUTS
;	  1152	!
;	  1153	!	NONE.
;	  1154	!
;	  1155	! ROUTINE VALUE:
;	  1156	!
;	  1157	!	1 if NICE request has completed successfully.
;	  1158	!       NEGATIVE NICE error return code if request failed.
;	  1159	!
;	  1160	! SIDE EFFECTS:
;	  1161	!
;	  1162	!	NONE.
;	  1163	!
;	  1164	!--
;	  1165	
;	  1166	    begin
;	  1167	
;	  1168	    literal
;	  1169	           OB_LENGTH = 32 * 3,          ! Initial length of class entity buffer
;	  1170	           OB_SIZE = ch$allocation (OB_LENGTH,8),
;	  1171	           OB_ALLOCATION = OB_SIZE * %upval;
;	  1172	
;	  1173	    map
;	  1174	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1175	
;	  1176	    local
;	  1177	         BUFFER1_ADDR,                  ! Return list buffer address
;	  1178	         BUFFER1_LENGTH,
;	  1179	         BUFFER1_ALLOC,
;	  1180	         ENT_PTR,                       ! Pointer to specific ID in list
;	  1181	         EID_LEN: $SIGNED_BYTE_VALUE,   ! Signed length of entity id
;	  1182	         RTN_COD,                       ! NICE return code
;	  1183	         TEMP;
;	  1184	
;	  1185	    bind routine
;	  1186	         NML_FUNCTION = .ACTION_ROUTINE;
;	  1187	
;	  1188	    ! Process a 'KNOWN' or 'ACTIVE' entity class
;	  1189	
;	  1190	    !
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  39
X03.35		PROCESS_ENTITY_CLASS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (13)

;	  1191	    ! Try to get a big enough buffer.
;	  1192	    !
;	  1193	
;	  1194	    BUFFER1_ALLOC  = 0;
;	  1195	
;	  1196	    do begin
;	  1197	       RTN_COD = NICE$_REE;             ! Set resource error initially
;	  1198	       BUFFER1_ALLOC  = .BUFFER1_ALLOC + OB_ALLOCATION; ! Bump buffer allocation
;	  1199	       BUFFER1_LENGTH  = (.BUFFER1_ALLOC/OB_ALLOCATION)*OB_LENGTH;
;	  1200	       if (BUFFER1_ADDR = NMU$MEMORY_GET (.BUFFER1_ALLOC)) eqla 0
;	  1201	       then exitloop;                   ! Can't get large enough buffer
;	  1202	
;	  1203	       !
;	  1204	       ! Get list of IDs for either qualified or unqualified entities
;	  1205	       !
;	  1206	
;	  1207	       ENT_PTR = ch$ptr (.BUFFER1_ADDR,,8);
;	  1208	       EID_LEN = .REQ[RB_NICE_ENTITY_ID_LENGTH]; ! Pick up the id length
;	  1209	
;	  1210	       if .PERMANENT
;	P 1211	       then RTN_COD = $NML$RETURNPDB (.REQ[RB_NICE_ENTITY_TYPE],
;	P 1212	                                      .EID_LEN[VALUE],
;	P 1213	                                      .REQ[RB_NICE_QUALIFIER],
;	P 1214	                                      BUFFER1_LENGTH,
;	  1215	                                      .ENT_PTR)
;	  1216	       else begin
;	  1217	            local BUF_LNG;
;	  1218	
;	  1219	            BUF_LNG = .BUFFER1_LENGTH;
;	  1220	            RTN_COD = NML$VDB (%bliss36($NTRET) %bliss16(N$FRET),
;	  1221	                               .REQ[RB_NICE_ENTITY_TYPE],
;	  1222	                               0 %(no entity)%,
;	  1223	                               .REQ[RB_NICE_QUALIFIER],
;	  1224	                               .EID_LEN[VALUE],
;	  1225	                               BUF_LNG,
;	  1226	                               ENT_PTR,
;	  1227				       ERROR_DETAIL);
;	  1228	            if .RTN_COD eql 1
;	  1229	            then BUFFER1_LENGTH = .BUFFER1_LENGTH - .BUF_LNG;
;	  1230	            ENT_PTR = ch$ptr (.BUFFER1_ADDR,,8);
;	  1231	            end;
;	  1232	       end
;	  1233	    while (if .RTN_COD eql NICE$_REE    ! Resource error?
;	  1234	
;	U 1235	           %if $TOPS10 %then            ! For TOPS-10
;	U 1236	           or .RTN_COD eql NICE$_PVL    ! Or parameter value too long?
;	  1237	           %fi
;	  1238	
;	  1239	           then begin                   ! Release insufficient buffer 
;	  1240	                NMU$MEMORY_RELEASE (.BUFFER1_ADDR, .BUFFER1_ALLOC);
;	  1241	                $TRUE
;	  1242	                end
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  40
X03.35		PROCESS_ENTITY_CLASS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (13)

;	  1243	           else $FALSE);
;	  1244	
;	  1245	    !
;	  1246	    ! Exit here if the list could not be obtained
;	  1247	    !
;	  1248	
;	  1249	    if (.RTN_COD neq 1)
;	  1250	    or (.BUFFER1_LENGTH leq 0)
;	  1251	    then begin
;	  1252	         if .RTN_COD lss 0
;	  1253	         then begin
;	  1254	              REQ[RB_RETURN_CODE] = .RTN_COD; ! Set failure return code
;	  1255	              NML$NICE_RESPONSE (.REQ); ! Build response message
;	  1256	              end;
;	  1257	
;	  1258	         if .BUFFER1_ADDR neqa 0 ! Release buffer
;	  1259	         then NMU$MEMORY_RELEASE (.BUFFER1_ADDR, .BUFFER1_ALLOC);
;	  1260	
;	  1261	         return .RTN_COD;
;	  1262	         end;
;	  1263	
;	  1264	    !
;	  1265	    ! Perform the appropriate action for each ID in list
;	  1266	    !
;	  1267	
;	  1268	    REQ[RB_RETURN_CODE] = 1;            ! Code for subsequent responses
;	  1269	
;	  1270	    while .BUFFER1_LENGTH gtr 0
;	  1271	    do begin                            ! For each specific entity
;	  1272	       local EID_ADR;                   ! Address of NODE entity id buffer
;	  1273	       label MAP_NODE;
;	  1274	
;	  1275	       REQ[RB_NICE_ENTITY] = .ENT_PTR;  ! Point to this entity ID
;	  1276	       EID_ADR = 0;                     ! Set to zero to indicate no allocation
;	  1277	                                        ! only if necessary...
;	  1278	
;	  1279	       selectone .REQ[RB_NICE_ENTITY_TYPE] of
;	  1280	           set
;	  1281	           [NODE_E]:
;	  1282	               MAP_NODE: begin          ! Map node id to full entity format
;	  1283	               local LENGTH;            ! Length temporary for MAPping
;	  1284	
;	  1285	               if (TEMP = (ch$rchar (ch$plus (.ENT_PTR,2)) and %O'177')) neq 6
;	  1286	               then begin
;	  1287	                    EID_ADR = NMU$MEMORY_GET (NODE_ID_BUFFER_ALLOCATION);
;	  1288	
;	  1289	                    if .EID_ADR eqla 0  ! If cannot allocate memory, exit loop
;	  1290	                    then leave MAP_NODE;
;	  1291	
;	  1292	                    REQ[RB_NICE_ENTITY] = ch$ptr (.EID_ADR,,8);
;	  1293	                    ch$move (minu(.TEMP,6)+3, .ENT_PTR, .REQ[RB_NICE_ENTITY]);
;	  1294	                    end;
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  41
X03.35		PROCESS_ENTITY_CLASS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (13)

;	  1295	
;	  1296	               LENGTH = NODE_ID_BUFFER_LENGTH; ! Get length and map in all
;	  1297	               $NML$MAP_NODE_ID (LENGTH, .REQ[RB_NICE_ENTITY]); ! cases
;	  1298	               end;
;	  1299	
;	  1300	           [otherwise]:
;	  1301	               0;
;	  1302	           tes;
;	  1303	
;	  1304	       begin
;	  1305	       local SAVE_NICE_PARAMETERS;
;	  1306	
;	  1307	       SAVE_NICE_PARAMETERS = .REQ [RB_NICE_PARAMETERS];
;	  1308	
;	  1309	       NML_FUNCTION (.REQ);             ! Perform the function
;	  1310	       NML$REQUEST_FINISH (.REQ);       ! Queue request for completion
;	  1311	
;	  1312	       REQ[RB_NICE_PARAMETERS] = .SAVE_NICE_PARAMETERS;
;	  1313	       REQ[RB_NICE_PARAMETER_LENGTH] = 0;
;	  1314	       end;
;	  1315	
;	  1316	    if .EID_ADR neqa 0                  ! Release only if allocated
;	  1317	    then NMU$MEMORY_RELEASE (.EID_ADR, NODE_ID_BUFFER_ALLOCATION);
;	  1318	
;	  1319	    if .REQ[RB_RETURN_CODE] geq 1       ! Successful?
;	  1320	    then REQ[RB_RETURN_CODE] = 1        ! Yes, set code for success
;	  1321	    else exitloop;                      ! No, quit now with reason
;	  1322	
;	  1323	    selectone .REQ[RB_NICE_ENTITY_TYPE] of
;	  1324	        set
;	  1325	        [NODE_E]:
;	  1326	            begin                       ! Node has special entity format
;	  1327	            GETW (ENT_PTR);             ! Bump past node address
;	  1328	            BUFFER1_LENGTH = .BUFFER1_LENGTH - 2;
;	  1329	            TEMP = GETB (ENT_PTR) and %O'177'; ! Bump buffer count
;	  1330	            BUFFER1_LENGTH = .BUFFER1_LENGTH - 1 - .TEMP;
;	  1331	            ENT_PTR = ch$plus (.ENT_PTR,.TEMP); ! Point to next entity
;	  1332	            end;
;	  1333	
;	  1334	        [LOGGING_]:
;	  1335	            begin                       ! Logging has special entity format
;	  1336	            GETB (ENT_PTR);             ! Bump past sink
;	  1337	            BUFFER1_LENGTH = .BUFFER1_LENGTH - 1;
;	  1338	            end;
;	  1339	
;	  1340	        [otherwise]:
;	  1341	            begin
;	  1342	            TEMP = GETB (ENT_PTR);      ! Bump buffer count
;	  1343	            BUFFER1_LENGTH = .BUFFER1_LENGTH - 1 - .TEMP;
;	  1344	            ENT_PTR = ch$plus (.ENT_PTR,.TEMP); ! Point to next entity
;	  1345	            end;
;	  1346	        tes;
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  42
X03.35		PROCESS_ENTITY_CLASS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (13)

;	  1347	    end;
;	  1348	
;	  1349	    if .BUFFER1_ADDR neqa 0             ! Release buffer if there is one
;	  1350	    then NMU$MEMORY_RELEASE (.BUFFER1_ADDR, .BUFFER1_ALLOC);
;	  1351	
;	  1352	    return .REQ[RB_RETURN_CODE];        ! Return final NICE return code
;	  1353	    end;				! End of PROCESS_ENTITY_CLASS



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


						.GLOBL	LUN$NS, EFN$NS


						.SBTTL	PROCESS.ENTITY.CLASS PROCESS_ENTITY_CLASS
002766						.PSECT	$CODE$,  RO 

000000	004167  000000G			PROCESS.ENTITY.CLASS:
						JSR	R1,$SAVE5			;					1139
000004	162706  000016 				SUB	#16,SP
000010	005046 					CLR	-(SP)				; BUFFER1.ALLOC				1194
000012	016646  000042 				MOV	42(SP),-(SP)			; REQ,*					1208
000016	012700  000074 				MOV	#74,R0				;					1215
000022	061600 					ADD	(SP),R0
000024	010066  000010 				MOV	R0,10(SP)
000030	012702  177761 			1$:	MOV	#-17,R2				; *,RTN.COD				1197
000034	062766  000140  000002 			ADD	#140,2(SP)			; *,BUFFER1.ALLOC			1198
000042	016601  000002 				MOV	2(SP),R1			; BUFFER1.ALLOC,*			1199
000046	006700 					SXT	R0
000050	071027  000140 				DIV	#140,R0
000054	010001 					MOV	R0,R1
000056	070127  000140 				MUL	#140,R1
000062	010166  000016 				MOV	R1,16(SP)			; *,BUFFER1.LENGTH
000066	016646  000002 				MOV	2(SP),-(SP)			; BUFFER1.ALLOC,*			1200
000072	004767  000000G				JSR	PC,UM.GET
000076	005726 					TST	(SP)+
000100	010005 					MOV	R0,R5				; *,BUFFER1.ADDR
000102	001514 					BEQ	5$				;					1201
000104	010566  000012 				MOV	R5,12(SP)			; BUFFER1.ADDR,ENT.PTR			1207
000110	005003 					CLR	R3				; EID.LEN				1208
000112	011600 					MOV	(SP),R0
000114	156003  000076 				BISB	76(R0),R3			; *,EID.LEN
000120	032766  000001  000040 			BIT	#1,40(SP)			; *,PERMANENT				1210
000126	001423 					BEQ	2$
000130	012746  000003 				MOV	#3,-(SP)			;					1215
000134	005046 					CLR	-(SP)
000136	117616  000014 				MOVB	@14(SP),(SP)
000142	110300 					MOVB	R3,R0				; EID.LEN,*
000144	010046 					MOV	R0,-(SP)
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  43
X03.35		PROCESS_ENTITY_CLASS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (13)

000146	016600  000006 				MOV	6(SP),R0
000152	016046  000110 				MOV	110(R0),-(SP)
000156	012746  000030 				MOV	#30,-(SP)
000162	060616 					ADD	SP,(SP)				; BUFFER1.LENGTH,*
000164	010546 					MOV	R5,-(SP)			; ENT.PTR,*
000166	004767  000000G				JSR	PC,NL.PPR
000172	010002 					MOV	R0,R2				; *,RTN.COD				1211
000174	000443 					BR	4$				;					1210
000176	016666  000016  000014 		2$:	MOV	16(SP),14(SP)			; BUFFER1.LENGTH,BUF.LNG		1219
000204	012746  000006 				MOV	#6,-(SP)			;					1220
000210	005046 					CLR	-(SP)
000212	117616  000014 				MOVB	@14(SP),(SP)
000216	005046 					CLR	-(SP)
000220	016600  000006 				MOV	6(SP),R0
000224	016046  000110 				MOV	110(R0),-(SP)
000230	110300 					MOVB	R3,R0				; EID.LEN,*
000232	010046 					MOV	R0,-(SP)
000234	012746  000030 				MOV	#30,-(SP)
000240	060616 					ADD	SP,(SP)				; BUF.LNG,*
000242	012746  000030 				MOV	#30,-(SP)
000246	060616 					ADD	SP,(SP)				; ENT.PTR,*
000250	012746  000000'				MOV	#ERROR.DETAIL,-(SP)
000254	004767  000000G				JSR	PC,NL.VDB
000260	010002 					MOV	R0,R2				; *,RTN.COD
000262	020227  000001 				CMP	R2,#1				; RTN.COD,*				1228
000266	001003 					BNE	3$
000270	166666  000034  000036 			SUB	34(SP),36(SP)			; BUF.LNG,BUFFER1.LENGTH		1229
000276	010566  000032 			3$:	MOV	R5,32(SP)			; BUFFER1.ADDR,ENT.PTR			1230
000302	022626 					CMP	(SP)+,(SP)+			;					1216
000304	062706  000014 			4$:	ADD	#14,SP				;					1196
000310	020227  177761 				CMP	R2,#-17				; RTN.COD,*				1233
000314	001007 					BNE	5$
000316	010546 					MOV	R5,-(SP)			; BUFFER1.ADDR,*			1240
000320	016646  000004 				MOV	4(SP),-(SP)			; BUFFER1.ALLOC,*
000324	004767  000000G				JSR	PC,UM.RELEASE
000330	022626 					CMP	(SP)+,(SP)+
000332	000636 					BR	1$				;					1239
000334	020227  000001 			5$:	CMP	R2,#1				; RTN.COD,*				1249
000340	001003 					BNE	6$
000342	005766  000016 				TST	16(SP)				; BUFFER1.LENGTH			1250
000346	003024 					BGT	9$
000350	005702 				6$:	TST	R2				; RTN.COD				1252
000352	002007 					BGE	7$
000354	011600 					MOV	(SP),R0				;					1254
000356	110260  000116 				MOVB	R2,116(R0)			; RTN.COD,*
000362	010046 					MOV	R0,-(SP)			;					1255
000364	004767  000000G				JSR	PC,NL.RSP
000370	005726 					TST	(SP)+				;					1253
000372	005705 				7$:	TST	R5				; BUFFER1.ADDR				1258
000374	001406 					BEQ	8$
000376	010546 					MOV	R5,-(SP)			; BUFFER1.ADDR,*			1259
000400	016646  000004 				MOV	4(SP),-(SP)			; BUFFER1.ALLOC,*
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  44
X03.35		PROCESS_ENTITY_CLASS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (13)

000404	004767  000000G				JSR	PC,UM.RELEASE
000410	022626 					CMP	(SP)+,(SP)+
000412	010200 				8$:	MOV	R2,R0				; RTN.COD,*				1251
000414	000167  000546 				JMP	25$
000420	012700  000116 			9$:	MOV	#116,R0				;					1268
000424	061600 					ADD	(SP),R0
000426	010066  000006 				MOV	R0,6(SP)
000432	112710  000001 				MOVB	#1,(R0)
000436	012700  000102 				MOV	#102,R0				;					1275
000442	061600 					ADD	(SP),R0
000444	010066  000004 				MOV	R0,4(SP)
000450	016604  000016 			10$:	MOV	16(SP),R4			; BUFFER1.LENGTH,*			1270
000454	003537 					BLE	17$
000456	016601  000012 				MOV	12(SP),R1			; ENT.PTR,*				1275
000462	010176  000004 				MOV	R1,@4(SP)
000466	005003 					CLR	R3				; EID.ADR				1276
000470	105776  000010 				TSTB	@10(SP)				;					1279
000474	001067 					BNE	14$
000476	116102  000002 				MOVB	2(R1),R2			; *,TEMP				1285
000502	042702  177600 				BIC	#177600,R2			; *,TEMP
000506	020227  000006 				CMP	R2,#6				; TEMP,*
000512	001432 					BEQ	13$
000514	012746  000012 				MOV	#12,-(SP)			;					1287
000520	004767  000000G				JSR	PC,UM.GET
000524	010003 					MOV	R0,R3				; *,EID.ADR
000526	001002 					BNE	11$				;					1289
000530	005726 					TST	(SP)+				;					1290
000532	000450 					BR	14$
000534	010376  000006 			11$:	MOV	R3,@6(SP)			; EID.ADR,*				1292
000540	010200 					MOV	R2,R0				; TEMP,*				1293
000542	020027  000006 				CMP	R0,#6
000546	101402 					BLOS	12$
000550	012700  000006 				MOV	#6,R0
000554	010016 				12$:	MOV	R0,(SP)
000556	062716  000003 				ADD	#3,(SP)
000562	010146 					MOV	R1,-(SP)
000564	017646  000010 				MOV	@10(SP),-(SP)
000570	004767  000000G				JSR	PC,BL$MOV
000574	062706  000006 				ADD	#6,SP				;					1286
000600	012700  000011 			13$:	MOV	#11,R0				; *,LENGTH				1296
000604	005046 					CLR	-(SP)				;					1297
000606	005046 					CLR	-(SP)
000610	005046 					CLR	-(SP)
000612	012746  000002 				MOV	#2,-(SP)
000616	010046 					MOV	R0,-(SP)			; LENGTH,*
000620	017646  000016 				MOV	@16(SP),-(SP)
000624	005046 					CLR	-(SP)
000626	012746  000002'				MOV	#IOSB,-(SP)
000632	012746  000000G				MOV	#EFN$NS,-(SP)
000636	012746  000000G				MOV	#LUN$NS,-(SP)
000642	012746  016670 				MOV	#16670,-(SP)
000646	012746  006003 				MOV	#6003,-(SP)
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  45
X03.35		PROCESS_ENTITY_CLASS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (13)

000652	104377 					EMT	377
000654	011600 				14$:	MOV	(SP),R0				;					1307
000656	016001  000104 				MOV	104(R0),R1			; *,SAVE.NICE.PARAM
000662	010046 					MOV	R0,-(SP)			;					1309
000664	004776  000044 				JSR	PC,@44(SP)			; *,ACTION.ROUTINE
000670	016616  000002 				MOV	2(SP),(SP)			;					1310
000674	004767  000000G				JSR	PC,NL.FINISH
000700	016600  000002 				MOV	2(SP),R0			;					1312
000704	010160  000104 				MOV	R1,104(R0)			; SAVE.NICE.PARAM,*
000710	005060  000106 				CLR	106(R0)				;					1313
000714	005703 					TST	R3				; EID.ADR				1316
000716	001406 					BEQ	15$
000720	010316 					MOV	R3,(SP)				; EID.ADR,*				1317
000722	012746  000012 				MOV	#12,-(SP)
000726	004767  000000G				JSR	PC,UM.RELEASE
000732	005726 					TST	(SP)+
000734	105776  000010 			15$:	TSTB	@10(SP)				;					1319
000740	003404 					BLE	16$
000742	112776  000001  000010 			MOVB	#1,@10(SP)			;					1320
000750	000402 					BR	18$				;					1319
000752	005726 				16$:	TST	(SP)+				;					1321
000754	000472 				17$:	BR	23$
000756	105776  000012 			18$:	TSTB	@12(SP)				;					1323
000762	001034 					BNE	19$
000764	005266  000014 				INC	14(SP)				; ENT.PTR				1327
000770	016600  000014 				MOV	14(SP),R0			; ENT.PTR,*
000774	116066  177777  000022 			MOVB	-1(R0),22(SP)			; *,$$GETB.X
001002	005266  000014 				INC	14(SP)				; ENT.PTR
001006	016600  000014 				MOV	14(SP),R0			; ENT.PTR,*
001012	116066  177777  000023 			MOVB	-1(R0),23(SP)			; *,$$GETB.X
001020	162766  000002  000020 			SUB	#2,20(SP)			; *,BUFFER1.LENGTH			1328
001026	005266  000014 				INC	14(SP)				; ENT.PTR				1329
001032	016600  000014 				MOV	14(SP),R0			; ENT.PTR,*
001036	116002  177777 				MOVB	-1(R0),R2			; *,TEMP
001042	042702  177600 				BIC	#177600,R2			; *,TEMP
001046	016600  000020 				MOV	20(SP),R0			; BUFFER1.LENGTH,*			1330
001052	000421 					BR	21$
001054	127627  000012  000002 		19$:	CMPB	@12(SP),#2			;					1323
001062	001005 					BNE	20$
001064	005266  000014 				INC	14(SP)				; ENT.PTR				1336
001070	005366  000020 				DEC	20(SP)				; BUFFER1.LENGTH			1337
001074	000417 					BR	22$				;					1323
001076	005266  000014 			20$:	INC	14(SP)				; ENT.PTR				1342
001102	016600  000014 				MOV	14(SP),R0			; ENT.PTR,*
001106	005002 					CLR	R2				; TEMP
001110	156002  177777 				BISB	-1(R0),R2			; *,TEMP
001114	010400 					MOV	R4,R0				;					1343
001116	160200 				21$:	SUB	R2,R0				; TEMP,*
001120	010066  000020 				MOV	R0,20(SP)			; *,BUFFER1.LENGTH
001124	005366  000020 				DEC	20(SP)				; BUFFER1.LENGTH
001130	060266  000014 				ADD	R2,14(SP)			; TEMP,ENT.PTR				1344
001134	005726 				22$:	TST	(SP)+				;					1271
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  46
X03.35		PROCESS_ENTITY_CLASS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (13)

001136	000167  177306 				JMP	10$				;					1270
001142	005705 				23$:	TST	R5				; BUFFER1.ADDR				1349
001144	001406 					BEQ	24$
001146	010546 					MOV	R5,-(SP)			; BUFFER1.ADDR,*			1350
001150	016646  000004 				MOV	4(SP),-(SP)			; BUFFER1.ALLOC,*
001154	004767  000000G				JSR	PC,UM.RELEASE
001160	022626 					CMP	(SP)+,(SP)+
001162	117600  000006 			24$:	MOVB	@6(SP),R0			;					1166
001166	062706  000022 			25$:	ADD	#22,SP				;					1139
001172	000207 					RTS	PC
; Routine Size:  318 words,	Routine Base:  $CODE$ + 2766
; Maximum stack depth per invocation:  29 words
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  47
X03.35		COPY_RESP_PARAMETERS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (14)

;	  1354	%routine ('COPY_RESP_PARAMETERS', REQ, PAR_LEN, PAR_PTR) =
;	  1355	
;	  1356	!++
;	  1357	! FUNCTIONAL DESCRIPTION:
;	  1358	!
;	  1359	!	Copies parameter data into response message.
;	  1360	!
;	  1361	! FORMAL PARAMETERS
;	  1362	!
;	  1363	!	NONE.
;	  1364	!
;	  1365	! IMPLICIT INPUTS
;	  1366	!
;	  1367	!	NONE.
;	  1368	!
;	  1369	! ROUTINE VALUE:
;	  1370	!
;	  1371	!	NONE.
;	  1372	!
;	  1373	! SIDE EFFECTS:
;	  1374	!
;	  1375	!	NONE.
;	  1376	!
;	  1377	!--
;	  1378	
;	  1379	    begin
;	  1380	
;	  1381	    map
;	  1382	       REQ: ref REQUEST_BLOCK;          ! NICE RB structure
;	  1383	
;	  1384	    local
;	  1385		 LEN,
;	  1386		 REM,
;	  1387	         TEMP,
;	  1388	         RESP_MAX,
;	  1389	         RESP_PTR;
;	  1390	
;	  1391	    !
;	  1392	    ! Point to end of entity id field in response message
;	  1393	    !
;	  1394	
;	  1395	    RESP_PTR = ch$ptr (.REQ[RB_RESPONSE],.REQ[RB_RESPONSE_LENGTH],8);
;	  1396	
;	  1397	    !
;	  1398	    ! Determine the number of 8 bit bytes that can be copied into this
;	  1399	    ! response message and set REM to the number of bytes that
;	  1400	    ! could not be included.
;	  1401	    !
;	  1402	
;	  1403	    RESP_MAX = (.REQ[RB_RESPONSE_ALLOCATION] / %upval) * (%bpval / 8);
;	  1404	
;	  1405	    if (.PAR_LEN + .REQ[RB_RESPONSE_LENGTH]) gtr .RESP_MAX
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  48
X03.35		COPY_RESP_PARAMETERS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (14)

;	  1406	    then
;	  1407		begin
;	  1408		LEN = .RESP_MAX - .REQ[RB_RESPONSE_LENGTH];
;	  1409		REM = .PAR_LEN - .LEN;
;	  1410		end
;	  1411	    else
;	  1412		begin
;	  1413		LEN = .PAR_LEN;
;	  1414		REM = 0;
;	  1415		end;
;	  1416	
;	  1417	    !
;	  1418	    ! Copy parameters to DATA BLOCK field of repsonse message
;	  1419	    !
;	  1420	
;	  1421	    RESP_PTR = ch$move (.LEN, .PAR_PTR, .RESP_PTR);
;	  1422	    REQ[RB_RESPONSE_LENGTH] = .REQ[RB_RESPONSE_LENGTH] + .LEN;
;	  1423	
;	  1424	    .REM
;	  1425	    end;				! End of COPY_RESP_PARAMETERS


						.SBTTL	COPY.RESP.PARAMETERS COPY_RESP_PARAMETERS
000000	004167  000000G			COPY.RESP.PARAMETERS:
						JSR	R1,$SAVE5			;					1354
000004	016604  000022 				MOV	22(SP),R4			; REQ,*					1395
000010	016402  000034 				MOV	34(R4),R2
000014	010205 					MOV	R2,R5				; *,RESP.PTR
000016	066405  000026 				ADD	26(R4),R5			; *,RESP.PTR
000022	016401  000036 				MOV	36(R4),R1			;					1403
000026	006700 					SXT	R0
000030	071027  000002 				DIV	#2,R0
000034	010001 					MOV	R0,R1				; *,RESP.MAX
000036	006301 					ASL	R1				; RESP.MAX
000040	016600  000020 				MOV	20(SP),R0			; PAR.LEN,*				1405
000044	010203 					MOV	R2,R3
000046	060003 					ADD	R0,R3
000050	020301 					CMP	R3,R1				; *,RESP.MAX
000052	003404 					BLE	1$
000054	160201 					SUB	R2,R1				; *,LEN					1408
000056	010002 					MOV	R0,R2				; *,REM					1409
000060	160102 					SUB	R1,R2				; LEN,REM
000062	000402 					BR	2$				;					1405
000064	010001 				1$:	MOV	R0,R1				; *,LEN					1413
000066	005002 					CLR	R2				; REM					1414
000070	010146 				2$:	MOV	R1,-(SP)			; LEN,*					1421
000072	016646  000020 				MOV	20(SP),-(SP)			; PAR.PTR,*
000076	010546 					MOV	R5,-(SP)			; RESP.PTR,*
000100	004767  000000G				JSR	PC,BL$MOV
000104	010005 					MOV	R0,R5				; *,RESP.PTR
000106	060164  000034 				ADD	R1,34(R4)			; LEN,*					1422
000112	062706  000006 				ADD	#6,SP				;					1379
NMLRCZ		NMLRCZ -- NICE Read/Change/Zero Processing	24-May-1985 13:22:51	TOPS-20 Bliss-16 2A(530)	    Page  49
X03.35		COPY_RESP_PARAMETERS				 3-Jan-1983 01:58:34	DNET61:<MCB.NML>NMLRCZ.BLI.1 (14)

000116	010200 					MOV	R2,R0				; REM,*					1354
000120	000207 					RTS	PC
; Routine Size:  41 words,	Routine Base:  $CODE$ + 4162
; Maximum stack depth per invocation:  10 words


;	  1426	end                                   ! End of Module NMLRCZ
;	  1427	eludom



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


;					PSECT SUMMARY
;
;	Psect Name			Words	  Attributes
;	 $OWN$				    3	    RW ,  D  ,  LCL,  REL,  CON
;	 $CODE$				 1122	    RO ,  I  ,  LCL,  REL,  CON




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





;	  1428	! Local Modes:
;	  1429	! Mode:BLISS
;	  1430	! Auto Save Mode:2
;	  1431	! Comment Column:40
;	  1432	! Comment Rounding:+1
;	  1433	! End:
; Size:		1122 code + 3 data words
; Run Time:	00:18.7
; Elapsed Time:	00:24.5
; Memory Used:	72 pages
; Compilation Complete
ACTION_ROUTINE			1065	1109	1127	1139	1186
BUFFER1_ADDR			1177	1200#	1207	1230	1240	1258	1259	1349	1350
BUFFER1_ALLOC			1179	1194#	1198#	1199	1200	1240	1259	1350
BUFFER1_LENGTH			1178	1199#	1214	1219	1229#	1250	1270	1328#	1330#	1337#	1343#
BUFFER_ADDR			 508	 529#	 537	 546	 561	 610	 632	 635	 996	1004#	1013	1043
				1060	1062	1063
BUFFER_ALLOC			 509	 522#	 526#	 527	 529	 561	 635
BUFFER_LEFT			 510	 528#	 545	 554	 562	 569	 631	 997	1002#	1019	1044	1059
BUFFER_LEN			 511	 527#	 528	 562	 569	 631
BUFFER_OFFSET			 513	 598#	 609	 610	 615#
BUFFER_PART			 516	 562#	 569#	 607
BUFFER_PTR			 514	 537#	 555	1012	1013#	1020
BUFFER_USED			 512	 607#	 609	 615
BUF_LNG				1217	1219#	1225	1229
CHANGE_SPECIFIC_ENTITY		 397	 676
COPY_RESP_PARAMETERS		 404	 608	 630	1058
CO_CLEAR_PURGE			 715	 725	 742	 890
CO_PERMANENT			 723
DATA				 880	 897
DUMMY				 362+	 364+	 365+
EID_ADR				1272	1276#	1287#	1289	1292	1316	1317
EID_LEN				1097	1100#	1106	1181	1208#	1212	1224
ENT_PTR				1180	1207#	1215	1226	1230#	1275	1285	1293	1327	1329	1331#	1336
				1342	1344#
ERROR_DETAIL			 420	 521#	 556	 577	 718#	 751	 761	 766	1001#	1021	1034	1227
GETB				1329	1336	1342
GETW				 888	1327
GETW_NA				 906
GET_NEXT_PARAMETER		 399	 714	 772	 819	 920
LEN				 886	 892#	 894#	 899	 903	1385	1408#	1409	1413#	1421	1422
LOGGING_			1334
MAP_NODE			1273	1282	1290
MD_SEQ				 584	 592#	 595#	 611	 620
MODULE_				 904
MULTIPLE_PARAMETERS		 398	 673
N				 517	 523#	 562	 563#	 564	 569	 570#	 580	 601	 618
N$FCLR				 744
N$FRET				1220
N$FSET				 754
N$FSHO				 549
N$FSZC				1014
NEXT				 880	 903#	 909
NICE$_IPG			 674
NICE$_PRV			 467	 670	 956
NICE$_PVL			1236
NICE$_REE			 531	 559	1030	1050	1197	1233
NML$CHANGE			 396
NML$DECLARE_EVENT		 429	1046
NML$NICE_RESPONSE		 434	 533	 590	 606	 624	 629	 778	1052	1119	1135	1255
NML$PARAMETER_DATA		 430	 894
NML$PDB_CHANGE			 433
NML$PDB_READ			 432
NML$READ			 394
NML$REQUEST_FINISH		 591	 613	1110	1120	1136	1310
NML$REQUEST_MANAGER		 378+
NML$VDB				 431	 549	 744	 754	1014	1220
NML$VDB_PARAMETER		 428
NML$ZERO			 400
NMLRCZ				 234#
NML_FUNCTION			1186*	1309
NMU$MEMORY_GET			 529	1004	1200	1287
NMU$MEMORY_MANAGER		 376+
NMU$MEMORY_RELEASE		 561	 635	1063	1240	1259	1317	1350
NMU$NETWORK_LOCAL		 427*
NMU$QUEUE_MANAGER		 377+
NMU$SCHED_MANAGER		 375+*
NN				 518	 597#	 601	 607	 616#	 618
NODE_E				1281	1325
NODE_ID_BUFFER_ALLOCATION	1287	1317
NODE_ID_BUFFER_LENGTH		1296
OB_ALLOCATION			 502#	 526	 527	 990#	1004	1063	1171#	1198	1199
OB_LENGTH			 500#	 501	 527	 988#	 989	1002	1044	1059	1169#	1170	1199
OB_SIZE				 501#	 502	 989#	 990	1170#	1171
PARAMETER			 880	 888#	 895	 905	 909
PAR_LEN				1354	1405	1409	1413
PAR_PTR				1354	1421
PERMANENT			1139	1210
POINTER				 880	 882#	 888	 896	 906
PROCESS_ENTITY_CLASS		 403	1126
PROCESS_REQUEST			 402	 469	 676	 958
RAW_EVENT_BLOCK			1038
RB$MORE				 586
RB_ERROR_DETAIL			 577	 766	1034
RB_NICE_ENTITY			 542	 551	 728	 735	 746	 756	1016	1042	1275	1292	1293	1297
RB_NICE_ENTITY_ID_LENGTH	1100	1208
RB_NICE_ENTITY_TYPE		 541	 550	 727	 734	 745	 755	 894	 904	1015	1041	1211	1221
				1279	1323
RB_NICE_LENGTH			 868	 903
RB_NICE_OPTION			 539	 544	 553	 715	 723	 725	 742	 890	1029	1057	1128
RB_NICE_PARAMETERS		 532	 731	 738	 750	 760	 818	 820	 861	 868	 882	 891	 919
				1307	1312
RB_NICE_PARAMETER_LENGTH	 721	 821	 862	 870	 911	1313
RB_NICE_POINTER			 868
RB_NICE_QUALIFIER		 543	 552	 729	 736	 747	 757	 891	 919	1017	1213	1223
RB_PRV_CHANGE			 670	 956
RB_PRV_LOCAL			 672
RB_PRV_READ			 467
RB_RESPONSE			1395
RB_RESPONSE_ALLOCATION		1403
RB_RESPONSE_LENGTH		1395	1405	1408	1422
RB_RETURN_CODE			 531	 576	 589	 603	 605	 611	 623	 717	 765	 775	1000	1033
				1050	1054	1108	1118	1134	1254	1268	1319	1320	1352
RB_STATE			 586
READ_SPECIFIC_ENTITY		 395	 469
REB				1038	1040#	1041#	1042#	1043#	1044#	1045#	1046
REB_DATA_LENGTH			1044
REB_DATA_POINTER		1043
REB_ENTITY_POINTER		1042
REB_ENTITY_TYPE			1041
REB_EVENT_CODE			1040
REB_TIME_BLOCK			1045
REM				1386	1409#	1414#	1424
REQ				 435	 465	 467	 469	 471	 505	 531#	 532#	 533	 539	 541	 542
				 543	 544	 550	 551	 552	 553	 576#	 577#	 586	 589#	 590	 591
				 603#	 605#	 606	 608	 611	 613	 623#	 624	 629	 630	 638	 668
				 670	 672	 673	 676	 678	 708	 714	 715	 717#	 721	 723	 725
				 727	 728	 729	 731	 734	 735	 736	 738	 742	 745	 746	 747
				 750	 755	 756	 757	 760	 765#	 766#	 772	 775#	 778	 780	 812
				 818	 819	 820#	 821#	 824	 859	 861#	 862	 868	 870#	 882#	 890
				 891	 894	 903	 904	 911#	 919	 920	 924	 954	 956	 958	 960
				 993	1000#	1015	1016	1017	1029	1033#	1034#	1041	1042	1050#	1052
				1054	1057	1058	1065	1094	1100	1108#	1109	1110	1118#	1119	1120
				1126	1128	1134#	1135	1136	1139	1174	1208	1211	1213	1221	1223
				1254#	1255	1268#	1275#	1279	1292#	1293	1297	1307	1309	1310	1312#
				1313#	1319	1320#	1323	1352	1354	1382	1395	1403	1405	1408	1422#
REQUEST_BLOCK			 465	 505	 668	 708	 812	 859	 954	 993	1094	1174	1382
RESP_MAX			1388	1403#	1405	1408
RESP_PTR			1389	1395#	1421#
RO_INFO_TYPE			 544	 553
RO_PERMANENT			 539	1128
RTN				 815	 819#	 822
RTN_COD				 515	 541#	 549#	 559	 574	 576	 712	 727#	 734#	 744#	 754#	 765
				 998	1014#	1030	1031#	1033	1098	1126#	1182	1197#	1211#	1220#	1228
				1233	1236	1249	1252	1254	1261
SAVE_NICE_PARAMETERS		 816	 818#	 820	1305	1307#	1312
TASK_INFO			 350+
TEMP				 519	1183	1285#	1293	1329#	1330	1331	1342#	1343	1344	1387
VALUE				1106	1212	1224
ZERO_SPECIFIC_ENTITY		 401	 958
ZO_READ_AND_ZERO		1029	1057
$FALSE				 351+	 566	 571	 595	 871	 900	1243
$INCOMPLETE$			 362+#
$INTERNAL_ERROR$		 347+#
$NICE$ERR_OPF			 367+	 775
$NML$DELPDB			 727
$NML$GETPDB			 541
$NML$MAP_NODE_ID		1297
$NML$PUTPDB			 734
$NML$RETURNPDB			1211
$NTCLR				 744
$NTRET				1220
$NTSET				 754
$NTSHO				 549
$NTSZC				1014
$SIGNED_BYTE_VALUE		1097	1181
$SUB_FIELD			 539	 544	 553	 715	 723	 725	 742	 890	1029	1057	1128
$TOPS10				1235
$TRUE				 565	 592	 922	1111	1137	1241
%BLISS16			 549	 744	 754	1014	1220
%BLISS36			 549	 744	 754	1014	1220
%GLOBAL_ROUTINE			 435#	 638#	 924#
%REMAINING			 350+
%ROUTINE			 471#	 678#	 780#	 824#	 960#	1065#	1139#	1354#