Trailing-Edge
-
PDP-10 Archives
-
BB-R595B-SM_11-9-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