Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/drivers/dte.lst
There are no other files named dte.lst in the archive.
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 1
30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (1)
; 0001 module DTE ( ! DTE20 driver for MCB V3.2
; 0002 ident = 'X01560',
; 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 DTE Driver
; 0031 !
; 0032 ! ABSTRACT:
; 0033 !
; 0034 ! This is the DLC process which services the DTE20 device
; 0035 !
; 0036 ! ENVIRONMENT: MCB V3.2
; 0037 !
; 0038 ! AUTHOR: Alan D. Peckham CREATION DATE: 28-May-80
; 0039 !
; 0040 ! MODIFIED BY:
; 0041 !
; 0042 ! Alan D. Peckham, 28-May-80: Version 1
; 0043 ! 01 - New version for MCB V3.0
; 0044 ! 06 - Move data base to DTEDAT for dump analyzer.
; 0045 ! 07 - Catch interrupts during DS_COM state.
; 0046 ! 08 - Seperate DLC and DDM dispatch tables to avoid C.MOD bug.
; 0047 ! 09 - Clear doorbell on DS_COM interrupt.
; 0048 ! 10 - Add debugging SIGNALs to find DTE_2 bug.
; 0049 ! 11 - Bug found! Remove signals...
; 0050 ! 12 - Bug not found! Fix TENAD1 reset problem in PRTDEP and PRTEXM.
; 0051 ! 13 - Add global data base symbols for DTEDLC.
; 0052 ! 14 - MCB V3.1 update:
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 2
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (1)
; 0053 ! Replace process header.
; 0054 ! Use CNV22$ instead of CNV18$.
; 0055 ! Supply routine address in SYNCH$.
; 0056 ! 15 - Added network management code.
; 0057 ! Clear QSIZE on line down to avoid TRANSMIT_SEGMENT activation.
; 0058 ! 16 - Copy messages into contiguous buffer.
; 0059 ! 17 - DTE shutdown could occur before all receive buffers were back.
; 0060 ! 18 - Add internal event logging.
; 0061 ! 19 - Do not start new receive in RECEIVE_MESSAGE until old one is finished.
; 0062 ! 20 - Map the data base.
; 0063 ! Update the network management code.
; 0064 ! 21 - Insert Network Management event logging.
; 0065 ! 22 - Bug in handling buffers that cross 32K boundries.
; 0066 ! 23 - Clean up current Network Management code.
; 0067 ! 24 - Correct transmit/receive contention for bus extension bits.
; 0068 ! 25 - Signal when event logging buffer too small.
; 0069 ! 26 - Add DTE directory process.
; 0070 ! 27 - Add long timer control.
; 0071 ! 28 - Identify line and circuit to NMX in DTENMX.
; 0072 ! 29 - Do not SYNCH unless interrupt enable is on.
; 0073 ! 30 - Flush transmits before waiting for the cows to come home in SHUTDN.
; 0074 ! 31 - Toss recovery RDB if receive already in progress in TIMRDB.
; 0075 ! 32 - Integrate DLL interface
; 0076 ! 33 - Add protocol pause timeout.
; 0077 ! Cover all cases where initialization should be checked for.
; 0078 ! 34 - Fix FLUSH_QUEUE linkage bug.
; 0079 ! 35 - Replace DLC with DLL interface.
; 0080 ! 36 - Rework initialization code.
; 0081 ! Fix mapping bug.
; 0082 ! 37 - Maintain requested protocol state.
; 0083 ! Handle all INIT states in ANSWER_DOORBELL.
; 0084 ! 38 - Eliminate CNV18.
; 0085 ! Create CHANGE_PROTOCOL_STATE routine.
; 0086 ! 39 - Correct NM parameters.
; 0087 ! 40 - Correct linkage errors to SEND_PERSISTENT_ERROR.
; 0088 ! 41 - Adapt to using new UNIBUS address conversion routines.
; 0089 ! 42 - Eliminate duplicate state notifications.
; 0090 ! 43 - Set protocol pause timeout to use DLL$_PAUSE_TIMEOUT status.
; 0091 ! 44 - Always update keep-alive if we can get at the comm region.
; 0092 ! 45 - Do not start transmit until -10's doorbell has stopped ringing.
; 0093 ! Add GET_HIS_STATUS to clear status word if examine failure.
; 0094 ! Check for PAUSE and INITIALIZATION requests in TIMLTM before
; 0095 ! trying to restart transmit/receive.
; 0096 ! 46 - Correct GETCOM to compensate for TOPS20 not initializing
; 0097 ! inactive to-him regions with their lengths.
; 0098 ! 47 - Update to NM V3.0.0 .
; 0099 ! 48 - Make sure address passed to PARAMETER_DEVICE_REGISTERS begins
; 0100 ! at beginning of DTE register set.
; 0101 ! 49 - Remove 'counters zeroed' event in DTENMX.
; 0102 !
; 0103 ! 50 - Ron Platukis 26-february-82
; 0104 ! a) in routine TIMLTM add check for lost TO-10 doorbell on xmits.
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 3
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (1)
; 0105 ! b) in routine TRANSMIT_SEGMENT start long timer after an xmit.
; 0106 ! c) in routine T10DON shut off long timer if in run state.
; 0107 ! 51 - Add pause timeout display in DTENMX.
; 0108 ! 52 - Rework supported counters: add system specific line counters.
; 0109 ! 53 - Fix areas in DTE_SYNCHRONIZE and TIMLTM to recognize a PAUSED KL.
; 0110 ! 54 - Correct register display of SHOW_LINE in DTENMX.
; 0111 ! 55 - Modify CTLSTR to return the CIRCUIT COST to XPT in C_PRM1.
; 0112 ! 56 - Correct for possible loss of interrupt enable during KL reload
; 0113 ! by re-enableing interrupts in ANSWER_DOORBELL during initialization.
; 0114 !--
; 0115 !
; 0116 ! INCLUDE FILES:
; 0117 !
; 0118
; 0119 library 'MCBLIB';
; 0120
; 0121 library 'XPORTX';
; 0122
; 0123 library 'NMXLIB';
; 0124
; 0125 $SHOW (NONE)
; 0126 require 'DLLLIB';
; 0380
; 0381 library 'DTEDAT';
; 0382
; 0383 !
; 0384 ! TABLE OF CONTENTS:
; 0385 !
; 0386
; 0387 linkage
; 0388 DTE_CCB_DB = jsr (register = 4, register = 5) : nopreserve (4),
; 0389 DTE_CCB_DB_STS = jsr (register = 4, register = 5, register = 0) : nopreserve (4),
; 0390 DTE_DB = jsr (register = 5) : nopreserve (0, 1, 2, 3, 4),
; 0391 DTE_DB_CCB = jsr (register = 5, register = 4) : nopreserve (0, 1, 2, 3, 4),
; 0392 DTE_DB_DTE = jsr (register = 5, register = 1),
; 0393 DTE_DB_STS = jsr (register = 5, register = 0) : nopreserve (4, 0),
; 0394 DTE_REG = jsr (register = 1) : nopreserve (1),
; 0395 EXM_LINKAGE = jsr (register = 5) : nopreserve (0, 1, 2, 3),
; 0396 EXDP_LINKAGE = jsr (register = 5, register = 2, register = 3) : nopreserve (0, 1, 2);
; 0397
; 0398 forward routine
; 0399 ANSWER_DOORBELL : DTE_DB novalue,
; 0400 CHANGE_PROTOCOL_STATE : DTE_DB novalue,
; 0401 CLEAR_DOORBELL : DTE_DB,
; 0402 CTLSTP : DTE_DB_CCB novalue,
; 0403 CTLSTR : DTE_DB_CCB novalue,
; 0404 CURRENT_STATUS : LINKAGE_DB,
; 0405 DEPMYG : EXDP_LINKAGE,
; 0406 DEPMYH : EXDP_LINKAGE,
; 0407 DEVICE_BROKEN : DTE_DB novalue,
; 0408 DLLINI : DTE_DB_CCB novalue,
; 0409 DLLMOP : DTE_DB_CCB novalue,
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 4
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (1)
; 0410 DLLSTP : DTE_DB_CCB novalue,
; 0411 DLLXMT : DTE_DB_CCB novalue,
; 0412 DTE_INTERRUPT : MCB_INTERRUPT novalue,
; 0413 DTE_SYNCHRONIZE : MCB_DB novalue,
; 0414 DTECTL : MCB_DB_CCB_MOD novalue,
; 0415 DTERCE : MCB_DB_CCB novalue,
; 0416 DTESTP : DTE_DB novalue,
; 0417 DTESTR : DTE_DB novalue,
; 0418 DTETIM : MCB_DB_MOD novalue,
; 0419 DTEXME : MCB_DB_CCB_MOD novalue,
; 0420 EXMHSG : EXDP_LINKAGE,
; 0421 EXMHSM : EXDP_LINKAGE,
; 0422 EXMMYG : EXDP_LINKAGE,
; 0423 EXMMYH : EXDP_LINKAGE,
; 0424 GET_HIS_STATUS : EXM_LINKAGE novalue,
; 0425 GETCOM : DTE_DB novalue,
; 0426 INITIALIZATION_REQUESTED : DTE_DB,
; 0427 NEW_RCB : DTE_DB novalue,
; 0428 PARAMETER_DEVICE_REGISTERS : DTE_REG novalue,
; 0429 PAUSED : DTE_DB,
; 0430 PROTOCOL_BROKEN : DTE_DB novalue,
; 0431 PRTDEP : EXDP_LINKAGE,
; 0432 PRTEXM : EXDP_LINKAGE,
; 0433 RECEIVE_MESSAGE : DTE_DB novalue,
; 0434 RECEIVE_SEGMENT : DTE_DB novalue,
; 0435 SCHEDULE_PERSISTENT_AST : DTE_CCB_DB novalue,
; 0436 SCHEDULE_RECEIVE : DTE_CCB_DB novalue,
; 0437 SCHEDULE_STATE_AST : DTE_CCB_DB novalue,
; 0438 SCHEDULE_TRANSIENT_AST : DTE_CCB_DB novalue,
; 0439 SCHEDULE_TRANSMIT : DTE_CCB_DB_STS novalue,
; 0440 SEND_PERSISTENT_ERROR : DTE_DB_STS novalue,
; 0441 SEND_STATE : DTE_DB novalue,
; 0442 SEND_TRANSIENT_ERROR : DTE_DB_STS novalue,
; 0443 TIMCCB : MCB_DB_CCB novalue,
; 0444 TIMLTM : MCB_DB novalue,
; 0445 TIMPIN : MCB_DB novalue,
; 0446 TIMPWF : MCB_DB novalue,
; 0447 TIMRDB : MCB_DB_CCB novalue,
; 0448 TRANSMIT_MESSAGE : DTE_DB novalue,
; 0449 TRANSMIT_SEGMENT : DTE_DB novalue,
; 0450 T10DON : DTE_DB novalue,
; 0451 T11DON : DTE_DB novalue,
; 0452 WTEXDP : DTE_DB_DTE;
; 0453
; 0454 global bind routine
; 0455 DTEIN = DTE_INTERRUPT : MCB_INTERRUPT novalue;
; 0456
; 0457 !
; 0458 ! MACROS:
; 0459 !
; 0460
; 0461 macro
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 5
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (1)
; M 0462 FLUSH_QUEUE (QUEUE, RETURN_CALL) =
; M 0463 while 1 eql 1 do
; M 0464 begin
; M 0465
; M 0466 local
; M 0467 CCB;
; M 0468
; M 0469 if not CMQRM$ (QUEUE, CCB) then exitloop;
; M 0470
; M 0471 RETURN_CALL (.CCB %if not %null (%remaining) %then , %remaining %fi);
; 0472 end %;
; 0473
; 0474 macro
; 0475 !
; 0476 ! Add the specified value to an 18 bit address in the data base
; 0477 !
; M 0478 PHYSICAL_ADD (DB, FLD, VALUE) =
; M 0479 begin
; M 0480
; M 0481 builtin
; M 0482 rot;
; M 0483
; M 0484 if rot (DB [$SUB_FIELD (FLD, PHYSICAL_LOW)] =
; M 0485 .DB [$SUB_FIELD (FLD, PHYSICAL_LOW)] + VALUE, 1)
; M 0486 then
; M 0487 DB [$SUB_FIELD (FLD, PHYSICAL_HIGH)] =
; M 0488 .DB [$SUB_FIELD (FLD, PHYSICAL_HIGH)] + 1;
; M 0489
; 0490 end %;
; 0491
; 0492 macro
; 0493 !
; 0494 ! Produce a mask for the given field
; 0495 !
; M 0496 DTE_BIT [FLD] =
; 0497 (1^%fieldexpand (FLD, 2) - 1)^%fieldexpand (FLD, 1) %,
; 0498 !
; 0499 ! Set the buss extension bits and the delay count
; 0500 !
; M 0501 DTE_EXT (CSR, BITS) =
; M 0502 begin
; M 0503
; M 0504 field
; M 0505 DLYOFF = [-%fieldexpand (DLYCNT, 0), 0, 16, 0],
; M 0506 DLYWRD = [0, 0, 16, 0];
; M 0507
; M 0508 bind
; M 0509 REG = CSR : block volatile;
; M 0510
; M 0511 local
; M 0512 VALUE : block [1] FIELD (DLYWRD);
; M 0513
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 6
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (1)
; M 0514 VALUE [DLYWRD] = 0;
; M 0515 VALUE [$SUB_FIELD (DLYOFF, BUSEXT)] = BITS;
; M 0516 REG [$SUB_FIELD (DLYCNT, DLYWRD)] = .VALUE [DLYWRD];
; 0517 end %,
; 0518 !
; 0519 ! Reset the DTE
; 0520 !
; M 0521 DTE_RESET (CSR) =
; M 0522 begin
; M 0523
; M 0524 bind
; M 0525 REG = CSR : block volatile field (DIAG2);
; M 0526
; M 0527 REG [DIAG2] = DTE_BIT (DRESET)
; 0528 end %,
; 0529 !
; 0530 ! Check if the TO-11 doorbell is ringing
; 0531 !
; M 0532 DTE_RINGING (CSR) =
; M 0533 begin
; M 0534
; M 0535 bind
; M 0536 REG = CSR : volatile;
; M 0537
; M 0538 (.REG and DTE_BIT (TO11DB)) neq 0
; 0539 end %,
; 0540 !
; 0541 ! Set the specified bits in the DTE status register
; 0542 !
; M 0543 DTE_SET (CSR) =
; M 0544 begin
; M 0545
; M 0546 bind
; M 0547 REG = CSR : volatile;
; M 0548
; M 0549 REG = +DTE_BIT (%remaining)
; 0550 end %,
; 0551 !
; 0552 ! Test if any of the specified bits are on in the DTE status register
; 0553 !
; M 0554 DTE_TEST (CSR) =
; M 0555 begin
; M 0556
; M 0557 bind
; M 0558 REG = CSR : volatile;
; M 0559
; M 0560 (.REG and +DTE_BIT (%remaining)) neq 0
; 0561 end %;
; 0562
; 0563 !
; 0564 ! EQUATED SYMBOLS:
; 0565 !
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 7
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (1)
; 0566
; 0567 literal
; 0568 TRUE = 1 EQL 1,
; 0569 FALSE = 1 EQL 0,
; 0570 NO_OPERATION = 0;
; 0571
; 0572 literal
; 0573 LCL = 0,
; 0574 RMT = 1;
; 0575
; 0576 global literal
; 0577 %name ('D.LEN') = %fieldexpand (D_XBUF, 0)*%upval;
; 0578
; 0579 macro
; 0580 C_HANDLE = %fieldexpand (C_LIX, 0), 0, 16, 0 %;
; 0581
; 0582 !
; 0583 ! OWN STORAGE:
; 0584 !
; 0585
; 0586 external routine
; 0587 $DSPCR : novalue;
; 0588
; P 0589 $MCB_PROCESS (
; P 0590 NAME = DTE, ! Process name
; P 0591 DLC_DISPATCH = TABLE$ ($DSPCR, FC_CCP, ! DLL interface dispatch vector
; P 0592 (FC_CTL, DTECTL), ! Control functions
; P 0593 (FC_XME, DTEXME), ! Transmit functions
; P 0594 (FC_RCE, DTERCE), ! Receive buffer returns
; 0595 (FC_TIM, DTETIM))) ! Timeout
; 0596
; 0597 external routine
; 0598 DTENM : MCB_CCB novalue;
; 0599
; 0600 !
; 0601 ! EXTERNAL REFERENCES:
; 0602 !
; 0603
; 0604 external routine
; 0605 DTEDBI : novalue,
; 0606 DTEDVI,
; 0607 DTENMI;
; 0608
; 0609 external
; 0610 MCB$GA_PROCESS_DISPATCH : ref vector,
; 0611 MCB$GAW_PROCESS_DATA_BASE : vector [2],
; 0612 MCB$GW_PROCESS_HANDLE,
; 0613 MCB$GW_RDB_SIZE; ! Size of RDB buffer.
; 0614
; 0615 bind
; 0616 DB_BIAS = MCB$GAW_PROCESS_DATA_BASE [0];
; 0617
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 8
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (1)
; 0618 macro
; M 0619 GET_DTE_DATA_BASE (NAME) =
; M 0620 %if %declared (NAME)
; M 0621 %then map NAME : ref
; M 0622 %else bind NAME = .MCB$GAW_PROCESS_DATA_BASE [1] :
; 0623 %fi block field (D_FIELDS); %;
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 9
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (2)
; 0624 routine ANSWER_DOORBELL (DB) : DTE_DB novalue =
; 0625
; 0626 !++
; 0627 ! FUNCTIONAL DESCRIPTION:
; 0628 !
; 0629 !
; 0630 ! FORMAL PARAMETERS:
; 0631 ! DB = address of DTE data base.
; 0632 !
; 0633 ! IMPLICIT INPUTS:
; 0634 ! None
; 0635 !
; 0636 ! IMPLICIT OUTPUTS:
; 0637 ! None
; 0638 !
; 0639 ! ROUTINE VALUE:
; 0640 ! COMPLETION CODES:
; 0641 ! None
; 0642 !
; 0643 ! SIDE EFFECTS:
; 0644 ! None
; 0645 !--
; 0646
; 0647 begin
; 0648 GET_DTE_DATA_BASE (DB)
; 0649 CLEAR_DOORBELL (DB [D_TIM]);
; 0650
; 0651 case .DB [D_PROTOCOL_STATE] from DS_STA_LOW to DS_STA_HIGH of
; 0652 set
; 0653
; 0654 [DS_INITIALIZING] :
; 0655
; 0656 if .DB [$SUB_FIELD (D_RST, V)]
; 0657 then
; 0658
; 0659 if .DB [$SUB_FIELD (D_RST, I)]
; 0660 then
; 0661 begin
; 0662 ! *************** Protocol deviation ******************
; 0663 ! Our INIT bit is on, and would normally be turned off.
; 0664 ! But the -20 never expects us to initialize protocol,
; 0665 ! so we must leave our init bit on until he drops his.
; 0666 ! *****************************************************
; 0667 DEPMYH (DB [D_TIM], STATUS, DB [D_XST]);
; 0668 DTE_SET (.DB [D_REGISTER], INT10S, INTRON);
; 0669 DB [D_LONG_TIMER] = DTE_K_START_TIMEOUT;
; 0670 end
; 0671 else
; 0672 begin
; 0673
; 0674 if .DB [$SUB_FIELD (D_XST, I)]
; 0675 then
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 10
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (2)
; 0676 begin
; 0677 DB [$SUB_FIELD (D_XST, I)] = 0;
; 0678 DEPMYH (DB [D_TIM], STATUS, DB [D_XST]);
; 0679 DTE_SET (.DB [D_REGISTER], INT10S, INTRON);
; 0680 DB [D_LONG_TIMER] = DTE_K_START_TIMEOUT;
; 0681 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_RUNNING, LCL);
; 0682 end
; 0683 else
; 0684 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_RUNNING, RMT);
; 0685
; 0686 TRANSMIT_MESSAGE (DB [D_TIM]);
; 0687 RECEIVE_MESSAGE (DB [D_TIM]);
; 0688 end;
; 0689
; 0690 [DS_RUNNING] :
; 0691
; 0692 if not PAUSED (DB [D_TIM])
; 0693 then
; 0694
; 0695 if not INITIALIZATION_REQUESTED (DB [D_TIM])
; 0696 then
; 0697 RECEIVE_MESSAGE (DB [D_TIM]);
; 0698
; 0699 [DS_PAUSED] :
; 0700
; 0701 if .DB [$SUB_FIELD (D_RST, V)]
; 0702 then
; 0703 begin
; 0704 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_RUNNING, RMT);
; 0705
; 0706 if not INITIALIZATION_REQUESTED (DB [D_TIM])
; 0707 then
; 0708 RECEIVE_MESSAGE (DB [D_TIM]);
; 0709
; 0710 end;
; 0711
; 0712 [inrange] :
; 0713 NO_OPERATION;
; 0714
; 0715 tes;
; 0716
; 0717 end; !of routine ANSWER_DOORBELL
.TITLE DTE
.IDENT /X01560/
000000 .PSECT ......, D
000000 016045 HEADER: .RAD50 /DTE/
000002 000403 .WORD 403
000004 000000 .WORD 0
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 11
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (2)
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 DTEXME
000004 000000V .WORD DTERCE
000006 000000G .WORD $DSPCR
000010 000000V .WORD DTECTL
000012 000000V .WORD DTETIM
000014 000000G .WORD $DSPCR
000016 000000G .WORD $DSPCR
000020 000000G .WORD $DSPCR
000022 000000G .WORD $DSPCR
.GLOBL $DSPCR, .DSPCR, MCB$V0, MCB$V1
.GLOBL DTENM, DTEDBI, DTEDVI, DTENMI
.GLOBL .CRDSP, .CRDAT, .CRPIX, .RDBSZ
000174 D.LEN== 174
.SBTTL ANSWER.DOORBELL
000000 .PSECT $CODE$, RO
000000 004767 000000V ANSWER.DOORBELL:
JSR PC,CLEAR.DOORBELL ; 0649
000004 116500 000012 MOVB 12(R5),R0 ; *(DB),* 0651
000010 006300 ASL R0
000012 066007 000024' ADD P.AAB(R0),PC ; Case dispatch
000016 132765 000001 000062 1$: BITB #1,62(R5) ; *,*(DB) 0656
000024 001521 BEQ 9$
000026 132765 000002 000062 BITB #2,62(R5) ; *,*(DB) 0659
000034 001417 BEQ 2$
000036 010500 MOV R5,R0 ; DB,* 0667
000040 062700 000072 ADD #72,R0
000044 012702 000002 MOV #2,R2
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 12
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (2)
000050 010003 MOV R0,R3
000052 004767 000000V JSR PC,DEPMYH
000056 012775 000440 000002 MOV #440,@2(R5) ; *,*(DB) 0668
000064 112765 000005 000020 MOVB #5,20(R5) ; *,*(DB) 0669
000072 000207 RTS PC ; 0659
000074 132765 000002 000076 2$: BITB #2,76(R5) ; *,*(DB) 0674
000102 001425 BEQ 3$
000104 142765 000002 000076 BICB #2,76(R5) ; *,*(DB) 0677
000112 010500 MOV R5,R0 ; DB,* 0678
000114 062700 000072 ADD #72,R0
000120 012702 000002 MOV #2,R2
000124 010003 MOV R0,R3
000126 004767 000000V JSR PC,DEPMYH
000132 012775 000440 000002 MOV #440,@2(R5) ; *,*(DB) 0679
000140 112765 000005 000020 MOVB #5,20(R5) ; *,*(DB) 0680
000146 012746 000003 MOV #3,-(SP) ; 0681
000152 005046 CLR -(SP)
000154 000404 BR 4$
000156 012746 000003 3$: MOV #3,-(SP) ; 0684
000162 012746 000001 MOV #1,-(SP)
000166 004767 000000V 4$: JSR PC,CHANGE.PROTOCOL.STATE
000172 004767 000000V JSR PC,TRANSMIT.MESSAGE ; 0686
000176 000431 BR 7$ ; 0687
000200 004767 000000V 5$: JSR PC,PAUSED ; 0692
000204 006000 ROR R0
000206 103430 BLO 9$
000210 004767 000000V JSR PC,INITIALIZATION.REQUESTED ; 0695
000214 006000 ROR R0
000216 103424 BLO 9$
000220 004767 000000V JSR PC,RECEIVE.MESSAGE ; 0697
000224 000207 RTS PC ; 0651
000226 132765 000001 000062 6$: BITB #1,62(R5) ; *,*(DB) 0701
000234 001415 BEQ 9$
000236 012746 000003 MOV #3,-(SP) ; 0704
000242 012746 000001 MOV #1,-(SP)
000246 004767 000000V JSR PC,CHANGE.PROTOCOL.STATE
000252 004767 000000V JSR PC,INITIALIZATION.REQUESTED ; 0706
000256 006000 ROR R0
000260 103402 BLO 8$
000262 004767 000000V 7$: JSR PC,RECEIVE.MESSAGE ; 0708
000266 022626 8$: CMP (SP)+,(SP)+ ; 0703
000270 000207 9$: RTS PC ; 0624
; Routine Size: 93 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 3 words
000024 .PSECT $PLIT$, RO , D
P.AAB: ; CASE Table for ANSWER.DOORBELL+0012 0651
000024 000252 .WORD 252 ; [9$]
000026 000252 .WORD 252 ; [9$]
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 13
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (2)
000030 000000 .WORD 0 ; [1$]
000032 000162 .WORD 162 ; [5$]
000034 000210 .WORD 210 ; [6$]
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 14
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (3)
; 0718 routine CHANGE_PROTOCOL_STATE (DB, STATE, REASON) : DTE_DB novalue =
; 0719
; 0720 !++
; 0721 ! FUNCTIONAL DESCRIPTION:
; 0722 !
; 0723 !
; 0724 ! FORMAL PARAMETERS:
; 0725 ! DB = address of DTE data base.
; 0726 !
; 0727 ! IMPLICIT INPUTS:
; 0728 ! None
; 0729 !
; 0730 ! IMPLICIT OUTPUTS:
; 0731 ! None
; 0732 !
; 0733 ! ROUTINE VALUE:
; 0734 ! COMPLETION CODES:
; 0735 ! None
; 0736 !
; 0737 ! SIDE EFFECTS:
; 0738 ! None
; 0739 !--
; 0740
; 0741 begin
; 0742 GET_DTE_DATA_BASE (DB)
; 0743 DB [D_PROTOCOL_STATE] = .STATE;
; 0744 SEND_STATE (DB [D_TIM]);
; 0745 end; !of routine CHANGE_PROTOCOL_STATE
.SBTTL CHANGE.PROTOCOL.STATE
000272 .PSECT $CODE$, RO
000000 116665 000004 000012 CHANGE.PROTOCOL.STATE:
MOVB 4(SP),12(R5) ; STATE,*(DB) 0743
000006 004767 000000V JSR PC,SEND.STATE ; 0744
000012 000207 RTS PC ; 0718
; Routine Size: 6 words, Routine Base: $CODE$ + 0272
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 15
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (4)
; 0746 routine CLEAR_DOORBELL (DB) : DTE_DB =
; 0747
; 0748 !++
; 0749 ! FUNCTIONAL DESCRIPTION:
; 0750 !
; 0751 !
; 0752 ! FORMAL PARAMETERS:
; 0753 ! DB = address of DTE data base.
; 0754 !
; 0755 ! IMPLICIT INPUTS:
; 0756 ! None
; 0757 !
; 0758 ! IMPLICIT OUTPUTS:
; 0759 ! None
; 0760 !
; 0761 ! ROUTINE VALUE:
; 0762 ! COMPLETION CODES:
; 0763 ! None
; 0764 !
; 0765 ! SIDE EFFECTS:
; 0766 ! None
; 0767 !--
; 0768
; 0769 begin
; 0770 GET_DTE_DATA_BASE (DB)
; 0771
; 0772 local
; 0773 STATUS;
; 0774
; 0775 STATUS = FALSE;
; 0776
; 0777 do
; 0778 begin
; 0779 DTE_SET (.DB [D_REGISTER], INT11C);
; 0780
; 0781 if not DTE_RINGING (.DB [D_REGISTER]) then return STATUS = TRUE;
; 0782
; 0783 end
; 0784 until (STATUS = .STATUS - 1) eql FALSE;
; 0785
; 0786 COUNTER_INCREMENT (DB, D_DOORBELL_STUCK);
; 0787 COUNTER_INCREMENT (DB, D_DEVICE_SERVICE_ERRORS);
; 0788 .STATUS
; 0789 end; !of routine CLEAR_DOORBELL
.GLOBL $IC8
.SBTTL CLEAR.DOORBELL
000000 010546 CLEAR.DOORBELL:
MOV R5,-(SP) ; 0746
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 16
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (4)
000002 005001 CLR R1 ; STATUS 0775
000004 012775 002000 000002 1$: MOV #2000,@2(R5) ; *,*(DB) 0779
000012 032775 004000 000002 BIT #4000,@2(R5) ; *,*(DB) 0781
000020 001003 BNE 2$
000022 012701 000001 MOV #1,R1 ; *,STATUS
000026 000411 BR 3$
000030 077113 2$: SOB R1,1$ ; STATUS,* 0784
000032 052765 040000 000166 BIS #40000,166(R5) ; *,*(DB) 0786
000040 062705 000164 ADD #164,R5 ; *,DB 0787
000044 010500 MOV R5,R0
000046 004767 000000G JSR PC,$IC8
000052 010100 3$: MOV R1,R0 ; STATUS,* 0746
000054 012605 MOV (SP)+,R5
000056 000207 RTS PC
; Routine Size: 24 words, Routine Base: $CODE$ + 0306
; Maximum stack depth per invocation: 2 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 17
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (5)
; 0790 routine CTLSTP (DB, CCB) : DTE_DB_CCB novalue =
; 0791
; 0792 !++
; 0793 ! FUNCTIONAL DESCRIPTION:
; 0794 !
; 0795 !
; 0796 ! FORMAL PARAMETERS:
; 0797 ! DB = address of DTE data base.
; 0798 ! CCB = address of CTL/STP CCB.
; 0799 !
; 0800 ! IMPLICIT INPUTS:
; 0801 ! None
; 0802 !
; 0803 ! IMPLICIT OUTPUTS:
; 0804 ! None
; 0805 !
; 0806 ! ROUTINE VALUE:
; 0807 ! COMPLETION CODES:
; 0808 ! None
; 0809 !
; 0810 ! SIDE EFFECTS:
; 0811 ! None
; 0812 !--
; 0813
; 0814 begin
; 0815 GET_DTE_DATA_BASE (DB)
; 0816
; 0817 map
; 0818 CCB : ref block field (C_FIELDS);
; 0819
; 0820 DB [DF_NOTIFY_STATE] = FALSE;
; 0821 DB [D_TRANSIENT_ERROR] = 0;
; 0822 DB [D_PERSISTENT_ERROR] = 0;
; 0823 DB [D_OWNER_HANDLE] = 0;
; 0824 CCB [C_STS] = DLL$_SUCCESS;
; 0825 CCB [C_FNC] = FC_CCP;
; 0826
; 0827 if .DB [D_ACTIVE_BUFFERS] neq 0
; 0828 then
; 0829 begin
; 0830 DB [DF_CONTROL_WAITING] = TRUE;
; 0831 CMQIN$ (DB [D_PENDING_CONTROLS], .CCB);
; 0832 end
; 0833 else
; 0834 $MCB_SCHEDULE_CCB (.CCB);
; 0835
; 0836 end; !of routine CTLSTP
.GLOBL $CMQIN, $SCHED
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 18
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (5)
.SBTTL CTLSTP
000000 042715 004000 CTLSTP: BIC #4000,(R5) ; *,DB 0820
000004 005065 000024 CLR 24(R5) ; *(DB) 0821
000010 005065 000026 CLR 26(R5) ; *(DB) 0822
000014 005065 000022 CLR 22(R5) ; *(DB) 0823
000020 012764 100001 000014 MOV #-77777,14(R4) ; *,*(CCB) 0824
000026 112764 000022 000012 MOVB #22,12(R4) ; *,*(CCB) 0825
000034 005765 000034 TST 34(R5) ; *(DB) 0827
000040 001410 BEQ 1$
000042 052715 010000 BIS #10000,(R5) ; *,DB 0830
000046 012703 000030 MOV #30,R3 ; 0831
000052 060503 ADD R5,R3 ; DB,*
000054 004767 000000G JSR PC,$CMQIN
000060 000207 RTS PC ; 0827
000062 004767 000000G 1$: JSR PC,$SCHED ; 0834
000066 000207 RTS PC ; 0790
; Routine Size: 28 words, Routine Base: $CODE$ + 0366
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 19
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (6)
; 0837 routine CTLSTR (DB, CCB) : DTE_DB_CCB novalue =
; 0838
; 0839 !++
; 0840 ! FUNCTIONAL DESCRIPTION:
; 0841 !
; 0842 !
; 0843 ! FORMAL PARAMETERS:
; 0844 ! DB = address of DTE data base.
; 0845 ! CCB = address of CTL/STP CCB.
; 0846 !
; 0847 ! IMPLICIT INPUTS:
; 0848 ! None
; 0849 !
; 0850 ! IMPLICIT OUTPUTS:
; 0851 ! None
; 0852 !
; 0853 ! ROUTINE VALUE:
; 0854 ! COMPLETION CODES:
; 0855 ! None
; 0856 !
; 0857 ! SIDE EFFECTS:
; 0858 ! None
; 0859 !--
; 0860
; 0861 begin
; 0862 GET_DTE_DATA_BASE (DB)
; 0863
; 0864 map
; 0865 CCB : ref block field (C_FIELDS);
; 0866
; 0867 bind
; P 0868 STATUS = TABLE$ (0, 0,
; P 0869 (DS_HALTED^1, DLL$_STATE_OFF),
; P 0870 (DS_COM^1, DLL$_STATE_SYNCHRONIZING),
; P 0871 (DS_INITIALIZING^1, DLL$_STATE_SYNCHRONIZING),
; P 0872 (DS_RUNNING^1, DLL$_STATE_RUNNING),
; 0873 (DS_PAUSED^1, DLL$_STATE_RUNNING)) : vector [5];
; 0874
; 0875 DB [D_OWNER_HANDLE] = .CCB [C_HANDLE];
; 0876
; 0877 if .CCB [C_PRM1] eql 0
; 0878 then
; 0879 CCB [C_PRM1] = .DB [D_CIRCUIT_COST];
; 0880
; 0881 CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
; 0882 CCB [C_FNC] = FC_CCP;
; 0883 $MCB_SCHEDULE_CCB (.CCB);
; 0884 end; !of routine CTLSTR
000036 .PSECT $PLIT$, RO , D
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 20
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (6)
000036 100043 P.AAC: .WORD -77735
000040 100053 .WORD -77725
000042 100053 .WORD -77725
000044 100063 .WORD -77715
000046 100063 .WORD -77715
000036' STATUS= P.AAC
.SBTTL CTLSTR
000456 .PSECT $CODE$, RO
000000 016465 000010 000022 CTLSTR: MOV 10(R4),22(R5) ; *(CCB),*(DB) 0875
000006 012700 000024 MOV #24,R0 ; 0877
000012 060400 ADD R4,R0 ; CCB,*
000014 005710 TST (R0)
000016 001002 BNE 1$
000020 016510 000036 MOV 36(R5),(R0) ; *(DB),* 0879
000024 004767 000000V 1$: JSR PC,CURRENT.STATUS ; 0881
000030 010064 000014 MOV R0,14(R4) ; *,*(CCB)
000034 112764 000022 000012 MOVB #22,12(R4) ; *,*(CCB) 0882
000042 004767 000000G JSR PC,$SCHED ; 0883
000046 000207 RTS PC ; 0837
; Routine Size: 20 words, Routine Base: $CODE$ + 0456
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 21
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (7)
; 0885 routine CURRENT_STATUS (DB) : LINKAGE_DB =
; 0886
; 0887 !++
; 0888 ! FUNCTIONAL DESCRIPTION:
; 0889 !
; 0890 !
; 0891 ! FORMAL PARAMETERS:
; 0892 ! DB = address of DTE data base.
; 0893 !
; 0894 ! IMPLICIT INPUTS:
; 0895 ! None
; 0896 !
; 0897 ! IMPLICIT OUTPUTS:
; 0898 ! None
; 0899 !
; 0900 ! ROUTINE VALUE:
; 0901 ! COMPLETION CODES:
; 0902 ! None
; 0903 !
; 0904 ! SIDE EFFECTS:
; 0905 ! None
; 0906 !--
; 0907
; 0908 begin
; 0909 GET_DTE_DATA_BASE (DB)
; 0910
; 0911 literal
; 0912 DLL_OFF = 0,
; 0913 DLL_SYNCHRONIZING = 1,
; 0914 DLL_RUNNING = 2,
; 0915 DLL_MAINTENANCE = 3;
; 0916
; 0917 bind
; P 0918 REPORT_STATUS = TABLE$ (0, 0,
; P 0919 (DS_HALTED^1, DLL_OFF),
; P 0920 (DS_COM^1, DLL_SYNCHRONIZING),
; P 0921 (DS_INITIALIZING^1, DLL_SYNCHRONIZING),
; P 0922 (DS_RUNNING^1, DLL_RUNNING),
; 0923 (DS_PAUSED^1, DLL_RUNNING)) : vector,
; P 0924 DLL_STATUS = TABLE$ (0, 0,
; P 0925 (DLL_OFF^1, DLL$_STATE_OFF),
; P 0926 (DLL_SYNCHRONIZING^1, DLL$_STATE_SYNCHRONIZING),
; P 0927 (DLL_RUNNING^1, DLL$_STATE_RUNNING),
; 0928 (DLL_MAINTENANCE^1, DLL$_STATE_MAINTENANCE)) : vector;
; 0929
; 0930 if .DB [DF_NOTIFY_OFF]
; 0931 then
; 0932 begin
; 0933 DB [DF_NOTIFY_OFF] = FALSE;
; 0934
; 0935 if .DB [D_PROTOCOL_STATE] eql DS_HALTED
; 0936 then
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 22
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (7)
; 0937 DB [DF_NOTIFY_STATE] = FALSE;
; 0938
; 0939 return .DLL_STATUS [DB [D_REPORTED_STATE] = DLL_OFF];
; 0940 end;
; 0941
; 0942 DB [DF_NOTIFY_STATE] = FALSE;
; 0943 .DLL_STATUS [DB [D_REPORTED_STATE] = .REPORT_STATUS [.DB [D_PROTOCOL_STATE]]]
; 0944 end; !of routine CURRENT_STATUS
000050 .PSECT $PLIT$, RO , D
000050 000000 P.AAD: .WORD 0
000052 000001 .WORD 1
000054 000001 .WORD 1
000056 000002 .WORD 2
000060 000002 .WORD 2
000062 100043 P.AAE: .WORD -77735
000064 100053 .WORD -77725
000066 100063 .WORD -77715
000070 100073 .WORD -77705
000050' REPORT.STATUS= P.AAD
000062' DLL.STATUS= P.AAE
.SBTTL CURRENT.STATUS
000526 .PSECT $CODE$, RO
000000 010546 CURRENT.STATUS:
MOV R5,-(SP) ; 0885
000002 010500 MOV R5,R0 ; *,DB
000004 032710 002000 BIT #2000,(R0) ; *,DB 0930
000010 001414 BEQ 2$
000012 042710 002000 BIC #2000,(R0) ; *,DB 0933
000016 105760 000012 TSTB 12(R0) ; *(DB) 0935
000022 001002 BNE 1$
000024 042710 004000 BIC #4000,(R0) ; *,DB 0937
000030 105060 000014 1$: CLRB 14(R0) ; *(DB) 0939
000034 016700 000062' MOV DLL.STATUS,R0 ; 0932
000040 000414 BR 3$
000042 042710 004000 2$: BIC #4000,(R0) ; *,DB 0942
000046 116005 000012 MOVB 12(R0),R5 ; *(DB),* 0943
000052 006305 ASL R5
000054 016505 000050' MOV REPORT.STATUS(R5),R5
000060 110560 000014 MOVB R5,14(R0) ; *,*(DB)
000064 006305 ASL R5
000066 016500 000062' MOV DLL.STATUS(R5),R0 ; 0885
000072 012605 3$: MOV (SP)+,R5
000074 000207 RTS PC
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 23
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (7)
; Routine Size: 31 words, Routine Base: $CODE$ + 0526
; Maximum stack depth per invocation: 2 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 24
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (8)
; 0945 routine DEPMYG (DB, OFFSET, BUFFER) : EXDP_LINKAGE =
; 0946
; 0947 !++
; 0948 ! FUNCTIONAL DESCRIPTION:
; 0949 !
; 0950 !
; 0951 ! FORMAL PARAMETERS:
; 0952 ! DB = address of DTE data base.
; 0953 ! OFFSET = comm/region offset.
; 0954 ! BUFFER = address of 3 word buffer of data to deposit.
; 0955 !
; 0956 ! IMPLICIT INPUTS:
; 0957 ! None
; 0958 !
; 0959 ! IMPLICIT OUTPUTS:
; 0960 ! None
; 0961 !
; 0962 ! ROUTINE VALUE:
; 0963 ! COMPLETION CODES:
; 0964 ! None
; 0965 !
; 0966 ! SIDE EFFECTS:
; 0967 ! None
; 0968 !--
; 0969
; 0970 begin
; 0971 GET_DTE_DATA_BASE (DB)
; 0972 PRTDEP (DB [D_TIM], .OFFSET, .BUFFER)
; 0973 end; !of routine DEPMYG
.SBTTL DEPMYG
000000 004767 000000V DEPMYG: JSR PC,PRTDEP ; 0972
000004 000207 RTS PC ; 0945
; Routine Size: 3 words, Routine Base: $CODE$ + 0624
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 25
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (9)
; 0974 routine DEPMYH (DB, OFFSET, BUFFER) : EXDP_LINKAGE =
; 0975
; 0976 !++
; 0977 ! FUNCTIONAL DESCRIPTION:
; 0978 !
; 0979 !
; 0980 ! FORMAL PARAMETERS:
; 0981 ! DB = address of DTE data base.
; 0982 ! OFFSET = comm/region offset.
; 0983 ! BUFFER = address of 3 word buffer of data to deposit.
; 0984 !
; 0985 ! IMPLICIT INPUTS:
; 0986 ! None
; 0987 !
; 0988 ! IMPLICIT OUTPUTS:
; 0989 ! None
; 0990 !
; 0991 ! ROUTINE VALUE:
; 0992 ! COMPLETION CODES:
; 0993 ! None
; 0994 !
; 0995 ! SIDE EFFECTS:
; 0996 ! None
; 0997 !--
; 0998
; 0999 begin
; 1000 GET_DTE_DATA_BASE (DB)
; 1001 PRTDEP (DB [D_TIM], .OFFSET + .DB [D_DMH], .BUFFER)
; 1002 end; !of routine DEPMYH
.SBTTL DEPMYH
000000 066502 000054 DEPMYH: ADD 54(R5),R2 ; *(DB),* 1001
000004 004767 000000V JSR PC,PRTDEP
000010 000207 RTS PC ; 0974
; Routine Size: 5 words, Routine Base: $CODE$ + 0632
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 26
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (10)
; 1003 routine DEVICE_BROKEN (DB) : DTE_DB novalue =
; 1004
; 1005 !++
; 1006 ! FUNCTIONAL DESCRIPTION:
; 1007 !
; 1008 !
; 1009 ! FORMAL PARAMETERS:
; 1010 ! DB = address of DTE data base.
; 1011 !
; 1012 ! IMPLICIT INPUTS:
; 1013 ! None
; 1014 !
; 1015 ! IMPLICIT OUTPUTS:
; 1016 ! None
; 1017 !
; 1018 ! ROUTINE VALUE:
; 1019 ! COMPLETION CODES:
; 1020 ! None
; 1021 !
; 1022 ! SIDE EFFECTS:
; 1023 ! None
; 1024 !--
; 1025
; 1026 begin
; 1027 GET_DTE_DATA_BASE (DB)
; 1028 DTESTP (DB [D_TIM]);
; 1029 end; !of routine DEVICE_BROKEN
.SBTTL DEVICE.BROKEN
000000 004767 000000V DEVICE.BROKEN:
JSR PC,DTESTP ; 1028
000004 000207 RTS PC ; 1003
; Routine Size: 3 words, Routine Base: $CODE$ + 0644
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 27
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (11)
; 1030 routine DLLINI (DB, CCB) : DTE_DB_CCB novalue =
; 1031
; 1032 !++
; 1033 ! FUNCTIONAL DESCRIPTION:
; 1034 !
; 1035 !
; 1036 ! FORMAL PARAMETERS:
; 1037 ! DB = address of DTE data base.
; 1038 ! CCB = address of CCB.
; 1039 !
; 1040 ! IMPLICIT INPUTS:
; 1041 ! None
; 1042 !
; 1043 ! IMPLICIT OUTPUTS:
; 1044 ! None
; 1045 !
; 1046 ! ROUTINE VALUE:
; 1047 ! COMPLETION CODES:
; 1048 ! None
; 1049 !
; 1050 ! SIDE EFFECTS:
; 1051 ! None
; 1052 !--
; 1053
; 1054 begin
; 1055 GET_DTE_DATA_BASE (DB)
; 1056
; 1057 map
; 1058 CCB : ref block field (C_FIELDS);
; 1059
; 1060 if .DB [D_PROTOCOL_STATE] neq DS_HALTED
; 1061 then
; 1062 DTESTP (DB [D_TIM]);
; 1063
; 1064 DB [D_REQUESTED_STATE] = DS_RUNNING;
; 1065
; 1066 if .DB [D_LINE_STATE] eql DL_ON
; 1067 then
; 1068 DTESTR (DB [D_TIM]);
; 1069
; 1070 CCB [C_FNC] = FC_XCP;
; 1071 CCB [C_STS] = DLL$_SUCCESS;
; 1072 $MCB_SCHEDULE_CCB (.CCB);
; 1073
; 1074 if .DB [D_DEVICE_STATE] eql DD_CLEARED
; 1075 then
; 1076 begin
; 1077 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 1078 SEND_STATE (DB [D_TIM]);
; 1079 end;
; 1080
; 1081 end; !of routine DLLINI
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 28
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (11)
.SBTTL DLLINI
000000 010446 DLLINI: MOV R4,-(SP) ; 1030
000002 012746 000012 MOV #12,-(SP) ; 1060
000006 060516 ADD R5,(SP) ; DB,*
000010 105776 000000 TSTB @0(SP)
000014 001402 BEQ 1$
000016 004767 000000V JSR PC,DTESTP ; 1062
000022 042776 177400 000000 1$: BIC #177400,@0(SP) ; 1064
000030 052776 001400 000000 BIS #1400,@0(SP)
000036 105765 000015 TSTB 15(R5) ; *(DB) 1066
000042 001002 BNE 2$
000044 004767 000000V JSR PC,DTESTR ; 1068
000050 016600 000002 2$: MOV 2(SP),R0 ; 1070
000054 112760 000014 000012 MOVB #14,12(R0)
000062 012760 100001 000014 MOV #-77777,14(R0) ; 1071
000070 010004 MOV R0,R4 ; 1072
000072 004767 000000G JSR PC,$SCHED
000076 105765 000016 TSTB 16(R5) ; *(DB) 1074
000102 001006 BNE 3$
000104 012700 100174 MOV #-77604,R0 ; 1077
000110 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000114 004767 000000V JSR PC,SEND.STATE ; 1078
000120 022626 3$: CMP (SP)+,(SP)+ ; 1030
000122 000207 RTS PC
; Routine Size: 42 words, Routine Base: $CODE$ + 0652
; Maximum stack depth per invocation: 3 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 29
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (12)
; 1082 routine DLLMOP (DB, CCB) : DTE_DB_CCB novalue =
; 1083
; 1084 !++
; 1085 ! FUNCTIONAL DESCRIPTION:
; 1086 !
; 1087 !
; 1088 ! FORMAL PARAMETERS:
; 1089 ! DB = address of DTE data base.
; 1090 ! CCB = address of CCB.
; 1091 !
; 1092 ! IMPLICIT INPUTS:
; 1093 ! None
; 1094 !
; 1095 ! IMPLICIT OUTPUTS:
; 1096 ! None
; 1097 !
; 1098 ! ROUTINE VALUE:
; 1099 ! COMPLETION CODES:
; 1100 ! None
; 1101 !
; 1102 ! SIDE EFFECTS:
; 1103 ! None
; 1104 !--
; 1105
; 1106 begin
; 1107 GET_DTE_DATA_BASE (DB)
; 1108
; 1109 map
; 1110 CCB : ref block field (C_FIELDS);
; 1111
; 1112 CCB [C_FNC] = FC_XCP;
; 1113 CCB [C_STS] = DLL$_NOT_SUPPORTED;
; 1114 $MCB_SCHEDULE_CCB (.CCB);
; 1115 end; !of routine DLLMOP
.SBTTL DLLMOP
000000 112764 000014 000012 DLLMOP: MOVB #14,12(R4) ; *,*(CCB) 1112
000006 012764 100022 000014 MOV #-77756,14(R4) ; *,*(CCB) 1113
000014 004767 000000G JSR PC,$SCHED ; 1114
000020 000207 RTS PC ; 1082
; Routine Size: 9 words, Routine Base: $CODE$ + 0776
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 30
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (13)
; 1116 routine DLLSTP (DB, CCB) : DTE_DB_CCB novalue =
; 1117
; 1118 !++
; 1119 ! FUNCTIONAL DESCRIPTION:
; 1120 !
; 1121 !
; 1122 ! FORMAL PARAMETERS:
; 1123 ! DB = address of DTE data base.
; 1124 ! CCB = address of CCB.
; 1125 !
; 1126 ! IMPLICIT INPUTS:
; 1127 ! None
; 1128 !
; 1129 ! IMPLICIT OUTPUTS:
; 1130 ! None
; 1131 !
; 1132 ! ROUTINE VALUE:
; 1133 ! COMPLETION CODES:
; 1134 ! None
; 1135 !
; 1136 ! SIDE EFFECTS:
; 1137 ! None
; 1138 !--
; 1139
; 1140 begin
; 1141 GET_DTE_DATA_BASE (DB)
; 1142
; 1143 map
; 1144 CCB : ref block field (C_FIELDS);
; 1145
; 1146 DB [D_REQUESTED_STATE] = DS_HALTED;
; 1147
; 1148 if .DB [D_PROTOCOL_STATE] neq DS_HALTED
; 1149 then
; 1150 DTESTP (DB [D_TIM]);
; 1151
; 1152 CCB [C_FNC] = FC_XCP;
; 1153 CCB [C_STS] = DLL$_SUCCESS;
; 1154 $MCB_SCHEDULE_CCB (.CCB);
; 1155 end; !of routine DLLSTP
.SBTTL DLLSTP
000000 010446 DLLSTP: MOV R4,-(SP) ; 1116
000002 105065 000013 CLRB 13(R5) ; *(DB) 1146
000006 105765 000012 TSTB 12(R5) ; *(DB) 1148
000012 001402 BEQ 1$
000014 004767 000000V JSR PC,DTESTP ; 1150
000020 011600 1$: MOV (SP),R0 ; 1152
000022 112760 000014 000012 MOVB #14,12(R0)
000030 012760 100001 000014 MOV #-77777,14(R0) ; 1153
000036 010004 MOV R0,R4 ; 1154
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 31
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (13)
000040 004767 000000G JSR PC,$SCHED
000044 005726 TST (SP)+ ; 1116
000046 000207 RTS PC
; Routine Size: 20 words, Routine Base: $CODE$ + 1020
; Maximum stack depth per invocation: 2 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 32
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (14)
; 1156 routine DLLXMT (DB, CCB) : DTE_DB_CCB novalue =
; 1157
; 1158 !++
; 1159 ! FUNCTIONAL DESCRIPTION:
; 1160 !
; 1161 !
; 1162 ! FORMAL PARAMETERS:
; 1163 ! DB = address of DTE data base.
; 1164 ! CCB = address of transmit CCB.
; 1165 ! MODIFIER = transmit function modifier (from C_MOD of CCB).
; 1166 !
; 1167 ! IMPLICIT INPUTS:
; 1168 ! None
; 1169 !
; 1170 ! IMPLICIT OUTPUTS:
; 1171 ! None
; 1172 !
; 1173 ! ROUTINE VALUE:
; 1174 ! COMPLETION CODES:
; 1175 ! None
; 1176 !
; 1177 ! SIDE EFFECTS:
; 1178 ! None
; 1179 !--
; 1180
; 1181 begin
; 1182 GET_DTE_DATA_BASE (DB)
; 1183
; 1184 map
; 1185 CCB : ref block field (C_FIELDS);
; 1186
; 1187 DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] + 1;
; 1188
; 1189 case .DB [D_PROTOCOL_STATE] from DS_STA_LOW to DS_STA_HIGH of
; 1190 set
; 1191 [DS_RUNNING, DS_PAUSED] :
; 1192 begin
; 1193 CMQIN$ (DB [D_XMQ], .CCB);
; 1194
; 1195 if .CCB [C_CHN] neqa 0
; 1196 then
; 1197 begin
; 1198
; 1199 local
; 1200 MSG_CNT;
; 1201
; 1202 MSG_CNT = .DB [D_DL_BLK];
; 1203
; 1204 do
; 1205 begin
; 1206
; 1207 if (MSG_CNT = .MSG_CNT - .CCB [C_CNT]) lss 0
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 33
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (14)
; 1208 then
; 1209 SIGNAL_STOP (DTE$_XMT_MTL, .DB [D_DL_BLK]);
; 1210
; 1211 end
; 1212 while (CCB = .CCB [C_CHN]) neqa 0;
; 1213
; 1214 end;
; 1215
; 1216 if .DB [D_PROTOCOL_STATE] eql DS_RUNNING
; 1217 then
; 1218 TRANSMIT_MESSAGE (DB [D_TIM]);
; 1219
; 1220 end;
; 1221 [inrange] :
; 1222 SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_ABORTED);
; 1223 tes;
; 1224
; 1225 end; !of routine DLLXMT
.SBTTL DLLXMT
000000 010546 DLLXMT: MOV R5,-(SP) ; 1156
000002 010502 MOV R5,R2 ; *,DB
000004 005262 000034 INC 34(R2) ; *(DB) 1187
000010 116200 000012 MOVB 12(R2),R0 ; *(DB),* 1189
000014 006300 ASL R0
000016 066007 000072' ADD P.AAF(R0),PC ; Case dispatch
000022 010205 1$: MOV R2,R5 ; DB,* 1193
000024 062705 000120 ADD #120,R5
000030 010503 MOV R5,R3
000032 004767 000000G JSR PC,$CMQIN
000036 005764 000002 TST 2(R4) ; *(CCB) 1195
000042 001422 BEQ 4$
000044 016201 000172 MOV 172(R2),R1 ; *(DB),MSG.CNT 1202
000050 166401 000022 2$: SUB 22(R4),R1 ; *(CCB),MSG.CNT 1207
000054 100012 BPL 3$
000056 016246 000172 MOV 172(R2),-(SP) ; *(DB),* 1209
000062 012746 100043 MOV #-77735,-(SP)
000066 012746 000002 MOV #2,-(SP)
000072 004767 000000G JSR PC,$STOP
000076 062706 000006 ADD #6,SP
000102 016404 000002 3$: MOV 2(R4),R4 ; *(CCB),CCB 1212
000106 001360 BNE 2$
000110 126227 000012 000003 4$: CMPB 12(R2),#3 ; *(DB),* 1216
000116 001011 BNE 6$
000120 010205 MOV R2,R5 ; DB,* 1218
000122 004767 000000V JSR PC,TRANSMIT.MESSAGE
000126 000405 BR 6$ ; 1189
000130 010205 5$: MOV R2,R5 ; DB,* 1222
000132 012700 100030 MOV #-77750,R0
000136 004767 000000V JSR PC,SCHEDULE.TRANSMIT
000142 012605 6$: MOV (SP)+,R5 ; 1156
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 34
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (14)
000144 000207 RTS PC
; Routine Size: 51 words, Routine Base: $CODE$ + 1070
; Maximum stack depth per invocation: 5 words
000072 .PSECT $PLIT$, RO , D
P.AAF: ; CASE Table for DLLXMT+0016 1189
000072 000106 .WORD 106 ; [5$]
000074 000106 .WORD 106 ; [5$]
000076 000106 .WORD 106 ; [5$]
000100 000000 .WORD 0 ; [1$]
000102 000000 .WORD 0 ; [1$]
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 35
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (15)
; 1226 routine DTE_INTERRUPT (DB) : MCB_INTERRUPT novalue =
; 1227
; 1228 !++
; 1229 ! FUNCTIONAL DESCRIPTION:
; 1230 !
; 1231 !
; 1232 ! FORMAL PARAMETERS:
; 1233 ! DB = address of DTE data base.
; 1234 !
; 1235 ! IMPLICIT INPUTS:
; 1236 ! None
; 1237 !
; 1238 ! IMPLICIT OUTPUTS:
; 1239 ! None
; 1240 !
; 1241 ! ROUTINE VALUE:
; 1242 ! COMPLETION CODES:
; 1243 ! None
; 1244 !
; 1245 ! SIDE EFFECTS:
; 1246 ! None
; 1247 !--
; 1248
; 1249 begin
; 1250 GET_DTE_DATA_BASE (DB)
; 1251
; 1252 if .DB [DF_SYNCHRONIZING] then return;
; 1253
; 1254 DB [DF_SYNCHRONIZING] = TRUE;
; 1255 SYNCH$ (.DB [D_SYNCH_BLOCK], DTE_SYNCHRONIZE);
; 1256 end; !of routine DTE_INTERRUPT
.GLOBL $SYNCH
.SBTTL DTE.INTERRUPT
001236 .PSECT $CODE$, RO
000000 032715 040000 DTE.INTERRUPT:
BIT #40000,(R5) ; *,DB 1252
000004 001011 BNE 1$
000006 052715 040000 BIS #40000,(R5) ; *,DB 1254
000012 016504 000010 MOV 10(R5),R4 ; *(DB),* 1255
000016 012764 000000V 000004 MOV #DTE.SYNCHRONIZE,4(R4)
000024 004767 000000G JSR PC,$SYNCH
000030 000207 1$: RTS PC ; 1226
; Routine Size: 13 words, Routine Base: $CODE$ + 1236
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 36
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (16)
; 1257 routine DTE_SYNCHRONIZE (DB) : MCB_DB novalue =
; 1258
; 1259 !++
; 1260 ! FUNCTIONAL DESCRIPTION:
; 1261 !
; 1262 !
; 1263 ! FORMAL PARAMETERS:
; 1264 ! DB = address of DTE data base.
; 1265 !
; 1266 ! IMPLICIT INPUTS:
; 1267 ! None
; 1268 !
; 1269 ! IMPLICIT OUTPUTS:
; 1270 ! None
; 1271 !
; 1272 ! ROUTINE VALUE:
; 1273 ! COMPLETION CODES:
; 1274 ! None
; 1275 !
; 1276 ! SIDE EFFECTS:
; 1277 ! None
; 1278 !--
; 1279
; 1280 begin
; 1281 GET_DTE_DATA_BASE (DB)
; 1282 DB [DF_SYNCHRONIZING] = FALSE;
; 1283
; 1284 case .DB [D_PROTOCOL_STATE] from DS_STA_LOW to DS_STA_HIGH of
; 1285 set
; 1286 [DS_COM] :
; 1287 GETCOM (DB [D_TIM]);
; 1288
; 1289 [DS_RUNNING, DS_PAUSED] :
; 1290
; 1291 if DTE_TEST (.DB [D_REGISTER], TO10ER, TO11ER)
; 1292 then
; 1293 begin
; P 1294 $NM_PLL_EVENT (3, .DB [D_LINE_ENTITY],
; 1295 PARAMETER_DEVICE_REGISTERS (.DB [D_REGISTER]));
; 1296 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 1297 ! Transfer error.
; 1298 DEVICE_BROKEN (DB [D_TIM]);
; 1299 end
; 1300 else
; 1301 begin
; 1302
; 1303 if DTE_TEST (.DB [D_REGISTER], TO10DN) then T10DON (DB [D_TIM]);
; 1304
; 1305 if DTE_TEST (.DB [D_REGISTER], TO11DN) then T11DON (DB [D_TIM]);
; 1306
; 1307 end;
; 1308
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 37
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (16)
; 1309 [inrange] :
; 1310 NO_OPERATION;
; 1311
; 1312 tes;
; 1313
; 1314 case .DB [D_PROTOCOL_STATE] from DS_STA_LOW to DS_STA_HIGH of
; 1315 set
; 1316 [DS_INITIALIZING, DS_RUNNING, DS_PAUSED] :
; 1317 begin
; 1318 GET_HIS_STATUS (DB [D_TIM]);
; 1319
; 1320 if DTE_RINGING (.DB [D_REGISTER])
; 1321 then
; 1322 ANSWER_DOORBELL (DB [D_TIM]);
; 1323
; 1324 end;
; 1325
; 1326 [inrange] :
; 1327 NO_OPERATION;
; 1328
; 1329 tes;
; 1330
; 1331 if .DB [D_PROTOCOL_STATE] eql DS_RUNNING
; 1332 then
; 1333
; 1334 if not PAUSED (DB [D_TIM])
; 1335 then
; 1336
; 1337 if not INITIALIZATION_REQUESTED (DB [D_TIM])
; 1338 then
; 1339 begin
; 1340 TRANSMIT_MESSAGE (DB [D_TIM]);
; 1341 RECEIVE_MESSAGE (DB [D_TIM]);
; 1342 end;
; 1343
; 1344 end; !of routine DTE_SYNCHRONIZE
.GLOBL $NLBEG, $NLEND
.SBTTL DTE.SYNCHRONIZE
000000 042715 040000 DTE.SYNCHRONIZE:
BIC #40000,(R5) ; *,DB 1282
000004 012746 000012 MOV #12,-(SP) ; 1284
000010 060516 ADD R5,(SP) ; DB,*
000012 117600 000000 MOVB @0(SP),R0
000016 006300 ASL R0
000020 066007 000104' ADD P.AAG(R0),PC ; Case dispatch
000024 004767 000000V 1$: JSR PC,GETCOM ; 1287
000030 000440 BR 5$ ; 1284
000032 016501 000002 2$: MOV 2(R5),R1 ; *(DB),* 1291
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 38
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (16)
000036 032711 020002 BIT #20002,(R1)
000042 001421 BEQ 3$
000044 004767 000000G JSR PC,$NLBEG ; 1295
000050 004767 000000V JSR PC,PLL0
000054 012700 000603 MOV #603,R0
000060 016501 000042 MOV 42(R5),R1 ; *(DB),*
000064 004767 000000G JSR PC,$NLEND
000070 012700 100174 MOV #-77604,R0 ; 1296
000074 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000100 004767 177250 JSR PC,DEVICE.BROKEN ; 1298
000104 000412 BR 5$ ; 1291
000106 032711 100000 3$: BIT #-100000,(R1) ; 1303
000112 001402 BEQ 4$
000114 004767 000000V JSR PC,T10DON
000120 105775 000002 4$: TSTB @2(R5) ; *(DB) 1305
000124 100002 BPL 5$
000126 004767 000000V JSR PC,T11DON
000132 117600 000000 5$: MOVB @0(SP),R0 ; 1314
000136 006300 ASL R0
000140 066007 000116' ADD P.AAH(R0),PC ; Case dispatch
000144 004767 000000V 6$: JSR PC,GET.HIS.STATUS ; 1318
000150 032775 004000 000002 BIT #4000,@2(R5) ; *,*(DB) 1320
000156 001402 BEQ 7$
000160 004767 176324 JSR PC,ANSWER.DOORBELL ; 1322
000164 127627 000000 000003 7$: CMPB @0(SP),#3 ; 1331
000172 001014 BNE 8$
000174 004767 000000V JSR PC,PAUSED ; 1334
000200 006000 ROR R0
000202 103410 BLO 8$
000204 004767 000000V JSR PC,INITIALIZATION.REQUESTED ; 1337
000210 006000 ROR R0
000212 103404 BLO 8$
000214 004767 000000V JSR PC,TRANSMIT.MESSAGE ; 1340
000220 004767 000000V JSR PC,RECEIVE.MESSAGE ; 1341
000224 005726 8$: TST (SP)+ ; 1257
000226 000207 RTS PC
; Routine Size: 76 words, Routine Base: $CODE$ + 1270
; Maximum stack depth per invocation: 2 words
000104 .PSECT $PLIT$, RO , D
P.AAG: ; CASE Table for DTE.SYNCHRONIZE+0020 1284
000104 000106 .WORD 106 ; [5$]
000106 000000 .WORD 0 ; [1$]
000110 000106 .WORD 106 ; [5$]
000112 000006 .WORD 6 ; [2$]
000114 000006 .WORD 6 ; [2$]
P.AAH: ; CASE Table for DTE.SYNCHRONIZE+0140 1314
000116 000020 .WORD 20 ; [7$]
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 39
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (16)
000120 000020 .WORD 20 ; [7$]
000122 000000 .WORD 0 ; [6$]
000124 000000 .WORD 0 ; [6$]
000126 000000 .WORD 0 ; [6$]
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 40
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (17)
; 1345 routine DTECTL (DB, CCB, MODIFIER) : MCB_DB_CCB_MOD novalue =
; 1346
; 1347 !++
; 1348 ! FUNCTIONAL DESCRIPTION:
; 1349 !
; 1350 !
; 1351 ! FORMAL PARAMETERS:
; 1352 ! DB = address of DTE data base.
; 1353 ! CCB = address of CTL CCB.
; 1354 ! MODIFIER = control function modifier (from C_MOD of CCB).
; 1355 !
; 1356 ! IMPLICIT INPUTS:
; 1357 ! None
; 1358 !
; 1359 ! IMPLICIT OUTPUTS:
; 1360 ! None
; 1361 !
; 1362 ! ROUTINE VALUE:
; 1363 ! COMPLETION CODES:
; 1364 ! None
; 1365 !
; 1366 ! SIDE EFFECTS:
; 1367 ! None
; 1368 !--
; 1369
; 1370 begin
; 1371 GET_DTE_DATA_BASE (DB)
; 1372
; 1373 map
; 1374 CCB : ref block field (C_FIELDS);
; 1375
; P 1376 DISPATCH$ (.MODIFIER,
; P 1377 TABLE$ ($DSPCR, FD_CTL,
; P 1378 (FM_NM, DTENM),
; P 1379 (FM_STR, CTLSTR),
; P 1380 (FM_STP, CTLSTP)),
; P 1381 (DB [D_TIM], .CCB),
; 1382 MCB_DB_CCB);
; 1383 end; !of routine DTECTL
000130 000000G P.AAI: .WORD $DSPCR
000132 000456' .WORD CTLSTR
000134 000366' .WORD CTLSTP
000136 000000G .WORD DTENM
000140 000000G .WORD $DSPCR
000142 000000G .WORD $DSPCR
000144 000000G .WORD $DSPCR
.SBTTL DTECTL
001520 .PSECT $CODE$, RO
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 41
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (17)
000000 004773 000130' DTECTL: JSR PC,@P.AAI(R3) ; *,*(MODIFIER) 1382
000004 000207 RTS PC ; 1345
; Routine Size: 3 words, Routine Base: $CODE$ + 1520
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 42
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (18)
; 1384 routine DTERCE (DB, CCB) : MCB_DB_CCB novalue =
; 1385
; 1386 !++
; 1387 ! FUNCTIONAL DESCRIPTION:
; 1388 !
; 1389 !
; 1390 ! FORMAL PARAMETERS:
; 1391 ! DB = address of DTE data base.
; 1392 ! CCB = address of returned data RDB.
; 1393 !
; 1394 ! IMPLICIT INPUTS:
; 1395 ! None
; 1396 !
; 1397 ! IMPLICIT OUTPUTS:
; 1398 ! None
; 1399 !
; 1400 ! ROUTINE VALUE:
; 1401 ! COMPLETION CODES:
; 1402 ! None
; 1403 !
; 1404 ! SIDE EFFECTS:
; 1405 ! None
; 1406 !--
; 1407
; 1408 begin
; 1409 GET_DTE_DATA_BASE (DB)
; 1410 RDBRT$ (.CCB);
; 1411 DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] - 1;
; 1412
; 1413 if .DB [D_ACTIVE_BUFFERS] neq 0 then return;
; 1414
; 1415 if .DB [DF_CONTROL_WAITING]
; 1416 then
; 1417 begin
; 1418 DB [DF_CONTROL_WAITING] = FALSE;
; 1419 FLUSH_QUEUE (DB [D_PENDING_CONTROLS], %quote $MCB_SCHEDULE_CCB);
; 1420 end;
; 1421
; 1422 end; !of routine DTERCE
.GLOBL $RDBRT, $CMQRM
.SBTTL DTERCE
000000 004767 000000G DTERCE: JSR PC,$RDBRT ; 1410
000004 005365 000034 DEC 34(R5) ; *(DB) 1411
000010 001016 BNE 2$ ; 1413
000012 032715 010000 BIT #10000,(R5) ; *,DB 1415
000016 001413 BEQ 2$
000020 042715 010000 BIC #10000,(R5) ; *,DB 1418
000024 012703 000030 MOV #30,R3 ; 1419
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 43
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (18)
000030 060503 ADD R5,R3 ; DB,*
000032 004767 000000G 1$: JSR PC,$CMQRM
000036 103403 BCS 2$
000040 004767 000000G JSR PC,$SCHED
000044 000772 BR 1$
000046 000207 2$: RTS PC ; 1384
; Routine Size: 20 words, Routine Base: $CODE$ + 1526
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 44
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (19)
; 1423 global routine DTESTP (DB) : DTE_DB novalue =
; 1424
; 1425 !++
; 1426 ! FUNCTIONAL DESCRIPTION:
; 1427 !
; 1428 !
; 1429 ! FORMAL PARAMETERS:
; 1430 ! DB = address of DTE data base.
; 1431 !
; 1432 ! IMPLICIT INPUTS:
; 1433 ! None
; 1434 !
; 1435 ! IMPLICIT OUTPUTS:
; 1436 ! None
; 1437 !
; 1438 ! ROUTINE VALUE:
; 1439 ! COMPLETION CODES:
; 1440 ! None
; 1441 !
; 1442 ! SIDE EFFECTS:
; 1443 ! None
; 1444 !--
; 1445
; 1446 begin
; 1447 GET_DTE_DATA_BASE (DB)
; 1448 DTE_SET (.DB [D_REGISTER], INTROF);
; 1449 DB [$SUB_FIELD (D_XQZ, CSIZE)] = 0;
; 1450 DB [$SUB_FIELD (D_XQZ, PSIZE)] = 0;
; 1451 DEPMYH (DB [D_TIM], QSIZE, DB [D_XQZ]);
; 1452 DB [D_XCB] = 0;
; 1453 DB [D_XCT] = 0;
; 1454 DB [$SUB_FIELD (D_XST, V)] = 0;
; 1455 DB [$SUB_FIELD (D_XST, RCV)] = 0;
; 1456 DB [$SUB_FIELD (D_XST, CPQCNT)] = 0;
; 1457 DB [$SUB_FIELD (D_XST, QCOUNT)] = 0;
; 1458 DEPMYH (DB [D_TIM], STATUS, DB [D_XST]);
; 1459 DB [D_TIM] = 0;
; 1460 DB [D_LONG_TIMER] = 0;
; 1461 DTE_RESET (.DB [D_REGISTER]);
; 1462 FLUSH_QUEUE (DB [D_XMQ], %quote SCHEDULE_TRANSMIT, DB [D_TIM], DLL$_ABORTED);
; 1463 begin
; 1464
; 1465 local
; 1466 CCB;
; 1467
; 1468 if (CCB = .DB [D_RCB]) neq 0
; 1469 then
; 1470 begin
; 1471 RDBRT$ (.CCB);
; 1472 DB [D_RCB] = 0;
; 1473 DB [D_RCT] = 0;
; 1474 end;
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 45
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (19)
; 1475
; 1476 end;
; 1477 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_HALTED, LCL);
; 1478 end; !of routine DTESTP
.SBTTL DTESTP
000000 012775 000010 000002 DTESTP::MOV #10,@2(R5) ; *,*(DB) 1448
000006 005065 000100 CLR 100(R5) ; *(DB) 1449
000012 005065 000102 CLR 102(R5) ; *(DB) 1450
000016 012703 000100 MOV #100,R3 ; 1451
000022 060503 ADD R5,R3 ; DB,*
000024 012702 000003 MOV #3,R2
000030 004767 177000 JSR PC,DEPMYH
000034 005065 000126 CLR 126(R5) ; *(DB) 1452
000040 005065 000134 CLR 134(R5) ; *(DB) 1453
000044 142765 000001 000076 BICB #1,76(R5) ; *,*(DB) 1454
000052 142765 000001 000074 BICB #1,74(R5) ; *,*(DB) 1455
000060 012703 000072 MOV #72,R3 ; 1456
000064 060503 ADD R5,R3 ; DB,*
000066 105063 000001 CLRB 1(R3)
000072 105013 CLRB (R3) ; 1457
000074 012702 000002 MOV #2,R2 ; 1458
000100 004767 176730 JSR PC,DEPMYH
000104 105015 CLRB (R5) ; DB 1459
000106 105065 000020 CLRB 20(R5) ; *(DB) 1460
000112 016500 000002 MOV 2(R5),R0 ; *(DB),* 1461
000116 012760 000100 177776 MOV #100,-2(R0)
000124 012703 000120 MOV #120,R3 ; 1462
000130 060503 ADD R5,R3 ; DB,*
000132 004767 000000G 1$: JSR PC,$CMQRM
000136 103405 BCS 2$
000140 012700 100030 MOV #-77750,R0
000144 004767 000000V JSR PC,SCHEDULE.TRANSMIT
000150 000770 BR 1$
000152 016504 000110 2$: MOV 110(R5),R4 ; *(DB),CCB 1468
000156 001406 BEQ 3$
000160 004767 000000G JSR PC,$RDBRT ; 1471
000164 005065 000110 CLR 110(R5) ; *(DB) 1472
000170 005065 000116 CLR 116(R5) ; *(DB) 1473
000174 005046 3$: CLR -(SP) ; 1477
000176 005046 CLR -(SP)
000200 004767 176270 JSR PC,CHANGE.PROTOCOL.STATE
000204 022626 CMP (SP)+,(SP)+ ; 1446
000206 000207 RTS PC ; 1423
; Routine Size: 68 words, Routine Base: $CODE$ + 1576
; Maximum stack depth per invocation: 3 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 46
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (20)
; 1479 global routine DTESTR (DB) : DTE_DB novalue =
; 1480
; 1481 !++
; 1482 ! FUNCTIONAL DESCRIPTION:
; 1483 !
; 1484 !
; 1485 ! FORMAL PARAMETERS:
; 1486 ! DB = address of DTE data base.
; 1487 !
; 1488 ! IMPLICIT INPUTS:
; 1489 ! None
; 1490 !
; 1491 ! IMPLICIT OUTPUTS:
; 1492 ! None
; 1493 !
; 1494 ! ROUTINE VALUE:
; 1495 ! COMPLETION CODES:
; 1496 ! None
; 1497 !
; 1498 ! SIDE EFFECTS:
; 1499 ! None
; 1500 !--
; 1501
; 1502 begin
; 1503 GET_DTE_DATA_BASE (DB)
; 1504
; 1505 if .DB [D_DEVICE_STATE] eql DD_CLEARED
; 1506 then
; 1507 return;
; 1508
; 1509 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_COM, LCL);
; 1510 DB [D_START_THRESHOLD] = 7;
; 1511 DTE_SET (.DB [D_REGISTER], INTRON);
; 1512 DB [D_TIM] = .DB [D_TIM] + 1;
; 1513 GETCOM (DB [D_TIM]);
; 1514 end; !of routine DTESTR
.SBTTL DTESTR
000000 105765 000016 DTESTR::TSTB 16(R5) ; *(DB) 1505
000004 001417 BEQ 1$ ; 1507
000006 012746 000001 MOV #1,-(SP) ; 1509
000012 005046 CLR -(SP)
000014 004767 176244 JSR PC,CHANGE.PROTOCOL.STATE
000020 112765 000007 000021 MOVB #7,21(R5) ; *,*(DB) 1510
000026 012775 000040 000002 MOV #40,@2(R5) ; *,*(DB) 1511
000034 105215 INCB (R5) ; DB 1512
000036 004767 000000V JSR PC,GETCOM ; 1513
000042 022626 CMP (SP)+,(SP)+ ; 1502
000044 000207 1$: RTS PC ; 1479
; Routine Size: 19 words, Routine Base: $CODE$ + 2006
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 47
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (20)
; Maximum stack depth per invocation: 3 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 48
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (21)
; 1515 routine DTETIM (DB, MODIFIER) : MCB_DB_MOD novalue =
; 1516
; 1517 !++
; 1518 ! FUNCTIONAL DESCRIPTION:
; 1519 !
; 1520 !
; 1521 ! FORMAL PARAMETERS:
; 1522 ! DB = address of DTE data base.
; 1523 ! MODIFIER = timer function modifier.
; 1524 !
; 1525 ! IMPLICIT INPUTS:
; 1526 ! None
; 1527 !
; 1528 ! IMPLICIT OUTPUTS:
; 1529 ! None
; 1530 !
; 1531 ! ROUTINE VALUE:
; 1532 ! COMPLETION CODES:
; 1533 ! None
; 1534 !
; 1535 ! SIDE EFFECTS:
; 1536 ! None
; 1537 !--
; 1538
; 1539 begin
; 1540 GET_DTE_DATA_BASE (DB)
; P 1541 DISPATCH$ (
; P 1542 .MODIFIER,
; P 1543 TABLE$ ($DSPCR, FD_TIM, ! Dispatch table:
; P 1544 (FM_LTM, TIMLTM), ! Long timer
; P 1545 (FM_CCB, TIMCCB), ! CCB available
; P 1546 (FM_RDB, TIMRDB), ! RDB available
; P 1547 (FM_PWF, TIMPWF), ! Power failure
; P 1548 (FM_PIN, TIMPIN)), ! Process initialization
; P 1549 (DB [D_TIM]),
; 1550 MCB_DB);
; 1551 end; !of routine DTETIM
000146 .PSECT $PLIT$, RO , D
000146 000000G P.AAJ: .WORD $DSPCR
000150 000000V .WORD TIMLTM
000152 000000V .WORD TIMPWF
000154 000000V .WORD TIMPIN
000156 000000V .WORD TIMCCB
000160 000000V .WORD TIMRDB
.SBTTL DTETIM
002054 .PSECT $CODE$, RO
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 49
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (21)
000000 004773 000146' DTETIM: JSR PC,@P.AAJ(R3) ; *,*(MODIFIER) 1550
000004 000207 RTS PC ; 1515
; Routine Size: 3 words, Routine Base: $CODE$ + 2054
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 50
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (22)
; 1552 routine DTEXME (DB, CCB, MODIFIER) : MCB_DB_CCB_MOD novalue =
; 1553
; 1554 !++
; 1555 ! FUNCTIONAL DESCRIPTION:
; 1556 !
; 1557 !
; 1558 ! FORMAL PARAMETERS:
; 1559 ! DB = address of DTE data base.
; 1560 ! CCB = address of transmit CCB.
; 1561 ! MODIFIER = transmit function modifier (from C_MOD of CCB).
; 1562 !
; 1563 ! IMPLICIT INPUTS:
; 1564 ! None
; 1565 !
; 1566 ! IMPLICIT OUTPUTS:
; 1567 ! None
; 1568 !
; 1569 ! ROUTINE VALUE:
; 1570 ! COMPLETION CODES:
; 1571 ! None
; 1572 !
; 1573 ! SIDE EFFECTS:
; 1574 ! None
; 1575 !--
; 1576
; 1577 begin
; 1578 GET_DTE_DATA_BASE (DB)
; 1579
; 1580 map
; 1581 CCB : ref block field (C_FIELDS);
; 1582
; P 1583 DISPATCH$ (
; P 1584 .MODIFIER,
; P 1585 TABLE$ ($DSPCR, 0,
; P 1586 (DLL$K_ENTER_MAINTENANCE, DLLMOP),
; P 1587 (DLL$K_INITIALIZE_LINK, DLLINI),
; P 1588 (DLL$K_STOP_LINK, DLLSTP),
; P 1589 (DLL$K_TRANSMIT, DLLXMT),
; P 1590 (DLL$K_TRANSMIT_AND_TIME, DLLXMT)),
; P 1591 (DB [D_TIM], .CCB),
; 1592 DTE_DB_CCB);
; 1593 end; !of routine DTEXME
000162 .PSECT $PLIT$, RO , D
000162 001070' P.AAK: .WORD DLLXMT
000164 000652' .WORD DLLINI
000166 001020' .WORD DLLSTP
000170 000776' .WORD DLLMOP
000172 001070' .WORD DLLXMT
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 51
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (22)
.SBTTL DTEXME
002062 .PSECT $CODE$, RO
000000 004773 000162' DTEXME: JSR PC,@P.AAK(R3) ; *,*(MODIFIER) 1592
000004 000207 RTS PC ; 1552
; Routine Size: 3 words, Routine Base: $CODE$ + 2062
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 52
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (23)
; 1594 routine EXMHSG (DB, OFFSET, BUFFER) : EXDP_LINKAGE =
; 1595
; 1596 !++
; 1597 ! FUNCTIONAL DESCRIPTION:
; 1598 !
; 1599 !
; 1600 ! FORMAL PARAMETERS:
; 1601 ! DB = address of DTE data base.
; 1602 ! OFFSET = comm/region offset.
; 1603 ! BUFFER = address of 3 word buffer to receive examined data.
; 1604 !
; 1605 ! IMPLICIT INPUTS:
; 1606 ! None
; 1607 !
; 1608 ! IMPLICIT OUTPUTS:
; 1609 ! None
; 1610 !
; 1611 ! ROUTINE VALUE:
; 1612 ! COMPLETION CODES:
; 1613 ! None
; 1614 !
; 1615 ! SIDE EFFECTS:
; 1616 ! None
; 1617 !--
; 1618
; 1619 begin
; 1620 GET_DTE_DATA_BASE (DB)
; 1621 PRTEXM (DB [D_TIM], .OFFSET + .DB [D_EHG], .BUFFER)
; 1622 end; !of routine EXMHSG
.SBTTL EXMHSG
000000 066502 000046 EXMHSG: ADD 46(R5),R2 ; *(DB),* 1621
000004 004767 000000V JSR PC,PRTEXM
000010 000207 RTS PC ; 1594
; Routine Size: 5 words, Routine Base: $CODE$ + 2070
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 53
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (24)
; 1623 routine EXMHSM (DB, OFFSET, BUFFER) : EXDP_LINKAGE =
; 1624
; 1625 !++
; 1626 ! FUNCTIONAL DESCRIPTION:
; 1627 !
; 1628 !
; 1629 ! FORMAL PARAMETERS:
; 1630 ! DB = address of DTE data base.
; 1631 ! OFFSET = comm/region offset.
; 1632 ! BUFFER = address of 3 word buffer to receive examined data.
; 1633 !
; 1634 ! IMPLICIT INPUTS:
; 1635 ! None
; 1636 !
; 1637 ! IMPLICIT OUTPUTS:
; 1638 ! None
; 1639 !
; 1640 ! ROUTINE VALUE:
; 1641 ! COMPLETION CODES:
; 1642 ! None
; 1643 !
; 1644 ! SIDE EFFECTS:
; 1645 ! None
; 1646 !--
; 1647
; 1648 begin
; 1649 GET_DTE_DATA_BASE (DB)
; 1650 PRTEXM (DB [D_TIM], .OFFSET + .DB [D_EHM], .BUFFER)
; 1651 end; !of routine EXMHSM
.SBTTL EXMHSM
000000 066502 000050 EXMHSM: ADD 50(R5),R2 ; *(DB),* 1650
000004 004767 000000V JSR PC,PRTEXM
000010 000207 RTS PC ; 1623
; Routine Size: 5 words, Routine Base: $CODE$ + 2102
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 54
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (25)
; 1652 routine EXMMYG (DB, OFFSET, BUFFER) : EXDP_LINKAGE =
; 1653
; 1654 !++
; 1655 ! FUNCTIONAL DESCRIPTION:
; 1656 !
; 1657 !
; 1658 ! FORMAL PARAMETERS:
; 1659 ! DB = address of DTE data base.
; 1660 ! OFFSET = comm/region offset.
; 1661 ! BUFFER = address of 3 word buffer to receive examined data.
; 1662 !
; 1663 ! IMPLICIT INPUTS:
; 1664 ! None
; 1665 !
; 1666 ! IMPLICIT OUTPUTS:
; 1667 ! None
; 1668 !
; 1669 ! ROUTINE VALUE:
; 1670 ! COMPLETION CODES:
; 1671 ! None
; 1672 !
; 1673 ! SIDE EFFECTS:
; 1674 ! None
; 1675 !--
; 1676
; 1677 begin
; 1678 GET_DTE_DATA_BASE (DB)
; 1679 PRTEXM (DB [D_TIM], .OFFSET + .DB [D_EMG], .BUFFER)
; 1680 end; !of routine EXMMYG
.SBTTL EXMMYG
000000 066502 000052 EXMMYG: ADD 52(R5),R2 ; *(DB),* 1679
000004 004767 000000V JSR PC,PRTEXM
000010 000207 RTS PC ; 1652
; Routine Size: 5 words, Routine Base: $CODE$ + 2114
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 55
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (26)
; 1681 routine EXMMYH (DB, OFFSET, BUFFER) : EXDP_LINKAGE =
; 1682
; 1683 !++
; 1684 ! FUNCTIONAL DESCRIPTION:
; 1685 !
; 1686 !
; 1687 ! FORMAL PARAMETERS:
; 1688 ! DB = address of DTE data base.
; 1689 ! OFFSET = comm/region offset.
; 1690 ! BUFFER = address of 3 word buffer to receive examined data.
; 1691 !
; 1692 ! IMPLICIT INPUTS:
; 1693 ! None
; 1694 !
; 1695 ! IMPLICIT OUTPUTS:
; 1696 ! None
; 1697 !
; 1698 ! ROUTINE VALUE:
; 1699 ! COMPLETION CODES:
; 1700 ! None
; 1701 !
; 1702 ! SIDE EFFECTS:
; 1703 ! None
; 1704 !--
; 1705
; 1706 begin
; 1707 GET_DTE_DATA_BASE (DB)
; 1708 PRTEXM (DB [D_TIM], .OFFSET + .DB [D_DMH] + .DB [D_EMG], .BUFFER)
; 1709 end; !of routine EXMMYH
.SBTTL EXMMYH
000000 066502 000054 EXMMYH: ADD 54(R5),R2 ; *(DB),* 1708
000004 066502 000052 ADD 52(R5),R2 ; *(DB),*
000010 004767 000000V JSR PC,PRTEXM
000014 000207 RTS PC ; 1681
; Routine Size: 7 words, Routine Base: $CODE$ + 2126
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 56
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (27)
; 1710 routine GET_HIS_STATUS (DB) : EXM_LINKAGE novalue =
; 1711
; 1712 !++
; 1713 ! FUNCTIONAL DESCRIPTION:
; 1714 !
; 1715 !
; 1716 ! FORMAL PARAMETERS:
; 1717 ! DB = address of DTE data base.
; 1718 !
; 1719 ! IMPLICIT INPUTS:
; 1720 ! None
; 1721 !
; 1722 ! IMPLICIT OUTPUTS:
; 1723 ! None
; 1724 !
; 1725 ! ROUTINE VALUE:
; 1726 ! COMPLETION CODES:
; 1727 ! None
; 1728 !
; 1729 ! SIDE EFFECTS:
; 1730 ! None
; 1731 !--
; 1732
; 1733 begin
; 1734 GET_DTE_DATA_BASE (DB)
; 1735
; 1736 local
; 1737 BUFFER : ref vector;
; 1738
; 1739 BUFFER = DB [D_RST];
; 1740
; 1741 if not EXMHSM (DB [D_TIM], STATUS, .BUFFER)
; 1742 then
; 1743 begin
; 1744 BUFFER [0] = 0;
; 1745 BUFFER [1] = 0;
; 1746 BUFFER [2] = 0;
; 1747 BUFFER = BUFFER [2]; %(to force auto-increment)%
; 1748 end;
; 1749
; 1750 end; !of routine GET_HIS_STATUS
.SBTTL GET.HIS.STATUS
000000 010503 GET.HIS.STATUS:
MOV R5,R3 ; DB,BUFFER 1739
000002 062703 000056 ADD #56,R3 ; *,BUFFER
000006 012702 000002 MOV #2,R2 ; 1741
000012 004767 177720 JSR PC,EXMHSM
000016 006000 ROR R0
000020 103403 BLO 1$
000022 005023 CLR (R3)+ ; BUFFER 1744
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 57
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (27)
000024 005023 CLR (R3)+ ; BUFFER 1745
000026 005013 CLR (R3) ; BUFFER 1746
000030 000207 1$: RTS PC ; 1710
; Routine Size: 13 words, Routine Base: $CODE$ + 2144
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 58
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (28)
; 1751 routine GETCOM (DB) : DTE_DB novalue =
; 1752
; 1753 !++
; 1754 ! FUNCTIONAL DESCRIPTION:
; 1755 !
; 1756 !
; 1757 ! FORMAL PARAMETERS:
; 1758 ! DB = address of DTE data base.
; 1759 !
; 1760 ! IMPLICIT INPUTS:
; 1761 ! None
; 1762 !
; 1763 ! IMPLICIT OUTPUTS:
; 1764 ! None
; 1765 !
; 1766 ! ROUTINE VALUE:
; 1767 ! COMPLETION CODES:
; 1768 ! None
; 1769 !
; 1770 ! SIDE EFFECTS:
; 1771 ! None
; 1772 !--
; 1773
; 1774 begin
; 1775 GET_DTE_DATA_BASE (DB)
; 1776
; 1777 literal
; 1778 SUCCESS = not -1 %(while 0 do 0)%;
; 1779
; 1780 local
; 1781 BUFFER : ref block field (COM_FIELDS);
; 1782
; 1783 DB [D_LONG_TIMER] = DTE_K_START_TIMEOUT;
; 1784 BUFFER = DB [D_RST];
; 1785
; 1786 if not PRTEXM (DB [D_TIM], 0, .BUFFER) then return;
; 1787
; 1788 DB [D_MPN] = .BUFFER [PRCNUM];
; 1789 DB [D_EMG] = .DB [D_MPN] + 1 + .BUFFER [RELADR];
; 1790
; 1791 if not EXMMYG (DB [D_TIM], PIDENT, .BUFFER) then return;
; 1792
; 1793 DB [D_DMH] = .BUFFER [NPRSIZ]^3;
; 1794
; 1795 if (decr INDEX from .BUFFER [NPRCNT] to 1 do
; 1796 begin
; 1797
; 1798 if not EXMMYH (DB [D_TIM], FORPRO, .BUFFER) then return;
; 1799
; 1800 if .BUFFER [D] and
; 1801 .BUFFER [DTN] eql .DB [D_CONTROLLER]
; 1802 then
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 59
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (28)
; 1803 exitloop SUCCESS;
; 1804
; 1805 begin
; 1806
; 1807 local
; 1808 SIZE;
; 1809
; 1810 SIZE = .BUFFER [PROSIZ];
; 1811
; 1812 if .SIZE eql 0 then SIZE = .SIZE + 1;
; 1813
; 1814 DB [D_DMH] = .DB [D_DMH] + .SIZE^3;
; 1815 end
; 1816 end) neq SUCCESS
; 1817 then
; 1818 return;
; 1819
; 1820 if .BUFFER [PROTYP] neq 1 then return;
; 1821
; 1822 DB [D_HPN] = .BUFFER [TOPRCN];
; 1823
; 1824 if not EXMMYH (DB [D_TIM], PROPNT, .BUFFER) then return;
; 1825
; 1826 DB [D_EHG] = .DB [D_MPN] + 1 + .BUFFER [0, 0, 16, 0];
; 1827
; 1828 if not EXMHSG (DB [D_TIM], PIDENT, .BUFFER) then return;
; 1829
; 1830 DB [D_EHM] = .BUFFER [NPRSIZ]^3 + .DB [D_EHG];
; 1831
; 1832 if (decr INDEX from .BUFFER [NPRCNT] to 1 do
; 1833 begin
; 1834
; 1835 if not EXMHSM (DB [D_TIM], FORPRO, .BUFFER) then return;
; 1836
; 1837 if .BUFFER [TOPRCN] eql .DB [D_MPN]
; 1838 then
; 1839 exitloop SUCCESS;
; 1840
; 1841 begin
; 1842
; 1843 local
; 1844 SIZE;
; 1845
; 1846 SIZE = .BUFFER [PROSIZ];
; 1847
; 1848 if .SIZE eql 0 then SIZE = .SIZE + 1;
; 1849
; 1850 DB [D_EHM] = .DB [D_EHM] + .SIZE^3;
; 1851 end
; 1852 end) neq SUCCESS
; 1853 then
; 1854 return;
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 60
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (28)
; 1855
; 1856 if not EXMHSM (DB [D_TIM], STATUS, .BUFFER) then return;
; 1857
; 1858 if not .BUFFER [V] then return;
; 1859
; 1860 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_INITIALIZING, LCL);
; 1861 DB [D_START_THRESHOLD] = 7;
; 1862 CLEAR_DOORBELL (DB [D_TIM]);
; 1863 DEPMYH (DB [D_TIM], QSIZE, DB [D_XQZ]);
; 1864 DB [$SUB_FIELD (D_XST, I)] = 1;
; 1865 DB [$SUB_FIELD (D_XST, V)] = 1;
; 1866 DEPMYH (DB [D_TIM], STATUS, DB [D_XST]);
; 1867 DTE_SET (.DB [D_REGISTER], INT10S);
; 1868 end; !of routine GETCOM
.SBTTL GETCOM
000000 162706 000006 GETCOM: SUB #6,SP ; 1751
000004 112765 000005 000020 MOVB #5,20(R5) ; *,*(DB) 1783
000012 010503 MOV R5,R3 ; DB,BUFFER 1784
000014 062703 000056 ADD #56,R3 ; *,BUFFER
000020 005002 CLR R2 ; 1786
000022 004767 000000V JSR PC,PRTEXM
000026 006000 ROR R0
000030 103167 BHIS 6$
000032 012766 000044 000002 MOV #44,2(SP) ; 1788
000040 060566 000002 ADD R5,2(SP) ; DB,*
000044 012766 000002 000004 MOV #2,4(SP)
000052 060366 000004 ADD R3,4(SP) ; BUFFER,*
000056 017600 000004 MOV @4(SP),R0
000062 072027 177770 ASH #-10,R0
000066 042700 177760 BIC #177760,R0
000072 105076 000002 CLRB @2(SP)
000076 150076 000002 BISB R0,@2(SP)
000102 117600 000002 MOVB @2(SP),R0 ; 1774
000106 061300 ADD (R3),R0 ; BUFFER,*
000110 010065 000052 MOV R0,52(R5) ; *,*(DB) 1789
000114 005265 000052 INC 52(R5) ; *(DB)
000120 005002 CLR R2 ; 1791
000122 004767 177570 JSR PC,EXMMYG
000126 006000 ROR R0
000130 103155 BHIS 8$
000132 117665 000004 000054 MOVB @4(SP),54(R5) ; *,*(DB) 1793
000140 042765 177770 000054 BIC #177770,54(R5) ; *,*(DB)
000146 006365 000054 ASL 54(R5) ; *(DB)
000152 006365 000054 ASL 54(R5) ; *(DB)
000156 006365 000054 ASL 54(R5) ; *(DB)
000162 012716 000004 MOV #4,(SP) ; 1800
000166 060316 ADD R3,(SP) ; BUFFER,*
000170 117604 000004 MOVB @4(SP),R4 ; *,INDEX 1795
000174 072427 177775 ASH #-3,R4 ; *,INDEX
000200 042704 177740 BIC #177740,R4 ; *,INDEX
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 61
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (28)
000204 003440 BLE 4$
000206 005002 1$: CLR R2 ; 1798
000210 004767 177514 JSR PC,EXMMYH
000214 006000 ROR R0
000216 103156 BHIS 13$
000220 132776 000004 000000 BITB #4,@0(SP) ; 1800
000226 001412 BEQ 2$
000230 116501 000007 MOVB 7(R5),R1 ; *(DB),* 1801
000234 117600 000000 MOVB @0(SP),R0
000240 042700 177774 BIC #177774,R0
000244 020001 CMP R0,R1
000246 001002 BNE 2$
000250 005000 CLR R0 ; 1803
000252 000417 BR 5$
000254 117600 000004 2$: MOVB @4(SP),R0 ; *,SIZE 1810
000260 042700 177770 BIC #177770,R0 ; *,SIZE
000264 001001 BNE 3$ ; 1812
000266 005200 INC R0 ; SIZE
000270 072027 000003 3$: ASH #3,R0 ; 1814
000274 066500 000054 ADD 54(R5),R0 ; *(DB),*
000300 010065 000054 MOV R0,54(R5) ; *,*(DB)
000304 077440 SOB R4,1$ ; INDEX,* 0000
000306 012700 177777 4$: MOV #-1,R0 ; 1795
000312 001166 5$: BNE 14$ ; 1818
000314 117600 000004 MOVB @4(SP),R0 ; 1820
000320 042700 177407 BIC #177407,R0
000324 020027 000010 CMP R0,#10
000330 001157 BNE 14$
000332 017646 000002 MOV @2(SP),-(SP) ; 1822
000336 111366 000001 MOVB (R3),1(SP) ; BUFFER,*
000342 012676 000002 MOV (SP)+,@2(SP)
000346 012702 000001 MOV #1,R2 ; 1824
000352 004767 177352 JSR PC,EXMMYH
000356 006000 ROR R0
000360 103143 BHIS 14$
000362 117600 000002 MOVB @2(SP),R0 ; 1774
000366 061300 ADD (R3),R0 ; BUFFER,*
000370 010065 000046 MOV R0,46(R5) ; *,*(DB) 1826
000374 005265 000046 INC 46(R5) ; *(DB)
000400 005002 CLR R2 ; 1828
000402 004767 177264 JSR PC,EXMHSG
000406 006000 ROR R0
000410 103127 6$: BHIS 14$
000412 117600 000004 MOVB @4(SP),R0 ; 1830
000416 042700 177770 BIC #177770,R0
000422 072027 000003 ASH #3,R0
000426 066500 000046 ADD 46(R5),R0 ; *(DB),*
000432 010065 000050 MOV R0,50(R5) ; *,*(DB)
000436 117604 000004 MOVB @4(SP),R4 ; *,INDEX 1832
000442 072427 177775 ASH #-3,R4 ; *,INDEX
000446 042704 177740 BIC #177740,R4 ; *,INDEX
000452 003430 BLE 11$
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 62
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (28)
000454 005002 7$: CLR R2 ; 1835
000456 004767 177222 JSR PC,EXMHSM
000462 006000 ROR R0
000464 103101 8$: BHIS 14$
000466 117600 000002 MOVB @2(SP),R0 ; 1837
000472 021300 CMP (R3),R0 ; BUFFER,*
000474 001002 BNE 9$
000476 005000 CLR R0 ; 1839
000500 000417 BR 12$
000502 117600 000004 9$: MOVB @4(SP),R0 ; *,SIZE 1846
000506 042700 177770 BIC #177770,R0 ; *,SIZE
000512 001001 BNE 10$ ; 1848
000514 005200 INC R0 ; SIZE
000516 072027 000003 10$: ASH #3,R0 ; 1850
000522 066500 000050 ADD 50(R5),R0 ; *(DB),*
000526 010065 000050 MOV R0,50(R5) ; *,*(DB)
000532 077430 SOB R4,7$ ; INDEX,* 0000
000534 012700 177777 11$: MOV #-1,R0 ; 1832
000540 001053 12$: BNE 14$ ; 1854
000542 012702 000002 MOV #2,R2 ; 1856
000546 004767 177132 JSR PC,EXMHSM
000552 006000 ROR R0
000554 103045 13$: BHIS 14$
000556 132776 000001 000000 BITB #1,@0(SP) ; 1858
000564 001441 BEQ 14$
000566 012746 000002 MOV #2,-(SP) ; 1860
000572 005046 CLR -(SP)
000574 004767 175274 JSR PC,CHANGE.PROTOCOL.STATE
000600 112765 000007 000021 MOVB #7,21(R5) ; *,*(DB) 1861
000606 004767 175276 JSR PC,CLEAR.DOORBELL ; 1862
000612 010500 MOV R5,R0 ; DB,* 1863
000614 062700 000100 ADD #100,R0
000620 012702 000003 MOV #3,R2
000624 010003 MOV R0,R3
000626 004767 175602 JSR PC,DEPMYH
000632 152765 000003 000076 BISB #3,76(R5) ; *,*(DB) 1865
000640 010500 MOV R5,R0 ; DB,* 1866
000642 062700 000072 ADD #72,R0
000646 012702 000002 MOV #2,R2
000652 010003 MOV R0,R3
000654 004767 175554 JSR PC,DEPMYH
000660 012775 000400 000002 MOV #400,@2(R5) ; *,*(DB) 1867
000666 022626 CMP (SP)+,(SP)+ ; 1774
000670 062706 000006 14$: ADD #6,SP ; 1751
000674 000207 RTS PC
; Routine Size: 223 words, Routine Base: $CODE$ + 2176
; Maximum stack depth per invocation: 6 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 63
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (29)
; 1869 routine INITIALIZATION_REQUESTED (DB) : DTE_DB =
; 1870
; 1871 !++
; 1872 ! FUNCTIONAL DESCRIPTION:
; 1873 !
; 1874 !
; 1875 ! FORMAL PARAMETERS:
; 1876 ! DB = address of DTE data base.
; 1877 !
; 1878 ! IMPLICIT INPUTS:
; 1879 ! None
; 1880 !
; 1881 ! IMPLICIT OUTPUTS:
; 1882 ! None
; 1883 !
; 1884 ! ROUTINE VALUE:
; 1885 ! COMPLETION CODES:
; 1886 ! None
; 1887 !
; 1888 ! SIDE EFFECTS:
; 1889 ! None
; 1890 !--
; 1891
; 1892 begin
; 1893 GET_DTE_DATA_BASE (DB)
; 1894
; 1895 if .DB [$SUB_FIELD (D_RST, I)]
; 1896 then
; 1897 begin
; 1898 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_START_RECEIVED);
; 1899 DTESTP (DB [D_TIM]);
; 1900 TRUE
; 1901 end
; 1902 else
; 1903 false
; 1904
; 1905 end; !of routine INITIALIZATION_REQUESTED
.SBTTL INITIALIZATION.REQUESTED
000000 132765 000002 000062 INITIALIZATION.REQUESTED:
BITB #2,62(R5) ; *,*(DB) 1895
000006 001411 BEQ 1$
000010 012700 100130 MOV #-77650,R0 ; 1898
000014 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000020 004767 176456 JSR PC,DTESTP ; 1899
000024 012700 000001 MOV #1,R0 ; 1895
000030 000207 RTS PC
000032 005000 1$: CLR R0
000034 000207 RTS PC ; 1869
; Routine Size: 15 words, Routine Base: $CODE$ + 3074
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 64
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (29)
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 65
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (30)
; 1906 routine NEW_RCB (DB, CCB) : DTE_DB novalue =
; 1907
; 1908 !++
; 1909 ! FUNCTIONAL DESCRIPTION:
; 1910 !
; 1911 !
; 1912 ! FORMAL PARAMETERS:
; 1913 ! DB = address of DTE data base.
; 1914 ! CCB = address of new receive buffer CCB.
; 1915 !
; 1916 ! IMPLICIT INPUTS:
; 1917 ! None
; 1918 !
; 1919 ! IMPLICIT OUTPUTS:
; 1920 ! None
; 1921 !
; 1922 ! ROUTINE VALUE:
; 1923 ! COMPLETION CODES:
; 1924 ! None
; 1925 !
; 1926 ! SIDE EFFECTS:
; 1927 ! None
; 1928 !--
; 1929
; 1930 begin
; 1931 GET_DTE_DATA_BASE (DB)
; 1932
; 1933 map
; 1934 CCB : ref block field (C_FIELDS);
; 1935
; 1936 CCB [C_CNT] = 0;
; 1937 DB [D_RCB] = .CCB;
; P 1938 $MCB_CONVERT_TO_UBA_ADDRESS ((.CCB [C_BIAS], .CCB [C_ADDR]),
; P 1939 DB [$SUB_FIELD (D_RBA, PHYSICAL_LOW)],
; 1940 DB [$SUB_FIELD (D_RBA, PHYSICAL_HIGH)]);
; 1941 end; !of routine NEW_RCB
.GLOBL $PHY18
.SBTTL NEW.RCB
000000 016600 000002 NEW.RCB:MOV 2(SP),R0 ; CCB,* 1936
000004 005060 000022 CLR 22(R0)
000010 010065 000110 MOV R0,110(R5) ; *,*(DB) 1937
000014 016002 000016 MOV 16(R0),R2 ; 1940
000020 016003 000020 MOV 20(R0),R3
000024 004767 000000G JSR PC,$PHY18
000030 010365 000114 MOV R3,114(R5) ; *,*(DB)
000034 010265 000112 MOV R2,112(R5) ; *,*(DB)
000040 000207 RTS PC ; 1906
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 66
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (30)
; Routine Size: 17 words, Routine Base: $CODE$ + 3132
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 67
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (31)
; 1942 global routine PARAMETER_DEVICE_REGISTERS
; 1943
; 1944 !++
; 1945 ! FUNCTIONAL DESCRIPTION:
; 1946 !
; 1947 !
; 1948 ! FORMAL PARAMETERS:
; 1949 (REG : ref vector)
; 1950 !
; 1951 ! IMPLICIT INPUTS:
; 1952 ! None
; 1953 !
; 1954 ! IMPLICIT OUTPUTS:
; 1955 ! None
; 1956 !
; 1957 ! ROUTINE VALUE:
; 1958 : DTE_REG novalue =
; 1959 !
; 1960 ! SIDE EFFECTS:
; 1961 ! None
; 1962 !--
; 1963
; 1964 begin
; 1965
; 1966 !
; 1967 ! Adjust to beginning of register set
; 1968 !
; 1969
; 1970 REG <0, 5> = 0;
; 1971
; 1972 !
; 1973 ! DTE registers
; 1974 !
; 1975
; 1976 decr COUNT from 16 to 1 do
; 1977 begin
; 1978 PARAMETER_H_2 (0, REG [0]);
; 1979 REG = REG [1];
; 1980 end;
; 1981
; 1982 end; !of routine PARAMETER_DEVICE_REGISTERS
.GLOBL $DPH2
.SBTTL PLL0
000000 010246 PLL0:: MOV R2,-(SP) ; 1942
000002 142701 000037 BICB #37,R1 ; *,REG 1970
000006 012702 000020 MOV #20,R2 ; *,COUNT 1976
000012 005046 1$: CLR -(SP) ; 1978
000014 011100 MOV (R1),R0 ; REG,*
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 68
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (31)
000016 004767 000000G JSR PC,$DPH2
000022 062701 000002 ADD #2,R1 ; *,REG 1979
000026 005726 TST (SP)+ ; 1977
000030 077210 SOB R2,1$ ; COUNT,* 0000
000032 012602 MOV (SP)+,R2 ; 1942
000034 000207 RTS PC
; Routine Size: 15 words, Routine Base: $CODE$ + 3174
; Maximum stack depth per invocation: 3 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 69
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (32)
; 1983 routine PAUSED (DB) : DTE_DB =
; 1984
; 1985 !++
; 1986 ! FUNCTIONAL DESCRIPTION:
; 1987 !
; 1988 !
; 1989 ! FORMAL PARAMETERS:
; 1990 ! DB = address of DTE data base.
; 1991 !
; 1992 ! IMPLICIT INPUTS:
; 1993 ! None
; 1994 !
; 1995 ! IMPLICIT OUTPUTS:
; 1996 ! None
; 1997 !
; 1998 ! ROUTINE VALUE:
; 1999 ! COMPLETION CODES:
; 2000 ! None
; 2001 !
; 2002 ! SIDE EFFECTS:
; 2003 ! None
; 2004 !--
; 2005
; 2006 begin
; 2007 GET_DTE_DATA_BASE (DB)
; 2008
; 2009 if not .DB [$SUB_FIELD (D_RST, V)]
; 2010 then
; 2011 begin
; 2012 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_PAUSED, RMT);
; 2013 DB [D_LONG_TIMER] = DTE_K_PAUSE_TIMEOUT;
; 2014 TRUE
; 2015 end
; 2016 else
; 2017 false
; 2018
; 2019 end; !of routine PAUSED
.SBTTL PAUSED
000000 132765 000001 000062 PAUSED: BITB #1,62(R5) ; *,*(DB) 2009
000006 001015 BNE 1$
000010 012746 000004 MOV #4,-(SP) ; 2012
000014 012746 000001 MOV #1,-(SP)
000020 004767 175014 JSR PC,CHANGE.PROTOCOL.STATE
000024 112765 000036 000020 MOVB #36,20(R5) ; *,*(DB) 2013
000032 022626 CMP (SP)+,(SP)+ ; 2011
000034 012700 000001 MOV #1,R0 ; 2009
000040 000207 RTS PC
000042 005000 1$: CLR R0
000044 000207 RTS PC ; 1983
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 70
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (32)
; Routine Size: 19 words, Routine Base: $CODE$ + 3232
; Maximum stack depth per invocation: 3 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 71
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (33)
; 2020 routine PROTOCOL_BROKEN (DB) : DTE_DB novalue =
; 2021
; 2022 !++
; 2023 ! FUNCTIONAL DESCRIPTION:
; 2024 !
; 2025 !
; 2026 ! FORMAL PARAMETERS:
; 2027 ! DB = address of DTE data base.
; 2028 !
; 2029 ! IMPLICIT INPUTS:
; 2030 ! None
; 2031 !
; 2032 ! IMPLICIT OUTPUTS:
; 2033 ! None
; 2034 !
; 2035 ! ROUTINE VALUE:
; 2036 ! COMPLETION CODES:
; 2037 ! None
; 2038 !
; 2039 ! SIDE EFFECTS:
; 2040 ! None
; 2041 !--
; 2042
; 2043 begin
; 2044 GET_DTE_DATA_BASE (DB)
; 2045 DTESTP (DB [D_TIM]);
; 2046 end; !of routine PROTOCOL_BROKEN
.SBTTL PROTOCOL.BROKEN
000000 004767 176272 PROTOCOL.BROKEN:
JSR PC,DTESTP ; 2045
000004 000207 RTS PC ; 2020
; Routine Size: 3 words, Routine Base: $CODE$ + 3300
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 72
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (34)
; 2047 routine PRTDEP (DB, OFFSET, BUFFER) : EXDP_LINKAGE =
; 2048
; 2049 !++
; 2050 ! FUNCTIONAL DESCRIPTION:
; 2051 !
; 2052 !
; 2053 ! FORMAL PARAMETERS:
; 2054 ! DB = address of DTE data base.
; 2055 ! OFFSET = comm/region offset.
; 2056 ! BUFFER = address of 3 word buffer of data to deposit.
; 2057 !
; 2058 ! IMPLICIT INPUTS:
; 2059 ! None
; 2060 !
; 2061 ! IMPLICIT OUTPUTS:
; 2062 ! None
; 2063 !
; 2064 ! ROUTINE VALUE:
; 2065 ! COMPLETION CODES:
; 2066 ! None
; 2067 !
; 2068 ! SIDE EFFECTS:
; 2069 ! None
; 2070 !--
; 2071
; 2072 begin
; 2073 GET_DTE_DATA_BASE (DB)
; 2074
; 2075 map
; 2076 BUFFER : ref vector [3];
; 2077
; 2078 local
; 2079 DTE : ref block field (DTE_FIELDS);
; 2080
; 2081 DTE = .DB [D_REGISTER];
; 2082 DTE [$SUB_FIELD (DEXWD, DEXWD3)] = .BUFFER [0];
; 2083 DTE [$SUB_FIELD (DEXWD, DEXWD2)] = .BUFFER [1];
; 2084 DTE [$SUB_FIELD (DEXWD, DEXWD1)] = .BUFFER [2];
; 2085 DTE [$SUB_FIELD (TENAD, TENAD1)] = DTE_BIT (DEP);
; 2086 DTE [$SUB_FIELD (TENAD, TENAD2)] = .OFFSET;
; 2087 WTEXDP (DB [D_TIM], .DTE)
; 2088 end; !of routine PRTDEP
.SBTTL PRTDEP
000000 016501 000002 PRTDEP: MOV 2(R5),R1 ; *(DB),DTE 2081
000004 011361 177746 MOV (R3),-32(R1) ; BUFFER,*(DTE) 2082
000010 016361 000002 177750 MOV 2(R3),-30(R1) ; *(BUFFER),*(DTE) 2083
000016 016361 000004 177752 MOV 4(R3),-26(R1) ; *(BUFFER),*(DTE) 2084
000024 012761 010000 177754 MOV #10000,-24(R1) ; *,*(DTE) 2085
000032 010261 177756 MOV R2,-22(R1) ; OFFSET,*(DTE) 2086
000036 004767 000000V JSR PC,WTEXDP ; 2087
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 73
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (34)
000042 000207 RTS PC ; 2047
; Routine Size: 18 words, Routine Base: $CODE$ + 3306
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 74
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (35)
; 2089 routine PRTEXM (DB, OFFSET, BUFFER) : EXDP_LINKAGE =
; 2090
; 2091 !++
; 2092 ! FUNCTIONAL DESCRIPTION:
; 2093 !
; 2094 !
; 2095 ! FORMAL PARAMETERS:
; 2096 ! DB = address of DTE data base.
; 2097 ! OFFSET = comm/region offset.
; 2098 ! BUFFER = address of 3 word buffer to receive examined data.
; 2099 !
; 2100 ! IMPLICIT INPUTS:
; 2101 ! None
; 2102 !
; 2103 ! IMPLICIT OUTPUTS:
; 2104 ! None
; 2105 !
; 2106 ! ROUTINE VALUE:
; 2107 ! COMPLETION CODES:
; 2108 ! None
; 2109 !
; 2110 ! SIDE EFFECTS:
; 2111 ! None
; 2112 !--
; 2113
; 2114 begin
; 2115 GET_DTE_DATA_BASE (DB)
; 2116
; 2117 map
; 2118 BUFFER : ref vector [3];
; 2119
; 2120 local
; 2121 DTE : ref block field (DTE_FIELDS);
; 2122
; 2123 local
; 2124 STATUS;
; 2125
; 2126 DTE = .DB [D_REGISTER];
; 2127 DTE [$SUB_FIELD (TENAD, TENAD1)] = 0;
; 2128 DTE [$SUB_FIELD (TENAD, TENAD2)] = .OFFSET;
; 2129 STATUS = WTEXDP (DB [D_TIM], .DTE);
; 2130 BUFFER [0] = .DTE [$SUB_FIELD (DEXWD, DEXWD3)];
; 2131 BUFFER [1] = .DTE [$SUB_FIELD (DEXWD, DEXWD2)];
; 2132 BUFFER [2] = .DTE [$SUB_FIELD (DEXWD, DEXWD1)];
; 2133 .STATUS
; 2134 end; !of routine PRTEXM
.SBTTL PRTEXM
000000 016501 000002 PRTEXM: MOV 2(R5),R1 ; *(DB),DTE 2126
000004 005061 177754 CLR -24(R1) ; *(DTE) 2127
000010 010261 177756 MOV R2,-22(R1) ; OFFSET,*(DTE) 2128
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 75
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (35)
000014 004767 000000V JSR PC,WTEXDP ; 2129
000020 016113 177746 MOV -32(R1),(R3) ; *(DTE),BUFFER 2130
000024 016163 177750 000002 MOV -30(R1),2(R3) ; *(DTE),*(BUFFER) 2131
000032 016163 177752 000004 MOV -26(R1),4(R3) ; *(DTE),*(BUFFER) 2132
000040 000207 RTS PC ; 2089
; Routine Size: 17 words, Routine Base: $CODE$ + 3352
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 76
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (36)
; 2135 routine RECEIVE_MESSAGE (DB) : DTE_DB novalue =
; 2136
; 2137 !++
; 2138 ! FUNCTIONAL DESCRIPTION:
; 2139 !
; 2140 !
; 2141 ! FORMAL PARAMETERS:
; 2142 ! DB = address of DTE data base.
; 2143 !
; 2144 ! IMPLICIT INPUTS:
; 2145 ! None
; 2146 !
; 2147 ! IMPLICIT OUTPUTS:
; 2148 ! None
; 2149 !
; 2150 ! ROUTINE VALUE:
; 2151 ! COMPLETION CODES:
; 2152 ! None
; 2153 !
; 2154 ! SIDE EFFECTS:
; 2155 ! None
; 2156 !--
; 2157
; 2158 begin
; 2159 GET_DTE_DATA_BASE (DB)
; 2160
; 2161 if .DB [$SUB_FIELD (D_RQZ, PSIZE)] neq 0
; 2162 then
; 2163 begin
; 2164 RECEIVE_SEGMENT (DB [D_TIM]);
; 2165 return;
; 2166 end;
; 2167
; 2168 ! *********************** Protocol deviation **************************
; 2169 ! The -20 monitors MY CPQCNT instead of MY QCOUNT for TO-HIM transfers,
; 2170 ! so the roles of MY QCOUNT and MY CPQCNT are reversed from those in
; 2171 ! the protocol specification.
; 2172 ! *********************************************************************
; 2173
; 2174 if .DB [$SUB_FIELD (D_RST, QCOUNT)] eql .DB [$SUB_FIELD (D_XST, QCOUNT)] then return;
; 2175
; 2176 DB [$SUB_FIELD (D_XST, QCOUNT)] = .DB [$SUB_FIELD (D_XST, QCOUNT)] + 1;
; 2177
; 2178 if .DB [$SUB_FIELD (D_RST, QCOUNT)] neq .DB [$SUB_FIELD (D_XST, QCOUNT)]
; 2179 then
; 2180 begin
; P 2181 $NM_PLL_EVENT (4, .DB [D_LINE_ENTITY],
; 2182 PARAMETER_DEVICE_REGISTERS (.DB [D_REGISTER]));
; 2183 DB [$SUB_FIELD (D_XST, QCOUNT)] = .DB [$SUB_FIELD (D_XST, QCOUNT)] - 1;
; 2184 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 2185 COUNTER_INCREMENT (DB, D_INVALID_QCOUNT);
; 2186 COUNTER_INCREMENT (DB, D_PROTOCOL_ERRORS);
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 77
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (36)
; 2187 DEVICE_BROKEN (DB [D_TIM]);
; 2188 return;
; 2189 end;
; 2190
; 2191 if .DB [D_RCB] eql 0
; 2192 then
; 2193 begin
; 2194
; 2195 local
; 2196 CCB;
; 2197
; 2198 if RDBGT$ (CCB) then NEW_RCB (DB [D_TIM], .CCB);
; 2199
; 2200 end;
; 2201
; 2202 if .DB [D_RCB] eql 0
; 2203 then
; 2204 begin
; 2205 DB [$SUB_FIELD (D_XST, QCOUNT)] = .DB [$SUB_FIELD (D_XST, QCOUNT)] - 1;
; 2206 RDBRQ$ ();
; 2207 return;
; 2208 end;
; 2209
; 2210 EXMHSM (DB [D_TIM], QSIZE, DB [D_RQZ]);
; 2211
; 2212 if .DB [$SUB_FIELD (D_RQZ, PSIZE)] gtr .DB [D_DL_BLK]
; 2213 then
; 2214 begin
; P 2215 $NM_DLL_EVENT (9, .DB [D_CIRCUIT_ENTITY],
; P 2216 PARAMETER_DU_2 (7, DB [$SUB_FIELD (D_RQZ, PSIZE)]),
; 2217 PARAMETER_DU_2 (8, DB [D_DL_BLK]));
; 2218 DB [$SUB_FIELD (D_XST, QCOUNT)] = .DB [$SUB_FIELD (D_XST, QCOUNT)] - 1;
; 2219 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 2220 COUNTER_INCREMENT (DB, D_MESSAGE_TOO_LONG);
; 2221 COUNTER_INCREMENT (DB, D_PROTOCOL_ERRORS);
; 2222 PROTOCOL_BROKEN (DB [D_TIM]);
; 2223 return;
; 2224 end;
; 2225
; 2226 DB [$SUB_FIELD (D_XST, RCV)] = 1;
; 2227 DEPMYH (DB [D_TIM], STATUS, DB [D_XST]);
; 2228 RECEIVE_SEGMENT (DB [D_TIM]);
; 2229 end; !of routine RECEIVE_MESSAGE
.GLOBL $RDBGT, $RDBRQ, $DPDU2
.SBTTL RECEIVE.MESSAGE
000000 024646 RECEIVE.MESSAGE:
CMP -(SP),-(SP) ; 2135
000002 012746 000066 MOV #66,-(SP) ; 2161
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 78
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (36)
000006 060516 ADD R5,(SP) ; DB,*
000010 005776 000000 TST @0(SP)
000014 001177 BNE 5$ ; 2164
000016 012766 000072 000004 MOV #72,4(SP) ; 2174
000024 060566 000004 ADD R5,4(SP) ; DB,*
000030 126576 000056 000004 CMPB 56(R5),@4(SP) ; *(DB),*
000036 001570 BEQ 6$
000040 105276 000004 INCB @4(SP) ; 2176
000044 126576 000056 000004 CMPB 56(R5),@4(SP) ; *(DB),* 2178
000052 001435 BEQ 1$
000054 004767 000000G JSR PC,$NLBEG ; 2182
000060 016501 000002 MOV 2(R5),R1 ; *(DB),*
000064 004767 177470 JSR PC,PLL0
000070 012700 000604 MOV #604,R0
000074 016501 000042 MOV 42(R5),R1 ; *(DB),*
000100 004767 000000G JSR PC,$NLEND
000104 105376 000004 DECB @4(SP) ; 2183
000110 012700 100174 MOV #-77604,R0 ; 2184
000114 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000120 052765 002000 000170 BIS #2000,170(R5) ; *,*(DB) 2185
000126 012700 000170 MOV #170,R0 ; 2186
000132 060500 ADD R5,R0 ; DB,*
000134 004767 000000G JSR PC,$IC8
000140 004767 175064 JSR PC,DEVICE.BROKEN ; 2187
000144 000525 BR 6$ ; 2180
000146 012766 000110 000002 1$: MOV #110,2(SP) ; 2191
000154 060566 000002 ADD R5,2(SP) ; DB,*
000160 005776 000002 TST @2(SP)
000164 001020 BNE 3$
000166 004767 000000G JSR PC,$RDBGT ; 2198
000172 103405 BCS 2$
000174 010400 MOV R4,R0 ; $MCB$R4,CCB
000176 010046 MOV R0,-(SP) ; CCB,*
000200 004767 177312 JSR PC,NEW.RCB
000204 005726 TST (SP)+
000206 005776 000002 2$: TST @2(SP) ; 2202
000212 001005 BNE 3$
000214 105376 000004 DECB @4(SP) ; 2205
000220 004767 000000G JSR PC,$RDBRQ ; 2206
000224 000475 BR 6$ ; 2204
000226 010500 3$: MOV R5,R0 ; DB,* 2210
000230 062700 000064 ADD #64,R0
000234 012702 000003 MOV #3,R2
000240 010003 MOV R0,R3
000242 004767 176220 JSR PC,EXMHSM
000246 027665 000000 000172 CMP @0(SP),172(R5) ; *,*(DB) 2212
000254 003446 BLE 4$
000256 004767 000000G JSR PC,$NLBEG ; 2217
000262 012746 000007 MOV #7,-(SP)
000266 017600 000002 MOV @2(SP),R0
000272 004767 000000G JSR PC,$DPDU2
000276 012716 000010 MOV #10,(SP)
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 79
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (36)
000302 016500 000172 MOV 172(R5),R0 ; *(DB),*
000306 004767 000000G JSR PC,$DPDU2
000312 012700 000511 MOV #511,R0
000316 016501 000040 MOV 40(R5),R1 ; *(DB),*
000322 004767 000000G JSR PC,$NLEND
000326 105376 000006 DECB @6(SP) ; 2218
000332 012700 100174 MOV #-77604,R0 ; 2219
000336 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000342 052765 004000 000170 BIS #4000,170(R5) ; *,*(DB) 2220
000350 012700 000170 MOV #170,R0 ; 2221
000354 060500 ADD R5,R0 ; DB,*
000356 004767 000000G JSR PC,$IC8
000362 004767 177276 JSR PC,PROTOCOL.BROKEN ; 2222
000366 005726 TST (SP)+ ; 2212
000370 000413 BR 6$ ; 2214
000372 152765 000001 000074 4$: BISB #1,74(R5) ; *,*(DB) 2226
000400 012702 000002 MOV #2,R2 ; 2227
000404 016603 000004 MOV 4(SP),R3
000410 004767 174602 JSR PC,DEPMYH
000414 004767 000000V 5$: JSR PC,RECEIVE.SEGMENT ; 2228
000420 062706 000006 6$: ADD #6,SP ; 2135
000424 000207 RTS PC
; Routine Size: 139 words, Routine Base: $CODE$ + 3414
; Maximum stack depth per invocation: 5 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 80
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (37)
; 2230 routine RECEIVE_SEGMENT (DB) : DTE_DB novalue =
; 2231
; 2232 !++
; 2233 ! FUNCTIONAL DESCRIPTION:
; 2234 !
; 2235 !
; 2236 ! FORMAL PARAMETERS:
; 2237 ! DB = address of DTE data base.
; 2238 !
; 2239 ! IMPLICIT INPUTS:
; 2240 ! None
; 2241 !
; 2242 ! IMPLICIT OUTPUTS:
; 2243 ! None
; 2244 !
; 2245 ! ROUTINE VALUE:
; 2246 ! COMPLETION CODES:
; 2247 ! None
; 2248 !
; 2249 ! SIDE EFFECTS:
; 2250 ! None
; 2251 !--
; 2252
; 2253 begin
; 2254 GET_DTE_DATA_BASE (DB)
; 2255
; 2256 local
; 2257 DTE : ref block field (DTE_FIELDS);
; 2258
; 2259 if .DB [D_RCT] neq 0 then return;
; 2260
; 2261 if .DB [$SUB_FIELD (D_RQZ, PSIZE)] eql 0 then return;
; 2262
; 2263 if .DB [$SUB_FIELD (D_RQZ, CSIZE)] eql 0 then return;
; 2264
; 2265 if .DB [$SUB_FIELD (D_XMQ, LIST_FIRST)] neq 0 and
; 2266 .DB [$SUB_FIELD (D_RBA, PHYSICAL_HIGH)] neq
; 2267 .DB [$SUB_FIELD (D_XBA, PHYSICAL_HIGH)] then return;
; 2268
; 2269 if .DB [DF_FLUSHING_DTE] then return;
; 2270
; 2271 DTE = .DB [D_REGISTER];
; 2272 DTE_EXT (.DTE, .DB [$SUB_FIELD (D_RBA, PHYSICAL_HIGH)]);
; 2273 DTE [TO11AD] = .DB [$SUB_FIELD (D_RBA, PHYSICAL_LOW)];
; 2274 DB [D_RCT] = (if .DB [$SUB_FIELD (D_RBA, PHYSICAL_LOW)] eql 0
; 2275 then .DB [$SUB_FIELD (D_RQZ, CSIZE)]
; 2276 else MINU (-.DB [$SUB_FIELD (D_RBA, PHYSICAL_LOW)],
; 2277 .DB [$SUB_FIELD (D_RQZ, CSIZE)]));
; 2278 begin
; 2279
; 2280 local
; 2281 VALUE : block [1] field (TO11BM, TO11IB, TO11CM);
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 81
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (37)
; 2282
; 2283 VALUE = 0;
; 2284
; 2285 if .DB [$SUB_FIELD (D_RQZ, CSIZE)] eql .DB [D_RCT] then VALUE [TO11IB] = 1;
; 2286
; 2287 VALUE [TO11CM] = -(if .DB [$SUB_FIELD (D_RQZ, TMODE)] eql 0
; 2288 then
; 2289 begin
; 2290 VALUE [TO11BM] = 1;
; 2291 .DB [D_RCT]
; 2292 end
; 2293 else
; 2294 (.DB [D_RCT] + 1)^-1);
; 2295
; 2296 DTE [TO11BC] = .VALUE;
; 2297 end;
; 2298 DB [D_LONG_TIMER] = DTE_K_TRANSMIT_DOORBELL_TIMEOUT + 2;
; 2299 end; !of routine RECEIVE_SEGMENT
.SBTTL RECEIVE.SEGMENT
000000 012703 000116 RECEIVE.SEGMENT:
MOV #116,R3 ; 2259
000004 060503 ADD R5,R3 ; DB,*
000006 005713 TST (R3)
000010 001103 BNE 7$
000012 005765 000066 TST 66(R5) ; *(DB) 2261
000016 001500 BEQ 7$
000020 016501 000064 MOV 64(R5),R1 ; *(DB),* 2263
000024 001475 BEQ 7$
000026 005765 000120 TST 120(R5) ; *(DB) 2265
000032 001404 BEQ 1$
000034 026565 000112 000130 CMP 112(R5),130(R5) ; *(DB),*(DB) 2266
000042 001066 BNE 7$ ; 2267
000044 032715 020000 1$: BIT #20000,(R5) ; *,DB 2269
000050 001063 BNE 7$
000052 016502 000002 MOV 2(R5),R2 ; *(DB),DTE 2271
000056 005000 CLR R0 ; VALUE 2272
000060 016504 000112 MOV 112(R5),R4 ; *(DB),*
000064 072427 000016 ASH #16,R4
000070 042700 140000 BIC #140000,R0 ; *,VALUE
000074 050400 BIS R4,R0 ; *,VALUE
000076 010062 177744 MOV R0,-34(R2) ; VALUE,*(DTE)
000102 016500 000114 MOV 114(R5),R0 ; *(DB),* 2273
000106 010062 177766 MOV R0,-12(R2) ; *,*(DTE)
000112 001403 BEQ 2$ ; 2274
000114 005400 NEG R0 ; 2276
000116 020001 CMP R0,R1
000120 101401 BLOS 3$
000122 010100 2$: MOV R1,R0
000124 010013 3$: MOV R0,(R3) ; 2274
000126 005001 CLR R1 ; VALUE 2283
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 82
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (37)
000130 026500 000064 CMP 64(R5),R0 ; *(DB),* 2285
000134 001002 BNE 4$
000136 052701 100000 BIS #100000,R1 ; *,VALUE
000142 132765 000017 000070 4$: BITB #17,70(R5) ; *,*(DB) 2287
000150 001004 BNE 5$
000152 052701 020000 BIS #20000,R1 ; *,VALUE 2290
000156 011300 MOV (R3),R0 ; 2287
000160 000403 BR 6$
000162 011300 5$: MOV (R3),R0 ; 2294
000164 005200 INC R0
000166 006200 ASR R0
000170 005400 6$: NEG R0 ; 2287
000172 010003 MOV R0,R3
000174 042703 170000 BIC #170000,R3
000200 042701 007777 BIC #7777,R1 ; *,VALUE
000204 050301 BIS R3,R1 ; *,VALUE
000206 010162 177762 MOV R1,-16(R2) ; VALUE,*(DTE) 2296
000212 112765 000005 000020 MOVB #5,20(R5) ; *,*(DB) 2298
000220 000207 7$: RTS PC ; 2230
; Routine Size: 73 words, Routine Base: $CODE$ + 4042
; Maximum stack depth per invocation: 0 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 83
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (38)
; 2300 routine SCHEDULE_PERSISTENT_AST (CCB, DB) : DTE_CCB_DB novalue =
; 2301
; 2302 !++
; 2303 ! FUNCTIONAL DESCRIPTION:
; 2304 !
; 2305 !
; 2306 ! FORMAL PARAMETERS:
; 2307 ! CCB = address of CCB to use for status nodification.
; 2308 ! DB = address of DTE data base.
; 2309 !
; 2310 ! IMPLICIT INPUTS:
; 2311 ! None
; 2312 !
; 2313 ! IMPLICIT OUTPUTS:
; 2314 ! None
; 2315 !
; 2316 ! ROUTINE VALUE:
; 2317 ! COMPLETION CODES:
; 2318 ! None
; 2319 !
; 2320 ! SIDE EFFECTS:
; 2321 ! None
; 2322 !--
; 2323
; 2324 begin
; 2325 GET_DTE_DATA_BASE (DB)
; 2326
; 2327 map
; 2328 CCB : ref block field (C_FIELDS);
; 2329
; 2330 CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
; 2331 CCB [C_FNC] = FC_AST;
; 2332 CCB [C_MOD] = DLL$K_PERSISTENT_ERROR;
; 2333 CCB [C_STS] = .DB [D_PERSISTENT_ERROR];
; 2334 $MCB_SCHEDULE_CCB (.CCB);
; 2335 DB [D_PERSISTENT_ERROR] = 0;
; 2336 end; !of routine SCHEDULE_PERSISTENT_AST
.SBTTL SCHEDULE.PERSISTENT.AST
000000 016564 000022 000010 SCHEDULE.PERSISTENT.AST:
MOV 22(R5),10(R4) ; *(DB),*(CCB) 2330
000006 105064 000012 CLRB 12(R4) ; *(CCB) 2331
000012 112764 000004 000013 MOVB #4,13(R4) ; *,*(CCB) 2332
000020 016564 000026 000014 MOV 26(R5),14(R4) ; *(DB),*(CCB) 2333
000026 004767 000000G JSR PC,$SCHED ; 2334
000032 005065 000026 CLR 26(R5) ; *(DB) 2335
000036 000207 RTS PC ; 2300
; Routine Size: 16 words, Routine Base: $CODE$ + 4264
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 84
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (39)
; 2337 routine SCHEDULE_RECEIVE (CCB, DB) : DTE_CCB_DB novalue =
; 2338
; 2339 !++
; 2340 ! FUNCTIONAL DESCRIPTION:
; 2341 !
; 2342 !
; 2343 ! FORMAL PARAMETERS:
; 2344 ! DB = address of DTE data base.
; 2345 !
; 2346 ! IMPLICIT INPUTS:
; 2347 ! None
; 2348 !
; 2349 ! IMPLICIT OUTPUTS:
; 2350 ! None
; 2351 !
; 2352 ! ROUTINE VALUE:
; 2353 ! COMPLETION CODES:
; 2354 ! None
; 2355 !
; 2356 ! SIDE EFFECTS:
; 2357 ! None
; 2358 !--
; 2359
; 2360 begin
; 2361 GET_DTE_DATA_BASE (DB)
; 2362
; 2363 map
; 2364 CCB : ref block field (C_FIELDS);
; 2365
; 2366 CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
; 2367
; 2368 if .CCB [C_HANDLE] eqlu 0 then return RDBRT$ (.CCB);
; 2369
; 2370 DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] + 1;
; 2371 CCB [C_FNC] = FC_RCP;
; 2372 CCB [C_MOD] = DLL$K_DATA_RECEIVED;
; 2373 CCB [C_STS] = DLL$_SUCCESS;
; 2374 $MCB_SCHEDULE_CCB (.CCB);
; 2375 end; !of routine SCHEDULE_RECEIVE
.SBTTL SCHEDULE.RECEIVE
000000 010400 SCHEDULE.RECEIVE:
MOV R4,R0 ; *,CCB 2337
000002 016560 000022 000010 MOV 22(R5),10(R0) ; *(DB),*(CCB) 2366
000010 001003 BNE 1$ ; 2368
000012 004767 000000G JSR PC,$RDBRT
000016 000207 RTS PC
000020 005265 000034 1$: INC 34(R5) ; *(DB) 2370
000024 112760 000016 000012 MOVB #16,12(R0) ; *,*(CCB) 2371
000032 105060 000013 CLRB 13(R0) ; *(CCB) 2372
000036 012760 100001 000014 MOV #-77777,14(R0) ; *,*(CCB) 2373
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 85
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (39)
000044 010004 MOV R0,R4 ; CCB,* 2374
000046 004767 000000G JSR PC,$SCHED
000052 000207 RTS PC ; 2337
; Routine Size: 22 words, Routine Base: $CODE$ + 4324
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 86
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (40)
; 2376 routine SCHEDULE_STATE_AST (CCB, DB) : DTE_CCB_DB novalue =
; 2377
; 2378 !++
; 2379 ! FUNCTIONAL DESCRIPTION:
; 2380 !
; 2381 !
; 2382 ! FORMAL PARAMETERS:
; 2383 ! CCB = address of CCB to use for status nodification.
; 2384 ! DB = address of DTE data base.
; 2385 !
; 2386 ! IMPLICIT INPUTS:
; 2387 ! None
; 2388 !
; 2389 ! IMPLICIT OUTPUTS:
; 2390 ! None
; 2391 !
; 2392 ! ROUTINE VALUE:
; 2393 ! COMPLETION CODES:
; 2394 ! None
; 2395 !
; 2396 ! SIDE EFFECTS:
; 2397 ! None
; 2398 !--
; 2399
; 2400 begin
; 2401 GET_DTE_DATA_BASE (DB)
; 2402
; 2403 map
; 2404 CCB : ref block field (C_FIELDS);
; 2405
; 2406 if not .DB [DF_NOTIFY_STATE] then return $MCB_RETURN_CCB (.CCB);
; 2407
; 2408 CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
; 2409 CCB [C_FNC] = FC_AST;
; 2410 CCB [C_MOD] = DLL$K_STATE;
; 2411 CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
; 2412 $MCB_SCHEDULE_CCB (.CCB);
; 2413
; 2414 if .DB [DF_NOTIFY_STATE]
; 2415 then
; 2416
; 2417 if $MCB_GET_CCB (CCB)
; 2418 then
; 2419 SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
; 2420 else
; 2421 $MCB_REQUEST_CCB ();
; 2422
; 2423 end; !of routine SCHEDULE_STATE_AST
.GLOBL $CCBRT, $CCBGT, $CCBRQ
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 87
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (40)
.SBTTL SCHEDULE.STATE.AST
000000 010146 SCHEDULE.STATE.AST:
MOV R1,-(SP) ; 2376
000002 010401 MOV R4,R1 ; *,CCB
000004 032715 004000 BIT #4000,(R5) ; *,DB 2406
000010 001003 BNE 1$
000012 004767 000000G JSR PC,$CCBRT
000016 000432 BR 3$
000020 016561 000022 000010 1$: MOV 22(R5),10(R1) ; *(DB),*(CCB) 2408
000026 105061 000012 CLRB 12(R1) ; *(CCB) 2409
000032 105061 000013 CLRB 13(R1) ; *(CCB) 2410
000036 004767 174064 JSR PC,CURRENT.STATUS ; 2411
000042 010061 000014 MOV R0,14(R1) ; *,*(CCB)
000046 010104 MOV R1,R4 ; CCB,* 2412
000050 004767 000000G JSR PC,$SCHED
000054 032715 004000 BIT #4000,(R5) ; *,DB 2414
000060 001411 BEQ 3$
000062 004767 000000G JSR PC,$CCBGT ; 2417
000066 103404 BCS 2$
000070 010401 MOV R4,R1 ; $MCB$R4,CCB
000072 004767 177702 JSR PC,SCHEDULE.STATE.AST ; 2419
000076 000402 BR 3$ ; 2417
000100 004767 000000G 2$: JSR PC,$CCBRQ ; 2421
000104 012601 3$: MOV (SP)+,R1 ; 2376
000106 000207 RTS PC
; Routine Size: 36 words, Routine Base: $CODE$ + 4400
; Maximum stack depth per invocation: 2 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 88
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (41)
; 2424 routine SCHEDULE_TRANSIENT_AST (CCB, DB) : DTE_CCB_DB novalue =
; 2425
; 2426 !++
; 2427 ! FUNCTIONAL DESCRIPTION:
; 2428 !
; 2429 !
; 2430 ! FORMAL PARAMETERS:
; 2431 ! CCB = address of CCB to use for status nodification.
; 2432 ! DB = address of DTE data base.
; 2433 !
; 2434 ! IMPLICIT INPUTS:
; 2435 ! None
; 2436 !
; 2437 ! IMPLICIT OUTPUTS:
; 2438 ! None
; 2439 !
; 2440 ! ROUTINE VALUE:
; 2441 ! COMPLETION CODES:
; 2442 ! None
; 2443 !
; 2444 ! SIDE EFFECTS:
; 2445 ! None
; 2446 !--
; 2447
; 2448 begin
; 2449 GET_DTE_DATA_BASE (DB)
; 2450
; 2451 map
; 2452 CCB : ref block field (C_FIELDS);
; 2453
; 2454 CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
; 2455 CCB [C_FNC] = FC_AST;
; 2456 CCB [C_MOD] = DLL$K_TRANSIENT_ERROR;
; 2457 CCB [C_STS] = .DB [D_TRANSIENT_ERROR];
; 2458 $MCB_SCHEDULE_CCB (.CCB);
; 2459 DB [D_TRANSIENT_ERROR] = 0;
; 2460 end; !of routine SCHEDULE_TRANSIENT_AST
.SBTTL SCHEDULE.TRANSIENT.AST
000000 016564 000022 000010 SCHEDULE.TRANSIENT.AST:
MOV 22(R5),10(R4) ; *(DB),*(CCB) 2454
000006 105064 000012 CLRB 12(R4) ; *(CCB) 2455
000012 112764 000002 000013 MOVB #2,13(R4) ; *,*(CCB) 2456
000020 016564 000024 000014 MOV 24(R5),14(R4) ; *(DB),*(CCB) 2457
000026 004767 000000G JSR PC,$SCHED ; 2458
000032 005065 000024 CLR 24(R5) ; *(DB) 2459
000036 000207 RTS PC ; 2424
; Routine Size: 16 words, Routine Base: $CODE$ + 4510
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 89
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (42)
; 2461 routine SCHEDULE_TRANSMIT (CCB, DB, STATUS) : DTE_CCB_DB_STS novalue =
; 2462
; 2463 !++
; 2464 ! FUNCTIONAL DESCRIPTION:
; 2465 !
; 2466 !
; 2467 ! FORMAL PARAMETERS:
; 2468 ! DB = address of DTE data base.
; 2469 !
; 2470 ! IMPLICIT INPUTS:
; 2471 ! None
; 2472 !
; 2473 ! IMPLICIT OUTPUTS:
; 2474 ! None
; 2475 !
; 2476 ! ROUTINE VALUE:
; 2477 ! COMPLETION CODES:
; 2478 ! None
; 2479 !
; 2480 ! SIDE EFFECTS:
; 2481 ! None
; 2482 !--
; 2483
; 2484 begin
; 2485 GET_DTE_DATA_BASE (DB)
; 2486
; 2487 map
; 2488 CCB : ref block field (C_FIELDS);
; 2489
; 2490 CCB [C_FNC] = FC_XCP;
; 2491 CCB [C_STS] = .STATUS;
; 2492 $MCB_SCHEDULE_CCB (.CCB);
; 2493 DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] - 1;
; 2494
; 2495 if .DB [D_ACTIVE_BUFFERS] neq 0 then return;
; 2496
; 2497 if .DB [DF_CONTROL_WAITING]
; 2498 then
; 2499 begin
; 2500 DB [DF_CONTROL_WAITING] = FALSE;
; 2501 FLUSH_QUEUE (DB [D_PENDING_CONTROLS], %quote $MCB_SCHEDULE_CCB);
; 2502 end;
; 2503
; 2504 end; !of routine SCHEDULE_TRANSMIT
.SBTTL SCHEDULE.TRANSMIT
000000 010346 SCHEDULE.TRANSMIT:
MOV R3,-(SP) ; 2461
000002 112764 000014 000012 MOVB #14,12(R4) ; *,*(CCB) 2490
000010 010064 000014 MOV R0,14(R4) ; STATUS,*(CCB) 2491
000014 004767 000000G JSR PC,$SCHED ; 2492
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 90
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (42)
000020 005365 000034 DEC 34(R5) ; *(DB) 2493
000024 001016 BNE 2$ ; 2495
000026 032715 010000 BIT #10000,(R5) ; *,DB 2497
000032 001413 BEQ 2$
000034 042715 010000 BIC #10000,(R5) ; *,DB 2500
000040 012703 000030 MOV #30,R3 ; 2501
000044 060503 ADD R5,R3 ; DB,*
000046 004767 000000G 1$: JSR PC,$CMQRM
000052 103403 BCS 2$
000054 004767 000000G JSR PC,$SCHED
000060 000772 BR 1$
000062 012603 2$: MOV (SP)+,R3 ; 2461
000064 000207 RTS PC
; Routine Size: 27 words, Routine Base: $CODE$ + 4550
; Maximum stack depth per invocation: 2 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 91
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (43)
; 2505 routine SEND_PERSISTENT_ERROR (DB, STATUS) : DTE_DB_STS novalue =
; 2506
; 2507 !++
; 2508 ! FUNCTIONAL DESCRIPTION:
; 2509 !
; 2510 !
; 2511 ! FORMAL PARAMETERS:
; 2512 ! DB = address of DTE data base.
; 2513 !
; 2514 ! IMPLICIT INPUTS:
; 2515 ! None
; 2516 !
; 2517 ! IMPLICIT OUTPUTS:
; 2518 ! None
; 2519 !
; 2520 ! ROUTINE VALUE:
; 2521 ! COMPLETION CODES:
; 2522 ! None
; 2523 !
; 2524 ! SIDE EFFECTS:
; 2525 ! None
; 2526 !--
; 2527
; 2528 begin
; 2529 GET_DTE_DATA_BASE (DB)
; 2530
; 2531 local
; 2532 CCB : ref block field (C_FIELDS);
; 2533
; 2534 if .DB [D_OWNER_HANDLE] eql 0 then return;
; 2535
; 2536 DB [D_PERSISTENT_ERROR] = .STATUS;
; 2537
; 2538 if $MCB_GET_CCB (CCB)
; 2539 then
; 2540 SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM])
; 2541 else
; 2542 $MCB_REQUEST_CCB ();
; 2543
; 2544 end; !of routine SEND_PERSISTENT_ERROR
.SBTTL SEND.PERSISTENT.ERROR
000000 005765 000022 SEND.PERSISTENT.ERROR:
TST 22(R5) ; *(DB) 2534
000004 001412 BEQ 2$
000006 010065 000026 MOV R0,26(R5) ; STATUS,*(DB) 2536
000012 004767 000000G JSR PC,$CCBGT ; 2538
000016 103403 BCS 1$
000020 004767 177402 JSR PC,SCHEDULE.PERSISTENT.AST ; 2540
000024 000207 RTS PC ; 2538
000026 004767 000000G 1$: JSR PC,$CCBRQ ; 2542
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 92
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (43)
000032 000207 2$: RTS PC ; 2505
; Routine Size: 14 words, Routine Base: $CODE$ + 4636
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 93
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (44)
; 2545 routine SEND_STATE (DB) : DTE_DB novalue =
; 2546
; 2547 !++
; 2548 ! FUNCTIONAL DESCRIPTION:
; 2549 !
; 2550 !
; 2551 ! FORMAL PARAMETERS:
; 2552 ! DB = address of DTE data base.
; 2553 !
; 2554 ! IMPLICIT INPUTS:
; 2555 ! None
; 2556 !
; 2557 ! IMPLICIT OUTPUTS:
; 2558 ! None
; 2559 !
; 2560 ! ROUTINE VALUE:
; 2561 ! COMPLETION CODES:
; 2562 ! None
; 2563 !
; 2564 ! SIDE EFFECTS:
; 2565 ! None
; 2566 !--
; 2567
; 2568 begin
; 2569 GET_DTE_DATA_BASE (DB)
; 2570
; 2571 local
; 2572 CCB : ref block field (C_FIELDS);
; 2573
; 2574 if .DB [D_OWNER_HANDLE] eql 0 then return;
; 2575
; 2576 if .DB [D_PROTOCOL_STATE] eql DS_HALTED then DB [DF_NOTIFY_OFF] = TRUE;
; 2577
; 2578 DB [DF_NOTIFY_STATE] = TRUE;
; 2579
; 2580 if $MCB_GET_CCB (CCB)
; 2581 then
; 2582 SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
; 2583 else
; 2584 $MCB_REQUEST_CCB ();
; 2585
; 2586 end; !of routine SEND_STATE
.SBTTL SEND.STATE
000000 005765 000022 SEND.STATE:
TST 22(R5) ; *(DB) 2574
000004 001417 BEQ 3$
000006 105765 000012 TSTB 12(R5) ; *(DB) 2576
000012 001002 BNE 1$
000014 052715 002000 BIS #2000,(R5) ; *,DB
000020 052715 004000 1$: BIS #4000,(R5) ; *,DB 2578
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 94
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (44)
000024 004767 000000G JSR PC,$CCBGT ; 2580
000030 103403 BCS 2$
000032 004767 177450 JSR PC,SCHEDULE.STATE.AST ; 2582
000036 000207 RTS PC ; 2580
000040 004767 000000G 2$: JSR PC,$CCBRQ ; 2584
000044 000207 3$: RTS PC ; 2545
; Routine Size: 19 words, Routine Base: $CODE$ + 4672
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 95
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (45)
; 2587 routine SEND_TRANSIENT_ERROR (DB, STATUS) : DTE_DB_STS novalue =
; 2588
; 2589 !++
; 2590 ! FUNCTIONAL DESCRIPTION:
; 2591 !
; 2592 !
; 2593 ! FORMAL PARAMETERS:
; 2594 ! DB = address of DTE data base.
; 2595 !
; 2596 ! IMPLICIT INPUTS:
; 2597 ! None
; 2598 !
; 2599 ! IMPLICIT OUTPUTS:
; 2600 ! None
; 2601 !
; 2602 ! ROUTINE VALUE:
; 2603 ! COMPLETION CODES:
; 2604 ! None
; 2605 !
; 2606 ! SIDE EFFECTS:
; 2607 ! None
; 2608 !--
; 2609
; 2610 begin
; 2611 GET_DTE_DATA_BASE (DB)
; 2612
; 2613 local
; 2614 CCB : ref block field (C_FIELDS);
; 2615
; 2616 if .DB [D_OWNER_HANDLE] eql 0 then return;
; 2617
; 2618 DB [D_TRANSIENT_ERROR] = .STATUS;
; 2619
; 2620 if $MCB_GET_CCB (CCB)
; 2621 then
; 2622 SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM])
; 2623 else
; 2624 $MCB_REQUEST_CCB ();
; 2625
; 2626 end; !of routine SEND_TRANSIENT_ERROR
.SBTTL SEND.TRANSIENT.ERROR
000000 005765 000022 SEND.TRANSIENT.ERROR:
TST 22(R5) ; *(DB) 2616
000004 001412 BEQ 2$
000006 010065 000024 MOV R0,24(R5) ; STATUS,*(DB) 2618
000012 004767 000000G JSR PC,$CCBGT ; 2620
000016 103403 BCS 1$
000020 004767 177524 JSR PC,SCHEDULE.TRANSIENT.AST ; 2622
000024 000207 RTS PC ; 2620
000026 004767 000000G 1$: JSR PC,$CCBRQ ; 2624
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 96
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (45)
000032 000207 2$: RTS PC ; 2587
; Routine Size: 14 words, Routine Base: $CODE$ + 4740
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 97
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (46)
; 2627 routine TIMCCB (DB, CCB) : MCB_DB_CCB novalue =
; 2628
; 2629 !++
; 2630 ! FUNCTIONAL DESCRIPTION:
; 2631 !
; 2632 !
; 2633 ! FORMAL PARAMETERS:
; 2634 ! DB = address of DTE data base.
; 2635 ! CCB =
; 2636 !
; 2637 ! IMPLICIT INPUTS:
; 2638 ! None
; 2639 !
; 2640 ! IMPLICIT OUTPUTS:
; 2641 ! None
; 2642 !
; 2643 ! ROUTINE VALUE:
; 2644 ! COMPLETION CODES:
; 2645 ! None
; 2646 !
; 2647 ! SIDE EFFECTS:
; 2648 ! None
; 2649 !--
; 2650
; 2651 begin
; 2652 GET_DTE_DATA_BASE (DB)
; 2653
; 2654 map
; 2655 CCB : ref block field (C_FIELDS);
; 2656
; 2657 label
; 2658 RECOVERY;
; 2659
; 2660 if .DB [D_OWNER_HANDLE] eql 0 then return $MCB_RETURN_CCB (.CCB);
; 2661
; 2662 do RECOVERY :
; 2663 begin
; 2664
; 2665 if .DB [DF_NOTIFY_STATE] or .DB [DF_NOTIFY_OFF]
; 2666 then
; 2667 leave RECOVERY with SCHEDULE_STATE_AST (.CCB, DB [D_TIM]);
; 2668
; 2669 if .DB [D_TRANSIENT_ERROR] neq 0
; 2670 then
; 2671 leave RECOVERY with SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM]);
; 2672
; 2673 if .DB [D_PERSISTENT_ERROR] neq 0
; 2674 then
; 2675 leave RECOVERY with SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM]);
; 2676
; 2677 return $MCB_RETURN_CCB (.CCB);
; 2678 end
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 98
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (46)
; 2679 while $MCB_GET_CCB (CCB);
; 2680
; 2681 end; !of routine TIMCCB
.SBTTL TIMCCB
000000 010401 TIMCCB: MOV R4,R1 ; *,CCB 2627
000002 005765 000022 TST 22(R5) ; *(DB) 2660
000006 001430 BEQ 5$
000010 032715 004000 1$: BIT #4000,(R5) ; *,DB 2665
000014 001003 BNE 2$
000016 032715 002000 BIT #2000,(R5) ; *,DB
000022 001404 BEQ 3$
000024 010104 2$: MOV R1,R4 ; CCB,* 2667
000026 004767 177352 JSR PC,SCHEDULE.STATE.AST
000032 000422 BR 7$
000034 005765 000024 3$: TST 24(R5) ; *(DB) 2669
000040 001404 BEQ 4$
000042 010104 MOV R1,R4 ; CCB,* 2671
000044 004767 177444 JSR PC,SCHEDULE.TRANSIENT.AST
000050 000413 BR 7$
000052 005765 000026 4$: TST 26(R5) ; *(DB) 2673
000056 001404 BEQ 5$
000060 010104 MOV R1,R4 ; CCB,* 2675
000062 004767 177202 JSR PC,SCHEDULE.PERSISTENT.AST
000066 000404 BR 7$
000070 010104 5$: MOV R1,R4 ; CCB,* 2677
000072 004767 000000G JSR PC,$CCBRT
000076 000207 6$: RTS PC ; 2662
000100 004767 000000G 7$: JSR PC,$CCBGT ; 2679
000104 103774 BCS 6$
000106 010401 MOV R4,R1 ; $MCB$R4,CCB
000110 000737 BR 1$
; Routine Size: 37 words, Routine Base: $CODE$ + 4774
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 99
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (47)
; 2682 routine TIMLTM (DB) : MCB_DB novalue =
; 2683
; 2684 !++
; 2685 ! FUNCTIONAL DESCRIPTION:
; 2686 !
; 2687 !
; 2688 ! FORMAL PARAMETERS:
; 2689 ! DB = address of DTE data base.
; 2690 !
; 2691 ! IMPLICIT INPUTS:
; 2692 ! None
; 2693 !
; 2694 ! IMPLICIT OUTPUTS:
; 2695 ! None
; 2696 !
; 2697 ! ROUTINE VALUE:
; 2698 ! COMPLETION CODES:
; 2699 ! None
; 2700 !
; 2701 ! SIDE EFFECTS:
; 2702 ! None
; 2703 !--
; 2704
; 2705 begin
; 2706 GET_DTE_DATA_BASE (DB)
; 2707 DB [D_TIM] = .DB [D_TIM] + 1;
; 2708
; 2709 if .DB [D_DEVICE_STATE] eql DD_CLEARED then return;
; 2710
; 2711 !
; 2712 ! Update my keep-alive and get his status.
; 2713 ! Handle lost doorbells
; 2714 !
; 2715
; 2716 case .DB [D_PROTOCOL_STATE] from DS_STA_LOW to DS_STA_HIGH of
; 2717 set
; 2718
; 2719 [DS_INITIALIZING, DS_RUNNING, DS_PAUSED] :
; 2720 begin
; 2721 DB [D_MKA] = .DB [D_MKA] + 1;
; 2722 DEPMYG (DB [D_TIM], KPALIV, DB [D_MKA]);
; 2723 GET_HIS_STATUS (DB [D_TIM]);
; 2724
; 2725 if DTE_RINGING (.DB [D_REGISTER])
; 2726 then
; 2727 ANSWER_DOORBELL (DB [D_TIM]);
; 2728
; 2729 if .DB [D_PROTOCOL_STATE] EQL DS_RUNNING
; 2730 then
; 2731
; 2732 if not PAUSED (DB [D_TIM])
; 2733 then
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 100
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (47)
; 2734
; 2735 if not INITIALIZATION_REQUESTED (DB [D_TIM])
; 2736 then
; 2737 begin
; 2738 TRANSMIT_MESSAGE (DB [D_TIM]);
; 2739 RECEIVE_MESSAGE (DB [D_TIM]);
; 2740 end;
; 2741
; 2742 end;
; 2743
; 2744 [inrange] :
; 2745 NO_OPERATION;
; 2746
; 2747 tes;
; 2748
; 2749 if .DB [D_LONG_TIMER] neq 0
; 2750 then
; 2751
; 2752 if (DB [D_LONG_TIMER] = .DB [D_LONG_TIMER] - 1) eql 0
; 2753 then
; 2754
; 2755 case .DB [D_PROTOCOL_STATE] from DS_STA_LOW to DS_STA_HIGH of
; 2756 set
; 2757
; 2758 [DS_COM] :
; 2759 begin
; 2760 GETCOM (DB [D_TIM]);
; 2761
; 2762 if .DB [D_PROTOCOL_STATE] eql DS_COM
; 2763 then %(device not ready)%
; 2764
; 2765 if (DB [D_START_THRESHOLD] = .DB [D_START_THRESHOLD] - 1) eql 0
; 2766 then
; 2767 begin
; 2768 SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_TRANSMIT_THRESHOLD);
; 2769 DB [D_START_THRESHOLD] = 7;
; 2770 end;
; 2771
; 2772 end;
; 2773
; 2774 [DS_INITIALIZING] :
; 2775 begin %(initialization timeout)%
; 2776 DB [D_LONG_TIMER] = DTE_K_START_TIMEOUT;
; 2777
; 2778 if (DB [D_START_THRESHOLD] = .DB [D_START_THRESHOLD] - 1) eql 0
; 2779 then
; 2780 begin
; 2781 SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_TRANSMIT_THRESHOLD);
; 2782 DB [D_START_THRESHOLD] = 7;
; 2783 end;
; 2784
; 2785 end;
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 101
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (47)
; 2786
; 2787 [DS_RUNNING] :
; 2788 begin
; 2789 if .DB[ $sub_field( D_RST, RCV)] eql 0
; 2790 then
; 2791 begin
; 2792 COUNTER_INCREMENT( DB, D_LOST_DOORBELL);
; 2793 COUNTER_INCREMENT( DB, D_DEVICE_SERVICE_ERRORS);
; 2794 DTE_SET ( .DB[ D_REGISTER], INT10S);
; 2795 DB[ D_LONG_TIMER] = DTE_K_TRANSMIT_DOORBELL_TIMEOUT;
; 2796 end;
; 2797 end;
; 2798
; 2799 [DS_PAUSED] :
; 2800 if .DB [$SUB_FIELD (D_RST, V)]
; 2801 then
; 2802 begin
; 2803 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_RUNNING, RMT);
; 2804
; 2805 if not INITIALIZATION_REQUESTED (DB [D_TIM])
; 2806 then
; 2807 begin
; 2808 TRANSMIT_MESSAGE (DB [D_TIM]);
; 2809 RECEIVE_MESSAGE (DB [D_TIM]);
; 2810 end;
; 2811 end
; 2812 else
; 2813 begin
; 2814 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_PAUSE_TIMEOUT);
; 2815 ! Pause too long
; 2816 DEVICE_BROKEN (DB [D_TIM]);
; 2817 end;
; 2818
; 2819 [inrange] :
; 2820 NO_OPERATION;
; 2821
; 2822 tes;
; 2823
; 2824 end; !of routine TIMLTM
.SBTTL TIMLTM
000000 024646 TIMLTM: CMP -(SP),-(SP) ; 2682
000002 105215 INCB (R5) ; DB 2707
000004 105765 000016 TSTB 16(R5) ; *(DB) 2709
000010 001577 BEQ 8$
000012 012766 000012 000002 MOV #12,2(SP) ; 2716
000020 060566 000002 ADD R5,2(SP) ; DB,*
000024 117600 000002 MOVB @2(SP),R0
000030 006300 ASL R0
000032 066007 000174' ADD P.AAL(R0),PC ; Case dispatch
000036 005265 000106 1$: INC 106(R5) ; *(DB) 2721
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 102
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (47)
000042 012703 000106 MOV #106,R3 ; 2722
000046 060503 ADD R5,R3 ; DB,*
000050 012702 000005 MOV #5,R2
000054 004767 173436 JSR PC,DEPMYG
000060 004767 174752 JSR PC,GET.HIS.STATUS ; 2723
000064 032775 004000 000002 BIT #4000,@2(R5) ; *,*(DB) 2725
000072 001402 BEQ 2$
000074 004767 172572 JSR PC,ANSWER.DOORBELL ; 2727
000100 127627 000002 000003 2$: CMPB @2(SP),#3 ; 2729
000106 001014 BNE 3$
000110 004767 176010 JSR PC,PAUSED ; 2732
000114 006000 ROR R0
000116 103410 BLO 3$
000120 004767 175642 JSR PC,INITIALIZATION.REQUESTED ; 2735
000124 006000 ROR R0
000126 103404 BLO 3$
000130 004767 000000V JSR PC,TRANSMIT.MESSAGE ; 2738
000134 004767 176146 JSR PC,RECEIVE.MESSAGE ; 2739
000140 012716 000020 3$: MOV #20,(SP) ; 2749
000144 060516 ADD R5,(SP) ; DB,*
000146 105776 000000 TSTB @0(SP)
000152 001551 BEQ 12$
000154 005000 CLR R0 ; 2752
000156 157600 000000 BISB @0(SP),R0
000162 005300 DEC R0
000164 110076 000000 MOVB R0,@0(SP)
000170 005700 TST R0
000172 001141 BNE 12$
000174 117600 000002 MOVB @2(SP),R0 ; 2755
000200 006300 ASL R0
000202 066007 000206' ADD P.AAM(R0),PC ; Case dispatch
000206 004767 174656 4$: JSR PC,GETCOM ; 2760
000212 127627 000002 000001 CMPB @2(SP),#1 ; 2762
000220 001126 BNE 12$
000222 017600 000000 MOV @0(SP),R0 ; 2765
000226 105000 CLRB R0
000230 000300 SWAB R0
000232 005300 DEC R0
000234 017646 000000 MOV @0(SP),-(SP)
000240 110066 000001 MOVB R0,1(SP)
000244 012676 000000 MOV (SP)+,@0(SP)
000250 005700 TST R0
000252 001111 BNE 12$
000254 000420 BR 6$ ; 2768
000256 112776 000005 000000 5$: MOVB #5,@0(SP) ; 2776
000264 017600 000000 MOV @0(SP),R0 ; 2778
000270 105000 CLRB R0
000272 000300 SWAB R0
000274 005300 DEC R0
000276 017646 000000 MOV @0(SP),-(SP)
000302 110066 000001 MOVB R0,1(SP)
000306 012676 000000 MOV (SP)+,@0(SP)
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 103
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (47)
000312 005700 TST R0
000314 001070 BNE 12$
000316 012700 100100 6$: MOV #-77700,R0 ; 2781
000322 004767 177304 JSR PC,SEND.TRANSIENT.ERROR
000326 042776 177400 000000 BIC #177400,@0(SP) ; 2782
000334 052776 003400 000000 BIS #3400,@0(SP)
000342 000455 BR 12$ ; 2755
000344 132765 000001 000060 7$: BITB #1,60(R5) ; *,*(DB) 2789
000352 001051 BNE 12$
000354 052765 010000 000164 BIS #10000,164(R5) ; *,*(DB) 2792
000362 012700 000164 MOV #164,R0 ; 2793
000366 060500 ADD R5,R0 ; DB,*
000370 004767 000000G JSR PC,$IC8
000374 012775 000400 000002 MOV #400,@2(R5) ; *,*(DB) 2794
000402 112776 000003 000000 MOVB #3,@0(SP) ; 2795
000410 000432 8$: BR 12$ ; 2755
000412 132765 000001 000062 9$: BITB #1,62(R5) ; *,*(DB) 2800
000420 001420 BEQ 11$
000422 012746 000003 MOV #3,-(SP) ; 2803
000426 012746 000001 MOV #1,-(SP)
000432 004767 172526 JSR PC,CHANGE.PROTOCOL.STATE
000436 004767 175324 JSR PC,INITIALIZATION.REQUESTED ; 2805
000442 006000 ROR R0
000444 103404 BLO 10$
000446 004767 000000V JSR PC,TRANSMIT.MESSAGE ; 2808
000452 004767 175630 JSR PC,RECEIVE.MESSAGE ; 2809
000456 022626 10$: CMP (SP)+,(SP)+ ; 2802
000460 000406 BR 12$ ; 2800
000462 012700 100200 11$: MOV #-77600,R0 ; 2814
000466 004767 177036 JSR PC,SEND.PERSISTENT.ERROR
000472 004767 173040 JSR PC,DEVICE.BROKEN ; 2816
000476 022626 12$: CMP (SP)+,(SP)+ ; 2682
000500 000207 RTS PC
; Routine Size: 161 words, Routine Base: $CODE$ + 5106
; Maximum stack depth per invocation: 5 words
000174 .PSECT $PLIT$, RO , D
P.AAL: ; CASE Table for TIMLTM+0032 2716
000174 000102 .WORD 102 ; [3$]
000176 000102 .WORD 102 ; [3$]
000200 000000 .WORD 0 ; [1$]
000202 000000 .WORD 0 ; [1$]
000204 000000 .WORD 0 ; [1$]
P.AAM: ; CASE Table for TIMLTM+0202 2755
000206 000270 .WORD 270 ; [12$]
000210 000000 .WORD 0 ; [4$]
000212 000050 .WORD 50 ; [5$]
000214 000136 .WORD 136 ; [7$]
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 104
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (47)
000216 000204 .WORD 204 ; [9$]
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 105
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (48)
; 2825 routine TIMPIN (DB) : MCB_DB novalue =
; 2826
; 2827 !++
; 2828 ! FUNCTIONAL DESCRIPTION:
; 2829 !
; 2830 !
; 2831 ! FORMAL PARAMETERS:
; 2832 ! DB = address of DTE data base.
; 2833 !
; 2834 ! IMPLICIT INPUTS:
; 2835 ! None
; 2836 !
; 2837 ! IMPLICIT OUTPUTS:
; 2838 ! None
; 2839 !
; 2840 ! ROUTINE VALUE:
; 2841 ! COMPLETION CODES:
; 2842 ! None
; 2843 !
; 2844 ! SIDE EFFECTS:
; 2845 ! None
; 2846 !--
; 2847
; 2848 begin
; 2849 GET_DTE_DATA_BASE (DB)
; 2850 DTEDBI ();
; 2851 DTEDVI ();
; 2852 DTENMI ();
; 2853
; 2854 if .DB [D_LINE_STATE] eql DL_ON
; 2855 then
; 2856 $MCB_ENABLE_LONG_TIMER ();
; 2857
; 2858 end; !of routine TIMPIN
.GLOBL $LTMEN
.SBTTL TIMPIN
005610 .PSECT $CODE$, RO
000000 004767 000000G TIMPIN: JSR PC,DTEDBI ; 2850
000004 004767 000000G JSR PC,DTEDVI ; 2851
000010 004767 000000G JSR PC,DTENMI ; 2852
000014 105765 000015 TSTB 15(R5) ; *(DB) 2854
000020 001002 BNE 1$
000022 004767 000000G JSR PC,$LTMEN ; 2856
000026 000207 1$: RTS PC ; 2825
; Routine Size: 12 words, Routine Base: $CODE$ + 5610
; Maximum stack depth per invocation: 1 word
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 106
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (49)
; 2859 routine TIMPWF (DB) : MCB_DB novalue =
; 2860
; 2861 !++
; 2862 ! FUNCTIONAL DESCRIPTION:
; 2863 !
; 2864 !
; 2865 ! FORMAL PARAMETERS:
; 2866 ! DB = address of DTE data base.
; 2867 !
; 2868 ! IMPLICIT INPUTS:
; 2869 ! None
; 2870 !
; 2871 ! IMPLICIT OUTPUTS:
; 2872 ! None
; 2873 !
; 2874 ! ROUTINE VALUE:
; 2875 ! COMPLETION CODES:
; 2876 ! None
; 2877 !
; 2878 ! SIDE EFFECTS:
; 2879 ! None
; 2880 !--
; 2881
; 2882 begin
; 2883 SIGNAL_STOP (DTE$_PWF);
; 2884 end; !of routine TIMPWF
.SBTTL TIMPWF
000000 012746 100024 TIMPWF: MOV #-77754,-(SP) ; 2883
000004 012746 000001 MOV #1,-(SP)
000010 004767 000000G JSR PC,$STOP
000014 022626 CMP (SP)+,(SP)+ ; 2882
000016 000207 RTS PC ; 2859
; Routine Size: 8 words, Routine Base: $CODE$ + 5640
; Maximum stack depth per invocation: 3 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 107
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (50)
; 2885 routine TIMRDB (DB, CCB) : MCB_DB_CCB novalue =
; 2886
; 2887 !++
; 2888 ! FUNCTIONAL DESCRIPTION:
; 2889 !
; 2890 !
; 2891 ! FORMAL PARAMETERS:
; 2892 ! DB = address of DTE data base.
; 2893 ! CCB = address of requested RDB.
; 2894 !
; 2895 ! IMPLICIT INPUTS:
; 2896 ! None
; 2897 !
; 2898 ! IMPLICIT OUTPUTS:
; 2899 ! None
; 2900 !
; 2901 ! ROUTINE VALUE:
; 2902 ! COMPLETION CODES:
; 2903 ! None
; 2904 !
; 2905 ! SIDE EFFECTS:
; 2906 ! None
; 2907 !--
; 2908
; 2909 begin
; 2910 GET_DTE_DATA_BASE (DB)
; 2911
; 2912 if .DB [D_RCB] neqa 0 then return RDBRT$ (.CCB);
; 2913
; 2914 case .DB [D_PROTOCOL_STATE] from DS_STA_LOW to DS_STA_HIGH of
; 2915 set
; 2916
; 2917 [DS_RUNNING] :
; 2918 begin
; 2919 NEW_RCB (DB [D_TIM], .CCB);
; 2920 RECEIVE_MESSAGE (DB [D_TIM]);
; 2921 end;
; 2922
; 2923 [DS_PAUSED] :
; 2924 NEW_RCB (DB [D_TIM], .CCB);
; 2925
; 2926 [inrange] :
; 2927 RDBRT$ (.CCB);
; 2928
; 2929 tes;
; 2930
; 2931 end; !of routine TIMRDB
.SBTTL TIMRDB
000000 010400 TIMRDB: MOV R4,R0 ; *,CCB 2885
000002 005765 000110 TST 110(R5) ; *(DB) 2912
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 108
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (50)
000006 001020 BNE 4$
000010 116501 000012 MOVB 12(R5),R1 ; *(DB),* 2914
000014 006301 ASL R1
000016 066107 000220' ADD P.AAN(R1),PC ; Case dispatch
000022 010046 1$: MOV R0,-(SP) ; CCB,* 2919
000024 004767 175222 JSR PC,NEW.RCB
000030 004767 175500 JSR PC,RECEIVE.MESSAGE ; 2920
000034 000403 BR 3$ ; 2918
000036 010046 2$: MOV R0,-(SP) ; CCB,* 2924
000040 004767 175206 JSR PC,NEW.RCB
000044 005726 3$: TST (SP)+
000046 000207 RTS PC ; 2914
000050 010004 4$: MOV R0,R4 ; CCB,* 2927
000052 004767 000000G JSR PC,$RDBRT
000056 000207 RTS PC ; 2885
; Routine Size: 24 words, Routine Base: $CODE$ + 5660
; Maximum stack depth per invocation: 2 words
000220 .PSECT $PLIT$, RO , D
P.AAN: ; CASE Table for TIMRDB+0016 2914
000220 000026 .WORD 26 ; [4$]
000222 000026 .WORD 26 ; [4$]
000224 000026 .WORD 26 ; [4$]
000226 000000 .WORD 0 ; [1$]
000230 000014 .WORD 14 ; [2$]
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 109
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (51)
; 2932 routine TRANSMIT_MESSAGE (DB) : DTE_DB novalue =
; 2933
; 2934 !++
; 2935 ! FUNCTIONAL DESCRIPTION:
; 2936 !
; 2937 !
; 2938 ! FORMAL PARAMETERS:
; 2939 ! DB = address of DTE data base.
; 2940 !
; 2941 ! IMPLICIT INPUTS:
; 2942 ! None
; 2943 !
; 2944 ! IMPLICIT OUTPUTS:
; 2945 ! None
; 2946 !
; 2947 ! ROUTINE VALUE:
; 2948 ! COMPLETION CODES:
; 2949 ! None
; 2950 !
; 2951 ! SIDE EFFECTS:
; 2952 ! None
; 2953 !--
; 2954
; 2955 begin
; 2956 GET_DTE_DATA_BASE (DB)
; 2957
; 2958 if .DB [$SUB_FIELD (D_XQZ, PSIZE)] eql 0 and .DB [$SUB_FIELD (D_XMQ, LIST_FIRST)] neq 0
; 2959 then
; 2960 begin
; 2961
; 2962 local
; 2963 CCB : ref block field (C_FIELDS);
; 2964
; 2965 CCB = .DB [$SUB_FIELD (D_XMQ, LIST_FIRST)];
; 2966 DB [D_XLN] = 0;
; 2967
; 2968 if .CCB [C_CHN] eql 0
; 2969 then
; 2970 begin
; 2971 DB [D_XCB] = .CCB;
; P 2972 $MCB_CONVERT_TO_UBA_ADDRESS ((.CCB [C_BIAS], .CCB [C_ADDR]),
; P 2973 DB [$SUB_FIELD (D_XBA, PHYSICAL_LOW)],
; 2974 DB [$SUB_FIELD (D_XBA, PHYSICAL_HIGH)]);
; 2975 DB [D_XCT] = .CCB [C_CNT];
; 2976
; 2977 do
; 2978 DB [D_XLN] = .DB [D_XLN] + .CCB [C_CNT]
; 2979 while (CCB = .CCB [C_CHN]) neq 0;
; 2980
; 2981 end
; 2982 else
; 2983 begin
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 110
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (51)
; 2984 DB [D_XCB] = 0;
; P 2985 $MCB_CONVERT_TO_UBA_ADDRESS ((.DB_BIAS, DB [D_XBUF]),
; P 2986 DB [$SUB_FIELD (D_XBA, PHYSICAL_LOW)],
; 2987 DB [$SUB_FIELD (D_XBA, PHYSICAL_HIGH)]);
; 2988
; 2989 begin
; 2990
; 2991 local
; 2992 LENGTH;
; 2993
; 2994 LENGTH = $MCB_COPY_CHAIN_TO_BUFFER (.CCB, (.DB_BIAS, DB [D_XBUF]));
; 2995 MAP$ (.DB_BIAS);
; 2996 DB [D_XCT] = DB [D_XLN] = .LENGTH;
; 2997 end;
; 2998 end;
; 2999
; 3000 DB [$SUB_FIELD (D_XQZ, PSIZE)] = .DB [D_XLN];
; 3001 end;
; 3002
; 3003 TRANSMIT_SEGMENT (DB [D_TIM]);
; 3004 end; !of routine TRANSMIT_MESSAGE
.GLOBL $CPTBF, KISAR6
.SBTTL TRANSMIT.MESSAGE
005740 .PSECT $CODE$, RO
000000 005746 TRANSMIT.MESSAGE:
TST -(SP) ; 2932
000002 012701 000102 MOV #102,R1 ; 2958
000006 060501 ADD R5,R1 ; DB,*
000010 005711 TST (R1)
000012 001100 BNE 4$
000014 005765 000120 TST 120(R5) ; *(DB)
000020 001475 BEQ 4$
000022 016504 000120 MOV 120(R5),R4 ; *(DB),CCB 2965
000026 012716 000124 MOV #124,(SP) ; 2966
000032 060516 ADD R5,(SP) ; DB,*
000034 005076 000000 CLR @0(SP)
000040 005764 000002 TST 2(R4) ; *(CCB) 2968
000044 001026 BNE 2$
000046 010465 000126 MOV R4,126(R5) ; CCB,*(DB) 2971
000052 016402 000016 MOV 16(R4),R2 ; *(CCB),* 2974
000056 016403 000020 MOV 20(R4),R3 ; *(CCB),*
000062 004767 000000G JSR PC,$PHY18
000066 010365 000132 MOV R3,132(R5) ; *,*(DB)
000072 010265 000130 MOV R2,130(R5) ; *,*(DB)
000076 016465 000022 000134 MOV 22(R4),134(R5) ; *(CCB),*(DB) 2975
000104 066476 000022 000000 1$: ADD 22(R4),@0(SP) ; *(CCB),* 2978
000112 016404 000002 MOV 2(R4),R4 ; *(CCB),CCB 2979
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 111
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (51)
000116 001434 BEQ 3$
000120 000771 BR 1$
000122 005065 000126 2$: CLR 126(R5) ; *(DB) 2984
000126 010500 MOV R5,R0 ; DB,* 2987
000130 062700 000174 ADD #174,R0
000134 016702 000000G MOV .CRDAT,R2
000140 010003 MOV R0,R3
000142 004767 000000G JSR PC,$PHY18
000146 010365 000132 MOV R3,132(R5) ; *,*(DB)
000152 010265 000130 MOV R2,130(R5) ; *,*(DB)
000156 016746 000000G MOV .CRDAT,-(SP) ; 2994
000162 010046 MOV R0,-(SP)
000164 004767 000000G JSR PC,$CPTBF
000170 016767 000000G 000000G MOV .CRDAT,KISAR6 ; 2995
000176 010076 000004 MOV R0,@4(SP) ; LENGTH,* 2996
000202 010065 000134 MOV R0,134(R5) ; LENGTH,*(DB)
000206 022626 CMP (SP)+,(SP)+ ; 2983
000210 017611 000000 3$: MOV @0(SP),(R1) ; 3000
000214 004767 000000V 4$: JSR PC,TRANSMIT.SEGMENT ; 3003
000220 005726 TST (SP)+ ; 2932
000222 000207 RTS PC
; Routine Size: 74 words, Routine Base: $CODE$ + 5740
; Maximum stack depth per invocation: 4 words
; 3005
; 3006
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 112
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (52)
; 3007 routine TRANSMIT_SEGMENT (DB) : DTE_DB novalue =
; 3008
; 3009 !++
; 3010 ! FUNCTIONAL DESCRIPTION:
; 3011 !
; 3012 !
; 3013 ! FORMAL PARAMETERS:
; 3014 ! DB = address of DTE data base.
; 3015 !
; 3016 ! IMPLICIT INPUTS:
; 3017 ! None
; 3018 !
; 3019 ! IMPLICIT OUTPUTS:
; 3020 ! None
; 3021 !
; 3022 ! ROUTINE VALUE:
; 3023 ! COMPLETION CODES:
; 3024 ! None
; 3025 !
; 3026 ! SIDE EFFECTS:
; 3027 ! None
; 3028 !--
; 3029
; 3030 begin
; 3031 GET_DTE_DATA_BASE (DB)
; 3032
; 3033 local
; 3034 DTE : ref block field (DTE_FIELDS);
; 3035
; 3036 if .DB [$SUB_FIELD (D_XQZ, PSIZE)] eql 0 then return;
; 3037
; 3038 if .DB [$SUB_FIELD (D_XQZ, CSIZE)] neq 0 then return;
; 3039
; 3040 if .DB [D_RCT] neq 0 and
; 3041 .DB [$SUB_FIELD (D_XBA, PHYSICAL_HIGH)] neq
; 3042 .DB [$SUB_FIELD (D_RBA, PHYSICAL_HIGH)] then return;
; 3043
; 3044 if .DB [DF_FLUSHING_DTE] then return;
; 3045
; 3046 DTE = .DB [D_REGISTER];
; 3047
; 3048 if DTE_TEST (.DTE, TO10DB) then return;
; 3049
; 3050 DTE_EXT (.DTE, .DB [$SUB_FIELD (D_XBA, PHYSICAL_HIGH)]);
; 3051 DB [$SUB_FIELD (D_XQZ, CSIZE)] =
; 3052 (if .DB [$SUB_FIELD (D_XBA, PHYSICAL_LOW)] eql 0
; 3053 then .DB [D_XCT]
; 3054 else MINU (-.DB [$SUB_FIELD (D_XBA, PHYSICAL_LOW)],
; 3055 .DB [D_XCT]));
; 3056 DB [$SUB_FIELD (D_XQZ, TMODE)] = 0;
; 3057 DEPMYH (DB [D_TIM], QSIZE, DB [D_XQZ]);
; 3058 DTE [TO10AD] = .DB [$SUB_FIELD (D_XBA, PHYSICAL_LOW)];
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 113
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (52)
; 3059 begin
; 3060
; 3061 local
; 3062 VALUE : block [1] field (TO10BM);
; 3063
; 3064 VALUE = 0;
; 3065 VALUE [TO10BM] = 1;
; 3066 DTE [DIAG3] = .VALUE;
; 3067 end;
; 3068 ! *********************** Protocol deviation **************************
; 3069 ! The -20 monitors MY CPQCNT instead of MY QCOUNT for TO-HIM transfers,
; 3070 ! so the roles of MY QCOUNT and MY CPQCNT are reversed from those in
; 3071 ! the protocol specification.
; 3072 ! *********************************************************************
; 3073 DB [$SUB_FIELD (D_XST, CPQCNT)] = .DB [$SUB_FIELD (D_XST, CPQCNT)] + 1;
; 3074 DEPMYH (DB [D_TIM], STATUS, DB [D_XST]);
; 3075 DTE_SET (.DB [D_REGISTER], INT10S);
; 3076 DB[ D_LONG_TIMER] = DTE_K_TRANSMIT_DOORBELL_TIMEOUT;
; 3077 end; !of routine TRANSMIT_SEGMENT
.SBTTL TRANSMIT.SEGMENT
000000 010546 TRANSMIT.SEGMENT:
MOV R5,-(SP) ; 3007
000002 005746 TST -(SP)
000004 010546 MOV R5,-(SP)
000006 010500 MOV R5,R0 ; 3036
000010 005760 000102 TST 102(R0)
000014 001540 BEQ 4$
000016 012700 000100 MOV #100,R0 ; 3038
000022 060500 ADD R5,R0
000024 010003 MOV R0,R3
000026 005713 TST (R3)
000030 001132 BNE 4$
000032 010500 MOV R5,R0 ; 3040
000034 005760 000116 TST 116(R0)
000040 001405 BEQ 1$
000042 010501 MOV R5,R1 ; 3041
000044 026160 000130 000112 CMP 130(R1),112(R0)
000052 001121 BNE 4$ ; 3042
000054 032776 020000 000000 1$: BIT #20000,@0(SP) ; 3044
000062 001115 BNE 4$
000064 011600 MOV (SP),R0 ; 3046
000066 016066 000002 000002 MOV 2(R0),2(SP) ; *,DTE
000074 032776 000400 000002 BIT #400,@2(SP) ; *,DTE 3048
000102 001105 BNE 4$
000104 005000 CLR R0 ; VALUE 3050
000106 011602 MOV (SP),R2
000110 016201 000130 MOV 130(R2),R1
000114 072127 000016 ASH #16,R1
000120 042700 140000 BIC #140000,R0 ; *,VALUE
000124 050100 BIS R1,R0 ; *,VALUE
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 114
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (52)
000126 016601 000002 MOV 2(SP),R1 ; DTE,*
000132 010061 177744 MOV R0,-34(R1) ; VALUE,*(DTE)
000136 012700 000132 MOV #132,R0 ; 3052
000142 060200 ADD R2,R0
000144 010004 MOV R0,R4
000146 005714 TST (R4)
000150 001406 BEQ 2$
000152 011405 MOV (R4),R5 ; 3054
000154 005405 NEG R5
000156 010200 MOV R2,R0
000160 020560 000134 CMP R5,134(R0)
000164 101403 BLOS 3$
000166 011600 2$: MOV (SP),R0
000170 016005 000134 MOV 134(R0),R5
000174 010513 3$: MOV R5,(R3) ; 3051
000176 011600 MOV (SP),R0 ; 3056
000200 142760 000017 000104 BICB #17,104(R0)
000206 010005 MOV R0,R5 ; 3057
000210 012702 000003 MOV #3,R2
000214 004767 172226 JSR PC,DEPMYH
000220 016600 000002 MOV 2(SP),R0 ; DTE,* 3058
000224 011460 177764 MOV (R4),-14(R0) ; *,*(DTE)
000230 005000 CLR R0 ; VALUE 3064
000232 152700 000001 BISB #1,R0 ; *,VALUE 3065
000236 016601 000002 MOV 2(SP),R1 ; DTE,* 3066
000242 010061 000002 MOV R0,2(R1) ; VALUE,*(DTE)
000246 011601 MOV (SP),R1 ; 3073
000250 105261 000073 INCB 73(R1)
000254 012700 000072 MOV #72,R0 ; 3074
000260 060100 ADD R1,R0
000262 010003 MOV R0,R3
000264 010105 MOV R1,R5
000266 012702 000002 MOV #2,R2
000272 004767 172150 JSR PC,DEPMYH
000276 011600 MOV (SP),R0 ; 3075
000300 012770 000400 000002 MOV #400,@2(R0)
000306 011600 MOV (SP),R0 ; 3076
000310 112760 000003 000020 MOVB #3,20(R0)
000316 022626 4$: CMP (SP)+,(SP)+ ; 3007
000320 012605 MOV (SP)+,R5
000322 000207 RTS PC
; Routine Size: 106 words, Routine Base: $CODE$ + 6164
; Maximum stack depth per invocation: 4 words
; 3078
; 3079
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 115
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (53)
; 3080 routine T10DON (DB) : DTE_DB novalue =
; 3081
; 3082 !++
; 3083 ! FUNCTIONAL DESCRIPTION:
; 3084 !
; 3085 !
; 3086 ! FORMAL PARAMETERS:
; 3087 ! DB = address of DTE data base.
; 3088 !
; 3089 ! IMPLICIT INPUTS:
; 3090 ! None
; 3091 !
; 3092 ! IMPLICIT OUTPUTS:
; 3093 ! None
; 3094 !
; 3095 ! ROUTINE VALUE:
; 3096 ! COMPLETION CODES:
; 3097 ! None
; 3098 !
; 3099 ! SIDE EFFECTS:
; 3100 ! None
; 3101 !--
; 3102
; 3103 begin
; 3104 GET_DTE_DATA_BASE (DB)
; 3105 PHYSICAL_ADD (DB, D_XBA, .DB [$SUB_FIELD (D_XQZ, CSIZE)]);
; 3106 if .DB[ D_PROTOCOL_STATE] eql DS_RUNNING
; 3107 then
; 3108 DB[ D_LONG_TIMER] = 0;
; 3109
; 3110 if .block [.DB [D_REGISTER], $SUB_FIELD (TO10BC, TO10CM)] or
; 3111 begin
; 3112 DTE_SET (.DB [D_REGISTER], DON10C, ERR10C);
; 3113 .block [.DB [D_REGISTER], TO10AD] neq .DB [$SUB_FIELD (D_XBA, PHYSICAL_LOW)]
; 3114 end
; 3115 then
; 3116 begin ! Incomplete transfer.
; P 3117 $NM_PLL_EVENT (4, .DB [D_LINE_ENTITY],
; 3118 PARAMETER_DEVICE_REGISTERS (.DB [D_REGISTER]));
; 3119 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 3120 COUNTER_INCREMENT (DB, D_TRANSMIT_BA_MISMATCH);
; 3121 COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
; 3122 DEVICE_BROKEN (DB [D_TIM]);
; 3123 return;
; 3124 end;
; 3125
; 3126 DB [$SUB_FIELD (D_XQZ, PSIZE)] = .DB [$SUB_FIELD (D_XQZ, PSIZE)] -
; 3127 .DB [$SUB_FIELD (D_XQZ, CSIZE)];
; 3128
; 3129 if .DB [$SUB_FIELD (D_XQZ, PSIZE)] gtr 0
; 3130 then
; 3131 begin
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 116
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (53)
; 3132 DB [D_XCT] = .DB [D_XCT] - .DB [$SUB_FIELD (D_XQZ, CSIZE)];
; 3133
; 3134 if .DB [D_XCT] eql 0
; 3135 then
; 3136 begin
; 3137
; 3138 local
; 3139 CCB : ref block field (C_FIELDS);
; 3140
; 3141 DB [D_XCB] = CCB = .block [.DB [D_XCB], C_CHN];
; P 3142 $MCB_CONVERT_TO_UBA_ADDRESS ((.CCB [C_BIAS], .CCB [C_ADDR]),
; P 3143 DB [$SUB_FIELD (D_XBA, PHYSICAL_LOW)],
; 3144 DB [$SUB_FIELD (D_XBA, PHYSICAL_HIGH)]);
; 3145 DB [D_XCT] = .CCB [C_CNT];
; 3146 end;
; 3147
; 3148 DB [$SUB_FIELD (D_XQZ, CSIZE)] = 0;
; 3149 TRANSMIT_SEGMENT (DB [D_TIM]);
; 3150 end
; 3151 else
; 3152 begin
; 3153
; 3154 local
; 3155 CCB : ref block field (C_FIELDS);
; 3156
; 3157 DB [$SUB_FIELD (D_XQZ, CSIZE)] = 0;
; 3158 DEPMYH (DB [D_TIM], QSIZE, DB [D_XQZ]);
; 3159
; 3160 if not CMQRM$ (DB [D_XMQ], CCB) then SIGNAL_STOP (DTE$_QUE, DB [D_XMQ]);
; 3161
; 3162 COUNTER_ADD (DB, D_BYTES_SENT, .DB [D_XLN]);
; 3163 COUNTER_INCREMENT (DB, D_DATA_BLOCKS_SENT);
; 3164 DB [D_XLN] = 0;
; 3165 SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_SUCCESS);
; 3166 end;
; 3167
; 3168 if .DB [DF_FLUSHING_DTE] and (.DB [D_RCT] eql 0)
; 3169 then
; 3170 DB [DF_FLUSHING_DTE] = FALSE;
; 3171
; 3172 end; !of routine T10DON
.GLOBL $AC32, $IC32
.SBTTL T10DON
000000 012746 000132 T10DON: MOV #132,-(SP) ; 3105
000004 060516 ADD R5,(SP) ; DB,*
000006 012746 000100 MOV #100,-(SP)
000012 060516 ADD R5,(SP) ; DB,*
000014 017600 000002 MOV @2(SP),R0
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 117
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (53)
000020 067600 000000 ADD @0(SP),R0
000024 010076 000002 MOV R0,@2(SP)
000030 005565 000130 ADC 130(R5) ; *(DB)
000034 126527 000012 000003 CMPB 12(R5),#3 ; *(DB),* 3106
000042 001002 BNE 1$
000044 105065 000020 CLRB 20(R5) ; *(DB) 3108
000050 016501 000002 1$: MOV 2(R5),R1 ; *(DB),* 3110
000054 032761 000001 177760 BIT #1,-20(R1)
000062 001006 BNE 2$
000064 012711 050000 MOV #50000,(R1) ; 3112
000070 026176 177764 000002 CMP -14(R1),@2(SP) ; 3113
000076 001431 BEQ 3$
000100 004767 000000G 2$: JSR PC,$NLBEG ; 3118
000104 004767 174354 JSR PC,PLL0
000110 012700 000604 MOV #604,R0
000114 016501 000042 MOV 42(R5),R1 ; *(DB),*
000120 004767 000000G JSR PC,$NLEND
000124 012700 100174 MOV #-77604,R0 ; 3119
000130 004767 175772 JSR PC,SEND.PERSISTENT.ERROR
000134 052765 002000 000166 BIS #2000,166(R5) ; *,*(DB) 3120
000142 012700 000166 MOV #166,R0 ; 3121
000146 060500 ADD R5,R0 ; DB,*
000150 004767 000000G JSR PC,$IC8
000154 004767 171754 JSR PC,DEVICE.BROKEN ; 3122
000160 000522 BR 8$ ; 3116
000162 167665 000000 000102 3$: SUB @0(SP),102(R5) ; *,*(DB) 3126
000170 000243 .WORD CLV!CLC
; 3129
000172 003435 BLE 5$
000174 012701 000134 MOV #134,R1 ; 3132
000200 060501 ADD R5,R1 ; DB,*
000202 167611 000000 SUB @0(SP),(R1)
000206 001022 BNE 4$ ; 3134
000210 016500 000126 MOV 126(R5),R0 ; *(DB),* 3141
000214 016000 000002 MOV 2(R0),R0 ; *,CCB
000220 010065 000126 MOV R0,126(R5) ; CCB,*(DB)
000224 016002 000016 MOV 16(R0),R2 ; *(CCB),* 3144
000230 016003 000020 MOV 20(R0),R3 ; *(CCB),*
000234 004767 000000G JSR PC,$PHY18
000240 010376 000002 MOV R3,@2(SP)
000244 010265 000130 MOV R2,130(R5) ; *,*(DB)
000250 016011 000022 MOV 22(R0),(R1) ; *(CCB),* 3145
000254 005076 000000 4$: CLR @0(SP) ; 3148
000260 004767 177170 JSR PC,TRANSMIT.SEGMENT ; 3149
000264 000450 BR 7$ ; 3129
000266 005076 000000 5$: CLR @0(SP) ; 3157
000272 012702 000003 MOV #3,R2 ; 3158
000276 011603 MOV (SP),R3
000300 004767 171616 JSR PC,DEPMYH
000304 012703 000120 MOV #120,R3 ; 3160
000310 060503 ADD R5,R3 ; DB,*
000312 004767 000000G JSR PC,$CMQRM
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 118
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (53)
000316 103011 BHIS 6$
000320 010346 MOV R3,-(SP)
000322 012746 100034 MOV #-77744,-(SP)
000326 012746 000002 MOV #2,-(SP)
000332 004767 000000G JSR PC,$STOP
000336 062706 000006 ADD #6,SP
000342 012700 000142 6$: MOV #142,R0 ; 3162
000346 060500 ADD R5,R0 ; DB,*
000350 016501 000124 MOV 124(R5),R1 ; *(DB),*
000354 004767 000000G JSR PC,$AC32
000360 012700 000152 MOV #152,R0 ; 3163
000364 060500 ADD R5,R0 ; DB,*
000366 004767 000000G JSR PC,$IC32
000372 005065 000124 CLR 124(R5) ; *(DB) 3164
000376 012700 100001 MOV #-77777,R0 ; 3165
000402 004767 175432 JSR PC,SCHEDULE.TRANSMIT
000406 032715 020000 7$: BIT #20000,(R5) ; *,DB 3168
000412 001405 BEQ 8$
000414 005765 000116 TST 116(R5) ; *(DB)
000420 001002 BNE 8$
000422 042715 020000 BIC #20000,(R5) ; *,DB 3170
000426 022626 8$: CMP (SP)+,(SP)+ ; 3080
000430 000207 RTS PC
; Routine Size: 141 words, Routine Base: $CODE$ + 6510
; Maximum stack depth per invocation: 6 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 119
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (54)
; 3173 routine T11DON (DB) : DTE_DB novalue =
; 3174
; 3175 !++
; 3176 ! FUNCTIONAL DESCRIPTION:
; 3177 !
; 3178 !
; 3179 ! FORMAL PARAMETERS:
; 3180 ! DB = address of DTE data base.
; 3181 !
; 3182 ! IMPLICIT INPUTS:
; 3183 ! None
; 3184 !
; 3185 ! IMPLICIT OUTPUTS:
; 3186 ! None
; 3187 !
; 3188 ! ROUTINE VALUE:
; 3189 ! COMPLETION CODES:
; 3190 ! None
; 3191 !
; 3192 ! SIDE EFFECTS:
; 3193 ! None
; 3194 !--
; 3195
; 3196 begin
; 3197 GET_DTE_DATA_BASE (DB)
; 3198 PHYSICAL_ADD (DB, D_RBA, .DB [D_RCT]);
; 3199
; 3200 if .block [.DB [D_REGISTER], $SUB_FIELD (TO11BC, TO11CM)] neq 0 or
; 3201 begin
; 3202 DTE_SET (.DB [D_REGISTER], DON11C, ERR11C);
; 3203 .block [.DB [D_REGISTER], TO11AD] neq .DB [$SUB_FIELD (D_RBA, PHYSICAL_LOW)]
; 3204 end
; 3205 then
; 3206 begin ! Incomplete transfer.
; P 3207 $NM_PLL_EVENT (4, .DB [D_LINE_ENTITY],
; 3208 PARAMETER_DEVICE_REGISTERS (.DB [D_REGISTER]));
; 3209 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 3210 COUNTER_INCREMENT (DB, D_RECEIVE_BA_MISMATCH);
; 3211 COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
; 3212 DEVICE_BROKEN (DB [D_TIM]);
; 3213 return;
; 3214 end;
; 3215
; 3216 begin
; 3217
; 3218 bind
; 3219 CCB = DB [D_RCB] : ref block field (C_FIELDS);
; 3220
; 3221 CCB [C_CNT] = .CCB [C_CNT] + .DB [D_RCT];
; 3222 end;
; 3223 DB [$SUB_FIELD (D_RQZ, CSIZE)] = .DB [$SUB_FIELD (D_RQZ, CSIZE)] - .DB [D_RCT];
; 3224 DB [$SUB_FIELD (D_RQZ, PSIZE)] = .DB [$SUB_FIELD (D_RQZ, PSIZE)] - .DB [D_RCT];
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 120
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (54)
; 3225 DB [D_RCT] = 0;
; 3226
; 3227 if .DB [$SUB_FIELD (D_RQZ, PSIZE)] neq 0
; 3228 then
; 3229 RECEIVE_SEGMENT (DB [D_TIM])
; 3230 else
; 3231 begin
; 3232
; 3233 bind
; 3234 CCB = DB [D_RCB] : ref block field (C_FIELDS);
; 3235
; 3236 DB [$SUB_FIELD (D_XST, RCV)] = 0;
; 3237 DEPMYH (DB [D_TIM], STATUS, DB [D_XST]);
; 3238 COUNTER_ADD (DB, D_BYTES_RECEIVED, .CCB [C_CNT]);
; 3239 COUNTER_INCREMENT (DB, D_DATA_BLOCKS_RECEIVED);
; 3240 SCHEDULE_RECEIVE (.CCB, DB [D_TIM]);
; 3241 DB [D_RCB] = 0;
; 3242 end;
; 3243
; 3244 if .DB [DF_FLUSHING_DTE] and (.DB [$SUB_FIELD (D_XQZ, CSIZE)] eql 0)
; 3245 then
; 3246 DB [DF_FLUSHING_DTE] = FALSE;
; 3247
; 3248 end; !of routine T11DON
.SBTTL T11DON
000000 010546 T11DON: MOV R5,-(SP) ; 3173
000002 005746 TST -(SP)
000004 010546 MOV R5,-(SP)
000006 012700 000116 MOV #116,R0 ; 3198
000012 060500 ADD R5,R0
000014 010046 MOV R0,-(SP)
000016 010500 MOV R5,R0
000020 016005 000114 MOV 114(R0),R5
000024 067605 000000 ADD @0(SP),R5
000030 016600 000002 MOV 2(SP),R0
000034 010560 000114 MOV R5,114(R0)
000040 005560 000112 ADC 112(R0)
000044 016001 000002 MOV 2(R0),R1 ; 3200
000050 032761 007777 177762 BIT #7777,-16(R1)
000056 001005 BNE 1$
000060 012711 000101 MOV #101,(R1) ; 3202
000064 026105 177766 CMP -12(R1),R5 ; 3203
000070 001442 BEQ 2$
000072 004767 000000G 1$: JSR PC,$NLBEG ; 3208
000076 004767 173730 JSR PC,PLL0
000102 012700 000604 MOV #604,R0
000106 016602 000002 MOV 2(SP),R2
000112 016201 000042 MOV 42(R2),R1
000116 004767 000000G JSR PC,$NLEND
000122 016605 000002 MOV 2(SP),R5 ; 3209
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 121
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (54)
000126 012700 100174 MOV #-77604,R0
000132 004767 175336 JSR PC,SEND.PERSISTENT.ERROR
000136 016600 000002 MOV 2(SP),R0 ; 3210
000142 052760 001000 000166 BIS #1000,166(R0)
000150 012701 000166 MOV #166,R1 ; 3211
000154 060001 ADD R0,R1
000156 010100 MOV R1,R0
000160 004767 000000G JSR PC,$IC8
000164 016605 000002 MOV 2(SP),R5 ; 3212
000170 004767 171306 JSR PC,DEVICE.BROKEN
000174 000522 BR 5$ ; 3206
000176 012700 000110 2$: MOV #110,R0 ; 3219
000202 066600 000002 ADD 2(SP),R0
000206 010066 000004 MOV R0,4(SP)
000212 011000 MOV (R0),R0 ; 3221
000214 067660 000000 000022 ADD @0(SP),22(R0)
000222 016600 000002 MOV 2(SP),R0 ; 3223
000226 167660 000000 000064 SUB @0(SP),64(R0)
000234 167660 000000 000066 SUB @0(SP),66(R0) ; 3224
000242 005076 000000 CLR @0(SP) ; 3225
000246 016600 000002 MOV 2(SP),R0 ; 3227
000252 005760 000066 TST 66(R0)
000256 001404 BEQ 3$
000260 010005 MOV R0,R5 ; 3229
000262 004767 174412 JSR PC,RECEIVE.SEGMENT
000266 000452 BR 4$ ; 3227
000270 016600 000002 3$: MOV 2(SP),R0 ; 3236
000274 142760 000001 000074 BICB #1,74(R0)
000302 012700 000072 MOV #72,R0 ; 3237
000306 066600 000002 ADD 2(SP),R0
000312 010003 MOV R0,R3
000314 016605 000002 MOV 2(SP),R5
000320 012702 000002 MOV #2,R2
000324 004767 171140 JSR PC,DEPMYH
000330 012701 000136 MOV #136,R1 ; 3238
000334 066601 000002 ADD 2(SP),R1
000340 010100 MOV R1,R0
000342 017602 000004 MOV @4(SP),R2
000346 016201 000022 MOV 22(R2),R1
000352 004767 000000G JSR PC,$AC32
000356 012701 000146 MOV #146,R1 ; 3239
000362 066601 000002 ADD 2(SP),R1
000366 010100 MOV R1,R0
000370 004767 000000G JSR PC,$IC32
000374 017604 000004 MOV @4(SP),R4 ; 3240
000400 016605 000002 MOV 2(SP),R5
000404 004767 174552 JSR PC,SCHEDULE.RECEIVE
000410 005076 000004 CLR @4(SP) ; 3241
000414 032776 020000 000002 4$: BIT #20000,@2(SP) ; 3244
000422 001407 BEQ 5$
000424 016600 000002 MOV 2(SP),R0
000430 005760 000100 TST 100(R0)
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 122
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (54)
000434 001002 BNE 5$
000436 042710 020000 BIC #20000,(R0) ; 3246
000442 062706 000006 5$: ADD #6,SP ; 3173
000446 012605 MOV (SP)+,R5
000450 000207 RTS PC
; Routine Size: 149 words, Routine Base: $CODE$ + 7142
; Maximum stack depth per invocation: 5 words
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 123
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (55)
; 3249 routine WTEXDP
; 3250
; 3251 !++
; 3252 ! FUNCTIONAL DESCRIPTION:
; 3253 !
; 3254 !
; 3255 ! FORMAL PARAMETERS:
; 3256 !
; 3257 (DB : ref block field (D_FIELDS),
; 3258 DTE : ref block field (DTE_FIELDS) volatile)
; 3259 !
; 3260 ! IMPLICIT INPUTS:
; 3261 ! None
; 3262 !
; 3263 ! IMPLICIT OUTPUTS:
; 3264 ! None
; 3265 !
; 3266 ! ROUTINE VALUE:
; 3267 !
; 3268 : DTE_DB_DTE =
; 3269 !
; 3270 ! SIDE EFFECTS:
; 3271 ! None
; 3272 !--
; 3273
; 3274 begin
; 3275
; 3276 local
; 3277 STATUS;
; 3278
; 3279 STATUS = 1536;
; 3280
; 3281 do
; 3282 begin
; 3283
; 3284 if .DTE [$SUB_FIELD (STAT11, DEXDON)]
; 3285 then
; 3286 begin
; 3287
; 3288 if not .DTE [$SUB_FIELD (STAT11, BPARER)]
; 3289 then
; 3290 STATUS = TRUE;
; 3291
; 3292 exitloop;
; 3293 end;
; 3294
; 3295 end
; 3296 while (STATUS = .STATUS - 1) neq FALSE;
; 3297
; 3298 .STATUS
; 3299 end; !of routine WTEXDP
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 124
X01560 30-Dec-1982 02:52:49 NETPKG:<DRIVERS>DTE.B16.9 (55)
.SBTTL WTEXDP
000000 012700 003000 WTEXDP: MOV #3000,R0 ; *,STATUS 3279
000004 132711 000004 1$: BITB #4,(R1) ; *,DTE 3284
000010 001406 BEQ 2$
000012 132711 000020 BITB #20,(R1) ; *,DTE 3288
000016 001004 BNE 3$
000020 012700 000001 MOV #1,R0 ; *,STATUS 3290
000024 000207 RTS PC ; 3286
000026 077012 2$: SOB R0,1$ ; STATUS,* 3296
000030 000207 3$: RTS PC ; 3249
; Routine Size: 13 words, Routine Base: $CODE$ + 7614
; Maximum stack depth per invocation: 0 words
; 3300 end
; 3301 eludom
; OTS external references
.GLOBL $STOP
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $PLIT$ 77 RO , D , LCL, REL, CON
; ...... 16 RW , D , LCL, REL, CON
; $CODE$ 2003 RO , I , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; NETPKG:<V3P0>MCBLIB.L16.7 372 95 25 0
; NETPKG:<MCB>XPORTX.L16.15 599 9 1 0
; NETPKG:<MCB>NMXLIB.L16.13 200 13 6 0
; NETPKG:<DRIVERS>DTEDAT.L16.2 244 209 85 0
; Size: 2003 code + 93 data words
; Run Time: 00:46.4
; Elapsed Time: 02:31.8
DTE 25-Jan-1983 10:04:51 TOPS-20 Bliss-16 3(552) Page 125
X01560
; Memory Used: 64 pages
; Compilation Complete