Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/drivers/dmc.lst
There are no other files named dmc.lst in the archive.
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 1
9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)
; 0001 module DMC ( ! Driver for DMC11
; 0002 ident = 'X04690',
; 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 DMC Driver
; 0031 !
; 0032 ! ABSTRACT:
; 0033 !
; 0034 ! This is the DLC process which services the DMC11 synchronous
; 0035 ! line interface.
; 0036 !
; 0037 ! ENVIRONMENT: MCB V3.0
; 0038 !
; 0039 ! AUTHOR: Alan D. Peckham CREATION DATE: 7-Apr-80
; 0040 !
; 0041 ! MODIFIED BY:
; 0042 !
; 0043 ! Maynard, 10-Feb-78: Version 1
; 0044 ! Maynard, 29-Feb-79: Version 3
; 0045 ! Alan D. Peckham, 7-Apr-80: Version 4
; 0046 ! 01 - Update to operate under MCB V3.0
; 0047 ! 02 - Check DS.MC properly in GET_PORT.
; 0048 ! Clear DS.MC after DMC is set up in CTLSTR.
; 0049 ! Make initialization handle D.XBFC properly.
; 0050 ! Correct queue address calculation in CTLSTP.
; 0051 ! Receive buffer lengths come from .RDBSZ, not C.CNT!
; 0052 ! Save the CTL/STP CCB while flushing the queues.
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 2
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)
; 0053 ! 03 - Do not copy transmit buffer if single segment message.
; 0054 ! 04 - Change call JMPs to CALLRs and add macro for debugging.
; 0055 ! 05 - Seperate DLC and DDM dispatch tables to avoid C.MOD bug.
; 0056 ! 06 - Put routines in alphabetical order.
; 0057 ! Eliminate CALLRs.
; 0058 ! Fix bit test in CTLSTP.
; 0059 ! Master clear DMC on fatal errors in CONTROL_OUT.
; 0060 ! Turn off output interrupts during interrupt service.
; 0061 ! Ignore output interrupt while DMC inactive.
; 0062 ! 07 - Insert SIGNALs for empty queues.
; 0063 ! 08 - Rewrite in BLISS and update for MCB V3.1.
; 0064 ! 09 - Add internal event logging.
; 0065 ! 10 - Map the data base and add Network Management code.
; 0066 ! 11 - Add Network Management event logging.
; 0067 ! 12 - Clean up current Network Management code.
; 0068 ! 13 - Signal on event logging buffer too small.
; 0069 ! 14 - Add long timer control.
; 0070 ! 15 - Compensate for UNWIND bug in condition handling.
; 0071 ! 16 - Process multiple output transfers during output interrupt.
; 0072 ! Allow master clear to fail.
; 0073 ! 17 - Fix interrupt vector assignment bug in DMCNMX.
; 0074 ! Allow number of receive buffers to be specified in CETAB.
; 0075 ! 18 - Temporarily remove RQI test in GET_PORT to allow lost
; 0076 ! RDYI recovery.
; 0077 ! 19 - Identify line and circuit to NMX in DMCNMX.
; 0078 ! 20 - Move BASE-IN and CONTROL-IN in test loop in SET_PORT.
; 0079 ! 21 - Argh! Create common interrupt service routine which
; 0080 ! processes both input and output requests.
; 0081 ! 22 - Streamline linkages.
; 0082 ! Do not SYNCH unless interrupt enable is on.
; 0083 ! 23 - Do not reset IEO during interrupt handling (no-no on DMR).
; 0084 ! Rewrite port handling code.
; 0085 ! 24 - Rework HALT command handling.
; 0086 ! Reset certain variables on CTL/STR.
; 0087 ! 25 - Flush transmits before waiting for the cows to come home in CTLSTP.
; 0088 ! 26 - Hunting for bugs. Rework timer code.
; 0089 ! Rework CCB control function handling.
; 0090 ! 27 - Experimental bug fixes to look for shutdown bug.
; 0091 ! 29 - Correct event logging bugs.
; 0092 ! 30 - Add code to record program flow of shutdown.
; 0093 ! Verify message lengths by examination in RECEIVE_OUT.
; 0094 ! Verify receive buffer addresses on RECEIVE_OUT.
; 0095 ! 31 - Remove message length verification.
; 0096 ! Add transmit buffer address verification in TRANSMIT_OUT.
; 0097 ! 32 - Fix transmit buffer address verification in TRANSMIT_OUT.
; 0098 ! Optimize some generated code.
; 0099 ! 33 - Close window in CTL/STP/STR which allowed CTL deadlock.
; 0100 ! 34 - Do not set function code during port load in SERVICE_DMC
; 0101 ! in order to avoid clearing RDI.
; 0102 ! 35 - Remove DLC interface.
; 0103 ! 36 - Add controller loopback support.
; 0104 ! 37 - Add 96+5/13 event for NM line attention.
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 3
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)
; 0105 ! 38 - Distinguish between overrun due to no buffer available
; 0106 ! and due to transmission threshold.
; 0107 ! 39 - Finish DLC interface removal.
; 0108 ! Add parameter to SHOW LINE CHARACTERISTICS.
; 0109 ! 40 - Do NOT send state when there is no circuit owner.
; 0110 ! 41 - Do not set half duplex when in maintenance mode.
; 0111 ! 42 - Add DMR line/device name display and support for DMR process.
; 0112 ! 43 - Adapt to using new UNIBUS address conversion routines.
; 0113 ! Adjust buffer address checking for DMC bug.
; 0114 ! 44 - Eliminate extra OFF notification in CURRENT_STATUS.
; 0115 ! Optimize CHECK_BA.
; 0116 ! 45 - Add device and performance error counter support.
; 0117 ! Fix control CCB handling - CTLNXT had not been updated.
; 0118 ! 46 - Do not declare interrupt lost in TIMLTM if synchronization
; 0119 ! in progress.
; 0120 ! 47 - Turn off FLUSHING_DMC when DMC shuts down.
; 0121 ! 48 - More work on non-existent device notification.
; 0122 ! 49 - Cut down on extraneous functionality to save space.
; 0123 ! 50 - Set threshold errors to display circuit counters.
; 0124 ! 51 - Handle counters by copying when zeroed and using differences
; 0125 ! for reporting.
; 0126 ! 52 - Add "counters zeroed" event.
; 0127 ! 53 - Remove "counters zeroed" event.
; 0128 ! 54 - Update to NM V3.0.0 .
; 0129 ! 55 - Set default DMC receive buffers to 7 in DMCINI.
; 0130 ! Add MAXIMUM RECEIVE BUFFERS parameter support in DMCNMX.
; 0131 ! 56 - Schedule DC_CONTROL_IN after ZERO_x_COUNTERS in SET_INPUT_REQUEST
; 0132 ! if DMC is only DD_HALTED.
; 0133 ! 57 - Disable TRANSMIT_THRESHOLD_ERROR notification on O_RUN.
; 0134 ! Do not force HALT state for ZERO_COUNTERS.
; 0135 ! 58 - Support new system specific line counters.
; 0136 ! 59 - De-commit half-duplex.
; 0137 ! 60 - Poke our DEVTYP into any MOP message requiring it.
; 0138 ! 61 - Handle change in NMX interface in DMCINI.
; 0139 ! 62 - Re-enable half-duplex code.
; 0140 ! 63 - Disable time out for first transmit. This is because protocol
; 0141 ! may not have been established yet.
; 0142 ! 64 - Make sure flag is cleared at appropriate places.
; 0143 ! 65 - Fix display of DMC counter #1021 in DMCNMX.
; 0144 ! 66 - Modify CTLSTR to return the CIRCUIT COST to XPT in C_PRM1.
; 0145 ! 67 - We got the meaning of the timer bit in a control-in wrong -
; 0146 ! the 1 and 3 second timers were reversed.
; 0147 ! 68 - Fix TIMLTM to do a transmit timeout on maintenance messages.
; 0148 !
; 0149 ! Dennis Brannon, 23-Sep-83: Version 4 autopatch tape 7
; 0150 ! 69 - Fix CONTROL_OUT to reinitialize DMR/DMC after it turns the
; 0151 ! circuit off when a DDCMP START is received.
; 0152 !--
; 0153 !
; 0154 ! INCLUDE FILES:
; 0155 !
; 0156
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 4
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)
; 0157 library 'MCBLIB';
; 0158
; 0159 library 'XPORTX';
; 0160
; 0161 $SHOW (NONE)
; 0162 require 'DLLLIB';
; 0416
; 0417 library 'NMXLIB';
; 0418
; 0419 library 'DMCDAT';
; 0420
; 0421 !
; 0422 ! TABLE OF CONTENTS:
; 0423 !
; 0424
; 0425 linkage
; 0426 CBIT_LINKAGE = jsr (register = 4) : clearstack valuecbit,
; 0427 DMC_CCB_DB = jsr (register = 4, register = 5) : nopreserve (4),
; 0428 DMC_CCB_DB_STS = jsr (register = 4, register = 5, register = 0) :
; 0429 nopreserve (4),
; 0430 DMC_DB = jsr (register = 5) : nopreserve (0, 1, 2, 3, 4),
; 0431 DMC_DB_BIAS_ADDR = jsr (register = 5, register = 2, register = 3) :
; 0432 nopreserve (0, 2, 3),
; 0433 DMC_DB_CCB = jsr (register = 5, register = 4) : nopreserve (4),
; 0434 DMC_DB_ERR = jsr (register = 5, register = 3) : nopreserve (3, 4),
; 0435 DMC_DB_LOW_HIGH = jsr (register = 5) : nopreserve (2, 3, 4),
; 0436 DMC_REG = jsr (register = 1) : nopreserve (1),
; 0437 DMC_DB_STS = jsr (register = 5, register = 3) : nopreserve (3, 4);
; 0438
; 0439 forward routine
; 0440 BASE_IN : DMC_DB_LOW_HIGH novalue,
; 0441 CHECK_BA : DMC_DB_BIAS_ADDR,
; 0442 CONTROL_OUT : DMC_DB_ERR novalue,
; 0443 CTLNXT : LINKAGE_DB novalue,
; 0444 CTLSTP : MCB_DB_CCB novalue,
; 0445 CTLSTR : MCB_DB_CCB novalue,
; 0446 CURRENT_STATUS : LINKAGE_DB,
; 0447 DEVICE_SHUT_DOWN : LINKAGE_DB novalue,
; 0448 DLLINI : DMC_DB_CCB novalue,
; 0449 DLLMOP : DMC_DB_CCB novalue,
; 0450 DLLSTP : DMC_DB_CCB novalue,
; 0451 DMC_INTERRUPT : MCB_INTERRUPT novalue,
; 0452 DMC_SYNCHRONIZE : MCB_DB novalue,
; 0453 DMCCTL : MCB_DB_CCB_MOD novalue,
; 0454 DMCDB : CALL$ novalue,
; 0455 DMCRCE : MCB_DB_CCB novalue,
; 0456 DMCTIM : MCB_DB_MOD novalue,
; 0457 DMCXME : MCB_DB_CCB_MOD novalue,
; 0458 FLUSH_QUEUES : DMC_DB novalue,
; 0459 MASTER_CLEAR : LINKAGE_DB,
; 0460 OUTPUT_TRANSFER : LINKAGE_DB novalue,
; 0461 PARAMETER_DEVICE_REGISTERS : DMC_REG novalue,
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 5
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)
; 0462 QUEUE_TRANSMIT : DMC_DB_CCB novalue,
; 0463 RECEIVE_IN : DMC_DB_LOW_HIGH novalue,
; 0464 RECEIVE_OUT : DMC_DB_LOW_HIGH novalue,
; 0465 RESET_TIMER : LINKAGE_DB novalue,
; 0466 SCHEDULE_PERSISTENT_AST : DMC_CCB_DB novalue,
; 0467 SCHEDULE_RECEIVE : DMC_CCB_DB novalue,
; 0468 SCHEDULE_STATE_AST : DMC_CCB_DB novalue,
; 0469 SCHEDULE_TRANSIENT_AST : DMC_CCB_DB novalue,
; 0470 SCHEDULE_TRANSMIT : DMC_CCB_DB_STS novalue,
; 0471 SEND_PERSISTENT_ERROR : DMC_DB_STS novalue,
; 0472 SEND_STATE : DMC_DB novalue,
; 0473 SEND_TRANSIENT_ERROR : DMC_DB_STS novalue,
; 0474 SERVICE_DMC : MCB_DB novalue,
; 0475 SET_INPUT_REQUEST : LINKAGE_DB novalue,
; 0476 SET_PORT : LINKAGE_DB novalue,
; 0477 TIMCCB : MCB_DB_CCB novalue,
; 0478 TIMLTM : MCB_DB novalue,
; 0479 TIMPIN : MCB_DB novalue,
; 0480 TIMPWF : MCB_DB novalue,
; 0481 TIMRDB : MCB_DB_CCB novalue,
; 0482 TRANSMIT_IN : DMC_DB_LOW_HIGH novalue,
; 0483 TRANSMIT_OUT : DMC_DB_LOW_HIGH novalue,
; 0484 ZERO_CIRCUIT_COUNTERS : LINKAGE_DB novalue,
; 0485 ZERO_LINE_COUNTERS : LINKAGE_DB novalue;
; 0486
; 0487 global bind routine
; 0488 DMCIN = DMC_INTERRUPT : MCB_INTERRUPT novalue,
; 0489 DMCOUT = DMC_INTERRUPT : MCB_INTERRUPT novalue;
; 0490
; 0491 !
; 0492 ! MACROS:
; 0493 !
; 0494
; 0495 macro
; M 0496 CHANGE_PROTOCOL_STATE (DUMMY, STATE, REASON) =
; M 0497 begin
; M 0498 literal LCL = 0, RMT = 1;
; M 0499 $NM_DLL_EVENT (REASON, .DB [D_CIRCUIT_ENTITY],
; M 0500 PARAMETER_C_1 (0, DB [D_PROTOCOL_STATE]),
; M 0501 DB [D_PROTOCOL_STATE] = STATE,
; M 0502 PARAMETER_C_1 (1, DB [D_PROTOCOL_STATE]));
; M 0503 SEND_STATE (DB [D_TIM]);
; 0504 end %;
; 0505
; 0506 macro
; M 0507 FLUSH_QUEUE (QUEUE, RETURN_CALL) =
; M 0508 while 1 eql 1 do
; M 0509 begin
; M 0510
; M 0511 local
; M 0512 CCB;
; M 0513
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 6
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)
; M 0514 if not CMQRM$ (QUEUE, CCB) then exitloop;
; M 0515
; M 0516 RETURN_CALL (.CCB %if not %null (%remaining) %then , %remaining %fi);
; 0517 end %;
; 0518
; 0519 !
; 0520 ! EQUATED SYMBOLS:
; 0521 !
; 0522
; 0523 literal
; 0524 TRUE = 1 EQL 1,
; 0525 FALSE = 1 EQL 0,
; 0526 NO_OPERATION = 0;
; 0527
; 0528 macro
; 0529 C_HANDLE = %fieldexpand (C_LIX, 0), 0, 16, 0 %;
; 0530
; 0531 global literal
; 0532 %name ('DD.INI') = DD_CLEARED,
; 0533 %name ('D.LEN') = %fieldexpand (D_BUF, 0)^1;
; 0534
; 0535 !
; 0536 ! OWN STORAGE:
; 0537 !
; 0538
; 0539 external routine
; 0540 $DSPCR : novalue;
; 0541
; 0542 bind
; P 0543 DMC_TABLE = TABLE$ ($DSPCR, FC_CCP,
; P 0544 (FC_XME, DMCXME), ! Transmit enable
; P 0545 (FC_RCE, DMCRCE), ! Receive enable
; P 0546 (FC_CTL, DMCCTL), ! Control enable
; 0547 (FC_TIM, DMCTIM)); ! Timeout
; 0548
; 0549
; P 0550 $MCB_PROCESS (
; P 0551 NAME = DMC, ! Process name
; 0552 DLC_DISPATCH = DMC_TABLE) ! DLC dispatch vector
; 0553 !
; 0554 ! EXTERNAL REFERENCES:
; 0555 !
; 0556
; 0557 external routine
; 0558 DMCDBI : novalue,
; 0559 DMCDVI,
; 0560 DMCNM : MCB_DB_CCB novalue,
; 0561 DMCNMI;
; 0562
; 0563 external
; 0564 MCB$GA_PROCESS_DISPATCH,
; 0565 MCB$GAW_PROCESS_DATA_BASE : vector [2],
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 7
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (1)
; 0566 MCB$GW_PROCESS_HANDLE,
; 0567 MCB$GW_RDB_SIZE; ! Size of RDB buffer.
; 0568
; 0569 bind
; 0570 DB_BIAS = MCB$GAW_PROCESS_DATA_BASE [0];
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 8
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (2)
; 0571 routine BASE_IN (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
; 0572
; 0573 !++
; 0574 ! FUNCTIONAL DESCRIPTION:
; 0575 !
; 0576 !
; 0577 ! FORMAL PARAMETERS:
; 0578 ! DB = address of DMC data base.
; 0579 !
; 0580 ! IMPLICIT INPUTS:
; 0581 ! None
; 0582 !
; 0583 ! IMPLICIT OUTPUTS:
; 0584 ! None
; 0585 !
; 0586 ! ROUTINE VALUE:
; 0587 ! COMPLETION CODES:
; 0588 ! None
; 0589 !
; 0590 ! SIDE EFFECTS:
; 0591 ! None
; 0592 !--
; 0593
; 0594 begin
; 0595 GET_DMC_DATA_BASE (DB)
; 0596
; 0597 local
; 0598 TEMP;
; 0599
; 0600 $MCB_CONVERT_TO_UBA_ADDRESS ((.DB_BIAS, DB [D_LNTB]), .LOW, TEMP);
; 0601 .HIGH = (TEMP = .TEMP^%fieldexpand (BA_HIGH, 1));
; 0602 end; !of routine BASE_IN
.TITLE DMC
.IDENT /X04690/
000000 .PSECT ......, D
000000 015413 HEADER: .RAD50 /DMC/
000002 000403 .WORD 403
000004 000000 .WORD 0
000006 000000 .WORD 0
000010 000000 .WORD 0
000012 000000G .WORD .DSPCR
000014 000000' .WORD DMC.TABLE
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
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 9
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (2)
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 DMCXME
000004 000000V .WORD DMCRCE
000006 000000G .WORD $DSPCR
000010 000000V .WORD DMCCTL
000012 000000V .WORD DMCTIM
000014 000000G .WORD $DSPCR
000016 000000G .WORD $DSPCR
000020 000000G .WORD $DSPCR
000022 000000G .WORD $DSPCR
.GLOBL $DSPCR, .DSPCR, MCB$V0, MCB$V1
.GLOBL DMCDBI, DMCDVI, DMCNM, DMCNMI
.GLOBL .CRDSP, .CRDAT, .CRPIX, .RDBSZ
.GLOBL $PHY18
000005 DD.INI== 5
000616 D.LEN== 616
000000' DMC.TABLE= P.AAA
.SBTTL BASE.IN
000000 .PSECT $CODE$, RO
000000 010546 BASE.IN:MOV R5,-(SP) ; 0571
000002 062705 000154 ADD #154,R5 ; *,DB 0600
000006 016702 000000G MOV .CRDAT,R2
000012 010503 MOV R5,R3
000014 004767 000000G JSR PC,$PHY18
000020 010376 000006 MOV R3,@6(SP) ; *,LOW
000024 072227 000016 ASH #16,R2 ; 0601
000030 010276 000004 MOV R2,@4(SP) ; TEMP,HIGH
000034 012605 MOV (SP)+,R5 ; 0571
000036 000207 RTS PC
; Routine Size: 16 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 2 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 10
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (3)
; 0603 routine CHECK_BA (DB, BIAS, ADDR) : DMC_DB_BIAS_ADDR =
; 0604
; 0605 !++
; 0606 ! FUNCTIONAL DESCRIPTION:
; 0607 !
; 0608 !
; 0609 ! FORMAL PARAMETERS:
; 0610 ! ?
; 0611 !
; 0612 ! IMPLICIT INPUTS:
; 0613 ! None
; 0614 !
; 0615 ! IMPLICIT OUTPUTS:
; 0616 ! None
; 0617 !
; 0618 ! ROUTINE VALUE:
; 0619 ! COMPLETION CODES:
; 0620 ! None
; 0621 !
; 0622 ! SIDE EFFECTS:
; 0623 ! None
; 0624 !--
; 0625
; 0626 begin
; 0627 GET_DMC_DATA_BASE (DB)
; 0628
; 0629 bind
; 0630 BUF = DB [D_OUTPUT_DATA] : block field (DMC_FIELDS);
; 0631
; 0632 local
; 0633 HIGH,
; 0634 LOW;
; 0635
; 0636 if .ADDR eqla 0 then return TRUE;
; 0637
; 0638 $MCB_CONVERT_TO_UBA_ADDRESS ((.BIAS, .ADDR), LOW, HIGH);
; 0639
; 0640 if .LOW nequ .BUF [$SUB_FIELD (SEL4, BA_LOW)] then return FALSE;
; 0641
; 0642 if not .DB [DF_DMR] then return TRUE;
; 0643
; 0644 if .HIGH eqlu .BUF [$SUB_FIELD (SEL6, BA_HIGH)] then return TRUE;
; 0645
; 0646 FALSE
; 0647 end; ! of routine CHECK_BA
.SBTTL CHECK.BA
000000 005703 CHECK.BA:
TST R3 ; ADDR 0636
000002 001422 BEQ 1$
000004 004767 000000G JSR PC,$PHY18 ; 0638
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 11
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (3)
000010 020365 000026 CMP R3,26(R5) ; LOW,*(DB) 0640
000014 001020 BNE 2$
000016 032765 010000 000032 BIT #10000,32(R5) ; *,*(DB) 0642
000024 001411 BEQ 1$
000026 016503 000030 MOV 30(R5),R3 ; *(DB),* 0644
000032 072327 177762 ASH #-16,R3
000036 042703 177774 BIC #177774,R3
000042 010200 MOV R2,R0 ; HIGH,*
000044 020003 CMP R0,R3
000046 001003 BNE 2$
000050 012700 000001 1$: MOV #1,R0
000054 000207 RTS PC
000056 005000 2$: CLR R0 ; 0603
000060 000207 RTS PC
; Routine Size: 25 words, Routine Base: $CODE$ + 0040
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 12
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)
; 0648 routine CONTROL_OUT (DB, ERROR) : DMC_DB_ERR novalue =
; 0649
; 0650 !++
; 0651 ! FUNCTIONAL DESCRIPTION:
; 0652 !
; 0653 !
; 0654 ! FORMAL PARAMETERS:
; 0655 ! DB = address of DMC data base.
; 0656 !
; 0657 ! IMPLICIT INPUTS:
; 0658 ! None
; 0659 !
; 0660 ! IMPLICIT OUTPUTS:
; 0661 ! None
; 0662 !
; 0663 ! ROUTINE VALUE:
; 0664 ! COMPLETION CODES:
; 0665 ! None
; 0666 !
; 0667 ! SIDE EFFECTS:
; 0668 ! None
; 0669 !--
; 0670
; 0671 begin
; 0672 GET_DMC_DATA_BASE (DB)
; 0673
; 0674 map
; 0675 ERROR : block [1] field (DMC_FIELDS);
; 0676
; 0677 if .ERROR [O_RUN] ! Buffer not available
; 0678 then
; 0679 begin
; 0680
; 0681 if FALSE %(.DB [D_ASSIGNED_RECEIVE_COUNT] neq 0)%
; 0682 then
; 0683 SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_TRANSMIT_THRESHOLD);
; 0684
; 0685 return;
; 0686 end;
; 0687
; 0688 if .ERROR [DATA_CK] ! Non-fatal error
; 0689 then
; 0690 begin
; 0691
; 0692 external routine
; 0693 PARAMETER_CIRCUIT_COUNTERS : LINKAGE_DB novalue;
; 0694
; P 0695 $NM_DLL_EVENT (4, .DB [D_CIRCUIT_ENTITY], ! Transmit Threshold Error
; 0696 PARAMETER_CIRCUIT_COUNTERS (DB [D_TIM]));
; 0697
; 0698 SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_RECEIVE_THRESHOLD);
; 0699 return;
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 13
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)
; 0700 end;
; 0701
; 0702 if .ERROR [DISC] ! Non-fatal error
; 0703 then
; 0704 begin
; 0705
; 0706 local
; 0707 STATE;
; 0708
; 0709 STATE = 0;
; P 0710 $NM_PLL_EVENT (0, .DB [D_LINE_ENTITY], ! Data Set Ready Transition
; 0711 PARAMETER_C_1 (1, STATE));
; 0712 return;
; 0713 end;
; 0714
; 0715 if .ERROR [TIME_OUT] ! Non-fatal error
; 0716 then
; 0717 begin
; 0718
; 0719 external routine
; 0720 PARAMETER_CIRCUIT_COUNTERS : LINKAGE_DB novalue;
; 0721
; P 0722 $NM_DLL_EVENT (3, .DB [D_CIRCUIT_ENTITY], ! Transmit Threshold Error
; 0723 PARAMETER_CIRCUIT_COUNTERS (DB [D_TIM]));
; 0724
; 0725 SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_TRANSMIT_THRESHOLD);
; 0726 return;
; 0727 end;
; 0728
; 0729 if .ERROR [PROC_ERR] and .DB [DF_FLUSHING_DMC] ! Procedure error
; 0730 then
; 0731 begin
; 0732 DB [DF_FLUSHING_DMC] = FALSE;
; 0733 DB [D_DEVICE_STATE] = DD_HALTED;
; 0734 return;
; 0735 end;
; 0736
; 0737 if .ERROR [STR_RCVD]
; 0738 then
; 0739 begin
; 0740
; 0741 if .DB [D_PROTOCOL_STATE] eqlu DS_MAINTENANCE
; 0742 then
; 0743 $NM_DLL_EVENT (2, .DB [D_CIRCUIT_ENTITY]);
; 0744
; 0745 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_START_RECEIVED);
; 0746 DEVICE_SHUT_DOWN (DB [D_TIM]);
; 0747 SET_PORT (DB [D_TIM]);
; 0748 return;
; 0749 end;
; 0750
; 0751 if .ERROR [DATA_LOST]
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 14
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)
; 0752 then
; 0753 begin
; P 0754 $NM_DLL_EVENT (9, .DB [D_CIRCUIT_ENTITY],
; 0755 PARAMETER_DU_2 (8, MCB$GW_RDB_SIZE));
; 0756 DEVICE_SHUT_DOWN (DB [D_TIM]);
; 0757 return;
; 0758 end;
; 0759
; 0760 if .ERROR [MNT_RCVD] ! Fatal error
; 0761 then
; 0762 begin
; 0763 $NM_DLL_EVENT (96^6 + 13, .DB [D_CIRCUIT_ENTITY]);
; 0764 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_MAINTENANCE_RECEIVED);
; 0765 DEVICE_SHUT_DOWN (DB [D_TIM]);
; 0766 return;
; 0767 end;
; 0768
; 0769 if .ERROR [NXM] ! Fatal error
; 0770 then
; 0771 begin
; P 0772 $NM_PLL_EVENT (3, .DB [D_LINE_ENTITY], ! Memory Access Error
; 0773 PARAMETER_DEVICE_REGISTERS (DB [D_OUTPUT_DATA]));
; 0774 COUNTER_INCREMENT (DB, D_NXM_TO_DEVICE);
; 0775 COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
; 0776 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 0777 DEVICE_SHUT_DOWN (DB [D_TIM]);
; 0778 return;
; 0779 end;
; 0780
; P 0781 $NM_PLL_EVENT (4, .DB [D_LINE_ENTITY],
; 0782 PARAMETER_DEVICE_REGISTERS (DB [D_OUTPUT_DATA]));
; 0783 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 0784
; 0785 if .ERROR [PROC_ERR]
; 0786 then
; 0787 begin
; 0788 COUNTER_INCREMENT (DB, D_PROCEDURE_ERROR);
; 0789 COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
; 0790 DEVICE_SHUT_DOWN (DB [D_TIM]);
; 0791 return;
; 0792 end;
; 0793
; 0794 COUNTER_INCREMENT (DB, D_INVALID_REGISTER_CONTENTS);
; 0795 COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
; 0796 MASTER_CLEAR (DB [D_TIM]);
; 0797 end; !of routine CONTROL_OUT
.GLOBL CKCTRS, $NLBEG, $NLEND, $DPC1
.GLOBL $DPDU2, $IC8
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 15
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)
.SBTTL CONTROL.OUT
000000 010146 CONTROL.OUT:
MOV R1,-(SP) ; 0648
000002 010246 MOV R2,-(SP)
000004 010546 MOV R5,-(SP)
000006 010302 MOV R3,R2 ; *,ERROR
000010 010546 MOV R5,-(SP)
000012 032702 000004 BIT #4,R2 ; *,ERROR 0677
000016 001177 BNE 9$ ; 0679
000020 032702 000001 BIT #1,R2 ; *,ERROR 0688
000024 001420 BEQ 1$
000026 004767 000000G JSR PC,$NLBEG ; 0696
000032 011605 MOV (SP),R5
000034 004767 000000G JSR PC,CKCTRS
000040 012700 000504 MOV #504,R0
000044 011603 MOV (SP),R3
000046 016301 000100 MOV 100(R3),R1
000052 004767 000000G JSR PC,$NLEND
000056 011605 MOV (SP),R5 ; 0698
000060 012703 100110 MOV #-77670,R3
000064 000446 BR 3$
000066 032702 000100 1$: BIT #100,R2 ; *,ERROR 0702
000072 001421 BEQ 2$
000074 005001 CLR R1 ; STATE 0709
000076 004767 000000G JSR PC,$NLBEG ; 0711
000102 012746 000001 MOV #1,-(SP)
000106 110100 MOVB R1,R0 ; STATE,*
000110 004767 000000G JSR PC,$DPC1
000114 012700 000600 MOV #600,R0
000120 016603 000002 MOV 2(SP),R3
000124 016301 000102 MOV 102(R3),R1
000130 004767 000000G JSR PC,$NLEND
000134 000527 BR 8$ ; 0702
000136 032702 000002 2$: BIT #2,R2 ; *,ERROR 0715
000142 001422 BEQ 4$
000144 004767 000000G JSR PC,$NLBEG ; 0723
000150 011605 MOV (SP),R5
000152 004767 000000G JSR PC,CKCTRS
000156 012700 000503 MOV #503,R0
000162 011603 MOV (SP),R3
000164 016301 000100 MOV 100(R3),R1
000170 004767 000000G JSR PC,$NLEND
000174 011605 MOV (SP),R5 ; 0725
000176 012703 100100 MOV #-77700,R3
000202 004767 000000V 3$: JSR PC,SEND.TRANSIENT.ERROR
000206 000503 BR 9$ ; 0717
000210 032702 001000 4$: BIT #1000,R2 ; *,ERROR 0729
000214 001414 BEQ 5$
000216 032776 010000 000000 BIT #10000,@0(SP)
000224 001410 BEQ 5$
000226 042776 010000 000000 BIC #10000,@0(SP) ; 0732
000234 011600 MOV (SP),R0 ; 0733
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 16
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)
000236 112760 000001 000040 MOVB #1,40(R0)
000244 000464 BR 9$ ; 0731
000246 105702 5$: TSTB R2 ; ERROR 0737
000250 100032 BPL 7$
000252 011600 MOV (SP),R0 ; 0741
000254 126027 000034 000004 CMPB 34(R0),#4
000262 001011 BNE 6$
000264 004767 000000G JSR PC,$NLBEG ; 0743
000270 012700 000502 MOV #502,R0
000274 011603 MOV (SP),R3
000276 016301 000100 MOV 100(R3),R1
000302 004767 000000G JSR PC,$NLEND
000306 011605 6$: MOV (SP),R5 ; 0745
000310 012703 100130 MOV #-77650,R3
000314 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000320 011605 MOV (SP),R5 ; 0746
000322 004767 000000V JSR PC,DEVICE.SHUT.DOWN
000326 011605 MOV (SP),R5 ; 0747
000330 004767 000000V JSR PC,SET.PORT
000334 000575 BR 16$ ; 0739
000336 032702 000020 7$: BIT #20,R2 ; *,ERROR 0751
000342 001426 BEQ 10$
000344 004767 000000G JSR PC,$NLBEG ; 0755
000350 012746 000010 MOV #10,-(SP)
000354 016700 000000G MOV .RDBSZ,R0
000360 004767 000000G JSR PC,$DPDU2
000364 012700 000511 MOV #511,R0
000370 016603 000002 MOV 2(SP),R3
000374 016301 000100 MOV 100(R3),R1
000400 004767 000000G JSR PC,$NLEND
000404 016605 000002 MOV 2(SP),R5 ; 0756
000410 004767 000000V JSR PC,DEVICE.SHUT.DOWN
000414 005726 8$: TST (SP)+ ; 0751
000416 000544 9$: BR 16$ ; 0753
000420 032702 000010 10$: BIT #10,R2 ; *,ERROR 0760
000424 001415 BEQ 11$
000426 004767 000000G JSR PC,$NLBEG ; 0763
000432 012700 014515 MOV #14515,R0
000436 011603 MOV (SP),R3
000440 016301 000100 MOV 100(R3),R1
000444 004767 000000G JSR PC,$NLEND
000450 011605 MOV (SP),R5 ; 0764
000452 012703 100142 MOV #-77636,R3
000456 000437 BR 12$
000460 032702 000400 11$: BIT #400,R2 ; *,ERROR 0769
000464 001437 BEQ 13$
000466 004767 000000G JSR PC,$NLBEG ; 0773
000472 011605 MOV (SP),R5
000474 062705 000022 ADD #22,R5
000500 010501 MOV R5,R1
000502 004767 000000V JSR PC,PLL0
000506 012700 000603 MOV #603,R0
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 17
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (4)
000512 011603 MOV (SP),R3
000514 016301 000102 MOV 102(R3),R1
000520 004767 000000G JSR PC,$NLEND
000524 011600 MOV (SP),R0 ; 0774
000526 052760 004000 000152 BIS #4000,152(R0)
000534 012701 000152 MOV #152,R1 ; 0775
000540 060001 ADD R0,R1
000542 010100 MOV R1,R0
000544 004767 000000G JSR PC,$IC8
000550 011605 MOV (SP),R5 ; 0776
000552 012703 100174 MOV #-77604,R3
000556 004767 000000V 12$: JSR PC,SEND.PERSISTENT.ERROR
000562 000441 BR 14$ ; 0777
000564 004767 000000G 13$: JSR PC,$NLBEG ; 0782
000570 011605 MOV (SP),R5
000572 062705 000022 ADD #22,R5
000576 010501 MOV R5,R1
000600 004767 000000V JSR PC,PLL0
000604 012700 000604 MOV #604,R0
000610 011603 MOV (SP),R3
000612 016301 000102 MOV 102(R3),R1
000616 004767 000000G JSR PC,$NLEND
000622 011605 MOV (SP),R5 ; 0783
000624 012703 100174 MOV #-77604,R3
000630 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000634 032702 001000 BIT #1000,R2 ; *,ERROR 0785
000640 001416 BEQ 15$
000642 011600 MOV (SP),R0 ; 0788
000644 052760 100000 000152 BIS #100000,152(R0)
000652 012701 000152 MOV #152,R1 ; 0789
000656 060001 ADD R0,R1
000660 010100 MOV R1,R0
000662 004767 000000G JSR PC,$IC8
000666 011605 14$: MOV (SP),R5 ; 0790
000670 004767 000000V JSR PC,DEVICE.SHUT.DOWN
000674 000415 BR 16$ ; 0787
000676 011600 15$: MOV (SP),R0 ; 0794
000700 052760 000400 000152 BIS #400,152(R0)
000706 012701 000152 MOV #152,R1 ; 0795
000712 060001 ADD R0,R1
000714 010100 MOV R1,R0
000716 004767 000000G JSR PC,$IC8
000722 011605 MOV (SP),R5 ; 0796
000724 004767 000000V JSR PC,MASTER.CLEAR
000730 005726 16$: TST (SP)+ ; 0648
000732 012605 MOV (SP)+,R5
000734 012602 MOV (SP)+,R2
000736 012601 MOV (SP)+,R1
000740 000207 RTS PC
; Routine Size: 241 words, Routine Base: $CODE$ + 0122
; Maximum stack depth per invocation: 7 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 18
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (5)
; 0798 routine CTLNXT (DB) : LINKAGE_DB novalue =
; 0799
; 0800 !++
; 0801 ! FUNCTIONAL DESCRIPTION:
; 0802 !
; 0803 !
; 0804 ! FORMAL PARAMETERS:
; 0805 ! DB = address of DMC data base.
; 0806 !
; 0807 ! IMPLICIT INPUTS:
; 0808 ! None
; 0809 !
; 0810 ! IMPLICIT OUTPUTS:
; 0811 ! None
; 0812 !
; 0813 ! ROUTINE VALUE:
; 0814 ! COMPLETION CODES:
; 0815 ! None
; 0816 !
; 0817 ! SIDE EFFECTS:
; 0818 ! None
; 0819 !--
; 0820
; 0821 begin
; 0822 GET_DMC_DATA_BASE (DB)
; 0823
; 0824 local
; 0825 CCB : ref block field (C_FIELDS);
; 0826
; 0827 DB [DF_CTL] = FALSE;
; 0828
; 0829 if not $MCB_DEQUEUE_CCB (DB [D_PENDING_CONTROLS], CCB) then return;
; 0830
; 0831 CCB [C_FNC] = FC_CCP;
; 0832 CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
; 0833 $MCB_SCHEDULE_CCB (.CCB);
; 0834 end; !of routine CTLNXT
.GLOBL $CMQRM, $SCHED
.SBTTL CTLNXT
000000 004167 000000G CTLNXT: JSR R1,$SAVE4 ; 0798
000004 042765 040000 000032 BIC #40000,32(R5) ; *,*(DB) 0827
000012 010500 MOV R5,R0 ; DB,* 0829
000014 062700 000072 ADD #72,R0
000020 010003 MOV R0,R3
000022 004767 000000G JSR PC,$CMQRM
000026 103411 BCS 1$
000030 112764 000022 000012 MOVB #22,12(R4) ; *,*(CCB) 0831
000036 004767 000000V JSR PC,CURRENT.STATUS ; 0832
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 19
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (5)
000042 010064 000014 MOV R0,14(R4) ; *,*(CCB)
000046 004767 000000G JSR PC,$SCHED ; 0833
000052 000207 1$: RTS PC ; 0798
; Routine Size: 22 words, Routine Base: $CODE$ + 1064
; Maximum stack depth per invocation: 6 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 20
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (6)
; 0835 routine CTLSTP
; 0836
; 0837 !++
; 0838 ! FUNCTIONAL DESCRIPTION:
; 0839 !
; 0840 !
; 0841 ! FORMAL PARAMETERS:
; 0842 !
; 0843 (DB : ref block field (D_FIELDS),
; 0844 CCB : ref block field (C_FIELDS))
; 0845 !
; 0846 ! IMPLICIT INPUTS:
; 0847 ! None
; 0848 !
; 0849 ! IMPLICIT OUTPUTS:
; 0850 ! None
; 0851 !
; 0852 ! ROUTINE VALUE:
; 0853 !
; 0854 : MCB_DB_CCB novalue =
; 0855 !
; 0856 ! SIDE EFFECTS:
; 0857 ! None
; 0858 !--
; 0859
; 0860 begin
; 0861 DB [DF_NOTIFY_OFF] = FALSE;
; 0862 DB [DF_NOTIFY_STATE] = FALSE;
; 0863 DB [D_TRANSIENT_ERROR] = 0;
; 0864 DB [D_PERSISTENT_ERROR] = 0;
; 0865 DB [D_OWNER_HANDLE] = 0;
; 0866
; 0867 if .DB [D_ACTIVE_BUFFERS] neq 0
; 0868 then
; 0869 begin
; 0870 ! Wait for transmits and receives to complete
; 0871 CMQIF$ (DB [D_PENDING_CONTROLS], .CCB);
; 0872 DB [DF_CTL] = TRUE;
; 0873 return;
; 0874 end;
; 0875
; 0876 CCB [C_FNC] = FC_CCP;
; 0877 CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
; 0878 $MCB_SCHEDULE_CCB (.CCB);
; 0879 end; !of routine CTLSTP
.GLOBL $CMQIF
.SBTTL CTLSTP
000000 042715 001400 CTLSTP: BIC #1400,(R5) ; *,DB 0862
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 21
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (6)
000004 005065 000104 CLR 104(R5) ; *(DB) 0863
000010 005065 000106 CLR 106(R5) ; *(DB) 0864
000014 005065 000042 CLR 42(R5) ; *(DB) 0865
000020 005765 000110 TST 110(R5) ; *(DB) 0867
000024 001411 BEQ 1$
000026 012703 000072 MOV #72,R3 ; 0871
000032 060503 ADD R5,R3 ; DB,*
000034 004767 000000G JSR PC,$CMQIF
000040 052765 040000 000032 BIS #40000,32(R5) ; *,*(DB) 0872
000046 000207 RTS PC ; 0869
000050 112764 000022 000012 1$: MOVB #22,12(R4) ; *,*(CCB) 0876
000056 004767 000000V JSR PC,CURRENT.STATUS ; 0877
000062 010064 000014 MOV R0,14(R4) ; *,*(CCB)
000066 004767 000000G JSR PC,$SCHED ; 0878
000072 000207 RTS PC ; 0835
; Routine Size: 30 words, Routine Base: $CODE$ + 1140
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 22
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (7)
; 0880 routine CTLSTR
; 0881
; 0882 !++
; 0883 ! FUNCTIONAL DESCRIPTION:
; 0884 !
; 0885 !
; 0886 ! FORMAL PARAMETERS:
; 0887 !
; 0888 (DB : ref block field (D_FIELDS),
; 0889 CCB : ref block field (C_FIELDS))
; 0890 !
; 0891 ! IMPLICIT INPUTS:
; 0892 ! None
; 0893 !
; 0894 ! IMPLICIT OUTPUTS:
; 0895 ! None
; 0896 !
; 0897 ! ROUTINE VALUE:
; 0898 !
; 0899 : MCB_DB_CCB novalue =
; 0900 !
; 0901 ! SIDE EFFECTS:
; 0902 ! None
; 0903 !--
; 0904
; 0905 begin
; 0906 GET_DMC_DATA_BASE (DB)
; 0907 DB [D_OWNER_HANDLE] = .CCB [C_HANDLE];
; 0908
; 0909 if .CCB [C_PRM1] eql 0
; 0910 then
; 0911 CCB [C_PRM1] = .DB [D_CIRCUIT_COST];
; 0912
; 0913 CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
; 0914 CCB [C_FNC] = FC_CCP;
; 0915 $MCB_SCHEDULE_CCB (.CCB);
; 0916 end; !of routine CTLSTR
.SBTTL CTLSTR
000000 016465 000010 000042 CTLSTR: MOV 10(R4),42(R5) ; *(CCB),*(DB) 0907
000006 012700 000024 MOV #24,R0 ; 0909
000012 060400 ADD R4,R0 ; CCB,*
000014 005710 TST (R0)
000016 001002 BNE 1$
000020 016510 000112 MOV 112(R5),(R0) ; *(DB),* 0911
000024 004767 000000V 1$: JSR PC,CURRENT.STATUS ; 0913
000030 010064 000014 MOV R0,14(R4) ; *,*(CCB)
000034 112764 000022 000012 MOVB #22,12(R4) ; *,*(CCB) 0914
000042 004767 000000G JSR PC,$SCHED ; 0915
000046 000207 RTS PC ; 0880
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 23
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (7)
; Routine Size: 20 words, Routine Base: $CODE$ + 1234
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 24
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (8)
; 0917 routine CURRENT_STATUS (DB) : LINKAGE_DB =
; 0918
; 0919 !++
; 0920 ! FUNCTIONAL DESCRIPTION:
; 0921 !
; 0922 !
; 0923 ! FORMAL PARAMETERS:
; 0924 ! DB = address of DMC data base.
; 0925 !
; 0926 ! IMPLICIT INPUTS:
; 0927 ! None
; 0928 !
; 0929 ! IMPLICIT OUTPUTS:
; 0930 ! None
; 0931 !
; 0932 ! ROUTINE VALUE:
; 0933 ! COMPLETION CODES:
; 0934 ! None
; 0935 !
; 0936 ! SIDE EFFECTS:
; 0937 ! None
; 0938 !--
; 0939
; 0940 begin
; 0941 GET_DMC_DATA_BASE (DB)
; 0942
; 0943 literal
; 0944 DLL_OFF = 0,
; 0945 DLL_SYNCHRONIZING = 1,
; 0946 DLL_RUNNING = 2,
; 0947 DLL_MAINTENANCE = 3;
; 0948
; 0949 bind
; P 0950 REPORT_STATUS = TABLE$ (0, 0,
; P 0951 (DS_HALTED^1, DLL_OFF),
; P 0952 (DS_ISTRT^1, DLL_SYNCHRONIZING),
; P 0953 (DS_ASTRT^1, DLL_SYNCHRONIZING),
; P 0954 (DS_RUNNING^1, DLL_RUNNING),
; 0955 (DS_MAINTENANCE^1, DLL_MAINTENANCE)) : vector,
; P 0956 DLL_STATUS = TABLE$ (0, 0,
; P 0957 (DLL_OFF^1, DLL$_STATE_OFF),
; P 0958 (DLL_SYNCHRONIZING^1, DLL$_STATE_SYNCHRONIZING),
; P 0959 (DLL_RUNNING^1, DLL$_STATE_RUNNING),
; 0960 (DLL_MAINTENANCE^1, DLL$_STATE_MAINTENANCE)) : vector;
; 0961
; 0962 if .DB [DF_NOTIFY_OFF]
; 0963 then
; 0964 begin
; 0965 DB [DF_NOTIFY_OFF] = FALSE;
; 0966
; 0967 if .DB [D_PROTOCOL_STATE] eql DS_HALTED
; 0968 then
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 25
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (8)
; 0969 DB [DF_NOTIFY_STATE] = FALSE;
; 0970
; 0971 return .DLL_STATUS [DB [D_REPORTED_STATE] = DLL_OFF];
; 0972 end;
; 0973
; 0974 DB [DF_NOTIFY_STATE] = FALSE;
; 0975 .DLL_STATUS [DB [D_REPORTED_STATE] = .REPORT_STATUS [.DB [D_PROTOCOL_STATE]]]
; 0976 end; !of routine CURRENT_STATUS
000024 .PSECT $PLIT$, RO , D
000024 000000 P.AAB: .WORD 0
000026 000001 .WORD 1
000030 000001 .WORD 1
000032 000002 .WORD 2
000034 000003 .WORD 3
000036 100043 P.AAC: .WORD -77735
000040 100053 .WORD -77725
000042 100063 .WORD -77715
000044 100073 .WORD -77705
000024' REPORT.STATUS= P.AAB
000036' DLL.STATUS= P.AAC
.SBTTL CURRENT.STATUS
001304 .PSECT $CODE$, RO
000000 010546 CURRENT.STATUS:
MOV R5,-(SP) ; 0917
000002 010500 MOV R5,R0 ; *,DB
000004 032710 000400 BIT #400,(R0) ; *,DB 0962
000010 001414 BEQ 2$
000012 042710 000400 BIC #400,(R0) ; *,DB 0965
000016 105760 000034 TSTB 34(R0) ; *(DB) 0967
000022 001002 BNE 1$
000024 042710 001000 BIC #1000,(R0) ; *,DB 0969
000030 105060 000036 1$: CLRB 36(R0) ; *(DB) 0971
000034 016700 000036' MOV DLL.STATUS,R0 ; 0964
000040 000414 BR 3$
000042 042710 001000 2$: BIC #1000,(R0) ; *,DB 0974
000046 116005 000034 MOVB 34(R0),R5 ; *(DB),* 0975
000052 006305 ASL R5
000054 016505 000024' MOV REPORT.STATUS(R5),R5
000060 110560 000036 MOVB R5,36(R0) ; *,*(DB)
000064 006305 ASL R5
000066 016500 000036' MOV DLL.STATUS(R5),R0 ; 0917
000072 012605 3$: MOV (SP)+,R5
000074 000207 RTS PC
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 26
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (8)
; Routine Size: 31 words, Routine Base: $CODE$ + 1304
; Maximum stack depth per invocation: 2 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 27
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (9)
; 0977 routine DEVICE_SHUT_DOWN
; 0978
; 0979 !++
; 0980 ! FUNCTIONAL DESCRIPTION:
; 0981 !
; 0982 !
; 0983 ! FORMAL PARAMETERS:
; 0984 !
; 0985 (DB : ref block field (D_FIELDS))
; 0986 !
; 0987 ! IMPLICIT INPUTS:
; 0988 ! None
; 0989 !
; 0990 ! IMPLICIT OUTPUTS:
; 0991 ! None
; 0992 !
; 0993 ! ROUTINE VALUE:
; 0994 !
; 0995 : LINKAGE_DB novalue =
; 0996 !
; 0997 ! SIDE EFFECTS:
; 0998 ! None
; 0999 !--
; 1000
; 1001 begin
; 1002 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_HALTED, RMT);
; 1003 DB [D_DEVICE_STATE] = DD_SHUT_DOWN;
; 1004 DB [DF_FLUSHING_DMC] = FALSE;
; 1005 DB [D_INPUT_COMMAND] = 0;
; 1006 DB [DF_PROTOCOL_UP] = FALSE;
; 1007 DB [DC_MASTER_CLEAR] = FALSE;
; 1008 DB [DC_BASE_IN] = FALSE;
; 1009 DB [DC_CONTROL_IN] = FALSE;
; 1010 DB [DC_SET_REQUESTED_STATE] = FALSE;
; 1011 end; !of routine DEVICE_SHUT_DOWN
.SBTTL DEVICE.SHUT.DOWN
000000 004167 000000G DEVICE.SHUT.DOWN:
JSR R1,$SAVE4 ; 0977
000004 004767 000000G JSR PC,$NLBEG ; 1002
000010 005046 CLR -(SP)
000012 012701 000034 MOV #34,R1
000016 060501 ADD R5,R1 ; DB,*
000020 111100 MOVB (R1),R0
000022 004767 000000G JSR PC,$DPC1
000026 105011 CLRB (R1)
000030 012716 000001 MOV #1,(SP)
000034 105000 CLRB R0
000036 004767 000000G JSR PC,$DPC1
000042 012700 000501 MOV #501,R0
000046 016501 000100 MOV 100(R5),R1 ; *(DB),*
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 28
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (9)
000052 004767 000000G JSR PC,$NLEND
000056 004767 000000V JSR PC,SEND.STATE
000062 112765 000004 000040 MOVB #4,40(R5) ; *,*(DB) 1003
000070 042715 010000 BIC #10000,(R5) ; *,DB 1004
000074 105065 000012 CLRB 12(R5) ; *(DB) 1005
000100 012700 000032 MOV #32,R0 ; 1006
000104 060500 ADD R5,R0 ; DB,*
000106 042710 020162 BIC #20162,(R0) ; 1010
000112 005726 TST (SP)+ ; 1001
000114 000207 RTS PC ; 0977
; Routine Size: 39 words, Routine Base: $CODE$ + 1402
; Maximum stack depth per invocation: 7 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 29
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (10)
; 1012 routine DLLINI (DB, CCB) : DMC_DB_CCB novalue =
; 1013
; 1014 !++
; 1015 ! FUNCTIONAL DESCRIPTION:
; 1016 !
; 1017 !
; 1018 ! FORMAL PARAMETERS:
; 1019 ! DB = address of DMC data base.
; 1020 ! CCB = address of CCB.
; 1021 !
; 1022 ! IMPLICIT INPUTS:
; 1023 ! None
; 1024 !
; 1025 ! IMPLICIT OUTPUTS:
; 1026 ! None
; 1027 !
; 1028 ! ROUTINE VALUE:
; 1029 ! COMPLETION CODES:
; 1030 ! None
; 1031 !
; 1032 ! SIDE EFFECTS:
; 1033 ! None
; 1034 !--
; 1035
; 1036 begin
; 1037 GET_DMC_DATA_BASE (DB)
; 1038
; 1039 map
; 1040 CCB : ref block field (C_FIELDS);
; 1041
; 1042 DB [DC_HALT] = TRUE;
; 1043 DB [DC_MASTER_CLEAR] = TRUE;
; 1044 DB [D_REQUESTED_STATE] = DS_RUNNING;
; 1045 DB [DC_SET_REQUESTED_STATE] = TRUE;
; 1046 CCB [C_FNC] = FC_XCP;
; 1047 CCB [C_STS] = DLL$_SUCCESS;
; 1048 $MCB_SCHEDULE_CCB (.CCB);
; 1049
; 1050 if .DB [D_DEVICE_STATE] eql DD_CLEARED
; 1051 then
; 1052 begin
; 1053 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 1054 SEND_STATE (DB [D_TIM]);
; 1055 end;
; 1056
; 1057 end; !of routine DLLINI
.SBTTL DLLINI
000000 004167 000000G DLLINI: JSR R1,$SAVE3 ; 1012
000004 012700 000032 MOV #32,R0 ; 1042
000010 060500 ADD R5,R0 ; DB,*
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 30
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (10)
000012 112765 000003 000035 MOVB #3,35(R5) ; *,*(DB) 1044
000020 152710 000103 BISB #103,(R0) ; 1045
000024 112764 000014 000012 MOVB #14,12(R4) ; *,*(CCB) 1046
000032 012764 100001 000014 MOV #-77777,14(R4) ; *,*(CCB) 1047
000040 004767 000000G JSR PC,$SCHED ; 1048
000044 126527 000040 000005 CMPB 40(R5),#5 ; *(DB),* 1050
000052 001006 BNE 1$
000054 012703 100174 MOV #-77604,R3 ; 1053
000060 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000064 004767 000000V JSR PC,SEND.STATE ; 1054
000070 000207 1$: RTS PC ; 1012
; Routine Size: 29 words, Routine Base: $CODE$ + 1520
; Maximum stack depth per invocation: 5 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 31
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (11)
; 1058 routine DLLMOP (DB, CCB) : DMC_DB_CCB novalue =
; 1059
; 1060 !++
; 1061 ! FUNCTIONAL DESCRIPTION:
; 1062 !
; 1063 !
; 1064 ! FORMAL PARAMETERS:
; 1065 ! DB = address of DMC data base.
; 1066 ! CCB = address of CCB.
; 1067 !
; 1068 ! IMPLICIT INPUTS:
; 1069 ! None
; 1070 !
; 1071 ! IMPLICIT OUTPUTS:
; 1072 ! None
; 1073 !
; 1074 ! ROUTINE VALUE:
; 1075 ! COMPLETION CODES:
; 1076 ! None
; 1077 !
; 1078 ! SIDE EFFECTS:
; 1079 ! None
; 1080 !--
; 1081
; 1082 begin
; 1083 GET_DMC_DATA_BASE (DB)
; 1084
; 1085 map
; 1086 CCB : ref block field (C_FIELDS);
; 1087
; 1088 DB [DC_HALT] = TRUE;
; 1089 DB [DC_MASTER_CLEAR] = TRUE;
; 1090 DB [D_REQUESTED_STATE] = DS_MAINTENANCE;
; 1091 DB [DC_SET_REQUESTED_STATE] = TRUE;
; 1092 CCB [C_FNC] = FC_XCP;
; 1093 CCB [C_STS] = DLL$_SUCCESS;
; 1094 $MCB_SCHEDULE_CCB (.CCB);
; 1095
; 1096 if .DB [D_DEVICE_STATE] eql DD_CLEARED
; 1097 then
; 1098 begin
; 1099 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 1100 SEND_STATE (DB [D_TIM]);
; 1101 end;
; 1102
; 1103 end; !of routine DLLMOP
.SBTTL DLLMOP
000000 004167 000000G DLLMOP: JSR R1,$SAVE3 ; 1058
000004 012700 000032 MOV #32,R0 ; 1088
000010 060500 ADD R5,R0 ; DB,*
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 32
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (11)
000012 112765 000004 000035 MOVB #4,35(R5) ; *,*(DB) 1090
000020 152710 000103 BISB #103,(R0) ; 1091
000024 112764 000014 000012 MOVB #14,12(R4) ; *,*(CCB) 1092
000032 012764 100001 000014 MOV #-77777,14(R4) ; *,*(CCB) 1093
000040 004767 000000G JSR PC,$SCHED ; 1094
000044 126527 000040 000005 CMPB 40(R5),#5 ; *(DB),* 1096
000052 001006 BNE 1$
000054 012703 100174 MOV #-77604,R3 ; 1099
000060 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000064 004767 000000V JSR PC,SEND.STATE ; 1100
000070 000207 1$: RTS PC ; 1058
; Routine Size: 29 words, Routine Base: $CODE$ + 1612
; Maximum stack depth per invocation: 5 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 33
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (12)
; 1104 routine DLLSTP (DB, CCB) : DMC_DB_CCB novalue =
; 1105
; 1106 !++
; 1107 ! FUNCTIONAL DESCRIPTION:
; 1108 !
; 1109 !
; 1110 ! FORMAL PARAMETERS:
; 1111 ! DB = address of DMC data base.
; 1112 ! CCB = address of CCB.
; 1113 !
; 1114 ! IMPLICIT INPUTS:
; 1115 ! None
; 1116 !
; 1117 ! IMPLICIT OUTPUTS:
; 1118 ! None
; 1119 !
; 1120 ! ROUTINE VALUE:
; 1121 ! COMPLETION CODES:
; 1122 ! None
; 1123 !
; 1124 ! SIDE EFFECTS:
; 1125 ! None
; 1126 !--
; 1127
; 1128 begin
; 1129 GET_DMC_DATA_BASE (DB)
; 1130
; 1131 map
; 1132 CCB : ref block field (C_FIELDS);
; 1133
; 1134 DB [DC_HALT] = TRUE;
; 1135 DB [DC_MASTER_CLEAR] = TRUE;
; 1136 DB [D_REQUESTED_STATE] = DS_HALTED;
; 1137 DB [DC_SET_REQUESTED_STATE] = TRUE;
; 1138 CCB [C_FNC] = FC_XCP;
; 1139 CCB [C_STS] = DLL$_SUCCESS;
; 1140 $MCB_SCHEDULE_CCB (.CCB);
; 1141 end; !of routine DLLSTP
.SBTTL DLLSTP
000000 012700 000032 DLLSTP: MOV #32,R0 ; 1134
000004 060500 ADD R5,R0 ; DB,*
000006 105065 000035 CLRB 35(R5) ; *(DB) 1136
000012 152710 000103 BISB #103,(R0) ; 1137
000016 112764 000014 000012 MOVB #14,12(R4) ; *,*(CCB) 1138
000024 012764 100001 000014 MOV #-77777,14(R4) ; *,*(CCB) 1139
000032 004767 000000G JSR PC,$SCHED ; 1140
000036 000207 RTS PC ; 1104
; Routine Size: 16 words, Routine Base: $CODE$ + 1704
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 34
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (13)
; 1142 routine DMC_INTERRUPT (DB) : MCB_INTERRUPT novalue =
; 1143
; 1144 !++
; 1145 ! FUNCTIONAL DESCRIPTION:
; 1146 !
; 1147 !
; 1148 ! FORMAL PARAMETERS:
; 1149 ! DB = address of DMC data base.
; 1150 !
; 1151 ! IMPLICIT INPUTS:
; 1152 ! None
; 1153 !
; 1154 ! IMPLICIT OUTPUTS:
; 1155 ! None
; 1156 !
; 1157 ! ROUTINE VALUE:
; 1158 ! COMPLETION CODES:
; 1159 ! None
; 1160 !
; 1161 ! SIDE EFFECTS:
; 1162 ! None
; 1163 !--
; 1164
; 1165 begin
; 1166 GET_DMC_DATA_BASE (DB)
; 1167
; 1168 if .DB [DF_SYNCHRONIZING]
; 1169 then
; 1170 return
; 1171 else
; 1172 DB [DF_SYNCHRONIZING] = TRUE;
; 1173
; 1174 SYNCH$ (.DB [D_SYNCH_BLOCK], DMC_SYNCHRONIZE);
; 1175 end; !of routine DMC_INTERRUPT
.GLOBL $SYNCH
.SBTTL DMC.INTERRUPT
000000 032715 020000 DMC.INTERRUPT:
BIT #20000,(R5) ; *,DB 1168
000004 001011 BNE 1$ ; 1170
000006 052715 020000 BIS #20000,(R5) ; *,DB 1172
000012 016504 000010 MOV 10(R5),R4 ; *(DB),* 1174
000016 012764 000000V 000004 MOV #DMC.SYNCHRONIZE,4(R4)
000024 004767 000000G JSR PC,$SYNCH
000030 000207 1$: RTS PC ; 1142
; Routine Size: 13 words, Routine Base: $CODE$ + 1744
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 35
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (14)
; 1176 routine DMC_SYNCHRONIZE (DB) : MCB_DB novalue =
; 1177
; 1178 !++
; 1179 ! FUNCTIONAL DESCRIPTION:
; 1180 !
; 1181 !
; 1182 ! FORMAL PARAMETERS:
; 1183 ! DB = address of DMC data base.
; 1184 !
; 1185 ! IMPLICIT INPUTS:
; 1186 ! None
; 1187 !
; 1188 ! IMPLICIT OUTPUTS:
; 1189 ! None
; 1190 !
; 1191 ! ROUTINE VALUE:
; 1192 ! COMPLETION CODES:
; 1193 ! None
; 1194 !
; 1195 ! SIDE EFFECTS:
; 1196 ! None
; 1197 !--
; 1198
; 1199 begin
; 1200 GET_DMC_DATA_BASE (DB)
; 1201 $DMC_CLEAR_BITS (.DB [D_REGISTER], SEL0, IEI);
; 1202 DB [DF_SYNCHRONIZING] = FALSE;
; 1203 SERVICE_DMC (DB [D_TIM]);
; 1204 end; !of routine DMC_SYNCHRONIZE
.SBTTL DMC.SYNCHRONIZE
000000 042775 000100 000002 DMC.SYNCHRONIZE:
BIC #100,@2(R5) ; *,*(DB) 1201
000006 042715 020000 BIC #20000,(R5) ; *,DB 1202
000012 004767 000000V JSR PC,SERVICE.DMC ; 1203
000016 000207 RTS PC ; 1176
; Routine Size: 8 words, Routine Base: $CODE$ + 1776
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 36
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (15)
; 1205 routine DMCCTL
; 1206
; 1207 !++
; 1208 ! FUNCTIONAL DESCRIPTION:
; 1209 !
; 1210 !
; 1211 ! FORMAL PARAMETERS:
; 1212 !
; 1213 (DB : ref block field (D_FIELDS),
; 1214 CCB : ref block field (C_FIELDS),
; 1215 MODIFIER)
; 1216 !
; 1217 ! IMPLICIT INPUTS:
; 1218 ! None
; 1219 !
; 1220 ! IMPLICIT OUTPUTS:
; 1221 ! None
; 1222 !
; 1223 ! ROUTINE VALUE:
; 1224 !
; 1225 : MCB_DB_CCB_MOD novalue =
; 1226 !
; 1227 ! SIDE EFFECTS:
; 1228 ! None
; 1229 !--
; 1230
; 1231 begin
; P 1232 DISPATCH$ (.MODIFIER,
; P 1233 TABLE$ ($DSPCR, FD_CTL, ! Control dispatch table:
; P 1234 (FM_NM, DMCNM), ! Network Management
; P 1235 (FM_STR, CTLSTR), ! Start line
; P 1236 (FM_STP, CTLSTP)), ! Stop line
; P 1237 (DB [D_TIM], .CCB),
; 1238 MCB_DB_CCB);
; 1239 SET_PORT (DB [D_TIM]);
; 1240 end; !of routine DMCCTL
000046 .PSECT $PLIT$, RO , D
000046 000000G P.AAD: .WORD $DSPCR
000050 001234' .WORD CTLSTR
000052 001140' .WORD CTLSTP
000054 000000G .WORD DMCNM
000056 000000G .WORD $DSPCR
000060 000000G .WORD $DSPCR
000062 000000G .WORD $DSPCR
.SBTTL DMCCTL
002016 .PSECT $CODE$, RO
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 37
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (15)
000000 010546 DMCCTL: MOV R5,-(SP) ; 1205
000002 004773 000046' JSR PC,@P.AAD(R3) ; *,*(MODIFIER) 1238
000006 011605 MOV (SP),R5 ; 1239
000010 004767 000000V JSR PC,SET.PORT
000014 005726 TST (SP)+ ; 1205
000016 000207 RTS PC
; Routine Size: 8 words, Routine Base: $CODE$ + 2016
; Maximum stack depth per invocation: 2 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 38
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (16)
; 1241 global routine DMCDB
; 1242
; 1243 !++
; 1244 ! FUNCTIONAL DESCRIPTION:
; 1245 !
; 1246 !
; 1247 ! FORMAL PARAMETERS:
; 1248 !
; 1249 (BIAS,
; 1250 DB : ref block field (D_FIELDS))
; 1251 !
; 1252 ! IMPLICIT INPUTS:
; 1253 ! None
; 1254 !
; 1255 ! IMPLICIT OUTPUTS:
; 1256 ! None
; 1257 !
; 1258 ! ROUTINE VALUE:
; 1259 !
; 1260 : CALL$ novalue =
; 1261 !
; 1262 ! SIDE EFFECTS:
; 1263 ! None
; 1264 !--
; 1265
; 1266 begin
; 1267 MCB$GAW_PROCESS_DATA_BASE [0] = .BIAS;
; 1268 MCB$GAW_PROCESS_DATA_BASE [1] = DB [D_TIM];
; 1269 MCB$GA_PROCESS_DISPATCH = DMC_TABLE;
; 1270 DMCDBI ();
; 1271 DMCNMI ();
; 1272 DMCDVI ();
; 1273
; 1274 if .DB [D_LINE_STATE] eql DL_ON then $MCB_ENABLE_LONG_TIMER ();
; 1275
; 1276 end; !of routine DMCDB
.GLOBL $LTMEN
.SBTTL DMCDB
000000 016567 000002 000000G DMCDB:: MOV 2(R5),.CRDAT ; BIAS(.AP.),* 1267
000006 016567 000004 000002G MOV 4(R5),.CRDAT+2 ; DB(.AP.),* 1268
000014 012767 000000' 000000G MOV #DMC.TABLE,.CRDSP ; 1269
000022 004767 000000G JSR PC,DMCDBI ; 1270
000026 004767 000000G JSR PC,DMCNMI ; 1271
000032 004767 000000G JSR PC,DMCDVI ; 1272
000036 016500 000004 MOV 4(R5),R0 ; DB(.AP.),* 1274
000042 105760 000037 TSTB 37(R0)
000046 001002 BNE 1$
000050 004767 000000G JSR PC,$LTMEN
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 39
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (16)
000054 000207 1$: RTS PC ; 1241
; Routine Size: 23 words, Routine Base: $CODE$ + 2036
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 40
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (17)
; 1277 routine DMCRCE (DB, CCB) : MCB_DB_CCB novalue =
; 1278
; 1279 !++
; 1280 ! FUNCTIONAL DESCRIPTION:
; 1281 !
; 1282 !
; 1283 ! FORMAL PARAMETERS:
; 1284 ! DB = address of DMC data base.
; 1285 ! CCB =
; 1286 !
; 1287 ! IMPLICIT INPUTS:
; 1288 ! None
; 1289 !
; 1290 ! IMPLICIT OUTPUTS:
; 1291 ! None
; 1292 !
; 1293 ! ROUTINE VALUE:
; 1294 ! COMPLETION CODES:
; 1295 ! None
; 1296 !
; 1297 ! SIDE EFFECTS:
; 1298 ! None
; 1299 !--
; 1300
; 1301 begin
; 1302 GET_DMC_DATA_BASE (DB)
; 1303
; 1304 map
; 1305 CCB : ref block field (C_FIELDS);
; 1306
; 1307 RDBRT$ (.CCB);
; 1308 DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] - 1;
; 1309
; 1310 if .DB [D_ACTIVE_BUFFERS] neq 0 then return;
; 1311
; 1312 if .DB [DF_CTL] then CTLNXT (DB [D_TIM]);
; 1313
; 1314 end; !of routine DMCRCE
.GLOBL $RDBRT
.SBTTL DMCRCE
000000 004767 000000G DMCRCE: JSR PC,$RDBRT ; 1307
000004 005365 000110 DEC 110(R5) ; *(DB) 1308
000010 001006 BNE 1$ ; 1310
000012 032765 040000 000032 BIT #40000,32(R5) ; *,*(DB) 1312
000020 001402 BEQ 1$
000022 004767 176722 JSR PC,CTLNXT
000026 000207 1$: RTS PC ; 1277
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 41
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (17)
; Routine Size: 12 words, Routine Base: $CODE$ + 2114
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 42
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (18)
; 1315 routine DMCTIM (DB, MODIFIER) : MCB_DB_MOD novalue =
; 1316
; 1317 !++
; 1318 ! FUNCTIONAL DESCRIPTION:
; 1319 !
; 1320 !
; 1321 ! FORMAL PARAMETERS:
; 1322 ! DB = address of DMC data base.
; 1323 ! MODIFIER = timer function modifier.
; 1324 !
; 1325 ! IMPLICIT INPUTS:
; 1326 ! None
; 1327 !
; 1328 ! IMPLICIT OUTPUTS:
; 1329 ! None
; 1330 !
; 1331 ! ROUTINE VALUE:
; 1332 ! COMPLETION CODES:
; 1333 ! None
; 1334 !
; 1335 ! SIDE EFFECTS:
; 1336 ! None
; 1337 !--
; 1338
; 1339 begin
; 1340 GET_DMC_DATA_BASE (DB)
; P 1341 DISPATCH$ (
; P 1342 .MODIFIER,
; P 1343 TABLE$ ($DSPCR, FD_TIM, ! Timer dispatch table:
; P 1344 (FM_PIN, TIMPIN), ! Process initialization
; P 1345 (FM_PWF, TIMPWF), ! Power failure
; P 1346 (FM_LTM, TIMLTM), ! Long timer
; P 1347 (FM_CCB, TIMCCB), ! CCB available
; P 1348 (FM_RDB, TIMRDB)), ! RDB available
; P 1349 (DB [D_TIM]),
; 1350 MCB_DB);
; 1351 end; !of routine DMCTIM
000064 .PSECT $PLIT$, RO , D
000064 000000G P.AAE: .WORD $DSPCR
000066 000000V .WORD TIMLTM
000070 000000V .WORD TIMPWF
000072 000000V .WORD TIMPIN
000074 000000V .WORD TIMCCB
000076 000000V .WORD TIMRDB
.SBTTL DMCTIM
002144 .PSECT $CODE$, RO
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 43
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (18)
000000 004773 000064' DMCTIM: JSR PC,@P.AAE(R3) ; *,*(MODIFIER) 1350
000004 000207 RTS PC ; 1315
; Routine Size: 3 words, Routine Base: $CODE$ + 2144
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 44
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (19)
; 1352 routine DMCXME (DB, CCB, MODIFIER) : MCB_DB_CCB_MOD novalue =
; 1353
; 1354 !++
; 1355 ! FUNCTIONAL DESCRIPTION:
; 1356 !
; 1357 !
; 1358 ! FORMAL PARAMETERS:
; 1359 ! DB = address of DMC data base.
; 1360 ! CCB = address of transmit CCB.
; 1361 ! MODIFIER = transmit function modifier (from C_MOD of CCB).
; 1362 !
; 1363 ! IMPLICIT INPUTS:
; 1364 ! None
; 1365 !
; 1366 ! IMPLICIT OUTPUTS:
; 1367 ! None
; 1368 !
; 1369 ! ROUTINE VALUE:
; 1370 ! COMPLETION CODES:
; 1371 ! None
; 1372 !
; 1373 ! SIDE EFFECTS:
; 1374 ! None
; 1375 !--
; 1376
; 1377 begin
; 1378 GET_DMC_DATA_BASE (DB)
; 1379
; 1380 map
; 1381 CCB : ref block field (C_FIELDS);
; 1382
; P 1383 DISPATCH$ (
; P 1384 .MODIFIER,
; P 1385 TABLE$ ($DSPCR, 0,
; P 1386 (DLL$K_ENTER_MAINTENANCE, DLLMOP),
; P 1387 (DLL$K_INITIALIZE_LINK, DLLINI),
; P 1388 (DLL$K_STOP_LINK, DLLSTP),
; P 1389 (DLL$K_TRANSMIT, QUEUE_TRANSMIT),
; P 1390 (DLL$K_TRANSMIT_AND_TIME, QUEUE_TRANSMIT)),
; P 1391 (DB [D_TIM], .CCB),
; 1392 DMC_DB_CCB);
; 1393 SET_PORT (DB [D_TIM]);
; 1394 end; !of routine DMCXME
000100 .PSECT $PLIT$, RO , D
000100 000000V P.AAF: .WORD QUEUE.TRANSMIT
000102 001520' .WORD DLLINI
000104 001704' .WORD DLLSTP
000106 001612' .WORD DLLMOP
000110 000000V .WORD QUEUE.TRANSMIT
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 45
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (19)
.SBTTL DMCXME
002152 .PSECT $CODE$, RO
000000 004773 000100' DMCXME: JSR PC,@P.AAF(R3) ; *,*(MODIFIER) 1392
000004 004767 000000V JSR PC,SET.PORT ; 1393
000010 000207 RTS PC ; 1352
; Routine Size: 5 words, Routine Base: $CODE$ + 2152
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 46
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (20)
; 1395 routine FLUSH_QUEUES (DB) : DMC_DB novalue =
; 1396
; 1397 !++
; 1398 ! FUNCTIONAL DESCRIPTION:
; 1399 !
; 1400 !
; 1401 ! FORMAL PARAMETERS:
; 1402 ! DB = address of DMC data base.
; 1403 !
; 1404 ! IMPLICIT INPUTS:
; 1405 ! None
; 1406 !
; 1407 ! IMPLICIT OUTPUTS:
; 1408 ! None
; 1409 !
; 1410 ! ROUTINE VALUE:
; 1411 ! COMPLETION CODES:
; 1412 ! None
; 1413 !
; 1414 ! SIDE EFFECTS:
; 1415 ! None
; 1416 !--
; 1417
; 1418 begin
; 1419 GET_DMC_DATA_BASE (DB)
; 1420
; 1421 local
; 1422 CCB : ref block field (C_FIELDS);
; 1423
; 1424 RDBCN$ ();
; 1425 FLUSH_QUEUE (DB [D_ASSIGNED_TRANSMIT_CCBS], %quote SCHEDULE_TRANSMIT, DB [D_TIM], DLL$_ABORTED);
; 1426 FLUSH_QUEUE (DB [D_ASSIGNABLE_TRANSMIT_CCBS], %quote SCHEDULE_TRANSMIT, DB [D_TIM], DLL$_ABORTED);
; 1427 FLUSH_QUEUE (DB [D_ASSIGNED_RECEIVE_CCBS], %quote RDBRT$);
; 1428 FLUSH_QUEUE (DB [D_ASSIGNABLE_RECEIVE_CCBS], %quote RDBRT$);
; 1429 DB [D_ASSIGNABLE_TRANSMIT_COUNT] = 0;
; 1430 DB [D_ASSIGNABLE_RECEIVE_COUNT] = 0;
; 1431 end; !of routine FLUSH_QUEUES
.GLOBL $RDBCN
.SBTTL FLUSH.QUEUES
000000 004767 000000G FLUSH.QUEUES:
JSR PC,$RDBCN ; 1424
000004 010501 MOV R5,R1 ; DB,* 1425
000006 062701 000060 ADD #60,R1
000012 010103 1$: MOV R1,R3
000014 004767 000000G JSR PC,$CMQRM
000020 103405 BCS 2$
000022 012700 100030 MOV #-77750,R0
000026 004767 000000V JSR PC,SCHEDULE.TRANSMIT
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 47
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (20)
000032 000767 BR 1$
000034 010501 2$: MOV R5,R1 ; DB,* 1426
000036 062701 000054 ADD #54,R1
000042 010103 3$: MOV R1,R3
000044 004767 000000G JSR PC,$CMQRM
000050 103405 BCS 4$
000052 012700 100030 MOV #-77750,R0
000056 004767 000000V JSR PC,SCHEDULE.TRANSMIT
000062 000767 BR 3$
000064 010501 4$: MOV R5,R1 ; DB,* 1427
000066 062701 000050 ADD #50,R1
000072 010103 5$: MOV R1,R3
000074 004767 000000G JSR PC,$CMQRM
000100 103403 BCS 6$
000102 004767 000000G JSR PC,$RDBRT
000106 000771 BR 5$
000110 010501 6$: MOV R5,R1 ; DB,* 1428
000112 062701 000044 ADD #44,R1
000116 010103 7$: MOV R1,R3
000120 004767 000000G JSR PC,$CMQRM
000124 103403 BCS 8$
000126 004767 000000G JSR PC,$RDBRT
000132 000771 BR 7$
000134 105065 000115 8$: CLRB 115(R5) ; *(DB) 1429
000140 105065 000114 CLRB 114(R5) ; *(DB) 1430
000144 000207 RTS PC ; 1395
; Routine Size: 51 words, Routine Base: $CODE$ + 2164
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 48
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (21)
; 1432 global routine MASTER_CLEAR (DB) : LINKAGE_DB =
; 1433
; 1434 !++
; 1435 ! FUNCTIONAL DESCRIPTION:
; 1436 !
; 1437 !
; 1438 ! FORMAL PARAMETERS:
; 1439 ! DB = address of DMC data base.
; 1440 !
; 1441 ! IMPLICIT INPUTS:
; 1442 ! None
; 1443 !
; 1444 ! IMPLICIT OUTPUTS:
; 1445 ! None
; 1446 !
; 1447 ! ROUTINE VALUE:
; 1448 ! COMPLETION CODES:
; 1449 ! None
; 1450 !
; 1451 ! SIDE EFFECTS:
; 1452 ! None
; 1453 !--
; 1454
; 1455 begin
; 1456 GET_DMC_DATA_BASE (DB)
; 1457
; 1458 local
; 1459 STATUS;
; 1460
; 1461 STATUS = FALSE;
; 1462
; 1463 if .DB [D_DEVICE_STATE] eql DD_CLEARED then return .STATUS;
; 1464
; 1465 $DMC_WRITE (.DB [D_REGISTER], BSEL2, 0);
; 1466 $DMC_WRITE (.DB [D_REGISTER], SEL0, 1^%fieldexpand (MC, 1));
; 1467
; 1468 do
; 1469 begin
; 1470
; 1471 if not $DMC_BITS_CLEAR (.DB [D_REGISTER], SEL0, RUN) then exitloop STATUS = TRUE;
; 1472
; 1473 end
; 1474 until (STATUS = .STATUS - 1) eql FALSE;
; 1475
; 1476 if .DB [D_PROTOCOL_STATE] neq DS_HALTED
; 1477 then
; 1478 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_HALTED, LCL);
; 1479
; 1480 if .DB [D_DEVICE_STATE] neq DD_MASTER_CLEARED
; 1481 then
; 1482 begin
; 1483 FLUSH_QUEUES (DB [D_TIM]);
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 49
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (21)
; 1484 DB [D_ASSIGNED_TRANSMIT_COUNT] = 0;
; 1485 DB [D_ASSIGNED_RECEIVE_COUNT] = 0;
; 1486 DB [D_DEVICE_STATE] = DD_MASTER_CLEARED;
; 1487 DB [D_INPUT_COMMAND] = 0;
; 1488 DB [DF_PROTOCOL_UP] = FALSE;
; 1489 end;
; 1490
; 1491 .STATUS
; 1492 end; !of routine MASTER_CLEAR
.SBTTL MASTER.CLEAR
000000 004167 000000G MASTER.CLEAR::
JSR R1,$SAVE4 ; 1432
000004 005046 CLR -(SP) ; STATUS 1461
000006 012746 000040 MOV #40,-(SP) ; 1463
000012 060516 ADD R5,(SP) ; DB,*
000014 127627 000000 000005 CMPB @0(SP),#5
000022 001472 BEQ 5$
000024 016500 000002 MOV 2(R5),R0 ; *(DB),* 1465
000030 105060 000002 CLRB 2(R0)
000034 012710 040000 MOV #40000,(R0) ; 1466
000040 032710 100000 1$: BIT #-100000,(R0) ; 1471
000044 001404 BEQ 2$
000046 012766 000001 000002 MOV #1,2(SP) ; *,STATUS
000054 000403 BR 3$
000056 005366 000002 2$: DEC 2(SP) ; STATUS 1474
000062 001366 BNE 1$
000064 012701 000034 3$: MOV #34,R1 ; 1476
000070 060501 ADD R5,R1 ; DB,*
000072 105711 TSTB (R1)
000074 001425 BEQ 4$
000076 004767 000000G JSR PC,$NLBEG ; 1478
000102 005046 CLR -(SP)
000104 111100 MOVB (R1),R0
000106 004767 000000G JSR PC,$DPC1
000112 105011 CLRB (R1)
000114 012716 000001 MOV #1,(SP)
000120 105000 CLRB R0
000122 004767 000000G JSR PC,$DPC1
000126 012700 000500 MOV #500,R0
000132 016501 000100 MOV 100(R5),R1 ; *(DB),*
000136 004767 000000G JSR PC,$NLEND
000142 004767 000000V JSR PC,SEND.STATE
000146 005726 TST (SP)+
000150 105776 000000 4$: TSTB @0(SP) ; 1480
000154 001415 BEQ 5$
000156 004767 177450 JSR PC,FLUSH.QUEUES ; 1483
000162 105065 000117 CLRB 117(R5) ; *(DB) 1484
000166 105065 000116 CLRB 116(R5) ; *(DB) 1485
000172 105076 000000 CLRB @0(SP) ; 1486
000176 105065 000012 CLRB 12(R5) ; *(DB) 1487
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 50
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (21)
000202 042765 020000 000032 BIC #20000,32(R5) ; *,*(DB) 1488
000210 016600 000002 5$: MOV 2(SP),R0 ; STATUS,* 1432
000214 022626 CMP (SP)+,(SP)+
000216 000207 RTS PC
; Routine Size: 72 words, Routine Base: $CODE$ + 2332
; Maximum stack depth per invocation: 9 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 51
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (22)
; 1493 routine OUTPUT_TRANSFER (DB) : LINKAGE_DB novalue =
; 1494
; 1495 !++
; 1496 ! FUNCTIONAL DESCRIPTION:
; 1497 !
; 1498 !
; 1499 ! FORMAL PARAMETERS:
; 1500 ! DB = address of DMC data base.
; 1501 !
; 1502 ! IMPLICIT INPUTS:
; 1503 ! None
; 1504 !
; 1505 ! IMPLICIT OUTPUTS:
; 1506 ! None
; 1507 !
; 1508 ! ROUTINE VALUE:
; 1509 ! COMPLETION CODES:
; 1510 ! None
; 1511 !
; 1512 ! SIDE EFFECTS:
; 1513 ! None
; 1514 !--
; 1515
; 1516 begin
; 1517 GET_DMC_DATA_BASE (DB)
; 1518
; 1519 macro
; 1520 REG (FLD) = DB [$SUB_FIELD (D_OUTPUT_DATA, FLD)] %;
; 1521
; 1522 field
; 1523 CMD = [$SUB_FIELD (SEL2, TYPEO)];
; 1524
; 1525 case .REG [CMD] from 0 to 7 of
; 1526 set
; 1527 [BA_CC_O + XMT] :
; 1528 begin
; 1529 TRANSMIT_OUT (DB [D_TIM], .REG [SEL4], .REG [SEL6]);
; 1530 DB [D_ASSIGNED_TRANSMIT_COUNT] = .DB [D_ASSIGNED_TRANSMIT_COUNT] - 1;
; 1531 RESET_TIMER (DB [D_TIM]);
; 1532 end;
; 1533 [BA_CC_O + RCV] :
; 1534 begin
; 1535 RECEIVE_OUT (DB [D_TIM], .REG [SEL4], .REG [SEL6]);
; 1536 DB [D_ASSIGNED_RECEIVE_COUNT] = .DB [D_ASSIGNED_RECEIVE_COUNT] - 1;
; 1537 end;
; 1538 [CNTL_O + XMT, CNTL_O + RCV] :
; 1539 begin
; 1540 CONTROL_OUT (DB [D_TIM], .REG [SEL6]);
; 1541 end;
; 1542 [inrange] :
; 1543 begin
; P 1544 $NM_PLL_EVENT (4, .DB [D_LINE_ENTITY],
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 52
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (22)
; 1545 PARAMETER_DEVICE_REGISTERS (REG [SEL0]));
; 1546 COUNTER_INCREMENT (DB, D_INVALID_REGISTER_CONTENTS);
; 1547 COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
; 1548 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 1549 MASTER_CLEAR (DB [D_TIM]);
; 1550 end;
; 1551 tes;
; 1552
; 1553 SET_PORT (DB [D_TIM]);
; 1554 end; !of routine OUTPUT_TRANSFER
.SBTTL OUTPUT.TRANSFER
000000 004167 000000G OUTPUT.TRANSFER:
JSR R1,$SAVE5 ; 1493
000004 010546 MOV R5,-(SP)
000006 010501 MOV R5,R1 ; 1525
000010 116100 000024 MOVB 24(R1),R0
000014 042700 177770 BIC #177770,R0
000020 006300 ASL R0
000022 066007 000112' ADD P.AAG(R0),PC ; Case dispatch
000026 011600 1$: MOV (SP),R0 ; 1529
000030 016046 000026 MOV 26(R0),-(SP)
000034 016046 000030 MOV 30(R0),-(SP)
000040 010005 MOV R0,R5
000042 004767 000000V JSR PC,TRANSMIT.OUT
000046 016601 000004 MOV 4(SP),R1 ; 1530
000052 105361 000117 DECB 117(R1)
000056 010105 MOV R1,R5 ; 1531
000060 004767 000000V JSR PC,RESET.TIMER
000064 000414 BR 3$ ; 1528
000066 011600 2$: MOV (SP),R0 ; 1535
000070 016046 000026 MOV 26(R0),-(SP)
000074 016046 000030 MOV 30(R0),-(SP)
000100 010005 MOV R0,R5
000102 004767 000000V JSR PC,RECEIVE.OUT
000106 016601 000004 MOV 4(SP),R1 ; 1536
000112 105361 000116 DECB 116(R1)
000116 022626 3$: CMP (SP)+,(SP)+ ; 1534
000120 000450 BR 6$ ; 1525
000122 011605 4$: MOV (SP),R5 ; 1540
000124 010500 MOV R5,R0
000126 016003 000030 MOV 30(R0),R3
000132 004767 175212 JSR PC,CONTROL.OUT
000136 000441 BR 6$ ; 1525
000140 004767 000000G 5$: JSR PC,$NLBEG ; 1545
000144 011605 MOV (SP),R5
000146 062705 000022 ADD #22,R5
000152 010501 MOV R5,R1
000154 004767 000000V JSR PC,PLL0
000160 012700 000604 MOV #604,R0
000164 011602 MOV (SP),R2
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 53
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (22)
000166 016201 000102 MOV 102(R2),R1
000172 004767 000000G JSR PC,$NLEND
000176 011600 MOV (SP),R0 ; 1546
000200 052760 000400 000152 BIS #400,152(R0)
000206 012701 000152 MOV #152,R1 ; 1547
000212 060001 ADD R0,R1
000214 010100 MOV R1,R0
000216 004767 000000G JSR PC,$IC8
000222 011605 MOV (SP),R5 ; 1548
000224 012703 100174 MOV #-77604,R3
000230 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000234 011605 MOV (SP),R5 ; 1549
000236 004767 177316 JSR PC,MASTER.CLEAR
000242 011605 6$: MOV (SP),R5 ; 1553
000244 004767 000000V JSR PC,SET.PORT
000250 005726 TST (SP)+ ; 1493
000252 000207 RTS PC
; Routine Size: 86 words, Routine Base: $CODE$ + 2552
; Maximum stack depth per invocation: 10 words
000112 .PSECT $PLIT$, RO , D
P.AAG: ; CASE Table for OUTPUT.TRANSFER+0022 1525
000112 000000 .WORD 0 ; [1$]
000114 000074 .WORD 74 ; [4$]
000116 000112 .WORD 112 ; [5$]
000120 000112 .WORD 112 ; [5$]
000122 000040 .WORD 40 ; [2$]
000124 000074 .WORD 74 ; [4$]
000126 000112 .WORD 112 ; [5$]
000130 000112 .WORD 112 ; [5$]
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 54
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (23)
; 1555 global routine PARAMETER_DEVICE_REGISTERS
; 1556
; 1557 !++
; 1558 ! FUNCTIONAL DESCRIPTION:
; 1559 !
; 1560 !
; 1561 ! FORMAL PARAMETERS:
; 1562 !
; 1563 (REG : ref vector)
; 1564 !
; 1565 ! IMPLICIT INPUTS:
; 1566 ! None
; 1567 !
; 1568 ! IMPLICIT OUTPUTS:
; 1569 ! None
; 1570 !
; 1571 ! ROUTINE VALUE:
; 1572 : DMC_REG novalue =
; 1573 !
; 1574 ! SIDE EFFECTS:
; 1575 ! None
; 1576 !--
; 1577
; 1578 begin
; 1579
; 1580 !
; 1581 ! DMC registers
; 1582 !
; 1583
; 1584 PARAMETER_H_2 (0, REG [0]);
; 1585 REG = REG [1];
; 1586 PARAMETER_H_2 (0, REG [0]);
; 1587 REG = REG [1];
; 1588 PARAMETER_H_2 (0, REG [0]);
; 1589 REG = REG [1];
; 1590 PARAMETER_H_2 (0, REG [0]);
; 1591 end; !of routine PARAMETER_DEVICE_REGISTERS
.GLOBL $DPH2
.SBTTL PLL0
003026 .PSECT $CODE$, RO
000000 005046 PLL0:: CLR -(SP) ; 1584
000002 011100 MOV (R1),R0 ; REG,*
000004 004767 000000G JSR PC,$DPH2
000010 062701 000002 ADD #2,R1 ; *,REG 1585
000014 005016 CLR (SP) ; 1586
000016 011100 MOV (R1),R0 ; REG,*
000020 004767 000000G JSR PC,$DPH2
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 55
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (23)
000024 062701 000002 ADD #2,R1 ; *,REG 1587
000030 005016 CLR (SP) ; 1588
000032 011100 MOV (R1),R0 ; REG,*
000034 004767 000000G JSR PC,$DPH2
000040 062701 000002 ADD #2,R1 ; *,REG 1589
000044 005016 CLR (SP) ; 1590
000046 011100 MOV (R1),R0 ; REG,*
000050 004767 000000G JSR PC,$DPH2
000054 005726 TST (SP)+ ; 1578
000056 000207 RTS PC ; 1555
; Routine Size: 24 words, Routine Base: $CODE$ + 3026
; Maximum stack depth per invocation: 2 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 56
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (24)
; 1592 routine QUEUE_TRANSMIT (DB, CCB) : DMC_DB_CCB novalue =
; 1593
; 1594 !++
; 1595 ! FUNCTIONAL DESCRIPTION:
; 1596 !
; 1597 !
; 1598 ! FORMAL PARAMETERS:
; 1599 ! DB = address of DMC data base.
; 1600 ! CCB = address of CCB.
; 1601 !
; 1602 ! IMPLICIT INPUTS:
; 1603 ! None
; 1604 !
; 1605 ! IMPLICIT OUTPUTS:
; 1606 ! None
; 1607 !
; 1608 ! ROUTINE VALUE:
; 1609 ! COMPLETION CODES:
; 1610 ! None
; 1611 !
; 1612 ! SIDE EFFECTS:
; 1613 ! None
; 1614 !--
; 1615
; 1616 begin
; 1617 GET_DMC_DATA_BASE (DB)
; 1618
; 1619 map
; 1620 CCB : ref block field (C_FIELDS);
; 1621
; 1622 local
; 1623 MSG_CNT;
; 1624
; 1625 if .DB [D_PROTOCOL_STATE] eql DS_MAINTENANCE
; 1626 then
; 1627 begin
; 1628 local
; 1629 SAVE_MAP;
; 1630 SMAP$ (SAVE_MAP);
; 1631 MAP$ (.CCB [C_BIAS]);
; 1632 selectone ch$rchar (.CCB [C_ADDR]) of
; 1633 set
; 1634 [8, 12]:
; 1635 ch$wchar (12, ch$plus (.CCB [C_ADDR], 1));
; 1636 tes;
; 1637 MAP$ (.SAVE_MAP);
; 1638 end;
; 1639
; 1640 DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] + 1;
; 1641 DB [D_ASSIGNABLE_TRANSMIT_COUNT] = .DB [D_ASSIGNABLE_TRANSMIT_COUNT] + 1;
; 1642 CMQIN$ (DB [D_ASSIGNABLE_TRANSMIT_CCBS], .CCB);
; 1643
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 57
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (24)
; 1644 if .CCB [C_CHN] eqla 0 then return;
; 1645
; 1646 MSG_CNT = .DB [D_TRANSMIT_BUFFER_SIZE];
; 1647
; 1648 do
; 1649 begin
; 1650
; 1651 if (MSG_CNT = .MSG_CNT - .CCB [C_CNT]) lss 0
; 1652 then
; 1653 SIGNAL_STOP (DMC$_MTL, .DB [$SUB_FIELD (D_ASSIGNABLE_TRANSMIT_CCBS, LIST_LAST)]);
; 1654
; 1655 end
; 1656 while (CCB = .CCB [C_CHN]) neq 0;
; 1657
; 1658 end; !of routine QUEUE_TRANSMIT
.GLOBL KISAR6, $CMQIN
.SBTTL QUEUE.TRANSMIT
000000 010146 QUEUE.TRANSMIT:
MOV R1,-(SP) ; 1592
000002 010346 MOV R3,-(SP)
000004 010546 MOV R5,-(SP)
000006 010501 MOV R5,R1 ; *,DB
000010 126127 000034 000004 CMPB 34(R1),#4 ; *(DB),* 1625
000016 001025 BNE 3$
000020 016703 000000G MOV KISAR6,R3 ; *,SAVE.MAP 1630
000024 016467 000016 000000G MOV 16(R4),KISAR6 ; *(CCB),* 1631
000032 005000 CLR R0 ; 1632
000034 157400 000020 BISB @20(R4),R0 ; *(CCB),*
000040 020027 000010 CMP R0,#10
000044 001403 BEQ 1$
000046 020027 000014 CMP R0,#14
000052 001005 BNE 2$
000054 016400 000020 1$: MOV 20(R4),R0 ; *(CCB),* 1635
000060 112760 000014 000001 MOVB #14,1(R0)
000066 010367 000000G 2$: MOV R3,KISAR6 ; SAVE.MAP,* 1637
000072 005261 000110 3$: INC 110(R1) ; *(DB) 1640
000076 105261 000115 INCB 115(R1) ; *(DB) 1641
000102 010105 MOV R1,R5 ; DB,* 1642
000104 062705 000054 ADD #54,R5
000110 010503 MOV R5,R3
000112 004767 000000G JSR PC,$CMQIN
000116 005764 000002 TST 2(R4) ; *(CCB) 1644
000122 001422 BEQ 6$
000124 016103 000064 MOV 64(R1),R3 ; *(DB),MSG.CNT 1646
000130 166403 000022 4$: SUB 22(R4),R3 ; *(CCB),MSG.CNT 1651
000134 100012 BPL 5$
000136 016146 000056 MOV 56(R1),-(SP) ; *(DB),* 1653
000142 012746 100024 MOV #-77754,-(SP)
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 58
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (24)
000146 012746 000002 MOV #2,-(SP)
000152 004767 000000G JSR PC,$STOP
000156 062706 000006 ADD #6,SP
000162 016404 000002 5$: MOV 2(R4),R4 ; *(CCB),CCB 1656
000166 001360 BNE 4$
000170 012605 6$: MOV (SP)+,R5 ; 1592
000172 012603 MOV (SP)+,R3
000174 012601 MOV (SP)+,R1
000176 000207 RTS PC
; Routine Size: 64 words, Routine Base: $CODE$ + 3106
; Maximum stack depth per invocation: 7 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 59
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (25)
; 1659 routine RECEIVE_IN (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
; 1660
; 1661 !++
; 1662 ! FUNCTIONAL DESCRIPTION:
; 1663 !
; 1664 !
; 1665 ! FORMAL PARAMETERS:
; 1666 ! DB = address of DMC data base.
; 1667 !
; 1668 ! IMPLICIT INPUTS:
; 1669 ! None
; 1670 !
; 1671 ! IMPLICIT OUTPUTS:
; 1672 ! None
; 1673 !
; 1674 ! ROUTINE VALUE:
; 1675 ! COMPLETION CODES:
; 1676 ! None
; 1677 !
; 1678 ! SIDE EFFECTS:
; 1679 ! None
; 1680 !--
; 1681
; 1682 begin
; 1683 GET_DMC_DATA_BASE (DB)
; 1684
; 1685 local
; 1686 CCB : ref block field (C_FIELDS);
; 1687
; 1688 if not CMQRM$ (DB [D_ASSIGNABLE_RECEIVE_CCBS], CCB)
; 1689 then
; 1690 return SIGNAL_STOP (DMC$_QUE, DB [D_ASSIGNABLE_RECEIVE_CCBS]);
; 1691
; 1692 DB [D_ASSIGNABLE_RECEIVE_COUNT] = .DB [D_ASSIGNABLE_RECEIVE_COUNT] - 1;
; 1693 CMQIN$ (DB [D_ASSIGNED_RECEIVE_CCBS], .CCB);
; 1694 begin
; 1695
; 1696 local
; 1697 TEMP;
; 1698
; 1699 $MCB_CONVERT_TO_UBA_ADDRESS ((.CCB [C_BIAS], .CCB [C_ADDR]), .LOW, TEMP);
; 1700 TEMP = .TEMP^%fieldexpand (BA_HIGH, 1);
; 1701 .HIGH = (TEMP = .TEMP + .MCB$GW_RDB_SIZE);
; 1702 end;
; 1703 end; !of routine RECEIVE_IN
.SBTTL RECEIVE.IN
000000 010546 RECEIVE.IN:
MOV R5,-(SP) ; 1659
000002 010500 MOV R5,R0 ; DB,* 1688
000004 062700 000044 ADD #44,R0
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 60
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (25)
000010 010003 MOV R0,R3
000012 004767 000000G JSR PC,$CMQRM
000016 103012 BHIS 1$
000020 010046 MOV R0,-(SP) ; 1690
000022 012746 100034 MOV #-77744,-(SP)
000026 012746 000002 MOV #2,-(SP)
000032 004767 000000G JSR PC,$STOP
000036 062706 000006 ADD #6,SP
000042 000425 BR 2$
000044 105365 000114 1$: DECB 114(R5) ; *(DB) 1692
000050 062705 000050 ADD #50,R5 ; *,DB 1693
000054 010503 MOV R5,R3
000056 004767 000000G JSR PC,$CMQIN
000062 016402 000016 MOV 16(R4),R2 ; *(CCB),* 1699
000066 016403 000020 MOV 20(R4),R3 ; *(CCB),*
000072 004767 000000G JSR PC,$PHY18
000076 010376 000006 MOV R3,@6(SP) ; *,LOW
000102 072227 000016 ASH #16,R2 ; 1700
000106 066702 000000G ADD .RDBSZ,R2 ; *,TEMP 1701
000112 010276 000004 MOV R2,@4(SP) ; TEMP,HIGH
000116 012605 2$: MOV (SP)+,R5 ; 1659
000120 000207 RTS PC
; Routine Size: 41 words, Routine Base: $CODE$ + 3306
; Maximum stack depth per invocation: 5 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 61
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (26)
; 1704 routine RECEIVE_OUT (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
; 1705
; 1706 !++
; 1707 ! FUNCTIONAL DESCRIPTION:
; 1708 !
; 1709 !
; 1710 ! FORMAL PARAMETERS:
; 1711 ! DB = address of DMC data base.
; 1712 !
; 1713 ! IMPLICIT INPUTS:
; 1714 ! None
; 1715 !
; 1716 ! IMPLICIT OUTPUTS:
; 1717 ! None
; 1718 !
; 1719 ! ROUTINE VALUE:
; 1720 ! COMPLETION CODES:
; 1721 ! None
; 1722 !
; 1723 ! SIDE EFFECTS:
; 1724 ! None
; 1725 !--
; 1726
; 1727 begin
; 1728 GET_DMC_DATA_BASE (DB)
; 1729
; 1730 map
; 1731 HIGH : block [1] field (DMC_FIELDS),
; 1732 LOW : block [1] field (DMC_FIELDS);
; 1733
; 1734 local
; 1735 CCB : ref block field (C_FIELDS);
; 1736
; 1737 if not CMQRM$ (DB [D_ASSIGNED_RECEIVE_CCBS], CCB)
; 1738 then
; 1739 SIGNAL_STOP (DMC$_QUE, DB [D_ASSIGNED_RECEIVE_CCBS]);
; 1740
; 1741 if not CHECK_BA (DB [D_TIM], .CCB [C_BIAS], .CCB [C_ADDR])
; 1742 then
; 1743 begin
; 1744 RDBRT$ (.CCB);
; 1745 COUNTER_INCREMENT (DB, D_RECEIVE_BA_MISMATCH);
; 1746 COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
; 1747 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 1748 MASTER_CLEAR (DB [D_TIM]);
; 1749 return;
; 1750 end;
; 1751
; 1752 CCB [C_CNT] = .HIGH [CC];
; 1753
; 1754 if .DB [D_PROTOCOL_STATE] eql DS_RUNNING
; 1755 then
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 62
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (26)
; 1756 begin
; 1757 COUNTER_ADD (DB, D_BYTES_RECEIVED, .CCB [C_CNT]);
; 1758 COUNTER_INCREMENT (DB, D_BLOCKS_RECEIVED);
; 1759 end;
; 1760
; 1761 DB [DF_PROTOCOL_UP] = TRUE;
; 1762 SCHEDULE_RECEIVE (.CCB, DB [D_TIM]);
; 1763 DB [DF_WAITING_FOR_RECEIVE] = FALSE;
; 1764 end; !of routine RECEIVE_OUT
.GLOBL $AC32, $IC32
.SBTTL RECEIVE.OUT
000000 010146 RECEIVE.OUT:
MOV R1,-(SP) ; 1704
000002 005746 TST -(SP)
000004 012703 000050 MOV #50,R3 ; 1737
000010 060503 ADD R5,R3 ; DB,*
000012 004767 000000G JSR PC,$CMQRM
000016 103402 BCS 1$
000020 010416 MOV R4,(SP) ; $MCB$R4,CCB
000022 000411 BR 2$
000024 010346 1$: MOV R3,-(SP) ; 1739
000026 012746 100034 MOV #-77744,-(SP)
000032 012746 000002 MOV #2,-(SP)
000036 004767 000000G JSR PC,$STOP
000042 062706 000006 ADD #6,SP
000046 011600 2$: MOV (SP),R0 ; CCB,* 1741
000050 016002 000016 MOV 16(R0),R2 ; *(CCB),*
000054 016003 000020 MOV 20(R0),R3 ; *(CCB),*
000060 004767 174324 JSR PC,CHECK.BA
000064 006000 ROR R0
000066 103422 BLO 3$
000070 011604 MOV (SP),R4 ; CCB,* 1744
000072 004767 000000G JSR PC,$RDBRT
000076 052765 001000 000152 BIS #1000,152(R5) ; *,*(DB) 1745
000104 012700 000152 MOV #152,R0 ; 1746
000110 060500 ADD R5,R0 ; DB,*
000112 004767 000000G JSR PC,$IC8
000116 012703 100174 MOV #-77604,R3 ; 1747
000122 004767 000000V JSR PC,SEND.PERSISTENT.ERROR
000126 004767 176550 JSR PC,MASTER.CLEAR ; 1748
000132 000440 BR 5$ ; 1743
000134 011600 3$: MOV (SP),R0 ; CCB,* 1752
000136 016660 000006 000022 MOV 6(SP),22(R0) ; HIGH,*(CCB)
000144 042760 140000 000022 BIC #140000,22(R0) ; *,*(CCB)
000152 126527 000034 000003 CMPB 34(R5),#3 ; *(DB),* 1754
000160 001015 BNE 4$
000162 012700 000126 MOV #126,R0 ; 1757
000166 060500 ADD R5,R0 ; DB,*
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 63
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (26)
000170 011602 MOV (SP),R2 ; CCB,*
000172 016201 000022 MOV 22(R2),R1 ; *(CCB),*
000176 004767 000000G JSR PC,$AC32
000202 012700 000136 MOV #136,R0 ; 1758
000206 060500 ADD R5,R0 ; DB,*
000210 004767 000000G JSR PC,$IC32
000214 052765 020000 000032 4$: BIS #20000,32(R5) ; *,*(DB) 1761
000222 011604 MOV (SP),R4 ; CCB,* 1762
000224 004767 000000V JSR PC,SCHEDULE.RECEIVE
000230 042715 100000 BIC #100000,(R5) ; *,DB 1763
000234 005726 5$: TST (SP)+ ; 1704
000236 012601 MOV (SP)+,R1
000240 000207 RTS PC
; Routine Size: 81 words, Routine Base: $CODE$ + 3430
; Maximum stack depth per invocation: 6 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 64
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (27)
; 1765 routine RESET_TIMER (DB) : LINKAGE_DB novalue =
; 1766
; 1767 !++
; 1768 ! FUNCTIONAL DESCRIPTION:
; 1769 !
; 1770 !
; 1771 ! FORMAL PARAMETERS:
; 1772 ! DB = address of DMC data base.
; 1773 !
; 1774 ! IMPLICIT INPUTS:
; 1775 ! None
; 1776 !
; 1777 ! IMPLICIT OUTPUTS:
; 1778 ! None
; 1779 !
; 1780 ! ROUTINE VALUE:
; 1781 ! COMPLETION CODES:
; 1782 ! None
; 1783 !
; 1784 ! SIDE EFFECTS:
; 1785 ! None
; 1786 !--
; 1787
; 1788 begin
; 1789 GET_DMC_DATA_BASE (DB)
; 1790 DB [D_TIM] = 0;
; 1791
; 1792 selectone TRUE of
; 1793 set
; 1794 [.DB [DF_WAITING_FOR_RDYI]] :
; 1795 DB [D_TIM] = .DB [D_TIM] + 1;
; 1796
; 1797 [.DB [DF_FLUSHING_DMC]] :
; 1798 DB [D_TIM] = 3;
; 1799
; 1800 [.DB [D_TRANSIENT_ERROR] neq 0] :
; 1801 DB [D_TIM] = 2;
; 1802
; 1803 [.DB [D_PERSISTENT_ERROR] neq 0] :
; 1804 DB [D_TIM] = 2;
; 1805
; 1806 [.DB [D_ASSIGNED_TRANSMIT_COUNT] neq 0] :
; 1807 DB [D_TIM] = .DB [D_TRANSMIT_TIMEOUT];
; 1808
; 1809 [.DB [DF_WAITING_FOR_RECEIVE]] :
; 1810 DB [D_TIM] = .DB [D_SERVICE_TIMER];
; 1811
; 1812 tes;
; 1813 end; !of routine RESET_TIMER
.SBTTL RESET.TIMER
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 65
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (27)
000000 105015 RESET.TIMER:
CLRB (R5) ; DB 1790
000002 032715 004000 BIT #4000,(R5) ; *,DB 1792
000006 001402 BEQ 1$
000010 105215 INCB (R5) ; DB 1795
000012 000207 RTS PC ; 1792
000014 032715 010000 1$: BIT #10000,(R5) ; *,DB
000020 001403 BEQ 2$
000022 112715 000003 MOVB #3,(R5) ; *,DB 1798
000026 000207 RTS PC ; 1792
000030 005765 000104 2$: TST 104(R5) ; *(DB) 1800
000034 001003 BNE 3$ ; 1801
000036 005765 000106 TST 106(R5) ; *(DB) 1803
000042 001403 BEQ 4$
000044 112715 000002 3$: MOVB #2,(R5) ; *,DB 1804
000050 000207 RTS PC ; 1792
000052 105765 000117 4$: TSTB 117(R5) ; *(DB) 1806
000056 001403 BEQ 5$
000060 116515 000041 MOVB 41(R5),(R5) ; *(DB),DB 1807
000064 000207 RTS PC ; 1792
000066 005715 5$: TST (R5) ; DB
000070 100002 BPL 6$
000072 116515 000076 MOVB 76(R5),(R5) ; *(DB),DB 1810
000076 000207 6$: RTS PC ; 1765
; Routine Size: 32 words, Routine Base: $CODE$ + 3672
; Maximum stack depth per invocation: 0 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 66
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (28)
; 1814 routine SCHEDULE_PERSISTENT_AST (CCB, DB) : DMC_CCB_DB novalue =
; 1815
; 1816 !++
; 1817 ! FUNCTIONAL DESCRIPTION:
; 1818 !
; 1819 !
; 1820 ! FORMAL PARAMETERS:
; 1821 ! CCB = address of CCB to use for status nodification.
; 1822 ! DB = address of DMC data base.
; 1823 !
; 1824 ! IMPLICIT INPUTS:
; 1825 ! None
; 1826 !
; 1827 ! IMPLICIT OUTPUTS:
; 1828 ! None
; 1829 !
; 1830 ! ROUTINE VALUE:
; 1831 ! COMPLETION CODES:
; 1832 ! None
; 1833 !
; 1834 ! SIDE EFFECTS:
; 1835 ! None
; 1836 !--
; 1837
; 1838 begin
; 1839 GET_DMC_DATA_BASE (DB)
; 1840
; 1841 map
; 1842 CCB : ref block field (C_FIELDS);
; 1843
; 1844 CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
; 1845 CCB [C_FNC] = FC_AST;
; 1846 CCB [C_MOD] = DLL$K_PERSISTENT_ERROR;
; 1847 CCB [C_STS] = .DB [D_PERSISTENT_ERROR];
; 1848 $MCB_SCHEDULE_CCB (.CCB);
; 1849 DB [D_PERSISTENT_ERROR] = 0;
; 1850 end; !of routine SCHEDULE_PERSISTENT_AST
.SBTTL SCHEDULE.PERSISTENT.AST
000000 016564 000042 000010 SCHEDULE.PERSISTENT.AST:
MOV 42(R5),10(R4) ; *(DB),*(CCB) 1844
000006 105064 000012 CLRB 12(R4) ; *(CCB) 1845
000012 112764 000004 000013 MOVB #4,13(R4) ; *,*(CCB) 1846
000020 016564 000106 000014 MOV 106(R5),14(R4) ; *(DB),*(CCB) 1847
000026 004767 000000G JSR PC,$SCHED ; 1848
000032 005065 000106 CLR 106(R5) ; *(DB) 1849
000036 000207 RTS PC ; 1814
; Routine Size: 16 words, Routine Base: $CODE$ + 3772
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 67
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (29)
; 1851 routine SCHEDULE_RECEIVE (CCB, DB) : DMC_CCB_DB novalue =
; 1852
; 1853 !++
; 1854 ! FUNCTIONAL DESCRIPTION:
; 1855 !
; 1856 !
; 1857 ! FORMAL PARAMETERS:
; 1858 ! DB = address of DMC data base.
; 1859 !
; 1860 ! IMPLICIT INPUTS:
; 1861 ! None
; 1862 !
; 1863 ! IMPLICIT OUTPUTS:
; 1864 ! None
; 1865 !
; 1866 ! ROUTINE VALUE:
; 1867 ! COMPLETION CODES:
; 1868 ! None
; 1869 !
; 1870 ! SIDE EFFECTS:
; 1871 ! None
; 1872 !--
; 1873
; 1874 begin
; 1875 GET_DMC_DATA_BASE (DB)
; 1876
; 1877 map
; 1878 CCB : ref block field (C_FIELDS);
; 1879
; 1880 CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
; 1881
; 1882 if .CCB [C_HANDLE] eqlu 0 then return RDBRT$ (.CCB);
; 1883
; 1884 DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] + 1;
; 1885 CCB [C_FNC] = FC_RCP;
; 1886 CCB [C_MOD] = DLL$K_DATA_RECEIVED;
; 1887 CCB [C_STS] = DLL$_SUCCESS;
; 1888 $MCB_SCHEDULE_CCB (.CCB);
; 1889 end; !of routine SCHEDULE_RECEIVE
.SBTTL SCHEDULE.RECEIVE
000000 010400 SCHEDULE.RECEIVE:
MOV R4,R0 ; *,CCB 1851
000002 016560 000042 000010 MOV 42(R5),10(R0) ; *(DB),*(CCB) 1880
000010 001003 BNE 1$ ; 1882
000012 004767 000000G JSR PC,$RDBRT
000016 000207 RTS PC
000020 005265 000110 1$: INC 110(R5) ; *(DB) 1884
000024 112760 000016 000012 MOVB #16,12(R0) ; *,*(CCB) 1885
000032 105060 000013 CLRB 13(R0) ; *(CCB) 1886
000036 012760 100001 000014 MOV #-77777,14(R0) ; *,*(CCB) 1887
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 68
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (29)
000044 010004 MOV R0,R4 ; CCB,* 1888
000046 004767 000000G JSR PC,$SCHED
000052 000207 RTS PC ; 1851
; Routine Size: 22 words, Routine Base: $CODE$ + 4032
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 69
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (30)
; 1890 routine SCHEDULE_STATE_AST (CCB, DB) : DMC_CCB_DB novalue =
; 1891
; 1892 !++
; 1893 ! FUNCTIONAL DESCRIPTION:
; 1894 !
; 1895 !
; 1896 ! FORMAL PARAMETERS:
; 1897 ! CCB = address of CCB to use for status nodification.
; 1898 ! DB = address of DMC data base.
; 1899 !
; 1900 ! IMPLICIT INPUTS:
; 1901 ! None
; 1902 !
; 1903 ! IMPLICIT OUTPUTS:
; 1904 ! None
; 1905 !
; 1906 ! ROUTINE VALUE:
; 1907 ! COMPLETION CODES:
; 1908 ! None
; 1909 !
; 1910 ! SIDE EFFECTS:
; 1911 ! None
; 1912 !--
; 1913
; 1914 begin
; 1915 GET_DMC_DATA_BASE (DB)
; 1916
; 1917 map
; 1918 CCB : ref block field (C_FIELDS);
; 1919
; 1920 if not .DB [DF_NOTIFY_STATE] then return $MCB_RETURN_CCB (.CCB);
; 1921
; 1922 CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
; 1923 CCB [C_FNC] = FC_AST;
; 1924 CCB [C_MOD] = DLL$K_STATE;
; 1925 CCB [C_STS] = CURRENT_STATUS (DB [D_TIM]);
; 1926 $MCB_SCHEDULE_CCB (.CCB);
; 1927
; 1928 if .DB [DF_NOTIFY_STATE]
; 1929 then
; 1930
; 1931 if $MCB_GET_CCB (CCB)
; 1932 then
; 1933 SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
; 1934 else
; 1935 $MCB_REQUEST_CCB ();
; 1936
; 1937 end; !of routine SCHEDULE_STATE_AST
.GLOBL $CCBRT, $CCBGT, $CCBRQ
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 70
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (30)
.SBTTL SCHEDULE.STATE.AST
000000 010146 SCHEDULE.STATE.AST:
MOV R1,-(SP) ; 1890
000002 010401 MOV R4,R1 ; *,CCB
000004 032715 001000 BIT #1000,(R5) ; *,DB 1920
000010 001003 BNE 1$
000012 004767 000000G JSR PC,$CCBRT
000016 000432 BR 3$
000020 016561 000042 000010 1$: MOV 42(R5),10(R1) ; *(DB),*(CCB) 1922
000026 105061 000012 CLRB 12(R1) ; *(CCB) 1923
000032 105061 000013 CLRB 13(R1) ; *(CCB) 1924
000036 004767 175134 JSR PC,CURRENT.STATUS ; 1925
000042 010061 000014 MOV R0,14(R1) ; *,*(CCB)
000046 010104 MOV R1,R4 ; CCB,* 1926
000050 004767 000000G JSR PC,$SCHED
000054 032715 001000 BIT #1000,(R5) ; *,DB 1928
000060 001411 BEQ 3$
000062 004767 000000G JSR PC,$CCBGT ; 1931
000066 103404 BCS 2$
000070 010401 MOV R4,R1 ; $MCB$R4,CCB
000072 004767 177702 JSR PC,SCHEDULE.STATE.AST ; 1933
000076 000402 BR 3$ ; 1931
000100 004767 000000G 2$: JSR PC,$CCBRQ ; 1935
000104 012601 3$: MOV (SP)+,R1 ; 1890
000106 000207 RTS PC
; Routine Size: 36 words, Routine Base: $CODE$ + 4106
; Maximum stack depth per invocation: 2 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 71
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (31)
; 1938 routine SCHEDULE_TRANSIENT_AST (CCB, DB) : DMC_CCB_DB novalue =
; 1939
; 1940 !++
; 1941 ! FUNCTIONAL DESCRIPTION:
; 1942 !
; 1943 !
; 1944 ! FORMAL PARAMETERS:
; 1945 ! CCB = address of CCB to use for status nodification.
; 1946 ! DB = address of DMC data base.
; 1947 !
; 1948 ! IMPLICIT INPUTS:
; 1949 ! None
; 1950 !
; 1951 ! IMPLICIT OUTPUTS:
; 1952 ! None
; 1953 !
; 1954 ! ROUTINE VALUE:
; 1955 ! COMPLETION CODES:
; 1956 ! None
; 1957 !
; 1958 ! SIDE EFFECTS:
; 1959 ! None
; 1960 !--
; 1961
; 1962 begin
; 1963 GET_DMC_DATA_BASE (DB)
; 1964
; 1965 map
; 1966 CCB : ref block field (C_FIELDS);
; 1967
; 1968 CCB [C_HANDLE] = .DB [D_OWNER_HANDLE];
; 1969 CCB [C_FNC] = FC_AST;
; 1970 CCB [C_MOD] = DLL$K_TRANSIENT_ERROR;
; 1971 CCB [C_STS] = .DB [D_TRANSIENT_ERROR];
; 1972 $MCB_SCHEDULE_CCB (.CCB);
; 1973 DB [D_TRANSIENT_ERROR] = 0;
; 1974 end; !of routine SCHEDULE_TRANSIENT_AST
.SBTTL SCHEDULE.TRANSIENT.AST
000000 016564 000042 000010 SCHEDULE.TRANSIENT.AST:
MOV 42(R5),10(R4) ; *(DB),*(CCB) 1968
000006 105064 000012 CLRB 12(R4) ; *(CCB) 1969
000012 112764 000002 000013 MOVB #2,13(R4) ; *,*(CCB) 1970
000020 016564 000104 000014 MOV 104(R5),14(R4) ; *(DB),*(CCB) 1971
000026 004767 000000G JSR PC,$SCHED ; 1972
000032 005065 000104 CLR 104(R5) ; *(DB) 1973
000036 000207 RTS PC ; 1938
; Routine Size: 16 words, Routine Base: $CODE$ + 4216
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 72
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (32)
; 1975 routine SCHEDULE_TRANSMIT (CCB, DB, STATUS) : DMC_CCB_DB_STS novalue =
; 1976
; 1977 !++
; 1978 ! FUNCTIONAL DESCRIPTION:
; 1979 !
; 1980 !
; 1981 ! FORMAL PARAMETERS:
; 1982 ! DB = address of DMC data base.
; 1983 !
; 1984 ! IMPLICIT INPUTS:
; 1985 ! None
; 1986 !
; 1987 ! IMPLICIT OUTPUTS:
; 1988 ! None
; 1989 !
; 1990 ! ROUTINE VALUE:
; 1991 ! COMPLETION CODES:
; 1992 ! None
; 1993 !
; 1994 ! SIDE EFFECTS:
; 1995 ! None
; 1996 !--
; 1997
; 1998 begin
; 1999 GET_DMC_DATA_BASE (DB)
; 2000
; 2001 map
; 2002 CCB : ref block field (C_FIELDS);
; 2003
; 2004 CCB [C_FNC] = FC_XCP;
; 2005 CCB [C_STS] = .STATUS;
; 2006 $MCB_SCHEDULE_CCB (.CCB);
; 2007
; 2008 DB [D_ACTIVE_BUFFERS] = .DB [D_ACTIVE_BUFFERS] - 1;
; 2009
; 2010 if .DB [D_ACTIVE_BUFFERS] neq 0 then return;
; 2011
; 2012 if .DB [DF_CTL] then CTLNXT (DB [D_TIM]);
; 2013
; 2014 end; !of routine SCHEDULE_TRANSMIT
.SBTTL SCHEDULE.TRANSMIT
000000 112764 000014 000012 SCHEDULE.TRANSMIT:
MOVB #14,12(R4) ; *,*(CCB) 2004
000006 010064 000014 MOV R0,14(R4) ; STATUS,*(CCB) 2005
000012 004767 000000G JSR PC,$SCHED ; 2006
000016 005365 000110 DEC 110(R5) ; *(DB) 2008
000022 001006 BNE 1$ ; 2010
000024 032765 040000 000032 BIT #40000,32(R5) ; *,*(DB) 2012
000032 001402 BEQ 1$
000034 004767 174546 JSR PC,CTLNXT
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 73
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (32)
000040 000207 1$: RTS PC ; 1975
; Routine Size: 17 words, Routine Base: $CODE$ + 4256
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 74
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (33)
; 2015 routine SEND_PERSISTENT_ERROR (DB, STATUS) : DMC_DB_STS novalue =
; 2016
; 2017 !++
; 2018 ! FUNCTIONAL DESCRIPTION:
; 2019 !
; 2020 !
; 2021 ! FORMAL PARAMETERS:
; 2022 ! DB = address of DMC data base.
; 2023 !
; 2024 ! IMPLICIT INPUTS:
; 2025 ! None
; 2026 !
; 2027 ! IMPLICIT OUTPUTS:
; 2028 ! None
; 2029 !
; 2030 ! ROUTINE VALUE:
; 2031 ! COMPLETION CODES:
; 2032 ! None
; 2033 !
; 2034 ! SIDE EFFECTS:
; 2035 ! None
; 2036 !--
; 2037
; 2038 begin
; 2039 GET_DMC_DATA_BASE (DB)
; 2040
; 2041 local
; 2042 CCB : ref block field (C_FIELDS);
; 2043
; 2044 if .DB [D_OWNER_HANDLE] eql 0 then return;
; 2045
; 2046 DB [D_PERSISTENT_ERROR] = .STATUS;
; 2047
; 2048 if $MCB_GET_CCB (CCB)
; 2049 then
; 2050 SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM])
; 2051 else
; 2052 $MCB_REQUEST_CCB ();
; 2053
; 2054 end; !of routine SEND_PERSISTENT_ERROR
.SBTTL SEND.PERSISTENT.ERROR
000000 005765 000042 SEND.PERSISTENT.ERROR:
TST 42(R5) ; *(DB) 2044
000004 001412 BEQ 2$
000006 010365 000106 MOV R3,106(R5) ; STATUS,*(DB) 2046
000012 004767 000000G JSR PC,$CCBGT ; 2048
000016 103403 BCS 1$
000020 004767 177426 JSR PC,SCHEDULE.PERSISTENT.AST ; 2050
000024 000207 RTS PC ; 2048
000026 004767 000000G 1$: JSR PC,$CCBRQ ; 2052
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 75
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (33)
000032 000207 2$: RTS PC ; 2015
; Routine Size: 14 words, Routine Base: $CODE$ + 4320
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 76
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (34)
; 2055 routine SEND_STATE (DB) : DMC_DB novalue =
; 2056
; 2057 !++
; 2058 ! FUNCTIONAL DESCRIPTION:
; 2059 !
; 2060 !
; 2061 ! FORMAL PARAMETERS:
; 2062 ! DB = address of DMC data base.
; 2063 !
; 2064 ! IMPLICIT INPUTS:
; 2065 ! None
; 2066 !
; 2067 ! IMPLICIT OUTPUTS:
; 2068 ! None
; 2069 !
; 2070 ! ROUTINE VALUE:
; 2071 ! COMPLETION CODES:
; 2072 ! None
; 2073 !
; 2074 ! SIDE EFFECTS:
; 2075 ! None
; 2076 !--
; 2077
; 2078 begin
; 2079 GET_DMC_DATA_BASE (DB)
; 2080
; 2081 local
; 2082 CCB : ref block field (C_FIELDS);
; 2083
; 2084 if .DB [D_OWNER_HANDLE] eql 0 then return;
; 2085
; 2086 if .DB [D_PROTOCOL_STATE] eql DS_HALTED then DB [DF_NOTIFY_OFF] = TRUE;
; 2087
; 2088 DB [DF_NOTIFY_STATE] = TRUE;
; 2089
; 2090 if $MCB_GET_CCB (CCB)
; 2091 then
; 2092 SCHEDULE_STATE_AST (.CCB, DB [D_TIM])
; 2093 else
; 2094 $MCB_REQUEST_CCB ();
; 2095
; 2096 end; !of routine SEND_STATE
.SBTTL SEND.STATE
000000 005765 000042 SEND.STATE:
TST 42(R5) ; *(DB) 2084
000004 001417 BEQ 3$
000006 105765 000034 TSTB 34(R5) ; *(DB) 2086
000012 001002 BNE 1$
000014 052715 000400 BIS #400,(R5) ; *,DB
000020 052715 001000 1$: BIS #1000,(R5) ; *,DB 2088
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 77
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (34)
000024 004767 000000G JSR PC,$CCBGT ; 2090
000030 103403 BCS 2$
000032 004767 177474 JSR PC,SCHEDULE.STATE.AST ; 2092
000036 000207 RTS PC ; 2090
000040 004767 000000G 2$: JSR PC,$CCBRQ ; 2094
000044 000207 3$: RTS PC ; 2055
; Routine Size: 19 words, Routine Base: $CODE$ + 4354
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 78
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (35)
; 2097 routine SEND_TRANSIENT_ERROR (DB, STATUS) : DMC_DB_STS novalue =
; 2098
; 2099 !++
; 2100 ! FUNCTIONAL DESCRIPTION:
; 2101 !
; 2102 !
; 2103 ! FORMAL PARAMETERS:
; 2104 ! DB = address of DMC data base.
; 2105 !
; 2106 ! IMPLICIT INPUTS:
; 2107 ! None
; 2108 !
; 2109 ! IMPLICIT OUTPUTS:
; 2110 ! None
; 2111 !
; 2112 ! ROUTINE VALUE:
; 2113 ! COMPLETION CODES:
; 2114 ! None
; 2115 !
; 2116 ! SIDE EFFECTS:
; 2117 ! None
; 2118 !--
; 2119
; 2120 begin
; 2121 GET_DMC_DATA_BASE (DB)
; 2122
; 2123 local
; 2124 CCB : ref block field (C_FIELDS);
; 2125
; 2126 if .DB [D_OWNER_HANDLE] eql 0 then return;
; 2127
; 2128 DB [D_TRANSIENT_ERROR] = .STATUS;
; 2129
; 2130 if $MCB_GET_CCB (CCB)
; 2131 then
; 2132 SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM])
; 2133 else
; 2134 $MCB_REQUEST_CCB ();
; 2135
; 2136 end; !of routine SEND_TRANSIENT_ERROR
.SBTTL SEND.TRANSIENT.ERROR
000000 005765 000042 SEND.TRANSIENT.ERROR:
TST 42(R5) ; *(DB) 2126
000004 001412 BEQ 2$
000006 010365 000104 MOV R3,104(R5) ; STATUS,*(DB) 2128
000012 004767 000000G JSR PC,$CCBGT ; 2130
000016 103403 BCS 1$
000020 004767 177550 JSR PC,SCHEDULE.TRANSIENT.AST ; 2132
000024 000207 RTS PC ; 2130
000026 004767 000000G 1$: JSR PC,$CCBRQ ; 2134
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 79
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (35)
000032 000207 2$: RTS PC ; 2097
; Routine Size: 14 words, Routine Base: $CODE$ + 4422
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 80
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)
; 2137 routine SERVICE_DMC (DB) : MCB_DB novalue =
; 2138
; 2139 !++
; 2140 ! FUNCTIONAL DESCRIPTION:
; 2141 !
; 2142 !
; 2143 ! FORMAL PARAMETERS:
; 2144 ! DB = address of DMC data base.
; 2145 !
; 2146 ! IMPLICIT INPUTS:
; 2147 ! None
; 2148 !
; 2149 ! IMPLICIT OUTPUTS:
; 2150 ! None
; 2151 !
; 2152 ! ROUTINE VALUE:
; 2153 ! COMPLETION CODES:
; 2154 ! None
; 2155 !
; 2156 ! SIDE EFFECTS:
; 2157 ! None
; 2158 !--
; 2159
; 2160 begin
; 2161 GET_DMC_DATA_BASE (DB)
; 2162
; 2163 label
; 2164 SERVICE_FOUND;
; 2165
; 2166 bind
; 2167 CSR = .DB [D_REGISTER];
; 2168
; 2169 DB [DF_SERVICING_DMC] = TRUE;
; 2170
; 2171 do
; 2172 SERVICE_FOUND : begin
; 2173
; 2174 case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
; 2175 set
; 2176 [DD_CLEARED, DD_MASTER_CLEARED, DD_SHUT_DOWN] :
; 2177 begin
; 2178 DB [DF_SERVICING_DMC] = FALSE;
; 2179 return;
; 2180 end;
; 2181 [inrange] :
; 2182 NO_OPERATION;
; 2183 tes;
; 2184
; 2185 decru COUNT from 4 to 1 do
; 2186 begin
; 2187
; 2188 if not $DMC_BITS_CLEAR (CSR, SEL0, RDYI)
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 81
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)
; 2189 then
; 2190 begin
; 2191
; 2192 if not $DMC_BITS_CLEAR (CSR, SEL0, RQI)
; 2193 then
; 2194 begin
; 2195 !
; 2196 ! We have requested the input port and
; 2197 ! the DMC has complied.
; 2198 !
; 2199
; 2200 bind
; 2201 BUF = DB [D_INPUT_DATA] : block field (DMC_FIELDS);
; 2202
; 2203 DB [DF_WAITING_FOR_RDYI] = FALSE;
; 2204 RESET_TIMER (DB [D_TIM]);
; 2205 $DMC_WRITE (CSR, SEL6, .BUF [SEL6]);
; 2206 $DMC_WRITE (CSR, SEL4, .BUF [SEL4]);
; 2207 $DMC_CLEAR_BITS (CSR, SEL0, RQI);
; 2208 DB [D_INPUT_COMMAND] = 0;
; 2209 SET_INPUT_REQUEST (DB [D_TIM]);
; 2210 leave SERVICE_FOUND;
; 2211 end
; 2212 else
; 2213 begin
; 2214 !
; 2215 ! We have given the DMC a command
; 2216 ! the DMC is processing it.
; 2217 !
; 2218 NO_OPERATION
; 2219 end;
; 2220
; 2221 end
; 2222 else
; 2223 begin
; 2224
; 2225 if $DMC_BITS_CLEAR (CSR, SEL0, RQI)
; 2226 then
; 2227 begin
; 2228 !
; 2229 ! No input transfer operation in progress.
; 2230 !
; 2231
; 2232 if .DB [D_INPUT_COMMAND] neq 0
; 2233 then
; 2234 begin
; 2235
; 2236 bind
; 2237 BUF = DB [D_INPUT_DATA] : block field (DMC_FIELDS);
; 2238
; 2239 $DMC_WRITE (CSR, BSEL0, .BUF [BSEL0]);
; 2240 DB [DF_WAITING_FOR_RDYI] = TRUE;
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 82
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)
; 2241 RESET_TIMER (DB [D_TIM]);
; 2242 leave SERVICE_FOUND;
; 2243 end;
; 2244
; 2245 end
; 2246 else
; 2247 begin
; 2248 !
; 2249 ! We have requested the input port and
; 2250 ! the DMC hasn't complied yet.
; 2251 !
; 2252 NO_OPERATION
; 2253 end;
; 2254
; 2255 end;
; 2256
; 2257 if not $DMC_BITS_CLEAR (CSR, SEL2, RDYO)
; 2258 then
; 2259 begin
; 2260 !
; 2261 ! The DMC has data for us.
; 2262 !
; 2263
; 2264 bind
; 2265 BUF = DB [D_OUTPUT_DATA] : block field (DMC_FIELDS);
; 2266
; 2267 BUF [SEL0] = $DMC_READ (CSR, SEL0);
; 2268 BUF [SEL2] = $DMC_READ (CSR, SEL2);
; 2269 BUF [SEL4] = $DMC_READ (CSR, SEL4);
; 2270 BUF [SEL6] = $DMC_READ (CSR, SEL6);
; 2271 $DMC_CLEAR_BITS (CSR, SEL2, RDYO);
; 2272 OUTPUT_TRANSFER (DB [D_TIM]);
; 2273 leave SERVICE_FOUND;
; 2274 end;
; 2275
; 2276 end;
; 2277
; 2278 if not $DMC_BITS_CLEAR (CSR, SEL0, RQI)
; 2279 then
; 2280 begin
; 2281 $DMC_SET_BITS (CSR, SEL0, IEI);
; 2282 $DMC_SET_BITS (CSR, SEL0, IEI);
; 2283 end;
; 2284
; 2285 DB [DF_SERVICING_DMC] = FALSE;
; 2286 return;
; 2287 end
; 2288 while TRUE;
; 2289
; 2290 end; !of routine SERVICE_DMC
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 83
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)
.SBTTL SERVICE.DMC
000000 016503 000002 SERVICE.DMC:
MOV 2(R5),R3 ; *(DB),* 2160
000004 052715 040000 BIS #40000,(R5) ; *,DB 2169
000010 116500 000040 1$: MOVB 40(R5),R0 ; *(DB),* 2174
000014 006300 ASL R0
000016 066007 000132' ADD P.AAH(R0),PC ; Case dispatch
000022 000504 2$: BR 8$ ; 2178
000024 012702 000004 3$: MOV #4,R2 ; *,COUNT 2185
000030 105713 4$: TSTB (R3) ; 2188
000032 100026 BPL 5$
000034 032713 000040 BIT #40,(R3) ; 2192
000040 001441 BEQ 6$
000042 012701 000012 MOV #12,R1 ; 2201
000046 060501 ADD R5,R1 ; DB,*
000050 042715 004000 BIC #4000,(R5) ; *,DB 2203
000054 004767 177134 JSR PC,RESET.TIMER ; 2204
000060 016163 000006 000006 MOV 6(R1),6(R3) ; 2205
000066 016163 000004 000004 MOV 4(R1),4(R3) ; 2206
000074 042713 000040 BIC #40,(R3) ; 2207
000100 105011 CLRB (R1) ; 2208
000102 004767 000000V JSR PC,SET.INPUT.REQUEST ; 2209
000106 000740 BR 1$ ; 2194
000110 032713 000040 5$: BIT #40,(R3) ; 2225
000114 001013 BNE 6$
000116 012700 000012 MOV #12,R0 ; 2232
000122 060500 ADD R5,R0 ; DB,*
000124 105710 TSTB (R0)
000126 001406 BEQ 6$
000130 111013 MOVB (R0),(R3) ; 2239
000132 052715 004000 BIS #4000,(R5) ; *,DB 2240
000136 004767 177052 JSR PC,RESET.TIMER ; 2241
000142 000722 BR 1$ ; 2234
000144 105763 000002 6$: TSTB 2(R3) ; 2257
000150 100023 BPL 7$
000152 012700 000022 MOV #22,R0 ; 2259
000156 060500 ADD R5,R0 ; DB,*
000160 011310 MOV (R3),(R0) ; 2267
000162 016360 000002 000002 MOV 2(R3),2(R0) ; 2268
000170 016360 000004 000004 MOV 4(R3),4(R0) ; 2269
000176 016360 000006 000006 MOV 6(R3),6(R0) ; 2270
000204 042763 000200 000002 BIC #200,2(R3) ; 2271
000212 004767 175656 JSR PC,OUTPUT.TRANSFER ; 2272
000216 000674 BR 1$ ; 2259
000220 077275 7$: SOB R2,4$ ; COUNT,* 0000
000222 032713 000040 BIT #40,(R3) ; 2278
000226 001402 BEQ 8$
000230 052713 000100 BIS #100,(R3) ; 2282
000234 042715 040000 8$: BIC #40000,(R5) ; *,DB 2285
000240 000207 RTS PC ; 2137
; Routine Size: 81 words, Routine Base: $CODE$ + 4456
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 84
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (36)
; Maximum stack depth per invocation: 1 word
000132 .PSECT $PLIT$, RO , D
P.AAH: ; CASE Table for SERVICE.DMC+0016 2174
000132 000212 .WORD 212 ; [8$]
000134 000002 .WORD 2 ; [3$]
000136 000002 .WORD 2 ; [3$]
000140 000002 .WORD 2 ; [3$]
000142 000212 .WORD 212 ; [8$]
000144 000212 .WORD 212 ; [8$]
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 85
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)
; 2291 routine SET_INPUT_REQUEST (DB) : LINKAGE_DB novalue =
; 2292
; 2293 !++
; 2294 ! FUNCTIONAL DESCRIPTION:
; 2295 !
; 2296 !
; 2297 ! FORMAL PARAMETERS:
; 2298 ! DB = address of DMC data base.
; 2299 !
; 2300 ! IMPLICIT INPUTS:
; 2301 ! None
; 2302 !
; 2303 ! IMPLICIT OUTPUTS:
; 2304 ! None
; 2305 !
; 2306 ! ROUTINE VALUE:
; 2307 ! COMPLETION CODES:
; 2308 ! None
; 2309 !
; 2310 ! SIDE EFFECTS:
; 2311 ! None
; 2312 !--
; 2313
; 2314 begin
; 2315 GET_DMC_DATA_BASE (DB)
; 2316
; 2317 bind
; 2318 BUF = DB [D_INPUT_DATA] : block field (DMC_FIELDS);
; 2319
; 2320 while .DB [D_CONTROL_FLAGS] neq 0 do
; 2321
; 2322 selectone TRUE of
; 2323 set
; 2324 [.DB [DC_HALT]] :
; 2325 begin
; 2326
; 2327 if .DB [DF_FLUSHING_DMC] then return;
; 2328
; 2329 case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
; 2330 set
; 2331 [DD_RUNNING] :
; 2332 begin
; 2333 DB [DF_FLUSHING_DMC] = TRUE;
; 2334 RESET_TIMER (DB [D_TIM]);
; 2335 BUF [SEL6] = 0;
; 2336 BUF [SEL4] = 0;
; 2337 BUF [BSEL0] = HALT + 1^%fieldexpand (RQI, 1);
; 2338 return;
; 2339 end;
; 2340 [DD_CLEARED, DD_MASTER_CLEARED, DD_HALTED] :
; 2341 DB [DC_HALT] = FALSE;
; 2342 [inrange] :
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 86
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)
; 2343 begin
; 2344 DB [DC_MASTER_CLEAR] = TRUE;
; 2345 DB [DC_HALT] = FALSE;
; 2346 end;
; 2347 tes;
; 2348
; 2349 end;
; 2350 [.DB [DC_MASTER_CLEAR]] :
; 2351 case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
; 2352 set
; 2353 [DD_CLEARED, DD_MASTER_CLEARED] :
; 2354 DB [DC_MASTER_CLEAR] = FALSE;
; 2355 [inrange] :
; 2356 begin
; 2357 MASTER_CLEAR (DB [D_TIM]);
; 2358 DB [DC_MASTER_CLEAR] = FALSE;
; 2359 end;
; 2360 tes;
; 2361 [.DB [DC_ZERO_CIRCUIT_COUNTERS]] :
; 2362 begin
; 2363 ZERO_CIRCUIT_COUNTERS (DB [D_TIM]);
; 2364 DB [DC_ZERO_CIRCUIT_COUNTERS] = FALSE;
; 2365 end;
; 2366 [.DB [DC_ZERO_LINE_COUNTERS]] :
; 2367 begin
; 2368 ZERO_LINE_COUNTERS (DB [D_TIM]);
; 2369 DB [DC_ZERO_LINE_COUNTERS] = FALSE;
; 2370 end;
; 2371 [.DB [DC_BASE_IN]] :
; 2372 case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
; 2373 set
; 2374 [DD_RUNNING] : DB [DC_HALT] = TRUE;
; 2375 [DD_HALTED, DD_MASTER_CLEARED] :
; 2376 begin
; 2377
; 2378 if .DB [D_DEVICE_STATE] eql DD_MASTER_CLEARED
; 2379 then
; 2380 $DMC_SET_BITS (.DB [D_REGISTER], SEL2, IEO);
; 2381
; 2382 BASE_IN (DB [D_TIM], BUF [SEL4], BUF [SEL6]);
; 2383 BUF [$SUB_FIELD (SEL6, RESUME)] = 0;
; 2384
; 2385 if .DB [D_DEVICE_STATE] neq DD_MASTER_CLEARED
; 2386 then
; 2387 BUF [$SUB_FIELD (SEL6, RESUME)] = 1;
; 2388
; 2389 BUF [BSEL0] = BASE_I + 1^%fieldexpand (RQI, 1);
; 2390 DB [DC_BASE_IN] = FALSE;
; 2391 DB [D_DEVICE_STATE] = DD_BASE_TABLE_ASSIGNED;
; 2392 return;
; 2393 end;
; 2394 [DD_BASE_TABLE_ASSIGNED, DD_CLEARED] : DB [DC_BASE_IN] = FALSE;
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 87
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)
; 2395 [inrange] : DB [DC_MASTER_CLEAR] = TRUE;
; 2396 tes;
; 2397 [.DB [DC_CONTROL_IN]] :
; 2398 case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
; 2399 set
; 2400 [DD_BASE_TABLE_ASSIGNED] :
; 2401 begin
; 2402 DB [DC_CONTROL_IN] = FALSE;
; 2403 BUF [SEL4] = 0;
; 2404 BUF [SEL6] = 0;
; 2405
; 2406 if .DB [DF_CONTROLLER_LOOPBACK]
; 2407 then
; 2408 $DMC_SET_BITS (.DB [D_REGISTER], SEL0, LU_LOOP)
; 2409 else
; 2410 $DMC_CLEAR_BITS (.DB [D_REGISTER], SEL0, LU_LOOP);
; 2411
; 2412 if .DB [DF_HALF_DUPLEX]
; 2413 then
; 2414 BUF [$SUB_FIELD (SEL6, HD)] = 1;
; 2415
; 2416 if .DB [D_REQUESTED_STATE] eql DS_MAINTENANCE
; 2417 then
; 2418 BUF [$SUB_FIELD (SEL6, MAINT)] = 1;
; 2419
; 2420 if not .DB [DF_1_SEC]
; 2421 then
; 2422 BUF [$SUB_FIELD (SEL6, SEC)] = 1;
; 2423
; 2424 BUF [BSEL0] = CNTL_I + 1^%fieldexpand (RQI, 1);
; 2425 DB [D_DEVICE_STATE] = DD_RUNNING;
; 2426 CHANGE_PROTOCOL_STATE (DB [D_TIM], .DB [D_REQUESTED_STATE], LCL);
; 2427 return;
; 2428 end;
; 2429 [DD_CLEARED, DD_RUNNING] : DB [DC_CONTROL_IN] = FALSE;
; 2430 [inrange] : DB [DC_BASE_IN] = TRUE;
; 2431 tes;
; 2432 [.DB [DC_SET_REQUESTED_STATE]] :
; 2433
; 2434 selectone TRUE of
; 2435 set
; 2436 [.DB [D_LINE_STATE] neq DL_ON] :
; 2437 DB [DC_SET_REQUESTED_STATE] = FALSE;
; 2438 [.DB [D_DEVICE_STATE] eql DD_CLEARED] :
; 2439 DB [DC_SET_REQUESTED_STATE] = FALSE;
; 2440 [.DB [D_PROTOCOL_STATE] eql .DB [D_REQUESTED_STATE]] :
; 2441 DB [DC_SET_REQUESTED_STATE] = FALSE;
; 2442 [.DB [D_REQUESTED_STATE] eql DS_HALTED] :
; 2443 DB [DC_MASTER_CLEAR] = TRUE;
; 2444 [otherwise] :
; 2445 DB [DC_CONTROL_IN] = TRUE;
; 2446 tes;
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 88
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)
; 2447
; 2448 [.DB [DC_CONTINUE_CONTROL]] :
; 2449 begin
; 2450 DB [DC_CONTINUE_CONTROL] = FALSE;
; 2451
; 2452 if .DB [DF_CTL] then CTLNXT (DB [D_TIM]);
; 2453
; 2454 end;
; 2455 tes;
; 2456
; 2457 if .DB [D_DEVICE_STATE] neq DD_RUNNING then return;
; 2458
; 2459 if .DB [D_ASSIGNED_RECEIVE_COUNT] lssu .DB [D_MAXIMUM_RECEIVE_COUNT]
; 2460 then
; 2461
; 2462 if .DB [D_ASSIGNABLE_RECEIVE_COUNT] neq 0
; 2463 then
; 2464 begin
; 2465 RECEIVE_IN (DB [D_TIM], BUF [SEL4], BUF [SEL6]);
; 2466 BUF [BSEL0] = BA_CC_I + RCV + 1^%fieldexpand (RQI, 1);
; 2467 DB [D_ASSIGNED_RECEIVE_COUNT] = .DB [D_ASSIGNED_RECEIVE_COUNT] + 1;
; 2468 return;
; 2469 end
; 2470 else
; 2471 begin
; 2472
; 2473 local
; 2474 RDB : ref block field (C_FIELDS);
; 2475
; 2476 if RDBGT$ (RDB)
; 2477 then
; 2478 begin
; 2479 DB [D_ASSIGNABLE_RECEIVE_COUNT] = .DB [D_ASSIGNABLE_RECEIVE_COUNT] + 1;
; 2480 CMQIN$ (DB [D_ASSIGNABLE_RECEIVE_CCBS], .RDB);
; 2481 RECEIVE_IN (DB [D_TIM], BUF [SEL4], BUF [SEL6]);
; 2482 BUF [BSEL0] = BA_CC_I + RCV + 1^%fieldexpand (RQI, 1);
; 2483 DB [D_ASSIGNED_RECEIVE_COUNT] = .DB [D_ASSIGNED_RECEIVE_COUNT] + 1;
; 2484 return;
; 2485 end
; 2486 else
; 2487 RDBRQ$ ();
; 2488
; 2489 end;
; 2490
; 2491 if .DB [D_ASSIGNED_TRANSMIT_COUNT] lssu .DB [D_MAXIMUM_TRANSMIT_COUNT]
; 2492 then
; 2493
; 2494 if .DB [D_ASSIGNABLE_TRANSMIT_COUNT] neq 0
; 2495 then
; 2496 begin
; 2497 TRANSMIT_IN (DB [D_TIM], BUF [SEL4], BUF [SEL6]);
; 2498 BUF [BSEL0] = BA_CC_I + XMT + 1^%fieldexpand (RQI, 1);
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 89
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)
; 2499 DB [D_ASSIGNED_TRANSMIT_COUNT] = .DB [D_ASSIGNED_TRANSMIT_COUNT] + 1;
; 2500 return;
; 2501 end;
; 2502
; 2503 end; !of routine SET_INPUT_REQUEST
.GLOBL $RDBGT, $RDBRQ
.SBTTL SET.INPUT.REQUEST
004720 .PSECT $CODE$, RO
000000 004167 000000G SET.INPUT.REQUEST:
JSR R1,$SAVE4 ; 2291
000004 005746 TST -(SP)
000006 012746 000012 MOV #12,-(SP) ; 2314
000012 060516 ADD R5,(SP) ; DB,*
000014 012746 000032 MOV #32,-(SP) ; 2320
000020 060516 ADD R5,(SP) ; DB,*
000022 105776 000000 1$: TSTB @0(SP)
000026 001002 2$: BNE 3$
000030 000167 001024 JMP 37$
000034 132776 000001 000000 3$: BITB #1,@0(SP) ; 2322
000042 001435 BEQ 8$
000044 032715 010000 BIT #10000,(R5) ; *,DB 2327
000050 001021 BNE 5$
000052 116500 000040 MOVB 40(R5),R0 ; *(DB),* 2329
000056 006300 ASL R0
000060 066007 000146' ADD P.AAI(R0),PC ; Case dispatch
000064 052715 010000 4$: BIS #10000,(R5) ; *,DB 2333
000070 004767 176656 JSR PC,RESET.TIMER ; 2334
000074 016600 000002 MOV 2(SP),R0 ; 2335
000100 005060 000006 CLR 6(R0)
000104 005060 000004 CLR 4(R0) ; 2336
000110 112710 000042 MOVB #42,(R0) ; 2337
000114 000167 001174 5$: JMP 42$ ; 2332
000120 152776 000002 000000 6$: BISB #2,@0(SP) ; 2344
000126 142776 000001 000000 7$: BICB #1,@0(SP) ; 2345
000134 000734 BR 2$ ; 2322
000136 132776 000002 000000 8$: BITB #2,@0(SP)
000144 001414 BEQ 12$
000146 116500 000040 MOVB 40(R5),R0 ; *(DB),* 2351
000152 006300 ASL R0
000154 066007 000162' ADD P.AAJ(R0),PC ; Case dispatch
000160 000402 9$: BR 11$ ; 2354
000162 004767 175224 10$: JSR PC,MASTER.CLEAR ; 2357
000166 142776 000002 000000 11$: BICB #2,@0(SP) ; 2358
000174 000714 BR 2$ ; 2322
000176 132776 000004 000000 12$: BITB #4,@0(SP)
000204 001406 BEQ 13$
000206 004767 000000V JSR PC,ZERO.CIRCUIT.COUNTERS ; 2363
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 90
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)
000212 142776 000004 000000 BICB #4,@0(SP) ; 2364
000220 000702 BR 2$ ; 2322
000222 132776 000010 000000 13$: BITB #10,@0(SP)
000230 001406 BEQ 14$
000232 004767 000000V JSR PC,ZERO.LINE.COUNTERS ; 2368
000236 142776 000010 000000 BICB #10,@0(SP) ; 2369
000244 000670 BR 2$ ; 2322
000246 132776 000020 000000 14$: BITB #20,@0(SP)
000254 001471 BEQ 20$
000256 012766 000040 000004 MOV #40,4(SP) ; 2372
000264 060566 000004 ADD R5,4(SP) ; DB,*
000270 117600 000004 MOVB @4(SP),R0
000274 006300 ASL R0
000276 066007 000176' ADD P.AAK(R0),PC ; Case dispatch
000302 152776 000001 000000 15$: BISB #1,@0(SP) ; 2374
000310 000646 BR 2$ ; 2372
000312 105776 000004 16$: TSTB @4(SP) ; 2378
000316 001005 BNE 17$
000320 016500 000002 MOV 2(R5),R0 ; *(DB),* 2380
000324 052760 000100 000002 BIS #100,2(R0)
000332 012700 000004 17$: MOV #4,R0 ; 2382
000336 066600 000002 ADD 2(SP),R0
000342 010046 MOV R0,-(SP)
000344 012700 000006 MOV #6,R0
000350 066600 000004 ADD 4(SP),R0
000354 010001 MOV R0,R1
000356 010146 MOV R1,-(SP)
000360 004767 172474 JSR PC,BASE.IN
000364 042711 020000 BIC #20000,(R1) ; 2383
000370 105776 000010 TSTB @10(SP) ; 2385
000374 001402 BEQ 18$
000376 052711 020000 BIS #20000,(R1) ; 2387
000402 112776 000043 000006 18$: MOVB #43,@6(SP) ; 2389
000410 142776 000020 000004 BICB #20,@4(SP) ; 2390
000416 112776 000002 000010 MOVB #2,@10(SP) ; 2391
000424 000167 000662 JMP 41$ ; 2372
000430 142776 000020 000000 19$: BICB #20,@0(SP) ; 2394
000436 000570 BR 34$ ; 2372
000440 132776 000040 000000 20$: BITB #40,@0(SP) ; 2322
000446 001527 BEQ 29$
000450 116500 000040 MOVB 40(R5),R0 ; *(DB),* 2398
000454 006300 ASL R0
000456 066007 000212' ADD P.AAL(R0),PC ; Case dispatch
000462 142776 000040 000000 21$: BICB #40,@0(SP) ; 2402
000470 016600 000002 MOV 2(SP),R0 ; 2403
000474 005060 000004 CLR 4(R0)
000500 012701 000006 MOV #6,R1 ; 2404
000504 060001 ADD R0,R1
000506 010100 MOV R1,R0
000510 005010 CLR (R0)
000512 032776 002000 000000 BIT #2000,@0(SP) ; 2406
000520 001404 BEQ 22$
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 91
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)
000522 052775 004000 000002 BIS #4000,@2(R5) ; *,*(DB) 2408
000530 000403 BR 23$ ; 2406
000532 042775 004000 000002 22$: BIC #4000,@2(R5) ; *,*(DB) 2410
000540 032776 000400 000000 23$: BIT #400,@0(SP) ; 2412
000546 001402 BEQ 24$
000550 052710 002000 BIS #2000,(R0) ; 2414
000554 012701 000034 24$: MOV #34,R1 ; 2416
000560 060501 ADD R5,R1 ; DB,*
000562 126127 000001 000004 CMPB 1(R1),#4
000570 001002 BNE 25$
000572 052710 000400 BIS #400,(R0) ; 2418
000576 032776 001000 000000 25$: BIT #1000,@0(SP) ; 2420
000604 001002 BNE 26$
000606 052710 004000 BIS #4000,(R0) ; 2422
000612 112776 000041 000002 26$: MOVB #41,@2(SP) ; 2424
000620 112765 000003 000040 MOVB #3,40(R5) ; *,*(DB) 2425
000626 004767 000000G JSR PC,$NLBEG ; 2426
000632 005046 CLR -(SP)
000634 111100 MOVB (R1),R0
000636 004767 000000G JSR PC,$DPC1
000642 116111 000001 MOVB 1(R1),(R1)
000646 012716 000001 MOV #1,(SP)
000652 111100 MOVB (R1),R0
000654 004767 000000G JSR PC,$DPC1
000660 012700 000500 MOV #500,R0
000664 016501 000100 MOV 100(R5),R1 ; *(DB),*
000670 004767 000000G JSR PC,$NLEND
000674 004767 176534 JSR PC,SEND.STATE
000700 005726 TST (SP)+ ; 2398
000702 000167 000406 JMP 42$ ; 2401
000706 142776 000040 000000 27$: BICB #40,@0(SP) ; 2429
000714 000441 BR 34$ ; 2398
000716 152776 000020 000000 28$: BISB #20,@0(SP) ; 2430
000724 000435 BR 34$ ; 2322
000726 132776 000100 000000 29$: BITB #100,@0(SP)
000734 001433 BEQ 35$
000736 105765 000037 TSTB 37(R5) ; *(DB) 2436
000742 001010 BNE 30$ ; 2437
000744 126527 000040 000005 CMPB 40(R5),#5 ; *(DB),* 2438
000752 001404 BEQ 30$ ; 2439
000754 126565 000034 000035 CMPB 34(R5),35(R5) ; *(DB),*(DB) 2440
000762 001004 BNE 31$
000764 142776 000100 000000 30$: BICB #100,@0(SP) ; 2441
000772 000412 BR 34$ ; 2434
000774 105765 000035 31$: TSTB 35(R5) ; *(DB) 2442
001000 001004 BNE 33$
001002 152776 000002 000000 32$: BISB #2,@0(SP) ; 2443
001010 000403 BR 34$ ; 2434
001012 152776 000040 000000 33$: BISB #40,@0(SP) ; 2445
001020 000167 177002 34$: JMP 2$ ; 2322
001024 105776 000000 35$: TSTB @0(SP)
001030 100373 BPL 34$
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 92
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)
001032 142776 000200 000000 BICB #200,@0(SP) ; 2450
001040 032776 040000 000000 BIT #40000,@0(SP) ; 2452
001046 001402 BEQ 36$
001050 004767 173070 JSR PC,CTLNXT
001054 000167 176742 36$: JMP 1$ ; 2320
001060 126527 000040 000003 37$: CMPB 40(R5),#3 ; *(DB),* 2457
001066 001112 BNE 42$
001070 012766 000116 000004 MOV #116,4(SP) ; 2459
001076 060566 000004 ADD R5,4(SP) ; DB,*
001102 127665 000004 000120 CMPB @4(SP),120(R5) ; *,*(DB)
001110 103042 BHIS 40$
001112 012701 000114 MOV #114,R1 ; 2462
001116 060501 ADD R5,R1 ; DB,*
001120 105711 TSTB (R1)
001122 001011 BNE 38$ ; 2465
001124 004767 000000G JSR PC,$RDBGT ; 2476
001130 103430 BCS 39$
001132 105211 INCB (R1) ; 2479
001134 012703 000044 MOV #44,R3 ; 2480
001140 060503 ADD R5,R3 ; DB,*
001142 004767 000000G JSR PC,$CMQIN
001146 012700 000004 38$: MOV #4,R0 ; 2481
001152 066600 000002 ADD 2(SP),R0
001156 010046 MOV R0,-(SP)
001160 012700 000006 MOV #6,R0
001164 066600 000004 ADD 4(SP),R0
001170 010046 MOV R0,-(SP)
001172 004767 175170 JSR PC,RECEIVE.IN
001176 112776 000044 000006 MOVB #44,@6(SP) ; 2482
001204 105276 000010 INCB @10(SP) ; 2483
001210 000440 BR 41$ ; 2476
001212 004767 000000G 39$: JSR PC,$RDBRQ ; 2487
001216 005001 40$: CLR R1 ; 2491
001220 156501 000121 BISB 121(R5),R1 ; *(DB),*
001224 017600 000004 MOV @4(SP),R0
001230 105000 CLRB R0
001232 000300 SWAB R0
001234 020001 CMP R0,R1
001236 103026 BHIS 42$
001240 105765 000115 TSTB 115(R5) ; *(DB) 2494
001244 001423 BEQ 42$
001246 012700 000004 MOV #4,R0 ; 2497
001252 066600 000002 ADD 2(SP),R0
001256 010046 MOV R0,-(SP)
001260 012700 000006 MOV #6,R0
001264 066600 000004 ADD 4(SP),R0
001270 010046 MOV R0,-(SP)
001272 004767 000000V JSR PC,TRANSMIT.IN
001276 112776 000040 000006 MOVB #40,@6(SP) ; 2498
001304 062776 000400 000010 ADD #400,@10(SP) ; 2499
001312 022626 41$: CMP (SP)+,(SP)+ ; 2494
001314 062706 000006 42$: ADD #6,SP ; 2291
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 93
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (37)
001320 000207 RTS PC
; Routine Size: 361 words, Routine Base: $CODE$ + 4720
; Maximum stack depth per invocation: 11 words
000146 .PSECT $PLIT$, RO , D
P.AAI: ; CASE Table for SET.INPUT.REQUE+0060 2329
000146 000042 .WORD 42 ; [7$]
000150 000042 .WORD 42 ; [7$]
000152 000034 .WORD 34 ; [6$]
000154 000000 .WORD 0 ; [4$]
000156 000034 .WORD 34 ; [6$]
000160 000042 .WORD 42 ; [7$]
P.AAJ: ; CASE Table for SET.INPUT.REQUE+0154 2351
000162 000006 .WORD 6 ; [11$]
000164 000002 .WORD 2 ; [10$]
000166 000002 .WORD 2 ; [10$]
000170 000002 .WORD 2 ; [10$]
000172 000002 .WORD 2 ; [10$]
000174 000006 .WORD 6 ; [11$]
P.AAK: ; CASE Table for SET.INPUT.REQUE+0276 2372
000176 000010 .WORD 10 ; [16$]
000200 000010 .WORD 10 ; [16$]
000202 000126 .WORD 126 ; [19$]
000204 000000 .WORD 0 ; [15$]
000206 000500 .WORD 500 ; [32$]
000210 000126 .WORD 126 ; [19$]
P.AAL: ; CASE Table for SET.INPUT.REQUE+0456 2398
000212 000234 .WORD 234 ; [28$]
000214 000234 .WORD 234 ; [28$]
000216 000000 .WORD 0 ; [21$]
000220 000224 .WORD 224 ; [27$]
000222 000234 .WORD 234 ; [28$]
000224 000224 .WORD 224 ; [27$]
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 94
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (38)
; 2504 global routine SET_PORT (DB) : LINKAGE_DB novalue =
; 2505
; 2506 !++
; 2507 ! FUNCTIONAL DESCRIPTION:
; 2508 !
; 2509 !
; 2510 ! FORMAL PARAMETERS:
; 2511 ! DB = address of DMC data base.
; 2512 !
; 2513 ! IMPLICIT INPUTS:
; 2514 ! None
; 2515 !
; 2516 ! IMPLICIT OUTPUTS:
; 2517 ! None
; 2518 !
; 2519 ! ROUTINE VALUE:
; 2520 ! COMPLETION CODES:
; 2521 ! None
; 2522 !
; 2523 ! SIDE EFFECTS:
; 2524 ! None
; 2525 !--
; 2526
; 2527 begin
; 2528 GET_DMC_DATA_BASE (DB)
; 2529
; 2530 if .DB [D_INPUT_COMMAND] eql 0
; 2531 then
; 2532 SET_INPUT_REQUEST (DB [D_TIM]);
; 2533
; 2534 if not .DB [DF_SERVICING_DMC] then SERVICE_DMC (DB [D_TIM]);
; 2535
; 2536 end; !of routine SET_PORT
.SBTTL SET.PORT
006242 .PSECT $CODE$, RO
000000 004167 000000G SET.PORT::
JSR R1,$SAVE5 ; 2504
000004 105765 000012 TSTB 12(R5) ; *(DB) 2530
000010 001002 BNE 1$
000012 004767 176440 JSR PC,SET.INPUT.REQUEST ; 2532
000016 032715 040000 1$: BIT #40000,(R5) ; *,DB 2534
000022 001002 BNE 2$
000024 004767 176164 JSR PC,SERVICE.DMC
000030 000207 2$: RTS PC ; 2504
; Routine Size: 13 words, Routine Base: $CODE$ + 6242
; Maximum stack depth per invocation: 7 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 95
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (39)
; 2537 routine TIMCCB (DB, CCB) : MCB_DB_CCB novalue =
; 2538
; 2539 !++
; 2540 ! FUNCTIONAL DESCRIPTION:
; 2541 !
; 2542 !
; 2543 ! FORMAL PARAMETERS:
; 2544 ! DB = address of DMC data base.
; 2545 ! CCB =
; 2546 !
; 2547 ! IMPLICIT INPUTS:
; 2548 ! None
; 2549 !
; 2550 ! IMPLICIT OUTPUTS:
; 2551 ! None
; 2552 !
; 2553 ! ROUTINE VALUE:
; 2554 ! COMPLETION CODES:
; 2555 ! None
; 2556 !
; 2557 ! SIDE EFFECTS:
; 2558 ! None
; 2559 !--
; 2560
; 2561 begin
; 2562 GET_DMC_DATA_BASE (DB)
; 2563
; 2564 map
; 2565 CCB : ref block field (C_FIELDS);
; 2566
; 2567 label
; 2568 RECOVERY;
; 2569
; 2570 if .DB [D_OWNER_HANDLE] eql 0 then return $MCB_RETURN_CCB (.CCB);
; 2571
; 2572 do RECOVERY :
; 2573 begin
; 2574
; 2575 if .DB [DF_NOTIFY_OFF]
; 2576 then
; 2577 leave RECOVERY with SCHEDULE_STATE_AST (.CCB, DB [D_TIM]);
; 2578
; 2579 if .DB [DF_NOTIFY_STATE]
; 2580 then
; 2581 leave RECOVERY with SCHEDULE_STATE_AST (.CCB, DB [D_TIM]);
; 2582
; 2583 if .DB [D_TRANSIENT_ERROR] neq 0
; 2584 then
; 2585 leave RECOVERY with SCHEDULE_TRANSIENT_AST (.CCB, DB [D_TIM]);
; 2586
; 2587 if .DB [D_PERSISTENT_ERROR] neq 0
; 2588 then
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 96
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (39)
; 2589 leave RECOVERY with SCHEDULE_PERSISTENT_AST (.CCB, DB [D_TIM]);
; 2590
; 2591 return $MCB_RETURN_CCB (.CCB);
; 2592 end
; 2593 while $MCB_GET_CCB (CCB);
; 2594
; 2595 end; !of routine TIMCCB
.SBTTL TIMCCB
000000 010401 TIMCCB: MOV R4,R1 ; *,CCB 2537
000002 005765 000042 TST 42(R5) ; *(DB) 2570
000006 001430 BEQ 5$
000010 032715 000400 1$: BIT #400,(R5) ; *,DB 2575
000014 001003 BNE 2$ ; 2577
000016 032715 001000 BIT #1000,(R5) ; *,DB 2579
000022 001404 BEQ 3$
000024 010104 2$: MOV R1,R4 ; CCB,* 2581
000026 004767 175560 JSR PC,SCHEDULE.STATE.AST
000032 000422 BR 7$
000034 005765 000104 3$: TST 104(R5) ; *(DB) 2583
000040 001404 BEQ 4$
000042 010104 MOV R1,R4 ; CCB,* 2585
000044 004767 175652 JSR PC,SCHEDULE.TRANSIENT.AST
000050 000413 BR 7$
000052 005765 000106 4$: TST 106(R5) ; *(DB) 2587
000056 001404 BEQ 5$
000060 010104 MOV R1,R4 ; CCB,* 2589
000062 004767 175410 JSR PC,SCHEDULE.PERSISTENT.AST
000066 000404 BR 7$
000070 010104 5$: MOV R1,R4 ; CCB,* 2591
000072 004767 000000G JSR PC,$CCBRT
000076 000207 6$: RTS PC ; 2572
000100 004767 000000G 7$: JSR PC,$CCBGT ; 2593
000104 103774 BCS 6$
000106 010401 MOV R4,R1 ; $MCB$R4,CCB
000110 000737 BR 1$
; Routine Size: 37 words, Routine Base: $CODE$ + 6274
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 97
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (40)
; 2596 routine TIMLTM (DB) : MCB_DB novalue =
; 2597
; 2598 !++
; 2599 ! FUNCTIONAL DESCRIPTION:
; 2600 !
; 2601 !
; 2602 ! FORMAL PARAMETERS:
; 2603 ! DB = address of DMC data base.
; 2604 !
; 2605 ! IMPLICIT INPUTS:
; 2606 ! None
; 2607 !
; 2608 ! IMPLICIT OUTPUTS:
; 2609 ! None
; 2610 !
; 2611 ! ROUTINE VALUE:
; 2612 ! COMPLETION CODES:
; 2613 ! None
; 2614 !
; 2615 ! SIDE EFFECTS:
; 2616 ! None
; 2617 !--
; 2618
; 2619 begin
; 2620 GET_DMC_DATA_BASE (DB)
; 2621
; 2622 if not .DB [DF_SYNCHRONIZING] and
; 2623 not ($DMC_BITS_CLEAR (.DB [D_REGISTER], SEL0, RDYI) and
; 2624 $DMC_BITS_CLEAR (.DB [D_REGISTER], SEL2, RDYO))
; 2625 then
; 2626 begin
; 2627 RESET_TIMER (DB [D_TIM]);
; 2628 COUNTER_INCREMENT (DB, D_LOST_INTERRUPT);
; 2629 COUNTER_INCREMENT (DB, D_DEVICE_SERVICE_ERRORS);
; 2630 SERVICE_DMC (DB [D_TIM]);
; 2631 return;
; 2632 end;
; 2633
; 2634 if .DB [DF_WAITING_FOR_RDYI]
; 2635 then
; 2636 begin
; 2637 RESET_TIMER (DB [D_TIM]);
; 2638 COUNTER_INCREMENT (DB, D_LOST_RDYI);
; 2639 COUNTER_INCREMENT (DB, D_DEVICE_SERVICE_ERRORS);
; 2640 SET_PORT (DB [D_TIM]);
; 2641 ! SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_RESPONSE_ERROR);
; 2642 return;
; 2643 end;
; 2644
; 2645 if .DB [DF_FLUSHING_DMC]
; 2646 then
; 2647 begin
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 98
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (40)
; 2648 DB [DF_FLUSHING_DMC] = FALSE;
; 2649 COUNTER_INCREMENT (DB, D_LOST_HALT);
; 2650 COUNTER_INCREMENT (DB, D_DEVICE_SERVICE_ERRORS);
; 2651 MASTER_CLEAR (DB [D_TIM]);
; 2652 RESET_TIMER (DB [D_TIM]);
; 2653 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_RESPONSE_ERROR);
; 2654 CHANGE_PROTOCOL_STATE (DB [D_TIM], DS_HALTED, RMT);
; 2655 SET_PORT (DB [D_TIM]);
; 2656 return;
; 2657 end;
; 2658
; 2659 if .DB [D_ASSIGNED_TRANSMIT_COUNT] neq 0
; 2660 then
; 2661
; 2662 if (.DB [D_PROTOCOL_STATE] eql DS_MAINTENANCE) or .DB [DF_PROTOCOL_UP]
; 2663 then
; 2664 begin
; 2665 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_RESPONSE_ERROR);
; 2666 COUNTER_INCREMENT (DB, D_LOST_TRANSMIT);
; 2667 COUNTER_INCREMENT (DB, D_DEVICE_SERVICE_ERRORS);
; 2668 MASTER_CLEAR (DB [D_TIM]);
; 2669 RESET_TIMER (DB [D_TIM]);
; 2670 SET_PORT (DB [D_TIM]);
; 2671 return;
; 2672 end;
; 2673
; 2674 if .DB [DF_WAITING_FOR_RECEIVE]
; 2675 then
; 2676 begin
; 2677 DB [DF_WAITING_FOR_RECEIVE] = FALSE;
; 2678 SEND_TRANSIENT_ERROR (DB [D_TIM], DLL$_SERVICE_TIMEOUT);
; 2679 RESET_TIMER (DB [D_TIM]);
; 2680 return;
; 2681 end;
; 2682
; 2683 end; !of routine TIMLTM
.SBTTL TIMLTM
000000 010546 TIMLTM: MOV R5,-(SP) ; 2596
000002 032715 020000 BIT #20000,(R5) ; 2622
000006 001033 BNE 2$
000010 010500 MOV R5,R0 ; 2623
000012 105770 000002 TSTB @2(R0)
000016 100406 BMI 1$
000020 010501 MOV R5,R1 ; 2624
000022 016100 000002 MOV 2(R1),R0
000026 105760 000002 TSTB 2(R0)
000032 100021 BPL 2$
000034 011605 1$: MOV (SP),R5 ; 2627
000036 004767 175222 JSR PC,RESET.TIMER
000042 011600 MOV (SP),R0 ; 2628
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 99
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (40)
000044 052760 000400 000150 BIS #400,150(R0)
000052 012701 000150 MOV #150,R1 ; 2629
000056 060001 ADD R0,R1
000060 010100 MOV R1,R0
000062 004767 000000G JSR PC,$IC8
000066 011605 MOV (SP),R5 ; 2630
000070 004767 175754 JSR PC,SERVICE.DMC
000074 000565 BR 7$ ; 2626
000076 032776 004000 000000 2$: BIT #4000,@0(SP) ; 2634
000104 001416 BEQ 3$
000106 011605 MOV (SP),R5 ; 2637
000110 004767 175150 JSR PC,RESET.TIMER
000114 011600 MOV (SP),R0 ; 2638
000116 052760 001000 000150 BIS #1000,150(R0)
000124 012701 000150 MOV #150,R1 ; 2639
000130 060001 ADD R0,R1
000132 010100 MOV R1,R0
000134 004767 000000G JSR PC,$IC8
000140 000540 BR 6$ ; 2640
000142 032776 010000 000000 3$: BIT #10000,@0(SP) ; 2645
000150 001473 BEQ 4$
000152 042776 010000 000000 BIC #10000,@0(SP) ; 2648
000160 011600 MOV (SP),R0 ; 2649
000162 052760 002000 000150 BIS #2000,150(R0)
000170 012701 000150 MOV #150,R1 ; 2650
000174 060001 ADD R0,R1
000176 010100 MOV R1,R0
000200 004767 000000G JSR PC,$IC8
000204 011605 MOV (SP),R5 ; 2651
000206 004767 173512 JSR PC,MASTER.CLEAR
000212 011605 MOV (SP),R5 ; 2652
000214 004767 175044 JSR PC,RESET.TIMER
000220 011605 MOV (SP),R5 ; 2653
000222 012703 100154 MOV #-77624,R3
000226 004767 175460 JSR PC,SEND.PERSISTENT.ERROR
000232 004767 000000G JSR PC,$NLBEG ; 2654
000236 005046 CLR -(SP)
000240 012700 000034 MOV #34,R0
000244 066600 000002 ADD 2(SP),R0
000250 010001 MOV R0,R1
000252 111100 MOVB (R1),R0
000254 004767 000000G JSR PC,$DPC1
000260 105011 CLRB (R1)
000262 012716 000001 MOV #1,(SP)
000266 105000 CLRB R0
000270 004767 000000G JSR PC,$DPC1
000274 012700 000501 MOV #501,R0
000300 016602 000002 MOV 2(SP),R2
000304 016201 000100 MOV 100(R2),R1
000310 004767 000000G JSR PC,$NLEND
000314 016605 000002 MOV 2(SP),R5
000320 004767 175422 JSR PC,SEND.STATE
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 100
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (40)
000324 016605 000002 MOV 2(SP),R5 ; 2655
000330 004767 177300 JSR PC,SET.PORT
000334 005726 TST (SP)+ ; 2645
000336 000463 BR 9$ ; 2647
000340 011600 4$: MOV (SP),R0 ; 2659
000342 105760 000117 TSTB 117(R0)
000346 001441 BEQ 8$
000350 126027 000034 000004 CMPB 34(R0),#4 ; 2662
000356 001404 BEQ 5$
000360 032760 020000 000032 BIT #20000,32(R0)
000366 001431 BEQ 8$
000370 011605 5$: MOV (SP),R5 ; 2665
000372 012703 100154 MOV #-77624,R3
000376 004767 175310 JSR PC,SEND.PERSISTENT.ERROR
000402 011600 MOV (SP),R0 ; 2666
000404 052760 004000 000150 BIS #4000,150(R0)
000412 012701 000150 MOV #150,R1 ; 2667
000416 060001 ADD R0,R1
000420 010100 MOV R1,R0
000422 004767 000000G JSR PC,$IC8
000426 011605 MOV (SP),R5 ; 2668
000430 004767 173270 JSR PC,MASTER.CLEAR
000434 011605 MOV (SP),R5 ; 2669
000436 004767 174622 JSR PC,RESET.TIMER
000442 011605 6$: MOV (SP),R5 ; 2670
000444 004767 177164 JSR PC,SET.PORT
000450 000416 7$: BR 9$ ; 2664
000452 005776 000000 8$: TST @0(SP) ; 2674
000456 100013 BPL 9$
000460 042776 100000 000000 BIC #100000,@0(SP) ; 2677
000466 011605 MOV (SP),R5 ; 2678
000470 012703 100210 MOV #-77570,R3
000474 004767 175314 JSR PC,SEND.TRANSIENT.ERROR
000500 011605 MOV (SP),R5 ; 2679
000502 004767 174556 JSR PC,RESET.TIMER
000506 005726 9$: TST (SP)+ ; 2596
000510 000207 RTS PC
; Routine Size: 165 words, Routine Base: $CODE$ + 6406
; Maximum stack depth per invocation: 3 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 101
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (41)
; 2684 routine TIMPIN (DB) : MCB_DB novalue =
; 2685
; 2686 !++
; 2687 ! FUNCTIONAL DESCRIPTION:
; 2688 !
; 2689 !
; 2690 ! FORMAL PARAMETERS:
; 2691 ! DB = address of DMC data base.
; 2692 !
; 2693 ! IMPLICIT INPUTS:
; 2694 ! None
; 2695 !
; 2696 ! IMPLICIT OUTPUTS:
; 2697 ! None
; 2698 !
; 2699 ! ROUTINE VALUE:
; 2700 ! COMPLETION CODES:
; 2701 ! None
; 2702 !
; 2703 ! SIDE EFFECTS:
; 2704 ! None
; 2705 !--
; 2706
; 2707 begin
; 2708 GET_DMC_DATA_BASE (DB)
; 2709
; 2710 if .DB [DF_DMR_LINE] then return;
; 2711
; 2712 DMCDBI ();
; 2713 DMCNMI ();
; 2714 DMCDVI ();
; 2715
; 2716 if .DB [D_LINE_STATE] eql DL_ON then $MCB_ENABLE_LONG_TIMER ();
; 2717
; 2718 end; !of routine TIMPIN
.SBTTL TIMPIN
000000 032765 004000 000032 TIMPIN: BIT #4000,32(R5) ; *,*(DB) 2710
000006 001013 BNE 1$
000010 004767 000000G JSR PC,DMCDBI ; 2712
000014 004767 000000G JSR PC,DMCNMI ; 2713
000020 004767 000000G JSR PC,DMCDVI ; 2714
000024 105765 000037 TSTB 37(R5) ; *(DB) 2716
000030 001002 BNE 1$
000032 004767 000000G JSR PC,$LTMEN
000036 000207 1$: RTS PC ; 2684
; Routine Size: 16 words, Routine Base: $CODE$ + 7120
; Maximum stack depth per invocation: 1 word
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 102
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (42)
; 2719 routine TIMPWF (DB) : MCB_DB novalue =
; 2720
; 2721 !++
; 2722 ! FUNCTIONAL DESCRIPTION:
; 2723 !
; 2724 !
; 2725 ! FORMAL PARAMETERS:
; 2726 ! DB = address of DMC data base.
; 2727 !
; 2728 ! IMPLICIT INPUTS:
; 2729 ! None
; 2730 !
; 2731 ! IMPLICIT OUTPUTS:
; 2732 ! None
; 2733 !
; 2734 ! ROUTINE VALUE:
; 2735 ! COMPLETION CODES:
; 2736 ! None
; 2737 !
; 2738 ! SIDE EFFECTS:
; 2739 ! None
; 2740 !--
; 2741
; 2742 begin
; 2743 GET_DMC_DATA_BASE (DB)
; 2744 SIGNAL_STOP (DMC$_PWF);
; 2745 end; !of routine TIMPWF
.SBTTL TIMPWF
000000 012746 100014 TIMPWF: MOV #-77764,-(SP) ; 2744
000004 012746 000001 MOV #1,-(SP)
000010 004767 000000G JSR PC,$STOP
000014 022626 CMP (SP)+,(SP)+ ; 2742
000016 000207 RTS PC ; 2719
; Routine Size: 8 words, Routine Base: $CODE$ + 7160
; Maximum stack depth per invocation: 3 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 103
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (43)
; 2746 routine TIMRDB (DB, CCB) : MCB_DB_CCB novalue =
; 2747
; 2748 !++
; 2749 ! FUNCTIONAL DESCRIPTION:
; 2750 !
; 2751 !
; 2752 ! FORMAL PARAMETERS:
; 2753 ! DB = address of DMC data base.
; 2754 ! CCB =
; 2755 !
; 2756 ! IMPLICIT INPUTS:
; 2757 ! None
; 2758 !
; 2759 ! IMPLICIT OUTPUTS:
; 2760 ! None
; 2761 !
; 2762 ! ROUTINE VALUE:
; 2763 ! COMPLETION CODES:
; 2764 ! None
; 2765 !
; 2766 ! SIDE EFFECTS:
; 2767 ! None
; 2768 !--
; 2769
; 2770 begin
; 2771 GET_DMC_DATA_BASE (DB)
; 2772
; 2773 map
; 2774 CCB : ref block field (C_FIELDS);
; 2775
; 2776 case .DB [D_DEVICE_STATE] from DD_LOW to DD_HIGH of
; 2777 set
; 2778 [DD_CLEARED, DD_MASTER_CLEARED] :
; 2779 RDBRT$ (.CCB);
; 2780 [inrange] :
; 2781 begin
; 2782 DB [D_ASSIGNABLE_RECEIVE_COUNT] = .DB [D_ASSIGNABLE_RECEIVE_COUNT] + 1;
; 2783 CMQIN$ (DB [D_ASSIGNABLE_RECEIVE_CCBS], .CCB);
; 2784 SET_PORT (DB [D_TIM]);
; 2785 end;
; 2786 tes;
; 2787 end; !of routine TIMRDB
.SBTTL TIMRDB
000000 010401 TIMRDB: MOV R4,R1 ; *,CCB 2746
000002 116500 000040 MOVB 40(R5),R0 ; *(DB),* 2776
000006 006300 ASL R0
000010 066007 000226' ADD P.AAM(R0),PC ; Case dispatch
000014 010104 1$: MOV R1,R4 ; CCB,* 2779
000016 004767 000000G JSR PC,$RDBRT
000022 000207 RTS PC ; 2776
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 104
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (43)
000024 105265 000114 2$: INCB 114(R5) ; *(DB) 2782
000030 010500 MOV R5,R0 ; DB,* 2783
000032 062700 000044 ADD #44,R0
000036 010104 MOV R1,R4 ; CCB,*
000040 010003 MOV R0,R3
000042 004767 000000G JSR PC,$CMQIN
000046 004767 176770 JSR PC,SET.PORT ; 2784
000052 000207 RTS PC ; 2746
; Routine Size: 22 words, Routine Base: $CODE$ + 7200
; Maximum stack depth per invocation: 1 word
000226 .PSECT $PLIT$, RO , D
P.AAM: ; CASE Table for TIMRDB+0010 2776
000226 000000 .WORD 0 ; [1$]
000230 000010 .WORD 10 ; [2$]
000232 000010 .WORD 10 ; [2$]
000234 000010 .WORD 10 ; [2$]
000236 000010 .WORD 10 ; [2$]
000240 000000 .WORD 0 ; [1$]
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 105
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (44)
; 2788 routine TRANSMIT_IN (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
; 2789
; 2790 !++
; 2791 ! FUNCTIONAL DESCRIPTION:
; 2792 !
; 2793 !
; 2794 ! FORMAL PARAMETERS:
; 2795 ! DB = address of DMC data base.
; 2796 !
; 2797 ! IMPLICIT INPUTS:
; 2798 ! None
; 2799 !
; 2800 ! IMPLICIT OUTPUTS:
; 2801 ! None
; 2802 !
; 2803 ! ROUTINE VALUE:
; 2804 ! COMPLETION CODES:
; 2805 ! None
; 2806 !
; 2807 ! SIDE EFFECTS:
; 2808 ! None
; 2809 !--
; 2810
; 2811 begin
; 2812 GET_DMC_DATA_BASE (DB)
; 2813
; 2814 local
; 2815 ADDRESS,
; 2816 BIAS,
; 2817 CCB : ref block field (C_FIELDS),
; 2818 LENGTH;
; 2819
; 2820 if not CMQRM$ (DB [D_ASSIGNABLE_TRANSMIT_CCBS], CCB)
; 2821 then
; 2822 return SIGNAL_STOP (DMC$_QUE, DB [D_ASSIGNABLE_TRANSMIT_CCBS]);
; 2823
; 2824 DB [D_ASSIGNABLE_TRANSMIT_COUNT] = .DB [D_ASSIGNABLE_TRANSMIT_COUNT] - 1;
; 2825 CMQIN$ (DB [D_ASSIGNED_TRANSMIT_CCBS], .CCB);
; 2826
; 2827 if .CCB [C_CHN] eql 0
; 2828 then
; 2829 begin
; 2830 BIAS = .CCB [C_BIAS];
; 2831 ADDRESS = .CCB [C_ADDR];
; 2832 LENGTH = .CCB [C_CNT];
; 2833 end
; 2834 else
; 2835 begin
; 2836 BIAS = .DB_BIAS;
; 2837 ADDRESS = LENGTH = .DB [D_NEXT_TRANSMIT_BUFFER];
; 2838 LENGTH = $MCB_COPY_CHAIN_TO_BUFFER (.CCB, (.BIAS, .ADDRESS));
; 2839 MAP$ (.DB_BIAS);
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 106
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (44)
; 2840 DB [D_NEXT_TRANSMIT_BUFFER] = .DB [D_NEXT_TRANSMIT_BUFFER] + .DB [D_TRANSMIT_BUFFER_SIZE];
; 2841
; 2842 if .DB [D_NEXT_TRANSMIT_BUFFER] geqa .DB [D_HIGHEST_TRANSMIT_BUFFER]
; 2843 then
; 2844 DB [D_NEXT_TRANSMIT_BUFFER] = DB [D_BUF];
; 2845
; 2846 end;
; 2847
; 2848 begin
; 2849
; 2850 local
; 2851 TEMP;
; 2852
; 2853 $MCB_CONVERT_TO_UBA_ADDRESS ((.BIAS, .ADDRESS), .LOW, TEMP);
; 2854 TEMP = .TEMP^%fieldexpand (BA_HIGH, 1);
; 2855 .HIGH = (TEMP = .TEMP + .LENGTH);
; 2856 end;
; 2857 end; !of routine TRANSMIT_IN
.GLOBL $CPTBF
.SBTTL TRANSMIT.IN
007254 .PSECT $CODE$, RO
000000 010146 TRANSMIT.IN:
MOV R1,-(SP) ; 2788
000002 010500 MOV R5,R0 ; DB,* 2820
000004 062700 000054 ADD #54,R0
000010 010003 MOV R0,R3
000012 004767 000000G JSR PC,$CMQRM
000016 103012 BHIS 1$
000020 010046 MOV R0,-(SP) ; 2822
000022 012746 100034 MOV #-77744,-(SP)
000026 012746 000002 MOV #2,-(SP)
000032 004767 000000G JSR PC,$STOP
000036 062706 000006 ADD #6,SP
000042 000462 BR 5$
000044 105365 000115 1$: DECB 115(R5) ; *(DB) 2824
000050 010500 MOV R5,R0 ; DB,* 2825
000052 062700 000060 ADD #60,R0
000056 010003 MOV R0,R3
000060 004767 000000G JSR PC,$CMQIN
000064 005764 000002 TST 2(R4) ; *(CCB) 2827
000070 001007 BNE 2$
000072 016402 000016 MOV 16(R4),R2 ; *(CCB),BIAS 2830
000076 016403 000020 MOV 20(R4),R3 ; *(CCB),ADDRESS 2831
000102 016400 000022 MOV 22(R4),R0 ; *(CCB),LENGTH 2832
000106 000427 BR 4$ ; 2827
000110 016702 000000G 2$: MOV .CRDAT,R2 ; *,BIAS 2836
000114 012701 000066 MOV #66,R1 ; 2837
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 107
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (44)
000120 060501 ADD R5,R1 ; DB,*
000122 011100 MOV (R1),R0 ; *,LENGTH
000124 010003 MOV R0,R3 ; LENGTH,ADDRESS
000126 010246 MOV R2,-(SP) ; BIAS,* 2838
000130 010346 MOV R3,-(SP) ; ADDRESS,*
000132 004767 000000G JSR PC,$CPTBF
000136 016767 000000G 000000G MOV .CRDAT,KISAR6 ; 2839
000144 066511 000064 ADD 64(R5),(R1) ; *(DB),* 2840
000150 021165 000070 CMP (R1),70(R5) ; *,*(DB) 2842
000154 103403 BLO 3$
000156 010511 MOV R5,(R1) ; DB,* 2844
000160 062711 000616 ADD #616,(R1)
000164 022626 3$: CMP (SP)+,(SP)+ ; 2835
000166 004767 000000G 4$: JSR PC,$PHY18 ; 2853
000172 010376 000006 MOV R3,@6(SP) ; *,LOW
000176 072227 000016 ASH #16,R2 ; 2854
000202 060002 ADD R0,R2 ; LENGTH,TEMP 2855
000204 010276 000004 MOV R2,@4(SP) ; TEMP,HIGH
000210 012601 5$: MOV (SP)+,R1 ; 2788
000212 000207 RTS PC
; Routine Size: 70 words, Routine Base: $CODE$ + 7254
; Maximum stack depth per invocation: 5 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 108
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (45)
; 2858 routine TRANSMIT_OUT (DB, LOW, HIGH) : DMC_DB_LOW_HIGH novalue =
; 2859
; 2860 !++
; 2861 ! FUNCTIONAL DESCRIPTION:
; 2862 !
; 2863 !
; 2864 ! FORMAL PARAMETERS:
; 2865 ! DB = address of DMC data base.
; 2866 !
; 2867 ! IMPLICIT INPUTS:
; 2868 ! None
; 2869 !
; 2870 ! IMPLICIT OUTPUTS:
; 2871 ! None
; 2872 !
; 2873 ! ROUTINE VALUE:
; 2874 ! COMPLETION CODES:
; 2875 ! None
; 2876 !
; 2877 ! SIDE EFFECTS:
; 2878 ! None
; 2879 !--
; 2880
; 2881 begin
; 2882 GET_DMC_DATA_BASE (DB)
; 2883
; 2884 map
; 2885 HIGH : block [1] field (DMC_FIELDS),
; 2886 LOW : block [1] field (DMC_FIELDS);
; 2887
; 2888 local
; 2889 CCB : ref block field (C_FIELDS);
; 2890
; 2891 if not CMQRM$ (DB [D_ASSIGNED_TRANSMIT_CCBS], CCB)
; 2892 then
; 2893 SIGNAL_STOP (DMC$_QUE, DB [D_ASSIGNED_TRANSMIT_CCBS]);
; 2894
; 2895 if
; 2896 not begin
; 2897
; 2898 if .CCB [C_CHN] eqla 0
; 2899 then
; 2900 CHECK_BA (DB [D_TIM], .CCB [C_BIAS], .CCB [C_ADDR])
; 2901 else
; 2902 CHECK_BA (DB [D_TIM], .DB_BIAS, 0)
; 2903
; 2904 end
; 2905 then
; 2906 begin
; 2907 SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_ABORTED);
; 2908 COUNTER_INCREMENT (DB, D_TRANSMIT_BA_MISMATCH);
; 2909 COUNTER_INCREMENT (DB, D_FATAL_DEVICE_ERRORS);
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 109
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (45)
; 2910 SEND_PERSISTENT_ERROR (DB [D_TIM], DLL$_DEVICE_OPERATION_ERROR);
; 2911 MASTER_CLEAR (DB [D_TIM]);
; 2912 return;
; 2913 end;
; 2914
; 2915 selectone .DB [D_PROTOCOL_STATE] of
; 2916 set
; 2917 [DS_RUNNING] :
; 2918 begin
; 2919 COUNTER_ADD (DB, D_BYTES_TRANSMITTED, .HIGH [CC]);
; 2920 COUNTER_INCREMENT (DB, D_BLOCKS_TRANSMITTED);
; 2921 end;
; 2922 [DS_MAINTENANCE] :
; 2923
; 2924 if .CCB [C_MOD] eql DLL$K_TRANSMIT_AND_TIME
; 2925 then
; 2926 DB [DF_WAITING_FOR_RECEIVE] = TRUE;
; 2927
; 2928 tes;
; 2929
; 2930 DB [DF_PROTOCOL_UP] = TRUE;
; 2931 SCHEDULE_TRANSMIT (.CCB, DB [D_TIM], DLL$_SUCCESS);
; 2932 end; !of routine TRANSMIT_OUT
.SBTTL TRANSMIT.OUT
000000 010146 TRANSMIT.OUT:
MOV R1,-(SP) ; 2858
000002 005746 TST -(SP)
000004 012703 000060 MOV #60,R3 ; 2891
000010 060503 ADD R5,R3 ; DB,*
000012 004767 000000G JSR PC,$CMQRM
000016 103402 BCS 1$
000020 010416 MOV R4,(SP) ; $MCB$R4,CCB
000022 000411 BR 2$
000024 010346 1$: MOV R3,-(SP) ; 2893
000026 012746 100034 MOV #-77744,-(SP)
000032 012746 000002 MOV #2,-(SP)
000036 004767 000000G JSR PC,$STOP
000042 062706 000006 ADD #6,SP
000046 011600 2$: MOV (SP),R0 ; CCB,* 2898
000050 005760 000002 TST 2(R0) ; *(CCB)
000054 001011 BNE 3$
000056 016002 000016 MOV 16(R0),R2 ; *(CCB),* 2900
000062 016003 000020 MOV 20(R0),R3 ; *(CCB),*
000066 004767 170256 JSR PC,CHECK.BA
000072 006000 ROR R0
000074 103010 BCC 4$
000076 000433 BR 5$
000100 016702 000000G 3$: MOV .CRDAT,R2 ; 2902
000104 005003 CLR R3
000106 004767 170236 JSR PC,CHECK.BA
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 110
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (45)
000112 006000 ROR R0
000114 103424 BLO 5$
000116 011604 4$: MOV (SP),R4 ; CCB,* 2907
000120 012700 100030 MOV #-77750,R0
000124 004767 174436 JSR PC,SCHEDULE.TRANSMIT
000130 052765 002000 000152 BIS #2000,152(R5) ; *,*(DB) 2908
000136 012700 000152 MOV #152,R0 ; 2909
000142 060500 ADD R5,R0 ; DB,*
000144 004767 000000G JSR PC,$IC8
000150 012703 100174 MOV #-77604,R3 ; 2910
000154 004767 174450 JSR PC,SEND.PERSISTENT.ERROR
000160 004767 172456 JSR PC,MASTER.CLEAR ; 2911
000164 000446 BR 8$ ; 2906
000166 116500 000034 5$: MOVB 34(R5),R0 ; *(DB),* 2915
000172 020027 000003 CMP R0,#3
000176 001017 BNE 6$
000200 012700 000122 MOV #122,R0 ; 2919
000204 060500 ADD R5,R0 ; DB,*
000206 016601 000006 MOV 6(SP),R1 ; HIGH,*
000212 042701 140000 BIC #140000,R1
000216 004767 000000G JSR PC,$AC32
000222 012700 000132 MOV #132,R0 ; 2920
000226 060500 ADD R5,R0 ; DB,*
000230 004767 000000G JSR PC,$IC32
000234 000412 BR 7$ ; 2915
000236 020027 000004 6$: CMP R0,#4
000242 001007 BNE 7$
000244 011600 MOV (SP),R0 ; CCB,* 2924
000246 126027 000013 000010 CMPB 13(R0),#10 ; *(CCB),*
000254 001002 BNE 7$
000256 052715 100000 BIS #100000,(R5) ; *,DB 2926
000262 052765 020000 000032 7$: BIS #20000,32(R5) ; *,*(DB) 2930
000270 011604 MOV (SP),R4 ; CCB,* 2931
000272 012700 100001 MOV #-77777,R0
000276 004767 174264 JSR PC,SCHEDULE.TRANSMIT
000302 005726 8$: TST (SP)+ ; 2858
000304 012601 MOV (SP)+,R1
000306 000207 RTS PC
; Routine Size: 100 words, Routine Base: $CODE$ + 7470
; Maximum stack depth per invocation: 6 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 111
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (46)
; 2933 routine ZERO_CIRCUIT_COUNTERS (DB) : LINKAGE_DB novalue =
; 2934
; 2935 !++
; 2936 ! FUNCTIONAL DESCRIPTION:
; 2937 !
; 2938 !
; 2939 ! FORMAL PARAMETERS:
; 2940 ! DB = address of DMC data base.
; 2941 !
; 2942 ! IMPLICIT INPUTS:
; 2943 ! None
; 2944 !
; 2945 ! IMPLICIT OUTPUTS:
; 2946 ! None
; 2947 !
; 2948 ! ROUTINE VALUE:
; 2949 ! The appropriate NM status code
; 2950 !
; 2951 ! COMPLETION CODES:
; 2952 ! None
; 2953 !
; 2954 ! SIDE EFFECTS:
; 2955 ! None
; 2956 !--
; 2957
; 2958 begin
; 2959 GET_DMC_DATA_BASE (DB)
; 2960 COUNTER_ZERO (DB, D_BYTES_RECEIVED); ! [1000]
; 2961 COUNTER_ZERO (DB, D_BYTES_TRANSMITTED); ! [1001]
; 2962 COUNTER_ZERO (DB, D_BLOCKS_RECEIVED); ! [1010]
; 2963 COUNTER_ZERO (DB, D_BLOCKS_TRANSMITTED); ! [1011]
; 2964
; 2965 begin
; 2966
; 2967 macro
; 2968 BASE (FLD) = DB [$SUB_FIELD (D_LNTB, FLD)] %,
; 2969 COPY (FLD) = DB [$SUB_FIELD (D_CPTB, FLD)] %;
; 2970
; 2971 begin
; 2972
; 2973 local
; 2974 CNT,
; 2975 FRM_PTR,
; 2976 TO_PTR;
; 2977
; 2978 FRM_PTR = BASE [BASE_COUNTER_BEGIN];
; 2979 TO_PTR = COPY [BASE_COUNTER_BEGIN];
; 2980 CNT = %fieldexpand (BASE_NAKS_RCV_REP, 0)^1 + %fieldexpand (BASE_NAKS_RCV_REP, 1)/8
; 2981 - %fieldexpand (BASE_COUNTER_BEGIN, 0)^1 + %fieldexpand (BASE_COUNTER_BEGIN, 1)/8;
; 2982
; 2983 do ch$wchar_a (ch$rchar_a (FRM_PTR), TO_PTR) while (CNT = .CNT - 1) nequ 0;
; 2984
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 112
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (46)
; 2985 end;
; 2986
; 2987 if .DB [DF_DMR]
; 2988 then
; 2989 begin
; 2990 COPY [BASE_NAKS_RCV_REP] = .BASE [BASE_NAKS_RCV_REP];
; 2991 COPY [BASE_NAKS_RCV_TOO_LONG] = .BASE [BASE_NAKS_RCV_TOO_LONG];
; 2992 COPY [BASE_NAKS_SND_RCV_REP] = .BASE [BASE_NAKS_SND_RCV_REP];
; 2993 COPY [BASE_INCOMPLETE_SEL] = .BASE [BASE_INCOMPLETE_SEL];
; 2994 COPY [BASE_NO_REPLY_TO_SEL] = .BASE [BASE_NO_REPLY_TO_SEL];
; 2995 end;
; 2996
; 2997 end;
; 2998 end;
.SBTTL ZERO.CIRCUIT.COUNTERS
000000 004167 000000G ZERO.CIRCUIT.COUNTERS:
JSR R1,$SAVE5 ; 2933
000004 010502 MOV R5,R2 ; *,DB
000006 005062 000126 CLR 126(R2) ; *(DB) 2960
000012 005062 000130 CLR 130(R2) ; *(DB)
000016 005062 000122 CLR 122(R2) ; *(DB) 2961
000022 005062 000124 CLR 124(R2) ; *(DB)
000026 005062 000136 CLR 136(R2) ; *(DB) 2962
000032 005062 000140 CLR 140(R2) ; *(DB)
000036 005062 000132 CLR 132(R2) ; *(DB) 2963
000042 005062 000134 CLR 134(R2) ; *(DB)
000046 062705 000156 ADD #156,R5 ; *,FRM.PTR 2978
000052 010201 MOV R2,R1 ; DB,TO.PTR 2979
000054 062701 000556 ADD #556,R1 ; *,TO.PTR
000060 012700 000011 MOV #11,R0 ; *,CNT 2980
000064 112521 1$: MOVB (R5)+,(R1)+ ; FRM.PTR,TO.PTR 2983
000066 077002 SOB R0,1$ ; CNT,*
000070 032762 010000 000032 BIT #10000,32(R2) ; *,*(DB) 2987
000076 001417 BEQ 2$
000100 116262 000167 000567 MOVB 167(R2),567(R2) ; *(DB),*(DB) 2990
000106 116262 000172 000572 MOVB 172(R2),572(R2) ; *(DB),*(DB) 2991
000114 116262 000173 000573 MOVB 173(R2),573(R2) ; *(DB),*(DB) 2992
000122 116262 000214 000614 MOVB 214(R2),614(R2) ; *(DB),*(DB) 2993
000130 116262 000215 000615 MOVB 215(R2),615(R2) ; *(DB),*(DB) 2994
000136 000207 2$: RTS PC ; 2933
; Routine Size: 48 words, Routine Base: $CODE$ + 10000
; Maximum stack depth per invocation: 7 words
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 113
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (47)
; 2999 routine ZERO_LINE_COUNTERS (DB) : LINKAGE_DB novalue =
; 3000
; 3001 !++
; 3002 ! FUNCTIONAL DESCRIPTION:
; 3003 !
; 3004 !
; 3005 ! FORMAL PARAMETERS:
; 3006 ! DB = address of DMC data base.
; 3007 !
; 3008 ! IMPLICIT INPUTS:
; 3009 ! None
; 3010 !
; 3011 ! IMPLICIT OUTPUTS:
; 3012 ! None
; 3013 !
; 3014 ! ROUTINE VALUE:
; 3015 ! The appropriate NM status code
; 3016 !
; 3017 ! COMPLETION CODES:
; 3018 ! None
; 3019 !
; 3020 ! SIDE EFFECTS:
; 3021 ! None
; 3022 !--
; 3023
; 3024 begin
; 3025 GET_DMC_DATA_BASE (DB)
; 3026
; 3027 if .DB [DF_DMR]
; 3028 then
; 3029 begin
; 3030
; 3031 macro
; 3032 BASE (FLD) = DB [$SUB_FIELD (D_LNTB, FLD)] %,
; 3033 COPY (FLD) = DB [$SUB_FIELD (D_CPTB, FLD)] %;
; 3034
; 3035 COPY [BASE_NAKS_RCV_RCV_OVRN] = .BASE [BASE_NAKS_RCV_RCV_OVRN];
; 3036 COPY [BASE_NAKS_RCV_HDR_FMT] = .BASE [BASE_NAKS_RCV_HDR_FMT];
; 3037 COPY [BASE_NAKS_SND_RCV_OVRN] = .BASE [BASE_NAKS_SND_RCV_OVRN];
; 3038 COPY [BASE_NAKS_SND_HDR_FMT] = .BASE [BASE_NAKS_SND_HDR_FMT];
; 3039 COPY [BASE_XMT_UNDR] = .BASE [BASE_XMT_UNDR];
; 3040 COPY [BASE_STRM_TIMEOUT] = .BASE [BASE_STRM_TIMEOUT];
; 3041 end;
; 3042
; 3043 end;
.SBTTL ZERO.LINE.COUNTERS
000000 032765 010000 000032 ZERO.LINE.COUNTERS:
BIT #10000,32(R5) ; *,*(DB) 3027
000006 001422 BEQ 1$
000010 116565 000170 000570 MOVB 170(R5),570(R5) ; *(DB),*(DB) 3035
DMC 21-Feb-1984 12:56:46 TOPS-20 Bliss-16 3(552) Page 114
X04690 9-Nov-1983 10:58:01 EXODUS:<BRANNON.AP8.DMR>DMC.B16.2 (47)
000016 116565 000171 000571 MOVB 171(R5),571(R5) ; *(DB),*(DB) 3036
000024 116565 000174 000574 MOVB 174(R5),574(R5) ; *(DB),*(DB) 3037
000032 116565 000175 000575 MOVB 175(R5),575(R5) ; *(DB),*(DB) 3038
000040 116565 000176 000576 MOVB 176(R5),576(R5) ; *(DB),*(DB) 3039
000046 116565 000203 000603 MOVB 203(R5),603(R5) ; *(DB),*(DB) 3040
000054 000207 1$: RTS PC ; 2999
; Routine Size: 23 words, Routine Base: $CODE$ + 10140
; Maximum stack depth per invocation: 0 words
; 3044 end
; 3045 eludom
; OTS external references
.GLOBL $SAVE5, $SAVE4, $SAVE3, $STOP
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $PLIT$ 81 RO , D , LCL, REL, CON
; ...... 16 RW , D , LCL, REL, CON
; $CODE$ 2119 RO , I , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; NETPKG:<V3P0>MCBLIB.L16.7 372 100 26 0
; NETPKG:<MCB>XPORTX.L16.15 599 9 1 0
; NETPKG:<MCB>NMXLIB.L16.13 200 15 7 0
; EXODUS:<BRANNON.AP8.DMR>DMCDAT.L16.3 220 181 82 0
; Size: 2119 code + 97 data words
; Run Time: 00:48.7
; Elapsed Time: 01:37.2
; Memory Used: 91 pages
; Compilation Complete