Trailing-Edge
-
PDP-10 Archives
-
TOPS-20_V6.1_DECnetSrc_7-23-85
-
mcb/sc/scprm.lst
There is 1 other file named scprm.lst in the archive. Click here to see a list.
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 1
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (1)
; 0001 ! COPYRIGHT (c) 1980, 1981, 1982
; 0002 ! DIGITAL EQUIPMENT CORPORATION
; 0003 ! Maynard, Massachusetts
; 0004 !
; 0005 ! This software is furnished under a license and may be used
; 0006 ! and copied only in accordance with the terms of such license
; 0007 ! and with the inclusion of the above copyright notice. This
; 0008 ! software or any other copies thereof may not be provided or
; 0009 ! otherwise made available to any other person. No title to
; 0010 ! and ownership of the software is hereby transferred.
; 0011 !
; 0012 ! The information in this software is subject to change
; 0013 ! without notice and should not be construed as a commitment
; 0014 ! by DIGITAL EQUIPMENT CORPORATION.
; 0015 !
; 0016 ! DIGITAL assumes no responsibility for the use or reliability
; 0017 ! of its software on equipment which is not supplied by
; 0018 ! DIGITAL.
; 0019
; 0020 !++
; 0021 ! *** Start of SCPRM ***
; 0022 !
; 0023 ! Macros, structures, and stuff for Session Control
; 0024 !--
; 0025
; 0026 literal
; 0027 SCPRM_VERSION = 21;
; 0028
; 0029 library 'MCB:XPORTX';
; 0030 library 'MCB:MCBLIB';
; 0031
; 0032 $show (all);
; 0033
; 0034 literal
; 0035 true = (1 eql 1), ! Affirmative
; 0036 false = (1 eql 0), ! Not so
; 0037 paranoid = true, ! Conditional compile of some checking
; 0038 none_such = -1; ! Huh?
; 0039
; 0040 structure
; 0041 BYTE_VECTOR [I; N] =
; L 0042 %if %bliss (bliss16)
; 0043 %then
; 0044 [N] (BYTE_VECTOR + I)<0, 8>
; 0045 %fi
; L 0046 %if %bliss (bliss36)
; U 0047 %then
; U 0048 [N/4] (BYTE_VECTOR + I/4)<(I mod 4)*9, 9>
; 0049 %fi;
; 0050
; 0051
; 0052
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 2
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (1)
; 0053 DECLARE_SEVERITY (SC, SEVERE);
; 0054
; 0055 $SC_SEVERE (SC$_IFC, 'illegal function code')
; 0056 $SC_SEVERE (SC$_ISC, 'illegal subfunction code')
; 0057 $SC_SEVERE (SC$_LWS, 'link in wrong state')
; 0058 $SC_SEVERE (SC$_NNS, 'no Network Services layer')
; 0059 $SC_SEVERE (SC$_NNM, 'no Network Management module')
; 0060
; 0061 DECLARE_SEVERITY (SCX, SEVERE);
; 0062
; 0063 $SCX_SEVERE (SCX$_ILE, 'internal logic error')
; 0064 $SCX_SEVERE (SCX$_ISC, 'illegal subfunction code')
; 0065 $SCX_SEVERE (SCX$_NSC, 'no Session Control server process')
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 3
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (2)
; 0066 !+
; 0067 ! Macro to conditionally align addresses for 36-bit compilation
; 0068 !-
; 0069 macro
; M 0070 $SC_WAIT = ! Resource wait in SC
; M 0071 begin
; M 0072 SCDB [SCF_KLOK] = true;
; M 0073 SCDB [SCF_SUCC] = false;
; M 0074 return
; 0075 end %,
; 0076
; M 0077 $SCX_WAIT = ! Resource wait in SCX
; M 0078 begin
; M 0079 TNB [TNF_RWT] = true;
; M 0080 SCXDB [SCXF_SUCC] = false;
; M 0081 return
; 0082 end %;
; 0083
; 0084
; 0085 !+
; 0086 ! MCB Scheduling Macros
; 0087 !-
; 0088 macro
; M 0089 $SC_DO_CCP (ccb, sts) =
; M 0090 begin
; M 0091 bind $SC$CCB = (ccb): block field (C_FIELDS);
; M 0092 $SC$CCB [C_FNC] = FC_CCP;
; M 0093 %if not %null (sts) %then $SC$CCB [C_STS] = sts; %fi
; M 0094 $MCB_SCHEDULE_CCB (ccb)
; 0095 end %,
; 0096
; M 0097 $SC_DO_RCE (ccb, sts) =
; M 0098 begin
; M 0099 bind $SC$CCB = (ccb): block field (C_FIELDS);
; M 0100 $SC$CCB [C_FNC] = FC_RCE;
; M 0101 %if not %null (sts) %then $SC$CCB [C_STS] = sts; %fi
; M 0102 $MCB_SCHEDULE_CCB (ccb)
; 0103 end %,
; 0104
; M 0105 $SC_DO_RCP (ccb, mdf, lnk) =
; M 0106 begin
; M 0107 %if not %declared (DO_RCP)
; M 0108 %then external routine DO_RCP: linkage_ccb novalue; %fi
; M 0109 DO_RCP (ccb, mdf, lnk)
; 0110 end %,
; 0111
; M 0112 $SC_DO_XCP (ccb, sts) =
; M 0113 begin
; M 0114 bind $SC$CCB = (ccb): block field (C_FIELDS);
; M 0115 $SC$CCB [C_FNC] = FC_XCP;
; M 0116 %if not %null (sts) %then $SC$CCB [C_STS] = sts; %fi
; M 0117 $MCB_SCHEDULE_CCB (ccb)
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 4
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (2)
; 0118 end %,
; 0119
; M 0120 $SC_DO_XME (ccb, mdf, lnk) =
; M 0121 begin
; M 0122 %if not %declared (DO_XME)
; M 0123 %then external routine DO_XME: linkage_ccb novalue; %fi
; M 0124 DO_XME (ccb, mdf, lnk)
; 0125 end %,
; 0126
; M 0127 $SCX_DO_RCE (ccb, sts) =
; M 0128 begin
; M 0129 bind $SC$CCB = (ccb): block field (C_FIELDS);
; M 0130 $SC$CCB [C_FNC] = FC_RCE;
; M 0131 %if not %null (sts) %then $SC$CCB [C_STS] = sts; %fi
; M 0132 $MCB_SCHEDULE_CCB (ccb)
; 0133 end %,
; 0134
; M 0135 $SCX_DO_XME (ccb, mdf, iop, lcb, buf) =
; M 0136 begin
; M 0137 %if not %declared (DO$XME)
; M 0138 %then external routine DO$XME: linkage_ccb novalue; %fi
; M 0139 DO$XME (ccb, mdf, iop, lcb, buf)
; 0140 end %;
; 0141
; 0142
; 0143 !+
; 0144 ! Macro for conditionally mapping/binding database.
; 0145 !-
; 0146 macro
; M 0147 $SC_GET_DATA_BASE (dabname) =
; M 0148 %if not %declared (MCB$GAW_PROCESS_DATA_BASE)
; M 0149 %then external MCB$GAW_PROCESS_DATA_BASE: vector [2]; %fi
; M 0150 %if %declared (dabname)
; M 0151 %then map dabname : ref
; M 0152 %else bind dabname = .MCB$GAW_PROCESS_DATA_BASE [1] :
; 0153 %fi block field (SC_FIELDS) %,
; 0154
; M 0155 $SCX_GET_DATA_BASE (dabname) =
; M 0156 %if not %declared (MCB$GAW_PROCESS_DATA_BASE)
; M 0157 %then external MCB$GAW_PROCESS_DATA_BASE: vector [2]; %fi
; M 0158 %if %declared (dabname)
; M 0159 %then map dabname : ref
; M 0160 %else bind dabname = .MCB$GAW_PROCESS_DATA_BASE [1] :
; 0161 %fi block field (SCXDB_FIELDS) %;
; 0162
; 0163
; 0164 !+
; 0165 ! Dispatching macros for SC
; 0166 !-
; 0167 macro
; M 0168 $SC_DISPATCH_INPUT (QUE) =
; M 0169 begin
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 5
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (2)
; M 0170 bind CCB = QUE: ref block field (C_FIELDS);
; M 0171 if .CCB neq 0
; M 0172 then DISPATCH$ (.CCB [C_MOD], RCPWT, (.LNK))
; 0173 end %,
; 0174
; M 0175 $SC_DISPATCH_OUTPUT (QUE) =
; M 0176 begin
; M 0177 bind CCB = QUE: ref block field (C_FIELDS);
; M 0178 if .CCB neq 0
; M 0179 then DISPATCH$ (.CCB [C_MOD], XMEWT, (.LNK))
; 0180 end %;
; 0181
; 0182
; 0183 !+
; 0184 ! Dispatching macros for SCX
; 0185 !-
; 0186 macro
; M 0187 $SCX_DISPATCH_INPUT (QUE) =
; M 0188 begin
; M 0189 bind
; M 0190 CCB = QUE: ref block field (C_FIELDS),
; M 0191 IDSP = $IDSP: vector;
; M 0192 if .CCB neq 0
; M 0193 then DISPATCH$ (.CCB [C_MOD], $IDSP, (.TNB))
; 0194 end %,
; 0195
; M 0196 $SCX_DISPATCH_OUTPUT (QUE, CB) =
; M 0197 begin
; M 0198 bind
; M 0199 IOP = QUE: ref block field (IOP_FIELDS),
; M 0200 ODSP = $ODSP: vector;
; M 0201 if .IOP neq 0
; M 0202 then DISPATCH$ (((.IOP [I_MOD]) and %o'177')^-2, .ODSP [(.IOP [I_FNC]) - IOP_LO], (CB))
; 0203 end %;
; 0204
; 0205
; 0206 !+
; 0207 ! Queue Management Macros
; 0208 !-
; 0209 macro
; M 0210 $SCX_STACK (QUE, STR) = ! Queue STR to head of QUE
; M 0211 begin
; M 0212 %if not %declared ($SCQHD) %then external routine $SCQHD: novalue; %fi
; M 0213 $SCQHD (QUE, STR)
; 0214 end %,
; 0215
; M 0216 $SCX_ENQUEUE (QUE, STR) = ! Queue STR to tail of QUE
; M 0217 begin
; M 0218 %if not %declared ($SCQIN) %then external routine $SCQIN: novalue; %fi
; M 0219 $SCQIN (QUE, STR)
; 0220 end %,
; 0221
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 6
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (2)
; M 0222 $SCX_DEQUEUE (QUE, STR) = ! Dequeue from QUE to STR
; M 0223 begin
; M 0224 %if not %declared ($SCQRM) %then external routine $SCQRM; %fi
; M 0225 $SCQRM (QUE, STR)
; 0226 end %;
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 7
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (3)
; 0227 !+
; 0228 ! Field mapping for SC's data base
; 0229 !-
; 0230 $field SC_FIELDS =
; 0231 set
; L 0232 SC_TICK = [$byte], ! Reserved place for long timer
; %PRINT: [0,0,8,0] (+%O'0')
; L 0233 SC_FLAGS = [$byte], ! SC's status info
; %PRINT: [0,8,8,0] (+%O'1')
; 0234 $overlay (SC_FLAGS)
; L 0235 SCF_STAT = [$bits (2)], ! SC state (must be low 2 bits)
; %PRINT: [0,8,2,0] (+%O'1')
; L 0236 SCF_KLOK = [$bit], ! Long timer active
; %PRINT: [0,10,1,0] (+%O'1')
; L 0237 SCF_OPEN = [$bit], ! Port OPEN in progress
; %PRINT: [0,11,1,0] (+%O'1')
; L 0238 SCF_SUCC = [$bit], ! SC resource allocation success flag
; %PRINT: [0,12,1,0] (+%O'1')
; 0239 $continue
; L 0240 SC_NSPIX = [$byte], ! NSP's PIX
; %PRINT: [1,0,8,0] (+%O'2')
; L 0241 SC_NMPIX = [$byte], ! NMX's PIX
; %PRINT: [1,8,8,0] (+%O'3')
; L 0242 SC_SNPIX = [$byte], ! SC's extension process PIX
; %PRINT: [2,0,8,0] (+%O'4')
; L 0243 SC_LLINK = [$byte], ! Last logical link handled
; %PRINT: [2,8,8,0] (+%O'5')
; L 0244 SC_IPORT = [$byte], ! Number of currently OPEN input ports
; %PRINT: [3,0,8,0] (+%O'6')
; L 0245 SC_RPORT = [$byte], ! Required number of OPEN input ports
; %PRINT: [3,8,8,0] (+%O'7')
; L 0246 SC_LADDR = [$short_integer], ! Local node address
; %PRINT: [4,0,16,1] (+%O'10')
; L 0247 SC_HADDR = [$short_integer], ! Host node address
; %PRINT: [5,0,16,1] (+%O'12')
; L 0248 SC_SSIZE = [$short_integer], ! NSP segment size
; %PRINT: [6,0,16,1] (+%O'14')
; L 0249 SC_LINKS = [$short_integer], ! Maximum number of logical links
; %PRINT: [7,0,16,1] (+%O'16')
; L 0250 SC_NODES = [$short_integer], ! Maximum number of network nodes
; %PRINT: [8,0,16,1] (+%O'20')
; L 0251 SC_LOOPS = [$short_integer], ! Maximum number of loopbacks
; %PRINT: [9,0,16,1] (+%O'22')
; L 0252 SC_ITIME = [$short_integer], ! Incoming connect timer value
; %PRINT: [10,0,16,1] (+%O'24')
; L 0253 SC_OTIME = [$short_integer], ! Outgoing connect timer value
; %PRINT: [11,0,16,1] (+%O'26')
; 0254
; L 0255 SC_OTN_LEN = [$short_integer], ! Length of OTN table
; %PRINT: [12,0,16,1] (+%O'30')
; L 0256 SC_ONP_LEN = [$short_integer], ! Length of ONP table
; %PRINT: [13,0,16,1] (+%O'32')
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 8
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (3)
; 0257
; L 0258 SC_OTN_BIAS = [$address], ! OTN address doubleword
; %PRINT: [14,0,16,0] (+%O'34')
; L 0259 SC_OTN_ADDR = [$addresx], ! Object-type to object-name
; %PRINT: [15,0,16,0] (+%O'36')
; 0260 $overlay (SC_OTN_BIAS) ! mapping table
; L 0261 SC_OTN = [$address], !
; %PRINT: [14,0,16,0] (+%O'34')
; 0262 $continue
; 0263
; L 0264 SC_ONP_BIAS = [$address], ! ONP address doubleword
; %PRINT: [16,0,16,0] (+%O'40')
; L 0265 SC_ONP_ADDR = [$addresx], ! Object-name to process-name
; %PRINT: [17,0,16,0] (+%O'42')
; 0266 $overlay (SC_ONP_BIAS) ! mapping table
; L 0267 SC_ONP = [$address], !
; %PRINT: [16,0,16,0] (+%O'40')
; 0268 $continue
; 0269
; L 0270 SC_LLT_BIAS = [$address], ! LLT address doubleword
; %PRINT: [18,0,16,0] (+%O'44')
; L 0271 SC_LLT_ADDR = [$addresx], ! ...
; %PRINT: [19,0,16,0] (+%O'46')
; 0272 $overlay (SC_LLT_BIAS)
; L 0273 SC_LLT = [$address], ! ...
; %PRINT: [18,0,16,0] (+%O'44')
; 0274 $continue
; 0275
; L 0276 SC_NMT_BIAS = [$address], ! NMT address doubleword
; %PRINT: [20,0,16,0] (+%O'50')
; L 0277 SC_NMT_ADDR = [$addresx], ! ...
; %PRINT: [21,0,16,0] (+%O'52')
; 0278 $overlay (SC_NMT_BIAS)
; L 0279 SC_NMT = [$address], ! ...
; %PRINT: [20,0,16,0] (+%O'50')
; 0280 $continue
; 0281
; 0282 $overlay (SC_TICK)
; L 0283 SC_TOP = [$address] ! Guaranteed beginning of SCDB
; %PRINT: [0,0,16,0] (+%O'0')
; 0284 $continue
; 0285 tes;
; 0286
; 0287 literal
; L 0288 SC_SIZE = $field_set_size, ! Length of SC data base
; %PRINT: 22 fullwords
; 0289 S_ST_ON = 0, ! SC is ON
; 0290 S_ST_OFF = 1, ! SC is OFF
; 0291 S_ST_SHUT = 2, ! SC is SHUT
; 0292 S_ST_RST = 3; ! SC is RESTRICTed
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 9
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (4)
; 0293 !+
; 0294 ! Field mapping for SC's logical link table
; 0295 !-
; 0296 $field LLT_FIELDS =
; 0297 set
; L 0298 L_STATE = [$byte], ! Link state
; %PRINT: [0,0,8,0] (+%O'0')
; L 0299 L_FLAGS = [$byte], ! Processing flags
; %PRINT: [0,8,8,0] (+%O'1')
; 0300 $overlay (L_FLAGS)
; L 0301 LL_ACDW = [$bits (3)], ! Abort-Close-Disconnect flags
; %PRINT: [0,8,3,0] (+%O'1')
; L 0302 LL_BUSY = [$bit], ! Link is in use
; %PRINT: [0,11,1,0] (+%O'1')
; L 0303 LL_KLOK = [$bit], ! Connect timer running
; %PRINT: [0,12,1,0] (+%O'1')
; L 0304 LL_INTM = [$bit], ! Link has outstanding interrupt msg
; %PRINT: [0,13,1,0] (+%O'1')
; 0305 $continue
; 0306 $overlay(LL_ACDW)
; L 0307 LL_ABTI = [$bit], ! Abort initiated
; %PRINT: [0,8,1,0] (+%O'1')
; L 0308 LL_CLSI = [$bit], ! Close initiated
; %PRINT: [0,9,1,0] (+%O'1')
; L 0309 LL_DSCI = [$bit], ! Disconnect initiated
; %PRINT: [0,10,1,0] (+%O'1')
; 0310 $continue
; L 0311 L_ULA = [$byte], ! User link address
; %PRINT: [1,0,8,0] (+%O'2')
; L 0312 L_LLA = [$byte], ! Logical link address
; %PRINT: [1,8,8,0] (+%O'3')
; L 0313 L_PID = [$byte], ! Port ID
; %PRINT: [2,0,8,0] (+%O'4')
; L 0314 L_PIX = [$byte], ! User process index
; %PRINT: [2,8,8,0] (+%O'5')
; L 0315 L_RNA = [$short_integer], ! Remote node address
; %PRINT: [3,0,16,1] (+%O'6')
; L 0316 L_CHN = [$short_integer], ! Channel #
; %PRINT: [4,0,16,1] (+%O'10')
; L 0317 L_TIMER = [$short_integer], ! Timer value
; %PRINT: [5,0,16,1] (+%O'12')
; L 0318 L_STS = [$short_integer], ! Status value for link disolution
; %PRINT: [6,0,16,1] (+%O'14')
; 0319
; L 0320 L_I_HEAD = [$addresx], ! Input queue header
; %PRINT: [7,0,16,0] (+%O'16')
; L 0321 L_I_TAIL = [$addresx], ! " " tail
; %PRINT: [8,0,16,0] (+%O'20')
; 0322 $overlay (L_I_HEAD)
; L 0323 L_IQUE = [$address], ! ...
; %PRINT: [7,0,16,0] (+%O'16')
; 0324 $continue
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 10
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (4)
; 0325
; L 0326 L_O_HEAD = [$addresx], ! Output queue header
; %PRINT: [9,0,16,0] (+%O'22')
; L 0327 L_O_TAIL = [$addresx], ! " " tail
; %PRINT: [10,0,16,0] (+%O'24')
; 0328 $overlay (L_O_HEAD)
; L 0329 L_OQUE = [$address], ! Output queue
; %PRINT: [9,0,16,0] (+%O'22')
; 0330 $continue
; 0331
; L 0332 L_N_HEAD = [$addresx], ! Interrupt queue header
; %PRINT: [11,0,16,0] (+%O'26')
; L 0333 L_N_TAIL = [$addresx], ! " " tail
; %PRINT: [12,0,16,0] (+%O'30')
; 0334 $overlay (L_N_HEAD)
; L 0335 L_INTQ = [$address], ! ...
; %PRINT: [11,0,16,0] (+%O'26')
; 0336 $continue
; 0337
; 0338 $overlay (L_STATE)
; L 0339 L_TOP = [$address] ! Guaranteed beginning of LLT
; %PRINT: [0,0,16,0] (+%O'0')
; 0340 $continue
; 0341 tes;
; 0342
; 0343 literal
; L 0344 L_SIZE = $field_set_size, ! Length of the LLT entry
; %PRINT: 13 fullwords
; 0345
; 0346 ST_OFF = 0, ! Off
; 0347 ST_CIS = 1, ! Connect requested by user
; 0348 ST_CID = 2, ! Connect has been delivered to remote
; 0349 ST_OI = 3, ! Port OPEN initiated
; 0350 ST_OPN = 4, ! Port is OPEN
; 0351 ST_CR = 5, ! Connect received from remote
; 0352 ST_CRA = 6, ! Connect ack'd by local user
; 0353 ST_CA = 7, ! Local user has accepted connect
; 0354 ST_CLI = 8, ! Logical link is being closed
; 0355 ST_ABI = 9, ! Logical link is being aborted
; 0356 ST_DI = 10, ! Logical link is being disconnected
; 0357 ST_DIR = 11, ! Disconnect initiate received
; 0358 ST_RUN = 12; ! Link is in the RUN state
; 0359
; 0360
; 0361
; 0362 !+
; 0363 ! Field mapping for the Node Mapping Table
; 0364 !-
; 0365 $field
; 0366 NMT_fields =
; 0367 set
; L 0368 NMT_BASE = [$sub_block (0)], ! Base of entry
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 11
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (4)
; %PRINT: [0,0,0,0] (+%O'0')
; L 0369 NMT_NAML = [$tiny_integer], ! Name length (max of 6)
; %PRINT: [0,0,8,1] (+%O'0')
; L 0370 NMT_NAME = [$byte_string (6)], ! Node name
; %PRINT: [0,8,0,0] (+%O'1')
; L 0371 NMT_CHAN = [$byte], ! Channel number
; %PRINT: [3,8,8,0] (+%O'7')
; 0372 $align (fullword)
; L 0373 NMT_ADDR = [$short_integer], ! Node address
; %PRINT: [4,0,16,1] (+%O'10')
; L 0374 NMT_NMXID = [$short_integer]
; %PRINT: [5,0,16,1] (+%O'12')
; 0375 tes;
; 0376
; 0377 literal
; L 0378 NMT_SIZE = $field_set_size;
; %PRINT: 6 fullwords
; 0379
; 0380
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 12
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (5)
; 0381 !+
; 0382 ! Field mapping for the Object Mapping Tables
; 0383 !-
; 0384
; 0385 ! OTN is for mapping from Object-Type to Object-Name
; 0386 ! An arriving connect request may specify a destination object
; 0387 ! by object type; if so, this structure (OTN) is examined to see
; 0388 ! whether it exists. If so, the corresponding object name is
; 0389 ! selected, and the object name is used to subsequently search
; 0390 ! the ONP structure.
; 0391 $field OTN_FIELDS =
; 0392 set
; L 0393 OTN_TYPE = [$byte], ! Object type
; %PRINT: [0,0,8,0] (+%O'0')
; L 0394 OTN_NLEN = [$byte], ! Name length
; %PRINT: [0,8,8,0] (+%O'1')
; L 0395 OTN_NAME = [$string (6)] ! ASCII object name
; %PRINT: [1,0,0,0] (+%O'2')
; 0396 tes;
; 0397
; 0398 literal
; L 0399 OTN_SIZE = $field_set_size;
; %PRINT: 4 fullwords
; 0400
; 0401 ! ONP is for mapping from Object-Name to Process-Name
; 0402 ! An arriving connect request may specify a destination object
; 0403 ! by name; if so, this structure (ONP) is examined to see whether
; 0404 ! it exists. If so, the corresponding process name is selected.
; 0405 ! If no match is found, it is assumed that the destination is
; 0406 ! an RSX task, and will be determined in SCX.
; 0407 $field ONP_FIELDS =
; 0408 set
; L 0409 ONP_NLEN = [$byte], ! Name length
; %PRINT: [0,0,8,0] (+%O'0')
; L 0410 ONP_NAME = [$string (6)], ! Object name
; %PRINT: [0,8,0,0] (+%O'1')
; 0411 $align (fullword)
; L 0412 ONP_PROC = [$pointer] ! Not really a pointer, but allocates
; %PRINT: [4,0,16,0] (+%O'10')
; 0413 tes; ! right amount of space
; 0414
; 0415 literal
; L 0416 ONP_SIZE = $field_set_size;
; %PRINT: 5 fullwords
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 13
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (6)
; 0417 !+
; 0418 ! SCX Data Base field definitions
; 0419 !-
; 0420 $field SCXDB_FIELDS =
; 0421 set
; L 0422 SCX_TICK = [$byte], ! Reserved timer byte
; %PRINT: [0,0,8,0] (+%O'0')
; L 0423 SCX_FLG = [$byte], ! Processing flags
; %PRINT: [0,8,8,0] (+%O'1')
; 0424 $overlay (SCX_FLG)
; L 0425 SCXF_KLOK = [$bit], ! Clock interrupt needed
; %PRINT: [0,8,1,0] (+%O'1')
; L 0426 SCXF_SUCC = [$bit], ! Resource allocation success flag
; %PRINT: [0,9,1,0] (+%O'1')
; 0427 $continue
; L 0428 SCX_SCPIX = [$byte], ! PIX of Session Control
; %PRINT: [1,0,8,0] (+%O'2')
; L 0429 SCX_xxxxx = [$byte], ! Rsv'd
; %PRINT: [1,8,8,0] (+%O'3')
; L 0430 SCX_UCB = [$addresx], ! UCB address
; %PRINT: [2,0,16,0] (+%O'4')
; L 0431 SCX_TNB = [$addresx], ! TNB list
; %PRINT: [3,0,16,0] (+%O'6')
; L 0432 SCX_LINKS = [$short_integer], ! Maximum number of logical links
; %PRINT: [4,0,16,1] (+%O'10')
; 0433
; L 0434 SCX_MBHD = [$addresx], ! General delivery mailbox list head
; %PRINT: [5,0,16,0] (+%O'12')
; L 0435 SCX_MBTL = [$addresx], ! General delivery mailbox list tail
; %PRINT: [6,0,16,0] (+%O'14')
; 0436 $overlay (SCX_MBHD)
; L 0437 SCX_MBX = [$address], ! ...
; %PRINT: [5,0,16,0] (+%O'12')
; 0438 $continue
; L 0439 SCX_OTN_LEN = [$short_integer], ! Length of OTN table
; %PRINT: [7,0,16,1] (+%O'16')
; L 0440 SCX_OTN_BIAS = [$address], ! OTN address doubleword
; %PRINT: [8,0,16,0] (+%O'20')
; L 0441 SCX_OTN_ADDR = [$addresx], ! Object-type to object-name
; %PRINT: [9,0,16,0] (+%O'22')
; 0442 $overlay (SCX_OTN_BIAS) ! mapping table
; L 0443 SCX_OTN = [$address], !
; %PRINT: [8,0,16,0] (+%O'20')
; 0444 $continue
; 0445
; L 0446 SCX_ULA_BIAS = [$address], ! User Link Address vector bias
; %PRINT: [10,0,16,0] (+%O'24')
; L 0447 SCX_ULA_ADDR = [$addresx], ! " " " " address
; %PRINT: [11,0,16,0] (+%O'26')
; 0448 $overlay (SCX_ULA_BIAS)
; L 0449 SCX_ULA = [$address] ! ...
; %PRINT: [10,0,16,0] (+%O'24')
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 14
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (6)
; 0450 $continue
; 0451 tes;
; 0452
; 0453 literal
; L 0454 SCXDB_SIZE = $field_set_size;
; %PRINT: 12 fullwords
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 15
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (7)
; 0455 !+
; 0456 ! Task Networking Control Block field definitions
; 0457 !-
; 0458 $field TNB_FIELDS =
; 0459 set
; L 0460 TN_LINK = [$addresx], ! Link to next TNB in system
; %PRINT: [0,0,16,0] (+%O'0')
; L 0461 TN_TASK = [$addresx], ! Pointer to the TCB
; %PRINT: [1,0,16,0] (+%O'2')
; L 0462 TN_LCB = [$addresx], ! Pointer to list of task's LCBs
; %PRINT: [2,0,16,0] (+%O'4')
; 0463
; L 0464 TN_IQHD = [$addresx], ! Input queue head
; %PRINT: [3,0,16,0] (+%O'6')
; L 0465 TN_IQTL = [$addresx], ! Input queue tail
; %PRINT: [4,0,16,0] (+%O'10')
; 0466 $overlay (TN_IQHD)
; L 0467 TN_IQUE = [$address], ! ...
; %PRINT: [3,0,16,0] (+%O'6')
; 0468 $continue
; 0469
; L 0470 TN_OQHD = [$addresx], ! Output queue head
; %PRINT: [5,0,16,0] (+%O'12')
; L 0471 TN_OQTL = [$addresx], ! Output queue tail
; %PRINT: [6,0,16,0] (+%O'14')
; 0472 $overlay (TN_OQHD)
; L 0473 TN_OQUE = [$address], ! ...
; %PRINT: [5,0,16,0] (+%O'12')
; 0474 $continue
; 0475
; L 0476 TN_LUN = [$byte], ! User's LUN
; %PRINT: [7,0,8,0] (+%O'16')
; L 0477 TN_FLG = [$byte], ! Processing flags
; %PRINT: [7,8,8,0] (+%O'17')
; 0478 $overlay (TN_FLG)
; L 0479 TNF_CLS = [$bit], ! Close initiated
; %PRINT: [7,8,1,0] (+%O'17')
; L 0480 TNF_RWT = [$bit], ! Some link is waiting for a resource
; %PRINT: [7,9,1,0] (+%O'17')
; L 0481 TNF_KLK = [$bit], ! Clock request
; %PRINT: [7,10,1,0] (+%O'17')
; 0482 $continue
; L 0483 TN_ACT = [$byte], ! Number of active links
; %PRINT: [8,0,8,0] (+%O'20')
; L 0484 TN_MAX = [$byte], ! Max unmber of logical links
; %PRINT: [8,8,8,0] (+%O'21')
; L 0485 TN_AST = [$byte], ! Number of outstanding ASTs
; %PRINT: [9,0,8,0] (+%O'22')
; L 0486 TN_xxx = [$byte], ! rsv's
; %PRINT: [9,8,8,0] (+%O'23')
; L 0487 TN_SPA = [$addresx], ! User's AST address
; %PRINT: [10,0,16,0] (+%O'24')
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 16
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (7)
; 0488
; L 0489 TN_MBHD = [$addresx], ! Mailbox queue head
; %PRINT: [11,0,16,0] (+%O'26')
; L 0490 TN_MBTL = [$addresx], ! Mailbox queue tail
; %PRINT: [12,0,16,0] (+%O'30')
; 0491 $overlay (TN_MBHD)
; L 0492 TN_MBXQ = [$address] ! ...
; %PRINT: [11,0,16,0] (+%O'26')
; 0493 $continue
; 0494 tes;
; 0495
; 0496 literal
; L 0497 TNB_SIZE = $field_set_size;
; %PRINT: 13 fullwords
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 17
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (8)
; 0498 !+
; 0499 ! Link Control Block field definitions
; 0500 !-
; 0501 $field LCB_FIELDS =
; 0502 set
; L 0503 LC_LINK = [$addresx], ! Pointer to next LCB for this task
; %PRINT: [0,0,16,0] (+%O'0')
; L 0504 LC_TASK = [$addresx], ! Pointer to the TCB
; %PRINT: [1,0,16,0] (+%O'2')
; L 0505 LC_TNB = [$addresx], ! Pointer to the TNB
; %PRINT: [2,0,16,0] (+%O'4')
; 0506
; L 0507 LC_OQHD = [$addresx], ! Output queue head
; %PRINT: [3,0,16,0] (+%O'6')
; L 0508 LC_OQTL = [$addresx], ! Output queue tail
; %PRINT: [4,0,16,0] (+%O'10')
; 0509 $overlay (LC_OQHD)
; L 0510 LC_OQUE = [$address], ! ...
; %PRINT: [3,0,16,0] (+%O'6')
; 0511 $continue
; 0512
; L 0513 LC_NQHD = [$addresx], ! Interrput queue head
; %PRINT: [5,0,16,0] (+%O'12')
; L 0514 LC_NQTL = [$addresx], ! Interrupt queue tail
; %PRINT: [6,0,16,0] (+%O'14')
; 0515 $overlay (LC_NQHD)
; L 0516 LC_NQUE = [$address], ! ...
; %PRINT: [5,0,16,0] (+%O'12')
; 0517 $continue
; 0518
; L 0519 LC_LUN = [$byte], ! User's LUN
; %PRINT: [7,0,8,0] (+%O'16')
; L 0520 LC_FLG = [$byte], ! Processing flags
; %PRINT: [7,8,8,0] (+%O'17')
; 0521 $overlay (LC_FLG)
; L 0522 LCF_CLS = [$bit], ! Close initiated
; %PRINT: [7,8,1,0] (+%O'17')
; L 0523 LCF_NRES = [$bit], ! Interrupt request resource needed
; %PRINT: [7,9,1,0] (+%O'17')
; L 0524 LCF_ARES = [$bit], ! Abort verify resource needed
; %PRINT: [7,10,1,0] (+%O'17')
; L 0525 LCF_DSC = [$bit], ! Disconnect or abort initiated
; %PRINT: [7,11,1,0] (+%O'17')
; 0526 $continue
; L 0527 LC_ULA = [$byte], ! Our ULA
; %PRINT: [8,0,8,0] (+%O'20')
; L 0528 LC_LLA = [$byte] ! Session Control LLA
; %PRINT: [8,8,8,0] (+%O'21')
; 0529 tes;
; 0530
; 0531 literal
; L 0532 LCB_SIZE = $field_set_size;
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 18
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (8)
; %PRINT: 9 fullwords
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 19
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (9)
; 0533 !+
; 0534 ! Mailbox Packet field definitions
; 0535 !-
; 0536 $field MBP_FIELDS =
; 0537 set
; L 0538 MB_LINK = [$addresx], ! Link to next MBP
; %PRINT: [0,0,16,0] (+%O'0')
; L 0539 MB_CNT = [$short_integer], ! Data length
; %PRINT: [1,0,16,1] (+%O'2')
; L 0540 MB_FNC = [$byte], ! Function code (see below)
; %PRINT: [2,0,8,0] (+%O'4')
; L 0541 MB_FLG = [$byte], ! Processing flags
; %PRINT: [2,8,8,0] (+%O'5')
; 0542 $overlay (MB_FLG)
; L 0543 MBF_REQ = [$bit], ! Task request needed
; %PRINT: [2,8,1,0] (+%O'5')
; 0544 $continue
; L 0545 MB_LLA = [$byte], ! Logical link address
; %PRINT: [3,0,8,0] (+%O'6')
; L 0546 MB_ULA = [$byte], ! User link address
; %PRINT: [3,8,8,0] (+%O'7')
; L 0547 MB_LUN = [$byte], ! User LUN
; %PRINT: [4,0,8,0] (+%O'10')
; L 0548 MB_xxx = [$byte], ! Rsv'd
; %PRINT: [4,8,8,0] (+%O'11')
; L 0549 MB_TIME = [$short_integer], ! Timer value, for connects
; %PRINT: [5,0,16,1] (+%O'12')
; L 0550 MB_TASK = [$addresx], ! TCB address
; %PRINT: [6,0,16,0] (+%O'14')
; L 0551 MB_TNB = [$address], ! TNB address
; %PRINT: [7,0,16,0] (+%O'16')
; L 0552 MB_DATA = [$sub_block (0)] ! Data starts here
; %PRINT: [8,0,0,0] (+%O'20')
; 0553 tes;
; 0554
; 0555 literal
; L 0556 MBP_SIZE = $field_set_size, ! Length of MBP, without data
; %PRINT: 8 fullwords
; 0557
; 0558 ! Function codes
; 0559 MB$CNP = 0, ! Connect pending
; 0560 mb$lo = 1, ! Lowest code to process
; 0561 MB$CON = 1, ! Connect
; 0562 MB$INT = 2, ! Interrupt
; 0563 MB$DSC = 3, ! User disconnect received
; 0564 MB$ABT = 4, ! User abort received
; 0565 MB$ABO = 5, ! Network abort
; 0566 MB$MOP = 8, ! MOP message
; 0567 mb$hi = 8; ! Highest code to process
; 0568
; 0569
; 0570 ! IOP Function Codes
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 20
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (9)
; 0571 literal
; 0572 IOP_DMO = 6, ! Dismount
; 0573 IOP_CLO = 7, ! Network close, from RSX
; 0574 iop_lo = 25, ! Lowest user-invokable command
; 0575 IOP_XMT = 25, ! Transmit data
; 0576 IOP$DAT = 0, ! Normal data
; 0577 IOP$INT = 8, ! Interrupt data
; 0578 IOP_RCV = 26, ! Receive data
; 0579 IOP_CON = 27, ! Connect processing
; 0580 IOP$CON = 0, ! Connect
; 0581 IOP$ACC = 8, ! Accept
; 0582 IOP_DSC = 28, ! Disconnect processing
; 0583 IOP$DSC = 0, ! Disconnect
; 0584 IOP$ABO = 8, ! Abort
; 0585 IOP$REJ = 16, ! Reject
; 0586 IOP_CTL = 29, ! Control
; 0587 IOP$OPN = 0, ! Open
; 0588 IOP$CLO = IOP$OPN, ! System close (OPN code reused)
; 0589 IOP$CLS = 8, ! Close
; 0590 IOP$SPA = 16, ! Specify AST
; 0591 IOP$GND1 = 24, ! Get network data (normal)
; 0592 IOP$GND2 = 32, ! Get network data (masked, l & t)
; 0593 IOP$GND3 = 40, ! Get network data (masked)
; 0594 IOP$GLN = 56, ! Get local node information
; 0595 iop_hi = 29; ! Highest user-invokable command
; 0596
; 0597
; 0598 !+
; 0599 ! RSX field definitions, and such
; 0600 !-
; 0601 $field USR_BUFF =
; 0602 set
; L 0603 USR_ADDR = [$pointer],
; %PRINT: [0,0,16,0] (+%O'0')
; L 0604 USR_SIZE = [$pointer]
; %PRINT: [1,0,16,0] (+%O'2')
; 0605 tes;
; 0606
; 0607 $field SYS_BUFF =
; 0608 set
; L 0609 SYS_BIAS = [$pointer],
; %PRINT: [0,0,16,0] (+%O'0')
; L 0610 SYS_ADDR = [$pointer],
; %PRINT: [1,0,16,0] (+%O'2')
; L 0611 SYS_SIZE = [$pointer]
; %PRINT: [2,0,16,0] (+%O'4')
; 0612 tes;
; 0613
; 0614
; 0615 !+
; 0616 ! Field mapping for queue header
; 0617 !-
25-Jan-1983 10:16:41 TOPS-20 Bliss-16 2A(530) Page 21
30-Dec-1982 20:55:51 NETPKG:<SC>SCPRM.REQ.9 (9)
; 0618 $field QHD_FIELDS =
; 0619 set
; L 0620 Q_HEAD = [$addresx],
; %PRINT: [0,0,16,0] (+%O'0')
; L 0621 Q_TAIL = [$addresx]
; %PRINT: [1,0,16,0] (+%O'2')
; 0622 tes;
; 0623
; 0624
; 0625 !+
; 0626 ! Field mapping for one word of bytes
; 0627 !-
; 0628 $field
; L 0629 LO_BYTE = [$byte],
; %PRINT: [0,0,8,0] (+%O'0')
; L 0630 HI_BYTE = [$byte];
; %PRINT: [0,8,8,0] (+%O'1')
; 0631
; 0632 literal
; 0633 DSR_CONNECT_BLOCK_SIZE = 110;
; 0634
; 0635 !++
; 0636 ! *** End of SCPRM ***
; 0637 !--
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; NETPKG:<MCB>XPORTX.L16.15 599 38 6 0
; NETPKG:<MCB>MCBLIB.L16.15 372 31 8 0
; Run Time: 00:18.7
; Elapsed Time: 01:09.3
; Memory Used: 25 pages
; Library Precompilation Complete