Trailing-Edge
-
PDP-10 Archives
-
TOPS-20_V6.1_DECnetSrc_7-23-85
-
mcb/xpt/tlinmi.lst
There is 1 other file named tlinmi.lst in the archive. Click here to see a list.
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 1
30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (1)
; 0001 module TLINMI ( ! Network Management stuff
; 0002 ident = 'X01160'
; 0003 ) =
; 0004 begin
; 0005 !
; 0006 ! COPYRIGHT (c) 1980, 1981, 1982
; 0007 ! DIGITAL EQUIPMENT CORPORATION
; 0008 ! Maynard, Massachusetts
; 0009 !
; 0010 ! This software is furnished under a license and may be used
; 0011 ! and copied only in accordance with the terms of such license
; 0012 ! and with the inclusion of the above copyright notice. This
; 0013 ! software or any other copies thereof may not be provided or
; 0014 ! otherwise made available to any other person. No title to
; 0015 ! and ownership of the software is hereby transferred.
; 0016 !
; 0017 ! The information in this software is subject to change
; 0018 ! without notice and should not be construed as a commitment
; 0019 ! by DIGITAL EQUIPMENT CORPORATION.
; 0020 !
; 0021 ! DIGITAL assumes no responsibility for the use or reliability
; 0022 ! of its software on equipment which is not supplied by
; 0023 ! DIGITAL.
; 0024 !
; 0025
; 0026 !++
; 0027 ! FACILITY: Transport
; 0028 !
; 0029 ! ABSTRACT: This is the Network Management interface for the MCB
; 0030 ! implementation of the Transport Line Interface. It
; 0031 ! dispatches to a processing routine in XPTNMX.
; 0032 !
; 0033 ! ENVIRONMENT: MCB
; 0034 !
; 0035 ! AUTHOR: L. Webber, CREATION DATE: 20-Nov-80
; 0036 !
; 0037 ! MODIFIED BY:
; 0038 !
; 0039 ! 1.00 L. Webber, 11-Dec-80
; 0040 ! Modified the model interface template to match XPT.
; 0041 !
; 0042 ! 1.01 L. Webber, 22-Dec-80
; 0043 ! Split into XPT and TLI parts.
; 0044 !
; 0045 ! 1.02 L. Webber, 25-Feb-81
; 0046 ! NMX entries are now in process XNM.
; 0047 !
; 0048 ! 1.03 L. Webber, 20-May-81
; 0049 ! Add GIVE_CIRCUIT and TAKE_CIRCUIT to support the new DLL/Network
; 0050 ! Management Interface.
; 0051 !
; 0052 ! 1.04 L. Webber, 23-Jun-81
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 2
X01160 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (1)
; 0053 ! Construct EID for the $MODIFY_CIRCUIT_OWNER using TLI's PIX.
; 0054 !
; 0055 ! 1.05 L. Webber, 9-Jul-81
; 0056 ! Fix call to SHOW_ZERO_COUNTERS for zeroing to pass correct function
; 0057 ! code.
; 0058 !
; 0059 ! 1.06 L. Webber, 13-Jul-81
; 0060 ! Fix linkage to SET_PARM to pass address of COSTCH.
; 0061 !
; 0062 ! 1.07 L. Webber, 16-Sep-81
; 0063 ! Fix GIVE_CIRCUIT to use the DLLLIB sub-field to get the provider PIX
; 0064 ! from the function CCB.
; 0065 !
; 0066 ! 1.08 L. Webber, 24-Sep-81
; 0067 ! Change GIVE_CIRCUIT not to save the ASCII circuit ID any more.
; 0068 !
; 0069 ! 1.09 L. Webber, 28-Sep-81
; 0070 ! Fix GIVE_CIRCUIT to use the provider LIX to get the circuit ID
; 0071 ! from CEX, not the PIX.
; 0072 !
; 0073 ! 1.10 A. Peckham, 14-Apr-82
; 0074 ! Move NM code from XNM to this module. Optimize linkages.
; 0075 !
; 0076 ! 1.11 A. Peckham, 2-May-82
; 0077 ! Only modify circuit owner on first assignment.
; 0078 !
; 0079 ! 1.12 A. Peckham, 10-Sep-82
; 0080 ! Do not set initial Lcv in GIVE_CIRCUIT.
; 0081 !
; 0082 ! 1.13 A. Peckham, 14-Sep-82
; 0083 ! Display new variable "Block_size" for circuit parameter #810.
; 0084 !
; 0085 ! 1.14 A. Peckham, 29-Sep-82
; 0086 ! Fix setting of DLLhandle to fix low byte as LINEnumber in GIVE_CIRCUIT.
; 0087 !
; 0088 ! 1.15 A. Peckham, 1-Oct-82
; 0089 ! Make CLEAR CIRCUIT ALL work in CLEAR_CIRCUIT.
; 0090 !
; 0091 ! 1.16 A. Peckham, 20-Nov-82
; 0092 ! Support seconds-since-last-zeroed counter.
; 0093 !
; 0094 !--
; 0095
; 0096 !
; 0097 ! REQUIRED FILES
; 0098 !
; 0099
; 0100 require 'XPTMAC';
; 0198
; L 0199 %if %bliss (bliss16)
; 0200 %then
; 0201 linkage XPT_LKG_CCB = jsr (register = 4);
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 3
X01160 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (1)
; U 0202 %else
; U 0203 macro XPT_LKG_CCB = bliss36c;
; 0204 %fi
; 0205
; 0206 !
; 0207 ! TABLE OF CONTENTS:
; 0208 !
; 0209 forward routine
; 0210 TLI_NM: MCB_DB_CCB novalue, ! Control (i.e., NM)
; 0211 CIRCUIT_COUNTERS: LINKAGE_DB novalue, ! Get circuit counters
; 0212 CLEAR_CIRCUIT: LINKAGE_DB_CCB novalue, ! Clear a circuit parameter
; 0213 GIVE_CIRCUIT: MCB_DB_CCB novalue, ! Grant Circuit Ownership
; 0214 SET_CIRCUIT: LINKAGE_DB_CCB novalue, ! Set a circuit parameter
; 0215 SHOW_AND_ZERO_CIRCUIT_COUNTERS: LINKAGE_DB_CCB novalue,
; 0216 ! Show and zero circuit counters
; 0217 SHOW_CIRCUIT: LINKAGE_DB_CCB novalue, ! Show circuit parameters
; 0218 TAKE_CIRCUIT: MCB_DB_CCB novalue, ! Withdraw Circuit Ownership
; 0219 ZERO_CIRCUIT_COUNTERS: LINKAGE_DB_CCB novalue; ! Zero circuit counters
; 0220
; 0221 !
; 0222 ! MACROS:
; 0223 !
; 0224
; 0225 !
; 0226 ! EQUATED SYMBOLS:
; 0227 !
; 0228
; 0229 !
; 0230 ! OWN STORAGE:
; 0231 !
; 0232
; 0233 !
; 0234 ! EXTERNAL REFERENCES:
; 0235 !
; 0236 external routine
; 0237 CKTOFF: LINKAGE_DB_CCB novalue,
; 0238 CKTON: LINKAGE_DB_CCB novalue;
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 4
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (2)
; 0239 %sbttl 'Network Management'
; 0240 global routine TLI_NM (XPTDB,CCB): MCB_DB_CCB novalue =
; 0241
; 0242 !++
; 0243 ! FUNCTIONAL DESCRIPTION:
; 0244 ! This routine is activated by a control request from
; 0245 ! Network Management.
; 0246 !
; 0247 ! FORMAL PARAMETERS:
; 0248 !
; 0249 ! CCB CCB to pass to handler routine
; 0250 !
; 0251 ! IMPLICIT INPUTS:
; 0252 ! CCB Contents
; 0253 !
; 0254 ! IMPLICIT OUTPUTS:
; 0255 ! None
; 0256 !
; 0257 ! ROUTINE VALUE:
; 0258 ! COMPLETION CODES:
; 0259 ! None
; 0260 !
; 0261 ! SIDE EFFECTS:
; 0262 ! None
; 0263 !--
; 0264
; 0265 begin
; 0266
; 0267 require 'XPTSYM';
; 0304
; 0305 map
; 0306 CCB: ref block field (C_NM_FIELDS);
; 0307
; 0308 selectone .CCB [C_NM_ENTITY] of
; 0309 set
; 0310 [NMX$ENT_ckt]: ! NM function for circuit parameter
; 0311 case .CCB [C_NM_FUNC] from NMX$FNC_lo to NMX$FNC_hi of
; 0312 set ! *** CIRCUIT ***
; 0313 [NMX$FNC_set]: ! Set parameters
; 0314 SET_CIRCUIT (.XPTDB,.CCB);
; 0315 [NMX$FNC_clr]: ! Clear parameters
; 0316 CLEAR_CIRCUIT (.XPTDB,.CCB);
; 0317 [NMX$FNC_zro]: ! Zero counters
; 0318 ZERO_CIRCUIT_COUNTERS (.XPTDB,.CCB);
; 0319 [NMX$FNC_sho]: ! Show selected items
; 0320 SHOW_CIRCUIT (.XPTDB,.CCB);
; 0321 [NMX$FNC_szc]: ! Show and zero counters
; 0322 SHOW_AND_ZERO_CIRCUIT_COUNTERS (.XPTDB,.CCB);
; 0323 [NMX$FNC_ret]: ! Return selected items
; 0324 CCB [C_STS] = $NM$ERR_MPE;
; 0325 [inrange, outrange]: CCB [C_STS] = $NM$ERR_MPE;
; 0326 tes;
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 5
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (2)
; 0327 [otherwise]: CCB [C_STS] = $NM$ERR_URC;
; 0328 tes;
; 0329
; 0330 if .CCB[C_STS] neq 0 then begin
; 0331 CCB [C_FNC] = FC_CCP;
; 0332 $MCB_SCHEDULE_CCB (.CCB);
; 0333 end;
; 0334 end;
.TITLE TLINMI
.IDENT /X01160/
.GLOBL CKTOFF, CKTON, .CRDAT, $SCHED
.SBTTL TLI.NM Network Management
000000 .PSECT $CODE$, RO
000000 016400 000024 TLI.NM::
U.1: MOV 24(R4),R0 ; *(CCB),* 0308
000004 072027 177770 ASH #-10,R0
000010 042700 177760 BIC #177760,R0
000014 020027 000004 CMP R0,#4
000020 001040 BNE 8$
000022 116400 000024 MOVB 24(R4),R0 ; *(CCB),* 0311
000026 006200 ASR R0
000030 042700 177600 BIC #177600,R0
000034 005300 DEC R0
000036 020027 000005 CMP R0,#5
000042 101023 BHI 7$
000044 006300 ASL R0
000046 066007 000000' ADD P.AAA(R0),PC ; Case dispatch
000052 000417 1$: BR 7$ ; 0325
000054 004767 000000V 2$: JSR PC,U.5 ; 0314
000060 000423 BR 9$ ; 0311
000062 004767 000000V 3$: JSR PC,U.3 ; 0316
000066 000420 BR 9$ ; 0311
000070 004767 000000V 4$: JSR PC,U.9 ; 0318
000074 000415 BR 9$ ; 0311
000076 004767 000000V 5$: JSR PC,U.7 ; 0320
000102 000412 BR 9$ ; 0311
000104 004767 000000V 6$: JSR PC,U.6 ; 0322
000110 000407 BR 9$ ; 0311
000112 012764 177773 000014 7$: MOV #-5,14(R4) ; *,*(CCB) 0324
000120 000405 BR 10$ ; 0308
000122 012764 177770 000014 8$: MOV #-10,14(R4) ; *,*(CCB) 0327
000130 005764 000014 9$: TST 14(R4) ; *(CCB) 0330
000134 001405 10$: BEQ 11$
000136 112764 000022 000012 MOVB #22,12(R4) ; *,*(CCB) 0331
000144 004767 000000G JSR PC,$SCHED ; 0332
000150 000207 11$: RTS PC ; 0240
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 6
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (2)
; Routine Size: 53 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 1 word
000000 .PSECT $PLIT$, RO , D
P.AAA: ; CASE Table for TLI.NM+0046 0311
000000 000002 .WORD 2 ; [2$]
000002 000010 .WORD 10 ; [3$]
000004 000016 .WORD 16 ; [4$]
000006 000024 .WORD 24 ; [5$]
000010 000032 .WORD 32 ; [6$]
000012 000040 .WORD 40 ; [7$]
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 7
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (3)
; 0335
; 0336 routine CIRCUIT_COUNTERS (LINEb): LINKAGE_DB novalue =
; 0337
; 0338 !++
; 0339 ! FUNCTIONAL DESCRIPTION:
; 0340 ! This routine inserts the counters for the specified circuit
; 0341 ! in the NM buffer.
; 0342 !
; 0343 ! FORMAL PARAMETERS:
; 0344 !
; 0345 ! LINEb Line data base pointer
; 0346 !
; 0347 ! IMPLICIT INPUTS:
; 0348 ! None
; 0349 !
; 0350 ! IMPLICIT OUTPUTS:
; 0351 ! None
; 0352 !
; 0353 ! ROUTINE VALUE:
; 0354 ! COMPLETION CODES:
; 0355 ! None
; 0356 !
; 0357 ! SIDE EFFECTS:
; 0358 ! None
; 0359 !--
; 0360
; 0361 begin
; 0362 require 'XPTSYM';
; 0399 COUNTER_16_TIME(0,Time_circuit_zeroed); ! Seconds since last zeroed
; 0400 COUNTER_32(800,Arriving_Packets); ! Terminating Packets Received
; 0401 COUNTER_32(801,Departing_Packets); ! Originating Packets Sent
; 0402 COUNTER_16(802,End_Congestion); ! Terminating Congestion Loss
; 0403 COUNTER_32(810,Transit_In); ! Transit Packets Received
; 0404 COUNTER_32(811,Transit_Out); ! Transit Packets Sent
; 0405 COUNTER_16(812,Transit_Congestion); ! Transit Congestion Loss
; 0406 COUNTER_8(820,Line_Downs); ! Circuit Down's
; 0407 COUNTER_8(821,Init_Fails); ! Circuit Initialization Failures
; 0408 end; ! of CIRCUIT_COUNTERS
.GLOBL $DT16, $DC32, $DC16, $DC8
.SBTTL CIRCUIT.COUNTERS Network Management
000152 .PSECT $CODE$, RO
000000 004167 000000G ; CIRCUIT.COUNTERS
U.2: JSR R1,$SAVE5 ; 0336
000004 010501 MOV R5,R1 ; *,LINEB
000006 012746 140000 MOV #-40000,-(SP) ; 0399
000012 010100 MOV R1,R0 ; LINEB,*
000014 062700 000052 ADD #52,R0
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 8
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (3)
000020 004767 000000G JSR PC,$DT16
000024 012716 161440 MOV #-16340,(SP) ; 0400
000030 010100 MOV R1,R0 ; LINEB,*
000032 062700 000056 ADD #56,R0
000036 004767 000000G JSR PC,$DC32
000042 012716 161441 MOV #-16337,(SP) ; 0401
000046 010100 MOV R1,R0 ; LINEB,*
000050 062700 000062 ADD #62,R0
000054 004767 000000G JSR PC,$DC32
000060 012716 141442 MOV #-36336,(SP) ; 0402
000064 016100 000066 MOV 66(R1),R0 ; *(LINEB),*
000070 004767 000000G JSR PC,$DC16
000074 012716 161452 MOV #-16326,(SP) ; 0403
000100 010100 MOV R1,R0 ; LINEB,*
000102 062700 000070 ADD #70,R0
000106 004767 000000G JSR PC,$DC32
000112 012716 161453 MOV #-16325,(SP) ; 0404
000116 010105 MOV R1,R5 ; LINEB,*
000120 062705 000074 ADD #74,R5
000124 010500 MOV R5,R0
000126 004767 000000G JSR PC,$DC32
000132 012716 141454 MOV #-36324,(SP) ; 0405
000136 016100 000100 MOV 100(R1),R0 ; *(LINEB),*
000142 004767 000000G JSR PC,$DC16
000146 012716 121464 MOV #-56314,(SP) ; 0406
000152 116100 000102 MOVB 102(R1),R0 ; *(LINEB),*
000156 004767 000000G JSR PC,$DC8
000162 012716 121465 MOV #-56313,(SP) ; 0407
000166 116100 000103 MOVB 103(R1),R0 ; *(LINEB),*
000172 004767 000000G JSR PC,$DC8
000176 005726 TST (SP)+ ; 0361
000200 000207 RTS PC ; 0336
; Routine Size: 65 words, Routine Base: $CODE$ + 0152
; Maximum stack depth per invocation: 8 words
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 9
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (4)
; 0409
; 0410 routine CLEAR_CIRCUIT (XPTDB,CCB): LINKAGE_DB_CCB novalue =
; 0411
; 0412 !++
; 0413 ! FUNCTIONAL DESCRIPTION:
; 0414 ! This routine clears a circuit parameter
; 0415 !
; 0416 ! FORMAL PARAMETERS:
; 0417 !
; 0418 ! CCB CCB to pass to handler routine
; 0419 !
; 0420 ! IMPLICIT INPUTS:
; 0421 ! CCB Contents
; 0422 !
; 0423 ! IMPLICIT OUTPUTS:
; 0424 ! None
; 0425 !
; 0426 ! ROUTINE VALUE:
; 0427 ! COMPLETION CODES:
; 0428 ! None
; 0429 !
; 0430 ! SIDE EFFECTS:
; 0431 ! None
; 0432 !--
; 0433
; 0434 begin
; 0435 map CCB: ref block field(C_NM_FIELDS);
; 0436 local LINEb;
; 0437 require 'XPTSYM';
; 0474
; 0475 !
; 0476 ! Determine the entity whose parameter is to be set
; 0477 !
; 0478
; 0479 CCB [C_STS] = $NM$ERR_PNA;
; 0480
; 0481 selectone
; 0482 begin
; 0483 if .CCB[C_CNT] eql 0
; 0484 then 2600
; 0485 else begin
; 0486 pointer PTR;
; 0487 MAPBUF(.CCB,PTR);
; 0488 getw(PTR)
; 0489 end
; 0490 end
; 0491 of
; 0492 set
; 0493 [2600]: begin ! Circuit node-type
; 0494 CCB [C_STS] = $NM$ERR_CWS;
; 0495 if (LINEb = $TLI_GET_LINE_DB(.CCB [C_LIN])) neqa 0
; 0496 then begin
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 10
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (4)
; 0497 Ph2only = false; ! to "automatic"
; 0498 CCB [C_STS] = NM$SUC;
; 0499 end;
; 0500 end;
; 0501
; 0502 [otherwise]: 0; ! Invalid parameter type
; 0503 tes;
; 0504 end; ! of CLEAR_CIRCUIT
.GLOBL KISAR6, GTLINE
.SBTTL CLEAR.CIRCUIT Network Management
000000 010546 ; CLEAR.CIRCUIT
U.3: MOV R5,-(SP) ; 0410
000002 005746 TST -(SP)
000004 012705 000014 MOV #14,R5 ; 0479
000010 060405 ADD R4,R5 ; CCB,*
000012 012715 177752 MOV #-26,(R5)
000016 005764 000022 TST 22(R4) ; *(CCB) 0483
000022 001003 BNE 1$
000024 012700 005050 MOV #5050,R0 ; 0482
000030 000411 BR 2$
000032 016467 000016 000000G 1$: MOV 16(R4),KISAR6 ; *(CCB),* 0487
000040 016400 000020 MOV 20(R4),R0 ; *(CCB),PTR
000044 112016 MOVB (R0)+,(SP) ; PTR,X 0488
000046 112066 000001 MOVB (R0)+,1(SP) ; PTR,X
000052 011600 MOV (SP),R0 ; X,*
000054 020027 005050 2$: CMP R0,#5050 ; 0481
000060 001016 BNE 3$
000062 012715 177765 MOV #-13,(R5) ; 0494
000066 005000 CLR R0 ; 0495
000070 156400 000010 BISB 10(R4),R0 ; *(CCB),*
000074 004767 000000G JSR PC,GTLINE
000100 005700 TST R0 ; LINEB
000102 001405 BEQ 3$
000104 042760 002000 000002 BIC #2000,2(R0) ; *,*(LINEB) 0497
000112 012715 000001 MOV #1,(R5) ; 0498
000116 005726 3$: TST (SP)+ ; 0410
000120 012605 MOV (SP)+,R5
000122 000207 RTS PC
; Routine Size: 42 words, Routine Base: $CODE$ + 0354
; Maximum stack depth per invocation: 3 words
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 11
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (5)
; 0505
; 0506 global
; 0507 routine GIVE_CIRCUIT (XPTDB,CCB): MCB_DB_CCB novalue =
; 0508
; 0509 !++
; 0510 ! FUNCTIONAL DESCRIPTION:
; 0511 !
; 0512 ! Processes a "Grant Circuit Ownership" function. If this is the
; 0513 ! first time the circuit has been mentioned, a data base entry is
; 0514 ! allocated for it. Network Management is informed of the change
; 0515 ! in circuit owner. If the circuit's Network Management state is ON,
; 0516 ! the circuit is initialized.
; 0517 !
; 0518 ! FORMAL PARAMETERS
; 0519 !
; 0520 ! CCB Function CCB
; 0521 !
; 0522 ! CCB[C_LIN] 0, if ownership of the circuit is being
; 0523 ! given Transport for the first time. Other-
; 0524 ! wise, the index of the data base entry
; 0525 ! allocated for the circuit.
; 0526 !
; 0527 ! If C_LIN is 0:
; 0528 !
; 0529 ! CCB[C_PRM1]
; 0530 ! subfield DLL$B_PROVIDER_PROCESS_INDEX
; 0531 ! Provider PIX for the DLL process for the
; 0532 ! circuit.
; 0533 ! subfield DLL$B_PROVIDER_LINE_INDEX
; 0534 ! Provider LIX for the circuit.
; 0535 ! CCB[C_PRM2] Pointer to an unmapped image field which
; 0536 ! represents the ASCII line ID.
; 0537 ! CCB[C_PRM3] Circuit characteristics:
; 0538 !
; 0539 ! ........ .......x 1 if the circuit is a
; 0540 ! DTE adjacent to a KL.
; 0541 ! xxxxxxxx xxxxxxx. Reserved.
; 0542 !
; 0543 !
; 0544 ! IMPLICIT INPUTS
; 0545 !
; 0546 ! NONE.
; 0547 !
; 0548 ! ROUTINE VALUE:
; 0549 ! COMPLETION CODES:
; 0550 !
; 0551 ! NONE.
; 0552 !
; 0553 ! SIDE EFFECTS:
; 0554 !
; 0555 ! NONE.
; 0556 !
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 12
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (5)
; 0557 !--
; 0558
; 0559 begin
; 0560 map CCB: ref block field(C_fields);
; 0561 local LINEb;
; 0562 require 'XPTSYM';
; 0599 local P,Q,LEN;
; 0600
; 0601 !
; 0602 ! Set up a line data base entry if required.
; 0603 !
; 0604
; 0605 if .CCB[C_LIN] eql 0 then begin
; 0606 bind DLL_FLAG = CCB [C_PRM3]: block field (DLL$V_DTE_CIRCUIT);
; 0607
; 0608 incr J from 1 to NLN do begin ! Scan for a
; 0609 LINEb = $TLI_GET_LINE_DB(.J); ! free line data
; 0610 if .DLLhandle eql 0 then ! base entry
; 0611 exitloop(CCB [C_LIN] = .J);
; 0612 end;
; 0613 if .CCB [C_LIN] eql 0 then ! Not found -
; 0614 SIGNAL_STOP(CE_ERR); ! bomb
; 0615 DLLhandle = (.CCB[C_PRM1] and not %o'377') + .LINEnumber;
; 0616 DTEcircuit = false;
; 0617 if .DLL_FLAG [DLL$V_DTE_CIRCUIT] ! If the circuit is a DTE,
; 0618 then begin
; 0619 DTEcircuit = true; ! remember the fact.
; 0620 Intercept = true;
; 0621 end;
; 0622 Hello_timer = Default_Hello_timer;
; 0623 Listen_timer = Default_Listen_timer;
; 0624 $NM_TIME(Time_circuit_zeroed);
; 0625
; 0626 !
; 0627 ! Inform Network Management of the new circuit owner
; 0628 !
; 0629
; 0630 begin
; 0631 local
; 0632 NMX_ID,
; 0633 SAVE_MAP;
; 0634 SMAP$(SAVE_MAP);
; 0635 MAP$(.CCB[C_BIAS]);
; P 0636 NMX$MODIFY_CIRCUIT_OWNER (PD_NMX, ! NMX's PIX
; P 0637 .CCB [C_ADDR], ! ASCII ID
; P 0638 PD_TLI^8+.CCB[C_LIN],! EID
; 0639 NMX_ID); ! Circuit's NMXID (returned)
; 0640 MAP$(.SAVE_MAP);
; 0641 NMXID = .NMX_ID;
; 0642 end;
; 0643 end
; 0644 else ! "Old" circuit:
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 13
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (5)
; 0645 LINEb = $TLI_GET_LINE_DB(.CCB[C_LIN]); ! address line data base
; 0646
; 0647 !
; 0648 ! Change the ownership state.
; 0649 !
; 0650
; 0651 if not .OWNED ! Attempt to grant ownership
; 0652 then CKTON(.LINEb, .CCB) ! of the circuit
; 0653 else SIGNAL_STOP(CE_ERR); ! otherwise there is a mixup
; 0654
; 0655 end; !End of GIVE_CIRCUIT
.GLOBL $ST32, $NMMID, $CALLP
.SBTTL GIVE.CIRCUIT Network Management
000000 005746 GIVE.CIRCUIT::
U.4: TST -(SP) ; 0507
000002 010402 MOV R4,R2 ; *,CCB
000004 010503 MOV R5,R3 ; *,XPTDB
000006 012746 000010 MOV #10,-(SP) ; 0605
000012 060216 ADD R2,(SP) ; CCB,*
000014 105776 000000 TSTB @0(SP)
000020 001142 BNE 6$
000022 005004 CLR R4 ; J 0608
000024 000412 BR 2$
000026 010400 1$: MOV R4,R0 ; J,* 0609
000030 004767 000000G JSR PC,GTLINE
000034 010001 MOV R0,R1 ; *,LINEB
000036 005761 000032 TST 32(R1) ; *(LINEB) 0610
000042 001003 BNE 2$
000044 110476 000000 MOVB R4,@0(SP) ; J,* 0611
000050 000406 BR 3$
000052 005204 2$: INC R4 ; J 0608
000054 020463 000022 CMP R4,22(R3) ; J,*(XPTDB)
000060 003762 BLE 1$
000062 105776 000000 TSTB @0(SP) ; 0613
000066 001007 3$: BNE 4$
000070 012746 177760 MOV #-20,-(SP) ; 0614
000074 012746 000001 MOV #1,-(SP)
000100 004767 000000G JSR PC,$STOP
000104 022626 CMP (SP)+,(SP)+
000106 016204 000024 4$: MOV 24(R2),R4 ; *(CCB),* 0615
000112 042704 000377 BIC #377,R4
000116 005000 CLR R0
000120 156100 000026 BISB 26(R1),R0 ; *(LINEB),*
000124 060004 ADD R0,R4
000126 010461 000032 MOV R4,32(R1) ; *,*(LINEB)
000132 012700 000002 MOV #2,R0
000136 060100 ADD R1,R0 ; LINEB,*
000140 042710 010000 BIC #10000,(R0) ; 0616
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 14
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (5)
000144 132762 000001 000030 BITB #1,30(R2) ; *,*(CCB) 0617
000152 001402 BEQ 5$
000154 052710 010400 BIS #10400,(R0) ; 0620
000160 016361 000064 000022 5$: MOV 64(R3),22(R1) ; *(XPTDB),*(LINEB) 0622
000166 016361 000066 000024 MOV 66(R3),24(R1) ; *(XPTDB),*(LINEB) 0623
000174 010105 MOV R1,R5 ; LINEB,* 0624
000176 062705 000052 ADD #52,R5
000202 010500 MOV R5,R0
000204 004767 000000G JSR PC,$ST32
000210 016704 000000G MOV KISAR6,R4 ; *,SAVE.MAP 0634
000214 016267 000016 000000G MOV 16(R2),KISAR6 ; *(CCB),* 0635
000222 012746 000004 MOV #4,-(SP) ; 0639
000226 060616 ADD SP,(SP) ; NMX.ID,*
000230 005005 CLR R5
000232 156305 000003 BISB 3(R3),R5 ; *(XPTDB),*
000236 072527 000010 ASH #10,R5
000242 005000 CLR R0
000244 157600 000002 BISB @2(SP),R0
000250 060005 ADD R0,R5
000252 010546 MOV R5,-(SP)
000254 016246 000020 MOV 20(R2),-(SP) ; *(CCB),*
000260 012746 002002 MOV #2002,-(SP)
000264 012746 000004 MOV #4,-(SP)
000270 012746 000000G MOV #$NMMID,-(SP)
000274 005046 CLR -(SP)
000276 116316 000005 MOVB 5(R3),(SP) ; *(XPTDB),*
000302 004767 000000G JSR PC,$CALLP
000306 010467 000000G MOV R4,KISAR6 ; SAVE.MAP,* 0640
000312 016661 000020 000034 MOV 20(SP),34(R1) ; NMX.ID,*(LINEB) 0641
000320 062706 000016 ADD #16,SP ; 0605
000324 000406 BR 7$
000326 005000 6$: CLR R0 ; 0645
000330 157600 000000 BISB @0(SP),R0
000334 004767 000000G JSR PC,GTLINE
000340 010001 MOV R0,R1 ; *,LINEB
000342 032711 000400 7$: BIT #400,(R1) ; *,LINEB 0651
000346 001005 BNE 8$
000350 010105 MOV R1,R5 ; LINEB,* 0652
000352 010204 MOV R2,R4 ; CCB,*
000354 004767 000000G JSR PC,CKTON
000360 000407 BR 9$ ; 0651
000362 012746 177760 8$: MOV #-20,-(SP) ; 0653
000366 012746 000001 MOV #1,-(SP)
000372 004767 000000G JSR PC,$STOP
000376 022626 CMP (SP)+,(SP)+
000400 022626 9$: CMP (SP)+,(SP)+ ; 0507
000402 000207 RTS PC
; Routine Size: 130 words, Routine Base: $CODE$ + 0500
; Maximum stack depth per invocation: 10 words
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 15
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (6)
; 0656
; 0657 routine SET_CIRCUIT (XPTDB,CCB): LINKAGE_DB_CCB novalue =
; 0658
; 0659 !++
; 0660 ! FUNCTIONAL DESCRIPTION:
; 0661 ! This routine sets a circuit parameter
; 0662 !
; 0663 ! FORMAL PARAMETERS:
; 0664 !
; 0665 ! CCB CCB to pass to handler routine
; 0666 !
; 0667 ! IMPLICIT INPUTS:
; 0668 ! CCB Contents
; 0669 !
; 0670 ! IMPLICIT OUTPUTS:
; 0671 ! None
; 0672 !
; 0673 ! ROUTINE VALUE:
; 0674 ! COMPLETION CODES:
; 0675 ! None
; 0676 !
; 0677 ! SIDE EFFECTS:
; 0678 ! None
; 0679 !--
; 0680
; 0681 begin
; 0682 map CCB: ref block field(C_NM_FIELDS);
; 0683 local LINEb;
; 0684 require 'XPTSYM';
; 0721
; 0722 !
; 0723 ! Determine the entity whose parameter is to be set
; 0724 !
; 0725
; 0726 if (LINEb = $TLI_GET_LINE_DB(.CCB [C_LIN])) neqa 0
; 0727 then
; 0728 begin
; 0729 local PNUM,PVAL;
; 0730 begin
; 0731 pointer PTR;
; 0732 MAPBUF(.CCB,PTR);
; 0733 PNUM = getw(PTR);
; 0734 PVAL = getw(PTR);
; 0735 end;
; 0736
; 0737 selectone .PNUM of
; 0738 set
; 0739
; 0740 [0]: ! STATE
; 0741 selectoneu (PVAL = .PVAL<0,8>) of
; 0742 set
; 0743 [0]: begin ! Set line ON:
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 16
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (6)
; 0744 NMstate = ON; ! Change the line state
; 0745 selectone .LINEstate of
; 0746 set
; 0747 [TC,RU]: ! If not running
; 0748 0; ! then
; 0749 [otherwise]: ! initialize the line.
; 0750 if .DLLstate neq DLL_FREE
; 0751 then CALL$L(INI_LIN,.LINEb);
; 0752 tes;
; 0753 CCB [C_STS] = NM$SUC;
; 0754 end;
; 0755 [1]: begin ! Set line OFF:
; 0756 NMstate = OFF; ! Change the line state
; 0757 selectone .LINEstate of
; 0758 set
; 0759 [OFF,HA]: ! If not stopped
; 0760 0; ! then
; 0761 [otherwise]: ! stop this line.
; 0762 if .DLLstate neq DLL_FREE
; 0763 then CALL$L(TERM_LIN,.LINEb);
; 0764 tes;
; 0765 CCB [C_STS] = NM$SUC;
; 0766 end;
; 0767 [otherwise]:
; 0768 CCB [C_STS] = $NM$ERR_IPV;
; 0769 tes;
; 0770
; 0771 [900]: ! COST
; 0772 selectoneu (PVAL = .PVAL<0,8>) of
; 0773 set
; 0774 [1 to 25]:
; 0775 begin
; 0776 CALL$E(COSTCH,(PD_XPE),.CCB [C_LIN],.PVAL);
; 0777 CCB [C_STS] = NM$SUC;
; 0778 end;
; 0779 [otherwise]:
; 0780 CCB [C_STS] = $NM$ERR_IPV;
; 0781 tes;
; 0782 [906]: ! HELLO TIMER
; 0783 selectoneu .PVAL of
; 0784 set
; 0785 [1 to 65535]:
; 0786 begin
; 0787 Hello_timer = .PVAL;
; 0788 if .Hello_clock gtr .Hello_timer
; 0789 then Hello_clock = .Hello_timer;
; 0790 CCB [C_STS] = NM$SUC;
; 0791 end;
; 0792 [otherwise]:
; 0793 CCB [C_STS] = $NM$ERR_IPV;
; 0794 tes;
; 0795 [907]: ! LISTEN TIMER
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 17
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (6)
; 0796 selectoneu .PVAL of
; 0797 set
; 0798 [1 to 65535]:
; 0799 begin
; 0800 Listen_timer = .PVAL;
; 0801 if .Listen_clock gtr .Listen_timer
; 0802 then Listen_clock = .Listen_timer;
; 0803 CCB [C_STS] = NM$SUC;
; 0804 end;
; 0805 [otherwise]:
; 0806 CCB [C_STS] = $NM$ERR_IPV;
; 0807 tes;
; 0808 [2600]: ! NODE TYPE
; 0809 selectoneu (PVAL = .PVAL<0,8>) of
; 0810 set
; 0811 [2]: begin ! Set parameter
; 0812 Ph2only = true; ! to "Phase II only"
; 0813 CCB [C_STS] = NM$SUC;
; 0814 end;
; 0815 [otherwise]:
; 0816 CCB [C_STS] = $NM$ERR_IPV;
; 0817 tes;
; 0818
; 0819 [otherwise]: CCB [C_STS] = $NM$ERR_PNA; ! Invalid parameter type
; 0820 tes;
; 0821 end
; 0822 else CCB [C_STS] = $NM$ERR_URC;
; 0823
; 0824 end; ! of SET_CIRCUIT
.GLOBL INI.LIN, TERM.LIN, COSTCH, $CALLE
.SBTTL SET.CIRCUIT Network Management
000000 004167 000000G ; SET.CIRCUIT
U.5: JSR R1,$SAVE2 ; 0657
000004 005746 TST -(SP)
000006 005000 CLR R0 ; 0726
000010 156400 000010 BISB 10(R4),R0 ; *(CCB),*
000014 004767 000000G JSR PC,GTLINE
000020 010002 MOV R0,R2 ; *,LINEB
000022 001002 BNE 1$
000024 000167 000420 JMP 12$
000030 016467 000016 000000G 1$: MOV 16(R4),KISAR6 ; *(CCB),* 0732
000036 016400 000020 MOV 20(R4),R0 ; *(CCB),PTR
000042 112016 MOVB (R0)+,(SP) ; PTR,X 0733
000044 112066 000001 MOVB (R0)+,1(SP) ; PTR,X
000050 011601 MOV (SP),R1 ; X,PNUM
000052 112016 MOVB (R0)+,(SP) ; PTR,X 0734
000054 112066 000001 MOVB (R0)+,1(SP) ; PTR,X
000060 011600 MOV (SP),R0 ; X,PVAL
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 18
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (6)
000062 005701 TST R1 ; PNUM 0737
000064 001054 BNE 5$
000066 042700 177400 BIC #177400,R0 ; *,PVAL 0741
000072 001021 BNE 3$
000074 105062 000037 CLRB 37(R2) ; *(LINEB) 0744
000100 121227 000007 CMPB (R2),#7 ; LINEB,* 0745
000104 002403 BLT 2$
000106 121227 000010 CMPB (R2),#10 ; LINEB,*
000112 003542 BLE 9$
000114 105762 000006 2$: TSTB 6(R2) ; *(LINEB) 0750
000120 001537 BEQ 9$
000122 010246 MOV R2,-(SP) ; LINEB,* 0751
000124 012746 000001 MOV #1,-(SP)
000130 012746 000000G MOV #INI.LIN,-(SP)
000134 000423 BR 4$
000136 020027 000001 3$: CMP R0,#1 ; PVAL,* 0741
000142 001132 BNE 10$
000144 112762 000002 000037 MOVB #2,37(R2) ; *,*(LINEB) 0756
000152 105712 TSTB (R2) ; LINEB 0757
000154 001521 BEQ 9$
000156 121227 000002 CMPB (R2),#2 ; LINEB,*
000162 001516 BEQ 9$
000164 105762 000006 TSTB 6(R2) ; *(LINEB) 0762
000170 001513 BEQ 9$
000172 010246 MOV R2,-(SP) ; LINEB,* 0763
000174 012746 000001 MOV #1,-(SP)
000200 012746 000000G MOV #TERM.LIN,-(SP)
000204 004767 000000G 4$: JSR PC,$CALL
000210 062706 000006 ADD #6,SP
000214 000501 BR 9$ ; 0765
000216 020127 001604 5$: CMP R1,#1604 ; PNUM,* 0737
000222 001031 BNE 6$
000224 042700 177400 BIC #177400,R0 ; *,PVAL 0772
000230 001477 BEQ 10$
000232 020027 000031 CMP R0,#31 ; PVAL,*
000236 101074 BHI 10$
000240 010046 MOV R0,-(SP) ; PVAL,* 0776
000242 005046 CLR -(SP)
000244 116416 000010 MOVB 10(R4),(SP) ; *(CCB),*
000250 012746 000002 MOV #2,-(SP)
000254 012746 000000G MOV #COSTCH,-(SP)
000260 005046 CLR -(SP)
000262 116516 000002 MOVB 2(R5),(SP) ; *(XPTDB),*
000266 004767 000000G JSR PC,$CALLE
000272 012764 000001 000014 MOV #1,14(R4) ; *,*(CCB) 0777
000300 062706 000012 ADD #12,SP ; 0775
000304 000464 BR 13$ ; 0772
000306 020127 001612 6$: CMP R1,#1612 ; PNUM,* 0737
000312 001012 BNE 7$
000314 005700 TST R0 ; PVAL 0783
000316 001444 BEQ 10$
000320 010062 000022 MOV R0,22(R2) ; PVAL,*(LINEB) 0787
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 19
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (6)
000324 026200 000044 CMP 44(R2),R0 ; *(LINEB),* 0788
000330 003433 BLE 9$
000332 010062 000044 MOV R0,44(R2) ; *,*(LINEB) 0789
000336 000430 BR 9$ ; 0790
000340 020127 001613 7$: CMP R1,#1613 ; PNUM,* 0737
000344 001012 BNE 8$
000346 005700 TST R0 ; PVAL 0796
000350 001427 BEQ 10$
000352 010062 000024 MOV R0,24(R2) ; PVAL,*(LINEB) 0800
000356 026200 000046 CMP 46(R2),R0 ; *(LINEB),* 0801
000362 003416 BLE 9$
000364 010062 000046 MOV R0,46(R2) ; *,*(LINEB) 0802
000370 000413 BR 9$ ; 0803
000372 020127 005050 8$: CMP R1,#5050 ; PNUM,* 0737
000376 001020 BNE 11$
000400 042700 177400 BIC #177400,R0 ; *,PVAL 0809
000404 020027 000002 CMP R0,#2 ; PVAL,*
000410 001007 BNE 10$
000412 052762 002000 000002 BIS #2000,2(R2) ; *,*(LINEB) 0812
000420 012764 000001 000014 9$: MOV #1,14(R4) ; *,*(CCB) 0813
000426 000413 BR 13$ ; 0809
000430 012764 177760 000014 10$: MOV #-20,14(R4) ; *,*(CCB) 0816
000436 000407 BR 13$ ; 0737
000440 012764 177752 000014 11$: MOV #-26,14(R4) ; *,*(CCB) 0819
000446 000403 BR 13$ ; 0726
000450 012764 177770 000014 12$: MOV #-10,14(R4) ; *,*(CCB) 0822
000456 005726 13$: TST (SP)+ ; 0657
000460 000207 RTS PC
; Routine Size: 153 words, Routine Base: $CODE$ + 1104
; Maximum stack depth per invocation: 10 words
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 20
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (7)
; 0825
; 0826 routine SHOW_AND_ZERO_CIRCUIT_COUNTERS (XPTDB,CCB): LINKAGE_DB_CCB novalue =
; 0827
; 0828 !++
; 0829 ! FUNCTIONAL DESCRIPTION:
; 0830 ! This routine show the counters for the specified circuit
; 0831 ! and then zeroes them.
; 0832 !
; 0833 ! FORMAL PARAMETERS:
; 0834 !
; 0835 ! CCB CCB to pass to handler routine
; 0836 !
; 0837 ! IMPLICIT INPUTS:
; 0838 ! CCB Contents
; 0839 !
; 0840 ! IMPLICIT OUTPUTS:
; 0841 ! None
; 0842 !
; 0843 ! ROUTINE VALUE:
; 0844 ! COMPLETION CODES:
; 0845 ! None
; 0846 !
; 0847 ! SIDE EFFECTS:
; 0848 ! None
; 0849 !--
; 0850
; 0851 begin
; 0852 map CCB: ref block field(C_NM_FIELDS);
; 0853 local LINEb;
; 0854 require 'XPTSYM';
; 0891
; 0892 CCB [C_STS] = $NM$ERR_URC; ! Default to "unrecognized component"
; 0893 if (LINEb = $TLI_GET_LINE_DB(.CCB[C_LIN])) eqla 0
; 0894 then return; ! invalid LIX - error
; 0895
; 0896 !
; 0897 ! Map in the return buffer
; 0898 !
; 0899
; 0900 $NM_RESPONSE_BEGIN(.CCB);
; 0901 CIRCUIT_COUNTERS (.LINEb);
; 0902 $NM_RESPONSE_END(.CCB);
; 0903 begin
; 0904 local STS_SAVE;
; 0905 STS_SAVE = .CCB [C_STS];
; 0906 ZERO_CIRCUIT_COUNTERS (.XPTDB,.CCB);
; 0907 CCB [C_STS] = .STS_SAVE;
; 0908 end;
; 0909 end; ! of SHOW_AND_ZERO_CIRCUIT_COUNTERS
.GLOBL $NRBEG, $NREND
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 21
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (7)
.SBTTL SHOW.AND.ZERO.CIRCUIT.COUNTERS Network Management
000000 004167 000000G ; SHOW.AND.ZERO.CIRCUIT.COUNTERS
U.6: JSR R1,$SAVE5 ; 0826
000004 010503 MOV R5,R3 ; *,XPTDB
000006 012702 000014 MOV #14,R2 ; 0892
000012 060402 ADD R4,R2 ; CCB,*
000014 012712 177770 MOV #-10,(R2)
000020 005000 CLR R0 ; 0893
000022 156400 000010 BISB 10(R4),R0 ; *(CCB),*
000026 004767 000000G JSR PC,GTLINE
000032 010005 MOV R0,R5 ; *,LINEB
000034 001413 BEQ 1$ ; 0894
000036 004767 000000G JSR PC,$NRBEG ; 0900
000042 004767 176316 JSR PC,U.2 ; 0901
000046 004767 000000G JSR PC,$NREND ; 0902
000052 011201 MOV (R2),R1 ; *,STS.SAVE 0905
000054 010305 MOV R3,R5 ; XPTDB,* 0906
000056 004767 000000V JSR PC,U.9
000062 010112 MOV R1,(R2) ; STS.SAVE,* 0907
000064 000207 1$: RTS PC ; 0826
; Routine Size: 27 words, Routine Base: $CODE$ + 1566
; Maximum stack depth per invocation: 7 words
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 22
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (8)
; 0910
; 0911 routine SHOW_CIRCUIT (XPTDB,CCB): LINKAGE_DB_CCB novalue =
; 0912
; 0913 !++
; 0914 ! FUNCTIONAL DESCRIPTION:
; 0915 ! This routine shows circuit parameters
; 0916 !
; 0917 ! FORMAL PARAMETERS:
; 0918 !
; 0919 ! CCB CCB to pass to handler routine
; 0920 !
; 0921 ! IMPLICIT INPUTS:
; 0922 ! CCB Contents
; 0923 !
; 0924 ! IMPLICIT OUTPUTS:
; 0925 ! None
; 0926 !
; 0927 ! ROUTINE VALUE:
; 0928 ! COMPLETION CODES:
; 0929 ! None
; 0930 !
; 0931 ! SIDE EFFECTS:
; 0932 ! None
; 0933 !--
; 0934
; 0935 begin
; 0936 map CCB: ref block field(C_NM_FIELDS);
; 0937 local PLIST: ref vector;
; 0938 local LINEb;
; 0939 require 'XPTSYM';
; 0976
; 0977 CCB [C_STS] = $NM$ERR_URC; ! Default to "unrecognized component"
; 0978 if (LINEb = $TLI_GET_LINE_DB(.CCB[C_LIN])) eqla 0
; 0979 then return; ! invalid LIX - error
; 0980
; 0981 !
; 0982 ! Determine the entity whose data are to be shown
; 0983 !
; 0984
; 0985 $NM_RESPONSE_BEGIN(.CCB); ! Initialize response buffer
; 0986
; 0987 case .CCB[C_NM_SELECT] ! Select
; 0988 from NMX$SEL_lo to NMX$SEL_hi of ! parameter list
; 0989 set ! based on selector value
; 0990 [NMX$SEL_sta]: PLIST = plit(0,1,800,810);
; 0991 [NMX$SEL_sum]: PLIST = plit(0,1,800);
; 0992 [NMX$SEL_cha]: PLIST = plit(900,905,906,907,910,920,921,930,2600);
; 0993 [NMX$SEL_cou]: PLIST = plit(-1);
; 0994 tes;
; 0995
; 0996 !
; 0997 ! Build the buffer
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 23
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (8)
; 0998 !
; 0999
; 1000 incr I from 0 to .PLIST[-1]-1 do
; 1001 begin
; 1002 local PARM;
; 1003 PARM = .PLIST[.I];
; 1004 selectone .PARM of
; 1005 set
; 1006
; 1007 [0]: begin ! Line state:
; 1008 local VALUE;
; 1009 VALUE = 0; ! is ON
; 1010 if .LINEstate eql HA then VALUE = .VALUE + 1; ! or OFF
; 1011 if .DLLstate neq DLL_FREE ! Line is ours
; 1012 then PARAMETER_C_1(0,VALUE); ! display the state
; 1013 end;
; 1014
; 1015 [1]: begin ! Line substate:
; 1016 if .DLLstate neq DLL_FREE ! Line is ours
; 1017 then case .LINEstate from HA to RU of
; 1018 set
; 1019 [TI,TV,TC]: ! STARTING
; 1020 PARAMETER_C_1(.PARM,uplit(0));
; 1021 [LR,DS]: ! SYNCHRONIZING
; 1022 PARAMETER_C_1(.PARM,uplit(10));
; 1023 [DT,OFF]: ! FAILED
; 1024 PARAMETER_C_1(.PARM,uplit(11));
; 1025 [inrange]: ! (no substate)
; 1026 tes;
; 1027 end;
; 1028
; 1029 [800]: begin ! Adjacent node:
; 1030 if ((.LINEstate eql RU) or ! Do only if line
; 1031 (.LINEstate eql TC)) then ! state is ON
; 1032 selectone .Nty of
; 1033 set
; 1034 [PHtwo,TOPS20]:
; 1035 begin
; 1036 PARAMETER_CM(.PARM,2);
; 1037 PARAMETER_DU_2(,Nid);
; 1038 PARAMETER_AI(,.Nnml,byt$ptr(Nnm));
; 1039 end;
; 1040 [otherwise]:
; 1041 begin
; 1042 PARAMETER_CM(.PARM,1);
; 1043 PARAMETER_DU_2(,Nid);
; 1044 end;
; 1045 tes;
; 1046 end;
; 1047
; 1048 [810]: begin ! Circuit (DLL) Block Size:
; 1049 if ((.LINEstate eql RU) or ! Do only if line
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 24
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (8)
; 1050 (.LINEstate eql TC)) ! state is ON
; 1051 then PARAMETER_DU_2(.PARM,Block_size);
; 1052 end;
; 1053
; 1054 [900]: begin ! Circuit Cost:
; 1055 PARAMETER_DU_2(.PARM,Lcv);
; 1056 end;
; 1057
; 1058 [906]: begin ! Hello Timer:
; 1059 PARAMETER_DU_2(.PARM,Hello_timer);
; 1060 end;
; 1061
; 1062 [907]: begin ! Listen Timer:
; 1063 PARAMETER_DU_2(.PARM,Listen_timer);
; 1064 end;
; 1065
; 1066 [2600]: begin ! Circuit Node-type: either
; 1067 bind TWO = uplit(2); ! "Phase II only" or not given
; 1068 if .Ph2only then begin
; 1069 PARAMETER_C_1(.PARM,TWO);
; 1070 end;
; 1071 end;
; 1072 [-1]: begin
; 1073 CIRCUIT_COUNTERS (.LINEb);
; 1074 end;
; 1075 tes
; 1076 end;
; 1077
; 1078 !
; 1079 ! Update buffer count
; 1080 !
; 1081 $NM_RESPONSE_END(.CCB);
; 1082 end; ! of SHOW_CIRCUIT
000014 .PSECT $PLIT$, RO , D
000014 000004 .WORD 4 ; Plit count word
000016 000000 P.AAC: .WORD 0
000020 000001 .WORD 1
000022 001440 .WORD 1440
000024 001452 .WORD 1452
000026 000003 .WORD 3 ; Plit count word
000030 000000 P.AAD: .WORD 0
000032 000001 .WORD 1
000034 001440 .WORD 1440
000036 000011 .WORD 11 ; Plit count word
000040 001604 P.AAE: .WORD 1604
000042 001611 .WORD 1611
000044 001612 .WORD 1612
000046 001613 .WORD 1613
000050 001616 .WORD 1616
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 25
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (8)
000052 001630 .WORD 1630
000054 001631 .WORD 1631
000056 001642 .WORD 1642
000060 005050 .WORD 5050
000062 000001 .WORD 1 ; Plit count word
000064 177777 P.AAF: .WORD -1
000066 000000 P.AAH: .WORD 0
000070 000012 P.AAI: .WORD 12
000072 000013 P.AAJ: .WORD 13
000074 000002 P.AAK: .WORD 2
.GLOBL $DPC1, $DPCM, $TPDU2, $TPAI, $DPDU2
000074' ; TWO
U.30= P.AAK
.SBTTL SHOW.CIRCUIT Network Management
001654 .PSECT $CODE$, RO
000000 004167 000000G ; SHOW.CIRCUIT
U.7: JSR R1,$SAVE5 ; 0911
000004 010446 MOV R4,-(SP)
000006 010400 MOV R4,R0 ; 0977
000010 012760 177770 000014 MOV #-10,14(R0)
000016 005000 CLR R0 ; 0978
000020 010401 MOV R4,R1
000022 156100 000010 BISB 10(R1),R0
000026 004767 000000G JSR PC,GTLINE
000032 010005 MOV R0,R5 ; *,LINEB
000034 001002 BNE 1$ ; 0979
000036 000167 000532 JMP 29$
000042 011604 1$: MOV (SP),R4 ; 0985
000044 004767 000000G JSR PC,$NRBEG
000050 011601 MOV (SP),R1 ; 0987
000052 016100 000024 MOV 24(R1),R0
000056 072027 177764 ASH #-14,R0
000062 042700 177760 BIC #177760,R0
000066 005300 DEC R0
000070 006300 ASL R0
000072 066007 000076' ADD P.AAB(R0),PC ; Case dispatch
000076 012702 000016' 2$: MOV #P.AAC,R2 ; *,PLIST 0990
000102 000410 BR 6$ ; 0987
000104 012702 000030' 3$: MOV #P.AAD,R2 ; *,PLIST 0991
000110 000405 BR 6$ ; 0987
000112 012702 000040' 4$: MOV #P.AAE,R2 ; *,PLIST 0992
000116 000402 BR 6$ ; 0987
000120 012702 000064' 5$: MOV #P.AAF,R2 ; *,PLIST 0993
000124 005004 6$: CLR R4 ; I 1000
000126 000167 000422 JMP 27$
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 26
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (8)
000132 010400 7$: MOV R4,R0 ; I,* 1003
000134 006300 ASL R0
000136 060200 ADD R2,R0 ; PLIST,*
000140 011001 MOV (R0),R1 ; *,PARM
000142 001012 BNE 9$ ; 1004
000144 005003 CLR R3 ; VALUE 1009
000146 105715 TSTB (R5) ; LINEB 1010
000150 001001 BNE 8$
000152 005203 INC R3 ; VALUE
000154 105765 000006 8$: TSTB 6(R5) ; *(LINEB) 1011
000160 001574 BEQ 26$
000162 005046 CLR -(SP) ; 1012
000164 110300 MOVB R3,R0 ; VALUE,*
000166 000560 BR 23$
000170 020127 000001 9$: CMP R1,#1 ; PARM,* 1004
000174 001023 BNE 13$
000176 105765 000006 TSTB 6(R5) ; *(LINEB) 1016
000202 001563 BEQ 26$
000204 111500 MOVB (R5),R0 ; LINEB,* 1017
000206 006300 ASL R0
000210 066007 000106' ADD P.AAG(R0),PC ; Case dispatch
000214 010146 10$: MOV R1,-(SP) ; PARM,* 1020
000216 116700 000066' MOVB P.AAH,R0
000222 000542 BR 23$
000224 010146 11$: MOV R1,-(SP) ; PARM,* 1022
000226 116700 000070' MOVB P.AAI,R0
000232 000536 BR 23$
000234 010146 12$: MOV R1,-(SP) ; PARM,* 1024
000236 116700 000072' MOVB P.AAJ,R0
000242 000532 BR 23$
000244 020127 001440 13$: CMP R1,#1440 ; PARM,* 1004
000250 001051 BNE 16$
000252 121527 000010 CMPB (R5),#10 ; LINEB,* 1030
000256 001403 BEQ 14$
000260 121527 000007 CMPB (R5),#7 ; LINEB,* 1031
000264 001132 BNE 26$
000266 116500 000002 14$: MOVB 2(R5),R0 ; *(LINEB),* 1032
000272 020027 000004 CMP R0,#4
000276 002424 BLT 15$
000300 020027 000005 CMP R0,#5
000304 003021 BGT 15$
000306 010146 MOV R1,-(SP) ; PARM,* 1036
000310 012700 000002 MOV #2,R0
000314 004767 000000G JSR PC,$DPCM
000320 016500 000004 MOV 4(R5),R0 ; *(LINEB),* 1037
000324 004767 000000G JSR PC,$TPDU2
000330 012701 000010 MOV #10,R1 ; 1038
000334 060501 ADD R5,R1 ; LINEB,*
000336 116500 000007 MOVB 7(R5),R0 ; *(LINEB),*
000342 004767 000000G JSR PC,$TPAI
000346 000472 BR 24$ ; 1032
000350 010146 15$: MOV R1,-(SP) ; PARM,* 1042
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 27
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (8)
000352 012700 000001 MOV #1,R0
000356 004767 000000G JSR PC,$DPCM
000362 016500 000004 MOV 4(R5),R0 ; *(LINEB),* 1043
000366 004767 000000G JSR PC,$TPDU2
000372 000460 BR 24$ ; 1032
000374 020127 001452 16$: CMP R1,#1452 ; PARM,* 1004
000400 001012 BNE 18$
000402 121527 000010 CMPB (R5),#10 ; LINEB,* 1049
000406 001403 BEQ 17$
000410 121527 000007 CMPB (R5),#7 ; LINEB,* 1050
000414 001056 BNE 26$
000416 010146 17$: MOV R1,-(SP) ; PARM,* 1051
000420 016500 000016 MOV 16(R5),R0 ; *(LINEB),*
000424 000424 BR 21$
000426 020127 001604 18$: CMP R1,#1604 ; PARM,* 1004
000432 001004 BNE 19$
000434 010146 MOV R1,-(SP) ; PARM,* 1055
000436 016500 000020 MOV 20(R5),R0 ; *(LINEB),*
000442 000415 BR 21$
000444 020127 001612 19$: CMP R1,#1612 ; PARM,* 1004
000450 001004 BNE 20$
000452 010146 MOV R1,-(SP) ; PARM,* 1059
000454 016500 000022 MOV 22(R5),R0 ; *(LINEB),*
000460 000406 BR 21$
000462 020127 001613 20$: CMP R1,#1613 ; PARM,* 1004
000466 001006 BNE 22$
000470 010146 MOV R1,-(SP) ; PARM,* 1063
000472 016500 000024 MOV 24(R5),R0 ; *(LINEB),*
000476 004767 000000G 21$: JSR PC,$DPDU2
000502 000414 BR 24$ ; 1062
000504 020127 005050 22$: CMP R1,#5050 ; PARM,* 1004
000510 001013 BNE 25$
000512 032765 002000 000002 BIT #2000,2(R5) ; *,*(LINEB) 1068
000520 001414 BEQ 26$
000522 010146 MOV R1,-(SP) ; PARM,* 1069
000524 116700 000074' MOVB U.30,R0
000530 004767 000000G 23$: JSR PC,$DPC1
000534 005726 24$: TST (SP)+ ; 1068
000536 000405 BR 26$ ; 1004
000540 020127 177777 25$: CMP R1,#-1 ; PARM,*
000544 001002 BNE 26$
000546 004767 175524 JSR PC,U.2 ; 1073
000552 005204 26$: INC R4 ; I 1000
000554 020462 177776 27$: CMP R4,-2(R2) ; I,*(PLIST)
000560 002002 BGE 28$
000562 000167 177344 JMP 7$
000566 011604 28$: MOV (SP),R4 ; 1081
000570 004767 000000G JSR PC,$NREND
000574 005726 29$: TST (SP)+ ; 0911
000576 000207 RTS PC
; Routine Size: 192 words, Routine Base: $CODE$ + 1654
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 28
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (8)
; Maximum stack depth per invocation: 9 words
000076 .PSECT $PLIT$, RO , D
P.AAB: ; CASE Table for SHOW.CIRCUIT+0072 0987
000076 000006 .WORD 6 ; [3$]
000100 000000 .WORD 0 ; [2$]
000102 000014 .WORD 14 ; [4$]
000104 000022 .WORD 22 ; [5$]
P.AAG: ; CASE Table for SHOW.CIRCUIT+0210 1017
000106 000336 .WORD 336 ; [26$]
000110 000020 .WORD 20 ; [12$]
000112 000020 .WORD 20 ; [12$]
000114 000010 .WORD 10 ; [11$]
000116 000010 .WORD 10 ; [11$]
000120 000000 .WORD 0 ; [10$]
000122 000000 .WORD 0 ; [10$]
000124 000000 .WORD 0 ; [10$]
000126 000336 .WORD 336 ; [26$]
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 29
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (9)
; 1083
; 1084 global
; 1085 routine TAKE_CIRCUIT (XPTDB,CCB): MCB_DB_CCB novalue =
; 1086
; 1087 !++
; 1088 ! FUNCTIONAL DESCRIPTION:
; 1089 !
; 1090 ! Processes a "Withdraw Circuit Ownership" function. If the circuit's
; 1091 ! Network Management state is ON, the circuit must be brought down.
; 1092 !
; 1093 ! FORMAL PARAMETERS
; 1094 !
; 1095 ! CCB Function CCB
; 1096 !
; 1097 ! CCB[C_LIN] Transport line index for circuit to
; 1098 ! be taken away.
; 1099 !
; 1100 ! IMPLICIT INPUTS
; 1101 !
; 1102 ! NONE.
; 1103 !
; 1104 ! ROUTINE VALUE:
; 1105 ! COMPLETION CODES:
; 1106 !
; 1107 ! NONE.
; 1108 !
; 1109 ! SIDE EFFECTS:
; 1110 !
; 1111 ! NONE.
; 1112 !
; 1113 !--
; 1114
; 1115 begin
; 1116
; 1117 local LINEb;
; 1118 require 'XPTSYM';
; 1155 require 'MCBCOM';
; 1189
; 1190 LINEb = $TLI_GET_LINE_DB(.CCB[C_LIN]); ! Address line data base entry
; 1191
; 1192 if .OWNED ! Circuit owned:
; 1193 then CKTOFF(.LINEb, .CCB) ! release circuit
; 1194 else SIGNAL_STOP(CE_ERR); ! otherwise bomb
; 1195
; 1196 end; !End of TAKE_CIRCUIT
.SBTTL TAKE.CIRCUIT Network Management
002454 .PSECT $CODE$, RO
000000 005000 TAKE.CIRCUIT::
U.8: CLR R0 ; 1190
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 30
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (9)
000002 156400 000010 BISB 10(R4),R0 ; *(CCB),*
000006 004767 000000G JSR PC,GTLINE
000012 010005 MOV R0,R5 ; *,LINEB
000014 032715 000400 BIT #400,(R5) ; *,LINEB 1192
000020 001403 BEQ 1$
000022 004767 000000G JSR PC,CKTOFF ; 1193
000026 000207 RTS PC ; 1192
000030 012746 177760 1$: MOV #-20,-(SP) ; 1194
000034 012746 000001 MOV #1,-(SP)
000040 004767 000000G JSR PC,$STOP
000044 022626 CMP (SP)+,(SP)+
000046 000207 RTS PC ; 1085
; Routine Size: 20 words, Routine Base: $CODE$ + 2454
; Maximum stack depth per invocation: 3 words
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 31
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (10)
; 1197
; 1198 routine ZERO_CIRCUIT_COUNTERS (XPTDB,CCB): LINKAGE_DB_CCB novalue =
; 1199
; 1200 !++
; 1201 ! FUNCTIONAL DESCRIPTION:
; 1202 ! This routine zeroes counters for the specified circuit
; 1203 !
; 1204 ! FORMAL PARAMETERS:
; 1205 !
; 1206 ! CCB CCB to pass to handler routine
; 1207 !
; 1208 ! IMPLICIT INPUTS:
; 1209 ! CCB Contents
; 1210 !
; 1211 ! IMPLICIT OUTPUTS:
; 1212 ! None
; 1213 !
; 1214 ! ROUTINE VALUE:
; 1215 ! COMPLETION CODES:
; 1216 ! None
; 1217 !
; 1218 ! SIDE EFFECTS:
; 1219 ! None
; 1220 !--
; 1221
; 1222 begin
; 1223 map CCB: ref block field(C_NM_FIELDS);
; 1224 local LINEb;
; 1225 require 'XPTSYM';
; 1262
; 1263 CCB [C_STS] = $NM$ERR_URC; ! Default to "unrecognized component"
; 1264 if (LINEb = $TLI_GET_LINE_DB(.CCB[C_LIN])) eqla 0
; 1265 then return; ! invalid LIX - error
; 1266
; 1267 $NM_TIME(Time_circuit_zeroed);
; 1268 zeroq(Arriving_Packets);
; 1269 zeroq(Departing_Packets);
; 1270 End_Congestion = 0;
; 1271 zeroq(Transit_In);
; 1272 zeroq(Transit_Out);
; 1273 Transit_Congestion = 0;
; 1274 Line_Downs = 0;
; 1275 Init_Fails = 0;
; 1276
; 1277 CCB [C_STS] = NM$SUC;
; 1278 end; ! of ZERO_CIRCUIT_COUNTERS
.SBTTL ZERO.CIRCUIT.COUNTERS Network Management
000000 010546 ; ZERO.CIRCUIT.COUNTERS
U.9: MOV R5,-(SP) ; 1198
000002 012764 177770 000014 MOV #-10,14(R4) ; *,*(CCB) 1263
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 32
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (10)
000010 005000 CLR R0 ; 1264
000012 156400 000010 BISB 10(R4),R0 ; *(CCB),*
000016 004767 000000G JSR PC,GTLINE
000022 010005 MOV R0,R5 ; *,LINEB
000024 001437 BEQ 1$ ; 1265
000026 062700 000052 ADD #52,R0 ; 1267
000032 004767 000000G JSR PC,$ST32
000036 005065 000056 CLR 56(R5) ; *(LINEB) 1268
000042 005065 000060 CLR 60(R5) ; *(LINEB)
000046 005065 000062 CLR 62(R5) ; *(LINEB) 1269
000052 005065 000064 CLR 64(R5) ; *(LINEB)
000056 005065 000066 CLR 66(R5) ; *(LINEB) 1270
000062 005065 000070 CLR 70(R5) ; *(LINEB) 1271
000066 005065 000072 CLR 72(R5) ; *(LINEB)
000072 005065 000074 CLR 74(R5) ; *(LINEB) 1272
000076 005065 000076 CLR 76(R5) ; *(LINEB)
000102 005065 000100 CLR 100(R5) ; *(LINEB) 1273
000106 105065 000102 CLRB 102(R5) ; *(LINEB) 1274
000112 105065 000103 CLRB 103(R5) ; *(LINEB) 1275
000116 012764 000001 000014 MOV #1,14(R4) ; *,*(CCB) 1277
000124 012605 1$: MOV (SP)+,R5 ; 1198
000126 000207 RTS PC
; Routine Size: 44 words, Routine Base: $CODE$ + 2524
; Maximum stack depth per invocation: 2 words
; 1279
; 1280 end
; 1281 eludom ! End of module TLINMI
; OTS external references
.GLOBL $SAVE5, $SAVE2, $CALL, $STOP
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $PLIT$ 44 RO , D , LCL, REL, CON
; $CODE$ 726 RO , I , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; NETPKG:<MCB>XPORTX.L16.15 599 2 0 0
TLINMI 25-Jan-1983 10:02:57 TOPS-20 Bliss-16 2A(530) Page 33
X01160 Network Management 30-Dec-1982 21:15:56 NETPKG:<XPT>TLINMI.BLI.9 (10)
; NETPKG:<MCB>MCBLIB.L16.15 372 34 9 0
; NETPKG:<MCB>NMXLIB.L16.13 200 55 27 0
; NETPKG:<XPT>XPTLIB.L16.3 510 182 35 0
; Size: 726 code + 44 data words
; Run Time: 00:14.6
; Elapsed Time: 00:48.9
; Memory Used: 55 pages
; Compilation Complete