Google
 

Trailing-Edge - PDP-10 Archives - tops10_tools_bb-fp64b-sb - 10,7/mcbda/cexlib.r16
There is 1 other file named cexlib.r16 in the archive. Click here to see a list.
! CEXLIB.R16 - CEX Structure definitions for MCBDA
!
! COPYRIGHT (C) 1980
! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754
!
! THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A SINGLE
! COMPUTER SYSTEM AND MAY BE COPIED ONLY 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
! EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE
! TERMS. TITLE TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES
! REMAIN IN DEC.
!
! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
! CORPORATION.
!
! DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
!

!++
! FACILITY: MCB Communications Executive
!
! FUNCTIONAL ABSTRACT:
!
!	This module contains the Comm/Exec specific macros
!
! ENVIRONMENT: RSX kernel mode with EIS
!
! AUTHOR: Alan D. Peckham, CREATION DATE: 20-MAR-80
!
! MODIFIED BY:
!
! 01	- Use macros from MCBLIB
! 02	- Process descriptor re-organized.
!--

%if not %declared (XPO$K_VERSION) %then library 'BLI:XPORT'; %fi

%if not %declared (MCB$K_VERSION) %then library 'MCB:MCBLIB'; %fi

$SHOW (FIELDS) $SHOW (LITERALS)

!
! EQUATED SYMBOLS:
!

%if %bliss (bliss16) %then
linkage
    CEX_LL_ADD_LOW_HIGH = jsr (register = 2, register = 1, register = 0; register = 1, register = 0),
    CEX_LL_BLKS = jsr (register = 1) : preserve (0) clearstack valuecbit,
    CEX_LL_CNT_LOW_HIGH = jsr (register = 2, register = 1, register = 0; register = 1, register = 0),
    CEX_LL_NUM_LOW_HIGH = jsr (register = 2, register = 1, register = 0; register = 0, register = 1),
    CEX_LL_NUM_NUM = jsr (register = 2, register = 0; register = 1, register = 0),
    CEX_LL_PDB_FNC_MOD = jsr (register = 0, register = 2, register = 3)
	: nopreserve (0, 1, 2, 3, 4, 5),
    CEX_LL_PDB_DSP = jsr (register = 0, register = 2)
	: nopreserve (0, 1, 2, 3, 4, 5);
%fi

macro
    CEX$$ADD_32 = %name ('$ADD32') %,
    CEX$$ADDRESS_ERROR_TRAP = %name ('$EX4') %,
    CEX$$ALLOCATE_CORE = %name ('$BLKGT') %,
    CEX$$BREAKPOINT_TRAP = %name ('$EX14') %,
    CEX$$CLEAR_PROCESS = %name ('$PDBCL') %,
    CEX$$CLEAR_PROCESS_NAME = %name ('$PNMCL') %,
    CEX$$CLEAR_VECTOR = %name ('$VECCL') %,
    CEX$$DISPATCH_PROCESS = %name ('$PRCDS') %,
    CEX$$DIVIDE_32 = %name ('$DIV32') %,
    CEX$$EMT_INSTRUCTION_TRAP = %name ('$EX30') %,
    CEX$$ENTER_CEX = %name ('$CEXSV') %,
    CEX$$EXIT_CEX = %name ('$CEXXT') %,
    CEX$$GET_LINE_NAME = %name ('$SLTNM') %,
    CEX$$GET_LINE_PROCESSES = %name ('$SLTGT') %,
    CEX$$GET_PROCESS_INDEX = %name ('$PNMGT') %,
    CEX$$GET_PROCESS_NAME = %name ('$PRCNM') %,
    CEX$$ILLEGAL_INSTRUCTION_TRAP = %name ('$EX10') %,
    CEX$$IOT_INSTRUCTION_TRAP = %name ('$EX20') %,
    CEX$$MULTIPLY_32 = %name ('$MUL32') %,
    CEX$$PARITY_ERROR_TRAP = %name ('$EX114') %,
    CEX$$POWER_FAILURE_TRAP = %name ('$EX24') %,
    CEX$$SEGMENT_FAULT_TRAP = %name ('$EX250') %,
    CEX$$SET_EXCEPTION = %name ('$EXVEN') %,
    CEX$$SET_LINE_PROCESSES = %name ('$SLTST') %,
    CEX$$SET_PROCESS = %name ('$PDBST') %,
    CEX$$SET_PROCESS_NAME = %name ('$PNMST') %,
    CEX$$SET_VECTOR = %name ('$VECST') %,
    CEX$$SHIFT_32 = %name ('$ASH32') %,
    CEX$$SYNCHRONIZE_PROCESS = %name ('$SYNDS') %,
    CEX$$TRAP_INSTRUCTION_TRAP = %name ('$EX34') %,

    CEX$GW_AVG_CCB_DISPATCHES = %name ('.SMDSP') %,
    CEX$GW_AVG_INTERRUPTS = %name ('.SMINT') %,
    CEX$GW_AVG_LONG_TIMERS = %name ('.SMLTM') %,
    CEX$GW_AVG_SHORT_TIMERS = %name ('.SMSTM') %,
    CEX$GW_AVG_SYNCHS = %name ('.SMSYN') %,
    CEX$GW_BLOCK_POOL_BIAS = %name ('.BLKTB') %,
    CEX$GH_BUFFER_POOL_COUNT = %name ('.CORNM') %,
    CEX$GA_BUFFER_POOL_TABLE = %name ('.CORTA') %,
    CEX$GW_CCB_DISPATCH_COUNT = %name ('.DSPCT') %,
    CEX$AG_CCB_DSR_ALLOCATION = %name ('.CCBDM') %,
    CEX$GR_CCB_POOL = %name ('.CCBTB') %,
    CEX$AA_CCB_QUEUE_H = %name ('.CBHQH') %,
    CEX$AA_CCB_QUEUE_L = %name ('.CBLQH') %,
    CEX$GA_CEX_FORK_BLOCK = %name ('.FRKBK') %,
    CEX$GG_CEX_PROCESSING_DEPTH = %name ('.CEXDP') %,
    CEX$AR_CEX_SYNCH_BLOCK = %name ('.PDSYN') %,
    CEX$GB_CURRENT_PROCESS_INDEX = %name ('.CRPIX') %,
    CEX$GA_CURRENT_INTERRUPT = %name ('.INTCB') %,
    CEX$GA_CURRENT_PROCESS = %name ('.CRPDB') %,
    CEX$GA_DTE_BOOT_ROM_ADDRESS = %name ('.DTERG') %,
    CEX$GR_DUMP_EXCEPTION = %name ('.MEXVD') %,
    CEX$GR_INTERRUPT_4_BLOCK = %name ('.INTC4') %,
    CEX$GR_INTERRUPT_5_BLOCK = %name ('.INTC5') %,
    CEX$GR_INTERRUPT_6_BLOCK = %name ('.INTC6') %,
    CEX$GR_INTERRUPT_7_BLOCK = %name ('.INTC7') %,
    CEX$GR_LAST_CHANCE_EXCEPTION = %name ('.MEXVL') %,
    CEX$GW_LONG_TIMER_COUNT = %name ('.LTMCT') %,
    CEX$GW_MAXIMUM_PROCESSES = %name ('') %,
    CEX$GA_PANIC_STACK = %name ('.PANSP') %,
    CEX$GW_PANIC_STATUS = %name ('.PANPS') %,
    CEX$GG_POWER_FAIL_COUNT = %name ('.PWRFL') %,
    CEX$GR_PRIMARY_EXCEPTION = %name ('.MEXV1') %,
    CEX$GH_PROCESS_COUNT = %name ('.PDBNM') %,
    CEX$AG_PROCESS_DATA_BASE = %name ('.CRDAT') %,
    CEX$GH_PROCESS_NAME_COUNT = %name ('.PNMNM') %,
    CEX$GA_PROCESS_NAME_TABLE = %name ('.PNMTA') %,
    CEX$AA_PROCESS_TABLE = %name ('.PDBVB') %,
    CEX$GA_PROCESS_TABLE_END = %name ('.PDBVE') %,
    CEX$AW_RANDOM_NUMBER_SEED = %name ('.RND') %,
    CEX$AG_RDB_CORE_ALLOCATION = %name ('.RDBCM') %,
    CEX$AG_RDB_DSR_ALLOCATION = %name ('.RDBDM') %,
    CEX$GR_RDB_POOL = %name ('.RDBTB') %,
    CEX$GG_RSX_APR6_MAPPING = %name ('.RSXMP') %,
    CEX$GH_SCHEDULING_REQUESTS = %name ('.CEXRQ') %,
    CEX$GR_SECONDARY_EXCEPTION = %name ('.MEXV2') %,
    CEX$GW_SHORT_TIMER_COUNT = %name ('.STMCT') %,
    CEX$GA_SHORT_TIMER_DISPATCH = %name ('.TIMDS') %,
    CEX$GU_SIGNAL_CALLS = %name ('.DBGST') %,
    CEX$GA_SIGNAL_CALL_FRAME = %name ('.DBGFP') %,
    CEX$GA_SIGNAL_FRAME = %name ('.$IGREG') %,
    CEX$GA_SIGNAL_MECHANISM = %name ('.MCHVC') %,
    CEX$GG_SIGNAL_STACK_RELOCATION = %name ('$HANSP') %,
    CEX$GG_SIGNAL_STATUS = %name ('.CEXST') %,
    CEX$GU_SIGNAL_UNWIND_REQUEST = %name ('.UNWLV') %,
    CEX$GW_STATISTICS_INTERVAL = %name ('.SMSEC') %,
    CEX$GW_STATISTICS_TIMER = %name ('.SITIM') %,
    CEX$GW_SYNCH_COUNT = %name ('.SYNCT') %,
    CEX$AA_SYNCH_QUEUE = %name ('.SYNQH') %,
    CEX$GH_SYSTEM_LINE_COUNT = %name ('.SLTNM') %,
    CEX$GA_SYSTEM_LINE_TABLE = %name ('.SLTTA') %,
    CEX$GA_UBM_DATA_BASE = %name ('.UBMTA') %;

literal
    MCB$K_SET_EXCEPTION = 0^1,
    MCB$K_SET_PROCESS = 1^1,
    MCB$K_CLEAR_PROCESS = 2^1,
    MCB$K_GET_PROCESS_INDEX = 3^1,
    MCB$K_GET_PROCESS_NAME = 4^1,
    MCB$K_SET_PROCESS_NAME = 5^1,
    MCB$K_CLEAR_PROCESS_NAME = 6^1,
    MCB$K_SET_VECTOR = 7^1,
    MCB$K_CLEAR_VECTOR = 8^1,
    MCB$K_GET_LINE_NAME = 9^1,
    MCB$K_SET_LINE_PROCESSES = 10^1,
    MCB$K_GET_LINE_PROCESSES = 11^1,
    MCB$K_GET_DEVICE_NAME = 12^1;

    !
    ! Buffer pool entry and buffer header.
    !

macro
    $CEX_BFPDEF =
	field
	    $CEX_BFPFIELDS =
		set
		BFP$H_SIZE = [0, 0, 16, 0],
		BFP$H_FREE_COUNT = [1, 0, 16, 0],
		BFP$V_QUEUE = [2, 0, 0 %(4*16)%, 0],
		BFP$W_QUEUE_FIRST_BIAS = [2, 0, 16, 0],
		BFP$A_QUEUE_FIRST_ADDR = [3, 0, 16, 0],
		BFP$W_QUEUE_LAST_BIAS = [4, 0, 16, 0],
		BFP$A_QUEUE_LAST_ADDR = [5, 0, 16, 0],
		BFP$G_ALLOCATION_FAILURES = [6, 0, 16, 0],
		BFP$H_ALLOCATED = [7, 0, 16, 0],
		BFP$W_ALLOCATED_BIAS = [8, 0, 16, 0],
		BFP$W_ALLOCATED_BLKS = [9, 0, 16, 0],
		! Initialization data
		BFP$H_ALLOCATION_MAXIMUM = [8, 0, 16, 0],
		BFP$H_ALLOCATION_MINIMUM = [9, 0, 16, 0]
		tes,
	    $CEX_BFHFIELDS =
		set
		BFH$W_BIAS = [0, 0, 16, 0],
		BFH$A_ADDRESS = [1, 0, 16, 0],
		BFH$H_SIZE = [2, 0, 16, 0],
		BFH$A_PROCESS = [3, 0, 16, 0]
		tes;

	literal
	    BFP$K_LENGTH = 10,
	    BFH$K_LENGTH = 4; %,

    !
    ! CCB pool entry.
    !

    $CEX_CBPDEF =
	field
	    $CEX_CBPFIELDS =
		set
		CBP$H_SIZE = [0, 0, 16, 0],
		CBP$H_ALLOCATED = [1, 0, 16, 0],
		CBP$G_ALLOCATION_FAILURES = [2, 0, 16, 0],
		CBP$V_QUEUE = [3, 0, 0 %(2*16)%, 0],
		CBP$A_QUEUE_FIRST = [3, 0, 16, 0],
		CBP$A_QUEUE_LAST = [4, 0, 16, 0],
		CBP$H_FREE_COUNT = [5, 0, 16, 0],
		CBP$H_REQUESTS = [6, 0, 16, 0],
		CBP$A_NEXT_PROCESS = [7, 0, 16, 0],
		CBP$G_REQUEST_FLAG = [8, 0, 16, 0],
		CBP$B_FUNCTION = [9, 0, 8, 0],
		CBP$B_MODIFIER = [9, 8, 8, 0],
		CBP$W_ALLOCATED_BIAS = [10, 0, 16, 0],
		CBP$W_ALLOCATED_BLKS = [11, 0, 16, 0],
		CBP$A_ALLOCATED_ADDRESS = [12, 0, 16, 0],
		CBP$W_ALLOCATED_LENGTH = [13, 0, 16, 0],
		! Initialization data
		CBP$H_ALLOCATION_MAXIMUM = [10, 0, 16, 0],
		CBP$H_ALLOCATION_MINIMUM = [11, 0, 16, 0]
		tes;

	literal
	    CBP$K_LENGTH = 14; %,

    !
    ! CCB extensions
    !

    $CEX_CCBDEF =
	field
	   $CEX_CCBFIELDS =
		set
		CCB$A_LINK = [0, 0, 16, 0],
		CCB$A_CHAIN = [1, 0, 16, 0],
		CCB$A_STACK = [2, 0, 16, 0],
		CCB$B_OWNER_PROCESS_INDEX = [3, 0, 8, 0],
		CCB$V_FLAGS = [3, 8, 8, 0],
		CCB$V_RDB = [3, 8, 1, 0],
		CCB$V_ACTIVE = [3, 9, 1, 0],
		CCB$V_USED = [3, 10, 1, 0],
		CCB$B_LINE_INDEX = [4, 0, 8, 0],
		CCB$B_PROCESS_INDEX = [4, 8, 8, 0],
		CCB$B_FUNCTION = [5, 0, 8, 0],
		CCB$B_MODIFIER = [5, 8, 8, 0],
		CCB$G_STATUS = [6, 0, 16, 1],
		CCB$W_BIAS = [7, 0, 16, 0],
		CCB$A_ADDRESS = [8, 0, 16, 0],
		CCB$G_COUNT = [9, 0, 16, 0],
		CCB$G_PARAMETER_1 = [10, 0, 16, 0],
		CCB$G_PARAMETER_2 = [11, 0, 16, 0],
		CCB$G_PARAMETER_3 = [12, 0, 16, 0],
		CCB$G_PARAMETER_4 = [13, 0, 16, 0],
		CCB$G_PARAMETER_5 = [14, 0, 16, 0],
		CCB$A_DESTINATION_PROCESS = [15, 0, 16, 0],
		CCB$A_SOURCE_PROCESS = [16, 0, 16, 0]
		tes;

	literal
	    CCB$K_LENGTH = 17; %,

    !
    ! Exception vector
    !

    $CEX_EXVDEF =
	field
	    $CEX_EXVFIELDS =
		set
		EXV$G_LEVEL = [0, 0, 16, 1],
		EXV$A_PROCESS = [1, 0, 16, 0],
		EXV$A_DISPATCH = [2, 0, 16, 0],
		EXV$A_ENABLE_DATA = [3, 0, 16, 0]
		tes;

	literal
	    EXV$K_LENGTH = 4,
	    EXV$K_PRIMARY = 0,
	    EXV$K_SECONDARY = 1,
	    EXV$K_LAST_CHANCE = 2; %,

    !
    ! Interrupt transfer and priority blocks
    !

    $CEX_ITBDEF =
	field
	    $CEX_ITBFIELDS =
		set
		ITB$V_JSR_5 = [0, 0, 0 %(2*16)%, 0],
		ITB$W_JSR_5_INSTRUCTION = [0, 0, 16, 0],
		ITB$A_JSR_5_ADDRESS = [1, 0, 16, 0],
		ITB$A_PROCESS = [2, 0, 16, 0],
		ITB$A_DISPATCH = [3, 0, 16, 0]
		tes,
	    $CEX_IPBFIELDS =
		set
		IPB$V_JSR_4 = [0, 0, 0 %(2*16)%, 0],
		IPB$W_JSR_4_INSTRUCTION = [0, 0, 16, 0],
		IPB$A_JSR_4_ADDRESS = [1, 0, 16, 0],
		IPB$A_LINK = [2, 0, 16, 0],
		IPB$A_PROCESS = [3, 0, 16, 0],
		IPB$W_COUNT = [4, 0, 16, 0],
		IPB$B_PRIORITY = [5, 0, 8, 0]
		tes;

	literal
	    ITB$K_LENGTH = 4,
	    IPB$K_LENGTH = 6; %,

    !
    ! Process descriptor table
    !

    $CEX_PDTDEF =
	field
	    $CEX_PDTFIELDS =
		set
		PDT$W_CODE_BIAS = [0, 0, 16, 0],
		PDT$A_CODE_DISPATCH = [1, 0, 16, 0],
		PDT$W_DATA_BIAS = [2, 0, 16, 0],
		PDT$A_DATA_ADDRESS = [3, 0, 16, 0],
		PDT$B_INDEX = [4, 0, 8, 0],
		PDT$V_FLAGS = [4, 8, 8, 1],
		PDT$V_UCB_INCLUDED = [4, 8, 1, 0],
		PDT$V_DATA_BASE_INCLUDED = [4, 9, 1, 0],
		PDT$V_PERMANENT = [4, 10, 1, 0],
		PDT$V_KILL_PROCESS = [4, 11, 1, 0],
		PDT$V_CCB_REQUESTED = [4, 12, 1, 0],
		PDT$V_RDB_REQUESTED = [4, 14, 1, 0],
		PDT$V_LONG_TIMER = [4, 15, 1, 1],
		PDT$A_UCB = [5, 0, 16, 0],
		! Initialization data
		PDT$W_CODE_NAME = [0, 0, 16, 0],
		PDT$A_DISPATCH_ADDRESS_ADDRESS = [1, 0, 16, 0]
		tes;

	literal
	    PDT$K_LENGTH = 6; %,

    !
    ! Process header
    !

    $CEX_PHDDEF =
	field
	    $CEX_PHDFIELDS =
		set
		PHD$W_NAME = [0, 0, 16, 0],
		PHD$B_MCB_VERSION = [1, 0, 8, 0],
		PHD$B_MCB_LEVEL = [1, 8, 8, 0],
		PHD$W_BLKS = [2, 0, 16, 0],
		PHD$A_PATCH = [3, 0, 16, 0],
		PHD$A_SIGNAL = [4, 0, 16, 0],
		PHD$A_LLC_TABLE = [5, 0, 16, 0],
		PHD$A_DLC_TABLE = [6, 0, 16, 0],
		PHD$A_DDM_TABLE = [7, 0, 16, 0],
		PHD$L_CEX_IDENT = [8, 0, 0 %(32)%, 0],
		PHD$W_CEX_IDENT_1 = [8, 0, 16, 0],
		PHD$W_CEX_IDENT_2 = [9, 0, 16, 0],
		PHD$V_BLISS = [12, 8, 1, 0],
		PHD$V_RSX_TABLE_INCLUDED = [12, 9, 1, 0],
		PHD$A_RSX_TABLE = [13, 0, 16, 0],
		PHD$A_CEX_TABLE = [14, 0, 16, 0]
		tes; %,

    !
    ! Process name table
    !

    $CEX_PNMDEF =
	field
	    $CEX_PNMFIELDS =
		set
		PNM$A_PROCESS = [0, 0, 16, 0],
		PNM$W_NAME = [1, 0, 16, 0],
		! Initialization data
		PNM$W_PROCESS_INDEX = [0, 0, 16, 0]
		tes;

	literal
	    PNM$K_LENGTH = 2; %,

    !
    ! System line table
    !

    $CEX_SLTDEF =
	field
	    $CEX_SLTFIELDS =
		set
		SLT$V_BASE = [0, 0, %bpval, 0],
		SLT$B_DDM_PROCESS_INDEX = [0, 0, 8, 0],
		SLT$B_LINE_INDEX = [0, 8, 8, 0],
		SLT$B_DLC_PROCESS_INDEX = [1, 0, 8, 0],
		SLT$B_CONTROLLER = [1, 8, 8, 0],
		SLT$B_LLC_PROCESS_INDEX = [2, 0, 8, 0],
		SLT$B_UNIT = [2, 8, 8, 0],
		SLT$A_DEVICE = [3, 0, 16, 0]
		tes;

	literal
	    SLT$K_LENGTH = 4; %,

    !
    ! SYNCH block
    !

    $CEX_SYNDEF =
	field
	    $CEX_SYNFIELDS =
		set
		SYN$A_LINK = [0, 0, 16, 0],
		SYN$A_PROCESS = [1, 0, 16, 0],
		SYN$A_DISPATCH = [2, 0, 16, 0]
		tes;

	literal
	    SYN$K_LENGTH = 3; %,

    !
    ! Timer block
    !

    $CEX_TMBDEF =
	field
	    $CEX_TMBFIELDS =
		set
		TMB$B_UNIT = [1, 8, 8, 0],
		TMB$W_IDENTIFIER = [2, 0, 16, 0],
		TMB$G_MAGNITUDE = [7, 0, 16, 0],
		TMB$A_PROCESS = [8, 0, 16, 0]
		tes;

	literal
	    TMB$K_LENGTH = 9,
	    TMB$K_MILLISECONDS = 0,
	    TMB$K_SECONDS = 2; %,

!
! Unibus Mapping tabld
!

$CEX_UBMDEF = 

     field
        $CEX_UBMFIELDS =
             set
             UBM$A_LINK = [0,0,16,0],
             UBM$W_START_BLK = [1,0,16,0],
             UBM$W_END_BLK = [2,0,16,0],
             UBM$B_BASE_UBMR = [3,0,8,0]
             tes;

    literal
	UBM$K_LENGTH = 4 ; %;

!
! [End of CEXLIB.R16]