Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/nml/nmldtl.lst
There are no other files named nmldtl.lst in the archive.
								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page   1
								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (1)

;	  0001	! RATS:<BANKS.MCB.NMLMCB>NMLDTL.BLI.2 30-Oct-84 08:41:05, Edit by BANKS
;	  0002	!
;	  0003	! Ident 52.
;	  0004	!  Re-enable acceptance of the following parameters for dump:
;	  0005	!   135   Dump Address
;	  0006	!   136   Dump Count
;	  0007	!
;	  0008	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.3 30-Aug-82 10:17:57, Edit by PECKHAM
;	  0009	!
;	  0010	! Ident 51.
;	  0011	!  Disable acceptance of following parameters for load/dump:
;	  0012	!   126   Software Identification
;	  0013	!   135   Dump Address
;	  0014	!   136   Dump Count
;	  0015	!
;	  0016	! <BRANDT.DEVELOPMENT>NMLDTL.BLI.1 27-Aug-82 10:20:22, Edit by BRANDT
;	  0017	!
;	  0018	!   Ident 50.
;	  0019	!    In routine DUMP_NODE, make secondary dumper optional.  Therefore,
;	  0020	!    if none is specified, a secondary dumper will not be required.
;	  0021	!    The DN200 does not require a secondary dumper.
;	  0022	!
;	  0023	! <BRANDT.DEVELOPMENT>NMLDTL.BLI.1 25-Aug-82 11:20:36, Edit by BRANDT
;	  0024	!
;	  0025	!   Ident 49.
;	  0026	!    In routine DUMP_NODE, change CASE statement so that it has an
;	  0027	!    OUTRANGE branch to prevent an infinite loop in case of error.
;	  0028	!
;	  0029	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.2 27-Jun-82 01:20:36, Edit by PECKHAM
;	  0030	!
;	  0031	! Ident 48.
;	  0032	! Should not have used NML$GET_PARAMETER to place substate directly into
;	  0033	! the parameter block, as it overwrote the full word.
;	  0034	!
;	  0035	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.2 26-Jun-82 17:03:33, Edit by PECKHAM
;	  0036	!
;	  0037	! Ident 47.
;	  0038	! Allow service operations with substate FAILED in CIRCUIT_OPEN.
;	  0039	!
;	  0040	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.2 23-Jun-82 11:32:56, Edit by PECKHAM
;	  0041	!
;	  0042	! Ident 46.
;	  0043	! Check RB_PRV_* bits in request block before performing requests.
;	  0044	!
;	  0045	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.4 21-Jun-82 22:06:08, Edit by PECKHAM
;	  0046	!
;	  0047	! Ident 45.
;	  0048	! Handle the MOP prompt message (ENTER MOP MODE) as a one byte message.
;	  0049	! This conforms to the VMS/RSX agreed-upon protocol.
;	  0050	! Change MOP buffer size from 512 to 522 to accomodate 512 data bytes
;	  0051	! plus MOP protocol overhead (bug found by DON BRANDT).
;	  0052	! Add support for SERVICE DEVICE checking during load/dump.
								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page   2
								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (1)

;	  0053	!
;	  0054	! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLDTL.BLI.34 28-May-82 21:48:00, Edit by PECKHAM
;	  0055	!
;	  0056	! Ident 44.
;	  0057	! Enable the NML$TRIGGER function.
;	  0058	! The TRIGGER_NODE routine does produce the right message.
;	  0059	! At some later point, TRIGGER_NODE should be used from LOAD_NODE
;	  0060	! and DUMP_NODE as per the NM spec.
;	  0061	! Condition out for $TOPS20.
;	  0062	!
;	  0063	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.7 26-May-82 12:14:52, Edit by PECKHAM
;	  0064	!
;	  0065	! Ident 43.
;	  0066	! The FETCH_PARAMETERS routine was reading the HOST parameter onto
;	  0067	! the stack and passing the stack address back to the caller!
;	  0068	! Change LB_HOST to be a NODE_ID_BLOCK instead of pointer to one.
;	  0069	! Change FETCH_PARAMETERS to store into this block.
;	  0070	! Change IMAGE_LOAD to fill in missing data and use this block.
;	  0071	!
;	  0072	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.15 21-May-82 18:28:51, Edit by PECKHAM
;	  0073	!
;	  0074	! Ident 42.
;	  0075	! Attack problems of service function interlocks and link state maintenance.
;	  0076	! This involves changes in CIRCUIT_OPEN to verify the circuit
;	  0077	! STATE / SERVICE / SUBSTATE for permission and set SUBSTATE,
;	  0078	! and changes to CIRCUIT_CLOSE to reset SUBSTATE.
;	  0079	! Move link initialization to CIRCUIT_CLOSE and initialize only if STATE ON.
;	  0080	!
;	  0081	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.6 28-Apr-82 13:47:31, Edit by PECKHAM
;	  0082	!
;	  0083	! Ident 41.
;	  0084	! Change NMU$DLX_* routine references to $NMU_DLX_* macro references.
;	  0085	! Add receive timeout values where needed.
;	  0086	! Make sure all $NMU_DLX_WRITE function requests expect a $true/$false return.
;	  0087	! Check status of NMU$FILE_WRITE.
;	  0088	!
;	  0089	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.3 28-Apr-82 10:31:26, Edit by PECKHAM
;	  0090	!
;	  0091	! Ident 40.
;	  0092	! FETCH_PARAMETERS should not put NICE$_SUC in the response buffer.
;	  0093	! DTL_SETUP sould not clear the response buffer before allocating it.
;	  0094	! Check SERVICE parameter for ENABLED before allowing circuit activity
;	  0095	! in DLX_OPEN.
;	  0096	!
;	  0097	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.2 27-Apr-82 14:13:45, Edit by PECKHAM
;	  0098	!
;	  0099	! Ident 39.
;	  0100	! De-support TRIGGER function.
;	  0101	!
;	  0102	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.3  2-Mar-82 11:57:52, Edit by PECKHAM
;	  0103	! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLDTL.BLI.24  1-Mar-82 17:23:28, Edit by WEBBER
;	  0104	!
								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page   3
								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (1)

;	  0105	! Ident 38.
;	  0106	! Fix DUMP_NODE and IMAGE_LOAD to retransmit on timeout.
;	  0107	!
;	  0108	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.2 25-Feb-82 12:54:29, Edit by PECKHAM
;	  0109	!
;	  0110	! Ident 37.
;	  0111	! Fix success return length in DTL_CLEANUP.
;	  0112	! General handling of NMU$MEMORY_GET failures.
;	  0113	!
;	  0114	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.2 25-Feb-82 08:46:47, Edit by PECKHAM
;	  0115	!
;	  0116	! Ident 36.
;	  0117	! Fix LOAD_NODE to report missing SECONDARY LOADER correctly.
;	  0118	!
;	  0119	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.7 24-Feb-82 17:31:50, Edit by PECKHAM
;	  0120	!
;	  0121	! Ident 35.
;	  0122	! Initialize return code of response buffer to 0 in DTL_SETUP.
;	  0123	! Add DTL_CLEANUP which returns service buffer and sets up response message.
;	  0124	! Call this from NML$DUMP, NML$LOAD and NML$TRIGGER.
;	  0125	!
;	  0126	! NET:<PECKHAM.DEVELOPMENT>NMLDTL.BLI.4 23-Feb-82 08:35:48, Edit by PECKHAM
;	  0127	!
;	  0128	! Ident 34.
;	  0129	! Avoid creating pointers using SB_RESPONSE_PTR - screws up responses.
;	  0130	!
;	  0131	! NET:<DECNET20-V3P0.XPT>NMLDTL.BLI.36 20-Jan-82 19:54:18, Edit by WEBBER
;	  0132	!
;	  0133	! Ident 33.
;	  0134	! Change the name MEMSIZE to something else; it's now a macro name.
;	  0135	!
;	  0136	! NET:<DECNET20-V3P0.XPT>NMLDTL.BLI.34 14-Jan-82 13:24:19, Edit by WEBBER
;	  0137	!
;	  0138	! Ident 32.
;	  0139	! Fix numerous load & dump bugs.  E.g., pass a response pointer to
;	  0140	! NMU$FILE_CLOSE.
;	  0141	!
;	  0142	! NET:<DECNET20-V3P0.XPT>NMLDTL.BLI.28 10-Dec-81 10:26:10, Edit by WEBBER
;	  0143	!
;	  0144	! Ident 31.
;	  0145	! Fix numerous load bugs.
;	  0146	! Fix DUMP_NODE to add a DUMPER_READY state, which performs the functions
;	  0147	! that DUMPER_RUNNING used to.  The DUMPER_RUNNING state now is used to
;	  0148	! read the MOP MODE RUNNING message right after the secondary dumper is
;	  0149	! loaded.
;	  0150	!
;	  0151	! NET:<DECNET20-V3P1.BASELEVEL-2.MCB>NMLDTL.BLI.94 11-Nov-81 14:50:35, Edit by WEBBER
;	  0152	!
;	  0153	! Ident 30.		Lee Webber, 11-Nov-81
;	  0154	! Take common setup code out of NML$LOAD, DUMP and TRIGGER and put it into
;	  0155	! a separate routine DTL_SETUP.  Call the setup routine from the three main
;	  0156	! routines.
								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page   4
								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (1)

;	  0157	! Modifications to the SERVICE_DATA_BLOCK and REQUEST_BLOCK structures (the
;	  0158	! latter only has some fields renamed).
;	  0159	!
;	  0160	! Ident 29.
;	  0161	! Fill in TRIGGER_NODE routine.
;	  0162	! Rewrite all routines so that parameter defaulting and missing parameters
;	  0163	! are handled at the low level service routines.
;	  0164	! Add new FILE_DATA_BLOCK structure for file handling.
;	  0165	! Rename READ_PARAMETERS to FILE_READ_LABEL.  Add FILE_OPEN and FILE_CLOSE.
;	  0166	! TRANSFER_IMAGE integrated into IMAGE_LOAD.
;	  0167	! Re-organize data bases to support this and make names correspond to
;	  0168	! NCP parameter names.
;	  0169	!
;	  0170	! NET:<DECNET20-V3P1.BASELEVEL-2.MCB>NMLDTL.BLI.16 19-Oct-81 08:05:37, Edit by PECKHAM
;	  0171	!
;	  0172	! Ident 28.
;	  0173	! Rewrite DUMP_NODE routine to avoid loading secondary dumper
;	  0174	! unless needed.
;	  0175	!
;	  0176	! NET:<DECNET20-V3P1.BASELEVEL-2.MCB>NMLDTL.BLI.8 13-Oct-81 20:44:47, Edit by PECKHAM
;	  0177	!
;	  0178	! Ident 27.
;	  0179	! Fix IMAGE_LOAD computation in READ_PARAMETERS to use %asli32.
;	  0180	!
;	  0181	! NET:<DECNET20-V3P1.BASELEVEL-2.MCB>NMLDTL.BLI.7  9-Oct-81 14:35:11, Edit by GUNN
;	  0182	!
;	  0183	! Ident 26.
;	  0184	! Fix IMAGE_LOAD to only build target and host node id's in PARAMETER LOAD
;	  0185	! message if available in load data block.
;	  0186	!
;	  0187	! NET:<DECNET20-V3P1.BASELEVEL-2.MCB>NMLDTL.BLI.6 20-Aug-81 10:21:36, Edit by GUNN
;	  0188	!
;	  0189	! Ident 25.
;	  0190	! Fix code in LOAD_NODE to handle receipt of DECnet-10/20 System Specific
;	  0191	! MOP ASCII Text Message returned by TERDMC.SYS the tertiary loader for
;	  0192	! the DMC device. This message contains the output produced by CHK11.
;	  0193	!
;	  0194	! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLDTL.BLI.14 18-Aug-81 20:11:00, Edit by GUNN
;	  0195	!
;	  0196	! Ident 24.
;	  0197	! Change calls to 32 bit manipulation macros to conform to
;	  0198	! the new consistent definitions.
;	  0199	! Fix TRANSFER_IMAGE, and  SECONDARY_LOAD to build response message 
;	  0200	! if call to NMU$FILE_READ returns zero bytes.
;	  0201	! Fix up text of some of the NICE response messages.
;	  0202	!
;	  0203	! NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMLDTL.BLI.11 12-Aug-81 14:27:38, Edit by JENNESS
;	  0204	!
;	  0205	! Ident 23.
;	  0206	! Fix Parameters and Transfer message to put in parameter code 4 (instead of
;	  0207	! 2) for the host node number.
;	  0208	!
								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page   5
								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (1)

;	  0209	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.4  8-Aug-81 11:56:37, Edit by GUNN
;	  0210	!
;	  0211	! Ident 22.
;	  0212	! Add error codes in response message for MCB environment.
;	  0213	!
;	  0214	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.10  5-Aug-81 18:52:45, Edit by GUNN
;	  0215	!
;	  0216	! Ident 21.
;	  0217	! Add code to map HOST node id to both address and name in NML$LOAD.
;	  0218	!
;	  0219	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.5 30-Jul-81 09:34:06, Edit by JENNESS
;	  0220	!
;	  0221	! Ident 20.
;	  0222	! Fix SECONDARY_LOAD to output the correct detail if the file access
;	  0223	! to the secondary dumper fails (instead of secondary loader detail all
;	  0224	! the time).
;	  0225	!
;	  0226	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.5 30-Jul-81 09:32:54, Edit by JENNESS
;	  0227	!
;	  0228	! Ident 19.
;	  0229	! Fix DUMP_NODE to open image dump file after closing secondary dumper.
;	  0230	! Only one file link (FAL/DAP) has to be open at a time to do a dump.
;	  0231	!
;	  0232	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.3 29-Jul-81 09:45:36, Edit by GUNN
;	  0233	!
;	  0234	! Ident 18.
;	  0235	! Fix NML$TRIGGER to return a value from RTN_COD.
;	  0236	!
;	  0237	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.2 29-Jul-81 08:08:33, Edit by GUNN
;	  0238	!
;	  0239	! Ident 17.
;	  0240	! Increased response buffer allocation to 256 characters to handle long
;	  0241	! text created by addition of JSYS error output in NMUDLX.
;	  0242	!
;	  0243	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.4 30-Jun-81 11:48:39, Edit by JENNESS
;	  0244	!
;	  0245	! Ident 16.
;	  0246	! Fix NML$DUMP and NML$LOAD to set the ENTITY_PTR if a LOAD VIA circuit
;	  0247	! command is being processed.
;	  0248	!
;	  0249	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.2 18-Jun-81 15:46:06, Edit by GUNN
;	  0250	!
;	  0251	! Ident 15.
;	  0252	! Change use of DLX_TRANSFER in IMAGE_LOAD to DLX_DATA in call to
;	  0253	! NMU$DLX_WRITE.
;	  0254	!
;	  0255	! NET:<DECNET20-V3P1.NMU>NMLDTL.BLI.46  1-Jun-81 08:18:13, Edit by JENNESS
;	  0256	!
;	  0257	! Insert the NML$DUMP and NML$TRIGGER routines.
;	  0258	!
;	  0259	! NET:<DECNET20-V3P1.NMU>NMLDTL.BLI.12 28-May-81 14:12:06, Edit by JENNESS
;	  0260	!
								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page   6
								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (1)

;	  0261	! Move LOAD_DATA_BLOCK, DUMP_DATA_BLOCK and TRIGGER_DATA_BLOCK into
;	  0262	! this module from NMLCOM.REQ.  Finish in DUMP_NODE routine.
;	  0263	!
;	  0264	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.93 17-Apr-81 09:49:48, Edit by JENNESS
;	  0265	!
;	  0266	! Fill in READ_PARAMETERS routine.
;	  0267	!
;	  0268	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.86 13-Apr-81 20:57:48, Edit by GUNN
;	  0269	!
;	  0270	! Save and restore real entity type in RB_NICE_ENTITY_TYPE across calls
;	  0271	! to GET_NEXT_PARAMETER.
;	  0272	!
;	  0273	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.85 10-Apr-81 16:43:38, Edit by GUNN
;	  0274	!
;	  0275	! Don't try to map the HOST node id. Use just as given.
;	  0276	! Move initialization of LB_RESPONSE_PTR to beginning of NML$LOAD routine.
;	  0277	!
;	  0278	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.83 10-Apr-81 16:10:42, Edit by GUNN
;	  0279	!
;	  0280	! Fix call to macro PUTB in NML$LOAD to use value not address as PUTW does.
;	  0281	!
;	  0282	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.80 10-Apr-81 13:43:17, Edit by GUNN
;	  0283	!
;	  0284	! Call NML$REQUEST_FINISH on success.
;	  0285	! Use $RESPONSE macro in NML$LOAD to build error repsonses.
;	  0286	!
;	  0287	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.76 10-Apr-81 08:58:50, Edit by JENNESS
;	  0288	!
;	  0289	! On return from LOAD_NODE, make sure the RB_RESPONSE_LENGTH field is
;	  0290	! set correctly.
;	  0291	!
;	  0292	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.74  9-Apr-81 18:14:50, Edit by GUNN
;	  0293	!
;	  0294	! Steve changed formal REQ definition in NML$LOAD to be 'ref'.
;	  0295	!
;	  0296	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.70  8-Apr-81 18:30:04, Edit by GUNN
;	  0297	!
;	  0298	! Fixed? various compile errors in LOAD_NODE code.
;	  0299	! Declared LB within context of block that calls LOAD_NODE.
;	  0300	! Added local LOAD_ADDRESS variable in routine TRANSFER_IMAGE.
;	  0301	! Deleted local variable FILE_ID in routine SECONDARY_LOAD.
;	  0302	! Added a dummy routine for READ_PARAMETERS.
;	  0303	!
;	  0304	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.67  8-Apr-81 16:56:32, Edit by GUNN
;	  0305	!
;	  0306	! Change code which handles ADDRESS and NAME parameters to work
;	  0307	! properly.
;	  0308	!
;	  0309	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.21  8-Apr-81 11:02:16, Edit by JENNESS
;	  0310	!
;	  0311	! Fill in LOAD_NODE routine.
;	  0312	!
								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page   7
								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (1)

;	  0313	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.19  7-Apr-81 15:02:06, Edit by GUNN
;	  0314	!
;	  0315	! Fix bind of load block.
;	  0316	! Add code to allocate NICE response buffer in RB.
;	  0317	!
;	  0318	! NET:<DECNET20-V3P1.NML>NMLDTL.BLI.11  2-Apr-81 20:40:20, Edit by GUNN
;	  0319	!
;	  0320	! Add some common code to NML$DUMP and NML$TRIGGER.
;	  0321	! Add code to get parameters from volatile data base for NML$LOAD.
;	  0322	! Add low level function routine interface calls
;	  0323	! to do DUMP, TRIGGER, and LOAD.
;	  0324	! Add skeleton routines for LOAD_NODE, DUMP_NODE, and TRIGGER_NODE.
;	  0325	!
;	  0326	! Update copyright date.
;	  0327	!
								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page   8
								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (2)

;	  0328	
;	  0329	module NMLDTL	(
;	  0330			ident = 'X03.52'
;	  0331			) =
;	  0332	begin
;	  0333	
;	  0334	!
;	  0335	!                    COPYRIGHT (c) 1980, 1981, 1982, 1985
;	  0336	!                    DIGITAL EQUIPMENT CORPORATION
;	  0337	!                        Maynard, Massachusetts
;	  0338	!
;	  0339	!     This software is furnished under a license and may  be  used
;	  0340	!     and copied only in accordance with the terms of such license
;	  0341	!     and with the inclusion of the above copyright notice.   This
;	  0342	!     software  or any other copies thereof may not be provided or
;	  0343	!     otherwise made available to any other person.  No  title  to
;	  0344	!     and ownership of the software is hereby transferred.
;	  0345	!
;	  0346	!     The information  in  this  software  is  subject  to  change
;	  0347	!     without  notice  and should not be construed as a commitment
;	  0348	!     by DIGITAL EQUIPMENT CORPORATION.
;	  0349	!
;	  0350	!     DIGITAL assumes no responsibility for the use or reliability
;	  0351	!     of  its  software  on  equipment  which  is  not supplied by
;	  0352	!     DIGITAL.
;	  0353	!
;	  0354	
;	  0355	!++
;	  0356	! FACILITY:	DECnet-10/20 V3.0 Network Management Layer (NML)
;	  0357	!
;	  0358	! ABSTRACT:
;	  0359	!
;	  0360	!	Performs remote node dump, trigger boot, and load.
;	  0361	!
;	  0362	! ENVIRONMENT:	TOPS-10/20 & MCB/RSX11 User mode under NML
;	  0363	!
;	  0364	! AUTHOR: Dale C. Gunn & Steven Jenness , CREATION DATE: 12-Nov-80
;	  0365	!
;	  0366	! MODIFIED BY:
;	  0367	!
;	  0368	!	, : VERSION
;	  0369	! 01	-
;	  0370	!--
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page   9
X03.52								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (3)

;	  0371	
;	  0372	!
;	  0373	! INCLUDE FILES:
;	  0374	!
;	  0375	
;	  0376	library 'NMLLIB';                       ! All required definitions
;	  0377	
;	  0378	require 'NMLEXT';                       ! External routine declarations
;	  0484	
;	  0485	!
;	  0486	! TABLE OF CONTENTS
;	  0487	!
;	  0488	
;	L 0489	%if %bliss (bliss16)
;	  0490	%then linkage NML_LKG_DB = jsr (register = 5);
;	U 0491	%else macro NML_LKG_DB = bliss36c %;
;	  0492	%fi
;	  0493	
;	  0494	forward routine
;	  0495	        NML$DUMP,
;	  0496	        NML$LOAD,
;	  0497	        NML$TRIGGER,
;	  0498	        DTL_SETUP,
;	  0499	        DTL_CLEANUP,
;	  0500	        CIRCUIT_CLOSE : NML_LKG_DB,
;	  0501	        CIRCUIT_OPEN : NML_LKG_DB,
;	  0502	        CIRCUIT_PROMPT : NML_LKG_DB,
;	  0503	        CPU_IS_PDP11 : NML_LKG_DB,
;	  0504	        DUMP_NODE : NML_LKG_DB,
;	  0505	        FETCH_PARAMETERS,
;	  0506	        FILE_CLOSE : NML_LKG_DB,
;	  0507	        FILE_OPEN : NML_LKG_DB,
;	  0508	        FILE_READ_LABEL : NML_LKG_DB,
;	  0509	        GET_NEXT_PARAMETER,
;	  0510	        IMAGE_LOAD : NML_LKG_DB,
;	  0511	        LOAD_NODE : NML_LKG_DB novalue,
;	  0512	        SECONDARY_LOAD : NML_LKG_DB,
;	  0513	        SET_SUBSTATE : NML_LKG_DB novalue,
;	  0514	        TRIGGER_NODE : NML_LKG_DB;
;	  0515	
;	  0516	
;	  0517	!
;	  0518	! LOAD, DUMP & TRIGGER data block structure definitions
;	  0519	!
;	  0520	$show (fields) $show (literals)
;	  0521	
;	  0522	$field
;	  0523	      SERVICE_DATA_FIELDS =
;	  0524	      set
;	  0525	
;	  0526	! Common data for LOAD, DUMP and TRIGGER
;	  0527	
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  10
X03.52								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (3)

;	L 0528	      SB_CIRCUIT_HANDLE = [$integer],      ! Link handle for circuit
; %PRINT:				  [0,0,16,1]   (+%O'0')
;	L 0529	      SB_RESPONSE_PTR = [$pointer],        ! Pointer to response buffer
; %PRINT:				  [1,0,16,0]   (+%O'2')
;	L 0530	      SB_BUFFER = [$address],      	   ! Address of MOP buffer
; %PRINT:				  [2,0,16,0]   (+%O'4')
;	L 0531	      SB_BUFFER_PTR = [$pointer],          ! Pointer to MOP buffer
; %PRINT:				  [3,0,16,0]   (+%O'6')
;	L 0532	      SB_NODE_DATA = [$pointer],           ! Pointer to node entity ID
; %PRINT:				  [4,0,16,0]   (+%O'10')
;	L 0533	      SB_SERVICE_CIRCUIT = [$pointer],     ! 110 Pointer to service circuit-id
; %PRINT:				  [5,0,16,0]   (+%O'12')
;	L 0534	      SB_SERVICE_PASSWORD = [$pointer],    ! 111 Pointer to hexadecimal passwd
; %PRINT:				  [6,0,16,0]   (+%O'14')
;	L 0535	      LB_LOAD_FILE = [$pointer],           ! 120 Pointer to system image
; %PRINT:				  [7,0,16,0]   (+%O'16')
;	L 0536	      LB_SECONDARY_LOADER = [$pointer],    ! 121 Pointer to secondary loader
; %PRINT:				  [8,0,16,0]   (+%O'20')
;	L 0537	      LB_TERTIARY_LOADER = [$pointer],     ! 122 Pointer to tertiary loader
; %PRINT:				  [9,0,16,0]   (+%O'22')
;	L 0538	      LB_SOFTWARE_IDENTIFICATION = [$pointer], ! 126 Pointer to id string
; %PRINT:				  [10,0,16,0]   (+%O'24')
;	L 0539	      DB_DUMP_FILE = [$pointer],           ! 130 Pointer to dump image file 
; %PRINT:				  [11,0,16,0]   (+%O'26')
;	L 0540	      DB_SECONDARY_DUMPER = [$pointer],    ! 131 Pointer to secondary dumper
; %PRINT:				  [12,0,16,0]   (+%O'30')
;	L 0541	      LB_NAME = [$pointer],                ! 500 Pointer to node name block
; %PRINT:				  [13,0,16,0]   (+%O'32')
;	L 0542	      LB_ADDRESS = [$pointer],             ! 502 Pointer to node address block
; %PRINT:				  [14,0,16,0]   (+%O'34')
;	L 0543	      DB_DUMP_ADDRESS = [$bytes(4)],       ! 135 4 byte dump address
; %PRINT:				  [15,0,0,0]   (+%O'36')
;	L 0544	      DB_DUMP_COUNT = [$bytes(4)],         ! 136 4 byte dump count
; %PRINT:				  [17,0,0,0]   (+%O'42')
;	L 0545	      LB_HOST = [$bytes (NODE_ID_BUFFER_LENGTH)],
; %PRINT:				  [19,0,0,0]   (+%O'46')
;	  0546	                                           ! 140 HOST node id block
;	L 0547	      LB_SERVICE_DEVICE = [$tiny_integer], ! 112 Device type
; %PRINT:				  [23,8,8,1]   (+%O'57')
;	L 0548	      LB_CPU = [$tiny_integer],            ! 113 CPU type
; %PRINT:				  [24,0,8,1]   (+%O'60')
;	L 0549	      LB_SOFTWARE_TYPE = [$tiny_integer],  ! 125 Software type
; %PRINT:				  [24,8,8,1]   (+%O'61')
;	L 0550	      SB_USAGE = [$tiny_integer],          ! Function being performed
; %PRINT:				  [25,0,8,1]   (+%O'62')
;	L 0551	      SB_SUBSTATE = [$tiny_integer],       ! Current substate
; %PRINT:				  [25,8,8,1]   (+%O'63')
;	L 0552	      SB_AUTOSERVICE = [$bit]              ! True if auto-service
; %PRINT:				  [26,0,1,0]   (+%O'64')
;	  0553	      tes;
;	  0554	
;	  0555	literal
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  11
X03.52								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (3)

;	L 0556	       SERVICE_DATA_BLOCK_SIZE = $field_set_size,
; %PRINT:				  27 fullwords
;	L 0557	       SERVICE_DATA_BLOCK_ALLOCATION = $field_set_units ;
; %PRINT:				  53 addressable units
;	  0558	
;	  0559	macro
;	M 0560	     SERVICE_DATA_BLOCK = block [SERVICE_DATA_BLOCK_SIZE]
;	  0561	                       field (SERVICE_DATA_FIELDS) %;
;	  0562	
;	  0563	! End of service structure definition
;	  0564	
;	  0565	!%( *** TEMPORARY - until NMLLIB is modified			!***
;	  0566	macro RB_DTL_DATA = RB_LOAD_DATA%;				!***
;	  0567	macro RB_DTL_DATA_ALLOCATION = RB_LOAD_DATA_ALLOCATION%;	!***
;	  0568	
;	  0569	
;	  0570	!
;	  0571	! File handling structure definition
;	  0572	!
;	  0573	
;	  0574	$field
;	  0575	      FILE_DATA_FIELDS =
;	  0576	      set
;	L 0577	      FB_FILE_HANDLE = [$integer],
; %PRINT:				  [0,0,16,1]   (+%O'0')
;	L 0578	      FB_RESPONSE_PTR = [$pointer],
; %PRINT:				  [1,0,16,0]   (+%O'2')
;	L 0579	      FB_FILE = [$pointer],
; %PRINT:				  [2,0,16,0]   (+%O'4')
;	L 0580	      FB_CURRENT_ADDRESS = [$bytes (4)],
; %PRINT:				  [3,0,0,0]   (+%O'6')
;	L 0581	      FB_BYTES_LEFT = [$bytes (4)],
; %PRINT:				  [5,0,0,0]   (+%O'12')
;	L 0582	      FB_TRANSFER_ADDRESS = [$bytes (4)],
; %PRINT:				  [7,0,0,0]   (+%O'16')
;	L 0583	      FB_FILE_TYPE = [$byte]
; %PRINT:				  [9,0,8,0]   (+%O'22')
;	  0584	      tes;
;	  0585	
;	  0586	literal
;	L 0587	       FILE_DATA_BLOCK_SIZE = $field_set_size,
; %PRINT:				  10 fullwords
;	L 0588	       FILE_DATA_BLOCK_ALLOCATION = $field_set_units ;
; %PRINT:				  19 addressable units
;	  0589	
;	  0590	macro
;	M 0591	     FILE_DATA_BLOCK = block [FILE_DATA_BLOCK_SIZE]
;	  0592	                       field (FILE_DATA_FIELDS) %;
;	  0593	
;	  0594	! End of file structure definition
;	  0595	
;	  0596	$show (none)
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  12
X03.52								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (3)

;	  0597	!
;	  0598	! Macros:
;	  0599	!
;	  0600	
;	  0601	!
;	  0602	! Equated symbols:
;	  0603	!
;	  0604	
;	  0605	literal
;	  0606	       RESPONSE_BUFFER_LENGTH = 256,    ! NICE response buffer in bytes
;	  0607	       RESPONSE_BUFFER_SIZE = ch$allocation (RESPONSE_BUFFER_LENGTH,8),
;	  0608	       RESPONSE_BUFFER_ALLOCATION = RESPONSE_BUFFER_SIZE * %upval,
;	  0609	
;	  0610	       MOP_BUFFER_LENGTH = 522,         ! MOP message buffer in bytes
;	  0611	       MOP_BUFFER_SIZE = ch$allocation (MOP_BUFFER_LENGTH, 8),
;	  0612	       MOP_BUFFER_ALLOCATION = MOP_BUFFER_SIZE * %upval,
;	  0613	
;	  0614	       MOP_LOAD_DATA_LENGTH = (254 - 6),! Max bytes in image in load message
;	  0615	       MOP_RESPONSE_LENGTH = 32;        ! Max bytes in ACK to load
;	  0616	
;	  0617	!
;	  0618	! RSX .SYS file label definitions
;	  0619	!
;	  0620	
;	  0621	literal
;	  0622	    L$BSA = %o'10',                 ! Base address of image
;	  0623	    L$BLDZ = %o'16',                ! Load size of image
;	  0624	    L$BFLG = %o'30',                ! Header flags word
;	  0625	    L$BXFR = %o'350',               ! Transfer address
;	  0626	    L$BHRB = %o'356';               ! Starting block of image (0 relative)
;	  0627	
;	  0628	!
;	  0629	! STATE/SUBSTATE/SERVICE definitions
;	  0630	!
;	  0631	
;	  0632	literal
;	  0633	    CPARM_STATE = 0,
;	  0634	    CPARM_SUBSTATE = 1,
;	  0635	    CPARM_SERVICE = 100,
;	  0636	
;	  0637	    LINK_ON = 0,
;	  0638	    LINK_OFF = 1,
;	  0639	    LINK_SERVICE = 2,
;	  0640	    LINK_CLEARED = 3,
;	  0641	
;	  0642	    LINK_NO_SUBSTATE = -1,
;	  0643	    LINK_STARTING = 0,
;	  0644	    LINK_REFLECTING = 1,
;	  0645	    LINK_LOOPING = 2,
;	  0646	    LINK_LOADING = 3,
;	  0647	    LINK_DUMPING = 4,
;	  0648	    LINK_TRIGGERING = 5,
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  13
X03.52								14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (3)

;	  0649	    LINK_AUTOSERVICE = 6,
;	  0650	    LINK_AUTOLOADING = 7,
;	  0651	    LINK_AUTODUMPING = 8,
;	  0652	    LINK_AUTOTRIGGERING = 9,
;	  0653	    LINK_SYNCHRONIZING = 10,
;	  0654	    LINK_FAILED = 11,
;	  0655	
;	  0656	    LINK_ENABLED = 0,
;	  0657	    LINK_DISABLED = 1;
;	  0658	
;	  0659	!
;	  0660	! External references:
;	  0661	!
;	  0662	
;	  0663	external routine
;	  0664	         NML$FIND_NDB,                  ! Find node entity for circuit
;	  0665	         NML$PARAMETER_DATA,            ! Get NICE parameter data
;	  0666	         NML$CLR_VDB_PARAMETER,         ! Clear parameter in VDB
;	  0667	         NML$GET_VDB_PARAMETER,         ! Obtain parameter data from VDB
;	  0668	         NML$SET_VDB_PARAMETER,         ! Set parameter in VDB
;	  0669	         NMU$NETWORK_LOCAL,             ! Get local node number/name
;	  0670	         NMU$FILE_ROUTINES;             ! File access routines
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  14
X03.52		NML$DUMP as NL_DMP				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (4)

;	  0671	%global_routine ('NML$DUMP', REQ : ref REQUEST_BLOCK) =
;	  0672	
;	  0673	!++
;	  0674	! Functional description:
;	  0675	!
;	  0676	!	This routine performs the NICE dump request function.
;	  0677	!       It is responsible for extracting the parameter data,
;	  0678	!       required for the dump function, from the volatile data
;	  0679	!       base and merging this data with any parameter data
;	  0680	!       supplied with the dump request. It calls DUMP_NODE to
;	  0681	!       actually perform the function.
;	  0682	!
;	  0683	! Formal parameters:
;	  0684	!
;	  0685	!	.REQ	NML Request Block address
;	  0686	!
;	  0687	! Implicit inputs: none
;	  0688	!
;	  0689	! Routine value:
;	  0690	!
;	  0691	!	NICE return code.
;	  0692	!
;	  0693	! Side effects: none
;	  0694	!
;	  0695	!--
;	  0696	
;	  0697	    begin
;	  0698	    bind
;	  0699	        ACCEPTABLE_PARAMETERS = plit (110, 111, 130, 131, 135, 136);
;	  0700	
;	  0701	    macro                               ! Synonym for response buffer pointer
;	  0702	         RESPONSE_PTR = ch$ptr (.REQ [RB_RESPONSE],, 8) %;
;	  0703	
;	  0704	    local
;	  0705	         RTN_COD;
;	  0706	
;	  0707	    if not .REQ[RB_PRV_SERVICE] then return NICE$_PRV;
;	  0708	
;	  0709	    !
;	  0710	    ! Set up the dump service block
;	  0711	    !
;	  0712	
;	  0713	    if DTL_SETUP (.REQ, ACCEPTABLE_PARAMETERS) lss 0
;	  0714	    then
;	  0715	        return (ch$rchar(RESPONSE_PTR));
;	  0716	
;	  0717	    !
;	  0718	    ! Access service block
;	  0719	    !
;	  0720	
;	  0721	    begin
;	  0722	
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  15
X03.52		NML$DUMP as NL_DMP				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (4)

;	  0723	    local
;	  0724	         DB : ref SERVICE_DATA_BLOCK;
;	  0725	
;	  0726	    DB = .REQ[RB_DTL_DATA];
;	  0727	    DB [SB_USAGE] = DLX_DUMP;
;	  0728	    RTN_COD = NICE$_SUC;
;	  0729	
;	  0730	    !
;	  0731	    ! Open the link if we can
;	  0732	    !
;	  0733	
;	  0734	    if not CIRCUIT_OPEN (.DB)
;	  0735	    then
;	  0736	        RTN_COD = ch$rchar (RESPONSE_PTR);
;	  0737	
;	  0738	    !
;	  0739	    ! Execute the dump.
;	  0740	    !
;	  0741	
;	  0742	    if .RTN_COD eql NICE$_SUC
;	  0743	    then
;	  0744		begin
;	  0745		DUMP_NODE (.DB);
;	  0746	        RTN_COD = ch$rchar (RESPONSE_PTR);
;	  0747	        CIRCUIT_CLOSE (.DB);
;	  0748		end;
;	  0749	
;	  0750	    end;
;	  0751	    DTL_CLEANUP (.REQ, .RTN_COD)
;	  0752	    end;				!End of NML$DUMP


						.TITLE	NMLDTL
						.IDENT	/X03.52/


000000						.PSECT	$PLIT$,  RO ,  D  
000000	000006 					.WORD	6				; Plit count word
000002	000156 				P.AAA:	.WORD	156
000004	000157 					.WORD	157
000006	000202 					.WORD	202
000010	000203 					.WORD	203
000012	000207 					.WORD	207
000014	000210 					.WORD	210


						.GLOBL	US.CREATE, US.ABORT, US.FINI, US.COMPLETE
						.GLOBL	US.ERROR, US.INSERT, US.REMOVE
						.GLOBL	US.QRESET, US.QQINS, US.QQREM
						.GLOBL	US.QQSET, US.QQEXT, US.EVENT, US.WAIT
						.GLOBL	US.FLAG, US.SLEEP, US.CURRENT
						.GLOBL	US.DESCHEDULE, UM.RESET, UM.INITIALIZE
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  16
X03.52		NML$DUMP as NL_DMP				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (4)

						.GLOBL	UM.GET, UM.RELEASE, UQ.RESET, UQ.INSERT
						.GLOBL	UQ.REMOVE, UQ.EXTRACT, UQ.LENGTH
						.GLOBL	UQ.SCAN, UQ.SEXTRACT, NL.INIT
						.GLOBL	NL.RENTER, NL.REMOVE, NL.FINISH
						.GLOBL	NL.VFN, NL.PDA, NL.VCP, NL.VGP
						.GLOBL	NL.VSP, UN.LOCAL, UF.OPEN, UF.READ
						.GLOBL	UF.WRITE, UF.SKIP, UF.SEEK, UF.CLOSE


	000002'				ACCEPTABLE.PARAMETERS=
							    P.AAA


						.SBTTL	NL.DMP NML$DUMP as NL_DMP
000000						.PSECT	$CODE$,  RO 

000000	004167  000000G			NL.DMP::JSR	R1,$SAVE5			;					0671
000004	016602  000016 				MOV	16(SP),R2			; REQ,*					0707
000010	032762  002000  000076 			BIT	#2000,76(R2)
000016	001003 					BNE	1$
000020	012700  177775 				MOV	#-3,R0
000024	000207 					RTS	PC
000026	010246 				1$:	MOV	R2,-(SP)			;					0713
000030	012746  000002'				MOV	#ACCEPTABLE.PARAMETERS,-(SP)
000034	004767  000000V				JSR	PC,DTL.SETUP
000040	022626 					CMP	(SP)+,(SP)+
000042	005700 					TST	R0
000044	002004 					BGE	2$
000046	005000 					CLR	R0				;					0715
000050	157200  000026 				BISB	@26(R2),R0
000054	000207 					RTS	PC
000056	016205  000112 			2$:	MOV	112(R2),R5			; *,DB					0726
000062	112765  000002  000062 			MOVB	#2,62(R5)			; *,*(DB)				0727
000070	012701  000001 				MOV	#1,R1				; *,RTN.COD				0728
000074	004767  000000V				JSR	PC,CIRCUIT.OPEN			;					0734
000100	006000 					ROR	R0
000102	103403 					BLO	3$
000104	005001 					CLR	R1				; RTN.COD				0736
000106	157201  000026 				BISB	@26(R2),R1			; *,RTN.COD
000112	020127  000001 			3$:	CMP	R1,#1				; RTN.COD,*				0742
000116	001007 					BNE	4$
000120	004767  000000V				JSR	PC,DUMP.NODE			;					0745
000124	005001 					CLR	R1				; RTN.COD				0746
000126	157201  000026 				BISB	@26(R2),R1			; *,RTN.COD
000132	004767  000000V				JSR	PC,CIRCUIT.CLOSE		;					0747
000136	010246 				4$:	MOV	R2,-(SP)			;					0751
000140	010146 					MOV	R1,-(SP)			; RTN.COD,*
000142	004767  000000V				JSR	PC,DTL.CLEANUP
000146	022626 					CMP	(SP)+,(SP)+			;					0697
000150	000207 					RTS	PC				;					0671
; Routine Size:  53 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  9 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  17
X03.52		NML$LOAD as NL_LOD				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (5)

;	  0753	%global_routine ('NML$LOAD', REQ : ref REQUEST_BLOCK) =
;	  0754	
;	  0755	!++
;	  0756	! Functional description:
;	  0757	!
;	  0758	!	This routine performs the NICE load request function.
;	  0759	!       It is responsible for extracting the parameter data,
;	  0760	!       required for the load function, from the volatile data
;	  0761	!       base and merging this data with any parameter data
;	  0762	!       supplied with the load request. It calls LOAD_NODE to
;	  0763	!       actually perform the function.
;	  0764	!
;	  0765	! Formal parameters:
;	  0766	!
;	  0767	!	.REQ	NML Request Block address.
;	  0768	!
;	  0769	! Implicit inputs: none
;	  0770	!
;	  0771	! Routine value:
;	  0772	!
;	  0773	!	NICE return code.
;	  0774	!
;	  0775	! Side effects: none
;	  0776	!
;	  0777	!--
;	  0778	
;	  0779	    begin
;	  0780	    bind
;	  0781	        ACCEPTABLE_PARAMETERS = plit (110, 111, 112, 113, 120, 121, 122, 125 %(, 126)% , 141, 500, 502);
;	  0782	
;	  0783	    macro                               ! Synonym for response buffer pointer
;	  0784	         RESPONSE_PTR = ch$ptr (.REQ [RB_RESPONSE],, 8) %;
;	  0785	
;	  0786	    local
;	  0787	         RTN_COD;
;	  0788	
;	  0789	    if not .REQ[RB_PRV_SERVICE] then return NICE$_PRV;
;	  0790	
;	  0791	    !
;	  0792	    ! Set up the load service block.
;	  0793	    !
;	  0794	
;	  0795	    if DTL_SETUP (.REQ, ACCEPTABLE_PARAMETERS) lss 0
;	  0796	    then
;	  0797	        return (ch$rchar(RESPONSE_PTR));
;	  0798	
;	  0799	    !
;	  0800	    ! Access service block
;	  0801	    !
;	  0802	
;	  0803	    begin
;	  0804	
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  18
X03.52		NML$LOAD as NL_LOD				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (5)

;	  0805	    local
;	  0806	         LB : ref SERVICE_DATA_BLOCK;
;	  0807	
;	  0808	    RTN_COD = NICE$_SUC;
;	  0809	    LB = .REQ[RB_DTL_DATA];
;	  0810	    LB [SB_USAGE] = DLX_LOAD;
;	  0811	
;	  0812	    !
;	  0813	    ! Open the link if we can
;	  0814	    !
;	  0815	
;	  0816	    if not CIRCUIT_OPEN (.LB)
;	  0817	    then
;	  0818	        RTN_COD = ch$rchar (.LB [SB_RESPONSE_PTR]);
;	  0819	
;	  0820	    !
;	  0821	    ! Execute the load.
;	  0822	    ! Deallocate the buffers.
;	  0823	    !
;	  0824	
;	  0825	    if .RTN_COD eql NICE$_SUC
;	  0826	    then
;	  0827		begin
;	  0828		LOAD_NODE (.LB);
;	  0829	        RTN_COD = ch$rchar (RESPONSE_PTR);
;	  0830	        CIRCUIT_CLOSE (.LB);
;	  0831		end;
;	  0832	
;	  0833	    end;
;	  0834	    DTL_CLEANUP (.REQ, .RTN_COD)
;	  0835	    end;				!End of NML$LOAD



000016						.PSECT	$PLIT$,  RO ,  D  
000016	000013 					.WORD	13				; Plit count word
000020	000156 				P.AAB:	.WORD	156
000022	000157 					.WORD	157
000024	000160 					.WORD	160
000026	000161 					.WORD	161
000030	000170 					.WORD	170
000032	000171 					.WORD	171
000034	000172 					.WORD	172
000036	000175 					.WORD	175
000040	000215 					.WORD	215
000042	000764 					.WORD	764
000044	000766 					.WORD	766


	000020'				ACCEPTABLE.PARAMETERS=
							    P.AAB
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  19
X03.52		NML$LOAD as NL_LOD				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (5)


						.SBTTL	NL.LOD NML$LOAD as NL_LOD
000152						.PSECT	$CODE$,  RO 

000000	004167  000000G			NL.LOD::JSR	R1,$SAVE5			;					0753
000004	016601  000016 				MOV	16(SP),R1			; REQ,*					0789
000010	032761  002000  000076 			BIT	#2000,76(R1)
000016	001003 					BNE	1$
000020	012700  177775 				MOV	#-3,R0
000024	000207 					RTS	PC
000026	010146 				1$:	MOV	R1,-(SP)			;					0795
000030	012746  000020'				MOV	#ACCEPTABLE.PARAMETERS,-(SP)
000034	004767  000000V				JSR	PC,DTL.SETUP
000040	022626 					CMP	(SP)+,(SP)+
000042	005700 					TST	R0
000044	002004 					BGE	2$
000046	005000 					CLR	R0				;					0797
000050	157100  000026 				BISB	@26(R1),R0
000054	000207 					RTS	PC
000056	012702  000001 			2$:	MOV	#1,R2				; *,RTN.COD				0808
000062	016105  000112 				MOV	112(R1),R5			; *,LB					0809
000066	110265  000062 				MOVB	R2,62(R5)			; *,*(LB)				0810
000072	004767  000000V				JSR	PC,CIRCUIT.OPEN			;					0816
000076	006000 					ROR	R0
000100	103403 					BLO	3$
000102	005002 					CLR	R2				; RTN.COD				0818
000104	157502  000002 				BISB	@2(R5),R2			; *(LB),RTN.COD
000110	020227  000001 			3$:	CMP	R2,#1				; RTN.COD,*				0825
000114	001007 					BNE	4$
000116	004767  000000V				JSR	PC,LOAD.NODE			;					0828
000122	005002 					CLR	R2				; RTN.COD				0829
000124	157102  000026 				BISB	@26(R1),R2			; *,RTN.COD
000130	004767  000000V				JSR	PC,CIRCUIT.CLOSE		;					0830
000134	010146 				4$:	MOV	R1,-(SP)			;					0834
000136	010246 					MOV	R2,-(SP)			; RTN.COD,*
000140	004767  000000V				JSR	PC,DTL.CLEANUP
000144	022626 					CMP	(SP)+,(SP)+			;					0779
000146	000207 					RTS	PC				;					0753
; Routine Size:  52 words,	Routine Base:  $CODE$ + 0152
; Maximum stack depth per invocation:  9 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  20
X03.52		NML$TRIGGER as NL_TRG				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (6)

;	  0836	%global_routine ('NML$TRIGGER', REQ : ref REQUEST_BLOCK) =
;	  0837	
;	  0838	!++
;	  0839	! Functional description:
;	  0840	!
;	  0841	!	This routine performs the NICE trigger request function.
;	  0842	!       It is responsible for extracting the parameter data,
;	  0843	!       required for the trigger function, from the volatile data
;	  0844	!       base and merging this data with any parameter data
;	  0845	!       supplied with the trigger request. It calls TRIGGER_NODE to
;	  0846	!       actually perform the function.
;	  0847	!
;	  0848	! Formal parameters:
;	  0849	!
;	  0850	!	.REQ	NML Request Block address.
;	  0851	!
;	  0852	! Implicit inputs: none
;	  0853	!
;	  0854	! Routine value:
;	  0855	!
;	  0856	!	NICE return code.
;	  0857	!
;	  0858	! Side effects: none
;	  0859	!
;	  0860	!--
;	  0861	
;	  0862	    begin
;	  0863	    bind
;	  0864	        ACCEPTABLE_PARAMETERS = plit (110, 111);
;	  0865	
;	  0866	    macro                               ! Synonym for response buffer pointer
;	  0867	         RESPONSE_PTR = ch$ptr (.REQ [RB_RESPONSE],, 8) %;
;	  0868	
;	  0869	    local
;	  0870	         RTN_COD;
;	  0871	
;	  0872	    if not .REQ[RB_PRV_SERVICE] then return NICE$_PRV;
;	  0873	
;	  0874	    !
;	  0875	    ! Set up the trigger service block.
;	  0876	    !
;	  0877	
;	  0878	    if DTL_SETUP (.REQ, ACCEPTABLE_PARAMETERS) lss 0
;	  0879	    then
;	  0880	        return (ch$rchar(RESPONSE_PTR));
;	  0881	
;	L 0882	%if $MCB
;	  0883	%then
;	  0884	
;	  0885	    !
;	  0886	    ! Access service block
;	  0887	    !
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  21
X03.52		NML$TRIGGER as NL_TRG				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (6)

;	  0888	
;	  0889	    begin
;	  0890	
;	  0891	    local
;	  0892	         TB : ref SERVICE_DATA_BLOCK;
;	  0893	
;	  0894	    RTN_COD = NICE$_SUC;
;	  0895	    TB = .REQ[RB_DTL_DATA];
;	  0896	    TB [SB_USAGE] = DLX_OTHER;
;	  0897	
;	  0898	    !
;	  0899	    ! Open the link if we can
;	  0900	    !
;	  0901	
;	  0902	    if not CIRCUIT_OPEN (.TB)
;	  0903	    then
;	  0904	        RTN_COD = ch$rchar (.TB [SB_RESPONSE_PTR]);
;	  0905	
;	  0906	    !
;	  0907	    ! Execute the load.
;	  0908	    ! Deallocate the buffers.
;	  0909	    !
;	  0910	
;	  0911	    if .RTN_COD eql NICE$_SUC
;	  0912	    then
;	  0913		begin
;	  0914		TRIGGER_NODE (.TB);
;	  0915	        RTN_COD = ch$rchar (RESPONSE_PTR);
;	  0916	        CIRCUIT_CLOSE (.TB);
;	  0917		end;
;	  0918	
;	  0919	    end;
;	U 0920	%else
;	U 0921	    RTN_COD = NICE$_UFO;
;	U 0922	    $RESPONSE (RESPONSE_PTR, .RTN_COD);
;	  0923	%fi
;	  0924	
;	  0925	    DTL_CLEANUP (.REQ, .RTN_COD)
;	  0926	    end;				!End of NML$TRIGGER



000046						.PSECT	$PLIT$,  RO ,  D  
000046	000002 					.WORD	2				; Plit count word
000050	000156 				P.AAC:	.WORD	156
000052	000157 					.WORD	157


	000050'				ACCEPTABLE.PARAMETERS=
							    P.AAC
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  22
X03.52		NML$TRIGGER as NL_TRG				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (6)

						.SBTTL	NL.TRG NML$TRIGGER as NL_TRG
000322						.PSECT	$CODE$,  RO 

000000	004167  000000G			NL.TRG::JSR	R1,$SAVE5			;					0836
000004	016601  000016 				MOV	16(SP),R1			; REQ,*					0872
000010	032761  002000  000076 			BIT	#2000,76(R1)
000016	001003 					BNE	1$
000020	012700  177775 				MOV	#-3,R0
000024	000207 					RTS	PC
000026	010146 				1$:	MOV	R1,-(SP)			;					0878
000030	012746  000050'				MOV	#ACCEPTABLE.PARAMETERS,-(SP)
000034	004767  000000V				JSR	PC,DTL.SETUP
000040	022626 					CMP	(SP)+,(SP)+
000042	005700 					TST	R0
000044	002004 					BGE	2$
000046	005000 					CLR	R0				;					0880
000050	157100  000026 				BISB	@26(R1),R0
000054	000207 					RTS	PC
000056	012702  000001 			2$:	MOV	#1,R2				; *,RTN.COD				0894
000062	016105  000112 				MOV	112(R1),R5			; *,TB					0895
000066	112765  000004  000062 			MOVB	#4,62(R5)			; *,*(TB)				0896
000074	004767  000000V				JSR	PC,CIRCUIT.OPEN			;					0902
000100	006000 					ROR	R0
000102	103403 					BLO	3$
000104	005002 					CLR	R2				; RTN.COD				0904
000106	157502  000002 				BISB	@2(R5),R2			; *(TB),RTN.COD
000112	020227  000001 			3$:	CMP	R2,#1				; RTN.COD,*				0911
000116	001007 					BNE	4$
000120	004767  000000V				JSR	PC,TRIGGER.NODE			;					0914
000124	005002 					CLR	R2				; RTN.COD				0915
000126	157102  000026 				BISB	@26(R1),R2			; *,RTN.COD
000132	004767  000000V				JSR	PC,CIRCUIT.CLOSE		;					0916
000136	010146 				4$:	MOV	R1,-(SP)			;					0925
000140	010246 					MOV	R2,-(SP)			; RTN.COD,*
000142	004767  000000V				JSR	PC,DTL.CLEANUP
000146	022626 					CMP	(SP)+,(SP)+			;					0862
000150	000207 					RTS	PC				;					0836
; Routine Size:  53 words,	Routine Base:  $CODE$ + 0322
; Maximum stack depth per invocation:  9 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  23
X03.52		DTL_SETUP					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (7)

;	  0927	%routine ('DTL_SETUP', REQ: ref REQUEST_BLOCK, ACCEPTABLE_PARAMETERS: VECTOR) =
;	  0928	
;	  0929	!++
;	  0930	! Functional description:
;	  0931	!
;	  0932	!	This routine does setup for LOAD, DUMP and TRIGGER.  It allocates
;	  0933	!	the service block that is used to control the process and sets up
;	  0934	!	its parameters.  All parameters that have no default value and that
;	  0935	!	have not been specified will be given "NA" values: -1 for $integer's
;	  0936	!	and the null pointer for pointers.
;	  0937	!
;	  0938	!
;	  0939	! Formal parameters:
;	  0940	!
;	  0941	!	.REQ			NML Request Block address.
;	  0942	!	.ACCEPTABLE_PARAMETERS	A list of the acceptable parameters for
;	  0943	!				the request type being done.
;	  0944	!
;	  0945	! Implicit inputs: none
;	  0946	!
;	  0947	! Routine value:
;	  0948	!
;	  0949	!	 1	Success: setup done
;	  0950	!	-1	Failure: one or more essential parameters are missing, or an
;	  0951	!			 specified parameter was invalid.  The MOP buffer,
;	  0952	!			 the service block and the NICE response buffer have
;	  0953	!			 been allocated.
;	  0954	!	-3	Failure: the routine was not able to allocate a service block
;	  0955	!			 plus a MOP buffer.  The NICE response buffer has been
;	  0956	!			 allocated.
;	  0957	!	-4	Failure: the routine was not able to allocate a NICE response
;	  0958	!			 buffer.  The service block and the MOP buffer were
;	  0959	!			 not allocated.
;	  0960	!
;	  0961	! Side effects: none.
;	  0962	!
;	  0963	!--
;	  0964	
;	  0965	    begin
;	  0966	
;	  0967	    label
;	  0968	        CHECK_PARAMETERS;
;	  0969	
;	  0970	    local
;	  0971		RET,
;	  0972		BUFFER,
;	  0973		SB: ref SERVICE_DATA_BLOCK;
;	  0974	
;	  0975	    macro                               ! Synonym for response buffer pointer
;	  0976	         RESPONSE_PTR = ch$ptr (.REQ [RB_RESPONSE],, 8) %;
;	  0977	
;	  0978	    REQ[RB_DTL_DATA] = 0;
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  24
X03.52		DTL_SETUP					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (7)

;	  0979	    RET = 1;
;	  0980	
;	  0981	    !
;	  0982	    ! Allocate NICE response buffer.
;	  0983	    !
;	  0984	
;	  0985	    REQ[RB_RESPONSE_ALLOCATION] = RESPONSE_BUFFER_ALLOCATION ;
;	  0986	    if (REQ[RB_RESPONSE] = NMU$MEMORY_GET (.REQ[RB_RESPONSE_ALLOCATION])) eql 0
;	  0987	    then begin                          ! Allocation failure
;	  0988		REQ[RB_RETURN_CODE] = NICE$_REE;
;	  0989		return -4
;	  0990		end;
;	  0991	
;	  0992	    !
;	  0993	    ! Allocate a SERVICE_DATA_BLOCK plus transmit and receive MOP buffers
;	  0994	    !
;	  0995	
;	  0996	    REQ[RB_DTL_DATA_ALLOCATION] = SERVICE_DATA_BLOCK_ALLOCATION
;	  0997	        + MOP_BUFFER_ALLOCATION;
;	  0998	
;	  0999	    if (SB = NMU$MEMORY_GET (.REQ[RB_DTL_DATA_ALLOCATION])) eql 0
;	  1000	    then                                ! Allocation failure
;	  1001	        begin
;	  1002	        $RESPONSE (RESPONSE_PTR,NICE$_REE,0);
;	  1003		return -3;
;	  1004	        end;
;	  1005	
;	  1006	CHECK_PARAMETERS:
;	  1007	    begin                               ! CHECK_PARAMETERS
;	  1008	    REQ[RB_DTL_DATA] = .SB;
;	  1009	    SB[SB_BUFFER] = vector [.SB, SERVICE_DATA_BLOCK_SIZE];
;	  1010	    SB[SB_BUFFER_PTR] = ch$ptr (.SB [SB_BUFFER],, 8);
;	  1011	
;	  1012	    !
;	  1013	    ! Merge information in SERVICE_DATA_BLOCK from NML volatile data base
;	  1014	    ! for this node, and any parameters supplied on the dump request.
;	  1015	    !
;	  1016	
;	  1017	    SB [SB_RESPONSE_PTR] = RESPONSE_PTR;
;	  1018	
;	  1019	    selectone .REQ[RB_NICE_ENTITY_TYPE] of
;	  1020	        set
;	  1021	        [NODE_E]:                   ! NODE entity
;	  1022	            begin
;	  1023	            SB[SB_NODE_DATA] = .REQ[RB_NICE_ENTITY] ; ! NODE for this load
;	  1024	            SB[SB_SERVICE_CIRCUIT] = 0;
;	  1025	            end;
;	  1026	        [CIRCUIT_]:                 ! CIRCUIT entity
;	  1027	            begin
;	  1028	            SB[SB_SERVICE_CIRCUIT] = .REQ[RB_NICE_ENTITY] ; ! CIRCUIT for this load
;	  1029	            !
;	  1030	            ! Scan through the VDB looking for the circuit specified.
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  25
X03.52		DTL_SETUP					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (7)

;	  1031	            ! Set the corresponding NODE ID.
;	  1032	            !
;	  1033	            SB[SB_NODE_DATA] = NML$FIND_NDB (.REQ[RB_NICE_ENTITY]) ;
;	  1034	            end;
;	  1035	        tes;
;	  1036	
;	  1037	    !
;	  1038	    ! Set default (NA) values for all parameter fields.
;	  1039	    !
;	  1040	
;	  1041	        begin
;	  1042	        SB[SB_SERVICE_PASSWORD] = 0;
;	  1043	        SB[LB_LOAD_FILE] = 0;
;	  1044	        SB[LB_SECONDARY_LOADER] = 0;		! Set all pointer
;	  1045	        SB[LB_TERTIARY_LOADER] = 0;		! fields to the
;	  1046	        SB[LB_SOFTWARE_IDENTIFICATION] = 0;	! null pointer
;	  1047	        SB[DB_DUMP_FILE] = 0;
;	  1048	        SB[DB_SECONDARY_DUMPER] = 0;
;	  1049	        begin
;	  1050	        local PTR;
;	  1051	        PTR = ch$ptr (SB[LB_HOST],, 8);
;	  1052	        ch$wchar_a (0, PTR);            ! Node number = 0
;	  1053	        ch$wchar_a (0, PTR);
;	  1054	        ch$wchar_a (0, PTR);            ! Node name = ''
;	  1055	        end;
;	  1056	        SB[LB_NAME] = 0;
;	  1057	        SB[LB_ADDRESS] = 0;
;	  1058	
;	  1059	        SB[LB_SERVICE_DEVICE] = -1;
;	  1060	        SB[LB_CPU] = -1;
;	  1061	        SB[LB_SOFTWARE_TYPE] = -1;		! Set all
;	  1062	        %movi32 (0, SB[DB_DUMP_ADDRESS]);	! numeric fields
;	  1063	        %subi32 (1, SB[DB_DUMP_ADDRESS]);	! to -1
;	  1064	        %movi32 (0, SB[DB_DUMP_COUNT]);
;	  1065	        %subi32 (1, SB[DB_DUMP_COUNT]);
;	  1066	        end;
;	  1067	
;	  1068	    !
;	  1069	    ! Merge any parameters specified in the NICE request message.
;	  1070	    !
;	  1071	
;	  1072	    if FETCH_PARAMETERS (.REQ, .SB, .ACCEPTABLE_PARAMETERS) lss 0
;	  1073	    then leave CHECK_PARAMETERS with RET = -1; ! Problem with a parameter
;	  1074	
;	  1075	    end;                                ! CHECK_PARAMETERS
;	  1076	    !
;	  1077	    ! If there was an error, release everything we got (except the
;	  1078	    ! response buffer).
;	  1079	    !
;	  1080	
;	  1081	    if .RET lss 0
;	  1082	    then begin
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  26
X03.52		DTL_SETUP					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (7)

;	  1083	         NMU$MEMORY_RELEASE (.REQ[RB_DTL_DATA], .REQ[RB_DTL_DATA_ALLOCATION]);
;	  1084	         REQ[RB_DTL_DATA] = 0;
;	  1085	         end;
;	  1086	
;	  1087	    .RET
;	  1088	
;	  1089	    end;			! End of DTL_SETUP


						.GLOBL	$SUB32


						.SBTTL	DTL.SETUP DTL_SETUP
000000	004167  000000G			DTL.SETUP:
						JSR	R1,$SAVE5			;					0927
000004	024646 					CMP	-(SP),-(SP)
000006	016603  000024 				MOV	24(SP),R3			; REQ,*					0978
000012	012746  000112 				MOV	#112,-(SP)
000016	060316 					ADD	R3,(SP)
000020	005076  000000 				CLR	@0(SP)
000024	012704  000001 				MOV	#1,R4				; *,RET					0979
000030	012763  000400  000036 			MOV	#400,36(R3)			;					0985
000036	012701  000026 				MOV	#26,R1				;					0986
000042	060301 					ADD	R3,R1
000044	012746  000400 				MOV	#400,-(SP)
000050	004767  000000G				JSR	PC,UM.GET
000054	005726 					TST	(SP)+
000056	010011 					MOV	R0,(R1)
000060	001006 					BNE	1$
000062	112763  000361  000116 			MOVB	#361,116(R3)			;					0988
000070	012700  177774 				MOV	#-4,R0				;					0987
000074	000423 					BR	2$
000076	012705  000114 			1$:	MOV	#114,R5				;					0996
000102	060305 					ADD	R3,R5
000104	012715  001077 				MOV	#1077,(R5)
000110	011546 					MOV	(R5),-(SP)			;					0999
000112	004767  000000G				JSR	PC,UM.GET
000116	005726 					TST	(SP)+
000120	010002 					MOV	R0,R2				; *,SB
000122	001011 					BNE	3$
000124	011100 					MOV	(R1),R0				; *,STRPTR				1002
000126	112720  000361 				MOVB	#361,(R0)+			; *,STRPTR
000132	105020 					CLRB	(R0)+				; STRPTR
000134	105020 					CLRB	(R0)+				; STRPTR
000136	105010 					CLRB	(R0)				; STRPTR
000140	012700  177775 				MOV	#-3,R0				;					1001
000144	000574 				2$:	BR	8$
000146	010276  000000 			3$:	MOV	R2,@0(SP)			; SB,*					1008
000152	010262  000004 				MOV	R2,4(R2)			; SB,*(SB)				1009
000156	062762  000066  000004 			ADD	#66,4(R2)			; *,*(SB)
000164	016262  000004  000006 			MOV	4(R2),6(R2)			; *(SB),*(SB)				1010
000172	011162  000002 				MOV	(R1),2(R2)			; *,*(SB)				1017
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  27
X03.52		DTL_SETUP					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (7)

000176	005000 					CLR	R0				;					1019
000200	156300  000074 				BISB	74(R3),R0
000204	005700 					TST	R0
000206	001006 					BNE	4$
000210	016362  000102  000010 			MOV	102(R3),10(R2)			; *,*(SB)				1023
000216	005062  000012 				CLR	12(R2)				; *(SB)					1024
000222	000415 					BR	5$				;					1019
000224	020027  000003 			4$:	CMP	R0,#3
000230	001012 					BNE	5$
000232	016362  000102  000012 			MOV	102(R3),12(R2)			; *,*(SB)				1028
000240	016346  000102 				MOV	102(R3),-(SP)			;					1033
000244	004767  000000G				JSR	PC,NL.VFN
000250	010062  000010 				MOV	R0,10(R2)			; *,*(SB)
000254	005726 					TST	(SP)+				;					1027
000256	005062  000014 			5$:	CLR	14(R2)				; *(SB)					1042
000262	005062  000016 				CLR	16(R2)				; *(SB)					1043
000266	005062  000020 				CLR	20(R2)				; *(SB)					1044
000272	005062  000022 				CLR	22(R2)				; *(SB)					1045
000276	005062  000024 				CLR	24(R2)				; *(SB)					1046
000302	005062  000026 				CLR	26(R2)				; *(SB)					1047
000306	005062  000030 				CLR	30(R2)				; *(SB)					1048
000312	010200 					MOV	R2,R0				; SB,PTR				1051
000314	062700  000046 				ADD	#46,R0				; *,PTR
000320	105020 					CLRB	(R0)+				; PTR					1052
000322	105020 					CLRB	(R0)+				; PTR					1053
000324	105010 					CLRB	(R0)				; PTR					1054
000326	005062  000032 				CLR	32(R2)				; *(SB)					1056
000332	005062  000034 				CLR	34(R2)				; *(SB)					1057
000336	112762  000377  000057 			MOVB	#377,57(R2)			; *,*(SB)				1059
000344	112762  000377  000060 			MOVB	#377,60(R2)			; *,*(SB)				1060
000352	112762  000377  000061 			MOVB	#377,61(R2)			; *,*(SB)				1061
000360	012701  000036 				MOV	#36,R1				;					1062
000364	060201 					ADD	R2,R1				; SB,*
000366	005011 					CLR	(R1)
000370	005061  000002 				CLR	2(R1)
000374	012766  000001  000002 			MOV	#1,2(SP)			; *,$$MOVI32.TARGET			1063
000402	005066  000004 				CLR	4(SP)				; $$MOVI32.TARGET+2
000406	012700  000002 				MOV	#2,R0
000412	060600 					ADD	SP,R0				; $$SUBI32.C,*
000414	004767  000000G				JSR	PC,$SUB32
000420	012701  000042 				MOV	#42,R1				;					1064
000424	060201 					ADD	R2,R1				; SB,*
000426	005011 					CLR	(R1)
000430	005061  000002 				CLR	2(R1)
000434	012766  000001  000002 			MOV	#1,2(SP)			; *,$$MOVI32.TARGET			1065
000442	005066  000004 				CLR	4(SP)				; $$MOVI32.TARGET+2
000446	012700  000002 				MOV	#2,R0
000452	060600 					ADD	SP,R0				; $$SUBI32.C,*
000454	004767  000000G				JSR	PC,$SUB32
000460	010346 					MOV	R3,-(SP)			;					1072
000462	010246 					MOV	R2,-(SP)			; SB,*
000464	016646  000030 				MOV	30(SP),-(SP)			; ACCEPTABLE.PARA,*
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  28
X03.52		DTL_SETUP					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (7)

000470	004767  000000V				JSR	PC,FETCH.PARAMETERS
000474	062706  000006 				ADD	#6,SP
000500	005700 					TST	R0
000502	002002 					BGE	6$
000504	012704  177777 				MOV	#-1,R4				; *,RET					1073
000510	005704 				6$:	TST	R4				; RET					1081
000512	002010 					BGE	7$
000514	017646  000000 				MOV	@0(SP),-(SP)			;					1083
000520	011546 					MOV	(R5),-(SP)
000522	004767  000000G				JSR	PC,UM.RELEASE
000526	005076  000004 				CLR	@4(SP)				;					1084
000532	022626 					CMP	(SP)+,(SP)+			;					1082
000534	010400 				7$:	MOV	R4,R0				; RET,*					0927
000536	062706  000006 			8$:	ADD	#6,SP
000542	000207 					RTS	PC
; Routine Size:  178 words,	Routine Base:  $CODE$ + 0474
; Maximum stack depth per invocation:  13 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  29
X03.52		DTL_CLEANUP					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (8)

;	  1090	%routine ('DTL_CLEANUP', REQ: ref REQUEST_BLOCK, RTN_COD) =
;	  1091	
;	  1092	!++
;	  1093	! Functional description:
;	  1094	!
;	  1095	!	None
;	  1096	!
;	  1097	! Formal parameters:
;	  1098	!
;	  1099	!	.REQ			NML Request Block address.
;	  1100	!       RTN_COD                 Current NICE return code
;	  1101	!
;	  1102	! Implicit inputs: none
;	  1103	!
;	  1104	! Routine value:
;	  1105	!
;	  1106	!	return code
;	  1107	! 
;	  1108	! Side effects: none.
;	  1109	!
;	  1110	!--
;	  1111	
;	  1112	    begin
;	  1113	
;	  1114	    macro                               ! Synonym for response buffer pointer
;	  1115	         RESPONSE_PTR = ch$ptr (.REQ [RB_RESPONSE],, 8) %;
;	  1116	
;	  1117	    !
;	  1118	    ! Deallocate service blocks
;	  1119	    !
;	  1120	
;	  1121	    if .REQ[RB_DTL_DATA] neqa 0
;	  1122	    then NMU$MEMORY_RELEASE (.REQ[RB_DTL_DATA],.REQ[RB_DTL_DATA_ALLOCATION]) ;
;	  1123	
;	  1124	    !
;	  1125	    ! If successful, build NICE repsonse message with success code.
;	  1126	    !
;	  1127	
;	  1128	    if .RTN_COD eql NICE$_SUC
;	  1129	    then begin
;	  1130	         REQ [RB_RESPONSE_LENGTH] = $RESPONSE (RESPONSE_PTR, NICE$_SUC, 0) ;
;	  1131	         NML$REQUEST_FINISH (.REQ) ;
;	  1132	         end
;	  1133	    else if ch$rchar (RESPONSE_PTR) neq 0
;	  1134	         then
;	  1135	             REQ [RB_RESPONSE_LENGTH] = $RESPONSE_LENGTH (RESPONSE_PTR);
;	  1136	
;	  1137	    .RTN_COD 
;	  1138	    end;			! End of DTL_CLEANUP


						.SBTTL	DTL.CLEANUP DTL_CLEANUP
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  30
X03.52		DTL_CLEANUP					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (8)

000000	010146 				DTL.CLEANUP:
						MOV	R1,-(SP)			;					1090
000002	016601  000006 				MOV	6(SP),R1			; REQ,*					1121
000006	016100  000112 				MOV	112(R1),R0
000012	001406 					BEQ	1$
000014	010046 					MOV	R0,-(SP)			;					1122
000016	016146  000114 				MOV	114(R1),-(SP)
000022	004767  000000G				JSR	PC,UM.RELEASE
000026	022626 					CMP	(SP)+,(SP)+
000030	026627  000004  000001 		1$:	CMP	4(SP),#1			; RTN.COD,*				1128
000036	001021 					BNE	2$
000040	016100  000026 				MOV	26(R1),R0			; *,STRPTR				1130
000044	112720  000001 				MOVB	#1,(R0)+			; *,STRPTR
000050	105020 					CLRB	(R0)+				; STRPTR
000052	105020 					CLRB	(R0)+				; STRPTR
000054	105020 					CLRB	(R0)+				; STRPTR
000056	010061  000034 				MOV	R0,34(R1)			; STRPTR,*
000062	166161  000026  000034 			SUB	26(R1),34(R1)
000070	010146 					MOV	R1,-(SP)			;					1131
000072	004767  000000G				JSR	PC,NL.FINISH
000076	005726 					TST	(SP)+				;					1129
000100	000415 					BR	3$				;					1128
000102	016100  000026 			2$:	MOV	26(R1),R0			;					1133
000106	105710 					TSTB	(R0)
000110	001411 					BEQ	3$
000112	062700  000003 				ADD	#3,R0				; *,STRPTR				1135
000116	112061  000034 				MOVB	(R0)+,34(R1)			; STRPTR,*
000122	105061  000035 				CLRB	35(R1)
000126	062761  000004  000034 			ADD	#4,34(R1)
000134	016600  000004 			3$:	MOV	4(SP),R0			; RTN.COD,*				1090
000140	012601 					MOV	(SP)+,R1
000142	000207 					RTS	PC
; Routine Size:  50 words,	Routine Base:  $CODE$ + 1240
; Maximum stack depth per invocation:  4 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  31
X03.52		CIRCUIT_CLOSE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (9)

;	  1139	%routine ('CIRCUIT_CLOSE', DB : ref SERVICE_DATA_BLOCK) : NML_LKG_DB =
;	  1140	
;	  1141	!++
;	  1142	! Functional description
;	  1143	!
;	  1144	!        This routine closes the circuit.
;	  1145	!
;	  1146	! Formal parameters
;	  1147	!
;	  1148	!    .DB      Address of the service data block
;	  1149	!
;	  1150	! Implicit inputs: none
;	  1151	!
;	  1152	! Routine value:
;	  1153	!
;	  1154	!    $true    Circuit successfully closed
;	  1155	!
;	  1156	! Side effects: none
;	  1157	!
;	  1158	!--
;	  1159	
;	  1160	    begin
;	  1161	
;	  1162	    !
;	  1163	    ! Set the substate back to something reasonable
;	  1164	    !
;	  1165	
;	  1166	    if .DB[SB_AUTOSERVICE]
;	  1167	    then DB[SB_SUBSTATE] = LINK_AUTOSERVICE
;	  1168	    else DB[SB_SUBSTATE] = LINK_NO_SUBSTATE;
;	  1169	
;	  1170	    SET_SUBSTATE (.DB);
;	  1171	    $NMU_DLX_CLOSE (.DB[SB_CIRCUIT_HANDLE]);
;	  1172	
;	L 1173	%if $TOPS20
;	U 1174	%then
;	U 1175	    !
;	U 1176	    ! If circuit state is ON then initialize the circuit
;	U 1177	    !
;	U 1178	
;	U 1179	    if (.DB [SB_USAGE] eql DLX_LOAD) and
;	U 1180	       (ch$rchar (.DB[SB_RESPONSE_PTR]) eql NICE$_SUC)
;	U 1181	    then begin
;	U 1182	
;	U 1183	         local
;	U 1184	             CIRCUIT_STATE;
;	U 1185	
;	U 1186	         if not NML$GET_VDB_PARAMETER (CIRCUIT_, .DB [SB_SERVICE_CIRCUIT],
;	U 1187	                                       CPARM_STATE, CIRCUIT_STATE)
;	U 1188	         then CIRCUIT_STATE = LINK_ON;
;	U 1189	
;	U 1190	         selectoneu .CIRCUIT_STATE of
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  32
X03.52		CIRCUIT_CLOSE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (9)

;	U 1191	             set
;	U 1192	             [LINK_ON]:
;	U 1193	                 $NMU_DLX_INITIALIZE (.DB[SB_CIRCUIT_HANDLE],
;	U 1194	                                      .DB[SB_RESPONSE_PTR]);
;	U 1195	             [otherwise]:
;	U 1196	                 ;
;	U 1197	             tes;
;	U 1198	
;	U 1199	         end;
;	  1200	%fi
;	  1201	
;	  1202	    $true
;	  1203	    end;				!End of CIRCUIT_CLOSE


						.GLOBL	UD.CLOSE


						.SBTTL	CIRCUIT.CLOSE CIRCUIT_CLOSE
000000	132765  000001  000064 		CIRCUIT.CLOSE:
						BITB	#1,64(R5)			; *,*(DB)				1166
000006	001404 					BEQ	1$
000010	112765  000006  000063 			MOVB	#6,63(R5)			; *,*(DB)				1167
000016	000403 					BR	2$				;					1166
000020	112765  000377  000063 		1$:	MOVB	#377,63(R5)			; *,*(DB)				1168
000026	004767  000000V			2$:	JSR	PC,SET.SUBSTATE			;					1170
000032	011546 					MOV	(R5),-(SP)			; DB,*					1171
000034	004767  000000G				JSR	PC,UD.CLOSE
000040	005726 					TST	(SP)+				;					1160
000042	012700  000001 				MOV	#1,R0				;					1139
000046	000207 					RTS	PC
; Routine Size:  20 words,	Routine Base:  $CODE$ + 1404
; Maximum stack depth per invocation:  2 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  33
X03.52		CIRCUIT_OPEN					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (10)

;	  1204	%routine ('CIRCUIT_OPEN', DB : ref SERVICE_DATA_BLOCK) : NML_LKG_DB =
;	  1205	
;	  1206	!++
;	  1207	! Functional description
;	  1208	!
;	  1209	!        This routine opens the service circuit.
;	  1210	!
;	  1211	! Formal parameters
;	  1212	!
;	  1213	!    .DB      Address of the service data block
;	  1214	!
;	  1215	! Implicit inputs: none
;	  1216	!
;	  1217	! Routine value:
;	  1218	!
;	  1219	!    $true    Service circuit successfully opened
;	  1220	!    $false   Error in opening circuit - response set
;	  1221	!
;	  1222	! Side effects: none
;	  1223	!
;	  1224	!--
;	  1225	
;	  1226	    begin
;	  1227	    local
;	  1228	         CIRCUIT_HANDLE,
;	  1229	         SERVICE_CIRCUIT;
;	  1230	
;	  1231	    if .DB [SB_SERVICE_CIRCUIT] eqla 0
;	  1232	    then
;	  1233	        if not NML$GET_VDB_PARAMETER (NODE_E, ! CIRCUIT for this load
;	  1234	                                      .DB[SB_NODE_DATA],
;	  1235	                                      110,     ! SERVICE CIRCUIT
;	  1236	                                      DB [SB_SERVICE_CIRCUIT])
;	  1237	        then
;	  1238	            begin
;	  1239	            $RESPONSE_X (.DB[SB_RESPONSE_PTR],NICE$_PAM,110);
;	  1240	            return $false;
;	  1241	            end;
;	  1242	
;	  1243	    !
;	  1244	    ! Check the circuit state for ON or SERVICE
;	  1245	    !
;	  1246	
;	  1247	    begin
;	  1248	
;	  1249	    local
;	  1250	        CIRCUIT_STATE;
;	  1251	
;	  1252	    if not NML$GET_VDB_PARAMETER (CIRCUIT_, .DB [SB_SERVICE_CIRCUIT],
;	  1253	                                  CPARM_STATE, CIRCUIT_STATE)
;	  1254	    then CIRCUIT_STATE = LINK_ON;
;	  1255	
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  34
X03.52		CIRCUIT_OPEN					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (10)

;	  1256	    selectoneu .CIRCUIT_STATE of
;	  1257	        set
;	  1258	        [LINK_ON, LINK_SERVICE]:
;	  1259	            ;
;	  1260	        [otherwise]:
;	  1261	            begin
;	  1262	            $RESPONSE (.DB[SB_RESPONSE_PTR],NICE$_CWS,CIRCUIT_);
;	  1263	            return $false;
;	  1264	            end;
;	  1265	        tes;
;	  1266	
;	  1267	    end;
;	  1268	
;	  1269	    !
;	  1270	    ! Check the service state for ENABLED
;	  1271	    !
;	  1272	
;	  1273	    begin
;	  1274	
;	  1275	    local
;	  1276	        CIRCUIT_SERVICE;
;	  1277	
;	  1278	    if not NML$GET_VDB_PARAMETER (CIRCUIT_, .DB [SB_SERVICE_CIRCUIT],
;	  1279	                                  CPARM_SERVICE, CIRCUIT_SERVICE)
;	  1280	    then CIRCUIT_SERVICE = LINK_DISABLED;
;	  1281	
;	  1282	    selectoneu .CIRCUIT_SERVICE of
;	  1283	        set
;	  1284	        [LINK_ENABLED]:
;	  1285	            ;
;	  1286	        [otherwise]:
;	  1287	            begin
;	  1288	            $RESPONSE (.DB[SB_RESPONSE_PTR],NICE$_CWS,CIRCUIT_);
;	  1289	            return $false;
;	  1290	            end;
;	  1291	        tes;
;	  1292	
;	  1293	    end;
;	  1294	
;	  1295	    !
;	  1296	    ! Check the circuit substate.
;	  1297	    ! If no substate, then we can go ahead.
;	  1298	    ! If autoservice, remember the fact.
;	  1299	    ! Otherwise abort the request.
;	  1300	    !
;	  1301	
;	  1302	    begin
;	  1303	
;	  1304	    local
;	  1305	        CIRCUIT_SUBSTATE;
;	  1306	
;	  1307	    if not NML$GET_VDB_PARAMETER (CIRCUIT_, .DB [SB_SERVICE_CIRCUIT],
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  35
X03.52		CIRCUIT_OPEN					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (10)

;	  1308	                                  CPARM_SUBSTATE, CIRCUIT_SUBSTATE)
;	  1309	    then CIRCUIT_SUBSTATE = LINK_NO_SUBSTATE;
;	  1310	
;	  1311	    DB[SB_SUBSTATE] = .CIRCUIT_SUBSTATE;
;	  1312	
;	  1313	    selectoneu .CIRCUIT_SUBSTATE of
;	  1314	        set
;	  1315	        [LINK_NO_SUBSTATE, LINK_FAILED]:
;	  1316	            DB[SB_AUTOSERVICE] = $false;
;	  1317	        [LINK_AUTOSERVICE]:
;	  1318	            DB[SB_AUTOSERVICE] = $true;
;	  1319	        [otherwise]:
;	  1320	            begin
;	  1321	            $RESPONSE (.DB[SB_RESPONSE_PTR],NICE$_CWS,CIRCUIT_);
;	  1322	            return $false;
;	  1323	            end;
;	  1324	        tes;
;	  1325	
;	  1326	    end;
;	P 1327	    CIRCUIT_HANDLE = $NMU_DLX_OPEN (.DB [SB_USAGE], .DB [SB_SERVICE_CIRCUIT],
;	  1328	                                   .DB [SB_RESPONSE_PTR]);
;	  1329	
;	  1330	    if .CIRCUIT_HANDLE leq 0 then return $false;
;	  1331	
;	  1332	    DB [SB_CIRCUIT_HANDLE] = .CIRCUIT_HANDLE;
;	  1333	
;	  1334	    !
;	  1335	    ! Set the substate for the requested operation
;	  1336	    !
;	  1337	
;	  1338	    selectone .DB [SB_USAGE] of
;	  1339	        set
;	  1340	        [DLX_LOAD]:
;	  1341	            if .DB[SB_AUTOSERVICE]
;	  1342	            then DB[SB_SUBSTATE] = LINK_AUTOLOADING
;	  1343	            else DB[SB_SUBSTATE] = LINK_LOADING;
;	  1344	        [DLX_DUMP]:
;	  1345	            if .DB[SB_AUTOSERVICE]
;	  1346	            then DB[SB_SUBSTATE] = LINK_AUTODUMPING
;	  1347	            else DB[SB_SUBSTATE] = LINK_DUMPING;
;	  1348	        [otherwise]:
;	  1349	            if .DB[SB_AUTOSERVICE]
;	  1350	            then DB[SB_SUBSTATE] = LINK_AUTOTRIGGERING
;	  1351	            else DB[SB_SUBSTATE] = LINK_TRIGGERING;
;	  1352	        tes;
;	  1353	
;	  1354	    SET_SUBSTATE (.DB);
;	  1355	    $true
;	  1356	    end;				!End of CIRCUIT_OPEN


						.GLOBL	UD.OPEN
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  36
X03.52		CIRCUIT_OPEN					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (10)



						.SBTTL	CIRCUIT.OPEN CIRCUIT_OPEN
000000	004167  000000G			CIRCUIT.OPEN:
						JSR	R1,$SAVE2			;					1204
000004	162706  000006 				SUB	#6,SP
000010	012702  000012 				MOV	#12,R2				;					1231
000014	060502 					ADD	R5,R2				; DB,*
000016	005712 					TST	(R2)
000020	001023 					BNE	1$
000022	005046 					CLR	-(SP)				;					1233
000024	016546  000010 				MOV	10(R5),-(SP)			; *(DB),*
000030	012746  000156 				MOV	#156,-(SP)
000034	010246 					MOV	R2,-(SP)
000036	004767  000000G				JSR	PC,NL.VGP
000042	062706  000010 				ADD	#10,SP
000046	006000 					ROR	R0
000050	103407 					BLO	1$
000052	016500  000002 				MOV	2(R5),R0			; *(DB),STRPTR				1239
000056	112720  000343 				MOVB	#343,(R0)+			; *,STRPTR
000062	112710  000156 				MOVB	#156,(R0)			; *,STRPTR
000066	000526 					BR	9$
000070	012746  000003 			1$:	MOV	#3,-(SP)			;					1252
000074	011246 					MOV	(R2),-(SP)
000076	005046 					CLR	-(SP)
000100	012746  000014 				MOV	#14,-(SP)
000104	060616 					ADD	SP,(SP)				; CIRCUIT.STATE,*
000106	004767  000000G				JSR	PC,NL.VGP
000112	062706  000010 				ADD	#10,SP
000116	006000 					ROR	R0
000120	103402 					BLO	2$
000122	005066  000004 				CLR	4(SP)				; CIRCUIT.STATE				1254
000126	016600  000004 			2$:	MOV	4(SP),R0			; CIRCUIT.STATE,*			1256
000132	001403 					BEQ	3$
000134	020027  000002 				CMP	R0,#2
000140	001073 					BNE	8$				;					1262
000142	012746  000003 			3$:	MOV	#3,-(SP)			;					1278
000146	011246 					MOV	(R2),-(SP)
000150	012746  000144 				MOV	#144,-(SP)
000154	012746  000012 				MOV	#12,-(SP)
000160	060616 					ADD	SP,(SP)				; CIRCUIT.SERVICE,*
000162	004767  000000G				JSR	PC,NL.VGP
000166	062706  000010 				ADD	#10,SP
000172	006000 					ROR	R0
000174	103403 					BLO	4$
000176	012766  000001  000002 			MOV	#1,2(SP)			; *,CIRCUIT.SERVICE			1280
000204	016600  000002 			4$:	MOV	2(SP),R0			; CIRCUIT.SERVICE,*			1282
000210	001047 					BNE	8$				;					1288
000212	012746  000003 				MOV	#3,-(SP)			;					1307
000216	011246 					MOV	(R2),-(SP)
000220	012746  000001 				MOV	#1,-(SP)
000224	012746  000010 				MOV	#10,-(SP)
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  37
X03.52		CIRCUIT_OPEN					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (10)

000230	060616 					ADD	SP,(SP)				; CIRCUIT.SUBSTAT,*
000232	004767  000000G				JSR	PC,NL.VGP
000236	062706  000010 				ADD	#10,SP
000242	006000 					ROR	R0
000244	103402 					BLO	5$
000246	012716  177777 				MOV	#-1,(SP)			; *,CIRCUIT.SUBSTAT			1309
000252	012701  000062 			5$:	MOV	#62,R1				;					1311
000256	060501 					ADD	R5,R1				; DB,*
000260	011600 					MOV	(SP),R0				; CIRCUIT.SUBSTAT,*
000262	110061  000001 				MOVB	R0,1(R1)
000266	020027  000013 				CMP	R0,#13				;					1313
000272	001403 					BEQ	6$
000274	020027  177777 				CMP	R0,#-1
000300	001004 					BNE	7$
000302	142765  000001  000064 		6$:	BICB	#1,64(R5)			; *,*(DB)				1316
000310	000421 					BR	10$				;					1313
000312	020027  000006 			7$:	CMP	R0,#6
000316	001004 					BNE	8$
000320	152765  000001  000064 			BISB	#1,64(R5)			; *,*(DB)				1318
000326	000412 					BR	10$				;					1313
000330	016500  000002 			8$:	MOV	2(R5),R0			; *(DB),STRPTR				1321
000334	112720  000365 				MOVB	#365,(R0)+			; *,STRPTR
000340	112710  000003 				MOVB	#3,(R0)				; *,STRPTR
000344	005200 				9$:	INC	R0				; STRPTR
000346	105020 					CLRB	(R0)+				; STRPTR
000350	105020 					CLRB	(R0)+				; STRPTR
000352	000413 					BR	11$				;					1320
000354	111100 				10$:	MOVB	(R1),R0				;					1328
000356	010046 					MOV	R0,-(SP)
000360	011246 					MOV	(R2),-(SP)
000362	016546  000002 				MOV	2(R5),-(SP)			; *(DB),*
000366	004767  000000G				JSR	PC,UD.OPEN
000372	005700 					TST	R0				; CIRCUIT.HANDLE			1330
000374	003004 					BGT	12$
000376	062706  000006 				ADD	#6,SP
000402	005000 				11$:	CLR	R0
000404	000460 					BR	19$
000406	010015 				12$:	MOV	R0,(R5)				; CIRCUIT.HANDLE,DB			1332
000410	121127  000001 				CMPB	(R1),#1				;					1338
000414	001014 					BNE	14$
000416	132765  000001  000064 			BITB	#1,64(R5)			; *,*(DB)				1341
000424	001404 					BEQ	13$
000426	112761  000007  000001 			MOVB	#7,1(R1)			;					1342
000434	000436 					BR	18$				;					1341
000436	112761  000003  000001 		13$:	MOVB	#3,1(R1)			;					1343
000444	000432 					BR	18$				;					1338
000446	121127  000002 			14$:	CMPB	(R1),#2
000452	001014 					BNE	16$
000454	132765  000001  000064 			BITB	#1,64(R5)			; *,*(DB)				1345
000462	001404 					BEQ	15$
000464	112761  000010  000001 			MOVB	#10,1(R1)			;					1346
000472	000417 					BR	18$				;					1345
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  38
X03.52		CIRCUIT_OPEN					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (10)

000474	112761  000004  000001 		15$:	MOVB	#4,1(R1)			;					1347
000502	000413 					BR	18$				;					1338
000504	132765  000001  000064 		16$:	BITB	#1,64(R5)			; *,*(DB)				1349
000512	001404 					BEQ	17$
000514	112761  000011  000001 			MOVB	#11,1(R1)			;					1350
000522	000403 					BR	18$				;					1349
000524	112761  000005  000001 		17$:	MOVB	#5,1(R1)			;					1351
000532	004767  000000V			18$:	JSR	PC,SET.SUBSTATE			;					1354
000536	062706  000006 				ADD	#6,SP				;					1226
000542	012700  000001 				MOV	#1,R0				;					1204
000546	062706  000006 			19$:	ADD	#6,SP
000552	000207 					RTS	PC
; Routine Size:  182 words,	Routine Base:  $CODE$ + 1454
; Maximum stack depth per invocation:  11 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  39
X03.52		CIRCUIT_PROMPT					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (11)

;	  1357	%routine ('CIRCUIT_PROMPT', DB : ref SERVICE_DATA_BLOCK) : NML_LKG_DB =
;	  1358	
;	  1359	!++
;	  1360	! Functional description
;	  1361	!
;	  1362	!        This routine prompts for a message retransmission over the circuit
;	  1363	!        by sending a truncated MOP_MODE_RUNNING message.
;	  1364	!
;	  1365	! Formal parameters
;	  1366	!
;	  1367	!    .DB      Address of the service data block
;	  1368	!
;	  1369	! Implicit inputs: none
;	  1370	!
;	  1371	! Routine value:
;	  1372	!
;	  1373	!    $true    Prompted successfully
;	  1374	!    $false   Error in transmission - response set
;	  1375	!
;	  1376	! Side effects: none
;	  1377	!
;	  1378	!--
;	  1379	
;	  1380	    begin
;	P 1381	    $NMU_DLX_WRITE (.DB[SB_CIRCUIT_HANDLE], DLX_OTHER,
;	P 1382	                    ch$ptr (uplit (%char(MOP_MODE_RUNNING)),, 8), 1,
;	  1383	                    .DB [SB_RESPONSE_PTR])
;	  1384	    end;				!End of CIRCUIT_PROMPT



000054						.PSECT	$PLIT$,  RO ,  D  
000054	   014     000 			P.AAD:	.ASCII	<14><00>


						.GLOBL	UD.WRITE


						.SBTTL	CIRCUIT.PROMPT CIRCUIT_PROMPT
002230						.PSECT	$CODE$,  RO 

000000	011546 				CIRCUIT.PROMPT:
						MOV	(R5),-(SP)			; DB,*					1383
000002	012746  000004 				MOV	#4,-(SP)
000006	012746  000054'				MOV	#P.AAD,-(SP)
000012	012746  000001 				MOV	#1,-(SP)
000016	016546  000002 				MOV	2(R5),-(SP)			; *(DB),*
000022	004767  000000G				JSR	PC,UD.WRITE
000026	062706  000012 				ADD	#12,SP				;					1380
000032	000207 					RTS	PC				;					1357
; Routine Size:  14 words,	Routine Base:  $CODE$ + 2230
; Maximum stack depth per invocation:  6 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  40
X03.52		CPU_IS_PDP11					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (12)

;	  1385	%routine ('CPU_IS_PDP11', DB : ref SERVICE_DATA_BLOCK) : NML_LKG_DB =
;	  1386	
;	  1387	!++
;	  1388	! Functional description
;	  1389	!
;	  1390	!        This routine checks that the CPU parameter is PDP11.
;	  1391	!
;	  1392	! Formal parameters
;	  1393	!
;	  1394	!    .DB      Address of the service data block
;	  1395	!
;	  1396	! Implicit inputs: none
;	  1397	!
;	  1398	! Routine value:
;	  1399	!
;	  1400	!    $true    CPU parameter is PDP11
;	  1401	!    $false   Not PDP11 - response set
;	  1402	!
;	  1403	! Side effects: none
;	  1404	!
;	  1405	!--
;	  1406	
;	  1407	    begin
;	  1408	    local
;	  1409	         CPU;
;	  1410	
;	  1411	    if (CPU = .DB [LB_CPU]) eql -1
;	  1412	    then
;	  1413	        if not NML$GET_VDB_PARAMETER (NODE_E,
;	  1414	                                      .DB [SB_NODE_DATA],
;	  1415	                                       113,
;	  1416	                                       CPU)
;	  1417	        then
;	  1418	            begin
;	  1419	            $RESPONSE_X (.DB [SB_RESPONSE_PTR], NICE$_PAM, 113);
;	  1420	            return $false;
;	  1421	            end;
;	  1422	
;	  1423	    if .CPU neq CPU_PDP11
;	  1424	    then
;	  1425	        begin
;	  1426	        $RESPONSE_X (.DB [SB_RESPONSE_PTR], NICE$_IPV, 113);
;	  1427	        return $false;
;	  1428	        end;
;	  1429	
;	  1430	    $true
;	  1431	    end;				!End of CPU_IS_PDP11


						.SBTTL	CPU.IS.PDP11 CPU_IS_PDP11
000000	004167  000000G			CPU.IS.PDP11:
						JSR	R1,$SAVE5			;					1385
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  41
X03.52		CPU_IS_PDP11					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (12)

000004	010501 					MOV	R5,R1				; *,DB
000006	116105  000060 				MOVB	60(R1),R5			; *(DB),*				1411
000012	010546 					MOV	R5,-(SP)			; *,CPU
000014	005205 					INC	R5
000016	001023 					BNE	1$
000020	005046 					CLR	-(SP)				;					1413
000022	016146  000010 				MOV	10(R1),-(SP)			; *(DB),*
000026	012746  000161 				MOV	#161,-(SP)
000032	012746  000010 				MOV	#10,-(SP)
000036	060616 					ADD	SP,(SP)				; CPU,*
000040	004767  000000G				JSR	PC,NL.VGP
000044	062706  000010 				ADD	#10,SP
000050	006000 					ROR	R0
000052	103405 					BLO	1$
000054	016100  000002 				MOV	2(R1),R0			; *(DB),STRPTR				1419
000060	112710  000343 				MOVB	#343,(R0)			; *,STRPTR
000064	000407 					BR	2$
000066	021627  000001 			1$:	CMP	(SP),#1				; CPU,*					1423
000072	001413 					BEQ	3$
000074	016100  000002 				MOV	2(R1),R0			; *(DB),STRPTR				1426
000100	112710  000360 				MOVB	#360,(R0)			; *,STRPTR
000104	005200 				2$:	INC	R0				; STRPTR
000106	112720  000161 				MOVB	#161,(R0)+			; *,STRPTR
000112	105020 					CLRB	(R0)+				; STRPTR
000114	105010 					CLRB	(R0)				; STRPTR
000116	005000 					CLR	R0				;					1425
000120	000402 					BR	4$
000122	012700  000001 			3$:	MOV	#1,R0				;					1385
000126	005726 				4$:	TST	(SP)+
000130	000207 					RTS	PC
; Routine Size:  45 words,	Routine Base:  $CODE$ + 2264
; Maximum stack depth per invocation:  12 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  42
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

;	  1432	%routine ('DUMP_NODE', DATA : ref SERVICE_DATA_BLOCK) : NML_LKG_DB =
;	  1433	
;	  1434	!++
;	  1435	! Functional description:
;	  1436	!
;	  1437	!        This routine is called after the NICE request message has been
;	  1438	!        decomposed.  It performs the actual dump of a target node
;	  1439	!        connected to this (EXECUTOR) node by some circuit.
;	  1440	!
;	  1441	! Formal parameters:
;	  1442	!
;	  1443	!    .DATA    Address of dump data block
;	  1444	!
;	  1445	!             Necessary parameters (must be specified in request or in VDB):
;	  1446	!
;	  1447	!	      Parameter		Name
;	  1448	!	      ---------		----
;	  1449	!
;	  1450	!		130	Dump Image File ID
;	  1451	!		131	Secondary Dumper ID
;	  1452	!
;	  1453	!	      Parameters that may be defaulted:
;	  1454	!
;	  1455	!	      Parameter		Name		Default Value
;	  1456	!	      ---------		----		-------------
;	  1457	!
;	  1458	!		135	Dump Beginning Address		0
;	  1459	!		136	Dump Count			gotten from target
;	  1460	!
;	  1461	! Implicit inputs: none
;	  1462	!
;	  1463	! Routine value: none
;	  1464	! Side effects: none
;	  1465	!
;	  1466	!--
;	  1467	
;	  1468	    begin
;	  1469	    label
;	  1470	         DUMP_REQUEST;
;	  1471	    literal
;	  1472	           DUMPER_ASSUMED = 0,			! We hope the target can dump
;	  1473	           DUMPER_NEEDED = DUMPER_ASSUMED + 1,	! We need to load a secondary dumper
;	  1474	           DUMPER_RUNNING = DUMPER_NEEDED + 1,	! Secondary dumper is loaded
;	  1475	           DUMPER_READY = DUMPER_RUNNING + 1,	! Secondary dumper accepting dump requests
;	  1476	           DUMPER_BROKEN = DUMPER_READY + 1;	! Target can't be dumped
;	  1477	    local
;	  1478	         DUMP_COUNT_DEFAULTED,
;	  1479	         DUMPER_STATE,
;	  1480	         FB : FILE_DATA_BLOCK,
;	  1481	         SECONDARY_DUMPER,
;	  1482	         SERVICE_DEVICE;
;	  1483	
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  43
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

;	  1484	    FB[FB_RESPONSE_PTR] = .DATA[SB_RESPONSE_PTR];
;	  1485	    FB[FB_FILE_TYPE] = FILE_DUMP_IMAGE;
;	  1486	
;	  1487	    if not CPU_IS_PDP11 (.DATA) then return $false;
;	  1488	
;	  1489	    if (SERVICE_DEVICE = .DATA [LB_SERVICE_DEVICE]) lss 0
;	  1490	    then
;	  1491	        if not NML$GET_VDB_PARAMETER (NODE_E,
;	  1492	                                      .DATA [SB_NODE_DATA],
;	  1493	                                      112,
;	  1494	                                      SERVICE_DEVICE)
;	  1495	        then
;	  1496	            SERVICE_DEVICE = -1;
;	  1497	
;	  1498	    if (FB[FB_FILE] = .DATA [DB_DUMP_FILE]) eql 0
;	  1499	    then
;	  1500	        if not NML$GET_VDB_PARAMETER (NODE_E,
;	  1501	                                      .DATA [SB_NODE_DATA],
;	  1502	                                       130,
;	  1503	                                       FB[FB_FILE])
;	  1504	        then
;	  1505		    begin
;	  1506		    $RESPONSE_X (.DATA[SB_RESPONSE_PTR], NICE$_PAM, 130);
;	  1507		    return $false
;	  1508		    end;
;	  1509	
;	  1510	    if (SECONDARY_DUMPER = .DATA [DB_SECONDARY_DUMPER]) eql 0
;	  1511	    then
;	  1512	        if not NML$GET_VDB_PARAMETER (NODE_E,
;	  1513	                                      .DATA [SB_NODE_DATA],
;	  1514	                                       131,
;	  1515	                                       SECONDARY_DUMPER)
;	  1516	        then
;	  1517	            SECONDARY_DUMPER = 0;
;	  1518	
;	  1519	!
;	  1520	! Set dump limits.
;	  1521	!
;	  1522	
;	  1523	    begin
;	  1524	    local
;	  1525	         PTR;
;	  1526	    own NEG1: THIRTY_TWO_BIT;
;	  1527	    %movi32 (0, NEG1);
;	  1528	    %subi32 (1, NEG1);
;	  1529	
;	  1530	    %mov32 (DATA[DB_DUMP_ADDRESS], FB[FB_CURRENT_ADDRESS]);
;	  1531	
;	  1532	    if %cmp32 (DATA[DB_DUMP_ADDRESS], eql, NEG1)
;	  1533	    then
;	  1534	        if not NML$GET_VDB_PARAMETER (NODE_E,
;	  1535	                                  .DATA [SB_NODE_DATA],
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  44
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

;	  1536	                                  135,
;	  1537	                                  FB[FB_CURRENT_ADDRESS])
;	  1538	        then %movi32 (0, FB[FB_CURRENT_ADDRESS]);
;	  1539	
;	  1540	    DUMP_COUNT_DEFAULTED = $true;
;	  1541	
;	  1542	    %mov32 (DATA[DB_DUMP_COUNT], FB[FB_BYTES_LEFT]);
;	  1543	
;	  1544	    if %cmp32 (DATA[DB_DUMP_COUNT], eql, NEG1)
;	  1545	    then
;	  1546	        if NML$GET_VDB_PARAMETER (NODE_E,
;	  1547	                                  .DATA [SB_NODE_DATA],
;	  1548	                                  136,
;	  1549	                                  FB[FB_BYTES_LEFT])
;	  1550	        then
;	  1551	            DUMP_COUNT_DEFAULTED = $false
;	  1552	        else
;	  1553	            begin
;	  1554	            %movi32 (%o'76000', FB[FB_BYTES_LEFT]);
;	  1555	            %asli32 (3, FB[FB_BYTES_LEFT]);
;	  1556	            DUMP_COUNT_DEFAULTED = $true;
;	  1557	            end
;	  1558	    else
;	  1559	        DUMP_COUNT_DEFAULTED = $false;
;	  1560	
;	  1561	    end;
;	  1562	
;	  1563	!
;	  1564	! Open the file if we can.....
;	  1565	!
;	  1566	
;	  1567	    if not FILE_OPEN (FB) then return $false;
;	  1568	
;	  1569	!
;	  1570	! Until all bytes have been dumped
;	  1571	!    Send a dump request for the next block of memory
;	  1572	!    Receive the dump data
;	  1573	!    Validate the dump data response
;	  1574	!    Put data into dump image file
;	  1575	!
;	  1576	!
;	  1577	
;	  1578	    $RESPONSE (.DATA [SB_RESPONSE_PTR], NICE$_SUC);
;	  1579	
;	  1580	    DUMPER_STATE = DUMPER_ASSUMED;
;	  1581	
;	  1582	    while %cmpi32 (FB[FB_BYTES_LEFT], gtr, 0)
;	  1583	    do
;	  1584	      case .DUMPER_STATE from 0 to 3 of
;	  1585	          set
;	  1586	          !
;	  1587	          ! If we need to load the secondary dumper and there is one,
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  45
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

;	  1588	          ! then do so.  Otherwise give up.
;	  1589	          !
;	  1590	          [DUMPER_NEEDED] :
;	  1591	
;	  1592		      begin
;	  1593		      if .SECONDARY_DUMPER eqla 0
;	  1594		      then
;	  1595			  begin
;	  1596			  $RESPONSE_X (.DATA[SB_RESPONSE_PTR], NICE$_PAM, 131);
;	  1597			  exitloop;
;	  1598			  end;
;	  1599	
;	  1600	              if SECONDARY_LOAD (.DATA, FILE_SECONDARY_DUMPER,
;	  1601	                                 .SECONDARY_DUMPER)
;	  1602	              then
;	  1603	                  begin
;	  1604	                  $RESPONSE (.DATA[SB_RESPONSE_PTR], NICE$_SUC);
;	  1605	                  DUMPER_STATE = .DUMPER_STATE + 1
;	  1606	                  end
;	  1607	              else
;	  1608	                  exitloop;
;	  1609		      end;
;	  1610	
;	  1611	          !
;	  1612	          ! Construct and send the REQUEST DUMP message
;	  1613	          !
;	  1614	          [DUMPER_ASSUMED, DUMPER_RUNNING, DUMPER_READY] :
;	  1615	              DUMP_REQUEST:begin
;	  1616	              local
;	  1617	                   BUF_PTR,
;	  1618	                   DUMP_LENGTH,
;	  1619	                   RESULT;
;	  1620	      
;	  1621	              BUF_PTR = .DATA [SB_BUFFER_PTR];
;	  1622	              PUTB (REQUEST_DUMP, BUF_PTR);
;	  1623	              PUT32 (FB[FB_CURRENT_ADDRESS], BUF_PTR);
;	  1624	
;	  1625	              %mov32 (FB[FB_BYTES_LEFT], DUMP_LENGTH);
;	  1626	
;	  1627	              if %cmpi32 (DUMP_LENGTH, gtr, (MOP_BUFFER_LENGTH - 6))
;	  1628	              then %movi32 ((MOP_BUFFER_LENGTH - 6), DUMP_LENGTH);
;	  1629	
;	  1630	              PUTW (DUMP_LENGTH, BUF_PTR);
;	  1631	
;	  1632	              %(do a $NMU_DLX_WRITE_READ)%
;	  1633	
;	  1634	              decru TIMES from NMU$K_MOP_RETRY_LIMIT to 1 do begin
;	  1635	                  if .DUMPER_STATE neq DUMPER_RUNNING
;	  1636	                  then
;	  1637	                      begin
;	P 1638	                      if not $NMU_DLX_WRITE (.DATA [SB_CIRCUIT_HANDLE], DLX_DATA,
;	P 1639	                                      .DATA [SB_BUFFER_PTR], 7,
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  46
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

;	  1640	                                      .DATA [SB_RESPONSE_PTR])
;	  1641	
;	  1642	                      then exitloop RESULT = -1;
;	  1643	                      end
;	  1644	                  else
;	  1645	                      DUMPER_STATE = .DUMPER_STATE + 1;
;	  1646	
;	P 1647	                  RESULT = $NMU_DLX_READ (.DATA [SB_CIRCUIT_HANDLE], DLX_DATA,
;	P 1648	                                     .DATA [SB_BUFFER_PTR], MOP_BUFFER_LENGTH,,
;	  1649	                                     .DATA [SB_RESPONSE_PTR]);
;	  1650	
;	  1651	                  if .RESULT neq -2 then exitloop;
;	  1652	                  end;
;	  1653	
;	  1654	              if .RESULT leq 0
;	  1655	              then
;	  1656	                  leave DUMP_REQUEST with DUMPER_STATE = .DUMPER_STATE + 1;
;	  1657	
;	  1658	              begin
;	  1659	              local
;	  1660	                  BUF_PTR;
;	  1661	
;	  1662	              BUF_PTR = .DATA [SB_BUFFER_PTR];
;	  1663	
;	  1664	              selectone GETB (BUF_PTR) of
;	  1665	                  set
;	  1666	                  [MOP_MODE_RUNNING] :
;	  1667	                      if .RESULT geq 8
;	  1668	                      then
;	  1669	                          begin
;	  1670	                          local
;	  1671	                              MEMZISE : THIRTY_TWO_BIT,
;	  1672	                              TEMP;
;	  1673	                          bind
;	  1674	                              DEVTYPE = TEMP,
;	  1675	                              MOPVER = TEMP,
;	  1676	                              FEATURES = TEMP;
;	  1677	
;	  1678	                          DEVTYPE = GETB (BUF_PTR);
;	  1679	
;	  1680	                          if (.SERVICE_DEVICE geq 0) and
;	  1681	                             (.SERVICE_DEVICE neq .DEVTYPE)
;	  1682	                          then
;	  1683	                              begin
;	  1684	                              $RESPONSE (.DATA [SB_RESPONSE_PTR], NICE$_LPE);
;	  1685	                              exitloop;
;	  1686	                              end;
;	  1687	
;	  1688	                          if GETB (BUF_PTR) neq 1
;	  1689	                          then
;	  1690	                              begin
;	  1691	                              $RESPONSE (.DATA [SB_RESPONSE_PTR], NICE$_LPE);
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  47
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

;	  1692	                              exitloop;
;	  1693	                              end;
;	  1694	
;	  1695	                          GET32 (BUF_PTR, MEMZISE);
;	  1696	                          FEATURES = GETB (BUF_PTR);
;	  1697	
;	  1698	                          if not .FEATURES <1, 1>
;	  1699	                          then
;	  1700	                              leave DUMP_REQUEST with DUMPER_STATE = .DUMPER_STATE + 1;
;	  1701	
;	  1702	                          if .DUMP_COUNT_DEFAULTED
;	  1703	                          then
;	  1704	                              begin
;	  1705	                              %mov32 (MEMZISE, FB[FB_BYTES_LEFT]);
;	  1706	                              %sub32 (FB[FB_CURRENT_ADDRESS], FB[FB_BYTES_LEFT]);
;	  1707	                              end;
;	  1708	
;	  1709	                          end;
;	  1710	                  [MEMORY_DUMP_DATA] :
;	  1711	                      begin
;	  1712	                      local
;	  1713	                           DUMPED_ADDRESS : THIRTY_TWO_BIT;
;	  1714	
;	  1715	                      RESULT = .RESULT - 5;
;	  1716	
;	  1717	                      if .RESULT lss 0 then exitloop;
;	  1718	
;	  1719	                      !
;	  1720	                      ! Check for the correct dump address
;	  1721	                      ! Adjust dump address for next dump request
;	  1722	                      !
;	  1723	                      GET32 (BUF_PTR, DUMPED_ADDRESS);
;	  1724	
;	  1725	                      if %cmp32 (DUMPED_ADDRESS, neq, FB[FB_CURRENT_ADDRESS])
;	  1726	                      then
;	  1727	                          begin
;	P 1728	                          $RESPONSE_X (.DATA [SB_RESPONSE_PTR], NICE$_LPE, 0,
;	  1729	                                       'Address received in MEMORY DUMP DATA is incorrect', 117);
;	  1730	                          exitloop;
;	  1731	                          end;
;	  1732	
;	  1733	                      %addi32 (.RESULT, FB[FB_CURRENT_ADDRESS]);
;	  1734	                      %subi32 (.RESULT, FB[FB_BYTES_LEFT]);
;	  1735	
;	  1736	                      !
;	  1737	                      ! Write data to image file
;	  1738	                      !
;	  1739	                      if not NMU$FILE_WRITE (.FB[FB_FILE_HANDLE], .BUF_PTR, .RESULT, .FB[FB_RESPONSE_PTR])
;	  1740	                      then leave DUMP_REQUEST with DUMPER_STATE = .DUMPER_STATE + 1;
;	  1741	                      end;
;	  1742	                  [otherwise] :
;	  1743	                      leave DUMP_REQUEST with DUMPER_STATE = .DUMPER_STATE + 1;
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  48
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

;	  1744	                  tes;
;	  1745	
;	  1746	              end;
;	  1747	              end;
;	  1748	          !
;	  1749	          ! The dumper is broken! Long live the dumper!
;	  1750	          !
;	  1751	          [inrange, outrange] :
;	  1752	              exitloop;
;	  1753	          tes;
;	  1754	
;	  1755	!
;	  1756	! Close dump file
;	  1757	!
;	  1758	
;	  1759	    FILE_CLOSE (FB);
;	  1760	    $true
;	  1761	    end;				!End of DUMP_NODE



000000						.PSECT	$OWN$,  D  
000000					NEG1:	.BLKW	2


						.GLOBL	$SGN32, UD.TREAD, $CBDSG, $ADD32


	000000'				$$MOVI32.TARGET=    NEG1


						.SBTTL	DUMP.NODE DUMP_NODE
002416						.PSECT	$CODE$,  RO 

000000	004167  000000G			DUMP.NODE:
						JSR	R1,$SAVE5			;					1432
000004	162706  000050 				SUB	#50,SP
000010	010566  000002 				MOV	R5,2(SP)
000014	012700  000002 				MOV	#2,R0				;					1484
000020	060500 					ADD	R5,R0
000022	010066  000004 				MOV	R0,4(SP)
000026	011066  000026 				MOV	(R0),26(SP)			; *,FB+2
000032	112766  000002  000046 			MOVB	#2,46(SP)			; *,FB+22				1485
000040	004767  177602 				JSR	PC,CPU.IS.PDP11			;					1487
000044	006000 					ROR	R0
000046	103065 					BHIS	2$
000050	016601  000002 				MOV	2(SP),R1			;					1489
000054	116100  000057 				MOVB	57(R1),R0
000060	010066  000012 				MOV	R0,12(SP)			; *,SERVICE.DEVICE
000064	002022 					BGE	1$
000066	005046 					CLR	-(SP)				;					1491
000070	010100 					MOV	R1,R0
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  49
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

000072	016046  000010 				MOV	10(R0),-(SP)
000076	012746  000160 				MOV	#160,-(SP)
000102	012746  000022 				MOV	#22,-(SP)
000106	060616 					ADD	SP,(SP)				; SERVICE.DEVICE,*
000110	004767  000000G				JSR	PC,NL.VGP
000114	062706  000010 				ADD	#10,SP
000120	006000 					ROR	R0
000122	103403 					BLO	1$
000124	012766  177777  000012 			MOV	#-1,12(SP)			; *,SERVICE.DEVICE			1496
000132	016600  000002 			1$:	MOV	2(SP),R0			;					1498
000136	016066  000026  000030 			MOV	26(R0),30(SP)			; *,FB+4
000144	001030 					BNE	3$
000146	005046 					CLR	-(SP)				;					1500
000150	016046  000010 				MOV	10(R0),-(SP)
000154	012746  000202 				MOV	#202,-(SP)
000160	012746  000040 				MOV	#40,-(SP)			;					1503
000164	060616 					ADD	SP,(SP)				; FB+4,*
000166	004767  000000G				JSR	PC,NL.VGP			;					1500
000172	062706  000010 				ADD	#10,SP
000176	006000 					ROR	R0
000200	103412 					BLO	3$
000202	017600  000004 				MOV	@4(SP),R0			; *,STRPTR				1506
000206	112720  000343 				MOVB	#343,(R0)+			; *,STRPTR
000212	112720  000202 				MOVB	#202,(R0)+			; *,STRPTR
000216	105020 					CLRB	(R0)+				; STRPTR
000220	105020 					CLRB	(R0)+				; STRPTR
000222	000167  000474 			2$:	JMP	9$				;					1505
000226	016600  000002 			3$:	MOV	2(SP),R0			;					1510
000232	016066  000030  000010 			MOV	30(R0),10(SP)			; *,SECONDARY.DUMPE
000240	001020 					BNE	4$
000242	005046 					CLR	-(SP)				;					1512
000244	016046  000010 				MOV	10(R0),-(SP)
000250	012746  000203 				MOV	#203,-(SP)
000254	012746  000020 				MOV	#20,-(SP)
000260	060616 					ADD	SP,(SP)				; SECONDARY.DUMPE,*
000262	004767  000000G				JSR	PC,NL.VGP
000266	062706  000010 				ADD	#10,SP
000272	006000 					ROR	R0
000274	103402 					BLO	4$
000276	005066  000010 				CLR	10(SP)				; SECONDARY.DUMPE			1517
000302	005067  000000'			4$:	CLR	$$MOVI32.TARGET			;					1527
000306	005067  000002'				CLR	$$MOVI32.TARGET+2
000312	012766  000001  000020 			MOV	#1,20(SP)			; *,$$MOVI32.TARGET			1528
000320	005066  000022 				CLR	22(SP)				; $$MOVI32.TARGET+2
000324	012700  000020 				MOV	#20,R0
000330	060600 					ADD	SP,R0				; $$SUBI32.C,*
000332	012701  000000'				MOV	#NEG1,R1
000336	004767  000000G				JSR	PC,$SUB32
000342	012701  000036 				MOV	#36,R1				;					1530
000346	066601  000002 				ADD	2(SP),R1
000352	010100 					MOV	R1,R0
000354	011066  000032 				MOV	(R0),32(SP)			; *,$$MOV32.TARGET
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  50
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

000360	016066  000002  000034 			MOV	2(R0),34(SP)			; *,$$MOV32.TARGET+2
000366	011066  000020 				MOV	(R0),20(SP)			; *,$$MOV32.TARGET			1532
000372	016666  000034  000022 			MOV	34(SP),22(SP)			; *,$$MOV32.TARGET+2
000400	012701  000020 				MOV	#20,R1
000404	060601 					ADD	SP,R1				; $$CMP32.C,*
000406	012700  000000'				MOV	#NEG1,R0
000412	004767  000000G				JSR	PC,$SUB32
000416	012701  000020 				MOV	#20,R1
000422	060601 					ADD	SP,R1				; $$CMP32.C,*
000424	004767  000000G				JSR	PC,$SGN32
000430	005700 					TST	R0
000432	001024 					BNE	5$
000434	005046 					CLR	-(SP)				;					1534
000436	016600  000004 				MOV	4(SP),R0
000442	016046  000010 				MOV	10(R0),-(SP)
000446	012746  000207 				MOV	#207,-(SP)
000452	012746  000042 				MOV	#42,-(SP)			;					1537
000456	060616 					ADD	SP,(SP)				; FB+6,*
000460	004767  000000G				JSR	PC,NL.VGP			;					1534
000464	062706  000010 				ADD	#10,SP
000470	006000 					ROR	R0
000472	103404 					BLO	5$
000474	005066  000032 				CLR	32(SP)				; $$MOVI32.TARGET			1538
000500	005066  000034 				CLR	34(SP)				; $$MOVI32.TARGET+2
000504	012716  000001 			5$:	MOV	#1,(SP)				; *,DUMP.COUNT.DEFA			1540
000510	012701  000042 				MOV	#42,R1				;					1542
000514	066601  000002 				ADD	2(SP),R1
000520	010100 					MOV	R1,R0
000522	011066  000036 				MOV	(R0),36(SP)			; *,$$MOV32.TARGET
000526	016066  000002  000040 			MOV	2(R0),40(SP)			; *,$$MOV32.TARGET+2
000534	011066  000020 				MOV	(R0),20(SP)			; *,$$MOV32.TARGET			1544
000540	016666  000040  000022 			MOV	40(SP),22(SP)			; *,$$MOV32.TARGET+2
000546	012701  000020 				MOV	#20,R1
000552	060601 					ADD	SP,R1				; $$CMP32.C,*
000554	012700  000000'				MOV	#NEG1,R0
000560	004767  000000G				JSR	PC,$SUB32
000564	012701  000020 				MOV	#20,R1
000570	060601 					ADD	SP,R1				; $$CMP32.C,*
000572	004767  000000G				JSR	PC,$SGN32
000576	005700 					TST	R0
000600	001040 					BNE	7$
000602	005046 					CLR	-(SP)				;					1546
000604	016600  000004 				MOV	4(SP),R0
000610	016046  000010 				MOV	10(R0),-(SP)
000614	012746  000210 				MOV	#210,-(SP)
000620	012746  000046 				MOV	#46,-(SP)			;					1549
000624	060616 					ADD	SP,(SP)				; FB+12,*
000626	004767  000000G				JSR	PC,NL.VGP			;					1546
000632	062706  000010 				ADD	#10,SP
000636	006000 					ROR	R0
000640	103420 					BLO	7$				;					1551
000642	012766  076000  000036 			MOV	#76000,36(SP)			; *,$$MOVI32.TARGET			1554
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  51
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

000650	012766  000000  000040 			MOV	#0,40(SP)			; *,$$MOVI32.TARGET+2
000656	012700  000003 				MOV	#3,R0				; *,$$ASL.INDEX				1555
000662	006166  000036 			6$:	ROL	36(SP)				; $$ASLI32.VALUE
000666	006166  000040 				ROL	40(SP)				; $$ASLI32.VALUE+2
000672	077005 					SOB	R0,6$				; $$ASL.INDEX,*				0000
000674	012716  000001 				MOV	#1,(SP)				; *,DUMP.COUNT.DEFA			1556
000700	000401 					BR	8$				;					1544
000702	005016 				7$:	CLR	(SP)				; DUMP.COUNT.DEFA			1559
000704	012705  000024 			8$:	MOV	#24,R5				;					1567
000710	060605 					ADD	SP,R5				; FB,*
000712	004767  000000V				JSR	PC,FILE.OPEN
000716	006000 					ROR	R0
000720	103403 					BLO	10$
000722	005000 				9$:	CLR	R0
000724	000167  001214 				JMP	35$
000730	017600  000004 			10$:	MOV	@4(SP),R0			; *,STRPTR				1578
000734	112720  000001 				MOVB	#1,(R0)+			; *,STRPTR
000740	112720  000377 				MOVB	#377,(R0)+			; *,STRPTR
000744	116020  177777 				MOVB	-1(R0),(R0)+			; *(STRPTR),STRPTR
000750	105010 					CLRB	(R0)				; STRPTR
000752	005004 					CLR	R4				; DUMPER.STATE				1580
000754	005066  000020 			11$:	CLR	20(SP)				; $$MOVI32.TARGET			1582
000760	005066  000022 				CLR	22(SP)				; $$MOVI32.TARGET+2
000764	012700  000036 				MOV	#36,R0
000770	060600 					ADD	SP,R0				; FB+12,*
000772	012701  000020 				MOV	#20,R1
000776	060601 					ADD	SP,R1				; $$CMPI32.C,*
001000	004767  000000G				JSR	PC,$SUB32
001004	012701  000020 				MOV	#20,R1
001010	060601 					ADD	SP,R1				; $$CMPI32.C,*
001012	004767  000000G				JSR	PC,$SGN32
001016	005700 					TST	R0
001020	002023 					BGE	14$
001022	010400 					MOV	R4,R0				; DUMPER.STATE,*			1584
001024	020027  000003 				CMP	R0,#3
001030	101032 					BHI	16$
001032	006300 					ASL	R0
001034	066007  000056'				ADD	P.AAE(R0),PC			; Case dispatch
001040	000413 				12$:	BR	14$				;					1752
001042	016600  000010 			13$:	MOV	10(SP),R0			; SECONDARY.DUMPE,*			1593
001046	001012 					BNE	15$
001050	017601  000004 				MOV	@4(SP),R1			; *,STRPTR				1596
001054	112721  000343 				MOVB	#343,(R1)+			; *,STRPTR
001060	112721  000203 				MOVB	#203,(R1)+			; *,STRPTR
001064	105021 					CLRB	(R1)+				; STRPTR
001066	105021 					CLRB	(R1)+				; STRPTR
001070	000167  001032 			14$:	JMP	34$				;					1597
001074	012746  000005 			15$:	MOV	#5,-(SP)			;					1600
001100	010046 					MOV	R0,-(SP)
001102	016605  000006 				MOV	6(SP),R5
001106	004767  000000V				JSR	PC,SECONDARY.LOAD
001112	022626 					CMP	(SP)+,(SP)+
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  52
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

001114	006000 					ROR	R0
001116	103364 				16$:	BCC	14$
001120	017600  000004 				MOV	@4(SP),R0			; *,STRPTR				1604
001124	112720  000001 				MOVB	#1,(R0)+			; *,STRPTR
001130	112720  000377 				MOVB	#377,(R0)+			; *,STRPTR
001134	116020  177777 				MOVB	-1(R0),(R0)+			; *(STRPTR),STRPTR
001140	105020 					CLRB	(R0)+				; STRPTR
001142	000167  000752 			17$:	JMP	32$				;					1605
001146	016600  000002 			18$:	MOV	2(SP),R0			;					1621
001152	016002  000006 				MOV	6(R0),R2
001156	010203 					MOV	R2,R3				; *,BUF.PTR
001160	112723  000004 				MOVB	#4,(R3)+			; *,BUF.PTR				1622
001164	116623  000032 				MOVB	32(SP),(R3)+			; $$PUT32.VALUE,BUF.PTR			1623
001170	116623  000033 				MOVB	33(SP),(R3)+			; $$PUT32.VALUE,BUF.PTR
001174	116623  000034 				MOVB	34(SP),(R3)+			; $$PUT32.VALUE+2,BUF.PTR
001200	116623  000035 				MOVB	35(SP),(R3)+			; $$PUT32.VALUE+2,BUF.PTR
001204	016666  000036  000006 			MOV	36(SP),6(SP)			; $$MOV32.SOURCE,$$MOV32.TARGET		1625
001212	016666  000040  000010 			MOV	40(SP),10(SP)			; $$MOV32.SOURCE+2,$$MOV32.TARGET+2
001220	012766  001004  000020 			MOV	#1004,20(SP)			; *,$$MOVI32.TARGET			1627
001226	005066  000022 				CLR	22(SP)				; $$MOVI32.TARGET+2
001232	012700  000006 				MOV	#6,R0
001236	060600 					ADD	SP,R0				; DUMP.LENGTH,*
001240	012701  000020 				MOV	#20,R1
001244	060601 					ADD	SP,R1				; $$CMPI32.C,*
001246	004767  000000G				JSR	PC,$SUB32
001252	012701  000020 				MOV	#20,R1
001256	060601 					ADD	SP,R1				; $$CMPI32.C,*
001260	004767  000000G				JSR	PC,$SGN32
001264	005700 					TST	R0
001266	002005 					BGE	19$
001270	012766  001004  000006 			MOV	#1004,6(SP)			; *,$$MOVI32.TARGET			1628
001276	005066  000010 				CLR	10(SP)				; $$MOVI32.TARGET+2
001302	116623  000006 			19$:	MOVB	6(SP),(R3)+			; DUMP.LENGTH,BUF.PTR			1630
001306	116623  000007 				MOVB	7(SP),(R3)+			; DUMP.LENGTH,BUF.PTR
001312	012701  000005 				MOV	#5,R1				; *,TIMES				1634
001316	020427  000002 			20$:	CMP	R4,#2				; DUMPER.STATE,*			1635
001322	001423 					BEQ	21$
001324	017646  000002 				MOV	@2(SP),-(SP)			;					1640
001330	012746  000006 				MOV	#6,-(SP)
001334	010246 					MOV	R2,-(SP)
001336	012746  000007 				MOV	#7,-(SP)
001342	017646  000014 				MOV	@14(SP),-(SP)
001346	004767  000000G				JSR	PC,UD.WRITE
001352	062706  000012 				ADD	#12,SP
001356	032700  000001 				BIT	#1,R0
001362	001004 					BNE	22$
001364	012705  177777 				MOV	#-1,R5				; *,RESULT				1642
001370	000430 					BR	25$
001372	005204 				21$:	INC	R4				; DUMPER.STATE				1645
001374	017646  000002 			22$:	MOV	@2(SP),-(SP)			;					1649
001400	012746  000006 				MOV	#6,-(SP)
001404	010246 					MOV	R2,-(SP)
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  53
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

001406	012746  001012 				MOV	#1012,-(SP)
001412	005046 					CLR	-(SP)
001414	017646  000016 				MOV	@16(SP),-(SP)
001420	004767  000000G				JSR	PC,UD.TREAD
001424	010005 					MOV	R0,R5				; *,RESULT				1647
001426	020527  177776 				CMP	R5,#-2				; RESULT,*				1651
001432	001403 					BEQ	23$
001434	062706  000014 				ADD	#14,SP
001440	000403 					BR	24$
001442	062706  000014 			23$:	ADD	#14,SP				;					1634
001446	077155 					SOB	R1,20$				; TIMES,*				0000
001450	005705 				24$:	TST	R5				; RESULT				1654
001452	003633 				25$:	BLE	17$				;					1656
001454	010203 					MOV	R2,R3				; *,BUF.PTR				1662
001456	005000 					CLR	R0				;					1664
001460	152300 					BISB	(R3)+,R0			; BUF.PTR,*
001462	020027  000014 				CMP	R0,#14
001466	001066 					BNE	30$
001470	020527  000010 				CMP	R5,#10				; RESULT,*				1667
001474	002462 					BLT	29$
001476	005001 					CLR	R1				; DEVTYPE				1678
001500	152301 					BISB	(R3)+,R1			; BUF.PTR,DEVTYPE
001502	016600  000012 				MOV	12(SP),R0			; SERVICE.DEVICE,*			1680
001506	002402 					BLT	26$
001510	020001 					CMP	R0,R1				; *,DEVTYPE				1681
001512	001003 					BNE	27$				;					1684
001514	122327  000001 			26$:	CMPB	(R3)+,#1			; BUF.PTR,*				1688
001520	001412 					BEQ	28$
001522	017600  000004 			27$:	MOV	@4(SP),R0			; *,STRPTR				1691
001526	112720  000357 				MOVB	#357,(R0)+			; *,STRPTR
001532	112720  000377 				MOVB	#377,(R0)+			; *,STRPTR
001536	116020  177777 				MOVB	-1(R0),(R0)+			; *(STRPTR),STRPTR
001542	105020 					CLRB	(R0)+				; STRPTR
001544	000570 					BR	34$				;					1692
001546	112366  000020 			28$:	MOVB	(R3)+,20(SP)			; BUF.PTR,$$GET32.VALUE			1695
001552	112366  000021 				MOVB	(R3)+,21(SP)			; BUF.PTR,$$GET32.VALUE
001556	112366  000022 				MOVB	(R3)+,22(SP)			; BUF.PTR,$$GET32.VALUE+2
001562	112366  000023 				MOVB	(R3)+,23(SP)			; BUF.PTR,$$GET32.VALUE+2
001566	005001 					CLR	R1				; FEATURES				1696
001570	152301 					BISB	(R3)+,R1			; BUF.PTR,FEATURES
001572	032701  000002 				BIT	#2,R1				; *,FEATURES				1698
001576	001550 					BEQ	32$				;					1700
001600	032716  000001 				BIT	#1,(SP)				; *,DUMP.COUNT.DEFA			1702
001604	001546 					BEQ	33$
001606	016666  000020  000036 			MOV	20(SP),36(SP)			; $$MOV32.SOURCE,$$MOV32.TARGET		1705
001614	016666  000022  000040 			MOV	22(SP),40(SP)			; $$MOV32.SOURCE+2,$$MOV32.TARGET+2
001622	012700  000032 				MOV	#32,R0				;					1706
001626	060600 					ADD	SP,R0				; FB+6,*
001630	012701  000036 				MOV	#36,R1
001634	060601 					ADD	SP,R1				; FB+12,*
001636	004767  000000G				JSR	PC,$SUB32
001642	000527 				29$:	BR	33$				;					1664
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  54
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

001644	020027  000016 			30$:	CMP	R0,#16
001650	001123 					BNE	32$
001652	162705  000005 				SUB	#5,R5				; *,RESULT				1715
001656	100523 					BMI	34$				;					1717
001660	112366  000020 				MOVB	(R3)+,20(SP)			; BUF.PTR,$$GET32.VALUE			1723
001664	112366  000021 				MOVB	(R3)+,21(SP)			; BUF.PTR,$$GET32.VALUE
001670	112366  000022 				MOVB	(R3)+,22(SP)			; BUF.PTR,$$GET32.VALUE+2
001674	112366  000023 				MOVB	(R3)+,23(SP)			; BUF.PTR,$$GET32.VALUE+2
001700	016666  000020  000014 			MOV	20(SP),14(SP)			; $$MOV32.SOURCE,$$MOV32.TARGET		1725
001706	016666  000022  000016 			MOV	22(SP),16(SP)			; $$MOV32.SOURCE+2,$$MOV32.TARGET+2
001714	012700  000032 				MOV	#32,R0
001720	060600 					ADD	SP,R0				; FB+6,*
001722	012701  000014 				MOV	#14,R1
001726	060601 					ADD	SP,R1				; $$CMP32.C,*
001730	004767  000000G				JSR	PC,$SUB32
001734	012701  000014 				MOV	#14,R1
001740	060601 					ADD	SP,R1				; $$CMP32.C,*
001742	004767  000000G				JSR	PC,$SGN32
001746	005700 					TST	R0
001750	001417 					BEQ	31$
001752	017600  000004 				MOV	@4(SP),R0			; *,STRPTR				1729
001756	112720  000357 				MOVB	#357,(R0)+			; *,STRPTR
001762	105020 					CLRB	(R0)+				; STRPTR
001764	105020 					CLRB	(R0)+				; STRPTR
001766	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
001772	012701  000165 				MOV	#165,R1
001776	012702  000001 				MOV	#1,R2
002002	004767  000000G				JSR	PC,$CBDSG
002006	000447 					BR	34$				;					1730
002010	010566  000014 			31$:	MOV	R5,14(SP)			; RESULT,$$MOVI32.TARGET		1733
002014	005066  000016 				CLR	16(SP)				; $$MOVI32.TARGET+2
002020	012700  000014 				MOV	#14,R0
002024	060600 					ADD	SP,R0				; $$ADDI32.C,*
002026	012701  000032 				MOV	#32,R1
002032	060601 					ADD	SP,R1				; FB+6,*
002034	004767  000000G				JSR	PC,$ADD32
002040	010566  000014 				MOV	R5,14(SP)			; RESULT,$$MOVI32.TARGET		1734
002044	005066  000016 				CLR	16(SP)				; $$MOVI32.TARGET+2
002050	012700  000014 				MOV	#14,R0
002054	060600 					ADD	SP,R0				; $$SUBI32.C,*
002056	012701  000036 				MOV	#36,R1
002062	060601 					ADD	SP,R1				; FB+12,*
002064	004767  000000G				JSR	PC,$SUB32
002070	016646  000024 				MOV	24(SP),-(SP)			; FB,*					1739
002074	010346 					MOV	R3,-(SP)			; BUF.PTR,*
002076	010546 					MOV	R5,-(SP)			; RESULT,*
002100	016646  000034 				MOV	34(SP),-(SP)			; FB+2,*
002104	004767  000000G				JSR	PC,UF.WRITE
002110	062706  000010 				ADD	#10,SP
002114	006000 					ROR	R0
002116	103401 					BLO	33$
002120	005204 				32$:	INC	R4				; DUMPER.STATE				1743
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  55
X03.52		DUMP_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (13)

002122	000167  176626 			33$:	JMP	11$				;					1584
002126	012705  000024 			34$:	MOV	#24,R5				;					1759
002132	060605 					ADD	SP,R5				; FB,*
002134	004767  000000V				JSR	PC,FILE.CLOSE
002140	012700  000001 				MOV	#1,R0				;					1432
002144	062706  000050 			35$:	ADD	#50,SP
002150	000207 					RTS	PC
; Routine Size:  565 words,	Routine Base:  $CODE$ + 2416
; Maximum stack depth per invocation:  33 words


000056						.PSECT	$PLIT$,  RO ,  D  

					P.AAE:						; CASE Table for DUMP.NODE+1034		1584
000056	000106 					.WORD	106				; [18$]
000060	000002 					.WORD	2				; [13$]
000062	000106 					.WORD	106				; [18$]
000064	000106 					.WORD	106				; [18$]
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  56
X03.52		FETCH_PARAMETERS				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (14)

;	  1762	%routine ('FETCH_PARAMETERS', REQ : ref REQUEST_BLOCK, DB : ref SERVICE_DATA_BLOCK, PRM : ref vector) =
;	  1763	
;	  1764	!++
;	  1765	! Functional description:
;	  1766	!
;	  1767	!	This routine extracts the parameters supplied in the NICE request
;	  1768	!       message, checks to make sure they are applicable to the request,
;	  1769	!       and stores them in the service block.
;	  1770	!
;	  1771	! Formal parameters:
;	  1772	!
;	  1773	!	.REQ	NML Request Block address
;	  1774	!       .DB     dump/load/trigger block address
;	  1775	!       .PRM    address of plit vector with acceptable parameter numbers
;	  1776	!
;	  1777	! Implicit inputs: none
;	  1778	!
;	  1779	! Routine value:
;	  1780	!
;	  1781	!	NICE return code.
;	  1782	!
;	  1783	! Side effects: none
;	  1784	!
;	  1785	!--
;	  1786	
;	  1787	    begin
;	  1788	    local
;	  1789	         ENTITY_TYPE,
;	  1790	         PARM_NO,
;	  1791	         PARM_DATA: THIRTY_TWO_BIT;
;	  1792	
;	  1793	    ENTITY_TYPE =.REQ[RB_NICE_ENTITY_TYPE] ; ! Save real entity type
;	  1794	    REQ[RB_NICE_ENTITY_TYPE] = NODE_E ; ! Parameters are all NODE 
;	  1795	
;	  1796	    while GET_NEXT_PARAMETER (.REQ, PARM_NO, PARM_DATA)
;	  1797	    do
;	  1798	       begin
;	  1799	
;	  1800	       selectone
;	  1801	           begin
;	  1802	           local
;	  1803	                ADR : ref vector,
;	  1804	                CNT;
;	  1805	           ADR = .PRM;
;	  1806	           CNT = .ADR [-1];
;	  1807	
;	  1808	           do
;	  1809	             begin
;	  1810	             local
;	  1811	                  VAL;
;	  1812	
;	  1813	             VAL = .ADR [0];
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  57
X03.52		FETCH_PARAMETERS				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (14)

;	  1814	             ADR = ADR [1];
;	  1815	
;	  1816	             if .PARM_NO eql .VAL then exitloop .VAL;
;	  1817	
;	  1818	             end
;	  1819	           while (CNT = .CNT - 1) neq 0
;	  1820	
;	  1821	           end
;	  1822	       of
;	  1823	           set
;	  1824	           [110]:                  ! SERVICE CIRCUIT
;	  1825	               DB[SB_SERVICE_CIRCUIT] = .PARM_DATA ;
;	  1826	           [111]:                  ! SERVICE PASSWORD
;	  1827	               DB[SB_SERVICE_PASSWORD] = .PARM_DATA ;
;	  1828	           [112]:                  ! SERVICE DEVICE
;	  1829	               DB[LB_SERVICE_DEVICE] = .PARM_DATA ;
;	  1830	           [113]:                  ! CPU
;	  1831	               selectone ch$rchar (.PARM_DATA) of
;	  1832	                   set
;	  1833	                   [0 to 3] : DB[LB_CPU] = .PARM_DATA;
;	  1834	                   [otherwise] :
;	  1835	                       begin
;	  1836	                       $RESPONSE_X (.DB[SB_RESPONSE_PTR], NICE$_IPV, 113);
;	  1837	                       exitloop;
;	  1838	                       end;
;	  1839	                   tes;
;	  1840	           [120]:                  ! LOAD FILE
;	  1841	               DB[LB_LOAD_FILE] = .PARM_DATA ;
;	  1842	           [121]:                  ! SECONDARY LOADER
;	  1843	               DB[LB_SECONDARY_LOADER] = .PARM_DATA ;
;	  1844	           [122]:                  ! TERTIARY LOADER
;	  1845	               DB[LB_TERTIARY_LOADER] = .PARM_DATA ;
;	  1846	           [125]:                  ! SOFTWARE TYPE
;	  1847	                selectone .PARM_DATA of
;	  1848	                    set
;	  1849	                    [0 to 2] : DB[LB_SOFTWARE_TYPE] = .PARM_DATA;
;	  1850	                    [otherwise] :
;	  1851	                        begin
;	  1852	                        $RESPONSE_X (.DB[SB_RESPONSE_PTR], NICE$_IPV, 125);
;	  1853	                        exitloop;
;	  1854	                        end;
;	  1855	                    tes;
;	  1856	           [126]:                  ! SOFTWARE IDENTIFICATION
;	  1857	               DB[LB_SOFTWARE_IDENTIFICATION] = .PARM_DATA ;
;	  1858	           [130]:                  ! DUMP FILE
;	  1859	               DB[DB_DUMP_FILE] = .PARM_DATA ;
;	  1860	           [131]:                  ! SECONDARY DUMPER
;	  1861	               DB[DB_SECONDARY_DUMPER] = .PARM_DATA ;
;	  1862	           [135]:                  ! DUMP ADDRESS
;	  1863	               %mov32 (PARM_DATA, DB[DB_DUMP_ADDRESS]);
;	  1864	           [136]:                  ! DUMP COUNT
;	  1865	               %mov32 (PARM_DATA, DB[DB_DUMP_COUNT]);
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  58
X03.52		FETCH_PARAMETERS				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (14)

;	  1866	           [141]:                  ! HOST
;	  1867	               begin
;	  1868	               local
;	  1869	                    FMT,
;	  1870	                    NOD_PTR;
;	  1871	
;	  1872	               NOD_PTR = ch$ptr (DB[LB_HOST],,8) ;
;	  1873	               FMT = GETB (PARM_DATA); ! Get node id format byte
;	  1874	
;	  1875	               selectoneu .FMT of
;	  1876	                   set
;	  1877	                   [0]:
;	  1878	                       begin            ! Node address
;	  1879	                       PUTB (GETB (PARM_DATA), NOD_PTR);
;	  1880	                       PUTB (GETB (PARM_DATA), NOD_PTR);
;	  1881	                       PUTB (0,NOD_PTR) ; ! Null node name
;	  1882	                       end;
;	  1883	                   [1 to 6]:
;	  1884	                       begin          ! Node name
;	  1885	                       PUTB (0,NOD_PTR); ! Node address of zero
;	  1886	                       PUTB (0,NOD_PTR);
;	  1887	                       PUTB (.FMT,NOD_PTR) ; ! Length of node name
;	  1888	                       ch$move (.FMT,.PARM_DATA,.NOD_PTR) ;
;	  1889	                       end;
;	  1890	                   [otherwise]:
;	  1891	                       begin
;	P 1892	                       $RESPONSE_X (.DB[SB_RESPONSE_PTR],NICE$_IID,NODE_E,
;	  1893	                                    'HOST Node Id', 101) ;
;	  1894	                       exitloop;
;	  1895	                       end;
;	  1896	                   tes;
;	  1897	
;	  1898	               end;
;	  1899	           [500]:                  ! NAME
;	  1900	               DB [LB_NAME] = .PARM_DATA;
;	  1901	           [502]:                  ! ADDRESS
;	  1902	               DB [LB_ADDRESS] = .PARM_DATA;
;	  1903	           [otherwise]:
;	  1904	               begin
;	  1905	               $RESPONSE_X (.DB[SB_RESPONSE_PTR],NICE$_PNA,.PARM_NO) ;
;	  1906	               exitloop;
;	  1907	               end;
;	  1908	           tes;
;	  1909	
;	  1910	       end;
;	  1911	
;	  1912	    REQ[RB_NICE_ENTITY_TYPE] = .ENTITY_TYPE ; ! Restore real entity type
;	  1913	
;	  1914	    ch$rchar (.DB[SB_RESPONSE_PTR])
;	  1915	    end;				!End of FETCH_PARAMETERS
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  59
X03.52		FETCH_PARAMETERS				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (14)

						.SBTTL	FETCH.PARAMETERS FETCH_PARAMETERS
004570						.PSECT	$CODE$,  RO 

000000	004167  000000G			FETCH.PARAMETERS:
						JSR	R1,$SAVE5			;					1762
000004	162706  000006 				SUB	#6,SP
000010	016600  000030 				MOV	30(SP),R0			; REQ,*					1793
000014	012704  000074 				MOV	#74,R4
000020	060004 					ADD	R0,R4
000022	005005 					CLR	R5				; ENTITY.TYPE
000024	151405 					BISB	(R4),R5				; *,ENTITY.TYPE
000026	105014 					CLRB	(R4)				;					1794
000030	016646  000030 			1$:	MOV	30(SP),-(SP)			; REQ,*					1796
000034	012746  000004 				MOV	#4,-(SP)
000040	060616 					ADD	SP,(SP)				; PARM.NO,*
000042	012746  000010 				MOV	#10,-(SP)
000046	060616 					ADD	SP,(SP)				; PARM.DATA,*
000050	004767  000000V				JSR	PC,GET.NEXT.PARAMETER
000054	062706  000006 				ADD	#6,SP
000060	006000 					ROR	R0
000062	103402 					BLO	2$
000064	000167  001004 				JMP	33$
000070	016601  000024 			2$:	MOV	24(SP),R1			; PRM,ADR				1805
000074	016102  177776 				MOV	-2(R1),R2			; *(ADR),CNT				1806
000100	012100 				3$:	MOV	(R1)+,R0			; ADR,VAL				1813
000102	021600 					CMP	(SP),R0				; PARM.NO,VAL				1816
000104	001403 					BEQ	4$
000106	077204 					SOB	R2,3$				; CNT,*					1819
000110	012700  177777 				MOV	#-1,R0				;					1808
000114	020027  000156 			4$:	CMP	R0,#156				;					1800
000120	001006 					BNE	6$
000122	016601  000026 				MOV	26(SP),R1			; DB,*					1825
000126	016661  000002  000012 			MOV	2(SP),12(R1)			; PARM.DATA,*
000134	000735 				5$:	BR	1$				;					1800
000136	020027  000157 			6$:	CMP	R0,#157
000142	001006 					BNE	7$
000144	016601  000026 				MOV	26(SP),R1			; DB,*					1827
000150	016661  000002  000014 			MOV	2(SP),14(R1)			; PARM.DATA,*
000156	000724 					BR	1$				;					1800
000160	020027  000160 			7$:	CMP	R0,#160
000164	001006 					BNE	9$
000166	016601  000026 				MOV	26(SP),R1			; DB,*					1829
000172	116661  000002  000057 			MOVB	2(SP),57(R1)			; PARM.DATA,*
000200	000713 				8$:	BR	1$				;					1800
000202	020027  000161 			9$:	CMP	R0,#161
000206	001027 					BNE	11$
000210	005001 					CLR	R1				;					1831
000212	157601  000002 				BISB	@2(SP),R1			; PARM.DATA,*
000216	005701 					TST	R1
000220	002411 					BLT	10$
000222	020127  000003 				CMP	R1,#3
000226	003006 					BGT	10$
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  60
X03.52		FETCH_PARAMETERS				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (14)

000230	016601  000026 				MOV	26(SP),R1			; DB,*					1833
000234	116661  000002  000060 			MOVB	2(SP),60(R1)			; PARM.DATA,*
000242	000672 					BR	1$				;					1831
000244	016601  000026 			10$:	MOV	26(SP),R1			; DB,*					1836
000250	016102  000002 				MOV	2(R1),R2			; *,STRPTR
000254	112722  000360 				MOVB	#360,(R2)+			; *,STRPTR
000260	112712  000161 				MOVB	#161,(R2)			; *,STRPTR
000264	000461 					BR	18$
000266	020027  000170 			11$:	CMP	R0,#170				;					1800
000272	001006 					BNE	13$
000274	016601  000026 				MOV	26(SP),R1			; DB,*					1841
000300	016661  000002  000016 			MOV	2(SP),16(R1)			; PARM.DATA,*
000306	000650 				12$:	BR	1$				;					1800
000310	020027  000171 			13$:	CMP	R0,#171
000314	001006 					BNE	14$
000316	016601  000026 				MOV	26(SP),R1			; DB,*					1843
000322	016661  000002  000020 			MOV	2(SP),20(R1)			; PARM.DATA,*
000330	000637 					BR	1$				;					1800
000332	020027  000172 			14$:	CMP	R0,#172
000336	001006 					BNE	16$
000340	016601  000026 				MOV	26(SP),R1			; DB,*					1845
000344	016661  000002  000022 			MOV	2(SP),22(R1)			; PARM.DATA,*
000352	000626 				15$:	BR	1$				;					1800
000354	020027  000175 			16$:	CMP	R0,#175
000360	001027 					BNE	19$
000362	016602  000002 				MOV	2(SP),R2			; PARM.DATA,*				1847
000366	002410 					BLT	17$
000370	020227  000002 				CMP	R2,#2
000374	003005 					BGT	17$
000376	016601  000026 				MOV	26(SP),R1			; DB,*					1849
000402	110261  000061 				MOVB	R2,61(R1)
000406	000610 					BR	1$				;					1847
000410	016601  000026 			17$:	MOV	26(SP),R1			; DB,*					1852
000414	016102  000002 				MOV	2(R1),R2			; *,STRPTR
000420	112722  000360 				MOVB	#360,(R2)+			; *,STRPTR
000424	112712  000175 				MOVB	#175,(R2)			; *,STRPTR
000430	005202 				18$:	INC	R2				; STRPTR
000432	105012 					CLRB	(R2)				; STRPTR
000434	000167  000430 				JMP	32$
000440	020027  000176 			19$:	CMP	R0,#176				;					1800
000444	001006 					BNE	20$
000446	016601  000026 				MOV	26(SP),R1			; DB,*					1857
000452	016661  000002  000024 			MOV	2(SP),24(R1)			; PARM.DATA,*
000460	000566 					BR	30$				;					1800
000462	020027  000202 			20$:	CMP	R0,#202
000466	001006 					BNE	21$
000470	016601  000026 				MOV	26(SP),R1			; DB,*					1859
000474	016661  000002  000026 			MOV	2(SP),26(R1)			; PARM.DATA,*
000502	000555 					BR	30$				;					1800
000504	020027  000203 			21$:	CMP	R0,#203
000510	001006 					BNE	22$
000512	016601  000026 				MOV	26(SP),R1			; DB,*					1861
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  61
X03.52		FETCH_PARAMETERS				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (14)

000516	016661  000002  000030 			MOV	2(SP),30(R1)			; PARM.DATA,*
000524	000603 					BR	5$				;					1800
000526	020027  000207 			22$:	CMP	R0,#207
000532	001005 					BNE	23$
000534	016601  000026 				MOV	26(SP),R1			; DB,*					1863
000540	062701  000036 				ADD	#36,R1
000544	000407 					BR	24$
000546	020027  000210 			23$:	CMP	R0,#210				;					1800
000552	001012 					BNE	25$
000554	016601  000026 				MOV	26(SP),R1			; DB,*					1865
000560	062701  000042 				ADD	#42,R1
000564	016611  000002 			24$:	MOV	2(SP),(R1)			; $$MOV32.SOURCE,*
000570	016661  000004  000002 			MOV	4(SP),2(R1)			; $$MOV32.SOURCE+2,*
000576	000600 					BR	8$				;					1800
000600	020027  000215 			25$:	CMP	R0,#215
000604	001073 					BNE	28$
000606	016602  000026 				MOV	26(SP),R2			; DB,NOD.PTR				1872
000612	062702  000046 				ADD	#46,R2				; *,NOD.PTR
000616	005266  000002 				INC	2(SP)				; PARM.DATA				1873
000622	016600  000002 				MOV	2(SP),R0			; PARM.DATA,*
000626	005001 					CLR	R1				; FMT
000630	156001  177777 				BISB	-1(R0),R1			; *,FMT
000634	005701 					TST	R1				; FMT					1875
000636	001016 					BNE	26$
000640	005266  000002 				INC	2(SP)				; PARM.DATA				1879
000644	016600  000002 				MOV	2(SP),R0			; PARM.DATA,*
000650	116022  177777 				MOVB	-1(R0),(R2)+			; *,NOD.PTR
000654	005266  000002 				INC	2(SP)				; PARM.DATA				1880
000660	016600  000002 				MOV	2(SP),R0			; PARM.DATA,*
000664	116022  177777 				MOVB	-1(R0),(R2)+			; *,NOD.PTR
000670	105022 					CLRB	(R2)+				; NOD.PTR				1881
000672	000605 					BR	12$				;					1875
000674	020127  000006 			26$:	CMP	R1,#6				; FMT,*
000700	101014 					BHI	27$
000702	105022 					CLRB	(R2)+				; NOD.PTR				1885
000704	105022 					CLRB	(R2)+				; NOD.PTR				1886
000706	110122 					MOVB	R1,(R2)+			; FMT,NOD.PTR				1887
000710	010146 					MOV	R1,-(SP)			; FMT,*					1888
000712	016646  000004 				MOV	4(SP),-(SP)			; PARM.DATA,*
000716	010246 					MOV	R2,-(SP)			; NOD.PTR,*
000720	004767  000000G				JSR	PC,BL$MOV
000724	062706  000006 				ADD	#6,SP				;					1884
000730	000610 					BR	15$				;					1875
000732	016603  000026 			27$:	MOV	26(SP),R3			; DB,*					1893
000736	016300  000002 				MOV	2(R3),R0			; *,STRPTR
000742	112720  000367 				MOVB	#367,(R0)+			; *,STRPTR
000746	105020 					CLRB	(R0)+				; STRPTR
000750	105020 					CLRB	(R0)+				; STRPTR
000752	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
000756	012701  000145 				MOV	#145,R1
000762	012702  000001 				MOV	#1,R2
000766	004767  000000G				JSR	PC,$CBDSG
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  62
X03.52		FETCH_PARAMETERS				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (14)

000772	000440 					BR	33$				;					1894
000774	020027  000764 			28$:	CMP	R0,#764				;					1800
001000	001006 					BNE	29$
001002	016600  000026 				MOV	26(SP),R0			; DB,*					1900
001006	016660  000002  000032 			MOV	2(SP),32(R0)			; PARM.DATA,*
001014	000410 					BR	30$				;					1800
001016	020027  000766 			29$:	CMP	R0,#766
001022	001007 					BNE	31$
001024	016600  000026 				MOV	26(SP),R0			; DB,*					1902
001030	016660  000002  000034 			MOV	2(SP),34(R0)			; PARM.DATA,*
001036	000167  176766 			30$:	JMP	1$				;					1800
001042	016601  000026 			31$:	MOV	26(SP),R1			; DB,*					1905
001046	016102  000002 				MOV	2(R1),R2			; *,STRPTR
001052	112722  000352 				MOVB	#352,(R2)+			; *,STRPTR
001056	011600 					MOV	(SP),R0				; PARM.NO,DETAIL
001060	110022 					MOVB	R0,(R2)+			; DETAIL,STRPTR
001062	010003 					MOV	R0,R3				; DETAIL,*
001064	000303 					SWAB	R3
001066	110312 					MOVB	R3,(R2)				; *,STRPTR
001070	005202 				32$:	INC	R2				; STRPTR
001072	105022 					CLRB	(R2)+				; STRPTR
001074	110514 				33$:	MOVB	R5,(R4)				; ENTITY.TYPE,*				1912
001076	016600  000026 				MOV	26(SP),R0			; DB,*					1914
001102	117000  000002 				MOVB	@2(R0),R0			;					1762
001106	042700  177400 				BIC	#177400,R0
001112	062706  000006 				ADD	#6,SP
001116	000207 					RTS	PC
; Routine Size:  296 words,	Routine Base:  $CODE$ + 4570
; Maximum stack depth per invocation:  13 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  63
X03.52		FILE_CLOSE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (15)

;	  1916	%routine ('FILE_CLOSE', FB : ref FILE_DATA_BLOCK) : NML_LKG_DB =
;	  1917	
;	  1918	!++
;	  1919	! Functional description
;	  1920	!
;	  1921	!        This routine closes the file.
;	  1922	!
;	  1923	! Formal parameters
;	  1924	!
;	  1925	!    .FB      Address of the file data block
;	  1926	!
;	  1927	! Implicit inputs: none
;	  1928	!
;	  1929	! Routine value:
;	  1930	!
;	  1931	!    $true    Parameters read from file and put in load data block
;	  1932	!    $false   Failure while reading parameters
;	  1933	!
;	  1934	! Side effects: none
;	  1935	!
;	  1936	!--
;	  1937	
;	  1938	    begin
;	  1939	    NMU$FILE_CLOSE (.FB[FB_FILE_HANDLE], .FB[FB_RESPONSE_PTR]);
;	  1940	    $true
;	  1941	    end;				!End of FILE_CLOSE


						.SBTTL	FILE.CLOSE FILE_CLOSE
000000	011546 				FILE.CLOSE:
						MOV	(R5),-(SP)			; FB,*					1939
000002	016546  000002 				MOV	2(R5),-(SP)			; *(FB),*
000006	004767  000000G				JSR	PC,UF.CLOSE
000012	022626 					CMP	(SP)+,(SP)+			;					1938
000014	012700  000001 				MOV	#1,R0				;					1916
000020	000207 					RTS	PC
; Routine Size:  9 words,	Routine Base:  $CODE$ + 5710
; Maximum stack depth per invocation:  3 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  64
X03.52		FILE_OPEN					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (16)

;	  1942	%routine ('FILE_OPEN', FB : ref FILE_DATA_BLOCK) : NML_LKG_DB =
;	  1943	
;	  1944	!++
;	  1945	! Functional description
;	  1946	!
;	  1947	!        This routine opens the file.
;	  1948	!
;	  1949	! Formal parameters
;	  1950	!
;	  1951	!    .FB      Address of the file data block
;	  1952	!
;	  1953	! Implicit inputs: none
;	  1954	!
;	  1955	! Routine value:
;	  1956	!
;	  1957	!    $true    File opened
;	  1958	!    $false   Open failure - response set
;	  1959	!
;	  1960	! Side effects: none
;	  1961	!
;	  1962	!--
;	  1963	
;	  1964	    begin
;	  1965	    local
;	  1966	         FILE_HANDLE;
;	  1967	
;	  1968	    FILE_HANDLE = NMU$FILE_OPEN (.FB[FB_FILE_TYPE],
;	  1969	                                 0 %(not required)%,
;	  1970	                                 .FB[FB_FILE],
;	  1971	                                 .FB[FB_RESPONSE_PTR]);
;	  1972	
;	  1973	    if .FILE_HANDLE eql 0 then return $false;
;	  1974	
;	  1975	    FB[FB_FILE_HANDLE] = .FILE_HANDLE;
;	  1976	    $true
;	  1977	    end;				!End of FILE_OPEN


						.SBTTL	FILE.OPEN FILE_OPEN
000000	005046 				FILE.OPEN:
						CLR	-(SP)				;					1968
000002	116516  000022 				MOVB	22(R5),(SP)			; *(FB),*
000006	005046 					CLR	-(SP)
000010	016546  000004 				MOV	4(R5),-(SP)			; *(FB),*
000014	016546  000002 				MOV	2(R5),-(SP)			; *(FB),*
000020	004767  000000G				JSR	PC,UF.OPEN
000024	005700 					TST	R0				; FILE.HANDLE				1973
000026	001004 					BNE	1$
000030	062706  000010 				ADD	#10,SP
000034	005000 					CLR	R0
000036	000207 					RTS	PC
000040	010015 				1$:	MOV	R0,(R5)				; FILE.HANDLE,FB			1975
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  65
X03.52		FILE_OPEN					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (16)

000042	062706  000010 				ADD	#10,SP				;					1964
000046	012700  000001 				MOV	#1,R0				;					1942
000052	000207 					RTS	PC
; Routine Size:  22 words,	Routine Base:  $CODE$ + 5732
; Maximum stack depth per invocation:  5 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  66
X03.52		FILE_READ_LABEL					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (17)

;	  1978	%routine ('FILE_READ_LABEL', FB : ref FILE_DATA_BLOCK) : NML_LKG_DB =
;	  1979	
;	  1980	!++
;	  1981	! Functional description
;	  1982	!
;	  1983	!        This routine reads the load parameters from a .SYS image
;	  1984	!        file.  When this routine completes (successfully) the
;	  1985	!        file pointer is positioned at the start of the load image.
;	  1986	!
;	  1987	!
;	  1988	! Formal parameters
;	  1989	!
;	  1990	!    .FB      Address of the load data block
;	  1991	!
;	  1992	! Implicit inputs: none
;	  1993	!
;	  1994	! Routine value:
;	  1995	!
;	  1996	!    $true    Parameters read from file and put in load data block
;	  1997	!    $false   Failure while reading parameters
;	  1998	!
;	  1999	! Side effects: none
;	  2000	!
;	  2001	!--
;	  2002	
;	  2003	    begin
;	  2004	
;	  2005	    local
;	  2006	         BYTE_BUFFER;
;	  2007	
;	  2008	!
;	  2009	! Skip to and read the base address where image is to be loaded
;	  2010	!
;	  2011	
;	  2012	    if not NMU$FILE_SEEK (.FB[FB_FILE_HANDLE], L$BSA, .FB[FB_RESPONSE_PTR])
;	  2013	    then return $false;
;	  2014	
;	  2015	    begin
;	  2016	    local
;	  2017	         PTR;
;	  2018	
;	  2019	    PTR = ch$ptr (BYTE_BUFFER,, 8);
;	  2020	
;	  2021	    if 0 geq NMU$FILE_READ (.FB[FB_FILE_HANDLE], .PTR, 2, .FB[FB_RESPONSE_PTR])
;	  2022	    then
;	  2023	        begin
;	P 2024	        $RESPONSE_X (.FB[FB_RESPONSE_PTR], NICE$_FIO, .FB[FB_FILE_TYPE],
;	  2025	                     'Could not read image file', 119);
;	  2026	        return $false;
;	  2027	        end;
;	  2028	
;	  2029	    %movi32 (GETW (PTR), FB[FB_CURRENT_ADDRESS]);
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  67
X03.52		FILE_READ_LABEL					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (17)

;	  2030	    end;
;	  2031	!
;	  2032	! Skip to and read the number of bytes in the image
;	  2033	!
;	  2034	    if not NMU$FILE_SEEK (.FB[FB_FILE_HANDLE], L$BLDZ, .FB[FB_RESPONSE_PTR])
;	  2035	    then return $false;
;	  2036	
;	  2037	    begin
;	  2038	    local
;	  2039	         PTR;
;	  2040	
;	  2041	    PTR = ch$ptr (BYTE_BUFFER,, 8);
;	  2042	
;	  2043	    if 0 geq NMU$FILE_READ (.FB[FB_FILE_HANDLE], .PTR, 2, .FB[FB_RESPONSE_PTR])
;	  2044	    then
;	  2045	        begin
;	P 2046	        $RESPONSE_X (.FB[FB_RESPONSE_PTR], NICE$_FIO, .FB[FB_FILE_TYPE],
;	  2047	                     'Could not read image file', 119);
;	  2048	        return $false;
;	  2049	        end;
;	  2050	
;	  2051	    %movi32 (GETW (PTR), FB[FB_BYTES_LEFT]);
;	  2052	    end;
;	  2053	    %asli32 (6, FB[FB_BYTES_LEFT]);
;	  2054	!
;	  2055	! Skip to and read the flags word in the header
;	  2056	!
;	  2057	    if not NMU$FILE_SEEK (.FB[FB_FILE_HANDLE], L$BFLG, .FB[FB_RESPONSE_PTR])
;	  2058	    then return $false;
;	  2059	
;	  2060	    begin
;	  2061	    local
;	  2062	         PTR,
;	  2063	         VALUE;
;	  2064	
;	  2065	    PTR = ch$ptr (BYTE_BUFFER,, 8);
;	  2066	
;	  2067	    if 0 geq NMU$FILE_READ (.FB[FB_FILE_HANDLE], .PTR, 2, .FB[FB_RESPONSE_PTR])
;	  2068	    then
;	  2069	        begin
;	P 2070	        $RESPONSE_X (.FB[FB_RESPONSE_PTR], NICE$_FIO, .FB[FB_FILE_TYPE],
;	  2071	                     'Could not read image file', 119);
;	  2072	        return $false;
;	  2073	        end;
;	  2074	
;	  2075	    VALUE = GETW (PTR);
;	  2076	
;	  2077	    if .VALUE <14, 1> eql 0
;	  2078	    then
;	  2079	        begin
;	P 2080	        $RESPONSE_X (.FB[FB_RESPONSE_PTR], NICE$_IFC, .FB[FB_FILE_TYPE],
;	  2081	                   'Header found in image file', 111);
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  68
X03.52		FILE_READ_LABEL					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (17)

;	  2082	        return $false;
;	  2083	        end;
;	  2084	
;	  2085	    end;
;	  2086	!
;	  2087	! Skip to and read the transfer address for the image
;	  2088	!
;	  2089	    if not NMU$FILE_SEEK (.FB[FB_FILE_HANDLE], L$BXFR, .FB[FB_RESPONSE_PTR])
;	  2090	    then return $false;
;	  2091	
;	  2092	    begin
;	  2093	    local
;	  2094	         TEMP,
;	  2095	         PTR;
;	  2096	
;	  2097	    PTR = ch$ptr (BYTE_BUFFER,, 8);
;	  2098	
;	  2099	    if 0 geq NMU$FILE_READ (.FB[FB_FILE_HANDLE], .PTR, 2, .FB[FB_RESPONSE_PTR])
;	  2100	    then
;	  2101	        begin
;	P 2102	        $RESPONSE_X (.FB[FB_RESPONSE_PTR], NICE$_FIO, .FB[FB_FILE_TYPE],
;	  2103	                     'Could not read image file', 119);
;	  2104	        return $false;
;	  2105	        end;
;	  2106	
;	  2107	    TEMP = GETW (PTR);
;	  2108	    %movt32 (TEMP, FB[FB_TRANSFER_ADDRESS]);
;	  2109	    end;
;	  2110	!
;	  2111	! Skip to and read the block offset to the image in file (512 bytes
;	  2112	! per block).
;	  2113	!
;	  2114	    if not NMU$FILE_SEEK (.FB[FB_FILE_HANDLE], L$BHRB, .FB[FB_RESPONSE_PTR])
;	  2115	    then return $false;
;	  2116	
;	  2117	    begin
;	  2118	    local
;	  2119	         PTR;
;	  2120	
;	  2121	    PTR = ch$ptr (BYTE_BUFFER,, 8);
;	  2122	
;	  2123	    if 0 geq NMU$FILE_READ (.FB[FB_FILE_HANDLE], .PTR, 2, .FB[FB_RESPONSE_PTR])
;	  2124	    then
;	  2125	        begin
;	P 2126	        $RESPONSE_X (.FB[FB_RESPONSE_PTR], NICE$_FIO, .FB[FB_FILE_TYPE],
;	  2127	                     'Could not read image file', 119);
;	  2128	        return $false;
;	  2129	        end;
;	  2130	
;	  2131	    BYTE_BUFFER = GETW (PTR) * 512;
;	  2132	    end;
;	  2133	
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  69
X03.52		FILE_READ_LABEL					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (17)

;	  2134	    if not NMU$FILE_SEEK (.FB[FB_FILE_HANDLE], .BYTE_BUFFER, .FB[FB_RESPONSE_PTR])
;	  2135	    then return $false;
;	  2136	
;	  2137	    $true
;	  2138	    end;				!End of FILE_READ_LABEL


						.SBTTL	FILE.READ.LABEL FILE_READ_LABEL
000000	004167  000000G			FILE.READ.LABEL:
						JSR	R1,$SAVE4			;					1978
000004	024646 					CMP	-(SP),-(SP)
000006	011546 					MOV	(R5),-(SP)			; FB,*					2012
000010	012746  000010 				MOV	#10,-(SP)
000014	012704  000002 				MOV	#2,R4
000020	060504 					ADD	R5,R4				; FB,*
000022	011446 					MOV	(R4),-(SP)
000024	004767  000000G				JSR	PC,UF.SEEK
000030	062706  000006 				ADD	#6,SP
000034	006000 					ROR	R0
000036	103167 					BHIS	3$				;					2013
000040	010603 					MOV	SP,R3				; BYTE.BUFFER,PTR			2019
000042	011546 					MOV	(R5),-(SP)			; FB,*					2021
000044	010346 					MOV	R3,-(SP)			; PTR,*
000046	012746  000002 				MOV	#2,-(SP)
000052	011446 					MOV	(R4),-(SP)
000054	004767  000000G				JSR	PC,UF.READ
000060	062706  000010 				ADD	#10,SP
000064	005700 					TST	R0
000066	003567 					BLE	4$				;					2025
000070	112366  000002 				MOVB	(R3)+,2(SP)			; PTR,$$GETB.X				2029
000074	112366  000003 				MOVB	(R3)+,3(SP)			; PTR,$$GETB.X
000100	016665  000002  000006 			MOV	2(SP),6(R5)			; $$GETB.X,*(FB)
000106	005065  000010 				CLR	10(R5)				; *(FB)
000112	011546 					MOV	(R5),-(SP)			; FB,*					2034
000114	012746  000016 				MOV	#16,-(SP)
000120	011446 					MOV	(R4),-(SP)
000122	004767  000000G				JSR	PC,UF.SEEK
000126	062706  000006 				ADD	#6,SP
000132	006000 					ROR	R0
000134	103170 					BHIS	5$				;					2035
000136	010603 					MOV	SP,R3				; BYTE.BUFFER,PTR			2041
000140	011546 					MOV	(R5),-(SP)			; FB,*					2043
000142	010346 					MOV	R3,-(SP)			; PTR,*
000144	012746  000002 				MOV	#2,-(SP)
000150	011446 					MOV	(R4),-(SP)
000152	004767  000000G				JSR	PC,UF.READ
000156	062706  000010 				ADD	#10,SP
000162	005700 					TST	R0
000164	003571 					BLE	6$				;					2047
000166	012701  000012 				MOV	#12,R1				;					2051
000172	060501 					ADD	R5,R1				; FB,*
000174	112366  000002 				MOVB	(R3)+,2(SP)			; PTR,$$GETB.X
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  70
X03.52		FILE_READ_LABEL					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (17)

000200	062703  000001 				ADD	#1,R3				; *,PTR
000204	116366  177777  000003 			MOVB	-1(R3),3(SP)			; *(PTR),$$GETB.X
000212	016611  000002 				MOV	2(SP),(R1)			; $$GETB.X,*
000216	012761  000000  000002 			MOV	#0,2(R1)
000224	012700  000006 				MOV	#6,R0				; *,$$ASL.INDEX				2053
000230	006111 				1$:	ROL	(R1)
000232	006161  000002 				ROL	2(R1)
000236	077004 					SOB	R0,1$				; $$ASL.INDEX,*				0000
000240	011546 					MOV	(R5),-(SP)			; FB,*					2057
000242	012746  000030 				MOV	#30,-(SP)
000246	011446 					MOV	(R4),-(SP)
000250	004767  000000G				JSR	PC,UF.SEEK
000254	062706  000006 				ADD	#6,SP
000260	006000 					ROR	R0
000262	103177 					BHIS	9$				;					2058
000264	010603 					MOV	SP,R3				; BYTE.BUFFER,PTR			2065
000266	011546 					MOV	(R5),-(SP)			; FB,*					2067
000270	010346 					MOV	R3,-(SP)			; PTR,*
000272	012746  000002 				MOV	#2,-(SP)
000276	011446 					MOV	(R4),-(SP)
000300	004767  000000G				JSR	PC,UF.READ
000304	062706  000010 				ADD	#10,SP
000310	005700 					TST	R0
000312	003516 					BLE	6$				;					2071
000314	112366  000002 				MOVB	(R3)+,2(SP)			; PTR,$$GETB.X				2075
000320	112366  000003 				MOVB	(R3)+,3(SP)			; PTR,$$GETB.X
000324	016600  000002 				MOV	2(SP),R0			; $$GETB.X,VALUE
000330	032700  040000 				BIT	#40000,R0			; *,VALUE				2077
000334	001017 					BNE	2$
000336	011400 					MOV	(R4),R0				; *,STRPTR				2081
000340	112720  000362 				MOVB	#362,(R0)+			; *,STRPTR
000344	005001 					CLR	R1				; DETAIL
000346	156501  000022 				BISB	22(R5),R1			; *(FB),DETAIL
000352	110120 					MOVB	R1,(R0)+			; DETAIL,STRPTR
000354	010102 					MOV	R1,R2				; DETAIL,*
000356	000302 					SWAB	R2
000360	110220 					MOVB	R2,(R0)+			; *,STRPTR
000362	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
000366	012701  000157 				MOV	#157,R1
000372	000504 					BR	7$
000374	011546 				2$:	MOV	(R5),-(SP)			; FB,*					2089
000376	012746  000350 				MOV	#350,-(SP)
000402	011446 					MOV	(R4),-(SP)
000404	004767  000000G				JSR	PC,UF.SEEK
000410	062706  000006 				ADD	#6,SP
000414	006000 					ROR	R0
000416	103121 				3$:	BHIS	9$				;					2090
000420	010603 					MOV	SP,R3				; BYTE.BUFFER,PTR			2097
000422	011546 					MOV	(R5),-(SP)			; FB,*					2099
000424	010346 					MOV	R3,-(SP)			; PTR,*
000426	012746  000002 				MOV	#2,-(SP)
000432	011446 					MOV	(R4),-(SP)
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  71
X03.52		FILE_READ_LABEL					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (17)

000434	004767  000000G				JSR	PC,UF.READ
000440	062706  000010 				ADD	#10,SP
000444	005700 					TST	R0
000446	003440 				4$:	BLE	6$				;					2103
000450	112366  000002 				MOVB	(R3)+,2(SP)			; PTR,$$GETB.X				2107
000454	112366  000003 				MOVB	(R3)+,3(SP)			; PTR,$$GETB.X
000460	016600  000002 				MOV	2(SP),R0			; $$GETB.X,TEMP
000464	010065  000016 				MOV	R0,16(R5)			; TEMP,*(FB)				2108
000470	005065  000020 				CLR	20(R5)				; *(FB)
000474	011546 					MOV	(R5),-(SP)			; FB,*					2114
000476	012746  000356 				MOV	#356,-(SP)
000502	011446 					MOV	(R4),-(SP)
000504	004767  000000G				JSR	PC,UF.SEEK
000510	062706  000006 				ADD	#6,SP
000514	006000 					ROR	R0
000516	103061 				5$:	BHIS	9$				;					2115
000520	010603 					MOV	SP,R3				; BYTE.BUFFER,PTR			2121
000522	011546 					MOV	(R5),-(SP)			; FB,*					2123
000524	010346 					MOV	R3,-(SP)			; PTR,*
000526	012746  000002 				MOV	#2,-(SP)
000532	011446 					MOV	(R4),-(SP)
000534	004767  000000G				JSR	PC,UF.READ
000540	062706  000010 				ADD	#10,SP
000544	005700 					TST	R0
000546	003023 					BGT	8$
000550	011400 				6$:	MOV	(R4),R0				; *,STRPTR				2127
000552	112720  000356 				MOVB	#356,(R0)+			; *,STRPTR
000556	005001 					CLR	R1				; DETAIL
000560	156501  000022 				BISB	22(R5),R1			; *(FB),DETAIL
000564	110120 					MOVB	R1,(R0)+			; DETAIL,STRPTR
000566	010102 					MOV	R1,R2				; DETAIL,*
000570	000302 					SWAB	R2
000572	110220 					MOVB	R2,(R0)+			; *,STRPTR
000574	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
000600	012701  000167 				MOV	#167,R1
000604	012702  000001 			7$:	MOV	#1,R2
000610	004767  000000G				JSR	PC,$CBDSG
000614	000422 					BR	9$				;					2125
000616	112366  000002 			8$:	MOVB	(R3)+,2(SP)			; PTR,$$GETB.X				2131
000622	112366  000003 				MOVB	(R3)+,3(SP)			; PTR,$$GETB.X
000626	016600  000002 				MOV	2(SP),R0			; $$GETB.X,*
000632	072027  000011 				ASH	#11,R0
000636	010016 					MOV	R0,(SP)				; *,BYTE.BUFFER
000640	011546 					MOV	(R5),-(SP)			; FB,*					2134
000642	010046 					MOV	R0,-(SP)			; BYTE.BUFFER,*
000644	011446 					MOV	(R4),-(SP)
000646	004767  000000G				JSR	PC,UF.SEEK
000652	062706  000006 				ADD	#6,SP
000656	006000 					ROR	R0
000660	103402 					BLO	10$
000662	005000 				9$:	CLR	R0				;					2135
000664	000402 					BR	11$
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  72
X03.52		FILE_READ_LABEL					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (17)

000666	012700  000001 			10$:	MOV	#1,R0				;					1978
000672	022626 				11$:	CMP	(SP)+,(SP)+
000674	000207 					RTS	PC
; Routine Size:  223 words,	Routine Base:  $CODE$ + 6006
; Maximum stack depth per invocation:  12 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  73
X03.52		GET_NEXT_PARAMETER				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (18)

;	  2139	%routine  ('GET_NEXT_PARAMETER', REQ : ref REQUEST_BLOCK, PARM_NO, PARM_DATA) =
;	  2140	
;	  2141	!++
;	  2142	! Functional description:
;	  2143	!
;	  2144	!	Obtains the next parameter in the NICE request message.
;	  2145	!
;	  2146	! Formal parameters:
;	  2147	!
;	  2148	!	.REQ		The address of the NML Request Block for this request.
;	  2149	!       .PARM_NO	Address of variable to return parameter number.
;	  2150	!       .PARM_DATA	Address of variable in which to return parameter data.
;	  2151	!
;	  2152	! Implicit inputs:
;	  2153	!
;	  2154	!	.REQ [RB_NICE_PARAMETERS]	Contains a pointer to the previous
;	  2155	!				 	 parameter.
;	  2156	!       .REQ [RB_NICE_PARAMETER_LENGTH]	Contains the length of the previous
;	  2157	!					 parameter in bytes.
;	  2158	!
;	  2159	! Routine value:
;	  2160	!
;	  2161	!	$true, if the next parameter exists.
;	  2162	!       $false, otherwise.
;	  2163	!
;	  2164	! Side effects: none
;	  2165	!
;	  2166	!--
;	  2167	
;	  2168	    begin
;	  2169	
;	  2170	    local
;	  2171	         PARM_PTR ;                     ! Pointer to NICE parameter
;	  2172	
;	  2173	    REQ[RB_NICE_PARAMETERS] = ch$plus (.REQ[RB_NICE_PARAMETERS],
;	  2174	                                       .REQ[RB_NICE_PARAMETER_LENGTH]) ;
;	  2175	
;	  2176	    !
;	  2177	    ! Return false when all parameters have been processed.
;	  2178	    !
;	  2179	
;	  2180	    if ch$diff (.REQ[RB_NICE_PARAMETERS],.REQ[RB_NICE_POINTER]) geq .REQ[RB_NICE_LENGTH]
;	  2181	    then begin
;	  2182	         REQ[RB_NICE_PARAMETER_LENGTH] = 0 ;
;	  2183	         return $false;
;	  2184	         end;
;	  2185	
;	  2186	    !
;	  2187	    ! Get length of the parameter, to include the data portion plus
;	  2188	    ! two bytes for the DATA ID field.
;	  2189	    !
;	  2190	
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  74
X03.52		GET_NEXT_PARAMETER				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (18)

;	  2191	    PARM_PTR = .REQ[RB_NICE_PARAMETERS] ; ! Make copy of pointer
;	  2192	    .PARM_NO = GETW (PARM_PTR) ;         ! Get parameter number
;	  2193	    REQ[RB_NICE_PARAMETER_LENGTH] = NML$PARAMETER_DATA (.REQ[RB_NICE_ENTITY_TYPE],
;	  2194	                                                        ..PARM_NO,
;	  2195	                                                        PARM_PTR,
;	  2196	                                                        .PARM_DATA) + 2 ;
;	  2197	
;	  2198	    !
;	  2199	    ! If this parameter is a qualifier, then call ourself recursively
;	  2200	    ! to skip over the qualifier to the next real parameter.
;	  2201	    !
;	  2202	
;	  2203	    if .REQ[RB_NICE_PARAMETERS] eql .REQ[RB_NICE_QUALIFIER]
;	  2204	    then return GET_NEXT_PARAMETER (.REQ, .PARM_NO, .PARM_DATA);
;	  2205	
;	  2206	    return $true
;	  2207	
;	  2208	    end;				!End of GET_NEXT_PARAMETER


						.SBTTL	GET.NEXT.PARAMETER GET_NEXT_PARAMETER
000000	004167  000000G			GET.NEXT.PARAMETER:
						JSR	R1,$SAVE4			;					2139
000004	024646 					CMP	-(SP),-(SP)
000006	016601  000024 				MOV	24(SP),R1			; REQ,*					2173
000012	012704  000104 				MOV	#104,R4
000016	060104 					ADD	R1,R4
000020	012703  000106 				MOV	#106,R3				;					2174
000024	060103 					ADD	R1,R3
000026	061314 					ADD	(R3),(R4)
000030	011400 					MOV	(R4),R0				;					2180
000032	166100  000066 				SUB	66(R1),R0
000036	020061  000030 				CMP	R0,30(R1)
000042	002402 					BLT	1$
000044	005013 					CLR	(R3)				;					2182
000046	000456 					BR	3$				;					2181
000050	011416 				1$:	MOV	(R4),(SP)			; *,PARM.PTR				2191
000052	016602  000022 				MOV	22(SP),R2			; PARM.NO,*				2192
000056	005216 					INC	(SP)				; PARM.PTR
000060	011600 					MOV	(SP),R0				; PARM.PTR,*
000062	116066  177777  000002 			MOVB	-1(R0),2(SP)			; *,$$GETB.X
000070	005216 					INC	(SP)				; PARM.PTR
000072	011600 					MOV	(SP),R0				; PARM.PTR,*
000074	116066  177777  000003 			MOVB	-1(R0),3(SP)			; *,$$GETB.X
000102	016612  000002 				MOV	2(SP),(R2)			; $$GETB.X,*
000106	005046 					CLR	-(SP)				;					2193
000110	116116  000074 				MOVB	74(R1),(SP)
000114	011246 					MOV	(R2),-(SP)
000116	012746  000006 				MOV	#6,-(SP)
000122	060616 					ADD	SP,(SP)				; PARM.PTR,*
000124	016646  000026 				MOV	26(SP),-(SP)			; PARM.DATA,*
000130	004767  000000G				JSR	PC,NL.PDA
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  75
X03.52		GET_NEXT_PARAMETER				14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (18)

000134	010013 					MOV	R0,(R3)				;					2196
000136	062713  000002 				ADD	#2,(R3)
000142	021461  000110 				CMP	(R4),110(R1)			;					2203
000146	001011 					BNE	2$
000150	010116 					MOV	R1,(SP)				;					2204
000152	010246 					MOV	R2,-(SP)
000154	016646  000032 				MOV	32(SP),-(SP)			; PARM.DATA,*
000160	004767  177614 				JSR	PC,GET.NEXT.PARAMETER
000164	062706  000014 				ADD	#14,SP
000170	000406 					BR	4$
000172	062706  000010 			2$:	ADD	#10,SP				;					2139
000176	012700  000001 				MOV	#1,R0				;					2168
000202	000401 					BR	4$
000204	005000 				3$:	CLR	R0				;					2139
000206	022626 				4$:	CMP	(SP)+,(SP)+
000210	000207 					RTS	PC
; Routine Size:  69 words,	Routine Base:  $CODE$ + 6704
; Maximum stack depth per invocation:  14 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  76
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

;	  2209	%routine ('IMAGE_LOAD', DATA : ref SERVICE_DATA_BLOCK, FILE_TYPE, FILE) : NML_LKG_DB =
;	  2210	
;	  2211	!++
;	  2212	! Functional description:
;	  2213	!
;	  2214	!	This routine is called by the LOAD_NODE routine to perform
;	  2215	!	a core image transfer TO a target node.  The images that
;	  2216	!	this routine sends are for either a TERTIARY LOADER or
;	  2217	!	SYSTEM IMAGE.
;	  2218	!
;	  2219	! Formal parameters
;	  2220	!
;	  2221	!	.DATA           Address of load data block
;	  2222	!       .FILE_TYPE      Type of file for error response
;	  2223	!       .FILE           Pointer to ASCIZ file name
;	  2224	!
;	  2225	! Implicit inputs: none
;	  2226	!
;	  2227	! Routine value:
;	  2228	!
;	  2229	!	$true	image was sent to node successfully
;	  2230	!	$false	failure while sending image
;	  2231	!
;	  2232	! Side effects: none
;	  2233	!
;	  2234	!--
;	  2235	
;	  2236	    begin
;	  2237	    macro
;	M 2238	         ABORT (FB) =
;	M 2239	             begin
;	M 2240	             FILE_CLOSE (FB);
;	M 2241	             return $false
;	  2242	             end %;
;	  2243	
;	  2244	    local
;	  2245	         FB : FILE_DATA_BLOCK,
;	  2246	         TARGET_NAME,
;	  2247	         TARGET_NUMBER;
;	  2248	
;	  2249	!
;	  2250	! Get the needed information for the load
;	  2251	!
;	  2252	    FB[FB_RESPONSE_PTR] = .DATA [SB_RESPONSE_PTR];
;	  2253	    FB[FB_FILE_TYPE] = .FILE_TYPE;
;	  2254	    FB[FB_FILE] = .FILE;
;	  2255	
;	  2256	    if not CPU_IS_PDP11 (.DATA) then return $false;
;	  2257	
;	  2258	    if (TARGET_NUMBER = .DATA [LB_ADDRESS]) eql 0
;	  2259	    then
;	  2260	        TARGET_NUMBER =  .DATA [SB_NODE_DATA];
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  77
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

;	  2261	
;	  2262	    if (TARGET_NAME = .DATA [LB_NAME]) eql 0
;	  2263	    then
;	  2264	        TARGET_NAME = ch$plus (.DATA [SB_NODE_DATA],2)
;	  2265	    else
;	  2266	        TARGET_NAME = ch$plus (.TARGET_NAME,2);
;	  2267	
;	  2268	    begin
;	  2269	    local PTR, TEMP;
;	  2270	
;	  2271	    PTR = ch$ptr (DATA [LB_HOST],, 8);
;	  2272	    if (ch$rchar_a (PTR) eqlu 0) and
;	  2273	       (ch$rchar_a (PTR) eqlu 0) and
;	  2274	       (ch$rchar_a (PTR) eqlu 0)
;	  2275	    then
;	  2276	        if NML$GET_VDB_PARAMETER (NODE_E, .DATA [SB_NODE_DATA],
;	  2277	                                  140, TEMP)
;	  2278	        then
;	  2279	            begin
;	  2280	            PTR = .TEMP;                ! (for optimization)
;	  2281	            ch$move (ch$rchar (ch$plus (.PTR, 2)) + 3, .PTR, ch$ptr (DATA [LB_HOST],, 8));
;	  2282	            end;
;	  2283	
;	  2284	    TEMP = NODE_ID_BUFFER_LENGTH;
;	  2285	    $NML$MAP_NODE_ID (TEMP, ch$ptr (DATA [LB_HOST],, 8));
;	  2286	
;	  2287	    PTR = ch$ptr (DATA [LB_HOST],, 8);
;	  2288	    if (ch$rchar_a (PTR) eqlu 0) and
;	  2289	       (ch$rchar_a (PTR) eqlu 0)
;	  2290	    then
;	  2291	        begin
;	  2292	        PTR = NMU$NETWORK_LOCAL();
;	  2293	        ch$move (ch$rchar (ch$plus (.PTR, 2)) + 3, .PTR, ch$ptr (DATA [LB_HOST],, 8));
;	  2294	        end;
;	  2295	
;	  2296	    end;
;	  2297	
;	  2298	!
;	  2299	! Open the image file.
;	  2300	!
;	  2301	
;	  2302	    if not FILE_OPEN (FB) then return $false;
;	  2303	
;	  2304	!
;	  2305	! Read the image base address, size of image and transfer address.
;	  2306	! If anything looks wrong .. make the load fail.
;	  2307	!
;	  2308	
;	  2309	    if not FILE_READ_LABEL (FB) then ABORT (FB);
;	  2310	
;	  2311	    begin
;	  2312	    local
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  78
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

;	  2313	        LOAD_NUMBER;
;	  2314	
;	  2315	!
;	  2316	! Send the image file to the target system.
;	  2317	! If no failure occured then start the program just
;	  2318	! loaded.
;	  2319	!
;	  2320	
;	  2321	    begin
;	  2322	    local
;	  2323	        LENGTH;
;	  2324	
;	  2325	!
;	  2326	! Start at the beginning of the load.
;	  2327	!
;	  2328	    LOAD_NUMBER = 0;
;	  2329	    LENGTH = 0;
;	  2330	!
;	  2331	! Loop reading from the image file and passing it on
;	  2332	! to the target system.
;	  2333	!
;	  2334	    until %cmpi32 (FB[FB_BYTES_LEFT], leq, 0) do
;	  2335		begin
;	  2336	
;	  2337	!
;	  2338	! Read in the next load message if the load number has
;	  2339	! been incremented.
;	  2340	!
;	  2341		if .LENGTH eql 0
;	  2342		then
;	  2343		    begin
;	  2344	            local
;	  2345	                 BUFFER_PTR;
;	  2346	
;	  2347	            BUFFER_PTR = .DATA [SB_BUFFER_PTR];
;	  2348	            PUTB (LOAD_WITHOUT_TRANSFER, BUFFER_PTR);
;	  2349	            PUTB (.LOAD_NUMBER, BUFFER_PTR);
;	  2350	            PUT32 (FB[FB_CURRENT_ADDRESS], BUFFER_PTR);
;	  2351	            LENGTH = MOP_LOAD_DATA_LENGTH;
;	  2352	
;	  2353	            if %cmpi32 (FB[FB_BYTES_LEFT], leq, .LENGTH)
;	  2354	            then %movf32 (FB[FB_BYTES_LEFT], LENGTH);
;	  2355	
;	  2356		    if 0 geq NMU$FILE_READ (.FB[FB_FILE_HANDLE], .BUFFER_PTR,
;	  2357	                                    .LENGTH, .FB[FB_RESPONSE_PTR])
;	  2358		    then begin
;	P 2359	                 $RESPONSE_X (.FB[FB_RESPONSE_PTR], NICE$_FIO, .FB[FB_FILE_TYPE],
;	  2360	                              'Could not read image file', 119);
;	  2361	                 ABORT (FB);
;	  2362	                 end;
;	  2363	
;	  2364	            %addi32 (.LENGTH, FB[FB_CURRENT_ADDRESS]);
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  79
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

;	  2365	            LENGTH = .LENGTH + 6;
;	  2366		    end;
;	  2367	
;	  2368	        %(do a $NMU_DLX_WRITE_READ)%
;	  2369	!
;	  2370	! Write the load memory message to the target node, and read the
;	  2371	! acknowledgement.  Retransmit until the proper message has been
;	  2372	! acknowledged.
;	  2373	!
;	  2374	        begin
;	  2375	        local RESULT;
;	  2376	        decru TIMES from NMU$K_MOP_RETRY_LIMIT to 1 do
;	  2377	            begin
;	P 2378		    if not $NMU_DLX_WRITE (.DATA [SB_CIRCUIT_HANDLE], DLX_DATA,
;	P 2379	                                .DATA [SB_BUFFER_PTR], .LENGTH,
;	  2380	                                .DATA [SB_RESPONSE_PTR])
;	  2381	            then exitloop RESULT = -1;
;	  2382	
;	P 2383	            RESULT = $NMU_DLX_READ (.DATA [SB_CIRCUIT_HANDLE], DLX_DATA,
;	P 2384	                               .DATA [SB_BUFFER_PTR], MOP_BUFFER_LENGTH,,
;	  2385	                               .DATA [SB_RESPONSE_PTR]);
;	  2386	            if .RESULT neq -2 then exitloop;
;	  2387	            end;
;	  2388	
;	  2389	        if .RESULT lss 0
;	  2390	        then
;	  2391	            begin
;	  2392	            $RESPONSE_X (.FB[FB_RESPONSE_PTR], NICE$_LCE);
;	  2393	            ABORT (FB);
;	  2394	            end;
;	  2395	        end;
;	  2396	!
;	  2397	! If a request for the next memory load comes in, then setup
;	  2398	! the memory load number.  Otherwise make the load fail.
;	  2399	!
;	  2400	        begin
;	  2401	        local
;	  2402	             BUFFER_PTR;
;	  2403	
;	  2404		BUFFER_PTR = .DATA [SB_BUFFER_PTR];
;	  2405	
;	  2406		selectone GETB (BUFFER_PTR) of
;	  2407		    set
;	  2408	
;	  2409		    [REQUEST_MEMORY_LOAD] :
;	  2410	                begin
;	  2411	                local
;	  2412	                     LOADNUM;
;	  2413	
;	  2414			LOADNUM = GETB (BUFFER_PTR);
;	  2415	
;	  2416	                if .LOADNUM neq .LOAD_NUMBER
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  80
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

;	  2417	                then
;	  2418	                    begin
;	  2419	                    LOAD_NUMBER = (.LOAD_NUMBER + 1) and %o'377';
;	  2420	
;	  2421	                    if .LOADNUM neq .LOAD_NUMBER
;	  2422	                    then
;	  2423	                        begin
;	P 2424	                        $RESPONSE_X (.DATA [SB_RESPONSE_PTR], NICE$_LPE, 0,
;	  2425	                                     'Invalid load number requested', 108);
;	  2426	                        ABORT (FB);
;	  2427	                        end;
;	  2428	
;	  2429	                    end;
;	  2430	
;	  2431	                %subi32 ((.LENGTH-6), FB[FB_BYTES_LEFT]);
;	  2432	                LENGTH = 0;
;	  2433	                end;
;	  2434		    [otherwise] :
;	  2435			begin
;	P 2436			$RESPONSE_X (.DATA [SB_RESPONSE_PTR], NICE$_LPE, 0,
;	  2437	                           'Invalid MOP response to MEMORY LOAD', 109);
;	  2438			ABORT (FB);
;	  2439			end;
;	  2440		    tes;
;	  2441	
;	  2442	        end;
;	  2443		end;
;	  2444	
;	  2445	    end;
;	  2446	    FILE_CLOSE (FB);
;	  2447	!
;	  2448	! Okay, image loaded. Now give him the parameters and start him up.
;	  2449	!
;	  2450	    begin
;	  2451	    local
;	  2452	         BUFFER_PTR, LENGTH;
;	  2453	
;	  2454	    BUFFER_PTR = .DATA [SB_BUFFER_PTR];
;	  2455	    !
;	  2456	    ! Put "parameters with transfer" MOP message code
;	  2457	    ! and the load number into MOP buffer.
;	  2458	    !
;	  2459	    PUTB (PARAMETERS_WITH_TRANSFER, BUFFER_PTR);
;	  2460	
;	  2461	    PUTB (.LOAD_NUMBER, BUFFER_PTR);
;	  2462	
;	  2463	    PUTB (2, BUFFER_PTR);           ! Target node number
;	  2464	    PUTB (2, BUFFER_PTR);
;	  2465	    PUTB (GETB (TARGET_NUMBER), BUFFER_PTR);
;	  2466	    PUTB (GETB (TARGET_NUMBER), BUFFER_PTR);
;	  2467	
;	  2468	    if (LENGTH = GETB (TARGET_NAME)) neq 0
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  81
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

;	  2469	    then
;	  2470	        begin
;	  2471	        PUTB (1, BUFFER_PTR);       ! Target node name
;	  2472	        PUTB (.LENGTH, BUFFER_PTR);
;	  2473	        BUFFER_PTR = ch$move (.LENGTH, .TARGET_NAME, .BUFFER_PTR);
;	  2474	        end;
;	  2475	
;	  2476	    if (LENGTH = ch$rchar (ch$ptr (DATA [LB_HOST], 2, 8))) neq 0
;	  2477	    then
;	  2478	        begin
;	  2479	        PUTB (3, BUFFER_PTR);       ! Host node name
;	  2480	        PUTB (.LENGTH, BUFFER_PTR);
;	  2481	        BUFFER_PTR = ch$move (.LENGTH, ch$ptr (DATA [LB_HOST], 3, 8), .BUFFER_PTR);
;	  2482	        end;
;	  2483	
;	  2484	    PUTB (4, BUFFER_PTR);           ! Host node number
;	  2485	    PUTB (2, BUFFER_PTR);
;	  2486	    PUTB (ch$rchar (ch$ptr (DATA [LB_HOST], 0, 8)), BUFFER_PTR);
;	  2487	    PUTB (ch$rchar (ch$ptr (DATA [LB_HOST], 1, 8)), BUFFER_PTR);
;	  2488	
;	  2489	    PUTB (0, BUFFER_PTR);           ! End of parameters
;	  2490	
;	  2491	    PUT32 (FB[FB_TRANSFER_ADDRESS], BUFFER_PTR);
;	  2492	
;	  2493	    BUFFER_PTR = ch$diff (.BUFFER_PTR, .DATA [SB_BUFFER_PTR]);
;	  2494	
;	P 2495	    if not $NMU_DLX_WRITE (.DATA [SB_CIRCUIT_HANDLE], DLX_DATA,
;	P 2496	                            .DATA [SB_BUFFER_PTR], .BUFFER_PTR,
;	  2497	                            .DATA [SB_RESPONSE_PTR])
;	  2498	    then return $false;
;	  2499	
;	  2500	    end;
;	  2501	    end;
;	  2502	    $true
;	  2503	    end;



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


						.GLOBL	LUN$NS, EFN$NS


						.SBTTL	IMAGE.LOAD IMAGE_LOAD
007116						.PSECT	$CODE$,  RO 

000000	004167  000000G			IMAGE.LOAD:
						JSR	R1,$SAVE5			;					2209
000004	162706  000046 				SUB	#46,SP
000010	010566  000006 				MOV	R5,6(SP)
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  82
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

000014	012700  000002 				MOV	#2,R0				;					2252
000020	060500 					ADD	R5,R0
000022	010066  000012 				MOV	R0,12(SP)
000026	011066  000024 				MOV	(R0),24(SP)			; *,FB+2
000032	116666  000066  000044 			MOVB	66(SP),44(SP)			; FILE.TYPE,FB+22			2253
000040	016666  000064  000026 			MOV	64(SP),26(SP)			; FILE,FB+4				2254
000046	004767  173074 				JSR	PC,CPU.IS.PDP11			;					2256
000052	006000 					ROR	R0
000054	103160 					BHIS	5$
000056	016600  000006 				MOV	6(SP),R0			;					2258
000062	016066  000034  000002 			MOV	34(R0),2(SP)			; *,TARGET.NUMBER
000070	001003 					BNE	1$
000072	016066  000010  000002 			MOV	10(R0),2(SP)			; *,TARGET.NUMBER			2260
000100	016600  000006 			1$:	MOV	6(SP),R0			;					2262
000104	016016  000032 				MOV	32(R0),(SP)			; *,TARGET.NAME
000110	001002 					BNE	2$
000112	016016  000010 				MOV	10(R0),(SP)			; *,TARGET.NAME				2264
000116	062716  000002 			2$:	ADD	#2,(SP)				; *,TARGET.NAME				2266
000122	012700  000046 				MOV	#46,R0				;					2271
000126	066600  000006 				ADD	6(SP),R0
000132	010066  000004 				MOV	R0,4(SP)
000136	010001 					MOV	R0,R1				; *,PTR
000140	105721 					TSTB	(R1)+				; PTR					2272
000142	001042 					BNE	3$
000144	105721 					TSTB	(R1)+				; PTR					2273
000146	001040 					BNE	3$
000150	105721 					TSTB	(R1)+				; PTR					2274
000152	001036 					BNE	3$
000154	005046 					CLR	-(SP)				;					2276
000156	016600  000010 				MOV	10(SP),R0
000162	016046  000010 				MOV	10(R0),-(SP)
000166	012746  000214 				MOV	#214,-(SP)
000172	012746  000024 				MOV	#24,-(SP)
000176	060616 					ADD	SP,(SP)				; TEMP,*
000200	004767  000000G				JSR	PC,NL.VGP
000204	062706  000010 				ADD	#10,SP
000210	006000 					ROR	R0
000212	103016 					BCC	3$
000214	016601  000014 				MOV	14(SP),R1			; TEMP,PTR				2280
000220	005046 					CLR	-(SP)				;					2281
000222	116116  000002 				MOVB	2(R1),(SP)			; *(PTR),*
000226	062716  000003 				ADD	#3,(SP)
000232	010146 					MOV	R1,-(SP)			; PTR,*
000234	016646  000010 				MOV	10(SP),-(SP)
000240	004767  000000G				JSR	PC,BL$MOV
000244	062706  000006 				ADD	#6,SP				;					2279
000250	012766  000011  000014 		3$:	MOV	#11,14(SP)			; *,TEMP				2284
000256	005046 					CLR	-(SP)				;					2285
000260	005046 					CLR	-(SP)
000262	005046 					CLR	-(SP)
000264	012746  000002 				MOV	#2,-(SP)
000270	012746  000011 				MOV	#11,-(SP)
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  83
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

000274	016646  000016 				MOV	16(SP),-(SP)
000300	005046 					CLR	-(SP)
000302	012746  000004'				MOV	#IOSB,-(SP)
000306	012746  000000G				MOV	#EFN$NS,-(SP)
000312	012746  000000G				MOV	#LUN$NS,-(SP)
000316	012746  016670 				MOV	#16670,-(SP)
000322	012746  006003 				MOV	#6003,-(SP)
000326	104377 					EMT	377
000330	016601  000004 				MOV	4(SP),R1			; *,PTR					2287
000334	105721 					TSTB	(R1)+				; PTR					2288
000336	001021 					BNE	4$
000340	105721 					TSTB	(R1)+				; PTR					2289
000342	001017 					BNE	4$
000344	004767  000000G				JSR	PC,UN.LOCAL			;					2292
000350	010001 					MOV	R0,R1				; *,PTR
000352	005046 					CLR	-(SP)				;					2293
000354	116116  000002 				MOVB	2(R1),(SP)			; *(PTR),*
000360	062716  000003 				ADD	#3,(SP)
000364	010146 					MOV	R1,-(SP)			; PTR,*
000366	016646  000010 				MOV	10(SP),-(SP)
000372	004767  000000G				JSR	PC,BL$MOV
000376	062706  000006 				ADD	#6,SP				;					2291
000402	012705  000022 			4$:	MOV	#22,R5				;					2302
000406	060605 					ADD	SP,R5				; FB,*
000410	004767  176200 				JSR	PC,FILE.OPEN
000414	006000 					ROR	R0
000416	103402 				5$:	BLO	6$
000420	000167  001264 				JMP	27$
000424	012705  000022 			6$:	MOV	#22,R5				;					2309
000430	060605 					ADD	SP,R5				; FB,*
000432	004767  176232 				JSR	PC,FILE.READ.LABEL
000436	006000 					ROR	R0
000440	103402 					BLO	7$
000442	000167  000710 				JMP	23$
000446	005004 				7$:	CLR	R4				; LOAD.NUMBER				2328
000450	005003 					CLR	R3				; LENGTH				2329
000452	012700  000006 				MOV	#6,R0				;					2380
000456	066600  000006 				ADD	6(SP),R0
000462	010066  000010 				MOV	R0,10(SP)
000466	005066  000016 			8$:	CLR	16(SP)				; $$MOVI32.TARGET			2334
000472	005066  000020 				CLR	20(SP)				; $$MOVI32.TARGET+2
000476	012700  000034 				MOV	#34,R0
000502	060600 					ADD	SP,R0				; FB+12,*
000504	012701  000016 				MOV	#16,R1
000510	060601 					ADD	SP,R1				; $$CMPI32.C,*
000512	004767  000000G				JSR	PC,$SUB32
000516	012701  000016 				MOV	#16,R1
000522	060601 					ADD	SP,R1				; $$CMPI32.C,*
000524	004767  000000G				JSR	PC,$SGN32
000530	005700 					TST	R0
000532	002402 					BLT	9$
000534	000167  000632 				JMP	24$
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  84
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

000540	005703 				9$:	TST	R3				; LENGTH				2341
000542	001120 					BNE	12$
000544	016600  000006 				MOV	6(SP),R0			;					2347
000550	016002  000006 				MOV	6(R0),R2			; *,BUFFER.PTR
000554	112722  000002 				MOVB	#2,(R2)+			; *,BUFFER.PTR				2348
000560	110422 					MOVB	R4,(R2)+			; LOAD.NUMBER,BUFFER.PTR		2349
000562	116622  000030 				MOVB	30(SP),(R2)+			; $$PUT32.VALUE,BUFFER.PTR		2350
000566	116622  000031 				MOVB	31(SP),(R2)+			; $$PUT32.VALUE,BUFFER.PTR
000572	116622  000032 				MOVB	32(SP),(R2)+			; $$PUT32.VALUE+2,BUFFER.PTR
000576	116622  000033 				MOVB	33(SP),(R2)+			; $$PUT32.VALUE+2,BUFFER.PTR
000602	012703  000370 				MOV	#370,R3				; *,LENGTH				2351
000606	010366  000016 				MOV	R3,16(SP)			; LENGTH,$$MOVI32.TARGET		2353
000612	005066  000020 				CLR	20(SP)				; $$MOVI32.TARGET+2
000616	012700  000034 				MOV	#34,R0
000622	060600 					ADD	SP,R0				; FB+12,*
000624	012701  000016 				MOV	#16,R1
000630	060601 					ADD	SP,R1				; $$CMPI32.C,*
000632	004767  000000G				JSR	PC,$SUB32
000636	012701  000016 				MOV	#16,R1
000642	060601 					ADD	SP,R1				; $$CMPI32.C,*
000644	004767  000000G				JSR	PC,$SGN32
000650	005700 					TST	R0
000652	002402 					BLT	10$
000654	016603  000034 				MOV	34(SP),R3			; $$MOVF32.SOURCE,LENGTH		2354
000660	016646  000022 			10$:	MOV	22(SP),-(SP)			; FB,*					2356
000664	010246 					MOV	R2,-(SP)			; BUFFER.PTR,*
000666	010346 					MOV	R3,-(SP)			; LENGTH,*
000670	016605  000032 				MOV	32(SP),R5			; FB+2,*				2357
000674	010546 					MOV	R5,-(SP)			;					2356
000676	004767  000000G				JSR	PC,UF.READ
000702	062706  000010 				ADD	#10,SP
000706	005700 					TST	R0
000710	003017 					BGT	11$
000712	010500 					MOV	R5,R0				; *,STRPTR				2360
000714	112720  000356 				MOVB	#356,(R0)+			; *,STRPTR
000720	005001 					CLR	R1				; DETAIL
000722	156601  000044 				BISB	44(SP),R1			; FB+22,DETAIL
000726	110120 					MOVB	R1,(R0)+			; DETAIL,STRPTR
000730	010102 					MOV	R1,R2				; DETAIL,*
000732	000302 					SWAB	R2
000734	110220 					MOVB	R2,(R0)+			; *,STRPTR
000736	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
000742	012701  000167 				MOV	#167,R1
000746	000542 					BR	19$
000750	010366  000016 			11$:	MOV	R3,16(SP)			; LENGTH,$$MOVI32.TARGET		2364
000754	005066  000020 				CLR	20(SP)				; $$MOVI32.TARGET+2
000760	012700  000016 				MOV	#16,R0
000764	060600 					ADD	SP,R0				; $$ADDI32.C,*
000766	012701  000030 				MOV	#30,R1
000772	060601 					ADD	SP,R1				; FB+6,*
000774	004767  000000G				JSR	PC,$ADD32
001000	062703  000006 				ADD	#6,R3				; *,LENGTH				2365
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  85
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

001004	012702  000005 			12$:	MOV	#5,R2				; *,TIMES				2376
001010	017646  000006 			13$:	MOV	@6(SP),-(SP)			;					2380
001014	012746  000006 				MOV	#6,-(SP)
001020	017646  000014 				MOV	@14(SP),-(SP)
001024	010346 					MOV	R3,-(SP)			; LENGTH,*
001026	017646  000022 				MOV	@22(SP),-(SP)
001032	004767  000000G				JSR	PC,UD.WRITE
001036	062706  000012 				ADD	#12,SP
001042	032700  000001 				BIT	#1,R0
001046	001003 					BNE	14$
001050	012701  177777 				MOV	#-1,R1				; *,RESULT				2381
001054	000430 					BR	17$
001056	017646  000006 			14$:	MOV	@6(SP),-(SP)			;					2385
001062	012746  000006 				MOV	#6,-(SP)
001066	017646  000014 				MOV	@14(SP),-(SP)
001072	012746  001012 				MOV	#1012,-(SP)
001076	005046 					CLR	-(SP)
001100	017646  000024 				MOV	@24(SP),-(SP)
001104	004767  000000G				JSR	PC,UD.TREAD
001110	010001 					MOV	R0,R1				; *,RESULT				2383
001112	020127  177776 				CMP	R1,#-2				; RESULT,*				2386
001116	001403 					BEQ	15$
001120	062706  000014 				ADD	#14,SP
001124	000403 					BR	16$
001126	062706  000014 			15$:	ADD	#14,SP				;					2377
001132	077252 					SOB	R2,13$				; TIMES,*				0000
001134	005701 				16$:	TST	R1				; RESULT				2389
001136	002012 				17$:	BGE	18$
001140	016600  000024 				MOV	24(SP),R0			; FB+2,STRPTR				2392
001144	112720  000366 				MOVB	#366,(R0)+			; *,STRPTR
001150	112720  000377 				MOVB	#377,(R0)+			; *,STRPTR
001154	116020  177777 				MOVB	-1(R0),(R0)+			; *(STRPTR),STRPTR
001160	105020 					CLRB	(R0)+				; STRPTR
001162	000475 					BR	23$				;					2393
001164	017600  000010 			18$:	MOV	@10(SP),R0			; *,BUFFER.PTR				2404
001170	005001 					CLR	R1				;					2406
001172	152001 					BISB	(R0)+,R1			; BUFFER.PTR,*
001174	020127  000012 				CMP	R1,#12
001200	001050 					BNE	21$
001202	112000 					MOVB	(R0)+,R0			; BUFFER.PTR,LOADNUM			2414
001204	042700  177400 				BIC	#177400,R0			; *,LOADNUM
001210	020004 					CMP	R0,R4				; LOADNUM,LOAD.NUMBER			2416
001212	001421 					BEQ	20$
001214	010401 					MOV	R4,R1				; LOAD.NUMBER,*				2419
001216	005201 					INC	R1
001220	005004 					CLR	R4				; LOAD.NUMBER
001222	150104 					BISB	R1,R4				; *,LOAD.NUMBER
001224	020004 					CMP	R0,R4				; LOADNUM,LOAD.NUMBER			2421
001226	001413 					BEQ	20$
001230	017600  000012 				MOV	@12(SP),R0			; *,STRPTR				2425
001234	112720  000357 				MOVB	#357,(R0)+			; *,STRPTR
001240	105020 					CLRB	(R0)+				; STRPTR
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  86
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

001242	105020 					CLRB	(R0)+				; STRPTR
001244	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
001250	012701  000154 				MOV	#154,R1
001254	000434 				19$:	BR	22$
001256	010366  000016 			20$:	MOV	R3,16(SP)			; LENGTH,$$MOVI32.TARGET		2431
001262	162766  000006  000016 			SUB	#6,16(SP)			; *,$$MOVI32.TARGET
001270	005066  000020 				CLR	20(SP)				; $$MOVI32.TARGET+2
001274	012700  000016 				MOV	#16,R0
001300	060600 					ADD	SP,R0				; $$SUBI32.C,*
001302	012701  000034 				MOV	#34,R1
001306	060601 					ADD	SP,R1				; FB+12,*
001310	004767  000000G				JSR	PC,$SUB32
001314	005003 					CLR	R3				; LENGTH				2432
001316	000167  177144 				JMP	8$				;					2406
001322	017600  000012 			21$:	MOV	@12(SP),R0			; *,STRPTR				2437
001326	112720  000357 				MOVB	#357,(R0)+			; *,STRPTR
001332	105020 					CLRB	(R0)+				; STRPTR
001334	105020 					CLRB	(R0)+				; STRPTR
001336	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
001342	012701  000155 				MOV	#155,R1
001346	012702  000001 			22$:	MOV	#1,R2
001352	004767  000000G				JSR	PC,$CBDSG
001356	012705  000022 			23$:	MOV	#22,R5				;					2438
001362	060605 					ADD	SP,R5				; FB,*
001364	004767  175202 				JSR	PC,FILE.CLOSE
001370	000547 					BR	27$				;					2435
001372	012705  000022 			24$:	MOV	#22,R5				;					2446
001376	060605 					ADD	SP,R5				; FB,*
001400	004767  175166 				JSR	PC,FILE.CLOSE
001404	017602  000010 				MOV	@10(SP),R2			; *,BUFFER.PTR				2454
001410	112722  000024 				MOVB	#24,(R2)+			; *,BUFFER.PTR				2459
001414	110422 					MOVB	R4,(R2)+			; LOAD.NUMBER,BUFFER.PTR		2461
001416	112722  000002 				MOVB	#2,(R2)+			; *,BUFFER.PTR				2463
001422	112722  000002 				MOVB	#2,(R2)+			; *,BUFFER.PTR				2464
001426	005266  000002 				INC	2(SP)				; TARGET.NUMBER				2465
001432	016600  000002 				MOV	2(SP),R0			; TARGET.NUMBER,*
001436	116022  177777 				MOVB	-1(R0),(R2)+			; *(TARGET.NUMBER),BUFFER.PTR
001442	005266  000002 				INC	2(SP)				; TARGET.NUMBER				2466
001446	016600  000002 				MOV	2(SP),R0			; TARGET.NUMBER,*
001452	116022  177777 				MOVB	-1(R0),(R2)+			; *(TARGET.NUMBER),BUFFER.PTR
001456	005216 					INC	(SP)				; TARGET.NAME				2468
001460	005001 					CLR	R1				; LENGTH
001462	011600 					MOV	(SP),R0				; TARGET.NAME,*
001464	156001  177777 				BISB	-1(R0),R1			; *(TARGET.NAME),LENGTH
001470	005701 					TST	R1				; LENGTH
001472	001413 					BEQ	25$
001474	112722  000001 				MOVB	#1,(R2)+			; *,BUFFER.PTR				2471
001500	110122 					MOVB	R1,(R2)+			; LENGTH,BUFFER.PTR			2472
001502	010146 					MOV	R1,-(SP)			; LENGTH,*				2473
001504	010046 					MOV	R0,-(SP)			; TARGET.NAME,*
001506	010246 					MOV	R2,-(SP)			; BUFFER.PTR,*
001510	004767  000000G				JSR	PC,BL$MOV
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  87
X03.52		IMAGE_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (19)

001514	010002 					MOV	R0,R2				; *,BUFFER.PTR
001516	062706  000006 				ADD	#6,SP				;					2470
001522	005001 				25$:	CLR	R1				; LENGTH				2476
001524	016600  000004 				MOV	4(SP),R0
001530	156001  000002 				BISB	2(R0),R1			; *,LENGTH
001534	005701 					TST	R1				; LENGTH
001536	001417 					BEQ	26$
001540	112722  000003 				MOVB	#3,(R2)+			; *,BUFFER.PTR				2479
001544	110122 					MOVB	R1,(R2)+			; LENGTH,BUFFER.PTR			2480
001546	010146 					MOV	R1,-(SP)			; LENGTH,*				2481
001550	012700  000003 				MOV	#3,R0
001554	066600  000006 				ADD	6(SP),R0
001560	010046 					MOV	R0,-(SP)
001562	010246 					MOV	R2,-(SP)			; BUFFER.PTR,*
001564	004767  000000G				JSR	PC,BL$MOV
001570	010002 					MOV	R0,R2				; *,BUFFER.PTR
001572	062706  000006 				ADD	#6,SP				;					2478
001576	112722  000004 			26$:	MOVB	#4,(R2)+			; *,BUFFER.PTR				2484
001602	112722  000002 				MOVB	#2,(R2)+			; *,BUFFER.PTR				2485
001606	117622  000004 				MOVB	@4(SP),(R2)+			; *,BUFFER.PTR				2486
001612	016600  000004 				MOV	4(SP),R0			;					2487
001616	116022  000001 				MOVB	1(R0),(R2)+			; *,BUFFER.PTR
001622	105022 					CLRB	(R2)+				; BUFFER.PTR				2489
001624	116622  000040 				MOVB	40(SP),(R2)+			; $$PUT32.VALUE,BUFFER.PTR		2491
001630	116622  000041 				MOVB	41(SP),(R2)+			; $$PUT32.VALUE,BUFFER.PTR
001634	116622  000042 				MOVB	42(SP),(R2)+			; $$PUT32.VALUE+2,BUFFER.PTR
001640	116622  000043 				MOVB	43(SP),(R2)+			; $$PUT32.VALUE+2,BUFFER.PTR
001644	167602  000010 				SUB	@10(SP),R2			; *,BUFFER.PTR				2493
001650	017646  000006 				MOV	@6(SP),-(SP)			;					2497
001654	012746  000006 				MOV	#6,-(SP)
001660	017646  000014 				MOV	@14(SP),-(SP)
001664	010246 					MOV	R2,-(SP)			; BUFFER.PTR,*
001666	017646  000022 				MOV	@22(SP),-(SP)
001672	004767  000000G				JSR	PC,UD.WRITE
001676	062706  000012 				ADD	#12,SP
001702	032700  000001 				BIT	#1,R0
001706	001002 					BNE	28$
001710	005000 				27$:	CLR	R0				;					2498
001712	000402 					BR	29$
001714	012700  000001 			28$:	MOV	#1,R0				;					2209
001720	062706  000046 			29$:	ADD	#46,SP
001724	000207 					RTS	PC
; Routine Size:  491 words,	Routine Base:  $CODE$ + 7116
; Maximum stack depth per invocation:  39 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  88
X03.52		LOAD_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (20)

;	  2504	%routine ('LOAD_NODE', LOAD_DATA : ref SERVICE_DATA_BLOCK) : NML_LKG_DB novalue =
;	  2505	
;	  2506	!++
;	  2507	! Functional description:
;	  2508	!
;	  2509	!	This routine is called after the NICE request message
;	  2510	!	has been decomposed.  It performs the actual load
;	  2511	!	sequence by transferring MOP messages across the specified
;	  2512	!	circuit with the target node.
;	  2513	!
;	  2514	! Formal parameters:
;	  2515	!
;	  2516	!	.LOAD_DATA	Address of load data block
;	  2517	!
;	  2518	!		Necessary parameters (must be specified in request or on VDB):
;	  2519	!
;	  2520	!		Parameter	Name
;	  2521	!		---------	----
;	  2522	!
;	  2523	!			(one of):
;	  2524	!
;	  2525	!		121		Secondary Loader ID
;	  2526	!		122		Tertiary Loader ID
;	  2527	!		120		Load File ID
;	  2528	!
;	  2529	!		Parameters that may be defaulted:
;	  2530	!
;	  2531	!		Parameter	Name		Default Value
;	  2532	!		---------	----		-------------
;	  2533	!
;	  2534	!		125		Software Type	SECONDARY_LOADER
;	  2535	!
;	  2536	! Implicit inputs: none
;	  2537	!
;	  2538	! Routine value: none
;	  2539	! Side effects: none
;	  2540	!
;	  2541	!--
;	  2542	
;	  2543	    begin
;	  2544	    local
;	  2545	        RETURN_CODE,
;	  2546	        CURRENT_LOAD;
;	  2547	
;	  2548	!
;	  2549	! Setup the initial load file type. Default to secondary loader.
;	  2550	!
;	  2551	
;	  2552	    begin
;	  2553	    local
;	  2554	         SOFTWARE_TYPE;
;	  2555	    bind
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  89
X03.52		LOAD_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (20)

;	  2556	         PARAMETER_TO_GET = uplit (121,122,120): vector;
;	  2557	    local
;	  2558	         WHERE_TO_PUT_IT: vector[3];
;	  2559	    WHERE_TO_PUT_IT[0] = LOAD_DATA[LB_SECONDARY_LOADER];
;	  2560	    WHERE_TO_PUT_IT[1] = LOAD_DATA[LB_TERTIARY_LOADER];
;	  2561	    WHERE_TO_PUT_IT[2] = LOAD_DATA[LB_LOAD_FILE];
;	  2562	
;	  2563	!
;	  2564	! If any important parameters haven't been specified in the request,
;	  2565	! try to obtain them from the data base.
;	  2566	!
;	  2567	
;	  2568	    incr I from 0 to 2 do
;	  2569	        if ..WHERE_TO_PUT_IT[.I] eql 0
;	  2570	        then
;	  2571	            NML$GET_VDB_PARAMETER (NODE_E,
;	  2572	                                   .LOAD_DATA [SB_NODE_DATA],
;	  2573	                                   .PARAMETER_TO_GET[.I],
;	  2574	                                   .WHERE_TO_PUT_IT[.I]);
;	  2575	
;	  2576	    if (SOFTWARE_TYPE = .LOAD_DATA [LB_SOFTWARE_TYPE]) eql -1
;	  2577	    then
;	  2578	
;	  2579	        if not NML$GET_VDB_PARAMETER (NODE_E,
;	  2580	                                      .LOAD_DATA [SB_NODE_DATA],
;	  2581	                                       125,
;	  2582	                                       SOFTWARE_TYPE)
;	  2583	        then
;	  2584	            SOFTWARE_TYPE = SECONDARY_LOADER;
;	  2585	
;	  2586	
;	  2587	    CURRENT_LOAD = .SOFTWARE_TYPE;
;	  2588	    end;
;	  2589	
;	  2590	!
;	  2591	! Load until one of the load routines indicates the loading
;	  2592	! has stopped. CURRENT_LOAD must never be -1 upon entry to this
;	  2593	! section of the code.
;	  2594	!
;	  2595	
;	  2596	    RETURN_CODE = -1;
;	  2597	
;	  2598	    while $true do
;	  2599		begin
;	  2600	
;	  2601	        !
;	  2602	        ! Convert from a MOP program type to a internal
;	  2603	        ! file type code
;	  2604	        !
;	  2605	
;	  2606	        if not
;	  2607	           begin
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  90
X03.52		LOAD_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (20)

;	  2608	           case .CURRENT_LOAD from -1 to 3 of
;	  2609	               set
;	  2610	               [-1] : ! Leave CURRENT_LOAD as is, allow loop on $NMU_DLX_READ
;	  2611	                   $true;
;	  2612	               [SECONDARY_LOADER] :
;	  2613	                   if .LOAD_DATA[LB_SECONDARY_LOADER] neq 0
;	  2614	                   then
;	  2615	                       SECONDARY_LOAD (.LOAD_DATA, FILE_SECONDARY_LOADER,
;	  2616	                                   .LOAD_DATA [LB_SECONDARY_LOADER])
;	  2617	                   else
;	  2618	                       (RETURN_CODE = .CURRENT_LOAD; $false);
;	  2619	               [TERTIARY_LOADER] :
;	  2620	                   if .LOAD_DATA[LB_TERTIARY_LOADER] neq 0
;	  2621	                   then
;	  2622	                       IMAGE_LOAD (.LOAD_DATA, FILE_TERTIARY_LOADER,
;	  2623	                               .LOAD_DATA [LB_TERTIARY_LOADER])
;	  2624	                   else
;	  2625	                       (RETURN_CODE = .CURRENT_LOAD; $false);
;	  2626	               [SYSTEM_IMAGE] :
;	  2627	                   if .LOAD_DATA[LB_LOAD_FILE] neq 0
;	  2628	                   then
;	  2629	                       IMAGE_LOAD (.LOAD_DATA, FILE_SYSTEM_IMAGE,
;	  2630	                               .LOAD_DATA [LB_LOAD_FILE])
;	  2631	                   else
;	  2632	                       (RETURN_CODE = .CURRENT_LOAD; $false);
;	  2633	               [inrange, outrange] :
;	  2634	                   begin
;	P 2635	                   $RESPONSE_X (.LOAD_DATA [SB_RESPONSE_PTR], NICE$_MPE, 0,
;	  2636	                                'SOFTWARE TYPE parameter invalid', 105);
;	  2637	                   $false
;	  2638	                   end;
;	  2639	               tes
;	  2640	           end
;	  2641	        then
;	  2642	            exitloop;
;	  2643	
;	  2644	        !
;	  2645	        ! Read the response from the load.
;	  2646	        !
;	  2647	
;	P 2648		if $NMU_DLX_READ (.LOAD_DATA [SB_CIRCUIT_HANDLE], DLX_DATA,
;	P 2649	                          .LOAD_DATA [SB_BUFFER_PTR], MOP_BUFFER_LENGTH,
;	P 2650	                          60, %(give it 60 seconds)%
;	  2651	                          .LOAD_DATA [SB_RESPONSE_PTR]) leq 0
;	  2652		then exitloop;
;	  2653	
;	  2654	        !
;	  2655	        ! Get the function code from the response message.
;	  2656	        ! If it is a request program load .. go load the appropriate
;	  2657	        ! image.  If it is a request memory load .. it was a successful
;	  2658	        ! load.  If anything else .. who knows what happened (assume it
;	  2659	        ! was died).
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  91
X03.52		LOAD_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (20)

;	  2660	        !
;	  2661	
;	  2662	        begin
;	  2663	        local
;	  2664	             BUFFER_PTR,
;	  2665	             MOP_FUNCTION;
;	  2666	
;	  2667		BUFFER_PTR = .LOAD_DATA [SB_BUFFER_PTR];
;	  2668		MOP_FUNCTION = GETB (BUFFER_PTR);
;	  2669	
;	  2670		selectone .MOP_FUNCTION of
;	  2671		    set
;	  2672		    [REQUEST_PROGRAM] :
;	  2673			begin
;	  2674			BUFFER_PTR = ch$plus (.BUFFER_PTR, 2);
;	  2675			CURRENT_LOAD = GETB (BUFFER_PTR);
;	  2676			end;
;	  2677		    [REQUEST_MEMORY_LOAD] :
;	  2678			begin
;	  2679			$RESPONSE (.LOAD_DATA [SB_RESPONSE_PTR], NICE$_SUC);
;	  2680	                exitloop;
;	  2681			end;
;	  2682	            [CHK11_ASCII_TEXT] :
;	  2683	                begin
;	  2684	                CURRENT_LOAD = -1;
;	  2685	                end;
;	  2686		    [otherwise] :
;	  2687			begin
;	P 2688			$RESPONSE_X (.LOAD_DATA [SB_RESPONSE_PTR], NICE$_LPE, 0,
;	  2689	                             'Unexpected MOP response, MOP function code = %D', .MOP_FUNCTION, .MOP_FUNCTION);
;	C 2690	%(
;	C 2691	  'Unexpected MOP response, expecting program request', 106);
;	  2692	)%
;	  2693	                exitloop;
;	  2694			end;
;	  2695		    tes;
;	  2696	
;	  2697	        end;
;	  2698		end;
;	  2699	
;	  2700	!
;	  2701	! If we fell out due to a request for a software type we don't have
;	  2702	! a parameter for, record an error.
;	  2703	!
;	  2704	
;	  2705	    if .RETURN_CODE geq 0 then
;	P 2706	       $RESPONSE_X (.LOAD_DATA[SB_RESPONSE_PTR], NICE$_IPV,
;	P 2707	           (case .RETURN_CODE from SECONDARY_LOADER to SYSTEM_IMAGE of
;	P 2708	               set
;	P 2709	               [SECONDARY_LOADER]:     121;
;	P 2710	               [TERTIARY_LOADER]:      122;
;	P 2711	               [SYSTEM_IMAGE]:         120;
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  92
X03.52		LOAD_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (20)

;	  2712	           tes), 'File not specified');
;	  2713	
;	  2714	    end;



000066						.PSECT	$PLIT$,  RO ,  D  
000066	000171 				P.AAF:	.WORD	171
000070	000172 					.WORD	172
000072	000170 					.WORD	170


	000066'				PARAMETER.TO.GET=   P.AAF


						.SBTTL	LOAD.NODE LOAD_NODE
011044						.PSECT	$CODE$,  RO 

000000	004167  000000G			LOAD.NODE:
						JSR	R1,$SAVE5			;					2504
000004	162706  000010 				SUB	#10,SP
000010	010546 					MOV	R5,-(SP)
000012	012700  000020 				MOV	#20,R0				;					2559
000016	060500 					ADD	R5,R0
000020	010066  000004 				MOV	R0,4(SP)			; *,WHERE.TO.PUT.IT
000024	012700  000022 				MOV	#22,R0				;					2560
000030	060500 					ADD	R5,R0
000032	010066  000006 				MOV	R0,6(SP)			; *,WHERE.TO.PUT.IT+2
000036	012700  000016 				MOV	#16,R0				;					2561
000042	060500 					ADD	R5,R0
000044	010066  000010 				MOV	R0,10(SP)			; *,WHERE.TO.PUT.IT+4
000050	005001 					CLR	R1				; I					2568
000052	010105 				1$:	MOV	R1,R5				; I,*					2569
000054	006305 					ASL	R5
000056	012700  000004 				MOV	#4,R0
000062	060600 					ADD	SP,R0				; WHERE.TO.PUT.IT,*
000064	060500 					ADD	R5,R0
000066	011002 					MOV	(R0),R2
000070	005712 					TST	(R2)
000072	001014 					BNE	2$
000074	005046 					CLR	-(SP)				;					2571
000076	016602  000002 				MOV	2(SP),R2
000102	016246  000010 				MOV	10(R2),-(SP)
000106	016546  000066'				MOV	PARAMETER.TO.GET(R5),-(SP)
000112	011046 					MOV	(R0),-(SP)
000114	004767  000000G				JSR	PC,NL.VGP
000120	062706  000010 				ADD	#10,SP
000124	005201 				2$:	INC	R1				; I					2568
000126	020127  000002 				CMP	R1,#2				; I,*
000132	003747 					BLE	1$
000134	011600 					MOV	(SP),R0				;					2576
000136	116005  000061 				MOVB	61(R0),R5
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  93
X03.52		LOAD_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (20)

000142	010566  000002 				MOV	R5,2(SP)			; *,SOFTWARE.TYPE
000146	005205 					INC	R5
000150	001020 					BNE	3$
000152	005046 					CLR	-(SP)				;					2579
000154	016046  000010 				MOV	10(R0),-(SP)
000160	012746  000175 				MOV	#175,-(SP)
000164	012746  000012 				MOV	#12,-(SP)
000170	060616 					ADD	SP,(SP)				; SOFTWARE.TYPE,*
000172	004767  000000G				JSR	PC,NL.VGP
000176	062706  000010 				ADD	#10,SP
000202	006000 					ROR	R0
000204	103402 					BLO	3$
000206	005066  000002 				CLR	2(SP)				; SOFTWARE.TYPE				2584
000212	016603  000002 			3$:	MOV	2(SP),R3			; SOFTWARE.TYPE,CURRENT.LOAD		2587
000216	012704  177777 				MOV	#-1,R4				; *,RETURN.CODE				2596
000222	010300 				4$:	MOV	R3,R0				; CURRENT.LOAD,*			2607
000224	005200 					INC	R0
000226	020027  000004 				CMP	R0,#4
000232	101003 					BHI	5$
000234	006300 					ASL	R0
000236	066007  000074'				ADD	P.AAG(R0),PC			; Case dispatch
000242	011601 				5$:	MOV	(SP),R1				;					2636
000244	016100  000002 				MOV	2(R1),R0			; *,STRPTR
000250	112720  000373 				MOVB	#373,(R0)+			; *,STRPTR
000254	105020 					CLRB	(R0)+				; STRPTR
000256	105020 					CLRB	(R0)+				; STRPTR
000260	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
000264	012701  000151 				MOV	#151,R1
000270	000547 					BR	14$
000272	011601 				6$:	MOV	(SP),R1				;					2613
000274	016100  000020 				MOV	20(R1),R0
000300	001446 					BEQ	9$
000302	012746  000003 				MOV	#3,-(SP)			;					2615
000306	010046 					MOV	R0,-(SP)
000310	010105 					MOV	R1,R5
000312	004767  000000V				JSR	PC,SECONDARY.LOAD
000316	022626 					CMP	(SP)+,(SP)+
000320	006000 					ROR	R0
000322	103136 					BCC	15$
000324	000436 					BR	10$
000326	011601 				7$:	MOV	(SP),R1				;					2620
000330	016100  000022 				MOV	22(R1),R0
000334	001430 					BEQ	9$
000336	012746  000004 				MOV	#4,-(SP)			;					2622
000342	010046 					MOV	R0,-(SP)
000344	010105 					MOV	R1,R5
000346	004767  175500 				JSR	PC,IMAGE.LOAD
000352	022626 					CMP	(SP)+,(SP)+
000354	006000 					ROR	R0
000356	103120 					BCC	15$
000360	000420 					BR	10$
000362	011601 				8$:	MOV	(SP),R1				;					2627
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  94
X03.52		LOAD_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (20)

000364	016100  000016 				MOV	16(R1),R0
000370	001412 					BEQ	9$
000372	012746  000001 				MOV	#1,-(SP)			;					2629
000376	010046 					MOV	R0,-(SP)
000400	010105 					MOV	R1,R5
000402	004767  175444 				JSR	PC,IMAGE.LOAD
000406	022626 					CMP	(SP)+,(SP)+
000410	006000 					ROR	R0
000412	103102 					BCC	15$
000414	000402 					BR	10$
000416	010304 				9$:	MOV	R3,R4				; CURRENT.LOAD,RETURN.CODE		2632
000420	000500 					BR	16$
000422	017646  000000 			10$:	MOV	@0(SP),-(SP)			;					2651
000426	012746  000006 				MOV	#6,-(SP)
000432	016600  000004 				MOV	4(SP),R0
000436	016046  000006 				MOV	6(R0),-(SP)
000442	012746  001012 				MOV	#1012,-(SP)
000446	012746  000074 				MOV	#74,-(SP)
000452	016005  000002 				MOV	2(R0),R5
000456	010546 					MOV	R5,-(SP)
000460	004767  000000G				JSR	PC,UD.TREAD
000464	062706  000014 				ADD	#14,SP
000470	005700 					TST	R0
000472	003452 					BLE	15$				;					2652
000474	011601 					MOV	(SP),R1				;					2667
000476	016100  000006 				MOV	6(R1),R0			; *,BUFFER.PTR
000502	005001 					CLR	R1				; MOP.FUNCTION				2668
000504	152001 					BISB	(R0)+,R1			; BUFFER.PTR,MOP.FUNCTION
000506	020127  000010 				CMP	R1,#10				; MOP.FUNCTION,*			2670
000512	001005 					BNE	11$
000514	062700  000002 				ADD	#2,R0				; *,BUFFER.PTR				2675
000520	005003 					CLR	R3				; CURRENT.LOAD
000522	152003 					BISB	(R0)+,R3			; BUFFER.PTR,CURRENT.LOAD
000524	000636 					BR	4$				;					2670
000526	020127  000012 			11$:	CMP	R1,#12				; MOP.FUNCTION,*
000532	001011 					BNE	12$
000534	010500 					MOV	R5,R0				; *,STRPTR				2679
000536	112720  000001 				MOVB	#1,(R0)+			; *,STRPTR
000542	112720  000377 				MOVB	#377,(R0)+			; *,STRPTR
000546	116020  177777 				MOVB	-1(R0),(R0)+			; *(STRPTR),STRPTR
000552	105020 					CLRB	(R0)+				; STRPTR
000554	000421 					BR	15$				;					2680
000556	020127  000026 			12$:	CMP	R1,#26				; MOP.FUNCTION,*			2670
000562	001003 					BNE	13$
000564	012703  177777 				MOV	#-1,R3				; *,CURRENT.LOAD			2684
000570	000614 					BR	4$				;					2670
000572	010500 				13$:	MOV	R5,R0				; *,STRPTR				2689
000574	112720  000357 				MOVB	#357,(R0)+			; *,STRPTR
000600	105020 					CLRB	(R0)+				; STRPTR
000602	105020 					CLRB	(R0)+				; STRPTR
000604	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
000610	012702  000001 			14$:	MOV	#1,R2
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  95
X03.52		LOAD_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (20)

000614	004767  000000G				JSR	PC,$CBDSG
000620	005704 				15$:	TST	R4				; RETURN.CODE				2705
000622	002434 				16$:	BLT	21$
000624	011601 					MOV	(SP),R1				;					2712
000626	016100  000002 				MOV	2(R1),R0			; *,STRPTR
000632	112720  000360 				MOVB	#360,(R0)+			; *,STRPTR
000636	006304 					ASL	R4
000640	066407  000106'				ADD	P.AAI(R4),PC			; Case dispatch
000644	012701  000171 			17$:	MOV	#171,R1				; *,DETAIL
000650	000405 					BR	20$
000652	012701  000172 			18$:	MOV	#172,R1				; *,DETAIL
000656	000402 					BR	20$
000660	012701  000170 			19$:	MOV	#170,R1				; *,DETAIL
000664	110120 				20$:	MOVB	R1,(R0)+			; DETAIL,STRPTR
000666	010102 					MOV	R1,R2				; DETAIL,*
000670	000302 					SWAB	R2
000672	110220 					MOVB	R2,(R0)+			; *,STRPTR
000674	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
000700	012701  103237 				MOV	#-74541,R1
000704	012702  000001 				MOV	#1,R2
000710	004767  000000G				JSR	PC,$CBDSG
000714	062706  000012 			21$:	ADD	#12,SP				;					2504
000720	000207 					RTS	PC
; Routine Size:  233 words,	Routine Base:  $CODE$ + 11044
; Maximum stack depth per invocation:  18 words


000074						.PSECT	$PLIT$,  RO ,  D  

					P.AAG:						; CASE Table for LOAD.NODE+0236		2607
000074	000160 					.WORD	160				; [10$]
000076	000030 					.WORD	30				; [6$]
000100	000064 					.WORD	64				; [7$]
000102	000120 					.WORD	120				; [8$]
000104	000000 					.WORD	0				; [5$]

					P.AAI:						; CASE Table for LOAD.NODE+0640		2712
000106	000000 					.WORD	0				; [17$]
000110	000006 					.WORD	6				; [18$]
000112	000014 					.WORD	14				; [19$]
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  96
X03.52		SECONDARY_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (21)

;	  2715	%routine ('SECONDARY_LOAD', LOAD_DATA : ref SERVICE_DATA_BLOCK, FILE_TYPE, FILE) : NML_LKG_DB =
;	  2716	
;	  2717	!++
;	  2718	! Functional description:
;	  2719	!
;	  2720	!	This routine sends a SECONDARY LOADER to the target node.
;	  2721	!	The whole loader is sent in one MEMORY LOAD WITH TRANSFER ADDRESS
;	  2722	!	MOP message.
;	  2723	!
;	  2724	! Formal parameters
;	  2725	!
;	  2726	!	.LOAD_DATA	Address of load data block
;	  2727	!       .FILE_TYPE      Type of file for error response
;	  2728	!       .FILE           Pointer to ASCIZ file name
;	  2729	!
;	  2730	! Implicit inputs: none
;	  2731	!
;	  2732	! Routine value:
;	  2733	!
;	  2734	!	$true	secondary boot was transmitted
;	  2735	!	$false	failure occured while sending boot
;	  2736	!
;	  2737	! Side effects: none
;	  2738	!
;	  2739	!--
;	  2740	
;	  2741	    begin
;	  2742	    macro
;	M 2743	         ABORT (FB) =
;	M 2744	             begin
;	M 2745	             FILE_CLOSE (FB);
;	M 2746	             return $false
;	  2747	             end %;
;	  2748	
;	  2749	    local
;	  2750	        FB : FILE_DATA_BLOCK;
;	  2751	
;	  2752	    FB[FB_RESPONSE_PTR] = .LOAD_DATA [SB_RESPONSE_PTR];
;	  2753	    FB[FB_FILE_TYPE] = .FILE_TYPE;
;	  2754	    FB[FB_FILE] = .FILE;
;	  2755	
;	  2756	    if not CPU_IS_PDP11 (.LOAD_DATA) then return $false;
;	  2757	
;	  2758	!
;	  2759	! Open the secondary loader file.
;	  2760	!
;	  2761	
;	  2762	    if not FILE_OPEN (FB) then return $false;
;	  2763	
;	  2764	!
;	  2765	! Read the image base address, size of image and transfer address.
;	  2766	!
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  97
X03.52		SECONDARY_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (21)

;	  2767	
;	  2768	    if not FILE_READ_LABEL (FB) then ABORT (FB);
;	  2769	
;	  2770	    if %cmpi32 (FB[FB_BYTES_LEFT], gtr, 512)
;	  2771	    then
;	  2772	        begin
;	P 2773	        $RESPONSE_X (.LOAD_DATA [SB_RESPONSE_PTR], NICE$_IFC, .FB[FB_FILE_TYPE],
;	  2774	                   'Secondary image is too large, >512 bytes', 110);
;	  2775	        ABORT (FB);
;	  2776	        end;
;	  2777	
;	  2778	    begin
;	  2779	    local
;	  2780	        BUFFER_PTR;
;	  2781	
;	  2782	!
;	  2783	! Make a pointer to the buffer used to construct MOP messages.
;	  2784	!
;	  2785	    BUFFER_PTR = .LOAD_DATA [SB_BUFFER_PTR];
;	  2786	!
;	  2787	! Put in the header information for a "load memory with transfer address"
;	  2788	! Function, load number 0, load address
;	  2789	!
;	  2790	    PUTB (LOAD_WITH_TRANSFER, BUFFER_PTR);
;	  2791	    PUTB (0, BUFFER_PTR);
;	  2792	    PUT32 (FB[FB_CURRENT_ADDRESS], BUFFER_PTR);
;	  2793	
;	  2794	!
;	  2795	! Put in the secondary image
;	  2796	!
;	  2797	    begin
;	  2798	    local
;	  2799	         LENGTH;
;	  2800	
;	  2801	    %movf32 (FB[FB_BYTES_LEFT], LENGTH);
;	  2802	
;	  2803	    if 0 geq (LENGTH = NMU$FILE_READ (.FB[FB_FILE_HANDLE], .BUFFER_PTR,
;	  2804	                                      .LENGTH, .FB[FB_RESPONSE_PTR]))
;	  2805	    then
;	  2806	        begin
;	P 2807	        $RESPONSE_X (.FB[FB_RESPONSE_PTR], NICE$_FIO, .FB[FB_FILE_TYPE],
;	  2808	                     'Could not read image file', 119);
;	  2809	        ABORT (FB);
;	  2810	        end;
;	  2811	
;	  2812	    BUFFER_PTR = ch$plus (.BUFFER_PTR, .LENGTH);
;	  2813	    end;
;	  2814	!
;	  2815	! Put in the transfer address of the secondary boot
;	  2816	!
;	  2817	
;	  2818	    PUT32 (FB[FB_TRANSFER_ADDRESS], BUFFER_PTR);
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  98
X03.52		SECONDARY_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (21)

;	  2819	
;	  2820	!
;	  2821	! Send the boot to the target node.
;	  2822	!
;	  2823	
;	  2824	    BUFFER_PTR = ch$diff (.BUFFER_PTR, .LOAD_DATA [SB_BUFFER_PTR]);
;	  2825	
;	P 2826	    if not $NMU_DLX_WRITE (.LOAD_DATA [SB_CIRCUIT_HANDLE], DLX_SECONDARY,
;	P 2827	                            .LOAD_DATA [SB_BUFFER_PTR], .BUFFER_PTR,
;	  2828	                            .LOAD_DATA [SB_RESPONSE_PTR])
;	  2829	    then ABORT (FB);
;	  2830	
;	  2831	    %(Should we do a read also ?)%
;	  2832	    end;
;	  2833	!
;	  2834	! Return indicating that the load has been sent.
;	  2835	!
;	  2836	    FILE_CLOSE (FB);
;	  2837	    $true
;	  2838	    end;


						.SBTTL	SECONDARY.LOAD SECONDARY_LOAD
011766						.PSECT	$CODE$,  RO 

000000	004167  000000G			SECONDARY.LOAD:
						JSR	R1,$SAVE5			;					2715
000004	162706  000034 				SUB	#34,SP
000010	010546 					MOV	R5,-(SP)
000012	012700  000002 				MOV	#2,R0				;					2752
000016	060500 					ADD	R5,R0
000020	010066  000004 				MOV	R0,4(SP)
000024	011066  000014 				MOV	(R0),14(SP)			; *,FB+2
000030	116666  000056  000034 			MOVB	56(SP),34(SP)			; FILE.TYPE,FB+22			2753
000036	016666  000054  000016 			MOV	54(SP),16(SP)			; FILE,FB+4				2754
000044	004767  170226 				JSR	PC,CPU.IS.PDP11			;					2756
000050	006000 					ROR	R0
000052	103006 					BHIS	1$
000054	012705  000012 				MOV	#12,R5				;					2762
000060	060605 					ADD	SP,R5				; FB,*
000062	004767  173656 				JSR	PC,FILE.OPEN
000066	006000 					ROR	R0
000070	103402 				1$:	BLO	2$
000072	000167  000466 				JMP	8$
000076	012705  000012 			2$:	MOV	#12,R5				;					2768
000102	060605 					ADD	SP,R5				; FB,*
000104	004767  173710 				JSR	PC,FILE.READ.LABEL
000110	006000 					ROR	R0
000112	103146 					BHIS	5$
000114	012766  001000  000006 			MOV	#1000,6(SP)			; *,$$MOVI32.TARGET			2770
000122	005066  000010 				CLR	10(SP)				; $$MOVI32.TARGET+2
000126	012700  000024 				MOV	#24,R0
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page  99
X03.52		SECONDARY_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (21)

000132	060600 					ADD	SP,R0				; FB+12,*
000134	012701  000006 				MOV	#6,R1
000140	060601 					ADD	SP,R1				; $$CMPI32.C,*
000142	004767  000000G				JSR	PC,$SUB32
000146	012701  000006 				MOV	#6,R1
000152	060601 					ADD	SP,R1				; $$CMPI32.C,*
000154	004767  000000G				JSR	PC,$SGN32
000160	005700 					TST	R0
000162	002020 					BGE	3$
000164	017600  000004 				MOV	@4(SP),R0			; *,STRPTR				2774
000170	112720  000362 				MOVB	#362,(R0)+			; *,STRPTR
000174	005001 					CLR	R1				; DETAIL
000176	156601  000034 				BISB	34(SP),R1			; FB+22,DETAIL
000202	110120 					MOVB	R1,(R0)+			; DETAIL,STRPTR
000204	010102 					MOV	R1,R2				; DETAIL,*
000206	000302 					SWAB	R2
000210	110220 					MOVB	R2,(R0)+			; *,STRPTR
000212	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
000216	012701  000156 				MOV	#156,R1
000222	000476 					BR	4$
000224	011600 				3$:	MOV	(SP),R0				;					2785
000226	016004  000006 				MOV	6(R0),R4
000232	010466  000002 				MOV	R4,2(SP)			; *,BUFFER.PTR
000236	105014 					CLRB	(R4)				; BUFFER.PTR				2790
000240	005266  000002 				INC	2(SP)				; BUFFER.PTR
000244	105076  000002 				CLRB	@2(SP)				; BUFFER.PTR				2791
000250	005266  000002 				INC	2(SP)				; BUFFER.PTR
000254	116676  000020  000002 			MOVB	20(SP),@2(SP)			; $$PUT32.VALUE,BUFFER.PTR		2792
000262	005266  000002 				INC	2(SP)				; BUFFER.PTR
000266	116676  000021  000002 			MOVB	21(SP),@2(SP)			; $$PUT32.VALUE,BUFFER.PTR
000274	005266  000002 				INC	2(SP)				; BUFFER.PTR
000300	116676  000022  000002 			MOVB	22(SP),@2(SP)			; $$PUT32.VALUE+2,BUFFER.PTR
000306	005266  000002 				INC	2(SP)				; BUFFER.PTR
000312	116676  000023  000002 			MOVB	23(SP),@2(SP)			; $$PUT32.VALUE+2,BUFFER.PTR
000320	005266  000002 				INC	2(SP)				; BUFFER.PTR
000324	016603  000024 				MOV	24(SP),R3			; $$MOVF32.SOURCE,LENGTH		2801
000330	016646  000012 				MOV	12(SP),-(SP)			; FB,*					2803
000334	016646  000004 				MOV	4(SP),-(SP)			; BUFFER.PTR,*
000340	010346 					MOV	R3,-(SP)			; LENGTH,*
000342	016605  000022 				MOV	22(SP),R5			; FB+2,*				2804
000346	010546 					MOV	R5,-(SP)			;					2803
000350	004767  000000G				JSR	PC,UF.READ
000354	062706  000010 				ADD	#10,SP
000360	010003 					MOV	R0,R3				; *,LENGTH
000362	003023 					BGT	6$
000364	010500 					MOV	R5,R0				; *,STRPTR				2808
000366	112720  000356 				MOVB	#356,(R0)+			; *,STRPTR
000372	005001 					CLR	R1				; DETAIL
000374	156601  000034 				BISB	34(SP),R1			; FB+22,DETAIL
000400	110120 					MOVB	R1,(R0)+			; DETAIL,STRPTR
000402	010102 					MOV	R1,R2				; DETAIL,*
000404	000302 					SWAB	R2
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page 100
X03.52		SECONDARY_LOAD					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (21)

000406	110220 					MOVB	R2,(R0)+			; *,STRPTR
000410	112720  000005 				MOVB	#5,(R0)+			; *,STRPTR
000414	012701  000167 				MOV	#167,R1
000420	012702  000001 			4$:	MOV	#1,R2
000424	004767  000000G				JSR	PC,$CBDSG
000430	000450 				5$:	BR	7$				;					2809
000432	060366  000002 			6$:	ADD	R3,2(SP)			; LENGTH,BUFFER.PTR			2812
000436	116676  000030  000002 			MOVB	30(SP),@2(SP)			; $$PUT32.VALUE,BUFFER.PTR		2818
000444	005266  000002 				INC	2(SP)				; BUFFER.PTR
000450	116676  000031  000002 			MOVB	31(SP),@2(SP)			; $$PUT32.VALUE,BUFFER.PTR
000456	005266  000002 				INC	2(SP)				; BUFFER.PTR
000462	116676  000032  000002 			MOVB	32(SP),@2(SP)			; $$PUT32.VALUE+2,BUFFER.PTR
000470	005266  000002 				INC	2(SP)				; BUFFER.PTR
000474	116676  000033  000002 			MOVB	33(SP),@2(SP)			; $$PUT32.VALUE+2,BUFFER.PTR
000502	005266  000002 				INC	2(SP)				; BUFFER.PTR
000506	160466  000002 				SUB	R4,2(SP)			; *,BUFFER.PTR				2824
000512	017646  000000 				MOV	@0(SP),-(SP)			;					2828
000516	012746  000005 				MOV	#5,-(SP)
000522	010446 					MOV	R4,-(SP)
000524	016646  000010 				MOV	10(SP),-(SP)			; BUFFER.PTR,*
000530	017646  000014 				MOV	@14(SP),-(SP)
000534	004767  000000G				JSR	PC,UD.WRITE
000540	062706  000012 				ADD	#12,SP
000544	032700  000001 				BIT	#1,R0
000550	001007 					BNE	9$
000552	012705  000012 			7$:	MOV	#12,R5				;					2829
000556	060605 					ADD	SP,R5				; FB,*
000560	004767  173136 				JSR	PC,FILE.CLOSE
000564	005000 				8$:	CLR	R0
000566	000407 					BR	10$
000570	012705  000012 			9$:	MOV	#12,R5				;					2836
000574	060605 					ADD	SP,R5				; FB,*
000576	004767  173120 				JSR	PC,FILE.CLOSE
000602	012700  000001 				MOV	#1,R0				;					2715
000606	062706  000036 			10$:	ADD	#36,SP
000612	000207 					RTS	PC
; Routine Size:  198 words,	Routine Base:  $CODE$ + 11766
; Maximum stack depth per invocation:  27 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page 101
X03.52		SET_SUBSTATE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (22)

;	  2839	%routine ('SET_SUBSTATE', SB : ref SERVICE_DATA_BLOCK) : NML_LKG_DB novalue =
;	  2840	
;	  2841	!++
;	  2842	! Functional description:
;	  2843	!
;	  2844	!        Set the substate for a given circuit.
;	  2845	!
;	  2846	! Formal parameters:
;	  2847	!
;	  2848	!    .DATA    Address of trigger data block
;	  2849	!
;	  2850	! Implicit inputs: none
;	  2851	!
;	  2852	! Routine value: none
;	  2853	! Side effects: none
;	  2854	!
;	  2855	!--
;	  2856	
;	  2857	    begin
;	  2858	
;	  2859	    if .SB[SB_SUBSTATE] geq 0
;	  2860	    then NML$SET_VDB_PARAMETER (CIRCUIT_, .SB[SB_SERVICE_CIRCUIT],
;	  2861	                                CPARM_SUBSTATE, %ref (.SB[SB_SUBSTATE]))
;	  2862	    else NML$CLR_VDB_PARAMETER (CIRCUIT_, .SB[SB_SERVICE_CIRCUIT],
;	  2863	                                CPARM_SUBSTATE);
;	  2864	
;	  2865	    end;				!End of SET_SUBSTATE


						.SBTTL	SET.SUBSTATE SET_SUBSTATE
000000	005746 				SET.SUBSTATE:
						TST	-(SP)				;					2839
000002	116500  000063 				MOVB	63(R5),R0			; *(SB),*				2859
000006	002417 					BLT	1$
000010	012746  000003 				MOV	#3,-(SP)			;					2860
000014	016546  000012 				MOV	12(R5),-(SP)			; *(SB),*
000020	012746  000001 				MOV	#1,-(SP)
000024	010066  000006 				MOV	R0,6(SP)			;					2861
000030	012746  000010 				MOV	#10,-(SP)
000034	060616 					ADD	SP,(SP)
000036	004767  000000G				JSR	PC,NL.VSP			;					2860
000042	005726 					TST	(SP)+
000044	000410 					BR	2$				;					2859
000046	012746  000003 			1$:	MOV	#3,-(SP)			;					2862
000052	016546  000012 				MOV	12(R5),-(SP)			; *(SB),*
000056	012746  000001 				MOV	#1,-(SP)
000062	004767  000000G				JSR	PC,NL.VCP
000066	062706  000010 			2$:	ADD	#10,SP				;					2839
000072	000207 					RTS	PC
; Routine Size:  30 words,	Routine Base:  $CODE$ + 12602
; Maximum stack depth per invocation:  6 words
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page 102
X03.52		TRIGGER_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (23)

;	  2866	%routine ('TRIGGER_NODE', DATA : ref SERVICE_DATA_BLOCK) : NML_LKG_DB =
;	  2867	
;	  2868	!++
;	  2869	! Functional description:
;	  2870	!
;	  2871	!        This routine is called after the NICE request message has been
;	  2872	!        decomposed.  It performs the bootstrap ROM trigger function
;	  2873	!        on a target node.
;	  2874	!
;	  2875	! Formal parameters:
;	  2876	!
;	  2877	!    .DATA    Address of trigger data block
;	  2878	!
;	  2879	! Implicit inputs: none
;	  2880	!
;	  2881	! Routine value: none
;	  2882	! Side effects: none
;	  2883	!
;	  2884	!--
;	  2885	
;	  2886	    begin
;	  2887	    local
;	  2888	         SERVICE_PASSWORD;
;	  2889	
;	  2890	    if (SERVICE_PASSWORD = .DATA [SB_SERVICE_PASSWORD]) eql 0
;	  2891	    then
;	  2892	        begin
;	  2893	        SERVICE_PASSWORD = ch$plus (.DATA [SB_BUFFER_PTR], 5);
;	  2894	        if not NML$GET_VDB_PARAMETER (NODE_E,
;	  2895	                                      .DATA [SB_NODE_DATA],
;	  2896	                                       111,
;	  2897	                                       .SERVICE_PASSWORD)
;	  2898	        then
;	  2899	            begin
;	  2900	            $RESPONSE (.DATA [SB_RESPONSE_PTR], NICE$_PAM, 111);
;	  2901	            return $false;
;	  2902	            end;
;	  2903	        end;
;	  2904	
;	  2905	    begin
;	  2906	    local
;	  2907	         PASSWORD_PTR,
;	  2908	         BUFFER_PTR;
;	  2909	
;	  2910	    BUFFER_PTR = .DATA [SB_BUFFER_PTR];
;	  2911	    PASSWORD_PTR = .SERVICE_PASSWORD;
;	  2912	
;	  2913	    PUTB (ENTER_MOP_MODE, BUFFER_PTR);
;	  2914	
;	  2915	    decr COUNT from 4 to 1 do
;	  2916	        PUTB (GETB (PASSWORD_PTR), BUFFER_PTR);
;	  2917	
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page 103
X03.52		TRIGGER_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (23)

;	  2918	    decr COUNT from 4 to 1 do
;	  2919	        if GETB (PASSWORD_PTR) neq 0
;	  2920	        then
;	  2921	            begin
;	  2922	            $RESPONSE (.DATA [SB_RESPONSE_PTR], NICE$_IPV, 111);
;	  2923	            return $false;
;	  2924	            end;
;	  2925	
;	  2926	    end;
;	  2927	
;	P 2928	    if not $NMU_DLX_WRITE (.DATA [SB_CIRCUIT_HANDLE], DLX_DATA,
;	P 2929	                      .DATA [SB_BUFFER_PTR], 5,
;	  2930	                      .DATA [SB_RESPONSE_PTR])
;	  2931	    then
;	  2932	        begin
;	  2933	        $RESPONSE (.DATA [SB_RESPONSE_PTR], NICE$_LCE);
;	  2934	        return $false;
;	  2935	        end;
;	  2936	
;	  2937	    $RESPONSE (.DATA [SB_RESPONSE_PTR], NICE$_SUC);
;	  2938	    $true
;	  2939	    end;				!End of TRIGGER_NODE


						.SBTTL	TRIGGER.NODE TRIGGER_NODE
000000	004167  000000G			TRIGGER.NODE:
						JSR	R1,$SAVE2			;					2866
000004	016502  000014 				MOV	14(R5),R2			; *(DATA),SERVICE.PASSWOR		2890
000010	001030 					BNE	1$
000012	016502  000006 				MOV	6(R5),R2			; *(DATA),SERVICE.PASSWOR		2893
000016	062702  000005 				ADD	#5,R2				; *,SERVICE.PASSWOR
000022	005046 					CLR	-(SP)				;					2894
000024	016546  000010 				MOV	10(R5),-(SP)			; *(DATA),*
000030	012746  000157 				MOV	#157,-(SP)
000034	010246 					MOV	R2,-(SP)			; SERVICE.PASSWOR,*
000036	004767  000000G				JSR	PC,NL.VGP
000042	062706  000010 				ADD	#10,SP
000046	006000 					ROR	R0
000050	103410 					BLO	1$
000052	016500  000002 				MOV	2(R5),R0			; *(DATA),STRPTR			2900
000056	112720  000343 				MOVB	#343,(R0)+			; *,STRPTR
000062	112720  000157 				MOVB	#157,(R0)+			; *,STRPTR
000066	105010 					CLRB	(R0)				; STRPTR
000070	000456 					BR	5$
000072	016501  000006 			1$:	MOV	6(R5),R1			; *(DATA),BUFFER.PTR			2910
000076	112721  000006 				MOVB	#6,(R1)+			; *,BUFFER.PTR				2913
000102	012700  000004 				MOV	#4,R0				; *,COUNT				2915
000106	112221 				2$:	MOVB	(R2)+,(R1)+			; PASSWORD.PTR,BUFFER.PTR		2916
000110	077002 					SOB	R0,2$				; COUNT,*				0000
000112	012700  000004 				MOV	#4,R0				; *,COUNT				2918
000116	105722 				3$:	TSTB	(R2)+				; PASSWORD.PTR				2919
000120	001411 					BEQ	4$
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page 104
X03.52		TRIGGER_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (23)

000122	016501  000002 				MOV	2(R5),R1			; *(DATA),STRPTR			2922
000126	112721  000360 				MOVB	#360,(R1)+			; *,STRPTR
000132	112721  000157 				MOVB	#157,(R1)+			; *,STRPTR
000136	105021 					CLRB	(R1)+				; STRPTR
000140	105021 					CLRB	(R1)+				; STRPTR
000142	000433 					BR	6$				;					2921
000144	077014 				4$:	SOB	R0,3$				; COUNT,*				0000
000146	011546 					MOV	(R5),-(SP)			; DATA,*				2930
000150	012746  000006 				MOV	#6,-(SP)
000154	016546  000006 				MOV	6(R5),-(SP)			; *(DATA),*
000160	012746  000005 				MOV	#5,-(SP)
000164	016501  000002 				MOV	2(R5),R1			; *(DATA),*
000170	010146 					MOV	R1,-(SP)
000172	004767  000000G				JSR	PC,UD.WRITE
000176	062706  000012 				ADD	#12,SP
000202	032700  000001 				BIT	#1,R0
000206	001013 					BNE	7$
000210	010100 					MOV	R1,R0				; *,STRPTR				2933
000212	112720  000366 				MOVB	#366,(R0)+			; *,STRPTR
000216	112720  000377 				MOVB	#377,(R0)+			; *,STRPTR
000222	116010  177777 				MOVB	-1(R0),(R0)			; *(STRPTR),STRPTR
000226	005200 				5$:	INC	R0				; STRPTR
000230	105010 					CLRB	(R0)				; STRPTR
000232	005000 				6$:	CLR	R0				;					2932
000234	000207 					RTS	PC
000236	010100 				7$:	MOV	R1,R0				; *,STRPTR				2937
000240	112720  000001 				MOVB	#1,(R0)+			; *,STRPTR
000244	112720  000377 				MOVB	#377,(R0)+			; *,STRPTR
000250	116020  177777 				MOVB	-1(R0),(R0)+			; *(STRPTR),STRPTR
000254	105010 					CLRB	(R0)				; STRPTR
000256	012700  000001 				MOV	#1,R0				;					2866
000262	000207 					RTS	PC
; Routine Size:  90 words,	Routine Base:  $CODE$ + 12676
; Maximum stack depth per invocation:  9 words


;	  2940	
;	  2941	end				!End of Module NMLDTL
;	  2942	eludom



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


;					PSECT SUMMARY
;
;	Psect Name			Words	  Attributes
;	 $PLIT$				   38	    RO ,  D  ,  LCL,  REL,  CON
;	 $CODE$				 2873	    RO ,  I  ,  LCL,  REL,  CON
;	 $OWN$				    4	    RW ,  D  ,  LCL,  REL,  CON
NMLDTL								24-May-1985 13:20:23	TOPS-20 Bliss-16 2A(530)	    Page 105
X03.52		TRIGGER_NODE					14-Nov-1984 14:28:16	DNET61:<MCB.NML>NMLDTL.BLI.1 (23)



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





;	  2943	! Local Modes:
;	  2944	! Mode:BLISS
;	  2945	! Auto Save Mode:2
;	  2946	! Comment Column:40
;	  2947	! Comment Rounding:+1
;	  2948	! End:
; Size:		2873 code + 42 data words
; Run Time:	00:59.0
; Elapsed Time:	01:12.8
; Memory Used:	137 pages
; Compilation Complete
ABORT				2238#	2309	2361	2393	2426	2438	2743#	2768	2775	2809	2829
ACCEPTABLE_PARAMETERS		 699#	 713	 781#	 795	 864#	 878	 927	1072
ADR				1803	1805#	1806	1813	1814#
BLISS16				 489
BUFFER				 972
BUFFER_PTR			2345	2347#	2348	2349	2350	2356	2402	2404#	2406	2414	2452	2454#
				2459	2461	2463	2464	2465	2466	2471	2472	2473#	2479	2480	2481#
				2484	2485	2486	2487	2489	2491	2493#	2496	2664	2667#	2668	2674#
				2675	2780	2785#	2790	2791	2792	2803	2812#	2818	2824#	2827	2908
				2910#	2913	2916
BUF_PTR				1617	1621#	1622	1623	1630	1660	1662#	1664	1678	1688	1695	1696
				1723	1739
BYTE_BUFFER			2006	2019	2041	2065	2097	2121	2131#	2134
CHECK_PARAMETERS		 968	1006	1073
CHK11_ASCII_TEXT		2682
CIRCUIT_			1026	1186	1252	1262	1278	1288	1307	1321	2860	2862
CIRCUIT_CLOSE			 500	 747	 830	 916
CIRCUIT_HANDLE			1228	1327#	1330	1332
CIRCUIT_OPEN			 501	 734	 816	 902
CIRCUIT_PROMPT			 502
CIRCUIT_SERVICE			1276	1279	1280#	1282
CIRCUIT_STATE			1184	1187	1188#	1190	1250	1253	1254#	1256
CIRCUIT_SUBSTATE		1305	1308	1309#	1311	1313
CNT				1804	1806#	1819#
COUNT				2915	2918
CPARM_SERVICE			 635#	1279
CPARM_STATE			 633#	1187	1253
CPARM_SUBSTATE			 634#	1308	2861	2863
CPU				1409	1411#	1416	1423
CPU_IS_PDP11			 503	1487	2256	2756
CPU_PDP11			1423
CURRENT_LOAD			2546	2587#	2608	2618	2625	2632	2675#	2684#
DATA				1432	1484	1487	1489	1492	1498	1501	1506	1510	1513	1530	1532
				1535	1542	1544	1547	1578	1596	1600	1604	1621	1638	1639	1640
				1647	1648	1649	1662	1684	1691	1728	2209	2252	2256	2258	2260
				2262	2264	2271	2276	2281	2285	2287	2293	2347	2378	2379	2380
				2383	2384	2385	2404	2424	2436	2454	2476	2481	2486	2487	2493
				2495	2496	2497	2866	2890	2893	2895	2900	2910	2922	2928	2929
				2930	2933	2937
DB				 724	 726#	 727#	 734	 745	 747	1139	1166	1167#	1168#	1170	1171
				1179	1180	1186	1193	1194	1204	1231	1234	1236	1239	1252	1262
				1278	1288	1307	1311#	1316#	1318#	1321	1327	1328	1332#	1338	1341
				1342#	1343#	1345	1346#	1347#	1349	1350#	1351#	1354	1357	1381	1383
				1385	1411	1414	1419	1426	1762	1825#	1827#	1829#	1833#	1836	1841#
				1843#	1845#	1849#	1852	1857#	1859#	1861#	1863	1865	1872	1892	1900#
				1902#	1905	1914
DB_DUMP_ADDRESS			 543#	1062	1063	1530	1532	1863
DB_DUMP_COUNT			 544#	1064	1065	1542	1544	1865
DB_DUMP_FILE			 539#	1047	1498	1859
DB_SECONDARY_DUMPER		 540#	1048	1510	1861
DEVTYPE				1674#	1678#	1681
DLX_DATA			1638	1647	2378	2383	2495	2648	2928
DLX_DUMP			 727	1344
DLX_LOAD			 810	1179	1340
DLX_OTHER			 896	1381
DLX_SECONDARY			2826
DTL_CLEANUP			 499	 751	 834	 925
DTL_SETUP			 498	 713	 795	 878
DUMMY				 458+	 460+	 461+
DUMPED_ADDRESS			1713	1723	1725
DUMPER_ASSUMED			1472#	1473	1580	1614
DUMPER_BROKEN			1476#
DUMPER_NEEDED			1473#	1474	1590
DUMPER_READY			1475#	1476	1614
DUMPER_RUNNING			1474#	1475	1614	1635
DUMPER_STATE			1479	1580#	1584	1605#	1635	1645#	1656#	1700#	1740#	1743#
DUMP_COUNT_DEFAULTED		1478	1540#	1551#	1556#	1559#	1702
DUMP_LENGTH			1618	1625	1627	1628	1630
DUMP_NODE			 504	 745
DUMP_REQUEST			1470	1615	1656	1700	1740	1743
ENTER_MOP_MODE			2913
ENTITY_TYPE			1789	1793#	1912
EQLU				2272	2273	2274	2288	2289
FB				1480	1484#	1485#	1498#	1503	1530	1537	1538	1542	1549	1554	1555
				1567	1582	1623	1625	1705	1706	1725	1733	1734	1739	1759	1916
				1939	1942	1968	1970	1971	1975#	1978	2012	2021	2024	2029	2034
				2043	2046	2051	2053	2057	2067	2070	2080	2089	2099	2102	2108
				2114	2123	2126	2134	2238	2240	2245	2252#	2253#	2254#	2302	2309
				2334	2350	2353	2354	2356	2357	2359	2361	2364	2392	2393	2426
				2431	2438	2446	2491	2743	2745	2750	2752#	2753#	2754#	2762	2768
				2770	2773	2775	2792	2801	2803	2804	2807	2809	2818	2829	2836
FB_BYTES_LEFT			 581#	1542	1549	1554	1555	1582	1625	1705	1706	1734	2051	2053
				2334	2353	2354	2431	2770	2801
FB_CURRENT_ADDRESS		 580#	1530	1537	1538	1623	1706	1725	1733	2029	2350	2364	2792
FB_FILE				 579#	1498	1503	1970	2254	2754
FB_FILE_HANDLE			 577#	1739	1939	1975	2012	2021	2034	2043	2057	2067	2089	2099
				2114	2123	2134	2356	2803
FB_FILE_TYPE			 583#	1485	1968	2024	2046	2070	2080	2102	2126	2253	2359	2753
				2773	2807
FB_RESPONSE_PTR			 578#	1484	1739	1939	1971	2012	2021	2024	2034	2043	2046	2057
				2067	2070	2080	2089	2099	2102	2114	2123	2126	2134	2252	2357
				2359	2392	2752	2804	2807
FB_TRANSFER_ADDRESS		 582#	2108	2491	2818
FEATURES			1676#	1696#	1698
FETCH_PARAMETERS		 505	1072
FIELDS				 520
FILE				2209	2254	2715	2754
FILE_CLOSE			 506	1759	2240	2446	2745	2836
FILE_DATA_BLOCK_ALLOCATION	 588#
FILE_DATA_BLOCK_SIZE		 587#	 591
FILE_DATA_BLOCK			 591#	1480	1916	1942	1978	2245	2750
FILE_DATA_FIELDS		 575#	 592
FILE_DUMP_IMAGE			1485
FILE_HANDLE			1966	1968#	1973	1975
FILE_OPEN			 507	1567	2302	2762
FILE_READ_LABEL			 508	2309	2768
FILE_SECONDARY_DUMPER		1600
FILE_SECONDARY_LOADER		2615
FILE_SYSTEM_IMAGE		2629
FILE_TERTIARY_LOADER		2622
FILE_TYPE			2209	2253	2715	2753
FMT				1869	1873#	1875	1887	1888
GET32				1695	1723
GETB				1664	1678	1688	1696	1873	1879	1880	2406	2414	2465	2466	2468
				2668	2675	2916	2919
GETW				2029	2051	2075	2107	2131	2192
GET_NEXT_PARAMETER		 509	1796	2204
I				2568	2569	2573	2574
IMAGE_LOAD			 510	2622	2629
L$BFLG				 624#	2057
L$BHRB				 626#	2114
L$BLDZ				 623#	2034
L$BSA				 622#	2012
L$BXFR				 625#	2089
LB				 806	 809#	 810#	 816	 818	 828	 830
LB_ADDRESS			 542#	1057	1902	2258
LB_CPU				 548#	1060	1411	1833
LB_HOST				 545#	1051	1872	2271	2281	2285	2287	2293	2476	2481	2486	2487
LB_LOAD_FILE			 535#	1043	1841	2561	2627	2630
LB_NAME				 541#	1056	1900	2262
LB_SECONDARY_LOADER		 536#	1044	1843	2559	2613	2616
LB_SERVICE_DEVICE		 547#	1059	1489	1829
LB_SOFTWARE_IDENTIFICATION	 538#	1046	1857
LB_SOFTWARE_TYPE		 549#	1061	1849	2576
LB_TERTIARY_LOADER		 537#	1045	1845	2560	2620	2623
LINK_AUTODUMPING		 651#	1346
LINK_AUTOLOADING		 650#	1342
LINK_AUTOSERVICE		 649#	1167	1317
LINK_AUTOTRIGGERING		 652#	1350
LINK_CLEARED			 640#
LINK_DISABLED			 657#	1280
LINK_DUMPING			 647#	1347
LINK_ENABLED			 656#	1284
LINK_FAILED			 654#	1315
LINK_LOADING			 646#	1343
LINK_LOOPING			 645#
LINK_NO_SUBSTATE		 642#	1168	1309	1315
LINK_OFF			 638#
LINK_ON				 637#	1188	1192	1254	1258
LINK_REFLECTING			 644#
LINK_SERVICE			 639#	1258
LINK_STARTING			 643#
LINK_SYNCHRONIZING		 653#
LINK_TRIGGERING			 648#	1351
LITERALS			 520
LOADNUM				2412	2414#	2416	2421
LOAD_DATA			2504	2559	2560	2561	2572	2576	2580	2613	2615	2616	2620	2622
				2623	2627	2629	2630	2635	2648	2649	2651	2667	2679	2688	2706
				2715	2752	2756	2773	2785	2824	2826	2827	2828
LOAD_NODE			 511	 828
LOAD_NUMBER			2313	2328#	2349	2416	2419#	2421	2461
LOAD_WITHOUT_TRANSFER		2348
LOAD_WITH_TRANSFER		2790
MEMORY_DUMP_DATA		1710
MEMZISE				1671	1695	1705
MOPVER				1675#
MOP_BUFFER_ALLOCATION		 612#	 997
MOP_BUFFER_LENGTH		 610#	 611	1627	1628	1648	2384	2649
MOP_BUFFER_SIZE			 611#	 612
MOP_FUNCTION			2665	2668#	2670	2689
MOP_LOAD_DATA_LENGTH		 614#	2351
MOP_MODE_RUNNING		1382	1666
MOP_RESPONSE_LENGTH		 615#
NEG1				1526	1527	1528	1532	1544
NICE$_CWS			1262	1288	1321
NICE$_FIO			2024	2046	2070	2102	2126	2359	2807
NICE$_IFC			2080	2773
NICE$_IID			1892
NICE$_IPV			1426	1836	1852	2706	2922
NICE$_LCE			2392	2933
NICE$_LPE			1684	1691	1728	2424	2436	2688
NICE$_MPE			2635
NICE$_PAM			1239	1419	1506	1596	2900
NICE$_PNA			1905
NICE$_PRV			 707	 789	 872
NICE$_REE			 988	1002
NICE$_SUC			 728	 742	 808	 825	 894	 911	1128	1130	1180	1578	1604	2679
				2937
NICE$_UFO			 921
NML$CLR_VDB_PARAMETER		 666	2862
NML$DUMP			 495
NML$FIND_NDB			 664*	1033
NML$GET_VDB_PARAMETER		 667	1186	1233	1252	1278	1307	1413	1491	1500	1512	1534	1546
				2276	2571	2579	2894
NML$LOAD			 496
NML$PARAMETER_DATA		 665	2193
NML$REQUEST_FINISH		1131
NML$REQUEST_MANAGER		 474+
NML$SET_VDB_PARAMETER		 668	2860
NML$TRIGGER			 497
NMLDTL				 329#
NML_LKG_DB			 490#	 491#	 500	 501	 502	 503	 504	 506	 507	 508	 510	 511
				 512	 513	 514	1139#	1204#	1357#	1385#	1432#	1916#	1942#	1978#	2209#
				2504#	2715#	2839#	2866#
NMU$FILE_CLOSE			1939
NMU$FILE_OPEN			1968
NMU$FILE_READ			2021	2043	2067	2099	2123	2356	2803
NMU$FILE_ROUTINES		 670
NMU$FILE_SEEK			2012	2034	2057	2089	2114	2134
NMU$FILE_WRITE			1739
NMU$K_MOP_RETRY_LIMIT		1634	2376
NMU$MEMORY_GET			 986	 999
NMU$MEMORY_MANAGER		 472+
NMU$MEMORY_RELEASE		1083	1122
NMU$NETWORK_LOCAL		 669	2292
NMU$QUEUE_MANAGER		 473+
NMU$SCHED_MANAGER		 471+*
NODE_E				1021	1233	1413	1491	1500	1512	1534	1546	1794	1892	2276	2571
				2579	2894
NODE_ID_BUFFER_LENGTH		 545	2284
NOD_PTR				1870	1872#	1879	1880	1881	1885	1886	1887	1888
NONE				 596
PARAMETERS_WITH_TRANSFER	2459
PARAMETER_TO_GET		2556#	2573
PARM_DATA			1791	1796	1825	1827	1829	1831	1833	1841	1843	1845	1847	1849
				1857	1859	1861	1863	1865	1873	1879	1880	1888	1900	1902	2139
				2196	2204
PARM_NO				1790	1796	1816	1905	2139	2192#	2194	2204
PARM_PTR			2171	2191#	2192	2195
PASSWORD_PTR			2907	2911#	2916	2919
PRM				1762	1805
PTR				1050	1051#	1052	1053	1054	1525	2017	2019#	2021	2029	2039	2041#
				2043	2051	2062	2065#	2067	2075	2095	2097#	2099	2107	2119	2121#
				2123	2131	2269	2271#	2272	2273	2274	2280#	2281	2287#	2288	2289
				2292#	2293
PUT32				1623	2350#	2491	2792	2818
PUTB				1622	1879	1880	1881	1885	1886	1887	2348	2349	2459	2461	2463
				2464	2465	2466#	2471	2472	2479	2480	2484	2485	2486	2487	2489
				2790	2791	2913	2916
PUTW				1630
RB_DTL_DATA			 566#	 726	 809	 895	 978	1008	1083	1084	1121	1122
RB_DTL_DATA_ALLOCATION		 567#	 996	 999	1083	1122
RB_LOAD_DATA			 566
RB_LOAD_DATA_ALLOCATION		 567
RB_NICE_ENTITY			1023	1028	1033
RB_NICE_ENTITY_TYPE		1019	1793	1794	1912	2193
RB_NICE_LENGTH			2180
RB_NICE_PARAMETERS		2173	2180	2191	2203
RB_NICE_PARAMETER_LENGTH	2174	2182	2193
RB_NICE_POINTER			2180
RB_NICE_QUALIFIER		2203
RB_PRV_SERVICE			 707	 789	 872
RB_RESPONSE			 702	 784	 867	 976	 986	1115
RB_RESPONSE_ALLOCATION		 985	 986
RB_RESPONSE_LENGTH		1130	1135
RB_RETURN_CODE			 988
REQ				 671	 702	 707	 713	 726	 751	 753	 784	 789	 795	 809	 834
				 836	 867	 872	 878	 895	 925	 927	 976	 978#	 985#	 986#	 988#
				 996#	 999	1008#	1019	1023	1028	1033	1072	1083	1084#	1090	1115
				1121	1122	1130#	1131	1135#	1762	1793	1794#	1796	1912#	2139	2173#
				2174	2180	2182#	2191	2193#	2203	2204
REQUEST_BLOCK			 671	 753	 836	 927	1090	1762	2139
REQUEST_DUMP			1622
REQUEST_MEMORY_LOAD		2409	2677
REQUEST_PROGRAM			2672
RESPONSE_BUFFER_ALLOCATION	 608#	 985
RESPONSE_BUFFER_LENGTH		 606#	 607
RESPONSE_BUFFER_SIZE		 607#	 608
RESPONSE_PTR			 702#	 715	 736	 746	 784#	 797	 829	 867#	 880	 915	 922	 976#
				1002	1017	1115#	1130	1133	1135
RESULT				1619	1642#	1647#	1651	1654	1667	1715#	1717	1733	1734	1739	2375
				2381#	2383#	2386	2389
RET				 971	 979#	1073#	1081	1087
RETURN_CODE			2545	2596#	2618#	2625#	2632#	2705	2707
RTN_COD				 705	 728#	 736#	 742	 746#	 751	 787	 808#	 818#	 825	 829#	 834
				 870	 894#	 904#	 911	 915#	 921#	 922	 925	1090	1128	1137
SB				 973	 999#	1008	1009#	1010#	1017#	1023#	1024#	1028#	1033#	1042#	1043#
				1044#	1045#	1046#	1047#	1048#	1051	1056#	1057#	1059#	1060#	1061#	1062
				1063	1064	1065	1072	2839	2859	2860	2861	2862
SB_AUTOSERVICE			 552#	1166	1316	1318	1341	1345	1349
SB_BUFFER			 530#	1009	1010
SB_BUFFER_PTR			 531#	1010	1621	1639	1648	1662	2347	2379	2384	2404	2454	2493
				2496	2649	2667	2785	2824	2827	2893	2910	2929
SB_CIRCUIT_HANDLE		 528#	1171	1193	1332	1381	1638	1647	2378	2383	2495	2648	2826
				2928
SB_NODE_DATA			 532#	1023	1033	1234	1414	1492	1501	1513	1535	1547	2260	2264
				2276	2572	2580	2895
SB_RESPONSE_PTR			 529#	 818	 904	1017	1180	1194	1239	1262	1288	1321	1328	1383
				1419	1426	1484	1506	1578	1596	1604	1640	1649	1684	1691	1728
				1836	1852	1892	1905	1914	2252	2380	2385	2424	2436	2497	2635
				2651	2679	2688	2706	2752	2773	2828	2900	2922	2930	2933	2937
SB_SERVICE_CIRCUIT		 533#	1024	1028	1186	1231	1236	1252	1278	1307	1327	1825	2860
				2862
SB_SERVICE_PASSWORD		 534#	1042	1827	2890
SB_SUBSTATE			 551#	1167	1168	1311	1342	1343	1346	1347	1350	1351	2859	2861
SB_USAGE			 550#	 727	 810	 896	1179	1327	1338
SECONDARY_DUMPER		1481	1510#	1515	1517#	1593	1601
SECONDARY_LOAD			 512	1600	2615
SECONDARY_LOADER		2584	2612	2707	2709
SERVICE_CIRCUIT			1229
SERVICE_DATA_BLOCK		 560#	 724	 806	 892	 973	1139	1204	1357	1385	1432	1762	2209
				2504	2715	2839	2866
SERVICE_DATA_BLOCK_ALLOCATION	 557#	 996
SERVICE_DATA_BLOCK_SIZE		 556#	 560	1009
SERVICE_DATA_FIELDS		 523#	 561
SERVICE_DEVICE			1482	1489#	1494	1496#	1680	1681
SERVICE_PASSWORD		2888	2890#	2893#	2897	2911
SET_SUBSTATE			 513	1170	1354
SOFTWARE_TYPE			2554	2576#	2582	2584#	2587
SYSTEM_IMAGE			2626	2707	2711
TARGET_NAME			2246	2262#	2264#	2266#	2468	2473
TARGET_NUMBER			2247	2258#	2260#	2465	2466
TASK_INFO			 446+
TB				 892	 895#	 896#	 902	 904	 914	 916
TEMP				1672	1674	1675	1676	2094	2107#	2108	2269	2277	2280	2284#	2285
TERTIARY_LOADER			2619	2710
THIRTY_TWO_BIT			1526	1671	1713	1791
TIMES				1634	2376
TRIGGER_NODE			 514	 914
VAL				1811	1813#	1816
VALUE				2063	2075#	2077
WHERE_TO_PUT_IT			2558	2559#	2560#	2561#	2569	2574
$ADDRESS			 530
$BIT				 552
$BYTES				 543	 544	 545	 580	 581	 582
$BYTE				 583
$FALSE				 447+	1240	1263	1289	1316	1322	1330	1420	1427	1487	1507	1551
				1559	1567	1973	2013	2026	2035	2048	2058	2072	2082	2090	2104
				2115	2128	2135	2183	2241	2256	2302	2498	2618	2625	2632	2637
				2746	2756	2762	2901	2923	2934
$FIELD				 522	 574
$FIELD_SET_SIZE			 556	 587
$FIELD_SET_UNITS		 557	 588
$INCOMPLETE$			 458+#
$INTEGER			 528	 577
$INTERNAL_ERROR$		 443+#
$MCB				 882
$NICE$ERR_OPF			 463+
$NML$MAP_NODE_ID		2285
$NMU_DLX_CLOSE			1171
$NMU_DLX_INITIALIZE		1193
$NMU_DLX_OPEN			1327
$NMU_DLX_READ			1647	2383	2648
$NMU_DLX_WRITE			1381	1638	2378	2495	2826	2928
$POINTER			 529	 531	 532	 533	 534	 535	 536	 537	 538	 539	 540	 541
				 542	 578	 579
$RESPONSE			 922	1002	1130	1262	1288	1321	1578	1604	1684	1691	2679	2900
				2922	2933	2937
$RESPONSE_LENGTH		1135
$RESPONSE_X			1239	1419	1426	1506	1596	1728	1836	1852	1892	1905	2024	2046
				2070	2080	2102	2126	2359	2392	2424	2436	2635	2688	2706	2773
				2807
$SHOW				 520	 596
$TINY_INTEGER			 547	 548	 549	 550	 551
$TOPS20				1173
$TRUE				1202	1318	1355	1430	1540	1556	1760	1940	1976	2137	2206	2502
				2598	2611	2837	2938
%ADDI32				1733	2364#
%ASLI32				1555	2053
%CMP32				1532	1544	1725
%CMPI32				1582	1627	2334	2353	2770
%GLOBAL_ROUTINE			 671#	 753#	 836#
%MOV32				1530	1542	1625	1705	1863	1865
%MOVF32				2354	2801#
%MOVI32				1062	1064	1527	1538	1554	1628	2029	2051
%MOVT32				2108
%REMAINING			 446+
%ROUTINE			 927#	1090#	1139	1204	1357	1385	1432	1762#	1916	1942	1978	2139#
				2209	2504	2715	2839	2866
%SUB32				1706
%SUBI32				1063	1065	1528	1734	2431#