Trailing-Edge
-
PDP-10 Archives
-
TOPS-20_V6.1_DECnetSrc_7-23-85
-
mcb/xpt/xptsel.lst
There is 1 other file named xptsel.lst in the archive. Click here to see a list.
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 1
23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (1)
; 0001 module XPTSEL (
; 0002 IDENT = 'X01730'
; 0003 ) =
; 0004 begin
; 0005
; 0006 !
; 0007 ! COPYRIGHT (c) 1980, 1981, 1982
; 0008 ! DIGITAL EQUIPMENT CORPORATION
; 0009 ! Maynard, Massachusetts
; 0010 !
; 0011 ! This software is furnished under a license and may be used
; 0012 ! and copied only in accordance with the terms of such license
; 0013 ! and with the inclusion of the above copyright notice. This
; 0014 ! software or any other copies thereof may not be provided or
; 0015 ! otherwise made available to any other person. No title to
; 0016 ! and ownership of the software is hereby transferred.
; 0017 !
; 0018 ! The information in this software is subject to change
; 0019 ! without notice and should not be construed as a commitment
; 0020 ! by DIGITAL EQUIPMENT CORPORATION.
; 0021 !
; 0022 ! DIGITAL assumes no responsibility for the use or reliability
; 0023 ! of its software on equipment which is not supplied by
; 0024 ! DIGITAL.
; 0025 !
; 0026
; 0027 !++
; 0028 ! FACILITY: Transport
; 0029 !
; 0030 ! ABSTRACT:
; 0031 !
; 0032 ! Transport Select module: Determines what line to send
; 0033 ! a forwarded message over. Builds routing headers for
; 0034 ! the messages. Calls Forwarding to transmit the messages.
; 0035 !
; 0036 ! ENVIRONMENT: MCB
; 0037 !
; 0038 ! AUTHOR: L. Webber , CREATION DATE: 2-Aug-79
; 0039 !
; 0040 ! MODIFIED BY:
; 0041 !
; 0042 ! L. Webber, 2-Aug-79 : VERSION 01
; 0043 !
; 0044 ! 1.01 L. Webber, 3-Oct-79
; 0045 ! Replaced routines SELECTOR and HDR_BUILD, added RCVECL, RCVPH2,
; 0046 ! BLDPH2, BLDPH3, and INTERCEPT
; 0047 !
; 0048 ! 1.02 L. Webber, 3-Apr-80
; 0049 ! Modified to support node and line sub-data-bases
; 0050 !
; 0051 ! 1.03 L. Webber, 30-Jun-80
; 0052 ! Modify to use MCBLIB macros
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 2
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (1)
; 0053 !
; 0054 ! 1.04 L. Webber, 3-Oct-80
; 0055 ! Modify to recognize own node name in routing header
; 0056 !
; 0057 ! 1.05 A. Peckham, 16-Oct-80
; 0058 ! Do not translate C_LIN in CCB from ECL in RCVECL.
; 0059 !
; 0060 ! 1.06 A. Peckham, 21-Oct-80
; 0061 ! Change all CE_ERR returns into SIGNAL_STOPs.
; 0062 !
; 0063 ! 1.07 A. Peckham, 22-Oct-80
; 0064 ! Set adjustment factor to zero in BLDPH3 for ECL CCBs.
; 0065 !
; 0066 ! 1.08 A. Peckham, 22-Oct-80
; 0067 ! Fix adjustment factor problems once and for all....
; 0068 !
; 0069 ! 1.09 A. Peckham, 24-Oct-80
; 0070 ! Change some CE_ERRs back from SIGNAL_STOPs.
; 0071 !
; 0072 ! 1.10 L. Webber, 31-Oct-80
; 0073 ! Check source & dest addrs for 0 in RCVECL
; 0074 !
; 0075 ! 1.11 L. Webber, 20-Nov-80
; 0076 ! Modify to intercept DI's
; 0077 !
; 0078 ! 1.12 L. Webber, 11-Dec-80
; 0079 ! Modify to support MCB 3.1
; 0080 !
; 0081 ! 1.13 L. Webber, 13-Jan-80
; 0082 ! Replace "no link" DC with "bad routing header" DC
; 0083 !
; 0084 ! 1.14 L. Webber, 23-Jan-81
; 0085 ! Add counter and event-logging code
; 0086 !
; 0087 ! 1.15 L. Webber, 9-Feb-81
; 0088 ! Change references to Forwarding routines (ECLFWD, FORWARDER, TERMINATE)
; 0089 ! to CALL$E
; 0090 !
; 0091 ! 1.16 L. Webber, 9-Feb-81
; 0092 ! Change references back (a interface module has been added)
; 0093 !
; 0094 ! 1.17 L. Webber, 10-Feb-81
; 0095 ! MAPBUF is now a macro
; 0096 !
; 0097 ! 1.18 L. Webber, 11-Feb-81
; 0098 ! Put the local node name in a Phase II routing header when the local
; 0099 ! node is the source, instead of the number.
; 0100 !
; 0101 ! 1.19 L. Webber, 20-Feb-81
; 0102 ! Fix linkage in RCVDAT (C_LIX already translated from LIX)
; 0103 !
; 0104 ! 1.20 L. Webber, 20-Feb-81
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 3
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (1)
; 0105 ! Don't flag a DC which can't be intercepted.
; 0106 !
; 0107 ! 1.21 L. Webber, 23-Feb-81
; 0108 ! Make the Event Buffer data an image field.
; 0109 !
; 0110 ! 1.22 L. Webber, 25-Feb-81
; 0111 ! Make calls to $CDBV and $CBDMG CALL$E's
; 0112 !
; 0113 ! 1.23 L. Webber, 3-Mar-81
; 0114 ! Change code for implementing local routing (ECL-ECL)
; 0115 !
; 0116 ! 1.24 L. Webber, 5-Mar-81
; 0117 ! If a Phase II packet is received with a numeric destination
; 0118 ! node name, the header is not useable and must be rebuilt if
; 0119 ! the adjacent node is Phase II.
; 0120 !
; 0121 ! 1.25 L. Webber, 5-Mar-81
; 0122 ! Split INTERCEPT into its own XPESEL module.
; 0123 !
; 0124 ! 1.26 L. Webber, 11-Mar-81
; 0125 ! Take out "return-to-sender" processing for packets from the
; 0126 ! ECL; NSP never uses the feature.
; 0127 !
; 0128 ! 1.27 L. Webber, 12-Mar-81
; 0129 ! Fix BLDPH2 so that if the source node is adjacent and Phase 2,
; 0130 ! the ASCII source name is put into the routing header.
; 0131 !
; 0132 ! 1.28 L. Webber, 16-Mar-81
; 0133 ! Fix a couple of "cleanup" places so that they UNSPAWN the
; 0134 ! spawned CCB, instead of just releasing it.
; 0135 !
; 0136 ! 1.29 L. Webber, 16-Mar-81
; 0137 ! Modify so that only links where at least one end is Phase II (not
; 0138 ! II+) are intercepted.
; 0139 !
; 0140 ! 1.30 L. Webber, 18-Mar-81
; 0141 ! Fix bug in RCVPH2 that was inspecting the wrong line as the
; 0142 ! output one.
; 0143 !
; 0144 ! 1.31 L. Webber, 19-Mar-81
; 0145 ! Fix the same bug in RCVDAT.
; 0146 !
; 0147 ! 1.32 L. Webber, 20-Mar-81
; 0148 ! Fix mistake in header-flag parameter in a call to BLDPH2.
; 0149 !
; 0150 ! 1.33 L. Webber, 3-Apr-81
; 0151 ! Put LIX for input line as entity into LOG_EVENT call (except
; 0152 ! for the Aged Packet Loss event, which takes no entity).
; 0153 !
; 0154 ! 1.34 L. Webber, 17-Apr-81
; 0155 ! Fix RCVPH2 to map to input line data base when processing
; 0156 ! a packet for self.
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 4
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (1)
; 0157 !
; 0158 ! 1.35 L. Webber, 1-May-81
; 0159 ! Make sure no more than 60 bytes goes in the Event Buffer in
; 0160 ! UNREACH in RCVPH2.
; 0161 !
; 0162 ! 1.36 L. Webber, 6-May-81 *** TEMPORARY ***
; 0163 ! Crash when an invalid format message is received from a Phase
; 0164 ! II node.
; 0165 !
; 0166 ! 1.37 L. Webber, 6-May-81
; 0167 ! Set C.LIX (the input channel) to 0 when sending a packet to the
; 0168 ! local node in RCVECL.
; 0169 !
; 0170 ! 1.38 L. Webber, 6-May-81 *** TEMPORARY ***
; 0171 ! Fix PH2HDR to call a mismatch between source name and adjacent
; 0172 ! node name "unreachable" instead of "format error", so that the
; 0173 ! event doesn't cause a crash while 1.36 is in.
; 0174 !
; 0175 ! 1.39 L. Webber, 8-May-81
; 0176 ! Fix local link code in RCVECL to do an LDBRT on resource failure.
; 0177 !
; 0178 ! 1.40 L. Webber, 11-May-81
; 0179 ! Take out 1.36 and 1.38.
; 0180 !
; 0181 ! 1.41 L. Webber, 1-Jun-81
; 0182 ! Modify all LOG_EVENT calls for a circuit entity to pass the NMXid.
; 0183 !
; 0184 ! 1.42 L. Webber, 3-Jun-81
; 0185 ! Allocate a specific buffer size instead of an SDB.
; 0186 !
; 0187 ! 1.43 L. Webber, 4-Jun-81
; 0188 ! Set C_LIN in Select, not Forwarding, when going to the ECL.
; 0189 !
; 0190 ! 1.44 L. Webber, 25-Jun-81
; 0191 ! Modify UNREACH subroutine of RCVPH2 to call SEND_DC (in XPESEL)
; 0192 ! instead of constructing and sending the DC itself.
; 0193 !
; 0194 ! 1.45 L. Webber, 7-Jul-81
; 0195 ! Fix RCVDAT to handle congestion by UNSPAWNing before TOSSing.
; 0196 !
; 0197 ! 1.46 L. Webber, 20-Jul-81
; 0198 ! Decrement INPUTcount when sending a DC back to the source of a
; 0199 ! buffer in RCVPH2, thus closing the books on the buffer.
; 0200 !
; 0201 ! 1.47 L. Webber, 22-Jul-81
; 0202 ! Enhance 1.46 to clear out a CCB's type code when it is allocated
; 0203 ! in RCVPH2 and RCVDAT. This assures that _TERMINATE (1.12) will do the
; 0204 ! right thing with INPUTcount even when the CCB isn't actually forwarded
; 0205 ! anywhere.
; 0206 !
; 0207 ! 1.48 L. Webber, 24-Jul-81
; 0208 ! Fix local link processing in RCVECL to get a CCB as well as a buffer.
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 5
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (1)
; 0209 !
; 0210 ! 1.49 L. Webber, 31-Jul-81
; 0211 ! Fix RCVPH2 so that a bogus "Phase II" packet will not cause a
; 0212 ! SIGNAL_STOP, but instead will cause a "packet format error" event
; 0213 ! to be logged and the packet to be discarded.
; 0214 !
; 0215 ! 1.50 L. Webber, 5-Aug-81
; 0216 ! Fix the first call to TOSS in RCVDAT to pass information which has
; 0217 ! not yet been determined, as 0.
; 0218 !
; 0219 ! 1.51 L. Webber, 6-Aug-81
; 0220 ! Zero out both adjustment factor and buffer type of a newly acquired
; 0221 ! CCB in RCVECL. (Cf. 1.47).
; 0222 !
; 0223 ! 1.52 L. Webber, 12-Aug-81
; 0224 ! Fix UNREACH in RCVPH2 to zero out the adjustment factor in the
; 0225 ! spawned CCB before sending a DC.
; 0226 !
; 0227 ! 1.53 L. Webber, 12-Aug-81
; 0228 ! Fix 1.49 to refer to the right CCB (CCB_P) throughout.
; 0229 !
; 0230 ! 1.54 L. Webber, 12-Aug-81
; 0231 ! Fix 1.52 to un-adjust the pass-through CCB before zeroing out
; 0232 ! the adjustment factor. Also, un-chain the pass-through (i.e.,
; 0233 ! zero out the spawned CCB's C_CHN).
; 0234 !
; 0235 ! 1.55 L. Webber, 16-Sep-81
; 0236 ! Fix all three main routines so that a line state for a selected
; 0237 ! output circuit other than "running" will make a node unreachable over
; 0238 ! that circuit. This is to handle the window during which TLI has
; 0239 ! brought the circuit down, but XPT hasn't processed the "line down"
; 0240 ! CCB.
; 0241 !
; 0242 ! 1.56 L. Webber, 16-Sep-81
; 0243 ! Modify BLDPH2 so that, if the source node is a Phase II node, it
; 0244 ! searches first the input circuit for the packet and then all circuits
; 0245 ! for an matching adjacent Phase II node. If it finds one, it converts
; 0246 ! the address into an ASCII node name. The change from the old way
; 0247 ! of doing things is that all circuits and not just the input circuit
; 0248 ! are checked.
; 0249 !
; 0250 ! 1.57 L. Webber, 20-Sep-81
; 0251 ! Fix 1.55 not to check the "output circuit" for a packet to the
; 0252 ! local node.
; 0253 !
; 0254 ! 1.58 A. Peckham, 23-Sep-81
; 0255 ! Fix dot bug in RCVPH2.
; 0256 !
; 0257 ! 1.59 L. Webber, 24-Sep-81
; 0258 ! Modify event logging calls to use new macros for storing parameters
; 0259 ! in the Event Buffer.
; 0260 !
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 6
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (1)
; 0261 ! 1.60 L. Webber, 16-Oct-81
; 0262 ! Change UNREACH in RCVPH2 not to DC an unreachable packet if the
; 0263 ! source node is 2+, but rather just to toss the packet.
; 0264 !
; 0265 ! 1.61 L. Webber, 16-Nov-81
; 0266 ! Fix RCVDAT when destination is unreachable, to address the input
; 0267 ! circuit data base before incrementing the "transit packets in"
; 0268 ! counter (currently the output data base for OL = -1 is being ad-
; 0269 ! dressed).
; 0270 !
; 0271 ! 1.62 L. Webber, 21-Dec-81
; 0272 ! Fix UNREACH in RCVPH2 so that it exchanges the source and destination
; 0273 ! node names, and recognizes a DC in a packet with a routing header.
; 0274 !
; 0275 ! 1.63 L. Webber, 17-Feb-82
; 0276 ! Fix UNREACH in RCVPH2 to log a packet header using a pointer to the
; 0277 ! beginning of the header, not the pointer used to scan it.
; 0278 !
; 0279 ! 1.64 L. Webber, 23-Feb-82
; 0280 ! Add maintenance of DLLquota.
; 0281 !
; 0282 ! 1.65 L. Webber, 24-Feb-82
; 0283 ! Fix bug in RCVECL that lost routing header buffers when a packet
; 0284 ! was discarded.
; 0285 !
; 0286 ! 1.66 L. Webber, 3-Mar-82
; 0287 ! Fix RCVPH2 to increment right circuit data base for Transit In's,
; 0288 ! when the output circuit is Phase III.
; 0289 !
; 0290 ! 1.67 L. Webber, 3-Mar-82
; 0291 ! Streamline the whole module somewhat. This mostly involves minor
; 0292 ! rearranging of code, but the following features have been deleted:
; 0293 !
; 0294 ! 1. Validating the source node address in RCVECL (it is assumed that
; 0295 ! NSP is a good guy).
; 0296 ! 2. Validating the output circuit in RCVECL (ditto).
; 0297 ! 3. Taking out the scan of the Node Translate Table in PH2HDR. This
; 0298 ! table is no longer generated anyway. Just in case, the code is
; 0299 ! only commented out.
; 0300 !
; 0301 ! 1.68 L. Webber, 19-Mar-82
; 0302 ! Fix a bug in UNREACH in RCVPH2 that misused the buffer pointer to
; 0303 ! packets received without routing headers, resulting in invalid DC's
; 0304 ! being sent.
; 0305 ! Change code in the same module that threw away a packet with an invalid
; 0306 ! routing header. The new code tries to DC the packet as best it can.
; 0307 ! (It also takes less space.)
; 0308 !
; 0309 ! 1.69 A. Peckham, 19-Apr-82
; 0310 ! Eliminate calls to LOG_EVENT, GETNODE, GETLINE, PKTB_HDR.
; 0311 ! PKTA_HDR has gone to XPE.
; 0312 ! Make calls to $CDBV and $CBDMG regular linkages again
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 7
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (1)
; 0313 ! and rename them to CDTB and CBTD respectively.
; 0314 !
; 0315 ! 1.70 A. Peckham, 14-Jun-82
; 0316 ! Fix UNREACH in RCVPH2 to log PACKET HEADER parameter
; 0317 ! for all errors except for $XPT$E_FMT.
; 0318 !
; 0319 ! 1.71 A. Peckham, 2-Jul-82
; 0320 ! Rename INTERCEPT to INTPH2.
; 0321 !
; 0322 ! 1.72 D.Brannon, 22-Sep-83
; 0323 ! Moved TERMINATE in the VISITS check in MAINLINE to
; 0324 ! after the references to the CCB to avoid a race.
; 0325 !
; 0326 ! 1.73 D.Brannon, 23-Sep-83
; 0327 ! Add a check in PH2HDR for a zero length destination name.
; 0328 !
; 0329 !--
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 8
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (2)
; 0330
; 0331 !
; 0332 ! TABLE OF CONTENTS
; 0333 !
; 0334
; 0335 forward routine
; 0336 RCVECL,
; 0337 RCVDAT: novalue,
; 0338 RCVPH2: novalue,
; 0339 BLDPH2,
; 0340 BLDPH3,
; 0341 PH2HDR;
; 0342
; 0343 !
; 0344 ! INCLUDE FILES:
; 0345 !
; 0346
; 0347 require 'XPTMAC';
; 0445
; 0446 !
; 0447 ! MACROS:
; 0448 !
; 0449
; M 0450 macro GETBUF(len,ccb) =
; M 0451 BEGIN
; M 0452 MAP CCB: REF BLOCK FIELD (C_XPT_FIELDS);
; M 0453 IF $MCB_GET_BUFFER (len,ccb[C_ADDR]) THEN BEGIN
; M 0454 SMAP$(ccb[C_BIAS]);
; M 0455 ccb[C_XPT_ALLOCATION] = len;
; M 0456 TRUE
; M 0457 END
; M 0458 ELSE FALSE
; 0459 end%;
; 0460
; 0461 !
; 0462 ! EQUATED SYMBOLS:
; 0463 !
; 0464
; 0465 !
; 0466 ! OWN STORAGE:
; 0467 !
; 0468
; 0469 !
; 0470 ! EXTERNAL REFERENCES:
; 0471 !
; 0472
; 0473 external routine
; 0474 FORWARDER,
; 0475 ECLFWD,
; 0476 CDTB,
; 0477 CBTD,
; 0478 RE_QUEUE: novalue,
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 9
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (2)
; 0479 TERMINATE: novalue,
; 0480 UNSPAWN: novalue;
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 10
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
; 0481
; 0482 global
; 0483 routine RCVECL (CCB_P) =
; 0484
; 0485 !++
; 0486 ! FUNCTIONAL DESCRIPTION:
; 0487 !
; 0488 ! This routine processes data packets received from a local Transport
; 0489 ! user. It determines the output line (or local Transport user) corresponding
; 0490 ! to the specified destination, and attempts to forward the packet to that
; 0491 ! destination. If the destination is unreachable, it will attempt to return
; 0492 ! the packet to the source Transport user. If the packet is returned to
; 0493 ! sender, or if a congestion or resource error occurs during processing of the
; 0494 ! packet, the function CCB is returned to the caller with an error.
; 0495 !
; 0496 ! FORMAL PARAMETERS
; 0497 !
; 0498 ! CCB_P - address of the function CCB, which points to the
; 0499 ! packet to be transmitted.
; 0500 !
; 0501 ! IMPLICIT INPUTS
; 0502 !
; 0503 ! CB[C_PRM1] - source address
; 0504 ! CB[C_PRM2] - destination node address
; 0505 ! CB[C_STS] - bit 0, if on, specifies that "return to sender" be
; 0506 ! set in the header
; 0507 ! CB[C_LIN] - channel to send the packet on, or 0 if Select is to
; 0508 ! determine the channel
; 0509 !
; 0510 ! ROUTINE VALUE: A "success" code, or one of several "failure" codes
; 0511 ! COMPLETION CODES:
; 0512 !
; 0513 ! CS_SUC - success
; 0514 ! CE_DIS - destination unreachable; packet will be separately returned
; 0515 ! to sender if so requested
; 0516 ! CE_RTE - packet rejected for because of congestion or resource failure
; 0517 ! CE_NTE - source Transport user has not issued an OPEN to Transport
; 0518 ! CE_ERR - invalid parameter specified
; 0519 !
; 0520 ! SIDE EFFECTS:
; 0521 !
; 0522 ! On a success return, Select has taken control of the
; 0523 ! CCB passed it; that CCB should not be used by the caller again.
; 0524 !
; 0525 !--
; 0526
; 0527 begin
; 0528
; 0529 local NODEb,LINEb;
; 0530 require 'XPTSYM';
; 0567 local CCB: ref block field (C_XPT_fields);
; 0568 map CCB_P: ref block field(C_fields);
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 11
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
; 0569 local OTYPE,OLINE,SOURCE,DEST,CALLER,RET;
; 0570
; 0571 !--------------------------------------------!
; 0572 ! !
; 0573 ! Routine to do "unreachability" processing !
; 0574 ! !
; 0575 !--------------------------------------------!
; 0576
; 0577 routine UNREACH (CB,CALLER,SOURCE,DEST) =
; 0578 begin
; 0579
; 0580 literal NO_NODEb = 0; ! Make sure NODEb isn't mapped
; 0581 literal NO_LINEb = 0; ! Ditto for LINEb
; 0582 require 'XPTSYM';
; 0619 map CB: ref block field(C_XPT_fields);
; 0620
; 0621 COUNTER_INCREMENT(XPTDB,XPTunreach_loss); ! Increment node counter
; 0622 $NM_LOG_BEGIN();
; 0623 PARAMETER_CM(0,4); ! Multiple fields, 4 of them
; 0624 PARAMETER_H_1(,uplit(2)); ! Hex field, 1 byte: (canned) routing flags
; 0625 PARAMETER_DU_2(,DEST); ! Decimal unsigned, 2 bytes: dest. address
; 0626 PARAMETER_DU_2(,SOURCE); ! Decimal unsigned, 2 bytes: source address
; 0627 PARAMETER_H_1(,uplit(0)); ! Hex field, 1 byte: (canned) forwarding flags
; 0628 $NM_LOG_END(4^6+$XPT$E_UNR,-1); ! "unreachability packet loss" event
; 0629 if .CB [C_XPT_ALLOCATION] neq 0 then ! Get rid of our CCB
; 0630 $MCB_RETURN_CCB_AND_BUFFER(.CB [C_XPT_ALLOCATION],.CB) ! (with or
; 0631 else $MCB_RETURN_CCB(.CB); ! without a buffer)
; 0632 return(CE_DIS) ! and return an error
; 0633
; 0634 end;
.TITLE XPTSEL
.IDENT /X01730/
000000 .PSECT $PLIT$, RO , D
000000 000002 P.AAA: .WORD 2
000002 000000 P.AAB: .WORD 0
.GLOBL FORWARDER, ECLFWD, CDTB, CBTD
.GLOBL RE.QUEUE, TERMINATE, UNSPAWN, .CRDAT
.GLOBL $NLBEG, $DPCM, $TPH1, $TPDU2, $NLEND
.GLOBL $CBBRT, $CCBRT
.SBTTL UNREACH
000000 .PSECT $CODE$, RO
000000 004167 000000G ; UNREACH
U.11: JSR R1,$SAVE4 ; 0577
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 12
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
000004 016700 000002G MOV U.9,R0 ; 0621
000010 062700 000136 ADD #136,R0
000014 005210 INC (R0)
000016 001001 BNE 1$
000020 005310 DEC (R0)
000022 004767 000000G 1$: JSR PC,$NLBEG ; 0622
000026 005046 CLR -(SP) ; 0623
000030 012700 000004 MOV #4,R0
000034 004767 000000G JSR PC,$DPCM
000040 116700 000000' MOVB P.AAA,R0 ; 0624
000044 004767 000000G JSR PC,$TPH1
000050 016600 000016 MOV 16(SP),R0 ; DEST,* 0625
000054 004767 000000G JSR PC,$TPDU2
000060 016600 000020 MOV 20(SP),R0 ; SOURCE,* 0626
000064 004767 000000G JSR PC,$TPDU2
000070 116700 000002' MOVB P.AAB,R0 ; 0627
000074 004767 000000G JSR PC,$TPH1
000100 012700 000401 MOV #401,R0 ; 0628
000104 012701 177777 MOV #-1,R1
000110 004767 000000G JSR PC,$NLEND
000114 016604 000024 MOV 24(SP),R4 ; CB,* 0629
000120 016401 000034 MOV 34(R4),R1
000124 001403 BEQ 2$
000126 004767 000000G JSR PC,$CBBRT ; 0630
000132 000402 BR 3$ ; 0629
000134 004767 000000G 2$: JSR PC,$CCBRT ; 0631
000140 005726 3$: TST (SP)+ ; 0577
000142 012700 177520 MOV #-260,R0 ; 0578
000146 000207 RTS PC ; 0577
; Routine Size: 52 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 7 words
; 0635
; 0636
; 0637 !****************** START OF ROUTINE MAINLINE **************************!
; 0638
; 0639
; 0640 !
; 0641 ! Pick up the parameters and validate them
; 0642 !
; 0643
; 0644 CCB = .CCB_P;
; 0645 DEST = .CCB[C_PRM2]; ! Pick up the destination address
; 0646 NODEb = $XPT_GET_NODE_DB(.DEST); ! and address its data base entry
; 0647 if .NODEb eql 0 then ! Invalid destination -
; 0648 return (CE_ERR); ! return "parameter error"
; 0649 SOURCE = .CCB[C_PRM1]; ! Pick up the source address
; 0650 OLINE = .CCB[C_LIN]; ! Pick up the output line
; 0651 CALLER = .CCB[C_PIX]; ! Pick up Transport user's PDV index
; 0652
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 13
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
; 0653 !
; 0654 ! Determine the output line
; 0655 !
; 0656
; 0657 if .OLINE eql 0 ! Line not specified - default
; 0658 then if not .Local_node
; 0659 then OLINE = .OL;
; 0660
; 0661 !
; 0662 ! Spawn a CCB
; 0663 !
; 0664
; 0665 if not $MCB_GET_CCB (CCB)
; 0666 then return (CE_RTE);
; 0667 CCB [C_XPT_ALLOCATION] = 0;
; 0668
; 0669 if .OLINE eql 0 then
; 0670 begin ! Local link:
; 0671 local TMPCCB: ref block field (C_FIELDS), BUFSIZE;
; 0672 TMPCCB = .CCB_P; ! Trace through the input CCB chain
; 0673 BUFSIZE = 0;
; 0674 do ! and accumulate message length
; 0675 BUFSIZE = .BUFSIZE + .TMPCCB[C_CNT]
; 0676 while (TMPCCB = .TMPCCB[C_CHN]) neqa 0;
; 0677 if not GETBUF(.BUFSIZE,CCB) ! Get a buffer that size
; 0678 then begin ! and if failure
; 0679 $MCB_RETURN_CCB(.CCB); ! then return CCB
; 0680 return (CE_RTE); ! and "resource error"
; 0681 end;
; 0682 end; ! Not local link - just get the CCB
; 0683
; 0684 if .OLINE neq 0 then !If the path isn't local,
; 0685 CCB[C_STK] = .CCB_P; ! chain in the pass-through CCB
; 0686 CCB[C_PRM4] = 0;
; 0687
; 0688 !
; 0689 ! Check destination for unreachability
; 0690 !
; 0691
; 0692 LINEb = $XPT_GET_LINE_DB(.OLINE);
; 0693 if (not .Reach !Destination
; 0694 or ((.OLINE neq 0) and (.LINEstate neq RU))) then! unreachable:
; 0695 return (UNREACH(.CCB,.CALLER,.SOURCE, ! do "unreachability"
; 0696 .DEST)); ! processing
; 0697
; 0698 !
; 0699 ! Destination is local
; 0700 !
; 0701
; 0702 RET %(the return from Forwarding)% =
; 0703
; 0704 (if .OLINE eql 0 then
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 14
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
; 0705 if .Local_node then begin
; 0706 OTYPE = 0; !Set output type to "local"
; 0707 CCB[C_CNT] = !Copy the data
; P 0708 $MCB_COPY_CHAIN_TO_BUFFER(.CCB_P, ! into the single
; 0709 (.CCB[C_BIAS],.CCB[C_ADDR])); ! data buffer
; 0710 CCB[C_LIX] = 0; !Input channel is null
; 0711 if (ECLFWD(.CCB,.SOURCE,.DEST,0) !Try to forward the packet
; 0712 neq CS_SUC) then ! to the specified user
; P 0713 return ($MCB_RETURN_CCB_AND_BUFFER !Failed -
; 0714 (.CCB[C_PRM5],.CCB); CE_RTE) ! set error code
; 0715 else begin !Worked -
; 0716 TERMINATE(.CCB_P,CS_SUC); ! return the input
; 0717 INPUTquota = .INPUTquota - 1; ! buffer (but don't
; 0718 CS_SUC ! return the admission
; 0719 end ! permit)
; 0720 end
; 0721 else SIGNAL_STOP (CE_ERR) !Output line = 0, destination not Self
; 0722
; 0723 !
; 0724 ! Adjacent node is Phase II
; 0725 !
; 0726
; 0727 else begin
; 0728 LINEb = $XPT_GET_LINE_DB(.OLINE);
; 0729 if ((.Nty eql PhTwo) or (.Nty eql TOPS20)) then begin
; 0730 if .Nty eql PhTwo then !Set output type to
; 0731 OTYPE = 1 ! "Phase II" or
; 0732 else OTYPE = 2; ! "Phase II+/Phase III"
; 0733 RET =
; 0734 (if (.Nid neq .DEST) then !Destination isn't adjacent -
; 0735 SIGNAL_STOP (CE_ERR) ! bomb
; 0736 else BLDPH2(.CCB,0,.DEST, !Otherwise, build a
; 0737 .SOURCE,.OLINE,0)); ! Phase II header
; 0738 end
; 0739
; 0740 !
; 0741 ! Adjacent node is Phase III - build a Phase III header
; 0742 !
; 0743
; 0744 else begin
; 0745 OTYPE = 2; !Set output type to "Phase II+/III"
; 0746 RET = BLDPH3 (.CCB,0,.DEST,.Tid,0);
; 0747 end;
; 0748
; 0749 !
; 0750 ! Error in building the header - return an error
; 0751 !
; 0752
; 0753 if .RET neq CS_SUC then return (CCBRT$(.CCB); .RET)
; 0754
; 0755 !
; 0756 ! Message is ready to be sent - give it to Forwarding
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 15
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
; 0757 !
; 0758
; 0759 else begin
; 0760 if ((RET = FORWARDER(.CCB,.OLINE))
; 0761 eql CS_SUC) then ! If Forwarding accepts packet,
; 0762 COUNTER_INCREMENT(LINEb,XPTend_xmt);! update packets counter
; 0763 .RET
; 0764 end
; 0765 end);
; 0766
; 0767 !
; 0768 ! Forwarding rejected packet as "unreachable"
; 0769 !
; 0770
; 0771 if .RET eql CE_DIS then
; 0772 UNREACH (.CCB,.CALLER,.SOURCE,.DEST)
; 0773
; 0774 !
; 0775 ! Forwarding rejected packet for congestion reasons
; 0776 !
; 0777
; 0778 else if .RET eql CE_RTE then begin
; 0779 if .CCB [C_XPT_ALLOCATION] neq 0 then
; 0780 $MCB_RETURN_CCB_AND_BUFFER(.CCB [C_XPT_ALLOCATION],.CCB)
; 0781 else $MCB_RETURN_CCB(.CCB);
; 0782 CE_RTE
; 0783 end
; 0784
; 0785 !
; 0786 ! Forwarding accepted packet - return "success"
; 0787 !
; 0788
; 0789 else begin
; 0790 if .OTYPE eql 1 then !Going to a Phase II node -
; P 0791 CALL$E(INTPH2,PD_XPE,.CCB_P,1, ! do intercept
; 0792 DEST,SOURCE); ! processing
; 0793 CS_SUC
; 0794 end
; 0795
; 0796 end; !End of RCVECL
.GLOBL GTNODE, $CCBGT, $CORGT, KISAR6
.GLOBL GTLINE, $CPTBF, $IC32, INTPH2
.GLOBL $CALLE
.SBTTL RCVECL
000000 004167 000000G RCVECL::
U.1: JSR R1,$SAVE5 ; 0483
000004 162706 000014 SUB #14,SP
000010 016646 000032 MOV 32(SP),-(SP) ; CCB.P,* 0644
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 16
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
000014 011646 MOV (SP),-(SP) ; *,CCB
000016 011600 MOV (SP),R0 ; CCB,* 0645
000020 016066 000026 000014 MOV 26(R0),14(SP) ; *(CCB),DEST
000026 016666 000014 000010 MOV 14(SP),10(SP) ; DEST,* 0646
000034 016600 000010 MOV 10(SP),R0
000040 004767 000000G JSR PC,GTNODE
000044 010002 MOV R0,R2 ; *,NODEB
000046 001003 BNE 1$ ; 0647
000050 012700 177760 MOV #-20,R0 ; 0648
000054 000534 BR 8$
000056 011600 1$: MOV (SP),R0 ; CCB,* 0649
000060 016066 000024 000016 MOV 24(R0),16(SP) ; *(CCB),SOURCE
000066 005003 CLR R3 ; OLINE 0650
000070 156003 000010 BISB 10(R0),R3 ; *(CCB),OLINE
000074 116066 000011 000012 MOVB 11(R0),12(SP) ; *(CCB),CALLER 0651
000102 105066 000013 CLRB 13(SP) ; CALLER
000106 005703 TST R3 ; OLINE 0657
000110 001004 BNE 2$
000112 032712 000400 BIT #400,(R2) ; *,NODEB 0658
000116 001001 BNE 2$
000120 111203 MOVB (R2),R3 ; NODEB,OLINE 0659
000122 004767 000000G 2$: JSR PC,$CCBGT ; 0665
000126 103563 BCS 10$
000130 010416 MOV R4,(SP) ; $MCB$R4,CCB
000132 012700 000034 MOV #34,R0 ; 0667
000136 060400 ADD R4,R0 ; CCB,*
000140 010066 000006 MOV R0,6(SP)
000144 005010 CLR (R0)
000146 005066 000004 CLR 4(SP) ; 0669
000152 005703 TST R3 ; OLINE
000154 001033 BNE 5$
000156 005266 000004 INC 4(SP)
000162 016600 000002 MOV 2(SP),R0 ; *,TMPCCB 0672
000166 005001 CLR R1 ; BUFSIZE 0673
000170 066001 000022 3$: ADD 22(R0),R1 ; *(TMPCCB),BUFSIZE 0675
000174 016000 000002 MOV 2(R0),R0 ; *(TMPCCB),TMPCCB 0676
000200 001373 BNE 3$
000202 004767 000000G JSR PC,$CORGT ; 0677
000206 103412 BCS 4$
000210 011604 MOV (SP),R4 ; CCB,*
000212 010064 000020 MOV R0,20(R4) ; $MCB$R0,*(CCB)
000216 010400 MOV R4,R0 ; CCB,*
000220 016760 000000G 000016 MOV KISAR6,16(R0) ; *,*(CCB)
000226 010176 000006 MOV R1,@6(SP) ; BUFSIZE,*
000232 000404 BR 5$
000234 011604 4$: MOV (SP),R4 ; CCB,* 0679
000236 004767 000000G JSR PC,$CCBRT
000242 000515 BR 10$ ; 0678
000244 005001 5$: CLR R1 ; 0684
000246 005703 TST R3 ; OLINE
000250 001405 BEQ 6$
000252 005201 INC R1
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 17
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
000254 011600 MOV (SP),R0 ; CCB,* 0685
000256 016660 000002 000004 MOV 2(SP),4(R0) ; *,*(CCB)
000264 011600 6$: MOV (SP),R0 ; CCB,* 0686
000266 005060 000032 CLR 32(R0) ; *(CCB)
000272 010300 MOV R3,R0 ; OLINE,* 0692
000274 004767 000000G JSR PC,GTLINE
000300 010005 MOV R0,R5 ; *,LINEB
000302 005712 TST (R2) ; NODEB 0693
000304 100005 BPL 7$
000306 006001 ROR R1 ; 0694
000310 103017 BCC 9$
000312 121527 000010 CMPB (R5),#10 ; LINEB,*
000316 001414 BEQ 9$
000320 011646 7$: MOV (SP),-(SP) ; CCB,* 0695
000322 016646 000014 MOV 14(SP),-(SP) ; CALLER,*
000326 016646 000022 MOV 22(SP),-(SP) ; SOURCE,*
000332 016646 000016 MOV 16(SP),-(SP)
000336 004767 177266 JSR PC,U.11
000342 062706 000010 ADD #10,SP
000346 000455 8$: BR 11$
000350 032766 000001 000004 9$: BIT #1,4(SP) ; 0704
000356 001500 BEQ 14$
000360 032712 000400 BIT #400,(R2) ; *,NODEB 0705
000364 001465 BEQ 13$
000366 005002 CLR R2 ; OTYPE 0706
000370 011600 MOV (SP),R0 ; CCB,* 0709
000372 016046 000016 MOV 16(R0),-(SP) ; *(CCB),*
000376 016046 000020 MOV 20(R0),-(SP) ; *(CCB),*
000402 016604 000006 MOV 6(SP),R4
000406 004767 000000G JSR PC,$CPTBF
000412 016601 000004 MOV 4(SP),R1 ; CCB,* 0707
000416 010061 000022 MOV R0,22(R1) ; *,*(CCB)
000422 010100 MOV R1,R0 ; CCB,* 0710
000424 105060 000010 CLRB 10(R0) ; *(CCB)
000430 010116 MOV R1,(SP) ; CCB,* 0711
000432 016646 000022 MOV 22(SP),-(SP) ; SOURCE,*
000436 016646 000016 MOV 16(SP),-(SP)
000442 005046 CLR -(SP)
000444 004767 000000G JSR PC,ECLFWD
000450 062706 000006 ADD #6,SP
000454 005300 DEC R0
000456 001412 BEQ 12$
000460 017601 000012 MOV @12(SP),R1 ; 0714
000464 016604 000004 MOV 4(SP),R4 ; CCB,*
000470 004767 000000G JSR PC,$CBBRT
000474 022626 CMP (SP)+,(SP)+ ; 0713
000476 012700 177730 10$: MOV #-50,R0
000502 000536 11$: BR 23$
000504 016616 000006 12$: MOV 6(SP),(SP) ; 0716
000510 012746 000001 MOV #1,-(SP)
000514 004767 000000G JSR PC,TERMINATE
000520 016700 000002G MOV .CRDAT+2,R0
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 18
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
000524 105360 000104 DECB 104(R0) ; 0717
000530 005726 TST (SP)+ ; 0715
000532 012701 000001 MOV #1,R1 ; *,RET 0711
000536 000537 BR 25$ ; 0705
000540 012746 177760 13$: MOV #-20,-(SP) ; 0721
000544 012746 000001 MOV #1,-(SP)
000550 004767 000000G JSR PC,$STOP
000554 010001 MOV R0,R1 ; *,RET 0705
000556 000527 BR 25$ ; 0704
000560 010300 14$: MOV R3,R0 ; OLINE,* 0728
000562 004767 000000G JSR PC,GTLINE
000566 010005 MOV R0,R5 ; *,LINEB
000570 005000 CLR R0 ; 0729
000572 126527 000002 000004 CMPB 2(R5),#4 ; *(LINEB),*
000600 001002 BNE 15$
000602 005200 INC R0
000604 000404 BR 16$
000606 126527 000002 000005 15$: CMPB 2(R5),#5 ; *(LINEB),*
000614 001040 BNE 21$
000616 006000 16$: ROR R0 ; 0730
000620 103003 BCC 17$
000622 012702 000001 MOV #1,R2 ; *,OTYPE 0731
000626 000402 BR 18$ ; 0730
000630 012702 000002 17$: MOV #2,R2 ; *,OTYPE 0732
000634 026566 000004 000010 18$: CMP 4(R5),10(SP) ; *(LINEB),* 0734
000642 001407 BEQ 19$
000644 012746 177760 MOV #-20,-(SP) ; 0735
000650 012746 000001 MOV #1,-(SP)
000654 004767 000000G JSR PC,$STOP
000660 000414 BR 20$ ; 0734
000662 011646 19$: MOV (SP),-(SP) ; CCB,* 0736
000664 005046 CLR -(SP)
000666 016646 000014 MOV 14(SP),-(SP)
000672 016646 000024 MOV 24(SP),-(SP) ; SOURCE,*
000676 010346 MOV R3,-(SP) ; OLINE,*
000700 005046 CLR -(SP)
000702 004767 000000V JSR PC,U.4
000706 062706 000010 ADD #10,SP
000712 010001 20$: MOV R0,R1 ; *,RET 0734
000714 000420 BR 22$ ; 0729
000716 012702 000002 21$: MOV #2,R2 ; *,OTYPE 0745
000722 011646 MOV (SP),-(SP) ; CCB,* 0746
000724 005046 CLR -(SP)
000726 016646 000014 MOV 14(SP),-(SP)
000732 016700 000002G MOV .CRDAT+2,R0
000736 016046 000056 MOV 56(R0),-(SP)
000742 005046 CLR -(SP)
000744 004767 000000V JSR PC,U.5
000750 010001 MOV R0,R1 ; *,RET
000752 062706 000006 ADD #6,SP ; 0744
000756 020127 000001 22$: CMP R1,#1 ; RET,* 0753
000762 001407 BEQ 24$
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 19
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
000764 016604 000004 MOV 4(SP),R4 ; CCB,*
000770 004767 000000G JSR PC,$CCBRT
000774 022626 CMP (SP)+,(SP)+
000776 010100 MOV R1,R0 ; RET,*
001000 000516 23$: BR 32$
001002 016616 000004 24$: MOV 4(SP),(SP) ; CCB,* 0760
001006 010346 MOV R3,-(SP) ; OLINE,*
001010 004767 000000G JSR PC,FORWARDER
001014 005726 TST (SP)+
001016 010001 MOV R0,R1 ; *,RET
001020 005300 DEC R0
001022 001005 BNE 25$
001024 010500 MOV R5,R0 ; LINEB,* 0762
001026 062700 000062 ADD #62,R0
001032 004767 000000G JSR PC,$IC32
001036 020127 177520 25$: CMP R1,#-260 ; RET,* 0771
001042 001015 BNE 26$
001044 016616 000004 MOV 4(SP),(SP) ; CCB,* 0772
001050 016646 000016 MOV 16(SP),-(SP) ; CALLER,*
001054 016646 000024 MOV 24(SP),-(SP) ; SOURCE,*
001060 016646 000020 MOV 20(SP),-(SP)
001064 004767 176540 JSR PC,U.11
001070 062706 000006 ADD #6,SP
001074 000457 BR 31$ ; 0771
001076 020127 177730 26$: CMP R1,#-50 ; RET,* 0778
001102 001021 BNE 29$
001104 005776 000012 TST @12(SP) ; 0779
001110 001407 BEQ 27$
001112 017601 000012 MOV @12(SP),R1 ; 0780
001116 016604 000004 MOV 4(SP),R4 ; CCB,*
001122 004767 000000G JSR PC,$CBBRT
001126 000404 BR 28$ ; 0779
001130 016604 000004 27$: MOV 4(SP),R4 ; CCB,* 0781
001134 004767 000000G JSR PC,$CCBRT
001140 012700 177730 28$: MOV #-50,R0 ; 0778
001144 000433 BR 31$
001146 005302 29$: DEC R2 ; OTYPE 0790
001150 001027 BNE 30$
001152 012716 000022 MOV #22,(SP) ; 0792
001156 060616 ADD SP,(SP) ; SOURCE,*
001160 012746 000022 MOV #22,-(SP)
001164 060616 ADD SP,(SP) ; DEST,*
001166 012746 000001 MOV #1,-(SP)
001172 016646 000012 MOV 12(SP),-(SP)
001176 012746 000004 MOV #4,-(SP)
001202 012746 000000G MOV #INTPH2,-(SP)
001206 016700 000002G MOV .CRDAT+2,R0
001212 005046 CLR -(SP)
001214 116016 000002 MOVB 2(R0),(SP)
001220 004767 000000G JSR PC,$CALLE
001224 062706 000014 ADD #14,SP
001230 012700 000001 30$: MOV #1,R0 ; 0778
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 20
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (3)
001234 022626 31$: CMP (SP)+,(SP)+ ; 0527
001236 062706 000020 32$: ADD #20,SP ; 0483
001242 000207 RTS PC
; Routine Size: 338 words, Routine Base: $CODE$ + 0150
; Maximum stack depth per invocation: 23 words
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 21
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
; 0797
; 0798 global
; 0799 routine RCVDAT (CCB_P): novalue =
; 0800
; 0801 !++
; 0802 ! FUNCTIONAL DESCRIPTION:
; 0803 !
; 0804 ! This routine processes data packets received from the Data Link
; 0805 ! Link Layer which have Phase III routing headers. It determines
; 0806 ! the output line (or local Transport user) corresponding to the
; 0807 ! specified destination, and attempts to forward the packet to that
; 0808 ! destination. If the destination is unreachable, the routine will
; 0809 ! try to return the packet to its source node. If the immediate
; 0810 ! destination (the adjacent node on the output line) is Phase II,
; 0811 ! BLDPH2 will be called to translate the routing header. If the
; 0812 ! destination is "standard" Phase II, the packet will not be thrown
; 0813 ! away on congestion or resource failure, but will be queued for
; 0814 ! eventual reprocessing.
; 0815 !
; 0816 ! FORMAL PARAMETERS
; 0817 !
; 0818 ! CCB_P - CCB for the received packet - the "pass-through" CCB
; 0819 !
; 0820 ! IMPLICIT INPUTS
; 0821 !
; 0822 ! Reach, OL, Nty, Nid, User
; 0823 !
; 0824 ! ROUTINE VALUE: NONE
; 0825 ! COMPLETION CODES:
; 0826 !
; 0827 ! NONE.
; 0828 !
; 0829 ! SIDE EFFECTS:
; 0830 !
; 0831 ! May modify the routing header in the pass-through buffer.
; 0832 !
; 0833 !--
; 0834
; 0835 begin
; 0836
; 0837 local NODEb,LINEb;
; 0838 require 'XPTSYM';
; 0875 local CCB: ref block field (C_XPT_fields);
; 0876 map CCB_P: ref block field(C_fields);
; 0877 local DEST,SOURCE,ILINE,OLINE,RET,RFLG,VISIT;
; 0878 pointer PTR;
; 0879 macro RTS = biton (.RFLG,RTSflg)%;
; 0880 macro RQR = biton (.RFLG,RQRflg)%;
; 0881
; 0882
; 0883 !-----------------------------------------------------!
; 0884 ! !
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 22
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
; 0885 ! Routine to either throw away a packet or queue it !
; 0886 ! for eventual reprocessing !
; 0887 ! !
; 0888 !-----------------------------------------------------!
; 0889
; 0890 routine TOSS (CCB,OLINE,ILINE,DEST): novalue =
; 0891 begin
; 0892
; 0893 local LINEb;
; 0894 literal NO_NODEb = 0; !This is to get around a BLISS glitch
; 0895 require 'XPTSYM';
; 0932
; 0933 LINEb = $XPT_GET_LINE_DB(.OLINE); ! Address line data base entry
; 0934 if ((.OLINE neq 0) ! If the destination isn't local,
; 0935 and (.Nty eql PhTwo) ! and it's standard Phase II
; 0936 and (.Nid eql .DEST)) ! and it's the adjacent node
; 0937 then RE_QUEUE(.CCB) ! then requeue CCB for later
; 0938 else begin !
; 0939 if .OLINE neq 0 then ! Transit congestion -
; 0940 COUNTER_INCREMENT(LINEb,XPTxit_cng)! log that
; 0941 else begin ! Path-end congestion -
; 0942 LINEb = $XPT_GET_LINE_DB(.ILINE); ! Log that (on
; 0943 COUNTER_INCREMENT(LINEb,XPTend_cng); ! the input line)
; 0944 end;
; 0945 TERMINATE(.CCB,CE_RTE); !Otherwise, throw buffer away
; 0946 end;
; 0947
; 0948 end;
.SBTTL TOSS
000000 010146 ; TOSS
U.19: MOV R1,-(SP) ; 0890
000002 016600 000010 MOV 10(SP),R0 ; OLINE,* 0933
000006 004767 000000G JSR PC,GTLINE
000012 010001 MOV R0,R1 ; *,LINEB
000014 005000 CLR R0 ; 0934
000016 005766 000010 TST 10(SP) ; OLINE
000022 001416 BEQ 1$
000024 005200 INC R0
000026 126127 000002 000004 CMPB 2(R1),#4 ; *(LINEB),* 0935
000034 001011 BNE 1$
000036 026166 000004 000004 CMP 4(R1),4(SP) ; *(LINEB),DEST 0936
000044 001005 BNE 1$
000046 016646 000012 MOV 12(SP),-(SP) ; CCB,* 0937
000052 004767 000000G JSR PC,RE.QUEUE
000056 000432 BR 5$ ; 0934
000060 006000 1$: ROR R0 ; 0939
000062 103006 BCC 2$
000064 012700 000100 MOV #100,R0 ; 0940
000070 060100 ADD R1,R0 ; LINEB,*
000072 005210 INC (R0)
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 23
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
000074 001014 BNE 4$
000076 000412 BR 3$
000100 016600 000006 2$: MOV 6(SP),R0 ; ILINE,* 0942
000104 004767 000000G JSR PC,GTLINE
000110 010001 MOV R0,R1 ; *,LINEB
000112 012700 000066 MOV #66,R0 ; 0943
000116 060100 ADD R1,R0 ; LINEB,*
000120 005210 INC (R0)
000122 001001 BNE 4$
000124 005310 3$: DEC (R0)
000126 016646 000012 4$: MOV 12(SP),-(SP) ; CCB,* 0945
000132 012746 177730 MOV #-50,-(SP)
000136 004767 000000G JSR PC,TERMINATE
000142 005726 TST (SP)+ ; 0938
000144 005726 5$: TST (SP)+ ; 0891
000146 012601 MOV (SP)+,R1 ; 0890
000150 000207 RTS PC
; Routine Size: 53 words, Routine Base: $CODE$ + 1414
; Maximum stack depth per invocation: 4 words
; 0949
; 0950
; 0951
; 0952 !---------------------------------------------!
; 0953 ! !
; 0954 ! Routine to do "unreachability" processing !
; 0955 ! !
; 0956 !---------------------------------------------!
; 0957
; 0958 routine UNREACH (CCB,CCB_P,SOURCE,DEST,RFLG,CODE): novalue =
; 0959 begin
; 0960
; 0961 literal NO_NODEb = 0; ! To keep NODEb from being mapped
; 0962 local LINEb;
; 0963 require 'XPTSYM';
; 1000 map CCB: ref block field(C_FIELDS);
; 1001 map CCB_P: ref block field(C_FIELDS);
; 1002
; 1003 pointer PTR;
; 1004
; 1005 LINEb = $XPT_GET_LINE_DB(.CCB_P[C_LIX]); ! Address input line data base
; 1006 if .CODE eql $XPT$E_UNR then ! Increment
; 1007 COUNTER_INCREMENT(XPTDB,XPTunreach_loss) ! appropriate
; 1008 else COUNTER_INCREMENT(XPTDB,XPTrange_loss); ! node counter
; 1009 $NM_LOG_BEGIN();
; 1010 CALL$E(PKTA_HDR,(PD_XPE),.CCB_P[C_ADDR]); ! Log an "unreachable node" or
; 1011 $NM_LOG_END(4^6+.CODE,.NMXid); ! "node out of range" event
; 1012 if ((RQR) and (not (RTS))) then begin ! Valid "return to sender" -
; 1013 CCB[C_BIAS] = .CCB_P[C_BIAS]; ! Copy routing
; 1014 CCB[C_ADDR] = .CCB_P[C_ADDR]; ! header into
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 24
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
; 1015 CCB[C_CNT] = .CCB_P[C_CNT]; ! the spawned CCB
; 1016 PTR = .CCB[C_ADDR]; ! Address the routing header
; 1017 putb (.RFLG or RTSflg, PTR); ! Set the RTS flag
; 1018 putw (.SOURCE,PTR); ! Exchange the source
; 1019 putw (.DEST,PTR); ! and destination addresses
; 1020 if FORWARDER(.CCB,.CCB_P[C_LIN]) ! Send back over input line
; 1021 neq CS_SUC then ! Rejected -
; 1022 TERMINATE(.CCB,CE_DIS); ! throw away
; 1023 end
; 1024 else TERMINATE(.CCB,CE_DIS); ! No "return to sender" - throw away
; 1025 return;
; 1026 end;
.GLOBL $IC8, PKTA.HDR
.SBTTL UNREACH
000000 004167 000000G ; UNREACH
U.22: JSR R1,$SAVE4 ; 0958
000004 005746 TST -(SP)
000006 016603 000026 MOV 26(SP),R3 ; CCB.P,* 1005
000012 005000 CLR R0
000014 156300 000010 BISB 10(R3),R0
000020 004767 000000G JSR PC,GTLINE
000024 010002 MOV R0,R2 ; *,LINEB
000026 026627 000016 000001 CMP 16(SP),#1 ; CODE,* 1006
000034 001010 BNE 1$
000036 016700 000002G MOV .CRDAT+2,R0 ; 1007
000042 062700 000136 ADD #136,R0
000046 005210 INC (R0)
000050 001010 BNE 2$
000052 005310 DEC (R0)
000054 000406 BR 2$ ; 1006
000056 016700 000002G 1$: MOV .CRDAT+2,R0 ; 1008
000062 062700 000131 ADD #131,R0
000066 004767 000000G JSR PC,$IC8
000072 004767 000000G 2$: JSR PC,$NLBEG ; 1009
000076 016346 000020 MOV 20(R3),-(SP) ; 1010
000102 012746 000001 MOV #1,-(SP)
000106 012746 000000G MOV #PKTA.HDR,-(SP)
000112 016700 000002G MOV .CRDAT+2,R0
000116 005046 CLR -(SP)
000120 116016 000002 MOVB 2(R0),(SP)
000124 004767 000000G JSR PC,$CALLE
000130 016600 000026 MOV 26(SP),R0 ; CODE,* 1011
000134 062700 000400 ADD #400,R0
000140 016201 000034 MOV 34(R2),R1 ; *(LINEB),*
000144 004767 000000G JSR PC,$NLEND
000150 016602 000040 MOV 40(SP),R2 ; CCB,* 1013
000154 016601 000030 MOV 30(SP),R1 ; RFLG,* 1012
000160 032701 000010 BIT #10,R1
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 25
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
000164 001451 BEQ 3$
000166 032701 000020 BIT #20,R1
000172 001046 BNE 3$
000174 016362 000016 000016 MOV 16(R3),16(R2) ; 1013
000202 016362 000020 000020 MOV 20(R3),20(R2) ; 1014
000210 016362 000022 000022 MOV 22(R3),22(R2) ; 1015
000216 016200 000020 MOV 20(R2),R0 ; *,PTR 1016
000222 010104 MOV R1,R4 ; 1017
000224 052704 000020 BIS #20,R4
000230 110420 MOVB R4,(R0)+ ; *,PTR
000232 016666 000034 000010 MOV 34(SP),10(SP) ; SOURCE,X 1018
000240 116620 000010 MOVB 10(SP),(R0)+ ; X,PTR
000244 116620 000011 MOVB 11(SP),(R0)+ ; X,PTR
000250 016666 000032 000010 MOV 32(SP),10(SP) ; DEST,X 1019
000256 116620 000010 MOVB 10(SP),(R0)+ ; X,PTR
000262 116620 000011 MOVB 11(SP),(R0)+ ; X,PTR
000266 010216 MOV R2,(SP) ; 1020
000270 005046 CLR -(SP)
000272 116316 000010 MOVB 10(R3),(SP)
000276 004767 000000G JSR PC,FORWARDER
000302 005726 TST (SP)+
000304 005300 DEC R0 ; 1021
000306 001406 BEQ 4$
000310 010216 3$: MOV R2,(SP) ; 1024
000312 012746 177520 MOV #-260,-(SP)
000316 004767 000000G JSR PC,TERMINATE
000322 005726 TST (SP)+
000324 062706 000012 4$: ADD #12,SP ; 0958
000330 000207 RTS PC
; Routine Size: 109 words, Routine Base: $CODE$ + 1566
; Maximum stack depth per invocation: 12 words
; 1027
; 1028
; 1029 !******************** START OF ROUTINE MAINLINE *************************!
; 1030
; 1031 !
; 1032 ! Analyze the routing header
; 1033 !
; 1034
; 1035 MAPBUF (.CCB_P,PTR); !Map in the buffer
; 1036 RFLG = getb(PTR); !Pick up the routing flags
; 1037 DEST = getw(PTR); !Pick up the destination address
; 1038 SOURCE = getw(PTR); !Pick up the source address
; 1039 VISIT = ch$rchar(.PTR); !Pick up the visits count
; 1040 VISIT = .VISIT+1;
; 1041 ch$wchar_a(.VISIT,PTR);
; 1042
; 1043 !
; 1044 ! Calculate the input and output lines
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 26
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
; 1045 !
; 1046
; 1047 NODEb = $XPT_GET_NODE_DB(.DEST); ! Get destination data base address
; 1048 OLINE = 0;
; 1049 if not .Local_node then OLINE = .OL;
; 1050 ILINE = .CCB_P[C_LIN];
; 1051 LINEb = $XPT_GET_LINE_DB(.ILINE); ! Address input line data base entry
; 1052
; 1053 !
; 1054 ! Check the VISITS field in the routing header
; 1055 !
; 1056
; 1057 if ((.VISIT gtru .MAXV) !Too many
; 1058 or ((RTS) and (.VISIT gtru (2*.MAXV)))) then ! visits -
; 1059 begin ! throw the
; 1060 ! packet away,
; 1061 COUNTER_INCREMENT(XPTDB,XPTaged_loss); ! bump "aged loss" and
; 1062 COUNTER_INCREMENT(LINEb,XPTxit_rcv); ! "transit packet"
; 1063 $NM_LOG_BEGIN(); ! "aged packet loss"
; 1064 CALL$E(PKTA_HDR,(PD_XPE),.CCB_P[C_ADDR]); ! event
; 1065 $NM_LOG_END(4^6+$XPT$E_AGE,-1); !
; 1066 TERMINATE(.CCB_P,CE_ERR);
; 1067 return;
; 1068 end;
; 1069
; 1070 !
; 1071 ! Spawn a CCB for the packet
; 1072 !
; 1073
; 1074 if not CCBGT$(CCB) then begin !Couldn't get
; 1075 TOSS(.CCB_P,.OLINE,.ILINE,.DEST); ! a CCB - get
; 1076 return; ! rid of packet
; 1077 end;
; 1078 CCB[C_STK] = .CCB_P; !Chain pass-through to spawned CCB
; 1079 CCB[C_PRM4] = 0;
; 1080
; 1081 !
; 1082 ! Destination is unreachable
; 1083 !
; 1084
; 1085 LINEb = $XPT_GET_LINE_DB(.OLINE);
; 1086 if not begin
; 1087 if .DEST gtru NN then (RET = $XPT$E_RNG; FALSE)
; 1088 else if (not .Reach
; 1089 or ((.OLINE neq 0) and (.LINEstate neq RU))) then
; 1090 (RET = $XPT$E_UNR; FALSE)
; 1091 else TRUE
; 1092 end
; 1093 then begin
; 1094 UNREACH(.CCB,.CCB_P,.SOURCE,.DEST,.RFLG,.RET);
; 1095 LINEb = $XPT_GET_LINE_DB(.ILINE);
; 1096 COUNTER_INCREMENT(LINEb,XPTxit_rcv);
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 27
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
; 1097 return
; 1098 end;
; 1099
; 1100 !
; 1101 ! Destination is Self
; 1102 !
; 1103
; 1104 if .OLINE eql 0 then
; 1105 if .Local_node then begin
; 1106 CCB[C_BIAS] = .CCB_P[C_BIAS]; !Copy buffer
; 1107 CCB[C_ADDR] = ch$plus(.CCB_P[C_ADDR],6); ! descriptor, incrementing
; 1108 CCB[C_CNT] = .CCB_P[C_CNT] - 6; ! past the routing header
; 1109 CCB[C_LIN] = .CCB_P[C_LIN]; !Set the line number
; 1110 LINEb = $XPT_GET_LINE_DB(.ILINE); ! Increment "arriving
; 1111 COUNTER_INCREMENT(LINEb,XPTend_rcv); ! packets" ctr
; 1112 if ECLFWD(.CCB,.SOURCE,.DEST,0) !Pass the buffer to Forwarding
; 1113 neq CS_SUC !Rejected -
; 1114 then TOSS(.CCB,.OLINE,.ILINE,.DEST); ! throw it away
; 1115 end
; 1116 else BPT(XPT$_DNS,.DEST) !Destination is not Self, but output line is 0
; 1117
; 1118 !
; 1119 ! Next node in path is Phase III
; 1120 !
; 1121
; 1122 else if ((.Nty eql Full)
; 1123 or (.Nty eql Small)) then begin
; 1124 CCB[C_BIAS] = .CCB_P[C_BIAS]; !Copy the
; 1125 CCB[C_ADDR] = .CCB_P[C_ADDR]; ! buffer descriptor
; 1126 CCB[C_CNT] = .CCB_P[C_CNT]; ! from the pass-through to the spawn
; 1127 LINEb = $XPT_GET_LINE_DB(.ILINE); !Increment "transit packet
; 1128 COUNTER_INCREMENT(LINEb,XPTxit_rcv);! received" counter
; 1129 LINEb = $XPT_GET_LINE_DB(.OLINE); !Address output line data base again
; 1130 RET = FORWARDER(.CCB,.OLINE); !Try to send the buffer out
; 1131 if .RET eql CE_DIS then !Rejected for unreachability -
; 1132 UNREACH(.CCB,.CCB_P,.SOURCE, ! do unreachablility
; 1133 .DEST,.RFLG,$XPT$E_UNR) ! processing
; 1134 else if .RET neq CS_SUC then !Rejected for congestion -
; 1135 TOSS(.CCB,.OLINE,.ILINE,.DEST) ! throw buffer away
; 1136 else COUNTER_INCREMENT(LINEb,XPTxit_xmt) ! Accepted - update packet counter
; 1137 end
; 1138
; 1139 !
; 1140 ! Destination is Phase II
; 1141 !
; 1142
; 1143 else if ((.Nty eql PhTwo)
; 1144 or (.Nty eql TOPS20)) then begin
; 1145 LINEb = $XPT_GET_LINE_DB(.ILINE); !Increment "transit packet
; 1146 COUNTER_INCREMENT(LINEb,XPTxit_rcv);! received" counter
; 1147 LINEb = $XPT_GET_LINE_DB(.OLINE); !Address output line data base
; 1148 if .Nid neq .DEST then begin !Destination is not adjacent -
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 28
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
; 1149 TERMINATE(.CCB,CE_DIS); ! throw buffer away
; 1150 return;
; 1151 end;
; 1152 RET = BLDPH2(.CCB,6,.DEST, !Translate routing header
; 1153 .SOURCE,.OLINE,.ILINE); ! to Phase II
; 1154 if .RET eql CE_RTE then begin !Resource failure -
; 1155 UNSPAWN(.CCB); ! get rid
; 1156 TOSS(.CCB_P,.OLINE,.ILINE,.DEST)! of buffer
; 1157 end
; 1158 else if .RET eql CE_DIS then !Unmappability -
; 1159 UNREACH(.CCB,.CCB_P,SOURCE, ! treat like
; 1160 .DEST,.RFLG,$XPT$E_UNR) ! unreachability
; 1161 else begin !Header built -
; 1162 RET = FORWARDER(.CCB,.OLINE); ! Try to forward the packet
; 1163 if .RET eql CE_DIS then ! Unreachable
; 1164 UNREACH(.CCB,.CCB_P,SOURCE,
; 1165 .DEST,.RFLG,$XPT$E_UNR)
; 1166 else if .RET neq CS_SUC then begin ! Congestion
; 1167 UNSPAWN(.CCB);
; 1168 TOSS(.CCB_P,.OLINE,.ILINE,.DEST);
; 1169 end
; 1170 else begin
; 1171 COUNTER_INCREMENT(LINEb,XPTxit_xmt);! Update packet counter
; 1172 if .Nty eql PhTwo then
; 1173 CALL$E(INTPH2,PD_XPE,.CCB_P,1,DEST,SOURCE)
; 1174 end
; 1175 end
; 1176 end
; 1177
; 1178 !
; 1179 ! Invalid adjacent node type
; 1180 !
; 1181
; 1182 else BPT(XPT$_IANT,.Nty);
; 1183 return;
; 1184 end; !End of RCVDAT
.SBTTL RCVDAT
000000 004167 000000G RCVDAT::
U.2: JSR R1,$SAVE5 ; 0799
000004 162706 000022 SUB #22,SP
000010 016666 000040 000010 MOV 40(SP),10(SP) ; CCB.P,* 1035
000016 012700 000016 MOV #16,R0
000022 066600 000010 ADD 10(SP),R0
000026 010066 000006 MOV R0,6(SP)
000032 011067 000000G MOV (R0),KISAR6
000036 012700 000020 MOV #20,R0
000042 066600 000010 ADD 10(SP),R0
000046 010066 000004 MOV R0,4(SP)
000052 011000 MOV (R0),R0 ; *,PTR
000054 112066 000002 MOVB (R0)+,2(SP) ; PTR,RFLG 1036
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 29
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
000060 105066 000003 CLRB 3(SP) ; RFLG
000064 112066 000020 MOVB (R0)+,20(SP) ; PTR,X 1037
000070 112066 000021 MOVB (R0)+,21(SP) ; PTR,X
000074 016666 000020 000014 MOV 20(SP),14(SP) ; X,DEST
000102 112066 000020 MOVB (R0)+,20(SP) ; PTR,X 1038
000106 112066 000021 MOVB (R0)+,21(SP) ; PTR,X
000112 016666 000020 000016 MOV 20(SP),16(SP) ; X,SOURCE
000120 005001 CLR R1 ; VISIT 1039
000122 151001 BISB (R0),R1 ; PTR,VISIT
000124 005201 INC R1 ; VISIT 1040
000126 110110 MOVB R1,(R0) ; VISIT,PTR 1041
000130 016602 000014 MOV 14(SP),R2 ; DEST,* 1047
000134 010200 MOV R2,R0
000136 004767 000000G JSR PC,GTNODE
000142 010016 MOV R0,(SP) ; *,NODEB
000144 005003 CLR R3 ; OLINE 1048
000146 032710 000400 BIT #400,(R0) ; *,NODEB 1049
000152 001001 BNE 1$
000154 111003 MOVB (R0),R3 ; NODEB,OLINE
000156 016600 000010 1$: MOV 10(SP),R0 ; 1050
000162 116066 000010 000012 MOVB 10(R0),12(SP) ; *,ILINE
000170 105066 000013 CLRB 13(SP) ; ILINE
000174 016600 000012 MOV 12(SP),R0 ; ILINE,* 1051
000200 004767 000000G JSR PC,GTLINE
000204 010005 MOV R0,R5 ; *,LINEB
000206 016700 000002G MOV .CRDAT+2,R0 ; 1057
000212 020160 000050 CMP R1,50(R0) ; VISIT,*
000216 101011 BHI 2$
000220 032766 000020 000002 BIT #20,2(SP) ; *,RFLG 1058
000226 001456 BEQ 3$
000230 016000 000050 MOV 50(R0),R0
000234 006300 ASL R0
000236 020100 CMP R1,R0 ; VISIT,*
000240 101451 BLOS 3$
000242 016700 000002G 2$: MOV .CRDAT+2,R0 ; 1061
000246 062700 000130 ADD #130,R0
000252 004767 000000G JSR PC,$IC8
000256 010500 MOV R5,R0 ; LINEB,* 1062
000260 062700 000070 ADD #70,R0
000264 004767 000000G JSR PC,$IC32
000270 004767 000000G JSR PC,$NLBEG ; 1063
000274 017646 000004 MOV @4(SP),-(SP) ; 1064
000300 012746 000001 MOV #1,-(SP)
000304 012746 000000G MOV #PKTA.HDR,-(SP)
000310 016700 000002G MOV .CRDAT+2,R0
000314 005046 CLR -(SP)
000316 116016 000002 MOVB 2(R0),(SP)
000322 004767 000000G JSR PC,$CALLE
000326 012700 000400 MOV #400,R0 ; 1065
000332 012701 177777 MOV #-1,R1
000336 004767 000000G JSR PC,$NLEND
000342 016616 000020 MOV 20(SP),(SP) ; 1066
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 30
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
000346 012746 177760 MOV #-20,-(SP)
000352 004767 000000G JSR PC,TERMINATE
000356 062706 000012 ADD #12,SP ; 1057
000362 000571 BR 12$ ; 1059
000364 004767 000000G 3$: JSR PC,$CCBGT ; 1074
000370 103003 BHIS 4$
000372 016646 000010 MOV 10(SP),-(SP) ; 1075
000376 000541 BR 10$
000400 016664 000010 000004 4$: MOV 10(SP),4(R4) ; *,*(CCB) 1078
000406 005064 000032 CLR 32(R4) ; *(CCB) 1079
000412 010300 MOV R3,R0 ; OLINE,* 1085
000414 004767 000000G JSR PC,GTLINE
000420 010005 MOV R0,R5 ; *,LINEB
000422 016700 000002G MOV .CRDAT+2,R0 ; 1087
000426 020260 000016 CMP R2,16(R0)
000432 101403 BLOS 5$
000434 012701 000002 MOV #2,R1 ; *,RET
000440 000412 BR 7$
000442 005776 000000 5$: TST @0(SP) ; NODEB 1088
000446 100005 BPL 6$
000450 005703 TST R3 ; OLINE 1089
000452 001436 BEQ 9$
000454 121527 000010 CMPB (R5),#10 ; LINEB,*
000460 001431 BEQ 8$
000462 012701 000001 6$: MOV #1,R1 ; *,RET 1090
000466 010446 7$: MOV R4,-(SP) ; CCB,* 1094
000470 016646 000012 MOV 12(SP),-(SP)
000474 016646 000022 MOV 22(SP),-(SP) ; SOURCE,*
000500 010246 MOV R2,-(SP)
000502 016646 000012 MOV 12(SP),-(SP) ; RFLG,*
000506 010146 MOV R1,-(SP) ; RET,*
000510 004767 176732 JSR PC,U.22
000514 016600 000026 MOV 26(SP),R0 ; ILINE,* 1095
000520 004767 000000G JSR PC,GTLINE
000524 010005 MOV R0,R5 ; *,LINEB
000526 062700 000070 ADD #70,R0 ; 1096
000532 004767 000000G JSR PC,$IC32
000536 062706 000014 ADD #14,SP ; 1086
000542 000501 BR 12$ ; 1093
000544 005703 8$: TST R3 ; OLINE 1104
000546 001101 BNE 13$
000550 032776 000400 000000 9$: BIT #400,@0(SP) ; *,NODEB 1105
000556 001462 BEQ 11$
000560 017664 000006 000016 MOV @6(SP),16(R4) ; *,*(CCB) 1106
000566 017664 000004 000020 MOV @4(SP),20(R4) ; *,*(CCB) 1107
000574 062764 000006 000020 ADD #6,20(R4) ; *,*(CCB)
000602 016600 000010 MOV 10(SP),R0 ; 1108
000606 016064 000022 000022 MOV 22(R0),22(R4) ; *,*(CCB)
000614 162764 000006 000022 SUB #6,22(R4) ; *,*(CCB)
000622 116064 000010 000010 MOVB 10(R0),10(R4) ; *,*(CCB) 1109
000630 016600 000012 MOV 12(SP),R0 ; ILINE,* 1110
000634 004767 000000G JSR PC,GTLINE
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 31
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
000640 010005 MOV R0,R5 ; *,LINEB
000642 062700 000056 ADD #56,R0 ; 1111
000646 004767 000000G JSR PC,$IC32
000652 010446 MOV R4,-(SP) ; CCB,* 1112
000654 016646 000020 MOV 20(SP),-(SP) ; SOURCE,*
000660 010246 MOV R2,-(SP)
000662 005046 CLR -(SP)
000664 004767 000000G JSR PC,ECLFWD
000670 062706 000010 ADD #10,SP
000674 005300 DEC R0 ; 1113
000676 001423 BEQ 12$
000700 010446 MOV R4,-(SP) ; CCB,* 1114
000702 010346 10$: MOV R3,-(SP) ; OLINE,*
000704 016646 000016 MOV 16(SP),-(SP) ; ILINE,*
000710 010246 MOV R2,-(SP)
000712 004767 176356 JSR PC,U.19
000716 062706 000010 ADD #10,SP
000722 000411 BR 12$ ; 1105
000724 010246 11$: MOV R2,-(SP) ; 1116
000726 012746 100032 MOV #-77746,-(SP)
000732 012746 000002 MOV #2,-(SP)
000736 004767 000000G JSR PC,$IGNAL
000742 062706 000006 ADD #6,SP
000746 000167 000730 12$: JMP 29$ ; 1104
000752 116500 000002 13$: MOVB 2(R5),R0 ; *(LINEB),* 1122
000756 020027 000002 CMP R0,#2
000762 001403 BEQ 14$
000764 020027 000003 CMP R0,#3 ; 1123
000770 001102 BNE 17$
000772 017664 000006 000016 14$: MOV @6(SP),16(R4) ; *,*(CCB) 1124
001000 017664 000004 000020 MOV @4(SP),20(R4) ; *,*(CCB) 1125
001006 016600 000010 MOV 10(SP),R0 ; 1126
001012 016064 000022 000022 MOV 22(R0),22(R4) ; *,*(CCB)
001020 016600 000012 MOV 12(SP),R0 ; ILINE,* 1127
001024 004767 000000G JSR PC,GTLINE
001030 010005 MOV R0,R5 ; *,LINEB
001032 062700 000070 ADD #70,R0 ; 1128
001036 004767 000000G JSR PC,$IC32
001042 010300 MOV R3,R0 ; OLINE,* 1129
001044 004767 000000G JSR PC,GTLINE
001050 010005 MOV R0,R5 ; *,LINEB
001052 010446 MOV R4,-(SP) ; CCB,* 1130
001054 010346 MOV R3,-(SP) ; OLINE,*
001056 004767 000000G JSR PC,FORWARDER
001062 010001 MOV R0,R1 ; *,RET
001064 020127 177520 CMP R1,#-260 ; RET,* 1131
001070 001017 BNE 15$
001072 010416 MOV R4,(SP) ; CCB,* 1132
001074 016646 000014 MOV 14(SP),-(SP)
001100 016646 000024 MOV 24(SP),-(SP) ; SOURCE,*
001104 010246 MOV R2,-(SP)
001106 016646 000014 MOV 14(SP),-(SP) ; RFLG,*
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 32
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
001112 012746 000001 MOV #1,-(SP)
001116 004767 176324 JSR PC,U.22
001122 062706 000012 ADD #12,SP
001126 000460 BR 19$ ; 1131
001130 020127 000001 15$: CMP R1,#1 ; RET,* 1134
001134 001412 BEQ 16$
001136 010416 MOV R4,(SP) ; CCB,* 1135
001140 010346 MOV R3,-(SP) ; OLINE,*
001142 016646 000020 MOV 20(SP),-(SP) ; ILINE,*
001146 010246 MOV R2,-(SP)
001150 004767 176120 JSR PC,U.19
001154 062706 000006 ADD #6,SP
001160 000443 BR 19$ ; 1134
001162 010500 16$: MOV R5,R0 ; LINEB,* 1136
001164 062700 000074 ADD #74,R0
001170 004767 000000G JSR PC,$IC32
001174 000435 BR 19$ ; 1122
001176 020027 000004 17$: CMP R0,#4 ; 1143
001202 001405 BEQ 18$
001204 020027 000005 CMP R0,#5 ; 1144
001210 001402 BEQ 18$
001212 000167 000442 JMP 26$
001216 016600 000012 18$: MOV 12(SP),R0 ; ILINE,* 1145
001222 004767 000000G JSR PC,GTLINE
001226 010005 MOV R0,R5 ; *,LINEB
001230 062700 000070 ADD #70,R0 ; 1146
001234 004767 000000G JSR PC,$IC32
001240 010300 MOV R3,R0 ; OLINE,* 1147
001242 004767 000000G JSR PC,GTLINE
001246 010005 MOV R0,R5 ; *,LINEB
001250 026502 000004 CMP 4(R5),R2 ; *(LINEB),* 1148
001254 001407 BEQ 20$
001256 010446 MOV R4,-(SP) ; CCB,* 1149
001260 012746 177520 MOV #-260,-(SP)
001264 004767 000000G JSR PC,TERMINATE
001270 000167 000404 19$: JMP 28$ ; 1148
001274 010446 20$: MOV R4,-(SP) ; CCB,* 1152
001276 012746 000006 MOV #6,-(SP)
001302 010246 MOV R2,-(SP)
001304 016646 000024 MOV 24(SP),-(SP) ; SOURCE,*
001310 010346 MOV R3,-(SP) ; OLINE,*
001312 016646 000024 MOV 24(SP),-(SP) ; ILINE,*
001316 004767 000000V JSR PC,U.4
001322 010001 MOV R0,R1 ; *,RET
001324 020127 177730 CMP R1,#-50 ; RET,* 1154
001330 001015 BNE 21$
001332 010416 MOV R4,(SP) ; CCB,* 1155
001334 004767 000000G JSR PC,UNSPAWN
001340 016616 000024 MOV 24(SP),(SP) ; 1156
001344 010346 MOV R3,-(SP) ; OLINE,*
001346 016646 000030 MOV 30(SP),-(SP) ; ILINE,*
001352 010246 MOV R2,-(SP)
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 33
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
001354 004767 175714 JSR PC,U.19
001360 022626 CMP (SP)+,(SP)+ ; 1154
001362 000533 BR 25$
001364 020127 177520 21$: CMP R1,#-260 ; RET,* 1158
001370 001020 BNE 22$
001372 010416 MOV R4,(SP) ; CCB,* 1159
001374 016646 000024 MOV 24(SP),-(SP)
001400 012746 000036 MOV #36,-(SP)
001404 060616 ADD SP,(SP) ; SOURCE,*
001406 010246 MOV R2,-(SP)
001410 016646 000024 MOV 24(SP),-(SP) ; RFLG,*
001414 012746 000001 MOV #1,-(SP)
001420 004767 176022 JSR PC,U.22
001424 062706 000010 ADD #10,SP
001430 000510 BR 25$ ; 1158
001432 010416 22$: MOV R4,(SP) ; CCB,* 1162
001434 010346 MOV R3,-(SP) ; OLINE,*
001436 004767 000000G JSR PC,FORWARDER
001442 010001 MOV R0,R1 ; *,RET
001444 020127 177520 CMP R1,#-260 ; RET,* 1163
001450 001020 BNE 23$
001452 010416 MOV R4,(SP) ; CCB,* 1164
001454 016646 000026 MOV 26(SP),-(SP)
001460 012746 000040 MOV #40,-(SP)
001464 060616 ADD SP,(SP) ; SOURCE,*
001466 010246 MOV R2,-(SP)
001470 016646 000026 MOV 26(SP),-(SP) ; RFLG,*
001474 012746 000001 MOV #1,-(SP)
001500 004767 175742 JSR PC,U.22
001504 062706 000012 ADD #12,SP
001510 000460 BR 25$ ; 1163
001512 005301 23$: DEC R1 ; RET 1166
001514 001416 BEQ 24$
001516 010416 MOV R4,(SP) ; CCB,* 1167
001520 004767 000000G JSR PC,UNSPAWN
001524 016616 000026 MOV 26(SP),(SP) ; 1168
001530 010346 MOV R3,-(SP) ; OLINE,*
001532 016646 000032 MOV 32(SP),-(SP) ; ILINE,*
001536 010246 MOV R2,-(SP)
001540 004767 175530 JSR PC,U.19
001544 062706 000006 ADD #6,SP ; 1166
001550 000440 BR 25$
001552 010500 24$: MOV R5,R0 ; LINEB,* 1171
001554 062700 000074 ADD #74,R0
001560 004767 000000G JSR PC,$IC32
001564 126527 000002 000004 CMPB 2(R5),#4 ; *(LINEB),* 1172
001572 001027 BNE 25$
001574 012716 000034 MOV #34,(SP) ; 1173
001600 060616 ADD SP,(SP) ; SOURCE,*
001602 012746 000034 MOV #34,-(SP)
001606 060616 ADD SP,(SP) ; DEST,*
001610 012746 000001 MOV #1,-(SP)
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 34
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (4)
001614 016646 000032 MOV 32(SP),-(SP)
001620 012746 000004 MOV #4,-(SP)
001624 012746 000000G MOV #INTPH2,-(SP)
001630 016700 000002G MOV .CRDAT+2,R0
001634 005046 CLR -(SP)
001636 116016 000002 MOVB 2(R0),(SP)
001642 004767 000000G JSR PC,$CALLE
001646 062706 000014 ADD #14,SP
001652 062706 000010 25$: ADD #10,SP ; 1144
001656 000407 BR 27$ ; 1143
001660 010046 26$: MOV R0,-(SP) ; 1182
001662 012746 100042 MOV #-77736,-(SP)
001666 012746 000002 MOV #2,-(SP)
001672 004767 000000G JSR PC,$IGNAL
001676 005726 27$: TST (SP)+ ; 1143
001700 022626 28$: CMP (SP)+,(SP)+ ; 1122
001702 062706 000022 29$: ADD #22,SP ; 0799
001706 000207 RTS PC
; Routine Size: 484 words, Routine Base: $CODE$ + 2120
; Maximum stack depth per invocation: 29 words
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 35
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
; 1185
; 1186 global
; 1187 routine RCVPH2 (CCB_P): novalue =
; 1188
; 1189 !++
; 1190 ! FUNCTIONAL DESCRIPTION:
; 1191 !
; 1192 ! This routine processes data packets received from the Data
; 1193 ! Link Layer which have Phase II routing headers. It translates
; 1194 ! the routing header to determine the output line (or local
; 1195 ! Transport user) corresponding to the specified destination,
; 1196 ! and attempts to forward the packet to that destination. If
; 1197 ! the destination is unreachable, the routine will return a DC to
; 1198 ! the caller. If the packet is for Self (a local Transport user),
; 1199 ! the spawned CCB is set up to point past the routing header,
; 1200 ! and the packet is forwarded to the ECL. If the destination node
; 1201 ! is also a Phase II node, the packet will be sent to the
; 1202 ! destination unchanged. If the immediate next node over the
; 1203 ! output line is a Phase III node, routine BLDPH3 will be called
; 1204 ! to build a new routing header and point the spawned CCB to it.
; 1205 ! If the destination node address cannot be determined, the packet
; 1206 ! will always be discarded. If, for congestion or resource reasons,
; 1207 ! the packet cannot be forwarded at the time, it will be queued for
; 1208 ! eventual reprocessing if either the source or destination is a
; 1209 ! standard Phase II node; otherwise, it will be discarded.
; 1210 !
; 1211 ! FORMAL PARAMETERS
; 1212 !
; 1213 ! CCB_P - CCB for the received packet; the "pass-through" CCB
; 1214 !
; 1215 ! IMPLICIT INPUTS
; 1216 !
; 1217 ! Reach, OL, Nty, Nid, User
; 1218 !
; 1219 ! ROUTINE VALUE:
; 1220 ! COMPLETION CODES:
; 1221 !
; 1222 ! NONE.
; 1223 !
; 1224 ! SIDE EFFECTS:
; 1225 !
; 1226 ! May temporarily modify the buffer descriptor for the pass-through CCB.
; 1227 !
; 1228 !--
; 1229
; 1230 begin
; 1231
; 1232 forward routine TOSS: novalue;
; 1233
; 1234
; 1235 !***********************************************!
; 1236 ! !
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 36
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
; 1237 ! Routine to handle "unreachability" case !
; 1238 ! !
; 1239 !***********************************************!
; 1240
; 1241 routine UNREACH (CCB,CCB_P,ILINE,CODE): novalue =
; 1242 begin
; 1243 map CCB: ref block field (C_XPT_fields);
; 1244 local LINEb;
; 1245 require 'XPTSYM';
; 1282 map CCB_P: ref block field(C_XPT_fields);
; 1283 local LENS,LEND,LINKS,LINKD,RET;
; 1284 local WORKD: vector[3], WORKS: vector[3];
; 1285 pointer PTR;
; 1286
; 1287 !
; 1288 ! Map in the pass-through buffer; address input line data base
; 1289 !
; 1290
; 1291 MAPBUF(.CCB_P,PTR);
; 1292 LINEb = $XPT_GET_LINE_DB(.ILINE);
; 1293
; 1294 !
; 1295 ! Update node counters and signal an event
; 1296 !
; 1297
; 1298 if .CODE eql $XPT$E_UNR then ! Update
; 1299 COUNTER_INCREMENT(XPTDB,XPTunreach_loss) ! "unreachability"
; 1300 else if .CODE eql $XPT$E_RNG then ! or "node out of
; 1301 COUNTER_INCREMENT(XPTDB,XPTrange_loss) ! range" or "header
; 1302 else COUNTER_INCREMENT(XPTDB,XPTfmt_loss); ! format error" counter
; 1303 RET = getb(PTR); ! Pick up "routing flags"
; 1304 if bitoff(.RET,2) then RET = 5 ! No routing header
; 1305 else begin ! Routing header -
; 1306 RET = getb(PTR); ! pick up the first node lgth
; 1307 PTR = ch$plus(.PTR,.RET); ! jump over the node name
; 1308 RET = .RET + getb(PTR) + 2 + 1 + 5; ! add in second node lgth
; 1309 end; ! and the rthdr & NSP hdr
; 1310 RET = MINU(.RET,55); ! (but don't overflow buffer)
; 1311 MAPBUF(.CCB_P,PTR);
; 1312 $NM_LOG_BEGIN();
; P 1313 PARAMETER_HI((if .CODE eql $XPT$E_FMT then 1 else 0),
; 1314 .RET,.PTR); ! Move "packet beginning" into
; 1315 $NM_LOG_END(4^6+.CODE,.NMXid); ! Log the event
; 1316
; 1317 !
; 1318 ! If the message came from a Phase II+ node, just toss it away
; 1319 !
; 1320
; 1321 if .Nty eql TOPS20 then begin
; 1322 TOSS(.CCB,0,0,.ILINE);
; 1323 return;
; 1324 end;
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 37
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
; 1325
; 1326 !
; 1327 ! If the incoming message had a routing header, build the DC routing header
; 1328 ! by reversing the destination and source fields in the input routing header
; 1329 !
; 1330
; 1331 RET = getb(PTR); !Pick up routing or message flags
; 1332 if bitoff(.RET,2) then !No routing header -
; 1333 LEND = 0 ! set "no header" indication
; 1334 else begin ! NOTE: source/dest names switched
; 1335 ! ***
; 1336 LENS = getb(PTR); !Pick up destination node name length
; 1337 ch$move(MINU(.LENS,6),.PTR, !Save destination
; 1338 byt$ptr(WORKS,0)); ! name field
; 1339 PTR = ch$plus(.PTR,.LENS); !Advance over name
; 1340 LEND = getb(PTR); !Pick up source node name length
; 1341 ch$move(MINU(.LEND,6),.PTR, !Save source
; 1342 byt$ptr(WORKD,0)); ! name field
; 1343 PTR = ch$plus(.PTR,.LEND); !Advance over name
; 1344 RET = getb(PTR); !Pick up MSGFLGS
; 1345 end;
; 1346
; 1347 LINKS = getw(PTR); !Get destination and source link
; 1348 LINKD = getw(PTR); ! addresses, and switch them
; 1349
; 1350 !
; 1351 ! Build a DC message with the specified disconnect code
; 1352 !
; 1353
; 1354 if .RET eql DC_MSGflgs then begin !If the message was a DC,
; 1355 TERMINATE(.CCB,CE_DIS); ! ignore it
; 1356 return;
; 1357 end;
; 1358
; 1359 if .CCB [C_XPT_ADJUST] neq 0 then begin !Un-adjust the spawned CCB
; 1360 CCB_P[C_ADDR] = ch$plus(.CCB_P[C_ADDR],-.CCB[C_XPT_ADJUST]);
; 1361 CCB_P[C_CNT] = .CCB_P[C_CNT] + .CCB[C_XPT_ADJUST];
; 1362 end;
; 1363
; 1364 CCB[C_XPT_TYPE] = 0;
; 1365 CCB[C_XPT_ADJUST] = 0;
; 1366 CCB[C_BIAS] = .CCB_P[C_BIAS]; !Copy pass-through
; 1367 CCB[C_ADDR] = .CCB_P[C_ADDR]; ! buffer descriptor into spawn
; 1368 CCB[C_CHN] = 0;
; 1369
; 1370 INPUTcount = .INPUTcount - 1; !Finish up bookkeeping
; 1371 DLLquota = .DLLquota + 1; ! for the buffer
; 1372
; P 1373 CALL$E(SEND_DC,(PD_XPE),.CCB,.LINEb,
; P 1374 .LEND,byt$ptr(WORKD,0),.LENS,byt$ptr(WORKS,0),.LINKD,.LINKS,
; 1375 (if .CODE eql $XPT$E_FMT then MISC_ERROR else NO_PATH_ERROR));
; 1376
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 38
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
; 1377 end;
.GLOBL $DPHI, SEND.DC
.SBTTL UNREACH
000000 004167 000000G ; UNREACH
U.28: JSR R1,$SAVE5 ; 1241
000004 162706 000026 SUB #26,SP
000010 016605 000050 MOV 50(SP),R5 ; CCB.P,* 1291
000014 016567 000016 000000G MOV 16(R5),KISAR6
000022 012766 000020 000002 MOV #20,2(SP)
000030 060566 000002 ADD R5,2(SP)
000034 017602 000002 MOV @2(SP),R2 ; *,PTR
000040 016600 000046 MOV 46(SP),R0 ; ILINE,* 1292
000044 004767 000000G JSR PC,GTLINE
000050 010016 MOV R0,(SP) ; *,LINEB
000052 016700 000002G MOV .CRDAT+2,R0 ; 1299
000056 016604 000044 MOV 44(SP),R4 ; CODE,* 1298
000062 020427 000001 CMP R4,#1
000066 001007 BNE 1$
000070 012701 000136 MOV #136,R1 ; 1299
000074 060001 ADD R0,R1
000076 005211 INC (R1)
000100 001014 BNE 4$
000102 005311 DEC (R1)
000104 000412 BR 4$ ; 1298
000106 020427 000002 1$: CMP R4,#2 ; 1300
000112 001003 BNE 2$
000114 062700 000131 ADD #131,R0 ; 1301
000120 000402 BR 3$
000122 062700 000133 2$: ADD #133,R0 ; 1302
000126 004767 000000G 3$: JSR PC,$IC8
000132 005003 4$: CLR R3 ; RET 1303
000134 152203 BISB (R2)+,R3 ; PTR,RET
000136 032703 000002 BIT #2,R3 ; *,RET 1304
000142 001003 BNE 5$
000144 012703 000005 MOV #5,R3 ; *,RET
000150 000411 BR 6$
000152 005003 5$: CLR R3 ; RET 1306
000154 152203 BISB (R2)+,R3 ; PTR,RET
000156 060302 ADD R3,R2 ; RET,PTR 1307
000160 005000 CLR R0 ; 1308
000162 152200 BISB (R2)+,R0 ; PTR,*
000164 060300 ADD R3,R0 ; RET,*
000166 010003 MOV R0,R3 ; *,RET
000170 062703 000010 ADD #10,R3 ; *,RET
000174 010300 6$: MOV R3,R0 ; RET,* 1310
000176 020027 000067 CMP R0,#67
000202 101402 BLOS 7$
000204 012700 000067 MOV #67,R0
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 39
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
000210 010003 7$: MOV R0,R3 ; *,RET
000212 016567 000016 000000G MOV 16(R5),KISAR6 ; 1311
000220 017602 000002 MOV @2(SP),R2 ; *,PTR
000224 004767 000000G JSR PC,$NLBEG ; 1312
000230 005066 000004 CLR 4(SP) ; 1314
000234 020427 000004 CMP R4,#4
000240 001005 BNE 8$
000242 005266 000004 INC 4(SP)
000246 012746 000001 MOV #1,-(SP)
000252 000401 BR 9$
000254 005046 8$: CLR -(SP)
000256 010300 9$: MOV R3,R0 ; RET,*
000260 010201 MOV R2,R1 ; PTR,*
000262 004767 000000G JSR PC,$DPHI
000266 062704 000400 ADD #400,R4 ; 1315
000272 010400 MOV R4,R0
000274 016646 000002 MOV 2(SP),-(SP) ; LINEB,*
000300 062716 000034 ADD #34,(SP)
000304 013601 MOV @(SP)+,R1
000306 004767 000000G JSR PC,$NLEND
000312 016600 000002 MOV 2(SP),R0 ; LINEB,* 1321
000316 126027 000002 000005 CMPB 2(R0),#5 ; *(LINEB),*
000324 001013 BNE 10$
000326 016616 000054 MOV 54(SP),(SP) ; CCB,* 1322
000332 005046 CLR -(SP)
000334 005046 CLR -(SP)
000336 016646 000054 MOV 54(SP),-(SP) ; ILINE,*
000342 004767 000000V JSR PC,U.27
000346 062706 000010 ADD #10,SP ; 1321
000352 000500 BR 15$
000354 005003 10$: CLR R3 ; RET 1331
000356 152203 BISB (R2)+,R3 ; PTR,RET
000360 032703 000002 BIT #2,R3 ; *,RET 1332
000364 001002 BNE 11$
000366 005004 CLR R4 ; LEND 1333
000370 000442 BR 14$ ; 1332
000372 005001 11$: CLR R1 ; LENS 1336
000374 152201 BISB (R2)+,R1 ; PTR,LENS
000376 010116 MOV R1,(SP) ; LENS,* 1337
000400 020127 000006 CMP R1,#6
000404 101402 BLOS 12$
000406 012716 000006 MOV #6,(SP)
000412 010246 12$: MOV R2,-(SP) ; PTR,* 1338
000414 012746 000020 MOV #20,-(SP)
000420 060616 ADD SP,(SP) ; WORKS,*
000422 004767 000000G JSR PC,BL$MOV
000426 060102 ADD R1,R2 ; LENS,PTR 1339
000430 005004 CLR R4 ; LEND 1340
000432 152204 BISB (R2)+,R4 ; PTR,LEND
000434 010416 MOV R4,(SP) ; LEND,* 1341
000436 020427 000006 CMP R4,#6
000442 101402 BLOS 13$
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 40
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
000444 012716 000006 MOV #6,(SP)
000450 010246 13$: MOV R2,-(SP) ; PTR,* 1342
000452 012746 000032 MOV #32,-(SP)
000456 060616 ADD SP,(SP) ; WORKD,*
000460 004767 000000G JSR PC,BL$MOV
000464 060402 ADD R4,R2 ; LEND,PTR 1343
000466 005003 CLR R3 ; RET 1344
000470 152203 BISB (R2)+,R3 ; PTR,RET
000472 062706 000010 ADD #10,SP ; 1334
000476 112266 000012 14$: MOVB (R2)+,12(SP) ; PTR,X 1347
000502 112266 000013 MOVB (R2)+,13(SP) ; PTR,X
000506 016666 000012 000010 MOV 12(SP),10(SP) ; X,LINKS
000514 112266 000012 MOVB (R2)+,12(SP) ; PTR,X 1348
000520 112266 000013 MOVB (R2)+,13(SP) ; PTR,X
000524 016602 000012 MOV 12(SP),R2 ; X,LINKD
000530 020327 000110 CMP R3,#110 ; RET,* 1354
000534 001010 BNE 16$
000536 016616 000054 MOV 54(SP),(SP) ; CCB,* 1355
000542 012746 177520 MOV #-260,-(SP)
000546 004767 000000G JSR PC,TERMINATE
000552 022626 CMP (SP)+,(SP)+ ; 1354
000554 000522 15$: BR 20$
000556 016603 000054 16$: MOV 54(SP),R3 ; CCB,* 1359
000562 012700 000032 MOV #32,R0
000566 060300 ADD R3,R0
000570 105760 000001 TSTB 1(R0)
000574 001423 BEQ 17$
000576 116046 000001 MOVB 1(R0),-(SP) ; 1360
000602 105716 TSTB (SP)
000604 006746 SXT -(SP)
000606 116616 000002 MOVB 2(SP),(SP)
000612 162676 000006 SUB (SP)+,@6(SP)
000616 116016 000001 MOVB 1(R0),(SP) ; 1361
000622 105716 TSTB (SP)
000624 006746 SXT -(SP)
000626 116616 000002 MOVB 2(SP),(SP)
000632 066516 000022 ADD 22(R5),(SP)
000636 012665 000022 MOV (SP)+,22(R5)
000642 005726 TST (SP)+
000644 105010 17$: CLRB (R0) ; 1364
000646 105060 000001 CLRB 1(R0) ; 1365
000652 016563 000016 000016 MOV 16(R5),16(R3) ; 1366
000660 017663 000004 000020 MOV @4(SP),20(R3) ; 1367
000666 005063 000002 CLR 2(R3) ; 1368
000672 016605 000002 MOV 2(SP),R5 ; LINEB,* 1370
000676 105365 000043 DECB 43(R5) ; *(LINEB)
000702 016705 000002G MOV .CRDAT+2,R5
000706 105265 000035 INCB 35(R5) ; 1371
000712 032766 000001 000006 BIT #1,6(SP) ; 1375
000720 001403 BEQ 18$
000722 012716 000007 MOV #7,(SP)
000726 000402 BR 19$
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 41
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
000730 012716 000047 18$: MOV #47,(SP)
000734 016646 000010 19$: MOV 10(SP),-(SP) ; LINKS,*
000740 010246 MOV R2,-(SP) ; LINKD,*
000742 012746 000022 MOV #22,-(SP)
000746 060616 ADD SP,(SP) ; WORKS,*
000750 010146 MOV R1,-(SP) ; LENS,*
000752 012746 000034 MOV #34,-(SP)
000756 060616 ADD SP,(SP) ; WORKD,*
000760 010446 MOV R4,-(SP) ; LEND,*
000762 016646 000016 MOV 16(SP),-(SP) ; LINEB,*
000766 010346 MOV R3,-(SP)
000770 012746 000011 MOV #11,-(SP)
000774 012746 000000G MOV #SEND.DC,-(SP)
001000 016700 000002G MOV .CRDAT+2,R0
001004 005046 CLR -(SP)
001006 116016 000002 MOVB 2(R0),(SP)
001012 004767 000000G JSR PC,$CALLE
001016 062706 000030 ADD #30,SP ; 1242
001022 062706 000026 20$: ADD #26,SP ; 1241
001026 000207 RTS PC
; Routine Size: 268 words, Routine Base: $CODE$ + 4030
; Maximum stack depth per invocation: 30 words
; 1378
; 1379
; 1380
; 1381 !*******************************************************!
; 1382 ! !
; 1383 ! Routine to either throw away a packet or queue it !
; 1384 ! for eventual reprocessing !
; 1385 ! !
; 1386 !*******************************************************!
; 1387
; 1388 routine TOSS (CCB,OLINE,DEST,ILINE): novalue =
; 1389 begin
; 1390 map CCB: ref block field (C_XPT_fields);
; 1391
; 1392 local LINEb;
; 1393 require 'XPTSYM';
; 1430 local CCB_P;
; 1431
; 1432 CCB_P = .CCB[C_STK];
; 1433
; 1434 if
; 1435 (begin
; 1436 LINEb = $XPT_GET_LINE_DB(.OLINE);
; 1437 (.OLINE neq 0)
; 1438 and (.Nty eql PhTwo)
; 1439 and (.Nid eql .DEST)
; 1440 end
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 42
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
; 1441 or
; 1442 begin
; 1443 LINEb = $XPT_GET_LINE_DB(.ILINE);
; 1444 (.ILINE neq 0)
; 1445 and (.Nty eql PhTwo)
; 1446 end)
; 1447 then RE_QUEUE (if .CCB[C_OWN] eql PD_XPT then
; 1448 (UNSPAWN(.CCB); .CCB_P)
; 1449 else .CCB)
; 1450 else begin
; 1451 if .OLINE neq 0 then begin
; 1452 LINEb = $XPT_GET_LINE_DB(.OLINE);
; 1453 COUNTER_INCREMENT(LINEb,XPTxit_cng);
; 1454 end
; 1455 else begin
; 1456 LINEb = $XPT_GET_LINE_DB(.ILINE);
; 1457 COUNTER_INCREMENT(LINEb,XPTend_cng);
; 1458 end;
; 1459 TERMINATE(.CCB,CE_RTE);
; 1460 end;
; 1461 end;
.SBTTL TOSS
000000 004167 000000G ; TOSS
U.27: JSR R1,$SAVE5 ; 1388
000004 016602 000024 MOV 24(SP),R2 ; CCB,* 1432
000010 016205 000004 MOV 4(R2),R5 ; *,CCB.P
000014 016604 000022 MOV 22(SP),R4 ; OLINE,* 1436
000020 010400 MOV R4,R0
000022 004767 000000G JSR PC,GTLINE
000026 010001 MOV R0,R1 ; *,LINEB
000030 005003 CLR R3 ; 1437
000032 005704 TST R4
000034 001411 BEQ 1$
000036 005203 INC R3
000040 126127 000002 000004 CMPB 2(R1),#4 ; *(LINEB),* 1438
000046 001004 BNE 1$
000050 026166 000004 000020 CMP 4(R1),20(SP) ; *(LINEB),DEST 1439
000056 001414 BEQ 2$
000060 016600 000016 1$: MOV 16(SP),R0 ; ILINE,* 1443
000064 004767 000000G JSR PC,GTLINE
000070 010001 MOV R0,R1 ; *,LINEB
000072 005766 000016 TST 16(SP) ; ILINE 1444
000076 001423 BEQ 5$
000100 126127 000002 000004 CMPB 2(R1),#4 ; *(LINEB),* 1445
000106 001017 BNE 5$
000110 016700 000002G 2$: MOV .CRDAT+2,R0 ; 1447
000114 126260 000006 000004 CMPB 6(R2),4(R0)
000122 001005 BNE 3$
000124 010246 MOV R2,-(SP) ; 1448
000126 004767 000000G JSR PC,UNSPAWN
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 43
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
000132 010516 MOV R5,(SP) ; CCB.P,* 1447
000134 000401 BR 4$
000136 010246 3$: MOV R2,-(SP)
000140 004767 000000G 4$: JSR PC,RE.QUEUE
000144 000435 BR 9$ ; 1434
000146 006003 5$: ROR R3 ; 1451
000150 103012 BCC 6$
000152 010400 MOV R4,R0 ; 1452
000154 004767 000000G JSR PC,GTLINE
000160 010001 MOV R0,R1 ; *,LINEB
000162 012700 000100 MOV #100,R0 ; 1453
000166 060100 ADD R1,R0 ; LINEB,*
000170 005210 INC (R0)
000172 001014 BNE 8$
000174 000412 BR 7$
000176 016600 000016 6$: MOV 16(SP),R0 ; ILINE,* 1456
000202 004767 000000G JSR PC,GTLINE
000206 010001 MOV R0,R1 ; *,LINEB
000210 012700 000066 MOV #66,R0 ; 1457
000214 060100 ADD R1,R0 ; LINEB,*
000216 005210 INC (R0)
000220 001001 BNE 8$
000222 005310 7$: DEC (R0)
000224 010246 8$: MOV R2,-(SP) ; 1459
000226 012746 177730 MOV #-50,-(SP)
000232 004767 000000G JSR PC,TERMINATE
000236 005726 TST (SP)+ ; 1450
000240 005726 9$: TST (SP)+ ; 1389
000242 000207 RTS PC ; 1388
; Routine Size: 82 words, Routine Base: $CODE$ + 5060
; Maximum stack depth per invocation: 9 words
; 1462
; 1463 !*********************** START OF MAIN ROUTINE ************************!
; 1464
; 1465
; 1466 local NODEb,LINEb;
; 1467 require 'XPTSYM';
; 1504 local CCB: ref block field (C_XPT_fields);
; 1505 map CCB_P: ref block field(C_FIELDS);
; 1506 pointer PTR;
; 1507 local BUFLEN,DEST,SOURCE,OLINE,ILINE,RET,ISHDR,ICPTD;
; 1508 literal NO_PATH_ERROR = 39; !"No path" disconnect code
; 1509 literal BAD_ROUT_HDR = 7; !Disconnect code for invalid/no RTHDR
; 1510
; 1511 !
; 1512 ! Determine and validate the input line
; 1513 !
; 1514
; 1515 ILINE = .CCB_P[C_LIN];
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 44
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
; 1516 LINEb = $XPT_GET_LINE_DB(.ILINE);
; 1517 if ((.Nty neq TOPS20) !Input line is
; 1518 and (.Nty neq PhTwo)) then begin ! not Phase II:
; 1519 local RET; !
; 1520 RET = MIN(19,.CCB_P[C_CNT]); !
; 1521 $NM_LOG_BEGIN(); !
; 1522 PARAMETER_HI(1,.RET,.CCB_P[C_ADDR]); ! log a "packet
; 1523 $NM_LOG_END(4^6+$XPT$E_FMT,.NMXid); ! format error" event
; 1524 TERMINATE(.CCB_P,CE_ERR); ! and toss
; 1525 return; ! the packet
; 1526 end;
; 1527
; 1528 ICPTD = 0;
; 1529 if .Nty eql PhTwo then ICPTD = .ICPTD + 1; ! Not Phase II+ - flag that
; 1530
; 1531 !
; 1532 ! Spawn a CCB
; 1533 !
; 1534
; 1535 if not CCBGT$(CCB) then !No CCB available - get rid of packet
; 1536 (TOSS(.CCB_P,0,0,.ILINE); return);
; 1537 CCB[C_STK] = .CCB_P; !Chain pass-through to spawned CCB
; 1538 CCB[C_XPT_TYPE] = 0; !Initialize type code
; 1539 CCB[C_XPT_ADJUST] = 0; ! and adjustment factor
; 1540
; 1541 !
; 1542 ! Parse the routing header
; 1543 !
; 1544
; 1545 MAPBUF(.CCB_P,PTR); ! Map in the packet buffer
; 1546 if biton (getb(PTR),2) then begin ! Routing header is present -
; 1547 RET = PH2HDR (ch$plus(.PTR,-1),.ILINE, ! map to source and
; 1548 SOURCE,DEST); ! destination addresses
; 1549 ISHDR = TRUE; ! and indicate header is present
; 1550 end
; 1551 else begin !No routing header -
; P 1552 RET = CALL$E(INTPH2,PD_XPE, ! "intercept"
; 1553 .CCB_P,0,DEST,SOURCE); ! the packet
; 1554 ISHDR = FALSE; ! and indicate no header
; 1555 ICPTD = 0; ! and that packet's already interceptd
; 1556 end;
; 1557 if .RET leq 0 then !Could not get destination -
; 1558 (UNREACH(.CCB,.CCB_P,.ILINE,-.RET); return); !throw away packet
; 1559
; 1560 NODEb = $XPT_GET_NODE_DB(.DEST); ! Address destination data base entry
; 1561
; 1562 !
; 1563 ! Determine the output line
; 1564 !
; 1565
; 1566 OLINE = 0;
; 1567 if not .Local_node then OLINE = .OL;
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 45
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
; 1568 LINEb = $XPT_GET_LINE_DB(.OLINE);
; 1569
; 1570 !
; 1571 ! Destination is unreachable
; 1572 !
; 1573
; 1574 if (not .Reach
; 1575 or ((.OLINE neq 0) and (.LINEstate neq RU))) then begin
; 1576 LINEb = $XPT_GET_LINE_DB(.ILINE);
; 1577 COUNTER_INCREMENT(LINEb,XPTxit_rcv);
; 1578 UNREACH(.CCB,.CCB_P,.ILINE,$XPT$E_UNR);
; 1579 return;
; 1580 end;
; 1581
; 1582 !
; 1583 ! Destination is Self
; 1584 !
; 1585
; 1586 if .OLINE eql 0 then
; 1587 if .Local_node then begin
; 1588 CCB[C_BIAS] = .CCB_P[C_BIAS]; !Copy buffer
; 1589 CCB[C_ADDR] = .CCB_P[C_ADDR]; ! descriptor into
; 1590 CCB[C_CNT] = .CCB_P[C_CNT]; ! spawned CCB
; 1591 CCB[C_LIN] = .CCB_P[C_LIN]; !Put in line number
; 1592 if .ISHDR then begin !If packet has a header,
; 1593 RET = getb(PTR); ! pick up the destination name length
; 1594 BUFLEN = 1 + 1 + .RET; ! add it into header length
; 1595 PTR = ch$plus(.PTR,.RET); ! bump pointer past node name field
; 1596 BUFLEN = .BUFLEN + 1+getb(PTR); ! add source name length
; 1597 CCB[C_ADDR] = ch$plus(.CCB[C_ADDR],.BUFLEN);
; 1598 CCB[C_CNT] = .CCB[C_CNT] - .BUFLEN;
; 1599 end;
; 1600 LINEb = $XPT_GET_LINE_DB(.ILINE); !Map to input line data base
; 1601 COUNTER_INCREMENT(LINEb,XPTend_rcv);! Increment packets counter
; 1602 if ECLFWD(.CCB, !Try to pass the buffer
; 1603 .SOURCE,.DEST,0) ! to the user process
; 1604 neq CS_SUC then !If Forwarding rejected the packet,
; 1605 TOSS(.CCB,0,0,.ILINE) ! get rid of it
; 1606 else if .ICPTD then !Otherwise, if there was
; P 1607 CALL$E(INTPH2,PD_XPE,.CCB_P, ! a header, intercept
; 1608 1,DEST,SOURCE) ! the packet
; 1609 end
; 1610
; 1611 else BPT(XPT$_DNS,.DEST) !Invalid "self" destination
; 1612
; 1613 !
; 1614 ! Next node in path is Phase III
; 1615 !
; 1616
; 1617 else if ((.Nty eql Full)
; 1618 or (.Nty eql Small)) then begin
; 1619 LINEb = $XPT_GET_LINE_DB(.ILINE); !Address input line DB entry
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 46
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
; 1620 RET = BLDPH3(.CCB,.ISHDR,.DEST,.SOURCE,0); !Build a Phase III header
; 1621 COUNTER_INCREMENT(LINEb,XPTxit_rcv); ! Increment packets counter
; 1622 LINEb = $XPT_GET_LINE_DB(.OLINE); !Address output line DB entry
; 1623 RET = FORWARDER(.CCB,.OLINE); !Try to forward packet
; 1624 if .RET eql CE_DIS then !If destination is unreachable,
; 1625 UNREACH(.CCB,.CCB_P,.ILINE, ! perform unreachablilty code
; 1626 $XPT$E_UNR) !
; 1627 else if .RET neq CS_SUC then !Congestion problem -
; 1628 TOSS(.CCB,.OLINE,.DEST,.ILINE) ! get rid of packet
; 1629 else begin
; 1630 COUNTER_INCREMENT(LINEb,XPTxit_xmt); ! Success - increment pkts ctr
; 1631 if .ICPTD then ! Packet had Ph. 2 hdr:
; P 1632 CALL$E(INTPH2,PD_XPE,.CCB_P,1, ! intercept
; 1633 DEST,SOURCE) ! packet
; 1634 end
; 1635 end
; 1636
; 1637 !
; 1638 ! Next node in path is Phase II
; 1639 !
; 1640
; 1641 else if ((.Nty eql PhTwo)
; 1642 or (.Nty eql TOPS20)) then begin
; 1643 COUNTER_INCREMENT(LINEb,XPTxit_rcv); ! Increment packet counter
; 1644 if .RET eql 2 then begin !Header is not useable:
; 1645 RET = getb(PTR); ! Calculate
; 1646 BUFLEN = 1 + 1 + .RET; ! the length
; 1647 PTR = ch$plus(.PTR,.RET); ! of the
; 1648 BUFLEN = .BUFLEN + 1 + getb(PTR); ! old header
; 1649 RET = BLDPH2(.CCB,.BUFLEN,.DEST,.SOURCE,! Build a
; 1650 .OLINE,.ILINE); ! new one
; 1651 if .RET eql CE_RTE then begin ! Resource failure -
; 1652 TOSS(.CCB,.OLINE,.DEST,.ILINE); ! reschedule
; 1653 return; ! the CCB
; 1654 end
; 1655 else if .RET neq CS_SUC then begin ! Other failure -
; 1656 UNREACH(.CCB,.CCB_P,.ILINE, ! terminate
; 1657 $XPT$E_UNR); ! the packet
; 1658 return; ! as unreachable
; 1659 end
; 1660 end
; 1661 else begin !Header is useable:
; 1662 CCB[C_BIAS] = .CCB_P[C_BIAS]; ! Copy buffer
; 1663 CCB[C_ADDR] = .CCB_P[C_ADDR]; ! descriptor into
; 1664 CCB[C_CNT] = .CCB_P[C_CNT]; ! spawned CCB
; 1665 end;
; 1666 LINEb = $XPT_GET_LINE_DB(.OLINE); !Address output line DB entry
; 1667 if .Nid neq .DEST then !Destination not adjacent -
; 1668 TOSS(.CCB,.OLINE,.DEST,.ILINE) ! get rid of message
; 1669 else begin
; 1670 RET = FORWARDER(.CCB,.OLINE); !Try to send packet out
; 1671 if .RET eql CE_DIS then !Unreachable destination -
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 47
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
; 1672 UNREACH(.CCB,.CCB_P,.ILINE, ! perform unreachability code
; 1673 $XPT$E_UNR) !
; 1674 else if .RET neq CS_SUC then !Congestion problem -
; 1675 TOSS(.CCB,.OLINE,.DEST,.ILINE) ! get rid of packet
; 1676 else begin !Success -
; 1677 COUNTER_INCREMENT(LINEb,XPTxit_xmt);! Increment packets counter
; 1678 if (.ICPTD or (.Nty eql PhTwo)) ! Packet had Ph. 2 hdr:
; P 1679 then CALL$E(INTPH2,PD_XPE, ! intercept
; 1680 .CCB_P,1,DEST,SOURCE) ! packet
; 1681 end
; 1682 end
; 1683 end
; 1684
; 1685 !
; 1686 ! Invalid destination node type
; 1687 !
; 1688
; 1689 else BPT(XPT$_IANT,.Nty);
; 1690 return;
; 1691 end; !End of RCVPH2
.SBTTL RCVPH2
000000 004167 000000G RCVPH2::
U.3: JSR R1,$SAVE5 ; 1187
000004 162706 000024 SUB #24,SP
000010 016666 000042 000002 MOV 42(SP),2(SP) ; CCB.P,* 1515
000016 016600 000002 MOV 2(SP),R0
000022 116066 000010 000010 MOVB 10(R0),10(SP) ; *,ILINE
000030 105066 000011 CLRB 11(SP) ; ILINE
000034 016600 000010 MOV 10(SP),R0 ; ILINE,* 1516
000040 004767 000000G JSR PC,GTLINE
000044 010066 000006 MOV R0,6(SP) ; *,LINEB
000050 116002 000002 MOVB 2(R0),R2 ; *(LINEB),* 1517
000054 020227 000005 CMP R2,#5
000060 001451 BEQ 2$
000062 020227 000004 CMP R2,#4 ; 1518
000066 001446 BEQ 2$
000070 016601 000002 MOV 2(SP),R1 ; 1520
000074 016100 000022 MOV 22(R1),R0
000100 020027 000023 CMP R0,#23
000104 003402 BLE 1$
000106 012700 000023 MOV #23,R0
000112 010003 1$: MOV R0,R3 ; *,RET
000114 004767 000000G JSR PC,$NLBEG ; 1521
000120 012746 000001 MOV #1,-(SP) ; 1522
000124 010300 MOV R3,R0 ; RET,*
000126 016604 000004 MOV 4(SP),R4
000132 016401 000020 MOV 20(R4),R1
000136 004767 000000G JSR PC,$DPHI
000142 012700 000404 MOV #404,R0 ; 1523
000146 016603 000010 MOV 10(SP),R3 ; LINEB,*
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 48
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
000152 016301 000034 MOV 34(R3),R1 ; *(LINEB),*
000156 004767 000000G JSR PC,$NLEND
000162 016616 000004 MOV 4(SP),(SP) ; 1524
000166 012746 177760 MOV #-20,-(SP)
000172 004767 000000G JSR PC,TERMINATE
000176 022626 CMP (SP)+,(SP)+ ; 1517
000200 000167 002146 JMP 40$ ; 1518
000204 005005 2$: CLR R5 ; ICPTD 1528
000206 020227 000004 CMP R2,#4 ; 1529
000212 001001 BNE 3$
000214 005205 INC R5 ; ICPTD
000216 004767 000000G 3$: JSR PC,$CCBGT ; 1535
000222 103403 BCS 4$
000224 010466 000004 MOV R4,4(SP) ; $MCB$R4,CCB
000230 000412 BR 5$
000232 016646 000002 4$: MOV 2(SP),-(SP) ; 1536
000236 005046 CLR -(SP)
000240 005046 CLR -(SP)
000242 016646 000016 MOV 16(SP),-(SP) ; ILINE,*
000246 004767 177262 JSR PC,U.27
000252 000167 002070 JMP 39$ ; 1535
000256 016600 000004 5$: MOV 4(SP),R0 ; CCB,* 1537
000262 016660 000002 000004 MOV 2(SP),4(R0) ; *,*(CCB)
000270 105060 000032 CLRB 32(R0) ; *(CCB) 1538
000274 105060 000033 CLRB 33(R0) ; *(CCB) 1539
000300 012700 000016 MOV #16,R0 ; 1545
000304 066600 000002 ADD 2(SP),R0
000310 010066 000016 MOV R0,16(SP)
000314 011067 000000G MOV (R0),KISAR6
000320 012700 000020 MOV #20,R0
000324 066600 000002 ADD 2(SP),R0
000330 010066 000014 MOV R0,14(SP)
000334 011001 MOV (R0),R1 ; *,PTR
000336 132721 000002 BITB #2,(R1)+ ; *,PTR 1546
000342 001421 BEQ 6$
000344 010146 MOV R1,-(SP) ; PTR,* 1547
000346 005316 DEC (SP)
000350 016646 000012 MOV 12(SP),-(SP) ; ILINE,*
000354 012746 000030 MOV #30,-(SP)
000360 060616 ADD SP,(SP) ; SOURCE,*
000362 012746 000030 MOV #30,-(SP)
000366 060616 ADD SP,(SP) ; DEST,*
000370 004767 000000V JSR PC,U.6
000374 010003 MOV R0,R3 ; *,RET
000376 012766 000001 000010 MOV #1,10(SP) ; *,ISHDR 1549
000404 000432 BR 7$ ; 1546
000406 012746 000024 6$: MOV #24,-(SP) ; 1553
000412 060616 ADD SP,(SP) ; SOURCE,*
000414 012746 000024 MOV #24,-(SP)
000420 060616 ADD SP,(SP) ; DEST,*
000422 005046 CLR -(SP)
000424 016646 000010 MOV 10(SP),-(SP)
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 49
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
000430 012746 000004 MOV #4,-(SP)
000434 012746 000000G MOV #INTPH2,-(SP)
000440 016700 000002G MOV .CRDAT+2,R0
000444 005046 CLR -(SP)
000446 116016 000002 MOVB 2(R0),(SP)
000452 004767 000000G JSR PC,$CALLE
000456 010003 MOV R0,R3 ; *,RET 1552
000460 005066 000016 CLR 16(SP) ; ISHDR 1554
000464 005005 CLR R5 ; ICPTD 1555
000466 062706 000006 ADD #6,SP ; 1551
000472 005703 7$: TST R3 ; RET 1557
000474 003011 BGT 8$
000476 016616 000014 MOV 14(SP),(SP) ; CCB,* 1558
000502 016646 000012 MOV 12(SP),-(SP)
000506 016646 000022 MOV 22(SP),-(SP) ; ILINE,*
000512 010346 MOV R3,-(SP) ; RET,*
000514 005416 NEG (SP)
000516 000453 BR 11$
000520 016666 000030 000022 8$: MOV 30(SP),22(SP) ; DEST,* 1560
000526 016600 000022 MOV 22(SP),R0
000532 004767 000000G JSR PC,GTNODE
000536 010002 MOV R0,R2 ; *,NODEB
000540 005004 CLR R4 ; OLINE 1566
000542 032712 000400 BIT #400,(R2) ; *,NODEB 1567
000546 001001 BNE 9$
000550 111204 MOVB (R2),R4 ; NODEB,OLINE
000552 010400 9$: MOV R4,R0 ; OLINE,* 1568
000554 004767 000000G JSR PC,GTLINE
000560 010066 000016 MOV R0,16(SP) ; *,LINEB
000564 005712 TST (R2) ; NODEB 1574
000566 100005 BPL 10$
000570 005704 TST R4 ; OLINE 1575
000572 001435 BEQ 13$
000574 121027 000010 CMPB (R0),#10 ; LINEB,*
000600 001430 BEQ 12$
000602 016600 000020 10$: MOV 20(SP),R0 ; ILINE,* 1576
000606 004767 000000G JSR PC,GTLINE
000612 010066 000016 MOV R0,16(SP) ; *,LINEB
000616 062700 000070 ADD #70,R0 ; 1577
000622 004767 000000G JSR PC,$IC32
000626 016616 000014 MOV 14(SP),(SP) ; CCB,* 1578
000632 016646 000012 MOV 12(SP),-(SP)
000636 016646 000022 MOV 22(SP),-(SP) ; ILINE,*
000642 012746 000001 MOV #1,-(SP)
000646 004767 175632 11$: JSR PC,U.28
000652 062706 000016 ADD #16,SP ; 1574
000656 000167 001470 JMP 40$ ; 1575
000662 005704 12$: TST R4 ; OLINE 1586
000664 001160 BNE 18$
000666 032712 000400 13$: BIT #400,(R2) ; *,NODEB 1587
000672 001542 BEQ 16$
000674 016600 000014 MOV 14(SP),R0 ; CCB,* 1588
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 50
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
000700 017660 000026 000016 MOV @26(SP),16(R0) ; *,*(CCB)
000706 017660 000024 000020 MOV @24(SP),20(R0) ; *,*(CCB) 1589
000714 016602 000012 MOV 12(SP),R2 ; 1590
000720 016260 000022 000022 MOV 22(R2),22(R0) ; *,*(CCB)
000726 116260 000010 000010 MOVB 10(R2),10(R0) ; *,*(CCB) 1591
000734 032766 000001 000010 BIT #1,10(SP) ; *,ISHDR 1592
000742 001421 BEQ 14$
000744 005003 CLR R3 ; RET 1593
000746 152103 BISB (R1)+,R3 ; PTR,RET
000750 010302 MOV R3,R2 ; RET,BUFLEN 1594
000752 062702 000002 ADD #2,R2 ; *,BUFLEN
000756 060301 ADD R3,R1 ; RET,PTR 1595
000760 005000 CLR R0 ; 1592
000762 152100 BISB (R1)+,R0 ; PTR,*
000764 060200 ADD R2,R0 ; BUFLEN,*
000766 010002 MOV R0,R2 ; *,BUFLEN 1596
000770 005202 INC R2 ; BUFLEN
000772 016600 000014 MOV 14(SP),R0 ; CCB,* 1597
000776 060260 000020 ADD R2,20(R0) ; BUFLEN,*(CCB)
001002 160260 000022 SUB R2,22(R0) ; BUFLEN,*(CCB) 1598
001006 016600 000020 14$: MOV 20(SP),R0 ; ILINE,* 1600
001012 004767 000000G JSR PC,GTLINE
001016 010066 000016 MOV R0,16(SP) ; *,LINEB
001022 062700 000056 ADD #56,R0 ; 1601
001026 004767 000000G JSR PC,$IC32
001032 016616 000014 MOV 14(SP),(SP) ; CCB,* 1602
001036 016646 000032 MOV 32(SP),-(SP) ; SOURCE,*
001042 016646 000024 MOV 24(SP),-(SP)
001046 005046 CLR -(SP)
001050 004767 000000G JSR PC,ECLFWD
001054 062706 000006 ADD #6,SP
001060 005300 DEC R0 ; 1604
001062 001413 BEQ 15$
001064 016616 000014 MOV 14(SP),(SP) ; CCB,* 1605
001070 005046 CLR -(SP)
001072 005046 CLR -(SP)
001074 016646 000024 MOV 24(SP),-(SP) ; ILINE,*
001100 004767 176430 JSR PC,U.27
001104 062706 000006 ADD #6,SP
001110 000444 BR 17$ ; 1602
001112 032705 000001 15$: BIT #1,R5 ; *,ICPTD 1606
001116 001441 BEQ 17$
001120 012716 000032 MOV #32,(SP) ; 1608
001124 060616 ADD SP,(SP) ; SOURCE,*
001126 012746 000032 MOV #32,-(SP)
001132 060616 ADD SP,(SP) ; DEST,*
001134 012746 000001 MOV #1,-(SP)
001140 016646 000016 MOV 16(SP),-(SP)
001144 012746 000004 MOV #4,-(SP)
001150 012746 000000G MOV #INTPH2,-(SP)
001154 016700 000002G MOV .CRDAT+2,R0
001160 005046 CLR -(SP)
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 51
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
001162 116016 000002 MOVB 2(R0),(SP)
001166 004767 000000G JSR PC,$CALLE
001172 062706 000014 ADD #14,SP
001176 000411 BR 17$ ; 1587
001200 016616 000022 16$: MOV 22(SP),(SP) ; 1611
001204 012746 100032 MOV #-77746,-(SP)
001210 012746 000002 MOV #2,-(SP)
001214 004767 000000G JSR PC,$IGNAL
001220 022626 CMP (SP)+,(SP)+
001222 000167 001120 17$: JMP 39$ ; 1586
001226 016600 000016 18$: MOV 16(SP),R0 ; LINEB,* 1617
001232 116002 000002 MOVB 2(R0),R2 ; *(LINEB),*
001236 020227 000002 CMP R2,#2
001242 001403 BEQ 19$
001244 020227 000003 CMP R2,#3 ; 1618
001250 001143 BNE 24$
001252 016600 000020 19$: MOV 20(SP),R0 ; ILINE,* 1619
001256 004767 000000G JSR PC,GTLINE
001262 010066 000016 MOV R0,16(SP) ; *,LINEB
001266 016616 000014 MOV 14(SP),(SP) ; CCB,* 1620
001272 016646 000010 MOV 10(SP),-(SP) ; ISHDR,*
001276 016646 000024 MOV 24(SP),-(SP)
001302 016646 000036 MOV 36(SP),-(SP) ; SOURCE,*
001306 005046 CLR -(SP)
001310 004767 000000V JSR PC,U.5
001314 010003 MOV R0,R3 ; *,RET
001316 016600 000026 MOV 26(SP),R0 ; LINEB,* 1621
001322 062700 000070 ADD #70,R0
001326 004767 000000G JSR PC,$IC32
001332 010400 MOV R4,R0 ; OLINE,* 1622
001334 004767 000000G JSR PC,GTLINE
001340 010066 000026 MOV R0,26(SP) ; *,LINEB
001344 016616 000024 MOV 24(SP),(SP) ; CCB,* 1623
001350 010446 MOV R4,-(SP) ; OLINE,*
001352 004767 000000G JSR PC,FORWARDER
001356 010003 MOV R0,R3 ; *,RET
001360 020327 177520 CMP R3,#-260 ; RET,* 1624
001364 001013 BNE 20$
001366 016616 000026 MOV 26(SP),(SP) ; CCB,* 1625
001372 016646 000024 MOV 24(SP),-(SP)
001376 016646 000034 MOV 34(SP),-(SP) ; ILINE,*
001402 012746 000001 MOV #1,-(SP)
001406 004767 175072 JSR PC,U.28
001412 000414 BR 21$
001414 020327 000001 20$: CMP R3,#1 ; RET,* 1627
001420 001414 BEQ 22$
001422 016616 000026 MOV 26(SP),(SP) ; CCB,* 1628
001426 010446 MOV R4,-(SP) ; OLINE,*
001430 016646 000036 MOV 36(SP),-(SP)
001434 016646 000036 MOV 36(SP),-(SP) ; ILINE,*
001440 004767 176070 JSR PC,U.27
001444 062706 000006 21$: ADD #6,SP
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 52
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
001450 000440 BR 23$ ; 1627
001452 016600 000030 22$: MOV 30(SP),R0 ; LINEB,* 1630
001456 062700 000074 ADD #74,R0
001462 004767 000000G JSR PC,$IC32
001466 032705 000001 BIT #1,R5 ; *,ICPTD 1631
001472 001427 BEQ 23$
001474 012716 000044 MOV #44,(SP) ; 1633
001500 060616 ADD SP,(SP) ; SOURCE,*
001502 012746 000044 MOV #44,-(SP)
001506 060616 ADD SP,(SP) ; DEST,*
001510 012746 000001 MOV #1,-(SP)
001514 016646 000030 MOV 30(SP),-(SP)
001520 012746 000004 MOV #4,-(SP)
001524 012746 000000G MOV #INTPH2,-(SP)
001530 016700 000002G MOV .CRDAT+2,R0
001534 005046 CLR -(SP)
001536 116016 000002 MOVB 2(R0),(SP)
001542 004767 000000G JSR PC,$CALLE
001546 062706 000014 ADD #14,SP
001552 062706 000010 23$: ADD #10,SP ; 1618
001556 000551 BR 31$ ; 1617
001560 020227 000004 24$: CMP R2,#4 ; 1641
001564 001405 BEQ 25$
001566 020227 000005 CMP R2,#5 ; 1642
001572 001402 BEQ 25$
001574 000167 000524 JMP 37$
001600 016600 000016 25$: MOV 16(SP),R0 ; LINEB,* 1643
001604 062700 000070 ADD #70,R0
001610 004767 000000G JSR PC,$IC32
001614 020327 000002 CMP R3,#2 ; RET,* 1644
001620 001070 BNE 29$
001622 005003 CLR R3 ; RET 1645
001624 152103 BISB (R1)+,R3 ; PTR,RET
001626 010302 MOV R3,R2 ; RET,BUFLEN 1646
001630 062702 000002 ADD #2,R2 ; *,BUFLEN
001634 060301 ADD R3,R1 ; RET,PTR 1647
001636 005000 CLR R0 ; 1644
001640 152100 BISB (R1)+,R0 ; PTR,*
001642 060200 ADD R2,R0 ; BUFLEN,*
001644 010002 MOV R0,R2 ; *,BUFLEN 1648
001646 005202 INC R2 ; BUFLEN
001650 016616 000014 MOV 14(SP),(SP) ; CCB,* 1649
001654 010246 MOV R2,-(SP) ; BUFLEN,*
001656 016646 000024 MOV 24(SP),-(SP)
001662 016646 000036 MOV 36(SP),-(SP) ; SOURCE,*
001666 010446 MOV R4,-(SP) ; OLINE,*
001670 016646 000030 MOV 30(SP),-(SP) ; ILINE,*
001674 004767 000000V JSR PC,U.4
001700 010003 MOV R0,R3 ; *,RET
001702 020327 177730 CMP R3,#-50 ; RET,* 1651
001706 001012 BNE 26$
001710 016616 000026 MOV 26(SP),(SP) ; CCB,* 1652
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 53
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
001714 010446 MOV R4,-(SP) ; OLINE,*
001716 016646 000036 MOV 36(SP),-(SP)
001722 016646 000036 MOV 36(SP),-(SP) ; ILINE,*
001726 004767 175602 JSR PC,U.27
001732 000415 BR 27$ ; 1651
001734 020327 000001 26$: CMP R3,#1 ; RET,* 1655
001740 001415 BEQ 28$
001742 016616 000026 MOV 26(SP),(SP) ; CCB,* 1656
001746 016646 000024 MOV 24(SP),-(SP)
001752 016646 000034 MOV 34(SP),-(SP) ; ILINE,*
001756 012746 000001 MOV #1,-(SP)
001762 004767 174516 JSR PC,U.28
001766 062706 000030 27$: ADD #30,SP ; 1655
001772 000567 BR 40$
001774 062706 000012 28$: ADD #12,SP ; 1644
002000 000415 BR 30$
002002 016600 000014 29$: MOV 14(SP),R0 ; CCB,* 1662
002006 017660 000026 000016 MOV @26(SP),16(R0) ; *,*(CCB)
002014 017660 000024 000020 MOV @24(SP),20(R0) ; *,*(CCB) 1663
002022 016601 000012 MOV 12(SP),R1 ; 1664
002026 016160 000022 000022 MOV 22(R1),22(R0) ; *,*(CCB)
002034 010400 30$: MOV R4,R0 ; OLINE,* 1666
002036 004767 000000G JSR PC,GTLINE
002042 010066 000016 MOV R0,16(SP) ; *,LINEB
002046 026066 000004 000022 CMP 4(R0),22(SP) ; *(LINEB),* 1667
002054 001413 BEQ 32$
002056 016616 000014 MOV 14(SP),(SP) ; CCB,* 1668
002062 010446 MOV R4,-(SP) ; OLINE,*
002064 016646 000024 MOV 24(SP),-(SP)
002070 016646 000024 MOV 24(SP),-(SP) ; ILINE,*
002074 004767 175434 JSR PC,U.27
002100 022626 CMP (SP)+,(SP)+
002102 000520 31$: BR 38$ ; 1667
002104 016616 000014 32$: MOV 14(SP),(SP) ; CCB,* 1670
002110 010446 MOV R4,-(SP) ; OLINE,*
002112 004767 000000G JSR PC,FORWARDER
002116 010003 MOV R0,R3 ; *,RET
002120 020327 177520 CMP R3,#-260 ; RET,* 1671
002124 001013 BNE 33$
002126 016616 000016 MOV 16(SP),(SP) ; CCB,* 1672
002132 016646 000014 MOV 14(SP),-(SP)
002136 016646 000024 MOV 24(SP),-(SP) ; ILINE,*
002142 012746 000001 MOV #1,-(SP)
002146 004767 174332 JSR PC,U.28
002152 000413 BR 34$
002154 005303 33$: DEC R3 ; RET 1674
002156 001414 BEQ 35$
002160 016616 000016 MOV 16(SP),(SP) ; CCB,* 1675
002164 010446 MOV R4,-(SP) ; OLINE,*
002166 016646 000026 MOV 26(SP),-(SP)
002172 016646 000026 MOV 26(SP),-(SP) ; ILINE,*
002176 004767 175332 JSR PC,U.27
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 54
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (5)
002202 062706 000006 34$: ADD #6,SP
002206 000456 BR 38$ ; 1674
002210 016600 000020 35$: MOV 20(SP),R0 ; LINEB,* 1677
002214 062700 000074 ADD #74,R0
002220 004767 000000G JSR PC,$IC32
002224 006005 ROR R5 ; ICPTD 1678
002226 103406 BLO 36$
002230 016600 000020 MOV 20(SP),R0 ; LINEB,*
002234 126027 000002 000004 CMPB 2(R0),#4 ; *(LINEB),*
002242 001040 BNE 38$
002244 012716 000034 36$: MOV #34,(SP) ; 1680
002250 060616 ADD SP,(SP) ; SOURCE,*
002252 012746 000034 MOV #34,-(SP)
002256 060616 ADD SP,(SP) ; DEST,*
002260 012746 000001 MOV #1,-(SP)
002264 016646 000020 MOV 20(SP),-(SP)
002270 012746 000004 MOV #4,-(SP)
002274 012746 000000G MOV #INTPH2,-(SP)
002300 016700 000002G MOV .CRDAT+2,R0
002304 005046 CLR -(SP)
002306 116016 000002 MOVB 2(R0),(SP)
002312 004767 000000G JSR PC,$CALLE
002316 062706 000014 ADD #14,SP
002322 000410 BR 38$ ; 1641
002324 010216 37$: MOV R2,(SP) ; 1689
002326 012746 100042 MOV #-77736,-(SP)
002332 012746 000002 MOV #2,-(SP)
002336 004767 000000G JSR PC,$IGNAL
002342 005726 TST (SP)+
002344 005726 38$: TST (SP)+ ; 1617
002346 062706 000010 39$: ADD #10,SP ; 1187
002352 062706 000024 40$: ADD #24,SP
002356 000207 RTS PC
; Routine Size: 632 words, Routine Base: $CODE$ + 5324
; Maximum stack depth per invocation: 32 words
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 55
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (6)
; 1692
; 1693 routine PH2HDR (BUFPTR,ILINE,SRCAD,DESTAD) =
; 1694
; 1695 !++
; 1696 ! FUNCTIONAL DESCRIPTION:
; 1697 !
; 1698 ! Analyzes a Phase II routing header and returns the source and
; 1699 ! destination node addresses. It also makes sure that the source
; 1700 ! node name is the same as the adjacent node over the input line.
; 1701 !
; 1702 ! FORMAL PARAMETERS
; 1703 !
; 1704 ! PTR - Character pointer to routing header to analyze
; 1705 ! ILINE - Channel number of input line
; 1706 ! SRCAD - Address of location to return source address
; 1707 ! DESTAD - Address of location to return destination address
; 1708 !
; 1709 ! IMPLICIT INPUTS
; 1710 !
; 1711 ! NONE.
; 1712 !
; 1713 ! ROUTINE VALUE: "Success" or "failure"
; 1714 ! COMPLETION CODES:
; 1715 !
; 1716 ! 1 Success; addresses returned. Header is useable.
; 1717 ! 2 Success; addresses returned. Header is not useable.
; 1718 ! - $XPT$E_UNR Failure; node is unreachable or unknown
; 1719 ! - $XPT$E_RNG Failure; numeric name is out of range
; 1720 ! - $XPT$E_FMT Failure; packet format error
; 1721 !
; 1722 ! SIDE EFFECTS:
; 1723 !
; 1724 ! If "failure" is returned, the source and destination address
; 1725 ! parameters will be set to 0.
; 1726 !
; 1727 !--
; 1728
; 1729 begin
; 1730
; 1731 local LINEb;
; 1732 require 'XPTSYM';
; 1769
; 1770 pointer PTR;
; 1771 local RET,LEN;
; 1772 !local NTT: ref block field(NTTfields); !Addresses Node Translation Table entry
; 1773
; 1774 !
; 1775 ! Try to directly translate destination name into binary
; 1776 !
; 1777
; 1778 .DESTAD = .SRCAD = 0; !Clear out address parameters
; 1779 PTR = ch$plus(.BUFPTR,1); !Address destination name in header
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 56
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (6)
; 1780 LEN = getb(PTR); !Pick up destination name length
; 1781 if .LEN gtru 6 or .LEN eql 0 then !Invalid dest. name length -
; 1782 return (-$XPT$E_FMT); ! return an error
; 1783 RET = CDTB(.PTR,.LEN); ! Call conversion routine
; 1784 if .RET eql 0 or .RET gtr NN then !Invalid node number -
; 1785 return (-$XPT$E_RNG) ! return an error
; 1786 else if .RET gtr 0 then begin !Valid node number obtained -
; 1787 .DESTAD = .RET; ! save it
; 1788 RET = 2 ! and continue
; 1789 end
; 1790
; 1791 !
; 1792 ! If the conversion didn't go, check our own node name
; 1793 !
; 1794
; 1795 else if not begin
; 1796 RET = 1;
; 1797 .DESTAD = .Tid;
; 1798 ((.LEN eql .NODEname_length) and
; 1799 ch$eql(.LEN,.PTR,.NODEname_length,byt$ptr(NODEname,0)))
; 1800 end
; 1801
; 1802 !
; 1803 ! If that didn't work, scan node ID blocks for destination name
; 1804 !
; 1805
; 1806 then begin
; 1807 RET = 0; !Scan through
; 1808 (incr I from 1 to NLN do begin ! all the lines
; 1809 LINEb = $XPT_GET_LINE_DB(.I); ! which have
; 1810 if ((.Nty eql PhTwo) ! adjacent Phase
; 1811 or (.Nty eql TOPS20)) ! II nodes
; 1812 then begin
; 1813 if ((.LEN eql .Nnml) and ! Unequal name lengths disqualify
; 1814 ch$eql(.LEN,.PTR,.LEN, ! Compare node names
; 1815 byt$ptr(Nnm)))
; 1816 then begin ! Hit:
; 1817 .DESTAD = .Nid; ! map to node address
; 1818 exitloop(RET=1) ! and stop search
; 1819 end
; 1820 end
; 1821 end);
; 1822 end;
; 1823
; C 1824 %(!
; C 1825 ! If we didn't find anything, try the Node Translate Table
; C 1826 !
; C 1827
; C 1828 if .RET leq 0 then begin
; C 1829 NTT = VECTOR[NODExlate,1]; !Address first table entry
; C 1830 RET = !Scan through each
; C 1831 (incr I from 1 to .NODExlate do ! table entry
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 57
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (6)
; C 1832 if ch$eql(.LEN,.PTR,.LEN,NTT[NTTname])
; C 1833 then begin ! Hit:
; C 1834 .DESTAD = .NTT[NTTaddr]; ! map to address
; C 1835 exitloop (1) ! stop looking
; C 1836 end
; C 1837 else NTT = NTT[NTTlen]) ! Otherwise, try next entry
; C 1838 end;
; 1839 )%
; 1840
; 1841 !
; 1842 ! Node name not found anywhere - give up
; 1843 !
; 1844
; 1845 if .RET leq 0 then return -$XPT$E_UNR
; 1846
; 1847 !
; 1848 ! Validate source name and pick up source address
; 1849 !
; 1850
; 1851 else begin
; 1852 LINEb = $XPT_GET_LINE_DB(.ILINE); !Address line data base entry
; 1853 PTR = ch$plus(.PTR,.LEN); !Skip past destination name
; 1854 LEN = getb(PTR); !Pick up source node name length
; 1855 if ((.LEN neq .Nnml) !Name lengths don't
; 1856 or ch$neq(.LEN,.PTR,.LEN, ! match or names
; 1857 byt$ptr(Nnm))) ! don't compare -
; 1858 then begin ! clear out
; 1859 .DESTAD = 0; ! destination address
; 1860 return (-$XPT$E_FMT) ! and return an error
; 1861 end
; 1862 else begin !Source name is OK -
; 1863 .SRCAD = .Nid; ! pick up source address
; 1864 return (.RET) ! and return "success"
; 1865 end
; 1866 end
; 1867
; 1868 end; !End of PH2HDR
.SBTTL PH2HDR
000000 004167 000000G ; PH2HDR
U.6: JSR R1,$SAVE5 ; 1693
000004 024646 CMP -(SP),-(SP)
000006 016666 000022 000002 MOV 22(SP),2(SP) ; DESTAD,* 1778
000014 005076 000024 CLR @24(SP) ; SRCAD
000020 005076 000002 CLR @2(SP)
000024 016601 000030 MOV 30(SP),R1 ; BUFPTR,PTR 1779
000030 005201 INC R1 ; PTR 1780
000032 005004 CLR R4 ; LEN
000034 152104 BISB (R1)+,R4 ; PTR,LEN
000036 020427 000006 CMP R4,#6 ; LEN,* 1781
000042 101002 BHI 1$
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 58
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (6)
000044 005704 TST R4 ; LEN
000046 001003 BNE 2$
000050 012700 177774 1$: MOV #-4,R0 ; 1782
000054 000416 BR 4$
000056 010146 2$: MOV R1,-(SP) ; PTR,* 1783
000060 010446 MOV R4,-(SP) ; LEN,*
000062 004767 000000G JSR PC,CDTB
000066 010002 MOV R0,R2 ; *,RET
000070 001405 BEQ 3$ ; 1784
000072 016700 000002G MOV .CRDAT+2,R0
000076 020260 000016 CMP R2,16(R0) ; RET,*
000102 003405 BLE 5$
000104 022626 3$: CMP (SP)+,(SP)+ ; 1785
000106 012700 177776 MOV #-2,R0
000112 000167 000400 4$: JMP 17$
000116 005702 5$: TST R2 ; RET 1786
000120 003405 BLE 6$
000122 010276 000006 MOV R2,@6(SP) ; RET,* 1787
000126 012702 000002 MOV #2,R2 ; *,RET 1788
000132 000515 BR 12$ ; 1786
000134 012702 000001 6$: MOV #1,R2 ; *,RET 1796
000140 016700 000002G MOV .CRDAT+2,R0 ; 1797
000144 016076 000056 000006 MOV 56(R0),@6(SP)
000152 020460 000114 CMP R4,114(R0) ; LEN,* 1798
000156 001016 BNE 7$
000160 010416 MOV R4,(SP) ; LEN,* 1799
000162 010146 MOV R1,-(SP) ; PTR,*
000164 016046 000114 MOV 114(R0),-(SP)
000170 012746 000116 MOV #116,-(SP)
000174 060016 ADD R0,(SP)
000176 005046 CLR -(SP)
000200 004767 000000G JSR PC,BL$EQL
000204 062706 000010 ADD #10,SP
000210 006000 ROR R0
000212 103464 BLO 11$
000214 005002 7$: CLR R2 ; RET 1807
000216 016700 000002G MOV .CRDAT+2,R0 ; 1808
000222 016005 000022 MOV 22(R0),R5
000226 005003 CLR R3 ; I
000230 000452 BR 10$
000232 010300 8$: MOV R3,R0 ; I,* 1809
000234 004767 000000G JSR PC,GTLINE
000240 010066 000004 MOV R0,4(SP) ; *,LINEB
000244 126027 000002 000004 CMPB 2(R0),#4 ; *(LINEB),* 1810
000252 001404 BEQ 9$
000254 126027 000002 000005 CMPB 2(R0),#5 ; *(LINEB),* 1811
000262 001035 BNE 10$
000264 016646 000004 9$: MOV 4(SP),-(SP) ; LINEB,* 1813
000270 062716 000007 ADD #7,(SP)
000274 113600 MOVB @(SP)+,R0
000276 020400 CMP R4,R0 ; LEN,*
000300 001026 BNE 10$
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 59
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (6)
000302 010416 MOV R4,(SP) ; LEN,* 1815
000304 010146 MOV R1,-(SP) ; PTR,*
000306 010446 MOV R4,-(SP) ; LEN,*
000310 016646 000010 MOV 10(SP),-(SP) ; LINEB,*
000314 062716 000010 ADD #10,(SP)
000320 005046 CLR -(SP)
000322 004767 000000G JSR PC,BL$EQL
000326 062706 000010 ADD #10,SP
000332 006000 ROR R0
000334 103010 BCC 10$
000336 016600 000004 MOV 4(SP),R0 ; LINEB,* 1817
000342 016076 000004 000006 MOV 4(R0),@6(SP) ; *(LINEB),*
000350 012702 000001 MOV #1,R2 ; *,RET 1818
000354 000404 BR 12$
000356 005203 10$: INC R3 ; I 1808
000360 020305 CMP R3,R5 ; I,*
000362 003723 BLE 8$
000364 005702 11$: TST R2 ; RET 1845
000366 003003 12$: BGT 13$
000370 012700 177777 MOV #-1,R0
000374 000447 BR 16$
000376 016600 000032 13$: MOV 32(SP),R0 ; ILINE,* 1852
000402 004767 000000G JSR PC,GTLINE
000406 010066 000004 MOV R0,4(SP) ; *,LINEB
000412 060401 ADD R4,R1 ; LEN,PTR 1853
000414 005004 CLR R4 ; LEN 1854
000416 152104 BISB (R1)+,R4 ; PTR,LEN
000420 010003 MOV R0,R3 ; LINEB,* 1855
000422 116300 000007 MOVB 7(R3),R0 ; *(LINEB),*
000426 020400 CMP R4,R0 ; LEN,*
000430 001016 BNE 14$
000432 010416 MOV R4,(SP) ; LEN,* 1857
000434 010146 MOV R1,-(SP) ; PTR,*
000436 010446 MOV R4,-(SP) ; LEN,*
000440 016646 000010 MOV 10(SP),-(SP) ; LINEB,*
000444 062716 000010 ADD #10,(SP)
000450 005046 CLR -(SP)
000452 004767 000000G JSR PC,BL$NEQ
000456 062706 000010 ADD #10,SP
000462 006000 ROR R0
000464 103005 BCC 15$
000466 005076 000006 14$: CLR @6(SP) ; 1859
000472 012700 177774 MOV #-4,R0 ; 1855
000476 000406 BR 16$
000500 016600 000004 15$: MOV 4(SP),R0 ; LINEB,* 1863
000504 016076 000004 000030 MOV 4(R0),@30(SP) ; *(LINEB),SRCAD
000512 010200 MOV R2,R0 ; RET,* 1855
000514 022626 16$: CMP (SP)+,(SP)+ ; 1693
000516 022626 17$: CMP (SP)+,(SP)+
000520 000207 RTS PC
; Routine Size: 169 words, Routine Base: $CODE$ + 7704
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 60
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (6)
; Maximum stack depth per invocation: 15 words
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 61
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (7)
; 1869
; 1870 routine BLDPH3 (CCB,HDRFLG,DEST,SOURCE,RQR) =
; 1871
; 1872 !++
; 1873 ! FUNCTIONAL DESCRIPTION:
; 1874 !
; 1875 ! This routine builds a Phase III routing header in the spawned CCB.
; 1876 ! All of the information for the header is passed as parameters. If
; 1877 ! HDRFLG is on, the buffer descriptor for the pass-through CCB will be
; 1878 ! adjusted to point past the Phase II routing header in the buffer.
; 1879 !
; 1880 ! FORMAL PARAMETERS
; 1881 !
; 1882 ! CCB - Spawned CCB for the packet for which a header is
; 1883 ! to be built.
; 1884 ! HDRFLG - If this flag is 1, the pass-through CCB will be
; 1885 ! adjusted to point past the Phase II routing header.
; 1886 ! DEST - The destination node address.
; 1887 ! SOURCE - The source node address.
; 1888 ! RQRFLG - The "Rqr" bit in the routing header flags will be set
; 1889 ! to this value.
; 1890 !
; 1891 ! IMPLICIT INPUTS
; 1892 !
; 1893 ! C_STK in the spawned CCB points to the pass-through CCB.
; 1894 !
; 1895 ! ROUTINE VALUE: "Success" only
; 1896 ! COMPLETION CODES:
; 1897 !
; 1898 ! CS_SUC - Success; routing header built.
; 1899 !
; 1900 ! SIDE EFFECTS:
; 1901 !
; 1902 ! The pass-through buffer descriptor may be adjusted. If
; 1903 ! it is, the high-order byte of C_PRM4 in the spawned CCB
; 1904 ! will contain the "adjustment factor" for the descriptor.
; 1905 !
; 1906 !--
; 1907
; 1908 begin
; 1909 map CCB: ref block field (C_XPT_fields);
; 1910 pointer PTR;
; 1911 local BUFPTR,CCB_P,HDRLEN,LEN;
; 1912 map CCB_P: ref block field(C_FIELDS);
; 1913
; 1914 !
; 1915 ! Set up the spawned CCB fields
; 1916 !
; 1917
; 1918 CCB_P = .CCB[C_STK]; !Address the pass-through CCB
; 1919 PTR = byt$ptr(CCB[C_PRM1],0); !Address data area in spawned CCB
; 1920 CCB[C_BIAS] = 0; !Set up the buffer
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 62
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (7)
; 1921 CCB[C_ADDR] = .PTR; ! descriptor to point
; 1922 CCB[C_CNT] = 6; ! to the data area
; 1923 CCB[C_CHN] = .CCB_P; !Chain pass-through off
; 1924
; 1925 !
; 1926 ! Build the routing header
; 1927 !
; 1928
; 1929 putb(if .RQR then 10 else 2,PTR); !Put in the routing flags
; 1930 putw(.DEST,PTR); ! and the destination address
; 1931 putw(.SOURCE,PTR); ! and the source address
; 1932 putb(1,PTR); ! and the Visits field
; 1933
; 1934 !
; 1935 ! If specified, adjust the pass-through descriptor to
; 1936 ! point past the old routing header
; 1937 !
; 1938
; 1939 if .HDRFLG then begin
; 1940 MAPBUF(.CCB_P,BUFPTR,LEN); !Map in pass-through buffer
; 1941 PTR = ch$plus(.BUFPTR,1); !Point to destination name field
; 1942 LEN = getb(PTR); !Pick up name length
; 1943 PTR = ch$plus(.PTR,.LEN); !Skip past field
; 1944 HDRLEN = 1 + 1 + .LEN;
; 1945 LEN = getb(PTR); !Pick up source name length
; 1946 PTR = ch$plus(.PTR,.LEN); !Skip past name field
; 1947 HDRLEN = .HDRLEN + 1 + .LEN;
; 1948 CCB[C_XPT_ADJUST] = .HDRLEN; !Save "adjustment factor"
; 1949 CCB_P[C_ADDR] = .PTR; !Adjust the buffer descriptor
; 1950 CCB_P[C_CNT] = .CCB_P[C_CNT] - .HDRLEN; !for the pass-through
; 1951 end;
; 1952
; 1953 !
; 1954 ! Return a "success" code
; 1955 !
; 1956
; 1957 return (CS_SUC)
; 1958 end; !End of BLDPH3
.SBTTL BLDPH3
000000 004167 000000G ; BLDPH3
U.5: JSR R1,$SAVE5 ; 1870
000004 005746 TST -(SP)
000006 016605 000030 MOV 30(SP),R5 ; CCB,* 1918
000012 016504 000004 MOV 4(R5),R4 ; *,CCB.P
000016 012700 000024 MOV #24,R0 ; *,PTR 1919
000022 060500 ADD R5,R0 ; *,PTR
000024 005065 000016 CLR 16(R5) ; 1920
000030 010065 000020 MOV R0,20(R5) ; PTR,* 1921
000034 012765 000006 000022 MOV #6,22(R5) ; 1922
000042 010465 000002 MOV R4,2(R5) ; CCB.P,* 1923
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 63
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (7)
000046 032766 000001 000020 BIT #1,20(SP) ; *,RQR 1929
000054 001403 BEQ 1$
000056 012701 000012 MOV #12,R1
000062 000402 BR 2$
000064 012701 000002 1$: MOV #2,R1
000070 110120 2$: MOVB R1,(R0)+ ; *,PTR
000072 016616 000024 MOV 24(SP),(SP) ; DEST,X 1930
000076 111620 MOVB (SP),(R0)+ ; X,PTR
000100 116620 000001 MOVB 1(SP),(R0)+ ; X,PTR
000104 016616 000022 MOV 22(SP),(SP) ; SOURCE,X 1931
000110 111620 MOVB (SP),(R0)+ ; X,PTR
000112 116620 000001 MOVB 1(SP),(R0)+ ; X,PTR
000116 112720 000001 MOVB #1,(R0)+ ; *,PTR 1932
000122 032766 000001 000026 BIT #1,26(SP) ; *,HDRFLG 1939
000130 001432 BEQ 3$
000132 016467 000016 000000G MOV 16(R4),KISAR6 ; *(CCB.P),* 1940
000140 016402 000020 MOV 20(R4),R2 ; *(CCB.P),BUFPTR
000144 010200 MOV R2,R0 ; BUFPTR,PTR 1941
000146 005200 INC R0 ; PTR 1942
000150 005001 CLR R1 ; LEN
000152 152001 BISB (R0)+,R1 ; PTR,LEN
000154 060100 ADD R1,R0 ; LEN,PTR 1943
000156 010102 MOV R1,R2 ; LEN,HDRLEN 1944
000160 062702 000002 ADD #2,R2 ; *,HDRLEN
000164 005001 CLR R1 ; LEN 1945
000166 152001 BISB (R0)+,R1 ; PTR,LEN
000170 060100 ADD R1,R0 ; LEN,PTR 1946
000172 010103 MOV R1,R3 ; LEN,* 1939
000174 060203 ADD R2,R3 ; HDRLEN,*
000176 010302 MOV R3,R2 ; *,HDRLEN 1947
000200 005202 INC R2 ; HDRLEN
000202 110265 000033 MOVB R2,33(R5) ; HDRLEN,* 1948
000206 010064 000020 MOV R0,20(R4) ; PTR,*(CCB.P) 1949
000212 160264 000022 SUB R2,22(R4) ; HDRLEN,*(CCB.P) 1950
000216 012700 000001 3$: MOV #1,R0 ; 1908
000222 005726 TST (SP)+ ; 1870
000224 000207 RTS PC
; Routine Size: 75 words, Routine Base: $CODE$ + 10426
; Maximum stack depth per invocation: 8 words
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 64
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (8)
; 1959
; 1960 routine BLDPH2 (CCB,PT_HDR,DEST,SOURCE,OLINE,ILINE) =
; 1961
; 1962 !++
; 1963 ! FUNCTIONAL DESCRIPTION:
; 1964 !
; 1965 ! This routine builds a Phase II routing header for a data packet. The
; 1966 ! source node name will always be a decimal ASCII representation of the
; 1967 ! specified source node address. The destination node name will be the
; 1968 ! adjacent node over the output line.
; 1969 !
; 1970 ! FORMAL PARAMETERS
; 1971 !
; 1972 ! CCB Spawned CCB for the packet for which a header is to be
; 1973 ! built.
; 1974 ! PT_HDR Flag which, if non-zero, indicates that the pass-through
; 1975 ! buffer contains a routing header which the descriptor
; 1976 ! must be adjusted to point past. The value of PT_HDR is
; 1977 ! the number of bytes to skip over.
; 1978 ! DEST Destination node address
; 1979 ! SOURCE Source node address
; 1980 ! OLINE Channel number of output line
; 1981 ! ILINE Channel number of input line
; 1982 !
; 1983 ! IMPLICIT INPUTS
; 1984 !
; 1985 ! Nty, Nid
; 1986 !
; 1987 ! ROUTINE VALUE: "Success", "unreachable destination", or "resource failure"
; 1988 ! COMPLETION CODES:
; 1989 !
; 1990 ! CS_SUC Success: header built and pointed to by spawned CCB
; 1991 ! CE_DIS Destination is unreachable (it is not the adjacent node)
; 1992 ! CE_RTE Resource failure: could not get an SDB
; 1993 !
; 1994 ! SIDE EFFECTS:
; 1995 !
; 1996 ! The pass-through buffer descriptor may be adjusted. If it is,
; 1997 ! the high-order byte of C_PRM4 in the spawned CCB will contain
; 1998 ! the "adjustment factor" for the descriptor.
; 1999 !
; 2000 !--
; 2001
; 2002 begin
; 2003
; 2004 !-----------------------------------------------!
; 2005 ! !
; 2006 ! Routine to scan for a node as an !
; 2007 ! adjacent Phase II node and, if found, !
; 2008 ! convert it into a ASCII node name. !
; 2009 ! !
; 2010 !-----------------------------------------------!
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 65
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (8)
; 2011
; 2012 linkage CONVERT_LINKAGE = JSR (REGISTER=4,REGISTER=5);
; 2013 routine CONVERT (NODE,LINE,PTRAD): CONVERT_LINKAGE =
; 2014 begin
; 2015
; 2016 local LINEb;
; 2017 require 'XPTSYM';
; 2054
; 2055 LINEb = $XPT_GET_LINE_DB(.LINE); ! Address circuit data base
; 2056
; 2057 if ((.Nty eql PhTwo) or (.Nty eql TOPS20)) ! If adjacent node is Phase
; 2058 then if .Nid eql .NODE then begin ! 2 and is the right one,
; 2059 putb(.Nnml,.PTRAD); ! adjacent node
; 2060 .PTRAD = ch$move(.Nnml, ! name into the
; 2061 byt$ptr(Nnm),..PTRAD); ! specified area,
; 2062 return TRUE ! and say we hit
; 2063 end;
; 2064
; 2065 FALSE ! No hit - say so
; 2066
; 2067 end;
.SBTTL CONVERT
000000 004167 000000G ; CONVERT
U.44: JSR R1,$SAVE5 ; 2013
000004 010500 MOV R5,R0 ; LINE,* 2055
000006 004767 000000G JSR PC,GTLINE
000012 126027 000002 000004 CMPB 2(R0),#4 ; *(LINEB),* 2057
000020 001404 BEQ 1$
000022 126027 000002 000005 CMPB 2(R0),#5 ; *(LINEB),*
000030 001030 BNE 2$
000032 026004 000004 1$: CMP 4(R0),R4 ; *(LINEB),NODE 2058
000036 001025 BNE 2$
000040 016604 000016 MOV 16(SP),R4 ; PTRAD,* 2059
000044 116074 000007 000000 MOVB 7(R0),@0(R4) ; *(LINEB),*
000052 005214 INC (R4)
000054 116005 000007 MOVB 7(R0),R5 ; *(LINEB),* 2061
000060 010546 MOV R5,-(SP)
000062 010046 MOV R0,-(SP) ; LINEB,*
000064 062716 000010 ADD #10,(SP)
000070 011446 MOV (R4),-(SP)
000072 004767 000000G JSR PC,BL$MOV
000076 010014 MOV R0,(R4) ; 2060
000100 062706 000006 ADD #6,SP ; 2058
000104 012700 000001 MOV #1,R0
000110 000207 RTS PC
000112 005000 2$: CLR R0 ; 2013
000114 000207 RTS PC
; Routine Size: 39 words, Routine Base: $CODE$ + 10654
; Maximum stack depth per invocation: 10 words
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 66
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (8)
; 2068 map CCB: ref block field (C_XPT_fields);
; 2069 local NODEb,LINEb;
; 2070 require 'XPTSYM';
; 2107 local RET,SDB_ADDR,LEN,PTRA;
; 2108 local CCB_P: ref block field(C_XPT_fields);
; 2109 pointer PTR;
; 2110
; 2111 !
; 2112 ! Check destination address for validity
; 2113 !
; 2114
; 2115 LINEb = $XPT_GET_LINE_DB(.OLINE); !Address output line data base entry
; 2116 if (.Nid neq .DEST) then !Destination is not adjacent over
; 2117 return (CE_DIS); ! output line - return "unreachable"
; 2118
; 2119 !
; 2120 ! Get an SDB
; 2121 !
; 2122
; 2123 if not GETBUF(15,CCB) then !Couldn't get one -
; 2124 return (CE_RTE); ! return "resource failure"
; 2125 CCB[C_CHN] = CCB_P = .CCB[C_STK]; !Chain the CCBs
; 2126
; 2127 !
; 2128 ! Build the header
; 2129 !
; 2130
; 2131 MAPBUF(.CCB,SDB_ADDR,LEN); !Map in the SDB
; 2132 PTR = .SDB_ADDR;
; 2133 putb(PH2_RTflgs,PTR); !Put in the RTFLGS
; 2134 putb(.Nnml,PTR); !Move in the destination name length
; 2135 PTR = ch$move(.Nnml, !Move in the destination
; 2136 byt$ptr(Nnm),.PTR); ! node name from the ID block
; 2137 PTRA = ch$plus(.PTR,1); !Point to source name field
; 2138 LINEb = $XPT_GET_LINE_DB(.ILINE);
; 2139 NODEb = $XPT_GET_NODE_DB(.SOURCE); ! Address source node data base entry
; 2140 if .SOURCE eql .Tid ! Source is local node -
; 2141 then begin
; 2142 putb(.NODEname_length,PTR); ! move in
; 2143 PTRA = ch$move(.NODEname_length, ! the local
; 2144 byt$ptr(NODEname,0),.PTRA); ! node name
; 2145 end
; 2146 else if not (.Phase2_node and
; 2147 begin
; 2148 PTRA = .PTR;
; 2149 if CONVERT(.SOURCE,.ILINE,PTRA) then TRUE
; 2150 else if (decr J from NLN to 1 do
; 2151 (if CONVERT(.SOURCE,.J,PTRA) then exitloop(0))) eql 0
; 2152 then TRUE
; 2153 else FALSE
; 2154 end)
; 2155 then if ((.ILINE neq 0)
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 67
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (8)
; 2156 and ((.Nty eql PhTwo) ! Source is
; 2157 or (.Nty eql TOPS20)) ! adjacent and
; 2158 and (.Nid eql .SOURCE)) ! Phase II:
; 2159 then begin !
; 2160 putb(.Nnml,PTR); ! adjacent
; 2161 PTRA = ch$move(.Nnml, ! node name
; 2162 byt$ptr(Nnm),.PTRA); ! into the header
; 2163 end
; 2164 else begin ! Otherwise -
; 2165 RET = CBTD(PTRA,.SOURCE);! translate the source address
; 2166 putb(.RET,PTR); ! to ASCII and move in the
; 2167 end; ! translated name length
; 2168 CCB[C_CNT] = ch$diff(.PTRA,.SDB_ADDR); !Calculate length of header
; 2169
; 2170
; 2171 !
; 2172 ! If requested to do so, adjust the buffer descriptor of the
; 2173 ! pass-through CCB to point past an old header
; 2174 !
; 2175
; 2176 if .PT_HDR neq 0 then begin
; 2177 CCB[C_XPT_ADJUST] = .PT_HDR; !Set up adjustment factor
; 2178 CCB_P[C_ADDR] = ch$plus !Bump buffer address
; 2179 (.CCB_P[C_ADDR],.PT_HDR); ! past Phase III header
; 2180 CCB_P[C_CNT] = .CCB_P[C_CNT] - .PT_HDR; !Also adjust count
; 2181 end;
; 2182
; 2183 !
; 2184 ! Return "success"
; 2185 !
; 2186
; 2187 return (CS_SUC)
; 2188 end; !End of BLDPH2
.SBTTL BLDPH2
000000 004167 000000G ; BLDPH2
U.4: JSR R1,$SAVE5 ; 1960
000004 162706 000010 SUB #10,SP
000010 016600 000030 MOV 30(SP),R0 ; OLINE,* 2115
000014 004767 000000G JSR PC,GTLINE
000020 010066 000004 MOV R0,4(SP) ; *,LINEB
000024 026066 000004 000034 CMP 4(R0),34(SP) ; *(LINEB),DEST 2116
000032 001403 BEQ 1$
000034 012700 177520 MOV #-260,R0 ; 2117
000040 000423 BR 3$
000042 012701 000017 1$: MOV #17,R1 ; 2123
000046 004767 000000G JSR PC,$CORGT
000052 103414 BCS 2$
000054 016601 000040 MOV 40(SP),R1 ; CCB,*
000060 010061 000020 MOV R0,20(R1) ; $MCB$R0,*
000064 010100 MOV R1,R0 ; CCB,*
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 68
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (8)
000066 016760 000000G 000016 MOV KISAR6,16(R0)
000074 012760 000017 000034 MOV #17,34(R0)
000102 000404 BR 4$
000104 012700 177730 2$: MOV #-50,R0 ; 2124
000110 000167 000512 3$: JMP 16$
000114 016666 000040 000002 4$: MOV 40(SP),2(SP) ; CCB,* 2125
000122 016600 000002 MOV 2(SP),R0
000126 016003 000004 MOV 4(R0),R3 ; *,CCB.P
000132 010360 000002 MOV R3,2(R0) ; CCB.P,*
000136 016067 000016 000000G MOV 16(R0),KISAR6 ; 2131
000144 016016 000020 MOV 20(R0),(SP) ; *,SDB.ADDR
000150 011601 MOV (SP),R1 ; SDB.ADDR,PTR 2132
000152 112721 000106 MOVB #106,(R1)+ ; *,PTR 2133
000156 016600 000004 MOV 4(SP),R0 ; LINEB,* 2134
000162 116021 000007 MOVB 7(R0),(R1)+ ; *(LINEB),PTR
000166 010002 MOV R0,R2 ; LINEB,* 2136
000170 116200 000007 MOVB 7(R2),R0 ; *(LINEB),*
000174 010046 MOV R0,-(SP)
000176 016646 000006 MOV 6(SP),-(SP) ; LINEB,*
000202 062716 000010 ADD #10,(SP)
000206 010146 MOV R1,-(SP) ; PTR,*
000210 004767 000000G JSR PC,BL$MOV
000214 010001 MOV R0,R1 ; *,PTR 2135
000216 012766 000001 000014 MOV #1,14(SP) ; *,PTRA 2137
000224 060166 000014 ADD R1,14(SP) ; PTR,PTRA
000230 016602 000034 MOV 34(SP),R2 ; ILINE,* 2138
000234 010200 MOV R2,R0
000236 004767 000000G JSR PC,GTLINE
000242 010066 000012 MOV R0,12(SP) ; *,LINEB
000246 016604 000040 MOV 40(SP),R4 ; SOURCE,* 2139
000252 010400 MOV R4,R0
000254 004767 000000G JSR PC,GTNODE
000260 010005 MOV R0,R5 ; *,NODEB
000262 016700 000002G MOV .CRDAT+2,R0 ; 2140
000266 020460 000056 CMP R4,56(R0)
000272 001017 BNE 5$
000274 116021 000114 MOVB 114(R0),(R1)+ ; *,PTR 2142
000300 016016 000114 MOV 114(R0),(SP) ; 2144
000304 012746 000116 MOV #116,-(SP)
000310 060016 ADD R0,(SP)
000312 016646 000016 MOV 16(SP),-(SP) ; PTRA,*
000316 004767 000000G JSR PC,BL$MOV
000322 010066 000020 MOV R0,20(SP) ; *,PTRA 2143
000326 022626 CMP (SP)+,(SP)+ ; 2141
000330 000511 BR 14$ ; 2140
000332 032715 001000 5$: BIT #1000,(R5) ; *,NODEB 2146
000336 001434 BEQ 10$
000340 010166 000014 MOV R1,14(SP) ; PTR,PTRA 2148
000344 012716 000014 MOV #14,(SP) ; 2149
000350 060616 ADD SP,(SP) ; PTRA,*
000352 010205 MOV R2,R5
000354 004767 177302 JSR PC,U.44
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 69
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (8)
000360 006000 ROR R0
000362 103474 BLO 14$
000364 016705 000002G MOV .CRDAT+2,R5 ; 2150
000370 016505 000022 MOV 22(R5),R5 ; *,J
000374 003412 BLE 8$
000376 012716 000014 6$: MOV #14,(SP) ; 2151
000402 060616 ADD SP,(SP) ; PTRA,*
000404 004767 177252 JSR PC,U.44
000410 006000 ROR R0
000412 103002 BCC 7$
000414 005000 CLR R0
000416 000403 BR 9$
000420 077512 7$: SOB R5,6$ ; J,* 0000
000422 012700 177777 8$: MOV #-1,R0 ; 2150
000426 001452 9$: BEQ 14$
000430 005702 10$: TST R2 ; 2155
000432 001440 BEQ 12$
000434 016600 000012 MOV 12(SP),R0 ; LINEB,* 2156
000440 126027 000002 000004 CMPB 2(R0),#4 ; *(LINEB),*
000446 001404 BEQ 11$
000450 126027 000002 000005 CMPB 2(R0),#5 ; *(LINEB),* 2157
000456 001026 BNE 12$
000460 016600 000012 11$: MOV 12(SP),R0 ; LINEB,* 2158
000464 026004 000004 CMP 4(R0),R4 ; *(LINEB),*
000470 001021 BNE 12$
000472 116011 000007 MOVB 7(R0),(R1) ; *(LINEB),PTR 2160
000476 010002 MOV R0,R2 ; LINEB,* 2162
000500 116200 000007 MOVB 7(R2),R0 ; *(LINEB),*
000504 010016 MOV R0,(SP)
000506 010246 MOV R2,-(SP) ; LINEB,*
000510 062716 000010 ADD #10,(SP)
000514 016646 000016 MOV 16(SP),-(SP) ; PTRA,*
000520 004767 000000G JSR PC,BL$MOV
000524 010066 000020 MOV R0,20(SP) ; *,PTRA 2161
000530 005726 TST (SP)+ ; 2159
000532 000407 BR 13$ ; 2155
000534 012716 000014 12$: MOV #14,(SP) ; 2165
000540 060616 ADD SP,(SP) ; PTRA,*
000542 010446 MOV R4,-(SP)
000544 004767 000000G JSR PC,CBTD
000550 110011 MOVB R0,(R1) ; RET,PTR 2166
000552 005726 13$: TST (SP)+ ; 2155
000554 016600 000014 14$: MOV 14(SP),R0 ; PTRA,* 2168
000560 166600 000006 SUB 6(SP),R0 ; SDB.ADDR,*
000564 016601 000010 MOV 10(SP),R1
000570 010061 000022 MOV R0,22(R1)
000574 016600 000044 MOV 44(SP),R0 ; PT.HDR,* 2176
000600 001406 BEQ 15$
000602 110061 000033 MOVB R0,33(R1) ; 2177
000606 060063 000020 ADD R0,20(R3) ; *,*(CCB.P) 2179
000612 160063 000022 SUB R0,22(R3) ; *,*(CCB.P) 2180
000616 062706 000006 15$: ADD #6,SP ; 1960
XPTSEL 15-Nov-1984 10:31:04 TOPS-20 Bliss-16 2A(530) Page 70
X01730 23-Sep-1983 09:35:45 RATS:<BANKS.MCB.XPT>XPTSEL.BLI.1 (8)
000622 012700 000001 MOV #1,R0 ; 2002
000626 062706 000010 16$: ADD #10,SP ; 1960
000632 000207 RTS PC
; Routine Size: 206 words, Routine Base: $CODE$ + 10772
; Maximum stack depth per invocation: 16 words
; 2189
; 2190 end !End of module XPTSEL
; 2191 eludom
; OTS external references
.GLOBL $SAVE5, $SAVE4, $STOP, $IGNAL
.GLOBL BL$NEQ, BL$EQL, BL$MOV
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $PLIT$ 2 RO , D , LCL, REL, CON
; $CODE$ 2507 RO , I , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; RATS:<BANKS.MCB.MCB>XPORTX.L16.10 599 2 0 0
; RATS:<BANKS.MCB.MCB>MCBLIB.L16.6 372 44 11 0
; RATS:<BANKS.MCB.MCB>NMXLIB.L16.5 200 11 5 0
; RATS:<BANKS.MCB.XPT>XPTLIB.L16.3 510 196 38 0
; Size: 2507 code + 2 data words
; Run Time: 00:46.4
; Elapsed Time: 03:58.5
; Memory Used: 94 pages
; Compilation Complete
ADDRESS 399+ 401+ 402+ 404+ 405+ 407+ 408+ 414+ 415+ 418+ 419+ 420+
BAD_ROUT_HDR 1509#
BITOFF 1304 1332
BITON 879 880 1546
BLDPH2 339 736 1152 1649 1960*
BLDPH3 340 746 1620 1870*
BPT 428+# 440+# 1116 1182 1611 1689
BUFCHK 432+ 433+# 442+ 443+#
BUFLEN 1507 1594# 1596# 1597 1598 1646# 1648# 1649
BUFPTR 1693 1779 1911 1940 1941
BUFSIZE 671 673# 675# 677
BYT$PTR 1338 1342 1374 1799 1815 1857 1919 2061 2136 2144 2162
CALL$E 791 1010 1064 1173 1373 1552 1607 1632 1679
CALLER 569 577 651# 695 772
CB 577 619 629 630 631
CBTD 477 2165
CCB 450 452 453 454 455# 567 644# 645 649 650 651 665
667# 677 679 685# 686# 695 707# 709 710# 711 714 736
746 753 760 772 779 780 781 875 890 937 945 958
1000 1013# 1014# 1015# 1016 1020 1022 1024 1074 1078# 1079# 1094
1106# 1107# 1108# 1109# 1112 1114 1124# 1125# 1126# 1130 1132 1135
1149 1152 1155 1159 1162 1164 1167 1241 1243 1322 1355 1359
1360 1361 1364# 1365# 1366# 1367# 1368# 1373 1388 1390 1432 1447
1448 1449 1459 1504 1535 1537# 1538# 1539# 1558 1578 1588# 1589#
1590# 1591# 1597# 1598# 1602 1605 1620 1623 1625 1628 1649 1652
1656 1662# 1663# 1664# 1668 1670 1672 1675 1870 1909 1918 1919
1920# 1921# 1922# 1923# 1948# 1960 2068 2123 2125# 2131 2168# 2177#
CCBGT$ 1074 1535
CCBRT$ 753
CCB_P 483 568 644 672 685 708 716 791 799 876 958 1001
1005 1010 1013 1014 1015 1020 1035 1050 1064 1066 1075 1078
1094 1106 1107 1108 1109 1124 1125 1126 1132 1156 1159 1164
1168 1173 1187 1241 1282 1291 1311 1360# 1361# 1366 1367 1430
1432# 1448 1505 1515 1520 1522 1524 1536 1537 1545 1553 1558
1578 1588 1589 1590 1591 1607 1625 1632 1656 1662 1663 1664
1672 1680 1911 1912 1918# 1923 1940 1949# 1950# 2108 2125# 2178#
2179 2180#
CDTB 476 1783
CE_DIS 632 771 1022 1024 1131 1149 1158 1163 1355 1624 1671 2117
CE_ERR 648 721 735 1066 1524
CE_RTE 666 680 714 778 782 945 1154 1459 1651 2124
CHKBUF 435+* 436+
CONVERT 2013* 2149 2151
CONVERT_LINKAGE 2012# 2013#
COUNTER_INCREMENT 621 762 940 943 1007 1008 1061 1062 1096 1111 1128 1136
1146 1171 1299 1301 1302 1453 1457 1577 1601 1621 1630 1643
1677
CS_SUC 712 716 718 753 761 793 1021 1113 1134 1166 1604 1627
1655 1674 1957 2187
C_ADDR 453 709 1010 1014 1016 1064 1107 1125 1360 1367 1522 1589
1597 1663 1921 1949 2178 2179
C_BIAS 454 709 1013 1106 1124 1366 1588 1662 1920
C_CHN 676 1368 1923 2125
C_CNT 675 707 1015 1108 1126 1361 1520 1590 1598 1664 1922 1950
2168 2180
C_FIELDS 568 671 876 1000 1001 1505 1912
C_LIN 650 1020 1050 1109 1515 1591
C_LIX 710 1005
C_OWN 1447
C_PIX 651
C_PRM1 649 1919
C_PRM2 645
C_PRM4 686 1079
C_PRM5 714
C_STK 685 1078 1432 1537 1918 2125
C_XPT_ADJUST 1359 1360 1361 1365 1539 1948 2177
C_XPT_ALLOCATION 455 629 630 667 779 780
C_XPT_FIELDS 452 567 619 875 1243 1282 1390 1504 1909 2068 2108
C_XPT_TYPE 1364 1538
DC_MSGFLGS 1354
DEST 569 577 625 645# 646 696 711 734 736 746 772 792
877 890 936 958 1019 1037# 1047 1075 1087 1094 1112 1114
1116 1133 1135 1148 1152 1156 1160 1165 1168 1173 1388 1439
1507 1548 1553 1560 1603 1608 1611 1620 1628 1633 1649 1652
1667 1668 1675 1680 1870 1930 1960 2116
DESTAD 1693 1778# 1787# 1797# 1817# 1859#
DLLQUOTA 1371#
ECLFWD 475 711 1112 1602
FALSE 458 1087 1090 1554 2065 2153
FORWARDER 474* 760 1020 1130 1162 1623 1670
FULL 1122 1617
GETB 1036 1303 1306 1308 1331 1336 1340 1344 1546 1593 1596 1645
1648 1780 1854 1942 1945
GETBUF 450# 677 2123
GETQ 399+#
GETW 378+# 401+ 402+ 1037# 1038 1347 1348
HDRFLG 1870 1939
HDRLEN 1911 1944# 1947# 1948 1950
I 423+ 425+ 1808 1809
ICPTD 1507 1528# 1529# 1555# 1606 1631 1678
ILINE 877 890 942 1050# 1051 1075 1095 1110 1114 1127 1135 1145
1153 1156 1168 1241 1292 1322 1388 1443 1444 1456 1507 1515#
1516 1536 1547 1558 1576 1578 1600 1605 1619 1625 1628 1650
1652 1656 1668 1672 1675 1693 1852 1960 2138 2149 2155
INPUTCOUNT 1370#
INPUTQUOTA 717#
INTPH2 791 1173 1552 1607 1632 1679
ISHDR 1507 1549# 1554# 1592 1620
J 423+ 425+ 2150 2151
LEN 450 453 455 1771 1780# 1781 1783 1798 1799 1813 1814 1853
1854# 1855 1856 1911 1940 1942# 1943 1944 1945# 1946 1947 2107
2131
LEND 1283 1333# 1340# 1341 1343 1374
LENS 1283 1336# 1337 1339 1374
LINE 2013 2055
LINEBLOCK 557+ 609+ 865+ 922+ 990+ 1272+ 1420+ 1494+ 1759+ 2044+ 2097+
LINEB 529 555+ 557+ 607+ 609+ 692# 728# 762 837 863+ 865+ 893
920+ 922+ 933# 940 942# 943 962 988+ 990+ 1005# 1051# 1062
1085# 1095# 1096 1110# 1111 1127# 1128 1129# 1136 1145# 1146 1147#
1171 1244 1270+ 1272+ 1292# 1373 1392 1418+ 1420+ 1436# 1443# 1452#
1453 1456# 1457 1466 1492+ 1494+ 1516# 1568# 1576# 1577 1600# 1601
1619# 1621 1622# 1630 1643 1666# 1677 1731 1757+ 1759+ 1809# 1852#
2016 2042+ 2044+ 2055# 2069 2095+ 2097+ 2115# 2138#
LINESTATE 694 1089 1575
LINKD 1283 1348# 1374
LINKS 1283 1347# 1374
LOCAL_NODE 658 705 1049 1105 1567 1587
M 423+ 424+
MAPBUF 1035 1291 1311 1545 1940 2131
MATRIX 423+# 425+
MAXV 1057 1058
MCB$GAW_PROCESS_DATA_BASE 560+ 561+ 564+ 612+ 613+ 616+ 868+ 869+ 872+ 925+ 926+ 929+
993+ 994+ 997+ 1275+ 1276+ 1279+ 1423+ 1424+ 1427+ 1497+ 1498+ 1501+
1762+ 1763+ 1766+ 2047+ 2048+ 2051+ 2100+ 2101+ 2104+
MISC_ERROR 1375
N 423+ 424+
NID 734 936 1148 1439 1667 1817 1863 2058 2116 2158
NL 423+ 425+
NLN 1808 2150
NMXID 1011 1315 1523
NN 1087 1784
NNM 1815 1857 2061 2136 2162
NNML 1813 1855 2059 2060 2134 2135 2160 2161
NODE 2013 2058
NODEBLOCK 552+ 604+ 860+ 917+ 985+ 1267+ 1415+ 1489+ 1754+ 2039+ 2092+
NODEB 529 550+ 552+ 602+ 604+ 646# 647# 837 858+ 860+ 915+ 917+
983+ 985+ 1047# 1265+ 1267+ 1413+ 1415+ 1466 1487+ 1489+ 1560# 1752+
1754+ 2037+ 2039+ 2069 2090+ 2092+ 2139#
NODENAME 1799 2144
NODENAME_LENGTH 1798 1799 2142 2143
NOP 440+ 441+ 443+
NO_LINEB 556+ 581# 608+ 864+ 921+ 989+ 1271+ 1419+ 1493+ 1758+ 2043+ 2096+
NO_NODEB 551+ 580# 603+ 859+ 894# 916+ 961# 984+ 1266+ 1414+ 1488+ 1753+
2038+ 2091+
NO_PATH_ERROR 1375 1508#
NTY 729 730 935 1122 1123 1143 1144 1172 1182 1321 1438 1445
1517 1518 1529 1617 1618 1641 1642 1678 1689 1810 1811 2057
2156 2157
OL 659 1049 1567
OLINE 569 650# 657 659# 669 684 692 694 704 728 737 760
877 890 933 934 939 1048# 1049# 1075 1085 1089 1104 1114
1129 1130 1135 1147 1153 1156 1162 1168 1388 1436 1437 1451
1452 1507 1566# 1567# 1568 1575 1586 1622 1623 1628 1650 1652
1666 1668 1670 1675 1960 2115
OTYPE 569 706# 731# 732# 745# 790
PARAMETER_CM 623
PARAMETER_DU_2 625 626
PARAMETER_HI 1313 1522
PARAMETER_H_1 624 627
PD_XPE 791 1010 1064 1173 1373 1552 1607 1632 1679
PD_XPT 1447
PH2HDR 341 1547 1693*
PH2_RTFLGS 2133
PHASE2_NODE 2146
PHTWO 729 730 935 1143 1172 1438 1445 1518 1529 1641 1678 1810
2057 2156
PKTA_HDR 1010 1064
POINTER 878 1003 1285 1506 1770 1910 2109
PTR 378+ 381+ 382+ 385+ 388+ 389+ 395+ 396+ 399+ 401+ 402+ 404+
407+ 408+ 409+ 410+ 414+ 415+ 878 1003 1016# 1017 1018 1019
1035 1036 1037 1038 1039 1041 1285 1291 1303 1306 1307# 1308
1311 1314 1331 1336 1337 1339# 1340 1341 1343# 1344 1347 1348
1506 1545 1546 1547 1593 1595# 1596 1645 1647# 1648 1770 1779#
1780 1783 1799 1814 1853# 1854 1856 1910 1919# 1921 1929 1930
1931 1932 1941# 1942 1943# 1945 1946# 1949 2109 2132# 2133 2134
2135# 2136 2137 2142 2148 2160 2166
PTRA 2107 2137# 2143# 2144 2148# 2149 2151 2161# 2162 2165 2168
PTRAD 2013 2059 2060# 2061
PT_HDR 1960 2176 2177 2179 2180
PUTB 1017 1929 1932 2059 2133 2134 2142 2160 2166
PUTQ 404+#
PUTW 385+# 414+ 415+ 1018 1019 1930 1931
RCVDAT 337 799*
RCVECL 336 483*
RCVPH2 338 1187*
REACH 693 1088 1574
RET 569 702 733# 746# 753 760# 763 771 778 877 1087# 1090#
1094 1130# 1131 1134 1152# 1154 1158 1162# 1163 1166 1283 1303#
1304# 1306# 1307 1308# 1310# 1314 1331# 1332 1344# 1354 1507 1519
1520# 1522 1547# 1552# 1557 1558 1593# 1594 1595 1620# 1623# 1624
1627 1644 1645# 1646 1647 1649# 1651 1655 1670# 1671 1674 1771
1783# 1784 1786 1787 1788# 1796# 1807# 1818# 1845 1864 2107 2165#
2166
RE_QUEUE 478 937 1447
RFLG 877 879 880 958 1017 1036# 1094 1133 1160 1165
RQR 880# 1012 1870 1929
RQRFLG 880
RTS 879# 1012 1058
RTSFLG 879 1017
RU 694 1089 1575
SDB_ADDR 2107 2131 2132 2168
SEND_DC 1373
SMALL 1123 1618
SMAP$ 454
SRCAD 1693 1778# 1863#
TERMINATE 479 716 945 1022 1024 1066 1149 1355 1459 1524
TID 746 1797 2140
TMPCCB 671 672# 675 676#
TOSS 890* 1075 1114 1135 1156 1168 1232 1322 1388* 1536 1605 1628
1652 1668 1675
TRUE 456 1091 1549 2062 2149 2152
UNIT 423+# 424+ 425+
UNREACH 577* 695 772 958* 1094 1132 1159 1164 1241* 1558 1578 1625
1656 1672
UNSPAWN 480 1155 1167 1448
VALUE 385+ 386+ 388+ 389+ 394+
VISIT 877 1039# 1040# 1041 1057 1058
WORKD 1284 1342 1374
WORKS 1284 1338 1374
X 380+ 381+# 382+# 383+ 393+ 394+# 395+ 396+
XPT$_DNS 1116 1611
XPT$_IANT 1182 1689
XPTAGED_LOSS 1061
XPTDBBLOCK 566+ 618+ 874+ 931+ 999+ 1281+ 1429+ 1503+ 1768+ 2053+ 2106+
XPTDB 563+ 564+# 565+ 615+ 616+# 617+ 621 871+ 872+# 873+ 928+ 929+#
930+ 996+ 997+# 998+ 1007 1008 1061 1278+ 1279+# 1280+ 1299 1301
1302 1426+ 1427+# 1428+ 1500+ 1501+# 1502+ 1765+ 1766+# 1767+ 2050+ 2051+#
2052+ 2103+ 2104+# 2105+
XPTEND_CNG 943 1457
XPTEND_RCV 1111 1601
XPTEND_XMT 762
XPTFMT_LOSS 1302
XPTRANGE_LOSS 1008 1301
XPTSEL 1#
XPTUNREACH_LOSS 621 1007 1299
XPTXIT_CNG 940 1453
XPTXIT_RCV 1062 1096 1128 1146 1577 1621 1643
XPTXIT_XMT 1136 1171 1630 1677
ZEROQ 418+#
$MCB_COPY_CHAIN_TO_BUFFER 708
$MCB_GET_BUFFER 453
$MCB_GET_CCB 665
$MCB_RETURN_CCB_AND_BUFFER 630 713 780
$MCB_RETURN_CCB 631 679 781
$NM_LOG_BEGIN 622 1009 1063 1312 1521
$NM_LOG_END 628 1011 1065 1315 1523
$XPT$E_AGE 1065
$XPT$E_FMT 1313 1375 1523 1782 1860
$XPT$E_RNG 1087 1300 1785
$XPT$E_UNR 628 1006 1090 1133 1160 1165 1298 1578 1626 1657 1673 1845
$XPT_GET_LINE_DB 692 728 933 942 1005 1051 1085 1095 1110 1127 1129 1145
1147 1292 1436 1443 1452 1456 1516 1568 1576 1600 1619 1622
1666 1809 1852 2055 2115 2138
$XPT_GET_NODE_DB 646 1047 1560 2139
%CTCE 386+ 405+
%REMAINING 430+