Trailing-Edge
-
PDP-10 Archives
-
TOPS-20_V6.1_DECnetSrc_7-23-85
-
mcb/xpt/top.lst
There is 1 other file named top.lst in the archive. Click here to see a list.
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 1
30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (1)
; 0001 module TOP (
; 0002 IDENT = 'X01040'
; 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: Application Services
; 0029 !
; 0030 ! ABSTRACT:
; 0031 !
; 0032 ! Network Topology task - sends to anyone who connects to it a bit map
; 0033 ! of the network topology. The map, which is contained in a single
; 0034 ! message, is of the following format:
; 0035 !
; 0036 ! +----+----+----+----+ +-----+
; 0037 ! | NN | n1 | n2 | n3 | * * * | nNN + Field
; 0038 ! +----+----+----+----+ +-----+
; 0039 ! 2 .2 .2 .2 .2 Length (bytes.bits)
; 0040 !
; 0041 ! where:
; 0042 !
; 0043 ! NN is the highest node number accessible from the local
; 0044 ! node.
; 0045 ! nX is a two-bit field giving the topology status for node
; 0046 ! X:
; 0047 !
; 0048 ! 00 Node not reachable
; 0049 ! 01 (reserved)
; 0050 ! 10 Accessible Phase II node
; 0051 ! 11 Assessible Phase III node
; 0052 !
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 2
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (1)
; 0053 ! As is the customary DECnet convention, the bit fields are arranged from
; 0054 ! low-order to high-order in each byte, four to a byte, and the bytes are
; 0055 ! arranged from beginning to end of the message. Thus bits 0-1 of byte 2
; 0056 ! (zero-based) in the message are for node 1, bits 2-3 of the byte are
; 0057 ! for node 2, bits 0-1 of byte 3 are for node 5, and so forth.
; 0058 !
; 0059 ! The total length of the message is (NN+3)/4 + 2 bytes.
; 0060 !
; 0061 ! ENVIRONMENT: MCB
; 0062 !
; 0063 ! AUTHOR: L. Webber , CREATION DATE: 27-Jan-81
; 0064 !
; 0065 ! MODIFIED BY:
; 0066 !
; 0067 ! 27-Jan-81 : VERSION 1.00
; 0068 !
; 0069 ! 1.01 L. Webber, 3-Mar-81
; 0070 ! Quit ACCEPT_COMPLETE after an abort.
; 0071 !
; 0072 ! 1.02 A. Peckham, 8-May-82
; 0073 ! Eliminate GETLDB$ and RETLDB$ references.
; 0074 !
; 0075 ! 1.04 A. Peckham, 21-May-82
; 0076 ! Use state machine.
; 0077 !
; 0078 !--
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 3
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (2)
; 0079
; 0080 !
; 0081 ! INCLUDE FILES:
; 0082 !
; 0083
; 0084 library 'MCB:MCBLIB';
; 0085 library 'MCB:XPORTX';
; 0086 library 'MCB:SCSYS';
; 0087 require 'XPT:TOPMAC';
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 4
X01040 30-Dec-1982 21:18:46 NETPKG:<XPT>TOPMAC.REQ.8 (1)
; %PRINT: [0,0,0,0] (+%O'0')
; %PRINT: [0,0,8,0] (+%O'0')
; %PRINT: [0,8,8,0] (+%O'1')
; %PRINT: [1,0,8,0] (+%O'2')
; %PRINT: [1,8,8,0] (+%O'3')
; %PRINT: [2,0,16,1] (+%O'4')
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 5
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (2)
; 0159
; 0160 !
; 0161 ! TABLE OF CONTENTS
; 0162 !
; 0163
; 0164 forward routine
; 0165 RCPDSP: MCB_DB_CCB_MOD novalue,
; 0166 XCPDSP: MCB_DB_CCB_MOD novalue,
; 0167 INIT_TOP: MCB_DB_MOD novalue,
; 0168 RCV_CONNECT: MCB_DB_CCB novalue,
; 0169 RCV_ABORT: MCB_DB_CCB novalue,
; 0170 ACCEPT_COMPLETE: MCB_DB_CCB novalue,
; 0171 SEND_COMPLETE: MCB_DB_CCB novalue,
; 0172 DISCONNECT_COMPLETE: MCB_DB_CCB novalue,
; 0173 ABORT: MCB_DB_CCB novalue,
; 0174 SEND_MESSAGE: MCB_DB_CCB novalue;
; 0175
; 0176 !
; 0177 ! MACROS:
; 0178 !
; 0179
; M 0180 macro RAD50(NAME) =
; M 0181 %IF %bliss(BLISS36) %THEN
; M 0182 %RAD50_10 %string(NAME)
; M 0183 %ELSE
; M 0184 %RAD50_11 %string(NAME)
; 0185 %FI %;
; 0186
; 0187 !
; 0188 ! EQUATED SYMBOLS:
; 0189 !
; 0190
; 0191 !
; 0192 ! OWN STORAGE:
; 0193 !
; 0194
; 0195 external routine $DSPCR: novalue;
; 0196
; P 0197 bind $TOPLL = TABLE$ ($DSPCR, FC_CCP, ! Dispatch table:
; P 0198
; P 0199 (FC_TIM,INIT_TOP), ! Timer service
; P 0200 (FC_XCP,XCPDSP), ! Transmit complete
; 0201 (FC_RCP,RCPDSP)); ! Receive complete
; 0202
; 0203 $MCB_PROCESS(name=TOP,llc_dispatch=$TOPLL)
; 0204
; 0205 !
; 0206 ! EXTERNAL REFERENCES:
; 0207 !
; 0208
; 0209 external
; 0210 MCB$GW_PROCESS_HANDLE;
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 6
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (3)
; 0211
; 0212 routine RCPDSP (DB,CCB,MODD): MCB_DB_CCB_MOD novalue =
; 0213
; 0214 !++
; 0215 ! FUNCTIONAL DESCRIPTION:
; 0216 !
; 0217 ! Dispatches Receive Complete subfunctions.
; 0218 !
; 0219 ! FORMAL PARAMETERS
; 0220 !
; 0221 ! DB Process database
; 0222 ! CCB Function CCB
; 0223 ! MODD Modifier
; 0224 !
; 0225 ! IMPLICIT INPUTS
; 0226 !
; 0227 ! NONE.
; 0228 !
; 0229 ! ROUTINE VALUE:
; 0230 ! COMPLETION CODES:
; 0231 !
; 0232 ! NONE.
; 0233 !
; 0234 ! SIDE EFFECTS:
; 0235 !
; 0236 ! NONE.
; 0237 !
; 0238 !--
; 0239
; 0240 begin
; 0241
; P 0242 DISPATCH$(.MODD,
; P 0243 TABLE$ ($DSPCR, 0, ! Sub-dispatch table
; P 0244 (S$CNR,RCV_CONNECT), ! Connect Received
; P 0245 (S$DSR,RCV_ABORT)), ! Abort Received
; P 0246 (.DB,.CCB),
; 0247 MCB_DB_CCB);
; 0248
; 0249 end; !End of RCPDSP
.TITLE TOP
.IDENT /X01040/
000000 .PSECT ......, D
000000 077550 ; HEADER
U.12: .RAD50 /TOP/
000002 000403 .WORD 403
000004 000000 .WORD 0
000006 000000 .WORD 0
000010 000000 .WORD 0
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 7
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (3)
000012 000000' .WORD U.11
000014 000000G .WORD .DSPCR
000016 000000G .WORD .DSPCR
000020 000000G .WORD MCB$V0
000022 000000G .WORD MCB$V1
000024 140310 .WORD 140310
000026 143716 .WORD 143716
000030 001400 .WORD 1400
000032 000000 .WORD 0
000034 000000 .WORD 0
000036 000000 .WORD 0
000000 .PSECT $PLIT$, RO , D
000000 000000G P.AAA: .WORD $DSPCR
000002 000000G .WORD $DSPCR
000004 000000G .WORD $DSPCR
000006 000000G .WORD $DSPCR
000010 000000G .WORD $DSPCR
000012 000000V .WORD U.3
000014 000000V .WORD U.2
000016 000000' .WORD U.1
000020 000000G .WORD $DSPCR
000022 000000G .WORD $DSPCR
000024 000000V P.AAB: .WORD U.4
000026 000000G .WORD $DSPCR
000030 000000G .WORD $DSPCR
000032 000000V .WORD U.5
.GLOBL $DSPCR, .DSPCR, MCB$V0, MCB$V1
.GLOBL .CRPIX
000000' ; $TOPLL
U.11= P.AAA
.SBTTL RCPDSP
000000 .PSECT $CODE$, RO
000000 004773 000024' ; RCPDSP
U.1: JSR PC,@P.AAB(R3) ; *,*(MODD) 0247
000004 000207 RTS PC ; 0212
; Routine Size: 3 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 1 word
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 8
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (4)
; 0250
; 0251 routine TIMDSP (DB,CCB,MODD): MCB_DB_CCB_MOD novalue =
; 0252
; 0253 !++
; 0254 ! FUNCTIONAL DESCRIPTION:
; 0255 !
; 0256 ! Dispatches Time subfunctions.
; 0257 !
; 0258 ! FORMAL PARAMETERS
; 0259 !
; 0260 ! DB Process database
; 0261 ! CCB Function CCB
; 0262 ! MODD Modifier
; 0263 !
; 0264 ! IMPLICIT INPUTS
; 0265 !
; 0266 ! NONE.
; 0267 !
; 0268 ! ROUTINE VALUE:
; 0269 ! COMPLETION CODES:
; 0270 !
; 0271 ! NONE.
; 0272 !
; 0273 ! SIDE EFFECTS:
; 0274 !
; 0275 ! NONE.
; 0276 !
; 0277 !--
; 0278
; 0279 begin
; 0280
; P 0281 DISPATCH$(.MODD,
; P 0282 TABLE$ ($DSPCR, 0, ! Sub-dispatch table
; P 0283 (FM_PIN,INIT_TOP), ! Initialize
; P 0284 (FM_CCB,SEND_MESSAGE)),! Use CCB
; P 0285 (.DB,.CCB),
; 0286 MCB_DB_CCB);
; 0287
; 0288 end; !End of TIMDSP
000034 .PSECT $PLIT$, RO , D
000034 000000G P.AAC: .WORD $DSPCR
000036 000000G .WORD $DSPCR
000040 000000G .WORD $DSPCR
000042 000000V .WORD U.3
000044 000000V .WORD U.10
.SBTTL TIMDSP
000006 .PSECT $CODE$, RO
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 9
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (4)
000000 004773 000034' ; TIMDSP
U.13: JSR PC,@P.AAC(R3) ; *,*(MODD) 0286
000004 000207 RTS PC ; 0251
; Routine Size: 3 words, Routine Base: $CODE$ + 0006
; Maximum stack depth per invocation: 1 word
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 10
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (5)
; 0289
; 0290 routine XCPDSP (DB,CCB,MODD): MCB_DB_CCB_MOD novalue =
; 0291
; 0292 !++
; 0293 ! FUNCTIONAL DESCRIPTION:
; 0294 !
; 0295 ! Dispatches Transmit Complete subfunctions.
; 0296 !
; 0297 ! FORMAL PARAMETERS
; 0298 !
; 0299 ! DB Process database
; 0300 ! CCB Function CCB
; 0301 ! MODD Modifier
; 0302 !
; 0303 ! IMPLICIT INPUTS
; 0304 !
; 0305 ! NONE.
; 0306 !
; 0307 ! ROUTINE VALUE:
; 0308 ! COMPLETION CODES:
; 0309 !
; 0310 ! NONE.
; 0311 !
; 0312 ! SIDE EFFECTS:
; 0313 !
; 0314 ! NONE.
; 0315 !
; 0316 !--
; 0317
; 0318 begin
; 0319
; P 0320 DISPATCH$(.MODD,
; P 0321 TABLE$ ($DSPCR, 0, ! Sub-dispatch table
; P 0322 (S$ACC,ACCEPT_COMPLETE), ! Accept complete
; P 0323 (S$SND,SEND_COMPLETE), ! Message sent
; P 0324 (S$DIS,DISCONNECT_COMPLETE), ! Disconnection completed
; P 0325 (S$ABO,DISCONNECT_COMPLETE)), ! Abort completed
; P 0326 (.DB,.CCB),
; 0327 MCB_DB_CCB);
; 0328
; 0329 end; !End of XCPDSP
000046 .PSECT $PLIT$, RO , D
000046 000000G P.AAD: .WORD $DSPCR
000050 000000V .WORD U.6
000052 000000G .WORD $DSPCR
000054 000000V .WORD U.7
000056 000000G .WORD $DSPCR
000060 000000G .WORD $DSPCR
000062 000000G .WORD $DSPCR
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 11
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (5)
000064 000000G .WORD $DSPCR
000066 000000V .WORD U.8
000070 000000V .WORD U.8
.SBTTL XCPDSP
000014 .PSECT $CODE$, RO
000000 004773 000046' ; XCPDSP
U.2: JSR PC,@P.AAD(R3) ; *,*(MODD) 0327
000004 000207 RTS PC ; 0290
; Routine Size: 3 words, Routine Base: $CODE$ + 0014
; Maximum stack depth per invocation: 1 word
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 12
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (6)
; 0330
; 0331 routine INIT_TOP (DB,MODD): MCB_DB_MOD novalue =
; 0332
; 0333 !++
; 0334 ! FUNCTIONAL DESCRIPTION:
; 0335 !
; 0336 ! Performs process initialization for TOP:
; 0337 !
; 0338 ! 1. Acquires the Transport data base address from XPT.
; 0339 ! 2. Gets a work CCB, to cut down the risk of resource
; 0340 ! failure.
; 0341 ! 3. Calculates Session Control's PIX and stores it in
; 0342 ! the TOP data base.
; 0343 !
; 0344 ! FORMAL PARAMETERS
; 0345 !
; 0346 ! DB TOP data base address
; 0347 ! MODD Function modifier: must be FM_PIN
; 0348 !
; 0349 ! IMPLICIT INPUTS
; 0350 !
; 0351 ! NONE.
; 0352 !
; 0353 ! ROUTINE VALUE:
; 0354 ! COMPLETION CODES:
; 0355 !
; 0356 ! NONE.
; 0357 !
; 0358 ! SIDE EFFECTS:
; 0359 !
; 0360 ! All subsequent processing for TOP assumes that the Session
; 0361 ! Control PIX and the Transport data base address already exist
; 0362 ! in the TOP data base.
; 0363 !
; 0364 !--
; 0365
; 0366 begin
; 0367
; 0368 map DB: ref block field(D_FIELDS);
; 0369
; 0370 !
; 0371 ! Get the PIX for Transport (temporarily)
; 0372 !
; 0373
; 0374 if not PDVID$(rad50(XPT),D_XPTPIX)
; 0375 then SIGNAL_STOP($TOP$_CFG);
; 0376
; 0377 end; !End of INIT_TOP
.GLOBL P.DTGT, $CALLI
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 13
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (6)
.SBTTL INIT.TOP
000000 005746 ; INIT.TOP
U.3: TST -(SP) ; 0331
000002 012746 000002 MOV #2,-(SP) ; 0374
000006 060616 ADD SP,(SP) ; $MCB$MY.INDEX,*
000010 012746 114224 MOV #-63554,-(SP)
000014 012746 000002 MOV #2,-(SP)
000020 012746 000000G MOV #P.DTGT,-(SP)
000024 004767 000000G JSR PC,$CALLI
000030 062706 000010 ADD #10,SP
000034 010003 MOV R0,R3 ; *,$MCB$STATUS
000036 006000 ROR R0
000040 103001 BCC 1$
000042 011601 MOV (SP),R1 ; $MCB$MY.INDEX,$MCB$HANDLE
000044 010300 1$: MOV R3,R0 ; $MCB$STATUS,$MCB$STATUS
000046 006003 ROR R3 ; $MCB$STATUS
000050 103002 BCC 2$
000052 110165 000001 MOVB R1,1(R5) ; $MCB$HANDLE,*(DB)
000056 032700 000001 2$: BIT #1,R0 ; *,$MCB$STATUS
000062 001007 BNE 3$
000064 012746 100024 MOV #-77754,-(SP) ; 0375
000070 012746 000001 MOV #1,-(SP)
000074 004767 000000G JSR PC,$STOP
000100 022626 CMP (SP)+,(SP)+
000102 005726 3$: TST (SP)+ ; 0331
000104 000207 RTS PC
; Routine Size: 35 words, Routine Base: $CODE$ + 0022
; Maximum stack depth per invocation: 6 words
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 14
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (7)
; 0378
; 0379 routine RCV_CONNECT (DB,CCB): MCB_DB_CCB novalue =
; 0380
; 0381 !++
; 0382 ! FUNCTIONAL DESCRIPTION:
; 0383 !
; 0384 ! Processes an incoming connect. Only one link at a time is allowed.
; 0385 !
; 0386 ! FORMAL PARAMETERS
; 0387 !
; 0388 ! DB TOP data base address
; 0389 ! CCB Function CCB
; 0390 !
; 0391 ! IMPLICIT INPUTS
; 0392 !
; 0393 ! NONE.
; 0394 !
; 0395 ! ROUTINE VALUE:
; 0396 ! COMPLETION CODES:
; 0397 !
; 0398 ! NONE.
; 0399 !
; 0400 ! SIDE EFFECTS:
; 0401 !
; 0402 ! NONE.
; 0403 !
; 0404 !--
; 0405
; 0406 begin
; 0407 map DB: ref block field(D_FIELDS);
; 0408 map CCB: ref block field(C_FIELDS);
; 0409
; 0410 if .D_STATE neq DS_IDLE ! Link already in use -
; 0411 then begin ! reject this one
; 0412 $SC_CONNECT_RECEIVED(.CCB,0,S_EOTB);
; 0413 return;
; 0414 end;
; 0415
; 0416 D_STATE = DS_DO_ACCEPT;
; 0417 D_LLA = .CCB[C_LIX]; ! Save the LLA
; 0418 D_SCPIX = .CCB[C_PIX]; ! and SC PIX.
; P 0419 $SC_CONNECT_RECEIVED(.CCB, ! Acknowledge the connection
; 0420 .C_ULA,S_SSUC);
; 0421
; 0422 SEND_MESSAGE(D_BASE,0)
; 0423 end; !End of RCV_CONNECT
.GLOBL $SCHED
.SBTTL RCV.CONNECT
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 15
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (7)
000000 010400 ; RCV.CONNECT
U.4: MOV R4,R0 ; *,CCB 0379
000002 105715 TSTB (R5) ; DB 0410
000004 001413 BEQ 1$
000006 105060 000024 CLRB 24(R0) ; *(CCB) 0412
000012 012760 177772 000014 MOV #-6,14(R0) ; *,*(CCB)
000020 112760 000004 000012 MOVB #4,12(R0) ; *,*(CCB)
000026 004767 000000G JSR PC,$SCHED
000032 000207 RTS PC ; 0411
000034 112715 000001 1$: MOVB #1,(R5) ; *,DB 0416
000040 116065 000010 000002 MOVB 10(R0),2(R5) ; *(CCB),*(DB) 0417
000046 116065 000011 000003 MOVB 11(R0),3(R5) ; *(CCB),*(DB) 0418
000054 116760 000000G 000024 MOVB .CRPIX,24(R0) ; *,*(CCB) 0420
000062 012760 000001 000014 MOV #1,14(R0) ; *,*(CCB)
000070 112760 000004 000012 MOVB #4,12(R0) ; *,*(CCB)
000076 010004 MOV R0,R4 ; CCB,*
000100 004767 000000G JSR PC,$SCHED
000104 005004 CLR R4 ; 0422
000106 004767 000000V JSR PC,U.10
000112 000207 RTS PC ; 0379
; Routine Size: 38 words, Routine Base: $CODE$ + 0130
; Maximum stack depth per invocation: 1 word
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 16
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (8)
; 0424
; 0425 routine RCV_ABORT (DB,CCB): MCB_DB_CCB novalue =
; 0426
; 0427 !++
; 0428 ! FUNCTIONAL DESCRIPTION:
; 0429 !
; 0430 ! Processes the completion of a disconnect or abort. Since the
; 0431 ! disconnect cannot complete until the previous transmit has completed,
; 0432 ! and any abort will occur without any transmits outstanding, very little
; 0433 ! needs to be done in this routine.
; 0434 !
; 0435 ! FORMAL PARAMETERS
; 0436 !
; 0437 ! DB TOP data base address
; 0438 ! CCB Function CCB
; 0439 !
; 0440 ! IMPLICIT INPUTS
; 0441 !
; 0442 ! NONE.
; 0443 !
; 0444 ! ROUTINE VALUE:
; 0445 ! COMPLETION CODES:
; 0446 !
; 0447 ! NONE.
; 0448 !
; 0449 ! SIDE EFFECTS:
; 0450 !
; 0451 ! NONE.
; 0452 !
; 0453 !--
; 0454
; 0455 begin
; 0456 map DB: ref block field(D_FIELDS);
; 0457 map CCB: ref block field (C_fields);
; 0458
; 0459 $SC_DISCONNECTED(.CCB);
; 0460
; 0461 case .D_STATE from DS_LO to DS_HI of
; 0462 set
; 0463 [DS_DO_ACCEPT,DS_DO_DISCONNECT, DS_DO_ABORT]:
; 0464 D_STATE = DS_DO_ABORT;
; 0465 [inrange]:
; 0466 begin
; 0467 ABORT(D_BASE,0);
; 0468 end;
; 0469 tes;
; 0470
; 0471 end; !End of RCV_ABORT
.SBTTL RCV.ABORT
000000 112764 000004 000012 ; RCV.ABORT
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 17
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (8)
U.5: MOVB #4,12(R4) ; *,*(CCB) 0459
000006 004767 000000G JSR PC,$SCHED
000012 005000 CLR R0 ; 0461
000014 151500 BISB (R5),R0 ; DB,*
000016 006300 ASL R0
000020 066007 000072' ADD P.AAE(R0),PC ; Case dispatch
000024 112715 000005 1$: MOVB #5,(R5) ; *,DB 0464
000030 000207 RTS PC ; 0461
000032 005004 2$: CLR R4 ; 0467
000034 004767 000000V JSR PC,U.9
000040 000207 RTS PC ; 0425
; Routine Size: 17 words, Routine Base: $CODE$ + 0244
; Maximum stack depth per invocation: 1 word
000072 .PSECT $PLIT$, RO , D
P.AAE: ; CASE Table for RCV.ABORT+0020 0461
000072 000006 .WORD 6 ; [2$]
000074 000000 .WORD 0 ; [1$]
000076 000006 .WORD 6 ; [2$]
000100 000000 .WORD 0 ; [1$]
000102 000006 .WORD 6 ; [2$]
000104 000000 .WORD 0 ; [1$]
000106 000006 .WORD 6 ; [2$]
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 18
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (9)
; 0472
; 0473 routine ACCEPT_COMPLETE (DB,CCB): MCB_DB_CCB novalue =
; 0474
; 0475 !++
; 0476 ! FUNCTIONAL DESCRIPTION:
; 0477 !
; 0478 ! This routine is invoked after the connect accept has completed.
; 0479 ! If the link hasn't aborted in the meanwhile, the routine gets
; 0480 ! an buffer large enough to contain the topology message, constructs
; 0481 ! the message, sends it out, and sticks a synchronous disconnect
; 0482 ! behind it.
; 0483 !
; 0484 ! FORMAL PARAMETERS
; 0485 !
; 0486 ! DB TOP data base address
; 0487 ! CCB Function CCB
; 0488 !
; 0489 ! IMPLICIT INPUTS
; 0490 !
; 0491 ! None
; 0492 !
; 0493 ! ROUTINE VALUE:
; 0494 ! COMPLETION CODES:
; 0495 !
; 0496 ! NONE.
; 0497 !
; 0498 ! SIDE EFFECTS:
; 0499 !
; 0500 ! NONE.
; 0501 !
; 0502 !--
; 0503
; 0504 begin
; 0505
; 0506 map DB: ref block field(D_FIELDS);
; 0507 map CCB: ref block field(C_FIELDS);
; 0508
; 0509 selectone .D_STATE of
; 0510 set
; 0511 [DS_ACCEPTING]:
; 0512 ;
; 0513 [DS_DO_ABORT, DS_ABORTING]:
; 0514 return $MCB_RETURN_CCB(.CCB);
; 0515 [otherwise]:
; 0516 return ABORT(D_BASE,.CCB);
; 0517 tes;
; 0518
; 0519 !
; 0520 ! Error conditions:
; 0521 !
; 0522 ! 1. Link aborted.
; 0523 ! 2. Unable to get a buffer to construct the message.
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 19
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (9)
; 0524 !
; 0525
; 0526 if (.CCB[C_STS] neq S_SSUC)
; 0527 then return ABORT(D_BASE,.CCB);
; 0528
; 0529 if not $MCB_GET_BUFFER(.D_ALLOCATION,CCB[C_ADDR])
; 0530 then return ABORT(D_BASE,.CCB);
; 0531
; 0532 SMAP$(CCB[C_BIAS]);
; 0533 CCB[C_PRM5] = .D_ALLOCATION;
; 0534
; 0535 !
; 0536 ! Construct the message
; 0537 !
; 0538
; 0539 CALL$P(GETTOP, .D_XPTPIX, .CCB);
; 0540
; P 0541 $SC_DATA_SEGMENT_TRANSMIT(.CCB, ! Send out
; 0542 .D_SCPIX,.D_LLA,.C_ULA,S$PEOM); ! the message
; 0543
; 0544 D_STATE = DS_DO_DISCONNECT;
; 0545 SEND_MESSAGE(D_BASE,0);
; 0546 end; !End of ACCEPT_COMPLETE
.GLOBL $CCBRT, $CORGT, KISAR6, GETTOP
.GLOBL $CALLP
.SBTTL ACCEPT.COMPLETE
000306 .PSECT $CODE$, RO
000000 005746 ; ACCEPT.COMPLETE
U.6: TST -(SP) ; 0473
000002 010446 MOV R4,-(SP)
000004 010566 000002 MOV R5,2(SP)
000010 121527 000002 CMPB (R5),#2 ; 0509
000014 001411 BEQ 1$
000016 121527 000005 CMPB (R5),#5
000022 103426 BLO 2$
000024 121527 000006 CMPB (R5),#6
000030 101023 BHI 2$
000032 004767 000000G JSR PC,$CCBRT ; 0514
000036 000515 BR 4$
000040 011600 1$: MOV (SP),R0 ; 0526
000042 026027 000014 000001 CMP 14(R0),#1
000050 001013 BNE 2$ ; 0527
000052 016600 000002 MOV 2(SP),R0 ; 0529
000056 016001 000004 MOV 4(R0),R1
000062 004767 000000G JSR PC,$CORGT
000066 103404 BCS 2$
000070 011601 MOV (SP),R1
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 20
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (9)
000072 010061 000020 MOV R0,20(R1) ; $MCB$R0,*
000076 000406 BR 3$
000100 016605 000002 2$: MOV 2(SP),R5 ; 0530
000104 011604 MOV (SP),R4
000106 004767 000000V JSR PC,U.9
000112 000467 BR 4$
000114 011600 3$: MOV (SP),R0 ; 0532
000116 016760 000000G 000016 MOV KISAR6,16(R0)
000124 016601 000002 MOV 2(SP),R1 ; 0533
000130 016160 000004 000034 MOV 4(R1),34(R0)
000136 010046 MOV R0,-(SP) ; 0539
000140 012746 000001 MOV #1,-(SP)
000144 012746 000000G MOV #GETTOP,-(SP)
000150 011100 MOV (R1),R0
000152 105000 CLRB R0
000154 000300 SWAB R0
000156 010046 MOV R0,-(SP)
000160 004767 000000G JSR PC,$CALLP
000164 016600 000010 MOV 10(SP),R0 ; 0542
000170 016601 000012 MOV 12(SP),R1
000174 116160 000003 000011 MOVB 3(R1),11(R0)
000202 116160 000002 000010 MOVB 2(R1),10(R0)
000210 116760 000000G 000024 MOVB .CRPIX,24(R0)
000216 112760 000004 000025 MOVB #4,25(R0)
000224 112760 000002 000012 MOVB #2,12(R0)
000232 112760 000006 000013 MOVB #6,13(R0)
000240 010004 MOV R0,R4
000242 004767 000000G JSR PC,$SCHED
000246 112776 000003 000012 MOVB #3,@12(SP) ; 0544
000254 016605 000012 MOV 12(SP),R5 ; 0545
000260 005004 CLR R4
000262 004767 000000V JSR PC,U.10
000266 062706 000010 ADD #10,SP ; 0504
000272 022626 4$: CMP (SP)+,(SP)+ ; 0473
000274 000207 RTS PC
; Routine Size: 95 words, Routine Base: $CODE$ + 0306
; Maximum stack depth per invocation: 7 words
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 21
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (10)
; 0547
; 0548 routine SEND_COMPLETE (DB,CCB): MCB_DB_CCB novalue =
; 0549
; 0550 !++
; 0551 ! FUNCTIONAL DESCRIPTION:
; 0552 !
; 0553 ! Processes the completion of the message transmission. Because
; 0554 ! a disconnect was sent after it, all that has to be done is to
; 0555 ! release the message buffer.
; 0556 !
; 0557 ! FORMAL PARAMETERS
; 0558 !
; 0559 ! DB TOP data base address
; 0560 ! CCB Function CCB
; 0561 !
; 0562 ! IMPLICIT INPUTS
; 0563 !
; 0564 ! NONE.
; 0565 !
; 0566 ! ROUTINE VALUE:
; 0567 ! COMPLETION CODES:
; 0568 !
; 0569 ! NONE.
; 0570 !
; 0571 ! SIDE EFFECTS:
; 0572 !
; 0573 ! NONE.
; 0574 !
; 0575 !--
; 0576
; 0577 begin
; 0578 map DB: ref block field(D_FIELDS);
; 0579 map CCB: ref block field (C_fields);
; 0580
; 0581 $MCB_RETURN_CCB_AND_BUFFER(.D_ALLOCATION,.CCB);
; 0582 end; !End of SEND_COMPLETE
.GLOBL $CBBRT
.SBTTL SEND.COMPLETE
000000 016501 000004 ; SEND.COMPLETE
U.7: MOV 4(R5),R1 ; *(DB),* 0581
000004 004767 000000G JSR PC,$CBBRT
000010 000207 RTS PC ; 0548
; Routine Size: 5 words, Routine Base: $CODE$ + 0604
; Maximum stack depth per invocation: 1 word
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 22
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (11)
; 0583
; 0584 routine DISCONNECT_COMPLETE (DB,CCB): MCB_DB_CCB novalue =
; 0585
; 0586 !++
; 0587 ! FUNCTIONAL DESCRIPTION:
; 0588 !
; 0589 ! Processes the completion of a disconnect or abort. Since the
; 0590 ! disconnect cannot complete until the previous transmit has completed,
; 0591 ! and any abort will occur without any transmits outstanding, very little
; 0592 ! needs to be done in this routine.
; 0593 !
; 0594 ! FORMAL PARAMETERS
; 0595 !
; 0596 ! DB TOP data base address
; 0597 ! CCB Function CCB
; 0598 !
; 0599 ! IMPLICIT INPUTS
; 0600 !
; 0601 ! NONE.
; 0602 !
; 0603 ! ROUTINE VALUE:
; 0604 ! COMPLETION CODES:
; 0605 !
; 0606 ! NONE.
; 0607 !
; 0608 ! SIDE EFFECTS:
; 0609 !
; 0610 ! NONE.
; 0611 !
; 0612 !--
; 0613
; 0614 begin
; 0615 map DB: ref block field(D_FIELDS);
; 0616
; 0617 $MCB_RETURN_CCB(.CCB);
; 0618 D_STATE = DS_IDLE;
; 0619 end; !End of DISCONNECT_COMPLETE
.SBTTL DISCONNECT.COMPLETE
000000 004767 000000G ; DISCONNECT.COMPLETE
U.8: JSR PC,$CCBRT ; 0617
000004 105015 CLRB (R5) ; DB 0618
000006 000207 RTS PC ; 0584
; Routine Size: 4 words, Routine Base: $CODE$ + 0616
; Maximum stack depth per invocation: 1 word
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 23
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (12)
; 0620
; 0621 routine ABORT (DB,CCB): MCB_DB_CCB novalue =
; 0622
; 0623 !++
; 0624 ! FUNCTIONAL DESCRIPTION:
; 0625 !
; 0626 ! Abort the link.
; 0627 !
; 0628 ! FORMAL PARAMETERS
; 0629 !
; 0630 ! DB TOP data base address
; 0631 ! CCB Function CCB
; 0632 !
; 0633 ! IMPLICIT INPUTS
; 0634 !
; 0635 ! NONE.
; 0636 !
; 0637 ! ROUTINE VALUE:
; 0638 ! COMPLETION CODES:
; 0639 !
; 0640 ! NONE.
; 0641 !
; 0642 ! SIDE EFFECTS:
; 0643 !
; 0644 ! NONE.
; 0645 !
; 0646 !--
; 0647
; 0648 begin
; 0649 map DB: ref block field(D_FIELDS);
; 0650 map CCB: ref block field(C_FIELDS);
; 0651
; 0652 D_STATE = DS_DO_ABORT;
; 0653 SEND_MESSAGE(D_BASE, .CCB);
; 0654 end; !End of ABORT
.SBTTL ABORT
000000 112715 000005 ; ABORT
U.9: MOVB #5,(R5) ; *,DB 0652
000004 004767 000000V JSR PC,U.10 ; 0653
000010 000207 RTS PC ; 0621
; Routine Size: 5 words, Routine Base: $CODE$ + 0626
; Maximum stack depth per invocation: 1 word
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 24
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (13)
; 0655
; 0656 routine SEND_MESSAGE (DB,CCB): MCB_DB_CCB novalue =
; 0657
; 0658 !++
; 0659 ! FUNCTIONAL DESCRIPTION:
; 0660 !
; 0661 ! Send a SC message appropriate to the state with the given CCB.
; 0662 !
; 0663 ! FORMAL PARAMETERS
; 0664 !
; 0665 ! DB TOP data base address
; 0666 ! CCB Function CCB
; 0667 !
; 0668 ! IMPLICIT INPUTS
; 0669 !
; 0670 ! NONE.
; 0671 !
; 0672 ! ROUTINE VALUE:
; 0673 ! COMPLETION CODES:
; 0674 !
; 0675 ! NONE.
; 0676 !
; 0677 ! SIDE EFFECTS:
; 0678 !
; 0679 ! NONE.
; 0680 !
; 0681 !--
; 0682
; 0683 begin
; 0684 map DB: ref block field(D_FIELDS);
; 0685 map CCB: ref block field(C_FIELDS);
; 0686
; 0687 if .CCB eqla 0
; 0688 then if not $MCB_GET_CCB(CCB)
; 0689 then return $MCB_REQUEST_CCB();
; 0690
; 0691 case .D_STATE from DS_LO to DS_HI of
; 0692 set
; 0693 [DS_DO_ACCEPT]:
; 0694 begin
; 0695 D_STATE = DS_ACCEPTING;
; P 0696 $SC_ACCEPT(.CCB,.D_SCPIX, ! Accept the connection
; 0697 .D_LLA,.C_ULA,S$PSEG,(,,0));
; 0698 end;
; 0699 [DS_DO_DISCONNECT]:
; 0700 begin
; 0701 D_STATE = DS_DISCONNECTING;
; 0702 $SC_DISCONNECT(.CCB,.D_SCPIX,.D_LLA,.C_ULA,(,,0));
; 0703 end;
; 0704 [DS_DO_ABORT]:
; 0705 begin
; 0706 D_STATE = DS_ABORTING;
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 25
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (13)
; 0707 $SC_ABORT(.CCB,.D_SCPIX,.C_ULA,(,,0));
; 0708 end;
; 0709 [inrange]:
; 0710 $MCB_RETURN_CCB(.CCB);
; 0711 tes;
; 0712
; 0713 end; !End of SEND_MESSAGE
.GLOBL $CCBGT, $CCBRQ
.SBTTL SEND.MESSAGE
000000 010401 ; SEND.MESSAGE
U.10: MOV R4,R1 ; *,CCB 0656
000002 001010 BNE 2$ ; 0687
000004 004767 000000G JSR PC,$CCBGT ; 0688
000010 103402 BCS 1$
000012 010401 MOV R4,R1 ; $MCB$R4,CCB
000014 000403 BR 2$
000016 004767 000000G 1$: JSR PC,$CCBRQ ; 0689
000022 000207 RTS PC
000024 005000 2$: CLR R0 ; 0691
000026 151500 BISB (R5),R0 ; DB,*
000030 006300 ASL R0
000032 066007 000110' ADD P.AAF(R0),PC ; Case dispatch
000036 112715 000002 3$: MOVB #2,(R5) ; *,DB 0695
000042 116561 000003 000011 MOVB 3(R5),11(R1) ; *(DB),*(CCB) 0697
000050 116561 000002 000010 MOVB 2(R5),10(R1) ; *(DB),*(CCB)
000056 116761 000000G 000024 MOVB .CRPIX,24(R1) ; *,*(CCB)
000064 112761 000001 000025 MOVB #1,25(R1) ; *,*(CCB)
000072 005061 000022 CLR 22(R1) ; *(CCB)
000076 111561 000012 MOVB (R5),12(R1) ; *,*(CCB)
000102 111561 000013 MOVB (R5),13(R1) ; *,*(CCB)
000106 000444 BR 6$
000110 112715 000004 4$: MOVB #4,(R5) ; *,DB 0701
000114 116561 000003 000011 MOVB 3(R5),11(R1) ; *(DB),*(CCB) 0702
000122 116561 000002 000010 MOVB 2(R5),10(R1) ; *(DB),*(CCB)
000130 116761 000000G 000024 MOVB .CRPIX,24(R1) ; *,*(CCB)
000136 005061 000022 CLR 22(R1) ; *(CCB)
000142 112761 000002 000012 MOVB #2,12(R1) ; *,*(CCB)
000150 112761 000020 000013 MOVB #20,13(R1) ; *,*(CCB)
000156 000420 BR 6$
000160 112715 000006 5$: MOVB #6,(R5) ; *,DB 0706
000164 116561 000003 000011 MOVB 3(R5),11(R1) ; *(DB),*(CCB) 0707
000172 116761 000000G 000024 MOVB .CRPIX,24(R1) ; *,*(CCB)
000200 005061 000022 CLR 22(R1) ; *(CCB)
000204 112761 000002 000012 MOVB #2,12(R1) ; *,*(CCB)
000212 112761 000022 000013 MOVB #22,13(R1) ; *,*(CCB)
000220 010104 6$: MOV R1,R4 ; CCB,*
000222 004767 000000G JSR PC,$SCHED
000226 000207 RTS PC ; 0691
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 26
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (13)
000230 010104 7$: MOV R1,R4 ; CCB,* 0710
000232 004767 000000G JSR PC,$CCBRT
000236 000207 RTS PC ; 0656
; Routine Size: 80 words, Routine Base: $CODE$ + 0640
; Maximum stack depth per invocation: 1 word
000110 .PSECT $PLIT$, RO , D
P.AAF: ; CASE Table for SEND.MESSAGE+0032 0691
000110 000172 .WORD 172 ; [7$]
000112 000000 .WORD 0 ; [3$]
000114 000172 .WORD 172 ; [7$]
000116 000052 .WORD 52 ; [4$]
000120 000172 .WORD 172 ; [7$]
000122 000122 .WORD 122 ; [5$]
000124 000172 .WORD 172 ; [7$]
; 0714
; 0715 end !End of Module TOP
; 0716 eludom
; OTS external references
.GLOBL $STOP
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $PLIT$ 43 RO , D , LCL, REL, CON
; ...... 16 RW , D , LCL, REL, CON
; $CODE$ 288 RO , I , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; NETPKG:<MCB>MCBLIB.L16.15 372 69 18 0
; NETPKG:<MCB>XPORTX.L16.15 599 29 4 0
; NETPKG:<MCB>SCSYS.L16.13 113 21 18 0
TOP 25-Jan-1983 10:03:57 TOPS-20 Bliss-16 2A(530) Page 27
X01040 30-Dec-1982 21:17:33 NETPKG:<XPT>TOP.BLI.4 (13)
; Size: 288 code + 59 data words
; Run Time: 00:11.4
; Elapsed Time: 00:39.6
; Memory Used: 39 pages
; Compilation Complete