Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/drivers/dcp.lst
There are no other files named dcp.lst in the archive.
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 1
30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (1)
; 0001 module DCP ( ! DDCMP Protocol Processor
; 0002 ident = 'X05180',
; 0003 language (bliss16)
; 0004 ) =
; 0005 begin
; 0006
; 0007 !
; 0008 ! COPYRIGHT (c) 1980, 1981, 1982
; 0009 ! DIGITAL EQUIPMENT CORPORATION
; 0010 ! Maynard, Massachusetts
; 0011 !
; 0012 ! This software is furnished under a license and may be used
; 0013 ! and copied only in accordance with the terms of such license
; 0014 ! and with the inclusion of the above copyright notice. This
; 0015 ! software or any other copies thereof may not be provided or
; 0016 ! otherwise made available to any other person. No title to
; 0017 ! and ownership of the software is hereby transferred.
; 0018 !
; 0019 ! The information in this software is subject to change
; 0020 ! without notice and should not be construed as a commitment
; 0021 ! by DIGITAL EQUIPMENT CORPORATION.
; 0022 !
; 0023 ! DIGITAL assumes no responsibility for the use or reliability
; 0024 ! of its software on equipment which is not supplied by
; 0025 ! DIGITAL.
; 0026 !
; 0027
; 0028 !++
; 0029 !
; 0030 ! FACILITY: MCB DDCMP Protocol Driver
; 0031 !
; 0032 ! ABSTRACT:
; 0033 !
; 0034 ! This module contains the DDCMP protocol routines.
; 0035 !
; 0036 ! ENVIRONMENT: MCB V3.2
; 0037 !
; 0038 ! AUTHOR: Alan D. Peckham CREATION DATE: 1-Jul-81
; 0039 !
; 0040 ! MODIFIED BY:
; 0041 !
; 0042 ! Alan D. Peckham, 1-Jul-81: Version 5
; 0043 ! 01 - Rewritten in BLISS
; 0044 ! 02 - Rewrite driver control code to insure device stop requests
; 0045 ! are performed.
; 0046 ! 03 - Dot bug in CHANGE_PROTOCOL_STATE.
; 0047 ! Wrong event class for maintenance "load me" notification.
; 0048 ! Wrong event types for threshold notifications.
; 0049 ! 04 - Fix to insure that there is only one control CCB to driver
; 0050 ! at any one timer (confuses the KDP driver).
; 0051 ! 05 - The last fix did not catch all cases in SET_DEVICE.
; 0052 ! 06 - Do not set half duplex in maintenance.
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 2
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (1)
; 0053 ! 07 - Fix REP timer bug in DCPXCP.
; 0054 ! 08 - Fix state reporting.
; 0055 ! 09 - Out-of-range acks should not dump a data message.
; 0056 ! 10 - Update to NM V3.0.0 .
; 0057 ! 11 - Remove 'counters zeroed' event in DCPNMX.
; 0058 ! 12 - Fix event number for MOP requested event.
; 0059 ! 13 - Get KDP parameters from PLL.
; 0060 ! 14 - De-commit half-duplex.
; 0061 ! 15 - Do not use select timer when in FDX maintenance mode.
; 0062 ! 16 - Poke KDP DEVTYPE in maintenance messages that need it.
; 0063 ! 17 - Handle change in NMX interface in DCPINI.
; 0064 ! 18 - Modify CTLSTR to return the CIRCUIT COST to XPT in C_PRM1.
; 0065 !--
; 0066 !
; 0067 ! INCLUDE FILES:
; 0068 !
; 0069
; 0070 library 'MCBLIB';
; 0071
; 0072 library 'XPORTX';
; 0073
; 0074 library 'NMXLIB';
; 0075
; 0076 $SHOW (NONE)
; 0077 require 'DLLLIB';
; 0331
; 0332 library 'DCPDAT';
; 0333
; 0334 !
; 0335 ! TABLE OF CONTENTS:
; 0336 !
; 0337
; 0338 linkage
; 0339 DCP_CCB_DB = jsr (register = 4, register = 5) :
; 0340 nopreserve (0, 1, 2, 3, 4),
; 0341 DCP_CCB_DB_STS = jsr (register = 4, register = 5, register = 3) :
; 0342 nopreserve (0, 1, 2, 3, 4),
; 0343 DCP_CCB = jsr (register = 4) :
; 0344 nopreserve (0, 1, 2, 3),
; 0345 DCP_CTR = jsr (register = 0),
; 0346 DCP_DB = jsr (register = 5) :
; 0347 nopreserve (0, 1, 2, 3, 4),
; 0348 DCP_DB_N0 = jsr (register = 5) :
; 0349 preserve (0),
; 0350 DCP_DB_CCB = jsr (register = 5, register = 4) :
; 0351 nopreserve (0, 1, 2, 3),
; 0352 DCP_DB_CCB_N0 = jsr (register = 5, register = 4) :
; 0353 preserve (0) nopreserve (3),
; 0354 DCP_DB_CCBR = jsr (register = 5, register = 4) :
; 0355 nopreserve (0, 1, 2, 3, 4),
; 0356 DCP_DB_CCB_HDR = jsr (register = 5, register = 4; register = 4) :
; 0357 nopreserve (0, 1, 2, 3),
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 3
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (1)
; 0358 DCP_DB_CTR_STS = jsr (register = 5, register = 0, register = 3) :
; 0359 nopreserve (0, 1, 2, 3),
; 0360 DCP_DB_STS = jsr (register = 5, register = 3) :
; 0361 nopreserve (0, 1, 2, 3);
; 0362
; 0363 forward routine
; 0364 BUILD_CONTROL_MESSAGE : DCP_DB,
; 0365 BUILD_DATA_MESSAGE : DCP_DB_CCBR,
; 0366 BUILD_MAINTENANCE_MESSAGE : DCP_DB_CCBR,
; 0367 BUMP_8_BIT_COUNTER : DCP_CTR novalue,
; 0368 CCPGET : MCB_DB_CCB novalue,
; 0369 CCPSET : MCB_DB_CCB novalue,
; 0370 CCPSTP : MCB_DB_CCB novalue,
; 0371 CCPSTR : MCB_DB_CCB novalue,
; 0372 CHANGE_PROTOCOL_STATE : DCP_DB novalue,
; 0373 CKACK : DCP_DB,
; 0374 CKREP : DCP_DB novalue,
; 0375 CTLSTP : MCB_DB_CCB novalue,
; 0376 CTLSTR : MCB_DB_CCB novalue,
; 0377 DCPCCP : MCB_DB_CCB_MOD novalue,
; 0378 DCPCTL : MCB_DB_CCB_MOD novalue,
; 0379 DCPKCP : MCB_DB_CCB novalue,
; 0380 DCPRCE : MCB_DB_CCB novalue,
; 0381 DCPRCP : MCB_DB_CCB novalue,
; 0382 DCPTIM : MCB_DB_CCB_MOD novalue,
; 0383 DCPXCP : MCB_DB_CCB novalue,
; 0384 DCPXME : MCB_DB_CCB_MOD novalue,
; 0385 ENTER_MAINTENANCE : MCB_DB_CCB novalue,
; 0386 HEADER_CCB : DCP_DB_CCB_HDR,
; 0387 HEADER_FORMAT_ERROR : DCP_DB novalue,
; 0388 IGNORE_MESSAGE : DCP_DB novalue,
; 0389 INITIALIZE_LINK : MCB_DB_CCB novalue,
; 0390 MESSAGE_LENGTH : DCP_CCB,
; 0391 PROCESS_ACK_MESSAGE : DCP_DB novalue,
; 0392 PROCESS_CONTROL_MESSAGE : DCP_DB_CCBR novalue,
; 0393 PROCESS_DATA_MESSAGE : DCP_DB_CCBR novalue,
; 0394 PROCESS_MAINTENANCE_MESSAGE : DCP_DB_CCBR novalue,
; 0395 PROCESS_NAK_MESSAGE : DCP_DB novalue,
; 0396 PROCESS_REP_MESSAGE : DCP_DB novalue,
; 0397 PROCESS_SELECT_FLAG : DCP_DB novalue,
; 0398 PROCESS_STACK_MESSAGE : DCP_DB novalue,
; 0399 PROCESS_START_MESSAGE : DCP_DB novalue,
; 0400 RECORD_DRIVER_ERROR : DCP_DB_CCB novalue,
; 0401 RECORD_NAK_REASON : DCP_DB novalue,
; 0402 RESYNCHRONIZE : DCP_DB novalue,
; 0403 RETRANSMIT_UNACKED_MESSAGES : DCP_DB novalue,
; 0404 RETURN_ACKED_MESSAGES : DCP_DB novalue,
; 0405 SCHEDULE_PERSISTENT_AST : DCP_CCB_DB novalue,
; 0406 SCHEDULE_RECEIVE : DCP_CCB_DB novalue,
; 0407 SCHEDULE_STATE_AST : DCP_CCB_DB novalue,
; 0408 SCHEDULE_TRANSIENT_AST : DCP_CCB_DB novalue,
; 0409 SCHEDULE_TRANSMIT : DCP_CCB_DB_STS novalue,
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 4
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (1)
; 0410 SEND_DATA : DCP_DB novalue,
; 0411 SEND_PERSISTENT_ERROR : DCP_DB_STS novalue,
; 0412 SEND_STATE : DCP_DB novalue,
; 0413 SEND_TRANSIENT_ERROR : DCP_DB_STS novalue,
; 0414 SET_DEVICE : DCP_DB novalue,
; 0415 SET_LINK : DCP_DB novalue,
; 0416 STARCE : DCP_DB_CCBR novalue,
; 0417 START_DEVICE : DCP_CCB_DB novalue,
; 0418 STOP_DEVICE : DCP_CCB_DB novalue,
; 0419 STOP_LINK : MCB_DB_CCB novalue,
; 0420 SYNCHRONIZE : DCP_DB_CCB_N0 novalue,
; 0421 TERMINATE_SELECTION_INTERVAL : DCP_DB novalue,
; 0422 TEST_RECEIVE_THRESHOLD : DCP_DB_N0 novalue,
; 0423 TEST_THRESHOLD : DCP_DB_CTR_STS novalue,
; 0424 TEST_TRANSMIT_THRESHOLD : DCP_DB_N0 novalue,
; 0425 TEST_SELECT_THRESHOLD : DCP_DB_N0 novalue,
; 0426 TIMCCB : MCB_DB_CCB novalue,
; 0427 TIMLTM : MCB_DB novalue,
; 0428 TIMPWF : MCB_DB novalue,
; 0429 TRANSMIT : MCB_DB_CCB novalue;
; 0430
; 0431 global bind routine
; 0432 TSTTH = TEST_TRANSMIT_THRESHOLD : DCP_DB novalue;
; 0433
; 0434 !
; 0435 ! MACROS:
; 0436 !
; 0437
; 0438 macro
; M 0439 $SIGNED (FLD0, FLD1, FLD2, FLD3) =
; M 0440 %if %null (FLD1)
; M 0441 %then
; M 0442 %fieldexpand (FLD0, 0),
; M 0443 %fieldexpand (FLD0, 1),
; M 0444 %fieldexpand (FLD0, 2)
; M 0445 %else
; M 0446 FLD0, FLD1, FLD2
; 0447 %fi, 1 %;
; 0448
; 0449 macro
; M 0450 FLUSH_QUEUE (QUEUE, RETURN_CALL) =
; M 0451 while 1 eql 1 do
; M 0452 begin
; M 0453
; M 0454 local
; M 0455 _DCP_CCB : ref block field (C_FIELDS);
; M 0456
; M 0457 if not CMQRM$ (QUEUE, _DCP_CCB) then exitloop;
; M 0458
; M 0459 RETURN_CALL (._DCP_CCB %if not %null (%remaining) %then , %remaining %fi);
; 0460 end %;
; 0461
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 5
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (1)
; 0462 !
; 0463 ! EQUATED SYMBOLS:
; 0464 !
; 0465
; 0466 literal
; 0467 TRUE = 1 EQL 1,
; 0468 FALSE = 1 EQL 0,
; 0469 NO_OPERATION = 0;
; 0470
; 0471 literal
; 0472 LCL = 0,
; 0473 RMT = 1;
; 0474
; 0475 macro
; 0476 C_HANDLE = %fieldexpand (C_LIN, 0), 0, %bpval, 0 %;
; 0477
; 0478 global literal
; 0479 %name ('D.LEN') = D_LENGTH*%upval;
; 0480
; 0481 !
; 0482 ! OWN STORAGE:
; 0483 !
; 0484
; 0485 external routine
; 0486 $DSPCR : novalue;
; 0487
; P 0488 $MCB_PROCESS (
; P 0489 NAME = DCP,
; P 0490 DLC_DISPATCH = TABLE$ ($DSPCR, FC_CCP,
; P 0491 (FC_CTL, DCPCTL),
; P 0492 (FC_XME, DCPXME),
; P 0493 (FC_RCE, DCPRCE),
; P 0494 (FC_TIM, DCPTIM),
; P 0495 (FC_XCP, DCPXCP),
; P 0496 (FC_RCP, DCPRCP),
; P 0497 (FC_KCP, DCPKCP),
; 0498 (FC_CCP, DCPCCP)));
; 0499
; 0500 !
; 0501 ! EXTERNAL REFERENCES:
; 0502 !
; 0503
; 0504 linkage
; 0505 DDM_CCB = jsr (register = 4) : nopreserve (4);
; 0506
; 0507 external routine
; 0508 DCPNM : DCP_DB_CCBR novalue,
; 0509 TIMPIN : MCB_DB novalue;
; 0510
; 0511 external
; 0512 MCB$GAW_PROCESS_DATA_BASE : vector [2],
; 0513 MCB$GW_PROCESS_HANDLE;
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 6
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (1)
; 0514
; 0515 bind
; 0516 DB_BIAS = MCB$GAW_PROCESS_DATA_BASE [0];
; 0517
; 0518 macro
; M 0519 GET_DCP_DATA_BASE (NAME) =
; M 0520 %if %declared (NAME)
; M 0521 %then map NAME : ref
; M 0522 %else bind NAME = .MCB$GAW_PROCESS_DATA_BASE [1] :
; 0523 %fi block field (D_FIELDS); %;
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 7
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (2)
; 0524 routine BUILD_CONTROL_MESSAGE
; 0525
; 0526 !++
; 0527 ! FUNCTIONAL DESCRIPTION:
; 0528 !
; 0529 !
; 0530 ! FORMAL PARAMETERS:
; 0531 !
; 0532 (DB : ref block field (D_FIELDS))
; 0533 !
; 0534 ! IMPLICIT INPUTS:
; 0535 !
; 0536 ! IMPLICIT OUTPUTS:
; 0537 ! None
; 0538 !
; 0539 ! ROUTINE VALUE:
; 0540 !
; 0541 : DCP_DB =
; 0542 !
; 0543 ! SIDE EFFECTS:
; 0544 ! None
; 0545 !--
; 0546
; 0547 begin
; 0548
; 0549 local
; 0550 CCB : ref block field (C_FIELDS),
; 0551 PTR;
; 0552
; 0553 if (PTR = HEADER_CCB (DB [D_TIM], 0; CCB)) eqla 0 then return .PTR;
; 0554
; 0555 ch$wchar_a (CM_ENQ, PTR);
; 0556
; 0557 selectone TRUE of
; 0558 set
; 0559 [.DB [SS_SEND_STACK]] :
; 0560 begin
; 0561 DB [SS_SEND_STACK] = FALSE;
; 0562 DB [SS_START_REP_TIMER] = TRUE;
; 0563 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
; 0564 ch$wchar_a (MT_STK, PTR);
; 0565 ch$wchar_a (0, PTR);
; 0566 ch$wchar_a (0, PTR);
; 0567 ch$wchar_a (0, PTR);
; 0568 ch$wchar_a (1, PTR);
; 0569
; 0570 if .DB [L_PROTOCOL] eql DP_DMC then SYNCHRONIZE (DB [D_TIM], .CCB);
; 0571
; 0572 end;
; 0573 [.DB [SS_SEND_START]] :
; 0574 begin
; 0575 DB [SS_SEND_START] = FALSE;
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 8
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (2)
; 0576 DB [SS_START_REP_TIMER] = TRUE;
; 0577 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
; 0578 ch$wchar_a (MT_STR, PTR);
; 0579 ch$wchar_a (0, PTR);
; 0580 ch$wchar_a (0, PTR);
; 0581 ch$wchar_a (0, PTR);
; 0582 ch$wchar_a (1, PTR);
; 0583
; 0584 if .DB [L_PROTOCOL] eql DP_DMC then SYNCHRONIZE (DB [D_TIM], .CCB);
; 0585
; 0586 end;
; 0587 [.DB [SS_SEND_NAK]] :
; 0588 begin
; 0589 DB [SS_SEND_NAK] = FALSE;
; 0590 ch$wchar_a (MT_NAK, PTR);
; 0591 ch$wchar_a (.DB [S_PENDING_NAK_REASON], PTR);
; 0592 ch$wchar_a (.DB [S_R], PTR);
; 0593 ch$wchar_a (0, PTR);
; 0594 ch$wchar_a (1, PTR);
; 0595 SYNCHRONIZE (DB [D_TIM], .CCB);
; 0596 end;
; 0597 [.DB [SS_SEND_REP]] :
; 0598 begin
; 0599 DB [SS_SEND_REP] = FALSE;
; 0600 ch$wchar_a (MT_REP, PTR);
; 0601 ch$wchar_a (0, PTR);
; 0602 ch$wchar_a (0, PTR);
; 0603 ch$wchar_a (.DB [S_N], PTR);
; 0604 ch$wchar_a (1, PTR);
; 0605 SYNCHRONIZE (DB [D_TIM], .CCB);
; 0606 end;
; 0607 [.DB [SS_SEND_ACK]] :
; 0608 begin
; 0609 DB [SS_SEND_ACK] = FALSE;
; 0610 ch$wchar_a (MT_ACK, PTR);
; 0611 ch$wchar_a (0, PTR);
; 0612 ch$wchar_a (.DB [S_R], PTR);
; 0613 ch$wchar_a (0, PTR);
; 0614 ch$wchar_a (1, PTR);
; 0615
; 0616 if .DB [L_PROTOCOL] eql DP_DMC then SYNCHRONIZE (DB [D_TIM], .CCB);
; 0617
; 0618 end;
; 0619 tes;
; 0620
; 0621 if .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0
; 0622 then
; 0623 CCB [C_PRM4] = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)];
; 0624
; 0625 $MCB_QUEUE_CCB (DB [L_PRE_TRANSMIT], .CCB);
; 0626 DB [S_MOTD] = .DB [S_MOTD] + 1;
; 0627 .PTR
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 9
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (2)
; 0628 end; !of routine BUILD_CONTROL_MESSAGE
.TITLE DCP
.IDENT /X05180/
000000 .PSECT ......, D
000000 014610 HEADER: .RAD50 /DCP/
000002 000403 .WORD 403
000004 000000 .WORD 0
000006 000000 .WORD 0
000010 000000 .WORD 0
000012 000000G .WORD .DSPCR
000014 000000' .WORD P.AAA
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 000000V .WORD DCPXME
000004 000000V .WORD DCPRCE
000006 000000G .WORD $DSPCR
000010 000000V .WORD DCPCTL
000012 000000V .WORD DCPTIM
000014 000000V .WORD DCPXCP
000016 000000V .WORD DCPRCP
000020 000000V .WORD DCPKCP
000022 000000V .WORD DCPCCP
.GLOBL $DSPCR, .DSPCR, MCB$V0, MCB$V1
.GLOBL DCPNM, TIMPIN, .CRDAT, .CRPIX
.GLOBL $CMQIN
000164 D.LEN== 164
.SBTTL BUILD.CONTROL.MESSAGE
000000 .PSECT $CODE$, RO
000000 005004 BUILD.CONTROL.MESSAGE:
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 10
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (2)
CLR R4 ; 0553
000002 004767 000000V JSR PC,HEADER.CCB
000006 005700 TST R0 ; PTR
000010 001561 BEQ 9$
000012 112720 000005 MOVB #5,(R0)+ ; *,PTR 0555
000016 032765 000400 000002 BIT #400,2(R5) ; *,*(DB) 0557
000024 001423 BEQ 1$
000026 042765 000400 000002 BIC #400,2(R5) ; *,*(DB) 0561
000034 052715 001000 BIS #1000,(R5) ; *,DB 0562
000040 004767 000000V JSR PC,TEST.TRANSMIT.THRESHOLD ; 0563
000044 112720 000007 MOVB #7,(R0)+ ; *,PTR 0564
000050 105020 CLRB (R0)+ ; PTR 0565
000052 105020 CLRB (R0)+ ; PTR 0566
000054 105020 CLRB (R0)+ ; PTR 0567
000056 112720 000001 MOVB #1,(R0)+ ; *,PTR 0568
000062 126527 000010 000004 CMPB 10(R5),#4 ; *(DB),* 0570
000070 001115 BNE 7$
000072 000512 BR 6$
000074 032765 001000 000002 1$: BIT #1000,2(R5) ; *,*(DB) 0557
000102 001423 BEQ 2$
000104 042765 001000 000002 BIC #1000,2(R5) ; *,*(DB) 0575
000112 052715 001000 BIS #1000,(R5) ; *,DB 0576
000116 004767 000000V JSR PC,TEST.TRANSMIT.THRESHOLD ; 0577
000122 112720 000006 MOVB #6,(R0)+ ; *,PTR 0578
000126 105020 CLRB (R0)+ ; PTR 0579
000130 105020 CLRB (R0)+ ; PTR 0580
000132 105020 CLRB (R0)+ ; PTR 0581
000134 112720 000001 MOVB #1,(R0)+ ; *,PTR 0582
000140 126527 000010 000004 CMPB 10(R5),#4 ; *(DB),* 0584
000146 001066 BNE 7$
000150 000463 BR 6$
000152 032765 002000 000002 2$: BIT #2000,2(R5) ; *,*(DB) 0557
000160 001413 BEQ 3$
000162 042765 002000 000002 BIC #2000,2(R5) ; *,*(DB) 0589
000170 112720 000002 MOVB #2,(R0)+ ; *,PTR 0590
000174 116520 000077 MOVB 77(R5),(R0)+ ; *(DB),PTR 0591
000200 116520 000070 MOVB 70(R5),(R0)+ ; *(DB),PTR 0592
000204 105010 CLRB (R0) ; PTR 0593
000206 000415 BR 4$
000210 032765 004000 000002 3$: BIT #4000,2(R5) ; *,*(DB) 0557
000216 001415 BEQ 5$
000220 042765 004000 000002 BIC #4000,2(R5) ; *,*(DB) 0599
000226 112720 000003 MOVB #3,(R0)+ ; *,PTR 0600
000232 105020 CLRB (R0)+ ; PTR 0601
000234 105020 CLRB (R0)+ ; PTR 0602
000236 116510 000073 MOVB 73(R5),(R0) ; *(DB),PTR 0603
000242 005200 4$: INC R0 ; PTR
000244 112720 000001 MOVB #1,(R0)+ ; *,PTR 0604
000250 000423 BR 6$ ; 0605
000252 032765 010000 000002 5$: BIT #10000,2(R5) ; *,*(DB) 0557
000260 001421 BEQ 7$
000262 042765 010000 000002 BIC #10000,2(R5) ; *,*(DB) 0609
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 11
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (2)
000270 112720 000001 MOVB #1,(R0)+ ; *,PTR 0610
000274 105020 CLRB (R0)+ ; PTR 0611
000276 116520 000070 MOVB 70(R5),(R0)+ ; *(DB),PTR 0612
000302 105020 CLRB (R0)+ ; PTR 0613
000304 112720 000001 MOVB #1,(R0)+ ; *,PTR 0614
000310 126527 000010 000004 CMPB 10(R5),#4 ; *(DB),* 0616
000316 001002 BNE 7$
000320 004767 000000V 6$: JSR PC,SYNCHRONIZE
000324 012703 000150 7$: MOV #150,R3 ; 0621
000330 060503 ADD R5,R3 ; DB,*
000332 005713 TST (R3)
000334 001403 BEQ 8$
000336 016564 000152 000032 MOV 152(R5),32(R4) ; *(DB),*(CCB) 0623
000344 004767 000000G 8$: JSR PC,$CMQIN ; 0625
000350 105265 000076 INCB 76(R5) ; *(DB) 0626
000354 000207 9$: RTS PC ; 0524
; Routine Size: 119 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 12
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (3)
; 0629 routine BUILD_DATA_MESSAGE
; 0630
; 0631 !++
; 0632 ! FUNCTIONAL DESCRIPTION:
; 0633 !
; 0634 !
; 0635 ! FORMAL PARAMETERS:
; 0636 !
; 0637 (DB : ref block field (D_FIELDS),
; 0638 DCCB : ref block field (C_FIELDS))
; 0639 !
; 0640 ! IMPLICIT INPUTS:
; 0641 !
; 0642 ! IMPLICIT OUTPUTS:
; 0643 ! None
; 0644 !
; 0645 ! ROUTINE VALUE:
; 0646 !
; 0647 : DCP_DB_CCBR =
; 0648 !
; 0649 ! SIDE EFFECTS:
; 0650 ! None
; 0651 !--
; 0652
; 0653 begin
; 0654
; 0655 local
; 0656 CCB : ref block field (C_FIELDS),
; 0657 CNT,
; 0658 PTR;
; 0659
; 0660 if (PTR = HEADER_CCB (DB [D_TIM], .DCCB; CCB)) eqla 0 then return .PTR;
; 0661
; 0662 DB [SS_SEND_ACK] = FALSE;
; 0663 DB [L_MESSAGES_AT_DRIVER] = .DB [L_MESSAGES_AT_DRIVER] + 1;
; 0664 CNT = MESSAGE_LENGTH (.CCB);
; 0665
; 0666 if .DB [S_N] eqlu .DB [S_TM1]
; 0667 then
; 0668 begin
; 0669 DB [S_N] = .DB [S_N] + 1;
; 0670 COUNTER_ADD (DB, S_BYTES_TRANSMITTED, .CNT);
; 0671 COUNTER_INCREMENT (DB, S_DATA_BLOCKS_TRANSMITTED);
; 0672 end;
; 0673
; 0674 DB [S_TM1] = .DB [S_TM1] + 1;
; 0675 ch$wchar_a (CM_SOH, PTR);
; 0676 ch$wchar_a (.CNT <0, 8>, PTR);
; 0677 ch$wchar_a (.CNT <8, 8>, PTR);
; 0678 ch$wchar_a (.DB [S_R], PTR);
; 0679 ch$wchar_a (.DB [S_TM1], PTR);
; 0680 ch$wchar_a (1, PTR);
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 13
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (3)
; 0681
; 0682 if .DB [L_PROTOCOL] eql DP_DMC then SYNCHRONIZE (DB [D_TIM], .CCB);
; 0683
; 0684 if .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0
; 0685 then
; 0686 CCB [C_PRM4] = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)];
; 0687
; 0688 $MCB_QUEUE_CCB (DB [L_PRE_TRANSMIT], .CCB);
; 0689 DB [S_MOTD] = .DB [S_MOTD] + 1;
; 0690 .PTR
; 0691 end; !of routine BUILD_DATA_MESSAGE
.GLOBL $AC32, $IC32
.SBTTL BUILD.DATA.MESSAGE
000000 010546 BUILD.DATA.MESSAGE:
MOV R5,-(SP) ; 0629
000002 024646 CMP -(SP),-(SP)
000004 010566 000002 MOV R5,2(SP)
000010 004767 000000V JSR PC,HEADER.CCB ; 0660
000014 010016 MOV R0,(SP) ; *,PTR
000016 001532 BEQ 4$
000020 016600 000002 MOV 2(SP),R0 ; 0662
000024 042760 010000 000002 BIC #10000,2(R0)
000032 010001 MOV R0,R1 ; 0663
000034 105261 000146 INCB 146(R1)
000040 004767 000000V JSR PC,MESSAGE.LENGTH ; 0664
000044 010001 MOV R0,R1 ; *,CNT
000046 012700 000070 MOV #70,R0 ; 0666
000052 066600 000002 ADD 2(SP),R0
000056 010002 MOV R0,R2
000060 016600 000002 MOV 2(SP),R0
000064 126062 000073 000001 CMPB 73(R0),1(R2)
000072 001020 BNE 1$
000074 010003 MOV R0,R3 ; 0669
000076 105263 000073 INCB 73(R3)
000102 010005 MOV R0,R5 ; 0670
000104 062705 000024 ADD #24,R5
000110 010500 MOV R5,R0
000112 004767 000000G JSR PC,$AC32
000116 016605 000002 MOV 2(SP),R5 ; 0671
000122 062705 000034 ADD #34,R5
000126 010500 MOV R5,R0
000130 004767 000000G JSR PC,$IC32
000134 105262 000001 1$: INCB 1(R2) ; 0674
000140 112776 000201 000000 MOVB #201,@0(SP) ; *,PTR 0675
000146 005216 INC (SP) ; PTR
000150 110176 000000 MOVB R1,@0(SP) ; CNT,PTR 0676
000154 005216 INC (SP) ; PTR
000156 010100 MOV R1,R0 ; CNT,* 0677
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 14
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (3)
000160 000300 SWAB R0
000162 110076 000000 MOVB R0,@0(SP) ; *,PTR
000166 005216 INC (SP) ; PTR
000170 111276 000000 MOVB (R2),@0(SP) ; *,PTR 0678
000174 005216 INC (SP) ; PTR
000176 116276 000001 000000 MOVB 1(R2),@0(SP) ; *,PTR 0679
000204 005216 INC (SP) ; PTR
000206 112776 000001 000000 MOVB #1,@0(SP) ; *,PTR 0680
000214 005216 INC (SP) ; PTR
000216 016600 000002 MOV 2(SP),R0 ; 0682
000222 126027 000010 000004 CMPB 10(R0),#4
000230 001003 BNE 2$
000232 010005 MOV R0,R5
000234 004767 000000V JSR PC,SYNCHRONIZE
000240 012700 000150 2$: MOV #150,R0 ; 0684
000244 066600 000002 ADD 2(SP),R0
000250 010003 MOV R0,R3
000252 005713 TST (R3)
000254 001405 BEQ 3$
000256 016600 000002 MOV 2(SP),R0 ; 0686
000262 016064 000152 000032 MOV 152(R0),32(R4) ; *,*(CCB)
000270 004767 000000G 3$: JSR PC,$CMQIN ; 0688
000274 016601 000002 MOV 2(SP),R1 ; 0689
000300 105261 000076 INCB 76(R1)
000304 012600 4$: MOV (SP)+,R0 ; PTR,* 0629
000306 005726 TST (SP)+
000310 012605 MOV (SP)+,R5
000312 000207 RTS PC
; Routine Size: 102 words, Routine Base: $CODE$ + 0356
; Maximum stack depth per invocation: 4 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 15
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (4)
; 0692 routine BUILD_MAINTENANCE_MESSAGE
; 0693
; 0694 !++
; 0695 ! FUNCTIONAL DESCRIPTION:
; 0696 !
; 0697 !
; 0698 ! FORMAL PARAMETERS:
; 0699 !
; 0700 (DB : ref block field (D_FIELDS),
; 0701 DCCB : ref block field (C_FIELDS))
; 0702 !
; 0703 ! IMPLICIT INPUTS:
; 0704 !
; 0705 ! IMPLICIT OUTPUTS:
; 0706 ! None
; 0707 !
; 0708 ! ROUTINE VALUE:
; 0709 !
; 0710 : DCP_DB_CCBR =
; 0711 !
; 0712 ! SIDE EFFECTS:
; 0713 ! None
; 0714 !--
; 0715
; 0716 begin
; 0717
; 0718 local
; 0719 CCB : ref block field (C_FIELDS),
; 0720 CNT,
; 0721 PTR;
; 0722
; 0723 if (PTR = HEADER_CCB (DB [D_TIM], .DCCB; CCB)) eqla 0 then return .PTR;
; 0724
; 0725 DB [SS_SEND_SELECT] = TRUE;
; 0726 DB [L_MESSAGES_AT_DRIVER] = .DB [L_MESSAGES_AT_DRIVER] + 1;
; 0727 CNT = MESSAGE_LENGTH (.CCB);
; 0728 ch$wchar_a (CM_DLE, PTR);
; 0729 ch$wchar_a (.CNT <0, 8>, PTR);
; 0730 ch$wchar_a (.CNT <8, 8>, PTR);
; 0731 ch$wchar_a (0, PTR);
; 0732 ch$wchar_a (0, PTR);
; 0733 ch$wchar_a (1, PTR);
; 0734 SYNCHRONIZE (DB [D_TIM], .CCB);
; 0735
; 0736 if .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0
; 0737 then
; 0738 CCB [C_PRM4] = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)];
; 0739
; 0740 $MCB_QUEUE_CCB (DB [L_PRE_TRANSMIT], .CCB);
; 0741 DB [S_MOTD] = .DB [S_MOTD] + 1;
; 0742 .PTR
; 0743 end; !of routine BUILD_MAINTENANCE_MESSAGE
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 16
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (4)
.SBTTL BUILD.MAINTENANCE.MESSAGE
000000 005746 BUILD.MAINTENANCE.MESSAGE:
TST -(SP) ; 0692
000002 004767 000000V JSR PC,HEADER.CCB ; 0723
000006 010016 MOV R0,(SP) ; *,PTR
000010 001453 BEQ 2$
000012 052765 020000 000002 BIS #20000,2(R5) ; *,*(DB) 0725
000020 105265 000146 INCB 146(R5) ; *(DB) 0726
000024 004767 000000V JSR PC,MESSAGE.LENGTH ; 0727
000030 112776 000220 000000 MOVB #220,@0(SP) ; *,PTR 0728
000036 005216 INC (SP) ; PTR
000040 110076 000000 MOVB R0,@0(SP) ; CNT,PTR 0729
000044 005216 INC (SP) ; PTR
000046 010001 MOV R0,R1 ; CNT,* 0730
000050 000301 SWAB R1
000052 110176 000000 MOVB R1,@0(SP) ; *,PTR
000056 005216 INC (SP) ; PTR
000060 105076 000000 CLRB @0(SP) ; PTR 0731
000064 005216 INC (SP) ; PTR
000066 105076 000000 CLRB @0(SP) ; PTR 0732
000072 005216 INC (SP) ; PTR
000074 112776 000001 000000 MOVB #1,@0(SP) ; *,PTR 0733
000102 005216 INC (SP) ; PTR
000104 004767 000000V JSR PC,SYNCHRONIZE ; 0734
000110 012703 000150 MOV #150,R3 ; 0736
000114 060503 ADD R5,R3 ; DB,*
000116 005713 TST (R3)
000120 001403 BEQ 1$
000122 016564 000152 000032 MOV 152(R5),32(R4) ; *(DB),*(CCB) 0738
000130 004767 000000G 1$: JSR PC,$CMQIN ; 0740
000134 105265 000076 INCB 76(R5) ; *(DB) 0741
000140 012600 2$: MOV (SP)+,R0 ; PTR,* 0692
000142 000207 RTS PC
; Routine Size: 50 words, Routine Base: $CODE$ + 0672
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 17
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (5)
; 0744 routine BUMP_8_BIT_COUNTER
; 0745
; 0746 !++
; 0747 ! FUNCTIONAL DESCRIPTION:
; 0748 !
; 0749 !
; 0750 ! FORMAL PARAMETERS:
; 0751 !
; 0752 (CTR : ref block)
; 0753 !
; 0754 ! IMPLICIT INPUTS:
; 0755 !
; 0756 ! IMPLICIT OUTPUTS:
; 0757 ! None
; 0758 !
; 0759 ! ROUTINE VALUE:
; 0760 !
; 0761 : DCP_CTR novalue =
; 0762 !
; 0763 ! SIDE EFFECTS:
; 0764 ! None
; 0765 !--
; 0766
; 0767 begin
; 0768 CTR [0, 0, 8, 0] = .CTR [0, 0, 8, 0] + 1;
; 0769
; 0770 if .CTR [0, 0, 8, 0] eql 0
; 0771 then
; 0772 CTR [0, 0, 8, 0] = .CTR [0, 0, 8, 0] - 1;
; 0773
; 0774 end; !of routine BUMP_8_BIT_COUNTER
.SBTTL BUMP.8.BIT.COUNTER
000000 105210 BUMP.8.BIT.COUNTER:
INCB (R0) ; CTR 0768
000002 001001 BNE 1$ ; 0770
000004 105310 DECB (R0) ; CTR 0772
000006 000207 1$: RTS PC ; 0744
; Routine Size: 4 words, Routine Base: $CODE$ + 1036
; Maximum stack depth per invocation: 0 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 18
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (6)
; 0775 routine CCPGET
; 0776
; 0777 !++
; 0778 ! FUNCTIONAL DESCRIPTION:
; 0779 !
; 0780 !
; 0781 ! FORMAL PARAMETERS:
; 0782 !
; 0783 (DB : ref block field (D_FIELDS),
; 0784 CCB : ref block field (C_FIELDS))
; 0785 !
; 0786 ! IMPLICIT INPUTS:
; 0787 !
; 0788 ! IMPLICIT OUTPUTS:
; 0789 ! None
; 0790 !
; 0791 ! ROUTINE VALUE:
; 0792 !
; 0793 : MCB_DB_CCB novalue =
; 0794 !
; 0795 ! SIDE EFFECTS:
; 0796 ! None
; 0797 !--
; 0798
; 0799 begin
; 0800 DB [K_REGISTER] = .CCB [C_PRM1];
; 0801 DB [D_REGISTER] = .CCB [C_PRM2];
; 0802 DB [K_VECTOR] = .CCB [C_PRM3];
; 0803 DB [K_PRIORITY] = .CCB [C_PRM4];
; 0804 $MCB_RETURN_CCB (.CCB);
; 0805 end; !of routine CCPGET
.GLOBL $CCBRT
.SBTTL CCPGET
000000 016465 000024 000102 CCPGET: MOV 24(R4),102(R5) ; *(CCB),*(DB) 0800
000006 016465 000026 000106 MOV 26(R4),106(R5) ; *(CCB),*(DB) 0801
000014 016465 000030 000104 MOV 30(R4),104(R5) ; *(CCB),*(DB) 0802
000022 116465 000032 000101 MOVB 32(R4),101(R5) ; *(CCB),*(DB) 0803
000030 004767 000000G JSR PC,$CCBRT ; 0804
000034 000207 RTS PC ; 0775
; Routine Size: 15 words, Routine Base: $CODE$ + 1046
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 19
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (7)
; 0806 routine CCPSET
; 0807
; 0808 !++
; 0809 ! FUNCTIONAL DESCRIPTION:
; 0810 !
; 0811 !
; 0812 ! FORMAL PARAMETERS:
; 0813 !
; 0814 (DB : ref block field (D_FIELDS),
; 0815 CCB : ref block field (C_FIELDS))
; 0816 !
; 0817 ! IMPLICIT INPUTS:
; 0818 !
; 0819 ! IMPLICIT OUTPUTS:
; 0820 ! None
; 0821 !
; 0822 ! ROUTINE VALUE:
; 0823 !
; 0824 : MCB_DB_CCB novalue =
; 0825 !
; 0826 ! SIDE EFFECTS:
; 0827 ! None
; 0828 !--
; 0829
; 0830 begin
; 0831
; 0832 external routine
; 0833 $DDSTR : DDM_CCB novalue;
; 0834
; 0835 $DDSTR (.CCB);
; 0836 end; !of routine CCPSET
.GLOBL $DDSTR
.SBTTL CCPSET
000000 004767 000000G CCPSET: JSR PC,$DDSTR ; 0835
000004 000207 RTS PC ; 0806
; Routine Size: 3 words, Routine Base: $CODE$ + 1104
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 20
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (8)
; 0837 routine CCPSTP
; 0838
; 0839 !++
; 0840 ! FUNCTIONAL DESCRIPTION:
; 0841 !
; 0842 !
; 0843 ! FORMAL PARAMETERS:
; 0844 !
; 0845 (DB : ref block field (D_FIELDS),
; 0846 CCB : ref block field (C_FIELDS))
; 0847 !
; 0848 ! IMPLICIT INPUTS:
; 0849 !
; 0850 ! IMPLICIT OUTPUTS:
; 0851 ! None
; 0852 !
; 0853 ! ROUTINE VALUE:
; 0854 !
; 0855 : MCB_DB_CCB novalue =
; 0856 !
; 0857 ! SIDE EFFECTS:
; 0858 ! None
; 0859 !--
; 0860
; 0861 begin
; 0862 $MCB_RETURN_CCB (.CCB);
; 0863 DB [SS_DEVICE_BEING_SET] = FALSE;
; P 0864 FLUSH_QUEUE (DB [S_WAITING_FOR_ACK],
; 0865 %quote SCHEDULE_TRANSMIT, DB [D_TIM], DLL$_ABORTED);
; P 0866 FLUSH_QUEUE (DB [S_WAITING_FOR_TRANSMIT],
; 0867 %quote SCHEDULE_TRANSMIT, DB [D_TIM], DLL$_ABORTED);
; 0868 SET_DEVICE (DB [D_TIM]);
; 0869 end; !of routine CCPSTP
.GLOBL $CMQRM
.SBTTL CCPSTP
000000 005746 CCPSTP: TST -(SP) ; 0837
000002 004767 000000G JSR PC,$CCBRT ; 0862
000006 042765 004000 000004 BIC #4000,4(R5) ; *,*(DB) 0863
000014 010516 MOV R5,(SP) ; DB,* 0865
000016 062716 000120 ADD #120,(SP)
000022 011603 1$: MOV (SP),R3
000024 004767 000000G JSR PC,$CMQRM
000030 103405 BCS 2$
000032 012703 100030 MOV #-77750,R3
000036 004767 000000V JSR PC,SCHEDULE.TRANSMIT
000042 000767 BR 1$
000044 010516 2$: MOV R5,(SP) ; DB,* 0867
000046 062716 000114 ADD #114,(SP)
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 21
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (8)
000052 011603 3$: MOV (SP),R3
000054 004767 000000G JSR PC,$CMQRM
000060 103405 BCS 4$
000062 012703 100030 MOV #-77750,R3
000066 004767 000000V JSR PC,SCHEDULE.TRANSMIT
000072 000767 BR 3$
000074 004767 000000V 4$: JSR PC,SETDEV ; 0868
000100 005726 TST (SP)+ ; 0837
000102 000207 RTS PC
; Routine Size: 34 words, Routine Base: $CODE$ + 1112
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 22
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (9)
; 0870 routine CCPSTR
; 0871
; 0872 !++
; 0873 ! FUNCTIONAL DESCRIPTION:
; 0874 !
; 0875 !
; 0876 ! FORMAL PARAMETERS:
; 0877 !
; 0878 (DB : ref block field (D_FIELDS),
; 0879 CCB : ref block field (C_FIELDS))
; 0880 !
; 0881 ! IMPLICIT INPUTS:
; 0882 !
; 0883 ! IMPLICIT OUTPUTS:
; 0884 ! None
; 0885 !
; 0886 ! ROUTINE VALUE:
; 0887 !
; 0888 : MCB_DB_CCB novalue =
; 0889 !
; 0890 ! SIDE EFFECTS:
; 0891 ! None
; 0892 !--
; 0893
; 0894 begin
; 0895 $MCB_RETURN_CCB (.CCB);
; 0896 DB [SS_DEVICE_BEING_SET] = FALSE;
; 0897 DB [LS_STATION_ENABLED] = TRUE;
; 0898 DB [SS_DEVICE_RUNNING] = TRUE;
; 0899 SET_DEVICE (DB [D_TIM]);
; 0900 end; !of routine CCPSTR
.SBTTL CCPSTR
000000 004767 000000G CCPSTR: JSR PC,$CCBRT ; 0895
000004 042765 004000 000004 BIC #4000,4(R5) ; *,*(DB) 0896
000012 052715 100000 BIS #100000,(R5) ; *,DB 0897
000016 052765 100000 000004 BIS #100000,4(R5) ; *,*(DB) 0898
000024 004767 000000V JSR PC,SETDEV ; 0899
000030 000207 RTS PC ; 0870
; Routine Size: 13 words, Routine Base: $CODE$ + 1216
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 23
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (10)
; 0901 routine CHANGE_PROTOCOL_STATE
; 0902
; 0903 !++
; 0904 ! FUNCTIONAL DESCRIPTION:
; 0905 !
; 0906 !
; 0907 ! FORMAL PARAMETERS:
; 0908 !
; 0909 (DB : ref block field (D_FIELDS),
; 0910 STATE,
; 0911 REASON)
; 0912 !
; 0913 ! IMPLICIT INPUTS:
; 0914 !
; 0915 ! IMPLICIT OUTPUTS:
; 0916 ! None
; 0917 !
; 0918 ! ROUTINE VALUE:
; 0919 !
; 0920 : DCP_DB novalue =
; 0921 !
; 0922 ! SIDE EFFECTS:
; 0923 ! None
; 0924 !--
; 0925
; 0926 begin
; 0927
; 0928 if .DB [S_PROTOCOL_STATE] eql .STATE then return;
; 0929
; P 0930 $NM_DLL_EVENT (.REASON, .DB [S_CIRCUIT_ENTITY],
; P 0931 PARAMETER_C_1 (0, DB [S_PROTOCOL_STATE]),
; P 0932 DB [S_PROTOCOL_STATE] = .STATE,
; 0933 PARAMETER_C_1 (1, DB [S_PROTOCOL_STATE]));
; 0934 SEND_STATE (DB [D_TIM]);
; 0935 end; !of routine CHANGE_PROTOCOL_STATE
.GLOBL $NLBEG, $DPC1, $NLEND
.SBTTL CHANGE.PROTOCOL.STATE
000000 012701 000002 CHANGE.PROTOCOL.STATE:
MOV #2,R1 ; 0928
000004 060501 ADD R5,R1 ; DB,*
000006 111100 MOVB (R1),R0
000010 020066 000004 CMP R0,4(SP) ; *,STATE
000014 001430 BEQ 1$
000016 004767 000000G JSR PC,$NLBEG ; 0933
000022 005046 CLR -(SP)
000024 111100 MOVB (R1),R0
000026 004767 000000G JSR PC,$DPC1
000032 116611 000006 MOVB 6(SP),(R1) ; STATE,*
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 24
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (10)
000036 012716 000001 MOV #1,(SP)
000042 111100 MOVB (R1),R0
000044 004767 000000G JSR PC,$DPC1
000050 016600 000004 MOV 4(SP),R0 ; REASON,*
000054 062700 000500 ADD #500,R0
000060 016501 000126 MOV 126(R5),R1 ; *(DB),*
000064 004767 000000G JSR PC,$NLEND
000070 004767 000000V JSR PC,SEND.STATE ; 0934
000074 005726 TST (SP)+ ; 0926
000076 000207 1$: RTS PC ; 0901
; Routine Size: 32 words, Routine Base: $CODE$ + 1250
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 25
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (11)
; 0936 routine CKACK
; 0937
; 0938 !++
; 0939 ! FUNCTIONAL DESCRIPTION:
; 0940 !
; 0941 !
; 0942 ! FORMAL PARAMETERS:
; 0943 !
; 0944 (DB : ref block field (D_FIELDS))
; 0945 !
; 0946 ! IMPLICIT INPUTS:
; 0947 !
; 0948 ! IMPLICIT OUTPUTS:
; 0949 ! None
; 0950 !
; 0951 ! ROUTINE VALUE:
; 0952 !
; 0953 : DCP_DB =
; 0954 !
; 0955 ! SIDE EFFECTS:
; 0956 ! None
; 0957 !--
; 0958
; 0959 begin
; 0960
; 0961 field
; 0962 NUM = [0, 0, 8, 0];
; 0963
; 0964 bind
; 0965 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 0966
; 0967 local
; 0968 LAST_ACK : block [1] field (NUM),
; 0969 NUM_ACKED : block [1] field (NUM),
; 0970 NUM_SENT : block [1] field (NUM);
; 0971
; 0972 LAST_ACK = .DB [$SIGNED (S_A)];
; 0973 NUM_ACKED = .HEADER [$SIGNED (H_RESP)];
; 0974
; 0975 if .LAST_ACK [NUM] eql .NUM_ACKED [NUM]
; 0976 then
; 0977 begin
; 0978
; 0979 if .LAST_ACK [NUM] eql .DB [S_N] then DB [S_TRANSMIT_THRESHOLD] = 7;
; 0980
; 0981 return TRUE
; 0982 end;
; 0983
; 0984 NUM_ACKED = .NUM_ACKED - .LAST_ACK;
; 0985 NUM_SENT = .DB [$SIGNED (S_N)];
; 0986 NUM_SENT = .NUM_SENT - .LAST_ACK;
; 0987
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 26
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (11)
; 0988 if .NUM_SENT [NUM] lssu .NUM_ACKED [NUM]
; 0989 then
; 0990 return FALSE;
; 0991
; 0992 DB [S_A] = .HEADER [H_RESP];
; 0993 RETURN_ACKED_MESSAGES (DB [D_TIM]);
; 0994 return TRUE
; 0995 end; !of routine CKACK
.SBTTL CKACK
000000 116501 000074 CKACK: MOVB 74(R5),R1 ; *(DB),LAST.ACK 0972
000004 116502 000157 MOVB 157(R5),R2 ; *(DB),NUM.ACKED 0973
000010 120102 CMPB R1,R2 ; LAST.ACK,NUM.ACKED 0975
000012 001007 BNE 1$
000014 120165 000073 CMPB R1,73(R5) ; LAST.ACK,*(DB) 0979
000020 001017 BNE 2$
000022 112765 000007 000016 MOVB #7,16(R5) ; *,*(DB)
000030 000413 BR 2$ ; 0977
000032 160102 1$: SUB R1,R2 ; LAST.ACK,NUM.ACKED 0984
000034 116500 000073 MOVB 73(R5),R0 ; *(DB),NUM.SENT 0985
000040 160100 SUB R1,R0 ; LAST.ACK,NUM.SENT 0986
000042 120002 CMPB R0,R2 ; NUM.SENT,NUM.ACKED 0988
000044 103410 BLO 3$ ; 0990
000046 116565 000157 000074 MOVB 157(R5),74(R5) ; *(DB),*(DB) 0992
000054 004767 000000V JSR PC,RETURN.ACKED.MESSAGES ; 0993
000060 012700 000001 2$: MOV #1,R0 ; 0959
000064 000207 RTS PC
000066 005000 3$: CLR R0 ; 0936
000070 000207 RTS PC
; Routine Size: 29 words, Routine Base: $CODE$ + 1350
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 27
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (12)
; 0996 routine CKREP
; 0997
; 0998 !++
; 0999 ! FUNCTIONAL DESCRIPTION:
; 1000 !
; 1001 !
; 1002 ! FORMAL PARAMETERS:
; 1003 !
; 1004 (DB : ref block field (D_FIELDS))
; 1005 !
; 1006 ! IMPLICIT INPUTS:
; 1007 !
; 1008 ! IMPLICIT OUTPUTS:
; 1009 ! None
; 1010 !
; 1011 ! ROUTINE VALUE:
; 1012 !
; 1013 : DCP_DB novalue =
; 1014 !
; 1015 ! SIDE EFFECTS:
; 1016 ! None
; 1017 !--
; 1018
; 1019 begin
; 1020 DB [SS_START_REP_TIMER] = FALSE;
; 1021 DB [SS_TIMING_REP] = FALSE;
; 1022
; 1023 if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
; 1024
; 1025 if
; 1026 begin
; 1027
; 1028 field
; 1029 NUM = [0, 0, 8, 0];
; 1030
; 1031 local
; 1032 NUM_NOT_ACKED : block [1] field (NUM),
; 1033 NUM_NOT_TRANSMITTED : block [1] field (NUM);
; 1034
; 1035 NUM_NOT_TRANSMITTED = .DB [$SIGNED (S_N)];
; 1036 NUM_NOT_ACKED = .NUM_NOT_TRANSMITTED;
; 1037 NUM_NOT_TRANSMITTED = .NUM_NOT_TRANSMITTED - .DB [$SIGNED (S_X)];
; 1038 NUM_NOT_ACKED = .NUM_NOT_ACKED - .DB [$SIGNED (S_A)];
; 1039 .NUM_NOT_ACKED [NUM] gtru .NUM_NOT_TRANSMITTED [NUM]
; 1040 end
; 1041 then
; 1042
; 1043 if .DB [L_DUPLEX] eql DL_FULL
; 1044 then
; 1045 begin
; 1046 DB [SS_TIMING_REP] = TRUE;
; 1047 DB [D_TIM] = .DB [L_RETRANSMIT_TIMER];
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 28
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (12)
; 1048 end
; 1049 else
; 1050 DB [SS_START_REP_TIMER] = TRUE;
; 1051
; 1052 end; !of routine CKREP
.SBTTL CKREP
000000 042715 005000 CKREP: BIC #5000,(R5) ; *,DB 1021
000004 105765 000012 TSTB 12(R5) ; *(DB) 1023
000010 001001 BNE 1$
000012 105015 CLRB (R5) ; DB
000014 116500 000073 1$: MOVB 73(R5),R0 ; *(DB),NUM.NOT.TRANSMI 1035
000020 010001 MOV R0,R1 ; NUM.NOT.TRANSMI,NUM.NOT.ACKED 1036
000022 116502 000072 MOVB 72(R5),R2 ; *(DB),* 1037
000026 160200 SUB R2,R0 ; *,NUM.NOT.TRANSMI
000030 116502 000074 MOVB 74(R5),R2 ; *(DB),* 1038
000034 160201 SUB R2,R1 ; *,NUM.NOT.ACKED
000036 120100 CMPB R1,R0 ; NUM.NOT.ACKED,NUM.NOT.TRANSMI 1039
000040 101412 BLOS 3$
000042 105765 000012 TSTB 12(R5) ; *(DB) 1043
000046 001005 BNE 2$
000050 052715 004000 BIS #4000,(R5) ; *,DB 1046
000054 116515 000112 MOVB 112(R5),(R5) ; *(DB),DB 1047
000060 000207 RTS PC ; 1043
000062 052715 001000 2$: BIS #1000,(R5) ; *,DB 1050
000066 000207 3$: RTS PC ; 0996
; Routine Size: 28 words, Routine Base: $CODE$ + 1442
; Maximum stack depth per invocation: 0 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 29
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (13)
; 1053 routine CTLSTP
; 1054
; 1055 !++
; 1056 ! FUNCTIONAL DESCRIPTION:
; 1057 !
; 1058 !
; 1059 ! FORMAL PARAMETERS:
; 1060 !
; 1061 (DB : ref block field (D_FIELDS),
; 1062 CCB : ref block field (C_FIELDS))
; 1063 !
; 1064 ! IMPLICIT INPUTS:
; 1065 !
; 1066 ! IMPLICIT OUTPUTS:
; 1067 ! None
; 1068 !
; 1069 ! ROUTINE VALUE:
; 1070 !
; 1071 : MCB_DB_CCB novalue =
; 1072 !
; 1073 ! SIDE EFFECTS:
; 1074 ! None
; 1075 !--
; 1076
; 1077 begin
; 1078 DB [SS_NOTIFY_STATE] = FALSE;
; 1079 DB [S_TRANSIENT_ERROR] = 0;
; 1080 DB [S_PERSISTENT_ERROR] = 0;
; 1081 DB [S_USER_HANDLE] = 0;
; 1082 CCB [C_FNC] = FC_CCP;
; 1083 CCB [C_STS] = DLL$_SUCCESS;
; 1084
; 1085 if .DB [D_USER_BUFFERS] eql 0
; 1086 then
; 1087 $MCB_SCHEDULE_CCB (.CCB)
; 1088 else
; 1089 DB [S_CONTROL_CCB] = .CCB;
; 1090
; 1091 end; !of routine CTLSTP
.GLOBL $SCHED
.SBTTL CTLSTP
000000 010400 CTLSTP: MOV R4,R0 ; *,CCB 1053
000002 042765 001000 000004 BIC #1000,4(R5) ; *,*(DB) 1078
000010 005065 000132 CLR 132(R5) ; *(DB) 1079
000014 005065 000134 CLR 134(R5) ; *(DB) 1080
000020 005065 000130 CLR 130(R5) ; *(DB) 1081
000024 112760 000022 000012 MOVB #22,12(R0) ; *,*(CCB) 1082
000032 012760 100001 000014 MOV #-77777,14(R0) ; *,*(CCB) 1083
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 30
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (13)
000040 005765 000136 TST 136(R5) ; *(DB) 1085
000044 001003 BNE 1$
000046 004767 000000G JSR PC,$SCHED ; 1087
000052 000207 RTS PC ; 1085
000054 010065 000124 1$: MOV R0,124(R5) ; CCB,*(DB) 1089
000060 000207 RTS PC ; 1053
; Routine Size: 25 words, Routine Base: $CODE$ + 1532
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 31
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (14)
; 1092 routine CTLSTR
; 1093
; 1094 !++
; 1095 ! FUNCTIONAL DESCRIPTION:
; 1096 !
; 1097 !
; 1098 ! FORMAL PARAMETERS:
; 1099 !
; 1100 (DB : ref block field (D_FIELDS),
; 1101 CCB : ref block field (C_FIELDS))
; 1102 !
; 1103 ! IMPLICIT INPUTS:
; 1104 !
; 1105 ! IMPLICIT OUTPUTS:
; 1106 ! None
; 1107 !
; 1108 ! ROUTINE VALUE:
; 1109 !
; 1110 : MCB_DB_CCB novalue =
; 1111 !
; 1112 ! SIDE EFFECTS:
; 1113 ! None
; 1114 !--
; 1115
; 1116 begin
; 1117
; 1118 bind
; P 1119 STATUS = TABLE$ (0, 0,
; P 1120 (SS_HALTED^1, DLL$_STATE_OFF),
; P 1121 (SS_ISTRT^1, DLL$_STATE_SYNCHRONIZING),
; P 1122 (SS_ASTRT^1, DLL$_STATE_SYNCHRONIZING),
; P 1123 (SS_RUNNING^1, DLL$_STATE_RUNNING),
; 1124 (SS_MAINTENANCE^1, DLL$_STATE_MAINTENANCE)) : vector;
; 1125
; 1126 DB [S_USER_HANDLE] = .CCB [C_HANDLE];
; 1127
; 1128 if .CCB [C_PRM1] eql 0
; 1129 then
; 1130 CCB [C_PRM1] = .DB [S_CIRCUIT_COST];
; 1131
; 1132 CCB [C_STS] = .STATUS [.DB [S_PROTOCOL_STATE]];
; 1133 CCB [C_FNC] = FC_CCP;
; 1134 $MCB_SCHEDULE_CCB (.CCB);
; 1135 end; !of routine CTLSTR
000024 .PSECT $PLIT$, RO , D
000024 100043 P.AAB: .WORD -77735
000026 100053 .WORD -77725
000030 100053 .WORD -77725
000032 100063 .WORD -77715
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 32
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (14)
000034 100073 .WORD -77705
000024' STATUS= P.AAB
.SBTTL CTLSTR
001614 .PSECT $CODE$, RO
000000 016465 000010 000130 CTLSTR: MOV 10(R4),130(R5) ; *(CCB),*(DB) 1126
000006 012700 000024 MOV #24,R0 ; 1128
000012 060400 ADD R4,R0 ; CCB,*
000014 005710 TST (R0)
000016 001002 BNE 1$
000020 016510 000140 MOV 140(R5),(R0) ; *(DB),* 1130
000024 116505 000002 1$: MOVB 2(R5),R5 ; *(DB),* 1132
000030 006305 ASL R5
000032 016564 000024' 000014 MOV STATUS(R5),14(R4) ; *,*(CCB)
000040 112764 000022 000012 MOVB #22,12(R4) ; *,*(CCB) 1133
000046 004767 000000G JSR PC,$SCHED ; 1134
000052 000207 RTS PC ; 1092
; Routine Size: 22 words, Routine Base: $CODE$ + 1614
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 33
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (15)
; 1136 routine CURRENT_STATUS (DB) : LINKAGE_DB =
; 1137
; 1138 !++
; 1139 ! FUNCTIONAL DESCRIPTION:
; 1140 !
; 1141 !
; 1142 ! FORMAL PARAMETERS:
; 1143 ! DB = address of DCP data base.
; 1144 !
; 1145 ! IMPLICIT INPUTS:
; 1146 ! None
; 1147 !
; 1148 ! IMPLICIT OUTPUTS:
; 1149 ! None
; 1150 !
; 1151 ! ROUTINE VALUE:
; 1152 ! COMPLETION CODES:
; 1153 ! None
; 1154 !
; 1155 ! SIDE EFFECTS:
; 1156 ! None
; 1157 !--
; 1158
; 1159 begin
; 1160 GET_DCP_DATA_BASE (DB)
; 1161
; 1162 literal
; 1163 DLL_OFF = 0,
; 1164 DLL_SYNCHRONIZING = 1,
; 1165 DLL_RUNNING = 2,
; 1166 DLL_MAINTENANCE = 3;
; 1167
; 1168 bind
; P 1169 STATUS = TABLE$ (0, 0,
; P 1170 (SS_HALTED^1, DLL_OFF),
; P 1171 (SS_ISTRT^1, DLL_SYNCHRONIZING),
; P 1172 (SS_ASTRT^1, DLL_SYNCHRONIZING),
; P 1173 (SS_RUNNING^1, DLL_RUNNING),
; 1174 (SS_MAINTENANCE^1, DLL_MAINTENANCE)) : vector,
; P 1175 DLL_STATUS = TABLE$ (0, 0,
; P 1176 (DLL_OFF^1, DLL$_STATE_OFF),
; P 1177 (DLL_SYNCHRONIZING^1, DLL$_STATE_SYNCHRONIZING),
; P 1178 (DLL_RUNNING^1, DLL$_STATE_RUNNING),
; 1179 (DLL_MAINTENANCE^1, DLL$_STATE_MAINTENANCE)) : vector;
; 1180
; 1181 if .DB [SS_NOTIFY_OFF]
; 1182 then
; 1183 begin
; 1184 DB [SS_NOTIFY_OFF] = FALSE;
; 1185
; 1186 if .DB [D_REPORTED_STATE] eql DLL_OFF
; 1187 then
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 34
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (15)
; 1188 DB [SS_NOTIFY_STATE] = FALSE;
; 1189
; 1190 return .DLL_STATUS [DB [D_REPORTED_STATE] = DLL_OFF];
; 1191 end;
; 1192
; 1193 DB [SS_NOTIFY_STATE] = FALSE;
; 1194 .DLL_STATUS [DB [D_REPORTED_STATE] = .STATUS [.DB [S_PROTOCOL_STATE]]]
; 1195 end; !of routine CURRENT_STATUS
000036 .PSECT $PLIT$, RO , D
000036 000000 P.AAC: .WORD 0
000040 000001 .WORD 1
000042 000001 .WORD 1
000044 000002 .WORD 2
000046 000003 .WORD 3
000050 100043 P.AAD: .WORD -77735
000052 100053 .WORD -77725
000054 100063 .WORD -77715
000056 100073 .WORD -77705
000036' STATUS= P.AAC
000050' DLL.STATUS= P.AAD
.SBTTL CURRENT.STATUS
001670 .PSECT $CODE$, RO
000000 010546 CURRENT.STATUS:
MOV R5,-(SP) ; 1136
000002 012700 000004 MOV #4,R0 ; 1181
000006 060500 ADD R5,R0 ; DB,*
000010 032710 000400 BIT #400,(R0)
000014 001412 BEQ 2$
000016 042710 000400 BIC #400,(R0) ; 1184
000022 105710 TSTB (R0) ; 1186
000024 001002 BNE 1$
000026 042710 001000 BIC #1000,(R0) ; 1188
000032 105010 1$: CLRB (R0) ; 1190
000034 016700 000050' MOV DLL.STATUS,R0 ; 1183
000040 000413 BR 3$
000042 042710 001000 2$: BIC #1000,(R0) ; 1193
000046 116505 000002 MOVB 2(R5),R5 ; *(DB),* 1194
000052 006305 ASL R5
000054 016505 000036' MOV STATUS(R5),R5
000060 110510 MOVB R5,(R0)
000062 006305 ASL R5
000064 016500 000050' MOV DLL.STATUS(R5),R0 ; 1136
000070 012605 3$: MOV (SP)+,R5
000072 000207 RTS PC
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 35
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (15)
; Routine Size: 30 words, Routine Base: $CODE$ + 1670
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 36
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (16)
; 1196 routine DCPCCP
; 1197
; 1198 !++
; 1199 ! FUNCTIONAL DESCRIPTION:
; 1200 !
; 1201 !
; 1202 ! FORMAL PARAMETERS:
; 1203 !
; 1204 (DB : ref block field (D_FIELDS),
; 1205 CCB : ref block field (C_FIELDS),
; 1206 MODIFIER)
; 1207 !
; 1208 ! IMPLICIT INPUTS:
; 1209 !
; 1210 ! IMPLICIT OUTPUTS:
; 1211 ! None
; 1212 !
; 1213 ! ROUTINE VALUE:
; 1214 !
; 1215 : MCB_DB_CCB_MOD novalue =
; 1216 !
; 1217 ! SIDE EFFECTS:
; 1218 ! None
; 1219 !--
; 1220
; 1221 begin
; P 1222 DISPATCH$ (
; P 1223 .MODIFIER,
; P 1224 TABLE$ ($DSPCR, FD_TIM,
; P 1225 (FM_GET, CCPGET),
; P 1226 (FM_SET, CCPSET),
; P 1227 (FM_STR, CCPSTR),
; P 1228 (FM_STP, CCPSTP)),
; P 1229 (DB [D_TIM], .CCB),
; 1230 MCB_DB_CCB);
; 1231 end; !of routine DCPCCP
000060 .PSECT $PLIT$, RO , D
000060 000000G P.AAE: .WORD $DSPCR
000062 001216' .WORD CCPSTR
000064 001112' .WORD CCPSTP
000066 000000G .WORD $DSPCR
000070 000000G .WORD $DSPCR
000072 001104' .WORD CCPSET
000074 001046' .WORD CCPGET
.SBTTL DCPCCP
001764 .PSECT $CODE$, RO
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 37
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (16)
000000 004773 000060' DCPCCP: JSR PC,@P.AAE(R3) ; *,*(MODIFIER) 1230
000004 000207 RTS PC ; 1196
; Routine Size: 3 words, Routine Base: $CODE$ + 1764
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 38
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (17)
; 1232 routine DCPCTL
; 1233
; 1234 !++
; 1235 ! FUNCTIONAL DESCRIPTION:
; 1236 !
; 1237 !
; 1238 ! FORMAL PARAMETERS:
; 1239 !
; 1240 (DB : ref block field (D_FIELDS),
; 1241 CCB : ref block field (C_FIELDS),
; 1242 MODIFIER)
; 1243 !
; 1244 ! IMPLICIT INPUTS:
; 1245 !
; 1246 ! IMPLICIT OUTPUTS:
; 1247 ! None
; 1248 !
; 1249 ! ROUTINE VALUE:
; 1250 !
; 1251 : MCB_DB_CCB_MOD novalue =
; 1252 !
; 1253 ! SIDE EFFECTS:
; 1254 ! None
; 1255 !--
; 1256
; 1257 begin
; P 1258 DISPATCH$ (
; P 1259 .MODIFIER,
; P 1260 TABLE$ ($DSPCR, 0,
; P 1261 (FM_NM, DCPNM),
; P 1262 (FM_STR, CTLSTR),
; P 1263 (FM_STP, CTLSTP)),
; P 1264 (DB [D_TIM], .CCB),
; 1265 MCB_DB_CCB);
; 1266 end; !of routine DCPCTL
000076 .PSECT $PLIT$, RO , D
000076 000000G P.AAF: .WORD $DSPCR
000100 001614' .WORD CTLSTR
000102 001532' .WORD CTLSTP
000104 000000G .WORD DCPNM
.SBTTL DCPCTL
001772 .PSECT $CODE$, RO
000000 004773 000076' DCPCTL: JSR PC,@P.AAF(R3) ; *,*(MODIFIER) 1265
000004 000207 RTS PC ; 1232
; Routine Size: 3 words, Routine Base: $CODE$ + 1772
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 39
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (17)
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 40
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (18)
; 1267 routine DCPKCP
; 1268
; 1269 !++
; 1270 ! FUNCTIONAL DESCRIPTION:
; 1271 !
; 1272 !
; 1273 ! FORMAL PARAMETERS:
; 1274 !
; 1275 (DB : ref block field (D_FIELDS),
; 1276 CCB : ref block field (C_FIELDS))
; 1277 !
; 1278 ! IMPLICIT INPUTS:
; 1279 !
; 1280 ! IMPLICIT OUTPUTS:
; 1281 ! None
; 1282 !
; 1283 ! ROUTINE VALUE:
; 1284 !
; 1285 : MCB_DB_CCB novalue =
; 1286 !
; 1287 ! SIDE EFFECTS:
; 1288 ! None
; 1289 !--
; 1290
; 1291 begin
; 1292 $MCB_RETURN_CCB (.CCB);
; 1293 DB [LS_RESYNCH_IN_PROGRESS] = FALSE;
; 1294 end; !of routine DCPKCP
.SBTTL DCPKCP
000000 004767 000000G DCPKCP: JSR PC,$CCBRT ; 1292
000004 042715 000400 BIC #400,(R5) ; *,DB 1293
000010 000207 RTS PC ; 1267
; Routine Size: 5 words, Routine Base: $CODE$ + 2000
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 41
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (19)
; 1295 routine DCPRCE
; 1296
; 1297 !++
; 1298 ! FUNCTIONAL DESCRIPTION:
; 1299 !
; 1300 !
; 1301 ! FORMAL PARAMETERS:
; 1302 !
; 1303 (DB : ref block field (D_FIELDS),
; 1304 CCB : ref block field (C_FIELDS))
; 1305 !
; 1306 ! IMPLICIT INPUTS:
; 1307 !
; 1308 ! IMPLICIT OUTPUTS:
; 1309 ! None
; 1310 !
; 1311 ! ROUTINE VALUE:
; 1312 !
; 1313 : MCB_DB_CCB novalue =
; 1314 !
; 1315 ! SIDE EFFECTS:
; 1316 ! None
; 1317 !--
; 1318
; 1319 begin
; 1320 STARCE (DB [D_TIM], .CCB);
; 1321 DB [D_USER_BUFFERS] = .DB [D_USER_BUFFERS] - 1;
; 1322
; 1323 if .DB [D_USER_BUFFERS] neq 0 then return;
; 1324
; 1325 if .DB [S_CONTROL_CCB] neqa 0
; 1326 then
; 1327 begin
; 1328 $MCB_SCHEDULE_CCB (.DB [S_CONTROL_CCB]);
; 1329 DB [S_CONTROL_CCB] = 0;
; 1330 end;
; 1331
; 1332 end; !of routine DCPRCE
.SBTTL DCPRCE
000000 004767 000000V DCPRCE: JSR PC,STARCE ; 1320
000004 005365 000136 DEC 136(R5) ; *(DB) 1321
000010 001011 BNE 1$ ; 1323
000012 012700 000124 MOV #124,R0 ; 1325
000016 060500 ADD R5,R0 ; DB,*
000020 005710 TST (R0)
000022 001404 BEQ 1$
000024 011004 MOV (R0),R4 ; 1328
000026 004767 000000G JSR PC,$SCHED
000032 005010 CLR (R0) ; 1329
000034 000207 1$: RTS PC ; 1295
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 42
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (19)
; Routine Size: 15 words, Routine Base: $CODE$ + 2012
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 43
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (20)
; 1333 routine DCPRCP
; 1334
; 1335 !++
; 1336 ! FUNCTIONAL DESCRIPTION:
; 1337 !
; 1338 !
; 1339 ! FORMAL PARAMETERS:
; 1340 !
; 1341 (DB : ref block field (D_FIELDS),
; 1342 CCB : ref block field (C_FIELDS))
; 1343 !
; 1344 ! IMPLICIT INPUTS:
; 1345 !
; 1346 ! IMPLICIT OUTPUTS:
; 1347 ! None
; 1348 !
; 1349 ! ROUTINE VALUE:
; 1350 !
; 1351 : MCB_DB_CCB novalue =
; 1352 !
; 1353 ! SIDE EFFECTS:
; 1354 ! None
; 1355 !--
; 1356
; 1357 begin
; 1358
; 1359 bind
; 1360 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 1361
; 1362 !
; 1363 ! Copy the header and adjust the buffer pointer
; 1364 !
; 1365 begin
; 1366
; 1367 map
; 1368 HEADER : vector [H_LENGTH];
; 1369
; 1370 local
; 1371 HDR_0, HDR_1, HDR_2;
; 1372
; 1373 begin
; 1374
; 1375 local
; 1376 SAVE_MAP;
; 1377
; 1378 SMAP$ (SAVE_MAP);
; 1379 MAP$ (.CCB [C_BIAS]);
; 1380 begin
; 1381
; 1382 local
; 1383 PTR : ref vector;
; 1384
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 44
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (20)
; 1385 PTR = .CCB [C_ADDR];
; 1386 HDR_0 = .PTR [0];
; 1387 HDR_1 = .PTR [1];
; 1388 HDR_2 = .PTR [2];
; 1389 CCB [C_ADDR] = PTR = PTR [3];
; 1390 CCB [C_CNT] = .CCB [C_CNT] - H_LENGTH*%upval;
; 1391 end;
; 1392 MAP$ (.SAVE_MAP);
; 1393 end;
; 1394 begin
; 1395
; 1396 local
; 1397 PTR : ref vector;
; 1398
; 1399 PTR = HEADER [0];
; 1400 PTR [0] = .HDR_0;
; 1401 PTR [1] = .HDR_1;
; 1402 PTR [2] = .HDR_2;
; 1403 PTR = PTR [2]; %(force auto-increment)%
; 1404 end;
; 1405 end;
; 1406 !
; 1407 ! Toss if we are re-synchronizing or halted
; 1408 !
; 1409 if .DB [LS_RESYNCH_IN_PROGRESS] or (.DB [S_PROTOCOL_STATE] eql SS_HALTED)
; 1410 then
; 1411 begin
; 1412 STARCE (DB [D_TIM], .CCB);
; 1413 return;
; 1414 end;
; 1415
; 1416 if (.CCB [C_STS] geq 0) or (.CCB [C_STS] eql CE_DCR)
; 1417 then
; 1418 begin
; 1419
; 1420 selectone .HEADER [H_IDENTIFIER] of
; 1421 set
; 1422 [CM_ENQ] : PROCESS_CONTROL_MESSAGE (DB [D_TIM], .CCB);
; 1423 [CM_SOH] : PROCESS_DATA_MESSAGE (DB [D_TIM], .CCB);
; 1424 [CM_DLE] : PROCESS_MAINTENANCE_MESSAGE (DB [D_TIM], .CCB);
; 1425 [otherwise] :
; 1426 begin
; 1427 HEADER_FORMAT_ERROR (DB [D_TIM]);
; 1428 STARCE (DB [D_TIM], .CCB);
; 1429 end;
; 1430 tes;
; 1431
; 1432 end
; 1433 else
; 1434 begin
; 1435 !
; 1436 ! There was an error in message reception -
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 45
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (20)
; 1437 ! record where appropriate.
; 1438 !
; 1439 RECORD_DRIVER_ERROR (DB [D_TIM], .CCB);
; 1440 STARCE (DB [D_TIM], .CCB);
; 1441 end;
; 1442
; 1443 SEND_DATA (DB [D_TIM]);
; 1444 end; !of routine DCPRCP
.GLOBL KISAR6
.SBTTL DCPRCP
000000 005746 DCPRCP: TST -(SP) ; 1333
000002 010446 MOV R4,-(SP)
000004 016704 000000G MOV KISAR6,R4 ; *,SAVE.MAP 1378
000010 011600 MOV (SP),R0 ; 1379
000012 016067 000016 000000G MOV 16(R0),KISAR6
000020 010001 MOV R0,R1 ; 1385
000022 016100 000020 MOV 20(R1),R0 ; *,PTR
000026 012001 MOV (R0)+,R1 ; PTR,HDR.0 1386
000030 012002 MOV (R0)+,R2 ; PTR,HDR.1 1387
000032 012003 MOV (R0)+,R3 ; PTR,HDR.2 1388
000034 011646 MOV (SP),-(SP) ; 1389
000036 062716 000020 ADD #20,(SP)
000042 010036 MOV R0,@(SP)+ ; PTR,*
000044 011600 MOV (SP),R0 ; 1390
000046 162760 000006 000022 SUB #6,22(R0)
000054 010467 000000G MOV R4,KISAR6 ; SAVE.MAP,* 1392
000060 012700 000154 MOV #154,R0 ; *,PTR 1399
000064 060500 ADD R5,R0 ; DB,PTR
000066 010120 MOV R1,(R0)+ ; HDR.0,PTR 1400
000070 010220 MOV R2,(R0)+ ; HDR.1,PTR 1401
000072 010310 MOV R3,(R0) ; HDR.2,PTR 1402
000074 032715 000400 BIT #400,(R5) ; *,DB 1409
000100 001003 BNE 1$
000102 105765 000002 TSTB 2(R5) ; *(DB)
000106 001004 BNE 2$
000110 011604 1$: MOV (SP),R4 ; 1412
000112 004767 000000V JSR PC,STARCE
000116 000457 BR 10$ ; 1411
000120 011601 2$: MOV (SP),R1 ; 1416
000122 016100 000014 MOV 14(R1),R0
000126 002003 BGE 3$
000130 020027 177570 CMP R0,#-210
000134 001040 BNE 7$
000136 116566 000154 000002 3$: MOVB 154(R5),2(SP) ; *(DB),* 1420
000144 105066 000003 CLRB 3(SP)
000150 026627 000002 000005 CMP 2(SP),#5
000156 001004 BNE 4$
000160 011604 MOV (SP),R4 ; 1422
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 46
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (20)
000162 004767 000000V JSR PC,PROCESS.CONTROL.MESSAGE
000166 000431 BR 9$ ; 1420
000170 026627 000002 000201 4$: CMP 2(SP),#201
000176 001004 BNE 5$
000200 011604 MOV (SP),R4 ; 1423
000202 004767 000000V JSR PC,PROCESS.DATA.MESSAGE
000206 000421 BR 9$ ; 1420
000210 026627 000002 000220 5$: CMP 2(SP),#220
000216 001004 BNE 6$
000220 011604 MOV (SP),R4 ; 1424
000222 004767 000000V JSR PC,PROCESS.MAINTENANCE.MESSAGE
000226 000411 BR 9$ ; 1420
000230 004767 000000V 6$: JSR PC,HEADER.FORMAT.ERROR ; 1427
000234 000403 BR 8$ ; 1428
000236 011604 7$: MOV (SP),R4 ; 1439
000240 004767 000000V JSR PC,RECORD.DRIVER.ERROR
000244 011604 8$: MOV (SP),R4 ; 1440
000246 004767 000000V JSR PC,STARCE
000252 004767 000000V 9$: JSR PC,SEND.DATA ; 1443
000256 022626 10$: CMP (SP)+,(SP)+ ; 1333
000260 000207 RTS PC
; Routine Size: 89 words, Routine Base: $CODE$ + 2050
; Maximum stack depth per invocation: 3 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 47
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (21)
; 1445 routine DCPTIM
; 1446
; 1447 !++
; 1448 ! FUNCTIONAL DESCRIPTION:
; 1449 !
; 1450 !
; 1451 ! FORMAL PARAMETERS:
; 1452 !
; 1453 (DB : ref block field (D_FIELDS),
; 1454 CCB : ref block field (C_FIELDS),
; 1455 MODIFIER)
; 1456 !
; 1457 ! IMPLICIT INPUTS:
; 1458 !
; 1459 ! IMPLICIT OUTPUTS:
; 1460 ! None
; 1461 !
; 1462 ! ROUTINE VALUE:
; 1463 !
; 1464 : MCB_DB_CCB_MOD novalue =
; 1465 !
; 1466 ! SIDE EFFECTS:
; 1467 ! None
; 1468 !--
; 1469
; 1470 begin
; P 1471 DISPATCH$ (
; P 1472 .MODIFIER,
; P 1473 TABLE$ ($DSPCR, FD_TIM,
; P 1474 (FM_LTM, TIMLTM),
; P 1475 (FM_PWF, TIMPWF),
; P 1476 (FM_PIN, TIMPIN),
; P 1477 (FM_CCB, TIMCCB)),
; P 1478 (DB [D_TIM], .CCB),
; 1479 MCB_DB_CCB);
; 1480 end; !of routine DCPTIM
000106 .PSECT $PLIT$, RO , D
000106 000000G P.AAG: .WORD $DSPCR
000110 000000V .WORD TIMLTM
000112 000000V .WORD TIMPWF
000114 000000G .WORD TIMPIN
000116 000000V .WORD TIMCCB
000120 000000G .WORD $DSPCR
.SBTTL DCPTIM
002332 .PSECT $CODE$, RO
000000 004773 000106' DCPTIM: JSR PC,@P.AAG(R3) ; *,*(MODIFIER) 1479
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 48
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (21)
000004 000207 RTS PC ; 1445
; Routine Size: 3 words, Routine Base: $CODE$ + 2332
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 49
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (22)
; 1481 routine DCPXCP
; 1482
; 1483 !++
; 1484 ! FUNCTIONAL DESCRIPTION:
; 1485 !
; 1486 !
; 1487 ! FORMAL PARAMETERS:
; 1488 !
; 1489 (DB : ref block field (D_FIELDS),
; 1490 CCB : ref block field (C_FIELDS))
; 1491 !
; 1492 ! IMPLICIT INPUTS:
; 1493 !
; 1494 ! IMPLICIT OUTPUTS:
; 1495 ! None
; 1496 !
; 1497 ! ROUTINE VALUE:
; 1498 !
; 1499 : MCB_DB_CCB novalue =
; 1500 !
; 1501 ! SIDE EFFECTS:
; 1502 ! None
; 1503 !--
; 1504
; 1505 begin
; 1506
; 1507 bind
; 1508 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 1509
; 1510 begin
; 1511
; 1512 map
; 1513 HEADER : vector [H_LENGTH];
; 1514
; 1515 local
; 1516 PTR : ref vector;
; 1517
; 1518 PTR = .CCB [C_ADDR];
; 1519 HEADER [0] = .PTR [0];
; 1520 HEADER [1] = .PTR [1];
; 1521 HEADER [2] = .PTR [2];
; 1522 PTR = PTR [2]; %(force auto-increment)%
; 1523 end;
; 1524 !
; 1525 ! If a data message, put it in the proper place
; 1526 !
; 1527 if .HEADER [H_IDENTIFIER] neq CM_ENQ
; 1528 then
; 1529 begin
; 1530 DB [L_MESSAGES_AT_DRIVER] = .DB [L_MESSAGES_AT_DRIVER] - 1;
; 1531
; 1532 if .HEADER [H_IDENTIFIER] eql CM_SOH
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 50
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (22)
; 1533 then
; 1534 begin
; 1535 $MCB_QUEUE_CCB (DB [S_WAITING_FOR_ACK], .CCB [C_STK]);
; 1536 RETURN_ACKED_MESSAGES (DB [D_TIM]);
; 1537 end
; 1538 else
; 1539 SCHEDULE_TRANSMIT (.CCB [C_STK], DB [D_TIM], DLL$_SUCCESS);
; 1540
; 1541 end;
; 1542
; 1543 $MCB_RETURN_CCB (.CCB);
; 1544 !
; 1545 ! One less message at the driver
; 1546 !
; 1547 DB [S_MOTD] = .DB [S_MOTD] - 1;
; 1548
; 1549 if .DB [S_MOTD] eql 0
; 1550 then
; 1551
; 1552 if .DB [SS_RETRANSMIT] then RETRANSMIT_UNACKED_MESSAGES (DB [D_TIM]);
; 1553
; 1554 !
; 1555 ! If halted, then there is nothing else to do.
; 1556 !
; 1557 if .DB [S_PROTOCOL_STATE] eql SS_HALTED then return;
; 1558 !
; 1559 ! Do post-transmit processing
; 1560 !
; 1561 selectone .HEADER [H_IDENTIFIER] of
; 1562 set
; 1563 [CM_ENQ] :
; 1564
; 1565 if .HEADER [H_TYPE] eql MT_REP
; 1566 then
; 1567 DB [SS_START_REP_TIMER] = TRUE;
; 1568
; 1569 [CM_SOH] :
; 1570 begin
; 1571
; 1572 if
; 1573 begin
; 1574
; 1575 field
; 1576 NUM = [0, 0, 8, 0];
; 1577
; 1578 local
; 1579 NUM_NOT_ACKED : block [1] field (NUM),
; 1580 NUM_NOT_TRANSMITTED : block [1] field (NUM);
; 1581
; 1582 NUM_NOT_TRANSMITTED = .DB [$SIGNED (S_N)];
; 1583 NUM_NOT_ACKED = .NUM_NOT_TRANSMITTED;
; 1584 NUM_NOT_TRANSMITTED = .NUM_NOT_TRANSMITTED -
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 51
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (22)
; 1585 (DB [S_X] = .HEADER [$SIGNED (H_NUM)]);
; 1586 NUM_NOT_ACKED = .NUM_NOT_ACKED - .DB [$SIGNED (S_A)];
; 1587 .NUM_NOT_ACKED [NUM] gtru .NUM_NOT_TRANSMITTED [NUM]
; 1588 end
; 1589 then
; 1590 begin
; 1591
; 1592 if not (.DB [SS_START_REP_TIMER] or .DB [SS_TIMING_REP])
; 1593 then
; 1594 DB [SS_START_REP_TIMER] = TRUE;
; 1595
; 1596 end
; 1597 else
; 1598 begin
; 1599 DB [SS_START_REP_TIMER] = FALSE;
; 1600 DB [SS_TIMING_REP] = FALSE;
; 1601
; 1602 if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
; 1603
; 1604 end;
; 1605
; 1606 end;
; 1607 tes;
; 1608 !
; 1609 ! Start the rep timer if asked
; 1610 !
; 1611 if .DB [SS_START_REP_TIMER]
; 1612 then
; 1613 begin
; 1614 DB [SS_START_REP_TIMER] = FALSE;
; 1615 DB [SS_TIMING_REP] = TRUE;
; 1616
; 1617 if .DB [L_DUPLEX] eql DL_FULL
; 1618 then DB [D_TIM] = .DB [L_RETRANSMIT_TIMER];
; 1619
; 1620 end;
; 1621 !
; 1622 ! Process select flag if appropriate
; 1623 !
; 1624 if .DB [L_DUPLEX] neq DL_FULL
; 1625 then
; 1626
; 1627 if .HEADER [H_SELECT]
; 1628 then
; 1629 begin
; 1630 COUNTER_INCREMENT (DB, S_SELECTION_INTERVALS);
; 1631 DB [D_TIM] = .DB [L_RETRANSMIT_TIMER];
; 1632 end;
; 1633 !
; 1634 ! Send more data
; 1635 !
; 1636 SEND_DATA (DB [D_TIM]);
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 52
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (22)
; 1637 end; !of routine DCPXCP
.SBTTL DCPXCP
000000 010446 DCPXCP: MOV R4,-(SP) ; 1481
000002 012746 000154 MOV #154,-(SP) ; 1505
000006 060516 ADD R5,(SP) ; DB,*
000010 010401 MOV R4,R1 ; 1518
000012 016100 000020 MOV 20(R1),R0 ; *,PTR
000016 012076 000000 MOV (R0)+,@0(SP) ; PTR,* 1519
000022 011601 MOV (SP),R1 ; 1520
000024 012061 000002 MOV (R0)+,2(R1) ; PTR,*
000030 011061 000004 MOV (R0),4(R1) ; PTR,* 1521
000034 121127 000005 CMPB (R1),#5 ; 1527
000040 001431 BEQ 2$
000042 105365 000146 DECB 146(R5) ; *(DB) 1530
000046 121127 000201 CMPB (R1),#201 ; 1532
000052 001014 BNE 1$
000054 012703 000120 MOV #120,R3 ; 1535
000060 060503 ADD R5,R3 ; DB,*
000062 016600 000002 MOV 2(SP),R0
000066 016004 000004 MOV 4(R0),R4
000072 004767 000000G JSR PC,$CMQIN
000076 004767 000000V JSR PC,RETURN.ACKED.MESSAGES ; 1536
000102 000410 BR 2$ ; 1532
000104 016600 000002 1$: MOV 2(SP),R0 ; 1539
000110 016004 000004 MOV 4(R0),R4
000114 012703 100001 MOV #-77777,R3
000120 004767 000000V JSR PC,SCHEDULE.TRANSMIT
000124 016604 000002 2$: MOV 2(SP),R4 ; 1543
000130 004767 000000G JSR PC,$CCBRT
000134 105365 000076 DECB 76(R5) ; *(DB) 1547
000140 001005 BNE 3$ ; 1549
000142 032715 002000 BIT #2000,(R5) ; *,DB 1552
000146 001402 BEQ 3$
000150 004767 000000V JSR PC,RETRANSMIT.UNACKED.MESSAGES
000154 105765 000002 3$: TSTB 2(R5) ; *(DB) 1557
000160 001511 BEQ 13$
000162 127627 000000 000005 CMPB @0(SP),#5 ; 1561
000170 001007 BNE 4$
000172 017600 000000 MOV @0(SP),R0 ; 1565
000176 105000 CLRB R0
000200 020027 001400 CMP R0,#1400
000204 001042 BNE 7$
000206 000430 BR 5$ ; 1567
000210 127627 000000 000201 4$: CMPB @0(SP),#201 ; 1561
000216 001035 BNE 7$
000220 116501 000073 MOVB 73(R5),R1 ; *(DB),NUM.NOT.TRANSMI 1582
000224 010102 MOV R1,R2 ; NUM.NOT.TRANSMI,NUM.NOT.ACKED 1583
000226 011600 MOV (SP),R0 ; 1585
000230 116000 000004 MOVB 4(R0),R0
000234 110065 000072 MOVB R0,72(R5) ; *,*(DB)
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 53
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (22)
000240 160001 SUB R0,R1 ; *,NUM.NOT.TRANSMI 1584
000242 116500 000074 MOVB 74(R5),R0 ; *(DB),* 1586
000246 160002 SUB R0,R2 ; *,NUM.NOT.ACKED
000250 120201 CMPB R2,R1 ; NUM.NOT.ACKED,NUM.NOT.TRANSMI 1587
000252 101411 BLOS 6$
000254 032715 001000 BIT #1000,(R5) ; *,DB 1592
000260 001017 BNE 8$
000262 032715 004000 BIT #4000,(R5) ; *,DB
000266 001011 BNE 7$
000270 052715 001000 5$: BIS #1000,(R5) ; *,DB 1594
000274 000406 BR 7$ ; 1572
000276 042715 005000 6$: BIC #5000,(R5) ; *,DB 1600
000302 105765 000012 TSTB 12(R5) ; *(DB) 1602
000306 001001 BNE 7$
000310 105015 CLRB (R5) ; DB
000312 032715 001000 7$: BIT #1000,(R5) ; *,DB 1611
000316 001411 BEQ 9$
000320 042715 001000 8$: BIC #1000,(R5) ; *,DB 1614
000324 052715 004000 BIS #4000,(R5) ; *,DB 1615
000330 105765 000012 TSTB 12(R5) ; *(DB) 1617
000334 001005 BNE 10$
000336 116515 000112 MOVB 112(R5),(R5) ; *(DB),DB 1618
000342 105765 000012 9$: TSTB 12(R5) ; *(DB) 1624
000346 001414 BEQ 12$
000350 011600 10$: MOV (SP),R0 ; 1627
000352 105760 000002 TSTB 2(R0)
000356 100010 BPL 12$
000360 012700 000040 MOV #40,R0 ; 1630
000364 060500 ADD R5,R0 ; DB,*
000366 005210 INC (R0)
000370 001001 BNE 11$
000372 005310 DEC (R0)
000374 116515 000112 11$: MOVB 112(R5),(R5) ; *(DB),DB 1631
000400 004767 000000V 12$: JSR PC,SEND.DATA ; 1636
000404 022626 13$: CMP (SP)+,(SP)+ ; 1481
000406 000207 RTS PC
; Routine Size: 132 words, Routine Base: $CODE$ + 2340
; Maximum stack depth per invocation: 3 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 54
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (23)
; 1638 routine DCPXME
; 1639
; 1640 !++
; 1641 ! FUNCTIONAL DESCRIPTION:
; 1642 !
; 1643 !
; 1644 ! FORMAL PARAMETERS:
; 1645 !
; 1646 (DB : ref block field (D_FIELDS),
; 1647 CCB : ref block field (C_FIELDS),
; 1648 MODIFIER)
; 1649 !
; 1650 ! IMPLICIT INPUTS:
; 1651 !
; 1652 ! IMPLICIT OUTPUTS:
; 1653 ! None
; 1654 !
; 1655 ! ROUTINE VALUE:
; 1656 !
; 1657 : MCB_DB_CCB_MOD novalue =
; 1658 !
; 1659 ! SIDE EFFECTS:
; 1660 ! None
; 1661 !--
; 1662
; 1663 begin
; P 1664 DISPATCH$ (
; P 1665 .MODIFIER,
; P 1666 TABLE$ ($DSPCR, 0,
; P 1667 (DLL$K_ENTER_MAINTENANCE, ENTER_MAINTENANCE),
; P 1668 (DLL$K_INITIALIZE_LINK, INITIALIZE_LINK),
; P 1669 (DLL$K_STOP_LINK, STOP_LINK),
; P 1670 (DLL$K_TRANSMIT, TRANSMIT),
; P 1671 (DLL$K_TRANSMIT_AND_TIME, TRANSMIT)),
; P 1672 (DB [D_TIM], .CCB),
; 1673 MCB_DB_CCB);
; 1674 end; !of routine DCPXME
000122 .PSECT $PLIT$, RO , D
000122 000000V P.AAH: .WORD TRANSMIT
000124 000000V .WORD INITIALIZE.LINK
000126 000000V .WORD STOP.LINK
000130 000000V .WORD ENTER.MAINTENANCE
000132 000000V .WORD TRANSMIT
.SBTTL DCPXME
002750 .PSECT $CODE$, RO
000000 004773 000122' DCPXME: JSR PC,@P.AAH(R3) ; *,*(MODIFIER) 1673
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 55
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (23)
000004 000207 RTS PC ; 1638
; Routine Size: 3 words, Routine Base: $CODE$ + 2750
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 56
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (24)
; 1675 routine ENTER_MAINTENANCE
; 1676
; 1677 !++
; 1678 ! FUNCTIONAL DESCRIPTION:
; 1679 !
; 1680 !
; 1681 ! FORMAL PARAMETERS:
; 1682 !
; 1683 (DB : ref block field (D_FIELDS),
; 1684 CCB : ref block field (C_FIELDS))
; 1685 !
; 1686 ! IMPLICIT INPUTS:
; 1687 !
; 1688 ! IMPLICIT OUTPUTS:
; 1689 ! None
; 1690 !
; 1691 ! ROUTINE VALUE:
; 1692 !
; 1693 : MCB_DB_CCB novalue =
; 1694 !
; 1695 ! SIDE EFFECTS:
; 1696 ! None
; 1697 !--
; 1698
; 1699 begin
; 1700 SET_LINK (DB [D_TIM], SS_HALTED);
; 1701 DB [DC_SET_REQUESTED_STATE] = TRUE;
; 1702 DB [S_REQUESTED_STATE] = SS_MAINTENANCE;
; 1703 SET_DEVICE (DB [D_TIM]);
; 1704 CCB [C_FNC] = FC_XCP;
; 1705 CCB [C_STS] = DLL$_SUCCESS;
; 1706 $MCB_SCHEDULE_CCB (.CCB);
; 1707 end; !of routine ENTER_MAINTENANCE
.SBTTL ENTER.MAINTENANCE
000000 010446 ENTER.MAINTENANCE:
MOV R4,-(SP) ; 1675
000002 005046 CLR -(SP) ; 1700
000004 004767 000000V JSR PC,SETLNK
000010 052765 004000 000006 BIS #4000,6(R5) ; *,*(DB) 1701
000016 112765 000004 000006 MOVB #4,6(R5) ; *,*(DB) 1702
000024 004767 000000V JSR PC,SETDEV ; 1703
000030 016600 000002 MOV 2(SP),R0 ; 1704
000034 112760 000014 000012 MOVB #14,12(R0)
000042 012760 100001 000014 MOV #-77777,14(R0) ; 1705
000050 010004 MOV R0,R4 ; 1706
000052 004767 000000G JSR PC,$SCHED
000056 022626 CMP (SP)+,(SP)+ ; 1675
000060 000207 RTS PC
; Routine Size: 25 words, Routine Base: $CODE$ + 2756
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 57
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (24)
; Maximum stack depth per invocation: 3 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 58
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (25)
; 1708 routine HEADER_CCB
; 1709
; 1710 !++
; 1711 ! FUNCTIONAL DESCRIPTION:
; 1712 !
; 1713 !
; 1714 ! FORMAL PARAMETERS:
; 1715 !
; 1716 (DB : ref block field (D_FIELDS),
; 1717 STACK_CCB : ref block field (C_FIELDS);
; 1718 CCB : ref block field (C_FIELDS))
; 1719 !
; 1720 ! IMPLICIT INPUTS:
; 1721 !
; 1722 ! IMPLICIT OUTPUTS:
; 1723 ! None
; 1724 !
; 1725 ! ROUTINE VALUE:
; 1726 !
; 1727 : DCP_DB_CCB_HDR =
; 1728 !
; 1729 ! SIDE EFFECTS:
; 1730 ! None
; 1731 !--
; 1732
; 1733 begin
; 1734
; 1735 if not $MCB_GET_CCB (CCB) then return 0;
; 1736
; 1737 CCB [C_CHN] = CCB [C_STK] = .STACK_CCB;
; 1738 CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
; 1739 CCB [C_PRM4] = 0;
; 1740 CCB [C_CNT] = 6;
; 1741 CCB [C_BIAS] = 0;
; 1742 CCB [C_ADDR] = ch$ptr (CCB [C_PRM1])
; 1743 end; !of routine HEADER_CCB
.GLOBL $CCBGT
.SBTTL HEADER.CCB
000000 010400 HEADER.CCB:
MOV R4,R0 ; *,STACK.CCB 1708
000002 004767 000000G JSR PC,$CCBGT ; 1735
000006 103402 BCS 1$
000010 010401 MOV R4,R1 ; $MCB$R4,CCB
000012 000402 BR 2$
000014 005000 1$: CLR R0
000016 000423 BR 3$
000020 010061 000004 2$: MOV R0,4(R1) ; STACK.CCB,*(CCB) 1737
000024 010061 000002 MOV R0,2(R1) ; STACK.CCB,*(CCB)
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 59
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (25)
000030 016561 000144 000010 MOV 144(R5),10(R1) ; *(DB),*(CCB) 1738
000036 005061 000032 CLR 32(R1) ; *(CCB) 1739
000042 012761 000006 000022 MOV #6,22(R1) ; *,*(CCB) 1740
000050 005061 000016 CLR 16(R1) ; *(CCB) 1741
000054 010100 MOV R1,R0 ; CCB,* 1742
000056 062700 000024 ADD #24,R0
000062 010061 000020 MOV R0,20(R1) ; *,*(CCB)
000066 010104 3$: MOV R1,R4 ; CCB,* 1708
000070 000207 RTS PC
; Routine Size: 29 words, Routine Base: $CODE$ + 3040
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 60
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (26)
; 1744 routine HEADER_FORMAT_ERROR
; 1745
; 1746 !++
; 1747 ! FUNCTIONAL DESCRIPTION:
; 1748 !
; 1749 !
; 1750 ! FORMAL PARAMETERS:
; 1751 !
; 1752 (DB : ref block field (D_FIELDS))
; 1753 !
; 1754 ! IMPLICIT INPUTS:
; 1755 !
; 1756 ! IMPLICIT OUTPUTS:
; 1757 ! None
; 1758 !
; 1759 ! ROUTINE VALUE:
; 1760 !
; 1761 : DCP_DB novalue =
; 1762 !
; 1763 ! SIDE EFFECTS:
; 1764 ! None
; 1765 !--
; 1766
; 1767 begin
; 1768
; 1769 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 1770 set
; 1771 [SS_ISTRT] :
; 1772 begin
; 1773 DB [SS_SEND_START] = TRUE;
; 1774 DB [SS_SEND_SELECT] = TRUE;
; 1775 end;
; 1776 [SS_ASTRT] :
; 1777 begin
; 1778 DB [SS_SEND_STACK] = TRUE;
; 1779 DB [SS_SEND_SELECT] = TRUE;
; 1780 end;
; 1781 [SS_RUNNING] :
; 1782 begin
; 1783 DB [SS_SEND_NAK] = TRUE;
; 1784 DB [S_PENDING_NAK_REASON] = RN_HFE;
; 1785 DB [SS_SEND_ACK] = FALSE;
; 1786 COUNTER_INCREMENT (DB, L_REMOTE_STATION_ERRORS);
; 1787 COUNTER_INCREMENT (DB, LR_N17);
; P 1788 $NM_DLL_EVENT (6, .DB [S_CIRCUIT_ENTITY],
; 1789 PARAMETER_HI (2, 6, DB [L_HEADER]));
; 1790 end;
; 1791 [inrange] :
; 1792 NO_OPERATION;
; 1793 tes;
; 1794
; 1795 end; !of routine HEADER_FORMAT_ERROR
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 61
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (26)
.GLOBL $IC8, $DPHI
.SBTTL HEADER.FORMAT.ERROR
000000 010546 HEADER.FORMAT.ERROR:
MOV R5,-(SP) ; 1744
000002 010502 MOV R5,R2 ; *,DB
000004 012700 000002 MOV #2,R0 ; 1769
000010 060200 ADD R2,R0 ; DB,*
000012 111001 MOVB (R0),R1
000014 006301 ASL R1
000016 066107 000134' ADD P.AAI(R1),PC ; Case dispatch
000022 052710 001000 1$: BIS #1000,(R0) ; 1773
000026 000402 BR 3$ ; 1774
000030 052710 000400 2$: BIS #400,(R0) ; 1778
000034 052710 020000 3$: BIS #20000,(R0) ; 1779
000040 000442 BR 5$ ; 1769
000042 052710 002000 4$: BIS #2000,(R0) ; 1783
000046 112762 000021 000077 MOVB #21,77(R2) ; *,*(DB) 1784
000054 042710 010000 BIC #10000,(R0) ; 1785
000060 012700 000062 MOV #62,R0 ; 1786
000064 060200 ADD R2,R0 ; DB,*
000066 004767 000000G JSR PC,$IC8
000072 052762 001000 000062 BIS #1000,62(R2) ; *,*(DB) 1787
000100 004767 000000G JSR PC,$NLBEG ; 1789
000104 012746 000002 MOV #2,-(SP)
000110 010205 MOV R2,R5 ; DB,*
000112 062705 000154 ADD #154,R5
000116 012700 000006 MOV #6,R0
000122 010501 MOV R5,R1
000124 004767 000000G JSR PC,$DPHI
000130 012700 000506 MOV #506,R0
000134 016201 000126 MOV 126(R2),R1 ; *(DB),*
000140 004767 000000G JSR PC,$NLEND
000144 005726 TST (SP)+ ; 1782
000146 012605 5$: MOV (SP)+,R5 ; 1744
000150 000207 RTS PC
; Routine Size: 53 words, Routine Base: $CODE$ + 3132
; Maximum stack depth per invocation: 3 words
000134 .PSECT $PLIT$, RO , D
P.AAI: ; CASE Table for HEADER.FORMAT.E+0016 1769
000134 000124 .WORD 124 ; [5$]
000136 000000 .WORD 0 ; [1$]
000140 000006 .WORD 6 ; [2$]
000142 000020 .WORD 20 ; [4$]
000144 000124 .WORD 124 ; [5$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 62
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (26)
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 63
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (27)
; 1796 routine IGNORE_MESSAGE
; 1797
; 1798 !++
; 1799 ! FUNCTIONAL DESCRIPTION:
; 1800 !
; 1801 !
; 1802 ! FORMAL PARAMETERS:
; 1803 !
; 1804 (DB : ref block field (D_FIELDS))
; 1805 !
; 1806 ! IMPLICIT INPUTS:
; 1807 !
; 1808 ! IMPLICIT OUTPUTS:
; 1809 ! None
; 1810 !
; 1811 ! ROUTINE VALUE:
; 1812 !
; 1813 : DCP_DB novalue =
; 1814 !
; 1815 ! SIDE EFFECTS:
; 1816 ! None
; 1817 !--
; 1818
; 1819 begin
; 1820
; 1821 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 1822 set
; 1823 [SS_ISTRT] :
; 1824 begin
; 1825 DB [SS_SEND_START] = TRUE;
; 1826 DB [SS_SEND_SELECT] = TRUE;
; 1827 end;
; 1828 [SS_ASTRT] :
; 1829 begin
; 1830 DB [SS_SEND_STACK] = TRUE;
; 1831 DB [SS_SEND_SELECT] = TRUE;
; 1832 end;
; 1833 [inrange] :
; 1834 NO_OPERATION;
; 1835 tes;
; 1836
; 1837 end; !of routine IGNORE_MESSAGE
.SBTTL IGNORE.MESSAGE
003304 .PSECT $CODE$, RO
000000 012700 000002 IGNORE.MESSAGE:
MOV #2,R0 ; 1821
000004 060500 ADD R5,R0 ; DB,*
000006 111001 MOVB (R0),R1
000010 006301 ASL R1
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 64
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (27)
000012 066107 000146' ADD P.AAJ(R1),PC ; Case dispatch
000016 052710 001000 1$: BIS #1000,(R0) ; 1825
000022 000402 BR 3$ ; 1826
000024 052710 000400 2$: BIS #400,(R0) ; 1830
000030 052710 020000 3$: BIS #20000,(R0) ; 1831
000034 000207 4$: RTS PC ; 1796
; Routine Size: 15 words, Routine Base: $CODE$ + 3304
; Maximum stack depth per invocation: 0 words
000146 .PSECT $PLIT$, RO , D
P.AAJ: ; CASE Table for IGNORE.MESSAGE+0012 1821
000146 000016 .WORD 16 ; [4$]
000150 000000 .WORD 0 ; [1$]
000152 000006 .WORD 6 ; [2$]
000154 000016 .WORD 16 ; [4$]
000156 000016 .WORD 16 ; [4$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 65
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (28)
; 1838 routine INITIALIZE_LINK
; 1839
; 1840 !++
; 1841 ! FUNCTIONAL DESCRIPTION:
; 1842 !
; 1843 !
; 1844 ! FORMAL PARAMETERS:
; 1845 !
; 1846 (DB : ref block field (D_FIELDS),
; 1847 CCB : ref block field (C_FIELDS))
; 1848 !
; 1849 ! IMPLICIT INPUTS:
; 1850 !
; 1851 ! IMPLICIT OUTPUTS:
; 1852 ! None
; 1853 !
; 1854 ! ROUTINE VALUE:
; 1855 !
; 1856 : MCB_DB_CCB novalue =
; 1857 !
; 1858 ! SIDE EFFECTS:
; 1859 ! None
; 1860 !--
; 1861
; 1862 begin
; 1863 SET_LINK (DB [D_TIM], SS_HALTED);
; 1864 DB [DC_SET_REQUESTED_STATE] = TRUE;
; 1865 DB [S_REQUESTED_STATE] = SS_RUNNING;
; 1866 SET_DEVICE (DB [D_TIM]);
; 1867 CCB [C_FNC] = FC_XCP;
; 1868 CCB [C_STS] = DLL$_SUCCESS;
; 1869 $MCB_SCHEDULE_CCB (.CCB);
; 1870 end; !of routine INITIALIZE_LINK
.SBTTL INITIALIZE.LINK
003342 .PSECT $CODE$, RO
000000 010446 INITIALIZE.LINK:
MOV R4,-(SP) ; 1838
000002 005046 CLR -(SP) ; 1863
000004 004767 000000V JSR PC,SETLNK
000010 052765 004000 000006 BIS #4000,6(R5) ; *,*(DB) 1864
000016 112765 000003 000006 MOVB #3,6(R5) ; *,*(DB) 1865
000024 004767 000000V JSR PC,SETDEV ; 1866
000030 016600 000002 MOV 2(SP),R0 ; 1867
000034 112760 000014 000012 MOVB #14,12(R0)
000042 012760 100001 000014 MOV #-77777,14(R0) ; 1868
000050 010004 MOV R0,R4 ; 1869
000052 004767 000000G JSR PC,$SCHED
000056 022626 CMP (SP)+,(SP)+ ; 1838
000060 000207 RTS PC
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 66
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (28)
; Routine Size: 25 words, Routine Base: $CODE$ + 3342
; Maximum stack depth per invocation: 3 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 67
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (29)
; 1871 routine MESSAGE_LENGTH
; 1872
; 1873 !++
; 1874 ! FUNCTIONAL DESCRIPTION:
; 1875 !
; 1876 !
; 1877 ! FORMAL PARAMETERS:
; 1878 !
; 1879 (CCB : ref block field (C_FIELDS))
; 1880 !
; 1881 ! IMPLICIT INPUTS:
; 1882 !
; 1883 ! IMPLICIT OUTPUTS:
; 1884 ! None
; 1885 !
; 1886 ! ROUTINE VALUE:
; 1887 !
; 1888 : DCP_CCB =
; 1889 !
; 1890 ! SIDE EFFECTS:
; 1891 ! None
; 1892 !--
; 1893
; 1894 begin
; 1895
; 1896 local
; 1897 CNT;
; 1898
; 1899 CCB = .CCB [C_CHN];
; 1900 CNT = 0;
; 1901
; 1902 do (CNT = .CNT + .CCB [C_CNT]) while (CCB = .CCB [C_CHN]) neqa 0;
; 1903
; 1904 .CNT
; 1905 end; !of routine MESSAGE_LENGTH
.SBTTL MESSAGE.LENGTH
000000 010446 MESSAGE.LENGTH:
MOV R4,-(SP) ; 1871
000002 016404 000002 MOV 2(R4),R4 ; *(CCB),CCB 1899
000006 005000 CLR R0 ; CNT 1900
000010 066400 000022 1$: ADD 22(R4),R0 ; *(CCB),CNT 1902
000014 016404 000002 MOV 2(R4),R4 ; *(CCB),CCB
000020 001373 BNE 1$
000022 012604 MOV (SP)+,R4 ; 1871
000024 000207 RTS PC
; Routine Size: 11 words, Routine Base: $CODE$ + 3424
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 68
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (30)
; 1906 routine PROCESS_ACK_MESSAGE
; 1907
; 1908 !++
; 1909 ! FUNCTIONAL DESCRIPTION:
; 1910 !
; 1911 !
; 1912 ! FORMAL PARAMETERS:
; 1913 !
; 1914 (DB : ref block field (D_FIELDS))
; 1915 !
; 1916 ! IMPLICIT INPUTS:
; 1917 !
; 1918 ! IMPLICIT OUTPUTS:
; 1919 ! None
; 1920 !
; 1921 ! ROUTINE VALUE:
; 1922 !
; 1923 : DCP_DB novalue =
; 1924 !
; 1925 ! SIDE EFFECTS:
; 1926 ! None
; 1927 !--
; 1928
; 1929 begin
; 1930
; 1931 bind
; 1932 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 1933
; 1934 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 1935 set
; 1936 [SS_ISTRT] :
; 1937 return IGNORE_MESSAGE (DB [D_TIM]);
; 1938 [SS_ASTRT] :
; 1939
; 1940 if .HEADER [H_RESP] eqlu 0
; 1941 then
; 1942 begin
; 1943 CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_RUNNING, 1);
; 1944 DB [S_TRANSMIT_THRESHOLD] = 7;
; 1945 DB [S_RECEIVE_THRESHOLD] = 7;
; 1946
; 1947 if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
; 1948
; 1949 end
; 1950 else
; 1951 return IGNORE_MESSAGE (DB [D_TIM]);
; 1952
; 1953 [SS_RUNNING] :
; 1954
; 1955 if CKACK (DB [D_TIM])
; 1956 then
; 1957 CKREP (DB [D_TIM])
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 69
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (30)
; 1958 else
; 1959 return IGNORE_MESSAGE (DB [D_TIM]);
; 1960
; 1961 [SS_MAINTENANCE] :
; 1962 NO_OPERATION;
; 1963 [inrange] :
; 1964 return NO_OPERATION;
; 1965 tes;
; 1966
; 1967 PROCESS_SELECT_FLAG (DB [D_TIM]);
; 1968 end; !of routine PROCESS_ACK_MESSAGE
.SBTTL PROCESS.ACK.MESSAGE
000000 116500 000002 PROCESS.ACK.MESSAGE:
MOVB 2(R5),R0 ; *(DB),* 1934
000004 006300 ASL R0
000006 066007 000160' ADD P.AAK(R0),PC ; Case dispatch
000012 000434 1$: BR 5$ ; 1937
000014 105765 000157 2$: TSTB 157(R5) ; *(DB) 1940
000020 001031 BNE 5$
000022 012746 000003 MOV #3,-(SP) ; 1943
000026 012746 000001 MOV #1,-(SP)
000032 004767 175540 JSR PC,CHANGE.PROTOCOL.STATE
000036 112765 000007 000016 MOVB #7,16(R5) ; *,*(DB) 1944
000044 112765 000007 000015 MOVB #7,15(R5) ; *,*(DB) 1945
000052 105765 000012 TSTB 12(R5) ; *(DB) 1947
000056 001001 BNE 3$
000060 105015 CLRB (R5) ; DB
000062 022626 3$: CMP (SP)+,(SP)+ ; 1942
000064 000412 BR 6$ ; 1940
000066 004767 175604 4$: JSR PC,CKACK ; 1955
000072 006000 ROR R0
000074 103003 BCC 5$
000076 004767 175666 JSR PC,CKREP ; 1957
000102 000403 BR 6$ ; 1955
000104 004767 177522 5$: JSR PC,IGNORE.MESSAGE ; 1959
000110 000207 RTS PC
000112 004767 000000V 6$: JSR PC,PROCESS.SELECT.FLAG ; 1967
000116 000207 7$: RTS PC ; 1906
; Routine Size: 40 words, Routine Base: $CODE$ + 3452
; Maximum stack depth per invocation: 3 words
000160 .PSECT $PLIT$, RO , D
P.AAK: ; CASE Table for PROCESS.ACK.MES+0006 1934
000160 000104 .WORD 104 ; [7$]
000162 000072 .WORD 72 ; [5$]
000164 000002 .WORD 2 ; [2$]
000166 000054 .WORD 54 ; [4$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 70
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (30)
000170 000100 .WORD 100 ; [6$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 71
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (31)
; 1969 routine PROCESS_CONTROL_MESSAGE
; 1970
; 1971 !++
; 1972 ! FUNCTIONAL DESCRIPTION:
; 1973 !
; 1974 !
; 1975 ! FORMAL PARAMETERS:
; 1976 !
; 1977 (DB : ref block field (D_FIELDS),
; 1978 CCB : ref block field (C_FIELDS))
; 1979 !
; 1980 ! IMPLICIT INPUTS:
; 1981 !
; 1982 ! IMPLICIT OUTPUTS:
; 1983 ! None
; 1984 !
; 1985 ! ROUTINE VALUE:
; 1986 !
; 1987 : DCP_DB_CCBR novalue =
; 1988 !
; 1989 ! SIDE EFFECTS:
; 1990 ! None
; 1991 !--
; 1992
; 1993 begin
; 1994
; 1995 bind
; 1996 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 1997
; 1998 CASE .HEADER [H_TYPE] from MT_LOW to MT_HIGH of
; 1999 set
; 2000 [MT_STR] : PROCESS_START_MESSAGE (DB [D_TIM]);
; 2001 [MT_STK] : PROCESS_STACK_MESSAGE (DB [D_TIM]);
; 2002 [MT_ACK] : PROCESS_ACK_MESSAGE (DB [D_TIM]);
; 2003 [MT_NAK] : PROCESS_NAK_MESSAGE (DB [D_TIM]);
; 2004 [MT_REP] : PROCESS_REP_MESSAGE (DB [D_TIM]);
; 2005 [inrange, outrange] : HEADER_FORMAT_ERROR (DB [D_TIM]);
; 2006 tes;
; 2007
; 2008 STARCE (DB [D_TIM], .CCB);
; 2009 end; !of routine PROCESS_CONTROL_MESSAGE
.SBTTL PROCESS.CONTROL.MESSAGE
003572 .PSECT $CODE$, RO
000000 010446 PROCESS.CONTROL.MESSAGE:
MOV R4,-(SP) ; 1969
000002 005000 CLR R0 ; 1998
000004 156500 000155 BISB 155(R5),R0 ; *(DB),*
000010 005300 DEC R0
000012 020027 000006 CMP R0,#6
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 72
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (31)
000016 101003 BHI 1$
000020 006300 ASL R0
000022 066007 000172' ADD P.AAL(R0),PC ; Case dispatch
000026 004767 177306 1$: JSR PC,HEADER.FORMAT.ERROR ; 2005
000032 000416 BR 7$ ; 1998
000034 004767 000000V 2$: JSR PC,PROCESS.START.MESSAGE ; 2000
000040 000413 BR 7$ ; 1998
000042 004767 000000V 3$: JSR PC,PROCESS.STACK.MESSAGE ; 2001
000046 000410 BR 7$ ; 1998
000050 004767 177604 4$: JSR PC,PROCESS.ACK.MESSAGE ; 2002
000054 000405 BR 7$ ; 1998
000056 004767 000000V 5$: JSR PC,PROCESS.NAK.MESSAGE ; 2003
000062 000402 BR 7$ ; 1998
000064 004767 000000V 6$: JSR PC,PROCESS.REP.MESSAGE ; 2004
000070 011604 7$: MOV (SP),R4 ; 2008
000072 004767 000000V JSR PC,STARCE
000076 005726 TST (SP)+ ; 1969
000100 000207 RTS PC
; Routine Size: 33 words, Routine Base: $CODE$ + 3572
; Maximum stack depth per invocation: 2 words
000172 .PSECT $PLIT$, RO , D
P.AAL: ; CASE Table for PROCESS.CONTROL+0022 1998
000172 000022 .WORD 22 ; [4$]
000174 000030 .WORD 30 ; [5$]
000176 000036 .WORD 36 ; [6$]
000200 000000 .WORD 0 ; [1$]
000202 000000 .WORD 0 ; [1$]
000204 000006 .WORD 6 ; [2$]
000206 000014 .WORD 14 ; [3$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 73
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (32)
; 2010 routine PROCESS_DATA_MESSAGE
; 2011
; 2012 !++
; 2013 ! FUNCTIONAL DESCRIPTION:
; 2014 !
; 2015 !
; 2016 ! FORMAL PARAMETERS:
; 2017 !
; 2018 (DB : ref block field (D_FIELDS),
; 2019 CCB : ref block field (C_FIELDS))
; 2020 !
; 2021 ! IMPLICIT INPUTS:
; 2022 !
; 2023 ! IMPLICIT OUTPUTS:
; 2024 ! None
; 2025 !
; 2026 ! ROUTINE VALUE:
; 2027 !
; 2028 : DCP_DB_CCBR novalue =
; 2029 !
; 2030 ! SIDE EFFECTS:
; 2031 ! None
; 2032 !--
; 2033
; 2034 begin
; 2035
; 2036 bind
; 2037 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 2038
; 2039 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 2040 set
; 2041 [SS_ASTRT] :
; 2042
; 2043 if .HEADER [H_RESP] eqlu 0
; 2044 then
; 2045 begin
; 2046
; 2047 if
; 2048 begin
; 2049
; 2050 local
; 2051 NEW_NUM;
; 2052
; 2053 NEW_NUM = .DB [S_R] + 1;
; 2054 .HEADER [H_NUM] eql .NEW_NUM <0, 8>
; 2055 end
; 2056 then
; 2057 begin
; 2058
; 2059 if .CCB [C_STS] geq 0
; 2060 then
; 2061 begin
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 74
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (32)
; 2062 DB [S_R] = .DB [S_R] + 1;
; 2063 COUNTER_INCREMENT (DB, S_DATA_BLOCKS_RECEIVED);
; 2064 COUNTER_ADD (DB, S_BYTES_RECEIVED, .CCB [C_CNT]);
; 2065 DB [SS_SEND_ACK] = TRUE;
; 2066 DB [SS_SEND_NAK] = FALSE;
; 2067 DB [S_RECEIVE_THRESHOLD] = 7;
; 2068 CCB [C_MOD] = DLL$K_DATA_RECEIVED;
; 2069 SCHEDULE_RECEIVE (.CCB, DB [D_TIM], DLL$_SUCCESS);
; 2070 end
; 2071 else
; 2072 begin
; 2073 RECORD_DRIVER_ERROR (DB [D_TIM], .CCB);
; 2074 STARCE (DB [D_TIM], .CCB);
; 2075 end;
; 2076
; 2077 end
; 2078 else
; 2079 STARCE (DB [D_TIM], .CCB);
; 2080
; 2081 end
; 2082 else
; 2083 STARCE (DB [D_TIM], .CCB);
; 2084
; 2085 [SS_RUNNING] :
; 2086 begin
; 2087
; 2088 if CKACK (DB [D_TIM])
; 2089 then
; 2090 CKREP (DB [D_TIM]);
; 2091
; 2092 if
; 2093 begin
; 2094
; 2095 local
; 2096 NEW_NUM;
; 2097
; 2098 NEW_NUM = .DB [S_R] + 1;
; 2099 .HEADER [H_NUM] eql .NEW_NUM <0, 8>
; 2100 end
; 2101 then
; 2102 begin
; 2103
; 2104 if .CCB [C_STS] geq 0
; 2105 then
; 2106 begin
; 2107 DB [S_R] = .DB [S_R] + 1;
; 2108 COUNTER_INCREMENT (DB, S_DATA_BLOCKS_RECEIVED);
; 2109 COUNTER_ADD (DB, S_BYTES_RECEIVED, .CCB [C_CNT]);
; 2110 DB [SS_SEND_ACK] = TRUE;
; 2111 DB [SS_SEND_NAK] = FALSE;
; 2112 DB [S_RECEIVE_THRESHOLD] = 7;
; 2113 CCB [C_MOD] = DLL$K_DATA_RECEIVED;
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 75
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (32)
; 2114 SCHEDULE_RECEIVE (.CCB, DB [D_TIM], DLL$_SUCCESS);
; 2115 end
; 2116 else
; 2117 begin
; 2118 RECORD_DRIVER_ERROR (DB [D_TIM], .CCB);
; 2119 STARCE (DB [D_TIM], .CCB);
; 2120 end;
; 2121
; 2122 end
; 2123 else
; 2124 STARCE (DB [D_TIM], .CCB);
; 2125
; 2126 end;
; 2127 [inrange] :
; 2128 STARCE (DB [D_TIM], .CCB);
; 2129 tes;
; 2130
; 2131 PROCESS_SELECT_FLAG (DB [D_TIM]);
; 2132 end; !of routine PROCESS_DATA_MESSAGE
.SBTTL PROCESS.DATA.MESSAGE
003674 .PSECT $CODE$, RO
000000 010546 PROCESS.DATA.MESSAGE:
MOV R5,-(SP) ; 2010
000002 005746 TST -(SP)
000004 010446 MOV R4,-(SP)
000006 010566 000002 MOV R5,2(SP)
000012 012700 000154 MOV #154,R0 ; 2034
000016 060500 ADD R5,R0
000020 010046 MOV R0,-(SP)
000022 012700 000002 MOV #2,R0 ; 2039
000026 060500 ADD R5,R0
000030 010046 MOV R0,-(SP)
000032 111000 MOVB (R0),R0
000034 006300 ASL R0
000036 066007 000210' ADD P.AAM(R0),PC ; Case dispatch
000042 016600 000002 1$: MOV 2(SP),R0 ; 2043
000046 105760 000003 TSTB 3(R0)
000052 001136 BNE 6$
000054 005000 CLR R0 ; NEW.NUM 2053
000056 016601 000006 MOV 6(SP),R1
000062 156100 000070 BISB 70(R1),R0 ; *,NEW.NUM
000066 005200 INC R0 ; NEW.NUM
000070 016601 000002 MOV 2(SP),R1 ; 2054
000074 126100 000004 CMPB 4(R1),R0 ; *,NEW.NUM
000100 001123 BNE 6$
000102 016600 000004 MOV 4(SP),R0 ; 2059
000106 005760 000014 TST 14(R0)
000112 002510 BLT 5$
000114 000432 BR 4$ ; 2062
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 76
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (32)
000116 016605 000006 2$: MOV 6(SP),R5 ; 2088
000122 004767 175326 JSR PC,CKACK
000126 006000 ROR R0
000130 103004 BCC 3$
000132 016605 000006 MOV 6(SP),R5 ; 2090
000136 004767 175404 JSR PC,CKREP
000142 005000 3$: CLR R0 ; NEW.NUM 2098
000144 016601 000006 MOV 6(SP),R1
000150 156100 000070 BISB 70(R1),R0 ; *,NEW.NUM
000154 005200 INC R0 ; NEW.NUM
000156 016601 000002 MOV 2(SP),R1 ; 2099
000162 126100 000004 CMPB 4(R1),R0 ; *,NEW.NUM
000166 001070 BNE 6$
000170 016600 000004 MOV 4(SP),R0 ; 2104
000174 005760 000014 TST 14(R0)
000200 002455 BLT 5$
000202 016601 000006 4$: MOV 6(SP),R1 ; 2107
000206 105261 000070 INCB 70(R1)
000212 010105 MOV R1,R5 ; 2108
000214 062705 000030 ADD #30,R5
000220 010500 MOV R5,R0
000222 004767 000000G JSR PC,$IC32
000226 016605 000006 MOV 6(SP),R5 ; 2109
000232 062705 000020 ADD #20,R5
000236 010500 MOV R5,R0
000240 016602 000004 MOV 4(SP),R2
000244 016201 000022 MOV 22(R2),R1
000250 004767 000000G JSR PC,$AC32
000254 052776 010000 000000 BIS #10000,@0(SP) ; 2110
000262 042776 002000 000000 BIC #2000,@0(SP) ; 2111
000270 016600 000006 MOV 6(SP),R0 ; 2112
000274 112760 000007 000015 MOVB #7,15(R0)
000302 016600 000004 MOV 4(SP),R0 ; 2113
000306 105060 000013 CLRB 13(R0)
000312 012746 100001 MOV #-77777,-(SP) ; 2114
000316 010004 MOV R0,R4
000320 016605 000010 MOV 10(SP),R5
000324 004767 000000V JSR PC,SCHEDULE.RECEIVE
000330 005726 TST (SP)+ ; 2106
000332 000414 BR 7$ ; 2104
000334 016605 000006 5$: MOV 6(SP),R5 ; 2118
000340 016604 000004 MOV 4(SP),R4
000344 004767 000000V JSR PC,RECORD.DRIVER.ERROR
000350 016605 000006 6$: MOV 6(SP),R5 ; 2128
000354 016604 000004 MOV 4(SP),R4
000360 004767 000000V JSR PC,STARCE
000364 016605 000006 7$: MOV 6(SP),R5 ; 2131
000370 004767 000000V JSR PC,PROCESS.SELECT.FLAG
000374 062706 000010 ADD #10,SP ; 2010
000400 012605 MOV (SP)+,R5
000402 000207 RTS PC
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 77
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (32)
; Routine Size: 130 words, Routine Base: $CODE$ + 3674
; Maximum stack depth per invocation: 7 words
000210 .PSECT $PLIT$, RO , D
P.AAM: ; CASE Table for PROCESS.DATA.ME+0036 2039
000210 000306 .WORD 306 ; [6$]
000212 000306 .WORD 306 ; [6$]
000214 000000 .WORD 0 ; [1$]
000216 000054 .WORD 54 ; [2$]
000220 000306 .WORD 306 ; [6$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 78
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (33)
; 2133 routine PROCESS_MAINTENANCE_MESSAGE
; 2134
; 2135 !++
; 2136 ! FUNCTIONAL DESCRIPTION:
; 2137 !
; 2138 !
; 2139 ! FORMAL PARAMETERS:
; 2140 !
; 2141 (DB : ref block field (D_FIELDS),
; 2142 CCB : ref block field (C_FIELDS))
; 2143 !
; 2144 ! IMPLICIT INPUTS:
; 2145 !
; 2146 ! IMPLICIT OUTPUTS:
; 2147 ! None
; 2148 !
; 2149 ! ROUTINE VALUE:
; 2150 !
; 2151 : DCP_DB_CCBR novalue =
; 2152 !
; 2153 ! SIDE EFFECTS:
; 2154 ! None
; 2155 !--
; 2156
; 2157 begin
; 2158
; 2159 bind
; 2160 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 2161
; 2162 if .DB [L_PROTOCOL] eql DP_DMC
; 2163 then
; 2164 begin
; 2165 HEADER [H_SELECT] = TRUE;
; 2166 HEADER [H_QSYNC] = TRUE;
; 2167 end;
; 2168
; 2169 if not .HEADER [H_SELECT]
; 2170 then
; 2171 HEADER_FORMAT_ERROR (DB [D_TIM]);
; 2172
; 2173 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 2174 set
; 2175 [SS_ISTRT, SS_ASTRT, SS_RUNNING] :
; 2176 begin
; 2177 $NM_DLL_EVENT (96^6 + 13, .DB [S_CIRCUIT_ENTITY]);
; 2178 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_MAINTENANCE_RECEIVED);
; 2179 SET_LINK (DB [D_TIM], DB [S_REQUESTED_STATE] = SS_HALTED);
; 2180 SET_DEVICE (DB [D_TIM]);
; 2181 STARCE (DB [D_TIM], .CCB);
; 2182 end;
; 2183 [SS_MAINTENANCE] :
; 2184 begin
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 79
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (33)
; 2185
; 2186 if .CCB [C_STS] geq 0
; 2187 then
; 2188 begin
; 2189 DB [S_RECEIVE_THRESHOLD] = 7;
; 2190 CCB [C_MOD] = DLL$K_MAINTENANCE_RECEIVED;
; 2191 SCHEDULE_RECEIVE (.CCB, DB [D_TIM], DLL$_SUCCESS);
; 2192 end
; 2193 else
; 2194 begin
; 2195 COUNTER_INCREMENT (DB, L_MAINTENANCE_BCC_ERRORS);
; 2196 STARCE (DB [D_TIM], .CCB);
; 2197 end;
; 2198
; 2199 end;
; 2200 [inrange] :
; 2201 STARCE (DB [D_TIM], .CCB);
; 2202 tes;
; 2203
; 2204 PROCESS_SELECT_FLAG (DB [D_TIM]);
; 2205 end; !of routine PROCESS_MAINTENANCE_MESSAGE
.SBTTL PROCESS.MAINTENANCE.MESSAGE
004300 .PSECT $CODE$, RO
000000 010546 PROCESS.MAINTENANCE.MESSAGE:
MOV R5,-(SP) ; 2133
000002 005746 TST -(SP)
000004 010446 MOV R4,-(SP)
000006 010566 000002 MOV R5,2(SP)
000012 010500 MOV R5,R0 ; 2162
000014 126027 000010 000004 CMPB 10(R0),#4
000022 001003 BNE 1$
000024 152760 000300 000156 BISB #300,156(R0) ; 2166
000032 016600 000002 1$: MOV 2(SP),R0 ; 2169
000036 105760 000156 TSTB 156(R0)
000042 100403 BMI 2$
000044 010005 MOV R0,R5 ; 2171
000046 004767 176560 JSR PC,HEADER.FORMAT.ERROR
000052 016601 000002 2$: MOV 2(SP),R1 ; 2173
000056 116100 000002 MOVB 2(R1),R0
000062 006300 ASL R0
000064 066007 000222' ADD P.AAN(R0),PC ; Case dispatch
000070 004767 000000G 3$: JSR PC,$NLBEG ; 2177
000074 012700 014515 MOV #14515,R0
000100 016602 000002 MOV 2(SP),R2
000104 016201 000126 MOV 126(R2),R1
000110 004767 000000G JSR PC,$NLEND
000114 016605 000002 MOV 2(SP),R5 ; 2178
000120 012703 100142 MOV #-77636,R3
000124 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 80
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (33)
000130 016600 000002 MOV 2(SP),R0 ; 2179
000134 105060 000006 CLRB 6(R0)
000140 005046 CLR -(SP)
000142 010005 MOV R0,R5
000144 004767 000000V JSR PC,SETLNK
000150 016605 000004 MOV 4(SP),R5 ; 2180
000154 004767 000000V JSR PC,SETDEV
000160 016605 000004 MOV 4(SP),R5 ; 2181
000164 016604 000002 MOV 2(SP),R4
000170 004767 000000V JSR PC,STARCE
000174 000424 BR 5$ ; 2176
000176 011600 4$: MOV (SP),R0 ; 2186
000200 005760 000014 TST 14(R0)
000204 002422 BLT 6$
000206 016600 000002 MOV 2(SP),R0 ; 2189
000212 112760 000007 000015 MOVB #7,15(R0)
000220 011600 MOV (SP),R0 ; 2190
000222 112760 000002 000013 MOVB #2,13(R0)
000230 012746 100001 MOV #-77777,-(SP) ; 2191
000234 010004 MOV R0,R4
000236 016605 000004 MOV 4(SP),R5
000242 004767 000000V JSR PC,SCHEDULE.RECEIVE
000246 005726 5$: TST (SP)+ ; 2188
000250 000414 BR 8$ ; 2186
000252 016605 000002 6$: MOV 2(SP),R5 ; 2195
000256 062705 000067 ADD #67,R5
000262 010500 MOV R5,R0
000264 004767 000000G JSR PC,$IC8
000270 016605 000002 7$: MOV 2(SP),R5 ; 2201
000274 011604 MOV (SP),R4
000276 004767 000000V JSR PC,STARCE
000302 016605 000002 8$: MOV 2(SP),R5 ; 2204
000306 004767 000000V JSR PC,PROCESS.SELECT.FLAG
000312 022626 CMP (SP)+,(SP)+ ; 2133
000314 012605 MOV (SP)+,R5
000316 000207 RTS PC
; Routine Size: 104 words, Routine Base: $CODE$ + 4300
; Maximum stack depth per invocation: 5 words
000222 .PSECT $PLIT$, RO , D
P.AAN: ; CASE Table for PROCESS.MAINTEN+0064 2173
000222 000200 .WORD 200 ; [7$]
000224 000000 .WORD 0 ; [3$]
000226 000000 .WORD 0 ; [3$]
000230 000000 .WORD 0 ; [3$]
000232 000106 .WORD 106 ; [4$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 81
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (34)
; 2206 routine PROCESS_NAK_MESSAGE
; 2207
; 2208 !++
; 2209 ! FUNCTIONAL DESCRIPTION:
; 2210 !
; 2211 !
; 2212 ! FORMAL PARAMETERS:
; 2213 !
; 2214 (DB : ref block field (D_FIELDS))
; 2215 !
; 2216 ! IMPLICIT INPUTS:
; 2217 !
; 2218 ! IMPLICIT OUTPUTS:
; 2219 ! None
; 2220 !
; 2221 ! ROUTINE VALUE:
; 2222 !
; 2223 : DCP_DB novalue =
; 2224 !
; 2225 ! SIDE EFFECTS:
; 2226 ! None
; 2227 !--
; 2228
; 2229 begin
; 2230
; 2231 bind
; 2232 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 2233
; 2234 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 2235 set
; 2236 [SS_ISTRT, SS_ASTRT] :
; 2237 return IGNORE_MESSAGE (DB [D_TIM]);
; 2238 [SS_RUNNING] :
; 2239
; 2240 if CKACK (DB [D_TIM])
; 2241 then
; 2242 begin
; 2243
; 2244 if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
; 2245
; 2246 RECORD_NAK_REASON (DB [D_TIM]);
; 2247 PROCESS_SELECT_FLAG (DB [D_TIM]);
; 2248 end
; 2249 else
; 2250 return IGNORE_MESSAGE (DB [D_TIM]);
; 2251
; 2252 [SS_MAINTENANCE] :
; 2253 NO_OPERATION;
; 2254 [inrange] :
; 2255 return NO_OPERATION;
; 2256 tes;
; 2257
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 82
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (34)
; 2258 PROCESS_SELECT_FLAG (DB [D_TIM]);
; 2259 end; !of routine PROCESS_NAK_MESSAGE
.SBTTL PROCESS.NAK.MESSAGE
004620 .PSECT $CODE$, RO
000000 116500 000002 PROCESS.NAK.MESSAGE:
MOVB 2(R5),R0 ; *(DB),* 2234
000004 006300 ASL R0
000006 066007 000234' ADD P.AAO(R0),PC ; Case dispatch
000012 000415 1$: BR 4$ ; 2237
000014 004767 174510 2$: JSR PC,CKACK ; 2240
000020 006000 ROR R0
000022 103011 BCC 4$
000024 105765 000012 TSTB 12(R5) ; *(DB) 2244
000030 001001 BNE 3$
000032 105015 CLRB (R5) ; DB
000034 004767 000000V 3$: JSR PC,RECORD.NAK.REASON ; 2246
000040 004767 000000V JSR PC,PROCESS.SELECT.FLAG ; 2247
000044 000403 BR 5$ ; 2240
000046 004767 176412 4$: JSR PC,IGNORE.MESSAGE ; 2250
000052 000207 RTS PC
000054 004767 000000V 5$: JSR PC,PROCESS.SELECT.FLAG ; 2258
000060 000207 6$: RTS PC ; 2206
; Routine Size: 25 words, Routine Base: $CODE$ + 4620
; Maximum stack depth per invocation: 1 word
000234 .PSECT $PLIT$, RO , D
P.AAO: ; CASE Table for PROCESS.NAK.MES+0006 2234
000234 000046 .WORD 46 ; [6$]
000236 000034 .WORD 34 ; [4$]
000240 000034 .WORD 34 ; [4$]
000242 000002 .WORD 2 ; [2$]
000244 000042 .WORD 42 ; [5$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 83
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (35)
; 2260 routine PROCESS_REP_MESSAGE
; 2261
; 2262 !++
; 2263 ! FUNCTIONAL DESCRIPTION:
; 2264 !
; 2265 !
; 2266 ! FORMAL PARAMETERS:
; 2267 !
; 2268 (DB : ref block field (D_FIELDS))
; 2269 !
; 2270 ! IMPLICIT INPUTS:
; 2271 !
; 2272 ! IMPLICIT OUTPUTS:
; 2273 ! None
; 2274 !
; 2275 ! ROUTINE VALUE:
; 2276 !
; 2277 : DCP_DB novalue =
; 2278 !
; 2279 ! SIDE EFFECTS:
; 2280 ! None
; 2281 !--
; 2282
; 2283 begin
; 2284
; 2285 bind
; 2286 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 2287
; 2288 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 2289 set
; 2290 [SS_ISTRT, SS_ASTRT] :
; 2291 return IGNORE_MESSAGE (DB [D_TIM]);
; 2292 [SS_RUNNING] :
; 2293
; 2294 if .HEADER [H_NUM] nequ .DB [S_R]
; 2295 then
; 2296 begin
; 2297 DB [SS_SEND_NAK] = TRUE;
; 2298 DB [S_PENDING_NAK_REASON] = RN_REP;
; 2299 DB [SS_SEND_ACK] = FALSE;
; 2300 TEST_RECEIVE_THRESHOLD (DB [D_TIM]);
; 2301 COUNTER_INCREMENT (DB, SI_N3);
; 2302 COUNTER_INCREMENT (DB, S_DATA_ERRORS_INBOUND);
; 2303 end
; 2304 else
; 2305 begin
; 2306 DB [SS_SEND_ACK] = TRUE;
; 2307 DB [SS_SEND_NAK] = FALSE;
; 2308 COUNTER_INCREMENT (DB, S_REMOTE_REPLY_TIMEOUTS);
; 2309 end;
; 2310
; 2311 [SS_MAINTENANCE] :
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 84
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (35)
; 2312 NO_OPERATION;
; 2313 [inrange] :
; 2314 return NO_OPERATION;
; 2315 tes;
; 2316
; 2317 PROCESS_SELECT_FLAG (DB [D_TIM]);
; 2318 end; !of routine PROCESS_REP_MESSAGE
.SBTTL PROCESS.REP.MESSAGE
004702 .PSECT $CODE$, RO
000000 010546 PROCESS.REP.MESSAGE:
MOV R5,-(SP) ; 2260
000002 010546 MOV R5,-(SP)
000004 012700 000002 MOV #2,R0 ; 2288
000010 060500 ADD R5,R0
000012 010046 MOV R0,-(SP)
000014 111000 MOVB (R0),R0
000016 006300 ASL R0
000020 066007 000246' ADD P.AAP(R0),PC ; Case dispatch
000024 016605 000002 1$: MOV 2(SP),R5 ; 2291
000030 004767 176346 JSR PC,IGNORE.MESSAGE
000034 000461 BR 6$
000036 016600 000002 2$: MOV 2(SP),R0 ; 2294
000042 010001 MOV R0,R1
000044 126160 000160 000070 CMPB 160(R1),70(R0)
000052 001431 BEQ 3$
000054 052776 002000 000000 BIS #2000,@0(SP) ; 2297
000062 016600 000002 MOV 2(SP),R0 ; 2298
000066 112760 000003 000077 MOVB #3,77(R0)
000074 042776 010000 000000 BIC #10000,@0(SP) ; 2299
000102 016605 000002 MOV 2(SP),R5 ; 2300
000106 004767 000000V JSR PC,TEST.RECEIVE.THRESHOLD
000112 016600 000002 MOV 2(SP),R0 ; 2301
000116 052760 002000 000044 BIS #2000,44(R0)
000124 012701 000044 MOV #44,R1 ; 2302
000130 060001 ADD R0,R1
000132 010100 MOV R1,R0
000134 000413 BR 4$
000136 052776 010000 000000 3$: BIS #10000,@0(SP) ; 2306
000144 042776 002000 000000 BIC #2000,@0(SP) ; 2307
000152 016605 000002 MOV 2(SP),R5 ; 2308
000156 062705 000055 ADD #55,R5
000162 010500 MOV R5,R0
000164 004767 000000G 4$: JSR PC,$IC8
000170 016605 000002 5$: MOV 2(SP),R5 ; 2317
000174 004767 000000V JSR PC,PROCESS.SELECT.FLAG
000200 022626 6$: CMP (SP)+,(SP)+ ; 2260
000202 012605 MOV (SP)+,R5
000204 000207 RTS PC
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 85
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (35)
; Routine Size: 67 words, Routine Base: $CODE$ + 4702
; Maximum stack depth per invocation: 4 words
000246 .PSECT $PLIT$, RO , D
P.AAP: ; CASE Table for PROCESS.REP.MES+0020 2288
000246 000154 .WORD 154 ; [6$]
000250 000000 .WORD 0 ; [1$]
000252 000000 .WORD 0 ; [1$]
000254 000012 .WORD 12 ; [2$]
000256 000144 .WORD 144 ; [5$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 86
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (36)
; 2319 routine PROCESS_SELECT_FLAG
; 2320
; 2321 !++
; 2322 ! FUNCTIONAL DESCRIPTION:
; 2323 !
; 2324 !
; 2325 ! FORMAL PARAMETERS:
; 2326 !
; 2327 (DB : ref block field (D_FIELDS))
; 2328 !
; 2329 ! IMPLICIT INPUTS:
; 2330 !
; 2331 ! IMPLICIT OUTPUTS:
; 2332 ! None
; 2333 !
; 2334 ! ROUTINE VALUE:
; 2335 !
; 2336 : DCP_DB novalue =
; 2337 !
; 2338 ! SIDE EFFECTS:
; 2339 ! None
; 2340 !--
; 2341
; 2342 begin
; 2343
; 2344 bind
; 2345 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 2346
; 2347 if .DB [L_DUPLEX] neq DL_FULL
; 2348 then
; 2349
; 2350 if .HEADER [H_SELECT]
; 2351 then
; 2352 begin
; 2353 DB [D_TIM] = 0;
; 2354 DB [S_SELECT_THRESHOLD] = 7;
; 2355 TERMINATE_SELECTION_INTERVAL (DB [D_TIM]);
; 2356 end
; 2357 else
; 2358 DB [D_TIM] = .DB [L_RETRANSMIT_TIMER];
; 2359
; 2360 end; !of routine PROCESS_SELECT_FLAG
.SBTTL PROCESS.SELECT.FLAG
005110 .PSECT $CODE$, RO
000000 105765 000012 PROCESS.SELECT.FLAG:
TSTB 12(R5) ; *(DB) 2347
000004 001414 BEQ 2$
000006 105765 000156 TSTB 156(R5) ; *(DB) 2350
000012 100007 BPL 1$
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 87
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (36)
000014 105015 CLRB (R5) ; DB 2353
000016 112765 000007 000017 MOVB #7,17(R5) ; *,*(DB) 2354
000024 004767 000000V JSR PC,TERMINATE.SELECTION.INTERVAL ; 2355
000030 000207 RTS PC ; 2350
000032 116515 000112 1$: MOVB 112(R5),(R5) ; *(DB),DB 2358
000036 000207 2$: RTS PC ; 2319
; Routine Size: 16 words, Routine Base: $CODE$ + 5110
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 88
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (37)
; 2361 routine PROCESS_STACK_MESSAGE
; 2362
; 2363 !++
; 2364 ! FUNCTIONAL DESCRIPTION:
; 2365 !
; 2366 !
; 2367 ! FORMAL PARAMETERS:
; 2368 !
; 2369 (DB : ref block field (D_FIELDS))
; 2370 !
; 2371 ! IMPLICIT INPUTS:
; 2372 !
; 2373 ! IMPLICIT OUTPUTS:
; 2374 ! None
; 2375 !
; 2376 ! ROUTINE VALUE:
; 2377 !
; 2378 : DCP_DB novalue =
; 2379 !
; 2380 ! SIDE EFFECTS:
; 2381 ! None
; 2382 !--
; 2383
; 2384 begin
; 2385
; 2386 bind
; 2387 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 2388
; 2389 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 2390 set
; 2391 [SS_ISTRT, SS_ASTRT] :
; 2392 begin
; 2393
; 2394 if not .HEADER [H_SELECT]
; 2395 then
; 2396 return HEADER_FORMAT_ERROR (DB [D_TIM]);
; 2397
; 2398 DB [SS_SEND_ACK] = TRUE;
; 2399
; 2400 if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
; 2401
; 2402 CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_RUNNING, 0);
; 2403 DB [S_TRANSMIT_THRESHOLD] = 7;
; 2404 DB [S_RECEIVE_THRESHOLD] = 7;
; 2405 end;
; 2406 [SS_RUNNING] :
; 2407 DB [SS_SEND_ACK] = TRUE;
; 2408 [SS_MAINTENANCE] :
; 2409 NO_OPERATION;
; 2410 [inrange] :
; 2411 return NO_OPERATION;
; 2412 tes;
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 89
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (37)
; 2413
; 2414 PROCESS_SELECT_FLAG (DB [D_TIM]);
; 2415 end; !of routine PROCESS_STACK_MESSAGE
.SBTTL PROCESS.STACK.MESSAGE
000000 012746 000002 PROCESS.STACK.MESSAGE:
MOV #2,-(SP) ; 2389
000004 060516 ADD R5,(SP) ; DB,*
000006 117600 000000 MOVB @0(SP),R0
000012 006300 ASL R0
000014 066007 000260' ADD P.AAQ(R0),PC ; Case dispatch
000020 105765 000156 1$: TSTB 156(R5) ; *(DB) 2394
000024 100403 BMI 2$
000026 004767 175730 JSR PC,HEADER.FORMAT.ERROR ; 2396
000032 000431 BR 6$
000034 052776 010000 000000 2$: BIS #10000,@0(SP) ; 2398
000042 105765 000012 TSTB 12(R5) ; *(DB) 2400
000046 001001 BNE 3$
000050 105015 CLRB (R5) ; DB
000052 012746 000003 3$: MOV #3,-(SP) ; 2402
000056 005046 CLR -(SP)
000060 004767 174014 JSR PC,CHANGE.PROTOCOL.STATE
000064 112765 000007 000016 MOVB #7,16(R5) ; *,*(DB) 2403
000072 112765 000007 000015 MOVB #7,15(R5) ; *,*(DB) 2404
000100 022626 CMP (SP)+,(SP)+ ; 2392
000102 000403 BR 5$ ; 2389
000104 052776 010000 000000 4$: BIS #10000,@0(SP) ; 2407
000112 004767 177622 5$: JSR PC,PROCESS.SELECT.FLAG ; 2414
000116 005726 6$: TST (SP)+ ; 2361
000120 000207 RTS PC
; Routine Size: 41 words, Routine Base: $CODE$ + 5150
; Maximum stack depth per invocation: 4 words
000260 .PSECT $PLIT$, RO , D
P.AAQ: ; CASE Table for PROCESS.STACK.M+0014 2389
000260 000076 .WORD 76 ; [6$]
000262 000000 .WORD 0 ; [1$]
000264 000000 .WORD 0 ; [1$]
000266 000064 .WORD 64 ; [4$]
000270 000072 .WORD 72 ; [5$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 90
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (38)
; 2416 routine PROCESS_START_MESSAGE
; 2417
; 2418 !++
; 2419 ! FUNCTIONAL DESCRIPTION:
; 2420 !
; 2421 !
; 2422 ! FORMAL PARAMETERS:
; 2423 !
; 2424 (DB : ref block field (D_FIELDS))
; 2425 !
; 2426 ! IMPLICIT INPUTS:
; 2427 !
; 2428 ! IMPLICIT OUTPUTS:
; 2429 ! None
; 2430 !
; 2431 ! ROUTINE VALUE:
; 2432 !
; 2433 : DCP_DB novalue =
; 2434 !
; 2435 ! SIDE EFFECTS:
; 2436 ! None
; 2437 !--
; 2438
; 2439 begin
; 2440
; 2441 bind
; 2442 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 2443
; 2444 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 2445 set
; 2446 [SS_ISTRT, SS_ASTRT] :
; 2447 begin
; 2448
; 2449 if not .HEADER [H_SELECT]
; 2450 then
; 2451 return HEADER_FORMAT_ERROR (DB [D_TIM]);
; 2452
; 2453 CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_ASTRT, 0);
; 2454 DB [S_TRANSMIT_THRESHOLD] = 7;
; 2455 DB [S_RECEIVE_THRESHOLD] = 7;
; 2456 DB [SS_SEND_STACK] = TRUE;
; 2457 DB [SS_SEND_SELECT] = TRUE;
; 2458 end;
; 2459 [SS_RUNNING] :
; 2460 begin
; 2461 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_START_RECEIVED);
; 2462 SET_LINK (DB [D_TIM], DB [S_REQUESTED_STATE] = SS_HALTED);
; 2463 SET_DEVICE (DB [D_TIM]);
; 2464 end;
; 2465 [SS_MAINTENANCE] :
; 2466 $NM_DLL_EVENT (2, .DB [S_CIRCUIT_ENTITY]);
; 2467 [inrange] :
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 91
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (38)
; 2468 return NO_OPERATION;
; 2469 tes;
; 2470
; 2471 PROCESS_SELECT_FLAG (DB [D_TIM]);
; 2472 end; !of routine PROCESS_START_MESSAGE
.SBTTL PROCESS.START.MESSAGE
005272 .PSECT $CODE$, RO
000000 012746 000002 PROCESS.START.MESSAGE:
MOV #2,-(SP) ; 2444
000004 060516 ADD R5,(SP) ; DB,*
000006 117600 000000 MOVB @0(SP),R0
000012 006300 ASL R0
000014 066007 000272' ADD P.AAR(R0),PC ; Case dispatch
000020 105765 000156 1$: TSTB 156(R5) ; *(DB) 2449
000024 100403 BMI 2$
000026 004767 175606 JSR PC,HEADER.FORMAT.ERROR ; 2451
000032 000452 BR 6$
000034 012746 000002 2$: MOV #2,-(SP) ; 2453
000040 005046 CLR -(SP)
000042 004767 173710 JSR PC,CHANGE.PROTOCOL.STATE
000046 112765 000007 000016 MOVB #7,16(R5) ; *,*(DB) 2454
000054 112765 000007 000015 MOVB #7,15(R5) ; *,*(DB) 2455
000062 052776 000400 000004 BIS #400,@4(SP) ; 2456
000070 052776 020000 000004 BIS #20000,@4(SP) ; 2457
000076 022626 CMP (SP)+,(SP)+ ; 2447
000100 000425 BR 5$ ; 2444
000102 012703 100130 3$: MOV #-77650,R3 ; 2461
000106 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000112 105065 000006 CLRB 6(R5) ; *(DB) 2462
000116 005046 CLR -(SP)
000120 004767 000000V JSR PC,SETLNK
000124 004767 000000V JSR PC,SETDEV ; 2463
000130 005726 TST (SP)+ ; 2460
000132 000410 BR 5$ ; 2444
000134 004767 000000G 4$: JSR PC,$NLBEG ; 2466
000140 012700 000502 MOV #502,R0
000144 016501 000126 MOV 126(R5),R1 ; *(DB),*
000150 004767 000000G JSR PC,$NLEND
000154 004767 177436 5$: JSR PC,PROCESS.SELECT.FLAG ; 2471
000160 005726 6$: TST (SP)+ ; 2416
000162 000207 RTS PC
; Routine Size: 58 words, Routine Base: $CODE$ + 5272
; Maximum stack depth per invocation: 4 words
000272 .PSECT $PLIT$, RO , D
P.AAR: ; CASE Table for PROCESS.START.M+0014 2444
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 92
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (38)
000272 000140 .WORD 140 ; [6$]
000274 000000 .WORD 0 ; [1$]
000276 000000 .WORD 0 ; [1$]
000300 000062 .WORD 62 ; [3$]
000302 000114 .WORD 114 ; [4$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 93
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (39)
; 2473 routine RECORD_DRIVER_ERROR
; 2474
; 2475 !++
; 2476 ! FUNCTIONAL DESCRIPTION:
; 2477 !
; 2478 !
; 2479 ! FORMAL PARAMETERS:
; 2480 !
; 2481 (DB : ref block field (D_FIELDS),
; 2482 CCB : ref block field (C_FIELDS))
; 2483 !
; 2484 ! IMPLICIT INPUTS:
; 2485 !
; 2486 ! IMPLICIT OUTPUTS:
; 2487 ! None
; 2488 !
; 2489 ! ROUTINE VALUE:
; 2490 !
; 2491 : DCP_DB_CCB novalue =
; 2492 !
; 2493 ! SIDE EFFECTS:
; 2494 ! None
; 2495 !--
; 2496
; 2497 begin
; 2498
; 2499 selectone .CCB [C_STS] of
; 2500 set
; 2501 [CE_DCR] :
; 2502 if .DB [S_PROTOCOL_STATE] eql SS_RUNNING
; 2503 then
; 2504 begin
; 2505 DB [S_PENDING_NAK_REASON] = RN_DBC;
; 2506 COUNTER_INCREMENT (DB, SI_N2);
; 2507 COUNTER_INCREMENT (DB, S_DATA_ERRORS_INBOUND);
; 2508 end
; 2509 else
; 2510 begin
; 2511 COUNTER_INCREMENT (DB, LL_NNS);
; 2512 COUNTER_INCREMENT (DB, L_LOCAL_STATION_ERRORS);
; 2513 return;
; 2514 end;
; 2515 [CE_BUF] :
; 2516 begin
; 2517 DB [S_PENDING_NAK_REASON] = RN_BUF;
; 2518 COUNTER_INCREMENT (DB, SL_N8);
; 2519 COUNTER_INCREMENT (DB, S_LOCAL_BUFFER_ERRORS);
; 2520 end;
; 2521 [CE_ROV] :
; 2522 begin
; 2523 DB [S_PENDING_NAK_REASON] = RN_ROV;
; 2524 COUNTER_INCREMENT (DB, LL_N9);
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 94
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (39)
; 2525 COUNTER_INCREMENT (DB, L_LOCAL_STATION_ERRORS);
; 2526 end;
; 2527 [CE_MTL] :
; 2528 begin
; 2529
; 2530 external
; 2531 MCB$GW_RDB_SIZE;
; 2532
; P 2533 $NM_DLL_EVENT (9, .DB [S_CIRCUIT_ENTITY],
; 2534 PARAMETER_DU_2 (8, MCB$GW_RDB_SIZE));
; 2535 DB [S_PENDING_NAK_REASON] = RN_MTL;
; 2536 COUNTER_INCREMENT (DB, SL_N16);
; 2537 COUNTER_INCREMENT (DB, S_LOCAL_BUFFER_ERRORS);
; 2538 end;
; 2539 [CE_HFE] :
; 2540 begin
; 2541 DB [S_PENDING_NAK_REASON] = RN_HBC;
; 2542 COUNTER_INCREMENT (DB, SI_N1);
; 2543 COUNTER_INCREMENT (DB, S_DATA_ERRORS_INBOUND);
; 2544 end;
; 2545 [otherwise] :
; 2546 return;
; 2547 tes;
; 2548
; 2549 DB [SS_SEND_NAK] = TRUE;
; 2550 DB [SS_SEND_ACK] = FALSE;
; 2551 TEST_RECEIVE_THRESHOLD (DB [D_TIM]);
; 2552 SEND_DATA (DB [D_TIM]);
; 2553 end; !of routine RECORD_DRIVER_ERROR
.GLOBL .RDBSZ, $DPDU2
.SBTTL RECORD.DRIVER.ERROR
005456 .PSECT $CODE$, RO
000000 010446 RECORD.DRIVER.ERROR:
MOV R4,-(SP) ; 2473
000002 016401 000014 MOV 14(R4),R1 ; *(CCB),* 2499
000006 020127 177570 CMP R1,#-210
000012 001024 BNE 2$
000014 126527 000002 000003 CMPB 2(R5),#3 ; *(DB),* 2502
000022 001007 BNE 1$
000024 112765 000002 000077 MOVB #2,77(R5) ; *,*(DB) 2505
000032 052765 001000 000044 BIS #1000,44(R5) ; *,*(DB) 2506
000040 000510 BR 6$ ; 2507
000042 052765 001000 000064 1$: BIS #1000,64(R5) ; *,*(DB) 2511
000050 012700 000064 MOV #64,R0 ; 2512
000054 060500 ADD R5,R0 ; DB,*
000056 004767 000000G JSR PC,$IC8
000062 000516 BR 9$ ; 2510
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 95
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (39)
000064 020127 177600 2$: CMP R1,#-200 ; 2499
000070 001011 BNE 3$
000072 112765 000010 000077 MOVB #10,77(R5) ; *,*(DB) 2517
000100 052765 000400 000046 BIS #400,46(R5) ; *,*(DB) 2518
000106 012700 000046 MOV #46,R0 ; 2519
000112 000465 BR 7$
000114 020127 177540 3$: CMP R1,#-240 ; 2499
000120 001011 BNE 4$
000122 112765 000011 000077 MOVB #11,77(R5) ; *,*(DB) 2523
000130 052765 000400 000064 BIS #400,64(R5) ; *,*(DB) 2524
000136 012700 000064 MOV #64,R0 ; 2525
000142 000451 BR 7$
000144 020127 177550 4$: CMP R1,#-230 ; 2499
000150 001033 BNE 5$
000152 004767 000000G JSR PC,$NLBEG ; 2534
000156 012746 000010 MOV #10,-(SP)
000162 016700 000000G MOV .RDBSZ,R0
000166 004767 000000G JSR PC,$DPDU2
000172 012700 000511 MOV #511,R0
000176 016501 000126 MOV 126(R5),R1 ; *(DB),*
000202 004767 000000G JSR PC,$NLEND
000206 112765 000020 000077 MOVB #20,77(R5) ; *,*(DB) 2535
000214 052765 001000 000046 BIS #1000,46(R5) ; *,*(DB) 2536
000222 012700 000046 MOV #46,R0 ; 2537
000226 060500 ADD R5,R0 ; DB,*
000230 004767 000000G JSR PC,$IC8
000234 005726 TST (SP)+ ; 2528
000236 000416 BR 8$ ; 2499
000240 020127 177560 5$: CMP R1,#-220
000244 001025 BNE 9$
000246 112765 000001 000077 MOVB #1,77(R5) ; *,*(DB) 2541
000254 052765 000400 000044 BIS #400,44(R5) ; *,*(DB) 2542
000262 012700 000044 6$: MOV #44,R0 ; 2543
000266 060500 7$: ADD R5,R0 ; DB,*
000270 004767 000000G JSR PC,$IC8
000274 052765 002000 000002 8$: BIS #2000,2(R5) ; *,*(DB) 2549
000302 042765 010000 000002 BIC #10000,2(R5) ; *,*(DB) 2550
000310 004767 000000V JSR PC,TEST.RECEIVE.THRESHOLD ; 2551
000314 004767 000000V JSR PC,SEND.DATA ; 2552
000320 012604 9$: MOV (SP)+,R4 ; 2473
000322 000207 RTS PC
; Routine Size: 106 words, Routine Base: $CODE$ + 5456
; Maximum stack depth per invocation: 3 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 96
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (40)
; 2554 routine RECORD_NAK_REASON
; 2555
; 2556 !++
; 2557 ! FUNCTIONAL DESCRIPTION:
; 2558 !
; 2559 !
; 2560 ! FORMAL PARAMETERS:
; 2561 !
; 2562 (DB : ref block field (D_FIELDS))
; 2563 !
; 2564 ! IMPLICIT INPUTS:
; 2565 !
; 2566 ! IMPLICIT OUTPUTS:
; 2567 ! None
; 2568 !
; 2569 ! ROUTINE VALUE:
; 2570 !
; 2571 : DCP_DB novalue =
; 2572 !
; 2573 ! SIDE EFFECTS:
; 2574 ! None
; 2575 !--
; 2576
; 2577 begin
; 2578
; 2579 bind
; 2580 HEADER = DB [L_HEADER] : block [H_LENGTH] field (HDR_FIELDS);
; 2581
; 2582 selectone .HEADER [H_SUBTYPE] of
; 2583 set
; 2584 [RN_HBC] :
; 2585 begin
; 2586 COUNTER_INCREMENT (DB, SO_N1);
; 2587 COUNTER_INCREMENT (DB, S_DATA_ERRORS_OUTBOUND);
; 2588 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
; 2589 end;
; 2590 [RN_DBC] :
; 2591 begin
; 2592 COUNTER_INCREMENT (DB, SO_N2);
; 2593 COUNTER_INCREMENT (DB, S_DATA_ERRORS_OUTBOUND);
; 2594 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
; 2595 end;
; 2596 [RN_REP] :
; 2597 begin
; 2598 COUNTER_INCREMENT (DB, SO_N3);
; 2599 COUNTER_INCREMENT (DB, S_DATA_ERRORS_OUTBOUND);
; 2600 end;
; 2601 [RN_BUF] :
; 2602 begin
; 2603 COUNTER_INCREMENT (DB, SR_N8);
; 2604 COUNTER_INCREMENT (DB, S_REMOTE_BUFFER_ERRORS);
; 2605 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 97
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (40)
; 2606 end;
; 2607 [RN_ROV] :
; 2608 begin
; 2609 COUNTER_INCREMENT (DB, LR_N9);
; 2610 COUNTER_INCREMENT (DB, L_REMOTE_STATION_ERRORS);
; 2611 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
; 2612 end;
; 2613 [RN_MTL] :
; 2614 begin
; 2615 COUNTER_INCREMENT (DB, SR_N16);
; 2616 COUNTER_INCREMENT (DB, S_REMOTE_BUFFER_ERRORS);
; 2617 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
; 2618 end;
; 2619 [RN_HFE] :
; 2620 begin
; 2621 COUNTER_INCREMENT (DB, LL_N17);
; 2622 COUNTER_INCREMENT (DB, L_LOCAL_STATION_ERRORS);
; 2623 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
; 2624 end;
; 2625 [otherwise] :
; 2626 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
; 2627 tes;
; 2628
; 2629 if .HEADER [H_RESP] neq .DB [S_TM1]
; 2630 then
; 2631 begin
; 2632 DB [SS_RETRANSMIT] = TRUE;
; 2633
; 2634 if .DB [S_MOTD] eql 0 then RETRANSMIT_UNACKED_MESSAGES (DB [D_TIM]);
; 2635
; 2636 end;
; 2637
; 2638 DB [SS_START_REP_TIMER] = FALSE;
; 2639 DB [SS_TIMING_REP] = FALSE;
; 2640
; 2641 if .DB [L_DUPLEX] eql DL_FULL then DB [D_TIM] = 0;
; 2642
; 2643 end; !of routine RECORD_NAK_REASON
.SBTTL RECORD.NAK.REASON
000000 005001 RECORD.NAK.REASON:
CLR R1 ; 2582
000002 156501 000156 BISB 156(R5),R1 ; *(DB),*
000006 020127 000001 CMP R1,#1
000012 001004 BNE 1$
000014 052765 000400 000042 BIS #400,42(R5) ; *,*(DB) 2586
000022 000406 BR 2$ ; 2587
000024 020127 000002 1$: CMP R1,#2 ; 2582
000030 001006 BNE 3$
000032 052765 001000 000042 BIS #1000,42(R5) ; *,*(DB) 2592
000040 012700 000042 2$: MOV #42,R0 ; 2593
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 98
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (40)
000044 000455 BR 9$
000046 020127 000003 3$: CMP R1,#3 ; 2582
000052 001011 BNE 4$
000054 052765 002000 000042 BIS #2000,42(R5) ; *,*(DB) 2598
000062 012700 000042 MOV #42,R0 ; 2599
000066 060500 ADD R5,R0 ; DB,*
000070 004767 000000G JSR PC,$IC8
000074 000446 BR 11$ ; 2582
000076 020127 000010 4$: CMP R1,#10
000102 001004 BNE 5$
000104 052765 000400 000050 BIS #400,50(R5) ; *,*(DB) 2603
000112 000417 BR 7$ ; 2604
000114 020127 000011 5$: CMP R1,#11 ; 2582
000120 001006 BNE 6$
000122 052765 000400 000062 BIS #400,62(R5) ; *,*(DB) 2609
000130 012700 000062 MOV #62,R0 ; 2610
000134 000421 BR 9$
000136 020127 000020 6$: CMP R1,#20 ; 2582
000142 001006 BNE 8$
000144 052765 001000 000050 BIS #1000,50(R5) ; *,*(DB) 2615
000152 012700 000050 7$: MOV #50,R0 ; 2616
000156 000410 BR 9$
000160 020127 000021 8$: CMP R1,#21 ; 2582
000164 001010 BNE 10$
000166 052765 004000 000064 BIS #4000,64(R5) ; *,*(DB) 2621
000174 012700 000064 MOV #64,R0 ; 2622
000200 060500 9$: ADD R5,R0 ; DB,*
000202 004767 000000G JSR PC,$IC8
000206 004767 000000V 10$: JSR PC,TEST.TRANSMIT.THRESHOLD ; 2626
000212 126565 000157 000071 11$: CMPB 157(R5),71(R5) ; *(DB),*(DB) 2629
000220 001407 BEQ 12$
000222 052715 002000 BIS #2000,(R5) ; *,DB 2632
000226 105765 000076 TSTB 76(R5) ; *(DB) 2634
000232 001002 BNE 12$
000234 004767 000000V JSR PC,RETRANSMIT.UNACKED.MESSAGES
000240 042715 005000 12$: BIC #5000,(R5) ; *,DB 2639
000244 105765 000012 TSTB 12(R5) ; *(DB) 2641
000250 001001 BNE 13$
000252 105015 CLRB (R5) ; DB
000254 000207 13$: RTS PC ; 2554
; Routine Size: 87 words, Routine Base: $CODE$ + 6002
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 99
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (41)
; 2644 routine RESYNCHRONIZE
; 2645
; 2646 !++
; 2647 ! FUNCTIONAL DESCRIPTION:
; 2648 !
; 2649 !
; 2650 ! FORMAL PARAMETERS:
; 2651 !
; 2652 (DB : ref block field (D_FIELDS))
; 2653 !
; 2654 ! IMPLICIT INPUTS:
; 2655 !
; 2656 ! IMPLICIT OUTPUTS:
; 2657 ! None
; 2658 !
; 2659 ! ROUTINE VALUE:
; 2660 !
; 2661 : DCP_DB novalue =
; 2662 !
; 2663 ! SIDE EFFECTS:
; 2664 ! None
; 2665 !--
; 2666
; 2667 begin
; 2668
; 2669 local
; 2670 CCB : ref block field (C_FIELDS);
; 2671
; 2672 external routine
; 2673 $DDCRA : DDM_CCB novalue;
; 2674
; 2675 if .DB [LS_RESYNCH_IN_PROGRESS] then return;
; 2676
; 2677 if not $MCB_GET_CCB (CCB) then return;
; 2678
; 2679 DB [LS_RESYNCH_IN_PROGRESS] = TRUE;
; 2680 CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
; 2681 $DDCRA (.CCB);
; 2682 end; !of routine RESYNCHRONIZE
.GLOBL $DDCRA
.SBTTL RESYNCHRONIZE
000000 032715 000400 RESYNCHRONIZE:
BIT #400,(R5) ; *,DB 2675
000004 001012 BNE 1$
000006 004767 000000G JSR PC,$CCBGT ; 2677
000012 103407 BCS 1$
000014 052715 000400 BIS #400,(R5) ; *,DB 2679
000020 016564 000144 000010 MOV 144(R5),10(R4) ; *(DB),*(CCB) 2680
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 100
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (41)
000026 004767 000000G JSR PC,$DDCRA ; 2681
000032 000207 1$: RTS PC ; 2644
; Routine Size: 14 words, Routine Base: $CODE$ + 6260
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 101
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (42)
; 2683 routine RETRANSMIT_UNACKED_MESSAGES
; 2684
; 2685 !++
; 2686 ! FUNCTIONAL DESCRIPTION:
; 2687 !
; 2688 !
; 2689 ! FORMAL PARAMETERS:
; 2690 !
; 2691 (DB : ref block field (D_FIELDS))
; 2692 !
; 2693 ! IMPLICIT INPUTS:
; 2694 !
; 2695 ! IMPLICIT OUTPUTS:
; 2696 ! None
; 2697 !
; 2698 ! ROUTINE VALUE:
; 2699 !
; 2700 : DCP_DB novalue =
; 2701 !
; 2702 ! SIDE EFFECTS:
; 2703 ! None
; 2704 !--
; 2705
; 2706 begin
; 2707 DB [SS_RETRANSMIT] = FALSE;
; 2708
; 2709 if .DB [$SUB_FIELD (S_WAITING_FOR_ACK, LIST_FIRST)] neqa 0
; 2710 then
; 2711 begin
; 2712
; 2713 if (.DB [$SUB_FIELD (S_WAITING_FOR_ACK, LIST_LAST)] =
; 2714 .DB [$SUB_FIELD (S_WAITING_FOR_TRANSMIT, LIST_FIRST)]) eqla 0
; 2715 then
; 2716 DB [$SUB_FIELD (S_WAITING_FOR_TRANSMIT, LIST_LAST)] = .DB [$SUB_FIELD (S_WAITING_FOR_ACK, LIST_LAST)];
; 2717
; 2718 DB [$SUB_FIELD (S_WAITING_FOR_TRANSMIT, LIST_FIRST)] = .DB [$SUB_FIELD (S_WAITING_FOR_ACK, LIST_FIRST)];
; 2719 $MCB_INITIALIZE_QUEUE (DB [S_WAITING_FOR_ACK]);
; 2720 end;
; 2721
; 2722 DB [S_TM1] = .DB [S_A];
; 2723 end; !of routine RETRANSMIT_UNACKED_MESSAGES
.SBTTL RETRANSMIT.UNACKED.MESSAGES
000000 042715 002000 RETRANSMIT.UNACKED.MESSAGES:
BIC #2000,(R5) ; *,DB 2707
000004 012701 000120 MOV #120,R1 ; 2709
000010 060501 ADD R5,R1 ; DB,*
000012 005711 TST (R1)
000014 001414 BEQ 2$
000016 016500 000122 MOV 122(R5),R0 ; *(DB),* 2713
000022 016510 000114 MOV 114(R5),(R0) ; *(DB),*
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 102
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (42)
000026 001002 BNE 1$ ; 2714
000030 010065 000116 MOV R0,116(R5) ; *,*(DB) 2716
000034 011165 000114 1$: MOV (R1),114(R5) ; *,*(DB) 2718
000040 005011 CLR (R1) ; 2719
000042 010161 000002 MOV R1,2(R1)
000046 116565 000074 000071 2$: MOVB 74(R5),71(R5) ; *(DB),*(DB) 2722
000054 000207 RTS PC ; 2683
; Routine Size: 23 words, Routine Base: $CODE$ + 6314
; Maximum stack depth per invocation: 0 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 103
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (43)
; 2724 routine RETURN_ACKED_MESSAGES
; 2725
; 2726 !++
; 2727 ! FUNCTIONAL DESCRIPTION:
; 2728 !
; 2729 !
; 2730 ! FORMAL PARAMETERS:
; 2731 !
; 2732 (DB : ref block field (D_FIELDS))
; 2733 !
; 2734 ! IMPLICIT INPUTS:
; 2735 !
; 2736 ! IMPLICIT OUTPUTS:
; 2737 ! None
; 2738 !
; 2739 ! ROUTINE VALUE:
; 2740 !
; 2741 : DCP_DB novalue =
; 2742 !
; 2743 ! SIDE EFFECTS:
; 2744 ! None
; 2745 !--
; 2746
; 2747 begin
; 2748
; 2749 until .DB [S_AR] eql .DB [S_A] do
; 2750 begin
; 2751
; 2752 local
; 2753 CCB : ref block field (C_FIELDS);
; 2754
; 2755 if not $MCB_DEQUEUE_CCB (DB [S_WAITING_FOR_ACK], CCB) then return;
; 2756
; 2757 DB [S_AR] = .DB [S_AR] + 1;
; 2758 DB [S_TRANSMIT_THRESHOLD] = 7;
; 2759 SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_SUCCESS);
; 2760 end;
; 2761
; 2762 end; !of routine RETURN_ACKED_MESSAGES
.SBTTL RETURN.ACKED.MESSAGES
000000 012746 000074 RETURN.ACKED.MESSAGES:
MOV #74,-(SP) ; 2749
000004 060516 ADD R5,(SP) ; DB,*
000006 010546 MOV R5,-(SP) ; DB,* 2755
000010 062716 000120 ADD #120,(SP)
000014 005001 1$: CLR R1 ; 2749
000016 157601 000002 BISB @2(SP),R1
000022 017600 000002 MOV @2(SP),R0
000026 105000 CLRB R0
000030 000300 SWAB R0
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 104
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (43)
000032 020001 CMP R0,R1
000034 001417 BEQ 2$
000036 011603 MOV (SP),R3 ; 2755
000040 004767 000000G JSR PC,$CMQRM
000044 103413 BCS 2$
000046 062776 000400 000002 ADD #400,@2(SP) ; 2757
000054 112765 000007 000016 MOVB #7,16(R5) ; *,*(DB) 2758
000062 012703 100001 MOV #-77777,R3 ; 2759
000066 004767 000000V JSR PC,SCHEDULE.TRANSMIT
000072 000750 BR 1$ ; 2749
000074 022626 2$: CMP (SP)+,(SP)+ ; 2724
000076 000207 RTS PC
; Routine Size: 32 words, Routine Base: $CODE$ + 6372
; Maximum stack depth per invocation: 3 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 105
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (44)
; 2763 routine SCHEDULE_PERSISTENT_AST
; 2764
; 2765 !++
; 2766 ! FUNCTIONAL DESCRIPTION:
; 2767 !
; 2768 !
; 2769 ! FORMAL PARAMETERS:
; 2770 !
; 2771 (CCB : ref block field (C_FIELDS), ! CCB to use for status nodification.
; 2772 DB : ref block field (D_FIELDS))
; 2773 !
; 2774 ! IMPLICIT INPUTS:
; 2775 ! None
; 2776 !
; 2777 ! IMPLICIT OUTPUTS:
; 2778 ! None
; 2779 !
; 2780 ! ROUTINE VALUE:
; 2781 !
; 2782 : DCP_CCB_DB novalue =
; 2783 !
; 2784 ! SIDE EFFECTS:
; 2785 ! None
; 2786 !--
; 2787
; 2788 begin
; 2789 CCB [C_HANDLE] = .DB [S_USER_HANDLE];
; 2790 CCB [C_FNC] = FC_AST;
; 2791 CCB [C_MOD] = DLL$K_PERSISTENT_ERROR;
; 2792 CCB [C_STS] = .DB [S_PERSISTENT_ERROR];
; 2793 $MCB_SCHEDULE_CCB (.CCB);
; 2794 DB [S_PERSISTENT_ERROR] = 0;
; 2795 end; !of routine SCHEDULE_PERSISTENT_AST
.SBTTL SCHEDULE.PERSISTENT.AST
000000 016564 000130 000010 SCHEDULE.PERSISTENT.AST:
MOV 130(R5),10(R4) ; *(DB),*(CCB) 2789
000006 105064 000012 CLRB 12(R4) ; *(CCB) 2790
000012 112764 000004 000013 MOVB #4,13(R4) ; *,*(CCB) 2791
000020 016564 000134 000014 MOV 134(R5),14(R4) ; *(DB),*(CCB) 2792
000026 004767 000000G JSR PC,$SCHED ; 2793
000032 005065 000134 CLR 134(R5) ; *(DB) 2794
000036 000207 RTS PC ; 2763
; Routine Size: 16 words, Routine Base: $CODE$ + 6472
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 106
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (45)
; 2796 routine SCHEDULE_RECEIVE
; 2797
; 2798 !++
; 2799 ! FUNCTIONAL DESCRIPTION:
; 2800 !
; 2801 !
; 2802 ! FORMAL PARAMETERS:
; 2803 !
; 2804 (CCB : ref block field (C_FIELDS),
; 2805 DB : ref block field (D_FIELDS))
; 2806 !
; 2807 ! IMPLICIT INPUTS:
; 2808 ! None
; 2809 !
; 2810 ! IMPLICIT OUTPUTS:
; 2811 ! None
; 2812 !
; 2813 ! ROUTINE VALUE:
; 2814 !
; 2815 : DCP_CCB_DB novalue =
; 2816 !
; 2817 ! SIDE EFFECTS:
; 2818 ! None
; 2819 !--
; 2820
; 2821 begin
; 2822 CCB [C_HANDLE] = .DB [S_USER_HANDLE];
; 2823
; 2824 if .CCB [C_HANDLE] eqlu 0 then return STARCE (DB [D_TIM], .CCB);
; 2825
; 2826 DB [D_USER_BUFFERS] = .DB [D_USER_BUFFERS] + 1;
; 2827 CCB [C_FNC] = FC_RCP;
; 2828 CCB [C_STS] = DLL$_SUCCESS;
; 2829 $MCB_SCHEDULE_CCB (.CCB);
; 2830 end; !of routine SCHEDULE_RECEIVE
.SBTTL SCHEDULE.RECEIVE
000000 010446 SCHEDULE.RECEIVE:
MOV R4,-(SP) ; 2796
000002 010400 MOV R4,R0 ; 2822
000004 016560 000130 000010 MOV 130(R5),10(R0) ; *(DB),*
000012 001003 BNE 1$ ; 2824
000014 004767 000000V JSR PC,STARCE
000020 000414 BR 2$
000022 005265 000136 1$: INC 136(R5) ; *(DB) 2826
000026 011600 MOV (SP),R0 ; 2827
000030 112760 000016 000012 MOVB #16,12(R0)
000036 012760 100001 000014 MOV #-77777,14(R0) ; 2828
000044 010004 MOV R0,R4 ; 2829
000046 004767 000000G JSR PC,$SCHED
000052 005726 2$: TST (SP)+ ; 2796
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 107
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (45)
000054 000207 RTS PC
; Routine Size: 23 words, Routine Base: $CODE$ + 6532
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 108
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (46)
; 2831 routine SCHEDULE_STATE_AST
; 2832
; 2833 !++
; 2834 ! FUNCTIONAL DESCRIPTION:
; 2835 !
; 2836 !
; 2837 ! FORMAL PARAMETERS:
; 2838 !
; 2839 (CCB : ref block field (C_FIELDS),
; 2840 DB : ref block field (D_FIELDS))
; 2841 !
; 2842 ! IMPLICIT INPUTS:
; 2843 ! None
; 2844 !
; 2845 ! IMPLICIT OUTPUTS:
; 2846 ! None
; 2847 !
; 2848 ! ROUTINE VALUE:
; 2849 !
; 2850 : DCP_CCB_DB novalue =
; 2851 !
; 2852 ! SIDE EFFECTS:
; 2853 ! None
; 2854 !--
; 2855
; 2856 begin
; 2857
; 2858 if not .DB [SS_NOTIFY_STATE] then return $MCB_RETURN_CCB (.CCB);
; 2859
; 2860 CCB [C_HANDLE] = .DB [S_USER_HANDLE];
; 2861 CCB [C_FNC] = FC_AST;
; 2862 CCB [C_MOD] = DLL$K_STATE;
; 2863 CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
; 2864 $MCB_SCHEDULE_CCB (.CCB);
; 2865
; 2866 if .DB [SS_NOTIFY_STATE]
; 2867 then
; 2868
; 2869 if $MCB_GET_CCB (CCB)
; 2870 then
; 2871 SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
; 2872 else
; 2873 $MCB_REQUEST_CCB ();
; 2874 end; !of routine SCHEDULE_STATE_AST
.GLOBL $CCBRQ
.SBTTL SCHEDULE.STATE.AST
000000 010401 SCHEDULE.STATE.AST:
MOV R4,R1 ; *,CCB 2831
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 109
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (46)
000002 032765 001000 000004 BIT #1000,4(R5) ; *,*(DB) 2858
000010 001003 BNE 1$
000012 004767 000000G JSR PC,$CCBRT
000016 000207 RTS PC
000020 016561 000130 000010 1$: MOV 130(R5),10(R1) ; *(DB),*(CCB) 2860
000026 105061 000012 CLRB 12(R1) ; *(CCB) 2861
000032 105061 000013 CLRB 13(R1) ; *(CCB) 2862
000036 004767 173016 JSR PC,CURRENT.STATUS ; 2863
000042 010061 000014 MOV R0,14(R1) ; *,*(CCB)
000046 010104 MOV R1,R4 ; CCB,* 2864
000050 004767 000000G JSR PC,$SCHED
000054 032765 001000 000004 BIT #1000,4(R5) ; *,*(DB) 2866
000062 001411 BEQ 3$
000064 004767 000000G JSR PC,$CCBGT ; 2869
000070 103404 BCS 2$
000072 010401 MOV R4,R1 ; $MCB$R4,CCB
000074 004767 177700 JSR PC,SCHEDULE.STATE.AST ; 2871
000100 000207 RTS PC ; 2869
000102 004767 000000G 2$: JSR PC,$CCBRQ ; 2873
000106 000207 3$: RTS PC ; 2831
; Routine Size: 36 words, Routine Base: $CODE$ + 6610
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 110
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (47)
; 2875 routine SCHEDULE_TRANSIENT_AST
; 2876
; 2877 !++
; 2878 ! FUNCTIONAL DESCRIPTION:
; 2879 !
; 2880 !
; 2881 ! FORMAL PARAMETERS:
; 2882 !
; 2883 (CCB : ref block field (C_FIELDS),
; 2884 DB : ref block field (D_FIELDS))
; 2885 !
; 2886 ! IMPLICIT INPUTS:
; 2887 ! None
; 2888 !
; 2889 ! IMPLICIT OUTPUTS:
; 2890 ! None
; 2891 !
; 2892 ! ROUTINE VALUE:
; 2893 !
; 2894 : DCP_CCB_DB novalue =
; 2895 !
; 2896 ! SIDE EFFECTS:
; 2897 ! None
; 2898 !--
; 2899
; 2900 begin
; 2901 CCB [C_HANDLE] = .DB [S_USER_HANDLE];
; 2902 CCB [C_FNC] = FC_AST;
; 2903 CCB [C_MOD] = DLL$K_TRANSIENT_ERROR;
; 2904 CCB [C_STS] = .DB [S_TRANSIENT_ERROR];
; 2905 $MCB_SCHEDULE_CCB (.CCB);
; 2906 DB [S_TRANSIENT_ERROR] = 0;
; 2907 end; !of routine SCHEDULE_TRANSIENT_AST
.SBTTL SCHEDULE.TRANSIENT.AST
000000 016564 000130 000010 SCHEDULE.TRANSIENT.AST:
MOV 130(R5),10(R4) ; *(DB),*(CCB) 2901
000006 105064 000012 CLRB 12(R4) ; *(CCB) 2902
000012 112764 000002 000013 MOVB #2,13(R4) ; *,*(CCB) 2903
000020 016564 000132 000014 MOV 132(R5),14(R4) ; *(DB),*(CCB) 2904
000026 004767 000000G JSR PC,$SCHED ; 2905
000032 005065 000132 CLR 132(R5) ; *(DB) 2906
000036 000207 RTS PC ; 2875
; Routine Size: 16 words, Routine Base: $CODE$ + 6720
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 111
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (48)
; 2908 routine SCHEDULE_TRANSMIT
; 2909
; 2910 !++
; 2911 ! FUNCTIONAL DESCRIPTION:
; 2912 !
; 2913 !
; 2914 ! FORMAL PARAMETERS:
; 2915 !
; 2916 (CCB : ref block field (C_FIELDS),
; 2917 DB : ref block field (D_FIELDS),
; 2918 STATUS)
; 2919 !
; 2920 ! IMPLICIT INPUTS:
; 2921 ! None
; 2922 !
; 2923 ! IMPLICIT OUTPUTS:
; 2924 ! None
; 2925 !
; 2926 ! ROUTINE VALUE:
; 2927 !
; 2928 : DCP_CCB_DB_STS novalue =
; 2929 !
; 2930 ! SIDE EFFECTS:
; 2931 ! None
; 2932 !--
; 2933
; 2934 begin
; 2935 CCB [C_FNC] = FC_XCP;
; 2936 CCB [C_STS] = .STATUS;
; 2937 $MCB_SCHEDULE_CCB (.CCB);
; 2938
; 2939 DB [D_USER_BUFFERS] = .DB [D_USER_BUFFERS] - 1;
; 2940
; 2941 if .DB [D_USER_BUFFERS] neq 0 then return;
; 2942
; 2943 if .DB [S_CONTROL_CCB] neqa 0
; 2944 then
; 2945 begin
; 2946 $MCB_SCHEDULE_CCB (.DB [S_CONTROL_CCB]);
; 2947 DB [S_CONTROL_CCB] = 0;
; 2948 end;
; 2949
; 2950 end; !of routine SCHEDULE_TRANSMIT
.SBTTL SCHEDULE.TRANSMIT
000000 112764 000014 000012 SCHEDULE.TRANSMIT:
MOVB #14,12(R4) ; *,*(CCB) 2935
000006 010364 000014 MOV R3,14(R4) ; STATUS,*(CCB) 2936
000012 004767 000000G JSR PC,$SCHED ; 2937
000016 005365 000136 DEC 136(R5) ; *(DB) 2939
000022 001011 BNE 1$ ; 2941
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 112
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (48)
000024 012700 000124 MOV #124,R0 ; 2943
000030 060500 ADD R5,R0 ; DB,*
000032 005710 TST (R0)
000034 001404 BEQ 1$
000036 011004 MOV (R0),R4 ; 2946
000040 004767 000000G JSR PC,$SCHED
000044 005010 CLR (R0) ; 2947
000046 000207 1$: RTS PC ; 2908
; Routine Size: 20 words, Routine Base: $CODE$ + 6760
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 113
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (49)
; 2951 routine SEND_DATA
; 2952
; 2953 !++
; 2954 ! FUNCTIONAL DESCRIPTION:
; 2955 !
; 2956 !
; 2957 ! FORMAL PARAMETERS:
; 2958 !
; 2959 (DB : ref block field (D_FIELDS))
; 2960 !
; 2961 ! IMPLICIT INPUTS:
; 2962 ! None
; 2963 !
; 2964 ! IMPLICIT OUTPUTS:
; 2965 ! None
; 2966 !
; 2967 ! ROUTINE VALUE:
; 2968 !
; 2969 : DCP_DB novalue =
; 2970 !
; 2971 ! SIDE EFFECTS:
; 2972 ! None
; 2973 !--
; 2974
; 2975 begin
; 2976
; 2977 if .DB [D_CONTROL_FLAGS] neq 0 then return;
; 2978
; 2979 if .DB [L_MESSAGES_AT_DRIVER] gtru 0 then return;
; 2980
; 2981 if not .DB [LS_STATION_ENABLED] then return;
; 2982
; 2983 DB [L_BABBLE_COUNT] = .DB [S_MAXIMUM_TRANSMITS] %(4)%;
; 2984
; 2985 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 2986 set
; 2987 [SS_ISTRT, SS_ASTRT] :
; 2988 begin
; 2989
; 2990 if not (.DB [SS_SEND_START] or .DB [SS_SEND_STACK]) then return;
; 2991
; 2992 if (BUILD_CONTROL_MESSAGE (DB [D_TIM]) eqla 0) then return;
; 2993
; 2994 end;
; 2995 [SS_RUNNING] :
; 2996 begin
; 2997
; 2998 label
; 2999 BUILD_MESSAGES;
; 3000
; 3001 BUILD_MESSAGES : begin
; 3002
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 114
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (49)
; 3003 while (.DB [SS_SEND_REP] or .DB [SS_SEND_NAK]) do
; 3004
; 3005 if (BUILD_CONTROL_MESSAGE (DB [D_TIM]) eqla 0) then leave BUILD_MESSAGES;
; 3006
; 3007 if not .DB [SS_RETRANSMIT]
; 3008 then
; 3009
; 3010 while .DB [L_MESSAGES_AT_DRIVER] lss .DB [L_MAXIMUM_AT_DRIVER] do
; 3011 begin
; 3012
; 3013 local
; 3014 CCB : ref block field (C_FIELDS);
; 3015
; 3016 if not $MCB_DEQUEUE_CCB (DB [S_WAITING_FOR_TRANSMIT], CCB) then exitloop;
; 3017
; 3018 if (BUILD_DATA_MESSAGE (DB [D_TIM], .CCB) eqla 0)
; 3019 then
; 3020 begin
; 3021 $MCB_STACK_CCB (DB [S_WAITING_FOR_TRANSMIT], .CCB);
; 3022 leave BUILD_MESSAGES;
; 3023 end;
; 3024
; 3025 if (DB [L_BABBLE_COUNT] = .DB [L_BABBLE_COUNT] - 1) eql 0 then exitloop;
; 3026
; 3027 end;
; 3028
; 3029 if .DB [SS_SEND_SELECT] and (.DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] eqla 0)
; 3030 then
; 3031 DB [SS_SEND_ACK] = TRUE;
; 3032
; 3033 if .DB [SS_SEND_ACK]
; 3034 then
; 3035 BUILD_CONTROL_MESSAGE (DB [D_TIM]);
; 3036
; 3037 end;
; 3038 end;
; 3039 [SS_MAINTENANCE] :
; 3040 begin
; 3041
; 3042 local
; 3043 CCB : ref block field (C_FIELDS);
; 3044
; 3045 if not $MCB_DEQUEUE_CCB (DB [S_WAITING_FOR_TRANSMIT], CCB) then return;
; 3046
; 3047 if (BUILD_MAINTENANCE_MESSAGE (DB [D_TIM], .CCB) eqla 0)
; 3048 then
; 3049 begin
; 3050 $MCB_STACK_CCB (DB [S_WAITING_FOR_TRANSMIT], .CCB);
; 3051 return;
; 3052 end;
; 3053
; 3054 end;
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 115
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (49)
; 3055 [inrange] : return;
; 3056 tes;
; 3057
; 3058 if .DB [SS_SEND_SELECT] and (.DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0)
; 3059 then
; 3060 begin
; 3061
; 3062 local
; 3063 CCB : ref block field (C_FIELDS);
; 3064
; 3065 CCB = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)];
; 3066 DB [SS_SEND_SELECT] = FALSE;
; 3067 begin
; 3068
; 3069 local
; 3070 HEADER : ref block [H_LENGTH] field (HDR_FIELDS);
; 3071
; 3072 HEADER = .CCB [C_ADDR];
; 3073 HEADER [H_SELECT] = TRUE;
; 3074 end;
; 3075 CCB [C_MOD] = FM_SYN;
; 3076
; 3077 if (CCB = .CCB [C_PRM4]) neqa 0
; 3078 then
; 3079 begin
; 3080
; 3081 local
; 3082 HEADER : ref block [H_LENGTH] field (HDR_FIELDS);
; 3083
; 3084 HEADER = .CCB [C_ADDR];
; 3085 HEADER [H_QSYNC] = TRUE;
; 3086 end;
; 3087
; 3088
; 3089 if .DB [L_DUPLEX] neq DL_FULL
; 3090 then
; 3091 DB [LS_STATION_ENABLED] = FALSE;
; 3092
; 3093 end;
; 3094
; 3095 begin
; 3096
; 3097 local
; 3098 CCB : ref block field (C_FIELDS);
; 3099
; 3100 if (CCB = .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)]) neqa 0
; 3101 then
; 3102 SYNCHRONIZE (DB [D_TIM], .CCB);
; 3103
; 3104 end;
; 3105 begin
; 3106
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 116
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (49)
; 3107 external routine
; 3108 $DDXME : DDM_CCB novalue;
; 3109
; 3110 FLUSH_QUEUE (DB [L_PRE_TRANSMIT], %quote $DDXME);
; 3111 end;
; 3112 end; !of routine SEND_DATA
.GLOBL $CMQIF, $DDXME
.SBTTL SEND.DATA
000000 162706 000012 SEND.DATA:
SUB #12,SP ; 2951
000004 105765 000007 TSTB 7(R5) ; *(DB) 2977
000010 001052 BNE 3$
000012 012766 000146 000002 MOV #146,2(SP) ; 2979
000020 060566 000002 ADD R5,2(SP) ; DB,*
000024 105776 000002 TSTB @2(SP)
000030 001042 BNE 3$
000032 005715 TST (R5) ; DB 2981
000034 100176 BPL 12$
000036 012766 000162 000004 MOV #162,4(SP) ; 2983
000044 060566 000004 ADD R5,4(SP) ; DB,*
000050 017600 000004 MOV @4(SP),R0
000054 000300 SWAB R0
000056 110076 000004 MOVB R0,@4(SP)
000062 012766 000002 000006 MOV #2,6(SP) ; 2985
000070 060566 000006 ADD R5,6(SP) ; DB,*
000074 117600 000006 MOVB @6(SP),R0
000100 006300 ASL R0
000102 066007 000304' ADD P.AAS(R0),PC ; Case dispatch
000106 032776 001000 000006 1$: BIT #1000,@6(SP) ; 2990
000114 001004 BNE 2$
000116 032776 000400 000006 BIT #400,@6(SP)
000124 001542 BEQ 12$
000126 004767 170616 2$: JSR PC,BUILD.CONTROL.MESSAGE ; 2992
000132 005700 TST R0
000134 001137 BNE 13$
000136 000535 3$: BR 12$
000140 032776 004000 000006 4$: BIT #4000,@6(SP) ; 3003
000146 001004 BNE 5$
000150 032776 002000 000006 BIT #2000,@6(SP)
000156 001405 BEQ 6$
000160 004767 170564 5$: JSR PC,BUILD.CONTROL.MESSAGE ; 3005
000164 005700 TST R0
000166 001364 BNE 4$
000170 000521 BR 13$
000172 032715 002000 6$: BIT #2000,(R5) ; *,DB 3007
000176 001046 BNE 9$
000200 012766 000114 000010 MOV #114,10(SP) ; 3016
000206 060566 000010 ADD R5,10(SP) ; DB,*
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 117
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (49)
000212 017601 000002 7$: MOV @2(SP),R1 ; 3010
000216 105001 CLRB R1
000220 000301 SWAB R1
000222 005000 CLR R0
000224 157600 000002 BISB @2(SP),R0
000230 020001 CMP R0,R1
000232 002030 BGE 9$
000234 016603 000010 MOV 10(SP),R3 ; 3016
000240 004767 000000G JSR PC,$CMQRM
000244 103423 BCS 9$
000246 010416 MOV R4,(SP) ; $MCB$R4,CCB
000250 004767 171052 JSR PC,BUILD.DATA.MESSAGE ; 3018
000254 005700 TST R0
000256 001006 BNE 8$
000260 011604 MOV (SP),R4 ; CCB,* 3021
000262 016603 000010 MOV 10(SP),R3
000266 004767 000000G JSR PC,$CMQIF
000272 000460 BR 13$ ; 3020
000274 005000 8$: CLR R0 ; 3025
000276 157600 000004 BISB @4(SP),R0
000302 005300 DEC R0
000304 110076 000004 MOVB R0,@4(SP)
000310 005700 TST R0
000312 001337 BNE 7$
000314 032776 020000 000006 9$: BIT #20000,@6(SP) ; 3029
000322 001406 BEQ 10$
000324 005765 000150 TST 150(R5) ; *(DB)
000330 001003 BNE 10$
000332 052776 010000 000006 BIS #10000,@6(SP) ; 3031
000340 032776 010000 000006 10$: BIT #10000,@6(SP) ; 3033
000346 001432 BEQ 13$
000350 004767 170374 JSR PC,BUILD.CONTROL.MESSAGE ; 3035
000354 000427 BR 13$ ; 2985
000356 012766 000114 000010 11$: MOV #114,10(SP) ; 3045
000364 060566 000010 ADD R5,10(SP) ; DB,*
000370 016603 000010 MOV 10(SP),R3
000374 004767 000000G JSR PC,$CMQRM
000400 103474 BCS 17$
000402 010466 000004 MOV R4,4(SP) ; $MCB$R4,CCB
000406 004767 171230 JSR PC,BUILD.MAINTENANCE.MESSAGE ; 3047
000412 005700 TST R0
000414 001007 BNE 13$
000416 016604 000004 MOV 4(SP),R4 ; CCB,* 3050
000422 016603 000010 MOV 10(SP),R3
000426 004767 000000G JSR PC,$CMQIF
000432 000457 12$: BR 17$ ; 3049
000434 032776 020000 000006 13$: BIT #20000,@6(SP) ; 3058
000442 001435 BEQ 15$
000444 005765 000150 TST 150(R5) ; *(DB)
000450 001432 BEQ 15$
000452 016501 000152 MOV 152(R5),R1 ; *(DB),CCB 3065
000456 042776 020000 000006 BIC #20000,@6(SP) ; 3066
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 118
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (49)
000464 016100 000020 MOV 20(R1),R0 ; *(CCB),HEADER 3072
000470 152760 000200 000002 BISB #200,2(R0) ; *,*(HEADER) 3073
000476 112761 000004 000013 MOVB #4,13(R1) ; *,*(CCB) 3075
000504 016101 000032 MOV 32(R1),R1 ; *(CCB),CCB 3077
000510 001405 BEQ 14$
000512 016100 000020 MOV 20(R1),R0 ; *(CCB),HEADER 3084
000516 152760 000100 000002 BISB #100,2(R0) ; *,*(HEADER) 3085
000524 105765 000012 14$: TSTB 12(R5) ; *(DB) 3089
000530 001402 BEQ 15$
000532 042715 100000 BIC #100000,(R5) ; *,DB 3091
000536 016504 000150 15$: MOV 150(R5),R4 ; *(DB),CCB 3100
000542 001402 BEQ 16$
000544 004767 000000V JSR PC,SYNCHRONIZE ; 3102
000550 012703 000150 16$: MOV #150,R3 ; 3110
000554 060503 ADD R5,R3 ; DB,*
000556 004767 000000G JSR PC,$CMQRM
000562 103403 BCS 17$
000564 004767 000000G JSR PC,$DDXME
000570 000767 BR 16$
000572 062706 000012 17$: ADD #12,SP ; 2951
000576 000207 RTS PC
; Routine Size: 192 words, Routine Base: $CODE$ + 7030
; Maximum stack depth per invocation: 6 words
000304 .PSECT $PLIT$, RO , D
P.AAS: ; CASE Table for SEND.DATA+0102 2985
000304 000464 .WORD 464 ; [17$]
000306 000000 .WORD 0 ; [1$]
000310 000000 .WORD 0 ; [1$]
000312 000032 .WORD 32 ; [4$]
000314 000250 .WORD 250 ; [11$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 119
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (50)
; 3113 routine SEND_PERSISTENT_ERROR
; 3114
; 3115 !++
; 3116 ! FUNCTIONAL DESCRIPTION:
; 3117 !
; 3118 !
; 3119 ! FORMAL PARAMETERS:
; 3120 !
; 3121 (DB : ref block field (D_FIELDS),
; 3122 STATUS)
; 3123 !
; 3124 ! IMPLICIT INPUTS:
; 3125 ! None
; 3126 !
; 3127 ! IMPLICIT OUTPUTS:
; 3128 ! None
; 3129 !
; 3130 ! ROUTINE VALUE:
; 3131 !
; 3132 : DCP_DB_STS novalue =
; 3133 !
; 3134 ! SIDE EFFECTS:
; 3135 ! None
; 3136 !--
; 3137
; 3138 begin
; 3139
; 3140 local
; 3141 CCB : ref block field (C_FIELDS);
; 3142
; 3143 if .DB [S_USER_HANDLE] eql 0 then return;
; 3144
; 3145 DB [S_PERSISTENT_ERROR] = .STATUS;
; 3146
; 3147 if $MCB_GET_CCB (CCB)
; 3148 then
; 3149 SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM])
; 3150 else
; 3151 $MCB_REQUEST_CCB ();
; 3152
; 3153 end; !of routine SEND_PERSISTENT_ERROR
.SBTTL SEND.PERSISTENT.ERROR
007630 .PSECT $CODE$, RO
000000 010446 SEND.PERSISTENT.ERROR:
MOV R4,-(SP) ; 3113
000002 005765 000130 TST 130(R5) ; *(DB) 3143
000006 001412 BEQ 2$
000010 010365 000134 MOV R3,134(R5) ; STATUS,*(DB) 3145
000014 004767 000000G JSR PC,$CCBGT ; 3147
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 120
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (50)
000020 103403 BCS 1$
000022 004767 176614 JSR PC,SCHEDULE.PERSISTENT.AST ; 3149
000026 000402 BR 2$ ; 3147
000030 004767 000000G 1$: JSR PC,$CCBRQ ; 3151
000034 012604 2$: MOV (SP)+,R4 ; 3113
000036 000207 RTS PC
; Routine Size: 16 words, Routine Base: $CODE$ + 7630
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 121
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (51)
; 3154 routine SEND_STATE
; 3155
; 3156 !++
; 3157 ! FUNCTIONAL DESCRIPTION:
; 3158 !
; 3159 !
; 3160 ! FORMAL PARAMETERS:
; 3161 !
; 3162 (DB : ref block field (D_FIELDS))
; 3163 !
; 3164 ! IMPLICIT INPUTS:
; 3165 ! None
; 3166 !
; 3167 ! IMPLICIT OUTPUTS:
; 3168 ! None
; 3169 !
; 3170 ! ROUTINE VALUE:
; 3171 !
; 3172 : DCP_DB novalue =
; 3173 !
; 3174 ! SIDE EFFECTS:
; 3175 ! None
; 3176 !--
; 3177
; 3178 begin
; 3179
; 3180 local
; 3181 CCB : ref block field (C_FIELDS);
; 3182
; 3183 if .DB [S_USER_HANDLE] eql 0 then return;
; 3184
; 3185 if .DB [S_PROTOCOL_STATE] eql SS_HALTED then DB [SS_NOTIFY_OFF] = TRUE;
; 3186
; 3187 DB [SS_NOTIFY_STATE] = TRUE;
; 3188
; 3189 if $MCB_GET_CCB (CCB)
; 3190 then
; 3191 SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
; 3192 else
; 3193 $MCB_REQUEST_CCB ();
; 3194
; 3195 end; !of routine SEND_STATE
.SBTTL SEND.STATE
000000 005765 000130 SEND.STATE:
TST 130(R5) ; *(DB) 3183
000004 001421 BEQ 3$
000006 105765 000002 TSTB 2(R5) ; *(DB) 3185
000012 001003 BNE 1$
000014 052765 000400 000004 BIS #400,4(R5) ; *,*(DB)
000022 052765 001000 000004 1$: BIS #1000,4(R5) ; *,*(DB) 3187
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 122
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (51)
000030 004767 000000G JSR PC,$CCBGT ; 3189
000034 103403 BCS 2$
000036 004767 176656 JSR PC,SCHEDULE.STATE.AST ; 3191
000042 000207 RTS PC ; 3189
000044 004767 000000G 2$: JSR PC,$CCBRQ ; 3193
000050 000207 3$: RTS PC ; 3154
; Routine Size: 21 words, Routine Base: $CODE$ + 7670
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 123
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (52)
; 3196 routine SEND_TRANSIENT_ERROR
; 3197
; 3198 !++
; 3199 ! FUNCTIONAL DESCRIPTION:
; 3200 !
; 3201 !
; 3202 ! FORMAL PARAMETERS:
; 3203 !
; 3204 (DB : ref block field (D_FIELDS),
; 3205 STATUS)
; 3206 !
; 3207 ! IMPLICIT INPUTS:
; 3208 ! None
; 3209 !
; 3210 ! IMPLICIT OUTPUTS:
; 3211 ! None
; 3212 !
; 3213 ! ROUTINE VALUE:
; 3214 !
; 3215 : DCP_DB_STS novalue =
; 3216 !
; 3217 ! SIDE EFFECTS:
; 3218 ! None
; 3219 !--
; 3220
; 3221 begin
; 3222
; 3223 local
; 3224 CCB : ref block field (C_FIELDS);
; 3225
; 3226 if .DB [S_USER_HANDLE] eql 0 then return;
; 3227
; 3228 DB [S_TRANSIENT_ERROR] = .STATUS;
; 3229
; 3230 if $MCB_GET_CCB (CCB)
; 3231 then
; 3232 SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM])
; 3233 else
; 3234 $MCB_REQUEST_CCB ();
; 3235
; 3236 end; !of routine SEND_TRANSIENT_ERROR
.SBTTL SEND.TRANSIENT.ERROR
000000 010446 SEND.TRANSIENT.ERROR:
MOV R4,-(SP) ; 3196
000002 005765 000130 TST 130(R5) ; *(DB) 3226
000006 001412 BEQ 2$
000010 010365 000132 MOV R3,132(R5) ; STATUS,*(DB) 3228
000014 004767 000000G JSR PC,$CCBGT ; 3230
000020 103403 BCS 1$
000022 004767 176730 JSR PC,SCHEDULE.TRANSIENT.AST ; 3232
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 124
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (52)
000026 000402 BR 2$ ; 3230
000030 004767 000000G 1$: JSR PC,$CCBRQ ; 3234
000034 012604 2$: MOV (SP)+,R4 ; 3196
000036 000207 RTS PC
; Routine Size: 16 words, Routine Base: $CODE$ + 7742
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 125
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (53)
; 3237 global routine SET_DEVICE
; 3238
; 3239 !++
; 3240 ! FUNCTIONAL DESCRIPTION:
; 3241 !
; 3242 !
; 3243 ! FORMAL PARAMETERS:
; 3244 !
; 3245 (DB : ref block field (D_FIELDS))
; 3246 !
; 3247 ! IMPLICIT INPUTS:
; 3248 ! None
; 3249 !
; 3250 ! IMPLICIT OUTPUTS:
; 3251 ! None
; 3252 !
; 3253 ! ROUTINE VALUE:
; 3254 !
; 3255 : DCP_DB novalue =
; 3256 !
; 3257 ! SIDE EFFECTS:
; 3258 ! None
; 3259 !--
; 3260
; 3261 begin
; 3262
; 3263 while .DB [D_CONTROL_FLAGS] neq 0 do
; 3264 begin
; 3265
; 3266 if .DB [SS_DEVICE_BEING_SET] then return;
; 3267
; 3268 selectone TRUE of
; 3269 set
; 3270 [.DB [DC_STOP_DEVICE]] :
; 3271
; 3272 if .DB [SS_DEVICE_RUNNING]
; 3273 then
; 3274 begin
; 3275
; 3276 local
; 3277 CCB : ref block field (C_FIELDS);
; 3278
; 3279 if not $MCB_GET_CCB (CCB) then return $MCB_REQUEST_CCB ();
; 3280
; 3281 STOP_DEVICE (.CCB, DB [D_TIM]);
; 3282 end
; 3283 else
; 3284 DB [DC_STOP_DEVICE] = FALSE;
; 3285
; 3286 [.DB [DC_START_DEVICE]] :
; 3287
; 3288 if not .DB [SS_DEVICE_RUNNING]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 126
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (53)
; 3289 then
; 3290 begin
; 3291
; 3292 local
; 3293 CCB : ref block field (C_FIELDS);
; 3294
; 3295 if not $MCB_GET_CCB (CCB) then return $MCB_REQUEST_CCB ();
; 3296
; 3297 START_DEVICE (.CCB, DB [D_TIM]);
; 3298 end
; 3299 else
; 3300 DB [DC_START_DEVICE] = FALSE;
; 3301
; 3302 [.DB [DC_SET_REQUESTED_STATE]] :
; 3303
; 3304 selectone TRUE of
; 3305 set
; 3306 [.DB [L_LINE_STATE] neq DL_ON]:
; 3307 DB [DC_SET_REQUESTED_STATE] = FALSE;
; 3308 [.DB [S_PROTOCOL_STATE] eql .DB [S_REQUESTED_STATE]] :
; 3309 DB [DC_SET_REQUESTED_STATE] = FALSE;
; 3310 [otherwise] :
; 3311 begin
; 3312 SET_LINK (DB [D_TIM], .DB [S_REQUESTED_STATE]);
; 3313 DB [DC_SET_REQUESTED_STATE] = FALSE;
; 3314 end;
; 3315 tes;
; 3316
; 3317 tes;
; 3318
; 3319 end;
; 3320
; 3321 if .DB [S_PROTOCOL_STATE] eql SS_HALTED then return;
; 3322
; 3323 SEND_DATA (DB [D_TIM]);
; 3324 end; !of routine SET_DEVICE
.SBTTL SETDEV
000000 012746 000006 SETDEV::MOV #6,-(SP) ; 3263
000004 060516 ADD R5,(SP) ; DB,*
000006 012746 000004 MOV #4,-(SP) ; 3266
000012 060516 ADD R5,(SP) ; DB,*
000014 032776 177400 000002 1$: BIT #177400,@2(SP) ; 3263
000022 001502 BEQ 10$
000024 032776 004000 000000 BIT #4000,@0(SP) ; 3266
000032 001103 BNE 11$
000034 032776 001000 000002 BIT #1000,@2(SP) ; 3268
000042 001415 BEQ 3$
000044 005776 000000 TST @0(SP) ; 3272
000050 100006 BPL 2$
000052 004767 000000G JSR PC,$CCBGT ; 3279
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 127
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (53)
000056 103421 BLO 4$
000060 004767 000000V JSR PC,STOP.DEVICE ; 3281
000064 000753 BR 1$ ; 3272
000066 042776 001000 000002 2$: BIC #1000,@2(SP) ; 3284
000074 000747 BR 1$ ; 3268
000076 032776 002000 000002 3$: BIT #2000,@2(SP)
000104 001420 BEQ 7$
000106 005776 000000 TST @0(SP) ; 3288
000112 100411 BMI 6$
000114 004767 000000G JSR PC,$CCBGT ; 3295
000120 103003 BHIS 5$
000122 004767 000000G 4$: JSR PC,$CCBRQ
000126 000445 BR 11$
000130 004767 000000V 5$: JSR PC,START.DEVICE ; 3297
000134 000727 BR 1$ ; 3288
000136 042776 002000 000002 6$: BIC #2000,@2(SP) ; 3300
000144 000723 BR 1$ ; 3268
000146 032776 004000 000002 7$: BIT #4000,@2(SP)
000154 001717 BEQ 1$
000156 105765 000014 TSTB 14(R5) ; *(DB) 3306
000162 001004 BNE 8$ ; 3307
000164 126576 000002 000002 CMPB 2(R5),@2(SP) ; *(DB),* 3308
000172 001004 BNE 9$
000174 042776 004000 000002 8$: BIC #4000,@2(SP) ; 3309
000202 000704 BR 1$ ; 3304
000204 117600 000002 9$: MOVB @2(SP),R0 ; 3312
000210 010046 MOV R0,-(SP)
000212 004767 000000V JSR PC,SETLNK
000216 042776 004000 000004 BIC #4000,@4(SP) ; 3313
000224 005726 TST (SP)+ ; 3311
000226 000672 BR 1$ ; 3268
000230 105765 000002 10$: TSTB 2(R5) ; *(DB) 3321
000234 001402 BEQ 11$
000236 004767 176564 JSR PC,SEND.DATA ; 3323
000242 022626 11$: CMP (SP)+,(SP)+ ; 3237
000244 000207 RTS PC
; Routine Size: 83 words, Routine Base: $CODE$ + 10002
; Maximum stack depth per invocation: 4 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 128
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (54)
; 3325 global routine SET_LINK
; 3326
; 3327 !++
; 3328 ! FUNCTIONAL DESCRIPTION:
; 3329 !
; 3330 !
; 3331 ! FORMAL PARAMETERS:
; 3332 !
; 3333 (DB : ref block field (D_FIELDS),
; 3334 STATE)
; 3335 !
; 3336 ! IMPLICIT INPUTS:
; 3337 !
; 3338 ! IMPLICIT OUTPUTS:
; 3339 ! None
; 3340 !
; 3341 ! ROUTINE VALUE:
; 3342 !
; 3343 : DCP_DB novalue =
; 3344 !
; 3345 ! SIDE EFFECTS:
; 3346 ! None
; 3347 !--
; 3348
; 3349 begin
; 3350 DB [LS_STATION_ENABLED] = FALSE;
; 3351 DB [SS_TIMING_REP] = FALSE;
; 3352 DB [SS_RETRANSMIT] = FALSE;
; 3353 DB [SS_START_REP_TIMER] = FALSE;
; 3354 DB [LS_RESYNCH_IN_PROGRESS] = FALSE;
; 3355 DB [SS_SEND_SELECT] = FALSE;
; 3356 DB [SS_SEND_ACK] = FALSE;
; 3357 DB [SS_SEND_REP] = FALSE;
; 3358 DB [SS_SEND_NAK] = FALSE;
; 3359 DB [SS_SEND_START] = FALSE;
; 3360 DB [SS_SEND_STACK] = FALSE;
; 3361 DB [S_R] = 0;
; 3362 DB [S_TM1] = 0;
; 3363 DB [S_X] = 0;
; 3364 DB [S_N] = 0;
; 3365 DB [S_A] = 0;
; 3366 DB [S_AR] = 0;
; 3367 DB [S_PENDING_NAK_REASON] = 0;
; 3368 DB [S_TRANSMIT_THRESHOLD] = 7;
; 3369 DB [S_RECEIVE_THRESHOLD] = 7;
; 3370 DB [S_SELECT_THRESHOLD] = 7;
; 3371
; 3372 case .STATE from SS_LOW to SS_HIGH of
; 3373 set
; 3374 [SS_ISTRT, SS_ASTRT, SS_RUNNING] :
; 3375 begin
; 3376
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 129
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (54)
; 3377 if .DB [L_DUPLEX] eql DL_FULL
; 3378 then
; 3379 DB [SS_HALF_DUPLEX] = FALSE
; 3380 else
; 3381 DB [SS_HALF_DUPLEX] = TRUE;
; 3382
; 3383 DB [SS_SEND_START] = TRUE;
; 3384 DB [SS_SEND_SELECT] = TRUE;
; 3385 DB [DC_START_DEVICE] = TRUE;
; 3386 DB [SS_ACTIVE] = TRUE;
; 3387 CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_ISTRT, LCL);
; 3388 end;
; 3389 [SS_MAINTENANCE] :
; 3390 begin
; 3391 DB [SS_HALF_DUPLEX] = TRUE;
; 3392 DB [DC_START_DEVICE] = TRUE;
; 3393 DB [SS_ACTIVE] = TRUE;
; 3394 CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_MAINTENANCE, LCL);
; 3395 end;
; 3396 [inrange] :
; 3397 begin
; 3398 DB [DC_STOP_DEVICE] = TRUE;
; 3399 DB [SS_ACTIVE] = FALSE;
; 3400 CHANGE_PROTOCOL_STATE (DB [D_TIM], SS_HALTED, LCL);
; 3401 end;
; 3402 tes;
; 3403
; 3404 end; !of routine SET_LINK
.SBTTL SETLNK
000000 042715 107400 SETLNK::BIC #107400,(R5) ; *,DB 3354
000004 012700 000002 MOV #2,R0 ; 3355
000010 060500 ADD R5,R0 ; DB,*
000012 042710 037400 BIC #37400,(R0) ; 3360
000016 105065 000070 CLRB 70(R5) ; *(DB) 3361
000022 105065 000071 CLRB 71(R5) ; *(DB) 3362
000026 105065 000072 CLRB 72(R5) ; *(DB) 3363
000032 105065 000073 CLRB 73(R5) ; *(DB) 3364
000036 105065 000074 CLRB 74(R5) ; *(DB) 3365
000042 105065 000075 CLRB 75(R5) ; *(DB) 3366
000046 105065 000077 CLRB 77(R5) ; *(DB) 3367
000052 112765 000007 000016 MOVB #7,16(R5) ; *,*(DB) 3368
000060 112765 000007 000015 MOVB #7,15(R5) ; *,*(DB) 3369
000066 112765 000007 000017 MOVB #7,17(R5) ; *,*(DB) 3370
000074 012746 000006 MOV #6,-(SP) ; 3385
000100 060516 ADD R5,(SP) ; DB,*
000102 012746 000004 MOV #4,-(SP) ; 3386
000106 060516 ADD R5,(SP) ; DB,*
000110 016601 000006 MOV 6(SP),R1 ; STATE,* 3372
000114 006301 ASL R1
000116 066107 000316' ADD P.AAT(R1),PC ; Case dispatch
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 130
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (54)
000122 105765 000012 1$: TSTB 12(R5) ; *(DB) 3377
000126 001003 BNE 2$
000130 042715 010000 BIC #10000,(R5) ; *,DB 3379
000134 000402 BR 3$ ; 3377
000136 052715 010000 2$: BIS #10000,(R5) ; *,DB 3381
000142 052710 021000 3$: BIS #21000,(R0) ; 3384
000146 052776 002000 000002 BIS #2000,@2(SP) ; 3385
000154 052776 002000 000000 BIS #2000,@0(SP) ; 3386
000162 012746 000001 MOV #1,-(SP) ; 3387
000166 000422 BR 6$
000170 052715 010000 4$: BIS #10000,(R5) ; *,DB 3391
000174 052776 002000 000002 BIS #2000,@2(SP) ; 3392
000202 052776 002000 000000 BIS #2000,@0(SP) ; 3393
000210 012746 000004 MOV #4,-(SP) ; 3394
000214 000407 BR 6$
000216 052776 001000 000002 5$: BIS #1000,@2(SP) ; 3398
000224 042776 002000 000000 BIC #2000,@0(SP) ; 3399
000232 005046 CLR -(SP) ; 3400
000234 005046 6$: CLR -(SP)
000236 004767 170536 JSR PC,CHANGE.PROTOCOL.STATE
000242 062706 000010 ADD #10,SP ; 3325
000246 000207 RTS PC
; Routine Size: 84 words, Routine Base: $CODE$ + 10250
; Maximum stack depth per invocation: 5 words
000316 .PSECT $PLIT$, RO , D
P.AAT: ; CASE Table for SETLNK+0116 3372
000316 000074 .WORD 74 ; [5$]
000320 000000 .WORD 0 ; [1$]
000322 000000 .WORD 0 ; [1$]
000324 000000 .WORD 0 ; [1$]
000326 000046 .WORD 46 ; [4$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 131
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (55)
; 3405 global routine STARCE
; 3406
; 3407 !++
; 3408 ! FUNCTIONAL DESCRIPTION:
; 3409 !
; 3410 !
; 3411 ! FORMAL PARAMETERS:
; 3412 !
; 3413 (DB : ref block field (D_FIELDS),
; 3414 CCB : ref block field (C_FIELDS))
; 3415 !
; 3416 ! IMPLICIT INPUTS:
; 3417 !
; 3418 ! IMPLICIT OUTPUTS:
; 3419 ! None
; 3420 !
; 3421 ! ROUTINE VALUE:
; 3422 !
; 3423 : DCP_DB_CCBR novalue =
; 3424 !
; 3425 ! SIDE EFFECTS:
; 3426 ! None
; 3427 !--
; 3428
; 3429 begin
; 3430
; 3431 external routine
; 3432 $DDRCE : DDM_CCB novalue;
; 3433
; 3434 CCB [C_ADDR] = .CCB [C_ADDR] - H_LENGTH*%upval;
; 3435 CCB [C_CNT] = .CCB [C_CNT] + H_LENGTH*%upval;
; 3436 CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
; 3437 $DDRCE (.CCB);
; 3438 end; !of routine STARCE
.GLOBL $DDRCE
.SBTTL STARCE
010520 .PSECT $CODE$, RO
000000 162764 000006 000020 STARCE::SUB #6,20(R4) ; *,*(CCB) 3434
000006 062764 000006 000022 ADD #6,22(R4) ; *,*(CCB) 3435
000014 016564 000144 000010 MOV 144(R5),10(R4) ; *(DB),*(CCB) 3436
000022 004767 000000G JSR PC,$DDRCE ; 3437
000026 000207 RTS PC ; 3405
; Routine Size: 12 words, Routine Base: $CODE$ + 10520
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 132
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (56)
; 3439 routine START_DEVICE
; 3440
; 3441 !++
; 3442 ! FUNCTIONAL DESCRIPTION:
; 3443 !
; 3444 !
; 3445 ! FORMAL PARAMETERS:
; 3446 !
; 3447 (CCB : ref block field (C_FIELDS),
; 3448 DB : ref block field (D_FIELDS))
; 3449 !
; 3450 ! IMPLICIT INPUTS:
; 3451 ! None
; 3452 !
; 3453 ! IMPLICIT OUTPUTS:
; 3454 ! None
; 3455 !
; 3456 ! ROUTINE VALUE:
; 3457 !
; 3458 : DCP_CCB_DB novalue =
; 3459 !
; 3460 ! SIDE EFFECTS:
; 3461 ! None
; 3462 !--
; 3463
; 3464 begin
; 3465
; 3466 external routine
; 3467 $DDSET : DDM_CCB novalue;
; 3468
; 3469 DB [DC_START_DEVICE] = FALSE;
; 3470 DB [SS_DEVICE_BEING_SET] = TRUE;
; 3471 CCB [C_PRM4] = .DB [L_CLOCK];
; 3472 CCB [C_PRM3] = .DB [L_CONTROLLER];
; 3473 CCB [C_PRM2] = .DB [L_DUPLEX];
; 3474 CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
; 3475 $DDSET (.CCB);
; 3476 end; !of routine START_DEVICE
.GLOBL $DDSET
.SBTTL START.DEVICE
000000 042765 002000 000006 START.DEVICE:
BIC #2000,6(R5) ; *,*(DB) 3469
000006 052765 004000 000004 BIS #4000,4(R5) ; *,*(DB) 3470
000014 116564 000013 000032 MOVB 13(R5),32(R4) ; *(DB),*(CCB) 3471
000022 105064 000033 CLRB 33(R4) ; *(CCB)
000026 116564 000011 000030 MOVB 11(R5),30(R4) ; *(DB),*(CCB) 3472
000034 105064 000031 CLRB 31(R4) ; *(CCB)
000040 116564 000012 000026 MOVB 12(R5),26(R4) ; *(DB),*(CCB) 3473
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 133
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (56)
000046 105064 000027 CLRB 27(R4) ; *(CCB)
000052 016564 000144 000010 MOV 144(R5),10(R4) ; *(DB),*(CCB) 3474
000060 004767 000000G JSR PC,$DDSET ; 3475
000064 000207 RTS PC ; 3439
; Routine Size: 27 words, Routine Base: $CODE$ + 10550
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 134
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (57)
; 3477 routine STOP_DEVICE
; 3478
; 3479 !++
; 3480 ! FUNCTIONAL DESCRIPTION:
; 3481 !
; 3482 !
; 3483 ! FORMAL PARAMETERS:
; 3484 !
; 3485 (CCB : ref block field (C_FIELDS),
; 3486 DB : ref block field (D_FIELDS))
; 3487 !
; 3488 ! IMPLICIT INPUTS:
; 3489 ! None
; 3490 !
; 3491 ! IMPLICIT OUTPUTS:
; 3492 ! None
; 3493 !
; 3494 ! ROUTINE VALUE:
; 3495 !
; 3496 : DCP_CCB_DB novalue =
; 3497 !
; 3498 ! SIDE EFFECTS:
; 3499 ! None
; 3500 !--
; 3501
; 3502 begin
; 3503
; 3504 external routine
; 3505 $DDSTP : DDM_CCB novalue;
; 3506
; 3507 DB [DC_STOP_DEVICE] = FALSE;
; 3508 DB [SS_DEVICE_RUNNING] = FALSE;
; 3509 DB [SS_DEVICE_BEING_SET] = TRUE;
; 3510 CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
; 3511 $DDSTP (.CCB);
; 3512 end; !of routine STOP_DEVICE
.GLOBL $DDSTP
.SBTTL STOP.DEVICE
000000 042765 001000 000006 STOP.DEVICE:
BIC #1000,6(R5) ; *,*(DB) 3507
000006 042765 100000 000004 BIC #100000,4(R5) ; *,*(DB) 3508
000014 052765 004000 000004 BIS #4000,4(R5) ; *,*(DB) 3509
000022 016564 000144 000010 MOV 144(R5),10(R4) ; *(DB),*(CCB) 3510
000030 004767 000000G JSR PC,$DDSTP ; 3511
000034 000207 RTS PC ; 3477
; Routine Size: 15 words, Routine Base: $CODE$ + 10636
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 135
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (58)
; 3513 routine STOP_LINK
; 3514
; 3515 !++
; 3516 ! FUNCTIONAL DESCRIPTION:
; 3517 !
; 3518 !
; 3519 ! FORMAL PARAMETERS:
; 3520 !
; 3521 (DB : ref block field (D_FIELDS),
; 3522 CCB : ref block field (C_FIELDS))
; 3523 !
; 3524 ! IMPLICIT INPUTS:
; 3525 !
; 3526 ! IMPLICIT OUTPUTS:
; 3527 ! None
; 3528 !
; 3529 ! ROUTINE VALUE:
; 3530 !
; 3531 : MCB_DB_CCB novalue =
; 3532 !
; 3533 ! SIDE EFFECTS:
; 3534 ! None
; 3535 !--
; 3536
; 3537 begin
; 3538 DB [DC_SET_REQUESTED_STATE] = TRUE;
; 3539 DB [S_REQUESTED_STATE] = SS_HALTED;
; 3540 SET_DEVICE (DB [D_TIM]);
; 3541 CCB [C_FNC] = FC_XCP;
; 3542 CCB [C_STS] = DLL$_SUCCESS;
; 3543 $MCB_SCHEDULE_CCB (.CCB);
; 3544 end; !of routine STOP_LINK
.SBTTL STOP.LINK
000000 010446 STOP.LINK:
MOV R4,-(SP) ; 3513
000002 052765 004000 000006 BIS #4000,6(R5) ; *,*(DB) 3538
000010 105065 000006 CLRB 6(R5) ; *(DB) 3539
000014 004767 177066 JSR PC,SETDEV ; 3540
000020 011600 MOV (SP),R0 ; 3541
000022 112760 000014 000012 MOVB #14,12(R0)
000030 012760 100001 000014 MOV #-77777,14(R0) ; 3542
000036 010004 MOV R0,R4 ; 3543
000040 004767 000000G JSR PC,$SCHED
000044 005726 TST (SP)+ ; 3513
000046 000207 RTS PC
; Routine Size: 20 words, Routine Base: $CODE$ + 10674
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 136
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (59)
; 3545 routine SYNCHRONIZE
; 3546
; 3547 !++
; 3548 ! FUNCTIONAL DESCRIPTION:
; 3549 !
; 3550 !
; 3551 ! FORMAL PARAMETERS:
; 3552 !
; 3553 (DB : ref block field (D_FIELDS),
; 3554 CCB : ref block field (C_FIELDS))
; 3555 !
; 3556 ! IMPLICIT INPUTS:
; 3557 !
; 3558 ! IMPLICIT OUTPUTS:
; 3559 ! None
; 3560 !
; 3561 ! ROUTINE VALUE:
; 3562 !
; 3563 : DCP_DB_CCB_N0 novalue =
; 3564 !
; 3565 ! SIDE EFFECTS:
; 3566 ! None
; 3567 !--
; 3568
; 3569 begin
; 3570
; 3571 if .DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_FIRST)] neqa 0
; 3572 then
; 3573 begin
; 3574
; 3575 local
; 3576 HEADER : ref block field (HDR_FIELDS);
; 3577
; 3578 HEADER = .block [.DB [$SUB_FIELD (L_PRE_TRANSMIT, LIST_LAST)], C_ADDR];
; 3579 HEADER [H_QSYNC] = TRUE;
; 3580 end;
; 3581
; 3582 CCB [C_MOD] = FM_SYN;
; 3583 end; !of routine SYNCHRONIZE
.SBTTL SYNCHRONIZE
000000 005765 000150 SYNCHRONIZE:
TST 150(R5) ; *(DB) 3571
000004 001407 BEQ 1$
000006 016503 000152 MOV 152(R5),R3 ; *(DB),* 3578
000012 016303 000020 MOV 20(R3),R3 ; *,HEADER
000016 152763 000100 000002 BISB #100,2(R3) ; *,*(HEADER) 3579
000024 112764 000004 000013 1$: MOVB #4,13(R4) ; *,*(CCB) 3582
000032 000207 RTS PC ; 3545
; Routine Size: 14 words, Routine Base: $CODE$ + 10744
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 137
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (59)
; Maximum stack depth per invocation: 0 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 138
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (60)
; 3584 routine TERMINATE_SELECTION_INTERVAL
; 3585
; 3586 !++
; 3587 ! FUNCTIONAL DESCRIPTION:
; 3588 !
; 3589 !
; 3590 ! FORMAL PARAMETERS:
; 3591 !
; 3592 (DB : ref block field (D_FIELDS))
; 3593 !
; 3594 ! IMPLICIT INPUTS:
; 3595 !
; 3596 ! IMPLICIT OUTPUTS:
; 3597 ! None
; 3598 !
; 3599 ! ROUTINE VALUE:
; 3600 !
; 3601 : DCP_DB novalue =
; 3602 !
; 3603 ! SIDE EFFECTS:
; 3604 ! None
; 3605 !--
; 3606
; 3607 begin
; 3608
; 3609 if .DB [SS_TIMING_REP]
; 3610 then
; 3611 begin
; 3612 DB [SS_START_REP_TIMER] = FALSE;
; 3613 DB [SS_TIMING_REP] = FALSE;
; 3614
; 3615 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 3616 set
; 3617 [SS_ISTRT] :
; 3618 begin
; 3619 DB [SS_SEND_START] = TRUE;
; 3620 DB [SS_SEND_SELECT] = TRUE;
; 3621 end;
; 3622 [SS_ASTRT] :
; 3623 begin
; 3624 DB [SS_SEND_STACK] = TRUE;
; 3625 DB [SS_SEND_SELECT] = TRUE;
; 3626 end;
; 3627 [SS_RUNNING] :
; 3628 begin
; 3629 DB [SS_SEND_REP] = TRUE;
; 3630 COUNTER_INCREMENT (DB, S_LOCAL_REPLY_TIMEOUTS);
; 3631 TEST_TRANSMIT_THRESHOLD (DB [D_TIM]);
; 3632 end;
; 3633 [inrange] :
; 3634 NO_OPERATION;
; 3635 tes;
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 139
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (60)
; 3636
; 3637 end;
; 3638
; 3639 DB [LS_STATION_ENABLED] = TRUE;
; 3640
; 3641 if .DB [SS_HALF_DUPLEX] then DB [SS_SEND_SELECT] = TRUE;
; 3642
; 3643 SEND_DATA (DB [D_TIM]);
; 3644 end; !of routine TERMINATE_SELECTION_INTERVAL
.SBTTL TERMINATE.SELECTION.INTERVAL
000000 032715 004000 TERMINATE.SELECTION.INTERVAL:
BIT #4000,(R5) ; *,DB 3609
000004 001432 BEQ 5$
000006 042715 005000 BIC #5000,(R5) ; *,DB 3613
000012 012700 000002 MOV #2,R0 ; 3615
000016 060500 ADD R5,R0 ; DB,*
000020 111001 MOVB (R0),R1
000022 006301 ASL R1
000024 066107 000330' ADD P.AAU(R1),PC ; Case dispatch
000030 052710 001000 1$: BIS #1000,(R0) ; 3619
000034 000402 BR 3$ ; 3620
000036 052710 000400 2$: BIS #400,(R0) ; 3624
000042 052710 020000 3$: BIS #20000,(R0) ; 3625
000046 000411 BR 5$ ; 3615
000050 052710 004000 4$: BIS #4000,(R0) ; 3629
000054 012700 000054 MOV #54,R0 ; 3630
000060 060500 ADD R5,R0 ; DB,*
000062 004767 000000G JSR PC,$IC8
000066 004767 000000V JSR PC,TEST.TRANSMIT.THRESHOLD ; 3631
000072 052715 100000 5$: BIS #100000,(R5) ; *,DB 3639
000076 032715 010000 BIT #10000,(R5) ; *,DB 3641
000102 001403 BEQ 6$
000104 052765 020000 000002 BIS #20000,2(R5) ; *,*(DB)
000112 004767 175712 6$: JSR PC,SEND.DATA ; 3643
000116 000207 RTS PC ; 3584
; Routine Size: 40 words, Routine Base: $CODE$ + 11000
; Maximum stack depth per invocation: 1 word
000330 .PSECT $PLIT$, RO , D
P.AAU: ; CASE Table for TERMINATE.SELEC+0024 3615
000330 000042 .WORD 42 ; [5$]
000332 000000 .WORD 0 ; [1$]
000334 000006 .WORD 6 ; [2$]
000336 000020 .WORD 20 ; [4$]
000340 000042 .WORD 42 ; [5$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 140
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (61)
; 3645 routine TEST_RECEIVE_THRESHOLD
; 3646
; 3647 !++
; 3648 ! FUNCTIONAL DESCRIPTION:
; 3649 !
; 3650 !
; 3651 ! FORMAL PARAMETERS:
; 3652 !
; 3653 (DB : ref block field (D_FIELDS))
; 3654 !
; 3655 ! IMPLICIT INPUTS:
; 3656 !
; 3657 ! IMPLICIT OUTPUTS:
; 3658 ! None
; 3659 !
; 3660 ! ROUTINE VALUE:
; 3661 !
; 3662 : DCP_DB_N0 novalue =
; 3663 !
; 3664 ! SIDE EFFECTS:
; 3665 ! None
; 3666 !--
; 3667
; 3668 begin
; 3669 TEST_THRESHOLD (DB [D_TIM], DB [S_RECEIVE_THRESHOLD], 4, DLL$_RECEIVE_THRESHOLD);
; 3670 end; !of routine TEST_RECEIVE_THRESHOLD
.SBTTL TEST.RECEIVE.THRESHOLD
011120 .PSECT $CODE$, RO
000000 004167 000000G TEST.RECEIVE.THRESHOLD:
JSR R1,$SAVE3 ; 3645
000004 010046 MOV R0,-(SP)
000006 010500 MOV R5,R0 ; DB,* 3669
000010 062700 000015 ADD #15,R0
000014 012746 100110 MOV #-77670,-(SP)
000020 012703 000004 MOV #4,R3
000024 004767 000000V JSR PC,TEST.THRESHOLD
000030 005726 TST (SP)+ ; 3668
000032 012600 MOV (SP)+,R0 ; 3645
000034 000207 RTS PC
; Routine Size: 15 words, Routine Base: $CODE$ + 11120
; Maximum stack depth per invocation: 7 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 141
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (62)
; 3671 routine TEST_SELECT_THRESHOLD
; 3672
; 3673 !++
; 3674 ! FUNCTIONAL DESCRIPTION:
; 3675 !
; 3676 !
; 3677 ! FORMAL PARAMETERS:
; 3678 !
; 3679 (DB : ref block field (D_FIELDS))
; 3680 !
; 3681 ! IMPLICIT INPUTS:
; 3682 !
; 3683 ! IMPLICIT OUTPUTS:
; 3684 ! None
; 3685 !
; 3686 ! ROUTINE VALUE:
; 3687 !
; 3688 : DCP_DB_N0 novalue =
; 3689 !
; 3690 ! SIDE EFFECTS:
; 3691 ! None
; 3692 !--
; 3693
; 3694 begin
; 3695 TEST_THRESHOLD (DB [D_TIM], DB [S_SELECT_THRESHOLD], 5, DLL$_SELECTION_THRESHOLD);
; 3696 end; !of routine TEST_SELECT_THRESHOLD
.SBTTL TEST.SELECT.THRESHOLD
000000 004167 000000G TEST.SELECT.THRESHOLD:
JSR R1,$SAVE3 ; 3671
000004 010046 MOV R0,-(SP)
000006 010500 MOV R5,R0 ; DB,* 3695
000010 062700 000017 ADD #17,R0
000014 012746 100120 MOV #-77660,-(SP)
000020 012703 000005 MOV #5,R3
000024 004767 000000V JSR PC,TEST.THRESHOLD
000030 005726 TST (SP)+ ; 3694
000032 012600 MOV (SP)+,R0 ; 3671
000034 000207 RTS PC
; Routine Size: 15 words, Routine Base: $CODE$ + 11156
; Maximum stack depth per invocation: 7 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 142
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (63)
; 3697 routine TEST_THRESHOLD
; 3698
; 3699 !++
; 3700 ! FUNCTIONAL DESCRIPTION:
; 3701 !
; 3702 !
; 3703 ! FORMAL PARAMETERS:
; 3704 !
; 3705 (DB : ref block field (D_FIELDS),
; 3706 CTR : ref block,
; 3707 TYPE,
; 3708 STS)
; 3709 !
; 3710 ! IMPLICIT INPUTS:
; 3711 !
; 3712 ! IMPLICIT OUTPUTS:
; 3713 ! None
; 3714 !
; 3715 ! ROUTINE VALUE:
; 3716 !
; 3717 : DCP_DB_CTR_STS novalue =
; 3718 !
; 3719 ! SIDE EFFECTS:
; 3720 ! None
; 3721 !--
; 3722
; 3723 begin
; 3724
; 3725 macro
; 3726 NUM = 0, 0, 8, 1 %;
; 3727
; 3728 CTR [NUM] = .CTR [NUM] - 1;
; 3729
; 3730 if .CTR [NUM] neq 0
; 3731 then
; 3732 begin
; 3733
; 3734 if .CTR [NUM] lss 0 then CTR [NUM] = 0;
; 3735
; 3736 return;
; 3737 end;
; 3738
; 3739 if .DB [S_PROTOCOL_STATE] eql SS_RUNNING
; 3740 then
; 3741 CTR [NUM] = 7;
; 3742
; 3743 begin
; 3744
; 3745 external routine
; 3746 PARAMETER_CIRCUIT_COUNTERS : LINKAGE_DB novalue;
; 3747
; P 3748 $NM_DLL_EVENT (.TYPE, .DB [S_CIRCUIT_ENTITY],
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 143
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (63)
; 3749 PARAMETER_CIRCUIT_COUNTERS (DB [D_TIM]));
; 3750 end;
; 3751 SEND_TRANSIENT_ERROR (DB [D_TIM], .STS);
; 3752 end; !of routine TEST_THRESHOLD
.GLOBL CKCTRS
.SBTTL TEST.THRESHOLD
000000 105310 TEST.THRESHOLD:
DECB (R0) ; CTR 3728
000002 001403 BEQ 1$ ; 3730
000004 100027 BPL 3$ ; 3734
000006 105010 CLRB (R0) ; CTR
000010 000207 RTS PC ; 3732
000012 126527 000002 000003 1$: CMPB 2(R5),#3 ; *(DB),* 3739
000020 001002 BNE 2$
000022 112710 000007 MOVB #7,(R0) ; *,CTR 3741
000026 004767 000000G 2$: JSR PC,$NLBEG ; 3749
000032 004767 000000G JSR PC,CKCTRS
000036 062703 000500 ADD #500,R3 ; *,TYPE
000042 010300 MOV R3,R0
000044 016501 000126 MOV 126(R5),R1 ; *(DB),*
000050 004767 000000G JSR PC,$NLEND
000054 016603 000002 MOV 2(SP),R3 ; STS,* 3751
000060 004767 176442 JSR PC,SEND.TRANSIENT.ERROR
000064 000207 3$: RTS PC ; 3697
; Routine Size: 27 words, Routine Base: $CODE$ + 11214
; Maximum stack depth per invocation: 1 word
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 144
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (64)
; 3753 routine TEST_TRANSMIT_THRESHOLD
; 3754
; 3755 !++
; 3756 ! FUNCTIONAL DESCRIPTION:
; 3757 !
; 3758 !
; 3759 ! FORMAL PARAMETERS:
; 3760 !
; 3761 (DB : ref block field (D_FIELDS))
; 3762 !
; 3763 ! IMPLICIT INPUTS:
; 3764 !
; 3765 ! IMPLICIT OUTPUTS:
; 3766 ! None
; 3767 !
; 3768 ! ROUTINE VALUE:
; 3769 !
; 3770 : DCP_DB_N0 novalue =
; 3771 !
; 3772 ! SIDE EFFECTS:
; 3773 ! None
; 3774 !--
; 3775
; 3776 begin
; 3777 TEST_THRESHOLD (DB [D_TIM], DB [S_TRANSMIT_THRESHOLD], 3, DLL$_TRANSMIT_THRESHOLD);
; 3778 end; !of routine TEST_TRANSMIT_THRESHOLD
.SBTTL TEST.TRANSMIT.THRESHOLD
000000 004167 000000G TEST.TRANSMIT.THRESHOLD:
JSR R1,$SAVE3 ; 3753
000004 010046 MOV R0,-(SP)
000006 010500 MOV R5,R0 ; DB,* 3777
000010 062700 000016 ADD #16,R0
000014 012746 100100 MOV #-77700,-(SP)
000020 012703 000003 MOV #3,R3
000024 004767 177662 JSR PC,TEST.THRESHOLD
000030 005726 TST (SP)+ ; 3776
000032 012600 MOV (SP)+,R0 ; 3753
000034 000207 RTS PC
; Routine Size: 15 words, Routine Base: $CODE$ + 11302
; Maximum stack depth per invocation: 7 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 145
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (65)
; 3779 routine TIMCCB
; 3780
; 3781 !++
; 3782 ! FUNCTIONAL DESCRIPTION:
; 3783 !
; 3784 !
; 3785 ! FORMAL PARAMETERS:
; 3786 !
; 3787 (DB : ref block field (D_FIELDS),
; 3788 CCB : ref block field (C_FIELDS))
; 3789 !
; 3790 ! IMPLICIT INPUTS:
; 3791 !
; 3792 ! IMPLICIT OUTPUTS:
; 3793 ! None
; 3794 !
; 3795 ! ROUTINE VALUE:
; 3796 !
; 3797 : MCB_DB_CCB novalue =
; 3798 !
; 3799 ! SIDE EFFECTS:
; 3800 ! None
; 3801 !--
; 3802
; 3803 begin
; 3804
; 3805 map
; 3806 CCB : ref block field (C_FIELDS);
; 3807
; 3808 label
; 3809 RECOVERY;
; 3810
; 3811 do RECOVERY :
; 3812 begin
; 3813
; 3814 if .DB [DC_STOP_DEVICE]
; 3815 then
; 3816 leave RECOVERY with STOP_DEVICE (.CCB, DB [D_TIM]);
; 3817
; 3818 if .DB [DC_START_DEVICE]
; 3819 then
; 3820 leave RECOVERY with START_DEVICE (.CCB, DB [D_TIM]);
; 3821
; 3822 if .DB [S_USER_HANDLE] eql 0 then return $MCB_RETURN_CCB (.CCB);
; 3823
; 3824 if .DB [SS_NOTIFY_STATE] or .DB [SS_NOTIFY_OFF]
; 3825 then
; 3826 leave RECOVERY with SCHEDULE_STATE_AST (.CCB, DB [D_TIM]);
; 3827
; 3828 if .DB [S_TRANSIENT_ERROR] neq 0
; 3829 then
; 3830 leave RECOVERY with SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM]);
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 146
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (65)
; 3831
; 3832 if .DB [S_PERSISTENT_ERROR] neq 0
; 3833 then
; 3834 leave RECOVERY with SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM]);
; 3835
; 3836 return $MCB_RETURN_CCB (.CCB);
; 3837 end
; 3838 while $MCB_GET_CCB (CCB);
; 3839
; 3840 $MCB_REQUEST_CCB ();
; 3841 end; !of routine TIMCCB
.SBTTL TIMCCB
000000 005746 TIMCCB: TST -(SP) ; 3779
000002 010416 1$: MOV R4,(SP)
000004 032765 001000 000006 BIT #1000,6(R5) ; *,*(DB) 3814
000012 001403 BEQ 2$
000014 004767 177256 JSR PC,STOP.DEVICE ; 3816
000020 000451 BR 8$
000022 032765 002000 000006 2$: BIT #2000,6(R5) ; *,*(DB) 3818
000030 001404 BEQ 3$
000032 011604 MOV (SP),R4 ; 3820
000034 004767 177150 JSR PC,START.DEVICE
000040 000441 BR 8$
000042 005765 000130 3$: TST 130(R5) ; *(DB) 3822
000046 001432 BEQ 7$
000050 032765 001000 000004 BIT #1000,4(R5) ; *,*(DB) 3824
000056 001004 BNE 4$
000060 032765 000400 000004 BIT #400,4(R5) ; *,*(DB)
000066 001404 BEQ 5$
000070 011604 4$: MOV (SP),R4 ; 3826
000072 004767 175152 JSR PC,SCHEDULE.STATE.AST
000076 000422 BR 8$
000100 005765 000132 5$: TST 132(R5) ; *(DB) 3828
000104 001404 BEQ 6$
000106 011604 MOV (SP),R4 ; 3830
000110 004767 175244 JSR PC,SCHEDULE.TRANSIENT.AST
000114 000413 BR 8$
000116 005765 000134 6$: TST 134(R5) ; *(DB) 3832
000122 001404 BEQ 7$
000124 011604 MOV (SP),R4 ; 3834
000126 004767 175000 JSR PC,SCHEDULE.PERSISTENT.AST
000132 000404 BR 8$
000134 011604 7$: MOV (SP),R4 ; 3836
000136 004767 000000G JSR PC,$CCBRT
000142 000405 BR 9$ ; 3811
000144 004767 000000G 8$: JSR PC,$CCBGT ; 3838
000150 103314 BHIS 1$
000152 004767 000000G JSR PC,$CCBRQ ; 3840
000156 005726 9$: TST (SP)+ ; 3779
000160 000207 RTS PC
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 147
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (65)
; Routine Size: 57 words, Routine Base: $CODE$ + 11340
; Maximum stack depth per invocation: 2 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 148
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (66)
; 3842 routine TIMPWF
; 3843
; 3844 !++
; 3845 ! FUNCTIONAL DESCRIPTION:
; 3846 !
; 3847 !
; 3848 ! FORMAL PARAMETERS:
; 3849 !
; 3850 (DB : ref block field (D_FIELDS))
; 3851 !
; 3852 ! IMPLICIT INPUTS:
; 3853 !
; 3854 ! IMPLICIT OUTPUTS:
; 3855 ! None
; 3856 !
; 3857 ! ROUTINE VALUE:
; 3858 !
; 3859 : MCB_DB novalue =
; 3860 !
; 3861 ! SIDE EFFECTS:
; 3862 ! None
; 3863 !--
; 3864
; 3865 begin
; 3866 NO_OPERATION;
; 3867 end; !of routine TIMPWF
.SBTTL TIMPWF
000000 000207 TIMPWF: RTS PC ; 3842
; Routine Size: 1 word, Routine Base: $CODE$ + 11522
; Maximum stack depth per invocation: 0 words
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 149
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (67)
; 3868 routine TIMLTM
; 3869
; 3870 !++
; 3871 ! FUNCTIONAL DESCRIPTION:
; 3872 !
; 3873 !
; 3874 ! FORMAL PARAMETERS:
; 3875 !
; 3876 (DB : ref block field (D_FIELDS))
; 3877 !
; 3878 ! IMPLICIT INPUTS:
; 3879 !
; 3880 ! IMPLICIT OUTPUTS:
; 3881 ! None
; 3882 !
; 3883 ! ROUTINE VALUE:
; 3884 !
; 3885 : MCB_DB novalue =
; 3886 !
; 3887 ! SIDE EFFECTS:
; 3888 ! None
; 3889 !--
; 3890
; 3891 begin
; 3892
; 3893 if .DB [L_DUPLEX] neq DL_FULL
; 3894 then
; 3895 begin
; 3896 COUNTER_INCREMENT (DB, S_SELECTION_TIMEOUTS);
; 3897 COUNTER_INCREMENT (DB, SS_NRT);
; 3898 TEST_SELECT_THRESHOLD (DB [D_TIM]);
; 3899 end;
; 3900
; 3901 case .DB [S_PROTOCOL_STATE] from SS_LOW to SS_HIGH of
; 3902 set
; 3903 [SS_HALTED] :
; 3904 return;
; 3905 [SS_ISTRT, SS_ASTRT, SS_RUNNING] :
; 3906
; 3907 if .DB [L_DUPLEX] neq DL_FULL then RESYNCHRONIZE (DB [D_TIM]);
; 3908
; 3909 [SS_MAINTENANCE] :
; 3910 RESYNCHRONIZE (DB [D_TIM]);
; 3911 tes;
; 3912
; 3913 TERMINATE_SELECTION_INTERVAL (DB [D_TIM]);
; 3914 end; !of routine TIMLTM
.SBTTL TIMLTM
000000 012701 000012 TIMLTM: MOV #12,R1 ; 3893
000004 060501 ADD R5,R1 ; DB,*
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 150
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (67)
000006 105711 TSTB (R1)
000010 001412 BEQ 1$
000012 012700 000052 MOV #52,R0 ; 3896
000016 060500 ADD R5,R0 ; DB,*
000020 004767 000000G JSR PC,$IC8
000024 052765 000400 000052 BIS #400,52(R5) ; *,*(DB) 3897
000032 004767 177374 JSR PC,TEST.SELECT.THRESHOLD ; 3898
000036 116500 000002 1$: MOVB 2(R5),R0 ; *(DB),* 3901
000042 006300 ASL R0
000044 066007 000342' ADD P.AAV(R0),PC ; Case dispatch
000050 000207 2$: RTS PC ; 3904
000052 105711 3$: TSTB (R1) ; 3907
000054 001402 BEQ 5$
000056 004767 174452 4$: JSR PC,RESYNCHRONIZE ; 3910
000062 004767 177166 5$: JSR PC,TERMINATE.SELECTION.INTERVAL ; 3913
000066 000207 6$: RTS PC ; 3868
; Routine Size: 28 words, Routine Base: $CODE$ + 11524
; Maximum stack depth per invocation: 1 word
000342 .PSECT $PLIT$, RO , D
P.AAV: ; CASE Table for TIMLTM+0044 3901
000342 000016 .WORD 16 ; [6$]
000344 000002 .WORD 2 ; [3$]
000346 000002 .WORD 2 ; [3$]
000350 000002 .WORD 2 ; [3$]
000352 000006 .WORD 6 ; [4$]
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 151
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (68)
; 3915 routine TRANSMIT
; 3916
; 3917 !++
; 3918 ! FUNCTIONAL DESCRIPTION:
; 3919 !
; 3920 !
; 3921 ! FORMAL PARAMETERS:
; 3922 !
; 3923 (DB : ref block field (D_FIELDS),
; 3924 CCB : ref block field (C_FIELDS))
; 3925 !
; 3926 ! IMPLICIT INPUTS:
; 3927 !
; 3928 ! IMPLICIT OUTPUTS:
; 3929 ! None
; 3930 !
; 3931 ! ROUTINE VALUE:
; 3932 !
; 3933 : MCB_DB_CCB novalue =
; 3934 !
; 3935 ! SIDE EFFECTS:
; 3936 ! None
; 3937 !--
; 3938
; 3939 begin
; 3940 DB [D_USER_BUFFERS] = .DB [D_USER_BUFFERS] + 1;
; 3941
; 3942 if .DB [SS_ACTIVE]
; 3943 then
; 3944 begin
; 3945
; 3946 if .DB [S_PROTOCOL_STATE] eql SS_MAINTENANCE
; 3947 then
; 3948 begin
; 3949 local
; 3950 SAVE_MAP;
; 3951 SMAP$ (SAVE_MAP);
; 3952 MAP$ (.CCB [C_BIAS]);
; 3953 selectone ch$rchar (.CCB [C_ADDR]) of
; 3954 set
; 3955 [8, 12]:
; 3956 ch$wchar (28, ch$plus (.CCB [C_ADDR], 1));
; 3957 tes;
; 3958 MAP$ (.SAVE_MAP);
; 3959 end;
; 3960
; 3961 $MCB_QUEUE_CCB (DB [S_WAITING_FOR_TRANSMIT], .CCB);
; 3962 SEND_DATA (DB [D_TIM]);
; 3963 end
; 3964 else
; 3965 SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_ABORTED);
; 3966
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 152
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (68)
; 3967 end; !of routine TRANSMIT
.SBTTL TRANSMIT
011614 .PSECT $CODE$, RO
000000 010501 TRANSMIT:
MOV R5,R1 ; *,DB 3915
000002 005261 000136 INC 136(R1) ; *(DB) 3940
000006 032761 002000 000004 BIT #2000,4(R1) ; *,*(DB) 3942
000014 001443 BEQ 4$
000016 126127 000002 000004 CMPB 2(R1),#4 ; *(DB),* 3946
000024 001025 BNE 3$
000026 016702 000000G MOV KISAR6,R2 ; *,SAVE.MAP 3951
000032 016467 000016 000000G MOV 16(R4),KISAR6 ; *(CCB),* 3952
000040 005000 CLR R0 ; 3953
000042 157400 000020 BISB @20(R4),R0 ; *(CCB),*
000046 020027 000010 CMP R0,#10
000052 001403 BEQ 1$
000054 020027 000014 CMP R0,#14
000060 001005 BNE 2$
000062 016400 000020 1$: MOV 20(R4),R0 ; *(CCB),* 3956
000066 112760 000034 000001 MOVB #34,1(R0)
000074 010267 000000G 2$: MOV R2,KISAR6 ; SAVE.MAP,* 3958
000100 010105 3$: MOV R1,R5 ; DB,* 3961
000102 062705 000114 ADD #114,R5
000106 010503 MOV R5,R3
000110 004767 000000G JSR PC,$CMQIN
000114 010105 MOV R1,R5 ; DB,* 3962
000116 004767 175072 JSR PC,SEND.DATA
000122 000207 RTS PC ; 3942
000124 010105 4$: MOV R1,R5 ; DB,* 3965
000126 012703 100030 MOV #-77750,R3
000132 004767 175006 JSR PC,SCHEDULE.TRANSMIT
000136 000207 RTS PC ; 3915
; Routine Size: 48 words, Routine Base: $CODE$ + 11614
; Maximum stack depth per invocation: 1 word
; 3968 end
; 3969 eludom
; OTS external references
.GLOBL $SAVE3
; PSECT SUMMARY
;
; Psect Name Words Attributes
DCP 25-Jan-1983 09:57:24 TOPS-20 Bliss-16 3(552) Page 153
X05180 30-Dec-1982 02:25:50 NETPKG:<DRIVERS>DCP.B16.9 (68)
; $PLIT$ 118 RO , D , LCL, REL, CON
; ...... 16 RW , D , LCL, REL, CON
; $CODE$ 2550 RO , I , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; NETPKG:<V3P0>MCBLIB.L16.7 372 87 23 0
; NETPKG:<MCB>XPORTX.L16.15 599 9 1 0
; NETPKG:<MCB>NMXLIB.L16.13 200 13 6 0
; NETPKG:<DRIVERS>DCPDAT.L16.2 186 155 83 0
; Size: 2550 code + 134 data words
; Run Time: 00:52.3
; Elapsed Time: 02:53.8
; Memory Used: 65 pages
; Compilation Complete