Trailing-Edge
-
PDP-10 Archives
-
TOPS-20_V6.1_DECnetSrc_7-23-85
-
mcb/nmx/nmxdle.lst
There is 1 other file named nmxdle.lst in the archive. Click here to see a list.
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 1
4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (1)
; 0001 module NMXDLE ( ! Direct Line Access Processor
; 0002 ident = 'X01090'
; 0003 ) =
; 0004 begin
; 0005 !
; 0006 ! COPYRIGHT (c) 1980, 1981, 1982
; 0007 ! DIGITAL EQUIPMENT CORPORATION
; 0008 ! Maynard, Massachusetts
; 0009 !
; 0010 ! This software is furnished under a license and may be used
; 0011 ! and copied only in accordance with the terms of such license
; 0012 ! and with the inclusion of the above copyright notice. This
; 0013 ! software or any other copies thereof may not be provided or
; 0014 ! otherwise made available to any other person. No title to
; 0015 ! and ownership of the software is hereby transferred.
; 0016 !
; 0017 ! The information in this software is subject to change
; 0018 ! without notice and should not be construed as a commitment
; 0019 ! by DIGITAL EQUIPMENT CORPORATION.
; 0020 !
; 0021 ! DIGITAL assumes no responsibility for the use or reliability
; 0022 ! of its software on equipment which is not supplied by
; 0023 ! DIGITAL.
; 0024 !
; 0025
; 0026 !++
; 0027 !
; 0028 ! FACILITY: MCB Network Management
; 0029 !
; 0030 ! ABSTRACT:
; 0031 !
; 0032 ! This module provides access to the line
; 0033 ! protocol level for LOOP LINE/CIRCUIT or
; 0034 ! LOAD/DUMP Network Management Operations.
; 0035 !
; 0036 ! ENVIRONMENT: MCB V3.0
; 0037 !
; 0038 ! AUTHOR: Scott G. Robinson CREATION DATE: 12-OCT-80
; 0039 !
; 0040 ! MODIFIED BY:
; 0041 !
; 0042 ! 01 - Update to MCB V3.2 Naming Conventions
; 0043 ! 02 - Implement MCB DLL interface
; 0044 ! 03 - Code compression
; 0045 ! 04 - Fix a dot bug Al Peckham found
; 0046 ! 05 - Change line/circuit references to common link block
; 0047 ! 06 - Add support for data link watcher.
; 0048 ! Alan D. Peckham, 14-Apr-82
; 0049 ! 07 - Complete rework of NM support.
; 0050 ! 08 - Fix return of LUNBLK in DLXCCP.
; 0051 ! 09 - Disallow DLX_OPEN when NMX$FLG_maintenance_allowed is not on.
; 0052 !--
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 2
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (1)
; 0053
; 0054 !++
; 0055 ! The DLX Support Routines use the following state machine:
; 0056 !
; 0057 ! Routine DLXIOP:
; 0058 !
; 0059 ! OPEN
; 0060 !
; 0061 ! |Validate LUN, Assign Entity| failed
; 0062 ! |Allocate LUN_BLOCK |------------> Deassign Entity, Deallocate
; 0063 ! | LUN_BLOCK, fail IOP
; 0064 ! |
; 0065 ! |Send Stop to Entity Owner |
; 0066 ! |
; 0067 ! | CCP/STP (DLXCCP state DLX_STOP_OWNER)
; 0068 ! |
; 0069 ! |Request Entity to Provider |
; 0070 ! |
; 0071 ! | CCP/STR (DLXCCP state DLX_REQUEST_ENTITY)
; 0072 ! |
; 0073 ! | | Failed ---> Start Owner then Backout
; 0074 ! !Enter Maint to Provider |
; 0075 ! |
; 0076 ! | XCP/x (DLXXCP state DLX_ENTER_MAINT)
; 0077 ! |
; 0078 ! | | Failed --> Release Entity then Backout
; 0079 ! |Complete IOP Successfully |
; 0080 !
; 0081 !
; 0082 ! CLOSE
; 0083 !
; 0084 ! |Validate LUN, LUN_BLOCK | Failed --> fail IOP
; 0085 ! |Return all RCP CCBs |
; 0086 ! |Fail RCV IOPs |
; 0087 ! |Stop Protocol |
; 0088 ! |
; 0089 ! | XCP/x (DLXCCP state DLX_STOP_PROTOCOL)
; 0090 ! |
; 0091 ! |Release Entity |
; 0092 ! |
; 0093 ! | CCP/STP (DLXCCP state DLX_RELEASE_ENTITY)
; 0094 ! |
; 0095 ! |Start Owner |
; 0096 ! |
; 0097 ! | CCP/STR (DLXCCP state DLX_START_OWNER)
; 0098 ! |
; 0099 ! |Deassign Entity |
; 0100 ! |Deallocate LUN_BLOCK |
; 0101 ! |Unlock LUN |
; 0102 ! |Complete IOP |
; 0103 !
; 0104 !
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 3
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (1)
; 0105 ! TRANSMIT
; 0106 !
; 0107 ! |Validate LUN, LUN_BLOCK | Failed --> fail IOP
; 0108 ! |Allocate CCB |
; 0109 ! |
; 0110 ! |Transmit Buffer |
; 0111 ! |
; 0112 ! | XCP/x (DLXXCP state DLX_TRANSMIT)
; 0113 ! |
; 0114 ! |Deallocate CCB |
; 0115 ! |Complete IOP based on C.STS|
; 0116 !
; 0117 !
; 0118 ! RECEIVE
; 0119 !
; 0120 ! |Validate LUN, LUN_BLOCK |
; 0121 ! |Queue RCV IOP |
; 0122 ! |Try to match IOPs with RCPs|
; 0123 !
; 0124 !
; 0125 ! DLXRCP
; 0126 !
; 0127 ! |Validate LUN_BLOCK | failed --> crash
; 0128 ! |Queue RCP CCB |
; 0129 ! |Try to match RCVs with RCPs|
; 0130 !
; 0131 !
; 0132 ! DLXAST
; 0133 !
; 0134 ! |Validate LUN_BLOCK | failed --> return CCB
; 0135 ! |Set appropriate Error Code |
; 0136 ! |Try to complete a RCV IOP |
; 0137 ! !Return CCB |
; 0138 !
; 0139 !--
; 0140
; 0141 !
; 0142 ! INCLUDE FILES:
; 0143 !
; 0144
; 0145 library 'XPORTX';
; 0146
; 0147 library 'MCBLIB';
; 0148
; 0149 library 'NMXPAR';
; 0150
; 0151 library 'NMXLIB';
; 0152
; 0153 require 'DLLLIB';
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 4
X01090 30-Dec-1982 15:40:10 NETPKG:<MCB>DLLLIB.REQ.7 (1)
; R0154 ! COPYRIGHT (c) 1980, 1981, 1982
; R0155 ! DIGITAL EQUIPMENT CORPORATION
; R0156 ! Maynard, Massachusetts
; R0157 !
; R0158 ! This software is furnished under a license and may be used
; R0159 ! and copied only in accordance with the terms of such license
; R0160 ! and with the inclusion of the above copyright notice. This
; R0161 ! software or any other copies thereof may not be provided or
; R0162 ! otherwise made available to any other person. No title to
; R0163 ! and ownership of the software is hereby transferred.
; R0164 !
; R0165 ! The information in this software is subject to change
; R0166 ! without notice and should not be construed as a commitment
; R0167 ! by DIGITAL EQUIPMENT CORPORATION.
; R0168 !
; R0169 ! DIGITAL assumes no responsibility for the use or reliability
; R0170 ! of its software on equipment which is not supplied by
; R0171 ! DIGITAL.
; R0172
; R0173 !+
; R0174 ! *** Start of DLLLIB ***
; R0175 ! DLL layer interface symbols
; R0176 !-
; R0177
; R0178 !+
; R0179 ! The circuit owner will be given the circuit by receiving a CTL/STR CCB
; R0180 ! with C_PRM1 containing the provider PIX/LIX. The owner then does a
; R0181 ! CTL/STR to the provider to establish the CCB communications and starts
; R0182 ! activity.
; R0183 !
; R0184 ! If C_LIN eqlu 0, then the owner is being given the circuit for the first
; R0185 ! time and C_PRM2 will contain circuit name (see below). The owner will
; R0186 ! return his circuit identifier (see $DLL_REQUEST_CIRCUIT) in C_LIN.
; R0187 ! This and the owner PIX will be provided to Network Management as the
; R0188 ! OWNERID for circuit Network Management functions.
; R0189 ! Circuit flags will be provided in C_PRM3 for further information on the
; R0190 ! circuit.
; R0191 ! If C_LIN nequ 0, then it contains the user's circuit identifier with which
; R0192 ! the circuit was previously associated when a CTL/STP was performed.
; R0193 !
; R0194 ! The circuit must be released when a CTL/STP is received. C_LIN will contain
; R0195 ! the circuit identifier for the circuit to be released. At present,
; R0196 ! this temporarily disassociates the circuit from the owner, and the
; R0197 ! circuit can be re-associated through the CTL/STR as described above.
; R0198 !-
; R0199
; R0200 field
; R0201 DLL$FW_START_CCB_PRM1 =
; R0202 set
; R0203 DLL$B_PROVIDER_LINE_INDEX = [0, 0, 8, 0],
; R0204 DLL$B_PROVIDER_PROCESS_INDEX = [0, 8, 8, 0]
; R0205 tes,
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 5
X01090 30-Dec-1982 15:40:10 NETPKG:<MCB>DLLLIB.REQ.7 (1)
; R0206 DLL$FW_START_CCB_PRM2 =
; R0207 set
; R0208 DLL$A_CIRCUIT_NAME = [0, 0, 16, 0]
; R0209 tes,
; R0210 DLL$FW_START_CCB_PRM3 =
; R0211 set
; R0212 DLL$V_DTE_CIRCUIT = [0, 0, 1, 0] ! Circuit is a DTE to a KL20 CPU.
; R0213 tes;
; R0214
; R0215 !+
; R0216 ! The circuit owner begins the session with the provider by calling
; R0217 ! $DLL_REQUEST_CIRCUIT. This establishes the CCB interface to the
; R0218 ! provider and defines the circuit identifier that will be passed in C_LIN
; R0219 ! in CCBs being returned from the provider to the owner. The circuit state
; R0220 ! will be reported in the return status code.
; R0221 !
; R0222 ! The session is terminated by the owner with a call to $DLL_RELEASE_CIRCUIT.
; R0223 ! This will complete after all CCBs exchanged between the owner and provider
; R0224 ! have been returned to their originators.
; R0225 !-
; R0226
; R0227 macro
; MR0228 $DLL_REQUEST_CIRCUIT (CCB, PROVIDER_PIX, LIN) =
; MR0229 begin
; MR0230
; MR0231 bind
; MR0232 $DLL$CCB = CCB : block field (C_FIELDS);
; MR0233
; MR0234 %if not %null (PROVIDER_PIX)
; MR0235 %then $DLL$CCB [C_PIX] = PROVIDER_PIX;
; MR0236 %fi
; MR0237 %if not %null (LIN)
; MR0238 %then $DLL$CCB [C_LIN] = LIN;
; MR0239 %fi
; MR0240 $DLL$CCB [C_FNC] = FC_CTL;
; MR0241 $DLL$CCB [C_MOD] = FM_STR;
; MR0242 $MCB_SCHEDULE_CCB ($DLL$CCB [C_LNK]);
; R0243 end %,
; MR0244 $DLL_RELEASE_CIRCUIT (CCB, PROVIDER_PIX) =
; MR0245 begin
; MR0246
; MR0247 bind
; MR0248 $DLL$CCB = CCB : block field (C_FIELDS);
; MR0249
; MR0250 %if not %null (PROVIDER_PIX)
; MR0251 %then $DLL$CCB [C_PIX] = PROVIDER_PIX;
; MR0252 %fi
; MR0253 $DLL$CCB [C_FNC] = FC_CTL;
; MR0254 $DLL$CCB [C_MOD] = FM_STP;
; MR0255 $MCB_SCHEDULE_CCB ($DLL$CCB [C_LNK]);
; R0256 end %;
; R0257
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 6
X01090 30-Dec-1982 15:40:10 NETPKG:<MCB>DLLLIB.REQ.7 (1)
; R0258 !+
; R0259 ! The $DLL_INITIALIZE call requests the provider to change the
; R0260 ! circuit state to OFF, and then SYNCHRONIZING state. This causes
; R0261 ! the protocol to be stopped and re-initialized.
; R0262 !
; R0263 ! The $DLL_STOP call requests the provider to change the circuit state
; R0264 ! to the OFF state. This causes the protocol to be stopped.
; R0265 !
; R0266 ! The $DLL_ENTER_MAINTENANCE call requests that the circuit be placed
; R0267 ! in OFF, and then MAINTENANCE state.
; R0268 !-
; R0269
; R0270 macro
; MR0271 $DLL_INITIALIZE (CCB, PROVIDER_PIX) =
; MR0272 begin
; MR0273
; MR0274 bind
; MR0275 $DLL$CCB = CCB : block field (C_FIELDS);
; MR0276
; MR0277 %if not %null (PROVIDER_PIX)
; MR0278 %then $DLL$CCB [C_PIX] = PROVIDER_PIX;
; MR0279 %fi
; MR0280 $DLL$CCB [C_FNC] = FC_XME;
; MR0281 $DLL$CCB [C_MOD] = DLL$K_INITIALIZE_LINK;
; MR0282 $MCB_SCHEDULE_CCB ($DLL$CCB [C_LNK]);
; R0283 end %,
; MR0284 $DLL_STOP (CCB, PROVIDER_PIX) =
; MR0285 begin
; MR0286
; MR0287 bind
; MR0288 $DLL$CCB = CCB : block field (C_FIELDS);
; MR0289
; MR0290 %if not %null (PROVIDER_PIX)
; MR0291 %then $DLL$CCB [C_PIX] = PROVIDER_PIX;
; MR0292 %fi
; MR0293 $DLL$CCB [C_FNC] = FC_XME;
; MR0294 $DLL$CCB [C_MOD] = DLL$K_STOP_LINK;
; MR0295 $MCB_SCHEDULE_CCB ($DLL$CCB [C_LNK]);
; R0296 end %,
; MR0297 $DLL_ENTER_MAINTENANCE (CCB, PROVIDER_PIX) =
; MR0298 begin
; MR0299
; MR0300 bind
; MR0301 $DLL$CCB = CCB : block field (C_FIELDS);
; MR0302
; MR0303 %if not %null (PROVIDER_PIX)
; MR0304 %then $DLL$CCB [C_PIX] = PROVIDER_PIX;
; MR0305 %fi
; MR0306 $DLL$CCB [C_FNC] = FC_XME;
; MR0307 $DLL$CCB [C_MOD] = DLL$K_ENTER_MAINTENANCE;
; MR0308 $MCB_SCHEDULE_CCB ($DLL$CCB [C_LNK]);
; R0309 end %;
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 7
X01090 30-Dec-1982 15:40:10 NETPKG:<MCB>DLLLIB.REQ.7 (1)
; R0310
; R0311 !+
; R0312 ! Messages are transmitted by the $DLL_TRANSMIT call, and are received
; R0313 ! through FC_RCP. When the circuit is cycled through the OFF state, or
; R0314 ! a $DLL_RELEASE_CIRCUIT is received, all outstanding transmits will be
; R0315 ! returned.
; R0316 !-
; R0317
; R0318 macro
; MR0319 $DLL_TRANSMIT (CCB, PROVIDER_PIX) =
; MR0320 begin
; MR0321
; MR0322 bind
; MR0323 $DLL$CCB = CCB : block field (C_FIELDS);
; MR0324
; MR0325 %if not %null (PROVIDER_PIX)
; MR0326 %then $DLL$CCB [C_PIX] = PROVIDER_PIX;
; MR0327 %fi
; MR0328 $DLL$CCB [C_FNC] = FC_XME;
; MR0329 $DLL$CCB [C_MOD] = DLL$K_TRANSMIT;
; MR0330 $MCB_SCHEDULE_CCB ($DLL$CCB [C_LNK]);
; R0331 end %;
; R0332
; R0333 DECLARE_SEVERITY (DLL, SUCCESS, WARNING, INFO, ERROR, SEVERE);
; R0334
; R0335 ! FC_XME sub-function codes
; R0336
; R0337 literal
; R0338 DLL$K_TRANSMIT = 0^1,
; R0339 DLL$K_INITIALIZE_LINK = 1^1,
; R0340 DLL$K_STOP_LINK = 2^1,
; R0341 DLL$K_ENTER_MAINTENANCE = 3^1,
; R0342 DLL$K_TRANSMIT_AND_TIME = 4^1;
; R0343
; R0344 ! FC_RCP sub-function codes
; R0345
; R0346 literal
; R0347 DLL$K_DATA_RECEIVED = 0^1,
; R0348 DLL$K_MAINTENANCE_RECEIVED = 1^1;
; R0349
; R0350 ! FC_AST sub-function codes
; R0351
; R0352 literal
; R0353 DLL$K_STATE = 0^1,
; R0354 DLL$K_TRANSIENT_ERROR = 1^1,
; R0355 DLL$K_PERSISTENT_ERROR = 2^1;
; R0356
; R0357 ! General status codes
; R0358
; R0359 $DLL_SUCCESS (DLL$_SUCCESS)
; R0360 $DLL_ERROR (DLL$_PRIVLEDGE_VIOLATION)
; R0361 $DLL_ERROR (DLL$_NOT_SUPPORTED)
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 8
X01090 30-Dec-1982 15:40:10 NETPKG:<MCB>DLLLIB.REQ.7 (1)
; R0362 $DLL_WARNING (DLL$_ABORTED)
; R0363
; R0364 ! FC_AST / DLL$K_STATE status codes
; R0365
; R0366 $DLL_INFO (DLL$_STATE_OFF)
; R0367 $DLL_INFO (DLL$_STATE_SYNCHRONIZING)
; R0368 $DLL_INFO (DLL$_STATE_RUNNING)
; R0369 $DLL_INFO (DLL$_STATE_MAINTENANCE)
; R0370
; R0371 ! FC_AST / DLL$K_TRANSIENT_ERROR status codes
; R0372
; R0373 $DLL_WARNING (DLL$_TRANSMIT_THRESHOLD)
; R0374 ! A transmitted message has not been acknowledged by the other end.
; R0375 $DLL_WARNING (DLL$_RECEIVE_THRESHOLD)
; R0376 ! Unable to receive a message correctly from the other end.
; R0377 $DLL_WARNING (DLL$_SELECTION_THRESHOLD)
; R0378 ! The other end has not been returning control of a half duplex line
; R0379 ! in a timely fashion.
; R0380
; R0381 ! FC_AST / DLL$K_PERSISTENT_ERROR status codes
; R0382
; R0383 $DLL_WARNING (DLL$_START_RECEIVED)
; R0384 ! The other end has requested protocol initialization.
; R0385 $DLL_ERROR (DLL$_MAINTENANCE_RECEIVED)
; R0386 ! The other end has entered maintenance mode.
; R0387 $DLL_SEVERE (DLL$_DEVICE_RESPONSE_ERROR)
; R0388 ! A hardware device has refused to respond in a timely fashion.
; R0389 $DLL_SEVERE (DLL$_DEVICE_SERVICE_ERROR)
; R0390 ! The driver was unable to service the device in a timely fashion.
; R0391 $DLL_SEVERE (DLL$_DEVICE_OPERATION_ERROR)
; R0392 ! The device is not operating correctly. (KMC does not load or start,
; R0393 ! illegal codes from DMC, DMR, KMC, etc.)
; R0394 $DLL_WARNING (DLL$_PAUSE_TIMEOUT)
; R0395 ! DTE-20 timeout during protocol pause
; R0396
; R0397 ! FC_AST / DLL$K_TRANSIENT_ERROR status codes (continued)
; R0398
; R0399 $DLL_WARNING (DLL$_SERVICE_TIMEOUT)
; R0400 ! MOP service mode receive timed out
; R0401 $DLL_WARNING (DLL$_RECEIVE_ERROR)
; R0402 ! MOP message received in error
; R0403
; R0404 !+
; R0405 ! *** End of DLLLIB ***
; R0406 !-
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 9
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (1)
; 0407
; 0408 require 'DLXPAR';
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 10
X01090 3-Jan-1983 18:41:32 NETPKG:<NMX>DLXPAR.REQ.7 (1)
; R0409 ! COPYRIGHT (c) 1980, 1981, 1982
; R0410 ! DIGITAL EQUIPMENT CORPORATION
; R0411 ! Maynard, Massachusetts
; R0412 !
; R0413 ! This software is furnished under a license and may be used
; R0414 ! and copied only in accordance with the terms of such license
; R0415 ! and with the inclusion of the above copyright notice. This
; R0416 ! software or any other copies thereof may not be provided or
; R0417 ! otherwise made available to any other person. No title to
; R0418 ! and ownership of the software is hereby transferred.
; R0419 !
; R0420 ! The information in this software is subject to change
; R0421 ! without notice and should not be construed as a commitment
; R0422 ! by DIGITAL EQUIPMENT CORPORATION.
; R0423 !
; R0424 ! DIGITAL assumes no responsibility for the use or reliability
; R0425 ! of its software on equipment which is not supplied by
; R0426 ! DIGITAL.
; R0427
; R0428 !+
; R0429 ! DLX processing Parameters
; R0430 !-
; R0431 %if not %declared (XPO$K_VERSION) %then library 'MCB:XPORTX' %fi;
; R0432 %if not %declared (MCB$K_VERSION) %then library 'MCB:MCBLIB' %fi;
; R0433
; R0434 !+
; R0435 ! Fields for DLX CCBs and I/O Packets
; R0436 !-
; R0437 $field
; R0438 DLX_OVERLAY_CCB_FIELDS =
; R0439 set
; R0440 $overlay (C_LIX)
; R0441 C_DLX_EID = [$integer], ! Full EID specification
; R0442 $overlay (C_PRM1)
; R0443 C_DLX_STATE = [$address], ! Current processing State for function
; R0444 C_DLX_IOP = [$address], ! Address of IOP for this CCB
; R0445 C_DLX_LUNBLK = [$address] ! Address of LUN Block for this CCB
; R0446 $continue
; R0447 tes;
; R0448
; R0449 macro
; MR0450 DLX_CCB_BLOCK =
; R0451 block field(C_NM_FIELDS, DLX_OVERLAY_CCB_FIELDS) %;
; R0452
; R0453 $literal ! Contents of DLX_CCB_STATE
; R0454 DLX_TRANSMIT = $distinct, ! Have Transmitted Data
; R0455 DLX_STOP_OWNER = $distinct, ! Have Sent Stop to Entity Owner
; R0456 DLX_REQUEST_ENTITY = $distinct, ! Have Requested Entity
; R0457 DLX_ENTER_MAINT = $distinct, ! Have Set Maintenance Mode
; R0458 DLX_STOP_PROTOCOL = $distinct, ! Have Stopped Protocol on Entity
; R0459 DLX_RELEASE_ENTITY = $distinct, ! Have Released Entity
; R0460 DLX_START_OWNER = $distinct; ! Have Started Owner
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 11
X01090 3-Jan-1983 18:41:32 NETPKG:<NMX>DLXPAR.REQ.7 (1)
; R0461
; R0462 literal
; R0463 DLX_STATE_LOW = DLX_TRANSMIT, ! Lowest State
; R0464 DLX_STATE_HIGH = DLX_START_OWNER; ! Highest State
; R0465
; R0466
; R0467 $field
; R0468 DLX_LUN_FIELDS =
; R0469 set
; R0470 LUN_LINK = [$address], ! Link to Next LUN Block
; R0471 LUN_ENTITY_ADDRESS = [$address],! Points to Entity Block for this LUN
; R0472 LUN_ENTITY_BIAS = [$address], ! Bias for Entity Block
; R0473 LUN_STATE = [$byte], ! State: Opening, Opened, Closing
; R0474 LUN_ID = [$byte], ! Unique ID returned in CCB LIX field
; R0475 LUN_RCVS = [$sub_block(2)], ! Queue of IOPs for RCVs
; R0476 LUN_RCPS = [$sub_block(2)], ! Queue of CCB RCP buffers
; R0477 LUN_XMTS = [$integer], ! Number of Outstanding Transmits
; R0478 LUN_ERROR_CODE = [$integer], ! Error Code from OPEN/CLOSE
; R0479 LUN_RCV_ERROR = [$integer] ! Pending Receive Error
; R0480 tes;
; R0481
; R0482 literal
; R0483 DLX_LUN_SIZE = $field_set_size,
; R0484 DLX_LUN_ALLOCATION = $field_set_units;
; R0485
; R0486 macro
; MR0487 DLX_LUN_BLOCK =
; R0488 block [DLX_LUN_SIZE] field(DLX_LUN_FIELDS) %;
; R0489
; R0490 $literal
; R0491 LUN_OPENING = $distinct,
; R0492 LUN_CLOSING = $distinct,
; R0493 LUN_OPENED = $distinct;
; R0494 !+
; R0495 ! *****End of DLXPAR*****
; R0496 !-
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 12
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (1)
; 0497
; 0498 !
; 0499 ! TABLE OF CONTENTS:
; 0500 !
; 0501
; 0502 forward routine
; 0503 DLXAST : MCB_DB_CCB_MOD novalue,
; 0504 DLXCCP : MCB_DB_CCB novalue,
; 0505 DLXCON : NMX$LKG_UCB_IOP novalue, ! Process IOP Connect
; 0506 DLXCTL : MCB_DB_CCB_MOD novalue,
; 0507 DLXDSC : NMX$LKG_UCB_IOP novalue, ! Process IOP Disconnect
; 0508 DLXRCP : MCB_DB_CCB_MOD novalue,
; 0509 DLXRCV : NMX$LKG_UCB_IOP novalue, ! Process IOP Receive
; 0510 DLXXCP : MCB_DB_CCB_MOD novalue,
; 0511 DLXXMT : NMX$LKG_UCB_IOP novalue, ! Process IOP Transmit
; 0512 ALLOCATE_LUNBLK, ! Allocate LUNBLK and initialize
; 0513 EXTRACT_LUNBLK, ! Extract a LUNBLK by ID
; 0514 FIND_LUNBLK, ! Find a LUNBLK by ID
; 0515 TRY_SOME_RCVS : novalue; ! Try matching IOPs with Buffers
; 0516
; 0517 !
; 0518 ! Link STATE values
; 0519 !
; 0520
; 0521 literal
; 0522 LINK_ON = 0,
; 0523 LINK_OFF = 1,
; 0524 LINK_SERVICE = 2,
; 0525 LINK_CLEARED = 3;
; 0526
; 0527 !
; 0528 ! Link SUBSTATE values
; 0529 !
; 0530
; 0531 literal
; 0532 LINK_NO_SUBSTATE = -1,
; 0533 LINK_STARTING = 0,
; 0534 LINK_REFLECTING = 1,
; 0535 LINK_LOOPING = 2,
; 0536 LINK_LOADING = 3,
; 0537 LINK_DUMPING = 4,
; 0538 LINK_TRIGGERING = 5,
; 0539 LINK_AUTOSERVICE = 6,
; 0540 LINK_AUTOLOADING = 7,
; 0541 LINK_AUTODUMPING = 8,
; 0542 LINK_AUTOTRIGGERING = 9,
; 0543 LINK_SYNCHRONIZING = 10,
; 0544 LINK_FAILED = 11;
; 0545
; 0546 !
; 0547 ! Link SERVICE values
; 0548 !
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 13
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (1)
; 0549
; 0550 literal
; 0551 LINK_ENABLED = 0,
; 0552 LINK_DISABLED = 1;
; 0553
; 0554 !
; 0555 ! External routines
; 0556 !
; 0557 external
; 0558 MCB$GAW_PROCESS_DATA_BASE : vector [2];
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 14
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (2)
; 0559 global routine DLXAST (NMXDB, CCB, FCM) : MCB_DB_CCB_MOD novalue = ! Process Asynchronous notifications
; 0560
; 0561 !++
; 0562 ! FUNCTIONAL DESCRIPTION:
; 0563 !
; 0564 !
; 0565 !
; 0566 ! FORMAL PARAMETERS:
; 0567 !
; 0568 ! None
; 0569 !
; 0570 ! IMPLICIT INPUTS:
; 0571 !
; 0572 ! None
; 0573 !
; 0574 ! IMPLICIT OUTPUTS:
; 0575 !
; 0576 ! None
; 0577 !
; 0578 ! ROUTINE VALUE:
; 0579 !
; 0580 ! None
; 0581 !
; 0582 ! SIDE EFFECTS:
; 0583 !
; 0584 ! None
; 0585 !--
; 0586
; 0587 begin
; 0588
; 0589 map
; 0590 NMXDB : ref NMXDB_BLOCK,
; 0591 CCB : ref block field (C_FIELDS);
; 0592
; 0593 local
; 0594 LUNBLK : ref DLX_LUN_BLOCK;
; 0595
; 0596 !
; 0597 ! Find our LUN_BLOCK
; 0598 !
; 0599
; 0600 if (LUNBLK = FIND_LUNBLK (.CCB [C_LIN])) eql 0
; 0601 then
; 0602 SIGNAL_STOP (NMX$_ICP, .CCB, 0)
; 0603 else
; 0604
; 0605 if (.LUNBLK [LUN_STATE] eql LUN_OPENED) and (.LUNBLK [LUN_RCV_ERROR] eql 0)
; 0606 then
; 0607 begin
; 0608
; 0609 selectone .FCM of
; 0610 set
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 15
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (2)
; 0611 [DLL$K_PERSISTENT_ERROR] :
; 0612 LUNBLK [LUN_RCV_ERROR] = (selectone .CCB [C_STS] of
; 0613 set
; 0614 [DLL$_START_RECEIVED] : IE$EOT;
; 0615 [DLL$_MAINTENANCE_RECEIVED] : 0;
; 0616 [otherwise] : IE$BBE;
; 0617 tes);
; 0618 [otherwise] : ! What about using state notifications ?
; 0619 ;
; 0620 tes;
; 0621
; 0622 TRY_SOME_RCVS (.LUNBLK);
; 0623 end;
; 0624
; 0625 $MCB_RETURN_CCB (.CCB);
; 0626 end; !of DLXAST
.TITLE NMXDLE
.IDENT /X01090/
.GLOBL .CRDAT, $CCBRT
.SBTTL DLXAST
000000 .PSECT $CODE$, RO
000000 005046 DLXAST::CLR -(SP) ; 0600
000002 116416 000010 MOVB 10(R4),(SP) ; *(CCB),*
000006 004767 000000V JSR PC,FIND.LUNBLK
000012 010001 MOV R0,R1 ; *,LUNBLK
000014 005726 TST (SP)+
000016 005701 TST R1 ; LUNBLK
000020 001013 BNE 1$
000022 005046 CLR -(SP) ; 0602
000024 010446 MOV R4,-(SP) ; CCB,*
000026 012746 100034 MOV #-77744,-(SP)
000032 012746 000003 MOV #3,-(SP)
000036 004767 000000G JSR PC,$STOP
000042 062706 000010 ADD #10,SP
000046 000437 BR 6$ ; 0600
000050 126127 000006 000003 1$: CMPB 6(R1),#3 ; *(LUNBLK),* 0605
000056 001033 BNE 6$
000060 005761 000024 TST 24(R1) ; *(LUNBLK)
000064 001030 BNE 6$
000066 020327 000004 CMP R3,#4 ; FCM,* 0609
000072 001021 BNE 5$
000074 016400 000014 MOV 14(R4),R0 ; *(CCB),* 0612
000100 020027 100130 CMP R0,#-77650
000104 001003 BNE 2$
000106 012700 177702 MOV #-76,R0
000112 000407 BR 4$
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 16
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (2)
000114 020027 100142 2$: CMP R0,#-77636
000120 001002 BNE 3$
000122 005000 CLR R0
000124 000402 BR 4$
000126 012700 177710 3$: MOV #-70,R0
000132 010061 000024 4$: MOV R0,24(R1) ; *,*(LUNBLK)
000136 010146 5$: MOV R1,-(SP) ; LUNBLK,* 0622
000140 004767 000000V JSR PC,TRY.SOME.RCVS
000144 005726 TST (SP)+ ; 0607
000146 004767 000000G 6$: JSR PC,$CCBRT ; 0625
000152 000207 RTS PC ; 0559
; Routine Size: 54 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 5 words
; 0627
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 17
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (3)
; 0628 global routine DLXCCP (NMXDB, CCB) : MCB_DB_CCB novalue =
; 0629
; 0630 !++
; 0631 ! FUNCTIONAL DESCRIPTION:
; 0632 !
; 0633 ! This routine implements the state machine for Direct Line Access
; 0634 ! functions OPEN and CLOSE. It ensures an orderly transition between
; 0635 ! NMX and an Entity's Owner.
; 0636 !
; 0637 ! FORMAL PARAMETERS:
; 0638 !
; 0639 ! NMXDB - NMX process Data Base
; 0640 ! CCB - the CCB which Dispatched us
; 0641 !
; 0642 ! IMPLICIT INPUTS:
; 0643 !
; 0644 ! None
; 0645 !
; 0646 ! IMPLICIT OUTPUTS:
; 0647 !
; 0648 ! None
; 0649 !
; 0650 ! ROUTINE VALUE:
; 0651 !
; 0652 ! None
; 0653 !
; 0654 ! SIDE EFFECTS:
; 0655 !
; 0656 ! None
; 0657 !--
; 0658
; 0659 begin
; 0660
; 0661 map
; 0662 NMXDB : ref NMXDB_BLOCK,
; 0663 CCB : ref DLX_CCB_BLOCK;
; 0664
; 0665 bind
; 0666 LUN_BLOCK = .CCB [C_DLX_LUNBLK] : DLX_LUN_BLOCK,
; 0667 ENTBLK = .LUN_BLOCK [LUN_ENTITY_ADDRESS] : block field (NMX_GENERAL_FIELDS, NMX_LINK_FIELDS,
; 0668 NMX_CIRCUIT_FIELDS, NMX_LINE_FIELDS);
; 0669
; 0670 !
; 0671 ! Dispatch upon current state
; 0672 !
; 0673 MAP$ (.LUN_BLOCK [LUN_ENTITY_BIAS]);
; 0674
; 0675 case .CCB [C_DLX_STATE] from DLX_STATE_LOW to DLX_STATE_HIGH of
; 0676 set
; 0677
; 0678 [DLX_STOP_OWNER] :
; 0679 begin
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 18
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (3)
; 0680 CCB [C_DLX_STATE] = DLX_REQUEST_ENTITY;
; 0681 $DLL_REQUEST_CIRCUIT ((.CCB), .ENTBLK [GENERAL_PROVIDER_PIX], .LUN_BLOCK [LUN_ID]);
; 0682 end;
; 0683
; 0684 [DLX_REQUEST_ENTITY] :
; 0685 begin
; 0686
; 0687 if .CCB [C_STS]
; 0688 then
; 0689 begin
; 0690 CCB [C_DLX_STATE] = DLX_ENTER_MAINT;
; 0691 $DLL_ENTER_MAINTENANCE ((.CCB), .ENTBLK [GENERAL_PROVIDER_PIX]);
; 0692 end
; 0693 else
; 0694 begin
; 0695 LUN_BLOCK [LUN_ERROR_CODE] = IE$CNR;
; 0696 CCB [C_DLX_STATE] = DLX_START_OWNER;
; 0697 CCB [C_FNC] = FC_CTL;
; 0698 CCB [C_MOD] = FM_STR;
; 0699 CCB [C_DLX_EID] = .ENTBLK [GENERAL_OWNER_ID];
; 0700 $MCB_SCHEDULE_CCB (.CCB);
; 0701 end;
; 0702
; 0703 end;
; 0704
; 0705 [DLX_RELEASE_ENTITY] :
; 0706 begin
; 0707 CCB [C_DLX_STATE] = DLX_START_OWNER;
; 0708 CCB [C_FNC] = FC_CTL;
; 0709 CCB [C_MOD] = FM_STR;
; 0710 CCB [C_DLX_EID] = .ENTBLK [GENERAL_OWNER_ID];
; 0711 $MCB_SCHEDULE_CCB (.CCB);
; 0712 end;
; 0713
; 0714 [DLX_START_OWNER] :
; 0715 begin
; 0716 ENTBLK [LINK_LUN_BLOCK] = 0;
; 0717 ENTBLK [LINK_USER_ID] = .ENTBLK [GENERAL_OWNER_ID];
; 0718 begin
; 0719
; 0720 local
; 0721 IOP : ref NMX_IOP_BLOCK;
; 0722
; 0723 IOP = .CCB [C_DLX_IOP];
; 0724 (.IOP [I_LN2]) = 0;
; 0725 EXTRACT_LUNBLK (.LUN_BLOCK [LUN_ID]);
; 0726 $NMX_RETURN_RSX_IOP (.IOP, .LUN_BLOCK [LUN_ERROR_CODE], 0);
; 0727 end;
; 0728 $MCB_RETURN_DSR (DLX_LUN_ALLOCATION, .CCB [C_DLX_LUNBLK]);
; 0729 $MCB_RETURN_CCB (.CCB);
; 0730 end;
; 0731
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 19
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (3)
; 0732 [inrange, outrange] :
; 0733 SIGNAL_STOP (NMX$_ICP, .CCB, .CCB [C_DLX_STATE]);
; 0734 tes;
; 0735
; 0736 end; !of DLXCCP
.GLOBL KISAR6, $SCHED, $RSX, $IOFIN, $MCB
.GLOBL $DSRRT
.SBTTL DLXCCP
000000 010446 DLXCCP::MOV R4,-(SP) ; 0628
000002 010400 MOV R4,R0 ; 0666
000004 016046 000030 MOV 30(R0),-(SP)
000010 011600 MOV (SP),R0 ; 0659
000012 016001 000002 MOV 2(R0),R1
000016 016067 000004 000000G MOV 4(R0),KISAR6 ; 0673
000024 012700 000024 MOV #24,R0 ; 0675
000030 060400 ADD R4,R0
000032 010002 MOV R0,R2
000034 011200 MOV (R2),R0
000036 005300 DEC R0
000040 020027 000006 CMP R0,#6
000044 101003 BHI 1$
000046 006300 ASL R0
000050 066007 000000' ADD P.AAA(R0),PC ; Case dispatch
000054 011246 1$: MOV (R2),-(SP) ; 0733
000056 016646 000004 MOV 4(SP),-(SP)
000062 012746 100034 MOV #-77744,-(SP)
000066 012746 000003 MOV #3,-(SP)
000072 004767 000000G JSR PC,$STOP
000076 062706 000010 ADD #10,SP
000102 000542 BR 8$ ; 0675
000104 012712 000003 2$: MOV #3,(R2) ; 0680
000110 016600 000002 MOV 2(SP),R0 ; 0681
000114 116160 000025 000011 MOVB 25(R1),11(R0)
000122 011602 MOV (SP),R2
000124 116260 000007 000010 MOVB 7(R2),10(R0)
000132 112760 000010 000012 MOVB #10,12(R0)
000140 112760 000002 000013 MOVB #2,13(R0)
000146 000443 BR 6$
000150 016600 000002 3$: MOV 2(SP),R0 ; 0687
000154 032760 000001 000014 BIT #1,14(R0)
000162 001414 BEQ 4$
000164 012712 000004 MOV #4,(R2) ; 0690
000170 116160 000025 000011 MOVB 25(R1),11(R0) ; 0691
000176 112760 000002 000012 MOVB #2,12(R0)
000204 112760 000006 000013 MOVB #6,13(R0)
000212 000421 BR 6$
000214 011600 4$: MOV (SP),R0 ; 0695
000216 012760 177667 000022 MOV #-111,22(R0)
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 20
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (3)
000224 012712 000007 5$: MOV #7,(R2) ; 0707
000230 016600 000002 MOV 2(SP),R0 ; 0708
000234 112760 000010 000012 MOVB #10,12(R0)
000242 112760 000002 000013 MOVB #2,13(R0) ; 0709
000250 016160 000026 000010 MOV 26(R1),10(R0) ; 0710
000256 016604 000002 6$: MOV 2(SP),R4 ; 0711
000262 004767 000000G JSR PC,$SCHED
000266 000450 BR 8$ ; 0675
000270 005061 000032 7$: CLR 32(R1) ; 0716
000274 016161 000026 000030 MOV 26(R1),30(R1) ; 0717
000302 016600 000002 MOV 2(SP),R0 ; 0723
000306 016003 000026 MOV 26(R0),R3 ; *,IOP
000312 005073 000006 CLR @6(R3) ; *(IOP) 0724
000316 005046 CLR -(SP) ; 0725
000320 016600 000002 MOV 2(SP),R0
000324 116016 000007 MOVB 7(R0),(SP)
000330 004767 000000V JSR PC,EXTRACT.LUNBLK
000334 004767 000000G JSR PC,$RSX ; 0726
000340 016602 000002 MOV 2(SP),R2
000344 016200 000022 MOV 22(R2),R0
000350 005001 CLR R1
000352 004767 000000G JSR PC,$IOFIN
000356 004767 000000G JSR PC,$MCB
000362 016600 000002 MOV 2(SP),R0 ; 0728
000366 012701 000026 MOV #26,R1
000372 004767 000000G JSR PC,$DSRRT
000376 016604 000004 MOV 4(SP),R4 ; 0729
000402 004767 000000G JSR PC,$CCBRT
000406 005726 TST (SP)+ ; 0715
000410 022626 8$: CMP (SP)+,(SP)+ ; 0628
000412 000207 RTS PC
; Routine Size: 134 words, Routine Base: $CODE$ + 0154
; Maximum stack depth per invocation: 7 words
000000 .PSECT $PLIT$, RO , D
P.AAA: ; CASE Table for DLXCCP+0050 0675
000000 000000 .WORD 0 ; [1$]
000002 000030 .WORD 30 ; [2$]
000004 000074 .WORD 74 ; [3$]
000006 000000 .WORD 0 ; [1$]
000010 000000 .WORD 0 ; [1$]
000012 000150 .WORD 150 ; [5$]
000014 000214 .WORD 214 ; [7$]
; 0737
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 21
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (4)
; 0738 global routine DLXCON (UCB, IOP) : NMX$LKG_UCB_IOP novalue =
; 0739
; 0740 !++
; 0741 ! FUNCTIONAL DESCRIPTION:
; 0742 !
; 0743 ! Process RSX I/O Packets associated with
; 0744 ! Direct Circuit/Line Access functions.
; 0745 !
; 0746 ! FORMAL PARAMETERS:
; 0747 !
; 0748 ! IOP - the RSX IOP
; 0749 !
; 0750 ! IMPLICIT INPUTS:
; 0751 !
; 0752 ! Misc NMXDB data base items
; 0753 !
; 0754 ! IMPLICIT OUTPUTS:
; 0755 !
; 0756 ! Misc NMXDB data base items
; 0757 !
; 0758 ! ROUTINE VALUE:
; 0759 !
; 0760 ! None
; 0761 !
; 0762 ! SIDE EFFECTS:
; 0763 !
; 0764 ! None
; 0765 !--
; 0766
; 0767 begin
; 0768
; 0769 map
; 0770 IOP : ref NMX_IOP_BLOCK;
; 0771
; 0772 local
; 0773 NMXDB : ref NMXDB_BLOCK;
; 0774
; 0775 $MCB_RSX_TO_MCB (.UCB, NMXDB);
; 0776
; 0777 !+
; 0778 ! OPEN MCB Entity:
; 0779 !
; 0780 ! Basic algorithm is:
; 0781 !
; 0782 ! DLXIOP: Validate 2nd LUN word is 0
; 0783 ! Verify acceptable Network Management service state
; 0784 ! Allocate the Logical Unit Table
; 0785 ! Assign the Entity
; 0786 ! Stop the current Owner
; 0787 ! DLXCCP: Identify Entity Link
; 0788 ! DLXCCP: Initialize Maintenance Mode
; 0789 ! DLXXCP: Complete the IOP
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 22
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (4)
; 0790 !-
; 0791 begin
; 0792
; 0793 local
; 0794 CCB : ref DLX_CCB_BLOCK,
; 0795 ERROR_CODE,
; 0796 LUNBLK : ref DLX_LUN_BLOCK,
; 0797 ENTBLK : ref block field (NMX_GENERAL_FIELDS, NMX_LINK_FIELDS, NMX_CIRCUIT_FIELDS, NMX_LINE_FIELDS);
; 0798
; 0799 if .(.IOP [I_LN2]) neq 0
; 0800 then
; 0801 begin
; 0802
; 0803 local
; 0804 UCB;
; 0805
; 0806 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 0807 IOFIN$ (.UCB, .IOP, IE$ALN, 0);
; 0808 return
; 0809 end;
; 0810
; 0811 if not $NMX_GET_NMX_CCB (.IOP, CCB)
; 0812 then
; 0813 return
; 0814 else
; 0815 !
; 0816 ! The IOP was successfully converted to a CCB format. This
; 0817 ! was done to allow ease of ENTITY lookup. The NMPAR block
; 0818 ! will be thrown away and the CCB reformatted for DLX usage.
; 0819 !
; 0820 begin
; 0821 begin
; 0822
; 0823 map
; 0824 CCB : ref NMX_CCB_BLOCK;
; 0825
; 0826 bind
; 0827 NMPAR = CCB [C_NM_NMPAR] : ref NMX_NMPAR_BLOCK;
; 0828
; 0829 ERROR_CODE = IE$BDV;
; 0830
; 0831 if ((ENTBLK = (selectone .IOP [I_NM_ENTITY] of
; 0832 set
; 0833 [NMX$ENT_ckt] : $NMX_MAP_ENTITY_ID (.IOP [I_NM_ENTITY], byt$ptr (NMPAR [NMX_NMPAR_ENTITY]));
; 0834 [NMX$ENT_lin] : $NMX_MAP_ENTITY_ID (.IOP [I_NM_ENTITY], byt$ptr (NMPAR [NMX_NMPAR_ENTITY]));
; 0835 [otherwise] : 0;
; 0836 tes)) neqa 0) and
; 0837 (.ENTBLK [GENERAL_NAME_LENGTH] neq 0)
; 0838 then
; 0839 ERROR_CODE = (selectone true of
; 0840 set
; 0841 [.ENTBLK [LINK_LUN_BLOCK] neq 0]: IE$DAA;
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 23
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (4)
; 0842 [.ENTBLK [GENERAL_OWNER_ID] eql 0]: IE$BDV;
; 0843 [.ENTBLK [GENERAL_PROVIDER_ID] eql 0]: IE$BDV;
; 0844 [.ENTBLK [LINK_STATE] eql LINK_OFF] : IE$DAA;
; 0845 [(.ENTBLK [GENERAL_SYSTEM_FLAGS] and NMX$FLG_maintenance_allowed) eql 0]: IE$PRI;
; 0846 [otherwise]: IS$SUC;
; 0847 tes);
; 0848
; 0849 $MCB_RETURN_DSR (NMX_NMPAR_ALLOCATION, .CCB [C_NM_NMPAR]); ! Return Allocated Storage
; 0850 end;
; 0851 !
; 0852 ! If the Entity is available and known try to assign it with a LUN_BLOCK
; 0853 !
; 0854
; 0855 if .ERROR_CODE eql IS$SUC
; 0856 then
; 0857 begin ! Successful, try to get LUNBLK
; 0858
; 0859 if (LUNBLK = ALLOCATE_LUNBLK (.ENTBLK)) eql 0
; 0860 then
; 0861 begin
; 0862
; 0863 local
; 0864 UCB;
; 0865
; 0866 $MCB_RETURN_CCB (.CCB); ! Return CCB
; 0867 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 0868 IOFIN$ (.UCB, .IOP, IE$NDR, 0);
; 0869 return;
; 0870 end;
; 0871
; 0872 %(change state ?)%
; 0873 ENTBLK [LINK_LUN_BLOCK] = .LUNBLK;
; 0874 (.IOP [I_LN2]) = .LUNBLK;
; 0875 CCB [C_DLX_EID] = .ENTBLK [GENERAL_OWNER_ID];
; 0876 CCB [C_FNC] = FC_CTL;
; 0877 CCB [C_MOD] = FM_STP;
; 0878 CCB [C_DLX_STATE] = DLX_STOP_OWNER;
; 0879 CCB [C_DLX_IOP] = .IOP;
; 0880 CCB [C_DLX_LUNBLK] = .LUNBLK;
; 0881 $MCB_SCHEDULE_CCB (.CCB);
; 0882 $MCB_MCB_TO_RSX (.NMXDB);
; 0883 end
; 0884 else
; 0885 begin ! Unsuccessful, just return resources and leave
; 0886
; 0887 local
; 0888 UCB;
; 0889
; 0890 $MCB_RETURN_CCB (.CCB); ! Return CCB
; 0891 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 0892 IOFIN$ (.UCB, .IOP, .ERROR_CODE, 0);
; 0893 end;
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 24
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (4)
; 0894
; 0895 end;
; 0896
; 0897 end;
; 0898
; 0899 end; !of DLXCON
.GLOBL NX.ITC, NM.ENT
.SBTTL DLXCON
000570 .PSECT $CODE$, RO
000000 004167 000000G DLXCON::JSR R1,$SAVE5 ; 0738
000004 162706 000010 SUB #10,SP
000010 010146 MOV R1,-(SP)
000012 004767 000000G JSR PC,$MCB ; 0775
000016 010566 000010 MOV R5,10(SP) ; $MCB$R5,NMXDB
000022 011600 MOV (SP),R0 ; 0799
000024 005770 000006 TST @6(R0)
000030 001406 BEQ 1$
000032 004767 000000G JSR PC,$RSX ; 0806
000036 011603 MOV (SP),R3 ; 0807
000040 012700 177736 MOV #-42,R0
000044 000563 BR 13$
000046 016605 000010 1$: MOV 10(SP),R5 ; NMXDB,* 0811
000052 011601 MOV (SP),R1
000054 004767 000000G JSR PC,NX.ITC
000060 010066 000004 MOV R0,4(SP) ; *,CCB
000064 001002 BNE 2$ ; 0813
000066 000167 000466 JMP 17$
000072 012700 000026 2$: MOV #26,R0 ; 0827
000076 066600 000004 ADD 4(SP),R0 ; CCB,*
000102 010066 000010 MOV R0,10(SP)
000106 012702 177711 MOV #-67,R2 ; *,ERROR.CODE 0829
000112 011600 MOV (SP),R0 ; 0831
000114 016003 000032 MOV 32(R0),R3
000120 072327 177770 ASH #-10,R3
000124 042703 177760 BIC #177760,R3
000130 020327 000004 CMP R3,#4
000134 001403 BEQ 3$ ; 0833
000136 020327 000002 CMP R3,#2 ; 0831
000142 001012 BNE 4$
000144 017601 000010 3$: MOV @10(SP),R1 ; 0834
000150 062701 000004 ADD #4,R1
000154 010300 MOV R3,R0
000156 004767 000000G JSR PC,NM.ENT
000162 010066 000006 MOV R0,6(SP) ; *,ENTBLK
000166 000403 BR 5$ ; 0831
000170 005066 000006 4$: CLR 6(SP) ; ENTBLK
000174 020707 CMP PC,PC
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 25
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (4)
000176 001452 5$: BEQ 12$
000200 105776 000006 TSTB @6(SP) ; ENTBLK 0837
000204 001447 BEQ 12$
000206 016600 000006 MOV 6(SP),R0 ; ENTBLK,* 0841
000212 005760 000032 TST 32(R0) ; *(ENTBLK)
000216 001017 BNE 8$ ; 0839
000220 005760 000026 TST 26(R0) ; *(ENTBLK) 0842
000224 001403 BEQ 6$ ; 0839
000226 005760 000024 TST 24(R0) ; *(ENTBLK) 0843
000232 001003 BNE 7$
000234 012702 177711 6$: MOV #-67,R2 ; *,ERROR.CODE 0839
000240 000431 BR 12$
000242 016600 000006 7$: MOV 6(SP),R0 ; ENTBLK,* 0844
000246 126027 000034 000001 CMPB 34(R0),#1 ; *(ENTBLK),*
000254 001003 BNE 9$
000256 012702 177770 8$: MOV #-10,R2 ; *,ERROR.CODE 0839
000262 000420 BR 12$
000264 005000 9$: CLR R0 ; 0845
000266 016601 000006 MOV 6(SP),R1 ; ENTBLK,*
000272 032761 000400 000020 BIT #400,20(R1) ; *,*(ENTBLK)
000300 001001 BNE 10$
000302 005200 INC R0
000304 020027 000001 10$: CMP R0,#1 ; 0839
000310 001003 BNE 11$
000312 012702 177760 MOV #-20,R2 ; *,ERROR.CODE
000316 000402 BR 12$
000320 012702 000001 11$: MOV #1,R2 ; *,ERROR.CODE
000324 017600 000010 12$: MOV @10(SP),R0 ; 0849
000330 012701 000026 MOV #26,R1
000334 004767 000000G JSR PC,$DSRRT
000340 020227 000001 CMP R2,#1 ; ERROR.CODE,* 0855
000344 001072 BNE 15$
000346 016646 000006 MOV 6(SP),-(SP) ; ENTBLK,* 0859
000352 004767 000000V JSR PC,ALLOCATE.LUNBLK
000356 010066 000004 MOV R0,4(SP) ; *,LUNBLK
000362 005726 TST (SP)+
000364 005766 000002 TST 2(SP) ; LUNBLK
000370 001012 BNE 14$
000372 016604 000004 MOV 4(SP),R4 ; CCB,* 0866
000376 004767 000000G JSR PC,$CCBRT
000402 004767 000000G JSR PC,$RSX ; 0867
000406 011603 MOV (SP),R3 ; 0868
000410 012700 177670 MOV #-110,R0
000414 000456 13$: BR 16$
000416 016600 000006 14$: MOV 6(SP),R0 ; ENTBLK,* 0873
000422 016660 000002 000032 MOV 2(SP),32(R0) ; LUNBLK,*(ENTBLK)
000430 011600 MOV (SP),R0 ; 0874
000432 016670 000002 000006 MOV 2(SP),@6(R0) ; LUNBLK,*
000440 016600 000004 MOV 4(SP),R0 ; CCB,* 0875
000444 016601 000006 MOV 6(SP),R1 ; ENTBLK,*
000450 016160 000026 000010 MOV 26(R1),10(R0) ; *(ENTBLK),*(CCB)
000456 112760 000010 000012 MOVB #10,12(R0) ; *,*(CCB) 0876
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 26
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (4)
000464 112760 000004 000013 MOVB #4,13(R0) ; *,*(CCB) 0877
000472 012760 000002 000024 MOV #2,24(R0) ; *,*(CCB) 0878
000500 011676 000010 MOV (SP),@10(SP) ; 0879
000504 016600 000004 MOV 4(SP),R0 ; CCB,* 0880
000510 016660 000002 000030 MOV 2(SP),30(R0) ; LUNBLK,*(CCB)
000516 010004 MOV R0,R4 ; CCB,* 0881
000520 004767 000000G JSR PC,$SCHED
000524 004767 000000G JSR PC,$RSX ; 0882
000530 000413 BR 17$ ; 0855
000532 016604 000004 15$: MOV 4(SP),R4 ; CCB,* 0890
000536 004767 000000G JSR PC,$CCBRT
000542 004767 000000G JSR PC,$RSX ; 0891
000546 011603 MOV (SP),R3 ; 0892
000550 010200 MOV R2,R0 ; ERROR.CODE,*
000552 005001 16$: CLR R1
000554 004767 000000G JSR PC,$IOFIN
000560 062706 000012 17$: ADD #12,SP ; 0738
000564 000207 RTS PC
; Routine Size: 187 words, Routine Base: $CODE$ + 0570
; Maximum stack depth per invocation: 13 words
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 27
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (5)
; 0900 global routine DLXCTL (NMXDB, CCB, FCM) : MCB_DB_CCB_MOD novalue = !Process CTLs
; 0901
; 0902 !++
; 0903 ! FUNCTIONAL DESCRIPTION:
; 0904 !
; 0905 ! This routine fields CTL/NM requests when DLX has a CIRCUIT/LINE
; 0906 ! assigned.
; 0907 !
; 0908 ! FORMAL PARAMETERS:
; 0909 !
; 0910 ! NMXDB - NMX process Data Base
; 0911 ! CCB - the CCB which Dispatched us
; 0912 ! FCM - the contents of C.MOD
; 0913 !
; 0914 ! IMPLICIT INPUTS:
; 0915 !
; 0916 ! None
; 0917 !
; 0918 ! IMPLICIT OUTPUTS:
; 0919 !
; 0920 ! None
; 0921 !
; 0922 ! ROUTINE VALUE:
; 0923 !
; 0924 ! None
; 0925 !
; 0926 ! SIDE EFFECTS:
; 0927 !
; 0928 ! None
; 0929 !--
; 0930
; 0931 begin
; 0932
; 0933 map
; 0934 NMXDB : ref NMXDB_BLOCK,
; 0935 CCB : ref NMX_CCB_BLOCK;
; 0936
; 0937 !
; 0938 ! Validate this is a Network Management Control Request. If not
; 0939 ! hold the show otherwise process it.
; 0940 !
; 0941
; 0942 if .FCM neq FM_NM then SIGNAL_STOP (NMX$_IFM, .CCB);
; 0943
; 0944 case .CCB [C_NM_FUNC] from NMX$FNC_lo to NMX$FNC_hi of
; 0945 set
; 0946
; 0947 [NMX$FNC_ret, NMX$FNC_sho] : ! Shows complete with nothing
; 0948 begin
; 0949 CCB [C_CNT] = 0;
; L 0950 CCB [C_STS] = $NM$_SUC;
; %PRINT: Function Completed Successfuly
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 28
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (5)
; 0951 end;
; 0952
; 0953 [NMX$FNC_set, NMX$FNC_clr, NMX$FNC_zro, NMX$FNC_szc] :
; 0954 ! Modifications can't be done now
; 0955 CCB [C_STS] = $NM$ERR_CWS;
; 0956
; 0957 [inrange, outrange] : ! Other items are bugs
; 0958 CCB [C_STS] = $NM$ERR_UFO;
; 0959 tes;
; 0960
; 0961 !
; 0962 ! Complete the CCB
; 0963 !
; 0964 CCB [C_FNC] = FC_CCP;
; 0965 $MCB_SCHEDULE_CCB (.CCB);
; 0966 end; !of DLXCTL
.SBTTL DLXCTL
000000 020327 000006 DLXCTL::CMP R3,#6 ; FCM,* 0942
000004 001411 BEQ 1$
000006 010446 MOV R4,-(SP) ; CCB,*
000010 012746 100024 MOV #-77754,-(SP)
000014 012746 000002 MOV #2,-(SP)
000020 004767 000000G JSR PC,$STOP
000024 062706 000006 ADD #6,SP
000030 012700 000014 1$: MOV #14,R0 ; 0958
000034 060400 ADD R4,R0 ; CCB,*
000036 116401 000024 MOVB 24(R4),R1 ; *(CCB),* 0944
000042 006201 ASR R1
000044 042701 177600 BIC #177600,R1
000050 005301 DEC R1
000052 020127 000005 CMP R1,#5
000056 101003 BHI 2$
000060 006301 ASL R1
000062 066107 000016' ADD P.AAB(R1),PC ; Case dispatch
000066 012710 177777 2$: MOV #-1,(R0) ; 0958
000072 000407 BR 5$ ; 0944
000074 005064 000022 3$: CLR 22(R4) ; *(CCB) 0949
000100 012710 000001 MOV #1,(R0) ; 0950
000104 000402 BR 5$ ; 0944
000106 012710 177765 4$: MOV #-13,(R0) ; 0955
000112 112764 000022 000012 5$: MOVB #22,12(R4) ; *,*(CCB) 0964
000120 004767 000000G JSR PC,$SCHED ; 0965
000124 000207 RTS PC ; 0900
; Routine Size: 43 words, Routine Base: $CODE$ + 1356
; Maximum stack depth per invocation: 4 words
000016 .PSECT $PLIT$, RO , D
P.AAB: ; CASE Table for DLXCTL+0062 0944
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 29
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (5)
000016 000020 .WORD 20 ; [4$]
000020 000020 .WORD 20 ; [4$]
000022 000020 .WORD 20 ; [4$]
000024 000006 .WORD 6 ; [3$]
000026 000020 .WORD 20 ; [4$]
000030 000006 .WORD 6 ; [3$]
; 0967
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 30
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (6)
; 0968 global routine DLXDSC (UCB, IOP) : NMX$LKG_UCB_IOP novalue =
; 0969
; 0970 !++
; 0971 ! FUNCTIONAL DESCRIPTION:
; 0972 !
; 0973 ! Process RSX I/O Packets associated with
; 0974 ! Direct Circuit/Line Access functions.
; 0975 !
; 0976 ! FORMAL PARAMETERS:
; 0977 !
; 0978 ! IOP - the RSX IOP
; 0979 !
; 0980 ! IMPLICIT INPUTS:
; 0981 !
; 0982 ! Misc NMXDB data base items
; 0983 !
; 0984 ! IMPLICIT OUTPUTS:
; 0985 !
; 0986 ! Misc NMXDB data base items
; 0987 !
; 0988 ! ROUTINE VALUE:
; 0989 !
; 0990 ! None
; 0991 !
; 0992 ! SIDE EFFECTS:
; 0993 !
; 0994 ! None
; 0995 !--
; 0996
; 0997 begin
; 0998
; 0999 map
; 1000 IOP : ref NMX_IOP_BLOCK;
; 1001
; 1002 local
; 1003 NMXDB : ref NMXDB_BLOCK;
; 1004
; 1005 $MCB_RSX_TO_MCB (.UCB, NMXDB);
; 1006
; 1007 !+
; 1008 ! CLOSE MCB Entity:
; 1009 !
; 1010 ! Basic Algorithm is:
; 1011 !
; 1012 ! DLXIOP: Validate 2nd LUN word <> 0
; 1013 ! Return all RCPs
; 1014 ! Fail outstanding RCVs
; 1015 ! Stop Protocol on Entity
; 1016 ! DLXXCP: Release Entity Link
; 1017 ! DLXCCP: Start the original Owner
; 1018 ! DLXCCP: Deassign the Entity
; 1019 ! Complete the IOP
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 31
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (6)
; 1020 !-
; 1021 begin
; 1022
; 1023 local
; 1024 LUNBLK : ref DLX_LUN_BLOCK;
; 1025
; 1026 if (LUNBLK = .(.IOP [I_LN2])) eql 0
; 1027 then
; 1028 begin
; 1029
; 1030 local
; 1031 UCB;
; 1032
; 1033 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 1034 IOFIN$ (.UCB, .IOP, IE$NLN, 0);
; 1035 end
; 1036 else
; 1037 begin
; 1038
; 1039 local
; 1040 NMXDB : ref NMXDB_BLOCK,
; 1041 RCPCCB : ref block field (C_FIELDS),
; 1042 RCVIOP : ref NMX_IOP_BLOCK,
; 1043 CCB : ref DLX_CCB_BLOCK;
; 1044
; 1045 bind
; 1046 ENTBLK = LUNBLK [LUN_ENTITY_ADDRESS] : ref NMX_GENERAL_BLOCK;
; 1047
; 1048 if not $MCB_GET_CCB (CCB)
; 1049 then
; 1050 begin
; 1051
; 1052 local
; 1053 UCB;
; 1054
; 1055 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 1056 IOFIN$ (.UCB, .IOP, IE$NDR, 0);
; 1057 return;
; 1058 end;
; 1059
; 1060 LUNBLK [LUN_ERROR_CODE] = IS$SUC;
; 1061 LUNBLK [LUN_STATE] = LUN_CLOSING;
; 1062
; 1063 while $MCB_DEQUEUE_CCB (LUNBLK [LUN_RCPS], RCPCCB) do
; 1064 begin
; 1065 RCPCCB [C_FNC] = FC_RCE;
; 1066 $MCB_SCHEDULE_CCB (.RCPCCB);
; 1067 end;
; 1068
; 1069 MAP$ (.LUNBLK [LUN_ENTITY_BIAS]);
; 1070 CCB [C_DLX_STATE] = DLX_STOP_PROTOCOL;
; 1071 CCB [C_DLX_IOP] = .IOP;
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 32
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (6)
; 1072 CCB [C_DLX_LUNBLK] = .LUNBLK;
; 1073 $DLL_STOP ((.CCB), .ENTBLK [GENERAL_PROVIDER_PIX]);
; 1074 begin
; 1075
; 1076 local
; 1077 UCB;
; 1078
; 1079 $MCB_MCB_TO_RSX (.NMXDB,UCB);
; 1080
; 1081 while $NMX_DEQUEUE (LUNBLK [LUN_RCVS], RCVIOP) do
; 1082 IOFIN$ (.UCB, .RCVIOP, IE$ABO, 0);
; 1083
; 1084 end;
; 1085 end;
; 1086
; 1087 end;
; 1088
; 1089 end; !of DLXDSC
.GLOBL $CCBGT, $CMQRM, $QRMVF
.SBTTL DLXDSC
001504 .PSECT $CODE$, RO
000000 004167 000000G DLXDSC::JSR R1,$SAVE5 ; 0968
000004 162706 000006 SUB #6,SP
000010 010166 000002 MOV R1,2(SP)
000014 004767 000000G JSR PC,$MCB ; 1005
000020 016600 000002 MOV 2(SP),R0 ; 1026
000024 017016 000006 MOV @6(R0),(SP) ; *,LUNBLK
000030 001007 BNE 1$
000032 004767 000000G JSR PC,$RSX ; 1033
000036 016603 000002 MOV 2(SP),R3 ; 1034
000042 012700 177733 MOV #-45,R0
000046 000414 BR 3$
000050 004767 000000G 1$: JSR PC,$CCBGT ; 1048
000054 103403 BCS 2$
000056 010466 000004 MOV R4,4(SP) ; $MCB$R4,CCB
000062 000412 BR 4$
000064 004767 000000G 2$: JSR PC,$RSX ; 1055
000070 016603 000002 MOV 2(SP),R3 ; 1056
000074 012700 177670 MOV #-110,R0
000100 005001 3$: CLR R1
000102 004767 000000G JSR PC,$IOFIN
000106 000513 BR 8$ ; 1050
000110 011600 4$: MOV (SP),R0 ; LUNBLK,* 1060
000112 012760 000001 000022 MOV #1,22(R0) ; *,*(LUNBLK)
000120 112760 000002 000006 MOVB #2,6(R0) ; *,*(LUNBLK) 1061
000126 010003 MOV R0,R3 ; LUNBLK,* 1063
000130 062703 000014 ADD #14,R3
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 33
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (6)
000134 004767 000000G 5$: JSR PC,$CMQRM
000140 103407 BCS 6$
000142 010400 MOV R4,R0 ; $MCB$R4,RCPCCB
000144 112760 000004 000012 MOVB #4,12(R0) ; *,*(RCPCCB) 1065
000152 004767 000000G JSR PC,$SCHED ; 1066
000156 000766 BR 5$ ; 1063
000160 011600 6$: MOV (SP),R0 ; LUNBLK,* 1069
000162 016067 000004 000000G MOV 4(R0),KISAR6 ; *(LUNBLK),*
000170 016600 000004 MOV 4(SP),R0 ; CCB,* 1070
000174 012760 000005 000024 MOV #5,24(R0) ; *,*(CCB)
000202 016660 000002 000026 MOV 2(SP),26(R0) ; *,*(CCB) 1071
000210 011660 000030 MOV (SP),30(R0) ; LUNBLK,*(CCB) 1072
000214 011601 MOV (SP),R1 ; LUNBLK,* 1073
000216 016100 000002 MOV 2(R1),R0 ; *(LUNBLK),*
000222 016601 000004 MOV 4(SP),R1 ; CCB,*
000226 116061 000025 000011 MOVB 25(R0),11(R1) ; *,*(CCB)
000234 010100 MOV R1,R0 ; CCB,*
000236 112760 000002 000012 MOVB #2,12(R0) ; *,*(CCB)
000244 112760 000004 000013 MOVB #4,13(R0) ; *,*(CCB)
000252 010104 MOV R1,R4 ; CCB,*
000254 004767 000000G JSR PC,$SCHED
000260 004767 000000G JSR PC,$RSX ; 1079
000264 011666 000002 MOV (SP),2(SP) ; LUNBLK,* 1081
000270 062766 000010 000002 ADD #10,2(SP)
000276 016600 000002 7$: MOV 2(SP),R0
000302 004767 000000G JSR PC,$QRMVF
000306 006104 ROL R4
000310 010166 000004 MOV R1,4(SP)
000314 006004 ROR R4
000316 103407 BCS 8$
000320 010103 MOV R1,R3 ; RCVIOP,* 1082
000322 012700 177761 MOV #-17,R0
000326 005001 CLR R1
000330 004767 000000G JSR PC,$IOFIN
000334 000760 BR 7$ ; 1081
000336 062706 000006 8$: ADD #6,SP ; 0968
000342 000207 RTS PC
; Routine Size: 114 words, Routine Base: $CODE$ + 1504
; Maximum stack depth per invocation: 10 words
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 34
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (7)
; 1090 global routine DLXRCP (NMXDB, CCB, FCM) : MCB_DB_CCB_MOD novalue = ! Process Receives
; 1091
; 1092 !++
; 1093 ! FUNCTIONAL DESCRIPTION:
; 1094 !
; 1095 ! Data from an OPENED MCB line is dispatched to here. It is passed
; 1096 ! on to the user if previous RECEIVEs exist otherwise we queue the
; 1097 ! data CCB.
; 1098 !
; 1099 ! FORMAL PARAMETERS:
; 1100 !
; 1101 ! NMXDB - NMX Process Data Base
; 1102 ! CCB - the CCB which dispatched us
; 1103 ! FCM - the FCM from the CCB
; 1104 !
; 1105 ! IMPLICIT INPUTS:
; 1106 !
; 1107 ! Misc NMXDB items
; 1108 !
; 1109 ! IMPLICIT OUTPUTS:
; 1110 !
; 1111 ! Misc NMXDB items
; 1112 !
; 1113 ! ROUTINE VALUE:
; 1114 !
; 1115 ! None
; 1116 !
; 1117 ! SIDE EFFECTS:
; 1118 !
; 1119 ! None
; 1120 !--
; 1121
; 1122 begin
; 1123
; 1124 map
; 1125 NMXDB : ref NMXDB_BLOCK,
; 1126 CCB : ref block field (C_FIELDS);
; 1127
; 1128 local
; 1129 LUNBLK : ref DLX_LUN_BLOCK;
; 1130
; 1131 !
; 1132 ! Intercept service slave requests
; 1133 !
; 1134
; 1135 ! if SERVICE_SLAVE_REQUEST (.CCB) then return;
; 1136
; 1137 !
; 1138 ! If there is a LUN_BLOCK then give to user
; 1139 !
; 1140
; 1141 if (LUNBLK = FIND_LUNBLK (.CCB [C_LIN])) neq 0
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 35
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (7)
; 1142 then
; 1143
; 1144 if .LUNBLK [LUN_STATE] eql LUN_OPENED
; 1145 then
; 1146 begin
; 1147 $MCB_QUEUE_CCB (LUNBLK [LUN_RCPS], .CCB);
; 1148 TRY_SOME_RCVS (.LUNBLK);
; 1149 return;
; 1150 end;
; 1151
; 1152 !
; 1153 ! No takers - throw the message away
; 1154 !
; 1155
; 1156 CCB [C_FNC] = FC_RCE;
; 1157 $MCB_SCHEDULE_CCB (.CCB);
; 1158 end; !of NMXRCP
.GLOBL $CMQIN
.SBTTL DLXRCP
000000 005046 DLXRCP::CLR -(SP) ; 1141
000002 116416 000010 MOVB 10(R4),(SP) ; *(CCB),*
000006 004767 000000V JSR PC,FIND.LUNBLK
000012 005726 TST (SP)+
000014 005700 TST R0 ; LUNBLK
000016 001417 BEQ 1$
000020 126027 000006 000003 CMPB 6(R0),#3 ; *(LUNBLK),* 1144
000026 001013 BNE 1$
000030 010001 MOV R0,R1 ; LUNBLK,* 1147
000032 062701 000014 ADD #14,R1
000036 010103 MOV R1,R3
000040 004767 000000G JSR PC,$CMQIN
000044 010046 MOV R0,-(SP) ; LUNBLK,* 1148
000046 004767 000000V JSR PC,TRY.SOME.RCVS
000052 005726 TST (SP)+ ; 1144
000054 000207 RTS PC ; 1146
000056 112764 000004 000012 1$: MOVB #4,12(R4) ; *,*(CCB) 1156
000064 004767 000000G JSR PC,$SCHED ; 1157
000070 000207 RTS PC ; 1090
; Routine Size: 29 words, Routine Base: $CODE$ + 2050
; Maximum stack depth per invocation: 2 words
; 1159
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 36
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (8)
; 1160 global routine DLXRCV (UCB, IOP) : NMX$LKG_UCB_IOP novalue =
; 1161
; 1162 !++
; 1163 ! FUNCTIONAL DESCRIPTION:
; 1164 !
; 1165 ! Process RSX I/O Packets associated with
; 1166 ! Direct Circuit/Line Access functions.
; 1167 !
; 1168 ! FORMAL PARAMETERS:
; 1169 !
; 1170 ! IOP - the RSX IOP
; 1171 !
; 1172 ! IMPLICIT INPUTS:
; 1173 !
; 1174 ! Misc NMXDB data base items
; 1175 !
; 1176 ! IMPLICIT OUTPUTS:
; 1177 !
; 1178 ! Misc NMXDB data base items
; 1179 !
; 1180 ! ROUTINE VALUE:
; 1181 !
; 1182 ! None
; 1183 !
; 1184 ! SIDE EFFECTS:
; 1185 !
; 1186 ! None
; 1187 !--
; 1188
; 1189 begin
; 1190
; 1191 map
; 1192 IOP : ref NMX_IOP_BLOCK;
; 1193
; 1194 local
; 1195 NMXDB : ref NMXDB_BLOCK;
; 1196
; 1197 $MCB_RSX_TO_MCB (.UCB, NMXDB);
; 1198
; 1199 !+
; 1200 ! RECEIVE a Data Buffer:
; 1201 !
; 1202 ! Basic Algorithm is:
; 1203 !
; 1204 ! DLXIOP: Validate 2nd LUN word <> 0
; 1205 ! Validate LUT State is Running
; 1206 ! Queue RCV IOP
; 1207 ! Try to Complete RCV IOPs
; 1208 !-
; 1209 begin
; 1210
; 1211 local
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 37
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (8)
; 1212 LUNBLK : ref DLX_LUN_BLOCK;
; 1213
; 1214 if (LUNBLK = .(.IOP [I_LN2])) eql 0
; 1215 then
; 1216 begin
; 1217
; 1218 local
; 1219 UCB;
; 1220
; 1221 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 1222 IOFIN$ (.UCB, .IOP, IE$NLN, 0);
; 1223 return;
; 1224 end
; 1225 else
; 1226 begin
; 1227
; 1228 local
; 1229 NMXDB : ref NMXDB_BLOCK;
; 1230
; 1231 if .LUNBLK [LUN_STATE] neq LUN_OPENED
; 1232 then
; 1233 begin
; 1234
; 1235 local
; 1236 UCB;
; 1237
; 1238 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 1239 IOFIN$ (.UCB, .IOP, IE$NLN, 0);
; 1240 return;
; 1241 end;
; 1242
; 1243 if .IOP [I_NMX_CNT] eql 0
; 1244 then
; 1245 begin
; 1246
; 1247 local
; 1248 UCB;
; 1249
; 1250 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 1251 IOFIN$ (.UCB, .IOP, IE$SPC, 0);
; 1252 return;
; 1253 end;
; 1254
; 1255 if .IOP [I_NMX_ENTITY] eql 0
; 1256 then
; 1257 begin
; 1258
; 1259 local
; 1260 CKTBLK : ref NMX_CIRCUIT_BLOCK,
; 1261 SAVE_MAP;
; 1262
; 1263 SMAP$ (SAVE_MAP);
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 38
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (8)
; 1264 MAP$ (.LUNBLK [LUN_ENTITY_BIAS]);
; 1265 CKTBLK = .LUNBLK [LUN_ENTITY_ADDRESS];
; 1266 IOP [I_NMX_ENTITY] = .CKTBLK [CIRCUIT_SERVICE_TIMER];
; 1267 MAP$ (.SAVE_MAP);
; 1268 end;
; 1269
; 1270 $NMX_ENQUEUE (LUNBLK [LUN_RCVS], .IOP);
; 1271 TRY_SOME_RCVS (.LUNBLK);
; 1272 $MCB_MCB_TO_RSX (.NMXDB);
; 1273 end;
; 1274
; 1275 end;
; 1276
; 1277 end; !of DLXRCV
.SBTTL DLXRCV
000000 004167 000000G DLXRCV::JSR R1,$SAVE5 ; 1160
000004 024646 CMP -(SP),-(SP)
000006 010166 000002 MOV R1,2(SP)
000012 004767 000000G JSR PC,$MCB ; 1197
000016 016600 000002 MOV 2(SP),R0 ; 1214
000022 017016 000006 MOV @6(R0),(SP) ; *,LUNBLK
000026 001405 BEQ 1$ ; 1221
000030 011600 MOV (SP),R0 ; LUNBLK,* 1231
000032 126027 000006 000003 CMPB 6(R0),#3 ; *(LUNBLK),*
000040 001407 BEQ 2$
000042 004767 000000G 1$: JSR PC,$RSX ; 1238
000046 016603 000002 MOV 2(SP),R3 ; 1239
000052 012700 177733 MOV #-45,R0
000056 000413 BR 3$
000060 016600 000002 2$: MOV 2(SP),R0 ; 1243
000064 005760 000030 TST 30(R0)
000070 001012 BNE 4$
000072 004767 000000G JSR PC,$RSX ; 1250
000076 016603 000002 MOV 2(SP),R3 ; 1251
000102 012700 177772 MOV #-6,R0
000106 005001 3$: CLR R1
000110 004767 000000G JSR PC,$IOFIN
000114 000443 BR 6$ ; 1245
000116 012700 000034 4$: MOV #34,R0 ; 1255
000122 066600 000002 ADD 2(SP),R0
000126 010002 MOV R0,R2
000130 005712 TST (R2)
000132 001015 BNE 5$
000134 016701 000000G MOV KISAR6,R1 ; *,SAVE.MAP 1263
000140 011600 MOV (SP),R0 ; LUNBLK,* 1264
000142 016067 000004 000000G MOV 4(R0),KISAR6 ; *(LUNBLK),*
000150 010003 MOV R0,R3 ; LUNBLK,* 1265
000152 016300 000002 MOV 2(R3),R0 ; *(LUNBLK),CKTBLK
000156 016012 000040 MOV 40(R0),(R2) ; *(CKTBLK),* 1266
000162 010167 000000G MOV R1,KISAR6 ; SAVE.MAP,* 1267
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 39
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (8)
000166 005076 000002 5$: CLR @2(SP) ; 1270
000172 011600 MOV (SP),R0 ; LUNBLK,*
000174 016670 000002 000012 MOV 2(SP),@12(R0) ; *,*(LUNBLK)
000202 016660 000002 000012 MOV 2(SP),12(R0) ; *,*(LUNBLK)
000210 010046 MOV R0,-(SP) ; LUNBLK,* 1271
000212 004767 000000V JSR PC,TRY.SOME.RCVS
000216 004767 000000G JSR PC,$RSX ; 1272
000222 005726 TST (SP)+ ; 1226
000224 022626 6$: CMP (SP)+,(SP)+ ; 1160
000226 000207 RTS PC
; Routine Size: 76 words, Routine Base: $CODE$ + 2142
; Maximum stack depth per invocation: 10 words
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 40
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (9)
; 1278 global routine DLXXCP (NMXDB, CCB, FCM) : MCB_DB_CCB_MOD novalue = ! Process Transmit Completes
; 1279
; 1280 !++
; 1281 ! FUNCTIONAL DESCRIPTION:
; 1282 !
; 1283 ! Transmit Completion involves returning the CCB and IOP.
; 1284 !
; 1285 ! FORMAL PARAMETERS:
; 1286 !
; 1287 ! NMXDB - the NMX Process Data Base
; 1288 ! CCB - the CCB which dispatched us
; 1289 ! FCM - the functions modifier (ignored)
; 1290 !
; 1291 ! IMPLICIT INPUTS:
; 1292 !
; 1293 ! Misc CCB and NMXDB fields
; 1294 !
; 1295 ! IMPLICIT OUTPUTS:
; 1296 !
; 1297 ! The IOP is returned to the user.
; 1298 !
; 1299 ! ROUTINE VALUE:
; 1300 !
; 1301 ! None
; 1302 !
; 1303 ! SIDE EFFECTS:
; 1304 !
; 1305 ! None
; 1306 !--
; 1307
; 1308 begin
; 1309
; 1310 map
; 1311 NMXDB : ref NMXDB_BLOCK,
; 1312 CCB : ref DLX_CCB_BLOCK;
; 1313
; 1314 bind
; 1315 LUNBLK = CCB [C_DLX_LUNBLK] : ref DLX_LUN_BLOCK,
; 1316 ENTITY_BLOCK = LUNBLK [LUN_ENTITY_ADDRESS] : ref block field (NMX_CIRCUIT_FIELDS, NMX_LINE_FIELDS,
; 1317 NMX_LINK_FIELDS, NMX_GENERAL_FIELDS);
; 1318
; 1319 !
; 1320 ! Dispatch based upon State
; 1321 !
; 1322 MAP$ (.LUNBLK [LUN_ENTITY_BIAS]);
; 1323
; 1324 case .CCB [C_DLX_STATE] from DLX_STATE_LOW to DLX_STATE_HIGH of
; 1325 set
; 1326
; 1327 [DLX_TRANSMIT] :
; 1328 begin
; 1329 LUNBLK [LUN_XMTS] = .LUNBLK [LUN_XMTS] - 1;
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 41
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (9)
; 1330 $NMX_RETURN_RSX_IOP (.CCB [C_DLX_IOP], (if .CCB [C_STS] then IS$SUC else IE$SRE), 0);
; 1331 $MCB_RETURN_CCB (.CCB); ! Return the CCB
; 1332 end;
; 1333
; 1334 [DLX_ENTER_MAINT] :
; 1335
; 1336 if .CCB [C_STS]
; 1337 then
; 1338 begin
; 1339 LUNBLK [LUN_STATE] = LUN_OPENED;
; 1340 LUNBLK [LUN_ERROR_CODE] = 0;
; 1341 ENTITY_BLOCK [LINK_USER_ID] = .NMXDB [NMX_NMX_PIX]^8 or .LUNBLK [LUN_ID];
; 1342 $NMX_RETURN_RSX_IOP (.CCB [C_DLX_IOP], IS$SUC, 0);
; 1343 $MCB_RETURN_CCB (.CCB); ! Return the CCB
; 1344 end
; 1345 else
; 1346 begin
; 1347 LUNBLK [LUN_ERROR_CODE] = IE$ISQ;
; 1348 CCB [C_DLX_STATE] = DLX_RELEASE_ENTITY;
; 1349 $DLL_RELEASE_CIRCUIT ((.CCB), .ENTITY_BLOCK [GENERAL_PROVIDER_PIX]);
; 1350 end;
; 1351
; 1352 [DLX_STOP_PROTOCOL] :
; 1353 begin
; 1354 CCB [C_DLX_STATE] = DLX_RELEASE_ENTITY;
; 1355 $DLL_RELEASE_CIRCUIT ((.CCB), .ENTITY_BLOCK [GENERAL_PROVIDER_PIX]);
; 1356 end;
; 1357
; 1358 [inrange, outrange] :
; 1359 SIGNAL_STOP (NMX$_ICP, .CCB, .CCB [C_DLX_STATE]);
; 1360 tes;
; 1361
; 1362 end; !of DLXXCP
.SBTTL DLXXCP
000000 010446 DLXXCP::MOV R4,-(SP) ; 1278
000002 010502 MOV R5,R2 ; *,NMXDB
000004 010400 MOV R4,R0 ; 1316
000006 016046 000030 MOV 30(R0),-(SP)
000012 012700 000002 MOV #2,R0 ; 1308
000016 061600 ADD (SP),R0
000020 010003 MOV R0,R3
000022 011600 MOV (SP),R0 ; 1322
000024 016067 000004 000000G MOV 4(R0),KISAR6
000032 012700 000024 MOV #24,R0 ; 1324
000036 060400 ADD R4,R0
000040 010001 MOV R0,R1
000042 011100 MOV (R1),R0
000044 005300 DEC R0
000046 020027 000006 CMP R0,#6
000052 101003 BHI 1$
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 42
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (9)
000054 006300 ASL R0
000056 066007 000032' ADD P.AAC(R0),PC ; Case dispatch
000062 011146 1$: MOV (R1),-(SP) ; 1359
000064 016646 000004 MOV 4(SP),-(SP)
000070 012746 100034 MOV #-77744,-(SP)
000074 012746 000003 MOV #3,-(SP)
000100 004767 000000G JSR PC,$STOP
000104 062706 000010 ADD #10,SP
000110 000530 BR 9$ ; 1324
000112 011600 2$: MOV (SP),R0 ; 1329
000114 005360 000020 DEC 20(R0)
000120 004767 000000G JSR PC,$RSX ; 1330
000124 016600 000002 MOV 2(SP),R0
000130 032760 000001 000014 BIT #1,14(R0)
000136 001403 BEQ 3$
000140 012700 000001 MOV #1,R0
000144 000402 BR 4$
000146 012700 177762 3$: MOV #-16,R0
000152 005001 4$: CLR R1
000154 016604 000002 MOV 2(SP),R4
000160 016403 000026 MOV 26(R4),R3
000164 000443 BR 6$
000166 016600 000002 5$: MOV 2(SP),R0 ; 1336
000172 032760 000001 000014 BIT #1,14(R0)
000200 001446 BEQ 7$
000202 011600 MOV (SP),R0 ; 1339
000204 112760 000003 000006 MOVB #3,6(R0)
000212 005060 000022 CLR 22(R0) ; 1340
000216 011300 MOV (R3),R0 ; 1341
000220 005005 CLR R5
000222 156205 000003 BISB 3(R2),R5 ; *(NMXDB),*
000226 072527 000010 ASH #10,R5
000232 011601 MOV (SP),R1
000234 116160 000007 000030 MOVB 7(R1),30(R0)
000242 105060 000031 CLRB 31(R0)
000246 050560 000030 BIS R5,30(R0)
000252 004767 000000G JSR PC,$RSX ; 1342
000256 012700 000001 MOV #1,R0
000262 005001 CLR R1
000264 016602 000002 MOV 2(SP),R2
000270 016203 000026 MOV 26(R2),R3
000274 004767 000000G 6$: JSR PC,$IOFIN
000300 004767 000000G JSR PC,$MCB
000304 016604 000002 MOV 2(SP),R4 ; 1343
000310 004767 000000G JSR PC,$CCBRT
000314 000426 BR 9$ ; 1336
000316 011600 7$: MOV (SP),R0 ; 1347
000320 012760 177703 000022 MOV #-75,22(R0)
000326 012711 000006 8$: MOV #6,(R1) ; 1354
000332 011300 MOV (R3),R0 ; 1355
000334 016601 000002 MOV 2(SP),R1
000340 116061 000025 000011 MOVB 25(R0),11(R1)
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 43
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (9)
000346 010100 MOV R1,R0
000350 112760 000010 000012 MOVB #10,12(R0)
000356 112760 000004 000013 MOVB #4,13(R0)
000364 010104 MOV R1,R4
000366 004767 000000G JSR PC,$SCHED
000372 022626 9$: CMP (SP)+,(SP)+ ; 1278
000374 000207 RTS PC
; Routine Size: 127 words, Routine Base: $CODE$ + 2372
; Maximum stack depth per invocation: 7 words
000032 .PSECT $PLIT$, RO , D
P.AAC: ; CASE Table for DLXXCP+0056 1324
000032 000030 .WORD 30 ; [2$]
000034 000000 .WORD 0 ; [1$]
000036 000000 .WORD 0 ; [1$]
000040 000104 .WORD 104 ; [5$]
000042 000244 .WORD 244 ; [8$]
000044 000000 .WORD 0 ; [1$]
000046 000000 .WORD 0 ; [1$]
; 1363
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 44
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (10)
; 1364 global routine DLXXMT (UCB, IOP) : NMX$LKG_UCB_IOP novalue =
; 1365
; 1366 !++
; 1367 ! FUNCTIONAL DESCRIPTION:
; 1368 !
; 1369 ! Process RSX I/O Packets associated with
; 1370 ! Direct Circuit/Line Access functions.
; 1371 !
; 1372 ! FORMAL PARAMETERS:
; 1373 !
; 1374 ! IOP - the RSX IOP
; 1375 !
; 1376 ! IMPLICIT INPUTS:
; 1377 !
; 1378 ! Misc NMXDB data base items
; 1379 !
; 1380 ! IMPLICIT OUTPUTS:
; 1381 !
; 1382 ! Misc NMXDB data base items
; 1383 !
; 1384 ! ROUTINE VALUE:
; 1385 !
; 1386 ! None
; 1387 !
; 1388 ! SIDE EFFECTS:
; 1389 !
; 1390 ! None
; 1391 !--
; 1392
; 1393 begin
; 1394
; 1395 map
; 1396 IOP : ref NMX_IOP_BLOCK;
; 1397
; 1398 local
; 1399 NMXDB : ref NMXDB_BLOCK;
; 1400
; 1401 $MCB_RSX_TO_MCB (.UCB, NMXDB);
; 1402
; 1403 !+
; 1404 ! TRANSMIT a Buffer:
; 1405 !
; 1406 ! Basic Algorithm is:
; 1407 !
; 1408 ! DLXIOP: Validate 2nd LUN word <> 0
; 1409 ! Validate LUT State is Running
; 1410 ! Count Transmits to DLL
; 1411 ! Transmit Buffer
; 1412 ! DLXXCP: Decrement Transmits to DLL
; 1413 ! Complete IOP
; 1414 !-
; 1415 begin
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 45
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (10)
; 1416
; 1417 local
; 1418 LUNBLK : ref DLX_LUN_BLOCK;
; 1419
; 1420 if (LUNBLK = .(.IOP [I_LN2])) eql 0
; 1421 then
; 1422 begin
; 1423
; 1424 local
; 1425 UCB;
; 1426
; 1427 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 1428 IOFIN$ (.UCB, .IOP, IE$NLN, 0);
; 1429 end
; 1430 else
; 1431 begin
; 1432
; 1433 if .LUNBLK [LUN_STATE] neq LUN_OPENED
; 1434 then
; 1435 begin
; 1436
; 1437 local
; 1438 UCB;
; 1439
; 1440 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 1441 IOFIN$ (.UCB, .IOP, IE$NLN, 0);
; 1442 return;
; 1443 end;
; 1444
; 1445 if .IOP [I_NMX_CNT] eql 0
; 1446 then
; 1447 begin
; 1448
; 1449 local
; 1450 UCB;
; 1451
; 1452 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 1453 IOFIN$ (.UCB, .IOP, IE$SPC, 0);
; 1454 return;
; 1455 end;
; 1456
; 1457 MAP$ (.LUNBLK [LUN_ENTITY_BIAS]);
; 1458 begin
; 1459
; 1460 local
; 1461 NMXDB : ref NMXDB_BLOCK,
; 1462 CCB : ref DLX_CCB_BLOCK;
; 1463
; 1464 bind
; 1465 ENTBLK = LUNBLK [LUN_ENTITY_ADDRESS] : ref NMX_GENERAL_BLOCK;
; 1466
; 1467 if not $MCB_GET_CCB (CCB)
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 46
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (10)
; 1468 then
; 1469 begin
; 1470
; 1471 local
; 1472 UCB;
; 1473
; 1474 $MCB_MCB_TO_RSX (.NMXDB, UCB);
; 1475 IOFIN$ (.UCB, .IOP, IE$NDR, 0);
; 1476 return
; 1477 end;
; 1478
; 1479 LUNBLK [LUN_XMTS] = .LUNBLK [LUN_XMTS] + 1;
; 1480 CCB [C_BIAS] = .IOP [I_NMX_BIAS];
; 1481 CCB [C_ADDR] = .IOP [I_NMX_ADDR];
; 1482 CCB [C_CNT] = .IOP [I_NMX_CNT];
; 1483 CCB [C_DLX_STATE] = DLX_TRANSMIT;
; 1484 CCB [C_DLX_IOP] = .IOP;
; 1485 CCB [C_DLX_LUNBLK] = .LUNBLK;
; 1486 $DLL_TRANSMIT ((.CCB), .ENTBLK [GENERAL_PROVIDER_PIX]);
; 1487 end;
; 1488 $MCB_MCB_TO_RSX (.NMXDB);
; 1489 end;
; 1490
; 1491 end;
; 1492
; 1493 end; !of DLXXMT
.SBTTL DLXXMT
002770 .PSECT $CODE$, RO
000000 004167 000000G DLXXMT::JSR R1,$SAVE5 ; 1364
000004 162706 000010 SUB #10,SP
000010 010166 000002 MOV R1,2(SP)
000014 004767 000000G JSR PC,$MCB ; 1401
000020 016600 000002 MOV 2(SP),R0 ; 1420
000024 017016 000006 MOV @6(R0),(SP) ; *,LUNBLK
000030 001405 BEQ 1$ ; 1427
000032 011600 MOV (SP),R0 ; LUNBLK,* 1433
000034 126027 000006 000003 CMPB 6(R0),#3 ; *(LUNBLK),*
000042 001407 BEQ 2$
000044 004767 000000G 1$: JSR PC,$RSX ; 1440
000050 016603 000002 MOV 2(SP),R3 ; 1441
000054 012700 177733 MOV #-45,R0
000060 000437 BR 5$
000062 012700 000030 2$: MOV #30,R0 ; 1445
000066 066600 000002 ADD 2(SP),R0
000072 010066 000006 MOV R0,6(SP)
000076 005710 TST (R0)
000100 001007 BNE 3$
000102 004767 000000G JSR PC,$RSX ; 1452
000106 016603 000002 MOV 2(SP),R3 ; 1453
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 47
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (10)
000112 012700 177772 MOV #-6,R0
000116 000420 BR 5$
000120 011600 3$: MOV (SP),R0 ; LUNBLK,* 1457
000122 016067 000004 000000G MOV 4(R0),KISAR6 ; *(LUNBLK),*
000130 004767 000000G JSR PC,$CCBGT ; 1467
000134 103403 BCS 4$
000136 010466 000004 MOV R4,4(SP) ; $MCB$R4,CCB
000142 000412 BR 6$
000144 004767 000000G 4$: JSR PC,$RSX ; 1474
000150 016603 000002 MOV 2(SP),R3 ; 1475
000154 012700 177670 MOV #-110,R0
000160 005001 5$: CLR R1
000162 004767 000000G JSR PC,$IOFIN
000166 000452 BR 7$ ; 1469
000170 011600 6$: MOV (SP),R0 ; LUNBLK,* 1479
000172 005260 000020 INC 20(R0) ; *(LUNBLK)
000176 016600 000004 MOV 4(SP),R0 ; CCB,* 1480
000202 016601 000002 MOV 2(SP),R1
000206 016160 000024 000016 MOV 24(R1),16(R0) ; *,*(CCB)
000214 016160 000026 000020 MOV 26(R1),20(R0) ; *,*(CCB) 1481
000222 017660 000006 000022 MOV @6(SP),22(R0) ; *,*(CCB) 1482
000230 012760 000001 000024 MOV #1,24(R0) ; *,*(CCB) 1483
000236 010160 000026 MOV R1,26(R0) ; *,*(CCB) 1484
000242 011660 000030 MOV (SP),30(R0) ; LUNBLK,*(CCB) 1485
000246 011601 MOV (SP),R1 ; LUNBLK,* 1486
000250 016100 000002 MOV 2(R1),R0 ; *(LUNBLK),*
000254 016601 000004 MOV 4(SP),R1 ; CCB,*
000260 116061 000025 000011 MOVB 25(R0),11(R1) ; *,*(CCB)
000266 010100 MOV R1,R0 ; CCB,*
000270 112760 000002 000012 MOVB #2,12(R0) ; *,*(CCB)
000276 105060 000013 CLRB 13(R0) ; *(CCB)
000302 010104 MOV R1,R4 ; CCB,*
000304 004767 000000G JSR PC,$SCHED
000310 004767 000000G JSR PC,$RSX ; 1488
000314 062706 000010 7$: ADD #10,SP ; 1364
000320 000207 RTS PC
; Routine Size: 105 words, Routine Base: $CODE$ + 2770
; Maximum stack depth per invocation: 11 words
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 48
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (11)
; 1494 routine FIND_LUNBLK (LUNID) = ! Find a LUNBLK with LUNID
; 1495
; 1496 !++
; 1497 ! FUNCTIONAL DESCRIPTION:
; 1498 !
; 1499 !
; 1500 !
; 1501 ! FORMAL PARAMETERS:
; 1502 !
; 1503 ! None
; 1504 !
; 1505 ! IMPLICIT INPUTS:
; 1506 !
; 1507 ! None
; 1508 !
; 1509 ! IMPLICIT OUTPUTS:
; 1510 !
; 1511 ! None
; 1512 !
; 1513 ! ROUTINE VALUE:
; 1514 !
; 1515 ! None
; 1516 !
; 1517 ! SIDE EFFECTS:
; 1518 !
; 1519 ! Must be called in MCB mode
; 1520 !--
; 1521
; 1522 begin
; 1523
; 1524 external
; 1525 MCB$GAW_PROCESS_DATA_BASE : vector [2];
; 1526
; 1527 bind
; 1528 NMXDB = MCB$GAW_PROCESS_DATA_BASE [1] : ref NMXDB_BLOCK;
; 1529
; 1530 local
; 1531 LUNBLK : ref DLX_LUN_BLOCK;
; 1532
; 1533 !
; 1534 ! Search LUN Queue for block with matching LUN_ID
; 1535 !
; 1536 LUNBLK = NMXDB [NMX_LUN_QUEUE];
; 1537
; 1538 while (LUNBLK = .LUNBLK [LUN_LINK]) nequ 0 do
; 1539
; 1540 if .LUNBLK [LUN_ID] eqlu .LUNID<0, 8> then exitloop;
; 1541
; 1542 .LUNBLK
; 1543 end; !of FIND_LUNBLK
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 49
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (11)
.SBTTL FIND.LUNBLK
000000 016700 000002G FIND.LUNBLK:
MOV .CRDAT+2,R0 ; *,LUNBLK 1536
000004 062700 000054 ADD #54,R0 ; *,LUNBLK
000010 011000 1$: MOV (R0),R0 ; LUNBLK,LUNBLK 1538
000012 001404 BEQ 2$
000014 126066 000007 000002 CMPB 7(R0),2(SP) ; *(LUNBLK),LUNID 1540
000022 001372 BNE 1$
000024 000207 2$: RTS PC ; 1494
; Routine Size: 11 words, Routine Base: $CODE$ + 3312
; Maximum stack depth per invocation: 0 words
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 50
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (12)
; 1544 routine ALLOCATE_LUNBLK (ENTITY) = ! Allocate a LUNBLK and initialize it
; 1545
; 1546 !++
; 1547 ! FUNCTIONAL DESCRIPTION:
; 1548 !
; 1549 !
; 1550 !
; 1551 ! FORMAL PARAMETERS:
; 1552 !
; 1553 ! None
; 1554 !
; 1555 ! IMPLICIT INPUTS:
; 1556 !
; 1557 ! None
; 1558 !
; 1559 ! IMPLICIT OUTPUTS:
; 1560 !
; 1561 ! None
; 1562 !
; 1563 ! ROUTINE VALUE:
; 1564 !
; 1565 ! None
; 1566 !
; 1567 ! SIDE EFFECTS:
; 1568 !
; 1569 ! Must be called in MCB mode
; 1570 !--
; 1571
; 1572 begin
; 1573
; 1574 external
; 1575 MCB$GAW_PROCESS_DATA_BASE : vector [2];
; 1576
; 1577 bind
; 1578 NMXDB = MCB$GAW_PROCESS_DATA_BASE [1] : ref NMXDB_BLOCK;
; 1579
; 1580 local
; 1581 LUNBLK : ref DLX_LUN_BLOCK;
; 1582
; 1583 !
; 1584 ! Allocate and Initialize the LUN_BLOCK
; 1585 !
; 1586
; 1587 if $MCB_GET_DSR (DLX_LUN_ALLOCATION, LUNBLK)
; 1588 then
; 1589 begin !LUN_BLOCK Allocation Success
; 1590 $NMX_ENQUEUE (NMXDB [NMX_LUN_QUEUE], .LUNBLK);
; 1591 LUNBLK [LUN_ENTITY_ADDRESS] = .ENTITY;
; 1592 SMAP$ (LUNBLK [LUN_ENTITY_BIAS]);
; 1593 LUNBLK [LUN_ID] = .NMXDB [NMX_NEXT_LUN_ID];
; 1594 NMXDB [NMX_NEXT_LUN_ID] = .NMXDB [NMX_NEXT_LUN_ID] + 1;
; 1595 LUNBLK [LUN_STATE] = LUN_OPENING;
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 51
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (12)
; 1596 $NMX_QUEUE_INITIALIZE (LUNBLK [LUN_RCVS]);
; 1597 $NMX_QUEUE_INITIALIZE (LUNBLK [LUN_RCPS]);
; 1598 LUNBLK [LUN_XMTS] = 0;
; 1599 LUNBLK [LUN_RCV_ERROR] = 0;
; 1600 LUNBLK [LUN_ERROR_CODE] = IS$SUC;
; 1601 .LUNBLK
; 1602 end
; 1603 else
; 1604 0
; 1605
; 1606 end; !of ALLOCATE_LUNBLK
.GLOBL $DSRGT
.SBTTL ALLOCATE.LUNBLK
000000 010146 ALLOCATE.LUNBLK:
MOV R1,-(SP) ; 1544
000002 012701 000026 MOV #26,R1 ; 1587
000006 004767 000000G JSR PC,$DSRGT
000012 103455 BCS 1$
000014 016701 000002G MOV .CRDAT+2,R1 ; 1590
000020 062701 000054 ADD #54,R1
000024 005010 CLR (R0) ; LUNBLK
000026 010071 000002 MOV R0,@2(R1) ; LUNBLK,*
000032 010061 000002 MOV R0,2(R1) ; LUNBLK,*
000036 016660 000004 000002 MOV 4(SP),2(R0) ; ENTITY,*(LUNBLK) 1591
000044 016760 000000G 000004 MOV KISAR6,4(R0) ; *,*(LUNBLK) 1592
000052 016701 000002G MOV .CRDAT+2,R1 ; 1593
000056 116160 000053 000007 MOVB 53(R1),7(R0) ; *,*(LUNBLK)
000064 105261 000053 INCB 53(R1) ; 1594
000070 112760 000001 000006 MOVB #1,6(R0) ; *,*(LUNBLK) 1595
000076 012701 000010 MOV #10,R1 ; 1596
000102 060001 ADD R0,R1 ; LUNBLK,*
000104 005011 CLR (R1)
000106 010161 000002 MOV R1,2(R1)
000112 012701 000014 MOV #14,R1 ; 1597
000116 060001 ADD R0,R1 ; LUNBLK,*
000120 005011 CLR (R1)
000122 010161 000002 MOV R1,2(R1)
000126 005060 000020 CLR 20(R0) ; *(LUNBLK) 1598
000132 005060 000024 CLR 24(R0) ; *(LUNBLK) 1599
000136 012760 000001 000022 MOV #1,22(R0) ; *,*(LUNBLK) 1600
000144 000401 BR 2$ ; 1587
000146 005000 1$: CLR R0
000150 012601 2$: MOV (SP)+,R1 ; 1544
000152 000207 RTS PC
; Routine Size: 54 words, Routine Base: $CODE$ + 3340
; Maximum stack depth per invocation: 2 words
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 52
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (13)
; 1607 routine EXTRACT_LUNBLK (LUNID) = ! Extract a LUNBLK with LUNID
; 1608
; 1609 !++
; 1610 ! FUNCTIONAL DESCRIPTION:
; 1611 !
; 1612 !
; 1613 !
; 1614 ! FORMAL PARAMETERS:
; 1615 !
; 1616 ! None
; 1617 !
; 1618 ! IMPLICIT INPUTS:
; 1619 !
; 1620 ! None
; 1621 !
; 1622 ! IMPLICIT OUTPUTS:
; 1623 !
; 1624 ! None
; 1625 !
; 1626 ! ROUTINE VALUE:
; 1627 !
; 1628 ! None
; 1629 !
; 1630 ! SIDE EFFECTS:
; 1631 !
; 1632 ! Must be called in MCB mode
; 1633 !--
; 1634
; 1635 begin
; 1636
; 1637 external
; 1638 MCB$GAW_PROCESS_DATA_BASE : vector [2];
; 1639
; 1640 bind
; 1641 NMXDB = MCB$GAW_PROCESS_DATA_BASE [1] : ref NMXDB_BLOCK;
; 1642
; 1643 local
; 1644 LUNBLK : ref DLX_LUN_BLOCK,
; 1645 PREBLK : ref DLX_LUN_BLOCK;
; 1646
; 1647 !
; 1648 ! Search LUN Queue for block with matching LUN_ID
; 1649 !
; 1650 LUNBLK = NMXDB [NMX_LUN_QUEUE];
; 1651 PREBLK = .LUNBLK;
; 1652
; 1653 while (LUNBLK = .LUNBLK [LUN_LINK]) nequ 0 do
; 1654 begin
; 1655
; 1656 if .LUNBLK [LUN_ID] eqlu .LUNID<0, 8>
; 1657 then
; 1658 begin
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 53
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (13)
; 1659
; 1660 if (PREBLK [LUN_LINK] = .LUNBLK [LUN_LINK]) eql 0
; 1661 then
; 1662 NMXDB [$sub_field (NMX_LUN_QUEUE, Q_TAIL)] = .PREBLK;
; 1663
; 1664 exitloop;
; 1665 end;
; 1666
; 1667 PREBLK = .LUNBLK;
; 1668 end;
; 1669
; 1670 !
; 1671 .LUNBLK
; 1672 end; !of EXTRACT_LUNBLK
.SBTTL EXTRACT.LUNBLK
000000 004167 000000G EXTRACT.LUNBLK:
JSR R1,$SAVE2 ; 1607
000004 016700 000002G MOV .CRDAT+2,R0 ; *,LUNBLK 1650
000010 062700 000054 ADD #54,R0 ; *,LUNBLK
000014 010002 1$: MOV R0,R2 ; LUNBLK,PREBLK 1651
000016 011000 MOV (R0),R0 ; LUNBLK,LUNBLK 1653
000020 001412 BEQ 2$
000022 126066 000007 000010 CMPB 7(R0),10(SP) ; *(LUNBLK),LUNID 1656
000030 001371 BNE 1$
000032 011012 MOV (R0),(R2) ; LUNBLK,PREBLK 1660
000034 001004 BNE 2$
000036 016701 000002G MOV .CRDAT+2,R1 ; 1662
000042 010261 000056 MOV R2,56(R1) ; PREBLK,*
000046 000207 2$: RTS PC ; 1607
; Routine Size: 20 words, Routine Base: $CODE$ + 3514
; Maximum stack depth per invocation: 4 words
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 54
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (14)
; 1673 routine TRY_SOME_RCVS (LUNBLK) : novalue =
; 1674
; 1675 !++
; 1676 ! FUNCTIONAL DESCRIPTION:
; 1677 !
; 1678 ! TRY_SOME_RCVS tries to give some receives from the RCPS Queue to
; 1679 ! an RSX task.
; 1680 !
; 1681 ! FORMAL PARAMETERS:
; 1682 !
; 1683 ! None
; 1684 !
; 1685 ! IMPLICIT INPUTS:
; 1686 !
; 1687 ! LUNBLK RCP and IOP Queues
; 1688 !
; 1689 ! IMPLICIT OUTPUTS:
; 1690 !
; 1691 ! LUNBLK RCP and IOP Queues
; 1692 !
; 1693 ! COMPLETION CODES:
; 1694 !
; 1695 ! None
; 1696 !
; 1697 ! SIDE EFFECTS:
; 1698 !
; 1699 ! This routine must be called in MCB mode!
; 1700 !--
; 1701
; 1702 begin
; 1703
; 1704 map
; 1705 LUNBLK : ref DLX_LUN_BLOCK;
; 1706
; 1707 bind
; 1708 NMXDB = MCB$GAW_PROCESS_DATA_BASE [1] : ref NMXDB_BLOCK,
; 1709 RCVQ = LUNBLK [LUN_RCVS] : vector,
; 1710 RCPQ = LUNBLK [LUN_RCPS] : vector;
; 1711
; 1712 !
; 1713 ! Check first for error completions
; 1714 !
; 1715
; 1716 while true do
; 1717 begin
; 1718
; 1719 local
; 1720 AMOUNT,
; 1721 ERROR_CODE,
; 1722 IOP : ref NMX_IOP_BLOCK;
; 1723
; 1724 if (IOP = .RCVQ [0]) eqla 0 then exitloop;
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 55
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (14)
; 1725
; 1726 if .LUNBLK [LUN_RCV_ERROR] eql 0
; 1727 then
; 1728 begin
; 1729
; 1730 local
; 1731 CCB : ref block field (C_FIELDS);
; 1732
; 1733 if (CCB = .RCPQ [0]) eqla 0 then exitloop;
; 1734
; 1735 ERROR_CODE = IS$SUC;
; 1736 AMOUNT = .CCB [C_CNT];
; 1737 !
; 1738 ! Check if there is too much data
; 1739 !
; 1740 if .AMOUNT gtru .IOP [I_NMX_CNT]
; 1741 then
; 1742 begin
; 1743 ERROR_CODE = IE$DAO;
; 1744 AMOUNT = .IOP [I_NMX_CNT];
; 1745 end;
; 1746
; 1747 begin ! Copy data to user buffer.
; 1748
; 1749 local
; 1750 CURRENT_MAP;
; 1751
; 1752 SMAP$ (CURRENT_MAP);
; 1753 MAP$ (.CCB [C_BIAS]);
; P 1754 $MCB_MOVE_BUFFER_TO_BUFFER (.AMOUNT, .CCB [C_ADDR],
; 1755 ((.IOP [I_NMX_BIAS]), (.IOP [I_NMX_ADDR])));
; 1756 MAP$ (.CURRENT_MAP);
; 1757 end;
; 1758 !
; 1759 ! Complete IOP and return resources
; 1760 !
; 1761 $MCB_DEQUEUE_CCB (RCPQ, CCB); ! Dequeue RCPQ
; 1762 CCB [C_FNC] = FC_RCE;
; 1763 $MCB_SCHEDULE_CCB (.CCB);
; 1764 end
; 1765 else
; 1766 begin
; 1767 ERROR_CODE = .LUNBLK [LUN_RCV_ERROR];
; 1768 AMOUNT = 0;
; 1769 LUNBLK [LUN_RCV_ERROR] = 0;
; 1770 end;
; 1771
; 1772 $NMX_DEQUEUE (RCVQ, IOP);
; 1773 $NMX_RETURN_RSX_IOP (.IOP, .ERROR_CODE, .AMOUNT);
; 1774 end;
; 1775
; 1776 end; !of TRY_SOME_RCVS
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 56
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (14)
; WARN#099
; Simultaneously allocated two quantities to Register 5
.GLOBL $MVTBF
.SBTTL TRY.SOME.RCVS
000000 004167 000000G TRY.SOME.RCVS:
JSR R1,$SAVE5 ; 1673
000004 162706 000016 SUB #16,SP
000010 016666 000034 000010 MOV 34(SP),10(SP) ; LUNBLK,* 1709
000016 012700 000024 MOV #24,R0 ; 1726
000022 066600 000010 ADD 10(SP),R0
000026 010066 000006 MOV R0,6(SP)
000032 016600 000010 1$: MOV 10(SP),R0 ; 1724
000036 016016 000010 MOV 10(R0),(SP) ; *,IOP
000042 001532 BEQ 6$
000044 005776 000006 TST @6(SP) ; 1726
000050 001073 BNE 4$
000052 010001 MOV R0,R1 ; 1733
000054 016100 000014 MOV 14(R1),R0 ; *,CCB
000060 001523 BEQ 6$
000062 012766 000001 000014 MOV #1,14(SP) ; *,ERROR.CODE 1735
000070 016066 000022 000012 MOV 22(R0),12(SP) ; *(CCB),AMOUNT 1736
000076 011601 MOV (SP),R1 ; IOP,* 1740
000100 026661 000012 000030 CMP 12(SP),30(R1) ; AMOUNT,*(IOP)
000106 101406 BLOS 2$
000110 012766 177763 000014 MOV #-15,14(SP) ; *,ERROR.CODE 1743
000116 016166 000030 000012 MOV 30(R1),12(SP) ; *(IOP),AMOUNT 1744
000124 016701 000000G 2$: MOV KISAR6,R1 ; *,CURRENT.MAP 1752
000130 016067 000016 000000G MOV 16(R0),KISAR6 ; *(CCB),* 1753
000136 011602 MOV (SP),R2 ; IOP,* 1755
000140 016246 000024 MOV 24(R2),-(SP) ; *(IOP),*
000144 010204 MOV R2,R4 ; IOP,*
000146 016446 000026 MOV 26(R4),-(SP) ; *(IOP),*
000152 016002 000020 MOV 20(R0),R2 ; *(CCB),*
000156 016603 000016 MOV 16(SP),R3 ; AMOUNT,*
000162 004767 000000G JSR PC,$MVTBF
000166 010167 000000G MOV R1,KISAR6 ; CURRENT.MAP,* 1756
000172 012701 000014 MOV #14,R1 ; 1761
000176 066601 000014 ADD 14(SP),R1
000202 010166 000010 MOV R1,10(SP)
000206 010103 MOV R1,R3
000210 004767 000000G JSR PC,$CMQRM
000214 103401 BCS 3$
000216 010400 MOV R4,R0 ; $MCB$R4,CCB
000220 112760 000004 000012 3$: MOVB #4,12(R0) ; *,*(CCB) 1762
000226 010004 MOV R0,R4 ; CCB,* 1763
000230 004767 000000G JSR PC,$SCHED
000234 022626 CMP (SP)+,(SP)+ ; 1728
000236 000407 BR 5$ ; 1726
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 57
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (14)
000240 017666 000006 000014 4$: MOV @6(SP),14(SP) ; *,ERROR.CODE 1767
000246 005066 000012 CLR 12(SP) ; AMOUNT 1768
000252 005076 000006 CLR @6(SP) ; 1769
000256 012700 000010 5$: MOV #10,R0 ; 1772
000262 066600 000010 ADD 10(SP),R0
000266 010066 000002 MOV R0,2(SP)
000272 004767 000000G JSR PC,$QRMVF
000276 010116 MOV R1,(SP)
000300 004767 000000G JSR PC,$RSX ; 1773
000304 016600 000014 MOV 14(SP),R0 ; ERROR.CODE,*
000310 016601 000012 MOV 12(SP),R1 ; AMOUNT,*
000314 011603 MOV (SP),R3 ; IOP,*
000316 004767 000000G JSR PC,$IOFIN
000322 004767 000000G JSR PC,$MCB
000326 000641 BR 1$ ; 1716
000330 062706 000016 6$: ADD #16,SP ; 1673
000334 000207 RTS PC
; Routine Size: 111 words, Routine Base: $CODE$ + 3564
; Maximum stack depth per invocation: 16 words
; 1777 end
; 1778
; 1779 eludom
; OTS external references
.GLOBL $SAVE5, $SAVE2, $STOP
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $CODE$ 1065 RO , I , LCL, REL, CON
; $PLIT$ 20 RO , D , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; NETPKG:<MCB>XPORTX.L16.15 599 34 5 0
; NETPKG:<MCB>MCBLIB.L16.15 372 61 16 0
; NETPKG:<NMX>NMXPAR.L16.30 968 224 23 0
; NETPKG:<MCB>NMXLIB.L16.13 200 33 16 0
NMXDLE 25-Jan-1983 09:26:39 TOPS-20 Bliss-16 3(552) Page 58
X01090 4-Jan-1983 09:27:13 NETPKG:<NMX>NMXDLE.BLI.7 (14)
; Information: 0
; Warnings: 1
; Errors: 0
; 1780 ! Local Modes:
; 1781 ! Comment Column:36
; 1782 ! Comment Start:!
; 1783 ! Mode:BLISS
; 1784 ! Auto Save Mode:2
; 1785 ! End:
; Size: 1065 code + 20 data words
; Run Time: 00:22.9
; Elapsed Time: 01:25.1
; Memory Used: 63 pages
; Compilation Complete
ALLOCATE_LUNBLK 511 858 1543*
AMOUNT 1719 1735# 1739 1743# 1753 1767# 1772
BYT$PTR 832 833
CCB 228+ 232+ 244+ 248+ 271+ 275+ 284+ 288+ 297+ 301+ 319+ 323+
558 590 599 601 611 624 627 662 665 674 679# 680
686 689# 690 695# 696# 697# 698# 699 706# 707# 708# 709#
710 722# 727 728 732 793 810 823 826 848 865 874#
875# 876# 877# 878# 879# 880 889 899 934 941 943 948#
949# 954# 957# 963# 964 1042 1047 1069# 1070# 1071# 1072 1089
1125 1140 1146 1155# 1156 1277 1311 1314 1323 1329 1330 1335
1341 1342 1347# 1348 1353# 1354 1358 1461 1466 1479# 1480# 1481#
1482# 1483# 1484# 1485 1730 1732# 1735 1752 1753 1760 1761# 1762
CIRCUIT_SERVICE_TIMER 1265
CKTBLK 1259 1264# 1265
CURRENT_MAP 1749 1751 1755
C_ADDR 1480 1753
C_BIAS 1479 1752
C_CNT 948 1481 1735
C_DLX_EID 441+# 698 709 874
C_DLX_IOP 444+# 722 878 1070 1329 1341 1483
C_DLX_LUNBLK 445+# 665 727 879 1071 1314 1484
C_DLX_STATE 443+# 674 679 689 695 706 732 877 1069 1323 1347 1353
1358 1482
C_FIELDS 232+ 248+ 275+ 288+ 301+ 323+ 590 1040 1125 1730
C_FNC 240+ 253+ 280+ 293+ 306+ 328+ 696 707 875 963 1064 1155
1761
C_LIN 238+ 599 1140
C_LIX 440+
C_LNK 242+ 255+ 282+ 295+ 308+ 330+
C_MOD 241+ 254+ 281+ 294+ 307+ 329+ 697 708 876
C_NM_FIELDS 451+
C_NM_FUNC 943
C_NM_NMPAR 826 848
C_PIX 235+ 251+ 278+ 291+ 304+ 326+
C_PRM1 442+
C_STS 611 686 949 954 957 1329 1335
DECLARE_SEVERITY 333+
DLL 333+
DLL$A_CIRCUIT_NAME 208+#
DLL$B_PROVIDER_LINE_INDEX 203+#
DLL$B_PROVIDER_PROCESS_INDEX 204+#
DLL$FW_START_CCB_PRM1 201+#
DLL$FW_START_CCB_PRM2 206+#
DLL$FW_START_CCB_PRM3 210+#
DLL$K_DATA_RECEIVED 347+#
DLL$K_ENTER_MAINTENANCE 307+ 341+#
DLL$K_INITIALIZE_LINK 281+ 339+#
DLL$K_MAINTENANCE_RECEIVED 348+#
DLL$K_PERSISTENT_ERROR 355+# 610
DLL$K_STATE 353+#
DLL$K_STOP_LINK 294+ 340+#
DLL$K_TRANSIENT_ERROR 354+#
DLL$K_TRANSMIT 329+ 338+#
DLL$K_TRANSMIT_AND_TIME 342+#
DLL$V_DTE_CIRCUIT 212+#
DLL$_ABORTED 362+
DLL$_DEVICE_OPERATION_ERROR 391+
DLL$_DEVICE_RESPONSE_ERROR 387+
DLL$_DEVICE_SERVICE_ERROR 389+
DLL$_MAINTENANCE_RECEIVED 385+ 614
DLL$_NOT_SUPPORTED 361+
DLL$_PAUSE_TIMEOUT 394+
DLL$_PRIVLEDGE_VIOLATION 360+
DLL$_RECEIVE_ERROR 401+
DLL$_RECEIVE_THRESHOLD 375+
DLL$_SELECTION_THRESHOLD 377+
DLL$_SERVICE_TIMEOUT 399+
DLL$_START_RECEIVED 383+ 613
DLL$_STATE_MAINTENANCE 369+
DLL$_STATE_OFF 366+
DLL$_STATE_RUNNING 368+
DLL$_STATE_SYNCHRONIZING 367+
DLL$_SUCCESS 359+
DLL$_TRANSMIT_THRESHOLD 373+
DLXAST 502 558*
DLXCCP 503 627*
DLXCON 504 737*
DLXCTL 505 899*
DLXDSC 506 967*
DLXRCP 507 1089*
DLXRCV 508 1159*
DLXXCP 509 1277*
DLXXMT 510 1363*
DLX_CCB_BLOCK 450+# 662 793 1042 1311 1461
DLX_ENTER_MAINT 457+# 689 1333
DLX_LUN_ALLOCATION 484+# 727 1586
DLX_LUN_BLOCK 487+# 593 665 795 1023 1128 1211 1314 1417 1530 1580 1643
1644 1704
DLX_LUN_FIELDS 468+# 488+
DLX_LUN_SIZE 483+# 488+
DLX_OVERLAY_CCB_FIELDS 438+# 451+
DLX_RELEASE_ENTITY 459+# 704 1347 1353
DLX_REQUEST_ENTITY 456+# 679 683
DLX_START_OWNER 460+# 464+ 695 706 713
DLX_STATE_HIGH 464+# 674 1323
DLX_STATE_LOW 463+# 674 1323
DLX_STOP_OWNER 455+# 677 877
DLX_STOP_PROTOCOL 458+# 1069 1351
DLX_TRANSMIT 454+# 463+ 1326 1482
ENTBLK 666# 680 690 698 709 715# 716# 796 830# 836 840 841
842 843 844 858 872# 874 1045# 1072 1464# 1485
ENTITY 1543 1590
ENTITY_BLOCK 1315# 1340# 1348 1354
EQLU 1539 1655
ERROR_CODE 794 828# 838# 854 891 1720 1734# 1742# 1766# 1772
ERROR 333+
EXTRACT_LUNBLK 512 724 1606*
FCM 558 608 899 941 1089 1277
FC_CCP 963
FC_CTL 240+ 253+ 696 707 875
FC_RCE 1064 1155 1761
FC_XME 280+ 293+ 306+ 328+
FIND_LUNBLK 513 599 1140 1493*
FM_NM 941
FM_STP 254+ 876
FM_STR 241+ 697 708
GENERAL_NAME_LENGTH 836
GENERAL_OWNER_ID 698 709 716 841 874
GENERAL_PROVIDER_ID 842
GENERAL_PROVIDER_PIX 680 690 1072 1348 1354 1485
GENERAL_SYSTEM_FLAGS 844
IE$ABO 1081
IE$ALN 806
IE$BBE 615
IE$BDV 828 841 842
IE$CNR 694
IE$DAA 840 843
IE$DAO 1742
IE$EOT 613
IE$ISQ 1346
IE$NDR 867 1055 1474
IE$NLN 1033 1221 1238 1427 1440
IE$PRI 844
IE$SPC 1250 1452
IE$SRE 1329
INFO 333+
IOFIN$ 806 867 891 1033 1055 1081 1221 1238 1250 1427 1440 1452
1474
IOP 720 722# 723 725 737 769 798 806 810 830 832 833
867 873 878 891 967 999 1025 1033 1055 1070 1159 1191
1213 1221 1238 1242 1250 1254 1265# 1269 1363 1395 1419 1427
1440 1444 1452 1474 1479 1480 1481 1483 1721 1723# 1739 1743
1754 1771 1772
IS$SUC 845 854 1059 1329 1341 1599 1734
I_LN2 723 798 873 1025 1213 1419
I_NMX_ADDR 1480 1754
I_NMX_BIAS 1479 1754
I_NMX_CNT 1242 1444 1481 1739 1743
I_NMX_ENTITY 1254 1265
I_NM_ENTITY 830 832 833
LIN 228+ 237+ 238+
LINK_AUTODUMPING 540#
LINK_AUTOLOADING 539#
LINK_AUTOSERVICE 538#
LINK_AUTOTRIGGERING 541#
LINK_CLEARED 524#
LINK_DISABLED 551#
LINK_DUMPING 536#
LINK_ENABLED 550#
LINK_FAILED 543#
LINK_LOADING 535#
LINK_LOOPING 534#
LINK_LUN_BLOCK 715 840 872
LINK_NO_SUBSTATE 531#
LINK_OFF 522# 843
LINK_ON 521#
LINK_REFLECTING 533#
LINK_SERVICE 523#
LINK_STARTING 532#
LINK_STATE 843
LINK_SYNCHRONIZING 542#
LINK_TRIGGERING 537#
LINK_USER_ID 716 1340
LUNBLK 593 599# 604 611# 621 795 858# 872# 873 879 1023 1025#
1045 1059# 1060# 1062 1068 1071 1080 1128 1140# 1143 1146 1147
1211 1213# 1230 1263 1264 1269 1270 1314# 1315 1321 1328# 1338#
1339# 1340 1346# 1417 1419# 1432 1456 1464 1478# 1484 1530 1535#
1537# 1539 1541 1580 1586 1589 1590# 1591 1592# 1594# 1595 1596
1597# 1598# 1599# 1600 1643 1649# 1650 1652# 1655 1659 1666 1670
1672 1704 1708 1709 1725 1766 1768#
LUNID 1493 1539 1606 1655
LUN_BLOCK 665# 666 672 680 694# 724 725
LUN_CLOSING 492+# 1060
LUN_ENTITY_ADDRESS 471+# 666 1045 1264 1315 1464 1590
LUN_ENTITY_BIAS 472+# 672 1068 1263 1321 1456 1591
LUN_ERROR_CODE 478+# 694 725 1059 1339 1346 1599
LUN_ID 474+# 680 724 1340 1539 1592 1655
LUN_LINK 470+# 1537 1652 1659
LUN_OPENED 493+# 604 1143 1230 1338 1432
LUN_OPENING 491+# 1594
LUN_RCPS 476+# 1062 1146 1596 1709
LUN_RCVS 475+# 1080 1269 1595 1708
LUN_RCV_ERROR 479+# 604 611 1598 1725 1766 1768
LUN_STATE 473+# 604 1060 1143 1230 1338 1432 1594
LUN_XMTS 477+# 1328 1478 1597
MAP$ 672 1068 1263 1266 1321 1456 1752 1755
MCB$GAW_PROCESS_DATA_BASE 557 1524 1527 1574 1577 1637 1640 1707
MCB$K_VERSION 432+
MCB_DB_CCB_MOD 502 505 507 509 558# 899# 1089# 1277#
MCB_DB_CCB 503 627#
NMPAR 826# 832 833
NMX$ENT_CKT 832
NMX$ENT_LIN 833
NMX$FLG_MAINTENANCE_ALLOWED 844
NMX$FNC_CLR 952
NMX$FNC_HI 943
NMX$FNC_LO 943
NMX$FNC_RET 946
NMX$FNC_SET 952
NMX$FNC_SHO 946
NMX$FNC_SZC 952
NMX$FNC_ZRO 952
NMX$LKG_UCB_IOP 504 506 508 510 737# 967# 1159# 1363#
NMX$_ICP 601 732 1358
NMX$_IFM 941
NMXDB_BLOCK 589 661 772 933 1002 1039 1124 1194 1228 1310 1398 1460
1527 1577 1640 1707
NMXDB 558 589 627 661 772 774 805 866 881 890 899 933
1002 1004 1032 1039 1054 1078 1089 1124 1194 1196 1220 1228
1237 1249 1271 1277 1310 1340 1398 1400 1426 1439 1451 1460
1473 1487 1527# 1535 1577# 1589 1592 1593# 1640# 1649 1661# 1707#
NMXDLE 1#
NMX_CCB_BLOCK 823 934
NMX_CIRCUIT_BLOCK 1259
NMX_CIRCUIT_FIELDS 667 796 1315
NMX_GENERAL_BLOCK 1045 1464
NMX_GENERAL_FIELDS 666 796 1316
NMX_IOP_BLOCK 720 769 999 1041 1191 1395 1721
NMX_LINE_FIELDS 667 796 1315
NMX_LINK_FIELDS 666 796 1316
NMX_LUN_QUEUE 1535 1589 1649 1661
NMX_NEXT_LUN_ID 1592 1593
NMX_NMPAR_ALLOCATION 848
NMX_NMPAR_BLOCK 826
NMX_NMPAR_ENTITY 832 833
NMX_NMX_PIX 1340
PREBLK 1644 1650# 1659# 1661 1666#
PROVIDER_PIX 228+ 234+ 235+ 244+ 250+ 251+ 271+ 277+ 278+ 284+ 290+ 291+
297+ 303+ 304+ 319+ 325+ 326+
Q_TAIL 1661
RCPCCB 1040 1062 1064# 1065
RCPQ 1709# 1732 1760
RCVIOP 1041 1080 1081
RCVQ 1708# 1723 1771
SAVE_MAP 1260 1262 1266
SEVERE 333+
SMAP$ 1262 1591 1751
SUCCESS 333+
TRUE 838 1715
TRY_SOME_RCVS 514 621 1147 1270 1672*
UCB 737 774 803 805 806 863 866 867 887 890 891 967
1004 1030 1032 1033 1052 1054 1055 1076 1078 1081 1159 1196
1218 1220 1221 1235 1237 1238 1247 1249 1250 1363 1400 1424
1426 1427 1437 1439 1440 1449 1451 1452 1471 1473 1474
WARNING 333+
XPO$K_VERSION 431+
$ADDRESS 443+ 444+ 445+ 470+ 471+ 472+
$BYTE 473+ 474+
$CONTINUE 446+
$DISTINCT 454+ 455+ 456+ 457+ 458+ 459+ 460+ 491+ 492+ 493+
$DLL$CCB 232+# 235+# 238+# 240+# 241+# 242+ 248+# 251+# 253+# 254+# 255+ 275+#
278+# 280+# 281+# 282+ 288+# 291+# 293+# 294+# 295+ 301+# 304+# 306+#
307+# 308+ 323+# 326+# 328+# 329+# 330+
$DLL_ENTER_MAINTENANCE 297+# 690
$DLL_ERROR 360+ 361+ 385+
$DLL_INFO 366+ 367+ 368+ 369+
$DLL_INITIALIZE 271+#
$DLL_RELEASE_CIRCUIT 244+# 1348 1354
$DLL_REQUEST_CIRCUIT 228+# 680
$DLL_SEVERE 387+ 389+ 391+
$DLL_STOP 284+# 1072
$DLL_SUCCESS 359+
$DLL_TRANSMIT 319+# 1485
$DLL_WARNING 362+ 373+ 375+ 377+ 383+ 394+ 399+ 401+
$FIELD 437+ 467+
$FIELD_SET_SIZE 483+
$FIELD_SET_UNITS 484+
$INTEGER 441+ 477+ 478+ 479+
$LITERAL 453+ 490+
$MCB_DEQUEUE_CCB 1062 1760
$MCB_GET_CCB 1047 1466
$MCB_GET_DSR 1586
$MCB_MCB_TO_RSX 805 866 881 890 1032 1054 1078 1220 1237 1249 1271 1426
1439 1451 1473 1487
$MCB_MOVE_BUFFER_TO_BUFFER 1753
$MCB_QUEUE_CCB 1146
$MCB_RETURN_CCB 624 728 865 889 1330 1342
$MCB_RETURN_DSR 727 848
$MCB_RSX_TO_MCB 774 1004 1196 1400
$MCB_SCHEDULE_CCB 242+ 255+ 282+ 295+ 308+ 330+ 699 710 880 964 1065 1156
1762
$NM$ERR_CWS 954
$NM$ERR_UFO 957
$NM$_SUC 949
$NMX_DEQUEUE 1080 1771
$NMX_ENQUEUE 1269 1589
$NMX_GET_NMX_CCB 810
$NMX_MAP_ENTITY_ID 832 833
$NMX_QUEUE_INITIALIZE 1595 1596
$NMX_RETURN_RSX_IOP 725 1329 1341 1772
$OVERLAY 440+ 442+
$SUB_BLOCK 475+ 476+
$SUB_FIELD 1661