Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/drivers/dcpini.b16
There are no other files named dcpini.b16 in the archive.
module DCPINI (	! DDCMP Initialization
		ident = 'X01070',
		language (bliss16)
		) =
begin

!
!                    COPYRIGHT (c) 1980, 1981, 1982
!                    DIGITAL EQUIPMENT CORPORATION
!                        Maynard, Massachusetts
!
!     This software is furnished under a license and may  be  used
!     and copied only in accordance with the terms of such license
!     and with the inclusion of the above copyright notice.   This
!     software  or any other copies thereof may not be provided or
!     otherwise made available to any other person.  No  title  to
!     and ownership of the software is hereby transferred.
!
!     The information  in  this  software  is  subject  to  change
!     without  notice  and should not be construed as a commitment
!     by DIGITAL EQUIPMENT CORPORATION.
!
!     DIGITAL assumes no responsibility for the use or reliability
!     of  its  software  on  equipment  which  is  not supplied by
!     DIGITAL.
!

!++
!
! FACILITY: MCB DDCMP Protocol Driver
!
! ABSTRACT:
!
!	This module contains the DDCMP initialization routines.
!
! ENVIRONMENT: MCB V3.2
!
! AUTHOR: Alan D. Peckham	CREATION DATE: 16-Apr-81
!
! MODIFIED BY:
!
!	Alan D. Peckham, 16-Apr-81: Version 1
! 01	- New module for DCP.
! 03	- Use $MCB_GET_DEVICE_NAME to get circuit/line name.
! 04	- Save NMX process index for later.
! 05	- Get KDP parameters from PLL.
! 06	- Turn on NMX$FLG_maintenance_allowed for the circuit.
! 07	- Zero the time-last-zeroed counter.
!--
!
! INCLUDE FILES:
!

library 'MCBLIB';

library 'XPORTX';

library 'NMXLIB';

library 'DCPDAT';

!
! TABLE OF CONTENTS:
!

linkage
    DDM_CCB = jsr (register = 4) : nopreserve (4);

forward routine
    TIMPIN : MCB_DB novalue;

!
! MACROS:
!
!	None
!
! EQUATED SYMBOLS:
!

literal
    TRUE = 1 EQL 1,
    FALSE = 1 EQL 0,
    NO_OPERATION = 0;

macro
    C_HANDLE = %fieldexpand (C_LIN, 0), 0, %bpval, 0 %;

!
! OWN STORAGE:
!

external routine
    $DSPCR : novalue;

!
! EXTERNAL REFERENCES:
!

external
    MCB$GAW_PROCESS_DATA_BASE : vector [2],
    MCB$GW_PROCESS_HANDLE;

bind
    DB_BIAS = MCB$GAW_PROCESS_DATA_BASE [0];

macro
    GET_DCP_DATA_BASE (NAME) =
	%if %declared (NAME)
	%then map NAME : ref
	%else bind NAME = .MCB$GAW_PROCESS_DATA_BASE [1] :
	%fi block field (D_FIELDS) %;
global routine TIMPIN

!++
! FUNCTIONAL DESCRIPTION:
!	
!
! FORMAL PARAMETERS:
!
       (DB : ref block field (D_FIELDS))
!
! IMPLICIT INPUTS:
!	None
!
! IMPLICIT OUTPUTS:
!	None
!
! ROUTINE VALUE:
!
	: MCB_DB novalue =
!
! SIDE EFFECTS:
!	None
!--

    begin
    DB [L_PROTOCOL] = DP_DMC;

    if .DB [LI_HDX] then DB [L_DUPLEX] = 1;

    $NM_TIME (DB [L_TIME_LINE_ZEROED]);
    begin

    local
	NMXPIX;

    if $MCB_GET_PROCESS_HANDLE (%rad50_11 'NMX', NMXPIX)
    then
	begin

	local
	    NAME_BUFFER : vector [ch$allocation (17)],
	    NMXID;

	bind
	    NAME_PTR = ch$ptr (NAME_BUFFER);

	DB [D_NMX_PIX] = .NMXPIX;
	$MCB_GET_DEVICE_NAME (.DB [L_LINE_ENTITY], NAME_PTR);
	NMX$CREATE_LINE (.NMXPIX, NAME_PTR, 0, NMXID);
	NMX$MODIFY_LINE_PROVIDER (.NMXPIX, NAME_PTR,
	    .MCB$GW_PROCESS_HANDLE^8 + DCP_K_LINE_PROVIDER,
	    DB [L_LINE_ENTITY]);
	NMX$MODIFY_LINE_OWNER (.NMXPIX, NAME_PTR,
	    .MCB$GW_PROCESS_HANDLE^8 + DCP_K_LINE_OWNER,
	    NMXID);
	NMX$CREATE_CIRCUIT (.NMXPIX, NAME_PTR, NMX$FLG_maintenance_allowed, NMXID);
	NMX$MODIFY_CIRCUIT_PROVIDER (.NMXPIX, NAME_PTR,
	    .MCB$GW_PROCESS_HANDLE^8 + DCP_K_CIRCUIT_PROVIDER,
	    DB [S_CIRCUIT_ENTITY]);
	end;

    end;
    begin

    local
	CCB : ref block field (C_FIELDS);

    external routine
	$DDGET : DDM_CCB novalue;

    if not $MCB_GET_CCB (CCB) then return;

    CCB [C_HANDLE] = .DB [L_DRIVER_HANDLE];
    $DDGET (.CCB);
    end;
    end;
end
eludom