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#