!Version:	X-6
!
! COPYRIGHT (c) 1988 BY
! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS.
! ALL RIGHTS RESERVED.
!
! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
! ONLY  IN  ACCORDANCE  OF  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:
! 
!   VMSLIB -- VMS-MACROS.REQ
! 
! ABSTRACT:
! 
!   This module contains a lot of handy macros for systems programming in
!   BLISS.  They are of a general sort, and will be included in LIB.REQ and
!   LIB.L32.
! 
! AUTHORS:
! 
!   VMS Development
! 
! CREATION DATE: 13 September, 1988
! 
! MODIFICATION HISTORY:
!	X-6	CAM0088		Christopher A. Mega	16-Nov-1989
!		Fix $INSQHI, $INSQTI, $REMQHI, $REMQTI macros.  Fixes
!		provided by Dave Marsh, Reading.  Change involves swapping
!		parameters to macros, and updating them to return the
!		correct status of the actual queue operation.
!		Bump version to match CMS generation
!
!	X-4	JDC0558		Jon Callas		 3-NOV-1989
!		$PROBE is not preserving R1 and R2 properly.
!
!       X-3	DDP0393		Derrell D. Piper       28-JUL-1989  14:16
!		Move UTLDEFB to here.  Add a couple of new macros:
!		    $xxx_WITH_RETRY
!		    $MOVE_QUAD
!		    $SAY
!		    $XDELTA
!
!	X-2	EMB0423		Ellen M. Batbouta	21-Jul-1989
!		Add $INSQHI, $INSQTI, $REMQHI and $REMQTI.
!
!	X-1	JDC0407		Jon Callas		13-SEP-1988
!		Create module.
!--

MACRO
    $probe ($$loc, $$len, $$type, $$mode) =
!+
! This macro probes a range using PROBEx or EXE$PROBEx.
!
! $$loc is the starting address of the range.
! $$len is the length of the range
! $$type is the type of probe to be done, allowable values are:
! 
!   R -- probe for read access. If the probe is a compile-time constant less
!   than a page in length, then PROBER is used, otherwise EXE$PROBER is used.
!
!   W -- probe for write access as per R above.
!
!   RQ -- probe for read access, but always use a PROBER instruction. A Mnemonic
!   for the Q is "quick."
!
!   WQ -- probe for write access, as per RQ.
!
! $$mode is the mode of the probe -- defaults to 0.
!
! The macro returns a value that is either true or false, suitable for use in an
! IF statement.
! 
!-
	BEGIN
	COMPILETIME quick = 0,
		    pmode = 0;

	%IF %LENGTH LSS 3
	%THEN
	    %ERROR('Too few parameters in $PROBE')
	%FI

	%IF %LENGTH GEQ 4
	%THEN
	    %IF %CTCE($$mode)
	    %THEN
		%ASSIGN(pmode,$$mode)
	    %ELSE
		%ERROR('Error in $PROBE, ',$$mode,' must be a compile-time constant.')
	    %FI
	%FI

	%IF (NOT %IDENTICAL($$type,r)) AND
	    (NOT %IDENTICAL($$type,w)) AND
	    (NOT %IDENTICAL($$type,rq)) AND
	    (NOT %IDENTICAL($$type,wq)) 
	%THEN
	    %ERROR('Error in $PROBE, ',$$type,' is an illegal type.')
	%FI

	%IF %IDENTICAL($$type,rq) OR %IDENTICAL($$type,wq)
	%THEN
	    %ASSIGN(quick,1)
	%FI

	%IF quick OR (%CTCE($$len) AND ($$len LEQ 512))
	%THEN

	    MACRO pbuiltin = 
		%IF %IDENTICAL($$type,r) or %IDENTICAL($$type,rq)
		%THEN
		    PROBER
		%ELSE
		    PROBEW
		%FI

		%QUOTE % ;

	    BUILTIN
		pbuiltin;
		
	    pbuiltin(%REF(pmode),%REF($$len),$$loc)

	%ELSE
	    LINKAGE
		probe_linkage = JSB (REGISTER = 0, REGISTER = 1, REGISTER = 3) : NOPRESERVE(1,2);

	    EXTERNAL ROUTINE
		%NAME('EXE$PROBE',$$type) : probe_linkage ADDRESSING_MODE(GENERAL);


	    %NAME('EXE$PROBE',$$type)($$loc,$$len,pmode)

	%FI
	END %;

MACRO
    $bug_check ($$name, $$type) =
!+
! This macro generates a bugcheck. It is analogous to the MACRO-32 BUG_CHECK
! macro. You use it with a call like $BUG_CHECK(VAXPORT,FATAL);
!
! Note that this macro generates a reference to an external symbol for the
! BUG$_WHATEVER code. It would be real nice if the BUG$_ codes were in LIB, but
! they're not, so they get resolved at link time. Sorry.
!
! $$name is the name of the of the bugcheck. VAXPORT, KRPEMPTY, etc.
! $$type is the type of the bugcheck. FATAL makes it a fatal bugcheck, anything
!        else is a non-fatal bugcheck. Case doesn't matter.
!-
	BEGIN
	EXTERNAL LITERAL
	    %NAME('BUG$_',$$name);

	BUILTIN
	    bugw;

	%IF %IDENTICAL($$type,fatal)
	%THEN
	    BUGW(4 OR %NAME('BUG$_',$$name))
	%ELSE
	    BUGW(%NAME('BUG$_',$$name))
	%FI

	END %;

!+
! $INSQHI - Execute an interlocked queue insert instruction and retry if 
!	    failure. 
! $INSQTI 
!
!	INPUT:
!
!	ENTRY -  Address of entry to be inserted in queue
!	HEAD  -  Address of queue header
!
!	Note: System is bug_checked if queue operation fails because secondary
!	interlock bit stays set.
!-
MACRO
    $INSQHI (ENTRY, HEAD) =
    BEGIN
	BUILTIN INSQHI;

    LOCAL
	COUNTER : INITIAL (0),
	STATUS;

    WHILE (STATUS = INSQHI (ENTRY, HEAD)) EQL 1 DO
	IF ((COUNTER = .COUNTER + 1) GTRU 90000)
	THEN
	    $BUG_CHECK (BADQHDR, FATAL);

    .STATUS
    END%;


MACRO
    $INSQTI (ENTRY, HEAD) =

    BEGIN
	BUILTIN	INSQTI;

    LOCAL
	COUNTER : INITIAL (0),
	STATUS;

    WHILE (STATUS = INSQTI (ENTRY, HEAD)) EQL 1 DO
	IF ((COUNTER = .COUNTER + 1) GTRU 90000)
	THEN
	    $BUG_CHECK (BADQHDR, FATAL);

    .STATUS
    END%;


!+
! $REMQHI - Execute an interlocked queue remove instruction and retry if failure
! $REMQTI
!
!	INPUT:
!
!	Head -  Address of queue header
!	Entry - Address of a longword where the address of the entry removed
!		is to be stored
!	
!	
!	Note: System is bug_checked if queue operation fails because secondary
!	      interlock bit stays set.
!-
MACRO
    $REMQHI (HEAD, ENTRY) =
    BEGIN
	BUILTIN REMQHI;

    LOCAL
	COUNTER : INITIAL (0),
	STATUS;

    WHILE (STATUS = REMQHI (HEAD, ENTRY)) EQL 1 DO
	IF ((COUNTER = .COUNTER + 1) GTRU 90000)
	THEN
	    $BUG_CHECK (BADQHDR, FATAL);

    .STATUS
    END %;

MACRO
    $REMQTI (HEAD, ENTRY) =
    BEGIN
	BUILTIN REMQTI;
    
    LOCAL
	COUNTER : INITIAL (0),
	STATUS;

    WHILE (STATUS = REMQTI (HEAD, ENTRY)) EQL 1 DO
	IF ((COUNTER = .COUNTER + 1) GTRU 90000)
	THEN
	    $BUG_CHECK (BADQHDR, FATAL);

    .STATUS
    END %;

!+
! $GET_WITH_RETRY	perform an RMS $GET with automatic retry
! $PUT_WITH_RETRY	perform an RMS $PUT with automatic retry
! $UPDATE_WITH_RETRY	perform an RMS $UPDATE with automatic retry
! $DELETE_WITH_RETRY	perform an RMS $DELETE with automatic retry
!
! INPUT:
!
!	RAB	address of RAB
!	SUC	address of routine to execute on successful completion
!	ERR	address of routine to execute on failure
!-

! This macro is used by the RMS retry macros.

MACRO
   $$RETRY (SERVICE, R, E, S) =
	BEGIN
	LITERAL
	    $$RETRY_LIMIT = 10,			! number of times to retry
	    $$SLEEP_RLK   = 500;		! 500 ms before retrying

	BIND
	    $$WAKEDELTA = UPLIT LONG (-10*1000*$$SLEEP_RLK,-1);
	
	LOCAL 
	    COUNTER, STATUS;

	COUNTER = $$RETRY_LIMIT;
	WHILE ((STATUS = SERVICE (RAB = R
				  %IF NOT %NULL(E) %THEN , ERR = E %FI
				  %IF NOT %NULL(S) %THEN , SUC = S %FI)
				 ) EQL RMS$_RLK) AND ((COUNTER = .COUNTER - 1) GEQ 0) DO
	    IF $SCHDWK (DAYTIM = $$WAKEDELTA) THEN $HIBER;
	.STATUS
	END %;

! The following four keyword macros mimic the real RMS macro definitions.  Each
! of these macros performs the normal RMS operation while providing for
! automatic retry on record-locked errors.  Each operation will be retried ten
! times with a retry interval of 500 ms.
! 
KEYWORDMACRO
    $GET_WITH_RETRY (RAB, ERR, SUC) =
	$$RETRY (%QUOTE %QUOTE $GET, RAB, ERR, SUC) %,

    $PUT_WITH_RETRY (RAB, ERR, SUC) =
	$$RETRY (%QUOTE %QUOTE $PUT, RAB, ERR, SUC) %,

    $UPDATE_WITH_RETRY (RAB, ERR, SUC) =
	$$RETRY (%QUOTE %QUOTE $UPDATE, RAB, ERR, SUC) %,

    $DELETE_WITH_RETRY (RAB, ERR, SUC) =
	$$RETRY (%QUOTE %QUOTE $DELETE, RAB, ERR, SUC) %;

!+
!
! Macro to copy a quadword using two MOVLs.
!
! Usage:
!
!   $MOVE_QUAD (SOURCE, DEST);
!
!-
MACRO
    $MOVE_QUAD (SRC, DST) =
	BEGIN
	(DST)+0 = .(SRC)<0, 32>;
	(DST)+4 = .(SRC)<32,32>;
	END %;

!+
!
! Macro to output a formatted string.
!
! Usage:
!
!   $SAY ('This is a simple string...');
!   $SAY ('This is a !AS string with a unsigned longword (!XL) in it...', %ascid'formatted', 42);
!
!-
MACRO
    $SAY (STRING) =
    BEGIN
    EXTERNAL ROUTINE LIB$PUT_OUTPUT, SYS$FAO;
    LOCAL OUT_BUF : BLOCK[132,BYTE], OUT : VECTOR[2] INITIAL(%ALLOCATION(OUT_BUF), OUT_BUF);
    SYS$FAO(%ASCID STRING, OUT, OUT, %REMAINING);
    LIB$PUT_OUTPUT(OUT);
    END %;

!+
!
! Macro to take an XDELTA breakpoint, if XDELTA is loaded.
!
! Usage:
!
!   $XDELTA;
!
!-
MACRO
    $XDELTA = 
    BEGIN
    LINKAGE L_INI$BRK = JSB (STANDARD);
    EXTERNAL ROUTINE INI$BRK : L_INI$BRK;
    INI$BRK();
    END %;
!
! Macros to lock/unlock SMP SPINLOCKS
!
! Version:	'X-16'
!
!****************************************************************************
!*									    *
!*  COPYRIGHT (c) 1986, 1987, 1988 BY					    *
!*  DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS.		    *
!*  ALL RIGHTS RESERVED.						    *
!* 									    *
!*  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:	System Library
!
! ABSTRACT:
!
!	These macros are used to generate SMP locking code.
!
! ENVIRONMENT:
!
!	Native mode VAX processor; no operating system facilities are used.
!
!--
!
!
! AUTHOR:  Rod Gamache,		 CREATION DATE:  13-Jan-1986
!
! MODIFIED BY:
!
!	X-15,16	EMB		Ellen M. Batbouta	19-Jul-1989
!		Try again to fix $SYS_LOCK.
!
!	X-14	EMB0419		Ellen M. Batbouta	17-Jul-1989
!		Fix several of the SMP macros.  In the $FORKUNLOCK and
!		$FORKLOCK macros, FKB$B_FLCK was misspelled.  In the 
!		$SYS_UNLOCK macro, the mutex count in the per-CPU database 
!		was being incremented instead of decremented when releasing 
!		the mutex with read access.  In the $SYS_LOCK macro, an extra 
!		SETIPL is being done on the SMP enabled path.
!		
!
!	X-13	EMB0381		Ellen M. Batbouta	09-Jan-1989
!		Remove extra SETIPL from KEYWORDMACRO $SYS_LOCK.
!
!	X-12	JDC0408		Jon Callas		13-SEP-1988
!		Change references to BUG_CHECK. Not only is there no BUG_CHECK, 
!		but it really should be $BUG_CHECK. A $BUG_CHECK has been
!		added to LIB via VMS-MACROS.REQ with this.
!
!	X-11	RNG5011		Rod N. Gamache		21-Dec-1987
!		Fix BLISS macros to use $FIND_CPU_DATA call.
!		Fix $FORKUNLOCK to check if FIPL or FLCK.
!
!	X-10	RNG5010		Rod N. Gamache		11-Sep-1987
!		Add separate non-keyword macros for SYS_LOCK, SYS_UNLOCK,
!		FORKLOCK and FORKUNLOCK.
!
!	X-9	BAS5009		Barry A Scott		4-Sep-1987
!		Completely re-write most of the BLISS macros.
!
!	X-8	RNG5008		Rod N. Gamache		12-Aug-1987
!		Change refs from SMP$C_xxx to SPL$C_xxx.
!
!	X-7	WCT0047		Ward C. Travis		19-Mar-1987
!		Create  macros  for  Bliss   system  page  lockdown
!		requests.
!
!	X-6	WCT0023		Ward C. Travis		27-Jan-1987
!		Merge  in  changes   by  RNG  to   activate  SAVIPL
!		parameter in SYS_LOCK macros.
!
!	X-5	WCT0021		Ward C. Travis		21-Jan-1987
!		Changes made in  WCT0015 updated.  LOCK  and UNLOCK
!		now have the names SYS_LOCK and SYS_UNLOCK.
!
!	X-4	WCT0015		Ward C. Travis		14-Jan-1987
!		Bugfix to X-3;  renaming  SMPLOCK to  LOCK caused a
!		name conflict with the first parameter to FORKLOCK.
!
!	X-3	WCT0015		Ward C. Travis		 7-Jan-1987
!		Update outdated  SMPLOCK, SMPUNLOCK  definitions to
!		LOCK, UNLOCK for SMP.
!
!**


!
! The KEYWORD SMP MACROS:
!

KEYWORDMACRO
	$DSBINT( NEWIPL, DST, ENVIRON=MULTIPROCESSOR ) =
		BEGIN
		BUILTIN
			MFPR, MTPR;
		%IF NOT %NULL( DST )
		%THEN
			MFPR( PR$_IPL, DST );
		%ELSE
			%ERROR('DST parameter is mandatory')
		%FI
		%IF NOT %NULL( NEWIPL )
		%THEN
			MTPR( %REF( NEWIPL ), PR$_IPL );
			%IF NOT %IDENTICAL( %STRING( ENVIRON ), %STRING( UNIPROCESSOR ) )
			%THEN
				%IF NOT %CTCE( NEWIPL ) OR (%CTCE( NEWIPL ) AND NEWIPL GTR IPL$_ASTDEL)
				%THEN
					%WARN('Raising IPL to ',NEWIPL,' provides no multiprocessing synchronization')
				%FI
			%FI
		%ELSE
			MTPR( %REF( IPL$_POWER ), PR$_IPL );
			%IF NOT %IDENTICAL( %STRING( ENVIRON ), %STRING( UNIPROCESSOR ) )
			%THEN
				%WARN('Raising IPL to ',NEWIPL,' provides no multiprocessing synchronization')
			%FI
		%FI
		END
	%;

KEYWORDMACRO
	$ENBINT( SRC ) =
		BEGIN
		BUILTIN
			MTPR;
		%IF %NULL( SRC )
		%THEN
			%ERROR('SRC parameter is mandatory')
		%ELSE
			MTPR( %REF( SRC ), PR$_IPL );
		%FI
		END
	%;

KEYWORDMACRO
	$GET_CURPCB =
		BEGIN
		LOCAL
			$$OLDIPL,
			$$TEMP	: REF BLOCK[,BYTE];

		$DSBINT( DST = $$OLDIPL, ENVIRON = UNIPROCESSOR );
		$$TEMP = $FIND_CPU_DATA();
		$$TEMP = .$$TEMP[ CPU$L_CURPCB ];
		$ENBINT( SRC = .$$OLDIPL );
		.$$TEMP
		END
	%;

KEYWORDMACRO
	$SYS_LOCK( LOCKNAME, LOCKIPL, SAVIPL, CONDITION, MUTEX, SHARE ) =
	BEGIN
	BUILTIN
		MTPR,
		MFPR,
		TESTBITCCI,
		TESTBITSSI;
	EXTERNAL
		SGN$GL_SMP_SPINWAIT	: ADDRESSING_MODE( GENERAL ),
		EXE$GL_TENUSEC		: ADDRESSING_MODE( GENERAL ),
		EXE$GL_UBDELAY		: ADDRESSING_MODE( GENERAL ),
		SMP$GL_FLAGS		: BLOCK[4,BYTE] ADDRESSING_MODE( GENERAL );
	LINKAGE
		SMP_ROUTINE = JSB ( REGISTER = 0 ) : NOTUSED (1,2,3,4,5,6,7,8,9,10,11);
	EXTERNAL ROUTINE
		SMP$TIMEOUT		: SMP_ROUTINE ADDRESSING_MODE( GENERAL ),
		SMP$ACQUIRE		: SMP_ROUTINE ADDRESSING_MODE( GENERAL );
	LOCAL
		$$SAVED_IPL,
		$$TEMP,
		$$CPU_DATA	: REF BLOCK[,BYTE];
	%IF NOT %NULL( MUTEX )
	%THEN
		EXTERNAL
			MUTEX	: ADDRESSING_MODE( GENERAL ) BLOCK[4,BYTE];
	%IF %IDENTICAL( %STRING( SHARE ), %STRING( YES ) )
	%THEN
		$DSBINT( DST=$$SAVED_IPL, ENVIRON=UNIPROCESSOR );
		$$CPU_DATA = $FIND_CPU_DATA();
		DO
			BEGIN
			LABEL
				WAIT_LOOP;
WAIT_LOOP:		BEGIN
			WHILE 1
			DO
				BEGIN
				DECR TEMP
				FROM .SGN$GL_SMP_SPINWAIT * .EXE$GL_TENUSEC * .EXE$GL_UBDELAY
				TO 0
				DO
					BEGIN
					IF NOT .MUTEX[ MTX$V_INTERLOCK ]
					THEN
						LEAVE WAIT_LOOP;
					IF .$$CPU_DATA[ CPU$V_BUGCHK ]
					THEN
						$BUG_CHECK( CPUEXIT,FATAL );
					END;
				SMP$TIMEOUT();
				END
			END
			END
		WHILE
			TESTBITSSI( MUTEX[ MTX$V_INTERLOCK ] );

		$$CPU_DATA[ CPU$B_CPUMTX ] = .$$CPU_DATA[ CPU$B_CPUMTX ] + 1;
		MUTEX[ MTX$W_WRT ] = .MUTEX[ MTX$W_WRT ] + 1;
		TESTBITCCI( MUXTEX[ MTX$V_INTERLOCK ] );
		$ENBINT( SRC = $$SAVED_IPL );

	%ELSE
		$DSBINT( DST = $$SAVED_IPL, ENVIRON=UNIPROCESSOR )
		$$CPU_DATA = $FIND_CPU_DATA();
		WHILE 1
		DO
			BEGIN
				DO
					BEGIN
					LABEL
						WAIT_LOOP;
WAIT_LOOP:				BEGIN
					WHILE 1
					DO
						BEGIN
						DECR TEMP
						FROM .SGN$GL_SMP_SPINWAIT * .EXE$GL_TENUSEC * .EXE$GL_UBDELAY
						TO 0
						DO
							BEGIN
							IF .MUTEX[ MTX$W_WRT ] EQL -1	! CMPW
							THEN
								LEAVE WAIT_LOOP;
							IF .$$CPU_DATA[ CPU$V_BUGCHK ]
							THEN
								$BUG_CHECK( CPUEXIT,FATAL );
							END;
						SMP$TIMEOUT();
						END
					END
					END
				WHILE
					TESTBITSSI( MUTEX[ MTX$V_INTERLOCK ] );
			IF .MUTEX[ MTX$W_WRT ] EQL -1
			THEN
				EXITLOOP;
			TESTBITCCI( MUTEX[ MTX$V_INTERLOCK ] );
			END;
	%FI
	%FI
	%IF NOT %NULL( LOCKNAME )
	%THEN
		%IF NOT %NULL( SAVIPL )
		%THEN
			MFPR( PR$_IPL, SAVIPL );
		%FI
	IF .SMP$GL_FLAGS[ SMP$V_ENABLED ]
	THEN
		SMP$ACQUIRE( %NAME( SPL$C_, LOCKNAME ) );

	%IF  NOT %IDENTICAL( %STRING( CONDITION ), %STRING( NOSETIPL ) )
	%THEN
		IF NOT .SMP$GL_FLAGS[ SMP$V_ENABLED ]
		THEN
			$SETIPL( NEWIPL = %NAME( IPL$_, LOCKNAME ), ENVIRON=UNIPROCESSOR );
	%FI
	%FI
	END
	%;


KEYWORDMACRO
	$SYS_UNLOCK( LOCKNAME, NEWIPL, CONDITION, MUTEX, SHARE ) =
	BEGIN
	BUILTIN
		MTPR,
		TESTBITCCI,
		TESTBITSSI;
	EXTERNAL
		SGN$GL_SMP_SPINWAIT	: ADDRESSING_MODE( GENERAL ),
		EXE$GL_TENUSEC		: ADDRESSING_MODE( GENERAL ),
		EXE$GL_UBDELAY		: ADDRESSING_MODE( GENERAL ),
		SMP$GL_FLAGS		: ADDRESSING_MODE( GENERAL ) BLOCK [ 4, BYTE ];
	LINKAGE
		SMP_ROUTINE = JSB ( REGISTER = 0 ) : NOTUSED (1,2,3,4,5,6,7,8,9,10,11);
	EXTERNAL ROUTINE
		SMP$TIMEOUT		: SMP_ROUTINE ADDRESSING_MODE( GENERAL ),
		SMP$RELEASE		: SMP_ROUTINE ADDRESSING_MODE( GENERAL ),
		SMP$RESTORE		: SMP_ROUTINE ADDRESSING_MODE( GENERAL );
	LOCAL
		$$SAVED_IPL,
		$$TEMP,
		$$CPU_DATA	: REF BLOCK[,BYTE];
	%IF NOT %NULL( MUTEX )
	%THEN
	%IF %IDENTICAL( %STRING( SHARE ),%STRING( YES ) )
	%THEN
		$DSBINT( DST=$$SAVED_IPL, ENVIRON=UNIPROCESSOR );
		$$CPU_DATA = $FIND_CPU_DATA();
		DO
			BEGIN
			LABEL
				WAIT_LOOP;
WAIT_LOOP:		BEGIN
			WHILE 1
			DO
				BEGIN
				DECR TEMP
				FROM .SGN$GL_SMP_SPINWAIT * .EXE$GL_TENUSEC * .EXE$GL_UBDELAY
				TO 0
				DO
					BEGIN
					IF NOT .MUTEX[ MTX$V_INTERLOCK ]
					THEN
						LEAVE WAIT_LOOP;
					IF .$$CPU_DATA[ CPU$V_BUGCHK ]
					THEN
						$BUG_CHECK( CPUEXIT,FATAL );
					END;
				SMP$TIMEOUT();
				END
			END
		WHILE
			TESTBITSSI( MUTEX[ MTX$V_INTERLOCK ] );

		$$CPU_DATA[ CPU$B_CPUMTX ] = .$$CPU_DATA[ CPU$B_CPUMTX ] - 1;
		MUTEX[ MTX$W_WRT ] = .MUTEX[ MTX$W_WRT ] - 1;
		TESTBITCCI( MUTEX[ MTX$V_INTERLOCK ] );
		$ENBINT( SRC = $$SAVED_IPL );
	%ELSE
		TESTBITCCI( MUTEX[ MTX$V_INTERLOCK ] );
		! tHE FOLLOWING LINE IS WHAT "INVALID( ENVIRON=LOCAL )" WOULD EXPAND TO
		MTPR( %REF( 0 ), PR$_TBIA );

		$ENBINT( DST=$$SAVED_IPL );
	%FI
	%FI
	%IF NOT %NULL( LOCKNAME )
	%THEN
	IF .SMP$GL_FLAGS[ SMP$V_ENABLED ]
	THEN
		BEGIN
		%IF NOT %NULL( CONDITION )
		%THEN
			%IF %IDENTICAL( %STRING( CONDITION ), %STRING( RESTORE ) )
			%THEN
				SMP$RESTORE( %NAME( SPL$C_, LOCKNAME ) );
			%ELSE
				%ERROR( 'Bad argument value - condition' )
			%FI
		%ELSE
			SMP$RELEASE( %NAME( SPL$C_, LOCKNAME ) );
		%FI
		END;
	%FI
	%IF NOT %NULL( NEWIPL )
	%THEN
		MTPR( %REF( NEWIPL ), PR$_IPL );
	%FI
	END
	%;

KEYWORDMACRO
	$FIND_CPU_DATA( AMOD=GENERAL, ISTACK=NO ) =
		BEGIN
		BUILTIN
			MFPR,
			SP;
		EXTERNAL
			SMP$GL_BASE_MSK	: ADDRESSING_MODE( AMOD );
		%IF %IDENTICAL( %STRING( ISTACK ), %STRING( YES ) )
		%THEN
			.SP AND NOT .SMP$GL_BASE_MSK
		%ELSE
			LOCAL
				TEMP;
			MFPR( PR$_ISP, TEMP );
			.TEMP AND NOT .SMP$GL_BASE_MSK
		%FI
		END
	%;


KEYWORDMACRO
	!
	! LOCK FORK SPINLOCK
	!
	$FORKLOCK
	(
	LOCK = .UCB[ FKB$B_FLCK], 
	LOCKIPL, 
	SAVIPL, 
	PRESERVE = YES,
	FIPL = NO
	)
		=
	BEGIN
	!
	! LINKAGES:
	!
	LINKAGE
		SMP_ROUTINE = JSB ( REGISTER = 0 ) : NOTUSED (1,2,3,4,5,6,7,8,9,10,11);
	EXTERNAL ROUTINE
		SMP$ACQUIRE	: SMP_ROUTINE NOVALUE ADDRESSING_MODE (GENERAL);
	EXTERNAL
		SMP$GL_FLAGS	: ADDRESSING_MODE( GENERAL ) BLOCK [ 4, BYTE ],
		SMP$AL_IPLVEC	: ADDRESSING_MODE( GENERAL ) VECTOR [ , LONG ];
	BUILTIN
		MFPR;

	%IF NOT %NULL( SAVIPL )
	%THEN
		MFPR( PR$_IPL, SAVIPL );
	%FI
	IF ((LOCK) AND %X'20') EQL 0
	THEN
		$SETIPL( NEWIPL = LOCK, ENVIRON=UNIPROCESSOR )
	ELSE
		IF .SMP$GL_FLAGS[ SMP$V_ENABLED ] 
		THEN
			SMP$ACQUIRE( LOCK )
		ELSE
			$SETIPL ( NEWIPL = .SMP$AL_IPLVEC[ LOCK ], ENVIRON = UNIPROCESSOR );
	END
	% ;

!
! UNLOCK FORK SPINLOCK
!
KEYWORDMACRO
	$FORKUNLOCK
	(
	LOCK = .UCB[ FKB$B_FLCK], 
	NEWIPL, 
	CONDITION, 
	PRESERVE = YES
	)
		=
	BEGIN
	!
	! LINKAGES:
	!
	LINKAGE
		SMP_ROUTINE = JSB ( REGISTER = 0 ) : NOTUSED (1,2,3,4,5,6,7,8,9,10,11);
	EXTERNAL ROUTINE
		SMP$RESTORE : SMP_ROUTINE NOVALUE ADDRESSING_MODE (GENERAL),
		SMP$RELEASE : SMP_ROUTINE NOVALUE ADDRESSING_MODE (GENERAL);
	EXTERNAL
		SMP$GL_FLAGS	 : BLOCK [ 4, BYTE ] ADDRESSING_MODE( GENERAL );
	BUILTIN
		MTPR;

	IF .SMP$GL_FLAGS[ SMP$V_ENABLED ] 
	THEN
	%IF %IDENTICAL ( %STRING( CONDITION ), %STRING( RESTORE ) )
	%THEN
		IF ((LOCK) AND %X'20') NEQ 0
		THEN
			SMP$RESTORE ( LOCK );
	%ELSE
		IF ((LOCK) AND %X'20') NEQ 0
		THEN
			SMP$RELEASE ( LOCK );
	%FI	
	%IF NOT %NULL( NEWIPL )
	%THEN
		MTPR( %REF( NEWIPL ), PR$_IPL );
	%FI
	END
	% ;


KEYWORDMACRO
	$DEVICELOCK
	(
	LOCKADDR = .UCB[ UCB$L_DLCK ], 
	LOCKIPL, 
	SAVIPL, 
	CONDITION, 
	PRESERVE = YES
	)
		=
	BEGIN
	!
	! LINKAGES:
	!
	LINKAGE
		SMP_ROUTINE = JSB ( REGISTER = 0 ) : NOTUSED (1,2,3,4,5,6,7,8,9,10,11);
	EXTERNAL ROUTINE
		SMP$ACQUIREL	: SMP_ROUTINE NOVALUE ADDRESSING_MODE (GENERAL),
		SMP$ACQNOIPL	: SMP_ROUTINE NOVALUE ADDRESSING_MODE (GENERAL);
	EXTERNAL
		SMP$GL_FLAGS	: ADDRESSING_MODE( GENERAL ) BLOCK [ 4, BYTE ];
	LOCAL
		$$$SPINLOCK	: REF BLOCK [, BYTE ];
	BUILTIN
		MFPR;

	$$$SPINLOCK = LOCKADDR;

	%IF NOT %NULL( SAVIPL )
	%THEN
		MFPR( PR$_IPL, SAVIPL );
	%FI

	%IF NOT %NULL( LOCKIPL )
	%THEN
		IF .SMP$GL_FLAGS[ SMP$V_ENABLED ] 
		THEN
		%IF %IDENTICAL (%STRING( CONDITION ), %STRING( NOSETIPL ))
		%THEN
			SMP$ACQNOIPL( .$$$SPINLOCK );
		%ELSE
			SMP$ACQUIREL( .$$$SPINLOCK );
		%FI
		%IF NOT %IDENTICAL( %STRING( CONDITION ), %STRING( NOSETIPL ) )
		%THEN
			$SETIPL( NEWIPL = LOCKIPL, ENVIRON = UNIPROCESSOR );
		%FI
	%ELSE
		IF .SMP$GL_FLAGS[ SMP$V_ENABLED ] 
		THEN
		%IF %IDENTICAL( %STRING( CONDITION ), %STRING( NOSETIPL ) )
		%THEN
			SMP$ACQNOIPL( .$$$SPINLOCK );
		%ELSE
			SMP$ACQUIREL( .$$$SPINLOCK );
		%FI
		%IF NOT %IDENTICAL( %STRING( CONDITION ), %STRING( NOSETIPL ) )
		%THEN
			$SETIPL(  NEWIPL = .$$$SPINLOCK[ SPL$B_IPL ], ENVIRON = UNIPROCESSOR );
		%FI
	%FI

	END
	%;

!
! UNLOCK DEVICE SPINLOCK
!
KEYWORDMACRO
	$DEVICEUNLOCK
	(
	LOCKADDR = .UCB[ UCB$L_DLCK ],
	NEWIPL, 
	CONDITION, 
	PRESERVE = YES
	)
		=
	BEGIN
	!
	! LINKAGES:
	!
	LINKAGE
		SMP_ROUTINE = JSB(  REGISTER = 0 ) : NOTUSED( 1,2,3,4,5,6,7,8,9,10,11);
	EXTERNAL ROUTINE
		SMP$RESTOREL	: SMP_ROUTINE NOVALUE ADDRESSING_MODE( GENERAL),
		SMP$RELEASEL	: SMP_ROUTINE NOVALUE ADDRESSING_MODE( GENERAL);
	EXTERNAL
		SMP$GL_FLAGS	: BLOCK[ 4, BYTE ] ADDRESSING_MODE( GENERAL );
	BUILTIN
		MTPR;

	IF .SMP$GL_FLAGS[ SMP$V_ENABLED ] 
	THEN
	%IF %IDENTICAL(  %STRING( CONDITION ), %STRING( RESTORE ) )
	%THEN
		SMP$RESTOREL( LOCKADDR );
	%ELSE
		SMP$RELEASEL( LOCKADDR );
	%FI	
	%IF NOT %NULL( NEWIPL )
	%THEN
		MTPR( %REF( NEWIPL ), PR$_IPL );
	%FI
	END
	%;

KEYWORDMACRO
	$READ_SYSTIME( DST ) =
	BEGIN
	LOCAL
		$$SAVE_IPL;
	EXTERNAL
		EXE$GQ_SYSTIME	: ADDRESSING_MODE( GENERAL ) VECTOR[ 2, LONG ] VOLATILE;

	$SYS_LOCK( LOCKNAME=HWCLK, SAVIPL=$$SAVE_IPL );
	
	(DST)<0,32,0> = .EXE$GQ_SYSTIME[0];
	(DST)<32,32,0> = .EXE$GQ_SYSTIME[1];

	$SYS_UNLOCK( LOCKNAME=HWCLK, NEWIPL=.$$SAVE_IPL );
	END
	%;

KEYWORDMACRO
	$SETIPL( NEWIPL, ENVIRON=MULTIPROCESSOR ) =
		BEGIN
		BUILTIN
			MTPR;
		%IF NOT %NULL( NEWIPL )
		%THEN
			MTPR( %REF( NEWIPL ), PR$_IPL );
			%IF NOT %IDENTICAL( %STRING( ENVIRON ), %STRING( UNIPROCESSOR ) )
			%THEN
				%IF NOT %CTCE( NEWIPL ) OR (%CTCE( NEWIPL ) AND NEWIPL GTR IPL$_ASTDEL)
				%THEN
					%WARN('Raising IPL to ',NEWIPL,' provides no multiprocessing synchronization')
				%FI
			%FI
		%ELSE
			MTPR( %REF( IPL$_POWER ), PR$_IPL );
			%IF NOT %IDENTICAL( %STRING( ENVIRON ), %STRING( UNIPROCESSOR ) )
			%THEN
				%WARN( 'Raising ipl to newipl provides no multiprocessing synchronization' )
			%FI
		%FI
		END
	%;

KEYWORDMACRO
    $LOCK_SYSTEM_PAGES ( LSP_START, LSP_END, NEWIPL ) =
        BEGIN

	LINKAGE
	    MMG_LOCK_SYSTEM_PAGES_CALL = JSB (REGISTER = 0, REGISTER = 1) :
					      NOTUSED (2,3,4,5,6,7,8,9,10,11);
			    
        EXTERNAL ROUTINE
	    MMG$LOCK_SYSTEM_PAGES_CALL	: MMG_LOCK_SYSTEM_PAGES_CALL
				    	  ADDRESSING_MODE (GENERAL)
				  	  NOVALUE;
	BUILTIN
	    MTPR;
	
	MMG$LOCK_SYSTEM_PAGES_CALL (LSP_START, LSP_END);

	%IF NOT %NULL (NEWIPL)
	%THEN
	    MTPR (%REF(NEWIPL), PR$_IPL);
	%FI
    END %;

KEYWORDMACRO
    $UNLOCK_SYSTEM_PAGES ( LSP_START, LSP_END, NEWIPL ) =
	BEGIN
	
	LINKAGE
	    MMG_UNLOCK_SYSTEM_PAGES_CALL = JSB (REGISTER = 0, REGISTER = 1) :
						NOTUSED (2,3,4,5,6,7,8,9,10,11);

        EXTERNAL ROUTINE
	    MMG$UNLOCK_SYSTEM_PAGES_CALL: MMG_UNLOCK_SYSTEM_PAGES_CALL
					  ADDRESSING_MODE (GENERAL)
					  NOVALUE;
	BUILTIN
	    MTPR;

	MMG$UNLOCK_SYSTEM_PAGES_CALL (LSP_START, LSP_END);
	
	%IF NOT %NULL (NEWIPL)
	%THEN
	    MTPR (%REF(NEWIPL), PR$_IPL);
	%FI
    END %;

!
! The simple SMP MACROS:
!

MACRO
    !
    ! Lock SYSTEM SPINLOCK
    !
    SYS_LOCK (LOCKNAME, LOCKIPL, SAVIPL, CONDITION) =
	BEGIN
	!
	! LINKAGES:
	!
	LINKAGE
	    SMP_ACQUIRE = JSB ( REGISTER = 0 ) :
			NOTUSED (1,2,3,4,5,6,7,8,9,10,11)
	    ;

	EXTERNAL ROUTINE
	    SMP$ACQUIRE : SMP_ACQUIRE NOVALUE ADDRESSING_MODE (GENERAL)
	    ;

	BUILTIN
	    MFPR
	;

	%IF NOT %NULL(SAVIPL)
	%THEN
	    MFPR (PR$_IPL, %REF(SAVIPL))
	%FI

	SMP$ACQUIRE (%NAME('SPL$C_', LOCKNAME))
	END % ;

MACRO
    !
    ! Unlock SYSTEM SPINLOCK
    !
    SYS_UNLOCK (LOCKNAME, NEWIPL, CONDITION) =
	BEGIN
	!
	! LINKAGES:
	!

	LINKAGE
	    SMP_RESTORE = JSB ( REGISTER = 0 ) :
			NOTUSED (1,2,3,4,5,6,7,8,9,10,11),
	    SMP_RELEASE = JSB ( REGISTER = 0 ) :
			NOTUSED (1,2,3,4,5,6,7,8,9,10,11)
	    ;

	EXTERNAL ROUTINE
	    SMP$RESTORE : SMP_RESTORE NOVALUE ADDRESSING_MODE (GENERAL),
	    SMP$RELEASE : SMP_RELEASE NOVALUE ADDRESSING_MODE (GENERAL)
	    ;

	BUILTIN
	    MTPR
	    ;

	%IF %IDENTICAL (CONDITION,'RESTORE')
	%THEN
	    SMP$RESTORE (%NAME('SPL$C_', LOCKNAME));
	%ELSE
	    SMP$RELEASE (%NAME('SPL$C_', LOCKNAME));
	%FI

	%IF NOT %NULL(NEWIPL)
	%THEN
	    MTPR (%REF(NEWIPL), PR$_IPL)
	%FI

	END % ;

MACRO
    !
    ! Lock FORK SPINLOCK
    !
    FORKLOCK (LOCKID, LOCKIPL, SAVIPL, CONDITION) =
	BEGIN
	!
	! LINKAGES:
	!
	LINKAGE
	    SMP_ACQUIRE = JSB ( REGISTER = 0 ) :
			NOTUSED (1,2,3,4,5,6,7,8,9,10,11)
	    ;

	EXTERNAL ROUTINE
	    SMP$ACQUIRE : SMP_ACQUIRE NOVALUE ADDRESSING_MODE (GENERAL)
	    ;

	SMP$ACQUIRE (LOCKID)
	END % ;

MACRO
    !
    ! Unlock SYSTEM SPINLOCK
    !
    FORKUNLOCK (LOCKID, NEWIPL, CONDITION) =
	BEGIN
	!
	! LINKAGES:
	!

	LINKAGE
	    SMP_RESTORE = JSB ( REGISTER = 0 ) :
			NOTUSED (1,2,3,4,5,6,7,8,9,10,11),
	    SMP_RELEASE = JSB ( REGISTER = 0 ) :
			NOTUSED (1,2,3,4,5,6,7,8,9,10,11)
	    ;

	EXTERNAL ROUTINE
	    SMP$RESTORE : SMP_RESTORE NOVALUE ADDRESSING_MODE (GENERAL),
	    SMP$RELEASE : SMP_RELEASE NOVALUE ADDRESSING_MODE (GENERAL)
	    ;

	BUILTIN
	    MTPR
	    ;

	%IF %IDENTICAL (CONDITION,'RESTORE')
	%THEN
	    SMP$RESTORE (LOCKID);
	%ELSE
	    SMP$RELEASE (LOCKID);
	%FI

	%IF NOT %NULL(NEWIPL)
	%THEN
	    MTPR (%REF(NEWIPL), PR$_IPL)
	%FI

	END % ;

! 
! ****************************************************************************
! *                                                                          *
! *  Copyright (c) 1990                                                      *
! *  by DIGITAL Equipment Corporation, Maynard, Mass.                        *
! *                                                                          *
! *  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.                 *
! *                                                                          *
! ****************************************************************************
! ********************************************************************************************************************************
!  Created 26-JUN-1990 17:50:14 by VAX SDL T3.2-8      Source: 18-JUN-1990 21:33:53 _$254$DUA115:[SHRLIB]SYSDEF.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE $ACMDEF ***
! +
!  ACMDEF - ACCOUNTING MANAGER DEFINITIONS
! -
literal ACM$S_ACMDEF = 2;
macro ACM$V_PROCESS = 0,0,1,0 %;        !  PROCESS ACCOUNTING ENABLED 
macro ACM$V_IMAGE = 0,1,1,0 %;          !  IMAGE ACCOUNTING ENABLED 
macro ACM$V_INTERACTIVE = 0,2,1,0 %;    !  INTERACTIVE ACCOUNTING ENABLED 
macro ACM$V_LOGFAIL = 0,3,1,0 %;        !  LOGIN FAILURE ACCOUNTING ENABLED 
macro ACM$V_SUBPROCESS = 0,4,1,0 %;     !  SUBPROCESS ACCOUNTING ENABLED 
macro ACM$V_DETACHED = 0,5,1,0 %;       !  DETACHED PROCESS ACCOUNTING ENABLED 
macro ACM$V_BATCH = 0,6,1,0 %;          !  BATCH ACCOUNTING ENABLED 
macro ACM$V_NETWORK = 0,7,1,0 %;        !  NETWORK PROCESS ACCOUNTING ENABLED 
macro ACM$V_PRINT = 0,8,1,0 %;          !  PRINT JOB ACCOUNTING ENABLED 
macro ACM$V_USER_DATA = 0,9,1,0 %;      !  USER_DATA ACCOUNTING ENABLED 
macro ACM$V_ACM_FUNC = 0,10,1,0 %;      !  ACM FUNCTION ACCOUNTING ENABLED 
macro ACM$V_SYS_FUNC = 0,11,1,0 %;      !  SYSTEM FUNCTION ACCOUNTING ENABLED 
literal ACM$S_ACMDEF1 = 76;
macro ACM$W_MSGSTS = -8,0,16,0 %;       !  MSG STATUS IN MAILBOX IOSB (JOBCTL SPECIFIC) 
macro ACM$W_MSGLEN = -6,0,16,0 %;       !  MSG LENGTH IN MAILBOX IOSB (JOBCTL SPECIFIC) 
macro ACM$L_PROCID = -4,0,32,0 %;       !  PROCESS ID IN MAILBOX IOSB (JOBCTL SPECIFIC) 
macro ACM$W_TYPE = 0,0,16,0 %;          !  MESSAGE TYPE 
macro ACM$W_MAILBOX = 2,0,16,0 %;       !  MAILBOX UNIT NUMBER 
macro ACM$Q_PRVMSK = 4,0,0,0 %;
literal ACM$S_PRVMSK = 8;               !  PROCESS PRIVILEGE MASK 
macro ACM$L_UIC = 12,0,32,0 %;          !  PROCESS UIC
macro ACM$W_MEM = 12,0,16,0 %;          !  MEMBER UIC 
macro ACM$W_GRP = 14,0,16,0 %;          !  GROUP UIC 
macro ACM$L_ARB_ADDRESS = 4,0,32,0 %;   !  ADDRESS OF CLONED ARB
macro ACM$T_USERNAME = 16,0,0,0 %;
literal ACM$S_USERNAME = 12;            !  USERNAME 
macro ACM$T_ACCOUNT = 28,0,0,0 %;
literal ACM$S_ACCOUNT = 8;              !  ACCOUNT NAME 
macro ACM$B_PROCPRI = 36,0,8,0 %;       !  PROCESS BASE PRIORITY 
macro ACM$L_PID = 40,0,32,0 %;          !  PROCESS ID 
macro ACM$L_STS = 44,0,32,0 %;          !  PROCESS STATUS 
macro ACM$L_OWNER = 48,0,32,0 %;        !  OWNER PROCESS ID (0 => NONE) 
macro ACM$T_TERMINAL = 52,0,0,0 %;
literal ACM$S_TERMINAL = 8;             !  TERMINAL NAME (COUNTED ASCII STRING) 
macro ACM$Q_SYSTIME = 60,0,0,0 %;
literal ACM$S_SYSTIME = 8;              !  CURRENT SYSTEM TIME 
! 
!  SEND TO ACCOUNTING MANAGER FIELDS
! 
literal ACM$S_ACMDEF2 = 326;
macro ACM$W_USERREQ = 68,0,16,0 %;      !  USER REQUEST TYPE 
macro ACM$T_DATA = 70,0,0,0 %;
literal ACM$S_DATA = 256;               !  USER DATA 
! 
!  PROCESS/IMAGE DELETE/PURGE FIELDS
! 
literal ACM$K_PROCLEN = 128;            !  MIN. PROCESS/IMAGE TERMINATION MESSAGE LENGTH 
literal ACM$C_PROCLEN = 128;            !  MIN. PROCESS/IMAGE TERMINATION MESSAGE LENGTH 
literal ACM$S_ACMDEF3 = 128;
macro ACM$Q_LOGIN = 68,0,0,0 %;
literal ACM$S_LOGIN = 8;                !  PROCESS/IMAGE START TIME 
macro ACM$L_FINALSTS = 76,0,32,0 %;     !  PROCESS FINAL STATUS 
macro ACM$L_IMGCNT = 80,0,32,0 %;       !  IMAGE EXECUTION COUNT 
macro ACM$L_CPUTIME = 84,0,32,0 %;      !  CPU USAGE 
macro ACM$L_PAGEFLTS = 88,0,32,0 %;     !  PAGEFAULT COUNT 
macro ACM$L_PGFLTIO = 92,0,32,0 %;      !  PAGEFAULT I/O 
macro ACM$L_WSPEAK = 96,0,32,0 %;       !  WORKING SET PEAK 
macro ACM$L_PGFLPEAK = 100,0,32,0 %;    !  PAGE FILE PEAK 
macro ACM$L_DIOCNT = 104,0,32,0 %;      !  DIRECT I/O COUNT 
macro ACM$L_BIOCNT = 108,0,32,0 %;      !  BUFFERED I/O COUNT 
macro ACM$L_VOLUMES = 112,0,32,0 %;     !  VOLUME MOUNT COUNT 
macro ACM$L_VP_CPUTIME = 116,0,32,0 %;  !  VECTOR CPU TIME
macro ACM$W_NODEADDR = 120,0,16,0 %;    !  MESSAGE OFFSET TO REMOTE NODE ADDRESS 
macro ACM$W_NODENAME = 122,0,16,0 %;    !  MESSAGE OFFSET TO REMOTE NODE NAME 
macro ACM$W_REMOTEID = 124,0,16,0 %;    !  MESSAGE OFFSET TO REMOTE ID 
macro ACM$W_IMAGENAME = 126,0,16,0 %;   !  MESSAGE OFFSET TO IMAGE NAME 
 
!*** MODULE $ACBDEF ***
! +
!  AST CONTROL BLOCK DEFINITIONS
! 
!  AST CONTROL BLOCKS EXIST AS SEPARATE STRUCTURES AND AS SUBSTRUCTURES
!  WITHIN LARGER CONTROL BLOCKS SUCH AS I/O REQUEST PACKETS AND TIMER
!  QUEUE ENTRIES.
! 
! -
literal ACB$M_PKAST = 16;
literal ACB$M_NODELETE = 32;
literal ACB$M_QUOTA = 64;
literal ACB$M_KAST = 128;
literal ACB$K_LENGTH = 28;              !  Length of block. 
literal ACB$C_LENGTH = 28;              !  Length of block. 
literal ACB$S_ACBDEF = 28;
macro ACB$L_ASTQFL = 0,0,32,0 %;        ! AST QUEUE FORWARD LINK 
macro ACB$L_ASTQBL = 4,0,32,0 %;        ! AST QUEUE BACKWARD LINK 
macro ACB$W_SIZE = 8,0,16,0 %;          ! STRUCTURE SIZE IN BYTES 
macro ACB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE CODE 
macro ACB$B_RMOD = 11,0,8,0 %;          ! REQUEST ACCESS MODE 
macro ACB$V_MODE = 11,0,2,0 %;
literal ACB$S_MODE = 2;                 ! MODE FOR FINAL DELIVERY 
macro ACB$V_PKAST = 11,4,1,0 %;         ! PIGGY BACK SPECIAL KERNEL AST 
macro ACB$V_NODELETE = 11,5,1,0 %;      ! DON'T DELETE ACB ON DELIVERY 
macro ACB$V_QUOTA = 11,6,1,0 %;         ! ACCOUNT FOR QUOTA 
macro ACB$V_KAST = 11,7,1,0 %;          ! SPECIAL KERNEL AST 
macro ACB$L_PID = 12,0,32,0 %;          ! PROCESS ID OF REQUEST 
macro ACB$L_AST = 16,0,32,0 %;          ! AST ROUTINE ADDRESS 
macro ACB$L_ASTPRM = 20,0,32,0 %;       ! AST PARAMETER 
macro ACB$L_KAST = 24,0,32,0 %;         ! INTERNAL KERNEL MODE XFER ADDRESS 
 
!*** MODULE $ACFDEF ***
! 
!  CONFIGURATION CONTROL BLOCK OFFSET DEFINITIONS
! 
literal ACF$M_RELOAD = 1;
literal ACF$M_CRBBLT = 2;
literal ACF$M_SCBVEC = 4;
literal ACF$M_NOLOAD_DB = 8;
literal ACF$M_SUPPORT = 16;
literal ACF$M_GETDONE = 32;
literal ACF$M_BVP = 64;
literal ACF$K_LENGTH = 40;              ! LENGTH OF DEVICE DESCRIPTOR ARGUMENT LIST 
literal ACF$C_LENGTH = 40;              ! LENGTH OF DEVICE DESCRIPTOR ARGUMENT LIST 
literal ACF$S_ACFDEF = 40;
macro ACF$L_ADAPTER = 0,0,32,0 %;       ! ADDRESS OF ADAPTER CONTROL BLOCK 
macro ACF$L_CONFIGREG = 4,0,32,0 %;     ! ADDRESS OF CONFIGURATION STATUS REGISTER 
macro ACF$W_AVECTOR = 8,0,16,0 %;       ! OFFSET TO ADAPTER INTERRUPT VECTOR (SCB) 
macro ACF$B_AUNIT = 10,0,8,0 %;         ! ADAPTER UNIT NUMBER 
macro ACF$B_AFLAG = 11,0,8,0 %;         ! ADAPTER GENERATION CONTROL FLAGS 
macro ACF$V_RELOAD = 11,0,1,0 %;        !  RELOAD DRIVER 
macro ACF$V_CRBBLT = 11,1,1,0 %;        !  CRB AND IDB ARE BUILT 
macro ACF$V_SCBVEC = 11,2,1,0 %;        !  CVECTOR IS OFFSET INTO SCB 
macro ACF$V_NOLOAD_DB = 11,3,1,0 %;     !  DON'T LOAD DATABASE, ONLY LOAD DRIVER 
macro ACF$V_SUPPORT = 11,4,1,0 %;       !  DEVICE IS SUPPORTED 
macro ACF$V_GETDONE = 11,5,1,0 %;       !  GET OF IO DATABASE ALREADY DONE
macro ACF$V_BVP = 11,6,1,0 %;           !  MULTI-PORT BVP ADAPTER
macro ACF$L_CONTRLREG = 12,0,32,0 %;    ! ADDRESS OF CONTROL REGISTER 
macro ACF$W_CVECTOR = 16,0,16,0 %;      ! OFFSET TO CONTROLLER INTERRUPT VECTOR (TABLE) 
macro ACF$W_CUNIT = 18,0,16,0 %;        ! CONTROLLER UNIT NUMBER 
macro ACF$L_DEVNAME = 20,0,32,0 %;      ! ADDRESS OF DEVICE NAME COUNTED STRING 
macro ACF$L_DRVNAME = 24,0,32,0 %;      ! ADDRESS OF DRIVER NAME COUNTED STRING 
macro ACF$W_MAXUNITS = 28,0,16,0 %;     ! MAXIMUM UNITS THAT CAN BE CONNECTED 
macro ACF$B_CNUMVEC = 30,0,8,0 %;       ! NUMBER OF CONTROLLER VECTORS 
macro ACF$B_COMBO_VECTOR_OFFSET = 31,0,8,1 %; ! OFFSET TO START OF VECTORS FOR A COMBO STYLE DEVICE
macro ACF$B_COMBO_CSR_OFFSET = 32,0,8,1 %; ! OFFSET TO START OF CONTROL REGISTERS FOR A COMBO DEVICE
macro ACF$B_NUMUNIT = 33,0,8,0 %;       ! NUMBER OF UNITS TO CONFIGURE 
macro ACF$L_DLVR_SCRH = 36,0,32,0 %;    ! SCRATCH FOR DELIVER ROUTINES 
 
!*** MODULE $ADBDEF ***
! +
! 
!  Generalized Event Notification Definitions
! 
!  AST Data Block
! 
!  This is the fourth level structure of the event notification
!  database.  This block is used to store request specific
!  information in the event database.
! 
! -
literal ADB$M_LOCAL = 1;
literal ADB$M_RSVD = 62;
literal ADB$K_LENGTH = 68;              !  LENGTH OF BLOCK
literal ADB$C_LENGTH = 68;              !  LENGTH OF BLOCK
literal ADB$S_ADBDEF = 68;
macro ADB$L_QFL = 0,0,32,0 %;           !  QUEUE FORWARD LINK 
macro ADB$L_QBL = 4,0,32,0 %;           !  QUEUE BACKWARD LINK
macro ADB$W_SIZE = 8,0,16,0 %;          !  STRUCTURE SIZE IN BYTES
macro ADB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE
macro ADB$B_SUBTYPE = 11,0,8,0 %;       !  STRUCTURE SUBTYPE CODE
macro ADB$L_FLAGS = 12,0,32,0 %;        !  FLAGS
macro ADB$V_LOCAL = 12,0,1,0 %;         !   LOCAL NODE
!    FLOST, ULOST, WILDCARD
! ******* START OF ACB
macro ADB$L_ACB_QFL = 16,0,32,0 %;      !  FORWARD LINK
macro ADB$L_ACB_QBL = 20,0,32,0 %;      !  BACKWARD LINK
macro ADB$W_ACB_SIZE = 24,0,16,0 %;     !  STRUCTURE SIZE IN BYTES
macro ADB$B_ACB_TYPE = 26,0,8,0 %;      !  STRUCTURE TYPE CODE
macro ADB$B_ACB_RMOD = 27,0,8,0 %;      !  REQUEST ACCESS MODE
macro ADB$L_PID = 28,0,32,0 %;          !  PROCESS ID
macro ADB$L_EVTADR = 32,0,32,0 %;       !  EVENT AST ROUTINE ADDRESS
macro ADB$L_EVTPRM = 36,0,32,0 %;       !  EVENT AST PARAMETER
macro ADB$L_KAST = 40,0,32,0 %;         !  INTERNAL KERNEL MODE XFER ADDRESS 
! ******* END OF ACB
macro ADB$L_UNIQID = 44,0,32,0 %;       !  GENERATED ID
macro ADB$L_ADB_LINK = 48,0,32,0 %;     !  PROCESS SPECIFIC ADB LINK
macro ADB$L_IDENTIFIER = 52,0,32,0 %;   !  IDENTIFIER OF REQUESTOR PROCESS
macro ADB$L_NAB_LINK = 56,0,32,0 %;     !  LINK TO NAME BLOCK
macro ADB$W_INITIAL_CREDIT = 60,0,16,1 %; !  INITIAL CREDIT
macro ADB$W_RESERVE_CREDIT = 62,0,16,0 %; !  CREDIT HELD IN RESERVE
macro ADB$B_ACMODE = 64,0,8,0 %;        !  ACCESS MODE
macro ADB$W_EVTFAC = 65,0,16,0 %;       !  FACILITY CODE
 
!*** MODULE $ADPDEF ***
! +
!  ADAPTER CONTROL BLOCK DEFINITIONS
! 
!  THERE IS ONE ADP FOR EACH SYSTEM INTERCONNECT ADAPTER THAT IS
!  USED FOR ANY TYPE OF I/O.  FOR EXAMPLE: MASBUSS ADAPTER, UNIBUS
!  ADAPTER.  THERE IS NO ADAPTER CONTROL BLOCK FOR MAIN MEMORY ADAPTERS.
! -
literal ADP$M_MAPPED = 1;
literal ADP$M_SHUTDOWN = 2;
literal ADP$M_SELFTEST = 4;
literal ADP$M_PORTONLY = 8;
literal ADP$M_BVP_LOCK = 16;
literal ADP$M_POWER_FAIL = 1;
literal ADP$M_POWER_FAIL_RECOVERY = 2;
literal ADP$M_BI_USE = 1;
literal ADP$M_BLA = 2;
literal ADP$M_ADPDISP_INIT = 1;
literal ADP$M_ADAP_MAPPING = 2;
literal ADP$M_DIRECT_VECTOR = 4;
literal ADP$M_AUTOPURGE_DP = 8;
literal ADP$M_BUFFERED_DP = 16;
literal ADP$M_ODD_XFER_BDP = 32;
literal ADP$M_ODD_XFER_DDP = 64;
literal ADP$M_EXTENDED_MAPREG = 128;
literal ADP$M_QBUS = 256;
literal ADP$K_MBAADPLEN = 56;           ! LENGTH OF ADP FOR MASSBUS ADAPTER 
literal ADP$C_MBAADPLEN = 56;           ! LENGTH OF ADP FOR MASSBUS ADAPTER 
literal ADP$K_DRADPLEN = 56;            ! LENGTH OF ADP FOR DR32 
literal ADP$C_DRADPLEN = 56;            ! LENGTH OF ADP FOR DR32 
literal ADP$K_CIADPLEN = 56;            ! LENGTH OF ADP FOR CI 
literal ADP$C_CIADPLEN = 56;            ! LENGTH OF ADP FOR CI 
literal ADP$K_GBIADPLEN = 56;           ! LENGTH OF ADP FOR Generic BI device
literal ADP$C_GBIADPLEN = 56;           ! LENGTH OF ADP FOR Generic BI device
literal ADP$K_MBUSADPLEN = 56;          ! LENGTH OF ADP FOR MBUS
literal ADP$C_MBUSADPLEN = 56;          ! LENGTH OF ADP FOR MBUS
literal ADP$K_MINADPLEN = 56;           ! LENGTH OF SMALLEST AVAILABLE ADP
literal ADP$C_MINADPLEN = 56;           ! LENGTH OF SMALLEST AVAILABLE ADP
literal ADP$K_MPMADPLEN = 76;           ! LENGTH OF ADP FOR MULTI-PORT MEMORY 
literal ADP$C_MPMADPLEN = 76;           ! LENGTH OF ADP FOR MULTI-PORT MEMORY 
literal ADP$K_XBIADPLEN = 88;           ! LENGTH OF ADP FOR XBIA
literal ADP$C_XBIADPLEN = 88;           ! LENGTH OF ADP FOR XBIA
literal ADP$K_XJADPLEN = 100;           ! LENGTH OF ADP FOR XJA
literal ADP$C_XJADPLEN = 100;           ! LENGTH OF ADP FOR XJA
literal ADP$K_UBAADPLEN = 608;          ! LENGTH OF ADP FOR UNIBUS ADAPTER 
literal ADP$C_UBAADPLEN = 608;          ! LENGTH OF ADP FOR UNIBUS ADAPTER 
literal ADP$C_NUMDATAP = 16;            !  UBA - NUMBER OF DATAPATHS 
!  DATA STRUCTURES FOR SECOND SET OF MAP REGISTERS (497-8192)
literal ADP$K_QBAADPLEN = 1128;         !  LENGTH OF ADP FOR QBUS ADAPTER 
literal ADP$C_QBAADPLEN = 1128;         !  LENGTH OF ADP FOR QBUS ADAPTER 
literal ADP$C_BVPADPLEN = 156;          ! BVP ADP size with BVP extension
literal ADP$C_BVP_PAGES = 16;           ! BVP Pages mapped to the adapter registers
literal ADP$M_SGEC_SA = 1;
literal ADP$M_SGEC_SE = 2;
literal ADP$K_NIADPLEN = 64;
literal ADP$C_NIADPLEN = 64;
literal ADP$M_CIR_VALID = 1;
literal ADP$M_CIR_INITDEV = 2;
literal ADP$M_CIR_TRAENA = 4;
literal ADP$C_CIRADPLEN = 140;          !  CIRRUS ADP length
literal ADP520$K_MODEMPTY = 0;          !  Empty slot
literal ADP520$K_MODCIO = 1;            !  CIO (KFE52) module
literal ADP520$K_MODMEM = 3;            !  Memory module
literal ADP520$K_MODCOMM = 4;           !  DSF32 module
literal ADP520$K_MODCPU = 5;            !  CPU module
literal ADP520$K_MODUNK = 15;           !  Unknown module
literal ADP520$K_END = 6;               !  CPU module
literal ADP$S_ADPDEF = 1128;
macro ADP$L_CSR = 0,0,32,0 %;           ! ADAPTER CONFIGURATION STATUS REGISTER ADDRESS 
macro ADP$L_LINK = 4,0,32,0 %;          ! ADDRESS OF NEXT ADAPTER CONTROL BLOCK 
macro ADP$W_SIZE = 8,0,16,0 %;          ! STRUCTURE SIZE IN BYTES 
macro ADP$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE CODE 
macro ADP$B_NUMBER = 11,0,8,0 %;        ! ORDINAL ADAPTER NUMBER 
macro ADP$W_TR = 12,0,16,0 %;           ! CONFIGURATION TR NUMBER 
macro ADP$W_ADPTYPE = 14,0,16,0 %;      ! SOFTWARE ADAPTER TYPE 
macro ADP$L_VECTOR = 16,0,32,0 %;       ! UBA - ADDRESS OF VECTOR JUMP TABLE 
macro ADP$L_CRB = 16,0,32,0 %;          ! MBA OR DR32 - ADDRESS OF ADAPTER'S CRB 
macro ADP$L_DPQFL = 20,0,32,0 %;        ! UBA - DATAPATH WAIT QUEUE FORWARD LINK 
macro ADP$L_PRQQFL = 20,0,32,0 %;       ! MPM - INTER-PROCESSOR REQUEST WAIT QUEUE FLINK 
macro ADP$L_MBASCB = 20,0,32,0 %;       ! MBA - SCB VECTOR VALUE FOR MBA NEXUS 
macro ADP$L_CIMAP = 20,0,32,0 %;        ! CI  - CI mapping status
macro ADP$L_VPORTSTS = 20,0,32,0 %;     ! BVP - Vax port status bits
macro ADP$V_MAPPED = 20,0,1,0 %;        ! BVP,CI - adapter is mapped
macro ADP$V_SHUTDOWN = 20,1,1,0 %;      ! BVP,CI - adapter microcode is stopped
macro ADP$V_SELFTEST = 20,2,1,0 %;      ! BVP - adapter self test is in progress
macro ADP$V_PORTONLY = 20,3,1,0 %;      ! BVP - port restart only -- no adapter restart
macro ADP$V_BVP_LOCK = 20,4,1,0 %;      ! BVP - multi-port lock bit
macro ADP$L_XJA_STATUS = 20,0,32,0 %;   ! XJA - Interrupt Handler Status bits
!  Note following bit definitions
!   apply to ADP$L_XJA_STATUS and to
!   ADP$L_BI_STATUS, which are really
!   equivalent.
macro ADP$V_POWER_FAIL = 20,0,1,0 %;    ! Set on at time of power failure
macro ADP$V_POWER_FAIL_RECOVERY = 20,1,1,0 %; ! Set on at time of power failure recovery
macro ADP$L_BI_STATUS = 20,0,32,0 %;    ! BI - Interrupt Handler Status bits
macro ADP$L_DPQBL = 24,0,32,0 %;        ! UBA - DATAPATH WAIT QUEUE BACKWARD LINK 
macro ADP$L_PRQQBL = 24,0,32,0 %;       ! MPM - INTER-PROCESSOR REQUEST WAIT QUEUE BLINK 
macro ADP$L_MBASPTE = 24,0,32,0 %;      ! MBA - SPTE VALUE WHICH MAPS MBA ADDRESS SPACE 
macro ADP$L_CISPTE = 24,0,32,0 %;       ! CI  - SPTE VALUE WHICH MAPS CI ADDRESS SPACE
macro ADP$L_AVECTOR = 28,0,32,0 %;      !  ADDR OF 1ST SCB VECTOR FOR THIS ADAPTOR
macro ADP$L_CRB_LINKS = 32,0,0,1 %;
literal ADP$S_CRB_LINKS = 16;
macro ADP$L_CRB_PTRS = 32,0,32,0 %;
macro ADP$L_SII_CRB = 32,0,32,1 %;      !  Link to SII CRB
macro ADP$L_LANCE_CRB = 36,0,32,1 %;    !  Link to LANCE CRB
macro ADP$L_DZ_CRB = 40,0,32,1 %;       !  Link to DZ CRB
macro ADP$L_SPARE_CRB = 44,0,32,1 %;    !  spare link
macro ADP$L_BI_ONLY = 32,0,0,0 %;
literal ADP$S_BI_ONLY = 16;             ! BI ADAPTER VOLATILE INFO
macro ADP$L_BI_IDR = 32,0,32,0 %;       ! BIIC INTERRUPT DESTINATION REGISTER
macro ADP$W_BI_FLAGS = 36,0,16,0 %;     ! FLAGS FIELD
macro ADP$V_BI_USE = 36,0,1,0 %;        ! VECTOR FIELD VALID IF THIS BIT IS SET
macro ADP$V_BLA = 36,1,1,0 %;           ! IF SET, ADAPTER IS BLA.
macro ADP$W_BI_VECTOR = 38,0,16,0 %;    ! STORE SCB VECTOR OFFSET
macro ADP$L_SCB_PAGE = 40,0,32,0 %;     ! STORE SCB PAGE OFFSET
! FOR BI.
macro ADP$L_BIMASTER = 44,0,32,0 %;     ! ADP address for BI
! master (ie. XBI)
macro ADP$W_ADPDISP_FLAGS = 48,0,16,0 %; !  Flags used by ADPDISP macro
macro ADP$V_ADPDISP_INIT = 48,0,1,0 %;  !  ADPDISP flags have been initialized
macro ADP$V_ADAP_MAPPING = 48,1,1,0 %;  !  Adapter mapping supported
macro ADP$V_DIRECT_VECTOR = 48,2,1,0 %; !  Direct vectored interrupts
macro ADP$V_AUTOPURGE_DP = 48,3,1,0 %;  !  Autopurging datapath
macro ADP$V_BUFFERED_DP = 48,4,1,0 %;   !  Buffered datapath supported
macro ADP$V_ODD_XFER_BDP = 48,5,1,0 %;  !  Odd xfers supported ob buffered DP
macro ADP$V_ODD_XFER_DDP = 48,6,1,0 %;  !  Odd xfers supported on direct DP
macro ADP$V_EXTENDED_MAPREG = 48,7,1,0 %; !  Extended # of map regs
macro ADP$V_QBUS = 48,8,1,0 %;          !  QBUS adapter
macro ADP$B_ADDR_BITS = 51,0,8,0 %;     !  Number of adapter addr bits
macro ADP$L_ADPDISP_RESERVED = 52,0,32,0 %; !  Reserved for future use
macro ADP$L_SHB = 56,0,32,0 %;          ! MPM - SHARED MEMORY CONTROL BLOCK ADDR 
macro ADP$L_XBIA_CSR = 56,0,32,0 %;     !  CSR for XBIA
macro ADP$L_XMI_NODE_SP = 56,0,32,0 %;  !  Address of XMI Node Space
macro ADP$B_PORT = 60,0,8,0 %;          ! MPM - PORT NUMBER 
macro ADP$W_XBIA_TR = 60,0,16,0 %;      !  XMI node id
macro ADP$B_REL_BI = 62,0,8,0 %;        !  Relative BI #, for multiple XMI systems
macro ADP$W_XMI_NODE_NO = 60,0,16,0 %;  !  XMI node id
macro ADP$L_INTD = 64,0,0,0 %;
literal ADP$S_INTD = 12;                ! MPM,UBA - INTERRUPT TRANSFER VECTOR 
macro ADP$L_INTD2 = 76,0,0,0 %;
literal ADP$S_INTD2 = 12;               !  XBI needs 2 INTDs
macro ADP$L_INTD3 = 88,0,0,0 %;
literal ADP$S_INTD3 = 12;               !  XJA needs 3 INTDs
macro ADP$L_MRQFL = 56,0,32,0 %;        ! UBA - MAP REGISTER WAIT QUEUE FORWARD LINK 
macro ADP$L_MRQBL = 60,0,32,0 %;        ! UBA - MAP REGISTER WAIT QUEUE BACKWARD LINK 
macro ADP$L_UBASCB = 76,0,0,0 %;
literal ADP$S_UBASCB = 16;              ! UBA - SCB VECTOR VALUE FOR 4 UBA VECTORS 
macro ADP$W_DIRVECPG = 86,0,16,0 %;     ! SCB PAGE NUMBER FOR UNIBUS DEVICES
macro ADP$L_UBASPTE = 92,0,0,0 %;
literal ADP$S_UBASPTE = 8;              !  UBA - SPTE VALUES FOR MAPPING UBA ADDRESSES 
macro ADP$L_MRACTMDRS = 100,0,32,0 %;   !  UBA - ! active map register descriptors 
macro ADP$W_DPBITMAP = 104,0,16,0 %;    !  UBA - Datapath Allocation Bitmap 
macro ADP$W_MRNFENCE = 106,0,16,0 %;    !  Fence preceeding array. Init'ed to -1 
macro ADP$W_MRNREGARY = 108,0,0,0 %;
literal ADP$S_MRNREGARY = 248;          !  ! map regs in an extent array 
macro ADP$W_MRFFENCE = 356,0,16,0 %;    !  Fence precedding array. Init'ed to -1 
macro ADP$W_MRFREGARY = 358,0,0,0 %;
literal ADP$S_MRFREGARY = 248;          !  1st reg in extent array. 
macro ADP$W_UMR_DIS = 606,0,16,0 %;     !  Num of Map Registers to disable 
!  NOTE** - UNIBUS ADP must be integral
!   number of longwords long so that 780
!   interrupt vectors are longword aligned.
!  These are uVAX2 QBUS registers not used by UNIBUS devices
macro ADP$L_MR2QFL = 608,0,32,0 %;      !  QBA - 2nd MAP REGISTER WAIT QUEUE FORWARD LINK 
macro ADP$L_MR2QBL = 612,0,32,0 %;      !  QBA - 2nd MAP REGISTER WAIT QUEUE BACKWARD LINK 
macro ADP$L_MR2ACTMDR = 616,0,32,0 %;   !  QBA - number of active map register descriptors
macro ADP$W_MR2NFENCE = 622,0,16,0 %;   !  Fence preceeding array. Init'ed to -1 
macro ADP$W_MR2NREGAR = 624,0,0,0 %;
literal ADP$S_MR2NREGAR = 248;          !  number of map regs in an extent array 
macro ADP$W_MR2FFENCE = 872,0,16,0 %;   !  Fence precedding array. Init'ed to -1 
macro ADP$W_MR2FREGAR = 874,0,0,0 %;
literal ADP$S_MR2FREGAR = 248;          !  1st reg in extent array. 
macro ADP$W_UMR2_DIS = 1122,0,16,0 %;   !  Num of Map Registers to disable
macro ADP$L_MR2ADDR = 1124,0,32,0 %;    !  Address of map registers in CPU node private space
macro ADP$L_HOSTNODE = 56,0,32,0 %;     ! BVP Address of the host's BIIC nodespace base
macro ADP$W_INCARN = 60,0,16,0 %;       ! BVP Adapter incarnation - incremented on restart or self test
!  The following fields are reserved for use by BVP$LOCK_WAIT, BVP$LOCK_NOWAIT and BVP$UNLOCK
macro ADP$L_BVPOWNER = 62,0,32,0 %;     ! BVP Lock owner UCB (zero if free)
macro ADP$L_BVPWAITFL = 66,0,32,0 %;    ! BVP Queue of port drivers waiting
macro ADP$L_BVPWAITBL = 70,0,32,0 %;    ! BVP  for the ADP interlock
!  The following fields are reserved for use by BVP$INIT_PORT
macro ADP$W_BVP_STATE = 74,0,16,0 %;    ! BVP software state
macro ADP$L_BVP_COUNT = 76,0,32,0 %;    ! BVP timeout count
macro ADP$L_BVP_PROG = 80,0,32,0 %;     ! BVP progress counter
macro ADP$L_BVPSAVR5 = 84,0,32,0 %;     ! BVP Saved R5 
macro ADP$L_BVPRETURN = 88,0,32,0 %;    ! BVP Return address
macro ADP$L_BVPTEST = 92,0,32,0 %;      ! BVP self test action routine
macro ADP$L_BVPSTOP = 96,0,32,0 %;      ! BVP Stopped state action routine
macro ADP$L_BVPUNDEF = 100,0,32,0 %;    ! BVP Undefined state action
macro ADP$L_BVPINIT = 104,0,32,0 %;     ! BVP Initialized state action
macro ADP$L_BVPNOTIFY = 108,0,32,0 %;   ! BVP Error notify fork block
macro ADP$L_BVPCTRL = 112,0,32,0 %;     ! BVP Address of the port regs
!  The following queue header is a list of fork blocks to be activated on a fatal adapter error
macro ADP$L_BVPERRFL = 116,0,32,0 %;    ! BVP error notification flink
macro ADP$L_BVPERRBL = 120,0,32,0 %;    ! BVP error notification blink
!  The following field is used for CI-compatible adapter mapping and unmapping
macro ADP$L_INTSERV = 132,0,32,0 %;     ! BVP Address of the interrupt service routine
!  The following fields are reserved for use by BVP$ALLOC_DUMP and BVP$MEM_DUMP
macro ADP$L_LSDUMP = 136,0,32,0 %;      ! BVP Address of physical contiguous
! BVP  memory for the adapter memory dump.
macro ADP$L_LSINDX = 140,0,32,0 %;      ! BVP Offset into the adapter memory for start of the dump.
macro ADP$L_LSLENGTH = 144,0,32,0 %;    ! BVP Length (longwords) of the adapter memory
!  The following field is a sequence number for diagnostic use in tracing events from multiple drivers
!  which access a single adapter.  This field is normally unused.
macro ADP$L_SEQUENCE = 148,0,32,0 %;    ! BVP event sequence number
macro ADP$L_ADP_PAGES = 152,0,32,0 %;   !  (TYC0001) # of adapter pages to map 
macro ADP$L_NI_HWA = 56,0,32,0 %;
macro ADP$B_NI_HWO = 60,0,8,0 %;
macro ADP$B_NI_DIPL = 61,0,8,0 %;
macro ADP$B_SGEC_BURST = 62,0,8,0 %;
macro ADP$B_SGEC_MODE = 63,0,8,0 %;
macro ADP$V_SGEC_SA = 63,0,1,0 %;
macro ADP$V_SGEC_SE = 63,1,1,0 %;
macro ADP$W_CIRFLAGS = 56,0,16,0 %;     !  CIRRUS flags
macro ADP$V_CIR_VALID = 56,0,1,0 %;
macro ADP$V_CIR_INITDEV = 56,1,1,0 %;
macro ADP$V_CIR_TRAENA = 56,2,1,0 %;
macro ADP$W_CIRSLOT = 58,0,16,0 %;      !  Cirrus slot number (1-14)
macro ADP$W_CIRMODTYPE = 60,0,16,0 %;   !  CIRRUS module type
macro ADP$W_CIRSERNO = 62,0,16,0 %;     !  CIRRUS serial number
macro ADP$W_CIRREVNO = 64,0,16,0 %;     !  CIRRUS revision number
macro ADP$W_CIRPAGMA = 66,0,16,0 %;     !  CIRRUS pages mapped
macro ADP$W_CIRSPTENO = 68,0,16,0 %;    !  CIRRUS number of SPTEs for this  adapter
macro ADP$W_CIRMEMMODSIZE = 70,0,16,0 %; !  CIRRUS memory module size in  megabytes
macro ADP$L_CIRVAIOS = 72,0,32,0 %;     !  CIRRUS virtual address IO spae
macro ADP$L_CIRSPTEVA = 76,0,32,0 %;    !  CIRRUS virtual address of first SPTE
macro ADP$L_CIRCIOCOMM = 80,0,32,0 %;   !  CIRRUS base VA of Communications
!  area for a CIO module
macro ADP$L_CIRCIOETH = 84,0,32,0 %;    !  CIRRUS base VA of Ethernet address
!  area for a CIO module
macro ADP$L_CIRCIOSSC = 88,0,32,0 %;    !  CIRRUS base VA of SSC (TODR)
!  area for a CIO module
macro ADP$L_CIRCIOSLB = 92,0,32,0 %;    !  CIRRUS base VA of buffer ram
!  area for a CIO module
macro ADP$L_CIRCIOFIR = 96,0,32,0 %;    !  CIRRUS base VA of Firewall registers
!  area for a CIO module
macro ADP$L_CIRCIODMA = 100,0,32,0 %;   !  CIRRUS base VA of DMA registers
!  area for a CIO module
macro ADP$L_CIRCIOFIRCTL = 104,0,32,0 %; !  CIRRUS base VA of Firewall
!  control register on CIO module
macro ADP$L_CIRCIOPCM = 108,0,32,0 %;   !  CIRRUS base VA of PCM
!  area for a CIO module
macro ADP$L_CIRCIOCON = 112,0,32,0 %;   !  CIRRUS base VA of Console registers
macro ADP$L_CIRDSFCON = 112,0,32,0 %;   !  area for a CIO and DSF module
macro ADP$L_CIRCIOSLI = 116,0,32,0 %;   !  CIRRUS base VA of SLIM registers
macro ADP$L_CIRCIOSWI = 120,0,32,0 %;   !  CIRRUS base VA of SWIFT registers
macro ADP$L_CIRDSFTURBO = 120,0,32,0 %; !  CIRRUS VA of DSF TURBO registers
macro ADP$L_CIRCIOLAN = 124,0,32,0 %;   !  CIRRUS base VA of LANCE registers
macro ADP$L_CIRDSFMOD = 124,0,32,0 %;   !  Base VA of Modem control for DSF 
macro ADP$L_SWIFT_CRB = 128,0,32,0 %;   !  SWIFT CRB address
macro ADP$L_DSF_CRB = 128,0,32,0 %;     !  DSF CRB address
macro ADP$L_LANCEC_CRB = 132,0,32,0 %;  !  Lance CRB address
macro ADP$L_PCM_CRB = 136,0,32,0 %;     !  PCM CRB address	
 
!*** MODULE $AIBDEF ***
! +
!  FORMAT OF ACP I/O BUFFER PACKET. THIS PACKET CONTAINS ALL THE DATA
!  TRANSMITTED FROM THE USER TO THE ACP AND BACK FOR AN ACP FUNCTION.
!  NOTE THAT THE DESCRIPTORS IN THE PACKET ARE TREATED BY BLISS CODE
!  AS A BLOCKVECTOR.
! -
literal AIB$K_LENGTH = 12;              !  LENGTH OF PACKET HEADER 
literal AIB$C_LENGTH = 12;              !  LENGTH OF PACKET HEADER 
literal AIB$S_AIBDEF = 12;
macro AIB$L_DESCRIPT = 0,0,32,0 %;      !  ADDRESS OF START OF DESCRIPTORS 
macro AIB$W_SIZE = 8,0,16,0 %;          !  SIZE OF PACKET 
macro AIB$B_TYPE = 10,0,8,0 %;          !  PACKET TYPE CODE 
 
!*** MODULE $ABDDEF ***
literal ABD$K_LENGTH = 8;               !  SIZE OF DESCRIPTOR 
literal ABD$C_LENGTH = 8;               !  SIZE OF DESCRIPTOR 
literal ABD$C_WINDOW = 0;               !  DESCRIPTOR FOR WINDOW ADDRESS 
literal ABD$C_FIB = 1;                  !  DESCRIPTOR FOR FIB 
literal ABD$C_NAME = 2;                 !  DESCRIPTOR FOR NAME STRING 
literal ABD$C_RESL = 3;                 !  DESCRIPTOR FOR RESULT LENGTH 
literal ABD$C_RES = 4;                  !  DESCRIPTOR FOR RESULT STRING 
literal ABD$C_ATTRIB = 5;               !  FIRST ATTRIBUTE DESCRIPTOR 
literal ABD$S_ABDDEF = 8;
macro ABD$W_TEXT = 0,0,16,0 %;          !  WORD OFFSET TO DATA TEXT 
macro ABD$W_COUNT = 2,0,16,0 %;         !  BYTE COUNT OF TEXT 
macro ABD$L_USERVA = 4,0,32,0 %;        !  USER VIRTUAL ADDRESS OF TEXT 
 
!*** MODULE $ALFDEF ***
! +
! 
!  $ALFDEF - structure for auto-login file.
! 
! -
literal ALF$C_LENGTH = 128;
literal ALF$K_LENGTH = 128;
literal ALF$S_ALFDEF = 128;
macro ALF$T_DEVNAME = 0,0,0,0 %;
literal ALF$S_DEVNAME = 63;             !  Terminal device name
macro ALF$T_USERNAME = 63,0,0,0 %;
literal ALF$S_USERNAME = 32;            !  Associated username
 
!*** MODULE $AQBDEF ***
! +
!  DEFINITION OF ACP QUEUE HEADER
! -
literal AQB$M_UNIQUE = 1;
literal AQB$M_DEFCLASS = 2;
literal AQB$M_DEFSYS = 4;
literal AQB$M_CREATING = 8;
literal AQB$M_XQIOPROC = 16;
literal AQB$K_UNDEFINED = 0;            !  UNDEFINED ACP 
literal AQB$K_F11V1 = 1;                !  FILES-11 STRUCTURE LEVEL 1 
literal AQB$K_F11V2 = 2;                !  FILES-11 STRUCTURE LEVEL 2 
literal AQB$K_MTA = 3;                  !  MAGTAPE 
literal AQB$K_NET = 4;                  !  NETWORKS 
literal AQB$K_REM = 5;                  !  REMOTE I/O 
literal AQB$K_HBS = 6;                  !  HOST BASED SHADOWING
literal AQB$K_LENGTH = 28;              !  SIZE OF AQB 
literal AQB$C_LENGTH = 28;              !  SIZE OF AQB 
literal AQB$S_AQBDEF = 28;
macro AQB$Q_ACPIQ = 0,0,0,0 %;
literal AQB$S_ACPIQ = 8;                !  INTERLOCKED QUEUE
macro AQB$R_ACP_Q_STRUCTURE = 0,0,0,0 %;
literal AQB$S_ACP_Q_STRUCTURE = 8;
macro AQB$L_ACPQFL = 0,0,32,0 %;        !  QUEUE FORWARD LINK 
macro AQB$L_ACPQBL = 4,0,32,0 %;        !  QUEUE BACK LINK 
macro AQB$W_SIZE = 8,0,16,0 %;          !  CONTROL BLOCK SIZE IN BYTES 
macro AQB$B_TYPE = 10,0,8,0 %;          !  BLOCK TYPE CODE 
macro AQB$B_MNTCNT = 11,0,8,0 %;        !  ACP MOUNT COUNT 
macro AQB$L_ACPPID = 12,0,32,0 %;       !  ACP PROCESS PID 
macro AQB$L_LINK = 16,0,32,0 %;         !  AQB LIST LINKAGE 
macro AQB$B_STATUS = 20,0,8,0 %;        !  STATUS BYTE 
macro AQB$V_UNIQUE = 20,0,1,0 %;        !  ACP IS UNIQUE TO THIS DEVICE 
macro AQB$V_DEFCLASS = 20,1,1,0 %;      !  ACP IS DEFAULT FOR THIS CLASS 
macro AQB$V_DEFSYS = 20,2,1,0 %;        !  ACP IS DEFAULT FOR THE SYSTEM 
macro AQB$V_CREATING = 20,3,1,0 %;      !  ACP IS CURRENTLY BEING CREATED 
macro AQB$V_XQIOPROC = 20,4,1,0 %;      !  eXtended QIO PROCessor is being used.
macro AQB$B_ACPTYPE = 21,0,8,0 %;       !  ACP TYPE CODE 
! 
!  ***** The following ACP type codes are now a user visible interface
!  ***** and the values may not be changed.  There are parallel definitions
!  ***** in the $DVIDEF macro that define symbols of the form:
!  *****
!  *****                DVI$C_ACP_F11V1
!  *****                DVI$C_ACP_F11V2
!  *****                DVI$C_ACP_MTA
!  *****                ...
!  *****
!  ***** All new ACP type values must be added at the end and the names
!  ***** must be 5 characters or less to keep the DVI form of the name
!  ***** 15 characters or less.  Any additions must also be made in $DVIDEF
!  ***** and in the list of ASSUMES in the module SYSGETDEV in [SYS.SRC]
! 
macro AQB$B_CLASS = 22,0,8,0 %;         !  ACP CLASS CODE 
macro AQB$L_BUFCACHE = 24,0,32,0 %;     !  POINTER TO BUFFER CACHE
 
!*** MODULE $ARBDEF ***
! +
! 
!  Access Rights Block - structure defining process access rights and
!  privileges. Currently part of the PCB (meaning that the size of the
!  ARB declared here must track in the PCB).
! 
! -
literal ARB$C_HEADER = 52;              !  Length of header
literal ARB$K_HEADER = 52;              !  Length of header
literal ARB$K_LENGTH = 124;             !  Structure length 
literal ARB$C_LENGTH = 124;             !  Structure length 
literal ARB$S_ARBDEF = 124;
macro ARB$Q_PRIV = 0,0,0,0 %;
literal ARB$S_PRIV = 8;                 !  Privilege mask
macro ARB$W_SIZE = 8,0,16,0 %;          !  Structure size
macro ARB$B_TYPE = 10,0,8,0 %;          !  Structure type
macro ARB$B_FLAGS = 11,0,8,0 %;         !  ARB flags (unused)
macro ARB$R_CLASS = 12,0,0,0 %;
literal ARB$S_CLASS = 20;               !  Security classification mask
macro ARB$L_RIGHTSLIST = 32,0,0,0 %;
literal ARB$S_RIGHTSLIST = 20;          !  Rights list descriptors
macro ARB$L_PROCESS = 32,0,32,0 %;      !  process rights
macro ARB$L_SYSTEM = 36,0,32,0 %;       !  system rights
macro ARB$L_EXTENDED = 40,0,32,0 %;     !  extended process rights
macro ARB$L_IMAGE = 44,0,32,0 %;        !  image rights
macro ARB$L_RESERVED = 48,0,32,0 %;     !  reserved
macro ARB$R_RIGHTSDESC = 52,0,0,0 %;
literal ARB$S_RIGHTSDESC = 8;           !  Descriptor for local rights list
macro ARB$R_LOCALRIGHTS = 60,0,0,0 %;
literal ARB$S_LOCALRIGHTS = 64;         !  Process local rights list
macro ARB$L_UIC = 60,0,32,0 %;          !  Process UID
macro ARB$W_MEM = 60,0,16,0 %;          !  Member number
macro ARB$W_GRP = 62,0,16,0 %;          !  Group number
 
!*** MODULE $ARCDEF ***
! +
! 
!  Bit definitions for EXE$GL_ARCHFLAG - flags for VAX architecture differences
! 
! -
literal ARC$M_CHAR_EMUL = 16;
literal ARC$M_DCML_EMUL = 32;
literal ARC$M_EDPC_EMUL = 64;
literal ARC$M_CRC_EMUL = 128;
literal ARC$M_DFLT_EMUL = 256;
literal ARC$M_FFLT_EMUL = 512;
literal ARC$M_GFLT_EMUL = 1024;
literal ARC$M_HFLT_EMUL = 2048;
literal ARC$M_EMOD_EMUL = 4096;
literal ARC$M_POLY_EMUL = 8192;
literal ARC$M_VIRT_SCB = 16384;
literal ARC$M_VIRT_SPT = 32768;
literal ARC$M_VIRT_PCB = 65536;
literal ARC$M_LOAD_SMP = 131072;
literal ARC$S_ARCDEF = 4;
macro ARC$R_ARCDEF_BITS = 0,0,32,0 %;
macro ARC$V_CHAR_EMUL = 0,4,1,0 %;      !  Char Str Ins Emul 
macro ARC$V_DCML_EMUL = 0,5,1,0 %;      !  Decimal String Emul
macro ARC$V_EDPC_EMUL = 0,6,1,0 %;      !  EDITPC Instr Emul 
macro ARC$V_CRC_EMUL = 0,7,1,0 %;       !  CRC Instr Emul
macro ARC$V_DFLT_EMUL = 0,8,1,0 %;      !  D-flt Data Type Emul
macro ARC$V_FFLT_EMUL = 0,9,1,0 %;      !  F-flt Data Type Emul
macro ARC$V_GFLT_EMUL = 0,10,1,0 %;     !  G-flt Data Type Emul
macro ARC$V_HFLT_EMUL = 0,11,1,0 %;     !  H-flt Data Type Emul
macro ARC$V_EMOD_EMUL = 0,12,1,0 %;     !  EMOD Instr Emul
macro ARC$V_POLY_EMUL = 0,13,1,0 %;     !  POLY Instr Emul
macro ARC$V_VIRT_SCB = 0,14,1,0 %;      !  SCB located in virtual memory
macro ARC$V_VIRT_SPT = 0,15,1,0 %;      !  SPT located in virtual memory
macro ARC$V_VIRT_PCB = 0,16,1,0 %;      !  HWPCB located in virtual memory
macro ARC$V_LOAD_SMP = 0,17,1,0 %;      !  Load SMP uncoditionally
 
!*** MODULE $BBSDEF ***
! +
! 
!  Structure of message from disk ACP to bad block scan utility.
! 
! -
literal BBS$K_LENGTH = 18;
literal BBS$C_LENGTH = 18;
literal BBS$S_BBSDEF = 18;
macro BBS$B_MSGTYPE = 0,0,8,0 %;        !  message type code (MSG$C_SCANBAD) 
macro BBS$W_SEQUENCE = 4,0,16,0 %;      !  message sequence number 
macro BBS$L_UCB = 8,0,32,0 %;           !  UCB address of device 
macro BBS$W_FID = 12,0,0,0 %;
literal BBS$S_FID = 6;                  !  file ID of file 
 
!*** MODULE $BIICDEF ***
! +
!  BI Interface Chip Register Offset Definitions
! -
literal BIIC$M_NONDEC = 32768;
literal BIIC$M_ARBCNTL = 48;
literal BIIC$M_SEIE = 64;
literal BIIC$M_HEIE = 128;
literal BIIC$M_UWP = 256;
literal BIIC$M_SST = 1024;
literal BIIC$M_STS = 2048;
literal BIIC$M_BROKE = 4096;
literal BIIC$M_INIT = 8192;
literal BIIC$M_SES = 16384;
literal BIIC$M_HES = 32768;
literal BIIC$M_NPE = 1;
literal BIIC$M_CRD = 2;
literal BIIC$M_IPE = 4;
literal BIIC$M_UPEN = 8;
literal BIIC$M_ICE = 65536;
literal BIIC$M_NEX = 131072;
literal BIIC$M_BTO = 262144;
literal BIIC$M_STO = 524288;
literal BIIC$M_RTO = 1048576;
literal BIIC$M_RDS = 2097152;
literal BIIC$M_SPE = 4194304;
literal BIIC$M_CPE = 8388608;
literal BIIC$M_IVE = 16777216;
literal BIIC$M_TDF = 33554432;
literal BIIC$M_ISE = 67108864;
literal BIIC$M_MPE = 134217728;
literal BIIC$M_CTE = 268435456;
literal BIIC$M_MTCE = 536870912;
literal BIIC$M_NMR = 1073741824;
literal BIIC$M_EIFORCE = 1048576;
literal BIIC$M_EISENT = 2097152;
literal BIIC$M_EIINTC = 8388608;
literal BIIC$M_EIINTAB = 16777216;
literal BIIC$M_RTOEVEN = 8;
literal BIIC$M_PNXTEN = 16;
literal BIIC$M_IPINTREN = 32;
literal BIIC$M_INTREN = 64;
literal BIIC$M_BICSREN = 128;
literal BIIC$M_UCSREN = 256;
literal BIIC$M_WINVALEN = 512;
literal BIIC$M_INVALEN = 1024;
literal BIIC$M_IDENTEN = 2048;
literal BIIC$M_RESEN = 4096;
literal BIIC$M_STOPEN = 8192;
literal BIIC$M_BDCSTEN = 16384;
literal BIIC$M_MSEN = 32768;
literal BIIC$M_IPINTRF = 65536;
literal BIIC$M_BURSTEN = 131072;
literal BIIC$M_GPR0 = 268435456;
literal BIIC$M_GPR1 = 536870912;
literal BIIC$M_GPR2 = 1073741824;
literal BIIC$M_GPR3 = -2147483648;
literal BIIC$M_MIDEN = 2048;
literal BIIC$M_EXVECTOR = 32768;
literal BIIC$S_BIICDEF = 256;
! +
!  BI Required Registers
! -
macro BIIC$L_DTREG = 0,0,32,0 %;        ! Device Type Register
macro BIIC$W_DEVTYPE = 0,0,16,0 %;      !  Device Type Field
!  Lo order devtype bits
macro BIIC$V_MEMNODE = 0,8,7,0 %;
literal BIIC$S_MEMNODE = 7;             !  If zero, then memory
macro BIIC$V_NONDEC = 0,15,1,0 %;       !  If set, non-DEC node
macro BIIC$W_REVCODE = 2,0,16,0 %;      !  Revision code
macro BIIC$L_BICSR = 4,0,32,0 %;        ! BI Control/Status Register
macro BIIC$V_NODE_ID = 4,0,4,0 %;
literal BIIC$S_NODE_ID = 4;             !  Node ID
macro BIIC$V_ARBCNTL = 4,4,2,0 %;
literal BIIC$S_ARBCNTL = 2;             !  Arbitration Control
macro BIIC$V_SEIE = 4,6,1,0 %;          !  Soft Error interrupt enable
macro BIIC$V_HEIE = 4,7,1,0 %;          !  Hard Error interrupt enable
macro BIIC$V_UWP = 4,8,1,0 %;           !  Unlock Write Pending
macro BIIC$V_SST = 4,10,1,0 %;          !  Start Self test
macro BIIC$V_STS = 4,11,1,0 %;          !  Self test Status
macro BIIC$V_BROKE = 4,12,1,0 %;        !  Broke bit
macro BIIC$V_INIT = 4,13,1,0 %;         !  Init bit
macro BIIC$V_SES = 4,14,1,0 %;          !  Soft error summary
macro BIIC$V_HES = 4,15,1,0 %;          !  Hard error summary
macro BIIC$V_BIICTYPE = 4,16,8,0 %;
literal BIIC$S_BIICTYPE = 8;            !  BIIC type
macro BIIC$V_BIICREVN = 4,24,8,0 %;
literal BIIC$S_BIICREVN = 8;            !  BIIC Revision Number
macro BIIC$L_BER = 8,0,32,0 %;          ! Bus Error Register
macro BIIC$V_NPE = 8,0,1,0 %;           !  Null Bus Parity Error
macro BIIC$V_CRD = 8,1,1,0 %;           !  Corrected Read Data
macro BIIC$V_IPE = 8,2,1,0 %;           !  ID Parity Error
macro BIIC$V_UPEN = 8,3,1,0 %;          !  User Parity Enabled
macro BIIC$V_ICE = 8,16,1,0 %;          !  Illegal Confirmation Error
macro BIIC$V_NEX = 8,17,1,0 %;          !  Non-existent Address
macro BIIC$V_BTO = 8,18,1,0 %;          !  Bus Timeout
macro BIIC$V_STO = 8,19,1,0 %;          !  Stall Timeout
macro BIIC$V_RTO = 8,20,1,0 %;          !  Retry Timeout
macro BIIC$V_RDS = 8,21,1,0 %;          !  Read Data Substitute
macro BIIC$V_SPE = 8,22,1,0 %;          !  Slave Parity Error
macro BIIC$V_CPE = 8,23,1,0 %;          !  Command Parity Error
macro BIIC$V_IVE = 8,24,1,0 %;          !  IDENT Vector Error
macro BIIC$V_TDF = 8,25,1,0 %;          !  Transmitter During Fault
macro BIIC$V_ISE = 8,26,1,0 %;          !  Interlock Sequence Error
macro BIIC$V_MPE = 8,27,1,0 %;          !  Master Parity Error
macro BIIC$V_CTE = 8,28,1,0 %;          !  Control Transmit Error
macro BIIC$V_MTCE = 8,29,1,0 %;         !  Master Transmit Check Error
macro BIIC$V_NMR = 8,30,1,0 %;          !  No Ack to Multi-Responder Command
macro BIIC$L_EICR = 12,0,32,0 %;        ! Error Interrupt Control Register
macro BIIC$V_EIVECTOR = 12,2,12,0 %;
literal BIIC$S_EIVECTOR = 12;           !  Vector
macro BIIC$V_LEVEL = 12,16,4,0 %;
literal BIIC$S_LEVEL = 4;               !  Interrupt Level
macro BIIC$V_EIFORCE = 12,20,1,0 %;     !  Force
macro BIIC$V_EISENT = 12,21,1,0 %;      !  INTR command sent
macro BIIC$V_EIINTC = 12,23,1,0 %;      !  Interrupt Complete
macro BIIC$V_EIINTAB = 12,24,1,0 %;     !  Interrupt Abort
macro BIIC$L_IDR = 16,0,32,0 %;         !  Interrupt Destination
!   decoded ID in Lo order
! +
!  BIIC Specific Device Registers
! -
macro BIIC$L_IPIMR = 20,0,32,0 %;       !  IP Interrupt Mask
!   decoded ID in Hi order
macro BIIC$L_IPIDR = 24,0,32,0 %;       !  IP Interrupt Destination
!   decoded ID in Lo order
macro BIIC$L_IPISR = 28,0,32,0 %;       !  IP Interrupt Source
!   decoded ID in Hi order
! Note: following two
!  registers have lo order
!  18 bits MBZ. This means
!  memories are multiples
!  of 256KB.
macro BIIC$L_SAR = 32,0,32,0 %;         !  Starting Address Register
macro BIIC$L_EAR = 36,0,32,0 %;         !  Ending Address Register
macro BIIC$L_BCICR = 40,0,32,0 %;       ! BCI Control Register
macro BIIC$V_RTOEVEN = 40,3,1,0 %;      !  RTO EV Enable
macro BIIC$V_PNXTEN = 40,4,1,0 %;       !  Pipeline NXT Enable
macro BIIC$V_IPINTREN = 40,5,1,0 %;     !  IP Interrupt Enable
macro BIIC$V_INTREN = 40,6,1,0 %;       !  Interrupt Enable
macro BIIC$V_BICSREN = 40,7,1,0 %;      !  BIIC CSR Space Enable
macro BIIC$V_UCSREN = 40,8,1,0 %;       !  User CSR Space Enable
macro BIIC$V_WINVALEN = 40,9,1,0 %;     !  Write Invalidate Enable
macro BIIC$V_INVALEN = 40,10,1,0 %;     !  INVAL Enable
macro BIIC$V_IDENTEN = 40,11,1,0 %;     !  IDENT Enable
macro BIIC$V_RESEN = 40,12,1,0 %;       !  Reserved Enable
macro BIIC$V_STOPEN = 40,13,1,0 %;      !  STOP Enable
macro BIIC$V_BDCSTEN = 40,14,1,0 %;     !  Broadcast Enable
macro BIIC$V_MSEN = 40,15,1,0 %;        !  Multicast Space Enable
macro BIIC$V_IPINTRF = 40,16,1,0 %;     !  IP Interrupt Force
macro BIIC$V_BURSTEN = 40,17,1,0 %;     !  Burst Enable
macro BIIC$L_WSR = 44,0,32,0 %;         ! Write Status Register
macro BIIC$V_GPR0 = 44,28,1,0 %;        !  These bits indicate
macro BIIC$V_GPR1 = 44,29,1,0 %;        !   that the corresponding
macro BIIC$V_GPR2 = 44,30,1,0 %;        !   General Purpose Register
macro BIIC$V_GPR3 = 44,31,1,0 %;        !   has been written to.
macro BIIC$L_IPISTPF = 48,0,32,0 %;     ! IPINTR/STOP Force CMD Reg
macro BIIC$V_MIDEN = 48,11,1,0 %;       !  Determines whether Master ID
!   transmitted on BI D<31:16>.
macro BIIC$V_CMD = 48,12,4,0 %;
literal BIIC$S_CMD = 4;                 !  Command (IPINTR or STOP).
macro BIIC$L_UICR = 64,0,32,0 %;        ! UserInterrupt Control Register
macro BIIC$V_UIVECTOR = 64,2,12,0 %;
literal BIIC$S_UIVECTOR = 12;           !  Vector
macro BIIC$V_EXVECTOR = 64,15,1,0 %;    !  External Vector
macro BIIC$V_UIFORCE = 64,16,4,0 %;
literal BIIC$S_UIFORCE = 4;             !  Force (1 for each level)
macro BIIC$V_UISENT = 64,20,4,0 %;
literal BIIC$S_UISENT = 4;              !  INTR command sent(1 for each level)
macro BIIC$V_UIINTC = 64,24,4,0 %;
literal BIIC$S_UIINTC = 4;              !  Interrupt Complete(1 for each level)
macro BIIC$V_UIINTAB = 64,28,4,0 %;
literal BIIC$S_UIINTAB = 4;             !  Interrupt Abort(1 for each level)
! +
!  BIIC General Purpose Device Registers
! -
macro BIIC$L_GPR0 = 240,0,32,0 %;       ! General Purpose Register 0
macro BIIC$L_GPR1 = 244,0,32,0 %;       ! General Purpose Register 1
macro BIIC$L_GPR2 = 248,0,32,0 %;       ! General Purpose Register 2
macro BIIC$L_GPR3 = 252,0,32,0 %;       ! General Purpose Register 3
 
!*** MODULE $BIMEMDEF ***
! +
!  BI Memory Node Registers
! -
literal BIMEM$M_INTLV = 256;
literal BIMEM$M_CNTLERR = 512;
literal BIMEM$M_MWRITER = 1024;
literal BIMEM$M_BROKE = 4096;
literal BIMEM$M_INTLK = 8192;
literal BIMEM$M_MEMVAL = 16384;
literal BIMEM$M_INHCRD = 32768;
literal BIMEM$M_ECCDIS = 536870912;
literal BIMEM$M_ECCDIAG = 1073741824;
literal BIMEM$M_ERRSUM = -2147483648;
literal BIMEM$M_INTLVAD = 256;
literal BIMEM$M_ADRSERR = 268435456;
literal BIMEM$M_CRDLOGR = 536870912;
literal BIMEM$M_HIERATE = 1073741824;
literal BIMEM$M_RDSLOGR = -2147483648;
literal BIMEM$S_BIMEMDEF = 264;
macro BIMEM$L_CSR1 = 256,0,32,0 %;      ! CSR 1
macro BIMEM$V_DIAGBTS = 256,0,7,0 %;
literal BIMEM$S_DIAGBTS = 7;            !  Used during ECC diag cycles
macro BIMEM$V_INTLV = 256,8,1,0 %;      !  1=> internally lnterleaved
macro BIMEM$V_CNTLERR = 256,9,1,0 %;    !  Controller error
macro BIMEM$V_MWRITER = 256,10,1,0 %;   !  RDS on masked write
macro BIMEM$V_BROKE = 256,12,1,0 %;     !  Broke bit
macro BIMEM$V_INTLK = 256,13,1,0 %;     !  Interlock flag
macro BIMEM$V_MEMVAL = 256,14,1,0 %;    !  Memory contents valid
macro BIMEM$V_INHCRD = 256,15,1,0 %;    !  Inhib. CRD reporting
macro BIMEM$V_RAMTYPE = 256,16,2,0 %;
literal BIMEM$S_RAMTYPE = 2;            !  00=>64Ks, 01=>256Ks
macro BIMEM$V_MEMSIZE = 256,18,11,0 %;
literal BIMEM$S_MEMSIZE = 11;           !  Size in 256KB increments
macro BIMEM$V_ECCDIS = 256,29,1,0 %;    !  Used with following bit
macro BIMEM$V_ECCDIAG = 256,30,1,0 %;   !  
macro BIMEM$V_ERRSUM = 256,31,1,0 %;    !  Error summary(includes CSR2)
macro BIMEM$L_CSR2 = 260,0,32,0 %;      ! CSR 2
macro BIMEM$V_ERRSYND = 260,0,7,0 %;
literal BIMEM$S_ERRSYND = 7;            !  Error syndrome
macro BIMEM$V_INTLVAD = 260,8,1,0 %;    !  Interleave Address
macro BIMEM$V_ERRADDR = 260,9,15,0 %;
literal BIMEM$S_ERRADDR = 15;           !  Internal addr of error
macro BIMEM$V_ADRSERR = 260,28,1,0 %;   !  Internal address parity error
macro BIMEM$V_CRDLOGR = 260,29,1,0 %;   !  CRD Error Log REQ
macro BIMEM$V_HIERATE = 260,30,1,0 %;   !  Hi Error Rate
macro BIMEM$V_RDSLOGR = 260,31,1,0 %;   !  RDS Error Log REQ
 
!*** MODULE $BODDEF ***
! +
!  BOD - Buffer Object Descriptor
!  
!   A buffer object descriptor defines a buffer object used
!   by the I/O subsystem.
! -
literal BOD$M_DELPEN = 1;
literal BOD$M_NOQUOTA = 2;
literal BOD$K_LENGTH = 48;              !  LENGTH OF STRUCTURE
literal BOD$C_LENGTH = 48;              !  LENGTH OF STRUCTURE
literal BOD$S_BODDEF = 48;
macro BOD$L_FLINK = 0,0,32,0 %;         !   FLINK into PCB list
macro BOD$L_BLINK = 4,0,32,0 %;         !   BLINK into PCB list
macro BOD$W_SIZE = 8,0,16,0 %;          !   Size of fixed portion of BOOTCB 
macro BOD$B_TYPE = 10,0,8,0 %;          !   Type of control block 
macro BOD$B_ACMODE = 11,0,8,0 %;        !   Owner access mode
macro BOD$L_SEQNUM = 12,0,32,0 %;       !   Sequence # at object creation
macro BOD$W_REFCNT = 16,0,16,0 %;       !   No. of references to this BOD
macro BOD$W_FLAGS = 18,0,16,0 %;        !   Flags word
macro BOD$V_DELPEN = 18,0,1,0 %;        !   Delete pending
macro BOD$V_NOQUOTA = 18,1,1,0 %;       !   No quota charge for S0 window
macro BOD$L_PID = 20,0,32,0 %;          !   PID of creating process
macro BOD$L_PAGCNT = 24,0,32,0 %;       !   No. of pages in buffer object
macro BOD$L_BASEPVA = 28,0,32,0 %;      !   Base process address of buffer object
macro BOD$L_BASESVA = 32,0,32,0 %;      !   Base system  address of buffer object
macro BOD$L_SPARE_1 = 36,0,32,0 %;      !   SPARE
macro BOD$L_SPARE_2 = 40,0,32,0 %;      !   SPARE
macro BOD$L_SPARE_3 = 44,0,32,0 %;      !   SPARE
 
!*** MODULE $BOODEF ***
! +
!  BOO - Boot Control Block
! 
!  A boot control block is produced by SYSBOOT and placed in non-paged
!  pool.  It is pointed to by the cell EXE$GL_BOOTCB and contains
!  the mapping information for SYSDUMP.DMP.
! -
literal BOO$K_LENGTH = 40;
literal BOO$C_LENGTH = 40;
literal BOO$S_BOODEF = 40;
macro BOO$L_CHECKSUM = 0,0,32,0 %;      !  Checksum 
macro BOO$L_TIMELBN = 4,0,32,0 %;       !  LBN of system time quadword
macro BOO$W_SIZE = 8,0,16,0 %;          !  Size of fixed portion of BOOTCB 
macro BOO$B_TYPE = 10,0,8,0 %;          !  Type of control block 
macro BOO$B_SUBTYP = 11,0,8,0 %;        !  Sub-type 
macro BOO$L_DMP_VBN = 12,0,32,0 %;      !  Starting VBN for dump file 
macro BOO$L_DMP_SIZE = 16,0,32,0 %;     !  Size in blocks of dump file 
!  from starting VBN to end of file
macro BOO$L_DMP_MAP = 20,0,32,0 %;      !  Adr of map for SYSDUMP.DMP 
macro BOO$L_BUG_WCB = 24,0,32,0 %;      !  Adr of WCB for bugcheck image
macro BOO$L_BUG_LBN = 28,0,32,0 %;      !  LBN of first page of bugcheck code
macro BOO$L_BUG_IMAGE_VA = 32,0,32,0 %; !  Base VA of image containing bugcheck
macro BOO$L_SCB_LBN = 36,0,32,0 %;      !  LBN of the storage control block (SCB) on system disk
 
!*** MODULE $BPTDEF ***
!  +
! 
!   Define bits which control which hardcoded calls to INI$BRK (the initial BPT)
!   will be executed as a system is being booted.
! 
!  -
literal BPT$M_INITBEGIN = 1;
literal BPT$M_INITEND = 2;
literal BPT$M_SMPSTART = 4;
literal BPT$S_BPTDEF = 4;
macro BPT$V_INITBEGIN = 0,0,1,0 %;      !  BRK at start of INIT
macro BPT$V_INITEND = 0,1,1,0 %;        !  BRK at end of INIT
macro BPT$V_SMPSTART = 0,2,1,0 %;       !  BRK at INIT call to setup SMP
 
!*** MODULE $BQODEF ***
! +
! 
!  Offsets into the IO vector of the BOOT driver.
! 
! -
literal BQO$S_BQODEF = 84;
macro BQO$L_QIO = 0,0,32,0 %;           !  QIO entry 
macro BQO$L_MAP = 4,0,32,0 %;           !  Mapping entry 
macro BQO$L_SELECT = 8,0,32,0 %;        !  Selection entry 
macro BQO$L_DRIVRNAME = 12,0,32,0 %;    !  Offset to driver name 
macro BQO$W_VERSION = 16,0,16,0 %;      !  Version number of VMB 
macro BQO$W_VERCHECK = 18,0,16,0 %;     !  Check field 
macro BQO$L_RESELECT = 20,0,32,0 %;     !  Reselection entry 
macro BQO$L_MOVE = 24,0,32,0 %;         !  Move driver entry 
macro BQO$L_UNIT_INIT = 28,0,32,0 %;    !  Unit initialization entry 
macro BQO$L_AUXDRNAME = 32,0,32,0 %;    !  Offset to auxiliary driver name 
macro BQO$L_UMR_DIS = 36,0,32,0 %;      !  UNIBUS Map Registers to disable 
macro BQO$L_UCODE = 40,0,32,0 %;        !  Absolute address of booting microcode 
macro BQO$L_UNIT_DISC = 44,0,32,0 %;    !  Unit disconnecting entry
macro BQO$L_DEVNAME = 48,0,32,0 %;      !  Offset to boot device name
macro BQO$L_UMR_TMPL = 52,0,32,0 %;     !  UNIBUS map register template
macro BQO$B_UMR_DP = 56,0,8,0 %;        !  UNIBUS map register data path
macro BQO$B_CPUTYPE = 57,0,8,0 %;       !  Cpu type from SID
macro BQO$L_CPUDATA = 58,0,32,0 %;      !  Cpu data from SID
macro BQO$L_TENUSEC = 62,0,32,0 %;      !  TIMEDWAIT loop delay counter
macro BQO$L_UBDELAY = 66,0,32,0 %;      !  TIMEDWAIT loop delay counter
macro BQO$W_RSVDW = 70,0,16,0 %;        !  reserved word to put
!  back on longword boundary
macro BQO$L_UMR_PHY = 72,0,32,0 %;      !  phy. addr of BDA map reg.
macro BQO$L_UMR_VIR = 76,0,32,0 %;      !  vir. addr of BDA map reg.
macro BQO$L_AUXDRLIST = 80,0,32,0 %;    !  Offset to auxiliary driver list
 
!*** MODULE $BRKTDEF ***
! 
!  +
!  
!   Structure of breakthru message descriptor block.
!  
!  -
literal BRK$M_LOCKED = 1;
literal BRK$M_DONE = 2;
literal BRK$M_CHKPRIV = 4;
literal BRK$C_LENGTH = 142;
literal brk2$C_LENGTH = 14;
literal S_$BRKTDEF = 142;
macro BRKTHRU_OVERLAY = 0,0,0,0 %;      !  set up overlay
macro BRKTHRU_1 = 0,0,0,0 %;
literal BRK$S_BRKTHRU_1 = 142;
!  
!   Common Storage
!   
macro BRK$Q_PRIVS = 0,0,0,0 %;
literal BRK$S_PRIVS = 8;                !   privs to set
macro BRK$W_SIZE = 8,0,16,0 %;          !   block size
macro BRK$W_OUTCNT = 10,0,16,0 %;       !   outstanding I/O count
macro BRK$T_DEVNAME = 12,0,0,0 %;
literal BRK$S_DEVNAME = 16;             !   device name for $ASSIGN
macro BRK$L_PCB = 28,0,32,0 %;          !   Address of PCB
macro BRK$L_IOSB = 32,0,32,0 %;         !   Address of return IOSB
macro BRK$L_ASTADR = 36,0,32,0 %;       !   Address of AST routine
macro BRK$L_ASTPRM = 40,0,32,0 %;       !   Value of AST parameter
macro BRK$Q_TIMEOUT = 44,0,0,0 %;
literal BRK$S_TIMEOUT = 8;              !   Timeout value
macro BRK$L_CARCON = 52,0,32,0 %;       !   carriage control
macro BRK$L_FLAGS = 56,0,32,0 %;        !   flags
macro BRK$T_SENDNAME = 60,0,0,0 %;
literal BRK$S_SENDNAME = 16;            !   username/terminal name
macro BRK$W_SENDTYPE = 76,0,16,0 %;     !   send descriptor type
macro BRK$W_SECONDS = 78,0,16,0 %;      !   Timeout in seconds
macro BRK$L_REQID = 80,0,32,0 %;        !   send requestor ID
!  
!   miscellaneous context
!  
macro BRK$L_PIDCTX = 84,0,32,0 %;       !   Last PID in user search
macro BRK$L_UCBCTX = 88,0,32,0 %;       !   Last UCB in TTY search
macro BRK$L_DDBCTX = 92,0,32,0 %;       !   Last DDB in TTY search
macro BRK$L_QIOCTX = 96,0,32,0 %;       !   per QIO context address
macro BRK$W_EFN = 100,0,16,0 %;         !   user event flag *BYTE***?
macro BRK$B_STS = 102,0,8,0 %;          !   status flags
macro BRK$V_LOCKED = 102,0,1,0 %;       !  I/O dataabse locked
macro BRK$V_DONE = 102,1,1,0 %;         !  done looking for terminals
macro BRK$V_CHKPRIV = 102,2,1,0 %;      !  check privilege
macro BRK$B_PRVMODE = 103,0,8,0 %;      !   previous mode
macro BRK$L_SCRMSGLEN = 104,0,32,0 %;   !   screen message length
macro BRK$L_SCRMSG = 108,0,32,0 %;      !   screen message address
!  
!   status block
!   
macro BRK$W_STATUS = 112,0,16,0 %;      !   status
macro BRK$W_SUCCESSCNT = 114,0,16,0 %;  !   Success count
macro BRK$W_TIMEOUTCNT = 116,0,16,0 %;  !   Timeout count
macro BRK$W_REFUSEDCNT = 118,0,16,0 %;  !   Refused count
!  
!   start of mailbox message 
!  
macro BRK$W_TRMMSG = 120,0,16,0 %;      !   mailbox message code
macro BRK$W_TRMUNIT = 122,0,16,0 %;     !   tty unit number
macro BRK$T_TRMNAME = 124,0,0,0 %;
literal BRK$S_TRMNAME = 16;             !   terminal name
!  
!   real message starts here
!  
macro BRK$W_MSGLEN = 140,0,16,0 %;      !   length of msgbuf
macro BRK$T_MSGBUF = 142,0,0,0 %;       !   start of message    
! 
!  Length
! 
macro BRKTHRU_2 = 0,0,0,0 %;
literal brk2$S_BRKTHRU_2 = 14;
!  
!   Per QIO storage
!  
macro brk2$L_COMMON = 0,0,32,0 %;       !   address of common area
macro brk2$Q_IOSB = 4,0,0,0 %;
literal brk2$S_IOSB = 8;                !   iosb for QIO
macro brk2$W_CHAN = 12,0,16,0 %;        !   channel
! 
!  Length of Per QIO context
! 
 
!*** MODULE $BTDDEF ***
! +
! 
!  Boot device codes
! 
! -
!  "$K_" added, 8/30/79, CHP
literal BTD$K_MB = 0;                   !  Massbus device
!  Types 1-31. reserved for
!   Unibus(Qbus) devices
literal BTD$K_DM = 1;                   !  RK06/7
literal BTD$K_DL = 2;                   !  RL02
literal BTD$K_DQ = 3;                   !  RB02/RB80
literal BTD$K_PROM = 8;                 !  PROM (not copied)
literal BTD$K_PROM_COPY = 9;            !  PROM copied (Mayflower)
literal BTD$K_UDA = 17;                 !  UDA
literal BTD$K_TK50 = 18;                !  TK50 (MAYA)
literal BTD$K_KFQSA = 19;               !  KFQSA
literal BTD$K_QBUS_SCSI = 20;           !  Qbus SCSI adapter
!  End of Unibus(Qbus) devices
literal BTD$K_HSCCI = 32;               !  HSC on CI
literal BTD$K_BDA = 33;                 !  BI disk adapter
literal BTD$K_BVPSSP = 34;              !  BVP Storage Systems ports
literal BTD$K_AIE_TK50 = 35;            !  AIE/TK50 port
literal BTD$k_ST506_DISK = 36;          !  ST506 disk (PVAX/VAXstar)
literal BTD$K_KA410_DISK = 36;          !  VAXstar ST506 disk
literal BTD$K_KA420_DISK = 36;          !  PVAX ST506 disk
literal BTD$K_SCSI_5380_TAPE = 37;      !  NCR 5380 SCSI tape (PVAX/VAXstar)
literal BTD$K_KA410_TAPE = 37;          !  VAXstar SCSI tape
literal BTD$K_KA420_TAPE = 37;          !  PVAX SCSI tape
literal BTD$K_DISK9 = 38;               !  Disk on 009
literal BTD$K_SII = 39;                 !  Embedded DSSI controller
literal BTD$K_SHAC = 41;                !  Single chip DSSI adapter.
literal BTD$K_SCSI_5380_DISK = 42;      !  NCR 5380 SCSI disk (PVAX)
literal BTD$K_HSX = 43;
literal BTD$K_KDM70 = 43;
literal BTD$K_HSXTAPE = 44;
literal BTD$K_KDM70TAPE = 44;
literal BTD$K_SWIFT = 45;               !  Another embedded DSSI controller-CIRRUS
literal BTD$K_SCSI_53C94_DISK = 46;
literal BTD$K_SCSI_53C94_TAPE = 47;
literal BTD$K_CONSOLE = 64;             !  Console block storage device
!  Network boot devices (96-103)
literal BTD$K_NET_DLL = 96;             !  Start of network boot devices
!   Codes 96-127 reserved
literal BTD$K_QNA = 96;                 !  DEQNA
literal BTD$K_UNA = 97;                 !  DEUNA
literal BTD$K_AIE_NI = 98;              !  AIE/NI
literal BTD$K_LANCE = 99;               !  LANCE NI chip
literal BTD$K_KA410_NI = 99;            !  VAXstar NI (LANCE chip)
literal BTD$K_KA420_NI = 99;            !  PVAX NI (LANCE chip)
literal BTD$K_SGEC = 100;               !  SGEC chip
literal BTD$K_SERVER_DEBNA = 101;
literal BTD$K_SERVER_DEBNI = 102;
literal BTD$K_SERVER_XNA = 103;
literal BTD$K_DEBNI = 104;              !  DEBNI
literal BTD$K_DEMNA = 105;              !  DEMNA
literal BTD$K_KA520_NI = 106;           !  CIRRUS NI
literal BTD$K_NISCS = 128;              !  SCS disk over NI
 
!*** MODULE $BUADEF ***
! +
!  BI Bus UNIBUS Adapter Register Offset Definitions
! -
literal BUA$M_UBPUP = 1;
literal BUA$M_ONE = 32768;
literal BUA$M_REGDMP = 65536;
literal BUA$M_UPI = 131072;
literal BUA$M_EIE = 1048576;
literal BUA$M_PARDIS = 2097152;
literal BUA$M_BADBDP = 16777216;
literal BUA$M_IMR = 33554432;
literal BUA$M_UIE = 67108864;
literal BUA$M_USSTO = 134217728;
literal BUA$M_BIF = 268435456;
literal BUA$M_BADPARITY = 536870912;
literal BUA$M_ERR = -2147483648;
literal BUA$M_PURGE = 1;
literal BUA$M_MAP_BO = 33554432;
literal BUA$M_LWAEN = 67108864;
literal BUA$M_PPIE = 1073741824;
literal BUA$M_MAP_VALID = -2147483648;
literal BUA$C_MAXDP = 5;                ! MAXIMUM DATAPATH ! 
literal BUA$S_BUADEF = 4032;
macro BUA$L_GPR0 = 240,0,32,0 %;
macro BUA$V_UBPUP = 240,0,1,0 %;        !  UNIBUS Power Up (RO)
macro BUA$V_IEN_COPY = 240,16,16,0 %;
literal BUA$S_IEN_COPY = 16;            !  Internal Error Number copied
!   here from BUACSR.
!   is 720 (Hex)
!  This register holds the error summaries and error interrupt enable for BUA.
macro BUA$L_CSR = 1824,0,32,0 %;        !  Control and Status Register
macro BUA$V_IEN = 1824,0,8,0 %;
literal BUA$S_IEN = 8;                  !  Instruction Error Number (RO)
!   Self Test failure code
macro BUA$V_ONE = 1824,15,1,0 %;        !  RO bit that is always read as one.
!   If bit is zero, this implies that
!   we have lost UNIBUS power.
macro BUA$V_REGDMP = 1824,16,1,0 %;     !  uDiagnostic Register Dump bit.  (WO)
!   When 1 is written, causes uEngine to
!   dump stored internal registers.
macro BUA$V_UPI = 1824,17,1,0 %;        !  UNIBUS Power Initialization bit. (WO)
!   When 1 written, causes power up init
!   on UNIBUS.
macro BUA$V_EIE = 1824,20,1,0 %;        !  BUA Error Interrupt Enable (R/W)
macro BUA$V_PARDIS = 1824,21,1,0 %;     !  BUA PARity Disable. When a ONE is
!   written to this bit, the BUA will
!   not generate any parity while
!   writing its internal RAM. For
!   diagnostic use.
macro BUA$V_BADBDP = 1824,24,1,0 %;     !  Bit set if BDP 6 or 7 selected (W1C).
macro BUA$V_IMR = 1824,25,1,0 %;        !  Invalid Map Register (W1C)
macro BUA$V_UIE = 1824,26,1,0 %;        !  Bit set if DATO(B) does not follow
!   DATIP on UNIBUS (W1C)
macro BUA$V_USSTO = 1824,27,1,0 %;      !  UNIBUS SSYNC timeout (W1C)
macro BUA$V_BIF = 1824,28,1,0 %;        !  UNIBUS to BI failure (W1C)
macro BUA$V_BADPARITY = 1824,29,1,0 %;  !  This bit is set if the BUA found a
!   parity error during reading of its
!   internal RAM.
macro BUA$V_ERR = 1824,31,1,0 %;        !  Logical OR of error bits in CSR (RO)
!  BUA Vector Offset Register - BITS [13:09] of the VOR register are
!   concatenated with the incoming UNIBUS vector to form a 14 bit BI vector.
macro BUA$L_VOR = 1828,0,32,0 %;        !  Vector Offset Register
macro BUA$V_VECOFF = 1828,9,5,0 %;
literal BUA$S_VECOFF = 5;               !  Vector Offset (R/W)
!  Failed UNIBUS Address Register (FUBAR)
macro BUA$L_FUBAR = 1832,0,32,0 %;      !  Failed UNIBUS Address Register
macro BUA$V_FUBAR_ADR = 1832,0,16,0 %;
literal BUA$S_FUBAR_ADR = 16;           !  Failed UNIBUS Address (Hi 16 bits)
macro BUA$L_BIFAR = 1836,0,32,0 %;      !  BI Failed Address Register
macro BUA$L_BDP1 = 1840,0,32,0 %;       !  BDP1
macro BUA$V_STATUS = 1840,0,16,0 %;
literal BUA$S_STATUS = 16;              !  Bit for each byte
macro BUA$V_ADDR = 1840,16,16,0 %;
literal BUA$S_ADDR = 16;                !  UNIBUS addr of octaword
macro BUA$L_BDP2 = 1844,0,32,0 %;       !  BDP2
macro BUA$L_BDP3 = 1848,0,32,0 %;       !  BDP3
macro BUA$L_BDP4 = 1852,0,32,0 %;       !  BDP4
macro BUA$L_BDP5 = 1856,0,32,0 %;       !  BDP5
macro BUA$L_DPCSR0 = 1872,0,32,0 %;     !  Datapath 0 CSR
macro BUA$V_PURGE = 1872,0,1,0 %;       !  Purge (WO) bit
macro BUA$V_DPSEL = 1872,21,3,0 %;
literal BUA$S_DPSEL = 3;                !  Data Path #
macro BUA$L_DPCSR1 = 1876,0,32,0 %;     !  Datapath 1 CSR
macro BUA$L_DPCSR2 = 1880,0,32,0 %;     !  Datapath 2 CSR
macro BUA$L_DPCSR3 = 1884,0,32,0 %;     !  Datapath 3 CSR
macro BUA$L_DPCSR4 = 1888,0,32,0 %;     !  Datapath 4 CSR
macro BUA$L_DPCSR5 = 1892,0,32,0 %;     !  Datapath 5 CSR
macro BUA$L_MAP = 2048,0,0,0 %;
literal BUA$S_MAP = 1984;               !  Map Registers
macro BUA$V_MAP_ADDR = 2048,0,21,0 %;
literal BUA$S_MAP_ADDR = 21;            !  PFN
macro BUA$V_MAP_DPD = 2048,21,3,0 %;
literal BUA$S_MAP_DPD = 3;              !  Datapath Designator
macro BUA$V_MAP_BO = 2048,25,1,0 %;     !  Byte Offset
macro BUA$V_LWAEN = 2048,26,1,0 %;      !  Long Word Access Enable
macro BUA$V_PPIE = 2048,30,1,0 %;       !  Reserved for use on BUA's
!   with PDP-11 on UNIBUS.
macro BUA$V_MAP_VALID = 2048,31,1,0 %;  !  Map Register Valid
 
!*** MODULE $BVPDEF ***
! +
!  BI VAX Port Register Definitions
! -
literal BVP$M_CTRL_INSTR = 127;
literal BVP$C_CTR_NULL = 0;             !  Null Command
literal BVP$C_CTR_INIT = 1;             !  Initialize Port
!   Data contains high 24 bits
literal BVP$C_CTR_ENABLE = 2;           !  Enable Queue Processing
literal BVP$C_CTR_PIV = 3;              !  Read Vector (PIV)
literal BVP$C_CTR_SHUT = 4;             !  Port Shutdown
literal BVP$C_CTR_MAINT = 5;            !  Enter Maintenance State
literal BVP$C_CTR_CMDQ = 6;             !  Command queue non-empty
!   Data contains the command
literal BVP$C_CTR_FREQ = 7;             !  Free queue non-empty
!   Data contains the free
literal BVP$C_CTR_STATUS = 8;           !  Port status queery
literal BVP$C_CTR_ENSOFT = 9;           !  Enable soft error reports
literal BVP$C_CTR_DSSOFT = 10;          !  Disable soft error reports
literal BVP$C_CTR_START = 11;           !  Restart the port
! 
literal BVP$C_CTR_ADADDR = 26;          !  Load adapter memory address
!  register from port data reg.
literal BVP$C_CTR_BIADDR = 27;          !  Load BI memory address
!  register from port data reg.
literal BVP$C_CTR_READ = 28;            !  Read adapter memory into
!  BI memory
literal BVP$C_CTR_WRITE = 29;           !  Copy BI memory into adapter
!  memory
literal BVP$M_CTRL_OWNER = 128;
literal BVP$M_CTRL_DATA = -256;
literal BVP$M_STAT_SUME = 64;
literal BVP$M_STAT_RSQ = 128;
literal BVP$M_STAT_ETYPE = 65280;
literal BVP$C_TYP_TRANS = 1;            !  Transient BI error
literal BVP$C_TYP_ADAPT = 2;            !  Adapter-wide fatal error
literal BVP$C_TYP_RECVBI = 3;           !  Non-fatal BI error
literal BVP$C_TYP_FATLBI = 4;           !  Fatal BI error
literal BVP$C_TYP_DSE = 5;              !  Data structure error
literal BVP$C_TYP_PLE = 6;              !  Port Logical Error
literal BVP$C_TYP_ADPHD = 7;            !  Adapter hard error
literal BVP$M_STAT_PST = 458752;
literal BVP$C_STA_UNDEF = 1;            !  Undefined
literal BVP$C_STA_INIT = 2;             !  Initialized
literal BVP$C_STA_ENAB = 4;             !  Enabled
literal BVP$C_STA_STOP = 6;             !  Stopped
literal BVP$C_STA_MAINT = 7;            !  Maintenance
literal BVP$C_STA_TEST = 8;             !  Adapter is in self test
literal BVP$C_STA_UNKN = 9;             !  Adapter halted with BI STOP
literal BVP$M_STAT_FQE = 33554432;
literal BVP$M_STAT_ERL = 67108864;
literal BVP$M_STAT_XSTP = 134217728;
literal BVP$M_STAT_ACC = 268435456;
literal BVP$M_STAT_STD = 536870912;
literal BVP$M_STAT_RSPQ = 1073741824;
literal BVP$M_STAT_OWNER = -2147483648;
literal BVP$M_ERROR_CODE = 16777215;
literal BVP$C_ER_ADPHD = 1;             !  Adapter hardware failure
literal BVP$C_ER_BUGCHK = 2;            !  Adapter bugcheck
literal BVP$C_ER_MIN_ST = 3;            !  Failed minimal self test
literal BVP$C_ER_BI_ST = 4;             !  Failed BI self test
literal BVP$C_ER_EXT_ST = 5;            !  Failed extended self-test
literal BVP$C_ER_UCLOAD = 6;            !  Failed microcode load
literal BVP$C_ER_NOUCOD = 7;            !  Microcode not loaded
literal BVP$C_ER_IN_PQB = 8;            !  Invalid PQB contents
literal BVP$C_ER_QRETRY = 9;            !  Queue retry failure
literal BVP$C_ER_BADQOF = 10;           !  Bad queue offset
literal BVP$C_ER_BADINS = 11;           !  Bad port instruction
literal BVP$C_ER_ILLINS = 12;           !  Bad state for port instr.
literal BVP$C_ER_OWNTMO = 13;           !  Ownership timeout
literal BVP$C_ER_HWTMO = 14;            !  Host inactivity timeout
literal BVP$C_ER_FRQE = 15;             !  Free queue exhausted
literal BVP$C_ER_MAINT = 16;            !  Failed to enter MAINT state
literal BVP$C_ER_INIT = 17;             !  Failed to enter INIT state
literal BVP$C_ER_ENABL = 18;            !  Failed to enter ENABLED state
literal BVP$C_ER_BDTKEY = 19;           !  BDT key mismatch
literal BVP$C_ER_BDTSIZ = 20;           !  BDT size too small
literal BVP$C_ER_BDTACC = 21;           !  BDT access check violation
literal BVP$C_ER_BDTPTE = 22;           !  Bad PTE entry
literal BVP$C_ER_BDTIND = 23;           !  BDT index out of range	
literal BVP$M_ERROR_PORT = -16777216;
literal BVP$C_REGDMPLEN = 40;           !  Size of register dump area of error log
literal BVP$S_BVPDEF = 20;
macro BVP$L_CTRL = 0,0,32,0 %;          !  Port Control Register
macro BVP$V_CTRL_INSTR = 0,0,7,0 %;
literal BVP$S_CTRL_INSTR = 7;           !  Port Instruction
!   of the physical PQB address
!   queue number
!   queue number
! 	Port Maintenance Instructions
! 
!  Data field contains byte count
!  Port data reg has progress cnt
!  Data field contains byte count
!  Port data reg has progress cnt
macro BVP$V_CTRL_OWNER = 0,7,1,0 %;     !  Ownership Bit (Set by host, cleared by adapter)
macro BVP$V_CTRL_DATA = 0,8,24,0 %;
literal BVP$S_CTRL_DATA = 24;           !  Instruction-specific data
macro BVP$L_STAT = 4,0,32,0 %;          !  Port Status Register
macro BVP$V_STAT_SUME = 4,6,1,0 %;      !  Summary error bit
macro BVP$V_STAT_RSQ = 4,7,1,0 %;       !  Response queue non-empty
macro BVP$V_STAT_ETYPE = 4,8,8,0 %;
literal BVP$S_STAT_ETYPE = 8;           !  Error Type
macro BVP$V_STAT_PST = 4,16,3,0 %;
literal BVP$S_STAT_PST = 3;             !  Port State
macro BVP$V_STAT_FQE = 4,25,1,0 %;      !  Free queue empty
macro BVP$V_STAT_ERL = 4,26,1,0 %;      !  Error Lost
macro BVP$V_STAT_XSTP = 4,27,1,0 %;     !  Extended self test passed
macro BVP$V_STAT_ACC = 4,28,1,0 %;      !  Adapter can communicate
macro BVP$V_STAT_STD = 4,29,1,0 %;      !  Self test done
macro BVP$V_STAT_RSPQ = 4,30,1,0 %;     !  Response to status query
macro BVP$V_STAT_OWNER = 4,31,1,0 %;    !  Ownership bit (Set by adapter, cleared by host)
macro BVP$L_ERROR = 8,0,32,0 %;         !  Port Error Register
macro BVP$V_ERROR_CODE = 8,0,24,0 %;
literal BVP$S_ERROR_CODE = 24;          !  Error Code
macro BVP$V_ERROR_PORT = 8,24,8,0 %;
literal BVP$S_ERROR_PORT = 8;           !  Port number
macro BVP$L_DATA = 12,0,32,0 %;         !  Port Data Register
macro BVP$L_STATE = 16,0,32,0 %;        !  BVP port state (See PST bit definitions)
 
!*** MODULE $CADEF ***
! +
!  CONDITIONAL ASSEMBLY PARAMETER DEFINITIONS
! 
!         A NONZERO PARAMETER VALUE INDICATES PRESENCE OF THE FEATURE.
!         A ZERO PARAMETER VALUE INDICATES ABSENCE OF THE FEATURE
! 
!         ALL PARAMETERS MUST BE DEFINED
! -
literal CA$_SIMULATOR = 1;              ! INCLUDE SIMULATOR SUPPORT CODE 
literal CA$_MEASURE = 2;                ! INCLUDE PERFORMANCE MEASUREMENT HOOKS 
literal CA$_MEASURE_IOT = 4;            ! INCLUDE I/O TRANSACTION DATA COLLECTION 
 
!*** MODULE $CANDEF ***
! +
!  CAN - DEFINE DRIVER CANCEL ROUTINE REASON CODES
! 
!  THESE CODES ARE PASSED TO THE CANCEL ROUTINE OF A DRIVER SO THAT
!  THE ROUTINE CAN DISTINGUISH BETWEEN CALLS FROM $DASSGN AND $CANCEL.
! 
! -
literal CAN$C_CANCEL = 0;               ! CANCEL INVOKED DUE TO $CANCEL SERVICE 
literal CAN$C_DASSGN = 1;               ! CANCEL INVOKED DUE TO $DASSGN SERVICE 
literal CAN$C_AMBXDGN = 2;              ! CANCEL INVOKED DUE TO MB DISASSOCIATION
 
!*** MODULE $CDRPDEF ***
! +
!  CDRP - CLASS DRIVER I/O REQUEST PACKET
! 
!  This structure contains within it, at negative offsets, a full IRP.
!  For this reason all IRP fields must be at the same relative offsets
!  as the corresponding fields in the IRP.
! 
! -
literal CDRP$K_CDRPBASE = 0;
literal CDRP$C_CDRPBASE = 0;
literal CDRP$K_LENGTH = 44;
literal CDRP$C_LENGTH = 44;
! 	CDRP extensions
literal CDRP$K_BT_LEN = 64;
literal CDRP$C_BT_LEN = 64;
literal CDRP$M_CAND = 1;
literal CDRP$M_CANIO = 2;
literal CDRP$M_ERLIP = 4;
literal CDRP$M_PERM = 8;
literal CDRP$M_HIRT = 16;
literal CDRP$M_DENSCK = 32;
literal CDRP$M_CONNWALK = 64;
literal CDRP$M_COPYSHAD = 128;
literal CDRP$M_IVCMD = 256;
literal CDRP$M_WALK_2P = 512;
literal CDRP$M_LOC_ONLY = 1024;
literal CDRP$M_LOADBAL = 2048;
literal CDRP$K_CD_LEN = 72;
literal CDRP$C_CD_LEN = 72;
literal CDRP$K_NORMAL = 0;              !  The standard case (particulary no block xfer)
literal CDRP$K_REQUESTOR = 1;           !  Block transfer requestor
literal CDRP$K_PARTNER = 2;             !  Block transfer partner, active
literal CDRP$K_PART_IDLE = 3;           !  Block transfer partner, idle
literal CDRP$K_REQ_MAP = 4;             !  Block transfer requestor, waiting for buffer handle
literal CDRP$K_PART_MAP = 5;            !  Block transfer partner, waiting for buffer handle
literal CDRP$K_CM_LENGTH = 104;
! 
literal CDRP$K_CM_LONG_LENGTH = 104;
literal CDRP$S_CDRPDEF = 200;
macro CDRP$L_IOQFL = -96,0,32,0 %;      ! I/O QUEUE FORWARD LINK 
macro CDRP$L_IOQBL = -92,0,32,0 %;      ! I/O QUEUE BACKWARD LINK 
macro CDRP$W_IRP_SIZE = -88,0,16,0 %;   ! SIZE OF IRP IN BYTES 
macro CDRP$B_IRP_TYPE = -86,0,8,0 %;    ! STRUCTURE TYPE FOR IRP 
macro CDRP$B_RMOD = -85,0,8,0 %;        ! ACCESS MODE OF REQUEST 
macro CDRP$L_PID = -84,0,32,0 %;        ! PROCESS ID OF REQUESTING PROCESS 
macro CDRP$L_AST = -80,0,32,0 %;        ! ADDRESS OF AST ROUTINE 
macro CDRP$L_ASTPRM = -76,0,32,0 %;     ! AST PARAMETER 
macro CDRP$L_WIND = -72,0,32,0 %;       ! ADDRESS OF WINDOW BLOCK 
macro CDRP$L_UCB = -68,0,32,0 %;        ! ADDRESS OF DEVICE UCB 
macro CDRP$W_FUNC = -64,0,16,0 %;       ! I/O FUNCTION CODE AND MODIFIERS 
macro CDRP$B_EFN = -62,0,8,0 %;         ! EVENT FLAG NUMBER AND EVENT GROUP 
macro CDRP$B_PRI = -61,0,8,0 %;         ! BASE PRIORITY OF REQUESTING PROCESS 
macro CDRP$L_IOSB = -60,0,32,0 %;       ! ADDRESS OF I/O STATUS DOUBLE LONGWORD 
macro CDRP$W_CHAN = -56,0,16,0 %;       ! PROCESS I/O CHANNEL NUMBER 
macro CDRP$W_STS = -54,0,16,0 %;        ! REQUEST STATUS 
macro CDRP$L_SVAPTE = -52,0,32,0 %;     ! SYSTEM VIRTUAL ADDRESS OF FIRST PTE 
macro CDRP$W_BOFF = -48,0,16,0 %;       ! BYTE OFFSET IN FIRST PAGE 
macro CDRP$L_BCNT = -46,0,32,0 %;       ! BYTE COUNT OF TRANSFER 
macro CDRP$W_BCNT = -46,0,16,0 %;       !  OLD WORD DEFINITION FOR COMPATIBILITY 
macro CDRP$L_IOST1 = -40,0,32,0 %;      ! FIRST I/O STATUS LONGWORD (FOR I/O POST) 
macro CDRP$L_MEDIA = -40,0,32,0 %;      ! MEDIA ADDRESS 
macro CDRP$L_IOST2 = -36,0,32,0 %;      ! SECOND I/O STATUS LONGWORD 
macro CDRP$L_TT_TERM = -36,0,32,0 %;    ! ADDRESS OF READ TERMINATORS MASK 
macro CDRP$B_CARCON = -36,0,8,0 %;      ! CARRIAGE CONTROL 
macro CDRP$Q_NT_PRVMSK = -32,0,0,0 %;
literal CDRP$S_NT_PRVMSK = 8;           !  PRIVILEGE MASK FOR DECNET 
macro CDRP$L_ABCNT = -32,0,32,0 %;      !  ACCUMULATED BYTES TRANSFERED 
macro CDRP$R_ABCNT_OVERLAY1 = -32,0,16,0 %;
macro CDRP$W_ABCNT = -32,0,16,0 %;      !  OLD WORD DEFINITION FOR COMPATIBILITY 
macro CDRP$W_TT_PRMPT = -32,0,16,0 %;   !  PROMPT SIZE 
macro CDRP$L_OBCNT = -28,0,32,0 %;      !  ORIGINAL TRANSFER BYTE COUNT 
macro CDRP$W_OBCNT = -28,0,16,0 %;      !  OLD WORD DEFINITION FOR COMPATIBILITY 
macro CDRP$L_SEGVBN = -24,0,32,0 %;     !  VIRTUAL BLOCK NUMBER OF CURRENT SEGMENT 
macro CDRP$L_DIAGBUF = -20,0,32,0 %;    !  DIAGNOSTIC BUFFER ADDRESS 
macro CDRP$L_SEQNUM = -16,0,32,0 %;     !  SEQUENCE NUMBER 
macro CDRP$L_EXTEND = -12,0,32,0 %;     !  ADDRESS OF IRPE 
macro CDRP$L_ARB = -8,0,32,0 %;         !  ACCESS RIGHTS BLOCK ADDRESS 
macro CDRP$L_KEYDESC = -4,0,32,0 %;     !  ADDRESS OF ENCRYPTION KEY DESCRIPTOR
! 
! 
macro CDRP$L_FQFL = 0,0,32,0 %;         !  Fork Queue FLINK 
macro CDRP$L_FQBL = 4,0,32,0 %;         !  Fork Queue Blink 
macro CDRP$W_CDRPSIZE = 8,0,16,0 %;     !  Size field for positive section only 
macro CDRP$B_CD_TYPE = 10,0,8,0 %;      !  Type, always of interest 
macro CDRP$B_FLCK = 11,0,8,0 %;         !  Fork lock
macro CDRP$B_FIPL = 11,0,8,0 %;         !  Fork IPL
macro CDRP$L_FPC = 12,0,32,0 %;         !  Fork PC 
macro CDRP$L_FR3 = 16,0,32,0 %;         !  Fork R3 
macro CDRP$L_FR4 = 20,0,32,0 %;         !  Fork R4 
macro CDRP$L_SAVD_RTN = 24,0,32,0 %;    !  Saved return address from level 1 JSB 
macro CDRP$L_MSG_BUF = 28,0,32,0 %;     !  Address of allocated MSCP buffer 
macro CDRP$L_RSPID = 32,0,32,0 %;       !  Allocated Request ID 
macro CDRP$L_CDT = 36,0,32,0 %;         !  Address of Connection Descriptor Table 
macro CDRP$L_RWCPTR = 40,0,32,0 %;      !  RWAITCNT pointer 
! 	Block Transfer Extension
macro CDRP$L_LBUFH_AD = 44,0,32,0 %;    !  Local BUFfer Handle ADress 
macro CDRP$L_LBOFF = 48,0,32,0 %;       !  Local Byte OFFset 
macro CDRP$L_RBUFH_AD = 52,0,32,0 %;    !  Remote BUFfer Handle ADress 
macro CDRP$L_RBOFF = 56,0,32,0 %;       !  Remote Byte OFFset 
macro CDRP$L_XCT_LEN = 60,0,32,0 %;     !  Transfer length in bytes 
! 	Class Driver Extension
macro CDRP$T_LBUFHNDL = 48,0,0,0 %;
literal CDRP$S_LBUFHNDL = 12;           !  Local buffer handle 
macro CDRP$L_UBARSRCE = 60,0,32,0 %;    !  UNIBUS mapping resources allocated 
macro CDRP$L_DUTUFLAGS = 64,0,32,0 %;   !  Class driver status flags:
macro CDRP$V_CAND = 64,0,1,0 %;         !   canceled I/O request
macro CDRP$V_CANIO = 64,1,1,0 %;        !   cancel operation I/O request
macro CDRP$V_ERLIP = 64,2,1,0 %;        !   error log in progress
macro CDRP$V_PERM = 64,3,1,0 %;         !   CDDB permanent IRP/CDRP
macro CDRP$V_HIRT = 64,4,1,0 %;         !   HIRT permanent IRP/CDRP
macro CDRP$V_DENSCK = 64,5,1,0 %;       !   Tape density check required
macro CDRP$V_CONNWALK = 64,6,1,0 %;     !   Thread walking connections
macro CDRP$V_COPYSHAD = 64,7,1,0 %;     !   CDRP represents an active IO$_COPYSHAD
macro CDRP$V_IVCMD = 64,8,1,0 %;        !   Invalid command processing in progress
macro CDRP$V_WALK_2P = 64,9,1,0 %;      !   Thread trying secondary path before walking other connections
macro CDRP$V_LOC_ONLY = 64,10,1,0 %;    !   VMS MSCPservers are to be ignored during this connection walk
macro CDRP$V_LOADBAL = 64,11,1,0 %;     !   A load balancing pass of connection walking is active
macro CDRP$W_DUTUCNTR = 68,0,16,0 %;    !  General purpose counter
macro CDRP$W_ENDMSGSIZ = 70,0,16,0 %;   !  Size of most recent MSCP end message
! 	Connection management extension
macro CDRP$L_VAL1 = 44,0,32,0 %;        !  data value 1
macro CDRP$L_VAL2 = 48,0,32,0 %;        !  data value 2
macro CDRP$L_VAL3 = 52,0,32,0 %;        !  data value 3
macro CDRP$L_VAL4 = 56,0,32,0 %;        !  data value 4
macro CDRP$L_VAL5 = 60,0,32,0 %;        !  data value 5
macro CDRP$L_VAL6 = 64,0,32,0 %;        !  data value 6
macro CDRP$L_VAL7 = 68,0,32,0 %;        !  data value 7
macro CDRP$L_VAL8 = 72,0,32,0 %;        !  data value 8
macro CDRP$L_FILL_VAL = 48,0,0,1 %;
literal CDRP$S_FILL_VAL = 16;
macro CDRP$L_CNXSVAPTE = 64,0,32,0 %;   !  Block SVAPTE
macro CDRP$W_CNXBOFF = 68,0,16,0 %;     !  Block buffer offset
macro CDRP$L_CNXBCNT = 70,0,32,0 %;     !  Block xfer length
macro CDRP$B_CNXRMOD = 74,0,8,0 %;      !  Block access mode
macro CDRP$B_CLTSTS = 75,0,8,0 %;       !  A client's status field
macro CDRP$L_MSGBLD = 76,0,32,0 %;      !  Address of MSG BUILD routine
macro CDRP$L_SAVEPC = 80,0,32,0 %;      !  Caller's saved PC
macro CDRP$W_SENDSEQNM = 84,0,16,0 %;   !  Message sequence number
macro CDRP$B_CNXSTATE = 86,0,8,0 %;     !  CNX message state
!  Possible states:
macro CDRP$L_RETRSPID = 88,0,32,0 %;    !  RSPID to return
macro CDRP$L_VAL9 = 92,0,32,0 %;        !  data value 9
macro CDRP$L_VAL10 = 96,0,32,0 %;       !  data value 10
macro CDRP$L_VAL11 = 100,0,32,0 %;      !  data value 11
!  The following fields are only valid
!  for long connection manager CDRPs.
! 
 
!*** MODULE $CINDEF ***
! +
! 
!  Connect to interrupt definitions for QIO parameters
! 
! -
literal CIN$M_EFN = 1;
literal CIN$M_USECAL = 2;
literal CIN$M_REPEAT = 4;
literal CIN$M_AST = 8;
literal CIN$M_INIDEV = 16;
literal CIN$M_START = 32;
literal CIN$M_ISR = 64;
literal CIN$M_CANCEL = 128;
literal CIN$M_EFNUM = -65536;
literal CIN$S_CINDEF = 4;
macro CIN$V_EFN = 0,0,1,0 %;            !  Set event flag on interrupt. 
macro CIN$V_USECAL = 0,1,1,0 %;         !  Use CALL interface. 
macro CIN$V_REPEAT = 0,2,1,0 %;         !  Do repeated interrupt service. 
macro CIN$V_AST = 0,3,1,0 %;            !  Queue AST on interrupt. 
macro CIN$V_INIDEV = 0,4,1,0 %;         !  Device initialization to do. 
macro CIN$V_START = 0,5,1,0 %;          !  Start I/O routine. 
macro CIN$V_ISR = 0,6,1,0 %;            !  ISR to execute. 
macro CIN$V_CANCEL = 0,7,1,0 %;         !  Cancel I/O routine. 
macro CIN$V_EFNUM = 0,16,16,0 %;
literal CIN$S_EFNUM = 16;               !  Event flag number. 
literal CIN$S_CINDEF1 = 16;
macro CIN$L_INIDEV = 0,0,32,0 %;        !  Offset to device init routine. 
macro CIN$L_START = 4,0,32,0 %;         !  Offset to start device routine. 
macro CIN$L_ISR = 8,0,32,0 %;           !  Offset to interrupt service routine. 
macro CIN$L_CANCEL = 12,0,32,0 %;       !  Offset to cancel I/O routine. 
literal CIN$S_CINDEF2 = 8;
macro CIN$L_SPTCOUNT = 0,0,32,0 %;      !  Number of SPTs allocated. 
macro CIN$L_STARTVPN = 4,0,32,0 %;      !  Starting VPN allocated. 
macro CIN$L_STARTBIT = 4,0,32,0 %;      !  Starting bit in bitmap. 
 
!*** MODULE $CCADEF ***
literal CCA$k_revision = 3;
literal CCA$M_BOOTIP = 1;
literal CCA$M_USE_ICACHE = 2;
literal CCA$M_USE_ECACHE = 4;
literal CCA$M_ECACHE_CLEARABLE = 8;
literal CCA$M_REBOOT = 16;
literal CCA$M_RBOOTIP = 1;
literal CCA$M_USE_PCACHE = 2;
literal CCA$M_USE_BCACHE = 4;
literal CCA$M_BCACHE_CLEARABLE = 8;
literal CCA$M_RREBOOT = 16;
literal CCA$M_REPROMPT = 32;
literal CCA$M_CON_REBOOT = 64;
literal CCA$K_HEADER_SZ = 512;          !  Size of the header
literal CCA$R_BUFFER0 = 512;            !  Offset to the first buffer
literal CCA$S_CCADEF = 512;
!   The CCA header page
macro CCA$L_BASE = 0,0,32,0 %;          !  Physical address of the base of CCA 
macro CCA$W_SIZE = 4,0,16,0 %;          !  Size in bytes of CCA
macro CCA$W_IDENT = 6,0,16,0 %;         !  Ident string 'CC'
macro CCA$B_NPROC = 8,0,8,0 %;          !  Number of supported processors
macro CCA$B_CHKSUM = 9,0,8,0 %;         !  Checksum of previous bytes
macro CCA$B_HFLAGS = 10,0,8,0 %;        !  Header flags
macro CCA$V_BOOTIP = 10,0,1,0 %;        !  Bootstrap in progress
macro CCA$V_USE_ICACHE = 10,1,1,0 %;    !  OK to turn on internal cache
macro CCA$V_USE_ECACHE = 10,2,1,0 %;    !  OK to turn on external cache
macro CCA$V_ECACHE_CLEARABLE = 10,3,1,0 %; !  External cache clear works
macro CCA$V_REBOOT = 10,4,1,0 %;        !  If set when primary enters console,
!  reboot operating system using default
!  boot device
macro CCA$V_RBOOTIP = 10,0,1,0 %;       !  Bootstrap in progress (Rigel)
macro CCA$V_USE_PCACHE = 10,1,1,0 %;    !  OK to turn on primary cache
macro CCA$V_USE_BCACHE = 10,2,1,0 %;    !  OK to turn on backup cache
macro CCA$V_BCACHE_CLEARABLE = 10,3,1,0 %; !  Backup cache clear works
macro CCA$V_RREBOOT = 10,4,1,0 %;       !  If set when primary enters console,
!  reboot operating system using default
!  boot device (Rigel)
!   The remaining flags are used internally by the console
macro CCA$V_REPROMPT = 10,5,1,0 %;      !  This flag is used when the location
!  of the primary is changed by a SET
!  CPU command.  It causes the new
!  primary to issue a console prompt.
macro CCA$V_CON_REBOOT = 10,6,1,0 %;    !  Performs the same function as
!  REBOOT, except used by secondary
!  CPU's.  Response to this bit is not
!  affected by the "Secure" keyswitch
macro CCA$B_REVISION = 11,0,8,0 %;      !  CCA Revision number
macro CCA$Q_READY = 12,0,0,0 %;
literal CCA$S_READY = 8;                !  Bitmask of processors with data
!  ready in transmit buffers
macro CCA$Q_CONSOLE = 20,0,0,0 %;
literal CCA$S_CONSOLE = 8;              !  Bitmask of processors known to be
!  in console mode
macro CCA$Q_ENABLED = 28,0,0,0 %;
literal CCA$S_ENABLED = 8;              !  Bitmask of processors enabled to 
!  leave console mode.
macro CCA$L_BITMAP_SZ = 36,0,32,0 %;    !  Size in bytes of physical memory 
!  bitmap.  Pages marked are available
!  to system software.
macro CCA$L_BITMAP = 40,0,32,0 %;       !  Address of the bitmap
macro CCA$L_BITMAP_CKSUM = 44,0,32,0 %; !  Checksum of bitmap
!  Unused on XCP
macro CCA$B_TK50_NODE = 48,0,8,0 %;     !  XMI/BI node of console TK50
macro CCA$B_SSN_PREFIX = 49,0,16,1 %;
literal CCA$S_SSN_PREFIX = 2;           !  System Serial number prefix 
macro CCA$B_PRIMARY = 51,0,8,0 %;       !  XMI node-id of primary CPU
macro CCA$Q_SECSTART = 52,0,0,0 %;
literal CCA$S_SECSTART = 8;             !  OS starting secondary flags
macro CCA$Q_RESTARTIP = 60,0,0,0 %;
literal CCA$S_RESTARTIP = 8;            !  Restart in progress flags
macro CCA$B_RSRVD2 = 68,0,0,1 %;
literal CCA$S_RSRVD2 = 12;              !  unused
macro CCA$Q_USER_HALTED = 80,0,0,0 %;
literal CCA$S_USER_HALTED = 8;          !  Bitmask of processors which entered
!  console due to user intervention
macro CCA$Q_SERIALNUM = 88,0,0,0 %;
literal CCA$S_SERIALNUM = 8;            !  System serial number
!   (Expanded to quadword)
macro CCA$Q_HW_REVISION = 96,0,0,0 %;
literal CCA$S_HW_REVISION = 128;        !  Array of processor hardware revisions
macro CCA$Q_VECTOR_ENABLED = 224,0,0,0 %;
literal CCA$S_VECTOR_ENABLED = 8;       !  Bitmaks of available vectors
macro CCA$Q_VECTOR_PRESENT = 232,0,0,0 %;
literal CCA$S_VECTOR_PRESENT = 8;       !  bitmask of vectors in system
!   The layout of the hardware revision field.
!   These values are obtained from the EEPROM on the processor.
!   The CVAX, SSC, and FPU values are two nibbles with an implied "decimal"
!   point (i.e. 22 ==> 2.2).  The same holds true for the REX520 and RSSC values.
!   The module revision are the 4 ASCII characters of the module revision.
literal CCA$S_CCA_HW_REVISION = 8;
macro CCA$R_CPU_REV = 0,0,8,0 %;
literal CCA$S_CPU_REV = 1;
macro CCA$B_REX520_REV = 0,0,8,0 %;     !  The Rigel "P" chip revision
macro CCA$B_CVAX_REV = 0,0,8,0 %;       !  The CVAX revision
macro CCA$R_SUPPORT_REV = 1,0,8,0 %;
literal CCA$S_SUPPORT_REV = 1;
macro CCA$B_RSSC_REV = 1,0,8,0 %;       !  The RSSC revision
macro CCA$B_SSC_REV = 1,0,8,0 %;        !  The SSC revision
macro CCA$B_FPU_REV = 2,0,8,0 %;        !  The FPA revision
macro CCA$B_COMPAT_GROUP = 3,0,8,0 %;
macro CCA$V_COMPAT_GRP = 3,0,4,0 %;
literal CCA$S_COMPAT_GRP = 4;           !  Compatibility Group
macro CCA$V_FILL1 = 3,4,1,0 %;
macro CCA$V_FILL2 = 3,5,1,0 %;
macro CCA$V_COPR = 3,6,1,0 %;           !  Continue On Passive Release	
macro CCA$V_MDIE = 3,7,1,0 %;           !  Multi-Destination Interrupt Enable
macro CCA$L_MODULE_REV = 4,0,32,0 %;    !  The module revision
!   The layout of a buffer area
literal CCA$M_RXRDY = 1;
literal CCA$M_ZDEST = 2;
literal CCA$M_ZSRC = 4;
literal CCA$M_ZALT = 8;
literal CCA$M_ZRDY = 32768;
literal CCA$K_TXSZ = 80;
literal CCA$K_RXSZ = 80;
literal CCA$K_BUFAREA_SZ = 168;         !  Size of a buffer area
literal CCA$S_BUFFERAREA = 168;
macro CCA$B_FLAGS = 0,0,8,0 %;          !  The buffer flags
macro CCA$V_RXRDY = 0,0,1,0 %;          !  When set, there is a message in our
!  CCA$T_RX buffer
macro CCA$V_ZDEST = 0,1,1,0 %;          !  The CCA$B_ZDEST field is valid
!  (i.e. we are sending Z data)
macro CCA$V_ZSRC = 0,2,1,0 %;           !  The CCA$B_ZSRC field is valid
!  (i.e. we are receiving Z data)
macro CCA$V_ZALT = 0,3,1,0 %;           !  We are sending Z data to a node
!  requires alternate RXCD protocol
macro CCA$B_ZDEST = 1,0,8,0 %;          !  Target of our Z command
macro CCA$B_ZSRC = 2,0,8,0 %;           !  Node sending us Z data
macro CCA$B_ZNID = 3,0,8,0 %;           !  The value to use as our
!  node number in the ZRXCD
macro CCA$B_TXLEN = 4,0,8,0 %;          !  Length of data in CCA$T_TX
macro CCA$B_RXLEN = 5,0,8,0 %;          !  Length of data in CCA$T_RX
macro CCA$W_ZRXCD = 6,0,16,0 %;         !  Buffer for RXCD style communication
macro CCA$B_ZDATA = 6,0,8,0 %;          !  The data byte
macro CCA$V_ZNODE = 6,8,4,0 %;
literal CCA$S_ZNODE = 4;                !  The sending node's number
macro CCA$V_ZRDY = 6,15,1,0 %;          !  Flag that there is data and a node nr
macro CCA$T_TX = 8,0,0,0 %;
literal CCA$S_TX = 80;                  !  Transmit to primary
macro CCA$T_RX = 88,0,0,0 %;
literal CCA$S_RX = 80;                  !  Receive from primary
literal CCA$K_NPROC = 16;
 
!*** MODULE $CCA520DEF IDENT 4.0 ***
literal CCA520$K_REVISION = 3;
literal CCA520$M_BOOTIP = 1;
literal CCA520$M_RESTARTIP = 2;
literal CCA520$M_AUTOBOOT = 4;
literal CCA520$M_REBOOT = 8;
literal CCA520$M_FAILSTOP = 16;
literal CCA520$M_USE_ICACHE = 32;
literal CCA520$M_USE_ECACHE = 64;
literal CCA520$K_HEADER_SZ = 123;       !  Size of the header
literal CCA520$R_BUFFER = 123;          !  Offset to the first buffer
!   The layout of a buffer area
literal CCA520$M_RXRDY = 1;
literal CCA520$M_ZDEST = 2;
literal CCA520$M_ZSRC = 4;
literal CCA520$M_ZALT = 8;
literal CCA520$M_CMS = 16;
literal ISTREAM$K_ROM = 0;
literal ISTREAM$K_LOCAL_A = 1;
literal ISTREAM$K_REMOTE_A = 2;
literal ISTREAM$K_LOCAL_B = 3;
literal ISTREAM$K_REMOTE_B = 4;
literal ISTREAM$K_SLINK = 5;
literal ISTREAM$K_CDCR = 6;
! --
literal CCA520$k_romcon_stall = 64;
literal CCA520$K_TXSZ = 81;
literal CCA520$K_RXSZ = 81;
literal CCA520$K_BUFAREA_SZ = 296;      !  Size of a buffer area
literal CCA520$R_BOOT_PARAM_BLOCK = 419; !  Offset from CCA begin to BPB
literal CCA520$K_BOOT_PARAM_BLOCK_SZ = -335;
! 
literal CCA520$K_CCA_SIZE = 84;
literal CCA520$S_CCADEF = 419;
!   The CCA header page
macro CCA520$L_BASE = 0,0,32,0 %;       !  Physical address of the base of CCA 
macro CCA520$W_SIZE = 4,0,16,0 %;       !  Size in bytes of CCA
macro CCA520$W_IDENT = 6,0,16,0 %;      !  Ident string 'CI'
macro CCA520$B_CHKSUM = 8,0,8,0 %;      !  Checksum of previous bytes
macro CCA520$B_HFLAGS = 9,0,8,0 %;      !  Header flags
macro CCA520$V_BOOTIP = 9,0,1,0 %;      !  Bootstrap in progress
macro CCA520$V_RESTARTIP = 9,1,1,0 %;   !  Restart in progress
macro CCA520$V_AUTOBOOT = 9,2,1,0 %;    !  indicate to O.S. that boot
!  occurred with no Human 
!  intervention.
macro CCA520$V_REBOOT = 9,3,1,0 %;      !  If set when primary enters console,
!  reboot operating system using default
!  boot device
macro CCA520$V_FAILSTOP = 9,4,1,0 %;    !  Indicate to O.S. That System
!  should allow FAILSTOP
macro CCA520$V_USE_ICACHE = 9,5,1,0 %;  !  OK to turn on internal cache
macro CCA520$V_USE_ECACHE = 9,6,1,0 %;  !  OK to turn on external cache
!   The remaining flags are used internally by the console
macro CCA520$B_REVISION = 10,0,8,0 %;   !  CCA Revision number
macro CCA520$L_BITMAP_SZ = 11,0,32,0 %; !  Size in bytes of physical memory 
!  bitmap.  Pages marked are available
!  to system software.
macro CCA520$L_BITMAP = 15,0,32,0 %;    !  Address of the bitmap
macro CCA520$L_BITMAP_CKSUM = 19,0,32,0 %; !  Checksum of bitmap
!  Unused on XCP
macro CCA520$L_CONFIG_BLK = 23,0,0,1 %;
literal CCA520$S_CONFIG_BLK = 56;       !  Sys configuration from zone test
macro CCA520$L_BOOT_DEVICE_CSR_1 = 79,0,32,0 %;
!  used by VMS for device failover,
!  not used by Console 
macro CCA520$L_BOOT_DEVICE_CSR_2 = 83,0,32,0 %;
!  used by VMS for device failover,
!  not used by Console 
macro CCA520$L_BOOT_PARAM_PTR = 87,0,32,0 %;
!  pointer to Current boot device
!  used for VMB restart.
macro CCA520$L_BOOT_PARAM = 91,0,32,0 %; !  Address or parameter block passed
!  from Console to VMB.
macro CCA520$Q_SERIALNUM = 95,0,0,0 %;
literal CCA520$S_SERIALNUM = 8;         !  System serial number
!   (Expanded to quadword)
macro CCA520$Q_HW_REVISION = 103,0,0,0 %;
literal CCA520$S_HW_REVISION = 8;       !  processor hardware revisions.
macro CCA520$L_NSCR_ADDR = 111,0,32,0 %; !  address of console structures in
!  local ram
macro CCA520$L_REG_BLOCK = 115,0,32,0 %; !  address of register save block
macro CCA520$l_reg_block_size = 119,0,32,0 %;
macro CCA520$B_FLAGS = 0,0,8,0 %;       !  The buffer flags
macro CCA520$V_RXRDY = 0,0,1,0 %;       !  When set, there is a message in our
!  CCA$T_RX buffer
macro CCA520$V_ZDEST = 0,1,1,0 %;       !  The CCA$B_ZDEST field is valid
!  (i.e. we are sending Z data)
macro CCA520$V_ZSRC = 0,2,1,0 %;        !  The CCA$B_ZSRC field is valid
!  (i.e. we are receiving Z data)
macro CCA520$V_ZALT = 0,3,1,0 %;        !  We are sending Z data to a node
!  requires alternate RXCD protocol
macro CCA520$V_CMS = 0,4,1,0 %;         !  When set indicates a CIO is
!  sending a command to the CPU.
!  Remains set until command is
!  completed processing.
! ++
!  define place to keep track of input stream and values it will contain.
macro CCA520$B_ISTREAM = 1,0,8,0 %;     !  Where the last Character input
!  came from.
!  the local and remote isteam identifiers must be 1,3 and 5,6 respectively
!  so that the difference between the zone A and zone B inputs are indicated by
!  one bit and the local/remote id is indicated as the stream number whic the
!  CIO uses to pass the data throug the UCCR.
!  12-AUG-1989 16:52:27.90  DM
!  ROM console must use main memory to be in lockstep
! 
macro CCA520$L_ROMCON_STATUS = 2,0,32,0 %; !  Shared by both rails for ROMCON
macro CCA520$B_ZDEST = 6,0,8,0 %;       !  Target of our Z command
macro CCA520$B_ZSRC = 7,0,8,0 %;        !  Node sending us Z data
macro CCA520$B_TXLEN = 8,0,8,0 %;       !  Length of data in CCA$T_TX
macro CCA520$B_ROM_RXLEN = 9,0,8,0 %;   !  Length of data in CCA$T_RX
macro CCA520$B_UCCR_A_RXLEN = 10,0,8,0 %; !  Length of data in CCA$T_RX
macro CCA520$B_UCCR_B_RXLEN = 11,0,8,0 %; !  Length of data in CCA$T_RX
macro CCA520$B_SLINK_RXLEN = 12,0,8,0 %; !  Length of data in CCA$T_RX
macro CCA520$B_CDCR_RXLEN = 13,0,8,0 %; !  Length of data in CCA$T_RX
macro CCA520$T_ROM_RX = 14,0,0,0 %;
literal CCA520$S_ROM_RX = 81;           !  Receive from ROM terminal
macro CCA520$T_UCCR_A_RX = 95,0,0,0 %;
literal CCA520$S_UCCR_A_RX = 81;        !  Receive from Zone A UCCR
macro CCA520$T_UCCR_B_RX = 176,0,0,0 %;
literal CCA520$S_UCCR_B_RX = 81;        !  Receive from Zone B UCCR
macro CCA520$T_SLINK_RX = 257,0,0,0 %;
literal CCA520$S_SLINK_RX = 81;         !  Receive through IZC
macro CCA520$T_CDCR_RX = 338,0,0,0 %;
literal CCA520$S_CDCR_RX = 81;          !  Receive through Z mode
! 
!   Boot parameter block
! 
! 
!  Allocate space for BPB in CCA
! 
macro CCA520$L_BOOT_PARAM_BLOCK = 0,0,0,1 %;
literal CCA520$S_BOOT_PARAM_BLOCK = 84;
! 
! 
literal BPB$k_max = 20;                 !  Max allowed boot paths that can be specified
!  Boot Parameter Structure, a sub structure contained within the CCA
literal BPB$S_BPBLK = 84;
macro BPB$L_BPLEN = 0,0,32,1 %;         !  number of longword ZSUs
macro BPB$R_BP_PARAM1 = 4,0,0,0 %;
literal BPB$S_BP_PARAM1 = 80;
macro BPB$L_BPBASE = 4,0,32,1 %;        !  first ZSUs of block
macro BPB$L_BP_PARAMS = 4,0,0,1 %;
literal BPB$S_BP_PARAMS = 80;
literal CNF$S_CNFG = 4;                 !  Address of configuration info
macro CNF$V_Size = 0,0,16,0 %;
literal CNF$S_Size = 16;                !  When the module is memory
macro CNF$V_Revision = 0,16,8,0 %;
literal CNF$S_Revision = 8;             !  Revision of the module
macro CNF$v_status = 0,24,4,0 %;
literal CNF$s_status = 4;               !  Goodness or badness
macro CNF$v_type = 0,28,4,0 %;
literal CNF$s_type = 4;                 !  either CPU,IO,MEM
!  Configuration block type field definitions
literal CCA520$K_EMPTY = 0;             !  Slot is empty
literal CCA520$K_CPUMODULE = 5;         !  CPU module
literal CCA520$K_MEMMODULE = 3;         !  MEMORY module
literal CCA520$K_CIOMOD = 1;            !  IO module
literal CCA520$K_COMIOMOD = 4;          !  Communication module
!  Configuration block status field definitions
literal CCA520$K_MODSTSBAD = 0;         !  Module bad
literal CCA520$K_MODSTSGOOD = 1;        !  Module good
literal CCA520$K_MODSTSNOTPRES = 2;     !  Module not present
literal bp$m_unit = 65535;
literal bp$m_busid = 16711680;
literal bp$m_slot1 = 117440512;
literal bp$m_zone1 = 134217728;
literal bp$m_slot2 = 1879048192;
literal bp$m_zone2 = -2147483648;
literal bp$S_ZSZSBU = 4;
macro bp$v_unit = 0,0,16,0 %;
literal bp$s_unit = 16;
macro bp$v_busid = 0,16,8,0 %;
literal bp$s_busid = 8;
macro bp$v_slot1 = 0,24,3,0 %;
literal bp$s_slot1 = 3;
macro bp$v_zone1 = 0,27,1,0 %;
macro bp$v_slot2 = 0,28,3,0 %;
literal bp$s_slot2 = 3;
macro bp$v_zone2 = 0,31,1,0 %;
!   The layout of the hardware revision field.
!   These values are obtained from the EEPROM on the processor.
!   The CVAX, SSC, and FPU values are two nibbles with an implied "decimal"
!   point (i.e. 22 ==> 2.2)
!   The module revision are the 4 ASCII characters of the module revision.
literal CCA520$S_CCA_HW_REVISION = 8;
macro CCA520$B_CVAX_REV = 0,0,8,0 %;    !  The CVAX revision
macro CCA520$B_FPU_REV = 1,0,8,0 %;     !  The FPA revision
macro CCA520$B_MCTL_REV = 2,0,8,0 %;    !  The MCTL revision
macro CCA520$B_CLINK_REV = 3,0,8,0 %;   !  The CLINK revision
macro CCA520$L_MODULE_REV = 4,0,32,0 %; !  The module revision
 
!*** MODULE $CCBDEF ***
! +
!  CCB - CHANNEL CONTROL BLOCK
! 
!  THERE IS ONE CHANNEL CONTROL BLOCK FOR EACH SOFTWARE CHANNEL THAT A
!  PROCESS MAY INITIATE I/O REQUESTS ON. THE NUMBER OF SUCH I/O CHANNELS
!  IS DETERMINED BY THE FIXED NUMBER ASSIGNED TO A PROCESS PLUS ANY
!  ADDITIONAL CHANNELS REQUIRED BY THE IMAGE CURRENTLY BEING EXECUTED
!  BY THE PROCESS.
!      
!  **** WARNING ****
!         THE CHANNEL CONTROL BLOCK IS ASSUMED TO BE FOUR LONG WORDS
!  THROUGHOUT THE EXEC.  ITS SIZE MAY BE CHANGED BUT ONLY BY POWERS OF 2.
! -
literal CCB$M_AMB = 1;
literal CCB$M_IMGTMP = 2;
literal CCB$M_RDCHKDON = 4;
literal CCB$M_WRTCHKDON = 8;
literal CCB$M_LOGCHKDON = 16;
literal CCB$M_PHYCHKDON = 32;
literal CCB$K_LENGTH = 16;              ! LENGTH OF CCB 
literal CCB$C_LENGTH = 16;              ! LENGTH OF CCB 
literal CCB$S_CCBDEF = 16;
macro CCB$L_UCB = 0,0,32,0 %;           ! ADDRESS OF ASSIGNED DEVICE UCB 
macro CCB$L_WIND = 4,0,32,0 %;          ! ADDRESS OF WINDOW BLOCK 
macro CCB$B_STS = 8,0,8,0 %;            ! CHANNEL STATUS 
macro CCB$V_AMB = 8,0,1,0 %;            !  MAILBOX ASSOCIATED WITH CHANNEL 
macro CCB$V_IMGTMP = 8,1,1,0 %;         !  IMAGE TEMPORARY
macro CCB$V_RDCHKDON = 8,2,1,0 %;       !  READ PROTECTION CHECK COMPLETED
macro CCB$V_WRTCHKDON = 8,3,1,0 %;      !  WRITE PROTECTION CHECK COMPLETED
macro CCB$V_LOGCHKDON = 8,4,1,0 %;      !  LOGICAL I/O ACCESS CHECK DONE
macro CCB$V_PHYCHKDON = 8,5,1,0 %;      !  PHYSICAL I/O ACCESS CHECK DONE
macro CCB$B_AMOD = 9,0,8,0 %;           ! ACCESS MODE THAT ASSIGNED CHANNEL 
macro CCB$W_IOC = 10,0,16,0 %;          ! NUMBER OF OUTSTANDING I/O REQUESTS ON CHANNEL 
macro CCB$L_DIRP = 12,0,32,0 %;         ! DEACCESS I/O REQUEST PACKET ADDRESS 
 
!*** MODULE $CDDBDEF ***
! +
!  CDDB - Class Driver Data Block
! 
!  Auxiliary data block pointed at by the CRB$L_AUXSTRUC of an MSCP speaking
!  intelligent disk or tape controller.  There is one CDDB per such intelligent
!  controller.
! 
! -
literal CDDB$M_SNGLSTRM = 1;
literal CDDB$M_IMPEND = 2;
literal CDDB$M_INITING = 4;
literal CDDB$M_RECONNECT = 8;
literal CDDB$M_RESYNCH = 16;
literal CDDB$M_POLLING = 32;
literal CDDB$M_ALCLS_SET = 64;
literal CDDB$M_NOCONN = 128;
literal CDDB$M_RSTRTWAIT = 256;
literal CDDB$M_QUORLOST = 512;
literal CDDB$M_DAPBSY = 1024;
literal CDDB$M_2PBSY = 2048;
literal CDDB$M_BSHADOW = 4096;
literal CDDB$M_DISABLED = 8192;
literal CDDB$M_PATHMOVE = 16384;
literal CDDB$M_PRMBSY = 32768;
literal CDDB$M_DISC_PEND = 1;
literal CDDB$K_LENGTH = 112;            ! Standard length of CDDB 
literal CDDB$C_LENGTH = 112;            ! Standard length of CDDB 
literal CDDB$S_CDDBDEF = 116;
macro CDDB$L_CDRPQFL = 0,0,32,0 %;      ! Active CDRP Q FLINK 
macro CDDB$L_CDRPQBL = 4,0,32,0 %;      ! Active CDRP Q BLINK 
macro CDDB$W_SIZE = 8,0,16,0 %;         ! Size of CDDB in bytes 
macro CDDB$B_TYPE = 10,0,8,0 %;         ! Major structure type for Class Driver 
macro CDDB$B_SUBTYPE = 11,0,8,0 %;      !  CDDB structure subtype field 
macro CDDB$B_SYSTEMID = 12,0,0,0 %;
literal CDDB$S_SYSTEMID = 6;            ! 48 bit system ID. 
macro CDDB$W_STATUS = 18,0,16,0 %;      ! Status word 
macro CDDB$V_SNGLSTRM = 18,0,1,0 %;     !  Single stream mode after VC crash 
macro CDDB$V_IMPEND = 18,1,1,0 %;       !  IMmediate command PENDing 
macro CDDB$V_INITING = 18,2,1,0 %;      !  Currently initializing CONNECTION 
macro CDDB$V_RECONNECT = 18,3,1,0 %;    !  Currently re-CONNECTING to MSCP server 
macro CDDB$V_RESYNCH = 18,4,1,0 %;      !  re_CONNECT initiated by Class Driver 
macro CDDB$V_POLLING = 18,5,1,0 %;      !  Polling for units
macro CDDB$V_ALCLS_SET = 18,6,1,0 %;    !  Allocation class has been set
macro CDDB$V_NOCONN = 18,7,1,0 %;       !  CDDB currently has no connection
macro CDDB$V_RSTRTWAIT = 18,8,1,0 %;    !  Waiting to RESTART_NEXT_CDRP
macro CDDB$V_QUORLOST = 18,9,1,0 %;     !  CNXMAN quorum lost processing
macro CDDB$V_DAPBSY = 18,10,1,0 %;      !  DAP CDRP is busy
macro CDDB$V_2PBSY = 18,11,1,0 %;       !  Failover fork block is busy
macro CDDB$V_BSHADOW = 18,12,1,0 %;     !  Controller uses "bundled" shadowing
macro CDDB$V_DISABLED = 18,13,1,0 %;    !  Controller not in use by class driver action
macro CDDB$V_PATHMOVE = 18,14,1,0 %;    !  Closing connection for port load balance
macro CDDB$V_PRMBSY = 18,15,1,0 %;      !  Permanent CDRP in use
macro CDDB$L_PDT = 20,0,32,0 %;         ! Port Descriptor Table address 
macro CDDB$L_CRB = 24,0,32,0 %;         ! CRB address 
macro CDDB$L_DDB = 28,0,32,0 %;         ! DDB address 
macro CDDB$Q_CNTRLID = 32,0,0,0 %;
literal CDDB$S_CNTRLID = 8;             ! Controller ID returned by MSCP END PACKET 
macro CDDB$B_CNTRLMDL = 38,0,8,0 %;     !  Controller model ! (byte 6 of controller id) 
macro CDDB$B_CNTRLCLS = 39,0,8,0 %;     !  Controller class (byte 7 of controller id) 
macro CDDB$W_CNTRLFLGS = 40,0,16,0 %;   ! Controller flags also returned by END PACKET 
macro CDDB$W_CNTRLTMO = 42,0,16,0 %;    ! Controller timeout also returned by END PACKET 
macro CDDB$L_OLDRSPID = 44,0,32,0 %;    ! RSPID of oldest outstanding MSCP command 
macro CDDB$L_OLDCMDSTS = 48,0,32,0 %;   ! Latest MSCP command status for this command 
macro CDDB$L_RSTRTCDRP = 52,0,32,0 %;   ! Addr of only active CDRP after VC re-establish 
macro CDDB$B_RETRYCNT = 56,0,8,0 %;     ! # retries remaining for CDRP after VC reset 
macro CDDB$B_DAPCOUNT = 57,0,8,0 %;     ! # DU$TMR loops until DAP_THREAD
macro CDDB$W_RSTRTCNT = 58,0,16,0 %;    ! # of resynch or connection error since boot
macro CDDB$L_RSTRTQFL = 60,0,32,0 %;    ! Queue wherein we accumulate, sort and select 
macro CDDB$L_RSTRTQBL = 64,0,32,0 %;    !  for re-submission following VC re-establish 
macro CDDB$L_SAVED_PC = 68,0,32,0 %;    ! Saved PC on internal subroutine calls 
macro CDDB$L_UCBCHAIN = 72,0,32,0 %;    ! Chain of UCBs on connection
macro CDDB$L_ORIGUCB = 76,0,32,0 %;     ! Ptr to Orig. UCB if unchained
macro CDDB$L_ALLOCLS = 80,0,32,0 %;     ! Device Allocation Class
macro CDDB$L_DAPCDRP = 84,0,32,0 %;     ! Ptr to Deter.Acc.Path CDRP
macro CDDB$L_CDDBLINK = 88,0,32,0 %;    ! Link in CDDB chain
macro CDDB$B_FOVER_CTR = 92,0,8,0 %;    !  counter of reconnect intervals per failover try
macro CDDB$B_STS2 = 93,0,8,0 %;         ! Further status bits
macro CDDB$V_DISC_PEND = 93,0,1,0 %;    !  Connection disconnect pending
macro CDDB$W_WTUCBCTR = 94,0,16,0 %;    !  counter of UCBs waiting for mount ver. to finish
macro CDDB$B_CSVRSN = 96,0,8,0 %;       !  Controller microcode version
macro CDDB$B_CHVRSN = 97,0,8,0 %;       !  Controller hardware version
macro CDDB$W_CPYSEQNUM = 98,0,16,0 %;   !  Base value IO$_COPYSHAD sequence number
macro CDDB$L_MAXBCNT = 100,0,32,0 %;    !  Max byte count for this connection
macro CDDB$L_CTRLTR_MASK = 104,0,32,0 %; !  Mask of controller letters (ddCu:) used by this controller
macro CDDB$W_LOAD_AVAIL = 108,0,16,0 %; !  Load available from MSCP server
macro CDDB$W_RSVD4 = 110,0,16,0 %;      !  reserved word
macro CDDB$L_PERMCDRP = 112,0,32,0 %;   ! Beginning of a permanent CDRP allocated 
!   contiguous to CDDB
 
!*** MODULE $CDLDEF ***
! +
!  CDL - SCS CONNECTION DESCRIPTOR LIST
! 
!  THERE IS A SYSTEM WIDE LIST OF CONNECTION DESCRIPTORS POINTED
!  TO BY THE CDL.
! -
literal CDL$C_LENGTH = 16;              ! LENGTH OF NEG PORTION OF STRUCTURE 
literal CDL$S_CDLDEF = 20;
macro CDL$W_MAXCONIDX = -16,0,16,0 %;   ! MAXIMUM ! OF CDT'S 
macro CDL$L_FREECDT = -12,0,32,0 %;     ! ADDR OF 1ST FREE CDT 
macro CDL$W_SIZE = -8,0,16,0 %;         ! STRUCTURE SIZE IN BYTES 
macro CDL$B_TYPE = -6,0,8,0 %;          ! SCS STRUCTURE TYPE 
macro CDL$B_SUBTYP = -5,0,8,0 %;        ! SCS STRUCT SUBTYPE FOR CDL 
macro CDL$L_NOCDT_CNT = -4,0,32,0 %;    ! Count of CDT allocation failures
macro CDL$L_BASE = 0,0,32,0 %;          ! BASE OF THE TABLE 
 
!*** MODULE $CDTDEF ***
! +
!  CDT - SCS CONNECTION DESCRIPTOR TABLE
! 
!  THESE DESCRIPTORS ARE POINTED TO BY THE SYSTEM WIDE CONNECTION
!  DESCRIPTOR LIST (CDL).  ONE CDT IS USED PER SCS VIRTUAL CIRCUIT
!  OR LISTENING CONNECTION.
! -
literal CDT$C_CLOSED = 0;               !  CLOSED 
literal CDT$C_LISTEN = 1;               !  LISTENING FOR CONNX REQUESTS 
literal CDT$C_OPEN = 2;                 !  OPEN 
literal CDT$C_DISC_ACK = 3;             !  DISCONNECT ACKNOWLEDGED 
literal CDT$C_DISC_REC = 4;             !  DISCONNECT REQ RECEIVED 
literal CDT$C_DISC_SENT = 5;            !  DISCONNECT SENT 
literal CDT$C_DISC_MTCH = 6;            !  DISCONNECT MATCH 
literal CDT$C_CON_SENT = 7;             !  CONNECT REQ SENT 
literal CDT$C_CON_ACK = 8;              !  CONNECT REQ SENT AND ACK'ED 
literal CDT$C_CON_REC = 9;              !  CONNECT REQ RECEIVED 
literal CDT$C_ACCP_SENT = 10;           !  ACCEPT REQ SENT 
literal CDT$C_REJ_SENT = 11;            !  REJECT SENT 
literal CDT$C_DISC_MTCH_RSPQ = 12;      !  MATCHING DISCONNECT RESPONSE IN PROGRESS
literal CDT$C_DISC_RSPQ = 13;           !  DISCONNECT RESPONSE IN PROGRESS
literal CDT$C_VC_FAIL = 14;             !  VIRTUAL CIRCUIT FAILED 
!  
literal CDT$C_CON_PEND = 1;             !  WAITING TO SEND CONNECT REQ 
literal CDT$C_ACCP_PEND = 2;            !  WAITING TO SEND ACCEPT REQ 
literal CDT$C_REJ_PEND = 3;             !  WAITING TO SEND REJECT REQ 
literal CDT$C_DISC_PEND = 4;            !  WAITING TO SEND DISCONNECT REQ 
literal CDT$C_CR_PEND = 5;              !  WAITING TO SEND CREDIT 
literal CDT$C_DCR_PEND = 6;             !  WAITING TO SEND CREDIT IN 
!   PREPARATION FOR DISCONNECT
literal CDT$C_RATING0 = 0;              !  (TYC 4-JAN-89) Undefined yet but valid value
literal CDT$C_RATING1 = 1;              !  (TYC 4-JAN-89) Undefined yet but valid value
literal CDT$C_RATING2 = 2;              !  (TYC 4-JAN-89) Undefined yet but valid value
literal CDT$C_RATING3 = 3;              !  (TYC 4-JAN-89) Undefined yet but valid value
!  MOVE SUGGESTED FOR AN EQUAL PATH (I.E. CI->CI)
literal CDT$C_YELLOW = 4;               !  (TYC 4-JAN-89) port is in YELLOW zone
literal CDT$C_RATING5 = 5;              !  (TYC 4-JAN-89) Undefined yet but valid value
literal CDT$C_RED = 6;                  !  port is in RED zone (i.e. port is saturated)
literal CDT$C_UNEQUAL_PATH = 7;         !  MOVE SUGGESTED FOR AN UNEQUAL PATH (I.E. NI->CI)
literal CDT$C_LOAD_SHARE_DISABLE = 8;   !  load sharing disabled
!  
literal CDT$C_BAD_RATING = -2147483648; !  (TYC 4-JAN-89) Bad load rating marker
literal CDT$K_BAD_RATING = -2147483648;
literal CDT$C_LOADSHARE = 0;            !  (TYC 21-Jun-89) Load sharing SYSAP
literal CDT$C_PRE_LOADSHARE = 1;        !  (TYC 21-Jun-89) Pre-load sharing SYSAP
!  
literal CDT$K_LENGTH = 347;             ! LENGTH OF CDT 
literal CDT$C_LENGTH = 347;             ! LENGTH OF CDT 
literal CDT$S_CDTDEF = 347;
macro CDT$L_MSGINPUT = 0,0,32,0 %;      ! ADDR OF MSG INPUT DISPATCHER 
macro CDT$L_LINK = 0,0,32,0 %;          !  OR LINK TO NEXT FREE CDT 
macro CDT$L_DGINPUT = 4,0,32,0 %;       ! ADDR TO CALL ON DG RECEIVED 
macro CDT$W_SIZE = 8,0,16,0 %;          ! STRUCTURE SIZE IN BYTES 
macro CDT$B_TYPE = 10,0,8,0 %;          ! SCS STRUCTURE TYPE 
macro CDT$B_SUBTYP = 11,0,8,0 %;        ! SCS STRUCT SUBTYPE FOR CDT 
macro CDT$L_ERRADDR = 12,0,32,0 %;      ! ADDR TO CALL FOR ERROR NOTIFICATION 
macro CDT$L_PDT = 16,0,32,0 %;          ! ADDR OF ASSOC PORT DESC TABLE 
macro CDT$L_RCONID = 20,0,32,0 %;       ! REMOTE CONNECTION ID 
macro CDT$L_LCONID = 24,0,32,0 %;       ! LOCAL CONNECTION ID 
macro CDT$L_PB = 28,0,32,0 %;           ! ADDR OF ASSOC PATH BLOCK 
macro CDT$B_RSTATION = 32,0,0,0 %;
literal CDT$S_RSTATION = 6;             ! REMOTE STATION ADDR 
macro CDT$W_REASON = 38,0,16,0 %;       ! REJECT/DISCONNECT REASON 
macro CDT$W_STATE = 40,0,16,0 %;        ! CONNECTION STATE 
! STATE VALUES:
!  0 ORIGIN, INCREMENTS OF 1: 
macro CDT$W_BLKSTATE = 42,0,16,0 %;     ! SCS SEND BLOCKED STATE 
! STATE VALUES:
!  1 ORIGIN, INCREMENTS OF 1: 
!  
macro CDT$L_SCSMSG = 44,0,32,0 %;       ! ADDR OF SCS RECEIVE BUFFER 
macro CDT$L_WAITQFL = 48,0,32,0 %;      ! SEND SCS MSG WAIT QUEUE FLINK 
macro CDT$L_WAITQBL = 52,0,32,0 %;      ! SEND SCS MSG WAIT QUEUE BLINK 
macro CDT$L_CRWAITQFL = 56,0,32,0 %;    ! SEND CREDIT WAIT QUEUE FLINK 
macro CDT$L_CRWAITQBL = 60,0,32,0 %;    ! SEND CREDIT WAIT QUEUE BLINK 
macro CDT$W_SEND = 64,0,16,0 %;         ! CURRENT SEND CREDIT 
macro CDT$W_REC = 66,0,16,0 %;          ! RECEIVE CREDIT (SEND CREDIT 
!  HELD BY REMOTE
macro CDT$W_MINREC = 68,0,16,0 %;       ! MINIMUM RECEIVE CREDIT (MIN 
!  SEND REQUIRED BY REMOTE)
macro CDT$W_PENDREC = 70,0,16,0 %;      ! RECEIVE CREDIT NOT YET EXTENDED 
!  TO REMOTE
macro CDT$W_INITLREC = 72,0,16,0 %;     ! INITIAL RECEIVE CREDIT 
macro CDT$W_MINSEND = 74,0,16,0 %;      ! MINIMUM SEND CREDIT 
macro CDT$W_DGREC = 76,0,16,0 %;        ! DATAGRAMS QUEUED FOR RECEIVE 
macro CDT$B_PRIORITY = 78,0,8,0 %;      ! BLOCK TRANSFER PRIORIY 
macro CDT$L_RPROCNAM = 80,0,32,0 %;     ! ADDR OF REMOTE PROCESS NAME 
macro CDT$L_LPROCNAM = 84,0,32,0 %;     ! ADDR OF LOCAL PROCESS NAME 
macro CDT$L_CONDAT = 88,0,32,0 %;       ! ADDR OF CONNECT DATA 
macro CDT$L_AUXSTRUC = 92,0,32,0 %;     ! ADDR OF AUXILARY DATA STRUCTURE 
macro CDT$L_BADRSP = 96,0,32,0 %;       ! ADDR IN SYSAP TO CALL WITH 
!  BAD RESPONSE(UNIMPLEMENTED) 
macro CDT$L_FPC = 100,0,32,0 %;         ! SAVED FORK PROCESS PC 
macro CDT$L_FR5 = 104,0,32,0 %;         ! SAVED FORK PROCESS R5 
macro CDT$L_CDTLST = 108,0,32,0 %;      ! LINK FOR CDT LIST FROM PB 
macro CDT$L_DGSENT = 112,0,32,0 %;      ! # APPLICATION DGS SENT
macro CDT$L_DGRCVD = 116,0,32,0 %;      ! # APPLICATION DGS REC'D
macro CDT$L_DGDISCARD = 120,0,32,0 %;   ! # DGS DISCARDED BY DRIVER
macro CDT$L_MSGSENT = 124,0,32,0 %;     ! # APPLICATION MSGS SENT
macro CDT$L_MSGRCVD = 128,0,32,0 %;     ! # APPLICATION MSGS REC'D
macro CDT$L_SNDDATS = 132,0,32,0 %;     ! # SEND DATAS INITIATED
macro CDT$L_BYTSENT = 136,0,32,0 %;     ! # BYTES SENT VIA SEND DATAS
macro CDT$L_REQDATS = 140,0,32,0 %;     ! #REQ DATAS INITIATED
macro CDT$L_BYTREQD = 144,0,32,0 %;     ! BYTES REC'D VIA REQ DATAS
macro CDT$L_BYTMAPD = 148,0,32,0 %;     ! TOTAL BYTES MAPPED
macro CDT$W_QCR_CNT = 152,0,16,0 %;     ! # TIMES QUEUED FOR SEND CREDIT
macro CDT$W_QBDT_CNT = 154,0,16,0 %;    ! # TIMES QUEUED FOR BDT
!  (TYC 14-FEB-89) LOAD SHARING FIELDS
macro CDT$L_MOVE_PATH_ADDR = 156,0,32,0 %; !  CONNECTION MOVE ADDRESS
!  1 ORIGIN, INCREMENTS OF 1: 
macro CDT$L_SHARE_FLINK = 160,0,32,0 %; ! DYNAMIC LOAD SHARING CDT QUEUE FLINK
macro CDT$L_SHARE_BLINK = 164,0,32,0 %; ! DYNAMIC LOAD SHARING CDT QUEUE BLINK
macro CDT$L_SB = 168,0,32,0 %;          ! SYSTEM BLOCK ADDRESS
!  R1 load rating on entry (TYC 4-JAN-89)
macro CDT$L_CON_REQ_CTR = 172,0,32,0 %; !  (TYC 25-Apr-89) # of times CONN REQ sent
macro CDT$L_LOAD_RATING = 176,0,32,0 %; !  LOAD RATING (TYC 4-JAN-89 now used)
macro CDT$L_TIME_STAMP = 180,0,32,0 %;  !  TIME STAMP (EXE$GL_ABSTIM) OF CONNECTION FORMATION
macro CDT$L_QUEUE_TIME_STAMP = 184,0,32,0 %; !  (TYC 15-Feb-89) TIME STAMP OF MOVING CDT TO QUEUE
macro CDT$L_DISCON_COUNTER = 188,0,32,0 %; !  (TYC 15-Feb-89) LOAD SHARING DISCONNECT COUNTER
!  used with conditional assembly
macro CDT$L_OPTIMAL_PATH = 192,0,32,0 %; !  (TYC 15-Feb-89) PATH ADDRESS OF THE OPTIMAL PORT
macro CDT$L_BYTES_XFER = 196,0,32,0 %;  !  (TYC 15-Feb-89) TOTAL BYTES XFERRED (BOTH XMIT & RCV)
macro CDT$L_BYTES_DG_XMT = 200,0,32,0 %; !  (TYC 15-Feb-89) TOTAL DG BYTES XMITTED 
macro CDT$L_BYTES_DG_RCV = 204,0,32,0 %; !  (TYC 15-Feb-89) TOTAL DG BYTES RECEIVED
macro CDT$L_BYTES_MSG_XMT = 208,0,32,0 %; !  (TYC 15-Feb-89) TOTAL MSG BYTES XMITTED
macro CDT$L_BYTES_MSG_RCV = 212,0,32,0 %; !  (TYC 15-Feb-89) TOTAL MSG BYTES RECEIVED
macro CDT$L_BYTES_XFER_LAST = 216,0,32,0 %; !  (TYC 31-Aug-89) TOTAL BYTES XFERRED 
!  UP TO LAST LOAD SHARING INTERVAL
macro CDT$L_BYTES_DG_XMT_LAST = 220,0,32,0 %; !  (TYC 31-Aug-89) TOTAL DG BYTES XMITTED
!  UP TO LAST LOAD SHARING INTERVAL
macro CDT$L_BYTES_DG_RCV_LAST = 224,0,32,0 %; !  (TYC 31-Aug-89) TOTAL DG BYTES RECEIVED 
!  UP TO LAST LOAD SHARING INTERVAL
macro CDT$L_BYTES_MSG_XMT_LAST = 228,0,32,0 %; !  (TYC 31-Aug-89) TOTAL MSG BYTES XMITTED 
!  UP TO LAST LOAD SHARING INTERVAL
macro CDT$L_BYTES_MSG_RCV_LAST = 232,0,32,0 %; !  (TYC 31-Aug-89) TOTAL MSG BYTES RECEIVED
!  UP TO LAST LOAD SHARING INTERVAL
macro CDT$L_BYTMAPD_LAST = 236,0,32,0 %; !  (TYC 31-Aug-89) TOTAL BYTES MAPPED 
!  UP TO LAST LOAD SHARING INTERVAL
macro CDT$L_DGSENT_LAST = 240,0,32,0 %; !  (TYC 31-Aug-89) TOTAL DGS XMITTED 
!  UP TO LAST LOAD SHARING INTERVAL
macro CDT$L_DGRCVD_LAST = 244,0,32,0 %; !  (TYC 31-Aug-89) TOTAL DGS RECEIVED
!  UP TO LAST LOAD SHARING INTERVAL
macro CDT$L_MSGSENT_LAST = 248,0,32,0 %; !  (TYC 31-Aug-89) TOTAL MSGS XMITTED
!  UP TO LAST LOAD SHARING INTERVAL
macro CDT$L_MSGRCVD_LAST = 252,0,32,0 %; !  (TYC 31-Aug-89) TOTAL MSGS RECEIVED 
!  UP TO LAST LOAD SHARING INTERVAL
!  (TYC 17-Feb-89) peak counters used with conditional assembly
macro CDT$L_BYTES_XFER_PEAK = 256,0,32,0 %; !  PEAK VALUE OF TOTAL BYTES XFERRED 
macro CDT$L_BYTES_DG_XMT_PEAK = 260,0,32,0 %; !  PEAK VALUE OF TOTAL DG BYTES XMITTED 
macro CDT$L_BYTES_DG_RCV_PEAK = 264,0,32,0 %; !  PEAK VALUE OF TOTAL DG BYTES RECEIVED 
macro CDT$L_BYTES_MSG_XMT_PEAK = 268,0,32,0 %; !  PEAK VALUE OF TOTAL MSG BYTES XMITTED 
macro CDT$L_BYTES_MSG_RCV_PEAK = 272,0,32,0 %; !  PEAK VALUE OF TOTAL MSG BYTES RECEIVED
macro CDT$L_BYTMAPD_PEAK = 276,0,32,0 %; !  PEAK VALUE OF TOTAL BYTES MAPPED 
macro CDT$L_DGSENT_PEAK = 280,0,32,0 %; !  PEAK VALUE OF TOTAL DGS XMITTED 
macro CDT$L_DGRCVD_PEAK = 284,0,32,0 %; !  PEAK VALUE OF TOTAL DGS RECEIVED
macro CDT$L_MSGSENT_PEAK = 288,0,32,0 %; !  PEAK VALUE OF TOTAL MSGS XMITTED
macro CDT$L_MSGRCVD_PEAK = 292,0,32,0 %; !  PEAK VALUE OF TOTAL MSGS RECEIVED 
!  (TYC 17-Feb-89) average counters used with conditional assembly
macro CDT$L_BYTES_XFER_AVG = 296,0,32,0 %; !  AVERAGE VALUE OF TOTAL BYTES XFERRED 
macro CDT$L_BYTES_DG_XMT_AVG = 300,0,32,0 %; !  AVERAGE VALUE OF TOTAL DG BYTES XMITTED 
macro CDT$L_BYTES_DG_RCV_AVG = 304,0,32,0 %; !  AVERAGE VALUE OF TOTAL DG BYTES RECEIVED 
macro CDT$L_BYTES_MSG_XMT_AVG = 308,0,32,0 %; !  AVERAGE VALUE OF TOTAL MSG BYTES XMITTED 
macro CDT$L_BYTES_MSG_RCV_AVG = 312,0,32,0 %; !  AVERAGE VALUE OF TOTAL MSG BYTES RECEIVED
macro CDT$L_BYTMAPD_AVG = 316,0,32,0 %; !  AVERAGE VALUE OF TOTAL BYTES MAPPED 
macro CDT$L_DGSENT_AVG = 320,0,32,0 %;  !  AVERAGE VALUE OF TOTAL DGS XMITTED 
macro CDT$L_DGRCVD_AVG = 324,0,32,0 %;  !  AVERAGE VALUE OF TOTAL DGS RECEIVED
macro CDT$L_MSGSENT_AVG = 328,0,32,0 %; !  AVERAGE VALUE OF TOTAL MSGS XMITTED
macro CDT$L_MSGRCVD_AVG = 332,0,32,0 %; !  AVERAGE VALUE OF TOTAL MSGS RECEIVED 
macro CDT$L_BYTES_XFER_INT = 336,0,32,0 %; !  (TYC 31-AUG-89) TOTAL BYTES XFERRED
!  DURING LAST LOAD SHARING INTERVAL
!  (TYC 21-Jun-89) Moved fields
macro CDT$W_LOCAL_INDEX = 340,0,16,0 %; !  LOCAL PROCESS NAME INDEX
macro CDT$B_LS_FLAG = 342,0,8,0 %;      !  (TYC 15-Feb-89) LOAD SHARING FLAG.  IF SET,
!  THE CONNECTION IS REQUESTED TO DISCONNECT
macro CDT$B_SYSAP_VERSION = 343,0,8,0 %; !  (TYC 21-Jun-89) Flag for SYSAP version
!  (TYC 21-Jun-89) SYSAP version constants
 
!*** MODULE $CEBDEF ***
! +
!  COMMON EVENT BLOCK
! -
literal CEB$M_VALID = 1;
literal CEB$M_LOCKED = 2;
literal CEB$M_REFCNTLCK = 4;
literal CEB$K_LENGTH = 60;              ! LENGTH OF NORMAL COMMON EVENT BLOCK 
literal CEB$C_LENGTH = 60;              ! LENGTH OF NORMAL COMMON EVENT BLOCK 
! 
literal CEB$K_SLAVLNG = 72;             ! LENGTH OF SHMEM SLAVE COMMON EVENT BLK 
literal CEB$C_SLAVLNG = 72;             ! LENGTH OF SHMEM SLAVE COMMON EVENT BLK 
literal CEB$S_CEBDEF = 72;
macro CEB$L_CEBFL = 0,0,32,0 %;         ! POINTER TO NEXT COMMON EVENT BLOCK 
macro CEB$V_VALID = 0,0,1,0 %;          ! SHMEM MASTER CEB, SET IF VALID ENTRY 
macro CEB$V_LOCKED = 0,1,1,0 %;         ! SHMEM MASTER CEB, SET IF ENTRY LOCKED 
macro CEB$V_REFCNTLCK = 0,2,1,0 %;      ! SHMEM MASTER CEB, LOCKED FOR REFCNT CHG 
macro CEB$L_CEBBL = 4,0,32,0 %;         ! POINTER TO PREVIOUS COMMON EVENT BLOCK 
macro CEB$W_SIZE = 8,0,16,0 %;          ! SIZE OF COMMON EVENT BLOCK IN BYTES 
macro CEB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE CODE FOR CEB 
macro CEB$B_STS = 11,0,8,0 %;           ! STATUS FLAGS FOR CEB 
macro CEB$V_NOQUOTA = 11,0,1,0 %;       ! NO QUOTA UPDATE 
macro CEB$V_PERM = 11,1,1,0 %;          ! PERMANENT CLUSTER 
macro CEB$L_PID = 12,0,32,0 %;          ! PID OF CREATOR 
macro CEB$L_EFC = 16,0,32,0 %;          ! EVENT FLAGS (32 BIT VECTOR) 
macro CEB$L_WQFL = 20,0,32,0 %;         ! HEAD OF WAIT QUEUE 
macro CEB$L_WQBL = 24,0,32,0 %;         ! TAIL OF WAIT QUEUE 
macro CEB$W_WQCNT = 28,0,16,0 %;        ! WAIT QUEUE COUNT(LENGTH) 
! SHMEM FIELDS IN THIS WORD
macro CEB$B_LOCK = 28,0,8,0 %;          ! SHMEM MASTER CEB, ! OF PORT OWNING LOCK 
macro CEB$B_PROCCNT = 29,0,8,0 %;       ! SHMEM MASTER CEB, MAX ! OF PROCESSORS 
macro CEB$W_STATE = 30,0,16,0 %;        ! CEF WAIT STATE NUMBER 
! SHMEM FIELDS IN THIS WORD
macro CEB$B_CREATPORT = 30,0,8,0 %;     ! SHMEM MASTER CEB, ! OF CREATOR PORT 
macro CEB$B_DELETPORT = 31,0,8,0 %;     ! SHMEM MASTER CEB, ! OF DELETER PORT 
macro CEB$L_ORB = 32,0,32,0 %;          ! POINTER TO THE ORB
macro CEB$L_UIC = 36,0,32,0 %;          ! USER IDENT OF CEB CREATOR 
macro CEB$W_GRP = 38,0,16,0 %;          ! GROUP NUMBER OF OWNER 
macro CEB$W_PROT = 40,0,16,0 %;         ! PROTECTION MASK 
macro CEB$W_REFC = 42,0,16,0 %;         ! REFERENCE COUNT FOR CEB 
macro CEB$T_EFCNAM = 44,0,0,0 %;
literal CEB$S_EFCNAM = 16;              ! EVENT CLUSTER TEXT NAME 
!  THE FOLLOWING FIELDS ARE DEFINED FOR SHARED MEMORY COMMON EVENT BLOCKS.
!  CEB$L_SHB, CEB$W_INDX, AND CEB$L_MASTER ARE CONTAINED IN THE SLAVE CEB WHILE
!  CEB$L_VASLAVE1 IS THE OFFSET IN THE MASTER CEB TO THE FIRST SLAVE CEB.
! 
macro CEB$L_SHB = 60,0,32,0 %;          ! SHMEM SLAVE CEB, SHMEM CTL BLK ADR 
macro CEB$L_VASLAVE1 = 60,0,32,0 %;     ! SHMEM MASTER CEB, PTR TO 1ST SLAVE CEB 
macro CEB$W_INDX = 64,0,16,0 %;         ! SHMEM SLAVE CEB, INDEX TO MASTER CEB 
! SHMEM MASTER CEB, FIELDS IN NEXT N
!  LONGWORDS ARE PROCESSOR REFCNTS
!  (ONE WORD FOR EACH PROCESSOR)
!  (OFFSET IS COMPUTED AT RUN-TIME)
macro CEB$L_MASTER = 68,0,32,0 %;       ! SHMEM SLAVE CEB, VA OF MASTER CEB 
 
!*** MODULE $CHPCTLDEF ***
! +
! 
!  CHeck Protection ConTroL block definition.  This block contains the
!  information concerning the type of access check being made.
! 
! -
literal CHPCTL$M_READ = 1;
literal CHPCTL$M_WRITE = 2;
literal CHPCTL$M_USEREADALL = 4;
literal CHPCTL$K_LENGTH = 12;
literal CHPCTL$C_LENGTH = 12;
literal CHPCTL$S_CHPCTL = 12;
macro CHPCTL$L_ACCESS = 0,0,32,0 %;     !  Type of access desired
macro CHPCTL$L_FLAGS = 4,0,32,0 %;      !  Control flags
macro CHPCTL$V_READ = 4,0,1,0 %;        !  Read access
macro CHPCTL$V_WRITE = 4,1,1,0 %;       !  Write access
macro CHPCTL$V_USEREADALL = 4,2,1,0 %;  !  Try for read access via READALL
macro CHPCTL$B_MODE = 8,0,8,0 %;        !  Access mode of request
 
!*** MODULE $CHPRETDEF ***
! +
! 
!  CHeck Protection ConTroL RETurn argument block.  This block contains
!  the information needed to return arguments from the protection check.
! 
! -
literal CHPRET$K_LENGTH = 40;
literal CHPRET$C_LENGTH = 40;
literal CHPRET$S_CHPRET = 40;
macro CHPRET$W_AUDITLEN = 0,0,16,0 %;   !  Size of the audit ACE buffer
macro CHPRET$L_AUDIT = 4,0,32,0 %;      !  Address of the audit ACE buffer
macro CHPRET$L_AUDITRET = 8,0,32,0 %;   !  Address of word to get ACE length
macro CHPRET$W_ALARMLEN = 12,0,16,0 %;  !  Size of the alarm ACE buffer
macro CHPRET$L_ALARM = 16,0,32,0 %;     !  Address of the alarm ACE buffer
macro CHPRET$L_ALARMRET = 20,0,32,0 %;  !  Address of word to get ACE length
macro CHPRET$W_MATCHED_ACELEN = 24,0,16,0 %; !  Size of the matched ACE buffer
macro CHPRET$L_MATCHED_ACE = 28,0,32,0 %; !  Address of the matched ACE buffer
macro CHPRET$L_MATCHED_ACERET = 32,0,32,0 %; !  Address of word to get ACE length
macro CHPRET$L_PRIVS_USED = 36,0,32,0 %; !  Address of longword to get privileges used
 
!*** MODULE $CIADEF ***
! +
!  CIA - Compound Intrusion Analysis block
! 
!  Contains information about suspected and known intruders
! -
literal CIA$K_TERMINAL = 1;             !  Unknown user at terminal
literal CIA$K_TERM_USER = 2;            !  Known username at terminal
literal CIA$K_NETWORK = 3;              !  Network source
literal CIA$K_USERNAME = 4;             !  Username of parent process
literal CIA$M_INTRUDER = 1;
literal CIA$K_LENGTH = 152;             !  Length of CIA block
literal CIA$C_LENGTH = 152;             !  Length of CIA block
literal CIA$S_CIADEF = 152;
macro CIA$L_FLINK = 0,0,32,0 %;         !  Forward link to next block
macro CIA$L_BLINK = 4,0,32,0 %;         !  Backward link to previous block
macro CIA$W_SIZE = 8,0,16,0 %;          !  Size of block
macro CIA$B_TYPE = 10,0,8,0 %;          !  Structure type 
macro CIA$B_SUBTYPE = 11,0,8,0 %;       !  Structure subtype
!  Source of breakin attempt
macro CIA$W_FLAGS = 12,0,16,0 %;        !  Breakin type flags 
macro CIA$V_INTRUDER = 12,0,1,0 %;      !  Entry is an intruder
macro CIA$W_COUNT = 14,0,16,0 %;        !  Count of attempts
macro CIA$Q_TIME = 16,0,0,0 %;
literal CIA$S_TIME = 8;                 !  Expiration time of entry
macro CIA$T_DATA = 24,0,0,0 %;
literal CIA$S_DATA = 128;               !  Data area
 
!*** MODULE $CIBDTDEF ***
! +
!  CIBDT - CI BUFFER DESCRIPTOR TABLE
! 
!  THIS TABLE IS SHARABLE AMONG ALL CI PORTS ON A SYSTEM.  BUFFER
!  DESCRIPTORS (BD'S) ARE ALLOCATED FOR CI BLOCK TRANSFERS.
! -
literal CIBDT$K_BDLIST = 0;             ! START OF BUFFER DESCRIPTORS 
literal CIBDT$C_BDLIST = 0;             ! START OF BUFFER DESCRIPTORS 
literal CIBDT$C_LENGTH = 32;            ! LENGTH OF NEGATIVE PORTION OF STRUCT 
! 
literal CIBDT$S_CIBDTDEF = 33;
macro CIBDT$L_WAITFL = -32,0,32,0 %;    ! BD WAIT QUEUE FWD LINK 
macro CIBDT$L_WAITBL = -28,0,32,0 %;    ! BD WAIT QUEUE BACK LINK 
macro CIBDT$W_SIZE = -24,0,16,0 %;      ! STRUCTURE SIZE IN BYTES 
macro CIBDT$B_TYPE = -22,0,8,0 %;       ! CI STRUCTURE TYPE 
macro CIBDT$B_SUBTYP = -21,0,8,0 %;     ! CI STRUCT SUBTYPE FOR CI BDT 
macro CIBDT$L_OLDBL = -20,0,32,0 %;     ! Pre 4.4 backward link must be zero for V4.5 or after
macro CIBDT$L_FREEBD = -12,0,32,0 %;    ! ADDR OF FIRST FREE BD 
macro CIBDT$L_MAXIDX = -8,0,32,0 %;     ! MAX INDEX INTO BUFFER DESCRIPTORS 
macro CIBDT$L_QBDT_CNT = -4,0,32,0 %;   ! Count of BDT waits
 
!*** MODULE $CIBDDEF ***
! +
!  BD - CI BUFFER DESCRIPTOR FORMAT
! -
literal CIBD$M_AC = 4096;
literal CIBD$M_V = 32768;
literal CIBD$K_LENGTH = 16;             ! LENGTH OF A BUFFER DESCRIPTOR 
literal CIBD$C_LENGTH = 16;             ! LENGTH OF A BUFFER DESCRIPTOR 
literal CIBD$S_CIBDDEF = 16;
macro CIBD$W_FLAGS = 0,0,16,0 %;        ! FLAGS WORD 
macro CIBD$V_BOFF = 0,0,9,0 %;
literal CIBD$S_BOFF = 9;                !  BYTE OFFSET OF START OF BUFFER 
macro CIBD$V_AC = 0,12,1,0 %;           !  ACCESS MODE CHECK ENABLED IF SET 
macro CIBD$V_ACMOD = 0,13,2,0 %;
literal CIBD$S_ACMOD = 2;               !  ACCESS MODE REQ'D IN PTE'S 
macro CIBD$V_V = 0,15,1,0 %;            !  VALID BIT 
macro CIBD$W_KEY = 2,0,16,0 %;          ! SEQUENCE NUMBER 
macro CIBD$L_BLEN = 4,0,32,0 %;         ! LENGTH OF MAPPED BUFFER 
macro CIBD$L_SVAPTE = 8,0,32,0 %;       ! SVA OF PTE MAPPING START OF BUFFER 
macro CIBD$L_CDRP = 12,0,32,0 %;        ! ADDR OF ASSOCIATED CDRP 
macro CIBD$L_LINK = 12,0,32,0 %;        !  OR ADDR OF NEXT FREE DESCRIPTOR 
 
!*** MODULE $CIBHANDEF ***
! +
!  CIBHAN - CI BUFFER HANDLE FORMAT
! -
literal CIBHAN$K_LENGTH = 12;           ! LENGTH OF CI BUFFER HANDLE 
literal CIBHAN$C_LENGTH = 12;           ! LENGTH OF CI BUFFER HANDLE 
literal CIBHAN$S_CIBHANDEF = 12;
macro CIBHAN$L_BOFF = 0,0,32,0 %;       ! BYTE OFFSET IN LOCAL BUFFER 
macro CIBHAN$L_BNAME = 4,0,32,0 %;      ! NAME OF LOCAL BUFFER 
macro CIBHAN$L_RCONID = 8,0,32,0 %;     ! REMOTE CONNECTION ID 
 
!*** MODULE $CIFQDTDEF ***
! +
!  CIFQDT - CI FREE MESSAGE/DATAGRAM QUEUE DESCRIPTOR TABLE
! 
!  THIS DATA STRUCTURE AND THE QUEUES IT HAS HEADERS FOR MAY BE
!  SHARED AMONG ALL CI'S ON THE SYSTEM.
! -
literal CIFQDT$K_LENGTH = 32;           ! LENGTH OF CI FQDT 
literal CIFQDT$C_LENGTH = 32;           ! LENGTH OF CI FQDT 
literal CIFQDT$S_CIFQDTDEF = 32;
macro CIFQDT$W_DGSIZ = 0,0,16,0 %;      ! DATAGRAM SIZE (INCL PORT HEADER) 
macro CIFQDT$W_MSGSIZ = 2,0,16,0 %;     ! MESSAGE SIZE (INCL PORT HEADER) 
macro CIFQDT$W_SIZE = 8,0,16,0 %;       ! STRUCTURE SIZE IN BYTES 
macro CIFQDT$B_TYPE = 10,0,8,0 %;       ! CI STRUCTURE TYPE 
macro CIFQDT$B_SUBTYP = 11,0,8,0 %;     ! CI STRUCT SUBTYPE FOR CI FQDT 
macro CIFQDT$W_DGCNT = 12,0,16,0 %;     ! SUM OF INITL DG CREDITS FOR ALL CONNX 
macro CIFQDT$W_MSGCNT = 14,0,16,0 %;    ! SUM OF INITL MSG CREDITS FOR ALL CONNX 
macro CIFQDT$L_DGFL = 16,0,32,0 %;      ! DG FREE QUEUE FWD LINK 
macro CIFQDT$L_DGBL = 20,0,32,0 %;      ! DG FREE QUEUE BACK LINK 
macro CIFQDT$L_MSGFL = 24,0,32,0 %;     ! MSG FREE QUEUE FWD LINK 
macro CIFQDT$L_MSGBL = 28,0,32,0 %;     ! MSG FREE QUEUE BACK LINK 
 
!*** MODULE $CLUDEF ***
! +
!  CLUDEF - CLUSTER DEFINITIONS
! -
literal CLU$C_MAX_NODES = 256;          !  MAX CLUSTER NODES
literal CLU$K_MAX_NODES = 256;          !  MAX CLUSTER NODES
 
!*** MODULE $CLUBDEF ***
! +
!  CLUB - CLUSTER BLOCK.  
! 
! 	THERE IS ONE CLUB IN A VMS SYSTEM THAT IS PART OF A CLUSTER.
! 	THE CLUB DEFINES THE STATE OF THE THE CLUSTER AS KNOWN TO
! 	THE LOCAL SYSTEM.
! -
! 
! 	THE CLUB FORK BLOCK (CLUBFKB) IS A SUBBLOCK OF THE CLUB THAT IS
! 	USED WHEN IT NECESSARY TO WAIT IN ORDER TO ALLOCATE MEMORY OR
! 	WHEN IT IS DESIRABLE TO FORK TO ALLOW OTHER FORK PROCESSES A
! 	CHANCE TO RUN.
literal CLUBFKB$M_FKB_BUSY = 1;
literal CLUBFKB$M_FORKQ = 2;
literal CLUBFKB$C_LENGTH = 32;          !  LENGTH OF CLUBFKB
literal CLUBFKB$K_LENGTH = 32;          !  LENGTH OF CLUBFKB
literal CLUBFKB$S_CLUBFKBDEF = 32;
macro CLUBFKB$B_FORK_BLOCK = 0,0,0,1 %;
literal CLUBFKB$S_FORK_BLOCK = 24;      !  FORK BLOCK TO WAIT IN
macro CLUBFKB$L_PC2 = 24,0,32,0 %;      !  SAVED PC
macro CLUBFKB$L_STATUS = 28,0,32,0 %;   !  CLUSTER FAILOVER STATUS FLAGS
macro CLUBFKB$V_FKB_BUSY = 28,0,1,0 %;  !   FORK BLOCK IN USE FLAG
macro CLUBFKB$V_FORKQ = 28,1,1,0 %;     !   FORK BLOCK ON FORK QUEUE
! 
! 	THE CLUB POWERFAIL FORK BLOCK (CLUBPWF) IS A SUBBLOCK OF THE CLUB
! 	THAT IS USED TO FORK FROM IPL 31 TO IPL SCS DURING POWER RECOVERY.
literal CLUBPWF$M_BUSY = 1;
literal CLUBPWF$C_LENGTH = 28;          !  LENGTH OF CLUBPWF
literal CLUBPWF$K_LENGTH = 28;          !  LENGTH OF CLUBPWF
literal CLUBPWF$S_CLUBPWFDEF = 28;
macro CLUBPWF$B_FORK_BLOCK = 0,0,0,1 %;
literal CLUBPWF$S_FORK_BLOCK = 24;      !  FORK BLOCK TO WAIT IN
macro CLUBPWF$L_STATUS = 24,0,32,0 %;   !  BLOCK STATUS FLAGS
macro CLUBPWF$V_BUSY = 24,0,1,0 %;      !   FORK BLOCK IN USE FLAG
! 
! 	THE CLUSTER FAILOVER CONTROL BLOCK (CLUFCB) IS A SUBBLOCK OF
! 	THE CLUB THAT IS USED TO SEQUENCE FAILOVER ACTIONS IN A CLUSTER.
! 
literal CLUFCB$M_ACTIVE = 1;
literal CLUFCB$M_PENDING = 2;
literal CLUFCB$M_SYNC_NODE = 4;
literal CLUFCB$M_FKB_BUSY = 8;
literal CLUFCB$M_WAITING = 16;
literal CLUFCB$M_AUX = 32;
literal CLUFCB$M_RB_SUSPEND = 64;
literal CLUFCB$C_LENGTH = 112;          !  LENGTH OF CLUFCB
literal CLUFCB$K_LENGTH = 112;          !  LENGTH OF CLUFCB
literal CLUFCB$S_CLUFCBDEF = 112;
macro CLUFCB$B_FORK_BLOCK = 0,0,0,1 %;
literal CLUFCB$S_FORK_BLOCK = 24;       !  FORK BLOCK TO WAIT IN
macro CLUFCB$L_STEP = 24,0,32,0 %;      !  CURRENT FAILOVER STEP INDEX
macro CLUFCB$L_ID = 28,0,32,0 %;        !  FAILOVER INSTANCE IDENTIFICATION
macro CLUFCB$L_STATUS = 32,0,32,0 %;    !  CLUSTER FAILOVER STATUS FLAGS
macro CLUFCB$V_ACTIVE = 32,0,1,0 %;     !   FAILOVER ROUTINE ACTIVE
macro CLUFCB$V_PENDING = 32,1,1,0 %;    !   FAILOVER PENDING
macro CLUFCB$V_SYNC_NODE = 32,2,1,0 %;  !   LOCAL NODE IS SYNCHRONIZER
macro CLUFCB$V_FKB_BUSY = 32,3,1,0 %;   !   FORK BLOCK IN USE FLAG
macro CLUFCB$V_WAITING = 32,4,1,0 %;    !   WAITING FOR NODES TO RESPOND
macro CLUFCB$V_AUX = 32,5,1,0 %;        !   AUXILIARY FORK BLOCK ALLOCATED
macro CLUFCB$V_RB_SUSPEND = 32,6,1,0 %; !   REBUILD SUSPENDED
macro CLUFCB$L_SYNC_CSB = 36,0,32,0 %;  !  ADDRESS OF CSB OF SYNCHRONIZING SYSTEM
macro CLUFCB$B_NODEMAP = 40,0,0,1 %;
literal CLUFCB$S_NODEMAP = 32;          !  BITMAP OF ALL INVOLVED NODES
macro CLUFCB$B_RESPMAP = 72,0,0,1 %;
literal CLUFCB$S_RESPMAP = 32;          !  BITMAP OF NODES READY FOR A STEP
macro CLUFCB$L_INDEX = 104,0,32,0 %;    !  STORAGE FOR BIT MAP INDEX
macro CLUFCB$L_AUX_FKB = 108,0,32,0 %;  !  ADDRESS OF AUXILIARY FORK BLOCK 
literal CLUB$M_CLUSTER = 1;
literal CLUB$M_QF_ACTIVE = 2;
literal CLUB$M_QF_DYNVOTE = 4;
literal CLUB$M_QF_WATCHER = 8;
literal CLUB$M_SHUTDOWN = 16;
literal CLUB$M_QF_REFRESH_REQ = 32;
literal CLUB$M_STS_PPHASE = 256;
literal CLUB$M_STS_PH0 = 512;
literal CLUB$M_STS_PH1B = 1024;
literal CLUB$M_STS_PH1 = 2048;
literal CLUB$M_STS_PH2 = 4096;
literal CLUB$M_FKB_BUSY = 65536;
literal CLUB$M_UNLOCK = 131072;
literal CLUB$M_NO_FORM = 262144;
literal CLUB$M_INIT = 524288;
literal CLUB$M_BACKOUT = 1048576;
literal CLUB$M_PRIOR_PROTOCOL = 2097152;
literal CLUB$M_VERBOSE = 4194304;
literal CLUB$M_LOST_CNX = 8388608;
literal CLUB$M_QF_FAILED_NODE = 16777216;
literal CLUB$M_QF_VOTE = 33554432;
literal CLUB$M_QF_NEWVOTE = 67108864;
literal CLUB$M_ADJ_QUORUM = 134217728;
literal CLUB$M_QUORUM = 268435456;
literal CLUB$M_TRANSITION = 536870912;
literal CLUB$M_RESLOCKIP = 1073741824;
literal CLUB$M_QTQEBSY = -2147483648;
literal CLUB$M_LK_MERGEIP = 4;
literal CLUB$M_LK_DO_FULL = 8;
literal CLUB$M_LK_FULL = 16;
literal CLUB$M_LK_DO_DIR = 32;
literal CLUB$M_LK_DIR = 64;
literal CLUB$M_LK_NO_RMVDIR = 128;
literal CLUB$M_LK_INIT_RBLD = 256;
literal CLUB$M_LK_NO_RM = 512;
literal CLUB$M_LK_TABLE_V51 = 1024;
literal CLUB$M_LK_SPECIAL_1 = 2048;
literal CLUB$M_LK_RM_DSBL = 4096;
literal CLUB$M_LK_TABLE_1 = 8192;
literal CLUB$M_LK_SHUTDOWN = 16384;
literal CLUB$M_LK_SHUT_IP = 32768;
literal CLUB$M_NO_FQUORUM = 1;
literal CLUB$M_NO_DQUORUM = 2;
literal CLUB$M_IFW_REQ = 4;
literal CLUB$M_RNS_REQ = 8;
literal CLUB$M_CLUGEN_VALID = 1;
literal CLUB$C_LENGTH = 532;            !  LENGTH OF CLUB 
literal CLUB$K_LENGTH = 532;            !  LENGTH OF CLUB 
literal CLUB$S_CLUBDEF = 532;
macro CLUB$L_CSBQFL = 0,0,32,0 %;       !  CSB QUEUE FORWARD LINK
macro CLUB$L_CSBQBL = 4,0,32,0 %;       !  CSB QUEUE BACKWARD LINK
macro CLUB$W_SIZE = 8,0,16,0 %;         !  SIZE OF CLUB IN BYTES
macro CLUB$B_TYPE = 10,0,8,0 %;         !  STRUCTURE TYPE 
macro CLUB$B_SUBTYPE = 11,0,8,0 %;      !  STRUCTURE SUBTYPE
macro CLUB$L_POLL_CTX = 12,0,32,0 %;    !  SCS POLLER CONTEXT
macro CLUB$L_LOCAL_CSB = 16,0,32,0 %;   !  ADDRESS OF THE CSB FOR LOCAL SYSTEM
macro CLUB$L_ASTQFL = 20,0,32,0 %;      !  AST QUEUE FORWARD LINK
macro CLUB$L_ASTQBL = 24,0,32,0 %;      !  AST QUEUE BACKWARD LINK
macro CLUB$L_FLAGS = 28,0,32,0 %;       !  CLUSTER STATUS FLAGS
macro CLUB$V_CLUSTER = 28,0,1,0 %;      !   THIS NODE IS MEMBER OF CLUSTER
macro CLUB$V_QF_ACTIVE = 28,1,1,0 %;    !   QUORUM FILE IS READABLE, CONTRIBUTE TO STATIC QUORUM
macro CLUB$V_QF_DYNVOTE = 28,2,1,0 %;   !   QUORUM FILE CAN CONTRIBUTE TO DYNAMIC QUORUM
macro CLUB$V_QF_WATCHER = 28,3,1,0 %;   !   NODE IS QUORUM FILE WATCHER
macro CLUB$V_SHUTDOWN = 28,4,1,0 %;     !   NODE READY FOR CLUSTER SHUTDOWN
macro CLUB$V_QF_REFRESH_REQ = 28,5,1,0 %; !   QUORUM FILE REFRESH REQUESTED
macro CLUB$V_STS_PPHASE = 28,8,1,0 %;   !   STATUS ANALYZER POLLING PHASE
macro CLUB$V_STS_PH0 = 28,9,1,0 %;      !   STATUS ANALYZER, PHASE 0 SEEN
macro CLUB$V_STS_PH1B = 28,10,1,0 %;    !   STATUS ANALYZER, PHASE 1 (COORD CNX BROKEN) SEEN
macro CLUB$V_STS_PH1 = 28,11,1,0 %;     !   STATUS ANALYZER, PHASE 1 (COORD CNX OK) SEEN
macro CLUB$V_STS_PH2 = 28,12,1,0 %;     !   STATUS ANALYZER, PHASE 2 SEEN
macro CLUB$V_FKB_BUSY = 28,16,1,0 %;    !   FORK BLOCK IN USE
macro CLUB$V_UNLOCK = 28,17,1,0 %;      !   UNLOCK REQUESTED
macro CLUB$V_NO_FORM = 28,18,1,0 %;     !   PROHIBIT NODE FROM FORMING A NEW CLUSTER
macro CLUB$V_INIT = 28,19,1,0 %;        !   READY FOR CLUSTER JOIN/FORMATION
macro CLUB$V_BACKOUT = 28,20,1,0 %;     !   MUST EVENTUALLY BACK-OUT TRANSITION
macro CLUB$V_PRIOR_PROTOCOL = 28,21,1,0 %; !   Earlier version protocol present 
macro CLUB$V_VERBOSE = 28,22,1,0 %;     !   VERBOSE MODE
macro CLUB$V_LOST_CNX = 28,23,1,0 %;    !   CONNECTION TO CLUSTER MEMBER HAS BEEN LOST
macro CLUB$V_QF_FAILED_NODE = 28,24,1,0 %; !   A NODE HAS BEEN FAILED OUT
macro CLUB$V_QF_VOTE = 28,25,1,0 %;     !   QUORUM DISK IS CONTRIBUTING A (STATIC) VOTE
macro CLUB$V_QF_NEWVOTE = 28,26,1,0 %;  !   STAGING FOR QF_VOTE
macro CLUB$V_ADJ_QUORUM = 28,27,1,0 %;  !   QUORUM ADJUSTMENT REQUESTED
macro CLUB$V_QUORUM = 28,28,1,0 %;      !   CLUSTER IS IN QUORUM
macro CLUB$V_TRANSITION = 28,29,1,0 %;  !   STATE TRANSITION IN PROGRESS
macro CLUB$V_RESLOCKIP = 28,30,1,0 %;   !   RESERVATION LOCK IN PROGRESS
macro CLUB$V_QTQEBSY = 28,31,1,0 %;     !   QUORUM TQE IS ALREADY IN QUE
macro CLUB$L_LK_FLAGS = 32,0,32,0 %;
macro CLUB$V_LK_MERGEIP = 32,2,1,0 %;   !   MERGE IN PROGRESS (LOCAL)
macro CLUB$V_LK_DO_FULL = 32,3,1,0 %;   !   DO A FULL REBUILD
macro CLUB$V_LK_FULL = 32,4,1,0 %;      !   FULL REBUILD
macro CLUB$V_LK_DO_DIR = 32,5,1,0 %;    !   DO A DIRECTORY REBUILD
macro CLUB$V_LK_DIR = 32,6,1,0 %;       !   DIRECTORY REBUILD
macro CLUB$V_LK_NO_RMVDIR = 32,7,1,0 %; !   INHIBIT RMVDIRS
macro CLUB$V_LK_INIT_RBLD = 32,8,1,0 %; !   INITIAL REBUILD FLAG
macro CLUB$V_LK_NO_RM = 32,9,1,0 %;     !   (obsolete)
macro CLUB$V_LK_TABLE_V51 = 32,10,1,0 %; !   (obsolete)
macro CLUB$V_LK_SPECIAL_1 = 32,11,1,0 %; !   (obsolete)
macro CLUB$V_LK_RM_DSBL = 32,12,1,0 %;  !   REMASTER DISABLED DUE TO REBUILD
macro CLUB$V_LK_TABLE_1 = 32,13,1,0 %;  !   FAILOVER TABLE 1 IN USE
macro CLUB$V_LK_SHUTDOWN = 32,14,1,0 %; !   SHUTDOWN REQUESTED
macro CLUB$V_LK_SHUT_IP = 32,15,1,0 %;  !   SHUTDOWN IN PROGRESS
macro CLUB$W_RSEQNUM = 36,0,16,0 %;     !   FULL REBUILD SEQUENCE NUMBER
macro CLUB$W_DIRSEQNUM = 38,0,16,0 %;   !   DIRECTORY REBUILD SEQ
macro CLUB$B_QSTATUS = 40,0,8,0 %;      !  QUORUM STATUS FLAGS
macro CLUB$V_NO_FQUORUM = 40,0,1,0 %;   !   NO FORMAL QUORUM
macro CLUB$V_NO_DQUORUM = 40,1,1,0 %;   !   NO DYNAMIC QUORUM
macro CLUB$V_IFW_REQ = 40,2,1,0 %;      !   INCARNATION FILE WRITE REQUIRED
macro CLUB$V_RNS_REQ = 40,3,1,0 %;      !   REMOVED NODE STATUS REQUIRED
macro CLUB$W_QDVOTES = 42,0,16,0 %;     !  VOTES HELD BY QUORUM DISK
macro CLUB$W_QUORUM = 44,0,16,0 %;      !  CLUSTER QUORUM
macro CLUB$W_VOTES = 46,0,16,0 %;       !  CLUSTER VOTES
macro CLUB$W_CEVOTES = 48,0,16,0 %;     !  UNIVERSE OF VOTES
macro CLUB$W_ADJ_CEVOTES = 50,0,16,0 %; !  UNIVERSE OF VOTES ADJUSTMENT REQUESTED VALUE
macro CLUB$W_NODES = 52,0,16,0 %;       !  NODES IN CLUSTER
macro CLUB$B_FSYSID = 54,0,0,1 %;
literal CLUB$S_FSYSID = 6;              !  FOUNDING NODE'S SYSID
macro CLUB$Q_FTIME = 60,0,0,0 %;
literal CLUB$S_FTIME = 8;               !  FOUNDING TIME
macro CLUB$L_LST_XTN = 68,0,32,0 %;     !  LAST COMPLETED TRANSACTION NUMBER
macro CLUB$L_LST_COORD = 72,0,32,0 %;   !  LAST COMPLETED TRANSACTION COORDINATOR CSID
macro CLUB$Q_LST_TIME = 76,0,0,0 %;
literal CLUB$S_LST_TIME = 8;            !  LAST COMPLETED TRANSACTION TIME-STAMP
macro CLUB$B_LST_CODE = 84,0,8,0 %;     !  LAST COMPLETED TRANSACTION CODE
macro CLUB$B_LST_PHASE = 85,0,8,0 %;    !  LAST COMPLETED TRANSACTION CODE
macro CLUB$W_NEWQDVOTES = 86,0,16,0 %;  !  STAGING FOR QDVOTES
macro CLUB$L_CUR_XTN = 88,0,32,0 %;     !  CURRENT TRANSACTION NUMBER
macro CLUB$L_CUR_COORD = 92,0,32,0 %;   !  CURRENT TRANSACTION COORDINATOR CSID
macro CLUB$Q_CUR_TIME = 96,0,0,0 %;
literal CLUB$S_CUR_TIME = 8;            !  CURRENT TRANSACTION TIME-STAMP
macro CLUB$B_CUR_CODE = 104,0,8,0 %;    !  TRANSACTION CODE
macro CLUB$B_CUR_PHASE = 105,0,8,0 %;   !  TRANSACTION PHASE
macro CLUB$W_MSGCNT = 106,0,16,0 %;     !  OUTSTANDING/WAITING MESSAGE COUNT
macro CLUB$L_COORD = 108,0,32,0 %;      !  COORDINATOR'S CSB ADDRESS
macro CLUB$L_LOCAL_CSID = 112,0,32,0 %; !  LOCAL SYSTEM CSID
macro CLUB$W_LOCAL_CSID_IDX = 112,0,16,0 %; !  SLOT INDEX
macro CLUB$W_LOCAL_CSID_SEQ = 114,0,16,0 %; !  SEQUENCE NUMBER
macro CLUB$W_NEXT_CSID = 116,0,16,0 %;  !  INDEX OF NEXT CSID TO ASSIGN
macro CLUB$W_FIRST_INDEX = 118,0,16,0 %; !  INDEX OF FIRST CSID ASSIGNED
macro CLUB$L_MAX_XTN = 120,0,32,0 %;    !  LARGEST TRANSACTION ID SEEN
macro CLUB$L_RETRYCNT = 124,0,32,0 %;   !  RESOURCE ALLOCATION RETRIES AVAILABLE
macro CLUB$L_CTX0 = 128,0,32,0 %;       !  LEVEL 0 CONTEXT AREA
macro CLUB$L_RET1 = 132,0,32,0 %;       !  LEVEL 1 SUBROUTINE RETURN
macro CLUB$L_CTX1 = 136,0,32,0 %;       !  LEVEL 1 CONTEXT AREA
macro CLUB$L_RET2 = 140,0,32,0 %;       !  LEVEL 2 SUBROUTINE RETURN
macro CLUB$L_CTX2 = 144,0,32,0 %;       !  LEVEL 2 CONTEXT AREA
macro CLUB$L_TQE = 148,0,32,0 %;        !  ADDRESS OF TIMER ENTRY
macro CLUB$L_CSPIPID = 152,0,32,0 %;    !  PID OF CLUSTER SERVER (FOR SCH$WAKE)
macro CLUB$Q_NEWTIME = 156,0,0,0 %;
literal CLUB$S_NEWTIME = 8;             !  NEW VALUE OF TIME
macro CLUB$Q_NEWTIME_REF = 164,0,0,0 %;
literal CLUB$S_NEWTIME_REF = 8;         !  LOCAL REFERENCE FOR NEW TIME
macro CLUB$W_NEWQUORUM = 172,0,16,0 %;  !  NEW VALUE FOR QUORUM
macro CLUB$W_NEWCEVOTES = 174,0,16,0 %; !  NEW UNIVERSE OF VOTES 
macro CLUB$L_FMERIT = 176,0,32,0 %;     !  FIGURE OF MERIT FOR OPTIMAL CLUSTER
macro CLUB$L_E_MEMSEQ = 180,0,32,0 %;   !  EXTENDED MEMBERSHIP STATE SEQUENCE NUMBER
macro CLUB$W_MEMSEQ = 180,0,16,0 %;     !  MEMBERSHIP STATE SEQUENCE NUMBER
macro CLUB$L_RANDOM = 184,0,32,0 %;     !  RANDOM NUMBER GENERATOR CONTEXT
macro CLUB$L_CLUDCB = 188,0,32,0 %;     !  ADDRESS OF QUORUM DISK CONTROL BLOCK
macro CLUB$T_QDNAME = 192,0,0,0 %;
literal CLUB$S_QDNAME = 16;             !  QUORUM DISK FULLDEVNAM
macro CLUB$L_CLUICB = 208,0,32,0 %;     !  ADDRESS OF INCARNATION FILE CONTROL BLOCK
macro CLUB$L_FOREIGN_CLUSTER = 212,0,32,0 %; !  SHIFT REGISTER INDICATING FOREIGN CLUSTER SEEN
macro CLUB$L_ENBL_VERBOSE = 216,0,32,0 %; !  TIME TO ENABLE VERBOSE MODE
macro CLUB$L_QLOST_CLUGEN = 220,0,32,0 %; !  CLUSTER GENERATION WHEN QUORUM LOST
macro CLUB$L_STG_JOIN_CLUGEN = 224,0,32,0 %; !  STAGING AREA FOR CLUSTER GENERATION
macro CLUB$L_JOIN_CLUGEN = 228,0,32,0 %; !  JOINING NODE'S LAST CLUSTER GENERATION NUMBER
macro CLUB$W_STG_JOIN_FLAGS = 232,0,16,0 %; !  STAGING AREA FOR JOIN FLAGS
macro CLUB$W_JOIN_FLAGS = 234,0,16,0 %; !  JOINING NODE'S FLAGS
macro CLUB$V_CLUGEN_VALID = 234,0,1,0 %; !   GENERATION DATA FIELDS VALID
macro CLUB$Q_CSPQ = 240,0,0,0 %;
literal CLUB$S_CSPQ = 8;                !  QUEUE FOR COMMUNICATION WITH CSP
macro CLUB$B_FORK_BLOCK = 248,0,0,1 %;
literal CLUB$S_FORK_BLOCK = 32;         !  FORK BLOCK TO WAIT IN (CLUBFKB SUB-STRUCTURE)
macro CLUB$B_NODEMAP = 280,0,0,1 %;
literal CLUB$S_NODEMAP = 32;            !  BITMAP OF ALL POSSIBLE NODES
macro CLUB$B_CLUFCB = 312,0,0,1 %;
literal CLUB$S_CLUFCB = 112;            !  CLUSTER FAILOVER CONTROL BLOCK
macro CLUB$B_HANG_FKB = 424,0,0,1 %;
literal CLUB$S_HANG_FKB = 24;           !  FORK BLOCK TO USE TO BLOCK ACTIVITY AT IPL 4
macro CLUB$B_CLUBPWF = 448,0,0,1 %;
literal CLUB$S_CLUBPWF = 28;            !  FORK BLOCK TO USE DURING POWER RECOVERY
!  New cells located at end to minimize rebuiding.  Should be moved someday.
macro CLUB$L_RESLOCKTMO = 476,0,32,0 %; !  RESERVATION EXPIRATION TIME
macro CLUB$L_RESLOCKCSID = 480,0,32,0 %; !  CSID OF RESERVATION HOLDER
macro CLUB$L_LOCKTIME = 484,0,32,0 %;   !  TIME LOCKED
macro CLUB$W_MERGE_CNT = 488,0,16,0 %;  !  MERGE COUNTER
macro CLUB$W_PARSEQNUM = 490,0,16,0 %;  !  PARTIAL REBUILD SEQUENCE NUMBER
macro CLUB$B_NEWRBLD_REQ = 492,0,8,0 %; !  PROPOSED REBUILD REQUEST
macro CLUB$B_RBLD_CLU = 493,0,8,0 %;    !  REBUILD IN PROGRESS IN CLUSTER
macro CLUB$B_RBLD_LOC = 494,0,8,0 %;    !  REBUILD IN PROGRESS ON LOCAL NODE
macro CLUB$L_CLURCBFL = 496,0,32,0 %;   !  ACTIVE RCBs
macro CLUB$L_CLURCBBL = 500,0,32,0 %;   ! 
macro CLUB$W_RBLD_INHIB = 504,0,16,0 %; !  REASONS TO INHIBIT A LOCK REBUILD
macro CLUB$B_RM_QUOTA = 506,0,8,0 %;    !  REMASTERING QUOTA
macro CLUB$W_NCNID = 508,0,16,0 %;      !  NEXT CLUSTER NODE ID
macro CLUB$W_NEWNCNID = 510,0,16,0 %;   !  NEW NEXT CLUSTER NODE ID
macro CLUB$L_TOFF = 512,0,32,0 %;       !  LOCKING OFF
macro CLUB$L_TON = 516,0,32,0 %;        !  LOCKING ON
macro CLUB$L_TBLS = 520,0,32,0 %;       !  TABLE START
macro CLUB$L_QTQE = 524,0,32,0 %;       !  POINTER TO QUORUM LOSS TQE
macro CLUB$L_SYNC_STEP = 528,0,32,0 %;  !  SYNC STEP COUNT (move to clurcb)
 
!*** MODULE $CLUDCBDEF ***
! +
!  CLUDCB - Cluster Quorum Disk Control Block
! -
literal CLUDCB$M_QS_REM_INA = 1;
literal CLUDCB$M_QS_REM_ACT = 2;
literal CLUDCB$M_QS_NOT_READY = 4;
literal CLUDCB$M_QS_READY = 8;
literal CLUDCB$M_QS_ACTIVE = 16;
literal CLUDCB$M_QS_CLUSTER = 32;
literal CLUDCB$M_QS_VOTE = 64;
literal CLUDCB$M_QF_INQTMO = 1;
literal CLUDCB$M_QF_INQIP = 2;
literal CLUDCB$M_QF_TIM = 4;
literal CLUDCB$M_QF_RIP = 8;
literal CLUDCB$M_QF_WIP = 16;
literal CLUDCB$M_QF_ERROR = 32;
literal CLUDCB$M_QF_FIRST_ERR = 64;
literal CLUDCB$M_QF_WRL_ERR = 128;
literal CLUDCB$M_QF_NOACCESS = 256;
literal CLUDCB$M_CSP_ACK = 1;
literal CLUDCB$M_CSP_LBN_VALID = 2;
literal CLUDCB$M_CSP_MVHELP = 4;
literal CLUDCB$K_F_LENGTH = 43;         !  Length of fixed portion of CLUDCB
literal CLUDCB$C_F_LENGTH = 43;         !  Length of fixed portion of CLUDCB
literal CLUDCB$K_LENGTH = 560;          !  Length of CLUDCB
literal CLUDCB$C_LENGTH = 560;          !  Length of CLUDCB
!  The quorum disk is specified with 4 sysgen parameters. DISK_QUORUM1
literal CLUDCB$S_DISK_QUORUM = 16;
literal CLUDCB$S_CLUDCB = 560;
macro CLUDCB$L_CLUDCBFL = 0,0,32,0 %;   !  Forward Link (not used)
macro CLUDCB$L_CLUDCBBL = 4,0,32,0 %;   !  Backward Link (not used)
macro CLUDCB$W_SIZE = 8,0,16,0 %;       !  Size of CLUDCB (bytes)
macro CLUDCB$B_TYPE = 10,0,8,0 %;       !  Structure type
macro CLUDCB$B_SUBTYPE = 11,0,8,0 %;    !  Structure subtype
macro CLUDCB$L_UCB = 12,0,32,0 %;       !  Address of quorum disk UCB
macro CLUDCB$L_IRP = 16,0,32,0 %;       !  Address of IRP
macro CLUDCB$L_TQE = 20,0,32,0 %;       !  Address of timer queue entry
macro CLUDCB$L_WATCHER_CSID = 24,0,32,0 %; !  CSID of quorum file watcher
macro CLUDCB$L_ACT_COUNT = 28,0,32,0 %; !  Saved activity counter
macro CLUDCB$L_QFLBN = 32,0,32,0 %;     !  Quorum file logical block number
macro CLUDCB$W_STATE = 36,0,16,0 %;     !  Quorum disk state bits
macro CLUDCB$V_QS_REM_INA = 36,0,1,0 %; !  Remote inactive
macro CLUDCB$V_QS_REM_ACT = 36,1,1,0 %; !  Remote active
macro CLUDCB$V_QS_NOT_READY = 36,2,1,0 %; !  Not ready
macro CLUDCB$V_QS_READY = 36,3,1,0 %;   !  Ready
macro CLUDCB$V_QS_ACTIVE = 36,4,1,0 %;  !  Active
macro CLUDCB$V_QS_CLUSTER = 36,5,1,0 %; !  Active and this node is a cluster member
macro CLUDCB$V_QS_VOTE = 36,6,1,0 %;    !  Potential vote
macro CLUDCB$W_FLAGS = 38,0,16,0 %;     !  CLUDCB status bits
macro CLUDCB$V_QF_INQTMO = 38,0,1,0 %;  !  Status inquiry timed out
macro CLUDCB$V_QF_INQIP = 38,1,1,0 %;   !  Remote inquiry in progress
macro CLUDCB$V_QF_TIM = 38,2,1,0 %;     !  Read or write timed out
macro CLUDCB$V_QF_RIP = 38,3,1,0 %;     !  Read in progress
macro CLUDCB$V_QF_WIP = 38,4,1,0 %;     !  Write in progress
macro CLUDCB$V_QF_ERROR = 38,5,1,0 %;   !  Quorum disk error has been reported
macro CLUDCB$V_QF_FIRST_ERR = 38,6,1,0 %; !  First error has already been seen
macro CLUDCB$V_QF_WRL_ERR = 38,7,1,0 %; !  Quorum disk is write-locked
macro CLUDCB$V_QF_NOACCESS = 38,8,1,0 %; !  Never access the quorum disk directly
macro CLUDCB$W_CSP_FLAGS = 40,0,16,0 %; !  Flags for interlocked communication with CSP
macro CLUDCB$V_CSP_ACK = 40,0,1,0 %;    !  CSP request has been acknowledged
macro CLUDCB$V_CSP_LBN_VALID = 40,1,1,0 %; !  CSP has found a quorum file
macro CLUDCB$V_CSP_MVHELP = 40,2,1,0 %; !  Restart mount verification 
macro CLUDCB$B_COUNTER = 42,0,8,0 %;    !  Iteration counter
macro CLUDCB$T_BUFFER = 44,0,0,0 %;
literal CLUDCB$S_BUFFER = 516;          !  Quorum file buffer
!  to DISK_QUORUM4. Each parameter can specify 4 bytes.
 
!*** MODULE $CLUICBDEF ***
! +
!  CLUICB - Incarnation File Control Block
! -
literal CLUICB$M_WIP = 1;
literal CLUICB$M_WREQ = 2;
literal CLUICB$K_F_LENGTH = 24;         !  Length of fixed portion
literal CLUICB$C_F_LENGTH = 24;         !  Length of fixed portion
!  End of fixed portion of the block
literal CLUICB$T_BUFFER = 24;           !  Start of incarnation
!   file buffer area
literal CLUICB$S_CLUICB = 24;
!  Fixed portion
macro CLUICB$L_FL = 0,0,32,0 %;         !  Forward Link
macro CLUICB$L_BL = 4,0,32,0 %;         !  Backward Link
macro CLUICB$W_SIZE = 8,0,16,0 %;       !  Size of block
macro CLUICB$B_TYPE = 10,0,8,0 %;       !  Structure type
macro CLUICB$B_SUBTYPE = 11,0,8,0 %;    !  Structure subtype
macro CLUICB$L_IRP = 12,0,32,0 %;       !  Address of IRP
macro CLUICB$L_LBN = 16,0,32,0 %;       !  Incarnation file logical block number
macro CLUICB$W_WIP_CNT = 20,0,16,0 %;   !  Write-in-progress counter
macro CLUICB$W_FLAGS = 22,0,16,0 %;     !  Flags
macro CLUICB$V_WIP = 22,0,1,0 %;        !  Write-in-progress bit 
macro CLUICB$V_WREQ = 22,1,1,0 %;       !  Write requested bit
 
!*** MODULE $CLUOPTDEF ***
! +
!  CLUOPT - Cluster Optimal ReConfiguration Context Block
! -
literal CLUOPT$K_LENGTH = 116;          !  Length of CLUOPT
literal CLUOPT$C_LENGTH = 116;          !  Length of CLUOPT
literal CLUOPT$S_CLUOPT = 116;
macro CLUOPT$L_PREV = 0,0,32,0 %;       !  Link to previous CLUOPT block
macro CLUOPT$W_SIZE = 8,0,16,0 %;       !  Size of CLUOPT (bytes)
macro CLUOPT$B_TYPE = 10,0,8,0 %;       !  Structure type
macro CLUOPT$B_SUBTYPE = 11,0,8,0 %;    !  Structure subtype
macro CLUOPT$L_CMERIT = 12,0,32,0 %;    !  Figure of merit of nodes in CMAP
macro CLUOPT$L_ACMERIT = 16,0,32,0 %;   !  Figure of merit of nodes in AMAP + CMAP
macro CLUOPT$B_CMAP = 20,0,0,1 %;
literal CLUOPT$S_CMAP = 32;             !  Map of nodes in proposed cluster
macro CLUOPT$B_AMAP = 52,0,0,1 %;
literal CLUOPT$S_AMAP = 32;             !  Map of nodes available for cluster
macro CLUOPT$B_RMAP = 84,0,0,1 %;
literal CLUOPT$S_RMAP = 32;             !  Map of nodes remaining for consideration
 
!*** MODULE $CLUPBDEF ***
! +
!  CLUPB - PARALLEL CONTEXT BLOCK
! 
! -
literal CLUPB$M_BUSY = 1;
literal CLUPB$K_FIX_LENGTH = 44;
!   Optional extensions for user's of the service
literal CLUPB$K_RBLD_LENGTH = 64;
literal CLUPB$K_LENGTH = 64;            ! LENGTH
literal CLUPB$C_LENGTH = 64;            ! LENGTH
literal CLUPB$S_CLUPBDEF = 64;
!  This section reserved for the service itself
macro CLUPB$B_FORK_BLOCK = 0,0,0,1 %;
literal CLUPB$S_FORK_BLOCK = 24;        !  FORK BLOCK
macro CLUPB$W_FLAGS = 24,0,16,0 %;      !  STATUS FLAGS
macro CLUPB$V_BUSY = 24,0,1,0 %;
macro CLUPB$B_THREADS = 26,0,8,0 %;     !  ACTIVE THREADS
macro CLUPB$B_MAX_THREADS = 27,0,8,0 %; !  MAX ACTIVE THREADS
macro CLUPB$L_PARENT = 28,0,32,0 %;     !  PARENT CONTEXT BLOCK
!  This section filled in by user of service
macro CLUPB$L_ACTION = 32,0,32,0 %;     !  ACTION ROUTINE
macro CLUPB$L_CPLRTN = 36,0,32,0 %;     !  COMPLETION ROUTINE
macro CLUPB$L_CPLPRM = 40,0,32,0 %;     !  COMPLETION PARAMETER
!   Lock rebuild extensions
macro CLUPB$L_RTN1 = 44,0,32,0 %;       !  SAVED RETURN ADDRESS
macro CLUPB$L_RTRSB = 48,0,32,0 %;      !  ROOT RSB
macro CLUPB$L_RSB_LIST = 52,0,32,0 %;   !  RSB LIST ADDRESS
macro CLUPB$L_LKB_LIST = 56,0,32,0 %;   !  LKB LIST ADDRESS
macro CLUPB$B_QCNT = 60,0,8,0 %;        !  QUEUE COUNTER
!   Other extensions can go here
 
!*** MODULE $CLURCBDEF ***
! +
!  CLURCB - REMASTER CONTROL BLOCK
! 
! -
literal CLURCB$M_BUSY = 1;
literal CLURCB$M_FQ = 2;
literal CLURCB$M_EXP_DONE_VLD = 4;
literal CLURCB$M_QUOTA = 8;
literal CLURCB$M_OLDMST = 16;
literal CLURCB$M_EXPMSG = 32;
literal CLURCB$K_LENGTH = 228;          ! LENGTH OF CLURCB
literal CLURCB$C_LENGTH = 228;          ! LENGTH OF CLURCB
literal CLURCB$S_CLURCBDEF = 228;
macro CLURCB$L_CLURCBFL = 0,0,32,0 %;   !  FORWARD LINK
macro CLURCB$L_CLURCBBL = 4,0,32,0 %;   !  BACKWARD LINK
macro CLURCB$W_SIZE = 8,0,16,0 %;       !  SIZE IN BYTES
macro CLURCB$B_TYPE = 10,0,8,0 %;       !  STRUCTURE TYPE 
macro CLURCB$B_SUBTYPE = 11,0,8,0 %;    !  STRUCTURE SUBTYPE
macro CLURCB$B_FORK_BLOCK = 12,0,0,1 %;
literal CLURCB$S_FORK_BLOCK = 24;       !  FORK BLOCK TO WAIT IN
macro CLURCB$L_FLAGS = 36,0,32,0 %;     !  STATUS FLAGS
macro CLURCB$V_BUSY = 36,0,1,0 %;       !  Fork block in use
macro CLURCB$V_FQ = 36,1,1,0 %;         !  On fork queue
macro CLURCB$V_EXP_DONE_VLD = 36,2,1,0 %; !  Expected done count valid
macro CLURCB$V_QUOTA = 36,3,1,0 %;      !  Quota charged
macro CLURCB$V_OLDMST = 36,4,1,0 %;     !  Old master
macro CLURCB$V_EXPMSG = 36,5,1,0 %;     !  Message expected
macro CLURCB$B_QCNT = 40,0,8,0 %;       !  LOCK QUEUE COUNTER
macro CLURCB$L_LKB_LIST = 44,0,32,0 %;  !  ADDRESS OF LKB LIST
macro CLURCB$L_RSB_LIST = 48,0,32,0 %;  !  ADDRESS OF RSB LIST
macro CLURCB$L_CNTX1 = 52,0,32,0 %;     !  CONTEXT STORAGE
macro CLURCB$L_CNTX2 = 56,0,32,0 %;     !  CONTEXT STORAGE
macro CLURCB$L_WAITRET = 60,0,32,0 %;   !  RETURN PC STORAGE
macro CLURCB$W_EXP_DONE = 64,0,16,0 %;  !  RBLD_DONES expected
macro CLURCB$W_RCV_DONE = 66,0,16,0 %;  !  RBLD_DONES received
macro CLURCB$W_RSEQNUM = 68,0,16,0 %;   !  FULL REBUILD SEQ NUM
macro CLURCB$W_PARSEQNUM = 70,0,16,0 %; !  PARTIAL REBUILD SEQ NUM
macro CLURCB$L_NEWMASTER = 72,0,32,0 %; !  NEW MASTER'S CSID
macro CLURCB$L_OLDMASTER = 76,0,32,0 %; !  OLD MASTER'S CSID
macro CLURCB$L_RSB = 80,0,32,0 %;       !  ADDRESS OF ROOT RSB
macro CLURCB$L_CLUB = 84,0,32,0 %;      !  ADDRESS OF CLUB
macro CLURCB$W_RESPCNT = 88,0,16,0 %;   !  EXPECTED RESPONSE COUNT
macro CLURCB$W_INDEX = 90,0,16,0 %;     !  MAP INDEX    
macro CLURCB$L_SAVRTN = 92,0,32,0 %;    !  SAVED RETURN ADDRESS
macro CLURCB$L_MSGBLD = 96,0,32,0 %;    !  MESSAGE BUILD ROUTINE
macro CLURCB$B_NODEMAP = 100,0,0,1 %;
literal CLURCB$S_NODEMAP = 32;          !  NODES TO REBUILD
macro CLURCB$B_SHUTMAP = 132,0,0,1 %;
literal CLURCB$S_SHUTMAP = 32;          !  NODES WITH TRAFFIC SHUTDOWN
macro CLURCB$B_ACKMAP = 164,0,0,1 %;
literal CLURCB$S_ACKMAP = 32;           !  NODES RETURNING ACKS
macro CLURCB$B_RESMAP = 196,0,0,1 %;
literal CLURCB$S_RESMAP = 32;           !  NODES NEEDING RESUMPTION
 
!*** MODULE $CONDEF ***
! +
! 
!  Console function codes (defined in SRM).
! 
! -
literal CON$C_SWDONE = 1;               !  Software done
literal CON$C_BOOTCPU = 2;              !  Boot function code
literal CON$C_CLRWARM = 3;              !  Clear warm start flag
literal CON$C_CLRCOLD = 4;              !  Clear cold start flag
! +
! 
!  Routine specifier codes used when calling CON$ASSIST_PSWITCH
! 
! -
literal CON$C_START_SWITCH = 1;         !  Start primary switch operation
literal CON$C_ABORT_SWITCH = 2;         !  Abort primary switch operation
literal CON$C_FINISH_SWITCH = 3;        !  Finish primary switch operation
literal RXCST$M_IE = 64;
literal RXCST$M_RDY = 128;
literal RXCST$S_RXCST = 1;
macro RXCST$V_IE = 0,6,1,0 %;           !  Receiver Interrupt Enable
macro RXCST$V_RDY = 0,7,1,0 %;          !  Receiver Data Ready
literal TXCST$M_IE = 64;
literal TXCST$M_RDY = 128;
literal TXCST$M_ERR = 32768;
literal TXCST$S_TXCST = 2;
macro TXCST$V_IE = 0,6,1,0 %;           !  Transmitter Interrupt Enable
macro TXCST$V_RDY = 0,7,1,0 %;          !  Transmitter Ready for Input
macro TXCST$V_ERR = 0,15,1,0 %;         !  Error sending, pls re-transmit
literal RXTX$M_ERR = 32768;
literal RXTX$S_RXTX = 2;
macro RXTX$V_DATA = 0,0,8,0 %;
literal RXTX$S_DATA = 8;                !  Data field of RXDB/TXDB
macro RXTX$V_ID = 0,8,4,0 %;
literal RXTX$S_ID = 4;                  !  ID field of RXDB/TXDB
macro RXTX$V_ERR = 0,15,1,0 %;          !  Error bit, RXDB only
 
!*** MODULE $CON9AQDEF ***
! 
!  Aquarius console function codes.
! 
literal CON9AQ$C_SFTWR_DONE = 1;        !  Software done
literal CON9AQ$C_COLD_STRT = 2;         !  Cold start system request
literal CON9AQ$C_CLR_WRMSTRT = 3;       !  Clear warm start flag
literal CON9AQ$C_CLR_CLDSTRT = 4;       !  Clear cold start flag
! +
! 
!  Routine specifier codes used when calling CON$ALLOC_DALLOC_BUF
! 
! -
literal CON9AQ$C_ALLOC_DMD = 1;         !  Allocate/initialize a DMD structure
literal CON9AQ$C_DEALLOC_DMD = 2;       !  Deallocate an existing DMD structure
literal CON9AQ$C_DEALLOC_LINK = 3;      !  Deallocate all structures for datalink(s)
! 
!  Fields in the RXCS IPR
! 
literal RXS$M_IE = 64;
literal RXS$M_DONE = 128;
literal RXS$M_DTR = 16711680;
literal RXS$M_CONSTERM = 65536;
literal RXS$M_REMPORT = 131072;
literal RXS$S_RXS = 6;
macro RXS$V_IE = 0,6,1,0 %;             !  Interrupt Enable
macro RXS$V_DONE = 0,7,1,0 %;           !  Done bit
macro RXS$V_DTR = 0,16,8,0 %;
literal RXS$S_DTR = 8;                  !  DTR field
macro RXS$V_CONSTERM = 3,16,1,0 %;      !  Console terminal DTR
macro RXS$V_REMPORT = 3,17,1,0 %;       !  Remote terminal DTR
! 
!  Fields in the TXCS IPR
! 
literal TXS$M_IE = 64;
literal TXS$M_RDY = 128;
literal TXS$M_ID = 3840;
literal TXS$M_WRTENA = 32768;
literal TXS$M_TEM = 16711680;
literal TXS$M_CONSTERM = 65536;
literal TXS$M_REMPORT = 131072;
literal TXS$S_TXS = 6;
macro TXS$V_IE = 0,6,1,0 %;             !  Interrupt Enable
macro TXS$V_RDY = 0,7,1,0 %;            !  Ready bit
macro TXS$V_ID = 0,8,4,0 %;
literal TXS$S_ID = 4;                   !  ID field
macro TXS$V_WRTENA = 0,15,1,0 %;        !  Write enable to mask
macro TXS$V_TEM = 0,16,8,0 %;
literal TXS$S_TEM = 8;                  !  Transmit enable mask
macro TXS$V_CONSTERM = 3,16,1,0 %;      !  Console terminal
macro TXS$V_REMPORT = 3,17,1,0 %;       !  Remote terminal
! 
!  Fields in the RXDB IPR
! 
literal RXD$M_DATA = 255;
literal RXD$M_ID = 3840;
literal RXD$M_ERR = 32768;
literal RXD$M_CARRIER = 16711680;
literal RXD$M_CONSTERM = 65536;
literal RXD$M_REMPORT = 131072;
literal RXD$M_CONSRETURN = 262144;
literal RXD$S_RXD = 6;
macro RXD$V_DATA = 0,0,8,0 %;
literal RXD$S_DATA = 8;                 !  Data field
macro RXD$V_ID = 0,8,4,0 %;
literal RXD$S_ID = 4;                   !  ID field
macro RXD$V_ERR = 0,15,1,0 %;           !  Receiver error bit
macro RXD$V_CARRIER = 0,16,8,0 %;
literal RXD$S_CARRIER = 8;              !  Carrier field
macro RXD$V_CONSTERM = 3,16,1,0 %;      !  Console terminal
macro RXD$V_REMPORT = 3,17,1,0 %;       !  Remote terminal
macro RXD$V_CONSRETURN = 3,18,1,0 %;    !  Console return indicator
! 
!  IDs returned in the RXDB and TXCS IPRs
! 
literal RXTX9AQ$C_ID_CONSTERM = 0;      !  OPA0 data
literal RXTX9AQ$C_ID_REMPORT = 1;       !  Remote port data
literal RXTX9AQ$C_ID_LOGCONS = 3;       !  Logical console
 
!*** MODULE $CPBDEF ***
! +
! 
!  Constants defining CPU capability numbers and flags for routines
! 
literal CPB$C_PRIMARY = 0;              !  Primary CPU (aka TIMEKEEPER)
literal CPB$C_NS = 1;                   !  future
literal CPB$C_QUORUM = 2;               !  Cluster quorum required
literal CPB$C_RUN = 3;                  !  Run capability
literal CPB$C_HARDAFF = 31;
literal CPB$C_MAX = 32;
literal CPB$C_VECTOR = 1;               !  equate NS with VECTOR
literal CPB$M_PRIMARY = 1;
literal CPB$M_VECTOR = 2;
literal CPB$M_QUORUM = 4;
literal CPB$M_RUN = 8;
literal CPB$M_IMPLICIT_AFFINITY = 1073741824;
literal CPB$M_EXPLICIT_AFFINITY = -2147483648;
literal CPB$S_CPBDEF = 4;
macro CPB$L_CPB = 0,0,32,0 %;
macro CPB$V_PRIMARY = 0,0,1,0 %;        !  Primary (timekeeper)
macro CPB$V_VECTOR = 0,1,1,0 %;         !  Vector processor
macro CPB$V_QUORUM = 0,2,1,0 %;         !  Cluster quorum required
macro CPB$V_RUN = 0,3,1,0 %;            !  CPU can run processes
macro CPB$V_IMPLICIT_AFFINITY = 0,30,1,0 %; !  Implicit affinity to a CPU
macro CPB$V_EXPLICIT_AFFINITY = 0,31,1,0 %; !  Explicit affinity to a CPU
literal CPB$M_FLAG_CHECK_CPU = 1;
literal CPB$M_FLAG_PERMANENT = 2;
literal CPB$M_FLAG_PRIMARY = 4;
literal CPB$S_CPB_FLAGSDEF = 1;
macro CPB$R_CPB_FLAGS = 0,0,8,0 %;
literal CPB$S_CPB_FLAGS = 1;
macro CPB$V_FLAG_CHECK_CPU = 0,0,1,0 %; !  Check that process can run
macro CPB$V_FLAG_PERMANENT = 0,1,1,0 %; !  Affect process permanent mask
macro CPB$V_FLAG_PRIMARY = 0,2,1,0 %;   !  Request to run on primary cpu
macro CPB$V_FLAG_FILLER = 0,3,3,0 %;
literal CPB$S_FLAG_FILLER = 3;          ! *** ADD ALL NEW BITFIELDS BEFORE THIS DECLARATION ****/
! *** THIS FIELD IS USED TO ASSURE MASKS ARE WITHIN RANGE ****/
 
!*** MODULE $CPUDEF ***
! +
! 
!  Per-CPU Database definitions. The per-CPU database is page aligned. It is
!  also defined to have whole page length. There is one of these structures
!  for each CPU that is participating in multiprocessor execution of VMS.
! 
! -
literal CPU$C_RESERVED = 0;             !  Zero is reserved
literal CPU$C_INIT = 1;                 !  CPU is being INITialized
literal CPU$C_RUN = 2;                  !  CPU is RUNning
literal CPU$C_STOPPING = 3;             !  CPU is STOPping
literal CPU$C_STOPPED = 4;              !  CPU is STOPPED
literal CPU$C_TIMOUT = 5;               !  Boot of CPU timed out
literal CPU$C_BOOT_REJECTED = 6;        !  CPU refuses to join SMP
literal CPU$C_BOOTED = 7;               !  CPU booted - waiting for "go"
literal CPU$M_INV_TBS = 1;
literal CPU$M_INV_TBA = 2;
literal CPU$M_TBACK = 4;
literal CPU$M_BUGCHK = 8;
literal CPU$M_BUGCHKACK = 16;
literal CPU$M_RECALSCHD = 32;
literal CPU$M_UPDASTLVL = 64;
literal CPU$M_UPDTODR = 128;
literal CPU$M_WORK_FQP = 256;
literal CPU$M_QLOST = 512;
literal CPU$M_RESCHED = 1024;
literal CPU$M_VIRTCONS = 2048;
literal CPU$M_IOPOST = 4096;
literal CPU$M_INV_ISTREAM = 8192;
literal CPU$M_CPUFILL_1 = 268435455;
literal CPU$M_CPUSPEC1 = 268435456;
literal CPU$M_CPUSPEC2 = 536870912;
literal CPU$M_CPUSPEC3 = 1073741824;
literal CPU$M_CPUSPEC4 = -2147483648;
literal CPU$M_XNNFILL_1 = 268435455;
literal CPU$M_XNNSPEC1 = 268435456;
literal CPU$M_XNNSPEC2 = 536870912;
literal CPU$M_XNNSPEC3 = 1073741824;
literal CPU$M_XNNSPEC4 = -2147483648;
literal CPU$M_XSSFILL_1 = 268435455;
literal CPU$M_XSSSPEC1 = 268435456;
literal CPU$M_XSSSPEC2 = 536870912;
literal CPU$M_XSSSPEC3 = 1073741824;
literal CPU$M_XSSSPEC4 = -2147483648;
literal CPU$M_XCCFILL_1 = 268435455;
literal CPU$M_XCCSPEC1 = 268435456;
literal CPU$M_XCCSPEC2 = 536870912;
literal CPU$M_XCCSPEC3 = 1073741824;
literal CPU$M_XCCSPEC4 = -2147483648;
literal CPU$M_XRRFILL_1 = 268435455;
literal CPU$M_XRRSPEC1 = 268435456;
literal CPU$M_XRRSPEC2 = 536870912;
literal CPU$M_XRRSPEC3 = 1073741824;
literal CPU$M_XRRSPEC4 = -2147483648;
literal CPU$M_X9AQFILL_1 = 268435455;
literal CPU$M_X9AQSPEC1 = 268435456;
literal CPU$M_X9AQSPEC2 = 536870912;
literal CPU$M_X9AQSPEC3 = 1073741824;
literal CPU$M_X9AQSPEC4 = -2147483648;
literal CPU$M_X60FILL_1 = 268435455;
literal CPU$M_X60SPEC1 = 268435456;
literal CPU$M_X60SPEC2 = 536870912;
literal CPU$M_X60SPEC3 = 1073741824;
literal CPU$M_X60SPEC4 = -2147483648;
literal CPU$M_X1202FILL_1 = 268435455;
literal CPU$M_X1202SPEC1 = 268435456;
literal CPU$M_X1202SPEC2 = 536870912;
literal CPU$M_X1202SPEC3 = 1073741824;
literal CPU$M_X1202SPEC4 = -2147483648;
literal CPU$C_MAX_CPUS = 32;            !  Maximum number of CPUs supported
literal CPU$C_8NN_CPUS = 2;             !    Maximum NAUTILUS CPUs
literal CPU$C_8PS_CPUS = 4;             !    Maximum Polarstar CPUs
literal CPU$C_8SS_CPUS = 16;            !    Maximum SCORPIO CPUs
literal CPU$C_9CC_CPUS = 16;            !    Maximum CALYPSO/CVAX CPUs
literal CPU$C_9RR_CPUS = 16;            !    Maximum CALYPSO/XRP CPUs
literal CPU$C_9AQ_CPUS = 4;             !    Maximum AQUARIUS CPUs
literal CPU$C_60_CPUS = 32;             !    Maximum Firefox CPU number
literal CPU$C_1202_CPUS = 16;           !    Maximum Mariah CPU number
literal CPU$K_PAGE0_LENGTH = 120;       !  Used bytes in page 0
literal CPU$C_PAGE0_LENGTH = 120;       !  Used bytes in page 0
literal CPU$K_NUM_SWIQS = 6;            !  Number of software interrupt queues
literal CPU$M_VP_POWERFAIL = 1;
literal CPU$M_VP_BUGCHECK = 2;
literal CPU$M_VP_CTX_INIT = 4;
literal CPU$M_VP_CTX_SAVE = 8;
literal CPU$M_VP_CTX_RESTORE = 16;
literal CPU$M_SCHED = 1;
literal CPU$M_FOREVER = 2;
literal CPU$M_NEWPRIM = 4;
literal CPU$M_PSWITCH = 8;
literal CPU$M_STOPPING = 1;
literal CPU$K_LENGTH = 852;             !  Total structure size
literal CPU$C_LENGTH = 852;             !  Total structure size
literal CPU$C_PAGECNT = 2;              !  Page count of database
literal CPU$C_STACK = 2048;             !  Offset to empty boot stack
literal CPU$S_CPUDEF = 852;
! ******************************************************************************
!  IMPORTANT NOTE:
! 
!  With some exceptions, the first page is reserved for those cells which
!  must be accessed with memory management disabled, e.g., initial boot 
!  sequence, power fail, and some types of error handling.
! 
! ******************************************************************************
macro CPU$T_CPUDEF_PAGE0 = 0,0,0,0 %;
literal CPU$S_CPUDEF_PAGE0 = 512;
macro CPU$L_CURPCB = 0,0,32,0 %;        !  Address of CPU's current PCB
macro CPU$L_REALSTACK = 4,0,32,0 %;     !  Physical address of boot stack
macro CPU$W_SIZE = 8,0,16,0 %;          !  Structure size
macro CPU$B_TYPE = 10,0,8,0 %;          !  Structure type
macro CPU$B_SUBTYPE = 11,0,8,0 %;       !  Structure subtype
macro CPU$B_BUSYWAIT = 12,0,8,0 %;      !  Concurrent busy wait count for CPU
macro CPU$B_STATE = 13,0,8,0 %;         !  State of this processor
macro CPU$B_CPUMTX = 14,0,8,0 %;        !  Count of CPUMTX acquires
macro CPU$B_CUR_PRI = 15,0,8,0 %;       !  Current Process Priority
macro CPU$L_INTSTK = 16,0,32,0 %;       !  Address of initial Interrupt Stack
macro CPU$R_WORK_REQ_OVERLAY = 20,0,32,0 %;
macro CPU$L_WORK_REQ = 20,0,32,0 %;     !  Work request bitmask
! 
!   Work request bits
! 
macro CPU$V_INV_TBS = 20,0,1,0 %;       !  Invalidate TB single
macro CPU$V_INV_TBA = 20,1,1,0 %;       !  Invalidate TB all
macro CPU$V_TBACK = 20,2,1,0 %;         !  Invalidate TB ACK     
macro CPU$V_BUGCHK = 20,3,1,0 %;        !  BUG_CHECK requested
macro CPU$V_BUGCHKACK = 20,4,1,0 %;     !  BUG_CHECK acked
macro CPU$V_RECALSCHD = 20,5,1,0 %;     !  Recalculate per cpu mask,reschedule
macro CPU$V_UPDASTLVL = 20,6,1,0 %;     !  Update ASTLVL register
macro CPU$V_UPDTODR = 20,7,1,0 %;       !  Update TODR register
macro CPU$V_WORK_FQP = 20,8,1,0 %;      !  Process work queue
macro CPU$V_QLOST = 20,9,1,0 %;         !  Stall until quorum regained
macro CPU$V_RESCHED = 20,10,1,0 %;      !  Issue IPL 3 SOFTINT
macro CPU$V_VIRTCONS = 20,11,1,0 %;     !  Enter virtual console mode (primary)
macro CPU$V_IOPOST = 20,12,1,0 %;       !  Issue IPL 4 SOFTINT
macro CPU$V_INV_ISTREAM = 20,13,1,0 %;  !  Invalidate instruction cache
! 
!  Define 4 CPU specific work request bits as bit #s 28-31. 
! 
macro CPU$R_CPUSPEC_OVERLAY = 20,0,32,0 %; !  CPU specific work requests
macro CPU$V_CPUSPEC1 = 20,28,1,0 %;     !  CPU specific
macro CPU$V_CPUSPEC2 = 20,29,1,0 %;     !  CPU specific
macro CPU$V_CPUSPEC3 = 20,30,1,0 %;     !  CPU specific
macro CPU$V_CPUSPEC4 = 20,31,1,0 %;     !  CPU specific
macro CPU$V_XNNSPEC1 = 20,28,1,0 %;     !  NAUTILUS specific
macro CPU$V_XNNSPEC2 = 20,29,1,0 %;     !  NAUTILUS specific
macro CPU$V_XNNSPEC3 = 20,30,1,0 %;     !  NAUTILUS specific
macro CPU$V_XNNSPEC4 = 20,31,1,0 %;     !  NAUTILUS specific
macro CPU$V_XSSSPEC1 = 20,28,1,0 %;     !  SCORPIO specific
macro CPU$V_XSSSPEC2 = 20,29,1,0 %;     !  SCORPIO specific
macro CPU$V_XSSSPEC3 = 20,30,1,0 %;     !  SCORPIO specific
macro CPU$V_XSSSPEC4 = 20,31,1,0 %;     !  SCORPIO specific
macro CPU$V_XCCSPEC1 = 20,28,1,0 %;     !  CALYPSO/CVAX specific
macro CPU$V_XCCSPEC2 = 20,29,1,0 %;     !  CALYPSO/CVAX specific
macro CPU$V_XCCSPEC3 = 20,30,1,0 %;     !  CALYPSO/CVAX specific
macro CPU$V_XCCSPEC4 = 20,31,1,0 %;     !  CALYPSO/CVAX specific
macro CPU$V_XRRSPEC1 = 20,28,1,0 %;     !  Calypso/Rigel specific
macro CPU$V_XRRSPEC2 = 20,29,1,0 %;     !  Calypso/Rigel specific
macro CPU$V_XRRSPEC3 = 20,30,1,0 %;     !  Calypso/Rigel specific
macro CPU$V_XRRSPEC4 = 20,31,1,0 %;     !  Calypso/Rigel specific
macro CPU$V_X9AQSPEC1 = 20,28,1,0 %;    !  AQUARIUS specific
macro CPU$V_X9AQSPEC2 = 20,29,1,0 %;    !  AQUARIUS specific
macro CPU$V_X9AQSPEC3 = 20,30,1,0 %;    !  AQUARIUS specific
macro CPU$V_X9AQSPEC4 = 20,31,1,0 %;    !  AQUARIUS specific
macro CPU$V_X60SPEC1 = 20,28,1,0 %;     !  Firefox specific
macro CPU$V_X60SPEC2 = 20,29,1,0 %;     !  Firefox specific
macro CPU$V_X60SPEC3 = 20,30,1,0 %;     !  Firefox specific
macro CPU$V_X60SPEC4 = 20,31,1,0 %;     !  Firefox specific
macro CPU$V_X1202SPEC1 = 20,28,1,0 %;   !  Mariah specific
macro CPU$V_X1202SPEC2 = 20,29,1,0 %;   !  Mariah specific
macro CPU$V_X1202SPEC3 = 20,30,1,0 %;   !  Mariah specific
macro CPU$V_X1202SPEC4 = 20,31,1,0 %;   !  Mariah specific
! 
macro CPU$L_PERCPUVA = 24,0,32,0 %;     !  VA of this per-CPU database
macro CPU$L_SAVED_AP = 28,0,32,0 %;     !  HALT Restart code
macro CPU$L_HALTPC = 32,0,32,0 %;       !  HALT PC for restart
macro CPU$L_HALTPSL = 36,0,32,0 %;      !  HALT PSL for restart
macro CPU$L_SAVED_ISP = 40,0,32,0 %;    !  Saved ISP for restart
macro CPU$L_PCBB = 44,0,32,0 %;         !  PCBB from powerdown
macro CPU$L_SCBB = 48,0,32,0 %;         !  SCBB from powerdown
macro CPU$L_SISR = 52,0,32,0 %;         !  SISR from powerdown
! 
!  The following 5 longwords are used by POWERFAIL and/or BUGCHECK code
! 
macro CPU$L_P0BR = 56,0,32,0 %;         !  P0 Base Register
macro CPU$L_P0LR = 60,0,32,0 %;         !  P0 Length Register
macro CPU$L_P1BR = 64,0,32,0 %;         !  P1 Base Register
macro CPU$L_P1LR = 68,0,32,0 %;         !  P1 Length Register
macro CPU$L_BUGCODE = 72,0,32,0 %;      !  BUGCHECK code
! 
!  The SYSTEM ID REGISTER (SID) must always be the first longword of the
!  CPU type-specific longwords in CPUDATA.  The BUGCHECK code depends upon it.
! 
macro CPU$B_CPUDATA = 76,0,0,0 %;
literal CPU$S_CPUDATA = 32;             !  Generic label for CPU data
macro CPU$L_SID = 76,0,32,0 %;          !  System ID register
! 
!  NAUTILUS specific offsets in CPUDATA block (8 longwords)
! 
macro CPU$L_8NN_SID = 76,0,32,0 %;      !    System ID register
macro CPU$L_8NN_REVR2 = 80,0,32,0 %;    !    REV LEVEL 2 register
macro CPU$L_8NN_SPARE = 84,0,32,0 %;    !    RESERVED
macro CPU$L_8NN_INFO = 88,0,32,0 %;     !    GET_CPU_INFO response
macro CPU$L_8NN_SPARE1 = 92,0,32,0 %;   !  Spare longword
macro CPU$L_8NN_SPARE2 = 96,0,32,0 %;   !  Spare longword
macro CPU$L_8NN_SPARE3 = 100,0,32,0 %;  !  Spare longword
macro CPU$L_8NN_SPARE4 = 104,0,32,0 %;  !  Spare longword
! 
!  SCORPIO specific offsets in CPUDATA block (8 longwords)
! 
macro CPU$L_8SS_SID = 76,0,32,0 %;      !    System ID register
macro CPU$W_8SS_BOOTCNT = 80,0,16,0 %;  !    Pending boot thread count
macro CPU$W_8SS_IPINTR = 82,0,16,0 %;   !    CPUs that may interrupt this CPU
macro CPU$L_8SS_BIWINDOW = 84,0,32,0 %; !    BI window virtual address
macro CPU$L_8SS_MPB = 88,0,32,0 %;      !    MPB ADDRESS
macro CPU$L_8SS_SPARE1 = 92,0,32,0 %;   !  Spare longword
macro CPU$L_8SS_SPARE2 = 96,0,32,0 %;   !  Spare longword
macro CPU$L_8SS_SPARE3 = 100,0,32,0 %;  !  Spare longword
macro CPU$L_8SS_SPARE4 = 104,0,32,0 %;  !  Spare longword
! 
!  CALYPSO/CVAX specific offsets in CPUDATA block (8 longwords)
! 
macro CPU$L_9CC_SID = 76,0,32,0 %;      !    System ID register
macro CPU$L_9CC_NODESPACE = 80,0,32,0 %; !  XMI nodespace address
macro CPU$L_9CC_MPB = 84,0,32,0 %;      !    MPB ADDRESS
macro CPU$L_9CC_XSID = 88,0,32,0 %;     !  Extended SID
macro CPU$L_9CC_SPARE1 = 92,0,32,0 %;   !  Spare longword
macro CPU$L_9CC_SPARE2 = 96,0,32,0 %;   !  Spare longword
macro CPU$L_9CC_SPARE3 = 100,0,32,0 %;  !  Spare longword
macro CPU$L_9CC_SPARE4 = 104,0,32,0 %;  !  Spare longword
! 
!  CALYPSO/XRP specific offsets in CPUDATA block (8 longwords)
! 
macro CPU$L_9RR_SID = 76,0,32,0 %;      !    System ID register
macro CPU$L_9RR_NODESPACE = 80,0,32,0 %; !  XMI nodespace address
macro CPU$L_9RR_MPB = 84,0,32,0 %;      !    MPB ADDRESS
macro CPU$L_9RR_XSID = 88,0,32,0 %;     !  Extended SID
macro CPU$L_9RR_SPARE1 = 92,0,32,0 %;   !  Spare longword
macro CPU$L_9RR_SPARE2 = 96,0,32,0 %;   !  Spare longword
macro CPU$L_9RR_SPARE3 = 100,0,32,0 %;  !  Spare longword
macro CPU$L_9RR_SPARE4 = 104,0,32,0 %;  !  Spare longword
! 
!  AQUARIUS specific offsets in CPUDATA block (8 longwords)
! 
macro CPU$L_9AQ_SID = 76,0,32,0 %;      !    System ID register
macro CPU$L_9AQ_SPARE0 = 80,0,32,0 %;   !  Spare longword
macro CPU$L_9AQ_SPARE1 = 84,0,32,0 %;   !  Spare longword
macro CPU$L_9AQ_SPARE2 = 88,0,32,0 %;   !  Spare longword
macro CPU$L_9AQ_CPUCNF = 92,0,32,0 %;   !  CPU Configuration
macro CPU$L_9AQ_SPARE3 = 96,0,32,0 %;   !  Spare longword
macro CPU$L_9AQ_SPARE4 = 100,0,32,0 %;  !  Spare longword
macro CPU$L_9AQ_SPARE5 = 104,0,32,0 %;  !  Spare longword
! 
!  Firefox specific offsets in CPUDATA block (8 longwords)
! 
macro CPU$L_60_SID = 76,0,32,0 %;       !   System ID register
macro CPU$L_60_NODESPACE = 80,0,32,0 %; !  MBUS nodespace address
macro CPU$L_60_MPB = 84,0,32,0 %;       !    MPB ADDRESS
macro CPU$L_60_XSID = 88,0,32,0 %;      !  Extended SID
macro CPU$L_60_SPARE1 = 92,0,32,0 %;    !  Spare longword
macro CPU$L_60_SPARE2 = 96,0,32,0 %;    !  Spare longword
macro CPU$L_60_SPARE3 = 100,0,32,0 %;   !  Spare longword
macro CPU$L_60_SPARE4 = 104,0,32,0 %;   !  Spare longword
! 
!  Mariah specific offsets in CPUDATA block (8 longwords)
! 
macro CPU$L_1202_SID = 76,0,32,0 %;     !   System ID register
macro CPU$L_1202_NODESPACE = 80,0,32,0 %; !  XMI-2 nodespace address
macro CPU$L_1202_MPB = 84,0,32,0 %;     !    MPB ADDRESS
macro CPU$L_1202_XSID = 88,0,32,0 %;    !  Extended SID
macro CPU$L_1202_SPARE1 = 92,0,32,0 %;  !  Spare longword
macro CPU$L_1202_SPARE2 = 96,0,32,0 %;  !  Spare longword
macro CPU$L_1202_SPARE3 = 100,0,32,0 %; !  Spare longword
macro CPU$L_1202_SPARE4 = 104,0,32,0 %; !  Spare longword
! 
!  Define cells for machine check recovery block. These two longwords  
!  are assumed to be adjacent.
! 
macro CPU$L_MCHK_MASK = 108,0,32,0 %;   !  Function mask for current recovery block
macro CPU$L_MCHK_SP = 112,0,32,0 %;     !  Saved SP for return at end of block
!  0 (zero) if no current recovery block
! 
macro CPU$L_P0PT_PAGE = 116,0,32,0 %;   !  SVA of page reserved to this CPU to be
!   used as a P0 page table page when memory
!   management is being enabled.
! 
! *****************************************************************************
!  IMPORTANT NOTE:
! 
!  Any cells after this point MUST NOT be accessed using physical addressing.
!   
! *****************************************************************************
! 
!  The following structures are placed at the beginning of the 2nd page to
!  guarantee that they are at least quadword aligned.
!                                                 
macro CPU$Q_SWIQFL = 512,0,0,0 %;
literal CPU$S_SWIQFL = 48;              !  Software interrupt queues
macro CPU$L_PSFL = 560,0,32,0 %;        !  POST QUEUE forward link
macro CPU$L_PSBL = 564,0,32,0 %;        !  POST QUEUE backward link
! 
!  (still quadword aligned from above)
! 
macro CPU$Q_WORK_FQFL = 568,0,0,0 %;
literal CPU$S_WORK_FQFL = 8;            !  Work packet queue
macro CPU$Q_WORK_IFQ = 568,0,0,0 %;
literal CPU$S_WORK_IFQ = 8;             !  Work packet queue
! 
!  The following fork block is used to stall when quorum is lost
!  (still quadword aligned from above)
! 
macro CPU$L_QLOST_FQFL = 576,0,32,0 %;  !  quorum loss fork queue flink
macro CPU$L_QLOST_FQBL = 580,0,32,0 %;  !  quorum loss fork queue blink
macro CPU$W_QLOST_SIZE = 584,0,16,0 %;  !  quorum loss fork block size
macro CPU$B_QLOST_TYPE = 586,0,8,0 %;   !  quorum loss fork block type
macro CPU$B_QLOST_FLCK = 587,0,8,0 %;   !  quorum loss fork lock
macro CPU$L_QLOST_FPC = 588,0,32,0 %;   !  quorum loss fork PC
macro CPU$L_QLOST_FR3 = 592,0,32,0 %;   !  quorum loss fork R3
macro CPU$L_QLOST_FR4 = 596,0,32,0 %;   !  quorum loss fork R4
! 
macro CPU$Q_BOOT_TIME = 600,0,0,0 %;
literal CPU$S_BOOT_TIME = 8;            !  System time this cpu booted
macro CPU$Q_CPUID_MASK = 608,0,0,0 %;
literal CPU$S_CPUID_MASK = 8;           !  CPU ID in bitmask form
macro CPU$L_CPUID_MASK = 608,0,32,0 %;
macro CPU$L_PHY_CPUID = 616,0,32,0 %;   !  CPU ID number
macro CPU$L_CAPABILITY = 620,0,32,0 %;  !  bitmask of capabilities of this CPU
! 
!  Per-CPU delay weighting factors
! 
macro CPU$L_TENUSEC = 624,0,32,0 %;     !  Ten u-sec delay value
macro CPU$L_UBDELAY = 628,0,32,0 %;     !  UNIBUS delay counter
! 
!  Time counters defined as follows:
!  (Also applies to UKERNEL and UNULLCPU cells)
! 
!           KERNEL mode on KERNEL stack, no spinlock busywait active
!           EXECUTIVE mode
!           SUPERVISOR mode
!           USER mode
!           KERNEL mode on INTERRUPT stack
!           Compatibility mode
!           KERNEL mode on KERNEL or Interrupt stack, spinlock busywait is active
! 
!           NULL job counter
! 
macro CPU$L_KERNEL = 632,0,0,0 %;
literal CPU$S_KERNEL = 28;              !  Clock ticks in each mode
macro CPU$L_MPSYNCH = 656,0,32,0 %;     !  Clock ticks in MP synchron.
macro CPU$L_NULLCPU = 660,0,32,0 %;     !  Clock ticks in null job
macro CPU$W_UKERNEL = 664,0,0,0 %;
literal CPU$S_UKERNEL = 14;             !  # clock tics left to reach 10 ms in each mode
macro CPU$W_UNULLCPU = 678,0,16,0 %;    !  # clock tics left to reach 10 ms in null job
macro CPU$W_CLKUTICS = 680,0,16,0 %;    !  # clock tics left to reach 10 ms for this CPU
!  (Only maintained if SMP configuration)
macro CPU$W_HARDAFF = 682,0,16,0 %;     !  Count of processes with
!   hard affinity for this CPU.
! 
!  Spinlock acquisition/release tracking and verification data
! 
macro CPU$L_RANK_VEC = 684,0,32,0 %;    !  Ranks of spinlocks currently held
macro CPU$L_IPL_VEC = 688,0,32,0 %;     !  IPL vector of held spinlocks
macro CPU$L_IPL_ARRAY = 692,0,0,1 %;
literal CPU$S_IPL_ARRAY = 128;          !  IPL counts of held spinlocks
! 
!  Cells for CPU sanity timer
! 
macro CPU$L_TPOINTER = 820,0,32,0 %;    !  Address of SANITY_TIMER of
!   CPU being watched
macro CPU$W_SANITY_TIMER = 824,0,16,0 %; !  # of sanity cycles before this CPU times out
macro CPU$W_SANITY_TICKS = 826,0,16,0 %; !  # of ticks until next sanity cycle
! 
!  Per-CPU structures for vector processing support
! 
macro CPU$L_VP_OWNER = 828,0,32,0 %;    !  PCB address of the vector consumer
macro CPU$L_VP_VARIANT_EXIT = 832,0,32,0 %; !  Disabled fault handler variant exit address
macro CPU$L_VP_FLAGS = 836,0,32,0 %;    !  Vector processing flags
macro CPU$V_VP_POWERFAIL = 836,0,1,0 %; !  Powerfail variant
macro CPU$V_VP_BUGCHECK = 836,1,1,0 %;  !  Bugcheck variant
macro CPU$V_VP_CTX_INIT = 836,2,1,0 %;  !  Vector context init in progress
macro CPU$V_VP_CTX_SAVE = 836,3,1,0 %;  !  Vector context save in progress
macro CPU$V_VP_CTX_RESTORE = 836,4,1,0 %; !  Vector context restore in progress
macro CPU$L_VP_CPUTIM = 840,0,32,0 %;   !  Clock ticks that a vector consumer is scheduled
macro CPU$B_FLAGS = 844,0,8,0 %;        !  Various flags
macro CPU$V_SCHED = 844,0,1,0 %;        !  Idle loop vying for SCHED
macro CPU$V_FOREVER = 844,1,1,0 %;      !  STOP/CPU with /FOREVER qualifier
macro CPU$V_NEWPRIM = 844,2,1,0 %;      !  Primary-to-be CPU
macro CPU$V_PSWITCH = 844,3,1,0 %;      !  Live primary switch requested by primary CPU
macro CPU$W_RESERVED = 845,0,16,0 %;    !  Reserved for future use
macro CPU$B_RESERVED = 847,0,8,0 %;     !  Reserved for future use
! 
!  The following field, INTFLAGS, must be longword aligned since it uses
!  interlocked instructions to access the bitfields.
! 
macro CPU$L_INTFLAGS = 848,0,32,0 %;    !  Interlocked flags
macro CPU$V_STOPPING = 848,0,1,0 %;     !  CPU stopping flag
literal CPUDB$K_LENGTH = 12;            ! Length of structure
!  at negative offset.
literal CPUDB$S_CPUDB = 16;
macro CPUDB$L_CPUCNF = -12,0,32,0 %;    !  System configuration before
!   powerfailure
macro CPUDB$L_RESTART_PRIMARY = -8,0,32,0 %; !  Physical address of RESTART
!  PRIMARY CPU routine in
!  OPDRVxxx
macro CPUDB$L_PRIMID = -4,0,32,0 %;     !  Primary CPU's node id
macro CPUDB$L_VECTOR = 0,0,32,0 %;      !  Reference point for negative
!  offsets.
 
!*** MODULE $CQBICDEF ***
! ++
! 	CQBIC definitions
! --
!  Offsets within page containing interprocessor doorbell registers
literal CQBIC$W_INTPR0 = 320;           ! Arbiter doorbell
literal CQBIC$W_INTPR1 = 322;           ! Auxiliary #1 doorbell
literal CQBIC$W_INTPR2 = 324;           ! Auxiliary #2 doorbell
literal CQBIC$W_INTPR3 = 326;           ! Auxiliary #3 doorbell
literal CQBIC$W_INTPR4 = 328;           ! Auxiliary #4 doorbell
literal CQBIC$W_INTPR5 = 330;           ! Auxiliary #5 doorbell
literal CQBIC$W_INTPR6 = 332;           ! Auxiliary #6 doorbell
literal CQBIC$W_INTPR7 = 334;           ! Auxiliary #7 doorbell
!  Offsets within page containing SCR, memory and map registers
literal CQBIC$L_SCR = 0;                ! System configuration
literal CQBIC$L_DSER = 4;               ! DMA system error
literal CQBIC$L_MEAR = 8;               ! DMA master error
literal CQBIC$L_SEAR = 12;              ! DMA slave error
literal CQBIC$L_MAP_BASE = 16;          ! Scatter/gather map base
literal CQBIC$M_INTPR_DBIRQ = 1;
literal CQBIC$M_INTPR_LMEAE = 32;
literal CQBIC$M_INTPR_DBIIE = 64;
literal CQBIC$M_INTPR_AUXHLT = 256;
literal CQBIC$M_INTPR_TBIA = 16384;
literal CQBIC$M_INTPR_DMAQME = 32768;
literal CQBIC$S_INTPR = 2;
macro CQBIC$V_INTPR_DBIRQ = 0,0,1,0 %;  !  Doorbell interrupt request
macro CQBIC$V_INTPR_MBZ_1 = 0,1,4,0 %;
literal CQBIC$S_INTPR_MBZ_1 = 4;
macro CQBIC$V_INTPR_LMEAE = 0,5,1,0 %;  !  Local memory enable
macro CQBIC$V_INTPR_DBIIE = 0,6,1,0 %;  !  Doorbell interrupt enable
macro CQBIC$V_INTPR_MBZ_2 = 0,7,1,0 %;
macro CQBIC$V_INTPR_AUXHLT = 0,8,1,0 %; !  Auxiliary halt
macro CQBIC$V_INTPR_MBZ_3 = 0,9,5,0 %;
literal CQBIC$S_INTPR_MBZ_3 = 5;
macro CQBIC$V_INTPR_TBIA = 0,14,1,0 %;  !  Xlate buffer invalidate all
macro CQBIC$V_INTPR_DMAQME = 0,15,1,0 %; !  DMA memory space error
 
!*** MODULE $CRBDEF ***
! +
!  CRB - CHANNEL REQUEST BLOCK
! 
!  THERE IS ONE CHANNEL REQUEST BLOCK FOR EACH SET OF DEVICES WHOSE
!  ACCESS TO A SET OF CONTROLLERS MUST BE SYNCHRONIZED. EACH CHANNEL
!  CONTROL BLOCK ALLOWS UP TO FOUR CONTROLLERS TO WHICH THE INDIVIDUAL
!  DEVICES CAN BE ATTACHED.
! -
literal CRB$M_BSY = 1;
literal CRB$M_UNINIT = 2;
literal CRB$K_LENGTH = 120;             ! LENGTH OF STANDARD CRB 
literal CRB$C_LENGTH = 120;             ! LENGTH OF STANDARD CRB 
literal CRB$S_CRBDEF = 176;
macro CRB$L_FQFL = 0,0,32,0 %;          ! FORK QUEUE FORWARD LINK
macro CRB$L_FQBL = 4,0,32,0 %;          ! FORK QUEUE BACKWARD LINK
macro CRB$W_SIZE = 8,0,16,0 %;          ! SIZE OF CRB IN BYTES 
macro CRB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE FOR CRB 
macro CRB$B_FLCK = 11,0,8,0 %;          ! FORK LOCK NUMBER
macro CRB$L_FPC = 12,0,32,0 %;          ! FORK PC
macro CRB$L_FR3 = 16,0,32,0 %;          ! FORK R3
macro CRB$L_FR4 = 20,0,32,0 %;          ! FORK R4
macro CRB$L_WQFL = 24,0,32,0 %;         ! WAIT QUEUE FORWARD LINK
macro CRB$L_WQBL = 28,0,32,0 %;         ! WAIT QUEUE BACKWARD LINK
macro CRB$L_RAM_BUFFER_SIZE = 32,0,32,0 %; ! Size of RAM buffer
macro CRB$B_TT_TYPE = 32,0,8,0 %;       ! controler type (DZ11, DZ32)
macro CRB$B_SPARE = 33,0,24,0 %;
literal CRB$S_SPARE = 3;                ! spare bytes
macro CRB$W_REFC = 36,0,16,0 %;         ! REFERENCE COUNT OF UCB'S 
macro CRB$B_MASK = 38,0,8,0 %;          ! CHANNEL ALLOCATION MASK 
macro CRB$V_BSY = 38,0,1,0 %;           !  CHANNEL IS BUSY (1=YES) 
macro CRB$V_UNINIT = 38,1,1,0 %;        !  GENBI  CRB is uninitialized. (1=YES) 
macro CRB$B_UNIT_BRK = 39,0,8,0 %;      ! Break bits for lines
macro CRB$L_AUXSTRUC = 40,0,32,0 %;     ! Auxiliary structure addr (CDDB for class driver) 
macro CRB$L_TIMELINK = 44,0,32,0 %;     ! Thread of CRB's for periodic wakeup 
macro CRB$L_TT_MODEM = 44,0,32,0 %;     ! modem control timer thread
macro CRB$L_DUETIME = 48,0,32,0 %;      ! Due time for periodic wakeup 
macro CRB$L_DZ_MODEM = 48,0,32,0 %;     ! DZ11 modem transition detection timer thread
macro CRB$L_TOUTROUT = 52,0,32,0 %;     ! Address of periodic wakeup routine 
macro CRB$B_DZ_RING = 52,0,8,0 %;       ! last sampled ring for DZ11
macro CRB$B_DZ_CARRIER = 53,0,8,0 %;    ! last sampled carrier for DZ11
macro CRB$B_DZ_DTR = 54,0,8,0 %;        ! last output DTR for DZ11
macro CRB$B_TT_TIMREFC = 55,0,8,0 %;    ! lines with active modem timers
macro CRB$L_LINK = 56,0,32,0 %;         ! ADDRESS OF SECONDARY CRB 
macro CRB$L_DLCK = 60,0,32,0 %;         ! ADDRESS OF DEVICE SPINLOCK
macro CRB$L_INTD = 80,0,0,0 %;
literal CRB$S_INTD = 40;                ! DEFAULT TRANSFER VECTOR START
macro CRB$L_INTD2 = 136,0,0,0 %;
literal CRB$S_INTD2 = 40;               ! 2ND DEFAULT TRANSFER VECTOR START
 
!*** MODULE $VECDEF ***
! +
!  CRB INTERRUPT TRANSFER VECTOR STRUCTURE DEFINITIONS
!  
!  NOTE: THAT THE ORIGIN OF THE VECDEF STRUCTURE DOES NOT BEGIN AT RTINTD.
!  THIS BECAUSE CRB$L_INTD HAS BEEN USED IN MANY DRIVERS AS THE IMPLICIT
!  BEGINNING OF VECDEF.  EXTENSIONS TO VECDEF HAVE NEGATIVE OFFSETS TO
!  AVOID HAVING TO CHANGE ALL REFERENCES TO CRB$L_INTD.
!  
! 
! -
literal VEC$M_MAPLOCK = 32768;
literal VEC$M_LWAE = 32;
literal VEC$M_PATHLOCK = 128;
literal VEC$M_ALTLOCK = 32768;
literal VEC$K_LENGTH = 56;              ! LENGTH OF STANDARD DISPATCHER 
literal VEC$C_LENGTH = 56;              ! LENGTH OF STANDARD DISPATCHER 
literal VEC$S_VECDEF = 56;
! CRB INTERRUPT TRANSFER VECTOR 
macro VEC$L_BUGCHECK = -16,0,32,0 %;    ! ADDRESS OF ILLQBUSCFG BUG_CHECK 
macro VEC$L_RTINTD = -12,0,0,0 %;
literal VEC$S_RTINTD = 12;              ! Q-22 BUS MULTI-LEVEL INTR DISPATCH CODE START
macro VEC$L_INTD = 0,0,32,0 %;          ! DEFAULT INTR DISPATCH CODE START
macro VEC$L_ISR = 4,0,32,0 %;           ! ADDRESS OF INTERRUPT SERVICE ROUTINE
macro VEC$Q_DISPATCH = 0,0,0,0 %;
literal VEC$S_DISPATCH = 8;
macro VEC$L_IDB = 8,0,32,0 %;           ! ADDRESS OF ASSOCIATED IDB 
macro VEC$L_INITIAL = 12,0,32,0 %;      ! CONTROLLER INITIALIZATION ENTRY ADDRESS 
macro VEC$W_MAPREG = 16,0,16,0 %;       ! STARTING MAP REGISTER ALLOCATED 
macro VEC$V_MAPREG = 16,0,15,0 %;
literal VEC$S_MAPREG = 15;              !  MAP REGISTER NUMBER 
macro VEC$V_MAPLOCK = 16,15,1,0 %;      !  MAP REGISTER ALLOCATION PERMANENT 
macro VEC$B_NUMREG = 18,0,8,0 %;        ! NUMBER OF MAP REGISTERS ALLOCATED 
macro VEC$B_DATAPATH = 19,0,8,0 %;      ! BUFFERED DATAPATH ALLOCATED 
macro VEC$V_DATAPATH = 19,0,5,0 %;
literal VEC$S_DATAPATH = 5;             !  DATAPATH NUMBER 
macro VEC$V_LWAE = 19,5,1,0 %;          !  LONGWORD ACCESS ENABLED 
macro VEC$V_PATHLOCK = 19,7,1,0 %;      !  DATAPATH PERMANENT 
macro VEC$L_ADP = 20,0,32,0 %;          ! ADDRESS OF ADP 
macro VEC$L_UNITINIT = 24,0,32,0 %;     ! ADDRESS OF UNIT INITIALIZE 
macro VEC$L_START = 28,0,32,0 %;        ! ADDRESS OF UNIT START 
macro VEC$L_UNITDISC = 32,0,32,0 %;     ! ADDRESS OF UNIT DISCONNECT 
macro VEC$W_MAPALT = 36,0,16,0 %;       ! STARTING ALTERNATE MAP REGISTER ALLOCATED 
macro VEC$V_MAPALT = 36,0,15,0 %;
literal VEC$S_MAPALT = 15;              !  ATERNATE MAP REGISTER NUMBER 
macro VEC$V_ALTLOCK = 36,15,1,0 %;      !  ALTERNATE MAP REGISTER ALLOCATION PERMANENT 
macro VEC$W_NUMALT = 38,0,16,0 %;       ! NUMBER OF ALTERNATE MAP REGISTERS ALLOCATED 
 
!*** MODULE $CTSIDEF ***
literal CTSI$K_REVISION = 1;            !  CTSI Revision 1 only.
literal CTSI$C_REVISION = 1;
literal CTMD$K_SIZE = 8;                !  Size
literal CTMD$C_SIZE = 8;                !  Size
literal CTMD$S_CTMD = 8;                !  Module descriptor in the CTSIA.
macro CTMD$W_PGCOUNT = 0,0,16,0 %;      !  Module length in pages
macro CTMD$L_BASEADDR = 4,0,32,0 %;     !  Base physical addr.
literal CTCB$K_SIZE = 28;               !  Length of channel block
literal CTCB$C_SIZE = 28;               !  Length of channel block
literal CTCB$S_CTCB = 28;               !  Channel block in the CTSIA.
macro CTCB$B_DVATR = 0,0,8,0 %;         !  Device attributes
macro CTCB$B_CHATR = 1,0,8,0 %;         !  Channel attributes
macro CTCB$W_STATESZ = 2,0,16,0 %;      !  State size
macro CTCB$L_PHY_ENTRY = 4,0,32,0 %;    !  Physical entry point
macro CTCB$L_VIR_ENTRY = 8,0,32,0 %;    !  Virtual entry point
macro CTCB$L_PHY_SEGMENT = 12,0,32,0 %; !  IO segment physical addr
macro CTCB$L_VIR_SEGMENT = 16,0,32,0 %; !  IO segment virtual addr
macro CTCB$L_PHY_EXTEND = 20,0,32,0 %;  !  Extended state phys. addr
macro CTCB$L_VIR_EXTEND = 24,0,32,0 %;  !  Extended state virt. addr
literal CTIOS$K_SIZE = 8;               !  Descriptor length
literal CTIOS$C_SIZE = 8;               !  Descriptor length
literal CTIOS$S_CTIOS = 8;
!  Console I/O segment array and descriptors
macro CTIOS$W_SGMT_COUNT = 0,0,16,0 %;  !  # segments for channel
macro CTIOS$B_BASE_SEGMENT = 4,0,8,0 %; !  Offset for first segment dx.
macro CTIOS$W_PGCOUNT = 0,0,16,0 %;     !  Pages in this segment
macro CTIOS$L_SEGMENT = 4,0,32,0 %;     !  Physical Segment address
literal CTSI$K_MODULE_COUNT = 6;
literal CTSI$C_MODULE_COUNT = 6;
literal CTSI$K_CHN_COUNT = 6;
literal CTSI$C_CHN_COUNT = 6;
literal CTSI$M_CMUSE = 3;
literal CTSI$M_INUSE = 4;
literal CTSI$M_CM = 16;
literal CTSI$S_CTSIDEF = 316;
macro CTSI$L_BASE = 0,0,32,0 %;         !  Physical base address of CTSI
macro CTSI$W_SIZE = 4,0,16,0 %;         !  Size in bytes of CTSI
macro CTSI$W_IDENT = 6,0,16,0 %;        !  Indent string "CT"
macro CTSI$B_SPARE0 = 8,0,8,0 %;
macro CTSI$B_CHKSUM = 9,0,8,0 %;        !  Checksum of first bytes
macro CTSI$B_FLAGS = 10,0,8,0 %;        !  Flags
macro CTSI$V_CMUSE = 10,0,2,0 %;
literal CTSI$S_CMUSE = 2;
macro CTSI$V_INUSE = 10,2,1,0 %;        !  Routine in use
macro CTSI$V_SPARE0 = 10,3,1,0 %;
macro CTSI$V_CM = 10,4,1,0 %;           !  Console mode
macro CTSI$B_REVISN = 11,0,8,0 %;       !  Console revision
macro CTSI$Q_MODULE_DESC = 12,0,0,0 %;
literal CTSI$S_MODULE_DESC = 48;        !  Module descriptors
macro CTSI$L_CHNBLK = 60,0,0,0 %;
literal CTSI$S_CHNBLK = 168;            !  Channel blocks of size = (7 longs)
macro CTSI$Q_SAVE = 228,0,0,0 %;
literal CTSI$S_SAVE = 8;                !  Save ptrs
macro CTSI$Q_RESTORE = 236,0,0,0 %;
literal CTSI$S_RESTORE = 8;             !  Restore pointers
macro CTSI$Q_TRANS = 244,0,0,0 %;
literal CTSI$S_TRANS = 8;               !  Translate ptrs
macro CTSI$Q_GETCHR = 252,0,0,0 %;
literal CTSI$S_GETCHR = 8;              !  GET CHAR ptrs
macro CTSI$L_GETCHR_STATE = 260,0,0,0 %;
literal CTSI$S_GETCHR_STATE = 16;       !  GET CHAR state
macro CTSI$Q_PUTCHR = 276,0,0,0 %;
literal CTSI$S_PUTCHR = 8;              !  PUT CHAR ptrs
macro CTSI$L_PUTCHR_STATE = 284,0,0,0 %;
literal CTSI$S_PUTCHR_STATE = 16;       !  PUT CHAR state
macro CTSI$Q_PUTMSG = 300,0,0,0 %;
literal CTSI$S_PUTMSG = 8;              !  Put message routine
macro CTSI$Q_READPROMPT = 308,0,0,0 %;
literal CTSI$S_READPROMPT = 8;          !  Read with prompt routine
 
!*** MODULE $CRSHDEF ***
! +
!   Saved crash context structure definitions.  As part of the system 
!   bugcheck process, each CPU is required to save its current context on 
!   its current operating stack.  A CPU's stack after saving its context
!   should look like this:
! 
! 		00(SP)	ASTLVL
! 		04(SP)	USP
! 		08(SP)	SSP
! 		12(SP)	ESP
! 		16(SP)	KSP
! 		20(SP)	ISP
! 		24(SP)	ICCS
! 		28(SP)	count of CPU specific IPRS
! 
!   The count is followed by the CPU specific IPRS, followed by the
!   GPRS and PC/PSL pair.  This structure defines up to and including 
!   the count field  since this is the standard portion of the saved 
!   context for all processors.  
! 
! -
literal CRSH$K_LENGTH = 32;             ! LENGTH OF STRUCTURE 
literal CRSH$C_LENGTH = 32;             ! LENGTH OF STRUCTURE
literal CRSH$S_CRSHDEF = 32;
macro CRSH$L_ASTLVL = 0,0,32,0 %;       ! AST LEVEL REGISTER
macro CRSH$L_USP = 4,0,32,0 %;          ! USER STACK POINTER
macro CRSH$L_SSP = 8,0,32,0 %;          ! SUPERVISOR STACK PTR
macro CRSH$L_ESP = 12,0,32,0 %;         ! EXEC STACK POINTER
macro CRSH$L_KSP = 16,0,32,0 %;         ! KERNEL STACK POINTER
macro CRSH$L_ISP = 20,0,32,0 %;         ! INTERRUPT STACK PTR
macro CRSH$L_ICCS = 24,0,32,0 %;        ! INTERVAL TIMER CONTROL
macro CRSH$L_COUNT_IPRS = 28,0,32,0 %;  ! COUNT OF IPRS ON STACK 
 
!*** MODULE $CSBDEF ***
! +
!  CSB - CLUSTER SYSTEM BLOCK.
! 
!      	THERE IS ONE CSB FOR EACH SYSTEM IN THE CLUSTER.
! -
literal CSB$K_OPEN = 1;                 !   OPEN
literal CSB$K_STATUS = 2;               !   SENDING/WAITING FOR STATUS
literal CSB$K_RECONNECT = 3;            !   ATTEMPTING TO RECONNECT
literal CSB$K_NEW = 4;                  !   BRAND NEW BLOCK
literal CSB$K_CONNECT = 5;              !   ATTEMPTING INITIAL CONNECTION
literal CSB$K_ACCEPT = 6;               !   ACCEPTING INITIAL CONNECTION
literal CSB$K_DISCONNECT = 7;           !   DISCONNECT IN PROGRESS
literal CSB$K_REACCEPT = 8;             !   ACCEPTING RECONNECT REQUEST
literal CSB$K_WAIT = 9;                 !   TIME-OUT IN PROGRESS
literal CSB$K_DEAD = 10;                !   NO CONNECTION POSSIBLE
literal CSB$K_LOCAL = 11;               !   LOCAL SYSTEM CSB
literal CSB$M_LONG_BREAK = 1;
literal CSB$M_MEMBER = 2;
literal CSB$M_REMOVED = 4;
literal CSB$M_QF_SAME = 8;
literal CSB$M_QF_WATCHER = 16;
literal CSB$M_QF_NOACCESS = 32;
literal CSB$M_OLDVER_1 = 64;
literal CSB$M_CWPS = 128;
literal CSB$M_CLUSTER = 256;
literal CSB$M_QF_ACTIVE = 512;
literal CSB$M_SHUTDOWN = 1024;
literal CSB$M_GONE = 2048;
literal CSB$M_LOCKED = 65536;
literal CSB$M_SELECTED = 131072;
literal CSB$M_LOCAL = 16777216;
literal CSB$M_STATUS_RCVD = 33554432;
literal CSB$M_SEND_STATUS = 67108864;
literal CSB$M_QF_RFRSH_RQD = 134217728;
literal CSB$M_QF_RFRSH_IP = 268435456;
literal CSB$M_QF_IOSYNCH = 536870912;
literal CSB$M_ACT_LSHARE = 1073741824;
literal CSB$M_PASS_LSHARE = -2147483648;
literal CSB$C_LENGTH = 188;             !  LENGTH OF CSB 
literal CSB$K_LENGTH = 188;             !  LENGTH OF CSB 
literal CSB$S_CSBDEF = 188;
macro CSB$L_SYSQFL = 0,0,32,0 %;        !  SYSTEM QUEUE FORWARD LINK
macro CSB$L_SYSQBL = 4,0,32,0 %;        !  SYSTEM QUEUE BACKWARD LINK
macro CSB$W_SIZE = 8,0,16,0 %;          !  SIZE OF CSB IN BYTES
macro CSB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE 
macro CSB$B_SUBTYPE = 11,0,8,0 %;       !  STRUCTURE SUBTYPE
macro CSB$L_CDT = 12,0,32,0 %;          !  CDT ADDRESS
macro CSB$L_PDT = 16,0,32,0 %;          !  PDT ADDRESS
macro CSB$L_SENTQFL = 20,0,32,0 %;      !  SENT LIST HEAD LINK
macro CSB$L_SENTQBL = 24,0,32,0 %;      !  SENT LIST TAIL LINK
macro CSB$L_RESENDQFL = 28,0,32,0 %;    !  RESEND LIST HEAD LINK
macro CSB$L_RESENDQBL = 32,0,32,0 %;    !  RESEND LIST TAIL LINK
macro CSB$L_WARMCDRPQFL = 36,0,32,0 %;  !  WARM CDRP QUEUE FORWARD LINK
macro CSB$L_WARMCDRPQBL = 40,0,32,0 %;  !  WARM CDRP QUEUE BACKWARD LINK
macro CSB$W_SENDSEQNM = 44,0,16,0 %;    !  NEXT SEQUENCE NUMBER TO SEND
macro CSB$W_RCVDSEQNM = 46,0,16,0 %;    !  LAST SEQUENCE NUMBER RECEIVED
macro CSB$W_ACKRSEQNM = 48,0,16,0 %;    !  LAST ACK RECEIVED SEQ. NUM.
macro CSB$B_UNACKEDMSGS = 50,0,8,0 %;   !  NUMBER OF UNACKED MESSAGES
macro CSB$B_REMACKLIM = 51,0,8,0 %;     !  REMOTE SIDE'S ACK LIMIT
macro CSB$L_CURRCDRP = 52,0,32,0 %;     !  ADDRESS OF CDRP IN CRITICAL SECTION
macro CSB$Q_SWINCARN = 56,0,0,0 %;
literal CSB$S_SWINCARN = 8;             !  REMOTE SOFTWARE INCARN. NUM.
macro CSB$B_ECOLVL = 64,0,8,0 %;        !  PROTOCOL ECO LEVEL
macro CSB$B_VERNUM = 65,0,8,0 %;        !  PROTOCOL VERSION NUMBER
macro CSB$B_WARMCDRPS = 66,0,8,0 %;     !  NUMBER OF CDRPS ON FREE QUEUE
macro CSB$B_STATE = 67,0,8,0 %;         !  STATE OF CONNECTION
!  STATE VALUES:
macro CSB$L_TQE = 68,0,32,0 %;          !  ADDRESS OF TIMER QUEUE ENTRY
macro CSB$L_TIMEOUT = 72,0,32,0 %;      !  TIME TO GIVE UP RECONNECTING
macro CSB$L_CSID = 76,0,32,0 %;         !  Cluster System ID
macro CSB$W_CSID_IDX = 76,0,16,0 %;     !  Slot index
macro CSB$W_CSID_SEQ = 78,0,16,0 %;     !  Sequence number
macro CSB$W_VOTES = 80,0,16,0 %;        !  VOTES HELD BY NODE
macro CSB$W_QUORUM = 82,0,16,0 %;       !  QUORUM SET IN NODE
macro CSB$W_LCKDIRWT = 84,0,16,0 %;     !  LOCK MANAGER DISTRIBUTED DIRECTORY WEIGHT
macro CSB$W_QDVOTES = 86,0,16,0 %;      !  VOTES ASSIGNED TO QUORUM DISK
macro CSB$L_PARTNERQFL = 88,0,32,0 %;   !  LISTHEAD FWD PTR FOR BLOCK-XFER PARTNER BTXs
macro CSB$L_PARTNERQBL = 92,0,32,0 %;   !  LISTHEAD BACK PTR FOR BLOCK-XFER PARTNER BTXs
macro CSB$L_STATUS = 96,0,32,0 %;       !  STATUS OF NODE IN CLUSTER
!  THE FOLLOWING BITS ARE ALWAYS MEANINGFUL
macro CSB$V_LONG_BREAK = 96,0,1,0 %;    !   LONG BREAK IN CONNECTION
macro CSB$V_MEMBER = 96,1,1,0 %;        !   NODE IS MEMBER OF LOCAL CLUSTER
macro CSB$V_REMOVED = 96,2,1,0 %;       !   NODE REMOVED FROM CLUSTER
macro CSB$V_QF_SAME = 96,3,1,0 %;       !   REMOTE QUORUM DISK MATCHES LOCAL DISK
macro CSB$V_QF_WATCHER = 96,4,1,0 %;    !   REMOTE NODE IS WATCHING A QUORUM FILE
macro CSB$V_QF_NOACCESS = 96,5,1,0 %;   !   NODE WILL NEVER ACCESS QUORUM DISK
macro CSB$V_OLDVER_1 = 96,6,1,0 %;      !   OLD VERSION PROTOCOL FLAG
macro CSB$V_CWPS = 96,7,1,0 %;          !   NODE SPEAKS CWPS
!   THE FOLLOWING BITS ARE SIGNIFICANT WHILE FORMING/JOINING A CLUSTER
macro CSB$V_CLUSTER = 96,8,1,0 %;       !   REMOTE NODE IS CLUSTER MEMBER
macro CSB$V_QF_ACTIVE = 96,9,1,0 %;     !   REMOTE NODE'S QUORUM FILE IS READABLE
macro CSB$V_SHUTDOWN = 96,10,1,0 %;     !   REMOTE NODE READY FOR CLUSTER SHUTDOWN
macro CSB$V_GONE = 96,11,1,0 %;         !   KNOWN TO HAVE SHUTDOWN
!  THE FOLLOWING BITS ARE MEANINGFUL IF THIS NODE IS THE COORDINATOR
macro CSB$V_LOCKED = 96,16,1,0 %;       !   NODE LOCKED BY COORDINATOR
macro CSB$V_SELECTED = 96,17,1,0 %;     !   NODE SELECTED BY COORDINATOR
!  THE FOLLOWING BITS ARE OF LOCAL SIGNIFICANCE ONLY
macro CSB$V_LOCAL = 96,24,1,0 %;        !   MARK CSB FOR LOCAL SYSTEM
macro CSB$V_STATUS_RCVD = 96,25,1,0 %;  !   STATUS RECEIVED FROM REMOTE SYSTEM
macro CSB$V_SEND_STATUS = 96,26,1,0 %;  !   NEED TO SEND STATUS TO REMOTE SYSTEM
macro CSB$V_QF_RFRSH_RQD = 96,27,1,0 %; !   NEED QUORUM FILE REFRESH
macro CSB$V_QF_RFRSH_IP = 96,28,1,0 %;  !   QF REFRESH IN PROGRESS
macro CSB$V_QF_IOSYNCH = 96,29,1,0 %;   !   QF IO SYNCH DONE
macro CSB$V_ACT_LSHARE = 96,30,1,0 %;   !   ACTIVE SIDE TO LOAD SHARING
macro CSB$V_PASS_LSHARE = 96,31,1,0 %;  !   PASSIVE SIDE TO LOAD SHARING
macro CSB$L_CLUB = 100,0,32,0 %;        !  ADDRESS OF CLUB
macro CSB$L_SB = 104,0,32,0 %;          !  ADDRESS OF SB FOR REMOTE SYSTEM
macro CSB$B_REF_CNT = 108,0,8,0 %;      !  REFERENCE COUNT
macro CSB$B_CLUVER = 109,0,8,0 %;       !  CLUSTER VERSION NUMBER
macro CSB$W_NODES = 110,0,16,0 %;       !  Number of nodes in remote cluster
macro CSB$W_CNX_STS_R0 = 112,0,16,0 %;  !  CONNECTION REQUEST R0 STATUS
macro CSB$W_CNX_STS_R1 = 114,0,16,0 %;  !  CONNECTION REQUEST R1 STATUS
macro CSB$Q_REFTIME = 116,0,0,0 %;
literal CSB$S_REFTIME = 8;              !  CREATION/ADDITION/REMOVAL TIME
macro CSB$L_RMAX_VCTMO = 124,0,32,0 %;  !  MAX REMOTE VC TIMEOUT INTERVAL
macro CSB$W_LASTSENT = 128,0,16,0 %;    !  SEQ. NUM. OF MESSAGE LAST SENT
macro CSB$W_EVOTES = 130,0,16,0 %;      !  REMOTE NODE'S EXPECTED VOTES
macro CSB$B_CNCT = 132,0,0,1 %;
literal CSB$S_CNCT = 16;                !  CONNECT/ACCEPT DATA AREA
macro CSB$B_NODEMAP = 148,0,0,1 %;
literal CSB$S_NODEMAP = 32;             !  BITMAP OF NODE CONNECTIVITY
macro CSB$W_CNID = 180,0,16,0 %;        !  CLUSTER NODE ID
macro CSB$W_PASS_CNTR = 182,0,16,0 %;   !  Total Passive loadshare ops
macro CSB$W_ACT_CNTR = 184,0,16,0 %;    !  Total Active loadshare ops
macro CSB$W_ERR_CNTR = 186,0,16,0 %;    !  Total Errors on connection
 
!*** MODULE $CTLP1FLAGSDEF ***
!  +
!  CTL P1 flags
! 
!  These are flags in the CTL p1 region to define miscellaneous things.
!  They reside in the cell CTL$GQ_MISC_P1_FLAGS, defined in SHELL.MAR.
! 
!  -
literal CTLP1FLAGS$M_GSD_CLEAN = 1;
literal CTLP1FLAGS$M_IPC_CLEAN = 2;
literal CTLP1FLAGS$S_CTLP1DEF = 1;
macro CTLP1FLAGS$V_GSD_CLEAN = 0,0,1,0 %; !  GSD clean-up is in progress
macro CTLP1FLAGS$V_IPC_CLEAN = 0,1,1,0 %; !  $IPC association clean-up is in progress
 
!*** MODULE $CWPSDEF ***
! +
!  cwpssrv - Common service structure header
! 
!   All cwpsxxx$ packets contain the following header information.
! 
!  Fields marked with ++ must be filled/zeroed by service-specific
!  routines (at least for pcntrl services)
!  
! -
! 
!  The CWPSSRV$ structure is exchanged with remote nodes.  Any updates to this
!  structure must take mixed-version operation into account.
! 
literal cwpssrv$m_btx_done = 1;
literal cwpssrv$m_sec_class = 1;
literal cwpssrv$m_jpibuf = 2;
literal cwpssrv$m_noquota = 4;
literal cwpssrv$k_retry_cnt = 5;        !  five retries is about
!   4½ seconds
literal cwpssrv$k_length = 112;         !  length of data structure common
literal cwpssrv$k_srvcode_begin = 0;    !  - marker for beginning of codes
literal cwpssrv$k_canwak = 1;           !  $CANWAK service
literal cwpssrv$k_delprc = 2;           !  $DELPRC service
literal cwpssrv$k_forcex = 3;           !  $FORCEX service
literal cwpssrv$k_resume = 4;           !  $RESUME service
literal cwpssrv$k_schdwk = 5;           !  $SCHDWK service
literal cwpssrv$k_setpri = 6;           !  $SETPRI service
literal cwpssrv$k_suspnd = 7;           !  $SUSPND service
literal cwpssrv$k_wake = 8;             !  $WAKE service
literal cwpssrv$k_srvcode_end = 9;      !  - marker for end of SRV codes
!  CWPS subtypes for other services
literal cwpssrv$k_getjpi = 20;          !  $GETJPI service
literal cwpssrv$k_creprc = 21;          !  $CREPRC service
literal cwpssrv$k_termin = 22;          !  process termination message
!  CWPS subtypes for security service codes
literal cwpssrv$k_grantid = 28;         !  $GRANTID service
literal cwpssrv$k_revokid = 29;         !  $WAKE service
literal cwpssrv$k_version_1 = 1;        !  initial version
literal cwpssrv$k_version_2 = 2;
literal cwpssrv$k_version_3 = 3;
literal cwpssrv$k_version_4 = 4;
literal cwpssrv$k_version_5 = 5;
literal cwpssrv$k_version_6 = 6;
literal cwpssrv$k_version_7 = 7;
literal cwpssrv$k_version_8 = 8;
literal cwpssrv$k_version_9 = 9;
literal cwpssrv$k_version_10 = 10;
literal cwpssrv$k_version_11 = 11;
literal cwpssrv$k_version_12 = 12;
literal cwpssrv$k_initial_maj_vers = 1;
literal cwpssrv$k_initial_min_vers = 1;
literal cwpssrv$S_$cwpssrvdef = 112;
macro cwpssrv$l_send_length = 0,0,32,0 %; !  length sent to partner
macro cwpssrv$l_return_length = 4,0,32,0 %; !  length returned from partner
macro cwpssrv$w_size = 8,0,16,0 %;      !  size of structure	++
macro cwpssrv$b_type = 10,0,8,0 %;      !  structure type code	++
macro cwpssrv$b_subtype = 11,0,8,0 %;   !  structure subtype and service code  ++
macro cwpssrv$w_btx_status = 12,0,16,0 %; !  status of block transfer request
macro cwpssrv$b_btx_flags = 14,0,8,0 %; !  state of block transfer
macro cwpssrv$v_btx_done = 14,0,1,0 %;  !  block transfer is complete
macro cwpssrv$b_func = 15,0,8,0 %;      !  CLSMSG request function code
macro cwpssrv$w_srv_maj_vers = 16,0,16,0 %; !  incompatible version formats
macro cwpssrv$w_srv_min_vers = 18,0,16,0 %; !  upwards compatible extensions
macro cwpssrv$w_ext_maj_vers = 20,0,16,0 %; !  incompatible version formats
macro cwpssrv$w_ext_min_vers = 22,0,16,0 %; !  upwards compatible extensions
macro cwpssrv$l_status = 24,0,32,0 %;   !  status from remote service
macro cwpssrv$l_bxfr_status = 28,0,32,0 %; !  status from block transfer
macro cwpssrv$l_maximum_length = 32,0,32,0 %; !  maximum possible return length
macro cwpssrv$l_flags = 36,0,32,0 %;    !  longword of flags
macro cwpssrv$v_sec_class = 36,0,1,0 %; !  sec class present...
macro cwpssrv$v_jpibuf = 36,1,1,0 %;    !  jpi requests buffered
macro cwpssrv$v_noquota = 36,2,1,0 %;   !  quota has not been charged
macro cwpssrv$l_ext_offset = 40,0,32,0 %; !  offset to service-specific extension
macro cwpssrv$a_post_routine = 44,0,32,0 %; !  address of post-processing routine  ++
macro cwpssrv$l_rqstr_csid = 48,0,32,0 %; !  CSID of the requestor's node
macro cwpssrv$l_rqstr_pid = 52,0,32,0 %; !  IPID of the requestor
macro cwpssrv$l_rqstr_epid = 56,0,32,0 %; !  EPID of the requestor
macro cwpssrv$l_rqstr_imgcnt = 60,0,32,0 %; !  image count of requestor
macro cwpssrv$l_rqstr_rightslen = 64,0,32,0 %; !  length of process rights info
macro cwpssrv$l_rqstr_rightsoff = 68,0,32,0 %; !  offset to start of rights info
macro cwpssrv$l_rqstr_pidadr = 72,0,32,0 %; !  original pid address from user
macro cwpssrv$l_partner_csid = 76,0,32,0 %; !  CSID of the partner node
macro cwpssrv$l_sought_epid = 80,0,32,0 %; !  epid for target process
macro cwpssrv$l_return_epid = 84,0,32,0 %; !  actual epid from target process
macro cwpssrv$w_prcnamlen = 88,0,16,0 %; !  length of target process name
macro cwpssrv$w_prcnamoff = 90,0,16,0 %; !  offset to start of target process name
macro cwpssrv$l_free_offset = 92,0,32,0 %; !  offset to free data area
macro cwpssrv$l_spare1 = 96,0,32,0 %;   !  zero if unused
macro cwpssrv$w_spare2 = 100,0,16,0 %;  !  zero if unused
macro cwpssrv$b_spare3 = 102,0,8,0 %;   !  zero if unused
macro cwpssrv$b_retries_left = 103,0,8,0 %; !  number of retries remaining
macro cwpssrv$q_time = 104,0,0,0 %;
literal cwpssrv$s_time = 8;             !  time structure allocated
literal cwps$_enabled = 1;              !  assemble the code
literal cwps$_nervous = 1;              !  do reasonable checking
literal cwps$_scared = 1;               !  do a lot of consistency checking
literal cwps$_paranoid = 1;             !  do excessive checking
literal cwps$_statistics = 1;           !  collect statistics
literal cwpscan$k_length = 0;           !  length of $CANWAK
literal cwpsdel$k_length = 0;           !  length of $DELPRC
literal cwpsres$k_length = 0;           !  length of $RESUME
literal cwpssus$k_length = 0;           !  length of $SUSPND
literal cwpswak$k_length = 0;           !  length of $WAKE
! 
!  The CWPSFEX$ structure is exchanged with remote nodes.  Any updates to this
!  structure must take mixed-version operation into account.
! 
literal cwpsfex$k_length = 4;           !  length of data structure
literal cwpsfex$S_$cwpsfexdef = 4;
macro cwpsfex$l_code = 0,0,32,0 %;      !  code to pass to remote
! 
!  The CWPSPRI$ structure is exchanged with remote nodes.  Any updates to this
!  structure must take mixed-version operation into account.
! 
literal cwpspri$k_length = 12;          !  length of data structure
literal cwpspri$S_$cwpspridef = 12;
macro cwpspri$l_user_prvpri = 0,0,32,0 %; !  address of user's cell
macro cwpspri$l_pri = 4,0,32,0 %;       !  priority we send to remote
macro cwpspri$l_prvpri = 8,0,32,0 %;    !  priority we receive from remote
! 
!  The CWPSSWK$ structure is exchanged with remote nodes.  Any updates to this
!  structure must take mixed-version operation into account.
! 
literal cwpsswk$k_length = 16;          !  length of data structure
literal cwpsswk$S_$cwpsswkdef = 16;
macro cwpsswk$q_daytim = 0,0,0,0 %;
literal cwpsswk$s_daytim = 8;           !  time to wake up
macro cwpsswk$q_reptim = 8,0,0,0 %;
literal cwpsswk$s_reptim = 8;           !  time to repeat wake up
! 
!  The CWPSJPI$ structure is exchanged with remote nodes.  Any updates to this
!  structure must take mixed-version operation into account.
! 
literal cwpsjpi$k_length = 60;          !  length of data structure
literal cwpsjpi$S_$cwpsjpidef = 60;
macro cwpsjpi$l_pscan_off = 0,0,32,0 %; !  offset to start of pscanctx
macro cwpsjpi$l_itmoff = 4,0,32,0 %;    !  offset to item list in structure
macro cwpsjpi$l_bufoff = 8,0,32,0 %;    !  offset to return buffer
macro cwpsjpi$l_vecoff = 12,0,32,0 %;   !  offset to vector for item addr
macro cwpsjpi$l_acboff = 16,0,32,0 %;   !  offset to acb structure
macro cwpsjpi$l_itmlst = 20,0,32,0 %;   !  address of original item list
macro cwpsjpi$l_buflen = 24,0,32,0 %;   !  length of user's buffers
macro cwpsjpi$l_iosbadr = 28,0,32,0 %;  !  user's I/O status address
macro cwpsjpi$q_iosb = 32,0,0,0 %;
literal cwpsjpi$s_iosb = 8;             !  return iosb contents
macro cwpsjpi$l_astadr = 40,0,32,0 %;   !  AST address
macro cwpsjpi$l_astprm = 44,0,32,0 %;   !  AST parameter
macro cwpsjpi$l_pscanctx_addr = 48,0,32,0 %; !  PSCANCTX record address
macro cwpsjpi$w_pscan_seqnum = 52,0,16,0 %; !  sequence number of PSCANCTX
macro cwpsjpi$b_efn = 54,0,8,0 %;       !  event flag to set 
macro cwpsjpi$b_acmode = 55,0,8,0 %;    !  access mode of original call
macro cwpsjpi$w_ctlflags = 56,0,16,0 %; !  JPI$_GETJPI_CONTROL_FLAGS bits
macro cwpsjpi$w_spare0 = 58,0,16,0 %;   !  spare, align
! 
!  The CWPSVEC$ structure is a local structure.  If modified, you do not need
!  to take mixed-version operation into account, however you must be sure that
!  all modules and images which reference the structure are updated together.
! 
literal cwpsvec$k_length = 8;           !  length of data structure
literal cwpsvec$S_$cwpsvecdef = 8;
macro cwpsvec$l_usr_bufadr = 0,0,32,0 %; !  user's address for buffer items
macro cwpsvec$l_usr_lenadr = 4,0,32,0 %; !  user's address for returned length
! 
!  The CWPSACB$ structure is a local structure.  If modified, you do not need
!  to take mixed-version operation into account, however you must be sure that
!  all modules and images which reference the structure are updated together.
! 
literal cwpsacb$k_acb_length = 28;      !  length of embedded block
literal cwpsacb$k_length = 80;          !  length of data structure (less PCB)
literal cwpsacb$S_$cwpsacbdef = 81;
macro cwpsacb$l_astqfl = 0,0,32,0 %;    !  ast queue forward link 
macro cwpsacb$l_astqbl = 4,0,32,0 %;    !  ast queue backward link 
macro cwpsacb$w_size = 8,0,16,0 %;      !  structure size in bytes 
macro cwpsacb$b_type = 10,0,8,0 %;      !  structure type code 
macro cwpsacb$b_rmod = 11,0,8,0 %;      !  request access mode 
macro cwpsacb$l_pid = 12,0,32,0 %;      !  process id of request 
macro cwpsacb$l_ast = 16,0,32,0 %;      !  ast routine address 
macro cwpsacb$l_astprm = 20,0,32,0 %;   !  ast parameter 
macro cwpsacb$l_kast = 24,0,32,0 %;     !  internal kernel mode xfer address 
macro cwpsacb$l_bufadr = 28,0,32,0 %;   !  address of buffer
macro cwpsacb$l_buflen = 32,0,32,0 %;   !  length of the buffer
macro cwpsacb$l_msgbuf = 36,0,32,0 %;   !  message buffer address
macro cwpsacb$l_csb = 40,0,32,0 %;      !  csb address
macro cwpsacb$l_cdrp = 44,0,32,0 %;     !  cdrp address
macro cwpsacb$l_read_length = 48,0,32,0 %; !  length of bxfr read request
macro cwpsacb$l_write_length = 52,0,32,0 %; !  length of bxfr write request
macro cwpsacb$l_rightsdesc = 56,0,0,0 %;
literal cwpsacb$s_rightsdesc = 8;       !  descriptor for rightslist
macro cwpsacb$b_func = 64,0,8,0 %;      !  function code from message
macro cwpsacb$b_spare0 = 65,0,8,0 %;
macro cwpsacb$w_spare1 = 66,0,16,0 %;
macro cwpsacb$l_spare2 = 68,0,32,0 %;   !  trojan PCB should be octaword
macro cwpsacb$l_spare3 = 72,0,32,0 %;   !  aligned
macro cwpsacb$l_spare4 = 76,0,32,0 %;
macro cwpsacb$b_trojan_pcb = 80,0,8,0 %; !  start of false PCB
! 
!  The CWPSSQH$ structure is a local structure.  If modified, you do not need
!  to take mixed-version operation into account, however you must be sure that
!  all modules and images which reference the structure are updated together.
! 
literal cwpssqh$k_length = 32;          !  length of data structure
literal cwpssqh$S_$cwpssqhdef = 32;
macro cwpssqh$l_flink = 0,0,32,0 %;     !  forward link
macro cwpssqh$l_blink = 4,0,32,0 %;     !  back link
macro cwpssqh$w_size = 8,0,16,0 %;      !  size of structure (SQH only)
macro cwpssqh$b_type = 10,0,8,0 %;      !  structure type code
macro cwpssqh$b_subtype = 11,0,8,0 %;   !  structure subtype
macro cwpssqh$l_alloc_length = 12,0,32,0 %; !  actual length of allocation
macro cwpssqh$l_mpid = 16,0,32,0 %;     !  master pid
macro cwpssqh$l_spare0 = 20,0,32,0 %;   !  enough to make it octaword
macro cwpssqh$l_spare1 = 24,0,32,0 %;   !  aligned...
macro cwpssqh$l_spare3 = 28,0,32,0 %;
! 
!  The CWPSNODI*$ structures are local structures.  If modified, you do not need
!  to take mixed-version operation into account, however you must be sure that
!  all modules and images which reference the structures are updated together.
! 
literal cwpsnodih$k_header = 16;        !  length of data structure
literal cwpsnodih$S_$cwpsnodihdef = 17;
macro cwpsnodih$l_flink = 0,0,32,0 %;   !  forward link
macro cwpsnodih$l_blink = 4,0,32,0 %;   !  back link
macro cwpsnodih$w_size = 8,0,16,0 %;    !  size of structure
macro cwpsnodih$b_type = 10,0,8,0 %;    !  structure type code
macro cwpsnodih$b_subtype = 11,0,8,0 %; !  structure subtype
macro cwpsnodih$l_count = 12,0,32,0 %;  !  count of nodes
macro cwpsnodih$b_node_list = 16,0,8,0 %; !  start of list of node blocks
literal cwpsnodi$k_length = 28;         !  length of data structure
literal cwpsnodi$S_$cwpsnodidef = 28;
macro cwpsnodi$l_hwtype = 0,0,32,0 %;   !  hardware type (and flink)
macro cwpsnodi$w_hw_model = 4,0,16,0 %; !  integer model code
macro cwpsnodi$l_csid = 8,0,32,0 %;     !  node's csid
macro cwpsnodi$b_name = 12,0,0,0 %;
literal cwpsnodi$s_name = 16;           !  node's name (ASCIC)
 
!*** MODULE $CXBDEF ***
!  +
!   CXB - COMPLEX CHAINED BUFFER
!  
!   THESE OFFSETS ARE USED IN THE HEADER OF DISJOINT SEGMENTS
!   WHICH ARE TO BE PRESENTED TO THE USER AS A UNIT.
!  
!  -
literal CXB$M_RESP = 1;
literal CXB$L_NI_ALTXMT = 28;           !  ALTSTART XMT parameters
literal CXB$C_AGENT_SCRATCH_LEN = 44;
!  This marks the length of the standard CXB.
literal CXB$K_LENGTH = 84;
literal CXB$C_LENGTH = 84;
!  Data link layer scratch space
literal CXB$M_FLTR_MCA = 1;
literal CXB$M_FLTR_CTL = 2;
literal CXB$M_FLTR_SRC = 4;
literal CXB$M_FLTR_STARTUP = 1;
literal CXB$M_FLTR_INTXMIT = 2;
literal CXB$T_R_DATA = 120;             !  Start of RCV data
literal CXB$W_R_LEN_802 = 132;          !  802 length field
literal CXB$T_R_USER_ETH = 134;         !  Start of user ETH data
literal CXB$W_R_SIZE = 134;             !  Size of message if padded
literal CXB$X_R_CTL = 136;              !  802 CTL field
literal CXB$G_R_PID = 137;              !  5-byte Protocol Identifier
literal CXB$T_R_USER_802E = 142;        !  Start of user 802E data
literal CXB$C_DLL = 52;                 !  Size of CXB$T_DLL 
literal CXB$C_DLL_SCRATCH_LEN = 52;     !  Size of CXB$T_DLL 
!  ** This field must be quadword aligned for CNDRIVER.
literal CXB$K_HEADER = 136;             !  CXB size up to this point 
literal CXB$C_HEADER = 136;             !  CXB size up to this point 
literal CXB$C_TRAILER = 4;              !  Space after CXB data for CRC code 
literal CXB$K_OVERHEAD = 140;           !  CXB$C_HEADER + CXB$C_TRAILER 
literal CXB$C_OVERHEAD = 140;           !  CXB$C_HEADER + CXB$C_TRAILER 
literal CXB$S_CXBDEF = 140;
macro CXB$L_FL = 0,0,32,0 %;            !  Forward queue link 
macro CXB$L_BL = 4,0,32,0 %;            !  Backward queue link 
macro CXB$W_SIZE = 8,0,16,0 %;          !  Block size 
macro CXB$B_TYPE = 10,0,8,0 %;          !  Block type 
macro CXB$B_FLAG = 11,0,8,0 %;          !  Flag byte
macro CXB$V_RESP = 11,0,1,0 %;          !   Command/Response indicator
macro CXB$W_BOFF = 12,0,16,0 %;         !  Offset to data link data
macro CXB$W_BCNT = 14,0,16,0 %;         !  Size of data link data
macro CXB$L_DATA_CHAIN = 16,0,32,0 %;   !  Pointer to data chain buffer descriptor
macro CXB$Q_STATION = 20,0,0,0 %;
literal CXB$S_STATION = 8;              !  Contains destination address or source address
macro CXB$W_CTL = 28,0,16,0 %;          !  802.2 ctl field either byte or word value
macro CXB$B_CTL_SIZE = 30,0,8,0 %;      !  802.2 ctl field value size
macro CXB$B_DSAP = 31,0,8,0 %;          !  802.2 ALT/FFI XMT dest sap
macro CXB$Q_RESERVED = 32,0,0,0 %;
literal CXB$S_RESERVED = 8;             !  Reserved for future use
!  Agent specific scratch space.
macro CXB$T_AGENT_SCRATCH = 40,0,0,0 %;
literal CXB$S_AGENT_SCRATCH = 44;
!  DECnet-VAX agent specific fields.
macro CXB$T_AGENT_DECNET = 40,0,0,0 %;
literal CXB$S_AGENT_DECNET = 44;
macro CXB$W_LENGTH = 40,0,16,0 %;       !  Length of data 
macro CXB$W_OFFSET = 42,0,16,0 %;       !  Offset to start of nsp message 
macro CXB$B_CODE = 44,0,8,0 %;          !  Buffer code 
macro CXB$B_STS = 45,0,8,0 %;           !  Status fields
macro CXB$W_CHANNEL = 46,0,16,0 %;      !  Store channel number for AST 
macro CXB$L_LINK = 48,0,32,0 %;         !  Link word for chained data message 
macro CXB$L_IRP = 52,0,32,0 %;          !  IRP address for transmits 
macro CXB$L_END_ACTION = 56,0,32,0 %;   !  Pointer to I/O done routine
!  The following fields contain the context that NSP needs to process a packet
!  which has been received out of order.
macro CXB$L_R_NSP_MSG = 60,0,32,0 %;    !  This is the address of the next
!  byte in the NSP message after
!  the segment number field (R1)
macro CXB$L_R_DATA_SIZE = 64,0,32,0 %;  !  This is the number of as yet
!  unaccounted bytes in message (R2)
macro CXB$W_R_SEG_NUM = 68,0,16,0 %;    !  This is the messages segment number (R3)
!   Backlink pointer for NSP to associate the CXB with the user's originating
!   IRP.  The non-agent specific field, CXB$L_IRP, cannot be used because the
!   datalink drivers use this field for the same purpose, but different IRP.
!   The datalink's IRP is the DECnet routing supplied IRP queued to the 
!   altstart interface.
macro CXB$L_USER_IRP = 70,0,32,0 %;     !  link to user's IRP
macro CXB$L_LAST_DCB = 74,0,32,0 %;     !  pointer to last DCB
!  Size of the agent scratch area 
macro CXB$T_DLL = 84,0,0,0 %;
literal CXB$S_DLL = 52;
!  The following three structures define the fields used by the
!  Ethernet/802 datalink drivers.
macro CXB$T_DLL_NI802 = 84,0,0,0 %;
literal CXB$S_DLL_NI802 = 52;
macro CXB$B_NI_FUNC = 84,0,8,0 %;       !  Internal function code
macro CXB$B_R_FLAGS = 85,0,8,0 %;       !  Flags
macro CXB$W_NI_RID = 86,0,16,0 %;       !  Request ID
macro CXB$B_NI_SLOT = 86,0,8,0 %;       !  Mapping slot number
macro CXB$B_NI_RING = 87,0,8,0 %;       !  Ring Entry number
macro CXB$L_T_IRP = 88,0,32,0 %;        !  User IRP address
macro CXB$W_R_NCHAIN = 92,0,16,0 %;     !  Number of buffers in chain
macro CXB$W_R_LENERR = 94,0,16,0 %;     !  Length and Rcv error status
macro CXB$L_R_UCB = 96,0,32,0 %;        !  UCB address of receiver
macro CXB$W_HDR_SIZE = 100,0,16,0 %;    !  Size of receive header
macro CXB$B_R_FMT = 102,0,8,0 %;        !  Receive packet format
macro CXB$r_filter = 103,0,8,0 %;
literal CXB$s_filter = 1;
macro CXB$B_R_FILTER = 103,0,8,0 %;     !  Receive CXB filtering mask word
macro CXB$V_FLTR_MCA = 103,0,1,0 %;     !  MCA filtering has been performed
macro CXB$V_FLTR_CTL = 103,1,1,0 %;     !  CTL filtering has been performed
macro CXB$V_FLTR_SRC = 103,2,1,0 %;     !  SRC filtering has been performed
macro CXB$B_T_FILTER = 103,0,8,0 %;     !  Transmit CXB filtering mask word
macro CXB$V_FLTR_STARTUP = 103,0,1,0 %; !  Delete CXB, complete IRP
macro CXB$V_FLTR_INTXMIT = 103,1,1,0 %; !  Add CXB to Receive list
macro CXB$T_DLL_NI802XMT = 84,0,0,0 %;
literal CXB$S_DLL_NI802XMT = 52;
macro CXB$T_T_DATA = 122,0,0,0 %;
literal CXB$S_T_DATA = 14;              !  Start of standard XMT
macro CXB$T_DLL_NI802RCV = 84,0,0,0 %;
literal CXB$S_DLL_NI802RCV = 52;
macro CXB$G_R_DEST = 120,0,0,0 %;
literal CXB$S_R_DEST = 6;               !  Destination address
macro CXB$G_R_SRC = 126,0,0,0 %;
literal CXB$S_R_SRC = 6;                !  Source address
macro CXB$W_R_PTYPE = 132,0,16,0 %;     !  Protocol type
macro CXB$B_R_DSAP = 134,0,8,0 %;       !  802 DSAP field
macro CXB$B_R_SSAP = 135,0,8,0 %;       !  802 SSAP field
!  the CRC trailer
 
!*** MODULE $DALDEF ***
! +
!  DAL - Device Allocation Lock (value block contents)
! 
!  This structure defines the contents of the lock value block for a 
!  device allocation lock.
! -
literal DAL$M_NOTFIRST_MNT = 1;
literal DAL$M_FOREIGN = 2;
literal DAL$M_GROUP = 4;
literal DAL$M_SYSTEM = 8;
literal DAL$M_WRITE = 16;
literal DAL$M_NOQUOTA = 32;
literal DAL$M_OVR_PROT = 64;
literal DAL$M_OVR_OWNUIC = 128;
literal DAL$M_NOINTERLOCK = 256;
literal DAL$M_SHADOW_MBR = 512;
literal DAL$S_DALDEF = 8;
macro DAL$W_FLAGS = 0,0,16,0 %;         !  Device usage flags:
macro DAL$V_NOTFIRST_MNT = 0,0,1,0 %;   !    not first time device mounted.
macro DAL$V_FOREIGN = 0,1,1,0 %;        !    device mounted /FOREIGN
macro DAL$V_GROUP = 0,2,1,0 %;          !    device mounted /GROUP
macro DAL$V_SYSTEM = 0,3,1,0 %;         !    device mounted /SYSTEM
macro DAL$V_WRITE = 0,4,1,0 %;          !    write access allowed
macro DAL$V_NOQUOTA = 0,5,1,0 %;        !    quota checking disabled
macro DAL$V_OVR_PROT = 0,6,1,0 %;       !    override protection
macro DAL$V_OVR_OWNUIC = 0,7,1,0 %;     !    override volume ownership
macro DAL$V_NOINTERLOCK = 0,8,1,0 %;    !    access NOT VAXcluster interlocked
macro DAL$V_SHADOW_MBR = 0,9,1,0 %;     !    shadow set member
macro DAL$W_PROTECTION = 2,0,16,0 %;    !  Volume protection
macro DAL$L_OWNER_UIC = 4,0,32,0 %;     !  Volume owner UIC
 
!*** MODULE $DCBDEF ***
!  +
!   DCB - Data link layer chained buffer descriptor
!  
!   This descriptor may be used in onw of two ways. The first way is to 
!   use this descriptor to describe a direct I/O transfer. The second 
!   is to use this descriptor to describe a chain of buffers to transmit
!   or a chain of buffers which have been received.
!  
!  -
literal DCB$M_TYPE_IO = 1;
literal DCB$K_HEADER = 28;              !  DCB size up to this point 
literal DCB$C_HEADER = 28;              !  DCB size up to this point 
literal DCB$S_DCBDEF = 28;
macro DCB$L_FLINK = 0,0,32,0 %;         !  Forward link
macro DCB$L_BLINK = 4,0,32,0 %;         !  Backward link
macro DCB$W_SIZE = 8,0,16,0 %;          !  Size of block
macro DCB$B_TYPE = 10,0,8,0 %;          !  Type of block
macro DCB$B_MODE = 11,0,8,0 %;          !  Access mode of agent
macro DCB$L_LINK = 12,0,32,0 %;         !  Link to next buffer in chain
macro DCB$W_STS = 16,0,16,0 %;          !  Describe I/O
macro DCB$V_TYPE_IO = 16,0,1,0 %;       !  If set DIRECT if clear buffered
macro DCB$W_RESV = 18,0,16,0 %;         !  Reserved for future use
macro DCB$L_SVAPTE = 20,0,32,0 %;       !  SVAPTE of buffer if not specified
!  then the buffer is embedded 
!  in this buffer
macro DCB$W_BOFF = 24,0,16,0 %;         !  Offset to start of data. Data
!  link headers must be back built
!  from this offset.
macro DCB$W_BCNT = 26,0,16,0 %;         !  For transmits size in bytes of this
!  segment of the data. For receives
!  contains the size of the segment
!  of data contained in this buffer.
 
!*** MODULE $DDBDEF ***
! +
!  DDB - DEVICE DATA BLOCK
! 
!  THERE IS ONE DEVICE DATA BLOCK FOR EACH CONTROLLER IN A SYSTEM.
! +
literal DDB$K_PACK = 1;                 ! LARGE DISK PACKS 
literal DDB$K_CART = 2;                 ! DISK CARTRIDGES 
literal DDB$K_SLOW = 3;                 ! SLOW (CHEAP) DISKS (E.G., FLOPPY) 
literal DDB$K_TAPE = 4;                 ! BLOCK STRUCTURED TAPE (E.G., TU58) 
literal DDB$K_LENGTH = 68;              ! LENGTH OF STANDARD DDB 
literal DDB$C_LENGTH = 68;              ! LENGTH OF STANDARD DDB 
literal DDB$S_DDBDEF = 68;
macro DDB$L_LINK = 0,0,32,0 %;          ! ADDRESS OF NEXT DDB IN LIST (0=LAST) 
macro DDB$L_UCB = 4,0,32,0 %;           ! ADDRESS OF FIRST UCB FOR THIS DDB 
macro DDB$W_SIZE = 8,0,16,0 %;          ! SIZE OF DDB IN BYTES 
macro DDB$B_TYPE = 10,0,8,0 %;          ! TYPE OF DATA STRUCTURE FOR DDB 
macro DDB$L_DDT = 12,0,32,0 %;          ! ADDRESS OF THE DRIVER DISPATCH TABLE 
macro DDB$L_ACPD = 16,0,32,0 %;         ! NAME OF DEFAULT ACP FOR DEVICE UNITS 
macro DDB$B_ACPCLASS = 19,0,8,0 %;      ! CLASS CODE OF DEFAULT ACP 
! ACP CLASS CODE FOR DISKS 
macro DDB$T_NAME = 20,0,0,0 %;
literal DDB$S_NAME = 16;                !    OF THE DEVICE 
!  AS AN
macro DDB$B_NAME_LEN = 20,0,8,0 %;      !  	CHARACTER COUNT
macro DDB$T_NAME_STR = 21,0,0,0 %;
literal DDB$S_NAME_STR = 15;            !  	CHARACTER STRING
macro DDB$T_DRVNAME = 36,0,0,0 %;
literal DDB$S_DRVNAME = 16;             ! 
!  AS AN
macro DDB$B_DRVNAM_LEN = 36,0,8,0 %;    !  	CHARACTER COUNT
macro DDB$T_DRVNAM_STR = 37,0,0,0 %;
literal DDB$S_DRVNAM_STR = 15;          !  	CHARACTER STRING
macro DDB$L_SB = 52,0,32,0 %;           ! ADDR OF SYSTEMBLOCK
macro DDB$L_CONLINK = 56,0,32,0 %;      ! NEXT DDB IN CONNECTION SUB-CHAIN
macro DDB$L_ALLOCLS = 60,0,32,0 %;      ! DEVICE ALLOCATION CLASS
macro DDB$L_2P_UCB = 64,0,32,0 %;       !  ADDRESS OF FIRST UCB ON SECONDARY PATH
macro DDB$L_DP_UCB = 64,0,32,0 %;       !  OLD STYLE SYNONYM FOR ABOVE
 
!*** MODULE $DDTDEF ***
! +
!  DDT - DRIVER DISPATCH TABLE
! 
!  EACH DEVICE DRIVER HAS A DRIVER DISPATCH TABLE.
! -
literal DDT$K_LENGTH = 64;              ! LENGTH OF DDT 
literal DDT$C_LENGTH = 64;              ! LENGTH OF DDT 
literal DDT$S_DDTDEF = 64;
macro DDT$L_START = 0,0,32,0 %;         ! ADDRESS OF DRIVER START I/O ROUTINE 
macro DDT$L_UNSOLINT = 4,0,32,0 %;      ! ADDRESS OF UNSOLICITED INTERRUPT ROUTINE 
macro DDT$L_FDT = 8,0,32,0 %;           ! ADDRESS OF FUNCTION DECISION TABLE 
macro DDT$L_CANCEL = 12,0,32,0 %;       ! ADDRESS OF CANCEL I/O ENTRY POINT 
macro DDT$L_REGDUMP = 16,0,32,0 %;      ! ADDRESS OF DEVICE REGISTER DUMP ROUTINE 
macro DDT$W_DIAGBUF = 20,0,16,0 %;      ! SIZE OF DIAGNOSTIC BUFFER IN BYTES 
macro DDT$W_ERRORBUF = 22,0,16,0 %;     ! SIZE OF ERROR LOG BUFFER IN BYTES 
macro DDT$L_UNITINIT = 24,0,32,0 %;     ! UNIT INITIALIZATION ENTRY POINT 
macro DDT$L_ALTSTART = 28,0,32,0 %;     ! ALTERNATE START I/O ENTRY POINT 
macro DDT$L_MNTVER = 32,0,32,0 %;       ! ADDRESS OF MOUNT VERIFICATION ROUTINE 
macro DDT$L_CLONEDUCB = 36,0,32,0 %;    ! ADDRESS OF CLONED UCB ENTRY POINT
macro DDT$W_FDTSIZE = 40,0,16,0 %;      ! SIZE OF FDT IN BYTES 
macro DDT$L_MNTV_SSSC = 44,0,32,0 %;    ! ADDRESS OF SHADOW SET STATE CHANGE MV ENTRY
macro DDT$L_MNTV_FOR = 48,0,32,0 %;     ! ADDRESS OF FOREIGN DEVICE MV ENTRY
macro DDT$L_MNTV_SQD = 52,0,32,0 %;     ! ADDRESS OF SEQUENTIAL DEVICE MV ENTRY
macro DDT$L_AUX_STORAGE = 56,0,32,0 %;  ! ADDRESS OF AUXILIARY STORAGE AREA
macro DDT$L_AUX_ROUTINE = 60,0,32,0 %;  ! ADDRESS OF AUXILIARY ROUTINE
 
!*** MODULE $DJIDEF ***
! 
!  Item codes for interface from job controller to LOGINOUT.
! 
literal DJI$K_CPU_MAXIMUM = 1;          !  (longword)	CPU maximum (10 ms units)
literal DJI$K_FILE_IDENTIFICATION = 2;  !  (28 bytes)	DVI, FID, DID of command procedure
literal DJI$K_FLAGS = 3;                !  (longword)	flags
literal DJI$K_JOB_NAME = 4;             !  (string)	job name
literal DJI$K_LOG_QUEUE = 5;            !  (string)	log file queue
literal DJI$K_LOG_SPECIFICATION = 6;    !  (string)	log file specification
literal DJI$K_PARAMETER_1 = 7;          !  (string)	value of P1
literal DJI$K_PARAMETER_2 = 8;          !  (string)	value of P2
literal DJI$K_PARAMETER_3 = 9;          !  (string)	value of P3
literal DJI$K_PARAMETER_4 = 10;         !  (string)	value of P4
literal DJI$K_PARAMETER_5 = 11;         !  (string)	value of P5
literal DJI$K_PARAMETER_6 = 12;         !  (string)	value of P6
literal DJI$K_PARAMETER_7 = 13;         !  (string)	value of P7
literal DJI$K_PARAMETER_8 = 14;         !  (string)	value of P8
literal DJI$K_RESTART = 15;             !  (string)	value of BATCH$RESTART
literal DJI$K_USERNAME = 16;            !  (string)	username
literal DJI$K_WSDEFAULT = 17;           !  (longword)	working set default
literal DJI$K_WSEXTENT = 18;            !  (longword)	working set extent
literal DJI$K_WSQUOTA = 19;             !  (longword)	working set quota
literal DJI$K_ADJUST_PRIORITY = 20;     !  (longword)   adjusted priority
literal DJI$K_CLI = 21;                 !  (string)	CLI name
literal DJI$K_CLASS = 22;               !  (20 bytes)	process classification
literal DJI$K_INPUT_FLAGS = 32769;      !  (longword)	flags
literal DJI$K_CONDITION_VECTOR = 32770; !  (1 to 3 longwords) error conditions
literal DJI$K_FILE_SPECIFICATION = 32771; !  (string)	filespec of failed logfile
literal DJI$S_ITEM_HEADER = 4;
macro DJI$W_ITEM_SIZE = 0,0,16,0 %;     !  Item size
macro DJI$W_ITEM_CODE = 2,0,16,0 %;     !  Item code
! 
!  Structure of FLAGS item.
! 
literal DJI$M_DELETE_FILE = 1;
literal DJI$M_LOG_DELETE = 2;
literal DJI$M_LOG_NULL = 4;
literal DJI$M_LOG_SPOOL = 8;
literal DJI$M_NOTIFY = 16;
literal DJI$M_RESTARTING = 32;
literal DJI$M_TERMINATE = 64;
literal DJI$M_USE_CPU_MAXIMUM = 128;
literal DJI$M_USE_WSDEFAULT = 256;
literal DJI$M_USE_WSEXTENT = 512;
literal DJI$M_USE_WSQUOTA = 1024;
literal DJI$S_FLAGS = 4;
macro DJI$L_FLAGS = 0,0,32,0 %;
macro DJI$V_DELETE_FILE = 0,0,1,0 %;    !  delete command procedure
macro DJI$V_LOG_DELETE = 0,1,1,0 %;     !  delete log file
macro DJI$V_LOG_NULL = 0,2,1,0 %;       !  log specification is NLA0:
macro DJI$V_LOG_SPOOL = 0,3,1,0 %;      !  spool log file
macro DJI$V_NOTIFY = 0,4,1,0 %;         !  spool log file with /NOTIFY
macro DJI$V_RESTARTING = 0,5,1,0 %;     !  job is restarting
macro DJI$V_TERMINATE = 0,6,1,0 %;      !  job should terminate
macro DJI$V_USE_CPU_MAXIMUM = 0,7,1,0 %; !  use specified CPU_MAXIMUM
macro DJI$V_USE_WSDEFAULT = 0,8,1,0 %;  !  use specified WSDEFAULT
macro DJI$V_USE_WSEXTENT = 0,9,1,0 %;   !  use specified WSEXTENT
macro DJI$V_USE_WSQUOTA = 0,10,1,0 %;   !  use specified WSQUOTA
! 
!  Structure of INPUT_FLAGS item.
! 
literal DJI$M_NO_FILE = 1;
literal DJI$S_INPUT_FLAGS = 4;
macro DJI$L_INPUT_FLAGS = 0,0,32,0 %;
macro DJI$V_NO_FILE = 0,0,1,0 %;        !  do not return a file
 
!*** MODULE $DMBDEF ***
! +
!  DMB32 (BICOMBO) specific register definitions
! -
literal DMB$M_FORCE_FAIL = 1;
literal DMB$M_PROGRAM_RESET = 2;
literal DMB$M_PTE_VALID = 4;
literal DMB$M_SKIP_SELFTEST = 8;
literal DMB$M_MAINT_LEVEL1 = 16;
literal DMB$M_MAINT_LEVEL2 = 32;
literal DMB$M_SYNC = 256;
literal DMB$M_ASYNC = 512;
literal DMB$M_PRINT = 1024;
literal DMB$M_DIAG_FAIL = 2048;
literal DMB$M_X21_SUPPORT = 4096;
literal DMB$M_CABLE_KEY = 8192;
literal DMB$M_TURN_CONN = 16384;
literal DMB$M_MANF_CONN = 32768;
literal DMB$M_RX_I_E = 256;
literal DMB$M_TX_I_E = 512;
literal DMB$M_SYNC_I_E = 2048;
literal DMB$M_PR_I_E = 2048;
literal DMB$M_PR_DAVFU_READY = 65536;
literal DMB$M_PR_CONNECT_VERIFY = 131072;
literal DMB$M_PR_OFFLINE = 262144;
literal DMB$M_ASYNC_RESET = 1024;
literal DMB$M_SYNC_RESET = 1024;
literal DMB$M_PRINTER_RESET = 1024;
literal DMB$M_PR_DMA_START = 1;
literal DMB$M_PR_DMA_PTE = 2;
literal DMB$M_PR_DMA_PHYS = 4;
literal DMB$M_PR_DMA_ABORT = 256;
literal DMB$M_PR_FORMAT = 512;
literal DMB$M_PR_TAB = 16777216;
literal DMB$M_PR_TRUNC = 33554432;
literal DMB$M_PR_AUTO_RETURN = 67108864;
literal DMB$M_PR_AUTO_FORM = 134217728;
literal DMB$M_PR_NON_PRINT = 268435456;
literal DMB$M_PR_DAVFU = 536870912;
literal DMB$M_PR_WRAP = 1073741824;
literal DMB$M_PR_UPPER = -2147483648;
literal DMB$M_TX1_DMA_START = 1;
literal DMB$M_TX1_DMA_PTE = 2;
literal DMB$M_TX1_DMA_PHYS = 4;
literal DMB$M_TX1_X21 = 8;
literal DMB$M_TX1_PAR = 16;
literal DMB$M_TX1_DMA_ABORT = 256;
literal DMB$M_RX1_DMA_START = 1;
literal DMB$M_RX1_DMA_PTE = 2;
literal DMB$M_RX1_DMA_PHYS = 4;
literal DMB$M_RX1_X21 = 8;
literal DMB$M_RX1_DMA_ABORT = 256;
literal DMB$M_RX_ENABLE = 1;
literal DMB$M_RX_MATCH_ENA = 4;
literal DMB$M_RX_PRIMARY = 8;
literal DMB$M_X21ENABLE = 16;
literal DMB$M_CLOCK_CONTROL = 64;
literal DMB$M_CODING_TYPE = 128;
literal DMB$M_BAUD_RATE = 3840;
literal DMB$M_LOOP = 4096;
literal DMB$M_V35_SELECT = 8192;
literal DMB$M_V10_SELECT = 16384;
literal DMB$M_MODEM_SUPPRESS = 32768;
literal DMB$M_LINE_RESET = -2147483648;
literal DMB$M_SYNC_ML1 = 1;
literal DMB$M_SYNC_DTR = 2;
literal DMB$M_SYNC_DRS = 4;
literal DMB$M_SYNC_ML2 = 8;
literal DMB$M_SYNC_RTS = 16;
literal DMB$M_SPARE_MODEM = 224;
literal DMB$M_SYNC_RXCLOCK = 256;
literal DMB$M_SYNC_TXCLOCK = 512;
literal DMB$M_SYNC_TI = 1024;
literal DMB$M_SYNC_CTS = 4096;
literal DMB$M_SYNC_DCD = 8192;
literal DMB$M_SYNC_RI = 16384;
literal DMB$M_SYNC_DSR = 32768;
literal DMB$M_PROTOCOL = 458752;
literal DMB$C_PRO_DDCMP = 0;
literal DMB$C_PRO_SDLC = 1;
literal DMB$C_PRO_HDLC = 2;
literal DMB$C_PRO_BISYNC = 3;
literal DMB$C_PRO_GENBYTE = 7;
literal DMB$M_ERROR_TYPE = 3670016;
literal DMB$C_ERR_CRC1 = 0;
literal DMB$C_ERR_CRC0 = 1;
literal DMB$C_ERR_LVE = 2;
literal DMB$C_ERR_CRC16 = 3;
literal DMB$C_ERR_LRC0 = 4;
literal DMB$C_ERR_LRCE = 5;
literal DMB$C_ERR_LVO = 6;
literal DMB$C_NOCON = 7;
literal DMB$M_RX_BPC = 29360128;
literal DMB$M_TX_BPC = 234881024;
literal DMB$M_STRIP_SYNC = 268435456;
literal DMB$M_EBCDIC_CODE = 536870912;
literal DMB$M_IDLE_SYNC = 1073741824;
literal DMB$M_MODEM_OVERRIDE = -2147483648;
literal DMB$M_TX2_DMA_START = 1;
literal DMB$M_TX2_DMA_PTE = 2;
literal DMB$M_TX2_DMA_PHYS = 4;
literal DMB$M_TX2_X21 = 8;
literal DMB$M_TX2_PAR = 16;
literal DMB$M_TX2_DMA_ABORT = 256;
literal DMB$M_RX2_DMA_START = 1;
literal DMB$M_RX2_DMA_PTE = 2;
literal DMB$M_RX2_DMA_PHYS = 4;
literal DMB$M_RX2_X21 = 8;
literal DMB$M_RX2_DMA_ABORT = 256;
literal DMB$M_SYNC_CABLE = 251658240;
literal DMB$M_SYNC_LOOP = 536870912;
literal DMB$M_SYNC_VALID = 1073741824;
literal DMB$M_SYNC_X21 = -2147483648;
literal DMB$M_PREEMPT_GO = 32768;
literal DMB$M_ML = 1;
literal DMB$M_DTR = 2;
literal DMB$M_DRS = 4;
literal DMB$M_RTS = 16;
literal DMB$M_TX_INT_DELAY = 512;
literal DMB$M_RX_ENA = 1024;
literal DMB$M_BREAK = 2048;
literal DMB$M_MAINT = 12288;
literal DMB$M_REPORT_MODEM = 16384;
literal DMB$M_DISCARD_FLOW = 32768;
literal DMB$M_CHAR_LENGTH = 196608;
literal DMB$M_PARITY_ENAB = 262144;
literal DMB$M_EVEN_PARITY = 524288;
literal DMB$M_STOP_CODE = 1048576;
literal DMB$M_USE_CTS = 2097152;
literal DMB$M_IAUTO_FLOW = 4194304;
literal DMB$M_OAUTO_FLOW = 8388608;
literal DMB$M_RX_SPEED = 251658240;
literal DMB$M_TX_SPEED = -268435456;
literal DMB$M_TX_DMA_START = 1;
literal DMB$M_TX_DMA_PTE = 2;
literal DMB$M_TX_DMA_PHYS = 4;
literal DMB$M_TX_OUT_ABORT = 256;
literal DMB$M_ML2 = 1024;
literal DMB$M_CTS = 4096;
literal DMB$M_DCD = 8192;
literal DMB$M_RI = 16384;
literal DMB$M_DSR = 32768;
literal DMB$M_SNDOFF = 8388608;
literal DMB$M_TX_ENA = -2147483648;
literal DMB$M_TX_PREEMPT = 256;
literal DMB$M_TX_FIFO_DONE = 512;
literal DMB$M_TX_ACT = -2147483648;
literal DMB$M_SYNC_MODEM = 256;
literal DMB$M_SYNC_TX_ACT = 512;
literal DMB$M_SYNC_SECOND_BUFFER = 1024;
literal DMB$M_PARITY_ERR = 4096;
literal DMB$M_FRAME_ERR = 8192;
literal DMB$M_OVERRUN_ERR = 16384;
literal DMB$M_NON_CHAR = 32768;
literal DMB$M_DATA_VALID = -2147483648;
literal DMB$C_NO_ERROR = 0;
literal DMB$C_DMA_ERROR = 1;
literal DMB$C_MSG_ERROR = 2;
literal DMB$C_LAST_CHAR_ERROR = 3;
literal DMB$C_BUFFER_ERROR = 4;
literal DMB$C_MODEM_ERROR = 5;
literal DMB$C_ABORT_ERROR = 6;
literal DMB$C_X21_ERROR = 7;
literal DMB$C_OFFLINE_ERROR = 8;
literal DMB$C_INTERNAL_ERROR = 9;
literal DMB$C_HEADER_CRC_ERROR = 1;
literal DMB$C_DATA_CRC_ERROR = 2;
literal DMB$C_LENGTH_ERROR = 3;
literal DMB$C_LENGTH_AND_CRC_ERROR = 4;
literal DMB$C_ABORT_CHARACTER_ERROR = 5;
literal DMB$C_INVALID_CHARACTER_ERROR = 6;
literal DMB$C_HOST_ABORT_ERROR = 1;
literal DMB$C_DMB_ABORT_ERROR = 2;
literal DMB$C_RX_OVERRUN_ERROR = 1;
literal DMB$C_TX_UNDERRUN_ERROR = 2;
literal DMB$S_DMBDEF = 528;
macro DMB$L_MAINT = 256,0,32,0 %;       ! Maintenance register
macro DMB$V_FORCE_FAIL = 256,0,1,0 %;   ! Force failure
macro DMB$V_PROGRAM_RESET = 256,1,1,0 %; ! Programmed reset
macro DMB$V_PTE_VALID = 256,2,1,0 %;    ! Page tables valid
macro DMB$V_SKIP_SELFTEST = 256,3,1,0 %; ! Skip self test
macro DMB$V_MAINT_LEVEL1 = 256,4,1,0 %; ! Maintenance level 1
macro DMB$V_MAINT_LEVEL2 = 256,5,1,0 %; ! Maintenance level 2
macro DMB$V_SYNC = 256,8,1,0 %;         ! Sync lines present
macro DMB$V_ASYNC = 256,9,1,0 %;        ! Async lines present
macro DMB$V_PRINT = 256,10,1,0 %;       ! Printer present
macro DMB$V_DIAG_FAIL = 256,11,1,0 %;   ! Diagnostic error
macro DMB$V_X21_SUPPORT = 256,12,1,0 %; ! X21 firmware support present
macro DMB$V_CABLE_KEY = 256,13,1,0 %;   ! Cable key signal present
macro DMB$V_TURN_CONN = 256,14,1,0 %;   ! stag. loopback conn. present
macro DMB$V_MANF_CONN = 256,15,1,0 %;   ! Mfg. loopback conn. present
! 
!  The following 3 registers are the Control Status Registers (CSRs) for
!  the Async, Sync, and Printer ports in that order.
!            
macro DMB$L_ACSR = 260,0,32,0 %;        ! Async Control Status Register
macro DMB$B_ASYNC_IND_ADD = 260,0,8,1 %; ! Indirect Addr. Register Ptr.
macro DMB$V_RX_I_E = 260,8,1,0 %;       ! Receive Interrupt Enable
macro DMB$V_TX_I_E = 260,9,1,0 %;       ! Transmit Interrupt Enable
macro DMB$L_SCSR = 264,0,32,0 %;        ! Sync Control Status Register
macro DMB$B_SYNC_IND_ADD = 264,0,8,1 %; ! Indirect Addr. Register Ptr.
macro DMB$V_SYNC_I_E = 264,11,1,0 %;    ! Sync Interrupt Enable
macro DMB$L_PCSR = 268,0,32,0 %;        ! Printer Control Status Register
macro DMB$V_PR_I_E = 268,11,1,0 %;      ! Printer Interrupt Enable
macro DMB$V_PR_DAVFU_READY = 268,16,1,0 %; ! DAVFU ready
macro DMB$V_PR_CONNECT_VERIFY = 268,17,1,0 %; ! Connect verify
macro DMB$V_PR_OFFLINE = 268,18,1,0 %;  ! Line printer error
! 
!  Configuration of devices on DMB32.
! 
macro DMB$L_CONFIG = 276,0,32,0 %;      ! Device Configuration
macro DMB$B_ASYNC_LINES = 276,0,8,1 %;  ! Number of async lines
macro DMB$B_SYNC_LINES = 277,0,8,1 %;   ! Number of sync lines
macro DMB$B_PRINTER_LINES = 278,0,8,1 %; ! Number of printer ports
! 
!  The following 3 registers are the 2nd Control Status Registers for
!  each of the ports on the DMB32 (Async, Sync, and Printer).
!   	
macro DMB$L_ACSR2 = 280,0,32,1 %;       ! 2ND Async Control Status Register
macro DMB$V_ASYNC_RESET = 280,10,1,0 %; ! Async Port reset
macro DMB$B_RX_TIMER = 282,0,8,1 %;     ! Rcv Interrupt delay timer
macro DMB$L_SCSR2 = 284,0,32,1 %;       ! 2ND Sync Control Status Register
macro DMB$V_SYNC_RESET = 284,10,1,0 %;  ! Sync Port reset
macro DMB$L_PCSR2 = 288,0,32,0 %;       ! 2ND Printer Control Status Register
macro DMB$V_PRINTER_RESET = 288,10,1,0 %; ! Printer Port reset
macro DMBDEF$$_FILL_11 = 292,0,0,1 %;
literal DMBDEFS_FILL_11 = 44;
macro DMB$L_SPTE = 336,0,32,0 %;        ! SPTE system page table register
macro DMB$L_SPTS = 340,0,32,0 %;        ! System page table size register
macro DMB$L_GPTE = 344,0,32,0 %;        ! Global page table register
macro DMB$L_GPTS = 348,0,32,0 %;        ! Global page table size register
! 
!  The following 6 registers are specific to the printer port on the
!  DMB32.
! 
macro DMB$L_PFIX = 352,0,32,0 %;        ! Printer prefix/suffix control
macro DMB$B_PREFIX_COUNT = 352,0,8,1 %; ! Prefix count
macro DMB$B_PREFIX_CHAR = 353,0,8,1 %;  ! Prefix character
macro DMB$B_SUFFIX_COUNT = 354,0,8,1 %; ! Suffix count
macro DMB$B_SUFFIX_CHAR = 355,0,8,1 %;  ! Suffix character
macro DMB$L_PBUFAD = 356,0,32,0 %;      ! Printer Buffer Address            
macro DMB$L_PBUFCT = 360,0,32,0 %;      ! Printer Buffer count/offset
macro DMB$W_PR_BUFF_OFF = 360,0,16,1 %; ! printer buffer offset
macro DMB$W_PR_BUFF_CT = 362,0,16,1 %;  ! transmit DMA char. count
macro DMB$L_PCTRL = 364,0,32,0 %;       ! Printer Control Register
macro DMB$V_PR_DMA_START = 364,0,1,0 %; ! Start a DMA transfer
macro DMB$V_PR_DMA_PTE = 364,1,1,0 %;   ! PTE address
macro DMB$V_PR_DMA_PHYS = 364,2,1,0 %;  ! Physical address
macro DMB$V_PR_DMA_ABORT = 364,8,1,0 %; ! Abort a DMA transfer
macro DMB$V_PR_FORMAT = 364,9,1,0 %;    ! Format control
macro DMB$B_PR_ERROR = 366,0,8,1 %;     ! Error code
macro DMB$V_PR_TAB = 364,24,1,0 %;      ! Tab expansion
macro DMB$V_PR_TRUNC = 364,25,1,0 %;    ! Truncation of Data
macro DMB$V_PR_AUTO_RETURN = 364,26,1,0 %; ! Auto CR insert
macro DMB$V_PR_AUTO_FORM = 364,27,1,0 %; ! Auto FF to LF convert
macro DMB$V_PR_NON_PRINT = 364,28,1,0 %; ! Non printing char. accept
macro DMB$V_PR_DAVFU = 364,29,1,0 %;    ! DAVFU
macro DMB$V_PR_WRAP = 364,30,1,0 %;     ! Line Wrap
macro DMB$V_PR_UPPER = 364,31,1,0 %;    ! Convert to upper case
macro DMB$L_PCAR = 368,0,32,0 %;        ! Printer Carriage Counter
macro DMB$W_PR_LINE = 368,0,16,1 %;     ! Lines printed
macro DMB$W_PR_CHAR = 370,0,16,1 %;     ! Characters transmitted
macro DMB$L_PSIZE = 372,0,32,0 %;       ! Printer page size
macro DMB$W_PR_WIDTH = 372,0,16,1 %;    ! Line Width
macro DMB$W_PR_PAGE = 374,0,16,1 %;     ! Page size
! 
!  The next 16 registers are specific to the SYNC port on the DMB32.
! 
macro DMB$L_TBUFFAD1 = 384,0,32,0 %;    ! Transmit Buffer Address 1
macro DMB$L_TBUFFCT1 = 388,0,32,0 %;    ! Transmit Buffer Count/offset 1
macro DMB$W_TX_BUFF_OFF1 = 388,0,16,1 %; ! Transmit buffer offset
macro DMB$W_TX_CHAR_CT1 = 390,0,16,1 %; ! Transmit DMA character count
macro DMB$L_RBUFFAD1 = 392,0,32,0 %;    ! Receive Buffer Address 1
macro DMB$L_RBUFFCT1 = 396,0,32,0 %;    ! Receive Buffer Count/offset 1
macro DMB$W_RX_BUFF_OFF1 = 396,0,16,1 %; ! Receive buffer offset
macro DMB$W_RX_CHAR_CT1 = 398,0,16,1 %; ! Receive DMA character count
macro DMB$L_TLNCTRL1 = 400,0,32,0 %;    ! Buffer 1 Transmit Control
macro DMB$V_TX1_DMA_START = 400,0,1,0 %; ! Start a DMA transfer
macro DMB$V_TX1_DMA_PTE = 400,1,1,0 %;  ! PTE address
macro DMB$V_TX1_DMA_PHYS = 400,2,1,0 %; ! Physical address
macro DMB$V_TX1_X21 = 400,3,1,0 %;      ! X.21 mode
macro DMB$V_TX1_PAR = 400,4,1,0 %;      ! Parameter change
macro DMB$V_TX1_DMA_ABORT = 400,8,1,0 %; ! Transmitter DMA abort
macro DMB$B_TX1_ERROR = 403,0,8,1 %;    ! Transmitter Error bits
macro DMB$L_RLNCTRL1 = 404,0,32,0 %;    ! Buffer 1 Receive Control
macro DMB$V_RX1_DMA_START = 404,0,1,0 %; ! Start a DMA transfer
macro DMB$V_RX1_DMA_PTE = 404,1,1,0 %;  ! PTE address
macro DMB$V_RX1_DMA_PHYS = 404,2,1,0 %; ! Physical address
macro DMB$V_RX1_X21 = 404,3,1,0 %;      ! X.21 mode
macro DMB$V_RX1_DMA_ABORT = 404,8,1,0 %; ! Receiver DMA abort
macro DMB$B_RX1_ERROR = 407,0,8,1 %;    ! Receiver error bits
macro DMB$L_LPR1 = 408,0,32,0 %;        ! Sync line parameters 1
macro DMB$V_RX_ENABLE = 408,0,1,0 %;    ! Receiver Enable
macro DMB$V_RX_MATCH_ENA = 408,2,1,0 %; ! Receiver Match character enable
macro DMB$V_RX_PRIMARY = 408,3,1,0 %;   ! Primary-Secondary Station
macro DMB$V_X21ENABLE = 408,4,1,0 %;    ! X21 Protocol Enable
macro DMB$V_CLOCK_CONTROL = 408,6,1,0 %; ! Clock control bit
macro DMB$V_CODING_TYPE = 408,7,1,0 %;  ! Data coding type
macro DMB$V_BAUD_RATE = 408,8,4,0 %;
literal DMB$S_BAUD_RATE = 4;            ! Internal B.R. Generator speed
macro DMB$V_LOOP = 408,12,1,0 %;        ! Maintenance Loop back
macro DMB$V_V35_SELECT = 408,13,1,0 %;  ! V.35 select
macro DMB$V_V10_SELECT = 408,14,1,0 %;  ! V.10 select
macro DMB$V_MODEM_SUPPRESS = 408,15,1,0 %; ! Supress modem change ints
macro DMB$B_NUMBER_SYNC = 410,0,8,1 %;  ! Number of sync characters
macro DMB$V_LINE_RESET = 408,31,1,0 %;  ! Line reset request
macro DMB$L_LPR2 = 412,0,32,0 %;        ! Sync line parameters 2
macro DMB$V_SYNC_ML1 = 412,0,1,0 %;     ! Modem loop output
macro DMB$V_SYNC_DTR = 412,1,1,0 %;     ! Data terminal ready output
macro DMB$V_SYNC_DRS = 412,2,1,0 %;     ! Data rate select output
macro DMB$V_SYNC_ML2 = 412,3,1,0 %;     ! 2nd modem loop output
macro DMB$V_SYNC_RTS = 412,4,1,0 %;     ! Request to send output
macro DMB$V_SPARE_MODEM = 412,5,3,0 %;
literal DMB$S_SPARE_MODEM = 3;          ! 
macro DMB$V_SYNC_RXCLOCK = 412,8,1,0 %; ! Receive clock running
macro DMB$V_SYNC_TXCLOCK = 412,9,1,0 %; ! Transmit clock running
macro DMB$V_SYNC_TI = 412,10,1,0 %;     ! Test indicator
macro DMB$V_SYNC_CTS = 412,12,1,0 %;    ! Clear to send input
macro DMB$V_SYNC_DCD = 412,13,1,0 %;    ! Data carrier detect input
macro DMB$V_SYNC_RI = 412,14,1,0 %;     ! Ring indicator input
macro DMB$V_SYNC_DSR = 412,15,1,0 %;    ! Data set ready input
macro DMB$V_PROTOCOL = 412,16,3,0 %;
literal DMB$S_PROTOCOL = 3;             ! Protocol type
macro DMB$V_ERROR_TYPE = 412,19,3,0 %;
literal DMB$S_ERROR_TYPE = 3;
macro DMB$V_RX_BPC = 412,22,3,0 %;
literal DMB$S_RX_BPC = 3;               ! #of receive bits per char.  
macro DMB$V_TX_BPC = 412,25,3,0 %;
literal DMB$S_TX_BPC = 3;               ! # of transmit bits per char.
macro DMB$V_STRIP_SYNC = 412,28,1,0 %;  ! Strip Sync
macro DMB$V_EBCDIC_CODE = 412,29,1,0 %; ! Character code
macro DMB$V_IDLE_SYNC = 412,30,1,0 %;   ! Idle Sync
macro DMB$V_MODEM_OVERRIDE = 412,31,1,0 %; ! Modem control override
macro DMB$L_TBUFFAD2 = 416,0,32,0 %;    ! Transmit Buffer Address 2
macro DMB$L_TBUFFCT2 = 420,0,32,0 %;    ! Transmit Buffer count/offset 1
macro DMB$W_TX_BUFF_OFF2 = 420,0,16,1 %; ! Transmit buffer offset
macro DMB$W_TX_CHAR_CT2 = 422,0,16,1 %; ! Transmit DMA character count
macro DMB$L_RBUFFAD2 = 424,0,32,0 %;    ! Receive Buffer Address 2
macro DMB$L_RBUFFCT2 = 428,0,32,0 %;    ! Receive Buffer count/offset 2
macro DMB$W_RX_BUFF_OFF2 = 428,0,16,1 %; ! Receive buffer offset
macro DMB$W_RX_CHAR_CT2 = 430,0,16,1 %; ! Receive DMA character count
macro DMB$L_TLNCTRL2 = 432,0,32,0 %;    ! Buffer 2 Transmit Control
macro DMB$V_TX2_DMA_START = 432,0,1,0 %; ! Start a DMA transfer
macro DMB$V_TX2_DMA_PTE = 432,1,1,0 %;  ! PTE address
macro DMB$V_TX2_DMA_PHYS = 432,2,1,0 %; ! Physical address
macro DMB$V_TX2_X21 = 432,3,1,0 %;      ! X.21 mode
macro DMB$V_TX2_PAR = 432,4,1,0 %;      ! Parameter change
macro DMB$V_TX2_DMA_ABORT = 432,8,1,0 %; ! Transmitter DMA abort
macro DMB$B_TX2_ERROR = 435,0,8,1 %;    ! Transmitter error bits
macro DMB$L_RLNCTRL2 = 436,0,32,0 %;    ! Buffer 2 Receive control
macro DMB$V_RX2_DMA_START = 436,0,1,0 %; ! Start a DMA transfer
macro DMB$V_RX2_DMA_PTE = 436,1,1,0 %;  ! PTE address
macro DMB$V_RX2_DMA_PHYS = 436,2,1,0 %; ! Physical address
macro DMB$V_RX2_X21 = 436,3,1,0 %;      ! X.21 mode
macro DMB$V_RX2_DMA_ABORT = 436,8,1,0 %; ! Receiver DMA abort
macro DMB$B_RX2_ERROR = 439,0,8,1 %;    ! Receiver error bits
macro DMB$L_LPR3 = 440,0,32,0 %;        ! Sync Line parameters 3
macro DMB$B_SYNC_CHAR = 440,0,8,1 %;    ! Sync character
macro DMB$B_RX_MATCH = 441,0,8,1 %;     ! Receive match character
macro DMB$B_ADDRESS1 = 442,0,8,1 %;     ! First address character
macro DMB$B_ADDRESS2 = 443,0,8,1 %;     ! Second address character
macro DMB$L_BUFCTRL = 444,0,32,0 %;     ! Sync Buffer Control Bits
macro DMB$B_TX_BUFF_PRIO = 444,0,8,1 %; ! Transmitter Buf. Priority
macro DMB$B_RX_BUFF_PRIO = 445,0,8,1 %; ! Receiver Buffer Priority
macro DMB$B_SYNC_TEST_INPUT = 446,0,8,1 %; ! Test inputs
macro DMB$V_SYNC_CABLE = 444,24,4,0 %;
literal DMB$S_SYNC_CABLE = 4;           ! Electrical Configuration
macro DMB$V_SYNC_LOOP = 444,29,1,0 %;   ! Loopback present
macro DMB$V_SYNC_VALID = 444,30,1,0 %;  ! Valid cable
macro DMB$V_SYNC_X21 = 444,31,1,0 %;    ! X.21 Mode
! 
!  The next 10 registers are for the async port on the DMB32
!                                               
macro DMB$L_PREEMPT = 448,0,32,0 %;     ! Preempt Buffer
macro DMB$B_PREEMPT_CHAR = 448,0,8,1 %; ! Character to Transmit
macro DMB$V_PREEMPT_GO = 448,15,1,0 %;  ! Start Preempt
macro DMB$L_TBUFFAD = 452,0,32,0 %;     ! Transmit Buffer Address
macro DMB$L_TBUFFCT = 456,0,32,0 %;     ! Transmit Buffer Count-Offset
macro DMB$W_TX_BUFF_OFF = 456,0,16,1 %; ! Transmit Buffer Offset
macro DMB$W_TX_CHAR_CT = 458,0,16,1 %;  ! Transmit Buffer Count
macro DMB$L_LPR = 460,0,32,0 %;         ! Line parameter register
macro DMB$V_ML = 460,0,1,0 %;           ! Modem Loop
macro DMB$V_DTR = 460,1,1,0 %;          ! Data Terminal Ready
macro DMB$V_DRS = 460,2,1,0 %;          ! Data Rate Select
macro DMB$V_RTS = 460,4,1,0 %;          ! Request to Send
macro DMB$V_TX_INT_DELAY = 460,9,1,0 %; ! Transmit Interrupt Control
macro DMB$V_RX_ENA = 460,10,1,0 %;      ! Receiver Enable
macro DMB$V_BREAK = 460,11,1,0 %;       ! Break control
macro DMB$V_MAINT = 460,12,2,0 %;
literal DMB$S_MAINT = 2;                ! Maintenance Mode
macro DMB$V_REPORT_MODEM = 460,14,1,0 %; ! Report Modem changes
macro DMB$V_DISCARD_FLOW = 460,15,1,0 %; ! Discard flow contr. characters
macro DMB$V_CHAR_LENGTH = 460,16,2,0 %;
literal DMB$S_CHAR_LENGTH = 2;          ! character length
macro DMB$V_PARITY_ENAB = 460,18,1,0 %; ! Parity enable
macro DMB$V_EVEN_PARITY = 460,19,1,0 %; ! Even parity
macro DMB$V_STOP_CODE = 460,20,1,0 %;   ! Stop code
macro DMB$V_USE_CTS = 460,21,1,0 %;     ! CTS controls output
macro DMB$V_IAUTO_FLOW = 460,22,1,0 %;  ! Auto f.c. of incoming data
macro DMB$V_OAUTO_FLOW = 460,23,1,0 %;  ! Auto f.c. of outgoing data
macro DMB$V_RX_SPEED = 460,24,4,0 %;
literal DMB$S_RX_SPEED = 4;             ! Received data speed
macro DMB$V_TX_SPEED = 460,28,4,0 %;
literal DMB$S_TX_SPEED = 4;             ! Transmitted data rate
macro DMB$L_LNCTRL = 464,0,32,0 %;      ! Line Control
macro DMB$V_TX_DMA_START = 464,0,1,0 %; ! Start a DMA transfer
macro DMB$V_TX_DMA_PTE = 464,1,1,0 %;   ! PTE address
macro DMB$V_TX_DMA_PHYS = 464,2,1,0 %;  ! Physical address
macro DMB$V_TX_OUT_ABORT = 464,8,1,0 %; ! Transmitter output abort
macro DMB$B_TX_ERROR = 466,0,8,1 %;     ! Transmitter error bits
macro DMB$L_LSTAT = 468,0,32,0 %;       ! Line status register
macro DMB$V_ML2 = 468,10,1,0 %;         ! Spare modem control lead
macro DMB$V_CTS = 468,12,1,0 %;         ! Clear to send
macro DMB$V_DCD = 468,13,1,0 %;         ! Data carrier detected
macro DMB$V_RI = 468,14,1,0 %;          ! Ring indicator
macro DMB$V_DSR = 468,15,1,0 %;         ! Data set ready
macro DMB$V_SNDOFF = 468,23,1,0 %;      ! Send XOFF
macro DMB$V_TX_ENA = 468,31,1,0 %;      ! Transmitter enable
macro DMB$L_FLOWC = 472,0,32,0 %;       ! Flow control characters
macro DMB$B_SENT_XOFF = 472,0,8,1 %;    ! Transmitted XOFF
macro DMB$B_SENT_XON = 473,0,8,1 %;     ! Transmitted XON
macro DMB$B_RECEIVED_XOFF = 474,0,8,1 %; ! Received XOFF
macro DMB$B_RECEIVED_XON = 475,0,8,1 %; ! Received XON
macro DMB$L_TBUF = 516,0,32,0 %;        ! Transmit completion fifo
macro DMB$B_TX_LINE = 516,0,8,1 %;      ! Transmit line number
macro DMB$V_TX_PREEMPT = 516,8,1,0 %;   ! Preempt completed
macro DMB$V_TX_FIFO_DONE = 516,9,1,0 %; ! fifo empty
macro DMB$B_TX_DMA_ERROR = 518,0,8,1 %; ! Transmit error code
macro DMB$V_TX_ACT = 516,31,1,0 %;      ! Transmitter action
macro DMB$L_SBUF = 520,0,32,0 %;        ! Sync line completion fifo
macro DMB$B_SYNC_LINE = 520,0,8,1 %;    ! Sync line number
macro DMB$V_SYNC_MODEM = 520,8,1,0 %;   ! Modem change
macro DMB$V_SYNC_TX_ACT = 520,9,1,0 %;  ! Sync Transmit complete
macro DMB$V_SYNC_SECOND_BUFFER = 520,10,1,0 %; ! buffer number
macro DMB$V_SBUF_SPARE = 520,11,5,0 %;
literal DMB$S_SBUF_SPARE = 5;           ! 
macro DMB$R_SBUF_X = 522,0,8,0 %;
literal DMB$S_SBUF_X = 1;               ! 
macro DMB$B_SYNC_MODEM_STATUS = 522,0,8,1 %; ! Sync line new modem status
macro DMB$B_SYNC_ERROR = 522,0,8,1 %;   ! Sync line error code
macro DMB$L_RBUF = 524,0,32,0 %;        ! Async Receiver Buffer
macro DMB$B_RXCHAR = 524,0,8,1 %;       ! Received character
macro DMB$V_PARITY_ERR = 524,12,1,0 %;  ! Parity error
macro DMB$V_FRAME_ERR = 524,13,1,0 %;   ! Framing error
macro DMB$V_OVERRUN_ERR = 524,14,1,0 %; ! Overrun error
macro DMB$V_NON_CHAR = 524,15,1,0 %;    ! non character data
macro DMB$B_RX_LINE = 526,0,8,1 %;      ! Receive line number
macro DMB$V_DATA_VALID = 524,31,1,0 %;  ! Data valid
 
!*** MODULE $DIAGDEF ***
! *
! 
!  Constants defining literals used in $DIAGNOSE system service
! 
literal DIAG$C_SETAFF = 1;              !  request to set affinity -- Set/Release
!  explicit process affinity to any CPU.
literal DIAG$C_ACTVCPUS = 2;            !  request to read SMP$GL_ACTIVE_CPUS
literal DIAG$C_DISABLAFF = 0;           !  disable explicit affinity to a CPU
literal DIAG$C_ENABLAFF = 1;            !  enable explicit affinity to a CPU
 
!*** MODULE $DPTDEF ***
! +
!  DPT - DRIVER PROLOGUE TABLE
! 
!  EACH DEVICE DRIVER HAS A DRIVER PROLOGUE TABLE.
! -
literal DPT$M_SUBCNTRL = 1;
literal DPT$M_SVP = 2;
literal DPT$M_NOUNLOAD = 4;
literal DPT$M_SCS = 8;
literal DPT$M_DUSHADOW = 16;
literal DPT$M_SCSCI = 32;
literal DPT$M_BVPSUBS = 64;
literal DPT$M_UCODE = 128;
literal DPT$M_SMPMOD = 256;
literal DPT$M_DECW_DECODE = 512;
literal DPT$M_TPALLOC = 1024;
literal DPT$M_SNAPSHOT = 2048;
literal DPT$M_NO_IDB_DISPATCH = 4096;
literal DPT$C_VERSION = 5;              ! CURRENT VERSION NUMBER 
literal DPT$K_LENGTH = 130;             ! LENGTH OF PROLOGUE TABLE 
literal DPT$C_LENGTH = 130;             ! LENGTH OF PROLOGUE TABLE 
literal DPT$S_DPTDEF = 130;
macro DPT$L_FLINK = 0,0,32,0 %;         ! FORWARD LINK TO NEXT DPT 
macro DPT$L_BLINK = 4,0,32,0 %;         ! BACKWARD LINK TO PREVIOUS DPT 
macro DPT$W_SIZE = 8,0,16,0 %;          ! SIZE OF DRIVER 
macro DPT$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE 
macro DPT$B_REFC = 11,0,8,0 %;          ! COUNT OF DDB'S THAT REFERENCE DRIVER 
macro DPT$B_ADPTYPE = 12,0,8,0 %;       ! ADAPTER TYPE CODE 
macro DPT$W_UCBSIZE = 14,0,16,0 %;      ! SIZE OF UCB 
macro DPT$B_FLAGS = 16,0,8,0 %;         ! DRIVER LOADER FLAGS 
macro DPT$L_FLAGS = 16,0,32,0 %;        ! Add more bits 
macro DPT$V_SUBCNTRL = 16,0,1,0 %;      ! DEVICE IS A SUB-CONTROLLER 
macro DPT$V_SVP = 16,1,1,0 %;           ! DEVICE REQUIRES A SYSTEM PAGE 
macro DPT$V_NOUNLOAD = 16,2,1,0 %;      ! DRIVER IS NOT TO BE UNLOADED 
macro DPT$V_SCS = 16,3,1,0 %;           ! Load common SCS code with driver
macro DPT$V_DUSHADOW = 16,4,1,0 %;      ! SHADOWING DISK CLASS DRIVER
macro DPT$V_SCSCI = 16,5,1,0 %;         ! Load common SCS/CI subroutines with driver
macro DPT$V_BVPSUBS = 16,6,1,0 %;       ! Load common BVP subroutines with driver
macro DPT$V_UCODE = 16,7,1,0 %;         ! Driver has associated microcode image
macro DPT$V_SMPMOD = 16,8,1,0 %;        ! Driver has been modified for SMP
macro DPT$V_DECW_DECODE = 16,9,1,0 %;   ! DECwindows decoder (class) driver
macro DPT$V_TPALLOC = 16,10,1,0 %;      ! Use tape allocation class parameter
macro DPT$V_SNAPSHOT = 16,11,1,0 %;     ! Driver has been certified for system snapshot
macro DPT$V_NO_IDB_DISPATCH = 16,12,1,0 %; ! Don't use IDB$L_UCBLST for UCB vectors
macro DPT$W_INITTAB = 20,0,16,0 %;      ! OFFSET TO INIT TABLE 
macro DPT$W_REINITTAB = 22,0,16,0 %;    ! OFFSET TO RE-INIT TABLE 
macro DPT$W_UNLOAD = 24,0,16,0 %;       ! OFFSET TO UNLOAD ACTION ROUTINE 
macro DPT$W_MAXUNITS = 26,0,16,0 %;     ! MAXIMUM UNITS THAT CAN BE CONNECTED 
macro DPT$W_VERSION = 28,0,16,0 %;      ! DRIVER PROLOGUE VERSION NUMBER 
macro DPT$W_DEFUNITS = 30,0,16,0 %;     ! DEFAULT NUMBER OF UNITS 
macro DPT$W_DELIVER = 32,0,16,0 %;      ! OFFSET TO DRIVER UNIT DELIVERY ROUTINE 
macro DPT$W_VECTOR = 34,0,16,0 %;       ! OFFSET TO VECTOR TABLE (IN TTDRIVER) 
macro DPT$T_NAME = 36,0,0,0 %;
literal DPT$S_NAME = 12;                ! DRIVER NAME (COUNTED STRING) 
macro DPT$Q_LINKTIME = 48,0,0,0 %;
literal DPT$S_LINKTIME = 8;             ! LINK DATE AND TIME FROM IMAGE HEADER 
macro DPT$L_ECOLEVEL = 56,0,32,0 %;     ! ECO LEVEL FROM IMAGE HEADER 
macro DPT$L_UCODE = 60,0,32,0 %;        ! ASSOCIATED MICROCODE IMAGE
macro DPT$Q_LMF_1 = 64,0,0,0 %;
literal DPT$S_LMF_1 = 8;                ! RESERVED SPACE FOR LMF 
macro DPT$Q_LMF_2 = 72,0,0,0 %;
literal DPT$S_LMF_2 = 8;                ! RESERVED SPACE FOR LMF 
macro DPT$Q_LMF_3 = 80,0,0,0 %;
literal DPT$S_LMF_3 = 8;                ! RESERVED SPACE FOR LMF 
macro DPT$Q_LMF_4 = 88,0,0,0 %;
literal DPT$S_LMF_4 = 8;                ! RESERVED SPACE FOR LMF 
macro DPT$Q_LMF_5 = 96,0,0,0 %;
literal DPT$S_LMF_5 = 8;                ! RESERVED SPACE FOR LMF 
macro DPT$Q_LMF_6 = 104,0,0,0 %;
literal DPT$S_LMF_6 = 8;                ! RESERVED SPACE FOR LMF 
macro DPT$Q_LMF_7 = 112,0,0,0 %;
literal DPT$S_LMF_7 = 8;                ! RESERVED SPACE FOR LMF 
macro DPT$Q_LMF_8 = 120,0,0,0 %;
literal DPT$S_LMF_8 = 8;                ! RESERVED SPACE FOR LMF 
macro DPT$W_DECW_SNAME = 128,0,16,0 %;  ! OFFSET TO COUNTED ASCII STRING
!   The following definitions apply to the structure type
!   field produced by the DPT_STORE macro.
literal DPT$M_STRUC_NO = 15;
literal DPT$K_STRUC_ORB = 1;            ! 	ORB
literal DPT$K_STRUC_UCB = 2;            ! 	UCB
literal DPT$K_STRUC_IDB = 3;            ! 	IDB
literal DPT$K_STRUC_DDB = 4;            ! 	DDB
literal DPT$K_STRUC_CRB = 5;            ! 	CRB
literal DPT$M_STRUC_WRD = 128;
literal DPT$S_DPTSTORE = 1;
macro DPT$B_STR_STRUC = 0,0,8,0 %;      ! Basic structure byte field
macro DPT$V_STRUC_NO = 0,0,4,0 %;
literal DPT$S_STRUC_NO = 4;             !   Structure number field
macro DPT$V_STRUC_WRD = 0,7,1,0 %;      !   Structure word offset flag
 
!*** MODULE $DSRVDEF ***
! +
!  DSRV  ( )  Definitions
! 
! 	This module defines the main data structure of the MSCP
! 	server. This structure contains the values specified in
! 	the start up qualifiers when the server was loaded, the 
! 	UQB vector table, and statistics that are kept for server
! 	performance measurements.
! 
!  <<== !NOTICE! ==>>
! 
! 	DO NOT change offsets of the top part of the data structure.
!  	If new fields have to be added please make them below the 
! 	forward and backward links to the UQB.
! -
literal DSRV$M_LOG_ENABLD = 1;
literal DSRV$M_LOG_PRESENT = 2;
literal DSRV$M_PKT_LOGGED = 4;
literal DSRV$M_PKT_LOST = 8;
literal DSRV$M_LBSTEP1 = 16;
literal DSRV$M_LBSTEP2 = 32;
literal DSRV$M_LBEVENT = 64;
literal DSRV$M_HULB_DEL = 128;
literal DSRV$M_MON_ACTIVE = 256;
literal DSRV$M_LB_REQ = 512;
literal DSRV$M_CONFIG_WAIT = 1024;
literal DSRV$C_LENGTH = 1900;
literal DSRV$K_LENGTH = 1900;
literal DSRV$K_AR_ADD = 2;              !  Action routine code
literal DSRV$S_DSRVDEF = 1900;
macro DSRV$L_FLINK = 0,0,32,0 %;        !  Field maintained for 
macro DSRV$L_BLINK = 4,0,32,0 %;        !   compatability
macro DSRV$W_SIZE = 8,0,16,0 %;         !  Structure size in bytes
macro DSRV$B_TYPE = 10,0,8,0 %;         !  MSCP type structure
macro DSRV$B_SUBTYPE = 11,0,8,0 %;      !   with a DSRV subtype      (1)
macro DSRV$W_STATE = 12,0,16,0 %;       !  Current state of the server
macro DSRV$V_LOG_ENABLD = 12,0,1,0 %;   !  Logging is enabled
macro DSRV$V_LOG_PRESENT = 12,1,1,0 %;  !  Logging code is present
macro DSRV$V_PKT_LOGGED = 12,2,1,0 %;   !  A packet has been logged
macro DSRV$V_PKT_LOST = 12,3,1,0 %;     !  One or more packets over-
!   written since last read
macro DSRV$V_LBSTEP1 = 12,4,1,0 %;      !  Load balancing step1 active
macro DSRV$V_LBSTEP2 = 12,5,1,0 %;      !  Load balancing step2 active
macro DSRV$V_LBEVENT = 12,6,1,0 %;      !  An event of interest to LB has
!   occured while STEP1 was active
macro DSRV$V_HULB_DEL = 12,7,1,0 %;     !  One or more HULBs to be deleted
macro DSRV$V_MON_ACTIVE = 12,8,1,0 %;   !  The load monitor thread is active
macro DSRV$V_LB_REQ = 12,9,1,0 %;       !  A load balance request has been sent
macro DSRV$V_CONFIG_WAIT = 12,10,1,0 %; !  Waiting for STACONFIG to complete
macro DSRV$W_BUFWAIT = 14,0,16,0 %;     ! I/Os that had to wait
macro DSRV$L_LOG_BUF_START = 16,0,32,0 %; !  Address of start of buffer
macro DSRV$L_LOG_BUF_END = 20,0,32,0 %; !  Address of end of buffer
macro DSRV$L_NEXT_READ = 24,0,32,0 %;   !  Adrs of next packet to read
macro DSRV$L_NEXT_WRITE = 28,0,32,0 %;  !  Adrs of next packet to write
macro DSRV$W_INC_LOLIM = 32,0,16,0 %;   !  Low unit number to log
macro DSRV$W_INC_HILIM = 34,0,16,0 %;   !  High unit number to log
macro DSRV$W_EXC_LOLIM = 36,0,16,0 %;   !  Low unit number not to log
macro DSRV$W_EXC_HILIM = 38,0,16,0 %;   !  High unit number not to log
macro DSRV$L_SRVBUF = 40,0,32,0 %;      !  Address of preallocated pool
macro DSRV$L_FREE_LIST = 44,0,32,0 %;   !  Pointer to head of free pool
macro DSRV$L_AVAIL = 48,0,32,0 %;       !  Sum of bytes available in buffer
macro DSRV$L_BUFFER_MIN = 52,0,32,0 %;  !  Min xfer size based on buffer
macro DSRV$L_SPLITXFER = 56,0,32,0 %;   !  Fragmented I/O count
macro DSRV$W_VERSION = 60,0,16,0 %;     !  Server software version
macro DSRV$W_CFLAGS = 62,0,16,0 %;      !  Controller flags
macro DSRV$W_CTIMO = 64,0,16,0 %;       !  Controller timeout
macro DSRV$Q_CTRL_ID = 68,0,0,0 %;
literal DSRV$S_CTRL_ID = 8;             !  Unique MSCP device identifier
macro DSRV$L_MEMW_TOT = 76,0,32,0 %;    !  Number of I/Os that had to wait
macro DSRV$W_MEMW_CNT = 80,0,16,0 %;    !  Requests in memory wait queue
macro DSRV$W_MEMW_MAX = 82,0,16,0 %;    !  Most requests ever in MEMWAIT
macro DSRV$L_MEMW_FL = 84,0,32,0 %;     !  Queue listhead for requests
macro DSRV$L_MEMW_BL = 88,0,32,0 %;     !   in memory wait state
macro DSRV$W_NUM_HOST = 92,0,16,0 %;    !  Count of hosts being served
macro DSRV$W_NUM_UNIT = 94,0,16,0 %;    !  Count of disks being served
macro DSRV$L_HQB_FL = 96,0,32,0 %;      !  Host queue block list head
macro DSRV$L_HQB_BL = 100,0,32,0 %;     ! 
macro DSRV$L_UQB_FL = 104,0,32,0 %;     !  Unit queue block list head
macro DSRV$L_UQB_BL = 108,0,32,0 %;     ! 
! 
!  new fields should be added here, after the UQB linkages
! 
! 
! 	Server Load Balancing fields
! 
! 	The following fields containing working information and statistics
! 	for the server load balancing function. Load balancing status bits
! 	are defined in DSRV$STATE above. Time fields are in EXE$GL_ABSTIM
! 	format.
! 
macro DSRV$W_LOAD_AVAIL = 112,0,16,0 %; !  Current load available
macro DSRV$W_LOAD_CAPACITY = 114,0,16,0 %; !  Server load capacity
macro DSRV$W_LBLOAD = 116,0,16,0 %;     !  Target load for LB request
macro DSRV$W_LBRESP = 118,0,16,0 %;     !  Load available from other server
macro DSRV$W_LM_LOAD1 = 120,0,16,0 %;   !  previous interval load 1
macro DSRV$W_LM_LOAD2 = 122,0,16,0 %;   !  previous interval load 2
macro DSRV$W_LM_LOAD3 = 124,0,16,0 %;   !  previous interval load 3
macro DSRV$W_LM_LOAD4 = 126,0,16,0 %;   !  previous interval load 4
macro DSRV$W_LBINIT_CNT = 128,0,16,0 %; !  Count of LB requests we have sent
macro DSRV$W_LBFAIL_CNT = 130,0,16,0 %; !  Count of LB requests that failed
macro DSRV$W_LBREQ_CNT = 132,0,16,0 %;  !  Count of LB requests from other servers
macro DSRV$W_LBRESP_CNT = 134,0,16,0 %; !  Count of LB requests we to which we responded
macro DSRV$L_LBREQ_TIME = 136,0,32,0 %; !  Time last LB request was sent
macro DSRV$L_LBMON_TIME = 140,0,32,0 %; !  Time of last LB monitor pass
macro DSRV$L_LM_FKB = 144,0,32,0 %;     !  Address of load monitor thread FKB
macro DSRV$L_LB_FKB = 148,0,32,0 %;     !  Address of load balance thread FKB
macro DSRV$W_LM_INTERVAL = 152,0,16,0 %; !  Load monitoring interval
macro DSRV$B_LB_COUNT1 = 154,0,8,0 %;   !  Counter for load balancing thread
macro DSRV$B_LB_COUNT2 = 155,0,8,0 %;   !  Counter for load balancing thread
macro DSRV$L_HULB_FL = 156,0,32,0 %;    !  HULB queue listhead
macro DSRV$L_HULB_BL = 160,0,32,0 %;    ! 
! 
macro DSRV$B_HOSTS = 164,0,0,0 %;
literal DSRV$S_HOSTS = 32;              !  Bit array of hosts served
macro DSRV$L_UNITS = 196,0,0,0 %;
literal DSRV$S_UNITS = 1024;            !  Table of UQB addresses
! 
! 	Statistics gathering fields
! 
! 	Two tables are maintained below. The first table is made up of the 
! 	frequency count for each of the opcodes received since the server
! 	was loaded. The opcode is used as an index into the table to its own
! 	frequency count (the zeroeth element contains a total count). The 
! 	second table is made up of the frequency counters for all the
! 	different sized block transfers. For this table, the size of the 
! 	transfer is the index into the table.
! 
macro DSRV$L_OPCOUNT = 1220,0,32,0 %;   !  Total operations count
macro DSRV$L_ABORT_CNT = 1224,0,32,0 %; !    - 1 -
macro DSRV$L_GET_CMD_CNT = 1228,0,32,0 %; !    - 2 -
macro DSRV$L_GET_UNT_CNT = 1232,0,32,0 %; !    - 3 -
macro DSRV$L_SET_CON_CNT = 1236,0,32,0 %; !    - 4 -
macro DSRV$L_AVAIL_CNT = 1252,0,32,0 %; !    - 8 -
macro DSRV$L_ONLIN_CNT = 1256,0,32,0 %; !    - 9 -
macro DSRV$L_SET_UNT_CNT = 1260,0,32,0 %; !    - 10 -
macro DSRV$L_DET_ACC_CNT = 1264,0,32,0 %; !    - 11 -
macro DSRV$L_ACCES_CNT = 1284,0,32,0 %; !    - 16 -
macro DSRV$L_CMP_CON_CNT = 1288,0,32,0 %; !    - 17 -
macro DSRV$L_ERASE_CNT = 1292,0,32,0 %; !    - 18 -
macro DSRV$L_FLUSH_CNT = 1296,0,32,0 %; !    - 19 -
macro DSRV$L_REPLC_CNT = 1300,0,32,0 %; !    - 20 -
macro DSRV$L_CMP_HST_CNT = 1348,0,32,0 %; !    - 32 -
macro DSRV$L_READ_CNT = 1352,0,32,0 %;  !    - 33 -
macro DSRV$L_WRITE_CNT = 1356,0,32,0 %; !    - 34 -
macro DSRV$L_VCFAIL_CNT = 1380,0,32,0 %; !  Count of VC failures
macro DSRV$L_BLKCOUNT = 1384,0,0,0 %;
literal DSRV$S_BLKCOUNT = 516;          !  Counters for block xfer reqs
 
!*** MODULE $DTSSDEF ***
! +
! 
!  Bit definitions for EXE$GL_DTSSFLAGS - flags for Distributed Time Service
! 
! -
literal DTSS$M_ACTIVE = 1;
literal DTSS$S_DTSSDEF = 1;
macro DTSS$V_ACTIVE = 0,0,1,0 %;        !  Time service active
 
!*** MODULE $DYNDEF ***
! +
!  DATA STRUCTURE TYPE DEFINITIONS
! 
!  EACH DATA STRUCTURE THAT IS ALLOCATED FROM THE DYNAMIC MEMORY
!  POOL SHOULD HAVE A VALID TYPE IN ITS 11TH BYTE.
! -
! BASE AND OFFSET OF 1 
literal DYN$C_ADP = 1;                  ! UNIBUS ADAPTER CONTROL BLOCK 
literal DYN$C_ACB = 2;                  ! AST CONTROL BLOCK 
literal DYN$C_AQB = 3;                  ! ACP QUEUE BLOCK 
literal DYN$C_CEB = 4;                  ! COMMON EVENT BLOCK 
literal DYN$C_CRB = 5;                  ! CHANNEL REQUEST BLOCK 
literal DYN$C_DDB = 6;                  ! DEVICE DESCRIPTOR BLOCK 
literal DYN$C_FCB = 7;                  ! FILE CONTROL BLOCK 
literal DYN$C_FRK = 8;                  ! FORK BLOCK 
literal DYN$C_IDB = 9;                  ! INTERRUPT DISPATCH BLOCK 
literal DYN$C_IRP = 10;                 ! I/O REQUEST PACKET 
literal DYN$C_LOG = 11;                 ! LOGICAL NAME BLOCK 
literal DYN$C_PCB = 12;                 ! PROCESS CONTROL BLOCK 
literal DYN$C_PQB = 13;                 ! PROCESS QUOTA BLOCK 
literal DYN$C_RVT = 14;                 ! RELATIVE VOLUME TABLE 
literal DYN$C_TQE = 15;                 ! TIMER QUEUE ENTRY 
literal DYN$C_UCB = 16;                 ! UNIT CONTROL BLOCK 
literal DYN$C_VCB = 17;                 ! VOLUME CONTROL BLOCK 
literal DYN$C_WCB = 18;                 ! WINDOW CONTROL BLOCK 
literal DYN$C_BUFIO = 19;               ! BUFFERED I/O BLOCK 
literal DYN$C_TYPAHD = 20;              ! TERMINAL TYPEAHEAD BUFFER 
literal DYN$C_GSD = 21;                 ! GLOBAL SECTION DESCRIPTOR BLOCK 
literal DYN$C_MVL = 22;                 ! MAGNETIC TAPE VOLUME LIST 
literal DYN$C_NET = 23;                 ! NETWORK MESSAGE BLOCK 
literal DYN$C_KFE = 24;                 ! KNOWN FILE ENTRY 
literal DYN$C_MTL = 25;                 ! MOUNTED VOLUME LIST ENTRY 
literal DYN$C_BRDCST = 26;              ! BROADCAST MESSAGE BLOCK 
literal DYN$C_CXB = 27;                 ! COMPLEX CHAINED BUFFER 
literal DYN$C_NDB = 28;                 !  NETWORK NODE DESCRIPTOR BLOCK 
literal DYN$C_SSB = 29;                 !  LOGICAL LINK SUBCHANNEL STATUS BLOCK 
literal DYN$C_DPT = 30;                 !  DRIVER PROLOGUE TABLE 
literal DYN$C_JPB = 31;                 !  JOB PARAMETER BLOCK 
literal DYN$C_PBH = 32;                 !  PERFORMANCE BUFFER HEADER 
literal DYN$C_PDB = 33;                 !  PERFORMANCE DATA BLOCK 
literal DYN$C_PIB = 34;                 !  PERFORMANCE INFORMATION BLOCK 
literal DYN$C_PFL = 35;                 !  PAGE FILE CONTROL BLOCK 
literal DYN$C_PFLMAP = 36;              !  Page file mapping window
literal DYN$C_PTR = 37;                 !  POINTER CONTROL BLOCK 
literal DYN$C_KFRH = 38;                !  KNOWN FILE IMAGE HEADER 
literal DYN$C_DCCB = 39;                !  Data Cache Control Block
literal DYN$C_EXTGSD = 40;              ! EXTENDED GLOBAL SECTION DESCRIPTOR 
literal DYN$C_SHMGSD = 41;              ! SHARED MEMORY GLOBAL SECTION DESCRIPTOR 
literal DYN$C_SHB = 42;                 ! SHARED MEMORY CONTROL BLOCK 
literal DYN$C_MBX = 43;                 ! MAILBOX CONTROL BLOCK 
literal DYN$C_IRPE = 44;                ! I/O REQUEST PACKET EXTENSION 
literal DYN$C_SLAVCEB = 45;             ! SLAVE COMMON EVENT BLOCK 
literal DYN$C_SHMCEB = 46;              ! SHARED MEMORY MASTER COMMON EVENT BLOCK 
literal DYN$C_JIB = 47;                 ! JOB INFORMATION BLOCK 
literal DYN$C_TWP = 48;                 !  Terminal driver write packet 
literal DYN$C_RBM = 49;                 !  Realtime SPT bit map 
literal DYN$C_VCA = 50;                 !  Disk volume cache block 
literal DYN$C_CDB = 51;                 ! X25 LES CHANNEL DATA BLOCK 
literal DYN$C_LPD = 52;                 ! X25 LES PROCESS DESCRIPTOR 
literal DYN$C_LKB = 53;                 ! LOCK BLOCK 
literal DYN$C_RSB = 54;                 ! RESOURCE BLOCK 
literal DYN$C_LKID = 55;                ! LOCK ID TABLE 
literal DYN$C_RSHT = 56;                ! RESOURCE HASH TABLE 
literal DYN$C_CDRP = 57;                ! CLASS DRIVER REQUEST PACKET 
literal DYN$C_ERP = 58;                 !  ERRORLOG PACKET 
literal DYN$C_CIDG = 59;                ! DATAGRAM BUFFER FOR CI PORT 
literal DYN$C_CIMSG = 60;               ! MESSAGE BUFFER FOR CI PORT 
literal DYN$C_XWB = 61;                 ! DECNET LOGICAL LINK CONTEXT BLOCK 
!    (REPLACES "NDB" BLOCK)
literal DYN$C_WQE = 62;                 ! DECNET WORK QUEUE BLOCK 
!    (REPLACES "NET" BLOCK)
literal DYN$C_ACL = 63;                 ! ACCESS CONTROL LIST QUEUE ENTRY 
literal DYN$C_LNM = 64;                 ! LOGICAL NAME BLOCK 
literal DYN$C_FLK = 65;                 !  Fork Lock Request Block
literal DYN$C_RIGHTSLIST = 66;          ! RIGHTS LIST
literal DYN$C_KFD = 67;                 !  Known File Device Directory block
literal DYN$C_KFPB = 68;                !  Known File list Pointer Block
literal DYN$C_CIA = 69;                 !  Compound Intrusion Analysis block
literal DYN$C_PMB = 70;                 !  Page Fault Monitor Control Block
literal DYN$C_PFB = 71;                 !  Page Fault Monitor Buffer
literal DYN$C_CHIP = 72;                !  Internal CHKPRO block
literal DYN$C_ORB = 73;                 !  Objects Rights Block
literal DYN$C_QVAST = 74;               !  QVSS AST block
literal DYN$C_MVWB = 75;                !  Mount Verification work buffer
literal DYN$C_UNC = 76;                 !  Universal Context Block
literal DYN$C_DCB = 77;                 !  DCB, for DECnet chained I/O
literal DYN$C_VCRP = 78;                !  VAX Communication Request Packet
literal DYN$C_SPL = 79;                 !  Spinlock control block
literal DYN$C_ARB = 80;                 !  Access Rights Block
literal DYN$C_LCKCTX = 81;              !  Lock context block
literal DYN$C_BOD = 82;                 !  Buffer object descriptor
literal DYN$C_FTRD = 83;                !  FTDRIVER read request packet
literal DYN$C_DDTM_EVENT = 84;          !  DDTM Event Notification block
! 
!  THE FOLLOWING CODES ARE SUBTYPABLE, THAT IS EACH CODE REFERS TO A GENERIC
!  FUNCTION AND WITHIN THAT FUNCTION THERE MAY BE MANY DIFFERENT SUB-TYPES
!  OF BLOCKS.  THIS SCHEME WAS ADOPTED TO PRESERVE TYPES.  THE SUB-TYPE IS
!  IN THE 12TH BYTE.
! 
literal DYN$C_SUBTYPE = 96;             !  START OF SUBTYPABLES 
literal DYN$C_SCS = 96;                 !  SYSTEM COMMUNICATION SERVICES 
literal DYN$C_SCS_CDL = 1;              !  CONNECT DISPATCH LIST 
literal DYN$C_SCS_CDT = 2;              !  CONNECT DISPATCH TABLE 
literal DYN$C_SCS_DIR = 3;              !  DIRECTORY BLOCK 
literal DYN$C_SCS_PB = 4;               !  PATH BLOCK 
literal DYN$C_SCS_PDT = 5;              !  PORT DESCRIPTOR TABLE 
literal DYN$C_SCS_RDT = 6;              !  REQUEST DESCRIPTOR TABLE 
literal DYN$C_SCS_SB = 7;               !  SYSTEM BLOCK 
literal DYN$C_SCS_SPPB = 8;             !  SCA POLLER PROCESS BLOCK
literal DYN$C_SCS_SPNB = 9;             !  SCA POLLER NAME BLOCK
literal DYN$C_SCS_SBNB = 10;            !  SCS LOAD SHARE NAME BLOCK
literal DYN$C_SCS_PLVEC = 11;           !  SCS PORT LOAD VECTOR
literal DYN$C_SCS_PDTLIST = 12;         !  (TYC 14-Feb-89) SCS PDT LIST
literal DYN$C_CI = 97;                  !  CI PORT SPECIFIC 
literal DYN$C_CI_BDT = 1;               !  BUFFER DESCRIPTOR TABLE 
literal DYN$C_CI_FQDT = 2;              !  FREE QUE DESCRIPTOR TABLE 
literal DYN$C_LOADCODE = 98;            !  LOADABLE CODE 
literal DYN$C_NON_PAGED = 1;            !  NON PAGED CODE
literal DYN$C_PAGED = 2;                !  PAGED CODE
literal DYN$C_LC_MP = 3;                !  MULTIPROCESSOR CODE 
literal DYN$C_LC_SCS = 4;               !  SCS CODE 
literal DYN$C_LC_CLS = 5;               !  CLUSTER CODE
literal DYN$C_LC_CHREML = 6;            !  CHAR/DECIMAL INS EMUL 
literal DYN$C_LC_FPEMUL = 7;            !  FLOAT PNT EMULATOR
literal DYN$C_LC_MSCP = 8;              !  MSCP SERVER
literal DYN$C_LC_SYSL = 9;              !  SYSLOA
literal DYN$C_INIT = 99;                !  STRUCTURES SET UP BY INIT 
literal DYN$C_PCBVEC = 1;               !  PROCESS CONTROL BLOCK VECTOR 
literal DYN$C_PHVEC = 2;                !  PROCESS HEADER VECTOR 
literal DYN$C_SWPMAP = 3;               !  SWAPPER MAP 
literal DYN$C_MPWMAP = 4;               !  MODIFIED PAGE WRITER MAP 
literal DYN$C_PRCMAP = 5;               !  PROCESS BITMAP 
literal DYN$C_BOOTCB = 6;               !  BOOT CONTROL BLOCK 
literal DYN$C_CONF = 7;                 !  CONFIGURATION ARRAYS 
literal DYN$C_CST = 8;                  !  CLUSTER SYSTEM TABLE
literal DYN$C_CLASSDRV = 100;           !  CLASS DRIVER MAJOR STRUCTURE TYPE CODE 
literal DYN$C_CD_CDDB = 1;              !  CLASS DRIVER DATA BLOCK 
literal DYN$C_CD_BBRPG = 2;             !  BAD BLOCK REPLACEMENT PAGE 
literal DYN$C_CD_SHDW_WRK = 3;          !  SHADOW SET WORK BUFFER
literal DYN$C_CLU = 101;                !  CLUSTER MAJOR STRUCTURE TYPE CODE
literal DYN$C_CLU_CSB = 1;              !  CONNECTION STATUS BLOCK
literal DYN$C_CLU_CLUVEC = 2;           !  CLUSTER SYSTEM VECTOR
literal DYN$C_CLU_CLUB = 3;             !  CLUSTER BLOCK
literal DYN$C_CLU_BTX = 4;              !  CLUSTER BLOCK TRANSFER EXTENSION
literal DYN$C_CLU_CLUDCB = 5;           !  CLUSTER DISK QUORUM CONTROL BLOCK
literal DYN$C_CLU_CLUOPT = 6;           !  CLUSTER OPTIMAL RECONFIGURATION CONTEXT BLOCK
literal DYN$C_CLU_LCKDIR = 7;           !  LOCK MANAGER DISTRIBUTED DIRECTORY VECTOR
literal DYN$C_CLU_ICB = 8;              !  INCARNATION FILE CONTROL BLOCK
literal DYN$C_CLU_CLURCB = 9;           !  REMASTER CONTROL BLOCK
literal DYN$C_CLU_NTE = 10;             !  NOTIFICATION TABLE ENTRY
literal DYN$C_PGD = 102;                !  PAGED DYNAMIC MEMORY
literal DYN$C_PGD_F11BC = 1;            !  F11BXQP BUFFER CACHE.
literal DYN$C_DECW = 103;               !  DECWINDOWS
literal DYN$C_DECW_GPB = 1;             !  GPX Packet Buffer
literal DYN$C_DECW_GPD = 2;             !  GPX Physical Data
literal DYN$C_DECW_INB = 3;             !  Input Buffer descriptor
literal DYN$C_DECW_DVI = 4;             !  Device Info block
literal DYN$C_VWS = 104;                !  UIS Structure
!  UIS subtypes
literal DYN$C_UIS_ARD = 1;              !  Allocation region 
literal DYN$C_UIS_VDB = 2;              !  Virtual display control block
literal DYN$C_UIS_WDB = 3;              !  Display window control block
literal DYN$C_UIS_SEG = 4;              !  Segment control block
literal DYN$C_UIS_ATB = 5;              !  Attribute block
literal DYN$C_UIS_OTP = 6;              !  Output primitive
literal DYN$C_UIS_APD = 7;              !  Application-specific data
literal DYN$C_UIS_SEGEND = 8;           !  Segment "end" marker (really part of SEG)
literal DYN$C_UIS_URG = 9;              !  User region AST request block
literal DYN$C_UIS_VDT = 10;             !  Display transformation
literal DYN$C_UIS_MENU = 11;            !  Window options menu or menu items
literal DYN$C_UIS_KBB = 12;             !  Virtual keyboard control block
literal DYN$C_UIS_RES = 13;             !  Resize/rescale information block
literal DYN$C_UIS_VCMD = 14;            !  Virtual color map descriptor
literal DYN$C_UIS_VCMS = 15;            !  Virtual color map section
literal DYN$C_UIS_CMSD = 16;            !  Color map segment descriptor
literal DYN$C_UIS_CMSB = 17;            !  Color map segment allocation control block
literal DYN$C_UIS_CMS = 18;             !  Color map segment
literal DYN$C_UIS_FNT = 19;             !  Font block
literal DYN$C_UIS_FNTH = 20;            !  Font header -- extra memory at head of a font
literal DYN$C_UIS_VPD = 21;             !  Viewport descriptor block
literal DYN$C_UIS_VRD = 22;             !  Viewport region descriptor
literal DYN$C_UIS_BMD = 23;             !  
literal DYN$C_UIS_OFF_MEM = 24;         !  Offscreen memory descriptor
literal DYN$C_UIS_USB = 25;             !  UIS system-wide storage
literal DYN$C_UIS_QBE = 26;             !  QVSS block extension
literal DYN$C_UIS_MEM = 27;             !  Video scanline allocation block
literal DYN$C_UIS_VSL_MEM = 28;         !  VAX scanline storage
literal DYN$C_UIS_SL_TEMP = 29;         !  Scanline temporary storage
literal DYN$C_UIS_ERROR = 30;           !  Error handler "spare" memory
!  VPS subtypes
literal DYN$C_VPS_FM = 86;              ! 
literal DYN$C_VPS_CTX = 87;             !  
literal DYN$C_VPS_PPD = 88;             !  Per-process data structure
literal DYN$C_VPS_SDB = 89;             !  Scan descriptor block
literal DYN$C_VPS_BTD = 90;             !  Bitmap descriptor
!  VWS subtypes
literal DYN$C_VWS_REGIS = 170;          !  ReGIS buffer
literal DYN$C_VWS_VT200 = 171;          !  VT200 emulator buffer
literal DYN$C_VWS_CHR_ARR = 172;        !  Character array
literal DYN$C_VWS_CLIP = 173;           !  Clipping region desc
literal DYN$C_VWS_CUR = 174;            ! 
literal DYN$C_VWS_FNTD = 175;           !  Font descriptor
literal DYN$C_VWS_SCR = 176;            ! 
literal DYN$C_VWS_UPD = 177;            ! 
literal DYN$C_VWS_UPDE = 178;           !  UPD extension
literal DYN$C_VWS_VIEW = 179;           !  Driver Viewport control block
literal DYN$C_VWS_DOP = 180;            !  Device output primative packet
literal DYN$C_VWS_GLYB = 181;           !  Glyph storage block
literal DYN$C_DSRV = 105;               !  Disk Server structure type
!  Server subtypes
literal DYN$C_DSRV_DSRV = 1;            !  Disk server structure
literal DYN$C_DSRV_HQB = 2;             !  Host Queue Block
literal DYN$C_DSRV_HRB = 3;             !  Host Request Block
literal DYN$C_DSRV_IOBUF = 4;           !  Server local I/O Buffer
literal DYN$C_DSRV_UQB = 5;             !  Unit Queue Block
literal DYN$C_DSRV_HULB = 6;            !  Host-Unit Load Block
literal DYN$C_MP = 106;                 !  MP related structure
!  MP subtypes
literal DYN$C_MP_MPB = 1;               !  Logical Console Block
literal DYN$C_MP_CPU = 2;               !  Per-CPU database
literal DYN$C_NSA = 107;                !  Non-discretionary Security Audit
literal DYN$C_NSA_EVENT = 1;            !  Event enable vectors
literal DYN$C_NSA_FAILURE = 2;          !  Failure mode vectors
literal DYN$C_NSA_ALARM = 3;            !  Security alarm packet list
literal DYN$C_CWPS = 108;               !  Cluster-Wide Process Services
!  CWPS subtypes for process control service codes
literal DYN$C_CWPS_CANWAK = 1;          !  $CANWAK service
literal DYN$C_CWPS_DELPRC = 2;          !  $DELPRC service
literal DYN$C_CWPS_FORCEX = 3;          !  $FORCEX service
literal DYN$C_CWPS_RESUME = 4;          !  $RESUME service
literal DYN$C_CWPS_SCHDWK = 5;          !  $SCHDWK service
literal DYN$C_CWPS_SETPRI = 6;          !  $SETPRI service
literal DYN$C_CWPS_SUSPND = 7;          !  $SUSPND service
literal DYN$C_CWPS_WAKE = 8;            !  $WAKE service
!  CWPS subtypes for other services
literal DYN$C_CWPS_GETJPI = 20;         !  $GETJPI service
literal DYN$C_CWPS_CREPRC = 21;         !  $CREPRC service
literal DYN$C_CWPS_TERMIN = 22;         !  process termination message
!  CWPS subtypes for security service codes
literal DYN$C_CWPS_GRANTID = 28;        !  $GRANTID service
literal DYN$C_CWPS_REVOKID = 29;        !  $WAKE service
!  CWPS subtypes for miscellaneous structures
literal DYN$C_CWPSACB = 64;             !  CWPSACB$ structure
literal DYN$C_CWPSNODI = 65;            !  CWPSNODI$ structure
literal DYN$C_CWPSSQH = 66;             !  CWPSSQH$ structure
literal DYN$C_PSCANBUF = 67;            !  PSCAN JPI buffer
literal DYN$C_PSCANCTX = 68;            !  PSCAN context
literal DYN$C_PSCANITM = 69;            !  PSCAN JPI itemlist
literal DYN$C_VP = 109;                 !  Vector processing support
!  Vector processing subtypes
literal DYN$C_VP_VCTX = 1;              !  Vector context block
literal DYN$C_VP_VEXC = 2;              !  Vector saved exception block
literal DYN$C_SHAD = 110;               !  Volume Shadowing structure type
literal DYN$C_VCC = 111;                !  VAXcluster cache
!  VCC subtypes
literal DYN$C_VCC_CL = 1;               !  Cache Line
literal DYN$C_VCC_CPT = 2;              !  Cache Page Table
literal DYN$C_VCC_HT = 3;               !  Hash Table
!  for VCC_CFCB SUBTYPE and RMOD overlap so force correct RMOD bits
literal DYN$C_VCC_CFCB = 32;            !  Cache FCB
literal DYN$C_ENS = 112;                !  Event Notification Services
!  ENS subtypes
literal DYN$C_ENS_ADB = 1;              !  AST Data Block
literal DYN$C_ENS_ECB = 2;              !  Cancelation Request Block
literal DYN$C_ENS_EDB = 3;              !  Event Declaration Block
literal DYN$C_ENS_EFD = 4;              !  Event Facility Descriptor
literal DYN$C_ENS_ENB = 5;              !  Notification Request Block
literal DYN$C_ENS_END = 6;              !  Event Notification Database Block
literal DYN$C_ENS_ENS = 7;              !  Server Base Block
literal DYN$C_ENS_EPB = 8;              !  Event Parameter Block
literal DYN$C_ENS_NAB = 9;              !  NAme Block
literal DYN$C_ENS_SIG = 10;             !  Signature List Block
literal DYN$C_DDTM = 113;               !  Digital Distributed Transaction Mgr
!  DDTM subtypes
literal DYN$C_DDTM_XCB = 1;             !  Transaction Control Block
literal DYN$C_DDTM_XSCB = 2;            !  Transaction Segment Control Block
literal DYN$C_DDTM_XPCB = 3;            !  Transaction Participant Control Block
literal DYN$C_DDTM_CDCB = 4;            !  Commit Domain Control Block
literal DYN$C_DDTM_CMDB = 5;            !  Communication Manager Definition Block
literal DYN$C_DDTM_CMCB = 6;            !  Communication Manager Control Block
literal DYN$C_DDTM_RMCB = 7;            !  Resource Manager Control Block
literal DYN$C_DDTM_NDCB = 8;            !  V1 DDTM Communication Manager Block
literal DYN$C_DDTM_DGCB = 9;            !  TPCom Dialogue Control Block
literal DYN$C_DDTM_LGCB = 10;           !  Log Control Block
literal DYN$C_SMI = 114;                !  System Management Integrator 
!  SMI subtypes
literal DYN$C_SMI_CSCB = 1;             !  Cluster/System Communications Block
literal DYN$C_SMI_CTX = 2;              !  Internal context block
literal DYN$C_SMI_SUPB = 3;             !  Server User Profile Block
literal DYN$C_SMI_RTTB = 4;             !  RouTine Table Block
! 
!  SPECIAL DYNAMIC MEMORY TYPES.  THESE ARE HANDLED SPECIALLY BY
!  EXE$DALONONPAGED.
! 
literal DYN$C_SPECIAL = 128;            !  START OF SPECIAL TYPES 
!  BASE OF 128 AND OFFSET OF 1 
literal DYN$C_SHRBUFIO = 128;           !  SHARED MEMORY BUFFERED I/O 
 
!*** MODULE $ECBDEF ***
! +
! 
!  Generalized Event Notification Definitions
! 
!  Event Cancelation Block
! 
!  This block is used by the $CANEVTAST system service to
!  cancel a cluster-wide notification request.
! 
! -
literal ECB$M_LOCAL = 1;
literal ECB$M_RSVD = 2;
literal ECB$M_IMAGE = 4;
literal ECB$M_RSVD2 = 24;
literal ECB$M_WILDCARD = 32;
literal ECB$K_LENGTH = 68;              !  LENGTH OF BLOCK
literal ECB$C_LENGTH = 68;              !  LENGTH OF BLOCK
literal ECB$S_ECBDEF = 68;
macro ECB$L_QFL = 0,0,32,0 %;           !  QUEUE FORWARD LINK     
macro ECB$L_QBL = 4,0,32,0 %;           !  QUEUE BACKWARD LINK    
macro ECB$W_SIZE = 8,0,16,0 %;          !  STRUCTURE SIZE IN BYTES
macro ECB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE    
macro ECB$B_SUBTYPE = 11,0,8,0 %;       !  STRUCTURE SUBTYPE CODE
macro ECB$L_FLAGS = 12,0,32,0 %;        !  FLAGS
macro ECB$V_LOCAL = 12,0,1,0 %;         !  LOCAL NODE
macro ECB$V_IMAGE = 12,2,1,0 %;         !  IMAGE
macro ECB$V_WILDCARD = 12,5,1,0 %;      !  WILDCARDED EVENT NAME
macro ECB$T_EVENT_NAME = 16,0,0,0 %;
literal ECB$S_EVENT_NAME = 32;          !  EVENT NAME
macro ECB$L_CSID = 48,0,32,0 %;         !  CLUSTER SYSTEM ID
macro ECB$L_EPID = 52,0,32,0 %;         !  PROCESS' EXTENDED PID
macro ECB$B_ACMODE = 56,0,8,0 %;        !  ACCESS MODE
macro ECB$W_EVTFAC = 58,0,16,0 %;       !  FACILITY CODE
macro ECB$L_UNIQID = 60,0,32,0 %;       !  GENERATED REQUEST ID
macro ECB$L_REQID = 64,0,32,0 %;        !  USER DEFINED REQUEST ID
 
!*** MODULE $EDBDEF ***
! +
! 
!  Generalized Event Notification Definitions
! 
!  Event Declaration Block
! 
!  This block is used by the $DCLEVT system service
!  to declare an event.
! 
! -
literal EDB$M_LOCAL = 1;
literal EDB$M_RSVD = 6;
literal EDB$M_FLOST = 8;
literal EDB$M_RSVD2 = 48;
literal EDB$K_LENGTH = 216;             !  LENGTH OF BLOCK
literal EDB$C_LENGTH = 216;             !  LENGTH OF BLOCK
literal EDB$S_EDBDEF = 216;
macro EDB$L_QFL = 0,0,32,0 %;           !  QUEUE FORWARD LINK 
macro EDB$L_QBL = 4,0,32,0 %;           !  QUEUE BACKWARD LINK
macro EDB$W_SIZE = 8,0,16,0 %;          !  STRUCTURE SIZE IN BYTES
macro EDB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE
macro EDB$B_SUBTYPE = 11,0,8,0 %;       !  STRUCTURE SUBTYPE CODE
! 
!  Start of $GETEVI data.  For efficiency, this must agree with EVIDEF.
! 
macro EDB$L_FLAGS = 12,0,32,0 %;        !  FLAGS
macro EDB$V_LOCAL = 12,0,1,0 %;         !   LOCAL NODE
macro EDB$V_FLOST = 12,3,1,0 %;         !   FLOST
macro EDB$L_CSID = 16,0,32,0 %;         !  CLUSTER SYSTEM ID
macro EDB$L_EPID = 20,0,32,0 %;         !  PROCESS'S EXTENDED PID
macro EDB$B_ACMODE = 24,0,8,0 %;        !  ACCESS MODE
macro EDB$W_EVTFAC = 26,0,16,0 %;       !  FACILITY CODE
macro EDB$W_ULE_COUNT = 28,0,16,0 %;    !  FORK LOST EVENT COUNT
macro EDB$W_FLE_COUNT = 30,0,16,0 %;    !  USER LOST EVENT COUNT
macro EDB$Q_EVENT_TIME = 32,0,0,0 %;
literal EDB$S_EVENT_TIME = 16;          !  EVENT TIME 
macro EDB$T_EVENT_NAME = 48,0,0,0 %;
literal EDB$S_EVENT_NAME = 32;          !  EVENT NAME
macro EDB$T_EVENT_DATA = 80,0,0,0 %;
literal EDB$S_EVENT_DATA = 128;         !  OPTIONAL EVENT DATA
! 
!  End of GETEVI data
! 
macro EDB$L_IDENTIFIER = 208,0,32,0 %;  !  IDENTIFIER OF DECLARING PROCESS
macro EDB$L_ORB = 212,0,32,0 %;         !  POINTER TO EVENT FACILITY ORB
 
!*** MODULE $EFDDEF ***
! +
! 
!  Event Facility Descriptor block definitions
! 
!  Event facility descriptor blocks contain a built-in ORB with an
!  event facility code to identify the block.
! 
! -
literal EFD$M_PROT_16 = 1;
literal EFD$M_ACL_QUEUE = 2;
literal EFD$M_MODE_VECTOR = 4;
literal EFD$M_NOACL = 8;
literal EFD$M_CLASS_PROT = 16;
literal EFD$K_LENGTH = 100;             !  Length of block.
literal EFD$C_LENGTH = 100;             !  Length of block. 
literal EFD$S_EFDDEF = 100;
macro EFD$L_EFDQFL = 0,0,32,0 %;        !  EFD forward link 
macro EFD$L_EFDQBL = 4,0,32,0 %;        !  EFD backward link 
macro EFD$W_SIZE = 8,0,16,0 %;          !  Structure size in bytes
macro EFD$B_TYPE = 10,0,8,0 %;          !  Structure type code 
macro EFD$B_SUBTYPE = 11,0,8,0 %;       !  Structure subtype code
! 
!  Start of built-in ORB
! 
macro EFD$L_OWNER = 12,0,32,0 %;        !  Object's owner
macro EFD$W_UICMEMBER = 12,0,16,0 %;    !  Member number
macro EFD$W_UICGROUP = 14,0,16,0 %;     !  Group number
macro EFD$L_ACL_MUTEX = 16,0,32,0 %;    !  Mutex for this ACL
macro EFD$W_ORB_SIZE = 20,0,16,0 %;     !  Size of the ORB in bytes
macro EFD$B_ORB_TYPE = 22,0,8,0 %;      !  Structure type
macro EFD$B_FLAGS = 23,0,8,0 %;         !  Field modifiers
macro EFD$V_PROT_16 = 23,0,1,0 %;       !  Use word not vector protection
macro EFD$V_ACL_QUEUE = 23,1,1,0 %;     !  Use ACL queue not descriptor list
macro EFD$V_MODE_VECTOR = 23,2,1,0 %;   !  Use vector not byte mode protection
macro EFD$V_NOACL = 23,3,1,0 %;         !  Object cannot have an ACL
macro EFD$V_CLASS_PROT = 23,4,1,0 %;    !  Security classification is valid
macro EFD$W_FACILITY_CODE = 24,0,16,0 %; !  Event facility code
macro EFD$W_REFCOUNT = 26,0,16,0 %;     !  Reference count
macro EFD$Q_MODE_PROT = 28,0,0,0 %;
literal EFD$S_MODE_PROT = 8;            !  Mode protection vector
macro EFD$L_MODE_PROTL = 28,0,32,0 %;   !  Low longword of vector
macro EFD$L_MODE_PROTH = 32,0,32,0 %;   !  High longword of vector
macro EFD$B_MODE = 28,0,8,0 %;          !  Simple access mode
macro EFD$L_SYS_PROT = 36,0,32,0 %;     !  System protection field
macro EFD$W_PROT = 36,0,16,0 %;         !  Standard SOGW protection
macro EFD$L_OWN_PROT = 40,0,32,0 %;     !  Owner protection field
macro EFD$L_GRP_PROT = 44,0,32,0 %;     !  Group protection field
macro EFD$L_WOR_PROT = 48,0,32,0 %;     !  World protection field
macro EFD$L_ACLFL = 52,0,32,0 %;        !  ACL queue forward link
macro EFD$L_ACL_COUNT = 52,0,32,0 %;    !  Count of ACL segments
macro EFD$L_ACLBL = 56,0,32,0 %;        !  ACL queue backward link
macro EFD$L_ACL_DESC = 56,0,32,0 %;     !  Address of ACL segment descriptor list
macro EFD$R_MIN_CLASS = 60,0,0,0 %;
literal EFD$S_MIN_CLASS = 20;
macro EFD$R_MAX_CLASS = 80,0,0,0 %;
literal EFD$S_MAX_CLASS = 20;
 
!*** MODULE $EMBHDDEF ***
! 
!  ERROR MESSAGE BUFFER HEADER
! 
!                 ******        CAUTION  ******
! 
!         ALL OF THE EMBxxDEF STRUCTURES ASSUME THAT THE HEADER IS
!         EXACTLY ONE LONGWORD IN LENGTH.  IF THIS FIELD CHANGES,
!         IF EFFECTS ALL OF THE OTHER STRUCTURES.
!         ALL MESSAGES HAVE TYPE, TIME, SYSTEM ID, AND ERROR SEQUENCE IN THE
!         SAME RELATIVE LOCATIONS.
! 
!  HDR REVISIONS
literal EMB$K_HD_REV_V50 = 2;
literal EMB$K_HD_REV_V51 = 3;
literal EMB$K_HD_REV_HICKORY = 4;
!  HDR REVISIONS
literal EMB$C_HD_REV_V50 = 2;
literal EMB$C_HD_REV_V51 = 3;
literal EMB$C_HD_REV_HICKORY = 4;
!  OS ID's
literal EMB$C_OS_RESERVED = 0;
literal EMB$C_OS_VAXVMS = 1;
literal EMB$C_OS_VAXELN = 2;
!  OS ID's
literal EMB$K_OS_RESERVED = 0;
literal EMB$K_OS_VAXVMS = 1;
literal EMB$K_OS_VAXELN = 2;
!  This determines the SCS node name  buffer size
literal EMB$C_SCS_NAME_LENGTH = 16;     !  Buffer size for SCS name
literal EMB$K_SCS_NAME_LENGTH = 16;     !  Buffer size for SCS name
literal EMB$K_LENGTH = 12;              ! LENGTH OF FIXED PART OF MESSAGE HEADER 
literal EMB$K_HD_LENGTH = 64;           ! LENGTH OF PART COMMON TO ALL MESSAGES 
literal EMB$C_HD_LENGTH = 64;           ! LENGTH OF PART COMMON TO ALL MESSAGES 
literal EMB$S_EMBHDDEF = 76;
macro EMB$W_SIZE = -12,0,16,0 %;        ! SIZE OF ERROR MESSAGE IN BYTES 
macro EMB$W_BUFIND = -10,0,16,0 %;      ! ALLOCATION BUFFER INDICATOR
macro EMB$L_CHKSUM = -8,0,32,0 %;       !  HEADER CHECKSUM
macro EMB$B_VALID = -4,0,8,0 %;         ! ERROR MESSAGE VALID INDICATOR 
macro EMB$B_SPARE1 = -3,0,8,0 %;        !  SPARE
macro EMB$B_SPARE2 = -2,0,8,0 %;        !  SPARE
macro EMB$B_SPARE3 = -1,0,8,0 %;        !  SPARE
! 
!  Changes to offsets starting with HD_SID, the origin of this aggregate,
!  require the Header Revision to be increased. Each error message is
!  logged to the error log file in an RMS record that contains the
!  error packet, starting from offset HD_SID. The remainder of the packet
!  format is known to ERF and must be kept in synch with ERF via the
!  revision level.
! 
macro EMB$L_HD_SID = 0,0,32,0 %;        !  SYSTEM ID
macro EMB$W_HD_HDR_REV = 4,0,16,0 %;    !  HEADER REVISION (IN 1's COMPLEMENT)
macro EMB$L_HD_SYSTYPE = 6,0,32,0 %;    !  SYSTEM TYPE REGISTER
macro EMB$W_HD_XSID_RSV = 6,0,16,0 %;   !  RESERVED FOR TYPE-DEPENDENT INFO
macro EMB$B_HD_XSID_REV = 8,0,8,0 %;    !  REVISION LEVEL OF CPU
macro EMB$B_HD_XSID_TYP = 9,0,8,0 %;    !  SYS_TYPE, CPU TYPE
macro EMB$L_CPUID = 10,0,32,0 %;        !  UNIQUE CPU ID
macro EMB$B_DEV_CLASS = 14,0,8,0 %;     !  DEVICE CLASS
macro EMB$B_DEV_TYPE = 15,0,8,0 %;      !  DEVICE TYPE
macro EMB$T_SCS_NAME = 16,0,0,0 %;
literal EMB$S_SCS_NAME = 16;            !  SCS Node name ASCIC
macro EMB$W_FLAGS = 32,0,16,0 %;        !  MISC. FLAGS
macro EMB$B_OS_ID = 34,0,8,0 %;         !  LOGGING OP SYS ID
macro EMB$B_HDRSZ = 35,0,8,0 %;         !  SIZE OF HEADER
macro EMB$W_HD_ENTRY = 36,0,16,0 %;     ! ERROR MESSAGE ENTRY TYPE 
macro EMB$B_DEVTYP = 36,0,8,0 %;        ! DEVICE TYPE 
macro EMB$B_DEVCLS = 37,0,8,0 %;        ! DEVICE CLASS 
macro EMB$Q_HD_TIME = 38,0,0,0 %;
literal EMB$S_HD_TIME = 8;              ! TIME OF MESSAGE ENTRY 
macro EMB$W_HD_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE FOR MESSAGE 
macro EMB$Q_HD_SWVERS = 48,0,0,0 %;
literal EMB$S_HD_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_HD_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_HD_ABSTIM = 60,0,32,0 %;    !  LOGGED CONTENTS OF EXE$GL_ABSTIM
literal EMB$M_EM_BUS = 1;
literal EMB$M_EM_CPU = 2;
literal EMB$M_EM_MEMORY = 4;
literal EMB$M_EM_ADAPTER = 8;
literal EMB$M_EM_CACHE = 16;
literal EMB$M_EM_VECTOR = 32;
literal EMB$M_RSRVD1 = 64;
literal EMB$S_fill_188 = 4;
macro EMB$V_EM_BUS = 0,0,1,0 %;         !  bus error
macro EMB$V_EM_CPU = 0,1,1,0 %;         !  cpu error
macro EMB$V_EM_MEMORY = 0,2,1,0 %;      !  memory error
macro EMB$V_EM_ADAPTER = 0,3,1,0 %;     !  adapter error
macro EMB$V_EM_CACHE = 0,4,1,0 %;       !  cache error
macro EMB$V_EM_VECTOR = 0,5,1,0 %;      !  VECTOR error
macro EMB$V_RSRVD1 = 0,6,1,0 %;         !  Reserved
 
!*** MODULE $EMBINFODEF ***
! 
!  INFORMATIONAL MESSAGE BUFFER FORMAT 
! 
literal EMB$S_EMBINFODEF = 69;
macro EMB$L_INFO_MSG_TYPE = 64,0,32,0 %; !  Informational msg type
macro EMB$B_INFO_MSG_DATA = 68,0,8,0 %; !  Device dependent data
 
!*** MODULE $EMBBCDEF ***
! 
!  BUGCHECK ERROR MESSAGE BUFFER FORMAT (SYSTEM AND USER)
! 
literal EMB$K_BC_LENGTH = 176;          ! SIZE OF FIXED PART OF BUGCHECK MESSAGE 
literal EMB$C_BC_LENGTH = 176;          ! SIZE OF FIXED PART OF BUGCHECK MESSAGE 
literal EMB$S_EMBBCDEF = 176;
macro EMB$L_BC_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_BC_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_BC_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_BC_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_BC_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_BC_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$T_BC_SCS_NAME = 16,0,0,0 %;
literal EMB$S_BC_SCS_NAME = 16;         !  SCS node name ASCIC
macro EMB$W_BC_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_BC_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_BC_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_BC_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE 
macro EMB$Q_BC_TIME = 38,0,0,0 %;
literal EMB$S_BC_TIME = 8;              ! TIME IN 64 BITS 
macro EMB$W_BC_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_BC_SWVERS = 48,0,0,0 %;
literal EMB$S_BC_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_BC_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_BC_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$L_BC_KSP = 64,0,32,0 %;       ! KERNEL STACK POINTER 
macro EMB$L_BC_ESP = 68,0,32,0 %;       ! EXECUTIVE STACK POINTER 
macro EMB$L_BC_SSP = 72,0,32,0 %;       ! SUPERVISOR STACK POINTER 
macro EMB$L_BC_USP = 76,0,32,0 %;       ! USER STACK POINTER 
macro EMB$L_BC_ISP = 80,0,32,0 %;       ! INTERRUPT STACK POINTER 
macro EMB$L_BC_R0 = 84,0,32,0 %;        ! REGISTER R0 
macro EMB$L_BC_R1 = 88,0,32,0 %;        ! REGISTER R1 
macro EMB$L_BC_R2 = 92,0,32,0 %;        ! REGISTER R2 
macro EMB$L_BC_R3 = 96,0,32,0 %;        ! REGISTER R3 
macro EMB$L_BC_R4 = 100,0,32,0 %;       ! REGISTER R4 
macro EMB$L_BC_R5 = 104,0,32,0 %;       ! REGISTER R5 
macro EMB$L_BC_R6 = 108,0,32,0 %;       ! REGISTER R6 
macro EMB$L_BC_R7 = 112,0,32,0 %;       ! REGISTER R7 
macro EMB$L_BC_R8 = 116,0,32,0 %;       ! REGISTER R8 
macro EMB$L_BC_R9 = 120,0,32,0 %;       ! REGISTER R9 
macro EMB$L_BC_R10 = 124,0,32,0 %;      ! REGISTER R10 
macro EMB$L_BC_R11 = 128,0,32,0 %;      ! REGISTER R11 
macro EMB$L_BC_AP = 132,0,32,0 %;       ! ARGUMENT POINTER 
macro EMB$L_BC_FP = 136,0,32,0 %;       ! FRAME POINTER 
macro EMB$L_BC_SP = 140,0,32,0 %;       ! CURRENT STACK POINTER 
macro EMB$L_BC_PC = 144,0,32,0 %;       ! PROGRAM COUNTER 
macro EMB$L_BC_PSL = 148,0,32,0 %;      ! PROCESSOR STATUS 
macro EMB$L_BC_CODE = 152,0,32,0 %;     ! BUGCHECK CODE 
macro EMB$L_BC_PID = 156,0,32,0 %;      ! CURRENT PROCESS ID 
macro EMB$T_BC_LNAME = 160,0,0,0 %;
literal EMB$S_BC_LNAME = 16;            ! CURRENT PROCESS NAME 
 
!*** MODULE $EMBCRDEF ***
! 
!  CRASH-RESTART ERROR MESSAGE BUFFER FORMAT
! 
literal EMB$K_CR_LENGTH = 196;
literal EMB$C_CR_LENGTH = 196;
literal EMB$S_EMBCRDEF = 200;
macro EMB$L_CR_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_CR_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_CR_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_CR_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_CR_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_CR_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_CR_SCS_NAME = 16,0,0,1 %;
literal EMB$S_CR_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_CR_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_CR_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_CR_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_CR_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE 
macro EMB$Q_CR_TIME = 38,0,0,0 %;
literal EMB$S_CR_TIME = 8;              ! TIME IN 64 BITS 
macro EMB$W_CR_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_CR_SWVERS = 48,0,0,0 %;
literal EMB$S_CR_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_CR_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_CR_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$L_CR_KSP = 64,0,32,0 %;       ! KERNEL STACK POINTER 
macro EMB$L_CR_ESP = 68,0,32,0 %;       ! EXECUTIVE STACK POINTER 
macro EMB$L_CR_SSP = 72,0,32,0 %;       ! SUPERVISOR STACK POINTER 
macro EMB$L_CR_USP = 76,0,32,0 %;       ! USER STACK POINTER 
macro EMB$L_CR_ISP = 80,0,32,0 %;       ! INTERRUPT STACK POINTER 
macro EMB$L_CR_R0 = 84,0,32,0 %;        ! REGISTER R0 
macro EMB$L_CR_R1 = 88,0,32,0 %;        ! REGISTER R1 
macro EMB$L_CR_R2 = 92,0,32,0 %;        ! REGISTER R2 
macro EMB$L_CR_R3 = 96,0,32,0 %;        ! REGISTER R3 
macro EMB$L_CR_R4 = 100,0,32,0 %;       ! REGISTER R4 
macro EMB$L_CR_R5 = 104,0,32,0 %;       ! REGISTER R5 
macro EMB$L_CR_R6 = 108,0,32,0 %;       ! REGISTER R6 
macro EMB$L_CR_R7 = 112,0,32,0 %;       ! REGISTER R7 
macro EMB$L_CR_R8 = 116,0,32,0 %;       ! REGISTER R8 
macro EMB$L_CR_R9 = 120,0,32,0 %;       ! REGISTER R9 
macro EMB$L_CR_R10 = 124,0,32,0 %;      ! REGISTER R10 
macro EMB$L_CR_R11 = 128,0,32,0 %;      ! REGISTER R11 
macro EMB$L_CR_AP = 132,0,32,0 %;       ! ARGUMENT POINTER 
macro EMB$L_CR_FP = 136,0,32,0 %;       ! FRAME POINTER 
macro EMB$L_CR_SP = 140,0,32,0 %;       ! CURRENT STACK POINTER 
macro EMB$L_CR_PC = 144,0,32,0 %;       ! PROGRAM COUNTER 
macro EMB$L_CR_PSL = 148,0,32,0 %;      ! PROCESSOR STATUS 
macro EMB$L_CR_P0BR = 152,0,32,0 %;     ! PROGRAM REGION BASE REGISTER 
macro EMB$L_CR_P0LR = 156,0,32,0 %;     ! PROGRAM REGION LIMIT REGISTER 
macro EMB$L_CR_P1BR = 160,0,32,0 %;     ! CONTROL REGION BASE REGISTER 
macro EMB$L_CR_P1LR = 164,0,32,0 %;     ! CONTROL REGION LIMIT REGISTER 
macro EMB$L_CR_SBR = 168,0,32,0 %;      ! SYSTEM BASE REGISTER 
macro EMB$L_CR_SLR = 172,0,32,0 %;      ! SYSTEM LIMIT REGISTER 
macro EMB$L_CR_PCBB = 176,0,32,0 %;     ! PROCESS CONTROL BLOCK BASE REGISTER 
macro EMB$L_CR_SCBB = 180,0,32,0 %;     ! SYSTEM CONTROL BLOCK BASE REGISTER 
macro EMB$L_CR_ASTLVL = 184,0,32,0 %;   ! AST DELIVERY LEVEL REGISTER 
macro EMB$L_CR_SISR = 188,0,32,0 %;     ! SOFTWARE INTERRUPT SUMMARY REGISTER 
macro EMB$L_CR_ICCS = 192,0,32,0 %;     ! INTERVAL TIMER CONTROL STATUS REGISTER 
!  Remember start of CPU-dependent info
macro EMB$L_CR_CPUREG = 196,0,32,0 %;   ! START OF CPU-SPECIFIC IPR'S 
!  CPU-specific registers for the 11/780:
literal EMB$K_CR1_LENGTH = 292;
literal EMB$C_CR1_LENGTH = 292;
literal EMB$S_EMBCRDEF1 = 292;
macro EMB$L_CR_ICR = 196,0,32,0 %;      ! INTERVAL COUNT REGISTER 
macro EMB$L_CR_TODR = 200,0,32,0 %;     ! TIME OF DAY REGISTER 
macro EMB$L_CR_ACCS = 204,0,32,0 %;     ! ACCELERATOR CONTROL REGISTER 
macro EMB$L_CR_SBIFS = 208,0,32,0 %;    !  SBI FAULT STATUS 
macro EMB$L_CR_SBISC = 212,0,32,0 %;    !  SBI COMPARATOR REGISTER 
macro EMB$L_CR_SBIMT = 216,0,32,0 %;    !  SBI MAINT REGISTER 
macro EMB$L_CR_SBIER = 220,0,32,0 %;    !  SBI ERROR REGISTER 
macro EMB$L_CR_SBITA = 224,0,32,0 %;    !  SBI TIMEOUT ADDR REGISTER 
macro EMB$L_CR_SBIS = 228,0,0,0 %;
literal EMB$S_CR_SBIS = 64;             !  SBI SILO 
!  CPU-specific registers for the 11/750:
literal EMB$K_CR2_LENGTH = 228;
literal EMB$C_CR2_LENGTH = 228;
literal EMB$S_EMBCRDEF2 = 228;
macro EMB$L_CR_TBDR = 208,0,32,0 %;     !  TB DISABLE REGISTER 
macro EMB$L_CR_CADR = 212,0,32,0 %;     !  CACHE DISABLE REGISTER 
macro EMB$L_CR_MCESR = 216,0,32,0 %;    !  MACHINE CHECK ERROR SUMMARY 
macro EMB$L_CR_CAER = 220,0,32,0 %;     !  CACHE ERROR REGISTER 
macro EMB$L_CR_CMIERR = 224,0,32,0 %;   !  CMI ERROR SUMMARY REGISTER 
!  16 UNUSED LONGWDS IN EMB
literal EMB$K_CR3_LENGTH = 316;         ! SIZE OF FIXED PART OF BUGCHECK MESSAGE 
literal EMB$C_CR3_LENGTH = 316;         ! SIZE OF FIXED PART OF BUGCHECK MESSAGE 
literal EMB$S_EMBCRDEF3 = 316;
macro EMB$L_CR_CODE = 292,0,32,0 %;     ! BUGCHECK/CRASH CODE 
macro EMB$L_CR_PID = 296,0,32,0 %;      ! CURRENT PROCESS ID 
macro EMB$T_CR_LNAME = 300,0,0,0 %;
literal EMB$S_CR_LNAME = 16;            ! CURRENT PROCESS NAME 
 
!*** MODULE $EMBDVDEF ***
! 
!  DEVICE ERROR MESSAGE BUFFER FORMAT (ERROR AND TIMEOUT)
! 
literal EMB$K_DV_LENGTH = 146;
literal EMB$C_DV_LENGTH = 146;
literal EMB$S_EMBDVDEF = 146;
macro EMB$L_DV_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_DV_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_DV_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_DV_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_DV_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_DV_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_DV_SCS_NAME = 16,0,0,1 %;
literal EMB$S_DV_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_DV_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_DV_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_DV_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_DV_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE (1=ERROR, 96=TIMEOUT) 
macro EMB$Q_DV_TIME = 38,0,0,0 %;
literal EMB$S_DV_TIME = 8;              ! TIME OF ERROR 
macro EMB$W_DV_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_DV_SWVERS = 48,0,0,0 %;
literal EMB$S_DV_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_DV_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_DV_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$B_DV_ERTCNT = 64,0,8,0 %;     ! REMAINING NUMBER OF ERROR RETRIES 
macro EMB$B_DV_ERTMAX = 65,0,8,0 %;     ! MAXIMUM NUMBER OF ERROR RETRIES 
macro EMB$Q_DV_IOSB = 66,0,0,0 %;
literal EMB$S_DV_IOSB = 8;              ! FINAL I/O STATUS 
macro EMB$W_DV_STS = 74,0,16,0 %;       ! FINAL DEVICE STATUS 
macro EMB$B_DV_CLASS = 76,0,8,0 %;      ! DEVICE CLASS 
macro EMB$B_DV_TYPE = 77,0,8,0 %;       ! DEVICE TYPE 
macro EMB$L_DV_RQPID = 78,0,32,0 %;     ! REQUESTER PROCESS ID 
macro EMB$W_DV_BOFF = 82,0,16,0 %;      ! BYTE OFFSET IN PAGE 
macro EMB$W_DV_BCNT = 84,0,16,0 %;      ! TRANSFER BYTE COUNT 
macro EMB$L_DV_MEDIA = 86,0,32,0 %;     ! STARTING MEDIA ADDRESS 
macro EMB$W_DV_UNIT = 90,0,16,0 %;      ! PHYSICAL UNIT NUMBER 
macro EMB$W_DV_ERRCNT = 92,0,16,0 %;    ! UNIT ERROR COUNT 
macro EMB$L_DV_OPCNT = 94,0,32,0 %;     ! UNIT OPERATION COUNT 
macro EMB$L_DV_OWNUIC = 98,0,32,0 %;    ! VOLUME OWNER UIC 
macro EMB$L_DV_CHAR = 102,0,32,0 %;     ! DEVICE CHARACTERISTICS 
macro EMB$B_DV_SLAVE = 106,0,8,0 %;     ! SLAVE CONTROLLER NUMBER 
macro EMB$W_DV_FUNC = 108,0,16,0 %;     ! I/O FUNCTION VALUE 
macro EMB$T_DV_NAME = 110,0,0,0 %;
literal EMB$S_DV_NAME = 32;             ! DEVICE NAME 
macro EMB$L_DV_REGSAV = 142,0,32,0 %;   ! START OF REGISTER SAVE AREA 
 
!*** MODULE $EMBTSDEF ***
! 
!  TIME STAMP MSG FORMAT
! 
literal EMB$K_TS_LENGTH = 64;           ! LENGTH OF TIME STAMP MSG 
literal EMB$C_TS_LENGTH = 64;           ! LENGTH OF TIME STAMP MSG 
literal EMB$S_EMBTSDEF = 64;
macro EMB$L_TS_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_TS_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_TS_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_TS_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_TS_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_TS_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_TS_SCS_NAME = 16,0,0,1 %;
literal EMB$S_TS_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_TS_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_TS_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_TS_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_TS_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE 
macro EMB$Q_TS_TIME = 38,0,0,0 %;
literal EMB$S_TS_TIME = 8;              ! TIME IN 64 BITS 
macro EMB$W_TS_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQ ! 
macro EMB$Q_TS_SWVERS = 48,0,0,0 %;
literal EMB$S_TS_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_TS_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_TS_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
 
!*** MODULE $EMBSSDEF ***
! 
!  SYSTEM SERVICE MESSAGE
! 
!         NOTE:        SYSTEM SERVICE MESSAGE COVERS:
! 
!                 1) THE MESSAGES FROM THE SERVICE
!                 2) OPERATOR MESSAGES
!                 3) NETWORK MESSAGES
! 
!         ONLY THE TYPE FIELD IS DIFERENT
! 
literal EMB$K_SS_LENGTH = 66;           ! LENGTH OF CONSTANT PART 
literal EMB$C_SS_LENGTH = 66;           ! LENGTH OF CONSTANT PART 
literal EMB$S_EMBSSDEF = 67;
macro EMB$L_SS_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_SS_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_SS_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_SS_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_SS_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_SS_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_SS_SCS_NAME = 16,0,0,1 %;
literal EMB$S_SS_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_SS_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_SS_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_SS_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_SS_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE 
macro EMB$Q_SS_TIME = 38,0,0,0 %;
literal EMB$S_SS_TIME = 8;              ! TIME IN 64 BITS 
macro EMB$W_SS_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_SS_SWVERS = 48,0,0,0 %;
literal EMB$S_SS_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_SS_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_SS_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$W_SS_MSGSZ = 64,0,16,0 %;     ! MESSAGE TEXT SIZE IN BYTES 
macro EMB$B_SS_MSGTXT = 66,0,8,0 %;     ! FIRST BYTE OF MESSAGE TEXT 
 
!*** MODULE $EMBVMDEF ***
! 
!  VOLUME MOUNT/DISMOUNT MESSAGE TYPE
! 
literal EMB$K_VM_LENGTH = 126;          ! LENGTH OF BUFFER 
literal EMB$C_VM_LENGTH = 126;          ! LENGTH OF BUFFER 
literal EMB$S_EMBVMDEF = 126;
macro EMB$L_VM_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_VM_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_VM_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_VM_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_VM_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_VM_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_VM_SCS_NAME = 16,0,0,1 %;
literal EMB$S_VM_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_VM_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_VM_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_VM_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_VM_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE = EMB$K_VM OR EMB$K_VD 
macro EMB$Q_VM_TIME = 38,0,0,0 %;
literal EMB$S_VM_TIME = 8;              ! TIME IN 64 BIT FORMAT 
macro EMB$W_VM_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_VM_SWVERS = 48,0,0,0 %;
literal EMB$S_VM_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_VM_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_VM_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$L_VM_OWNUIC = 64,0,32,0 %;    ! OWNER UIC OF THE VOLUME 
macro EMB$L_VM_ERRCNT = 68,0,32,0 %;    ! UNIT ERROR COUNT FROM UCB 
macro EMB$L_VM_OPRCNT = 72,0,32,0 %;    ! UNIT OPERATION COUNT FROM UCB 
macro EMB$W_VM_UNIT = 76,0,16,0 %;      ! DEVICE UNIT NUMBER 
macro EMB$B_VM_NAMLNG = 78,0,8,0 %;     ! LENGTH OF DEVICE GENERIC NAME 
macro EMB$T_VM_NAMTXT = 79,0,0,0 %;
literal EMB$S_VM_NAMTXT = 31;           ! DEVICE GENERIC NAME 
macro EMB$W_VM_VOLNUM = 110,0,16,0 %;   ! VOLUME NUMBER WITHIN SET 
macro EMB$W_VM_NUMSET = 112,0,16,0 %;   ! NUMBER OF VOLUMES WITHIN SET 
macro EMB$T_VM_LABEL = 114,0,0,0 %;
literal EMB$S_VM_LABEL = 12;            ! VOLUME LABEL 
 
!*** MODULE $EMBSUDEF ***
! 
!  SYSTEM STARTUP MESSAGE
! 
literal EMB$K_SU_LENGTH = 68;           ! LENGTH OF MESSAGE 
literal EMB$C_SU_LENGTH = 68;           ! LENGTH OF MESSAGE 
literal EMB$S_EMBSUDEF = 68;
macro EMB$L_SU_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_SU_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_SU_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_SU_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_SU_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_SU_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_SU_SCS_NAME = 16,0,0,1 %;
literal EMB$S_SU_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_SU_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_SU_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_SU_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_SU_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE (IE: BOOT OR POWER RECOVERY) 
macro EMB$Q_SU_TIME = 38,0,0,0 %;
literal EMB$S_SU_TIME = 8;              ! CONTENTS OF SYSTEM TIME QUADWORD 
macro EMB$W_SU_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_SU_SWVERS = 48,0,0,0 %;
literal EMB$S_SU_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_SU_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_SU_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$L_SU_DAYTIM = 64,0,32,0 %;    ! CONTENTS OF TIME OF DAY CLOCK 
 
!*** MODULE $EMBMCDEF ***
! 
!  MACHINE CHECK LOG BUFFER FORMAT
! 
literal EMB$K_MC_LENGTH = 112;          ! LENGTH OF MACHINE CHECK FRAME 
literal EMB$C_MC_LENGTH = 112;          ! LENGTH OF MACHINE CHECK FRAME 
literal EMB$S_EMBMCDEF = 112;
macro EMB$L_MC_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_MC_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_MC_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_MC_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_MC_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_MC_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_MC_SCS_NAME = 16,0,0,1 %;
literal EMB$S_MC_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_MC_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_MC_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_MC_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_MC_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE 
macro EMB$Q_MC_TIME = 38,0,0,0 %;
literal EMB$S_MC_TIME = 8;              ! TIME IN 64 BITS 
macro EMB$W_MC_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_MC_SWVERS = 48,0,0,0 %;
literal EMB$S_MC_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_MC_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_MC_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$B_MC_SUMCOD = 64,0,8,0 %;     ! SUMMARY CODE 
macro EMB$B_MC_TOPF = 65,0,8,0 %;       ! TIME OUT PENDING FLAG 
macro EMB$B_MC_OPCODE = 66,0,8,0 %;     ! OPCODE OF INSTRUCTION CAUSING CHECK 
macro EMB$B_MC_CACHEF = 67,0,8,0 %;     ! CACHE DISABLE FLAG, 1=GROUP 0, 2=G 1 
macro EMB$L_MC_CES = 68,0,32,0 %;       ! CPU ERROR STATUS 
macro EMB$L_MC_UPC = 72,0,32,0 %;       ! MICRO-PC AT FAULT TIME 
macro EMB$L_MC_VA = 76,0,32,0 %;        ! VIRTUAL ADDRESS AT FAULT TIME 
macro EMB$L_MC_D = 80,0,32,0 %;         ! CPU D REGISTER AT FAULT TIME 
macro EMB$L_MC_TBER0 = 84,0,32,0 %;     ! TRANSLATION BUFFER STATUS REG 0 
macro EMB$L_MC_TBER1 = 88,0,32,0 %;     ! TRANSLATION BUFFER STATUS REG 1 
macro EMB$L_MC_TIMOAD = 92,0,32,0 %;    ! PHYSICAL ADDRESS CAUSING SBI TIMEOUT 
macro EMB$L_MC_PARITY = 96,0,32,0 %;    ! CACHE STATUS REGISTER 
macro EMB$L_MC_SBIERR = 100,0,32,0 %;   ! SBI ERROR REGISTER 
macro EMB$L_MC_PC = 104,0,32,0 %;       ! PC OF INSTRUCTION CAUSING CHECK 
macro EMB$L_MC_PSL = 108,0,32,0 %;      ! PSL OF MACHINE AT FAULT TIME 
 
!*** MODULE $EMBSEDEF ***
! 
!  SOFT ECC DETECTED ERRORS AND SBI ALERT BUFFER FORMAT
! 
literal EMB$K_SE_LENGTH = 68;           ! LENGTH OF FIXED PART OF MSG 
literal EMB$C_SE_LENGTH = 68;           ! LENGTH OF FIXED PART OF MSG 
literal EMB$S_EMBSEDEF = 92;
macro EMB$L_SE_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_SE_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_SE_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_SE_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_SE_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_SE_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_SE_SCS_NAME = 16,0,0,1 %;
literal EMB$S_SE_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_SE_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_SE_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_SE_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_SE_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE 
macro EMB$Q_SE_TIME = 38,0,0,0 %;
literal EMB$S_SE_TIME = 8;              ! TIME IN 64 BITS 
macro EMB$W_SE_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_SE_SWVERS = 48,0,0,0 %;
literal EMB$S_SE_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_SE_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_SE_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$L_SE_NUMCON = 64,0,32,0 %;    ! NUMBER OF MEMORY CONTROLLERS 
macro EMB$L_SE_TR = 68,0,32,0 %;        ! ADAPTOR TR NUMBER 
macro EMB$L_SE_A = 72,0,32,0 %;         ! MEMORY REGISTER A 
macro EMB$L_SE_B = 76,0,32,0 %;         ! MEMORY REGISTER B 
macro EMB$L_SE_C = 80,0,32,0 %;         ! MEMORY REGISTER C 
macro EMB$L_SE_PC = 84,0,32,0 %;        ! PC OF INSTRUCTION AT FAULT TIME 
macro EMB$L_SE_PSL = 88,0,32,0 %;       ! PSL OF MACHINE AT FAULT TIME 
 
!*** MODULE $EMBSBDEF ***
! 
!  SBI FAULT BUFFER FORMAT AND ASYNCHRONOUS WRITE ERROR FORMAT
! 
literal EMB$K_SB_LENGTH = 220;          ! LENGTH OF SBI ERROR BUFFER 
literal EMB$C_SB_LENGTH = 220;          ! LENGTH OF SBI ERROR BUFFER 
literal EMB$S_EMBSBDEF = 220;
macro EMB$L_SB_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_SB_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_SB_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_SB_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_SB_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_SB_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_SB_SCS_NAME = 16,0,0,1 %;
literal EMB$S_SB_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_SB_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_SB_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_SB_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_SB_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE 
macro EMB$Q_SB_TIME = 38,0,0,0 %;
literal EMB$S_SB_TIME = 8;              ! TIME IN 64 BITS 
macro EMB$W_SB_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_SB_SWVERS = 48,0,0,0 %;
literal EMB$S_SB_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_SB_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_SB_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$L_SB_FAULT = 64,0,32,0 %;     ! SBI FAULT/STATUS REGISTER 
macro EMB$L_SB_SILCMP = 68,0,32,0 %;    ! SBI SILO COMPARATOR 
macro EMB$L_SB_MAINT = 72,0,32,0 %;     ! SBI MAINTENANCE 
macro EMB$L_SB_ERROR = 76,0,32,0 %;     ! SBI ERROR REG 
macro EMB$L_SB_TIMOUT = 80,0,32,0 %;    ! SBI TIMEOUT REG 
macro EMB$L_SB_SILO = 84,0,0,0 %;
literal EMB$S_SB_SILO = 64;             ! SBI SILO REG 
macro EMB$L_SB_SBIRGS = 148,0,0,0 %;
literal EMB$S_SB_SBIRGS = 64;           ! REGISTER A'S ON BUS (OR 0) 
macro EMB$L_SB_PC = 212,0,32,0 %;       ! PC OF INSTRUCTION AT FAULT TIME 
macro EMB$L_SB_PSL = 216,0,32,0 %;      ! PSL OF MACHINE AT FAULT TIME 
 
!*** MODULE $EMBUIDEF ***
! 
!  UNDEFINED ADAPTER INTERRUPT BUFFER FORMAT
! 
literal EMB$K_UI_LENGTH = 72;           ! LENGTH OF MESSAGE 
literal EMB$C_UI_LENGTH = 72;           ! LENGTH OF MESSAGE 
literal EMB$S_EMBUIDEF = 72;
macro EMB$L_UI_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_UI_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_UI_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_UI_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_UI_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_UI_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_UI_SCS_NAME = 16,0,0,1 %;
literal EMB$S_UI_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_UI_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_UI_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_UI_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_UI_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE 
macro EMB$Q_UI_TIME = 38,0,0,0 %;
literal EMB$S_UI_TIME = 8;              ! TIME IN 64 BITS 
macro EMB$W_UI_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_UI_SWVERS = 48,0,0,0 %;
literal EMB$S_UI_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_UI_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_UI_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$L_UI_TR = 64,0,32,0 %;        ! ADAPTER TR NUMBER 
macro EMB$L_UI_CSR = 68,0,32,0 %;       ! ADAPTER CONGIGURATION STATUS REGISTER 
 
!*** MODULE $EMBUEDEF ***
! 
!  ERROR BUFFER FORMAT FOR UNIBUS ERROR SUMMARY REGISTER
!         ***** USED ONLY BY 11/730 ****
! 
literal EMB$K_UE_LENGTH = 68;           ! LENGTH OF MESSAGE 
literal EMB$C_UE_LENGTH = 68;           ! LENGTH OF MESSAGE 
literal EMB$S_EMBUEDEF = 68;
macro EMB$L_UE_SID = 0,0,32,0 %;        ! SYSTEM ID 
macro EMB$W_UE_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_UE_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_UE_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_UE_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_UE_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_UE_SCS_NAME = 16,0,0,1 %;
literal EMB$S_UE_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_UE_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_UE_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_UE_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_UE_ENTRY = 36,0,16,0 %;     ! ENTRY TYPE 
macro EMB$Q_UE_TIME = 38,0,0,0 %;
literal EMB$S_UE_TIME = 8;              ! TIME IN 64 BITS 
macro EMB$W_UE_ERRSEQ = 46,0,16,0 %;    ! ERROR SEQUENCE NUMBER 
macro EMB$Q_UE_SWVERS = 48,0,0,0 %;
literal EMB$S_UE_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_UE_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_UE_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$L_UE_UBERR = 64,0,32,0 %;     ! UNIBUS ERROR REGISTER 
 
!*** MODULE $EMBSPDEF ***
! 
!  ERROR BUFFER FORMAT FOR SAVING SOFTWARE PARAMETERS FOR CLASS DRIVER THAT
!         CORRESPOND TO A LOGGED MESSAGE (SEE EMBLMDEF BELOW) ORIGINATING
!         IN AN INTELLIGENT MASS STORAGE CONTROLLER.
! 
literal EMB$K_SP_LENGTH = 144;
literal EMB$C_SP_LENGTH = 144;
literal EMB$S_EMBSPDEF = 144;
macro EMB$L_SP_SID = 0,0,32,0 %;        !  System ID 
macro EMB$W_SP_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_SP_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_SP_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_SP_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_SP_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_SP_SCS_NAME = 16,0,0,1 %;
literal EMB$S_SP_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_SP_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_SP_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_SP_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_SP_ENTRY = 36,0,16,0 %;     !  Entry type (of this errorlog buffer) 
macro EMB$Q_SP_TIME = 38,0,0,0 %;
literal EMB$S_SP_TIME = 8;              !  Time this entry created 
macro EMB$W_SP_ERRSEQ = 46,0,16,0 %;    !  Error Sequence Number 
macro EMB$Q_SP_SWVERS = 48,0,0,0 %;
literal EMB$S_SP_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_SP_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_SP_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$B_SP_CLASS = 64,0,8,0 %;      !  Device Class 
macro EMB$B_SP_TYPE = 65,0,8,0 %;       !  Device Type 
macro EMB$W_SP_BOFF = 66,0,16,0 %;      !  Byte OFFset of data transfer 
macro EMB$L_SP_BCNT = 68,0,32,0 %;      !  Byte Count of data transfer 
macro EMB$L_SP_MEDIA = 72,0,32,0 %;     !  Media address (LBN) of data transfer 
macro EMB$L_SP_RQPID = 76,0,32,0 %;     !  Requesting PID 
macro EMB$Q_SP_IOSB = 80,0,0,0 %;
literal EMB$S_SP_IOSB = 8;              !  Final I/O status 
macro EMB$W_SP_FUNC = 88,0,16,0 %;      !  I/O function code 
macro EMB$W_SP_UNIT = 90,0,16,0 %;      !  Unit number of drive 
macro EMB$L_SP_OPCNT = 92,0,32,0 %;     !  Cummulative operation count this unit 
macro EMB$W_SP_ERRCNT = 96,0,16,0 %;    !  Cummulative error count for this unit 
macro EMB$W_SP_UCBSTS = 98,0,16,0 %;    !  Copy of UCB$W_STS field 
macro EMB$L_SP_OWNUIC = 100,0,32,0 %;   !  Unit's owner's UIC 
macro EMB$L_SP_CHAR = 104,0,32,0 %;     !  Device Characteristics 
macro EMB$L_SP_CMDREF = 108,0,32,0 %;   !  Command Reference number (RSPID) 
macro EMB$T_SP_DEVNAM = 112,0,0,0 %;
literal EMB$S_SP_DEVNAM = 32;           !  Device name 
 
!*** MODULE $EMBLMDEF ***
! 
!  LOGGED MESSAGE (DEVICE DEPENDENT CONTENTS).  DRIVER LOGS MESSAGE
!         WHICH MAY COME DIRECT FROM INTELLIGENT MASS STORAGE CONTROLLER.
! 
literal EMB$K_LM_LENGTH = 102;
literal EMB$C_LM_LENGTH = 102;
literal EMB$S_EMBLMDEF = 102;
macro EMB$L_LM_SID = 0,0,32,0 %;        !  System ID 
macro EMB$W_LM_HDR_REV = 4,0,16,0 %;    !  HEADER REV LEVEL
macro EMB$L_LM_XSID = 6,0,32,0 %;       !  SYS_TYPE REGISTER
macro EMB$L_LM_CPUID = 10,0,32,0 %;     !  UNIQUE CPU ID
macro EMB$B_LM_DEV_CLASS = 14,0,8,0 %;  !  DEVICE CLASS
macro EMB$B_LM_DEV_TYPE = 15,0,8,0 %;   !  DEVICE TYPE
macro EMB$B_LM_SCS_NAME = 16,0,0,1 %;
literal EMB$S_LM_SCS_NAME = 16;         !  SCS node name in ASCIC
macro EMB$W_LM_FLAGS = 32,0,16,0 %;     !  MISC. FLAGS
macro EMB$B_LM_OS_ID = 34,0,8,0 %;      !  LOGGING OS ID
macro EMB$B_LM_HDRSZ = 35,0,8,0 %;      !  HEADER SIZE
macro EMB$W_LM_ENTRY = 36,0,16,0 %;     !  Entry type (i.e. Logged Message) 
macro EMB$Q_LM_TIME = 38,0,0,0 %;
literal EMB$S_LM_TIME = 8;              !  Time this entry created 
macro EMB$W_LM_ERRSEQ = 46,0,16,0 %;    !  Error sequence number 
macro EMB$Q_LM_SWVERS = 48,0,0,0 %;
literal EMB$S_LM_SWVERS = 8;            !  SOFTWARE VERSION
macro EMB$L_LM_ERRMSK = 56,0,32,0 %;    !  ERROR MASK
macro EMB$L_LM_ABSTIM = 60,0,32,0 %;    !  CONTENTS OF EXE$GL_ABSTIM
macro EMB$B_LM_CLASS = 64,0,8,0 %;      !  Device Class 
macro EMB$B_LM_TYPE = 65,0,8,0 %;       !  Device Type 
macro EMB$W_LM_UNIT = 66,0,16,0 %;      !  Device unit number 
macro EMB$T_LM_DEVNAM = 68,0,0,0 %;
literal EMB$S_LM_DEVNAM = 32;           !  Device name 
macro EMB$W_LM_MSGTYP = 100,0,16,0 %;   !  Type of logged message 
 
!*** MODULE $EMBLTDEF ***
! 
!  LOGGED MESSAGE MESSAGE TYPES
! 
literal EMB$C_DM = 1;                   !  Disk MSCP message 
literal EMB$K_DM = 1;                   !  Disk MSCP message 
literal EMB$C_TM = 2;                   !  Tape MSCP message 
literal EMB$K_TM = 2;                   !  Tape MSCP message 
literal EMB$C_PM = 3;                   !  Port (CI) message 
literal EMB$K_PM = 3;                   !  Port (CI) message 
literal EMB$C_UM = 4;                   !  Port (UDA) message 
literal EMB$K_UM = 4;                   !  Port (UDA) message 
literal EMB$C_AVATN = 5;                !  Available Attention Message 
literal EMB$K_AVATN = 5;                !  Available Attention Message 
literal EMB$C_DUPUN = 6;                !  Duplicate Unit ! Attention Message 
literal EMB$K_DUPUN = 6;                !  Duplicate Unit ! Attention Message 
literal EMB$C_IVCMD = 7;                !  Invalid Command Log message. 
literal EMB$K_IVCMD = 7;                !  Invalid Command Log message. 
literal EMB$C_ACPTH = 8;                !  Access Path Attention Message 
literal EMB$K_ACPTH = 8;                !  Access Path Attention Message 
literal EMB$C_INVSTS = 9;               !  Invalid Status in End Message
literal EMB$K_INVSTS = 9;               !  Invalid Status in End Message
literal EMB$C_INVATT = 10;              !  Invalid Attention Message
literal EMB$K_INVATT = 10;              !  Invalid Attention Message
literal EMB$C_NOUNIT_DG = 11;           !  No unit in Datagram
literal EMB$K_NOUNIT_DG = 11;           !  No unit in Datagram
literal EMB$C_SSTFAIL = 12;             !  Self test failed.
literal EMB$K_SSTFAIL = 12;             !  Self test failed.
literal EMB$C_KDB50 = 13;               !  KDB50 error detected.
literal EMB$K_KDB50 = 13;               !  KDB50 error detected.
! 
!  The CTLRES_x fields below indicate that an MSCP controller was
!  told to reset itself by a class driver because the controller
!  is broken or confused.  (To an HSC, this will cause a reboot.)
!  The first three (INIT, INVMSG and IMTMO) do not have an MSCP end
!  message logged with them.
! 
literal EMB$C_CTLRES_INIT = 14;         !  An error occurred during or the connection vanished before completing
literal EMB$K_CTLRES_INIT = 14;         !    the initial handshake with the class driver.
literal EMB$C_CTLRES_INVMSG = 15;       !  An invalid message was received from the controller.  The offending
literal EMB$K_CTLRES_INVMSG = 15;       !    message has been previously logged as INVATT or INVSTS.
literal EMB$C_CTLRES_IMTMO = 16;        !  An immediate mode command has failed to complete within the timeout
literal EMB$K_CTLRES_IMTMO = 16;        !    period, indicating a broken or wedged controller.
literal EMB$C_CTLRES_TMO = 17;          !  No progress was made on a command during the timeout period.  The MSCP
literal EMB$K_CTLRES_TMO = 17;          !    GET COMMAND STATUS end message which determined this is included.
! 
literal EMB$C_BADRSPID = 18;            !  A message with an invalid RSPID was received by the class driver.
literal EMB$K_BADRSPID = 18;            !    The offending MSCP message is included.
! 
literal EMB$C_BVPSSP = 19;              !  Port message for BVP Storage Systems Port
literal EMB$K_BVPSSP = 19;              !  Port message for BVP Storage Systems Port
literal EMB$C_NIPM = 20;                !  Port (NI) message 
literal EMB$K_NIPM = 20;                !  Port (NI) message 
literal EMB$C_LDR_ERR = 21;             !  Media Loader error message
literal EMB$K_LDR_ERR = 21;             !  Media Loader error message
 
!*** MODULE $EMBETDEF ***
! 
!  ERROR MESSAGE ENTRY TYPE DEFINITIONS
! 
literal EMB$C_DE = 1;                   ! DEVICE ERROR 
literal EMB$K_DE = 1;                   ! DEVICE ERROR 
literal EMB$C_MC = 2;                   ! MACHINE CHECK 
literal EMB$K_MC = 2;                   ! MACHINE CHECK 
literal EMB$C_SYNERR = 3;               ! Syndrome Error
literal EMB$K_SYNERR = 3;               ! Syndrome Error
literal EMB$C_BE = 4;                   ! BUS ERROR 
literal EMB$K_BE = 4;                   ! BUS ERROR 
literal EMB$C_SA = 5;                   ! SBI ALERT 
literal EMB$K_SA = 5;                   ! SBI ALERT 
literal EMB$C_SE = 6;                   ! SOFT ECC ERROR 
literal EMB$K_SE = 6;                   ! SOFT ECC ERROR 
literal EMB$C_AW = 7;                   ! ASYNCHRONOUS WRITE ERROR 
literal EMB$K_AW = 7;                   ! ASYNCHRONOUS WRITE ERROR 
literal EMB$C_HE = 8;                   ! HARD ECC ERROR 
literal EMB$K_HE = 8;                   ! HARD ECC ERROR 
literal EMB$C_UBA = 9;                  !  11/780 Unibus Adapter error 
literal EMB$K_UBA = 9;                  !  11/780 Unibus Adapter error 
literal EMB$C_SI = 10;                  !  11/750 Fault through SBI vector 
literal EMB$K_SI = 10;                  !  11/750 Fault through SBI vector 
literal EMB$C_UE = 11;                  !  11/730 Unibus Error 
literal EMB$K_UE = 11;                  !  11/730 Unibus Error 
literal EMB$C_MBA = 12;                 !  11/780 Massbus Adapter Error 
literal EMB$K_MBA = 12;                 !  11/780 Massbus Adapter Error 
literal EMB$C_SBIA = 13;                !  11/790 SBIA error
literal EMB$K_SBIA = 13;                !  11/790 SBIA error
literal EMB$C_CRD = 14;                 !  11/790 CRD log
literal EMB$K_CRD = 14;                 !  11/790 CRD log
literal EMB$C_EMM = 15;                 !  11/790 Environmental MOnitor
literal EMB$K_EMM = 15;                 !  11/790 Environmental MOnitor
literal EMB$C_HLT = 16;                 !  11/790 Processor Error Halt
literal EMB$K_HLT = 16;                 !  11/790 Processor Error Halt
literal EMB$C_CRBT = 17;                !  11/790 Console Reboot
literal EMB$K_CRBT = 17;                !  11/790 Console Reboot
literal EMB$C_BIADPERR = 18;            !  BI ADAPTER ERROR
literal EMB$K_BIADPERR = 18;            !  BI ADAPTER ERROR
literal EMB$C_BIBUSERR = 19;            !  BI BUS ERROR
literal EMB$K_BIBUSERR = 19;            !  BI BUS ERROR
literal EMB$C_NMIFLT = 20;              !  NMI FAULT 
literal EMB$K_NMIFLT = 20;              !  NMI FAULT 
literal EMB$C_CTO = 21;                 !  Console Timeout
literal EMB$K_CTO = 21;                 !  Console Timeout
literal EMB$C_NBW = 22;                 !  NBW
literal EMB$K_NBW = 22;                 !  NBW
literal EMB$C_CACHERR = 23;             !  CACHE ERROR
literal EMB$K_CACHERR = 23;             !  CACHE ERROR
literal EMB$C_CVAX_CB = 24;             !  CVAX CACHE/BUS ERROR
literal EMB$K_CVAX_CB = 24;             !  CVAX CACHE/BUS ERROR
literal EMB$C_MEMSCAN = 25;             !  Calypso memory error found by scanning
literal EMB$K_MEMSCAN = 25;             !  Calypso memory error found by scanning
literal EMB$C_INT54 = 26;               !  Calypso SCB 54 error
literal EMB$K_INT54 = 26;               !  Calypso SCB 54 error
literal EMB$C_INT60 = 27;               !  Calypso SCB 60 error
literal EMB$K_INT60 = 27;               !  Calypso SCB 60 error
literal EMB$C_ADPERR = 28;              !  adapter error
literal EMB$K_ADPERR = 28;              !  adapter error
literal EMB$C_LASTFAIL = 29;            !  Calypso lastfail
literal EMB$K_LASTFAIL = 29;            !  Calypso lastfail
literal EMB$C_CONSOLE = 30;             !  Console entry
literal EMB$K_CONSOLE = 30;             !  Console entry
literal EMB$C_INFO = 31;                !  Informational entry
literal EMB$K_INFO = 31;                !  Informational entry
literal EMB$C_CS = 32;                  ! COLD START (IE: SYSTEM BOOT) 
literal EMB$K_CS = 32;                  ! COLD START (IE: SYSTEM BOOT) 
literal EMB$C_CLKERR = 33;              !  Clock module error
literal EMB$K_CLKERR = 33;              !  Clock module error
literal EMB$C_SCAN = 34;                !  SCAN error (eg. Aquarius)
literal EMB$K_SCAN = 34;                !  SCAN error (eg. Aquarius)
literal EMB$K_NF = 35;                  ! NEW FILE CREATED 
literal EMB$C_NF = 35;                  ! NEW FILE CREATED 
literal EMB$C_WS = 36;                  ! WARM START (IE: SYSTEM POWER RECOVERY) 
literal EMB$K_WS = 36;                  ! WARM START (IE: SYSTEM POWER RECOVERY) 
literal EMB$C_CR = 37;                  ! CRASH RE-START 
literal EMB$K_CR = 37;                  ! CRASH RE-START 
literal EMB$C_TS = 38;                  ! TIME STAMP ENTRY 
literal EMB$K_TS = 38;                  ! TIME STAMP ENTRY 
literal EMB$C_SS = 39;                  ! SYSTEM SERVICE MESSAGE 
literal EMB$K_SS = 39;                  ! SYSTEM SERVICE MESSAGE 
literal EMB$C_SBC = 40;                 ! SYSTEM BUGCHECK 
literal EMB$K_SBC = 40;                 ! SYSTEM BUGCHECK 
literal EMB$C_OM = 41;                  ! OPERATOR MESSAGE 
literal EMB$K_OM = 41;                  ! OPERATOR MESSAGE 
literal EMB$C_NM = 42;                  ! NETWORK MESSAGE 
literal EMB$K_NM = 42;                  ! NETWORK MESSAGE 
literal EMB$C_CONFIG = 43;              ! CONFIGURATION entry
literal EMB$K_CONFIG = 43;              ! CONFIGURATION entry
literal EMB$C_POLL_ERR = 44;            ! Polled error entry
literal EMB$K_POLL_ERR = 44;            ! Polled error entry
literal EMB$C_VM = 64;                  ! VOLUME MOUNT 
literal EMB$K_VM = 64;                  ! VOLUME MOUNT 
literal EMB$C_VD = 65;                  ! VOLUME DISMOUNT 
literal EMB$K_VD = 65;                  ! VOLUME DISMOUNT 
literal EMB$C_DT = 96;                  ! DEVICE TIMEOUT 
literal EMB$K_DT = 96;                  ! DEVICE TIMEOUT 
literal EMB$C_UI = 97;                  ! UNDEFINED INTERRUPT 
literal EMB$K_UI = 97;                  ! UNDEFINED INTERRUPT 
literal EMB$C_DA = 98;                  !  Asynchronous Device Attention 
literal EMB$K_DA = 98;                  !  Asynchronous Device Attention 
literal EMB$C_SP = 99;                  !  Software Parameters 
literal EMB$K_SP = 99;                  !  Software Parameters 
literal EMB$C_LM = 100;                 !  Logged Message 
literal EMB$K_LM = 100;                 !  Logged Message 
literal EMB$C_LOGMSCP = 101;            !  Logged MSCP Message
literal EMB$K_LOGMSCP = 101;            !  Logged MSCP Message 
literal EMB$C_UBC = 112;                ! USER BUGCHECK 
literal EMB$K_UBC = 112;                ! USER BUGCHECK 
 
!*** MODULE $ENBDEF ***
! +
! 
!  Generalized Event Notification Definitions
! 
!  Event Notification request Block
! 
!  This block is used by the $SETEVTAST system service
!  to request event notification cluster-wide.
! 
! -
literal ENB$M_LOCAL = 1;
literal ENB$M_RSVD = 2;
literal ENB$M_IMAGE = 4;
literal ENB$M_RSVD2 = 24;
literal ENB$M_WILDCARD = 32;
literal ENB$K_LENGTH = 76;              !  LENGTH OF BLOCK
literal ENB$C_LENGTH = 76;              !  LENGTH OF BLOCK
literal ENB$S_ENBDEF = 76;
macro ENB$L_QFL = 0,0,32,0 %;           !  QUEUE FORWARD LINK     
macro ENB$L_QBL = 4,0,32,0 %;           !  QUEUE BACKWARD LINK    
macro ENB$W_SIZE = 8,0,16,0 %;          !  STRUCTURE SIZE IN BYTES
macro ENB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE    
macro ENB$B_SUBTYPE = 11,0,8,0 %;       !  STRUCTURE SUBTYPE CODE
macro ENB$L_FLAGS = 12,0,32,0 %;        !  FLAGS
macro ENB$V_LOCAL = 12,0,1,0 %;         !   LOCAL NODE
macro ENB$V_IMAGE = 12,2,1,0 %;         !   IMAGE
macro ENB$V_WILDCARD = 12,5,1,0 %;
macro ENB$T_EVENT_NAME = 16,0,0,0 %;
literal ENB$S_EVENT_NAME = 32;          !  EVENT NAME
macro ENB$L_CSID = 48,0,32,0 %;         !  CLUSTER SYSTEM ID
macro ENB$L_EPID = 52,0,32,0 %;         !  PROCESS EXTENDED ID
macro ENB$B_EVT_ACMODE = 56,0,8,0 %;    !  EVENT AST ROUTINE ACCESS MODE
macro ENB$B_AST_ACMODE = 57,0,8,0 %;    !  COMPLETION AST ROUTINE ACCESS MODE
macro ENB$W_EVTFAC = 58,0,16,0 %;       !  FACILITY CODE
macro ENB$L_EFN = 60,0,32,0 %;          !  COMPLETION EFN
macro ENB$L_IOSB = 64,0,32,0 %;         !  COMPLETION IOSB
macro ENB$L_ASTADR = 68,0,32,0 %;       !  COMPLETION AST ROUTINE ADDRESS
macro ENB$L_ASTPRM = 72,0,32,0 %;       !  COMPLETION AST ROUTINE PARAMETER
 
!*** MODULE $ENDDEF ***
! +
! 
!  Generalized Event Notification Definitions
! 
!  Event Notification Database Block
! 
!  This block is the first level structure of the event
!  notification database.  It contains arrays of Signature
!  List Block (SLB) array pointers.
! 
! -
literal END$C_FIXED = 32;
literal END$C_WILD = 32;
literal END$C_FC_WILD = 32;
literal END$K_LENGTH = 428;             !  LENGTH OF BLOCK
literal END$C_LENGTH = 428;             !  LENGTH OF BLOCK
literal END$S_ENDDEF = 428;
macro END$L_QFL = 0,0,32,0 %;           !  QUEUE FORWARD LINK 
macro END$L_QBL = 4,0,32,0 %;           !  QUEUE BACKWARD LINK
macro END$W_SIZE = 8,0,16,0 %;          !  STRUCTURE SIZE IN BYTES
macro END$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE
macro END$B_SUBTYPE = 11,0,8,0 %;       !  STRUCTURE SUBTYPE CODE
macro END$L_FIXED = 12,0,0,0 %;
literal END$S_FIXED = 128;              !  FIXED LENGTH STRING SIGNATURE POINTERS
macro END$L_WILD = 140,0,0,0 %;
literal END$S_WILD = 128;               !  WILD CARD STRING SIGNATURE POINTERS
macro END$L_FC_WILD = 268,0,0,0 %;
literal END$S_FC_WILD = 128;            !  FIRST CHARACTER WILD SIGNATURE PNTRS
!  LISTHEADS FOR REQUESTING ALL EVENTS
macro END$Q_ALL_KERNEL = 396,0,0,0 %;
literal END$S_ALL_KERNEL = 8;           !  ... IN KERNEL MODE
macro END$Q_ALL_EXEC = 404,0,0,0 %;
literal END$S_ALL_EXEC = 8;             !  ... IN EXECUTIVE MODE
macro END$Q_ALL_SUPER = 412,0,0,0 %;
literal END$S_ALL_SUPER = 8;            !  ... IN SUPERVISOR MODE
macro END$Q_ALL_USER = 420,0,0,0 %;
literal END$S_ALL_USER = 8;             !  ... IN USER MODE
 
!*** MODULE $EO1DEF ***
! +
!  EOF1 ANSI MAGNETIC TAPE LABEL
!  THIS IS THE FIRST LABEL IN FILE TRAILER LABEL SET.  IT IS EQUIVALENT TO
!  HDR1 EXCEPT FOR THE FOLLOWING FIELDS.
! -
literal EO1$S_EO1DEF = 60;
macro EO1$L_EO1LID = 0,0,32,0 %;        ! LABEL IDENTIFIER AND NUMBER 'EOF1' 
macro EO1$T_BLOCKCNT = 54,0,0,0 %;
literal EO1$S_BLOCKCNT = 6;             ! BLOCK COUNT 
 
!*** MODULE $EO2DEF ***
! +
!  EOF2 ANSI MAGNETIC TAPE LABEL
!  THIS IS THE SECOND LABEL IN THE FILE TRAILER LABEL SET.  IT IS EQUIVALENT
!  TO HDR2 EXCEPT FOR THE FOLLOWING FIELDS.
! -
literal EO2$S_EO2DEF = 4;
macro EO2$L_EO2LID = 0,0,32,0 %;        ! LABEL IDENTIFIER AND NUMBER 'EOF2' 
 
!*** MODULE $EO3DEF ***
! +
!  EOF3 ANSI MAGNETIC TAPE LABEL
!  THIS IS THE THIRD LABEL IN THE FILE TRAILER LABEL SET.  IT IS EQUIVALENT
!  TO HDR3 EXCEPT FOR THE FOLLOWING FIELDS.
! -
literal EO3$S_EO3DEF = 4;
macro EO3$L_EO3LID = 0,0,32,0 %;        ! LABEL IDENTIFIER AND NUMBER 'EOF3' 
 
!*** MODULE $EO4DEF ***
! +
!  EOF4 ANSI MAGNETIC TAPE LABEL
!  THIS IS THE FOURTH LABEL IN THE FILE TRAILER LABEL SET.  IT IS EQUIVALENT
!  TO HDR4 EXCEPT FOR THE FOLLOWING FIELDS.
! -
literal EO4$S_EO4DEF = 4;
macro EO4$L_EO4LID = 0,0,32,0 %;        ! LABEL IDENTIFIER AND NUMBER 'EOF4' 
 
!*** MODULE $ERBDEF ***
! 
!  ERROR LOGGING MESSAGE RECOVERY BLOCK
! 
literal ERB$C_HDR_LENGTH = 24;          !  0th BUFF. STARTS HERE
literal ERB$K_HDR_LENGTH = 24;          !  0th BUFF. STARTS HERE
literal ERB$S_ERBDEF = 24;
macro ERB$L_FILLER0 = 0,0,32,0 %;       !  POSSIBLE FLNK
macro ERB$L_FILLER4 = 4,0,32,0 %;       !  POSSIBLE BLNK
macro ERB$W_BLOCK_SIZE = 8,0,16,0 %;    !  RETURNED BY ALLOCATION
macro ERB$B_BUFPAGES = 10,0,8,0 %;      !  V5.1 and + : PAGES / BUFFER
macro ERB$B_FILLERB = 11,0,8,0 %;       !  UNUSED
macro ERB$L_ALLOCATED = 12,0,32,0 %;    !  BYTES ALLOC'D FOR THIS BLOCK
macro ERB$L_BUFCNT = 16,0,32,0 %;       !  # BUFFERS, NOT INCL CRASH BUF
macro ERB$W_HEAD = 20,0,16,0 %;         !  RING HEAD INDEX AT CRASH
macro ERB$W_TAIL = 22,0,16,0 %;         !  RING TAIL AT CRASH
 
!*** MODULE $ERLDEF ***
! 
!  ERROR LOG ALLOCATION BUFFER HEADER
! 
literal ERL$K_LENGTH = 12;              ! LENGTH OF ALLOCATION BUFFER HEADER 
literal ERL$C_LENGTH = 12;              ! LENGTH OF ALLOCATION BUFFER HEADER 
literal ERL$M_LOCK = 1;
literal ERL$M_TIMER = 2;
literal ERL$S_ERLDEF = 12;
macro ERL$B_BUSY = 0,0,8,0 %;           ! NUMBER OF BUSY MESSAGES IN BUFFER 
macro ERL$B_MSGCNT = 1,0,8,0 %;         ! NUMBER OF COMPLETED MESSAGES IN BUFFER 
macro ERL$B_BUFIND = 2,0,8,0 %;         ! BUFFER INDICATOR OF RESPECTIVE BUFFER 
macro ERL$B_FLAGS = 3,0,8,0 %;          ! BUFFER CONTROL FLAGS 
macro ERL$L_NEXT = 4,0,32,0 %;          ! ADDRESS OF NEXT AVAILABLE SPACE IN BUFFER 
macro ERL$L_END = 8,0,32,0 %;           ! ADDRESS OF END OF BUFFER + 1 
macro ERL$V_LOCK = 8,0,1,0 %;           ! BUFFER ALLOCATION INTERLOCK 
macro ERL$V_TIMER = 8,1,1,0 %;          ! TIMER ACTIVE 
 
!*** MODULE $ERLMBXDEF ***
! 
!  ERROR LOG MAILBOX SYSTEM DATA CELL STRUCTURE AND MAILBOX COUNT
! 
literal ERL$K_MAILBOX_COUNT = 5;        !  NUMBER OF MAILBOXES
literal ERL$C_MAILBOX_COUNT = 5;        !  NUMBER OF MAILBOXES
literal ERL$K_MBX_LENGTH = 8;           !  LENGTH OF STRUCTURE
literal ERL$C_MBX_LENGTH = 8;           !  LENGTH OF STRUCTURE
literal ERL$S_ERLMBX = 8;
macro ERL$W_MBX_UNIT = 0,0,16,0 %;      !  MAILBOX UNIT NUMBER
macro ERL$W_MBX_FILLER_0 = 2,0,16,0 %;
macro ERL$L_MBX_PID = 4,0,32,0 %;       !  MBX OWNER PID
 
!*** MODULE $ERFMBXDEF ***
! 
!  COMPLEMENTARY STRUCTURES FOR ERRFMT DIAGNOSTIC MAILBOX CONTROL
! 
literal ERF$K_MBX_LENGTH = 6;           !  LENGTH OF STRUCTURE
literal ERF$C_MBX_LENGTH = 6;           !  LENGTH OF STRUCTURE
literal ERF$S_ERFMBX = 6;
macro ERF$W_MBX_CHANNEL = 0,0,16,0 %;   !  MBX CHANNEL NUMBER
macro ERF$W_MBX_SIZE = 2,0,16,0 %;      !  MBX SIZE
macro ERF$W_MBX_UNIT = 4,0,16,0 %;      !  MBX UNIT NUMBER
 
!*** MODULE $EVTDEF ***
! 
!  EVENT CODE DEFINITIONS
! 
literal EVT$_AST = 0;
literal EVT$_EVENT = 1;
literal EVT$_CEF = 2;
literal EVT$_LEFO = 3;
literal EVT$_FPGA = 4;
literal EVT$_WAKE = 5;
literal EVT$_RESUME = 6;
literal EVT$_PFCOM = 7;
literal EVT$_SETPRI = 8;
literal EVT$_SWPOUT = 9;
literal EVT$_SWPOUTE = 10;
literal EVT$_MAXEVT = 11;
literal EVT$_COLPGA = 0;
 
!*** MODULE $EWDATADEF ***
! +
!  $EWDATADEF - Symbolic offsets within the exec-writable page
! 
!  An exec-writable page is allocated when the system is bootstrapped.
!  The fields within this page are being defined below. These data cells
!  were originally defined in the system (i.e. in SYS.EXE) with the form:
! 
! 	PMS$xL_cellname. 
! 
!  Now that this cell resides in a seperate exec-writable page that is 
!  pointed by a cell in the system's base image, the symbolic offset from 
!  the base of the exec-writable page to this cell has the form:
! 
! 	EW_PMS$xL_cellname.
! 
! 
!  NOTE: The PMS Arrays (COUNT, MCNT, WRITE, CACHE, CPU, PFA) must immediately
!  follow FCP and FCP2 fields.
! 
! -
literal EW$K_LENGTH = 378;
literal EW$C_LENGTH = 378;
literal EW$S_EWDATADEF = 378;
macro EW$R_PMSEWDATA = 0,0,0,0 %;
literal EW_PMS$S_PMSEWDATA = 376;
macro EW_PMS$GL_FCP = 0,0,0,0 %;        !  start of the FCP counters
macro EW_PMS$GL_FCP2 = 0,0,0,0 %;       !  start of the FCP2 counters
macro EW_PMS$AL_COUNT = 0,0,0,0 %;
literal EW_PMS$S_COUNT = 40;            !  number of operations
macro EW_PMS$AL_MCNT = 40,0,0,0 %;
literal EW_PMS$S_MCNT = 40;             !  number of modifiers
macro EW_PMS$AL_READ = 80,0,0,0 %;
literal EW_PMS$S_READ = 40;             !  number of disk reads
macro EW_PMS$AL_WRITE = 120,0,0,0 %;
literal EW_PMS$S_WRITE = 40;            !  number of disk writes
macro EW_PMS$AL_CACHE = 160,0,0,0 %;
literal EW_PMS$S_CACHE = 40;            !  number of cache hits
macro EW_PMS$AL_CPU = 200,0,0,0 %;
literal EW_PMS$S_CPU = 40;              !  accumulated cpu times
macro EW_PMS$AL_PFA = 240,0,0,0 %;
literal EW_PMS$S_PFA = 40;              !  accumulated page faults
macro EW_PMS$GL_TURN = 280,0,32,0 %;    !  number of window turns
macro EW_PMS$GL_DIRHIT = 284,0,32,0 %;  !  count of directory LRU hits
macro EW_PMS$GL_DIRMISS = 288,0,32,0 %; !  count of directory LRU misses
macro EW_PMS$GL_QUOHIT = 292,0,32,0 %;  !  count of quota cache hits
macro EW_PMS$GL_QUOMISS = 296,0,32,0 %; !  count of quota cache misses
macro EW_PMS$GL_FIDHIT = 300,0,32,0 %;  !  count of file ID cache hits
macro EW_PMS$GL_FIDMISS = 304,0,32,0 %; !  count of file ID cache misses
macro EW_PMS$GL_EXTHIT = 308,0,32,0 %;  !  count of extent cache hits
macro EW_PMS$GL_EXTMISS = 312,0,32,0 %; !  count of extent cache misses
macro EW_PMS$GL_FILHDR_HIT = 316,0,32,0 %; !  count of file header cache hits
macro EW_PMS$GL_FILHDR_MISS = 320,0,32,0 %; !  count of file header cache misses
macro EW_PMS$GL_DIRDATA_HIT = 324,0,32,0 %; !  count of directory data block hits
macro EW_PMS$GL_DIRDATA_MISS = 328,0,32,0 %; !  count of directory data block misses
macro EW_PMS$GL_STORAGMAP_HIT = 332,0,32,0 %; !  count of storage bit map cache hits
macro EW_PMS$GL_STORAGMAP_MISS = 336,0,32,0 %; !  count of storage bit map cache misses
macro EW_PMS$GL_OPEN = 340,0,32,0 %;    !  number of currently open files
macro EW_PMS$GL_OPENS = 344,0,32,0 %;   !  total count of opens
macro EW_PMS$GL_ERASEIO = 348,0,32,0 %; !  total count of erase QIO's issued
macro EW_PMS$GL_VOLLCK = 352,0,32,0 %;  !  count of XQP volume synch locks
macro EW_PMS$GL_VOLWAIT = 356,0,32,0 %; !  # of times XQP had to wait for a 
!  volume synch lock
macro EW_PMS$GL_SYNCHLCK = 360,0,32,0 %; !  count of XQP directory and 
!  file synch locks
macro EW_PMS$GL_SYNCHWAIT = 364,0,32,0 %; !  # of times XQP had to wait for a 
!  directory or file synch lock
macro EW_PMS$GL_ACCLCK = 368,0,32,0 %;  !  count of XQP access locks
macro EW_PMS$GL_XQPCACHEWAIT = 372,0,32,0 %; !  # of times XQP had to wait for free
!  space in a cache
macro EW$R_RMSEWDATA = 376,0,16,0 %;
literal EW_RMS$S_RMSEWDATA = 2;
macro EW_RMS$GW_GBLBUFQUO = 376,0,16,0 %; !  current global buffer quota remaining
 
!*** MODULE $F11BDEF ***
! +
!  F11B - System wide F11BXQP structures.
! 
!  This structure is actually part of the XQP impure area and
!  is pointed to by CTL$GL_F11BXQP.  That cell is initialized
!  during process creation by the XQP initialization code.
! 
! -
literal F11B$S_F11BDEF = 32;
macro F11B$Q_XQPQUEUE = 0,0,0,0 %;
literal F11B$S_XQPQUEUE = 8;            !  XQP per-process queue.
macro F11B$L_DISPATCH = 8,0,32,0 %;     !  Address of XQP dispatch routine.
macro F11B$L_CODESIZE = 12,0,32,0 %;    !  Size of XQP code in bytes.
macro F11B$L_CODEBASE = 16,0,32,0 %;    !  Base address of XQP code.
macro F11B$L_IMPSIZE = 20,0,32,0 %;     !  Size of impure area in bytes.
macro F11B$L_IMPBASE = 24,0,32,0 %;     !  Base address of XQP impure area.
macro F11B$L_PREV_XQP = 28,0,32,0 %;    !  Pointer to previous replaced XQP
 
!*** MODULE $F11BCDEF ***
! +
!  F11BC - Files 11 Block Cache
! 
!  Header area which describes block cache used by F11BXQP.
! 
! -
literal F11BC$K_NUM_POOLS = 4;          !  Number of buffer pools.
literal F11BC$S_F11BCDEF = 208;
macro F11BC$L_BUFBASE = 0,0,32,0 %;     !  Base address of buffer area.
macro F11BC$L_BUFSIZE = 4,0,32,0 %;     !  Size of buffer area in bytes.
macro F11BC$W_SIZE = 8,0,16,0 %;        !  Standard size field.
macro F11BC$B_TYPE = 10,0,8,0 %;        !  Standard type field.
macro F11BC$B_SUBTYPE = 11,0,8,0 %;     !  Standard subtype field.
macro F11BC$L_REALSIZE = 12,0,32,0 %;   !  Structure size as a longword.
macro F11BC$L_LBNHSHBAS = 16,0,32,0 %;  !  Base of LBN hash table.
macro F11BC$W_LBNHSHCNT = 20,0,16,0 %;  !  Count of entries in LBN hash tbl.
macro F11BC$W_BFRCNT = 22,0,16,0 %;     !  Total buffer count.
macro F11BC$L_BFRDBAS = 24,0,32,0 %;    !  Buffer descriptor base address.
macro F11BC$L_BFRLDBAS = 28,0,32,0 %;   !  Buffer lock descriptor base addr.
macro F11BC$L_BLHSHBAS = 32,0,32,0 %;   !  Base addr of buffer lock hash tbl.
macro F11BC$W_BLHSHCNT = 36,0,16,0 %;   !  Num entries in buff lock hash tbl.
macro F11BC$W_FREEBFRL = 38,0,16,0 %;   !  First free buffer lock block.
macro F11BC$Q_POOL_LRU = 40,0,0,0 %;
literal F11BC$S_POOL_LRU = 32;          !  Per pool LRU listhead.
macro F11BC$Q_POOL_WAITQ = 72,0,0,0 %;
literal F11BC$S_POOL_WAITQ = 32;        !  Per pool cache wait listhead.
macro F11BC$W_WAITCNT = 104,0,0,1 %;
literal F11BC$S_WAITCNT = 8;            !  Count of waiters per pool.
macro F11BC$L_POOLAVAIL = 112,0,0,1 %;
literal F11BC$S_POOLAVAIL = 16;         !  Available buffers per pool.
macro F11BC$W_POOLCNT = 128,0,0,1 %;
literal F11BC$S_POOLCNT = 8;            !  Count of buffers per pool.
macro F11BC$L_AMBIGQFL = 136,0,32,0 %;  !  Ambiguity queue forward link.
macro F11BC$L_AMBIGQBL = 140,0,32,0 %;  !  Ambiguity queue back link.
! 
!  Cache performance counters.
! 
macro F11BC$L_PROCESS_HITS = 144,0,32,0 %; !  In-process buffer hits.
macro F11BC$L_VALID_HITS = 148,0,32,0 %; !  Valid buffer cache hits.
macro F11BC$L_INVALID_HITS = 152,0,32,0 %; !  Buffer found but invalid contents.
macro F11BC$L_MISSES = 156,0,32,0 %;    !  Buffer not in cache at all.
macro F11BC$L_DISK_READS = 160,0,32,0 %; !  Buffer reads from disk.
macro F11BC$L_DISK_WRITES = 164,0,32,0 %; !  Buffer writes to disk.
macro F11BC$L_CACHE_SERIAL = 168,0,32,0 %; !  Cache serialization calls.
macro F11BC$L_CACHE_STALLS = 172,0,32,0 %; !  Cache serialization stalls.
macro F11BC$L_BUFFER_STALLS = 176,0,32,0 %; !  Stalls for lack of buffers.
macro F11BC$T_CACHENAME = 180,0,0,0 %;
literal F11BC$S_CACHENAME = 24;         !  Name of this cache (display only).
macro F11BC$L_LOG_BUFFER = 204,0,32,0 %; !  Pointer to activity log buffer
! 
!  Buffer descriptors.
! 
literal BFRD$M_DIRTY = 4;
literal BFRD$M_VALID = 8;
literal BFRD$S_BFRDDEF = 36;
macro BFRD$L_QFL = 0,0,32,0 %;          !  Queue forward link.
macro BFRD$L_QBL = 4,0,32,0 %;          !  Queue back link.
macro BFRD$L_LBN = 8,0,32,0 %;          !  LBN of buffer.
macro BFRD$L_UCB = 12,0,32,0 %;         !  UCB of buffer.
macro BFRD$L_LOCKBASIS = 16,0,32,0 %;   !  Unique file identifier.
macro BFRD$L_SEQNUM = 20,0,32,0 %;      !  Buffer validation sequence number.
macro BFRD$B_FLAGS = 24,0,8,0 %;        !  Status flags.
macro BFRD$V_POOL = 24,0,2,0 %;
literal BFRD$S_POOL = 2;                !  Pool number of this buffer.
macro BFRD$V_DIRTY = 24,2,1,0 %;        !  Buffer has been modified.
macro BFRD$V_VALID = 24,3,1,0 %;        !  Buffer has been read from disk.
macro BFRD$B_BTYPE = 25,0,8,0 %;        !  Buffer type.
macro BFRD$W_CURPID = 26,0,16,0 %;      !  Index of current process.
macro BFRD$W_NXTBFRD = 28,0,16,0 %;     !  Index of next BFRD (hash chain).
macro BFRD$W_BFRL = 30,0,16,0 %;        !  Index to buffer lock.
macro BFRD$W_SAME_BFRL = 32,0,16,0 %;   !  Index to next BFRD under same BFRL
! 
!  Buffer lock descriptor blocks.
! 
literal BFRL$S_BFRLDEF = 20;
macro BFRL$W_NXTBFRL = 0,0,16,0 %;      !  Index to next BFRL in list.
macro BFRL$W_BFRD = 2,0,16,0 %;         !  Index to first BFRD
macro BFRL$W_REFCNT = 4,0,16,0 %;       !  Number of buffers backed by this lock.
macro BFRL$L_LKID = 8,0,32,0 %;         !  Lock ID of buffer lock.
macro BFRL$L_LCKBASIS = 12,0,32,0 %;    !  Unique file identifier.
macro BFRL$L_PARLKID = 16,0,32,0 %;     !  Unique volume set identifier.
 
!*** MODULE $FBICDEF ***
! ++
! 	Define FBIC offsets and registers for Firefox systems
! --
literal FBIC$L_MODTYPE = 508;           ! Module type
literal FBIC$L_BUSCSR = 504;            ! MBUS error status
literal FBIC$L_BUSCTL = 500;            ! MBUS error control signal log
literal FBIC$L_BUSADR = 496;            ! MBUS error address signal log
literal FBIC$L_BUSDAT = 492;            ! MBUS error data signal log
literal FBIC$L_FBICSR = 488;            ! FBIC CSR
literal FBIC$L_RANGE = 484;             ! I/O Space range deco=e
literal FBIC$L_IPDVINT = 480;           ! IP/Device interrupt
literal FBIC$L_WHAMI = 476;             ! Unique software ID
literal FBIC$L_CPUID = 472;             ! Unique hardware ID
literal FBIC$L_IADR1 = 468;             ! Interlock 1 address
literal FBIC$L_IADR2 = 464;             ! Interlock 2 address
literal FBIC$L_SAVGPR = 452;            ! Scratch register
literal FMDC$L_FMDCSR = 488;            ! FMDC CSR
literal FMDC$L_BASEADDR = 484;          ! Memory space base address
literal FMDC$L_ECCADDR0 = 480;          ! ECC error address (QW0)
literal FMDC$L_ECCADDR1 = 476;          ! ECC error address (QW1)
literal FMDC$L_ECCSYND0 = 472;          ! ECC error status (QW0)
literal FMDC$L_ECCSYND1 = 468;          ! ECC error status (QW1)
literal FMDC$L_MSECTERR = 464;          ! Memory section
literal FMDC$L_MBUSSIG = 460;           ! MBUS control signature
literal FMDC$L_DRAMSIG = 456;           ! DRAM control signature
literal FMDC$L_SELFSIG = 452;           ! Self test signature
literal FMDC$L_LEDLATCH = 448;          ! Diagnostic LED latch
literal FBIC$S_MODTYPE = 4;
macro FBIC$V_MODTYPE_CLASS = 0,0,8,0 %;
literal FBIC$S_MODTYPE_CLASS = 8;       !  Class of module
macro FBIC$V_MODTYPE_SUBCLASS = 0,8,8,0 %;
literal FBIC$S_MODTYPE_SUBCLASS = 8;    !  Low bit echoes TYPDUAL
macro FBIC$V_MODTYPE_INTERFACE = 0,16,8,0 %;
literal FBIC$S_MODTYPE_INTERFACE = 8;   !  FBIC interface  == 1
macro FBIC$V_MODTYPE_REVISION = 0,24,8,0 %;
literal FBIC$S_MODTYPE_REVISION = 8;    !  FBIC hardware revision
literal KA60$K_MODTYPE_FBIC = 1;        !  1 FBIC interface
literal KA60$K_MODTYPE_FMDC = 2;        !  2 FMDC interface
literal KA60$K_MODTYPE_FMCM = 254;
literal FBIC$M_BUSCSR_DBLE = 65536;
literal FBIC$M_BUSCSR_SERR = 131072;
literal FBIC$M_BUSCSR_CTPE = 262144;
literal FBIC$M_BUSCSR_CDPE = 524288;
literal FBIC$M_BUSCSR_CTO = 1048576;
literal FBIC$M_BUSCSR_NOS = 2097152;
literal FBIC$M_BUSCSR_MTO = 4194304;
literal FBIC$M_BUSCSR_ILCK = 8388608;
literal FBIC$M_BUSCSR_MCPE = 16777216;
literal FBIC$M_BUSCSR_MSPE = 33554432;
literal FBIC$M_BUSCSR_MDPE = 67108864;
literal FBIC$M_BUSCSR_MTPE = 134217728;
literal FBIC$M_BUSCSR_IDAT = 268435456;
literal FBIC$M_BUSCSR_ICMD = 536870912;
literal FBIC$M_BUSCSR_ARB = 1073741824;
literal FBIC$M_BUSCSR_FRZN = -2147483648;
literal FBIC$S_BUSCSR = 4;
macro FBIC$V_BUSCSR_DBLE = 0,16,1,0 %;  ! MBUS double error bit
macro FBIC$V_BUSCSR_SERR = 0,17,1,0 %;  ! SERR
macro FBIC$V_BUSCSR_CTPE = 0,18,1,0 %;  ! CDAL tag store parity error
macro FBIC$V_BUSCSR_CDPE = 0,19,1,0 %;  ! CDAL parity error
macro FBIC$V_BUSCSR_CTO = 0,20,1,0 %;   ! CDAL timeout
macro FBIC$V_BUSCSR_NOS = 0,21,1,0 %;   ! MBUS no slave response
macro FBIC$V_BUSCSR_MTO = 0,22,1,0 %;   ! MBUS slave timeout
macro FBIC$V_BUSCSR_ILCK = 0,23,1,0 %;  ! MBUS interlock violation
macro FBIC$V_BUSCSR_MCPE = 0,24,1,0 %;  ! MBUS MCMD parity error
macro FBIC$V_BUSCSR_MSPE = 0,25,1,0 %;  ! MBUS MSTATUS parity error
macro FBIC$V_BUSCSR_MDPE = 0,26,1,0 %;  ! MBUS MDAL parity error
macro FBIC$V_BUSCSR_MTPE = 0,27,1,0 %;  ! MBUS tag parity error
macro FBIC$V_BUSCSR_IDAT = 0,28,1,0 %;  ! MBUS invalid data supplied
macro FBIC$V_BUSCSR_ICMD = 0,29,1,0 %;  ! MBUS invalid MCMD encoding
macro FBIC$V_BUSCSR_ARB = 0,30,1,0 %;   ! MBUS arbitration error
macro FBIC$V_BUSCSR_FRZN = 0,31,1,0 %;  ! MBUS error logging frozen
literal FBIC$M_BUSCTL_MBRM = 127;
literal FBIC$M_BUSCTL_MBRP = 128;
literal FBIC$M_BUSCTL_MBRQ = 256;
literal FBIC$M_BUSCTL_MCMD = 7680;
literal FBIC$M_BUSCTL_MCPAR = 8192;
literal FBIC$M_BUSCTL_MSTATUS = 49152;
literal FBIC$M_BUSCTL_MSPAR = 65536;
literal FBIC$M_BUSCTL_MDPAR = 131072;
literal FBIC$M_BUSCTL_MBUSY = 262144;
literal FBIC$M_BUSCTL_MSHARED = 524288;
literal FBIC$M_BUSCTL_MDATINV = 1048576;
literal FBIC$M_BUSCTL_MABORT = 2097152;
literal FBIC$M_BUSCTL_MHALT = 4194304;
literal FBIC$M_BUSCTL_PHASE = 58720256;
literal FBIC$M_BUSCTL_SLAVE = 67108864;
literal FBIC$M_BUSCTL_MASTER = 134217728;
literal FBIC$M_BUSCTL_SVDMCMD = -268435456;
literal FBIC$S_BUSCTL = 4;
macro FBIC$V_BUSCTL_MBRM = 0,0,7,0 %;
literal FBIC$S_BUSCTL_MBRM = 7;         !  MBRM signals
macro FBIC$V_BUSCTL_MBRP = 0,7,1,0 %;   !  MBRP signal
macro FBIC$V_BUSCTL_MBRQ = 0,8,1,0 %;   !  MBRQ signal
macro FBIC$V_BUSCTL_MCMD = 0,9,4,0 %;
literal FBIC$S_BUSCTL_MCMD = 4;         !  MCMD signals
macro FBIC$V_BUSCTL_MCPAR = 0,13,1,0 %; !  MCPAR signal
macro FBIC$V_BUSCTL_MSTATUS = 0,14,2,0 %;
literal FBIC$S_BUSCTL_MSTATUS = 2;      !  MSTATUS signal
macro FBIC$V_BUSCTL_MSPAR = 0,16,1,0 %; !  MSPAR
macro FBIC$V_BUSCTL_MDPAR = 0,17,1,0 %; !  MDPAR
macro FBIC$V_BUSCTL_MBUSY = 0,18,1,0 %; !  MBUSY
macro FBIC$V_BUSCTL_MSHARED = 0,19,1,0 %; !  MSHARED
macro FBIC$V_BUSCTL_MDATINV = 0,20,1,0 %; !  MDATINV
macro FBIC$V_BUSCTL_MABORT = 0,21,1,0 %; !  MABORT
macro FBIC$V_BUSCTL_MHALT = 0,22,1,0 %; !  MHALT
macro FBIC$V_BUSCTL_PHASE = 0,23,3,0 %;
literal FBIC$S_BUSCTL_PHASE = 3;        !  BUS PHASE
macro FBIC$V_BUSCTL_SLAVE = 0,26,1,0 %; !  SLAVE
macro FBIC$V_BUSCTL_MASTER = 0,27,1,0 %; !  MASTER
macro FBIC$V_BUSCTL_SVDMCMD = 0,28,4,0 %;
literal FBIC$S_BUSCTL_SVDMCMD = 4;      !  MCMD signal
literal FBIC$M_FBICSR_CDPE = 1;
literal FBIC$M_FBICSR_TSTFNC = 62;
literal FBIC$M_FBICSR_HALTEN = 128;
literal FBIC$M_FBICSR_LEDS = 16128;
literal FBIC$M_FBICSR_IRQC2M = 983040;
literal FBIC$M_FBICSR_IRQEN = 15728640;
literal FBIC$M_FBICSR_RESET = 16777216;
literal FBIC$M_FBICSR_HALTCPU = 33554432;
literal FBIC$M_FBICSR_EXCAEN = 67108864;
literal FBIC$M_FBICSR_CMISS = 134217728;
literal FBIC$M_FBICSR_MFMD = -1073741824;
literal FBIC$S_FBICSR = 4;
macro FBIC$V_FBICSR_CDPE = 0,0,1,0 %;   ! CBUS parity check enable
macro FBIC$V_FBICSR_TSTFNC = 0,1,5,0 %;
literal FBIC$S_FBICSR_TSTFNC = 5;       ! Diagnostic test function
macro FBIC$V_FBICSR_HALTEN = 0,7,1,0 %; ! Enable CPU halts
macro FBIC$V_FBICSR_LEDS = 0,8,6,0 %;
literal FBIC$S_FBICSR_LEDS = 6;         ! FBIC LED output
macro FBIC$V_FBICSR_IRQC2M = 0,16,4,0 %;
literal FBIC$S_FBICSR_IRQC2M = 4;       ! Interrupt request direction
macro FBIC$V_FBICSR_IRQEN = 0,20,4,0 %;
literal FBIC$S_FBICSR_IRQEN = 4;        ! Interrupt request enable
macro FBIC$V_FBICSR_RESET = 0,24,1,0 %; ! CBUS RESET
macro FBIC$V_FBICSR_HALTCPU = 0,25,1,0 %; ! CBUS halt control
macro FBIC$V_FBICSR_EXCAEN = 0,26,1,0 %; ! External cache enable
macro FBIC$V_FBICSR_CMISS = 0,27,1,0 %; ! CBUS cache miss occurred
macro FBIC$V_FBICSR_MFMD = 0,30,2,0 %;
literal FBIC$S_FBICSR_MFMD = 2;         ! Manufacturing mode
literal FBIC$M_RANGE_MASK = 32767;
literal FBIC$M_RANGE_ENABLE = 32768;
literal FBIC$M_RANGE_MATCH = -65536;
literal FBIC$S_RANGE = 4;
macro FBIC$V_RANGE_MASK = 0,0,15,0 %;
literal FBIC$S_RANGE_MASK = 15;         ! I/O space address range mask
macro FBIC$V_RANGE_ENABLE = 0,15,1,0 %; ! I/O space address range enable
macro FBIC$V_RANGE_MATCH = 0,16,16,0 %;
literal FBIC$S_RANGE_MATCH = 16;        ! I/O space address range match
literal FBIC$M_IPDVINT_VECTOR = 65535;
literal FBIC$M_IPDVINT_DEVUNIT = 65536;
literal FBIC$M_IPDVINT_IPUNIT = 131072;
literal FBIC$M_IPDVINT_IPL14 = 16777216;
literal FBIC$M_IPDVINT_IPL15 = 33554432;
literal FBIC$M_IPDVINT_IPL16 = 67108864;
literal FBIC$M_IPDVINT_IPL17 = 134217728;
literal FBIC$S_IPDVINT = 4;
macro FBIC$V_IPDVINT_VECTOR = 0,0,16,0 %;
literal FBIC$S_IPDVINT_VECTOR = 16;     ! Interrupt vector
macro FBIC$V_IPDVINT_DEVUNIT = 0,16,1,0 %; ! Device interrupt unit
macro FBIC$V_IPDVINT_IPUNIT = 0,17,1,0 %; ! I/P interrupt unit
macro FBIC$V_IPDVINT_IPL14 = 0,24,1,0 %; ! Generate IPL 14 interrupt
macro FBIC$V_IPDVINT_IPL15 = 0,25,1,0 %; ! Generate IPL 15 interrupt
macro FBIC$V_IPDVINT_IPL16 = 0,26,1,0 %; ! Generate IPL 16 interrupt
macro FBIC$V_IPDVINT_IPL17 = 0,27,1,0 %; ! Generate IPL 17 interrupt
literal FBIC$M_CPUID_PROC = 3;
literal FBIC$M_CPUID_MID = 12;
literal FBIC$S_CPUID = 1;
macro FBIC$V_CPUID_PROC = 0,0,2,0 %;
literal FBIC$S_CPUID_PROC = 2;          ! Processor identifier
macro FBIC$V_CPUID_MID = 0,2,2,0 %;
literal FBIC$S_CPUID_MID = 2;           ! Module slot identifier
literal FMDC$M_FMDCSR_RAS_CNT = 255;
literal FMDC$M_FMDCSR_ST_START = 256;
literal FMDC$M_FMDCSR_ST_DONE = 512;
literal FMDC$M_FMDCSR_DTCB = 1024;
literal FMDC$M_FMDCSR_DIS_REFRESH = 4096;
literal FMDC$M_FMDCSR_RPS = 8192;
literal FMDC$M_FMDCSR_DRS = 16384;
literal FMDC$M_FMDCSR_EDM = 98304;
literal FMDC$M_FMDCSR_FESC = 393216;
literal FMDC$M_FMDCSR_FEC = 3670016;
literal FMDC$M_FMDCSR_ISR = 4194304;
literal FMDC$M_FMDCSR_ISML = 8388608;
literal FMDC$M_FMDCSR_MOL = 1073741824;
literal FMDC$M_FMDCSR_EFS = -2147483648;
literal FMDC$S_FMDCSR = 4;
macro FMDC$V_FMDCSR_RAS_CNT = 0,0,8,0 %;
literal FMDC$S_FMDCSR_RAS_CNT = 8;      !  Refresh counter
macro FMDC$V_FMDCSR_ST_START = 0,8,1,0 %; !  Self test start
macro FMDC$V_FMDCSR_ST_DONE = 0,9,1,0 %; !  Self test complete
macro FMDC$V_FMDCSR_DTCB = 0,10,1,0 %;  !  Data to check bits
macro FMDC$V_FMDCSR_DIS_REFRESH = 0,12,1,0 %; !  Disable refresh
macro FMDC$V_FMDCSR_RPS = 0,13,1,0 %;   !  Refresh period select
macro FMDC$V_FMDCSR_DRS = 0,14,1,0 %;   !  Diagnostic refresh start
macro FMDC$V_FMDCSR_EDM = 0,15,2,0 %;
literal FMDC$S_FMDCSR_EDM = 2;          !  ECC diagnostic mode
macro FMDC$V_FMDCSR_FESC = 0,17,2,0 %;
literal FMDC$S_FMDCSR_FESC = 2;         !  Force error sub category
macro FMDC$V_FMDCSR_FEC = 0,19,3,0 %;
literal FMDC$S_FMDCSR_FEC = 3;          !  Force error category
macro FMDC$V_FMDCSR_ISR = 0,22,1,0 %;   !  Inhibit SBE reporting
macro FMDC$V_FMDCSR_ISML = 0,23,1,0 %;  !  Inhibit SBE MSECTERR log
macro FMDC$V_FMDCSR_MOL = 0,30,1,0 %;   !  Module on-line
macro FMDC$V_FMDCSR_EFS = 0,31,1,0 %;   !  Error flag summary
literal FMDC$M_BASEADDR_STARTADDR = 2146435072;
literal FMDC$M_BASEADDR_MEMSPEN = -2147483648;
literal FMDC$S_BASEADDR = 4;
macro FMDC$V_BASEADDR_STARTADDR = 0,20,11,0 %;
literal FMDC$S_BASEADDR_STARTADDR = 11; !  Starting memory address
macro FMDC$V_BASEADDR_MEMSPEN = 0,31,1,0 %; !  Memory space enable
literal FMDC$M_ECCADDR_RAMERRADDR0 = 134217712;
literal FMDC$S_ECCADDR = 4;
macro FMDC$V_ECCADDR_RAMERRADDR0 = 0,4,23,0 %;
literal FMDC$S_ECCADDR_RAMERRADDR0 = 23; !  ECC Error address
literal FMDC$M_ECCSYND_SYND0 = 255;
literal FMDC$M_ECCSYND_SBE = 256;
literal FMDC$M_ECCSYND_MBE = 512;
literal FMDC$M_ECCSYND_ERROVFL = 7168;
literal FMDC$M_ECCSYND_SUBCB = 16711680;
literal FMDC$M_ECCSYND_READCB = -16777216;
literal FMDC$S_ECCSYND = 4;
macro FMDC$V_ECCSYND_SYND0 = 0,0,8,0 %;
literal FMDC$S_ECCSYND_SYND0 = 8;       !  ECC syndronme
macro FMDC$V_ECCSYND_SBE = 0,8,1,0 %;   !  Single bit error
macro FMDC$V_ECCSYND_MBE = 0,9,1,0 %;   !  Multiple bit error
macro FMDC$V_ECCSYND_ERROVFL = 0,10,3,0 %;
literal FMDC$S_ECCSYND_ERROVFL = 3;     !  Error overflow field
macro FMDC$V_ECCSYND_SUBCB = 0,16,8,0 %;
literal FMDC$S_ECCSYND_SUBCB = 8;       !  Substitute check bits
macro FMDC$V_ECCSYND_READCB = 0,24,8,0 %;
literal FMDC$S_ECCSYND_READCB = 8;      !  Read check bits
 
!*** MODULE $FCBDEF ***
! +
!  FCB - FILE CONTROL BLOCK
! 
!  THERE IS ONE FILE CONTROL BLOCK FOR EACH UNIQUELY ACCESSED FILE ON A
!  VOLUME. THE FILE CONTROL BLOCK PROVIDES THE VEHICLE WHEREBY SHARED
!  ACCESS TO A FILE MAY BE CONTROLLED.
! -
literal FCB$K_LENGTH = 204;             !  LENGTH OF STANDARD FCB 
literal FCB$C_LENGTH = 204;             !  LENGTH OF STANDARD FCB 
literal FCB$S_FCBDEF = 204;
macro FCB$L_FCBFL = 0,0,32,0 %;         !  FCB LIST FORWARD LINK 
macro FCB$L_FCBBL = 4,0,32,0 %;         !  FCB LIST BACKWARD LINK 
macro FCB$W_SIZE = 8,0,16,0 %;          !  SIZE OF FCB IN BYTES 
macro FCB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE OF FCB 
macro FCB$B_ACCLKMODE = 11,0,8,0 %;     !  Access lock mode.
macro FCB$L_EXFCB = 12,0,32,0 %;        !  ADDRESS OF EXTENSION FCB 
macro FCB$L_WLFL = 16,0,32,0 %;         !  WINDOW LISTHEAD FORWARD LINK 
macro FCB$L_WLBL = 20,0,32,0 %;         !  WINDOW LISTHEAD BACKWARD LINK 
macro FCB$W_REFCNT = 24,0,16,0 %;       !  Total references to this FCB.
macro FCB$W_ACNT = 26,0,16,0 %;         !  FILE ACCESS COUNT 
macro FCB$W_WCNT = 28,0,16,0 %;         !  FILE WRITER COUNT 
macro FCB$W_LCNT = 30,0,16,0 %;         !  FILE LOCK COUNT 
macro FCB$W_TCNT = 32,0,16,0 %;         !  COUNT OF TRUNCATE LOCKS 
macro FCB$W_STATUS = 34,0,16,0 %;       !  FILE STATUS 
macro FCB$V_DIR = 34,0,1,0 %;           !  FCB IS A DIRECTORY LRU ENTRY 
macro FCB$V_MARKDEL = 34,1,1,0 %;       !  FILE IS MARKED FOR DELETE 
macro FCB$V_BADBLK = 34,2,1,0 %;        !  BAD BLOCK ENCOUNTERED IN FILE 
macro FCB$V_EXCL = 34,3,1,0 %;          !  FILE IS EXCLUSIVELY ACCESSED 
macro FCB$V_SPOOL = 34,4,1,0 %;         !  FILE IS AN INTERMEDIATE SPOOL FILE 
macro FCB$V_RMSLOCK = 34,5,1,0 %;       !  FILE IS OPEN WITH RMS RECORD LOCKING 
macro FCB$V_ERASE = 34,6,1,0 %;         !  ERASE DATA WHEN BLOCKS REMOVED FROM FILE
macro FCB$V_BADACL = 34,7,1,0 %;        !  ACL IS CORRUPT
macro FCB$V_STALE = 34,8,1,0 %;         !  Reconstruct FCB from header.
macro FCB$V_DELAYTRNC = 34,9,1,0 %;     !  Delay truncation.
macro FCB$V_LIMBO = 34,10,1,0 %;        !  FCB is linked into the LIMBO queue
macro FCB$W_FID = 36,0,0,0 %;
literal FCB$S_FID = 6;                  !  FILE IDENTIFICATION 
macro FCB$W_FID_NUM = 36,0,16,0 %;      !  FILE NUMBER 
macro FCB$W_FID_SEQ = 38,0,16,0 %;      !  FILE SEQUENCE NUMBER 
macro FCB$W_FID_RVN = 40,0,16,0 %;      !  RELATIVE VOLUME NUMBER 
macro FCB$B_FID_RVN = 40,0,8,0 %;       !  SHORT FORM RVN 
macro FCB$B_FID_NMX = 41,0,8,0 %;       !  EXTENDED FILE NUMBER 
macro FCB$W_SEGN = 42,0,16,0 %;         !  FILE SEGMENT NUMBER 
macro FCB$L_STVBN = 44,0,32,0 %;        !  STARTING VIRTUAL BLOCK NUMBER 
macro FCB$L_STLBN = 48,0,32,0 %;        !  STARTING LOGICAL BLOCK NUMBER 
macro FCB$L_HDLBN = 52,0,32,0 %;        !  LBN OF FILE HEADER 
macro FCB$L_FILESIZE = 56,0,32,0 %;     !  FILE SIZE IN BLOCKS 
macro FCB$L_EFBLK = 60,0,32,0 %;        !  END OF FILE VBN 
macro FCB$W_VERSIONS = 64,0,16,0 %;     !  MAXIMUM NUMBER OF VERSIONS IN DIRECTORY 
macro FCB$L_DIRINDX = 66,0,32,0 %;      !  Directory index pointer
macro FCB$W_DIRSEQ = 70,0,16,0 %;       !  DIRECTORY USE SEQUENCE NUMBER 
macro FCB$L_ACCLKID = 72,0,32,0 %;      !  Access lock ID.
macro FCB$L_LOCKBASIS = 76,0,32,0 %;    !  Lock basis for this FCB.
macro FCB$L_TRUNCVBN = 80,0,32,0 %;     !  VBN for delayed truncation.
macro FCB$L_CACHELKID = 84,0,32,0 %;    !  Cache interlock lock ID
macro FCB$L_HIGHWATER = 88,0,32,0 %;    !  HIGH WATER MARK IN FILE
macro FCB$L_NEWHIGHWATER = 92,0,32,0 %; !  Highwater mark of pending writes
macro FCB$W_HWM_UPDATE = 96,0,16,0 %;   !  Count of writes past highwater mark
macro FCB$W_HWM_ERASE = 98,0,16,0 %;    !  Count of writes starting past highwater mark
macro FCB$W_HWM_PARTIAL = 100,0,16,0 %; !  Count of partially validated erase operations
macro FCB$Q_HWMQHD = 104,0,0,0 %;
literal FCB$S_HWMQHD = 8;               !  High water mark queue header
macro FCB$L_HWM_WAITFL = 104,0,32,0 %;  !  Highwater mark update queue
macro FCB$L_HWM_WAITBL = 108,0,32,0 %;  !  Highwater mark update queue
macro FCB$Q_LIMBOQHD = 104,0,0,0 %;
literal FCB$S_LIMBOQHD = 8;             !  LIMBO queue header
macro FCB$L_LIMBOFL = 104,0,32,0 %;     !  Highwater mark update queue
macro FCB$L_LIMBOBL = 108,0,32,0 %;     !  Highwater mark update queue
macro FCB$R_ORB = 112,0,0,0 %;
literal FCB$S_ORB = 88;                 !  Object's Rights Block
macro FCB$L_FILEOWNER = 112,0,32,0 %;   !  FILE OWNER UIC 
macro FCB$W_UICMEMBER = 112,0,16,0 %;   !  MEMBER NUMBER 
macro FCB$W_UICGROUP = 114,0,16,0 %;    !  GROUP NUMBER 
macro FCB$Q_ACMODE = 128,0,0,0 %;
literal FCB$S_ACMODE = 8;               !  Access mode protection vector
macro FCB$L_SYS_PROT = 136,0,32,0 %;    !  Protection word/vector
macro FCB$W_FILEPROT = 136,0,16,0 %;    !  FILE PROTECTION MASK 
macro FCB$L_OWN_PROT = 140,0,32,0 %;    !  Owner protection
macro FCB$L_GRP_PROT = 144,0,32,0 %;    !  Group protection
macro FCB$L_WOR_PROT = 148,0,32,0 %;    !  World protection
macro FCB$L_ACLFL = 152,0,32,0 %;       !  ACCESS CONTROL LIST FORWARD LINK 
macro FCB$L_ACLBL = 156,0,32,0 %;       !  ACCESS CONTROL LIST BACKWARD LINK 
macro FCB$R_MIN_CLASS_PROT = 160,0,0,0 %;
literal FCB$S_MIN_CLASS_PROT = 20;      !  Minimum security classification mask
macro FCB$R_MAX_CLASS_PROT = 180,0,0,0 %;
literal FCB$S_MAX_CLASS_PROT = 20;      !  Maximum security classification mask
macro FCB$L_CFCB = 200,0,32,0 %;        !  VBN Cache pointer
 
!*** MODULE $FFIDEF ***
! +
!  FFI - Ethernet Fast Interface.  This interface is owned by the DECnet-VAX
!        group.  It is for internal (VMS) use only.  This interface will
!        change between baselevels and versions of VMS without notice.
!        DO NOT USE THIS INTERFACE UNLESS YOU HAVE PERMISSION FROM DECNET-VAX.
! -
literal FFI$L_CTRL = 36;                ! DATALINK CONTROL ENTRY POINT
literal FFI$L_CTRL_DONE = 40;           ! CALLER'S CONTROL DONE ENTRY POINT
literal FFI$W_ACCESS_CODE = 44;         ! CALLER'S ACCESS CODE
literal FFI$G_CTX_USER = 62;            ! CALLER'S CONTEXT BLOCK
literal FFI$K_LENGTH = 62;              ! LENGTH OF A STANDARD FFI
literal FFI$C_LENGTH = 62;              ! LENGTH OF A STANDARD FFI
!  Define the FFI control function codes. 
literal FFI$C_START = 0;                !  Start the protocol
literal FFI$C_STOP = 1;                 !  Stop the protocol
literal FFI$C_CHANGE = 2;               !  Change the protocol parameters
literal FFI$C_READ_PRM = 3;             !  Read protocol parameters
literal FFI$C_READ_CTRS = 4;            !  Read counters (unsupported in V1)
literal FFI$C_READ_CLR_CTRS = 5;        !  Read and clear counters (unsupported in V1)
!  Define the FFI working version number.
literal FFI$C_VERSION = 50;             !  FFI version number
literal FFI$S_FFIDEF = 62;
macro FFI$L_FL = 0,0,32,0 %;            ! FORWARD QUEUE LINK 
macro FFI$L_BL = 4,0,32,0 %;            ! BACKWARD QUEUE LINK 
macro FFI$W_SIZE = 8,0,16,0 %;          ! BLOCK SIZE 
macro FFI$B_TYPE = 10,0,8,0 %;          ! BLOCK TYPE 
macro FFI$B_VERSION = 11,0,8,0 %;       ! VERSION OF FFI
macro FFI$L_CTX_DL = 12,0,32,0 %;       ! DATALINK CONTEXT AREA
macro FFI$L_XMIT = 16,0,32,0 %;         ! DATALINK TRANSMIT ROUTINE ADDRESS
macro FFI$L_XMIT_DONE = 20,0,32,0 %;    ! CALLER'S TRANSMIT DONE ROUTINE ADDRESS
macro FFI$L_RECV_DONE = 24,0,32,0 %;    ! CALLER'S RECEIVE DONE ROUTINE ADDRESS
macro FFI$L_ERROR = 28,0,32,0 %;        ! CALLER'S ERROR HANDLER
macro FFI$L_SHUT_DONE = 32,0,32,0 %;    ! CALLER'S SHUTDOWN COMPLETE ROUTINE ADDRESS
macro FFI$L_SPARE0 = 36,0,32,0 %;       !    spare
macro FFI$L_SPARE1 = 40,0,32,0 %;       !    spare
macro FFI$L_SPARE2 = 44,0,32,0 %;       !    spare
macro FFI$L_SPARE3 = 48,0,32,0 %;       !    spare
macro FFI$L_DL_UCB = 52,0,32,0 %;       ! DATALINK UCB ADDRESS
macro FFI$L_PID = 56,0,32,0 %;          ! CALLER'S PID (or zero)
macro FFI$W_CHAN = 60,0,16,0 %;         ! CALLER'S CHAN (or zero)
 
!*** MODULE $FKBDEF ***
! +
!  FKB - FORK BLOCK
! 
!  A FORK BLOCK DESCRIBES THE CONTEXT OF A FORK PROCESS. EACH UNIT CONTROL
!  BLOCK CONTAINS A FORK BLOCK AS ITS FIRST SIX LONGWORDS.
! -
literal FKB$K_LENGTH = 24;              ! STANDARD LENGTH OF FKB 
literal FKB$C_LENGTH = 24;              ! STANDARD LENGTH OF FKB 
literal FKB$S_FKBDEF = 24;
macro FKB$L_FQFL = 0,0,32,0 %;          ! FORK QUEUE FORWARD LINK 
macro FKB$L_FQBL = 4,0,32,0 %;          ! FORK QUEUE BACKWARD LINK 
macro FKB$W_SIZE = 8,0,16,0 %;          ! SIZE OF FKB IN BYTES 
macro FKB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE OF FKB 
macro FKB$B_FLCK = 11,0,8,0 %;          ! FORK LOCK NUMBER
macro FKB$B_FIPL = 11,0,8,0 %;          ! FORK IPL
macro FKB$L_FPC = 12,0,32,0 %;          ! FORK PC 
macro FKB$L_FR3 = 16,0,32,0 %;          ! FORK R3 
macro FKB$L_FR4 = 20,0,32,0 %;          ! FORK R4 
 
!*** MODULE $FQAMDEF ***
! ++
! 	Define FQAM CSR offsets and registers for Firefox systems
! --
literal FQAM$L_CSR = 0;                 ! FQAM II CSR
literal FQAM$M_CSR_QBUSARB = 1;
literal FQAM$M_CSR_DUMPERROR = 2;
literal FQAM$M_CSR_TESTMODE = 4;
literal FQAM$S_CSR = 4;
macro FQAM$V_CSR_QBUSARB = 0,0,1,0 %;   ! QBUS arbitration enable
macro FQAM$V_CSR_DUMPERROR = 0,1,1,0 %; ! Dump error
macro FQAM$V_CSR_TESTMODE = 0,2,1,0 %;  ! Test mode enable diags
 
!*** MODULE $FTRDDEF ***
! +
! 
!  FTRD - Read request packet for FTDRIVER
! 
!  The FTRD packet is very similar to an IRP but much smaller.  It has an 
!  ACB at the front, the EFN, and some information about the read buffer.
! 
! -
literal FTRD$K_LENGTH = 40;             !  Size of read packet
literal FTRD$C_LENGTH = 40;             ! 
literal FTRD$S_FTRDDEF = 40;
macro FTRD$L_ASTQFL = 0,0,32,0 %;       !  Read and AST queue forward link
macro FTRD$L_ASTQBL = 4,0,32,0 %;       !  Read and AST queue backward link
macro FTRD$W_SIZE = 8,0,16,0 %;         !  Size of structure
macro FTRD$B_TYPE = 10,0,8,0 %;         !  Type of structure
macro FTRD$B_RMOD = 11,0,8,0 %;         !  RMOD bits used by AST delivery code
macro FTRD$L_PID = 12,0,32,0 %;         !  Internal PID of process to receive AST
macro FTRD$L_AST = 16,0,32,0 %;         !  AST routine address
macro FTRD$L_ASTPRM = 20,0,32,0 %;      !  AST parameter
macro FTRD$B_EFN = 24,0,8,0 %;          !  EFN to be set
macro FTRD$B_UNUSED = 25,0,8,0 %;       !  Spare byte
macro FTRD$W_READ_SIZE = 26,0,16,0 %;   !  Size of read request in bytes
macro FTRD$L_BUFF_ADDR = 28,0,32,0 %;   !  Address of I/O buffer
macro FTRD$L_CHAR_ADDR = 32,0,32,0 %;   !  Address of next character 
macro FTRD$L_CHARS_READ = 36,0,32,0 %;  !  Number of characters in read buffer
 
!*** MODULE $GABDEF ***
! +
!  Generalized event notification AST control Block
! 
!  The block is used to queue an event notification request to a
!  process.  It contains an ACB which has been extended to include
!  data from the notification request's AST Data Block (ADB) and
!  the Event Declaration block (EDB).
! 
! -
literal GAB$K_LENGTH = 240;             !  Length of block. 
literal GAB$C_LENGTH = 240;             !  Length of block. 
literal GAB$S_GABDEF = 240;
macro GAB$L_ASTQFL = 0,0,32,0 %;        !  AST QUEUE FORWARD LINK 
macro GAB$L_ASTQBL = 4,0,32,0 %;        !  AST QUEUE BACKWARD LINK 
macro GAB$W_SIZE = 8,0,16,0 %;          !  STRUCTURE SIZE IN BYTES 
macro GAB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE 
macro GAB$B_RMOD = 11,0,8,0 %;          !  REQUEST ACCESS MODE 
macro GAB$L_PID = 12,0,32,0 %;          !  PROCESS ID OF REQUEST 
macro GAB$L_AST = 16,0,32,0 %;          !  AST ROUTINE ADDRESS 
macro GAB$L_ASTPRM = 20,0,32,0 %;       !  AST PARAMETER 
macro GAB$L_KAST = 24,0,32,0 %;         !  INTERNAL KERNEL MODE XFER ADDRESS 
macro GAB$L_UNIQID = 28,0,32,0 %;       !  GENERATED ID
macro GAB$L_ADB = 32,0,32,0 %;          !  ADDRESS OF REQUESTOR'S ADB
! 
!  Start of $GETEVI data.  For efficiency, this must agree with EVIDEF.
! 
macro GAB$L_FLAGS = 36,0,32,0 %;        !  FLAGS
macro GAB$L_CSID = 40,0,32,0 %;         !  CLUSTER SYSTEM ID
macro GAB$L_EPID = 44,0,32,0 %;         !  PROCESS'S EXTENDED PID
macro GAB$B_ACMODE = 48,0,8,0 %;        !  ACCESS MODE
macro GAB$W_EVTFAC = 50,0,16,0 %;       !  FACILITY CODE
macro GAB$W_ULE_COUNT = 52,0,16,0 %;    !  FORK LOST EVENT COUNT
macro GAB$W_FLE_COUNT = 54,0,16,0 %;    !  USER LOST EVENT COUNT
macro GAB$Q_EVENT_TIME = 56,0,0,0 %;
literal GAB$S_EVENT_TIME = 16;          !  EVENT TIME 
macro GAB$T_EVENT_NAME = 72,0,0,0 %;
literal GAB$S_EVENT_NAME = 32;          !  EVENT NAME
macro GAB$T_EVENT_DATA = 104,0,0,0 %;
literal GAB$S_EVENT_DATA = 128;         !  OPTIONAL EVENT DATA
! 
!  End of GETEVI data
! 
macro GAB$L_IDENTIFIER = 232,0,32,0 %;  !  IDENTIFIER OF DECLARING PROCESS
macro GAB$L_ORB = 236,0,32,0 %;         !  POINTER TO EVENT FACILITY ORB
 
!*** MODULE $gddef ***
literal gd$m_dma_cmd = 1;
literal gd$k_cmd_read = 0;
literal gd$k_cmd_write = 1;
literal gd$m_dma_keep_edc = 2;
literal gd$k_edc_noedc = 0;
literal gd$k_edc_ccitt_ones = 1;
literal gd$k_edc_ccitt_zero = 2;
literal gd$k_edc_crc16_ones = 3;
literal gd$k_edc_crc16_zero = 4;
literal gd$k_edc_autodin2 = 5;
literal gd$k_edc_swift16 = 6;
literal gd$m_dma_edc_cont = 32;
literal gd$m_dma_retry_inh = 32768;
literal gd$w_last_opt = -10;
literal gd$S_gditem = 12;
macro gd$w_dma_blen = 0,0,16,1 %;
macro gd$v_dma_cmd = 2,0,1,0 %;
macro gd$v_dma_keep_edc = 2,1,1,0 %;
macro gd$v_dma_edc_code = 2,2,3,0 %;
literal gd$s_dma_edc_code = 3;
macro gd$v_dma_edc_cont = 2,5,1,0 %;
macro gd$v_mbz_1 = 2,6,9,0 %;
literal gd$s_mbz_1 = 9;
macro gd$v_dma_retry_inh = 2,15,1,0 %;
macro gd$v_aggcmd = 2,0,5,0 %;
literal gd$s_aggcmd = 5;
macro gd$w_dma_item_opts = 2,0,16,1 %;
macro gd$a_dma_badr = 4,0,32,0 %;
macro gd$a_dma_ioadr = 8,0,32,0 %;
 
!*** MODULE $GSDDEF ***
! +
!  GLOBAL SECTION DESCRIPTOR BLOCK
! -
literal GSD$M_VALID = 1;
literal GSD$M_LOCKED = 2;
literal GSD$M_DELPEND = 4;
literal GSD$M_INITFAIL = 8;
literal GSD$M_DUPGSD = 16;
literal GSD$K_LENGTH = 39;              ! LENGTH OF LOCAL MEMORY GSD 
literal GSD$C_LENGTH = 39;              ! LENGTH OF LOCAL MEMORY GSD 
literal GSD$K_EXTGSDLNG = 53;           ! MINIMUM EXTENDED GSD LENGTH 
literal GSD$C_EXTGSDLNG = 53;           ! MINIMUM EXTENDED GSD LENGTH 
! 
literal GSD$S_GSDDEF = 53;
macro GSD$L_GSDFL = 0,0,32,0 %;         ! POINTER TO NEXT GSD 
macro GSD$V_VALID = 0,0,1,0 %;          ! SH MEM GSD FLAG, SET IF VALID ENTRY 
macro GSD$V_LOCKED = 0,1,1,0 %;         ! SH MEM GSD FLAG, SET IF ENTRY LOCKED 
macro GSD$V_DELPEND = 0,2,1,0 %;        ! SH MEM GSD FLAG, GS MARKED FOR DELETE 
macro GSD$V_INITFAIL = 0,3,1,0 %;       ! SH MEM GSD FLAG, SET WHEN GS INIT FAILS 
macro GSD$V_DUPGSD = 0,4,1,0 %;         ! SH MEM GSD FLAG, DUPLICATE GSD FOUND 
macro GSD$L_GSDBL = 4,0,32,0 %;         ! POINTER TO PREVIOUS GSD 
macro GSD$W_SIZE = 8,0,16,0 %;          ! SIZE OF GSD IN BYTES 
macro GSD$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE CODE FOR GSD 
macro GSD$B_HASH = 11,0,8,0 %;          ! HASH FOR GSD NAME
macro GSD$L_PCBUIC = 12,0,32,0 %;       ! UIC OF CREATOR OF SECTION, FROM HIS PCB 
macro GSD$W_PCBGRP = 14,0,16,0 %;       ! GROUP OF CREATOR OF SECTION, FROM PCB 
macro GSD$L_FILUIC = 16,0,32,0 %;       ! OWNER OF FILE, UIC FROM FCB 
macro GSD$W_PROT = 20,0,16,0 %;         ! PROTECTION MASK 
macro GSD$W_GSTX = 22,0,16,0 %;         ! GLOBAL SECTION TABLE INDEX 
macro GSD$L_IDENT = 24,0,32,0 %;        ! IDENTIFICATION OF GLOBAL SECTION 
macro GSD$L_ORB = 28,0,32,0 %;          ! OBJECT RIGHTS BLOCK LOCATOR
macro GSD$L_IPID = 32,0,32,0 %;         ! IPID of nominal owner -- only defined while GSD is being deleted 
macro GSD$W_FLAGS = 36,0,16,0 %;        ! SECTION FLAGS 
macro GSD$T_GSDNAM = 38,0,8,0 %;        ! LOCAL MEMORY AND SHARED MEMORY SECTION NAME
! 
!  THE FOLLOWING FIELDS ARE ONLY FOUND IN EXTENDED GSD'S.  THESE ARE USED
!  WHENEVER A GSD IS NEEDED WITHOUT A SECTION TABLE ENTRY, I.E., FOR SHARED
!  MEMORY AND FOR PAGES MAPPED BY PFN.
! 
macro GSD$L_BASEPFN = 40,0,32,0 %;      ! FIRST RELATIVE BASE PFN 
macro GSD$L_PAGES = 44,0,32,0 %;        ! COUNT OF PAGES AT FIRST BASE PFN 
macro GSD$L_REFCNT = 48,0,32,0 %;       ! FIRST PROCESSOR PTE REF COUNT 
macro GSD$T_PFNGSDNAM = 52,0,8,0 %;     ! PFN-MAPPED SECTION NAME
!  THE FOLLOWING FIELDS ARE CONTAINED ONLY IN SHARED MEMORY GSD'S.  THE LENGTH,
!  GSD$C_SHMGSDLNG, IS ONLY THE CONSTANT SIZE OF THE GSD.  IN ADDITION, THERE IS
!  ONE LONGWORD FOR EACH PROCESSOR AND TWO LONGWORDS FOR EACH BASE PFN-SIZE PAIR.
! 
literal GSD$C_PFNBASMAX = 4;            ! MAXIMUM ! OF PFN BASES ALLOWED 
literal GSD$K_SHMGSDLNG = 120;          ! LENGTH OF CONSTANT PART OF SHM GSD 
literal GSD$C_SHMGSDLNG = 120;          ! LENGTH OF CONSTANT PART OF SHM GSD 
literal GSD$S_GSDDEF1 = 124;
macro GSD$B_LOCK = 84,0,8,0 %;          ! INTERPROCESSOR LOCK FOR GSD 
macro GSD$B_PROCCNT = 85,0,8,0 %;       ! NUMBER OF PROCESSOR REF. COUNTS IN GSD 
macro GSD$B_CREATPORT = 86,0,8,0 %;     ! PORT ! FOR CREATOR PROCESSOR 
macro GSD$B_DELETPORT = 87,0,8,0 %;     ! PORT ! FOR DELETOR PROCESSOR 
macro GSD$L_BASPFN1 = 88,0,32,0 %;      ! FIRST BASE PFN FOR SECTION PAGES 
macro GSD$L_BASCNT1 = 92,0,32,0 %;      ! CNT OF SECTION PAGES AT FIRST BASE PFN 
! FIRST PFN/PAGE COUNT PAIR
macro GSD$L_PTECNT1 = 120,0,32,0 %;     ! PTE COUNT FOR FIRST PROCESSOR 
 
!*** MODULE $HD1DEF ***
! +
!  HDR1 ANDSI MAGNETIC TAPE LABEL
!  THIS IS THE FIRST LABEL IN THE FILE LABEL HEADER SET.  IF IDENTIFIES THE FILE.
! -
literal HD1$S_HD1DEF = 80;
macro HD1$L_HD1LID = 0,0,32,0 %;        ! LABEL IDENTIFIER AND NUMBER 'HDR1' 
macro HD1$T_FILEID = 4,0,0,0 %;
literal HD1$S_FILEID = 17;              ! FILE IDENTIFIER 
macro HD1$T_FILESETID = 21,0,0,0 %;
literal HD1$S_FILESETID = 6;            ! FILE SET IDENTIFIER 
macro HD1$T_FILESECNO = 27,0,32,0 %;
literal HD1$S_FILESECNO = 4;            ! FILE SECTION NUMBER 
macro HD1$T_FILESEQNO = 31,0,32,0 %;
literal HD1$S_FILESEQNO = 4;            ! FILE SEQUENCE NUMBER 
macro HD1$T_GENNO = 35,0,32,0 %;
literal HD1$S_GENNO = 4;                ! FILE GENERATION NUMBER 
macro HD1$T_GENVER = 39,0,16,0 %;
literal HD1$S_GENVER = 2;               ! FILE GENERATION VERSION NUMBER 
macro HD1$T_CREATEDT = 41,0,0,0 %;
literal HD1$S_CREATEDT = 6;             ! CREATION DATE ( YYDDD) 
macro HD1$T_EXPIREDT = 47,0,0,0 %;
literal HD1$S_EXPIREDT = 6;             ! EXPIRATION DATE 
macro HD1$B_FILACCESS = 53,0,8,0 %;     ! FILE ACCESS 
macro HD1$T_BLOCKCNT = 54,0,0,0 %;
literal HD1$S_BLOCKCNT = 6;             ! BLOCK COUNT 
macro HD1$T_SYSCODE = 60,0,0,0 %;
literal HD1$S_SYSCODE = 13;             ! SYSTEM CODE 
 
!*** MODULE $HD2DEF ***
! +
!  HDR2 ANSI MAGNETIC TAPE LABEL
!  THIS IS THE SECOND LABEL IN FILE LABEL HEADER SET.
!  THE FILE ATTRIBUTES HAVE BEEN REMOVED FROM HDR2, AND PLACED IN HDR3.
!  THE FIELDS REMAIN IN THE DEFINITION TO SUPPORT OLD TAPES.
! -
literal HD2$S_HD2DEF = 72;
macro HD2$L_HD2LID = 0,0,32,0 %;        ! LABEL IDENTIFIER AND NUMBER 'HDR2' 
macro HD2$B_RECFORMAT = 4,0,8,0 %;      ! RECORD FORMAT 
macro HD2$T_BLOCKLEN = 5,0,0,0 %;
literal HD2$S_BLOCKLEN = 5;             ! BLOCK LENGTH 
macro HD2$T_RECLEN = 10,0,0,0 %;
literal HD2$S_RECLEN = 5;               ! RECORD LENGTH 
macro HD2$T_RECATR1 = 15,0,0,0 %;
literal HD2$S_RECATR1 = 20;             ! FIRST 20 BYTES OF FILES-11 RECORD ATTRIBUTES 
macro HD2$B_FORMCNTRL = 36,0,8,0 %;     ! FORMS CONTROL 
macro HD2$T_RECATR2 = 37,0,0,0 %;
literal HD2$S_RECATR2 = 12;             ! LAST 12 BYTES OF FILES-11 RECORD ATTRIBUTES 
macro HD2$T_BUFOFF = 50,0,16,0 %;
literal HD2$S_BUFOFF = 2;               ! BUFFER OFFSET 
 
!*** MODULE $HD3DEF ***
! +
!  HDR3 ANSI MAGNETIC TAPE LABEL
!  THIS IS THE THIRD LABEL IN FILE LABEL HEADER SET.
!  IT IDENTIFIES THE FILE ATTRIBUTES.
! -
literal HD3$S_HD3DEF = 80;
macro HD3$L_HD3LID = 0,0,32,0 %;        ! LABEL IDENTIFIES AND NUMBER 'HDR3' 
macro HD3$T_RECATR = 4,0,0,0 %;
literal HD3$S_RECATR = 64;              ! 64 BYTES OF FILES-11 RECORD ATTRIBUTES 
 
!*** MODULE $HD4DEF ***
! +
!  HDR4 ANSI MAGNETIC TAPE LABEL
!  THIS IS THE FOURTH LABEL IN FILE LABEL HEADER SET.
!  IT CONTAINS THE LONG FILENAME EXTENSION TO THE HDR1 FILE IDENTIFIER
!  FOR VMS LONG FILE NAMES
! -
literal HD4$S_HD4DEF = 82;
macro HD4$L_HD4LID = 0,0,32,0 %;        ! LABEL IDENTIFIER AND NUMBER 'HDR4' 
macro HD4$B_FILEID_EXT_SIZE = 4,0,8,0 %; ! SIZE OF FILE ID EXT FOR ANSI 4 VOLUMES
macro HD4$T_FILEID_EXT = 5,0,0,0 %;
literal HD4$S_FILEID_EXT = 62;          ! EXTENSION OF HDR1 FILEID
macro HD4$T_FILEID_EXT_V3 = 67,0,16,0 %;
literal HD4$S_FILEID_EXT_V3 = 2;        ! SIZE OF FILE ID EXT FOR ANSI 3 VOLUMES
 
!*** MODULE $HQBDEF ***
! +
!  HQB  (Host Queue Block)  Definitions
! 
! 	This data structure contains information pertaining
! 	to a host that has established a connection to the 
! 	server.
! -
literal HQB$M_VC_FAILED = 1;
literal HQB$M_DISCON_INIT = 2;
literal HQB$M_PATHMOVE = 4;
literal HQB$M_UNIT_ONLINE = 1;
literal HQB$M_V5CL = 2;
literal HQB$K_LENGTH = 60;
literal HQB$S_HQBDEF = 60;
macro HQB$L_FLINK = 0,0,32,0 %;         !  Used to link together all
macro HQB$L_BLINK = 4,0,32,0 %;         !    host HQBs using the server
macro HQB$W_SIZE = 8,0,16,0 %;          !  Structure size in bytes
macro HQB$B_TYPE = 10,0,8,0 %;          !  MSCP type structure
macro HQB$B_SUBTYPE = 11,0,8,0 %;       !   with a HQB subtype 	     (2)
macro HQB$B_HOSTNO = 12,0,8,0 %;        !  Assigned host number
macro HQB$B_STATE = 13,0,8,0 %;         !  State of this host
macro HQB$V_VC_FAILED = 13,0,1,0 %;     !   The VC to this host has failed
macro HQB$V_DISCON_INIT = 13,1,1,0 %;   !   Disconnect being processed
macro HQB$V_PATHMOVE = 13,2,1,0 %;      !   Closing connection for port load balancing
macro HQB$W_CNT_FLGS = 14,0,16,0 %;     !  Host settable controller flags
macro HQB$W_HTIMO = 16,0,16,0 %;        !  Host access timeout interval
macro HQB$W_FLAGS = 18,0,16,0 %;
macro HQB$V_UNIT_ONLINE = 18,0,1,0 %;   !  This host had units online
macro HQB$V_V5CL = 18,1,1,0 %;          !  This is the V5 class driver
!   when the link was broken
macro HQB$Q_TIME = 20,0,0,0 %;
literal HQB$S_TIME = 8;                 !  Time host issued set-ctrl-chr
macro HQB$W_NUM_QUE = 28,0,16,0 %;      !  Requests outstanding
macro HQB$W_MAX_QUE = 30,0,16,0 %;      !  Most requests ever out
macro HQB$L_HRB_FL = 32,0,32,0 %;       !  HRB queue listhead for 
macro HQB$L_HRB_BL = 36,0,32,0 %;       !   this host
macro HQB$L_CDT = 40,0,32,0 %;          !  Connection Desc Table addr
macro HQB$B_SYSTEMID = 44,0,0,0 %;
literal HQB$S_SYSTEMID = 6;             !  SCS system ID of host
macro HQB$L_DSRV = 50,0,32,0 %;         !  DSRV address
macro HQB$L_HULB_VECTOR = 54,0,32,0 %;  !  HULB vector address
macro HQB$W_MAX_HULB = 58,0,16,0 %;     !  Size of HULB vector
 
!*** MODULE $HRBDEF ***
! +
!  HRB  (Host Request Block)  Definitions
! 
! 	These definitions describe the format of a data structure
! 	that is used in the MSCP server to represent the context
! 	of a request from one of the served hosts.
! -
literal HRB$M_STATE_INVALID = 32768;
literal HRB$M_ABORT = 1;
literal HRB$M_ABORTWS = 2;
literal HRB$M_DEQUEUED = 4;
literal HRB$M_ENDMSG = 8;
literal HRB$M_MAP = 16;
literal HRB$M_UNBLOCK = 32;
literal HRB$M_VCFAILED = 64;
literal HRB$M_OLDBUF = 128;
literal HRB$K_LENGTH = 100;
!  request state definitions
literal HRB$K_ST_MSG_WAIT = 1;          !  Atn msg buffer/credit wait
literal HRB$K_ST_SEQ_WAIT = 2;          !  Waiting for sequential cmd
literal HRB$K_ST_BUF_WAIT = 3;          !  Waiting for server buffer
literal HRB$K_ST_SNDAT_WAIT = 4;        !  Sending or receiving data
literal HRB$K_ST_DRV_WAIT = 5;          !  Driver queue
literal HRB$K_ST_MAP_WAIT = 6;          !  Mapping a data buffer
literal HRB$K_ST_UNMAP_WAIT = 7;        !  Returning mapping resources
literal HRB$K_ST_SNDMS_WAIT = 8;        !  Sending message
literal HRB$S_HRBDEF = 100;
macro HRB$L_FLINK = 0,0,32,0 %;         !  Used to link this request
macro HRB$L_BLINK = 4,0,32,0 %;         !   into the HQB data styructure
macro HRB$W_SIZE = 8,0,16,0 %;          !  Data structure size in bytes
macro HRB$B_TYPE = 10,0,8,0 %;          !  This is an MSCP type struct
macro HRB$B_SUBTYPE = 11,0,8,0 %;       !   with a HRB subtype       (3)
macro HRB$L_RESPC = 12,0,32,0 %;        !  PC to resume on restart
macro HRB$L_SAVD_RTN = 16,0,32,0 %;     !  Saved address of caller
macro HRB$W_STATE = 20,0,16,0 %;        !  State of the request
macro HRB$V_STATE_INVALID = 20,15,1,0 %; !  State is current but previous
!   state was (bits 0-15)
macro HRB$W_FLAGS = 22,0,16,0 %;        !  Status flags
macro HRB$V_ABORT = 22,0,1,0 %;         !  Abort
macro HRB$V_ABORTWS = 22,1,1,0 %;       !  Abort with status
macro HRB$V_DEQUEUED = 22,2,1,0 %;      !  Removed from resource queues
macro HRB$V_ENDMSG = 22,3,1,0 %;        !  End message needs to be sent
macro HRB$V_MAP = 22,4,1,0 %;           !  Map resources allocated
macro HRB$V_UNBLOCK = 22,5,1,0 %;       !  Unblock needs to be called
macro HRB$V_VCFAILED = 22,6,1,0 %;      !  The VC for this host failed
macro HRB$V_OLDBUF = 22,7,1,0 %;        !  The buffer allocated for this
!   rqst is out of the old buffer
macro HRB$L_MSGBUF = 24,0,32,0 %;       !  Addr of MSCP request packet
macro HRB$L_IRP_CDRP = 28,0,32,0 %;     !  CDRP for I/O requests
macro HRB$B_LBUFF = 32,0,0,0 %;
literal HRB$S_LBUFF = 12;               !  Local buffer descriptor
macro HRB$L_BUFLEN = 44,0,32,0 %;       !  Length of buffer allocated
macro HRB$L_BUFADR = 48,0,32,0 %;       !  Buffer starting address
macro HRB$L_LBN = 52,0,32,0 %;          !  LBN place holder for xfr
macro HRB$L_OBCNT = 56,0,32,0 %;        !  Original request byte count
macro HRB$L_ABCNT = 60,0,32,0 %;        !  Number of bytes already sent
macro HRB$L_SVAPTE = 64,0,32,0 %;       !  Page table entry for lcl bufr
macro HRB$W_BOFF = 68,0,16,0 %;         !  Offset within page of sob
macro HRB$L_BCNT = 70,0,32,0 %;         !  Temp storage for current xfr
macro HRB$L_WAIT_FL = 76,0,32,0 %;      !  Pointers to link HRB into
macro HRB$L_WAIT_BL = 80,0,32,0 %;      !   wait queues in UQB
macro HRB$L_HQB = 84,0,32,0 %;          !  Host Queue Block address
macro HRB$L_UQB = 88,0,32,0 %;          !  Unit Queue Block address
macro HRB$L_PDT = 92,0,32,0 %;          !  Port Desc Table for requestor
macro HRB$L_CMD_STS = 96,0,32,0 %;      !  Measure of work to be done
 
!*** MODULE $HULBDEF ***
! +
!  HULB  (Host/Unit Load Block) Definitions
! 
! 	These definitions describe the format of a data structure
! 	that is used in the MSCP server to record traffic and status
! 	information used by server load balancing. Time fields are in
! 	EXE$GL_ABSTIM format.
! -
literal HULB$M_LB_REQ = 1;
literal HULB$M_DELETE = 2;
literal HULB$M_LB_DISABLED = 4;
literal HULB$K_LENGTH = 26;
literal HULB$K_VECLEN = 256;
literal HULB$S_HULBDEF = 26;
macro HULB$L_FLINK = 0,0,32,0 %;        !  Used to link this request
macro HULB$L_BLINK = 4,0,32,0 %;        !   into the DSRV data styructure
macro HULB$W_SIZE = 8,0,16,0 %;         !  Data structure size in bytes
macro HULB$B_TYPE = 10,0,8,0 %;         !  This is an MSCP type struct
macro HULB$B_SUBTYPE = 11,0,8,0 %;      !   with a HULB subtype (4)
macro HULB$W_HOSTNO = 12,0,16,0 %;      !  Assigned host number
macro HULB$W_UNITNO = 14,0,16,0 %;      !  Assigned unit number
macro HULB$W_OPCOUNT = 16,0,16,0 %;     !  Current operation count
macro HULB$W_PREV_OPC = 18,0,16,0 %;    !  Operation count for prev interval
macro HULB$L_TIME = 20,0,32,0 %;        !  Time of last LB request
macro HULB$W_STATUS = 24,0,16,0 %;      !  LB status bits
macro HULB$V_LB_REQ = 24,0,1,0 %;       !  This unit has been asked to LB
macro HULB$V_DELETE = 24,1,1,0 %;       !  This unit is offline and the HULB can be deleted
macro HULB$V_LB_DISABLED = 24,2,1,0 %;  !  This unit is not available for load balancing
 
!*** MODULE $IAFDEF ***
! +
!  IAF - IMAGE ACTIVATOR FIXUP SECTION
! 
!  THE IMAGE ACTIVATOR FIXUP SECTION IS AN IMAGE SECTION THAT IS CREATED
!  BY THE LINKER AND USED BY THE IMAGE ACTIVATOR TO MODIFY THE IMAGE AS
!  IT IS ACTIVATED.  THIS IS DONE TO MAINTAIN THE POSITION INDEPENDENCE
!  OF EXTERNAL REFERENCES.
! -
literal IAF$K_LENGTH = 64;              !  Length of fixed area 
literal IAF$C_LENGTH = 64;              !  Length of fixed area 
literal IAF$S_IAFDEF = 64;
macro IAF$L_IAFLINK = 0,0,32,0 %;       !  Link for image activator use 
macro IAF$L_FIXUPLNK = 4,0,32,0 %;      !  Link for shareable image fixups 
macro IAF$W_SIZE = 8,0,16,0 %;          !  Size of fixed part of IAF 
macro IAF$W_FLAGS = 10,0,16,0 %;        !  Flags 
macro IAF$V_SHR = 10,0,1,0 %;           !  This is in a shareable image 
macro IAF$L_G_FIXOFF = 12,0,32,0 %;     !  Offset to g^ address data 
macro IAF$L_DOTADROFF = 16,0,32,0 %;    !  Offset to .address fixup data 
macro IAF$L_CHGPRTOFF = 20,0,32,0 %;    !  Offset to isect change prot. data 
macro IAF$L_SHLSTOFF = 24,0,32,0 %;     !  Offset to shareable image list 
macro IAF$L_SHRIMGCNT = 28,0,32,0 %;    !  Number of shareable images in shlst 
macro IAF$L_SHLEXTRA = 32,0,32,0 %;     !  Number of extra shareable images allowed 
macro IAF$L_PERMCTX = 36,0,32,0 %;      !  Permanent sharable image context 
 
!*** MODULE $ICPDEF ***
! +
!  ICP - CHANGE IMAGE SECTION PROTECTION DATA
! 
!  THIS STRUCTURE IS USED IN THE IMAGE FIXUP SECTION BY THE LINKER
!  TO INFORM THE IMAGE ACTIVATOR OF THE IMAGE SECTIONS THAT NEED
!  THEIR PROTECTION CHANGED.
! -
literal ICP$K_LENGTH = 8;               !  size of one section's data 
literal ICP$C_LENGTH = 8;               !  size of one section's data 
literal ICP$S_ICPDEF = 8;
macro ICP$L_BASEVA = 0,0,32,0 %;        !  virtual address of start of section 
macro ICP$W_NPAGES = 4,0,16,0 %;        !  number of pages to change protection on 
macro ICP$W_NEWPRT = 6,0,16,0 %;        !  new protection 
 
!*** MODULE $IDBDEF ***
! +
!  IDB - INTERRUPT DISPATCH BLOCK
! 
!  AN INTERRUPT DISPATCH BLOCK PROVIDES THE INFORMATION NECESSARY FOR A
!  UNIT INDEPENDENT, BUT CONTROLLER SPECIFIC, INTERRUPT DISPATCHER TO
!  DISPATCH INTERRUPTS TO THE PROPER DRIVER TO HANDLE AN INTERRUPT ON
!  A DEVICE UNIT.
! -
literal IDB$M_NO_CSR = 1;
literal IDB$K_LENGTH = 60;              ! LENGTH OF STANDARD IDB 
literal IDB$C_LENGTH = 60;              ! LENGTH OF STANDARD IDB 
literal IDB$S_IDBDEF = 60;
macro IDB$L_CSR = 0,0,32,0 %;           ! CONTROLLER CSR ADDRESS 
macro IDB$L_OWNER = 4,0,32,0 %;         ! OWNER UCB ADDRESS 
macro IDB$W_SIZE = 8,0,16,0 %;          ! SIZE OF IDB IN BYTES 
macro IDB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE OF IDB 
macro IDB$B_VECTOR = 11,0,8,0 %;        ! CONTROLLER VECTOR OFFSET
macro IDB$W_UNITS = 12,0,16,0 %;        ! NUMBER OF UNITS (SIZE OF UCBLST) 
macro IDB$B_TT_ENABLE = 14,0,8,0 %;     !  DZ32 line enable field
macro IDB$B_COMBO_CSR_OFFSET = 15,0,8,1 %; ! OFFSET TO START OF COMBO DEVICE STYLE CSRS
macro IDB$B_COMBO_VECTOR_OFFSET = 16,0,8,1 %; ! OFFSET TO START OF COMBO STYLE DEVICE VECTORS
macro IDB$B_FLAGS = 17,0,8,0 %;         !  IDB flags
macro IDB$V_NO_CSR = 17,0,1,0 %;        !  Set if CSR test fails. CSR for UNIBUS/QBUS is non-existent
macro IDB$W_SPARE1 = 18,0,16,1 %;       ! A SPARE WORD
macro IDB$L_SPL = 20,0,32,0 %;          ! ADDRESS OF DEVICE SPINLOCK
macro IDB$L_ADP = 24,0,32,0 %;          ! ADDRESS OF UBA ADAPTER CONTROL BLOCK 
macro IDB$L_UCBLST = 28,0,0,0 %;
literal IDB$S_UCBLST = 32;              ! UCB OR SECONDARY IDB ADDRESSES 
! (DEFAULT OF 8)
 
!*** MODULE $IFDDEF ***
! +
!  IMAGE FILE DESCRIPTOR BLOCK - RETURNED BY IMAGE ACTIVATOR
! -
literal IFD$M_EXEONLY = 1;
literal IFD$M_PRIV = 2;
literal IFD$M_SETVECTOR = 4;
literal IFD$K_LENGTH = 28;              ! LENGTH OF FIXED AREA OF IFD 
literal IFD$C_LENGTH = 28;              ! LENGTH OF FIXED AREA OF IFD 
literal IFD$S_IFDDEF = 28;
macro IFD$W_SIZE = 0,0,16,0 %;          ! SIZE IN BYTES OF IMAGE FILE DESCRIPTOR 
macro IFD$W_FILNAMOFF = 2,0,16,0 %;     ! OFFSET TO RESULTANT FILE NAME STRING 
macro IFD$W_CHAN = 8,0,16,0 %;          ! CHANNEL ON WHICH IMAGE FILE IS OPEN 
macro IFD$W_CMCHAN = 10,0,16,0 %;       ! COMPATIBILITY MODE CHANNEL 
macro IFD$L_CMKFIADR = 12,0,32,0 %;     ! COMPATIBILITY MODE IMAGE 
! KNOWN FILE ENTRY ADDRESS OR 0
macro IFD$W_FLAGS = 16,0,16,0 %;        ! IMAGE FILE DESCRIPTOR FLAGS 
macro IFD$V_EXEONLY = 16,0,1,0 %;       ! EXECUTE ONLY FILE 
macro IFD$V_PRIV = 16,1,1,0 %;          ! IMAGE INSTALLED WITH ENHANCED PRIVILEGE 
macro IFD$V_SETVECTOR = 16,2,1,0 %;     ! PRIVILEGED VECTORS TO BE INSTALLED 
macro IFD$Q_CURPROG = 20,0,0,0 %;
literal IFD$S_CURPROG = 8;              ! STRING DESCRIPTOR FOR CURRENTLY 
! RUNNING PROGRAM NAME
 
!*** MODULE $IHDDEF ***
! +
!  IMAGE HEADER RECORD DEFINITIONS - FIRST RECORD OF IMAGE HEADER
! -
literal IHD$K_MAJORID = 12848;          !  Major id value 
literal IHD$K_MINORID = 13616;          !  Minor id value 
literal IHD$K_EXE = 1;                  !  Executable image 
literal IHD$K_LIM = 2;                  !  Linkable image 
literal IHD$M_LNKDEBUG = 1;
literal IHD$M_LNKNOTFR = 2;
literal IHD$M_NOP0BUFS = 4;
literal IHD$M_PICIMG = 8;
literal IHD$M_P0IMAGE = 16;
literal IHD$M_DBGDMT = 32;
literal IHD$M_INISHR = 64;
literal IHD$M_MATCHCTL = 117440512;
literal IHD$K_LENGTH = 48;              !  Length of fixed area 
literal IHD$C_LENGTH = 48;              !  Length of fixed area 
literal IHD$C_MINCODE = -1;             !  Low bound of ALIAS values
literal IHD$C_NATIVE = -1;              !  Native mode image
literal IHD$C_RSX = 0;                  !  RSX image produced by TKB
literal IHD$C_BPA = 1;                  !  BASIC plus analog
literal IHD$C_ALIAS = 2;                !  Last 126 bytes contains ASCIC of image to activate
literal IHD$C_CLI = 3;                  !  Image is a CLI, run LOGINOUT
literal IHD$C_PMAX = 4;                 !  PMAX system image
literal IHD$C_MAXCODE = 4;              !  High bound of ALIAS values
! 
literal IHD$C_GEN_XLNKR = 1;            !  Cross linker
literal IHD$C_GEN_NATIVE = 2;           !  First native mode image header.
!   does not have LNKFLAGS, SYSVER and IAFVA fields
literal IHD$C_GEN_LNKFLG = 3;           !  Native with LNKFLAGS longword added
!   does not have SYSVER and IAFVA fields
literal IHD$C_GEN_SYSVER = 4;           !  Native with LNKFLAGS and SYSVER added
!   does not have IAFVA field
literal IHD$C_GEN_FIXUP = 5;            !  Version III image
!   contains LNKFLAGS, SYSVER, and IAFVA fields
literal IHD$C_GEN_NEWISD = 6;           !  ISD size field is a byte
literal IHD$S_IHDDEF = 512;
macro IHD$W_SIZE = 0,0,16,0 %;          !  Size in bytes of Image Header record 
macro IHD$W_ACTIVOFF = 2,0,16,0 %;      !  Byte offset to activation data 
macro IHD$W_SYMDBGOFF = 4,0,16,0 %;     !  Byte offset to symbol table and debug data 
macro IHD$W_IMGIDOFF = 6,0,16,0 %;      !  Byte offset to image ident data 
macro IHD$W_PATCHOFF = 8,0,16,0 %;      !  Byte offset to patch data 
macro IHD$W_VERSION_ARRAY_OFF = 10,0,16,0 %; !  Byte offset to version number array
macro IHD$W_MAJORID = 12,0,16,0 %;      !  Major id 
macro IHD$W_MINORID = 14,0,16,0 %;      !  Minor id 
macro IHD$B_HDRBLKCNT = 16,0,8,0 %;     !  Count of header blocks 
macro IHD$B_IMGTYPE = 17,0,8,0 %;       !  Image type 
! 
!  IMAGE TYPE CODES
! 
macro IHD$Q_PRIVREQS = 20,0,0,0 %;
literal IHD$S_PRIVREQS = 8;             !  Requested privilege mask 
macro IHD$W_IOCHANCNT = 28,0,16,0 %;    ! ! of channels requested 
! 0 if default
macro IHD$W_IMGIOCNT = 30,0,16,0 %;     ! ! of pages of image i/o section requested 
! 0 if default
macro IHD$R_LNKFLAGS_OVERLAY = 32,0,32,0 %;
macro IHD$L_LNKFLAGS = 32,0,32,0 %;     !  Linker produced image flags 
macro IHD$R_LNKFLAGS_BITS = 32,0,32,0 %;
macro IHD$V_LNKDEBUG = 32,0,1,0 %;      !  Full debugging requested 
macro IHD$V_LNKNOTFR = 32,1,1,0 %;      !  First transfer address missing 
macro IHD$V_NOP0BUFS = 32,2,1,0 %;      !  RMS use of P0 for image i/o disabled 
macro IHD$V_PICIMG = 32,3,1,0 %;        !  Image is position independent 
macro IHD$V_P0IMAGE = 32,4,1,0 %;       !  Image is in P0 space only 
macro IHD$V_DBGDMT = 32,5,1,0 %;        !  Image header has dmt fields
macro IHD$V_INISHR = 32,6,1,0 %;        !  Transfer array contains valid IHA$L_INISHR
macro IHD$V_MATCHCTL = 32,24,3,0 %;
literal IHD$S_MATCHCTL = 3;             !  Match control for linkable image 
macro IHD$L_IDENT = 36,0,32,0 %;        !  GBL SEC ident value for linkable image 
macro IHD$L_SYSVER = 40,0,32,0 %;       !  SYS$K_VERSION or 0 if not linked with exec 
macro IHD$L_IAFVA = 44,0,32,0 %;        !  Relative virtual address of fixup info 
macro IHD$T_SKIP = 48,0,0,0 %;
literal IHD$S_SKIP = 462;               !  ALIAS should be last word in 512 byte block
macro IHD$W_ALIAS = 510,0,16,0 %;       !  Code to use secondary image name
! *****************************************
! 
!   Define legal range of ALIAS constants. MINCODE must be equal to the
! 	lowest value and MAXCODE must be equal to the highest value.
! 
! ******************************************
! 
! 	Generation number returned by IMGSHR IMG$GET_IHD to SYSIMGACT.
! 	These do not appear in the image header but are inferred from the 
! 	contents of the image header
! 
 
!*** MODULE $IHADEF ***
! +
!  IMAGE HEADER ACTIVATION SECTION OFFSETS
! -
literal IHA$K_LENGTH = 20;              ! SIZE OF ACTIVATION SECTION 
literal IHA$C_LENGTH = 20;              ! SIZE OF ACTIVATION SECTION 
literal IHA$S_IHADEF = 20;
macro IHA$L_TFRADR1 = 0,0,32,0 %;       ! FIRST TRANSFER ADDRESS 
macro IHA$L_TFRADR2 = 4,0,32,0 %;       ! SECOND TRANSFER ADDRESS 
macro IHA$L_TFRADR3 = 8,0,32,0 %;       ! THIRD TRANSFER ADDRESS 
macro IHA$L_INISHR = 16,0,32,0 %;       ! SHARED IMAGE INITIALIZATION
! (valid if IHD$V_INISHR set)
 
!*** MODULE $IHPDEF ***
! +
!  IMAGE HEADER PATCH SECTION OFFSETS
! -
literal IHP$K_LENGTH = 44;              ! LENGTH OF PATCH HEADER SECTION 
literal IHP$C_LENGTH = 44;              ! LENGTH OF PATCH HEADER SECTION 
literal IHP$S_IHPDEF = 44;
macro IHP$L_ECO1 = 0,0,32,0 %;          ! DEC ECO LEVELS 1-32 
macro IHP$L_ECO2 = 4,0,32,0 %;          ! DEC ECO LEVELS 33-64 
macro IHP$L_ECO3 = 8,0,32,0 %;          ! DEC ECO LEVELS 65-98 
macro IHP$L_ECO4 = 12,0,32,0 %;         ! USER ECO LEVELS 99-132 
macro IHP$L_RW_PATSIZ = 16,0,32,0 %;    ! SIZE OF FREE RW PATCH AREA 
macro IHP$L_RW_PATADR = 20,0,32,0 %;    ! VIR ADDR OF NEXT FREE RW PATCH AREA 
macro IHP$L_RO_PATSIZ = 24,0,32,0 %;    ! SIZE OF FREE RO PATCH AREA 
macro IHP$L_RO_PATADR = 28,0,32,0 %;    ! VIR ADDR OF NEXT FREE RO PATCH AREA 
macro IHP$L_PATCOMTXT = 32,0,32,0 %;    ! PATCH COMMAND TEXT VIRTUAL BLOCK NUMBER 
macro IHP$Q_PATDATE = 36,0,0,0 %;
literal IHP$S_PATDATE = 8;              ! DATE OF MOST RECENT PATCH 
 
!*** MODULE $IHSDEF ***
! +
!  IMAGE HEADER SYMBOL TABLE AND DEBUG SECTION OFFSETS
! -
literal IHS$K_LENGTH = 20;              ! LENGTH OF SYMBOL TABLE SECTION 
literal IHS$C_LENGTH = 20;              ! LENGTH OF SYMBOL TABLE SECTION 
literal IHS$S_IHSDEF = 20;
macro IHS$L_DSTVBN = 0,0,32,0 %;        ! DEBUG SYMBOL TABLE VIRTUAL BLOCK NUMBER 
macro IHS$L_GSTVBN = 4,0,32,0 %;        ! GLOBAL SYMBOL TABLE VIRTUAL BLOCK NUMBER 
macro IHS$W_DSTBLKS = 8,0,16,0 %;       ! DEBUG SYMBOL TABLE BLOCK COUNT 
macro IHS$W_GSTRECS = 10,0,16,0 %;      ! GLOBAL SYMBOL TABLE RECORD COUNT 
macro IHS$L_DMTVBN = 12,0,32,0 %;       ! VBN OF DMT INFORMATION
macro IHS$L_DMTBYTES = 16,0,32,0 %;     ! LENGTH OF DMT INFO
 
!*** MODULE $IHIDEF ***
! +
!  IMAGE HEADER IDENTIFICATION SECTION OFFSETS
! -
literal IHI$K_LENGTH = 80;              ! LENGTH OF IMAGE HEADER IDENT SECTION 
literal IHI$C_LENGTH = 80;              ! LENGTH OF IMAGE HEADER IDENT SECTION 
literal IHI$S_IHIDEF = 80;
macro IHI$T_IMGNAM = 0,0,0,0 %;
literal IHI$S_IMGNAM = 40;              ! IMAGE NAME STRING 
macro IHI$T_IMGID = 40,0,0,0 %;
literal IHI$S_IMGID = 16;               ! IMAGE IDENT STRING 
macro IHI$Q_LINKTIME = 56,0,0,0 %;
literal IHI$S_LINKTIME = 8;             ! DATE AND TIME THIS IMAGE WAS LINKED 
! STANDARD SYSTEM QUADWORD FORMAT
macro IHI$T_LINKID = 64,0,0,0 %;
literal IHI$S_LINKID = 16;              ! LINKER IDENT STRING 
 
!*** MODULE $IHVNDEF ***
literal IHVN$M_SUBVERSION_MINOR_ID = 65535;
literal IHVN$M_SUBVERSION_MAJOR_ID = -65536;
literal IHVN$S_VERSION_ARRAY = 8;
macro IHVN$L_SUBSYSTEM_MASK = 0,0,32,0 %; !  Bit mask of nonzero version numbers
macro IHVN$L_SUBVERSION_ARRAY = 4,0,32,0 %; !  First array element
macro IHVN$V_SUBVERSION_MINOR_ID = 4,0,16,0 %;
literal IHVN$S_SUBVERSION_MINOR_ID = 16; !  Minor ID for each component
macro IHVN$V_SUBVERSION_MAJOR_ID = 4,16,16,0 %;
literal IHVN$S_SUBVERSION_MAJOR_ID = 16; !  Major ID for each component
literal IHVN$M_VERSION_MINOR_ID = 16777215;
literal IHVN$M_VERSION_MAJOR_ID = -16777216;
literal IHVN$S_OVERALL_VERSION = 4;
macro IHVN$V_VERSION_MINOR_ID = 0,0,24,0 %;
literal IHVN$S_VERSION_MINOR_ID = 24;   !  Minor ID of SYS.STB
macro IHVN$V_VERSION_MAJOR_ID = 0,24,8,0 %;
literal IHVN$S_VERSION_MAJOR_ID = 8;    !  Major ID of SYS.STB
literal IHVN$K_LENGTH = 132;
literal IHVN$C_LENGTH = 132;
 
!*** MODULE $IHXDEF ***
! +
!  IMAGE HEADER RECORD DEFINITIONS - CROSS LINKER - MAJORID = "01"
!          1ST RECORD OF IMAGE HEADER BLOCK
! -
literal IHX$K_MAJORID = 12592;          ! ^A/01/ MAJOR ID VALUE FOR CROSS LINKER 
literal IHX$K_MINORID = 12592;          ! ^A/01/ MINOR ID VALUE FOR CROSS LINKER 
literal IHX$K_MINORID1 = 12592;         ! ^A/01/ MINOR ID VALUE FOR CROSS LINKER WITH 
! SYMBOL TABLE AND 3RD TRANSFER ADR
literal IHX$K_LENGTH = 56;              ! LENGTH OF CROSS LINKER HEADER 
literal IHX$C_LENGTH = 56;              ! LENGTH OF CROSS LINKER HEADER 
literal IHX$S_IHXDEF = 56;
macro IHX$W_SIZE = 0,0,16,0 %;          ! SIZE IN BYTE OF IMAGE HEADER RECORD 
macro IHX$B_HDRBLKCNT = 2,0,8,0 %;      ! COUNT OF BLOCKS IN IMAGE HEADER 
macro IHX$Q_STARTADR = 4,0,0,0 %;
literal IHX$S_STARTADR = 8;             ! START ADDRESS 
macro IHX$W_MAJORID = 12,0,16,0 %;      ! MAJOR ID OF IMAGE HEADER 
macro IHX$W_MINORID = 14,0,16,0 %;      ! MINOR ID OF IMAGE HEADER 
macro IHX$T_IMGNAM = 16,0,0,0 %;
literal IHX$S_IMGNAM = 24;              ! IMAGE NAME 
! 
!  THE FOLLOWING FIELDS ARE PRESENT FOR MINOR ID'S GREATER OR EQUAL TO "03"
! 
macro IHX$L_DSTVBN = 40,0,32,0 %;       ! DEBUG SYMBOL TABLE VBN 
macro IHX$L_GSTVBN = 44,0,32,0 %;       ! GLOBAL SYMBOL TABLE VBN 
macro IHX$W_DSTBLKS = 48,0,16,0 %;      ! DEBUG SYMBOL TABLE BLOCKS 
macro IHX$W_GSTRECS = 50,0,16,0 %;      ! GLOBAL SYMBOL TABLE RECORD COUNT 
macro IHX$L_TFRADR3 = 52,0,32,0 %;      ! THIRD TRANSFER ADDRESS 
 
!*** MODULE $IMPDEF ***
! +
!         RMS32 IMPURE AREA OFFSET DEFINITIONS
! 
! -
literal IMP$C_ASYEFN = 30;              !  EFN FOR ASYNC WAITS 
literal IMP$C_IOREFN = 30;              !  EFN FOR IO RUNDOWN SYNCHRONIZATION 
literal IMP$C_ASYQIOEFN = 31;           !  EFN FOR ASYNC QIOS 
literal IMP$C_SYNCEFN = 27;             !  BASE EFN FOR SYNCHRONOUS QIO'S 
!  (28, 29 ALSO USED)
literal IMP$C_MBXEFN = 26;              !  EFN FOR QIOS TO NETWORK MAILBOXES 
! 
literal IMP$C_NPIOFILES = 63;           !  ! OF PIO SEGMENT FILES 
literal IMP$C_ENTPERSEG = 15;           !  ! OF IIO SEGMENT SLOTS 
!  PER INDEX TABLE SEGMENT
literal IMP$S_IMPDEF = 104;
macro IMP$W_RMSSTATUS = 0,0,16,0 %;     !  RMS OVERALL STATUS 
macro IMP$V_IIOS = 0,0,1,0 %;           !  SET IF THIS IS THE IMAGE 
!  I.O SEGMENT
macro IMP$V_AST = 0,1,1,0 %;            !  SET IF RUNNING AT EXEC AST LEVEL 
macro IMP$V_TEMP1 = 0,2,1,0 %;          !  TEMPORARY FLAG 
macro IMP$V_TEMP2 = 0,3,1,0 %;          !  " 
macro IMP$V_IORUNDOWN = 0,4,1,0 %;      !  SET IF IO RUNDOWN IN PROGRESS 
macro IMP$V_NOP0BUFS = 0,5,1,0 %;       !  SET IF RMS USE OF P0 FOR IMAGE I/O DISABLED 
macro IMP$V_RUH = 0,6,1,0 %;            !  Set if within RMS RU Handler 
macro IMP$V_RECOVERY = 0,7,1,0 %;       !  SET IF RECOVERY IN PROGRESS
macro IMP$V_RUH_SYNCH = 0,8,1,0 %;      !  SET IF RMS IO MUST SYNCH
!  WITH THE RU HANDLER
! 
macro IMP$B_PROT = 2,0,8,0 %;           !  PROTECTION FOR I/O BUFFER PAGES 
macro IMP$L_IOSEGADDR = 4,0,32,0 %;     !  ADDRESS OF FIRST FREE PAGE 
!  IN THIS (IMAGE OR PROCESS)
!  I/O SEGMENT
macro IMP$L_IOSEGLEN = 8,0,32,0 %;      !  ! OF FREE BYTES AT ABOVE ADDR 
macro IMP$L_FREEPGLH = 12,0,0,0 %;
literal IMP$S_FREEPGLH = 8;             !  FREE PAGE LIST HEAD 
macro IMP$L_SAVED_SP = 20,0,32,0 %;     !  SAVED VALUE OF SP AT ENTRY 
macro IMP$L_IFABTBL = 24,0,32,0 %;      !  IFAB TABLE ADDR 
macro IMP$L_IRABTBL = 28,0,32,0 %;      !  IRAB TABLE ADDR 
macro IMP$W_ENTPERSEG = 32,0,16,0 %;    !  ! OF SLOTS PER TABLE SEGMENT 
macro IMP$W_NUM_IFABS = 34,0,16,0 %;    !  NUMBER OF IFABS & IRABS CURRENTLY ALLOCATED 
macro IMP$L_IFBTBLINK = 36,0,32,0 %;    !  START OF IFAB TABLE (LINK TO NEXT SEGMENT) 
macro IMP$L_IRBTBLINK = 100,0,32,0 %;   !  START OF IRAB TABLE (LINK TO NEXT SEGMENT) 
 
!*** MODULE $IOCDEF ***
! +
! 
!  $IOCDEF - flag bits used in I/O database search routines.
! 
! -
literal IOC$M_PHY = 1;
literal IOC$M_TYPE = 2;
literal IOC$M_CLASS = 4;
literal IOC$M_LOCAL = 8;
literal IOC$M_EXISTS = 16;
literal IOC$M_2P = 32;
literal IOC$M_ANY = 64;
literal IOC$M_MOUNT = 128;
literal IOC$M_ALT = 256;
literal IOC$M_NO_TRANS = 512;
literal IOC$M_ALLOC = 1024;
literal IOC$S_IOCDEF = 2;
!  IOC$V_PHY must be bit 0!!
macro IOC$V_PHY = 0,0,1,0 %;            !  physical device specified
macro IOC$V_TYPE = 0,1,1,0 %;           !  device type name specified
macro IOC$V_CLASS = 0,2,1,0 %;          !  allocation class present
macro IOC$V_LOCAL = 0,3,1,0 %;          !  search local devices only
macro IOC$V_EXISTS = 0,4,1,0 %;         !  device exists
macro IOC$V_2P = 0,5,1,0 %;             !  device is on UCB secondary path
macro IOC$V_ANY = 0,6,1,0 %;            !  find any matching device
macro IOC$V_MOUNT = 0,7,1,0 %;          !  find only mountable devices
macro IOC$V_ALT = 0,8,1,0 %;            !  alternate UCB found
macro IOC$V_NO_TRANS = 0,9,1,0 %;       !  caller translated logical name
macro IOC$V_ALLOC = 0,10,1,0 %;         !  allocate mountable device
 
!*** MODULE $IO780DEF ***
! +
!  I/O SPACE LAYOUT FOR 11/780 CPU
! -
! DEFINE CONSTANT ADDRESSES 
literal IO780$AL_IOBASE = 536870912;    ! START OF I/O SPACE 
literal IO780$AL_PERNEX = 8192;         ! ! BYTES OR REGISTER SPACE/NEXUS 
literal IO780$AL_NNEX = 16;             ! ! OF NEXUSES 
literal IO780$AL_UB0SP = 537919488;     ! ADDR OF UB 0 SPACE 
literal IO780$AL_UB1SP = 538181632;     ! ADDR OF UB 1 SPACE 
literal IO780$AL_UB2SP = 538443776;     ! ADDR OF UB 2 SPACE 
literal IO780$AL_UB3SP = 538705920;     ! ADDR OF UB 3 SPACE 
 
!*** MODULE $IO750DEF ***
! +
!  I/O SPACE LAYOUT FOR 11/750 CPU
! -
! DEFINE CONSTANT ADDRESSES 
literal IO750$AL_IOBASE = 15859712;     ! START OF I/O SPACE FOR SLOT 16 
literal IO750$AL_PERNEX = 8192;         ! ! BYTES OF REGISTER SPACE/NEXUS 
literal IO750$AL_UBBASE = 15925248;     ! START OF UB 0 SPACE 
literal IO750$AL_MBBASE = 15892480;     ! START OF MB0 REGISTER SPACE 
literal IO750$AL_FLOAT = 15941632;      ! START OF FLOATING ADAPTER SPACE 
literal IO750$AL_NNEX = 16;             ! ! CONFIGURABLE NEXUSES 
literal IO750$AL_UB0SP = 16515072;      ! ADDR OF UB0 SPACE 
literal IO750$AL_UB1SP = 16252928;      ! ADDR OF UB1 SPACE 
! FIXED ADAPTER ASSIGNMENTS FOR 
!  SLOTS 0-9:
literal IO750$C_SL_MEM0 = 0;            !  MEMORY CONTROLLER 
literal IO750$C_SL_MPM0 = 1;            !  MULTIPORT MEMORIES... 
literal IO750$C_SL_MPM1 = 2;            !  
literal IO750$C_SL_MPM2 = 3;            !  
literal IO750$C_SL_MB0 = 4;             !  MASSBUS ADAPTERS... 
literal IO750$C_SL_MB1 = 5;             !  
literal IO750$C_SL_MB2 = 6;             !  
literal IO750$C_SL_MB3 = 7;             !  
literal IO750$C_SL_UB0 = 8;             !  UNIBUS 0 
literal IO750$C_SL_UB1 = 9;             !  UNIBUS 1 
 
!*** MODULE $IO730DEF ***
! ++
!  I/O SPACE LAYOUT FOR 11/730 CPU
! --
literal IO730$AL_IOBASE = 15859712;     !  START OF I/O SPACE 
literal IO730$AL_PERNEX = 8192;         !  ! BYTES OF REGISTER SPACE/NEXUS 
literal IO730$AL_NNEX = 16;             !  ! OF NEXUSES 
literal IO730$AL_UB0SP = 16515072;      !  ADDR OF UB0 SPACE 
 
!*** MODULE $IO790DEF ***
! ++
!  I/O SPACE LAYOUT FOR 11/790 CPU
! --
literal IO790$AL_IOA0 = 536870912;      ! START OF I/O SPACE FOR ABUS ADAPTER 0 
literal IO790$AL_IOA1 = 570425344;      ! START OF I/O SPACE FOR ABUS ADAPTER 1 
literal IO790$AL_IOA2 = 603979776;      ! START OF I/O SPACE FOR ABUS ADAPTER 2 
literal IO790$AL_IOA3 = 637534208;      ! START OF I/O SPACE FOR ABUS ADAPTER 3 
literal IO790$AL_PERNEX = 8192;         ! ! OF BYTES OF REGISTER SPACE/NEXUS 
literal IO790$AL_NNEX = 16;             ! NUMBER OF NEXUS PER SBIA 
literal IO790$AL_UB0SP = 1048576;       !  OFFSET OF UB 0 SPACE FROM BASE OF SBIA 
literal IO790$AL_IOACR = 524288;        !  OFFSET OF IO ADAPTER CR FROM BASE OF SBIA 
literal IO790$AL_PERABS = 33554432;     !  ADDRESS SPACE FOR EACH ABUS ADAPTER
literal IO790$K_SBIA = 1;               !  TYPE CODE FOR SBIA ADAPTER
literal IO790$C_SBIA = 1;               !  TYPE CODE FOR SBIA ADAPTER
 
!*** MODULE $IOUV1DEF ***
! ++
!  I/O SPACE LAYOUT FOR MicroVAX I CPU
! --
literal IOUV1$AL_QB0SP = 536870912;     !  ADDR OF QBUS SPACE 
 
!*** MODULE $IOUV2DEF ***
! ++
!  I/O SPACE LAYOUT FOR MicroVAX II CPU
! --
literal IOUV2$AL_QB0SP = 536870912;     !  ADDR OF QBUS SPACE 
literal IOUV2$AW_INTPR0 = 536878912;    !  INTERPROC COMMUN REG
!    (ICR) FOR ARBITER
literal IOUV2$AW_INTPR1 = 536878914;    !  ICR FOR AUXIL 1
literal IOUV2$AW_INTPR2 = 536878916;    !  ICR FOR AUXIL 2
literal IOUV2$AW_INTPR3 = 536878918;    !  ICR FOR AUXIL 3
literal IOUV2$AL_SIDEX = 537133060;     !  SYS ID EXTENSION REG
literal IOUV2$AW_BTDIAG = 537395200;    !  BOOT & DIAG REG
literal IOUV2$AL_MEMERR = 537395204;    !  MEM SYSTEM ERR REG
literal IOUV2$AL_CPUERR = 537395208;    !  CPU ERROR ADDR REG
literal IOUV2$AL_DMAERR = 537395212;    !  DMA ERROR ADDR REG
literal IOUV2$AL_QMAPS = 537427968;     !  FIRST QBUS MAP REG
literal IOUV2$AL_QMAPE = 537460732;     !  LAST QBUS MAP REG
literal IOUV2$AW_TODSEC = 537624576;    !  TODR SECOND
literal IOUV2$AW_TODSAL = 537624578;    !  TODR SECOND ALARM
literal IOUV2$AW_TODMIN = 537624580;    !  TODR MINUTE
literal IOUV2$AW_TODMAL = 537624582;    !  TODR MINUTE ALARM
literal IOUV2$AW_TODHR = 537624584;     !  TODR HOUR
literal IOUV2$AW_TODDWK = 537624588;    !  TODR DAY OF WEEK
literal IOUV2$AW_TODDAY = 537624590;    !  TODR DAY OF MONTH
literal IOUV2$AW_TODMON = 537624592;    !  TODR MONTH
literal IOUV2$AW_TODYR = 537624594;     !  TODR YEARR
literal IOUV2$AW_CPMBX = 537624604;     !  CONSOLE PROG MAILBOX
literal IOUV2$AW_CPMBX2 = 537624606;    !  CONSOLE PROG MAILBOX2
literal IOUV2$AL_QB0MEM = 805306368;    !  ADDR OF QBUS MEMORY
 
!*** MODULE $IO410DEF ***
! ++
!  I/O SPACE LAYOUT FOR VAXstation 2000/MicroVAX 2000 CPU
! --
literal IO410$AB_CFGTST = 537001984;    !  CONFIG AND TEST REG
literal IO410$AL_SIDEX = 537133060;     !  SYS ID EXTENSION REG
literal IO410$AL_HLTCOD = 537395200;    !  HALT CODE REGISTER
literal IO410$AL_MSER = 537395204;      !  MEM SYSTEM ERR REG
literal IO410$AL_MEAR = 537395208;      !  MEM ERROR ADDR REG
literal IO410$AB_INTMSK = 537395212;    !  INTERRUPT MASK REG
literal IO410$AB_VDCORG = 537395213;    !  VIDEO DISPLAY ORIGIN REG
literal IO410$AB_VDCSEL = 537395214;    !  VIDEO CTLR SELECT REG
literal IO410$AB_INTREQ = 537395215;    !  INTERRUPT REQ REG
literal IO410$AB_INTCLR = 537395215;    !  INTERRUPT CLEAR REG
literal IO410$AB_NIADRS = 537460736;    !  NETWORK ADDRESS ROM START
literal IO410$AB_NIADRE = 537460863;    !  NETWORK ADDRESS ROM END
literal IO410$AW_SERCSR = 537526272;    !  SERIAL LINE CSR
literal IO410$AW_SERRBF = 537526276;    !   " " RECEIVE BUFFER
literal IO410$AW_SERLPR = 537526276;    !   " " LINE PARAM REG
literal IO410$AW_SERTCR = 537526280;    !   " " TRANSMIT CONTROL REG
literal IO410$AW_SERMSR = 537526284;    !   " " MODEM STATUS REG
literal IO410$AW_SERTDR = 537526284;    !   " " TRANSMIT DATA REG
literal IO410$AL_TODSEC = 537591808;    !  TODR SECOND
literal IO410$AL_TODSAL = 537591812;    !  TODR SECOND ALARM
literal IO410$AL_TODMIN = 537591816;    !  TODR MINUTE
literal IO410$AL_TODMAL = 537591820;    !  TODR MINUTE ALARM
literal IO410$AL_TODHR = 537591824;     !  TODR HOUR
literal IO410$AL_TODHAL = 537591828;    !  TODR HOUR ALARM
literal IO410$AL_TODDWK = 537591832;    !  TODR DAY OF WEEK
literal IO410$AL_TODDAY = 537591836;    !  TODR DAY OF MONTH
literal IO410$AL_TODMON = 537591840;    !  TODR MONTH
literal IO410$AL_TODYR = 537591844;     !  TODR YEAR
literal IO410$AL_TODCSA = 537591848;    !  TODR CSR A
literal IO410$AL_TODCSB = 537591852;    !  TODR CSR B
literal IO410$AL_TODCSC = 537591856;    !  TODR CSR C
literal IO410$AL_TODCSD = 537591860;    !  TODR CSR D
literal IO410$AB_RAMST = 537591864;     !  TODR 1ST BYTE RAM
literal IO410$AB_CPMBX = 537591864;     !  CONSOLE MAILBOX
literal IO410$AB_CPFLG = 537591868;     !  CONSOLE FLAGS
literal IO410$AB_LK201 = 537591872;     !  KEYBOARD VARIATION
literal IO410$AB_CONID = 537591876;     !  CONSOLE DEV TYPE
literal IO410$AL_SCRPTR = 537591880;    !  CP SCRATCH RAM ADDR
literal IO410$AL_BATCHK = 537591944;    !  BATTERY CHECK DATA
literal IO410$AL_BOODEV = 537591960;    !  DEFAULT BOOT DEVICE
literal IO410$AL_BOOFLG = 537591976;    !  DEFAULT R5 FLAGS
literal IO410$AB_SCRLEN = 537591992;    !  SIZE OF CP SCR RAM
literal IO410$AB_RAMEND = 537592060;    !  TODR LAST BYTE RAM
literal IO410$AB_DKCREG = 537657344;    !  DISK REG DATA ACCESS
literal IO410$AB_DKCCMD = 537657348;    !  DISK CONTROLLER COMMAND
literal IO410$AW_DKSTAT = 537657348;    !  DISK INTERRUPT STATUS
literal IO410$AB_SCTLS = 537657472;     !  TAPE CTLR CHIP START
literal IO410$AB_SCTLE = 537657503;     !  TAPE CTLR CHIP END
literal IO410$AB_SCDADR = 537657504;    !  TAPE DMA ADR REG
literal IO410$AW_SCDCNT = 537657536;    !  TAPE DMA BYTCNT REG
literal IO410$AB_SCDDIR = 537657540;    !  TAPE DMA XFER DIRECTION  REG
literal IO410$AB_DKBUFS = 537722880;    !  DISK 16KB BUFFER START
literal IO410$AB_DKBUFE = 537739263;    !  DISK 16KB BUFFER END
literal IO410$AW_NIRDP = 537788416;     !  NI REG DATA PORT
literal IO410$AW_NIRAP = 537788420;     !  NI REG ADR PORT
literal IO410$AW_VCCMD = 537853952;     !  VIDEO CURSOR COMMAND REG
literal IO410$AL_VCXPOS = 537853956;    !  VIDEO CURSOR X POSITION
literal IO410$AL_VCYPOS = 537853960;    !  VIDEO CURSOR Y POSITION
literal IO410$AL_VCXMN1 = 537853964;    !  VIDEO CURSOR REGION 1 LEFT EDGE
literal IO410$AL_VCXMX1 = 537853968;    !  VIDEO CURSOR REGION 1 RIGHT EDGE
literal IO410$AL_VCYMN1 = 537853972;    !  VIDEO CURSOR REGION 1 TOP EDGE
literal IO410$AL_VCYMX1 = 537853976;    !  VIDEO CURSOR REGION 1 BOTTOM EDGE
literal IO410$AL_VCXMN2 = 537853996;    !  VIDEO CURSOR REGION 2 LEFT EDGE
literal IO410$AL_VCXMX2 = 537854000;    !  VIDEO CURSOR REGION 2 RIGHT EDGE
literal IO410$AL_VCYMN2 = 537854004;    !  VIDEO CURSOR REGION 2 TOP EDGE
literal IO410$AL_VCYMX2 = 537854008;    !  VIDEO CURSOR REGION 2 BOTTOM EDGE
literal IO410$AL_VCLOAD = 537854012;    !  VIDEO CURSOR SPRITE PATTERN LOAD
literal IO410$AB_NIROMS = 537919488;    !  NI OPTION ROM START
literal IO410$AB_NIROME = 538181631;    !  NI OPTION ROM END
literal IO410$AB_VDROMS = 538181632;    !  VIDEO OPTION ROM START
literal IO410$AB_VDROME = 538443775;    !  VIDEO OPTION ROM END
literal IO410$AB_PCROMS = 538443776;    !  PC-DOS COPROCESSOR ROM START
literal IO410$AB_PCROME = 538705919;    !  PC-DOS COPROCESSOR ROM END
literal IO410$AB_XROMS = 538705920;     !  FUTURE ROM START
literal IO410$AB_XROME = 538968063;     !  FUTURE ROM END
literal IO410$AB_PCCSR = 570425344;     !  START OF PC-DOS REGISTERS
literal IO410$AB_XCSR = 603979776;      !  REGISTERS FOR FUTURE OPTION
literal IO410$AB_VMEMS = 805306368;     !  VIDEO MEMORY START
literal IO410$AB_VMEME = 805437439;     !  VIDEO MEMORY END
literal IO410$AB_VDMEMS = 939524096;    !  VIDEO OPTION MEMORY START
literal IO410$AB_VDMEME = 1073741823;   !  VIDEO OPTION MEMORY END
literal IO410$AB_VDCSR1 = 939524096;    !  CSRS FOR OPTION IN VIDEO SLOT
literal IO410$AB_VDCSR2 = 1006632960;   !  CSRS FOR COLOR VIDEO
 
!*** MODULE $IO420DEF ***
literal IO420$AB_CACH2DS = 268435456;   !  2ND LEVEL CACHE DATA START
literal IO420$AB_CACH2DE = 268468223;   !  2ND LEVEL CACHE DATA END
literal IO420$AB_CACH2TS = 268500992;   !  2ND LEVEL CACHE TAG START
literal IO420$AB_CACH2TE = 268533759;   !  2ND LEVEL CACHE TAG END
literal IO420$AW_CFGTST = 537001984;    !  CONFIG AND TEST REG READ ONLY
literal IO420$AB_IORESET = 537001984;   !  IO RESET REG. WRITE ONLY
literal IO420$AL_SIDEX = 537133060;     !  SYS ID EXTENSION REG
literal IO420$AL_HLTCOD = 537395200;    !  HALT CODE REGISTER
literal IO420$AB_INTMSK = 537395212;    !  INTERRUPT MASK REG
literal IO420$AB_VDCORG = 537395213;    !  VIDEO DISPLAY ORIGIN REG
literal IO420$AB_VDCSEL = 537395214;    !  VIDEO CTLR SELECT REG
literal IO420$AB_INTREQ = 537395215;    !  INTERRUPT REQ REG READ ONLY
literal IO420$AB_INTCLR = 537395215;    !  INTERRUPT CLEAR REG WRITE ONLY
literal IO420$AW_DIAGDISP = 537395216;  !  DIAGNOSTIC DISPLAY REG WRITE ONLY
literal IO420$AL_PARCTL = 537395220;    !  PARITY CONTROL REG
literal IO420$AW_DIAGTIME = 537395230;  !  DIAGNOSTIC TIME REG
literal IO420$AL_CACR = 537411584;      !  SECONDARY CACHE CONTROL REG
literal IO420$AB_NIADRS = 537460736;    !  NETWORK ADDRESS ROM START
literal IO420$AB_NIADRE = 537460863;    !  NETWORK ADDRESS ROM END
literal IO420$AW_SERCSR = 537526272;    !  SERIAL LINE CSR
literal IO420$AW_SERBUF = 537526276;    !   " " RECEIVE BUFFER READ ONLY
literal IO420$AW_SERLPR = 537526276;    !   " " LINE PARAM REG WRITE ONLY
literal IO420$AW_SERTCR = 537526280;    !   " " TRANSMIT CONTROL REG
literal IO420$AW_SERMSR = 537526284;    !   " " MODEM STATUS REG READ ONLY 
literal IO420$AW_SERTDR = 537526284;    !   " " TRANSMIT DATA REG WRITE ONLY
literal IO420$AL_TODSEC = 537591808;    !  TOYC SECOND
literal IO420$AL_TODSAL = 537591812;    !  TOYC SECOND ALARM
literal IO420$AL_TODMIN = 537591816;    !  TOYC MINUTE
literal IO420$AL_TODMAL = 537591820;    !  TOYC MINUTE ALARM
literal IO420$AL_TODHR = 537591824;     !  TOYC HOUR
literal IO420$AL_TODHAL = 537591828;    !  TOYC HOUR ALARM
literal IO420$AL_TODDWK = 537591832;    !  TOYC DAY OF WEEK
literal IO420$AL_TODDAY = 537591836;    !  TOYC DAY OF MONTH
literal IO420$AL_TODMON = 537591840;    !  TOYC MONTH
literal IO420$AL_TODYR = 537591844;     !  TOYC YEAR
literal IO420$AL_TODCSA = 537591848;    !  TIME BASE DIVISOR
literal IO420$AL_TODCSB = 537591852;    !  DATE MODE AND FORMAT
literal IO420$AL_TODCSC = 537591856;    !  INTERRUPT FLAGS (NOT USED)
literal IO420$AL_TODCSD = 537591860;    !  VALID RAM AND TIME FLAG
literal IO420$AB_RAMST = 537591864;     !  RAM START
literal IO420$AB_CPMBX = 537591864;     !  CONSOLE MAILBOX
literal IO420$AB_CPFLG = 537591868;     !  CONSOLE FLAGS
literal IO420$AB_LK201 = 537591872;     !  KEYBOARD VARIATION
literal IO420$AB_CONID = 537591876;     !  CONSOLE DEV TYPE
literal IO420$AL_SCRPTR = 537591880;    !  CP SCRATCH RAM ADDR
literal IO420$AL_BATCHK = 537591944;    !  BATTERY CHECK DATA
literal IO420$AL_PASSWORD = 537591960;  !  ETHERNET TRIGGER PASSWORD CODE
literal IO420$AL_BOOFLG = 537591976;    !  DEFAULT R5 FLAGS
literal IO420$AB_SCRLEN = 537591992;    !  SIZE OF CP SCR RAM
literal IO420$AB_SCSI = 537591996;      !  CPU SCSI ID fields
literal IO420$AB_BOODEV_LEN = 537592000; !  DEFAULT BOOT DEVICE NAME LENGTH
literal IO420$AB_BOODEV = 537592004;    !  DEFAULT BOOT DEVICE
literal IO420$AB_RAMEND = 537592060;    !  RAM END
literal IO420$AB_DKCREG = 537657344;    !  DISK REG DATA ACCESS
literal IO420$AB_DKCCMD = 537657348;    !  DISK CONTROLLER COMMAND WRITE ONLY
literal IO420$AW_DKSTAT = 537657348;    !  DISK INTERRUPT STATUS READ ONLY
literal IO420$AB_SCSOUTDAT = 537657472; !  SCSI OUTPUT DATA REG WRITE ONLY
literal IO420$AB_SCSCURDAT = 537657472; !  SCSI CURRENT DATA REG READ ONLY
literal IO420$AB_SCSINICMD = 537657476; !  SCSI INITIATOR COMMAND REG
literal IO420$AB_SCSMODE = 537657480;   !  SCSI MODE REG
literal IO420$AB_SCSTARCMD = 537657484; !  SCSI TARGET COMMAND REG
literal IO420$AB_SCSSELENA = 537657488; !  SCSI SELECT ENABLE REG WRITE ONLY
literal IO420$AB_SCSCURSTA = 537657488; !  SCSI CURRENT BUS STATUS REG READ ONLY
literal IO420$AB_SCSDMASND = 537657492; !  SCSI START DMA SEND WRITE ONLY
literal IO420$AB_SCSSTATUS = 537657492; !  SCSI BUS AND STATUS REG READ ONLY
literal IO420$AB_SCSDMATRC = 537657496; !  SCSI START DMA TARGET RECEIVE WRITE ONLY
literal IO420$AB_SCSINDATA = 537657496; !  SCSI INPUT DATA REG READ ONLY
literal IO420$AB_SCSDMAIRC = 537657500; !  SCSI START DMA INITIATOR RECEIVE WRITE ONLY
literal IO420$AB_SCSRESET = 537657500;  !  SCSI RESET INTERRUPT/ERROR READ ONLY
literal IO420$AL_SCDADR = 537657504;    !  SCSI DMA ADDRESS REG
literal IO420$AL_SCDCNT = 537657536;    !  SCSI DMA BYTE COUNT REG
literal IO420$AB_SCDDIR = 537657540;    !  SCSI DMA TRANSFER DIRECTION
literal IO420$AB_STCMODE = 537657568;   !  STORAGE CONTROLLER MODE
literal IO420$AB_D16BUFS = 537722880;   !  DATA BUFFER (16KB COMPATIBILITY RANGE) START
literal IO420$AB_D16BUFE = 537739263;   !  DATA BUFFER (16KB COMPATIBILITY RANGE) END
literal IO420$AB_D128BUFS = 539820032;  !  DATA BUFFER (128KB FULL RANGE) START
literal IO420$AB_D128BUFE = 539951103;  !  DATA BUFFER (128KB FULL RANGE) END
literal IO420$AW_NIRDP = 537788416;     !  NI REG DATA PORT
literal IO420$AW_NIRAP = 537788420;     !  NI REG ADR PORT
literal IO420$AW_VCCMD = 537853952;     !  VIDEO CURSOR COMMAND REG
literal IO420$AW_VCXPOS = 537853956;    !  VIDEO CURSOR X POSITION
literal IO420$AW_VCYPOS = 537853960;    !  VIDEO CURSOR Y POSITION
literal IO420$AW_VCXMN1 = 537853964;    !  VIDEO CURSOR REGION 1 LEFT EDGE
literal IO420$AW_VCXMX1 = 537853968;    !  VIDEO CURSOR REGION 1 RIGHT EDGE
literal IO420$AW_VCYMN1 = 537853972;    !  VIDEO CURSOR REGION 1 TOP EDGE
literal IO420$AW_VCYMX1 = 537853976;    !  VIDEO CURSOR REGION 1 BOTTOM EDGE
literal IO420$AW_VCXMN2 = 537853996;    !  VIDEO CURSOR REGION 2 LEFT EDGE
literal IO420$AW_VCXMX2 = 537854000;    !  VIDEO CURSOR REGION 2 RIGHT EDGE
literal IO420$AW_VCYMN2 = 537854004;    !  VIDEO CURSOR REGION 2 TOP EDGE
literal IO420$AW_VCYMX2 = 537854008;    !  VIDEO CURSOR REGION 2 BOTTOM EDGE
literal IO420$AW_VCLOAD = 537854012;    !  VIDEO CURSOR SPRITE PATTERN LOAD
literal IO420$AB_SCFWROMS = 537919488;  !  STORAGE CONTROLLER OPTION FIRMWARE ROM START
literal IO420$AB_SCFWROME = 538050559;  !  STORAGE CONTROLLER OPTION FIRMWARE ROM END
literal IO420$AB_VDROMS = 538181632;    !  VIDEO OPTION ROM START
literal IO420$AB_VDROME = 538443775;    !  VIDEO OPTION ROM END
literal IO420$AB_X1ROMS = 538443776;    !  ADDITIONAL OPTION 1 ROM START
literal IO420$AB_X1ROME = 538705919;    !  ADDITIONAL OPTION 1 ROM END
literal IO420$AB_X2ROMS = 538705920;    !  ADDITIONAL OPTION 2 ROM START
literal IO420$AB_X2ROME = 538968063;    !  ADDITIONAL OPTION 2 ROM END
literal IO420$AB_X1CSRS = 570425344;    !  ADDITIONAL OPTION 1 CSR'S START
literal IO420$AB_X1CSRE = 603979775;    !  ADDITIONAL OPTION 1 CSR'S END
literal IO420$AB_X2CSRS = 603979776;    !  ADDITIONAL OPTION 2 CSR'S START
literal IO420$AB_X2CSRE = 637534207;    !  ADDITIONAL OPTION 2 CSR'S END
literal IO420$AB_VMEMS = 805306368;     !  VIDEO MEMORY START
literal IO420$AB_VMEME = 805568511;     !  VIDEO MEMORY END
literal IO420$AB_VD32MEMS = 939524096;  !  VIDEO OPTION MEMORY (32 BIT PATH) START
literal IO420$AB_VD32MEME = 1006632959; !  VIDEO OPTION MEMORY (32 BIT PATH) END
literal IO420$AB_VD16MEMS = 1006632960; !  VIDEO OPTION MEMORY (16 BIT PATH) START
literal IO420$AB_VD16MEME = 1006698495; !  VIDEO OPTION MEMORY (16 BIT PATH) END
literal IO420$AB_CVFWROMS = 538181632;  !  COLOR VIDEO OPTION FIRMWARE ROM START
literal IO420$AB_CVFWROME = 538312703;  !  COLOR VIDEO OPTION FIRMWARE ROM END
literal IO420$AB_CVADDER = 1006632960;  !  COLOR VIDEO OPTION ADDER REGS START
literal IO420$AB_CVFIFO = 1006633472;   !  COLOR VIDEO OPTION FIFO COMPRESSION REGS START
literal IO420$AB_CVVDAC = 1006633728;   !  COLOR VIDEO OPTION VIDEO DAC REGS START
literal IO420$AB_CVCURS = 1006633984;   !  COLOR VIDEO OPTION CURSOR REGS START
literal IO420$AW_CVVRDBK = 1006634240;  !  COLOR VIDEO OPTION VIDEO READBACK REG 
literal IO420$AB_CVMEMS = 1006665728;   !  COLOR VIDEO OPTION FIFO/TEMPLATE RAM START
literal IO420$AB_CVMEME = 1006698495;   !  COLOR VIDEO OPTION FIFO/TEMPLATE RAM END
literal IO420$AB_ASFWROMS = 538181632;  !  ASYNC SERIAL LINE OPTION FIRMWARE ROM START
literal IO420$AB_ASFWROME = 538312703;  !  ASYNC SERIAL LINE OPTION FIRMWARE ROM END
literal IO420$AB_ASCONSTA = 939524096;  !  ASYNC SERIAL LINE OPTION CONTROL AND STATUS REGS START
 
!*** MODULE $IO43DEF ***
literal IO43$AB_CACH2DS = 268435456;
literal IO43$AB_CACH2DE = 536870911;
literal IO43$AL_CFGTST = 537001984;
literal IO43$AB_IORESET = 537001984;
literal IO43$AL_SYSTYPE = 537133060;
literal IO43$AB_CPGETCHR = 537133124;
literal IO43$AB_CPMSGOUT = 537133132;
literal IO43$AB_CPPUTCHR = 537133144;
literal IO43$AL_ROMVERS = 537133176;
literal IO43$AB_ROMDIAG = 537133180;
literal IO43$AL_HLTCOD = 537395200;
literal IO43$AB_INTMSK = 537395212;
literal IO43$AB_VDCORG = 537395213;
literal IO43$AB_VDCSEL = 537395214;
literal IO43$AB_INTREQ = 537395215;
literal IO43$AB_INTCLR = 537395215;
literal IO43$AW_DIAGDISP = 537395216;
literal IO43$AL_PARCTL = 537395220;
literal IO43$AW_DIAGTIME = 537395230;
literal IO43$AB_NIADRS = 537460736;
literal IO43$AB_NIADRE = 537460863;
literal IO43$AW_SERCSR = 537526272;
literal IO43$AW_SERBUF = 537526276;
literal IO43$AW_SERLPR = 537526276;
literal IO43$AW_SERTCR = 537526280;
literal IO43$AW_SERMSR = 537526284;
literal IO43$AW_SERTDR = 537526284;
literal IO43$AL_TODSEC = 537591808;
literal IO43$AL_TODSAL = 537591812;
literal IO43$AL_TODMIN = 537591816;
literal IO43$AL_TODMAL = 537591820;
literal IO43$AL_TODHR = 537591824;
literal IO43$AL_TODHAL = 537591828;
literal IO43$AL_TODDWK = 537591832;
literal IO43$AL_TODDAY = 537591836;
literal IO43$AL_TODMON = 537591840;
literal IO43$AL_TODYR = 537591844;
literal IO43$AL_TODCSA = 537591848;
literal IO43$AL_TODCSB = 537591852;
literal IO43$AL_TODCSC = 537591856;
literal IO43$AL_TODCSD = 537591860;
literal IO43$AB_RAMST = 537591864;
literal IO43$AB_CPMBX = 537591864;
literal IO43$AB_CPFLG = 537591868;
literal IO43$AB_LK201 = 537591872;
literal IO43$AB_CONID = 537591876;
literal IO43$AL_SCRPTR = 537591880;
literal IO43$AL_BATCHK = 537591944;
literal IO43$AL_PASSWORD = 537591960;
literal IO43$AL_BOOFLG = 537591976;
literal IO43$AB_SCRLEN = 537591992;
literal IO43$AB_SCSI = 537591996;
literal IO43$AB_BOODEVLEN = 537592000;
literal IO43$AB_BOODEV = 537592004;
literal IO43$AB_RAMEND = 537592060;
literal IO43$AB_SCSOUTDAT = 537657472;
literal IO43$AB_SCSCURDAT = 537657472;
literal IO43$AB_SCSINICMD = 537657476;
literal IO43$AB_SCSMODE = 537657480;
literal IO43$AB_SCSTARCMD = 537657484;
literal IO43$AB_SCSSELENA = 537657488;
literal IO43$AB_SCSCURSTA = 537657488;
literal IO43$AB_SCSDMASND = 537657492;
literal IO43$AB_SCSSTATUS = 537657492;
literal IO43$AB_SCSDMATRC = 537657496;
literal IO43$AB_SCSINDATA = 537657496;
literal IO43$AB_SCSDMAIRC = 537657500;
literal IO43$AB_SCSRESET = 537657500;
literal IO43$AL_SCDADR = 537657504;
literal IO43$AL_SCDCNT = 537657536;
literal IO43$AB_SCDDIR = 537657540;
literal IO43$AB_SCSBOUTDAT = 537657728;
literal IO43$AB_SCSBCURDAT = 537657728;
literal IO43$AB_SCSBINICMD = 537657732;
literal IO43$AB_SCSBMODE = 537657736;
literal IO43$AB_SCSBTARCMD = 537657740;
literal IO43$AB_SCSBSELENA = 537657744;
literal IO43$AB_SCSBCURSTA = 537657744;
literal IO43$AB_SCSBDMASND = 537657748;
literal IO43$AB_SCSBSTATUS = 537657748;
literal IO43$AB_SCSBDMATRC = 537657752;
literal IO43$AB_SCSBINDATA = 537657752;
literal IO43$AB_SCSBDMAIRC = 537657756;
literal IO43$AB_SCSBRESET = 537657756;
literal IO43$AL_SCDBADR = 537657760;
literal IO43$AL_SCDBCNT = 537657792;
literal IO43$AB_SCDBDIR = 537657796;
literal IO43$AW_NIRDP = 537788416;
literal IO43$AW_NIRAP = 537788420;
literal IO43$AW_VCCMD = 537853952;
literal IO43$AW_VCXPOS = 537853956;
literal IO43$AW_VCYPOS = 537853960;
literal IO43$AW_VCXMN1 = 537853964;
literal IO43$AW_VCXMX1 = 537853968;
literal IO43$AW_VCYMN1 = 537853972;
literal IO43$AW_VCYMX1 = 537853976;
literal IO43$AW_VCXMN2 = 537853996;
literal IO43$AW_VCXMX2 = 537854000;
literal IO43$AW_VCYMN2 = 537854004;
literal IO43$AW_VCYMX2 = 537854008;
literal IO43$AW_VCLOAD = 537854012;
literal IO43$AB_CVFWROMS = 538181632;
literal IO43$AB_CVFWROME = 538312703;
literal IO43$AB_VDROMS = 538181632;
literal IO43$AB_VDROME = 538443775;
literal IO43$AB_X1ROMS = 538443776;
literal IO43$AB_X1ROME = 538705919;
literal IO43$AB_X2ROMS = 538705920;
literal IO43$AB_X2ROME = 538968063;
literal IO43$AB_D128BUFS = 539820032;
literal IO43$AB_D128BUFE = 539951103;
literal IO43$AB_CACH2TS = 553648128;
literal IO43$AB_CACH2TE = 553779199;
literal IO43$AL_SESR = 554696704;
literal IO43$AB_X1CSRS = 570425344;
literal IO43$AB_X1CSRE = 603979775;
literal IO43$AB_X2CSRS = 603979776;
literal IO43$AB_X2CSRE = 637534207;
literal IO43$AB_MEMDIAGS = 671088640;
literal IO43$AB_MEMDIAGE = 704643071;
literal IO43$AB_VMEMS = 805306368;
literal IO43$AB_VMEME = 805568511;
literal IO43$AB_VD32MEMS = 939524096;
literal IO43$AB_VD32MEME = 1006632959;
literal IO43$AB_VD16MEMS = 1006632960;
literal IO43$AB_VD16MEME = 1006698495;
literal IO43$AB_CVADDER = 1006632960;
literal IO43$AB_CVFIFO = 1006633472;
literal IO43$AB_CVVDAC = 1006633728;
literal IO43$AB_CVCURS = 1006633984;
literal IO43$AW_CVVRDBK = 1006634240;
literal IO43$AB_CVMEMS = 1006665728;
literal IO43$AB_CVMEME = 1006698495;
 
!*** MODULE $IO440DEF ***
literal IO440$AL_DMAPS = 536870912;
literal IO440$AL_DMAPE = 537001983;
literal IO440$AW_CFGTST = 537001984;
literal IO440$AB_IORESET = 537001984;
literal IO440$AL_SYSTYPE = 537133060;
literal IO440$AB_CPGETCHR = 537133124;
literal IO440$AB_CPMSGOUT = 537133132;
literal IO440$AB_CPPUTCHR = 537133144;
literal IO440$AL_ROMVERS = 537133176;
literal IO440$AB_ROMDIAG = 537133180;
literal IO440$AL_HLTCOD1 = 537395200;
literal IO440$AL_HLTCOD2 = 537395204;
literal IO440$AL_MAPBASE = 537395208;
literal IO440$AB_INTMSK = 537395212;
literal IO440$AB_INTREQ = 537395215;
literal IO440$AB_INTCLR = 537395215;
literal IO440$AW_DIAGDISP = 537395216;
literal IO440$AL_PARCTL = 537395220;
literal IO440$AW_DIAGTIMU = 537395228;
literal IO440$AW_DIAGTIMM = 537395230;
literal IO440$AB_NIADRS = 537460736;
literal IO440$AB_NIADRE = 537460863;
literal IO440$AW_SERCSR = 537526272;
literal IO440$AW_SERBUF = 537526276;
literal IO440$AW_SERLPR = 537526276;
literal IO440$AW_SERTCR = 537526280;
literal IO440$AW_SERMSR = 537526284;
literal IO440$AW_SERTDR = 537526284;
literal IO440$AW_DZLPR0 = 537526288;
literal IO440$AW_DZLPR1 = 537526292;
literal IO440$AW_DZLPR2 = 537526296;
literal IO440$AW_DZLPR3 = 537526300;
literal IO440$AL_TODSEC = 537591808;
literal IO440$AL_TODSAL = 537591812;
literal IO440$AL_TODMIN = 537591816;
literal IO440$AL_TODMAL = 537591820;
literal IO440$AL_TODHR = 537591824;
literal IO440$AL_TODHAL = 537591828;
literal IO440$AL_TODDWK = 537591832;
literal IO440$AL_TODDAY = 537591836;
literal IO440$AL_TODMON = 537591840;
literal IO440$AL_TODYR = 537591844;
literal IO440$AL_TODCSA = 537591848;
literal IO440$AL_TODCSB = 537591852;
literal IO440$AL_TODCSC = 537591856;
literal IO440$AL_TODCSD = 537591860;
literal IO440$AB_RAMST = 537591864;
literal IO440$AB_CPMBX = 537591864;
literal IO440$AB_CPFLG = 537591868;
literal IO440$AB_LK201 = 537591872;
literal IO440$AB_CONID = 537591876;
literal IO440$AL_SCRPTR = 537591880;
literal IO440$AL_BATCHK = 537591944;
literal IO440$AL_TRGPSW = 537591960;
literal IO440$AL_BOOFLG = 537591976;
literal IO440$AB_SCRLEN = 537591992;
literal IO440$AB_SCSI = 537591996;
literal IO440$AL_BOOLEN = 537592000;
literal IO440$AL_BOODEV = 537592004;
literal IO440$AB_RAMEND = 537592060;
literal IO440$AL_SCDADR = 537657344;
literal IO440$AB_SCDDIR = 537657356;
literal IO440$AL_SCSIS = 537657472;
literal IO440$AL_SCSIE = 537657535;
literal IO440$AB_SNDPS = 537722880;
literal IO440$AB_SNDPE = 537722887;
literal IO440$AW_NIRDP = 537788416;
literal IO440$AW_NIRAP = 537788420;
literal IO440$AL_LCGREGS = 537919488;
literal IO440$AL_LCGREGE = 538181631;
literal IO440$AL_MEMCNFG = 537925632;
literal IO440$AL_MEMSTAT = 537925636;
literal IO440$AL_MEMCUR = 537925640;
literal IO440$AL_MEMERR = 537925644;
literal IO440$AL_BEHR = 538249216;
literal IO440$AB_LCGROMS = 538181632;
literal IO440$AB_LCGROME = 538443775;
literal IO440$AL_LCGFIFS = 538443776;
literal IO440$AL_LCGFIFE = 538968063;
literal IO440$AL_INVFLS = 538968064;
literal IO440$AL_INVFLE = 538972159;
literal IO440$AL_FRMBUFS = 553648128;
literal IO440$AL_FRMBUFE = 570425343;
literal IO440$AL_OPTADS = 738197504;
literal IO440$AL_OPTADE = 754974719;
literal IO440$AB_SYNCROMS = 738197504;
literal IO440$AB_SYNCROME = 738459647;
literal IO440$AL_SYNCRST = 754974716;
literal IO440$AL_BUSADP = 805306368;
 
!*** MODULE $IO46DEF ***
literal IO46$AL_DMAPS = 536870912;
literal IO46$AL_DMAPE = 537001983;
literal IO46$AW_CFGTST = 537001984;
literal IO46$AB_IORESET = 537001984;
literal IO46$AL_SYSTYPE = 537133060;
literal IO46$AB_CPGETCHR = 537133124;
literal IO46$AB_CPMSGOUT = 537133132;
literal IO46$AB_CPPUTCHR = 537133144;
literal IO46$AL_ROMVERS = 537133176;
literal IO46$AB_ROMDIAG = 537133180;
literal IO46$AL_HLTCOD1 = 537395200;
literal IO46$AL_HLTCOD2 = 537395204;
literal IO46$AL_MAPBASE = 537395208;
literal IO46$AB_INTMSK = 537395212;
literal IO46$AB_INTREQ = 537395215;
literal IO46$AB_INTCLR = 537395215;
literal IO46$AW_DIAGDISP = 537395216;
literal IO46$AL_PARCTL = 537395220;
literal IO46$AW_DIAGTIMU = 537395228;
literal IO46$AW_DIAGTIMM = 537395230;
literal IO46$AB_NIADRS = 537460736;
literal IO46$AB_NIADRE = 537460863;
literal IO46$AW_SERCSR = 537526272;
literal IO46$AW_SERBUF = 537526276;
literal IO46$AW_SERLPR = 537526276;
literal IO46$AW_SERTCR = 537526280;
literal IO46$AW_SERMSR = 537526284;
literal IO46$AW_SERTDR = 537526284;
literal IO46$AW_DZLPR0 = 537526288;
literal IO46$AW_DZLPR1 = 537526292;
literal IO46$AW_DZLPR2 = 537526296;
literal IO46$AW_DZLPR3 = 537526300;
literal IO46$AL_TODSEC = 537591808;
literal IO46$AL_TODSAL = 537591812;
literal IO46$AL_TODMIN = 537591816;
literal IO46$AL_TODMAL = 537591820;
literal IO46$AL_TODHR = 537591824;
literal IO46$AL_TODHAL = 537591828;
literal IO46$AL_TODDWK = 537591832;
literal IO46$AL_TODDAY = 537591836;
literal IO46$AL_TODMON = 537591840;
literal IO46$AL_TODYR = 537591844;
literal IO46$AL_TODCSA = 537591848;
literal IO46$AL_TODCSB = 537591852;
literal IO46$AL_TODCSC = 537591856;
literal IO46$AL_TODCSD = 537591860;
literal IO46$AB_RAMST = 537591864;
literal IO46$AB_CPMBX = 537591864;
literal IO46$AB_CPFLG = 537591868;
literal IO46$AB_LK201 = 537591872;
literal IO46$AB_CONID = 537591876;
literal IO46$AL_SCRPTR = 537591880;
literal IO46$AL_BATCHK = 537591944;
literal IO46$AL_TRGPSW = 537591960;
literal IO46$AL_BOOFLG = 537591976;
literal IO46$AB_SCRLEN = 537591992;
literal IO46$AB_SCSI = 537591996;
literal IO46$AL_BOOLEN = 537592000;
literal IO46$AL_BOODEV = 537592004;
literal IO46$AB_RAMEND = 537592060;
literal IO46$AL_SCDADR = 537657344;
literal IO46$AB_SCDDIR = 537657356;
literal IO46$AL_SCSIS = 537657472;
literal IO46$AL_SCSIE = 537657535;
literal IO46$AB_SNDPS = 537722880;
literal IO46$AB_SNDPE = 537722887;
literal IO46$AW_NIRDP = 537788416;
literal IO46$AW_NIRAP = 537788420;
literal IO46$AL_LCGREGS = 537919488;
literal IO46$AL_LCGREGE = 538181631;
literal IO46$AL_MEMCNFG = 537925632;
literal IO46$AL_MEMSTAT = 537925636;
literal IO46$AL_MEMCUR = 537925640;
literal IO46$AL_MEMERR = 537925644;
literal IO46$AB_LCGROMS = 538181632;
literal IO46$AB_LCGROME = 538443775;
literal IO46$AL_LCGFIFS = 538443776;
literal IO46$AL_LCGFIFE = 538968063;
literal IO46$AL_INVFLS = 538968064;
literal IO46$AL_INVFLE = 539099135;
literal IO46$AL_FRMBUFS = 553648128;
literal IO46$AL_FRMBUFE = 570425343;
literal IO46$AL_CACH2TS = 570425344;
literal IO46$AL_CACH2TE = 570556415;
literal IO46$AL_SCCR = 587202560;
literal IO46$AL_MEMALTS = 603979776;
literal IO46$AL_MEMALTE = 612368383;
literal IO46$AL_OPTADS = 738197504;
literal IO46$AL_OPTADE = 754974719;
literal IO46$AB_SYNCROMS = 738197504;
literal IO46$AB_SYNCROME = 738459647;
literal IO46$AL_SYNCRST = 754974716;
literal IO46$AL_BUSADP = 805306368;
 
!*** MODULE $IO520DEF ***
!  MISC.
literal IO520$AL_CPUEEPROM = 536870912; !  CPU EEPROM
literal IO520$AL_SIDEX = 537133060;     !  Extended SID
literal IO520$AL_CPUSCRP = 553648128;   !  CPU scratch pad (8kb)
literal IO520$AL_RSTPAG = 553655808;    !  Reset page
literal IO520$AL_RSTPC = 553656308;     !  Reset PC
literal IO520$AL_RSTCOM = 553656312;    !  Reset complement of flags
literal IO520$AL_RSTFLAG = 553656316;   !  Reset flag
!  MEMORY CONTROLLER	
literal IO520$AL_MEMCTL = 562036736;    !  Control and status
literal IO520$AL_MEMDIAG = 562036740;   !  Diagnostic error
literal IO520$AL_SYSFLT = 562036744;    !  System fault error
literal IO520$AL_BUSTIM = 562036748;    !  Bus timeout - NSC
literal IO520$AL_CACHE = 562036752;     !  Cache - NSC
literal IO520$AL_NVUPD = 562036756;     !  NVRAM update register - NSC
literal IO520$AL_SYSADR = 562036760;    !  System fault error address
literal IO520$AL_SOFRST = 566231040;    !  Soft Reset register
literal IO520$AL_MEMCTLW = 564133888;   !  Control and status wait
literal IO520$AL_MEMDIAGW = 564133892;  !  Diagnostic error wait
literal IO520$AL_SYSFLTW = 564133896;   !  System fault error wait
literal IO520$AL_BUSTIMW = 564133900;   !  Bus timeout - NSC wait
literal IO520$AL_CACHEW = 564133904;    !  Cache - NSC wait
literal IO520$AL_NVUPDW = 564133908;    !  NVRAM update register - NSC wait
literal IO520$AL_SYSADRW = 564133912;   !  System fault error
literal IO520$AL_BLKHOLE = 568328192;   !  Black hole register
!  DMA registers	
literal IO520$AL_DMASTL = 570425344;    !  Memory subtransfer length
literal IO520$AL_DMACTL = 570490880;    !  DMA control
literal IO520$AL_DMASTA = 570556416;    !  DMA status
literal IO520$AL_DMAMBCD = 570621952;   !  Memory byte count and direction
literal IO520$AL_DMAMBCDA = 579010560;  !  Memory byte count and direction Zone A
literal IO520$AL_DMAMBCDB = 713228288;  !  Memory byte count and direction Zone B
literal IO520$AL_DMADIAG = 570687488;   !  Diagnostic
literal IO520$AL_DMAQAP = 570753024;    !  Queue address pointer
literal IO520$AL_DMAMMA = 570818560;    !  Main Memory address
literal IO520$AL_DMAMMAA = 579207168;   !  Main Memory address Zone A
literal IO520$AL_DMAMMAB = 713424896;   !  Main Memory address Zone B
literal IO520$AL_DMAQEP = 570884096;    !  Queue entry pointer
literal IO520$AL_DMAID = 570949632;     !  ID
literal IO520$AL_DMAEOQ = 571015168;    !  End of queue
literal IO520$AL_DMAARB = 571080704;    !  Arbiter control
literal IO520$AL_DMAECC = 571146240;    !  ECC
literal IO520$AL_DMAREF = 571211776;    !  Refresh
!  CLINK
literal IO520$AL_INTVEC0 = 587202560;   !  Interrupt Vector 0
literal IO520$AL_INTVEC1 = 587202564;   !  Interrupt Vector 1
literal IO520$AL_INTVEC2 = 587202568;   !  Interrupt Vector 2
literal IO520$AL_INTVEC3 = 587202572;   !  Interrupt Vector 3
literal IO520$AL_WINVEC = 587202588;    !  Winning Vector
literal IO520$AL_IRQ = 587202592;       !  IRQ for vectors 0-3
literal IO520$AL_IMR = 587202596;       !  Interrupt mask 
literal IO520$AL_CLIERR = 587268096;    !  Error register
literal IO520$AL_TIMINT = 587333632;    !  Timer interval - NSC
literal IO520$AL_SERREQ = 587399168;    !  Serial request
literal IO520$AL_SERREP = 587464704;    !  Serial reply
literal IO520$AL_SERQUE = 587530240;    !  Serial queue
literal IO520$AL_SERCSR = 587595776;    !  Serial CSR
literal IO520$AL_TIMCTL = 587661312;    !  Timer control - NSC
literal IO520$AL_TIMNXT = 587792384;    !  Timer next interval - NSC
literal IO520$AL_PROGDIV = 587857920;   !  Programable divider _ NSC
literal IO520$AL_PARCOMM = 587923456;   !  Parallel communications
!  write only.	
literal IO520$AL_RESET = 588185600;     !  CPU/zone hard reset
literal IO520$AL_SICSA = 595591168;     !  System Interupt Control Register
!  Zone A 
literal IO520$AL_SICSB = 729808896;     !  System Interupt Control Register
!  Zone B 
literal IO520$AL_PCOMMA = 596312064;    !  Parallel comm register Zone a 
literal IO520$AL_PCOMMB = 730529792;    !  Parallel comm register zone b
literal IO520$AL_PCSRA = 596377600;     !  Parallel CSR register Zone a 
literal IO520$AL_PCSRB = 730595328;     !  Parallel CSR register zone b
literal IO520$AL_IORSTA = 596508672;    !  IO hard reset zone A
literal IO520$AL_IORSTB = 730726400;    !  IO hard reset zone B
literal IO520$AL_SYNCHR = 600637440;    !  Synch Reset
literal IO520$AL_CLIERRW = 600768512;   !  Error register- world address
!  Memory Module
literal IO520$AL_MEMMOD4 = 603979776;   !  Memory Module slot 4 
literal IO520$AL_MEMMOD5 = 620756992;   !  Memory Module slot 5
literal IO520$AL_MEMMOD6 = 637534208;   !  Memory Module slot 6
literal IO520$AL_MEMMOD7 = 654311424;   !  Memory Module slot 7
 
!*** MODULE $IO8NNDEF ***
! +
!  I/O SPACE LAYOUT FOR 8NNN CPU
! -
!  NBIA Type code found in NAC field
literal IO8NN$K_NBIA = 16;              !  NBIA type
literal IO8NN$C_NBIA = 16;              !  NBIA type
literal IO8NN$AL_IOBASE = 536870912;    !  Start of I/O space
literal IO8NN$AL_NBIA_0 = 536870912;    !  I/O space for first NBIA
literal IO8NN$AL_NBIB_0 = 536870912;    !  I/O space 1st BI
literal IO8NN$AL_NBIB_1 = 570425344;    !  I/O space 2nd BI
literal IO8NN$AL_NBIA_1 = 603979776;    !  I/O space for second NBIA
literal IO8NN$AL_NBIB_2 = 603979776;    !  I/O space 3rd BI
literal IO8NN$AL_NBIB_3 = 637534208;    !  I/O space 4th BI
literal IO8NN$AL_NMI_MEM = 1040187392;  !  Nautilus Memory
literal IO8NN$AL_NMI_CSR0 = 524288;     !  offset to NMI CSR0
literal IO8NN$AL_PERNMI = 67108864;     !  I/O space per NMI nexus
literal IO8NN$AL_PERNBIA = 262144;      !  offset to next NBIA
literal IO8NN$AL_PERNBIB = 131072;      !  offset to next NBIB
literal IO8NN$AL_PERNEX = 8192;         !  # bytes of register space/nexus 
literal IO8NN$AL_NNEX = 16;             !  # of Nexuses per BI
literal IO8NN$AL_UB0SP = 1048576;       !  First unibus space
!  Define BI address space offsets and lengths
literal IO8NN$AL_BRDCST = 131072;       !  offset to broadcast space
literal IO8NN$AL_BTROM = 262144;        !  offset to boot rom space
literal IO8NN$AL_NODESP = 4194304;      !  offset to BI node window 0
literal IO8NN$AL_NDSPER = 262144;       !  size of BI node window
 
!*** MODULE $IO8PSDEF ***
! +
!  I/O SPACE LAYOUT FOR 8PS CPU
!  
!  Note: These are only the definitions that are different or additional for
! 	 8PS support. Most references to 8PS I/O space are doen with 8NN
! 	 symbols.
! -
literal IO8PS$AL_NBIA_2 = 671088640;    !  I/O space for third NBIA 
literal IO8PS$AL_NBIB_4 = 671088640;    !  I/O space 5th BI
literal IO8PS$AL_NBIB_5 = 704643072;    !  I/O space 6th BI
! 
!  STAR NBW CSR ADDRESSES
! 
literal IO8PS$AL_SCSR0 = 939524096;     !  STAR NBW CSR0
literal IO8PS$AL_SCSR1 = 939524104;     !  STAR NBW CSR1
literal IO8PS$AL_SCSR2 = 939526144;     !  STAR NBW CSR2
literal IO8PS$AL_SCSR3 = 939526152;     !  STAR NBW CSR3
literal IO8PS$AL_SCSR4 = 940048384;     !  STAR NBW CSR4
literal IO8PS$AL_SCSR7 = 940050440;     !  STAR NBW CSR7
! 
!  NEMO NBW CSR ADDRESSES
! 
literal IO8PS$AL_NCSR0 = 973078528;     !  NEMO NBW CSR0
literal IO8PS$AL_NCSR1 = 973078536;     !  NEMO NBW CSR1
literal IO8PS$AL_NCSR2 = 973080576;     !  NEMO NBW CSR2
literal IO8PS$AL_NCSR3 = 973080584;     !  NEMO NBW CSR3
literal IO8PS$AL_NCSR6 = 973604864;     !  NEMO NBW CSR6
literal IO8PS$AL_NCSR7 = 973604872;     !  NEMO NBW CSR7
 
!*** MODULE $IO8SSDEF ***
! +
!  I/O SPACE LAYOUT FOR 11/8SS CPU
! -
!  Define constant addresses 
literal IO8SS$AL_IOBASE = 536870912;    !  Base of I/O space
literal IO8SS$AL_PERNEX = 8192;         !  Size of Register Space/Node
literal IO8SS$AL_NNEX = 16;             !  # of Nodes
literal IO8SS$AL_BRDCST = 537001984;    !  Base of Broadcast Space
literal IO8SS$AL_BTROM = 537133056;     !  Base of Bootrom Space
literal IO8SS$AL_NDPRIV = 537395200;    !  Base of Node Private Space
literal IO8SS$AL_PCNTL = 537427968;     !  Pcntl CSR in Node Private Space
literal IO8SS$AL_NIBUF = 537460736;     !  NI Packet Buffer in Node Private Space
literal IO8SS$AL_EEPROM = 537493504;    !  EEPROM in Node Private Space
literal IO8SS$AL_NIDATA = 537526272;    !  NI Data Register in Node Private Space
literal IO8SS$AL_NIADDR = 537559040;    !  NI ADDR Register in Node Private Space
literal IO8SS$AL_RCX50 = 537591808;     !  RX50 Registers in Node Private Space
literal IO8SS$AL_WATCH = 537624576;     !  Watch Chip in Node Private Space
literal IO8SS$AL_NODESP = 541065216;    !  Node 0 Window Space
literal IO8SS$AL_NDSPER = 262144;       !  Size of Window Space
 
!*** MODULE $IO009DEF ***
! ++
!  I/O SPACE LAYOUT FOR PROCESSOR 009.
! --
!  DEFINE CONSTANT ADDRESSES 
literal IO009$AL_IOBASE = 67108864;     !  START PHYSICAL ADDRESS OF I/O SPACE 
literal IO009$AL_PERNEX = 0;            !  ! BYTES OF REGISTER SPACE/NEXUS 
literal IO009$AL_NNEX = 1;              !  ! NUMBER OF NEXUSES 
 
!*** MODULE $IO60DEF ***
literal IO60$AL_IOBASE = 805306368;     ! Base of I/O space
literal IO60$K_PERNEX = 33554432;       ! Size of Register Space/Node
literal IO60$K_NNEX = 8;                ! Number of Nodes
literal IO60$L_FBIC_BASE = 33553920;    ! Offset to FBIC registers
literal IO60$AL_SYSTYPE = 537133060;    !  System Type
literal IO60$AL_SSC_BASE = 538181632;   !  SSC base address register
literal IO60$AL_SSCCR = 538181648;      !  SSC configuration register
literal IO60$AL_TODR = 538181740;       !  TOY clock
literal IO60$AL_TCR0 = 538181888;       !  Timer 0 Control Register
literal IO60$AL_TIR0 = 538181892;       !  Timer 0 Interval Register
literal IO60$AL_TNIR0 = 538181896;      !  Timer 0 Next Interval Register
literal IO60$AL_TIVR0 = 538181900;      !  Timer 0 Interrupt Vector Register
literal IO60$AL_TCR1 = 538181904;       !  Timer 1 Control Register
literal IO60$AL_TIR1 = 538181908;       !  Timer 1 Interval Register
literal IO60$AL_TNIR1 = 538181912;      !  Timer 1 Next Interval Register
literal IO60$AL_TIVR1 = 538181916;      !  Timer 1 Interrupt Vector Register
literal IO60$AB_NVRS = 538182656;       !  Start of RAM
literal IO60$AB_NVR0 = 538182656;       !  NVRx fields
literal IO60$AB_NVR1 = 538182657;       !   (see $KA60DEF
literal IO60$AB_NVR2 = 538182658;       !    for detail)
literal IO60$AB_SCSI_HOST_ID = 538182848; !  SCSI host ID
literal IO60$AL_CCAPTR = 538182928;     !  Location of CCA pointer
literal IO60$AL_CTSIAPTR = 538182932;   !  Location of CTSIA pointer
literal IO60$AB_CONSOLE_NODE = 538182986;
literal IO60$AB_NVRE = 538183679;       !  End of NVR
literal IO60$AL_INT_BASE = 256;         ! Interrupt base
literal IO60$K_PERINT = 32;             ! Space per slot
literal IO60$AL_QB0SP = 536870912;      !  QBUS I/O space
literal IO60$AL_INTPR0 = 536878912;     !  Arbiter doorbell
literal IO60$AL_INTPR1 = 536878914;     !  Arbiter doorbell #1
literal IO60$AL_INTPR2 = 536878916;     !  Arbiter doorbell #2
literal IO60$AL_INTPR3 = 536878918;     !  Arbiter doorbell #3
literal IO60$AL_INTPR4 = 536878920;     !  Arbiter doorbell #4
literal IO60$AL_INTPR5 = 536878922;     !  Arbiter doorbell #5
literal IO60$AL_INTPR6 = 536878924;     !  Arbiter doorbell #6
literal IO60$AL_INTPR7 = 536878926;     !  Arbiter doorbell #7
literal IO60$AL_SCR = 537395200;        !  System config reg
literal IO60$AL_DSER = 537395204;       !  DMA system error reg
literal IO60$AL_MEAR = 537395208;       !  DMA master error reg
literal IO60$AL_MSER = 537395212;       !  DMA slave error reg
literal IO60$AL_QBMBR = 537395216;      !  QBUS map base address register
literal IO60$AL_QMAPS = 537427968;      !  First QBUS map reg
literal IO60$AL_QMAPE = 537460732;      !  Last QBUS map reg
literal IO60$AL_QB0MEM = 805306368;     !  Start of QBUS memory
literal IO60$AL_FQAMCSR = 811597824;    !  FQAM CSR
literal IO60$L_CACHE_TAG = 15728640;    ! Offset to tag store
literal IO60$L_MODULE_ROM = 14680064;   ! Offset to ROM
literal IO60$L_CPU_FBIC_OFFSET = 16777216; ! Offset to CPU FBICs
literal IO60$L_SII_BASE = 0;            ! SII registers
literal IO60$L_NI_RDP = 2097152;        ! LANCE RDP
literal IO60$L_NI_RAP = 2097156;        ! LANCE RAP
literal IO60$B_SII_RAMS = 4194304;      ! SII RAM start
literal IO60$B_SII_RAME = 4325375;      ! SII RAM end
literal IO60$L_DZ_CSR = 6291456;        ! DZ CSR
literal IO60$L_DZ_RBUF = 6291460;       ! DZ RBUF
literal IO60$L_DZ_LPR = 6291460;        ! DZ LPR
literal IO60$L_DZ_TCR = 6291464;        ! DZ TCR
literal IO60$L_DZ_MSR = 6291468;        ! DZ MSR
literal IO60$L_DZ_TDR = 6291468;        ! DZ TDR
literal IO60$L_IOCSR = 8388608;         ! IOCSR register
literal IO60$B_NI_RAMS = 10485760;      ! LANCE RAM start
literal IO60$B_NI_RAME = 10616831;      ! LANCE RAM end
literal IO60$B_GFX_ROM = 0;             ! Diagnostic/boot ROM
literal IO60$B_GFX_DRAM_WEITEK = 4554752; !  DRAM Weitek output buffer
literal IO60$B_GFX_DRAM_SCB = 4947968;  !  DRAM SCB area
literal IO60$B_GFX_DRAM_SVX = 5237760;  !  DRAM SVX area
literal IO60$B_GFX_IMODE_VRAM = 8388608; ! I mode VRAM
literal IO60$B_GFX_XMODE_VRAM = 25165824; ! X mod VRAM
literal IO60$B_GFX_PATTMEM = 26214400;  ! Pattern memory
literal IO60$B_GFX_TCHIP = 27262976;    ! T chip
literal IO60$B_GFX_DCHIP = 28311552;    ! D chip
literal IO60$B_GFX_ACHIP = 29360128;    ! A chip
literal IO60$C_CVAXMINREV = 3;
literal IO60$K_CVAXMINREV = 3;
literal IO60$C_FBICMINREV = 1;
literal IO60$K_FBICMINREV = 1;
literal IO60$C_UBDELAY = 4;
literal IO60$C_TENUSEC = 3;
 
!*** MODULE $IO650DEF ***
! ++
!  I/O SPACE LAYOUT FOR MAYFAIR CPU
! --
literal IO650$AB_CACH2 = 268435456;     !  2NDARY CACHE
literal IO650$AL_QB0SP = 536870912;     !  ADDR OF QBUS SPACE 
literal IO650$AW_INTPR0 = 536878912;    !  INTERPROC COMMUN REG
!    (ICR) FOR ARBITER
literal IO650$AW_INTPR1 = 536878914;    !  ICR FOR AUXIL 1
literal IO650$AW_INTPR2 = 536878916;    !  ICR FOR AUXIL 2
literal IO650$AW_INTPR3 = 536878918;    !  ICR FOR AUXIL 3
literal IO650$AL_SIDEX = 537133060;     !  SYS ID EXTENSION REG
literal IO650$AL_GETCHAR = 537133064;   !  Console get_character routine
literal IO650$AL_OUTMSG = 537133068;    !  Console output_message routine
literal IO650$AL_CACR = 537411584;      !  Cache Control Register
literal IO650$AL_BDR = 537411588;       !  Boot and Diagnostic Register
literal IO650$AL_QMAPS = 537427968;     !  FIRST QBUS MAP REG
literal IO650$AL_QMAPE = 537460732;     !  LAST QBUS MAP REG
literal IO650$AL_SCR = 537395200;       !  SYSTEM CONFIGURATION REGISTER
literal IO650$AL_DSER = 537395204;      !  DMA SYSTEM ERROR REGISTER
literal IO650$AL_MEAR = 537395208;      !  MASTERERROR ADDRESS REG
literal IO650$AL_SEAR = 537395212;      !  SLAVE ERROR ADDR REG
literal IO650$AL_QBMBR = 537395216;     !  Q-22 BUS MAP BASE ADDRESS REGISTER
literal IO650$AL_MEM0 = 537395456;      !  Main Memory Register 0
literal IO650$AL_MEM16 = 537395520;     !  Main Memory Register 16
literal IO650$AL_MEM17 = 537395524;     !  Main Memory Register 17
literal IO650$AL_SSCBR = 538181632;     !  SSC BASE ADDRESS REGISTER
literal IO650$AL_SSCCR = 538181648;     !  SSC CONFIGURATION REGISTER
literal IO650$AL_CBTCR = 538181664;     !  CDAL BUS TIMEOUT  CONTROL REGISTSER
literal IO650$AL_DLEDR = 538181680;     !  DIAGNOSTIC LED REGISTER
literal IO650$AL_TCR0 = 538181888;      !  Timer 0 Control Register
literal IO650$AL_TIR0 = 538181892;      !  Timer 0 Interval Register
literal IO650$AL_TNIR0 = 538181896;     !  Timer 0 Next Interval Register
literal IO650$AL_TIVR0 = 538181900;     !  Timer 0 Interrupt Vector Register
literal IO650$AL_TCR1 = 538181904;      !  Timer 1 Control Register
literal IO650$AL_TIR1 = 538181908;      !  Timer 1 Interval Register
literal IO650$AL_TNIR1 = 538181912;     !  Timer 1 Next Interval Register
literal IO650$AL_TIVR1 = 538181916;     !  Timer 1 Interrupt Vector Register
literal IO650$AB_NVR = 538182656;       !  PUBLIC NONVOLATIVE RAM AREA
literal IO650$AL_CONSPAGE = 538182672;  !  Pointer to console I/O Vector
literal IO650$AB_NVRE = 538214399;      !  END OF NVR
literal IO650$AL_QB0MEM = 805306368;    !  ADDR OF QBUS MEMORY
 
!*** MODULE $IO640DEF ***
literal IO640$AL_QB0SP = 536870912;     !  ADDR OF QBUS SPACE 
literal IO640$AW_INTPR0 = 536878912;    !  INTERPROC COMMUN REG
!    (ICR) FOR ARBITER
literal IO640$AW_INTPR1 = 536878914;    !  ICR FOR AUXIL 1
literal IO640$AW_INTPR2 = 536878916;    !  ICR FOR AUXIL 2
literal IO640$AW_INTPR3 = 536878918;    !  ICR FOR AUXIL 3
literal IO640$AL_SIDEX = 537133060;     !  SYS ID EXTENSION REG
literal IO640$AL_GETCHAR = 537133064;   !  Console get_character routine
literal IO640$AL_OUTMSG = 537133068;    !  Console output_message routine
literal IO640$AL_SCR = 537395200;       !  SYSTEM CONFIGURATION REGISTER
literal IO640$AL_DSER = 537395204;      !  DMA SYSTEM ERROR REGISTER
literal IO640$AL_MEAR = 537395208;      !  MASTERERROR ADDRESS REG
literal IO640$AL_SEAR = 537395212;      !  SLAVE ERROR ADDR REG
literal IO640$AL_QBMBR = 537395216;     !  Q-22 BUS MAP BASE ADDRESS REGISTER
literal IO640$AL_MEM0 = 537395456;      !  Main Memory Register 0
literal IO640$AL_MEM16 = 537395520;     !  Main Memory Register 16
literal IO640$AL_MEM17 = 537395524;     !  Main Memory Register 17
literal IO640$AL_BDR = 537411588;       !  Boot and Diagnostic Register
literal IO640$AL_NISA = 537412096;      !  NI Station Address ROM
literal IO640$AL_NIRDP = 537412608;     !  NI Register Data Port
literal IO640$AL_NIRAP = 537412612;     !  NI Register Address Port
literal IO640$AL_SII = 537413120;       !  SII registers
literal IO640$AL_QMAPS = 537427968;     !  FIRST QBUS MAP REG
literal IO640$AL_QMAPE = 537460732;     !  LAST QBUS MAP REG
literal IO640$AB_SII_RAM = 537919488;   !  SII RAM BUFFER
literal IO640$AB_SII_RAME = 538050559;  !  END OF SII RAM BUFFER
literal IO640$AB_NI_RAM = 538050560;    !  NI RAM BUFFER
literal IO640$AB_NI_RAME = 538181631;   !  END OF NI RAM BUFFER
literal IO640$AL_SSCBR = 538181632;     !  SSC BASE ADDRESS REGISTER
literal IO640$AL_SSCCR = 538181648;     !  SSC CONFIGURATION REGISTER
literal IO640$AL_CBTCR = 538181664;     !  CDAL BUS TIMEOUT  CONTROL REGISTSER
literal IO640$AL_DLEDR = 538181680;     !  DIAGNOSTIC LED REGISTER
literal IO640$AL_TCR0 = 538181888;      !  Timer 0 Control Register
literal IO640$AL_TIR0 = 538181892;      !  Timer 0 Interval Register
literal IO640$AL_TNIR0 = 538181896;     !  Timer 0 Next Interval Register
literal IO640$AL_TIVR0 = 538181900;     !  Timer 0 Interrupt Vector Register
literal IO640$AL_TCR1 = 538181904;      !  Timer 1 Control Register
literal IO640$AL_TIR1 = 538181908;      !  Timer 1 Interval Register
literal IO640$AL_TNIR1 = 538181912;     !  Timer 1 Next Interval Register
literal IO640$AL_TIVR1 = 538181916;     !  Timer 1 Interrupt Vector Register
literal IO640$AB_NVR = 538182656;       !  PUBLIC NONVOLATIVE RAM AREA
literal IO640$AL_CONSPAGE = 538182672;  !  Pointer to console I/O Vector
literal IO640$AB_NVRE = 538214399;      !  END OF NVR
literal IO640$AL_QB0MEM = 805306368;    !  ADDR OF QBUS MEMORY
 
!*** MODULE $IO660DEF ***
literal IO660$AL_QB0SP = 536870912;
literal IO660$AW_QDSS = 536878848;
literal IO660$AW_IPCR0 = 536878912;
literal IO660$AW_IPCR1 = 536878914;
literal IO660$AW_IPCR2 = 536878916;
literal IO660$AW_IPCR3 = 536878918;
literal IO660$AL_SHAC = 536887808;
literal IO660$AL_SGEC = 536903680;
literal IO660$AB_ROM = 537133056;
literal IO660$S_ROM = 262144;
literal IO660$AL_SIDEX = 537133060;
literal IO660$AL_GETCHAR = 537133064;
literal IO660$AL_OUTMSG = 537133068;
literal IO660$AL_SSHMA = 537133096;
literal IO660$AL_SCR = 537395200;
literal IO660$AL_DSER = 537395204;
literal IO660$AL_QBEAR = 537395208;
literal IO660$AL_DEAR = 537395212;
literal IO660$AL_QBMBR = 537395216;
literal IO660$AL_MEMCON = 537395456;
literal IO660$AL_MMESR = 537395520;
literal IO660$AL_MMCDSR = 537395524;
literal IO660$AL_BDR = 537411584;
literal IO660$AL_QMAP = 537427968;
literal IO660$S_QMAP = 32768;
literal IO660$AL_SSCBR = 538181632;
literal IO660$AL_SSCCR = 538181648;
literal IO660$AL_CBTCR = 538181664;
literal IO660$AL_DLEDR = 538181680;
literal IO660$AL_TCR0 = 538181888;
literal IO660$AL_TIR0 = 538181892;
literal IO660$AL_TNIR0 = 538181896;
literal IO660$AL_TIVR0 = 538181900;
literal IO660$AL_TCR1 = 538181904;
literal IO660$AL_TIR1 = 538181908;
literal IO660$AL_TNIR1 = 538181912;
literal IO660$AL_TIVR1 = 538181916;
literal IO660$AB_NVR = 538182656;
literal IO660$S_NVR = 1024;
literal IO660$AL_CONSPAGE = 538182672;
literal IO660$AL_TAG = 538247168;
literal IO660$S_TAG = 1024;
literal IO660$AL_DATA = 538248192;
literal IO660$S_DATA = 1024;
literal IO660$AL_BEHR = 538249216;
literal IO660$AL_QB0MEM = 805306368;
 
!*** MODULE $IO670DEF ***
literal IO670$AL_QB0SP = 536870912;
literal IO670$AW_QDSS = 536878848;
literal IO670$AW_IPCR0 = 536878912;
literal IO670$AW_IPCR1 = 536878914;
literal IO670$AW_IPCR2 = 536878916;
literal IO670$AW_IPCR3 = 536878918;
literal IO670$AL_SHAC1 = 536887296;
literal IO670$AL_SHAC2 = 536887808;
literal IO670$AL_SGEC = 536903680;
literal IO670$AB_ROM = 537133056;
literal IO670$S_ROM = 262144;
literal IO670$AL_SIDEX = 537133060;
literal IO670$AL_GETCHAR = 537133064;
literal IO670$AL_OUTMSG = 537133068;
literal IO670$AL_SSHMA = 537133096;
literal IO670$AL_SCR = 537395200;
literal IO670$AL_DSER = 537395204;
literal IO670$AL_QBEAR = 537395208;
literal IO670$AL_DEAR = 537395212;
literal IO670$AL_QBMBR = 537395216;
literal IO670$AL_MEMCON = 537395456;
literal IO670$AL_MEMSIG = 537395520;
literal IO670$AL_RMESR = 537395584;
literal IO670$AL_RMEAR = 537395588;
literal IO670$AL_RIOEAR = 537395592;
literal IO670$AL_CEAR = 537395596;
literal IO670$AL_MCDSR = 537395600;
literal IO670$AL_BDR = 537411584;
literal IO670$AL_QMAP = 537427968;
literal IO670$S_QMAP = 32768;
literal IO670$AL_SSCBR = 538181632;
literal IO670$AL_SSCCR = 538181648;
literal IO670$AL_CBTCR = 538181664;
literal IO670$AL_DLEDR = 538181680;
literal IO670$AL_TCR0 = 538181888;
literal IO670$AL_TIR0 = 538181892;
literal IO670$AL_TNIR0 = 538181896;
literal IO670$AL_TIVR0 = 538181900;
literal IO670$AL_TCR1 = 538181904;
literal IO670$AL_TIR1 = 538181908;
literal IO670$AL_TNIR1 = 538181912;
literal IO670$AL_TIVR1 = 538181916;
literal IO670$AB_NVR = 538182656;
literal IO670$S_NVR = 1024;
literal IO670$AL_CONSPAGE = 538182672;
literal IO670$AL_QB0MEM = 805306368;
 
!*** MODULE $IO9AQDEF ***
! +
!  I/O SPACE LAYOUT FOR 9AQ CPU
! -
!  ***Note SDL has problems with larger than 32 bit integers***
! 	In this definition, it might be convenient to express several
! 	34 bit addresses.  However instead of doing that, we rather
! 	define the 25 bit PFNs associated with these addresses.  The
! 	natural way that one might define these would be to equate
! 	the symbol to the 34 bit (or more precisely, the nine digit hex
! 	number with the two high order bits zero) quantity divided by 200
! 	hex.  However due to SDL's difficulty with these quantities, we
! 	instead express the value as a 7 digit (28 bits) hex number divided
! 	by 2.  That is, one will see values such as +%x3E00000/%x2, which
! 	really mean +%x3E0000000/%x200.
!  Define constant addresses 
!  Base of I/O space - first the true PFN for the 34 bit address then 30 bit address used
!  during VMB time when we arre running unmapped.
literal IO9AQ$AL_IOBASE_PFN = 32505856; !  34 bit address PFN
literal IO9AQ$AL_IOBASE_30 = 536870912; !  30 bit address
!  XMI0 Node Space base - region of 16 512KB node spaces for the upto 16 XMI
!  devices that can possibly be addressed on XMI number 0.  First we have the
!  true 34 bit address followed by the 30 bit address.
literal IO9AQ$AL_XMI0_NODESP_PFN = 32505856; !  34 bit address PFN
literal IO9AQ$AL_XMI0_NODESP_30 = 536870912; !  30 bit address
!  Likewise for XMI1, XMI2 and XMI3
literal IO9AQ$AL_XMI1_NODESP_PFN = 32522240; !  34 bit address PFN
literal IO9AQ$AL_XMI1_NODESP_30 = 545259520; !  30 bit address
literal IO9AQ$AL_XMI2_NODESP_PFN = 32538624; !  34 bit address PFN
literal IO9AQ$AL_XMI2_NODESP_30 = 553648128; !  30 bit address
literal IO9AQ$AL_XMI3_NODESP_PFN = 32555008; !  34 bit address PFN
literal IO9AQ$AL_XMI3_NODESP_30 = 562036736; !  30 bit address
!  Size of each of the upto 64 possible XMI node spaces - This could be used with
!  XMI0_NODESP to index into the proper node space.  Also the maximum number
!  of XMI nodes supported by the hardware architecture
literal IO9AQ$C_XMI_NODESP_SIZ = 524288; !  Size of XMI nodespace
literal IO9AQ$C_N_XMI_NEX = 64;         !  # of Nodes
!  Beginning of the upto 14 XBI Window Spaces.
literal IO9AQ$AL_XBI0_WINDSP_PFN = 32571392; !  34 bit address PFN
literal IO9AQ$AL_XBI0_WINDSP_30 = 570425344; !  30 bit address
!  Other 13 XBI Window Spaces
literal IO9AQ$AL_XBI1_WINDSP_PFN = 32636928; !  34 bit address PFN
literal IO9AQ$AL_XBI1_WINDSP_30 = 603979776; !  30 bit address
literal IO9AQ$AL_XBI2_WINDSP_PFN = 32702464; !  34 bit address PFN
literal IO9AQ$AL_XBI2_WINDSP_30 = 637534208; !  30 bit address
literal IO9AQ$AL_XBI3_WINDSP_PFN = 32768000; !  34 bit address PFN
literal IO9AQ$AL_XBI3_WINDSP_30 = 671088640; !  30 bit address
literal IO9AQ$AL_XBI4_WINDSP_PFN = 32833536; !  34 bit address PFN
literal IO9AQ$AL_XBI4_WINDSP_30 = 704643072; !  30 bit address
literal IO9AQ$AL_XBI5_WINDSP_PFN = 32899072; !  34 bit address PFN
literal IO9AQ$AL_XBI5_WINDSP_30 = 738197504; !  30 bit address
literal IO9AQ$AL_XBI6_WINDSP_PFN = 32964608; !  34 bit address PFN
literal IO9AQ$AL_XBI6_WINDSP_30 = 771751936; !  30 bit address
literal IO9AQ$AL_XBI7_WINDSP_PFN = 33030144; !  34 bit address PFN
literal IO9AQ$AL_XBI7_WINDSP_30 = 805306368; !  30 bit address
literal IO9AQ$AL_XBI8_WINDSP_PFN = 33095680; !  34 bit address PFN
literal IO9AQ$AL_XBI8_WINDSP_30 = 570425344; !  30 bit address
literal IO9AQ$AL_XBI9_WINDSP_PFN = 33161216; !  34 bit address PFN
literal IO9AQ$AL_XBI9_WINDSP_30 = 872415232; !  30 bit address
literal IO9AQ$AL_XBIA_WINDSP_PFN = 33226752; !  34 bit address PFN
literal IO9AQ$AL_XBIA_WINDSP_30 = 905969664; !  30 bit address
literal IO9AQ$AL_XBIB_WINDSP_PFN = 33292288; !  34 bit address PFN
literal IO9AQ$AL_XBIB_WINDSP_30 = 939524096; !  30 bit address
literal IO9AQ$AL_XBIC_WINDSP_PFN = 33357824; !  34 bit address PFN
literal IO9AQ$AL_XBIC_WINDSP_30 = 973078528; !  30 bit address
literal IO9AQ$AL_XBID_WINDSP_PFN = 33423360; !  34 bit address PFN
literal IO9AQ$AL_XBID_WINDSP_30 = 1006632960; !  30 bit address
!  Size of each XBI Window and the maximum number of XBI nodes supported by hardware
literal IO9AQ$C_XBI_WIND_SIZ = 33554432; !  Size of I/O adap space
literal IO9AQ$C_XBINEX = 14;            !  Max # of XBI Nodes
!  Define BI address space offsets and lengths
literal IO9AQ$C_BINODSIZ = 8192;        !  size of BI node space
literal IO9AQ$C_BIWINDOW = 4194304;     !  offset to BI node window 0
literal IO9AQ$C_BIWSIZ = 262144;        !  size of BI node window
literal IO9AQ$C_BINODNUM = 16;          !  Max # of BI Nodes per BI
!  Define the 4 XJA private spaces
literal IO9AQ$AL_XJA0_PRIVSP_PFN = 33488896; !  34 bit address PFN
literal IO9AQ$AL_XJA0_PRIVSP_30 = 1040187392; !  30 bit address
literal IO9AQ$AL_XJA1_PRIVSP_PFN = 33489920; !  34 bit address PFN
literal IO9AQ$AL_XJA1_PRIVSP_30 = 1040711680; !  30 bit address
literal IO9AQ$AL_XJA2_PRIVSP_PFN = 33490944; !  34 bit address PFN
literal IO9AQ$AL_XJA2_PRIVSP_30 = 1041235968; !  30 bit address
literal IO9AQ$AL_XJA3_PRIVSP_PFN = 33491968; !  34 bit address PFN
literal IO9AQ$AL_XJA3_PRIVSP_30 = 1041760256; !  30 bit address
literal IO9AQ$C_XJA_PRIVSP_SIZ = 524288; !  Size of each
!   XJA private space
!  JBOX/SPU Register Space
literal IO9AQ$AL_JBOX_REGSP_PFN = 33492992; !  34 bit address PFN
literal IO9AQ$AL_JBOX_REGSP_30 = 1042284544; !  30 bit address
 
!*** MODULE $IO9CCDEF ***
! +
!  I/O SPACE LAYOUT FOR 11/9CC CPU
! -
!  Define constant addresses 
literal IO9CC$AL_IOBASE = 536870912;    !  Base of I/O space
literal IO9CC$AL_XMI_PRIV = 536870912;  !  XMI Private space
literal IO9CC$AL_SYSTYPE = 537133060;   !  MicroVAX system type
!  register
literal IO9CC$AL_SSCBASE = 538181632;   !  SSC base register
literal IO9CC$AL_CONSEL = 538181680;    !  SSC CONSEL register
literal IO9CC$AL_TIMERS = 538181888;    !  Programmable Timers
literal IO9CC$L_CSR1ADMR = 308;         !  CSR1 ADMR
literal IO9CC$AL_IP_IVINTR = 553713664; !  Interprocessor Interrupts
literal IO9CC$AL_WE_IVINTR = 553779200; !  Write Error IP
literal IO9CC$AL_NODESP = 562036736;    !  Base of XMI node space
literal IO9CC$C_PERNEX = 524288;        !  Size of XMI nodespace
literal IO9CC$C_PERXBI = 33554432;      !  Size of I/O adap space
literal IO9CC$C_NNEX = 16;              !  # of Nodes
literal IO9CC$C_XNEX = 14;              !  # of XMI Nodes
literal IO9CC$AL_IOADAP1 = 570425344;   !  I/O adap1 addr. space
!  Define BI address space offsets and lengths
literal IO9CC$C_BINODSIZ = 8192;        !  size of BI node space
literal IO9CC$C_BIWINDOW = 4194304;     !  offset to BI node window 0
literal IO9CC$C_BIWSIZ = 262144;        !  size of BI node window
 
!*** MODULE $IO9RRDEF ***
! +
!  I/O Space layout for 9RR CPU
! -
literal IO9RR$AL_CREGWE = 536870912;    !  CREG write enable
literal IO9RR$AL_IOBASE = 536870912;    !  Base of I/O space
literal IO9RR$AL_XMI_PRIV = 536870912;  !  XMI Private space
literal IO9RR$AL_SYSTYPE = 537133060;   !  MicroVAX system type register
literal IO9RR$AB_ROM = 537133056;       !  Console ROM halt protected region
literal IO9RR$AB_ROM_HLTENA = 537657344; !  Console ROM halt enabled region
literal IO9RR$K_ROM = 262144;           !  Console ROM size in bytes
literal IO9RR$AB_EEPROM = 537395200;    !  Console EEPROM halt protected region
literal IO9RR$AB_EEPROM_HLTENA = 537919488; !  Console EEPROM halt enabled region
literal IO9RR$K_EEPROM = 32768;         !  Console EEPROM size in bytes
literal IO9RR$AL_SSCBAR = 538181632;    !  SSC Base Address Register
literal IO9RR$AL_SSCCNR = 538181648;    !  SSC Configuration Register
literal IO9RR$AL_SSCCNF = 538181648;    !  SSC Configuration Register (old name)
literal IO9RR$AL_SSCBTR = 538181664;    !  SSC Bus Timeout Control
literal IO9RR$AL_OPORT = 538181680;     !  SSC Output Port
literal IO9RR$AL_SSCOPRT = 538181680;   !  SSC Output Port (old name)
literal IO9RR$AL_IPORT = 538181696;     !  SSC Input Port
literal IO9RR$AL_SSCIPRT = 538181696;   !  SSC Input Port (old name)
literal IO9RR$AL_CRBADR = 538181936;    !  CREG base address register
literal IO9RR$AL_CRADMR = 538181940;    !  CREG address decode mask register
literal IO9RR$AL_EEBADR = 538181952;    !  EEPROM base address register
literal IO9RR$AL_EEADMR = 538181956;    !  EEPROM address decode mask register
literal IO9RR$AL_TIMERS = 538181984;    !  Programmable Timers
literal IO9RR$AL_TCR0 = 538181984;      !  Programmable Timer 0
literal IO9RR$AL_TIR0 = 538181988;      !  Programmable Timer 0
literal IO9RR$AL_TNIR0 = 538181992;     !  Programmable Timer 0
literal IO9RR$AL_TIVR0 = 538181996;     !  Programmable Timer 0
literal IO9RR$AL_TCR1 = 538182000;      !  Programmable Timer 1
literal IO9RR$AL_TIR1 = 538182004;      !  Programmable Timer 1
literal IO9RR$AL_TNIR1 = 538182008;     !  Programmable Timer 1
literal IO9RR$AL_TIVR1 = 538182012;     !  Programmable Timer 1
literal IO9RR$AL_INTTIM = 538182136;    !  Interval timer counter register (diagnostic use only)
literal IO9RR$AB_RAM = 538182656;       !  RSSC RAM base address
literal IO9RR$K_RAM = 1024;             !  RSSC RAM size in bytes
literal IO9RR$AB_IPINTR = 553713664;    !  Interprocessor Interrupts
literal IO9RR$AL_IP_IVINTR = 553713664; !  Interprocessor Interrupts (old name)
literal IO9RR$K_IPINTR = 65536;         !  Interprocessor Interrupts region size
literal IO9RR$AB_WEINTR = 553779200;    !  Write Error IP
literal IO9RR$AL_WE_IVINTR = 553779200; !  Write Error IP (old name)
literal IO9RR$K_WEINTR = 65536;         !  Write Error IP region size
literal IO9RR$AB_NODESPACE = 562036736; !  Base of XMI node space
literal IO9RR$AL_NODESP = 562036736;    !  Base of XMI node space (old name)
literal IO9RR$K_NODESPACE = 524288;     !  Size of XMI node space
literal IO9RR$C_PERNEX = 524288;        !  Size of XMI nodespace
literal IO9RR$C_PERXBI = 33554432;      !  Size of I/O adap space
literal IO9RR$C_NNEX = 16;              !  # of Nodes
literal IO9RR$C_XNEX = 14;              !  # of XMI Nodes
literal IO9RR$AL_IOADAP1 = 570425344;   !  I/O adap1 addr. space
!  Define BI address space offsets and lengths
literal IO9RR$C_BINODSIZ = 8192;        !  size of BI node space
literal IO9RR$C_BIWINDOW = 4194304;     !  offset to BI node window 0
literal IO9RR$C_BIWSIZ = 262144;        !  size of BI node window
 
!*** MODULE $IO1202DEF ***
! +
!  I/O Space layout for 1202 CPU
! 
!  Note:  All definition assume 32-bit mode, but will function in both 30-bit and 32-bit mode.
! -
literal IO1202$AL_IOBASE = -536870912;  !  Base of I/O space
literal IO1202$AL_XMI_PRIV = -536870912; !  XMI Private space
literal IO1202$AL_CREGWE = -536870912;  !  CREG write enable
literal IO1202$AL_CREG0 = -536870912;   !  CREG0 (if mapped by SSCOPRT)
literal IO1202$AL_CREG1 = -536870912;   !  CREG1 (if mapped by SSCOPRT)
literal IO1202$AL_SYSTYPE = -536608764; !  System type register
literal IO1202$AB_ROM = -536608768;     !  Console ROM halt protected region
literal IO1202$AB_ROM_HLTENA = -535691264; !  Console ROM halt enabled region
literal IO1202$K_ROM = 393216;          !  Console ROM size in bytes
literal IO1202$AB_RAM_BBU = -535559168; !  Console RAM preserved by BBU
literal IO1202$K_RAM_BBU = 1024;        !  Console RAM size preserved by BBU
literal IO1202$AB_EEPROM = -536215552;  !  Console EEPROM halt protected region
literal IO1202$AB_EEPROM_HLTENA = -535822336; !  Console EEPROM halt enabled region
literal IO1202$K_EEPROM = 32768;        !  Console EEPROM size in bytes
literal IO1202$AL_MSSC = -535560192;    !  Start of SSC registers
literal IO1202$AL_SSCBAR = -535560192;  !  SSC Base Address Register
literal IO1202$AL_SSCCNR = -535560176;  !  SSC Configuration Register
literal IO1202$AL_SSCBTR = -535560160;  !  SSC Bus Timeout Control
literal IO1202$AL_OPORT = -535560144;   !  SSC Output Port
literal IO1202$AL_IPORT = -535560128;   !  SSC Input Port
literal IO1202$AL_CRBADR = -535559888;  !  CREG base address register
literal IO1202$AL_CRADMR = -535559884;  !  CREG address decode mask register
literal IO1202$AL_EEBADR = -535559872;  !  EEPROM base address register
literal IO1202$AL_EEADMR = -535559868;  !  EEPROM address decode mask register
literal IO1202$AL_TIMERS = -535559840;  !  Programmable Timers
literal IO1202$AL_TCR0 = -535559840;    !  Programmable Timer 0
literal IO1202$AL_TIR0 = -535559836;    !  Programmable Timer 0
literal IO1202$AL_TNIR0 = -535559832;   !  Programmable Timer 0  
literal IO1202$AL_TIVR0 = -535559828;   !  Programmable Timer 0
literal IO1202$AL_TCR1 = -535559824;    !  Programmable Timer 1
literal IO1202$AL_TIR1 = -535559820;    !  Programmable Timer 1
literal IO1202$AL_TNIR1 = -535559816;   !  Programmable Timer 1
literal IO1202$AL_TIVR1 = -535559812;   !  Programmable Timer 1
literal IO1202$AL_SSCICR = -535559688;  !  Interval timer counter register (diagnostic use only)
literal IO1202$AB_MSSC_RAM = -535559168; !  MSSC RAM base address
literal IO1202$K_MSSC_RAM = 1024;       !  MSSC RAM size in bytes
literal IO1202$AB_MAXMI_RAM = -520060928; !  Start of MAXMI RAM
literal IO1202$K_MAXMI_RAM = 8192;      !  Size of MAXMI RAM
literal IO1202$AB_MAXMI = -520093696;   !  MAXMI private space register
literal IO1202$AB_DCSR = -520093696;    !  DAL diagnostic register
literal IO1202$AB_FDAL0 = -520093664;   !  Failing DAL register 0
literal IO1202$AB_FDAL1 = -520093656;   !  Failing DAL register 1
literal IO1202$AB_FDAL2 = -520093648;   !  Failing DAL register 2
literal IO1202$AB_FDAL3 = -520093656;   !  Failing DAL register 3
literal IO1202$AB_IPINTR = -520028160;  !  Interprocessor Interrupts
literal IO1202$K_IPINTR = 65536;        !  Interprocessor Interrupts region size
literal IO1202$AB_WEINTR = -519962624;  !  Write Error IP
literal IO1202$K_WEINTR = 65536;        !  Write Error IP region size
literal IO1202$AB_NODESPACE = -511705088; !  Base of XMI node space
literal IO1202$K_NODESPACE = 524288;    !  Size of XMI node space
literal IO1202$C_PERNEX = 524288;       !  Size of XMI nodespace
literal IO1202$C_PERXBI = 33554432;     !  Size of I/O adap space
literal IO1202$C_NNEX = 16;             !  # of Nodes
literal IO1202$C_XNEX = 14;             !  # of XMI Nodes
literal IO1202$AL_IOADAP1 = -503316480; !  I/O adap1 addr. space
!  Define BI address space offsets and lengths
literal IO1202$C_BINODSIZ = 8192;       !  size of BI node space
literal IO1202$C_BIWINDOW = 4194304;    !  offset to BI node window 0
literal IO1202$C_BIWSIZ = 262144;       !  size of BI node window
 
!*** MODULE $IPLDEF ***
! +
!  TEMPORARY PROCESSOR PRIORITY LEVEL DEFINITIONS
! -
!  
literal IPL$_HWCLK = 24;                ! HARDWARE CLOCK LEVEL 
literal IPL$_HWCLKLO = 22;              ! HARDWARE CLOCK LO LEVEL
literal IPL$_PERFMON = 15;              ! PERFORMANCE MONITORING SYNCH LEVEL 
literal IPL$_IOPOST = 4;                ! I/O POST PROCESSING LEVEL 
literal IPL$_MAILBOX = 11;              ! WRITE MAILBOX INTERLOCK LEVEL 
literal IPL$_POWER = 31;                ! POWERFAIL INTERLOCK LEVEL 
literal IPL$_QUEUEAST = 6;              ! QUEUE AST LEVEL 
literal IPL$_RESCHED = 3;               ! SCHEDULER LEVEL 
literal IPL$_SYNCH = 8;                 ! SYSTEM DATA BASE SYNCHRONIZATION LEVEL 
literal IPL$_TIMER = 8;                 ! TIME QUEUE PROCESSING LEVEL 
literal IPL$_TIMERFORK = 7;             ! TIMER FORK INTERRUPT LEVEL
literal IPL$_ASTDEL = 2;                ! AST DELIVERY INTERRUPT 
literal IPL$_SCS = 8;                   ! SCS SYNCHRONIZATION IPL 
literal IPL$_IPINTR = 22;               ! IP INTERRUPT SYNCHRONIZATION IPL 
literal IPL$_SCHED = 8;                 ! SCHEDULING DATABASE IPL
literal IPL$_JIB = 8;                   ! JIB RESERVED SPINLOCK IPL
literal IPL$_MMG = 8;                   ! MMG DATABASE IPL
literal IPL$_FILSYS = 8;                ! FILSYS DATABASE IPL
literal IPL$_IOLOCK8 = 8;               ! IOLOCK8 DATABASE IPL
literal IPL$_PR_LK8 = 8;                ! PR_LK8 DATABASE IPL
literal IPL$_IOLOCK9 = 9;               ! IOLOCK9 DATABASE IPL
literal IPL$_PR_LK9 = 9;                ! PR_LK9 DATABASE IPL
literal IPL$_IOLOCK10 = 10;             ! IOLOCK10 DATABASE IPL
literal IPL$_PR_LK10 = 10;              ! PR_LK10 DATABASE IPL
literal IPL$_IOLOCK11 = 11;             ! IOLOCK11 DATABASE IPL
literal IPL$_PR_LK11 = 11;              ! PR_LK11 DATABASE IPL
literal IPL$_POOL = 11;                 ! POOL DATABASE IPL
literal IPL$_INVALIDATE = 19;           ! INVALIDATE DATABASE IPL
literal IPL$_VIRTCONS = 20;             ! VIRTCONS DATABASE IPL
literal IPL$_EMB = 31;                  ! EMB DATABASE IPL
literal IPL$_MCHECK = 31;               ! MACHINE CHECK IPL
literal IPL$_MEGA = 31;                 ! IPL FOR KITCHEN SINK LOCK
 
!*** MODULE $IRPDEF ***
! +
!  IRP - I/O REQUEST PACKET
! 
!  I/O REQUEST PACKETS ARE CONSTRUCTED BY THE QUEUE I/O REQUEST SYSTEM
!  SERVICE. THE CONTENT OF AN I/O REQUEST PACKET DESCRIBES A FUNCTION TO
!  BE PERFORMED ON A DEVICE UNIT.
! 
!  NOTE: SEVERAL FIELDS OF THE IRP MUST BE AT THE SAME OFFSETS AS THEIR
!  CORRESPONDING FIELDS IN THE IRPE (SEE NEXT PAGE).
! 
! -
literal IRP$M_FCODE = 63;
literal IRP$M_CLN_READY = 1;
literal IRP$M_CLN_DONE = 2;
literal IRP$M_CPY_FINI = 4;
literal IRP$M_BUFIO = 1;
literal IRP$M_FUNC = 2;
literal IRP$M_PAGIO = 4;
literal IRP$M_COMPLX = 8;
literal IRP$M_VIRTUAL = 16;
literal IRP$M_CHAINED = 32;
literal IRP$M_SWAPIO = 64;
literal IRP$M_DIAGBUF = 128;
literal IRP$M_PHYSIO = 256;
literal IRP$M_TERMIO = 512;
literal IRP$M_MBXIO = 1024;
literal IRP$M_EXTEND = 2048;
literal IRP$M_FILACP = 4096;
literal IRP$M_MVIRP = 8192;
literal IRP$M_SRVIO = 16384;
literal IRP$M_KEY = 32768;
literal IRP$M_START_PAST_HWM = 1;
literal IRP$M_END_PAST_HWM = 2;
literal IRP$M_ERASE = 4;
literal IRP$M_PART_HWM = 8;
literal IRP$M_LCKIO = 16;
literal IRP$M_SHDIO = 32;
literal IRP$M_CACHEIO = 64;
literal IRP$K_CDRP = 96;                !  Offset to the CDRP within the IRP 
literal IRP$C_CDRP = 96;                !  Offset to the CDRP within the IRP
literal IRP$M_PIO_ERROR = 1;
literal IRP$M_PIO_FANOUT = 2;
literal IRP$M_PIO_NOQUE = 4;
literal IRP$M_PIO_CANCEL = 8;
literal IRP$M_PIO_CTHRDOK = 16;
literal IRP$K_BT_LEN = 160;
literal IRP$C_BT_LEN = 160;
literal IRP$K_CD_LEN = 168;
literal IRP$C_CD_LEN = 168;
literal IRP$K_LENGTH = 168;             !  LENGTH OF STANDARD IRP 
literal IRP$C_LENGTH = 168;             !  LENGTH OF STANDARD IRP 
literal IRP$S_IRPDEF = 168;
macro IRP$L_IOQFL = 0,0,32,0 %;         ! I/O QUEUE FORWARD LINK 
macro IRP$L_IOQBL = 4,0,32,0 %;         ! I/O QUEUE BACKWARD LINK 
macro IRP$W_SIZE = 8,0,16,0 %;          ! SIZE OF IRP IN BYTES 
macro IRP$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE FOR IRP 
macro IRP$B_RMOD = 11,0,8,0 %;          ! ACCESS MODE OF REQUEST 
macro IRP$V_MODE = 11,0,2,0 %;
literal IRP$S_MODE = 2;                 !  MODE SUBFIELD 
macro IRP$L_PID = 12,0,32,0 %;          ! PROCESS ID OF REQUESTING PROCESS 
macro IRP$L_AST = 16,0,32,0 %;          ! ADDRESS OF AST ROUTINE 
macro IRP$L_SHD_IOFL = 16,0,32,0 %;     ! LINK TO CLONE IRPS
macro IRP$L_ASTPRM = 20,0,32,0 %;       ! AST PARAMETER 
macro IRP$L_SHAD = 20,0,32,0 %;         ! SHAD ADDRESS
macro IRP$L_HRB = 20,0,32,0 %;          ! HRB ADDRESS 
macro IRP$L_WIND = 24,0,32,0 %;         ! ADDRESS OF WINDOW BLOCK 
macro IRP$L_MIRP = 24,0,32,0 %;         ! LINK TO MASTER IRP
macro IRP$L_UCB = 28,0,32,0 %;          ! ADDRESS OF DEVICE UCB 
macro IRP$W_FUNC = 32,0,16,0 %;         ! I/O FUNCTION CODE AND MODIFIERS 
macro IRP$V_FCODE = 32,0,6,0 %;
literal IRP$S_FCODE = 6;                !  FUNCTION CODE FIELD 
macro IRP$V_FMOD = 32,6,10,0 %;
literal IRP$S_FMOD = 10;                !  FUNCTION MODIFIER FIELD 
macro IRP$B_EFN = 34,0,8,0 %;           ! EVENT FLAG NUMBER AND EVENT GROUP 
macro IRP$B_CLN_INDX = 34,0,8,0 %;      ! Shadow Clone membership index
macro IRP$B_PRI = 35,0,8,0 %;           ! BASE PRIORITY OF REQUESTING PROCESS 
macro IRP$B_SHD_FLAGS = 35,0,8,0 %;     !  Shadow Clone Flags
macro IRP$V_CLN_READY = 35,0,1,0 %;     !  Clone is ready for I/O
macro IRP$V_CLN_DONE = 35,1,1,0 %;      !  Clone has done I/O
macro IRP$V_CPY_FINI = 35,2,1,0 %;      !  Copy is complete.
! 
! 
macro IRP$L_IOSB = 36,0,32,0 %;         ! ADDRESS OF I/O STATUS DOUBLE LONGWORD 
macro IRP$W_CHAN = 40,0,16,0 %;         ! PROCESS I/O CHANNEL NUMBER 
macro IRP$W_STS = 42,0,16,0 %;          ! REQUEST STATUS 
macro IRP$V_BUFIO = 42,0,1,0 %;         !  BUFFERED I/O FLAG ;THESE BITS 
macro IRP$V_FUNC = 42,1,1,0 %;          !  1=>READ FUNCTION ;MUST BE ADJACENT 
macro IRP$V_PAGIO = 42,2,1,0 %;         !  PAGING I/O FLAG ;AND IN ORDER 
macro IRP$V_COMPLX = 42,3,1,0 %;        !  COMPLEX BUFFERED I/O 
macro IRP$V_VIRTUAL = 42,4,1,0 %;       !  VIRTUAL I/O FUNCTION 
macro IRP$V_CHAINED = 42,5,1,0 %;       !  CHAINED BUFFERED I/O OPERATION 
macro IRP$V_SWAPIO = 42,6,1,0 %;        !  SWAP I/O OPERATION 
macro IRP$V_DIAGBUF = 42,7,1,0 %;       !  DIAGNOSTIC BUFFER ALLOCATED 
macro IRP$V_PHYSIO = 42,8,1,0 %;        !  PHYSICAL I/O 
macro IRP$V_TERMIO = 42,9,1,0 %;        !  TERMINAL I/O (FOR SELECTING PRIORITY INC) 
macro IRP$V_MBXIO = 42,10,1,0 %;        !  MAILBOX BUFFERED READ 
macro IRP$V_EXTEND = 42,11,1,0 %;       !  AN IRPE IS LINKED TO THIS IRP 
macro IRP$V_FILACP = 42,12,1,0 %;       !  FILE ACP I/O (BOTH DIOCNT AND BIOCNT) 
macro IRP$V_MVIRP = 42,13,1,0 %;        !  MOUNT VERIFICATION IRP 
macro IRP$V_SRVIO = 42,14,1,0 %;        !  SERVER TYPE I/O (TRIGGER MOUNTVER ON ERROR BUT DON'T STALL)
macro IRP$V_KEY = 42,15,1,0 %;          !  KEY FOR ENCRYPTION
macro IRP$L_SVAPTE = 44,0,32,0 %;       ! SYSTEM VIRTUAL ADDRESS OF FIRST PTE 
macro IRP$W_BOFF = 48,0,16,0 %;         ! BYTE OFFSET IN FIRST PAGE 
macro IRP$L_BCNT = 50,0,32,0 %;         ! BYTE COUNT OF TRANSFER 
macro IRP$W_BCNT = 50,0,16,0 %;         !  OLD WORD DEFINITION FOR COMPATIBILITY 
macro IRP$W_STS2 = 54,0,16,1 %;         !  EXTENSION OF STATUS WORD
macro IRP$V_START_PAST_HWM = 54,0,1,0 %; !  I/O STARTS PAST HIGHWATER MARK
macro IRP$V_END_PAST_HWM = 54,1,1,0 %;  !  I/O ENDS PAST HIGHWATER MARK
macro IRP$V_ERASE = 54,2,1,0 %;         !  ERASE I/O FUNCTION
macro IRP$V_PART_HWM = 54,3,1,0 %;      !  PARTIAL HIGHWATER MARK UPDATE
macro IRP$V_LCKIO = 54,4,1,0 %;         !  Locked I/O request (DECnet)
macro IRP$V_SHDIO = 54,5,1,0 %;         !  This is a shadowing IRP
macro IRP$V_CACHEIO = 54,6,1,0 %;       !  uses VBN cache buffers
macro IRP$L_IOST1 = 56,0,32,0 %;        ! FIRST I/O STATUS LONGWORD (FOR I/O POST) 
macro IRP$L_MEDIA = 56,0,32,0 %;        ! MEDIA ADDRESS 
macro IRP$L_IOST2 = 60,0,32,0 %;        ! SECOND I/O STATUS LONGWORD 
macro IRP$L_TT_TERM = 60,0,32,0 %;      ! ADDRESS OF READ TERMINATORS MASK 
macro IRP$B_CARCON = 60,0,8,0 %;        ! CARRIAGE CONTROL 
macro IRP$Q_NT_PRVMSK = 64,0,0,0 %;
literal IRP$S_NT_PRVMSK = 8;            !  PRIVILEGE MASK FOR DECNET 
macro IRP$Q_STATION = 64,0,0,0 %;
literal IRP$S_STATION = 8;              !  STATION FIELD FOR DECNET DRIVERS
macro IRP$Q_TT_STATE = 64,0,0,0 %;
literal IRP$S_TT_STATE = 8;             !  TERMINAL STATE DEFINITIONS 
macro IRP$L_ABCNT = 64,0,32,0 %;        !  ACCUMULATED BYTES TRANSFERED 
macro IRP$W_ABCNT = 64,0,16,0 %;        !  OLD WORD DEFINITION FOR COMPATIBILITY 
macro IRP$L_OBCNT = 68,0,32,0 %;        !  ORIGINAL TRANSFER BYTE COUNT 
macro IRP$W_OBCNT = 68,0,16,0 %;        !  OLD WORD DEFINITION FOR COMPATIBILITY 
macro IRP$L_SEGVBN = 72,0,32,0 %;       !  VIRTUAL BLOCK NUMBER OF CURRENT SEGMENT 
macro IRP$L_DIAGBUF = 76,0,32,0 %;      !  DIAGNOSTIC BUFFER ADDRESS 
macro IRP$L_SCB_BUF = 76,0,32,0 %;      !  SCB BUFFER ADDRESS
macro IRP$W_TT_PRMPT = 76,0,16,0 %;     !  PROMPT SIZE 
macro IRP$L_SEQNUM = 80,0,32,0 %;       !  SEQUENCE NUMBER 
macro IRP$L_EXTEND = 84,0,32,0 %;       !  ADDRESS OF IRPE 
macro IRP$L_ARB = 88,0,32,0 %;          !  ACCESS RIGHTS BLOCK ADDRESS 
macro IRP$L_SHDSPC = 88,0,32,0 %;       !  Shadowing return PC
macro IRP$L_KEYDESC = 92,0,32,0 %;      !  ADDRESS OF ENCRYPTION DESCRIPTOR
macro IRP$B_CPY_MODE = 92,0,8,0 %;      !  Copy mode identifier
!  Standard IRP must contain space for Class Driver CDRP fields.
macro IRP$L_FQFL = 96,0,32,0 %;         !  Fork Queue FLINK 
macro IRP$L_FQBL = 100,0,32,0 %;        !  Fork Queue Blink 
macro IRP$W_CDRPSIZE = 104,0,16,0 %;    !  Size field for positive section only 
macro IRP$B_CD_TYPE = 106,0,8,0 %;      !  Type, always of interest 
macro IRP$B_FLCK = 107,0,8,0 %;         ! FORK LOCK NUMBER
macro IRP$B_FIPL = 107,0,8,0 %;         ! FORK IPL
macro IRP$L_FPC = 108,0,32,0 %;         !  Fork PC 
macro IRP$L_FR3 = 112,0,32,0 %;         !  Fork R3 
macro IRP$L_FR4 = 116,0,32,0 %;         !  Fork R4 
macro IRP$L_SAVD_RTN = 120,0,32,0 %;    !  Saved return address from level 1 JSB 
macro IRP$L_MSG_BUF = 124,0,32,0 %;     !  Address of allocated MSCP buffer 
macro IRP$L_SHD_LOCK_FR4 = 124,0,32,0 %; !  Lock fork R4
macro IRP$L_RSPID = 128,0,32,0 %;       !  Allocated Request ID 
macro IRP$L_SHD_LOCK_FR5 = 128,0,32,0 %; !  Lock fork R5
macro IRP$L_CDT = 132,0,32,0 %;         !  Address of Connection Descriptor Table 
macro IRP$L_SHD_LOCK_FR0 = 132,0,32,0 %; !  R0 = lock mode
macro IRP$L_RWCPTR = 136,0,32,0 %;      !  RWAITCNT pointer 
! 	Extensions to the CDRP within the IRP
!  Host-Based Shadowing Extension
macro IRP$L_SHD_PIO_LNK = 140,0,32,0 %; !  Link to clone IRP(s)
macro IRP$B_SHD_PIO_CNT = 144,0,8,0 %;  !  Tot num phys IRPs assoc.
macro IRP$B_SHD_PIO_ACT = 145,0,8,0 %;  !  Tot num phys IRPs active.
!  Note Keep SHD_PIO_FLAGS, SHD_PIO_ERRCNT,  contiguous.
macro IRP$B_SHD_PIO_FLAGS = 146,0,8,0 %; !  Master Flags Byte
macro IRP$V_PIO_ERROR = 146,0,1,0 %;    !  Errant clone in Chain
macro IRP$V_PIO_FANOUT = 146,1,1,0 %;   !  Chained Clones.
macro IRP$V_PIO_NOQUE = 146,2,1,0 %;    !  Don't queue to server
macro IRP$V_PIO_CANCEL = 146,3,1,0 %;   !  This master cancelled
macro IRP$V_PIO_CTHRDOK = 146,4,1,0 %;  !  Copy thread validated.
macro IRP$B_SHD_PIO_ERRCNT = 147,0,8,0 %; !  Number of errors in chain
macro IRP$L_SHD_PIO_ERROR = 148,0,32,0 %; !  BCNT and Error Status (SS$_)
macro IRP$B_SHD_PIO_ERRINDEX = 152,0,8,0 %; !  Index of erring device
macro IRP$B_SHD_PIO_ERRSEV = 153,0,8,0 %; !  Relative error severity
macro IRP$L_SHD_LOCK_FPC = 156,0,32,0 %; !  Lock fork PC
macro IRP$L_SHD_LOCK_FR1 = 160,0,32,0 %; !  Lock fork R1
macro IRP$L_SHD_LOCK_FR2 = 164,0,32,0 %; !  Lock fork R2
! 	Block Transfer Extension
macro IRP$L_LBUFH_AD = 140,0,32,0 %;    !  Local BUFfer Handle ADress 
macro IRP$L_LBOFF = 144,0,32,0 %;       !  Local Byte OFFset 
macro IRP$L_RBUFH_AD = 148,0,32,0 %;    !  Remote BUFfer Handle ADress 
macro IRP$L_CDRPFL = 148,0,32,0 %;
macro IRP$L_RBOFF = 152,0,32,0 %;       !  Remote Byte OFFset 
macro IRP$L_XCT_LEN = 156,0,32,0 %;     !  Transfer length in bytes 
! 	Class Driver Extension
macro IRP$T_LBUFHNDL = 144,0,0,0 %;
literal IRP$S_LBUFHNDL = 12;            !  Local buffer handle 
macro IRP$L_UBARSRCE = 156,0,32,0 %;    !  UNIBUS mapping resources allocated 
macro IRP$L_DUTUFLAGS = 160,0,32,0 %;   !  Class driver status flags:
macro IRP$W_DUTUCNTR = 164,0,16,0 %;    !  General purpose counter
macro IRP$W_ENDMSGSIZ = 166,0,16,0 %;   !  Size of most recent MSCP end message
!  File system extensions
macro IRP$L_ERASE_VBN = 140,0,32,0 %;   !  VBN to start HWM erase
! 
!  This is commented out pending Richard Bishop's resolution
!  of CDRP/IRP issue.			- Ed Barth 8/30/89
! 
!     FUNC_OVERLAY2 union fill;
!         FUNC2 longword unsigned;			/*I/O FUNCTION CODE AND MODIFIERS 
! 	FUNC_BITS2 structure fill;
!             FCODE2 bitfield mask length 6;		/* FUNCTION CODE FIELD 
!             FMOD2 bitfield length 32-6;			/* FUNCTION MODIFIER FIELD 
! 	end FUNC_BITS2;
!     end FUNC_OVERLAY2;
 
!*** MODULE $IRPEDEF ***
! +
!  IRPE - I/O REQUEST PACKET EXTENSION
! 
!  I/O REQUEST PACKET EXTENSIONS ARE USED TO HOLD ADDITIONAL INFORMATION
!  ABOUT I/O REQUESTS FOR DEVICES THAT REQUIRE MORE CONTEXT THAN CAN FIT INTO
!  THE STANDARD IRP.  IRPE'S ARE BUILT AND LINKED ONTO IRP'S BY DEVICE
!  DRIVER FDT ROUTINES.  ANY FIELDS THAT ARE NOT DEFINED IN THIS STRUCTURE
!  MAY BE USED TO HOLD DRIVER DEPENDENT DATA.
! 
!  THE CURRENTLY DEFINED FIELDS IN THE IRPE WERE POSITIONED SO THAT THE
!  PACKET COULD BE USED AS A FORK BLOCK.  THIS SHOULD BE KEPT IN MIND IF
!  AND WHEN NEW FIELDS ARE DEFINED.
! 
!  THE FIELDS DEFINED HERE MUST BE AT THE SAME OFFSETS AS THEIR CORRESPONDING
!  FIELDS IN THE IRP (SEE PREVIOUS PAGE).
! 
! -
literal IRPE$M_EXTEND = 2048;
literal IRPE$K_LENGTH = 88;             !  LENGTH OF IRPE 
literal IRPE$C_LENGTH = 88;             !  LENGTH OF IRPE 
literal IRPE$S_IRPEDEF = 88;
macro IRPE$W_SIZE = 8,0,16,0 %;         !  SIZE OF IRPE IN BYTES 
macro IRPE$B_TYPE = 10,0,8,0 %;         !  STRUCTURE TYPE FOR IRPE 
macro IRPE$W_STS = 42,0,16,0 %;         !  STATUS 
macro IRPE$V_EXTEND = 42,11,1,0 %;      !  ANOTHER IRPE IS LINKED TO THIS ONE 
macro IRPE$L_SVAPTE1 = 44,0,32,0 %;     !  SYSTEM VIR. ADDR. OF PTE FOR REGION 1 
macro IRPE$W_BOFF1 = 48,0,16,0 %;       !  BYTE OFFSET FOR REGION 1 
macro IRPE$L_BCNT1 = 52,0,32,0 %;       !  BYTE COUNT FOR REGION 1 
macro IRPE$L_SVAPTE2 = 56,0,32,0 %;     !  SYSTEM VIR. ADDR. OF PTE FOR REGION 2 
macro IRPE$W_BOFF2 = 60,0,16,0 %;       !  BYTE OFFSET FOR REGION 2 
macro IRPE$L_BCNT2 = 64,0,32,0 %;       !  BYTE COUNT FOR REGION 2 
macro IRPE$L_EXTEND = 84,0,32,0 %;      !  ADDRESS OF NEXT IRPE 
 
!*** MODULE $ISDDEF ***
! +
!  IMAGE SECTION DESCRIPTOR DEFINITIONS
! -
literal ISD$K_LENDZRO = 12;             ! LENGTH OF DEMAND ZERO ISD 
literal ISD$C_LENDZRO = 12;             ! LENGTH OF DEMAND ZERO ISD 
literal ISD$M_GBL = 1;
literal ISD$M_CRF = 2;
literal ISD$M_DZRO = 4;
literal ISD$M_WRT = 8;
literal ISD$M_MATCHCTL = 112;
literal ISD$M_LASTCLU = 128;
literal ISD$M_INITALCODE = 256;
literal ISD$M_BASED = 512;
literal ISD$M_FIXUPVEC = 1024;
literal ISD$M_RESIDENT = 2048;
literal ISD$M_VECTOR = 131072;
literal ISD$M_PROTECT = 262144;
literal ISD$S_FLAGSIZ = 24;             !  NUMBER OF FLAG BITS, ISD TYPE EXCLUDED 
literal ISD$K_LENPRIV = 16;             ! LENGTH OF PRIVATE ISD 
literal ISD$C_LENPRIV = 16;             ! LENGTH OF PRIVATE ISD 
literal ISD$K_LENGLBL = 36;             ! LENGTH OF OLD GLOBAL ISD 
literal ISD$C_LENGLBL = 36;             ! LENGTH OF OLD GLOBAL ISD 
literal ISD$K_MAXLENGLBL = 64;          ! MAX LENGTH OF NEW GLOBAL ISD 
literal ISD$C_MAXLENGLBL = 64;          ! MAX LENGTH OF NEW GLOBAL ISD 
! +
literal ISD$K_MATALL = 0;               ! MATCH ALWAYS, USE GLOBAL SECTION 
literal ISD$K_MATEQU = 1;               ! MATCH IF ISD$L_IDENT EQU GBL ID 
literal ISD$K_MATLEQ = 2;               ! MATCH IF ISD$L_IDENT LEQ GBL ID 
literal ISD$K_MATNEV = 3;               ! MATCH NEVER, USE PRIVATE COPY 
! +
literal ISD$K_NORMAL = 0;               ! NORMAL PROGRAM IMAGE SECTION 
! NO SPECIAL ACTION REQUIRED
literal ISD$K_SHRFXD = 1;               ! SHAREABLE FIXED SECTION 
literal ISD$K_PRVFXD = 2;               ! PRIVATE FIXED SECTION 
literal ISD$K_SHRPIC = 3;               ! SHAREABLE PIC SECTION 
literal ISD$K_PRVPIC = 4;               ! PRIVATE PIC SECTION 
literal ISD$K_USRSTACK = 253;           ! USER STACK SECTION 
literal ISD$S_ISDDEF = 64;
macro ISD$W_SIZE = 0,0,16,0 %;          ! SIZE IN BYTES OF THIS ISD 
macro ISD$W_PAGCNT = 2,0,16,0 %;        ! ! OF PAGES DESCRIBED BY THIS ISD 
macro ISD$L_VPNPFC = 4,0,32,0 %;        ! VPN & PFC VIELDS 
macro ISD$V_VPN = 4,0,21,0 %;
literal ISD$S_VPN = 21;                 !  STARTING VIRTUAL PAGE NUMBER 
macro ISD$V_P1 = 4,21,1,0 %;            !  P1 SPACE 
macro ISD$V_SYSTEM = 4,22,1,0 %;        !  SYSTEM SPACE 
macro ISD$V_PFC = 4,24,8,0 %;
literal ISD$S_PFC = 8;                  !  PAGE FAULT CLUSTER 
macro ISD$V_VPG = 4,0,23,0 %;
literal ISD$S_VPG = 23;                 !  VIRTUAL PAGE INCLUDING P1 & S 
macro ISD$B_PFC = 7,0,8,0 %;            ! PAGE FAULT CLUSTER 
macro ISD$L_FLAGS = 8,0,32,0 %;         ! FLAGS AND ISD TYPE 
macro ISD$V_GBL = 8,0,1,0 %;            !  GLOBAL 
macro ISD$V_CRF = 8,1,1,0 %;            !  COPY ON REFERENCE 
macro ISD$V_DZRO = 8,2,1,0 %;           !  DEMAND ZERO PAGE 
macro ISD$V_WRT = 8,3,1,0 %;            !  WRITABLE 
macro ISD$V_MATCHCTL = 8,4,3,0 %;
literal ISD$S_MATCHCTL = 3;             !  IDENT MATCH CONTROL FIELD 
macro ISD$V_LASTCLU = 8,7,1,0 %;        !  ISD IS PART OF LAST P0 SPACE CLUSTER 
macro ISD$V_INITALCODE = 8,8,1,0 %;     !  ISD IS PART OF INITIALIZATION CODE
macro ISD$V_BASED = 8,9,1,0 %;          !  ISECT IS BASED 
macro ISD$V_FIXUPVEC = 8,10,1,0 %;      !  ISECT IS FIXUP SECTION 
macro ISD$V_RESIDENT = 8,11,1,0 %;      !  ISECT IS MEMORY-RESIDENT
macro ISD$V_VECTOR = 8,17,1,0 %;        !  VECTOR CONTAINED IN IMAGE SECTION 
macro ISD$V_PROTECT = 8,18,1,0 %;       !  IMAGE SECTION IS PROTECTED 
macro ISD$B_TYPE = 11,0,8,0 %;          ! ISD TYPE CODE 
macro ISD$L_VBN = 12,0,32,0 %;          ! BASE VIRTUAL BLOCK NUMBER 
macro ISD$L_IDENT = 16,0,32,0 %;        ! IDENT FOR GLOBAL SECTION 
macro ISD$T_GBLNAM = 20,0,0,0 %;
literal ISD$S_GBLNAM = 44;              ! GLOBAL NAME COUNTED STRING 
!  MATCH CONTROL VIELD VALUES
! -
! BASE OF ZERO , INCR 1 
!  ISD TYPE FIELD DEFINITIONS
! -
 
!*** MODULE ISDOLDDEF ***
! +
!  OLD IMAGE SECTION DESCRIPTOR DEFINITIONS
! -
literal ISD_K_LENDZRO = 12;             ! LENGTH OF DEMAND ZERO ISD 
literal ISD_C_LENDZRO = 12;             ! LENGTH OF DEMAND ZERO ISD 
literal ISD_M_GBL = 1;
literal ISD_M_CRF = 2;
literal ISD_M_DZRO = 4;
literal ISD_M_WRT = 8;
literal ISD_M_MATCHCTL = 112;
literal ISD_M_LASTCLU = 128;
literal ISD_M_COPYALWAY = 256;
literal ISD_M_BASED = 512;
literal ISD_M_FIXUPVEC = 1024;
literal ISD_M_VECTOR = 131072;
literal ISD_M_PROTECT = 262144;
literal ISD_S_FLAGSIZ = 24;             !  NUMBER OF FLAG BITS, ISD TYPE EXCLUDED 
literal ISD_K_LENPRIV = 16;             ! LENGTH OF PRIVATE ISD 
literal ISD_C_LENPRIV = 16;             ! LENGTH OF PRIVATE ISD 
literal ISD_K_LENGLBL = 36;             ! LENGTH OF GLOBAL ISD 
literal ISD_C_LENGLBL = 36;             ! LENGTH OF GLOBAL ISD 
! +
literal ISD_K_MATALL = 0;               ! MATCH ALWAYS, USE GLOBAL SECTION 
literal ISD_K_MATEQU = 1;               ! MATCH IF ISD_L_IDENT EQU GBL ID 
literal ISD_K_MATLEQ = 2;               ! MATCH IF ISD_L_IDENT LEQ GBL ID 
literal ISD_K_MATNEV = 3;               ! MATCH NEVER, USE PRIVATE COPY 
! +
literal ISD_K_NORMAL = 0;               ! NORMAL PROGRAM IMAGE SECTION 
! NO SPECIAL ACTION REQUIRED
literal ISD_K_SHRFXD = 1;               ! SHAREABLE FIXED SECTION 
literal ISD_K_PRVFXD = 2;               ! PRIVATE FIXED SECTION 
literal ISD_K_SHRPIC = 3;               ! SHAREABLE PIC SECTION 
literal ISD_K_PRVPIC = 4;               ! PRIVATE PIC SECTION 
literal ISD_K_USRSTACK = 253;           ! USER STACK SECTION 
literal ISD_S_ISDOLDDEF = 36;
macro ISD_W_SIZE = 0,0,16,0 %;          ! SIZE IN BYTES OF THIS ISD 
macro ISD_W_PAGCNT = 2,0,16,0 %;        ! ! OF PAGES DESCRIBED BY THIS ISD 
macro ISD_R_VPNPFC_OVERLAY = 4,0,32,0 %;
macro ISD_L_VPNPFC = 4,0,32,0 %;        ! VPN & PFC VIELDS 
macro ISD_R_VPNPFC_BITS0 = 4,0,32,0 %;
macro ISD_V_VPN = 4,0,21,0 %;
literal ISD_S_VPN = 21;                 !  STARTING VIRTUAL PAGE NUMBER 
macro ISD_V_P1 = 4,21,1,0 %;            !  P1 SPACE 
macro ISD_V_SYSTEM = 4,22,1,0 %;        !  SYSTEM SPACE 
macro ISD_V_PFC = 4,24,8,0 %;
literal ISD_S_PFC = 8;                  !  PAGE FAULT CLUSTER 
macro ISD_R_VPNPFC_BITS1 = 4,0,24,0 %;
macro ISD_V_VPG = 4,0,23,0 %;
literal ISD_S_VPG = 23;                 !  VIRTUAL PAGE INCLUDING P1 & S 
macro ISD_R_VPNPFC_FIELDS2 = 4,0,32,0 %;
macro ISD_B_PFC = 7,0,8,0 %;            ! PAGE FAULT CLUSTER 
macro ISD_R_FLAGS_OVERLAY = 8,0,32,0 %;
macro ISD_L_FLAGS = 8,0,32,0 %;         ! FLAGS AND ISD TYPE 
macro ISD_R_FLAGS_BITS = 8,0,24,0 %;
macro ISD_V_GBL = 8,0,1,0 %;            !  GLOBAL 
macro ISD_V_CRF = 8,1,1,0 %;            !  COPY ON REFERENCE 
macro ISD_V_DZRO = 8,2,1,0 %;           !  DEMAND ZERO PAGE 
macro ISD_V_WRT = 8,3,1,0 %;            !  WRITABLE 
macro ISD_V_MATCHCTL = 8,4,3,0 %;
literal ISD_S_MATCHCTL = 3;             !  IDENT MATCH CONTROL FIELD 
macro ISD_V_LASTCLU = 8,7,1,0 %;        !  ISD IS PART OF LAST P0 SPACE CLUSTER 
macro ISD_V_COPYALWAY = 8,8,1,0 %;      !  COPY ALWAYS FROM USER IMAGE 
macro ISD_V_BASED = 8,9,1,0 %;          !  ISECT IS BASED 
macro ISD_V_FIXUPVEC = 8,10,1,0 %;      !  ISECT IS FIXUP SECTION 
macro ISD_V_VECTOR = 8,17,1,0 %;        !  VECTOR CONTAINED IN IMAGE SECTION 
macro ISD_V_PROTECT = 8,18,1,0 %;       !  IMAGE SECTION IS PROTECTED 
macro ISD_R_FLAGS_FIELDS = 8,0,32,0 %;
macro ISD_B_TYPE = 11,0,8,0 %;          ! ISD TYPE CODE 
macro ISD_L_VBN = 12,0,32,0 %;          ! BASE VIRTUAL BLOCK NUMBER 
macro ISD_L_IDENT = 16,0,32,0 %;        ! IDENT FOR GLOBAL SECTION 
macro ISD_T_GBLNAM = 20,0,0,0 %;
literal ISD_S_GBLNAM = 16;              ! GLOBAL NAME COUNTED STRING 
!  MATCH CONTROL VIELD VALUES
! -
! BASE OF ZERO , INCR 1 
!  ISD TYPE FIELD DEFINITIONS
! -
 
!*** MODULE $JIBDEF ***
! +
!  Job Information Block - Structure containing common context for a set
!                           of related processes.
! 
!  Note: The Executive module SYSCREPRC assumes that the job mount list head
!  preceeds the username field in the JIB.
! 
!  JIB Synchronization:
! 
! 	The JIB is a shared structure across a subprocess tree.  Synchronization
! 	is complex because many of the quota and limit fields have no functional
! 	relationship whatsoever.  So a number of methods of synchronization are
! 	used, based on exactly what is being manipulated.  Below is a list of
! 	fields with their methods of synch.
! 	
! 	Field		   Synchronization Method
! 	-----		   ----------------------
! 	BYTCNT/BYTLM	   JIB spinlock.  Should never be manually taken or released:
! 			      use the EXE$DEBIT/CREDIT routines in the EXSUBROUT module.
! 
! 	TQCNT/TQLM	   ADAWI.  When waiting because of a lack of TQCNT, the JIB FLAGS
! 			      bit TQCNT_WAITERS must be set; the JIB address is the EFWM
! 			      and the process should be placed in the MWAIT queue.  When
! 			      TQCNT is incremented, the TQCNT_WAITERS bit must be 
! 			      interrogated.  If it is set, then waiting process should
! 			      be made executable via a call to EXE$JIB_AVAIL or similar 
! 			      inline code.
! 
! 	PGFLCNT/PGFLQUOTA  MMG spinlock.
! 
! 	MTLFL/MTLBL	   SCH$IOLOCK/UNLOCK.
! 
! 	FILCNT/FILLM,	   ADAWI.  These fields are never increased or decreased by more
! 	  ENQCNT/ENQLM,       than 1 at a time, and are never waited on.
!         PRCCNT/PRCLM
! -
literal JIB$C_DETACHED = 0;
literal JIB$C_NETWORK = 1;
literal JIB$C_BATCH = 2;
literal JIB$C_LOCAL = 3;
literal JIB$C_DIALUP = 4;
literal JIB$C_REMOTE = 5;
literal JIB$M_BYTCNT_WAITERS = 1;
literal JIB$M_TQCNT_WAITERS = 2;
literal JIB$K_LENGTH = 148;             !  Structure length 
literal JIB$C_LENGTH = 148;             !  Structure length 
literal JIB$S_JIBDEF = 148;
macro JIB$L_MTLFL = 0,0,32,0 %;         !  Job mount list head forward link
macro JIB$L_MTLBL = 4,0,32,0 %;         !  Job mount list head back link
macro JIB$W_SIZE = 8,0,16,0 %;          !  Size of structure in bytes 
macro JIB$B_TYPE = 10,0,8,0 %;          !  Structure type code 
macro JIB$B_DAYTYPES = 11,0,8,0 %;      !  Set bits 0-6 flag non-prime days of week 
macro JIB$T_USERNAME = 12,0,0,0 %;
literal JIB$S_USERNAME = 12;            !  User name for easy access 
macro JIB$T_ACCOUNT = 24,0,0,0 %;
literal JIB$S_ACCOUNT = 8;              !  Account name for resident access 
macro JIB$L_BYTCNT = 32,0,32,0 %;       !  Buffered I/O byte count avail 
macro JIB$L_BYTLM = 36,0,32,0 %;        !  Original value for Byte count 
macro JIB$L_PBYTCNT = 40,0,32,0 %;      !  Paged pool byte count remaining 
macro JIB$L_PBYTLIM = 44,0,32,0 %;      !  Paged pool byte limit 
macro JIB$W_FILCNT = 48,0,16,0 %;       !  Open File count remaining 
macro JIB$W_FILLM = 50,0,16,0 %;        !  Open file limit 
macro JIB$W_TQCNT = 52,0,16,0 %;        !  Timer queue entry count remaining 
macro JIB$W_TQLM = 54,0,16,0 %;         !  Timer queue entry limit 
macro JIB$L_PGFLQUOTA = 56,0,32,0 %;    !  Paging file quota 
macro JIB$L_PGFLCNT = 60,0,32,0 %;      !  Paging file limit 
macro JIB$L_CPULIM = 64,0,32,0 %;       !  CPU time quota remaining 
macro JIB$W_PRCCNT = 68,0,16,0 %;       !  Count of subprocesses existing 
macro JIB$W_PRCLIM = 70,0,16,0 %;       !  Limit on number of subprocesses 
macro JIB$W_SHRFCNT = 72,0,16,0 %;      !  Shared file block count remaing 
macro JIB$W_SHRFLIM = 74,0,16,0 %;      !  Shared file count limit 
macro JIB$W_ENQCNT = 76,0,16,0 %;       !  Enqueue count avail 
macro JIB$W_ENQLM = 78,0,16,0 %;        !  Enqueue limit 
macro JIB$W_MAXJOBS = 80,0,16,0 %;      !  Max jobs limit on user
macro JIB$W_MAXDETACH = 82,0,16,0 %;    !  Max detached processes for user
macro JIB$L_MPID = 84,0,32,0 %;         !  PID of master process 
macro JIB$L_JLNAMFL = 88,0,32,0 %;      !  Forward link for job-wide logical names 
macro JIB$L_JLNAMBL = 92,0,32,0 %;      !  Back link for job-wide logical names 
macro JIB$L_PDAYHOURS = 96,0,32,0 %;    !  Field describing primary day access 
macro JIB$L_ODAYHOURS = 100,0,32,0 %;   !  Field describing off day access 
macro JIB$B_JOBTYPE = 104,0,8,0 %;      !  Job origin type
macro JIB$B_FLAGS = 105,0,8,0 %;        !  FLAG bits
macro JIB$V_BYTCNT_WAITERS = 105,0,1,0 %; !  Processes are waiting on BYTCNT
macro JIB$V_TQCNT_WAITERS = 105,1,1,0 %; !  Processes are waiting on TQCNT
macro JIB$L_ORG_BYTLM = 108,0,32,0 %;   !  Original BYTLM
macro JIB$L_ORG_PBYTLM = 112,0,32,0 %;  !  Original PBYTLM
macro JIB$L_SPARE = 116,0,32,0 %;       !  ...spare...
macro JIB$L_CWPS_TIME = 120,0,32,0 %;   !  Temp for CWPS
macro JIB$L_CWPS_COUNT = 124,0,32,0 %;  !  Temp for CWPS
macro JIB$Q_CWPS_Q1 = 128,0,0,0 %;
literal JIB$S_CWPS_Q1 = 8;              !  Temp for CWPS
macro JIB$L_CWPS_L1 = 136,0,32,0 %;     !  Temp for CWPS
macro JIB$L_CWPS_L2 = 140,0,32,0 %;     !  Temp for CWPS
macro JIB$L_JTQUOTA = 144,0,32,0 %;     !  Job table quota
 
!*** MODULE $KA410DEF ***
! ++
!  VIRTUAL ADDRESS SPACE LAYOUT FOR VAXstation 2000 CPU NODE SPECIFIC REGION
!  POINTED TO BY EXE$GL_CPUNODSP
! --
literal KA410$B_CFGTST = 0;             !  CONFIG AND TEST REG
literal KA410$L_SIDEX = 516;            !  SYS ID EXTENSION REG
literal KA410$L_HLTCOD = 1024;          !  HALT CODE REGISTER
literal KA410$L_MSER = 1028;            !  MEM SYSTEM ERR REG
literal KA410$L_MEAR = 1032;            !  MEM ERROR ADDR REG
literal KA410$B_INTMSK = 1036;          !  INTERRUPT MASK REG
literal KA410$B_VDCORG = 1037;          !  VIDEO DISPLAY ORIGIN REG
literal KA410$B_VDCSEL = 1038;          !  VIDEO CTLR SELECT REG
literal KA410$B_INTREQ = 1039;          !  INTERRUPT REQ REG
literal KA410$B_INTCLR = 1039;          !  INTERRUPT CLEAR REG
literal KA410$B_NIADRS = 1536;          !  NETWORK ADDRESS ROM START
literal KA410$B_NIADRE = 1663;          !  NETWORK ADDRESS ROM END
literal KA410$W_SERCSR = 2048;          !  SERIAL LINE CSR
literal KA410$W_SERRBF = 2052;          !   " " RECEIVE BUFFER
literal KA410$W_SERLPR = 2052;          !   " " LINE PARAM REG
literal KA410$W_SERTCR = 2056;          !   " " TRANSMIT CONTROL REG
literal KA410$W_SERMSR = 2060;          !   " " MODEM STATUS REG
literal KA410$W_SERTDR = 2060;          !   " " TRANSMIT DATA REG
literal KA410$L_TODSEC = 2560;          !  TODR SECOND
literal KA410$L_TODSAL = 2564;          !  TODR SECOND ALARM
literal KA410$L_TODMIN = 2568;          !  TODR MINUTE
literal KA410$L_TODMAL = 2572;          !  TODR MINUTE ALARM
literal KA410$L_TODHR = 2576;           !  TODR HOUR
literal KA410$L_TODHAL = 2580;          !  TODR HOUR ALARM
literal KA410$L_TODDWK = 2584;          !  TODR DAY OF WEEK
literal KA410$L_TODDAY = 2588;          !  TODR DAY OF MONTH
literal KA410$L_TODMON = 2592;          !  TODR MONTH
literal KA410$L_TODYR = 2596;           !  TODR YEAR
literal KA410$L_TODCSA = 2600;          !  TODR CSR A
literal KA410$L_TODCSB = 2604;          !  TODR CSR B
literal KA410$L_TODCSC = 2608;          !  TODR CSR C
literal KA410$L_TODCSD = 2612;          !  TODR CSR D
literal KA410$B_RAMST = 2616;           !  TODR 1ST BYTE RAM
literal KA410$B_CPMBX = 2616;           !  CONSOLE MAILBOX
literal KA410$B_CPFLG = 2620;           !  CONSOLE FLAGS
literal KA410$B_LK201 = 2624;           !  KEYBOARD VARIATION
literal KA410$B_CONID = 2628;           !  CONSOLE DEV TYPE
literal KA410$L_SCRPTR = 2632;          !  CP SCRATCH RAM ADDR
literal KA410$L_BATCHK = 2696;          !  BATTERY CHECK DATA
literal KA410$L_BOODEV = 2712;          !  DEFAULT BOOT DEVICE
literal KA410$L_BOOFLG = 2728;          !  DEFAULT R5 FLAGS
literal KA410$B_SCRLEN = 2744;          !  SIZE OF CP SCR RAM
literal KA410$B_RAMEND = 2812;          !  TODR LAST BYTE RAM
literal KA410$B_DKCREG = 3072;          !  DISK REG DATA ACCESS
literal KA410$B_DKCCMD = 3076;          !  DISK CONTROLLER COMMAND
literal KA410$W_DKSTAT = 3076;          !  DISK INTERRUPT STATUS
literal KA410$B_SCTLS = 3200;           !  TAPE CTLR CHIP START
literal KA410$B_SCTLE = 3231;           !  TAPE CTLR CHIP END
literal KA410$B_SCDADR = 3232;          !  TAPE DMA ADR REG
literal KA410$W_SCDCNT = 3264;          !  TAPE DMA BYTCNT REG
literal KA410$B_SCDDIR = 3268;          !  TAPE DMA XFER DIRECTION  REG
literal KA410$B_DKBUFS = 3584;          !  DISK 16KB BUFFER START
literal KA410$B_DKBUFE = 19967;         !  DISK 16KB BUFFER END
literal KA410$W_NIRDP = 19968;          !  NI REG DATA PORT
literal KA410$W_NIRAP = 19972;          !  NI REG ADR PORT
literal KA410$W_VCCMD = 20480;          !  VIDEO CURSOR COMMAND REG
literal KA410$L_VCXPOS = 20484;         !  VIDEO CURSOR X POSITION
literal KA410$L_VCYPOS = 20488;         !  VIDEO CURSOR Y POSITION
literal KA410$L_VCXMN1 = 20492;         !  VIDEO CURSOR REGION 1 LEFT EDGE
literal KA410$L_VCXMX1 = 20496;         !  VIDEO CURSOR REGION 1 RIGHT EDGE
literal KA410$L_VCYMN1 = 20500;         !  VIDEO CURSOR REGION 1 TOP EDGE
literal KA410$L_VCYMX1 = 20504;         !  VIDEO CURSOR REGION 1 BOTTOM EDGE
literal KA410$L_VCXMN2 = 20524;         !  VIDEO CURSOR REGION 2 LEFT EDGE
literal KA410$L_VCXMX2 = 20528;         !  VIDEO CURSOR REGION 2 RIGHT EDGE
literal KA410$L_VCYMN2 = 20532;         !  VIDEO CURSOR REGION 2 TOP EDGE
literal KA410$L_VCYMX2 = 20536;         !  VIDEO CURSOR REGION 2 BOTTOM EDGE
literal KA410$L_VCLOAD = 20540;         !  VIDEO CURSOR SPRITE PATTERN LOAD
literal KA410$B_NIROMS = 20992;         !  START OF NETWORK OPTION ROM
literal KA410$B_NIROME = 22015;         !  END OF MAPPED PORTION OF ROM
literal KA410$B_VDROMS = 22016;         !  START OF VIDEO OPTION ROM
literal KA410$B_VDROME = 23039;         !  END OF MAPPED PORTION OF ROM
literal KA410$B_SCRAMS = 23040;         !  BEGIN OF CONSOLE PROG SCRATCH RAM
literal KA410$A_MCT = 23040;            !  PHY ADDR OF MAIN CONFIG TABLE 
literal KA410$A_OP1RAM = 23044;         !  PHY ADDR OF OPTION 1 RAM
literal KA410$A_OP2RAM = 23048;         !  PHY ADDR OF OPTION 2 RAM 
literal KA410$A_GOOD64 = 23052;         !  PHY ADDR OF 64KB GOOD MEMORY
literal KA410$A_BMAP = 23056;           !  PHY ADDR OF MEMORY BITMAP
literal KA410$L_BMAPL = 23060;          !  LENGTH IN BYTES OF BITMAP
literal KA410$L_KBGOOD = 23064;         !  LK201 KEYBOARD STATUS
literal KA410$L_MSGOOD = 23068;         !  MOUSE/TABLE STATUS
literal KA410$A_INIOUT = 23072;         !  PA OF ROUTINE TO INIT OUTPUT
literal KA410$A_RSTOUT = 23076;         !  PA OF ROUTINE TO RESET OUTPUT
literal KA410$A_INIINP = 23080;         !  PA OF ROUTINE TO INIT INPUT
literal KA410$A_RSTINP = 23084;         !  PA OF ROUTINE TO RESET INPUT
literal KA410$A_GETCHR = 23088;         !  PA OF ROUTINE TO GET CHAR
literal KA410$A_PUTCHR = 23092;         !  PA OF ROUTINE TO PUT CHAR
literal KA410$A_FBEEP = 23096;          !  PA OF ROUTINE TO PUT BELL
literal KA410$L_CURBOT = 23100;         !  MAX CURSOR ROW
literal KA410$L_CURCOL = 23104;         !  CURRENT CURSOR COLUMN
literal KA410$L_CURROW = 23108;         !  CURRENT CURSOR ROW
literal KA410$A_SAVCON = 23112;         !  PA OF SAVE CONSOLE ROUTINE
literal KA410$A_RSTCON = 23116;         !  PA OF RESET CONSOLE ROUTINE
literal KA410$L_STFLAG = 23120;         !  SELFTEST FLAGS
literal KA410$A_STLOOP = 23124;         !  SELFTEST LOOP ADDRESS
literal KA410$L_VMB_VERSION = 23504;    !  VMB VERSION NUMBER
literal KA410$L_CELL_HGHT = 23524;      !  CELL HEIGHT FOR CHARACTER IN ROM
literal KA410$L_SELFTEST_VERSION = 23508; !  SELFTEST VERSION
literal KA410$L_CONSOLE_VERSION = 23512; !  CONSOLE VERSION
literal KA410$B_DISKMASK = 23516;       !  DISK UNITS MASK
literal KA410$B_DISKCTRL = 23517;       !  DISK CONTROLLER MASK
literal KA410$B_TAPEMASK = 23520;       !  TAPE UNITS MASK
literal KA410$B_TAPECTRL = 23521;       !  TAPE CONTROLLER MASK
literal KA410$L_QD_MEM = 23544;         !  COLOR MEMORY
literal KA410$L_MAXCOL = 23548;         !  MAXIMUM COLUMN ON SCREEN
literal KA410$B_SCRAME = 23551;         !  END OF CONSOLE PROG SCRATCH RAM
literal KA410$B_PCROMS = 23552;         !  PC-DOS COPROCESSOR ROM START
literal KA410$B_PCROME = 24575;         !  PC-DOS COPROCESSOR ROM END
literal KA410$B_XROMS = 24576;          !  FUTURE ROM START
literal KA410$B_XROME = 25599;          !  FUTURE ROM END
literal KA410$B_PCCSR = 25600;          !  START OF PC-DOS REGISTERS
literal KA410$B_XCSR = 26112;           !  REGISTERS FOR FUTURE OPTION
literal KA410$B_VDCSR1 = 26624;         !  CSRS FOR OPTION IN VIDEO SLOT
literal KA410$B_VDCSR2 = 27136;         !  CSRS FOR COLOR VIDEO (3 pages)
literal KA410$S_KA410DEF = 28672;       !  SIZE MAPPED BY $KA410DEF
!  Configuration and Test Register
literal KA410$M_CFGTST_MTYPE = 3;
literal KA410$M_CFGTST_NETOPT = 4;
literal KA410$M_CFGTST_VIDOPT = 8;
literal KA410$M_CFGTST_CURTST = 16;
literal KA410$M_CFGTST_L3CON = 32;
literal KA410$S_CFGTST = 1;
macro KA410$V_CFGTST_MTYPE = 0,0,2,0 %;
literal KA410$S_CFGTST_MTYPE = 2;       ! MEMORY OPTION BOARD PRESENT
!   00 = NO MEM BOARD
!   01 = 1024KB
!   10 = 4096KB
!   11 = 8192KB
macro KA410$V_CFGTST_NETOPT = 0,2,1,0 %; ! NETWORK OPTION PRESENT
macro KA410$V_CFGTST_VIDOPT = 0,3,1,0 %; ! VIDEO OPTION PRESENT
macro KA410$V_CFGTST_CURTST = 0,4,1,0 %; ! CURSOR TEST
macro KA410$V_CFGTST_L3CON = 0,5,1,0 %; ! LINE 3 CONSOLE
macro KA410$V_CFGTST_FILL1 = 0,6,1,0 %; ! UNUSED
!  System ID Extension Longword
literal KA410$S_SIDEX = 4;
macro KA410$W_SIDEX_FILL1 = 0,0,16,0 %; ! RESERVED
macro KA410$B_SIDEX_ROMVER = 2,0,8,0 %; ! BOOT ROM VERSION
macro KA410$B_SIDEX_SYSCODE = 3,0,8,0 %; ! SYSTEM CODE. 4=VAXstar
!  Memory System Error Register (MSER)
literal KA410$M_MSER_PEN = 1;
literal KA410$M_MSER_WRW = 2;
literal KA410$M_MSER_PER = 64;
literal KA410$M_MSER_CD0 = 256;
literal KA410$S_MSER = 4;
macro KA410$V_MSER_PEN = 0,0,1,0 %;     ! PARITY ENABLE
macro KA410$V_MSER_WRW = 0,1,1,0 %;     ! WRITE WRONG PARITY
macro KA410$V_MSER_FILL1 = 0,2,4,0 %;
literal KA410$S_MSER_FILL1 = 4;         ! UNUSED
macro KA410$V_MSER_PER = 0,6,1,0 %;     ! PARITY ERROR
macro KA410$V_MSER_FILL2 = 0,7,1,0 %;   ! UNUSED
macro KA410$V_MSER_CD0 = 0,8,1,0 %;     ! MEMORY CODE (SAME AS PER)
macro KA410$V_MSER_FILL3 = 0,9,23,0 %;
literal KA410$S_MSER_FILL3 = 23;        ! UNUSED
!  Memory Error Address Register (MEAR)
literal KA410$M_MEAR_ADR = 32767;
literal KA410$M_MEAR_FILL1 = -32768;
literal KA410$S_MEAR = 4;
macro KA410$V_MEAR_ADR = 0,0,15,0 %;
literal KA410$S_MEAR_ADR = 15;          ! FAILING ADR BITS 23:09
macro KA410$V_MEAR_FILL1 = 0,15,17,0 %;
literal KA410$S_MEAR_FILL1 = 17;        ! UNUSED, READ AS 0
!  Interrupt Mask Register (INTMSK)
literal KA410$M_INTMSK_DC = 1;
literal KA410$M_INTMSK_SC = 2;
literal KA410$M_INTMSK_VS = 4;
literal KA410$M_INTMSK_VF = 8;
literal KA410$M_INTMSK_NS = 16;
literal KA410$M_INTMSK_NP = 32;
literal KA410$M_INTMSK_ST = 64;
literal KA410$M_INTMSK_SR = 128;
literal KA410$S_INTMSK = 1;
macro KA410$V_INTMSK_DC = 0,0,1,0 %;    ! Disk controller
macro KA410$V_INTMSK_SC = 0,1,1,0 %;    ! Tape controller
macro KA410$V_INTMSK_VS = 0,2,1,0 %;    ! Video secondary
macro KA410$V_INTMSK_VF = 0,3,1,0 %;    ! Video end of frame
macro KA410$V_INTMSK_NS = 0,4,1,0 %;    ! Network ctlr 2ndary
macro KA410$V_INTMSK_NP = 0,5,1,0 %;    ! Network ctlr primary
macro KA410$V_INTMSK_ST = 0,6,1,0 %;    ! Serial line transmitter done
macro KA410$V_INTMSK_SR = 0,7,1,0 %;    ! Serial line receiver or silo full
!  Interrupt Mask Register (INTREQ)
literal KA410$M_INTREQ_DC = 1;
literal KA410$M_INTREQ_SC = 2;
literal KA410$M_INTREQ_VS = 4;
literal KA410$M_INTREQ_VF = 8;
literal KA410$M_INTREQ_NS = 16;
literal KA410$M_INTREQ_NP = 32;
literal KA410$M_INTREQ_ST = 64;
literal KA410$M_INTREQ_SR = 128;
literal KA410$S_INTREQ = 1;
macro KA410$V_INTREQ_DC = 0,0,1,0 %;    ! Disk controller
macro KA410$V_INTREQ_SC = 0,1,1,0 %;    ! Tape controller
macro KA410$V_INTREQ_VS = 0,2,1,0 %;    ! Video secondary
macro KA410$V_INTREQ_VF = 0,3,1,0 %;    ! Video end of frame
macro KA410$V_INTREQ_NS = 0,4,1,0 %;    ! Network ctlr 2ndary
macro KA410$V_INTREQ_NP = 0,5,1,0 %;    ! Network ctlr primary
macro KA410$V_INTREQ_ST = 0,6,1,0 %;    ! Serial line transmitter done
macro KA410$V_INTREQ_SR = 0,7,1,0 %;    ! Serial line receiver or silo full
!  Interrupt Mask Register (INTCLR)
literal KA410$M_INTCLR_DC = 1;
literal KA410$M_INTCLR_SC = 2;
literal KA410$M_INTCLR_VS = 4;
literal KA410$M_INTCLR_VF = 8;
literal KA410$M_INTCLR_NS = 16;
literal KA410$M_INTCLR_NP = 32;
literal KA410$M_INTCLR_ST = 64;
literal KA410$M_INTCLR_SR = 128;
literal KA410$S_INTCLR = 1;
macro KA410$V_INTCLR_DC = 0,0,1,0 %;    ! Disk controller
macro KA410$V_INTCLR_SC = 0,1,1,0 %;    ! Tape controller
macro KA410$V_INTCLR_VS = 0,2,1,0 %;    ! Video secondary
macro KA410$V_INTCLR_VF = 0,3,1,0 %;    ! Video end of frame
macro KA410$V_INTCLR_NS = 0,4,1,0 %;    ! Network ctlr 2ndary
macro KA410$V_INTCLR_NP = 0,5,1,0 %;    ! Network ctlr primary
macro KA410$V_INTCLR_ST = 0,6,1,0 %;    ! Serial line transmitter done
macro KA410$V_INTCLR_SR = 0,7,1,0 %;    ! Serial line receiver or silo full
!  Console mailbox register (CPMBX) - located in non-volatile RAM
literal KA410$M_CPMBX_HLT = 3;
literal KA410$M_CPMBX_BIP = 4;
literal KA410$M_CPMBX_RIP = 8;
literal KA410$S_CPMBX = 1;
macro KA410$V_CPMBX_HLT = 0,0,2,0 %;
literal KA410$S_CPMBX_HLT = 2;          ! Halt action 
!  00 = restart
!  01 = restart
!  02 = boot 
!  03 = halt 
macro KA410$V_CPMBX_BIP = 0,2,1,0 %;    ! Boot in Progress 
macro KA410$V_CPMBX_RIP = 0,3,1,0 %;    ! Restart in Progress 
!  Disk unit presence mask
literal KA410$M_DISKMASK_DUA0 = 1;
literal KA410$M_DISKMASK_DUA1 = 2;
literal KA410$M_DISKMASK_DUA2 = 4;
literal KA410$S_DISKMASK = 1;
macro KA410$V_DISKMASK_DUA0 = 0,0,1,0 %; !  Unit 0 exists
macro KA410$V_DISKMASK_DUA1 = 0,1,1,0 %; !  Unit 1 exists
macro KA410$V_DISKMASK_DUA2 = 0,2,1,0 %; !  Unit 2 exists
!  Disk controller mask
literal KA410$M_DISKCTRL_CTRL = 1;
literal KA410$M_DISKCTRL_BUFFER = 2;
literal KA410$S_DISKCTRL = 1;
macro KA410$V_DISKCTRL_CTRL = 0,0,1,0 %; !  Disk controller exists
macro KA410$V_DISKCTRL_BUFFER = 0,1,1,0 %; !  Disk buffer exists
!  Tape unit presence mask
literal KA410$M_TAPEMASK_SCSI_0 = 1;
literal KA410$M_TAPEMASK_SCSI_1 = 2;
literal KA410$S_TAPEMASK = 1;
macro KA410$V_TAPEMASK_SCSI_0 = 0,0,1,0 %; !  Unit 0 exists (system)
macro KA410$V_TAPEMASK_SCSI_1 = 0,1,1,0 %; !  Unit 1 exists (drive)
!  Tape controller mask
literal KA410$M_TAPECTRL_CTRL = 1;
literal KA410$M_TAPECTRL_BUFFER = 2;
literal KA410$S_TAPECTRL = 1;
macro KA410$V_TAPECTRL_CTRL = 0,0,1,0 %; !  Tape controller exists
macro KA410$V_TAPECTRL_BUFFER = 0,1,1,0 %; !  Tape buffer exists
 
!*** MODULE $KA420DEF ***
! ++
!  VIRTUAL ADDRESS SPACE LAYOUT FOR VAXSTATION 3100 CPU NODE SPECIFIC REGION
!  POINTED TO BY EXE$GL_CPUNODSP
! --
literal KA420$W_CFGTST = 0;             !  CONFIG AND TEST REG 
literal KA420$B_IORESET = 0;            !  IORESET REG
literal KA420$L_SIDEX = 516;            !  SYS ID EXTENSION REG
literal KA420$L_HLTCOD = 1024;          !  HALT CODE REGISTER
literal KA420$L_MSER = 1028;            !  MEM SYSTEM ERR REG
literal KA420$L_MEAR = 1032;            !  MEM ERROR ADDR REG
literal KA420$B_INTMSK = 1036;          !  INTERRUPT MASK REG
literal KA420$B_VDCORG = 1037;          !  VIDEO DISPLAY ORIGIN REG
literal KA420$B_VDCSEL = 1038;          !  VIDEO CTLR SELECT REG
literal KA420$B_INTREQ = 1039;          !  INTERRUPT REQ REG
literal KA420$B_INTCLR = 1039;          !  INTERRUPT CLEAR REG
literal KA420$W_DIAGDISP = 1040;        !  DIAGNOSTIC DISPLAY REG
literal KA420$L_PAR_CTL = 1044;         !  PARITY CONTROL REG
literal KA420$W_DIAGTIME = 1054;        !  DIANOSTIC TIME REG
literal KA420$B_NIADRS = 1536;          !  NETWORK ADDRESS ROM START
literal KA420$B_NIADRE = 1663;          !  NETWORK ADDRESS ROM END
literal KA420$W_SERCSR = 2048;          !  SERIAL LINE CSR
literal KA420$W_SERRBF = 2052;          !   " " RECEIVE BUFFER
literal KA420$W_SERLPR = 2052;          !   " " LINE PARAM REG
literal KA420$W_SERTCR = 2056;          !   " " TRANSMIT CONTROL REG
literal KA420$W_SERMSR = 2060;          !   " " MODEM STATUS REG
literal KA420$W_SERTDR = 2060;          !   " " TRANSMIT DATA REG
literal KA420$L_TODSEC = 2560;          !  TODC SECOND
literal KA420$L_TODSAL = 2564;          !  TODC SECOND ALARM
literal KA420$L_TODMIN = 2568;          !  TODC MINUTE
literal KA420$L_TODMAL = 2572;          !  TODC MINUTE ALARM
literal KA420$L_TODHR = 2576;           !  TODC HOUR
literal KA420$L_TODHAL = 2580;          !  TODC HOUR ALARM
literal KA420$L_TODDWK = 2584;          !  TODC DAY OF WEEK
literal KA420$L_TODDAY = 2588;          !  TODC DAY OF MONTH
literal KA420$L_TODMON = 2592;          !  TODC MONTH
literal KA420$L_TODYR = 2596;           !  TODC YEAR
literal KA420$L_TODCSA = 2600;          !  TODC CSR A
literal KA420$L_TODCSB = 2604;          !  TODC CSR B
literal KA420$L_TODCSC = 2608;          !  TODC CSR C
literal KA420$L_TODCSD = 2612;          !  TODC CSR D
literal KA420$B_RAMST = 2616;           !  TODC 1ST BYTE RAM
literal KA420$B_CPMBX = 2616;           !  CONSOLE MAILBOX
literal KA420$B_CPFLG = 2620;           !  CONSOLE FLAGS
literal KA420$B_LK201 = 2624;           !  KEYBOARD VARIATION
literal KA420$B_CONID = 2628;           !  CONSOLE DEV TYPE
literal KA420$L_SCRPTR = 2632;          !  CP SCRATCH RAM ADDR
literal KA420$L_BATCHK = 2696;          !  BATTERY CHECK DATA
literal KA420$L_PASSWORD = 2712;        !  ETHERNET TRIGGER PASSWORD CODE
literal KA420$L_BOOFLG = 2728;          !  DEFAULT R5 FLAGS
literal KA420$B_SCRLEN = 2744;          !  SIZE OF CP SCR RAM
literal KA420$B_SCSI = 2748;            !  CPU ID location
literal KA420$B_BOODEV_LEN = 2752;      !  DEFAULT BOOT DEVICE NAME LENGTH
literal KA420$B_BOODEV = 2756;          !  DEFAULT BOOT DEVICE
literal KA420$B_RAMEND = 2812;          !  TODR LAST BYTE RAM
literal KA420$B_DKCREG = 3072;          !  DISK REG DATA ACCESS
literal KA420$B_DKCCMD = 3076;          !  DISK CONTROLLER COMMAND
literal KA420$W_DKSTAT = 3076;          !  DISK INTERRUPT STATUS
literal KA420$B_ASCSICSR = 3200;        !  SCSI CONTROLLER A
literal KA420$B_BSCSICSR = 3456;        !  SCSI CONTROLLER B
literal KA420$B_BSCINICMD = 3460;       !  B SCSI INITIATOR COMMAND REG
literal KA420$B_SCTLS = 3200;           !  TAPE CTLR CHIP START
literal KA420$B_SCTLE = 3231;           !  TAPE CTLR CHIP END
literal KA420$B_SCSOUTDAT = 3200;       !  SCSI OUTPUT DATA REG 
literal KA420$B_SCSCURDAT = 3200;       !  SCSI CURRENT DATA REG 
literal KA420$B_SCSINICMD = 3204;       !  SCSI INITIATOR COMMAND REG
literal KA420$B_SCSMODE = 3208;         !  SCSI MODE REG
literal KA420$B_SCSTARCMD = 3212;       !  SCSI TARGET COMMAND REG
literal KA420$B_SCSSELENA = 3216;       !  SCSI SELECT ENABLE REG 
literal KA420$B_SCSCURSTA = 3216;       !  SCSI CURRENT BUS STATUS REG 
literal KA420$B_SCSDMASND = 3220;       !  SCSI START DMA SEND 
literal KA420$B_SCSSTATUS = 3220;       !  SCSI BUS AND STATUS REG 
literal KA420$B_SCSDMATRC = 3224;       !  SCSI START DMA TARGET RECEIVE 
literal KA420$B_SCSINDATA = 3224;       !  SCSI INPUT DATA REG 
literal KA420$B_SCSDMAIRC = 3228;       !  SCSI START DMA INITIATOR RECEIVE
literal KA420$B_SCSRESET = 3228;        !  SCSI RESET INTERRUPT/ERROR 
literal KA420$B_SCDADR = 3232;          !  SCSI DMA ADR REG
literal KA420$W_SCDCNT = 3264;          !  SCSI DMA BYTCNT REG
literal KA420$B_SCDDIR = 3268;          !  SCSI DMA XFER DIRECTION  
literal KA420$B_STCMODE = 3296;         !  STORAGE CONTROLLER MODE
literal KA420$B_D16BUFS = 3584;         !  DISK 16KB BUFFER START
literal KA420$B_D16BUFE = 19967;        !  DISK 16KB BUFFER END
literal KA420$W_NIRDP = 19968;          !  NI REG DATA PORT
literal KA420$W_NIRAP = 19972;          !  NI REG ADR PORT
literal KA420$W_VCCMD = 20480;          !  VIDEO CURSOR COMMAND REG
literal KA420$W_VCXPOS = 20484;         !  VIDEO CURSOR X POSITION
literal KA420$W_VCYPOS = 20488;         !  VIDEO CURSOR Y POSITION
literal KA420$W_VCXMN1 = 20492;         !  VIDEO CURSOR REGION 1 LEFT EDGE
literal KA420$W_VCXMX1 = 20496;         !  VIDEO CURSOR REGION 1 RIGHT EDGE
literal KA420$W_VCYMN1 = 20500;         !  VIDEO CURSOR REGION 1 TOP EDGE
literal KA420$W_VCYMX1 = 20504;         !  VIDEO CURSOR REGION 1 BOTTOM EDGE
literal KA420$W_VCXMN2 = 20524;         !  VIDEO CURSOR REGION 2 LEFT EDGE
literal KA420$W_VCXMX2 = 20528;         !  VIDEO CURSOR REGION 2 RIGHT EDGE
literal KA420$W_VCYMN2 = 20532;         !  VIDEO CURSOR REGION 2 TOP EDGE
literal KA420$W_VCYMX2 = 20536;         !  VIDEO CURSOR REGION 2 BOTTOM EDGE
literal KA420$W_VCLOAD = 20540;         !  VIDEO CURSOR SPRITE PATTERN LOAD
literal KA420$L_CACR = 20992;           !  SECONDARY CACHE CONTROL REG
literal KA420$B_VDROMS = 22016;         !  START OF VIDEO OPTION ROM
literal KA420$B_VDROME = 23039;         !  END OF MAPPED PORTION OF ROM
literal KA420$B_SCRAMS = 23040;         !  BEGIN OF CONSOLE PROG SCRATCH RAM
literal KA420$A_MCT = 23040;            !  PHY ADDR OF MAIN CONFIG TABLE 
literal KA420$A_OP1RAM = 23044;         !  PHY ADDR OF OPTION 1 RAM
literal KA420$A_OP2RAM = 23048;         !  PHY ADDR OF OPTION 2 RAM 
literal KA420$A_GOOD64 = 23052;         !  PHY ADDR OF 64KB GOOD MEMORY
literal KA420$A_BMAP = 23056;           !  PHY ADDR OF MEMORY BITMAP
literal KA420$L_BMAPL = 23060;          !  LENGTH IN BYTES OF BITMAP
literal KA420$L_KBGOOD = 23064;         !  LK201 KEYBOARD STATUS
literal KA420$L_MSGOOD = 23068;         !  MOUSE/TABLE STATUS
literal KA420$A_INIOUT = 23072;         !  PA OF ROUTINE TO INIT OUTPUT
literal KA420$A_RSTOUT = 23076;         !  PA OF ROUTINE TO RESET OUTPUT
literal KA420$A_INIINP = 23080;         !  PA OF ROUTINE TO INIT INPUT
literal KA420$A_RSTINP = 23084;         !  PA OF ROUTINE TO RESET INPUT
literal KA420$A_GETCHR = 23088;         !  PA OF ROUTINE TO GET CHAR
literal KA420$A_PUTCHR = 23092;         !  PA OF ROUTINE TO PUT CHAR
literal KA420$A_FBEEP = 23096;          !  PA OF ROUTINE TO PUT BELL
literal KA420$L_CURBOT = 23100;         !  MAX CURSOR ROW
literal KA420$L_CURCOL = 23104;         !  CURRENT CURSOR COLUMN
literal KA420$L_CURROW = 23108;         !  CURRENT CURSOR ROW
literal KA420$A_SAVCON = 23112;         !  PA OF SAVE CONSOLE ROUTINE
literal KA420$A_RSTCON = 23116;         !  PA OF RESET CONSOLE ROUTINE
literal KA420$L_STFLAG = 23120;         !  SELFTEST FLAGS
literal KA420$A_STLOOP = 23124;         !  SELFTEST LOOP ADDRESS
literal KA420$L_VMB_VERSION = 23504;    !  VMB VERSION NUMBER
literal KA420$L_SELFTEST_VERSION = 23508; !  SELFTEST VERSION
literal KA420$L_CONSOLE_VERSION = 23512; !  CONSOLE VERSION
literal KA420$B_DISKMASK = 23516;       !  DISK UNITS MASK
literal KA420$B_DISKCTRL = 23517;       !  DISK CONTROLLER MASK
literal KA420$B_TAPEMASK = 23520;       !  TAPE UNITS MASK
literal KA420$B_TAPECTRL = 23521;       !  TAPE CONTROLLER MASK
literal KA420$L_CELL_HGHT = 23524;      !  CELL HEIGHT FOR CHARACTER IN ROM
literal KA420$L_QD_MEM = 23544;         !  COLOR MEMORY
literal KA420$L_MAXCOL = 23548;         !  MAXIMUM COLUMN ON SCREEN
literal KA420$B_SCRAME = 23551;         !  END OF CONSOLE PROG SCRATCH RAM
literal KA420$B_X1ROMS = 23552;         !  ADDITIONAL OPTION 1 ROM START
literal KA420$B_X1ROME = 24575;         !  ADDITIONAL OPTION 1 ROM END
literal KA420$B_X2ROMS = 24576;         !  ADDITIONAL OPTION 2 ROM START
literal KA420$B_X2ROME = 25599;         !  ADDITIONAL OPTION 2 ROM END
literal KA420$B_X1CSRS = 25600;         !  ADDIITONAL OPTION 1 CSR'S START
literal KA420$B_X2CSRS = 26112;         !  ADDITIONAL OPTION 2 CSR'S START
literal KA420$B_ASCONSTA = 26624;       !  ASYNCH SERIAL LINE OPTION CONTROL AND STATUS REGS START
literal KA420$B_VDCSR1 = 26624;         !  CSRS FOR OPTION IN VIDEO SLOT
literal KA420$B_CVADDER = 27136;        !  COLOR VIDEO OPTION ADDER REGS START
literal KA420$B_CVFIFO = 27648;         !  COLOR VIDEO OPTION FIFO COMPRESSION REGS START
literal KA420$B_CVVDAC = 27904;         !  COLOR VIDEO OPTION VIDEO DAC REGS START
literal KA420$B_CVCURS = 28160;         !  COLOR VIDEO OPTION CURSOR REGS START
literal KA420$W_CVVRDBK = 28416;        !  COLOR VIDEO OPTION VIDEO READBACK REG 
literal KA420$B_D128BUFS = 28672;       !  DATA BUFFER 128K FULL RANGE START
literal KA420$B_D128BUFE = 159743;      !  DATA BUFFER 128K FULL RANGE START
literal KA420$B_CACH2DS = 159744;       !  2ND CACHE DATA START
literal KA420$B_CACH2DE = 192511;       !  2ND CACHE DATA START
! **********************************************************************************
!                                                                                  *
!   NOTE:  The second page of the console program scratch RAM is being mapped      *
! 	   here to maintain compatibility with the offsets in $KA410DEF.	   *
! 	   Therefore the first and second page of scratch RAM are NOT virtually    *
! 	   contiguous, and <KA420$B_NIRAM-KA420$B_SCRAMS> will not correctly	   *
! 	   give the offset into scratch RAM for fields in the second page.	   *
! 	   Instead <KA420$B_NIRAM-KA420$B_SCRAM2S+^X200> should be used.	   *
!                                                                                  *
! **********************************************************************************
literal KA420$B_SCRAM2S = 192512;       !  BEGIN OF 2ND PAGE OF CONSOLE SCRATCH RAM
literal KA420$L_NICSR = 192640;         !  LOC TO WRITE NI DEVICE CSR - FOR LISTENER
literal KA420$A_NIRAM = 192644;         !  PTR TO 64KB LANCE RAM BUFFER
literal KA420$A_NIPKT = 192648;         !  LOC TO WRITE PTR TO NI PACKET DESC - FOR LISTENER
literal KA420$B_SCRAM2E = 193023;       !  END OF 2ND PAGE OF CONSOLE SCRATCH RAM
literal KA420$B_SCFWROMS = 193024;      !  STORAGE CONTROLLER OPTION FIRMWARE ROM START
literal KA420$B_SCFWROME = 194047;      !  STORAGE CONTROLLER OPTION FIRMWARE ROM END
literal KA420$S_KA420DEF = 194048;      !  SIZE MAPPED BY $KA420DEF
!  Configuration and Test Register
literal KA420$M_CFGTST_MTYPE = 7;
literal KA420$M_CFGTST_VIDOPT = 8;
literal KA420$M_CFGTST_CURTST = 16;
literal KA420$M_CFGTST_L3CON = 32;
literal KA420$M_CFGTST_CACHPR = 64;
literal KA420$M_CFGTST_VIDPR = 128;
literal KA420$M_CFGTST_DRV0PR = 256;
literal KA420$M_CFGTST_DRV1PR = 512;
literal KA420$M_CFGTST_DRV2PR = 1024;
literal KA420$M_CFGTST_DRV3PR = 2048;
literal KA420$M_CFGTST_SCSIPR = 4096;
literal KA420$M_CFGTST_STCOPT = 49152;
literal KA420$S_CFGTST = 2;
macro KA420$V_CFGTST_MTYPE = 0,0,3,0 %;
literal KA420$S_CFGTST_MTYPE = 3;       ! MEMORY OPTION BOARD PRESENT
!   000 = NO MEM BOARD  100 = 6144KB
!   001 = 1024KB        101 = 8192KB
!   010 = 2048KB        110 = 12288KB
!   011 = 4096KB        111 = 14336
macro KA420$V_CFGTST_VIDOPT = 0,3,1,0 %; ! VIDEO OPTION PRESENT
macro KA420$V_CFGTST_CURTST = 0,4,1,0 %; ! CURSOR TEST
macro KA420$V_CFGTST_L3CON = 0,5,1,0 %; ! LINE 3 CONSOLE
macro KA420$V_CFGTST_CACHPR = 0,6,1,0 %; ! CACHE PRESENT
macro KA420$V_CFGTST_VIDPR = 0,7,1,0 %; ! VIDEO CONTROLLER PRESENT
macro KA420$V_CFGTST_DRV0PR = 0,8,1,0 %; ! 1ST HARD DISK DRIVE PRESENT
macro KA420$V_CFGTST_DRV1PR = 0,9,1,0 %; ! 2ND HARD DISK DRIVE PRESENT
macro KA420$V_CFGTST_DRV2PR = 0,10,1,0 %; ! DISKETTE DIRVE PRESENT
macro KA420$V_CFGTST_DRV3PR = 0,11,1,0 %; ! 3RD HARD DISK DRIVE PRESENT
macro KA420$V_CFGTST_SCSIPR = 0,12,1,0 %; ! SCSI DEVICE PRESENT
macro KA420$V_CFGTST_FILL1 = 0,13,1,0 %; ! RESERVED
macro KA420$V_CFGTST_STCOPT = 0,14,2,0 %;
literal KA420$S_CFGTST_STCOPT = 2;      ! STORAGE CONTROLLER OPTION TYPE
!  00 = VS42X-RT CONTROLLER
!  01 = RESERVED
!  10 = RESERVED
!  11 = NO STORAGE CONTROLLER
!  System ID Extension Longword
literal KA420$S_SIDEX = 4;
macro KA420$W_SIDEX_FILL1 = 0,0,16,0 %; ! RESERVED
macro KA420$B_SIDEX_ROMVER = 2,0,8,0 %; ! BOOT ROM VERSION
macro KA420$B_SIDEX_SYSCODE = 3,0,8,0 %; ! SYSTEM CODE. 4=VAXstar
!  Interrupt Mask Register (INTMSK)
literal KA420$M_INTMSK_DC = 1;
literal KA420$M_INTMSK_SC = 2;
literal KA420$M_INTMSK_VS = 4;
literal KA420$M_INTMSK_VF = 8;
literal KA420$M_INTMSK_NS = 16;
literal KA420$M_INTMSK_NP = 32;
literal KA420$M_INTMSK_ST = 64;
literal KA420$M_INTMSK_SR = 128;
literal KA420$S_INTMSK = 1;
macro KA420$V_INTMSK_DC = 0,0,1,0 %;    ! Disk controller
macro KA420$V_INTMSK_SC = 0,1,1,0 %;    ! SCSI controller
macro KA420$V_INTMSK_VS = 0,2,1,0 %;    ! Video secondary
macro KA420$V_INTMSK_VF = 0,3,1,0 %;    ! Video end of frame
macro KA420$V_INTMSK_NS = 0,4,1,0 %;    ! Network ctlr 2ndary
macro KA420$V_INTMSK_NP = 0,5,1,0 %;    ! Network ctlr primary
macro KA420$V_INTMSK_ST = 0,6,1,0 %;    ! Serial line transmitter done
macro KA420$V_INTMSK_SR = 0,7,1,0 %;    ! Serial line receiver or silo full
!  Interrupt Mask Register (INTREQ)
literal KA420$M_INTREQ_DC = 1;
literal KA420$M_INTREQ_SC = 2;
literal KA420$M_INTREQ_VS = 4;
literal KA420$M_INTREQ_VF = 8;
literal KA420$M_INTREQ_NS = 16;
literal KA420$M_INTREQ_NP = 32;
literal KA420$M_INTREQ_ST = 64;
literal KA420$M_INTREQ_SR = 128;
literal KA420$S_INTREQ = 1;
macro KA420$V_INTREQ_DC = 0,0,1,0 %;    ! Disk controller
macro KA420$V_INTREQ_SC = 0,1,1,0 %;    ! SCSI controller
macro KA420$V_INTREQ_VS = 0,2,1,0 %;    ! Video secondary
macro KA420$V_INTREQ_VF = 0,3,1,0 %;    ! Video end of frame
macro KA420$V_INTREQ_NS = 0,4,1,0 %;    ! Network ctlr 2ndary
macro KA420$V_INTREQ_NP = 0,5,1,0 %;    ! Network ctlr primary
macro KA420$V_INTREQ_ST = 0,6,1,0 %;    ! Serial line transmitter done
macro KA420$V_INTREQ_SR = 0,7,1,0 %;    ! Serial line receiver or silo full
!  Interrupt Mask Register (INTCLR)
literal KA420$M_INTCLR_DC = 1;
literal KA420$M_INTCLR_SC = 2;
literal KA420$M_INTCLR_VS = 4;
literal KA420$M_INTCLR_VF = 8;
literal KA420$M_INTCLR_NS = 16;
literal KA420$M_INTCLR_NP = 32;
literal KA420$M_INTCLR_ST = 64;
literal KA420$M_INTCLR_SR = 128;
literal KA420$S_INTCLR = 1;
macro KA420$V_INTCLR_DC = 0,0,1,0 %;    ! Disk controller
macro KA420$V_INTCLR_SC = 0,1,1,0 %;    ! SCSI controller
macro KA420$V_INTCLR_VS = 0,2,1,0 %;    ! Video secondary
macro KA420$V_INTCLR_VF = 0,3,1,0 %;    ! Video end of frame
macro KA420$V_INTCLR_NS = 0,4,1,0 %;    ! Network ctlr 2ndary
macro KA420$V_INTCLR_NP = 0,5,1,0 %;    ! Network ctlr primary
macro KA420$V_INTCLR_ST = 0,6,1,0 %;    ! Serial line transmitter done
macro KA420$V_INTCLR_SR = 0,7,1,0 %;    ! Serial line receiver or silo full
!  Console mailbox register (CPMBX) - located in non-volatile RAM
literal KA420$M_CPMBX_HLT = 3;
literal KA420$M_CPMBX_BIP = 4;
literal KA420$M_CPMBX_RIP = 8;
literal KA420$S_CPMBX = 1;
macro KA420$V_CPMBX_HLT = 0,0,2,0 %;
literal KA420$S_CPMBX_HLT = 2;          ! Halt action 
!  00 = restart
!  01 = restart
!  02 = boot 
!  03 = halt 
macro KA420$V_CPMBX_BIP = 0,2,1,0 %;    ! Boot in Progress 
macro KA420$V_CPMBX_RIP = 0,3,1,0 %;    ! Restart in Progress 
!  Disk unit presence mask
literal KA420$M_DISKMASK_DUA0 = 1;
literal KA420$M_DISKMASK_DUA1 = 2;
literal KA420$M_DISKMASK_DUA2 = 4;
literal KA420$M_DISKMASK_DUA3 = 8;
literal KA420$S_DISKMASK = 1;
macro KA420$V_DISKMASK_DUA0 = 0,0,1,0 %; !  Unit 0 exists
macro KA420$V_DISKMASK_DUA1 = 0,1,1,0 %; !  Unit 1 exists
macro KA420$V_DISKMASK_DUA2 = 0,2,1,0 %; !  Unit 2 exists
macro KA420$V_DISKMASK_DUA3 = 0,3,1,0 %; !  Unit 3 exists
!  Disk controller mask
literal KA420$M_DISKCTRL_CTRL = 1;
literal KA420$M_DISKCTRL_BUFFER = 2;
literal KA420$S_DISKCTRL = 1;
macro KA420$V_DISKCTRL_CTRL = 0,0,1,0 %; !  Disk controller exists
macro KA420$V_DISKCTRL_BUFFER = 0,1,1,0 %; !  Disk buffer exists
!  Tape unit presence mask
literal KA420$M_TAPEMASK_SCSI_0 = 1;
literal KA420$M_TAPEMASK_SCSI_1 = 2;
literal KA420$S_TAPEMASK = 1;
macro KA420$V_TAPEMASK_SCSI_0 = 0,0,1,0 %; !  Unit 0 exists (system)
macro KA420$V_TAPEMASK_SCSI_1 = 0,1,1,0 %; !  Unit 1 exists (drive)
!  Tape controller mask
literal KA420$M_TAPECTRL_CTRL = 1;
literal KA420$M_TAPECTRL_BUFFER = 2;
literal KA420$S_TAPECTRL = 1;
macro KA420$V_TAPECTRL_CTRL = 0,0,1,0 %; !  Tape controller exists
macro KA420$V_TAPECTRL_BUFFER = 0,1,1,0 %; !  Tape buffer exists
!  Parity control register
literal KA420$M_PAR_CTL_DPEN = 1;
literal KA420$M_PAR_CTL_CPEN = 2;
literal KA420$M_PAR_CTL_DMA = 16777216;
literal KA420$S_PAR_CTL = 4;
macro KA420$V_PAR_CTL_DPEN = 0,0,1,0 %; ! DMA parity enable
macro KA420$V_PAR_CTL_CPEN = 0,1,1,0 %; ! CPU parity enable
macro KA420$V_PAR_CTL_FILL = 0,2,22,0 %;
literal KA420$S_PAR_CTL_FILL = 22;      ! RESERVED
macro KA420$V_PAR_CTL_DMA = 0,24,1,0 %; ! Lance DMA control
!  Cache Control Register
literal KA420$M_CACR_DIA = 1;
literal KA420$M_CACR_WWP = 2;
literal KA420$M_CACR_CEN = 16;
literal KA420$M_CACR_TPE = 32;
literal KA420$M_CACR_CSP = 192;
literal KA420$M_CACR_TAG = 261888;
literal KA420$M_CACR_TGV = 524288;
literal KA420$M_CACR_TGP = 1048576;
literal KA420$M_CACR_TPP = 2097152;
literal KA420$M_CACR_BMS = 268435456;
literal KA420$M_CACR_CP = -536870912;
literal KA420$S_CACR = 4;
macro KA420$V_CACR_DIA = 0,0,1,0 %;     ! DIAGNOSTIC MODE
macro KA420$V_CACR_WWP = 0,1,1,0 %;     ! WRITE WRONG PARITY
macro KA420$V_CACR_FILL1 = 0,2,2,0 %;
literal KA420$S_CACR_FILL1 = 2;         ! RESERVED
macro KA420$V_CACR_CEN = 0,4,1,0 %;     ! CACHE ENABLE
macro KA420$V_CACR_TPE = 0,5,1,0 %;     ! TAG PARITY ERROR
macro KA420$V_CACR_CSP = 0,6,2,0 %;
literal KA420$S_CACR_CSP = 2;           ! CVAX CLOCK SPEED
!  00 = RESERVED
!  01 = RESERVED
!  10 = 80 NANOSECONDS
!  11 = 100 NANOSECONDS
macro KA420$V_CACR_TAG = 0,8,10,0 %;
literal KA420$S_CACR_TAG = 10;          ! TAG
macro KA420$V_CACR_FILL2 = 0,18,1,0 %;  ! RESERVED
macro KA420$V_CACR_TGV = 0,19,1,0 %;    ! VALID FLAG
macro KA420$V_CACR_TGP = 0,20,1,0 %;    ! TAG PARITY
macro KA420$V_CACR_TPP = 0,21,1,0 %;    ! TAG PREDICTED PARITY
macro KA420$V_CACR_FILL3 = 0,22,6,0 %;
literal KA420$S_CACR_FILL3 = 6;         ! RESERVED
macro KA420$V_CACR_BMS = 0,28,1,0 %;    ! BASE MEMORY MODULE SIZE
macro KA420$V_CACR_CP = 0,29,3,0 %;
literal KA420$S_CACR_CP = 3;            ! PARITY FROM LAST NON-IO READ ON DAL BUS
 
!*** MODULE $KA43DEF ***
literal KA43$L_CFGTST = 0;
literal KA43$B_IORESET = 0;
literal KA43$L_SYSTYPE = 516;
literal KA43$L_HLTCOD = 1024;
literal KA43$B_INTMSK = 1036;
literal KA43$B_VDCORG = 1037;
literal KA43$B_VDCSEL = 1038;
literal KA43$B_INTREQ = 1039;
literal KA43$B_INTCLR = 1039;
literal KA43$W_DIAGDISP = 1040;
literal KA43$L_PARCTL = 1044;
literal KA43$W_DIAGTIME = 1054;
literal KA43$B_NIADRS = 1536;
literal KA43$B_NIADRE = 1663;
literal KA43$W_SERCSR = 2048;
literal KA43$W_SERRBF = 2052;
literal KA43$W_SERLPR = 2052;
literal KA43$W_SERTCR = 2056;
literal KA43$W_SERMSR = 2060;
literal KA43$W_SERTDR = 2060;
literal KA43$L_TODSEC = 2560;
literal KA43$L_TODSAL = 2564;
literal KA43$L_TODMIN = 2568;
literal KA43$L_TODMAL = 2572;
literal KA43$L_TODHR = 2576;
literal KA43$L_TODHAL = 2580;
literal KA43$L_TODDWK = 2584;
literal KA43$L_TODDAY = 2588;
literal KA43$L_TODMON = 2592;
literal KA43$L_TODYR = 2596;
literal KA43$L_TODCSA = 2600;
literal KA43$L_TODCSB = 2604;
literal KA43$L_TODCSC = 2608;
literal KA43$L_TODCSD = 2612;
literal KA43$B_RAMST = 2616;
literal KA43$B_CPMBX = 2616;
literal KA43$B_CPFLG = 2620;
literal KA43$B_LK201 = 2624;
literal KA43$B_CONID = 2628;
literal KA43$L_SCRPTR = 2632;
literal KA43$L_BATCHK = 2696;
literal KA43$L_PASSWORD = 2712;
literal KA43$L_BOOFLG = 2728;
literal KA43$B_SCRLEN = 2744;
literal KA43$B_SCSI = 2748;
literal KA43$B_BOODEVLEN = 2752;
literal KA43$B_BOODEV = 2756;
literal KA43$B_RAMEND = 2812;
literal KA43$B_ASCSICSR = 3200;
literal KA43$B_SCTLS = 3200;
literal KA43$B_SCTLE = 3231;
literal KA43$B_SCSOUTDAT = 3200;
literal KA43$B_SCSCURDAT = 3200;
literal KA43$B_SCSINICMD = 3204;
literal KA43$B_SCSMODE = 3208;
literal KA43$B_SCSTARCMD = 3212;
literal KA43$B_SCSSELENA = 3216;
literal KA43$B_SCSCURSTA = 3216;
literal KA43$B_SCSDMASND = 3220;
literal KA43$B_SCSSTATUS = 3220;
literal KA43$B_SCSDMATRC = 3224;
literal KA43$B_SCSINDATA = 3224;
literal KA43$B_SCSDMAIRC = 3228;
literal KA43$B_SCSRESET = 3228;
literal KA43$B_SCDADR = 3232;
literal KA43$W_SCDCNT = 3264;
literal KA43$B_SCDDIR = 3268;
literal KA43$B_STCMODE = 3296;
literal KA43$B_BSCSICSR = 3456;
literal KA43$B_BSCSOUTDAT = 3456;
literal KA43$B_BSCSCURDAT = 3456;
literal KA43$B_BSCSINICMD = 3460;
literal KA43$B_BSCSMODE = 3464;
literal KA43$B_BSCSTARCMD = 3468;
literal KA43$B_BSCSSELENA = 3472;
literal KA43$B_BSCSCURSTA = 3472;
literal KA43$B_BSCSDMASND = 3476;
literal KA43$B_BSCSSTATUS = 3476;
literal KA43$B_BSCSDMATRC = 3480;
literal KA43$B_BSCSINDATA = 3480;
literal KA43$B_BSCSDMAIRC = 3484;
literal KA43$B_BSCSRESET = 3484;
literal KA43$B_BSCDADR = 3488;
literal KA43$W_BSCDCNT = 3520;
literal KA43$B_BSCDDIR = 3524;
literal KA43$B_FILL16KBS = 3584;
literal KA43$B_FILL16KBE = 19967;
literal KA43$W_NIRDP = 19968;
literal KA43$W_NIRAP = 19972;
literal KA43$W_VCCMD = 20480;
literal KA43$W_VCXPOS = 20484;
literal KA43$W_VCYPOS = 20504;
literal KA43$W_VCXMN1 = 20492;
literal KA43$W_VCXMX1 = 20496;
literal KA43$W_VCYMN1 = 20500;
literal KA43$W_VCYMX1 = 20504;
literal KA43$W_VCXMN2 = 20524;
literal KA43$W_VCXMX2 = 20528;
literal KA43$W_VCYMN2 = 20532;
literal KA43$W_VCYMX2 = 20536;
literal KA43$W_VCLOAD = 20540;
literal KA43$L_SESR = 20992;
literal KA43$B_FILLPG1 = 21504;
literal KA43$B_VDROMS = 22016;
literal KA43$B_VDROME = 23039;
literal KA43$B_SCRAMS = 23040;
literal KA43$A_MCT = 23040;
literal KA43$A_OP1RAM = 23044;
literal KA43$A_OP2RAM = 23048;
literal KA43$A_GOOD64 = 23052;
literal KA43$A_BMAP = 23056;
literal KA43$L_BMAPL = 23060;
literal KA43$L_KBGOOD = 23064;
literal KA43$L_MSGOOD = 23068;
literal KA43$A_INIOUT = 23072;
literal KA43$A_RSTOUT = 23076;
literal KA43$A_INIINP = 23080;
literal KA43$A_RSTINP = 23084;
literal KA43$A_GETCHR = 23088;
literal KA43$A_PUTCHR = 23092;
literal KA43$A_FBEEP = 23096;
literal KA43$L_CURBOT = 23100;
literal KA43$L_CURCOL = 23104;
literal KA43$L_CURROW = 23108;
literal KA43$A_SAVCON = 23112;
literal KA43$A_RSTCON = 23116;
literal KA43$L_STFLAG = 23120;
literal KA43$A_STLOOP = 23124;
literal KA43$L_VMB_VERSION = 23504;
literal KA43$L_SELFTEST_VERSION = 23508;
literal KA43$L_CONSOLE_VERSION = 23512;
literal KA43$B_DISKMASK = 23516;
literal KA43$B_DISKCTRL = 23517;
literal KA43$B_TAPEMASK = 23520;
literal KA43$B_TAPECTRL = 23521;
literal KA43$L_CELL_HGHT = 23524;
literal KA43$L_CELL_WIDTH = 23528;
literal KA43$L_QD_MEM = 23544;
literal KA43$L_MAXCOL = 23548;
literal KA43$L_ROMREV = 23624;
literal KA43$L_NICSR = 23680;
literal KA43$A_NIRAM = 23684;
literal KA43$A_NIPKT = 23688;
literal KA43$B_SCRAME = 24063;
literal KA43$B_X1ROMS = 23808;
literal KA43$B_X1ROME = 24831;
literal KA43$B_X2ROMS = 25088;
literal KA43$B_X2ROME = 26111;
literal KA43$B_X1CSRS = 26112;
literal KA43$B_X2CSRS = 26624;
literal KA43$B_CVADDER = 27136;
literal KA43$B_CVFIFO = 27648;
literal KA43$B_CVVDAC = 27904;
literal KA43$B_CVCURS = 28160;
literal KA43$W_CVVRDBK = 28416;
literal KA43$B_D128BUFS = 28672;
literal KA43$B_D128BUFE = 159743;
literal KA43$B_CACH2TS = 159744;
literal KA43$B_CACH2TE = 290815;
literal KA43$S_KA43DEF = 290816;
literal KA43$M_CFGTST_VIDOPT = 8;
literal KA43$M_CFGTST_CURTST = 16;
literal KA43$M_CFGTST_L3CON = 32;
literal KA43$M_CFGTST_SIMM = 16711680;
literal KA43$S_KA43_CFGTST = 4;
macro KA43$V_CFGTST_VIDOPT = 0,3,1,0 %;
macro KA43$V_CFGTST_CURTST = 0,4,1,0 %;
macro KA43$V_CFGTST_L3CON = 0,5,1,0 %;
macro KA43$V_CFGTST_SIMM = 0,16,8,0 %;
literal KA43$S_CFGTST_SIMM = 8;
literal KA43$S_KA43_SYSTYPE = 4;
macro KA43$B_SYSTYPE_NUMUSER = 0,0,8,0 %;
macro KA43$B_SYSTYPE_SUBTYPE = 1,0,8,0 %;
macro KA43$B_SYSTYPE_ROMVERS = 2,0,8,0 %;
macro KA43$B_SYSTYPE_SYSCODE = 3,0,8,0 %;
literal KA43$M_INTMSK_SC_B = 1;
literal KA43$M_INTMSK_SC_A = 2;
literal KA43$M_INTMSK_VS = 4;
literal KA43$M_INTMSK_VF = 8;
literal KA43$M_INTMSK_NS = 16;
literal KA43$M_INTMSK_NI = 32;
literal KA43$M_INTMSK_ST = 64;
literal KA43$M_INTMSK_SR = 128;
literal KA43$S_KA43_INTMSK = 1;
macro KA43$V_INTMSK_SC_B = 0,0,1,0 %;
macro KA43$V_INTMSK_SC_A = 0,1,1,0 %;
macro KA43$V_INTMSK_VS = 0,2,1,0 %;
macro KA43$V_INTMSK_VF = 0,3,1,0 %;
macro KA43$V_INTMSK_NS = 0,4,1,0 %;
macro KA43$V_INTMSK_NI = 0,5,1,0 %;
macro KA43$V_INTMSK_ST = 0,6,1,0 %;
macro KA43$V_INTMSK_SR = 0,7,1,0 %;
literal KA43$M_INTREQ_SC_B = 1;
literal KA43$M_INTREQ_SC_A = 2;
literal KA43$M_INTREQ_VS = 4;
literal KA43$M_INTREQ_VF = 8;
literal KA43$M_INTREQ_NS = 16;
literal KA43$M_INTREQ_NI = 32;
literal KA43$M_INTREQ_ST = 64;
literal KA43$M_INTREQ_SR = 128;
literal KA43$S_KA43_INTREQ = 1;
macro KA43$V_INTREQ_SC_B = 0,0,1,0 %;
macro KA43$V_INTREQ_SC_A = 0,1,1,0 %;
macro KA43$V_INTREQ_VS = 0,2,1,0 %;
macro KA43$V_INTREQ_VF = 0,3,1,0 %;
macro KA43$V_INTREQ_NS = 0,4,1,0 %;
macro KA43$V_INTREQ_NI = 0,5,1,0 %;
macro KA43$V_INTREQ_ST = 0,6,1,0 %;
macro KA43$V_INTREQ_SR = 0,7,1,0 %;
literal KA43$M_INTCLR_SC_B = 1;
literal KA43$M_INTCLR_SC_A = 2;
literal KA43$M_INTCLR_VS = 4;
literal KA43$M_INTCLR_VF = 8;
literal KA43$M_INTCLR_NS = 16;
literal KA43$M_INTCLR_NI = 32;
literal KA43$M_INTCLR_ST = 64;
literal KA43$M_INTCLR_SR = 128;
literal KA43$S_KA43_INTCLR = 1;
macro KA43$V_INTCLR_SC_B = 0,0,1,0 %;
macro KA43$V_INTCLR_SC_A = 0,1,1,0 %;
macro KA43$V_INTCLR_VS = 0,2,1,0 %;
macro KA43$V_INTCLR_VF = 0,3,1,0 %;
macro KA43$V_INTCLR_NS = 0,4,1,0 %;
macro KA43$V_INTCLR_NI = 0,5,1,0 %;
macro KA43$V_INTCLR_ST = 0,6,1,0 %;
macro KA43$V_INTCLR_SR = 0,7,1,0 %;
literal KA43$M_PARCTL_DPEN = 1;
literal KA43$M_PARCTL_CPEN = 2;
literal KA43$M_PARCTL_DMA = 16777216;
literal KA43$S_KA43_PARCTL = 4;
macro KA43$V_PARCTL_DPEN = 0,0,1,0 %;
macro KA43$V_PARCTL_CPEN = 0,1,1,0 %;
macro KA43$V_PARCTL_FILL1 = 0,2,22,0 %;
literal KA43$S_PARCTL_FILL1 = 22;
macro KA43$V_PARCTL_DMA = 0,24,1,0 %;
macro KA43$V_PARCTL_FILL2 = 0,25,7,0 %;
literal KA43$S_PARCTL_FILL2 = 7;
literal KA43$M_SESR_CENB = 1;
literal KA43$M_SESR_SUNERR = 2;
literal KA43$M_SESR_LSTERR = 4;
literal KA43$M_SESR_CERR = 8;
literal KA43$M_SESR_DIRTY = 16;
literal KA43$M_SESR_MISS = 32;
literal KA43$M_SESR_DPE = 64;
literal KA43$M_SESR_TPE = 128;
literal KA43$M_SESR_WSB = 65536;
literal KA43$M_SESR_CIEA = -262144;
literal KA43$S_KA43_SESR = 4;
macro KA43$V_SESR_CENB = 0,0,1,0 %;
macro KA43$V_SESR_SUNERR = 0,1,1,0 %;
macro KA43$V_SESR_LSTERR = 0,2,1,0 %;
macro KA43$V_SESR_CERR = 0,3,1,0 %;
macro KA43$V_SESR_DIRTY = 0,4,1,0 %;
macro KA43$V_SESR_MISS = 0,5,1,0 %;
macro KA43$V_SESR_DPE = 0,6,1,0 %;
macro KA43$V_SESR_TPE = 0,7,1,0 %;
macro KA43$V_SESR_WSB = 0,16,1,0 %;
macro KA43$V_SESR_CIEA = 0,18,14,0 %;
literal KA43$S_SESR_CIEA = 14;
literal KA43$M_CPMBX_HLTACT = 3;
literal KA43$M_CPMBX_BIP = 4;
literal KA43$M_CPMBX_RIP = 8;
literal KA43$M_CPMBX_HLTSWX = 48;
literal KA43$M_CPMBX_MOP = 64;
literal KA43$M_CPMBX_TRIG = 128;
literal KA43$S_CPMBX = 1;
macro KA43$V_CPMBX_HLTACT = 0,0,2,0 %;
literal KA43$S_CPMBX_HLTACT = 2;
macro KA43$V_CPMBX_BIP = 0,2,1,0 %;
macro KA43$V_CPMBX_RIP = 0,3,1,0 %;
macro KA43$V_CPMBX_HLTSWX = 0,4,2,0 %;
literal KA43$S_CPMBX_HLTSWX = 2;
macro KA43$V_CPMBX_MOP = 0,6,1,0 %;
macro KA43$V_CPMBX_TRIG = 0,7,1,0 %;
literal KA43$K_RS_RB_HLT = 0;
literal KA43$K_RS_HLT = 1;
literal KA43$K_RB_HLT = 2;
literal KA43$K_HLT = 3;
literal KA43$M_CPFLG_GUARD = 1;
literal KA43$M_CPFLG_CRT = 2;
literal KA43$M_CPFLG_MCS = 4;
literal KA43$M_CPFLG_REENTER = 8;
literal KA43$M_CPFLG_CORRUPT = 16;
literal KA43$M_CPFLG_VIDEO = 32;
literal KA43$M_CPFLG_LK201 = 64;
literal KA43$M_CPFLG_PFILE = 128;
literal KA43$S_CPFLG = 1;
macro KA43$V_CPFLG_GUARD = 0,0,1,0 %;
macro KA43$V_CPFLG_CRT = 0,1,1,0 %;
macro KA43$V_CPFLG_MCS = 0,2,1,0 %;
macro KA43$V_CPFLG_REENTER = 0,3,1,0 %;
macro KA43$V_CPFLG_CORRUPT = 0,4,1,0 %;
macro KA43$V_CPFLG_VIDEO = 0,5,1,0 %;
macro KA43$V_CPFLG_LK201 = 0,6,1,0 %;
macro KA43$V_CPFLG_PFILE = 0,7,1,0 %;
 
!*** MODULE $KA440DEF ***
literal KA440$L_CFGTST = 0;
literal KA440$B_IORESET = 0;
literal KA440$L_SYSTYPE = 516;
literal KA440$L_HLTCOD1 = 1024;
literal KA440$L_HLTCOD2 = 1028;
literal KA440$L_MAPBASE = 1032;
literal KA440$B_INTMSK = 1036;
literal KA440$B_INTREQ = 1039;
literal KA440$B_INTCLR = 1039;
literal KA440$W_DIAGDISP = 1040;
literal KA440$L_PAR_CTL = 1044;
literal KA440$W_DIAGTIMU = 1052;
literal KA440$W_DIAGTIMM = 1054;
literal KA440$B_NIADRS = 1536;
literal KA440$B_NIADRE = 1663;
literal KA440$W_SERCSR = 2048;
literal KA440$W_SERRBF = 2052;
literal KA440$W_SERLPR = 2052;
literal KA440$W_SERTCR = 2056;
literal KA440$W_SERMSR = 2060;
literal KA440$W_SERTDR = 2060;
literal KA440$W_DZLPR0 = 2064;
literal KA440$W_DZLPR1 = 2068;
literal KA440$W_DZLPR2 = 2072;
literal KA440$W_DZLPR3 = 2076;
literal KA440$L_TODSEC = 2560;
literal KA440$L_TODSAL = 2564;
literal KA440$L_TODMIN = 2568;
literal KA440$L_TODMAL = 2572;
literal KA440$L_TODHR = 2576;
literal KA440$L_TODHAL = 2580;
literal KA440$L_TODDWK = 2584;
literal KA440$L_TODDAY = 2588;
literal KA440$L_TODMON = 2592;
literal KA440$L_TODYR = 2596;
literal KA440$L_TODCSA = 2600;
literal KA440$L_TODCSB = 2604;
literal KA440$L_TODCSC = 2608;
literal KA440$L_TODCSD = 2612;
literal KA440$B_RAMST = 2616;
literal KA440$B_CPMBX = 2616;
literal KA440$B_CPFLG = 2620;
literal KA440$B_LK201 = 2624;
literal KA440$B_CONID = 2628;
literal KA440$L_SCRPTR = 2632;
literal KA440$L_BATCHK = 2696;
literal KA440$L_TRGPSW = 2712;
literal KA440$L_BOOFLG = 2728;
literal KA440$B_SCRLEN = 2744;
literal KA440$B_SCSI = 2748;
literal KA440$L_BOOLEN = 2752;
literal KA440$L_BOODEV = 2756;
literal KA440$B_RAMEND = 2812;
literal KA440$L_SCDADR = 3072;
literal KA440$B_SCDDIR = 3084;
literal KA440$L_SCSIS = 3200;
literal KA440$L_SCSIE = 3504;
literal KA440$B_SNDPS = 3584;
literal KA440$B_SNDPE = 3591;
literal KA440$L_INVFLS = 4096;
literal KA440$L_INVFLE = 8191;
literal KA440$L_BEHR = 8192;
literal KA440$B_SYNCROMS = 8704;
literal KA440$B_SYNCROME = 9727;
literal KA440$L_SYNCRST = 9728;
literal KA440$W_NIRDP = 10240;
literal KA440$W_NIRAP = 10244;
literal KA440$L_MEMCNFG = 12288;
literal KA440$L_MEMSTAT = 12292;
literal KA440$L_MEMCUR = 12296;
literal KA440$L_MEMERR = 12300;
literal KA440$B_LCGROMS = 12800;
literal KA440$B_LCGROME = 13823;
literal KA440$B_SCRAMS = 13312;
literal KA440$A_MCT = 13312;
literal KA440$A_OP1RAM = 13316;
literal KA440$A_OP2RAM = 13320;
literal KA440$A_GOOD64 = 13324;
literal KA440$A_BMAP = 13328;
literal KA440$L_BMAPL = 13332;
literal KA440$L_BMAPCHK = 13336;
literal KA440$L_MAXROW = 13340;
literal KA440$L_CURCOL = 13344;
literal KA440$L_CURROW = 13348;
literal KA440$A_SAVCON = 13352;
literal KA440$A_RSTCON = 13356;
literal KA440$A_ABMAP = 13360;
literal KA440$A_SVSTAT = 13364;
literal KA440$L_TOTMEM = 13368;
literal KA440$A_GOOD256 = 13372;
literal KA440$A_PRMMEM = 13376;
literal KA440$L_TMEMSIZ = 13380;
literal KA440$A_TMEM = 13384;
literal KA440$L_CCFNCT = 13388;
literal KA440$L_CSP = 13420;
literal KA440$L_REG = 13424;
literal KA440$A_USFONT = 13428;
literal KA440$A_MCS_FONT = 13432;
literal KA440$L_CELL_WIDTH = 13436;
literal KA440$L_CELL_HGHT = 13440;
literal KA440$A_NIRAM = 13444;
literal KA440$A_LANCE = 13448;
literal KA440$L_ROMREV = 13452;
literal KA440$L_VMB_VERSION = 13456;
literal KA440$L_CONS_REVISION = 13460;
literal KA440$L_SFTST_REV = 13468;
literal KA440$B_SCRAME = 13567;
literal KA440$L_DMAPS = 13824;
literal KA440$L_DMAPE = 144895;
literal KA440$S_KA440DEF = 144896;
literal KA440$M_CFGTST_MTYPE = 63;
literal KA440$M_CFGTST_VIDOPT = 192;
literal KA440$M_CFGTST_L3CON = 256;
literal KA440$S_KA440_CFGTST = 2;
macro KA440$V_CFGTST_MTYPE = 0,0,6,0 %;
literal KA440$S_CFGTST_MTYPE = 6;
macro KA440$V_CFGTST_VIDOPT = 0,6,2,0 %;
literal KA440$S_CFGTST_VIDOPT = 2;
macro KA440$V_CFGTST_L3CON = 0,8,1,0 %;
literal KA440$S_KA440_SYSTYPE = 4;
macro KA440$B_SYSTYPE_NUMUSER = 0,0,8,0 %;
macro KA440$B_SYSTYPE_SUBTYPE = 1,0,8,0 %;
macro KA440$B_SYSTYPE_ROMVERS = 2,0,8,0 %;
macro KA440$B_SYSTYPE_SYSCODE = 3,0,8,0 %;
literal KA440$M_INTMSK_SC = 1;
literal KA440$M_INTMSK_NI = 2;
literal KA440$M_INTMSK_G0 = 4;
literal KA440$M_INTMSK_G1 = 8;
literal KA440$M_INTMSK_AT = 16;
literal KA440$M_INTMSK_AR = 32;
literal KA440$M_INTMSK_SP = 64;
literal KA440$M_INTMSK_CO = 128;
literal KA440$S_KA440_INTMSK = 1;
macro KA440$V_INTMSK_SC = 0,0,1,0 %;
macro KA440$V_INTMSK_NI = 0,1,1,0 %;
macro KA440$V_INTMSK_G0 = 0,2,1,0 %;
macro KA440$V_INTMSK_G1 = 0,3,1,0 %;
macro KA440$V_INTMSK_AT = 0,4,1,0 %;
macro KA440$V_INTMSK_AR = 0,5,1,0 %;
macro KA440$V_INTMSK_SP = 0,6,1,0 %;
macro KA440$V_INTMSK_CO = 0,7,1,0 %;
literal KA440$M_INTREQ_SC = 1;
literal KA440$M_INTREQ_NI = 2;
literal KA440$M_INTREQ_G0 = 4;
literal KA440$M_INTREQ_G1 = 8;
literal KA440$M_INTREQ_AT = 16;
literal KA440$M_INTREQ_AR = 32;
literal KA440$M_INTREQ_SP = 64;
literal KA440$M_INTREQ_CO = 128;
literal KA440$S_KA440_INTREQ = 1;
macro KA440$V_INTREQ_SC = 0,0,1,0 %;
macro KA440$V_INTREQ_NI = 0,1,1,0 %;
macro KA440$V_INTREQ_G0 = 0,2,1,0 %;
macro KA440$V_INTREQ_G1 = 0,3,1,0 %;
macro KA440$V_INTREQ_AT = 0,4,1,0 %;
macro KA440$V_INTREQ_AR = 0,5,1,0 %;
macro KA440$V_INTREQ_SP = 0,6,1,0 %;
macro KA440$V_INTREQ_CO = 0,7,1,0 %;
literal KA440$M_INTCLR_SC = 1;
literal KA440$M_INTCLR_NI = 2;
literal KA440$M_INTCLR_G0 = 4;
literal KA440$M_INTCLR_G1 = 8;
literal KA440$M_INTCLR_AT = 16;
literal KA440$M_INTCLR_AR = 32;
literal KA440$M_INTCLR_SP = 64;
literal KA440$M_INTCLR_CO = 128;
literal KA440$S_KA440_INTCLR = 1;
macro KA440$V_INTCLR_SC = 0,0,1,0 %;
macro KA440$V_INTCLR_NI = 0,1,1,0 %;
macro KA440$V_INTCLR_G0 = 0,2,1,0 %;
macro KA440$V_INTCLR_G1 = 0,3,1,0 %;
macro KA440$V_INTCLR_AT = 0,4,1,0 %;
macro KA440$V_INTCLR_AR = 0,5,1,0 %;
macro KA440$V_INTCLR_SP = 0,6,1,0 %;
macro KA440$V_INTCLR_CO = 0,7,1,0 %;
literal KA440$M_CPMBX_HLT = 3;
literal KA440$M_CPMBX_BIP = 4;
literal KA440$M_CPMBX_RIP = 8;
literal KA440$S_KA440_CPMBX = 1;
macro KA440$V_CPMBX_HLT = 0,0,2,0 %;
literal KA440$S_CPMBX_HLT = 2;
macro KA440$V_CPMBX_BIP = 0,2,1,0 %;
macro KA440$V_CPMBX_RIP = 0,3,1,0 %;
literal KA440$K_RS_RB_HLT = 0;
literal KA440$K_RS_HLT = 1;
literal KA440$K_RB_HLT = 2;
literal KA440$K_HLT = 3;
literal KA440$M_PAR_CTL_CPEN = 1;
literal KA440$M_PAR_CTL_FILL1 = 254;
literal KA440$M_PAR_CTL_NPEN = 256;
literal KA440$M_PAR_CTL_NPERR = 512;
literal KA440$M_PAR_CTL_NMAP = 1024;
literal KA440$M_PAR_CTL_FILL2 = 63488;
literal KA440$M_PAR_CTL_SPEN = 65536;
literal KA440$M_PAR_CTL_SPERR = 131072;
literal KA440$M_PAR_CTL_SMAP = 262144;
literal KA440$M_PAR_CTL_FILL3 = 16252928;
literal KA440$M_PAR_CTL_INVENA = 16777216;
literal KA440$S_KA440_PAR_CTL = 4;
macro KA440$V_PAR_CTL_CPEN = 0,0,1,0 %;
macro KA440$V_PAR_CTL_FILL1 = 0,1,7,0 %;
literal KA440$S_PAR_CTL_FILL1 = 7;
macro KA440$V_PAR_CTL_NPEN = 0,8,1,0 %;
macro KA440$V_PAR_CTL_NPERR = 0,9,1,0 %;
macro KA440$V_PAR_CTL_NMAP = 0,10,1,0 %;
macro KA440$V_PAR_CTL_FILL2 = 0,11,5,0 %;
literal KA440$S_PAR_CTL_FILL2 = 5;
macro KA440$V_PAR_CTL_SPEN = 0,16,1,0 %;
macro KA440$V_PAR_CTL_SPERR = 0,17,1,0 %;
macro KA440$V_PAR_CTL_SMAP = 0,18,1,0 %;
macro KA440$V_PAR_CTL_FILL3 = 0,19,5,0 %;
literal KA440$S_PAR_CTL_FILL3 = 5;
macro KA440$V_PAR_CTL_INVENA = 0,24,1,0 %;
literal KA440$M_BEHR_ENBNK = 255;
literal KA440$M_BEHR_BHM = 65280;
literal KA440$S_KA440_BEHR = 2;
macro KA440$V_BEHR_ENBNK = 0,0,8,0 %;
literal KA440$S_BEHR_ENBNK = 8;
macro KA440$V_BEHR_BHM = 0,8,8,0 %;
literal KA440$S_BEHR_BHM = 8;
literal KA440$M_MEMCNFG_SIMTYP = 7;
literal KA440$M_MEMCNFG_VIDRAM = 24;
literal KA440$M_MEMCNFG_SLOCYC = 480;
literal KA440$M_MEMCNFG_COLOR = 512;
literal KA440$M_MEMCNFG_DWT = 1024;
literal KA440$M_MEMCNFG_VIDMSK = 30720;
literal KA440$S_KA440_MEMCNFG = 2;
macro KA440$V_MEMCNFG_SIMTYP = 0,0,3,0 %;
literal KA440$S_MEMCNFG_SIMTYP = 3;
macro KA440$V_MEMCNFG_VIDRAM = 0,3,2,0 %;
literal KA440$S_MEMCNFG_VIDRAM = 2;
macro KA440$V_MEMCNFG_SLOCYC = 0,5,4,0 %;
literal KA440$S_MEMCNFG_SLOCYC = 4;
macro KA440$V_MEMCNFG_COLOR = 0,9,1,0 %;
macro KA440$V_MEMCNFG_DWT = 0,10,1,0 %;
macro KA440$V_MEMCNFG_VIDMSK = 0,11,4,0 %;
literal KA440$S_MEMCNFG_VIDMSK = 4;
literal KA440$M_MEMERR_EPC = 1;
literal KA440$M_MEMERR_FILL1 = 2;
literal KA440$M_MEMERR_ERRADD = 67108860;
literal KA440$M_MEMERR_PER = 1073741824;
literal KA440$S_KA440_MEMERR = 4;
macro KA440$V_MEMERR_EPC = 0,0,1,0 %;
macro KA440$V_MEMERR_FILL1 = 0,1,1,0 %;
macro KA440$V_MEMERR_ERRADD = 0,2,24,0 %;
literal KA440$S_MEMERR_ERRADD = 24;
macro KA440$V_MEMERR_FILL2 = 0,26,4,0 %;
literal KA440$S_MEMERR_FILL2 = 4;
macro KA440$V_MEMERR_PER = 0,30,1,0 %;
 
!*** MODULE $KA46DEF ***
literal KA46$L_CFGTST = 0;
literal KA46$B_IORESET = 0;
literal KA46$L_SYSTYPE = 516;
literal KA46$L_HLTCOD1 = 1024;
literal KA46$L_HLTCOD2 = 1028;
literal KA46$L_MAPBASE = 1032;
literal KA46$B_INTMSK = 1036;
literal KA46$B_INTREQ = 1039;
literal KA46$B_INTCLR = 1039;
literal KA46$W_DIAGDISP = 1040;
literal KA46$L_PAR_CTL = 1044;
literal KA46$W_DIAGTIMU = 1052;
literal KA46$W_DIAGTIMM = 1054;
literal KA46$B_NIADRS = 1536;
literal KA46$B_NIADRE = 1663;
literal KA46$W_SERCSR = 2048;
literal KA46$W_SERRBF = 2052;
literal KA46$W_SERLPR = 2052;
literal KA46$W_SERTCR = 2056;
literal KA46$W_SERMSR = 2060;
literal KA46$W_SERTDR = 2060;
literal KA46$W_DZLPR0 = 2064;
literal KA46$W_DZLPR1 = 2068;
literal KA46$W_DZLPR2 = 2072;
literal KA46$W_DZLPR3 = 2076;
literal KA46$L_TODSEC = 2560;
literal KA46$L_TODSAL = 2564;
literal KA46$L_TODMIN = 2568;
literal KA46$L_TODMAL = 2572;
literal KA46$L_TODHR = 2576;
literal KA46$L_TODHAL = 2580;
literal KA46$L_TODDWK = 2584;
literal KA46$L_TODDAY = 2588;
literal KA46$L_TODMON = 2592;
literal KA46$L_TODYR = 2596;
literal KA46$L_TODCSA = 2600;
literal KA46$L_TODCSB = 2604;
literal KA46$L_TODCSC = 2608;
literal KA46$L_TODCSD = 2612;
literal KA46$B_RAMST = 2616;
literal KA46$B_CPMBX = 2616;
literal KA46$B_CPFLG = 2620;
literal KA46$B_LK201 = 2624;
literal KA46$B_CONID = 2628;
literal KA46$L_SCRPTR = 2632;
literal KA46$L_BATCHK = 2696;
literal KA46$L_TRGPSW = 2712;
literal KA46$L_BOOFLG = 2728;
literal KA46$B_SCRLEN = 2744;
literal KA46$B_SCSI = 2748;
literal KA46$L_BOOLEN = 2752;
literal KA46$L_BOODEV = 2756;
literal KA46$B_RAMEND = 2812;
literal KA46$L_SCDADR = 3072;
literal KA46$B_SCDDIR = 3084;
literal KA46$L_SCSIS = 3200;
literal KA46$L_SCSIE = 3504;
literal KA46$B_SNDPS = 3584;
literal KA46$B_SNDPE = 3591;
literal KA46$B_FILL1S = 4096;
literal KA46$B_FILL1E = 8191;
literal KA46$B_SYNCROMS = 8704;
literal KA46$B_SYNCROME = 9727;
literal KA46$L_SYNCRST = 9728;
literal KA46$W_NIRDP = 10240;
literal KA46$W_NIRAP = 10244;
literal KA46$L_MEMCNFG = 12288;
literal KA46$L_MEMSTAT = 12292;
literal KA46$L_MEMCUR = 12296;
literal KA46$L_MEMERR = 12300;
literal KA46$B_LCGROMS = 12800;
literal KA46$B_LCGROME = 13823;
literal KA46$B_SCRAMS = 13312;
literal KA46$A_MCT = 13312;
literal KA46$A_OP1RAM = 13316;
literal KA46$A_OP2RAM = 13320;
literal KA46$A_GOOD64 = 13324;
literal KA46$A_BMAP = 13328;
literal KA46$L_BMAPL = 13332;
literal KA46$L_BMAPCHK = 13336;
literal KA46$L_MAXROW = 13340;
literal KA46$L_CURCOL = 13344;
literal KA46$L_CURROW = 13348;
literal KA46$A_SAVCON = 13352;
literal KA46$A_RSTCON = 13356;
literal KA46$A_ABMAP = 13360;
literal KA46$A_SVSTAT = 13364;
literal KA46$L_TOTMEM = 13368;
literal KA46$A_GOOD256 = 13372;
literal KA46$A_PRMMEM = 13376;
literal KA46$L_TMEMSIZ = 13380;
literal KA46$A_TMEM = 13384;
literal KA46$L_CCFNCT = 13388;
literal KA46$L_CSP = 13420;
literal KA46$L_REG = 13424;
literal KA46$A_USFONT = 13428;
literal KA46$A_MCS_FONT = 13432;
literal KA46$L_CELL_WIDTH = 13436;
literal KA46$L_CELL_HGHT = 13440;
literal KA46$A_NIRAM = 13444;
literal KA46$A_LANCE = 13448;
literal KA46$L_ROMREV = 13452;
literal KA46$L_VMB_VERSION = 13456;
literal KA46$L_CONS_REVISION = 13460;
literal KA46$L_SFTST_REV = 13468;
literal KA46$B_SCRAME = 13567;
literal KA46$L_DMAPS = 13824;
literal KA46$L_DMAPE = 144895;
literal KA46$L_CACH2TS = 144896;
literal KA46$L_CACH2TE = 177663;
literal KA46$L_INVFLS = 177664;
literal KA46$L_INVFLE = 210431;
literal KA46$L_SCCR = 210432;
literal KA46$S_KA46DEF = 210944;
literal KA46$M_CFGTST_MTYPE = 63;
literal KA46$M_CFGTST_VIDOPT = 192;
literal KA46$M_CFGTST_L3CON = 256;
literal KA46$M_CFGTST_SIMTYP = 32256;
literal KA46$S_KA46_CFGTST = 2;
macro KA46$V_CFGTST_MTYPE = 0,0,6,0 %;
literal KA46$S_CFGTST_MTYPE = 6;
macro KA46$V_CFGTST_VIDOPT = 0,6,2,0 %;
literal KA46$S_CFGTST_VIDOPT = 2;
macro KA46$V_CFGTST_L3CON = 0,8,1,0 %;
macro KA46$V_CFGTST_SIMTYP = 0,9,6,0 %;
literal KA46$S_CFGTST_SIMTYP = 6;
literal KA46$S_KA46_SYSTYPE = 4;
macro KA46$B_SYSTYPE_NUMUSER = 0,0,8,0 %;
macro KA46$B_SYSTYPE_SUBTYPE = 1,0,8,0 %;
macro KA46$B_SYSTYPE_ROMVERS = 2,0,8,0 %;
macro KA46$B_SYSTYPE_SYSCODE = 3,0,8,0 %;
literal KA46$M_INTMSK_SC = 1;
literal KA46$M_INTMSK_NI = 2;
literal KA46$M_INTMSK_G0 = 4;
literal KA46$M_INTMSK_G1 = 8;
literal KA46$M_INTMSK_AT = 16;
literal KA46$M_INTMSK_AR = 32;
literal KA46$M_INTMSK_SP = 64;
literal KA46$M_INTMSK_CO = 128;
literal KA46$S_KA46_INTMSK = 1;
macro KA46$V_INTMSK_SC = 0,0,1,0 %;
macro KA46$V_INTMSK_NI = 0,1,1,0 %;
macro KA46$V_INTMSK_G0 = 0,2,1,0 %;
macro KA46$V_INTMSK_G1 = 0,3,1,0 %;
macro KA46$V_INTMSK_AT = 0,4,1,0 %;
macro KA46$V_INTMSK_AR = 0,5,1,0 %;
macro KA46$V_INTMSK_SP = 0,6,1,0 %;
macro KA46$V_INTMSK_CO = 0,7,1,0 %;
literal KA46$M_INTREQ_SC = 1;
literal KA46$M_INTREQ_NI = 2;
literal KA46$M_INTREQ_G0 = 4;
literal KA46$M_INTREQ_G1 = 8;
literal KA46$M_INTREQ_AT = 16;
literal KA46$M_INTREQ_AR = 32;
literal KA46$M_INTREQ_SP = 64;
literal KA46$M_INTREQ_CO = 128;
literal KA46$S_KA46_INTREQ = 1;
macro KA46$V_INTREQ_SC = 0,0,1,0 %;
macro KA46$V_INTREQ_NI = 0,1,1,0 %;
macro KA46$V_INTREQ_G0 = 0,2,1,0 %;
macro KA46$V_INTREQ_G1 = 0,3,1,0 %;
macro KA46$V_INTREQ_AT = 0,4,1,0 %;
macro KA46$V_INTREQ_AR = 0,5,1,0 %;
macro KA46$V_INTREQ_SP = 0,6,1,0 %;
macro KA46$V_INTREQ_CO = 0,7,1,0 %;
literal KA46$M_INTCLR_SC = 1;
literal KA46$M_INTCLR_NI = 2;
literal KA46$M_INTCLR_G0 = 4;
literal KA46$M_INTCLR_G1 = 8;
literal KA46$M_INTCLR_AT = 16;
literal KA46$M_INTCLR_AR = 32;
literal KA46$M_INTCLR_SP = 64;
literal KA46$M_INTCLR_CO = 128;
literal KA46$S_KA46_INTCLR = 1;
macro KA46$V_INTCLR_SC = 0,0,1,0 %;
macro KA46$V_INTCLR_NI = 0,1,1,0 %;
macro KA46$V_INTCLR_G0 = 0,2,1,0 %;
macro KA46$V_INTCLR_G1 = 0,3,1,0 %;
macro KA46$V_INTCLR_AT = 0,4,1,0 %;
macro KA46$V_INTCLR_AR = 0,5,1,0 %;
macro KA46$V_INTCLR_SP = 0,6,1,0 %;
macro KA46$V_INTCLR_CO = 0,7,1,0 %;
literal KA46$M_CPMBX_HLT = 3;
literal KA46$M_CPMBX_BIP = 4;
literal KA46$M_CPMBX_RIP = 8;
literal KA46$S_KA46_CPMBX = 1;
macro KA46$V_CPMBX_HLT = 0,0,2,0 %;
literal KA46$S_CPMBX_HLT = 2;
macro KA46$V_CPMBX_BIP = 0,2,1,0 %;
macro KA46$V_CPMBX_RIP = 0,3,1,0 %;
literal KA46$K_RS_RB_HLT = 0;
literal KA46$K_RS_HLT = 1;
literal KA46$K_RB_HLT = 2;
literal KA46$K_HLT = 3;
literal KA46$M_PAR_CTL_FILL1 = 255;
literal KA46$M_PAR_CTL_NPEN = 256;
literal KA46$M_PAR_CTL_NPERR = 512;
literal KA46$M_PAR_CTL_NMAP = 1024;
literal KA46$M_PAR_CTL_FILL2 = 63488;
literal KA46$M_PAR_CTL_SPEN = 65536;
literal KA46$M_PAR_CTL_SPERR = 131072;
literal KA46$M_PAR_CTL_SMAP = 262144;
literal KA46$M_PAR_CTL_FILL3 = 16252928;
literal KA46$M_PAR_CTL_INVENA = 16777216;
literal KA46$S_KA46_PAR_CTL = 4;
macro KA46$V_PAR_CTL_FILL1 = 0,0,8,0 %;
literal KA46$S_PAR_CTL_FILL1 = 8;
macro KA46$V_PAR_CTL_NPEN = 0,8,1,0 %;
macro KA46$V_PAR_CTL_NPERR = 0,9,1,0 %;
macro KA46$V_PAR_CTL_NMAP = 0,10,1,0 %;
macro KA46$V_PAR_CTL_FILL2 = 0,11,5,0 %;
literal KA46$S_PAR_CTL_FILL2 = 5;
macro KA46$V_PAR_CTL_SPEN = 0,16,1,0 %;
macro KA46$V_PAR_CTL_SPERR = 0,17,1,0 %;
macro KA46$V_PAR_CTL_SMAP = 0,18,1,0 %;
macro KA46$V_PAR_CTL_FILL3 = 0,19,5,0 %;
literal KA46$S_PAR_CTL_FILL3 = 5;
macro KA46$V_PAR_CTL_INVENA = 0,24,1,0 %;
literal KA46$M_SCCR_CENA = 1;
literal KA46$M_SCCR_TERR = 2;
literal KA46$M_SCCR_FILL1 = 124;
literal KA46$M_SCCR_WBMODE = 128;
literal KA46$S_KA46_SCCR = 1;
macro KA46$V_SCCR_CENA = 0,0,1,0 %;
macro KA46$V_SCCR_TERR = 0,1,1,0 %;
macro KA46$V_SCCR_FILL1 = 0,2,5,0 %;
literal KA46$S_SCCR_FILL1 = 5;
macro KA46$V_SCCR_WBMODE = 0,7,1,0 %;
literal KA46$M_MEMCNFG_SIMTYP = 7;
literal KA46$M_MEMCNFG_VIDRAM = 24;
literal KA46$M_MEMCNFG_SLOCYC = 480;
literal KA46$M_MEMCNFG_COLOR = 512;
literal KA46$M_MEMCNFG_DWT = 1024;
literal KA46$M_MEMCNFG_VIDMSK = 30720;
literal KA46$S_KA46_MEMCNFG = 2;
macro KA46$V_MEMCNFG_SIMTYP = 0,0,3,0 %;
literal KA46$S_MEMCNFG_SIMTYP = 3;
macro KA46$V_MEMCNFG_VIDRAM = 0,3,2,0 %;
literal KA46$S_MEMCNFG_VIDRAM = 2;
macro KA46$V_MEMCNFG_SLOCYC = 0,5,4,0 %;
literal KA46$S_MEMCNFG_SLOCYC = 4;
macro KA46$V_MEMCNFG_COLOR = 0,9,1,0 %;
macro KA46$V_MEMCNFG_DWT = 0,10,1,0 %;
macro KA46$V_MEMCNFG_VIDMSK = 0,11,4,0 %;
literal KA46$S_MEMCNFG_VIDMSK = 4;
literal KA46$M_MEMERR_EPC = 1;
literal KA46$M_MEMERR_FILL1 = 2;
literal KA46$M_MEMERR_ERRADD = 67108860;
literal KA46$M_MEMERR_PER = 1073741824;
literal KA46$S_KA46_MEMERR = 4;
macro KA46$V_MEMERR_EPC = 0,0,1,0 %;
macro KA46$V_MEMERR_FILL1 = 0,1,1,0 %;
macro KA46$V_MEMERR_ERRADD = 0,2,24,0 %;
literal KA46$S_MEMERR_ERRADD = 24;
macro KA46$V_MEMERR_FILL2 = 0,26,4,0 %;
literal KA46$S_MEMERR_FILL2 = 4;
macro KA46$V_MEMERR_PER = 0,30,1,0 %;
 
!*** MODULE $KA520DEF ***
literal KA520$L_CPUSCRP = 0;            !  CPU scratch pad
literal KA520$L_RSTPAG = 7680;          !  Reset page
literal KA520$L_RSTPC = 8180;           !  Reset PC
literal KA520$L_RSTCOM = 8184;          !  Reset complement 
literal KA520$L_RSTFLAG = 8188;         !  Reset flag
!  MEMORY CONTROLLER	
literal KA520$L_MEMCTL = 8192;          !  Control and status
literal KA520$L_MEMDIAG = 8196;         !  Diagnostic error
literal KA520$L_SYSFLT = 8200;          !  System fault error
literal KA520$L_BUSTIM = 8204;          !  Bus timeout - NSC
literal KA520$L_CACHE = 8208;           !  Cache - NSC
literal KA520$L_NVUPD = 8212;           !  NVRAM update register - NSC
literal KA520$L_SYSADR = 8216;          !  System fault error address
literal KA520$L_MEMCTLW = 8704;         !  Control and status wait
literal KA520$L_MEMDIAGW = 8708;        !  Diag error wait
literal KA520$L_SYSFLTW = 8712;         !  System fault wait
literal KA520$L_SYSADRW = 8728;         !  System fault address wait
literal KA520$L_SOFRST = 9216;          !  Soft Reset
!  DMA registers	
literal KA520$L_DMASTL = 9728;          !  Memory subtransfer length
literal KA520$L_DMACTL = 10240;         !  DMA control
literal KA520$L_DMASTA = 10752;         !  DMA status
literal KA520$L_DMAMBCD = 11264;        !  Memory byte count and direction
literal KA520$L_DMADIAG = 11776;        !  Diagnostic
literal KA520$L_DMAQAP = 12288;         !  Queue address pointer
literal KA520$L_DMAMMA = 12800;         !  Main Memory address
literal KA520$L_DMAQEP = 13312;         !  Queue entry pointer
literal KA520$L_DMAID = 13824;          !  ID
literal KA520$L_DMAEOQ = 14336;         !  End of queue
literal KA520$L_DMAARB = 14848;         !  Arbiter control
literal KA520$L_DMAECC = 15360;         !  ECC
literal KA520$L_DMAREF = 15872;         !  Refresh
!  CLINK
literal KA520$L_INTVEC0 = 16384;        !  Interrupt Vector 0
literal KA520$L_INTVEC1 = 16388;        !  Interrupt Vector 1
literal KA520$L_INTVEC2 = 16392;        !  Interrupt Vector 2
literal KA520$L_INTVEC3 = 16396;        !  Interrupt Vector 3
literal KA520$L_WINVEC = 16412;         !  Winning Vector
literal KA520$L_IRQ = 16416;            !  IRQ for vectors 0-3
literal KA520$L_IMR = 16420;            !  Interrupt mask 
literal KA520$L_CLIERR = 16896;         !  Error register
literal KA520$L_TIMINT = 17408;         !  Timer interval - NSC
literal KA520$L_SERREQ = 17920;         !  Serial request
literal KA520$L_SERREP = 18432;         !  Serial reply
literal KA520$L_SERQUE = 18944;         !  Serial queue
literal KA520$L_SERCSR = 19456;         !  Serial CSR
literal KA520$L_TIMCTL = 19968;         !  Timer control - NSC
literal KA520$L_TIMNXT = 20480;         !  Timer next interval - NSC
literal KA520$L_PROGDIV = 20992;        !  Programable divider _ NSC
literal KA520$L_PARCOMM = 21504;        !  Parrallel communications
literal KA520$L_RESET = 22016;          !  CPU/zone hard reset
literal KA520$L_SICSA = 22528;          !  System Interupt Control Register
!  Zone A 
literal KA520$L_SICSB = 23040;          !  System Interupt Control Register
!  Zone B 
literal KA520$L_PCOMMA = 23552;         !  Parallel comm register Zone a 
literal KA520$L_PCOMMB = 24064;         !  Parallel comm register zone b
literal KA520$l_PCSRA = 24576;          !  Parallel CSR zone Q
literal KA520$l_PCSRB = 25088;          !  Parallel CSR zone B
literal KA520$l_IORSTA = 25600;         !  IO Hard reset zone a
literal KA520$l_IORSTB = 26112;         !  IO Hard reset zone b
literal KA520$L_SYNCHR = 26624;         !  Synch Reset
literal KA520$L_CLIERRW = 27136;        !  Error register - world address
!  Cirrus vector page
literal KA520$L_CIRVEC = 27648;         !  Start of vector table
literal KA520$L_DMA_OP = 27648;         !  DMA driver service
literal KA520$L_TRARAMSTS = 27652;      !  Trace RAM status table
literal KA520$L_RECONFIG = 27656;       !  IO Reconfiguration Service
literal KA520$L_EF_ONLINE = 27660;      !  EFDRIVER port online entry point
literal KA520$L_PRIM_CIO = 27664;       !  Pointer to Primary CIO adapters
literal KA520$L_GD_ADP = 27668;         !  Pointer to the GD_ADP_TABLE
literal KA520$L_GD_ADP_TABLE = 27672;   !  List of ADP indexed by physical address
literal KA520$L_EEPROM_WRITE_LOCK = 27728; !  Set to Prevent EEPROM Write
literal KA520$M_MEMCTL_DISCOR = 1024;
literal KA520$M_MEMCTL_DISREP = 2048;
literal KA520$M_MEMCTL_ENAMIR = 4096;
literal KA520$M_MEMCTL_FADDR = 8192;
literal KA520$M_MEMCTL_FRTRYEN = 16384;
literal KA520$M_MEMCTL_LONGDMA = 32768;
literal KA520$M_MEMCTL_ENASR = 1048576;
literal KA520$S_MEMCTL = 3;
macro KA520$V_MEMCTL_ARBSEL = 0,0,3,0 %;
literal KA520$S_MEMCTL_ARBSEL = 3;      !  Arbitration select
macro KA520$V_MEMCTL_FECC = 0,3,7,0 %;
literal KA520$S_MEMCTL_FECC = 7;        !  Force ECC
macro KA520$V_MEMCTL_DISCOR = 0,10,1,0 %; !  Disable correction
macro KA520$V_MEMCTL_DISREP = 0,11,1,0 %; !  Disable reporting
macro KA520$V_MEMCTL_ENAMIR = 0,12,1,0 %; !  Enable mirror
macro KA520$V_MEMCTL_FADDR = 0,13,1,0 %; !  Force address patern
macro KA520$V_MEMCTL_FRTRYEN = 0,14,1,0 %; !  Forced retry enable
macro KA520$V_MEMCTL_LONGDMA = 0,15,1,0 %; !  Long DMA RAS
macro KA520$V_MEMCTL_MEMSIZ = 0,16,4,0 %;
literal KA520$S_MEMCTL_MEMSIZ = 4;      !  Memory size
macro KA520$V_MEMCTL_ENASR = 0,20,1,0 %; !  Enable send/receive errors
!  Bits 21-31 must be zero
literal KA520$M_MEMDIAG_WRTECC = 1;
literal KA520$M_MEMDIAG_RDECC = 2;
literal KA520$M_MEMDIAG_ADRCTL = 4;
literal KA520$M_MEMDIAG_BUSCMP = 8;
literal KA520$M_MEMDIAG_DBLBIT = 16;
literal KA520$M_MEMDIAG_ECCERR = 32;
literal KA520$M_MEMDIAG_SNDERR = 64;
literal KA520$M_MEMDIAG_RCVERR = 128;
literal KA520$M_MEMDIAG_UEXRTY = 256;
literal KA520$M_MEMDIAG_RAIERR = 512;
literal KA520$M_MEMDIAG_PIPERR = 1024;
literal KA520$M_MEMDIAG_BUSTIM = 2048;
literal KA520$M_MEMDIAG_RASTIM = 4096;
literal KA520$M_MEMDIAG_MEMSTK = 8192;
literal KA520$M_MEMDIAG_DMAERR = 16384;
literal KA520$M_MEMDIAG_CLRERR = 32768;
literal KA520$M_MEMDIAG_CPMFLT = 65536;
literal KA520$M_MEMDIAG_NXM = 131072;
literal KA520$M_MEMDIAG_PRENXM = 262144;
literal KA520$M_MEMDIAG_MLTERR = 524288;
literal KA520$M_MEMDIAG_MXPR = 1048576;
literal KA520$M_MEMDIAG_ICYCLA = 67108864;
literal KA520$M_MEMDIAG_BURNIN = 134217728;
literal KA520$M_MEMDIAG_RSYNCS = 268435456;
literal KA520$M_MEMDIAG_RSYNCM = 536870912;
literal KA520$M_MEMDIAG_MIRRAI = 1073741824;
literal KA520$M_MEMDIAG_ZONEID = -2147483648;
literal KA520$S_MEMDIAG = 4;
macro KA520$V_MEMDIAG_WRTECC = 0,0,1,0 %; !  Write ECC error
macro KA520$V_MEMDIAG_RDECC = 0,1,1,0 %; !  Read ECC error
macro KA520$V_MEMDIAG_ADRCTL = 0,2,1,0 %; !  Address/control error
macro KA520$V_MEMDIAG_BUSCMP = 0,3,1,0 %; !  Bus compare error
macro KA520$V_MEMDIAG_DBLBIT = 0,4,1,0 %; !  Double bit error
macro KA520$V_MEMDIAG_ECCERR = 0,5,1,0 %; !  Any ECC error
macro KA520$V_MEMDIAG_SNDERR = 0,6,1,0 %; !  Send error
macro KA520$V_MEMDIAG_RCVERR = 0,7,1,0 %; !  Recieve error
macro KA520$V_MEMDIAG_UEXRTY = 0,8,1,0 %; !  Unexpected retry
macro KA520$V_MEMDIAG_RAIERR = 0,9,1,0 %; !  Rail error
macro KA520$V_MEMDIAG_PIPERR = 0,10,1,0 %; !  Pipe error
macro KA520$V_MEMDIAG_BUSTIM = 0,11,1,0 %; !  Bus timeout
macro KA520$V_MEMDIAG_RASTIM = 0,12,1,0 %; !  RAS timeout
macro KA520$V_MEMDIAG_MEMSTK = 0,13,1,0 %; !  Memeory arrary stuck ECC
macro KA520$V_MEMDIAG_DMAERR = 0,14,1,0 %; !  DMA error
macro KA520$V_MEMDIAG_CLRERR = 0,15,1,0 %; !  Clear errors
macro KA520$V_MEMDIAG_CPMFLT = 0,16,1,0 %; !  CPU/MEM error
macro KA520$V_MEMDIAG_NXM = 0,17,1,0 %; !  Non-existant memory
macro KA520$V_MEMDIAG_PRENXM = 0,18,1,0 %; !  Predetermined NXM
macro KA520$V_MEMDIAG_MLTERR = 0,19,1,0 %; !  Multiple errors
macro KA520$V_MEMDIAG_MXPR = 0,20,1,0 %; !  External process register
macro KA520$V_FILL_1 = 0,21,5,0 %;
literal KA520$S_FILL_1 = 5;             !  MBZ
macro KA520$V_MEMDIAG_ICYCLA = 0,26,1,0 %; !  Interlock cycle active
macro KA520$V_MEMDIAG_BURNIN = 0,27,1,0 %; !  Burn-in mode
macro KA520$V_MEMDIAG_RSYNCS = 0,28,1,0 %; !  Resync slave mode
macro KA520$V_MEMDIAG_RSYNCM = 0,29,1,0 %; !  Resync master mode
macro KA520$V_MEMDIAG_MIRRAI = 0,30,1,0 %; !  Mirror rail - rail ID
macro KA520$V_MEMDIAG_ZONEID = 0,31,1,0 %; !  Zone ID
!   System Fault Error Status Register - Memory Controller register
literal KA520$M_SYSFLT_TRN = 1;
literal KA520$M_SYSFLT_SOL = 2;
literal KA520$M_SYSFLT_NXM = 4;
literal KA520$M_SYSFLT_NIO = 8;
literal KA520$M_SYSFLT_MXPR = 16;
literal KA520$M_SYSFLT_IACK = 32;
literal KA520$M_SYSFLT_FMEMFLT = 64;
literal KA520$M_SYSFLT_CLRERR = 32768;
literal KA520$S_SYSFLT = 2;
macro KA520$V_SYSFLT_TRN = 0,0,1,0 %;   !  Transient error
macro KA520$V_SYSFLT_SOL = 0,1,1,0 %;   !  Solid error
macro KA520$V_SYSFLT_NXM = 0,2,1,0 %;   !  Non existent memory
macro KA520$V_SYSFLT_NIO = 0,3,1,0 %;   !  Non existent IO
macro KA520$V_SYSFLT_MXPR = 0,4,1,0 %;  !  Illegal MxPR insturction
macro KA520$V_SYSFLT_IACK = 0,5,1,0 %;  !  Interrupt acknowledge
macro KA520$V_SYSFLT_FMEMFLT = 0,6,1,0 %; !  Force CPU/MEM fault
macro KA520$V_FILL2 = 0,7,8,0 %;
literal KA520$S_FILL2 = 8;              !  MBZ
macro KA520$V_SYSFLT_CLRERR = 0,15,1,0 %; !  Clear error
!  Cache Control register (CACHE)
literal KA520$M_CACHE_FMIS = 1;
literal KA520$M_CACHE_FHIT = 2;
literal KA520$M_CACHE_INVD = 4;
literal KA520$M_TPE = 256;
literal KA520$S_CACHE = 2;
macro KA520$V_CACHE_FMIS = 0,0,1,0 %;   !  Force miss (i.e. disable)
macro KA520$V_CACHE_FHIT = 0,1,1,0 %;   !  Force hit (diag.)
macro KA520$V_CACHE_INVD = 0,2,1,0 %;   !  Invalidate cache
macro KA520$V_FILL_2 = 0,3,5,0 %;
literal KA520$S_FILL_2 = 5;             !  fill
macro KA520$V_TPE = 0,8,1,0 %;          !  Tag Parity Error
!  Other bits are diagnostic or unused
!  DMA status register */
literal KA520$M_DMASTA_DME = 1;
literal KA520$M_DMASTA_TIM = 2;
literal KA520$M_DMASTA_DON = 4;
literal KA520$M_DMASTA_DFM = 8;
literal KA520$M_DMASTA_DCE = 16;
literal KA520$M_DMASTA_NXM = 32;
literal KA520$M_DMASTA_CFM = 64;
literal KA520$S_DMASTA = 1;
macro KA520$V_DMASTA_DME = 0,0,1,0 %;   !  DMA mega error
macro KA520$V_DMASTA_TIM = 0,1,1,0 %;   !  Timeout error
macro KA520$V_DMASTA_DON = 0,2,1,0 %;   !  DMA done
macro KA520$V_DMASTA_DFM = 0,3,1,0 %;   !  DMA firewall miscompare
macro KA520$V_DMASTA_DCE = 0,4,1,0 %;   !  DMA crc error
macro KA520$V_DMASTA_NXM = 0,5,1,0 %;   !  Non-existant memory
macro KA520$V_DMASTA_CFM = 0,6,1,0 %;   !  CVAX firewall miscompare
!  DMA control register */
literal KA520$M_DMACTL_GO = 1;
literal KA520$M_DMACTL_STO = 2;
literal KA520$S_DMACTL = 1;
macro KA520$V_DMACTL_GO = 0,0,1,0 %;    !  DMA go bit
macro KA520$V_DMACTL_STO = 0,1,1,0 %;   !  DMA stop bit
!  Clink error and status register - CLINK
literal KA520$M_CLIERR_ZB = 7;
literal KA520$K_CLIERR_NOERR = 0;
literal KA520$K_CLIERR_DMA = 1;
literal KA520$K_CLIERR_CVAXIO = 2;
literal KA520$K_CLIERR_MEMFLT = 3;
literal KA520$K_CLIERR_CTLP = 4;
literal KA520$K_CLIERR_CLOCK = 5;
literal KA520$M_CLIERR_ZA = 56;
literal KA520$M_CLIERR_MEMERR = 64;
literal KA520$M_CLIERR_TFRZ = 128;
literal KA520$M_CLIERR_PUP = 256;
literal KA520$M_CLIERR_DSYNC = 512;
literal KA520$M_CLIERR_MODE = 3072;
literal KA520$K_CLIERR_OFF = 0;
literal KA520$K_CLIERR_SLAVE = 1;
literal KA520$K_CLIERR_MASTER = 2;
literal KA520$K_CLIERR_DUPLEX = 3;
literal KA520$S_CLIERR = 2;
macro KA520$V_CLIERR_ZB = 0,0,3,0 %;
literal KA520$S_CLIERR_ZB = 3;          !  Zone B error codes
macro KA520$V_CLIERR_ZA = 0,3,3,0 %;
literal KA520$S_CLIERR_ZA = 3;          !  Zone A error codes
macro KA520$V_CLIERR_MEMERR = 0,6,1,0 %; !  MEMERR
macro KA520$V_CLIERR_TFRZ = 0,7,1,0 %;  !  Trace freeze
macro KA520$V_CLIERR_PUP = 0,8,1,0 %;   !  Power up
macro KA520$V_CLIERR_DSYNC = 0,9,1,0 %; !  Duplex resync
macro KA520$V_CLIERR_MODE = 0,10,2,0 %;
literal KA520$S_CLIERR_MODE = 2;        !  Clink mode
!  Clink Serial CSR register (SERSCR)
literal KA520$M_SERCSR_XLMODE = 3;
literal KA520$K_SERCSR_CLINK_OFF = 0;
literal KA520$K_SERCSR_CLINK_SLAVE = 1;
literal KA520$K_SERCSR_CLINK_MASTER = 2;
literal KA520$K_SERCSR_CLINK_DUPLEX = 3;
literal KA520$M_SERCSR_DIAG = 4;
literal KA520$M_SERCSR_STATEN = 8;
literal KA520$M_SERCSR_SYNCMOD = 48;
literal KA520$K_SERCSR_SYNC_SLAVE = 1;
literal KA520$K_SERCSR_SYNC_MASTER = 2;
literal KA520$K_SERCSR_SYNC_DUPLEX = 3;
literal KA520$M_SERCSR_SYNCMODEN = 64;
literal KA520$M_SERCSR_CMD = 384;
literal KA520$K_SERCSR_CMD_LOOP = 0;
literal KA520$K_SERCSR_CMD_STAT = 1;
literal KA520$K_SERCSR_CMD_QUERY = 3;
literal KA520$M_SERCSR_CMDEN = 512;
literal KA520$M_SERCSR_INTLPB = 1024;
literal KA520$M_SERCSR_ENQUEINT = 2048;
literal KA520$M_SERCSR_ENREPINT = 4096;
literal KA520$M_SERCSR_ENREQINT = 8192;
literal KA520$M_SERCSR_PXLPBEN = 16384;
literal KA520$M_SERCSR_RSYNCDIS = 32768;
literal KA520$M_SERCSR_FRAMERR = 65536;
literal KA520$M_SERCSR_REQINT = 131072;
literal KA520$M_SERCSR_QUEFULL = 262144;
literal KA520$M_SERCSR_QUEOVF = 524288;
literal KA520$M_SERCSR_REPFULL = 1048576;
literal KA520$M_SERCSR_REPOVF = 2097152;
literal KA520$M_SERCSR_REQFULL = 4194304;
literal KA520$M_SERCSR_MAGINEN = 8388608;
literal KA520$M_SERCSR_MAGINSET = 16777216;
literal KA520$M_SERCSR_XMITBSY = 33554432;
literal KA520$M_SERCSR_OSRUN = 67108864;
literal KA520$M_SERCSR_CLKFLTEN = 134217728;
literal KA520$M_SERCSR_SYSFLT = 268435456;
literal KA520$M_SERCSR_CLKPHERR = 536870912;
literal KA520$M_SERCSR_CLKSEL = 1073741824;
literal KA520$M_SERCSR_ZONEID = -2147483648;
literal KA520$S_SERCSR = 4;
macro KA520$V_SERCSR_XLMODE = 0,0,2,0 %;
literal KA520$S_SERCSR_XLMODE = 2;      !  Clink mode
macro KA520$V_SERCSR_DIAG = 0,2,1,0 %;  !  Diagnostic bit
macro KA520$V_SERCSR_STATEN = 0,3,1,0 %; !  State enable
macro KA520$V_SERCSR_SYNCMOD = 0,4,2,0 %;
literal KA520$S_SERCSR_SYNCMOD = 2;     !  Resynch mode
macro KA520$V_SERCSR_SYNCMODEN = 0,6,1,0 %; !  Resynch mode enable
macro KA520$V_SERCSR_CMD = 0,7,2,0 %;
literal KA520$S_SERCSR_CMD = 2;         !  Command
macro KA520$V_SERCSR_CMDEN = 0,9,1,0 %; !  Command enable
macro KA520$V_SERCSR_INTLPB = 0,10,1,0 %; !  Internal loopback
macro KA520$V_SERCSR_ENQUEINT = 0,11,1,0 %; !  Enable query int.
macro KA520$V_SERCSR_ENREPINT = 0,12,1,0 %; !  Enable reply int.
macro KA520$V_SERCSR_ENREQINT = 0,13,1,0 %; !  Enable request int.
macro KA520$V_SERCSR_PXLPBEN = 0,14,1,0 %; !  Par. loopback enable
macro KA520$V_SERCSR_RSYNCDIS = 0,15,1,0 %; !  Rail synch disable
macro KA520$V_SERCSR_FRAMERR = 0,16,1,0 %; !  Framing error
macro KA520$V_SERCSR_REQINT = 0,17,1,0 %; !  Request interrupt
macro KA520$V_SERCSR_QUEFULL = 0,18,1,0 %; !  Query full
macro KA520$V_SERCSR_QUEOVF = 0,19,1,0 %; !  Query overflow
macro KA520$V_SERCSR_REPFULL = 0,20,1,0 %; !  Reply full
macro KA520$V_SERCSR_REPOVF = 0,21,1,0 %; !  Reply overflow
macro KA520$V_SERCSR_REQFULL = 0,22,1,0 %; !  Request full
macro KA520$V_SERCSR_MAGINEN = 0,23,1,0 %; !  Mag. indicator enable
macro KA520$V_SERCSR_MAGINSET = 0,24,1,0 %; !  Mag. indicator set
macro KA520$V_SERCSR_XMITBSY = 0,25,1,0 %; !  Transmit busy
macro KA520$V_SERCSR_OSRUN = 0,26,1,0 %; !  Os running
macro KA520$V_SERCSR_CLKFLTEN = 0,27,1,0 %; !  Clock fault enable
macro KA520$V_SERCSR_SYSFLT = 0,28,1,0 %; !  System fault
macro KA520$V_SERCSR_CLKPHERR = 0,29,1,0 %; !  Clock phase error
macro KA520$V_SERCSR_CLKSEL = 0,30,1,0 %; !  Clock select
macro KA520$V_SERCSR_ZONEID = 0,31,1,0 %; !  Zone ID
!  Parallel Control and Status register (PCSRA and PCSRB)
literal KA520$M_PARCSR_XLMODE = 3;
literal KA520$K_PARCSR_CLINK_OFF = 0;
literal KA520$K_PARCSR_CLINK_SLAVE = 1;
literal KA520$K_PARCSR_CLINK_MASTER = 2;
literal KA520$K_PARCSR_CLINK_DUPLEX = 3;
literal KA520$M_PARCSR_PWR = 4;
literal KA520$M_PARCSR_CABLE = 8;
literal KA520$M_PARCSR_BUSMODE = 48;
literal KA520$K_PARCSR_NORMAL = 0;
literal KA520$K_PARCSR_RSYNC_SLAVE = 1;
literal KA520$K_PARCSR_RSYNC_MASTER = 2;
literal KA520$M_PARCSR_OSRUN = 64;
literal KA520$S_PARCSR = 1;
macro KA520$V_PARCSR_XLMODE = 0,0,2,0 %;
literal KA520$S_PARCSR_XLMODE = 2;      !  Clink mode
macro KA520$V_PARCSR_PWR = 0,2,1,0 %;   !  Power bit
macro KA520$V_PARCSR_CABLE = 0,3,1,0 %; !  Cable bit
macro KA520$V_PARCSR_BUSMODE = 0,4,2,0 %;
literal KA520$S_PARCSR_BUSMODE = 2;     !  Bus operation mode
macro KA520$V_PARCSR_OSRUN = 0,6,1,0 %; !  Operating System running
!   Interval Timer Control Register (TIMCTL)
literal KA520$M_TCR_RUN = 1;
literal KA520$M_TCR_STP = 4;
literal KA520$M_TCR_XFR = 16;
literal KA520$M_TCR_SGL = 32;
literal KA520$M_TCR_IE = 64;
literal KA520$M_TCR_INT = 128;
literal KA520$M_TCR_ERR = -2147483648;
literal KA520$S_TCR = 4;
macro KA520$V_TCR_RUN = 0,0,1,0 %;      ! INCREMENT TIR EVERY uSEC
macro KA520$V_TCR_FILL1 = 0,1,1,0 %;    ! UNUSED
macro KA520$V_TCR_STP = 0,2,1,0 %;      ! STOP ON OVERFLOW
macro KA520$V_TCR_FILL2 = 0,3,1,0 %;    ! UNUSED
macro KA520$V_TCR_XFR = 0,4,1,0 %;      ! COPY TNIR TO TIR
macro KA520$V_TCR_SGL = 0,5,1,0 %;      ! INCREMENT TIR (IF RUN = 0)
macro KA520$V_TCR_IE = 0,6,1,0 %;       ! INTERRUPT ENABLE
macro KA520$V_TCR_INT = 0,7,1,0 %;      ! OVERFLOW
macro KA520$V_TCR_FILL3 = 0,8,23,0 %;
literal KA520$S_TCR_FILL3 = 23;         ! UNUSED
macro KA520$V_TCR_ERR = 0,31,1,0 %;     ! ERROR (MISSED OVERFLOW)
 
!*** MODULE $KA60DEF ***
literal KA60$L_SSC_BASE = 0;            ! SSC base register
literal KA60$B_NVR0 = 512;              !  NVR0
literal KA60$B_NVR1 = 513;              !  NVR1
literal KA60$B_NVR2 = 514;              !  NVR2
literal KA60$B_SCSI_HOST_ID = 704;      !  SCSI host ID
literal KA60$L_CCAPTR = 784;            !  CCA pointer
literal KA60$L_CTSIAPTR = 788;          !  CTSIA pointer
literal KA60$B_CONSOLE_NODE = 842;      !  Nexus of console
literal KA60$L_IOCSR = 1536;            ! IOCSR register
literal KA60$L_CCA = 2048;              !  CCA area
literal KA60$M_IOCSR_ESAR = 16711680;
literal KA60$M_IOCSR_SDSEL = 67108864;
literal KA60$M_IOCSR_SDEN = 134217728;
literal KA60$M_IOCSR_RSTWS = 268435456;
literal KA60$M_IOCSR_CLKIEN = 536870912;
literal KA60$M_IOCSR_MRUN = 1073741824;
literal KA60$M_IOCSR_CNSL = -2147483648;
literal KA60$S_IOCSR = 4;
macro KA60$V_IOCSR_ESAR = 0,16,8,0 %;
literal KA60$S_IOCSR_ESAR = 8;          ! Station address
macro KA60$V_IOCSR_SDSEL = 0,26,1,0 %;  !  SCSI or DSSI
macro KA60$V_IOCSR_SDEN = 0,27,1,0 %;   !  Serial line disable
macro KA60$V_IOCSR_RSTWS = 0,28,1,0 %;  ! Reset workstation
macro KA60$V_IOCSR_CLKIEN = 0,29,1,0 %; ! Clock enable
macro KA60$V_IOCSR_MRUN = 0,30,1,0 %;   !  MRUN signal
macro KA60$V_IOCSR_CNSL = 0,31,1,0 %;   ! Console enable
literal KA60CPU$L_FBIC_A = 0;           !  CPU A FBIC registers
literal KA60CPU$B_CACHE_A = 512;        !  CPU A cache tags
literal KA60CPU$L_FBIC_B = 66048;       !  CPU B FBIC registers
literal KA60CPU$B_CACHE_B = 66560;      !  CPU A cache tags
literal KA60GFX$L_FBIC = 0;             !  LEGSS FBIC registers
literal KA60GFX$B_COMM = 512;           !  LEGSS commuication area
literal KA60GFX$L_WEITEK = 68096;       !  LEGSS DRAM Weitek output
literal KA60GFX$L_SCB = 166400;         !  LEGSS DRAM SCB area
literal KA60GFX$L_SVX = 168448;         !  LEGSS DRAM SVX area
literal KA60GFX$L_TCHIP = 173568;       !  LEGSS TCHIP
literal KA60GFX$L_DCHIP = 174080;       !  LEGSS DCHIP
literal KA60GFX$L_ACHIP = 176128;       !  LEGSS ACHIP
literal KA60$M_HALT_ACTION = 3;
literal KA60$M_BIP = 4;
literal KA60$M_RIP = 8;
literal KA60$M_LANGUAGE = 240;
literal KA60$S_NVR0 = 1;
macro KA60$V_HALT_ACTION = 0,0,2,0 %;
literal KA60$S_HALT_ACTION = 2;         ! HALT ACTION CODE
macro KA60$V_BIP = 0,2,1,0 %;           ! 1 = BOOT IN PROGRESS
macro KA60$V_RIP = 0,3,1,0 %;           ! 1 = RESTART IN PROGRESS
macro KA60$V_LANGUAGE = 0,4,4,0 %;
literal KA60$S_LANGUAGE = 4;            ! CONSOLE LANGUAGE CODE
literal KA60$M_RESERVED1 = 1;
literal KA60$M_CRT = 2;
literal KA60$M_MCS = 4;
literal KA60$M_RESERVED2 = 24;
literal KA60$M_VIDEO_DEV = 224;
literal KA60$S_NVR1 = 1;
macro KA60$V_RESERVED1 = 0,0,1,0 %;
macro KA60$V_CRT = 0,1,1,0 %;           ! 1 = Is CRT TERMINAL
macro KA60$V_MCS = 0,2,1,0 %;           ! 1 = TERMINAL SPEAKS MCS
macro KA60$V_RESERVED2 = 0,3,2,0 %;
literal KA60$S_RESERVED2 = 2;
macro KA60$V_VIDEO_DEV = 0,5,3,0 %;
literal KA60$S_VIDEO_DEV = 3;           ! VIDEO DEVICE CLASS
literal KA60$S_NVR2 = 1;
macro KA60$B_KEYBOARD = 0,0,8,1 %;      ! KEYBOARD CODE
!  Video device codes that may appear in NVR.VIDEO_DEV
literal KA60$K_TTY = 0;                 !  0
literal KA60$K_QVSS = 1;                !  1
literal KA60$K_QDSS = 2;                !  2
literal KA60$K_LEGSS = 3;               !  3
literal KA60$K_PIXELSTAMP = 4;          !  4
literal KA60$K_LYNX = 5;                !  5
!  Halt action codes that may appear in NVR.HALT_ACTION
literal KA60$K_RS_RB_HLT = 0;           !  0 RESTART, REBOOT, HALT
literal KA60$K_RS_HLT = 1;              !  1 RESTART, HALT
literal KA60$K_RB_HLT = 2;              !  2 REBOOT, HALT
literal KA60$K_HLT = 3;                 !  3 HALT
 
!*** MODULE $KA650DEF ***
! ++
!  VIRTUAL ADDRESS SPACE LAYOUT FOR MAYFAIR CPU NODE SPECIFIC REGION
!  POINTED TO BY EXE$GL_CPUNODSP
! --
literal KA650$W_QVSS_CSR = 128;         !  QVSS CSR (IF EXISTS)
literal KA650$W_QDSS_CSR0 = 256;        !  QDSS CSR ADR (POSSIBLY)
literal KA650$W_QDSS_CSR2 = 258;        !  QDSS CSR ADR (POSSIBLY)
literal KA650$W_QDSS_CSR4 = 260;        !  QDSS CSR ADR (POSSIBLY)
literal KA650$W_QDSS_CSR6 = 262;        !  QDSS CSR ADR (POSSIBLY)
literal KA650$W_QDSS_CSR8 = 264;        !  QDSS CSR ADR (POSSIBLY)
literal KA650$W_QDSS_CSRA = 266;        !  QDSS CSR ADR (POSSIBLY)
literal KA650$W_QDSS_CSRC = 268;        !  QDSS CSR ADR (POSSIBLY)
literal KA650$W_QDSS_CSRE = 270;        !  QDSS CSR ADR (POSSIBLY)
literal KA650$W_INTPR0 = 320;           !  INTERPROC COMMUN REG
!    (ICR) FOR ARBITER
literal KA650$W_INTPR1 = 322;           !  ICR FOR AUXIL 1
literal KA650$W_INTPR2 = 324;           !  ICR FOR AUXIL 2
literal KA650$W_INTPR3 = 326;           !  ICR FOR AUXIL 3
literal KA650$L_SIDEX = 516;            !  SYS ID EXTENSION REG
literal KA650$L_CACR = 1024;            !  CACHE CONTROL REG
literal KA650$L_BDR = 1028;             !  BOOT & DIAGNOSTIC REG
literal KA650$L_QMAPS = 1536;           !  FIRST QBUS MAP REG
literal KA650$L_QMAPE = 34300;          !  LAST QBUS MAP REG
literal KA650$L_SCR = 34304;            !  SYS CONFIG REG
literal KA650$L_DSER = 34308;           !  MEM SYSTEM ERR REG
literal KA650$L_MEAR = 34312;           !  MASTER ERROR ADDR REG
literal KA650$L_SEAR = 34316;           !  SLAVE ERROR ADDR REG
literal KA650$L_QBMBR = 34320;          !  Q BUS MAP BASE ADDR REG
literal KA650$L_MEM0 = 34560;           !  MAIN MEMORY REG 0
literal KA650$L_MEM16 = 34624;          !  MAIN MEMORY REG 16
literal KA650$L_MEM17 = 34628;          !  MAIN MEMORY REG 17
literal KA650$L_SSCBR = 34816;          !  SSC BASE ADDRS REG
literal KA650$L_SSCCR = 34832;          !  SSC CONFIG REG
literal KA650$L_CBTCR = 34848;          !  CDAL BUS TIMEOUT
literal KA650$L_DLEDR = 34864;          !  DIAGNOSTIC LED REG
literal KA650$L_TCR0 = 35072;           !  Timer 0 Control Reg
literal KA650$L_TIR0 = 35076;           !  Timer 0 Interval Reg
literal KA650$L_TNIR0 = 35080;          !  Timer 0 Next Interval Reg
literal KA650$L_TIVR0 = 35084;          !  Timer 0 Interrupt Vector Reg
literal KA650$L_TCR1 = 35088;           !  Timer 1 Control Reg
literal KA650$L_TIR1 = 35092;           !  Timer 1 Interval Reg
literal KA650$L_TNIR1 = 35096;          !  Timer 1 Next Interval Reg
literal KA650$L_TIVR1 = 35100;          !  Timer 1 Interrupt Vector Reg
literal KA650$B_NVR = 35328;            !  PUBLIC NONVOLATILE
!  RAM AREA
literal KA650$B_NVRE = 36351;           !  END OF NVR
literal KA650$B_CACH2 = 36352;          !  2NDARY CACHE
literal KA650$B_CACH2E = 101880;        !  LAST CACHE ENTRY
literal KA650$S_KA650DEF = 36352;       !  Size mapped by
!  KA650DEF
!  System ID Extension Longword
literal KA650$S_SIDEX = 4;
macro KA650$W_SIDEX_FILL1 = 0,0,16,0 %; ! RESERVED
macro KA650$B_SIDEX_ROMVER = 2,0,8,0 %; ! BOOT ROM VERSION
macro KA650$B_SIDEX_SYSCODE = 3,0,8,0 %; ! SYSTEM CODE. 1=uVAX II
!  System Configurataion Register
literal KA650$M_SCR_DOS = 14;
literal KA650$M_SCR_AUX = 1024;
literal KA650$M_SCR_BHE = 16384;
literal KA650$M_SCR_POK = 32768;
literal KA650$S_SCR = 4;
macro KA650$V_SCR_FILL1 = 0,0,1,0 %;    ! UNUSED
macro KA650$V_SCR_DOS = 0,1,3,0 %;
literal KA650$S_SCR_DOS = 3;            ! DOORBELL OFFSET
macro KA650$V_SCR_FILL2 = 0,4,6,0 %;
literal KA650$S_SCR_FILL2 = 6;          ! UNUSED
macro KA650$V_SCR_AUX = 0,10,1,0 %;     ! AUXILIARY OR ARBITER
! MODE
!  0 = ARBITER
!  1 = AUXILIARY	
macro KA650$V_SCR_FILL3 = 0,11,3,0 %;
literal KA650$S_SCR_FILL3 = 3;          ! UNUSED
macro KA650$V_SCR_BHE = 0,14,1,0 %;     ! BHALT ENABLE 
!  1 = HALT CPU
!  0 = NO EFFECT
macro KA650$V_SCR_POK = 0,15,1,0 %;     ! POWER OK
macro KA650$W_SCR_FILL3 = 2,0,16,0 %;   ! UNUSED
!   DMA System Error Register (DSER)
literal KA650$M_DSER_NXM = 1;
literal KA650$M_DSER_NG = 4;
literal KA650$M_DSER_LEB = 8;
literal KA650$M_DSER_MME = 16;
literal KA650$M_DSER_PE = 32;
literal KA650$M_DSER_QNXM = 128;
literal KA650$S_DSER = 4;
macro KA650$V_DSER_NXM = 0,0,1,0 %;     ! DMA TO NONEXISTENT MAIN MEMORY BIT IS SET
macro KA650$V_DSER_FILL1 = 0,1,1,0 %;   ! UNUSED	
macro KA650$V_DSER_NG = 0,2,1,0 %;      ! NO GRANT TIME OUT
macro KA650$V_DSER_LEB = 0,3,1,0 %;     ! LOST ERROR
macro KA650$V_DSER_MME = 0,4,1,0 %;     ! MAIN MEMORY ERROR
macro KA650$V_DSER_PE = 0,5,1,0 %;      ! BUS PARITY ERROR
macro KA650$V_DSER_FILL2 = 0,6,1,0 %;   ! UNUSED
macro KA650$V_DSER_QNXM = 0,7,1,0 %;    ! Q-BUS NON-EXIST MEMORY
macro KA650$V_DSER_FILL3 = 0,8,8,0 %;
literal KA650$S_DSER_FILL3 = 8;         ! UNUSED
macro KA650$W_DSER_FILL4 = 2,0,16,0 %;  ! UNUSED
!  Master Error Address Register (MEAR)
literal KA650$S_MEAR = 4;
macro KA650$W_MEAR_ADR = 0,0,16,0 %;    ! MASTER ERROR ADDRESS REG <12:0>
macro KA650$W_MEAR_FILL1 = 2,0,16,0 %;  ! UNUSED, RETURNS AS 0
!  Slave Error Address Register (SEAR)
literal KA650$S_SEAR = 4;
macro KA650$L_SEAR_ADR = 0,0,32,0 %;    ! SLAVE ERROR ADDRESS REGISTER
!   Main Memory Configuration Registers (MEMSCR0 - MEMSCR15)
literal KA650$M_MEMCR_BU = 3;
literal KA650$M_MEMCR_BS = 4;
literal KA650$M_MEMCR_SRR = 32;
literal KA650$M_MEMCR_BE = -2147483648;
literal KA650$S_MEMCR = 4;
macro KA650$V_MEMCR_BU = 0,0,2,0 %;
literal KA650$S_MEMCR_BU = 2;           ! BANK USAGE
! 00 = NO BANK IN USE
! 01 = NOT USED,ILLEGAL
! 10 = FIRST 2 BANKS IN USE
! 11 = ALL 4 BANKS IN USE
macro KA650$V_MEMCR_BS = 0,2,1,0 %;     ! BANK SIZE
macro KA650$V_MEMCR_BEM = 0,3,2,0 %;
literal KA650$S_MEMCR_BEM = 2;          ! BANK ERROR MODE
macro KA650$V_MEMCR_SRR = 0,5,1,0 %;    ! SIGNATURE READ REQUEST
macro KA650$V_MEMCR_FILL1 = 0,6,16,0 %;
literal KA650$S_MEMCR_FILL1 = 16;       ! UNUSED
macro KA650$V_MEMCR_BN = 0,22,4,0 %;
literal KA650$S_MEMCR_BN = 4;           ! BANK NUMBER
macro KA650$V_MEMCR_FILL2 = 0,26,5,0 %;
literal KA650$S_MEMCR_FILL2 = 5;        ! UNUSED
macro KA650$V_MEMCR_BE = 0,31,1,0 %;    ! BANK ENABLE
!   Main Memory Configuration Register 16 (MEMCSR16)
literal KA650$M_MEM16_SYND = 127;
literal KA650$M_MEM16_CDALERR = 128;
literal KA650$M_MEM16_DMAERR = 256;
literal KA650$M_MEM16_ADDR = 536870400;
literal KA650$M_MEM16_CRDERR = 536870912;
literal KA650$M_MEM16_RDSERRHI = 1073741824;
literal KA650$M_MEM16_RDSERR = -2147483648;
literal KA650$S_MEMCR16 = 4;
macro KA650$V_MEM16_SYND = 0,0,7,0 %;
literal KA650$S_MEM16_SYND = 7;         ! ERROR SYNDROME
macro KA650$V_MEM16_CDALERR = 0,7,1,0 %; ! CDAL BUS ERROR
macro KA650$V_MEM16_DMAERR = 0,8,1,0 %; ! DMA ERROR
macro KA650$V_MEM16_ADDR = 0,9,20,0 %;
literal KA650$S_MEM16_ADDR = 20;        ! PAGE ADDRESS OF ERROR
macro KA650$V_MEM16_CRDERR = 0,29,1,0 %; ! CRD ERROR
macro KA650$V_MEM16_RDSERRHI = 0,30,1,0 %; ! RDS HIGH ERROR RATE
macro KA650$V_MEM16_RDSERR = 0,31,1,0 %; ! RDS ERROR
!   Main Memory Configuration Register 17 (MEMCSR17)
literal KA650$M_MEM17_CHECK = 127;
literal KA650$M_MEM17_DIAGMODE = 128;
literal KA650$M_MEM17_BRDERR = 256;
literal KA650$M_MEM17_DIAGFAST = 512;
literal KA650$M_MEM17_ECCDSB = 1024;
literal KA650$M_MEM17_REFRESH = 2048;
literal KA650$M_MEM17_CRDENB = 4096;
literal KA650$M_MEM17_FASTMEM = 8192;
literal KA650$M_MEM17_DMAMODE = 16384;
literal KA650$S_MEMCR17 = 2;
macro KA650$V_MEM17_CHECK = 0,0,7,0 %;
literal KA650$S_MEM17_CHECK = 7;        ! CHECK BITS
macro KA650$V_MEM17_DIAGMODE = 0,7,1,0 %; ! DIAGNOSTIC CHECK MODE
macro KA650$V_MEM17_BRDERR = 0,8,1,0 %; ! BOARD ERROR
macro KA650$V_MEM17_DIAGFAST = 0,9,1,0 %; ! FAST DIAGNOSTIC TEST
macro KA650$V_MEM17_ECCDSB = 0,10,1,0 %; ! ECC DISABLE
macro KA650$V_MEM17_REFRESH = 0,11,1,0 %; ! FORCE REFRESH
macro KA650$V_MEM17_CRDENB = 0,12,1,0 %; ! CRD INTERRUPT ENABLE
macro KA650$V_MEM17_FASTMEM = 0,13,1,0 %; ! FAST MAIN MEM CYCLE
macro KA650$V_MEM17_DMAMODE = 0,14,1,0 %; ! DMA BUS MODE
!  Cache Control Register
literal KA650$M_CACR_DIA = 1;
literal KA650$M_CACR_WW = 2;
literal KA650$M_CACR_CEN = 16;
literal KA650$M_CACR_CPE = 32;
literal KA650$M_CACR_CSP = 192;
literal KA650$M_CACR_TAG = 261888;
literal KA650$M_CACR_V = 262144;
literal KA650$M_CACR_P = 524288;
literal KA650$M_CACR_MO1 = 1048576;
literal KA650$M_CACR_M02 = 2097152;
literal KA650$M_CACR_PPO = 4194304;
literal KA650$M_CACR_PTO = 8388608;
literal KA650$S_CACR = 4;
macro KA650$V_CACR_DIA = 0,0,1,0 %;     ! DIAGNOSTIC MODE
macro KA650$V_CACR_WW = 0,1,1,0 %;      ! WRITE WRONG PARITY
macro KA650$V_CACR_FILL1 = 0,2,2,0 %;
literal KA650$S_CACR_FILL1 = 2;         ! UNUSED
macro KA650$V_CACR_CEN = 0,4,1,0 %;     ! CASH ENABLE
macro KA650$V_CACR_CPE = 0,5,1,0 %;     ! CASH PARITY ERROR
macro KA650$V_CACR_CSP = 0,6,2,0 %;
literal KA650$S_CACR_CSP = 2;           ! CVAX CYCLE SPEED
!  00 = RESERVED FOR FUTURE
!  01 = 60 NS
!  10 = 80 NS
!  11 = 100 NS
macro KA650$V_CACR_TAG = 0,8,10,0 %;
literal KA650$S_CACR_TAG = 10;          ! TAG
macro KA650$V_CACR_V = 0,18,1,0 %;      ! TAG BLOCK VALUE BIT
macro KA650$V_CACR_P = 0,19,1,0 %;      ! TAG BLOCK PARITY BIT
macro KA650$V_CACR_MO1 = 0,20,1,0 %;    ! MATCH OUTPUT 1
macro KA650$V_CACR_M02 = 0,21,1,0 %;    ! MATCH OUTPUT 2
macro KA650$V_CACR_PPO = 0,22,1,0 %;    ! PREDICTIVE PARITY TREE OUTPUT
macro KA650$V_CACR_PTO = 0,23,1,0 %;    ! PARITY TREE OUTPUT
macro KA650$V_CACR_FILL2 = 0,24,8,0 %;
literal KA650$S_CACR_FILL2 = 8;         ! UNUSED
!  Boot and Diagnostic Configuration Register (BDR)
literal KA650$M_BDR_CD = 3;
literal KA650$M_BRS_CD = 112;
literal KA650$M_HLT_ENB = 128;
literal KA650$S_BDR = 4;
macro KA650$V_BDR_CD = 0,0,2,0 %;
literal KA650$S_BDR_CD = 2;             ! BOOT DISPLAY BITS
macro KA650$V_CPUCD = 0,2,2,0 %;
literal KA650$S_CPUCD = 2;              ! CPU CODE
macro KA650$V_BRS_CD = 0,4,3,0 %;
literal KA650$S_BRS_CD = 3;             ! BAUD RATE SELECT
macro KA650$V_HLT_ENB = 0,7,1,0 %;      ! HAULT ENABLE
macro KA650$V_BDR_FILL1 = 0,8,24,0 %;
literal KA650$S_BDR_FILL1 = 24;         ! UNUSED
!  Diagnostic LED Register (DLEDR)
literal KA650$M_DLEDR_DSPL = 15;
literal KA650$S_DLEDR = 4;
macro KA650$V_DLEDR_DSPL = 0,0,4,0 %;
literal KA650$S_DLEDR_DSPL = 4;         ! DISPLAY <3:0>
macro KA650$V_DLEDR_FILL1 = 0,4,12,0 %;
literal KA650$S_DLEDR_FILL1 = 12;       ! UNUSED
macro KA650$W_DLEDR_FILL2 = 2,0,16,0 %; ! UNUSED
!   Interval Timer Control Regsiters (TCR0, TCR1)
literal KA650$M_TCR_RUN = 1;
literal KA650$M_TCR_STP = 4;
literal KA650$M_TCR_XFR = 16;
literal KA650$M_TCR_SGL = 32;
literal KA650$M_TCR_IE = 64;
literal KA650$M_TCR_INT = 128;
literal KA650$M_TCR_ERR = -2147483648;
literal KA650$S_TCR = 4;
macro KA650$V_TCR_RUN = 0,0,1,0 %;      ! INCREMENT TIR EVERY uSEC
macro KA650$V_TCR_FILL1 = 0,1,1,0 %;    ! UNUSED
macro KA650$V_TCR_STP = 0,2,1,0 %;      ! STOP ON OVERFLOW
macro KA650$V_TCR_FILL2 = 0,3,1,0 %;    ! UNUSED
macro KA650$V_TCR_XFR = 0,4,1,0 %;      ! COPY TNIR TO TIR
macro KA650$V_TCR_SGL = 0,5,1,0 %;      ! INCREMENT TIR (IF RUN = 0)
macro KA650$V_TCR_IE = 0,6,1,0 %;       ! INTERRUPT ENABLE
macro KA650$V_TCR_INT = 0,7,1,0 %;      ! OVERFLOW
macro KA650$V_TCR_FILL3 = 0,8,23,0 %;
literal KA650$S_TCR_FILL3 = 23;         ! UNUSED
macro KA650$V_TCR_ERR = 0,31,1,0 %;     ! ERROR (MISSED OVERFLOW)
!   Interval Timer Interrupt Vector Regsiters (TIVR0, TIVR1)
literal KA650$S_TIVR = 4;
macro KA650$V_TIVR_FILL1 = 0,0,2,0 %;
literal KA650$S_TIVR_FILL1 = 2;         ! UNUSED
macro KA650$V_TIVR_VEC = 0,2,8,0 %;
literal KA650$S_TIVR_VEC = 8;           ! INTERRUPT VECTOR
macro KA650$V_TIVR_FILL2 = 0,10,22,0 %;
literal KA650$S_TIVR_FILL2 = 22;        ! UNUSED
!  Public Nonvolatile RAM area
literal KA650$S_NVR = 3;
macro KA650$V_HALT_ACTION = 0,0,2,0 %;
literal KA650$S_HALT_ACTION = 2;        ! HALT ACTION CODE
macro KA650$V_BIP = 0,2,1,0 %;          ! 1 = BOOT IN PROGRESS
macro KA650$V_RIP = 0,3,1,0 %;          ! 1 = RESTART IN PROGRESS
macro KA650$V_LANGUAGE = 0,4,4,0 %;
literal KA650$S_LANGUAGE = 4;           ! CONSOLE LANGUAGE CODE
macro KA650$V_RESERVED1 = 0,8,1,0 %;
macro KA650$V_CRT = 0,9,1,0 %;          ! 1 = Is CRT TERMINAL
macro KA650$V_MCS = 0,10,1,0 %;         ! 1 = TERMINAL SPEAKS MCS
macro KA650$V_RESERVED2 = 0,11,2,0 %;
literal KA650$S_RESERVED2 = 2;
macro KA650$V_VIDEO_DEV = 0,13,3,0 %;
literal KA650$S_VIDEO_DEV = 3;          ! VIDEO DEVICE CLASS
macro KA650$B_KEYBOARD = 2,0,8,1 %;     ! KEYBOARD CODE
!  Video device codes that may appear in NVR.VIDEO_DEV
literal KA650$K_TTY = 0;                !  0
literal KA650$K_QVSS = 1;               !  1
literal KA650$K_QDSS = 2;               !  2
!  Hault action codes that may appear in NVR.HALT_ACTION
literal KA650$K_RS_RB_HLT = 0;          !  0 RESTART, REBOOT, HALT
literal KA650$K_RS_HLT = 1;             !  1 RESTART, HALT
literal KA650$K_RB_HLT = 2;             !  2 REBOOT, HALT
literal KA650$K_HLT = 3;                !  3 HALT
 
!*** MODULE $KA640DEF ***
literal KA640$L_SCR = 0;                !  SYS CONFIG REG
literal KA640$L_DSER = 4;               !  MEM SYSTEM ERR REG
literal KA640$L_MEAR = 8;               !  MASTER ERROR ADDR REG
literal KA640$L_SEAR = 12;              !  SLAVE ERROR ADDR REG
literal KA640$L_QBMBR = 16;             !  Q BUS MAP BASE ADDR REG
literal KA640$L_MEM0 = 256;             !  MAIN MEMORY REG 0
literal KA640$L_MEM16 = 320;            !  MAIN MEMORY REG 16
literal KA640$L_MEM17 = 324;            !  MAIN MEMORY REG 17
literal KA640$L_SSCBR = 512;            !  SSC BASE ADDRS REG
literal KA640$L_SSCCR = 528;            !  SSC CONFIG REG
literal KA640$L_CBTCR = 544;            !  CDAL BUS TIMEOUT
literal KA640$L_DLEDR = 560;            !  DIAGNOSTIC LED REG
literal KA640$L_TCR0 = 768;             !  Timer 0 Control Reg
literal KA640$L_TIR0 = 772;             !  Timer 0 Interval Reg
literal KA640$L_TNIR0 = 776;            !  Timer 0 Next Interval Reg
literal KA640$L_TIVR0 = 780;            !  Timer 0 Interrupt Vector Reg
literal KA640$L_TCR1 = 784;             !  Timer 1 Control Reg
literal KA640$L_TIR1 = 788;             !  Timer 1 Interval Reg
literal KA640$L_TNIR1 = 792;            !  Timer 1 Next Interval Reg
literal KA640$L_TIVR1 = 796;            !  Timer 1 Interrupt Vector Reg
literal KA640$B_NVR = 1024;             !  PUBLIC NONVOLATILE
!  RAM AREA
literal KA640$B_NVRE = 2047;            !  END OF NVR
literal KA640$W_QVSS_CSR = 2176;        !  QVSS CSR
literal KA640$W_QDSS_CSR0 = 2304;       !  QDSS CSR0
literal KA640$W_QDSS_CSR2 = 2306;       !  QDSS CSR2
literal KA640$W_QDSS_CSR4 = 2308;       !  QDSS CSR4
literal KA640$W_QDSS_CSR6 = 2310;       !  QDSS CSR6
literal KA640$W_QDSS_CSR8 = 2312;       !  QDSS CSR8
literal KA640$W_QDSS_CSRA = 2314;       !  QDSS CSRA
literal KA640$W_QDSS_CSRC = 2316;       !  QDSS CSRC
literal KA640$W_QDSS_CSRE = 2318;       !  QDSS CSRE
literal KA640$W_INTPR0 = 2368;          ! INTERPROC COMM REG
literal KA640$W_INTPR1 = 2370;          !  ICR FOR AUXIL 1
literal KA640$W_INTPR2 = 2372;          !  ICR FOR AUXIL 2
literal KA640$W_INTPR3 = 2374;          !  ICR FOR AUXIL 3
literal KA640$S_KA640DEF = 3072;        !  Size mapped by
!  KA640DEF
!  System ID Extension Longword
literal KA640$S_SIDEX = 4;
macro KA640$B_SIDEX_NU = 0,0,8,0 %;     ! Number of users
macro KA640$B_SIDEX_SUBTYP = 1,0,8,0 %; ! SYSTEM SUBTYPE:
!  1 = MAYFAIR
!  2 = MAYFAIR II
macro KA640$B_SIDEX_ROMVER = 2,0,8,0 %; ! BOOT ROM VERSION
macro KA640$B_SIDEX_SYSCODE = 3,0,8,0 %; ! SYSTEM CODE. 1=MAYFAIR
!  System Configurataion Register
literal KA640$M_SCR_DOS = 14;
literal KA640$M_SCR_AUX = 1024;
literal KA640$M_SCR_BHE = 16384;
literal KA640$M_SCR_POK = 32768;
literal KA640$S_SCR = 4;
macro KA640$V_SCR_FILL1 = 0,0,1,0 %;    ! UNUSED
macro KA640$V_SCR_DOS = 0,1,3,0 %;
literal KA640$S_SCR_DOS = 3;            ! DOORBELL OFFSET
macro KA640$V_SCR_FILL2 = 0,4,6,0 %;
literal KA640$S_SCR_FILL2 = 6;          ! UNUSED
macro KA640$V_SCR_AUX = 0,10,1,0 %;     ! AUXILIARY OR ARBITER
! MODE
!  0 = ARBITER
!  1 = AUXILIARY	
macro KA640$V_SCR_FILL3 = 0,11,3,0 %;
literal KA640$S_SCR_FILL3 = 3;          ! UNUSED
macro KA640$V_SCR_BHE = 0,14,1,0 %;     ! BHALT ENABLE 
!  1 = HALT CPU
!  0 = NO EFFECT
macro KA640$V_SCR_POK = 0,15,1,0 %;     ! POWER OK
macro KA640$W_SCR_FILL3 = 2,0,16,0 %;   ! UNUSED
!   DMA System Error Register (DSER)
literal KA640$M_DSER_NXM = 1;
literal KA640$M_DSER_NG = 4;
literal KA640$M_DSER_LEB = 8;
literal KA640$M_DSER_MME = 16;
literal KA640$M_DSER_PE = 32;
literal KA640$M_DSER_QNXM = 128;
literal KA640$S_DSER = 4;
macro KA640$V_DSER_NXM = 0,0,1,0 %;     ! DMA TO NONEXISTENT MAIN MEMORY BIT IS SET
macro KA640$V_DSER_FILL1 = 0,1,1,0 %;   ! UNUSED	
macro KA640$V_DSER_NG = 0,2,1,0 %;      ! NO GRANT TIME OUT
macro KA640$V_DSER_LEB = 0,3,1,0 %;     ! LOST ERROR
macro KA640$V_DSER_MME = 0,4,1,0 %;     ! MAIN MEMORY ERROR
macro KA640$V_DSER_PE = 0,5,1,0 %;      ! BUS PARITY ERROR
macro KA640$V_DSER_FILL2 = 0,6,1,0 %;   ! UNUSED
macro KA640$V_DSER_QNXM = 0,7,1,0 %;    ! Q-BUS NON-EXIST MEMORY
macro KA640$V_DSER_FILL3 = 0,8,8,0 %;
literal KA640$S_DSER_FILL3 = 8;         ! UNUSED
macro KA640$W_DSER_FILL4 = 2,0,16,0 %;  ! UNUSED
!  Master Error Address Register (MEAR)
literal KA640$S_MEAR = 4;
macro KA640$W_MEAR_ADR = 0,0,16,0 %;    ! MASTER ERROR ADDRESS REG <12:0>
macro KA640$W_MEAR_FILL1 = 2,0,16,0 %;  ! UNUSED, RETURNS AS 0
!  Slave Error Address Register (SEAR)
literal KA640$S_SEAR = 4;
macro KA640$L_SEAR_ADR = 0,0,32,0 %;    ! SLAVE ERROR ADDRESS REGISTER
!   Main Memory Configuration Registers (MEMSCR0 - MEMSCR15)
literal KA640$M_MEMCR_BU = 3;
literal KA640$M_MEMCR_BS = 4;
literal KA640$M_MEMCR_SRR = 32;
literal KA640$M_MEMCR_BE = -2147483648;
literal KA640$S_MEMCR = 4;
macro KA640$V_MEMCR_BU = 0,0,2,0 %;
literal KA640$S_MEMCR_BU = 2;           ! BANK USAGE
! 00 = NO BANK IN USE
! 01 = NOT USED,ILLEGAL
! 10 = FIRST 2 BANKS IN USE
! 11 = ALL 4 BANKS IN USE
macro KA640$V_MEMCR_BS = 0,2,1,0 %;     ! BANK SIZE
macro KA640$V_MEMCR_BEM = 0,3,2,0 %;
literal KA640$S_MEMCR_BEM = 2;          ! BANK ERROR MODE
macro KA640$V_MEMCR_SRR = 0,5,1,0 %;    ! SIGNATURE READ REQUEST
macro KA640$V_MEMCR_FILL1 = 0,6,16,0 %;
literal KA640$S_MEMCR_FILL1 = 16;       ! UNUSED
macro KA640$V_MEMCR_BN = 0,22,4,0 %;
literal KA640$S_MEMCR_BN = 4;           ! BANK NUMBER
macro KA640$V_MEMCR_FILL2 = 0,26,5,0 %;
literal KA640$S_MEMCR_FILL2 = 5;        ! UNUSED
macro KA640$V_MEMCR_BE = 0,31,1,0 %;    ! BANK ENABLE
!   Main Memory Configuration Register 16 (MEMCSR16)
literal KA640$M_MEM16_SYND = 127;
literal KA640$M_MEM16_CDALERR = 128;
literal KA640$M_MEM16_DMAERR = 256;
literal KA640$M_MEM16_ADDR = 536870400;
literal KA640$M_MEM16_CRDERR = 536870912;
literal KA640$M_MEM16_RDSERRHI = 1073741824;
literal KA640$M_MEM16_RDSERR = -2147483648;
literal KA640$S_MEMCR16 = 4;
macro KA640$V_MEM16_SYND = 0,0,7,0 %;
literal KA640$S_MEM16_SYND = 7;         ! ERROR SYNDROME
macro KA640$V_MEM16_CDALERR = 0,7,1,0 %; ! CDAL BUS ERROR
macro KA640$V_MEM16_DMAERR = 0,8,1,0 %; ! DMA ERROR
macro KA640$V_MEM16_ADDR = 0,9,20,0 %;
literal KA640$S_MEM16_ADDR = 20;        ! PAGE ADDRESS OF ERROR
macro KA640$V_MEM16_CRDERR = 0,29,1,0 %; ! CRD ERROR
macro KA640$V_MEM16_RDSERRHI = 0,30,1,0 %; ! RDS HIGH ERROR RATE
macro KA640$V_MEM16_RDSERR = 0,31,1,0 %; ! RDS ERROR
!   Main Memory Configuration Register 17 (MEMCSR17)
literal KA640$M_MEM17_CHECK = 127;
literal KA640$M_MEM17_DIAGMODE = 128;
literal KA640$M_MEM17_BRDERR = 256;
literal KA640$M_MEM17_DIAGFAST = 512;
literal KA640$M_MEM17_ECCDSB = 1024;
literal KA640$M_MEM17_REFRESH = 2048;
literal KA640$M_MEM17_CRDENB = 4096;
literal KA640$M_MEM17_FASTMEM = 8192;
literal KA640$M_MEM17_DMAMODE = 16384;
literal KA640$S_MEMCR17 = 2;
macro KA640$V_MEM17_CHECK = 0,0,7,0 %;
literal KA640$S_MEM17_CHECK = 7;        ! CHECK BITS
macro KA640$V_MEM17_DIAGMODE = 0,7,1,0 %; ! DIAGNOSTIC CHECK MODE
macro KA640$V_MEM17_BRDERR = 0,8,1,0 %; ! BOARD ERROR
macro KA640$V_MEM17_DIAGFAST = 0,9,1,0 %; ! FAST DIAGNOSTIC TEST
macro KA640$V_MEM17_ECCDSB = 0,10,1,0 %; ! ECC DISABLE
macro KA640$V_MEM17_REFRESH = 0,11,1,0 %; ! FORCE REFRESH
macro KA640$V_MEM17_CRDENB = 0,12,1,0 %; ! CRD INTERRUPT ENABLE
macro KA640$V_MEM17_FASTMEM = 0,13,1,0 %; ! FAST MAIN MEM CYCLE
macro KA640$V_MEM17_DMAMODE = 0,14,1,0 %; ! DMA BUS MODE
!  Boot and Diagnostic Configuration Register (BDR)
literal KA640$M_BDR_CD = 3;
literal KA640$M_BRS_CD = 112;
literal KA640$M_HLT_ENB = 128;
literal KA640$S_BDR = 4;
macro KA640$V_BDR_CD = 0,0,2,0 %;
literal KA640$S_BDR_CD = 2;             ! BOOT DISPLAY BITS
macro KA640$V_CPUCD = 0,2,2,0 %;
literal KA640$S_CPUCD = 2;              ! CPU CODE
macro KA640$V_BRS_CD = 0,4,3,0 %;
literal KA640$S_BRS_CD = 3;             ! BAUD RATE SELECT
macro KA640$V_HLT_ENB = 0,7,1,0 %;      ! HAULT ENABLE
macro KA640$V_BDR_FILL1 = 0,8,24,0 %;
literal KA640$S_BDR_FILL1 = 24;         ! UNUSED
!  Diagnostic LED Register (DLEDR)
literal KA640$M_DLEDR_DSPL = 15;
literal KA640$S_DLEDR = 4;
macro KA640$V_DLEDR_DSPL = 0,0,4,0 %;
literal KA640$S_DLEDR_DSPL = 4;         ! DISPLAY <3:0>
macro KA640$V_DLEDR_FILL1 = 0,4,12,0 %;
literal KA640$S_DLEDR_FILL1 = 12;       ! UNUSED
macro KA640$W_DLEDR_FILL2 = 2,0,16,0 %; ! UNUSED
!   Interval Timer Control Regsiters (TCR0, TCR1)
literal KA640$M_TCR_RUN = 1;
literal KA640$M_TCR_STP = 4;
literal KA640$M_TCR_XFR = 16;
literal KA640$M_TCR_SGL = 32;
literal KA640$M_TCR_IE = 64;
literal KA640$M_TCR_INT = 128;
literal KA640$M_TCR_ERR = -2147483648;
literal KA640$S_TCR = 4;
macro KA640$V_TCR_RUN = 0,0,1,0 %;      ! INCREMENT TIR EVERY uSEC
macro KA640$V_TCR_FILL1 = 0,1,1,0 %;    ! UNUSED
macro KA640$V_TCR_STP = 0,2,1,0 %;      ! STOP ON OVERFLOW
macro KA640$V_TCR_FILL2 = 0,3,1,0 %;    ! UNUSED
macro KA640$V_TCR_XFR = 0,4,1,0 %;      ! COPY TNIR TO TIR
macro KA640$V_TCR_SGL = 0,5,1,0 %;      ! INCREMENT TIR (IF RUN = 0)
macro KA640$V_TCR_IE = 0,6,1,0 %;       ! INTERRUPT ENABLE
macro KA640$V_TCR_INT = 0,7,1,0 %;      ! OVERFLOW
macro KA640$V_TCR_FILL3 = 0,8,23,0 %;
literal KA640$S_TCR_FILL3 = 23;         ! UNUSED
macro KA640$V_TCR_ERR = 0,31,1,0 %;     ! ERROR (MISSED OVERFLOW)
!   Interval Timer Interrupt Vector Regsiters (TIVR0, TIVR1)
literal KA640$S_TIVR = 4;
macro KA640$V_TIVR_FILL1 = 0,0,2,0 %;
literal KA640$S_TIVR_FILL1 = 2;         ! UNUSED
macro KA640$V_TIVR_VEC = 0,2,8,0 %;
literal KA640$S_TIVR_VEC = 8;           ! INTERRUPT VECTOR
macro KA640$V_TIVR_FILL2 = 0,10,22,0 %;
literal KA640$S_TIVR_FILL2 = 22;        ! UNUSED
!  Public Nonvolatile RAM area
literal KA640$S_NVR = 3;
macro KA640$V_HALT_ACTION = 0,0,2,0 %;
literal KA640$S_HALT_ACTION = 2;        ! HALT ACTION CODE
macro KA640$V_BIP = 0,2,1,0 %;          ! 1 = BOOT IN PROGRESS
macro KA640$V_RIP = 0,3,1,0 %;          ! 1 = RESTART IN PROGRESS
macro KA640$V_LANGUAGE = 0,4,4,0 %;
literal KA640$S_LANGUAGE = 4;           ! CONSOLE LANGUAGE CODE
macro KA640$V_RESERVED1 = 0,8,1,0 %;
macro KA640$V_CRT = 0,9,1,0 %;          ! 1 = Is CRT TERMINAL
macro KA640$V_MCS = 0,10,1,0 %;         ! 1 = TERMINAL SPEAKS MCS
macro KA640$V_RESERVED2 = 0,11,2,0 %;
literal KA640$S_RESERVED2 = 2;
macro KA640$V_VIDEO_DEV = 0,13,3,0 %;
literal KA640$S_VIDEO_DEV = 3;          ! VIDEO DEVICE CLASS
macro KA640$B_KEYBOARD = 2,0,8,1 %;     ! KEYBOARD CODE
!  Video device codes that may appear in NVR.VIDEO_DEV
literal KA640$K_TTY = 0;                !  0
literal KA640$K_QVSS = 1;               !  1
literal KA640$K_QDSS = 2;               !  2
!  Hault action codes that may appear in NVR.HALT_ACTION
literal KA640$K_RS_RB_HLT = 0;          !  0 RESTART, REBOOT, HALT
literal KA640$K_RS_HLT = 1;             !  1 RESTART, HALT
literal KA640$K_RB_HLT = 2;             !  2 REBOOT, HALT
literal KA640$K_HLT = 3;                !  3 HALT
 
!*** MODULE $KA660DEF ***
literal KA660$W_QDSS = 256;
literal KA660$W_IPCR0 = 320;
literal KA660$W_IPCR1 = 322;
literal KA660$W_IPCR2 = 324;
literal KA660$W_IPCR3 = 326;
literal KA660$L_SCR = 512;
literal KA660$L_DSER = 516;
literal KA660$L_QBEAR = 520;
literal KA660$L_DEAR = 524;
literal KA660$L_QBMBR = 528;
literal KA660$L_MEMCON = 768;
literal KA660$L_MMESR = 832;
literal KA660$L_MMCDSR = 836;
literal KA660$L_BDR = 1024;
literal KA660$L_QMAP = 1536;
literal KA660$L_SSCBR = 34304;
literal KA660$L_SSCCR = 34320;
literal KA660$L_CBTCR = 34336;
literal KA660$L_DLEDR = 34352;
literal KA660$L_TCR0 = 34560;
literal KA660$L_TIR0 = 34564;
literal KA660$L_TNIR0 = 34568;
literal KA660$L_TIVR0 = 34572;
literal KA660$L_TCR1 = 34576;
literal KA660$L_TIR1 = 34580;
literal KA660$L_TNIR1 = 34584;
literal KA660$L_TIVR1 = 34588;
literal KA660$B_NVR = 34816;
literal KA660$L_TAG = 35840;
literal KA660$L_DATA = 36864;
literal KA660$L_BEHR = 37888;
literal KA660$B_ROM = 38400;
literal KA660$L_SSHMA = 38440;
literal KA660$S_KA660DEF = 300544;
literal KA660$_SHAC_PMCSR = 92;
literal KA660$_SHAC_M_MIN = 1;
literal KA660$_SGEC_MODE = 24;
literal KA660$_SGEC_M_RESET = -2147483648;
literal KA660$M_IPCR_DBI_RQ = 1;
literal KA660$M_IPCR_LM_EAE = 32;
literal KA660$M_IPCR_DBI_IE = 64;
literal KA660$M_IPCR_AUX_HLT = 256;
literal KA660$M_IPCR_QMCIA = 16384;
literal KA660$M_IPCR_DMA_QME = 32768;
literal KA660$S_KA660_IPCR = 2;
macro KA660$V_IPCR_DBI_RQ = 0,0,1,0 %;
macro KA660$V_IPCR_LM_EAE = 0,5,1,0 %;
macro KA660$V_IPCR_DBI_IE = 0,6,1,0 %;
macro KA660$V_IPCR_AUX_HLT = 0,8,1,0 %;
macro KA660$V_IPCR_QMCIA = 0,14,1,0 %;
macro KA660$V_IPCR_DMA_QME = 0,15,1,0 %;
literal KA660$S_KA660_SIDEX = 4;
macro KA660$B_SIDEX_NUM_USER = 0,0,8,0 %;
macro KA660$B_SIDEX_SUB_TYPE = 1,0,8,0 %;
macro KA660$B_SIDEX_ROM_VERS = 2,0,8,0 %;
macro KA660$B_SIDEX_SYS_CODE = 3,0,8,0 %;
literal KA660$M_SCR_DOS = 14;
literal KA660$M_SCR_DCOK_HLT = 128;
literal KA660$M_SCR_AUX = 1024;
literal KA660$M_SCR_PPD = 4096;
literal KA660$M_SCR_BHE = 16384;
literal KA660$M_SCR_POK = 32768;
literal KA660$S_KA660_SCR = 4;
macro KA660$V_SCR_DOS = 0,1,3,0 %;
literal KA660$S_SCR_DOS = 3;
macro KA660$V_SCR_DCOK_HLT = 0,7,1,0 %;
macro KA660$V_SCR_AUX = 0,10,1,0 %;
macro KA660$V_SCR_PPD = 0,12,1,0 %;
macro KA660$V_SCR_BHE = 0,14,1,0 %;
macro KA660$V_SCR_POK = 0,15,1,0 %;
literal KA660$M_DSER_NXM = 1;
literal KA660$M_DSER_NG = 4;
literal KA660$M_DSER_LE = 8;
literal KA660$M_DSER_MME = 16;
literal KA660$M_DSER_PE = 32;
literal KA660$M_DSER_QNXM = 128;
literal KA660$M_DSER_DCOK = 16384;
literal KA660$M_DSER_BHALT = 32768;
literal KA660$S_KA660_DSER = 4;
macro KA660$V_DSER_NXM = 0,0,1,0 %;
macro KA660$V_DSER_NG = 0,2,1,0 %;
macro KA660$V_DSER_LE = 0,3,1,0 %;
macro KA660$V_DSER_MME = 0,4,1,0 %;
macro KA660$V_DSER_PE = 0,5,1,0 %;
macro KA660$V_DSER_QNXM = 0,7,1,0 %;
macro KA660$V_DSER_DCOK = 0,14,1,0 %;
macro KA660$V_DSER_BHALT = 0,15,1,0 %;
literal KA660$M_QBEAR_ADDR = 8191;
literal KA660$S_KA660_QBEAR = 4;
macro KA660$V_QBEAR_ADDR = 0,0,13,0 %;
literal KA660$S_QBEAR_ADDR = 13;
literal KA660$M_DEAR_ADDR = 8191;
literal KA660$S_KA660_DEAR = 4;
macro KA660$V_DEAR_ADDR = 0,0,13,0 %;
literal KA660$S_DEAR_ADDR = 13;
literal KA660$K_MEMCON_BU_0 = 0;
literal KA660$K_MEMCON_BU_ILL = 1;
literal KA660$K_MEMCON_BU_2 = 2;
literal KA660$K_MEMCON_BU_4 = 3;
literal KA660$M_MEMCON_BU = 3;
literal KA660$M_MEMCON_BS = 4;
literal KA660$M_MEMCON_BEM = 24;
literal KA660$M_MEMCON_SRR = 32;
literal KA660$M_MEMCON_LOCK = 64;
literal KA660$M_MEMCON_BN = 62914560;
literal KA660$M_MEMCON_BE = -2147483648;
literal KA660$S_KA660_MEMCON = 4;
macro KA660$V_MEMCON_BU = 0,0,2,0 %;
literal KA660$S_MEMCON_BU = 2;
macro KA660$V_MEMCON_BS = 0,2,1,0 %;
macro KA660$V_MEMCON_BEM = 0,3,2,0 %;
literal KA660$S_MEMCON_BEM = 2;
macro KA660$V_MEMCON_SRR = 0,5,1,0 %;
macro KA660$V_MEMCON_LOCK = 0,6,1,0 %;
macro KA660$V_MEMCON_BN = 0,22,4,0 %;
literal KA660$S_MEMCON_BN = 4;
macro KA660$V_MEMCON_BE = 0,31,1,0 %;
literal KA660$M_MMESR_SYND = 127;
literal KA660$M_MMESR_BUSERR = 128;
literal KA660$M_MMESR_DMAERR = 256;
literal KA660$M_MMESR_ADDR = 536870400;
literal KA660$M_MMESR_CRDERR = 536870912;
literal KA660$M_MMESR_RDSHER = 1073741824;
literal KA660$M_MMESR_RDSERR = -2147483648;
literal KA660$S_KA660_MMESR = 4;
macro KA660$V_MMESR_SYND = 0,0,7,0 %;
literal KA660$S_MMESR_SYND = 7;
macro KA660$V_MMESR_BUSERR = 0,7,1,0 %;
macro KA660$V_MMESR_DMAERR = 0,8,1,0 %;
macro KA660$V_MMESR_ADDR = 0,9,20,0 %;
literal KA660$S_MMESR_ADDR = 20;
macro KA660$V_MMESR_CRDERR = 0,29,1,0 %;
macro KA660$V_MMESR_RDSHER = 0,30,1,0 %;
macro KA660$V_MMESR_RDSERR = 0,31,1,0 %;
literal KA660$M_MMCDSR_CHECK = 127;
literal KA660$M_MMCDSR_DCM = 128;
literal KA660$M_MMCDSR_CL = 256;
literal KA660$M_MMCDSR_FDM = 512;
literal KA660$M_MMCDSR_MEDD = 1024;
literal KA660$M_MMCDSR_FRR = 2048;
literal KA660$M_MMCDSR_CRD_IE = 4096;
literal KA660$M_MMCDSR_MMCS = 8192;
literal KA660$M_MMCDSR_EL = 16384;
literal KA660$S_KA660_MMCDSR = 4;
macro KA660$V_MMCDSR_CHECK = 0,0,7,0 %;
literal KA660$S_MMCDSR_CHECK = 7;
macro KA660$V_MMCDSR_DCM = 0,7,1,0 %;
macro KA660$V_MMCDSR_CL = 0,8,1,0 %;
macro KA660$V_MMCDSR_FDM = 0,9,1,0 %;
macro KA660$V_MMCDSR_MEDD = 0,10,1,0 %;
macro KA660$V_MMCDSR_FRR = 0,11,1,0 %;
macro KA660$V_MMCDSR_CRD_IE = 0,12,1,0 %;
macro KA660$V_MMCDSR_MMCS = 0,13,1,0 %;
macro KA660$V_MMCDSR_EL = 0,14,1,0 %;
literal KA660$M_BDR_ETHER_BOOT = 4096;
literal KA660$M_BDR_DSSI = 57344;
literal KA660$M_BDR_BDG_CD = 196608;
literal KA660$M_BDR_CPU = 786432;
literal KA660$M_BDR_BRS_CD = 7340032;
literal KA660$M_BDR_HLT_ENB = 8388608;
literal KA660$M_BDR_SA_ROM = -16777216;
literal KA660$S_KA660_BDR = 4;
macro KA660$V_BDR_ETHER_BOOT = 0,12,1,0 %;
macro KA660$V_BDR_DSSI = 0,13,3,0 %;
literal KA660$S_BDR_DSSI = 3;
macro KA660$V_BDR_BDG_CD = 0,16,2,0 %;
literal KA660$S_BDR_BDG_CD = 2;
macro KA660$V_BDR_CPU = 0,18,2,0 %;
literal KA660$S_BDR_CPU = 2;
macro KA660$V_BDR_BRS_CD = 0,20,3,0 %;
literal KA660$S_BDR_BRS_CD = 3;
macro KA660$V_BDR_HLT_ENB = 0,23,1,0 %;
macro KA660$V_BDR_SA_ROM = 0,24,8,0 %;
literal KA660$S_BDR_SA_ROM = 8;
literal KA660$M_DLEDR_DSPL = 15;
literal KA660$S_KA660_DLEDR = 4;
macro KA660$V_DLEDR_DSPL = 0,0,4,0 %;
literal KA660$S_DLEDR_DSPL = 4;
literal KA660$M_TCR_RUN = 1;
literal KA660$M_TCR_STP = 4;
literal KA660$M_TCR_XFR = 16;
literal KA660$M_TCR_SGL = 32;
literal KA660$M_TCR_IE = 64;
literal KA660$M_TCR_INT = 128;
literal KA660$M_TCR_ERR = -2147483648;
literal KA660$S_KA660_TCR = 4;
macro KA660$V_TCR_RUN = 0,0,1,0 %;
macro KA660$V_TCR_STP = 0,2,1,0 %;
macro KA660$V_TCR_XFR = 0,4,1,0 %;
macro KA660$V_TCR_SGL = 0,5,1,0 %;
macro KA660$V_TCR_IE = 0,6,1,0 %;
macro KA660$V_TCR_INT = 0,7,1,0 %;
macro KA660$V_TCR_ERR = 0,31,1,0 %;
literal KA660$M_TIVR_VEC = 1020;
literal KA660$S_KA660_TIVR = 4;
macro KA660$V_TIVR_VEC = 0,2,8,0 %;
literal KA660$S_TIVR_VEC = 8;
literal KA660$K_RS_RB_HLT = 0;
literal KA660$K_RS_HLT = 1;
literal KA660$K_RB_HLT = 2;
literal KA660$K_HLT = 3;
literal KA660$M_HALT_ACTION = 3;
literal KA660$M_BIP = 4;
literal KA660$M_RIP = 8;
literal KA660$M_LANGUAGE = 240;
literal KA660$M_INSERT = 256;
literal KA660$M_CRT = 512;
literal KA660$M_MCS = 1024;
literal KA660$M_DIP = 2048;
literal KA660$M_MOP_ENB = 4096;
literal KA660$K_TTY = 0;
literal KA660$K_QVSS = 1;
literal KA660$K_QDSS = 2;
literal KA660$M_VIDEO_DEV = 57344;
literal KA660$S_KA660_NVR = 2;
macro KA660$V_HALT_ACTION = 0,0,2,0 %;
literal KA660$S_HALT_ACTION = 2;
macro KA660$V_BIP = 0,2,1,0 %;
macro KA660$V_RIP = 0,3,1,0 %;
macro KA660$V_LANGUAGE = 0,4,4,0 %;
literal KA660$S_LANGUAGE = 4;
macro KA660$V_INSERT = 0,8,1,0 %;
macro KA660$V_CRT = 0,9,1,0 %;
macro KA660$V_MCS = 0,10,1,0 %;
macro KA660$V_DIP = 0,11,1,0 %;
macro KA660$V_MOP_ENB = 0,12,1,0 %;
macro KA660$V_VIDEO_DEV = 0,13,3,0 %;
literal KA660$S_VIDEO_DEV = 3;
literal KA660$M_TAG_DP = 15;
literal KA660$M_TAG_TAG = 536869888;
literal KA660$M_TAG_VALID = 1073741824;
literal KA660$M_TAG_PARITY = -2147483648;
literal KA660$S_KA660_TAG = 4;
macro KA660$V_TAG_DP = 0,0,4,0 %;
literal KA660$S_TAG_DP = 4;
macro KA660$V_TAG_TAG = 0,10,19,0 %;
literal KA660$S_TAG_TAG = 19;
macro KA660$V_TAG_VALID = 0,30,1,0 %;
macro KA660$V_TAG_PARITY = 0,31,1,0 %;
literal KA660$M_BEHR_ENABLE = 255;
literal KA660$M_BEHR_HIT = 65280;
literal KA660$S_KA660_BEHR = 4;
macro KA660$V_BEHR_ENABLE = 0,0,8,0 %;
literal KA660$S_BEHR_ENABLE = 8;
macro KA660$V_BEHR_HIT = 0,8,8,0 %;
literal KA660$S_BEHR_HIT = 8;
 
!*** MODULE $KA670DEF ***
literal KA670$W_QDSS = 256;
literal KA670$W_IPCR0 = 320;
literal KA670$W_IPCR1 = 322;
literal KA670$W_IPCR2 = 324;
literal KA670$W_IPCR3 = 326;
literal KA670$L_SCR = 512;
literal KA670$L_DSER = 516;
literal KA670$L_QBEAR = 520;
literal KA670$L_DEAR = 524;
literal KA670$L_QBMBR = 528;
literal KA670$L_MEMCON = 768;
literal KA670$L_MEMSIG = 832;
literal KA670$L_RMESR = 896;
literal KA670$L_RMEAR = 900;
literal KA670$L_RIOEAR = 904;
literal KA670$L_CEAR = 908;
literal KA670$L_MCDSR = 912;
literal KA670$L_BDR = 1024;
literal KA670$L_QMAP = 1536;
literal KA670$L_SSCBR = 34304;
literal KA670$L_SSCCR = 34320;
literal KA670$L_CBTCR = 34336;
literal KA670$L_DLEDR = 34352;
literal KA670$L_TCR0 = 34560;
literal KA670$L_TIR0 = 34564;
literal KA670$L_TNIR0 = 34568;
literal KA670$L_TIVR0 = 34572;
literal KA670$L_TCR1 = 34576;
literal KA670$L_TIR1 = 34580;
literal KA670$L_TNIR1 = 34584;
literal KA670$L_TIVR1 = 34588;
literal KA670$B_NVR = 34816;
literal KA670$B_ROM = 35840;
literal KA670$L_SSHMA = 35880;
literal KA670$S_KA670DEF = 297984;
literal KA670$_SHAC_PMCSR = 92;
literal KA670$_SHAC_M_MIN = 1;
literal KA670$_SGEC_MODE = 24;
literal KA670$_SGEC_M_RESET = -2147483648;
literal KA670$M_IPCR_DBI_RQ = 1;
literal KA670$M_IPCR_LM_EAE = 32;
literal KA670$M_IPCR_DBI_IE = 64;
literal KA670$M_IPCR_AUX_HLT = 256;
literal KA670$M_IPCR_QMCIA = 16384;
literal KA670$M_IPCR_DMA_QME = 32768;
literal KA670$S_KA670_IPCR = 2;
macro KA670$V_IPCR_DBI_RQ = 0,0,1,0 %;
macro KA670$V_IPCR_LM_EAE = 0,5,1,0 %;
macro KA670$V_IPCR_DBI_IE = 0,6,1,0 %;
macro KA670$V_IPCR_AUX_HLT = 0,8,1,0 %;
macro KA670$V_IPCR_QMCIA = 0,14,1,0 %;
macro KA670$V_IPCR_DMA_QME = 0,15,1,0 %;
literal KA670$S_KA670_SIDEX = 4;
macro KA670$B_SIDEX_NUM_USER = 0,0,8,0 %;
macro KA670$B_SIDEX_SUB_TYPE = 1,0,8,0 %;
macro KA670$B_SIDEX_ROM_VERS = 2,0,8,0 %;
macro KA670$B_SIDEX_SYS_CODE = 3,0,8,0 %;
literal KA670$M_SCR_DOS = 14;
literal KA670$M_SCR_DCOK_HLT = 128;
literal KA670$M_SCR_AUX = 1024;
literal KA670$M_SCR_PPD = 4096;
literal KA670$M_SCR_BHE = 16384;
literal KA670$M_SCR_POK = 32768;
literal KA670$S_KA670_SCR = 4;
macro KA670$V_SCR_DOS = 0,1,3,0 %;
literal KA670$S_SCR_DOS = 3;
macro KA670$V_SCR_DCOK_HLT = 0,7,1,0 %;
macro KA670$V_SCR_AUX = 0,10,1,0 %;
macro KA670$V_SCR_PPD = 0,12,1,0 %;
macro KA670$V_SCR_BHE = 0,14,1,0 %;
macro KA670$V_SCR_POK = 0,15,1,0 %;
literal KA670$M_DSER_NXM = 1;
literal KA670$M_DSER_NG = 4;
literal KA670$M_DSER_LE = 8;
literal KA670$M_DSER_MME = 16;
literal KA670$M_DSER_PE = 32;
literal KA670$M_DSER_QNXM = 128;
literal KA670$M_DSER_DCOK = 16384;
literal KA670$M_DSER_BHALT = 32768;
literal KA670$S_KA670_DSER = 4;
macro KA670$V_DSER_NXM = 0,0,1,0 %;
macro KA670$V_DSER_NG = 0,2,1,0 %;
macro KA670$V_DSER_LE = 0,3,1,0 %;
macro KA670$V_DSER_MME = 0,4,1,0 %;
macro KA670$V_DSER_PE = 0,5,1,0 %;
macro KA670$V_DSER_QNXM = 0,7,1,0 %;
macro KA670$V_DSER_DCOK = 0,14,1,0 %;
macro KA670$V_DSER_BHALT = 0,15,1,0 %;
literal KA670$M_QBEAR_ADDR = 8191;
literal KA670$S_KA670_QBEAR = 4;
macro KA670$V_QBEAR_ADDR = 0,0,13,0 %;
literal KA670$S_QBEAR_ADDR = 13;
literal KA670$M_DEAR_ADDR = 8191;
literal KA670$S_KA670_DEAR = 4;
macro KA670$V_DEAR_ADDR = 0,0,13,0 %;
literal KA670$S_DEAR_ADDR = 13;
literal KA670$K_MEMCON_1MB = 1;
literal KA670$K_MEMCON_4MB = 2;
literal KA670$M_MEMCON_SIG = 6;
literal KA670$M_MEMCON_BASE = 528482304;
literal KA670$M_MEMCON_VALID = -2147483648;
literal KA670$S_KA670_MEMCON = 4;
macro KA670$V_MEMCON_SIG = 0,1,2,0 %;
literal KA670$S_MEMCON_SIG = 2;
macro KA670$V_MEMCON_BASE = 0,23,6,0 %;
literal KA670$S_MEMCON_BASE = 6;
macro KA670$V_MEMCON_VALID = 0,31,1,0 %;
literal KA670$M_RMESR_RSYND = 127;
literal KA670$M_RMESR_RLSME = 128;
literal KA670$M_RMESR_RLHME = 256;
literal KA670$M_RMESR_RSME = 512;
literal KA670$M_RMESR_RHME = 1024;
literal KA670$M_RMESR_RBPE = 2048;
literal KA670$M_RMESR_RNXM = 4096;
literal KA670$M_RMESR_RLIOE = 8192;
literal KA670$M_RMESR_RIOE = 16384;
literal KA670$M_RMESR_RNXIO = 32768;
literal KA670$M_RMESR_CSYND = 8323072;
literal KA670$M_RMESR_CLSME = 8388608;
literal KA670$M_RMESR_CLHME = 16777216;
literal KA670$M_RMESR_CSME = 33554432;
literal KA670$M_RMESR_CHME = 67108864;
literal KA670$M_RMESR_CBPE = 134217728;
literal KA670$M_RMESR_ERROR = -2147483648;
literal KA670$S_KA670_RMESR = 4;
macro KA670$V_RMESR_RSYND = 0,0,7,0 %;
literal KA670$S_RMESR_RSYND = 7;
macro KA670$V_RMESR_RLSME = 0,7,1,0 %;
macro KA670$V_RMESR_RLHME = 0,8,1,0 %;
macro KA670$V_RMESR_RSME = 0,9,1,0 %;
macro KA670$V_RMESR_RHME = 0,10,1,0 %;
macro KA670$V_RMESR_RBPE = 0,11,1,0 %;
macro KA670$V_RMESR_RNXM = 0,12,1,0 %;
macro KA670$V_RMESR_RLIOE = 0,13,1,0 %;
macro KA670$V_RMESR_RIOE = 0,14,1,0 %;
macro KA670$V_RMESR_RNXIO = 0,15,1,0 %;
macro KA670$V_RMESR_CSYND = 0,16,7,0 %;
literal KA670$S_RMESR_CSYND = 7;
macro KA670$V_RMESR_CLSME = 0,23,1,0 %;
macro KA670$V_RMESR_CLHME = 0,24,1,0 %;
macro KA670$V_RMESR_CSME = 0,25,1,0 %;
macro KA670$V_RMESR_CHME = 0,26,1,0 %;
macro KA670$V_RMESR_CBPE = 0,27,1,0 %;
macro KA670$V_RMESR_ERROR = 0,31,1,0 %;
literal KA670$M_MCDSR_FRR = 1;
literal KA670$M_MCDSR_DR = 2;
literal KA670$M_MCDSR_FCO = 4;
literal KA670$M_MCDSR_FWP = 8;
literal KA670$M_MCDSR_FWBH = 16;
literal KA670$M_MCDSR_FWB = 32;
literal KA670$M_MCDSR_DPM = 64;
literal KA670$M_MCDSR_DMED = 128;
literal KA670$M_MCDSR_RR = 256;
literal KA670$K_MCDSR_42US = 0;
literal KA670$K_MCDSR_32US = 1;
literal KA670$K_MCDSR_12US = 2;
literal KA670$K_MCDSR_2US = 3;
literal KA670$M_MCDSR_EPR_TP = 1536;
literal KA670$M_MCDSR_ESEL = 2048;
literal KA670$M_MCDSR_TCS = 4096;
literal KA670$M_MCDSR_CRS = 8192;
literal KA670$M_MCDSR_FSP = 16384;
literal KA670$M_MCDSR_FDTM = 32768;
literal KA670$M_MCDSR_MDCB = 8323072;
literal KA670$M_MCDSR_MCB = 1065353216;
literal KA670$M_MCDSR_DCBM = -2147483648;
literal KA670$S_KA670_MCDSR = 4;
macro KA670$V_MCDSR_FRR = 0,0,1,0 %;
macro KA670$V_MCDSR_DR = 0,1,1,0 %;
macro KA670$V_MCDSR_FCO = 0,2,1,0 %;
macro KA670$V_MCDSR_FWP = 0,3,1,0 %;
macro KA670$V_MCDSR_FWBH = 0,4,1,0 %;
macro KA670$V_MCDSR_FWB = 0,5,1,0 %;
macro KA670$V_MCDSR_DPM = 0,6,1,0 %;
macro KA670$V_MCDSR_DMED = 0,7,1,0 %;
macro KA670$V_MCDSR_RR = 0,8,1,0 %;
macro KA670$V_MCDSR_EPR_TP = 0,9,2,0 %;
literal KA670$S_MCDSR_EPR_TP = 2;
macro KA670$V_MCDSR_ESEL = 0,11,1,0 %;
macro KA670$V_MCDSR_TCS = 0,12,1,0 %;
macro KA670$V_MCDSR_CRS = 0,13,1,0 %;
macro KA670$V_MCDSR_FSP = 0,14,1,0 %;
macro KA670$V_MCDSR_FDTM = 0,15,1,0 %;
macro KA670$V_MCDSR_MDCB = 0,16,7,0 %;
literal KA670$S_MCDSR_MDCB = 7;
macro KA670$V_MCDSR_MCB = 0,23,7,0 %;
literal KA670$S_MCDSR_MCB = 7;
macro KA670$V_MCDSR_DCBM = 0,31,1,0 %;
literal KA670$M_BDR_BDG_CD = 3;
literal KA670$M_BDR_BRS_CD = 112;
literal KA670$M_BDR_HLT_ENB = 128;
literal KA670$M_BDR_SA_ROM = 65280;
literal KA670$M_BDR_DSSI2 = 458752;
literal KA670$M_BDR_FILL2 = 16252928;
literal KA670$M_BDR_DSSI1 = 117440512;
literal KA670$M_BDR_FILL3 = 939524096;
literal KA670$M_BDR_CBL_OK = 1073741824;
literal KA670$M_BDR_ETHER_BOOT = -2147483648;
literal KA670$S_KA670_BDR = 4;
macro KA670$V_BDR_BDG_CD = 0,0,2,0 %;
literal KA670$S_BDR_BDG_CD = 2;
macro KA670$V_BDR_BRS_CD = 0,4,3,0 %;
literal KA670$S_BDR_BRS_CD = 3;
macro KA670$V_BDR_HLT_ENB = 0,7,1,0 %;
macro KA670$V_BDR_SA_ROM = 0,8,8,0 %;
literal KA670$S_BDR_SA_ROM = 8;
macro KA670$V_BDR_DSSI2 = 0,16,3,0 %;
literal KA670$S_BDR_DSSI2 = 3;
macro KA670$V_BDR_FILL2 = 0,19,5,0 %;
literal KA670$S_BDR_FILL2 = 5;
macro KA670$V_BDR_DSSI1 = 0,24,3,0 %;
literal KA670$S_BDR_DSSI1 = 3;
macro KA670$V_BDR_FILL3 = 0,27,3,0 %;
literal KA670$S_BDR_FILL3 = 3;
macro KA670$V_BDR_CBL_OK = 0,30,1,0 %;
macro KA670$V_BDR_ETHER_BOOT = 0,31,1,0 %;
literal KA670$M_DLEDR_DSPL = 15;
literal KA670$S_KA670_DLEDR = 4;
macro KA670$V_DLEDR_DSPL = 0,0,4,0 %;
literal KA670$S_DLEDR_DSPL = 4;
literal KA670$M_TCR_RUN = 1;
literal KA670$M_TCR_STP = 4;
literal KA670$M_TCR_XFR = 16;
literal KA670$M_TCR_SGL = 32;
literal KA670$M_TCR_IE = 64;
literal KA670$M_TCR_INT = 128;
literal KA670$M_TCR_ERR = -2147483648;
literal KA670$S_KA670_TCR = 4;
macro KA670$V_TCR_RUN = 0,0,1,0 %;
macro KA670$V_TCR_STP = 0,2,1,0 %;
macro KA670$V_TCR_XFR = 0,4,1,0 %;
macro KA670$V_TCR_SGL = 0,5,1,0 %;
macro KA670$V_TCR_IE = 0,6,1,0 %;
macro KA670$V_TCR_INT = 0,7,1,0 %;
macro KA670$V_TCR_ERR = 0,31,1,0 %;
literal KA670$M_TIVR_VEC = 1020;
literal KA670$S_KA670_TIVR = 4;
macro KA670$V_TIVR_VEC = 0,2,8,0 %;
literal KA670$S_TIVR_VEC = 8;
literal KA670$K_RS_RB_HLT = 0;
literal KA670$K_RS_HLT = 1;
literal KA670$K_RB_HLT = 2;
literal KA670$K_HLT = 3;
literal KA670$M_HALT_ACTION = 3;
literal KA670$M_BIP = 4;
literal KA670$M_RIP = 8;
literal KA670$M_LANGUAGE = 240;
literal KA670$M_INSERT = 256;
literal KA670$M_CRT = 512;
literal KA670$M_MCS = 1024;
literal KA670$M_DIP = 2048;
literal KA670$M_MOP_ENB = 4096;
literal KA670$K_TTY = 0;
literal KA670$K_QVSS = 1;
literal KA670$K_QDSS = 2;
literal KA670$M_VIDEO_DEV = 57344;
literal KA670$S_KA670_NVR = 2;
macro KA670$V_HALT_ACTION = 0,0,2,0 %;
literal KA670$S_HALT_ACTION = 2;
macro KA670$V_BIP = 0,2,1,0 %;
macro KA670$V_RIP = 0,3,1,0 %;
macro KA670$V_LANGUAGE = 0,4,4,0 %;
literal KA670$S_LANGUAGE = 4;
macro KA670$V_INSERT = 0,8,1,0 %;
macro KA670$V_CRT = 0,9,1,0 %;
macro KA670$V_MCS = 0,10,1,0 %;
macro KA670$V_DIP = 0,11,1,0 %;
macro KA670$V_MOP_ENB = 0,12,1,0 %;
macro KA670$V_VIDEO_DEV = 0,13,3,0 %;
literal KA670$S_VIDEO_DEV = 3;
 
!*** MODULE $KA810DEF ***
! +
!  KA810 Offset Definitions for Registers Accessible Through BI Node Private
!   Space.  Note that in making these registers available in virtual space,
!   we have only mapped real registers.  Therefore these virtual offsets are
!   different than the hardware physical offsets.
! -
literal KA810$M_PCNTL_CRD = 1;
literal KA810$M_PCNTL_CLR_CRD = 2;
literal KA810$M_PCNTL_CRD_IE = 4;
literal KA810$M_PCNTL_IP = 8;
literal KA810$M_PCNTL_CLR_IP = 16;
literal KA810$M_PCNTL_RX50_INT = 32;
literal KA810$M_PCNTL_CLR_RX50INT = 64;
literal KA810$M_PCNTL_RX50_IE = 128;
literal KA810$M_PCNTL_RXCD = 256;
literal KA810$M_PCNTL_CLR_RXCD = 512;
literal KA810$M_PCNTL_RXCD_IE = 1024;
literal KA810$M_PCNTL_CSR_11 = 2048;
literal KA810$M_PCNTL_TMO = 4096;
literal KA810$M_PCNTL_ENB_PIPE = 8192;
literal KA810$M_PCNTL_PAR_ERR = 16384;
literal KA810$M_PCNTL_WWPO = 32768;
literal KA810$M_PCNTL_EV0 = 65536;
literal KA810$M_PCNTL_EV1 = 131072;
literal KA810$M_PCNTL_EV2 = 262144;
literal KA810$M_PCNTL_EV3 = 524288;
literal KA810$M_PCNTL_EV4 = 1048576;
literal KA810$M_PCNTL_WRT_MEM = 2097152;
literal KA810$M_PCNTL_EV_LOCK = 4194304;
literal KA810$M_PCNTL_WWPE = 8388608;
literal KA810$M_PCNTL_RUN = 16777216;
literal KA810$M_PCNTL_STST_PASS = 33554432;
literal KA810$M_PCNTL_ENB_APT = 67108864;
literal KA810$M_PCNTL_STST_FAST = 134217728;
literal KA810$M_PCNTL_BI_RESET = 268435456;
literal KA810$M_PCNTL_CSL_ENB = 536870912;
literal KA810$M_PCNTL_CSL_LOG = 1073741824;
literal KA810$M_PCNTL_RSTRT_HALT = -2147483648;
literal KA810$M_EEPROM_SECOND = 1;
literal KA810$M_EEPROM_PATCH = 2046;
literal KA810$M_EEPROM_CPU = 63488;
literal KA810$M_EEPROM_DISABLE = 16;
literal KA810$M_EEPROM_FCHIP = 1;
literal KA810$M_EEPROM_BTB = 2;
literal KA810$M_EEPROM_CACHE = 4;
literal KA810$S_KA810DEF = 52224;
! 
!  BIIC registers - here we reserve space for the 256 bytes that these
! 		    registers occupy and we also fill out the virtual page to
! 		    512 bytes so that other items appear on page boundaries.
! 		    Being able to address the BIIC via these virtual addresses
! 		    allows a Scorpio CPU to determine its own node number.
! 		    That is, a reference here is via node private space and
! 		    always addresses a nodes own registers via a loop back
! 		    request.
!                               
macro KA810$B_BIICBASE = 0,0,8,0 %;     ! BIIC register Base
! 
!  Port Control CSR register
! 
macro KA810$L_PCNTL = 512,0,32,0 %;     ! Port Control CSR Register
macro KA810$V_PCNTL_CRD = 512,0,1,0 %;  !  RO bit set when CRD status rcvd
!   and CRD Interrupt Enabled.
macro KA810$V_PCNTL_CLR_CRD = 512,1,1,0 %; !  W1C bit to clear CRD interrupt.
macro KA810$V_PCNTL_CRD_IE = 512,2,1,0 %; !  R/W bit to enable CRD interrupts.
macro KA810$V_PCNTL_IP = 512,3,1,0 %;   !  RO bit set when Inter-Processor
!   INTR rcvd.
macro KA810$V_PCNTL_CLR_IP = 512,4,1,0 %; !  W1C bit to clear IP Interrupt.
macro KA810$V_PCNTL_RX50_INT = 512,5,1,0 %; !  RO bit set when RX50 interrupt
!   requested.
macro KA810$V_PCNTL_CLR_RX50INT = 512,6,1,0 %;
!  W1C bit to clear RX50 interrupt.
macro KA810$V_PCNTL_RX50_IE = 512,7,1,0 %; !  R/W bit to enable RX50 interrupts
macro KA810$V_PCNTL_RXCD = 512,8,1,0 %; !  RO bit set when RXCD data rcvd.
macro KA810$V_PCNTL_CLR_RXCD = 512,9,1,0 %; !  W1C bit to clear above bit.
macro KA810$V_PCNTL_RXCD_IE = 512,10,1,0 %; !  R/W bit to enable RXCD interrupts
macro KA810$V_PCNTL_CSR_11 = 512,11,1,0 %; !  ?
macro KA810$V_PCNTL_TMO = 512,12,1,0 %; !  R,W1C bit set when PCNTL times
!   out.
macro KA810$V_PCNTL_ENB_PIPE = 512,13,1,0 %; !  R/W bit. 0=> no pipeline writes.
macro KA810$V_PCNTL_PAR_ERR = 512,14,1,0 %; !  R,W1C bit. Signals cache or BTB
!   parity
macro KA810$V_PCNTL_WWPO = 512,15,1,0 %; !  R/W bit. Write Wrong Parity Odd.
macro KA810$V_PCNTL_EV0 = 512,16,1,0 %; !  BI Event Code bits
macro KA810$V_PCNTL_EV1 = 512,17,1,0 %; !  "    "    "    "
macro KA810$V_PCNTL_EV2 = 512,18,1,0 %; !  "    "    "    "
macro KA810$V_PCNTL_EV3 = 512,19,1,0 %; !  "    "    "    "
macro KA810$V_PCNTL_EV4 = 512,20,1,0 %; !  "    "    "    "
macro KA810$V_PCNTL_WRT_MEM = 512,21,1,0 %; !  RO bit. Indicates EV code due
!   to write to memory space.
macro KA810$V_PCNTL_EV_LOCK = 512,22,1,0 %; !  R,W1C bit. Set when BI Event
!   code and Write Memory bits
!   locked in CSR as result of
!   master port error.
macro KA810$V_PCNTL_WWPE = 512,23,1,0 %; !  R/W bit. Write Wrong Parity Even.
macro KA810$V_PCNTL_RUN = 512,24,1,0 %; !  R/W controlled by ucode.
macro KA810$V_PCNTL_STST_PASS = 512,25,1,0 %; !  Self Test passed.
macro KA810$V_PCNTL_ENB_APT = 512,26,1,0 %; !  ?
macro KA810$V_PCNTL_STST_FAST = 512,27,1,0 %; !  RO Self Test Fast. (NOT fast = 1)
macro KA810$V_PCNTL_BI_RESET = 512,28,1,0 %; ! 
macro KA810$V_PCNTL_CSL_ENB = 512,29,1,0 %; !  RO Enable=1(From console switch)
macro KA810$V_PCNTL_CSL_LOG = 512,30,1,0 %; !  RO Logical=1(From console switch)
macro KA810$V_PCNTL_RSTRT_HALT = 512,31,1,0 %; !  RO Halt=1(From console switch)
! 
!  NI Packet Buffer
! 
macro KA810$B_NIBUF = 1024,0,8,0 %;     ! NI Packet Buffer Base
! 
!  EEPROM - The KA810 contains a 2k x 8 EEPROM.  The physical address
!  	    bit <0> is not used in addressing the EEPROM.  Consequently,
! 	    the first byte is addressed at 2009 8000(hex), the second
! 	    byte at 2009 8002(hex) and so on.
! 
macro KA810$B_EEPROM = 33792,0,8,0 %;   ! EEPROM Base
macro KA810$B_EEPROM_CONSTANT_FF = 33792,0,8,0 %; ! FF Constant
macro KA810$B_EEPROM_CONSTANT_55 = 33794,0,8,0 %; ! 55 Constant
macro KA810$B_EEPROM_WATCH_TIMER = 34112,0,32,1 %;
literal KA810$S_EEPROM_WATCH_TIMER = 4; ! Watch Dog timer constant
macro KA810$B_EEPROM_CONSTANT_AA = 34132,0,8,0 %; ! AA constant
macro KA810$B_EEPROM_BI_SELFTEST = 34136,0,32,1 %;
literal KA810$S_EEPROM_BI_SELFTEST = 4; ! BI selftest timeout constant
macro KA810$W_EEPROM_DEVTYPE = 34152,0,16,0 %; ! BI device type for module
macro KA810$W_EEPROM_REV = 34156,0,16,0 %; ! BI Rev level for module
macro KA810$V_EEPROM_SECOND = 34156,0,1,0 %; ! secondary patches not needed
macro KA810$V_EEPROM_PATCH = 34156,1,10,0 %;
literal KA810$S_EEPROM_PATCH = 10;      ! patch rev
macro KA810$V_EEPROM_CPU = 34156,11,5,0 %;
literal KA810$S_EEPROM_CPU = 5;         ! cpu rev
macro KA810$B_EEPROM_RXC50 = 34166,0,8,0 %; ! RCX50 disable
macro KA810$V_EEPROM_DISABLE = 34166,4,1,0 %; !  
macro KA810$B_EEPROM_LOG_CONSOLE = 34168,0,8,0 %; ! Logical console BI number
macro KA810$B_EEPROM_BAUD_RATE = 34172,0,8,0 %; ! UART0 baud rate
macro KA810$B_EEPROM_FCHIP = 34174,0,8,0 %;
macro KA810$V_EEPROM_FCHIP = 34174,0,1,0 %; ! Set, Fchip disabled
macro KA810$V_EEPROM_BTB = 34174,1,1,0 %; ! Set, BTB disabled
macro KA810$V_EEPROM_CACHE = 34174,2,1,0 %; ! Set, Cache disabled
! 
!  NI Data Register
! 
macro KA810$L_NIDATA = 50176,0,32,0 %;  !  NI Data Register
! 
!  NI Address Register
! 
macro KA810$L_NIADDR = 50688,0,32,0 %;  !  NI Address Register
! 
!  RCX50 Registers
! 
macro KA810$B_RCX50 = 51200,0,8,0 %;    !  RCX50 Registers
! 
!  Watch Chip Registers
! 
macro KA810$B_WATCH = 51712,0,8,0 %;    !  Watch Chip Registers
 
!*** MODULE $KDZDEF ***
! +
!  KDZ11 Offset Definitions for Registers Accessible Through BI Node Private
!   Space.  Note that in making these registers available in virtual space,
!   we have only mapped real registers.  Therefore these virtual offsets are
!   different than the hardware physical offsets.
! -
literal KDZ$M_PCNTL_RSTRT = 1;
literal KDZ$M_PCNTL_PHYLOG = 2;
literal KDZ$M_PCNTL_SECENB = 4;
literal KDZ$M_PCNTL_STINIT = 8;
literal KDZ$M_PCNTL_STFAST = 16;
literal KDZ$M_PCNTL_ENBAPT = 32;
literal KDZ$M_PCNTL_STPASS = 64;
literal KDZ$M_PCNTL_RUN = 128;
literal KDZ$M_PCNTL_CLREVL = 512;
literal KDZ$M_PCNTL_WRMEM = 1024;
literal KDZ$M_PCNTL_EV4 = 2048;
literal KDZ$M_PCNTL_EV3 = 4096;
literal KDZ$M_PCNTL_EV2 = 8192;
literal KDZ$M_PCNTL_EV1 = 16384;
literal KDZ$M_PCNTL_EV0 = 32768;
literal KDZ$M_PCNTL_WWPO = 65536;
literal KDZ$M_PCNTL_NIDIS = 524288;
literal KDZ$M_PCNTL_CNSLIE = 1048576;
literal KDZ$M_PCNTL_CNSLCL = 2097152;
literal KDZ$M_PCNTL_CNSLIN = 4194304;
literal KDZ$M_PCNTL_WWPE = 8388608;
literal KDZ$M_PCNTL_RXDONE = 16777216;
literal KDZ$M_PCNTL_RXSTAT = 33554432;
literal KDZ$M_PCNTL_CLRIPI = 67108864;
literal KDZ$M_PCNTL_IPINTR = 134217728;
literal KDZ$M_PCNTL_CRDIE = 268435456;
literal KDZ$M_PCNTL_CLRCRD = 536870912;
literal KDZ$M_PCNTL_CRDINT = 1073741824;
literal KDZ$S_KDZDEF = 44032;
! 
!  BIIC registers - here we reserve space for the 256 bytes that these
! 		    registers occupy and we also fill out the virtual page to
! 		    512 bytes so that other items appear on page boundaries.
! 		    Being able to address the BIIC via these virtual addresses
! 		    allows a Scorpio CPU to determine its own node number.
! 		    That is, a reference here is via node private space and
! 		    always addresses a nodes own registers via a loop back
! 		    request.
! 
macro KDZ$B_BIICBASE = 0,0,8,0 %;       ! BIIC register Base
! 
!  Port Control CSR register
! 
macro KDZ$L_PCNTL = 512,0,32,0 %;       ! Port Control CSR Register
macro KDZ$V_PCNTL_RSTRT = 512,0,1,0 %;  !  (RO) Front Panel Switch
!   selecting RSTRT/HALT
macro KDZ$V_PCNTL_PHYLOG = 512,1,1,0 %; !  (RO) Backplane Bit
!   selecting PHYS/LOG Console
macro KDZ$V_PCNTL_SECENB = 512,2,1,0 %; !  (RO) Front Panel Switch
!   to lock out console input
macro KDZ$V_PCNTL_STINIT = 512,3,1,0 %; !  Self-Test INIT.
macro KDZ$V_PCNTL_STFAST = 512,4,1,0 %; !  (RO) Backplane bit to
!   select Fast Self-Test.
macro KDZ$V_PCNTL_ENBAPT = 512,5,1,0 %; !  Enable APT.
macro KDZ$V_PCNTL_STPASS = 512,6,1,0 %; !  Self-Test Pass.
macro KDZ$V_PCNTL_RUN = 512,7,1,0 %;    !  1=>Program mode,0=>Console
macro KDZ$V_PCNTL_CLREVL = 512,9,1,0 %; !  Clear Event Lock
macro KDZ$V_PCNTL_WRMEM = 512,10,1,0 %; !  Write Memory Bit
macro KDZ$V_PCNTL_EV4 = 512,11,1,0 %;   !  Event Bits - These
macro KDZ$V_PCNTL_EV3 = 512,12,1,0 %;   !   RO bits are event
macro KDZ$V_PCNTL_EV2 = 512,13,1,0 %;   !   codes from BIIC to
macro KDZ$V_PCNTL_EV1 = 512,14,1,0 %;   !   allow CPU to monitor
macro KDZ$V_PCNTL_EV0 = 512,15,1,0 %;   !   BI status
macro KDZ$V_PCNTL_WWPO = 512,16,1,0 %;  !  Write Wrong Parity Odd
macro KDZ$V_PCNTL_NIDIS = 512,19,1,0 %; !  Disable NI Lance
macro KDZ$V_PCNTL_CNSLIE = 512,20,1,0 %; !  Console Interrupt Enable
macro KDZ$V_PCNTL_CNSLCL = 512,21,1,0 %; !  Clear Console Interrupt
macro KDZ$V_PCNTL_CNSLIN = 512,22,1,0 %; !  Console Interrupt RCVD
macro KDZ$V_PCNTL_WWPE = 512,23,1,0 %;  !  Write Wrong Parity Even
macro KDZ$V_PCNTL_RXDONE = 512,24,1,0 %; !  RX Done Interrupt
macro KDZ$V_PCNTL_RXSTAT = 512,25,1,0 %; !  RX Status Interrupt
macro KDZ$V_PCNTL_CLRIPI = 512,26,1,0 %; !  Clear IP Interrupt
macro KDZ$V_PCNTL_IPINTR = 512,27,1,0 %; !  IP Interrupt RCVD
macro KDZ$V_PCNTL_CRDIE = 512,28,1,0 %; !  CRD Interrupt Enable
macro KDZ$V_PCNTL_CLRCRD = 512,29,1,0 %; !  Clear CRD Interrupt
macro KDZ$V_PCNTL_CRDINT = 512,30,1,0 %; !  CRD Interrupt RCVD
! 
!  NI Packet Buffer
! 
macro KDZ$B_NIBUF = 1024,0,8,0 %;       ! NI Packet Buffer Base
! 
!  EEPROM
! 
macro KDZ$B_EEPROM = 33792,0,8,0 %;     ! EEPROM Base
! 
!  NI Data Register
! 
macro KDZ$L_NIDATA = 41984,0,32,0 %;    !  NI Data Register
! 
!  NI Address Register
! 
macro KDZ$L_NIADDR = 42496,0,32,0 %;    !  NI Address Register
! 
!  RCX50 Registers
!                                                          
macro KDZ$B_RCX50 = 43008,0,8,0 %;      !  RCX50 Registers
! 
!  Watch Chip Registers
! 
macro KDZ$B_WATCH = 43520,0,8,0 %;      !  Watch Chip Registers
 
!*** MODULE $KFDDEF ***
! 
!  KNOWN FILE DEVICE AND DIRECTORY BLOCK DEFINITIONS
! 
literal KFD$C_LENGTH = 17;              !  Length of fixed area of kfd entry 
literal KFD$S_KFDDEF = 17;
macro KFD$L_LINK = 0,0,32,0 %;          !  Device, Directory, Extension (KFD) list link
macro KFD$L_KFELIST = 4,0,32,0 %;       !  Ordered Known file entry list header
macro KFD$W_SIZE = 8,0,16,0 %;          !  Size of block 
macro KFD$B_TYPE = 10,0,8,0 %;          !  Structure type 
macro KFD$B_SPARE = 11,0,8,0 %;         !  spare
macro KFD$W_REFCNT = 12,0,16,0 %;       !  Number of KFE's with same KFD
macro KFD$B_DEVLEN = 14,0,8,0 %;        !  Length of Device string
macro KFD$B_DIRLEN = 15,0,8,0 %;        !  Length of Directory string
macro KFD$B_DDTSTRLEN = 16,0,8,0 %;     !  Length of Device, Directory, Type (DDT) string
macro KFD$T_DDTSTR = 17,0,0,0 %;        !  Offset to DDT string
 
!*** MODULE $KFEDEF ***
! 
!  KNOWN FILE ENTRY DEFINITIONS
! 
literal KFE$M_PROTECT = 1;
literal KFE$M_LIM = 2;
literal KFE$M_PROCPRIV = 4;
literal KFE$M_OPEN = 8;
literal KFE$M_HDRRES = 16;
literal KFE$M_SHARED = 32;
literal KFE$M_SHMIDENT = 64;
literal KFE$M_COMPATMOD = 128;
literal KFE$M_NOPURGE = 256;
literal KFE$M_ACCOUNT = 512;
literal KFE$M_WRITEABLE = 1024;
literal KFE$M_EXEONLY = 2048;
literal KFE$K_LENGTH = 55;              !  Length of fixed area of KFE entry 
literal KFE$C_LENGTH = 55;              !  Length of fixed area of KFE entry 
literal KFE$K_MAXLEN = 94;              !  Max KFE length (includes max filename)
literal KFE$C_MAXLEN = 94;              !  Max KFE length (includes max filename)
literal KFE$S_KFEDEF = 55;
macro KFE$L_HSHLNK = 0,0,32,0 %;        !  Known file Hash table link 
macro KFE$L_KFELINK = 4,0,32,0 %;       !  Ordered Known file entry list link
macro KFE$W_SIZE = 8,0,16,0 %;          !  Size of block 
macro KFE$B_TYPE = 10,0,8,0 %;          !  Structure type 
macro KFE$B_HSHIDX = 11,0,8,0 %;        !  KFE hash table index (index into vector of HSHQ's) 
macro KFE$L_KFD = 12,0,32,0 %;          !  Device, Directory, Type block
macro KFE$R_FLAGS_OVERLAY = 16,0,16,0 %;
macro KFE$W_FLAGS = 16,0,16,0 %;        !  Flags word 
macro KFE$R_FLAGS_BITS = 16,0,16,0 %;
macro KFE$V_PROTECT = 16,0,1,0 %;       !  Known file was installed protected 
macro KFE$V_LIM = 16,1,1,0 %;           !  Linkable image 
macro KFE$V_PROCPRIV = 16,2,1,0 %;      !  Use process privilege mask 
macro KFE$V_OPEN = 16,3,1,0 %;          !  Image installed /OPEN
macro KFE$V_HDRRES = 16,4,1,0 %;        !  Image header block is resident 
macro KFE$V_SHARED = 16,5,1,0 %;        !  Image is shared 
macro KFE$V_SHMIDENT = 16,6,1,0 %;      !  Shared memory ident already set 
macro KFE$V_COMPATMOD = 16,7,1,0 %;     !  Image is compatability mode 
macro KFE$V_NOPURGE = 16,8,1,0 %;       !  Image entry may not be purged
macro KFE$V_ACCOUNT = 16,9,1,0 %;       !  Image level accounting
macro KFE$V_WRITEABLE = 16,10,1,0 %;    !  Global sections are writeable
macro KFE$V_EXEONLY = 16,11,1,0 %;      !  Image has only execute access allowed
macro KFE$W_GBLSECCNT = 18,0,16,0 %;    !  Global section count if shared 
macro KFE$L_USECNT = 20,0,32,0 %;       !  Usage counter 
macro KFE$R_WINDOW_OVERLAY = 24,0,32,0 %;
macro KFE$L_WCB = 24,0,32,0 %;          !  WCB address if open 
macro KFE$R_WINDOW_FIELDS = 24,0,32,0 %;
macro KFE$R_FID_OVERLAY = 24,0,16,0 %;
macro KFE$W_FID = 24,0,16,0 %;          !  File id 
macro KFE$W_FID_NUM = 24,0,16,0 %;      !  File number field of file id 
macro KFE$W_FID_SEQ = 26,0,16,0 %;      !  File sequence number field of file id 
macro KFE$R_IMGHDR_OVERLAY = 28,0,32,0 %;
macro KFE$L_IMGHDR = 28,0,32,0 %;       !  Image header address if resident 
macro KFE$W_FID_RVN = 28,0,16,0 %;      !  Relative volume number field of file id 
macro KFE$Q_PROCPRIV = 32,0,0,0 %;
literal KFE$S_PROCPRIV = 8;             !  Process privilege mask 
macro KFE$B_MATCHCTL = 40,0,8,0 %;      !  Global section match control 
macro KFE$W_AMECOD = 42,0,16,0 %;       !  Image header code specifying AME 
macro KFE$L_IDENT = 44,0,32,0 %;        !  Global section ident value 
macro KFE$L_ORB = 48,0,32,0 %;          !  Address of Object Rights Block
macro KFE$W_SHRCNT = 52,0,16,0 %;       !  High water mark for sharing
macro KFE$B_FILNAMLEN = 54,0,8,0 %;     !  Length of file name
macro KFE$T_FILNAM = 55,0,0,0 %;        !  Offset to file name
 
!*** MODULE $KFE52DEF ***
! 
!  CIRRUS CIO module related definitions
! 
literal KFE52RAM$M_REV = 2047;
literal KFE52RAM$M_SERIALNO = 4192256;
literal KFE52RAM$M_MODULEID = 62914560;
literal KFE52RAM$S_RAMDEF = 8;
macro KFE52RAM$L_MODDATA = 0,0,32,0 %;  !  
macro KFE52RAM$V_REV = 0,0,11,0 %;
literal KFE52RAM$S_REV = 11;            !  Module revision filed
macro KFE52RAM$V_SERIALNO = 0,11,11,0 %;
literal KFE52RAM$S_SERIALNO = 11;       !  Module serial number
macro KFE52RAM$V_MODULEID = 0,22,4,0 %;
literal KFE52RAM$S_MODULEID = 4;        !  Module id type
macro KFE52RAM$L_MODSTATUS = 4,0,32,0 %; !  Module status
literal KFE52RAM$K_MOD_GOOD = 179;      !  Good module status
literal KFE52RAM$K_MOD_BAD = 76;        !  Bad module status
literal KFE52RAM$L_TRDB = 13312;        !  Trace RAM data block
!  SLIM offsets and definitions
literal SLI520$M_TCA = 124;
literal SLI520$M_TESTPTRS = 128;
literal SLI520$M_DIAGMODE = 256;
literal SLI520$M_DMASEL = 1024;
literal SLI520$M_DISARB = 2048;
literal SLI520$S_SLIMDEF = 4;
macro SLI520$L_ICSR0 = 0,0,32,0 %;      !  II32 Control register
macro SLI520$V_TCA = 0,2,5,0 %;
literal SLI520$S_TCA = 5;               !  Trace RAM number
macro SLI520$V_TESTPTRS = 0,7,1,0 %;    !  Test pointers
macro SLI520$V_DIAGMODE = 0,8,1,0 %;    !  Diagnostic mode
macro SLI520$V_DMASEL = 0,10,1,0 %;     !  DMA select
macro SLI520$V_DISARB = 0,11,1,0 %;     !  Disable arbitration
!  FIREWALL offsets
literal FIR520$S_FIRDEF = 48;
macro FIR520$L_INTVEC0 = 0,0,32,0 %;    !  SWIFT
macro FIR520$L_INTVEC1 = 4,0,32,0 %;    !  LANCE
macro FIR520$L_INTVEC2 = 8,0,32,0 %;    !  Not used
macro FIR520$L_INTVEC3 = 12,0,32,0 %;   !  PCM
macro FIR520$L_UCCRVEC = 16,0,32,0 %;   !  UCCR (read only)
macro FIR520$L_DCCRVEC = 20,0,32,0 %;   !  DCCR (read only)
macro FIR520$L_WINVEC = 28,0,32,0 %;    !  Vector that has won interrupt arbitration
macro FIR520$L_IPL = 32,0,32,0 %;       !  IPL settings for INTVEC0 - INTVEC3 (Interrupt Level)
macro FIR520$L_IMR = 36,0,32,0 %;       !  Interrupt Mask Register
macro FIR520$L_ICS = 40,0,32,0 %;       !  Interrupt Control/Status register.
macro FIR520$L_PCMVEC = 44,0,32,0 %;    !  PCM
!  SCB offsets per section of the second page of the SCB. The second page
!  of the SCB is divided into 16 sections each of which correspond to
!  a slot (TR) number.
literal KA520SCB$S_CIRSCBDEF = 20;
macro KA520SCB$L_CONI = 0,0,32,0 %;     !  Console input
macro KA520SCB$L_CONO = 4,0,32,0 %;     !  Console output
macro KA520SCB$L_LANCE = 8,0,32,0 %;    !  LANCE
macro KA520SCB$L_SWIFT = 12,0,32,0 %;   !  SWIFT
macro KA520SCB$L_PCM = 16,0,32,0 %;     !  PCM
!  The physical byte offsets of various register from the beginning of a CIO
!  module.
literal KFE52$K_COMM_RAM = 0;           !  COMM RAM
literal KFE52$K_COMM_SIZE = 65536;      !  COMM RAM size
literal KFE52$K_SL_RAM = 65536;         !  SWIFT/LANCE RAM
literal KFE52$K_SL_SIZE = 196608;       !  SWIFT/LANCE RAM size
literal KFE52$K_LANCE_RAM = 65536;      !  LANCE RAM
literal KFE52$K_LANCE_SIZE = 65536;     !  LANCE RAM size
literal KFE52$K_SWIFT_RAM = 131072;     !  SWIFT RAM
literal KFE52$K_SWIFT_SIZE = 131072;    !  SWIFT RAM size
literal KFE52$K_ETH_ADR_ROM = 9043968;  !  Ethernet address ROM
literal KFE52$K_SSC_CSR = 9699328;      !  SSC CSR and RAM
literal KFE52$K_SSC_TOY_CLOCK = 9699436; !  SSC TOY clock
literal KFE52$K_FIREWALL = 10485760;    !  Firewall registers
literal KFE52$K_DMA_BCNT = 10489856;    !  DMA byte count
literal KFE52$K_DMA_STL = 10489860;     !  DMA sub transfer length
literal KFE52$K_DMA_STS = 10489864;     !  DMA status
literal KFE52$K_PCM_CSR = 10498048;     !  PCM CSR
literal KFE52$K_FW_CSR = 10502144;      !  Firewall CSR
literal KFE52$K_CONS_CSR = 10510336;    !  Console registers
literal KFE52$K_SLIM_CSR = 12582912;    !  SLIM CSR
literal KFE52$K_SWIFT_CSR = 12582976;   !  SWIFT CSR
literal KFE52$K_LANCE_CSR = 12583040;   !  LANCE CSR
!  CONSOLE REGISTER offsets and definitions
literal CON520$M_UTYP = 256;
literal CON520$M_UID = 3584;
literal CON520$M_UBRK = 4096;
literal CON520$M_UEIE = 8192;
literal CON520$M_UFIE = 16384;
literal CON520$M_UBSY = 32768;
literal CON520$M_DTYP = 256;
literal CON520$M_DID = 3584;
literal CON520$M_DEIE = 8192;
literal CON520$M_DFIE = 16384;
literal CON520$M_DBSY = 32768;
literal CON520$S_CONDEF = 8;
macro CON520$L_UCCR = 0,0,32,0 %;       !  UPWARD Console Communication Register
macro CON520$V_UDATA = 0,0,8,0 %;
literal CON520$S_UDATA = 8;             !  Data
macro CON520$V_UTYP = 0,8,1,0 %;        !  Type
macro CON520$V_UID = 0,9,3,0 %;
literal CON520$S_UID = 3;               !  ID
macro CON520$V_UBRK = 0,12,1,0 %;       !  CIO module Broken
macro CON520$V_UEIE = 0,13,1,0 %;       !  Empty Interrupt enable
macro CON520$V_UFIE = 0,14,1,0 %;       !  Full Interrupt enable
macro CON520$V_UBSY = 0,15,1,0 %;       !  Busy
macro CON520$L_DCCR = 4,0,32,0 %;       !  DOWNWARD Console Communication Register
macro CON520$V_DDATA = 4,0,8,0 %;
literal CON520$S_DDATA = 8;             !  Data
macro CON520$V_DTYP = 4,8,1,0 %;        !  Type
macro CON520$V_DID = 4,9,3,0 %;
literal CON520$S_DID = 3;               !  ID
macro CON520$V_DEIE = 4,13,1,0 %;       !  Empty interrupt enable
macro CON520$V_DFIE = 4,14,1,0 %;       !  Full Interrupt enable
macro CON520$V_DBSY = 4,15,1,0 %;       !  Busy
literal FWCSR520$M_TRACE_READ = 1;
literal FWCSR520$M_CPU_WRITE = 2;
literal FWCSR520$M_CPU_READ = 4;
literal FWCSR520$M_CPU_XCHK_ENA = 8;
literal FWCSR520$M_FW_LOCK = 16;
literal FWCSR520$M_II32_DRV = 32;
literal FWCSR520$M_DMR_ENA = 64;
literal FWCSR520$M_DIAG_MODE = 128;
literal FWCSR520$M_IO_XCHK_ERR = 256;
literal FWCSR520$M_DIAG_XCHK = 512;
literal FWCSR520$M_IO_XCHK_ENA = 1024;
literal FWCSR520$M_MBZ = 2048;
literal FWCSR520$M_RAIL_ID = 4096;
literal FWCSR520$M_SLOT_ID = 57344;
literal FWCSR520$S_FWCSRDEF = 4;
macro FWCSR520$L_FWCSR = 0,0,32,0 %;    !  Firewall Control register
macro FWCSR520$V_TRACE_READ = 0,0,1,0 %; !  Read Trace RAMs
macro FWCSR520$V_CPU_WRITE = 0,1,1,0 %; !  CVAX write downward console
macro FWCSR520$V_CPU_READ = 0,2,1,0 %;  !  CVAX read upward console
macro FWCSR520$V_CPU_XCHK_ENA = 0,3,1,0 %; !  CVAX crosscheck enable
macro FWCSR520$V_FW_LOCK = 0,4,1,0 %;   !  Firewall lock
macro FWCSR520$V_II32_DRV = 0,5,1,0 %;  !  1132(T) drive
macro FWCSR520$V_DMR_ENA = 0,6,1,0 %;   !  DMR enable
macro FWCSR520$V_DIAG_MODE = 0,7,1,0 %; !  Diagnostic mode
macro FWCSR520$V_IO_XCHK_ERR = 0,8,1,0 %; !  UVAX crosscheck error
macro FWCSR520$V_DIAG_XCHK = 0,9,1,0 %; !  Diagnostic crosscheck bit
macro FWCSR520$V_IO_XCHK_ENA = 0,10,1,0 %; !  UVAX crosscheck enable
macro FWCSR520$V_MBZ = 0,11,1,0 %;      !  Must be zero
macro FWCSR520$V_RAIL_ID = 0,12,1,0 %;  !  Rail ID
macro FWCSR520$V_SLOT_ID = 0,13,3,0 %;
literal FWCSR520$S_SLOT_ID = 3;         !  Slot ID
macro FWCSR520$V_UNUSED = 0,16,16,0 %;
literal FWCSR520$S_UNUSED = 16;         !  Unused
 
!*** MODULE $KFHDEF ***
! 
!  KNOWN FILE IMAGE HEADER DEFINITIONS	*** obsolete, to be removed ***
! 
literal KFH$K_LENGTH = 12;              ! LENGTH OF OVERHEAD AREA 
literal KFH$C_LENGTH = 12;              ! LENGTH OF OVERHEAD AREA 
! 
literal KFH$S_KFHDEF = 12;
macro KFH$L_BUFEND = 0,0,32,0 %;        ! ADDRESS OF END OF KNOWN FILE HEADER 
macro KFH$L_KFIADR = 4,0,32,0 %;        ! ADDRESS OF ASSOCIATED KNOWN FILE ENTRY 
macro KFH$W_SIZE = 8,0,16,0 %;          ! SIZE OF DYNAMIC STRUCTURE 
macro KFH$B_TYPE = 10,0,8,0 %;          ! DYNAMIC STRUCTURE TYPE 
!  THE REMAINDER OF THIS STRUCTURE CONTAINS THE IMAGE HEADER OF THE
!  SPECIFIED KNOWN FILE.  THE LOCATION KFI$L_IMGHDR IN THE KNOWN FILE
!  ENTRY POINTS KFH$C_LENGTH INTO THIS STRUCTURE, I.E AT THE IMAGE HEADER
!  ITSELF.
! 
 
!*** MODULE $KFIDEF ***
! 
!  KNOWN FILE ENTRY DEFINITIONS 	*** obsolete, to be removed ***
! 
literal KFI$M_KFIHD = 1;
literal KFI$M_FILIDOPEN = 2;
literal KFI$M_DONOTOPEN = 4;
literal KFI$M_NOREPLACE = 64;
literal KFI$M_MARKDEL = 128;
literal KFI$K_KFIHDLEN = 20;            ! LENGTH OF KFI HEADER FIXED PORTION 
literal KFI$C_KFIHDLEN = 20;            ! LENGTH OF KFI HEADER FIXED PORTION 
literal KFI$M_KFISEQ = 3;
literal KFI$M_KP_OPEN = 1;
literal KFI$M_KP_RESHDR = 2;
literal KFI$M_KP_SHARED = 4;
literal KFI$M_PROTECT = 8;
literal KFI$M_LIM = 64;
literal KFI$M_PROCPRIV = 128;
literal KFI$M_IS_RESHDR = 256;
literal KFI$M_IS_SHARED = 512;
literal KFI$M_SHMIDENT = 16384;
literal KFI$M_COMPATMOD = 32768;
literal KFI$K_LENGTH = 52;              ! LENGTH OF FIXED AREA OF KFI ENTRY 
literal KFI$C_LENGTH = 52;              ! LENGTH OF FIXED AREA OF KFI ENTRY 
literal KFI$S_KFIDEF = 52;
macro KFI$L_KFIQFL = 0,0,32,0 %;        ! KNOWN FILE QUEUE FORWARD LINK 
macro KFI$L_KFIQBL = 4,0,32,0 %;        ! KNOWN FILE QUEUE BACK LINK 
macro KFI$W_SIZE = 8,0,16,0 %;          ! SIZE OF BLOCK 
macro KFI$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE 
macro KFI$B_KFICTL = 11,0,8,0 %;        ! CONTROL BITS 
macro KFI$V_KFIHD = 11,0,1,0 %;         ! KNOWN FILE HEADER BLOCK 
macro KFI$V_FILIDOPEN = 11,1,1,0 %;     ! OPEN BY FILE ID IF SET 
macro KFI$V_DONOTOPEN = 11,2,1,0 %;     ! DO NOT OPEN THE FILE IF SET 
macro KFI$V_NOREPLACE = 11,6,1,0 %;     ! DELETE AND DO NOT REPLACE ENTRY 
macro KFI$V_MARKDEL = 11,7,1,0 %;       ! ENTRY IS TO BE DELETED 
macro KFI$B_DEVUCB = 12,0,8,0 %;        ! DEVICE UCB OFFSET 
macro KFI$B_DEVNAM = 12,0,8,0 %;        ! NAME THE ABOVE CONSISTENTLY 
macro KFI$B_DIRNAM = 13,0,8,0 %;        ! DIRECTORY NAME STRING OFFSET 
macro KFI$B_FILNAM = 14,0,8,0 %;        ! FILE NAME STRING OFFSET 
macro KFI$B_TYPNAM = 15,0,8,0 %;        ! FILE TYPE STRING OFFSET 
macro KFI$W_REFCNT = 16,0,16,0 %;       ! REFERENCE COUNT 
macro KFI$B_KFIQNUM = 18,0,8,0 %;       ! KFIQ NUMBER (INDEX INTO VECTOR OF KFIQ'S) 
macro KFI$B_KFISEQ = 19,0,8,0 %;        ! KNOWN FILE ENTRY SEQUENCE NUMBER 
macro KFI$V_KFISEQ = 19,0,2,0 %;
literal KFI$S_KFISEQ = 2;               ! SEQUENCE NUMBER FIELD 
macro KFI$W_FLAGS = 20,0,16,0 %;        ! FLAGS WORD 
macro KFI$V_KP_OPEN = 20,0,1,0 %;       ! KEEP THE IMAGE FILE OPEN 
macro KFI$V_KP_RESHDR = 20,1,1,0 %;     ! MAKE IMAGE HEADER RESIDENT 
macro KFI$V_KP_SHARED = 20,2,1,0 %;     ! MAKE IMAGE SHARED 
macro KFI$V_PROTECT = 20,3,1,0 %;       ! KNOWN FILE WAS INSTALLED PROTECTED 
macro KFI$V_LIM = 20,6,1,0 %;           ! LINKABLE IMAGE 
macro KFI$V_PROCPRIV = 20,7,1,0 %;      ! USE PROCESS PRIVILEGE MASK 
macro KFI$V_IS_RESHDR = 20,8,1,0 %;     ! IMAGE HEADER BLOCK IS RESIDENT 
macro KFI$V_IS_SHARED = 20,9,1,0 %;     ! IMAGE IS SHARED 
macro KFI$V_SHMIDENT = 20,14,1,0 %;     ! SHARED MEMORY IDENT ALREADY SET 
macro KFI$V_COMPATMOD = 20,15,1,0 %;    ! IMAGE IS COMPATABILITY MODE 
macro KFI$W_GBLSECCNT = 22,0,16,0 %;    ! GLOBAL SECTION COUNT IF SHARED 
macro KFI$L_USECNT = 24,0,32,0 %;       ! USAGE COUNTER 
macro KFI$L_WINDOW = 28,0,32,0 %;       ! WCB ADDRESS IF OPEN 
macro KFI$W_FID = 28,0,16,0 %;          ! FILE ID 
macro KFI$W_FID_NUM = 28,0,16,0 %;      ! FILE NUMBER FIELD OF FILE ID 
macro KFI$W_FID_SEQ = 30,0,16,0 %;      ! FILE SEQUENCE NUMBER FIELD OF FILE ID 
macro KFI$L_IMGHDR = 32,0,32,0 %;       ! IMAGE HEADER ADDRESS IF RESIDENT 
macro KFI$W_FID_RVN = 32,0,16,0 %;      ! RELATIVE VOLUME NUMBER FIELD OF FILE ID 
macro KFI$Q_PROCPRIV = 36,0,0,0 %;
literal KFI$S_PROCPRIV = 8;             ! PROCESS PRIVILEGE MASK 
macro KFI$B_MATCHCTL = 44,0,8,0 %;      ! GLOBAL SECTION MATCH CONTROL 
macro KFI$W_AMECOD = 46,0,16,0 %;       ! IMAGE HEADER CODE SPECIFYING AME 
macro KFI$L_IDENT = 48,0,32,0 %;        ! GLOBAL SECTION IDENT VALUE 
 
!*** MODULE $KFPDEF ***
! 
!  KNOWN FILE POINTER BLOCK DEFINITIONS 	*** obsolete, to be removed ***
! 
literal KFP$S_KFPDEF = 16;
macro KFP$B_QUECOUNT = 0,0,8,0 %;       ! INDEX OF LAST KNOWN FILE LIST IN USE 
macro KFP$W_SIZE = 8,0,16,0 %;          ! SIZE OF POINTER BLOCK IN BYTES 
macro KFP$B_TYPE = 10,0,8,0 %;          ! POINTER BLOCK TYPE 
macro KFP$B_TYPE1 = 11,0,8,0 %;         ! TYPE OF STRUCTURE POINTED TO 
macro KFP$L_QUE0 = 12,0,32,0 %;         ! POINTER TO KNOWN FILE QUEUE 0 
 
!*** MODULE $KFPBDEF ***
! 
!  KNOWN FILE POINTER BLOCK DEFINITIONS
! 
literal KFPB$K_LENGTH = 16;             !  Length of pointer block
literal KFPB$C_LENGTH = 16;             !  Length of pointer block
literal KFPB$S_KFPBDEF = 16;
macro KFPB$L_KFDLST = 0,0,32,0 %;       !  Device, Directory, Extension (KFD) list link
macro KFPB$L_KFEHSHTAB = 4,0,32,0 %;    !  Address of Known file name hash table
macro KFPB$W_SIZE = 8,0,16,0 %;         !  Size of pointer block in bytes 
macro KFPB$B_TYPE = 10,0,8,0 %;         !  Pointer block type 
macro KFPB$B_SPARE = 11,0,8,0 %;        !  spare byte
macro KFPB$W_KFDLSTCNT = 12,0,16,0 %;   !  Number of entries in KFD list
macro KFPB$W_HSHTABLEN = 14,0,16,0 %;   !  Length of Hash table
 
!*** MODULE $KFRHDEF ***
! 
!  KNOWN FILE RESIDENT IMAGE HEADER DEFINITIONS
! 
literal KFRH$K_LENGTH = 12;             !  Length of overhead area 
literal KFRH$C_LENGTH = 12;             !  Length of overhead area 
literal KFRH$S_KFRHDEF = 12;
macro KFRH$L_BUFEND = 0,0,32,0 %;       !  Address of end of known file header 
macro KFRH$W_ALIAS = 4,0,16,0 %;        !  Use secondary name on activation
macro KFRH$W_SIZE = 8,0,16,0 %;         !  Size of dynamic structure 
macro KFRH$B_TYPE = 10,0,8,0 %;         !  Dynamic structure type 
macro KFRH$B_HDRVER = 11,0,8,0 %;       !  Image header version
macro KFRH$T_IHD = 12,0,0,0 %;          !  Offset to decoded Image Header
! 
!  THE REMAINDER OF THIS STRUCTURE CONTAINS THE IMAGE HEADER OF THE
!  SPECIFIED KNOWN FILE.  THE LOCATION KFE$L_IMGHDR IN THE KNOWN FILE
!  ENTRY POINTS KFRH$C_LENGTH INTO THIS STRUCTURE, I.E AT THE IMAGE HEADER
!  ITSELF.
! 
 
!*** MODULE $LCKCTXDEF ***
! +
!  LCKCTX - LOCK CONTEXT BLOCK
! 
! -
literal LCKCTX$M_BUSY = 1;
literal LCKCTX$M_CANCEL = 2;
literal LCKCTX$M_CMP_RQD = 4;
literal LCKCTX$K_FIX_LEN = 56;          !  FIXED LENGTH
literal LCKCTX$C_FIX_LEN = 56;          !  FIXED LENGTH
literal LCKCTX$S_LCKCTXDEF = 57;
macro LCKCTX$L_FQFL = 0,0,32,0 %;       !  FORWARD LINK
macro LCKCTX$L_FQBL = 4,0,32,0 %;       !  BACKWARD LINK
macro LCKCTX$W_SIZE = 8,0,16,0 %;       !  SIZE
macro LCKCTX$B_TYPE = 10,0,8,0 %;       !  TYPE
macro LCKCTX$B_FLCK = 11,0,8,0 %;       !  FORK LOCK
macro LCKCTX$L_FPC = 12,0,32,0 %;       !  FORK PC
macro LCKCTX$L_FR3 = 16,0,32,0 %;       !  FORK R3
macro LCKCTX$L_FR4 = 20,0,32,0 %;       !  FORK R4
macro LCKCTX$L_FLAGS = 24,0,32,0 %;     !  FLAGS
macro LCKCTX$V_BUSY = 24,0,1,0 %;       !  BUSY
macro LCKCTX$V_CANCEL = 24,1,1,0 %;     !  OPERATION CANCELED
macro LCKCTX$V_CMP_RQD = 24,2,1,0 %;    !  COMPLETION REQUIRED
macro LCKCTX$L_LKB = 28,0,32,0 %;       !  LKB ADDRESS
macro LCKCTX$L_CR3 = 32,0,32,0 %;       !  CALLER'S R3
macro LCKCTX$L_CR4 = 36,0,32,0 %;       !  CALLER'S R4
macro LCKCTX$L_CR5 = 40,0,32,0 %;       !  CALLER'S R5
macro LCKCTX$L_CRETADR = 44,0,32,0 %;   !  CALLER'S RETURN ADDRESS
macro LCKCTX$L_RET1 = 48,0,32,0 %;      !  STORAGE FOR SECOND RETURN
macro LCKCTX$L_TMP1 = 52,0,32,0 %;      !  TEMPORARY STORAGE
macro LCKCTX$L_CPLADR = 28,0,32,0 %;    !  COMPLETION NOTIFICATION ADDR
macro LCKCTX$L_CPLPRM = 32,0,32,0 %;    !  CONTEXT PARAMETER
macro LCKCTX$B_ARGS = 56,0,8,1 %;
literal LCKCTX$S_ARGS = 1;              !  VARIABLE PART
 
!*** MODULE $LCKMGRDEF ***
! +
!  This macro defines the bit definitions for the global Lock Manager
!  cell LCK$GL_FLAGS.
! 
! -
literal LCKMGR$M_LOCK = 1;
literal LCKMGR$M_CLUINT = 256;
literal LCKMGR$M_LCKINT = 512;
literal LCKMGR$M_OLDDYN = 1024;
literal LCKMGR$M_CHK_BTR = 2048;
literal LCKMGR$M_FRK_ENBL = 4096;
literal LCKMGR$S_LCKMGRDEF = 2;
macro LCKMGR$B_CACHE_CTRL = 0,0,8,0 %;  !  interlocked cache control cell
macro LCKMGR$V_LOCK = 0,0,1,0 %;        !  Cache interlock bit
macro LCKMGR$V_CLUINT = 0,8,1,0 %;      !  CLuster Init Complete
macro LCKMGR$V_LCKINT = 0,9,1,0 %;      !  Lock Manager Init Complete
macro LCKMGR$V_OLDDYN = 0,10,1,0 %;     !  Use old (V5.2) remastering algorithm
macro LCKMGR$V_CHK_BTR = 0,11,1,0 %;    !  Check for better master
macro LCKMGR$V_FRK_ENBL = 0,12,1,0 %;   !  Fork interface enabled
 
!*** MODULE $LIRDEF ***
! +
!  $LIRDEF - LOADABLE IMAGE RECORD DEFINITION
! 
!  A LOADABLE IMAGE RECORD DEFINES A ALTERNATE EXEC IMAGE THAT CAN
!  BE LOADED BY INIT OR SYSINIT INTO THE SYSTEM.
! -
literal LIR$K_ID = 257;                 !  LIR ID plus version
literal LIR$K_INIT = 0;                 !    INIT 
literal LIR$K_SYSINIT = 1;              !    SYSINIT
literal LIR$K_WARNING = 0;              !    WARNING
literal LIR$K_SUCCESS = 1;              !    SUCCESS
literal LIR$K_ERROR = 2;                !    ERROR
literal LIR$K_INFORMATION = 3;          !    INFORMATION
literal LIR$K_FIXED = 8;                !  Length of fixed portion
literal LIR$C_FIXED = 8;                !  Length of fixed portion
literal LIR$K_LENGTH = 256;             ! Length of LIR
literal LIR$C_LENGTH = 256;             ! Length of LIR 
literal LIR$S_LIRDEF = 8;
macro LIR$W_ID = 0,0,16,0 %;            !  LIR ID field
macro LIR$W_PHASE = 2,0,16,0 %;         !  LIR phase indicator
!  LIR phase values
macro LIR$W_SEVERITY = 4,0,16,0 %;      !  LIR severity indicator
!  LIR severity values
macro LIR$B_ERR_LEN = 6,0,8,0 %;        !  Error message length
macro LIR$B_ERR_OFF = 7,0,8,0 %;        !  Error message offset
macro LIR$T_IMAGE_NAME = 8,0,0,0 %;     !  Start of image name counted string
 
!*** MODULE $LKBDEF ***
! +
!  LKB - LOCK BLOCK
! 
!  LOCK BLOCKS ARE USED TO REPRESENT LOCK REQUESTS (ONE BLOCK FOR EACH
!  REQUEST).  LOCK BLOCKS HAVE AN ENTRY IN THE LOCK ID TABLE POINTING
!  TO THEM AND ARE LINKED ONTO ONE OF THREE QUEUES IN A RESOURCE BLOCK (RSB)
! -
literal LKB$M_PKAST = 16;
literal LKB$M_NODELETE = 32;
literal LKB$M_QUOTA = 64;
literal LKB$M_KAST = 128;
literal LKB$M_DCPLAST = 1;
literal LKB$M_DBLKAST = 2;
literal LKB$M_ASYNC = 4;
literal LKB$M_BLKASTQED = 8;
literal LKB$M_MSTCPY = 16;
literal LKB$M_NOQUOTA = 32;
literal LKB$M_TIMOUTQ = 64;
literal LKB$M_WASSYSOWN = 128;
literal LKB$M_CVTTOSYS = 256;
literal LKB$M_PROTECT = 512;
literal LKB$M_RESEND = 1024;
literal LKB$M_RM_RBRQD = 2048;
literal LKB$M_FLOCK = 4096;
literal LKB$M_IP = 8192;
literal LKB$K_ACBLEN = 52;              ! LENGTH OF ACB PORTION OF LKB 
literal LKB$C_ACBLEN = 52;              ! LENGTH OF ACB PORTION OF LKB 
literal LKB$k_LKIDSIZ = 18;
literal LKB$c_LKIDSIZ = 18;
literal LKB$K_GRANTED = 1;              !  GRANTED
literal LKB$K_CONVERT = 0;              !  CONVERSION
literal LKB$K_WAITING = -1;             !  WAITING
literal LKB$K_RETRY = -2;               !  RETRY REQUEST
literal LKB$K_SCSWAIT = -3;             !  SCS WAIT
literal LKB$K_RSPNOTQED = -4;           !  RESPONSE NOT QUEUED
literal LKB$K_RSPQUEUED = -5;           !  RESPONSE QUEUED
literal LKB$K_RSPGRANTD = -6;           !  RESPONSE GRANTED
literal LKB$K_RSPDOLOCL = -7;           !  RESPONSE DO LOCALLY
literal LKB$K_RSPRESEND = -8;           !  RESPONSE RESEND
literal LKB$K_RSPWAIT = -9;             !  RESPONSE WAIT
literal LKB$K_LENGTH = 100;             ! LENGTH OF LKB 
literal LKB$C_LENGTH = 100;             ! LENGTH OF LKB 
literal LKB$S_LKBDEF = 100;
macro LKB$L_ASTQFL = 0,0,32,0 %;        ! AST QUEUE FORWARD LINK 
macro LKB$L_ASTQBL = 4,0,32,0 %;        ! AST QUEUE BACKWARD LINK 
macro LKB$W_SIZE = 8,0,16,0 %;          ! SIZE OF LKB IN BYTES 
macro LKB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE 
macro LKB$B_RMOD = 11,0,8,0 %;          ! ACCESS MODE OF REQUEST 
macro LKB$V_MODE = 11,0,2,0 %;
literal LKB$S_MODE = 2;                 !  MODE SUBFIELD 
macro LKB$V_PKAST = 11,4,1,0 %;         !  PIGGY BACK SPECIAL KERNEL AST 
macro LKB$V_NODELETE = 11,5,1,0 %;      !  DON'T DELETE ACB ON DELIVERY 
macro LKB$V_QUOTA = 11,6,1,0 %;         !  ACCOUNT FOR QUOTA 
macro LKB$V_KAST = 11,7,1,0 %;          !  SPECIAL KERNEL AST 
macro LKB$L_PID = 12,0,32,0 %;          ! PROCESS ID OF REQUESTING PROCESS 
macro LKB$L_AST = 16,0,32,0 %;          ! ADDRESS OF AST ROUTINE 
macro LKB$W_RQSEQNM = 16,0,16,0 %;      ! REQUEST SEQ. NUMBER 
macro LKB$L_ASTPRM = 20,0,32,0 %;       ! AST PARAMETER 
macro LKB$L_EPID = 20,0,32,0 %;         ! EPID (MASTER COPIES ONLY)
macro LKB$L_KAST = 24,0,32,0 %;         ! SPECIAL KERNEL AST ADDRESS 
macro LKB$L_DUETIME = 24,0,32,0 %;      ! DUETIME FOR WAITING LOCKS 
macro LKB$L_CPLASTADR = 28,0,32,0 %;    ! ADDRESS OF COMPLETION AST ROUTINE 
macro LKB$L_BLKASTADR = 32,0,32,0 %;    ! ADDRESS OF BLOCKING AST ROUTINE 
macro LKB$L_LKSB = 36,0,32,0 %;         ! ADDRESS OF LOCK STATUS BLOCK 
macro LKB$L_DLCKPRI = 36,0,32,0 %;      ! DEADLOCK PRIORITY (MASTER COPIES)
macro LKB$W_FLAGS = 40,0,16,0 %;        ! USER SPECIFIED FLAGS 
macro LKB$W_STATUS = 42,0,16,0 %;       ! INTERNAL STATUS 
macro LKB$V_DCPLAST = 42,0,1,0 %;       !  DELIVER COMPLETION AST 
macro LKB$V_DBLKAST = 42,1,1,0 %;       !  DELIVER BLOCKING AST 
macro LKB$V_ASYNC = 42,2,1,0 %;         !  REQUEST COMPLETED ASYNCHRONOUSLY 
macro LKB$V_BLKASTQED = 42,3,1,0 %;     !  BLOCKING AST HAS BEEN QUEUED 
macro LKB$V_MSTCPY = 42,4,1,0 %;        !  LKB IS A MASTER COPY
macro LKB$V_NOQUOTA = 42,5,1,0 %;       !  DON'T CHARGE QUOTA
macro LKB$V_TIMOUTQ = 42,6,1,0 %;       !  LKB IS ON TIMEOUT QUEUE 
macro LKB$V_WASSYSOWN = 42,7,1,0 %;     !  WAS SYSTEM OWNED LOCK
macro LKB$V_CVTTOSYS = 42,8,1,0 %;      !  CVT BACK TO SYS. OWNED
macro LKB$V_PROTECT = 42,9,1,0 %;       !  PROTECTED LOCK
macro LKB$V_RESEND = 42,10,1,0 %;       !  RESEND DURING FAILOVER
macro LKB$V_RM_RBRQD = 42,11,1,0 %;     !  REMASTER REBUILD REQUIRED
macro LKB$V_FLOCK = 42,12,1,0 %;        !  FORK LOCK
macro LKB$V_IP = 42,13,1,0 %;           !  OPERATION IN PROGRESS
macro LKB$L_LKST1 = 44,0,32,0 %;        ! FIRST LOCK STATUS LONGWORD 
macro LKB$L_LKST2 = 48,0,32,0 %;        ! SECOND LOCK STATUS LONGWORD 
macro LKB$L_LKID = 48,0,32,0 %;         ! LOCK ID 
macro LKB$B_RQMODE = 52,0,8,0 %;        ! REQUEST MODE 
macro LKB$B_GRMODE = 53,0,8,0 %;        ! GRANTED MODE 
macro LKB$B_STATE = 54,0,8,0 %;         ! LOCK STATE 
! LOCK STATE VALUES
macro LKB$B_EFN = 55,0,8,0 %;           ! EVENT FLAG NUMBER 
macro LKB$L_SQFL = 56,0,32,0 %;         ! STATE QUEUE FORWARD LINK 
macro LKB$L_SQBL = 60,0,32,0 %;         ! STATE QUEUE BACKWARD LINK 
macro LKB$L_OWNQFL = 64,0,32,0 %;       ! OWNER QUEUE FORWARD LINK 
macro LKB$L_OWNQBL = 68,0,32,0 %;       ! OWNER QUEUE BACKWARD LINK 
macro LKB$L_PARENT = 72,0,32,0 %;       ! ADDRESS OF PARENT LKB 
macro LKB$W_REFCNT = 76,0,16,0 %;       ! SUB LKB REFERENCE COUNT 
macro LKB$B_TSLT = 78,0,8,0 %;          ! TIMESTAMP LIFETIME
macro LKB$L_RSB = 80,0,32,0 %;          ! ADDRESS OF OWNER RSB 
macro LKB$L_REMLKID = 84,0,32,0 %;      ! REMOTE LOCK ID
macro LKB$L_CSID = 88,0,32,0 %;         ! CLUSTER SYSTEM ID (MASTER ONLY)
macro LKB$L_OLDASTPRM = 88,0,32,0 %;    ! OLD AST PARAMETER
macro LKB$L_OLDBLKAST = 92,0,32,0 %;    ! OLD BLOCKING AST ADDR,
macro LKB$L_LCKCTX = 96,0,32,0 %;       ! ADDRESS OF CONTEXT BLOCK
 
!*** MODULE $LMBDEF ***
! +
!   LMB	-  Logical Memory Block
! 
!   Logical Memory Block definitions (for subsetted crash dumps)
!   Layout of each Logical Memory Block and accompanying hole descriptor.
!   Logical Memory Blocks are portions of selective memory dumps.  "Holes"
!   refer to areas of invalid or inaccessible virtual address space at the
!   time of the dump.
! -
literal LMB$C_SPT = 0;                  !  System Page Table
literal LMB$C_S0 = 1;                   !  S0 system space
literal LMB$C_GBL = 2;                  !  Global pages
literal LMB$C_PROCESS = 3;              !  Process memory
literal LMB$L_HOLE_START_VA = 0;
!  Starting VA for this hole
literal LMB$L_HOLE_TOTAL_PAGES = 4;
!  Running total of pages of holes
literal LMB$C_HOLE_LENGTH = 8;
!  Size of each hole table entry.
literal LMB$C_BAD_MEM_START = 0;
!  Starting VA of bad memory section
literal LMB$C_BAD_MEM_END = 4;
!  Ending VA of bad memory section
literal LMB$C_BAD_MEM_NEXT = 8;
!  Size of one entry in bad memory table
literal LMB$K_LENGTH = 32;              !  Logical mem block length
literal LMB$C_LENGTH = 32;              !  Logical mem block length
literal LMB$S_LMBDEF = 32;
macro LMB$L_TYPE = 0,0,32,0 %;          !  Type of LMB
!  LMB flavors
macro LMB$L_EXP_LENGTH = 4,0,32,0 %;    !  LMB data expected length (blocks)
macro LMB$L_ACT_LENGTH = 8,0,32,0 %;    !  LMB data actual length (blocks)
macro LMB$L_TIME_CHECK = 12,0,32,0 %;   !  Ones-complement of EMB$Q_CR_TIME
macro LMB$L_FILLER_SPT = 16,0,0,0 %;
literal LMB$S_FILLER_SPT = 8;
macro LMB$L_SPTADR = 24,0,32,0 %;       !  SVA of the start of SPT + GPT
macro LMB$L_S0_HOLE_TBL = 16,0,32,0 %;  !  VBN in dump of start of the table
!  describing the holes in the S0
!  virtual address space.
macro LMB$L_S0_TOTAL_HOLES = 20,0,32,0 %; !  Count of holes in S0 space
macro LMB$L_GBL_HOLE_TBL = 16,0,32,0 %; !  VBN in dump of start of the table
!  describing the holes in global
!  page space.
macro LMB$L_GBL_TOTAL_HOLES = 20,0,32,0 %; !  Count of global page holes
macro LMB$L_PROC_HOLE_TBL = 16,0,32,0 %; !  VBN in dump of start of the table
!  describing the holes in the
!  process P0/P1 virtual address space.
macro LMB$L_PROC_TOTAL_HOLES = 20,0,32,0 %; !  Count of holes in P0/P1 space
macro LMB$L_PCBADR = 24,0,32,0 %;       !  SVA of this process's PCB
!  up to the starting VA of this hole
!  Offset to get to the next hole
!  table entry.
macro LMB$L_BAD_MEM_PTRS = 28,0,32,0 %; !  Offset of bad memory descriptor
!  list. List terminates with -1 or
!  at end of LMB block 1.
!  Offset is from start of LMB block 1.
 
!*** MODULE $LMFITMDEF ***
! +
!  LMFITMDEF - LMF internal item-list definitions
! 
!  Items lists used by the internal routines LMF$LOAD and LMF$UNLOAD,
!  which manipulate the on-disk and in-memory License databases.
!  These routines now have a callable interface, and the caller needs
!  access to these item codes.
! -
!  These are the item codes passed from the LMF utility to the callable
!  routines in the item list.  New codes should be added to the end.
literal LMF$k_ldb = 0;
literal LMF$k_producer = 1;
literal LMF$k_product = 2;
literal LMF$k_version = 3;
literal LMF$k_issuer = 4;
literal LMF$k_comment = 5;
literal LMF$k_authorization = 6;
literal LMF$k_units = 7;
literal LMF$k_availability = 8;
literal LMF$k_activity = 9;
literal LMF$k_token = 10;
literal LMF$k_termination = 11;
literal LMF$k_date = 12;
literal LMF$k_hardware_id = 13;
literal LMF$k_checksum = 14;
literal LMF$K_INCLUDE = 15;
literal LMF$k_exclude = 16;
literal LMF$k_options = 17;
literal LMF$k_output_name = 18;
literal LMF$k_extinct_qualifier = 19;
literal LMF$k_load_qualifier = 20;
literal LMF$k_cust_termination = 21;
literal LMF$k_cust_date = 22;
literal LMF$k_full_qualifier = 23;
literal LMF$k_brief_qualifier = 24;
literal LMF$k_creation_date = 25;
literal LMF$K_LMF_version_number = 26;
literal LMF$k_creating_username = 27;
literal LMF$k_log_qualifier = 28;
 
!*** MODULE $LOGDEF ***
! +
!  LOG - LOGICAL NAME BLOCK
! 
!  THERE IS ONE LOGICAL NAME BLOCK FOR EACH LOGICAL NAME ASSIGNMENT IN A
!  SYSTEM. LOGICAL NAME BLOCKS CAN BE LINKED INTO ONE OF THREE TABLES:
!         1. A PER PROCESS TABLE.
!         2. A GROUP WIDE TABLE.
!         3. THE SYSTEM WIDE TABLE.
! -
literal LOG$K_LENGTH = 20;              ! LENGTH OF FIXED PART OF LOG 
literal LOG$C_LENGTH = 20;              ! LENGTH OF FIXED PART OF LOG 
literal LOG$C_SYSTEM = 0;               ! SYSTEM NAME TABLE 
literal LOG$C_GROUP = 1;                ! GROUP NAME TABLE 
literal LOG$C_PROCESS = 2;              ! PROCESS NAME TABLE 
! 
literal LOG$C_NAMLENGTH = 64;           ! MAXIMUM LENGTH OF LOGICAL NAME STRING 
literal LOG$S_LOGDEF = 20;
macro LOG$L_LTFL = 0,0,32,0 %;          ! LOGICAL TABLE FORWARD LINK 
macro LOG$L_LTBL = 4,0,32,0 %;          ! LOGICAL TABLE BACKWARD LINK 
macro LOG$W_SIZE = 8,0,16,0 %;          ! SIZE OF LOG IN BYTES 
macro LOG$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE FOR LOG 
macro LOG$B_TABLE = 11,0,8,0 %;         ! LOGICAL NAME TABLE TYPE 
macro LOG$W_GROUP = 12,0,16,0 %;        ! CREATOR GROUP NUMBER 
macro LOG$B_AMOD = 14,0,8,0 %;          ! ACCESS MODE OF CREATOR 
macro LOG$L_MBXUCB = 16,0,32,0 %;       ! MAILBOX UCB ADDRESS 
macro LOG$T_NAME = 20,0,0,0 %;          ! START OF LOGICAL NAME 
! 
!  LOGICAL NAME TABLE NUMBERS
! 
!  MAXIMUM LENGTH OF LOGICAL NAME STRING
! 
 
!*** MODULE $LNMSTRDEF ***
literal LNMB$M_NO_ALIAS = 1;
literal LNMB$M_CONFINE = 2;
literal LNMB$M_CRELOG = 4;
literal LNMB$M_TABLE = 8;
literal LNMB$M_NODELETE = 16;
literal LNMB$S_LNMBDEF = 18;
macro LNMB$L_FLINK = 0,0,32,0 %;        !  Forward link in list
macro LNMB$L_BLINK = 4,0,32,0 %;        !  Backward link in list
macro LNMB$W_SIZE = 8,0,16,0 %;         !  Size of LNMB in bytes
macro LNMB$B_TYPE = 10,0,8,0 %;         !  Structure type for LNMB
macro LNMB$B_ACMODE = 11,0,8,0 %;       !  Owner access mode / integrity level byte
macro LNMB$L_TABLE = 12,0,32,0 %;       !  Logical name table header address
macro LNMB$R_FLAG_BITS = 16,0,8,0 %;
macro LNMB$B_FLAGS = 16,0,8,0 %;        !  Name attributes
macro LNMB$R_BITS = 16,0,8,0 %;
literal LNMB$S_BITS = 1;
macro LNMB$V_NO_ALIAS = 16,0,1,0 %;     !  Do not allow outer mode alias
macro LNMB$V_CONFINE = 16,1,1,0 %;      !  Do not copy into subprocess
macro LNMB$V_CRELOG = 16,2,1,0 %;       !  Created with old $CRELOG service
macro LNMB$V_TABLE = 16,3,1,0 %;        !  This is a table name
macro LNMB$V_NODELETE = 16,4,1,0 %;     !  Do not allow this table to be deleted
macro LNMB$T_NAME = 17,0,8,0 %;         !  Name string (counted)
!  Translation blocks begin immediately
!  following name
literal LNMC$K_NUM_ENTRIES = 26;        !  Number of table header entries.
literal LNMC$K_LENGTH = 128;            !  Length of header
literal LNMC$S_LNMCDEF = 128;
macro LNMC$L_FLINK = 0,0,32,0 %;        !  Forward link in list
macro LNMC$L_BLINK = 4,0,32,0 %;        !  Backward link in list
macro LNMC$W_SIZE = 8,0,16,0 %;         !  Size of LNMC in bytes
macro LNMC$B_TYPE = 10,0,8,0 %;         !  Structure type for LNMC
macro LNMC$B_CACHEINDX = 11,0,8,0 %;    !  Current entry number
macro LNMC$L_TBLADDR = 12,0,32,0 %;     !  Logical name table name address
macro LNMC$L_PROCDIRSEQ = 16,0,32,0 %;  !  Process directory sequence number
macro LNMC$L_SYSDIRSEQ = 20,0,32,0 %;   !  System directory sequence number
macro LNMC$L_ENTRY = 24,0,0,1 %;
literal LNMC$S_ENTRY = 104;             !  Logical name table header addresses
literal LNMX$M_CONCEALED = 1;
literal LNMX$M_TERMINAL = 2;
literal LNMX$M_XEND = 4;
literal LNMX$C_HSHFCN = -128;           !  Hash function value
literal LNMX$C_BACKPTR = -127;          !  Backpointer translation
literal LNMX$C_TABLE = -126;            !  Logical name table header
literal LNMX$C_IGNORED_INDEX = -125;    !  Modified back pointer for process-private names
literal LNMX$S_LNMXDEF = 5;
macro LNMX$R_FLAG_BITS = 0,0,8,0 %;
macro LNMX$B_FLAGS = 0,0,8,0 %;         !  Translation attributes
macro LNMX$R_BITS = 0,0,8,0 %;
literal LNMX$S_BITS = 1;
macro LNMX$V_CONCEALED = 0,0,1,0 %;     !  Do not display result of translation
macro LNMX$V_TERMINAL = 0,1,1,0 %;      !  Do not retranslate result of translation
macro LNMX$V_XEND = 0,2,1,0 %;          !  End of translations flag
macro LNMX$B_INDEX = 1,0,8,1 %;         !  Translation index
macro LNMX$W_HASH = 2,0,16,1 %;         !  Hash code for logical names in directories
macro LNMX$T_XLATION = 4,0,8,0 %;       !  Translation string (counted)
!  The next translation block
!  begins immediately following
!  this translation string
literal LNMTH$M_SHAREABLE = 1;
literal LNMTH$M_DIRECTORY = 2;
literal LNMTH$M_GROUP = 4;
literal LNMTH$M_SYSTEM = 8;
literal LNMTH$K_LENGTH = 37;            !  Length of header
literal LNMTH$S_LNMTHDEF = 37;
macro LNMTH$R_FLAG_BITS = 0,0,8,0 %;
macro LNMTH$B_FLAGS = 0,0,8,0 %;        !  Logical name table flags
macro LNMTH$R_BITS = 0,0,8,0 %;
literal LNMTH$S_BITS = 1;
macro LNMTH$V_SHAREABLE = 0,0,1,0 %;    !  Logical name table is shareable (S0 space)
macro LNMTH$V_DIRECTORY = 0,1,1,0 %;    !  Logical name table is a directory table
macro LNMTH$V_GROUP = 0,2,1,0 %;        !  Logical name table is a group logical name table
macro LNMTH$V_SYSTEM = 0,3,1,0 %;       !  Logical name table is the system logical name table
macro LNMTH$L_HASH = 1,0,32,0 %;        !  Address of hash table
macro LNMTH$L_ORB = 5,0,32,0 %;         !  Address of Object Rights Block
macro LNMTH$L_NAME = 9,0,32,0 %;        !  Address of containing LNMB block
macro LNMTH$L_PARENT = 13,0,32,0 %;     !  Address of parent table
macro LNMTH$L_CHILD = 17,0,32,0 %;      !  Address of a child table
macro LNMTH$L_SIBLING = 21,0,32,0 %;    !  Address of a sibling table
macro LNMTH$L_QTABLE = 25,0,32,0 %;     !  Address of table holding quota
macro LNMTH$L_BYTESLM = 29,0,32,1 %;    !  Initial quota
macro LNMTH$L_BYTES = 33,0,32,1 %;      !  Remaining quota
literal LNMHSH$C_BUCKET = 12;           !  Length of fixed part of LNMHSH
literal LNMHSH$K_BUCKET = 12;           !  Length of fixed part of LNMHSH
literal LNMHSH$S_LNMHSHDEF = 12;
macro LNMHSH$L_MASK = 0,0,32,0 %;       !  Mask for hash value
macro LNMHSH$W_SIZE = 8,0,16,0 %;       !  Size of LNMHSH in bytes
macro LNMHSH$B_TYPE = 10,0,8,0 %;       !  Structure type for LNMHSH
 
!*** MODULE $MBADEF ***
! +
!  MASSBUS ADAPTER REGISTER OFFSET DEFINITIONS
! -
literal MBA$M_CSR_OT = 2097152;
literal MBA$M_CSR_PU = 4194304;
literal MBA$M_CSR_PD = 8388608;
literal MBA$M_CSR_XMFLT = 67108864;
literal MBA$M_CSR_MT = 134217728;
literal MBA$M_CSR_URD = 536870912;
literal MBA$M_CSR_WS = 1073741824;
literal MBA$M_CSR_PE = -2147483648;
literal MBA$M_CR_INIT = 1;
literal MBA$M_CR_ABORT = 2;
literal MBA$M_CR_IE = 4;
literal MBA$M_SR_RDTO = 1;
literal MBA$M_SR_ISTO = 2;
literal MBA$M_SR_RDS = 4;
literal MBA$M_SR_ERCONF = 8;
literal MBA$M_SR_INVMAP = 16;
literal MBA$M_SR_MAPPE = 32;
literal MBA$M_SR_MDPE = 64;
literal MBA$M_SR_MBEXC = 128;
literal MBA$M_SR_MXF = 256;
literal MBA$M_SR_WCKLWR = 512;
literal MBA$M_SR_WCKUPR = 1024;
literal MBA$M_SR_DLT = 2048;
literal MBA$M_SR_DTABT = 4096;
literal MBA$M_SR_DTCOMP = 8192;
literal MBA$M_SR_SPE = 16384;
literal MBA$M_SR_ATTN = 65536;
literal MBA$M_SR_MCPE = 131072;
literal MBA$M_SR_NED = 262144;
literal MBA$M_SR_PGE = 524288;
literal MBA$M_SR_CBHUNG = 8388608;
literal MBA$M_SR_CRD = 536870912;
literal MBA$M_SR_NRCONF = 1073741824;
literal MBA$M_SR_DTBUSY = -2147483648;
literal MBA$M_ERROR = 942079;           !  PROGRAM ERROR 
literal MBA$S_MBADEF = 3072;
macro MBA$L_CSR = 0,0,32,0 %;           ! CONFIGURATION STATUS REGISTER 
macro MBA$V_CSR_ADCOD = 0,0,8,0 %;
literal MBA$S_CSR_ADCOD = 8;            !  ADAPTER CODE FIELD 
macro MBA$V_CSR_OT = 0,21,1,0 %;        !  OVER TEMPERATURE 
macro MBA$V_CSR_PU = 0,22,1,0 %;        !  ADAPTER POWER UP 
macro MBA$V_CSR_PD = 0,23,1,0 %;        !  ADAPTER POWER DOWN 
macro MBA$V_CSR_XMFLT = 0,26,1,0 %;     !  TRANSMITTER FAULT 
macro MBA$V_CSR_MT = 0,27,1,0 %;        !  MULTIPLE TRANSMITTERS 
macro MBA$V_CSR_URD = 0,29,1,0 %;       !  UNEXPECTED READ DATA 
macro MBA$V_CSR_WS = 0,30,1,0 %;        !  WRITE SEQUENCE DATA 
macro MBA$V_CSR_PE = 0,31,1,0 %;        !  SBI PARITY ERROR 
macro MBA$L_CR = 4,0,32,0 %;            ! CONTROL REGISTER 
macro MBA$V_CR_INIT = 4,0,1,0 %;        !  ADAPTER INITIALIZATION 
macro MBA$V_CR_ABORT = 4,1,1,0 %;       !  ABORT OPERATION 
macro MBA$V_CR_IE = 4,2,1,0 %;          !  INTERRUPT ENABLE 
macro MBA$L_SR = 8,0,32,0 %;            ! STATUS REGISTER 
macro MBA$V_SR_RDTO = 8,0,1,0 %;        !  READ DATA TIMEOUT 
macro MBA$V_SR_ISTO = 8,1,1,0 %;        !  INTERFACE SEQUENCE TIMEOUT 
macro MBA$V_SR_RDS = 8,2,1,0 %;         !  READ DATA SUBSTITUTE 
macro MBA$V_SR_ERCONF = 8,3,1,0 %;      !  ERROR CONFIRMATION 
macro MBA$V_SR_INVMAP = 8,4,1,0 %;      !  INVALID MAP REGISTER 
macro MBA$V_SR_MAPPE = 8,5,1,0 %;       !  MAP PARITY ERROR 
macro MBA$V_SR_MDPE = 8,6,1,0 %;        !  MASSBUS DATA PARITY ERROR 
macro MBA$V_SR_MBEXC = 8,7,1,0 %;       !  MASSBUS EXCEPTION 
macro MBA$V_SR_MXF = 8,8,1,0 %;         !  MISSED TRANSFER ERROR 
macro MBA$V_SR_WCKLWR = 8,9,1,0 %;      !  WRITE CHECK ERROR LOWER BYTE 
macro MBA$V_SR_WCKUPR = 8,10,1,0 %;     !  WRITE CHECK ERROR UPPER BYTE 
macro MBA$V_SR_DLT = 8,11,1,0 %;        !  DATA LATE ERROR 
macro MBA$V_SR_DTABT = 8,12,1,0 %;      !  DATA TRANSFER ABORTED 
macro MBA$V_SR_DTCOMP = 8,13,1,0 %;     !  DATA TRANSFER COMPLETE 
macro MBA$V_SR_SPE = 8,14,1,0 %;        !  SILO PARITY ERROR 
macro MBA$V_SR_ATTN = 8,16,1,0 %;       !  MASSBUS ATTENTION 
macro MBA$V_SR_MCPE = 8,17,1,0 %;       !  MASSBUS COMTROL PARITY ERROR 
macro MBA$V_SR_NED = 8,18,1,0 %;        !  NONEXISTENT DRIVE 
macro MBA$V_SR_PGE = 8,19,1,0 %;        !  PROGRAM ERROR 
macro MBA$V_SR_CBHUNG = 8,23,1,0 %;     !  CB HUNG 
macro MBA$V_SR_CRD = 8,29,1,0 %;        !  CORRECTED READ DATA 
macro MBA$V_SR_NRCONF = 8,30,1,0 %;     !  NO RESPONSE CONFIRMATION 
macro MBA$V_SR_DTBUSY = 8,31,1,0 %;     !  DATA TRANSFER BUSY 
!  ERROR BITS 
macro MBA$L_VAR = 12,0,32,0 %;          ! VIRTUAL ADDRESS REGISTER 
macro MBA$L_BCR = 16,0,32,0 %;          ! BYTE COUNT REGISTER 
macro MBA$L_DR = 20,0,32,0 %;           ! DIAGNOSTIC REGISTER 
macro MBA$L_SELMR = 24,0,32,0 %;        ! SELECTED MAP REGISTER 
macro MBA$L_ERB = 1024,0,32,0 %;        ! BASE ADDRESS OF EXTERNAL REGISTERS 
macro MBA$V_ERB_UNIT = 1024,7,3,0 %;
literal MBA$S_ERB_UNIT = 3;             !  DRIVE UNIT NUMBER 
macro MBA$L_AS = 1040,0,32,0 %;         ! ATTENTION SUMMARY REGISTER 
!  TO POSITION TO 2048
macro MBA$L_MAP = 2048,0,0,0 %;
literal MBA$S_MAP = 1024;               ! MAP REGISTERS 
 
!*** MODULE $MBXDEF ***
! +
!  SHARED MEMORY MAILBOX CONTROL BLOCK DEFINITIONS
! 
!  THERE IS ONE MAILBOX CONTROL BLOCK FOR EACH MAILBOX IN SHARED
!  MEMORY.  ANY PROCESSOR THAT WANTS TO ACCESS THE MAILBOX CREATES
!  A UCB TO CONTROL ACCESS TO THE MAILBOX.
! -
literal MBX$M_ALLOC = 1;
literal MBX$M_VALID = 2;
literal MBX$M_DELPEND = 4;
literal MBX$M_QUOTALCK = 8;
literal MBX$K_LENGTH = 48;              ! LENGTH OF STRUCTURE 
literal MBX$C_LENGTH = 48;              ! LENGTH OF STRUCTURE 
literal MBX$S_MBXDEF = 48;
macro MBX$Q_MSG = 0,0,0,0 %;
literal MBX$S_MSG = 8;                  ! MESSAGE QUEUE LISTHEAD 
macro MBX$B_FLAGS = 8,0,8,0 %;          ! FLAGS 
macro MBX$V_ALLOC = 8,0,1,0 %;          !  MAILBOX ALLOCATED 
macro MBX$V_VALID = 8,1,1,0 %;          !  MAILBOX INITIALIZED AND USEABLE 
macro MBX$V_DELPEND = 8,2,1,0 %;        !  DELETE PENDING 
macro MBX$V_QUOTALCK = 8,3,1,0 %;       !  QUOTA/COUNT MODIFICATION LOCK 
macro MBX$B_CREATPORT = 9,0,8,0 %;      ! PORT NUMBER OF MAILBOX CREATOR 
macro MBX$W_UNIT = 10,0,16,0 %;         ! MAILBOX UNIT NUMBER 
macro MBX$W_REF = 12,0,16,0 %;          ! REFERENCE FLAGS (1 BIT/PORT) 
macro MBX$W_READER = 14,0,16,0 %;       ! WAITING READER (1 BIT/PORT) 
macro MBX$W_READAST = 16,0,16,0 %;      ! WAITING READ AST (1 BIT/PORT) 
macro MBX$W_WRITAST = 18,0,16,0 %;      ! WAITING WRITE AST (1 BIT/PORT) 
macro MBX$W_MAXMSG = 20,0,16,0 %;       ! MAXIMUM MESSAGE SIZE 
macro MBX$W_MSGCNT = 22,0,16,0 %;       ! CURRENT NUMBER OF MESSAGES 
macro MBX$W_BUFFQUO = 24,0,16,0 %;      ! BUFFER QUOTA 
macro MBX$W_PROT = 26,0,16,0 %;         ! PROTECTION MASK 
macro MBX$L_OWNUIC = 28,0,32,0 %;       ! OWNER UIC 
macro MBX$T_NAME = 32,0,0,0 %;
literal MBX$S_NAME = 16;                ! MAILBOX NAME (COUNTED STRING) 
!  *** THE LENGTH OF THIS STRUCTURE MUST BE AN EVEN MULTIPLE OF 8 ***
!  *** BECAUSE THE MESSAGE QUEUE HEADER MUST BE QUADWORD ALIGNED ***
 
!*** MODULE $MCHKDEF ***
! +
!  MACHINE CHECK ERROR RECOVERY BLOCK MASK BIT DEFFINITIONS
!  BITS USED TO FILTER AND TEST FOR ERROR TYPES
! -
literal MCHK$M_LOG = 1;
literal MCHK$M_MCK = 2;
literal MCHK$M_NEXM = 4;
literal MCHK$M_UBA = 8;
literal MCHK$S_MCHKDEF = 1;
macro MCHK$V_LOG = 0,0,1,0 %;           ! INHIBIT ERROR LOGGIN FOR THE ERROR 
macro MCHK$V_MCK = 0,1,1,0 %;           ! PROTECT AGAINST MACHINE CHECKS 
macro MCHK$V_NEXM = 0,2,1,0 %;          ! PROTECT AGAINST NON-EXISTENT MEMORY 
macro MCHK$V_UBA = 0,3,1,0 %;           ! PROTECT AGAINST UBA ADAPTER ERROR INTRPT 
 
!*** MODULE $MMGDEF ***
!         -F        ,B,0                        /* ending address of negated structure
!  (needed to obtain length definition)
literal MMG$K_LENGTH = -32;             !  size of scratch area 
literal MMG$C_LENGTH = -32;             !  size of scratch area 
literal MMG$M_CHGPAGFIL = 256;
literal MMG$M_DELGBLDON = 512;
literal MMG$M_NOWAIT_IPL0 = 1024;
literal MMG$M_NO_OVERMAP = 2048;
literal MMG$S_MMGDEF = 33;
macro MMG$L_PGFLCNT = -32,0,32,0 %;     !  remaining page file quota
macro MMG$L_EFBLK = -28,0,32,0 %;       !  stored end-of-file block from WCB 
macro MMG$L_VFYFLAGS = -24,0,32,0 %;    !  verified section flags and maximum 
!   access mode for writing
macro MMG$L_SVSTARTVA = -20,0,32,0 %;   !  saved starting virtual address 
macro MMG$L_PAGESUBR = -16,0,32,0 %;    !  address of per page subroutine 
macro MMG$L_SAVRETADR = -12,0,32,0 %;   !  saved return address range 
macro MMG$L_CALLEDIPL = -8,0,32,0 %;    !  caller's IPL 
macro MMG$L_MAXACMODE = -4,0,32,0 %;    !  maximized read access mode 
! 
macro MMG$V_CHGPAGFIL = -4,8,1,0 %;     !  charge page file for this PTE 
macro MMG$V_DELGBLDON = -4,9,1,0 %;     !  global pages in this range 
!   already deleted
macro MMG$V_NOWAIT_IPL0 = -4,10,1,0 %;  !  abort instead of dropping to 0
macro MMG$V_NO_OVERMAP = -4,11,1,0 %;   !  don't overmap
! 
 
!*** MODULE $MPWDEF ***
literal MPW$C_IDLE = 0;
literal MPW$C_MAINTAIN = 1;
literal MPW$C_SVAPTE = 2;
literal MPW$C_OPCCRASH = 3;
literal MPW$C_MAXSTATE = 4;
literal MPW$C_DPTSCAN = 0;
literal MPW$C_DGBLSC = 1;
literal MPW$C_RELPHD = 2;
literal MPW$C_FREELIM = 3;
literal MPW$C_MPWCHECK = 4;
literal MPW$C_CRASH = 5;
literal MPW$C_MAXID = 6;
literal MPW$M_RCODE = 255;
literal MPW$M_RMODIFIERS = 65280;
literal MPW$M_RESERVED = 16711680;
literal MPW$M_IDCODE = -16777216;
literal MPW$M_LOLIMIT = 256;
literal MPW$S_MPWDEF = 4;
!  Basic request code/modifiers structure
macro MPW$V_RCODE = 0,0,8,0 %;
literal MPW$S_RCODE = 8;                !  Request Code Field
macro MPW$V_RMODIFIERS = 0,8,8,0 %;
literal MPW$S_RMODIFIERS = 8;           !  Request Modifiers Field
macro MPW$V_RESERVED = 0,16,8,0 %;
literal MPW$S_RESERVED = 8;
macro MPW$V_IDCODE = 0,24,8,0 %;
literal MPW$S_IDCODE = 8;               !  Requestor ID code Field
!  Request modifiers for MAINTAIN request
macro MPW$V_LOLIMIT = 0,8,1,0 %;        !  New MPL low limit specified in R1
 
!*** MODULE $MTLDEF ***
! +
!  MOUNTED VOLUME LIST ENTRY. ONE SUCH ENTRY APPEARS IN THE PROCESS MOUNTED
!  VOLUME LIST FOR EACH VOLUME MOUNTED BY THE PROCESS AS /SHARE OR /NOSHARE.
!  IN ADDITION, EACH VOLUME MOUNTED /SYSTEM OR /GROUP HAS AN ENTRY IN THE
!  SYSTEM WIDE MOUNTED VOLUME LIST.
! -
literal MTL$K_LENGTH = 28;              !  LENGTH OF STRUCTURE 
literal MTL$C_LENGTH = 28;              !  LENGTH OF STRUCTURE 
literal MTL$S_MTLDEF = 28;
macro MTL$L_MTLFL = 0,0,32,0 %;         !  FORWARD LIST POINTER 
macro MTL$L_MTLBL = 4,0,32,0 %;         !  BACK LIST POINTER 
macro MTL$W_SIZE = 8,0,16,0 %;          !  STRUCTURE SIZE IN BYTES 
macro MTL$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE 
macro MTL$B_STATUS = 11,0,8,0 %;        !  STATUS BYTE 
macro MTL$V_VOLSET = 11,0,1,0 %;        !  ENTRY IS FOR A VOLUME SET 
macro MTL$L_UCB = 12,0,32,0 %;          !  POINTER TO DEVICE UCB 
macro MTL$L_LOGNAME = 16,0,32,0 %;      !  POINTER TO ASSOCIATED LOGICAL NAME
macro MTL$L_LOGNAM2 = 20,0,32,0 %;      !  POINTER TO ALTERNATE LOGICAL NAME 
 
!*** MODULE $MTXDEF ***
! +
!  MUTEX DEFINITIONS
! -
literal MTX$S_MTXDEF = 4;
macro MTX$V_WRT = 0,16,1,0 %;           !  WRITE PENDING OR IN PROGRESS 
macro MTX$V_INTERLOCK = 0,17,1,0 %;     !  INTERLOCK ACCESS TO MUTEX
macro MTX$W_OWNCNT = 0,0,16,0 %;        ! OWNERSHIP COUNT 
macro MTX$W_STS = 2,0,16,0 %;           ! STATUS BITS 
 
!*** MODULE $MPBDEF ***
! +
!  MULTIPROCESSOR LOGICAL CONSOLE RING BUFFER CONTROL BLOCK DEFINITIONS
! -
literal MPB$M_INPROG = 1;
literal MPB$M_COLD_BOOT = 2;
literal MPB$M_RESTART = 4;
literal MPB$M_PENDING = 8;
literal MPB$M_TQEACT = 16;
literal MPB$K_LENGTH = 64;              !  Minimum size of structure
literal MPB$C_LENGTH = 64;              !  Minimum size of structure
! 
literal MPB$S_MPBDEF = 68;
macro MPB$L_PTR = 0,0,32,0 %;           !  Next empty ring position
macro MPB$L_LIMIT = 4,0,32,0 %;         !  Size of ring buffer
macro MPB$W_SIZE = 8,0,16,0 %;          !  Size
macro MPB$B_TYPE = 10,0,8,0 %;          !  Type
macro MPB$B_SUBTYPE = 11,0,8,0 %;       !  Subtype
macro MPB$L_RING = 12,0,32,0 %;         !  Pointer to start of ring buffer
macro MPB$L_NXTSTATE = 16,0,32,0 %;     !  next attached console state
macro MPB$L_CMD_PTR = 20,0,32,0 %;      !  next byte in command string 
macro MPB$L_TQE = 24,0,32,0 %;          !  Pointer to TQE
macro MPB$Q_ASCIISP = 28,0,0,0 %;
literal MPB$S_ASCIISP = 8;              !  ASCII SP value for restart 
macro MPB$B_ASCIIAP = 36,0,8,0 %;       !  low byte of ASCII AP for restart 
macro MPB$B_RETRY_CNT = 37,0,8,0 %;     !  CPU BOOT retry count
macro MPB$W_STATUS = 38,0,16,0 %;
macro MPB$V_INPROG = 38,0,1,0 %;        !  boot fork in progress 
macro MPB$V_COLD_BOOT = 38,1,1,0 %;     !  cold boot in progree 
macro MPB$V_RESTART = 38,2,1,0 %;       !  restart in progress 
macro MPB$V_PENDING = 38,3,1,0 %;       !  boot thread pending fork
macro MPB$V_TQEACT = 38,4,1,0 %;        !  TQE is active
macro MPB$Q_HALT_PC = 40,0,0,0 %;
literal MPB$S_HALT_PC = 8;              !  ASCII halt PC for restart 
macro MPB$Q_HALT_PSL = 48,0,0,0 %;
literal MPB$S_HALT_PSL = 8;             !  ASCII halt PSL for restart 
macro MPB$L_PER_CPU = 56,0,32,0 %;      !  Virtual address of CPU database
macro MPB$L_PSILO = 60,0,32,0 %;        !  silo to accumulate console prompt (Scorpio)
macro MPB$L_CCABUF = 60,0,32,0 %;       !  Virtual address of CCA buffer (Calypso)
!  A FORK BLOCK will be added to the end of this structure,
!  followed by the ring buffer.
! 
macro MPB$L_FKB = 64,0,32,0 %;          !  Start of fork block
 
!*** MODULE $MPMDEF ***
! +
!  MULTIPORT MEMORY (MA780/MA750) ADAPTER REGISTER OFFSET DEFINITIONS
! -
! 
!  The UETP for the MA780 depends on some of the following definitions.  Please
!  let someone in that group know if the definitions change substantially.
! 
literal MPM$C_PORTS = 4;                ! MAXIMUM NUMBER OF PORTS PER MEMORY 
literal MPM$M_CSR_PORT = 3;
literal MPM$M_CSR_ADCOD = 255;
literal MPM$M_CSR_PU = 4194304;
literal MPM$M_CSR_PD = 8388608;
literal MPM$M_CSR_XMFLT = 67108864;
literal MPM$M_CSR_MT = 134217728;
literal MPM$M_CSR_IS = 268435456;
literal MPM$M_CSR_WS = 1073741824;
literal MPM$M_CSR_PE = -2147483648;
literal MPM$C_CSR_TYPE = 64;            !  MULTIPORT ADAPTER TYPE CODE 
literal MPM$M_CR_MIE = 1;
literal MPM$M_CR_EIE = 2;
literal MPM$M_CR_ERRS = -16777216;
literal MPM$M_SR_EIE = 2;
literal MPM$M_SR_SS = 8192;
literal MPM$M_SR_IDL = 16384;
literal MPM$M_SR_IT = 32768;
literal MPM$M_SR_AGP = 268435456;
literal MPM$M_SR_XDF = 536870912;
literal MPM$M_SR_MXF = 1073741824;
literal MPM$M_SR_ACA = -2147483648;
literal MPM$M_INV_ID = 65535;
literal MPM$M_INV_MEMSZ = 458752;
literal MPM$M_INV_STADR = 2146435072;
literal MPM$M_INV_CACHF = -2147483648;
literal MPM$M_ERR_ELR = 268435456;
literal MPM$M_ERR_HI = 536870912;
literal MPM$M_ERR_ICRD = 1073741824;
literal MPM$M_ERR_IMP = -2147483648;
literal MPM$M_CSR1_MIA = 1024;
literal MPM$S_MPMDEF = 40;
macro MPM$L_CSR = 0,0,32,0 %;           ! CONFIGURATION STATUS REGISTER 
macro MPM$V_CSR_PORT = 0,0,2,0 %;
literal MPM$S_CSR_PORT = 2;             !  PORT NUMBER 
macro MPM$V_CSR_ADCOD = 0,0,8,0 %;
literal MPM$S_CSR_ADCOD = 8;            !  ADAPTER CODE FIELD 
macro MPM$V_CSR_PU = 0,22,1,0 %;        !  ADAPTER POWER UP 
macro MPM$V_CSR_PD = 0,23,1,0 %;        !  ADAPTER POWER DOWN 
macro MPM$V_CSR_XMFLT = 0,26,1,0 %;     !  TRANSMITTER FAULT 
macro MPM$V_CSR_MT = 0,27,1,0 %;        !  MULTIPLE TRANSMITTERS 
macro MPM$V_CSR_IS = 0,28,1,0 %;        !  INTERLOCK SEQUENCE 
macro MPM$V_CSR_WS = 0,30,1,0 %;        !  WRITE SEQUENCE DATA 
macro MPM$V_CSR_PE = 0,31,1,0 %;        !  SBI PARITY ERROR 
macro MPM$L_CR = 4,0,32,0 %;            ! CONTROL REGISTER 
macro MPM$V_CR_MIE = 4,0,1,0 %;         !  MASTER INTERRUPT ENABLE 
macro MPM$V_CR_EIE = 4,1,1,0 %;         !  ERROR INTERRUPT ENABLE 
macro MPM$V_CR_ERRS = 4,24,8,0 %;
literal MPM$S_CR_ERRS = 8;              !  PORT INTERFACE ERRORS 
macro MPM$L_SR = 8,0,32,0 %;            ! STATUS REGISTER 
macro MPM$V_SR_EIE = 8,1,1,0 %;         !  ERROR INTERRUPT ENABLE 
macro MPM$V_SR_SS = 8,13,1,0 %;         !  SINGLE STEP 
macro MPM$V_SR_IDL = 8,14,1,0 %;        !  INVALIDATE DATA LOST IN MPC 
macro MPM$V_SR_IT = 8,15,1,0 %;         !  INTERLOCK TIMEOUT 
macro MPM$V_SR_AGP = 8,28,1,0 %;        !  ADMI GRANT PARITY ERROR 
macro MPM$V_SR_XDF = 8,29,1,0 %;        !  XMIT DURING FAULT 
macro MPM$V_SR_MXF = 8,30,1,0 %;        !  MULTIPLE XMITTER FAULT 
macro MPM$V_SR_ACA = 8,31,1,0 %;        !  ADMI COMMAND ABORT 
macro MPM$L_INV = 12,0,32,0 %;          ! INVALIDATION CONTROL REGISTER 
macro MPM$V_INV_ID = 12,0,16,0 %;
literal MPM$S_INV_ID = 16;              !  CACHED DEVICE NEXUS ID'S 
macro MPM$V_INV_MEMSZ = 12,16,3,0 %;
literal MPM$S_INV_MEMSZ = 3;            !  MEMORY SIZE (256KB BOARDS) 
macro MPM$V_INV_STADR = 12,20,11,0 %;
literal MPM$S_INV_STADR = 11;           !  STARTING SBI ADDR OF MEMORY 
macro MPM$V_INV_CACHF = 12,31,1,0 %;    !  CACHED FORCE (IGNORE ID'S) 
macro MPM$L_ERR = 16,0,32,0 %;          ! ARRAY ERROR REGISTER 
macro MPM$V_ERR_ELR = 16,28,1,0 %;      !  ERROR LOG REQUEST 
macro MPM$V_ERR_HI = 16,29,1,0 %;       !  HIGH ERROR RATE 
macro MPM$V_ERR_ICRD = 16,30,1,0 %;     !  INHIBIT CRD ERRORS 
macro MPM$V_ERR_IMP = 16,31,1,0 %;      !  INVALIDATE MAP PARITY ERROR 
macro MPM$L_CSR0 = 20,0,32,0 %;         ! CONFIGURATION STATUS REGISTER 0 
macro MPM$V_CSR0_POW = 20,4,4,0 %;
literal MPM$S_CSR0_POW = 4;             !  PER PORT POWER STATUS 
macro MPM$V_CSR0_ERR = 20,8,4,0 %;
literal MPM$S_CSR0_ERR = 4;             !  PER PORT ERROR STATUS 
macro MPM$V_CSR0_ONL = 20,12,4,0 %;
literal MPM$S_CSR0_ONL = 4;             !  PER PORT ONLINE STATUS 
macro MPM$L_CSR1 = 24,0,32,0 %;         ! CONFIGURATION STATUS REGISTER 1 
macro MPM$V_CSR1_MIA = 24,10,1,0 %;     !  MULTIPLE INTERLOCK ACCEPTED 
macro MPM$L_MR = 28,0,32,0 %;           ! MAINTENANCE REGISTER 
macro MPM$V_MR_UNIT = 28,14,2,0 %;
literal MPM$S_MR_UNIT = 2;              !  MEMORY UNIT NUMBER 
macro MPM$L_IIR = 32,0,32,0 %;          ! INTERPORT INTERRUPT REQUEST REGISTER 
macro MPM$V_IIR_STS = 32,0,16,0 %;
literal MPM$S_IIR_STS = 16;             !  STATUS BITS (WRITE TO CLEAR) 
macro MPM$V_IIR_CTL = 32,16,16,0 %;
literal MPM$S_IIR_CTL = 16;             !  CONTROL BITS (WRITE TO SET STATUS BITS) 
macro MPM$L_IIE = 36,0,32,0 %;          ! INTERPORT INTERRUPT ENABLE REGISTER 
macro MPM$V_IIE_STS = 36,0,16,0 %;
literal MPM$S_IIE_STS = 16;             !  CONTROL BITS (WRITE TO CLEAR) 
macro MPM$V_IIE_CTL = 36,16,16,0 %;
literal MPM$S_IIE_CTL = 16;             !  STATUS BITS (WRITE TO SET STATUS BITS) 
 
!*** MODULE $MSLGDEF ***
! +
!  MSLG, MScp error LoG message definitions
!  	These definitions describe the format of the error log messages 
!  	generated by MSCP and TMSCP devices.
! -
! 
! 	Generic MSCP/TMSCP error log entry format
! 
literal MSLG$M_LF_SQNRS = 1;
literal MSLG$M_LF_RPLER = 16;
literal MSLG$M_LF_BBR = 32;
literal MSLG$M_LF_CONT = 64;
literal MSLG$M_LF_SUCC = 128;
literal MSLG$K_CNT_ERR = 0;
literal MSLG$K_BUS_ADDR = 1;
literal MSLG$K_DISK_TRN = 2;
literal MSLG$K_SDI = 3;
literal MSLG$K_SML_DSK = 4;
literal MSLG$K_TAPE_TRN = 5;
literal MSLG$K_STI_ERR = 6;
literal MSLG$K_STI_DEL = 7;
literal MSLG$K_STI_FEL = 8;
literal MSLG$K_REPLACE = 9;
literal MSLG$K_LDR_ERR = 10;
literal MSLG$S_GENERIC_MSCP_ERRLOG = 44;
macro MSLG$L_CMD_REF = 0,0,32,0 %;      !  Command reference number 
macro MSLG$W_UNIT = 4,0,16,0 %;         !  Unit number 
macro MSLG$W_SEQ_NUM = 6,0,16,0 %;      !  Sequence Number
macro MSLG$B_FORMAT = 8,0,8,0 %;        !  Format
macro MSLG$B_FLAGS = 9,0,8,0 %;         !  Error Log Message Flags
macro MSLG$V_LF_SQNRS = 9,0,1,0 %;      !    Sequence Number Reset
macro MSLG$V_LF_RPLER = 9,4,1,0 %;      !    Error during replacement
macro MSLG$V_LF_BBR = 9,5,1,0 %;        !    Bad block replacement request
macro MSLG$V_LF_CONT = 9,6,1,0 %;       !    Operation continuing
macro MSLG$V_LF_SUCC = 9,7,1,0 %;       !    Operation successful
macro MSLG$W_EVENT = 10,0,16,0 %;       !  Event Code
macro MSLG$Q_CNT_ID = 12,0,0,0 %;
literal MSLG$S_CNT_ID = 8;              !  Controller ID
macro MSLG$B_CNT_SVR = 20,0,8,0 %;      !  Controller software version
macro MSLG$B_CNT_HVR = 21,0,8,0 %;      !  Controller hardware version
macro MSLG$W_MULT_UNT = 22,0,16,0 %;    !  Multi-unit Code
macro MSLG$Q_UNIT_ID = 24,0,0,0 %;
literal MSLG$S_UNIT_ID = 8;             !  Unit ID
macro MSLG$B_UNIT_SVR = 32,0,8,0 %;     !  Unit software version
macro MSLG$B_UNIT_HVR = 33,0,8,0 %;     !  Unit hardware version
macro MSLG$B_LEVEL = 34,0,8,0 %;        !  Level
macro MSLG$B_RETRY = 35,0,8,0 %;        !  Retry
macro MSLG$L_VOL_SER = 36,0,32,0 %;     !  Volume Serial Number (disks)
macro MSLG$L_GAP_CNT = 36,0,32,0 %;     !  Position - object count (tapes)
macro MSLG$B_FMTR_SVR = 40,0,8,0 %;     !  Formatter software version
macro MSLG$B_FMTR_HVR = 41,0,8,0 %;     !  Formatter hardware version
! 
!   Controller Error (MSLG$K_CNT_ERR)
! 
literal MSLG$S_MSLG_CNT_ERR = 23;
macro MSLG$Z_CNT_ERR = 22,0,8,1 %;      !  Controller dependent data
! 
!   Host Memory Access Error (MSLG$K_BUS_ADDR)
! 
literal MSLG$S_MSLG_BUS_ADDR = 28;
macro MSLG$L_BUS_ADDR = 24,0,32,0 %;    !  Bus Address
! 
!   Disk Transfer Error (MSLG$K_DISK_TRN)
! 
literal MSLG$K_DISK_TRN_MSGSIZ = 44;    !  Size of DISK_TRN_ERROR msg.
literal MSLG$S_MSLG_DISK_TRN = 45;
macro MSLG$L_HDR_CODE = 40,0,32,0 %;    !  Header Code
macro MSLG$Z_DISK_TRN = 44,0,8,1 %;     !  Controller or disk dependent data
! 
!   SDI Error (MSLG$K_SDI)
! 
literal MSLG$S_MSLG_SDI = 56;
macro MSLG$Z_SDI = 44,0,0,0 %;
literal MSLG$S_SDI = 12;                !  SDI Information
! 
!   Small Disk Error (MSLG$K_SML_DSK)
! 
literal MSLG$S_MSLG_SML_DSK = 41;
macro MSLG$W_SDE_CYL = 34,0,16,0 %;     !  Cylinder
macro MSLG$Z_SML_DSK = 40,0,8,1 %;      !  Controller or device dependent
! 
!   Tape Transfer Error (MSLG$K_STI_ERR)
! 
! 	There are no special field definitions for tape transfer errors at this time.
! 
!   STI communication or command failure (MSLG$K_STI_ERR)
!   STI drive error log (MSLG$K_STI_DEL)
!   STI formatter error log (MSLG$K_STI_FEL)
! 
literal MSLG$S_MSLG_STI_ERR = 64;
macro MSLG$Z_STI = 44,0,0,0 %;
literal MSLG$S_STI = 20;                !  STI Information
! 
!   Bad Block Replacement Attempted (MSLG$K_REPLACE)
! 
literal MSLG$M_LFR_BR = 1024;
literal MSLG$M_LFR_RI = 2048;
literal MSLG$M_LFR_RF = 4096;
literal MSLG$M_LFR_TE = 8192;
literal MSLG$M_LFR_FE = 16384;
literal MSLG$M_LFR_RP = 32768;
literal MSLG$K_REPLACE_MSGSIZ = 54;     !  Size of REPLACE msg for BBR error logging
literal MSLG$S_MSLG_REPLACE = 54;
macro MSLG$W_RPL_FLGS = 34,0,16,0 %;    !  Replace Flags
macro MSLG$V_LFR_BR = 34,10,1,0 %;      !   Bad RBN
macro MSLG$V_LFR_RI = 34,11,1,0 %;      !   RCT inconsistent
macro MSLG$V_LFR_RF = 34,12,1,0 %;      !   Reformat error
macro MSLG$V_LFR_TE = 34,13,1,0 %;      !   Tertiary revector
macro MSLG$V_LFR_FE = 34,14,1,0 %;      !   Forced error (data not recovered)
macro MSLG$V_LFR_RP = 34,15,1,0 %;      !   Replace attempted (block really bad)
macro MSLG$L_BAD_LBN = 40,0,32,0 %;     !  Bad LBN
macro MSLG$L_OLD_RBN = 44,0,32,0 %;     !  Previous RBN
macro MSLG$L_NEW_RBN = 48,0,32,0 %;     !  New RBN
macro MSLG$W_CAUSE = 52,0,16,0 %;       !  Event code causing replacement
! 
!   Media Loader Errors (MSLG$K_LDR_ERR)
! 
literal MSLG$S_MSLG_LDR_ERR = 49;
macro MSLG$Q_ML_ID = 36,0,0,0 %;
literal MSLG$S_ML_ID = 8;               !  Media loader identifier
macro MSLG$B_ML_SVR = 44,0,8,0 %;       !  Media loader software version
macro MSLG$B_ML_HVR = 45,0,8,0 %;       !  Media loader hardware version
macro MSLG$W_ML_UNIT = 46,0,16,0 %;     !  Media loader unit number
macro MSLG$Z_LDR_ERR = 48,0,8,1 %;      !  Controller dependent data
 
!*** MODULE $MSCPDEF ***
! ++
!  MSCP (Mass Storage Control Protocol) Definitions
! 
! 	These definitions describe the format of the command and end message 
! 	packets exchanged under MSCP between the host and the controller.
! --
literal MSCP$M_EU_NO = 255;
literal MSCP$M_EU_SUBU = 7;
literal MSCP$M_EU_SUBC = 248;
literal MSCP$K_EMS_CNSL = 0;
literal MSCP$K_EMS_RP = 1;
literal MSCP$K_EMS_RM = 2;
literal MSCP$K_EMS_RK = 3;
literal MSCP$K_EMS_RL = 4;
literal MSCP$K_EMS_RX = 5;
literal MSCP$K_EMS_FD1 = 6;
literal MSCP$K_EMS_FD2 = 7;
literal MSCP$K_EMS_FD3 = 8;
literal MSCP$K_EMS_FD4 = 9;
literal MSCP$K_EMS_FD5 = 10;
literal MSCP$K_EMS_FD6 = 11;
literal MSCP$K_EMS_FD7 = 12;
literal MSCP$K_EMS_FD8 = 13;
literal MSCP$M_EU_CTYPE = 3840;
literal MSCP$K_EMD_OLD = 0;
literal MSCP$K_EMD_UDA = 1;
literal MSCP$K_EMD_HSC = 2;
literal MSCP$K_EMD_AZT = 3;
literal MSCP$K_EMD_RDRX = 4;
literal MSCP$K_EMD_EMUL = 5;
literal MSCP$M_EU_DESIG = 28672;
literal MSCP$M_SHADOW = 32768;
literal MSCP$M_OP_ATTN = 64;
literal MSCP$M_OP_END = 128;
literal MSCP$M_EF_DLS = 2;
literal MSCP$M_EF_PLS = 4;
literal MSCP$M_EF_EOT = 8;
literal MSCP$M_EF_SEREX = 16;
literal MSCP$M_EF_ERLOG = 32;
literal MSCP$M_EF_BBLKU = 64;
literal MSCP$M_EF_BBLKR = 128;
literal MSCP$M_ST_MASK = 31;
literal MSCP$K_ST_SUCC = 0;
literal MSCP$K_ST_ICMD = 1;
literal MSCP$K_ST_ABRTD = 2;
literal MSCP$K_ST_OFFLN = 3;
literal MSCP$K_ST_AVLBL = 4;
literal MSCP$K_ST_MFMTE = 5;
literal MSCP$K_ST_WRTPR = 6;
literal MSCP$K_ST_COMP = 7;
literal MSCP$K_ST_DATA = 8;
literal MSCP$K_ST_HSTBF = 9;
literal MSCP$K_ST_CNTLR = 10;
literal MSCP$K_ST_DRIVE = 11;
literal MSCP$K_ST_FMTER = 12;
literal MSCP$K_ST_BOT = 13;
literal MSCP$K_ST_TAPEM = 14;
literal MSCP$K_ST_SHST = 12;
literal MSCP$K_ST_RDTRN = 16;
literal MSCP$K_ST_PLOST = 17;
literal MSCP$K_ST_PRESE = 18;
literal MSCP$K_ST_LED = 19;
literal MSCP$K_ST_BBR = 20;
literal MSCP$K_ST_IPARM = 21;
literal MSCP$K_ST_INFO = 22;
literal MSCP$K_ST_LOADR = 23;
literal MSCP$K_ST_HOST = 24;
literal MSCP$K_ST_UNREC = 20;
literal MSCP$K_ST_DIAG = 31;
literal MSCP$K_ST_SBCOD = 32;
literal MSCP$M_ST_SBCOD = 65504;
literal MSCP$K_OP_ABORT = 1;            !  Abort
literal MSCP$K_OP_ACCES = 16;           !  Access
literal MSCP$K_OP_ACCNM = 5;            !  Access non-volatile memory
literal MSCP$K_OP_AVAIL = 8;            !  Available
literal MSCP$K_OP_CMPCD = 17;           !  Compare Controller Data
literal MSCP$K_OP_COMP = 32;            !  Compare Host Data
literal MSCP$K_OP_DTACP = 11;           !  Determine Access Paths
literal MSCP$K_OP_ERASE = 18;           !  Erase
literal MSCP$K_OP_ERGAP = 22;           !  Erase Gap (tapes only)
literal MSCP$K_OP_FLUSH = 19;           !  Flush
literal MSCP$K_OP_FMT = 24;             !  Format (as in floppy disks)
literal MSCP$K_OP_GTCMD = 2;            !  Get Command Status
literal MSCP$K_OP_GTUNT = 3;            !  Get Unit Status
literal MSCP$K_OP_GTLDR = 7;            !  Get Loader Status
literal MSCP$K_OP_MOVE = 12;            !  Move Media
literal MSCP$K_OP_ONLIN = 9;            !  Online
literal MSCP$K_OP_RCEDC = 35;           !  Read Controller Encryption/Decryption Code
literal MSCP$K_OP_READ = 33;            !  Read
literal MSCP$K_OP_REPLC = 20;           !  Replace
literal MSCP$K_OP_REPOS = 37;           !  Reposition (tapes only)
literal MSCP$K_OP_STCON = 4;            !  Set Controller Characteristics
literal MSCP$K_OP_STUNT = 10;           !  Set Unit Characteristics
literal MSCP$K_OP_WRITE = 34;           !  Write
literal MSCP$K_OP_WRITM = 36;           !  Write Tape Mark
!  MSCP End Message Codes
literal MSCP$K_OP_END = 128;            !  End Message Flag
!  MSCP Attention Message Codes (listed in alphabetical order)
literal MSCP$K_OP_ACPTH = 66;           !  Access Path
literal MSCP$K_OP_AVATN = 64;           !  Available
literal MSCP$K_OP_DUPUN = 65;           !  Duplicate Unit Number
literal MSCP$M_SLUN = 16384;
literal MSCP$K_SLUN_RSVP = 32767;       !  SLUN to request unit number for this controller
literal MSCP$S_GENERIC_MSCP = 14;
macro MSCP$L_CMD_REF = 0,0,32,0 %;      !  Command reference number
macro MSCP$W_UNIT = 4,0,16,0 %;         !  Unit number
macro MSCP$V_EU_NO = 4,0,8,0 %;
literal MSCP$S_EU_NO = 8;               !  Emulated unit number
macro MSCP$V_EU_SUBU = 4,0,3,0 %;
literal MSCP$S_EU_SUBU = 3;             !  Old-style unit number
macro MSCP$V_EU_SUBC = 4,3,5,0 %;
literal MSCP$S_EU_SUBC = 5;             !  Old-style controller subtype
macro MSCP$V_EU_CTYPE = 4,8,4,0 %;
literal MSCP$S_EU_CTYPE = 4;            !  Emulated controller type
macro MSCP$V_EU_DESIG = 4,12,3,0 %;
literal MSCP$S_EU_DESIG = 3;            !  Emulated controller designator
macro MSCP$V_SHADOW = 4,15,1,0 %;       !  Shadow unit
macro MSCP$W_SEQ_NUM = 6,0,16,0 %;      !  Sequence number (LAST error log)
macro MSCP$B_OPCODE = 8,0,8,0 %;        !  MSCP operation code
macro MSCP$V_OP_ATTN = 8,6,1,0 %;       !  Attention message
macro MSCP$V_OP_END = 8,7,1,0 %;        !  End message
macro MSCP$W_MODIFIER = 10,0,16,0 %;    !  MSCP command modifiers
macro MSCP$B_FLAGS = 9,0,8,0 %;         !  End message flags
macro MSCP$V_EF_DLS = 9,1,1,0 %;        !  Cached Data Lost (tapes only)
macro MSCP$V_EF_PLS = 9,2,1,0 %;        !  Position Lost (tapes only)
macro MSCP$V_EF_EOT = 9,3,1,0 %;        !  End of Tape Encountered (tapes only)
macro MSCP$V_EF_SEREX = 9,4,1,0 %;      !  Serious exception (tapes only)
macro MSCP$V_EF_ERLOG = 9,5,1,0 %;      !  Error log generated
macro MSCP$V_EF_BBLKU = 9,6,1,0 %;      !  Bad block unreported (disks only)
macro MSCP$V_EF_BBLKR = 9,7,1,0 %;      !  Bad block reported (disks only)
macro MSCP$W_STATUS = 10,0,16,0 %;      !  End message status
macro MSCP$V_ST_MASK = 10,0,5,0 %;
literal MSCP$S_ST_MASK = 5;             !  Status code bits
macro MSCP$V_ST_SBCOD = 10,5,11,0 %;
literal MSCP$S_ST_SBCOD = 11;           !  Subcode bits
!  MSCP Command Operation Codes (defined in alphabetical order)
macro MSCP$V_SLUN = 12,14,1,0 %;        !  Server Local Unit Number flag
literal MSCP$M_MD_SEREC = 256;
literal MSCP$M_MD_SECOR = 512;
literal MSCP$M_MD_CLSEX = 8192;
literal MSCP$M_MD_COMP = 16384;
literal MSCP$M_MD_WRSEQ = 16;
literal MSCP$M_MD_WBKVL = 32;
literal MSCP$M_MD_WBKNV = 64;
literal MSCP$M_MD_SSHDW = 128;
literal MSCP$M_MD_SCCHL = 1024;
literal MSCP$M_MD_SCCHH = 2048;
literal MSCP$M_MD_ERROR = 4096;
literal MSCP$M_MD_EXPRS = 32768;
literal MSCP$M_MD_REWND = 2;
literal MSCP$M_MD_OBJCT = 4;
literal MSCP$M_MD_REVRS = 8;
literal MSCP$M_MD_UNLOD = 16;
literal MSCP$M_MD_IMMED = 64;
literal MSCP$M_MD_DLEOT = 128;
literal MSCP$M_MD_CDATL = 4096;
literal MSCP$M_MD_SPNDW = 1;
literal MSCP$M_MD_ALLCD = 2;
literal MSCP$M_MD_DSOLV = 16;
literal MSCP$M_MD_FLENU = 1;
literal MSCP$M_MD_VOLTL = 2;
literal MSCP$M_MD_NXUNT = 1;
literal MSCP$M_MD_RIP = 1;
literal MSCP$M_MD_IGNMF = 2;
literal MSCP$M_MD_STWRP = 4;
literal MSCP$M_MD_CLWBL = 8;
literal MSCP$M_MD_SHDSP = 16;
literal MSCP$M_MD_EXCAC = 32;
literal MSCP$M_MD_PRIMR = 1;
literal MSCP$M_MD_FKC = 1;
literal MSCP$M_MD_ENRWR = 16;
literal MSCP$M_MD_TBC = 32768;
literal MSCP$S_MSCP_MODIFIERS = 12;
!  Generic MSCP Modifiers
macro MSCP$V_MD_SEREC = 10,8,1,0 %;     !    Suppress error recovery
macro MSCP$V_MD_SECOR = 10,9,1,0 %;     !    Suppress error correction
macro MSCP$V_MD_CLSEX = 10,13,1,0 %;    !    Clear serious exception
macro MSCP$V_MD_COMP = 10,14,1,0 %;     !    Compare
macro MSCP$V_MD_WRSEQ = 10,4,1,0 %;     !    Write shadow set 1 unit at a time
macro MSCP$V_MD_WBKVL = 10,5,1,0 %;     !    Write-back (volatile)
macro MSCP$V_MD_WBKNV = 10,6,1,0 %;     !    Write-back (non-volatile)
macro MSCP$V_MD_SSHDW = 10,7,1,0 %;     !    Suppress Shadowing
macro MSCP$V_MD_SCCHL = 10,10,1,0 %;    !    Suppress caching (low speed)
macro MSCP$V_MD_SCCHH = 10,11,1,0 %;    !    Suppress caching (high speed)
macro MSCP$V_MD_ERROR = 10,12,1,0 %;    !    Force error
macro MSCP$V_MD_EXPRS = 10,15,1,0 %;    !    Express request
macro MSCP$V_MD_REWND = 10,1,1,0 %;     !    Rewind
macro MSCP$V_MD_OBJCT = 10,2,1,0 %;     !    Object count
macro MSCP$V_MD_REVRS = 10,3,1,0 %;     !    Reverse
macro MSCP$V_MD_UNLOD = 10,4,1,0 %;     !    Unload
macro MSCP$V_MD_IMMED = 10,6,1,0 %;     !    Request immediate completion
macro MSCP$V_MD_DLEOT = 10,7,1,0 %;     !    Request detect LEOT
macro MSCP$V_MD_CDATL = 10,12,1,0 %;    !    Clear Cached Data Lost
macro MSCP$V_MD_SPNDW = 10,0,1,0 %;     !    Spin down
macro MSCP$V_MD_ALLCD = 10,1,1,0 %;     !    All class drivers
macro MSCP$V_MD_DSOLV = 10,4,1,0 %;     !    Disolve shadow set
macro MSCP$V_MD_FLENU = 10,0,1,0 %;     !    Flush entire unit
macro MSCP$V_MD_VOLTL = 10,1,1,0 %;     !    Flush volitile only
macro MSCP$V_MD_NXUNT = 10,0,1,0 %;     !    Next unit
macro MSCP$V_MD_RIP = 10,0,1,0 %;       !    Allow self-destruct (online only)
macro MSCP$V_MD_IGNMF = 10,1,1,0 %;     !    Ignore media format error (online only)
macro MSCP$V_MD_STWRP = 10,2,1,0 %;     !    Enable Set Write Protect
macro MSCP$V_MD_CLWBL = 10,3,1,0 %;     !    Clear Write-Back Data Lost
macro MSCP$V_MD_SHDSP = 10,4,1,0 %;     !    Shadow Unit Specified
macro MSCP$V_MD_EXCAC = 10,5,1,0 %;     !    Exclusive access
macro MSCP$V_MD_PRIMR = 10,0,1,0 %;     !    Primary replacement block
macro MSCP$V_MD_FKC = 10,0,1,0 %;       !    Flush Encryption/Decryption Key Cache
macro MSCP$V_MD_ENRWR = 10,4,1,0 %;     !    Enable Re-Write Error Recovery (tapes)
macro MSCP$V_MD_TBC = 10,15,1,0 %;      !    To-be-continued (segmented tapes)
literal MSCP$K_SC_NORML = 0;            !  Normal
literal MSCP$K_SC_SDIGN = 1;            !  Spin Down IGNored
literal MSCP$K_SC_STCON = 2;            !  STill CONnected
literal MSCP$K_SC_DUPUN = 4;            !  DUPlicate UNit number
literal MSCP$K_SC_ALONL = 8;            !  ALready ONLine
literal MSCP$K_SC_STONL = 16;           !  STill ONLine
literal MSCP$K_SC_EOT = 32;             !  EOT encountered (tapes only)
literal MSCP$K_SC_INREP = 32;           !  INcomplete REPlacement (disks only)
literal MSCP$K_SC_IVRCT = 64;           !  InValid RCT (disks only)
literal MSCP$K_SC_RDONY = 128;          !  ReaD ONlY volume format
literal MSCP$M_SC_SDIGN = 32;
literal MSCP$M_SC_STCON = 64;
literal MSCP$M_SC_DUPUN = 128;
literal MSCP$M_SC_ALONL = 256;
literal MSCP$M_SC_STONL = 512;
literal MSCP$M_SC_EOT = 1024;
literal MSCP$M_SC_INREP = 1024;
literal MSCP$M_SC_IVRCT = 2048;
literal MSCP$M_SC_RDONY = 4096;
literal MSCP$K_SC_INVML = 0;            !  INValid Message Length
!  Unit-Offline Subcode Values
literal MSCP$K_SC_UNKNO = 0;            !  UNKoNOwn unit or online to another controller
literal MSCP$K_SC_NOVOL = 1;            !  NO VOLume mounted or drive disabled (RUN/STOP)
literal MSCP$K_SC_INOPR = 2;            !  unit is INOPeRative
literal MSCP$K_SC_UDSBL = 8;            !  Unit disabled by field service or diagnostic
literal MSCP$K_SC_EXUSE = 16;           !  Exclusive use
literal MSCP$K_SC_LDR = 32;             !  Loader cycle error
literal MSCP$M_SC_NOVOL = 32;
literal MSCP$M_SC_INOPR = 64;
literal MSCP$M_SC_UDSBL = 256;
literal MSCP$M_SC_EXUSE = 512;
literal MSCP$M_SC_LDR = 1024;
literal MSCP$K_SC_CPYIP = 2;            !  Copy in progress
literal MSCP$K_SC_NOMEM = 4;            !  No members in shadow set
literal MSCP$K_SC_ALUSE = 32;           !  Already in use
literal MSCP$M_SC_CPYIP = 64;
literal MSCP$M_SC_NOMEM = 128;
literal MSCP$M_SC_ALUSE = 1024;
literal MSCP$K_SC_IVHD = 2;
literal MSCP$K_SC_NOSYNC = 3;
literal MSCP$K_SC_SSCM = 4;
literal MSCP$K_SC_NO512 = 5;
literal MSCP$K_SC_NOFMT = 6;
literal MSCP$K_SC_ECCER = 7;
literal MSCP$K_SC_RCTBD = 8;
literal MSCP$K_SC_NORBL = 9;
!  Write-Protected Subcode Values
literal MSCP$K_SC_DATAL = 8;            !  Unit is DATA Loss write protected (data safety)
literal MSCP$K_SC_SOFTW = 128;          !  Unit is SOFTWare protected 
literal MSCP$K_SC_HARDW = 256;          !  Unit is HARDWare protected 
literal MSCP$M_SC_DATAL = 256;
literal MSCP$M_SC_SOFTW = 4096;
literal MSCP$M_SC_HARDW = 8192;
literal MSCP$K_SC_FRCER = 0;            !  Forced Error (disks)
literal MSCP$K_SC_LGE = 0;              !  Long Gap Encountered (tapes)
literal MSCP$K_SC_MEDIA = 3;            !  Media error.
!  Host Buffer Access Error Subcode Values
literal MSCP$K_SC_ODDTA = 1;
literal MSCP$K_SC_ODDBC = 2;
literal MSCP$K_SC_NXM = 3;
literal MSCP$K_SC_MPAR = 4;
literal MSCP$K_SC_IVPTE = 5;
literal MSCP$K_SC_IVBFN = 6;
literal MSCP$K_SC_BLENV = 7;
literal MSCP$K_SC_ACVIO = 8;
!  Controller Error Subcode Values
literal MSCP$K_SC_DLATE = 1;
literal MSCP$K_SC_EDCER = 2;
literal MSCP$K_SC_DTSTR = 3;
literal MSCP$K_SC_IEDC = 4;
literal MSCP$K_SC_LACIN = 5;
literal MSCP$K_SC_LACOU = 6;
literal MSCP$K_SC_LACCB = 7;
literal MSCP$K_SC_OVRUN = 8;
literal MSCP$K_SC_MEMER = 9;
literal MSCP$K_SC_REMRSRC = 10;
!  Bad Block Replacement Subcode Values
literal MSCP$K_SC_BBROK = 0;
literal MSCP$K_SC_NOTRP = 1;
literal MSCP$K_SC_RPLFL = 2;
literal MSCP$K_SC_ICRCT = 3;
literal MSCP$K_SC_DRVER = 4;
literal MSCP$K_SC_RCTFULL = 5;
literal MSCP$K_SC_RECURFAIL = 6;
!  Unrecognized Media Subcode Values
literal MSCP$K_SC_NOTAPEFMT = 1;
!  Invalid Parameter Subcode Values
literal MSCP$K_SC_IVKLN = 1;
literal MSCP$K_SC_IVKTY = 2;
literal MSCP$K_SC_IVKVL = 3;
!  Media Loader Error Subcode Values
literal MSCP$K_SC_ML_TMO = 1;
literal MSCP$K_SC_ML_TXERR = 2;
literal MSCP$K_SC_ML_PRTCL = 3;
literal MSCP$K_SC_ML_ERROR = 4;
!  Host Error Subcode Values
literal MSCP$K_SC_SEGUNDR = 1;
literal MSCP$S_MSCP_SUBCODES = 12;
!  Success Subcode Values
macro MSCP$V_SC_SDIGN = 10,5,1,0 %;     !  Spin Down IGNored
macro MSCP$V_SC_STCON = 10,6,1,0 %;     !  STill CONnected
macro MSCP$V_SC_DUPUN = 10,7,1,0 %;     !  DUPlicate UNit number
macro MSCP$V_SC_ALONL = 10,8,1,0 %;     !  ALready ONLine
macro MSCP$V_SC_STONL = 10,9,1,0 %;     !  STill ONLine
macro MSCP$V_SC_EOT = 10,10,1,0 %;      !  EOT encountered (tapes only)
macro MSCP$V_SC_INREP = 10,10,1,0 %;    !  INcomplete REPlacement (disks only)
macro MSCP$V_SC_IVRCT = 10,11,1,0 %;    !  InValid RCT (disks only)
macro MSCP$V_SC_RDONY = 10,12,1,0 %;    !  ReaD ONlY volume format
!  Invalid Command Subcode Values
macro MSCP$V_SC_NOVOL = 10,5,1,0 %;     !  NO VOLume mounted or drive disabled (RUN/STOP)
macro MSCP$V_SC_INOPR = 10,6,1,0 %;     !  unit is INOPeRative
macro MSCP$V_SC_UDSBL = 10,8,1,0 %;     !  Unit disabled by field service or diagnostic
macro MSCP$V_SC_EXUSE = 10,9,1,0 %;     !  Exclusive use
macro MSCP$V_SC_LDR = 10,10,1,0 %;      !  Loader cycle error
!  Unit-Available Subcode Values
macro MSCP$V_SC_CPYIP = 10,6,1,0 %;     !  Copy in progress
macro MSCP$V_SC_NOMEM = 10,7,1,0 %;     !  No members in shadow set
macro MSCP$V_SC_ALUSE = 10,10,1,0 %;    !  Already in use
!  Media Format Error Subcode Values
macro MSCP$V_SC_DATAL = 10,8,1,0 %;     !  Unit is DATA Loss write protected (data safety)
macro MSCP$V_SC_SOFTW = 10,12,1,0 %;    !  Unit is SOFTWare protected 
macro MSCP$V_SC_HARDW = 10,13,1,0 %;    !  Unit is HARDWare protected 
!  Data Error Subcode Values
!  Definitions for MSCP Transfer Commands
! 
!  Also the FORMAT command, which includes a
!  buffer descriptor just like transfer commands.
literal MSCP$K_FMT_DFLT = 0;            ! 	device's default
literal MSCP$K_FMT_SING = 1;            ! 	single density
literal MSCP$K_FMT_DOUB = 2;            ! 	double density
literal MSCP$K_FMT_RX33 = 282;          ! 	RX33 - ISO DIS8630-1985
literal MSCP$S_TRANSFER_COMMANDS = 52;
macro MSCP$L_BYTE_CNT = 12,0,32,0 %;    !  Byte count
macro MSCP$B_BUFFER = 16,0,0,0 %;
literal MSCP$S_BUFFER = 12;             !  Buffer descriptor
macro MSCP$L_LBN = 28,0,32,0 %;         !    Logical block number
macro MSCP$L_FRST_BAD = 28,0,32,0 %;    !    First bad block
macro MSCP$L_FMT_FUNC = 28,0,32,0 %;    !    Format function
macro MSCP$L_KEY_ID = 32,0,32,0 %;      !  Key identifier
macro MSCP$L_KEY_LGH = 36,0,32,0 %;     !  Key length
macro MSCP$L_KEY_BUF = 40,0,0,0 %;
literal MSCP$S_KEY_BUF = 12;            !  Key buffer descriptor
macro MSCP$L_POSITION = 28,0,32,0 %;    !  Position (object count)
macro MSCP$L_TAPEREC = 32,0,32,0 %;     !  Tape record byte count
!  Definitions for Abort and Get Command Status Commands and End Messages
literal MSCP$S_ABORT_GTCMD = 20;
macro MSCP$L_OUT_REF = 12,0,32,0 %;     !  Outstanding reference number
macro MSCP$L_CMD_STS = 16,0,32,0 %;     !  Command status
!  Definitions for the Access Non-Volatile Memory Command and End Message
literal MSCP$K_ANM_READ = 0;
literal MSCP$K_ANM_EXCG = 1;
literal MSCP$K_ANM_TSST = 2;
literal MSCP$S_ACCNM = 56;
macro MSCP$L_ANM_SIZE = 12,0,32,0 %;    !  Non-Volatile Memory Size
macro MSCP$L_ANM_OFFS = 16,0,32,0 %;    !  Offset into Non-Volatile Memory
macro MSCP$W_ANM_OPER = 20,0,16,0 %;    !  Non-Volatile Memory Access Operation
macro MSCP$W_ANM_DLGH = 22,0,16,0 %;    !  Data Length
macro MSCP$T_ANM_MEMD = 24,0,0,0 %;
literal MSCP$S_ANM_MEMD = 32;           !  Memory Data
!  Definitions for Display Command and End Message
literal MSCP$S_DISPLAY_CMD = 32;
macro MSCP$W_DITEM = 12,0,16,0 %;       !  Item code
macro MSCP$W_DMODE = 14,0,16,0 %;       !  Mode
macro MSCP$T_DTEXT = 16,0,0,0 %;
literal MSCP$S_DTEXT = 16;              !  Display text
!  Definitions for the Get Unit Status Command and End Message
literal MSCP$M_UF_CMPRD = 1;
literal MSCP$M_UF_CMPWR = 2;
literal MSCP$M_UF_WBKNV = 64;
literal MSCP$M_UF_WRTPD = 256;
literal MSCP$M_UF_EXACC = 1024;
literal MSCP$M_UF_SCCHH = 2048;
literal MSCP$M_UF_WRTPS = 4096;
literal MSCP$M_UF_WRTPH = 8192;
literal MSCP$M_UF_576 = 4;
literal MSCP$M_UF_RMVBL = 128;
literal MSCP$M_UF_SSMST = 512;
literal MSCP$M_UF_SSMEM = 16384;
literal MSCP$M_UF_REPLC = 32768;
literal MSCP$M_UF_CACFL = 4;
literal MSCP$M_UF_EWRER = 8;
literal MSCP$M_UF_VARSP = 16;
literal MSCP$M_UF_VSMSU = 32;
literal MSCP$M_UF_LOADR = 512;
literal MSCP$M_UF_CACH = 32768;
literal MSCP$M_SLUN_C = 31;
literal MSCP$M_SLUN_D1 = 992;
literal MSCP$M_SLUN_D0 = 31744;
literal MSCP$M_MTYP_N = 127;
literal MSCP$M_MTYP_A2 = 3968;
literal MSCP$M_MTYP_A1 = 126976;
literal MSCP$M_MTYP_A0 = 4063232;
literal MSCP$M_MTYP_D1 = 130023424;
literal MSCP$M_MTYP_D0 = -134217728;
literal MSCP$K_CM_NOCPY = 0;
literal MSCP$K_CM_COPY = 1;
literal MSCP$K_CM_MGCPY = 2;
literal MSCP$M_TF_800 = 1;
literal MSCP$M_TF_PE = 2;
literal MSCP$M_TF_GCR = 4;
literal MSCP$M_TF_BLK = 8;
literal MSCP$M_TF_NOR = 1;
literal MSCP$M_TF_BHD = 2;
literal MSCP$M_TF_ENH = 2;
literal MSCP$M_TF_NDC = 4;
literal MSCP$M_TF_EDC = 8;
literal MSCP$K_TC_OLD = 0;
literal MSCP$K_TC_9TR = 256;
literal MSCP$K_TC_CTP = 512;
literal MSCP$K_TC_HPC = 768;
literal MSCP$K_TC_WOD = 1024;
literal MSCP$M_TF_MASK = 255;           !  Density field mask
literal MSCP$K_TF_CODE = 256;           !  Format code multiplier
literal MSCP$S_GTUNT = 50;
macro MSCP$W_MULT_UNT = 12,0,16,0 %;    !  Multi-unit code
macro MSCP$W_UNT_FLGS = 14,0,16,0 %;    !  Unit flags
macro MSCP$V_UF_CMPRD = 14,0,1,0 %;     !    Compare reads 
macro MSCP$V_UF_CMPWR = 14,1,1,0 %;     !    Compare writes 
macro MSCP$V_UF_WBKNV = 14,6,1,0 %;     !    Write-back (non-volatile) [disks only]
macro MSCP$V_UF_WRTPD = 14,8,1,0 %;     !    Write protect (data safety)
macro MSCP$V_UF_EXACC = 14,10,1,0 %;    !    Exclusive access
macro MSCP$V_UF_SCCHH = 14,11,1,0 %;    !    Suppress caching (High speed) 
macro MSCP$V_UF_WRTPS = 14,12,1,0 %;    !    Write protect (software) 
macro MSCP$V_UF_WRTPH = 14,13,1,0 %;    !    Write protect (hardware)
macro MSCP$V_UF_576 = 14,2,1,0 %;       !    576 byte sectors
macro MSCP$V_UF_RMVBL = 14,7,1,0 %;     !    Removeable media
macro MSCP$V_UF_SSMST = 14,9,1,0 %;     !    Shadow set master
macro MSCP$V_UF_SSMEM = 14,14,1,0 %;    !    Shadow set member
macro MSCP$V_UF_REPLC = 14,15,1,0 %;    !    Controller initiated bad block replacement
macro MSCP$V_UF_CACFL = 14,2,1,0 %;     !    Cache flushed
macro MSCP$V_UF_EWRER = 14,3,1,0 %;     !    Enhanced Write Error Recovery
macro MSCP$V_UF_VARSP = 14,4,1,0 %;     !    Variable speed unit
macro MSCP$V_UF_VSMSU = 14,5,1,0 %;     !    Variable speed mode suppression
macro MSCP$V_UF_LOADR = 14,9,1,0 %;     !    Media Loader Present
macro MSCP$V_UF_CACH = 14,15,1,0 %;     !    Write-back Caching
macro MSCP$Q_UNIT_ID = 20,0,0,0 %;
literal MSCP$S_UNIT_ID = 8;             !  Unit identifier
macro MSCP$L_EXCL_LBA = 20,0,32,0 %;    !  Excluded LBN area address [disks only]
macro MSCP$L_EXCL_LBC = 24,0,32,0 %;    !  Excluded LBN block count [disks only]
macro MSCP$L_SLUN_ALLOCLS = 20,0,32,0 %;
macro MSCP$W_SLUN_UNIT = 24,0,16,0 %;
macro MSCP$W_SLUN_DEVNAME = 26,0,16,0 %;
macro MSCP$V_SLUN_C = 26,0,5,0 %;
literal MSCP$S_SLUN_C = 5;
macro MSCP$V_SLUN_D1 = 26,5,5,0 %;
literal MSCP$S_SLUN_D1 = 5;
macro MSCP$V_SLUN_D0 = 26,10,5,0 %;
literal MSCP$S_SLUN_D0 = 5;
macro MSCP$L_DEV_PARM = 28,0,32,0 %;    !  Device dependent parameters
macro MSCP$L_MEDIA_ID = 28,0,32,0 %;    !  Media type identifier
macro MSCP$V_MTYP_N = 28,0,7,0 %;
literal MSCP$S_MTYP_N = 7;              !    Media # (i.e. 7 of RK07)
macro MSCP$V_MTYP_A2 = 28,7,5,0 %;
literal MSCP$S_MTYP_A2 = 5;             !    Media name char.
macro MSCP$V_MTYP_A1 = 28,12,5,0 %;
literal MSCP$S_MTYP_A1 = 5;             !    Media name continued
macro MSCP$V_MTYP_A0 = 28,17,5,0 %;
literal MSCP$S_MTYP_A0 = 5;             !      "    "      "
macro MSCP$V_MTYP_D1 = 28,22,5,0 %;
literal MSCP$S_MTYP_D1 = 5;             !    Dev mnemonic char.
macro MSCP$V_MTYP_D0 = 28,27,5,0 %;
literal MSCP$S_MTYP_D0 = 5;             !    Mnemonic continued
macro MSCP$W_SHDW_UNT = 32,0,16,0 %;    !  Shadow unit
macro MSCP$W_COPY_MOD = 34,0,16,0 %;    !  Copy mode
macro MSCP$W_SHDW_STS = 34,0,16,0 %;    !  Shadow unit status
macro MSCP$W_FORMAT = 32,0,16,0 %;      !  Original (Old) format
macro MSCP$V_TF_800 = 32,0,1,0 %;       !   NRZI 800 bpi
macro MSCP$V_TF_PE = 32,1,1,0 %;        !   Phase encoded 1600 bpi
macro MSCP$V_TF_GCR = 32,2,1,0 %;       !   Group code recording 6250 bpi
macro MSCP$V_TF_BLK = 32,3,1,0 %;       !   Block format (TK50)
macro MSCP$V_TF_NOR = 32,0,1,0 %;       !   Normal (low) density (833 bpi TK50)
macro MSCP$V_TF_BHD = 32,1,1,0 %;       !   Block mode High Density (1250 bpi TK70)
macro MSCP$V_TF_ENH = 32,1,1,0 %;       !   Enhanced density
macro MSCP$V_TF_NDC = 32,2,1,0 %;       !   NOR with data comp.
macro MSCP$V_TF_EDC = 32,3,1,0 %;       !   ENH with data comp.
macro MSCP$W_SPEED = 34,0,16,0 %;       !  Speed
macro MSCP$W_TRACK = 36,0,16,0 %;       !  Track size
macro MSCP$W_GROUP = 38,0,16,0 %;       !  Group size
macro MSCP$W_CYLINDER = 40,0,16,0 %;    !  Cylinder size
macro MSCP$B_UNIT_SVR = 42,0,8,0 %;     !  Unit software version
macro MSCP$B_UNIT_HVR = 43,0,8,0 %;     !  Unit hardware version
macro MSCP$W_RCT_SIZE = 44,0,16,0 %;    !  RCT size
macro MSCP$B_RBNS = 46,0,8,0 %;         !  RBNs per track
macro MSCP$B_RCT_CPYS = 47,0,8,0 %;     !  Number of RCT copies
macro MSCP$W_LOAD_AVAIL = 48,0,16,0 %;  !  Controller load available (VMS server load balancing)
macro MSCP$W_FORMENU = 36,0,16,0 %;     !  Format menu
macro MSCP$B_FREECAP = 38,0,8,0 %;      !  Free capacity
!  Definitions for Online and Set Unit Characteristics Command and End Messages
literal MSCP$S_ONLIN_STUNT = 44;
macro MSCP$L_UNT_SIZE = 36,0,32,0 %;    !  Unit size
macro MSCP$L_VOL_SER = 40,0,32,0 %;     !  Volume serial number
macro MSCP$L_MAXWTREC = 36,0,32,0 %;    !  Maximum write record size
macro MSCP$W_NOISEREC = 40,0,16,0 %;    !  Noise record
!  Definitions for the Read Controller Encrypt/Decrypt Code Command and End Message
literal MSCP$S_RCEDC = 36;
macro MSCP$L_CODE = 32,0,32,0 %;        !  Encrypt/Decrypt Code Length
!  Definitions for the Replace Command and End Message (disks only)
literal MSCP$S_REPLC = 16;
macro MSCP$L_RBN = 12,0,32,0 %;         !  Replacement block number
!  Definitions for the Reposition Command and End Message (tapes only)
literal MSCP$S_REPOS = 20;
macro MSCP$L_REC_CNT = 12,0,32,0 %;     !  Record/Object count
macro MSCP$L_TMGP_CNT = 16,0,32,0 %;    !  Tape mark count
macro MSCP$L_RCSKIPED = 12,0,32,0 %;    !  Records skipped
macro MSCP$L_TMSKIPED = 16,0,32,0 %;    !  Tape markes skipped
!  Definitions for the Set Controller Characteristics Command and End Message
literal MSCP$M_CF_576 = 1;
literal MSCP$M_CF_SHADW = 2;
literal MSCP$M_CF_MLTHS = 4;
literal MSCP$M_CF_THIS = 16;
literal MSCP$M_CF_OTHER = 32;
literal MSCP$M_CF_MISC = 64;
literal MSCP$M_CF_ATTN = 128;
literal MSCP$M_CF_LOAD = 8192;
literal MSCP$M_CF_EDCRP = 16384;
literal MSCP$M_CF_REPLC = 32768;
literal MSCP$M_CF_SRT = 32768;
literal MSCP$K_CL_CNTRL = 1;
literal MSCP$K_CL_DISK = 2;
literal MSCP$K_CL_TAPE = 3;
literal MSCP$K_CL_D144 = 4;
literal MSCP$K_CL_LDR = 5;
!   MSCP Controller Model
literal MSCP$K_CM_HSC50 = 1;
literal MSCP$K_CM_UDA50 = 2;
literal MSCP$K_CM_RC25 = 3;
literal MSCP$K_CM_EMULA = 4;
literal MSCP$K_CM_TU81 = 5;
literal MSCP$K_CM_UDA52 = 6;
literal MSCP$K_CM_UDA50A = 6;
literal MSCP$K_CM_RDRX = 7;
literal MSCP$K_CM_TOPS = 8;
literal MSCP$K_CM_TK50 = 9;
literal MSCP$K_CM_TQK50 = 9;
literal MSCP$K_CM_RUX50 = 10;
literal MSCP$K_CM_AIO = 12;
literal MSCP$K_CM_KFBTA = 12;
literal MSCP$K_CM_KDA50 = 13;
literal MSCP$K_CM_TK70 = 14;
literal MSCP$K_CM_TQK70 = 14;
literal MSCP$K_CM_RV20 = 15;
literal MSCP$K_CM_RRD50 = 16;
literal MSCP$K_CM_RRD50Q = 16;
literal MSCP$K_CM_KDB50 = 18;
literal MSCP$K_CM_RQDX3 = 19;
literal MSCP$K_CM_RQDX4 = 20;
literal MSCP$K_CM_DSSI_DISK = 21;
literal MSCP$K_CM_DSSI_TAPE = 22;
literal MSCP$K_CM_DSSI_DSKTAP = 23;
literal MSCP$K_CM_DSSI_OTHER = 24;
literal MSCP$K_CM_TUK50 = 25;
literal MSCP$K_CM_RRD50U = 26;
literal MSCP$K_CM_KDM70 = 27;
literal MSCP$K_CM_TQL70 = 28;
literal MSCP$K_CM_TM32 = 29;
literal MSCP$K_CM_HSC70 = 32;
literal MSCP$K_CM_HSC40 = 33;
literal MSCP$K_CM_HSC60 = 34;
literal MSCP$K_CM_HSC90 = 35;
literal MSCP$K_CM_KSB50 = 64;
literal MSCP$K_CM_TK50_DEBNT = 65;
literal MSCP$K_CM_TBK70 = 66;
literal MSCP$K_CM_TBK7L = 68;
literal MSCP$K_CM_RF30 = 96;
literal MSCP$K_CM_RF71 = 97;
literal MSCP$K_CM_TF85 = 98;
literal MSCP$K_CM_TF70 = 99;
literal MSCP$K_CM_RF31 = 100;
literal MSCP$K_CM_RF72 = 101;
literal MSCP$K_CM_RF73 = 102;
literal MSCP$K_CM_TF70L = 103;
literal MSCP$K_CM_HSX50 = 128;
literal MSCP$K_CM_ULTRIX = 248;
literal MSCP$K_CM_SVS = 249;
literal MSCP$K_MIN_SIZ = 12;            !  Shortest Command
literal MSCP$C_MIN_SIZ = 12;            !  Shortest Command
literal MSCP$K_MXCMDLEN = 36;           !  Longest Command
literal MSCP$C_MXCMDLEN = 36;           !  Longest Command
literal MSCP$K_LEN = 50;                !  Longest End Message
literal MSCP$C_LEN = 50;                !  Longest End Message
literal MSCP$S_STCON = 32;
macro MSCP$B_CNT_ALCS = 4,0,8,0 %;      !  Allocation class
macro MSCP$W_VERSION = 12,0,16,0 %;     !  MSCP version
macro MSCP$W_CNT_FLGS = 14,0,16,0 %;    !  Controller flags
macro MSCP$V_CF_576 = 14,0,1,0 %;       !    576 byte sectors [disks only]
macro MSCP$V_CF_SHADW = 14,1,1,0 %;     !    Shadowing [disks only]
macro MSCP$V_CF_MLTHS = 14,2,1,0 %;     !    Multi-Host
macro MSCP$V_CF_THIS = 14,4,1,0 %;      !    Enable this host's error log
macro MSCP$V_CF_OTHER = 14,5,1,0 %;     !    Enable other host's error log
macro MSCP$V_CF_MISC = 14,6,1,0 %;      !    Enable miscellaneous error log
macro MSCP$V_CF_ATTN = 14,7,1,0 %;      !    Enable attention messages
macro MSCP$V_CF_LOAD = 14,13,1,0 %;     !    Controller returns load available information
macro MSCP$V_CF_EDCRP = 14,14,1,0 %;    !    Data Encrypt/Decrypt Supported
macro MSCP$V_CF_REPLC = 14,15,1,0 %;    !    Controller Initiated Bad Block Replacement [disks only]
macro MSCP$V_CF_SRT = 14,15,1,0 %;      !     Segemented Record Transfer
macro MSCP$W_HST_TMO = 16,0,16,0 %;     !  Host timeout
macro MSCP$W_CNT_TMO = 16,0,16,0 %;     !  Controller timeout
macro MSCP$B_CNT_SVR = 18,0,8,0 %;      !  Controller software version
macro MSCP$B_CNT_HVR = 19,0,8,0 %;      !  Controller hardware version
macro MSCP$Q_TIME = 20,0,0,0 %;
literal MSCP$S_TIME = 8;                !  Quad-word date-time
macro MSCP$Q_CNT_ID = 20,0,0,0 %;
literal MSCP$S_CNT_ID = 8;              !  Controller ID
macro MSCP$L_MAXBCNT = 28,0,32,0 %;     !  Maximum supported byte count
!   Controller and Unit identifier Classes. (Device Class)
 
!*** MODULE $MVLDEF ***
! +
!  MAGNETIC TAPE VOLUME LIST
!  THIS STRUCTURE DESCRIBES THE VOLUMES IN A VOLUME SET
! -
literal MVL$K_FIXLEN = 36;              ! LENGTH OF FIXED AREA OF STRUCTURE 
literal MVL$C_FIXLEN = 36;              ! LENGTH OF FIXED AREA OF STRUCTURE 
literal MVL$S_MVLDEF = 36;
macro MVL$L_VCB = 0,0,32,0 %;           ! ADDRESS OF VCB 
macro MVL$W_SIZE = 8,0,16,0 %;          ! SIZE OF STRUCTURE 
macro MVL$B_TYPE = 10,0,8,0 %;          ! TYPE OF STRUCTURE 
macro MVL$B_NVOLS = 11,0,8,0 %;         ! NUMBER OF VOLUMES IN VOLUME SET 
macro MVL$T_SET_ID = 12,0,0,0 %;
literal MVL$S_SET_ID = 6;               ! FILE SET ID FOR THE VOLUME SET 
macro MVL$B_VOL_ACC = 18,0,8,0 %;       ! VOLUME ACCESSIBILTY CHARACTER DEFAULT 
macro MVL$B_MOU_PRV = 19,0,8,0 %;       ! USER'S MOUNT TIME PRIVILEGES 
macro MVL$V_VOLPRO = 19,0,1,0 %;        ! VOLPRO PRIVILEGE 
macro MVL$V_OVRPRO = 19,1,1,0 %;        ! OVERRIDE PRIVILEGE (BYPASS,SYSPRV,VOLPRO) 
macro MVL$V_OPER = 19,2,1,0 %;          ! OPER PRIVILEDGE
macro MVL$T_VOLOWNER = 20,0,0,0 %;
literal MVL$S_VOLOWNER = 14;            !  VOL1 ONER IDENTIFIER  FIELD
macro MVL$B_STDVER = 34,0,8,0 %;        !  ANSI VERSION OF VOLUME SET
!  THE FOLLOWING STRUCTURE IN REPEATED IN MVL FOR EACH REEL IN VOLUME SET
literal MVL$K_LENGTH = 8;               ! LENGTH OF STRUCTURE 
literal MVL$C_LENGTH = 8;               ! LENGTH OF STRUCTURE 
literal MVL$S_MVLDEF1 = 8;
macro MVL$T_VOLLBL = 0,0,0,0 %;
literal MVL$S_VOLLBL = 6;               ! VOLUME LABEL 
macro MVL$B_RVN = 6,0,8,0 %;            ! RELATIVE UNIT NUMBER 
macro MVL$B_STATUS = 7,0,8,0 %;         ! STATUS OF VOLUME 
macro MVL$V_MOUNTED = 7,0,1,0 %;        ! REEL IS MOUNTED 
macro MVL$V_UNUSED = 7,1,1,0 %;         ! IS THIS ENTRY IN USE 
macro MVL$V_OVERIDE = 7,2,1,0 %;        ! CAN OVERRIDE PROTECTION ON THIS REEL 
 
!*** MODULE $MVMSLDEF ***
! ++
!   $MVMSLDEF - mount verification messages list structure definition
! 
! 	The MVMSL provides a mechanism for communicating information about 
! 	mount verification messages to device driver special mount 
! 	verification processing routines.
! --
literal MVMSL$M_NOSUFFIX = 1;
literal MVMSL$M_SUPRESS = 2;
literal MVMSL$K_LENGTH = 8;             !  Length of a MVMSL entry.
literal MVMSL$S_MVMSLDEF = 13;
macro MVMSL$B_MAXIDX = -5,0,8,0 %;      !  Maximum legal MVMSL index.
macro MVMSL$L_SNDMSGOFF = -4,0,32,1 %;  !  Offset from MVMSL base to SEND_MESSAGE routine
macro MVMSL$W_MSG_CODE = 0,0,16,0 %;    !  The MSG$_ code for this entry.
macro MVMSL$W_FLAGS = 2,0,16,0 %;       !  Processing flags:
macro MVMSL$V_NOSUFFIX = 2,0,1,0 %;     ! 	Do not add suffix.
macro MVMSL$V_SUPRESS = 2,1,1,0 %;      ! 	May be suppressed.
macro MVMSL$L_TEXTOFF = 4,0,32,1 %;     !  Offset from MVMSL base to ASCIC message text.
 
!*** MODULE $NABDEF ***
! +
!  Generalized Event Notification Definitions
! 
!  Event NAme Block
! 
!  This is the third level structure of the event
!  notification database.  It contains the event
!  name and event facility code.
! 
!  These blocks are variable length based on the
!  length of the event name.
! 
! -
literal NAB$K_LENGTH = 16;              !  LENGTH OF BLOCK MINUS NAME
literal NAB$C_LENGTH = 16;              !  LENGTH OF BLOCK MINUS NAME
literal NAB$S_NABDEF = 48;
macro NAB$L_ADB_FLINK = 0,0,32,0 %;     !  LINK to AST DATA BLOCK
macro NAB$L_ADB_BLINK = 4,0,32,0 %;     !  BACKWARD LINK    
macro NAB$W_SIZE = 8,0,16,0 %;          !  STRUCTURE SIZE IN BYTES
macro NAB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE    
macro NAB$B_SUBTYPE = 11,0,8,0 %;       !  STRUCTURE SUBTYPE CODE
macro NAB$W_EVTFAC = 12,0,16,0 %;       !  FACILITY CODE
macro NAB$W_REMOTE_REFC = 14,0,16,0 %;  !  NUMBER OF ADBS WITH REMOTE REQUEST
macro NAB$T_EVENT_NAME = 16,0,0,0 %;
literal NAB$S_EVENT_NAME = 32;          !  EVENT NAME (MUST BE LAST)
 
!*** MODULE $NBIADEF ***
literal NBIA$M_NPE = 32768;
literal NBIA$M_BILP = 65536;
literal NBIA$M_FNPE = 131072;
literal NBIA$M_FDB = 262144;
literal NBIA$M_FLIP_29_22 = 524288;
literal NBIA$M_NIE = 2097152;
literal NBIA$M_TDF = 134217728;
literal NBIA$M_WDSF = 268435456;
literal NBIA$M_RDSF = 536870912;
literal NBIA$M_CPF = 1073741824;
literal NBIA$M_DPF = -2147483648;
literal NBIA$M_ADIN = 1;
literal NBIA$M_BI0P = 2;
literal NBIA$M_BI1P = 4;
literal NBIA$M_BI0_PE = 8;
literal NBIA$M_BI1_PE = 16;
literal NBIA$M_NBIA_PE = 32;
literal NBIA$M_BI0PU = 64;
literal NBIA$M_BI1PU = 128;
literal NBIA$M_NAWR = 512;
literal NBIA$M_FBPE = 1024;
literal NBIA$S_NBIADEF = 32;
! +
! 	Nautilus NBIA register definitions
! 
!  The NBIA sits in an NMI nexus and can connect one or two BIs to a Nautilus.
! -
macro NBIA$L_CSR0 = 0,0,32,0 %;         !  Control and Status
macro NBIA$B_NAC = 0,0,8,0 %;           !  Adapter Type Field
macro NBIA$V_NBIVO = 0,9,5,0 %;
literal NBIA$S_NBIVO = 5;               !  Vector Offset Register
macro NBIA$V_NPE = 0,15,1,0 %;          !  NBI Parity Error
macro NBIA$V_BILP = 0,16,1,0 %;         !  BIIC Loopback
macro NBIA$V_FNPE = 0,17,1,0 %;         !  Force NBI Parity error
macro NBIA$V_FDB = 0,18,1,0 %;          !  Force DMA busy
macro NBIA$V_FLIP_29_22 = 0,19,1,0 %;   !  Maintenance Magic
macro NBIA$V_NIE = 0,21,1,0 %;          !  NBI Interrupt Enable
macro NBIA$V_TOI = 0,24,3,0 %;
literal NBIA$S_TOI = 3;                 !  Time-out Interrupt
macro NBIA$V_TDF = 0,27,1,0 %;          !  Transmitter During Fault
macro NBIA$V_WDSF = 0,28,1,0 %;         !  Write Data Sequence Fault
macro NBIA$V_RDSF = 0,29,1,0 %;         !  Read Data Sequence Fault
macro NBIA$V_CPF = 0,30,1,0 %;          !  Control Parity Fault
macro NBIA$V_DPF = 0,31,1,0 %;          !  Data Parity Fault
macro NBIA$L_CSR1 = 4,0,32,0 %;         !  NBIA CSR1
macro NBIA$V_ADIN = 4,0,1,0 %;          !  Adaptor Init
macro NBIA$V_BI0P = 4,1,1,0 %;          !  BI0 Present
macro NBIA$V_BI1P = 4,2,1,0 %;          !  BI1 Present
macro NBIA$V_BI0_PE = 4,3,1,0 %;        !  BI0 Parity Error
macro NBIA$V_BI1_PE = 4,4,1,0 %;        !  BI1 Parity Error
macro NBIA$V_NBIA_PE = 4,5,1,0 %;       !  NBIA Parity Error
macro NBIA$V_BI0PU = 4,6,1,0 %;         !  BI0 Power Up
macro NBIA$V_BI1PU = 4,7,1,0 %;         !  BI1 Power Up
macro NBIA$V_NAWR = 4,9,1,0 %;          !  NBIA Wraparound (Maint Magic)
macro NBIA$V_FBPE = 4,10,1,0 %;         !  Force NBIB Parity Error
macro NBIA$V_MOD_REV = 4,12,4,0 %;
literal NBIA$S_MOD_REV = 4;             !  Module Revision
macro NBIA$L_BI0I = 8,0,32,0 %;         !  BI0 Stop Register
macro NBIA$L_BI1I = 12,0,32,0 %;        !  BI1 Stop Register
macro NBIA$L_BR4VR = 16,0,32,0 %;       !  BR4 Vector Register
macro NBIA$L_BR5VR = 20,0,32,0 %;       !  BR5 Vector Register
macro NBIA$L_BR6VR = 24,0,32,0 %;       !  BR6 Vector Register
macro NBIA$L_BR7VR = 28,0,32,0 %;       !  BR7 Vector Register
 
!*** MODULE $NAFDEF ***
! ++
! 
!  Structure for network proxy login file, NETUAF.DAT (VMS version 4.x)
! 
! --
literal NAF$M_TASK = 1;
literal NAF$M_BATCH = 2;
literal NAF$M_INTERACTIVE = 4;
literal NAF$K_LENGTH = 100;             !  Length of record 
literal NAF$C_LENGTH = 100;             !  Length of record 
literal NAF$S_NAFDEF = 100;
macro NAF$T_REMNAME = 0,0,0,0 %;
literal NAF$S_REMNAME = 64;             !  Combined nodename and remote username 
macro NAF$T_NODE = 0,0,0,0 %;
literal NAF$S_NODE = 32;                !  Node name 
macro NAF$T_REMUSER = 32,0,0,0 %;
literal NAF$S_REMUSER = 32;             !  Remote username 
macro NAF$T_LOCALUSER = 64,0,0,0 %;
literal NAF$S_LOCALUSER = 32;           !  Local username 
macro NAF$L_FLAGS = 96,0,32,1 %;        !  Flags longword
macro NAF$V_TASK = 96,0,1,0 %;          !  Allow task=0 access
macro NAF$V_BATCH = 96,1,1,0 %;         !  Allow batch jobs
macro NAF$V_INTERACTIVE = 96,2,1,0 %;   !  Allow interactive login
 
!*** MODULE $NAFV5DEF ***
! ++
! 
!  Structure for network proxy login file, NETPROXY.DAT
! 
! --
literal NAFV5$C_PROXY_FIXEDLEN = 4;
literal NAFV5$K_PROXY_FIXEDLEN = 4;
literal NAFV5$C_DEFPROXY = 1;           !  Default proxy account
literal NAFV5$C_PROXY = 2;              !  NONdefault proxy account
literal NAFV5$C_MAXPROXY = 15;          !  Max number of proxy accounts
literal NAFV5$K_MAXPROXY = 15;          !  Max number of proxy accounts
literal NAFV5$C_MAXPROXYLEN = 32;       !  Max length of proxy string
literal NAFV5$K_MAXPROXYLEN = 32;       !  Max length of proxy string
literal NAFV5$S_NAFV5PROXY = 4;
macro NAFV5$W_PROXYLEN = 0,0,16,0 %;    !  String length
macro NAFV5$W_TYPE = 2,0,16,0 %;        !  Type field
macro NAFV5$T_PROXY = 4,0,0,0 %;        !  Local proxy account name
literal NAFV5$M_TASK = 1;
literal NAFV5$M_BATCH = 2;
literal NAFV5$M_INTERACTIVE = 4;
literal NAFV5$M_UIC = 8;
literal NAFV5$K_FIXEDLEN = 76;          !  Length of fixed part of record 
literal NAFV5$C_FIXEDLEN = 76;          !  Length of fixed part of record 
literal NAFV5$C_FORMAT1 = 1;            !  format version #
literal NAFV5$K_FORMAT1 = 1;            !  format version #
!  Define the max record size
literal NAFV5$C_MAXREC = 656;
literal NAFV5$K_MAXREC = 656;
literal NAFV5$S_NAFV5DEF = 76;
macro NAFV5$W_FORMAT = 0,0,16,0 %;      !  Record format version
macro NAFV5$W_RECLEN = 2,0,16,0 %;      !  Record length
macro NAFV5$W_NODELEN = 4,0,16,0 %;     !  Length of remote node string
macro NAFV5$W_REMUSERLEN = 6,0,16,0 %;  !  Length of remote user string
macro NAFV5$L_FLAGS = 8,0,32,1 %;       !  Flags longword
macro NAFV5$V_TASK = 8,0,1,0 %;         !  Allow task=0 access
macro NAFV5$V_BATCH = 8,1,1,0 %;        !  Allow batch jobs
macro NAFV5$V_INTERACTIVE = 8,2,1,0 %;  !  Allow interactive login
macro NAFV5$V_UIC = 8,3,1,0 %;          !  Remote user uses UIC authentication
macro NAFV5$T_REMNAME = 12,0,0,0 %;
literal NAFV5$S_REMNAME = 64;           !  Combined nodename and remote username 
macro NAFV5$T_NODE = 12,0,0,0 %;
literal NAFV5$S_NODE = 32;              !  Node name 
macro NAFV5$T_REMUSER = 44,0,0,0 %;
literal NAFV5$S_REMUSER = 32;           !  Remote username 
macro NAFV5$L_REMUIC = 44,0,32,0 %;     !  Remote UIC
macro NAFV5$W_REMUIC_MEM = 44,0,16,0 %; !  Member number
macro NAFV5$W_REMUIC_GRP = 46,0,16,0 %; !  Group number
 
!*** MODULE $NBWDEF ***
! 
!  NMI Bus Window (NBW) register definitions. These are offsets from a virtual
!  base address. Due to the widely spaced addresses of the registers, they
!  are spread across 4 virtual pages. CSR0 starts on byte zero of the
!  first virtual page.
! 
literal NBW$L_NMIERR = 0;               !  NBW CSR0
literal NBW$L_NBWERR = 8;               !  NBW CSR1
literal NBW$L_DIAG = 512;               !  NBW CSR2
literal NBW$L_DIAGSC = 520;             !  NBW CSR3
literal NBW$L_IPINT = 1024;             !  NBW CSR4
literal NBW$L_NMIEAR = 1536;            !  NBW CSR6
literal NBW$L_SILO = 1544;              !  NBW CSR7
literal NMIERR$M_ADAP_CODE = 255;
literal NMIERR$M_RSRV_0 = 768;
literal NMIERR$M_NBW_CPE = 1024;
literal NMIERR$M_MEM_NMI = 2048;
literal NMIERR$M_BUF_FUL = 4096;
literal NMIERR$M_ILCK_BSY = 8192;
literal NMIERR$M_NBW_DPE = 16384;
literal NMIERR$M_CPU_NMI = 32768;
literal NMIERR$M_REV_LVL = 983040;
literal NMIERR$M_RSRV_1 = 15728640;
literal NMIERR$M_TMO_CODE = 117440512;
literal NMIERR$M_GUILTY = 134217728;
literal NMIERR$M_WSE = 268435456;
literal NMIERR$M_RSE = 536870912;
literal NMIERR$M_NMI_CPE = 1073741824;
literal NMIERR$M_NMI_DPE = -2147483648;
literal NMIERR$K_TMO_NOTMO = 0;         !  No timeout
literal NMIERR$K_TMO_MCLNAK = 1;        !  MCL No ACK
literal NMIERR$K_TMO_ILCKTO = 2;        !  Interlock timeout
literal NMIERR$K_TMO_NORRD = 3;         !  No read return data
literal NMIERR$K_TMO_NA_NR = 4;         !  No access, no response
literal NMIERR$K_TMO_NA_TB = 5;         !  No access to bus
literal NMIERR$K_TMO_NA_ILCK = 6;       !  No access, interlocked
literal NMIERR$K_TMO_NA_BSY = 7;        !  No access, busy
literal NBWERR$M_RSRV_2 = 255;
literal NBWERR$M_DIAG = 256;
literal NBWERR$M_RSRV_3 = 512;
literal NBWERR$M_TMO_IE = 1024;
literal NBWERR$M_MULT_TO = 2048;
literal NBWERR$M_I_BCON = 4096;
literal NBWERR$M_RSRV_4 = 8192;
literal NBWERR$M_GUILTY = 16384;
literal NBWERR$M_RSRV_5 = 33521664;
literal NBWERR$M_I_ADAP = 33554432;
literal NBWERR$M_RSRV_6 = -67108864;
literal NBWDIAG$M_RSRV_7 = 511;
literal NBWDIAG$M_DEV_LST = 512;
literal NBWDIAG$M_FPE = 7168;
literal NBWDIAG$M_RSRV_8 = 33546240;
literal NBWDIAG$M_LOOP = 33554432;
literal NBWDIAG$M_RSRV_9 = -67108864;
literal NBWDIAG$K_FPE_NO_ERR = 0;       !  No error
literal NBWDIAG$K_FPE_NMIDPE = 4;       !  NMI data parity err
literal NBWDIAG$K_FPE_NMICPE = 5;       !  NMI control par err
literal NBWDIAG$K_FPR_NBWCPE = 6;       !  NBW control par err
literal NBWDIAG$K_FPE_NBWDPE = 7;       !  NBW data parity err
literal NBWIP$M_RSRV_0 = 127;
literal NBWIP$M_IP0 = 128;
literal NBWIP$M_RSRV_1 = 32512;
literal NBWIP$M_IP1 = 32768;
literal NBWIP$M_RSRV_2 = 8323072;
literal NBWIP$M_IP2 = 8388608;
literal NBWIP$M_RSRV_3 = 2130706432;
literal NBWIP$M_IP3 = -2147483648;
literal NBWEAR$M_EADDR = 1073741823;
literal NBWEAR$M_RSRV_4 = 1073741824;
literal NBWEAR$M_WF_TO = -2147483648;
literal NBWSILO$M_MBZ_0 = 7;
literal NBWSILO$M_NMI_CONF = 24;
literal NBWSILO$M_NMI_PA = 32;
literal NBWSILO$M_NMI_FUNC0 = 192;
literal NBWSILO$M_MBZ_1 = 1792;
literal NBWSILO$M_NMI_FUNC1 = 14336;
literal NBWSILO$M_ID_MASK0 = 49152;
literal NBWSILO$M_MBZ_2 = 458752;
literal NBWSILO$M_ID_MASK1 = 1572864;
literal NBWSILO$M_NBW_ARB = 2097152;
literal NBWSILO$M_MEM_ARB = 4194304;
literal NBWSILO$M_P3_ARB = 8388608;
literal NBWSILO$M_MBZ_3 = 117440512;
literal NBWSILO$M_P1_ARB = 134217728;
literal NBWSILO$M_P0_ARB = 268435456;
literal NBWSILO$M_MEMBUSY = 536870912;
literal NBWSILO$M_RSRV_5 = 1073741824;
literal NBWSILO$M_A_FAULT = -2147483648;
literal NBWCSR$S_NBWCSR = 4;
macro NMIERR$V_ADAP_CODE = 0,0,8,0 %;
literal NMIERR$S_ADAP_CODE = 8;         !  Adapter code for NBW
macro NMIERR$V_RSRV_0 = 0,8,2,0 %;
literal NMIERR$S_RSRV_0 = 2;            !  Reserved
macro NMIERR$V_NBW_CPE = 0,10,1,0 %;    !  NBW Control Par err
macro NMIERR$V_MEM_NMI = 0,11,1,0 %;    !  Mem int/NMI fault 
macro NMIERR$V_BUF_FUL = 0,12,1,0 %;    !  Remote buffer full
macro NMIERR$V_ILCK_BSY = 0,13,1,0 %;   !  Interlock busy
macro NMIERR$V_NBW_DPE = 0,14,1,0 %;    !  NBW Data Parity Error
macro NMIERR$V_CPU_NMI = 0,15,1,0 %;    !  CPU NMI fault
macro NMIERR$V_REV_LVL = 0,16,4,0 %;
literal NMIERR$S_REV_LVL = 4;           !  NBW rev level
macro NMIERR$V_RSRV_1 = 0,20,4,0 %;
literal NMIERR$S_RSRV_1 = 4;            !  Reserved
macro NMIERR$V_TMO_CODE = 0,24,3,0 %;
literal NMIERR$S_TMO_CODE = 3;          !  Timeout reason code
macro NMIERR$V_GUILTY = 0,27,1,0 %;     !  This NBW caused fault
macro NMIERR$V_WSE = 0,28,1,0 %;        !  Write sequence error
macro NMIERR$V_RSE = 0,29,1,0 %;        !  Read sequence error
macro NMIERR$V_NMI_CPE = 0,30,1,0 %;    !  NMI Control parity error
macro NMIERR$V_NMI_DPE = 0,31,1,0 %;    !  NMI Data parity error
macro NBWERR$V_RSRV_2 = 0,0,8,0 %;
literal NBWERR$S_RSRV_2 = 8;            !  Reserved
macro NBWERR$V_DIAG = 0,8,1,0 %;        !  Diag mode
macro NBWERR$V_RSRV_3 = 0,9,1,0 %;      !  Reserved
macro NBWERR$V_TMO_IE = 0,10,1,0 %;     !  Timeout interrupt enable
macro NBWERR$V_MULT_TO = 0,11,1,0 %;    !  Multiple timeout
macro NBWERR$V_I_BCON = 0,12,1,0 %;     !  Initialize BCON MCA
macro NBWERR$V_RSRV_4 = 0,13,1,0 %;     !  Reserved
macro NBWERR$V_GUILTY = 0,14,1,0 %;     !  NBW caused memory interrupt
macro NBWERR$V_RSRV_5 = 0,15,10,0 %;
literal NBWERR$S_RSRV_5 = 10;           !  Reserved
macro NBWERR$V_I_ADAP = 0,25,1,0 %;     !  Init adapter
macro NBWERR$V_RSRV_6 = 0,26,6,0 %;
literal NBWERR$S_RSRV_6 = 6;            !  Reserved
macro NBWDIAG$V_RSRV_7 = 0,0,9,0 %;
literal NBWDIAG$S_RSRV_7 = 9;           !  Reserved
macro NBWDIAG$V_DEV_LST = 0,9,1,0 %;    !  Force device lost
macro NBWDIAG$V_FPE = 0,10,3,0 %;
literal NBWDIAG$S_FPE = 3;              !  Force parity error
macro NBWDIAG$V_RSRV_8 = 0,13,12,0 %;
literal NBWDIAG$S_RSRV_8 = 12;          !  Reserved
macro NBWDIAG$V_LOOP = 0,25,1,0 %;      !  Loopback mode
macro NBWDIAG$V_RSRV_9 = 0,26,6,0 %;
literal NBWDIAG$S_RSRV_9 = 6;           !  Reserved
macro NBWIP$V_RSRV_0 = 0,0,7,0 %;
literal NBWIP$S_RSRV_0 = 7;             !  Reserved
macro NBWIP$V_IP0 = 0,7,1,0 %;          !  Interrupt Processor 0
macro NBWIP$V_RSRV_1 = 0,8,7,0 %;
literal NBWIP$S_RSRV_1 = 7;             !  Reserved
macro NBWIP$V_IP1 = 0,15,1,0 %;         !  Interrupt Processor 1
macro NBWIP$V_RSRV_2 = 0,16,7,0 %;
literal NBWIP$S_RSRV_2 = 7;             !  Reserved
macro NBWIP$V_IP2 = 0,23,1,0 %;         !  Interrupt Processor 2
macro NBWIP$V_RSRV_3 = 0,24,7,0 %;
literal NBWIP$S_RSRV_3 = 7;             !  Reserved
macro NBWIP$V_IP3 = 0,31,1,0 %;         !  Interrupt Processor 3
macro NBWEAR$V_EADDR = 0,0,30,0 %;
literal NBWEAR$S_EADDR = 30;            !  Error address
macro NBWEAR$V_RSRV_4 = 0,30,1,0 %;     !  Reserved
macro NBWEAR$V_WF_TO = 0,31,1,0 %;      !  Write function time out
macro NBWSILO$V_MBZ_0 = 0,0,3,0 %;
literal NBWSILO$S_MBZ_0 = 3;            !  Must Be Zero
macro NBWSILO$V_NMI_CONF = 0,3,2,0 %;
literal NBWSILO$S_NMI_CONF = 2;         !  NMI conf <0:1>
macro NBWSILO$V_NMI_PA = 0,5,1,0 %;     !  NMI PA <29>
macro NBWSILO$V_NMI_FUNC0 = 0,6,2,0 %;
literal NBWSILO$S_NMI_FUNC0 = 2;        !  NMI function <0:1>
macro NBWSILO$V_MBZ_1 = 0,8,3,0 %;
literal NBWSILO$S_MBZ_1 = 3;            !  MBZ
macro NBWSILO$V_NMI_FUNC1 = 0,11,3,0 %;
literal NBWSILO$S_NMI_FUNC1 = 3;        !  NMI function <2:4>
macro NBWSILO$V_ID_MASK0 = 0,14,2,0 %;
literal NBWSILO$S_ID_MASK0 = 2;         !  NMI ID mask <0:1>
macro NBWSILO$V_MBZ_2 = 0,16,3,0 %;
literal NBWSILO$S_MBZ_2 = 3;            !  MBZ
macro NBWSILO$V_ID_MASK1 = 0,19,2,0 %;
literal NBWSILO$S_ID_MASK1 = 2;         !  NMI ID mask <2:3>
macro NBWSILO$V_NBW_ARB = 0,21,1,0 %;   !  NMI NBW arb
macro NBWSILO$V_MEM_ARB = 0,22,1,0 %;   !  NMI Memory/P2 arb
macro NBWSILO$V_P3_ARB = 0,23,1,0 %;    !  NMI P3/IO arb
macro NBWSILO$V_MBZ_3 = 0,24,3,0 %;
literal NBWSILO$S_MBZ_3 = 3;            !  MBZ
macro NBWSILO$V_P1_ARB = 0,27,1,0 %;    !  NMI P1/IO arb
macro NBWSILO$V_P0_ARB = 0,28,1,0 %;    !  NMI P0/IO arb
macro NBWSILO$V_MEMBUSY = 0,29,1,0 %;   !  NMI memory busy
macro NBWSILO$V_RSRV_5 = 0,30,1,0 %;    !  Reserved
macro NBWSILO$V_A_FAULT = 0,31,1,0 %;   !  After fault
 
!*** MODULE $NDTDEF ***
! +
!  NEXUS DEVICE AND ADAPTER TYPE CODES
! -
! DEFINE CONSTANT TYPE CODES 
literal NDT$_MEM4NI = 8;                ! MEMORY, 4K NOT INTERLEAVED 
literal NDT$_MEM4I = 9;                 ! MEMORY, 4K INTERLEAVED 
literal NDT$_MEM16NI = 16;              ! MEMORY, 16K NOT INTERLEAVED 
literal NDT$_MEM16I = 17;               ! MEMORY, 16K INTERLEAVED 
literal NDT$_MEM1664NI = 18;            ! MEMORY, 16K AND 64K MIXED
literal NDT$_MB = 32;                   ! MBA 0,1,2, OR 3 
literal NDT$_UB0 = 40;                  ! UB ADAPTER OR INTERCONNECT 0, 
literal NDT$_UB1 = 41;                  !  1, 
literal NDT$_UB2 = 42;                  !  2, 
literal NDT$_UB3 = 43;                  !  OR 3 
literal NDT$_DR32 = 48;                 ! DR32 0,1,2,... 
literal NDT$_CI = 56;                   ! CI780'S, CI750'S 
literal NDT$_MPM0 = 64;                 ! MULTIPORT MEMORY 0, 
literal NDT$_MPM1 = 65;                 !  1, 
literal NDT$_MPM2 = 66;                 !  2, 
literal NDT$_MPM3 = 67;                 !  OR 3 
literal NDT$_DISK9 = 81;                !  Disk on 009
literal NDT$_TERM9 = 82;                !  Terminal on 009
literal NDT$_TAPE9 = 83;                !  Tape on 009
literal NDT$_PRTR9 = 84;                !  Printer on 009
literal NDT$_SFUN9 = 85;                !  Spec. func. ctrllr. on 009
literal NDT$_USER9 = 86;                !  User-defined device on 009
literal NDT$_MEM64NIL = 104;            ! 64K NON-INTERLEAVED MEM, LOWER CONTROLLER 
literal NDT$_MEM64EIL = 105;            ! 64K EXTERNALLY INTERLEAVED MEM, LOWER 
literal NDT$_MEM64NIU = 106;            ! 64K NON-INTERLEAVED MEM, UPPER CONTROLLER 
literal NDT$_MEM64EIU = 107;            ! 64K EXTERNALLY INTERLEAVED MEM, UPPER 
literal NDT$_MEM64I = 108;              ! 64K INTERNALLY INTERLEAVED MEMORY 
literal NDT$_MEM256NIL = 112;           ! 256K NON-INTERLEAVED MEM, LOWER CONTROLLER 
literal NDT$_MEM256EIL = 113;           ! 256K EXTERNALLY INTERLEAVED MEM, LOWER 
literal NDT$_MEM256NIU = 114;           ! 256K NON-INTERLEAVED MEM, UPPER CONTROLLER 
literal NDT$_MEM256EIU = 115;           ! 256K EXTERNALLY INTERLEAVED MEM, UPPER 
literal NDT$_MEM256I = 116;             ! 256K INTERNALLY INTERLEAVED MEMORY 
literal NDT$_KA410 = 128;               ! VAXstar system
literal NDT$_KA420 = 128;               ! PVAX system
literal NDT$_KA640 = 129;               ! MAYFAIR II system
literal NDT$_SHAC = 130;
literal NDT$_SGEC = 131;
literal NDT$_KA520CIO = 132;            !  CIRRUS CIO module
literal NDT$_KA520COMM = 133;           !  CIRRUS COMM module
literal NDT$_KA43 = 134;
literal NDT$_KA440 = 135;
literal NDT$_KA46 = 135;
!  BI node device types.  Note low word is hardware device type on BI.
!   High order word (i.e. the 8000) distinguishes device as a BI device.
!  First BI memory nodes
literal NDT$_SCORMEM = -2147483647;     !  Scorpio Memory
!  Then other BI devices
literal NDT$_BIMFA = -2147483391;       !  BI Multi-Function Adapter
literal NDT$_BUA = -2147483390;         !  BI UNIBUS adapter
literal NDT$_BLA = -2147483389;         !  BI LESI adapter
literal NDT$_KDZ11 = -2147483387;       !  KDZ11 processor
literal NDT$_KA810 = -2147483387;       !  KA810 processor
literal NDT$_NBI = -2147483386;         !  BI-NMI Adapter
literal NDT$_XBIB = -2147475193;        !  BI-XMI Adapter
literal NDT$_XBIB_PLUS = -2147475185;   !  BI-XMI Plus Adapter
literal NDT$_BCA = -2147483384;         !  BI-CI Adapter
literal NDT$_BICOMBO = -2147483383;     !  BI Combo Board
literal NDT$_BCI750 = -2147483381;      !  Interim BI-CI Adapter
literal NDT$_BIACP = -2147483380;       !  Aurora Processor Module
literal NDT$_BDA = -2147483378;         !  BI-to-Disk Adapter
literal NDT$_BSA = -2147467004;         !  BI-to-SI Adapter
literal NDT$_KSB50 = -2147467004;       !  BI-to-SI Adapter
literal NDT$_AIO = -2147466995;         !  Aurora I/O Module
literal NDT$_KFBTA = -2147466995;       !  Aurora I/O Module
literal NDT$_AIE_TK = -2147466997;      !  Aurora I/O Extension Module
literal NDT$_AIE_TKNI = -2147466994;    !  Aurora I/O Extension Module
literal NDT$_AIE_NI = -2147466993;      !  Aurora I/O Extension Module
literal NDT$_DEBNT = -2147466993;       !  Aurora I/O Extension Module
literal NDT$_DSB32 = -2147483382;       !  BI-Hi speed sync comm adapter
literal NDT$_LACP = -2147466996;        !  BI-VAXstation 8000 graphics adapter
literal NDT$_DEBNI = -2147483368;       !  AIE varient
literal NDT$_KWB = -2147450853;         !  BI_KWB32 module
!  XMI node device types.  Note low word is hardware device type on XMI.
literal NDT$_CIXCD = 3077;              !  CI port CIXCD adapter
literal NDT$_KFMSA = 2064;              !  DSSI port KFMSA adapter
literal NDT$_XCP = 32769;               !  Calypso/CVAX CPU
literal NDT$_XRP = 32898;               !  RIGEL CPU
literal NDT$_XMA = 16385;               !  XMI Memory
literal NDT$_XBI = 8193;                !  XBI Adapter
literal NDT$_XWATCH = 3076;             !  XWATCH Adapter
literal NDT$_XJA = 4097;                !  XJA Adapter
literal NDT$_AXA = 4098;                !  AXA Adapter
literal NDT$_HSX50 = 3106;
literal NDT$_KDM70 = 3106;
literal NDT$_XBI_PLUS = 8194;           !  XBI-Plus adapter
literal NDT$_X1202 = 32896;             !  Mariah CPU
literal NDT$_DEMNA = 3075;              !  NI port - DEMNA adapter
literal NDT$_XSA = 2085;                !  XMI-SCSI adapter
!  MBUS node devices.
literal NDT$_MBUS_FTAM = -1878982655;   ! Tape adapter
literal NDT$_MBUS_FQAM = -1878982399;   ! QBUS adapter
literal NDT$_MBUS_LEGSS = -1878982654;  ! LEGSS graphics
literal NDT$_MBUS_FWIOM = -1878982652;  ! I/O module
literal NDT$_MBUS_KA60 = -1878982392;   ! Dual CVAX CPU
literal NDT$_MBUS_8MB = -1878917104;    ! 8MB memory
literal NDT$_MBUS_16MB = -1878916848;   ! 16MB memory
literal NDT$_MBUS_32MB = -1878916336;   ! 32MB memory
literal NDT$_MBUS_32MBA = -1878916080;  ! 32MB memory
literal NDT$_MBUS_64MB = -1878915824;   ! 64MB memory
literal NDT$_MBUS_128MB = -1878915312;  ! 128MB memory
literal NDT$_MBUS_8MBFS = -1862402032;  ! 8MB Firestarter
!  (TYC0002) keep UCODE constants for CI boot adapters here
literal UCODE_CI780 = 1;
literal UCODE_BCA = 2;
literal UCODE_BCA_ONBOARD = 3;
literal UCODE_ONBOARD = 4;
 
!*** MODULE $NMBDEF ***
! +
! 
!  FORMAT OF THE FILE NAME BLOCK. THE FILE NAME BLOCK IS USED AS AN INTERNAL
!  INTERFACE TO THE DIRECTORY SCAN ROUTINE, AND IS ALSO THE FORMAT OF A
!  DIRECTORY RECORD.
! 
! -    
literal NMB$K_DIRENTRY = 16;            !  LENGTH OF DIRECTORY ENTRY 
literal NMB$C_DIRENTRY = 16;            !  LENGTH OF DIRECTORY ENTRY 
literal NMB$M_ALLVER = 8;
literal NMB$M_ALLTYP = 16;
literal NMB$M_ALLNAM = 32;
literal NMB$M_WILD = 256;
literal NMB$M_NEWVER = 512;
literal NMB$M_SUPERSEDE = 1024;
literal NMB$M_FINDFID = 2048;
literal NMB$M_LOWVER = 16384;
literal NMB$M_HIGHVER = 32768;
literal NMB$K_LENGTH = 40;              !  LENGTH OF NAME BLOCK 
literal NMB$C_LENGTH = 40;              !  LENGTH OF NAME BLOCK 
literal NMB$S_NMBDEF = 40;
macro NMB$W_FID = 0,0,0,0 %;
literal NMB$S_FID = 6;                  !  FILE ID 
macro NMB$W_FID_NUM = 0,0,16,0 %;       !  FID - FILE NUMBER 
macro NMB$W_FID_SEQ = 2,0,16,0 %;       !  FID - FILE SEQUENCE NUMBER 
macro NMB$W_FID_RVN = 4,0,16,0 %;       !  FID - RELATIVE VOLUME NUMBER 
macro NMB$W_NAME = 6,0,0,0 %;
literal NMB$S_NAME = 6;                 !  FILE NAME (RAD-50) 
macro NMB$W_TYPE = 12,0,16,0 %;         !  FILE TYPE (RAD-50) 
macro NMB$W_VERSION = 14,0,16,1 %;      !  VERSION NUMBER 
macro NMB$W_FLAGS = 16,0,16,0 %;        !  NAME STATUS FLAGS 
macro NMB$V_ALLVER = 16,3,1,0 %;        !  MATCH ALL VERSIONS 
macro NMB$V_ALLTYP = 16,4,1,0 %;        !  MATCH ALL TYPES 
macro NMB$V_ALLNAM = 16,5,1,0 %;        !  MATCH ALL NAMES 
macro NMB$V_WILD = 16,8,1,0 %;          !  WILD CARDS IN FILE NAME 
macro NMB$V_NEWVER = 16,9,1,0 %;        !  MAXIMIZE VERSION NUMBER 
macro NMB$V_SUPERSEDE = 16,10,1,0 %;    !  SUPERSEDE EXISTING FILE 
macro NMB$V_FINDFID = 16,11,1,0 %;      !  SEARCH FOR FILE ID 
macro NMB$V_LOWVER = 16,14,1,0 %;       !  LOWER VERSION OF FILE EXISTS 
macro NMB$V_HIGHVER = 16,15,1,0 %;      !  HIGHER VERSION OF FILE EXISTS 
macro NMB$B_ASCNAMSIZ = 18,0,8,0 %;
macro NMB$T_ASCNAMTXT = 19,0,0,0 %;
literal NMB$S_ASCNAMTXT = 19;
macro NMB$W_CONTEXT = 38,0,16,0 %;      !  START POINT FOR NEXT FIND 
 
!*** MODULE $NSAARGDEF ***
! +
!  Security Auditing argument list definitions
! -
! +
!  Argument list header offset definitions
! -
literal NSA$M_ARG_FLAG_ALARM = 1;
literal NSA$M_ARG_FLAG_JOURN = 2;
literal NSA$M_ARG_FLAG_MANDY = 4;
literal NSA$C_ARGHDR_LENGTH = 12;
literal NSA$K_ARGHDR_LENGTH = 12;
literal NSA$S_NSAARGHDRDEF = 12;
macro NSA$L_ARG_COUNT = 0,0,32,0 %;     !  Argument list count
macro NSA$L_ARG_ID = 4,0,32,0 %;        !  Record identification longword
macro NSA$W_ARG_TYPE = 4,0,16,0 %;      !  Record type
macro NSA$W_ARG_SUBTYPE = 6,0,16,0 %;   !  Record subtype
macro NSA$B_ARG_FLAG = 8,0,8,0 %;       !  Flags byte
macro NSA$V_ARG_FLAG_ALARM = 8,0,1,0 %; !  Generate alarm for this record
macro NSA$V_ARG_FLAG_JOURN = 8,1,1,0 %; !  Journal this record
macro NSA$V_ARG_FLAG_MANDY = 8,2,1,0 %; !  Mandatory auditing
macro NSA$B_ARG_PKTNUM = 9,0,8,0 %;     !  Number of packets
macro NSA$T_ARG_SPARE = 10,0,16,0 %;
literal NSA$S_ARG_SPARE = 2;            !  Spare bytes
macro NSA$T_ARG_LIST = 12,0,0,0 %;
! +
!  Data packet argument passing mechanism definitions
! -
literal NSA$K_ARG_MECH_BYTE = 0;        !  Byte value
literal NSA$K_ARG_MECH_WORD = 1;        !  Word value
literal NSA$K_ARG_MECH_LONG = 2;        !  Longword value
literal NSA$K_ARG_MECH_QUAD = 3;        !  Quadword value
literal NSA$K_ARG_MECH_DESCR = 4;       !  Descriptor
literal NSA$K_ARG_MECH_ADESCR = 5;      !  Address of descriptor
literal NSA$K_ARG_MECHNUM = 6;
! +
!  Argument list definitions
! -
!  File access
literal NSA$C_ARG1_LENGTH = 52;
literal NSA$K_ARG1_LENGTH = 52;
literal NSA$S_NSAARG1DEF = 52;
macro NSA$L_ARG1_FACMOD_TM = 12,0,32,0 %; !  FACMOD type and mechanism 
macro NSA$L_ARG1_FACMOD = 16,0,32,0 %;  !  File access mode
macro NSA$L_ARG1_FILNAM_TM = 20,0,32,0 %; !  FILNAM type and mechanism
macro NSA$L_ARG1_FILNAM_SIZ = 24,0,32,0 %; !  File name size
macro NSA$L_ARG1_FILNAM_PTR = 28,0,32,0 %; !  File name address
macro NSA$L_ARG1_IMGNAM_TM = 32,0,32,0 %; !  IMGNAM type and mechanism
macro NSA$Q_ARG1_IMGNAM = 36,0,0,0 %;
literal NSA$S_ARG1_IMGNAM = 8;          !  Image name
macro NSA$L_ARG1_PRIVUSED_TM = 44,0,32,0 %; !  PRIVUSED type and mechanism
macro NSA$L_ARG1_PRIVUSED = 48,0,32,0 %; !  Privileges used for access
!  Volume mount
literal NSA$C_ARG2_LENGTH = 96;
literal NSA$K_ARG2_LENGTH = 96;
literal NSA$S_NSAARG2DEF = 96;
macro NSA$L_ARG2_UIC_TM = 12,0,32,0 %;  !  UIC type and mechanism 
macro NSA$L_ARG2_UIC = 16,0,32,0 %;     !  Volume UIC
macro NSA$L_ARG2_VOLPRO_TM = 20,0,32,0 %; !  VOLPRO type and mechanism
macro NSA$L_ARG2_VOLPRO = 24,0,32,0 %;  !  Volume protection 
macro NSA$L_ARG2_MOUFLG_TM = 28,0,32,0 %; !  MOUFLG type and mechanism
macro NSA$L_ARG2_MOUFLG = 32,0,32,0 %;  !  Mount flags
macro NSA$L_ARG2_IMGNAM_TM = 36,0,32,0 %; !  IMGNAM type and mechanism
macro NSA$Q_ARG2_IMGNAM = 40,0,0,0 %;
literal NSA$S_ARG2_IMGNAM = 8;          !  Image name
macro NSA$L_ARG2_DEVNAM_TM = 48,0,32,0 %; !  DEVNAM type and mechanism
macro NSA$L_ARG2_DEVNAM_SIZ = 52,0,32,0 %; !  Device name size
macro NSA$L_ARG2_DEVNAM_PTR = 56,0,32,0 %; !  Device name address
macro NSA$L_ARG2_LOGNAM_TM = 60,0,32,0 %; !  LOGNAM type and mechanism
macro NSA$L_ARG2_LOGNAM_SIZ = 64,0,32,0 %; !  Logical name size
macro NSA$L_ARG2_LOGNAM_PTR = 68,0,32,0 %; !  Logical name address
macro NSA$L_ARG2_VOLNAM_TM = 72,0,32,0 %; !  VOLNAM type and mechanism
macro NSA$L_ARG2_VOLNAM_SIZ = 76,0,32,0 %; !  Volume name size
macro NSA$L_ARG2_VOLNAM_PTR = 80,0,32,0 %; !  Volume name address
macro NSA$L_ARG2_VOLSNAM_TM = 84,0,32,0 %; !  VOLSNAM type and mechanism
macro NSA$L_ARG2_VOLSNAM_SIZ = 88,0,32,0 %; !  Volume set name size
macro NSA$L_ARG2_VOLSNAM_PTR = 92,0,32,0 %; !  Volume set name address
!  Volume dismount
literal NSA$C_ARG3_LENGTH = 80;
literal NSA$K_ARG3_LENGTH = 80;
literal NSA$S_NSAARG3DEF = 80;
macro NSA$L_ARG3_DMOUFLG_TM = 12,0,32,0 %; !  DMOUFLG type and mechanism
macro NSA$L_ARG3_DMOUFLG = 16,0,32,0 %; !  Dismount flags
macro NSA$L_ARG3_IMGNAM_TM = 20,0,32,0 %; !  IMGNAM type and mechanism
macro NSA$Q_ARG3_IMGNAM = 24,0,0,0 %;
literal NSA$S_ARG3_IMGNAM = 8;          !  Image name
macro NSA$L_ARG3_DEVNAM_TM = 32,0,32,0 %; !  DEVNAM type and mechanism
macro NSA$L_ARG3_DEVNAM_SIZ = 36,0,32,0 %; !  Device name size
macro NSA$L_ARG3_DEVNAM_PTR = 40,0,32,0 %; !  Device name address
macro NSA$L_ARG3_LOGNAM_TM = 44,0,32,0 %; !  LOGNAM type and mechanism
macro NSA$L_ARG3_LOGNAM_SIZ = 48,0,32,0 %; !  Logical name size
macro NSA$L_ARG3_LOGNAM_PTR = 52,0,32,0 %; !  Logical name address
macro NSA$L_ARG3_VOLNAM_TM = 56,0,32,0 %; !  VOLNAM type and mechanism
macro NSA$L_ARG3_VOLNAM_SIZ = 60,0,32,0 %; !  Volume name size
macro NSA$L_ARG3_VOLNAM_PTR = 64,0,32,0 %; !  Volume name address
macro NSA$L_ARG3_VOLSNAM_TM = 68,0,32,0 %; !  VOLSNAM type and mechanism
macro NSA$L_ARG3_VOLSNAM_SIZ = 72,0,32,0 %; !  Volume set name size
macro NSA$L_ARG3_VOLSNAM_PTR = 76,0,32,0 %; !  Volume set name address
!  Global section access
literal NSA$C_ARG4_LENGTH = 64;
literal NSA$K_ARG4_LENGTH = 64;
literal NSA$S_NSAARG4DEF = 64;
macro NSA$L_ARG4_FACMOD_TM = 12,0,32,0 %; !  FACMOD type and mechanism 
macro NSA$L_ARG4_FACMOD = 16,0,32,0 %;  !  File access mode
macro NSA$L_ARG4_FILNAM_TM = 20,0,32,0 %; !  FILNAM type and mechanism
macro NSA$L_ARG4_FILNAM_SIZ = 24,0,32,0 %; !  File name size
macro NSA$L_ARG4_FILNAM_PTR = 28,0,32,0 %; !  File name address
macro NSA$L_ARG4_IMGNAM_TM = 32,0,32,0 %; !  IMGNAM type and mechanism
macro NSA$Q_ARG4_IMGNAM = 36,0,0,0 %;
literal NSA$S_ARG4_IMGNAM = 8;          !  Image name
macro NSA$L_ARG4_SECNAM_TM = 44,0,32,0 %; !  SECNAM type and mechanism
macro NSA$L_ARG4_SECNAM_SIZ = 48,0,32,0 %; !  File name size
macro NSA$L_ARG4_SECNAM_PTR = 52,0,32,0 %; !  File name address
macro NSA$L_ARG4_PRIVUSED_TM = 56,0,32,0 %; !  PRIVUSED type and mechanism
macro NSA$L_ARG4_PRIVUSED = 60,0,32,0 %; !  Privileges used for access
 
!*** MODULE $NSAEVTDEF ***
! +
!  Security Auditing event class bit definitions: This macro defines
!  the bits which are used to enable audit journaling and alarms for
!  each class of system event.
! -
literal NSA$M_EVT_ACL = 1;
literal NSA$M_EVT_MOUNT = 2;
literal NSA$M_EVT_UAF = 4;
literal NSA$M_EVT_INSTAL = 8;
literal NSA$M_EVT_AUDIT = 16;
literal NSA$M_EVT_SPARE = -32;
literal NSA$C_EVT_LENGTH = 40;
literal NSA$K_EVT_LENGTH = 40;
literal NSA$S_NSAEVTDEF = 40;
macro NSA$L_EVT_SYS = 0,0,32,0 %;       !  Misc system event mask
macro NSA$V_EVT_ACL = 0,0,1,0 %;        !  ACL requested audits
macro NSA$V_EVT_MOUNT = 0,1,1,0 %;      !  MOUNT and DISMOUNT requests
!  Modifications made to the system
macro NSA$V_EVT_UAF = 0,2,1,0 %;        !  or network authorization files
macro NSA$V_EVT_INSTAL = 0,3,1,0 %;     !  INSTALL operations
macro NSA$V_EVT_AUDIT = 0,4,1,0 %;      !  SET AUDIT operations
macro NSA$V_EVT_SPARE = 0,5,27,0 %;
literal NSA$S_EVT_SPARE = 27;
macro NSA$B_EVT_LOGB = 4,0,8,0 %;       !  Breakin detection event mask
macro NSA$B_EVT_LOGI = 5,0,8,0 %;       !  Login  event mask
macro NSA$B_EVT_LOGF = 6,0,8,0 %;       !  Login failure event mask
macro NSA$B_EVT_LOGO = 7,0,8,0 %;       !  Logout event mask
! ****************************************************************************
!  The following file access masks must be contiguous and in the current order
! ****************************************************************************
macro NSA$L_EVT_FAILURE = 8,0,32,0 %;   !  Access failures event mask
macro NSA$L_EVT_SUCCESS = 12,0,32,0 %;  !  Successful access event mask
macro NSA$L_EVT_SYSPRV = 16,0,32,0 %;   !  Success due to SYSPRV event mask
macro NSA$L_EVT_BYPASS = 20,0,32,0 %;   !  Success due to BYPASS event mask
macro NSA$L_EVT_UPGRADE = 24,0,32,0 %;  !  Success due to UPGRADE event mask
macro NSA$L_EVT_DOWNGRADE = 28,0,32,0 %; !  Success due to DOWNGRADE event mask
macro NSA$L_EVT_GRPPRV = 32,0,32,0 %;   !  Success due to GRPPRV event mask
macro NSA$L_EVT_READALL = 36,0,32,0 %;  !  Success due to READALL event mask
! ****************************************************************************
!  End of file access masks
! ****************************************************************************
literal NSA$M_EVT_LOG_BAT = 1;
literal NSA$M_EVT_LOG_DIA = 2;
literal NSA$M_EVT_LOG_LOC = 4;
literal NSA$M_EVT_LOG_REM = 8;
literal NSA$M_EVT_LOG_NET = 16;
literal NSA$M_EVT_LOG_SUB = 32;
literal NSA$M_EVT_LOG_DET = 64;
literal NSA$S_NSAEVTLOGBITS = 1;
macro NSA$V_EVT_LOG_BAT = 0,0,1,0 %;    !  Batch
macro NSA$V_EVT_LOG_DIA = 0,1,1,0 %;    !  Dialup
macro NSA$V_EVT_LOG_LOC = 0,2,1,0 %;    !  Local
macro NSA$V_EVT_LOG_REM = 0,3,1,0 %;    !  Remote
macro NSA$V_EVT_LOG_NET = 0,4,1,0 %;    !  Network
macro NSA$V_EVT_LOG_SUB = 0,5,1,0 %;    !  Subprocess
macro NSA$V_EVT_LOG_DET = 0,6,1,0 %;    !  Detached process
 
!*** MODULE $NSAFAIDEF ***
! 
!  Define the security auditing failure mode vectors.
! 
literal NSA$M_FAIL_WAIT = 1;
literal NSA$M_FAIL_CRASH = 2;
literal NSA$M_FAIL_IGNORE = 4;
literal NSA$M_MSG_LOST = 1;
literal NSA$C_FAI_LENGTH = 12;
literal NSA$K_FAI_LENGTH = 12;
literal NSA$S_NSAFAIDEF = 12;
macro NSA$W_FAILURE_MODE = 0,0,16,0 %;
macro NSA$V_FAIL_WAIT = 0,0,1,0 %;      !  Wait for resources
macro NSA$V_FAIL_CRASH = 0,1,1,0 %;     !  Crash the system
macro NSA$V_FAIL_IGNORE = 0,2,1,0 %;    !  Drop failed audits
macro NSA$W_FAILURE_FLAGS = 2,0,16,0 %;
macro NSA$V_MSG_LOST = 2,0,1,0 %;       !  Alarms lost message written?
macro NSA$L_LOST_COUNT = 4,0,32,0 %;    !  Failure count
macro NSA$W_SIZE = 8,0,16,0 %;          !  Stucture size
macro NSA$B_TYPE = 10,0,8,0 %;          !  Structure type (DYN$C_NSA)
macro NSA$B_SUBTYPE = 11,0,8,0 %;       !  Structure subtype (DYN$C_NSA_FAILURE)
 
!*** MODULE $NSAIDTDEF ***
! +
!  Security Auditing Impure Data Table offset definitions
! -
literal NSA$C_IDT_LENGTH = 1210;
literal NSA$K_IDT_LENGTH = 1210;
literal NSA$K_IDT_PAGES = 3;            !  Number of pages for IDT
literal NSA$S_NSAIDTDEF = 1210;
macro NSA$T_IDT_ALARM_HDR = 0,0,0,0 %;
literal NSA$S_IDT_ALARM_HDR = 46;       !  Alarm header buffer
macro NSA$T_IDT_RECORD_BUF = 46,0,0,0 %;
literal NSA$S_IDT_RECORD_BUF = 1024;    !  Record buffer
macro NSA$Q_IDT_RECORD_DESCR = 1070,0,0,0 %;
literal NSA$S_IDT_RECORD_DESCR = 8;     !  Record buffer descriptor
macro NSA$T_IDT_RECORD_DT = 1078,0,0,0 %;
literal NSA$S_IDT_RECORD_DT = 128;      !  Record descriptor table
!  audit journal channel number)
 
!*** MODULE $NTEDEF ***
! +
!  NOTIFICATION TABLE ENTRY DEFINITIONS
! 
!  NOTIFICATION TABLE ENTRIES ARE USED BY THE NOTIFICATION MODULE ROUTINES. 
!  EACH ENTRY STORES THE INFORMATION NEEDED FOR A SINGLE NOTIFICATION. THE
!  SYSTEM MAINTAINS TWO TABLES OF SUCH ENTRIES, ONE EACH FOR JOIN NOTIFICATION
!  AND REMOVAL NOTIFICATION.
! 
! -
literal NTE$K_LENGTH = 12;              !  LENGTH OF AN ENTRY 
literal NTE$C_LENGTH = 12;              !  LENGTH OF AN ENTRY
literal NTE$S_NTEDEF = 12;
macro NTE$L_NOTIFN_LIST_HDR = 0,0,32,0 %;
macro NTE$W_NOTIFNEFL = 0,0,16,0 %;     !  INDEX OF FIRST NOTIFICATION ENTRY ON THE TABLE
macro NTE$W_NOOFENT = 2,0,16,0 %;       !  NUMBER OF ENTRIES IN THE TABLE
macro NTE$L_NOTIFN_ID = 0,0,32,0 %;
macro NTE$W_LINK = 0,0,16,0 %;          !  LINK TO THE NEXT ENTRY ON THE LIST
macro NTE$W_SEQNO = 2,0,16,0 %;         !  SEQUENCE NUMBER OF THIS ENTRY
macro NTE$L_ROUTINE_ADDRESS = 4,0,32,0 %; !  ADDRESS OF ROUTINE TO BE CALLED DURING NOTIFICATION 
macro NTE$L_FREE_LIST_HDR = 4,0,32,0 %;
macro NTE$W_FREEFL = 4,0,16,0 %;        !  INDEX OF FIRST FREE ENTRY ON THE TABLE
macro NTE$L_NOTIFN_PARAM = 8,0,32,0 %;  !  PARAMETER TO BE PASSED TO THE ROUTINE
macro NTE$L_TYPE_DEFN = 8,0,32,0 %;
macro NTE$W_SIZE = 8,0,16,0 %;          !  SIZE OF THE TABLE
macro NTE$B_TYPE = 10,0,8,0 %;          !  TYPE OF THE DATA STRUCTURE
macro NTE$B_SUBTYPE = 11,0,8,0 %;       !  SUBTYPE OF THE DATA STRUCTURE
 
!*** MODULE $OLCKDEF ***
! +
!  OLCK - ORB LOCK
! 
!  This structures contains information about an outstanding LOCK
!  on the Object Rights Block of a specific resourse.  It is
!  maintained in a per process database (CTL$GQ_ORB_LOCKDB) used
!  to control ACL modifications through $CHANGE_ACL.
! 
! -
literal OLCK$M_RESV_1 = 1;
literal OLCK$K_FIXED_LEN = 30;          !  Fixed length 
literal OLCK$K_MAX_RSN = 33;            !  Maximum resource name
literal OLCK$S_OLCKDEF = 30;
macro OLCK$L_FLINK = 0,0,32,0 %;        !  Forward link
macro OLCK$L_BLINK = 4,0,32,0 %;        !  Backward link
macro OLCK$W_SIZE = 8,0,16,0 %;         !  Allocation size
macro OLCK$B_TYPE = 10,0,8,0 %;         !  Structure type
macro OLCK$B_STYPE = 11,0,8,0 %;        !  Subtype
macro OLCK$L_LOCKID = 12,0,32,0 %;      !  Lockid
macro OLCK$B_PRV_LKMODE = 16,0,8,0 %;   !  Previous lock mode
macro OLCK$B_CUR_LKMODE = 17,0,8,0 %;   !  Current lock mode
macro OLCK$W_FLAGS = 18,0,16,0 %;       !  Processing flags
macro OLCK$V_RESV_1 = 18,0,1,0 %;       !  reserved for future
macro OLCK$L_RESV_1 = 20,0,32,0 %;      !  Reserved 
macro OLCK$L_RESV_2 = 24,0,32,0 %;      !     for future use
macro OLCK$W_RSN_SIZE = 28,0,16,0 %;    !  Size of resource name
macro OLCK$T_RSN = 30,0,0,0 %;          !  Resource name string
 
!*** MODULE $ORBDEF ***
! +
! 
!  Object's Rights Block - structure defining the protection information
!  for various objects within the system.
! 
! -
literal ORB$M_PROT_16 = 1;
literal ORB$M_ACL_QUEUE = 2;
literal ORB$M_MODE_VECTOR = 4;
literal ORB$M_NOACL = 8;
literal ORB$M_CLASS_PROT = 16;
literal ORB$K_LENGTH = 88;              !  Structure length
literal ORB$C_LENGTH = 88;              !  Structure length
literal ORB$S_ORBDEF = 88;
macro ORB$L_OWNER = 0,0,32,0 %;         !  Object's owner
macro ORB$W_UICMEMBER = 0,0,16,0 %;     !  Member number
macro ORB$W_UICGROUP = 2,0,16,0 %;      !  Group number
macro ORB$L_ACL_MUTEX = 4,0,32,0 %;     !  Mutex for this ACL
macro ORB$W_SIZE = 8,0,16,0 %;          !  Size of the ORB in bytes
macro ORB$B_TYPE = 10,0,8,0 %;          !  Structure type
macro ORB$B_FLAGS = 11,0,8,0 %;         !  Field modifiers
macro ORB$V_PROT_16 = 11,0,1,0 %;       !  Use word not vector protection
macro ORB$V_ACL_QUEUE = 11,1,1,0 %;     !  Use ACL queue not descriptor list
macro ORB$V_MODE_VECTOR = 11,2,1,0 %;   !  Use vector not byte mode protection
macro ORB$V_NOACL = 11,3,1,0 %;         !  Object cannot have an ACL
macro ORB$V_CLASS_PROT = 11,4,1,0 %;    !  Security classification is valid
macro ORB$W_REFCOUNT = 14,0,16,0 %;     !  Reference count
macro ORB$Q_MODE_PROT = 16,0,0,0 %;
literal ORB$S_MODE_PROT = 8;            !  Mode protection vector
macro ORB$L_MODE_PROTL = 16,0,32,0 %;   !  Low longword of vector
macro ORB$L_MODE_PROTH = 20,0,32,0 %;   !  High longword of vector
macro ORB$B_MODE = 16,0,8,0 %;          !  Simple access mode
macro ORB$L_SYS_PROT = 24,0,32,0 %;     !  System protection field
macro ORB$W_PROT = 24,0,16,0 %;         !  Standard SOGW protection
macro ORB$L_OWN_PROT = 28,0,32,0 %;     !  Owner protection field
macro ORB$L_GRP_PROT = 32,0,32,0 %;     !  Group protection field
macro ORB$L_WOR_PROT = 36,0,32,0 %;     !  World protection field
macro ORB$L_ACLFL = 40,0,32,0 %;        !  ACL queue forward link
macro ORB$L_ACL_COUNT = 40,0,32,0 %;    !  Count of ACL segments
macro ORB$L_ACLBL = 44,0,32,0 %;        !  ACL queue backward link
macro ORB$L_ACL_DESC = 44,0,32,0 %;     !  Address of ACL segment descriptor list
macro ORB$R_MIN_CLASS = 48,0,0,0 %;
literal ORB$S_MIN_CLASS = 20;
macro ORB$R_MAX_CLASS = 68,0,0,0 %;
literal ORB$S_MAX_CLASS = 20;
 
!*** MODULE $PBDEF ***
! +
!  PB - SCS PATH BLOCK
! 
!  THE PB HAS INFORMATION ABOUT THE PHYSICAL PATH TO ANOTHER
!  SYSTEM IN A CLUSTER.  PATH BLOCKS TO THE SAME SYSTEM ARE
!  LINKED TOGETHER TO THE SYSTEM BLOCK (SB).
! -
literal PB$C_CLOSED = 0;                !  NEWLY CREATED PATHBLOCK 
literal PB$C_ST_SENT = 1;               !  START SENT 
literal PB$C_ST_REC = 2;                !  START RECEIVED 
literal PB$C_OPEN = 3;                  !  OPEN PORT-PORT VIRTUAL CIRCUIT 
!  CI port virtual circuit failure states
literal PB$C_STALL_SETCKT = 4;          !   SETCKT stalled by pool problem
literal PB$C_CLOSE_CKT = 5;             !   SETCKT in progress
literal PB$C_NOTIFY_VCFAIL = 6;         !   SYSAP notification for failed VC in progress
literal PB$C_STALL_CACHE = 7;           !   Cache Clear stalled by pool problem
literal PB$C_CACHE_CLEAR = 8;           !   Cache Clear in progress
literal PB$C_NOTIFY_PWFAIL = 9;         !   SYSAP notification for failed port in progress
!  
literal PB$C_VC_FAIL = 32768;           !  VC FAILURE IN PROGRESS STATE  (No longer used for CI)
literal PB$C_PWR_FAIL = 16384;          !  PWR FAIL RECOVERY IN PROGRESS STATE (No longer used for CI)
literal PB$M_DUALPATH = -2147483648;
literal PB$C_CI780 = 2;                 !  CI780 PORT
literal PB$C_CI750 = 2;                 !  CI750 PORT (=CI780)
literal PB$C_HSC = 4;                   !  HSC PORT
literal PB$C_KL10 = 6;                  !  KLIPA PORT
literal PB$C_CINT = 7;                  !  CI NODE TESTER
literal PB$C_NI = 8;                    !  NI-DEUNA PORT
literal PB$C_PS = 9;                    !  PASSTHRU PORT
literal PB$C_BCA = 11;                  !  BI-CI PORT
literal PB$C_BVPSSP = 12;               !  BVP STORAGE PORT
literal PB$C_BVPNI = 13;                !  BVP NI PORT
literal PB$C_CIXCD = 14;
literal PB$C_SII = 32;
literal PB$C_KFQSA = 33;
literal PB$C_SHAC = 34;
literal PB$C_XON = 35;
literal PB$C_SWIFT = 36;
literal PB$C_KFMSA = 37;
literal PB$C_RF70 = 48;
literal PB$C_RF71 = 48;
literal PB$C_RF30 = 49;
literal PB$C_RF31 = 50;
literal PB$C_RF72 = 51;
literal PB$C_TF70 = 64;
literal PB$C_TF30 = 65;
literal PB$C_TF85 = 65;
literal PB$M_SRSNTDATWM = 128;
literal PB$M_MAINT = 1;
literal PB$C_UNINIT = 0;                !  UNINITIALIZED, 
literal PB$C_DISAB = 1;                 !  DISABLED 
literal PB$C_ENAB = 2;                  !  ENABLED 
!  
literal PB$M_CUR_CBL = 1;
literal PB$M_CUR_PS = 1;
literal PB$M_TIM = 1;
literal PB$M_VCCHK_ENB = 2;
literal PB$M_SCS_EXP = 4;
literal PB$M_NEW_MSG = 8;
literal PB$M_LOCAL = 16;
literal PB$M_CREDIT = 32;
literal PB$M_DISC = 64;
literal PB$M_STORAGE = 128;
literal PB$K_LENGTH = 100;              ! LENGTH OF A PATH BLOCK 
literal PB$C_LENGTH = 100;              ! LENGTH OF A PATH BLOCK 
literal PB$S_PBDEF = 100;
macro PB$L_FLINK = 0,0,32,0 %;          ! FWD LINK TO NEXT PB 
macro PB$L_BLINK = 4,0,32,0 %;          ! BACK LINK TO PREVIOUS PB 
macro PB$W_SIZE = 8,0,16,0 %;           ! STRUCTURE SIZE IN BYTES 
macro PB$B_TYPE = 10,0,8,0 %;           ! SCS STRUCTURE TYPE 
macro PB$B_SUBTYP = 11,0,8,0 %;         ! SCS STRUCT SUBTYPE FOR PB 
macro PB$B_RSTATION = 12,0,0,0 %;
literal PB$S_RSTATION = 6;              ! REMOTE STATION ADDRESS 
macro PB$W_STATE = 18,0,16,0 %;         ! PATH STATE 
! STATE DEFINITIONS:
!  0 ORIGIN, INCREMENTS OF 1 
macro PB$L_RPORT_TYP = 20,0,32,0 %;     ! HARDWARE PORT TYPE CODE 
macro PB$V_PORT_TYP = 20,0,31,0 %;
literal PB$S_PORT_TYP = 31;             !  HARDWARE PORT TYPE, 
macro PB$V_DUALPATH = 20,31,1,0 %;      !  0/1 FOR SINGLE PATH/DUAL PATH PORT 
macro PB$L_RPORT_REV = 24,0,32,0 %;     ! REMOTE PORT HW REV LEVEL 
macro PB$V_RPORT_REV_SPARE = 24,0,30,0 %;
literal PB$S_RPORT_REV_SPARE = 30;      !  Spare
macro PB$V_RPORT_SPC_REV = 24,30,1,0 %; !  0 = -A / 1 = -B
macro PB$V_RPORT_REV_RESV1 = 24,31,1,0 %; !  Reserved
macro PB$L_RPORT_FCN = 28,0,32,0 %;     ! REMOTE PORT FUNCTION MASK
macro PB$V_MBZ = 28,0,7,0 %;
literal PB$S_MBZ = 7;                   !  reserved MBZ
macro PB$V_SRSNTDATWM = 28,7,1,0 %;     ! Send/Rec SNTDATWM (*not* in CI Port Arch)
macro PB$B_RST_PORT = 32,0,8,0 %;       ! OWNING PORT WHICH RESET REMOTE PORT 
macro PB$B_RSTATE = 33,0,8,0 %;         ! REMOTE PORT STATUS: 
macro PB$V_MAINT = 33,0,1,0 %;          !  0/1 FOR MAINTENANCE MODE NO/YES 
macro PB$V_STATE = 33,1,2,0 %;
literal PB$S_STATE = 2;                 !  REMOTE PORT STATE: 
!  DEFINE REMOTE STATES, 0 ORIGIN 
macro PB$W_RETRY = 34,0,16,0 %;         ! START HANDSHAKE RETRY COUNT 
macro PB$T_LPORT_NAME = 36,0,32,0 %;
literal PB$S_LPORT_NAME = 4;            ! LOCAL PORT DEVICE NAME 
macro PB$B_CBL_STS = 40,0,8,0 %;        ! CABLE STATUS TO THE REMOTE 
macro PB$V_CUR_CBL = 40,0,1,0 %;        !  1/0 FOR CURRENT STATUS OK/BAD 
macro PB$B_P0_STS = 41,0,8,0 %;         ! PATH 0 STATUS 
macro PB$B_P1_STS = 42,0,8,0 %;         ! PATH 1 STATUS 
macro PB$V_CUR_PS = 42,0,1,0 %;         !  1/0 FOR CURRENT STATUS OK/BROKEN 
macro PB$L_PDT = 44,0,32,0 %;           ! ADDR OF PORT DESCRIPTOR TABLE FOR 
!  LOCAL PORT
macro PB$L_SBLINK = 48,0,32,0 %;        ! LINK TO SYSTEM BLOCK
macro PB$L_CDTLST = 52,0,32,0 %;        ! LINK TO FIRST CDT OVER THIS PATH 
!  (0 IF NO CDT'S)
macro PB$L_WAITQFL = 56,0,32,0 %;       !  SCS SEND MSG WAIT QUEUE FLINK
macro PB$L_WAITQBL = 60,0,32,0 %;       ! SCS SEND MSG WAIT QUEUE BLINK 
macro PB$L_DUETIME = 60,0,32,0 %;       ! START HANDSHAKE TIMER 
macro PB$L_SCSMSG = 64,0,32,0 %;        ! ADDR OF SCS MESSAGE BUFFER 
macro PB$W_STS = 68,0,16,0 %;           ! PATH BLOCK STATUS 
macro PB$V_TIM = 68,0,1,0 %;            !  HANDSHAKE TIMEOUT IN PROGRESS 
macro PB$V_VCCHK_ENB = 68,1,1,0 %;      !  VC timeout checking enabled
macro PB$V_SCS_EXP = 68,2,1,0 %;        !  SCS message expected during timeout period
macro PB$V_NEW_MSG = 68,3,1,0 %;        !  New message arrived during timeout period
macro PB$V_LOCAL = 68,4,1,0 %;          !  Local port, (A BVP or PU port)
macro PB$V_CREDIT = 68,5,1,0 %;         !  SCS receive credit on free queue
macro PB$V_DISC = 68,6,1,0 %;           !  SCS disconnect request is in progress
macro PB$V_STORAGE = 68,7,1,0 %;        !  Storage only port (A DSSA port)
macro PB$W_VCFAIL_RSN = 70,0,16,0 %;    ! VC FAILURE REASON (VMS
! STATUS CODE
macro PB$B_PROTOCOL = 72,0,8,0 %;       ! PPD PROTOCOL LEVEL
macro PB$L_RPORT_MULT = 76,0,32,0 %;    ! LARGEST PACKET MULTIPLE OF THE REMOTE PORT (CI ONLY)
!  SHIFTED TO BIT POSITION <30:28> 
macro PB$L_TIME_STAMP = 80,0,32,0 %;    !  (TYC 9-Mar-89) PB INSERTION TO CONFIG. DB TIME STAMP
macro PB$L_SHARE_FLINK = 84,0,32,0 %;   !  (TYC 15-Feb-89) FWD LINK TO NEXT PB IN LOAD SHARE QUEUE
macro PB$L_SHARE_BLINK = 88,0,32,0 %;   !  (TYC 15-Feb-89) BACK LINK TO PREVIOUS PB IN LOAD SHARE QUEUE
 
!*** MODULE $PBHDEF ***
! +
!  DEFINE PERFORMANCE BUFFER HEADER
! -
literal PBH$K_START = 13;               ! START OF DATA AREA 
literal PBH$C_START = 13;               ! START OF DATA AREA 
literal PBH$K_LENGTH = 512;             ! LENGTH OF PERFORMANCE DATA BUFFER 
literal PBH$C_LENGTH = 512;             ! LENGTH OF PERFORMANCE DATA BUFFER 
literal PBH$S_PBHDEF = 512;
macro PBH$L_BUFRFL = 0,0,32,0 %;        ! BUFFER FORWARD LINK 
macro PBH$L_BUFRBL = 4,0,32,0 %;        ! BUFFER BACKWARD LINK 
macro PBH$W_SIZE = 8,0,16,0 %;          ! SIZE OF PERFORMANCE DATA BUFFER 
macro PBH$B_TYPE = 10,0,8,0 %;          ! DATA STRUCTURE TYPE 
macro PBH$W_MSGCNT = 11,0,16,0 %;       ! COUNT OF MESSAGES IN BUFFER 
 
!*** MODULE $PBODEF ***
! +
!  PBO - SCS$CONFIG_PTH CALL OUTPUT ARRAY FORMAT
! 
!  THE OUTPUT ARRAY RETURNED FROM THE SCS$CONFIG_PTH CALL.  DATA IS MOSTLY COPIED
!  FROM THE PATH BLOCK (PB) BEING LOOKED UP.
! -
literal PBO$M_SRSNTDATWM = 128;
literal PBO$C_NXT_VC = 32;              ! SPECIFIER OF NEXT VC (PB)
literal PBO$K_NXT_VC = 32;              !  TO THIS SYSTEM (12 BYTE
!  SPECIFIER FOLLOWS:)
literal PBO$C_LENGTH = 52;              ! LENGTH OF PBO
literal PBO$K_LENGTH = 52;              ! LENGTH OF PBO
literal PBO$S_PBODEF = 52;
macro PBO$B_RSTATION = 0,0,0,0 %;
literal PBO$S_RSTATION = 6;             ! REMOTE STATION ADDR
macro PBO$W_STATE = 6,0,16,0 %;         ! PATH STATE
macro PBO$L_RPORT_TYP = 8,0,32,0 %;     ! REMOTE PORT HW PORT TYPE
macro PBO$L_RPORT_REV = 12,0,32,0 %;    ! REMOTE PORT REV LEVEL
macro PBO$L_RPORT_FCN = 16,0,32,0 %;    ! REMOTE PORT FUNCTION MASK
macro PBO$V_MBZ = 16,0,7,0 %;
literal PBO$S_MBZ = 7;                  !  reserved MBZ
macro PBO$V_SRSNTDATWM = 16,7,1,0 %;    ! Send/Rec SNTDATWM (*not* in CI Port Arch)
macro PBO$B_RST_PORT = 20,0,8,0 %;      ! OWNING PORT WHICH LAST
!  RESET THIS REMOTE
macro PBO$B_RSTATE = 21,0,8,0 %;        ! REMOTE PORT STATE
macro PBO$W_RETRY = 22,0,16,0 %;        ! START HANDSHAKE RETRIES LEFT
macro PBO$T_LPORT_NAME = 24,0,32,0 %;
literal PBO$S_LPORT_NAME = 4;           ! LOCAL PORT DEVICE NAME
macro PBO$B_CBL_STS = 28,0,8,0 %;       ! CURRENT CABLE STATUS
macro PBO$B_P0_STS = 29,0,8,0 %;        ! PATH 0 STATUS
macro PBO$B_P1_STS = 30,0,8,0 %;        ! PATH 1 STATUS
macro PBO$B_NXT_RSTAT = 32,0,0,0 %;
literal PBO$S_NXT_RSTAT = 6;            !  REMOTE STATION ADDR
macro PBO$T_NXT_LPORT = 40,0,32,0 %;
literal PBO$S_NXT_LPORT = 4;            !  LOCAL PORT NAME ON NXT PB
macro PBO$B_SYSTEMID = 44,0,0,0 %;
literal PBO$S_SYSTEMID = 6;             ! ID OF SYSTEM ASSOC WITH 
!  THIS PB
 
!*** MODULE $PCBDEF ***
! +
!  PCB DEFINITIONS
! -
literal PCB$M_RES = 1;
literal PCB$M_DELPEN = 2;
literal PCB$M_FORCPEN = 4;
literal PCB$M_INQUAN = 8;
literal PCB$M_PSWAPM = 16;
literal PCB$M_RESPEN = 32;
literal PCB$M_SSFEXC = 64;
literal PCB$M_SSFEXCE = 128;
literal PCB$M_SSFEXCS = 256;
literal PCB$M_SSFEXCU = 512;
literal PCB$M_SSRWAIT = 1024;
literal PCB$M_SUSPEN = 2048;
literal PCB$M_WAKEPEN = 4096;
literal PCB$M_WALL = 8192;
literal PCB$M_BATCH = 16384;
literal PCB$M_NOACNT = 32768;
literal PCB$M_NOSUSPEND = 65536;
literal PCB$M_ASTPEN = 131072;
literal PCB$M_PHDRES = 262144;
literal PCB$M_HIBER = 524288;
literal PCB$M_LOGIN = 1048576;
literal PCB$M_NETWRK = 2097152;
literal PCB$M_PWRAST = 4194304;
literal PCB$M_NODELET = 8388608;
literal PCB$M_DISAWS = 16777216;
literal PCB$M_INTER = 33554432;
literal PCB$M_RECOVER = 67108864;
literal PCB$M_SECAUDIT = 134217728;
literal PCB$M_HARDAFF = 268435456;
literal PCB$M_ERDACT = 536870912;
literal PCB$M_SOFTSUSP = 1073741824;
literal PCB$M_PREEMPTED = -2147483648;
literal PCB$M_QUANTUM_RESCHED = 1;
literal PCB$M_EPID_WILD = -2147483648;
literal PCB$K_LENGTH = 432;             ! LENGTH OF PCB 
literal PCB$C_LENGTH = 432;             ! LENGTH OF PCB 
literal PCB$S_PCBDEF = 432;
macro PCB$L_SQFL = 0,0,32,0 %;          ! STATE QUEUE FORWARD LINK 
macro PCB$L_SQBL = 4,0,32,0 %;          ! STATE QUEUE BACKWARD LINK 
macro PCB$W_SIZE = 8,0,16,0 %;          ! SIZE IN BYTES 
macro PCB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE CODE FOR PCB    
macro PCB$B_WEFC = 11,0,8,0 %;          ! WAITING EF CLUSTER NUMBER 
macro PCB$L_PHYPCB = 12,0,32,0 %;       ! PHYSICAL ADDRESS OF HW PCB 
macro PCB$L_ASTQFL = 16,0,32,0 %;       ! AST QUEUE FORWARD LINK(HEAD) 
macro PCB$L_ASTQBL = 20,0,32,0 %;       ! AST QUEUE BACK LINK(TAIL) 
macro PCB$B_ASTACT = 24,0,8,0 %;        ! ACCESS MODES WITH ACTIVE ASTS 
macro PCB$B_ASTEN = 25,0,8,0 %;         ! ACCESS MODES WITH ASTS ENABLED 
macro PCB$W_STATE = 26,0,16,0 %;        ! PROCESS STATE 
macro PCB$B_PRI = 28,0,8,0 %;           ! PROCESS CURRENT PRIORITY 				
macro PCB$B_PRIB = 29,0,8,0 %;          ! BASE PRIORITY 
macro PCB$B_RESERVED_B1 = 30,0,8,0 %;   !  RESERVED
macro PCB$B_AFFINITY_SKIP = 31,0,8,0 %; !  AFFINITY SKIP COUNT
macro PCB$L_OWNER = 32,0,32,0 %;        ! PID OF CREATOR 
macro PCB$L_STS = 36,0,32,0 %;          ! PROCESS STATUS FLAGS 
macro PCB$V_RES = 36,0,1,0 %;           !  RESIDENT, IN BALANCE SET 
macro PCB$V_DELPEN = 36,1,1,0 %;        !  DELETE PENDING                
macro PCB$V_FORCPEN = 36,2,1,0 %;       !  FORCE EXIT PENDING 
macro PCB$V_INQUAN = 36,3,1,0 %;        !  INITIAL QUANTUM IN PROGRESS 
macro PCB$V_PSWAPM = 36,4,1,0 %;        !  PROCESS SWAP MODE (1=NOSWAP) 
macro PCB$V_RESPEN = 36,5,1,0 %;        !  RESUME PENDING, SKIP SUSPEND 
macro PCB$V_SSFEXC = 36,6,1,0 %;        !  SYSTEM SERVICE EXCEPTION ENABLE (K) 
macro PCB$V_SSFEXCE = 36,7,1,0 %;       !  SYSTEM SERVICE EXCEPTION ENABLE (E) 
macro PCB$V_SSFEXCS = 36,8,1,0 %;       !  SYSTEM SERVICE EXCEPTION ENABLE (S) 
macro PCB$V_SSFEXCU = 36,9,1,0 %;       !  SYSTEM SERVICE EXCEPTION ENABLE (U) 
macro PCB$V_SSRWAIT = 36,10,1,0 %;      !  SYSTEM SERVICE RESOURCE WAIT DISABLE 
macro PCB$V_SUSPEN = 36,11,1,0 %;       !  SUSPEND PENDING 
macro PCB$V_WAKEPEN = 36,12,1,0 %;      !  WAKE PENDING, SKIP HIBERNATE 
macro PCB$V_WALL = 36,13,1,0 %;         !  WAIT FOR ALL EVENTS IN MASK 
macro PCB$V_BATCH = 36,14,1,0 %;        !  PROCESS IS A BATCH JOB 
macro PCB$V_NOACNT = 36,15,1,0 %;       !  NO ACCOUNTING FOR PROCESS 
macro PCB$V_NOSUSPEND = 36,16,1,0 %;    !  Process cannot be SUSPENDed
macro PCB$V_ASTPEN = 36,17,1,0 %;       !  AST PENDING 
macro PCB$V_PHDRES = 36,18,1,0 %;       !  PROCESS HEADER RESIDENT 
macro PCB$V_HIBER = 36,19,1,0 %;        !  HIBERNATE AFTER INITIAL IMAGE ACTIVATE 
macro PCB$V_LOGIN = 36,20,1,0 %;        !  LOGIN WITHOUT READING AUTH FILE 
macro PCB$V_NETWRK = 36,21,1,0 %;       !  NETWORK CONNECTED JOB 
macro PCB$V_PWRAST = 36,22,1,0 %;       !  POWER FAIL AST 
macro PCB$V_NODELET = 36,23,1,0 %;      !  NO DELETE 
macro PCB$V_DISAWS = 36,24,1,0 %;       !  1=DISABLE AUTOMATIC WS ADJUSTMENT 
macro PCB$V_INTER = 36,25,1,0 %;        !  PROCESS IS AN INTERACTIVE JOB
macro PCB$V_RECOVER = 36,26,1,0 %;      !  PROCESS CAN RECOVER LOCKS
macro PCB$V_SECAUDIT = 36,27,1,0 %;     !  MANDATORY SECURITY AUDITING
macro PCB$V_HARDAFF = 36,28,1,0 %;      !  PROCESS IS BOUND TO PARTICULAR CPU
macro PCB$V_ERDACT = 36,29,1,0 %;       !  Exec mode rundown active
macro PCB$V_SOFTSUSP = 36,30,1,0 %;     !  Process is in "soft" suspend
macro PCB$V_PREEMPTED = 36,31,1,0 %;    !  Hard suspend has preempted soft
macro PCB$L_STS2 = 40,0,32,0 %;         ! PROCESS STATUS FLAGS (2nd LW)
macro PCB$V_QUANTUM_RESCHED = 40,0,1,0 %; !  Quantum-oriented process reschedule
macro PCB$L_WTIME = 44,0,32,0 %;        ! TIME AT START OF WAIT 
macro PCB$B_PRISAV = 44,0,8,0 %;        ! SAVED CURRENT PRIORITY 
macro PCB$B_PRIBSAV = 45,0,8,0 %;       ! SAVE BASE PRIORITY 
macro PCB$B_DPC = 46,0,8,0 %;           ! DELETE PENDING COUNT
macro PCB$B_AUTHPRI = 47,0,8,0 %;       ! INITIAL PROCESS PRIORITY 
macro PCB$L_ONQTIME = 48,0,32,0 %;      ! Abs time when placed on COM/COMO queue,
! adjusted for process wait time
macro PCB$L_WAITIME = 52,0,32,0 %;      ! ABS TIME OF LAST PROCESS EVENT
macro PCB$W_ASTCNT = 56,0,16,0 %;       ! AST COUNT REMAINING 
macro PCB$W_BIOCNT = 58,0,16,0 %;       ! BUFFERED I/O COUNT REMAINING 
macro PCB$W_BIOLM = 60,0,16,0 %;        ! BUFFERED I/O LIMIT 
macro PCB$W_DIOCNT = 62,0,16,0 %;       ! DIRECT I/O COUNT REMAINING 
macro PCB$W_DIOLM = 64,0,16,0 %;        ! DIRECT I/O COUNT LIMIT 
macro PCB$W_PRCCNT = 66,0,16,0 %;       ! SUBPROCESS COUNT 
macro PCB$T_TERMINAL = 68,0,0,0 %;
literal PCB$S_TERMINAL = 8;             ! TERMINAL DEVICE NAME STRING 
! FOR INTERACTIVE JOBS
macro PCB$L_PQB = 76,0,32,0 %;          ! POINTER TO PROCESS QUOTA BLOCK 
! (PROCESS CREATION ONLY)
macro PCB$L_EFWM = 76,0,32,0 %;         ! EVENT FLAG WAIT MASK 
macro PCB$L_EFCS = 80,0,32,0 %;         ! LOCAL EVENT FLAG CLUSTER,SYSTEM 
macro PCB$L_EFCU = 84,0,32,0 %;         ! LOCAL EVENT FLAG CLUSTER, USER 
macro PCB$W_PGFLCHAR = 88,0,16,0 %;     ! PAGE FILE CHARACTERISTICS
macro PCB$B_PGFLINDEX = 90,0,8,0 %;     ! Desired SYSTEM page file index
macro PCB$L_EFC2P = 88,0,32,0 %;        ! POINTER TO GLOBAL CLUSTER !2 
macro PCB$L_EFC3P = 92,0,32,0 %;        ! POINTER TO GLOBAL CLUSTER !3
macro PCB$L_PID = 96,0,32,0 %;          ! PROCESS ID USED BY EXEC ON LOCAL NODE ONLY
!   
! *** WARNING - THE INTERNAL STRUCTURE OF THE EPID IS SUBJECT TO RADICAL CHANGE BETWEEN
! ***           VERSIONS OF VMS.  NO ASSUMPTIONS SHOULD EVER BE MADE ABOUT ITS FORMAT
! 
macro PCB$L_EPID = 100,0,32,0 %;        ! CLUSTER-WIDE PROCESS ID SEEN BY THE WORLD
macro PCB$V_EPID_PROC = 100,0,21,0 %;
literal PCB$S_EPID_PROC = 21;           ! PROCESS ID FIELD, CAN CONVERT TO PCB$L_PID
macro PCB$V_EPID_NODE_IDX = 100,21,8,0 %;
literal PCB$S_EPID_NODE_IDX = 8;        ! IDX - INDEX TO TABLE OF NODE IDENTIFICATIONS
macro PCB$V_EPID_NODE_SEQ = 100,29,2,0 %;
literal PCB$S_EPID_NODE_SEQ = 2;        ! SEQ - SEQUENCE NUMBER FOR NODE TABLE ENTRY REUSE
macro PCB$V_EPID_WILD = 100,31,1,0 %;   ! FLAG THAT EPID IS WILDCARD CONTEXT FOR $GETJPI, AND NOT
!  A VALID EPID
! 
macro PCB$L_EOWNER = 104,0,32,0 %;      ! EPID OF PROCESS OWNER
! 
macro PCB$L_PHD = 108,0,32,0 %;         ! PROCESS HEADER ADDRESS 
macro PCB$W_APTCNT = 112,0,16,0 %;      ! ACTIVE PAGE TABLE COUNT 
macro PCB$W_MTXCNT = 114,0,16,0 %;      ! COUNT OF MUTEX SEMAPHORES OWNED 
macro PCB$L_GPGCNT = 116,0,32,0 %;      ! GLOBAL PAGE COUNT IN WS 
macro PCB$L_PPGCNT = 120,0,32,0 %;      ! PROCESS PAGE COUNT IN WS
macro PCB$L_JIB = 124,0,32,0 %;         ! ADDRESS OF JOB INFORMATION BLOCK 
macro PCB$L_WSSWP = 128,0,32,0 %;       ! SWAP FILE DISK ADDRESS 
macro PCB$L_SWAPSIZE = 132,0,32,0 %;    ! SWAP BLOCK ALLOCATION 
macro PCB$R_PCBARB = 136,0,0,0 %;
literal PCB$S_PCBARB = 124;
macro PCB$Q_PRIV = 136,0,0,0 %;
literal PCB$S_PRIV = 8;                 ! CURRENT PRIVILEGE MASK 
macro PCB$L_ARB = 144,0,32,0 %;         ! ADDRESS OF ACCESS RIGHTS BLOCK 
macro PCB$L_UIC = 196,0,32,0 %;         ! LOGON UIC OF PROCESS 
macro PCB$W_MEM = 196,0,16,0 %;         ! MEMBER NUMBER IN UIC 
macro PCB$W_GRP = 198,0,16,0 %;         ! GROUP NUMBER IN UIC 
macro PCB$L_ORB = 260,0,32,0 %;         !  Address of the ORB
macro PCB$W_TMBU = 266,0,16,0 %;        ! TERMINATION MAILBOX UNIT NO. 
macro PCB$L_LOCKQFL = 268,0,32,0 %;     ! LOCK QUEUE FORWARD LINK 
macro PCB$L_LOCKQBL = 272,0,32,0 %;     ! LOCK QUEUE BACKWARD LINK 
macro PCB$L_DLCKPRI = 276,0,32,0 %;     ! DEADLOCK RESOLUTION PRIORITY 
macro PCB$L_IPAST = 280,0,32,0 %;       ! VECTOR OF MODE BITS FOR IPASTS 
macro PCB$L_DEFPROT = 284,0,32,0 %;     ! PROCESS DEFAULT PROTECTION
macro PCB$L_PMB = 288,0,32,0 %;         ! PMB ADDRESS
macro PCB$L_AFFINITY = 292,0,32,0 %;    ! CPU ID for affinity
macro PCB$L_SCHED_SPARE = 296,0,32,0 %; ! spare for scheduler
macro PCB$L_CAPABILITY = 300,0,32,0 %;  !  CPU capability selection bitmask
macro PCB$L_CPU_ID = 304,0,32,0 %;      ! PHYSICAL CPU ID
macro PCB$L_CPUTIM = 308,0,32,0 %;      ! Accumulated CPU time
! at last outswap
macro PCB$T_LNAME = 312,0,0,0 %;
literal PCB$S_LNAME = 16;               ! LOGICAL NAME OF PROCESS 
macro PCB$L_PRCPDB = 328,0,32,0 %;      !  Address of process performance data block
! **** NB: For DIGITAL software use only *****
macro PCB$L_PIXHIST = 332,0,32,0 %;     !  PIXSCAN history summary LW 
macro PCB$L_NS_RESERVED_Q1 = 336,0,32,0 %; !  Reserved for VP
macro PCB$L_NS_RESERVED_Q1_L1 = 336,0,32,0 %;
macro PCB$L_VP_CONTEXT = 336,0,32,0 %;  !  Address of vector context area
macro PCB$L_AFFINITY_CALLBACK = 340,0,32,0 %; !  Callback for breaking affinity
macro PCB$L_PERMANENT_CAPABILITY = 344,0,32,0 %; !  Permanent capability  mask
macro PCB$L_PERMANENT_CPU_AFFINITY = 348,0,32,0 %; !  Permanent CPU affinity
macro PCB$Q_CWPSSRV_QUEUE = 352,0,0,0 %;
literal PCB$S_CWPSSRV_QUEUE = 8;        !  CWPS service block queue
macro PCB$L_CURRENT_AFFINITY = 360,0,32,0 %; !  Current CPU mask
macro PCB$L_CAPABILITY_SEQ = 364,0,32,0 %; !  Copy of last sequence number
macro PCB$w_spare_W1 = 368,0,16,0 %;    !  available
macro PCB$w_spare_W2 = 370,0,16,0 %;    !  available
macro PCB$Q_BUFOBJ_LIST = 372,0,0,0 %;
literal PCB$S_BUFOBJ_LIST = 8;          !  Defined buffer objects queue head
macro PCB$L_ADB_LINK = 380,0,32,0 %;    !  Address of AST Data Blocks (GEN)
macro PCB$W_TOTAL_EVTAST = 384,0,16,0 %; !  Total AST quota in use for event (GEN)
macro PCB$A_CURRENT_TX = 388,0,32,0 %;  !  Pointer to process default transaction
macro PCB$A_CURRENT_CD = 392,0,32,0 %;  !  Pointer to process default commit domain
macro PCB$A_CURRENT_VERTEX = 396,0,32,0 %; !  Pointer to process default execution vertex
macro PCB$Q_XSCB_QUE = 400,0,0,0 %;
literal PCB$S_XSCB_QUE = 8;             !  Transaction Segment list
macro PCB$A_XSCB_FLINK = 400,0,32,0 %;
macro PCB$A_XSCB_BLINK = 404,0,32,0 %;
macro PCB$Q_RMCB_QUE = 408,0,0,0 %;
literal PCB$S_RMCB_QUE = 8;             !  Declared resource manager list
macro PCB$A_RMCB_FLINK = 408,0,32,0 %;
macro PCB$A_RMCB_BLINK = 412,0,32,0 %;
macro PCB$Q_CD_QUE = 416,0,0,0 %;
literal PCB$S_CD_QUE = 8;               !  Commit domain membership list
macro PCB$A_CD_FLINK = 416,0,32,0 %;
macro PCB$A_CD_BLINK = 420,0,32,0 %;
macro PCB$L_CPUTIME_REF = 424,0,32,0 %; !  CPUTIME at last TICK time 
macro PCB$L_ACC_WAITIME = 428,0,32,0 %; !  Accumulated wait time 
 
!*** MODULE $PDBDEF ***
! +
!  DEFINE DEVICE PERFORMANCE DATA BLOCK
! -
literal PDB$K_LENGTH = 52;              ! LENGTH OF DATA CONTROL BLOCK 
literal PDB$C_LENGTH = 52;              ! LENGTH OF DATA CONTROL BLOCK 
literal PDB$S_PDBDEF = 52;
macro PDB$L_FREEFL = 0,0,32,0 %;        ! FREE BUFFER LISTHEAD FORWARD LINK 
macro PDB$L_FREEBL = 4,0,32,0 %;        ! FREE BUFFER LISTHEAD BACKLINK 
macro PDB$W_SIZE = 8,0,16,0 %;          ! SIZE OF DATA STRUCTURE 
macro PDB$B_TYPE = 10,0,8,0 %;          ! TYPE OF DATA STRUCTURE 
macro PDB$B_OVERRUN = 11,0,8,0 %;       ! OVERRUN INDICATOR 
macro PDB$L_FILLFL = 12,0,32,0 %;       ! FILLED BUFFER LISTHEAD FORWARD LINK 
macro PDB$L_FILLBL = 16,0,32,0 %;       ! FILLED BUFFER LISTHEAD BACKWARD LINK 
macro PDB$L_CURBUF = 20,0,32,0 %;       ! ADDRESS OF CURRENT BUFFER 
macro PDB$L_NXTBUF = 24,0,32,0 %;       ! ADDRESS OF NEXT LOCATION IN BUFFER 
macro PDB$L_ENDBUF = 28,0,32,0 %;       ! ADDRESS OF END OF BUFFER 
macro PDB$L_PID = 32,0,32,0 %;          ! PROCESS ID OF DATA COLLECTION PROCESS 
macro PDB$B_DEVCLASS = 36,0,8,0 %;      ! DEVICE CLASS SELECTION 
macro PDB$B_DEVTYPE = 37,0,8,0 %;       ! DEVICE TYPE SELECTION 
macro PDB$W_ANDM = 38,0,16,0 %;         ! STATUS SELECTION 'AND' MASK 
macro PDB$W_XORM = 40,0,16,0 %;         ! STATUS SELECTION 'XOR' MASK 
macro PDB$W_BUFCNT = 42,0,16,0 %;       ! COUNT OF FILLED BUFFERS 
macro PDB$Q_FUNC = 44,0,0,0 %;
literal PDB$S_FUNC = 8;                 ! SELECTION FUNCTION MASK 
 
!*** MODULE $PDTDEF ***
! +
!  DEFINE PORT-INDEPENDENT OFFSETS IN A PORT DESCRIPTOR TABLE.
! 
!  THERE IS ONE PDT PER PORT ACCESSED VIA SCS.  THESE PORTS INCLUDE
!  CI'S AND UDA'S.  THE PDT CONTAINS A PORT-INDEPENDENT PIECE (DEFINED
!  HERE) FOLLOWED BY AN OPTIONAL PORT-SPECIFIC PIECE DEFINED IN THE
!  PORT DRIVER.  PDT'S ARE CREATED BY THE CONTROLLER INIT ROUTINES
!  OF THE INDIVIDUAL PORT DRIVERS.
! -
literal PDT$M_SNGLHOST = 1;
literal PDT$C_PA = 1;                   !  CI PORT 
literal PDT$C_PU = 2;                   !  UDA PORT 
literal PDT$C_PE = 3;                   !  NI PORT
literal PDT$C_PS = 4;                   !  PASSTHRU PORT
literal PDT$C_PB = 5;                   !  BVP storage port
literal PDT$C_PI = 6;                   !  DSSI PORT
literal PDT$C_PL = 7;                   !  Gapless tape port
literal PDT$C_PW = 8;                   !  SWIFT port
literal PDT$K_SCSBASE = 12;             ! SCS ENTRIES INTO THE PORT DRIVER: 
literal PDT$C_SCSBASE = 12;             ! SCS ENTRIES INTO THE PORT DRIVER: 
literal PDT$K_SCSEND = 184;             ! END OF SCS ENTRIES TO PORT DRIVER 
literal PDT$C_SCSEND = 184;             ! END OF SCS ENTRIES TO PORT DRIVER 
literal PDT$M_CNTBSY = 1;
literal PDT$M_CNTRLS = 2;
literal PDT$C_BASEVER = 0;              ! V4.0 drivers
literal PDT$C_LISTENVER = 1;            ! V5.0 redesigned listener connection state transitions
literal PDT$C_BALANCEVER = 2;           ! Dynamic load balancing version
literal PDT$C_REORGVER = 1;             ! V5.0 reorganized PDT format
literal PDT$C_CREDITVER = 2;            ! Optimistic credit allocation format
literal PDT$C_NI_CLASS = 10;            !  NI/SCA performance level port/interconnect
literal PDT$C_CI_CLASS = 20;            !  CI     performance level port/interconnect
! 
literal PDT$C_YELLOW = 4;               !  Port is in YELLOW zone
literal PDT$C_RED = 6;                  !  Port is in RED zone
literal PDT$C_UNEQUAL_PATH = 7;         !  Unequal path load sharing (i.e. NI->CI)
literal PDT$K_LENGTH = 552;             ! SIZE OF PORT-INDEPENDENT PIECE 
literal PDT$C_LENGTH = 552;             ! SIZE OF PORT-INDEPENDENT PIECE 
!  OF PDT.
literal PDT$S_PDTDEF = 552;
macro PDT$L_FLINK = 0,0,32,0 %;         ! LINK TO NEXT SCS PDT
macro PDT$W_PORTCHAR = 4,0,16,0 %;      ! Port Characteristics
macro PDT$V_SNGLHOST = 4,0,1,0 %;       !  Port to single host bus
macro PDT$B_PDT_TYPE = 7,0,8,0 %;       !  TYPE OF PDT 
macro PDT$W_SIZE = 8,0,16,0 %;          ! STRUCTURE SIZE IN BYTES 
macro PDT$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE = SCS 
macro PDT$B_SUBTYP = 11,0,8,0 %;        ! STRUCTURE SUBTYPE 
macro PDT$L_ACCEPT = 12,0,32,0 %;       !  ACCEPT A CONNECT REQUEST 
macro PDT$L_ALLOCDG = 16,0,32,0 %;      !  ALLOCATE A DG BUFFER 
macro PDT$L_ALLOCMSG = 20,0,32,0 %;     !  ALLOCATE A MESSAGE BUFFER 
macro PDT$L_CONNECT = 24,0,32,0 %;      !  REQUEST CONNECTION TO REMOTE 
macro PDT$L_DEALLOCDG = 28,0,32,0 %;    !  DEALLOCATE DG BUFFER 
macro PDT$L_DEALLOMSG = 32,0,32,0 %;    !  DEALLOCATE MSG BUFFER 
macro PDT$L_DEALRGMSG = 36,0,32,0 %;    !  DEALLOC MSG BUFF, ARGS IN REGISTERS 
macro PDT$L_DCONNECT = 40,0,32,0 %;     !  BREAK CONNECTION 
macro PDT$L_MAP = 44,0,32,0 %;          !  MAP A BUFFER FOR BLK XFER 
macro PDT$L_MAPBYPASS = 48,0,32,0 %;    !  MAP, DISABL ACCESS CHECKS 
macro PDT$L_MAPIRP = 52,0,32,0 %;       !  MAP, GET ARGS FROM IRP 
macro PDT$L_MAPIRPBYP = 56,0,32,0 %;    !  MAP, ARGS FROM IRP, DISABL ACCESS CHECKS 
macro PDT$L_QUEUEDG = 60,0,32,0 %;      !  QUEUE A DG FOR RECEIVE 
macro PDT$L_QUEUEMDGS = 64,0,32,0 %;    !  ALLOC/DEALLOC DG'S FOR RECEIVE 
macro PDT$L_RCHMSGBUF = 68,0,32,0 %;    !  RECYCLE MSG BUFF, HIGH PRIORITY 
macro PDT$L_RCLMSGBUF = 72,0,32,0 %;    !  RECYCLE MSG BUFF, LOW PRIORITY 
macro PDT$L_REJECT = 76,0,32,0 %;       !  REJECT CONNECT REQUEST 
macro PDT$L_REQDATA = 80,0,32,0 %;      !  REQUEST BLK DATA XFER 
macro PDT$L_SENDDATA = 84,0,32,0 %;     !  SEND BLK DATA XFER 
macro PDT$L_SENDDG = 88,0,32,0 %;       !  SEND A DATAGRAM 
macro PDT$L_SENDMSG = 92,0,32,0 %;      !  SEND A MESSAGE 
macro PDT$L_SNDCNTMSG = 96,0,32,0 %;    !  SEND MSG WITH BYTE COUNT 
macro PDT$L_UNMAP = 100,0,32,0 %;       !  UNMAP A BUFFER 
macro PDT$L_READCOUNT = 104,0,32,0 %;   !  READ COUNTERS (FMT PORT SPECIFIC) 
macro PDT$L_RLSCOUNT = 108,0,32,0 %;    !  RELEASE AND READ COUNTERS 
macro PDT$L_MRESET = 112,0,32,0 %;      !  MAINT RESET OF REMOTE 
macro PDT$L_MSTART = 116,0,32,0 %;      !  MAINT START OF REMOTE 
macro PDT$L_MAINTFCN = 120,0,32,0 %;    !  MISC MAINT FUNCTIONS NOT SUPPORTED 
!   IN VMS
macro PDT$L_SENDRGDG = 124,0,32,0 %;    !  SEND DG W/ REGISTER INPUTS
macro PDT$L_STOP_VCS = 128,0,32,0 %;    !  SEND STOP DGS ON ALL VCS
macro PDT$L_SHUT_PATH = 132,0,32,0 %;   !  FORCE VC SHUTDOWN
macro PDT$L_SET_CRASH = 136,0,32,0 %;   !  Define the cluster crash message
macro PDT$L_SEND_CRASH = 140,0,32,0 %;  !  Send the cluster crash message
macro PDT$L_SCAN_MAP_WAIT = 144,0,32,0 %; !  Search for stalled map resources
macro PDT$L_SENDDATAWMSG = 148,0,32,0 %; !  send data w/piggyback message
macro PDT$L_REINIT_PORT = 152,0,32,0 %; !  (TYC 10-Feb-89) REINIT A PORT
!  (TYC 8-Dec-88) merge SHUT_ALL_VC from V5.1 variant
macro PDT$L_SHUT_ALL_VC = 156,0,32,0 %; !  Shutdown all VCs on a port
macro PDT$L_WAITQFL = 184,0,32,0 %;     ! LISTHEAD FOR FORK BLOCKS WAITING 
macro PDT$L_WAITQBL = 188,0,32,0 %;     !  FOR NONPAGED POOL 
macro PDT$L_MSGHDRSZ = 192,0,32,0 %;    ! MESSAGE HEADER SIZE 
macro PDT$L_DGOVRHD = 196,0,32,0 %;     ! DATAGRAM HEADER SIZE 
macro PDT$L_MAXBCNT = 200,0,32,0 %;     ! MAXIMUM TRANSFER BCNT
macro PDT$W_FLAGS = 204,0,16,0 %;       ! PORT FLAGS 
macro PDT$V_CNTBSY = 204,0,1,0 %;       !  COUNTERS IN USE 
macro PDT$V_CNTRLS = 204,1,1,0 %;       !  RELEASE COUNTERS 
macro PDT$T_CNTOWNER = 208,0,0,0 %;
literal PDT$S_CNTOWNER = 16;            ! NAME OF SYSAP USING COUNTERS 
macro PDT$L_CNTCDRP = 224,0,32,0 %;     ! CDRP OF SYSAP READING COUNTERS 
macro PDT$L_POLLSWEEP = 228,0,32,0 %;   ! # SECONDS TO DO A POLLER SWEEP
macro PDT$L_UCB0 = 232,0,32,0 %;        ! ADDR OF UCB.
macro PDT$L_ADP = 236,0,32,0 %;         ! ADDR OF ADP.
macro PDT$L_MAX_VCTMO = 240,0,32,0 %;   ! Maximum VC timeout
macro PDT$W_SCSVERSION = 244,0,16,0 %;  ! SCSLOA version
macro PDT$W_PPDVERSION = 246,0,16,0 %;  ! PPD driver version
macro PDT$L_LOAD_VECTOR = 248,0,32,0 %; ! Load vector
macro PDT$W_LOAD_CLASS = 252,0,16,0 %;  ! Load class (higher arbitrary numbers for higher interconnect performance)
!  class = 0 for default lowest performance level
!  (TYC 15-Feb-89) Dynamic Load Sharing Specific Counters and Fields                 
! 
macro PDT$Q_PB = 256,0,0,0 %;
literal PDT$S_PB = 8;                   !  Queue header for path blocks
macro PDT$Q_CONN_WAIT = 264,0,0,0 %;
literal PDT$S_CONN_WAIT = 8;            !  Queue header for CDTs in Load Share Wait Queue
macro PDT$Q_YELLOW = 272,0,0,0 %;
literal PDT$S_YELLOW = 8;               !  Queue header for CDTs in Load Share Yellow Queue
macro PDT$Q_RED = 280,0,0,0 %;
literal PDT$S_RED = 8;                  !  Queue header for CDTs in Load Share Red Queue
macro PDT$Q_DISABLED = 288,0,0,0 %;
literal PDT$S_DISABLED = 8;             !  Queue header for CDTs in Load Share Disabled Queue
macro PDT$L_PORT_MAP = 296,0,32,0 %;    !  32-bit load sharing domain bit map
macro PDT$L_AVAIL_THRUPUT = 300,0,32,1 %; !  Port's available throughput
macro PDT$L_LOAD_RATING = 304,0,32,0 %; !  Port load share rating
macro PDT$L_TIME_STAMP = 308,0,32,0 %;  !  Load sharing port time stamp
!  Load share thresholds
macro PDT$L_SATURATION_PT = 312,0,32,0 %; !  Port saturation point
macro PDT$L_MAX_THRUPUT_THRESHOLD = 316,0,32,0 %; !  Port maximum throughput threshold
macro PDT$L_MIN_THRUPUT_THRESHOLD = 320,0,32,0 %; !  Port minimum throughput threshold
macro PDT$L_TOLERANCE_THRESHOLD = 324,0,32,0 %; !  Port load tolerance threshold
!  Load sharing data transfer counters
macro PDT$L_BYTES_DG_XMT = 328,0,32,0 %; !  Total bytes xmitted by port for DG only
macro PDT$L_BYTES_DG_RCV = 332,0,32,0 %; !  Total bytes rcv'd by port for DG only
macro PDT$L_BYTES_MSG_XMT = 336,0,32,0 %; !  Total bytes xmitted by port for MSG only
macro PDT$L_BYTES_MSG_RCV = 340,0,32,0 %; !  Total bytes rcv'd by port for MSG only
macro PDT$L_BYTES_MAPPED = 344,0,32,0 %; !  Total bytes mapped by port for BT only
macro PDT$L_DG_XMT = 348,0,32,0 %;      !  Total DGs xmitted by port
macro PDT$L_DG_RCV = 352,0,32,0 %;      !  Total DGs rcv'd by port
macro PDT$L_MSG_XMT = 356,0,32,0 %;     !  Total MSGs xmitted by port
macro PDT$L_MSG_RCV = 360,0,32,0 %;     !  Total MSGs rcv'd by port
macro PDT$Q_BYTES_XFER = 364,0,0,0 %;
literal PDT$S_BYTES_XFER = 8;           !  Total bytes xferred by port (both XMIT and RCV)
macro PDT$L_NUM_MAP = 372,0,32,0 %;     !  (TYC0001) # of map operations completed
macro PDT$L_PORT_CMD = 376,0,32,0 %;    !  Total # of port commands placed on
!   queue when the queue is not empty
!   (this is a conditional counter)
macro PDT$L_BYTES_DG_XMT_LAST = 380,0,32,0 %; !  Total bytes xmitted by port for DG only
!   up to last load sharing interval
macro PDT$L_BYTES_DG_RCV_LAST = 384,0,32,0 %; !  Total bytes rcv'd by port for DG only
!   up to last load sharing interval
macro PDT$L_BYTES_MSG_XMT_LAST = 388,0,32,0 %; !  Total bytes xmitted by port for MSG only
!   up to last load sharing interval
macro PDT$L_BYTES_MSG_RCV_LAST = 392,0,32,0 %; !  Total bytes rcv'd by port for MSG only
!   up to last load sharing interval
macro PDT$L_BYTES_MAPPED_LAST = 396,0,32,0 %; !  Total bytes mapped by port for BT only
!   up to last load sharing interval
macro PDT$L_DG_XMT_LAST = 400,0,32,0 %; !  Total DGs xmitted by port
!   up to last load sharing interval
macro PDT$L_DG_RCV_LAST = 404,0,32,0 %; !  Total DGs rcv'd by port
!   up to last load sharing interval
macro PDT$L_MSG_XMT_LAST = 408,0,32,0 %; !  Total MSGs xmitted by port
!   up to last load sharing interval
macro PDT$L_MSG_RCV_LAST = 412,0,32,0 %; !  Total MSGs rcv'd by port
!   up to last load sharing interval
macro PDT$Q_BYTES_XFER_LAST = 416,0,0,0 %;
literal PDT$S_BYTES_XFER_LAST = 8;      !  Total bytes xferred by port 
!   up to last load sharing interval
macro PDT$L_NUM_MAP_LAST = 424,0,32,0 %; !  (TYC0001) # of map operations completed
!   by port up to last load sharing interval
macro PDT$L_PORT_CMD_LAST = 428,0,32,0 %; !  Total # of port commands placed on
!   queue when the queue is not empty
!   up to last load sharing interval
!   (this is a conditional counter)
macro PDT$L_BYTES_XFER_INT = 432,0,32,0 %; !  (TYC 31-AUG-89) TOTAL BYTES XFERRED
!  DURING LAST LOAD SHARING INTERVAL
macro PDT$L_EQUAL_PATH_CALL_COUNT = 436,0,32,0 %; !  Number of equal path move requests made
!   to connections on this port
macro PDT$L_UNEQUAL_PATH_CALL_COUNT = 440,0,32,0 %; !  Number of unequal path move requests made
!   to connections on this port
macro PDT$L_CONNECTION_MOVE_COUNT = 444,0,32,0 %; !  Number of connection moves from this port
! 
!  (TYC 27-Feb-89) peak counters used with conditional assembly
macro PDT$L_BYTES_DG_XMT_PEAK = 448,0,32,0 %; !  Peak value of total bytes xmitted 
!   by port for DG only
macro PDT$L_BYTES_DG_RCV_PEAK = 452,0,32,0 %; !  Peak value of total bytes rcv'd 
!   by port for DG only
macro PDT$L_BYTES_MSG_XMT_PEAK = 456,0,32,0 %; !  Peak value of total bytes xmitted 
!   by port for MSG only
macro PDT$L_BYTES_MSG_RCV_PEAK = 460,0,32,0 %; !  Peak value of total bytes rcv'd 
!   by port for MSG only
macro PDT$L_BYTES_MAPPED_PEAK = 464,0,32,0 %; !  Peak value of total bytes mapped 
!   by port for BT only
macro PDT$L_DG_XMT_PEAK = 468,0,32,0 %; !  Peak value of total DGs xmitted by port
macro PDT$L_DG_RCV_PEAK = 472,0,32,0 %; !  Peak value of total DGs rcv'd by port
macro PDT$L_MSG_XMT_PEAK = 476,0,32,0 %; !  Peak value of total MSGs xmitted by port
macro PDT$L_MSG_RCV_PEAK = 480,0,32,0 %; !  Peak value of total MSGs rcv'd by port
macro PDT$Q_BYTES_XFER_PEAK = 484,0,0,0 %;
literal PDT$S_BYTES_XFER_PEAK = 8;      !  Peak value of total bytes xferred 
!   by port (both XMIT and RCV)
macro PDT$L_PORT_CMD_PEAK = 492,0,32,0 %; !  Peak value of total # of port commands placed on
!   queue when the queue is not empty
! 
!  (TYC 27-Feb-89) average counters used with conditional assembly
macro PDT$L_BYTES_DG_XMT_AVG = 496,0,32,0 %; !  Average value of total bytes xmitted 
!   by port for DG only
macro PDT$L_BYTES_DG_RCV_AVG = 500,0,32,0 %; !  Average value of total bytes rcv'd 
!   by port for DG only
macro PDT$L_BYTES_MSG_XMT_AVG = 504,0,32,0 %; !  Average value of total bytes xmitted 
!   by port for MSG only
macro PDT$L_BYTES_MSG_RCV_AVG = 508,0,32,0 %; !  Average value of total bytes rcv'd 
!   by port for MSG only
macro PDT$L_BYTES_MAPPED_AVG = 512,0,32,0 %; !  Average value of total bytes mapped 
!   by port for BT only
macro PDT$L_DG_XMT_AVG = 516,0,32,0 %;  !  Average value of total DGs xmitted by port
macro PDT$L_DG_RCV_AVG = 520,0,32,0 %;  !  Average value of total DGs rcv'd by port
macro PDT$L_MSG_XMT_AVG = 524,0,32,0 %; !  Average value of total MSGs xmitted by port
macro PDT$L_MSG_RCV_AVG = 528,0,32,0 %; !  Average value of total MSGs rcv'd by port
macro PDT$Q_BYTES_XFER_AVG = 532,0,0,0 %;
literal PDT$S_BYTES_XFER_AVG = 8;       !  Average value of total bytes xferred 
!   by port (both XMIT and RCV)
macro PDT$L_PORT_CMD_AVG = 540,0,32,0 %; !  Average value of total # of port commands placed on
!   queue when the queue is not empty
!  (TYC 22-Jun-89) Moved down here to longword-align
macro PDT$B_LS_FLAG = 544,0,8,0 %;      !  Load share flag, if set, load sharing disabled for now
 
!*** MODULE $PDTLISTDEF ***
! +
!  SCS PDT LIST  (TYC 15-Feb-89)
!  
!  THIS DATA STRUCTURE CONTAINS A VECTOR LISTING UP TO 32 PDT ADDRESSES OF
!  DYNAMIC LOAD SHARING PORTS.  THE INDEX IS MAINTAINED IN THE SCS
!  LOAD SHARING PORT BIT MAP.
! -
literal PDTLIST$C_MAX_INDEX = 32;
literal PDTLIST$K_LENGTH = 140;
literal PDTLIST$C_LENGTH = 140;
literal PDTLIST$S_PDTLISTDEF = 16;
macro PDTLIST$L_FLINK = -12,0,32,0 %;   ! FWD LINK 
macro PDTLIST$L_BLINK = -8,0,32,0 %;    ! BCK LINK 
macro PDTLIST$W_SIZE = -4,0,16,0 %;     ! STRUCTURE SIZE IN BYTES 
macro PDTLIST$B_TYPE = -2,0,8,0 %;      ! SCS STRUCTURE TYPE 
macro PDTLIST$B_SUBTYP = -1,0,8,0 %;    ! SCS STRUCTURE SUBTYPE FOR PDTLIST
macro PDTLIST$L_PDTADDR = 0,0,32,0 %;   ! FIRST PDT ADDRESS
 
!*** MODULE $PFBDEF ***
! +
!  PAGE FAULT MONITOR BUFFER
! -
literal PFB$B_USER_BUFFER = 12;
literal PFB$B_BUFFER = 20;              ! Beginning of PC/VA pairs
literal PFB$K_LENGTH = 524;             ! Length of PFB 
literal PFB$C_LENGTH = 524;             ! Length of PFB 
literal PFB$S_PFBDEF = 524;
macro PFB$L_FLINK = 0,0,32,0 %;         ! Forward link
macro PFB$L_BLINK = 4,0,32,0 %;         ! Back    link
macro PFB$W_SIZE = 8,0,16,0 %;          ! Structure size
macro PFB$B_TYPE = 10,0,8,0 %;          ! Dynamic structure type (PFB)
macro PFB$R_USER_BUFFER = 12,0,0,0 %;
literal PFB$S_USER_BUFFER = 512;        ! Buffer returned to user
macro PFB$L_RECCNT = 12,0,32,0 %;       ! Record count
macro PFB$L_OVERFLOW = 16,0,32,0 %;     ! Overflow count
 
!*** MODULE $PFLDEF ***
! +
!  PAGE FILE CONTROL BLOCK
! -
! 
!  ***** L_VBN, L_WINDOW, AND B_PFC MUST BE THE SAME OFFSET VALUES AS THE
!  ***** EQUIVALENTLY NAMED OFFSETS IN $SECDEF
! 
literal PFL$K_LENGTH = 52;              ! SIZE OF PAGE FILE CONTROL BLOCK 
literal PFL$C_LENGTH = 52;              ! SIZE OF PAGE FILE CONTROL BLOCK 
literal PFL$M_INITED = 1;
literal PFL$M_PAGFILFUL = 2;
literal PFL$M_SWPFILFUL = 4;
literal PFL$M_DINSPEN = 16;
literal PFL$M_STOPPER = 128;
literal PFL$S_PFLDEF = 56;
macro PFL$L_BITMAP = 0,0,32,0 %;        ! ADDRESS OF START OF BIT MAP 
! BIT = 1 MEANS AVAILABLE
macro PFL$L_STARTBYTE = 4,0,32,0 %;     ! STARTING BYTE OFFSET TO SCAN 
macro PFL$W_SIZE = 8,0,16,0 %;          ! SIZE OF PAGE FILE CONTROL BLOCK 
macro PFL$B_TYPE = 10,0,8,0 %;          ! PAGE FILE CONTROL BLOCK TYPE CODE 
macro PFL$B_PFC = 11,0,8,0 %;           ! PAGE FAULT CLUSTER FOR PAGE READS 
macro PFL$L_WINDOW = 12,0,32,0 %;       ! WINDOW ADDRESS 
macro PFL$L_VBN = 16,0,32,0 %;          ! BASE VBN 
macro PFL$L_BITMAPSIZ = 20,0,32,0 %;    ! SIZE IN BYTES OF PAGE FILE 
macro PFL$L_FREPAGCNT = 24,0,32,0 %;    ! COUNT - 1 OF PAGES WHICH MAY BE ALLOCATED 
macro PFL$L_MINFREPAGCNT = 28,0,32,0 %; !  Minimum free page count
macro PFL$L_RSRVPAGCNT = 32,0,32,0 %;   !  Count of pages which may be reserved
!  without "overcommiting" the pagefile
macro PFL$L_REFCNT = 36,0,32,0 %;       !  No. of processes using this pagefile
macro PFL$L_SWPREFCNT = 40,0,32,0 %;    !  No. of processes using this file for swapping
macro PFL$L_MAXVBN = 44,0,32,0 %;       ! MASK APPLIED TO PTE WITH PAGING FILE 
!  BACKING STORE ADDRESS
macro PFL$B_PGFLX = 48,0,8,0 %;         !  Page file vector index
macro PFL$B_ALLOCSIZ = 50,0,8,0 %;      ! CURRENT ALLOCATION REQUEST SIZE 
macro PFL$B_FLAGS = 51,0,8,0 %;         ! FLAGS BYTE FOR THIS PAGE FILE 
macro PFL$V_INITED = 51,0,1,0 %;        ! THIS PAGE FILE IS USABLE 
macro PFL$V_PAGFILFUL = 51,1,1,0 %;     ! REQUEST FOR PAGING SPACE HAS FAILED 
macro PFL$V_SWPFILFUL = 51,2,1,0 %;     ! REQUEST FOR SWAPPING SPACE HAS FAILED 
macro PFL$V_DINSPEN = 51,4,1,0 %;       !  File deinstall pending
macro PFL$V_STOPPER = 51,7,1,0 %;       ! RESERVED FOR ALL TIME (MUST NEVER BE SET) 
macro PFL$L_BITMAPLOC = 52,0,32,0 %;    ! BITMAP FOLLOWS PFL HEADER 
 
!*** MODULE $PFLMAPDEF ***
! +
!  PAGE FILE MAPPING WINDOW BLOCK
! -
literal PFLMAP$C_MAXPTRS = 61;
literal PFLMAP$K_LENGTH = 508;          ! Size of structure
literal PFLMAP$C_LENGTH = 508;          ! Size of structure
literal PFLMAP$S_PFLMAPDEF = 20;
macro PFLMAP$L_PAGECNT = 0,0,32,0 %;    ! Total pages in all pointers
macro PFLMAP$W_SIZE = 8,0,16,0 %;       ! Size of structure
macro PFLMAP$B_TYPE = 10,0,8,0 %;       ! Structure type (DYN$C_PFLMAP)
macro PFLMAP$B_ACTPTRS = 11,0,8,0 %;    ! No. of active pointers in window
macro PFLMAP$Q_PTR = 12,0,0,0 %;
literal PFLMAP$S_PTR = 8;               ! Beginning of mapping pointers
!  The structure overhead includes an extra mapping pointer not included
!  in the calculation of "MAXPTRS" below. This mapping pointer is for
!  "overflow" and is included to simplify the logic that does the space
!  allocation and structure maintenance.
!  structure OH + ptrs <= 1 page
 
!*** MODULE $PFNDEF ***
! +
!  PFN DATA BASE DEFINITIONS
! -
! 
!  VIELD DEFINITIONS IN PFN$AB_STATE
! 
literal PFN$M_LOC = 7;
literal PFN$M_DELCON = 16;
literal PFN$M_BUFOBJ = 32;
literal PFN$M_MODIFY = 128;
literal PFN$M_PAGTYP = 7;
literal PFN$M_COLLISION = 16;
literal PFN$M_BADPAG = 32;
literal PFN$M_RPTEVT = 64;
literal PFN$M_PGFLVBN = 1048575;
literal PFN$M_PRCPGFLX = 3145728;
literal PFN$M_BAKX = 4194303;
literal PFN$M_BAK0 = 8388607;
literal PFN$M_GBLBAK = 8388608;
literal PFN$M_PGFLX = -16777216;
literal PFN$C_FREPAGLST = 0;            ! ON FREE PAGE LIST 
literal PFN$C_MFYPAGLST = 1;            ! ON MODIFIED PAGE LIST 
literal PFN$C_BADPAGLST = 2;            ! ON BAD PAGE LIST 
literal PFN$C_RELPEND = 3;              ! RELEASE PENDING 
! WHEN REFCNT = 0 RELEASE PFN
literal PFN$C_RDERR = 4;                ! READ ERROR WHILE PAGING IN 
literal PFN$C_WRTINPROG = 5;            ! WRITE IN PROGRESS (BY MFY PAG WRITER) 
literal PFN$C_RDINPROG = 6;             ! READ IN PROGRESS (PAGE IN) 
literal PFN$C_ACTIVE = 7;               ! PAGE IS ACTIVE AND VALID 
! 
literal PFN$C_PROCESS = 0;              ! PROCESS PAGE 
literal PFN$C_SYSTEM = 1;               ! SYSTEM PAGE 
literal PFN$C_GLOBAL = 2;               ! GLOBAL PAGE (READ ONLY) 
literal PFN$C_GBLWRT = 3;               ! GLOBAL WRITABLE PAGE 
literal PFN$C_PPGTBL = 4;               ! PROCESS PAGE TABLE 
literal PFN$C_GPGTBL = 5;               ! GLOBAL PAGE TABLE 
literal PFN$S_PFNDEF = 4;
macro PFN$V_LOC = 0,0,3,0 %;
literal PFN$S_LOC = 3;                  ! LOCATION OF PAGE 
! 
!  ***** THE FOLLOWING SPARE BIT MUST BE USED FOR EXTENSION OF THE LOC FIELD
!  ***** OR ALTERNATIVELY THE DELCON BIT MUST BE MOVED ADJACENT TO LOC
! 
macro PFN$V_DELCON = 0,4,1,0 %;         ! DELETE PFN CONTENTS WHEN REF=0 
macro PFN$V_BUFOBJ = 0,5,1,0 %;         ! Set if any buffer objects reference this PFN
! NB: Implies SWPVBN used as reference count
macro PFN$V_MODIFY = 0,7,1,0 %;         ! MODIFY BIT 
! 
!  VIELD DEFINITIONS IN PFN$AB_TYPE
! 
macro PFN$V_PAGTYP = 0,0,3,0 %;
literal PFN$S_PAGTYP = 3;               ! PAGE TYPE 
macro PFN$V_COLLISION = 0,4,1,0 %;      ! EMPTY COLLISION QUEUE WHEN PAGE READ COMPLETE 
macro PFN$V_BADPAG = 0,5,1,0 %;         ! BAD PAGE BIT 
macro PFN$V_RPTEVT = 0,6,1,0 %;         ! REPORT EVENT ON I/O COMPLETE 
! 
!  VIELD DEFINITIONS IN PFN$AL_BAK
! 
macro PFN$R_BAK_OVERLAY = 0,0,24,0 %;
macro PFN$R_BAK_PGFL = 0,0,24,0 %;
literal PFN$S_BAK_PGFL = 3;
macro PFN$V_PGFLVBN = 0,0,20,0 %;
literal PFN$S_PGFLVBN = 20;             !  Page file VBN
macro PFN$V_PRCPGFLX = 0,20,2,0 %;
literal PFN$S_PRCPGFLX = 2;             !  PROCESS page file index
macro PFN$V_BAKX = 0,0,22,0 %;
literal PFN$S_BAKX = 22;                ! BACKUP ADDRESS (uninterpreted)
macro PFN$V_BAK0 = 0,0,23,0 %;
literal PFN$S_BAK0 = 23;                ! BACKUP ADDRESS (w/TYP0)
macro PFN$R_GBLBAK_OVERLAY = 0,0,24,0 %;
macro PFN$V_GBLBAK = 0,23,1,0 %;        ! GLOBAL BACKING STORE ADDRESS 
macro PFN$V_PGFLX = 0,24,8,0 %;
literal PFN$S_PGFLX = 8;                !  SYSTEM page file index 
! 
!  LOCATION VIELD VALUES
! 
!  PAGE TYPE VIELD DEFINITIONS
! 
 
!*** MODULE $PHDDEF ***
! +
!  A PROCESS HEADER CONTAINS THE SWAPPABLE SCHEDULER AND
!  MEMORY MANAGEMENT DATA BASES FOR A PROCESS IN THE
!  BALANCE SET.
! 
!  When adding cells to this structure, insure that the
!  location PHD$L_PCB (the beginning of the HW PCB) remains
!  hexaword aligned and that the HW PCB does not cross a
!  virtual page boundary.
! -
literal PHD$C_HWPCBLEN = 100;           ! HW PCB LENGTH
literal PHD$K_HWPCBLEN = 100;           ! HW PCB LENGTH
! 
literal PHD$M_PFMFLG = 1;
literal PHD$M_DALCSTX = 2;
literal PHD$M_WSPEAKCHK = 4;
literal PHD$M_NOACCVIO = 8;
literal PHD$M_IWSPEAKCK = 16;
literal PHD$M_IMGDMP = 32;
literal PHD$M_NO_WS_CHNG = 64;
literal PHD$M_PGFLACC = 128;
literal PHD$M_VP_CONSUMER = 256;
literal PHD$M_VP_DISABLED = 512;
literal PHD$C_PHDPAGCTX = 8;            !  SIZE OF CONTEXT FOR PHD PAGES 
literal PHD$K_LENGTH = 404;             ! LENGTH OF FIXED PART OF PROCESS HEADER 
literal PHD$C_LENGTH = 404;             ! LENGTH OF FIXED PART OF PROCESS HEADER 
literal PHD$S_PHDDEF = 408;
macro PHD$Q_PRIVMSK = 0,0,0,0 %;
literal PHD$S_PRIVMSK = 8;              ! PRIVILEGE MASK 
macro PHD$W_SIZE = 8,0,16,0 %;          ! Structure size
macro PHD$B_TYPE = 10,0,8,0 %;          ! Dynamic structure type (PFB)
! 
!  WORKING SET LIST POINTERS - THESE CONTAIN LONG WORD OFFSETS FROM THE
!  BEGINNING OF THE PROCESS HEADER.
! 
macro PHD$L_WSLIST = 12,0,32,0 %;       ! 1ST WORKING SET LIST ENTRY 
macro PHD$L_WSLOCK = 16,0,32,0 %;       ! 1ST LOCKED WORKING SET LIST ENTRY 
macro PHD$L_WSDYN = 20,0,32,0 %;        ! 1ST DYNAMIC WORKING SET LIST ENTRY 
macro PHD$L_WSNEXT = 24,0,32,0 %;       ! LAST WSL ENTRY REPLACED 
macro PHD$L_WSLAST = 28,0,32,0 %;       ! LAST WSL ENTRY IN LIST 
! 
!  HARDWARE PCB PORTION OF PROCESS HEADER - Must remain hexaword aligned and must
! 	not be allowed to cross a virtual page boundary.
! 
macro PHD$L_PCB = 32,0,32,0 %;          ! HARDWARE PCB 
macro PHD$L_KSP = 32,0,32,0 %;          ! KERNEL STACK POINTER 
macro PHD$L_ESP = 36,0,32,0 %;          ! EXEC STACK POINTER 
macro PHD$L_SSP = 40,0,32,0 %;          ! SUPERVISOR STACK POINTER 
macro PHD$L_USP = 44,0,32,0 %;          ! USER STACK POINTER 
macro PHD$L_R0 = 48,0,32,0 %;           ! R0 
macro PHD$L_R1 = 52,0,32,0 %;           ! R1 
macro PHD$L_R2 = 56,0,32,0 %;           ! R2 
macro PHD$L_R3 = 60,0,32,0 %;           ! R3 
macro PHD$L_R4 = 64,0,32,0 %;           ! R4 
macro PHD$L_R5 = 68,0,32,0 %;           ! R5 
macro PHD$L_R6 = 72,0,32,0 %;           ! R6 
macro PHD$L_R7 = 76,0,32,0 %;           ! R7 
macro PHD$L_R8 = 80,0,32,0 %;           ! R8 
macro PHD$L_R9 = 84,0,32,0 %;           ! R9 
macro PHD$L_R10 = 88,0,32,0 %;          ! R10 
macro PHD$L_R11 = 92,0,32,0 %;          ! R11 
macro PHD$L_R12 = 96,0,32,0 %;          ! R12 
macro PHD$L_R13 = 100,0,32,0 %;         ! R13 
macro PHD$L_PC = 104,0,32,0 %;          ! PC 
macro PHD$L_PSL = 108,0,32,0 %;         ! PROGRAM STATUS LONGWORD 
macro PHD$L_P0BR = 112,0,32,0 %;        ! P0 BASE REGISTER 
macro PHD$L_P0LRASTL = 116,0,32,0 %;    ! P0LR, ASTLVL 
macro PHD$V_P0LR = 116,0,24,0 %;
literal PHD$S_P0LR = 24;                ! P0 LENGTH REGISTER 
macro PHD$V_ASTLVL = 116,24,8,0 %;
literal PHD$S_ASTLVL = 8;               !  AST LEVEL 
macro PHD$B_ASTLVL = 119,0,8,0 %;       ! AST LEVEL SUBFIELD 
macro PHD$L_P1BR = 120,0,32,0 %;        ! P1 BASE REGISTER 
macro PHD$L_P1LR = 124,0,32,0 %;        ! P1 LENGTH REGISTER 
macro PHD$L_ASNPRVCPU = 128,0,32,0 %;   ! ASN, PRVCPU
macro PHD$V_PRVCPU = 128,0,8,0 %;
literal PHD$S_PRVCPU = 8;               ! PREVIOUS CPU
macro PHD$V_ASN = 128,8,24,0 %;
literal PHD$S_ASN = 24;                 ! ADDRESS SPACE NUMBER
macro PHD$B_PRVCPU = 128,0,8,0 %;       ! PREVIOUS CPU
!  End of HW PCB portion of process header
! 
! 
!  THE FOLLOWING THREE LONGWORDS SPECIFY THE MAXIMUM AND INITIAL WORKING SET
!  SIZES FOR THE PROCESS.  RATHER THAN CONTAINING THE COUNT OF PAGES
!  THEY CONTAIN THE LONG WORD INDEX TO WHAT WOULD BE THE LAST WORKING
!  SET LIST ENTRY.
! 
macro PHD$L_WSEXTENT = 132,0,32,0 %;    ! MAX WORKING SET SIZE AGAINST BORROWING 
macro PHD$L_WSQUOTA = 136,0,32,0 %;     ! QUOTA ON WORKING SET SIZE 
macro PHD$L_DFWSCNT = 140,0,32,0 %;     ! DEFAULT WORKING SET SIZE 
macro PHD$L_PAGFIL = 144,0,32,0 %;      !  Template to assign page file backing store
macro PHD$B_PAGFIL = 147,0,8,0 %;       !  Current SYSTEM page file index
! 
!  PROCESS SECTION TABLE DATA BASE
!         PSTBASOFF IS THE BYTE OFFSET (INTEGRAL ! OF PAGES) FROM THE
!  BEGINNING OF THE PROCESS HEADER TO THE 1ST LONG WORD BEYOND THE
!  PROCESS SECTION TABLE.
!         THE WORDS, PSTLAST AND PSTFREE ARE SECTION TABLE INDICES WHICH
!  ARE THE NEGATIVE LONG WORD INDEX FROM THE END OF THE SECTION TABLE TO
!  THE SECTION TABLE ENTRY.
! 
macro PHD$L_PSTBASOFF = 148,0,32,0 %;   ! BYTE OFFSET TO BASE OF PST 
! FIRST LONG WORD NOT IN PST
! PST GROWS BACKWARDS FROM HERE
macro PHD$W_PSTLAST = 152,0,16,0 %;     ! END OF PROCESS SECTION TABLE 
! ADR OF LAST PSTE ALLOCATED
macro PHD$W_PSTFREE = 154,0,16,0 %;     ! HEAD OF FREE PSTE LIST 
! 
!  CREATE/DELETE PAGE CONTEXT
! 
macro PHD$L_FREP0VA = 156,0,32,0 %;     ! 1ST FREE VIRTUAL ADR AT END OF P0 SPACE 
! ***** MUST BE QUAD WORD AWAY FROM FREP1VA
macro PHD$L_FREPTECNT = 160,0,32,0 %;   ! CNT OF FREE PTE'S BETWEEN THE ENDS 
! 0F THE P0 AND P1 PAGE TABLES
macro PHD$L_FREP1VA = 164,0,32,0 %;     ! 1ST FREE VIRTUAL ADR AT END OF P1 SPACE 
macro PHD$B_DFPFC = 168,0,8,0 %;        ! DEFAULT PAGE FAULT CLUSTER 
macro PHD$B_PGTBPFC = 169,0,8,0 %;      ! PAGE TABLE CLUSTER FACTOR 
macro PHD$W_FLAGS = 170,0,16,0 %;       ! FLAGS WORD 
macro PHD$V_PFMFLG = 170,0,1,0 %;       ! PAGE FAULT MONITORING ENABLED 
macro PHD$V_DALCSTX = 170,1,1,0 %;      ! NEED TO DEALLOCATE SECTION INDICES 
macro PHD$V_WSPEAKCHK = 170,2,1,0 %;    ! CHECK FOR NEW WORKING SET SIZE (PROC) 
macro PHD$V_NOACCVIO = 170,3,1,0 %;     ! SET AFTER INSWAP OF PROCESS HEADER 
macro PHD$V_IWSPEAKCK = 170,4,1,0 %;    ! CHECK FOR NEW WORKING SET SIZE (IMAGE) 
macro PHD$V_IMGDMP = 170,5,1,0 %;       ! TAKE IMAGE DUMP ON ERROR EXIT
macro PHD$V_NO_WS_CHNG = 170,6,1,0 %;   ! NO CHANGE TO WORKING SET OR SWAPPING
!  TRANSIENT USE BY MMG CODE ONLY
macro PHD$V_PGFLACC = 170,7,1,0 %;      !  Page file reservation
!  accounting enabled
macro PHD$V_VP_CONSUMER = 170,8,1,0 %;  !  Current process is a vector consumer
macro PHD$V_VP_DISABLED = 170,9,1,0 %;  !  Use of VP disabled
! 
!  QUOTAS AND LIMITS
! 
macro PHD$L_CPUTIM = 172,0,32,0 %;      ! ACCUMULATED CPU TIME CHARGED 
macro PHD$W_QUANT = 176,0,16,0 %;       ! ACCUMULATED CPU TIME SINCE 
! LAST QUANTUM OVERFLOW
macro PHD$W_PRCLM = 178,0,16,0 %;       ! SUBPROCESS QUOTA 
macro PHD$W_ASTLM = 180,0,16,0 %;       ! AST LIMIT 
macro PHD$W_PHVINDEX = 182,0,16,0 %;    ! PROCESS HEADER VECTOR INDEX 
macro PHD$L_BAK = 184,0,32,0 %;         ! POINTER TO BACKUP ADDRESS VECTOR FOR 
! PROCESS HEADER PAGES
macro PHD$L_WSLX = 188,0,32,0 %;        ! POINTER TO WORKING SET LIST INDEX 
! SAVE AREA
macro PHD$L_PSTBASMAX = 188,0,32,0 %;   ! LW OFFSET TO TOP PST ADDRESS 
macro PHD$L_PAGEFLTS = 192,0,32,0 %;    ! COUNT OF PAGE FAULTS 
macro PHD$L_WSSIZE = 196,0,32,0 %;      ! CURRENT ALLOWED WORKING SET SIZE 
macro PHD$W_UCPUTIM = 200,0,16,0 %;     !  # clock tics left to reach 10 ms
! 
!  THE NEXT TWO I/O COUNTERS MUST BE ADJACENT
! 
macro PHD$L_DIOCNT = 204,0,32,0 %;      ! DIRECT I/O COUNT 
macro PHD$L_BIOCNT = 208,0,32,0 %;      ! BUFFERED I/O COUNT 
macro PHD$L_CPULIM = 212,0,32,0 %;      ! LIMIT ON CPU TIME FOR PROCESS 
macro PHD$B_CPUMODE = 216,0,8,0 %;      ! ACCESS MODE TO NOTIFY ABOUT CPUTIME 
macro PHD$B_AWSMODE = 217,0,8,0 %;      ! ACCESS MODE FLAG FOR AUTO WS AST 
macro PHD$B_PRCPAGFIL = 218,0,8,0 %;    !  Current PROCESS page file index
macro PHD$B_PGFLCNT = 219,0,8,0 %;      !  No. of assigned page files
! 
!  PAGE TABLE STATISTICS
! 
macro PHD$L_PTWSLELCK = 220,0,32,0 %;   !  BYTE OFFSET TO BYTE ARRAY OF COUNTS 
!  OF LOCKED WSLE'S IN THIS PAGE TABLE
macro PHD$L_PTWSLEVAL = 224,0,32,0 %;   !  BYTE OFFSET TO BYTE ARRAY OF COUNTS 
!  OF VALID WSLE'S IN THIS PAGE TABLE
macro PHD$W_PTCNTLCK = 228,0,16,0 %;    !  COUNT OF PAGE TABLES CONTAINING 
!  1 OR MORE LOCKED WSLE
macro PHD$W_PTCNTVAL = 230,0,16,0 %;    !  COUNT OF PAGE TABLES CONTAINING 
!  1 OR MORE VALID WSLE
macro PHD$W_PTCNTACT = 232,0,16,0 %;    !  COUNT OF ACTIVE PAGE TABLES 
macro PHD$W_PTCNTMAX = 234,0,16,0 %;    !  MAX COUNT OF PAGE TABLES 
!  WHICH HAVE NON-ZERO PTE'S
macro PHD$L_WSFLUID = 236,0,32,0 %;     !  GUARANTEED NUMBER OF FLUID WS PAGES 
macro PHD$W_EMPTPG = 240,0,16,0 %;      !  COUNT OF EMPTY WORKING SET PAGES 
macro PHD$L_EXTDYNWS = 244,0,32,0 %;    !  EXTRA DYNAMIC WORKING SET LIST ENTRIES 
!  ABOVE REQUIRED WSFLUID MINIMUM
macro PHD$W_PRCPGFLPAGES = 248,0,16,0 %; !  Remaining number of reserved pages in
!  the current process page file
macro PHD$W_PRCPGFLOPAGES = 250,0,16,0 %; !  Original number of reserved pages in
!  the current process page file
macro PHD$B_PRCPGFL = 252,0,32,0 %;
literal PHD$S_PRCPGFL = 4;              !  Current SYSTEM page file assignments
macro PHD$L_WSAUTH = 256,0,32,0 %;      ! AUTHORIZED WORKING SET SIZE 
macro PHD$L_WSAUTHEXT = 260,0,32,0 %;   ! AUTHORIZED WS EXTENT 
macro PHD$Q_AUTHPRIV = 264,0,0,0 %;
literal PHD$S_AUTHPRIV = 8;             ! AUTHORIZED PRIVILEGES MASK 
macro PHD$Q_IMAGPRIV = 272,0,0,0 %;
literal PHD$S_IMAGPRIV = 8;             ! INSTALLED IMAGE PRIVILEGES MASK 
macro PHD$L_RESLSTH = 280,0,32,0 %;     ! POINTER TO RESOURCE LIST 
macro PHD$L_IMGCNT = 284,0,32,0 %;      ! IMAGE COUNTER BUMPED BY SYSRUNDWN 
macro PHD$L_PFLTRATE = 288,0,32,0 %;    ! PAGE FAULT RATE 
macro PHD$L_PFLREF = 292,0,32,0 %;      ! PAGE FAULTS AT END OF LAST INTERVAL 
macro PHD$L_TIMREF = 296,0,32,0 %;      ! TIME AT END OF LAST INTERVAL 
macro PHD$L_PGFLTIO = 300,0,32,0 %;     ! COUNT OF PAGEFAULT I/O 
macro PHD$B_AUTHPRI = 304,0,8,0 %;      ! INITIAL PROCESS PRIORITY 
macro PHD$L_EXTRACPU = 308,0,32,0 %;    ! ACCUMULATED CPU TIME LIMIT EXTENSION 
macro PHD$R_MIN_CLASS = 312,0,0,0 %;
literal PHD$S_MIN_CLASS = 20;           !  MINIMUM AUTHORIZED SECURITY CLEARANCE
macro PHD$R_MAX_CLASS = 332,0,0,0 %;
literal PHD$S_MAX_CLASS = 20;           !  MAXIMUM AUTHORIZED SECURITY CLEARANCE
macro PHD$L_PRCPGFLREFS = 352,0,0,0 %;
literal PHD$S_PRCPGFLREFS = 16;         !  # pages currently being used 
!  in each process page file
macro PHD$L_PPGFLVA = 368,0,32,0 %;     !  "Quota" of available pages which may
!  have page file backing store
! 
macro PHD$Q_PSCANCTX_QUEUE = 372,0,0,0 %;
literal PHD$S_PSCANCTX_QUEUE = 8;       !  Queue of PSCAN blocks
macro PHD$l_spare_L1 = 380,0,32,0 %;    !  available
macro PHD$l_spare_L2 = 384,0,32,0 %;    !  available
macro PHD$W_PSCANCTX_SEQNUM = 388,0,16,0 %; !  PSCAN sequence number
macro PHD$w_spare_W2 = 390,0,16,0 %;    !  available
! 
macro PHD$L_UCPUTIM = 392,0,32,0 %;     !  absolute micro-clock tics
macro PHD$L_NS_SPARE = 396,0,32,0 %;    ! SPARE for Vector 
macro PHD$L_VP_CPUTIM = 396,0,32,0 %;   ! Vector Processing CPU time 
! 
!  SPARE EXPANSION PORTION OF PROCESS HEADER
! 
! 
!  END OF FIXED PORTION OF PROCESS HEADER
! 
macro PHD$L_WSL = 404,0,32,0 %;         ! FIRST WORKING SET LIST ENTRY 
 
!*** MODULE $PIBDEF ***
! +
!  PERFORMANCE I/O INFORMATION BLOCK
! -
literal PIB$S_PIBDEF = 1;
macro PIB$B_TYPE = 0,0,8,0 %;           ! TYPE OF ENTRY 
! 
!  START OF I/O REQUEST TRANSACTION MESSAGE BLOCK
! 
literal PIB$K_SRQ_SIZE = 32;            ! LENGTH OF START I/O MESSAGE 
literal PIB$C_SRQ_SIZE = 32;            ! LENGTH OF START I/O MESSAGE 
! 
literal PIB$S_PIBDEF1 = 32;
macro PIB$B_SRQ_PRI = 1,0,8,0 %;        ! BASE PRIORITY OF PROCESS 
macro PIB$W_SRQ_ACON = 2,0,16,0 %;      ! Access control info from WCB or 0
macro PIB$Q_SRQ_TIME = 4,0,0,0 %;
literal PIB$S_SRQ_TIME = 8;             ! TIME OF I/O TRANSACTION 
macro PIB$L_SRQ_SEQN = 12,0,32,0 %;     ! SEQUENCE NUMBER OF I/O TRANSACTION 
macro PIB$L_SRQ_PID = 16,0,32,0 %;      ! REQUESTER PID 
macro PIB$L_SRQ_UCB = 20,0,32,0 %;      ! ADDRESS OF DEVICE UCB 
macro PIB$W_SRQ_FUNC = 24,0,16,0 %;     ! I/O FUNCTION CODE 
macro PIB$W_SRQ_STS = 26,0,16,0 %;      ! I/O PACKET STATUS 
macro PIB$B_SRQ_ACCESS = 28,0,8,0 %;    ! Access control info from WCB or 0
!  START OF I/O TRANSACTION MESSAGE BLOCK
! 
literal PIB$K_SIO_SIZE = 24;            ! LENGTH OF I/O TRANSACTION MESSAGE 
literal PIB$C_SIO_SIZE = 24;            ! LENGTH OF I/O TRANSACTION MESSAGE 
! 
literal PIB$S_PIBDEF2 = 24;
macro PIB$Q_SIO_TIME = 4,0,0,0 %;
literal PIB$S_SIO_TIME = 8;             ! TIME OF TRANSACTION 
macro PIB$L_SIO_SEQN = 12,0,32,0 %;     ! SEQUENCE NUMBER OF TRANSACTION 
macro PIB$L_SIO_MEDIA = 16,0,32,0 %;    ! TRANSFER MEDIA ADDRESS 
macro PIB$L_SIO_BCNT = 20,0,32,0 %;     ! TRANSFER BYTE COUNT 
!  END OF I/O TRANSACTION MESSAGE BLOCK
! 
literal PIB$K_EIO_SIZE = 24;            ! LENGTH OF END OF I/O TRANSACTION 
literal PIB$C_EIO_SIZE = 24;            ! LENGTH OF END OF I/O TRANSACTION 
! 
literal PIB$S_PIBDEF3 = 24;
macro PIB$Q_EIO_TIME = 4,0,0,0 %;
literal PIB$S_EIO_TIME = 8;             ! TIME OF TRANSACTION 
macro PIB$L_EIO_SEQN = 12,0,32,0 %;     ! SEQUENCE NUMBER OF TRANSACTION 
macro PIB$Q_EIO_IOSB = 16,0,0,0 %;
literal PIB$S_EIO_IOSB = 8;             ! FINAL I/O STATUS 
!  END OF I/O REQUEST MESSAGE BLOCK
! 
literal PIB$K_ERQ_SIZE = 16;            ! LENGTH OF END OF I/O REQUEST TRANSACTION 
literal PIB$C_ERQ_SIZE = 16;            ! LENGTH OF END OF I/O REQUEST TRANSACTION 
! 
literal PIB$K_SRQ = 0;                  ! START OF I/O REQUEST 
literal PIB$K_SIO = 1;                  ! START OF I/O TRANSACTION 
literal PIB$K_EIO = 2;                  ! END OF I/O TRANSACTION 
literal PIB$K_ERQ = 3;                  ! END OF I/O REQUEST 
literal PIB$K_ARQ = 4;                  ! ABORTED I/O REQUEST 
literal PIB$S_PIBDEF4 = 16;
macro PIB$Q_ERQ_TIME = 4,0,0,0 %;
literal PIB$S_ERQ_TIME = 8;             ! TIME OF TRANSACTION 
macro PIB$L_ERQ_SEQN = 12,0,32,0 %;     ! SEQUENCE NUMBER OF TRANSACTION 
!  I/O MESSAGE BLOCK ENTRY TYPE CODES
! 
literal PIB$K_ARQ_SIZE = 16;            ! LENGTH OF ABORTED I/O TRANSACTION
literal PIB$C_ARQ_SIZE = 16;            ! LENGTH OF ABORTED I/O TRANSACTION 
! 
literal PIB$S_PIBDEF5 = 16;
macro PIB$Q_ARQ_TIME = 4,0,0,0 %;
literal PIB$S_ARQ_TIME = 8;             ! TIME OF TRANSACTION 
macro PIB$L_ARQ_SEQN = 12,0,32,0 %;     ! SEQUENCE NUMBER OF TRANSACTION 
!  ABORTED I/O REQUEST MESSAGE BLOCK
! 
 
!*** MODULE $PLVECDEF ***
! +
!  PLVEC - SCS PORT LOAD VECTOR
! 
!  THIS DATA STRUCTURE CONTAINS A VECTOR LISTING THE ACTIVE CONNECTIONS BY
!  TYPE ON A PORT.  THE INDEX IS CONTAINED IN THE SBNB (SCS LOAD SHARE
!  NAME BLOCK and in the CDT$L_
!  
! -
literal PLVEC$C_MAX_INDEX = 10;
literal PLVEC$K_LENGTH = 60;            !  (TYC 15-Feb-89)
literal PLVEC$C_LENGTH = 60;
literal PLVEC$S_PLVECDEF = 16;
macro PLVEC$L_FLINK = -12,0,32,0 %;     ! FWD LINK 
macro PLVEC$L_BLINK = -8,0,32,0 %;      ! BCK LINK 
macro PLVEC$W_SIZE = -4,0,16,0 %;       ! STRUCTURE SIZE IN BYTES 
macro PLVEC$B_TYPE = -2,0,8,0 %;        ! SCS STRUCTURE TYPE 
macro PLVEC$B_SUBTYP = -1,0,8,0 %;      ! SCS STRUCTURE SUBTYPE FOR PLVEC
macro PLVEC$L_TOT_CONNECT = 0,0,32,0 %; ! TOTAL NUMBER OF CONNECTIONS ON
!  THIS PORT
 
!*** MODULE $PMBDEF ***
! +
!  PAGE FAULT MONITOR CONTROL BLOCK
! -
literal PMB$M_MODE = 1;
literal PMB$K_SUBPROC = 0;              ! Subprocess mode
literal PMB$K_IMAGE = 1;                ! Image mode
literal PMB$M_ASTIP = 2;
literal PMB$M_QAST = 4;
literal PMB$K_LENGTH = 64;              ! Length of PMB 
literal PMB$C_LENGTH = 64;              ! Length of PMB 
literal PMB$S_PMBDEF = 64;
macro PMB$L_CURBUF = 0,0,32,0 %;        ! Current buffer pointer 
macro PMB$L_BUFBASE = 4,0,32,0 %;       ! Current buffer base address
macro PMB$W_SIZE = 8,0,16,0 %;          ! Block size field 
macro PMB$B_TYPE = 10,0,8,0 %;          ! Dynamic structure type (PMB)
macro PMB$B_FLAGS = 11,0,8,0 %;         ! Processing flags
macro PMB$V_MODE = 11,0,1,0 %;          ! Mode of operation
macro PMB$V_ASTIP = 11,1,1,0 %;         ! AST in progress flag
macro PMB$V_QAST = 11,2,1,0 %;          ! Imbedded ACB is enqueued on the PCB
macro PMB$L_LASTCPU = 12,0,32,0 %;      ! Last recorded CPU time
macro PMB$L_OVERFLOW = 16,0,32,0 %;     ! Buffer overflow counter (both modes)
macro PMB$Q_HDR = 20,0,0,0 %;
literal PMB$S_HDR = 8;                  ! Free   buffer queue header 
macro PMB$Q_SBPHDR = 28,0,0,0 %;
literal PMB$S_SBPHDR = 8;               ! Filled buffer queue header 
macro PMB$L_ASTQFL = 36,0,32,0 %;       ! ACB flink
macro PMB$L_ASTQBL = 40,0,32,0 %;       ! ACB blink
macro PMB$B_ACMODE = 46,0,8,0 %;        ! Owner access mode
macro PMB$B_RMOD = 47,0,8,0 %;          ! AST delivery mode/flags
macro PMB$L_PID = 48,0,32,0 %;          ! PID for AST delivery
macro PMB$L_AST = 52,0,32,0 %;          ! AST routine address
macro PMB$L_ASTPRM = 56,0,32,0 %;       ! AST parameter
macro PMB$L_KAST = 60,0,32,0 %;         ! Address of piggy-back kernel AST routine
macro PMB$W_MBXCHN = 44,0,16,0 %;       ! Subprocess mailbox channel 
macro PMB$B_OACMODE = 46,0,8,0 %;       ! Owner access mode (Synonym for ACMODE)
macro PMB$L_IPID = 48,0,32,0 %;         ! IPID of subprocess (Synonym for PID)
macro PMB$L_EPID = 52,0,32,0 %;         ! EPID of subprocess
 
!*** MODULE $PQBDEF ***
! +
!  PROCESS QUOTA BLOCK DEFINITION
! -
literal PQB$M_IMGDMP = 1;
literal PQB$M_DEBUG = 2;
literal PQB$M_DBGTRU = 4;
literal PQB$K_LENGTH = 2256;            !  LENGTH OF PROCESS QUOTA BLOCK 
literal PQB$C_LENGTH = 2256;            !  LENGTH OF PROCESS QUOTA BLOCK 
literal PQB$S_PQBDEF = 2256;
macro PQB$Q_PRVMSK = 0,0,0,0 %;
literal PQB$S_PRVMSK = 8;               !  PRIVILEGE MASK 
macro PQB$W_SIZE = 8,0,16,0 %;          !  SIZE OF PQB IN BYTES 
macro PQB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE 
macro PQB$B_STS = 11,0,8,0 %;           !  STATUS FLAGS 
macro PQB$L_ASTLM = 12,0,32,0 %;        !  AST LIMIT 
macro PQB$L_BIOLM = 16,0,32,0 %;        !  BUFFERED I/O LIMIT 
macro PQB$L_BYTLM = 20,0,32,0 %;        !  BUFFERED I/O LIMIT 
macro PQB$L_CPULM = 24,0,32,0 %;        !  CPU TIME LIMIT 
macro PQB$L_DIOLM = 28,0,32,0 %;        !  DIRECT I/O LIMIT 
macro PQB$L_FILLM = 32,0,32,0 %;        !  OPEN FILE LIMIT 
macro PQB$L_PGFLQUOTA = 36,0,32,0 %;    !  PAGING FILE QUOTA 
macro PQB$L_PRCLM = 40,0,32,0 %;        !  SUB-PROCESS LIMIT 
macro PQB$L_TQELM = 44,0,32,0 %;        !  TIMER QUEUE ENTRY LIMIT 
macro PQB$L_WSQUOTA = 48,0,32,0 %;      !  WORKING SET QUOTA 
macro PQB$L_WSDEFAULT = 52,0,32,0 %;    !  WORKING SET DEFAULT 
macro PQB$L_ENQLM = 56,0,32,0 %;        !  ENQUEUE LIMIT 
macro PQB$L_WSEXTENT = 60,0,32,0 %;     !  MAXIMUM WORKING SET SIZE 
macro PQB$L_JTQUOTA = 64,0,32,0 %;      !  JOB-WIDE LOGICAL NAME TABLE CREATION QUOTA
macro PQB$W_FLAGS = 68,0,16,0 %;        !  MISC FLAGS
macro PQB$V_IMGDMP = 68,0,1,0 %;        !  TAKE IMAGE DUMP ON SERIOUS ERROR
macro PQB$V_DEBUG = 68,1,1,0 %;         !  /DEBUG startup desired
macro PQB$V_DBGTRU = 68,2,1,0 %;        !  debugger present
macro PQB$B_MSGMASK = 70,0,8,0 %;       !  MESSAGE FLAGS 
macro PQB$B_FILL_1 = 71,0,8,0 %;        !  Spare
macro PQB$L_UAF_FLAGS = 72,0,32,0 %;    !  FLAGS FROM UAF RECORD
macro PQB$L_CREPRC_FLAGS = 76,0,32,0 %; !  FLAGS FROM $CREPRC ARGUMENT LIST
macro PQB$R_MIN_CLASS = 80,0,0,0 %;
literal PQB$S_MIN_CLASS = 20;           !  MINIMUM AUTHORIZED SECURITY CLEARANCE
macro PQB$R_MAX_CLASS = 100,0,0,0 %;
literal PQB$S_MAX_CLASS = 20;           !  MAXIMUM AUTHORIZED SECURITY CLEARANCE
macro PQB$L_INPUT_ATT = 120,0,32,0 %;   !   SYS$INPUT attributes
macro PQB$L_OUTPUT_ATT = 124,0,32,0 %;  !   SYS$OUTPUT attributes
macro PQB$L_ERROR_ATT = 128,0,32,0 %;   !   SYS$ERROR attributes
macro PQB$L_DISK_ATT = 132,0,32,0 %;    !   SYS$DISK attributes
macro PQB$T_CLI_NAME = 136,0,0,0 %;
literal PQB$S_CLI_NAME = 32;            !  CLI name
macro PQB$T_CLI_TABLE = 168,0,0,0 %;
literal PQB$S_CLI_TABLE = 256;          !  CLI table name
macro PQB$T_SPAWN_CLI = 424,0,0,0 %;
literal PQB$S_SPAWN_CLI = 32;           !  Spawn CLI name
macro PQB$T_SPAWN_TABLE = 456,0,0,0 %;
literal PQB$S_SPAWN_TABLE = 256;        !  Spawn CLI table name
macro PQB$T_INPUT = 712,0,0,0 %;
literal PQB$S_INPUT = 256;              !  LOGICAL NAME FOR INPUT 
macro PQB$T_OUTPUT = 968,0,0,0 %;
literal PQB$S_OUTPUT = 256;             !  LOGICAL NAME FOR OUTPUT 
macro PQB$T_ERROR = 1224,0,0,0 %;
literal PQB$S_ERROR = 256;              !  LOGICAL NAME FOR ERROR OUTPUT 
macro PQB$T_DISK = 1480,0,0,0 %;
literal PQB$S_DISK = 256;               !  LOGICAL NAME FOR SYS$DISK 
macro PQB$T_DDSTRING = 1736,0,0,0 %;
literal PQB$S_DDSTRING = 256;           !  DEFAULT DIRECTORY STRING 
macro PQB$T_IMAGE = 1992,0,0,0 %;
literal PQB$S_IMAGE = 256;              !  IMAGE NAME FOR NEW PROCESS 
macro PQB$T_ACCOUNT = 2248,0,0,0 %;
literal PQB$S_ACCOUNT = 8;              !  ACCOUNT NAME FOR NEW PROCESS 
 
!*** MODULE $PRBDEF ***
! +
! 
!  Protection block definition. The protection block is used to specify
!  protection on objects internal to the system (e.g., devices, logical
!  name tables, etc.) It is used as input to the EXE$CHECKACCESS routine.
! 
! -
literal PRB$M_UIC = 1;
literal PRB$M_ACL = 2;
literal PRB$M_CLASS = 4;
literal PRB$M_CLASSMAX = 8;
literal PRB$S_PRBDEF = 8;
macro PRB$W_FLAGS = 0,0,16,0 %;         !  Presence flag bits
macro PRB$V_UIC = 0,0,1,0 %;            !  Set for simple UIC protection
macro PRB$V_ACL = 0,1,1,0 %;            !  Set for access control list
macro PRB$V_CLASS = 0,2,1,0 %;          !  Set for security classification
macro PRB$V_CLASSMAX = 0,3,1,0 %;       !  Set for security class range
macro PRB$W_PROTECTION = 2,0,16,0 %;    !  SOGW protection mask
macro PRB$L_OWNER = 4,0,32,0 %;         !  Owner UIC
! 
!  The remaining items in the protection block are optional and therefore
!  do not have fixed offsets. The description given below is for a
!  hypothetical fully configured protection block.
! 
!   ACL quadword;			/* ACL listhead
!   CLASS structure;			/* Classification mask
! 	FILL_1 long dimension 5 fill;
! 	end CLASS;
!   CLASSMAX structure;			/* Maximum class mask for range
! 	FILL_2 long dimension 5 fill;
! 	end CLASSMAX;
! 
 
!*** MODULE $PRCPOLDEF ***
! +
!  PROCESS POLLER MAILBOX MESSAGE DEFINITIONS
! -
literal PRCPOL$C_SIZ = 56;              ! SIZE OF MESSAGE	
literal PRCPOL$S_PRCPOLDEF = 56;
macro PRCPOL$L_SYSIDL = 0,0,32,0 %;     ! LOW ORDER SYSTEM ID
macro PRCPOL$W_SYSIDH = 4,0,16,0 %;     ! HIGH ORDER SYSTEM ID
macro PRCPOL$T_NODNAM = 8,0,0,0 %;
literal PRCPOL$S_NODNAM = 16;           ! SCA NODE NAME (COUNTED ASCII)
macro PRCPOL$B_PRCNAM = 24,0,0,0 %;
literal PRCPOL$S_PRCNAM = 16;           ! PROCESS NAME
macro PRCPOL$B_DIRINF = 40,0,0,0 %;
literal PRCPOL$S_DIRINF = 16;           ! DIRECTORY INFORMATION
 
!*** MODULE $PRIDEF ***
! +
!  PRIORITY INCREMENT CLASS DEFINITIONS
! -
literal PRI$_NULL = 0;                  !  NO PRIORITY INCREMENT (must be equal to 0)
literal PRI$_IOCOM = 1;                 !  DIRECT I/O COMPLETION 
literal PRI$_RESAVL = 2;                !  RESOURCE AVAIL 
literal PRI$_TOCOM = 3;                 !  TERMINAL OUTPUT COMPLETE 
literal PRI$_TICOM = 4;                 !  TERMINAL INPUT COMPLETE 
literal PRI$_TIMER = 5;                 !  TIMER INTERVAL COMPLETION 
literal PRI$_PINC_CNT = 6;              !  No. of priority increment classes
 
!*** MODULE $PRMDEF ***
! +
!  DEFINE PARAMETER DESCRIPTOR BLOCK
! -
literal PRM$M_DYNAMIC = 1;
literal PRM$M_STATIC = 2;
literal PRM$M_SYSGEN = 4;
literal PRM$M_ACP = 8;
literal PRM$M_JBC = 16;
literal PRM$M_RMS = 32;
literal PRM$M_SYS = 64;
literal PRM$M_SPECIAL = 128;
literal PRM$M_DISPLAY = 256;
literal PRM$M_CONTROL = 512;
literal PRM$M_MAJOR = 1024;
literal PRM$M_PQL = 2048;
literal PRM$M_NEG = 4096;
literal PRM$M_TTY = 8192;
literal PRM$M_SCS = 16384;
literal PRM$M_CLUSTER = 32768;
literal PRM$M_ASCII = 65536;
literal PRM$M_LGI = 131072;
literal PRM$M_MULTIPROCESSING = 262144;
literal PRM$C_BYTE = 8;                 !  
literal PRM$C_WORD = 16;                !  
literal PRM$C_LONG = 32;                !  
literal PRM$C_QUAD = 64;                ! 
literal PRM$C_OCTA = 128;               ! 
literal PRM$C_MAXNAMLEN = 15;           ! MAXIMUM LENGTH FOR PARAMETER NAME 
literal PRM$C_MAXUNILEN = 11;           ! MAXIMUM LENGTH FOR UNIT NAME 
literal PRM$K_LENGTH = 50;              ! SIZE OF DESCRIPTOR BLOCK 
literal PRM$C_LENGTH = 50;              ! SIZE OF DESCRIPTOR BLOCK 
literal PRM$S_PRM_DEF = 50;
macro PRM$L_ADDR = 0,0,32,0 %;          ! ADDRESS OF PARAMETER 
macro PRM$L_DEFAULT = 4,0,32,0 %;       ! DEFAULT VALUE 
macro PRM$L_MIN = 8,0,32,0 %;           ! MINIMUM VALUE (-1)=>NONE 
macro PRM$L_MAX = 12,0,32,0 %;          ! MAXIMUM VALUE (-1)=>NONE 
macro PRM$L_FLAGS = 16,0,32,0 %;        ! TYPE FLAGS 
macro PRM$V_DYNAMIC = 16,0,1,0 %;       !  DYNAMIC PARAMETER 
macro PRM$V_STATIC = 16,1,1,0 %;        !  STATIC PARAMETER 
macro PRM$V_SYSGEN = 16,2,1,0 %;        !  SYSGEN PARAMETER 
macro PRM$V_ACP = 16,3,1,0 %;           !  ACP CONTROL PARAMETER 
macro PRM$V_JBC = 16,4,1,0 %;           !  JOB CONTROL PARAMETER 
macro PRM$V_RMS = 16,5,1,0 %;           !  RMS CONTROL PARAMETER 
macro PRM$V_SYS = 16,6,1,0 %;           !  GENERAL SYSTEM PARAMETER 
macro PRM$V_SPECIAL = 16,7,1,0 %;       !  SPECIAL PARAMETER 
macro PRM$V_DISPLAY = 16,8,1,0 %;       !  DISPLAY ONLY (NO CHANGE) 
macro PRM$V_CONTROL = 16,9,1,0 %;       !  CONTROL PARAMETER 
macro PRM$V_MAJOR = 16,10,1,0 %;        !  MAJOR PARAMETER 
macro PRM$V_PQL = 16,11,1,0 %;          !  PROCESS QUOTA LIST 
macro PRM$V_NEG = 16,12,1,0 %;          !  NEGATIVE 
macro PRM$V_TTY = 16,13,1,0 %;          !  TERMINAL CONTROL PARAMETER 
macro PRM$V_SCS = 16,14,1,0 %;          !  SCS CONTROL PARAMETERS 
macro PRM$V_CLUSTER = 16,15,1,0 %;      !  CLUSTER CONTROL PARAMETERS
macro PRM$V_ASCII = 16,16,1,0 %;        !  ASCII PARAMETER
macro PRM$V_LGI = 16,17,1,0 %;          !  LOGIN PARAMETER
macro PRM$V_MULTIPROCESSING = 16,18,1,0 %; !  MULTIPROCESSING control
macro PRM$B_SIZE = 20,0,8,0 %;          ! SIZE CODE FOR DATUM 
macro PRM$B_POS = 21,0,8,0 %;           ! BIT POSITION 
macro PRM$T_NAME = 22,0,0,0 %;
literal PRM$S_NAME = 16;                ! ASCIC NAME STRING 
macro PRM$T_UNIT = 38,0,0,0 %;
literal PRM$S_UNIT = 12;                ! ASCIC UNIT STRING 
 
!*** MODULE $PRQDEF ***
! +
!  INTER-PROCESSOR REQUEST BLOCK DEFINITIONS
! 
!  THIS IS THE BASIC FORMAT FOR AN EXECUTIVE OR DRIVER REQUEST FROM
!  ONE PROCESSOR TO ANOTHER PROCESSOR.
! -
literal PRQ$C_EXEC = 0;                 !  EXECUTIVE REQUEST ID 
literal PRQ$C_MAILBOX = 1;              !  MAILBOX REQUEST ID 
literal PRQ$C_REMDISK = 2;              !  REMOTE DISK REQUEST ID 
literal PRQ$C_HSC50 = 3;                !  HSC-50 REQUEST ID 
literal PRQ$C_SETEF = 0;                !  COPY COMMON EVENT FLAG REQUEST ID 
literal PRQ$C_RESAVL = 1;               !  REPORT RESOURCE AVAILABLE 
literal PRQ$C_MINLENGTH = 64;           ! MINIMUM REQUEST BLOCK LENGTH 
literal PRQ$S_PRQDEF = 40;
macro PRQ$L_FLINK = 0,0,32,0 %;         ! FORWARD LINK TO NEXT BLOCK 
macro PRQ$L_BLINK = 4,0,32,0 %;         ! BACKWARD LINK TO PREVIOUS BLOCK 
macro PRQ$W_TO_PORT = 24,0,16,0 %;      ! PORT NUMBER TO SEND REQUEST TO 
macro PRQ$W_FR_PORT = 26,0,16,0 %;      ! PORT NUMBER REQUEST IS FROM 
macro PRQ$W_DISPATCH = 28,0,16,0 %;     ! MESSAGE DISPATCHER ID 
!  MESSAGE DISPATCHER ID'S
! 
macro PRQ$W_REQTYPE = 32,0,16,0 %;      ! REQUEST TYPE 
!  MESSAGE DISPATCHER REQUEST SUB-TYPES
macro PRQ$W_UNIT = 34,0,16,0 %;         ! UNIT NUMBER 
macro PRQ$L_PARAM = 36,0,32,0 %;        ! FIRST PARAMETER 
 
!*** MODULE $PSCANCTXDEF ***
! 
!  The PSCANCTX$ structure is exchanged with remote nodes.  Any updates to this
!  structure must take mixed-version operation into account.
! 
literal pscanctx$m_super = 1;
literal pscanctx$m_csid_vec = 2;
literal pscanctx$m_locked = 4;
literal pscanctx$m_multi_node = 8;
literal pscanctx$m_busy = 16;
literal pscanctx$m_relock = 32;
literal pscanctx$k_length = 64;         !  length of data structure
literal pscanctx$m_node_item = -2147483648; !  item code references a node
literal pscanctx$v_node_item = 31;      !  item code references a node
literal pscanctx$S_$pscanctxdef = 64;
macro pscanctx$l_flink = 0,0,32,0 %;    !  forward link
macro pscanctx$l_blink = 4,0,32,0 %;    !  back link
macro pscanctx$w_size = 8,0,16,0 %;     !  size of structure
macro pscanctx$b_type = 10,0,8,0 %;     !  structure type code
macro pscanctx$b_subtype = 11,0,8,0 %;  !  structure subtype
macro pscanctx$w_maj_vers = 12,0,16,0 %; !  incompatible level
macro pscanctx$w_min_vers = 14,0,16,0 %; !  upwards-compatible level
macro pscanctx$l_flags = 16,0,32,0 %;
macro pscanctx$v_super = 16,0,1,0 %;    !  allocated from supervisor mode
macro pscanctx$v_csid_vec = 16,1,1,0 %; !  csid vector is present
macro pscanctx$v_locked = 16,2,1,0 %;   !  cell is locked in memory
macro pscanctx$v_multi_node = 16,3,1,0 %; !  scan is for more than one node
macro pscanctx$v_busy = 16,4,1,0 %;     !  scan in progress on this block
macro pscanctx$v_relock = 16,5,1,0 %;   !  ignore BUSY flag, allow a "lock"
macro pscanctx$l_cur_csid = 20,0,32,0 %; !  CSID for scan in progress
macro pscanctx$l_cur_ipid = 24,0,32,0 %; !  initial IPID for scan in progress
macro pscanctx$l_next_ipid = 28,0,32,0 %; !  updated IPID for scan in progress
macro pscanctx$l_cur_epid = 32,0,32,0 %; !  EPID for scan in progress
macro pscanctx$w_itmlstoff = 36,0,16,0 %; !  offset to item list
macro pscanctx$w_bufferoff = 38,0,16,0 %; !  offset to buffer area
macro pscanctx$w_csidoff = 40,0,16,0 %; !  offset to csid vector
macro pscanctx$w_csididx = 42,0,16,0 %; !  index of current csid
macro pscanctx$l_svapte = 44,0,32,0 %;  !  sva of pte for this block
macro pscanctx$l_cwpssrv = 48,0,32,0 %; !  address of CWPSSRV structure
macro pscanctx$l_jpibufadr = 52,0,32,0 %; !  address of $GETJPI buffer
macro pscanctx$w_seqnum = 56,0,16,0 %;  !  sequence number
macro pscanctx$b_acmode = 58,0,8,0 %;   !  access mode of original call
macro pscanctx$b_spare0 = 59,0,8,0 %;   !  just a little extra
macro pscanctx$l_spare1 = 60,0,32,0 %;  !  just a little extra
! 
!  The PSCANBUF$ structure is exchanged with remote nodes.  Any updates to this
!  structure must take mixed-version operation into account.
! 
literal pscanbuf$m_spare0 = 1;
literal pscanbuf$k_length = 32;         !  length of data structure
literal pscanbuf$S_$pscanbufdef = 32;
macro pscanbuf$l_buflen = 0,0,32,0 %;   !  length of data area
macro pscanbuf$l_spare0 = 4,0,32,0 %;   !  spare0
macro pscanbuf$w_size = 8,0,16,0 %;     !  size of structure
macro pscanbuf$b_type = 10,0,8,0 %;     !  structure type code
macro pscanbuf$b_subtype = 11,0,8,0 %;  !  structure subtype
macro pscanbuf$w_maj_vers = 12,0,16,0 %; !  incompatible level
macro pscanbuf$w_min_vers = 14,0,16,0 %; !  upwards-compatible level
macro pscanbuf$l_flags = 16,0,32,0 %;
macro pscanbuf$v_spare0 = 16,0,1,0 %;   !  filler
macro pscanbuf$l_itmlstadr = 20,0,32,0 %; !  address of copy of JPI item list
macro pscanbuf$l_buffer_offset = 24,0,32,0 %; !  offset to start of buffer
macro pscanbuf$l_free_offset = 28,0,32,0 %; !  offset to next free byte
! 
!  The PSCANITM$ structure is a local structure.  If modified, you do not need
!  to take mixed-version operation into account, however you must be sure that
!  all modules and images which reference the structure are updated together.
! 
literal pscanitm$k_length = 12;         !  length of data structure
literal pscanitm$S_$pscanitmdef = 13;
macro pscanitm$l_alloc_length = 0,0,32,0 %; !  allocated length
macro pscanitm$l_itmlen = 4,0,32,0 %;   !  length of item list
macro pscanitm$w_size = 8,0,16,0 %;     !  size of header
macro pscanitm$b_type = 10,0,8,0 %;     !  structure type code
macro pscanitm$b_subtype = 11,0,8,0 %;  !  structure subtype
macro pscanitm$b_itmlst = 12,0,8,0 %;   !  start of the item list
 
!*** MODULE $PSMDEF ***
!  Print symbiont definitions
! +
!  Symbolic definitions for print symbionts.
! 
! 	Public definition of various constants and data structures
! 	used by the standard VMS print symbiont, and by user modified
! 	print symbionts.
! 
! -
! 
! 	Service routine function codes
! 
! 
!  IO functions
! 
literal PSM$K_CANCEL = 1;               !  Cancel pending operations
literal PSM$K_CLOSE = 2;                !  Release resources
literal PSM$K_FORMAT = 3;               !  Format buffer
literal PSM$K_OPEN = 4;                 !  Obtain resources
literal PSM$K_READ = 5;                 !  Read
literal PSM$K_GET_KEY = 6;              !  Read record key
literal PSM$K_POSITION_TO_KEY = 7;      !  Read by record context
literal PSM$K_REWIND = 8;               !  Rewind file
literal PSM$K_WRITE = 9;                !  Write
literal PSM$K_WRITE_NOFORMAT = 10;      !  Write with driver formatting disabled
literal PSM$K_WRITE_SUPPRESSED = 11;    !  Write but suppress output
! 
!  Message notification functions
! 
literal PSM$K_PAUSE_TASK = 12;          !  STOP /QUEUE
literal PSM$K_RESET_STREAM = 13;        !  STOP /QUEUE /RESET
literal PSM$K_RESUME_TASK = 14;         !  START /QUEUE	(when paused)
literal PSM$K_START_STREAM = 15;        !  START /QUEUE (when stopped)
literal PSM$K_START_TASK = 16;          !  (ofiginated by job controller)
literal PSM$K_STOP_TASK = 17;           !  STOP /QUEUE /ABORT or /REQUEUE
literal PSM$K_STOP_STREAM = 18;         !  STOP /QUEUE /NEXT
! 
! 	Replacement routines
! 
! 
!  Task services -- where applicable the ordering of these literals
!  determines the sequence of the corresponding service routines.
! 
! 
!  Page services
! 
literal PSM$K_PAGE_SETUP = 1;           !  Page setup	    - page setup modules
literal PSM$K_PAGE_HEADER = 2;          !  Page separation  - page headers
! 
!  Library module service
! 
literal PSM$K_LIBRARY_INPUT = 3;        !  Module services
! 
!  Filter services
! 
literal PSM$K_INPUT_FILTER = 4;         !  Filter service   - input
literal PSM$K_MAIN_FORMAT = 5;          !  Format service   - carriage control
literal PSM$K_OUTPUT_FILTER = 6;        !  Filter service   - output
! 
!  Output services
! 
literal PSM$K_OUTPUT = 7;               !  Main output routine
! 
!  General input services
! 
literal PSM$K_JOB_SETUP = 8;            !  Job setup	    - job reset modules
literal PSM$K_FORM_SETUP = 9;           !  Form setup	    - form setup modules
literal PSM$K_JOB_FLAG = 10;            !  Job separation   - flag page
literal PSM$K_JOB_BURST = 11;           !  Job separation   - burst page
literal PSM$K_FILE_SETUP = 12;          !  File setup	    - file setup modules
literal PSM$K_FILE_FLAG = 13;           !  File separation  - flag page
literal PSM$K_FILE_BURST = 14;          !  File separation  - burst page
literal PSM$K_FILE_SETUP_2 = 15;        !  File setup	    - top of form
literal PSM$K_MAIN_INPUT = 16;          !  File service	    - main routine
literal PSM$K_FILE_INFORMATION = 17;    !  Additional information print
literal PSM$K_FILE_ERRORS = 18;         !  Errors during task processing
literal PSM$K_FILE_TRAILER = 19;        !  File separation  - trailer page
literal PSM$K_JOB_RESET = 20;           !  Job reset	    - job reset modules
literal PSM$K_JOB_TRAILER = 21;         !  Job separation   - trailer page
literal PSM$K_JOB_COMPLETION = 22;      !  Job completion   - top of form
literal PSM$K_PAGE_FOOTER = 23;         !  Page separation  - page footers
literal PSM$k_max = 24;                 !  MUST BE LAST
! 
! 	Carriage control types
! 
literal PSM$K_CC_INTERNAL = 1;          !   - imbedded
literal PSM$K_CC_IMPLIED = 2;           !   - implied
literal PSM$K_CC_FORTRAN = 3;           !   - fortran
literal PSM$K_CC_PRINT = 4;             !   - print file (PRN)
literal PSM$K_CC_MAX = 5;               !  MUST BE LAST
 
!*** MODULE $PTEDEF ***
! +
!  DEFINE PAGE TABLE ENTRY VIELDS AND VALUES
! -
! 
!  VIELD DEFINITION FOR "VALID" PTE'S
! 
literal PTE$M_PFN = 2097151;
literal PTE$M_WINDOW = 2097152;
literal PTE$M_OWN = 25165824;
literal PTE$M_MODIFY = 67108864;
literal PTE$M_PROT = 2013265920;
literal PTE$M_VALID = -2147483648;
literal PTE$M_CRF = 65536;
literal PTE$M_DZRO = 131072;
literal PTE$M_WRT = 262144;
literal PTE$M_TYP0 = 4194304;
literal PTE$M_TYP1 = 67108864;
literal PTE$M_PGFLVBN = 1048575;
literal PTE$M_PRCPGFLX = 3145728;
literal PTE$M_BAKX = 4194303;
literal PTE$M_BAK0 = 8388607;
literal PTE$M_GPTX = 4194303;
literal PTE$C_NA = 0;                   !  NO ACCESS 
literal PTE$C_KR = 402653184;           !  KERNEL READ ONLY 
literal PTE$C_KW = 268435456;           !  KERNEL WRITE 
literal PTE$C_ER = 939524096;           !  EXEC READ ONLY 
literal PTE$C_EW = 671088640;           !  EXEC WRITE 
literal PTE$C_SR = 1476395008;          !  SUPER READ ONLY 
literal PTE$C_SW = 1073741824;          !  SUPER WRITE 
literal PTE$C_UR = 2013265920;          !  USER READ ONLY 
literal PTE$C_UW = 536870912;           !  USER WRITE 
literal PTE$C_ERKW = 805306368;         !  EXEC READ KERNEL WRITE 
literal PTE$C_SRKW = 1342177280;        !  SUPER READ KERNEL WRITE 
literal PTE$C_SREW = 1207959552;        !  SUPER READ EXEC WRITE 
literal PTE$C_URKW = 1879048192;        !  USER READ KERNEL WRITE 
literal PTE$C_UREW = 1744830464;        !  USER READ EXEC WRITE 
literal PTE$C_URSW = 1610612736;        !  USER READ SUPER WRITE 
! +
literal PTE$C_KOWN = 0;                 !  KERNEL OWNER 
literal PTE$C_EOWN = 8388608;           !  EXEC OWNER 
literal PTE$C_SOWN = 16777216;          !  SUPER OWNER 
literal PTE$C_UOWN = 25165824;          !  USER OWNER 
literal PTE$S_PTEDEF = 4;
macro PTE$V_PFN = 0,0,21,0 %;
literal PTE$S_PFN = 21;                 !  PAGE FRAME NUMBER 
macro PTE$V_WINDOW = 0,21,1,0 %;        !  WINDOW BIT 
macro PTE$V_OWN = 0,23,2,0 %;
literal PTE$S_OWN = 2;                  !  MODE OF THE OWNER 
macro PTE$V_MODIFY = 0,26,1,0 %;        !  MODIFY BIT 
macro PTE$V_PROT = 0,27,4,0 %;
literal PTE$S_PROT = 4;                 !  PROTECTION 
macro PTE$V_VALID = 0,31,1,0 %;         !  VALID BIT 
! 
!  VIELD DEFINITIONS FOR VARIOUS INVALID FORMS OF PTE
! 
macro PTE$V_STX = 0,0,16,1 %;
literal PTE$S_STX = 16;                 !  SECTION TABLE INDEX 
macro PTE$V_CRF = 0,16,1,0 %;           !  COPY ON REFERENCE 
macro PTE$V_DZRO = 0,17,1,0 %;          !  DEMAND ZERO 
macro PTE$V_WRT = 0,18,1,0 %;           !  SECTION FILE IS ACCESSED FOR WRITING 
macro PTE$V_TYP0 = 0,22,1,0 %;          !  LOW ORDER BIT OF PTE TYPE 
macro PTE$V_TYP1 = 0,26,1,0 %;          !  HIGH ORDER BIT OF PTE TYPE 
!  OVERLAYS MODIFY BIT
macro PTE$R_PTEDEF_BITS2 = 0,0,24,0 %;
macro PTE$R_BAK_OVERLAY = 0,0,24,0 %;
macro PTE$R_BAK_PGFL = 0,0,24,0 %;
literal PTE$S_BAK_PGFL = 3;
macro PTE$V_PGFLVBN = 0,0,20,0 %;
literal PTE$S_PGFLVBN = 20;             !  Page file VBN
macro PTE$V_PRCPGFLX = 0,20,2,0 %;
literal PTE$S_PRCPGFLX = 2;             !  Process page file index
macro PTE$V_BAKX = 0,0,22,0 %;
literal PTE$S_BAKX = 22;                ! BACKUP ADDRESS (uninterpreted)
macro PTE$V_BAK0 = 0,0,23,0 %;
literal PTE$S_BAK0 = 23;                ! BACKUP ADDRESS (w/TYP0)
macro PTE$V_GPTX = 0,0,22,0 %;
literal PTE$S_GPTX = 22;                !  GLOBAL PAGE TABLE INDEX 
! +
!  PROTECTION FIELD DEFINITIONS
! -
!  OWNER FIELD DEFINITIONS
! _
 
!*** MODULE $PTRDEF ***
! +
!  POINTER CONTROL BLOCK
!         THIS IS A STRUCTURE OF POINTERS TO OTHER DYNAMIC STRUCTURES
!         OF LIKE KIND.  TYPICALLY THE STRUCTURES POINTED TO ARE KNOWN
!         BY THEIR LONG WORD INDEX INTO THE TABLE AND TO FACILITATE FETCHING
!         THESE, IT IS CONVENTIONAL TO KEEP A POINTER TO THE BASE OF THE
!         STRUCTURE POINTERS RATHER THAN (OR IN ADDITION TO) THE POINTER
!         TO THE FRONT OF THE POINTER CONTROL BLOCK.  THE NUMBER OF POINTERS
!         IN THE ARRAY PRECEEDS THE FIRST POINTER IN THE ARRAY.
! -
literal PTR$K_LENGTH = 16;              ! LENGTH OF FIXED PORTION 
literal PTR$C_LENGTH = 16;              ! LENGTH OF FIXED PORTION 
literal PTR$S_PTRDEF = 20;
macro PTR$W_SIZE = 8,0,16,0 %;          ! SIZE OF DYNAMIC CONTROL BLOCK 
macro PTR$B_TYPE = 10,0,8,0 %;          ! TYPE OF DYNAMIC CONTROL BLOCK 
macro PTR$B_PTRTYPE = 11,0,8,0 %;       ! TYPE OF CONTROL BLOCK POINTED TO 
macro PTR$L_PTRCNT = 12,0,32,0 %;       ! COUNT OF ENTRIES 
macro PTR$L_PTR0 = 16,0,32,0 %;         ! PTR NUMBER 0 
 
!*** MODULE $PWDHISDEF ***
!  Password History Record - This structure defines the layout of the system
!  password history file.  This is a variable record length indexed file (keyed
!  by username) where each record contains the last "n" quadword hash values for
!  the user's last "n" passwords.
literal PWDHIS$C_ENTRY_LENGTH = 16;     !  size of one entry
literal PWDHIS$K_ENTRY_LENGTH = 16;     !  size of one entry
literal PWDHIS$S_PWDENTDEF = 16;
macro PWDHIS$Q_ENTRY = 0,0,0,0 %;
literal PWDHIS$S_ENTRY = 8;             !  the quadword hash
macro PWDHIS$Q_CHANGE = 8,0,0,0 %;
literal PWDHIS$S_CHANGE = 8;            !  password change date
literal PWDHIS$C_FIXED = 32;            !  fixed part of record
literal PWDHIS$K_FIXED = 32;            !  fixed part of record
literal PWDHIS$C_DEFAULT_LIFETIME = 365; !  default history lifetime (days)
literal PWDHIS$K_DEFAULT_LIFETIME = 365; !  default history lifetime (days)
literal PWDHIS$C_DEFAULT_LIMIT = 60;    !  default # of history entries per user
literal PWDHIS$K_DEFAULT_LIMIT = 60;    !  default # of history entries per user
literal PWDHIS$C_MAXIMUM_LIMIT = 2000;  !  maximum # of history entries per user
literal PWDHIS$K_MAXIMUM_LIMIT = 2000;  !  maximum # of history entries per user
literal PWDHIS$S_PWDHISDEF = 36;
macro PWDHIS$T_USERNAME = 0,0,0,0 %;
literal PWDHIS$S_USERNAME = 32;         !  username (KEY0)
macro PWDHIS$R_HISTORY = 32,0,32,0 %;
literal PWDHIS$S_HISTORY = 4;           !  offset to start of list
 
!*** MODULE $RBMDEF ***
! +
!  RBM        - realtime bit map of SPTs available for real time processes
! -
literal RBM$K_LENGTH = 12;              !  Length of block so far. 
literal RBM$C_LENGTH = 12;              !  Length of block so far. 
literal RBM$S_RBMDEF = 16;
macro RBM$L_STARTVPN = 0,0,32,0 %;      !  Starting VPN of bit map. 
macro RBM$L_FREECOUNT = 4,0,32,0 %;     !  Number of free SPTs. 
macro RBM$W_SIZE = 8,0,16,0 %;          !  Size of control block. 
macro RBM$B_TYPE = 10,0,8,0 %;          !  Type of control block. 
macro RBM$L_BITMAP = 12,0,32,0 %;       !  Start of bit map. 
 
!*** MODULE $RDIDEF ***
! ++
!  Rights Database Identifier Block definitions: This structure contains the
!  RMS Internal File Identifiers (IFI's) and Internal Stream Identifiers
!  (ISI's) for the rights database. This structure is allocated from the
!  process allocation region pool.
! --
literal RDI$K_ISI_MAX = 10;             !  Maximum number of concurrent record streams
literal RDI$S_RDIDEF = 56;
macro RDI$L_SIZE = 0,0,32,0 %;          !  Size of allocated block
macro RDI$L_IFI_READ = 4,0,32,0 %;      !  Internal File Identifier for read operations
macro RDI$L_IFI_WRITE = 8,0,32,0 %;     !  Internal File Identifier for write operations
macro RDI$L_ISI_VEC = 12,0,0,0 %;
literal RDI$S_ISI_VEC = 44;             !  Internal Stream Identifier vector
 
!*** MODULE $RDPDEF ***
! 
!  REMOTE DEVICE PROTOCOL DEFINITIONS
! 
literal RDP$K_HEADERLEN = 10;           ! HEADER LENGTH 
literal RDP$C_HEADERLEN = 10;           ! HEADER LENGTH 
literal RDP$C_ATTN = -1;                !  ATTENTION 
literal RDP$C_END = -2;                 !  I/O REQUEST COMPLETE 
literal RDP$C_LOG = -3;                 !  ERROR LOG 
literal RDP$S_RDPDEF = 34;
macro RDP$W_OPCODE = 0,0,16,0 %;        ! OPERATION CODE 
macro RDP$W_MOD = 2,0,16,0 %;           ! OPERATION CODE MODIFIERS 
macro RDP$L_REFID = 4,0,32,0 %;         ! REFERENCE ID 
macro RDP$W_UNIT = 8,0,16,0 %;          ! DEVICE UNIT NUMBER 
macro RDP$W_SIZE = 8,0,16,0 %;          ! SIZE OF MESSAGE (ACP/DRIVER USE ONLY) 
macro RDP$L_PARAM1 = 10,0,32,0 %;       ! PARAMETER 1 
macro RDP$L_PARAM2 = 14,0,32,0 %;       ! PARAMETER 2 
macro RDP$L_PARAM3 = 18,0,32,0 %;       ! PARAMETER 3 
macro RDP$L_PARAM4 = 22,0,32,0 %;       ! PARAMETER 4 
macro RDP$L_PARAM5 = 26,0,32,0 %;       ! PARAMETER 5 
macro RDP$L_PARAM6 = 30,0,32,0 %;       ! PARAMETER 6 
! 
!  RESPONSE FROM REMOTE PACKET DEFINITIONS
! 
! RESPONSE PACKET OPCODES 
literal RDP$S_RDPDEF1 = 18;
macro RDP$Q_STATUS = 10,0,0,0 %;
literal RDP$S_STATUS = 8;               ! END PACKET I/O STATUS 
! 
!  TERMINAL SPECIFIC PARAMETER DEFINITIONS
! 
!   READ/WRITE REQUEST
literal RDP$S_RDPDEF2 = 19;
macro RDP$L_TT_BCNT = 10,0,32,0 %;      ! BYTE COUNT 
macro RDP$L_TT_CARCON = 14,0,32,0 %;    ! WRITE CARRIAGE CONTROL 
macro RDP$L_TT_TIMOUT = 14,0,32,0 %;    ! READ TIMEOUT 
macro RDP$T_TT_WDATA = 18,0,8,0 %;      ! WRITE DATA 
macro RDP$T_TT_TERM = 18,0,8,0 %;       ! BYTE OF SIZE + TERMINATOR MASK 
! WORD OF SIZE + PROMPT STRING
!  SET MODE/CHARACTERISTICS REQUEST
literal RDP$S_RDPDEF3 = 34;
macro RDP$Q_TT_CHAR = 10,0,0,0 %;
literal RDP$S_TT_CHAR = 8;              ! CHARACTERISTICS 
macro RDP$L_TT_ASTPRM = 10,0,32,0 %;    ! AST PARAMETER 
macro RDP$L_TT_SPEED = 18,0,32,0 %;     ! LINE SPEED 
macro RDP$L_TT_FILL = 22,0,32,0 %;      ! FILL SPECIFIER 
macro RDP$L_TT_PARITY = 26,0,32,0 %;    ! PARITY FLAGS 
macro RDP$L_TT_CHAR2 = 30,0,32,0 %;     !  Remaining longword of characters 
!   READ REQUEST END PACKET
literal RDP$S_RDPDEF4 = 19;
macro RDP$T_TT_RDATA = 18,0,8,0 %;      ! WORD OF SIZE + READ DATA 
!   SENSE MODE/CHARACTERISTICS END PACKET
literal RDP$S_RDPDEF5 = 30;
macro RDP$Q_TT_SCHAR = 18,0,0,0 %;
literal RDP$S_TT_SCHAR = 8;             ! SENSED CHARACTERISTICS 
macro RDP$L_TT_SCHAR2 = 26,0,32,0 %;    !  Additional longword of characters 
!  Broadcast message attention packet
literal RDP$C_TT_BRDNAME = 16;          !  Size of name field 
literal RDP$S_RDPDEF6 = 34;
macro RDP$W_TT_BRDTOTSIZE = 10,0,16,0 %; !  Total size of data 
macro RDP$W_TT_BRDMSG = 12,0,16,0 %;    !  Message code 
macro RDP$W_TT_BRDUNIT = 14,0,16,0 %;   !  Unit number 
macro RDP$T_TT_BRDNAME = 16,0,0,0 %;
literal RDP$S_TT_BRDNAME = 16;          !  Device name as counted string 
macro RDP$W_TT_BRDTXTSIZE = 32,0,16,0 %; !  Count for message text 
macro RDP$T_TT_BRDTEXT = 34,0,0,0 %;    !  Message text start 
!  Out of band attention packet
literal RDP$C_TT_UNSOL = 0;             ! UNSOLICITED DATA 
literal RDP$C_TT_HANGUP = 1;            ! MODEM HANGUP 
literal RDP$C_TT_CTRLC = 2;             ! CONTROL/C 
literal RDP$C_TT_CTRLY = 3;             ! CONTROL/Y 
literal RDP$C_TT_STARTRCV = 4;          !  Start a receive to the net 
literal RDP$C_TT_BRDCST = 5;            !  Broadcast message for mailbox 
literal RDP$C_TT_OUTBAND = 6;           !  Out of band AST 
literal RDP$S_RDPDEF7 = 11;
macro RDP$B_TT_OUTBAND = 10,0,8,0 %;    !  Out of band character 
!  ATTENTION PACKET MODIFIERS
 
!*** MODULE $RBFDEF ***
! 
!         Remote buffer as stored in dynamic memory
! 
!         This structure must be identical to the above structure except
!         for the header, which is the header for a buffered io buffer.
! 
! 
!         Buffered io buffer header
! 
literal RBF$K_HEADERLEN = 24;           ! HEADER LENGTH 
literal RBF$C_HEADERLEN = 24;           ! HEADER LENGTH 
literal RBF$C_ATTN = -1;                !  ATTENTION 
literal RBF$C_END = -2;                 !  I/O REQUEST COMPLETE 
literal RBF$C_LOG = -3;                 !  ERROR LOG 
literal RBF$S_RBFDEF = 48;
macro RBF$L_MSGDAT = 0,0,32,0 %;        !  Address of message data 
macro RBF$L_USRBFR = 4,0,32,0 %;        !  User buffer address 
macro RBF$W_SIZE = 8,0,16,0 %;          !  Size of structure 
macro RBF$B_TYPE = 10,0,8,0 %;          !  Type of structure, DYN$C_BUFIO 
macro RBF$B_SPARE = 11,0,8,0 %;         !  Alignment 
macro RBF$W_DATSIZE = 12,0,16,0 %;      !  Data size 
! 
!         End of header
! 
macro RBF$W_OPCODE = 14,0,16,0 %;       ! OPERATION CODE 
macro RBF$W_MOD = 16,0,16,0 %;          ! OPERATION CODE MODIFIERS 
macro RBF$L_REFID = 18,0,32,0 %;        ! REFERENCE ID 
macro RBF$W_UNIT = 22,0,16,0 %;         ! DEVICE UNIT NUMBER 
!         S        SIZE,0,W                /*SIZE OF MESSAGE (ACP/DRIVER USE ONLY)
macro RBF$L_PARAM1 = 24,0,32,0 %;       ! PARAMETER 1 
macro RBF$L_PARAM2 = 28,0,32,0 %;       ! PARAMETER 2 
macro RBF$L_PARAM3 = 32,0,32,0 %;       ! PARAMETER 3 
macro RBF$L_PARAM4 = 36,0,32,0 %;       ! PARAMETER 4 
macro RBF$L_PARAM5 = 40,0,32,0 %;       ! PARAMETER 5 
macro RBF$L_PARAM6 = 44,0,32,0 %;       ! PARAMETER 6 
! 
!  RESPONSE FROM REMOTE PACKET DEFINITIONS
! 
! RESPONSE PACKET OPCODES 
literal RBF$S_RBFDEF1 = 32;
macro RBF$Q_STATUS = 24,0,0,0 %;
literal RBF$S_STATUS = 8;               ! END PACKET I/O STATUS 
! 
!  TERMINAL SPECIFIC PARAMETER DEFINITIONS
! 
!   READ/WRITE REQUEST
literal RBF$S_RBFDEF2 = 33;
macro RBF$L_TT_BCNT = 24,0,32,0 %;      ! BYTE COUNT 
macro RBF$L_TT_CARCON = 28,0,32,0 %;    ! WRITE CARRIAGE CONTROL 
macro RBF$L_TT_TIMOUT = 28,0,32,0 %;    ! READ TIMEOUT 
macro RBF$T_TT_WDATA = 32,0,8,0 %;      ! WRITE DATA 
macro RBF$T_TT_TERM = 32,0,8,0 %;       ! BYTE OF SIZE + TERMINATOR MASK 
! WORD OF SIZE + PROMPT STRING
!  SET MODE/CHARACTERISTICS REQUEST
literal RBF$S_RBFDEF3 = 48;
macro RBF$Q_TT_CHAR = 24,0,0,0 %;
literal RBF$S_TT_CHAR = 8;              ! CHARACTERISTICS 
macro RBF$L_TT_ASTPRM = 24,0,32,0 %;    ! AST PARAMETER 
macro RBF$L_TT_SPEED = 32,0,32,0 %;     ! LINE SPEED 
macro RBF$L_TT_FILL = 36,0,32,0 %;      ! FILL SPECIFIER 
macro RBF$L_TT_PARITY = 40,0,32,0 %;    ! PARITY FLAGS 
macro RBF$L_TT_CHAR2 = 44,0,32,0 %;     !  Another longword of characters 
!   READ REQUEST END PACKET
literal RBF$S_RBFDEF4 = 33;
macro RBF$T_TT_RDATA = 32,0,8,0 %;      ! WORD OF SIZE + READ DATA 
!   SENSE MODE/CHARACTERISTICS END PACKET
literal RBF$S_RBFDEF5 = 44;
macro RBF$Q_TT_SCHAR = 32,0,0,0 %;
literal RBF$S_TT_SCHAR = 8;             ! SENSED CHARACTERISTICS 
macro RBF$L_TT_SCHAR2 = 40,0,32,0 %;    !  Another longword of characters 
!  Broadcast message attention packet
literal RBF$C_TT_BRDNAME = 16;          !  Size of name field 
literal RBF$S_RBFDEF6 = 48;
macro RBF$W_TT_BRDTOTSIZE = 24,0,16,0 %; !  Total size of data 
macro RBF$W_TT_BRDMSG = 26,0,16,0 %;    !  Message code 
macro RBF$W_TT_BRDUNIT = 28,0,16,0 %;   !  Unit number 
macro RBF$T_TT_BRDNAME = 30,0,0,0 %;
literal RBF$S_TT_BRDNAME = 16;          !  Device name as counted string 
macro RBF$W_TT_BRDTXTSIZE = 46,0,16,0 %; !  Count for message text 
macro RBF$T_TT_BRDTEXT = 48,0,0,0 %;    !  Message text start 
!  Out of band attention packet
literal RBF$C_TT_UNSOL = 0;             ! UNSOLICITED DATA 
literal RBF$C_TT_HANGUP = 1;            ! MODEM HANGUP 
literal RBF$C_TT_CTRLC = 2;             ! CONTROL/C 
literal RBF$C_TT_CTRLY = 3;             ! CONTROL/Y 
literal RBF$C_TT_STARTRCV = 4;          !  Start a receive to the net 
literal RBF$C_TT_BRDCST = 5;            !  Broadcast message for mailbox 
literal RBF$C_TT_OUTBAND = 6;           !  Out of band AST 
literal RBF$S_RBFDEF7 = 25;
macro RBF$B_TT_OUTBAND = 24,0,8,0 %;    !  Out of band character 
!  ATTENTION PACKET MODIFIERS
 
!*** MODULE $RCTDEF ***
! +
!  RCT - Replacement and Caching Table sector !0 layout.
!         The RCT is a structure residing on disks controlled by MSCP
!         speaking disk controllers.  The RCT is maintained by the intelligent
!         controllers and the disk class driver.  The disk class driver mainly
!         gets involved in RCT manipulations during host initiated bad
!         block replacement.
literal RCT$M_WB = 1;
literal RCT$M_FE = 128;
literal RCT$M_BR = 8192;
literal RCT$M_RP2 = 16384;
literal RCT$M_RP1 = 32768;
literal RCT$M_LBN = 268435455;
literal RCT$M_CODE = -268435456;
literal RCT$M_NONPRIME = 268435456;
literal RCT$M_ALLOCATED = 536870912;
literal RCT$M_UNUSABLE = 1073741824;
literal RCT$M_NULL = -2147483648;
literal RCT$K_EMPTY = 0;                !  Unallocated (empty) replacement block 
literal RCT$K_ALOCPRIME = 2;            !  Allocated replace blk - primary RBN 
literal RCT$K_ALOCNONP = 3;             !  Allocated replace blk - non-primary RBN 
literal RCT$K_UNUSABLE = 4;             !  Unusable replacement block 
literal RCT$K_ALTUNUSE = 5;             !  Alternate unusable replacement block 
literal RCT$K_NULL = 8;                 !  Null entry - no corresponding RBN sector 
literal RCT$S_RCTDEF = 44;
macro RCT$Q_VOLSER = 0,0,0,0 %;
literal RCT$S_VOLSER = 8;               !  Volume serial number 
macro RCT$W_FLAGS = 8,0,16,0 %;         !  Flags word 
macro RCT$V_WB = 8,0,1,0 %;             !  Write back caching in use 
macro RCT$V_FE = 8,7,1,0 %;             !  Forced Error flag for block being replaced 
macro RCT$V_BR = 8,13,1,0 %;            !  Replacement caused by Bad RBN 
macro RCT$V_RP2 = 8,14,1,0 %;           !  Replacement in Progress phase 2 
macro RCT$V_RP1 = 8,15,1,0 %;           !  Replacement in Progress phase 1 
macro RCT$L_LBN = 12,0,32,0 %;          !  LBN curently being replaced. 
macro RCT$L_RBN = 16,0,32,0 %;          !  RBN allocated to replace LBN 
macro RCT$L_BAD_RBN = 20,0,32,0 %;      !  If BR flag, RBN of bad replacement block 
macro RCT$Q_WB_CTRL = 24,0,0,0 %;
literal RCT$S_WB_CTRL = 8;              !  Serial ! of last controller doing Write back 
macro RCT$L_WB_INCAR = 32,0,32,0 %;     !  Write back incarnation ! 
macro RCT$Q_INCARTIME = 36,0,0,0 %;
literal RCT$S_INCARTIME = 8;            !  Date-time of last update of incarnation no. 
! 
!  Structure of a Replacement Block Descriptor
! 
macro RCT$V_LBN = 36,0,28,0 %;
literal RCT$S_LBN = 28;                 !  Space for LBN replaced by this RBN 
macro RCT$V_CODE = 36,28,4,0 %;
literal RCT$S_CODE = 4;                 !  Describes how this descriptor being used 
macro RCT$V_NONPRIME = 36,28,1,0 %;     !  Set implies allocated, but not prime RBN 
macro RCT$V_ALLOCATED = 36,29,1,0 %;    !  This RBN allocated 
macro RCT$V_UNUSABLE = 36,30,1,0 %;     !  This RBN unusable 
macro RCT$V_NULL = 36,31,1,0 %;         !  This marks a NULL entry 
!  Values of CODE 
 
!*** MODULE $RDTDEF ***
! +
!  RDT - SCS RESPONSE DESCRIPTOR TABLE
! 
!  ONE RESPONSE DESCRIPTOR (RD) IS ALLOCATED FOR EACH SCS MESSAGE
!  SENT FOR WHICH THE SENDER EXPECTS A MATCHING RESPONSE.
! -
literal RDT$C_LENGTH = 24;              ! LENGTH OF NEG PORTION OF STRUCTURE 
! 
literal RDT$S_RDTDEF = 25;
macro RDT$L_WAITFL = -24,0,32,0 %;      ! RD WAIT QUEUE FWD LINK 
macro RDT$L_WAITBL = -20,0,32,0 %;      ! RD WAIT QUEUE BACK LINK 
macro RDT$W_SIZE = -16,0,16,0 %;        ! STRUCTURE SIZE IN BYTES 
macro RDT$B_TYPE = -14,0,8,0 %;         ! SCS STURCTURE TYPE 
macro RDT$B_SUBTYP = -13,0,8,0 %;       ! SCS STRUCT SUBTYPE FOR RDT 
macro RDT$L_FREERD = -12,0,32,0 %;      ! ADDR OF 1ST FREE RD 
macro RDT$L_MAXRDIDX = -8,0,32,0 %;     ! MAXIMUM ! OF DESCRIPTORS 
macro RDT$L_QRDT_CNT = -4,0,32,0 %;     ! Count of stalls because of no response ID's
 
!*** MODULE $RDDEF ***
! +
!  RD - SCS RESPONSE DESCRIPTOR FORMAT
! -
literal RD$K_LENGTH = 8;                ! LENGTH OF RD 
literal RD$C_LENGTH = 8;                ! LENGTH OF RD 
literal RD$S_RDDEF = 8;
macro RD$L_CDRP = 0,0,32,0 %;           ! ADDR OF ASSOC CDRP OR 
!  OR OTHER CONTEXT BLOCK
macro RD$L_LINK = 0,0,32,0 %;           !  OR LINK TO NEXT FREE RD 
macro RD$W_STATE = 4,0,16,0 %;          ! RD STATE FLAGS 
macro RD$V_BUSY = 4,0,1,0 %;            !  ALLOCATED IF SET 
macro RD$V_PERM = 4,1,1,0 %;            !  PERMANENTLY ALLOCATED RD IF SET 
macro RD$W_SEQNUM = 6,0,16,0 %;         ! SEQUENCE NUMBER OF RD 
 
!*** MODULE $REV8NNDEF ***
! +
!  Minimum revision levels for NAUTILUS SMP operation
! -
literal REV8NN$C_CPUMINREV = 0;         !  Minimum CPU revision for REV8NN operation
literal REV8NN$C_UCODEREV = 0;          !  Minimum microcode revision for REV8NN operation
literal REV8NN$C_UWCSREV = 0;           !  Minimum UW control storage for REV8NN
 
!*** MODULE $REV8PSDEF ***
! +
!  Minimum revision levels for POLARSTAR SMP operation
! -
literal REV8PS$C_CPUMINREV = 0;         !  Minimum CPU revision for REV8PS operation
literal REV8PS$C_UCODEREV = 0;          !  Minimum microcode revision for REV8PS operation
literal REV8PS$C_UWCSREV = 0;           !  Minimum UW control storage for REV8PS operation
 
!*** MODULE $REV8SSDEF ***
! +
!  Minimum revision levels for SCORPIO SMP operation
! -
literal REV8SS$C_CPUMINREV = 5;         !  Minimum CPU revision for SMP operation
literal REV8SS$C_UCODEREV = 20;         !  Minimum microcode revision for SMP operation
literal REV8SS$C_PATMINREV = 21;        !  Minimum ECO revision for SMP operation
literal REV825$C_CPUMINREV = 2;         !  Minimum CPU revision for SMP operation
literal REV825$C_UCODEREV = 20;         !  Minimum microcode revision for SMP operation
literal REV825$C_PATMINREV = 21;        !  Minimum ECO revision for SMP operation
 
!*** MODULE $REV9CCDEF ***
! +
!  Minimum revision levels for CALYPSO SMP operation
! -
literal REV9CC$C_CVAXMINREV = 0;        !  Minimum CVAX CPU revision for SMP operation
literal REV9CC$C_XCPFWREV = 0;          !  Minimum XCP firmware revision for SMP operation
literal REV9CC$C_XCPGAREV = 0;          !  Minimum XCP gate array revision for SMP operation
 
!*** MODULE $REV9RRDEF ***
! +
!  Minimum revision levels for CALYPSO/XRP SMP operation
! -
literal REV9RR$C_RVAXMINREV = 0;        !  Minimum RVAX CPU revision for SMP operation
literal REV9RR$C_XSID_XRPFWREV = 16;    !  Minimum XRP console revision
literal REV9RR$C_XRPFWREV = 0;          !  Minimum XRP firmware revision
literal REV9RR$C_XRPXCAREV = 0;         !  Minimum XCA chip revision for SMP operation
 
!*** MODULE $REV9AQDEF ***
! +
!  Minimum revision levels for AQUARIUS operation
! -
literal REV9AQ$C_REVLVL = 0;            !  Minimum System Revision (in SID)
 
!*** MODULE $RPBDEF ***
! +
!  RESTART PARAMETER BLOCK DEFINITIONS
! -
literal RPB$M_CONV = 1;
literal RPB$M_DEBUG = 2;
literal RPB$M_INIBPT = 4;
literal RPB$M_BBLOCK = 8;
literal RPB$M_DIAG = 16;
literal RPB$M_BOOBPT = 32;
literal RPB$M_HEADER = 64;
literal RPB$M_NOTEST = 128;
literal RPB$M_SOLICT = 256;
literal RPB$M_HALT = 512;
literal RPB$M_NOPFND = 1024;
literal RPB$M_MPM = 2048;
literal RPB$M_USEMPM = 4096;
literal RPB$M_MEMTEST = 8192;
literal RPB$M_FINDMEM = 16384;
literal RPB$M_AUTOTEST = 32768;
literal RPB$M_CRDTEST = 65536;
literal RPB$M_DIFSYSDEV = 131072;
literal RPB$M_BOOTLOG = 262144;
literal RPB$M_TOPSYS = -268435456;
literal RPB$M_NOSYSDISK = 1;
literal RPB$M_PERCPU_VEC = 2;
literal RPB$C_MEMDSCSIZ = 8;            ! NUMBER OF BYTES IN ONE MEM DESCRIPTOR 
literal RPB$C_NMEMDSC = 8;              ! NUMBER OF MEMORY DESCRIPTORS IN RPB 
literal RPB$K_LENGTH = 276;             ! LENGTH OF RPB 
literal RPB$C_LENGTH = 276;             ! LENGTH OF RPB 
literal RPB$S_RPBDEF = 276;
macro RPB$L_BASE = 0,0,32,0 %;          ! PHYSICAL BASE ADDRESS OF 64K BLOCK 
macro RPB$L_RESTART = 4,0,32,0 %;       ! POINTER TO RESTART ROUTINE (PHYSICAL) 
macro RPB$L_CHKSUM = 8,0,32,0 %;        ! CHECKSUM OF BYTES 0-7F OF RESTART ROUTINE 
macro RPB$L_RSTRTFLG = 12,0,32,0 %;     ! RESTART IN PROGRESS FLAG 
macro RPB$L_HALTPC = 16,0,32,0 %;       ! PC AT RESTART/HALT 
macro RPB$L_HALTPSL = 20,0,32,0 %;      ! PSL AT RESTART/HALT 
macro RPB$L_HALTCODE = 24,0,32,0 %;     ! CODE DESCRIBING RESTART REASON 
macro RPB$L_BOOTR0 = 28,0,32,0 %;       ! SAVED BOOT PARAMETER R0 
macro RPB$B_R0DEVTYP = 28,0,8,0 %;      !  DEVICE TYPE SUBFIELD 
macro RPB$W_R0UBVEC = 30,0,16,0 %;      !  UNIBUS INT VECTOR SUBFIELD 
macro RPB$L_BOOTR1 = 32,0,32,0 %;       ! SAVED BOOT PARAMETER R1 
macro RPB$V_NEXUS = 32,0,4,0 %;
literal RPB$S_NEXUS = 4;                ! NEXUS OF SYSTEM DEVICE ADAPTER 
macro RPB$V_ABUS = 32,4,2,0 %;
literal RPB$S_ABUS = 2;                 ! ABUS ADAPTER NUMBER OF SBIA 
macro RPB$L_BOOTR2 = 36,0,32,0 %;       ! SAVED BOTT PARAMETER R2 
macro RPB$L_BOOTR3 = 40,0,32,0 %;       ! SAVED BOOT PARAMETER R3 
macro RPB$L_BOOTR4 = 44,0,32,0 %;       ! SAVED BOOT PARAMETER R4 
macro RPB$L_BOOTR5 = 48,0,32,0 %;       ! SAVED BOOT PARAMETER R5 
macro RPB$V_CONV = 48,0,1,0 %;          !  CONVERSATIONAL BOOTSTRAP 
macro RPB$V_DEBUG = 48,1,1,0 %;         !  KEEP DEBUGGER CODE 
macro RPB$V_INIBPT = 48,2,1,0 %;        !  INITIAL BREAKPOINT 
macro RPB$V_BBLOCK = 48,3,1,0 %;        !  TRANSFER TO BOOTBLOCK 
macro RPB$V_DIAG = 48,4,1,0 %;          !  BOOT DIAGNOSTIC FILE 
macro RPB$V_BOOBPT = 48,5,1,0 %;        !  BOOTSTRAP BREAKPOINT 
macro RPB$V_HEADER = 48,6,1,0 %;        !  USE START ADDRESS FROM IMAGE HEADER 
macro RPB$V_NOTEST = 48,7,1,0 %;        !  FLAG TO INHIBIT MEMORY TESTING 
macro RPB$V_SOLICT = 48,8,1,0 %;        !  SOLICIT BOOT FILE NAME 
macro RPB$V_HALT = 48,9,1,0 %;          !  HALT BEFORE TRANSFER 
macro RPB$V_NOPFND = 48,10,1,0 %;       !  INHIBIT PFN DELETION 
macro RPB$V_MPM = 48,11,1,0 %;          !  ASMP BOOT, USE MA780 ONLY 
macro RPB$V_USEMPM = 48,12,1,0 %;       !  USE MA780 AS IF IT WERE LOCAL MEMORY 
macro RPB$V_MEMTEST = 48,13,1,0 %;      !  USE STRICTER TEST TO VALIDATE MEMORY 
macro RPB$V_FINDMEM = 48,14,1,0 %;      !  FIND SUFFICIENT MEMORY TO BOOT (>512K) 
macro RPB$V_AUTOTEST = 48,15,1,0 %;     !  USED BY DIAGNOSTIC SUPERVISOR
macro RPB$V_CRDTEST = 48,16,1,0 %;      !  REMOVE PAGES WITH CRD ERRORS
macro RPB$V_DIFSYSDEV = 48,17,1,0 %;    !  SYSTEM DISK DIFFERENT FROM BOOT DEVICE
macro RPB$V_BOOTLOG = 48,18,1,0 %;      !  SELF TEST STATUS MESSAGES
macro RPB$V_TOPSYS = 48,28,4,0 %;
literal RPB$S_TOPSYS = 4;               ! SYSTEM DIRECTORY NUMBER 
macro RPB$L_IOVEC = 52,0,32,0 %;        ! ADDRESS OF BOOTSTRAP QIO VECTOR 
macro RPB$L_IOVECSZ = 56,0,32,0 %;      ! SIZE OF BOOT QIO ROUTINE 
macro RPB$L_FILLBN = 60,0,32,0 %;       ! LOGICAL BLOCK NUMBER OF BOOT FILE 
macro RPB$L_FILSIZ = 64,0,32,0 %;       ! SIZE OF BOOT FILE 
macro RPB$Q_PFNMAP = 68,0,0,0 %;
literal RPB$S_PFNMAP = 8;               ! DESCRIPTOR FOR PFN BITMAP 
macro RPB$L_PFNCNT = 76,0,32,0 %;       ! COUNT OF PHYSICAL PAGES 
macro RPB$L_SVASPT = 80,0,32,0 %;       ! SYSTEM VIRTUAL ADDRESS OF SPT 
macro RPB$L_CSRPHY = 84,0,32,0 %;       ! UBA DEVICE CSR ADDRESS (PHYSICAL) 
macro RPB$L_CSRVIR = 88,0,32,0 %;       ! UBA DEVICE CSR ADDRESS (VIRTUAL) 
macro RPB$L_ADPPHY = 92,0,32,0 %;       ! ADAPTER CONFIGURATION REGISTER (PHYSICAL) 
macro RPB$L_ADPVIR = 96,0,32,0 %;       ! ADAPTER CONFIGURATION REGISTER (VIRTUAL) 
macro RPB$W_UNIT = 100,0,16,0 %;        ! UNIT NUMBER 
macro RPB$B_DEVTYP = 102,0,8,0 %;       ! DEVICE TYPE CODE 
macro RPB$B_SLAVE = 103,0,8,0 %;        ! SLAVE UNIT NUMBER 
macro RPB$T_FILE = 104,0,0,0 %;
literal RPB$S_FILE = 40;                ! BOOT FILE NAME (ASCIC) 
macro RPB$B_CONFREG = 144,0,0,0 %;
literal RPB$S_CONFREG = 16;             ! ARRAY OF ADAPTER TYPES 
macro RPB$B_HDRPGCNT = 160,0,8,0 %;     ! COUNT OF HEADER PAGES 
macro RPB$W_BOOTNDT = 161,0,16,0 %;     ! 16-BIT BOOT ADAPTER NEXUS DEVICE TYPE
macro RPB$B_BOOTNDT = 161,0,8,0 %;      !  8-BIT BOOT ADAPTER NEXUS DEVICE TYPE
macro RPB$B_FLAGS = 163,0,8,0 %;        ! MISCELLANEOUS FLAG BITS
macro RPB$V_NOSYSDISK = 163,0,1,0 %;    !  BOOT DISK IS NOT PRESENT
macro RPB$V_PERCPU_VEC = 163,1,1,0 %;   !  SET=>CPUDBVEC POINTS TO VECTOR OF DATABASES
!  CLR=>CPUDBVEC POINTS TO PRIMARY'S DATABASE
macro RPB$L_ISP = 164,0,32,0 %;         !      <OFFSET IS OBSOLETED BY SMP>
macro RPB$L_MAX_PFN = 164,0,32,0 %;     ! ABSOLUTE HIGHEST PFN
macro RPB$L_PCBB = 168,0,32,0 %;        !      <OFFSET IS OBSOLETED BY SMP>
macro RPB$L_SPTEP = 168,0,32,0 %;       ! SYSTEM SPACE PTE PROTOTYPE REGISTER
macro RPB$L_SBR = 172,0,32,0 %;         ! SYSTEM BASE REGISTER 
macro RPB$L_SCBB = 176,0,32,0 %;        !      <OFFSET IS OBSOLETED BY SMP>
macro RPB$L_CPUDBVEC = 176,0,32,0 %;    ! PHYSICAL PER-CPU DATABASE VECTOR PA,
! OR PA OF PRIMARY'S PER-CPU DATABASE
macro RPB$L_SISR = 180,0,32,0 %;        !      <OFFSET IS OBSOLETED BY SMP>
macro RPB$L_CCA_ADDR = 180,0,32,0 %;    ! ADDRESS OF CCA (CALYPSO)
macro RPB$L_CSL_SAVE_AREA = 180,0,32,0 %; ! CONSOLE STATE SAVE AREA POINTER
macro RPB$L_SLR = 184,0,32,0 %;         ! SYSTEM LENGTH REGISTER 
macro RPB$L_MEMDSC = 188,0,0,0 %;
literal RPB$S_MEMDSC = 64;              ! MEMORY DESCRIPT. - PAGCNT, TR, BASE PFN 
macro RPB$V_PAGCNT = 188,0,24,0 %;
literal RPB$S_PAGCNT = 24;              !  COUNT OF PAGES FOR THIS MEMORY 
macro RPB$V_TR = 188,24,8,0 %;
literal RPB$S_TR = 8;                   !  TR NUMBER FOR THIS MEMORY 
macro RPB$V_BASEPFN = 192,0,32,0 %;
literal RPB$S_BASEPFN = 32;             !  BASE PFN FOR THIS MEMORY 
macro RPB$L_BUGCHK = 252,0,32,0 %;      ! 	<OFFSET IS OBSOLETED BY SMP>
macro RPB$L_SMP_PC = 252,0,32,0 %;      ! SMP BOOT PAGE PHYSICAL ADDRESS
macro RPB$B_WAIT = 256,0,32,0 %;
literal RPB$S_WAIT = 4;                 ! SECONDARY CPU TRANSFERS TO CODE HERE
macro RPB$L_BADPGS = 260,0,32,0 %;      ! NUMBER OF BAD PAGES FOUND IN MEM SCAN
macro RPB$B_CTRLLTR = 264,0,8,0 %;      ! CONTROLLER LETTER DESIGNATOR
macro RPB$B_SCBPAGCT = 265,0,8,0 %;     ! SCB PAGE COUNT
macro RPB$B_XTRA2 = 266,0,16,0 %;
literal RPB$S_XTRA2 = 2;                ! SPARE 2 BYTES
macro RPB$L_XTRA_L = 268,0,32,0 %;      ! SPARE LONGWORD
macro RPB$L_VMB_REVISION = 272,0,32,0 %; ! VMB REVISION LEVEL -- FORMAT VARIES 
!  BETWEEN MAIN VMB AND MICROVAX VMB'S. 
 
!*** MODULE $RSBDEF ***
! +
!  RSB - RESOURCE BLOCK
! 
!  RESOURCE BLOCKS REPRESENT RESOURCES FOR WHICH THERE ARE LOCKS OUTSTANDING.
!  EACH RESOURCE BLOCK MAY HAVE ONE OR MORE LOCK BLOCKS (LKB) QUEUED TO IT.
! -
literal RSB$M_DIRENTRY = 1;
literal RSB$M_VALINVLD = 2;
literal RSB$M_DIR_RQD = 4;
literal RSB$M_RM_PEND = 8;
literal RSB$M_RM_IP = 16;
literal RSB$M_RM_ACCEPT = 32;
literal RSB$M_RM_RBLD = 64;
literal RSB$M_RM_WAIT = 128;
literal RSB$M_RM_DEFLECT = 256;
literal RSB$M_DIR_IP = 512;
literal RSB$M_RBLD_IP = 1024;
literal RSB$M_RBLD_RQD = 2048;
literal RSB$M_RBLD_ACT = 4096;
literal RSB$M_CHK_BTR = 8192;
literal RSB$K_LENGTH = 112;             ! LENGTH OF FIXED PART OF RSB 
literal RSB$C_LENGTH = 112;             ! LENGTH OF FIXED PART OF RSB 
literal RSB$K_MAXLEN = 31;              ! MAXIMUM LENGTH OF RESOURCE NAME 
literal RSB$S_RSBDEF = 112;
macro RSB$L_HSHCHN = 0,0,32,0 %;        ! HASH CHAIN 
macro RSB$L_HSHCHNBK = 4,0,32,0 %;      ! HASH CHAIN BACK POINTER 
macro RSB$W_SIZE = 8,0,16,0 %;          ! SIZE OF RSB 
macro RSB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE 
macro RSB$B_DEPTH = 11,0,8,0 %;         ! DEPTH IN TREE 
macro RSB$B_GGMODE = 12,0,8,0 %;        ! GROUP GRANT MODE 
macro RSB$B_CGMODE = 13,0,8,0 %;        ! CONVERSION GRANT MODE 
macro RSB$W_STATUS = 14,0,16,0 %;       ! STATUS
macro RSB$V_DIRENTRY = 14,0,1,0 %;      !  ENTERED IN DIR. DURING FAILOVER
macro RSB$V_VALINVLD = 14,1,1,0 %;      !  VALUE BLOCK INVALID
macro RSB$V_DIR_RQD = 14,2,1,0 %;       !  DIRECTORY ENTRY REQUIRED
macro RSB$V_RM_PEND = 14,3,1,0 %;       !  RESOURCE REMASTER OP PENDING
macro RSB$V_RM_IP = 14,4,1,0 %;         !  RESOURCE BEING REMASTERED
macro RSB$V_RM_ACCEPT = 14,5,1,0 %;     !  NEW MASTER ACCEPTS
macro RSB$V_RM_RBLD = 14,6,1,0 %;       !  ALWAYS REBUILD TREE
macro RSB$V_RM_WAIT = 14,7,1,0 %;       !  BLOCK LOCAL ACTIVITY
macro RSB$V_RM_DEFLECT = 14,8,1,0 %;    !  DEFLECT REMOTE INTEREST
macro RSB$V_DIR_IP = 14,9,1,0 %;        !  DIRECTORY ENTRY BEING CREATED
macro RSB$V_RBLD_IP = 14,10,1,0 %;      !  REBUILD IN PROGRESS
macro RSB$V_RBLD_RQD = 14,11,1,0 %;     !  REBUILD REQUIRED FOR THIS TREE
macro RSB$V_RBLD_ACT = 14,12,1,0 %;     !  LOCK RBLD ACTIVE FOR TREE
macro RSB$V_CHK_BTR = 14,13,1,0 %;      !  CHECK FOR BETTER MASTER
macro RSB$L_GRQFL = 16,0,32,0 %;        ! GRANTED QUEUE FORWARD LINK 
macro RSB$L_GRQBL = 20,0,32,0 %;        ! GRANTED QUEUE BACKWARD LINK 
macro RSB$L_CVTQFL = 24,0,32,0 %;       ! CONVERSION QUEUE FORWARD LINK 
macro RSB$L_CVTQBL = 28,0,32,0 %;       ! CONVERSION QUEUE BACKWARD LINK 
macro RSB$L_WTQFL = 32,0,32,0 %;        ! WAIT QUEUE FORWARD LINK 
macro RSB$L_WTQBL = 36,0,32,0 %;        ! WAIT QUEUE BACKWARD LINK 
macro RSB$Q_VALBLK = 40,0,0,0 %;
literal RSB$S_VALBLK = 8;               ! VALUE BLOCK 
macro RSB$L_CSID = 56,0,32,0 %;         ! SYSTEM ID OF MASTER SYS.
macro RSB$L_RRSFL = 60,0,32,0 %;        ! ROOT LIST FORWARD LINK 
macro RSB$L_RRSBL = 64,0,32,0 %;        ! ROOT LIST BACKWARD LINK 
macro RSB$L_SRSFL = 68,0,32,0 %;        ! TREE LIST FORWARD LINK 
macro RSB$L_SRSBL = 72,0,32,0 %;        ! TREE LIST BACKWARD LINK 
macro RSB$L_RM_CSID = 76,0,32,0 %;      ! PENDNG REMASTER CSID
macro RSB$L_RTRSB = 80,0,32,0 %;        ! POINTER TO ROOT RSB
macro RSB$L_CLURCB = 84,0,32,0 %;       ! REMASTER CONTROL BLOCK
macro RSB$W_ACTIVITY = 88,0,16,0 %;     ! RESOURCE ACTIVITY COUNTER
macro RSB$W_LCKCNT = 90,0,16,0 %;       ! COUNT OF LOCKS ON RESOURCE
macro RSB$L_VALSEQNUM = 92,0,32,0 %;    ! VALUE BLOCK SEQ. NUMBER
macro RSB$W_REFCNT = 96,0,16,0 %;       ! SUB RSB REFERENCE COUNT 
macro RSB$W_BLKASTCNT = 98,0,16,0 %;    ! BLOCKING AST COUNT 
macro RSB$W_HASHVAL = 100,0,16,0 %;     ! HASH VALUE
macro RSB$W_RQSEQNM = 102,0,16,0 %;     ! REQUEST SEQUENCE NUMBER
macro RSB$L_PARENT = 104,0,32,0 %;      ! ADDRESS OF PARENT RSB 
macro RSB$W_GROUP = 108,0,16,0 %;       ! GROUP NUMBER 
macro RSB$B_RMOD = 110,0,8,0 %;         ! ACCESS MODE OF RESOURCE 
macro RSB$B_RSNLEN = 111,0,8,0 %;       ! RESOURCE NAME LENGTH 
macro RSB$T_RESNAM = 112,0,0,0 %;       ! START OF RESOURCE NAME 
 
!*** MODULE $RSNDEF ***
! +
!  RESOURCE NAME DEFINITIONS
! -
! 0 ORIGIN IN INCREMENTS OF 1 
literal RSN$_ASTWAIT = 1;               ! WAIT FOR AST EVENT, CHANNEL INTERLOCK 
literal RSN$_MAILBOX = 2;               ! MAILBOX SPACE 
literal RSN$_NPDYNMEM = 3;              ! NON-PAGED DYNAMIC MEMORY 
literal RSN$_PGFILE = 4;                ! PAGING FILE SPACE 
literal RSN$_PGDYNMEM = 5;              ! PAGED DYNAMIC MEMORY 
literal RSN$_BRKTHRU = 6;               ! TERMINAL BROADCAST 
literal RSN$_IACLOCK = 7;               ! IMAGE ACTIVATION INTERLOCK 
literal RSN$_JQUOTA = 8;                ! JOB POOLED QUOTA 
literal RSN$_LOCKID = 9;                ! LOCKIDS 
literal RSN$_SWPFILE = 10;              ! SWAPPING FILE SPACE 
literal RSN$_MPLEMPTY = 11;             ! MODIFIED PAGE LIST EMPTY 
literal RSN$_MPWBUSY = 12;              ! MODIFIED PAGE WRITER BUSY 
literal RSN$_SCS = 13;                  ! SYSTEM COMMUNICATION
literal RSN$_CLUSTRAN = 14;             ! CLUSTER STATE TRANSITION
literal RSN$_CPUCAP = 15;               ! CPU Capability
literal RSN$_CLUSRV = 16;               ! CLUSTER SERVER
literal RSN$_SNAPSHOT = 17;             ! 
literal RSN$_MAX = 18;                  ! MAXIMUM RESOURCE NUMBER 
 
!*** MODULE $RVTDEF ***
! +
!  RVT - RELATIVE VOLUME TABLE
! 
!  A RELATIVE VOLUME MAPPING TABLE IS REQUIRED FOR EVERY MULTIVOLUME
!  STRUCTURE THAT IS MOUNTED IN A SYSTEM.
! -
literal RVT$K_LENGTH = 68;              !  LENGTH OF STANDARD RVT 
literal RVT$C_LENGTH = 68;              !  LENGTH OF STANDARD RVT 
literal RVT$C_MINSIZE = 18;             !  MINIMUM NUMBER OF ENTRIES TO ALLOCATE 
literal RVT$S_RVTDEF = 72;
macro RVT$L_STRUCLKID = 0,0,32,0 %;     !  LOCK ID OF VOLUME SET LOCK.
macro RVT$W_REFC = 4,0,16,0 %;          !  REFERENCE COUNT 
macro RVT$W_ACTIVITY = 6,0,16,0 %;      !  ACTIVITY COUNT/FLAG
macro RVT$W_SIZE = 8,0,16,0 %;          !  SIZE OF RVT IN BYTES 
macro RVT$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE OF RVT 
macro RVT$B_NVOLS = 11,0,8,0 %;         !  NUMBER OF VOLUMES IN SET 
macro RVT$T_STRUCNAME = 12,0,0,0 %;
literal RVT$S_STRUCNAME = 12;           !  STRUCTURE (VOLUME SET) NAME 
macro RVT$T_VLSLCKNAM = 24,0,0,0 %;
literal RVT$S_VLSLCKNAM = 12;           !  Volume set lock name.
macro RVT$L_BLOCKID = 36,0,32,0 %;      !  Blocking lock id.
macro RVT$B_ACB = 40,0,0,0 %;
literal RVT$S_ACB = 28;                 !  ACB for blocking ast.
macro RVT$L_UCBLST = 68,0,32,0 %;       !  ADDRESSES OF THE RESPECTIVE UCB'S 
 
!*** MODULE $SBDEF ***
! +
!  SB - SCS SYSTEM BLOCK
! 
!  THE SB HAS INFORMATION ABOUT KNOWN SYSTEMS IN A CPU CLUSTER.
! -
literal SB$K_LENGTH = 100;              ! LENGTH OF SB 
literal SB$C_LENGTH = 100;              ! LENGTH OF SB 
literal SB$S_SBDEF = 100;
macro SB$L_FLINK = 0,0,32,0 %;          ! FWD LINK TO NEXT SB 
macro SB$L_BLINK = 4,0,32,0 %;          ! BACK LINK TO PREVIOUS SB 
macro SB$W_SIZE = 8,0,16,0 %;           ! STRUCTURE SIZE IN BYTES 
macro SB$B_TYPE = 10,0,8,0 %;           ! SCS STRUCTURE TYPE 
macro SB$B_SUBTYP = 11,0,8,0 %;         ! SCS STRUCT SUBTYPE FOR SB 
macro SB$L_PBFL = 12,0,32,0 %;          ! LINK TO NEXT PATH BLOCK 
macro SB$L_PBBL = 16,0,32,0 %;          ! LINK TO PREVIOUS PATH BLOCK 
macro SB$L_PBCONNX = 20,0,32,0 %;       ! ADDR OF NEXT PB TO USE FOR 
!  A CONNECTION
macro SB$B_SYSTEMID = 24,0,0,0 %;
literal SB$S_SYSTEMID = 6;              ! SYSTEM ID 
macro SB$W_MAXDG = 32,0,16,0 %;         ! MAXIMUM DATAGRAM SIZE 
macro SB$W_MAXMSG = 34,0,16,0 %;        ! MAXIMUM MESSAGE SIZE 
macro SB$T_SWTYPE = 36,0,32,0 %;
literal SB$S_SWTYPE = 4;                ! SOFTWARE TYPE, 1-4 CHAR 
macro SB$T_SWVERS = 40,0,32,0 %;
literal SB$S_SWVERS = 4;                ! SOFTWARE VERSION, 1-4 CHAR 
macro SB$Q_SWINCARN = 44,0,0,0 %;
literal SB$S_SWINCARN = 8;              ! SOFTWARE INCARNATION # 
macro SB$T_HWTYPE = 52,0,32,0 %;
literal SB$S_HWTYPE = 4;                ! HW TYPE; 1-4 CHAR, BLANK FILL
macro SB$B_HWVERS = 56,0,0,0 %;
literal SB$S_HWVERS = 12;               ! HW VERSION #
macro SB$T_NODENAME = 68,0,0,0 %;
literal SB$S_NODENAME = 16;             ! SCS NODENAME, COUNTED ASCII STRING
macro SB$L_DDB = 84,0,32,0 %;           ! DDB LIST HEAD
macro SB$W_TIMEOUT = 88,0,16,1 %;       ! SCA PROCESS POLLER, WAITING TIME REMAINING
macro SB$B_ENBMSK = 90,0,16,0 %;
literal SB$S_ENBMSK = 2;                ! SCA PROCESS POLLER, PROCESS ENABLE MASK
macro SB$L_CSB = 92,0,32,0 %;           ! LINK TO NEWEST CLUSTER SYSTEM BLOCK
macro SB$L_PORT_MAP = 96,0,32,0 %;      !  (TYC 13-Feb-89) LOAD SHARING PORT BIT MAP
 
!*** MODULE $SBNBDEF ***
! +
!  SBNB - SCA LOAD SHARING NAME BLOCK
! 
!  THIS DATA STRUCTURE DESCRIBES A PROCESS NAME KNOWN TO THE SCA
!  DYNAMIC LOAD SHARING CODE. 
! -
literal SBNB$K_LENGTH = 36;
literal SBNB$C_LENGTH = 36;
literal SBNB$S_SBNBDEF = 36;
macro SBNB$L_FLINK = 0,0,32,0 %;        ! FWD LINK 
macro SBNB$L_BLINK = 4,0,32,0 %;        ! BCK LINK 
macro SBNB$W_SIZE = 8,0,16,0 %;         ! STRUCTURE SIZE IN BYTES 
macro SBNB$B_TYPE = 10,0,8,0 %;         ! SCS STRUCTURE TYPE 
macro SBNB$B_SUBTYP = 11,0,8,0 %;       ! SCS STRUCTURE SUBTYPE FOR SBNB
macro SBNB$B_PROCNAM = 12,0,0,0 %;
literal SBNB$S_PROCNAM = 16;            ! ASCII STRING FOR PROCESS NAME 
macro SBNB$W_LOCAL_INDEX = 28,0,16,0 %; ! BIT ASSIGNED TO THIS PROCESS NAME
macro SBNB$L_DISCON_COUNT = 30,0,32,0 %; ! (TYC 13-Feb-89) # OF DISCONNECT 
!  DUE TO LOAD SHARING ACTIVITY
 
!*** MODULE $SBODEF ***
! +
!  SBO - SCS CONFIG_SYS OUTPUT ARRAY FORMAT
! 
!  THE OUTPUT ARRAY RETURNED FROM CALL TO SCS$CONFIG_SYS.  DATA IS MOSTLY COPIED FROM 
!  THE SYSTEM BLOCK (SB) BEING LOOKED UP.
! -
literal SBO$C_VC1 = 60;                 ! START OF 12 BYTE SPECIFIER OF
literal SBO$K_VC1 = 60;                 !  1ST VC (PATH BLK) TO SYSTEM
literal SBO$K_LENGTH = 80;              ! LENGTH OF SBO ARRAY
literal SBO$C_LENGTH = 80;              ! LENGTH OF SBO ARRAY
literal SBO$S_SBODEF = 80;
macro SBO$B_SYSTEMID = 0,0,0,0 %;
literal SBO$S_SYSTEMID = 6;             ! SYSTEM ID
macro SBO$W_MAXDG = 8,0,16,0 %;         ! MAXIMUM DG SIZE
macro SBO$W_MAXMSG = 10,0,16,0 %;       ! MAXIMUM MSG SIZE
macro SBO$T_SWTYPE = 12,0,32,0 %;
literal SBO$S_SWTYPE = 4;               ! SW TYPE, 1-4 CHAR, BLNK FILL
macro SBO$T_SWVERS = 16,0,32,0 %;
literal SBO$S_SWVERS = 4;               ! SW VERSION, 1-4 CHAR, BLNK FILL
macro SBO$Q_SWINCARN = 20,0,0,0 %;
literal SBO$S_SWINCARN = 8;             ! SW INCARNATION #
macro SBO$T_HWTYPE = 28,0,32,0 %;
literal SBO$S_HWTYPE = 4;               ! HW TYPE, 1-4 CHAR BLNK FILL
macro SBO$B_HWVERS = 32,0,0,0 %;
literal SBO$S_HWVERS = 12;              ! HW VERSION, 1-4 CHAR BLNK FILL
macro SBO$T_NODENAME = 44,0,0,0 %;
literal SBO$S_NODENAME = 16;            ! NODE NAME, COUNTED ASCII STRING
macro SBO$B_RSTATION1 = 60,0,0,0 %;
literal SBO$S_RSTATION1 = 6;            ! REMOTE STATION OF 1ST VC
macro SBO$T_LPORT1 = 68,0,32,0 %;
literal SBO$S_LPORT1 = 4;               ! LOCAL PORT NAME OF 1ST VC
macro SBO$B_NXT_SYSID = 72,0,0,0 %;
literal SBO$S_NXT_SYSID = 6;            ! ID OF NEXT SYSTEM IN CONFIGURATION
 
!*** MODULE $SCDRPDEF ***
! +
!  SCDRP - SCSI CLASS DRIVER I/O REQUEST PACKET
! 
!  This structure contains SCSI class driver request packet, which is used
!  to pass parameters between the SCSI class and port drivers. In addition,
!  the drivers use it to save information temporarily during the execution
!  of a SCSI command.
!                                               
!  Note: unlike the class driver request packet (SCDRP), this structure does
!  NOT contain an IRP accessed at negative offsets from the base of the packet.
!  Instead, several IRP fields used in the SCDRP are located at positive offsets
!  from the base.
! 
!  ***NOTE:**** IF AN INCOMPATIBLE CHANGE IS MADE TO THIS STRUCTURE BUMP
!               THE VERSION NUMBER OF THIS STRUCTURE.
!                                                                       
! -
literal SCDRP$C_VERSION = 2;            ! COMPATIBLE VERSION NUMBER.
literal SCDRP$K_SCDRPBASE = 0;
literal SCDRP$C_SCDRPBASE = 0;
literal SCDRP$M_S0BUF = 1;
literal SCDRP$M_BUFFER_MAPPED = 2;
literal SCDRP$M_DISK_SPUN_UP = 4;
literal SCDRP$M_LOCK = 8;
literal SCDRP$M_IDENTIFY = 1;
literal SCDRP$M_SYNC_OUT = 2;
literal SCDRP$M_BUS_DEVICE_RESET = 4;
literal SCDRP$M_MESSAGE_PARITY_ERROR = 8;
literal SCDRP$M_ID_ERROR = 16;
literal SCDRP$M_ABORT = 32;
literal SCDRP$M_NOP = 64;
literal SCDRP$M_MESSAGE_REJECT = 128;
literal SCDRP$M_SYNC_IN = 1;
literal SCDRP$K_SCSI_LEN = 368;
literal SCDRP$C_SCSI_LEN = 368;
literal SCDRP$K_LENGTH = 412;
literal SCDRP$C_LENGTH = 412;
literal SCDRP$S_SCDRPDEF = 412;
macro SCDRP$L_FQFL = 0,0,32,0 %;        !  Fork Queue FLINK 
macro SCDRP$L_FQBL = 4,0,32,0 %;        !  Fork Queue Blink 
macro SCDRP$W_SCDRPSIZE = 8,0,16,0 %;   !  Size field for positive section only 
macro SCDRP$B_CD_TYPE = 10,0,8,0 %;     !  Type, always of interest 
macro SCDRP$B_FLCK = 11,0,8,0 %;        !  Fork lock
macro SCDRP$B_FIPL = 11,0,8,0 %;        !  Fork IPL
macro SCDRP$L_FPC = 12,0,32,0 %;        !  Fork PC 
macro SCDRP$L_FR3 = 16,0,32,0 %;        !  Fork R3 
macro SCDRP$L_FR4 = 20,0,32,0 %;        !  Fork R4 
!  Thie following field must follow immediately after the fork block for use
!  by MKDRIVER.
macro SCDRP$L_PORT_UCB = 24,0,32,0 %;   !  Saved UCB address for REQCHAN
!  Fields that came from IPR portion of the old SCDRP.
macro SCDRP$L_UCB = 28,0,32,0 %;        ! ADDRESS OF DEVICE UCB 
macro SCDRP$W_FUNC = 32,0,16,0 %;       ! I/O FUNCTION CODE AND MODIFIERS 
macro SCDRP$W_STS = 34,0,16,0 %;        ! REQUEST STATUS 
macro SCDRP$L_SVAPTE = 36,0,32,0 %;     ! SYSTEM VIRTUAL ADDRESS OF FIRST PTE 
macro SCDRP$W_BOFF = 40,0,16,0 %;       ! BYTE OFFSET IN FIRST PAGE 
macro SCDRP$W_FILL_1 = 42,0,16,0 %;     ! ROUND UP TO NEXT LONGWORD 
macro SCDRP$L_BCNT = 44,0,32,0 %;       ! BYTE COUNT OF TRANSFER 
macro SCDRP$W_BCNT = 44,0,16,0 %;       ! OLD WORD DEFINITION FOR COMPATIBILITY 
macro SCDRP$L_MEDIA = 48,0,32,0 %;      ! MEDIA ADDRESS 
macro SCDRP$L_ABCNT = 52,0,32,0 %;      ! ACCUMULATED BYTES TRANSFERED 
macro SCDRP$L_SAVD_RTN = 56,0,32,0 %;   !  Saved return address from level 1 JSB 
macro SCDRP$L_MSG_BUF = 60,0,32,0 %;    !  Address of allocated MSCP buffer 
macro SCDRP$L_RSPID = 64,0,32,0 %;      !  Allocated Request ID 
macro SCDRP$L_CDT = 68,0,32,0 %;        !  Address of Connection Descriptor Table 
macro SCDRP$L_RWCPTR = 72,0,32,0 %;     !  RWAITCNT pointer 
! 	SCDRP extensions
! 	SCSI port/class driver extension
macro SCDRP$L_IRP = 76,0,32,0 %;        !  Address of IRP
macro SCDRP$L_SVA_USER = 80,0,32,0 %;   !  S0 address of double mapped user buffer
macro SCDRP$L_CMD_BUF = 84,0,32,0 %;    !  Address of SCSI command buffer
macro SCDRP$L_CMD_BUF_LEN = 88,0,32,0 %; !  Length of SCSI command buffer
macro SCDRP$L_CMD_PTR = 92,0,32,0 %;    !  Address of SCSI command
macro SCDRP$L_STS_PTR = 96,0,32,0 %;    !  Address of SCSI status byte
macro SCDRP$L_SCSI_FLAGS = 100,0,32,0 %; !  SCSI flags
macro SCDRP$V_S0BUF = 100,0,1,0 %;      !  Buffer allocated by class driver from S0 space
macro SCDRP$V_BUFFER_MAPPED = 100,1,1,0 %; !  Buffer (S0 or user) has been mapped */
macro SCDRP$V_DISK_SPUN_UP = 100,2,1,0 %; !  Start unit has been issued
macro SCDRP$V_LOCK = 100,3,1,0 %;       !  Fork block in use flag
macro SCDRP$L_DATACHECK = 104,0,32,0 %; !  Address of buffer for datacheck operations
macro SCDRP$L_SCSI_STK_PTR = 108,0,32,0 %; !  Class driver return addr stack ptr
macro SCDRP$L_SCSI_STK = 112,0,0,1 %;
literal SCDRP$S_SCSI_STK = 32;          !  Class driver return addr stack
macro SCDRP$L_CL_RETRY = 144,0,32,0 %;  !  Retry count
macro SCDRP$L_DMA_TIMEOUT = 148,0,32,0 %; !  Time in seconds for a DMA timeout.
macro SCDRP$L_DISCON_TIMEOUT = 152,0,32,0 %; !  Time in seconds for a disconnect to timeout.
! 	SCSI PORT driver extension
macro SCDRP$W_PAD_BCNT = 156,0,16,0 %;  !  Number of bytes to pad user buffer with
macro SCDRP$L_PAD_BCNT = 156,0,32,0 %;  !  Number of bytes to pad user buffer with
macro SCDRP$B_TQE = 160,0,0,0 %;
literal SCDRP$S_TQE = 52;               !  Timer queue entry
macro SCDRP$L_TQE_DELAY = 212,0,32,0 %; !  Delay time for next TQE delay.
macro SCDRP$L_SVA_DMA = 216,0,32,0 %;   !  S0 address of chunk of 128KB DMA buffer
macro SCDRP$L_SVA_CMD = 220,0,32,0 %;   !  S0 address of chunk of 128KB DMA buffer for cmd buf
macro SCDRP$W_MAPREG = 224,0,16,0 %;    !  Base map register allocated
macro SCDRP$W_CMD_MAPREG = 226,0,16,0 %; !  Base map register allocated for cmd buf
macro SCDRP$W_NUMREG = 228,0,16,0 %;    !  Number of map registers allocated
macro SCDRP$W_CMD_NUMREG = 230,0,16,0 %; !  Number of map registers allocated for command
macro SCDRP$L_SVA_SPTE = 232,0,32,0 %;  !  SVA of SPTE mapping user buffer.
macro SCDRP$L_SCSIMSGO_PTR = 236,0,32,0 %; !  SCSI OUTPUT MSG PTR, REQUIRED FOR THE SII PORT
macro SCDRP$L_SCSIMSGI_PTR = 240,0,32,0 %; !  SCSI INPUT MSG PTR, REQUIRED FOR THE SII PORT
macro SCDRP$B_SCSIMSGO_BUF = 244,0,0,1 %;
literal SCDRP$S_SCSIMSGO_BUF = 6;       !  SCSI OUTPUT MSG buffer of port.
macro SCDRP$B_SCSIMSGI_BUF = 250,0,0,1 %;
literal SCDRP$S_SCSIMSGI_BUF = 6;       !  SCSI INPUT MSG buffer of port.
macro SCDRP$L_MSGO_PENDING = 256,0,32,0 %; !  Bit set if 
macro SCDRP$V_IDENTIFY = 256,0,1,0 %;   ! corresponding message 
macro SCDRP$V_SYNC_OUT = 256,1,1,0 %;   ! is to be sent.
macro SCDRP$V_BUS_DEVICE_RESET = 256,2,1,0 %;
macro SCDRP$V_MESSAGE_PARITY_ERROR = 256,3,1,0 %;
macro SCDRP$V_ID_ERROR = 256,4,1,0 %;
macro SCDRP$V_ABORT = 256,5,1,0 %;
macro SCDRP$V_NOP = 256,6,1,0 %;
macro SCDRP$V_MESSAGE_REJECT = 256,7,1,0 %;
macro SCDRP$L_MSGI_PENDING = 260,0,32,0 %; !  Bit set if 
macro SCDRP$V_SYNC_IN = 260,0,1,0 %;    ! corresponding message 
! is expected.
macro SCDRP$B_LAST_MSGO = 264,0,8,0 %;  !  Last message sent
macro SCDRP$B_PADIT = 265,0,24,1 %;
literal SCDRP$S_PADIT = 3;              !  longword align
macro SCDRP$L_DATA_PTR = 268,0,32,0 %;  !  Current data pointer address.
macro SCDRP$L_TRANS_CNT = 272,0,32,0 %; !  Count of the # of bytes of users data transfered
macro SCDRP$L_SAVE_DATA_CNT = 276,0,32,0 %; !  Running 2's complement count of bytes to be transfered
macro SCDRP$L_SAVE_DATA_PTR = 280,0,32,0 %; !  Running data pointer.
macro SCDRP$L_SDP_DATA_CNT = 284,0,32,0 %; !  Storage for SDP
macro SCDRP$L_SDP_DATA_PTR = 288,0,32,0 %; !  Storage for SDP
macro SCDRP$L_DUETIME = 292,0,32,0 %;   !  Timeout time for disconnected IO.
macro SCDRP$L_TIMEOUT_ADDR = 296,0,32,0 %; !  Address of timeout routine if an IO times out.
macro SCDRP$W_CMD_BCNT = 300,0,16,0 %;  !  temporary storage for cmd bytecnt
macro SCDRP$W_BUSY_RETRY_CNT = 302,0,16,0 %; !  Number retries left, for bus busy.
macro SCDRP$W_ARB_RETRY_CNT = 304,0,16,0 %; !  Number of retries left, for arbitration failures.
macro SCDRP$W_SEL_RETRY_CNT = 306,0,16,0 %; !  Number of retries left, for selection failures.
macro SCDRP$W_CMD_RETRY_CNT = 308,0,16,0 %; !  Number of times the port will retry a command.
macro SCDRP$W_SEL_TQE_RETRY_CNT = 310,0,16,0 %; !  Number of TQE retries left, for selection failures.
macro SCDRP$L_SAVER3 = 312,0,32,0 %;    !  Safe place to save register. 
macro SCDRP$L_SAVER6 = 316,0,32,0 %;    !  Safe place to save register. 
macro SCDRP$L_SAVER7 = 320,0,32,0 %;    !  Safe place to save register. 
macro SCDRP$L_SAVER3CL = 324,0,32,0 %;  !  Safe place to save the class drivers R3.
macro SCDRP$L_SAVEPCCL = 328,0,32,0 %;  !  Safe place to save the class drivers return PC.
macro SCDRP$L_ABORTPCCL = 332,0,32,0 %; !  Save the class drivers return PC during cancel operations.
macro SCDRP$L_PO_STK_PTR = 336,0,32,0 %; !  Port driver return addr stack ptr
macro SCDRP$L_PO_STK = 340,0,0,1 %;
literal SCDRP$S_PO_STK = 24;            !  Port driver return addr stack
macro SCDRP$L_TAG = 364,0,32,0 %;       !  Tag field for queued commands
macro SCDRP$L_RSVD_LONG = 368,0,0,1 %;
literal SCDRP$S_RSVD_LONG = 44;         !  Reserved space.
 
!*** MODULE $SCDTDEF ***
! +
!  SCDT - SCSI CONNECTION DESCRIPTOR TABLE
! 
!  ONE SCDT IS USED PER SCSI CONNECTION. A CONNECTION IS A LOGICAL LINK BETWEEN
!  A CLASS DRIVER UCB AND A DEVICE ON THE SCSI BUS. THE SCDT CONTAINS THE 
!  ENTIRE CONTEXT OF A CONNECTION BETWEEN A CLASS DRIVER (SYSAP) AND A 
!  DEVICE ON THE SCSI BUS. 
!  SCDT'S ARE CREATED BY PORT DRIVERS WHEN CLASS DRIVERS CALL PORT DRIVER'S
!  CONNECT ENTRY POINT.
! 
!  THE CLASS DRIVER HAS NO ACCESS TO THIS DATA STRUCTURE. THE SCDT IS USED 
!  EXCLUSIVELY BY THE PORT DRIVER.
! 
!  ***NOTE:**** IF AN INCOMPATIBLE CHANGE IS MADE TO THIS STRUCTURE BUMP
!               THE VERSION NUMBER OF THIS STRUCTURE.
!                                                                       
! -         
literal SCDT$C_VERSION = 1;             ! COMPATIBLE VERSION NUMBER.
literal SCDT$M_BSY = 1;
literal SCDT$M_ABORT_PND = 2;
literal SCDT$M_ABORT_CMPL = 4;
literal SCDT$M_ABORT_INPROG = 8;
literal SCDT$M_ABORT_RESEL = 16;
literal SCDT$M_PND_RESEL = 32;
literal SCDT$M_DSCN = 64;
literal SCDT$M_TMODSCN = 128;
literal SCDT$C_CLOSED = 0;              !  CLOSED   
literal SCDT$C_OPEN = 1;                !  OPEN  
literal SCDT$C_FAIL = 2;                !  CONNECT FAILED 
!  
literal SCDT$M_DATAOUT = 1;
literal SCDT$M_DATAIN = 2;
literal SCDT$M_CMD = 4;
literal SCDT$M_STS = 8;
literal SCDT$M_INV1 = 16;
literal SCDT$M_INV2 = 32;
literal SCDT$M_MSGOUT = 64;
literal SCDT$M_MSGIN = 128;
literal SCDT$M_ARB = 256;
literal SCDT$M_SEL = 512;
literal SCDT$M_RESEL = 1024;
literal SCDT$M_DISCON = 2048;
literal SCDT$M_CMD_CMPL = 4096;
literal SCDT$M_TMODISCON = 8192;
literal SCDT$M_FREE = 16384;
literal SCDT$M_PARERR = 1;
literal SCDT$M_BSYERR = 2;
literal SCDT$M_MISPHS = 4;
literal SCDT$M_BADPHS = 8;
literal SCDT$M_RST = 16;
literal SCDT$M_CTLERR = 32;
literal SCDT$M_BUSERR = 64;
literal SCDT$M_ABORT = 128;
literal SCDT$M_MSGERR = 256;
literal SCDT$M_ENA_DISCON = 1;
literal SCDT$M_DIS_RETRY = 2;
literal SCDT$M_TARGET_MODE = 4;
literal SCDT$C_LENGTH = 244;            ! LENGTH OF CDT 
literal SCDT$S_SCDTDEF = 244;
macro SCDT$L_FLINK = 0,0,32,0 %;        ! LINK TO NEXT SCDT
macro SCDT$W_SIZE = 4,0,16,0 %;         ! STRUCTURE SIZE IN BYTES 
macro SCDT$B_TYPE = 6,0,8,0 %;          ! SCS STRUCTURE TYPE 
macro SCDT$B_SUBTYP = 7,0,8,0 %;        ! SCSI STRUCT SUBTYPE FOR CDT 
macro SCDT$W_RSRV1 = 8,0,16,0 %;        ! RESERVED, WORD.
macro SCDT$B_RSRV2 = 10,0,8,0 %;        ! RESERVED, BYTE.
macro SCDT$B_FLCK = 11,0,8,0 %;         ! FORK LOCK INDEX 
macro SCDT$L_FPC = 12,0,32,0 %;         ! SAVED FORK PROCESS PC 
macro SCDT$L_FR3 = 16,0,32,0 %;         ! SAVED FORK PROCESS R3
macro SCDT$L_FR4 = 20,0,32,0 %;         ! SAVED FORK PROCESS R4 
macro SCDT$L_STS = 24,0,32,0 %;         ! CONNECTION STATUS
macro SCDT$V_BSY = 24,0,1,0 %;          ! CONNECTION BUSY
macro SCDT$V_ABORT_PND = 24,1,1,0 %;    ! ABORT PENDING ON CONNECTION.
macro SCDT$V_ABORT_CMPL = 24,2,1,0 %;   ! ABORT COMPLETED ON CONNECTION.
macro SCDT$V_ABORT_INPROG = 24,3,1,0 %; ! ABORT IS IN PROGRESS.
macro SCDT$V_ABORT_RESEL = 24,4,1,0 %;  ! PORT HAS BEEN RESELECTED WHILE ABORT WAS IN PROGRESS.
macro SCDT$V_PND_RESEL = 24,5,1,0 %;    ! RESELECTION INTERRUPT PENDING.
macro SCDT$V_DSCN = 24,6,1,0 %;         ! CONNECTION IS DISCONNECTED.
macro SCDT$V_TMODSCN = 24,7,1,0 %;      ! CONNECTION TIMED OUT-
macro SCDT$W_SCDT_TYPE = 28,0,16,0 %;   ! TYPE OF SCDT  
macro SCDT$W_STATE = 30,0,16,0 %;       ! CONNECTION STATE 
macro SCDT$L_SPDT = 32,0,32,0 %;        ! ADDR OF ASSOC PORT DESC TABLE 
macro SCDT$L_SCSI_PORT_ID = 36,0,32,0 %; !  SCSI PORT ID.
macro SCDT$L_SCSI_BUS_ID = 40,0,32,0 %; !  SCSI BUS ID.
macro SCDT$L_SCSI_LUN = 44,0,32,0 %;    !  SCSI DEVICE LUN.
macro SCDT$L_AUXSTRUC = 48,0,32,0 %;    ! ADDR OF AUX DATA STRUCTURE 
macro SCDT$L_SCDTLST = 52,0,32,0 %;     ! LINK FOR SCDT LIST FROM SPDT
macro SCDT$L_SCDRP_ADDR = 56,0,32,0 %;  ! ADDR OF CL DRV SCDRP.
macro SCDT$L_BUS_PHASE = 60,0,32,0 %;   !  CURRENT BUS PHASE.
macro SCDT$V_DATAOUT = 60,0,1,0 %;      !  DATAIN Phase.
macro SCDT$V_DATAIN = 60,1,1,0 %;       !  DATAIN Phase.
macro SCDT$V_CMD = 60,2,1,0 %;          !  Command Phase.
macro SCDT$V_STS = 60,3,1,0 %;          !  Status Phase.
macro SCDT$V_INV1 = 60,4,1,0 %;         !  Invalid Phase 1.           
macro SCDT$V_INV2 = 60,5,1,0 %;         !  Invalid Phase 1.
macro SCDT$V_MSGOUT = 60,6,1,0 %;       !  MESSAGEOUT Phase.
macro SCDT$V_MSGIN = 60,7,1,0 %;        !  MESSAGEIN Phase.
macro SCDT$V_ARB = 60,8,1,0 %;          !  Arbitration Phase.  
macro SCDT$V_SEL = 60,9,1,0 %;          !  Selection Phase.
macro SCDT$V_RESEL = 60,10,1,0 %;       !  Reselection Phase.
macro SCDT$V_DISCON = 60,11,1,0 %;      !  Disconnect seen.    
macro SCDT$V_CMD_CMPL = 60,12,1,0 %;    !  Command complete received. 
macro SCDT$V_TMODISCON = 60,13,1,0 %;   !  Disconnect operation timed out.
macro SCDT$V_FREE = 60,14,1,0 %;        !  The bus went free.
macro SCDT$L_OLD_PHASES = 64,0,32,0 %;  !  LONGWORD USED TO TRACK BUS PHASES.
macro SCDT$W_PHASES = 68,0,0,1 %;
literal SCDT$S_PHASES = 44;             !  TRACK BUS PHASES
macro SCDT$L_PHASE_STK_PTR = 112,0,32,0 %; !  ADDRESS OF TOP OF PHASE STK.
macro SCDT$L_PHASE_END_STK_PTR = 116,0,32,0 %; !  ADDRESS OF END OF PHASE STK.
macro SCDT$L_EVENTS_SEEN = 120,0,32,0 %; !  MASK OF EVENTS SEEN.
macro SCDT$V_PARERR = 120,0,1,0 %;      !  PARITY ERROR OCCURED.
macro SCDT$V_BSYERR = 120,1,1,0 %;      !  LOST BUSY DURING COMMAND.
macro SCDT$V_MISPHS = 120,2,1,0 %;      !  MISSING BUS PHASE DETECTED.
macro SCDT$V_BADPHS = 120,3,1,0 %;      !  A BAD PHASE TRANSITION OCCURED.
macro SCDT$V_RST = 120,4,1,0 %;         !  THE BUS HAS BEEN RESET DURING THIS command.
macro SCDT$V_CTLERR = 120,5,1,0 %;      !  A SCSI CONTROLLER ERROR HAS BEEN DETECTED
macro SCDT$V_BUSERR = 120,6,1,0 %;      !  A SCSI BUS ERROR HAS BEEN DETECTED
macro SCDT$V_ABORT = 120,7,1,0 %;       !  THIS IO HAS BEEN ABORTED.
macro SCDT$V_MSGERR = 120,8,1,0 %;      !  AN ERROR WAS DETECTED DURING
! 
!  Port connection performance and error counters.                            
! 
macro SCDT$L_ARB_FAIL_CNT = 124,0,32,0 %; !  COUNT OF ARBITRATION FAILURES.
macro SCDT$L_SEL_FAIL_CNT = 128,0,32,0 %; !  COUNT OF SELECTION FAILURES.
macro SCDT$L_PARERR_CNT = 132,0,32,0 %; !  COUNT OF PARITY ERRORS.
macro SCDT$L_MISPHS_CNT = 136,0,32,0 %; !  COUNT OF MISSING PHASES ERRORS.
macro SCDT$L_BADPHS_CNT = 140,0,32,0 %; !  COUNT OF BAD PHASE ERRORS.
macro SCDT$L_RETRY_CNT = 144,0,32,0 %;  !  COUNT OF RETRIES, THIS ON CONNECTION.
macro SCDT$L_RST_CNT = 148,0,32,0 %;    !  COUNT OF BUS RESETS.
macro SCDT$L_CTLERR_CNT = 152,0,32,0 %; !  COUNT OF CONTROLLER ERRORS
macro SCDT$L_BUSERR_CNT = 156,0,32,0 %; !  COUNT OF BUS ERRORS
macro SCDT$L_CMDSENT = 160,0,32,0 %;    ! # COMMANDS SENT
macro SCDT$L_MSGSENT = 164,0,32,0 %;    ! # MESSAGES SENT
macro SCDT$L_BYTSENT = 168,0,32,0 %;    ! # BYTES SENT DURING DATAOUT
! 
!  Set connection characteristic information
! 
macro SCDT$L_CON_FLAGS = 172,0,32,0 %;  !  CONNECTION SPECIFIC FLAGS.
macro SCDT$V_ENA_DISCON = 172,0,1,0 %;  !  ENABLE DISCONNECT 
macro SCDT$V_DIS_RETRY = 172,1,1,0 %;   !  DISABLE RETRY ON COMMAND FAIL.
macro SCDT$V_TARGET_MODE = 172,2,1,0 %; !  TARGET MODE SUPPORTED
macro SCDT$L_SYNCHRONOUS = 176,0,32,0 %; !  1 = supported
macro SCDT$W_REQACK_OFFSET = 180,0,16,0 %; !  reqack offset for sync IO
macro SCDT$W_TRANSFER_PERIOD = 182,0,16,0 %; !  m*4 nanoseconds
macro SCDT$W_BUSY_RETRY_CNT = 184,0,16,0 %; !  Number retries left, for bus busy.
macro SCDT$W_ARB_RETRY_CNT = 186,0,16,0 %; !  Number of retries left, for arbitration failures.
macro SCDT$W_SEL_RETRY_CNT = 188,0,16,0 %; !  Number of retries left, for selection failures.
macro SCDT$W_CMD_RETRY_CNT = 190,0,16,0 %; !  Number of times the port will retry a command.
macro SCDT$L_DMA_TIMEOUT = 192,0,32,0 %; !  Time in seconds for a DMA timeout.
macro SCDT$L_DISCON_TIMEOUT = 196,0,32,0 %; !  Time in seconds for a disconnect to timeout.
macro SCDT$L_SEL_CALLBACK = 200,0,32,0 %; !  Address of Class drv callback.
macro SCDT$L_SEL_CONTEXT = 204,0,32,0 %; !  Context for Class drv callback.
macro SCDT$L_RSVD_LONG = 208,0,0,1 %;
literal SCDT$S_RSVD_LONG = 36;          !  Reserved space.
 
!*** MODULE $SCSDEF ***
! +
!  SCS MESSAGE DEFINITIONS
! 
!  THIS STRUCTURE DEFINES OFFSETS AND FIELDS WITHIN THE SCS PORTION OF
!  A CLUSTER MESSAGE.  OFFSETS ARE DEFINED RELATIVE TO THE START OF THE
!  APPLICATION DATA OR SCS CONTROL MESSAGE DATA.  THE FULL MESSAGE FORMAT
!  CONSISTS OF A PORT DRIVER LAYER HEADER (SEE STRUCTURE PPD) FOLLOWED
!  BY THE SCS HEADER LAYER FOLLOWED BY THE APPLICATION DATA OR SCS CONTROL
!  MESSAGE DATA.
! -
literal SCS$C_OVHD = 14;                !  SCS LAYER OVERHEAD
literal SCS$C_CON_REQL = 66;            !  CONNECT_REQ LENGTH 
literal SCS$C_CON_RSPL = 22;            !  (TYC 20-apr-89) CONNECT_RSP LENGTH 
literal SCS$C_ACCP_REQL = 66;           !  ACCEPT_REQ LENGTH 
literal SCS$C_ACCP_RSPL = 18;           !  ACCEPT_RSP LENGTH 
literal SCS$C_REJ_REQL = 18;            !  REJECT_REQ LENGTH 
literal SCS$C_REJ_RSPL = 14;            !  REJECT_RSP LENGTH 
literal SCS$C_DISC_REQL = 18;           !  DISCONNECT_REQ LENGTH 
literal SCS$C_DISC_RSPL = 14;           !  DISCONNECT_RSP LENGTH 
literal SCS$C_CR_REQL = 14;             !  CREDIT_REQ LENGTH 
literal SCS$C_CR_RSPL = 14;             !  CREDIT_RSP LENGHT 
literal SCS$C_CON_REQ = 0;              !  CONNECT_REQ 
literal SCS$C_CON_RSP = 1;              !  CONNECT_RSP 
literal SCS$C_ACCP_REQ = 2;             !  ACCEPT_REQ 
literal SCS$C_ACCP_RSP = 3;             !  ACCEPT_RSP 
literal SCS$C_REJ_REQ = 4;              !  REJECT_REQ 
literal SCS$C_REJ_RSP = 5;              !  REJECT_RSP 
literal SCS$C_DISC_REQ = 6;             !  DISCONNECT_REQ 
literal SCS$C_DISC_RSP = 7;             !  DISCONNECT_RSP 
literal SCS$C_CR_REQ = 8;               !  CREDIT_REQ 
literal SCS$C_CR_RSP = 9;               !  CREDIT_RSP 
literal SCS$C_APPL_MSG = 10;            !  APPLICATION MESSAGE 
literal SCS$C_APPL_DG = 11;             !  APPLICATION DATAGRAM 
literal SCS$K_APPL_BASE = 0;            ! BASE OF APPLICTION MESSAGE DATA 
literal SCS$C_APPL_BASE = 0;            ! BASE OF APPLICTION MESSAGE DATA 
literal SCS$M_UAP = 1;
literal SCS$K_STNORMAL = 1;             !  NORMAL, SUCCESS
literal SCS$C_STNORMAL = 1;             ! 
literal SCS$K_STNOMAT = 10;             !  NO MATCHING LISTENER
literal SCS$C_STNOMAT = 10;             ! 
literal SCS$K_STNORS = 18;              !  NO RESOURCES
literal SCS$C_STNORS = 18;              ! 
literal SCS$K_STDISC = 25;              !  DISCONNECTED
literal SCS$C_STDISC = 25;              ! 
literal SCS$K_STINSFCR = 33;            !  INSUFF CREDIT
literal SCS$C_STINSFCR = 33;            ! 
literal SCS$K_STBALANCE = 41;           !  LOAD BALANCE
literal SCS$C_STBALANCE = 41;           !   DISCONNECT
literal SCS$K_USE_ALTERNATE_PORT = 42;  !  (TYC 13-Feb-89) Load Share
literal SCS$C_USE_ALTERNATE_PORT = 42;  !   Status code for using alternate port
literal SCS$K_CON_BASE = 4;             ! BASE OF CONNECT/ACCEPT INFO TO 
literal SCS$C_CON_BASE = 4;             ! BASE OF CONNECT/ACCEPT INFO TO 
!  GIVE TO SYSAP'S
literal SCS$S_SCSDEF = 84;
macro SCS$B_PPD = -32,0,0,0 %;
literal SCS$S_PPD = 16;                 ! 16 BYTES OF PPD HEADER 
macro SCS$W_LENGTH = -16,0,16,0 %;      ! MESSAGE LENGTH (INCLUDES ALL 
!  BYTES FROM SCS$W_LENGTH ON,
!  NOT INCLUDING SCS$W_LENGTH)
!  (FIELD SHARED BY PPD)
! DEFINE LENGTHS OF SCS CONTROL MSGS: 
macro SCS$W_MTYPE = -12,0,16,0 %;       ! SCS MESSAGE TYPE 
! SCS MESSAGE TYPE CODES:
!  0 ORIGIN, INCREMENTS OF 1 
macro SCS$W_CREDIT = -10,0,16,0 %;      ! CREDIT BEING EXTENDED 
macro SCS$L_DST_CONID = -8,0,32,0 %;    ! DESTINATION (RECVING) CONNX ID 
macro SCS$L_SRC_CONID = -4,0,32,0 %;    ! SOURCE (SENDING) CONNX ID 
macro SCS$W_MIN_CR = 0,0,16,0 %;        ! MINIMUM SEND CREDIT 
macro SCS$W_STATUS = 2,0,16,0 %;        ! STATUS/REASON  
macro SCS$V_UAP = 2,0,1,0 %;            !  USE ALTERNATE PORT is supported
! DEFINE STATUS/REASON CODES:
! FORMAT OF CONNECT/ACCEPT_REQ MSGS:
macro SCS$T_DST_PROC = 4,0,0,0 %;
literal SCS$S_DST_PROC = 16;            !  DESTINATION PROCESS NAME 
macro SCS$B_SUBNODE = 4,0,8,0 %;        !  MUST BE ZERO FOR NOW
macro SCS$B_PGRP = 5,0,8,0 %;           !  ALTERNATE PORT'S PPD ADDR
macro SCS$W_RSV = 6,0,16,0 %;           !  RESERVED FIELD
macro SCS$T_SRC_PROC = 20,0,0,0 %;
literal SCS$S_SRC_PROC = 16;            !  SOURCE PROCESS NAME 
macro SCS$B_CON_DAT = 36,0,0,0 %;
literal SCS$S_CON_DAT = 16;             !  CONNECT DATA 
! 
!  DEFINITION OF THE REQUEST/SEND DATA OFFSETS 
! 
literal SCS$S_SCSDEF1 = 28;
macro SCS$L_LCONID = -16,0,32,0 %;      !  LOCAL CONNECTION ID
macro SCS$L_RSPID = -12,0,32,0 %;       !  LOCAL RESPONSE ID
macro SCS$L_XCT_LEN = -8,0,32,0 %;      !  TRANSACTION LENGTH
macro SCS$L_SND_NAME = -4,0,32,0 %;     !  SEND BUFFER NAME
macro SCS$L_SND_BOFF = 0,0,32,0 %;      !   AND OFFSET
macro SCS$L_REC_NAME = 4,0,32,0 %;      !  RECEIVE BUFFER NAME
macro SCS$L_REC_BOFF = 8,0,32,0 %;      !   AND OFFSET
 
!*** MODULE $SCSCMGDEF ***
! +
!  SCSCMG - SCS CONNECTION MANAGEMENT MESSAGE FORMAT
! 
!  THIS PORTION OF A CONNECT/ACCEPT MESSAGE IS SEEN BY A
!  SYSTEM APPLICATION.
! -
literal SCSCMG$S_SCSCMGDEF = 48;
macro SCSCMG$T_RECNAM = 0,0,0,0 %;
literal SCSCMG$S_RECNAM = 16;           ! RECEIVE PROCESS NAME 
macro SCSCMG$T_SNDNAM = 16,0,0,0 %;
literal SCSCMG$S_SNDNAM = 16;           ! SENDER PROCESS NAME 
macro SCSCMG$B_SNDDAT = 32,0,0,0 %;
literal SCSCMG$S_SNDDAT = 16;           ! SENDER CONNECT DATA 
 
!*** MODULE $SCSNETDEF ***
! +
!  SCS CI PPD definitions
! 
!  This structure defines offsets and fields for SCS datagrams used in the 
!  datagram handshake between remote systems.  The full format consists of
!  a port heder (See Structure PPD) followed by these definitions.  The origin
!  of this field is the beginning of user data for a normal SCS datagram
!  so that the PDT$L_DGHDRSZ may be used to determine the true origin of the 
!  packet.
! -
literal SCSNET$C_START_LEN = 62;        !  Start dg length
literal SCSNET$C_STACK_LEN = 62;        !  Stack dg length
literal SCSNET$C_ACK_LEN = 2;           !  Ack dg length
literal SCSNET$C_HSHUT_LEN = 2;         !  Host shutdown dg length
literal SCSNET$C_CACHE_LEN = 2;         !  Cache clear marker length
literal SCSNET$C_START = 0;             !  START DATAGRAM
literal SCSNET$C_STACK = 1;             !  STACK DATAGRAM
literal SCSNET$C_ACK = 2;               !  ACK DATAGRAM
literal SCSNET$C_SCS_DG = 3;            !  SCS DATAGRAM
literal SCSNET$C_SCS_MSG = 4;           !  SCS MESSAGE
literal SCSNET$C_ELOG = 5;              !  ERROR LOG DATAGRAM
literal SCSNET$C_HOSTSHUT = 6;          !  HOST SHUTDOWN DATAGRAM
literal SCSNET$C_CACHECLR = 32768;      !  CACHE CLEAR MARKER MSG
!  (8000 hex)
literal SCSNET$C_PRT_BASE = 0;          !  1st PPD Protocol Rev
literal SCSNET$C_PRT_ELOG = 1;          !  2nd rev, supports error
!  log dgs and host shutdown.
literal SCSNET$C_MIN_DGSIZ = 48;        ! Minimum allowed DG size,
!  not including the SCS header.
literal SCSNET$S_SCSNETDEF = 80;
macro SCSNET$B_PPD = -32,0,0,0 %;
literal SCSNET$S_PPD = 16;              ! 16 bytes of PPD header 
macro SCSNET$W_LENGTH = -16,0,16,0 %;   ! message length (includes all 
!  bytes from scs$w_length on,
!  not including SCS$W_LENGTH)
!  (field shared by PPD)
macro SCSNET$W_MTYPE = -14,0,16,0 %;
macro SCSNET$B_SYSTEMID = -12,0,0,0 %;
literal SCSNET$S_SYSTEMID = 6;          !  Sending System ID
macro SCSNET$B_PROTOCOL = -6,0,8,0 %;   !  PPD Protocol Level
macro SCSNET$W_MAXDG = -4,0,16,0 %;     !  Max DG size
macro SCSNET$W_MAXMSG = -2,0,16,0 %;    !  Max MSG size
macro SCSNET$T_SWTYPE = 0,0,32,0 %;
literal SCSNET$S_SWTYPE = 4;            !  Software type
macro SCSNET$T_SWVERS = 4,0,32,0 %;
literal SCSNET$S_SWVERS = 4;            !  Software version
macro SCSNET$Q_SWINCARN = 8,0,0,0 %;
literal SCSNET$S_SWINCARN = 8;          !  Software incarnation #
macro SCSNET$T_HWTYPE = 16,0,32,0 %;
literal SCSNET$S_HWTYPE = 4;            !  Hardware type
macro SCSNET$B_HWVERS = 20,0,0,0 %;
literal SCSNET$S_HWVERS = 12;           !  Hardware version
macro SCSNET$Q_NODENAME = 32,0,0,0 %;
literal SCSNET$S_NODENAME = 8;          !  Node Name
macro SCSNET$Q_CURTIME = 40,0,0,0 %;
literal SCSNET$S_CURTIME = 8;           !  Current system time measured
!    in 100 nsec units
 
!*** MODULE $SDIRDEF ***
! +
!  SDIR - SCS DIRECTORY ENTRY
! 
!  THIS DATA STRUCTURE IS ALLOCATED FOR EACH LOCAL PROCESS THAT WANTS
!  TO BE KNOWN TO SCS.
! -
literal SDIR$K_LENGTH = 48;
literal SDIR$C_LENGTH = 48;
literal SDIR$S_SDIRDEF = 48;
macro SDIR$L_FLINK = 0,0,32,0 %;        ! FWD LINK 
macro SDIR$L_BLINK = 4,0,32,0 %;        ! BCK LINK 
macro SDIR$W_SIZE = 8,0,16,0 %;         ! STRUCTURE SIZE IN BYTES 
macro SDIR$B_TYPE = 10,0,8,0 %;         ! SCS STRUCTURE TYPE 
macro SDIR$B_SUBTYP = 11,0,8,0 %;       ! SCS STRUCTURE SUBTYPE FOR SDIR 
macro SDIR$B_PROCNAM = 12,0,0,0 %;
literal SDIR$S_PROCNAM = 16;            ! ASCII STRING FOR PROCESS NAME 
macro SDIR$B_PROCINF = 28,0,0,0 %;
literal SDIR$S_PROCINF = 16;            ! ASCII STRING FOR PROCESS INFO 
macro SDIR$L_CONID = 44,0,32,0 %;       ! CONNECTION ID 
 
!*** MODULE $SGNDEF ***
! +
!  SYSGEN PARAMETER DEFINITIONS
! -
!  
literal SGN$C_BALSETCNT = 24;           !  NUMBER OF PROCESSES IN BALANCE SET 
literal SGN$C_DFWSCNT = 100;            !  DEFAULT WORKING SET COUNT 
literal SGN$C_DFWSQUOTA = 120;          !  DEFAULT WORKING SET QUOTA 
literal SGN$C_GBLSECCNT = 40;           !  GLOBAL SECTION COUNT 
literal SGN$C_MAXGPGCNT = 2048;         !  GLOBAL PAGE COUNT (GPT SIZE) 
literal SGN$C_MAXPAGCNT = 16384;        !  PHYSICAL MEMORY SIZE IN PAGES 
literal SGN$C_MAXPGFL = 4096;           !  DEFAULT MAXIMUM PAGING FILE 
literal SGN$C_MAXPSTCNT = 5;            !  MAX NUMBER OF PST ENTRIES 
literal SGN$C_MAXVPGCNT = 8192;         !  MAX PROCESS VIRTUAL SIZE (PAGES) 
literal SGN$C_MAXWSCNT = 1024;          !  MAX WORKING SET SIZE (PAGES) 
literal SGN$C_MINWSCNT = 10;            !  MIN WORKING SET SIZE (PAGES) 
literal SGN$C_NPAGEDYN = 26624;         !  NON-PAGED DYNAMIC POOL SIZE 
literal SGN$C_NPROCS = 64;              !  MAX NUMBER OF PROCESSES 
literal SGN$C_PAGEDYN = 16384;          !  PAGED DYNAMIC POOL SIZE IN BYTES 
literal SGN$C_PHYPAGCNT = 4096;         !  ACTUAL PHYSICAL PAGE COUNT 
literal SGN$C_SYSDWSCNT = 40;           !  DEFAULT SYSTEM WORKING SET COUNT 
literal SGN$C_SYSVECPGS = 5;            !  NO. OF PAGES OF SYSTEM SERVICE VECTORS 
literal SGN$C_SYSWSCNT = 96;            !  SYSTEM WORKING SET COUNT 
 
!*** MODULE $SHADDEF ***
! ++
!  VOLUME SHADOWING STRUCTURE DEFINITIONS 
! --
literal SHAD$K_MINDEVS = 1;             !  Minimum number of devices
literal SHAD$C_MINDEVS = 1;             !  Minimum number of devices
literal SHAD$K_MINMBRS = 1;             !  Minimum number of members
literal SHAD$C_MINMBRS = 1;             !  Minimum number of members
literal SHAD$K_MAXMBRS = 3;             !  Maximum number of members
literal SHAD$C_MAXMBRS = 3;             !  Maximum number of members
literal SHAD$K_MBRSIZ = 16;
literal SHAD$C_MBRSIZ = 16;
!  Duplicate the above constants
!  Number of bits in the member status
!   fields used to determine copy type
!  CLU$C_MAX_NODES
literal LOCK$M_DEQUEUE = 1;
literal LOCK$M_WATCHER = 2;
literal LOCK$M_VALUE_UPDATE = 4;
literal LOCK$M_MBR_CHANGE_HERE = 8;
literal LOCK$M_COPY_ACTIVE = 16;
literal LOCK$M_STALL = 32;
literal LOCK$M_STALL_IP = 64;
literal LOCK$K_LENGTH = 80;             ! Length of Structure
literal LOCK$C_LENGTH = 80;             ! Length of Structure
literal LOCK$S_LOCKDEF = 80;            !  Lock substructure
macro LOCK$B_RESNAM_STR = 0,0,0,0 %;
literal LOCK$S_RESNAM_STR = 32;         !  Resource name string
macro LOCK$Q_RESNAM = 32,0,0,0 %;
literal LOCK$S_RESNAM = 8;              !  Resource name descriptor
macro LOCK$L_FLINK = 40,0,32,0 %;       !  CDRP queue Forward link 
macro LOCK$L_BLINK = 44,0,32,0 %;       !  CDRP Queue Backward link
macro LOCK$L_BLKADR = 48,0,32,0 %;      !  Blocking address for function
macro LOCK$L_LKSB = 52,0,32,0 %;        !  Lock status block base
macro LOCK$L_LKID = 56,0,32,0 %;        !  Lock ID
macro LOCK$L_LKVALBLK = 60,0,0,0 %;
literal LOCK$S_LKVALBLK = 16;           !  Lock value block
macro LOCK$B_STATE = 76,0,8,0 %;        !  Lock state semaphore
macro LOCK$V_DEQUEUE = 76,0,1,0 %;      !  DEQUEUE in progress
macro LOCK$V_WATCHER = 76,1,1,0 %;      !  Watcher node
macro LOCK$V_VALUE_UPDATE = 76,2,1,0 %; !  Watcher value update node
macro LOCK$V_MBR_CHANGE_HERE = 76,3,1,0 %; !  Set change in progress
macro LOCK$V_COPY_ACTIVE = 76,4,1,0 %;  !  Copy active here 
macro LOCK$V_STALL = 76,5,1,0 %;        !  Lock does stalls
macro LOCK$V_STALL_IP = 76,6,1,0 %;     !  Stall new requests until NL
literal SHAD$M_NORMAL = 1;
literal SHAD$M_NEW = 2;
literal SHAD$M_REBLDNG = 4;
literal SHAD$M_VERIFY = 8;
literal SHAD$M_MVBEGUN = 16;
literal SHAD$M_COPYING = 32;
literal SHAD$M_MERGING = 64;
literal SHAD$M_MINIMRG = 128;
literal SHAD$M_CPY_RESET = 256;
literal SHAD$M_BOOTING = 512;
literal SHAD$M_FAILED = 32768;
literal SHAD$M_COPY_TYPE = 3;
literal SHAD$M_MBR_MODIF = 252;
literal SHAD$M_MBR_FCPY = 1;
literal SHAD$M_MBR_MERGE = 2;
literal SHAD$M_MBR_CIP = 4;
literal SHAD$M_MBR_MASTER = 8;
literal SHAD$M_MBR_ERROR = 16;
literal SHAD$M_MBR_SRC = 32;
literal SHAD$M_MBR_VALID = 128;
literal SHAD$K_LENGTH = 848;            ! Length of Structure
literal SHAD$C_LENGTH = 848;            ! Length of Structure
literal SHAD$S_SHADDEF = 852;
macro SHAD$L_FLINK = 0,0,32,0 %;        !  Forward link to next SHAD
macro SHAD$L_BLINK = 4,0,32,0 %;        !  Backward link
macro SHAD$W_SIZE = 8,0,16,0 %;         !  Size of this structure
macro SHAD$B_TYPE = 10,0,8,0 %;         !  Standard fields
macro SHAD$B_SUBTYP = 11,0,8,0 %;       !   ...
macro SHAD$L_VU_UCB = 12,0,32,0 %;      !  Unit Control Block for VU
macro SHAD$L_VU_VCB = 16,0,32,0 %;      !  Volume Control Block for VU
macro SHAD$L_ACTIVE_IRPS = 20,0,32,0 %; !  Active "Master" IRPs
macro SHAD$L_WLG = 24,0,32,0 %;         !  Pointer to write log allocation
macro SHAD$L_NOTIFICATION_ID = 28,0,32,0 %; !  Notification ID
macro SHAD$B_MEMBERSHIP_PERMISSION = 32,0,0,0 %;
literal SHAD$S_MEMBERSHIP_PERMISSION = 80; !  Shadow set membership change permission lock
macro SHAD$B_MEMBERSHIP_LOCK = 112,0,0,0 %;
literal SHAD$S_MEMBERSHIP_LOCK = 80;    !  Shadow set membership lock
macro SHAD$B_MEMBER_OF_SET = 192,0,0,0 %;
literal SHAD$S_MEMBER_OF_SET = 80;      !  Shadow set guaranteed member lock
macro SHAD$B_WATCHER_LOCK = 272,0,0,0 %;
literal SHAD$S_WATCHER_LOCK = 80;       !  Shadow set membership lock watcher lock
macro SHAD$B_SEQ_CMD_PERMISSION = 352,0,0,0 %;
literal SHAD$S_SEQ_CMD_PERMISSION = 80; !  Shadow set sequential command permission lock
macro SHAD$B_SEQ_CMD_LOCK = 432,0,0,0 %;
literal SHAD$S_SEQ_CMD_LOCK = 80;       !  Shadow set sequential command lock
macro SHAD$B_COPIER_LOCK = 512,0,0,0 %;
literal SHAD$S_COPIER_LOCK = 80;        !  Shadow set copier lock
macro SHAD$B_COPIER_THRESHOLD = 592,0,0,0 %;
literal SHAD$S_COPIER_THRESHOLD = 80;   !  Copier threshold lock
macro SHAD$B_NODE_MAP = 672,0,0,0 %;
literal SHAD$S_NODE_MAP = 32;           !  Mounted node bit map
macro SHAD$l_filler = 704,0,32,0 %;     !  For quad alignment of queues	
macro SHAD$L_ACTIVE_FL = 708,0,32,0 %;  !  Active Queue flink
macro SHAD$L_ACTIVE_BL = 712,0,32,0 %;  !  Active Queue bLink
macro SHAD$L_RESTART_FL = 716,0,32,0 %; !  FL for restart wait queue
macro SHAD$L_RESTART_BL = 720,0,32,0 %; !  BL for restart wait queue
! 
!  define the LAST_INDEX so that it can be used as a byte and yet maintain
!  longword alignment.
! 
macro SHAD$L_LAST_INDX = 724,0,32,0 %;  !  Tot num phys IRPs active.
macro SHAD$B_LAST_INDX = 724,0,8,0 %;   !  Tot num phys IRPs assoc.
macro SHAD$L_LAST_RINDX = 728,0,32,0 %; !  Index of last read SSM
macro SHAD$R_VECTOR = 732,0,0,0 %;
literal SHAD$S_VECTOR = 16;
macro SHAD$L_COPY_VECTOR = 732,0,32,0 %; !   Address of COPY routine
macro SHAD$L_MERGE_VECTOR = 736,0,32,0 %; !   Address of MINI-MERGE routine
macro SHAD$L_WRITE_VECTOR = 740,0,32,0 %; !   Address of WRITE Startio routine
macro SHAD$L_DSE_VECTOR = 744,0,32,0 %; !   Address of DSE Startio routine
! 
!  The following fields, up to the next comment are placed contiguously in 
!  this data structure so that they can be copied from the SCB in one 
!  instruction.
! 
macro SHAD$Q_GENERNUM = 748,0,0,0 %;
literal SHAD$S_GENERNUM = 8;            !  Shadow Set generation number
macro SHAD$Q_UNIT_ID = 756,0,0,0 %;
literal SHAD$S_UNIT_ID = 8;             !   unique cluster-wide identifier
macro SHAD$W_STATUS = 764,0,16,0 %;     !  Volume status:
macro SHAD$V_NORMAL = 764,0,1,0 %;      !  Shadow set populated and online
macro SHAD$V_NEW = 764,1,1,0 %;         !  Newly created, no members yet
macro SHAD$V_REBLDNG = 764,2,1,0 %;     !  rebuilding shadow set
macro SHAD$V_VERIFY = 764,3,1,0 %;      !  This SS needs verification
macro SHAD$V_MVBEGUN = 764,4,1,0 %;     !  Mount verification initiated
macro SHAD$V_COPYING = 764,5,1,0 %;     !  Full copy in progreess
macro SHAD$V_MERGING = 764,6,1,0 %;     !  Merge copy in progress
macro SHAD$V_MINIMRG = 764,7,1,0 %;     !  Mini-merge in progress
macro SHAD$V_CPY_RESET = 764,8,1,0 %;   !  Copy mode is reset.
macro SHAD$V_BOOTING = 764,9,1,0 %;     !  Shadow set in booting state
macro SHAD$V_FAILED = 764,15,1,0 %;     !  Shadow set not populated
macro SHAD$B_MEMBER_STATUS = 766,0,8,0 %; !  Member status bits
macro SHAD$V_COPY_TYPE = 766,0,2,0 %;
literal SHAD$S_COPY_TYPE = 2;           !  Function Code Field
macro SHAD$V_MBR_MODIF = 766,2,6,0 %;
literal SHAD$S_MBR_MODIF = 6;           !  Function Modifiers Field
macro SHAD$V_MBR_FCPY = 766,0,1,0 %;    !  Member involved in copy
macro SHAD$V_MBR_MERGE = 766,1,1,0 %;   !  Member being merged
macro SHAD$V_MBR_CIP = 766,2,1,0 %;     !  Copy (or merge) in progress
macro SHAD$V_MBR_MASTER = 766,3,1,0 %;  !  Member with guaranteed correct
!   SCB. Same member as MEMBERSHIP_LOCK
macro SHAD$V_MBR_ERROR = 766,4,1,0 %;   !  Error processing in progress
macro SHAD$V_MBR_SRC = 766,5,1,0 %;     !  member can be used for source
macro SHAD$V_MBR_VALID = 766,7,1,0 %;   !  Status information is valid
macro SHAD$Q_MEMBER_IDS = 772,0,0,0 %;
literal SHAD$S_MEMBER_IDS = 24;         !  Unit ID for member
macro SHAD$L_SCB_LBN = 796,0,32,0 %;    !  Unit Control Block for VU
macro SHAD$B_DEVICES = 800,0,8,0 %;     !  Number of devices in SS
macro SHAD$B_MEMBERS = 801,0,8,0 %;     !  Number of full members
macro SHAD$B_MAST_INDX = 802,0,8,0 %;   !  Array index to master UCB
macro SHAD$B_MRG_TARGETS = 803,0,8,0 %; !  Merge Copy Targets
macro SHAD$B_FC_TARGETS = 804,0,8,0 %;  !  Full Copy Targets
!  Preserve quadword alignment for IRP.
!  Maintain the following array as the last part of this data structure 
!  in order to maintain the longword alignment of fields preceding it.
!  
macro SHAD$L_MEMBER_UCB = 812,0,0,0 %;
literal SHAD$S_MEMBER_UCB = 12;         !  UCB for member
macro SHAD$L_MEMBER_VCB = 824,0,0,0 %;
literal SHAD$S_MEMBER_VCB = 12;         !  VCB for member
macro SHAD$L_COPY_LBN = 836,0,0,0 %;
literal SHAD$S_COPY_LBN = 12;           !  Last LBN Copied
macro SHAD$L_IRP = 848,0,32,0 %;        !  Pointer to shadow IRP
 
!*** MODULE $SHBDEF ***
! +
!  SHARED MEMORY CONTROL BLOCK DEFINITIONS
! -
! 
!  The UETP for the MA780 depends on some of the following definitions.  Please
!  let someone in that group know if the definitions change substantially.
! 
literal SHB$M_CONNECT = 1;
literal SHB$K_LENGTH = 32;              ! LENGTH OF CONTROL BLOCK 
literal SHB$C_LENGTH = 32;              ! LENGTH OF CONTROL BLOCK 
literal SHB$S_SHBDEF = 32;
macro SHB$L_LINK = 0,0,32,0 %;          ! LINK TO NEXT SHB 
macro SHB$L_DATAPAGE = 4,0,32,0 %;      ! VIRTUAL ADDRESS OF DATAPAGE 
macro SHB$W_SIZE = 8,0,16,0 %;          ! SIZE OF SHB IN BYTES 
macro SHB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE FOR SHB 
macro SHB$B_FLAGS = 11,0,8,0 %;         ! FLAGS 
macro SHB$V_CONNECT = 11,0,1,0 %;       !  MEMORY IS CONNECTED, USEABLE 
macro SHB$L_REFCNT = 12,0,32,0 %;       ! COUNT OF REFERENCES TO MEMORY 
macro SHB$L_BASGSPFN = 16,0,32,0 %;     ! BASE PFN FOR GLOBAL SECTION PAGES 
macro SHB$B_NEXUS = 20,0,8,0 %;         ! NEXUS OF PORT 
macro SHB$B_PORT = 21,0,8,0 %;          ! PORT NUMBER 
macro SHB$L_POOLEND = 24,0,32,0 %;      ! ADDRESS PAST LAST BYTE OF POOL 
macro SHB$L_ADP = 28,0,32,0 %;          ! ADAPTER CONTROL BLOCK ADDRESS 
 
!*** MODULE $SHDDEF ***
! +
!  SHARED MEMORY DATAPAGE DEFINITIONS
! -
! 
!  The UETP for the MA780 depends on some of the following definitions.  Please
!  let someone in that group know if the definitions change substantially.
! 
literal SHD$C_MAXPORTS = 16;            ! MAXIMUM NUMBER PORTS HANDLED BY THIS 
! DATA STRUCTURE
! *** START OF CONSTANT FIELDS:
literal SHD$C_NAMLENGTH = 16;           ! MAXIMUM LENGTH OF NAME OF MEMORY 
literal SHD$M_INITLCK = 1;
literal SHD$M_BITMAPLCK = 2;
literal SHD$M_GSDLCK = 4;
literal SHD$M_MBXLCK = 8;
literal SHD$M_CEFLCK = 16;
literal SHD$K_LENGTH = 384;             ! LENGTH OF DATAPAGE 
literal SHD$C_LENGTH = 384;             ! LENGTH OF DATAPAGE 
literal SHD$S_SHDDEF = 384;
macro SHD$L_MBXPTR = 0,0,32,0 %;        ! RELATIVE POINTER TO MAILBOX TABLE 
macro SHD$L_GSDPTR = 4,0,32,0 %;        ! RELATIVE POINTER TO GSD TABLE 
macro SHD$L_CEFPTR = 8,0,32,0 %;        ! RELATIVE POINTER TO CEF TABLE 
macro SHD$L_GSBITMAP = 12,0,32,0 %;     ! RELATIVE POINTER TO BITMAP 
macro SHD$L_GSPAGCNT = 16,0,32,0 %;     ! CNT OF PAGES ALLOTTED FOR GBL SECTIONS 
macro SHD$L_GSPFN = 20,0,32,0 %;        ! RELATIVE PFN OF 1ST GBL SECTION PAGE 
macro SHD$W_GSDMAX = 24,0,16,0 %;       ! MAX GSD'S (SIZE OF TABLE) 
macro SHD$W_MBXMAX = 26,0,16,0 %;       ! MAX MAILBOXES (SIZE OF TABLE) 
macro SHD$W_CEFMAX = 28,0,16,0 %;       ! MAX CEF CLUSTERS (SIZE OF TABLE) 
macro SHD$T_NAME = 32,0,0,0 %;
literal SHD$S_NAME = 16;                ! NAME OF MEMORY (COUNTED STRING) 
macro SHD$Q_INITTIME = 48,0,0,0 %;
literal SHD$S_INITTIME = 8;             ! INITIALIZATION TIME 
! *** END OF CONSTANT FIELDS.
macro SHD$L_CRC = 56,0,32,0 %;          ! CRC OF CONSTANT FIELDS 
macro SHD$W_GSDQUOTA = 60,0,0,0 %;
literal SHD$S_GSDQUOTA = 32;            ! COUNT OF GSD'S CREATED (ONE/PORT) 
macro SHD$W_MBXQUOTA = 92,0,0,0 %;
literal SHD$S_MBXQUOTA = 32;            ! COUNT OF MAILBOXES CREATED (ONE/PORT) 
macro SHD$W_CEFQUOTA = 124,0,0,0 %;
literal SHD$S_CEFQUOTA = 32;            ! COUNT OF CLUSTERS CREATED (ONE/PORT) 
macro SHD$B_PORTS = 156,0,8,0 %;        ! NUMBER OF PORTS 
macro SHD$B_INITLCK = 157,0,8,0 %;      ! OWNER OF INIT LOCK 
macro SHD$B_BITMAPLCK = 158,0,8,0 %;    ! OWNER OF GS BITMAP LOCK 
macro SHD$B_FLAGS = 159,0,8,0 %;        ! FLAGS FOR LOCKING DATA STRUCTURES 
macro SHD$V_INITLCK = 159,0,1,0 %;      ! COMMON DATA PAGE BEING INITIALIZED 
macro SHD$V_BITMAPLCK = 159,1,1,0 %;    ! BITMAP BEING MODIFIED 
macro SHD$V_GSDLCK = 159,2,1,0 %;       ! GLOBAL SECTION DSC TABLE BEING SEARCHED 
macro SHD$V_MBXLCK = 159,3,1,0 %;       ! MAILBOX TABLE BEING SEARCHED 
macro SHD$V_CEFLCK = 159,4,1,0 %;       ! COMMON EVENT FLAG TABLE BEING SEARCHED 
macro SHD$B_GSDLOCK = 160,0,8,0 %;      ! OWNER OF GSD TABLE LOCK 
macro SHD$B_MBXLOCK = 161,0,8,0 %;      ! OWNER OF MBX TABLE LOCK 
macro SHD$B_CEFLOCK = 162,0,8,0 %;      ! OWNER OF CEF TABLE LOCK 
macro SHD$W_PRQWAIT = 164,0,16,0 %;     ! PORTS WAITING FOR INTER-PROCESSOR REQUEST BLOCKS 
!  (ONE BIT/PORT)
macro SHD$W_POLL = 166,0,16,0 %;        ! PORTS ACTIVELY USING THE MEMORY 
!  (ONE BIT/PORT)
macro SHD$W_RESWAIT = 168,0,0,0 %;
literal SHD$S_RESWAIT = 32;             ! PORTS WAITING FOR A RESOURCE 
!  (ONE BIT/PORT, ONE MASK/RESOURCE)
macro SHD$W_RESAVAIL = 200,0,0,0 %;
literal SHD$S_RESAVAIL = 32;            ! PORTS NEEDING TO REPORT RESOURCE AVAILABLE 
!  (ONE BIT/PORT, ONE MASK/RESOURCE)
macro SHD$W_RESSUM = 232,0,16,0 %;      ! PORTS WITH RESOURCES TO REPORT 
!  (ONE BIT/PORT)
! *** NOTE: THE FOLLOWING FIELDS MUST BE QUADWORD ALIGNED:
macro SHD$Q_PRQ = 240,0,0,0 %;
literal SHD$S_PRQ = 8;                  ! FREE INTER-PROCESSOR REQUEST BLOCK LISTHEAD 
macro SHD$Q_POOL = 248,0,0,0 %;
literal SHD$S_POOL = 8;                 ! FREE POOL BLOCK LISTHEAD 
macro SHD$Q_PRQWRK = 256,0,0,0 %;
literal SHD$S_PRQWRK = 128;             ! INTER-PROCESSOR REQUEST WORK QUEUE LISTHEADS 
!  (ONE LISTHEAD/PORT)
 
!*** MODULE $SHLDEF ***
! +
!  SHL - SHAREABLE IMAGE LIST
! 
!  THIS LIST IS CREATED IN THE IMAGE FIXUP SECTION BY THE LINKER AND
!  USED BY THE IMAGE ACTIVATOR FOR DOING SHAREABLE IMAGE FIXUPS.
! -
literal SHL$C_OLD_SHL_SIZE = 56;        !  Size of "old" SHL
literal SHL$C_MAXNAMLNG = 39;           !  Maximum length of image name 
literal SHL$K_LENGTH = 64;              !  Length of shareable image list element 
literal SHL$C_LENGTH = 64;              !  Length of shareable image list element 
literal SHL$S_SHLDEF = 64;
macro SHL$L_BASEVA = 0,0,32,0 %;        !  Base address of this shareable image 
macro SHL$L_SHLPTR = 4,0,32,0 %;        !  Pointer from SHL in shareable image 
!   to associated SHL in executable image
macro SHL$L_IDENT = 8,0,32,0 %;         !  GSMATCH 
macro SHL$L_PERMCTX = 12,0,32,0 %;      !  Permanent sharable image context 
macro SHL$B_SHL_SIZE = 16,0,8,0 %;      !  Size of SHL elements
macro SHL$T_IMGNAM = 24,0,0,0 %;
literal SHL$S_IMGNAM = 40;              !  Shareable image name (ASCIC string) 
macro SHL$B_NAMLNG = 24,0,8,0 %;        !  Synonym for name count 
 
!*** MODULE $SIGDEF ***
! +
!  Generalized Event Notification Definitions
! 
!  SIGnature Block
! 
!  This is the second level structure in the event notification
!  database.  It contains an array of signature list pointers
!  and list signature lists.
! 
!  This structure is variable length in increments of 512 bytes.
! -
literal SIG$C_ENTRY_SIZE = 8;
literal SIG$S_SIGDEF = 152;
macro SIG$L_QFL = 0,0,32,0 %;           !  QUEUE FORWARD LINK     
macro SIG$L_QBL = 4,0,32,0 %;           !  QUEUE BACKWARD LINK    
macro SIG$W_SIZE = 8,0,16,0 %;          !  STRUCTURE SIZE IN BYTES
macro SIG$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE CODE    
macro SIG$B_SUBTYPE = 11,0,8,0 %;       !  STRUCTURE SUBTYPE CODE
macro SIG$L_FREE = 12,0,32,0 %;         !  ADDRESS OF FIRST FREE ENTRY
macro SIG$L_LIST_PTRS = 16,0,0,0 %;
literal SIG$S_LIST_PTRS = 128;          !  SIGNATURE POINTERS
macro SIG$L_SIG = 144,0,32,0 %;         !  FIRST SIGNATURE
macro SIG$L_NAB = 148,0,32,0 %;         !  ADDRESS OF NAME BLOCK
 
!*** MODULE $SIIDEF ***
! ++
! 	SII register definitions
! --
literal SII$W_SDB = 0;                  ! SCSI data bus
literal SII$W_SC1 = 4;                  ! SCSI control signals 1
literal SII$W_SC2 = 8;                  ! SCSI control signals 2
literal SII$W_CSR = 12;                 ! CSR
literal SII$W_ID = 16;                  ! Bus ID
literal SII$W_SLCSR = 20;               ! Selector CSR
literal SII$W_DESTAT = 24;              ! Selector detection status
literal SII$W_DSTMO = 28;               ! DSSI timeout
literal SII$W_DATA = 32;                ! Data
literal SII$W_DMCTRL = 36;              ! DMA control
literal SII$W_DMLOTC = 40;              ! DMA length of transfer
literal SII$W_DMADDRL = 44;             ! DMA address (low)
literal SII$W_DMADDRH = 48;             ! DMA address (high)
literal SII$W_DMABYTE = 52;             ! DMA initial byte
literal SII$W_STLP = 56;                ! Short target list pointer
literal SII$W_LTLP = 60;                ! Long target list pointer
literal SII$W_ILP = 64;                 ! Initiator list pointer
literal SII$W_DSCTRL = 68;              ! DSSI control
literal SII$W_CSTAT = 72;               ! Connection status
literal SII$W_DSTAT = 76;               ! Data transfer status
literal SII$W_COMM = 80;                ! Command
literal SII$W_DICTRL = 84;              ! Diagnostic control
literal SII$W_CLOCK = 88;               ! Diagnostic clock
literal SII$W_BHDIAG = 92;              ! Bus handler diagnostic
literal SII$W_SIDIAG = 96;              ! SCSI IO diagnostic
literal SII$W_DMDIAG = 100;             ! Data mover diagnostic
literal SII$W_MCDIAG = 104;             ! Main control diagnostic
literal SII$M_SDB_DATA = 255;
literal SII$M_SDB_PTY = 256;
literal SII$S_SDB = 2;
macro SII$V_SDB_DATA = 0,0,8,0 %;
literal SII$S_SDB_DATA = 8;             ! Data
macro SII$V_SDB_PTY = 0,8,1,0 %;        ! Parity
literal SII$M_SC1_IO = 1;
literal SII$M_SC1_CD = 2;
literal SII$M_SC1_MSG = 4;
literal SII$M_SC1_ATN = 8;
literal SII$M_SC1_REQ = 16;
literal SII$M_SC1_ACK = 32;
literal SII$M_SC1_RST = 64;
literal SII$M_SC1_SEL = 128;
literal SII$M_SC1_BSY = 256;
literal SII$S_SC1 = 2;
macro SII$V_SC1_IO = 0,0,1,0 %;         !  I/O signal
macro SII$V_SC1_CD = 0,1,1,0 %;         !  CD signal
macro SII$V_SC1_MSG = 0,2,1,0 %;        !  MSG signal
macro SII$V_SC1_ATN = 0,3,1,0 %;        !  ATN signal
macro SII$V_SC1_REQ = 0,4,1,0 %;        !  REQ signal
macro SII$V_SC1_ACK = 0,5,1,0 %;        !  ACK signal
macro SII$V_SC1_RST = 0,6,1,0 %;        !  RST signal
macro SII$V_SC1_SEL = 0,7,1,0 %;        !  SEL signal
macro SII$V_SC1_BSY = 0,8,1,0 %;        !  BSY signal
literal SII$M_SC2_SBE = 1;
literal SII$M_SC2_ARB = 2;
literal SII$M_SC2_TGS = 4;
literal SII$M_SC2_IGS = 8;
literal SII$S_SC2 = 1;
macro SII$V_SC2_SBE = 0,0,1,0 %;        !  Drive data and parity lines
macro SII$V_SC2_ARB = 0,1,1,0 %;        !  Enable for arbitration
macro SII$V_SC2_TGS = 0,2,1,0 %;        !  Target role
macro SII$V_SC2_IGS = 0,3,1,0 %;        !  Initiator role
literal SII$M_CSR_IE = 1;
literal SII$M_CSR_PCE = 2;
literal SII$M_CSR_SLE = 4;
literal SII$M_CSR_RSE = 8;
literal SII$M_CSR_HPM = 16;
literal SII$S_CSR = 1;
macro SII$V_CSR_IE = 0,0,1,0 %;         !  Interrupt Enable
macro SII$V_CSR_PCE = 0,1,1,0 %;        !  Parity Check Enable
macro SII$V_CSR_SLE = 0,2,1,0 %;        !  SeLection Enable
macro SII$V_CSR_RSE = 0,3,1,0 %;        !  ReSelection Enable
macro SII$V_CSR_HPM = 0,4,1,0 %;        !  Arbitrated bus
literal SII$M_ID_BUSID = 7;
literal SII$M_ID_IO = 32768;
literal SII$S_ID = 2;
macro SII$V_ID_BUSID = 0,0,3,0 %;
literal SII$S_ID_BUSID = 3;             !  BUS ID
macro SII$V_ID_IO = 0,15,1,0 %;         !  Output to bus
literal SII$M_CSTAT_LST = 2;
literal SII$M_CSTAT_SIP = 4;
literal SII$M_CSTAT_SWA = 8;
literal SII$M_CSTAT_TGT = 16;
literal SII$M_CSTAT_DST = 32;
literal SII$M_CSTAT_CON = 64;
literal SII$M_CSTAT_SCH = 128;
literal SII$M_CSTAT_LDN = 256;
literal SII$M_CSTAT_BUF = 512;
literal SII$M_CSTAT_TZ = 1024;
literal SII$M_CSTAT_OBC = 2048;
literal SII$M_CSTAT_BER = 4096;
literal SII$M_CSTAT_RST = 8192;
literal SII$M_CSTAT_DI = 16384;
literal SII$M_CSTAT_CI = 32768;
literal SII$S_CSTAT = 2;
macro SII$V_CSTAT_LST = 0,1,1,0 %;      !  Lost
macro SII$V_CSTAT_SIP = 0,2,1,0 %;      !  Selection in progress
macro SII$V_CSTAT_SWA = 0,3,1,0 %;      !  Selected with ATN
macro SII$V_CSTAT_TGT = 0,4,1,0 %;      !  Target
macro SII$V_CSTAT_DST = 0,5,1,0 %;      !  Destination
macro SII$V_CSTAT_CON = 0,6,1,0 %;      !  Connected
macro SII$V_CSTAT_SCH = 0,7,1,0 %;      !  State change
macro SII$V_CSTAT_LDN = 0,8,1,0 %;      !  List element done
macro SII$V_CSTAT_BUF = 0,9,1,0 %;      !  Buffer service
macro SII$V_CSTAT_TZ = 0,10,1,0 %;      !  Target pointer zero
macro SII$V_CSTAT_OBC = 0,11,1,0 %;     !  OUTEN bit cleared
macro SII$V_CSTAT_BER = 0,12,1,0 %;     !  Bus error
macro SII$V_CSTAT_RST = 0,13,1,0 %;     !  RST asserted
macro SII$V_CSTAT_DI = 0,14,1,0 %;      !  DSTAT interrupt
macro SII$V_CSTAT_CI = 0,15,1,0 %;      !  CSTAT Interrupt
literal SII$M_DSTAT_PHASE = 7;
literal SII$M_DSTAT_IO = 1;
literal SII$M_DSTAT_CD = 2;
literal SII$M_DSTAT_MSG = 4;
literal SII$M_DSTAT_ATN = 8;
literal SII$M_DSTAT_MIS = 16;
literal SII$M_DSTAT_OBB = 256;
literal SII$M_DSTAT_IPE = 512;
literal SII$M_DSTAT_IBF = 1024;
literal SII$M_DSTAT_TBE = 2048;
literal SII$M_DSTAT_TCZ = 4096;
literal SII$M_DSTAT_DNE = 8192;
literal SII$M_DSTAT_DI = 16384;
literal SII$M_DSTAT_CI = 32768;
literal SII$S_DSTAT = 2;
macro SII$V_DSTAT_PHASE = 0,0,3,0 %;
literal SII$S_DSTAT_PHASE = 3;
macro SII$V_DSTAT_IO = 0,0,1,0 %;       !  I/O signal
macro SII$V_DSTAT_CD = 0,1,1,0 %;       !  CD signal
macro SII$V_DSTAT_MSG = 0,2,1,0 %;      !  Message signal
macro SII$V_DSTAT_ATN = 0,3,1,0 %;      !  Attention
macro SII$V_DSTAT_MIS = 0,4,1,0 %;      !  Phase mismatch
macro SII$V_DSTAT_OBB = 0,8,1,0 %;      !  Odd Byte Boundary
macro SII$V_DSTAT_IPE = 0,9,1,0 %;      !  Incoming parity error
macro SII$V_DSTAT_IBF = 0,10,1,0 %;     !  Input buffer full
macro SII$V_DSTAT_TBE = 0,11,1,0 %;     !  Transmit buffer empty
macro SII$V_DSTAT_TCZ = 0,12,1,0 %;     !  Transfer counter zero
macro SII$V_DSTAT_DNE = 0,13,1,0 %;     !  Transfer done
macro SII$V_DSTAT_DI = 0,14,1,0 %;      !  DSTAT interrupt
macro SII$V_DSTAT_CI = 0,15,1,0 %;      !  CSTAT interrupt
literal SII$M_COMM_PHASE = 7;
literal SII$M_COMM_IO = 1;
literal SII$M_COMM_CD = 2;
literal SII$M_COMM_MSG = 4;
literal SII$M_COMM_ATN = 8;
literal SII$M_COMM_TGT = 16;
literal SII$M_COMM_ORI = 32;
literal SII$M_COMM_CON = 64;
literal SII$M_COMM_CMD_RESET = 128;
literal SII$M_COMM_CMD_DISC = 256;
literal SII$M_COMM_CMD_REQD = 512;
literal SII$M_COMM_CMD_SEL = 1024;
literal SII$M_COMM_CMD_XFER = 2048;
literal SII$M_COMM_RSL = 4096;
literal SII$M_COMM_RST = 16384;
literal SII$M_COMM_DMA = 32768;
literal SII$M_COMM_CMD = 3968;
literal SII$S_COMM = 2;
macro SII$V_COMM_PHASE = 0,0,3,0 %;
literal SII$S_COMM_PHASE = 3;
macro SII$V_COMM_IO = 0,0,1,0 %;        !  IO signal
macro SII$V_COMM_CD = 0,1,1,0 %;        !  CD signal
macro SII$V_COMM_MSG = 0,2,1,0 %;       !  MSG signal
macro SII$V_COMM_ATN = 0,3,1,0 %;       !  ATN signal
macro SII$V_COMM_TGT = 0,4,1,0 %;       !  Target state
macro SII$V_COMM_ORI = 0,5,1,0 %;       !  Destination state
macro SII$V_COMM_CON = 0,6,1,0 %;       !  Connected
macro SII$V_COMM_CMD_RESET = 0,7,1,0 %; !  Reset command
macro SII$V_COMM_CMD_DISC = 0,8,1,0 %;  !  Disconnect command
macro SII$V_COMM_CMD_REQD = 0,9,1,0 %;  !  Request Data command
macro SII$V_COMM_CMD_SEL = 0,10,1,0 %;  !  Select command
macro SII$V_COMM_CMD_XFER = 0,11,1,0 %; !  Data transfer command
macro SII$V_COMM_RSL = 0,12,1,0 %;      !  Reselect
macro SII$V_COMM_RST = 0,14,1,0 %;      !  Reset
macro SII$V_COMM_DMA = 0,15,1,0 %;      !  Perform DMA
macro SII$V_COMM_CMD = 0,7,5,0 %;
literal SII$S_COMM_CMD = 5;
literal SII$M_DICTRL_TST = 1;
literal SII$M_DICTRL_DIA = 2;
literal SII$M_DICTRL_PRE = 4;
literal SII$M_DICTRL_LDB = 8;
literal SII$S_DICTRL = 1;
macro SII$V_DICTRL_TST = 0,0,1,0 %;     !  Test mode
macro SII$V_DICTRL_DIA = 0,1,1,0 %;     !  Diagnostics mode
macro SII$V_DICTRL_PRE = 0,2,1,0 %;     !  Port Enable
macro SII$V_DICTRL_LDB = 0,3,1,0 %;     !  Loopback
 
!*** MODULE $SLVDEF ***
! 
! 
!  Define symbolic offsets for System Loadable Vectors.  These symbols
!  are used by the various pieces of the loadable EXEC, notably SCSVEC,
!  to create a list of vectors in system space and a corresponding image
!  that will be loaded into pool and connected to the system vectors.
! 
! 
literal SLV$K_LENGTH = 676;             !  SLV$K_LENGTH
literal SLV$S_SLV = 676;
macro SLV$L_CODESIZE = 0,0,32,0 %;      !  Loadable image size (in bytes)
macro SLV$L_INITRTN = 4,0,32,0 %;       !  Offset to init. routine
macro SLV$W_SIZE = 8,0,16,0 %;          !  Same as SLV$L_CODESIZE
macro SLV$B_TYPE = 10,0,8,0 %;          !  Structure type (DYN$C_LOADCODE)
macro SLV$B_SUBTYP = 11,0,8,0 %;        !  Sturcture Subtype
macro SLV$B_PROT_R = 12,0,8,0 %;        !  writeable protection for image
macro SLV$B_PROT_W = 13,0,8,0 %;        !  read-only protection for image
macro SLV$W_SPARE = 14,0,16,0 %;        !  spare field for future use
macro SLV$A_SYSVECS = 16,0,32,0 %;      !  address of vectors in SYS.EXE
macro SLV$T_FACILITY = 20,0,0,0 %;
literal SLV$S_FACILITY = 16;            !  facility name (.ASCIC)
macro SLV$T_LIST = 36,0,0,0 %;
literal SLV$S_LIST = 640;               !  Start of vector list (MAXVEC*5)
! 
! 
!  Define vector type codes.  The codes LODUMMY and HIDUMMY are
!  used as placeholders, to make the definition of the upper and
!  lower bound vector type symbols automatic.  New vector type codes
!  should be added at the end of the list, but before HIDUMMY.
! 
! 
literal SLV$K_LODUMMY = 0;              !  
literal SLV$K_LDATA = 1;                !  Longword pointer to data
literal SLV$K_AJUMP = 2;                !  Aligned jump
literal SLV$K_UJUMP = 3;                !  Unaligned jump
literal SLV$K_SDATA = 4;                !  Specified data
literal SLV$K_SJUMP = 5;                !  Specified jump
literal SLV$K_HIDUMMY = 6;              ! 
literal SLV$K_MINTYPE = 1;              !  Lower bound of vector type codes
literal SLV$K_MAXTYPE = 5;              !  Upper bount of vector type codes
literal SLV$K_MAXVEC = 128;             !  Max. # of vectors in list.
 
!*** MODULE $SMBDEF ***
!  Symbiont interface definitions
! +
!  Symbolic definitions for the symbiont to job controller interface.
! 
! 	Public definitions of message types, item codes, and
! 	other constants utilied by the symbiont to job controller
! 	interface facility.
! 
! -
! 
! 	Structure level
! 
literal SMBMSG$K_STRUCTURE_LEVEL = 1;   !  Current structure level
literal SMBMSG$K_STRUCTURE_LEVEL_1 = 1; !  Structure level 1
! 
! 	Request header
! 
literal SMBMSG$K_PAUSE_TASK = 1;        !   - STOP /QUEUE
literal SMBMSG$K_RESET_STREAM = 2;      !   - STOP /QUEUE /RESET
literal SMBMSG$K_RESUME_TASK = 3;       !   - START /QUEUE (when paused)
literal SMBMSG$K_START_STREAM = 4;      !   - START /QUEUE (when stopped)
literal SMBMSG$K_START_TASK = 5;        !   - task available
literal SMBMSG$K_STOP_STREAM = 6;       !   - STOP /QUEUE /NEXT
literal SMBMSG$K_STOP_TASK = 7;         !   - STOP /QUEUE /ABORT or /REQUEUE
literal SMBMSG$K_TASK_COMPLETE = 8;     !   - stream is idle
literal SMBMSG$K_TASK_STATUS = 9;       !   - asynchronous status update
literal SMBMSG$K_MAX_REQUEST_CODE = 10; !  MUST BE LAST
literal SMBMSG$S_REQUEST_HEADER = 4;
macro SMBMSG$W_REQUEST_CODE = 0,0,16,0 %; !  Request code
!   Define request codes
macro SMBMSG$B_STRUCTURE_LEVEL = 2,0,8,0 %; !  Message structure level
macro SMBMSG$B_STREAM_INDEX = 3,0,8,0 %; !  Stream index
! 
! 	Item header
! 
literal SMBMSG$K_ACCOUNTING_DATA = 1;   !   - accounting information
literal SMBMSG$K_ACCOUNT_NAME = 2;      !   - account name
literal SMBMSG$K_AFTER_TIME = 3;        !   - /AFTER value
literal SMBMSG$K_ALIGNMENT_PAGES = 4;   !   - /ALIGN count
literal SMBMSG$K_BOTTOM_MARGIN = 5;     !   - trailing blank lines
literal SMBMSG$K_CHARACTERISTICS = 6;   !   - /CHARACTERISTICS value
literal SMBMSG$K_CHECKPOINT_DATA = 7;   !   - checkpoint information
literal SMBMSG$K_CONDITION_VECTOR = 8;  !   - task error messages
literal SMBMSG$K_DEVICE_NAME = 9;       !   - /ON value
literal SMBMSG$K_DEVICE_STATUS = 10;    !   - device status
literal SMBMSG$K_ENTRY_NUMBER = 11;     !   - job entry number
literal SMBMSG$K_EXECUTOR_QUEUE = 12;   !   - this output queue
literal SMBMSG$K_FILE_COPIES = 13;      !   - /COPIES value
literal SMBMSG$K_FILE_COUNT = 14;       !   - current file copy number
literal SMBMSG$K_FILE_SETUP_MODULES = 15; !   - file setup module list
literal SMBMSG$K_FIRST_PAGE = 16;       !   - first page to print
literal SMBMSG$K_FORM_LENGTH = 17;      !   - lines per page
literal SMBMSG$K_FORM_NAME = 18;        !   - name of physical form
literal SMBMSG$K_FORM_SETUP_MODULES = 19; !   - form setup module list
literal SMBMSG$K_FORM_WIDTH = 20;       !   - columns per line
literal SMBMSG$K_FILE_IDENTIFICATION = 21; !   - device, fid, and did
literal SMBMSG$K_FILE_SPECIFICATION = 22; !   - file name
literal SMBMSG$K_JOB_COPIES = 23;       !   - /JOB_COUNT value
literal SMBMSG$K_JOB_COUNT = 24;        !   - current job copy number
literal SMBMSG$K_JOB_NAME = 25;         !   - /NAME value
literal SMBMSG$K_JOB_RESET_MODULES = 26; !   - job reset module list
literal SMBMSG$K_LAST_PAGE = 27;        !   - last page to print
literal SMBMSG$K_LEFT_MARGIN = 28;      !   - leading blank columns
literal SMBMSG$K_LIBRARY_SPECIFICATION = 29; !   - library name
literal SMBMSG$K_MAXIMUM_STREAMS = 30;  !   - maximum supported symbiont
literal SMBMSG$K_MESSAGE_VECTOR = 31;   !   - error messages to print
literal SMBMSG$K_NOTE = 32;             !   - /NOTE value
literal SMBMSG$K_PAGE_SETUP_MODULES = 33; !   - page setup module list
literal SMBMSG$K_PARAMETER_1 = 34;      !   - user parameter 1
literal SMBMSG$K_PARAMETER_2 = 35;      !   - user parameter 2
literal SMBMSG$K_PARAMETER_3 = 36;      !   - user parameter 3
literal SMBMSG$K_PARAMETER_4 = 37;      !   - user parameter 4
literal SMBMSG$K_PARAMETER_5 = 38;      !   - user parameter 5
literal SMBMSG$K_PARAMETER_6 = 39;      !   - user parameter 6
literal SMBMSG$K_PARAMETER_7 = 40;      !   - user parameter 7
literal SMBMSG$K_PARAMETER_8 = 41;      !   - user parameter 8
literal SMBMSG$K_PRINT_CONTROL = 42;    !   - printing control
literal SMBMSG$K_PRIORITY = 43;         !   - queue priority
literal SMBMSG$K_QUEUE = 44;            !   - generic queue name
literal SMBMSG$K_REFUSE_REASON = 45;    !   - reason task refused
literal SMBMSG$K_RELATIVE_PAGE = 46;    !   - /BACKWARD, /FORWARD values
literal SMBMSG$K_REQUEST_CONTROL = 47;  !   - request control
literal SMBMSG$K_REQUEST_RESPONSE = 48; !   - request code being responded to
literal SMBMSG$K_RIGHT_MARGIN = 49;     !   - trailing blank columns
literal SMBMSG$K_SEARCH_STRING = 50;    !   - /SEARCH value
literal SMBMSG$K_SEPARATION_CONTROL = 51; !   - separation control
literal SMBMSG$K_STOP_CONDITION = 52;   !   - reason for print abort
literal SMBMSG$K_TIME_QUEUED = 53;      !   - time queued
literal SMBMSG$K_TOP_MARGIN = 54;       !   - leading blank lines
literal SMBMSG$K_UIC = 55;              !   - UIC of submittor
literal SMBMSG$K_USER_NAME = 56;        !   - username
! 
literal SMBMSG$K_MAX_ITEM_CODE = 57;    !  MUST BE LAST
literal SMBMSG$S_ITEM_HEADER = 4;
macro SMBMSG$W_ITEM_SIZE = 0,0,16,0 %;  !  Item size
macro SMBMSG$W_ITEM_CODE = 2,0,16,0 %;  !  Item code
!   Define item codes
! 
! 	ACCOUNTING_DATA item
! 
literal SMBMSG$S_ACCOUNTING_DATA = 16;
macro SMBMSG$L_PAGES_PRINTED = 0,0,32,0 %; !  Pages printed
macro SMBMSG$l_qio_puts = 4,0,32,0 %;   !  Lines printed
macro SMBMSG$l_rms_gets = 8,0,32,0 %;   !  File reads
macro SMBMSG$L_CPU_TIME = 12,0,32,0 %;  !  Processor time
! 
! 	CHECKPOINT_DATA item
! 
literal SMBMSG$S_CHECKPOINT_DATA = 24;
macro SMBMSG$B_FILLER = 0,0,8,0 %;      !  Reserved
macro SMBMSG$B_CHECKPOINT_LEVEL = 1,0,8,0 %; !  Checkpoint structure level
macro SMBMSG$W_OFFSET = 2,0,16,0 %;     !  Offset into record
macro SMBMSG$L_CARCON = 4,0,32,0 %;     !  Carriage control
macro SMBMSG$L_PAGE = 8,0,32,0 %;       !  Page number
macro SMBMSG$L_RECORD_NUMBER = 12,0,32,0 %; !  Record number
macro SMBMSG$Q_USER_KEY = 16,0,0,0 %;
literal SMBMSG$S_USER_KEY = 8;          !  User positioning key
! 
! 	DEVICE_STATUS item
! 
literal SMBMSG$M_LOWERCASE = 1;
literal SMBMSG$M_PAUSE_TASK = 2;
literal SMBMSG$M_REMOTE = 4;
literal SMBMSG$M_SERVER = 8;
literal SMBMSG$M_STALLED = 16;
literal SMBMSG$M_STOP_STREAM = 32;
literal SMBMSG$M_TERMINAL = 64;
literal SMBMSG$M_UNAVAILABLE = 128;
literal SMBMSG$M_SYM_NOTIFIES = 256;
literal SMBMSG$M_SYM_REQUESTS_OPER = 512;
literal SMBMSG$M_SYM_COPIES_FILE = 1024;
literal SMBMSG$M_SYM_COPIES_JOB = 2048;
literal SMBMSG$M_SYM_ACCEPTS_ALL_FORMS = 4096;
literal SMBMSG$M_SYM_NO_JOB_CHECKPOINT = 8192;
literal SMBMSG$S_DEVICE_STATUS = 4;
macro SMBMSG$L_DEVICE_FLAGS = 0,0,32,0 %; !  Device flags
macro SMBMSG$V_LOWERCASE = 0,0,1,0 %;   !   - supports lowercase
macro SMBMSG$V_PAUSE_TASK = 0,1,1,0 %;  !   - symbiont initiated pause
macro SMBMSG$V_REMOTE = 0,2,1,0 %;      !   - device is remote
macro SMBMSG$V_SERVER = 0,3,1,0 %;      !   - server symbiont
macro SMBMSG$V_STALLED = 0,4,1,0 %;     !   - task stalled
macro SMBMSG$V_STOP_STREAM = 0,5,1,0 %; !   - symbiont requesting stop stream
macro SMBMSG$V_TERMINAL = 0,6,1,0 %;    !   - device is a terminal
macro SMBMSG$V_UNAVAILABLE = 0,7,1,0 %; !   - device unavailable
macro SMBMSG$V_SYM_NOTIFIES = 0,8,1,0 %; !   - Symbiont notifies for job completions
macro SMBMSG$V_SYM_REQUESTS_OPER = 0,9,1,0 %; !   - Symbiont generates operator messages
macro SMBMSG$V_SYM_COPIES_FILE = 0,10,1,0 %; !   - Symbiont generates multiple file copies
macro SMBMSG$V_SYM_COPIES_JOB = 0,11,1,0 %; !   - Symbiont generates multiple job copies
macro SMBMSG$V_SYM_ACCEPTS_ALL_FORMS = 0,12,1,0 %; !   - Symbiont processes all form types
macro SMBMSG$V_SYM_NO_JOB_CHECKPOINT = 0,13,1,0 %; !   - Always reprocess full job on a restart
! 
! 	PRINT_CONTROL item
! 
literal SMBMSG$M_DOUBLE_SPACE = 1;
literal SMBMSG$M_PAGE_HEADER = 2;
literal SMBMSG$M_PAGINATE = 4;
literal SMBMSG$M_PASSALL = 8;
literal SMBMSG$M_SEQUENCED = 16;
literal SMBMSG$M_SHEET_FEED = 32;
literal SMBMSG$M_TRUNCATE = 64;
literal SMBMSG$M_WRAP = 128;
literal SMBMSG$M_RECORD_BLOCKING = 256;
literal SMBMSG$M_PAGE_FOOTER = 512;
literal SMBMSG$M_DELETE_FILE = 1024;
literal SMBMSG$M_LOWERCASE_EXPLICIT = 2048;
literal SMBMSG$M_NOTIFY = 4096;
literal SMBMSG$M_RESTART = 8192;
literal SMBMSG$S_PRINT_CONTROL = 4;
macro SMBMSG$L_PRINT_FLAGS = 0,0,32,0 %; !  Print flags
macro SMBMSG$V_DOUBLE_SPACE = 0,0,1,0 %; !   - double space
macro SMBMSG$V_PAGE_HEADER = 0,1,1,0 %; !   - print page headers
macro SMBMSG$V_PAGINATE = 0,2,1,0 %;    !   - insert <FF>'s
macro SMBMSG$V_PASSALL = 0,3,1,0 %;     !   - binary print file
macro SMBMSG$V_SEQUENCED = 0,4,1,0 %;   !   - print sequence numbers
macro SMBMSG$V_SHEET_FEED = 0,5,1,0 %;  !   - pause at every TOF
macro SMBMSG$V_TRUNCATE = 0,6,1,0 %;    !   - truncate on overflow
macro SMBMSG$V_WRAP = 0,7,1,0 %;        !   - wrap on overflow
macro SMBMSG$V_RECORD_BLOCKING = 0,8,1,0 %; !   - block records in output buffer
macro SMBMSG$V_PAGE_FOOTER = 0,9,1,0 %; !   - print page footers
macro SMBMSG$V_DELETE_FILE = 0,10,1,0 %; !   - delete file after printing
macro SMBMSG$V_LOWERCASE_EXPLICIT = 0,11,1,0 %; !   - job for printer that supports lowercase
macro SMBMSG$V_NOTIFY = 0,12,1,0 %;     !   - notify user when job completes
macro SMBMSG$V_RESTART = 0,13,1,0 %;    !   - restart job after crash or requeue
! 
! 	REQUEST_CONTROL item
! 
literal SMBMSG$M_ALIGNMENT_MASK = 1;
literal SMBMSG$M_PAUSE_COMPLETE = 2;
literal SMBMSG$M_RESTARTING = 4;
literal SMBMSG$M_TOP_OF_FILE = 8;
literal SMBMSG$S_REQUEST = 4;
macro SMBMSG$L_REQUEST_FLAGS = 0,0,32,0 %; !  Print flags
macro SMBMSG$V_ALIGNMENT_MASK = 0,0,1,0 %; !   - print A's and 9's
macro SMBMSG$V_PAUSE_COMPLETE = 0,1,1,0 %; !   - pause when request complete
macro SMBMSG$V_RESTARTING = 0,2,1,0 %;  !   - job is restarting
macro SMBMSG$V_TOP_OF_FILE = 0,3,1,0 %; !   - rewind before resume
! 
! 	SEPARATION_CONTROL item
! 
literal SMBMSG$M_FILE_BURST = 1;
literal SMBMSG$M_FILE_FLAG = 2;
literal SMBMSG$M_FILE_TRAILER = 4;
literal SMBMSG$M_FILE_TRAILER_ABORT = 8;
literal SMBMSG$M_JOB_FLAG = 16;
literal SMBMSG$M_JOB_BURST = 32;
literal SMBMSG$M_JOB_RESET = 64;
literal SMBMSG$M_JOB_RESET_ABORT = 128;
literal SMBMSG$M_JOB_TRAILER = 256;
literal SMBMSG$M_JOB_TRAILER_ABORT = 512;
literal SMBMSG$M_FIRST_FILE_OF_JOB = 1024;
literal SMBMSG$M_LAST_FILE_OF_JOB = 2048;
literal SMBMSG$S_SEPARATION_CONTROL = 4;
macro SMBMSG$L_SEPARATION_FLAGS = 0,0,32,0 %; !  Print flags
macro SMBMSG$V_FILE_BURST = 0,0,1,0 %;  !   - print file burst page
macro SMBMSG$V_FILE_FLAG = 0,1,1,0 %;   !   - print file flag page
macro SMBMSG$V_FILE_TRAILER = 0,2,1,0 %; !   - print file trailer page
macro SMBMSG$V_FILE_TRAILER_ABORT = 0,3,1,0 %; !   - print file trailer page
macro SMBMSG$V_JOB_FLAG = 0,4,1,0 %;    !   - print job flag page
macro SMBMSG$V_JOB_BURST = 0,5,1,0 %;   !   - print job burst page
macro SMBMSG$V_JOB_RESET = 0,6,1,0 %;   !   - execute job reset sequence
macro SMBMSG$V_JOB_RESET_ABORT = 0,7,1,0 %; !   - execute job reset sequence
macro SMBMSG$V_JOB_TRAILER = 0,8,1,0 %; !   - print job trailer page
macro SMBMSG$V_JOB_TRAILER_ABORT = 0,9,1,0 %; !   - print job trailer page
macro SMBMSG$V_FIRST_FILE_OF_JOB = 0,10,1,0 %; !   - this is the first file of the current job
macro SMBMSG$V_LAST_FILE_OF_JOB = 0,11,1,0 %; !   - this is the last file of the current job
 
!*** MODULE SNAPFKVECDEF ***
literal SNAPFKVEC$K_TIMEOUT = 15;       !  MAXIMUM DELAY TIME
literal SNAPFKVEC$K_LENGTH = 32;        ! LENGTH OF OVERHEAD AREA
literal SNAPFKVEC$C_LENGTH = 32;        ! LENGTH OF OVERHEAD AREA
literal SNAPFKVEC$S_SNAPFKVECDEF = 32;
macro SNAPFKVEC$L_FQFL = 0,0,32,0 %;    ! FORK QUEUE FORWARD LINK 
macro SNAPFKVEC$L_FQBL = 4,0,32,0 %;    ! FORK QUEUE BACKWARD LINK 
macro SNAPFKVEC$W_SIZE = 8,0,16,0 %;    ! SIZE OF BLOCK IN BYTES 
macro SNAPFKVEC$W_TYPE = 10,0,16,0 %;   ! STRUCTURE TYPE
macro SNAPFKVEC$L_REFCNT = 12,0,32,0 %; ! REFERENCE COUNT
macro SNAPFKVEC$L_COUNT = 16,0,32,0 %;  ! MAXIMUM VECTOR INDEX
macro SNAPFKVEC$W_EVENT = 20,0,16,0 %;  ! CURRENT EVENT CODE
macro SNAPFKVEC$W_SEED = 22,0,16,0 %;   ! SEQUENCE SEED
macro SNAPFKVEC$L_STATUS = 24,0,32,0 %; ! ABORT STATUS
macro SNAPFKVEC$L_VECTOR = 28,0,32,0 %; ! BEGINNING OF VECTOR AREA
! THE VECTOR AREA SIZE IS "COUNT" LONGWORDS
 
!*** MODULE SNAPSTATEDEF ***
literal SNAPSTATE$M_ACTIVE = 1;
literal SNAPSTATE$M_NORETURN = 2;
literal SNAPSTATE$M_ABORT = 4;
literal SNAPSTATE$M_RESUME = 8;
literal SNAPSTATE$M_POWER = 16;
literal SNAPSTATE$M_WATCHDOG = 32;
literal SNAPSTATE$M_ENABLEWATCH = 64;
literal SNAPSTATE$M_DEBUG = 128;
literal SNAPSTATE$M_CLEANUP = 256;
literal SNAPSTATE$S_SNAPSTATEDEF = 4;
macro SNAPSTATE$V_ACTIVE = 0,0,1,0 %;   !  Snapshot process is active
macro SNAPSTATE$V_NORETURN = 0,1,1,0 %; !  Snapshot is committed and an abort is not possible
macro SNAPSTATE$V_ABORT = 0,2,1,0 %;    !  Snapshot being aborted
macro SNAPSTATE$V_RESUME = 0,3,1,0 %;   !  O.K. to resume other processes.
macro SNAPSTATE$V_POWER = 0,4,1,0 %;    !  Powerfail exception in progress
macro SNAPSTATE$V_WATCHDOG = 0,5,1,0 %; !  Snapshot watchdog is active (set by the watchdog process)
macro SNAPSTATE$V_ENABLEWATCH = 0,6,1,0 %; !  Snapshot watchdog is enabled (set by the snapshot process)
macro SNAPSTATE$V_DEBUG = 0,7,1,0 %;    !  Snapshot watchdog may detect erroneous timeouts caused by the debugger
macro SNAPSTATE$V_CLEANUP = 0,8,1,0 %;  !  Snapshot cleanup process has been started
 
!*** MODULE $SPDTDEF ***
! +
!  $SPDTDEF	- SCSI PORT DESCRIPTOR TABLE DEFINITIONS.    
!                     
!  THERE IS ONE SPDT PER PORT. THE SPDT CONTAINS THE SCSI PORT INFORMATION
!  FOR ONE SCSI PORT. SPDT'S ARE CREATED BY THE UNIT INIT ROUTINES 
!  OF THE INDIVIDUAL PORT DRIVERS. DURING INITIALIZATION THE PORT DRIVER'S
!  PORT ROUTINE ENTRY POINTS ARE INITIALIZED IN THE SPDT. THE CLASS DRIVERS 
!  EXECUTE THESE ENTRY POINTS TO INTERACT WITH THE UNDERLYING PORT HARDWARE.
! 
!  THIS STRUCTURE IS READ ACCESSABLE TO THE CLASS DRIVER AND READABLE AND
!  WRITEABLE BY THE PORT DRIVER.
! -
! 
!  ***NOTE1:**** NEW SPDT FIELDS MUST BE ENTERED AFTER THE DISPATCH VECTORS
!                                                                       
! 
!  ***NOTE2:**** IF AN INCOMPATIBLE CHANGE IS MADE TO THIS STRUCTURE BUMP
!                THE VERSION NUMBER OF THIS STRUCTURE.
!                                                                       
literal SPDT$C_VERSION = 2;             ! COMPATIBLE VERSION NUMBER.
literal SPDT$C_PKN = 1;                 ! SCSI NCR 5380 Port.
literal SPDT$C_PKS = 2;                 ! SCSI SII Port.
literal SPDT$C_PKC = 3;                 ! SCSI NCR 53C94 Port.
literal SPDT$M_ONLINE = 1;
literal SPDT$M_TIMOUT = 2;
literal SPDT$M_ERLOGIP = 4;
literal SPDT$M_CANCEL = 8;
literal SPDT$M_POWER = 16;
literal SPDT$M_BSY = 32;
literal SPDT$M_FAILED = 64;
literal SPDT$M_SYNCH = 1;
literal SPDT$M_ASYNCH = 2;
literal SPDT$M_MAPPING_REG = 4;
literal SPDT$M_BUF_DMA = 8;
literal SPDT$M_DIR_DMA = 16;
literal SPDT$M_AEN = 32;
literal SPDT$M_LUNS = 64;
literal SPDT$C_PKSLENGTH = 684;         ! SIZE OF SPDT
literal SPDT$C_PKCLENGTH = 684;         ! SIZE OF SPDT
! 
literal SPDT$C_PKNLENGTH = 704;         ! SIZE OF SPDT
literal SPDT$S_SPDTDEF = 704;
macro SPDT$L_FLINK = 0,0,32,0 %;        ! LINK TO NEXT SCS SPDT
macro SPDT$W_SIZE = 4,0,16,0 %;         ! STRUCTURE SIZE IN BYTES 
macro SPDT$B_TYPE = 6,0,8,0 %;          ! STRUCTURE TYPE 
macro SPDT$B_SUBTYP = 7,0,8,0 %;        ! STRUCTURE SUBTYPE 
macro SPDT$W_SPDT_TYPE = 8,0,16,0 %;    ! TYPE OF SPDT       
macro SPDT$B_SCSI_INT_MSK = 10,0,8,0 %; ! PORT-SPECIFIC INTERRUPT MASK
!  FORK BLOCK USED DURING RESELECTIONS.
macro SPDT$B_FLCK = 11,0,8,0 %;         !  FORK LOCK INDEX 
macro SPDT$L_FPC = 12,0,32,0 %;         ! SAVED FORK PROCESS PC 
macro SPDT$L_FR3 = 16,0,32,0 %;         ! SAVED FORK PROCESS R3
macro SPDT$L_FR4 = 20,0,32,0 %;         ! SAVED FORK PROCESS R4 
macro SPDT$L_SCSI_PORT_ID = 24,0,32,0 %; ! SCSI PORT ID.  (A..Z)   
macro SPDT$L_SCSI_BUS_ID = 28,0,32,0 %; ! SCSI BUS ID.   (0..7)
macro SPDT$L_STS = 32,0,32,0 %;         ! PORT DEVICE STATUS 
macro SPDT$V_ONLINE = 32,0,1,0 %;       !  UNIT ONLINE (1=YES) 
macro SPDT$V_TIMOUT = 32,1,1,0 %;       !  UNIT TIMED OUT (1=YES)    
macro SPDT$V_ERLOGIP = 32,2,1,0 %;      !  ERROR LOG IN PROGRESS ON UNIT (1=YES) 
macro SPDT$V_CANCEL = 32,3,1,0 %;       !  CANCEL I/O ON UNIT (1=YES) 
macro SPDT$V_POWER = 32,4,1,0 %;        !  POWER FAILED WHILE UNIT BUSY (1=YES) 
macro SPDT$V_BSY = 32,5,1,0 %;          !  UNIT IS BUSY (1=YES) 
macro SPDT$V_FAILED = 32,6,1,0 %;       !  PORT FAILED OPERATION OR INITIALIZATION.
macro SPDT$L_PORT_WQFL = 36,0,32,0 %;   ! PORT WAIT QUEUE FORWARD LINK
macro SPDT$L_PORT_WQBL = 40,0,32,0 %;   ! PORT WAIT QUEUE BACKWARD LINK
macro SPDT$L_MAXBYTECNT = 44,0,32,0 %;  ! MAXIMUM BYTE COUNT FOR A TRANSFER.
macro SPDT$L_WAITQFL = 48,0,32,0 %;     ! LISTHEAD FOR FORK BLOCKS WAITING 
macro SPDT$L_WAITQBL = 52,0,32,0 %;     ! FOR NONPAGED POOL    
macro SPDT$L_PORT_UCB = 56,0,32,0 %;    ! ADDR OF PORT UCB.
macro SPDT$L_PORT_CSR = 60,0,32,0 %;    ! CSR ADDR OF PORT HARDWARE. 
macro SPDT$L_PORT_IDB = 64,0,32,0 %;    ! ADDR OF PORT IDB.
macro SPDT$L_DMA_BASE = 68,0,32,0 %;    ! BASE ADDRESS OF DMA BUFFER
macro SPDT$L_SPTE_BASE = 72,0,32,0 %;   ! S0 BASE ADDRESS OF BUFFER
macro SPDT$L_SPTE_SVAPTE = 76,0,32,0 %; ! SVAPTE OF 1ST SPTE USED TO DOUBLE MAP 
macro SPDT$L_ADP = 80,0,32,0 %;         ! ADDR OF ADP
macro SPDT$L_PORT_RING = 84,0,0,0 %;
literal SPDT$S_PORT_RING = 64;
macro SPDT$L_PORT_RING_PTR = 148,0,32,0 %;
macro SPDT$L_OWNERSCDT = 152,0,32,0 %;  ! SCDT ADDR OF CNNCTN WHICH OWNS PORT.
macro SPDT$L_SCDT_VECTOR = 156,0,0,1 %;
literal SPDT$S_SCDT_VECTOR = 256;       ! SCDT VECTOR
macro SPDT$L_SCDT_VECTOR_ID0 = 156,0,0,1 %;
literal SPDT$S_SCDT_VECTOR_ID0 = 32;    ! SCDT VECTOR FOR SCSI ID 0
macro SPDT$L_SCDT_VECTOR_ID1 = 188,0,0,1 %;
literal SPDT$S_SCDT_VECTOR_ID1 = 32;    ! SCDT VECTOR FOR SCSI ID 1
macro SPDT$L_SCDT_VECTOR_ID2 = 220,0,0,1 %;
literal SPDT$S_SCDT_VECTOR_ID2 = 32;    ! SCDT VECTOR FOR SCSI ID 2
macro SPDT$L_SCDT_VECTOR_ID3 = 252,0,0,1 %;
literal SPDT$S_SCDT_VECTOR_ID3 = 32;    ! SCDT VECTOR FOR SCSI ID 3
macro SPDT$L_SCDT_VECTOR_ID4 = 284,0,0,1 %;
literal SPDT$S_SCDT_VECTOR_ID4 = 32;    ! SCDT VECTOR FOR SCSI ID 4
macro SPDT$L_SCDT_VECTOR_ID5 = 316,0,0,1 %;
literal SPDT$S_SCDT_VECTOR_ID5 = 32;    ! SCDT VECTOR FOR SCSI ID 5
macro SPDT$L_SCDT_VECTOR_ID6 = 348,0,0,1 %;
literal SPDT$S_SCDT_VECTOR_ID6 = 32;    ! SCDT VECTOR FOR SCSI ID 6
macro SPDT$L_SCDT_VECTOR_ID7 = 380,0,0,1 %;
literal SPDT$S_SCDT_VECTOR_ID7 = 32;    ! SCDT VECTOR FOR SCSI ID 7
macro SPDT$L_DLCK = 412,0,32,0 %;       ! DEVICE LOCK ADDRESS
macro SPDT$B_DIPL = 416,0,8,0 %;        ! DEVICE IPL
macro SPDT$B_PAD1 = 417,0,8,0 %;        ! BYTE PAD
macro SPDT$W_PAD2 = 418,0,16,0 %;       ! WORD PAD
macro SPDT$L_AUXSTRUC = 420,0,32,0 %;   ! ADDR OF AUXILARY DATA STRUCTURE 
macro SPDT$L_SEL_SCDRP = 424,0,32,0 %;  ! SCDRP used during selection interrupt
macro SPDT$L_ENB_SEL_SCDRP = 428,0,32,0 %; ! SCDRP used to enable selection 
! interrupts in port timer routine
! 
!  The SCSI Port Interface entry points follow. These entry
!  points are fork entry points that the class driver envokes
!  to execute port specific functions.
!                                 
macro SPDT$L_MAP_BUFFER = 432,0,32,0 %; ! MAP A BUFFER FOR READ OR WRITE XFER
macro SPDT$L_UNMAP = 436,0,32,0 %;      ! UNMAP A BUFFER 
macro SPDT$L_SEND = 440,0,32,0 %;       ! SEND TO DEVICE.      
macro SPDT$L_SET_CONN_CHAR = 444,0,32,0 %; ! SET CONNECT CHAR.
macro SPDT$L_GET_CONN_CHAR = 448,0,32,0 %; ! GET CONNECT CHAR.
macro SPDT$L_RESET = 452,0,32,0 %;      ! MAINT RESET OF PORT
macro SPDT$L_CONNECT = 456,0,32,0 %;    ! REQUEST CONNECTION TO TARGET.
macro SPDT$L_DISCONNECT = 460,0,32,0 %; ! BREAK CONNECTION.
macro SPDT$L_ALLOC_COMMAND_BUFFER = 464,0,32,0 %; ! ALLOCATE A MESSAGE BUFFER 
macro SPDT$L_DEALLOC_COMMAND_BUFFER = 468,0,32,0 %; ! DEALLOCATE BUFFER 
macro SPDT$L_ABORT = 472,0,32,0 %;      ! ABORT OUTSTANDING CMD.
!  The following set of entry points are for target mode operation
macro SPDT$L_SET_PHASE = 476,0,32,0 %;  !  Set SCSI bus phase
macro SPDT$L_SENSE_PHASE = 480,0,32,0 %; !  Sense SCSI bus phase, ATN signal
macro SPDT$L_SEND_BYTES = 484,0,32,0 %; !  Send bytes on SCSI bus
macro SPDT$L_RECEIVE_BYTES = 488,0,32,0 %; !  Receive bytes from SCSI bus
macro SPDT$L_FINISH_CMD = 492,0,32,0 %; !  Complete command
macro SPDT$L_RELEASE_BUS = 496,0,32,0 %; !  Release SCSI bus
macro SPDT$L_RSVD1 = 500,0,32,0 %;      ! TBD
macro SPDT$L_RSVD2 = 504,0,32,0 %;      ! TBD
macro SPDT$L_RSVD3 = 508,0,32,0 %;      ! TBD
macro SPDT$B_BUS_HUNG_VEC = 552,0,8,0 %; ! VECTOR OF SUSPECTED HUNG CONNECTIONS.
macro SPDT$B_FILL_11 = 553,0,24,1 %;
literal SPDT$S_FILL_11 = 3;
! 
!  This TQE is used by the port driver to timeout pending disconnected IO's
!  When this TQE expires, the timer thread will timeout expired pending IO's.
! 
macro SPDT$B_TQE = 556,0,0,0 %;
literal SPDT$S_TQE = 52;                !  Timer queue entry
macro SPDT$L_TQE_DELAY = 608,0,32,0 %;  !  Delay time for next TQE delay.
! 
!  SCSI PORT EVENT COUNTERS, THESE COUNTERS ARE FOR EVENTS THAT ARE
!  CHARACTERISTIC OF THE PORT NOT A CONNECTION AND THAT DON'T NEED
!  TO BE RECORDED ON A CONNECTION BY CONNECTION BASIS.
!                                                                      
macro SPDT$L_BUS_HUNG_CNT = 612,0,32,0 %; !  COUNT OF DETECTED BUS HANGS.
macro SPDT$L_TARRST_CNT = 616,0,32,0 %; !  COUNT OF TARGET INITIATED BUS RESETS.
macro SPDT$L_RETRY_CNT = 620,0,32,0 %;  !  COUNT OF TOTAL NUMBER OF RETRY ATTEMPTS.
macro SPDT$L_STRAY_INT_CNT = 624,0,32,0 %; !  COUNT OF INT WHEN NO OWNER OF CHAN.
macro SPDT$L_UNEXP_INT_CNT = 628,0,32,0 %; !  COUNT OF UNEXP INT WHEN CHAN OWNED.
macro SPDT$L_NODISCON_CNT = 632,0,32,0 %; !  COUNT OF RESEL WHEN NOT DISCONNECTED.
macro SPDT$W_FILL_12 = 636,0,16,0 %;
macro SPDT$W_DISCON_CNT = 638,0,16,0 %; !  COUNT OF OUTSTANDING DISCONNECTS
macro SPDT$L_PORT_FLAGS = 640,0,32,0 %; !  PORT SPECIFIC FLAGS.
macro SPDT$V_SYNCH = 640,0,1,0 %;       !  SUPPORTS SYNCHRONOUS MODE.
macro SPDT$V_ASYNCH = 640,1,1,0 %;      !  SUPPORTS ASYNCHRONOUS MODE.
macro SPDT$V_MAPPING_REG = 640,2,1,0 %; !  SUPPORTS MAPPING REGISTERS.
macro SPDT$V_BUF_DMA = 640,3,1,0 %;     !  SUPPORTS BUFFERED DMA.
macro SPDT$V_DIR_DMA = 640,4,1,0 %;     !  SUPPORTS DIRECT DMA.
macro SPDT$V_AEN = 640,5,1,0 %;         !  SUPPORTS ASYNC EVENT NOTIFICATION
macro SPDT$V_LUNS = 640,6,1,0 %;        !  SUPPORTS LUNS
macro SPDT$L_VERSION_CHECK = 644,0,32,0 %; !  VALUE USED TO CHECK DRIVER VERSIONS
macro SPDT$L_RSVD_LONG = 648,0,0,1 %;
literal SPDT$S_RSVD_LONG = 36;          !  Reserved space.
!  These fields are required by PKNDRIVER until TKDRIVER is migrated to a 
!  full class driver.
!  When TVDRIVER is rewritten these fields MUST be moved to the UCB of 
!  PKNDRIVER. These fields are here to provide a work around which will
!  allow the port to detect multiple interrupting conditions during a single 
!  interrupt.                                               
! 
macro SPDT$B_CUR_STAT = 684,0,8,0 %;    ! COPY OF CUR_STAT REGISTER. 
macro SPDT$B_STATUS = 685,0,8,0 %;      ! COPY OF STATUS REGISTER.
macro SPDT$B_MODE = 686,0,8,0 %;        ! COPY OF THE MODE.             
macro SPDT$B_EVENT_CNT = 687,0,8,0 %;   ! COUNT NUMBER OF EVENTS THIS INTERRUPT.
!                                                                             
!  The following fields are used to allow TVDRIVER and DVDRIVER to execute on
!  same system as PKNDRIVER. These fields may be removed when TVDRIVER is 
!  no longer supported.
!   
macro SPDT$L_TVDRV_ISR = 688,0,32,0 %;  ! ADDR OF TVDRIVER'S ISR
macro SPDT$L_TVDRV_DMA_BASE = 692,0,32,0 %; ! ADDR OF TVDRIVER DMA BUFFER 
macro SPDT$L_TVDRV_DMA_SIZE = 696,0,32,0 %; ! SIZE OF TVDRIVER'S DMA BUFFER 
macro SPDT$L_TVDRV_UCB = 700,0,32,0 %;  ! ADDR OF TVDRIVER'S UCB
 
!*** MODULE $SPLCODDEF ***
! +
! 
!  SPINLOCK INDEX DEFINITIONS
! 
! -
! 
!  DEFINE THE HARDWARE LEVEL LOCKS (INDICES 0-F)
! 
literal SPL$C_EMB = 32;                 !  EMB spinlock index
literal SPL$C_MCHECK = 33;              !  Machine Check spinlock index
literal SPL$C_MEGA = 34;                !  Kitchen sink of spinlocks
literal SPL$C_HWCLK = 35;               !  HWCLK spinlock index
literal SPL$C_VIRTCONS = 36;            !  VIRTCONS spinlock index
literal SPL$C_INVALIDATE = 37;          !  INVALIDATE spinlock index
literal SPL$C_PERFMON = 38;             !  PERFMON spinlock index
literal SPL$C_POOL = 39;                !  POOL spinlock index
literal SPL$C_MAILBOX = 40;             !  MAILBOX spinlock index
literal SPL$C_PR_LK11 = 41;             !  PRIMARY IPL 11 spinlock index
literal SPL$C_IOLOCK11 = 42;            !  IPL 11 I/O spinlock index
literal SPL$C_PR_LK10 = 43;             !  PRIMARY IPL 10 spinlock index
literal SPL$C_IOLOCK10 = 44;            !  IPL 10 I/O spinlock index
literal SPL$C_PR_LK9 = 45;              !  PRIMARY IPL 9 spinlock index
literal SPL$C_IOLOCK9 = 46;             !  IPL 9 I/O spinlock index
literal SPL$C_SCHED = 47;               !  SCHED spinlock index
literal SPL$C_MMG = 48;                 !  Memory management spinlock index
literal SPL$C_JIB = 49;                 !  JIB spinlock index
literal SPL$C_TIMER = 50;               !  TIMER spinlock index
literal SPL$C_PR_LK8 = 51;              !  PRIMARY IPL 8 spinlock index
literal SPL$C_IOLOCK8 = 52;             !  IPL 8 I/O spinlock index
literal SPL$C_FILSYS = 53;              !  File system spinlock index
literal SPL$C_QUEUEAST = 54;            !  QUEUEAST spinlock index
literal SPL$C_ASTDEL = 55;              !   temporary lock for UIS
literal SPL$C_SCS = 52;                 !  SCS spinlock index
literal SPL$_MIN_INDEX = 32;            !  Min spinlock index
literal SPL$_MAX_INDEX = 56;            !  Max spinlock index
literal SPL$_NUM_LOCKS = 31;            !  Max number of spinlocks (ever)
! 
!  Define some system-wide multiprocessing control flags
! 
literal SMP$M_ENABLED = 1;
literal SMP$M_START_CPU = 2;
literal SMP$M_CRASH_CPU = 4;
literal SMP$M_TODR = 8;
literal SMP$M_UNMOD_DRIVER = 16;
literal SMP$M_TODR_ACK = 32;
literal SMP$M_SYNCH = 64;
literal SMP$M_BENIGN = 128;
literal SMP$M_OVERRIDE = 1;
literal SMP$M_FOREVER = 2;
literal SMP$S_SMPDEF = 8;
macro SMP$L_FLAGS = 0,0,32,0 %;         !  SMP$GL_FLAGS
macro SMP$V_ENABLED = 0,0,1,0 %;        !  SMP operation is enabled
macro SMP$V_START_CPU = 0,1,1,0 %;      !  PRIMARY CPU has finished INIT
macro SMP$V_CRASH_CPU = 0,2,1,0 %;      !  A CPU is initiating BUGCHECK
macro SMP$V_TODR = 0,3,1,0 %;           !  SMP$GL_PROPOSED_TODR in use
macro SMP$V_UNMOD_DRIVER = 0,4,1,0 %;   !  Unmodified driver is loaded
macro SMP$V_TODR_ACK = 0,5,1,0 %;       !  SMP TODR operation complete
macro SMP$V_SYNCH = 0,6,1,0 %;          !  SMP SYNCHRONIZATION IMAGE LOADED
macro SMP$V_BENIGN = 0,7,1,0 %;         !  BENIGN STATE REQUESTED
macro SMP$L_STOP_CPU_FLAGS = 4,0,32,0 %; !  Input to STOP/CPU
macro SMP$V_OVERRIDE = 4,0,1,0 %;       !  Skip checks before stopping CPU
macro SMP$V_FOREVER = 4,1,1,0 %;        !  FOREVER means remove from
!  available set after stopping.
 
!*** MODULE $SPLDEF ***
! 
!   SPINLOCK Control Block
! 
literal SPL$M_INTERLOCK = 1;
literal SPL$C_SPL_SPINLOCK = 1;         !  Static system spinlock
literal SPL$C_SPL_FORKLOCK = 2;         !  Spinlock used for FORKLOCK
literal SPL$C_SPL_DEVICELOCK = 3;       !  Dynamic spinlock (devicelock)
literal SPL$K_PC_VEC_CNT = 8;           !  Size of PC vector
literal SPL$K_LENGTH = 80;              !  Structure size
literal SPL$C_LENGTH = 80;              !  Structure size
literal SPL$S_SPLDEF = 80;
macro SPL$B_SPINLOCK = 0,0,8,0 %;       !  Structure lock semaphore
macro SPL$V_INTERLOCK = 0,0,1,0 %;      !  Spinlock access interlock
macro SPL$B_IPL = 1,0,8,0 %;            !  Lock IPL defined for spinlock
macro SPL$B_RANK = 2,0,8,0 %;           !  RANK of spinlock
macro SPL$B_VEC_INX = 3,0,8,0 %;        !  PC vector index
macro SPL$W_OWN_CNT = 4,0,16,0 %;       !  Count of concurrent acquires
macro SPL$W_WAIT_CPUS = 6,0,16,0 %;     !  Count of waiting CPUs
macro SPL$W_SIZE = 8,0,16,0 %;          !  Structure size
macro SPL$B_TYPE = 10,0,8,0 %;          !  Structure type
macro SPL$B_SUBTYPE = 11,0,8,0 %;       !  Spinlock subtype
macro SPL$L_OWN_CPU = 12,0,32,0 %;      !  Owner CPU's physical ID
macro SPL$L_OWN_PC_VEC = 16,0,0,0 %;
literal SPL$S_OWN_PC_VEC = 32;          !  Last 8 calling PCs of acquirers
!   and releasers
macro SPL$L_WAIT_PC = 48,0,32,0 %;      !  Last busywait PC
macro SPL$Q_ACQ_COUNT = 52,0,0,0 %;
literal SPL$S_ACQ_COUNT = 8;            !  Count of actual acquisitions
macro SPL$L_BUSY_WAITS = 60,0,32,0 %;   !  Count of failed acquisitions
macro SPL$Q_SPINS = 64,0,0,0 %;
literal SPL$S_SPINS = 8;                !  Count number of spins
macro SPL$L_TIMO_INT = 72,0,32,0 %;     !  Busywait timeout interval
macro SPL$L_RLS_PC = 76,0,32,0 %;       !  PC of nested acquisition releaser
 
!*** MODULE $SPNBDEF ***
! +
!  SPNB - SCA POLLER NAME BLOCK
! 
!  THIS DATA STRUCTURE CONTAINS A LIST OF PROCESS NAMES WHICH WILL
!  BE SEARCHED FOR ON THE GIVEN REMOTE NODE.
! -
literal SPNB$C_HDRSIZ = 24;             ! SIZE OF HEADER
literal SPNB$S_SPNBDEF = 25;
macro SPNB$L_FLINK = 0,0,32,0 %;        ! FWD LINK 
macro SPNB$L_BLINK = 4,0,32,0 %;        ! BCK LINK 
macro SPNB$W_SIZE = 8,0,16,0 %;         ! STRUCTURE SIZE IN BYTES 
macro SPNB$B_TYPE = 10,0,8,0 %;         ! SCS STRUCTURE TYPE 
macro SPNB$B_SUBTYP = 11,0,8,0 %;       ! SCS STRUCTURE SUBTYPE FOR SPNB
macro SPNB$L_SB = 12,0,32,0 %;          ! SYSTEM BLOCK OF REMOTE NOTE
macro SPNB$L_ROUTINE = 16,0,32,0 %;     ! ADDRESS OF ROUTINE TO BE CALLED WHEN PROCESS FOUND
macro SPNB$B_INDEX = 20,0,8,0 %;        ! INDEX INTO PROCESS LIST OF NEXT PROCESS TO SEARCH FOR
macro SPNB$W_REFC = 21,0,16,0 %;        ! NUMBER OF REFERENCES TO SPNB
macro SPNB$B_FREE = 23,0,8,0 %;
literal SPNB$S_FREE = 1;                ! FREE BYTE
macro SPNB$B_NAMLST = 24,0,8,0 %;       ! START OF VARIABLE LENGTH LIST OF ADDRESSES OF PROCESS NAMES
! LIST IS ZERO TERMINATED
 
!*** MODULE $SPPBDEF ***
! +
!  SPPB - SCA POLLER PROCESS BLOCK
! 
!  THIS DATA STRUCTURE DESCRIBES A PROCESS NAME KNOWN
!  TO THE SCA DIRECTORY POLLER.
! -
literal SPPB$K_LENGTH = 40;
literal SPPB$C_LENGTH = 40;
literal SPPB$S_SPPBDEF = 40;
macro SPPB$L_FLINK = 0,0,32,0 %;        ! FWD LINK 
macro SPPB$L_BLINK = 4,0,32,0 %;        ! BCK LINK 
macro SPPB$W_SIZE = 8,0,16,0 %;         ! STRUCTURE SIZE IN BYTES 
macro SPPB$B_TYPE = 10,0,8,0 %;         ! SCS STRUCTURE TYPE 
macro SPPB$B_SUBTYP = 11,0,8,0 %;       ! SCS STRUCTURE SUBTYPE FOR SPPB
macro SPPB$B_PROCNAM = 12,0,0,0 %;
literal SPPB$S_PROCNAM = 16;            ! ASCII STRING FOR PROCESS NAME 
macro SPPB$L_RTN = 28,0,32,0 %;         ! ADDRESS OF NOTIFICATION ROUTINE
macro SPPB$L_CTX = 32,0,32,0 %;         ! CONTEXT FOR NOTIFICATION ROUTINE
macro SPPB$W_BIT = 36,0,16,0 %;         ! BIT ASSIGNED TO THIS PROCESS NAME
 
!*** MODULE $SRVBUFDEF ***
! +
!  SRVBUF Definitions -- MSCP Server local buffer
! -
literal SRVBUF$S_SRVBUFDEF = 24;
macro SRVBUF$L_FLINK = 0,0,32,0 %;      !  Field maintained for 
macro SRVBUF$L_BLINK = 4,0,32,0 %;      !   compatability
macro SRVBUF$W_DEBITS = 8,0,16,0 %;     !  Number of requestors memory has been lent to
macro SRVBUF$B_TYPE = 10,0,8,0 %;       !  MSCP type structure
macro SRVBUF$B_SUBTYPE = 11,0,8,0 %;    !   with a SRVBUF subtype  (4)
macro SRVBUF$L_SIZE = 12,0,32,0 %;      !  Total buffer area size
macro SRVBUF$L_BUFF_START = 16,0,32,0 %; !  List head for buffer free list
macro SRVBUF$L_FREE_SIZE = 20,0,32,0 %; !  Buffer size for free list
 
!*** MODULE $SSCDEF ***
! ++
! 	SSC definitions
! --
!  The BASE register is at physical address %X2014000.  It is loaded with
!  a value at which to locate all the other registers.  All other registers
!  are at @BASE+offset.
literal SSC$AL_BASE = 538181632;        ! Base address
literal SSC$L_CONFIG = 16;              ! Configuration
literal SSC$L_TODR = 108;               ! Time-of-year
literal SSC$L_TCR0 = 256;               ! Timer 0 control
literal SSC$L_TIR0 = 260;               ! Timer 0 interval
literal SSC$L_TNIR0 = 264;              ! Timer 0 next interval
literal SSC$L_TIVR0 = 268;              ! Timer 0 interrupt vector
literal SSC$L_TCR1 = 272;               ! Timer 1 control
literal SSC$L_TIR1 = 276;               ! Timer 1 interval
literal SSC$L_TNIR1 = 264;              ! Timer 1 next interval
literal SSC$L_TIVR1 = 268;              ! Timer 1 interrupt vector
literal SSC$B_RAM_START = 1024;         ! Start of SSC RAM
literal SSC$B_RAM_END = 2047;           ! End of SSC RAM
literal SSC$M_TCR_RUN = 1;
literal SSC$M_TCR_STP = 4;
literal SSC$M_TCR_XFR = 16;
literal SSC$M_TCR_SGL = 32;
literal SSC$M_TCR_IE = 64;
literal SSC$M_TCR_INT = 128;
literal SSC$M_TCR_ERR = -2147483648;
literal SSC$S_TCR = 4;
macro SSC$V_TCR_RUN = 0,0,1,0 %;
macro SSC$V_TCR_MBZ_0 = 0,1,1,0 %;
macro SSC$V_TCR_STP = 0,2,1,0 %;
macro SSC$V_TCR_MBZ_1 = 0,3,1,0 %;
macro SSC$V_TCR_XFR = 0,4,1,0 %;
macro SSC$V_TCR_SGL = 0,5,1,0 %;
macro SSC$V_TCR_IE = 0,6,1,0 %;
macro SSC$V_TCR_INT = 0,7,1,0 %;
macro SSC$V_TCR_MBZ_2 = 0,8,23,0 %;
literal SSC$S_TCR_MBZ_2 = 23;
macro SSC$V_TCR_ERR = 0,31,1,0 %;
 
!*** MODULE $SSCTDEF ***
! +
!   This file contains offset definitions for SSC timer registers accessible 
!  through XMI private space on the XMI-based processors.
! -
literal SSCT_TCR0$M_RUN = 1;
literal SSCT_TCR0$M_STP = 4;
literal SSCT_TCR0$M_XFR = 16;
literal SSCT_TCR0$M_SGL = 32;
literal SSCT_TCR0$M_IE = 64;
literal SSCT_TCR0$M_INT = 128;
literal SSCT_TCR0$M_ERR = -2147483648;
literal SSCT_TIVR0$M_VECTOR = 1020;
literal SSCT_TCR1$M_RUN = 1;
literal SSCT_TCR1$M_STP = 4;
literal SSCT_TCR1$M_XFR = 16;
literal SSCT_TCR1$M_SGL = 32;
literal SSCT_TCR1$M_IE = 64;
literal SSCT_TCR1$M_INT = 128;
literal SSCT_TCR1$M_ERR = -2147483648;
literal SSCT_TIVR1$M_VECTOR = 1020;
literal SSCT$S_SSCTDEF = 32;
macro SSCT$L_TCR0 = 0,0,32,0 %;
macro SSCT_TCR0$V_RUN = 0,0,1,0 %;      !  Enables timer
macro SSCT_TCR0$V_STP = 0,2,1,0 %;      !  Stop on overflow
macro SSCT_TCR0$V_XFR = 0,4,1,0 %;      !  1=copy TNIRn to TIRn
macro SSCT_TCR0$V_SGL = 0,5,1,0 %;      !  Increment counter by one
macro SSCT_TCR0$V_IE = 0,6,1,0 %;       !  Interrupt Enable
macro SSCT_TCR0$V_INT = 0,7,1,0 %;      !  Set on timer overflow
macro SSCT_TCR0$V_ERR = 0,31,1,0 %;     !  Indicates missed overflow
macro SSCT$L_TIR0 = 4,0,32,0 %;         !  Timer Interval Register 0
macro SSCT$L_TNIR0 = 8,0,32,0 %;        !  Timer Next Interval Reg. 0
macro SSCT$L_TIVR0 = 12,0,32,0 %;
macro SSCT_TIVR0$V_VECTOR = 12,2,8,0 %;
literal SSCT_TIVR0$S_VECTOR = 8;        !  Longword aligned SCB vector
macro SSCT$L_TCR1 = 16,0,32,0 %;
macro SSCT_TCR1$V_RUN = 16,0,1,0 %;     !  Enables timer           
macro SSCT_TCR1$V_STP = 16,2,1,0 %;     !  Stop on overflow
macro SSCT_TCR1$V_XFR = 16,4,1,0 %;     !  1=copy TNIRn to TIRn
macro SSCT_TCR1$V_SGL = 16,5,1,0 %;     !  Increment counter by one
macro SSCT_TCR1$V_IE = 16,6,1,0 %;      !  Interrupt Enable
macro SSCT_TCR1$V_INT = 16,7,1,0 %;     !  Set on timer overflow
macro SSCT_TCR1$V_ERR = 16,31,1,0 %;    !  Indicates missed overflow
macro SSCT$L_TIR1 = 20,0,32,0 %;        !  Timer Interval Register 1
macro SSCT$L_TNIR1 = 24,0,32,0 %;       !  Timer Next Interval Reg. 1
macro SSCT$L_TIVR1 = 28,0,32,0 %;
macro SSCT_TIVR1$V_VECTOR = 28,2,8,0 %;
literal SSCT_TIVR1$S_VECTOR = 8;        !  Longword aligned SCB vector
 
!*** MODULE $STATEDEF ***
! +
!  SCHEDULING STATES
! -
!  DEFINITIONS START AT 1 
literal SCH$C_COLPG = 1;                ! COLLIDED PAGE WAIT 
literal SCH$C_MWAIT = 2;                ! MUTEX AND MISCELLANEOUS RESOURCE WAIT 
literal SCH$C_CEF = 3;                  ! COMMON EVENT FLAG WAIT STATE 
literal SCH$C_PFW = 4;                  ! PAGE FAULT WAIT 
literal SCH$C_LEF = 5;                  ! LOCAL EVENT FLAG WAIT 
literal SCH$C_LEFO = 6;                 ! LOCAL EVENT FLAG WAIT OUT OF BALANCE SET 
literal SCH$C_HIB = 7;                  ! HIBERNATE WAIT 
literal SCH$C_HIBO = 8;                 ! HIBERNATE WAIT OUT OF BALANCE SET 
literal SCH$C_SUSP = 9;                 ! SUSPENDED 
literal SCH$C_SUSPO = 10;               ! SUSPENDED OUT OF THE BALANCE SET 
literal SCH$C_FPG = 11;                 ! FREEPAGE WAIT 
literal SCH$C_COM = 12;                 ! COMPUTE, IN BALANCE SET STATE 
literal SCH$C_COMO = 13;                ! COMPUTE, OUT OF BALANCE SET STATE 
literal SCH$C_CUR = 14;                 ! CURRENT PROCESS STATE 
 
!*** MODULE $SYSAPDEF ***
! +
!  SYSAP - FLAGS USED IN THE SYSAP-SCS INTERFACE
! -
! OPTIONS FOR DISPOSING OF
!  SENT DATAGRAM:
!  0 ORIGIN, INCR OF 1:
literal SYSAP$C_DISPQ = 0;              !  DISPOSE ON DG FREE QUEUE
literal SYSAP$C_DISPRET = 1;            !  DISPOSE BY RETURN TO SYSAP
literal SYSAP$C_DISPPO = 2;             !  DISPOSE BY RETURN TO POOL
! FLAGS SPECIFYING TYPE OF DG
!  REC'D FROM REMOTE SYSAP:
!  0 ORIGIN, INCR OF 1:
literal SYSAP$C_DGREC = 0;              !  DG REC'D FROM REMOTE
literal SYSAP$C_DGSNT = 1;              !  DG SENT
 
!*** MODULE $SYSGDEF ***
literal SYSG$M_WORKSTATION_PRESENT = 1;
literal SYSG$M_COLOR = 2;
literal SYSG$M_DISK_BUFFER = 4;
literal SYSG$M_KAPRI = 8;
literal SYSG$M_ASYNC_OUTPUT = 16;
literal SYSG$M_SCANPROC = 32;
literal SYSG$K_LENGTH = 24;
literal SYSG$C_LENGTH = 24;
literal SYSG$S_SYSG$ = 24;
macro SYSG$L_LK201_UCB = 0,0,32,0 %;    !  Addr. of UCB for the LK201.
macro SYSG$L_MOUSE_UCB = 4,0,32,0 %;    !  Addr. of UCB for mouse line.
macro SYSG$W_SIZE = 8,0,16,0 %;         !  Length of structure.
macro SYSG$L_SCRATCH_RAM = 12,0,32,0 %; !  PHYSICAL adr of CP scratch RAM
macro SYSG$L_CTSI = 12,0,32,0 %;        !  CTSI pointer on Firefox
macro SYSG$L_STATE_ARRAY = 16,0,32,0 %; !  Pointer to state array
macro SYSG$W_UCB_CONFIG = 20,0,16,0 %;  !  This field tells YEDRIVER
!   which serial lines should
!   receive new UCBs.
macro SYSG$W_FLAGS = 22,0,16,0 %;       !  Contains the following flags:
macro SYSG$V_WORKSTATION_PRESENT = 22,0,1,0 %; !  LK201 was on serial line 0
!  (Bit set by OPDRV in SYSLOA)
macro SYSG$V_COLOR = 22,1,1,0 %;        !  Color option was found
!  (Bit set by CPU410)
macro SYSG$V_DISK_BUFFER = 22,2,1,0 %;  !  Disk/tape buffer was found
macro SYSG$V_KAPRI = 22,3,1,0 %;        !  KAPRI video was found
!  (Set by CPU410)
macro SYSG$V_ASYNC_OUTPUT = 22,4,1,0 %; !  Output never interrupts
macro SYSG$V_SCANPROC = 22,5,1,0 %;     !  ScanProc video was found
 
!*** MODULE $TASTDEF ***
! 
!  TERMINAL AST PACKET. THIS STRUCTURE IS USED BY TERMINAL SERVICES TO
!  DELIVER OUT OF BAND CHARACTER ASTS.
! 
literal TAST$M_MASK_DSBL = 1;
literal TAST$M_INCLUDE = 2;
literal TAST$M_ONE_SHOT = 4;
literal TAST$M_BUSY = 8;
literal TAST$M_LOST = 16;
literal TAST$M_ABORT = 32;
literal TAST$K_LENGTH = 52;
literal TAST$C_LENGTH = 52;
literal TAST$M_ABO = 16384;
literal TAST$M_INC = 32768;
literal TAST$S_TASTDEF = 54;
macro TAST$L_FLINK = 28,0,32,0 %;       ! FORWARD LINK 
macro TAST$L_AST = 32,0,32,0 %;         ! SAVED AST ADDRESS 
macro TAST$L_ASTPRM = 36,0,32,0 %;      ! SAVED AST PARAMETER 
macro TAST$L_PID = 40,0,32,0 %;         ! SAVED PID 
macro TAST$B_RMOD = 44,0,8,0 %;         ! SAVED RMOD 
macro TAST$B_CTRL = 45,0,8,0 %;         ! CONTROL FIELD 
macro TAST$V_MASK_DSBL = 45,0,1,0 %;    ! DISABLE MASK PROCESSING 
macro TAST$V_INCLUDE = 45,1,1,0 %;      ! INCLUDE CHARACTER 
macro TAST$V_ONE_SHOT = 45,2,1,0 %;     ! ONE SHOT AST 
macro TAST$V_BUSY = 45,3,1,0 %;         ! BLOCK BUSY 
macro TAST$V_LOST = 45,4,1,0 %;         ! AST LOST
macro TAST$V_ABORT = 45,5,1,0 %;        ! ABORT I/O
macro TAST$W_CHAN = 46,0,16,0 %;        ! CHANNEL 
macro TAST$L_MASK = 48,0,32,0 %;        ! OUT OF BAND MASK 
macro TAST$R_STATUS_BITS = 52,0,16,0 %;
macro TAST$V_FILL = 52,0,14,0 %;
literal TAST$S_FILL = 14;               !  First byte and spares
macro TAST$V_ABO = 52,14,1,0 %;         !  ABORT flag
macro TAST$V_INC = 52,15,1,0 %;         !  INCLUDE flag
 
!*** MODULE $TBIDEF ***
! +
!  TBI - DEFINE EXTENDED TB INVALIDATION BITS FOR MMG$GL_TBI_FLAGS
! 
!  The EXTENDED_TBI bit is set during init if the system may require
!  extended tb invalidation.  The extended invalidation routines are
!  located in PAGEFAULT.  The GRAPHICS_TBI bit is set if the graphics
!  invalidation SYSLOA vector is initialized.
! 
! -
literal MMG$M_EXTENDED_TBI = 1;
literal MMG$M_GRAPHICS_TBI = -2147483648;
literal MMG$S_TBI_BITS = 4;
macro MMG$V_EXTENDED_TBI = 0,0,1,0 %;
macro MMG$v_spare_tbi = 0,1,30,0 %;
literal MMG$s_spare_tbi = 30;
macro MMG$V_GRAPHICS_TBI = 0,31,1,0 %;
 
!*** MODULE $TQEDEF ***
! +
!  TQE - TIME QUEUE ENTRY
! 
!  TIME QUEUE ENTRIES ARE UTILIZED TO SET TIMERS, WAKE UP PROCESSES, AND
!  FOR INTERNAL SYSTEM SUBROUTINES.
! -
literal TQE$M_REPEAT = 4;
literal TQE$M_ABSOLUTE = 8;
literal TQE$M_CHK_CPUTIM = 16;
literal TQE$K_LENGTH = 52;              ! LENGTH OF STANDARD TQE 
literal TQE$C_LENGTH = 52;              ! LENGTH OF STANDARD TQE 
! 
literal TQE$C_TMSNGL = 0;               ! TIMER ENTRY SINGLE SHOT REQUEST 
literal TQE$C_SSREPT = 5;               ! SYSTEM SUBROUTINE REPEAT REQUEST 
literal TQE$C_SSSNGL = 1;               ! SYSTEM SUBROUTINE SINGLE SHOT REQUEST 
literal TQE$C_WKREPT = 6;               ! WAKE ENTRY REPEAT REQUEST 
literal TQE$C_WKSNGL = 2;               ! WAKE ENTRY SINGLE SHOT REQUEST 
literal TQE$S_TQEDEF = 52;
macro TQE$L_TQFL = 0,0,32,0 %;          ! TIME QUEUE FORWARD LINK 
macro TQE$L_TQBL = 4,0,32,0 %;          ! TIME QUEUE BACKWARD LINK 
macro TQE$W_SIZE = 8,0,16,0 %;          ! SIZE OF TQE IN BYTES 
macro TQE$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE FOR TQE 
macro TQE$B_RQTYPE = 11,0,8,0 %;        ! TIME QUEUE ENTRY TYPE 
macro TQE$V_REPEAT = 11,2,1,0 %;        !  REPEAT REQUEST (1=YES) 
macro TQE$V_ABSOLUTE = 11,3,1,0 %;      !  Absolute expiration time specified 
macro TQE$V_CHK_CPUTIM = 11,4,1,0 %;    !  Process CPU time constrained request
macro TQE$L_PID = 12,0,32,0 %;          ! TIMER OR WAKE REQUEST PROCESS ID 
macro TQE$L_FPC = 12,0,32,0 %;          ! TIMER SUBROUTINE ADDRESS 
macro TQE$L_AST = 16,0,32,0 %;          ! ADDRESS OF AST ROUTINE 
macro TQE$L_FR3 = 16,0,32,0 %;          ! TIMER SUBROUTINE SAVED R3 
macro TQE$L_ASTPRM = 20,0,32,0 %;       ! AST PARAMETER 
macro TQE$L_FR4 = 20,0,32,0 %;          ! TIMER SUBROUTINE SAVED R4 
macro TQE$Q_TIME = 24,0,0,0 %;
literal TQE$S_TIME = 8;                 ! ABSOLUTE EXPIRATION TIME 
macro TQE$Q_DELTA = 32,0,0,0 %;
literal TQE$S_DELTA = 8;                ! DELTA REPEAT TIME 
macro TQE$B_RMOD = 40,0,8,0 %;          ! ACCESS MODE OF REQUEST 
macro TQE$B_EFN = 41,0,8,0 %;           ! EVENT FLAG NUMBER AND EVENT GROUP 
macro TQE$L_RQPID = 44,0,32,0 %;        ! REQUESTER PROCESS ID 
macro TQE$L_CPUTIM = 48,0,32,0 %;       !  Process CPU time at which entry becomes due
!  TIME QUEUE ENTRY REQUEST TYPE DEFINITIONS
! 
 
!*** MODULE $UAFDEF ***
! ++
!  User authorization file format
!  Note: With the exception of the username and account name,
!  all strings are blank padded counted strings. Username and
!  account name are uncounted, blank padded.
! --
literal UAF$C_USER_ID = 1;              !  main user ID record
literal UAF$C_VERSION1 = 1;             !  this version
literal UAF$C_KEYED_PART = 52;          !  ISAM keys come this far
literal UAF$C_MAX_PWD_LENGTH = 32;      !  maximum plaintext password length
literal UAF$K_MAX_PWD_LENGTH = 32;      !  maximum plaintext password length
literal UAF$C_AD_II = 0;                !  AUTODIN-II 32 bit crc code
literal UAF$C_PURDY = 1;                !  Purdy polynomial over salted input
literal UAF$C_PURDY_V = 2;              !  Purdy polynomial + variable length username
literal UAF$C_PURDY_S = 3;              !  PURDY_V folded into password length
literal UAF$C_PREFERED_ALGORITHM = 3;   !  prefered hash algorithm
literal UAF$K_PREFERED_ALGORITHM = 3;   !  prefered hash algorithm
literal UAF$C_CUST_ALGORITHM = 128;     !  customer algorithm division
literal UAF$K_CUST_ALGORITHM = 128;     !  customer algorithm division
literal UAF$K_FIXED = 644;              !  length of fixed portion
literal UAF$C_FIXED = 644;              !  length of fixed portion
literal UAF$K_LENGTH = 1412;
literal UAF$C_LENGTH = 1412;
literal UAF$S_UAFDEF = 1412;
macro UAF$B_RTYPE = 0,0,8,0 %;          !  UAF record type
macro UAF$B_VERSION = 1,0,8,0 %;        !  UAF format version
macro UAF$W_USRDATOFF = 2,0,16,0 %;     !  offset of counted string of user data
macro UAF$T_USERNAME = 4,0,0,0 %;
literal UAF$S_USERNAME = 32;            !  username
macro UAF$T_USERNAME_TAG = 35,0,8,0 %;  !  tag to differentiate records
macro UAF$L_UIC = 36,0,32,0 %;          !  user ID code
macro UAF$W_MEM = 36,0,16,0 %;          !  member subfield
macro UAF$W_GRP = 38,0,16,0 %;          !  group subfield
macro UAF$L_SUB_ID = 40,0,32,0 %;       !  user sub-identifier
macro UAF$Q_PARENT_ID = 44,0,0,0 %;
literal UAF$S_PARENT_ID = 8;            !  identifier of owner of this account
macro UAF$T_ACCOUNT = 52,0,0,0 %;
literal UAF$S_ACCOUNT = 32;             !  account name
macro UAF$T_OWNER = 84,0,0,0 %;
literal UAF$S_OWNER = 32;               !  owner's name
macro UAF$T_DEFDEV = 116,0,0,0 %;
literal UAF$S_DEFDEV = 32;              !  default device
macro UAF$T_DEFDIR = 148,0,0,0 %;
literal UAF$S_DEFDIR = 64;              !  default directory
macro UAF$T_LGICMD = 212,0,0,0 %;
literal UAF$S_LGICMD = 64;              !  login command file
macro UAF$T_DEFCLI = 276,0,0,0 %;
literal UAF$S_DEFCLI = 32;              !  default command interpreter
macro UAF$T_CLITABLES = 308,0,0,0 %;
literal UAF$S_CLITABLES = 32;           !  user CLI tables
macro UAF$Q_PWD = 340,0,0,0 %;
literal UAF$S_PWD = 8;                  !  hashed password
macro UAF$L_PWD = 340,0,32,0 %;         !  32 bit subfield
macro UAF$Q_PWD2 = 348,0,0,0 %;
literal UAF$S_PWD2 = 8;                 !  second password
macro UAF$W_LOGFAILS = 356,0,16,0 %;    !  count of login failures
macro UAF$W_SALT = 358,0,16,0 %;        !  random password salt
macro UAF$B_ENCRYPT = 360,0,8,0 %;      !  primary password hash algorithm
!  known hash algorithm indices
macro UAF$B_ENCRYPT2 = 361,0,8,0 %;     !  secondary password hash algorithm
macro UAF$B_PWD_LENGTH = 362,0,8,0 %;   !  minimum password length
macro UAF$Q_EXPIRATION = 364,0,0,0 %;
literal UAF$S_EXPIRATION = 8;           !  expiration date for account
macro UAF$Q_PWD_LIFETIME = 372,0,0,0 %;
literal UAF$S_PWD_LIFETIME = 8;         !  password lifetime
macro UAF$Q_PWD_DATE = 380,0,0,0 %;
literal UAF$S_PWD_DATE = 8;             !  date of password change
macro UAF$Q_PWD2_DATE = 388,0,0,0 %;
literal UAF$S_PWD2_DATE = 8;            !  date of 2nd password change
macro UAF$Q_LASTLOGIN_I = 396,0,0,0 %;
literal UAF$S_LASTLOGIN_I = 8;          !  date of last interactive login
macro UAF$Q_LASTLOGIN_N = 404,0,0,0 %;
literal UAF$S_LASTLOGIN_N = 8;          !  date of last non-interactive login
macro UAF$Q_PRIV = 412,0,0,0 %;
literal UAF$S_PRIV = 8;                 !  process privilege vector
macro UAF$Q_DEF_PRIV = 420,0,0,0 %;
literal UAF$S_DEF_PRIV = 8;             !  default process privileges
macro UAF$R_MIN_CLASS = 428,0,0,0 %;
literal UAF$S_MIN_CLASS = 20;           !  minimum security class
macro UAF$R_MAX_CLASS = 448,0,0,0 %;
literal UAF$S_MAX_CLASS = 20;           !  maximum security class
macro UAF$L_FLAGS = 468,0,32,0 %;       !  user flags longword
macro UAF$V_DISCTLY = 468,0,1,0 %;      !  no user control-y
macro UAF$V_DEFCLI = 468,1,1,0 %;       !  only allow user default CLI
macro UAF$V_LOCKPWD = 468,2,1,0 %;      !  disable SET PASSWORD command
macro UAF$V_RESTRICTED = 468,3,1,0 %;   !  restricted account (pre-V5.2 CAPTIVE)
macro UAF$V_DISACNT = 468,4,1,0 %;      !  no interactive login
macro UAF$V_DISWELCOM = 468,5,1,0 %;    !  skip welcome message
macro UAF$V_DISMAIL = 468,6,1,0 %;      !  skip new mail message
macro UAF$V_NOMAIL = 468,7,1,0 %;       !  disable mail delivery
macro UAF$V_GENPWD = 468,8,1,0 %;       !  passwords must be generated
macro UAF$V_PWD_EXPIRED = 468,9,1,0 %;  !  password has expired
macro UAF$V_PWD2_EXPIRED = 468,10,1,0 %; !  2nd password has expired
macro UAF$V_AUDIT = 468,11,1,0 %;       !  audit all actions
macro UAF$V_DISREPORT = 468,12,1,0 %;   !  skip last login messages
macro UAF$V_DISRECONNECT = 468,13,1,0 %; !  inhibit reconnections
macro UAF$V_AUTOLOGIN = 468,14,1,0 %;   !  auto-login only
macro UAF$V_DISFORCE_PWD_CHANGE = 468,15,1,0 %; !  disable forced password change
macro UAF$V_CAPTIVE = 468,16,1,0 %;     !  captive account (no overrides)
macro UAF$V_DISIMAGE = 468,17,1,0 %;    !  disable arbitrary image activation
macro UAF$V_DISPWDDIC = 468,18,1,0 %;   !  disable password dictionary search
macro UAF$V_DISPWDHIS = 468,19,1,0 %;   !  disable password history search
macro UAF$B_NETWORK_ACCESS_P = 472,0,24,0 %;
literal UAF$S_NETWORK_ACCESS_P = 3;     !  hourly network access, primary
macro UAF$B_NETWORK_ACCESS_S = 475,0,24,0 %;
literal UAF$S_NETWORK_ACCESS_S = 3;     !  hourly network access, secondary
macro UAF$B_BATCH_ACCESS_P = 478,0,24,0 %;
literal UAF$S_BATCH_ACCESS_P = 3;       !  hourly batch access, primary
macro UAF$B_BATCH_ACCESS_S = 481,0,24,0 %;
literal UAF$S_BATCH_ACCESS_S = 3;       !  hourly batch access, secondary
macro UAF$B_LOCAL_ACCESS_P = 484,0,24,0 %;
literal UAF$S_LOCAL_ACCESS_P = 3;       !  hourly local access, primary
macro UAF$B_LOCAL_ACCESS_S = 487,0,24,0 %;
literal UAF$S_LOCAL_ACCESS_S = 3;       !  hourly local access, secondary
macro UAF$B_DIALUP_ACCESS_P = 490,0,24,0 %;
literal UAF$S_DIALUP_ACCESS_P = 3;      !  hourly dialup access, primary
macro UAF$B_DIALUP_ACCESS_S = 493,0,24,0 %;
literal UAF$S_DIALUP_ACCESS_S = 3;      !  hourly dialup access, secondary
macro UAF$B_REMOTE_ACCESS_P = 496,0,24,0 %;
literal UAF$S_REMOTE_ACCESS_P = 3;      !  hourly remote access, primary
macro UAF$B_REMOTE_ACCESS_S = 499,0,24,0 %;
literal UAF$S_REMOTE_ACCESS_S = 3;      !  hourly remote access, secondary
macro UAF$B_PRIMEDAYS = 514,0,8,0 %;    !  bits representing primary days
macro UAF$V_MONDAY = 514,0,1,0 %;       !  bit clear means this is a primary day
macro UAF$V_TUESDAY = 514,1,1,0 %;      !  bit set means this is an off day
macro UAF$V_WEDNESDAY = 514,2,1,0 %;
macro UAF$V_THURSDAY = 514,3,1,0 %;
macro UAF$V_FRIDAY = 514,4,1,0 %;
macro UAF$V_SATURDAY = 514,5,1,0 %;
macro UAF$V_SUNDAY = 514,6,1,0 %;
macro UAF$B_PRI = 516,0,8,0 %;          !  base process priority
macro UAF$B_QUEPRI = 517,0,8,0 %;       !  maximum job queuing priority
macro UAF$W_MAXJOBS = 518,0,16,0 %;     !  maximum jobs for UIC allowed
!  0 means no limit
macro UAF$W_MAXACCTJOBS = 520,0,16,0 %; !  maximum jobs for account allowed
!  0 means no limit
macro UAF$W_MAXDETACH = 522,0,16,0 %;   !  maximum detached processes for UIC
!  0 means no limit
macro UAF$W_PRCCNT = 524,0,16,0 %;      !  subprocess creation limit
macro UAF$W_BIOLM = 526,0,16,0 %;       !  buffered I/O limit
macro UAF$W_DIOLM = 528,0,16,0 %;       !  direct I/O limit
macro UAF$W_TQCNT = 530,0,16,0 %;       !  timer queue entry limit
macro UAF$W_ASTLM = 532,0,16,0 %;       !  AST queue limit
macro UAF$W_ENQLM = 534,0,16,0 %;       !  enqueue limit
macro UAF$W_FILLM = 536,0,16,0 %;       !  open file limit
macro UAF$W_SHRFILLM = 538,0,16,0 %;    !  shared file limit
macro UAF$L_WSQUOTA = 540,0,32,0 %;     !  working set size quota
macro UAF$L_DFWSCNT = 544,0,32,0 %;     !  default working set size
macro UAF$L_WSEXTENT = 548,0,32,0 %;    !  working set size limit
macro UAF$L_PGFLQUOTA = 552,0,32,0 %;   !  page file quota
macro UAF$L_CPUTIM = 556,0,32,0 %;      !  CPU time quota
macro UAF$L_BYTLM = 560,0,32,0 %;       !  buffered I/O byte count limit
macro UAF$L_PBYTLM = 564,0,32,0 %;      !  paged buffer I/O byte count limit
macro UAF$L_JTQUOTA = 568,0,32,0 %;     !  job-wide logical name table creation quota
macro UAF$W_PROXY_LIM = 572,0,16,0 %;   !  number of proxies user can grant
macro UAF$W_PROXIES = 574,0,16,0 %;     !  number of proxies granted
macro UAF$W_ACCOUNT_LIM = 576,0,16,0 %; !  number of sub-accounts allowed
macro UAF$W_ACCOUNTS = 578,0,16,0 %;    !  number of sub-accounts in use
 
!*** MODULE $UASDEF ***
! +
!  UNIBUS ADDRESS SPACE REGISTER DEFINITIONS FOR DW750
!  	(SECOND UNIBUS ADAPTER ON 11/750)
! -
literal UAS$M_IP_CR1_PIE = 4096;
literal UAS$M_IP_CR1_PDN = 8192;
literal UAS$S_UASDEF = 5222;
macro UAS$R_IP = 5216,0,0,0 %;
literal UAS$S_IP = 6;                   !  INTER-PROCESSOR EXERCISER COMMUNICATOR
macro UAS$W_IP_CR1 = 5220,0,16,0 %;     !  THE THIRD IPEC REGISTER, CR1
macro UAS$V_IP_CR1_PIE = 5220,12,1,0 %; !  POWERFAIL INTERRUPT ENABLE
macro UAS$V_IP_CR1_PDN = 5220,13,1,0 %; !  POWER DOWN STATUS BIT
 
!*** MODULE $UBADEF ***
! +
!  UNIBUS ADAPTER REGISTER OFFSET DEFINITIONS
! -
literal UBA$M_CSR_UBIC = 65536;
literal UBA$M_CSR_UBPDN = 131072;
literal UBA$M_CSR_UBIIP = 262144;
literal UBA$M_CSR_OT = 2097152;
literal UBA$M_CSR_PU = 4194304;
literal UBA$M_CSR_PD = 8388608;
literal UBA$M_CSR_XMFLT = 67108864;
literal UBA$M_CSR_MT = 134217728;
literal UBA$M_CSR_IS = 268435456;
literal UBA$M_CSR_URD = 536870912;
literal UBA$M_CSR_WS = 1073741824;
literal UBA$M_CSR_PE = -2147483648;
literal UBA$M_CR_INIT = 1;
literal UBA$M_CR_UBPF = 2;
literal UBA$M_CR_CNFIE = 4;
literal UBA$M_CR_SUEFIE = 8;
literal UBA$M_CR_USEFIE = 16;
literal UBA$M_CR_BRIE = 32;
literal UBA$M_CR_IFSIE = 64;
literal UBA$M_CR_ARLVL = 384;
literal UBA$M_SR_SSYNC = 1;
literal UBA$M_SR_UBSTO = 2;
literal UBA$M_SR_LER = 4;
literal UBA$M_SR_MRPE = 8;
literal UBA$M_SR_IVMR = 16;
literal UBA$M_SR_DPPE = 32;
literal UBA$M_SR_CXTMO = 64;
literal UBA$M_SR_CXTER = 128;
literal UBA$M_SR_CRD = 256;
literal UBA$M_SR_RDS = 512;
literal UBA$M_SR_RDTO = 1024;
literal UBA$M_SR_BRID = 2048;
literal UBA$M_SR_BRSVF = 268435456;
literal UBA$M_SR_RIE = 536870912;
literal UBA$M_SR_UBIFS = 1073741824;
literal UBA$M_BRRVR_AIR = -2147483648;
literal UBA$M_DPR_DPF = 536870912;
literal UBA$M_DPR_XMTER = 1073741824;
literal UBA$M_DPR_BNE = -2147483648;
literal UBA$M_MAP_BO = 33554432;
literal UBA$M_MAP_VALID = -2147483648;
literal UBA$C_MAXDP = 15;               ! MAXIMUM DATAPATH ! 
literal UBA$S_UBADEF = 4032;
macro UBA$L_CSR = 0,0,32,0 %;           ! CONFIGURATION STATUS REGISTER 
macro UBA$V_CSR_ADCOD = 0,0,8,0 %;
literal UBA$S_CSR_ADCOD = 8;            !  ADAPTER CODE FIELD 
macro UBA$V_CSR_UBIC = 0,16,1,0 %;      !  UNIBUS INITIALIZATION COMPLETE 
macro UBA$V_CSR_UBPDN = 0,17,1,0 %;     !  UNIBUS POWER DOWN 
macro UBA$V_CSR_UBIIP = 0,18,1,0 %;     !  UNIBUS INITIALIZATION IN PROGRESS 
macro UBA$V_CSR_OT = 0,21,1,0 %;        !  OVER TEMPERATURE 
macro UBA$V_CSR_PU = 0,22,1,0 %;        !  ADAPTER POWER UP 
macro UBA$V_CSR_PD = 0,23,1,0 %;        !  ADAPTER POWER DOWN 
macro UBA$V_CSR_XMFLT = 0,26,1,0 %;     !  TRANSMITTER FAULT 
macro UBA$V_CSR_MT = 0,27,1,0 %;        !  MULTIPLE TRANSMITTERS 
macro UBA$V_CSR_IS = 0,28,1,0 %;        !  INTERLOCK SEQUENCE FAULT 
macro UBA$V_CSR_URD = 0,29,1,0 %;       !  UNEXPECTED READ DATA 
macro UBA$V_CSR_WS = 0,30,1,0 %;        !  WRITE SEQUENCE DATA 
macro UBA$V_CSR_PE = 0,31,1,0 %;        !  SBI PARITY ERROR 
macro UBA$L_CR = 4,0,32,0 %;            ! CONTROL REGISTER 
macro UBA$V_CR_INIT = 4,0,1,0 %;        !  ADAPTER INITIALIZATION 
macro UBA$V_CR_UBPF = 4,1,1,0 %;        !  UNIBUS POWER FAIL 
macro UBA$V_CR_CNFIE = 4,2,1,0 %;       !  CONFIGURATION INTERRUPT ENABLE 
macro UBA$V_CR_SUEFIE = 4,3,1,0 %;      !  SBI TO UNIBUS ERROR FIELD INTERRUPT ENABLE 
macro UBA$V_CR_USEFIE = 4,4,1,0 %;      !  UNIBUS TO SBI ERROR FIELD INTERRUPT ENABLE 
macro UBA$V_CR_BRIE = 4,5,1,0 %;        !  BUS REQUEST INTERRUPT ENABLE 
macro UBA$V_CR_IFSIE = 4,6,1,0 %;       !  INTERRUPT FIELD SWITCH INTERRUPT ENABLE 
macro UBA$V_CR_ARLVL = 4,7,2,0 %;
literal UBA$S_CR_ARLVL = 2;             !  ADAPTER REQUEST LEVEL 
macro UBA$V_CR_MRDSB = 4,26,5,0 %;
literal UBA$S_CR_MRDSB = 5;             !  MAP REGISTER DISABLE 
macro UBA$L_SR = 8,0,32,0 %;            ! STATUS REGISTER 
macro UBA$V_SR_SSYNC = 8,0,1,0 %;       !  UNIBUS SLAVE SYNC TIMEOUT 
macro UBA$V_SR_UBSTO = 8,1,1,0 %;       !  UNIBUS SELECT TIMEOUT 
macro UBA$V_SR_LER = 8,2,1,0 %;         !  LOST ERROR 
macro UBA$V_SR_MRPE = 8,3,1,0 %;        !  MAP REGISTER PARITY ERROR 
macro UBA$V_SR_IVMR = 8,4,1,0 %;        !  INVALID MAP REGISTER 
macro UBA$V_SR_DPPE = 8,5,1,0 %;        !  DATAPATH PARITY ERROR 
macro UBA$V_SR_CXTMO = 8,6,1,0 %;       !  COMMAND TRANSMISSION TIMEOUT 
macro UBA$V_SR_CXTER = 8,7,1,0 %;       !  COMMAND TRANSMISSION ERROR 
macro UBA$V_SR_CRD = 8,8,1,0 %;         !  CORRECTED READ DATA 
macro UBA$V_SR_RDS = 8,9,1,0 %;         !  READ DATA SUBSTITUTE 
macro UBA$V_SR_RDTO = 8,10,1,0 %;       !  READ DATA TIMEOUT 
macro UBA$V_SR_BRID = 8,11,1,0 %;       !  BUS REQUEST INTERRUPT DONE 
macro UBA$V_SR_BRRVF = 8,24,4,0 %;
literal UBA$S_SR_BRRVF = 4;             !  BUS REQUEST RECEIVE VECTOR FULL 
macro UBA$V_SR_BRSVF = 8,28,1,0 %;      !  BUS REQUEST SEND VECTOR FULL 
macro UBA$V_SR_RIE = 8,29,1,0 %;        !  REQUEST INTERRUPT ENABLED 
macro UBA$V_SR_UBIFS = 8,30,1,0 %;      !  UNIBUS INTERRUPT FIELD SWITCH 
macro UBA$L_DCR = 12,0,32,0 %;          ! DIAGNOSTIC CONTROL REGISTER 
macro UBA$L_FMER = 16,0,32,0 %;         ! FAILED MAP ENTRY REGISTER 
macro UBA$V_FMER_MRN = 16,0,9,0 %;
literal UBA$S_FMER_MRN = 9;             !  FAILED MAP REGISTER NUMBER 
macro UBA$L_FUBAR = 20,0,32,0 %;        ! FAILED UNIBUS ADDRESS REGISTER 
macro UBA$V_FUBAR_ADR = 20,0,18,0 %;
literal UBA$S_FUBAR_ADR = 18;           !  FAILED SBI TO UNIBUS ADDRESS 
macro UBA$L_BRSVR = 32,0,0,0 %;
literal UBA$S_BRSVR = 16;               ! BUS REQUEST SEND VECTOR REGISTERS 
macro UBA$L_BRRVR = 48,0,0,0 %;
literal UBA$S_BRRVR = 16;               ! BUS REQUEST RECEIVE VECTOR REGISTER 
macro UBA$V_BRRVR_IVA = 48,0,16,0 %;
literal UBA$S_BRRVR_IVA = 16;           !  INTERRUPT VECTOR ADDRESS 
macro UBA$V_BRRVR_AIR = 48,31,1,0 %;    !  ADAPTER INTERRUPT REQUEST PENDING 
macro UBA$L_DPR = 64,0,0,0 %;
literal UBA$S_DPR = 64;                 ! DATAPATH REGISTERS 
macro UBA$V_DPR_ADDR = 64,0,16,0 %;
literal UBA$S_DPR_ADDR = 16;            !  BUFFERED UNIBUS ADDRESS 
macro UBA$V_DPR_STATE = 64,16,8,0 %;
literal UBA$S_DPR_STATE = 8;            !  BUFFER STATE FLAGS 
macro UBA$V_DPR_DPF = 64,29,1,0 %;      !  DATAPATH FUNCTION 
macro UBA$V_DPR_XMTER = 64,30,1,0 %;    !  BUFFER TRANSFER ERROR 
macro UBA$V_DPR_BNE = 64,31,1,0 %;      !  BUFFER NOT EMPTY 
macro UBA$L_MAP = 2048,0,0,0 %;
literal UBA$S_MAP = 1984;               ! MAP REGISTERS 
macro UBA$V_MAP_ADDR = 2048,0,21,0 %;
literal UBA$S_MAP_ADDR = 21;            !  SBI PAGE ADDRESS 
macro UBA$V_MAP_DPD = 2048,21,4,0 %;
literal UBA$S_MAP_DPD = 4;              !  DATAPATH DESIGNATOR 
macro UBA$V_MAP_BO = 2048,25,1,0 %;     !  BYTE OFFSET 
macro UBA$V_MAP_VALID = 2048,31,1,0 %;  !  MAP REGISTER VALID 
 
!*** MODULE $UBIDEF ***
! +
!  UNIBUS INTERCONNECT (VAX 11/750 & 11/730) REGISTER OFFSETS AND FIELDS
! -
literal UBI$M_DPR_PUR = 1;
literal UBI$M_DPR_UCE = 536870912;
literal UBI$M_DPR_NXM = 1073741824;
literal UBI$M_DPR_ERROR = -2147483648;
literal UBI$S_UBIDEF = 16;
macro UBI$L_DPR = 0,0,0,0 %;
literal UBI$S_DPR = 16;                 ! DATAPATH REGISTERS 
!  (DPR 0 NOT IMPLEMENTED)
macro UBI$V_DPR_PUR = 0,0,1,0 %;        !  DATAPATH PURGE 
macro UBI$V_DPR_UCE = 0,29,1,0 %;       !  UNCORRECTABLE ERROR 
macro UBI$V_DPR_NXM = 0,30,1,0 %;       !  NON-EXISTENT MEMORY 
macro UBI$V_DPR_ERROR = 0,31,1,0 %;     !  ERROR (UCE!NXM) 
literal UBI$M_DSR_CD = 134217728;
literal UBI$S_UBIDEF1 = 32;
macro UBI$L_DSR = 16,0,0,0 %;
literal UBI$S_DSR = 16;                 ! DIAGNOSTIC STATUS REGISTERS 
!  (DSR 0 NOT IMPLEMENTED)
macro UBI$V_DSR_CD = 16,27,1,0 %;       !  ALL 4 BYTES IN BDP FULL 
macro UBI$V_DSR_BF = 16,28,4,0 %;
literal UBI$S_DSR_BF = 4;               !  BYTE 0,1,2,3 IN BDP HAS VALID DATA 
literal UBI$M_SR_UWE = 16384;
literal UBI$M_SR_MRPE = 32768;
literal UBI$M_SR_NXM = 65536;
literal UBI$M_SR_UCE = -2147483648;
literal UBI$S_UBIDEF2 = 20;
macro UBI$L_SR = 16,0,32,0 %;           ! UB STATUS REGISTER: 
macro UBI$V_SR_UWE = 16,14,1,0 %;       !  UNCORRECTED WRITE ERROR 
macro UBI$V_SR_MRPE = 16,15,1,0 %;      !  MAP REGISTER PARITY ERROR 
macro UBI$V_SR_NXM = 16,16,1,0 %;       !  NONEXISTENT MEMORY REF 
macro UBI$V_SR_UCE = 16,31,1,0 %;       !  UNCORRECTED READ ERROR 
! END OF CPU_SPECIFIC REGISTERS
literal UBI$C_MAXDP = 3;                ! MAXIMUM DATAPATH ! 
literal UBI$C_PURCNT = 10;              ! MAX ! OF TESTS OF PURGE DONE 
literal UBI$S_UBIDEF3 = 4032;
macro UBI$L_MAP = 2048,0,0,0 %;
literal UBI$S_MAP = 1984;               ! MAP REGISTERS, SAME FORMAT AS UBA 
 
!*** MODULE $UBMDDEF ***
! +
!  UBMD - UNIBUS Map Descriptor used to record UNIBUS map registers
!         and datapaths allocated.
! -
literal UBMD$S_UBMDDEF = 4;
macro UBMD$W_MAPREG = 0,0,16,0 %;       !  Starting map register 
macro UBMD$B_NUMREG = 2,0,8,0 %;        !  Number of registers in extent 
macro UBMD$B_DATAPATH = 3,0,8,0 %;      !  Associated Buffered datapath 
 
!*** MODULE $UCBDEF ***
literal UCB$M_TIM = 1;
literal UCB$M_INT = 2;
literal UCB$M_ERLOGIP = 4;
literal UCB$M_CANCEL = 8;
literal UCB$M_ONLINE = 16;
literal UCB$M_POWER = 32;
literal UCB$M_TIMOUT = 64;
literal UCB$M_INTTYPE = 128;
literal UCB$M_BSY = 256;
literal UCB$M_MOUNTING = 512;
literal UCB$M_DEADMO = 1024;
literal UCB$M_VALID = 2048;
literal UCB$M_UNLOAD = 4096;
literal UCB$M_TEMPLATE = 8192;
literal UCB$M_MNTVERIP = 16384;
literal UCB$M_WRONGVOL = 32768;
literal UCB$M_DELETEUCB = 65536;
literal UCB$M_LCL_VALID = 131072;
literal UCB$M_SUPMVMSG = 262144;
literal UCB$M_MNTVERPND = 524288;
literal UCB$M_DISMOUNT = 1048576;
literal UCB$M_CLUTRAN = 2097152;
literal UCB$M_WRTLOCKMV = 4194304;
literal UCB$M_SVPN_END = 8388608;
literal UCB$M_ALTBSY = 16777216;
literal UCB$M_SNAPSHOT = 33554432;
literal UCB$M_JOB = 1;
literal UCB$M_TEMPL_BSY = 64;
literal UCB$M_PRMMBX = 1;
literal UCB$M_DELMBX = 2;
literal UCB$M_SHMMBX = 8;
literal UCB$M_TT_TIMO = 2;
literal UCB$M_TT_NOTIF = 4;
literal UCB$M_TT_HANGUP = 8;
literal UCB$M_TT_NOLOGINS = 32768;
literal UCB$M_NT_BFROVF = 4;
literal UCB$M_NT_NAME = 16;
literal UCB$M_NT_BREAK = 32;
literal UCB$M_ECC = 1;
literal UCB$M_DIAGBUF = 2;
literal UCB$M_NOCNVRT = 4;
literal UCB$M_DX_WRITE = 8;
literal UCB$M_DATACACHE = 16;
literal UCB$M_MSCP_MNTVERIP = 256;
literal UCB$M_MSCP_INITING = 512;
literal UCB$M_MSCP_WAITBMP = 1024;
literal UCB$M_MSCP_FLOVR = 2048;
literal UCB$M_MSCP_PKACK = 4096;
literal UCB$M_MSCP_WRTP = 8192;
literal UCB$M_MSCP_IGNSRV = 16384;
literal UCB$M_DU_SHMV_STRTD = 8;
literal UCB$M_DU_0MNOTE = 32;
literal UCB$M_TU_OVRSQCHK = 1;
literal UCB$M_TU_TRACEACT = 2;
literal UCB$M_TU_SEQNOP = 4;
literal UCB$M_TU_1DENS = 8;
literal UCB$M_TU_DENS_DETERMINED = 16;
literal UCB$M_SHD_SEQCMD_HERE = 1024;
literal UCB$M_SHD_SEQCMD_THERE = 2048;
literal UCB$M_SHD_PASSIVE_MV = 4096;
literal UCB$K_LENGTH = 164;             ! LENGTH OF STANDARD UCB 
literal UCB$C_LENGTH = 164;             ! LENGTH OF STANDARD UCB 
literal UCB$S_UCBDEF = 164;
macro UCB$L_FQFL = 0,0,32,0 %;          ! FORK QUEUE FORWARD LINK 
macro UCB$W_UNIT_SEED = 0,0,16,0 %;     !  UNIT NUMBER SEED 
macro UCB$W_MB_SEED = 0,0,16,0 %;       !  MB -- UNIT NUMBER SEED 
macro UCB$L_RQFL = 0,0,32,0 %;          !  NET -- RCV QUEUE FORWARD LINK 
macro UCB$L_FQBL = 4,0,32,0 %;          ! FORK QUEUE BACKWARD LINK 
macro UCB$L_RQBL = 4,0,32,0 %;          !  NET -- RCV QUEUE BACKWARD LINK 
macro UCB$W_SIZE = 8,0,16,0 %;          ! SIZE OF UCB IN BYTES 
macro UCB$B_TYPE = 10,0,8,0 %;          ! STRUCTURE TYPE FOR UCB 
macro UCB$B_FLCK = 11,0,8,0 %;          ! FORK LOCK NUMBER
macro UCB$B_FIPL = 11,0,8,0 %;          ! FORK IPL
macro UCB$L_FPC = 12,0,32,0 %;          ! FORK PC 
macro UCB$L_ASTQFL = 12,0,32,0 %;       !  MB -- AST QUEUE LISTHEAD FORWARD LINK 
macro UCB$T_PARTNER = 12,0,8,0 %;       !  NET -- PARTNER'S NODENAME 
macro UCB$L_FR3 = 16,0,32,0 %;          ! FORK R3 
macro UCB$L_ASTQBL = 16,0,32,0 %;       !  MB -- AST QUEUE LISTHEAD BACKWARD LINK 
macro UCB$L_FR4 = 20,0,32,0 %;          ! FORK R4 
macro UCB$W_MSGMAX = 20,0,16,0 %;       !  MB -- MAXIMUM MESSAGES ALLOWED 
macro UCB$W_MSGCNT = 22,0,16,0 %;       !  MB -- CURRENT NUMBER OF MESSAGES 
macro UCB$L_FIRST = 20,0,32,0 %;        !  NET -- ADDR OF 1ST SEG OF CHAINED MSG 
macro UCB$W_BUFQUO = 24,0,16,0 %;       !  BUFFERED I/O QUOTA CHARGED FOR THIS UCB
macro UCB$W_DSTADDR = 24,0,16,0 %;      !  NET -- REMOTE CONNECT NO. 
macro UCB$W_INIQUO = 26,0,16,0 %;       !  INITIAL BUFFERED I/O QUOTA FOR THIS UCB
macro UCB$W_SRCADDR = 26,0,16,0 %;      !  NET -- LOCAL CONNECT NO. 
macro UCB$L_ORB = 28,0,32,0 %;          !  OBJECT'S RIGHTS BLOCK ADDRESS
macro UCB$L_LOCKID = 32,0,32,0 %;       ! DEVICE LOCK ID
macro UCB$L_CPID = 32,0,32,0 %;         ! PID CHARGED FOR BUFQUO BY UCBCREDEL
macro UCB$L_CRB = 36,0,32,0 %;          ! ADDRESS OF PRIMARY CHANNEL REQUEST BLOCK 
macro UCB$L_DLCK = 40,0,32,0 %;         ! ADDRESS OF DEVICE IPL SPINLOCK
macro UCB$L_DDB = 44,0,32,0 %;          ! BACKPOINTER TO DEVICE DATA BLOCK 
macro UCB$L_PID = 48,0,32,0 %;          ! PROCESS ID OF OWNER PROCESS 
macro UCB$L_LINK = 52,0,32,0 %;         ! ADDRESS OF NEXT UCB FOR RESPECTIVE DDB 
macro UCB$L_VCB = 56,0,32,0 %;          ! ADDRESS OF VOLUME CONTROL BLOCK 
macro UCB$Q_DEVCHAR = 60,0,0,0 %;
literal UCB$S_DEVCHAR = 8;              !  Device characteristic bits quadword
macro UCB$L_DEVCHAR = 60,0,32,0 %;      !   Original device characteristic bits
macro UCB$L_DEVCHAR2 = 64,0,32,0 %;     !   Extended device characteristic bits
macro UCB$L_AFFINITY = 68,0,32,0 %;     ! DEVICE AFFINITY
macro UCB$L_XTRA = 72,0,32,0 %;         ! EXTRA LONGWORD (FOR SMP)
macro UCB$L_ALTIOWQ = 72,0,32,0 %;      ! ALTERNATE STARTIO WAIT
! QUEUE
macro UCB$B_DEVCLASS = 76,0,8,0 %;      ! DEVICE CLASS 
macro UCB$B_DEVTYPE = 77,0,8,0 %;       ! DEVICE TYPE 
macro UCB$W_DEVBUFSIZ = 78,0,16,0 %;    ! DEVICE DEFAULT BUFFER SIZE 
macro UCB$Q_DEVDEPEND = 80,0,0,0 %;
literal UCB$S_DEVDEPEND = 8;            ! Device dependent quadword
macro UCB$R_DEVDEPEND_Q_BLOCK = 80,0,0,0 %;
literal UCB$S_DEVDEPEND_Q_BLOCK = 8;
macro UCB$L_DEVDEPEND = 80,0,32,0 %;    !   First device dependent longword
macro UCB$R_DISK_DEVDEPEND = 80,0,32,0 %;
literal UCB$S_DISK_DEVDEPEND = 4;       !     Disk fields
macro UCB$B_SECTORS = 80,0,8,0 %;       ! 	Sectors per track
macro UCB$B_TRACKS = 81,0,8,0 %;        ! 	Track per cylinder
macro UCB$W_CYLINDERS = 82,0,16,0 %;    ! 	Cylinders per disk
macro UCB$R_TERM_DEVDEPEND = 80,0,32,0 %;
literal UCB$S_TERM_DEVDEPEND = 4;       !     Terminal fields
macro UCB$B_VERTSZ = 83,0,8,0 %;        ! 	Vertical page size (lines per page)
macro UCB$R_NET_DEVDEPEND = 80,0,32,0 %;
literal UCB$S_NET_DEVDEPEND = 4;        !     Network fields
macro UCB$B_LOCSRV = 80,0,8,0 %;        ! 	Local link services 
macro UCB$B_REMSRV = 81,0,8,0 %;        ! 	Remote link services
macro UCB$W_BYTESTOGO = 82,0,16,0 %;    ! 	No. of bytes left in rcv bfr
macro UCB$L_DEVDEPND2 = 84,0,32,0 %;    !   Second device dependent long word 
macro UCB$L_TT_DEVDP1 = 84,0,32,0 %;    !     Terminal -- Device dependent long word 
macro UCB$Q_DEVDEPEND2 = 88,0,0,0 %;
literal UCB$S_DEVDEPEND2 = 8;           ! Device dependent quadword
macro UCB$R_DEVDEPEND2_Q_BLOCK = 88,0,0,0 %;
literal UCB$S_DEVDEPEND2_Q_BLOCK = 8;
macro UCB$L_DEVDEPND3 = 88,0,32,0 %;    !   3rd device dependent longword
macro UCB$L_DEVDEPND4 = 92,0,32,0 %;    !   4th device dependent long word 
macro UCB$R_TMV_BCNT = 88,0,0,0 %;
literal UCB$S_TMV_BCNT = 8;             !  Tape Mount verification byte counts
macro UCB$W_TMV_BCNT1 = 88,0,16,0 %;    !  Byte count for 1st CRC
macro UCB$W_TMV_BCNT2 = 90,0,16,0 %;    !  ...2nd CRC
macro UCB$W_TMV_BCNT3 = 92,0,16,0 %;    !  ...3rd CRC
macro UCB$W_TMV_BCNT4 = 94,0,16,0 %;    !  ...4th CRC
macro UCB$L_IOQFL = 96,0,32,0 %;        ! I/O QUEUE LISTHEAD FORWARD LINK 
macro UCB$L_IOQBL = 100,0,32,0 %;       ! I/O QUEUE LISTHEAD BACKWARD LINK 
macro UCB$W_UNIT = 104,0,16,0 %;        ! PHYSICAL DEVICE UNIT NUMBER 
macro UCB$W_CHARGE = 106,0,16,0 %;      ! MAILBOX BYTE COUNT QUOTA CHARGE 
macro UCB$W_RWAITCNT = 106,0,16,0 %;    !  CLASS DRIVERS -- THREADS WAITING RESOURCES 
macro UCB$B_CM1 = 106,0,8,0 %;          !  LEVEL 1 CONTROLLER ALLOCATION MASK 
macro UCB$B_CM2 = 107,0,8,0 %;          !  LEVEL 2 CONTROLLER ALLOCATION MASK 
macro UCB$L_IRP = 108,0,32,0 %;         ! CURRENT I/O REQUEST PACKET ADDRESS 
macro UCB$W_REFC = 112,0,16,0 %;        ! REFERENCE COUNT OF PROCESSES 
macro UCB$B_DIPL = 114,0,8,0 %;         ! DEVICE INTERRUPT PRIORITY LEVEL 
macro UCB$B_STATE = 114,0,8,0 %;        !  NET -- LINK STATE FOR NETWORK TRANSITIONS 
macro UCB$B_AMOD = 115,0,8,0 %;         ! ALLOCATION ACCESS MODE 
macro UCB$L_AMB = 116,0,32,0 %;         ! ASSOCIATED UNIT CONTROL BLOCK POINTER 
macro UCB$L_STS = 120,0,32,0 %;         ! DEVICE UNIT STATUS 
macro UCB$W_STS = 120,0,16,0 %;
macro UCB$V_TIM = 120,0,1,0 %;          !  TIME OUT ENABLED (1=YES) 
macro UCB$V_INT = 120,1,1,0 %;          !  INTERRUPT EXPECTED (1=YES) 
macro UCB$V_ERLOGIP = 120,2,1,0 %;      !  ERROR LOG IN PROGRESS ON UNIT (1=YES) 
macro UCB$V_CANCEL = 120,3,1,0 %;       !  CANCEL I/O ON UNIT (1=YES) 
macro UCB$V_ONLINE = 120,4,1,0 %;       !  UNIT ONLINE (1=YES) 
macro UCB$V_POWER = 120,5,1,0 %;        !  POWER FAILED WHILE UNIT BUSY (1=YES) 
macro UCB$V_TIMOUT = 120,6,1,0 %;       !  UNIT TIMED OUT (1=YES) 
macro UCB$V_INTTYPE = 120,7,1,0 %;      !  RECEIVER INTERRUPT IF SET 
macro UCB$V_BSY = 120,8,1,0 %;          !  UNIT IS BUSY (1=YES) 
macro UCB$V_MOUNTING = 120,9,1,0 %;     !  DEVICE IS BEING MOUNTED 
macro UCB$V_DEADMO = 120,10,1,0 %;      !  DEALLOCATE AT DISMOUNT 
macro UCB$V_VALID = 120,11,1,0 %;       !  VOLUME IS SOFTWARE VALID 
macro UCB$V_UNLOAD = 120,12,1,0 %;      !  UNLOAD VOLUME AT DISMOUNT 
macro UCB$V_TEMPLATE = 120,13,1,0 %;    !  SET IF THIS IS TEMPLATE UCB
macro UCB$V_MNTVERIP = 120,14,1,0 %;    !  MOUNT VERIFICATION IN PROGRESS 
macro UCB$V_WRONGVOL = 120,15,1,0 %;    !  WRONG VOLUME DETECTED DURING MOUNT VERIFICATION 
macro UCB$V_DELETEUCB = 120,16,1,0 %;   !  DELETE THIS UCB WHEN REFC REACHES ZERO
macro UCB$V_LCL_VALID = 120,17,1,0 %;   !  VOLUME IS VALID ON THE LOCAL NODE
macro UCB$V_SUPMVMSG = 120,18,1,0 %;    !  IF SET, SUPPRESS SUCCESS TYPE MOUNT VER. MSGS.
macro UCB$V_MNTVERPND = 120,19,1,0 %;   !  MOUNT VERIFICATION IS PENDING ON BUSY DEVICE.
macro UCB$V_DISMOUNT = 120,20,1,0 %;    !  DISMOUNT IN PROGRESS
macro UCB$V_CLUTRAN = 120,21,1,0 %;     !  VAXcluster STATE TRANSITION IN PROGRESS
macro UCB$V_WRTLOCKMV = 120,22,1,0 %;   !  Write-locked mount verification in progress
macro UCB$V_SVPN_END = 120,23,1,0 %;    !  Last byte used from page mapped by SVPN
macro UCB$V_ALTBSY = 120,24,1,0 %;      !  Unit is busy via alternate startio path
macro UCB$V_SNAPSHOT = 120,25,1,0 %;    !    Restart validation is in progress
macro UCB$W_DEVSTS = 124,0,16,0 %;      ! DEVICE DEPENDENT STATUS 
macro UCB$V_JOB = 124,0,1,0 %;          !    Job Controller notified 
macro UCB$V_TEMPL_BSY = 124,6,1,0 %;    !    Template UCB is busy 
macro UCB$V_PRMMBX = 124,0,1,0 %;       !    Permanent mailbox 
macro UCB$V_DELMBX = 124,1,1,0 %;       !    Mailbox marked for delete 
macro UCB$V_SHMMBX = 124,3,1,0 %;       !    Shared memory mailbox 
macro UCB$V_TT_TIMO = 124,1,1,0 %;      !    Terminal read timeout in progress 
macro UCB$V_TT_NOTIF = 124,2,1,0 %;     !    Terminal user notified of unsolicted data 
macro UCB$V_TT_HANGUP = 124,3,1,0 %;    !    Process hang up
macro UCB$V_TT_DEVSTS_FILL = 124,4,11,0 %;
literal UCB$S_TT_DEVSTS_FILL = 11;      !    fill to the end the word
macro UCB$V_TT_NOLOGINS = 124,15,1,0 %; !  NOLOGINS ALLOWED
macro UCB$V_NT_BFROVF = 124,2,1,0 %;    !    Too many bytes rcvd 
macro UCB$V_NT_NAME = 124,4,1,0 %;      !    Link has declared a connect name 
macro UCB$V_NT_BREAK = 124,5,1,0 %;     !    Link is being broken 
macro UCB$V_ECC = 124,0,1,0 %;          !    ECC correction was made
macro UCB$V_DIAGBUF = 124,1,1,0 %;      !    Diagnostic buffer specified
macro UCB$V_NOCNVRT = 124,2,1,0 %;      !    No LBN to media address conversion
macro UCB$V_DX_WRITE = 124,3,1,0 %;     !    Console floppy write operation
macro UCB$V_DATACACHE = 124,4,1,0 %;    !    Data blocks being cached
macro UCB$V_MSCP_MNTVERIP = 124,8,1,0 %; !    Mount verification in progress
macro UCB$V_MSCP_INITING = 124,9,1,0 %; !    UCB is being initialized
macro UCB$V_MSCP_WAITBMP = 124,10,1,0 %; !    RWAITCNT has been bumped
macro UCB$V_MSCP_FLOVR = 124,11,1,0 %;  !    Bit toggled everytime a failover succeeds.
macro UCB$V_MSCP_PKACK = 124,12,1,0 %;  !    Set when a IO$_PACKACK is in progress.
macro UCB$V_MSCP_WRTP = 124,13,1,0 %;   !    Unit MSCP write protected in some way.
macro UCB$V_MSCP_IGNSRV = 124,14,1,0 %; !    Ignore served paths during connection failover.
macro UCB$V_DU_SHMV_STRTD = 124,3,1,0 %; !    Shadowing mount verification started
macro UCB$V_DU_0MNOTE = 124,5,1,0 %;    !    Zero members message sent
macro UCB$V_TU_OVRSQCHK = 124,0,1,0 %;  !    Override sequence checking
macro UCB$V_TU_TRACEACT = 124,1,1,0 %;  !    IRP trace table active
macro UCB$V_TU_SEQNOP = 124,2,1,0 %;    !    Sequential NOP tape operation in progress
macro UCB$V_TU_1DENS = 124,3,1,0 %;     !    Single density device
macro UCB$V_TU_DENS_DETERMINED = 124,4,1,0 %; !    Density already determined. Basically a
!     bit that says that a particular part of
!     PACKACK processing has already been done
!     once for this unit.
macro UCB$V_SHD_SEQCMD_HERE = 124,10,1,0 %; !    Sequential command in progress on this node
macro UCB$V_SHD_SEQCMD_THERE = 124,11,1,0 %; !    Sequential command in progress on another node
macro UCB$V_SHD_PASSIVE_MV = 124,12,1,0 %; !    Passive MV in progress
macro UCB$W_QLEN = 126,0,16,0 %;        !  Device queue length
macro UCB$L_DUETIM = 128,0,32,0 %;      ! DUE TIME FOR I/O COMPLETION 
macro UCB$L_OPCNT = 132,0,32,0 %;       ! COUNT OF OPERATIONS COMPLETED 
macro UCB$L_SVPN = 136,0,32,0 %;        ! SYSTEM VIRTUAL PAGE/MAP REGISTER NUMBER 
macro UCB$L_LOGADR = 136,0,32,0 %;      !  MB -- LOGICAL NAME BLOCK ADDRESS 
macro UCB$L_SVAPTE = 140,0,32,0 %;      ! SYSTEM VIRTUAL ADDRESS OF PTE 
macro UCB$W_BOFF = 144,0,16,0 %;        ! BYTE OFFSET IN FIRST PAGE 
macro UCB$W_BCNT = 146,0,16,0 %;        ! BYTE COUNT OF TRANSFER 
macro UCB$B_ERTCNT = 148,0,8,0 %;       ! ERROR LOG DEVICE CURRENT ERROR RETRY COUNT 
macro UCB$B_ERTMAX = 149,0,8,0 %;       ! ERROR LOG DEVICE MAXIMUM ERROR RETRY COUNT 
macro UCB$W_ERRCNT = 150,0,16,0 %;      ! DEVICE ERROR COUNT 
macro UCB$L_PDT = 152,0,32,0 %;         ! ADDR OF PORT DESCRIPTOR TABLE
macro UCB$L_DDT = 156,0,32,0 %;         ! ADDR OF DDT (OPTIONAL BUT PREFERRED) 
macro UCB$L_MEDIA_ID = 160,0,32,0 %;    ! BIT ENCODED MEDIA IDENTIFICATION 
macro UCB$V_MEDIA_ID_NN = 160,0,7,0 %;
literal UCB$S_MEDIA_ID_NN = 7;          !  MEDIA NAME NUMBER
macro UCB$V_MEDIA_ID_N2 = 160,7,5,0 %;
literal UCB$S_MEDIA_ID_N2 = 5;          !  MEDIA NAME CHAR 2
macro UCB$V_MEDIA_ID_N1 = 160,12,5,0 %;
literal UCB$S_MEDIA_ID_N1 = 5;          !  MEDIA NAME CHAR 1
macro UCB$V_MEDIA_ID_N0 = 160,17,5,0 %;
literal UCB$S_MEDIA_ID_N0 = 5;          !  MEDIA NAME CHAR 0
macro UCB$V_MEDIA_ID_T1 = 160,22,5,0 %;
literal UCB$S_MEDIA_ID_T1 = 5;          !  MEDIA TYPE CHAR 1
macro UCB$V_MEDIA_ID_T0 = 160,27,5,0 %;
literal UCB$S_MEDIA_ID_T0 = 5;          !  MEDIA TYPE CHAR 0
!  for $TTYUCBDEF
! 
!  DEVICE DEPENDENT UCB EXTENSIONS
! 
!  MAILBOX
! 
literal UCB$K_MB_LENGTH = 192;          ! SIZE OF MAILBOX UCB 
literal UCB$C_MB_LENGTH = 192;          ! SIZE OF MAILBOX UCB 
literal UCB$S_UCBDEF3 = 192;
macro UCB$L_MB_WAST = 164,0,32,0 %;     ! WRITE ATTENTION AST BLOCK ADDR 
macro UCB$L_MB_RAST = 168,0,32,0 %;     ! READ ATTENTION AST BLOCK ADDR 
macro UCB$L_MB_MBX = 172,0,32,0 %;      ! MAILBOX CONTROL BLOCK ADDR 
macro UCB$L_MB_SHB = 176,0,32,0 %;      ! SHARED MEM. CONTROL BLOCK ADDR 
macro UCB$L_MB_WIOQFL = 180,0,32,0 %;   ! WRITE I/O QUEUE FORWARD LINK 
macro UCB$L_MB_WIOQBL = 184,0,32,0 %;   ! WRITE I/O QUEUE BACKWARD LINK 
macro UCB$L_MB_PORT = 188,0,32,0 %;     ! SHARED MEM. PORT NUMBER 
! 
!  ERROR LOG DEVICES (ALL)
! 
literal UCB$K_ERL_LENGTH = 180;         ! SIZE OF ERROR LOG UCB
literal UCB$C_ERL_LENGTH = 180;         ! SIZE OF ERROR LOG UCB
literal UCB$S_UCBDEF4 = 180;
macro UCB$B_SLAVE = 164,0,8,0 %;        ! SLAVE CONTROLLER NUMBER 
macro UCB$B_SPR = 165,0,8,0 %;          ! SPARE UNUSED BYTE 
macro UCB$B_FEX = 166,0,8,0 %;          ! FUNCTION DISPATCH TABLE INDEX 
macro UCB$B_CEX = 167,0,8,0 %;          ! CASE TABLE FUNCTION EXECUTION INDEX 
macro UCB$L_EMB = 168,0,32,0 %;         ! ADDRESS OF ERROR MESSAGE BUFFER 
macro UCB$W_FUNC = 174,0,16,0 %;        ! I/O FUNCTION MODIFIERS 
macro UCB$L_DPC = 176,0,32,0 %;         ! SAVED DRIVER SUBROUTINE RETURN ADDRESS
! 
!  DUAL PORTED DEVICES (ALL DISKS AND MOST TAPES)
! 
literal UCB$K_DP_LENGTH = 192;          !  Size of dual path UCB
literal UCB$C_DP_LENGTH = 192;          !  size of dual path UCB
literal UCB$K_2P_LENGTH = 192;          !  Size of dual path UCB
literal UCB$C_2P_LENGTH = 192;          !  size of dual path UCB
literal UCB$S_DUALPATH_EXTENSION = 192;
macro UCB$L_DP_DDB = 180,0,32,0 %;      !  Pointer to alternate DDB
macro UCB$L_DP_LINK = 184,0,32,0 %;     !  Address of next UCB for this DDB 
macro UCB$L_DP_ALTUCB = 188,0,32,0 %;   !  Addr of alternate UCB for this unit
macro UCB$L_2P_DDB = 180,0,32,0 %;      !  Pointer to alternate DDB
macro UCB$L_2P_LINK = 184,0,32,0 %;     !  Address of next UCB for this DDB 
macro UCB$L_2P_ALTUCB = 188,0,32,0 %;   !  Addr of alternate UCB for this unit
! 
!  ALL DISKS AND TAPES
! 
literal UCB$M_AST_ARMED = 32768;
literal UCB$K_LCL_TAPE_LENGTH = 216;    !  Size of local tape UCB
literal UCB$C_LCL_TAPE_LENGTH = 216;    !  Size of local tape UCB
literal UCB$S_DISKTAPE_UCB_EXTENSION = 216;
macro UCB$W_DIRSEQ = 192,0,16,0 %;      !  Directory sequence number
macro UCB$V_AST_ARMED = 192,15,1,0 %;   !   Blocking AST armed flag
macro UCB$B_ONLCNT = 194,0,8,0 %;       !  Online count
macro UCB$L_MAXBLOCK = 196,0,32,0 %;    !  Random access device highest block
macro UCB$L_MAXBCNT = 200,0,32,0 %;     !  Maximum transfer BCNT
macro UCB$L_DCCB = 204,0,32,0 %;        !  Pointer to data cache control block
macro UCB$L_QLENACC = 208,0,32,0 %;     !  Queue length accumulator
macro UCB$B_PREV_RECORD = 195,0,8,0 %;  !  Tape position prior at start of last I/O
macro UCB$L_RECORD = 196,0,32,0 %;      !  Current tape position or frame counter
macro UCB$L_TMV_RECORD = 204,0,32,0 %;  !  Position following last guaranteed successful I/O
macro UCB$W_TMV_CRC1 = 208,0,16,0 %;    !  1st CRC for Mount Ver's media validation
macro UCB$W_TMV_CRC2 = 210,0,16,0 %;    !  2nd CRC ...
macro UCB$W_TMV_CRC3 = 212,0,16,0 %;    !  3rd CRC ...
macro UCB$W_TMV_CRC4 = 214,0,16,0 %;    !  4th CRC ...
literal UCB$K_LCL_DISK_LENGTH = 228;    !  Size of local disk UCB
literal UCB$C_LCL_DISK_LENGTH = 228;    !  Size of local disk UCB
! 
literal UCB$S_LCL_DISK_UCB_EXTENSION = 244;
macro UCB$L_MEDIA = 212,0,32,0 %;       !  Media address (longword)
macro UCB$W_DA = 212,0,16,0 %;          !  Saved desired sector/track address register
macro UCB$W_DC = 214,0,16,0 %;          !  Saved desired cylinder address register
macro UCB$L_BCR = 216,0,32,0 %;         !  Byte count register
macro UCB$W_BCR = 216,0,16,0 %;
macro UCB$W_EC1 = 220,0,16,0 %;         !  ECC position register
macro UCB$W_EC2 = 222,0,16,0 %;         !  ECC pattern register
macro UCB$W_OFFSET = 224,0,16,0 %;      !  Current offset register contents
macro UCB$B_OFFNDX = 226,0,8,0 %;       !  Current offset table index
macro UCB$B_OFFRTC = 227,0,8,0 %;       !  Current offset retry count
!  FLOPPY DEPENDENT BIT DEFINITIONS
! 
macro UCB$L_DX_BUF = 228,0,32,0 %;      ! ADDRESS OF SECTOR BUFFER 
macro UCB$L_DX_BFPNT = 232,0,32,0 %;    ! CURRENT SECTOR BUFFER POINTER 
macro UCB$L_DX_RXDB = 236,0,32,0 %;     ! SAVED RECEIVER DATA BUFFER 
macro UCB$W_DX_BCR = 240,0,16,0 %;      ! CURRENT FLOPPY BYTE COUNT 
macro UCB$B_DX_SCTCNT = 242,0,8,0 %;    ! CURRENT SECTOR BYTE COUNT 
! 
!  MSCP DISKS AND TAPES UCB EXTENSION
! 
literal UCB$K_MSCP_DISK_LENGTH = 268;   !  Size of MSCP disk UCB
literal UCB$K_MSCP_TAPE_LENGTH = 268;   !  Size of MSCP tape UCB
literal UCB$S_MSCP_UCB_EXTENSION = 268;
macro UCB$L_CDDB = 216,0,32,0 %;        !  Pointer to active CDDB
macro UCB$L_2P_CDDB = 220,0,32,0 %;     !  Pointer to alternate CDDB
macro UCB$L_CDDB_LINK = 224,0,32,0 %;   !  Pointer to next UCB in CDDB chain
macro UCB$L_CDT = 228,0,32,0 %;         !  Pointer to active CDT
macro UCB$L_WAIT_CDDB = 232,0,32,0 %;   !  Address of CDDB waiting for mnt. ver. to complete on this UCB
macro UCB$L_PREF_CDDB = 236,0,32,0 %;   !  CDDB address for preferred path
macro UCB$Q_UNIT_ID = 240,0,0,0 %;
literal UCB$S_UNIT_ID = 8;              !  Unique MSCP unit identifier
macro UCB$W_MSCPUNIT = 248,0,16,0 %;    !  Primary path MSCP unit number 
macro UCB$W_UNIT_FLAGS = 250,0,16,0 %;  !  MSCP unit flags
macro UCB$W_LCL_MSCPUNIT = 252,0,16,0 %; !  MSCP unit number for local (non-emulated) controllers
macro UCB$W_SRV_MSCPUNIT = 254,0,16,0 %; !  MSCP unit number for served (emulated) controllers
macro UCB$L_MSCPDEVPARAM = 256,0,32,0 %; !  MSCP device-dependent parameters
macro UCB$B_FREECAP = 260,0,8,0 %;      !  Free capacity
macro UCB$W_MSCP_RESVDW = 262,0,16,0 %; !  Reserved for MSCP enhancements
macro UCB$L_SHAD = 264,0,32,0 %;        !  Virtual Unit Pointer to HBS SHAD
! 
!  DISK CLASS DRIVER DEVICE DEPENDENT UNIT CONTROL BLOCK OFFSETS
! 
literal UCB$K_DU_LENGTH = 294;          !  Size of DISK CLASS DRIVER dependent UCB
literal UCB$S_DUDRIVER_EXTENSION = 294;
macro UCB$L_DU_VOLSER = 268,0,32,0 %;   !  Serial umber as returned
!   in ONLINE end packet.
macro UCB$L_DU_USIZE = 272,0,32,0 %;    !  Size of user visible area of 
!   unit in logical blocks
macro UCB$L_DU_TOTSZ = 276,0,32,0 %;    !  Size of unit including RCT 
!   area in logical blocks
macro UCB$W_DU_RCTSIZE = 280,0,16,0 %;  !  Size of the RCT in blocks
macro UCB$B_DU_RCTCPYS = 282,0,8,0 %;   !  Number of RCT copies on the unit
macro UCB$B_DU_RBNPTRK = 283,0,8,0 %;   !  RBNs per track
macro UCB$W_DU_LBNPTRK = 284,0,16,0 %;  !  LBNs per track
macro UCB$W_DU_TRKPGRP = 286,0,16,0 %;  !  Tracks per group
macro UCB$W_DU_GRPPCYL = 288,0,16,0 %;  !  Groups per cylinder
macro UCB$W_DU_MUNTC = 290,0,16,0 %;    !  Multi-unit code
macro UCB$B_DU_USVR = 292,0,8,0 %;      !  Unit software version
macro UCB$B_DU_UHVR = 293,0,8,0 %;      !  Unit hardware version
! 
!  NETWORK LOGICAL LINK (NETWORK MAILBOX) EXTENSION
! 
literal UCB$M_BACKP = 32;
literal UCB$C_LOGLNK = 1;               !  CONNECT IS FOR LOGICAL LINK (NOT SINGLE MSG) 
literal UCB$S_UCBDEF7 = 176;
macro UCB$L_NT_DATSSB = 164,0,32,0 %;   !  ADDRESS OF DATA SUBCHANNEL STATUS BLOCK 
macro UCB$L_NT_INTSSB = 168,0,32,0 %;   !  ADDRESS OF INT/LS SSB 
macro UCB$W_NT_CHAN = 172,0,16,0 %;     !  DDCMP CHANNEL NO. 
macro UCB$V_LTYPE = 174,0,2,0 %;
literal UCB$S_LTYPE = 2;                !  LINK TYPE BITS 
macro UCB$V_SEGFLO = 174,2,1,0 %;       !  SEGMENT REQUEST COUNTS 
macro UCB$V_MSGFLO = 174,3,1,0 %;       !  MESSAGE REQUEST COUNTS 
macro UCB$V_MSGACK = 174,4,1,0 %;       !  MESSAGE ACK/NAK 
macro UCB$V_BACKP = 174,5,1,0 %;        !  BACKPRESSURE (1=> NO FLOW) 
macro UCB$V_LNKPRI = 174,6,2,0 %;
literal UCB$S_LNKPRI = 2;               !  LINK PRIORITY (IGNORED) 
!  NETWORK CONSTANTS 
! 
!  NI DEVICE EXTENSION
! 
literal UCB$K_NI_LENGTH = 172;          ! SIZE OF NI DEVICE UCB 
literal UCB$C_NI_LENGTH = 172;          ! SIZE OF NI DEVICE UCB 
literal UCB$S_UCBDEF9 = 172;
macro UCB$L_NI_HWAPTR = 164,0,32,0 %;   ! ADDRESS OF NI DEVICE HARDWARE ADDRESS
macro UCB$L_NI_MLTPTR = 168,0,32,0 %;   ! ADDRESS OF PROTOCOL MULTICAST TABLE
! 
!  DAP DEVICE EXTENSION (FOR DEVICES THAT USE THE DAP INTERFACE WITHOUT
!  UNDELYING DECNET, SUCH AS CERTAIN CONSOLE DISKS).
! 
literal UCB$K_DAPDEV_LENGTH = 196;      ! SIZE OF DAP DEVICE UCB
literal UCB$C_DAPDEV_LENGTH = 196;      ! SIZE OF DAP DEVICE UCB
literal UCB$S_UCBDEF10 = 196;
macro UCB$T_DAPDEVNAM = 164,0,0,0 %;
literal UCB$S_DAPDEVNAM = 32;           ! EQUIVALENCE NAME STRING
 
!*** MODULE $UCODEDEF ***
! +
!  Define device microcode image header
! 
!  When SYSGEN loads device microcode with a driver, the DPT$L_UCODE
!  field will point to this header structure which contains the size
!  and beginning address of the microcode.
!  
! -
literal UCODE$S_UCODEDEF = 20;
macro UCODE$L_FLINK = 0,0,32,0 %;       ! 
macro UCODE$L_BLINK = 4,0,32,0 %;       ! 
macro UCODE$W_SIZE = 8,0,16,0 %;        ! STRUCTURE SIZE IN BYTES 
!  (zero if gt 64 kb)
macro UCODE$B_TYPE = 10,0,8,0 %;        ! STRUCTURE TYPE
macro UCODE$B_SUBTYP = 11,0,8,0 %;      ! STRUCTURE SUBTYPE 
macro UCODE$L_USIZE = 12,0,32,0 %;      ! SIZE OF THE MICROCODE IMAGE
macro UCODE$L_BASE = 16,0,32,0 %;       ! START OF THE MICROCODE IMAGE
 
!*** MODULE $UNCDEF ***
! 
!  UNCHDRDEF - universal Context Segment Header definition
! 
literal UNC$C_JPI = 1;                  !  JPI CONTEXT SEGMENT
literal UNC$C_UAI = 2;                  !  UAI CONTEXT SEGMENT
literal UNC$C_HDR_LENGTH = 16;          !  SIZE OF CONTEXT SEGMENT HEADER
literal UNC$C_LIST = 16;                !  OFFSET TO FIRST CONTEXT BLOCK
literal UNC$S_UNCHDRDEF = 16;
macro UNC$L_FLINK = 0,0,32,0 %;         !  FORWARD LINK TO NEXT CONTEXT SEGMENT
macro UNC$L_BLINK = 4,0,32,0 %;         !  BACK LINK TO PREV CONTEXT SEGMENT
macro UNC$W_SIZE = 8,0,16,0 %;          !  TOTAL SIZE OF CONTEXT SEGMENT
macro UNC$B_TYPE = 10,0,8,0 %;          !  VMS TYPE OF BLOCK (DYN$C_UNC)
macro UNC$B_SUBTYPE = 11,0,8,0 %;       !  TYPE OF CONTEXT SEGMENT
macro UNC$W_COUNT = 12,0,16,0 %;        !  NUMBER OF CONTEXT BLOCKS IN SEGMENT
macro UNC$W_UNUSED_W1 = 14,0,16,0 %;
! 
!  universal Context Block definition
! 
literal UNC$C_LENGTH = 16;              !  SIZE OF CONTEXT BLOCK
literal UNC$C_SEGMENTS = 31;
!  NATURAL NUMBER OF BLOCKS/SEGMENT
literal UNC$S_UNCDEF = 16;
macro UNC$W_FLAGS = 0,0,16,0 %;         !  CONTEXT CELL FLAGS
macro UNC$B_ACCESS_MODE = 2,0,8,0 %;    !  ACCESS MODE OF CONTEXT CELL
macro UNC$B_UNUSED_B1 = 3,0,8,0 %;
macro UNC$L_IMAGE_COUNT = 4,0,32,0 %;   !  IMGCNT WHEN CONTEXT CELL ASSIGNED
macro UNC$L_TARGET_PID = 8,0,32,0 %;    !  TARGET PROCESS PID
macro UNC$W_SEGIDX = 12,0,16,0 %;       !  RIGHTS SEGMENT INDEX
macro UNC$W_RIGHTS = 14,0,16,0 %;       !  RIGHTS LIST INDEX
macro UNC$W_IFI = 8,0,16,0 %;           !  FAB$W_IFI
macro UNC$W_ISI = 10,0,16,0 %;          !  RAB$W_ISI
macro UNC$W_CHANNEL = 12,0,16,0 %;      !  UAF CHANNEL
 
!*** MODULE $UTCDEF ***
! +
! 
!  $UTCDEF defines the storage format for UTC based times.
! 
! -
literal UTC$M_TDF = 4095;
literal UTC$M_VER = 61440;
literal UTC$S_UTCDEF = 16;
macro UTC$A_WHOLE_TIME = 0,0,0,0 %;
literal UTC$S_WHOLE_TIME = 16;          !  Double quad to fetch entire time
macro UTC$Q_ABSTIME = 0,0,0,0 %;
literal UTC$S_ABSTIME = 8;              !  64 bit system time
!  In units of 100ns ticks
macro UTC$Q_TDF_ETC = 8,0,0,0 %;
literal UTC$S_TDF_ETC = 8;              !  Inaccuracy, TDF, and version
macro UTC$L_ABS0 = 0,0,32,0 %;          !  Least sig 4 bytes of binary time
macro UTC$L_ABS1 = 4,0,32,0 %;          !  Most sig 4 bytes of binary time
macro UTC$L_INAC = 8,0,32,0 %;          !  4 least sig bytes of inaccuracy
macro UTC$L_TDFV = 12,0,32,0 %;         !  4 bits vers, 12 bits TDF, 2 
!  most sig bytes of inaccuracy
macro UTC$A_INACCUR = 0,0,0,1 %;
literal UTC$S_INACCUR = 6;              !  Six bytes of inaccuracy
!  In units of 100ns ticks
macro UTC$W_TDFWRD = 6,0,16,0 %;        !  Fetch the TDF and the version 
macro UTC$V_TDF = 6,0,12,0 %;
literal UTC$S_TDF = 12;                 !  12 bits of offset from UTC to local
!  In units of minutes
macro UTC$V_VER = 6,12,4,0 %;
literal UTC$S_VER = 4;                  !  Unsigned version number
 
!*** MODULE $UV2DEF ***
! ++
!  VIRTUAL ADDRESS SPACE LAYOUT FOR MicroVAX II CPU NODE SPECIFIC REGION
!  POINTED TO BY EXE$GL_CPUNODSP
! --
literal UV2$W_QVSS_CSR = 128;           !  QVSS CSR (IF EXISTS)
literal UV2$W_QDSS_CSR0 = 256;          !  QDSS CSR ADR (POSSIBLY)
literal UV2$W_QDSS_CSR2 = 258;          !  QDSS CSR ADR (POSSIBLY)
literal UV2$W_QDSS_CSR4 = 260;          !  QDSS CSR ADR (POSSIBLY)
literal UV2$W_QDSS_CSR6 = 262;          !  QDSS CSR ADR (POSSIBLY)
literal UV2$W_QDSS_CSR8 = 264;          !  QDSS CSR ADR (POSSIBLY)
literal UV2$W_QDSS_CSRA = 266;          !  QDSS CSR ADR (POSSIBLY)
literal UV2$W_QDSS_CSRC = 268;          !  QDSS CSR ADR (POSSIBLY)
literal UV2$W_QDSS_CSRE = 270;          !  QDSS CSR ADR (POSSIBLY)
literal UV2$W_INTPR0 = 320;             !  INTERPROC COMMUN REG
!    (ICR) FOR ARBITER
literal UV2$W_INTPR1 = 322;             !  ICR FOR AUXIL 1
literal UV2$W_INTPR2 = 324;             !  ICR FOR AUXIL 2
literal UV2$W_INTPR3 = 326;             !  ICR FOR AUXIL 3
literal UV2$L_SIDEX = 516;              !  SYS ID EXTENSION REG
literal UV2$W_BTDIAG = 1024;            !  BOOT & DIAG REG
literal UV2$L_MEMERR = 1028;            !  MEM SYSTEM ERR REG
literal UV2$L_CPUERR = 1032;            !  CPU ERROR ADDR REG
literal UV2$L_DMAERR = 1036;            !  DMA ERROR ADDR REG
literal UV2$L_QMAPS = 1536;             !  FIRST QBUS MAP REG
literal UV2$L_QMAPE = 34300;            !  LAST QBUS MAP REG
literal UV2$W_TODSEC = 34304;           !  TODR SECOND
literal UV2$W_TODSAL = 34306;           !  TODR SECOND ALARM
literal UV2$W_TODMIN = 34308;           !  TODR MINUTE
literal UV2$W_TODMAL = 34310;           !  TODR MINUTE ALARM
literal UV2$W_TODHR = 34312;            !  TODR HOUR
literal UV2$W_TODDWK = 34316;           !  TODR DAY OF WEEK
literal UV2$W_TODDAY = 34318;           !  TODR DAY OF MONTH
literal UV2$W_TODMON = 34320;           !  TODR MONTH
literal UV2$W_TODYR = 34322;            !  TODR YEARR
literal UV2$W_CPMBX = 34332;            !  CONSOLE PROG MAILBOX
literal UV2$W_CPMBX2 = 34334;           !  CONSOLE PROG MAILBOX2
literal UV2$S_UV2DEF = 34816;           !  SIZE MAPPED BY $UV2DEF
!  System ID Extension Longword
literal UV2$S_SIDEX = 4;
macro UV2$W_SIDEX_FILL1 = 0,0,16,0 %;   ! RESERVED
macro UV2$B_SIDEX_ROMVER = 2,0,8,0 %;   ! BOOT ROM VERSION
macro UV2$B_SIDEX_SYSCODE = 3,0,8,0 %;  ! SYSTEM CODE. 1=uVAX II
!  Interprocessor Communication Register
literal UV2$M_INTPR_IRQ = 1;
literal UV2$M_INTPR_LMEAE = 32;
literal UV2$M_INTPR_IE = 64;
literal UV2$M_INTPR_AUXHLT = 256;
literal UV2$M_INTPR_DMAQPE = 32768;
literal UV2$S_INTPR = 2;
macro UV2$V_INTPR_IRQ = 0,0,1,0 %;      ! INTERRUPT REQUEST
macro UV2$V_INTPR_FILL1 = 0,1,4,0 %;
literal UV2$S_INTPR_FILL1 = 4;          ! UNUSED
macro UV2$V_INTPR_LMEAE = 0,5,1,0 %;    ! LOCAL MEM EXT ACCESS ENABLE
macro UV2$V_INTPR_IE = 0,6,1,0 %;       ! INTERRUPT ENABLE
macro UV2$V_INTPR_FILL2 = 0,7,1,0 %;    ! UNUSED
macro UV2$V_INTPR_AUXHLT = 0,8,1,0 %;   ! AUXILIARY HALT
macro UV2$V_INTPR_FILL3 = 0,9,6,0 %;
literal UV2$S_INTPR_FILL3 = 6;          ! UNUSED
macro UV2$V_INTPR_DMAQPE = 0,15,1,0 %;  ! DMA QBUS PARITY ERROR
!  Boot and Diagnostic Configuration Register (BDR)
literal UV2$M_BDR_DSPL = 7;
literal UV2$M_BDR_BDG = 1536;
literal UV2$M_BDR_CPU = 6144;
literal UV2$M_BDR_HLT = 16384;
literal UV2$M_BDR_PWROK = 32768;
literal UV2$S_BDR = 2;
macro UV2$V_BDR_DSPL = 0,0,3,0 %;
literal UV2$S_BDR_DSPL = 3;             ! LED DISPLAY BITS
macro UV2$V_BDR_FILL1 = 0,3,6,0 %;
literal UV2$S_BDR_FILL1 = 6;            ! UNUSED
macro UV2$V_BDR_BDG = 0,9,2,0 %;
literal UV2$S_BDR_BDG = 2;              ! POWER-UP MODE CONTROL BITS
macro UV2$V_BDR_CPU = 0,11,2,0 %;
literal UV2$S_BDR_CPU = 2;              ! CPU NUMBER (0-3)
!   0 = ARBITER CPU
!   1 = AUX CPU NUMBER 1
!   2 = AUX CPU NUMBER 2
!   3 = AUX CPU NUMBER 3
macro UV2$V_BDR_FILL2 = 0,13,1,0 %;     ! UNUSED
macro UV2$V_BDR_HLT = 0,14,1,0 %;       ! HALT ENABLE
macro UV2$V_BDR_PWROK = 0,15,1,0 %;     ! 1 IF POWER IS STABLE
!  Memory System Error Register (MSER)
literal UV2$M_MSER_PARENB = 1;
literal UV2$M_MSER_WRWPAR = 2;
literal UV2$M_MSER_MSLEB = 8;
literal UV2$M_MSER_DMAQPE = 16;
literal UV2$M_MSER_CPUQPE = 32;
literal UV2$M_MSER_CPULPE = 64;
literal UV2$M_MSER_CPUNXM = 128;
literal UV2$M_MSER_MEMCD = 768;
literal UV2$S_MSER = 4;
macro UV2$V_MSER_PARENB = 0,0,1,0 %;    ! PARITY ENABLE
macro UV2$V_MSER_WRWPAR = 0,1,1,0 %;    ! WRITE WRONG PARITY
macro UV2$V_MSER_FILL1 = 0,2,1,0 %;     ! UNUSED
macro UV2$V_MSER_MSLEB = 0,3,1,0 %;     ! MEM SYS LOST ERROR BIT
macro UV2$V_MSER_DMAQPE = 0,4,1,0 %;    ! DMA QBUS ADR SP PARITY ERROR
macro UV2$V_MSER_CPUQPE = 0,5,1,0 %;    ! CPU QBUS ADR SP PARITY ERROR
macro UV2$V_MSER_CPULPE = 0,6,1,0 %;    ! CPU LOCAL ADR SP PARITY ERROR
macro UV2$V_MSER_CPUNXM = 0,7,1,0 %;    ! CPU NON-EXIST MEMORY
macro UV2$V_MSER_MEMCD = 0,8,2,0 %;
literal UV2$S_MSER_MEMCD = 2;           ! MEMORY CODE
!   00 = QBUS MEM OR DEV
!   01 = KDQ32 ON-BOARD MEM
!   10 = MEM EXPAN MODULE #1
!   11 = MEM EXPAN MODULE #2
macro UV2$V_MSER_FILL2 = 0,10,21,0 %;
literal UV2$S_MSER_FILL2 = 21;          ! UNUSED
!  CPU Error Address Register (CEAR)
literal UV2$S_CEAR = 4;
macro UV2$W_CEAR_ADR = 0,0,16,0 %;      ! LOCAL MEM ADR BITS <23:09>
macro UV2$W_CEAR_FILL1 = 2,0,16,0 %;    ! UNUSED, RETURNS AS 0
!  DMA Error Address Register (DEAR)
literal UV2$S_DEAR = 4;
macro UV2$W_DEAR_ADR = 0,0,16,0 %;      ! LOCAL MEM ADR BITS <23:09>
macro UV2$W_DEAR_FILL1 = 2,0,16,0 %;    ! UNUSED, RETURNS AS 0
!  Console Program Mailbox (CPMBX)
literal UV2$M_CPMBX_HLT = 3;
literal UV2$M_CPMBX_BIP = 4;
literal UV2$M_CPMBX_RIP = 8;
literal UV2$M_CPMBX_LNG = 240;
literal UV2$S_CPMBX = 2;
macro UV2$V_CPMBX_HLT = 0,0,2,0 %;
literal UV2$S_CPMBX_HLT = 2;            ! PROCESSOR HALT ACTION
!   0 = USE BDR<14> TO
!       DETERMINE ACTION
!   1 = RESTART, HALT
!   2 = REBOOT, HALT
!   3 = HALT
macro UV2$V_CPMBX_BIP = 0,2,1,0 %;      ! BOOT IN PROGRESS
macro UV2$V_CPMBX_RIP = 0,3,1,0 %;      ! RESTARTIN PROGRESS
macro UV2$V_CPMBX_LNG = 0,4,4,0 %;
literal UV2$S_CPMBX_LNG = 4;            ! CONSOLE TEXT LANGUAGE
!   0 = PROMPT FOR LANG
!   1 = GERMAN
!   2 = ENGLISH
!   3 = SPANISH
!   4 = FRENCH
!   5 = ITALIAN
!   6 = DANISH
!   7 = DUTCH
!   8 = FINNISH
!   9 = NORWEGIAN
!  10 = SWEDISH
macro UV2$V_CPMBX_FILL1 = 0,8,8,0 %;
literal UV2$S_CPMBX_FILL1 = 8;          ! UNUSED
!  Console Program Mailbox 2 Register(CPMBX2)
literal UV2$M_CPMBX2_QXSS = 32;
literal UV2$S_CPMBX2 = 2;
macro UV2$V_CPMBX2_FILL1 = 0,0,5,0 %;
literal UV2$S_CPMBX2_FILL1 = 5;         ! UNUSED
macro UV2$V_CPMBX2_QXSS = 0,5,1,0 %;    ! 1 IF QxSS=CONSOLE TERMINAL
macro UV2$V_CPMBX2_FILL2 = 0,6,10,0 %;
literal UV2$S_CPMBX2_FILL2 = 10;        ! UNUSED
 
!*** MODULE $TTYUCBDEF ***
! 
!   $TTYUCBDEF follows here only because there is no way to get the 
!   UCB$K_LENGTH symbol into another module. TTYUCBDEF was formerly
!   included in TTYDEF.MAR.
! 
!  TERMINAL DRIVER DEFINITIONS
! 
!  These definitions define the device dependent extensions of the UCB.
!  Certain portions of the ucb are assumed to be contiguous and must not
!  be split. These areas are documented in the following definitions.
! 
literal UCB$C_TL_LENGTH = 196;
literal UCB$K_TL_LENGTH = 196;
! 
literal TTY$M_ST_POWER = 1;
literal TTY$M_ST_CTRLS = 2;
literal TTY$M_ST_FILL = 4;
literal TTY$M_ST_CURSOR = 8;
literal TTY$M_ST_SENDLF = 16;
literal TTY$M_ST_BACKSPACE = 32;
literal TTY$M_ST_MULTI = 64;
literal TTY$M_ST_WRITE = 128;
literal TTY$M_ST_EOL = 256;
literal TTY$M_ST_EDITREAD = 512;
literal TTY$M_ST_RDVERIFY = 1024;
literal TTY$M_ST_RECALL = 2048;
literal TTY$M_ST_READ = 4096;
literal TTY$M_ST_CTRLO = 1;
literal TTY$M_ST_DEL = 2;
literal TTY$M_ST_PASALL = 4;
literal TTY$M_ST_NOECHO = 8;
literal TTY$M_ST_WRTALL = 16;
literal TTY$M_ST_PROMPT = 32;
literal TTY$M_ST_NOFLTR = 64;
literal TTY$M_ST_ESC = 128;
literal TTY$M_ST_BADESC = 256;
literal TTY$M_ST_NL = 512;
literal TTY$M_ST_REFRSH = 1024;
literal TTY$M_ST_ESCAPE = 2048;
literal TTY$M_ST_TYPFUL = 4096;
literal TTY$M_ST_SKIPLF = 8192;
literal TTY$M_ST_ESC_O = 16384;
literal TTY$M_ST_WRAP = 32768;
literal TTY$M_ST_OVRFLO = 65536;
literal TTY$M_ST_AUTOP = 131072;
literal TTY$M_ST_CTRLR = 262144;
literal TTY$M_ST_SKIPCRLF = 524288;
literal TTY$M_ST_EDITING = 1048576;
literal TTY$M_ST_TABEXPAND = 2097152;
literal TTY$M_ST_QUOTING = 4194304;
literal TTY$M_ST_OVERSTRIKE = 8388608;
literal TTY$M_ST_TERMNORM = 16777216;
literal TTY$M_ST_ECHAES = 33554432;
literal TTY$M_ST_PRE = 67108864;
literal TTY$M_ST_NINTMULTI = 134217728;
literal TTY$M_ST_RECONNECT = 268435456;
literal TTY$M_ST_CTSLOW = 536870912;
literal TTY$M_ST_TABRIGHT = 1073741824;
literal UCB$M_TT_XXPARITY = 1;
literal UCB$M_TT_DISPARERR = 2;
literal UCB$M_TT_USERFRAME = 4;
literal UCB$M_TT_LEN = 24;
literal UCB$M_TT_STOP = 32;
literal UCB$M_TT_PARTY = 64;
literal UCB$M_TT_ODD = 128;
literal TTY$M_TANK_PREMPT = 256;
literal TTY$M_TANK_STOP = 512;
literal TTY$M_TANK_HOLD = 1024;
literal TTY$M_TANK_BURST = 2048;
literal TTY$M_TANK_DMA = 4096;
literal TTY$M_PC_NOTIME = 1;
literal TTY$M_PC_DMAENA = 2;
literal TTY$M_PC_DMAAVL = 4;
literal TTY$M_PC_PRMMAP = 8;
literal TTY$M_PC_MAPAVL = 16;
literal TTY$M_PC_XOFAVL = 32;
literal TTY$M_PC_XOFENA = 64;
literal TTY$M_PC_NOCRLF = 128;
literal TTY$M_PC_BREAK = 256;
literal TTY$M_PC_PORTFDT = 512;
literal TTY$M_PC_NOMODEM = 1024;
literal TTY$M_PC_NODISCONNECT = 2048;
literal TTY$M_PC_SMART_READ = 4096;
literal TTY$M_PC_ACCPORNAM = 8192;
literal TTY$M_PC_MULTISESSION = 32768;
literal UCB$M_TT_DSBL = 128;
literal UCB$C_TT_CLSLEN = 348;
literal UCB$K_TT_CLSLEN = 348;
literal TTY$M_TP_ABORT = 1;
literal TTY$M_TP_ALLOC = 2;
literal TTY$M_TP_DLLOC = 4;
literal UCB$C_TP_LENGTH = 356;
literal UCB$K_TP_LENGTH = 356;
literal UCB$C_TT_LENGTH = 356;
literal UCB$K_TT_LENGTH = 356;
literal FLG$M_CTRLO = 1;
literal FLG$M_CANCTRLO = 2;
literal FLG$M_VAXTOVAX = 4;
literal FLG$M_CTRLC = 8;
literal FLG$M_INIT = 16;
literal FLG$M_RESET_TIMER = 32;
literal FLG$M_DECNET_BUSY = 64;
literal FLG$M_OUTPUT_BUSY = 128;
literal FLG$M_READ_BUSY = 256;
literal FLG$M_SENSE_BUSY = 512;
literal FLG$M_OOB_CHAR = 1024;
literal FLG$M_FLUSH_OUTPUT = 2048;
literal FLG$M_CLR_NOBRDCST = 4096;
literal FLG$M_READ_ABORT = 8192;
literal FLG$M_READ_ABORTED = 16384;
literal UCB$C_RTT_LENGTH = 324;         !  Length must be same for both RTTDRIVER
literal UCB$K_RTT_LENGTH = 324;         !  and CTDRIVER.
literal UCB$S_TTYUCBDEF = 364;
! 
!  Logical terminal UCB extension
! 
macro UCB$L_TL_CTRLY = 164,0,32,0 %;    !  CONTROL Y AST BLOCK LIST HEAD
macro UCB$L_TL_CTRLC = 168,0,32,0 %;    !  CONTROL C AST BLOCK LIST HEAD
macro UCB$L_TL_OUTBAND = 172,0,32,0 %;  !  OUT OF BAND CHARACTER MASK
macro UCB$L_TL_BANDQUE = 176,0,32,0 %;  !  OUT OF BAND AST QUEUE
macro UCB$L_TL_PHYUCB = 180,0,32,0 %;   !  THE PHYSICAL UCB ADDRESS
macro UCB$L_TL_CTLPID = 184,0,32,0 %;   !  CONTROLING PID (USED WITH SPAWN)
macro UCB$Q_TL_BRKTHRU = 188,0,0,0 %;
literal UCB$S_TL_BRKTHRU = 8;           !  FACILITY BROADCAST BITMASK
!  Terminal class driver dependant region
!  Split here between local and remote terminal UCB's
! 
macro UCB$R_TTYRTTUCB = 196,0,0,0 %;
literal UCB$S_TTYRTTUCB = 168;          !  local/remote union (overlay)
macro UCB$R_TTYUCB = 196,0,0,0 %;
literal UCB$S_TTYUCB = 168;             !  this structure defines remainder of local ucb
!  READ TIMEOUT CONTROL
macro UCB$L_TT_RDUE = 196,0,32,0 %;     !  ABSTIME WHEN READ TIMEOUT DUE
macro UCB$L_TT_RTIMOU = 200,0,32,0 %;   !  ADDRESS OF READ TIMEOUT ROUTINE
!  TERMINAL DRIVER STATE TABLE
macro UCB$Q_TT_STATE = 204,0,0,0 %;
literal UCB$S_TT_STATE = 8;             !  CURRENT UNIT STATE VECTOR
macro UCB$L_TT_STATE1 = 204,0,32,0 %;
macro TTY$V_ST_POWER = 204,0,1,0 %;     ! 
macro TTY$V_ST_CTRLS = 204,1,1,0 %;     ! 
macro TTY$V_ST_FILL = 204,2,1,0 %;      ! 
macro TTY$V_ST_CURSOR = 204,3,1,0 %;    ! 
macro TTY$V_ST_SENDLF = 204,4,1,0 %;    ! 
macro TTY$V_ST_BACKSPACE = 204,5,1,0 %; ! 
macro TTY$V_ST_MULTI = 204,6,1,0 %;     ! 
macro TTY$V_ST_WRITE = 204,7,1,0 %;
macro TTY$V_ST_EOL = 204,8,1,0 %;       ! 
macro TTY$V_ST_EDITREAD = 204,9,1,0 %;  ! 
macro TTY$V_ST_RDVERIFY = 204,10,1,0 %; ! 
macro TTY$V_ST_RECALL = 204,11,1,0 %;   ! 
macro TTY$V_ST_READ = 204,12,1,0 %;     ! 
macro UCB$L_TT_STATE2 = 208,0,32,0 %;
macro TTY$V_ST_CTRLO = 208,0,1,0 %;     ! 
macro TTY$V_ST_DEL = 208,1,1,0 %;       ! 
macro TTY$V_ST_PASALL = 208,2,1,0 %;    ! 
macro TTY$V_ST_NOECHO = 208,3,1,0 %;    ! 
macro TTY$V_ST_WRTALL = 208,4,1,0 %;    ! 
macro TTY$V_ST_PROMPT = 208,5,1,0 %;    ! 
macro TTY$V_ST_NOFLTR = 208,6,1,0 %;    ! 
macro TTY$V_ST_ESC = 208,7,1,0 %;       ! 
macro TTY$V_ST_BADESC = 208,8,1,0 %;    ! 
macro TTY$V_ST_NL = 208,9,1,0 %;        ! 
macro TTY$V_ST_REFRSH = 208,10,1,0 %;   ! 
macro TTY$V_ST_ESCAPE = 208,11,1,0 %;   ! 
macro TTY$V_ST_TYPFUL = 208,12,1,0 %;   ! 
macro TTY$V_ST_SKIPLF = 208,13,1,0 %;   ! 
macro TTY$V_ST_ESC_O = 208,14,1,0 %;    ! 
macro TTY$V_ST_WRAP = 208,15,1,0 %;     ! 
macro TTY$V_ST_OVRFLO = 208,16,1,0 %;   ! 
macro TTY$V_ST_AUTOP = 208,17,1,0 %;    ! 
macro TTY$V_ST_CTRLR = 208,18,1,0 %;    ! 
macro TTY$V_ST_SKIPCRLF = 208,19,1,0 %; ! 
macro TTY$V_ST_EDITING = 208,20,1,0 %;  ! 
macro TTY$V_ST_TABEXPAND = 208,21,1,0 %; ! 
macro TTY$V_ST_QUOTING = 208,22,1,0 %;  ! 
macro TTY$V_ST_OVERSTRIKE = 208,23,1,0 %; ! 
macro TTY$V_ST_TERMNORM = 208,24,1,0 %; ! 
macro TTY$V_ST_ECHAES = 208,25,1,0 %;   ! 
macro TTY$V_ST_PRE = 208,26,1,0 %;      ! 
macro TTY$V_ST_NINTMULTI = 208,27,1,0 %; ! 
macro TTY$V_ST_RECONNECT = 208,28,1,0 %; ! 
macro TTY$V_ST_CTSLOW = 208,29,1,0 %;   ! 
macro TTY$V_ST_TABRIGHT = 208,30,1,0 %; ! 
macro UCB$L_TT_LOGUCB = 212,0,32,0 %;   !  ADDRESS OF THE LOGICAL UCB
!  DEFAULT CHARACTERISTICS
macro UCB$L_TT_DECHAR = 216,0,32,0 %;   !  DEFAULT DEVICE CHARACTERISTICS
macro UCB$L_TT_DECHA1 = 220,0,32,0 %;   !  DEFAULT DEVICE CHAR EXTENSIONS
macro UCB$L_TT_DECHA2 = 224,0,32,0 %;   !  MORE DEVICE CHARACTERISTICS
macro UCB$L_TT_DECHA3 = 228,0,32,0 %;   !  ANOTHER DEVICE CHAR EXTENSIONS
!  WRITE QUEUE POINTERS
macro UCB$L_TT_WFLINK = 232,0,32,0 %;   !  Write queue forward link.
macro UCB$L_TT_WBLINK = 236,0,32,0 %;   !  Write queue backward link.
macro UCB$L_TT_WRTBUF = 240,0,32,0 %;   !  Current write buffer block.
!  ADDRESS AND LENGTH OF MULTI-ECHO STRING
macro UCB$L_TT_MULTI = 244,0,32,0 %;    !  CURRENT MULTIECHO BUFFER ADDRESS
macro UCB$W_TT_MULTILEN = 248,0,16,0 %; !  LENGTH OF STRING TO OUTPUT
macro UCB$W_TT_SMLTLEN = 250,0,16,0 %;  !  SAVED MULTI LENGTH
macro UCB$L_TT_SMLT = 252,0,32,0 %;     !  AND THE SAVED ADDRESS
! -- **********************************************************************
!  DEFAULT SPEED, FILL ,PARITY (MUST BE CONTIGUOUS)
! ++ *******************************************************************
macro UCB$W_TT_DESPEE = 256,0,16,0 %;   !  DEFAULT SPEED
macro UCB$B_TT_DECRF = 258,0,8,0 %;     !  DEFAULT CR FILL
macro UCB$B_TT_DELFF = 259,0,8,0 %;     !  DEFAULT LF FILL
macro UCB$B_TT_DEPARI = 260,0,8,0 %;    !  DEFAULT PARITY/CHAR SIZE
macro UCB$B_TT_DEFSPE_SPARE1 = 261,0,8,0 %;
macro UCB$W_TT_DEFSPE_SPARE2 = 262,0,16,0 %;
! -- **********************************************************************
! 
!  DEFAULT TERMINAL TYPE AND SIZE (MUST BE CONTIGUOUS)
! 
! ++  ***********************************************************************
macro UCB$B_TT_DETYPE = 264,0,8,0 %;    !  DEFAULT TERMINAL TYPE
macro UCB$W_TT_DESIZE = 265,0,16,0 %;   !  DEFAULT LINE SIZE
macro UCB$B_TT_SPARE1 = 267,0,8,0 %;    !  SPARE BYTE MUST FOLLOW
! -- **********************************************************************
!  SPEED, FILL, PARITY (MUST BE CONTIGUOUS)
! ++ *****************************************************************
macro UCB$W_TT_SPEED = 268,0,16,0 %;    !  SPEED CODES (SPLIT SPEED)
macro UCB$B_TT_TSPEED = 268,0,8,0 %;    !  TRANSMIT SPEED
macro UCB$B_TT_RSPEED = 269,0,8,0 %;    !  RECEIVE SPEED
macro UCB$B_TT_CRFILL = 270,0,8,0 %;    !  NUMBER FILLS TO OUTPUT ON CR
macro UCB$B_TT_LFFILL = 271,0,8,0 %;    !  NUMBER FILLS TO OUTPUT ON LF
macro UCB$B_TT_PARITY = 272,0,8,0 %;    !  PARITY AND CHARACTER SIZE DEFINITIONS
macro UCB$V_TT_XXPARITY = 272,0,1,0 %;  !  UNUSED ??
macro UCB$V_TT_DISPARERR = 272,1,1,0 %; !  SPECIFY DISREGARD PARITY ERRORS
macro UCB$V_TT_USERFRAME = 272,2,1,0 %; !  SPECIFY USER FRAME SETUP
macro UCB$V_TT_LEN = 272,3,2,0 %;
literal UCB$S_TT_LEN = 2;               !  CHARACTER LENGTH
macro UCB$V_TT_STOP = 272,5,1,0 %;      !  STOP BITS
macro UCB$V_TT_PARTY = 272,6,1,0 %;     !  PARITY ENABLED
macro UCB$V_TT_ODD = 272,7,1,0 %;       !  ODD PARITY
macro UCB$B_TT_PAR_SPARE1 = 273,0,8,0 %;
macro UCB$W_TT_PAR_SPARE2 = 274,0,16,0 %;
! -- ******************************************************************
!  Typeahead buffer address
macro UCB$L_TT_TYPAHD = 276,0,32,0 %;   !  TYPEAHEAD BUFFER ADDRESS
!  CURRENT CURSOR AND LINE POSITION FOR FORMATTED OPERATIONS
macro UCB$W_TT_CURSOR = 280,0,16,0 %;   !  CURRENT CURSOR POSITION
macro UCB$B_TT_LINE = 282,0,8,0 %;      !  CURRENT LINE ON PAGE
macro UCB$B_TT_LASTC = 283,0,8,0 %;     !  LAST FORMATTED OUTPUT CHARACTER
!  Number of back spaces to output for non-ansi terminals
macro UCB$W_TT_BSPLEN = 284,0,16,0 %;   !  NUMBER OF BACKSPACES
!  FILL HANDLING
macro UCB$B_TT_FILL = 286,0,8,0 %;      !  CURRENT FILL COUNT
!  ESCAPE SYNTAX RULE STATE.
macro UCB$B_TT_ESC = 287,0,8,0 %;       !  CURRENT  READ ESCAPE SYNTAX STATE
macro UCB$B_TT_ESC_O = 288,0,8,0 %;     !  OUPUT ESCAPE STATE
!  Count of characters in interrupt string
macro UCB$B_TT_INTCNT = 289,0,8,0 %;
!  Bit used for modem control
macro UCB$W_TT_UNITBIT = 290,0,16,0 %;  !  BIT USED TO ENABLE AND DISABLE MODEM CONTROL.
!  PORT SPECIFIC OUTPUT CONTROL
macro UCB$W_TT_HOLD = 292,0,16,0 %;     !  UNIT HOLDING TANK AND PORT DISPATCH
macro TTY$B_TANK_CHAR = 292,0,8,0 %;    !  CHARACTER
macro TTY$V_TANK_PREMPT = 292,8,1,0 %;  !  SEND PREMPT CHARACTER
macro TTY$V_TANK_STOP = 292,9,1,0 %;    !  STOP OUTPUT
macro TTY$V_TANK_HOLD = 292,10,1,0 %;   !  CHAR IN TANK
macro TTY$V_TANK_BURST = 292,11,1,0 %;  !  BURST ACTIVE
macro TTY$V_TANK_DMA = 292,12,1,0 %;    !  DMA ACTIVE **** SHOULD MOVE BEFORE BURST ****
macro UCB$B_TT_PREMPT = 294,0,8,0 %;    !  THE BYTE USED TO PREMPT INPUT
macro UCB$B_TT_OUTYPE = 295,0,8,0 %;    !  TYPE OF OUTPUT THAT THIS CALL
!  CLASS & PORT VECTOR POINTERS
macro UCB$L_TT_GETNXT = 296,0,32,0 %;   !  ADDRESS OF CLASS INPUT ROUTINE
macro UCB$L_TT_PUTNXT = 300,0,32,0 %;   !  ADDRESS OF CLASS OUTPUT ROUTINE
macro UCB$L_TT_CLASS = 304,0,32,0 %;    !  ADDRESS OF CLASS VECTOR
macro UCB$L_TT_PORT = 308,0,32,0 %;     !  ADDRESS OF PORT VECTOR
macro UCB$L_TT_OUTADR = 312,0,32,0 %;   !  ADDRESS OF OUTPUT  CURRENT STREAM
macro UCB$W_TT_OUTLEN = 316,0,16,0 %;   !  LENGTH OF OUTPUT STREAM
macro UCB$W_TT_PRTCTL = 318,0,16,0 %;   !  THE PORT DRIVER CONTROL WORD
macro TTY$V_PC_NOTIME = 318,0,1,0 %;    !  IF SET NO TIMEOUT WILL BE CALCULATED
macro TTY$V_PC_DMAENA = 318,1,1,0 %;    !  DMA CURRENTLY ENABLED 
macro TTY$V_PC_DMAAVL = 318,2,1,0 %;    !  DMA SUPPORTED ON THIS PORT
macro TTY$V_PC_PRMMAP = 318,3,1,0 %;    !  UNIT CAN HAVE PERMANENT MAP REGISTERS
macro TTY$V_PC_MAPAVL = 318,4,1,0 %;    !  MAP REGISTER CURRENTLY ALLOCATED
macro TTY$V_PC_XOFAVL = 318,5,1,0 %;    !  AUTO XOFF SUPPORTED ON THIS PORT
macro TTY$V_PC_XOFENA = 318,6,1,0 %;    !  AUTO XOFF CURRENTLY ENABLED 
macro TTY$V_PC_NOCRLF = 318,7,1,0 %;    !  don't do free linefeed after creturn
macro TTY$V_PC_BREAK = 318,8,1,0 %;     !  TURN ON OR OFF BREAK
macro TTY$V_PC_PORTFDT = 318,9,1,0 %;   !  PORT CONTAINS FDT ROUTINE
macro TTY$V_PC_NOMODEM = 318,10,1,0 %;  !  Port cannot support modem operations
macro TTY$V_PC_NODISCONNECT = 318,11,1,0 %; !  Device cannot support virtual terminal operations
macro TTY$V_PC_SMART_READ = 318,12,1,0 %; !  Port contains additional read capabilities
macro TTY$V_PC_ACCPORNAM = 318,13,1,0 %; !  Port supports access port name
macro TTY$V_PC_MULTISESSION = 318,15,1,0 %; !  part of multi-session terminal
!  MODEM CONTROL DEFINITIONS
macro UCB$B_TT_DS_RCV = 320,0,8,0 %;    !  CURRENT RECEIVE MODEM
macro UCB$B_TT_DS_TX = 321,0,8,0 %;     !  CURRENT TRANSMIT MODEM
macro UCB$W_TT_DS_ST = 322,0,16,0 %;    !  CURRENT MODEM STATE
macro UCB$W_TT_DS_TIM = 324,0,16,0 %;   !  CURRENT MODEM TIMEOUT
macro UCB$B_TT_MAINT = 326,0,8,0 %;     !  MAINTENANCE PARAMETERS
macro UCB$V_TT_MAINT_FILL = 326,0,7,0 %;
literal UCB$S_TT_MAINT_FILL = 7;
macro UCB$V_TT_DSBL = 326,7,1,0 %;      !  LINE DISABLED
macro UCB$B_TT_OLDCPZORG = 327,0,8,0 %; !  spare byte make this longword alligned
macro UCB$L_TT_FBK = 328,0,32,0 %;      !  PTR TO FALLBACK BLOCK
macro UCB$L_TT_RDVERIFY = 332,0,32,0 %; !  PTR TO READ/VERIFY TABLE
macro UCB$L_TT_CLASS1 = 336,0,32,0 %;   !  CLASS DRIVER LONGWORD
macro UCB$L_TT_CLASS2 = 340,0,32,0 %;   !   AND ANOTHER ONE
macro UCB$L_TT_ACCPORNAM = 344,0,32,0 %; !  Address of counted string describing the port 
!  typicall LAT server name / and port name or number
!  For FTUCBDEF
! ****************************************************************
! 
!  Terminal Port driver dependant extension region
macro UCB$L_TP_MAP = 348,0,32,0 %;      !  UNIBUS MAP REGISTERS
macro UCB$B_TP_STAT = 352,0,8,0 %;      !  DMA PORT SPECIFIC STATUS
macro TTY$V_TP_ABORT = 352,0,1,0 %;     !  DMA ABORT REQUESTED ON THIS LINE
macro TTY$V_TP_ALLOC = 352,1,1,0 %;     !  ALLOC MAP FORK IN PROGRESS
macro TTY$V_TP_DLLOC = 352,2,1,0 %;     !  DEALLOCATE MAP FORK IN PROGRESS
macro UCB$B_TP_SPARE1 = 353,0,8,0 %;
macro UCB$W_TP_SPARE2 = 354,0,16,0 %;
macro UCB$R_TT_STATE_SX = 356,0,0,0 %;
literal TTY$S_TT_STATE_SX = 8;
macro TTY$V_SX_POWER = 356,0,1,0 %;     ! 	
macro TTY$V_SX_CTRLS = 356,1,1,0 %;     ! 
macro TTY$V_SX_FILL = 356,2,1,0 %;      ! 
macro TTY$V_SX_CURSOR = 356,3,1,0 %;    ! 
macro TTY$V_SX_SENDLF = 356,4,1,0 %;    ! 
macro TTY$V_SX_BACKSPACE = 356,5,1,0 %; !  OUTPUT BACKSPACES FOR SEVERAL LOOPS
macro TTY$V_SX_MULTI = 356,6,1,0 %;     ! 
macro TTY$V_SX_WRITE = 356,7,1,0 %;     !  Write state
macro TTY$V_SX_EOL = 356,8,1,0 %;       ! 
macro TTY$V_SX_EDITREAD = 356,9,1,0 %;  ! 
macro TTY$V_SX_RDVERIFY = 356,10,1,0 %; ! 
macro TTY$V_SX_RECALL = 356,11,1,0 %;   ! 
macro TTY$V_SX_READ = 356,12,1,0 %;     ! 
macro TTY$V_SX_FILLBITS = 356,13,19,0 %;
literal TTY$S_SX_FILLBITS = 19;         !  END OF FIRST LONGWORD
macro TTY$V_SX_CTRLO = 360,0,1,0 %;     ! 
macro TTY$V_SX_DEL = 360,1,1,0 %;       ! 
macro TTY$V_SX_PASALL = 360,2,1,0 %;    ! 
macro TTY$V_SX_NOECHO = 360,3,1,0 %;    ! 
macro TTY$V_SX_WRTALL = 360,4,1,0 %;    ! 
macro TTY$V_SX_PROMPT = 360,5,1,0 %;    ! 
macro TTY$V_SX_NOFLTR = 360,6,1,0 %;    ! 
macro TTY$V_SX_ESC = 360,7,1,0 %;       ! 
macro TTY$V_SX_BADESC = 360,8,1,0 %;    ! 
macro TTY$V_SX_NL = 360,9,1,0 %;        !  New line must directly precede
macro TTY$V_SX_REFRSH = 360,10,1,0 %;   !  refresh, or all breaks.
macro TTY$V_SX_ESCAPE = 360,11,1,0 %;   ! 
macro TTY$V_SX_TYPFUL = 360,12,1,0 %;   ! 
macro TTY$V_SX_SKIPLF = 360,13,1,0 %;   ! 
macro TTY$V_SX_ESC_O = 360,14,1,0 %;    ! 
macro TTY$V_SX_WRAP = 360,15,1,0 %;     ! 
macro TTY$V_SX_OVRFLO = 360,16,1,0 %;   ! 
macro TTY$V_SX_AUTOP = 360,17,1,0 %;    ! 
macro TTY$V_SX_CTRLR = 360,18,1,0 %;    ! 
macro TTY$V_SX_SKIPCRLF = 360,19,1,0 %; ! 
macro TTY$V_SX_EDITING = 360,20,1,0 %;  ! 
macro TTY$V_SX_TABEXPAND = 360,21,1,0 %; ! 
macro TTY$V_SX_QUOTING = 360,22,1,0 %;  ! 
macro TTY$V_SX_OVERSTRIKE = 360,23,1,0 %; ! 
macro TTY$V_SX_TERMNORM = 360,24,1,0 %; ! 
macro TTY$V_SX_ECHAES = 360,25,1,0 %;   ! 
macro TTY$V_SX_PRE = 360,26,1,0 %;      ! 
macro TTY$V_SX_NINTMULTI = 360,27,1,0 %; ! 
macro TTY$V_SX_RECONNECT = 360,28,1,0 %; ! 
macro TTY$V_SX_CTSLOW = 360,29,1,0 %;   ! 
macro TTY$V_SX_TABRIGHT = 360,30,1,0 %; ! 
!  remote terminal extension
macro UCB$R_RTTUCB = 196,0,0,0 %;
literal UCB$S_RTTUCB = 128;
macro UCB$L_RTT_NETUCB = 196,0,32,0 %;  !  NET DEVICE UCB
macro UCB$L_RTT_NETWIND = 200,0,32,0 %; !  NET DEVICE WCB
macro UCB$L_RTT_IRPFL = 204,0,32,0 %;   !  IRP QUEUE
macro UCB$L_RTT_IRPBL = 208,0,32,0 %;   !  IRP QUEUE
macro UCB$L_RTT_NETIRP = 212,0,32,0 %;  !  READ NET IIRP
macro UCB$L_RTT_BANDINCL = 216,0,32,0 %; !  OUT OF BAND INCLUDES
macro UCB$L_RTT_BANDINMSK = 220,0,32,0 %; !  OUT OF BAND INCLUDE MASK
macro UCB$L_RTT_BANDEXCL = 224,0,32,0 %; !  out of band exclude mask
macro UCB$L_RTT_BANDEXMSK = 228,0,32,0 %; !  out of band exclude
macro UCB$B_RTT_PROVRS = 232,0,8,0 %;   !  PROTOCOL VERSION
macro UCB$B_RTT_PROECO = 233,0,8,0 %;   !  PROTOCOL ECO
macro UCB$W_RTT_LINK = 234,0,16,0 %;    !  LINK NUMBER (for LOGINOUT)
macro UCB$B_RTT_OBJ = 236,0,8,0 %;      !  OBJECT NUMBER CONNECTED
macro UCB$W_RTT_SYSTYPE = 237,0,16,0 %; !  SYSTEM TYPE (VMS=7)
macro UCB$B_RTT_FILLBYTE = 239,0,8,0 %; !  fill - use when convenient
! 	CTERM driver only
macro UCB$L_CT_FLAGS = 240,0,32,0 %;    !  MISC FLAGS
macro FLG$V_CTRLO = 240,0,1,0 %;        !  CTRLO IN PROGRESS
macro FLG$V_CANCTRLO = 240,1,1,0 %;     !  CANCEL CTRLO ON WRITE
macro FLG$V_VAXTOVAX = 240,2,1,0 %;     !  VAX TO VAX
macro FLG$V_CTRLC = 240,3,1,0 %;        !  CTRL/C DELIVERED
macro FLG$V_INIT = 240,4,1,0 %;         !  AWAITING FIRST WRITE
macro FLG$V_RESET_TIMER = 240,5,1,0 %;  !  Restart timer due to write.
macro FLG$V_DECNET_BUSY = 240,6,1,0 %;  !  DECnet Output task busy.
macro FLG$V_OUTPUT_BUSY = 240,7,1,0 %;  !  Output task busy.
macro FLG$V_READ_BUSY = 240,8,1,0 %;    !  Read task busy.
macro FLG$V_SENSE_BUSY = 240,9,1,0 %;   !  Sense task busy.
macro FLG$V_OOB_CHAR = 240,10,1,0 %;    !  Process OOB character later.
macro FLG$V_FLUSH_OUTPUT = 240,11,1,0 %; !  Flush output for out-of-band abort.
macro FLG$V_CLR_NOBRDCST = 240,12,1,0 %; !  Don't broadcast until after first write.
macro FLG$V_READ_ABORT = 240,13,1,0 %;  !  Read abort in progress.
macro FLG$V_READ_ABORTED = 240,14,1,0 %; !  Read has already been aborted.
macro UCB$L_CT_WIIRP = 244,0,32,0 %;    !  WRITE IIRP
macro UCB$L_CT_TQE = 248,0,32,0 %;      !  TQE ADDRESS
macro UCB$L_CT_NETQFL = 252,0,32,0 %;   !  Queue of DCB's waiting 
macro UCB$L_CT_NETQBL = 256,0,32,0 %;   !    for write IRP
macro UCB$L_CT_SENSEQFL = 260,0,32,0 %; !  Queue for pending 
macro UCB$L_CT_SENSEQBL = 264,0,32,0 %; !    IO$_SENSExxxx IRPs.
macro UCB$L_CT_READQFL = 268,0,32,0 %;  !  Queue for pending
macro UCB$L_CT_READQBL = 272,0,32,0 %;  !    read IRPs.
macro UCB$L_CT_WRTDCB = 276,0,32,0 %;   !  First DCB in current write chain.
macro UCB$L_CT_CURDCB = 280,0,32,0 %;   !  Last DCB added to write chain.
macro UCB$W_CT_REMSIZ = 284,0,16,0 %;   !  Remaining size in message.
macro UCB$W_CT_QDCBCNT = 286,0,16,1 %;  !  Number of queued DCBs.
macro UCB$W_CT_MAXMSG = 288,0,16,0 %;   !  MAX WRITE TO NET SIZE
macro UCB$W_CT_MAXREAD = 290,0,16,0 %;  !  MAX READ IN SERVER
macro UCB$L_CT_LEGALMSG = 292,0,32,0 %; !  LEGAL MESSAGE MASK
macro UCB$B_CT_VERSION = 296,0,8,0 %;   !  CTERM VERSION
macro UCB$B_CT_ECO = 297,0,8,0 %;       !  CTERM ECO
macro UCB$W_CT_SPEED = 298,0,16,0 %;    !  SPEED 
macro UCB$B_CT_CRFILL = 300,0,8,0 %;    !  CR FILL
macro UCB$B_CT_LFFILL = 301,0,8,0 %;    !  LF FILL
macro UCB$W_CT_PARITY = 302,0,16,0 %;   !  CTERM PARITY
macro UCB$L_CT_INCLUDE = 304,0,32,0 %;  !  INCLUDE OUT-OF-BAND CHARACTER MASK
macro UCB$L_CT_EXCLUDE = 308,0,32,0 %;  !  EXCLUDE OUT-OF-BAND CHARACTER MASK
macro UCB$L_CT_ABORT = 312,0,32,0 %;    !  ABORT OUT-OF-BAND CHARACTER MASK
macro UCB$B_CT_OOB_CHAR = 316,0,8,0 %;  !  Received out of band character.
macro UCB$B_CT_FILL_BYTE = 317,0,8,0 %; !  fill
macro UCB$W_CT_PRTCTL = 318,0,16,0 %;   !  Same as UCB$W_TT_PRTCTL
macro UCB$L_CT_FILL_LONGWORD = 320,0,32,0 %; !  fill
!  end union
 
!*** MODULE $FTUCBDEF ***
! 
! 	$FTUCBDEF follows here only because there is no way to get the  the
!  UCB$K_TT_LENGTH into another module.
! 
! 	Pseudo Terminal Driver definitions
! 
! 	These definitions define the device dependent extenstions of the TTYUCB. 
!  Certain portions of the UCB are assumed to be contigious and must not be
!  split.  The AST list heads are order and must remain in order $PTDDEF in
!  STARDEFMP.SDL is in the same order.
! 
literal UCB$M_FT_BSY = 1;
literal UCB$M_FT_DELPEND = 2;
literal UCB$M_FT_DELETE_ACT = 4;
literal UCB$M_FT_INPUT_CRIT = 8;
literal UCB$C_FT_LENGTH = 432;          !  Size of FT UCB
literal UCB$K_FT_LENGTH = 432;          !   "   "   "  "
literal UCB$S_FTUCBDEF = 432;
macro UCB$L_FT_IPID = 348,0,32,0 %;     !  Interal PID of UCB control process
macro UCB$L_FT_1ST_PAGE = 352,0,32,0 %; !  P0/P1 address of first page of I/O buffer
macro UCB$L_FT_LST_PAGE = 356,0,32,0 %; !  P0/P1 address of end of the I/O buffer
macro UCB$L_FT_S0_PAGE = 360,0,32,0 %;  !  S0 address of first page that maps I/O buffer
macro UCB$Q_FT_BUFFER_HANDLE = 364,0,0,0 %;
literal UCB$S_FT_BUFFER_HANDLE = 8;     !  Pointer to buffer handle used by buffer object code
! 
!  Driver private state information
! 
macro UCB$W_FT_STS = 372,0,16,0 %;      !  Driver private status word
macro UCB$V_FT_BSY = 372,0,1,0 %;       !  Read request pending
macro UCB$V_FT_DELPEND = 372,1,1,0 %;   !  It is safe to queue deletion fork
macro UCB$V_FT_DELETE_ACT = 372,2,1,0 %; !  Deletion fork queued
macro UCB$V_FT_INPUT_CRIT = 372,3,1,0 %; !  Type ahead buffer running out or out of space
macro UCB$W_FT_CHAN = 374,0,16,0 %;     !  Control applications channel number
macro UCB$L_FT_READQFL = 376,0,32,0 %;  !  Read requests queue forward link
macro UCB$L_FT_READQBL = 380,0,32,0 %;  !  Read requests queue backward link
macro UCB$L_FT_CURR_READ = 384,0,32,0 %; !  Currend read request packet address
! 
!  AST list head this must remain in order and should not be changed.
! 
!  The AST list head is overlaid and becomes the fork block used to delete the
!  UCB when the control connection deassigns it's channel.  This is safe becuase
!  once the control connection channel is deleted it is impossible to enable one
!  of these ASTs.
! 
macro UCB$R_FT_DELETE_FORK = 388,0,0,0 %;
literal UCB$S_FT_DELETE_FORK = 44;
macro UCB$R_FTUCB = 388,0,0,0 %;
literal UCB$S_FTUCB = 44;
macro UCB$L_FT_HANGUP_AST = 388,0,32,0 %; !  Address of hangup template ACB
macro UCB$L_FT_XON_AST = 392,0,32,0 %;  !  Address of XON template ACB
macro UCB$L_FT_BELL_AST = 396,0,32,0 %; !  Address of BELL template ACB
macro UCB$L_FT_DC3_AST = 400,0,32,0 %;  !  Address of DC3 template ACB
macro UCB$L_FT_STOP_AST = 404,0,32,0 %; !  Address of stop output template ACB
macro UCB$L_FT_RESUME_AST = 408,0,32,0 %; !  Address of resume output template ACB
macro UCB$L_FT_SET_AST = 412,0,32,0 %;  !  Address of changed characteristics template ACB
macro UCB$L_FT_ABORT_AST = 416,0,32,0 %; !  Address of abort output template ACB
macro UCB$L_FT_START_READ_AST = 420,0,32,0 %; !  Address of start read template ACB
macro UCB$L_FT_MIDDLE_READ_AST = 424,0,32,0 %; !  Address of middle read template ACB
macro UCB$L_FT_END_READ_AST = 428,0,32,0 %; !  Address of end read template ACB
macro UCB$R_FT_FORK_OVERLAY = 388,0,0,0 %;
macro UCB$L_FT_FQFL = 388,0,32,0 %;     !  Fork queue forward link
macro UCB$L_FT_FQBL = 392,0,32,0 %;     !  Fork queue backward link
macro UCB$W_FT_FRKSIZE = 396,0,16,0 %;  !  Size of the fork block
macro UCB$B_FT_FRK_TYPE = 398,0,8,0 %;  !  Type of structure
macro UCB$B_FT_FLCK = 399,0,8,0 %;      !  Fork lock index
macro UCB$L_FT_FPC = 400,0,32,0 %;      !  Fork PC this points device deletion routine
macro UCB$L_FT_FR3 = 404,0,32,0 %;      !  R3 will be 0
macro UCB$L_FT_FR4 = 408,0,32,0 %;      !  UCB address
!  End Union
 
!*** MODULE $UQBDEF ***
! +
!  UQB  (Unit Queue Block)  Definitions -- MSCP Server
! -
literal UQB$M_SEQ = 1;
literal UQB$M_WRTPH = 2;
literal UQB$M_WRTPS = 4;
literal UQB$M_C = 31;
literal UQB$M_D1 = 992;
literal UQB$M_D0 = 31744;
literal UQB$C_LENGTH = 112;
literal UQB$K_LENGTH = 112;
!  Unit state definitions
literal UQB$K_ST_ONLINE = 2;            !   Unit is online to some host
literal UQB$K_ST_OFFLINE = 3;           !   Unit is offline
literal UQB$K_ST_AVAILABLE = 4;         !   Unit is available
literal UQB$S_UQBDEF = 112;
macro UQB$L_FLINK = 0,0,32,0 %;         !  Used to link together all
macro UQB$L_BLINK = 4,0,32,0 %;         !    UQBs being served 
macro UQB$W_SIZE = 8,0,16,0 %;          !  Structure size in bytes
macro UQB$B_TYPE = 10,0,8,0 %;          !  MSCP type structure
macro UQB$B_SUBTYPE = 11,0,8,0 %;       !   with a UQB subtype       (5)
macro UQB$W_STATE = 12,0,16,0 %;        !  Current state of this unit
macro UQB$W_FLAGS = 14,0,16,0 %;        !  Unit usage
macro UQB$V_SEQ = 14,0,1,0 %;           !  Sequential command executing
macro UQB$V_WRTPH = 14,1,1,0 %;         !  Unit is writelocked
macro UQB$V_WRTPS = 14,2,1,0 %;         !  Unit was mounted /NOWRITE
macro UQB$W_OLD_UNIT = 16,0,16,0 %;     !  "Old Style" unit number
macro UQB$W_CURRENT = 18,0,16,0 %;      !  Commands active on this unit
macro UQB$W_MULT_UNIT = 20,0,16,0 %;    !  This information is set up
macro UQB$W_UNIT_FLAGS = 22,0,16,0 %;   !   in ADDUNIT when the device
macro UQB$Q_UNIT_ID = 24,0,0,0 %;
literal UQB$S_UNIT_ID = 8;              !   is set /SERVED.
macro UQB$L_ALLOCLS = 24,0,32,0 %;      !  The unit identifier is made up 
macro UQB$W_UNIT = 28,0,16,0 %;         !   of the allocation class, the 
macro UQB$W_DEVNAME = 30,0,16,0 %;      !   
macro UQB$V_C = 30,0,5,0 %;
literal UQB$S_C = 5;                    !   UCB unit number, the controller 
macro UQB$V_D1 = 30,5,5,0 %;
literal UQB$S_D1 = 5;                   !   letter, and the D1 D0 fields 
macro UQB$V_D0 = 30,10,5,0 %;
literal UQB$S_D0 = 5;                   !   from the media ID field
macro UQB$l_reserved = 32,0,32,0 %;     !   
macro UQB$L_UCB = 36,0,32,0 %;          !  UCB address for this unit
macro UQB$W_NUM_QUE = 40,0,16,0 %;      !  Host requests pending
macro UQB$W_MAX_QUE = 42,0,16,0 %;      !  Most requests ever pending
macro UQB$L_BLOCKED_FL = 44,0,32,0 %;   !  List head for HRBs pending
macro UQB$L_BLOCKED_BL = 48,0,32,0 %;   !   sequential cmd completion
macro UQB$B_ONLINE = 52,0,0,0 %;
literal UQB$S_ONLINE = 32;              !  Array of hosts with unit online 
macro UQB$L_EXTRA_IO = 84,0,32,0 %;     !  Splinter requests
macro UQB$L_IOCNT = 88,0,32,0 %;        !  Server contribution to total
macro UQB$W_QLEN = 92,0,16,0 %;         !  Server queue length for unit
macro UQB$W_SLUN = 94,0,16,0 %;         !  Server local unit number
!  max chars in Cluster unique
!    device name ( dependency in
!    PEDRIVER's PEM_DEF.SDL)
macro UQB$B_UNIQUE_DNAME_CNT = 96,0,8,0 %; !  .ASCIC string with
macro UQB$T_UNIQUE_DNAME = 97,0,0,0 %;
literal UQB$S_UNIQUE_DNAME = 15;        !   Cluster unique name for disk
!   unit (obtained VIA GETDVI
!   ALLDEVNAM item)
 
!*** MODULE $VADEF ***
! +
!  VIRTUAL ADDRESS VIELDS
! -
literal VA$M_BYTE = 511;
literal VA$M_VPN = 1073741312;
literal VA$M_P1 = 1073741824;
literal VA$M_SYSTEM = -2147483648;
literal VA$M_VPG = -512;
literal VA$S_VADEF = 4;
macro VA$V_BYTE = 0,0,9,0 %;
literal VA$S_BYTE = 9;                  ! BYTE VIELD 
macro VA$V_VPN = 0,9,21,0 %;
literal VA$S_VPN = 21;                  ! VIRTUAL PAGE NUMBER 
macro VA$V_P1 = 0,30,1,0 %;             ! P1 SPACE 
macro VA$V_SYSTEM = 0,31,1,0 %;         ! SYSTEM SPACE 
macro VA$V_VPG = 0,9,23,0 %;
literal VA$S_VPG = 23;                  ! VIRTUAL PAGE INCLUDING P1 & S 
 
!*** MODULE $VCADEF ***
! +
! 
!  VCA - Volume Cache Block. This block contains the specialized caches for
!  a disk volume; to wit, the file ID cache, the extent cache, and the quota
!  file cache. The file ID cache and extent cache are together in one block;
!  the quota cache is located separately in another block. Both are pointed to
!  by the VCB.
! 
! -
literal VCA$M_FIDC_VALID = 1;
literal VCA$M_EXTC_VALID = 2;
literal VCA$M_FIDC_FLUSH = 4;
literal VCA$M_EXTC_FLUSH = 8;
literal VCA$K_LENGTH = 12;              !  length of block header 
literal VCA$C_LENGTH = 12;              !  length of block header 
! 
literal VCA$S_VCADEF = 12;
macro VCA$L_FIDCACHE = 0,0,32,0 %;      !  pointer to file ID cache 
macro VCA$L_EXTCACHE = 4,0,32,0 %;      !  pointer to extent cache 
macro VCA$W_SIZE = 8,0,16,0 %;          !  block size 
macro VCA$B_TYPE = 10,0,8,0 %;          !  block type code 
macro VCA$B_FLAGS = 11,0,8,1 %;         !  cache flags
macro VCA$V_FIDC_VALID = 11,0,1,0 %;    !  FID cache valid
macro VCA$V_EXTC_VALID = 11,1,1,0 %;    !  Extent cache valid
macro VCA$V_FIDC_FLUSH = 11,2,1,0 %;    !  FID cache to be flushed
macro VCA$V_EXTC_FLUSH = 11,3,1,0 %;    !  Extent cache to be flushed
!  The file ID cache consists of the cache header, followed by a longword
!  vector of file numbers, densely packed.
! 
literal VCA$S_VCADEF1 = 40;
macro VCA$W_FIDSIZE = 0,0,16,0 %;       !  number of entries allocated 
macro VCA$W_FIDCOUNT = 2,0,16,0 %;      !  number of entries present 
macro VCA$L_FIDCLKID = 4,0,32,0 %;      !  FID cache lock id.
macro VCA$B_FIDCACB = 8,0,0,0 %;
literal VCA$S_FIDCACB = 28;             !  FID cache blocking ACB
macro VCA$L_FIDLIST = 36,0,32,0 %;      !  first entry in list 
! 
!  The extent cache consists of the cache header, followed by a quadword
!  vector of extents, densely packed. Each quadword contains block count
!  and starting LBN.
! 
literal VCA$S_VCADEF2 = 52;
macro VCA$W_EXTSIZE = 0,0,16,0 %;       !  number of entries allocated 
macro VCA$W_EXTCOUNT = 2,0,16,0 %;      !  number of entries present 
macro VCA$L_EXTTOTAL = 4,0,32,0 %;      !  total number of blocks contained in cache 
macro VCA$W_EXTLIMIT = 8,0,16,0 %;      !  limit of volume to be cached, in percent/10 
macro VCA$L_EXTCLKID = 12,0,32,0 %;     !  EXT cache lock id.
macro VCA$B_EXTCACB = 16,0,0,0 %;
literal VCA$S_EXTCACB = 28;             !  Extent cache blocking ACB.
macro VCA$Q_EXTLIST = 44,0,0,0 %;
literal VCA$S_EXTLIST = 8;              !  first entry in list 
literal VCA$S_VCADEF3 = 8;
macro VCA$L_EXTBLOCKS = 0,0,32,0 %;     !  number of blocks 
macro VCA$L_EXTLBN = 4,0,32,0 %;        !  starting LBN 
! 
!  The quota cache consists of the cache header, followed by the cache
!  entries. Each cache entry is a block as defined below.
! 
literal VCA$M_CACHEVALID = 1;
literal VCA$M_CACHEFLUSH = 2;
literal VCA$S_VCADEF4 = 72;
macro VCA$W_QUOSIZE = 0,0,16,0 %;       !  number of entries allocated 
macro VCA$W_QUOLRU = 2,0,16,0 %;        !  current LRU counter 
macro VCA$L_QUOCLKID = 4,0,32,0 %;      !  whole cache lock ID
macro VCA$B_QUOCFLAGS = 11,0,8,1 %;     !  cache flags
macro VCA$V_CACHEVALID = 11,0,1,0 %;    !  cache is valid
macro VCA$V_CACHEFLUSH = 11,1,1,0 %;    !  cache is to be flushed
macro VCA$B_QUOACB = 12,0,0,0 %;
literal VCA$S_QUOACB = 28;              !  ACB to deliver blocking AST
macro VCA$B_QUOFLUSHACB = 40,0,0,0 %;
literal VCA$S_QUOFLUSHACB = 28;         !  ACB to deliver cache flush AST
macro VCA$L_QUOLIST = 68,0,32,0 %;      !  start of entries 
literal VCA$M_QUOVALID = 1;
literal VCA$M_QUODIRTY = 2;
literal VCA$K_QUOLENGTH = 28;           !  length of quota cache entry 
literal VCA$C_QUOLENGTH = 28;           !  length of quota cache entry 
literal VCA$S_VCADEF5 = 28;
macro VCA$R_QUOLOCK = 0,0,0,0 %;
literal VCA$S_QUOLOCK = 24;             !  lock status block
macro VCA$W_QUOSTATUS = 0,0,16,0 %;     !  $ENQ status
macro VCA$W_QUOINDEX = 0,0,16,0 %;      !  index in cache of this entry
macro VCA$W_QUOLRUX = 2,0,16,0 %;       !  LRU index for entry 
macro VCA$L_QUOLKID = 4,0,32,0 %;       !  lock ID of cache entry
macro VCA$L_QUORECNUM = 8,0,24,0 %;
literal VCA$S_QUORECNUM = 3;            !  record number 
macro VCA$B_QUOFLAGS = 11,0,8,0 %;      !  flags byte 
macro VCA$V_QUOVALID = 11,0,1,0 %;      !  valid entry is present
macro VCA$V_QUODIRTY = 11,1,1,0 %;      !  dirty flag 
macro VCA$L_USAGE = 12,0,32,0 %;        !  current usage 
macro VCA$L_PERMQUOTA = 16,0,32,0 %;    !  permanent quota 
macro VCA$L_OVERDRAFT = 20,0,32,0 %;    !  overdraft limit 
macro VCA$L_QUOUIC = 24,0,32,0 %;       !  UIC 
 
!*** MODULE $VCBDEF ***
literal VCB$K_MRKLEN = 11;              !  Mark length
literal VCB$C_MRKLEN = 11;              !  Mark length
literal VCB$M_WRITE_IF = 1;
literal VCB$M_WRITE_SM = 2;
literal VCB$M_HOMBLKBAD = 4;
literal VCB$M_IDXHDRBAD = 8;
literal VCB$M_NOALLOC = 16;
literal VCB$M_EXTFID = 32;
literal VCB$M_GROUP = 64;
literal VCB$M_SYSTEM = 128;
literal VCB$M_PARTFILE = 1;
literal VCB$M_LOGICEOVS = 2;
literal VCB$M_WAIMOUVOL = 4;
literal VCB$M_WAIREWIND = 8;
literal VCB$M_WAIUSRLBL = 16;
literal VCB$M_CANCELIO = 32;
literal VCB$M_MUSTCLOSE = 64;
literal VCB$M_NOWRITE = 128;
literal VCB$M_SHADMAST = 1;
literal VCB$M_FAILED = 2;
literal VCB$M_REBLDNG = 8;
literal VCB$M_BLKASTREC = 16;
literal VCB$M_MVBEGUN = 32;
literal VCB$M_ADDING = 64;
literal VCB$M_PACKACKED = 128;
literal VCB$K_COMLEN = 36;              !  LENGTH OF COMMON AREA 
literal VCB$S_VCBDEF_COMMON = 36;
macro VCB$L_FCBFL = 0,0,32,0 %;         !  FCB listhead forward link
macro VCB$L_BLOCKFL = 0,0,32,0 %;       !   or - Blocked request listhead forward link
macro VCB$L_MEMQFL = 0,0,32,0 %;        !   or - Shadow set members queue forward link
macro VCB$L_FCBBL = 4,0,32,0 %;         !  FCB listhead backward link
macro VCB$L_BLOCKBL = 4,0,32,0 %;       !   or - Blocked request listhead backward link
macro VCB$L_MEMQBL = 4,0,32,0 %;        !   or - Shadow set members queue backward link
macro VCB$W_SIZE = 8,0,16,0 %;          !  Size of VCB in bytes
macro VCB$B_TYPE = 10,0,8,0 %;          !  structure type of VCB 
!  Second mark point
macro VCB$B_STATUS = 11,0,8,0 %;        !  Volume status:
macro VCB$V_WRITE_IF = 11,0,1,0 %;      !     Index file is write accessed
macro VCB$V_WRITE_SM = 11,1,1,0 %;      !     Storage map is write accessed
macro VCB$V_HOMBLKBAD = 11,2,1,0 %;     !     Primary home block is bad
macro VCB$V_IDXHDRBAD = 11,3,1,0 %;     !     Primary index file header is bad
macro VCB$V_NOALLOC = 11,4,1,0 %;       !     Allocation/deallocation inhibited (bad bitmaps)
macro VCB$V_EXTFID = 11,5,1,0 %;        !     Volume has 24 bit file numbers
macro VCB$V_GROUP = 11,6,1,0 %;         !     Volume is mounted /group
macro VCB$V_SYSTEM = 11,7,1,0 %;        !     Volume is mounted /system
macro VCB$V_PARTFILE = 11,0,1,0 %;      !     Partial file exists on tape
macro VCB$V_LOGICEOVS = 11,1,1,0 %;     !     Positioned at logical end of volume set
macro VCB$V_WAIMOUVOL = 11,2,1,0 %;     !     Wait for volume mount
macro VCB$V_WAIREWIND = 11,3,1,0 %;     !     Wait for rewind completion
macro VCB$V_WAIUSRLBL = 11,4,1,0 %;     !     Wait for user label
macro VCB$V_CANCELIO = 11,5,1,0 %;      !     Cancel I/O 
macro VCB$V_MUSTCLOSE = 11,6,1,0 %;     !     Must close file
macro VCB$V_NOWRITE = 11,7,1,0 %;       !     Don't write trailers
macro VCB$V_SHADMAST = 11,0,1,0 %;      !     This VCB is for shadow set master
macro VCB$V_FAILED = 11,1,1,0 %;        !     Member failed out of shadow set
macro VCB$V_REBLDNG = 11,3,1,0 %;       !     Mount verfication rebuilding shadow set
macro VCB$V_BLKASTREC = 11,4,1,0 %;     !     Shadowing lock blocking AST received
macro VCB$V_MVBEGUN = 11,5,1,0 %;       !     Mount verification initiated
macro VCB$V_ADDING = 11,6,1,0 %;        !     Adding member to shadow set
macro VCB$V_PACKACKED = 11,7,1,0 %;     !     Member PACKACKed during rebuild attempt
macro VCB$W_TRANS = 12,0,16,0 %;        !  VOLUME TRANSACTION COUNT 
macro VCB$W_RVN = 14,0,16,0 %;          !  RELATIVE VOLUME NUMBER 
macro VCB$L_AQB = 16,0,32,0 %;          !  ADDRESS OF AQB 
macro VCB$T_VOLNAME = 20,0,0,0 %;
literal VCB$S_VOLNAME = 12;             !  VOLUME LABEL BLANK FILLED 
macro VCB$L_RVT = 32,0,32,0 %;          !  ADDRESS OF UCB OR RELATIVE VOLUME TABLE 
!  THIRD MARK POINT
literal VCB$C_COMLEN = 36;              !  LENGTH OF COMMON AREA 
literal VCB$K_LENGTH = 240;             !  LENGTH OF STANDARD VCB 
literal VCB$C_LENGTH = 240;             !  LENGTH OF STANDARD VCB 
literal VCB$S_VCBDEF_DISKS = 240;
macro VCB$L_HOMELBN = 36,0,32,0 %;      !  LBN OF VOLUME HOME BLOCK 
macro VCB$L_HOME2LBN = 40,0,32,0 %;     !  LBN OF ALTERNATE VOLUME HOME BLOCK 
macro VCB$L_IXHDR2LBN = 44,0,32,0 %;    !  LBN OF ALTERNATE INDEX FILE HEADER 
macro VCB$L_IBMAPLBN = 48,0,32,0 %;     !  LBN OF INDEX FILE BITMAP 
macro VCB$L_SBMAPLBN = 52,0,32,0 %;     !  LBN OF STORAGE BITMAP 
macro VCB$W_IBMAPSIZE = 56,0,16,0 %;    !  SIZE OF INDEX FILE BITMAP
macro VCB$B_IBMAPSIZE = 56,0,8,0 %;     !   SIZE OF INDEX FILE BITMAP (old form)
macro VCB$W_IBMAPVBN = 58,0,16,0 %;     !  CURRENT VBN IN INDEX FILE BIT MAP
macro VCB$B_IBMAPVBN = 58,0,8,0 %;      !   CURRENT VBN IN INDEX FILE BIT MAP (old form)
macro VCB$W_SBMAPSIZE = 60,0,16,0 %;    !  SIZE OF STORAGE BITMAP 
macro VCB$B_SBMAPSIZE = 60,0,8,0 %;     !   SIZE OF STORAGE BITMAP (old form)
macro VCB$W_SBMAPVBN = 62,0,16,0 %;     !  CURRENT VBN IN STORAGE MAP 
macro VCB$B_SBMAPVBN = 62,0,8,0 %;      !   CURRENT VBN IN STORAGE MAP (old form)
macro VCB$W_CLUSTER = 64,0,16,0 %;      !  VOLUME CLUSTER SIZE 
macro VCB$W_EXTEND = 66,0,16,0 %;       !  VOLUME DEFAULT FILE EXTENSION LENGTH 
macro VCB$L_FREE = 68,0,32,0 %;         !  NUMBER OF FREE BLOCKS ON VOLUME 
macro VCB$L_MAXFILES = 72,0,32,0 %;     !  MAXIMUM NUMBER OF FILES ALLOWED ON VOLUME 
macro VCB$B_WINDOW = 76,0,8,0 %;        !  VOLUME DEFAULT WINDOW SIZE 
macro VCB$B_LRU_LIM = 77,0,8,1 %;       !  VOLUME DIRECTORY LRU SIZE LIMIT 
macro VCB$W_FILEPROT = 78,0,16,0 %;     !  VOLUME DEFAULT FILE PROTECTION 
macro VCB$W_MCOUNT = 80,0,16,0 %;       !  MOUNT COUNT 
macro VCB$B_EOFDELTA = 82,0,8,0 %;      !  INDEX FILE EOF UPDATE COUNT 
macro VCB$B_RESFILES = 83,0,8,0 %;      !  NUMBER OF RESERVED FILES ON VOLUME 
macro VCB$W_RECORDSZ = 84,0,16,0 %;     !  NUMBER OF BYTES IN A RECORD 
macro VCB$B_BLOCKFACT = 86,0,8,0 %;     !  VOLUME BLOCKING FACTOR 
macro VCB$B_STATUS2 = 87,0,8,0 %;       !  SECOND STATUS BYTE 
macro VCB$V_WRITETHRU = 87,0,1,0 %;     !  VOLUME IS TO BE WRITE-THROUGH CACHED 
macro VCB$V_NOCACHE = 87,1,1,0 %;       !  ALL CACHEING IS DISABLED ON VOLUME 
macro VCB$V_MOUNTVER = 87,2,1,0 %;      !  VOLUME CAN UNDERGO MOUNT VERIFICATION 
macro VCB$V_ERASE = 87,3,1,0 %;         !  ERASE DATA WHEN BLOCKS REMOVED FROM FILE
macro VCB$V_NOHIGHWATER = 87,4,1,0 %;   !  TURN OFF HIGH-WATER MARKING (D = ON)
macro VCB$V_NOSHARE = 87,5,1,0 %;       !  non-shared mount
macro VCB$V_CLUSLOCK = 87,6,1,0 %;      !  CLUSTER WIDE LOCKING NECESSARY
macro VCB$V_SUBSET0 = 87,7,1,0 %;       !  ODS-2 SUBSET 0 VOLUME
macro VCB$L_QUOTAFCB = 88,0,32,0 %;     !  ADDRESS OF FCB OF DISK QUOTA FILE 
macro VCB$L_CACHE = 92,0,32,0 %;        !  ADDRESS OF VOLUME CACHE BLOCK 
macro VCB$L_QUOCACHE = 96,0,32,0 %;     !  ADDRESS OF VOLUME QUOTA CACHE 
macro VCB$W_QUOSIZE = 100,0,16,0 %;     !  LENGTH OF QUOTA CACHE TO ALLOCATE 
macro VCB$W_PENDERR = 102,0,16,0 %;     !  COUNT OF PENDING WRITE ERRORS 
macro VCB$L_SERIALNUM = 104,0,32,0 %;   !  VOLUME SERIAL NUMBER (DISKS ONLY) 
macro VCB$L_RESERVED1 = 108,0,32,0 %;   !  RESERVED
!  NOTE: the above field was formerly called JNLIOCNT
macro VCB$Q_RETAINMIN = 112,0,0,0 %;
literal VCB$S_RETAINMIN = 8;            !  MINIMUM FILE RETENTION PERIOD 
macro VCB$Q_RETAINMAX = 120,0,0,0 %;
literal VCB$S_RETAINMAX = 8;            !  MAXIMUM FILE RETENTION PERIOD 
macro VCB$L_VOLLKID = 128,0,32,0 %;     !  VOLUME LOCK ID
macro VCB$T_VOLCKNAM = 132,0,0,0 %;
literal VCB$S_VOLCKNAM = 12;            !  NAME FOR VOLUME LOCKS
macro VCB$L_BLOCKID = 144,0,32,0 %;     !  VOLUME BLOCKING LOCK.
macro VCB$Q_MOUNTTIME = 148,0,0,0 %;
literal VCB$S_MOUNTTIME = 8;            !  VOLUME MOUNT TIME
macro VCB$L_MEMHDFL = 156,0,32,0 %;     !  SHADOW SET MEMBERS QUEUE HEADER FL
macro VCB$L_MEMHDBL = 160,0,32,0 %;     !  SHADOW SET MEMBERS QUEUE HEADER BL
macro VCB$W_ACTIVITY = 164,0,16,0 %;    !  ACTIVITY COUNT/FLAG
macro VCB$B_SPL_CNT = 166,0,8,0 %;      !  NUMBER OF DEVICES SPOOLED TO VOLUME
macro VCB$B_SHAD_STS = 167,0,8,0 %;     !  STATUS BYTE RELATIVE TO MEMHDFL
macro VCB$L_SHAD_LKID = 168,0,32,0 %;   !  Shadowing lock lock-id
macro VCB$B_ACB = 172,0,0,0 %;
literal VCB$S_ACB = 28;                 !  ACB FOR BLOCKING AST.
macro VCB$R_MIN_CLASS = 200,0,0,0 %;
literal VCB$S_MIN_CLASS = 20;           !  MINIMUM CLASSIFICATION
macro VCB$R_MAX_CLASS = 220,0,0,0 %;
literal VCB$S_MAX_CLASS = 20;           !  MAXIMUM CLASSIFICATION
! 
!  SHADOW SET MEMBER VOLUME CONTROL BLOCK FIELDS
! 
literal VCB$K_SHAD_LEN = 68;            !  Shadow set member VCB length
literal VCB$S_VCBDEF_SHADOW = 68;
macro VCB$L_MEM_UCB = 36,0,32,0 %;      !  Shadow set member UCB address
macro VCB$L_MAST_UCB = 40,0,32,0 %;     !  Shadow set master UCB address
macro VCB$L_MAST_VCB = 44,0,32,0 %;     !  Shadow set master VCB address
macro VCB$W_COPY_TYPE = 48,0,16,0 %;    !  Member's MSCP copy type
macro VCB$W_CPYSEQNUM = 50,0,16,0 %;    !  IO$_COPYSHAD sequence number
macro VCB$Q_WORK = 52,0,0,0 %;
literal VCB$S_WORK = 8;                 !  Per-member workspace
macro VCB$Q_SHDM_RESV = 60,0,0,0 %;
literal VCB$S_SHDM_RESV = 8;            !  Reserved for future enhancements
! 
!  MTAACP VOLUME CONTROL BLOCK FIELDS
! 
literal VCB$S_VCBDEF2 = 73;
macro VCB$L_CUR_FID = 36,0,32,0 %;      !  CURRENT FILE IDENTIFICATION 
macro VCB$W_CUR_NUM = 36,0,16,0 %;      !  CURRENT FILE SECTION NUMBER 
macro VCB$W_CUR_SEQ = 38,0,16,0 %;      !  CURRENT FILE SEQUENCE NUMBER 
macro VCB$L_START_FID = 40,0,32,0 %;    !  FILE IDENTIFICATION AT START OF SEARCH 
macro VCB$W_START_NUM = 40,0,16,0 %;    !  FILE SECTION NUMBER AT START OF SEARCH 
macro VCB$W_START_SEQ = 42,0,16,0 %;    !  FILE SEQUENCE NUMBER AT START OF SEARCH 
macro VCB$W_MODE = 44,0,16,0 %;         !  MODE OF OPERATION 
macro VCB$V_OVREXP = 44,0,1,0 %;        !  OVERRIDE EXPIRATION 
macro VCB$V_OVRACC = 44,1,1,0 %;        !  OVERRIDE ACCESS 
macro VCB$V_OVRLBL = 44,2,1,0 %;        !  OVERRIDE LABELS 
macro VCB$V_OVRSETID = 44,3,1,0 %;      !  OVERRIDE SET IDENTIFIER 
macro VCB$V_INTCHG = 44,4,1,0 %;        !  INTERCHANGE TAPE 
macro VCB$V_EBCDIC = 44,5,1,0 %;        !  EBCDIC CODE SET 
macro VCB$V_NOVOL2 = 44,6,1,0 %;        !  DO NOT WRITE A VOL2 LABEL
macro VCB$V_NOHDR3 = 44,7,1,0 %;        !  DO NOT WRITE HDR3 LABELS 
macro VCB$V_STARFILE = 44,8,1,0 %;      !  CURRENT FILE IS A STARLET PRODUCED FILE 
macro VCB$V_ENUSEREOT = 44,9,1,0 %;     !  SET WHEN USER HANDLING OF EOT IS ENABLED
macro VCB$V_BLANK = 44,10,1,0 %;        !  SET FOR AVL WHEN NO READ SHOULD HAPPEN FIRST
macro VCB$V_INIT = 44,11,1,0 %;         !  SET FOR AVL WHEN NEXT VOL MOUNTED SHOULD BE INITED
macro VCB$V_NOAUTO = 44,12,1,0 %;       !  MTAACP NOT RUNNING IN AVL AND AVR MODE
macro VCB$V_OVRVOLO = 44,13,1,0 %;      !  OVERRIDE THEVOL1 OWNER IDENT FIELD
macro VCB$V_FIL_ACCESS = 44,14,1,0 %;   !  SET IF ACCESS ROUTINE ALLOWS CHECK OF VMS PROTECTION ON FILE
macro VCB$B_TM = 46,0,8,0 %;            !  NUMBER OF TM'S INTO FILE 
macro VCB$B_CUR_RVN = 47,0,8,0 %;       !  CURRENT RELATIVE VOLUME 
macro VCB$L_ST_RECORD = 48,0,32,0 %;    !  NUMBER OF RECORDS UP TO AND INCLUDING LAST TAPE MARK 
macro VCB$L_MVL = 52,0,32,0 %;          !  ADDRESS OF MAGNETIC TAPE VOLUME LIST 
macro VCB$L_WCB = 56,0,32,0 %;          !  ADDRESS OF WINDOW FOR THIS VOLUME 
macro VCB$L_VPFL = 60,0,32,0 %;         !  VIRTUAL PAGE LIST HEAD 
macro VCB$L_VPBL = 64,0,32,0 %;         !  VIRTUAL PAGE LIST TAIL 
macro VCB$L_USRLBLAST = 68,0,32,0 %;    !  ADDRESS OF USER LABEL AST CONTROL BLOCK 
macro VCB$B_LBLCNT = 72,0,8,0 %;        !  Count of HDRn labels read on file open
!  NOTE THAT FCP AND MTAACP SHARE VCB$W_MCOUNT(DISPLACEMENT 76)
literal VCB$S_VCBDEF3 = 32;
macro VCB$B_QNAMECNT = 11,0,8,0 %;      !  BYTE COUNT OF QUEUE NAME 
macro VCB$T_QNAME = 12,0,0,0 %;
literal VCB$S_QNAME = 20;               !  ASCII NAME OF QUEUE FOR THIS DEVICE 
! 
!  JOURNAL ACP VOLUME CONTROL BLOCK FIELDS
! 
 
!*** MODULE $DCBEDEF ***
! +
!  DCBE - Data Chain Block
! 
!  The DCBE is the data structure used to chain data packets together.  A
!  chain may consist of on buffer or may buffers each pointed to by a DCBE.
!  the format of the DCBE is the same as a VCRP data request, so that a 
!  VCRP may be the first DCBE in the chain, and describe the entire 
!  data request.
! 
!  THE FORMAT OF THIS PACKET SHOULD NOT CHANGE WITHOUT CORRESPONDING CHANGES
!  BEING MAY TO A VCRP DATA REQUEST PACKET.
! -
literal DCBE$M_CMN_LOCKED = 1;
literal DCBE$M_CMN_RETBUF = 2;
literal DCBE$M_CMN_CACHE = 4;
literal DCBE$K_DCB_HEADER = 56;         !  Length of DCB header
literal DCBE$S_DCBEDEF = 56;
macro DCBE$L_FLINK = 0,0,32,0 %;        !  Forward Queue link
macro DCBE$L_BLINK = 4,0,32,0 %;        !  Backward Queue link
macro DCBE$W_SIZE = 8,0,16,0 %;         !  Size of structure
macro DCBE$B_TYPE = 10,0,8,0 %;         !  Type of structure - DYN$C_NET
macro DCBE$B_SUB_TYPE = 11,0,8,0 %;     !  Subtype of structure - DYN$C_VCI_DCB
macro DCBE$L_RESERVED = 12,0,0,1 %;
literal DCBE$S_RESERVED = 16;           !  Reserved to ensure that VCRP and
!   DCB look the same up to DCB_HEADER
macro DCBE$R_COMMON_FLAGS_OVERLAY = 28,0,16,0 %;
macro DCBE$W_COMMON_FLAGS = 28,0,16,0 %; !  Common flags used by all users of DCBs
macro DCBE$V_CMN_LOCKED = 28,0,1,0 %;   !  Indicates buffer is locked down for direct I/O
macro DCBE$V_CMN_RETBUF = 28,1,1,0 %;   !  Indicates buffer must be return to owner immediately
macro DCBE$V_CMN_CACHE = 28,2,1,0 %;    !  Indicates buffer came from creator's cache
macro DCBE$B_FLAGS = 30,0,8,0 %;        !  User controlled DCB flags
macro DCBE$B_MODE = 31,0,8,0 %;         !  
macro DCBE$A_DEALLOC_RTN = 32,0,32,0 %; !  Address of routine to deallocate VCRP
macro DCBE$A_DCB_LINK = 36,0,32,0 %;    !  Address of next DCB in chain
macro DCBE$L_SVAPTE = 40,0,32,0 %;      !  Address of System Virtual Address PTE
macro DCBE$L_BUFFER_ADDRESS = 44,0,32,0 %; !  VM Address of buffer specified in SVAPTE
macro DCBE$L_BOFF = 48,0,32,0 %;        !  Offset to start of data in buffer
macro DCBE$L_BCNT = 52,0,32,0 %;        !  Byte count of data in buffer
 
!*** MODULE $VCCDEF ***
! 
!  CFCB - Cache File Control Block
! 
!  There is one CFCB for each cacheable file.  The Cache File Control
!  Block contains the information necessary for consistent data caching
!  in a VAXcluster.  The FCB contains the address of the CFCB.
!  
literal CFCB$K_LENGTH = 96;
literal CFCB$S_CFCBDEF = 96;
!  head of CFCB is an ACB
macro CFCB$L_ASTQFL = 0,0,32,0 %;       !  AST queue FLINK
macro CFCB$L_ASTQBL = 4,0,32,0 %;       !  AST queue BLINK
macro CFCB$W_SIZE = 8,0,16,0 %;         !  size of CFCB in bytes
macro CFCB$B_TYPE = 10,0,8,0 %;         !  type is VCC, a subtypable structure
macro CFCB$B_SUBTYPE = 11,0,8,0 %;      !  subtype for CFCB and RMODE for ACB
macro CFCB$L_AST_PID = 12,0,32,0 %;     !  either accesser/deacceser or server
macro CFCB$L_AST_ADDR = 16,0,32,0 %;    !  address to resume process
macro CFCB$L_AST_PRM = 20,0,32,0 %;     !  the parameter
!  no KAST field needed
!  end of ACB
!  cells to control access to and type of cache mode lock
macro CFCB$W_LKSB_STATUS = 24,0,16,0 %; !  completion status
macro CFCB$W_RESERVED = 24,0,16,0 %;
macro CFCB$L_LOCKID = 24,0,32,0 %;      !  lockid of cache mode lock
macro CFCB$L_WAIT_PID = 28,0,32,0 %;    !  PID waiting for cache mode lock access
macro CFCB$L_WAIT_ADDR = 32,0,32,0 %;   !  address at which to resume process
macro CFCB$L_WRITERS = 36,0,32,0 %;     !  number of reasons to keep write lock
macro CFCB$L_HASHTABLE = 40,0,32,0 %;   !  address of hash table data structure
macro CFCB$L_STATUS = 44,0,32,0 %;      !  
macro CFCB$V_SEQ = 44,0,1,0 %;          !  file is being accessed sequentially
!  these next 3 bits must be together
!  they indicate the current cache mode
macro CFCB$V_CONFLICT = 44,1,1,0 %;     !  this node's access conflicts with another node
macro CFCB$V_WRITE = 44,2,1,0 %;        !  set for read/write, clear read only
macro CFCB$V_NOLOCK = 44,3,1,0 %;       !  no cache mode lock held
!  status bits for accessing the cache mode lock
macro CFCB$V_BUSY = 44,4,1,0 %;         !  cache mode lock is being modified
macro CFCB$V_DELAYBLKAST = 44,5,1,0 %;  !  BLKAST arrived while CFCB busy
macro CFCB$V_DELAYCOMPLAST = 44,6,1,0 %; !  CMPLAST arrived while CFCB busy
macro CFCB$V_DISBLKFRK = 44,7,1,0 %;    !  disable future blocking forks
macro CFCB$V_DISCMPLFRK = 44,8,1,0 %;   !  disable future completion forks
!  counts of interesting things
macro CFCB$L_VREAD = 48,0,32,0 %;       !  virtual reads to this file
macro CFCB$L_READHIT = 52,0,32,0 %;     !  read hits to this file
macro CFCB$L_VWRITE = 56,0,32,0 %;      !  virtual writes to this file
macro CFCB$L_WRITEHIT = 60,0,32,0 %;    !  write hits to this file
macro CFCB$L_AROUND = 64,0,32,0 %;      !  read or writes "around" this cache
macro CFCB$L_BLOCKCNT = 68,0,32,0 %;    !  data blocks allocated to this file
macro CFCB$L_CLCNT = 72,0,32,0 %;       !  cache lines allocated to this file
macro CFCB$L_IOERRORS = 76,0,32,0 %;    !  number of I/O errors for this file
macro CFCB$L_LASTVBN = 80,0,32,0 %;     !  last VBN read/written
macro CFCB$L_HIVBN = 84,0,32,0 %;       !  largest VBN ever cached for this file
macro CFCB$L_DELTIME = 88,0,32,0 %;     !  seconds past boottime to delete FCB
!  0 means no delete in pending
macro CFCB$B_DISABLE = 92,0,8,0 %;      !  number of reasons to disable caching
!  of this file even if cache mode lock
!  will allow caching
!  zero means caching is enabled
! 
!  HT - Hash Table
! 
!  There is one hash table for each cacheable file.  The Cache File Control
!  Block contains the address of the hash table.  Access requires owning the
!  cache spin lock.
literal HT$Q_HASHTABLE = 12;            !  start of hash table
literal HT$S_HTDEF = 12;
!  The cache line and hash table sizes are not constants.  They may vary for
!  different files. The size of each must be a power of two. The VBN is
!  subdivided into bitfields based on the cache line size and the size of
!  the hash table.  The lowest bits, <0,CLSIZE-1> represent the offset in
!  the cache line. Bits <CLSIZE-1, HASHSIZE> are the hash index. These
!  fields are accessed via bitfield instructions and the values of CLSIZE
!  and HASHSIZE are encoded to define bitfields NOT the actual size of the
!  entity. 
macro HT$L_FILL = 0,0,32,0 %;
macro HT$B_CLSIZE = 4,0,8,0 %;          !  encoded cache line size (see above)
macro HT$B_HASHSIZE = 5,0,8,0 %;        !  encoded hash table size (see above)
macro HT$W_FILL1 = 6,0,16,0 %;          !  longword align
macro HT$W_SIZE = 8,0,16,0 %;           !  size of hash table strcuture in bytes
macro HT$B_TYPE = 10,0,8,0 %;           !  type is VCC, a subtypable structure
macro HT$B_SUBTYPE = 11,0,8,0 %;        !  subtype for HT
! 
!  CL - Cache Line
! 
!  A Cache Line is used by the VAXcluster Cache to track per VBN information.
!  The hash table in the CFCB points to cache lines.
!  
literal CL$L_VA = 40;                   !  virtual addresses for data blocks
literal CL$K_LENGTH = 40;               !  not counting size of VA array
!  which is run time dependent
literal CL$S_CLDEF = 40;
macro CL$L_FLINK = 0,0,32,0 %;          !  Equivalence class forward link
macro CL$L_BLINK = 4,0,32,0 %;          !  Equivalence class back link
macro CL$W_SIZE = 8,0,16,0 %;           !  size of CL in bytes
macro CL$B_TYPE = 10,0,8,0 %;           !  type is VCC, a subtypable structure
macro CL$B_SUBTYPE = 11,0,8,0 %;        !  subtype for CL
macro CL$L_FIRSTVBN = 12,0,32,0 %;      !  first VBN in this cache line
macro CL$L_CFCB = 16,0,32,0 %;          !  address of corresponding CFCB 
macro CL$Q_LRUENTRY = 20,0,0,0 %;
literal CL$S_LRUENTRY = 8;              !  absolute queue entry in VCC$Q_LRULINE
macro CL$L_VALID = 28,0,32,0 %;         !  set if corresponding VBN data valid ;$2
macro CL$L_DIRTY = 32,0,32,0 %;         !  set if corresponding VBN data    ;$2
!  needs to be written before block
!  is reused
macro CL$L_LOCK = 36,0,32,0 %;          !   looks just like mutex
macro CL$W_COUNT = 36,0,16,0 %;         !  Count of current accessers
macro CL$V_WRITE = 36,16,1,0 %;         !  write in progress or pending
macro CL$V_DELAYTRUNC = 36,17,1,0 %;    !  delete this line during unlock
!  next entry must go at the end of the CL
! 
!  CPT - Cache I/O Page Table
! 
!  A range of sequential VBNs is not guarenteed to be virtually contiguous
!  in the cache.  Physical I/O requires the SVAPTE which maps the buffer.
!  The cache builds a "fake" page table in this data structure and passes
!  its virtual address as the SVAPTE.  In addition some per I/O cache
!  information is stored here rather than enlarge the IRP.
! 
literal CPT$L_PTE = 20;                 !  start of PTEs
literal CPT$K_LENGTH = 20;              !  not counting size of VA array
!  which is run time dependent
literal CPT$S_CPTDEF = 20;
macro CPT$L_RHBCNT = 0,0,32,0 %;        !  read hit byte count
macro CPT$L_IOVA = 4,0,32,0 %;          !  cache I/O VA
macro CPT$W_SIZE = 8,0,16,0 %;          !  size of CPT in bytes
macro CPT$B_TYPE = 10,0,8,0 %;          !  type is VCC, a subtypable structure
macro CPT$B_SUBTYPE = 11,0,8,0 %;       !  subtype for CPT
macro CPT$L_IOVBN = 12,0,32,0 %;        !  cache I/O VBN
macro CPT$L_IOBCNT = 16,0,32,0 %;       !  cache I/O byte count
!  real length equals IRP length
 
!*** MODULE $VCTXDEF ***
! +
!  $VCTXDEF - vector context block definitions
! -
literal VCTX$M_SAVED = 1;
literal VCTX$M_IMP = 2;
literal VCTX$M_PMF = 4;
literal VCTX$M_AEX = 8;
literal VCTX$M_IVO = 16;
literal VCTX$M_VTB = 32;
literal VCTX$M_FAST_SWITCH = 64;
literal VCTX$M_SLOW_SWITCH = 128;
literal VCTX$K_LENGTH = 8240;           ! Length of VCTX, fixed portion
literal VCTX$C_LENGTH = 8240;           ! Length of VCTX, fixed portion
literal VCTX$S_VCTXDEF = 8248;
macro VCTX$L_PCB = 0,0,32,0 %;          ! Address of the PCB
macro VCTX$L_FLAGS = 4,0,32,0 %;        ! Flags longword
macro VCTX$V_SAVED = 4,0,1,0 %;         ! Vector context saved
macro VCTX$V_IMP = 4,1,1,0 %;           ! Hardware error pending
macro VCTX$V_PMF = 4,2,1,0 %;           ! Async memory mgmt exception
macro VCTX$V_AEX = 4,3,1,0 %;           ! Vector arithmetic excpetion
macro VCTX$V_IVO = 4,4,1,0 %;           ! Illegal vector opcode
macro VCTX$V_VTB = 4,5,1,0 %;           ! Invalidate Vector TB
macro VCTX$V_FAST_SWITCH = 4,6,1,0 %;   ! Fast VP switch
macro VCTX$V_SLOW_SWITCH = 4,7,1,0 %;   ! Slow VP switch
macro VCTX$W_SIZE = 8,0,16,0 %;         ! Size in bytes 
macro VCTX$B_TYPE = 10,0,8,0 %;         ! Structure type code 
macro VCTX$B_SUBTYPE = 11,0,8,0 %;      ! Subtype, unused
macro VCTX$L_MARGIN = 12,0,32,0 %;      ! Vector margin
macro VCTX$L_VEXCFL = 16,0,32,0 %;      ! Exception block flink
macro VCTX$L_VEXCBL = 20,0,32,0 %;      ! Exception block backlink
macro VCTX$L_VAER = 24,0,32,0 %;        ! Vector Arithmetic Error Register
macro VCTX$W_IVO = 28,0,16,0 %;         ! Illegal opcode
macro VCTX$B_VCR = 30,0,8,0 %;          ! Vector Count Register
macro VCTX$B_VLR = 31,0,8,0 %;          ! Vector Length Register
macro VCTX$Q_VMR = 32,0,0,0 %;
literal VCTX$S_VMR = 8;                 ! Vector Mask Register
macro VCTX$W_EXC_COUNT = 40,0,16,0 %;   ! Saved exception count
macro VCTX$W_SPARE_W = 42,0,16,0 %;     ! Spare word
macro VCTX$L_SPARE_L = 44,0,32,0 %;     ! Spare longword
! 
!   Note: the following must start on a quad-word boundary
! 
macro VCTX$R_V0 = 48,0,0,0 %;
literal VCTX$S_V0 = 512;                ! V0
macro VCTX$R_V1 = 560,0,0,0 %;
literal VCTX$S_V1 = 512;                ! V1
macro VCTX$R_V2 = 1072,0,0,0 %;
literal VCTX$S_V2 = 512;                ! V2
macro VCTX$R_V3 = 1584,0,0,0 %;
literal VCTX$S_V3 = 512;                ! V3
macro VCTX$R_V4 = 2096,0,0,0 %;
literal VCTX$S_V4 = 512;                ! V4
macro VCTX$R_V5 = 2608,0,0,0 %;
literal VCTX$S_V5 = 512;                ! V5
macro VCTX$R_V6 = 3120,0,0,0 %;
literal VCTX$S_V6 = 512;                ! V6
macro VCTX$R_V7 = 3632,0,0,0 %;
literal VCTX$S_V7 = 512;                ! V7
macro VCTX$R_V8 = 4144,0,0,0 %;
literal VCTX$S_V8 = 512;                ! V8
macro VCTX$R_V9 = 4656,0,0,0 %;
literal VCTX$S_V9 = 512;                ! V9
macro VCTX$R_V10 = 5168,0,0,0 %;
literal VCTX$S_V10 = 512;               ! V10
macro VCTX$R_V11 = 5680,0,0,0 %;
literal VCTX$S_V11 = 512;               ! V11
macro VCTX$R_V12 = 6192,0,0,0 %;
literal VCTX$S_V12 = 512;               ! V12
macro VCTX$R_V13 = 6704,0,0,0 %;
literal VCTX$S_V13 = 512;               ! V13
macro VCTX$R_V14 = 7216,0,0,0 %;
literal VCTX$S_V14 = 512;               ! V14
macro VCTX$R_V15 = 7728,0,0,0 %;
literal VCTX$S_V15 = 512;               ! V15
macro VCTX$R_ASYNC = 8240,0,0,0 %;
literal VCTX$S_ASYNC = 8;               ! Start of async mem mgmt portion
 
!*** MODULE $VECDISDEF ***
! +
! 
!  Flags definitions for [$ENABLE|$DISABLE]_VP_USE services.
! 
!  Note well: DEBUG understands the semantics of these flags. When adding
! 	      a new flag, we must contact DEBUG group so DEBUG can take
! 	      approprite action for this new flag.
! -
literal VECDIS$M_VALID_FLAGS = 31;
literal VECDIS$M_ASYNC_HANDLER = 1;
literal VECDIS$M_DEBUG = 2;
literal VECDIS$M_PCA = 4;
literal VECDIS$M_ADA = 8;
literal VECDIS$M_VVIEF = 16;
literal VECDIS$S_VECDISDEF = 1;
macro VECDIS$V_VALID_FLAGS = 0,0,5,0 %;
literal VECDIS$S_VALID_FLAGS = 5;
macro VECDIS$V_ASYNC_HANDLER = 0,0,1,0 %; ! VMS async handlers
macro VECDIS$V_DEBUG = 0,1,1,0 %;       ! DEBUG
macro VECDIS$V_PCA = 0,2,1,0 %;         ! PCA
macro VECDIS$V_ADA = 0,3,1,0 %;         ! ADA
macro VECDIS$V_VVIEF = 0,4,1,0 %;       ! VVIEF
 
!*** MODULE $VEXCDEF ***
! +
!  $VEXCDEF - vector exception block definitions
! -
literal VEXC$K_LENGTH = 28;             ! Length of VEXC, fixed protion
literal VEXC$C_LENGTH = 28;             ! Length of VEXC, fixed portion
literal VEXC$S_VEXCDEF = 36;
macro VEXC$L_FLINK = 0,0,32,0 %;        ! Forward link
macro VEXC$L_BLINK = 4,0,32,0 %;        ! Backward link
macro VEXC$W_SIZE = 8,0,16,0 %;         ! Size in bytes 
macro VEXC$B_TYPE = 10,0,8,0 %;         ! Structure type code 
macro VEXC$B_SUBTYPE = 11,0,8,0 %;      ! Subtype, unused
macro VEXC$W_CHECKSUM = 12,0,16,0 %;    ! Checksum
macro VEXC$W_SAVED_IVO = 14,0,16,0 %;   ! Saved IVO 
macro VEXC$L_SAVED_VPSR = 16,0,32,0 %;  ! Saved VPSR
macro VEXC$L_SAVED_VAER = 20,0,32,0 %;  ! Saved VAER
macro VEXC$L_PCB = 24,0,32,0 %;         ! back-pointer to the PCB.
macro VEXC$R_SAVED_ASYNC = 28,0,0,0 %;
literal VEXC$S_SAVED_ASYNC = 8;         ! Start of saved Async memory mgmt portion
 
!*** MODULE $VL1DEF ***
! +
!  VOL1 ANSI MAGNETIC TAPE LABEL
!  THIS IS THE FIRST BLOCK ON EVERY ANSI LABELED MAGNETIC TAPE.
!  IT IDENTIFIES THE VOLUME AND ITS PROTECTION.
! -
literal VL1$S_VL1DEF = 80;
macro VL1$L_VL1LID = 0,0,32,0 %;        ! LABEL IDENTIFIER AND NUMBER 'VOL1' 
macro VL1$T_VOLLBL = 4,0,0,0 %;
literal VL1$S_VOLLBL = 6;               ! VOLUME LABEL 
macro VL1$B_VOLACCESS = 10,0,8,0 %;     ! VOLUME ACCESS 
macro VL1$T_SYSCODE = 24,0,0,0 %;
literal VL1$S_SYSCODE = 13;             !  SYSTEM CODE
macro VL1$T_OWNER_IDENT = 37,0,0,0 %;
literal VL1$S_OWNER_IDENT = 14;         !  VOL1 OWNER ID FIELD
macro VL1$T_VOLOWNER = 37,0,0,0 %;
literal VL1$S_VOLOWNER = 13;            ! VOLUME OWNER IDENTIFICATION 
macro VL1$B_DECSTDVER = 50,0,8,0 %;     ! DEC STANDARD VERSION 
macro VL1$B_LBLSTDVER = 79,0,8,0 %;     ! LABEL STANDARD VERSION '3' 
 
!*** MODULE $VL2DEF ***
! +
!  VOL2 ANSI MAGNETIC TAPE LABEL
!  THIS IS BLOCK IS WRITTEN TO TAPES WHEN A VMS PROTECTION IS SPECIFIED
! -
literal VL2$S_VL2DEF = 19;
macro VL2$L_VL2LID = 0,0,32,0 %;        ! LABEL IDENTIFIER AND NUMBER 'VOL2' 
macro VL2$T_VOLOWNER = 4,0,0,0 %;
literal VL2$S_VOLOWNER = 15;            ! VOLUME OWNER IDENTIFICATION 
 
!*** MODULE $VPERRDEF ***
! +
! 
!  Bit definitions for EXE$VP_ERROR_ACTION routine.
! 
! -
literal VPERR$M_SAVE_CTX = 1;
literal VPERR$M_ABORT = 2;
literal VPERR$M_DECONFIG = 4;
literal VPERR$S_VPERRDEF = 4;
macro VPERR$V_SAVE_CTX = 0,0,1,0 %;     ! Save vector context
macro VPERR$V_ABORT = 0,1,1,0 %;        ! Abort vector consumer
macro VPERR$V_DECONFIG = 0,2,1,0 %;     ! Deconfigure vector processor
 
!*** MODULE $VPFLAGSDEF ***
! +
! 
!  Bit definitions for EXE$GL_VP_FLAGS - Vector Processing flags
! 
! -
literal EXE$M_VP_PRESENT = 1;
literal EXE$M_VP_LOAD = 2;
literal EXE$M_VP_EXTENDED_WAIT = -2147483648;
literal EXE$S_VPFLAGSDEF = 4;
macro EXE$V_VP_PRESENT = 0,0,1,0 %;     ! System is vector-present
macro EXE$V_VP_LOAD = 0,1,1,0 %;        ! Load vector processing code
macro EXE$V_VP_EXTENDED_WAIT = 0,31,1,0 %; ! FORTRAN/PPL extended wait algorithm
! +
! 
!  Bit definitions for CTL$GL_VP_FLAGS - Vector Processing flags
! 
! -
literal CTLVP$M_VECTOR_VVIEF = 1;
literal CTLVP$S_CTLVPFLAGSDEF = 1;
macro CTLVP$V_VECTOR_VVIEF = 0,0,1,0 %; ! Process is a vector-VVIEF consumer
 
!*** MODULE $VSBDEF ***
! +
!  $VSBDEF - Vector State Block Definitions
! -
literal VSB$K_TYPE = 11;                ! Structure type constant
literal VSB$C_TYPE = 11;                ! Structure type constant
literal VSB$K_SUBTYPE = 12;             ! Structure subtype constant
literal VSB$C_SUBTYPE = 12;             ! Structure subtype constant
literal VSB$K_MAJORID = 1000;           ! Major ID 
literal VSB$C_MAJORID = 1000;           ! Major ID 
literal VSB$K_MINORID = 1;              ! Minor ID 
literal VSB$C_MINORID = 1;              ! Minor ID 
literal VSB$K_LENGTH = 8352;            ! Length of VSB
literal VSB$C_LENGTH = 8352;            ! Length of VSB
literal VSB$S_VSBDEF = 8352;
macro VSB$L_FLINK = 0,0,32,0 %;         ! Forward link
macro VSB$L_BLINK = 4,0,32,0 %;         ! Backward link
macro VSB$W_SIZE = 8,0,16,0 %;          ! Size in bytes 
macro VSB$B_TYPE = 10,0,8,0 %;          ! Structure type code 
macro VSB$B_SUBTYPE = 11,0,8,0 %;       ! Subtype, unused
macro VSB$W_MAJORID = 12,0,16,0 %;      ! Structure Major ID
macro VSB$W_MINORID = 14,0,16,0 %;      ! Structure Minor ID
macro VSB$L_EXCID = 16,0,32,0 %;        ! exception ID
macro VSB$B_VCR = 20,0,8,0 %;           ! Vector Count Register
macro VSB$B_VLR = 21,0,8,0 %;           ! Vector Length Register
macro VSB$W_UNUSED = 22,0,16,0 %;       ! Unused word
macro VSB$Q_VMR = 24,0,0,0 %;
literal VSB$S_VMR = 8;                  ! Vector Mask Register
macro VSB$R_V0 = 32,0,0,0 %;
literal VSB$S_V0 = 512;                 ! V0, must be quadword aligned
macro VSB$R_V1 = 544,0,0,0 %;
literal VSB$S_V1 = 512;                 ! V1
macro VSB$R_V2 = 1056,0,0,0 %;
literal VSB$S_V2 = 512;                 ! V2
macro VSB$R_V3 = 1568,0,0,0 %;
literal VSB$S_V3 = 512;                 ! V3
macro VSB$R_V4 = 2080,0,0,0 %;
literal VSB$S_V4 = 512;                 ! V4
macro VSB$R_V5 = 2592,0,0,0 %;
literal VSB$S_V5 = 512;                 ! V5
macro VSB$R_V6 = 3104,0,0,0 %;
literal VSB$S_V6 = 512;                 ! V6
macro VSB$R_V7 = 3616,0,0,0 %;
literal VSB$S_V7 = 512;                 ! V7
macro VSB$R_V8 = 4128,0,0,0 %;
literal VSB$S_V8 = 512;                 ! V8
macro VSB$R_V9 = 4640,0,0,0 %;
literal VSB$S_V9 = 512;                 ! V9
macro VSB$R_V10 = 5152,0,0,0 %;
literal VSB$S_V10 = 512;                ! V10
macro VSB$R_V11 = 5664,0,0,0 %;
literal VSB$S_V11 = 512;                ! V11
macro VSB$R_V12 = 6176,0,0,0 %;
literal VSB$S_V12 = 512;                ! V12
macro VSB$R_V13 = 6688,0,0,0 %;
literal VSB$S_V13 = 512;                ! V13
macro VSB$R_V14 = 7200,0,0,0 %;
literal VSB$S_V14 = 512;                ! V14
macro VSB$R_V15 = 7712,0,0,0 %;
literal VSB$S_V15 = 512;                ! V15
macro VSB$R_SPARE = 8224,0,0,0 %;
literal VSB$S_SPARE = 128;              ! Spares for future expansion
 
!*** MODULE $VVIEFDEF ***
! +
!  Definitions for VVIEF Facility.
! 
! -
literal VVIEF$K_EXCEPTION = 0;          !  EXCEPTION EVENT
literal VVIEF$K_INIT = 1;               !  INITIALIZATION
literal VVIEF$K_DISABLE_VP_USE = 2;     !  SERVICE EVENT
literal VVIEF$K_ENABLE_VP_USE = 3;      !  SERVICE EVENT
literal VVIEF$K_SAVE_VP_EXCEPTION = 4;  !  SERVICE EVENT
literal VVIEF$K_RESTORE_VP_EXCEPTION = 5; !  SERVICE EVENT
literal VVIEF$K_RELEASE_VP = 6;         !  SERVICE EVENT 
 
!*** MODULE $WCBDEF ***
! +
!  WCB - WINDOW CONTROL BLOCK
! 
!  THERE IS A WINDOW CONTROL BLOCK FOR EACH FILE ACCESSED BY A PROCESS.
!  IT CONTAINS MAPPING INFORMATION SUCH THAT A LARGE PERCENTAGE OF VIRTUAL
!  FILE I/O CAN BE MAPPED FROM VIRTUAL TO LOGICAL BLOCK NUMBERS WITHOUT
!  HAVING TO READ THE RESPECTIVE FILE HEADER.
! -
literal WCB$M_READ = 1;
literal WCB$M_WRITE = 2;
literal WCB$M_NOTFCP = 4;
literal WCB$M_SHRWCB = 8;
literal WCB$M_OVERDRAWN = 16;
literal WCB$M_COMPLETE = 32;
literal WCB$M_CATHEDRAL = 64;
literal WCB$M_EXPIRE = 128;
literal WCB$K_MAP = 48;                 !  MAP POINTERS START HERE 
literal WCB$C_MAP = 48;                 !  MAP POINTERS START HERE 
literal WCB$K_LENGTH = 48;              !  LENGTH OF STANDARD WCB SANS POINTERS 
literal WCB$C_LENGTH = 48;              !  LENGTH OF STANDARD WCB SANS POINTERS 
!  NOTE THAT VIRTUAL MAPPING
literal WCB$S_WCBDEF = 60;
macro WCB$L_WLFL = 0,0,32,0 %;          !  WINDOW LIST FORWARD LINK 
macro WCB$L_WLBL = 4,0,32,0 %;          !  WINDOW LIST BACKWARD LINK 
macro WCB$W_SIZE = 8,0,16,0 %;          !  SIZE OF WINDOW BLOCK IN BYTES 
macro WCB$B_TYPE = 10,0,8,0 %;          !  STRUCTURE TYPE OF WCB 
macro WCB$B_ACCESS = 11,0,8,0 %;        !  ACCESS CONTROL BYTE 
macro WCB$V_READ = 11,0,1,0 %;          !  READ ACCESS ALLOWED (1=YES) 
macro WCB$V_WRITE = 11,1,1,0 %;         !  WRITE ACCESS ALLOWED (1=YES) 
macro WCB$V_NOTFCP = 11,2,1,0 %;        !  FILE NOT ACCESSED BY FCP IF SET 
macro WCB$V_SHRWCB = 11,3,1,0 %;        !  SHARED WINDOW 
macro WCB$V_OVERDRAWN = 11,4,1,0 %;     !  FILE ACCESSOR HAS OVERDRAWN HIS QUOTA 
macro WCB$V_COMPLETE = 11,5,1,0 %;      !  SET WINDOW MAPS ENTIRE FILE 
macro WCB$V_CATHEDRAL = 11,6,1,0 %;     !  LARGE, COMPLEX WINDOW (SIC) TO MAP 
!  FILE COMPLETELY
macro WCB$V_EXPIRE = 11,7,1,0 %;        !  FILE EXPIRATION DATE MAY NEED TO BE SET 
macro WCB$L_PID = 12,0,32,0 %;          !  PROCESS ID OF ACCESSOR PROCESS 
macro WCB$W_REFCNT = 14,0,16,0 %;       !  REFERENCE COUNT FOR SHARED WINDOW 
macro WCB$L_ORGUCB = 16,0,32,0 %;       !  ADDRESS OF ORIGINAL UCB FROM CCB 
macro WCB$W_ACON = 20,0,16,0 %;         !  ACCESS CONTROL INFORMATION 
!  NOTE - THESE BITS TRACK THE BITS
!  IN FIB$L_ACCTL
macro WCB$V_NOWRITE = 20,0,1,0 %;       !  NO OTHER WRITERS 
macro WCB$V_DLOCK = 20,1,1,0 %;         !  ENABLE DEACCESS LOCK 
macro WCB$V_SPOOL = 20,4,1,0 %;         !  SPOOL FILE ON CLOSE 
macro WCB$V_WRITECK = 20,5,1,0 %;       !  ENABLE WRITE CHECK 
macro WCB$V_SEQONLY = 20,6,1,0 %;       !  SEQUENTIAL ONLY ACCESS 
macro WCB$V_SNAPSHOT = 20,7,1,0 %;      !  SNAPSHOT REVALIDATION PENDING
macro WCB$V_WRITEAC = 20,8,1,0 %;       !  WRITE ACCESS 
macro WCB$V_READCK = 20,9,1,0 %;        !  ENABLE READ CHECK 
macro WCB$V_NOREAD = 20,10,1,0 %;       !  NO OTHER READERS 
macro WCB$V_NOTRUNC = 20,11,1,0 %;      !  NO TRUNCATES 
macro WCB$V_CONTROL = 20,12,1,0 %;      !  CONTROL ACCESS TO FILE
!  THE FOLLOWING FIELD OVERLAYS THE FIRST
!  UNUSED FLAG IN WCB$W_ACON ABOVE.
macro WCB$V_NOACCLOCK = 20,2,1,0 %;     !  NO ACCESS LOCK CHECKING
macro WCB$V_READINIT = 20,11,1,0 %;     !  A READINIT WAS DONE OVER THIS CHANNEL 
macro WCB$V_WRITE_TURN = 20,12,1,0 %;   !  FORCE WINDOW TURN ON WRITES
!  SIZE DEVICE INDEPENDENT PART OF WCB
macro WCB$W_NMAP = 22,0,16,0 %;         !  NUMBER OF MAPPING POINTERS 
macro WCB$L_FCB = 24,0,32,0 %;          !  ADDRESS OF FCB 
macro WCB$L_RVT = 28,0,32,0 %;          !  ADDRESS OF RELATIVE VOLUME TABLE 
macro WCB$L_LINK = 32,0,32,0 %;         !  LINK TO NEXT WINDOW SEGMENT 
macro WCB$L_READS = 36,0,32,0 %;        !  COUNT OF READS PERFORMED 
macro WCB$L_WRITES = 40,0,32,0 %;       !  COUNT OF WRITES PERFORMED 
macro WCB$L_STVBN = 44,0,32,0 %;        !  STARTING VBN MAPPED BY WINDOW 
!  NEEDS P1_COUNT IMMEDIATELY
!  FOLLOWING STVBN
macro WCB$W_P1_COUNT = 48,0,16,0 %;     !  COUNT FIELD OF FIRST POINTER 
macro WCB$L_P1_LBN = 50,0,32,0 %;       !  LBN FIELD OF SECOND POINTER 
macro WCB$W_P2_COUNT = 54,0,16,0 %;     !  COUNT FIELD OF SECOND POINTER 
macro WCB$L_P2_LBN = 56,0,32,0 %;       !  LBN FIELD OF FIRST POINTER 
!  FORMAT OF RETRIEVAL POINTER
literal WCB$S_WCBDEF1 = 6;
macro WCB$W_COUNT = 0,0,16,0 %;         !  COUNT FIELD 
macro WCB$L_LBN = 2,0,32,0 %;           !  LBN FIELD 
literal WCB$S_WCBDEF2 = 7;
macro WCB$W_PREVCOUNT = -6,0,16,0 %;    !  PREVIOUS RETRIEVAL POINTER 
macro WCB$L_PREVLBN = -4,0,32,0 %;
!  RETRIEVAL POINTER FORMAT
 
!*** MODULE $WPREDEF ***
literal WPRE$K_LEN = 20;
literal WPRE$S_WPREDEF = 20;
macro WPRE$L_ORIGSPTE = 0,0,32,0 %;     !  Original SPTE value to restore.
macro WPRE$L_NEWSPTE = 4,0,32,0 %;      !  SPTE value when Watchpoint in place.
macro WPRE$L_SVAPTE = 8,0,32,0 %;       !  SVA of SPTE.
macro WPRE$L_INVALSVA = 12,0,32,0 %;    !  Addr to inval after resetting SPTE.
macro WPRE$L_WPCB = 16,0,32,0 %;        !  Addr of corresponding WPCB.
 
!*** MODULE $WPCBDEF ***
literal WPCB$K_LEN = 176;               !  Length of WPCB structure.
literal WPCB$S_WPCBDEF = 176;
macro WPCB$Q_INITCNTNTS = 0,0,0,0 %;
literal WPCB$S_INITCNTNTS = 8;          !  Initial contents of Watchpoint field.
macro WPCB$W_SIZE = 8,0,16,0 %;         !  Length of this block.
macro WPCB$B_TYPE = 10,0,8,0 %;         !  Type of this block.
macro WPCB$B_RESERVED01 = 11,0,8,0 %;   !  Reserved.
macro WPCB$B_FLD_LEN = 12,0,8,0 %;      !  Length of field to be trace (1-7).
macro WPCB$B_STATE = 13,0,8,0 %;        !  Type of watchpoint.
macro WPCB$W_RESERVED02 = 14,0,16,0 %;  !  Reserved.
macro WPCB$L_LINK = 16,0,32,0 %;        !  Linked list of WPCB's on a WPRE.
macro WPCB$L_WPRE = 20,0,32,0 %;        !  Address of associated WPRE.
!  The following group of longwords contain the addresses of the individual
!  bytes in the filed to be monitored.  Only WPCB$FLD_LEN of the 8 addresses
!  are valid.
macro WPCB$L_FLD_ADR = 24,0,32,0 %;     !  Address of start of field.
macro WPCB$L_FLD_ADR1 = 28,0,32,0 %;    !  Address of next byte of field.
macro WPCB$L_FLD_ADR2 = 32,0,32,0 %;    !  Address of next byte of field.
macro WPCB$L_FLD_ADR3 = 36,0,32,0 %;    !  Address of next byte of field.
macro WPCB$L_FLD_ADR4 = 40,0,32,0 %;    !  Address of next byte of field.
macro WPCB$L_FLD_ADR5 = 44,0,32,0 %;    !  Address of next byte of field.
macro WPCB$L_FLD_ADR6 = 48,0,32,0 %;    !  Address of next byte of field.
macro WPCB$L_FLD_ADR7 = 52,0,32,0 %;    !  Address of next byte of field.
!  The following group of fields are values stored at the last time that the
!  monitored field was touched.  The values are a subset of the values stored
!  in the circular trace buffer.
macro WPCB$L_TOUCHED = 56,0,32,0 %;     !  Address actually touched.
macro WPCB$L_COUNT = 60,0,32,0 %;       !  Number of times Watch Point touched.
macro WPCB$L_TTE = 64,0,32,0 %;         !  Address of last circular Trace Table
!   Entry associated with this field.
macro WPCB$L_PC = 68,0,32,0 %;          !  PC of instruction that touched Watch
!   Point.
macro WPCB$L_PSL = 72,0,32,0 %;         !  PSL at time that Watch Point touched.
macro WPCB$Q_TIME = 76,0,0,0 %;
literal WPCB$S_TIME = 8;                !  System time when last updated.
macro WPCB$L_R0 = 84,0,32,0 %;          !  R0  at time this entry last updated.
macro WPCB$L_R1 = 88,0,32,0 %;          !  R1  at time this entry last updated.
macro WPCB$L_R2 = 92,0,32,0 %;          !  R2  at time this entry last updated.
macro WPCB$L_R3 = 96,0,32,0 %;          !  R3  at time this entry last updated.
macro WPCB$L_R4 = 100,0,32,0 %;         !  R4  at time this entry last updated.
macro WPCB$L_R5 = 104,0,32,0 %;         !  R5  at time this entry last updated.
macro WPCB$L_R6 = 108,0,32,0 %;         !  R6  at time this entry last updated.
macro WPCB$L_R7 = 112,0,32,0 %;         !  R7  at time this entry last updated.
macro WPCB$L_R8 = 116,0,32,0 %;         !  R8  at time this entry last updated.
macro WPCB$L_R9 = 120,0,32,0 %;         !  R9  at time this entry last updated.
macro WPCB$L_R10 = 124,0,32,0 %;        !  R10 at time this entry last updated.
macro WPCB$L_R11 = 128,0,32,0 %;        !  R11 at time this entry last updated.
macro WPCB$L_AP = 132,0,32,0 %;         !  AP  at time this entry last updated.
macro WPCB$L_FP = 136,0,32,0 %;         !  FP  at time this entry last updated.
macro WPCB$L_SP = 140,0,32,0 %;         !  SP  at time this entry last updated.
macro WPCB$B_BCNT = 144,0,8,0 %;        !  Count of bytes of I-stream traced.
macro WPCB$T_ISTREAM = 145,0,0,0 %;
literal WPCB$S_ISTREAM = 15;            !  Space for tracing upto 15 bytes.
macro WPCB$Q_PREVCNTNTS = 160,0,0,0 %;
literal WPCB$S_PREVCNTNTS = 8;          !  Contents of Watchpoint field before
!   this access.
macro WPCB$Q_POSTCNTNTS = 168,0,0,0 %;
literal WPCB$S_POSTCNTNTS = 8;          !  Contents of Watchpoint field after
!   this access.
literal WPCB_STATE$M_READ = 1;
literal WPCB_STATE$M_FATAL = 2;
literal WPCB_STATE$M_BPT = 4;
literal WPCB_STATE$S_STATE = 1;         !  Set of state bits.
macro WPCB_STATE$V_READ = 0,0,1,0 %;    !  0 => Write WP, 1 => Read WP.
macro WPCB_STATE$V_FATAL = 0,1,1,0 %;   !  1 implies CRASH system on WRITE access
macro WPCB_STATE$V_BPT = 0,2,1,0 %;     !  1 implies Cause XDELTA Breakpoint
 
!*** MODULE $WPTTEDEF ***
literal WPTTE$K_LEN = 32;               !  Length of a TTE.
literal WPTTE$K_HEADER_LEN = 12;        !  Length of Trace Table Header
literal WPTTE$K_PARALLEL_LEN = 4;       !  Length of Parallel arrary entry
literal WPTTE$S_WPTTEDEF = 32;
macro WPTTE$L_FIELD = 0,0,32,0 %;       !  Address of field touched.
macro WPTTE$B_TOUCHED = 4,0,8,0 %;      !  Relative byte within field touched.
macro WPTTE$B_OPCODE = 5,0,8,0 %;       !  Opcode of instruction for this access.
macro WPTTE$W_RELBCKPTR = 6,0,16,0 %;   !  Offset, relative to base of Trace
!   Table of previous trace entry for
!   this Watchpoint (%xFFFF means invalid
macro WPTTE$L_PC = 8,0,32,0 %;          !  PC of instruction that touched field.
macro WPTTE$L_PSL = 12,0,32,0 %;        !  PSL at time field touched.
macro WPTTE$Q_TIME = 16,0,0,0 %;
literal WPTTE$S_TIME = 8;               !  System Time at time field touched.
macro WPTTE$Q_PREVCNTNTS = 24,0,0,0 %;
literal WPTTE$S_PREVCNTNTS = 8;         !  Contents of Watchpoint before this
!   access.
 
!*** MODULE $WSLDEF ***
! +
!  WORKING SET LIST DEFINITIONS
! -
literal WSL$M_VALID = 1;
literal WSL$M_PAGTYP = 14;
literal WSL$M_PFNLOCK = 16;
literal WSL$M_WSLOCK = 32;
literal WSL$M_GOODPAGE = 64;
literal WSL$M_MODIFY = 256;
literal WSL$C_LENGTH = 4;               ! SIZE OF WS LIST ENTRY 
! 
literal WSL$C_PROCESS = 0;              ! PROCESS PAGE 
literal WSL$C_SYSTEM = 2;               ! SYSTEM PAGE 
literal WSL$C_GLOBAL = 4;               ! GLOBAL PAGE (READ ONLY) 
literal WSL$C_GBLWRT = 6;               ! GLOBAL WRITABLE PAGE 
literal WSL$C_PPGTBL = 8;               ! PROCESS PAGE TABLE 
literal WSL$C_GPGTBL = 10;              ! GLOBAL PAGE TABLE 
literal WSL$S_WSLDEF = 2;
macro WSL$V_VALID = 0,0,1,0 %;          ! WSL ENTRY VALID 
macro WSL$V_PAGTYP = 0,1,3,0 %;
literal WSL$S_PAGTYP = 3;               ! PAGE TYPE (SEE PFNDEF FOR VALUES) 
macro WSL$V_PFNLOCK = 0,4,1,0 %;        ! PAGE FRAME LOCK 
! THE PRECEDING 5 BITS MUST BE IN ORDER
macro WSL$V_WSLOCK = 0,5,1,0 %;         ! WORKING SET LOCK 
macro WSL$V_GOODPAGE = 0,6,1,0 %;       ! THIS PAGE SHOULD REMAIN IN WS ONE MORE PASS 
macro WSL$V_MODIFY = 0,8,1,0 %;         ! SAVED MODIFY BIT 
! THE FOLLOWING 5 BITS MUST BE IN ORDER
!  PAGE TYPE VIELD DEFINITIONS
! 
! 	N.B.:	These constants have been adjusted by left-shifting the constant by the offset to the field WSL$V_PAGTYP.  
! 		To use these when explicitly extracting the field, the adjustment must be removed.  For example:
! 
! 		   IF .wsle [wsl$v_pagtyp] EQL (wsl$c_system^-1)		! Or (wsl$c_system/2)
! 
 
!*** MODULE $WQHDEF ***
! +
!  WAIT QUEUE HEADER DEFINITIONS
! -
literal WQH$K_LENGTH = 12;              ! LENGTH OF WAIT QUEUE HEADER 
literal WQH$C_LENGTH = 12;              ! LENGTH OF WAIT QUEUE HEADER 
literal WQH$S_WQHDEF = 12;
macro WQH$L_WQFL = 0,0,32,0 %;          ! HEAD OR FORWARD LINK 
macro WQH$L_WQBL = 4,0,32,0 %;          ! TAIL OR BACKWARD LINK 
macro WQH$W_WQCNT = 8,0,16,0 %;         ! WAIT QUEUE COUNT 
macro WQH$W_WQSTATE = 10,0,16,0 %;      ! STATE NUMBER FOR WAIT 
 
!*** MODULE $XBIDEF ***
! +
!  XBI and XBI-Plus unique registers
! -
literal XBI$M_PE_CPU = 1;
literal XBI$M_PE_CAB = 2;
literal XBI$M_PE_DATAB = 4;
literal XBI$M_PE_CA = 8;
literal XBI$M_PE_DATA = 16;
literal XBI$M_POWER = 32;
literal XBI$M_WRFAIL = 64;
literal XBI$M_INTERNAL = 128;
literal XBI$M_CABLE_OK = -2147483648;
literal XBIP$M_INVALID_BI_ADDR = 256;
literal XBIP$M_UNCOR_DMA_ECC = 512;
literal XBIP$M_COR_DMA_ECC = 1024;
literal XBIP$M_INVALID_PFN = 2048;
literal XBIP$M_UNCOR_PMR_ECC = 4096;
literal XBIP$M_COR_PMR_ECC = 8192;
literal XBIP$M_MULT_ERR = 16384;
literal XBI$M_INTR_PECPU = 1;
literal XBI$M_INTR_PECB = 2;
literal XBI$M_INTR_PEBDATA = 4;
literal XBI$M_INTR_PECA = 8;
literal XBI$M_INTR_PEADATA = 16;
literal XBI$M_INTR_POWER = 32;
literal XBI$M_INTR_WRFAIL = 64;
literal XBI$M_INTR_INTERNAL = 128;
literal XBI$M_INTR_CNAK = 32768;
literal XBI$M_INTR_RER = 65536;
literal XBI$M_INTR_RSE = 131072;
literal XBI$M_INTR_NRR = 262144;
literal XBI$M_INTR_CRD = 524288;
literal XBI$M_INTR_WDNAK = 1048576;
literal XBI$M_INTR_RIDNAK = 2097152;
literal XBI$M_INTR_WSE = 4194304;
literal XBI$M_INTR_PE = 8388608;
literal XBI$M_INTR_IPE = 67108864;
literal XBI$M_INTR_CC = 134217728;
literal XBI$M_ENAB_IVINTR = -2147483648;
literal XBIP$M_INTR_INVALID_ADDR = 256;
literal XBIP$M_INTR_UNCOR_ECC = 512;
literal XBIP$M_INTR_COR_ECC = 1024;
literal XBIP$M_INTR_IPFN = 2048;
literal XBIP$M_INTR_TTO = 8192;
literal XBIP$M_BIWIN = 16383;
literal XBIP$M_ENA_34BIT = 131072;
literal XBIP$M_MR_MD = 786432;
literal XBIP$M_TLIM = 15728640;
literal XBIP$M_LDEASRT = 251658240;
literal XBIP$M_LLIM = -268435456;
literal XBIP_AUTLR$K_DWMBA_MODE = 0;    !  DWMBA compatibility mode
literal XBIP_AUTLR$K_512B_MODE = 1;     !  512 Byte page mode
literal XBIP_AUTLR$K_4KB_MODE = 2;      !  4Kb page mode
literal XBIP_AUTLR$K_8KB_MODE = 3;      !  8Kb page mode
literal XBIP$M_RVR_DISABLE = 2;
literal XBIP$M_ME_ENA = 8;
literal XBIP$M_RES_REQ_ENA = 16;
literal XBIP$M_BIWIN_ENA = 32;
literal XBIP$M_LOCKOUT_ASSERT_ENA = 128;
literal XBIP$M_LOCKOUT_RESP_ENA = 256;
literal XBIP$M_SHORT_TMO_ENA = 512;
literal XBIP$M_ECC_SYND = 536739840;
literal XBIP$M_PMR_READY = 536870912;
literal XBIP$M_CONTROL_RESET = 1073741824;
literal XBIP$M_WMASK = 65535;
literal XBIP$M_ADDR_EXT = 67043328;
literal XBIP$M_FILL_1 = 201326592;
literal XBIP$M_FCMD = -268435456;
literal XBI$M_ENAB_IBUSPE = 1;
literal XBI$M_ENAB_IRFAIL = 4;
literal XBI$M_BI_BAD = 16;
literal XBI$M_ENAB_XBI = -2147483648;
literal XBI$M_IBUS_PE = 1;
literal XBI$M_IDENT = 2;
literal XBI$M_IRFAIL = 4;
literal XBI$M_NOCOMMD = 8;
literal XBI$M_MS_FAIL = 16;
literal XBI$M_SST_FAIL = 32;
literal XBI$M_CA_FAIL = 64;
literal XBI$M_CPUERROR = 128;
literal XBI$M_PENDING = 4096;
literal XBI$M_FORCE_PARERR = 4;
literal XBI$M_LOOPBACK = 8;
literal XBI$M_FLIP_BIT29 = 16;
literal XBI$M_FLIP_FADDR = 64;
literal XBIP$M_PFN = 1073741823;
literal XBIP$M_PMRE_30 = 1073741824;
literal XBIP$M_VALID = -2147483648;
literal XBI$S_XBIDEF = 262656;
macro XBI$L_AREAR = 12,0,32,0 %;        !  Responder Error Address
macro XBI$V_RFADR = 12,0,30,0 %;
literal XBI$S_RFADR = 30;               !  Failing Address
macro XBI$V_RFLN = 12,30,2,0 %;
literal XBI$S_RFLN = 2;                 !  Responder Failing length
macro XBI$L_AESR = 16,0,32,0 %;         !  XBIA Error Summary
macro XBI$V_PE_CPU = 16,0,1,0 %;        !  Parity error on CPU data
macro XBI$V_PE_CAB = 16,1,1,0 %;        !  Parity error on DMA-B C/A
macro XBI$V_PE_DATAB = 16,2,1,0 %;      !  Parity error on data B
macro XBI$V_PE_CA = 16,3,1,0 %;         !  Parity error on C/A location
macro XBI$V_PE_DATA = 16,4,1,0 %;       !  Parity error on data location
macro XBI$V_POWER = 16,5,1,0 %;         !  BCI AC LO
macro XBI$V_WRFAIL = 16,6,1,0 %;        !  I/O write failure
macro XBI$V_INTERNAL = 16,7,1,0 %;      !  Unexplained internal error
macro XBI$V_ECMD = 16,16,4,0 %;
literal XBI$S_ECMD = 4;                 !  Failing Command
macro XBI$V_EID = 16,20,6,0 %;
literal XBI$S_EID = 6;                  !  Failing Commander ID
macro XBI$V_CABLE_OK = 16,31,1,0 %;     !  XBI Cable OK
macro XBIP$V_INVALID_BI_ADDR = 16,8,1,0 %; !  Invalid BI address 
macro XBIP$V_UNCOR_DMA_ECC = 16,9,1,0 %; !  Uncorrectable DMA ECC error 
macro XBIP$V_COR_DMA_ECC = 16,10,1,0 %; !  Correctable DMA ECC error 
macro XBIP$V_INVALID_PFN = 16,11,1,0 %; !  Invalid PFN 
macro XBIP$V_UNCOR_PMR_ECC = 16,12,1,0 %; !  Uncorrectable PMR ECC error
macro XBIP$V_COR_PMR_ECC = 16,13,1,0 %; !  Correctable PMR ECC error 
macro XBIP$V_MULT_ERR = 16,14,1,0 %;    !  Multiply errors 
macro XBI$L_AIMR = 20,0,32,0 %;         !  XBIA Interrupt Mask
macro XBI$V_INTR_PECPU = 20,0,1,0 %;    !  INTR on CPU data parity error
macro XBI$V_INTR_PECB = 20,1,1,0 %;     !  INTR on DMA-B C/A parity error
macro XBI$V_INTR_PEBDATA = 20,2,1,0 %;  !  INTR on DMA-B data parity error
macro XBI$V_INTR_PECA = 20,3,1,0 %;     !  INTR on DMA-A C/A parity error
macro XBI$V_INTR_PEADATA = 20,4,1,0 %;  !  INTR on DMA-A data parity error
macro XBI$V_INTR_POWER = 20,5,1,0 %;    !  INTR on BCI AC LO
macro XBI$V_INTR_WRFAIL = 20,6,1,0 %;   !  INTR on I/O write fail
macro XBI$V_INTR_INTERNAL = 20,7,1,0 %; !  INTR on internal error
macro XBI$V_INTR_CNAK = 20,15,1,0 %;    !  INTR on Command NOACK
macro XBI$V_INTR_RER = 20,16,1,0 %;     !  INTR on Read Error Response
macro XBI$V_INTR_RSE = 20,17,1,0 %;     !  INTR on Read Sequence error
macro XBI$V_INTR_NRR = 20,18,1,0 %;     !  INTR on No Read Response
macro XBI$V_INTR_CRD = 20,19,1,0 %;     !  INTR on Corrected Read Data
macro XBI$V_INTR_WDNAK = 20,20,1,0 %;   !  INTR on Write Data NOACK 
macro XBI$V_INTR_RIDNAK = 20,21,1,0 %;  !  INTR on Read/IDENT DATA NOACK
macro XBI$V_INTR_WSE = 20,22,1,0 %;     !  INTR on Write Sequence Error
macro XBI$V_INTR_PE = 20,23,1,0 %;      !  INTR on Parity Error
macro XBI$V_INTR_IPE = 20,26,1,0 %;     !  INTR on Inconsistant PE
macro XBI$V_INTR_CC = 20,27,1,0 %;      !  INTR on Corrected Confirmation
macro XBI$V_ENAB_IVINTR = 20,31,1,0 %;  !  Enable IVINTR transactions
macro XBIP$V_INTR_INVALID_ADDR = 20,8,1,0 %; !  INTR on invalid BI address 
macro XBIP$V_INTR_UNCOR_ECC = 20,9,1,0 %; !  INTR on Uncorrectable ECC error 
macro XBIP$V_INTR_COR_ECC = 20,10,1,0 %; !  INTR on Correctable ECC error
macro XBIP$V_INTR_IPFN = 20,11,1,0 %;   !  INTR on Invalid PFN 
macro XBIP$V_INTR_TTO = 20,13,1,0 %;    !  INTR on Transaction Timeout 
macro XBI$L_AIVINTR = 24,0,32,0 %;      !  XBIA Implied Vector Interrupt
!  Destination
macro XBI$W_IVINTR = 24,0,16,0 %;       !  IVINTR destination mask
macro XBI$L_ADG1 = 28,0,32,0 %;         !  XBIA Diagnostic Reg. 1
!  The following registers are only available on the XBI-Plus
macro XBIP$L_AUTLR = 32,0,32,0 %;       !  XBI-Plus Utility register
macro XBIP$V_BIWIN = 32,0,14,0 %;
literal XBIP$S_BIWIN = 14;              !  BI window space
macro XBIP$V_ENA_34BIT = 32,17,1,0 %;   !  Enable 34-bit addressing
macro XBIP$V_MR_MD = 32,18,2,0 %;
literal XBIP$S_MR_MD = 2;               !  Mapping register mode
macro XBIP$V_TLIM = 32,20,4,0 %;
literal XBIP$S_TLIM = 4;                !  Timeout Limit
macro XBIP$V_LDEASRT = 32,24,4,0 %;
literal XBIP$S_LDEASRT = 4;             !  Lockout deassertion
macro XBIP$V_LLIM = 32,28,4,0 %;
literal XBIP$S_LLIM = 4;                !  Lockout limit
!  XBI-Plus operational modes
macro XBIP$L_ACSR = 36,0,32,0 %;        !  XBI-Plus Control and Status register
macro XBIP$V_RVR_DISABLE = 36,1,1,0 %;  !  RVR vector disable
macro XBIP$V_ME_ENA = 36,3,1,0 %;       !  Multiple interrupt enable
macro XBIP$V_RES_REQ_ENA = 36,4,1,0 %;  !  Responder request enable
macro XBIP$V_BIWIN_ENA = 36,5,1,0 %;    !  BI window space enable
macro XBIP$V_LOCKOUT_ASSERT_ENA = 36,7,1,0 %; !  Lockout assert enable
macro XBIP$V_LOCKOUT_RESP_ENA = 36,8,1,0 %; !  Lockout response enable
macro XBIP$V_SHORT_TMO_ENA = 36,9,1,0 %; !  Short timeout enable
macro XBIP$V_ECC_SYND = 36,17,12,0 %;
literal XBIP$S_ECC_SYND = 12;           !  ECC syndrome
macro XBIP$V_PMR_READY = 36,29,1,0 %;   !  PMR ready
macro XBIP$V_CONTROL_RESET = 36,30,1,0 %; !  Control reset
macro XBIP$L_ARVR = 40,0,32,0 %;        !  Vector returned on RER (XBI-Plus)
macro XBIP$L_XFAER = 44,0,32,0 %;       !  XMI Failing addr extension (XBI-Plus)                                 
macro XBIP$V_WMASK = 44,0,16,0 %;
literal XBIP$S_WMASK = 16;              !  Write mask
macro XBIP$V_ADDR_EXT = 44,16,10,0 %;
literal XBIP$S_ADDR_EXT = 10;           !  FADR address extension
macro XBIP$V_FCMD = 44,28,4,0 %;
literal XBIP$S_FCMD = 4;                !  Failed command
macro XBIP$L_ABEAR = 52,0,32,0 %;       !  Failing VAXBI address (XBI-Plus)
!  End of additional XBI-Plus register
macro XBI$L_BCSR = 64,0,32,0 %;         !  XBIB Control/Status
macro XBI$V_ENAB_IBUSPE = 64,0,1,0 %;   !  IBUS Parity err. interrupt mask
macro XBI$V_ENAB_IRFAIL = 64,2,1,0 %;   !  Interlock Read fail mask
macro XBI$V_BI_BAD = 64,4,1,0 %;        !  BI BAD
macro XBI$V_ENAB_XBI = 64,31,1,0 %;     !  Enable XBI interrupts
macro XBI$L_BESR = 68,0,32,0 %;         !  XBIB Error Summary
macro XBI$V_IBUS_PE = 68,0,1,0 %;       !  IBUS Parity Error
macro XBI$V_IDENT = 68,1,1,0 %;         !  IDENT error
macro XBI$V_IRFAIL = 68,2,1,0 %;        !  BI interlock read failed
macro XBI$V_NOCOMMD = 68,3,1,0 %;       !  Illegal command
macro XBI$V_MS_FAIL = 68,4,1,0 %;       !  Master Sequencer failed
macro XBI$V_SST_FAIL = 68,5,1,0 %;      !  Slave Sequencer Trans. failed
macro XBI$V_CA_FAIL = 68,6,1,0 %;       !  Command Address fetch failed
macro XBI$V_CPUERROR = 68,7,1,0 %;      !  Multiple CPU errors
macro XBI$V_BIPEND = 68,8,4,0 %;
literal XBI$S_BIPEND = 4;               !  BI Interrupt Pending
macro XBI$V_PENDING = 68,12,1,0 %;      !  XBI Interrupt Pending
macro XBI$V_ISSF = 68,13,4,0 %;
literal XBI$S_ISSF = 4;                 !  Interrupt Sent Status Flops
macro XBI$L_BIDR = 72,0,32,0 %;         !  XBIB Interrupt Destination
macro XBI$W_IDR = 72,0,16,0 %;          !  Interrupt destination mask
macro XBI$W_DIAG = 74,0,16,0 %;         !  For diagnostics
macro XBI$L_BTIM = 76,0,32,0 %;         !  XBIB Timeout Address
macro XBI$V_DMA_ADDR = 76,0,30,0 %;
literal XBI$S_DMA_ADDR = 30;            !  Failing Address
macro XBI$V_LEN = 76,30,2,0 %;
literal XBI$S_LEN = 2;                  !  Responder Failing length
macro XBI$L_BVOR = 80,0,32,0 %;         !  XBIB Vector Offset
macro XBI$V_VECOFF = 80,9,7,0 %;
literal XBI$S_VECOFF = 7;               !  XBI Vector Offset
macro XBI$L_BVR = 84,0,32,0 %;          !  XBIB vector register
macro XBI$V_VECTOR = 84,2,14,0 %;
literal XBI$S_VECTOR = 14;              !  XBI vector
macro XBI$L_BDCR1 = 88,0,32,0 %;        !  XBIB Diagnostic Control
macro XBI$V_FORCE_PARERR = 88,2,1,0 %;  !  Force BCI parity error
macro XBI$V_LOOPBACK = 88,3,1,0 %;      !  BIIC Loopback mode
macro XBI$V_FLIP_BIT29 = 88,4,1,0 %;    !  Flip Bit 29
macro XBI$V_FLIP_FADDR = 88,6,1,0 %;    !  Flip FADDR address bit 1
!  The following register is only available on the XBI-Plus
macro XBIP$L_PMR = 512,0,0,0 %;
literal XBIP$S_PMR = 262144;            !  Page map registers 64K
macro XBIP$V_PFN = 512,0,30,0 %;
literal XBIP$S_PFN = 30;                !  PFN of VAXBI page
macro XBIP$V_PMRE_30 = 512,30,1,0 %;    !  Diagnostic use only
macro XBIP$V_VALID = 512,31,1,0 %;      !  PFN is valid
 
!*** MODULE $XCPDEF ***
! +
!   XCP Offset Definitions for Registers Accessible Through XMI Private
!   Space.  Note that in making these registers available in virtual space,
!   we have only mapped real registers.  Therefore these virtual offsets are
!   different than the hardware physical offsets.
! -
literal XCP$M_FPBD = 16;
literal XCP$M_FPEEUE = 32;
literal XCP$M_XACLO = 64;
literal XCP$M_STL = 128;
literal XCP$M_DLOCKOUTE = 1024;
literal XCP$M_STPLED = 2048;
literal XCP$M_FHIT = 131072;
literal XCP$M_FMISS = 262144;
literal XCP$M_FBTP = 524288;
literal XCP$M_FCI = 1048576;
literal XCP$M_CPUD = 2097152;
literal XCP$M_FPSEL = 4194304;
literal XCP$M_FCACHEEN = 8388608;
literal XCP$M_LOCKOUTD = 33554432;
literal XCP$M_KMODE = 128;
literal XCP$M_WBD = 256;
literal XCP$M_ARD = 512;
literal XCP$M_ESI = 1024;
literal XCP$M_RUP = 2048;
literal XCP$M_TOS = 4096;
literal XCP$M_CRDID = 16384;
literal XCP$M_CCID = 32768;
literal XCP$M_WS = 65536;
literal XCP$M_BPD = 131072;
literal XCP$M_BP = 262144;
literal XCP$M_CNAKR = 524288;
literal XCP$M_UWP = 1048576;
literal XCP$M_LOCKOUT0 = 2097152;
literal XCP$M_LOCKOUT1 = 4194304;
literal XCP$M_DTPE = 67108864;
literal XCP$M_CFE = 134217728;
literal XCP$M_WDPE = 268435456;
literal XCP$M_IQO = 536870912;
literal XCP$M_TPE = 1073741824;
literal XCP$M_VBPE = -2147483648;
literal XCP$S_XCPDEF = 1540;
macro XCP$L_CSR1 = 0,0,32,0 %;          !  XCP Control/Status Register
macro XCP$V_NODE_ID = 0,0,4,0 %;
literal XCP$S_NODE_ID = 4;              !  Node ID
macro XCP$V_FPBD = 0,4,1,0 %;           !  Front Panel Boot Disable
macro XCP$V_FPEEUE = 0,5,1,0 %;         !  Front Panel EEROM Update Enable
macro XCP$V_XACLO = 0,6,1,0 %;          !  XMI AC LO
macro XCP$V_STL = 0,7,1,0 %;            !  Selftest loop
macro XCP$V_EEWADR = 0,8,2,0 %;
literal XCP$S_EEWADR = 2;               !  EEPROM Write Address
macro XCP$V_DLOCKOUTE = 0,10,1,0 %;     !  Delayed Lockout enabled
macro XCP$V_STPLED = 0,11,1,0 %;        !  Self-test Pass LED
macro XCP$V_STATLEDS = 0,12,5,0 %;
literal XCP$S_STATLEDS = 5;             !  Status LEDS D6-D2
macro XCP$V_FHIT = 0,17,1,0 %;          !  Force Hit
macro XCP$V_FMISS = 0,18,1,0 %;         !  Force Miss
macro XCP$V_FBTP = 0,19,1,0 %;          !  Force Bad Tag Parity
macro XCP$V_FCI = 0,20,1,0 %;           !  Force Cache Invalidate
macro XCP$V_CPUD = 0,21,1,0 %;          !  Cache Parity Update Disable
macro XCP$V_FPSEL = 0,22,1,0 %;         !  Force Parity Select
macro XCP$V_FCACHEEN = 0,23,1,0 %;      !  Force Cache Enable
macro XCP$V_LOCKOUTD = 0,25,1,0 %;      !  Lockout disabled
macro XCP$L_XGPR = 12,0,32,0 %;         !  XMI General Purpose register
macro XCP$L_CSR2 = 16,0,32,0 %;         !  XCP Control/Status register
macro XCP$V_GAREV = 16,0,4,0 %;
literal XCP$S_GAREV = 4;                !  Gate Array Revision
macro XCP$V_FP = 16,4,3,0 %;
literal XCP$S_FP = 3;                   !  Force Parity
macro XCP$V_KMODE = 16,7,1,0 %;         !  Kludge Mode
macro XCP$V_WBD = 16,8,1,0 %;           !  Write Buffer Disable
macro XCP$V_ARD = 16,9,1,0 %;           !  Auto Retry Disable
macro XCP$V_ESI = 16,10,1,0 %;          !  Enable Self Invalidates
macro XCP$V_RUP = 16,11,1,0 %;          !  Read Upper
macro XCP$V_TOS = 16,12,1,0 %;          !  Timeout Select
macro XCP$V_CRDID = 16,14,1,0 %;        !  CRD Interrupt Disable
macro XCP$V_CCID = 16,15,1,0 %;         !  CC Interrupt Disable
macro XCP$V_WS = 16,16,1,0 %;           !  Warm start
macro XCP$V_BPD = 16,17,1,0 %;          !  Boot processor disabled
macro XCP$V_BP = 16,18,1,0 %;           !  Boot processor
macro XCP$V_CNAKR = 16,19,1,0 %;        !  Commander NOACK received
macro XCP$V_UWP = 16,20,1,0 %;          !  Unlock Write Pending
macro XCP$V_LOCKOUT0 = 16,21,1,0 %;     !  Interlock lockout
macro XCP$V_LOCKOUT1 = 16,22,1,0 %;     !  Interlock lockout
macro XCP$V_DTPE = 16,26,1,0 %;         !  Duplicate Tag Parity Error
macro XCP$V_CFE = 16,27,1,0 %;          !  Cache Fill Error
macro XCP$V_WDPE = 16,28,1,0 %;         !  Write Data Parity Error
macro XCP$V_IQO = 16,29,1,0 %;          !  INVAL Queue Overflow
macro XCP$V_TPE = 16,30,1,0 %;          !  TAG parity error
macro XCP$V_VBPE = 16,31,1,0 %;         !  Valid Bit Parity error
!  +4.
macro XCP$L_SYSTYPE = 516,0,32,0 %;     !  System Type Register
macro XCP$L_CONSEL = 1072,0,32,0 %;
macro XCP$L_TCR0 = 1280,0,32,0 %;
macro XCP$L_TIR0 = 1284,0,32,0 %;
macro XCP$L_TNIR0 = 1288,0,32,0 %;
macro XCP$L_TIVR0 = 1292,0,32,0 %;
macro XCP$L_TCR1 = 1296,0,32,0 %;
macro XCP$L_TIR1 = 1300,0,32,0 %;
macro XCP$L_TNIR1 = 1304,0,32,0 %;
macro XCP$L_TIVR1 = 1308,0,32,0 %;
macro XCP$L_IPIVINTR = 1536,0,32,0 %;   !  Interprocessor communication area.
 
!*** MODULE $XGDEF ***
literal XG$C_PRIXMT = 0;                !  Primary xmt use vector slot 0 
literal XG$C_SECXMT = 1;                !  Secondary xmt use vector slot 1 
literal XG$C_PRIRCV = 2;                !  Primary rcv use vector slot 2 
literal XG$C_SECRCV = 3;                !  Secondary rcv use vector slot 3 
literal XG$C_RCV_CSR = 0;               !  Receive CSR 
literal XG$C_XMT_CSR = 2;               !  Transmit CSR 
literal XG$C_MISC_REG = 4;              !  Set misc bits 
literal XG$C_IND_ADDR = 6;              !  Use to access the ind reg (IR) 
literal XG$C_PROTOCOL = 0;              !  0th IR def's the protocol char 
literal XG$C_RCV_ERR = 1;               !  1st IR def's rcv errors 
literal XG$C_XMT_ERR = 2;               !  2nd IR def's xmt errors 
literal XG$C_SYNC = 3;                  !  3rd IR def's sync charateristics 
literal XG$C_MODEM = 4;                 !  4th IR def's modem state change 
literal XG$C_STN_ADDR = 5;              !  5th IR use to set station address 
literal XG$C_PRI_RCV = 6;               !  6th and 7th IR used to define 
literal XG$C_PRI_RCV1 = 7;              !  primary rcv buffer and address 
literal XG$C_SEC_RCV = 8;               !  8th and 9th IR used to define 
literal XG$C_SEC_RCV1 = 9;              !  secondary rcv buffer and address 
literal XG$C_PRI_XMT = 10;              !  10th and 11th IR used to define 
literal XG$C_PRI_XMT1 = 11;             !  primary xmt buffer and address 
literal XG$C_SEC_XMT = 12;              !  12th and 13th IR used to define 
literal XG$C_SEC_XMT1 = 13;             !  secondary xmt buffer and address 
literal XG$C_TERM_CHAR = 14;            !  14th used to describe term char 
literal XG$C_FREE = 15;                 !  15th unused register 
!  Bit def's for RCV and XMT CSR
literal XG$M_ENABLE = 1;
literal XG$M_PRM_SEC = 4;
literal XG$M_TERM_IDL = 8;
literal XG$M_DATA_SET_IE = 16;
literal XG$M_INT_ENABLE = 32;
literal XG$M_ACT_DSC = 64;
literal XG$M_DONE_S = 128;
literal XG$M_ILP_XCS = 256;
literal XG$M_LOOP_TYPE = 1536;
literal XG$M_RESIDUAL = 4096;
literal XG$M_PRI_SEC_STN = 8192;
literal XG$M_ERROR = 16384;
literal XG$M_DONE_P = 32768;
literal XG$M_MASTER_RESET = 128;
literal XG$M_USER_RCV_FLAG = 1024;
literal XG$M_CTS_FLAG = 4096;
literal XG$M_CARRIER_FLAG = 8192;
literal XG$M_RING_FLAG = 16384;
literal XG$M_DSR_FLAG = 32768;
literal XG$M_STRIP_SYNC = 64;
literal XG$M_LATENCY_RCV = 2;
literal XG$M_NXM_RCV = 4;
literal XG$M_BCC_ERR = 8;
literal XG$M_VRC_ERR = 16;
literal XG$M_ABORT = 32;
literal XG$M_BUFOVR = 64;
literal XG$M_RES_BIT_CNT = 1792;
literal XG$M_MSG_LEN = 1;
literal XG$M_NXM_XMT = 2;
literal XG$M_LATENCY_XMT = 4;
literal XG$M_CTS = 16;
literal XG$M_CARRIER = 32;
literal XG$M_RING_IND = 64;
literal XG$M_DSR = 128;
literal XG$M_USER_XMT = 256;
literal XG$M_DTR = 512;
literal XG$M_DATA_SGNL = 1024;
literal XG$M_RTS = 4096;
literal XG$C_INTCLK_OFF = 0;            !  No internal clock 
literal XG$C_INTCLK_ON = 1;             !  Set internal clock 
!  Error control definitions IR0<0:3>
literal XG$C_ERR_CRC1 = 0;              !  CRC-CCITT preset to 1's 
literal XG$C_ERR_CRC0 = 1;              !  CRC-CCITT preset to 0's 
literal XG$C_ERR_LVE = 2;               !  LRC/VRC even 
literal XG$C_ERR_CRC16 = 3;             !  CRC-16 preset to 0's 
literal XG$C_ERR_LRCO = 4;              !  LRC odd 
literal XG$C_ERR_LRCE = 5;              !  LRC even 
literal XG$C_ERR_LVO = 6;               !  LRC/VRC odd 
literal XG$C_NOCON = 7;                 !  No error control 
!  Protocol definitions  IR0<3:3>
literal XG$C_PRO_DDCMP = 0;             !  DDCMP 
literal XG$C_PRO_SDLC = 1;              !  SDLC 
literal XG$C_PRO_HDLC = 2;              !  HDLC 
literal XG$C_BISYNC = 3;                !  BISYNC 
literal XG$C_GENBYTE = 7;               !  General byte 
!  Bits per char definitions. RCV: IR0<8:10>  XMT:IR0<13:15>
literal XG$C_BPC_8 = 0;
literal XG$C_BPC_1 = 1;
literal XG$C_BPC_2 = 2;
literal XG$C_BPC_3 = 3;
literal XG$C_BPC_4 = 4;
literal XG$C_BPC_5 = 5;
literal XG$C_BPC_6 = 6;
literal XG$C_BPC_7 = 7;
!  Baud rate generator definitions IR2<8:11>
literal XG$C_BRG_800 = 0;
literal XG$C_BRG_1200 = 1;
literal XG$C_BRG_1760 = 2;
literal XG$C_BRG_2152 = 3;
literal XG$C_BRG_2400 = 4;
literal XG$C_BRG_4800 = 5;
literal XG$C_BRG_9600 = 6;
literal XG$C_BRG_19200 = 7;
!  Sync character definitions IR3<8:15>
literal XG$C_SYNC_DDCMP = 150;          !  Set sync character to HEX 96 
literal XG$C_SYNC_HDLC = 0;             !  Set no sync character 
literal XG$C_SYNC_BISYNC = 50;          !  Set sync character to HEX 32 
!  Struct of parameter buffer
literal XG$S_XGDEF = 2;
macro XG$V_ENABLE = 0,0,1,0 %;          !  Enable the receiver 
macro XG$V_PRM_SEC = 0,2,1,0 %;         !  0 = prim 1 = sec buffer and addr 
macro XG$V_TERM_IDL = 0,3,1,0 %;        !  Term char for RCV's Idle for XMT's 
macro XG$V_DATA_SET_IE = 0,4,1,0 %;     !  Enable intrpts for data set change 
macro XG$V_INT_ENABLE = 0,5,1,0 %;      !  Enable intrpts for rcv and xmt's 
macro XG$V_ACT_DSC = 0,6,1,0 %;         !  Active (rcv's) Data set change (xmt') 
macro XG$V_DONE_S = 0,7,1,0 %;          !  Sec buffer proceesing is finished 
macro XG$V_ILP_XCS = 0,8,1,0 %;         !  Interal loopback (rcv) XMT clock src 
macro XG$V_LOOP_TYPE = 0,9,2,0 %;
literal XG$S_LOOP_TYPE = 2;             !  Loopb type for devices like CPI which support many 
macro XG$V_RESIDUAL = 0,12,1,0 %;       !  Bit protocols only 
macro XG$V_PRI_SEC_STN = 0,13,1,0 %;    !  0 = control 1 = tributary station 
macro XG$V_ERROR = 0,14,1,0 %;          !  Error on rcv or xmt 
macro XG$V_DONE_P = 0,15,1,0 %;         !  Primary buffer processing complete 
!  Misc reg definitions
macro XG$V_IND_REG = 0,0,4,0 %;
literal XG$S_IND_REG = 4;               !  Ind reg address to access 
macro XG$V_MASTER_RESET = 0,7,1,0 %;    !  Master reset bit 
macro XG$V_USER_RCV_FLAG = 0,10,1,0 %;  !  User receive flag 
macro XG$V_CTS_FLAG = 0,12,1,0 %;       !  Clear to send flag 
macro XG$V_CARRIER_FLAG = 0,13,1,0 %;   !  Carrier detect flag 
macro XG$V_RING_FLAG = 0,14,1,0 %;      !  Ring indicator flag 
macro XG$V_DSR_FLAG = 0,15,1,0 %;       !  Data set ready flag 
!  Protocol parameter definitions Indirect register 0
macro XG$V_ERR_CNTRL = 0,0,3,0 %;
literal XG$S_ERR_CNTRL = 3;             !  Error control def CRC_CCITT 1's 
macro XG$V_PROTOCOL = 0,3,3,0 %;
literal XG$S_PROTOCOL = 3;              !  Protocol type def DDCMP 
macro XG$V_STRIP_SYNC = 0,6,1,0 %;      !  Set to strip excess sync characters 
macro XG$V_RCV_BPC = 0,8,3,0 %;
literal XG$S_RCV_BPC = 3;               !  RCV bits/char default is 8 
macro XG$V_XMT_RCV = 0,13,3,0 %;
literal XG$S_XMT_RCV = 3;               !  XMT bits/char default is 8 
!  Receive errors definitions Indirect register 1
macro XG$V_LATENCY_RCV = 0,1,1,0 %;     !  RCV latency error 
macro XG$V_NXM_RCV = 0,2,1,0 %;         !  Non-existant memory error 
macro XG$V_BCC_ERR = 0,3,1,0 %;         !  Block check error 
macro XG$V_VRC_ERR = 0,4,1,0 %;         !  Byte prot only char parity error 
macro XG$V_ABORT = 0,5,1,0 %;           !  Bit prot only 
macro XG$V_BUFOVR = 0,6,1,0 %;          !  When char COUNT and msg len aren't eq 
macro XG$V_RES_BIT_CNT = 0,8,3,0 %;
literal XG$S_RES_BIT_CNT = 3;           !  Residual bit count 
!  Transmit error definitions Indirect register 2
macro XG$V_MSG_LEN = 0,0,1,0 %;         !  Char count indicates a buff too small 
macro XG$V_NXM_XMT = 0,1,1,0 %;         !  Non existant memory 
macro XG$V_LATENCY_XMT = 0,2,1,0 %;     !  XMT latency error 
macro XG$V_XMT_BRG = 0,8,4,0 %;
literal XG$S_XMT_BRG = 4;               !  Baud rate 
!  Sync information definitions Indirect register 3
macro XG$V_NMB_OF_SYNC = 0,0,5,0 %;
literal XG$S_NMB_OF_SYNC = 5;           !  Number of syncs to send bettweenmsgs 
macro XG$V_SYNC = 0,8,8,0 %;
literal XG$S_SYNC = 8;                  !  Contains the sync char 
!  Data set change register Indirect register 4
macro XG$V_CTS = 0,4,1,0 %;             !  Clear to send 
macro XG$V_CARRIER = 0,5,1,0 %;         !  Carrier detect 
macro XG$V_RING_IND = 0,6,1,0 %;        !  Ring indicator 
macro XG$V_DSR = 0,7,1,0 %;             !  Data set ready 
macro XG$V_USER_XMT = 0,8,1,0 %;        !  User transmit 
macro XG$V_DTR = 0,9,1,0 %;             !  Data terminal ready 
macro XG$V_DATA_SGNL = 0,10,1,0 %;      !  Data signal rate 
macro XG$V_RTS = 0,12,1,0 %;            !  Request to send 
!  Internal clock def's TX.CSR<8>
literal XG$M_BUFFER_CHAR = 1;
literal XG$M_BUFFER_IN_PREV_POS = 2;
literal XG$M_COMPLETE_READ = 4;
literal XG$M_NEW_FRAME = -2147483648;
literal XG$S_XGDEF1 = 13;
macro XG$B_ERR_CNTRL = 0,0,8,0 %;       !  Set the type of error control to use 
macro XG$B_PROTOCOL = 1,0,8,0 %;        !  Set protocol type 
macro XG$B_TX_BPC = 2,0,8,0 %;          !  Set XMT bits per char 
macro XG$B_RX_BPC = 3,0,8,0 %;          !  Set RCV bits per char 
macro XG$B_BAUD = 4,0,8,0 %;            !  Set line speed 
macro XG$B_NUM_SYNC = 5,0,8,0 %;        !  Set number of sync to send 
macro XG$B_SYNC_REG = 6,0,8,0 %;        !  Set sync char to send 
macro XG$B_ICLK = 7,0,8,0 %;            !  Set the internal clock 
macro XG$B_BPC = 8,0,8,0 %;             !  RCV/XMT bits per char 
macro XG$B_MNTLOOP = 9,0,8,0 %;         !  Maint loopb type 
! 
!  Bit def for interface with the frame routine
! 
!  XG$V_BUFFER_CHAR         clear        Buffer char in the next position
!                         set         Use XG$V_BUFFER_IN_PREV_POS
!  XG$V_BUFFER_IN_PREV_POS
!                         clear        ignore the char
!                         set        Buffer in previous position
!  XG$V_COMPLETE_READ        set        complete framed buffer to user
! 
macro XG$V_BUFFER_CHAR = 9,0,1,0 %;
macro XG$V_BUFFER_IN_PREV_POS = 9,1,1,0 %;
macro XG$V_COMPLETE_READ = 9,2,1,0 %;
macro XG$V_NEW_FRAME = 9,31,1,0 %;      !  set if new rcv message 
 
!*** MODULE $XJADEF ***
! +
!  XJA Register Offset Definitions
! -
literal XJA_ERRS$M_XMI_PWR_UP = 1048576;
literal XJA_ERRS$M_XMI_PWR_FAIL = 2097152;
literal XJA_ERRS$M_XMI_ARB_TMO = 4194304;
literal XJA_ERRS$M_CBI_PARITY = 8388608;
literal XJA_ERRS$M_JXDI_CMD_LEN_ERR = 16777216;
literal XJA_ERRS$M_JXDI_RCVBUF_OVRUN = 33554432;
literal XJA_ERRS$M_CPU_REQ_OVRUN = 67108864;
literal XJA_ERRS$M_ICU_BUF_CNT_ERR = 134217728;
literal XJA_ERRS$M_XCE_TRNS_ENT_MCHERR = 268435456;
literal XJA_ERRS$M_MUL_JXDI_PARITY = 536870912;
literal XJA_ERRS$M_JXDI_PARITY_0 = 1073741824;
literal XJA_ERRS$M_JXDI_PARITY_1 = -2147483648;
literal XJA_FCMD$M_FORCE = 1;
literal XJA_DIAG$M_DIAG_MODE = 536870912;
literal XJA_DIAG$M_FLIP_ADDR_BIT_29 = 1073741824;
literal XJA_DIAG$M_FRC_LCL_XJA_REG_ACC = -2147483648;
literal XJA_DMAFADDR$M_FAILING_ADDR_29 = 536870912;
literal XJA_ERRINTR$M_IE_XMI_ARB_TMO = 1;
literal XJA_ERRINTR$M_IE_JXDI_PARITYERR = 2;
literal XJA_ERRINTR$M_IE_TRANS_TMO = 8192;
literal XJA_ERRINTR$M_IE_TRANSMIT_ERR = 16384;
literal XJA_ERRINTR$M_IE_CMD_NOACK = 32768;
literal XJA_ERRINTR$M_IE_READ_ERR_RSP = 65536;
literal XJA_ERRINTR$M_IE_READ_SEQ_ERR = 131072;
literal XJA_ERRINTR$M_IE_NO_READ_RSP = 262144;
literal XJA_ERRINTR$M_IE_CRD = 524288;
literal XJA_ERRINTR$M_IE_WR_DATA_NOACK = 1048576;
literal XJA_ERRINTR$M_IE_IDN_DATA_NOACK = 2097152;
literal XJA_ERRINTR$M_IE_WRITE_SEQ_ERR = 4194304;
literal XJA_ERRINTR$M_IE_PARITY_ERR = 8388608;
literal XJA_ERRINTR$M_IE_INCON_PARITY = 16777216;
literal XJA_ERRINTR$M_IE_CC = 134217728;
literal XJA$S_XJADEF = 80;
! +
!  XJA Registers
! -
macro XJA$L_ERRS = 0,0,32,0 %;
macro XJA_ERRS$V_CPU_ID = 0,0,6,0 %;
literal XJA_ERRS$S_CPU_ID = 6;          !  CPU ID of most recent operation
macro XJA_ERRS$V_XMI_PWR_UP = 0,20,1,0 %; !  XMI power up
macro XJA_ERRS$V_XMI_PWR_FAIL = 0,21,1,0 %; !  XMI power fail
macro XJA_ERRS$V_XMI_ARB_TMO = 0,22,1,0 %; !  XMI arbitration timeout
macro XJA_ERRS$V_CBI_PARITY = 0,23,1,0 %; !  CBI parity error
macro XJA_ERRS$V_JXDI_CMD_LEN_ERR = 0,24,1,0 %; !  JXDI Command/Length error
macro XJA_ERRS$V_JXDI_RCVBUF_OVRUN = 0,25,1,0 %; !  JXDI Receive Buffer Overrun
macro XJA_ERRS$V_CPU_REQ_OVRUN = 0,26,1,0 %; !  CPU Request overrun
macro XJA_ERRS$V_ICU_BUF_CNT_ERR = 0,27,1,0 %; !  ICU Buffer Count Error
macro XJA_ERRS$V_XCE_TRNS_ENT_MCHERR = 0,28,1,0 %; !  XCE_Transmit Entry Machine Error
macro XJA_ERRS$V_MUL_JXDI_PARITY = 0,29,1,0 %; !  Multiple JXDI Parity Errors
macro XJA_ERRS$V_JXDI_PARITY_0 = 0,30,1,0 %; !  JXDI Parity Error on JXDI Byte 0
macro XJA_ERRS$V_JXDI_PARITY_1 = 0,31,1,0 %; !  JXDI Parity Error on JXDI Byte 1
macro XJA$L_FCMD = 4,0,32,0 %;
macro XJA_FCMD$V_FORCE = 4,0,1,0 %;     !  Force XMI Command Cycle
macro XJA_FCMD$V_XMI_ADDR_25_1 = 4,1,25,0 %;
literal XJA_FCMD$S_XMI_ADDR_25_1 = 25;  !  XMI Address [25:1]
macro XJA_FCMD$V_CMD = 4,26,4,0 %;
literal XJA_FCMD$S_CMD = 4;             !  Command
macro XJA_FCMD$V_LEN = 4,30,2,0 %;
literal XJA_FCMD$S_LEN = 2;             !  XMI Length Code
macro XJA$L_IPINTRSRC = 8,0,32,0 %;
macro XJA_IPINTRSRC$V_SOURCE = 8,0,16,0 %;
literal XJA_IPINTRSRC$S_SOURCE = 16;    !  Interrupt Source
macro XJA$L_DIAG = 12,0,32,0 %;
macro XJA_DIAG$V_FRC_PARITY_ERR = 12,0,4,0 %;
literal XJA_DIAG$S_FRC_PARITY_ERR = 4;  !  Force Parity Error
macro XJA_DIAG$V_FRC_XMI_RCV_BUFBSY = 12,4,4,0 %;
literal XJA_DIAG$S_FRC_XMI_RCV_BUFBSY = 4; !  Force XMI Receive Buffer Busy
macro XJA_DIAG$V_LW_READ_SEL = 12,8,4,0 %;
literal XJA_DIAG$S_LW_READ_SEL = 4;     !  Longword Read Select
macro XJA_DIAG$V_DIAG_MODE = 12,29,1,0 %; !  Diagnostic Mode
macro XJA_DIAG$V_FLIP_ADDR_BIT_29 = 12,30,1,0 %; !  Flip Address Bit <29>
macro XJA_DIAG$V_FRC_LCL_XJA_REG_ACC = 12,31,1,0 %; !  Force Local XJA Register Access
macro XJA$L_DMAFADDR = 16,0,32,0 %;
macro XJA_DMAFADDR$V_FAILING_ADDR = 16,0,29,0 %;
literal XJA_DMAFADDR$S_FAILING_ADDR = 29; !  Failing Address
macro XJA_DMAFADDR$V_FAILING_ADDR_29 = 16,29,1,0 %; !  Failing Address Bit <29>
macro XJA_DMAFADDR$V_FAILING_LEN = 16,30,2,0 %;
literal XJA_DMAFADDR$S_FAILING_LEN = 2; !  Failing Length
macro XJA$L_DMAFCMD = 20,0,32,0 %;
macro XJA_DMAFCMD$V_FAIL_MASK = 20,0,16,0 %;
literal XJA_DMAFCMD$S_FAIL_MASK = 16;   !  Failing XMI Mask
macro XJA_DMAFCMD$V_FAIL_ADDR_38_29 = 20,16,10,0 %;
literal XJA_DMAFCMD$S_FAIL_ADDR_38_29 = 10; !  Failing XMI Address <38:29>
macro XJA_DMAFCMD$V_FAILING_CMD = 20,28,4,0 %;
literal XJA_DMAFCMD$S_FAILING_CMD = 4;  !  Failing Command
macro XJA$L_ERRINTR = 24,0,32,0 %;
macro XJA_ERRINTR$V_IE_XMI_ARB_TMO = 24,0,1,0 %; !  INTR Enable on XMI Arb Timeout
macro XJA_ERRINTR$V_IE_JXDI_PARITYERR = 24,1,1,0 %; !  INTR Enable on JXDI Parity Error
macro XJA_ERRINTR$V_IE_TRANS_TMO = 24,13,1,0 %; !  INTR Enable on Transaction Timeout
macro XJA_ERRINTR$V_IE_TRANSMIT_ERR = 24,14,1,0 %; !  INTR Enable on Transmit Error
macro XJA_ERRINTR$V_IE_CMD_NOACK = 24,15,1,0 %; !  INTR Enable on Command NOACK
macro XJA_ERRINTR$V_IE_READ_ERR_RSP = 24,16,1,0 %; !  INTR Enable on Read Error Response
macro XJA_ERRINTR$V_IE_READ_SEQ_ERR = 24,17,1,0 %; !  INTR Enable on Read Sequence Error
macro XJA_ERRINTR$V_IE_NO_READ_RSP = 24,18,1,0 %; !  INTR Enable on No Read Response
macro XJA_ERRINTR$V_IE_CRD = 24,19,1,0 %; !  INTR Enable on Corrected Read Data
macro XJA_ERRINTR$V_IE_WR_DATA_NOACK = 24,20,1,0 %; !  INTR Enable on Write Data NOACK
macro XJA_ERRINTR$V_IE_IDN_DATA_NOACK = 24,21,1,0 %; !  INTR Enable on Read/IDENT Data NOACK
macro XJA_ERRINTR$V_IE_WRITE_SEQ_ERR = 24,22,1,0 %; !  INTR Enable on Write Sequence Error
macro XJA_ERRINTR$V_IE_PARITY_ERR = 24,23,1,0 %; !  INTR Enable on Parity Error (XMI)
macro XJA_ERRINTR$V_IE_INCON_PARITY = 24,24,1,0 %; !  INTR Enable on Inconsistent Parity Error
macro XJA_ERRINTR$V_IE_CC = 24,27,1,0 %; !  INTR Enable on Corrected Confirmation Data
macro XJA$L_CNF = 28,0,32,0 %;
macro XJA_CNF$V_XJA_XMI_NODE_ID = 28,12,4,0 %;
literal XJA_CNF$S_XJA_XMI_NODE_ID = 4;  !  XJA XMI Node ID
macro XJA_CNF$V_MEMORY_SIZE = 28,16,8,0 %;
literal XJA_CNF$S_MEMORY_SIZE = 8;      !  Memory Size (64 MB chunks)
macro XJA_CNF$V_START_ADDR_33_26 = 28,24,8,0 %;
literal XJA_CNF$S_START_ADDR_33_26 = 8; !  Starting Address <33:26> (64 MB)
macro XJA$L_XBIIDA = 32,0,32,0 %;
macro XJA_XBIIDA$V_XBI_ID_0 = 32,0,4,0 %;
literal XJA_XBIIDA$S_XBI_ID_0 = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDA$V_XBI_ID_1 = 32,4,4,0 %;
literal XJA_XBIIDA$S_XBI_ID_1 = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDA$V_XBI_ID_2 = 32,8,4,0 %;
literal XJA_XBIIDA$S_XBI_ID_2 = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDA$V_XBI_ID_3 = 32,12,4,0 %;
literal XJA_XBIIDA$S_XBI_ID_3 = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDA$V_XBI_ID_4 = 32,16,4,0 %;
literal XJA_XBIIDA$S_XBI_ID_4 = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDA$V_XBI_ID_5 = 32,20,4,0 %;
literal XJA_XBIIDA$S_XBI_ID_5 = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDA$V_XBI_ID_6 = 32,24,4,0 %;
literal XJA_XBIIDA$S_XBI_ID_6 = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDA$V_XBI_ID_7 = 32,28,4,0 %;
literal XJA_XBIIDA$S_XBI_ID_7 = 4;      !  XMI node ID of corresponding XBI
macro XJA$L_XBIIDB = 36,0,32,0 %;
macro XJA_XBIIDB$V_XBI_ID_8 = 36,0,4,0 %;
literal XJA_XBIIDB$S_XBI_ID_8 = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDB$V_XBI_ID_9 = 36,4,4,0 %;
literal XJA_XBIIDB$S_XBI_ID_9 = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDB$V_XBI_ID_A = 36,8,4,0 %;
literal XJA_XBIIDB$S_XBI_ID_A = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDB$V_XBI_ID_B = 36,12,4,0 %;
literal XJA_XBIIDB$S_XBI_ID_B = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDB$V_XBI_ID_C = 36,16,4,0 %;
literal XJA_XBIIDB$S_XBI_ID_C = 4;      !  XMI node ID of corresponding XBI
macro XJA_XBIIDB$V_XBI_ID_D = 36,20,4,0 %;
literal XJA_XBIIDB$S_XBI_ID_D = 4;      !  XMI node ID of corresponding XBI
macro XJA$L_ERRSCB = 40,0,32,0 %;
macro XJA_ERRSCB$V_XJA_ERR_SCB_OFFSET = 40,0,16,0 %;
literal XJA_ERRSCB$S_XJA_ERR_SCB_OFFSET = 16; !  XJA Error SCB Offset
macro XJA$L_IDENT4 = 64,0,32,0 %;
macro XJA_IDENT4$V_IPL14_SCB_OFFSET = 64,0,16,0 %;
literal XJA_IDENT4$S_IPL14_SCB_OFFSET = 16; !  XJA IPL Hex 14 SCB Offset
macro XJA$L_IDENT5 = 68,0,32,0 %;
macro XJA_IDENT5$V_IPL15_SCB_OFFSET = 68,0,16,0 %;
literal XJA_IDENT5$S_IPL15_SCB_OFFSET = 16; !  XJA IPL Hex 15 SCB Offset
macro XJA$L_IDENT6 = 72,0,32,0 %;
macro XJA_IDENT6$V_IPL16_SCB_OFFSET = 72,0,16,0 %;
literal XJA_IDENT6$S_IPL16_SCB_OFFSET = 16; !  XJA IPL Hex 16 SCB Offset
macro XJA$L_IDENT7 = 76,0,32,0 %;
macro XJA_IDENT7$V_IPL17_SCB_OFFSET = 76,0,16,0 %;
literal XJA_IDENT7$S_IPL17_SCB_OFFSET = 16; !  XJA IPL Hex 17 SCB Offset
 
!*** MODULE $XMEMDEF ***
! +
!  XMI Memory Node Registers
! -
literal XMEM$M_MWRITER = 1024;
literal XMEM$M_UNLOCKERR = 2048;
literal XMEM$M_LOCKERR = 4096;
literal XMEM$M_ENPROTECT = 8192;
literal XMEM$M_MEMVAL = 16384;
literal XMEM$M_INHCRD = 32768;
literal XMEM$M_ECCDIS = 536870912;
literal XMEM$M_ECCDIAG = 1073741824;
literal XMEM$M_ERRSUM = -2147483648;
literal XMEM$M_COLPERR = 33554432;
literal XMEM$M_ROWPERR = 67108864;
literal XMEM$M_BWRITERR = 134217728;
literal XMEM$M_CRDLOGR = 536870912;
literal XMEM$M_HIERATE = 1073741824;
literal XMEM$M_RDSLOGR = -2147483648;
literal XMEM$M_FILL_10 = 536870912;
literal XMEM$M_INTID5 = 1073741824;
literal XMEM$M_INTFLG = -2147483648;
literal XMEM$M_DSBLHOLD = 32;
literal XMEM$M_RFRSHERR = 65536;
literal XMEM$M_TREF_REQ = 1;
literal XMEM$M_ECC_TEST = 2;
literal XMEM$M_TCY_MODE = -2147483648;
literal XMEM$S_XMEMDEF = 272;
macro XMEM$L_SEADR = 16,0,32,0 %;       ! Start/End Address Register
macro XMEM$V_INTLV = 16,0,2,0 %;
literal XMEM$S_INTLV = 2;               !  how many ways interleaved
macro XMEM$V_INTLVADDR = 16,5,3,0 %;
literal XMEM$S_INTLVADDR = 3;           !  Interleave address bits
macro XMEM$V_SADR = 16,8,8,0 %;
literal XMEM$S_SADR = 8;                !  Starting address
macro XMEM$V_EADR = 16,21,9,0 %;
literal XMEM$S_EADR = 9;                !  Ending address
macro XMEM$L_MCTL1 = 20,0,32,0 %;       !  Memory Control Reg. 1
macro XMEM$V_DIAGBTS = 20,0,8,0 %;
literal XMEM$S_DIAGBTS = 8;             !  Used during ECC diag cycles
macro XMEM$V_MWRITER = 20,10,1,0 %;     !  RDS on masked write
macro XMEM$V_UNLOCKERR = 20,11,1,0 %;   !  Unlock SEQ error
macro XMEM$V_LOCKERR = 20,12,1,0 %;     !  Lock queue error
macro XMEM$V_ENPROTECT = 20,13,1,0 %;   !  EN protect mode
macro XMEM$V_MEMVAL = 20,14,1,0 %;      !  Memory contents valid
macro XMEM$V_INHCRD = 20,15,1,0 %;      !  Inhib. CRD reporting
macro XMEM$V_RAMTYPE = 20,16,2,0 %;
literal XMEM$S_RAMTYPE = 2;             !  Size of RAM
macro XMEM$V_MEMSIZE = 20,18,11,0 %;
literal XMEM$S_MEMSIZE = 11;            !  Size in 256KB increments
macro XMEM$V_ECCDIS = 20,29,1,0 %;      !  Used with following bit
macro XMEM$V_ECCDIAG = 20,30,1,0 %;     !  
macro XMEM$V_ERRSUM = 20,31,1,0 %;      !  Error summary(includes MECER)
macro XMEM$L_MECER = 24,0,32,0 %;       !  Memory ECC Error Register
macro XMEM$V_ERRSYND = 24,0,8,0 %;
literal XMEM$S_ERRSYND = 8;             !  Error syndrome
macro XMEM$V_COLPERR = 24,25,1,0 %;     !  Column parity error
macro XMEM$V_ROWPERR = 24,26,1,0 %;     !  Row parity error
macro XMEM$V_BWRITERR = 24,27,1,0 %;    !  Byte write error
macro XMEM$V_CRDLOGR = 24,29,1,0 %;     !  CRD Error Log REQ
macro XMEM$V_HIERATE = 24,30,1,0 %;     !  Hi Error Rate
macro XMEM$V_RDSLOGR = 24,31,1,0 %;     !  RDS Error Log REQ
macro XMEM$L_MECEA = 28,0,32,0 %;       !  Memory ECC Error Register
macro XMEM$V_ERRADDR = 28,3,27,0 %;
literal XMEM$S_ERRADDR = 27;            !  Error address
macro XMEM$L_IFLG0 = 32,0,32,0 %;       !  INTLK FLAG 0 REGISTER
macro XMEM$V_INTLKID = 32,0,5,0 %;
literal XMEM$S_INTLKID = 5;             !  ID of last INTLK read
macro XMEM$V_INTLKADR = 32,5,24,0 %;
literal XMEM$S_INTLKADR = 24;           !  INTLK address
macro XMEM$V_FILL_10 = 32,29,1,0 %;     !  Filler		
macro XMEM$V_INTID5 = 32,30,1,0 %;      !  INTLK ID bit 5
macro XMEM$V_INTFLG = 32,31,1,0 %;      !  INTLK flag 0
macro XMEM$L_IFLG1 = 36,0,32,0 %;       !  INTLK FLAG 1  REGISTER
macro XMEM$L_IFLG2 = 40,0,32,0 %;       !  INTLK FLAG 2  REGISTER
macro XMEM$L_IFLG3 = 44,0,32,0 %;       !  INTLK FLAG 3  REGISTER
macro XMEM$L_MCTL2 = 48,0,32,0 %;       !  Memory Control Reg. 2
macro XMEM$V_SUPRESS = 48,0,2,0 %;
literal XMEM$S_SUPRESS = 2;             !  ARB suppress control
macro XMEM$V_REFRESH = 48,2,3,0 %;
literal XMEM$S_REFRESH = 3;             !  Refresh rate
macro XMEM$V_DSBLHOLD = 48,5,1,0 %;     !  Disable hold
macro XMEM$V_RFRSHERR = 48,16,1,0 %;    !  Refresh error
macro XMEM$L_TCY = 52,0,32,0 %;         !  TCY tester register
macro XMEM$V_TREF_REQ = 52,0,1,0 %;     !  Test refresh request
macro XMEM$V_ECC_TEST = 52,1,1,0 %;     !  Test ECC
macro XMEM$V_TCY_MODE = 52,31,1,0 %;    !  Disable ECC errors and 
!  refresh requests
macro XMEM$B_FILL_14 = 56,0,0,1 %;
literal XMEM$S_FILL_14 = 8;             !  Filler
macro XMEM$L_IFLG4 = 64,0,32,0 %;       !  INTLK FLAG 4  REGISTER
macro XMEM$L_IFLG5 = 68,0,32,0 %;       !  INTLK FLAG 5  REGISTER
macro XMEM$L_IFLG6 = 72,0,32,0 %;       !  INTLK FLAG 6  REGISTER
macro XMEM$L_IFLG7 = 76,0,32,0 %;       !  INTLK FLAG 7  REGISTER
macro XMEM$B_FILL_15 = 80,0,0,1 %;
literal XMEM$S_FILL_15 = 48;            !  Filler
macro XMEM$L_IFLG8 = 128,0,32,0 %;      !  INTLK FLAG 8  REGISTER
macro XMEM$L_IFLG9 = 132,0,32,0 %;      !  INTLK FLAG 9  REGISTER
macro XMEM$L_IFLG10 = 136,0,32,0 %;     !  INTLK FLAG 10 REGISTER
macro XMEM$L_IFLG11 = 140,0,32,0 %;     !  INTLK FLAG 11 REGISTER
macro XMEM$B_FILL_16 = 144,0,0,1 %;
literal XMEM$S_FILL_16 = 112;           !  Filler
macro XMEM$L_IFLG12 = 256,0,32,0 %;     !  INTLK FLAG 12 REGISTER
macro XMEM$L_IFLG13 = 260,0,32,0 %;     !  INTLK FLAG 13 REGISTER
macro XMEM$L_IFLG14 = 264,0,32,0 %;     !  INTLK FLAG 14 REGISTER
macro XMEM$L_IFLG15 = 268,0,32,0 %;     !  INTLK FLAG 15 REGISTER
 
!*** MODULE $XMEM2DEF ***
! +
!  XMA-2 Memory Node Registers
! -
literal XMEM2_SEADR$M_INTLV = 3;
literal XMEM2_SEADR$M_INTLVADDR = 224;
literal XMEM2_SEADR$M_SADR = 7936;
literal XMEM2_SEADR$M_TOP = 67108864;
literal XMEM2_SEADR$M_FILL_4 = 402653184;
literal XMEM2_MCTL1$M_DIAGBTS = 255;
literal XMEM2_MCTL1$M_MWRITER = 1024;
literal XMEM2_MCTL1$M_UNLOCKERR = 2048;
literal XMEM2_MCTL1$M_ENPROTECT = 8192;
literal XMEM2_MCTL1$M_MEMVAL = 16384;
literal XMEM2_MCTL1$M_INHCRD = 32768;
literal XMEM2_MCTL1$M_RAMTYPE = 196608;
literal XMEM2_MCTL1$M_MEMSIZE = 536608768;
literal XMEM2_MCTL1$M_ECCDIS = 536870912;
literal XMEM2_MCTL1$M_ECCDIAG = 1073741824;
literal XMEM2_MCTL1$M_ERRSUM = -2147483648;
literal XMEM2_MECER$M_ERRSYND = 255;
literal XMEM2_MECER$M_CMD_CODE = 61440;
literal XMEM2_MECER$M_CMD_ID = 4128768;
literal XMEM2_MECER$M_COLUMNPERR = 33554432;
literal XMEM2_MECER$M_ROWPERR = 67108864;
literal XMEM2_MECER$M_BWRITERR = 134217728;
literal XMEM2_MECER$M_CRDERR = 536870912;
literal XMEM2_MECER$M_DATASEO = 1073741824;
literal XMEM2_MECER$M_DATARER = -2147483648;
literal XMEM2_MCTL2$M_SUPRESS = 3;
literal XMEM2_MCTL2$M_REFRESH = 28;
literal XMEM2_MCTL2$M_DSBLHOLD = 32;
literal XMEM2_MCTL2$M_RFRSHERR = 65536;
literal XMEM2_MCTL2$M_FORCE_REFRESH = 131072;
literal XMEM2_TCY$M_REF_REQ = 1;
literal XMEM2_TCY$M_DATA_ECC_TEST = 2;
literal XMEM2_TCY$M_BLOCK_ECC_TEST = 4;
literal XMEM2_TCY$M_IGNORE_BLOCK_ECC = 8;
literal XMEM2_TCY$M_IGNORE_DATA_ECC = 16;
literal XMEM2_TCY$M_TCY_ENAREF = 1073741824;
literal XMEM2_TCY$M_TCY_DISREF = -2147483648;
literal XMEM2_BECER$M_BLOCKSYND = 31;
literal XMEM2_BECER$M_BLOCKSTID = 480;
literal XMEM2_BECER$M_BLOCKSTCOD = 1536;
literal XMEM2_BECER$M_CMD_CODE = 61440;
literal XMEM2_BECER$M_CMD_ID = 4128768;
literal XMEM2_BECER$M_TBB = 16777216;
literal XMEM2_BECER$M_COLUMNPERR = 33554432;
literal XMEM2_BECER$M_ROWPERR = 67108864;
literal XMEM2_BECER$M_BWRITERR = 134217728;
literal XMEM2_BECER$M_BLKCRDERR = 536870912;
literal XMEM2_BECER$M_BLOCKSEO = 1073741824;
literal XMEM2_BECER$M_BLOCKRER = -2147483648;
literal XMEM2_ENADR$M_TOP = 65536;
literal XMEM2_INTLV$M_INTLV_MODE = 3;
literal XMEM2_INTLV$M_INTLV_ADDR = 224;
literal XMEM2_INTLV$M_INTLV_SEG = 2031616;
literal XMEM2_MCTL3$M_TRIG_MODE = 32767;
literal XMEM2_MCTL3$M_TRIG_ENAB = 32768;
literal XMEM2_MCTL3$M_INCON_ERR = 8323072;
literal XMEM2_MCTL3$M_INV_UPDATE = 536870912;
literal XMEM2_MCTL3$M_UPDATE_ENA = 1073741824;
literal XMEM2_MCTL3$M_ES = -2147483648;
literal XMEM2_MCTL4$M_BLOCKSYND = 31;
literal XMEM2_MCTL4$M_BLOCKSTID = 480;
literal XMEM2_MCTL4$M_BLOCKSTCOD = 1536;
literal XMEM2_MCTL4$M_OWNSEQ_ERR = 2048;
literal XMEM2_MCTL4$M_MWRITER = 16384;
literal XMEM2_MCTL4$M_MODPOP = 32768;
literal XMEM2_MCTL4$M_RAMTYPE = 196608;
literal XMEM2_MCTL4$M_MEMSIZE = 8126464;
literal XMEM2_MCTL4$M_ECCDIS = 536870912;
literal XMEM2_MCTL4$M_ECCDIAG = 1073741824;
literal XMEM2_MCTL4$M_ES = -2147483648;
literal XMEM2_BSCTL$M_STATE_ECC = 31;
literal XMEM2_BSCTL$M_CMD_ID = 480;
literal XMEM2_BSCTL$M_STATE = 1536;
literal XMEM2_BSCTL$M_ACCMODE = 1610612736;
literal XMEM2_BSCTL$M_PORT_ENA = -2147483648;
literal XMEM2_EECTL$M_DATA = 255;
literal XMEM2_EECTL$M_ADDR = 134152192;
literal XMEM2_EECTL$M_OPERATION = -1073741824;
literal XMEM2_TMOER$M_MODE = 1;
literal XMEM2_TMOER$M_DISABLE = 16384;
literal XMEM2_TMOER$M_SECOND_TMO = 536870912;
literal XMEM2_TMOER$M_TMO = 1073741824;
literal XMEM2$S_XMEM2DEF = 120;
macro XMEM2$L_SEADR = 16,0,32,0 %;      ! Start/End Address Register
macro XMEM2_SEADR$V_INTLV = 16,0,2,0 %;
literal XMEM2_SEADR$S_INTLV = 2;        !  How many ways interleaved
macro XMEM2_SEADR$V_INTLVADDR = 16,5,3,0 %;
literal XMEM2_SEADR$S_INTLVADDR = 3;    !  Interleave address bits
macro XMEM2_SEADR$V_SADR = 16,8,5,0 %;
literal XMEM2_SEADR$S_SADR = 5;         !  Starting address
macro XMEM2_SEADR$V_EADR = 16,21,5,0 %;
literal XMEM2_SEADR$S_EADR = 5;         !  Ending address
macro XMEM2_SEADR$V_TOP = 16,26,1,0 %;  !  Top of 512Mb memory
macro XMEM2$L_MCTL1 = 20,0,32,0 %;      !  Memory Control Reg. 1
macro XMEM2_MCTL1$V_DIAGBTS = 20,0,8,0 %;
literal XMEM2_MCTL1$S_DIAGBTS = 8;      !  Used during ECC diag cycles
macro XMEM2_MCTL1$V_MWRITER = 20,10,1,0 %; !  RDS on masked write
macro XMEM2_MCTL1$V_UNLOCKERR = 20,11,1,0 %; !  Unlock SEQ error
macro XMEM2_MCTL1$V_ENPROTECT = 20,13,1,0 %; !  EN protect mode
macro XMEM2_MCTL1$V_MEMVAL = 20,14,1,0 %; !  Memory contents valid
macro XMEM2_MCTL1$V_INHCRD = 20,15,1,0 %; !  Inhib. CRD reporting
macro XMEM2_MCTL1$V_RAMTYPE = 20,16,2,0 %;
literal XMEM2_MCTL1$S_RAMTYPE = 2;      !  Size of RAM
macro XMEM2_MCTL1$V_MEMSIZE = 20,18,11,0 %;
literal XMEM2_MCTL1$S_MEMSIZE = 11;     !  Size in 256KB increments
macro XMEM2_MCTL1$V_ECCDIS = 20,29,1,0 %; !  Used with following bit
macro XMEM2_MCTL1$V_ECCDIAG = 20,30,1,0 %; !  ECC diagnostic mode
macro XMEM2_MCTL1$V_ERRSUM = 20,31,1,0 %; !  Error summary(includes MECER)
macro XMEM2$L_MECER = 24,0,32,0 %;      !  Memory ECC Error Register
macro XMEM2_MECER$V_ERRSYND = 24,0,8,0 %;
literal XMEM2_MECER$S_ERRSYND = 8;      !  Error syndrome
macro XMEM2_MECER$V_CMD_CODE = 24,12,4,0 %;
literal XMEM2_MECER$S_CMD_CODE = 4;     !  Command code
macro XMEM2_MECER$V_CMD_ID = 24,16,6,0 %;
literal XMEM2_MECER$S_CMD_ID = 6;       !  Commander ID
macro XMEM2_MECER$V_COLUMNPERR = 24,25,1,0 %; !  Column parity error
macro XMEM2_MECER$V_ROWPERR = 24,26,1,0 %; !  Row parity error
macro XMEM2_MECER$V_BWRITERR = 24,27,1,0 %; !  Byte write error
macro XMEM2_MECER$V_CRDERR = 24,29,1,0 %; !  CRD error occured
macro XMEM2_MECER$V_DATASEO = 24,30,1,0 %; !  Second data error occured
macro XMEM2_MECER$V_DATARER = 24,31,1,0 %; !  RER on data read
macro XMEM2$L_MECEA = 28,0,32,0 %;      !  Memory ECC Error Address Register
macro XMEM2_MECEA$V_ERRADDR = 28,3,29,0 %;
literal XMEM2_MECEA$S_ERRADDR = 29;
macro XMEM2$L_MCTL2 = 48,0,32,0 %;      !  Memory Control Reg. 2
macro XMEM2_MCTL2$V_SUPRESS = 48,0,2,0 %;
literal XMEM2_MCTL2$S_SUPRESS = 2;      !  ARB suppress control
macro XMEM2_MCTL2$V_REFRESH = 48,2,3,0 %;
literal XMEM2_MCTL2$S_REFRESH = 3;      !  Refresh rate
macro XMEM2_MCTL2$V_DSBLHOLD = 48,5,1,0 %; !  Disable hold
macro XMEM2_MCTL2$V_RFRSHERR = 48,16,1,0 %; !  Refresh error 
macro XMEM2_MCTL2$V_FORCE_REFRESH = 48,17,1,0 %; !  Forces refresh		
macro XMEM2$L_TCY = 52,0,32,0 %;        !  TCY tester register
macro XMEM2_TCY$V_REF_REQ = 52,0,1,0 %; !  Refresh request
macro XMEM2_TCY$V_DATA_ECC_TEST = 52,1,1,0 %; !  Data ECC test
macro XMEM2_TCY$V_BLOCK_ECC_TEST = 52,2,1,0 %; !  Block state ECC test
macro XMEM2_TCY$V_IGNORE_BLOCK_ECC = 52,3,1,0 %; !  Ignore block ecc
macro XMEM2_TCY$V_IGNORE_DATA_ECC = 52,4,1,0 %; !  Ignore data ecc
macro XMEM2_TCY$V_TCY_ENAREF = 52,30,1,0 %; !  Enable refresh
macro XMEM2_TCY$V_TCY_DISREF = 52,31,1,0 %; !  Disable refresh
macro XMEM2$L_BECER = 56,0,32,0 %;      !  Block state ECC error reg.
macro XMEM2_BECER$V_BLOCKSYND = 56,0,5,0 %;
literal XMEM2_BECER$S_BLOCKSYND = 5;    !  Block Error syndrome
macro XMEM2_BECER$V_BLOCKSTID = 56,5,4,0 %;
literal XMEM2_BECER$S_BLOCKSTID = 4;    !  Block state id
macro XMEM2_BECER$V_BLOCKSTCOD = 56,9,2,0 %;
literal XMEM2_BECER$S_BLOCKSTCOD = 2;   !  Block state code
macro XMEM2_BECER$V_CMD_CODE = 56,12,4,0 %;
literal XMEM2_BECER$S_CMD_CODE = 4;     !  Command code
macro XMEM2_BECER$V_CMD_ID = 56,16,6,0 %;
literal XMEM2_BECER$S_CMD_ID = 6;       !  Commander ID
macro XMEM2_BECER$V_TBB = 56,24,1,0 %;  !  Tag bad block
macro XMEM2_BECER$V_COLUMNPERR = 56,25,1,0 %; !  Column parity error
macro XMEM2_BECER$V_ROWPERR = 56,26,1,0 %; !  Row parity error
macro XMEM2_BECER$V_BWRITERR = 56,27,1,0 %; !  Byte write error
macro XMEM2_BECER$V_BLKCRDERR = 56,29,1,0 %; !  Block CRD error occured
macro XMEM2_BECER$V_BLOCKSEO = 56,30,1,0 %; !  Second block error occured
macro XMEM2_BECER$V_BLOCKRER = 56,31,1,0 %; !  RER on block read
macro XMEM2$L_BECEA = 60,0,32,0 %;      !  Block ECC Error Address Register
macro XMEM2_BECEA$V_ERRADDR = 60,3,29,0 %;
literal XMEM2_BECEA$S_ERRADDR = 29;
macro XMEM2$L_STADR = 80,0,32,0 %;      !  Starting Address Register
macro XMEM2_STADR$V_STADDR = 80,6,10,0 %;
literal XMEM2_STADR$S_STADDR = 10;      !  Starting address
macro XMEM2$L_ENADR = 84,0,32,0 %;      !  Ending Address Register
macro XMEM2_ENADR$V_ENADDR = 84,6,10,0 %;
literal XMEM2_ENADR$S_ENADDR = 10;      !  Ending address
macro XMEM2_ENADR$V_TOP = 84,16,1,0 %;  !  Top 16Gb
macro XMEM2$L_INTLV = 88,0,32,0 %;      !  Block state ECC error reg.
macro XMEM2_INTLV$V_INTLV_MODE = 88,0,2,0 %;
literal XMEM2_INTLV$S_INTLV_MODE = 2;   !  Interleave mode
macro XMEM2_INTLV$V_INTLV_ADDR = 88,5,3,0 %;
literal XMEM2_INTLV$S_INTLV_ADDR = 3;   !  Interleave address
macro XMEM2_INTLV$V_INTLV_SEG = 88,16,5,0 %;
literal XMEM2_INTLV$S_INTLV_SEG = 5;    !  Interleave segment
macro XMEM2$L_MCTL3 = 92,0,32,0 %;      !  Memory control register 3
macro XMEM2_MCTL3$V_TRIG_MODE = 92,0,15,0 %;
literal XMEM2_MCTL3$S_TRIG_MODE = 15;   !  Trigger mode
macro XMEM2_MCTL3$V_TRIG_ENAB = 92,15,1,0 %; !  Trigger enable
macro XMEM2_MCTL3$V_INCON_ERR = 92,16,7,0 %;
literal XMEM2_MCTL3$S_INCON_ERR = 7;    !  Inconsistency errors 
macro XMEM2_MCTL3$V_INV_UPDATE = 92,29,1,0 %; !  Invalid EEPROM update
macro XMEM2_MCTL3$V_UPDATE_ENA = 92,30,1,0 %; !  EEPROM update enable
macro XMEM2_MCTL3$V_ES = 92,31,1,0 %;   !  Error summary
macro XMEM2$L_MCTL4 = 96,0,32,0 %;      !  Memory control register 4
macro XMEM2_MCTL4$V_BLOCKSYND = 96,0,5,0 %;
literal XMEM2_MCTL4$S_BLOCKSYND = 5;    !  Block Error syndrome
macro XMEM2_MCTL4$V_BLOCKSTID = 96,5,4,0 %;
literal XMEM2_MCTL4$S_BLOCKSTID = 4;    !  Block state id
macro XMEM2_MCTL4$V_BLOCKSTCOD = 96,9,2,0 %;
literal XMEM2_MCTL4$S_BLOCKSTCOD = 2;   !  Block state code
macro XMEM2_MCTL4$V_OWNSEQ_ERR = 96,11,1,0 %; !  Ownership sequence error
macro XMEM2_MCTL4$V_MWRITER = 96,14,1,0 %; !  RDS on masked write
macro XMEM2_MCTL4$V_MODPOP = 96,15,1,0 %; !  Module population
macro XMEM2_MCTL4$V_RAMTYPE = 96,16,2,0 %;
literal XMEM2_MCTL4$S_RAMTYPE = 2;      !  Size of RAM
macro XMEM2_MCTL4$V_MEMSIZE = 96,18,5,0 %;
literal XMEM2_MCTL4$S_MEMSIZE = 5;      !  Memory size
macro XMEM2_MCTL4$V_ECCDIS = 96,29,1,0 %; !  Used with following bit
macro XMEM2_MCTL4$V_ECCDIAG = 96,30,1,0 %; !  ECC diagnostic mode
macro XMEM2_MCTL4$V_ES = 96,31,1,0 %;   !  Error summary(includes MECER)
macro XMEM2$L_BSCTL = 104,0,32,0 %;     !  Block state control register
macro XMEM2_BSCTL$V_STATE_ECC = 104,0,5,0 %;
literal XMEM2_BSCTL$S_STATE_ECC = 5;    !  Block state ECC
macro XMEM2_BSCTL$V_CMD_ID = 104,5,4,0 %;
literal XMEM2_BSCTL$S_CMD_ID = 4;       !  Block commander id
macro XMEM2_BSCTL$V_STATE = 104,9,2,0 %;
literal XMEM2_BSCTL$S_STATE = 2;        !  Block state
macro XMEM2_BSCTL$V_ACCMODE = 104,29,2,0 %;
literal XMEM2_BSCTL$S_ACCMODE = 2;      !  Block state access command
macro XMEM2_BSCTL$V_PORT_ENA = 104,31,1,0 %; !  Block state port enable
macro XMEM2$L_BSADR = 108,0,32,0 %;     !  Block State Address Register
macro XMEM2_BSADR$V_BSADDR = 108,5,27,0 %;
literal XMEM2_BSADR$S_BSADDR = 27;      !  Block address
macro XMEM2$L_EECTL = 112,0,32,0 %;     !  Block state control register
macro XMEM2_EECTL$V_DATA = 112,0,8,0 %;
literal XMEM2_EECTL$S_DATA = 8;         !  Data byte
macro XMEM2_EECTL$V_ADDR = 112,16,11,0 %;
literal XMEM2_EECTL$S_ADDR = 11;        !  EEPROM address
macro XMEM2_EECTL$V_OPERATION = 112,30,2,0 %;
literal XMEM2_EECTL$S_OPERATION = 2;    !  Initiate EEPROM operation
macro XMEM2$L_TMOER = 116,0,32,0 %;     !  Block state control register
macro XMEM2_TMOER$V_MODE = 116,0,1,0 %; !  Timeout counter mode
macro XMEM2_TMOER$V_DISABLE = 116,14,1,0 %; !  Timeout counter disabled
macro XMEM2_TMOER$V_SECOND_TMO = 116,29,1,0 %; !  Second time-out occured
macro XMEM2_TMOER$V_TMO = 116,30,1,0 %; !  Time-out occured
 
!*** MODULE $XMIDEF ***
! +
!  XMI Required Registers
! -
literal XMI$C_IO_CLASS = 32;
literal XMI$C_MEMORY_CLASS = 64;
literal XMI$C_CPU_CLASS = 128;
! 
literal XMI$C_READ = 1;
literal XMI$C_IREAD = 2;
literal XMI$C_UWMASK = 6;
literal XMI$C_WMASK = 7;
literal XMI$C_INTR = 8;
literal XMI$C_IDENT = 9;
literal XMI$C_IVINTR = 15;
!  XMI-2 additional commands
literal XMI$C_OREAD = 3;
literal XMI$C_DWMASK = 4;
literal XMI$C_TBDATA = 11;
literal XMI$M_EMP = 2;
literal XMI$M_DXTO = 4;
literal XMI$M_EHWW = 8;
literal XMI$M_FCMD = 15;
literal XMI$M_FCID = 1008;
literal XMI$M_STF = 1024;
literal XMI$M_ETF = 2048;
literal XMI$M_NSES = 4096;
literal XMI$M_TTO = 8192;
literal XMI$M_TE = 16384;
literal XMI$M_CNAK = 32768;
literal XMI$M_RER = 65536;
literal XMI$M_RSE = 131072;
literal XMI$M_NRR = 262144;
literal XMI$M_CRD = 524288;
literal XMI$M_WDNAK = 1048576;
literal XMI$M_RIDNAK = 2097152;
literal XMI$M_WSE = 4194304;
literal XMI$M_PE = 8388608;
literal XMI$M_IPE = 16777216;
literal XMI$M_WEI = 33554432;
literal XMI$M_XFAULT = 67108864;
literal XMI$M_CC = 134217728;
literal XMI$M_XBAD = 268435456;
literal XMI$M_NHALT = 536870912;
literal XMI$M_NRESET = 1073741824;
literal XMI$M_ES = -2147483648;
literal XMI$M_SLEEP_MODE = 1073741824;
literal XMI$M_FAEM_ENABLE = -2147483648;
literal XMI$M_LOCMOD = 3;
literal XMI$M_XBADD = 4;
literal XMI$M_CRDID = 65536;
literal XMI$M_CCID = 131072;
literal XMI$M_SEO = 1;
literal XMI$M_OLR = 2;
literal XMI$M_URR = 4;
literal XMI$S_XMIDEF = 1592;
macro XMI$L_XDEV = 0,0,32,0 %;          !  XMI Device register
macro XMI$W_DTYPE = 0,0,16,0 %;         !  Device type
macro XMI$B_DEV_ID = 0,0,8,0 %;         !  Device ID
macro XMI$B_CLASS = 1,0,8,0 %;          !  Device class
macro XMI$W_DREV = 2,0,16,0 %;          !  Device Revision
!  XMI commands
! 
macro XMI$L_XBE = 4,0,32,0 %;           !  XMI Bus Error register
macro XMIDEF$$_FILL_1 = 4,0,1,0 %;      !  Reserved bit
macro XMI$V_EMP = 4,1,1,0 %;            !  Enable More Protocol
macro XMI$V_DXTO = 4,2,1,0 %;           !  Disable XMI Timeout
macro XMI$V_EHWW = 4,3,1,0 %;           !  Enable HexaWord Write
macro XMI$V_FCMD = 4,0,4,0 %;
literal XMI$S_FCMD = 4;                 !  Failing Command (Pre V1.4)
macro XMI$V_FCID = 4,4,6,0 %;
literal XMI$S_FCID = 6;                 !  Failing Commander ID
macro XMI$V_STF = 4,10,1,0 %;           !  Self-test fail
macro XMI$V_ETF = 4,11,1,0 %;           !  Extended Test fail
macro XMI$V_NSES = 4,12,1,0 %;          !  Node-specific Err. Summary
macro XMI$V_TTO = 4,13,1,0 %;           !  Transaction timeout
macro XMI$V_TE = 4,14,1,0 %;            !  Transmit error
macro XMI$V_CNAK = 4,15,1,0 %;          !  Command NoAck
macro XMI$V_RER = 4,16,1,0 %;           !  Read Error Response
macro XMI$V_RSE = 4,17,1,0 %;           !  Read Sequence Error
macro XMI$V_NRR = 4,18,1,0 %;           !  No Read Response
macro XMI$V_CRD = 4,19,1,0 %;           !  Corrected Read Data
macro XMI$V_WDNAK = 4,20,1,0 %;         !  Write Data NoACk
macro XMI$V_RIDNAK = 4,21,1,0 %;        !  Read/IDENT Data NoAck
macro XMI$V_WSE = 4,22,1,0 %;           !  Write Sequence Error
macro XMI$V_PE = 4,23,1,0 %;            !  Parity Error
macro XMI$V_IPE = 4,24,1,0 %;           !  Inconsistent Parity Error
macro XMI$V_WEI = 4,25,1,0 %;           !  Write Error Interrupt
macro XMI$V_XFAULT = 4,26,1,0 %;        !  XMI Fault
macro XMI$V_CC = 4,27,1,0 %;            !  Corrected Confirmation
macro XMI$V_XBAD = 4,28,1,0 %;          !  XMI Bad
macro XMI$V_NHALT = 4,29,1,0 %;         !  Node Halt
macro XMI$V_NRESET = 4,30,1,0 %;        !  Node Reset
macro XMI$V_ES = 4,31,1,0 %;            !  Error Summary
macro XMI$L_XFAD = 8,0,32,0 %;          !  XMI Failing Address register
macro XMI$L_XFADR0 = 8,0,32,0 %;        !  XMI Failing Address register
macro XMI$V_FADR = 8,0,30,0 %;
literal XMI$S_FADR = 30;                !  Failing Address
macro XMI$V_FLN = 8,30,2,0 %;
literal XMI$S_FLN = 2;                  !  Failing length
!   register. This is identical
!   to other node's XFAER except
!   that for the XJA it is here
!   at bb+C rather than at bb+2C.
macro XMI$L_XJA_XFADRB = 12,0,32,0 %;   !  XJA Failing Address register EXt.
!  For the field definitions, use
!   those defined below for XFAER.
macro XMI$L_XGPR = 12,0,32,0 %;         !  XMI General Purpose register
macro XMI$L_XJA_XGPR = 16,0,32,0 %;     !  XJA's General Purpose Register.
macro XMI$L_XCOMM = 16,0,32,0 %;        !  XMI Communication register
macro XMI$L_XJA_XFAEMCTL = 20,0,32,0 %; !  XJA's FAEM Control Register
macro XMI$V_XBI_WINDOW_MASK = 20,0,16,0 %;
literal XMI$S_XBI_WINDOW_MASK = 16;     !  XBI Window Space Mask
macro XMI$V_SLEEP_MODE = 20,30,1,0 %;   !  Set Sleep Mode
macro XMI$V_FAEM_ENABLE = 20,31,1,0 %;  !  Enable FAEM
macro XMI$L_XJA_AOSTS = 24,0,32,0 %;    !  XJA's Add On Self Test Status Register
macro XMI$L_XJA_SERNUM = 28,0,32,0 %;   !  XJA's Serial Number Register
macro XMI$V_SERIAL_NUMBER = 28,0,17,0 %;
literal XMI$S_SERIAL_NUMBER = 17;       !  Serial Number
macro XMI$V_PLANT = 28,17,4,0 %;
literal XMI$S_PLANT = 4;                !  Manufacturing Plant.
macro XMI$V_REV = 28,21,4,0 %;
literal XMI$S_REV = 4;                  !  Revision Level.
macro XMI$V_VARI = 28,25,4,0 %;
literal XMI$S_VARI = 4;                 !  Variation.
macro XMI$L_NSCSR = 28,0,32,0 %;        !  XMI-1 Node specific CSR
macro XMI$L_NSCSR0 = 28,0,32,0 %;       !  XMI-2 Node specific CSR
macro XMI$L_XBCR = 36,0,32,0 %;         !  XMI-1 Bus control register
macro XMI$L_XBCR0 = 36,0,32,0 %;        !  XMI-2 Bus control register
macro XMI$V_LOCMOD = 36,0,2,0 %;
literal XMI$S_LOCMOD = 2;               !  Lockout mode bits
macro XMI$V_XBADD = 36,2,1,0 %;         !  XMI Bad Drive
macro XMI$V_CRDID = 36,16,1,0 %;        !  Corrected Read Int. disable
macro XMI$V_CCID = 36,17,1,0 %;         !  Corrected Conf. Int. disable
macro XMI$L_XFAER = 44,0,32,0 %;        !  XMI-1 Failing Address Ext register
macro XMI$L_XFAER0 = 44,0,32,0 %;       !  XMI-2 Failing Address Ext register
macro XMI$V_MASK = 44,0,16,0 %;
literal XMI$S_MASK = 16;                !  Failing Mask
macro XMI$V_ADDREXT = 44,16,10,0 %;
literal XMI$S_ADDREXT = 10;             !  Failing Address Extension bits [38:29]
macro XMIDEF$$_FILL_3 = 44,26,2,0 %;
literal XMIDEFS_FILL_3 = 2;             !  Reserved bits
macro XMI$V_FCMDX = 44,28,4,0 %;
literal XMI$S_FCMDX = 4;                !  Failing Command
!  End of XMI-1 Register.  The addition register only apply to XMI-2.
macro XMI$L_XBEER = 52,0,32,0 %;        !  XMI-1 Bus Error extendion
macro XMI$L_XBEER0 = 52,0,32,0 %;       !  XMI-2 Bus Error extendion
macro XMI$V_SEO = 52,0,1,0 %;           !  Second Error Occured
macro XMI$V_OLR = 52,1,1,0 %;           !  Only LOC Response
macro XMI$V_URR = 52,2,1,0 %;           !  Unexpected Read Response
macro XMI$L_XBE1 = 516,0,32,0 %;        !  XMI-2 Bus Error register
macro XMI$L_XFAD1 = 520,0,32,0 %;       !  XMI-2 Failing Addr register
macro XMI$L_NSCSR1 = 540,0,32,0 %;      !  XMI-2 Node specific CSR
macro XMI$L_XBCR1 = 548,0,32,0 %;       !  XMI-2 Bus control register
macro XMI$L_XFAER1 = 556,0,32,0 %;      !  XMI-2 Failing addr. extension
macro XMI$L_XBEER1 = 564,0,32,0 %;      !  XMI-2 Bus Error extendion
!  
macro XMI$L_XBE2 = 1028,0,32,0 %;       !  XMI-2 Bus Error register
macro XMI$L_XFAD2 = 1032,0,32,0 %;      !  XMI-2 Failing Addr register
macro XMI$L_NSCSR2 = 1052,0,32,0 %;     !  XMI-2 Node specific CSR
macro XMI$L_XBCR2 = 1060,0,32,0 %;      !  XMI-2 Bus control register
macro XMI$L_XFAER2 = 1068,0,32,0 %;     !  XMI-2 Failing addr. extension
macro XMI$L_XBEER2 = 1076,0,32,0 %;     !  XMI-2 Bus Error extendion
!  
macro XMI$L_XBE3 = 1540,0,32,0 %;       !  XMI-2 Bus Error register
macro XMI$L_XFAD3 = 1544,0,32,0 %;      !  XMI-2 Failing Addr register
macro XMI$L_NSCSR3 = 1564,0,32,0 %;     !  XMI-2 Node specific CSR
macro XMI$L_XBCR3 = 1572,0,32,0 %;      !  XMI-2 Bus control register
macro XMI$L_XFAER3 = 1580,0,32,0 %;     !  XMI-2 Failing addr. extension
macro XMI$L_XBEER3 = 1588,0,32,0 %;     !  XMI-2 Bus Error extendion
 
!*** MODULE $XRPDEF ***
! +
!   XRP Offset Definitions for Registers Accessible Through XMI Private
!   Space.  Note that in making these registers available in virtual space,
!   we have only mapped real registers.  Therefore these virtual offsets are
!   different than the hardware physical offsets.
! -
literal XRP$M_LED1 = 1;
literal XRP$M_LED2 = 2;
literal XRP$M_LED3 = 4;
literal XRP$M_LED4 = 8;
literal XRP$M_LED5 = 16;
literal XRP$M_LED6 = 32;
literal XRP$M_LEDSTV = 64;
literal XRP$M_LEDSTP = 128;
literal XRP$M_TERM_SEL = 3;
literal XRP$M_TERM_ENA = 4;
literal XRP$M_FORCE_P2_PARITY = 8;
literal XRP$M_FORCE_P1_PARITY = 16;
literal XRP$M_FORCE_P0_PARITY = 32;
literal XRP$C_AUX_CONSOLE = 0;          !  Auxilary console
literal XRP$C_SYSTEM_CONSOLE = 1;       !  System console
literal XRP$C_AUX_LOOPBACK = 2;         !  Auxilary console loopback
literal XRP$C_SYSTEM_LOOPBACK = 3;      !  System console loopback
literal XRP$M_XCAREV = 15;
literal XRP$M_SE = 16;
literal XRP$M_WBD = 256;
literal XRP$M_ARD = 512;
literal XRP$M_ESI = 1024;
literal XRP$M_IPID = 2048;
literal XRP$M_TOS = 4096;
literal XRP$M_RAMSPD = 8192;
literal XRP$M_CRDID = 16384;
literal XRP$M_CCID = 32768;
literal XRP$M_WS = 65536;
literal XRP$M_BPD = 131072;
literal XRP$M_BP = 262144;
literal XRP$M_CNAKR = 524288;
literal XRP$M_UWP = 1048576;
literal XRP$M_LOCKOUT = 6291456;
literal XRP$M_LTS = 8388608;
literal XRP$M_SSCIPL = 50331648;
literal XRP$M_WD = 67108864;
literal XRP$M_CFE = 134217728;
literal XRP$M_WDPE = 268435456;
literal XRP$M_XDPPE = 1073741824;
literal XRP$M_XCAPE = -2147483648;
literal XRP$M_RWT = 1073741824;
literal XRP$M_BTO = -2147483648;
literal XRP$M_CREG0_SEL = 1;
literal XRP$M_CREG1_SEL = 2;
literal XRP$M_CREG_DATA = 1020;
literal XRP$M_NODE_ID = 15;
literal XRP$M_FP_BOOT_DISABLE = 16;
literal XRP$M_FP_EEPROM_ENABLE = 32;
literal XRP$M_XACLO = 64;
literal XRP$M_STL_DISABLE = 128;
literal XRP$M_SCAN_TEST_DISABLE = 256;
literal XRP$M_CONSOLE_ENABLE = -2147483648;
literal XRP$S_XRPDEF = 99840;
macro XRP$L_CREGWE = 0,0,32,0 %;        !  XRP CREG[0|1] write enable. 
macro XRP$L_CREG0 = 0,0,32,0 %;         !  XRP CREG0 write enable. 
macro XRP$V_LED1 = 0,0,1,0 %;           !  LED 1
macro XRP$V_LED2 = 0,1,1,0 %;           !  LED 2
macro XRP$V_LED3 = 0,2,1,0 %;           !  LED 3
macro XRP$V_LED4 = 0,3,1,0 %;           !  LED 4
macro XRP$V_LED5 = 0,4,1,0 %;           !  LED 5
macro XRP$V_LED6 = 0,5,1,0 %;           !  LED 6
macro XRP$V_LEDSTV = 0,6,1,0 %;         !  LED 7, Selftest Valid
macro XRP$V_LEDSTP = 0,7,1,0 %;         !  LED 8, Selftest Passed
macro XRP$L_CREG1 = 0,0,32,0 %;         !  XRP CREG1 write enable. 
macro XRP$V_TERM_SEL = 0,0,2,0 %;
literal XRP$S_TERM_SEL = 2;             !  Console terminal mode select
macro XRP$V_TERM_ENA = 0,2,1,0 %;       !  Console terminal enable
macro XRP$V_FORCE_P2_PARITY = 0,3,1,0 %; !  Force P2 parity error
macro XRP$V_FORCE_P1_PARITY = 0,4,1,0 %; !  Force P1 parity error
macro XRP$V_FORCE_P0_PARITY = 0,5,1,0 %; !  Force P0 parity error
!  Console terminal modes
macro XRP$L_RCSR = 16,0,32,0 %;         !  XRP Control/Status register
macro XRP$V_XCAREV = 16,0,4,0 %;
literal XRP$S_XCAREV = 4;               !  XCA revision
macro XRP$V_SE = 16,4,1,0 %;            !  Second Error (2ERR) bit
macro XRP$V_WBD = 16,8,1,0 %;           !  Write Buffer Disable
macro XRP$V_ARD = 16,9,1,0 %;           !  Auto Retry Disable
macro XRP$V_ESI = 16,10,1,0 %;          !  Enable Self Invalidates
macro XRP$V_IPID = 16,11,1,0 %;         !  IP Interrupt Disable
macro XRP$V_TOS = 16,12,1,0 %;          !  Timeout Select
macro XRP$V_RAMSPD = 16,13,1,0 %;       !  RAM speed
macro XRP$V_CRDID = 16,14,1,0 %;        !  CRD Interrupt Disable
macro XRP$V_CCID = 16,15,1,0 %;         !  CC Interrupt Disable
macro XRP$V_WS = 16,16,1,0 %;           !  Warm start
macro XRP$V_BPD = 16,17,1,0 %;          !  Boot processor disabled
macro XRP$V_BP = 16,18,1,0 %;           !  Boot processor
macro XRP$V_CNAKR = 16,19,1,0 %;        !  Commander NOACK received
macro XRP$V_UWP = 16,20,1,0 %;          !  Unlock Write Pending
macro XRP$V_LOCKOUT = 16,21,2,0 %;
literal XRP$S_LOCKOUT = 2;              !  Interlock lockout <1:0>
macro XRP$V_LTS = 16,23,1,0 %;          !  Lockout Time Select
macro XRP$V_SSCIPL = 16,24,2,0 %;
literal XRP$S_SSCIPL = 2;               !  RSSC IPL <1:0>
macro XRP$V_WD = 16,26,1,0 %;           !  Write disable
macro XRP$V_CFE = 16,27,1,0 %;          !  Cache Fill Error
macro XRP$V_WDPE = 16,28,1,0 %;         !  Write Data Parity Error
macro XRP$V_XDPPE = 16,30,1,0 %;        !  XDP Parity Error
macro XRP$V_XCAPE = 16,31,1,0 %;        !  XCA Parity Error
!  +4.
macro XRP$L_SYSTYPE = 516,0,32,0 %;     !  System Type Register
macro XRP$L_SSCBAR = 1024,0,32,0 %;     !  RSSC Base Address Register
macro XRP$L_SSCCNF = 1040,0,32,0 %;     !  RSSC Configuration Register
macro XRP$L_SSCBTR = 1056,0,32,0 %;     !  XRP Control/Status register
macro XRP$V_RWT = 1056,30,1,0 %;        !  Read write timeout
macro XRP$V_BTO = 1056,31,1,0 %;        !  Bus timeout
macro XRP$L_SSCOPRT = 1072,0,32,0 %;    !  RSSC Output Port Register
macro XRP$V_CREG0_SEL = 1072,0,1,0 %;   !  CREG0 select 
macro XRP$V_CREG1_SEL = 1072,1,1,0 %;   !  CREG1 select
macro XRP$V_CREG_DATA = 1072,2,8,0 %;
literal XRP$S_CREG_DATA = 8;            !  CREG data, written to CREGn
!  selected by CREGn_SEL
macro XRP$L_SSCIPRT = 1088,0,32,0 %;    !  RSSC Input Port Register
macro XRP$V_NODE_ID = 1088,0,4,0 %;
literal XRP$S_NODE_ID = 4;              !  XMI node ID
macro XRP$V_FP_BOOT_DISABLE = 1088,4,1,0 %; !  Front panel boot disable sw
macro XRP$V_FP_EEPROM_ENABLE = 1088,5,1,0 %; !  Front panel EEPROM update sw
macro XRP$V_XACLO = 1088,6,1,0 %;       !  XMI AC LO
macro XRP$V_STL_DISABLE = 1088,7,1,0 %; !  Self-test loop disable
macro XRP$V_SCAN_TEST_DISABLE = 1088,8,1,0 %; !  Scan test disable
macro XRP$V_CONSOLE_ENABLE = 1088,31,1,0 %; !  Front-panel console enable
macro XRP$L_TCR0 = 1376,0,32,0 %;
macro XRP$L_TIR0 = 1380,0,32,0 %;
macro XRP$L_TNIR0 = 1384,0,32,0 %;
macro XRP$L_TIVR0 = 1388,0,32,0 %;
macro XRP$L_TCR1 = 1392,0,32,0 %;
macro XRP$L_TIR1 = 1396,0,32,0 %;
macro XRP$L_TNIR1 = 1400,0,32,0 %;
macro XRP$L_TIVR1 = 1404,0,32,0 %;
macro XRP$L_SSCICR = 1528,0,32,0 %;
!  New page
macro XRP$L_IPIVINTR = 1536,0,32,0 %;   !  Interprocessor communication area.
macro XRP$AB_EEPROM = 67072,0,8,0 %;    !  First page of EEPROM
 
!*** MODULE $XSADEF ***
! +      
!  This file contains offset definitions for registers accessible through XMI 
!  private space on the XSA XMI-SCSI adapter.  There are four groups of
!  register accessable through the XSA:
! 
!  	1) XMI required register
! 	2) XII registers
! 	3) Port 0 SII register
! 	4) Port 1 SII register
! 
!  To access these registers, add the Phyical or Virtual offset constant to the
!  base XMI CSR address, then use the appropiate symbolic offsets.
! -
literal XSA$K_XMI_PHY = 0;
literal XSA$K_XMI_VIR = 0;
literal XSA$K_XII_PHY = 4096;
literal XSA$K_XII_VIR = 512;
literal XSA$K_SII0_PHY = 8192;
literal XSA$K_SII0_VIR = 1024;
literal XSA$K_SII1_PHY = 12288;
literal XSA$K_SII1_VIR = 1536;
literal XSA_XSACSR0$M_P0I = 1;
literal XSA_XSACSR0$M_P1I = 2;
literal XSA_XSACSR0$M_XIE = 4;
literal XSA_XSACSR0$M_P0IE = 8;
literal XSA_XSACSR0$M_P1IE = 16;
literal XSA_XSACSR0$M_DME0S = 32;
literal XSA_XSACSR0$M_DME1S = 64;
literal XSA_XSACSR0$M_XIIR = 1920;
literal XSA_XSACSR0$M_XRD = 2048;
literal XSA_XSACSR0$M_P0TPE = 4096;
literal XSA_XSACSR0$M_P1TPE = 8192;
literal XSA_XSACSR0$M_XUE = 16384;
literal XSA_XSACSR0$M_FILL_1 = 134184960;
literal XSA_XSACSR0$M_TTOV = -134217728;
literal XSA_XSADR$M_LPBK0 = 1;
literal XSA_XSADR$M_LPBK1 = 2;
literal XSA_XSADR$M_FBXPL0 = 4;
literal XSA_XSADR$M_FBXPL1 = 8;
literal XSA_XSADR$M_FBXPF = 16;
literal XSA_XSADR$M_FBPI0 = 32;
literal XSA_XSADR$M_FBPI1 = 64;
literal XSA_XSADR$M_FBPC0O = 128;
literal XSA_XSADR$M_FBPC1O = 256;
literal XSA_XSADR$M_FBPPXDO = 512;
literal XSA_XSADR$M_FCCB0B = 1024;
literal XSA_XSADR$M_FCCB1B = 2048;
literal XSA_XSADR$M_FDDB0F = 4096;
literal XSA_XSADR$M_FDDB1F = 8192;
literal XSA_XSADR$M_SLOWCLK = 16384;
literal XSA_XSADR$M_FILL_1 = 98304;
literal XSA_XSADR$M_VSEL = 4063232;
literal XSA_XSADR$M_SMSEL = 29360128;
literal XSA_XSADR$M_SM = 1040187392;
literal XSA_XSADR$M_FILL_2 = 1073741824;
literal XSA_XSADR$M_XIIIS = -2147483648;
literal XSA_XIIICR$M_XIL = 3;
literal XSA_XIIICR$M_XVEC = 65532;
literal XSA_XIIICR$M_XID = -65536;
literal XSA_XIIIESR$M_P0I = 1;
literal XSA_XIIIESR$M_P1I = 2;
literal XSA_XIIIESR$M_FILL_1 = 12;
literal XSA_XIIIESR$M_D0IXC = 16;
literal XSA_XIIIESR$M_D1IXC = 32;
literal XSA_XIIIESR$M_FILL_2 = 192;
literal XSA_XIIIESR$M_I0OPE = 256;
literal XSA_XIIIESR$M_I1OPE = 512;
literal XSA_XIIIESR$M_IEA = 1024;
literal XSA_XIIIESR$M_ISSM = 14336;
literal XSA_XIIIESR$M_WTE = 16384;
literal XSA_XIIIESR$M_XBES = 32768;
literal XSA_XIIIESR$M_I0IPE = 65536;
literal XSA_XIIIESR$M_I1IPE = 131072;
literal XSA_XIIIESR$M_TPEL0 = 262144;
literal XSA_XIIIESR$M_TPEL1 = 524288;
literal XSA_XIIIESR$M_P0O = 1048576;
literal XSA_XIIIESR$M_P0U = 2097152;
literal XSA_XIIIESR$M_P1O = 4194304;
literal XSA_XIIIESR$M_P1U = 8388608;
literal XSA_XIIIESR$M_P0PE = 16777216;
literal XSA_XIIIESR$M_P1PE = 33554432;
literal XSA_XIIIEMR$M_FILL_1 = 7;
literal XSA_XIIIEMR$M_XCM = 8;
literal XSA_XIIIEMR$M_D0IXC = 16;
literal XSA_XIIIEMR$M_D1IXC = 32;
literal XSA_XIIIEMR$M_FILL_2 = 192;
literal XSA_XIIIEMR$M_I0OPE = 256;
literal XSA_XIIIEMR$M_I1OPE = 512;
literal XSA_XIIIEMR$M_IEA = 1024;
literal XSA_XIIIEMR$M_ISSM = 2048;
literal XSA_XIIIEMR$M_FILL_3 = 12288;
literal XSA_XIIIEMR$M_WTE = 16384;
literal XSA_XIIIEMR$M_XBES = 32768;
literal XSA_XIIIEMR$M_I0IPE = 65536;
literal XSA_XIIIEMR$M_I1IPE = 131072;
literal XSA_XIIIEMR$M_TPEL0 = 262144;
literal XSA_XIIIEMR$M_TPEL1 = 524288;
literal XSA_XIIIEMR$M_P0O = 1048576;
literal XSA_XIIIEMR$M_P0U = 2097152;
literal XSA_XIIIEMR$M_P1O = 4194304;
literal XSA_XIIIEMR$M_P1U = 8388608;
literal XSA_XIIIEMR$M_P0PE = 16777216;
literal XSA_XIIIEMR$M_P1PE = 33554432;
literal XSA_P0DATPE$M_P0DATPE = 255;
literal XSA_P0DATPE$M_FILL_1 = 2147483392;
literal XSA_P0DATPE$M_DO = -2147483648;
literal XSA_P0ICR$M_P0IL = 3;
literal XSA_P0ICR$M_P0VEC = 65532;
literal XSA_P0ICR$M_P0ID = -65536;
literal XSA_P1DATPE$M_P1DATPE = 255;
literal XSA_P1DATPE$M_FILL_1 = 2147483392;
literal XSA_P1DATPE$M_DO = -2147483648;
literal XSA_P1ICR$M_P1IL = 3;
literal XSA_P1ICR$M_P1VEC = 65532;
literal XSA_P1ICR$M_P1ID = -65536;
literal XSA_XDATH0$M_P0AE = 255;
literal XSA_XDATH0$M_P0LT = 256;
literal XSA_XDATH0$M_FILL_1 = 65024;
literal XSA_XDATH0$M_P0DEBC = -65536;
literal XSA_XDATH1$M_P1AE = 255;
literal XSA_XDATH1$M_P1LT = 256;
literal XSA_XDATH1$M_FILL_1 = 65024;
literal XSA_XDATH1$M_P1DEBC = -65536;
literal XSA$S_XSADEF = 68;
macro XSA$L_XSACSR0 = 0,0,32,0 %;       !  XSA Control and Status reg.
macro XSA_XSACSR0$V_P0I = 0,0,1,0 %;    !  Initialize Port 0 
macro XSA_XSACSR0$V_P1I = 0,1,1,0 %;    !  Initialize Port 1 
macro XSA_XSACSR0$V_XIE = 0,2,1,0 %;    !  XII Interupt Enable
macro XSA_XSACSR0$V_P0IE = 0,3,1,0 %;   !  Port 0 Interupt Enable
macro XSA_XSACSR0$V_P1IE = 0,4,1,0 %;   !  Port 1 Interupt Enable
macro XSA_XSACSR0$V_DME0S = 0,5,1,0 %;  !  Abort DMA transaction on P0
macro XSA_XSACSR0$V_DME1S = 0,6,1,0 %;  !  Abort DMA transaction on P1
macro XSA_XSACSR0$V_XIIR = 0,7,4,0 %;
literal XSA_XSACSR0$S_XIIR = 4;         !  XII Revision
macro XSA_XSACSR0$V_XRD = 0,11,1,0 %;   !  XMI Retry Disable
macro XSA_XSACSR0$V_P0TPE = 0,12,1,0 %; !  Port 0 Transmit Parity Error
macro XSA_XSACSR0$V_P1TPE = 0,13,1,0 %; !  Port 1 Transmit Parity Error
macro XSA_XSACSR0$V_XUE = 0,14,1,0 %;   !  XMI Update Enable
macro XSA_XSACSR0$V_TTOV = 0,27,5,0 %;
literal XSA_XSACSR0$S_TTOV = 5;         !  Transaction Timeout Value
macro XSA$L_XSADR = 4,0,32,0 %;         !  XDA Diagnostic registers
macro XSA_XSADR$V_LPBK0 = 4,0,1,0 %;    !  Loopback 0
macro XSA_XSADR$V_LPBK1 = 4,1,1,0 %;    !  Loopback 1
macro XSA_XSADR$V_FBXPL0 = 4,2,1,0 %;   !  Xmit inverted partity on LW0
macro XSA_XSADR$V_FBXPL1 = 4,3,1,0 %;   !  Xmit inverted partity on LW1
macro XSA_XSADR$V_FBXPF = 4,4,1,0 %;    !  Force Bad XMI parity F/ID
macro XSA_XSADR$V_FBPI0 = 4,5,1,0 %;    !  Invert parity on II0 bus
macro XSA_XSADR$V_FBPI1 = 4,6,1,0 %;    !  Invert parity on II1 bus
macro XSA_XSADR$V_FBPC0O = 4,7,1,0 %;   !  Bad Parity CCB/DDB 0 outgoing
macro XSA_XSADR$V_FBPC1O = 4,8,1,0 %;   !  Bad Parity CCB/DDB 1 outgoing
macro XSA_XSADR$V_FBPPXDO = 4,9,1,0 %;  !  Bad Parity XMI Data Only
macro XSA_XSADR$V_FCCB0B = 4,10,1,0 %;  !  Force CPU Cmd. Buffer 0 Busy
macro XSA_XSADR$V_FCCB1B = 4,11,1,0 %;  !  Force CPU Cmd. Buffer 1 Busy
macro XSA_XSADR$V_FDDB0F = 4,12,1,0 %;  !  Force DMA Data Buffer 0 Full
macro XSA_XSADR$V_FDDB1F = 4,13,1,0 %;  !  Force DMA Data Buffer 1 Full
macro XSA_XSADR$V_SLOWCLK = 4,14,1,0 %; !  Use slow clock
macro XSA_XSADR$V_VSEL = 4,17,5,0 %;
literal XSA_XSADR$S_VSEL = 5;           !  Select signals output to VBUS
macro XSA_XSADR$V_SMSEL = 4,22,3,0 %;
literal XSA_XSADR$S_SMSEL = 3;          !  Select a state machine
macro XSA_XSADR$V_SM = 4,25,5,0 %;
literal XSA_XSADR$S_SM = 5;             !  Select a state number
macro XSA_XSADR$V_XIIIS = 4,31,1,0 %;   !  Interrupt summary
macro XSA$L_XIIICR = 8,0,32,0 %;        !  XII Interrupt Control reg.
macro XSA_XIIICR$V_XIL = 8,0,2,0 %;
literal XSA_XIIICR$S_XIL = 2;           !  Interrupt Level
macro XSA_XIIICR$V_XVEC = 8,2,14,0 %;
literal XSA_XIIICR$S_XVEC = 14;         !  Interrupt Vector
macro XSA_XIIICR$V_XID = 8,16,16,0 %;
literal XSA_XIIICR$S_XID = 16;          !  Interrupt Destination mask
macro XSA$L_XIIIESR = 12,0,32,0 %;      !  XII Interrupt & Error status
macro XSA_XIIIESR$V_P0I = 12,0,1,0 %;   !  Port 0 interrupt
macro XSA_XIIIESR$V_P1I = 12,1,1,0 %;   !  Port 1 interrupt
macro XSA_XIIIESR$V_D0IXC = 12,4,1,0 %; !  DME 0 Incomming Xfer Complete
macro XSA_XIIIESR$V_D1IXC = 12,5,1,0 %; !  DME 1 Incomming Xfer Complete
macro XSA_XIIIESR$V_I0OPE = 12,8,1,0 %; !  II0 Outgoing Partiy Error
macro XSA_XIIIESR$V_I1OPE = 12,9,1,0 %; !  II1 Outgoing Partiy Error
macro XSA_XIIIESR$V_IEA = 12,10,1,0 %;  !  Invalid ExPROM Address
macro XSA_XIIIESR$V_ISSM = 12,11,3,0 %;
literal XSA_XIIIESR$S_ISSM = 3;         !  Illegal State in State Mach.
macro XSA_XIIIESR$V_WTE = 12,14,1,0 %;  !  Write attempted EPROM
macro XSA_XIIIESR$V_XBES = 12,15,1,0 %; !  Copy of XBE error summary
macro XSA_XIIIESR$V_I0IPE = 12,16,1,0 %; !  II0 Incomming Partiy Error
macro XSA_XIIIESR$V_I1IPE = 12,17,1,0 %; !  II1 Incomming Partiy Error
macro XSA_XIIIESR$V_TPEL0 = 12,18,1,0 %; !  Transmit Parity Error on LW0
macro XSA_XIIIESR$V_TPEL1 = 12,19,1,0 %; !  Transmit Parity Error on LW1
macro XSA_XIIIESR$V_P0O = 12,20,1,0 %;  !  Port 0 Overflow
macro XSA_XIIIESR$V_P0U = 12,21,1,0 %;  !  Port 0 Underflow
macro XSA_XIIIESR$V_P1O = 12,22,1,0 %;  !  Port 1 Overflow
macro XSA_XIIIESR$V_P1U = 12,23,1,0 %;  !  Port 1 Underflow
macro XSA_XIIIESR$V_P0PE = 12,24,1,0 %; !  Port 0 Pointer Error
macro XSA_XIIIESR$V_P1PE = 12,25,1,0 %; !  Port 1 Pointer Error
macro XSA$L_XIIIEMR = 16,0,32,0 %;      !  XII Interrupt & Error mask
macro XSA_XIIIEMR$V_XCM = 16,3,1,0 %;   !  XBE CRD Mask
macro XSA_XIIIEMR$V_D0IXC = 16,4,1,0 %; !  DME 0 Incomming Xfer Complete
macro XSA_XIIIEMR$V_D1IXC = 16,5,1,0 %; !  DME 1 Incomming Xfer Complete
macro XSA_XIIIEMR$V_I0OPE = 16,8,1,0 %; !  II0 Outgoing Partiy Error
macro XSA_XIIIEMR$V_I1OPE = 16,9,1,0 %; !  II1 Outgoing Partiy Error
macro XSA_XIIIEMR$V_IEA = 16,10,1,0 %;  !  Invalid ExPROM Address
macro XSA_XIIIEMR$V_ISSM = 16,11,1,0 %; !  Illegal State in State Mach.
macro XSA_XIIIEMR$V_WTE = 16,14,1,0 %;  !  Write attempted EPROM
macro XSA_XIIIEMR$V_XBES = 16,15,1,0 %; !  Copy of XBE error summary
macro XSA_XIIIEMR$V_I0IPE = 16,16,1,0 %; !  II0 Incomming Partiy Error
macro XSA_XIIIEMR$V_I1IPE = 16,17,1,0 %; !  II1 Incomming Partiy Error
macro XSA_XIIIEMR$V_TPEL0 = 16,18,1,0 %; !  Transmit Parity Error on LW0
macro XSA_XIIIEMR$V_TPEL1 = 16,19,1,0 %; !  Transmit Parity Error on LW1
macro XSA_XIIIEMR$V_P0O = 16,20,1,0 %;  !  Port 0 Overflow
macro XSA_XIIIEMR$V_P0U = 16,21,1,0 %;  !  Port 0 Underflow
macro XSA_XIIIEMR$V_P1O = 16,22,1,0 %;  !  Port 1 Overflow
macro XSA_XIIIEMR$V_P1U = 16,23,1,0 %;  !  Port 1 Underflow
macro XSA_XIIIEMR$V_P0PE = 16,24,1,0 %; !  Port 0 Pointer Error
macro XSA_XIIIEMR$V_P1PE = 16,25,1,0 %; !  Port 1 Pointer Error
macro XSA$L_P0DATP = 20,0,32,0 %;       !  P0 DMA Address Table Pointer
!   Must be quadword aligned,
!   i.e. <2:0> must be zero
macro XSA$L_P0DATPE = 24,0,32,0 %;      !  P0 DMA Addr. Table Extension
macro XSA_P0DATPE$V_P0DATPE = 24,0,8,0 %;
literal XSA_P0DATPE$S_P0DATPE = 8;      !  Physical address <39:32>
macro XSA_P0DATPE$V_DO = 24,31,1,0 %;   !  Direction for mover - DMA Out
macro XSA$L_P0ICR = 28,0,32,0 %;        !  P0 Interrupt Control register
macro XSA_P0ICR$V_P0IL = 28,0,2,0 %;
literal XSA_P0ICR$S_P0IL = 2;           !  Interrupt Level
macro XSA_P0ICR$V_P0VEC = 28,2,14,0 %;
literal XSA_P0ICR$S_P0VEC = 14;         !  Interrupt Vector
macro XSA_P0ICR$V_P0ID = 28,16,16,0 %;
literal XSA_P0ICR$S_P0ID = 16;          !  Interrupt Destination mask
macro XSA$L_P1DATP = 32,0,32,0 %;       !  P1 DMA Address Table Pointer
!   Must be quadword aligned,
!   i.e. <2:0> must be zero
macro XSA$L_P1DATPE = 36,0,32,0 %;      !  P1 DMA Addr. Table Extension
macro XSA_P1DATPE$V_P1DATPE = 36,0,8,0 %;
literal XSA_P1DATPE$S_P1DATPE = 8;      !  Physical address <39:32>
macro XSA_P1DATPE$V_DO = 36,31,1,0 %;   !  Direction for mover - DMA Out
macro XSA$L_P1ICR = 40,0,32,0 %;        !  P1 Interrupt Control register
macro XSA_P1ICR$V_P1IL = 40,0,2,0 %;
literal XSA_P1ICR$S_P1IL = 2;           !  Interrupt Level
macro XSA_P1ICR$V_P1VEC = 40,2,14,0 %;
literal XSA_P1ICR$S_P1VEC = 14;         !  Interrupt Vector
macro XSA_P1ICR$V_P1ID = 40,16,16,0 %;
literal XSA_P1ICR$S_P1ID = 16;          !  Interrupt Destination mask
macro XSA$L_EAR = 44,0,32,0 %;          !  ExPROM address register 
macro XSA$L_EDR = 48,0,32,0 %;          !  ExPROM data register
macro XSA$L_XDATH0 = 52,0,32,0 %;       !  XII DAT High 0 register
macro XSA_XDATH0$V_P0AE = 52,0,8,0 %;
literal XSA_XDATH0$S_P0AE = 8;          !  Port 0 Physcal Addr. <39:32>
macro XSA_XDATH0$V_P0LT = 52,8,1,0 %;   !  Port 0 Last Transaction bit
macro XSA_XDATH0$V_P0DEBC = 52,16,16,0 %;
literal XSA_XDATH0$S_P0DEBC = 16;       !  Port 0 DAT Entry Byte Count
macro XSA$L_XDATL0 = 56,0,32,0 %;       !  XII DAT Low 0 register <31:0>
macro XSA$L_XDATH1 = 60,0,32,0 %;       !  XII DAT High 1 register
macro XSA_XDATH1$V_P1AE = 60,0,8,0 %;
literal XSA_XDATH1$S_P1AE = 8;          !  Port 1 Physcal Addr. <39:32>
macro XSA_XDATH1$V_P1LT = 60,8,1,0 %;   !  Port 1 Last Transaction bit
macro XSA_XDATH1$V_P1DEBC = 60,16,16,0 %;
literal XSA_XDATH1$S_P1DEBC = 16;       !  Port 1 DAT Entry Byte Count
macro XSA$L_XDATL1 = 64,0,32,0 %;       !  XII DAT Low 1 register <31:0>
literal XSA_DATH$M_AE = 255;
literal XSA_DATH$M_LT = 256;
literal XSA_DATH$M_FILL_1 = 65024;
literal XSA_DATH$M_DEBC = -65536;
literal XSA$S_DATDEF = 8;
macro XSA$L_DATL = 0,0,32,0 %;          !  XII DAT Low 0rder register <31:0>
macro XSA$L_DATH = 4,0,32,0 %;          !  XII DAT High 0 register
macro XSA_DATH$V_AE = 4,0,8,0 %;
literal XSA_DATH$S_AE = 8;              !  Port 0 Physcal Addr. <39:32>
macro XSA_DATH$V_LT = 4,8,1,0 %;        !  Port 0 Last Transaction bit
macro XSA_DATH$V_DEBC = 4,16,16,0 %;
literal XSA_DATH$S_DEBC = 16;           !  Port 0 DAT Entry Byte Count
 
!*** MODULE $X1202DEF ***
! +
!   This file contains offset definitions for registers accessible through XMI 
!   private space on the Mariah/XMP processor.  Note that in making these 
!   registers available in virtual space, we have only mapped real registers.  
!   Therefore these virtual offsets are different than the hardware physical 
!   offsets.
! -
literal X1202_CREG0$M_TERM_SEL = 3;
literal X1202_CREG0$M_TERM_ENA = 4;
literal X1202_CREG0$M_STP_LED = 8;
literal X1202_CREG0$M_IO_1 = 16;
literal X1202_CREG0$M_IO_2 = 32;
literal X1202_CREG0$M_FPSEL = 64;
literal X1202_CREG1$M_ST_LED1 = 1;
literal X1202_CREG1$M_ST_LED2 = 2;
literal X1202_CREG1$M_ST_LED3 = 4;
literal X1202_CREG1$M_ST_LED4 = 8;
literal X1202_CREG1$M_ST_LED5 = 16;
literal X1202_CREG1$M_ST_LED6 = 32;
literal X1202_CREG1$M_ST_LED7 = 64;
literal X1202_CREG1$M_ST_LED8 = 128;
literal X1202_CREG0$C_AUX_CONSOLE = 0;  !  Auxilary console
literal X1202_CREG0$C_SYSTEM_CONSOLE = 1; !  System console
literal X1202_CREG0$C_AUX_LOOPBACK = 2; !  Auxilary console loopback
literal X1202_CREG0$C_SYSTEM_LOOPBACK = 3; !  System console loopback
literal X1202_MFADR$M_INT_SOURCE = 65535;
literal X1202_MFADR$M_IPL = 983040;
literal X1202_MFADR$M_INT_DEST = 65535;
literal X1202_MFADR$M_IP_IVINTR = 65536;
literal X1202_MFADR$M_WE_IVINTR = 131072;
literal X1202_MFADR$M_FADR = 1073741823;
literal X1202_MFADR$M_FLN = -1073741824;
literal X1202_MCSR0$M_XGAREV = 15;
literal X1202_MCSR0$M_WS = 16;
literal X1202_MCSR0$M_BP = 32;
literal X1202_MCSR0$M_BPD = 64;
literal X1202_MCSR0$M_HDOD = 3968;
literal X1202_MCR0$M_LOCMOD = 3;
literal X1202_MCR0$M_XBADD = 4;
literal X1202_MCR0$M_TRIGC = 24;
literal X1202_MCR0$M_CRDID = 32;
literal X1202_MCR0$M_CCID = 64;
literal X1202_MCR0$M_MSCIPL = 1536;
literal X1202_MCR0$M_LDTE = 4096;
literal X1202_MCR0$M_LEDC = 24576;
literal X1202_MCR0$M_VME = 32768;
literal X1202_MCR0$M_TOS = 196608;
literal X1202_MCR0$M_ESI = 262144;
literal X1202_MCR0$M_XMIFP = 3670016;
literal X1202_MCR0$M_GMXSL = 62914560;
literal X1202_MCR0$M_FIBP = 268435456;
literal X1202_MCR0$M_CWBD = 536870912;
literal X1202_MCR0$M_ACPCD = 1073741824;
literal X1202_MCR0$M_FACBP = -2147483648;
literal X1202_MBEER0$M_SEO = 1;
literal X1202_MBEER0$M_OLR = 2;
literal X1202_MBEER0$M_URR = 4;
literal X1202_MBEER0$M_UUW = 256;
literal X1202_MBEER0$M_MCAXPE = 512;
literal X1202_MBEER0$M_MDAXPE = 1024;
literal X1202_MBEER0$M_UWP = 2048;
literal X1202_MBEER0$M_WFDQ0 = 4096;
literal X1202_MBEER0$M_WSEO0 = 8192;
literal X1202_MBEER0$M_WCNAK0 = 16384;
literal X1202_MBEER0$M_WWDNAK0 = 32768;
literal X1202_MBEER0$M_WTTO0 = 65536;
literal X1202_MBEER0$M_WTBDAT0 = 131072;
literal X1202_MBEER0$M_WSQE0 = 262144;
literal X1202_MBEER0$M_WCDE0 = 524288;
literal X1202_MBEER0$M_WFDQ1 = 1048576;
literal X1202_MBEER0$M_WSEO1 = 2097152;
literal X1202_MBEER0$M_WCNAK1 = 4194304;
literal X1202_MBEER0$M_WWDNAK1 = 8388608;
literal X1202_MBEER0$M_WTTO1 = 16777216;
literal X1202_MBEER0$M_WTBDAT1 = 33554432;
literal X1202_MBEER0$M_WSQE1 = 67108864;
literal X1202_MBEER0$M_WCDE1 = 134217728;
literal X1202_MBEER0$M_ACPE = 536870912;
literal X1202_MBEER0$M_WDPE = 1073741824;
literal X1202_MBEER0$M_CFE = -2147483648;
literal X1202_WFADR0$M_ADDR = 1073741823;
literal X1202_WFADR0$M_ADDR_EXT = -1073741824;
literal X1202_WFADR1$M_ADDR = 1073741823;
literal X1202_WFADR1$M_ADDR_EXT = -1073741824;
literal X1202_SSCCNR$M_CREG_ADS_ENA = 7;
literal X1202_SSCCNR$M_EEPROM_ADS_ENA = 112;
literal X1202_SSCCNR$M_TERM_BAUD_SEL = 28672;
literal X1202_SSCCNR$M_CTRL_P_ENA = 32768;
literal X1202_SSCCNR$M_HALT_PROT = 458752;
literal X1202_SSCCNR$M_ROM_SIZE = 7340032;
literal X1202_SSCCNR$M_ROM_SPEED = 8388608;
literal X1202_SSCCNR$M_IPL_SEL = 50331648;
literal X1202_SSCCNR$M_IV_DISABLE = 134217728;
literal X1202_SSCCNR$M_BLO = -2147483648;
literal X1202_SSCBTR$M_TMO_INTERVAL = 16777215;
literal X1202_SSCBTR$M_RWT = 1073741824;
literal X1202_SSCBTR$M_BTO = -2147483648;
literal X1202_SSCOPRT$M_CREG0_SEL = 1;
literal X1202_SSCOPRT$M_CREG1_SEL = 2;
literal X1202_SSCOPRT$M_CREG_DATA = 1020;
literal X1202_SSCIPRT$M_NODE_ID = 15;
literal X1202_SSCIPRT$M_FP_BOOT_DISABLE = 16;
literal X1202_SSCIPRT$M_FP_EEPROM_ENA = 32;
literal X1202_SSCIPRT$M_XACLO = 64;
literal X1202_SSCIPRT$M_STL_DISABLE = 128;
literal X1202_SSCIPRT$M_SCAN_TEST_DIS = 256;
literal X1202_SSCIPRT$M_CONSOLE_ENABLE = -2147483648;
literal X1202_TCR0$M_RUN = 1;
literal X1202_TCR0$M_STP = 4;
literal X1202_TCR0$M_XFR = 16;
literal X1202_TCR0$M_SGL = 32;
literal X1202_TCR0$M_IE = 64;
literal X1202_TCR0$M_INT = 128;
literal X1202_TCR0$M_ERR = -2147483648;
literal X1202_TIVR0$M_VECTOR = 1020;
literal X1202_TCR1$M_RUN = 1;
literal X1202_TCR1$M_STP = 4;
literal X1202_TCR1$M_XFR = 16;
literal X1202_TCR1$M_SGL = 32;
literal X1202_TCR1$M_IE = 64;
literal X1202_TCR1$M_INT = 128;
literal X1202_TCR1$M_ERR = -2147483648;
literal X1202_TIVR1$M_VECTOR = 1020;
literal X1202_DCSR$M_MDAREV = 15;
literal X1202_DCSR$M_EFECC = 16;
literal X1202_DCSR$M_EFDP = 32;
literal X1202_DCSR$M_RUP = 64;
literal X1202_DCSR$M_WBECCD = 128;
literal X1202_DCSR$M_FECC = 16128;
literal X1202_DCSR$M_FDP = 16384;
literal X1202_DCSR$M_WDPCD = 32768;
literal X1202_DCSR$M_EFXMIP = 65536;
literal X1202_DCSR$M_FXMIP = 393216;
literal X1202_FDAL3$M_ECC = 65535;
literal X1202_FDAL3$M_DP = 16711680;
literal X1202$S_X1202DEF = 100352;
! *****************************************************************************/
!  Page 0                                                                     */
! *****************************************************************************/
macro X1202$L_MDEV = 0,0,32,0 %;        !  Standard XMI XDEV register
macro X1202$L_CREGWE = 0,0,32,0 %;      !  CREG0/1 write enable
macro X1202$L_CREG0 = 0,0,32,0 %;       !  CREG0 (if mapped by SSCOPRT)
macro X1202_CREG0$V_TERM_SEL = 0,0,2,0 %;
literal X1202_CREG0$S_TERM_SEL = 2;     !  Console terminal mode
macro X1202_CREG0$V_TERM_ENA = 0,2,1,0 %; !  Console terminal enable
macro X1202_CREG0$V_STP_LED = 0,3,1,0 %; !  Self-test-passed LED
macro X1202_CREG0$V_IO_1 = 0,4,1,0 %;   !  Drives inverted bit on backplane
macro X1202_CREG0$V_IO_2 = 0,5,1,0 %;   !  Drives inverted bit on backplane
macro X1202_CREG0$V_FPSEL = 0,6,1,0 %;  !  Force MCA to bad XMI parity
macro X1202$L_CREG1 = 0,0,32,0 %;       !  CREG1 (if mapped by SSCOPRT)
macro X1202_CREG1$V_ST_LED1 = 0,0,1,0 %; !  XMP module LED 1
macro X1202_CREG1$V_ST_LED2 = 0,1,1,0 %; !  XMP module LED 2
macro X1202_CREG1$V_ST_LED3 = 0,2,1,0 %; !  XMP module LED 3
macro X1202_CREG1$V_ST_LED4 = 0,3,1,0 %; !  XMP module LED 4
macro X1202_CREG1$V_ST_LED5 = 0,4,1,0 %; !  XMP module LED 5
macro X1202_CREG1$V_ST_LED6 = 0,5,1,0 %; !  XMP module LED 6
macro X1202_CREG1$V_ST_LED7 = 0,6,1,0 %; !  XMP module LED 7
macro X1202_CREG1$V_ST_LED8 = 0,7,1,0 %; !  XMP module LED 8
!  Console terminal modes
macro X1202$L_MBE = 4,0,32,0 %;         !  Standard XMI XBE register
macro X1202$L_MFADR0 = 8,0,32,0 %;      !  XMI Failing Address register
macro X1202_MFADR$V_INT_SOURCE = 8,0,16,0 %;
literal X1202_MFADR$S_INT_SOURCE = 16;  !  Interrupt Source
macro X1202_MFADR$V_IPL = 8,16,4,0 %;
literal X1202_MFADR$S_IPL = 4;          !  Failing length
macro X1202_MFADR$V_INT_DEST = 8,0,16,0 %;
literal X1202_MFADR$S_INT_DEST = 16;    !  Interrupt Destination
macro X1202_MFADR$V_IP_IVINTR = 8,16,1,0 %; !  Interprocessor interrupt
macro X1202_MFADR$V_WE_IVINTR = 8,17,1,0 %; !  Write Enable interrupt
macro X1202_MFADR$V_FADR = 8,0,30,0 %;
literal X1202_MFADR$S_FADR = 30;        !  Failing Address
macro X1202_MFADR$V_FLN = 8,30,2,0 %;
literal X1202_MFADR$S_FLN = 2;          !  Failing length
macro X1202$L_XGPR = 12,0,32,0 %;       !  Standard XMI-2 XGPR register
macro X1202$L_MCSR0 = 28,0,32,0 %;      !  XMP Control/Status register0
macro X1202_MCSR0$V_XGAREV = 28,0,4,0 %;
literal X1202_MCSR0$S_XGAREV = 4;       !  MCA revision
macro X1202_MCSR0$V_WS = 28,4,1,0 %;    !  Warm start
macro X1202_MCSR0$V_BP = 28,5,1,0 %;    !  Boot processor
macro X1202_MCSR0$V_BPD = 28,6,1,0 %;   !  Boot processor disabled
macro X1202_MCSR0$V_HDOD = 28,7,5,0 %;
literal X1202_MCSR0$S_HDOD = 5;         !  High Drive Output Disable
macro X1202$L_MCR0 = 36,0,32,0 %;       !  XMP Control register0
macro X1202_MCR0$V_LOCMOD = 36,0,2,0 %;
literal X1202_MCR0$S_LOCMOD = 2;        !  Lockout Mode
macro X1202_MCR0$V_XBADD = 36,2,1,0 %;  !  XMI Bad Drive
macro X1202_MCR0$V_TRIGC = 36,3,2,0 %;
literal X1202_MCR0$S_TRIGC = 2;         !  Selects XMI Trigger Condition
macro X1202_MCR0$V_CRDID = 36,5,1,0 %;  !  Corrected Read Data Int. Dis.
macro X1202_MCR0$V_CCID = 36,6,1,0 %;   !  Corrected Conf. Int. Dis.
macro X1202_MCR0$V_MSCIPL = 36,9,2,0 %;
literal X1202_MCR0$S_MSCIPL = 2;        !  MSSC IPL (14,15,16,17 HEX)
macro X1202_MCR0$V_LDTE = 36,12,1,0 %;  !  Lockout Debug Timeout Enable
macro X1202_MCR0$V_LEDC = 36,13,2,0 %;
literal X1202_MCR0$S_LEDC = 2;          !  LED control
macro X1202_MCR0$V_VME = 36,15,1,0 %;   !  Vector Mode Enable
macro X1202_MCR0$V_TOS = 36,16,2,0 %;
literal X1202_MCR0$S_TOS = 2;           !  Timeout Select
macro X1202_MCR0$V_ESI = 36,18,1,0 %;   !  Enable Self Invalidates
macro X1202_MCR0$V_XMIFP = 36,19,3,0 %;
literal X1202_MCR0$S_XMIFP = 3;         !  Force XMI Parity
macro X1202_MCR0$V_GMXSL = 36,22,4,0 %;
literal X1202_MCR0$S_GMXSL = 4;         !  Gate Array Visability MuxSel
macro X1202_MCR0$V_FIBP = 36,28,1,0 %;  !  Force IBUS Bad Parity
macro X1202_MCR0$V_CWBD = 36,29,1,0 %;  !  Flush WriteBack & Invalid
macro X1202_MCR0$V_ACPCD = 36,30,1,0 %; !  Addr/Cmd Parity Check Disable
macro X1202_MCR0$V_FACBP = 36,31,1,0 %; !  Force Addr/Cmd Bad Parity
macro X1202$L_MFAER0 = 44,0,32,0 %;     !  Standard XMI-2 XFAER0 reg.
macro X1202$L_MBEER0 = 52,0,32,0 %;     !  XMP Error Extension register
macro X1202_MBEER0$V_SEO = 52,0,1,0 %;  !  Second Error Occured
macro X1202_MBEER0$V_OLR = 52,1,1,0 %;  !  Only LOC Response
macro X1202_MBEER0$V_URR = 52,2,1,0 %;  !  Unexpected Read Response
macro X1202_MBEER0$V_UUW = 52,8,1,0 %;  !  Unexpected Unlock Write
macro X1202_MBEER0$V_MCAXPE = 52,9,1,0 %; !  MCA XMI Parity Error
macro X1202_MBEER0$V_MDAXPE = 52,10,1,0 %; !  MDA XMI Parity Error
macro X1202_MBEER0$V_UWP = 52,11,1,0 %; !  Unlock Write Pending
macro X1202_MBEER0$V_WFDQ0 = 52,12,1,0 %; !  WB0 Failing Dal Qualifier
macro X1202_MBEER0$V_WSEO0 = 52,13,1,0 %; !  WB0 Second Error Occured
macro X1202_MBEER0$V_WCNAK0 = 52,14,1,0 %; !  WB0 Command NOACK
macro X1202_MBEER0$V_WWDNAK0 = 52,15,1,0 %; !  WB0 Write Data NoACK
macro X1202_MBEER0$V_WTTO0 = 52,16,1,0 %; !  WB0 Transaction Timeout
macro X1202_MBEER0$V_WTBDAT0 = 52,17,1,0 %; !  WB0 Tagged Bad Data
macro X1202_MBEER0$V_WSQE0 = 52,18,1,0 %; !  WB0 Sequence Error
macro X1202_MBEER0$V_WCDE0 = 52,19,1,0 %; !  WB0 Corrected data Error
macro X1202_MBEER0$V_WFDQ1 = 52,20,1,0 %; !  WB1 Failing Dal Qualifier
macro X1202_MBEER0$V_WSEO1 = 52,21,1,0 %; !  WB1 Second Error Occured
macro X1202_MBEER0$V_WCNAK1 = 52,22,1,0 %; !  WB1 Command NOACK
macro X1202_MBEER0$V_WWDNAK1 = 52,23,1,0 %; !  WB1 Write Data NoACK
macro X1202_MBEER0$V_WTTO1 = 52,24,1,0 %; !  WB1 Transaction Timeout
macro X1202_MBEER0$V_WTBDAT1 = 52,25,1,0 %; !  WB1 Tagged Bad Data
macro X1202_MBEER0$V_WSQE1 = 52,26,1,0 %; !  WB1 Sequence Error
macro X1202_MBEER0$V_WCDE1 = 52,27,1,0 %; !  WB1 Corrected data Error
macro X1202_MBEER0$V_ACPE = 52,29,1,0 %; !  Address/Command Parity Error
macro X1202_MBEER0$V_WDPE = 52,30,1,0 %; !  Write Data Parity Error
macro X1202_MBEER0$V_CFE = 52,31,1,0 %; !  Cache Fill Error
macro X1202$L_WFADR0 = 64,0,32,0 %;     !  Failed WB Address register 0
macro X1202_WFADR0$V_ADDR = 64,0,30,0 %;
literal X1202_WFADR0$S_ADDR = 30;       !  Failing Write Back Address
macro X1202_WFADR0$V_ADDR_EXT = 64,30,2,0 %;
literal X1202_WFADR0$S_ADDR_EXT = 2;    !  Failing Write Back Addr. Ext.
macro X1202$L_WFADR1 = 68,0,32,0 %;     !  Failed WB Address register 1
macro X1202_WFADR1$V_ADDR = 68,0,30,0 %;
literal X1202_WFADR1$S_ADDR = 30;       !  Failing Write Back Address
macro X1202_WFADR1$V_ADDR_EXT = 68,30,2,0 %;
literal X1202_WFADR1$S_ADDR_EXT = 2;    !  Failing Write Back Addr. Ext.
! *****************************************************************************/
!  Page 1                                                                     */
! *****************************************************************************/
macro X1202$L_SYSTYPE = 516,0,32,0 %;   !  System Type Register
! *****************************************************************************/
!  Page 2                                                                     */
! *****************************************************************************/
macro X1202$L_SSCBAR = 1024,0,32,0 %;   !  MSSC Base Address Register
macro X1202$L_SSCCNR = 1040,0,32,0 %;   !  MSSC Configuration Register
macro X1202_SSCCNR$V_CREG_ADS_ENA = 1040,0,3,0 %;
literal X1202_SSCCNR$S_CREG_ADS_ENA = 3; !  Enable writes to CREG0/CREG1
macro X1202_SSCCNR$V_EEPROM_ADS_ENA = 1040,4,3,0 %;
literal X1202_SSCCNR$S_EEPROM_ADS_ENA = 3; !  EEPROM address enable
macro X1202_SSCCNR$V_TERM_BAUD_SEL = 1040,12,3,0 %;
literal X1202_SSCCNR$S_TERM_BAUD_SEL = 3; !  Console baud rate
macro X1202_SSCCNR$V_CTRL_P_ENA = 1040,15,1,0 %; !  0=BREAK, 1=^P console halt
macro X1202_SSCCNR$V_HALT_PROT = 1040,16,3,0 %;
literal X1202_SSCCNR$S_HALT_PROT = 3;   !  Size of halt prot ROM/EEPROM 
macro X1202_SSCCNR$V_ROM_SIZE = 1040,20,3,0 %;
literal X1202_SSCCNR$S_ROM_SIZE = 3;    !  Size of ROM/EEPROM 
macro X1202_SSCCNR$V_ROM_SPEED = 1040,23,1,0 %; !  0=250ns.,1=150ns.
macro X1202_SSCCNR$V_IPL_SEL = 1040,24,2,0 %;
literal X1202_SSCCNR$S_IPL_SEL = 2;     !  MSSC IPL (14,15,16,17 HEX)
macro X1202_SSCCNR$V_IV_DISABLE = 1040,27,1,0 %; !  Disable return of int on RER
macro X1202_SSCCNR$V_BLO = 1040,31,1,0 %; !  1=BBU voltage below threshold 
macro X1202$L_SSCBTR = 1056,0,32,0 %;   !  XMP Control/Status register
macro X1202_SSCBTR$V_TMO_INTERVAL = 1056,0,24,0 %;
literal X1202_SSCBTR$S_TMO_INTERVAL = 24; !  Bus timeout interval
macro X1202_SSCBTR$V_RWT = 1056,30,1,0 %; !  Read write timeout
macro X1202_SSCBTR$V_BTO = 1056,31,1,0 %; !  Bus timeout
macro X1202$L_SSCOPRT = 1072,0,32,0 %;  !  MSSC Output Port Register
macro X1202_SSCOPRT$V_CREG0_SEL = 1072,0,1,0 %; !  20000000=CREG0              
macro X1202_SSCOPRT$V_CREG1_SEL = 1072,1,1,0 %; !  20000000=CREG1
macro X1202_SSCOPRT$V_CREG_DATA = 1072,2,8,0 %;
literal X1202_SSCOPRT$S_CREG_DATA = 8;  !  Data for CREG0/CREG1
macro X1202$L_SSCIPRT = 1088,0,32,0 %;  !  MSSC Input Port Register
macro X1202_SSCIPRT$V_NODE_ID = 1088,0,4,0 %;
literal X1202_SSCIPRT$S_NODE_ID = 4;    !  XMI node ID
macro X1202_SSCIPRT$V_FP_BOOT_DISABLE = 1088,4,1,0 %; !  Front panel boot disable sw
macro X1202_SSCIPRT$V_FP_EEPROM_ENA = 1088,5,1,0 %; !  Front panel EEPROM update sw
macro X1202_SSCIPRT$V_XACLO = 1088,6,1,0 %; !  XMI AC LO
macro X1202_SSCIPRT$V_STL_DISABLE = 1088,7,1,0 %; !  Self-test loop disable   
macro X1202_SSCIPRT$V_SCAN_TEST_DIS = 1088,8,1,0 %; !  Scan test disable
macro X1202_SSCIPRT$V_CONSOLE_ENABLE = 1088,31,1,0 %; !  Front-panel console enable
macro X1202$L_CRBADR = 1328,0,32,0 %;   !  CREG base address register
macro X1202$L_CRADMR = 1332,0,32,0 %;   !  CREG address decode mask reg
macro X1202$L_EEBADR = 1344,0,32,0 %;   !  CREG base address register
macro X1202$L_EEADMR = 1348,0,32,0 %;   !  CREG address decode mask reg
macro X1202$L_TCR0 = 1376,0,32,0 %;
macro X1202_TCR0$V_RUN = 1376,0,1,0 %;  !  Enables timer
macro X1202_TCR0$V_STP = 1376,2,1,0 %;  !  Stop on overflow
macro X1202_TCR0$V_XFR = 1376,4,1,0 %;  !  1=copy TNIRn to TIRn
macro X1202_TCR0$V_SGL = 1376,5,1,0 %;  !  Increment counter by one
macro X1202_TCR0$V_IE = 1376,6,1,0 %;   !  Interrupt Enable
macro X1202_TCR0$V_INT = 1376,7,1,0 %;  !  Set on timer overflow
macro X1202_TCR0$V_ERR = 1376,31,1,0 %; !  Indicates missed overflow
macro X1202$L_TIR0 = 1380,0,32,0 %;     !  Timer Interval Register 0
macro X1202$L_TNIR0 = 1384,0,32,0 %;    !  Timer Next Interval Reg. 0
macro X1202$L_TIVR0 = 1388,0,32,0 %;
macro X1202_TIVR0$V_VECTOR = 1388,2,8,0 %;
literal X1202_TIVR0$S_VECTOR = 8;       !  Longword aligned SCB vector
macro X1202$L_TCR1 = 1392,0,32,0 %;
macro X1202_TCR1$V_RUN = 1392,0,1,0 %;  !  Enables timer           
macro X1202_TCR1$V_STP = 1392,2,1,0 %;  !  Stop on overflow
macro X1202_TCR1$V_XFR = 1392,4,1,0 %;  !  1=copy TNIRn to TIRn
macro X1202_TCR1$V_SGL = 1392,5,1,0 %;  !  Increment counter by one
macro X1202_TCR1$V_IE = 1392,6,1,0 %;   !  Interrupt Enable
macro X1202_TCR1$V_INT = 1392,7,1,0 %;  !  Set on timer overflow
macro X1202_TCR1$V_ERR = 1392,31,1,0 %; !  Indicates missed overflow
macro X1202$L_TIR1 = 1396,0,32,0 %;     !  Timer Interval Register 1
macro X1202$L_TNIR1 = 1400,0,32,0 %;    !  Timer Next Interval Reg. 1
macro X1202$L_TIVR1 = 1404,0,32,0 %;
macro X1202_TIVR1$V_VECTOR = 1404,2,8,0 %;
literal X1202_TIVR1$S_VECTOR = 8;       !  Longword aligned SCB vector
macro X1202$L_SSCICR = 1528,0,32,0 %;   !  Diagnostic interval timer
! *****************************************************************************/
!  Page 3-131                                                                 */
! *****************************************************************************/
!  Interprocessor interrupt area - 128 Pages
macro X1202$L_IPIVINTR = 1536,0,32,0 %;
! *****************************************************************************/
!  Page 132                                                                     */
! *****************************************************************************/
macro X1202$L_DCSR = 67072,0,32,0 %;    !  XMP DAL Diagnostic Register
macro X1202_DCSR$V_MDAREV = 67072,0,4,0 %;
literal X1202_DCSR$S_MDAREV = 4;        !  MDA revision
macro X1202_DCSR$V_EFECC = 67072,4,1,0 %; !  Enable Force ECC
macro X1202_DCSR$V_EFDP = 67072,5,1,0 %; !  Enable Force DP
macro X1202_DCSR$V_RUP = 67072,6,1,0 %; !  Read Upper Longword
macro X1202_DCSR$V_WBECCD = 67072,7,1,0 %; !  WB ECC Check Disable
macro X1202_DCSR$V_FECC = 67072,8,6,0 %;
literal X1202_DCSR$S_FECC = 6;          !  Diagnostic ECC
macro X1202_DCSR$V_FDP = 67072,14,1,0 %; !  Diagnostic Parity
macro X1202_DCSR$V_WDPCD = 67072,15,1,0 %; !  WB Parity Check Disable
macro X1202_DCSR$V_EFXMIP = 67072,16,1,0 %; !  Enable force MDA XMI Parity
macro X1202_DCSR$V_FXMIP = 67072,17,2,0 %;
literal X1202_DCSR$S_FXMIP = 2;         !  Diagnostic MDA XMI parity
macro X1202$L_FDAL0 = 67104,0,32,0 %;   !  Failing DBUS<31:0>
macro X1202$L_FDAL1 = 67112,0,32,0 %;   !  Failing DBUS<63:32>
macro X1202$L_FDAL2 = 67120,0,32,0 %;   !  Failing ECC for DBUS<63:0>
macro X1202$L_FDAL3 = 67128,0,32,0 %;   !  XMP DAL Diagnostic Register
macro X1202_FDAL3$V_ECC = 67128,0,16,0 %;
literal X1202_FDAL3$S_ECC = 16;         !  Remaining ECC for DBUS<63:0>
macro X1202_FDAL3$V_DP = 67128,16,8,0 %;
literal X1202_FDAL3$S_DP = 8;           !  Parity bits for DBUS<63:0>
! *****************************************************************************/
!  Page 133-196                                                                     */
! *****************************************************************************/
!  Console EEPROM area - 64 Pages (32Kb)
macro X1202$AB_EEPROM = 67584,0,8,0 %;  !  First page of EEPROM
! 
! ****************************************************************************
! *                                                                          *
! *  Copyright (c) 1990                                                      *
! *  by DIGITAL Equipment Corporation, Maynard, Mass.                        *
! *                                                                          *
! *  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.                 *
! *                                                                          *
! ****************************************************************************
! ********************************************************************************************************************************
!  Created 26-JUN-1990 17:51:19 by VAX SDL T3.2-8      Source:  1-DEC-1989 14:03:53 _$254$DUA115:[VMSLIB.SRC]F11DEF.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE $FH1DEF ***
literal FH1$C_LEVEL1 = 257;             !  401 octal = structure level 1 
literal FH1$K_LENGTH = 46;              !  length of header area 
literal FH1$C_LENGTH = 46;              !  length of header area 
literal FH1$S_FH1DEF = 512;
macro FH1$B_IDOFFSET = 0,0,8,0 %;       !  ident area offset in words 
macro FH1$B_MPOFFSET = 1,0,8,0 %;       !  map area offset in words 
macro FH1$W_FID = 2,0,32,0 %;
literal FH1$S_FID = 4;                  !  file ID 
macro FH1$W_FID_NUM = 2,0,16,0 %;       !  file number 
macro FH1$W_FID_SEQ = 4,0,16,0 %;       !  file sequence number 
macro FH1$W_STRUCLEV = 6,0,16,0 %;      !  file structure level 
macro FH1$W_FILEOWNER = 8,0,16,0 %;     !  file owner UIC 
macro FH1$B_UICMEMBER = 8,0,8,0 %;      !  UIC member number 
macro FH1$B_UICGROUP = 9,0,8,0 %;       !  UIC group number 
macro FH1$W_FILEPROT = 10,0,16,0 %;     !  file protection 
macro FH1$V_SYSPRO = 10,0,4,0 %;
literal FH1$S_SYSPRO = 4;               !  system protection 
macro FH1$V_OWNPRO = 10,4,4,0 %;
literal FH1$S_OWNPRO = 4;               !  owner protection 
macro FH1$V_GROUPPRO = 10,8,4,0 %;
literal FH1$S_GROUPPRO = 4;             !  group protection 
macro FH1$V_WORLDPRO = 10,12,4,0 %;
literal FH1$S_WORLDPRO = 4;             !  world protection 
macro FH1$W_FILECHAR = 12,0,16,0 %;     !  file characteristics 
macro FH1$B_USERCHAR = 12,0,8,0 %;      !  user controlled characteristics 
macro FH1$V_WASCONTIG = 12,0,1,0 %;     !  file was (and should be) contiguous
macro FH1$V_NOBACKUP = 12,1,1,0 %;      !  file is not to be backed up 
macro FH1$V_READCHECK = 12,3,1,0 %;     !  verify all read operations 
macro FH1$V_WRITCHECK = 12,4,1,0 %;     !  verify all write operations 
macro FH1$V_CONTIGB = 12,5,1,0 %;       !  keep file as contiguous as possible 
macro FH1$V_LOCKED = 12,6,1,0 %;        !  file is deaccess locked 
macro FH1$V_CONTIG = 12,7,1,0 %;        !  file is contiguous 
macro FH1$B_SYSCHAR = 13,0,8,0 %;       !  system controlled characteristics 
macro FH1$V_SPOOL = 13,4,1,0 %;         !  intermediate spool file 
macro FH1$V_BADBLOCK = 13,6,1,0 %;      !  file contains bad blocks 
macro FH1$V_MARKDEL = 13,7,1,0 %;       !  file is marked for delete 
macro FH1$W_RECATTR = 14,0,0,0 %;
literal FH1$S_RECATTR = 32;             !  file record attributes 
macro FH1$W_CHECKSUM = 510,0,16,0 %;    !  file header checksum 
 
!*** MODULE $FI1DEF ***
literal FI1$K_LENGTH = 46;              !  length of ident area 
literal FI1$C_LENGTH = 46;              !  length of ident area 
literal FI1$S_FI1DEF = 286;
macro FI1$W_FILENAME = 0,0,0,0 %;
literal FI1$S_FILENAME = 6;             !  file name (RAD-50) 
macro FI1$W_FILETYPE = 6,0,16,0 %;      !  file type (RAD-50) 
macro FI1$W_VERSION = 8,0,16,0 %;       !  version number (binary) 
macro FI1$W_REVISION = 10,0,16,0 %;     !  revision number (binary) 
macro FI1$T_REVDATE = 12,0,0,0 %;
literal FI1$S_REVDATE = 7;              !  revision date (ASCII DDMMMYY) 
macro FI1$T_REVTIME = 19,0,0,0 %;
literal FI1$S_REVTIME = 6;              !  revision time (ASCII HHMMSS) 
macro FI1$T_CREDATE = 25,0,0,0 %;
literal FI1$S_CREDATE = 7;              !  creation date (ASCII DDMMMYY) 
macro FI1$T_CRETIME = 32,0,0,0 %;
literal FI1$S_CRETIME = 6;              !  creation time (ASCII HHMMSS) 
macro FI1$T_EXPDATE = 38,0,0,0 %;
literal FI1$S_EXPDATE = 7;              !  expiration date (ASCII DDMMMYY) 
macro FI1$T_MTHDR1 = 46,0,0,0 %;
literal FI1$S_MTHDR1 = 80;              !  HDR1 of ANSI magnetic tape file 
macro FI1$T_MTHDR2 = 126,0,0,0 %;
literal FI1$S_MTHDR2 = 80;              !  HDR2 of ANSI magnetic tape file 
macro FI1$T_MTHDR3 = 206,0,0,0 %;
literal FI1$S_MTHDR3 = 80;              !  HDR3 of ANSI magnetic tape file 
 
!*** MODULE $FM1DEF ***
literal FM1$K_POINTERS = 10;            !  start of retrieval pointers 
literal FM1$C_POINTERS = 10;            !  start of retrieval pointers 
literal FM1$K_LENGTH = 10;              !  length of map area 
literal FM1$C_LENGTH = 10;              !  length of map area 
!  retrieval pointer format
literal FM1$S_FM1DEF = 10;
macro FM1$B_EX_SEGNUM = 0,0,8,0 %;      !  extension segment number of this header 
macro FM1$B_EX_RVN = 1,0,8,0 %;         !  extension relative volume number 
macro FM1$W_EX_FILNUM = 2,0,16,0 %;     !  extension file number 
macro FM1$W_EX_FILSEQ = 4,0,16,0 %;     !  extension file sequence number 
macro FM1$B_COUNTSIZE = 6,0,8,0 %;      !  retrieval pointer count field size 
macro FM1$B_LBNSIZE = 7,0,8,0 %;        !  retrieval pointer LBN field size 
macro FM1$B_INUSE = 8,0,8,0 %;          !  number of retrieval words in use 
macro FM1$B_AVAIL = 9,0,8,0 %;          !  number of retrieval words available 
literal FM1$S_FM1DEF1 = 4;
macro FM1$B_HIGHLBN = 0,0,8,0 %;        !  high order LBN 
macro FM1$B_COUNT = 1,0,8,0 %;          !  block count 
macro FM1$W_LOWLBN = 2,0,16,0 %;        !  low order LBN 
literal FM1$S_FM1DEF2 = 5;
macro FM1$B_PREVHLBN = -4,0,8,0 %;
macro FM1$B_PREVCOUNT = -3,0,8,0 %;
macro FM1$W_PREVLLBN = -2,0,16,0 %;     !  previous retrieval pointer 
 
!*** MODULE $FH2DEF ***
! +
! 
!  File header definitions for Files-11 Structure Level 2
! 
! -
literal FH2$C_LEVEL1 = 257;             !  401 octal = structure level 1 
literal FH2$C_LEVEL2 = 512;             !  1000 octal = structure level 2 
literal FH2$M_VCC_STATE = 1792;
literal FH2$M_ALM_STATE = 1835008;
literal FH2$M_WASCONTIG = 1;
literal FH2$M_NOBACKUP = 2;
literal FH2$M_WRITEBACK = 4;
literal FH2$M_READCHECK = 8;
literal FH2$M_WRITCHECK = 16;
literal FH2$M_CONTIGB = 32;
literal FH2$M_LOCKED = 64;
literal FH2$M_CONTIG = 128;
literal FH2$M_BADACL = 2048;
literal FH2$M_SPOOL = 4096;
literal FH2$M_DIRECTORY = 8192;
literal FH2$M_BADBLOCK = 16384;
literal FH2$M_MARKDEL = 32768;
literal FH2$M_NOCHARGE = 65536;
literal FH2$M_ERASE = 131072;
literal FH2$M_ALM_AIP = 262144;
literal FH2$M_ALM_ARCHIVED = 524288;
literal FH2$M_ALM_DELETED = 1048576;
literal FH2$M_ONLY_RU = 1;
literal FH2$M_RUJNL = 2;
literal FH2$M_BIJNL = 4;
literal FH2$M_AIJNL = 8;
literal FH2$M_ATJNL = 16;
literal FH2$M_NEVER_RU = 32;
literal FH2$M_JOURNAL_FILE = 64;
literal FH2$C_RU_FACILITY_RMS = 1;      !  RMS
literal FH2$C_RU_FACILITY_DBMS = 2;     !  DBMS
literal FH2$C_RU_FACILITY_RDB = 3;      !  Rdb/VMS
literal FH2$C_RU_FACILITY_CHKPNT = 4;   !  Checkpoint/Restart
literal FH2$K_LENGTH = 80;              !  length of header area 
literal FH2$C_LENGTH = 80;              !  length of header area 
literal FH2$K_SUBSET0_LENGTH = 88;      !  length of header area 
literal FH2$C_SUBSET0_LENGTH = 88;      !  length of header area 
literal FH2$K_FULL_LENGTH = 108;        !  length of full header
literal FH2$C_FULL_LENGTH = 108;        !  length of full header
literal FH2$S_FH2DEF = 512;
macro FH2$B_IDOFFSET = 0,0,8,0 %;       !  ident area offset in words 
macro FH2$B_MPOFFSET = 1,0,8,0 %;       !  map area offset in words 
macro FH2$B_ACOFFSET = 2,0,8,0 %;       !  access control list offset in words 
macro FH2$B_RSOFFSET = 3,0,8,0 %;       !  reserved area offset in words 
macro FH2$W_SEG_NUM = 4,0,16,0 %;       !  file segment number 
macro FH2$W_STRUCLEV = 6,0,16,0 %;      !  file structure level 
macro FH2$B_STRUCVER = 6,0,8,0 %;       !  file structure version 
macro FH2$B_STRUCLEV = 7,0,8,0 %;       !  principal file structure level 
macro FH2$W_FID = 8,0,0,0 %;
literal FH2$S_FID = 6;                  !  file ID 
macro FH2$W_FID_NUM = 8,0,16,0 %;       !  file number 
macro FH2$W_FID_SEQ = 10,0,16,0 %;      !  file sequence number 
macro FH2$W_FID_RVN = 12,0,16,0 %;      !  relative volume number 
macro FH2$B_FID_RVN = 12,0,8,0 %;       !  alternate format RVN 
macro FH2$B_FID_NMX = 13,0,8,0 %;       !  alternate format file number extension 
macro FH2$W_EXT_FID = 14,0,0,0 %;
literal FH2$S_EXT_FID = 6;              !  extension file ID 
macro FH2$W_EX_FIDNUM = 14,0,16,0 %;    !  extension file number 
macro FH2$W_EX_FIDSEQ = 16,0,16,0 %;    !  extension file sequence number 
macro FH2$W_EX_FIDRVN = 18,0,16,0 %;    !  extension relative volume number 
macro FH2$B_EX_FIDRVN = 18,0,8,0 %;     !  alternate format extension RVN 
macro FH2$B_EX_FIDNMX = 19,0,8,0 %;     !  alternate format extension file number extension 
macro FH2$W_RECATTR = 20,0,0,0 %;
literal FH2$S_RECATTR = 32;             !  file record attributes 
macro FH2$L_FILECHAR = 52,0,32,0 %;     !  file characteristics 
macro FH2$V_VCC_STATE = 52,8,3,0 %;
literal FH2$S_VCC_STATE = 3;            !  VCC state bits
macro FH2$V_ALM_STATE = 52,18,3,0 %;
literal FH2$S_ALM_STATE = 3;            !  ALM state bits
macro FH2$V_WASCONTIG = 52,0,1,0 %;     !  file was (and should be) contiguous
macro FH2$V_NOBACKUP = 52,1,1,0 %;      !  file is not to be backed up 
macro FH2$V_WRITEBACK = 52,2,1,0 %;     !  file may be write-back cached 
macro FH2$V_READCHECK = 52,3,1,0 %;     !  verify all read operations 
macro FH2$V_WRITCHECK = 52,4,1,0 %;     !  verify all write operations 
macro FH2$V_CONTIGB = 52,5,1,0 %;       !  keep file as contiguous as possible 
macro FH2$V_LOCKED = 52,6,1,0 %;        !  file is deaccess locked 
macro FH2$V_CONTIG = 52,7,1,0 %;        !  file is contiguous 
macro FH2$V_BADACL = 52,11,1,0 %;       !  ACL is invalid 
macro FH2$V_SPOOL = 52,12,1,0 %;        !  intermediate spool file 
macro FH2$V_DIRECTORY = 52,13,1,0 %;    !  file is a directory 
macro FH2$V_BADBLOCK = 52,14,1,0 %;     !  file contains bad blocks 
macro FH2$V_MARKDEL = 52,15,1,0 %;      !  file is marked for delete 
macro FH2$V_NOCHARGE = 52,16,1,0 %;     !  file space is not to be charged 
macro FH2$V_ERASE = 52,17,1,0 %;        !  erase file contents before deletion 
macro FH2$V_ALM_AIP = 52,18,1,0 %;      !  Archive in progress
macro FH2$V_ALM_ARCHIVED = 52,19,1,0 %; !  File archived
macro FH2$V_ALM_DELETED = 52,20,1,0 %;  !  File contents deleted
!  Note: The high 8 bits of this longword
!  are reserved for user and CSS use.
macro FH2$W_RECPROT = 56,0,16,0 %;      !  record protection 
macro FH2$B_MAP_INUSE = 58,0,8,0 %;     !  number of map area words in use 
macro FH2$B_ACC_MODE = 59,0,8,0 %;      !  least privileged access mode 
macro FH2$L_FILEOWNER = 60,0,32,0 %;    !  file owner UIC 
macro FH2$W_UICMEMBER = 60,0,16,0 %;    !  UIC member number 
macro FH2$W_UICGROUP = 62,0,16,0 %;     !  UIC group number 
macro FH2$W_FILEPROT = 64,0,16,0 %;     !  file protection 
macro FH2$W_BACKLINK = 66,0,0,0 %;
literal FH2$S_BACKLINK = 6;             !  back link pointer 
macro FH2$W_BK_FIDNUM = 66,0,16,0 %;    !  back link file number 
macro FH2$W_BK_FIDSEQ = 68,0,16,0 %;    !  back link file sequence number 
macro FH2$W_BK_FIDRVN = 70,0,16,0 %;    !  back link relative volume number 
macro FH2$B_BK_FIDRVN = 70,0,8,0 %;     !  alternate format back link RVN 
macro FH2$B_BK_FIDNMX = 71,0,8,0 %;     !  alternate format back link file number extension 
macro FH2$B_JOURNAL = 72,0,8,0 %;       !  journal control flags 
macro FH2$V_ONLY_RU = 72,0,1,0 %;       !  file is accessible only in recovery unit 
macro FH2$V_RUJNL = 72,1,1,0 %;         !  enable recovery unit journal 
macro FH2$V_BIJNL = 72,2,1,0 %;         !  enable before image journal 
macro FH2$V_AIJNL = 72,3,1,0 %;         !  enable after image journal 
macro FH2$V_ATJNL = 72,4,1,0 %;         !  enable audit trail journal 
macro FH2$V_NEVER_RU = 72,5,1,0 %;      !  file is never accessible in recovery unit
macro FH2$V_JOURNAL_FILE = 72,6,1,0 %;  !  this is a journal file
macro FH2$B_RU_ACTIVE = 73,0,8,0 %;     !  If non-zero, file has active recovery units
!  (value is recoverable facility id number)
!  1-99 reserved to DEC, 100-127 reserved for
!  CSS, 128-255 reserved for customers.
macro FH2$L_HIGHWATER = 76,0,32,0 %;    !  high-water mark in file
macro FH2$R_CLASS_PROT = 88,0,0,0 %;
literal FH2$S_CLASS_PROT = 20;          !  security classification mask
macro FH2$W_CHECKSUM = 510,0,16,0 %;    !  file header checksum 
 
!*** MODULE $FI2DEF ***
literal FI2$K_LENGTH = 120;             !  length of ident area 
literal FI2$C_LENGTH = 120;             !  length of ident area 
literal FI2$S_FI2DEF = 200;
macro FI2$T_FILENAME = 0,0,0,0 %;
literal FI2$S_FILENAME = 20;            !  file name, type, and version (ASCII) 
macro FI2$W_REVISION = 20,0,16,0 %;     !  revision number (binary) 
macro FI2$Q_CREDATE = 22,0,0,0 %;
literal FI2$S_CREDATE = 8;              !  creation date and time 
macro FI2$Q_REVDATE = 30,0,0,0 %;
literal FI2$S_REVDATE = 8;              !  revision date and time 
macro FI2$Q_EXPDATE = 38,0,0,0 %;
literal FI2$S_EXPDATE = 8;              !  expiration date and time 
macro FI2$Q_BAKDATE = 46,0,0,0 %;
literal FI2$S_BAKDATE = 8;              !  backup date and time 
macro FI2$T_FILENAMEXT = 54,0,0,0 %;
literal FI2$S_FILENAMEXT = 66;          !  extension file name area
macro FI2$T_USERLABEL = 120,0,0,0 %;
literal FI2$S_USERLABEL = 80;           !  optional user file label 
 
!*** MODULE $FM2DEF ***
!  retrieval pointer type codes 
literal FM2$C_PLACEMENT = 0;            !  00 = placement control data 
literal FM2$C_FORMAT1 = 1;              !  01 = format 1 
literal FM2$C_FORMAT2 = 2;              !  10 = format 2 
literal FM2$C_FORMAT3 = 3;              !  11 = format 3 
!  format of retrieval pointer
literal FM2$K_LENGTH0 = 2;              !  length of format 0 (placement) 
literal FM2$C_LENGTH0 = 2;              !  length of format 0 (placement) 
literal FM2$K_LENGTH1 = 4;              !  length of format 1 
literal FM2$C_LENGTH1 = 4;              !  length of format 1 
literal FM2$S_FM2DEF = 4;
macro FM2$W_WORD0 = 0,0,16,0 %;         !  first word, of many uses 
macro FM2$V_FORMAT = 0,14,2,0 %;
literal FM2$S_FORMAT = 2;               !  format type code 
macro FM2$V_EXACT = 0,0,1,0 %;          !  exact placement specified 
macro FM2$V_ONCYL = 0,1,1,0 %;          !  on cylinder allocation desired 
macro FM2$V_LBN = 0,12,1,0 %;           !  use LBN of next map pointer 
macro FM2$V_RVN = 0,13,1,0 %;           !  place on specified RVN 
macro FM2$V_HIGHLBN = 0,8,6,0 %;
literal FM2$S_HIGHLBN = 6;              !  high order LBN 
macro FM2$V_COUNT2 = 0,0,14,0 %;
literal FM2$S_COUNT2 = 14;              !  format 2 & 3 count field 
macro FM2$B_COUNT1 = 0,0,8,0 %;         !  format 1 count field 
macro FM2$W_LOWLBN = 2,0,16,0 %;        !  format 1 low order LBN 
literal FM2$K_LENGTH2 = 6;              !  length of format 2 
literal FM2$C_LENGTH2 = 6;              !  length of format 2 
literal FM2$S_FM2DEF1 = 6;
macro FM2$L_LBN2 = 2,0,32,0 %;          !  format 2 LBN (longword) 
literal FM2$K_LENGTH3 = 8;              !  length of format 3 
literal FM2$C_LENGTH3 = 8;              !  length of format 3 
literal FM2$S_FM2DEF2 = 8;
macro FM2$W_LOWCOUNT = 2,0,16,0 %;      !  format 3 low order count 
macro FM2$L_LBN3 = 4,0,32,0 %;          !  format 3 LBN (longword) 
 
!*** MODULE $FCHDEF ***
! +
! 
!  File characteristics bit definitions. These are identical to, and must
!  track, the bits in FILECHAR above, but are defined relative to the file
!  characteristics longword instead of relative to the file header.
! 
! -
literal FCH$M_VCC_STATE = 1792;
literal FCH$M_ALM_STATE = 1835008;
literal FCH$M_WASCONTIG = 1;
literal FCH$M_NOBACKUP = 2;
literal FCH$M_WRITEBACK = 4;
literal FCH$M_READCHECK = 8;
literal FCH$M_WRITCHECK = 16;
literal FCH$M_CONTIGB = 32;
literal FCH$M_LOCKED = 64;
literal FCH$M_CONTIG = 128;
literal FCH$M_BADACL = 2048;
literal FCH$M_SPOOL = 4096;
literal FCH$M_DIRECTORY = 8192;
literal FCH$M_BADBLOCK = 16384;
literal FCH$M_MARKDEL = 32768;
literal FCH$M_NOCHARGE = 65536;
literal FCH$M_ERASE = 131072;
literal FCH$M_ALM_AIP = 262144;
literal FCH$M_ALM_ARCHIVED = 524288;
literal FCH$M_ALM_DELETED = 1048576;
literal FCH$S_FCHDEF = 4;
macro FCH$V_VCC_STATE = 0,8,3,0 %;
literal FCH$S_VCC_STATE = 3;            !  VCC state bits
macro FCH$V_ALM_STATE = 0,18,3,0 %;
literal FCH$S_ALM_STATE = 3;            !  ALM state bits
macro FCH$V_WASCONTIG = 0,0,1,0 %;      !  file was (and should be) contiguous
macro FCH$V_NOBACKUP = 0,1,1,0 %;       !  file is not to be backed up 
macro FCH$V_WRITEBACK = 0,2,1,0 %;      !  file may be write-back cached 
macro FCH$V_READCHECK = 0,3,1,0 %;      !  verify all read operations 
macro FCH$V_WRITCHECK = 0,4,1,0 %;      !  verify all write operations 
macro FCH$V_CONTIGB = 0,5,1,0 %;        !  keep file as contiguous as possible 
macro FCH$V_LOCKED = 0,6,1,0 %;         !  file is deaccess locked 
macro FCH$V_CONTIG = 0,7,1,0 %;         !  file is contiguous 
macro FCH$V_BADACL = 0,11,1,0 %;        !  ACL is invalid 
macro FCH$V_SPOOL = 0,12,1,0 %;         !  intermediate spool file 
macro FCH$V_DIRECTORY = 0,13,1,0 %;     !  file is a directory 
macro FCH$V_BADBLOCK = 0,14,1,0 %;      !  file contains bad blocks 
macro FCH$V_MARKDEL = 0,15,1,0 %;       !  file is marked for delete 
macro FCH$V_NOCHARGE = 0,16,1,0 %;      !  file space is not to be charged 
macro FCH$V_ERASE = 0,17,1,0 %;         !  erase file contents before deletion 
macro FCH$V_ALM_AIP = 0,18,1,0 %;       !  Archive in progress
macro FCH$V_ALM_ARCHIVED = 0,19,1,0 %;  !  File archived
macro FCH$V_ALM_DELETED = 0,20,1,0 %;   !  File contents deleted
!  Note: The high 8 bits of this longword
!  are reserved for user and CSS use.
 
!*** MODULE $FJNDEF ***
! +
! 
!  File journal control bit definitions. These are identical to, and must
!  track, the bits in JOURNAL above, but are defined relative to the journal
!  control byte instead of relative to the file header.
! 
! -
literal FJN$M_ONLY_RU = 1;
literal FJN$M_RUJNL = 2;
literal FJN$M_BIJNL = 4;
literal FJN$M_AIJNL = 8;
literal FJN$M_ATJNL = 16;
literal FJN$M_NEVER_RU = 32;
literal FJN$M_JOURNAL_FILE = 64;
literal FJN$S_FJNDEF = 1;
macro FJN$V_ONLY_RU = 0,0,1,0 %;        !  file is accessible only in recovery unit 
macro FJN$V_RUJNL = 0,1,1,0 %;          !  enable recovery unit journal 
macro FJN$V_BIJNL = 0,2,1,0 %;          !  enable before image journal 
macro FJN$V_AIJNL = 0,3,1,0 %;          !  enable after image journal 
macro FJN$V_ATJNL = 0,4,1,0 %;          !  enable audit trail journal 
macro FJN$V_NEVER_RU = 0,5,1,0 %;       !  file is never accessible in recovery unit
macro FJN$V_JOURNAL_FILE = 0,6,1,0 %;   !  this is a journal file
 
!*** MODULE $FATDEF ***
! +
! 
!  Record attributes area as used by FCS and RMS.
! 
! -
literal FAT$C_UNDEFINED = 0;            !  undefined record type 
literal FAT$C_FIXED = 1;                !  fixed record type 
literal FAT$C_VARIABLE = 2;             !  variable length 
literal FAT$C_VFC = 3;                  !  variable + fixed control 
literal FAT$C_STREAM = 4;               !  RMS-11 (DEC traditional) stream format 
literal FAT$C_STREAMLF = 5;             !  LF-terminated stream format 
literal FAT$C_STREAMCR = 6;             !  CR-terminated stream format 
literal FAT$C_SEQUENTIAL = 0;           !  sequential organization 
literal FAT$C_RELATIVE = 1;             !  relative organization 
literal FAT$C_INDEXED = 2;              !  indexed organization 
literal FAT$C_DIRECT = 3;               !  direct organization 
literal FAT$M_FORTRANCC = 1;
literal FAT$M_IMPLIEDCC = 2;
literal FAT$M_PRINTCC = 4;
literal FAT$M_NOSPAN = 8;
literal FAT$K_LENGTH = 32;
literal FAT$C_LENGTH = 32;
literal FAT$S_FATDEF = 32;
macro FAT$B_RTYPE = 0,0,8,0 %;          !  record type 
macro FAT$V_RTYPE = 0,0,4,0 %;
literal FAT$S_RTYPE = 4;                !  record type subfield 
macro FAT$V_FILEORG = 0,4,4,0 %;
literal FAT$S_FILEORG = 4;              !  file organization 
macro FAT$B_RATTRIB = 1,0,8,0 %;        !  record attributes 
macro FAT$V_FORTRANCC = 1,0,1,0 %;      !  Fortran carriage control 
macro FAT$V_IMPLIEDCC = 1,1,1,0 %;      !  implied carriage control 
macro FAT$V_PRINTCC = 1,2,1,0 %;        !  print file carriage control 
macro FAT$V_NOSPAN = 1,3,1,0 %;         !  no spanned records 
macro FAT$W_RSIZE = 2,0,16,0 %;         !  record size in bytes 
macro FAT$L_HIBLK = 4,0,32,0 %;         !  highest allocated VBN 
macro FAT$W_HIBLKH = 4,0,16,0 %;        !  high order word 
macro FAT$W_HIBLKL = 6,0,16,0 %;        !  low order word 
macro FAT$L_EFBLK = 8,0,32,0 %;         !  end of file VBN 
macro FAT$W_EFBLKH = 8,0,16,0 %;        !  high order word 
macro FAT$W_EFBLKL = 10,0,16,0 %;       !  low order word 
macro FAT$W_FFBYTE = 12,0,16,0 %;       !  first free byte in EFBLK 
macro FAT$B_BKTSIZE = 14,0,8,0 %;       !  bucket size in blocks 
macro FAT$B_VFCSIZE = 15,0,8,0 %;       !  size in bytes of fixed length control for VFC records 
macro FAT$W_MAXREC = 16,0,16,0 %;       !  maximum record size in bytes 
macro FAT$W_DEFEXT = 18,0,16,0 %;       !  default extend quantity 
macro FAT$W_GBC = 20,0,16,0 %;          !  global buffer count 
macro FAT$W_VERSIONS = 30,0,16,0 %;     !  default version limit for directory file 
 
!*** MODULE $HM1DEF ***
! +
! 
!  Home block definitions for Files-11 Structure Level 1
! 
! -
literal HM1$C_LEVEL1 = 257;             !  401 octal = structure level 1 
literal HM1$C_LEVEL2 = 258;             !  402 octal = structure level 1, version 2 
literal HM1$S_HM1DEF = 512;
macro HM1$W_IBMAPSIZE = 0,0,16,0 %;     !  index file bitmap size, blocks 
macro HM1$L_IBMAPLBN = 2,0,32,0 %;      !  index file bitmap starting LBN 
macro HM1$W_MAXFILES = 6,0,16,0 %;      !  maximum ! files on volume 
macro HM1$W_CLUSTER = 8,0,16,0 %;       !  storage bitmap cluster factor 
macro HM1$W_DEVTYPE = 10,0,16,0 %;      !  disk device type 
macro HM1$W_STRUCLEV = 12,0,16,0 %;     !  volume structure level 
macro HM1$T_VOLNAME = 14,0,0,0 %;
literal HM1$S_VOLNAME = 12;             !  volume name (ASCII) 
macro HM1$W_VOLOWNER = 30,0,16,0 %;     !  volume owner UIC 
macro HM1$W_PROTECT = 32,0,16,0 %;      !  volume protection 
macro HM1$V_SYSPRO = 32,0,4,0 %;
literal HM1$S_SYSPRO = 4;               !  system protection 
macro HM1$V_OWNPRO = 32,4,4,0 %;
literal HM1$S_OWNPRO = 4;               !  owner protection 
macro HM1$V_GROUPPRO = 32,8,4,0 %;
literal HM1$S_GROUPPRO = 4;             !  group protection 
macro HM1$V_WORLDPRO = 32,12,4,0 %;
literal HM1$S_WORLDPRO = 4;             !  world protection 
macro HM1$W_VOLCHAR = 34,0,16,0 %;      !  volume characteristics 
macro HM1$W_FILEPROT = 36,0,16,0 %;     !  default file protection 
macro HM1$B_WINDOW = 44,0,8,0 %;        !  default window size 
macro HM1$B_EXTEND = 45,0,8,0 %;        !  default file extend 
macro HM1$B_LRU_LIM = 46,0,8,0 %;       !  default LRU limit 
macro HM1$W_CHECKSUM1 = 58,0,16,0 %;    !  first checksum 
macro HM1$T_CREDATE = 60,0,0,0 %;
literal HM1$S_CREDATE = 14;             !  volume creation date 
macro HM1$L_SERIALNUM = 456,0,32,0 %;   !  pack serial number 
macro HM1$T_VOLNAME2 = 472,0,0,0 %;
literal HM1$S_VOLNAME2 = 12;            !  2nd copy of volume name 
macro HM1$T_OWNERNAME = 484,0,0,0 %;
literal HM1$S_OWNERNAME = 12;           !  volume owner name 
macro HM1$T_FORMAT = 496,0,0,0 %;
literal HM1$S_FORMAT = 12;              !  volume format type 
macro HM1$W_CHECKSUM2 = 510,0,16,0 %;   !  second checksum 
 
!*** MODULE $HM2DEF ***
! +
! 
!  Home block definitions for Files-11 Structure Level 2
! 
! -
literal HM2$C_LEVEL1 = 257;             !  401 octal = structure level 1 
literal HM2$C_LEVEL2 = 512;             !  1000 octal = structure level 2 
literal HM2$M_READCHECK = 1;
literal HM2$M_WRITCHECK = 2;
literal HM2$M_ERASE = 4;
literal HM2$M_NOHIGHWATER = 8;
literal HM2$M_CLASS_PROT = 16;
literal HM2$S_HM2DEF = 512;
macro HM2$L_HOMELBN = 0,0,32,0 %;       !  LBN of home (i.e., this) block 
macro HM2$L_ALHOMELBN = 4,0,32,0 %;     !  LBN of alternate home block 
macro HM2$L_ALTIDXLBN = 8,0,32,0 %;     !  LBN of alternate index file header 
macro HM2$W_STRUCLEV = 12,0,16,0 %;     !  volume structure level 
macro HM2$B_STRUCVER = 12,0,8,0 %;      !  structure version number 
macro HM2$B_STRUCLEV = 13,0,8,0 %;      !  main structure level 
macro HM2$W_CLUSTER = 14,0,16,0 %;      !  storage bitmap cluster factor 
macro HM2$W_HOMEVBN = 16,0,16,0 %;      !  VBN of home (i.e., this) block 
macro HM2$W_ALHOMEVBN = 18,0,16,0 %;    !  VBN of alternate home block 
macro HM2$W_ALTIDXVBN = 20,0,16,0 %;    !  VBN of alternate index file header 
macro HM2$W_IBMAPVBN = 22,0,16,0 %;     !  VBN of index file bitmap 
macro HM2$L_IBMAPLBN = 24,0,32,0 %;     !  LBN of index file bitmap 
macro HM2$L_MAXFILES = 28,0,32,0 %;     !  maximum ! files on volume 
macro HM2$W_IBMAPSIZE = 32,0,16,0 %;    !  index file bitmap size, blocks 
macro HM2$W_RESFILES = 34,0,16,0 %;     !  ! reserved files on volume 
macro HM2$W_DEVTYPE = 36,0,16,0 %;      !  disk device type 
macro HM2$W_RVN = 38,0,16,0 %;          !  relative volume number of this volume 
macro HM2$W_SETCOUNT = 40,0,16,0 %;     !  count of volumes in set 
macro HM2$W_VOLCHAR = 42,0,16,0 %;      !  volume characteristics 
macro HM2$V_READCHECK = 42,0,1,0 %;     !  verify all read operations 
macro HM2$V_WRITCHECK = 42,1,1,0 %;     !  verify all write operations 
macro HM2$V_ERASE = 42,2,1,0 %;         !  erase all files on delete 
macro HM2$V_NOHIGHWATER = 42,3,1,0 %;   !  turn off high-water marking
macro HM2$V_CLASS_PROT = 42,4,1,0 %;    !  enable classification checks on the volume
macro HM2$L_VOLOWNER = 44,0,32,0 %;     !  volume owner UIC 
macro HM2$L_SEC_MASK = 48,0,32,0 %;     !  volume security mask 
macro HM2$W_PROTECT = 52,0,16,0 %;      !  volume protection 
macro HM2$W_FILEPROT = 54,0,16,0 %;     !  default file protection 
macro HM2$W_RECPROT = 56,0,16,0 %;      !  default file record protection 
macro HM2$W_CHECKSUM1 = 58,0,16,0 %;    !  first checksum 
macro HM2$Q_CREDATE = 60,0,0,0 %;
literal HM2$S_CREDATE = 8;              !  volume creation date 
macro HM2$B_WINDOW = 68,0,8,0 %;        !  default window size 
macro HM2$B_LRU_LIM = 69,0,8,0 %;       !  default LRU limit 
macro HM2$W_EXTEND = 70,0,16,0 %;       !  default file extend 
macro HM2$Q_RETAINMIN = 72,0,0,0 %;
literal HM2$S_RETAINMIN = 8;            !  minimum file retention period 
macro HM2$Q_RETAINMAX = 80,0,0,0 %;
literal HM2$S_RETAINMAX = 8;            !  maximum file retention period 
macro HM2$Q_REVDATE = 88,0,0,0 %;
literal HM2$S_REVDATE = 8;              !  volume revision date
macro HM2$R_MIN_CLASS = 96,0,0,0 %;
literal HM2$S_MIN_CLASS = 20;           !  volume minimum security class
macro HM2$R_MAX_CLASS = 116,0,0,0 %;
literal HM2$S_MAX_CLASS = 20;           !  volume maximum security class
macro HM2$W_FILETAB_FID = 136,0,0,0 %;
literal HM2$S_FILETAB_FID = 6;          !  file lookup table FID
macro HM2$W_LOWSTRUCLEV = 142,0,16,0 %; !  lowest struclev on volume
macro HM2$B_LOWSTRUCVER = 142,0,8,0 %;  !  structure version number 
macro HM2$B_LOWSTRUCLEV = 143,0,8,0 %;  !  main structure level 
macro HM2$W_HIGHSTRUCLEV = 144,0,16,0 %; !  highest struclev on volume
macro HM2$B_HIGHSTRUCVER = 144,0,8,0 %; !  structure version number 
macro HM2$B_HIGHSTRUCLEV = 145,0,8,0 %; !  main structure level 
macro HM2$L_SERIALNUM = 456,0,32,0 %;   !  pack serial number 
macro HM2$T_STRUCNAME = 460,0,0,0 %;
literal HM2$S_STRUCNAME = 12;           !  structure (volume set name) 
macro HM2$T_VOLNAME = 472,0,0,0 %;
literal HM2$S_VOLNAME = 12;             !  volume name 
macro HM2$T_OWNERNAME = 484,0,0,0 %;
literal HM2$S_OWNERNAME = 12;           !  volume owner name 
macro HM2$T_FORMAT = 496,0,0,0 %;
literal HM2$S_FORMAT = 12;              !  volume format type 
macro HM2$W_CHECKSUM2 = 510,0,16,0 %;   !  second checksum 
 
!*** MODULE $DIRDEF ***
! +
! 
!  Directory entry structure for Files-11 Structure Level 2
! 
! -
literal DIR$C_FID = 0;                  !  normal file ID 
literal DIR$C_LINKNAME = 1;             !  symbolic name 
literal DIR$K_LENGTH = 6;               !  length of directory entry overhead 
literal DIR$C_LENGTH = 6;               !  length of directory entry overhead 
literal DIR$S_NAME = 80;                !  maximum length of name string 
literal DIR$S_DIRDEF = 6;
macro DIR$W_SIZE = 0,0,16,0 %;          !  size of directory record in bytes 
macro DIR$W_VERLIMIT = 2,0,16,0 %;      !  maximum number of versions 
macro DIR$B_FLAGS = 4,0,8,0 %;          !  status flags 
macro DIR$V_TYPE = 4,0,3,0 %;
literal DIR$S_TYPE = 3;                 !  directory entry type 
macro DIR$V_NEXTREC = 4,6,1,0 %;        !  another record of same name & type follows 
macro DIR$V_PREVREC = 4,7,1,0 %;        !  another record of same name & type precedes 
!  directory entry type codes 
macro DIR$B_NAMECOUNT = 5,0,8,0 %;      !  byte count of name string 
macro DIR$T_NAME = 6,0,0,0 %;           !  name string 
!  the version numbers and file ID's follow the
!  variable length name area in the form of a
!  blockvector. Each entry is as follows:
literal DIR$K_VERSION = 8;              !  size of each version entry 
literal DIR$C_VERSION = 8;              !  size of each version entry 
literal DIR$S_DIRDEF1 = 8;
macro DIR$W_VERSION = 0,0,16,1 %;       !  version number 
macro DIR$W_FID = 2,0,0,0 %;
literal DIR$S_FID = 6;                  !  file ID 
macro DIR$W_FID_NUM = 2,0,16,0 %;       !  file number 
macro DIR$W_FID_SEQ = 4,0,16,0 %;       !  file sequence number 
macro DIR$W_FID_RVN = 6,0,16,0 %;       !  relative volume number 
macro DIR$B_FID_RVN = 6,0,8,0 %;        !  alternate format RVN 
macro DIR$B_FID_NMX = 7,0,8,0 %;        !  alternate format file number extension 
literal DIR$S_DIRDEF2 = 1;
macro DIR$T_LINKNAME = 0,0,8,0 %;       !  symbolic link name (counted string) 
 
!*** MODULE $SCBDEF ***
! +
! 
!  Format of storage control block, Files-11 Structure Level 2
! 
! -
literal SCB$C_LEVEL2 = 512;             !  1000 octal = structure level 2 
literal SCB$M_MAPDIRTY = 1;
literal SCB$M_MAPALLOC = 2;
literal SCB$M_FILALLOC = 4;
literal SCB$M_QUODIRTY = 8;
literal SCB$M_HDRWRITE = 16;
literal SCB$M_CORRUPT = 32;
literal SCB$M_MAPDIRTY2 = 1;
literal SCB$M_MAPALLOC2 = 2;
literal SCB$M_FILALLOC2 = 4;
literal SCB$M_QUODIRTY2 = 8;
literal SCB$M_HDRWRITE2 = 16;
literal SCB$M_CORRUPT2 = 32;
literal SCB$M_NORMAL = 1;
literal SCB$M_NEW = 2;
literal SCB$M_REBLDNG = 4;
literal SCB$M_VERIFY = 8;
literal SCB$M_MVBEGUN = 16;
literal SCB$M_COPYING = 32;
literal SCB$M_MERGING = 64;
literal SCB$M_MINIMRG = 128;
literal SCB$M_CPY_RESET = 256;
literal SCB$M_BOOTING = 512;
literal SCB$M_FAILED = 32768;
literal SCB$M_MBR_FCPY = 1;
literal SCB$M_MBR_MERGE = 2;
literal SCB$M_MBR_CIP = 4;
literal SCB$M_MBR_MASTER = 8;
literal SCB$M_MBR_ERROR = 16;
literal SCB$M_MBR_SRC = 32;
literal SCB$M_MBR_VALID = 128;
literal SCB$K_LENGTH = 512;             ! Length of Structure
literal SCB$C_LENGTH = 512;             ! Length of Structure
literal SCB$S_SCBDEF = 512;
macro SCB$W_STRUCLEV = 0,0,16,0 %;      !  file structure level 
macro SCB$B_STRUCVER = 0,0,8,0 %;       !  file structure version 
macro SCB$B_STRUCLEV = 1,0,8,0 %;       !  principal file structure level 
macro SCB$W_CLUSTER = 2,0,16,0 %;       !  storage map cluster factor 
macro SCB$L_VOLSIZE = 4,0,32,0 %;       !  volume size in logical blocks 
macro SCB$L_BLKSIZE = 8,0,32,0 %;       !  number of physical blocks per logical block 
macro SCB$L_SECTORS = 12,0,32,0 %;      !  number of sectors per track 
macro SCB$L_TRACKS = 16,0,32,0 %;       !  number of tracks per cylinder 
macro SCB$L_CYLINDER = 20,0,32,0 %;     !  number of cylinders 
macro SCB$L_STATUS = 24,0,32,0 %;       !  volume status flags 
macro SCB$V_MAPDIRTY = 24,0,1,0 %;      !  storage map is dirty (partially updated) 
macro SCB$V_MAPALLOC = 24,1,1,0 %;      !  storage map is preallocated (lost blocks) 
macro SCB$V_FILALLOC = 24,2,1,0 %;      !  file numbers are preallocated (lost header slots) 
macro SCB$V_QUODIRTY = 24,3,1,0 %;      !  quota file is dirty (partially updated) 
macro SCB$V_HDRWRITE = 24,4,1,0 %;      !  file headers are write back cached 
macro SCB$V_CORRUPT = 24,5,1,0 %;       !  file structure is corrupt
macro SCB$L_STATUS2 = 28,0,32,0 %;      !  backup status - bits must match those above 
macro SCB$V_MAPDIRTY2 = 28,0,1,0 %;     !  storage map is dirty (partially updated) 
macro SCB$V_MAPALLOC2 = 28,1,1,0 %;     !  storage map is preallocated (lost blocks) 
macro SCB$V_FILALLOC2 = 28,2,1,0 %;     !  file numbers are preallocated (lost header slots) 
macro SCB$V_QUODIRTY2 = 28,3,1,0 %;     !  quota file is dirty (partially updated) 
macro SCB$V_HDRWRITE2 = 28,4,1,0 %;     !  file headers are write back cached 
macro SCB$V_CORRUPT2 = 28,5,1,0 %;      !  file structure is corrupt
macro SCB$W_WRITECNT = 32,0,16,0 %;     !  count of write access mounters.
macro SCB$T_VOLOCKNAME = 34,0,0,0 %;
literal SCB$S_VOLOCKNAME = 12;          !  name used for file system serialization on volume.
macro SCB$Q_MOUNTTIME = 46,0,0,0 %;
literal SCB$S_MOUNTTIME = 8;            !  time of last initial mount.
macro SCB$W_BACKREV = 54,0,16,0 %;      !  BACKUP revision number.
macro SCB$Q_GENERNUM = 56,0,0,0 %;
literal SCB$S_GENERNUM = 8;             !  shadow set revision number.
macro SCB$Q_UNIT_ID = 64,0,0,0 %;
literal SCB$S_UNIT_ID = 8;              !  Virtual Unit specifier
macro SCB$W_SHADOW_STATUS = 72,0,16,0 %; !  Volume status:
macro SCB$V_NORMAL = 72,0,1,0 %;        !  Shadow set populated and online
macro SCB$V_NEW = 72,1,1,0 %;           !  Newly created, no members yet
macro SCB$V_REBLDNG = 72,2,1,0 %;       !  rebuilding shadow set
macro SCB$V_VERIFY = 72,3,1,0 %;        !  This SS needs verification
macro SCB$V_MVBEGUN = 72,4,1,0 %;       !  Mount verification initiated
macro SCB$V_COPYING = 72,5,1,0 %;       !  Full copy in progreess
macro SCB$V_MERGING = 72,6,1,0 %;       !  Merge copy in progress
macro SCB$V_MINIMRG = 72,7,1,0 %;       !  Mini-merge in progress
macro SCB$V_CPY_RESET = 72,8,1,0 %;     !  Copy mode is reset.
macro SCB$V_BOOTING = 72,9,1,0 %;       !  Shadow set in booting state
macro SCB$V_FAILED = 72,15,1,0 %;       !  Shadow set not populated
macro SCB$B_MEMBER_STATUS = 74,0,8,0 %; !  Member status bytes
macro SCB$V_MBR_FCPY = 74,0,1,0 %;      !  Member involved in copy
macro SCB$V_MBR_MERGE = 74,1,1,0 %;     !  Member being merged
macro SCB$V_MBR_CIP = 74,2,1,0 %;       !  Copy (or merge) in progress
macro SCB$V_MBR_MASTER = 74,3,1,0 %;    !  Member with guaranteed correct
!   SCB. Same member as MEMBERSHIP_LOCK
macro SCB$V_MBR_ERROR = 74,4,1,0 %;     !  Error processing in progress
macro SCB$V_MBR_SRC = 74,5,1,0 %;       !  member can be used for source
macro SCB$V_MBR_VALID = 74,7,1,0 %;     !  Status information is valid
macro SCB$Q_MEMBER_IDS = 80,0,0,0 %;
literal SCB$S_MEMBER_IDS = 24;          !  Unit ID for member
macro SCB$L_SCB_LBN = 104,0,32,0 %;     !  Unit Control Block for VU
macro SCB$B_DEVICES = 108,0,8,0 %;      !  Number of devices in SS
macro SCB$B_MEMBERS = 109,0,8,0 %;      !  Number of full members
macro SCB$B_MAST_INDX = 110,0,8,0 %;    !  Array index to master UCB
macro SCB$B_MRG_TARGETS = 111,0,8,0 %;  !  Merge Copy Targets
macro SCB$B_FC_TARGETS = 112,0,8,0 %;   !  Full Copy Targets
macro SCB$W_CHECKSUM = 510,0,16,0 %;    !  block checksum 
 
!*** MODULE $BBMDEF ***
! +
! 
!  Bad block map (generated by bad block scan program)
! 
! -
literal BBM$K_POINTERS = 4;             !  start of retrieval pointers 
literal BBM$C_POINTERS = 4;             !  start of retrieval pointers 
literal BBM$S_BBMDEF = 512;
macro BBM$B_COUNTSIZE = 0,0,8,0 %;      !  retrieval pointer count field size 
macro BBM$B_LBNSIZE = 1,0,8,0 %;        !  retrieval pointer LBN field size 
macro BBM$B_INUSE = 2,0,8,0 %;          !  number of retrieval words in use 
macro BBM$B_AVAIL = 3,0,8,0 %;          !  number of retrieval words available 
macro BBM$W_CHECKSUM = 510,0,16,0 %;    !  block checksum 
!  retrieval pointer format
literal BBM$S_BBMDEF1 = 4;
macro BBM$B_HIGHLBN = 0,0,8,0 %;        !  high order LBN 
macro BBM$B_COUNT = 1,0,8,0 %;          !  block count 
macro BBM$W_LOWLBN = 2,0,16,0 %;        !  low order LBN 
literal BBM$S_BBMDEF2 = 5;
macro BBM$B_PREVHLBN = -4,0,8,0 %;
macro BBM$B_PREVCOUNT = -3,0,8,0 %;
macro BBM$W_PREVLLBN = -2,0,16,0 %;     !  previous retrieval pointer 
 
!*** MODULE $BBDDEF ***
! +
! 
!  Bad block descriptor (generated by formatters for RK06, RM03, et al)
! 
! -
literal BBD$K_DESCRIPT = 8;             !  start of bad block descriptors 
literal BBD$C_DESCRIPT = 8;             !  start of bad block descriptors 
literal BBD$S_BBDDEF = 512;
macro BBD$L_SERIAL = 0,0,32,0 %;        !  pack serial number 
macro BBD$W_RESERVED = 4,0,16,0 %;      !  reserved area (MBZ) 
macro BBD$W_FLAGS = 6,0,16,0 %;         !  pack status flags (zero for normal use) 
macro BBD$L_LASTWORD = 508,0,32,0 %;    !  last longword of block 
literal BBD$K_ENTRY = 4;
literal BBD$C_ENTRY = 4;
literal BBD$S_BBDDEF1 = 4;
macro BBD$L_BADBLOCK = 0,0,32,0 %;      !  individual bad block entry 
macro BBD$V_CYLINDER = 0,0,15,0 %;
literal BBD$S_CYLINDER = 15;            !  cylinder number of bad block 
macro BBD$V_SECTOR = 0,16,8,0 %;
literal BBD$S_SECTOR = 8;               !  sector number of bad block 
macro BBD$V_TRACK = 0,24,7,0 %;
literal BBD$S_TRACK = 7;                !  track number of bad block 
 
!*** MODULE $VSLDEF ***
! +
! 
!  Structure of a volume set list file entry. Record 1 contains the volume
!  set name. Record n+1 contains the volume label of RVN n in the volume set.
! 
! -
literal VSL$K_LENGTH = 64;
literal VSL$C_LENGTH = 64;
literal VSL$S_VSLDEF = 64;
macro VSL$T_NAME = 0,0,0,0 %;
literal VSL$S_NAME = 12;                !  volume name 
 
!*** MODULE $PBBDEF ***
! +
! 
!  Pending bad block file record format. Each record describes a disk block
!  on which an error has occurred which has not been turned over to the bad
!  block file.
! 
! -
literal PBB$M_READERR = 1;
literal PBB$M_WRITERR = 2;
literal PBB$K_LENGTH = 16;              !  length of entry 
literal PBB$C_LENGTH = 16;              !  length of entry 
literal PBB$S_PBBDEF = 16;
macro PBB$W_FID = 0,0,0,0 %;
literal PBB$S_FID = 6;                  !  File ID of containing file 
macro PBB$B_FLAGS = 6,0,8,0 %;          !  status flags 
macro PBB$V_READERR = 6,0,1,0 %;        !  read error occurred 
macro PBB$V_WRITERR = 6,1,1,0 %;        !  write error occurred 
macro PBB$B_COUNT = 7,0,8,0 %;          !  error count 
macro PBB$L_VBN = 8,0,32,0 %;           !  virtual block in file 
macro PBB$L_LBN = 12,0,32,0 %;          !  logical block number 
 
!*** MODULE $DQFDEF ***
! +
! 
!  Structure of disk quota file record. Each record contains the authorization
!  and usage of a particular UIC for this volume set.
! 
! -
literal DQF$M_ACTIVE = 1;
literal DQF$K_LENGTH = 32;
literal DQF$C_LENGTH = 32;
literal DQF$S_DQFDEF = 32;
macro DQF$L_FLAGS = 0,0,32,0 %;         !  flags longword, containing... 
macro DQF$V_ACTIVE = 0,0,1,0 %;         !  record contains an active entry 
macro DQF$L_UIC = 4,0,32,0 %;           !  UIC of this record 
macro DQF$L_USAGE = 8,0,32,0 %;         !  number of blocks in use 
macro DQF$L_PERMQUOTA = 12,0,32,0 %;    !  permanent disk quota 
macro DQF$L_OVERDRAFT = 16,0,32,0 %;    !  overdraft limit 
! 
! ****************************************************************************
! *                                                                          *
! *  Copyright (c) 1990                                                      *
! *  by DIGITAL Equipment Corporation, Maynard, Mass.                        *
! *                                                                          *
! *  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.                 *
! *                                                                          *
! ****************************************************************************
! ********************************************************************************************************************************
!  Created 26-JUN-1990 17:52:32 by VAX SDL T3.2-8      Source: 25-APR-1990 17:47:51 _$254$DUA115:[SHRLIB]SYS_OFFSETS.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE SYSVECTOR IDENT X-4 ***
! 
!  Define offsets to System Service Areas
! 
!  offset to 1st system vector area
!  offset to 2nd system vector area
!  offset to 4th system vector area
!  offset to 4th system vector area
!  offset to rms service vector area
!  offset to ruf service vector area
!  offset to special area in the
!  system service vector area.
!  spare vectors
!  offset to global symbol area
! 
!  Global Symbol offsets
! 
literal BASE$SYS$K_GL_ASTRET = 784;     !  Return address from AST dispatching
literal BASE$SYS$K_GL_COMMON = 788;     !  Address of common core descriptor
! 
!  	1st area of system service vector offsets
! 
! 		*** WARNING ***
! 	There should be no new vectors added to the end
! 	of this area, because there would be an overlap
! 	into the common wait code area.
! 
literal BASE$EXE$K_QIOW = 0;            !  QIO and wait
literal BASE$EXE$K_QIOW_2 = 8;          !  ******* DUMMY *******
literal BASE$EXE$K_QIOW_3 = 16;         !  ******* DUMMY *******
literal BASE$EXE$K_CLI = 24;            !  Command interpreter dispatch
literal BASE$EXE$K_ADJSTK = 32;         !  Adjust outer mode stack pointer
literal BASE$EXE$K_ADJWSL = 40;         !  Adjust working set limit
literal BASE$EXE$K_ALCDNP = 48;         !  Allocate diagnostic page
literal BASE$EXE$K_ALLOC = 56;          !  Allocate device
literal BASE$EXE$K_ASCEFC = 64;         !  Associate common event flag cluster
literal BASE$EXE$K_ASCTIM = 72;         !  Convert to ASCII time
literal BASE$EXE$K_ASSIGN = 80;         !  Assign I/O channel
literal BASE$EXE$K_BINTIM = 88;         !  Convert to binary time
literal BASE$EXE$K_CANCEL = 96;         !  Cancel I/O on channel
literal BASE$EXE$K_CANTIM = 104;        !  Cancel timer request
literal BASE$EXE$K_CANWAK = 112;        !  Cancel wake up requests
literal BASE$EXE$K_CRMPSC = 120;        !  Create and map section
literal BASE$EXE$K_CLRPAR = 128;        !  Clear hard parity error
literal BASE$EXE$K_CMEXEC = 136;        !  Change mode to executive
literal BASE$EXE$K_CMKRNL = 144;        !  Change mode to kernel
literal BASE$EXE$K_CLREF = 152;         !  Clear event flag
literal BASE$EXE$K_CNTREG = 160;        !  Contract region
literal BASE$EXE$K_GETPTI = 168;        !  Get page table information
literal BASE$EXE$K_CRELOG = 176;        !  Create logical name
literal BASE$EXE$K_CREMBX = 184;        !  Create mailbox
literal BASE$EXE$K_CREPRC = 192;        !  Create process
literal BASE$EXE$K_CRETVA = 200;        !  Create virtual address
literal BASE$EXE$K_DACEFC = 208;        !  Disassociate event flag cluster
literal BASE$EXE$K_DALLOC = 216;        !  Deallocate device
literal BASE$EXE$K_DASSGN = 224;        !  Deassign I/O channel
literal BASE$EXE$K_DCLAST = 232;        !  Declare AST system service
literal BASE$EXE$K_DCLEXH = 240;        !  Declare exit handler
literal BASE$EXE$K_DELLOG = 248;        !  Delete logical name
literal BASE$EXE$K_DELMBX = 256;        !  Delete mailbox
literal BASE$EXE$K_DELPRC = 264;        !  Delete process
literal BASE$EXE$K_DELTVA = 272;        !  Delete virtual address
literal BASE$EXE$K_DGBLSC = 280;        !  Delete global section
literal BASE$EXE$K_DLCDNP = 288;        !  Deallocate diagnostic page
literal BASE$EXE$K_DLCEFC = 296;        !  Delete common event cluster
literal BASE$EXE$K_UPDSEC = 304;        !  Update section file
literal BASE$EXE$K_SNDERR = 312;        !  Send message to error logger
literal BASE$EXE$K_EXIT = 320;          !  Image exit
literal BASE$EXE$K_EXPREG = 328;        !  Expand program region
literal BASE$EXE$K_FAO = 336;           !  Format ASCII output
literal BASE$EXE$K_FAOL = 344;          !  Format ASCII output with value list
literal BASE$EXE$K_FORCEX = 352;        !  Force exit
literal BASE$EXE$K_IMGSTA = 360;        !  Image startup
literal BASE$EXE$K_SNDJBC = 368;        !  Send message to job controller
literal BASE$EXE$K_GETTIM = 376;        !  Get system time
literal BASE$EXE$K_UPDSECW = 384;       !  Update section and wait
literal BASE$EXE$K_HIBER = 392;         !  Hibernate
literal BASE$EXE$K_IMGACT = 400;        !  Image activation
literal BASE$EXE$K_LCKPAG = 408;        !  Lock page in memory
literal BASE$EXE$K_LKWSET = 416;        !  Lock pages in working set
literal BASE$EXE$K_MGBLSC = 424;        !  Map global section
literal BASE$EXE$K_PURGWS = 432;        !  Purge working set
literal BASE$EXE$K_NUMTIM = 440;        !  Convert time to numeric
literal BASE$EXE$K_SNDOPR = 448;        !  Send message to operator
literal BASE$EXE$K_QIO = 456;           !  Queue I/O request
literal BASE$EXE$K_READEF = 464;        !  Read event flag
literal BASE$EXE$K_RESUME = 472;        !  Resume process
literal BASE$EXE$K_RUNDWN = 480;        !  Rundown
literal BASE$EXE$K_SNDSMB = 488;        !  Send message to symbiont manager
literal BASE$EXE$K_SCHDWK = 496;        !  Schedule wakeup
literal BASE$EXE$K_SETAST = 504;        !  Set AST enable service
literal BASE$EXE$K_SETEF = 512;         !  Set event flag
literal BASE$EXE$K_SETEXV = 520;        !  Set exception vector
literal BASE$EXE$K_SETPRN = 528;        !  Set process name
literal BASE$EXE$K_SETPRA = 536;        !  Set power recovery AST
literal BASE$EXE$K_SETIMR = 544;        !  Set timer
literal BASE$EXE$K_SETPRI = 552;        !  Set process priority
literal BASE$EXE$K_SETPRT = 560;        !  Set page protection
literal BASE$EXE$K_SETRWM = 568;        !  Set resource wait mode
literal BASE$EXE$K_SETSFM = 576;        !  Set system service failure mode
literal BASE$EXE$K_SETSWM = 584;        !  Set process swap mode
literal BASE$EXE$K_SUSPND = 592;        !  Suspend process
literal BASE$EXE$K_TRNLOG = 600;        !  Translate logical name
literal BASE$EXE$K_ULKPAG = 608;        !  Unlock page from memory
literal BASE$EXE$K_ULWSET = 616;        !  Unlock pages from working set
literal BASE$EXE$K_UNWIND = 624;        !  Unwind procedure call stack
literal BASE$EXE$K_WAITFR = 632;        !  Wait for event flag
literal BASE$EXE$K_WAKE = 640;          !  Wake process
literal BASE$EXE$K_WFLAND = 648;        !  Wait for logical AND of event flags
literal BASE$EXE$K_WFLOR = 656;         !  Wait for logical OR of event flags
literal BASE$EXE$K_BRDCST = 664;        !  Broadcast to terminals
literal BASE$EXE$K_DCLCMH = 672;        !  Declare change mode handler
literal BASE$EXE$K_SETPFM = 680;        !  Set page fault monitoring
literal BASE$EXE$K_GETMSG = 688;        !  Get message
literal BASE$EXE$K_DERLMB = 696;        !  Declare error log mailbox
literal BASE$EXE$K_CANEXH = 704;        !  Cancel exit handler
literal BASE$EXE$K_GETCHN = 712;        !  Get channel information
literal BASE$EXE$K_GETDEV = 720;        !  Get device information
literal BASE$EXE$K_GETJPI = 728;        !  Get job process information
literal BASE$EXE$K_PUTMSG = 736;        !  Put formatted error message
literal BASE$EXE$K_EXCMSG = 744;        !  Output exception summary message
literal BASE$EXE$K_SNDACC = 752;        !  Send message to acounting manager
literal BASE$EXE$K_SETIME = 760;        !  Set system time
literal BASE$EXE$K_SETPRV = 768;        !  Set privileges
literal BASE$EXE$K_CLRAST = 776;        !  Clear active AST
literal BASE$EXE$K_CLRAST_2 = 784;      !  ******* DUMMY ********
literal BASE$EXE$K_SRCHANDLER = 792;    !  Search for condition handler
! 	This is a special part of the system service vector
! 	area.  It contains the common wait code of the $UPDSECW,
! 	$GETDVIW, $GETJPIW, $GETSYIW, and $SNDJBCW system services,
! 	along a part of the command interpreter dispatch vector.
! 	Do not add vectors here!
literal BASE$EXE$K_WAIT_FORM = 800;     !  Marks beginning of common wait code area
!  These two areas are adjacent; do not add vectors here.
! 
! 	RMS service vector offsets
! 
literal BASE$RMS$K_DELETE = 872;        !  Delete a record
literal BASE$RMS$K_FIND = 880;          !  Find record
literal BASE$RMS$K_FREE = 888;          !  Release lock on all records
literal BASE$RMS$K_GET = 896;           !  Get a record
literal BASE$RMS$K_PUT = 904;           !  Put a record
literal BASE$RMS$K_READ = 912;          !  Read a block
literal BASE$RMS$K_RELEASE = 920;       !  Release lock on named record
literal BASE$RMS$K_UPDATE = 928;        !  Rewrite existing record
literal BASE$RMS$K_WAIT = 936;          !  Stall for record operation complete
literal BASE$RMS$K_WRITE = 944;         !  Write block
literal BASE$RMS$K_CLOSE = 952;         !  Close file
literal BASE$RMS$K_CONNECT = 960;       !  Connect rab
literal BASE$RMS$K_CREATE = 968;        !  Create file
literal BASE$RMS$K_DISCONNECT = 976;    !  Disconnect rab
literal BASE$RMS$K_DISPLAY = 984;       !  Display file information
literal BASE$RMS$K_ERASE = 992;         !  Erase (delete) file
literal BASE$RMS$K_EXTEND = 1000;       !  Extend file allocation
literal BASE$RMS$K_FLUSH = 1008;        !  Finish i/o activity for stream
literal BASE$RMS$K_MODIFY = 1016;       !  Modify file attributes
literal BASE$RMS$K_NXTVOL = 1024;       !  Next volume
literal BASE$RMS$K_OPEN = 1032;         !  Open file
literal BASE$RMS$K_REWIND = 1040;       !  Rewind file
literal BASE$RMS$K_SPACE = 1048;        !  Position for transfer
literal BASE$RMS$K_TRUNCATE = 1056;     !  Truncate file
literal BASE$RMS$K_ENTER = 1064;        !  Enter filename into directory
literal BASE$RMS$K_PARSE = 1072;        !  Parse filename specification
literal BASE$RMS$K_REMOVE = 1080;       !  Remove filename from directory
literal BASE$RMS$K_RENAME = 1088;       !  Rename a file
literal BASE$RMS$K_SEARCH = 1096;       !  Search a file directory
literal BASE$RMS$K_SETDDIR = 1104;      !  Set default directory string
literal BASE$RMS$K_SETDFPROT = 1112;    !  Set default file protection mask
literal BASE$RMS$K_SSVEXC = 1120;       !  Generate sys serv exception
literal BASE$RMS$K_RMSRUNDWN = 1128;    !  Perform rundown on RMS files
literal BASE$RMS$K_SPARE_VECTOR_1 = 1136; !  Obsolete RMS Recovery Unit Handler
literal BASE$RMS$K_FILESCAN = 1144;     !  Perform syntax check for file specs
!  These two areas are adjacent; do not add vectors here.
! 
!  2nd area of system service vector offsets
! 
literal BASE$EXE$K_DCLEVT = 1416;       !  Declare an event
literal BASE$EXE$K_SETEVTAST = 1424;    !  Set Event AST
literal BASE$EXE$K_SETEVTASTW = 1432;   !  Set Event AST and wait
literal BASE$EXE$K_SETEVTASTW_2 = 1440; !  ******* DUMMY *******
literal BASE$EXE$K_SETEVTASTW_3 = 1448; !  ******* DUMMY *******
literal BASE$EXE$K_CANEVTAST = 1456;    !  Cancel Event AST
literal BASE$EXE$K_GETEVI = 1464;       !  Get event information
literal BASE$EXE$K_ENQ = 1472;          !  Enqueue
literal BASE$EXE$K_DEQ = 1480;          !  Dequeue
literal BASE$EXE$K_ENQW = 1488;         !  Enqueue and wait
literal BASE$EXE$K_ENQW_2 = 1496;       !  ******* DUMMY *******
literal BASE$EXE$K_ENQW_3 = 1504;       !  ******* DUMMY *******
literal BASE$EXE$K_SETSSF = 1512;       !  Set system service filter mask
literal BASE$EXE$K_SETSTK = 1520;       !  Set stack limits
literal BASE$EXE$K_GETSYI = 1528;       !  Get system information
literal BASE$EXE$K_IMGFIX = 1536;       !  Image address relocation fixup
literal BASE$EXE$K_IMGFIX_2 = 1544;     !  ********** TEMP **********
literal BASE$EXE$K_GETDVI = 1552;       !  Get device and volume information
literal BASE$EXE$K_GETDVIW = 1560;      !  Get device information and wait
literal BASE$EXE$K_GETJPIW = 1568;      !  Get job/process information and wait
literal BASE$EXE$K_GETJPIW_2 = 1576;    !  ********* DUMMY *********
literal BASE$EXE$K_GETSYIW = 1584;      !  Get system information and wait
literal BASE$EXE$K_SNDJBCW = 1592;      !  Send to job controller and wait
literal BASE$EXE$K_SYNCH = 1600;        !  Synchronize EFN and IOSB
!  These two areas are adjacent; do not add vectors here.
! 
!  3rd area of system service vector offsets
! 
literal BASE$EXE$K_ERAPAT = 1648;       !  Generate a security erase pattern
literal BASE$EXE$K_CRELNT = 1656;       !  Create logical name table
literal BASE$EXE$K_CRELNM = 1664;       !  Create logical name
literal BASE$EXE$K_DELLNM = 1672;       !  Delete logical name
literal BASE$EXE$K_TRNLNM = 1680;       !  Translate logical name
literal BASE$EXE$K_GETLKI = 1688;       !  Get lock information
literal BASE$EXE$K_GETLKIW = 1696;      !  Get lock information and wait
literal BASE$EXE$K_GETLKIW_2 = 1704;    !  ******** DUMMY ********
literal BASE$EXE$K_ASCTOID = 1712;      !  ASCII to identifier conversion
literal BASE$EXE$K_FINISH_RDB = 1720;   !  Finish RDB context stream
literal BASE$EXE$K_IDTOASC = 1728;      !  Identifier to ASCII conversion
literal BASE$EXE$K_BRKTHRU = 1736;      !  Break through writes
literal BASE$EXE$K_GRANTID = 1744;      !  Grant identifier to process
literal BASE$EXE$K_REVOKID = 1752;      !  Revoke identifier from process
literal BASE$EXE$K_CHKPRO = 1760;       !  General protection check routine
literal BASE$EXE$K_BRKTHRUW = 1768;     !  Break though write and wait
literal BASE$EXE$K_BRKTHRUW_2 = 1776;   !  ******** DUMMY ********
literal BASE$EXE$K_GETQUI = 1784;       !  Get queue information
literal BASE$EXE$K_GETQUIW = 1792;      !  Get queue information and wait
literal BASE$EXE$K_GETQUIW_2 = 1800;    !  ******** DUMMY ********
!  These two areas are adjacent; do not add vectors here.
literal BASE$EXE$K_PROCESS_SCAN = 1808; !  Process scan across cluster
literal BASE$EXE$K_DEVICE_SCAN = 1816;  !  Wildcard device scan
literal BASE$EXE$K_DCLRNH = 1824;       !  Declare snapshot restart handler
literal BASE$EXE$K_CANRNH = 1832;       !  Cancel snapshot restart handler
literal BASE$EXE$K_EXTRNH = 1840;       !  Exit from a snapshot rundown handler
literal BASE$EXE$K_HASH_PASSWORD = 1848; !  Hash password
literal BASE$EXE$K_MAKE_REF = 1856;     !  Reference unloadable exec image
literal BASE$EXE$K_REMOVE_REF = 1864;   !  End of reference to unloadable exec image
literal BASE$EXE$K_CREATE_BUFOBJ = 1872; !  Create buffer object for I/O
literal BASE$EXE$K_DELETE_BUFOBJ = 1880; !  Delete buffer object for I/O
literal BASE$EXE$K_DIAGNOSE = 1888;     !  Diagnose service for affinity work
literal BASE$EXE$K_CALL_HANDL_JACKET = 1896; !  Call condition handler
!    supersedes SYS$CALL_HANDL
literal BASE$EXE$K_TIMCON = 1904;       !  Convert Smithsonian to UTC, and back
literal BASE$EXE$K_GETUTC = 1912;       !  Get a UTC format time
literal BASE$EXE$K_NUMUTC = 1920;       !  Convert UTC to numeric time
literal BASE$EXE$K_BINUTC = 1928;       !  Convert ASCII to binary UTC time
literal BASE$EXE$K_ASCUTC = 1936;       !  Convert Binary UTC time to ASCII
literal BASE$EXE$K_SUBSYSTEM = 1944;    !  Modify protected subsystem attributes
literal BASE$EXE$K_DNS = 1952;          !  Distributed Name Service Clerk interface
literal BASE$EXE$K_DNSW = 1960;         !  Distributed Name Service Clerk interface
!  These two areas are adjacent; do not add vectors here.
literal BASE$DDTM$K_READY_TO_COMMIT = 1968; !  DECdtm application is finished
literal BASE$DDTM$K_READY_TO_COMMITW = 1976; !  DECdtm application is finished (wait form)
literal BASE$DDTM$K_READY_TO_COMMITW_2 = 1984; !  *** DUMMY ***
!  These two areas are adjacent; do not add vectors here.
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_1 = 1992; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_2 = 2000; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_3 = 2008; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_4 = 2016; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_5 = 2024; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_6 = 2032; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_7 = 2040; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_8 = 2048; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_9 = 2056; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_10 = 2064; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_11 = 2072; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_3_12 = 2080; !  Reserved for future
!  These two areas are adjacent; do not add vectors here.
! 
! 	RUF system services
! 
literal BASE$EXE$K_START_RU = 2088;     ! 
literal BASE$EXE$K_PREPARE_RU = 2096;   ! 
literal BASE$EXE$K_COMMIT_RU = 2104;    ! 
literal BASE$EXE$K_ABORT_RU = 2112;     ! 
literal BASE$EXE$K_DCLRUH = 2120;       ! 
literal BASE$EXE$K_CANRUH = 2128;       ! 
literal BASE$EXE$K_JOIN_RU = 2136;      ! 
literal BASE$EXE$K_UNJOIN_RU = 2144;    ! 
literal BASE$EXE$K_RUNDOWN_RU = 2152;   ! 
literal BASE$EXE$K_GET_RUID = 2160;     ! 
literal BASE$EXE$K_END_RU = 2168;       ! 
literal BASE$EXE$K_END_RU_2 = 2176;     ! 
!  These two areas are adjacent; do not add vectors here.
literal BASE$EXE$K_MTACCESS = 2184;     !  Magnetic Tape Accessibility
literal BASE$EXE$K_GETLUI = 2192;       !  Get license unit information
literal BASE$EXE$K_GRANT_LICENSE = 2200; !  Authorize software product execution
literal BASE$EXE$K_RELEASE_LICENSE = 2208; !  Revoke software product authorization
literal BASE$EXE$K_SIGPRC = 2216;       !  Signal another process
literal BASE$EXE$K_RESCHED = 2224;      !  Relenquish CPU via rescheduling interrupt
literal BASE$EXE$K_GETSECI = 2232;      !  Get section information
literal BASE$EXE$K_LOOKUP_LICENSE = 2240; !  LP interface to $GRANT_LICENSE
literal BASE$EXE$K_IPC = 2248;
!  These two areas are adjacent; do not add vectors here.
literal BASE$DDTM$K_START_TRANS = 2256; !  Start transaction
literal BASE$DDTM$K_END_TRANS = 2264;   !  End transaction
literal BASE$DDTM$K_ABORT_TRANS = 2272; !  Abort transaction
literal BASE$DDTM$K_DECLARE_RM = 2280;  !  Declare resource manager
literal BASE$DDTM$K_FORGET_RM = 2288;   !  Forget resource manager
literal BASE$DDTM$K_JOIN_RM = 2296;     !  Join RM to transaction
literal BASE$DDTM$K_FINISH_RMOP = 2304; !  Complete transaction state transition
literal BASE$DDTM$K_ADD_BRANCH = 2312;  !  Add child node to transaction
literal BASE$DDTM$K_START_BRANCH = 2320; !  Start subordinate transaction branch
literal BASE$DDTM$K_START_TRANSW = 2328; !  Start transaction
literal BASE$DDTM$K_START_TRANSW_2 = 2336; !  *** DUMMY ***
literal BASE$DDTM$K_START_TRANSW_3 = 2344; !  *** DUMMY ***
literal BASE$DDTM$K_END_TRANSW = 2352;  !  End transaction
literal BASE$DDTM$K_ABORT_TRANSW = 2360; !  Abort transaction
literal BASE$DDTM$K_DECLARE_RMW = 2368; !  Declare resource manager
literal BASE$DDTM$K_FORGET_RMW = 2376;  !  Forget resource manager
literal BASE$DDTM$K_JOIN_RMW = 2384;    !  Join RM to transaction
literal BASE$DDTM$K_FINISH_RMOPW = 2392; !  Complete transaction state transition
literal BASE$DDTM$K_ADD_BRANCHW = 2400; !  Add child node to transaction
literal BASE$DDTM$K_START_BRANCHW = 2408; !  Start subordinate transaction branch
!  These two areas are adjacent; do not add vectors here.
literal BASE$EXE$K_IPCW = 2416;         !  InterProcess Communication Request and Wait
literal BASE$EXE$K_IPCW_2 = 2424;       !  *** DUMMY ***
literal BASE$EXE$K_IPCW_3 = 2432;       !  *** DUMMY ***
literal BASE$EXE$K_CREATE_UID = 2440;   !  Create Universal Identifier
literal BASE$EXE$K_EMAA = 2448;         !  Entity Management Agent Access Call
literal BASE$EXE$K_EVDPOSTEVENT = 2456; !  Post Event Call
!  These two areas are adjacent; do not add vectors here.
literal BASE$EXE$K_ENABLE_VP_USE = 2464; !  Enable use of vector processor
literal BASE$EXE$K_ENABLE_VP_USE_INT = 2472; !  Enable use of vector processor, internal form
literal BASE$EXE$K_DISABLE_VP_USE = 2480; !  Disable use of vector procssor
literal BASE$EXE$K_DISABLE_VP_USE_INT = 2488; !  Disable use of vector processor, internal form
literal BASE$EXE$K_RELEASE_VP = 2496;   !  Release the vector processor
literal BASE$EXE$K_RELEASE_VP_INT = 2504; !  Release the vector processorm internal form
literal BASE$EXE$K_RESTORE_VP_EXCEPTION = 2512; !  Restore vector exception state
literal BASE$EXE$K_RESTORE_VP_EXC_INT = 2520; !  Restore vector exception state, internal form
literal BASE$EXE$K_SAVE_VP_EXCEPTION = 2528; !  Save vector exception state
literal BASE$EXE$K_SAVE_VP_EXC_INT = 2536; !  Save vector exception state, internal form
literal BASE$EXE$K_RESTORE_VP_STATE = 2544; !  Restore mainline vector state	
! 
!  The following area is free for the addition of new system services.
!  Add new services before SS_VECTOR_SPARE.
! 
literal BASE$EXE$K_SS_VECTOR_DUMMY_8_1 = 2552; !  Reserved for future
literal BASE$EXE$K_SS_VECTOR_DUMMY_8_2 = 2560; !  Reserved for future
literal BASE$EXE$K_REPORT_EVENT = 2568; !  Report performance event to Performance Data Platform
literal BASE$EXE$K_SS_VECTOR_DUMMY_8_3 = 2576; !  Reserved for future
!  Add new system service vectors above this line!  If you have to
!  start a new area then you'd better know what you're doing or get
!  someone who does to help you!
literal BASE$EXE$K_SS_VECTOR_SPARE = 2584; !  Marks beginning of spare vector area
! 
! ****************************************************************************
! *                                                                          *
! *  Copyright (c) 1990                                                      *
! *  by DIGITAL Equipment Corporation, Maynard, Mass.                        *
! *                                                                          *
! *  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.                 *
! *                                                                          *
! ****************************************************************************
! ********************************************************************************************************************************
!  Created 26-JUN-1990 17:52:37 by VAX SDL T3.2-8      Source: 27-FEB-1987 15:50:44 _$254$DUA115:[SHRLIB]SYSTEM_PRIMITIVES_DATA.SDL 
! ********************************************************************************************************************************
 
!*** MODULE $SYSTEM_PRIM_DATA ***
! +
!  DEFINITION OF SYSTEM PRIMITIVES LOCAL DATA
! -
literal S_SYSTEM_PRIM_DATA = 84;
macro IOC_GQ_IRPIQ = 0,0,0,0 %;
literal S_IOC_GQ_IRPIQ = 8;             !  I/O REQUEST PACKET IQ LISTHEAD
macro IOC_GL_IRPREM = 8,0,32,0 %;
macro IOC_GL_IRPCNT = 12,0,32,0 %;
macro IOC_GL_IRPMIN = 16,0,32,0 %;
macro IOC_GL_XTRA1 = 20,0,32,0 %;       !  EXTRA LONGWORD for QUAD align
macro IOC_GQ_SRPIQ = 24,0,0,0 %;
literal S_IOC_GQ_SRPIQ = 8;             !  SMALL REQUEST PACKET IQ LISTHEAD
macro IOC_GL_SRPSIZE = 32,0,32,0 %;
macro IOC_GL_SRPMIN = 36,0,32,0 %;
macro IOC_GL_SRPSPLIT = 40,0,32,0 %;
macro IOC_GL_SRPREM = 44,0,32,0 %;
macro IOC_GL_SRPCNT = 48,0,32,0 %;
macro IOC_GL_XTRA2 = 52,0,32,0 %;       !  EXTRA LONGWORD for QUAD align
macro IOC_GQ_LRPIQ = 56,0,0,0 %;
literal S_IOC_GQ_LRPIQ = 8;             !  LARGE REQUEST PACKET IQ LISTHEAD
macro IOC_GL_LRPSIZE = 64,0,32,0 %;
macro IOC_GL_LRPMIN = 68,0,32,0 %;
macro IOC_GL_LRPSPLIT = 72,0,32,0 %;
macro IOC_GL_LRPREM = 76,0,32,0 %;
macro IOC_GL_LRPCNT = 80,0,32,0 %;
 
!*** MODULE FORKQ ***
literal S_FORKQ = 8;
macro EXE_GL_FKWAITFL = 0,0,32,0 %;     !  FORK-AND-WAIT QUEUE FL
macro EXE_GL_FKWAITBL = 4,0,32,0 %;     !  FORK-AND-WAIT QUEUE BL
! 
! ****************************************************************************
! *                                                                          *
! *  Copyright (c) 1990                                                      *
! *  by DIGITAL Equipment Corporation, Maynard, Mass.                        *
! *                                                                          *
! *  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.                 *
! *                                                                          *
! ****************************************************************************
! ********************************************************************************************************************************
!  Created 26-JUN-1990 17:52:41 by VAX SDL T3.2-8      Source: 24-APR-1985 13:18:46 _$254$DUA115:[SHRLIB]IO_ROUTINES_DATA.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE $IO_ROUTINES_DATA ***
! +
!  DEFINITION OF IO_ROUTINES IMAGE LOCAL DATA
! -
literal S_IO_ROUTINES_DATA = 8;
macro IOC_GL_PSFL = 0,0,32,0 %;         !  I/O POST QUEUE FORWARD LINK
macro IOC_GL_PSBL = 4,0,32,0 %;         !  I/O POST QUEUE BACKWARD LINK
! 
! ****************************************************************************
! *                                                                          *
! *  Copyright (c) 1990                                                      *
! *  by DIGITAL Equipment Corporation, Maynard, Mass.                        *
! *                                                                          *
! *  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.                 *
! *                                                                          *
! ****************************************************************************
! ********************************************************************************************************************************
!  Created 26-JUN-1990 17:52:46 by VAX SDL T3.2-8      Source: 25-JUL-1989 13:46:08 _$254$DUA115:[SHRLIB]LDRDEF.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE LDRPTE ***
literal LDRPTE$M_LINK = 2097151;
literal LDRPTE$M_FLAG = 2097152;
literal LDRPTE$S_LDRPTEDEF = 8;
macro LDRPTE$L_LINK_PTE = 0,0,32,0 %;   !  link word
macro LDRPTE$V_LINK = 0,0,21,0 %;
literal LDRPTE$S_LINK = 21;             !  actual link field
macro LDRPTE$V_FLAG = 0,21,1,0 %;       !  1 If a single free PTE
macro LDRPTE$L_COUNT = 4,0,32,0 %;      !  count of free PTE's
 
!*** MODULE LDRIMG ***
literal LDR_DYN$M_PAG = 1;
literal LDR_DYN$M_UNL = 2;
literal LDR_DYN$M_OVR = 4;
literal LDR_DYN$S_LDR_DYN = 4;
macro LDR_DYN$V_PAG = 0,0,1,0 %;
macro LDR_DYN$V_UNL = 0,1,1,0 %;
macro LDR_DYN$V_OVR = 0,2,1,0 %;
literal LDRIMG$M_NOT_XQP = 1;
literal LDRIMG$M_DELAY_INIT = 2;
literal LDRIMG$M_NO_PFN_DB = 4;
literal LDRIMG$M_FIX_UPS_DONE = 8;
literal LDRIMG$M_NONPAGED_FIXUP = 16;
literal LDRIMG$M_NOOVERLAY = 32;
literal LDRIMG$M_CAN_UNL = 64;
literal LDRIMG$M_UNL_PEN = 128;
literal LDRIMG$M_SYNC = 256;
literal LDRIMG$M_VALID = 512;
literal LDRIMG$K_LENGTH = 164;
literal LDRIMG$C_LENGTH = 164;
literal LDRIMG$S_LDRIMGDEF = 164;
macro LDRIMG$L_FLINK = 0,0,32,0 %;      !  forward link
macro LDRIMG$L_BLINK = 4,0,32,0 %;      !  backward link
macro LDRIMG$W_LENGTH = 8,0,16,0 %;     !  structure length
macro LDRIMG$B_TYPE = 10,0,8,0 %;       !  DYN$C_LOADCODE	
macro LDRIMG$B_IMGNAMLEN = 12,0,8,0 %;  !  count for image name
macro LDRIMG$T_IMGNAM = 13,0,0,0 %;
literal LDRIMG$S_IMGNAM = 39;           !  image name string
macro LDRIMG$L_BASE = 52,0,32,0 %;      !  base virtual address
macro LDRIMG$L_PAGE_COUNT = 56,0,32,0 %; !  image size in pages
macro LDRIMG$R_FLAGS_OVERLAY = 60,0,32,0 %;
macro LDRIMG$L_FLAGS = 60,0,32,0 %;     !  status flags
macro LDRIMG$R_FLAGS_BITS = 60,0,16,0 %;
macro LDRIMG$V_NOT_XQP = 60,0,1,0 %;    !  not opened by XQP
macro LDRIMG$V_DELAY_INIT = 60,1,1,0 %; !  needs delayed initialization
macro LDRIMG$V_NO_PFN_DB = 60,2,1,0 %;  !  no PFN data base when loaded
macro LDRIMG$V_FIX_UPS_DONE = 60,3,1,0 %; !  address fix-ups complete
macro LDRIMG$V_NONPAGED_FIXUP = 60,4,1,0 %; !  Non-paged fix-ups done
macro LDRIMG$V_NOOVERLAY = 60,5,1,0 %;  !  not overlaid by bugcheck 
macro LDRIMG$V_CAN_UNL = 60,6,1,0 %;    !  unloadable exec image 
macro LDRIMG$V_UNL_PEN = 60,7,1,0 %;    !  exec image unload is pending 
macro LDRIMG$V_SYNC = 60,8,1,0 %;       !  synchronize access to this block
macro LDRIMG$V_VALID = 60,9,1,0 %;      !  contents of this block are valid 
macro LDRIMG$Q_LINKTIME = 64,0,0,0 %;
literal LDRIMG$S_LINKTIME = 8;          !  link time
macro LDRIMG$L_VERSION = 72,0,32,0 %;   !  image version
macro LDRIMG$L_NONPAG_R_BASE = 76,0,32,0 %; !  nonpaged read-only base
macro LDRIMG$L_NONPAG_R_LEN = 80,0,32,0 %; !  nonpaged read-only length
macro LDRIMG$L_NONPAG_W_BASE = 84,0,32,0 %; !  nonpaged writable base
macro LDRIMG$L_NONPAG_W_LEN = 88,0,32,0 %; !  nonpaged writable length
macro LDRIMG$L_PAG_R_BASE = 92,0,32,0 %; !  paged read-only base
macro LDRIMG$L_PAG_R_LEN = 96,0,32,0 %; !  paged read-only length
macro LDRIMG$L_PAG_W_BASE = 100,0,32,0 %; !  paged writable base
macro LDRIMG$L_PAG_W_LEN = 104,0,32,0 %; !  paged writable length
macro LDRIMG$L_FIXUP_BASE = 108,0,32,0 %; !  base VA of .ADDRESS fixup section
macro LDRIMG$L_FIXUP_LEN = 112,0,32,0 %; !  size of fixup section
macro LDRIMG$L_INIT_BASE = 116,0,32,0 %; !  base VA of initialization code
macro LDRIMG$L_INIT_LEN = 120,0,32,0 %; !  size of initialization code
macro LDRIMG$W_PAG_R_STX = 124,0,16,1 %; !  section table index (read-only)
macro LDRIMG$W_PAG_W_STX = 126,0,16,1 %; !  section table index (writable)
macro LDRIMG$L_WCB = 128,0,32,0 %;      !  WCB pointer
macro LDRIMG$L_INIT_RTN = 132,0,32,0 %; !  delayed initialization routine
macro LDRIMG$L_PID = 136,0,32,0 %;      !  pid of proc attempting load
macro LDRIMG$L_CHAN = 140,0,32,0 %;     !  chan number
macro LDRIMG$L_BASIMGVEC = 144,0,32,0 %; !  VA of list of base image vectors (in pool)
macro LDRIMG$L_NUM_BASVEC = 148,0,32,0 %; !  number of base image contributions  
macro LDRIMG$L_SEQ = 152,0,32,0 %;      !  sequence no. (exe$gl_ldr_seq) at last load    
macro LDRIMG$L_UNLVEC = 156,0,32,0 %;   !  VA of unload routine(s) vector
macro LDRIMG$L_REFCNT = 160,0,32,0 %;   !  number of references pending
 
!*** MODULE STAT ***
literal STAT_M_INPOOL = 1;
literal STAT_M_NOIMGHDR = 2;
literal STAT_M_OPEN = 4;
literal STAT_M_NOLOAD_SA_APP = 8;
literal STAT_M_OPTIONAL_LOAD = 16;
literal STAT_M_INHIBIT_LOAD = 32;
literal STAT_C_SIZE = 32;               !  Size of statistics block
literal STAT_S_STATDEF = 32;
macro STAT_L_VBN = 0,0,32,0 %;          !  Starting VBN (after image header)
macro STAT_L_BYTECNT = 4,0,32,1 %;      !  Size of image in bytes
macro STAT_L_SYSVA = 8,0,32,0 %;        !  Base relative address of pool address
macro STAT_L_LENGTH = 12,0,32,0 %;      !  Length of ASCII file name
macro STAT_L_NAME = 16,0,32,0 %;        !  Base relative address of ASCII file name
macro STAT_L_FLAGS = 20,0,32,0 %;       !  Loading flags
macro STAT_V_INPOOL = 20,0,1,0 %;
macro STAT_V_NOIMGHDR = 20,1,1,0 %;
macro STAT_V_OPEN = 20,2,1,0 %;
macro STAT_V_NOLOAD_SA_APP = 20,3,1,0 %; !  Don't load image if SA_APP=1
macro STAT_V_OPTIONAL_LOAD = 20,4,1,0 %; !  Image may not be present
macro STAT_V_INHIBIT_LOAD = 20,5,1,0 %; !  Don't load image if set
macro STAT_L_MAP = 24,0,32,0 %;         !  Address of virtual-to-logical map
macro STAT_L_VBN2ADR = 28,0,32,0 %;     !  Buffer address containing VBN 2
 
!*** MODULE BOOSTATE ***
literal BOOSTATE$M_SYSBOOT = 1;
literal BOOSTATE$M_INIT = 2;
literal BOOSTATE$M_SWAPPER = 4;
literal BOOSTATE$M_SYSINIT = 8;
literal BOOSTATE$M_STARTUP = 16;
literal BOOSTATE$M_MAPPED = 32;
literal BOOSTATE$M_PFN_INIT = 64;
literal BOOSTATE$M_POOL_INIT = 128;
literal BOOSTATE$M_XQP = 256;
literal BOOSTATE$M_RMS = 512;
literal BOOSTATE$M_CONSOLE = 1024;
literal BOOSTATE$S_BOOSTATEDEF = 4;
macro BOOSTATE$V_SYSBOOT = 0,0,1,0 %;   !  SYSBOOT is executing
macro BOOSTATE$V_INIT = 0,1,1,0 %;      !  INIT is executing
macro BOOSTATE$V_SWAPPER = 0,2,1,0 %;   !  The SWAPPER process is executing
macro BOOSTATE$V_SYSINIT = 0,3,1,0 %;   !  The SYSINIT process is executing
macro BOOSTATE$V_STARTUP = 0,4,1,0 %;   !  The STARTUP process is executing
macro BOOSTATE$V_MAPPED = 0,5,1,0 %;    !  Virtual memory mapping is enabled
macro BOOSTATE$V_PFN_INIT = 0,6,1,0 %;  !  The PFN database is initialized
macro BOOSTATE$V_POOL_INIT = 0,7,1,0 %; !  Nonpaged pool is available
macro BOOSTATE$V_XQP = 0,8,1,0 %;       !  The XQP has been mapped
macro BOOSTATE$V_RMS = 0,9,1,0 %;       !  RMS has been loaded
macro BOOSTATE$V_CONSOLE = 0,10,1,0 %;  !  Console routines are connected
 
!*** MODULE INIRTN ***
literal INIRTN$M_SYSRTN = 1;
literal INIRTN$M_CALLED = 2;
literal INIRTN$M_NO_RECALL = 4;
literal INIRTN$S_INIRTNDEF = 4;
macro INIRTN$V_SYSRTN = 0,0,1,0 %;      !  Routine is external to image
macro INIRTN$V_CALLED = 0,1,1,0 %;      !  Routine has been called already
macro INIRTN$V_NO_RECALL = 0,2,1,0 %;   !  Routine is not to be recalled 
 
!*** MODULE S0PAGING ***
literal S0PAGING$M_EXEC = 1;
literal S0PAGING$M_RMS = 2;
literal S0PAGING$S_S0PAGINGDEF = 4;
macro S0PAGING$V_EXEC = 0,0,1,0 %;      !  exec paging (most loadable pieces) 
macro S0PAGING$V_RMS = 0,1,1,0 %;       !  RMS paging
! 
! ****************************************************************************
! *                                                                          *
! *  Copyright (c) 1990                                                      *
! *  by DIGITAL Equipment Corporation, Maynard, Mass.                        *
! *                                                                          *
! *  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.                 *
! *                                                                          *
! ****************************************************************************
! ********************************************************************************************************************************
!  Created 26-JUN-1990 17:52:49 by VAX SDL T3.2-8      Source: 19-DEC-1989 16:10:03 _$254$DUA115:[SHRLIB]VECTORS.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE SSVEC ***
literal SSVEC_K_LENGTH = 8;             !  Size of list element
literal SSVEC_S_SSVECDEF = 8;
macro SSVEC_W_ENTRY_MASK = 0,0,16,0 %;  !  Register save mask
macro SSVEC_B_OPCODE = 2,0,8,0 %;       !  Instruction opcode
macro SSVEC_B_ADDRESSING_MODE = 3,0,8,0 %; !  Addressing mode
macro SSVEC_A_JMP_DESTINATION = 4,0,32,0 %;
macro SSVEC_W_CHMX_CODE = 4,0,16,1 %;   !  CHMx code
macro SSVEC_B_RET = 6,0,8,0 %;
 
!*** MODULE DISP ***
literal DISP_K_LENGTH = 8;              !  Size of list element
literal DISP_S_DISPDEF = 8;
macro DISP_W_ARG_LIST_SIZE = 0,0,16,0 %; !  Size in bytes of argument list    
macro DISP_B_ARGUMENT_COUNT = 2,0,8,0 %; !  Number of required parameters
macro DISP_B_EXIT_TYPE = 3,0,8,0 %;     ! Exit code type
macro DISP_A_SERVICE_ROUTINE = 4,0,32,0 %; !  Address of first instruction of
!   service-specific procedure
 
!*** MODULE SSDESCR ***
literal MODE_K_KERNEL = 0;              !  Service executes in KERNEL mode
literal MODE_K_EXEC = 1;                !  Service executes in EXECUTIVE mode
literal MODE_K_SUPER = 2;               !  Service executes in SUPERVISOR mode
literal MODE_K_USER = 3;                !  Service executes in USER mode
literal MODE_K_CALLERS_MODE = 4;        !  Service executes in the mode of the caller
literal TYPE_K_NORMAL = 0;              !  No composite type, default value
literal TYPE_K_QIOW = 1;                !  Composite type QIOW
literal TYPE_K_ENQW = 2;                !  Composite type ENQW
literal TYPE_K_GETDVIW = 3;             !  Composite type GETDVIW
literal TYPE_K_GETJPIW = 4;             !  Composite type GETJPIW
literal TYPE_K_GETSYIW = 5;             !  Composite type GETSYIW
literal TYPE_K_SNDJBCW = 6;             !  Composite type SNDJBCW
literal TYPE_K_GETLKIW = 7;             !  Composite type GETLKIW
literal TYPE_K_BRKTHRUW = 8;            !  Composite type BRKTHRUW
literal TYPE_K_GETQUIW = 9;             !  Composite type GETQUIW
literal TYPE_K_END_RU = 10;             !  Composite type END_RU
literal TYPE_K_START_TRANSW = 11;       !  Composite type START_TRANS
literal TYPE_K_END_TRANSW = 12;         !  Composite type END_TRANS
literal TYPE_K_ABORT_TRANSW = 13;       !  Composite type ABORT_TRANS
literal TYPE_K_DECLARE_RMW = 14;        !  Composite type DECLARE_RM
literal TYPE_K_FORGET_RMW = 15;         !  Composite type FORGET_RM
literal TYPE_K_JOIN_RMW = 16;           !  Composite type JOIN_RM
literal TYPE_K_FINISH_RMOPW = 17;       !  Composite type FINISH_RMOP
literal TYPE_K_ADD_BRANCHW = 18;        !  Composite type ADD_BRANCH
literal TYPE_K_START_BRANCHW = 19;      !  Composite type START_BRANCH
literal TYPE_K_IPCW = 20;               !  Composite type IPCW
literal TYPE_K_READY_TO_COMMITW = 21;   !  Composite type READY_TO_COMMITW
literal TYPE_K_MAXIMUM = 22;            !  Maximum number of types
literal EXIT_K_NORMAL_EXIT = 0;         !  Default exit code
literal EXIT_K_RMS_STALL = 1;           !  RMS wait for I/O completion
literal EXIT_K_RMS_WAIT = 2;            !  RMS $WAIT eit code
literal EXIT_K_ASSIGN_EXIT = 3;         !  Special exit code for $ASSIGN to perform
!  assign to network object in caller's mode.
literal SSDESCR_M_CLASS_0 = 1;
literal SSDESCR_M_CLASS_1 = 2;
literal SSDESCR_M_CLASS_2 = 4;
literal SSDESCR_M_CLASS_3 = 8;
literal SSDESCR_M_CLASS_4 = 16;
literal SSDESCR_M_CLASS_5 = 32;
literal SSDESCR_M_CLASS_6 = 64;
literal SSDESCR_M_CLASS_7 = 128;
literal SSDESCR_K_LENGTH = 16;          !  Size of list element
literal SSDESCR_S_SSDESCRDEF = 16;
macro SSDESCR_A_VECTOR_ADDRESS = 0,0,32,0 %; !  Address of vector in S0 space
macro SSDESCR_A_ENTRY_ADDRESS = 4,0,32,0 %; !  Self-relative pointer to .ENTRY mask
macro SSDESCR_B_ARG_COUNT = 8,0,8,0 %;  !  Argument count
macro SSDESCR_B_MIN_ARG_COUNT = 9,0,8,0 %; !  Minimum argument count
macro SSDESCR_B_MODE = 10,0,8,0 %;      !  Access mode in which service executes
macro SSDESCR_B_INHIBIT_MASK = 11,0,8,0 %; !  System service inhibit mask
macro SSDESCR_V_CLASS_0 = 11,0,1,0 %;
macro SSDESCR_V_CLASS_1 = 11,1,1,0 %;
macro SSDESCR_V_CLASS_2 = 11,2,1,0 %;
macro SSDESCR_V_CLASS_3 = 11,3,1,0 %;
macro SSDESCR_V_CLASS_4 = 11,4,1,0 %;
macro SSDESCR_V_CLASS_5 = 11,5,1,0 %;
macro SSDESCR_V_CLASS_6 = 11,6,1,0 %;
macro SSDESCR_V_CLASS_7 = 11,7,1,0 %;
macro SSDESCR_B_SYNCH_TYPE = 12,0,8,0 %; !  Composite service type
macro SSDESCR_B_EXIT_TYPE = 13,0,8,0 %; !  Exit code type
! ********************************************************************************************************************************
!  Created 18-JUN-1990 20:45:04 by VAX SDL T3.2-8      Source: 15-JAN-1990 21:49:30 _$254$DUA115:[NCP.SRC]NMADEF.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE $NMADEF ***
! 
!  Object type
! 
literal NMA$C_OBJ_NIC = 19;             !  Nice listener 
! 
!  Function codes
! 
literal NMA$C_FNC_LOA = 15;             !  Request down-line load 
literal NMA$C_FNC_DUM = 16;             !  Request up-line dump 
literal NMA$C_FNC_TRI = 17;             !  Trigger bootstrap 
literal NMA$C_FNC_TES = 18;             !  Test 
literal NMA$C_FNC_CHA = 19;             !  Change parameter 
literal NMA$C_FNC_REA = 20;             !  Read information 
literal NMA$C_FNC_ZER = 21;             !  Zero counters 
literal NMA$C_FNC_SYS = 22;             !  System-specific function 
! 
!  Option byte
! 
!     common to change parameter, read information and zero counters
! 
literal NMA$M_OPT_ENT = 7;
literal NMA$M_OPT_CLE = 64;
literal NMA$M_OPT_PER = 128;
literal NMA$M_OPT_INF = 112;
literal NMA$C_OPINF_SUM = 0;            !  Summary 
literal NMA$C_OPINF_STA = 1;            !  Status 
literal NMA$C_OPINF_CHA = 2;            !  Characteristics 
literal NMA$C_OPINF_COU = 3;            !  Counters 
literal NMA$C_OPINF_EVE = 4;            !  Events 
! 
literal NMA$M_OPT_ACC = 128;
literal NMA$M_OPT_REA = 128;
literal NMA$C_SYS_RST = 1;              !  Rsts 
literal NMA$C_SYS_RSX = 2;              !  Rsx family 
literal NMA$C_SYS_TOP = 3;              !  Tops-20 
literal NMA$C_SYS_VMS = 4;              !  Vms 
literal NMA$C_SYS_RT = 5;               !  RT-11 
! 
literal NMA$C_ENT_NOD = 0;              !  Node 
literal NMA$C_ENT_LIN = 1;              !  Line 
literal NMA$C_ENT_LOG = 2;              !  Logging 
literal NMA$C_ENT_CIR = 3;              !  Circuit 
literal NMA$C_ENT_MOD = 4;              !  Module 
literal NMA$C_ENT_ARE = 5;              !  Area 
! 
literal NMA$C_SENT_PROXY = 2;           !  Proxies
literal NMA$C_SENT_ALI = 3;             !  Alias 
literal NMA$C_SENT_OBJ = 4;             !  Object 
literal NMA$C_SENT_PRO = 5;             !  Process 
literal NMA$C_SENT_SYS = 6;             !  System 
literal NMA$C_SENT_LNK = 7;             !  Links 
literal NMA$C_SENT_WLD = -30;           !  Wildcarded entity
literal NMA$M_ENT_EXE = 128;
literal NMA$C_ENT_WAR = -7;             !  Wildcarded area
literal NMA$C_ENT_WAD = -6;             !  Wildcarded address
literal NMA$C_ENT_ADJ = -4;             !  Adjacent 
literal NMA$C_ENT_ACT = -2;             !  Active 
literal NMA$C_ENT_KNO = -1;             !  Known 
literal NMA$C_ENT_ADD = 0;              !  Node address 
literal NMA$C_ENT_ALL = -3;             !  All 
literal NMA$C_ENT_LOO = -3;             !  Loop 
! 
literal NMA$C_SNK_CON = 1;              !  Console 
literal NMA$C_SNK_FIL = 2;              !  File 
literal NMA$C_SNK_MON = 3;              !  Monitor 
! 
literal NMA$M_CNT_TYP = 4095;
literal NMA$M_CNT_MAP = 4096;
literal NMA$M_CNT_WID = 24576;
literal NMA$M_CNT_COU = 32768;
literal NMA$M_CNT_WIL = 8192;
literal NMA$M_CNT_WIH = 16384;
literal NMA$S_NMADEF = 2;
macro NMA$V_OPT_ENT = 0,0,3,0 %;
literal NMA$S_OPT_ENT = 3;              !  Entity type 
! 
!     change parameter
! 
macro NMA$V_OPT_CLE = 0,6,1,0 %;        !  Clear parameter 
! 
!     common to change parameter or read information
! 
macro NMA$V_OPT_PER = 0,7,1,0 %;        !  Permanent parameters 
! 
!     read information
! 
macro NMA$V_OPT_INF = 0,4,3,0 %;
literal NMA$S_OPT_INF = 3;              !  Information type mask 
!     test
! 
macro NMA$V_OPT_ACC = 0,7,1,0 %;        !  Access control included 
! 
!     zero
! 
macro NMA$V_OPT_REA = 0,7,1,0 %;        !  Read and zero 
! 
!  System types
! 
!  Entity types.  This numbering scheme must be used in non-system-specific
!  NICE messages.  (See below for conflicting system-specific entities).
! 
!  System-specific (function 22) entity types.  This numbering scheme
!  for objects must be used in any entity type in system-specific NICE
!  messages.
! 
macro NMA$V_ENT_EXE = 0,7,1,0 %;        !  Executor indicator flag for response messages 
! 
!  Entity identification format types
! 
!  Logging sink types
! 
!  Counter data type values
! 
macro NMA$V_CNT_TYP = 0,0,12,0 %;
literal NMA$S_CNT_TYP = 12;             !  Type mask 
macro NMA$V_CNT_MAP = 0,12,1,0 %;       !  Bitmapped indicator 
macro NMA$V_CNT_WID = 0,13,2,0 %;
literal NMA$S_CNT_WID = 2;              !  Width field mask 
macro NMA$V_CNT_COU = 0,15,1,0 %;       !  Counter indicator 
macro NMA$V_CNT_WIL = 0,13,1,0 %;       !  Width field low bit 
macro NMA$V_CNT_WIH = 0,14,1,0 %;       !  Width field high bit 
! 
!  Node area and address extraction
! 
literal NMA$M_PTY_TYP = 32767;
literal NMA$C_PTY_MAX = 15;             !  Maximum fields within coded multiple 
literal NMA$M_PTY_CLE = 63;
literal NMA$M_PTY_MUL = 64;
literal NMA$M_PTY_COD = 128;
literal NMA$M_PTY_CMU = 192;
literal NMA$M_PTY_NLE = 15;
literal NMA$M_PTY_NTY = 48;
literal NMA$M_PTY_ASC = 64;
literal NMA$C_NTY_DU = 0;               !  Unsigned decimal 
literal NMA$C_NTY_DS = 1;               !  Signed decimal 
literal NMA$C_NTY_H = 2;                !  Hexidecimal 
literal NMA$C_NTY_O = 3;                !  Octal 
!  NLE values (length of number): 
literal NMA$C_NLE_IMAGE = 0;            !  Image field (byte-counted) 
literal NMA$C_NLE_BYTE = 1;             !  Byte 
literal NMA$C_NLE_WORD = 2;             !  Word 
literal NMA$C_NLE_LONG = 4;             !  Longword 
literal NMA$C_NLE_QUAD = 8;             !  Quadword 
! 
literal NMA$C_PTY_AI = 64;              !  ASCII image (ASC=1) 
literal NMA$C_PTY_HI = 32;              !  Hex image (NTY=H, NLE=IMAGE) 
literal NMA$C_PTY_H1 = 33;              !  Hex byte (NTY=H, NLE=BYTE) 
literal NMA$C_PTY_H2 = 34;              !  Hex word (NTY=H, NLE=WORD) 
literal NMA$C_PTY_H4 = 36;              !  Hex byte (NTY=H, NLE=LONG)
literal NMA$C_PTY_DU1 = 1;              !  Decimal unsigned byte (NTY=DU,NLE=BYTE) 
literal NMA$C_PTY_DU2 = 2;              !  Decimal unsigned word (NTY=DU,NLE=WORD) 
literal NMA$C_PTY_CD1 = 129;            !  Coded decimal byte (COD=1, 1 byte) 
literal NMA$C_PTY_CM2 = 194;            !  Coded multiple, 2 fields 
literal NMA$C_PTY_CM3 = 195;            !  Coded multiple, 3 fields 
literal NMA$C_PTY_CM4 = 196;            !  Coded multiple, 4 fields 
literal NMA$C_PTY_CM5 = 197;            !  Coded multiple, 5 fields 
! 
literal NMA$C_CTLVL_UI = 3;             !  User interface
literal NMA$C_CTLVL_XID = 175;          ! 
literal NMA$C_CTLVL_XID_P = 191;        ! 
literal NMA$C_CTLVL_TEST = 227;         ! 
literal NMA$C_CTLVL_TEST_P = 243;       ! 
! 
literal NMA$C_PCCI_STA = 0;             !  State (coded byte of NMA$C_STATE_) 
literal NMA$C_PCCI_SUB = 1;             !  Substate (coded byte of NMA$C_LINSS_) 
literal NMA$C_PCCI_SER = 100;           !  Service (coded byte of NMA$C_LINSV_) 
literal NMA$C_PCCI_LCT = 110;           !  Counter timer (word) 
literal NMA$C_PCCI_SPY = 120;           !  Service physical address (NI address) 
literal NMA$C_PCCI_SSB = 121;           !  Service substate (coded byte of NMA$C_LINSS_) 
literal NMA$C_PCCI_CNO = 200;           !  Connected node 
literal NMA$C_PCCI_COB = 201;           !  Connected object 
literal NMA$C_PCCI_LOO = 400;           !  Loopback name (ascic) 
literal NMA$C_PCCI_ADJ = 800;           !  Adjacent node 
literal NMA$C_PCCI_DRT = 801;           !  Designated router on NI 
literal NMA$C_PCCI_BLO = 810;           !  Block size (word) 
literal NMA$C_PCCI_COS = 900;           !  Cost (byte) 
literal NMA$C_PCCI_MRT = 901;           !  Maximum routers on NI (byte) 
literal NMA$C_PCCI_RPR = 902;           !  Router priority on NI (byte) 
literal NMA$C_PCCI_HET = 906;           !  Hello timer (word) 
literal NMA$C_PCCI_LIT = 907;           !  Listen timer (word) 
literal NMA$C_PCCI_BLK = 910;           !  Blocking (coded byte of NMA$C_CIRBLK_) 
literal NMA$C_PCCI_MRC = 920;           !  Maximum recalls (byte) 
literal NMA$C_PCCI_RCT = 921;           !  Recall timer (word) 
literal NMA$C_PCCI_NUM = 930;           !  Number (ascic) 
literal NMA$C_PCCI_USR = 1000;          !  User entity identification 
literal NMA$C_PCCI_POL = 1010;          !  Polling state (coded byte of NMA$C_CIRPST_) 
literal NMA$C_PCCI_PLS = 1011;          !  Polling substate (coded byte) 
literal NMA$C_PCCI_OWN = 1100;          !  Owner entity identification 
literal NMA$C_PCCI_LIN = 1110;          !  Line (ascic) 
literal NMA$C_PCCI_USE = 1111;          !  Usage (coded byte of NMA$C_CIRUS_) 
literal NMA$C_PCCI_TYP = 1112;          !  Type (coded byte of NMA$C_CIRTY_) 
literal nma$c_pcci_net = 1119;          !  Network (ascic)
literal NMA$C_PCCI_DTE = 1120;          !  DTE (ascic) 
literal NMA$C_PCCI_CHN = 1121;          !  Channel (word) 
literal NMA$C_PCCI_MBL = 1122;          !  Maximum data (word) 
literal NMA$C_PCCI_MWI = 1123;          !  Maximum window (byte) 
literal NMA$C_PCCI_TRI = 1140;          !  Tributary (byte) 
literal NMA$C_PCCI_BBT = 1141;          !  Babble timer (word) 
literal NMA$C_PCCI_TRT = 1142;          !  Transmit timer (word) 
literal NMA$C_PCCI_RTT = 1143;          !  Retransmit timer (word) 
literal NMA$C_PCCI_MRB = 1145;          !  Maximum receive buffers (coded byte) 
!  0-254 is value, 255 = UNLIMITED
literal NMA$C_PCCI_MTR = 1146;          !  Maximum transmits (byte) 
literal NMA$C_PCCI_ACB = 1150;          !  Active base (byte) 
literal NMA$C_PCCI_ACI = 1151;          !  Active increment (byte) 
literal NMA$C_PCCI_IAB = 1152;          !  Inactive base (byte) 
literal NMA$C_PCCI_IAI = 1153;          !  Inactive increment (byte) 
literal NMA$C_PCCI_IAT = 1154;          !  Inactive threshold (byte) 
literal NMA$C_PCCI_DYB = 1155;          !  Dying base (byte) 
literal NMA$C_PCCI_DYI = 1156;          !  Dying increment (byte) 
literal NMA$C_PCCI_DYT = 1157;          !  Dying threshold (byte) 
literal NMA$C_PCCI_DTH = 1158;          !  Dead threshold (byte) 
! 
literal NMA$C_PCCI_RSX_MAC = 2320;      !  Multipoint active ratio 
literal NMA$C_PCCI_RSX_LOG = 2380;      !  Logical name 
literal NMA$C_PCCI_RSX_DLG = 2385;      !  Designated name 
literal NMA$C_PCCI_RSX_ACT = 2390;      !  Actual name 
! 
literal NMA$C_PCCI_VER = 2700;          !  Verification (coded byte of NMA$C_CIRVE_) 
literal NMA$C_PCCI_XPT = 2720;          !  Transport type (coded byte of NMA$C_CIRXPT_) 
!   VMS Specific codes that are used for the X21 project
literal NMA$C_PCCI_IRC = 2750;          ! Incoming Reverse
literal NMA$C_PCCI_ORC = 2751;          ! Outgoing Reverse
literal NMA$C_PCCI_GRP = 2752;          ! Cug
literal NMA$C_PCCI_NOP = 2753;          ! National Facility Data
literal NMA$C_PCCI_CAL = 2754;          ! Call request "Now/Clear"
literal NMA$C_PCCI_INA = 2755;          ! Inactive
literal NMA$C_PCCI_RED = 2756;          ! Redirected status
literal NMA$C_PCCI_MOD = 2757;          ! Time-cut Mode status "Auto/Noauto"
literal NMA$C_PCCI_REQ = 2758;          ! Request timer T1
literal NMA$C_PCCI_DTW = 2759;          ! Dte waiting timer t2
literal NMA$C_PCCI_PRO = 2760;          ! Progress timer t3a
literal NMA$C_PCCI_INF = 2761;          ! Information timer t4a
literal NMA$C_PCCI_ACC = 2762;          ! Accepted timer t4b
literal NMA$C_PCCI_CLR = 2763;          ! Request timer t5
literal NMA$C_PCCI_DTC = 2764;          ! Dte clear timer t6
literal NMA$C_PCCI_CCG = 2765;          ! Charging timer t7
literal NMA$C_PCCI_ESA = 2766;          ! Enhanced Subaddress
literal NMA$C_PCCI_DTI = 2767;          ! DTE provided info
literal NMA$C_PCCI_SWC = 2768;          ! Switched - set line leased
literal NMA$C_PCCI_TIC = 2769;          ! Timecutting on/off
literal NMA$C_PCCI_CSG = 2770;          ! Send signal-data enable/disable
literal NMA$C_PCCI_AAS = 2771;          ! Abbreviated address.
literal NMA$C_PCCI_DTS = 2772;          ! DTE Status
literal NMA$C_PCCI_CAS = 2773;          ! Call Status
literal NMA$C_PCCI_CPS = 2774;          ! Call-Progress Status
literal NMA$C_PCCI_CNT = 2775;          ! Counter .
literal NMA$C_PCCI_RAT = 2776;          ! Rate item read only for show
literal NMA$C_PCCI_PRD = 2777;          ! Period hh:mm-hh:mm
literal NMA$C_PCCI_DAY = 2778;          ! day of week
literal NMA$C_PCCI_BFN = 2779;          ! number of buffers for driver to issue
literal NMA$C_PCCI_BSZ = 2780;          ! size of buffer to allocate.
literal NMA$C_PCCI_MDM = 2781;          ! Modem signals on/off
literal NMA$C_PCCI_DTL = 2782;          ! DTE-List element.
literal NMA$C_PCCI_IDL = 2783;          ! Idle time
literal NMA$C_PCCI_IMT = 2784;          ! Initial Minimum timer
literal NMA$C_PCCI_CAC = 2785;          ! Call accept control
literal NMA$C_PCCI_ORD = 2786;          ! Outgoing request Delay
literal NMA$C_PCCI_CID = 2787;          ! Calling DTE id
! 
literal NMA$C_PCCI_MST = 2810;          !  Maintenance state 
! 
literal NMA$C_PCCI_SRV_LOG = 3380;      !  Logical name 
literal NMA$C_PCCI_SRV_DLG = 3385;      !  Designated name 
literal NMA$C_PCCI_SRV_ACT = 3390;      !  Actual name 
! 
literal NMA$C_PCLI_STA = 0;             !  State (coded byte of NMA$C_STATE_) 
literal NMA$C_PCLI_SUB = 1;             !  Substate (coded byte of NMA$C_LINSS_) 
literal NMA$C_PCLI_SER = 100;           !  Service (coded byte of NMA$C_LINSV_) 
literal NMA$C_PCLI_LCT = 110;           !  Counter timer (word) 
literal NMA$C_PCLI_LOO = 400;           !  Loopback name (ascic) [V2 only] 
literal NMA$C_PCLI_ADJ = 800;           !  Adjacent node [V2 only] 
literal NMA$C_PCLI_BLO = 810;           !  Block size (word) [V2 only] 
literal NMA$C_PCLI_COS = 900;           !  Cost (byte) [V2 only] 
literal NMA$C_PCLI_DEV = 1100;          !  Device (ascic) 
literal NMA$C_PCLI_BFN = 1105;          !  Receive buffers 
literal NMA$C_PCLI_CON = 1110;          !  Controller (coded byte of NMA$C_LINCN_) 
literal NMA$C_PCLI_DUP = 1111;          !  Duplex (coded byte of NMA$C_DPX_) 
literal NMA$C_PCLI_PRO = 1112;          !  Protocol (coded byte of NMA$C_LINPR_) 
literal NMA$C_PCLI_LTY = 1112;          !  Type (coded byte of NMA$C_LINTY_) [V2 only] 
literal NMA$C_PCLI_CLO = 1113;          !  Clock (coded byte of NMA$C_LINCL_) 
literal NMA$C_PCLI_STI = 1120;          !  Service timer (word) 
literal NMA$C_PCLI_NTI = 1121;          !  Normal timer (word) [V2 only] 
literal NMA$C_PCLI_RTT = 1121;          !  Retransmit timer (word) 
literal NMA$C_PCLI_HTI = 1122;          !  Holdback timer (word) 
literal NMA$C_PCLI_MBL = 1130;          !  Maximum block (word) 
literal NMA$C_PCLI_MRT = 1131;          !  Maximum retransmits (byte) 
literal NMA$C_PCLI_MWI = 1132;          !  Maximum window (byte) 
literal NMA$C_PCLI_TRI = 1140;          !  Tributary (byte) [V2 only] 
literal NMA$C_PCLI_SLT = 1150;          !  Scheduling timer (word) 
literal NMA$C_PCLI_DDT = 1151;          !  Dead timer (word) 
literal NMA$C_PCLI_DLT = 1152;          !  Delay timer (word) 
literal NMA$C_PCLI_SRT = 1153;          !  Stream timer (word) 
literal NMA$C_PCLI_HWA = 1160;          !  Hardware address (NI address) 
literal nma$c_pcli_net = 1190;          !  Network name (ascic)
literal NMA$C_PCLI_XMD = 1191;          !  X.25 line mode (coded byte of NMA$C_X25MD_) 
! 
literal NMA$C_PCLI_RSX_OWN = 2300;      !  Owner 
literal NMA$C_PCLI_RSX_CCS = 2310;      !  Controller CSR 
literal NMA$C_PCLI_RSX_UCS = 2311;      !  Unit CSR 
literal NMA$C_PCLI_RSX_VEC = 2312;      !  Vector 
literal NMA$C_PCLI_RSX_PRI = 2313;      !  Priority 
literal NMA$C_PCLI_RSX_MDE = 2321;      !  Dead polling ratio 
literal NMA$C_PCLI_RSX_LLO = 2330;      !  Location 
!   0, Firstfit
literal NMA$C_PCLI_RSX_LOG = 2380;      !  Logical name 
literal NMA$C_PCLI_RSX_DLG = 2385;      !  Designated name 
literal NMA$C_PCLI_RSX_ACT = 2390;      !  Actual name 
! 
literal NMA$C_PCLI_MCD = 2701;          !  Micro-code dump filespec (ascic) 
literal NMA$C_PCLI_EPT = 2720;          !  Ethernet Protocol Type (hex word) 
literal NMA$C_PCLI_LNS = 2730;          !  Line speed (word)
literal NMA$C_PCLI_SWI = 2740;          !  SWITCH (coded byte of nma$c_linswi_)
literal NMA$C_PCLI_HNG = 2750;          !  HANGUP (coded byte of NMA$C_LINHNG_)
literal NMA$C_PCLI_TPI = 2760;          !  Transmit pipeline 
literal nma$c_pcli_nrzi = 2761;         !  NRZI bit encoding
literal nma$c_pcli_code = 2762;         !  Character code (encoded as CODE_)
!    This section are parameters for 802 support.
literal NMA$C_PCLI_FMT = 2770;          !  Packet format(coded of linfm_)
literal NMA$C_PCLI_SRV = 2771;          !  Driver service coded of linsr
literal NMA$C_PCLI_SAP = 2772;          !  SAP
literal NMA$C_PCLI_GSP = 2773;          !  GSP
literal NMA$C_PCLI_PID = 2774;          !  PID
literal NMA$C_PCLI_CNM = 2775;          !  Client name
literal NMA$C_PCLI_CCA = 2776;          !  Can change address
literal NMA$C_PCLI_APC = 2777;          !  Allow promiscuous client
literal NMA$C_PCLI_MED = 2778;          !  Communication medium
literal NMA$C_PCLI_PNM = 2779;          !  Port name
literal NMA$C_PCLI_SNM = 2780;          !  Station name
! 
literal NMA$C_PCLI_BUS = 2801;          !  Buffer size (word) 
literal NMA$C_PCLI_NMS = 2810;          !  Number of DMP/DMF synch chars (word) 
literal NMA$C_PCLI_PHA = 2820;          !  Physical NI address of UNA (hex string) 
literal NMA$C_PCLI_DPA = 2821;          !  (same as HWA) ; Default UNA physical address (hex string) 
literal NMA$C_PCLI_PTY = 2830;          !  Ethernet Protocol type (word) 
literal NMA$C_PCLI_MCA = 2831;          !  UNA Multicast address list (special) 
!         (See NMA$C_LINMC_)
literal NMA$C_PCLI_ILP = 2839;          !  DELUA Internal Loopback mode 
!  (coded byte of NMA$C_STATE_)
literal NMA$C_PCLI_PRM = 2840;          !  UNA Promiscuous mode (coded byte of NMA$C_STATE_) 
literal NMA$C_PCLI_MLT = 2841;          !  UNA Multicast address mode (coded byte of NMA$C_STATE_) 
literal NMA$C_PCLI_PAD = 2842;          !  UNA Padding mode (coded byte of NMA$C_STATE_) 
literal NMA$C_PCLI_DCH = 2843;          !  UNA Data chaining mode (coded byte of NMA$C_STATE_) 
literal NMA$C_PCLI_CRC = 2844;          !  UNA CRC mode (coded byte of NMA$C_STATE_) 
literal NMA$C_PCLI_HBQ = 2845;          !  UNA Hardware Buffer Quota (word) 
literal NMA$C_PCLI_ACC = 2846;          !  UNA protocol access mode (coded byte of NMA$C_ACC_) 
literal NMA$C_PCLI_EKO = 2847;          !  UNA Echo mode (coded byte of NMA$C_STATE_) 
literal NMA$C_PCLI_BSZ = 2848;          !  UNA Device Buffer size 
literal NMA$C_PCLI_DES = 2849;          !  UNA destination Ethernet address 
literal NMA$C_PCLI_RET = 2850;          !  PCL number of retries (word) 
literal NMA$C_PCLI_MOD = 2851;          !  PCL address mode (coded byte of NMA$C_LINMO_) 
literal NMA$C_PCLI_RIB = 2852;          !  PCL retry-if-busy state (coded byte of NMA$C_STATE_) 
literal NMA$C_PCLI_MNTL = 2860;         !  Maintenance loopback mode for devices 
!   which support several different loop back modes
literal NMA$C_PCLI_INTL0 = 2861;        !  Internal loopback level 0 
literal NMA$C_PCLI_INTL1 = 2862;        !  Internal loopback level 1 
literal NMA$C_PCLI_INTL2 = 2863;        !  Internal loopback level 2 
literal NMA$C_PCLI_INTL3 = 2864;        !  Internal loopback level 3 
literal NMA$C_PCLI_FRA = 2865;          !  Framing address for Bisync 
literal NMA$C_PCLI_STI1 = 2866;         !  State info 1st longword 
literal NMA$C_PCLI_STI2 = 2867;         !  State info 2st longword 
literal NMA$C_PCLI_TMO = 2868;          !  Wait for CTS time out value for DMF sync half duplex 
literal NMA$C_PCLI_MCL = 2869;          !  Clear modem on deassign of channel 
literal NMA$C_PCLI_SYC = 2870;          !  BISYNC protocol sync char 
literal NMA$C_PCLI_BPC = 2871;          !  Number of bits per character 
literal NMA$C_PCLI_MBS = 2872;          !  Maximum buffer size
literal NMA$C_PCLI_RES = 2873;          !  Restart valuse (coded byte of LINRES_
! 
literal NMA$C_PCLI_SRV_OWN = 3300;      !  Owner 
literal NMA$C_PCLI_SRV_UCS = 3311;      !  Unit CSR 
literal NMA$C_PCLI_SRV_VEC = 3312;      !  Vector 
literal NMA$C_PCLI_SRV_PRI = 3313;      !  Priority 
literal NMA$C_PCLI_SRV_LOG = 3380;      !  Logical name 
literal NMA$C_PCLI_SRV_DLG = 3385;      !  Designated name 
literal NMA$C_PCLI_SRV_ACT = 3390;      !  Actual name 
! 
literal NMA$C_LINMD_CSMACD = 10;        ! 
literal NMA$C_LINMD_FDDI = 11;          ! 
literal NMA$C_LINMD_CI = 12;            ! 
! 
literal NMA$C_PCCO_RTR = 110;           !  Reservation timer (word) 
! 
literal NMA$C_PCLD_ASS = 10;            !  Assistance flag (coded byte of NMA$C_ASS_) 
! 
literal NMA$C_PCLP_ASS = 10;            !  Assistance flag (coded byte of NMA$C_ASS_) 
! 
literal NMA$C_PCCN_CIR = 100;           !  NI circuit name (ascic) 
literal NMA$C_PCCN_SUR = 110;           !  Surveillance flag (coded byte of NMA$C_SUR_) 
literal NMA$C_PCCN_ELT = 111;           !  Elapsed time 
literal NMA$C_PCCN_PHA = 120;           !  Physical address (NI address) 
literal NMA$C_PCCN_LRP = 130;           !  Time of last report 
literal NMA$C_PCCN_MVR = 20001;         !  Maintenance version 
literal NMA$C_PCCN_FCT = 20002;         !  Function list 
literal NMA$C_PCCN_CUS = 20003;         !  Current console user (NI address) 
literal NMA$C_PCCN_RTR = 20004;         !  Reservation timer (word) 
literal NMA$C_PCCN_CSZ = 20005;         !  Command buffer size (word) 
literal NMA$C_PCCN_RSZ = 20006;         !  Response buffer size (word) 
literal NMA$C_PCCN_HWA = 20007;         !  Hardware address (NI address) 
literal NMA$C_PCCN_DTY = 20100;         !  Device type (coded byte of NMA$C_SOFD_) 
literal NMA$C_PCCN_SFI = 20200;         !  Software ID 
literal NMA$C_PCCN_SPR = 20300;         !  System processor (coded word) 
literal NMA$C_PCCN_DLK = 20400;         !  Data link type (coded word) 
! 
literal NMA$C_PCLO_STA = 0;             !  State (coded byte of NMA$C_STATE_) 
literal NMA$C_PCLO_LNA = 100;           !  System/name (ascic) 
literal NMA$C_PCLO_SIN = 200;           !  Sink node 
literal NMA$C_PCLO_EVE = 201;           !  Events 
! 
literal NMA$C_PCXA_NOD = 320;           !  Node 
literal NMA$C_PCXA_USR = 330;           !  User (ascic) 
literal NMA$C_PCXA_SPW = 331;           !  Password to set (ascic) 
literal NMA$C_PCXA_RPW = 331;           !  Password to read (coded byte of NMA$C_NODPW_) 
literal NMA$C_PCXA_ACC = 332;           !  Account (ascic) 
literal NMA$C_PCXA_NET = 1110;          !  Network (ascic) 
! 
literal NMA$C_PCXA_RSX_ADS = 2310;      !  Destination 
literal NMA$C_PCXA_RSX_ANB = 2320;      !  Number 
literal NMA$C_PCXA_RSX_ASC = 2330;      !  Scope 
! 
literal NMA$C_PCXA_SRV_ADS = 3310;      !  Destination 
literal NMA$C_PCXA_SRV_ANB = 3320;      !  Number 
literal NMA$C_PCXA_SRV_ASC = 3330;      !  Scope 
! 
literal NMA$C_PCXP_STA = 0;             !  State (coded byte of NMA$C_STATE_) 
literal NMA$C_PCXP_SBS = 1;             !  Substate, qualified by DTE (coded byte of NMA$C_XPRSB_) 
literal NMA$C_PCXP_CTM = 100;           !  Counter timer (word) 
literal NMA$C_PCXP_ACH = 1000;          !  Active channels (word) 
literal NMA$C_PCXP_ASW = 1010;          !  Active switched (word) 
literal NMA$C_PCXP_DTE = 1100;          !  DTE (ascic) 
literal NMA$C_PCXP_GRP = 1101;          !  Group (ascic) 
literal NMA$C_pcxp_netent = 1110;       !  Network entity (ascic) 
literal NMA$C_pcxp_dnt = 1111;          !  DTE Network (ascic) 
literal NMA$C_PCXP_LIN = 1120;          !  Line (ascic) 
literal NMA$C_PCXP_CHN = 1130;          !  Channels 
literal NMA$C_PCXP_MCH = 1131;          !  Maximum channels (word) 
literal NMA$C_PCXP_DBL = 1140;          !  Default data (word) 
literal NMA$C_PCXP_DWI = 1141;          !  Default window (byte) 
literal NMA$C_PCXP_MBL = 1150;          !  Maximum data (word) 
literal NMA$C_PCXP_MWI = 1151;          !  Maximum window (byte) 
literal NMA$C_PCXP_MCL = 1152;          !  Maximum clears (byte) 
literal NMA$C_PCXP_MRS = 1153;          !  Maximum resets (byte) 
literal NMA$C_PCXP_MST = 1154;          !  Maximum restarts (byte) 
literal NMA$C_PCXP_CAT = 1160;          !  Call timer (byte) 
literal NMA$C_PCXP_CLT = 1161;          !  Clear timer (byte) 
literal NMA$C_PCXP_RST = 1162;          !  Reset timer (byte) 
literal NMA$C_PCXP_STT = 1163;          !  Restart timer (byte)
literal NMA$C_pcxp_itt = 1164;          !  Interrupt timer (byte)
literal NMA$C_PCXP_GDT = 1170;          !  Group DTE (ascic) 
literal NMA$C_PCXP_GNM = 1171;          !  Group number (word) 
literal NMA$C_PCXP_GTY = 1172;          !  Group type (coded byte of NMA$C_XPRTY_) 
literal NMA$C_pcxp_gnt = 1173;          !  Group Network name (ascic)
literal nma$c_pcxp_mode = 1180;         !  DTE mode (coded byte of NMA$C_X25MD_)
literal nma$c_pcxp_prof = 1190;         !  Profile (ascic)
! 
literal NMA$C_PCXP_RSX_PMC = 2300;      !  Maximum circuits 
! 
literal NMA$C_PCXP_MCI = 2710;          !  Maximum circuits, qualified by DTE 
! 
literal NMA$C_PCXP_SRV_PMC = 3300;      !  Maximum circuits 
! 
literal nma$c_pcxs_sta = 1;             !  State (coded byte of NMA$C_STATE_)
literal NMA$C_PCXS_CTM = 100;           !  Counter timer (word) 
literal NMA$C_PCXS_ACI = 200;           !  Active circuits (word) 
literal NMA$C_PCXS_DST = 300;           !  Destination (ascic) 
literal NMA$C_PCXS_MCI = 310;           !  Maximum circuits (word) 
literal NMA$C_PCXS_NOD = 320;           !  Node 
literal NMA$C_PCXS_USR = 330;           !  Username 
literal NMA$C_PCXS_SPW = 331;           !  Password to set (ascic) 
literal NMA$C_PCXS_RPW = 331;           !  Password to read (coded byte of NMA$C_NODPW_) 
literal NMA$C_PCXS_ACC = 332;           !  Account (ascic) 
literal NMA$C_PCXS_OBJ = 340;           !  Object 
literal NMA$C_PCXS_PRI = 350;           !  Priority (byte) 
literal NMA$C_PCXS_CMK = 351;           !  Call mask (byte-counted hex) 
literal NMA$C_PCXS_CVL = 352;           !  Call value (byte-counted hex) 
literal NMA$C_PCXS_GRP = 353;           !  Group (ascic) 
literal NMA$C_PCXS_SDTE = 354;          !  Sending DTE, formally "Number" (ascic) 
literal NMA$C_PCXS_SAD = 355;           !  Subaddresses 
literal nma$c_pcxs_red = 390;           !  Redirect reason (coded byte nma$c_x25red_)
literal nma$c_pcxs_cdte = 391;          !  Called DTE (ascic)
literal nma$c_pcxs_rdte = 392;          !  Receiving DTE (ascic)
literal nma$c_pcxs_net = 393;           !  Network (ascic)
literal nma$C_pcxs_emk = 394;           !  Extension mask (ascic) 
literal nma$C_pcxs_evl = 395;           !  Extension value (ascic) 
literal nma$C_pcxs_idte = 396;          !  Incoming address (ascii)
! 
literal NMA$C_PCXS_RSX_5ST = 2310;      !  State 
!   0, On
literal NMA$C_PCXS_FIL = 2710;          !  Object filespec (ascic) 
! 
literal NMA$C_PCXS_SRV_5ST = 3310;      !  State 
!   0, On
literal NMA$C_PCXT_STA = 0;             !  State (coded byte of NMA$C_STATE_) 
literal NMA$C_PCXT_BSZ = 100;           !  Buffer size (word) 
literal NMA$C_PCXT_MBK = 101;           !  Maximum blocks/file (word) 
literal NMA$C_PCXT_FNM = 102;           !  Filename (ascic) 
literal NMA$C_PCXT_MBF = 103;           !  Maximum number of buffers (word) 
literal NMA$C_PCXT_CPL = 104;           !  Global data capture limit (word) 
literal NMA$C_PCXT_MVR = 105;           !  Maximum trace file version (word) 
literal NMA$C_PCXT_TPT = 106;           !  Trace point name (ascic) 
literal NMA$C_PCXT_CPS = 110;           !  Per-trace capture size (word) 
literal NMA$C_PCXT_TST = 111;           !  Per-trace state (coded byte of NMA$C_STATE_) 
! 
literal NMA$C_PCNO_STA = 0;             !  State (coded byte of NMA$C_STATE_) 
literal NMA$C_PCNO_PHA = 10;            !  Physical address (NI address) 
literal NMA$C_PCNO_IDE = 100;           !  Identification (ascic) 
literal NMA$C_PCNO_MVE = 101;           !  Management version (3 bytes) 
literal NMA$C_PCNO_SLI = 110;           !  Service circuit (ascic) 
literal NMA$C_PCNO_SPA = 111;           !  Service password (8 bytes) 
literal NMA$C_PCNO_SDV = 112;           !  Service device (coded byte of NMA$C_SOFD_) 
literal NMA$C_PCNO_CPU = 113;           !  CPU type (coded byte of NMA$C_CPU_) 
literal NMA$C_PCNO_HWA = 114;           !  Hardware address (NI address) 
literal NMA$C_PCNO_SNV = 115;           !  Service node version (coded byte of NMA$C_SVN_) 
literal NMA$C_PCNO_LOA = 120;           !  Load file (ascic) 
literal NMA$C_PCNO_SLO = 121;           !  Secondary loader (ascic) 
literal NMA$C_PCNO_TLO = 122;           !  Tertiary loader (ascic) 
literal NMA$C_PCNO_DFL = 123;           !  Diagnostic file (ascic) 
literal NMA$C_PCNO_STY = 125;           !  Software type (coded byte of NMA$C_SOFT_) 
literal NMA$C_PCNO_SID = 126;           !  Software ID (ascic) 
literal NMA$C_PCNO_MFL = 127;           !  Management File (ascic)
literal NMA$C_PCNO_DUM = 130;           !  Dump file (ascic) 
literal NMA$C_PCNO_SDU = 131;           !  Secondary dumper (ascic) 
literal NMA$C_PCNO_DAD = 135;           !  Dump address (longword) 
literal NMA$C_PCNO_DCT = 136;           !  Dump count (longword) 
literal NMA$C_PCNO_OHO = 140;           !  Host (read only parameter) 
literal NMA$C_PCNO_IHO = 141;           !  Host (write only parameter) 
literal NMA$C_PCNO_LPC = 150;           !  Loop count (word) 
literal NMA$C_PCNO_LPL = 151;           !  Loop length (word) 
literal NMA$C_PCNO_LPD = 152;           !  Loop Data type (coded byte of NMA$C_LOOP_) 
literal NMA$C_PCNO_LPA = 153;           !  Loop assistant physical address (NI address) 
literal NMA$C_PCNO_LPH = 154;           !  Loop help type (coded byte) 
literal NMA$C_PCNO_LPN = 155;           !  Loop circuit node 
literal NMA$C_PCNO_LAN = 156;           !  Loop circuit assistant node 
literal NMA$C_PCNO_CTI = 160;           !  Counter timer (word) 
literal NMA$C_PCNO_NNA = 500;           !  Name 
literal NMA$C_PCNO_NLI = 501;           !  Circuit (ascic) 
literal NMA$C_PCNO_ADD = 502;           !  Address 
literal NMA$C_PCNO_ITI = 510;           !  Incoming timer (word) 
literal NMA$C_PCNO_OTI = 511;           !  Outgoing timer (word) 
literal NMA$C_PCNO_IPR = 522;           !  Incoming Proxy
literal NMA$C_PCNO_OPR = 523;           !  Outgoing Proxy
literal NMA$C_PCNO_ACL = 600;           !  Active links (word) 
literal NMA$C_PCNO_DEL = 601;           !  Delay (word) 
literal NMA$C_PCNO_NVE = 700;           !  Nsp version (3 bytes) 
literal NMA$C_PCNO_MLK = 710;           !  Maximum links (word) 
literal NMA$C_PCNO_DFA = 720;           !  Delay factor (byte) 
literal NMA$C_PCNO_DWE = 721;           !  Delay weight (byte) 
literal NMA$C_PCNO_IAT = 722;           !  Inactivity timer (word) 
literal NMA$C_PCNO_RFA = 723;           !  Retransmit factor (word) 
literal NMA$C_PCNO_DTY = 810;           !  Destination Type (coded byte of NMA$C_XPRTY_) 
literal NMA$C_PCNO_DCO = 820;           !  Destination Cost (word) 
literal NMA$C_PCNO_DHO = 821;           !  Destination Hops (byte) 
literal NMA$C_PCNO_DLI = 822;           !  Destination circuit (ascic) 
literal NMA$C_PCNO_NND = 830;           !  Next node to destination 
literal NMA$C_PCNO_RVE = 900;           !  Routing version (3 bytes) 
literal NMA$C_PCNO_ETY = 901;           !  Executor Type (coded byte of NMA$C_NODTY_) 
literal NMA$C_PCNO_RTI = 910;           !  Routing timer (word) 
literal NMA$C_PCNO_SAD = 911;           !  Subaddress (2 words) 
literal NMA$C_PCNO_BRT = 912;           !  Broadcast routing timer (word) 
literal NMA$C_PCNO_MAD = 920;           !  Maximum address (word) 
literal NMA$C_PCNO_MLN = 921;           !  Maximum circuits (word) 
literal NMA$C_PCNO_MCO = 922;           !  Maximum cost (word) 
literal NMA$C_PCNO_MHO = 923;           !  Maximum hops (byte) 
literal NMA$C_PCNO_MVI = 924;           !  Maximum visits (byte) 
literal NMA$C_PCNO_MAR = 925;           !  Maximum areas (byte) 
literal NMA$C_PCNO_MBE = 926;           !  Maximum broadcast nonrouters (word) 
literal NMA$C_PCNO_MBR = 927;           !  Maximum broadcast routers (word) 
literal NMA$C_PCNO_AMC = 928;           !  Area maximum cost (word) 
literal NMA$C_PCNO_AMH = 929;           !  Area maximum hops (byte) 
literal NMA$C_PCNO_MBU = 930;           !  Maximum buffers (word) 
literal NMA$C_PCNO_BUS = 931;           !  Executor buffer size (word) 
literal NMA$C_PCNO_SBS = 932;           !  Segment buffer size (word) 
literal NMA$C_PCNO_MPS = 933;           !  Maximum path splits
literal NMA$C_PCNO_FBS = 933;           !  Forwarding buffer size (word) 
! 
literal NMA$C_PCNO_RSX_RPA = 2300;      !  Receive password 
!   0, Password set
literal NMA$C_PCNO_RSX_TPA = 2301;      !  Transmit password 
!   0, Password set
literal NMA$C_PCNO_RSX_VER = 2310;      !  Verification state 
!   0, On
literal NMA$C_PCNO_PUS = 2704;          !  Privileged user id 
literal NMA$C_PCNO_PAC = 2705;          !  Privileged account 
literal NMA$C_PCNO_PPW = 2706;          !  Privileged password 
literal NMA$C_PCNO_NUS = 2712;          !  Non-privileged user id 
literal NMA$C_PCNO_NAC = 2713;          !  Non-privileged account 
literal NMA$C_PCNO_NPW = 2714;          !  Non-privileged password 
literal NMA$C_PCNO_RPA = 2720;          !  Receive password 
literal NMA$C_PCNO_TPA = 2721;          !  Transmit password 
literal NMA$C_PCNO_ACC = 2730;          !  Access (coded byte of NMA$C_ACES_) 
literal NMA$C_PCNO_DAC = 2731;          !  Default access (coded byte of NMA$C_ACES_) 
literal NMA$C_PCNO_PIQ = 2740;          !  Pipeline quota (word) 
literal NMA$C_PCNO_ALI = 2742;          !  Alias incoming (coded byte of ALIINC))
literal NMA$C_PCNO_ALM = 2743;          !  Alias Maximum links
literal NMA$C_PCNO_ALN = 2744;          !  Alias node
literal NMA$C_PCNO_PRX = 2750;          !  Proxy access (coded byte of NMA$C_ACES_) !! Obsolete: Only for LIST/PURGE 
literal NMA$C_PCNO_DPX = 2751;          !  Default proxy access (coded byte of NMA$C_ACES_) 
literal NMA$C_PCNO_COP = 2760;          !  Remote nodefor COPY command
literal NMA$C_PCNO_INB = 2765;          !  Inbound for async DECnet.
literal NMA$C_PCNO_LAA = 2770;          !  Load Assist Agent
literal NMA$C_PCNO_LAP = 2771;          !  Load Assist Parameter
literal NMA$C_PCNO_PSP = 2780;          !  Path Splits Policy
!  (Coded byte f PSPCY)
literal NMA$C_PCNO_MDO = 2785;          !  Maximum Declared Objects
! 
literal NMA$C_PCNO_SRV_RPA = 3300;      !  Receive password 
!   0, Password set
literal NMA$C_PCNO_SRV_TPA = 3301;      !  Transmit password 
!   0, Password set
literal NMA$C_PCNO_SRV_VER = 3310;      !  Verification state 
!   0, On
literal NMA$C_PCNO_SRV_ACB = 3402;      !  Active control buffers 
literal NMA$C_PCNO_SRV_ASB = 3404;      !  Active small buffers 
literal NMA$C_PCNO_SRV_ALB = 3406;      !  Active large buffers 
literal NMA$C_PCNO_SRV_MCB = 3410;      !  Maximum control buffers 
literal NMA$C_PCNO_SRV_MSB = 3420;      !  Maximum small buffers 
literal NMA$C_PCNO_SRV_MLB = 3430;      !  Maximum large buffers 
literal NMA$C_PCNO_SRV_LBS = 3431;      !  Large buffer size 
literal NMA$C_PCNO_SRV_NRB = 3440;      !  Minimum receive buffers 
literal NMA$C_PCNO_SRV_CPT = 3450;      !  CEX pool: total bytes 
literal NMA$C_PCNO_SRV_CPF = 3452;      !  CEX pool: number of segments 
literal NMA$C_PCNO_SRV_CPL = 3454;      !  CEX pool: largest segment 
literal NMA$C_PCNO_SRV_XPT = 3460;      !  Extended pool: total bytes 
literal NMA$C_PCNO_SRV_XPF = 3462;      !  Extended pool: number of segments 
literal NMA$C_PCNO_SRV_XPL = 3464;      !  Extended pool: largest segment 
! 
literal NMA$C_PCAR_STA = 0;             !  State (coded byte of NMA$C_STATE_) 
literal NMA$C_PCAR_COS = 820;           !  Cost (word) 
literal NMA$C_PCAR_HOP = 821;           !  Hops (byte) 
literal NMA$C_PCAR_CIR = 822;           !  Circuit (ascic) 
literal NMA$C_PCAR_NND = 830;           !  Next node to area 
! 
literal NMA$C_PCOB_OAN = 400;           !  Active name 
literal NMA$C_PCOB_OAC = 410;           !  Active links 
literal NMA$C_PCOB_ONA = 500;           !  Name 
literal NMA$C_PCOB_OCO = 510;           !  Copies 
literal NMA$C_PCOB_OUS = 511;           !  User 
literal NMA$C_PCOB_OVE = 520;           !  Verification 
literal NMA$C_PCOB_NAM = 500;           !  Name 
literal NMA$C_PCOB_NUM = 513;           !  Number 
literal NMA$C_PCOB_FID = 530;           !  File id 
literal NMA$C_PCOB_PID = 535;           !  Process id 
literal NMA$C_PCOB_PRV = 540;           !  Privilege list 
literal NMA$C_PCOB_OCPRV = 542;         !  Outgoing connect privilege list 
literal NMA$C_PCOB_USR = 550;           !  User id 
literal NMA$C_PCOB_ACC = 551;           !  Account 
literal NMA$C_PCOB_PSW = 552;           !  Password 
literal NMA$C_PCOB_PRX = 560;           !  Proxy access (coded byte of NMA$C_ACES_) 
literal NMA$C_PCOB_ALO = 565;           !  Alias outgoing- coded byte of nma$c_alout
literal NMA$C_PCOB_ALI = 566;           !  Alias incoming- coded byte of nma$c_alinc
! 
literal NMA$C_PCLK_STA = 0;             !  State 
literal NMA$C_PCLK_PID = 101;           !  Process id 
literal NMA$C_PCLK_NID = 102;           !  Partner Node 
literal NMA$C_PCLK_LAD = 105;           !  Link address [V2 only] 
!  entity is node rather than link !
literal NMA$C_PCLK_DLY = 110;           !  Round trip delay time (word) 
literal NMA$C_PCLK_RLN = 120;           !  Remote link number (word) 
literal NMA$C_PCLK_RID = 121;           !  Remote identification, PID or username (ascic) 
literal NMA$C_PCLK_USR = 130;           !  Username of link owner (ascic) 
literal NMA$C_PCLK_PRC = 131;           !  Process name of link owner (ascic) 
! 
literal NMA$C_CTCIR_ZER = 0;            !  Seconds since last zeroed 
literal NMA$C_CTCIR_APR = 800;          !  Terminating packets received 
literal NMA$C_CTCIR_DPS = 801;          !  Originating packets sent 
literal NMA$C_CTCIR_ACL = 802;          !  Terminating congestion loss 
literal NMA$C_CTCIR_CRL = 805;          !  Corruption loss 
literal NMA$C_CTCIR_TPR = 810;          !  Transit packets received 
literal NMA$C_CTCIR_TPS = 811;          !  Transit packets sent 
literal NMA$C_CTCIR_TCL = 812;          !  Transit congestion loss 
literal NMA$C_CTCIR_LDN = 820;          !  Circuit down 
literal NMA$C_CTCIR_IFL = 821;          !  Initialization failure 
literal NMA$C_CTCIR_AJD = 822;          !  Adjacency down events
literal NMA$C_CTCIR_PAJ = 900;          !  Peak adjacencies 
literal NMA$C_CTCIR_BRC = 1000;         !  Bytes received 
literal NMA$C_CTCIR_BSN = 1001;         !  Bytes sent 
literal NMA$C_CTCIR_MBY = 1002;         !  Multicast bytes received 
literal NMA$C_CTCIR_DBR = 1010;         !  Data blocks received 
literal NMA$C_CTCIR_DBS = 1011;         !  Data blocks sent 
literal NMA$C_CTCIR_DEI = 1020;         !  Data errors inbound 
literal NMA$C_CTCIR_DEO = 1021;         !  Data errors outbound 
literal NMA$C_CTCIR_RRT = 1030;         !  Remote reply timeouts 
literal NMA$C_CTCIR_LRT = 1031;         !  Local reply timeouts 
literal NMA$C_CTCIR_RBE = 1040;         !  Remote buffer errors 
literal NMA$C_CTCIR_LBE = 1041;         !  Local buffer errors 
literal NMA$C_CTCIR_SIE = 1050;         !  Selection intervals elapsed 
literal NMA$C_CTCIR_SLT = 1051;         !  Selection timeouts 
literal NMA$C_CTCIR_UBU = 1065;         !  NI user buffer unavailable 
literal NMA$C_CTCIR_RPE = 1100;         !  Remote process errors [V2 only] 
literal NMA$C_CTCIR_LPE = 1101;         !  Local process errors [V2 only] 
literal NMA$C_CTCIR_LIR = 1240;         !  Locally initiated resets 
literal NMA$C_CTCIR_RIR = 1241;         !  Remotely initiated resets 
literal NMA$C_CTCIR_NIR = 1242;         !  Network initiated resets 
! 
literal NMA$C_CTCIR_MNE = 2701;         !  Multicast received for protocol 
!  type, but not enabled
literal NMA$C_CTCIR_ERI = 2750;         !  PCL Errors inbound, bit-mapped 
!         0  CRC error on receive
literal NMA$C_CTCIR_ERO = 2751;         !  PCL Errors outbound, bit-mapped 
!         1  CRC on transmit
literal NMA$C_CTCIR_RTO = 2752;         !  PCL Remote timeouts, bit-mapped 
!         0  Receiver busy
literal NMA$C_CTCIR_LTO = 2753;         !  PCL Local timeouts 
literal NMA$C_CTCIR_BER = 2754;         !  PCL Remote buffer errors 
literal NMA$C_CTCIR_BEL = 2755;         !  PCL Local buffer errors 
! 
literal NMA$C_CTLIN_ZER = 0;            !  Seconds since last zeroed 
literal NMA$C_CTLIN_APR = 800;          !  Arriving packets received [V2 only] 
literal NMA$C_CTLIN_DPS = 801;          !  Departing packets sent [V2 only] 
literal NMA$C_CTLIN_ACL = 802;          !  Arriving congestion loss [V2 only] 
literal NMA$C_CTLIN_TPR = 810;          !  Transit packets received [V2 only] 
literal NMA$C_CTLIN_TPS = 811;          !  Transit packets sent [V2 only] 
literal NMA$C_CTLIN_TCL = 812;          !  Transit congestion loss [V2 only] 
literal NMA$C_CTLIN_LDN = 820;          !  Line down [V2 only] 
literal NMA$C_CTLIN_IFL = 821;          !  Initialization failure [V2 only] 
literal NMA$C_CTLIN_BRC = 1000;         !  Bytes received 
literal NMA$C_CTLIN_BSN = 1001;         !  Bytes sent 
literal NMA$C_CTLIN_MBY = 1002;         !  Multicast bytes received 
literal NMA$C_CTLIN_DBR = 1010;         !  Data blocks received 
literal NMA$C_CTLIN_DBS = 1011;         !  Data blocks sent 
literal NMA$C_CTLIN_MBL = 1012;         !  Multicast blocks received 
literal NMA$C_CTLIN_BID = 1013;         !  Blocks sent, initially deferred 
literal NMA$C_CTLIN_BS1 = 1014;         !  Blocks sent, single collision 
literal NMA$C_CTLIN_BSM = 1015;         !  Blocks sent, multiple collisions 
literal NMA$C_CTLIN_DEI = 1020;         !  Data errors inbound 
literal NMA$C_CTLIN_DEO = 1021;         !  Data errors outbound 
literal NMA$C_CTLIN_RRT = 1030;         !  Remote reply timeouts 
literal NMA$C_CTLIN_LRT = 1031;         !  Local reply timeouts 
literal NMA$C_CTLIN_RBE = 1040;         !  Remote buffer errors 
literal NMA$C_CTLIN_LBE = 1041;         !  Local buffer errors 
literal NMA$C_CTLIN_SIE = 1050;         !  Selection intervals elapsed [V2 only] 
literal NMA$C_CTLIN_SLT = 1051;         !  Selection timeouts [V2 only] 
literal NMA$C_CTLIN_SFL = 1060;         !  Send failure 
literal NMA$C_CTLIN_CDC = 1061;         !  Collision detect check failure 
literal NMA$C_CTLIN_RFL = 1062;         !  Receive failure 
literal NMA$C_CTLIN_UFD = 1063;         !  Unrecognized frame destination 
literal NMA$C_CTLIN_OVR = 1064;         !  Data overrun 
literal NMA$C_CTLIN_SBU = 1065;         !  System buffer unavailable 
literal NMA$C_CTLIN_UBU = 1066;         !  User buffer unavailable 
literal NMA$C_CTLIN_RPE = 1100;         !  Remote process errors 
literal NMA$C_CTLIN_LPE = 1101;         !  Local process errors 
! 
literal NMA$S_NMADEF1 = 2;
macro NMA$W_NODE = 0,0,16,0 %;
macro NMA$V_ADDR = 0,0,10,0 %;
literal NMA$S_ADDR = 10;
macro NMA$V_AREA = 0,10,6,0 %;
literal NMA$S_AREA = 6;
! 
!  Parameter ID word (DATA ID)
! 
macro NMA$V_PTY_TYP = 0,0,15,0 %;
literal NMA$S_PTY_TYP = 15;             !  Type mask 
! 
!  Parameter data type byte (DATA TYPE)
! 
macro NMA$V_PTY_CLE = 0,0,6,0 %;
literal NMA$S_PTY_CLE = 6;              !  Coded length mask 
macro NMA$V_PTY_MUL = 0,6,1,0 %;        !  Coded multiple indicator 
macro NMA$V_PTY_COD = 0,7,1,0 %;        !  Coded indicator 
macro NMA$V_PTY_CMU = 0,6,2,0 %;
literal NMA$S_PTY_CMU = 2;              !  Coded multiple 
macro NMA$V_PTY_NLE = 0,0,4,0 %;
literal NMA$S_PTY_NLE = 4;              !  Number length mask 
macro NMA$V_PTY_NTY = 0,4,2,0 %;
literal NMA$S_PTY_NTY = 2;              !  Number type mask 
macro NMA$V_PTY_ASC = 0,6,1,0 %;        !  Ascii image indicator 
!  NTY values (how to display number): 
!  Define standard values for the DATA TYPE byte
! 
!  Parameters for 802 control support
! 
!     Circuit parameters
! 
!  RSX-specific circuit parameters
! 
!  VMS-specific circuit NICE parameters [2700 - 2799]
! 
! 
!  VMS-specific datalink only circuit parameters   [2800 - 2899]
! 
!  (these will never be used in NICE messages).
! 
!  Server Base specific Circuit parameters
! 
!     Line parameters
! 
!  RSX-specific line parameters
! 
!   1, Topdown
!  VMS-specific line NICE parameters [2700 - 2799]
! 
!  VMS-specific datalink only line parameters   [2800 - 2899]
! 
!  (these will never be used in NICE messages).
! 
!     Server Base specific line parameters
! 
!     Communication Medium parameters
! 
!     Console module parameters
! 
!     Loader module parameters
! 
!     Looper module parameters
! 
!     Configurator module parameters
! 
!     Logging parameters
! 
!     X.25 Access module parameters
! 
!  RSX-specific X.25-Access module parameters
! 
!  Server Base specific X.25-Access module parameters
! 
!     X.25 Protocol module parameters
! 
!       RSX-specific X.25-Protocol Module parameters
! 
!  VMS-specific X25-PROTOCOL NICE parameters [2700 - 2799]
! 
!  Server Base specific X.25-Protocol Module parameters
! 
!     X.25 server module parameters
! 
!  RSX-specific X.25-Server Module parameters
! 
!   1, Off
! 
!  VMS-specific X25-SERVER NICE parameters [2700 - 2799]
! 
!  Server Base specific X.25-Server Module parameters
! 
!   1, Off
! 
!  X.25 trace module parameters (VMS-specific)
! 
!     Node parameters
! 
!  RSX-Specific Node (Executor) parameters
! 
!   1, Off
! 
!  VMS-specific node parameters
! 
!  Server Base specific Node (Executor) parameters
! 
!   1, Off
!     Area parameters
! 
!     VMS-specific object parameters
! 
!     VMS-specific link parameters
! 
!  CM-1/2, DU-2 (link !), HI-4 (pid)
!     Circuit counters
! 
!  VMS-specific circuit counters
! 
!         2  Timeout on word
!         1  Transmitter offline
!         2  Receiver offline
!     Line counters
! 
!  Line counter flags (byte offset will be 0)
! 
literal NMA$M_CTLIN_BTL = 8;
literal NMA$M_CTLIN_FCS = 16;
literal NMA$M_CTLIN_TRJ = 32;
literal NMA$S_NMADEF2 = 1;
macro NMA$V_CTLIN_BTL = 0,3,1,0 %;      !  block too long 
macro NMA$V_CTLIN_FCS = 0,4,1,0 %;      !  frame check 
macro NMA$V_CTLIN_TRJ = 0,5,1,0 %;      !  REJ sent 
literal NMA$M_CTLIN_RRJ = 8;
literal NMA$S_NMADEF3 = 1;
macro NMA$V_CTLIN_RRJ = 0,3,1,0 %;      !  REJ received 
literal NMA$M_CTLIN_RRN = 4;
literal NMA$S_NMADEF4 = 1;
macro NMA$V_CTLIN_RRN = 0,2,1,0 %;      !  RNR received 
literal NMA$M_CTLIN_TRN = 4;
literal NMA$S_NMADEF5 = 1;
macro NMA$V_CTLIN_TRN = 0,2,1,0 %;      !  RNR sent 
literal NMA$M_CTLIN_INR = 16;
literal NMA$M_CTLIN_FMS = 32;
literal NMA$S_NMADEF6 = 1;
macro NMA$V_CTLIN_INR = 0,4,1,0 %;      !  invalid N(R) received 
macro NMA$V_CTLIN_FMS = 0,5,1,0 %;      !  FRMR sent 
literal NMA$M_CTLIN_TUN = 4;
literal NMA$M_CTLIN_RUN = 16;
literal NMA$M_CTLIN_FMR = 32;
literal NMA$C_CTLIN_MBS = 2701;         !  Multicast packets transmitted 
literal NMA$C_CTLIN_MSN = 2702;         !  Multicast bytes transmitted 
literal NMA$C_CTLIN_RME = 2750;         !  PCL Remote errors, bit-mapped 
!         0  TDM bus busy
literal NMA$C_CTLIN_LCE = 2751;         !  PCL Local errors, bit-mapped 
!         0  Transmitter overrun
literal NMA$C_CTLIN_MSE = 2752;         !  PCL master/secondary errors, bit-mapped 
!         1  Master down
literal NMA$C_CTNOD_ZER = 0;            !  Seconds since last zeroed 
literal NMA$C_CTNOD_BRC = 600;          !  Bytes received 
literal NMA$C_CTNOD_BSN = 601;          !  Bytes sent 
literal NMA$C_CTNOD_MRC = 610;          !  Messages received 
literal NMA$C_CTNOD_MSN = 611;          !  Messages sent 
literal NMA$C_CTNOD_CRC = 620;          !  Connects received 
literal NMA$C_CTNOD_CSN = 621;          !  Connects sent 
literal NMA$C_CTNOD_RTO = 630;          !  Response timeouts 
literal NMA$C_CTNOD_RSE = 640;          !  Received connect resource errors 
literal NMA$C_CTNOD_BUN = 650;          !  Buffer unavailable 
literal NMA$C_CTNOD_MLL = 700;          !  Maximum logical links active 
literal NMA$C_CTNOD_APL = 900;          !  Aged packet loss 
literal NMA$C_CTNOD_NUL = 901;          !  Node unreachable packet loss 
literal NMA$C_CTNOD_NOL = 902;          !  Node out-of-range packet loss 
literal NMA$C_CTNOD_OPL = 903;          !  Oversized packet loss 
literal NMA$C_CTNOD_PFE = 910;          !  Packet format error 
literal NMA$C_CTNOD_RUL = 920;          !  Partial routing update loss 
literal NMA$C_CTNOD_VER = 930;          !  Verification reject 
! 
literal NMA$C_CTNOD_SRV_SYC = 3310;     !  Control buffer failures 
literal NMA$C_CTNOD_SRV_SYS = 3320;     !  Small buffer failures 
literal NMA$C_CTNOD_SRV_SYL = 3330;     !  Large buffer failures 
literal NMA$C_CTNOD_SRV_SYR = 3340;     !  Receive buffer failures 
! 
literal NMA$C_CTXP_ZER = 0;             !  Seconds since last zeroed 
literal NMA$C_CTXP_BRC = 1000;          !  Bytes received 
literal NMA$C_CTXP_BSN = 1001;          !  Bytes sent 
literal NMA$C_CTXP_BLR = 1010;          !  Data blocks received 
literal NMA$C_CTXP_BLS = 1011;          !  Data blocks sent 
literal NMA$C_CTXP_CRC = 1200;          !  Calls received 
literal NMA$C_CTXP_CSN = 1201;          !  Calls sent 
literal NMA$C_CTXP_FSR = 1210;          !  Fast selects received 
literal NMA$C_CTXP_FSS = 1211;          !  Fast selects sent 
literal NMA$C_CTXP_MSA = 1220;          !  Maximum switched circuits active 
literal NMA$C_CTXP_MCA = 1221;          !  Maximum channels active 
literal NMA$C_CTXP_RSE = 1230;          !  Received call resource errors 
literal NMA$C_CTXP_LIR = 1240;          !  Locally initiated resets 
literal NMA$C_CTXP_RIR = 1241;          !  Remotely initiated resets 
literal NMA$C_CTXP_NIR = 1242;          !  Network initiated resets 
literal NMA$C_CTXP_RST = 1250;          !  Restarts 
! 
literal NMA$C_CTXS_ZER = 0;             !  Seconds since last zeroed 
literal NMA$C_CTXS_MCA = 200;           !  Maximum circuits active 
literal NMA$C_CTXS_ICR = 210;           !  Incoming calls rejected, no resources 
literal NMA$C_CTXS_LLR = 211;           !  Logical links rejected, no resources 
! 
literal NMA$C_LOOP_MIX = 2;             !  Mixed 
literal NMA$C_LOOP_ONE = 1;             !  Ones 
literal NMA$C_LOOP_ZER = 0;             !  Zeroes 
! 
literal NMA$C_LOOP_DCNT = 1;            !  Default count 
literal NMA$C_LOOP_DSIZ = 40;           !  Default message size 
! 
literal NMA$C_LOOP_XMIT = 0;            !  Transmit 
literal NMA$C_LOOP_RECV = 1;            !  Receive 
literal NMA$C_LOOP_FULL = 2;            !  Full (both transmit and receive) 
! 
literal NMA$C_STATE_ON = 0;             !  On 
literal NMA$C_STATE_OFF = 1;            !  Off 
! 
literal NMA$C_STATE_SER = 2;            !  Service (circuit/line only) 
literal NMA$C_STATE_CLE = 3;            !  Cleared 
! 
literal NMA$C_STATE_HOL = 2;            !  Hold 
! 
literal NMA$C_STATE_SHU = 2;            !  Shut 
literal NMA$C_STATE_RES = 3;            !  Restricted 
literal NMA$C_STATE_REA = 4;            !  Reachable 
literal NMA$C_STATE_UNR = 5;            !  Unreachable 
! 	PVM0001+
literal NMA$C_PCNO_DMAD = 1023;         ! 
! 	PVM0001-	
literal NMA$C_ASS_ENA = 0;              !  Enabled 
literal NMA$C_ASS_DIS = 1;              !  Disabled 
! 
literal NMA$C_SUR_ENA = 0;              !  Enabled 
literal NMA$C_SUR_DIS = 1;              !  Disabled 
! 
literal NMA$C_LINSS_STA = 0;            !  Starting 
literal NMA$C_LINSS_REF = 1;            !  Reflecting 
literal NMA$C_LINSS_LOO = 2;            !  Looping 
literal NMA$C_LINSS_LOA = 3;            !  Loading 
literal NMA$C_LINSS_DUM = 4;            !  Dumping 
literal NMA$C_LINSS_TRI = 5;            !  Triggering 
literal NMA$C_LINSS_ASE = 6;            !  Autoservice 
literal NMA$C_LINSS_ALO = 7;            !  Autoloading 
literal NMA$C_LINSS_ADU = 8;            !  Autodumping 
literal NMA$C_LINSS_ATR = 9;            !  Autotriggering 
literal NMA$C_LINSS_SYN = 10;           !  Synchronizing 
literal NMA$C_LINSS_FAI = 11;           !  Failed 
literal NMA$C_LINSS_RUN = 12;           !  Running 
literal NMA$C_LINSS_UNS = 13;           !  Unsyncronised 
literal NMA$C_LINSS_IDL = 14;           !  Idle (PSI-only) 
! 
literal NMA$C_CIRTY_POI = 0;            !  DDCMP Point 
literal NMA$C_CIRTY_CON = 1;            !  DDCMP Controller 
literal NMA$C_CIRTY_TRI = 2;            !  DDCMP Tributary 
literal NMA$C_CIRTY_X25 = 3;            !  X25 
literal NMA$C_CIRTY_DMC = 4;            !  DDCMP DMC compatibility mode (DMP) 
! /*        CIRTY_LAPB, 5                /* LAPB  *** remove once all references have been changed to LAPB ***
literal NMA$C_CIRTY_NI = 6;             !  NI 
! 
literal NMA$C_LINSV_ENA = 0;            !  Enabled 
literal NMA$C_LINSV_DIS = 1;            !  Disabled 
! 
literal NMA$C_CIRPST_AUT = 1;           !  Automatic 
literal NMA$C_CIRPST_ACT = 2;           !  Active 
literal NMA$C_CIRPST_INA = 3;           !  Inactive 
literal NMA$C_CIRPST_DIE = 4;           !  Dying 
literal NMA$C_CIRPST_DED = 5;           !  Dead 
! 
literal NMA$C_CIRBLK_ENA = 0;           !  Enabled 
literal NMA$C_CIRBLK_DIS = 1;           !  Disabled 
! 
literal NMA$C_CIRUS_PER = 0;            !  Permanent 
literal NMA$C_CIRUS_INC = 1;            !  Incoming 
literal NMA$C_CIRUS_OUT = 2;            !  Outgoing 
! 
literal NMA$C_CIRHS_ENA = 0;            !  Enabled
literal NMA$C_CIRHS_DIS = 1;            !  Disabled
! 
literal NMA$C_CIRBF_UNL = 255;          !  Unlimited 
! 
literal NMA$C_CIRVE_ENA = 0;            !  Enabled 
literal NMA$C_CIRVE_DIS = 1;            !  Disabled 
literal NMA$C_CIRVE_INB = 2;            !  Inbound
! 
literal NMA$C_CIRXPT_ZND = 1;           !  Z-node 
literal NMA$C_CIRXPT_PH2 = 2;           !  Force Phase II on this circuit 
literal NMA$C_CIRXPT_PH3 = 3;           !  Routing III 
literal NMA$C_CIRXPT_RO3 = 3;           !  Routing III 
literal NMA$C_CIRXPT_NR4 = 4;           !  Nonrouting Phase IV 
! 
literal NMA$C_DPX_FUL = 0;              !  Full 
literal NMA$C_DPX_HAL = 1;              !  Half 
literal NMA$C_DPX_MPT = 4;              !  Multipoint
! 
literal NMA$C_LINCN_NOR = 0;            !  Normal 
literal NMA$C_LINCN_LOO = 1;            !  Loop 
! 
literal NMA$C_LINPR_POI = 0;            !  DDCMP Point 
literal NMA$C_LINPR_CON = 1;            !  DDCMP Controller 
literal NMA$C_LINPR_TRI = 2;            !  DDCMP Tributary 
literal NMA$C_LINPR_DMC = 4;            !  DDCMP DMC compatibility mode (DMP) 
literal NMA$C_LINPR_LAPB = 5;           !  LAPB 
literal NMA$C_LINPR_NI = 6;             !  NI 
literal NMA$C_LINPR_BSY = 9;            !  BISYNC (not really - just Genbyte)
literal NMA$C_LINPR_GENBYTE = 9;        !  Genbyte (real name)
literal nma$c_linpr_lapbe = 10;         !  LAPBE
literal nma$c_linpr_ea_hdlc = 20;       !  Extended addressing HDLC
literal nma$c_linpr_sdlc = 21;          !  SDLC
literal nma$c_linpr_bisync = 22;        !  IBM Bisync protocol (not BSY framing)
literal nma$c_linpr_swift = 23;         !  SWIFT Bisync variant
literal nma$c_linpr_chips = 24;         !  CHIPS Bisync variant
literal nma$m_linpr_mop = 128;          !  MOP support
! 
literal nma$c_code_ascii = 1;           !  ASCII character code
literal nma$c_code_ebcdic = 2;          !  EBCDIC character code
! 
literal NMA$C_LINPR_MAS = 1;            !  Master (controls clock signals) 
literal NMA$C_LINPR_NEU = 2;            !  Neutral (uses master's clock signals) 
literal NMA$C_LINPR_SEC = 0;            !  Secondary (backup for master failure) 
! 
literal NMA$C_LINCL_EXT = 0;            !  External 
literal NMA$C_LINCL_INT = 1;            !  Internal 
! 
literal NMA$C_LINFM_802E = 0;           !  802 Extended
literal NMA$C_LINFM_ETH = 1;            !  Ethernet
literal NMA$C_LINFM_802 = 2;            !  802
! 
literal NMA$C_LINSR_USR = 1;            !  User supplied
literal NMA$C_LINSR_CLI = 2;            !  Class I
! 
literal NMA$C_LINSWI_DIS = 1;           !  Switch disabled
literal NMA$C_LINSWI_ENA = 0;           !  Switch enabled
! 	
literal NMA$C_LINHNG_DIS = 1;           !  Hangup disabled
literal NMA$C_LINHNG_ENA = 0;           !  Hangup enabled
! 	
literal NMA$C_LINRES_DIS = 1;           !  Restart disabled
literal NMA$C_LINRES_ENA = 0;           !  Restart enabled
! 
literal NMA$C_LINTY_POI = 0;            !  DDCMP Point 
literal NMA$C_LINTY_CON = 1;            !  DDCMP Controller 
literal NMA$C_LINTY_TRI = 2;            !  DDCMP Tributary 
literal NMA$C_LINTY_DMC = 3;            !  DDCMP DMC compatibility mode (DMP) 
! 
literal NMA$C_LINMC_SET = 1;            !  Set address(es) 
literal NMA$C_LINMC_CLR = 2;            !  Clear address(es) 
literal NMA$C_LINMC_CAL = 3;            !  Clear entire list of multicast addresses 
literal NMA$C_LINMC_SDF = 4;            !  Set physical address to DECnet default 
! 
literal NMA$C_ACC_SHR = 1;              !  Shared access (default protocol user) 
literal NMA$C_ACC_LIM = 2;              !  Limited access (point-to-point conn.) 
literal NMA$C_ACC_EXC = 3;              !  Exclusive access (allow no others) 
! 
literal NMA$C_LINMO_AUT = 1;            !  Auto address mode 
literal NMA$C_LINMO_SIL = 2;            !  Silo address mode 
! 
literal NMA$C_X25MD_DTE = 1;            !  line operates as DTE 
literal NMA$C_X25MD_DCE = 2;            !  line operates as DCE 
literal NMA$C_X25MD_DTL = 3;            !  line is a DTE in loopback 
literal NMA$C_X25MD_DCL = 4;            !  line is a DCE in loopback 
literal nma$c_x25md_neg = 5;            !  line negotiates mode of operation
! 
literal nma$c_x25red_busy = 0;          !  redirected beacuse DTE was Busy
literal nma$c_x25red_out_of_order = 1;  !  redirected beacuse DTE was out of order
literal nma$c_x25red_systematic = 2;    !  redirected systematically
! 
literal NMA$C_NODTY_ROU = 0;            !  Routing Phase III 
literal NMA$C_NODTY_NON = 1;            !  Nonrouting Phase III 
literal NMA$C_NODTY_PHA = 2;            !  Phase II 
literal NMA$C_NODTY_AREA = 3;           !  Area 
literal NMA$C_NODTY_RT4 = 4;            !  Routing Phase IV 
literal NMA$C_NODTY_NR4 = 5;            !  Nonrouting Phase IV 
! 
literal NMA$C_NODINB_ROUT = 1;          !  Router
literal NMA$C_NODINB_ENDN = 2;          !  Endnode
! 
literal NMA$C_NODPW_SET = 0;            !  Password set 
! 
literal NMA$C_CPU_8 = 0;                !  PDP-8 processor 
literal NMA$C_CPU_11 = 1;               !  PDP-11 processor 
literal NMA$C_CPU_1020 = 2;             !  Decsystem 10/20 processor 
literal NMA$C_CPU_VAX = 3;              !  Vax processor 
! 
literal NMA$C_NODSNV_PH3 = 0;           !  Phase III 
literal NMA$C_NODSNV_PH4 = 1;           !  Phase IV 
! 
literal NMA$C_SOFT_SECL = 0;            !  Secondary loader 
literal NMA$C_SOFT_TERL = 1;            !  Tertiary loader 
literal NMA$C_SOFT_OSYS = 2;            !  Operating system 
literal NMA$C_SOFT_DIAG = 3;            !  Diagnostics 
! 
literal NMA$C_ACES_NONE = 0;            !  None 
literal NMA$C_ACES_INCO = 1;            !  Incoming 
literal NMA$C_ACES_OUTG = 2;            !  Outgoing 
literal NMA$C_ACES_BOTH = 3;            !  Both 
literal NMA$C_ACES_REQU = 4;            !  Required 
! 
literal NMA$C_ALIINC_ENA = 0;           !  Enabled
literal NMA$C_ALIINC_DIS = 1;           !  Disabled
! 
literal NMA$C_ALOUT_ENA = 0;            !  Enabled
literal NMA$C_ALOUT_DIS = 1;            !  Disabled
! 
literal NMA$C_ALINC_ENA = 0;            !  Enabled
literal NMA$C_ALINC_DIS = 1;            !  Disabled
! 
literal NMA$C_PRXY_ENA = 0;             !  Enabled
literal NMA$C_PRXY_DIS = 1;             !  Disabled
! 
literal NMA$C_PSPCY_NOR = 0;            !  Normal
literal NMA$C_PSPCY_INT = 1;            !  Interim
! 
literal NMA$C_XPRTY_BIL = 1;            !  Bilateral 
! 
literal NMA$C_XPRST_ON = 0;             !  On 
literal NMA$C_XPRST_OFF = 1;            !  Off 
literal NMA$C_XPRST_SHU = 2;            !  Shut 
! 
literal NMA$C_XPRMN_ENA = 0;            !  Enabled 
literal NMA$C_XPRMN_DIS = 1;            !  Disabled 
! 
literal NMA$C_XPRSB_RUN = 12;           !  Running 
literal NMA$C_XPRSB_UNS = 13;           !  Unsynchronized 
literal NMA$C_XPRSB_SYN = 10;           !  Synchronizing 
! 
literal NMA$C_Clear_String = 0;         ! Clear string value
literal NMA$C_Clear_Longword = -1;      ! Clear longword value
literal NMA$C_CAL_CLR = 0;              ! Call clear
literal NMA$C_CAL_NOW = 1;              ! Call now
literal NMA$C_DAY_ALL = 0;
literal NMA$C_DAY_MON = 1;
literal NMA$C_DAY_TUE = 2;
literal NMA$C_DAY_WED = 3;
literal NMA$C_DAY_THU = 4;
literal NMA$C_DAY_FRI = 5;
literal NMA$C_DAY_SAT = 6;
literal NMA$C_DAY_SUN = 7;
literal NMA$C_TIC_No_Cut = 0;           ! Inhibit timecutting
literal NMA$C_TIC_Cut = 1;              ! Perform Timecutting
literal NMA$C_CSG_No_Signal = 0;        ! Inhibit call-signal data
literal NMA$c_CSG_Signal = 1;           ! Send call-signal data
literal NMA$c_IRC_DIS = 0;              ! Incoming Reverse Disable
literal NMA$c_IRC_ENA = 1;              ! Incoming Reverse Enable
literal NMA$c_ORC_DIS = 0;              ! Outgoing Reverse Enable
literal NMA$c_ORC_ENA = 1;              ! Outgoing Reverse Disable
literal NMA$c_RED_DIS = 0;              ! Redirect Enable
literal NMA$c_RED_ENA = 1;              ! Redirect Disable
literal NMA$c_MOD_NOAUTO = 0;           ! Mode AUTO time-cutting
literal NMA$c_MOD_AUTO = 1;             ! Mode non-auto time-cutting
literal NMA$c_SWC_DIS = 0;              ! Enable switched mode
literal NMA$c_SWC_ENA = 1;              ! Set line for Leased operation
literal NMA$c_MDM_OFF = 0;              ! Enable modem signals
literal NMA$c_MDM_ON = 1;               ! Disable modem signals
literal NMA$c_DTS_NO_CABLE = 1;         ! DTE does not have X21 cable
literal NMA$c_DTS_NO_X21_CABLE = 2;     ! DTE has none-X21 cable.
literal NMA$c_DTS_READY = 3;            ! DCE is not ready
literal NMA$c_DTS_NOT_READY = 4;        ! DTE is signalling Not-Ready to network.
literal NMA$c_DTS_ACTIVE = 5;           ! DTE in normal working mode.
literal NMA$c_DTS_NO_OUTGOING = 6;      ! Outgoing calls prohibitedin normal working mode.
literal NMA$c_CAS_NONE = 1;             ! Call-Status - No call active
literal NMA$c_CAS_OUT = 2;              ! Outgoing call active
literal NMA$c_CAS_IN = 3;               ! Incoming call active
literal NMA$c_CAS_OUT_R = 4;            ! Outgoing reverse active
literal NMA$c_CAS_IN_R = 5;             ! Incoming reverse active
literal NMA$c_DTL_ACCEPT = 1;           ! Accept call from
literal NMA$c_DTL_REJECT = 2;           ! Reject call from
literal NMA$C_CAC_MAN = 1;              ! X21 controls connect/accept
literal NMA$C_CAC_AUTO_CONNECT = 2;     ! Driver connects automatically
literal NMA$C_CAC_AUTO_ACCEPT = 3;      ! Enhanced subaddressing
! 
literal NMA$C_JAN = 1;
literal NMA$C_FEB = 2;
literal NMA$C_MAR = 3;
literal NMA$C_APR = 4;
literal NMA$C_MAY = 5;
literal NMA$C_JUN = 6;
literal NMA$C_JUL = 7;
literal NMA$C_AUG = 8;
literal NMA$C_SEP = 9;
literal NMA$C_OCT = 10;
literal NMA$C_NOV = 11;
literal NMA$C_DEC = 12;
! 
literal NMA$C_SOFD_DP = 0;              !  DP11-DA (OBSOLETE)
literal NMA$C_SOFD_UNA = 1;             !  DEUNA UNIBUS CSMA/CD communication link
literal NMA$C_SOFD_DU = 2;              !  DU11-DA synchronous line interface
literal NMA$C_SOFD_CNA = 3;             !  DECNA CSMA/CD communication link
literal NMA$C_SOFD_DL = 4;              !  DL11-C, -E, or -WA synchronous line interface
literal NMA$C_SOFD_QNA = 5;             !  DEQNA CSMA/CD communication link
literal NMA$C_SOFD_DQ = 6;              !  DQ11-DA (OBSOLETE)
literal NMA$C_SOFD_CI = 7;              !  Computer Interconnect Interface
literal NMA$C_SOFD_DA = 8;              !  DA11-B or -AL UNIBUS link
literal NMA$C_SOFD_PCL = 9;             !  PCL11-B multiple CPU link
literal NMA$C_SOFD_DUP = 10;            !  DUP11-DA synchronous line interface
literal NMA$C_SOFD_LUA = 11;            !  DELUA CSMA/CD communication link
literal NMA$C_SOFD_DMC = 12;            !  DMC11-DA/AR, -FA/AR, -MA/AL or -MD/AL interprocessor link
literal NMA$C_SOFD_LNA = 13;            !  MicroServer Lance CSMA/CD communication link
literal NMA$C_SOFD_DN = 14;             !  DN11-BA or -AA automatic calling unit
literal NMA$C_SOFD_DLV = 16;            !  DLV11-E, -F, -J, MXV11-A or -B asynchronous line
literal NMA$C_SOFD_LCS = 17;            !  Lance/Decserver 100 CSMA/CD communication link
literal NMA$C_SOFD_DMP = 18;            !  DMP11 multipoint interprocessor link
literal NMA$C_SOFD_AMB = 19;            !  AMBER (OBSOLETE)
literal NMA$C_SOFD_DTE = 20;            !  DTE20 PDP-11 to KL10 interface
literal NMA$C_SOFD_DBT = 21;            !  DEBET CSMA/CD communication link
literal NMA$C_SOFD_DV = 22;             !  DV11-AA/BA synchronous line multiplexer
literal NMA$C_SOFD_BNA = 23;            !  DEBNA BI CSMA/CD communication link
literal NMA$C_SOFD_BNT = 23;            !  DEBNT **obsolete**
literal NMA$C_SOFD_DZ = 24;             !  DZ11-A, -B, -C, -D asynchronous line multiplexer
literal NMA$C_SOFD_LPC = 25;            !  LANCE/PCXX CSMA/CD communication link
literal NMA$C_SOFD_DSV = 26;            !  DSV11 Q-bus synchronous link
literal NMA$C_SOFD_CEC = 27;            !  3-COM/IBM-PC CSMA/CD communication link
literal NMA$C_SOFD_KDP = 28;            !  KMC11/DUP11-DA synchronous line multiplexer
literal NMA$C_SOFD_IEC = 29;            !  Interlan/IBM-PC CSMA/CD communication link
literal NMA$C_SOFD_KDZ = 30;            !  KMC11/DZ11-A, -B, -C, or -D asynchronous line multiplexer
literal NMA$C_SOFD_UEC = 31;            !  Univation/RAINBOW-100 CSMA/CD communication link
literal NMA$C_SOFD_KL8 = 32;            !  KL8-J (OBSOLETE)
literal NMA$C_SOFD_DS2 = 33;            !  LANCE/DECserver 200 CSMA/CD communication link
literal NMA$C_SOFD_DMV = 34;            !  DMV11 interprocessor link 
literal NMA$C_SOFD_DS5 = 35;            !  DECserver 500 CSMA/CD communication link
literal NMA$C_SOFD_DPV = 36;            !  DPV11 synchronous line interface
literal NMA$C_SOFD_LQA = 37;            !  DELQA CSMA/CD communication link
literal NMA$C_SOFD_DMF = 38;            !  DMF32 synchronous line unit
literal NMA$C_SOFD_SVA = 39;            !  DESVA CSMA/CD communication link
literal NMA$C_SOFD_DMR = 40;            !  DMR11-AA, -AB, -AC, or -AE interprocessor link
literal NMA$C_SOFD_MUX = 41;            !  MUXserver 100 CSMA/CD communication link
literal NMA$C_SOFD_KMY = 42;            !  KMS11-PX synchronous line interface with X.25 Level 2 microcode
literal NMA$C_SOFD_DEP = 43;            !  DEPCA PCSG/IBM-PC CSMA/CD communication link
literal NMA$C_SOFD_KMX = 44;            !  KMS11-BD/BE synchronous line interface with X.25 Level 2 microcode
literal NMA$C_SOFD_LTM = 45;            !  LTM (911) Ethernet monitor
literal NMA$C_SOFD_DMB = 46;            !  DMB-32 BI synchronous line multiplexer
literal NMA$C_SOFD_DES = 47;            !  DESNC Ethernet Encryption Module
literal NMA$C_SOFD_KCP = 48;            !  KCP synchronous/asynchronous line
literal NMA$C_SOFD_MX3 = 49;            !  MUXServer 300 CSMA/CD communication link 
literal NMA$C_SOFD_SYN = 50;            !  MicroServer synchronous line interface
literal NMA$C_SOFD_MEB = 51;            !  DEMEB multiport bridge CSMA/CD communication link 
literal NMA$C_SOFD_DSB = 52;            !  DSB32 BI synchronous line interface
literal NMA$C_SOFD_BAM = 53;            !  DEBAM LANBridge-200 Data Link 
literal NMA$C_SOFD_DST = 54;            !  DST-32 TEAMmate synchronous line interface (DEC423)
literal NMA$C_SOFD_FAT = 55;            !  DEFAT DataKit Server CSMA/CD communication link 
literal NMA$C_SOFD_RSM = 56;            !  DERSM - Remote Segment Monitor 
literal NMA$C_SOFD_RES = 57;            !  DERES - Remote Environmental Sensor 
literal NMA$C_SOFD_3C2 = 58;            !  3COM Etherlink II (part number 3C503) 
literal NMA$C_SOFD_3CM = 59;            !  3COM Etherlink/MC (part number 3C523) 
literal NMA$C_SOFD_DS3 = 60;            !  DECServer 300 CSMA/CD communication link 
literal NMA$C_SOFD_MF2 = 61;            !  Mayfair-2 CSMA/CD communication link 
literal NMA$C_SOFD_MMR = 62;            !  DEMMR Ethernet Multiport Manageable Repeater 
literal NMA$C_SOFD_VIT = 63;            !  Vitalink TransLAN III/IV (NP3A) Bridge 
literal NMA$C_SOFD_VT5 = 64;            !  Vitalink TransLAN 350 (NPC25) Bridge 
literal NMA$C_SOFD_BNI = 65;            !  DEBNI BI CSMA/CD communication link 
literal NMA$C_SOFD_MNA = 66;            !  DEMNA XMI CSMA/CD communication link 
literal NMA$C_SOFD_PMX = 67;            !  PMAX (KN01) CSMA/CD communication link 
literal NMA$C_SOFD_NI5 = 68;            !  Interlan NI5210-8 CSMA/CD comm link for IBM PC XT/AT 
literal NMA$C_SOFD_NI9 = 69;            !  Interlan NI9210 CSMA/CD comm link for IBM PS/2 
literal NMA$C_SOFD_KMK = 70;            !  KMS11-K DataKit UNIBUS adapter 
literal NMA$C_SOFD_3CP = 71;            !  Etherlink Plus (part number 3C505) 
literal NMA$C_SOFD_DP2 = 72;            !  DPNserver-200 CSMA/CD communication link 
literal NMA$C_SOFD_ISA = 73;            !  SGEC CSMA/CD communication link 
literal NMA$C_SOFD_DIV = 74;            !  DIV-32 DEC WAN controller-100
literal NMA$C_SOFD_QTA = 75;            !  DEQTA CSMA/CD communication link
literal NMA$C_SOFD_DSF = 101;           !  DSF32 2 line sync comm link for Cirrus
literal NMA$C_SOFD_KFE = 104;           !  KFE52 CSMA/CD comm link for Cirrus
! 
literal NMA$_SUCCESS = 1;               !  Unqualified success 
literal NMA$_SUCCFLDRPL = 9;            !  Success with field replaced 
literal NMA$_BADFID = 0;                !  Invalid field id code 
literal NMA$_BADDAT = 8;                !  Invalid data format 
literal NMA$_BADOPR = 16;               !  Invalid operation 
literal NMA$_BUFTOOSMALL = 24;          !  Buffer too small 
literal NMA$_FLDNOTFND = 32;            !  Field not found 
! 
literal NMA$C_OPN_MIN = 0;              !  Minimum ! 
literal NMA$C_OPN_NODE = 0;             !  Nodes 
literal NMA$C_OPN_LINE = 1;             !  Lines 
literal NMA$C_OPN_LOG = 2;              !  Logging 
literal NMA$C_OPN_OBJ = 3;              !  Object 
literal NMA$C_OPN_CIR = 4;              !  Circuit 
literal NMA$C_OPN_X25 = 5;              !  Module X25 
literal NMA$C_OPN_X29 = 6;              !  Module X29 
literal NMA$C_OPN_CNF = 7;              !  Module Configurator 
literal NMA$C_OPN_MAX = 7;              !  Maximum ! permanent database files 
literal NMA$C_OPN_ALL = 127;            !  All opened files 
! 
literal NMA$C_OPN_AC_RO = 0;            !  Read Only 
literal NMA$C_OPN_AC_RW = 1;            !  Read write 
! 
literal NMA$C_FN2_DLL = 2;              !  Down line load 
literal NMA$C_FN2_ULD = 3;              !  Upline Dump 
literal NMA$C_FN2_TRI = 4;              !  Trigger remote bootstrap 
literal NMA$C_FN2_LOO = 5;              !  Loop back test 
literal NMA$C_FN2_TES = 6;              !  Send test message to be looped 
literal NMA$C_FN2_SET = 7;              !  Set parameter 
literal NMA$C_FN2_REA = 8;              !  Read Parameter 
literal NMA$C_FN2_ZER = 9;              !  Zero counters 
literal NMA$C_FN2_LNS = 14;             !  Line service 
! 
literal NMA$C_OP2_CHNST = 5;            !  Node operational status 
literal NMA$C_OP2_CHLST = 8;            !  Line operational status 
! 
literal NMA$C_OP2_RENCT = 0;            !  Local node counters 
literal NMA$C_OP2_RENST = 1;            !  local node status 
literal NMA$C_OP2_RELCT = 4;            !  Line counters 
literal NMA$C_OP2_RELST = 5;            !  Line status 
! 
literal NMA$C_OP2_ZENCT = 0;            !  Local Node counters 
literal NMA$C_OP2_ZELCT = 2;            !  Line counters 
! 
literal NMA$C_EN2_KNO = 0;              !  Known lines 
literal NMA$C_EN2_LID = 1;              !  Line id 
literal NMA$C_EN2_LCN = 2;              !  Line convenience name 
! 
literal NMA$C_STS_SUC = 1;              !  Success 
literal NMA$C_STS_MOR = 2;              !  Request accepted, more to come 
literal NMA$C_STS_PAR = 3;              !  Partial reply 
! 
literal NMA$C_STS_DON = -128;           !  Done 
! 
literal NMA$C_STS_FUN = -1;             !  Unrecognized function or option 
literal NMA$C_STS_INV = -2;             !  Invalid message format 
literal NMA$C_STS_PRI = -3;             !  Privilege violation 
literal NMA$C_STS_SIZ = -4;             !  Oversized management command message 
literal NMA$C_STS_MPR = -5;             !  Network management program error 
literal NMA$C_STS_PTY = -6;             !  Unrecognized parameter type 
literal NMA$C_STS_MVE = -7;             !  Incompatible management version 
literal NMA$C_STS_CMP = -8;             !  Unrecognised component 
literal NMA$C_STS_IDE = -9;             !  Invalid identification format 
literal NMA$C_STS_LCO = -10;            !  Line communication error 
literal NMA$C_STS_STA = -11;            !  Component in wrong state 
literal NMA$C_STS_FOP = -13;            !  File open error 
literal NMA$C_STS_FCO = -14;            !  Invalid file contents 
literal NMA$C_STS_RES = -15;            !  Resource error 
literal NMA$C_STS_PVA = -16;            !  Invalid parameter value 
literal NMA$C_STS_LPR = -17;            !  Line protocol error 
literal NMA$C_STS_FIO = -18;            !  File i/o error 
literal NMA$C_STS_MLD = -19;            !  Mirror link disconnected 
literal NMA$C_STS_ROO = -20;            !  No room for new entry 
literal NMA$C_STS_MCF = -21;            !  Mirror connect failed 
literal NMA$C_STS_PNA = -22;            !  Parameter not applicable 
literal NMA$C_STS_PLO = -23;            !  Parameter value too long 
literal NMA$C_STS_HAR = -24;            !  Hardware failure 
literal NMA$C_STS_OPE = -25;            !  Operation failure 
literal NMA$C_STS_SYS = -26;            !  System-specific management 
!  function not supported
literal NMA$C_STS_PGP = -27;            !  Invalid parameter grouping 
literal NMA$C_STS_BLR = -28;            !  Bad loopback response 
literal NMA$C_STS_PMS = -29;            !  Parameter missing 
! 
literal NMA$C_STS_ALI = -127;           !  Invalid alias identification 
literal NMA$C_STS_OBJ = -126;           !  Invalid object identification 
literal NMA$C_STS_PRO = -125;           !  Invalid process identification 
literal NMA$C_STS_LNK = -124;           !  Invalid link identification 
! 
literal NMA$C_FOPDTL_PDB = 0;           !  Permanent database 
literal NMA$C_FOPDTL_LFL = 1;           !  Load file 
literal NMA$C_FOPDTL_DFL = 2;           !  Dump file 
literal NMA$C_FOPDTL_SLF = 3;           !  Secondary loader 
literal NMA$C_FOPDTL_TLF = 4;           !  Tertiary loader 
literal NMA$C_FOPDTL_SDF = 5;           !  Secondary dumper 
literal NMA$C_FOPDTL_PDR = 6;           !  Permanent Database,on remote node
literal NMA$C_FOPDTL_MFL = 7;           !  Management file
! 
literal NMA$C_NCEDTL_NNA = 0;           !  No node name set 
literal NMA$C_NCEDTL_INN = 1;           !  Invalid node name format 
literal NMA$C_NCEDTL_UNA = 2;           !  Unrecognised node name 
literal NMA$C_NCEDTL_UNR = 3;           !  Node unreachable 
literal NMA$C_NCEDTL_RSC = 4;           !  Network resources 
literal NMA$C_NCEDTL_RJC = 5;           !  Rejected by object 
literal NMA$C_NCEDTL_ONA = 6;           !  Invalid object name format 
literal NMA$C_NCEDTL_OBJ = 7;           !  Unrecognised object 
literal NMA$C_NCEDTL_ACC = 8;           !  Access control rejected 
literal NMA$C_NCEDTL_BSY = 9;           !  Object too busy 
literal NMA$C_NCEDTL_NRS = 10;          !  No response from object 
literal NMA$C_NCEDTL_NSD = 11;          !  Node shut down 
literal NMA$C_NCEDTL_DIE = 12;          !  Node or object failed 
literal NMA$C_NCEDTL_DIS = 13;          !  Disconnect by object 
literal NMA$C_NCEDTL_ABO = 14;          !  Abort by object 
literal NMA$C_NCEDTL_ABM = 15;          !  Abort by management 
! 
literal NMA$C_OPEDTL_DCH = 0;           ! 	Data check
literal NMA$C_OPEDTL_TIM = 1;           ! 	Timeout
literal NMA$C_OPEDTL_ORN = 2;           ! 	Data overrun
literal NMA$C_OPEDTL_ACT = 3;           ! 	Unit is active
literal NMA$C_OPEDTL_BAF = 4;           ! 	Buffer allocation failure
literal NMA$C_OPEDTL_RUN = 5;           ! 	Protocol running
literal NMA$C_OPEDTL_DSC = 6;           ! 	Line disconnected
literal NMA$C_OPEDTL_FTL = 8;           ! 	Fatal hardware error
literal NMA$C_OPEDTL_MNT = 11;          ! 	DDCMP maintainance message received
literal NMA$C_OPEDTL_LST = 12;          ! 	Data lost due to buffer size mismatch
literal NMA$C_OPEDTL_THR = 13;          ! 	Threshold error
literal NMA$C_OPEDTL_TRB = 14;          ! 	Tributary malfunction
literal NMA$C_OPEDTL_STA = 15;          ! 	DDCMP start message received
literal NMA$S_NMADEF7 = 1;
macro NMA$V_CTLIN_TUN = 0,2,1,0 %;      !  transmit underrun 
macro NMA$V_CTLIN_RUN = 0,4,1,0 %;      !  receive underrun 
macro NMA$V_CTLIN_FMR = 0,5,1,0 %;      !  FRMR received 
! 
!  VMS-specific line counters
! 
!         1  Message rejected
!         2  Message truncated
!         3  Receiver offline
!         4  Receiver busy
!         5  Transmitter offline
!         1  CRC error on transmit
!         2  CRC error on receive
!         3  Timeouts
!         4  Non-existant memory transmit
!         5  Non-existant memory receive
!         6  Buffer to small
!         7  Failed to open channel
!         8  Memory overflow
!         2  Now master
! 
!     Node counters
! 
!  Server Base Specific Executor Node Counters
! 
!         X.25 Protocol module counters
! 
!         X.25 Server module counters
! 
!         Coded parameter values
! 
! 
!  Loop test block type coded values
! 
!  Default values for loop functions
! 
!  Values for LOOP HELP
! 
!  State coded values
! 
!     circuit/line/process specific state values
! 
!     logging specific state values
! 
!     node specific state values
! 
! 	
! 	Default value for EXECUTOR MAXIMUM ADDRESS.
! 	Note: DNA Network Management does not specify a default.
! 	      This is defined for VMS only, for compatibility with
! 	      previous releases that used a hard coded value in
! 	      [NETACP.SRC]NETCONFIG.MAR.
! 
! 
! 
!  Looper/loader assistance coded values
! 
!  Configurator surveillance coded values
! 
!  Circuit/Line substate coded values
! 
!  Circuit type coded values   [In V2, line type coded values]
! 
!         Circuit/Line Service
! 
!  Circuit polling state
! 
!  Circuit blocking values
! 
!  Circuit usage values
! 
!  Circuit parameter, Handshake Required
! 
!  Circuit maximum receive buffers
! 
!  Circuit verification    [VMS only]
! 
!  Circuit (desired) transport type    [VMS only]
! 
!  Line duplex coded values
! 
!  Line controller mode
! 
!  Line protocol values (same as CIRTY_)
! 
! 	Character encoding
! 
!  Line protocol values for the PCL-11B
! 
!  Line clock values
! 
!  Line packet format types
! 
!  Line services
! 
!  Line Switch states
! 
!  Line Hangup state
! 
!  Line Restart state
! 
!  Line type coded values  [V2 only]
! 
!  Line multicast address function code [VMS datalink only].
!  Destination and physical address function codes too [VMS datalink only].
!                                       
!  NI line protocol access mode  [VMS datalink only]
! 
!  PCL-11B address mode
! 
!  X.25 line mode
! 
!  X.25 server redirect reason
! 
!  Node type values
! 
!  Node inbound states
! 
!  Node password values
! 
!  Node CPU type codes
! 
!  Service node version coded values
! 
!  Node software type code
! 
!  Node access (and default access) codes
! 
!  Executor Alias incoming values
! 
!  Object alias outgoing
! 
!  Object alias incoming
! 
!  Executor Proxy 
! 
!  Path Split Policy
! 
!  X.25 Protocol type values
! 
!  X.25 protocol state values
! 
!  X.25 protocol multi-network support flag
! 
!  X.25 protocol DTE substate values
! 
!  X21 literals
! 	
!   Months of the Year Codes
! 
!  Service device codes (MOP)
! 
!         Status codes for field support routines
! 
!         Permanent database file ID codes
! 
!         Open access codes
! 
!         Define Phase II NICE function codes
! 
!         Change parameters (volatile only)
! 
!         Read Information (Status and Counters only)
! 
!         Zero counters
! 
!         Line entity codes
! 
!  NML Return codes
! 
!         Error details
! 
! 
!         STS_FOP and STS_FIO
! 
!         STS_MLD, STS_MCF
! 
!         STS_OPE
! 
! ********************************************************************************************************************************
!  Created 18-JUN-1990 20:48:12 by VAX SDL T3.2-8      Source:  9-JAN-1990 10:50:07 _$254$DUA115:[NETACP.SRC]NETUSR.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE NFB ***
! 
! 	The following generic field identifiers are defined for all databases.
! 
literal NFB$C_ENDOFLIST = 0;            !  Used to terminate the field i.d. 
literal NFB$C_WILDCARD = 1;             !  Field i.d. used for "match all" database searches 
literal NFB$C_CTX_SIZE = 64;            !  Length of context area in P2 buffer 
! 
! 	The following codes are passed in the second IOSB longword to qualify
! 	as SS$_ILLCNTRFUNC error.
! 
!  The high order word of these error codes must be 0 
!  so that they won't be confused with field i.d.s
literal NFB$_ERR_FCT = 1;               !  Unrecognized NFB$B_FCT value. 
literal NFB$_ERR_DB = 2;                !  Unrecognized NFB$B_DATABASE value. 
literal NFB$_ERR_P1 = 3;                !  The P1 buffer is invalid. 
literal NFB$_ERR_P2 = 4;                !  The P2 buffer is invalid. 
literal NFB$_ERR_P3 = 5;                !  The P3 buffer is invalid. 
literal NFB$_ERR_P4 = 6;                !  The P4 buffer is invalid. 
literal NFB$_ERR_P5 = 7;                !  The P5 buffer should not have been specified. 
literal NFB$_ERR_P6 = 8;                !  The P6 buffer should not have been specified. 
literal NFB$_ERR_CELL = 9;              !  Unrecognized NFB$B_CELL value. 
literal NFB$_ERR_OPER = 10;             !  Unrecognized NFB$B_OPER value. 
literal NFB$_ERR_SRCH = 11;             !  Unrecognized NFB$L_SRCH_KEY field ID 
literal NFB$_ERR_SRCH2 = 12;            !  Unrecognized NFB$L_SRCH2_KEY field ID 
literal NFB$_ERR_OPER2 = 13;            !  Unrecognized NFB$B_OPER2 value. 
literal NFB$_ERR_FLAGS = 14;            !  Undefined bits in NFB$B_FLAGS were not zero. 
literal NFB$_ERR_LOCK = 15;             !  Lock was not granted
! 
! 	Define the P1 buffer format
! 
literal NFB$C_DECLNAME = 21;            !  Declare name 
literal NFB$C_DECLOBJ = 22;             !  Declare object 
literal NFB$C_DECLSERV = 23;            !  Declare server process available 
!  Resume defining function codes 
literal NFB$C_LOGEVENT = 28;            !  Log a network event 
literal NFB$C_READEVENT = 29;           !  Read current raw event queue (used by EVL only) 
!  Resume defining function codes 
literal NFB$C_FC_DELETE = 33;           !  Remove an entry from the data base. 
literal NFB$C_FC_SHOW = 34;             !  Return specified field values. 
literal NFB$C_FC_SET = 35;              !  Set/modify the field values. 
literal NFB$C_FC_CLEAR = 36;            !  Clear specified field values. 
literal NFB$C_FC_ZERCOU = 37;           !  Zero (and optionally read) counters 
literal NFB$C_FC_LOOP = 38;             !  Loop (used only to PSI to loop an X.25 line) 
literal NFB$C_REBUILD_PROXY = 39;       !  Rebuild the proxy data base
literal NFB$C_ADD_PROXY = 40;           !  Add/Modify proxy DB entry
literal NFB$C_DELETE_PROXY = 41;        !  Remove/Delete proxy access
!  Maximum FCT value 
literal NFB$C_FC_MAX = 41;              !  Maximum FCT value 
literal NFB$M_ERRUPD = 1;
literal NFB$M_MULT = 2;
literal NFB$M_NOCTX = 4;
literal NFB$M_LOCAL = 8;
literal NFB$C_DB_LNI = 1;               !  Local node 
literal NFB$C_DB_NDI = 2;               !  Common nodes 
literal NFB$C_DB_OBI = 3;               !  Network objects 
literal NFB$C_DB_CRI = 4;               !  Circuits 
literal NFB$C_DB_PLI = 5;               !  Lines 
literal NFB$C_DB_EFI = 6;               !  Event logging filters 
literal NFB$C_DB_ESI = 7;               !  Event logging sinks 
literal NFB$C_DB_LLI = 8;               !  Logical-links 
literal NFB$C_DB_XNI = 9;               !  X.25 networks 
literal NFB$C_DB_XGI = 10;              !  X.25 groups 
literal NFB$C_DB_XDI = 11;              !  X.25 DTEs 
literal NFB$C_DB_XS5 = 12;              !  X.25 server 
literal NFB$C_DB_XD5 = 13;              !  X.25 destinations 
literal NFB$C_DB_XS9 = 14;              !  X.29 server 
literal NFB$C_DB_XD9 = 15;              !  X.29 destinations 
literal NFB$C_DB_XTI = 16;              !  X.25 trace facility 
literal NFB$C_DB_XTT = 17;              !  X.25 tracepoints 
literal NFB$C_DB_SPI = 18;              !  Server Process 
literal NFB$C_DB_AJI = 19;              !  Adjacency information 
literal NFB$C_DB_ARI = 20;              !  Area information 
!  (The following codes are reserved for future PSIACP
!   databases.  These codes should only be used in the
!   event PSIACP needs a database code before a new
!   new NETACP can be supplied to support it).
literal NFB$C_DB_XDTE = 21;             !  PSI reserved database 
literal NFB$C_DB_PSI2 = 22;             !  PSI reserved database 
literal NFB$C_DB_PSI3 = 23;             !  PSI reserved database 
literal NFB$C_DB_PSI4 = 24;             !  PSI reserved database 
literal NFB$C_DB_PSI5 = 25;             !  PSI reserved database 
literal NFB$C_DB_SDI = 26;              !  Service (DLE) information 
literal NFB$C_DB_XAI = 27;              !  X.25 access database 
literal NFB$C_DB_PROXY = 28;            !  Proxy data base
literal NFB$C_DB_XXX = 29;              !  Last database definition for NFB$C_DB_MAX calc. 
!  Maximum DATABASE value 
literal NFB$C_DB_MAX = 28;              !  Maximum DATABASE value 
literal NFB$C_OP_EQL = 0;               !  Match if SEARCH_KEY value EQL database entry field 
literal NFB$C_OP_GTRU = 1;              !  Match if SEARCH_KEY value GTRU database entry field 
literal NFB$C_OP_LSSU = 2;              !  Match if SEARCH_KEY value LSSU database entry field 
literal NFB$C_OP_NEQ = 3;               !  Match if SEARCH_KEY value NEQ database entry field 
!  The following may only be used internally by NETACP
literal NFB$C_OP_FNDMIN = 4;            !  Find entry with minimum key value 
literal NFB$C_OP_FNDMAX = 5;            !  Find entry with maximum key value 
literal NFB$C_OP_FNDPOS = 6;            !  Find entry position in database 
!  Maximum operator function 
literal NFB$C_OP_MAXFCT = 3;            !  Maximum operator function 
literal NFB$C_OP_MAXINT = 6;            !  Maximum internal function 
literal NFB$K_LENGTH = 16;              !  Minimum structure size. 
literal NFB$C_LENGTH = 16;              !  Minimum structure size. 
!  counted strings.  If the "cell size" is non-zero, it
literal NFB$S_NFBDEF = 20;
macro NFB$B_FCT = 0,0,8,0 %;            !  A function code as follows: 
!  Function codes for the NFB 
!   (leaving room for 20 obsolete function codes)
!   (leave room for 4 obsolete function codes)
!   (leave room for 3 obsolete function codes)
macro NFB$B_FLAGS = 1,0,8,0 %;          !  Miscellaneous control flags 
macro NFB$V_ERRUPD = 1,0,1,0 %;         !  Update position context, even on error 
macro NFB$V_MULT = 1,1,1,0 %;           !  Process as many entries as can be fit into P4 
macro NFB$V_NOCTX = 1,2,1,0 %;          !  Don't update position context, even if successful 
!   (used to stay on an entry for a while).  This
!   flag Overrides the ERRUPD flag.
macro NFB$V_LOCAL = 1,3,1,0 %;          !  Signal that REBUILD_PROXY should only be
!  performed locally
macro NFB$B_DATABASE = 2,0,8,0 %;       !  A code identifying the database as follows: 
!  ZERO is an illegal value for this field 
macro NFB$B_OPER = 3,0,8,0 %;           !  Specifies the sense of the search (e.g. EQL, GEQU) 
!  when comparing against the SRCH_KEY field.
macro NFB$L_SRCH_KEY = 4,0,32,0 %;      !  Search key field identifier specifying the key used 
!  to locate the entry in the database.  This search is
!  controlled by the sense of the NFB$B_OPER field.
! 
!  If this field has the value "NFB$C_WILDCARD", then
!  the very next entry in the list is assumed to be the
!  target of the search.
! 
!  If this field is not specified (zero), then it
!  is assumed to be NFB$C_WILDCARD (no search key).
! 
macro NFB$L_SRCH2_KEY = 8,0,32,0 %;     !  Secondary search key field ID specifying the key used 
!  to locate the entry in the database.  This search is
!  controlled by the sense of the NFB$B_OPER2 field.
! 
!  If both SRCH_KEY and SRCH2_KEY are specified, then
!  only those database entries matching both search keys
!  will be processed.
! 
!  If this field is not specified (zero), then it
!  is assumed to be NFB$C_WILDCARD (no search key).
! 
macro NFB$B_OPER2 = 12,0,8,0 %;         !  Specifies the sense of the search (e.g. EQL, GEQU) 
!  when comparing against the SRCH2_KEY field.
macro NFB$B_MBZ1 = 13,0,8,0 %;          !  Reserved. MBZ. 
macro NFB$W_CELL_SIZE = 14,0,16,0 %;    !  Some of the field values found in the P4 buffer are 
!  indicates the number of bytes which each string in
!  the P4 buffer occupies.  If it is zero then strings
!  fields are stored as variable lengthed strings.
macro NFB$L_FLDID = 16,0,32,0 %;        !  Cell containing the first field ID -- the list 
!  of field IDs begins here and continues to the
!  end of the structure.
! 
!  The list may be terminated before the end of the
!  structure by placing the value NFB$C_ENDOFLIST
!  in the longword following the last field ID.
! 
! 
! 	Define the "field i.d." format.
! 
literal NFB$M_INX = 65535;
literal NFB$M_TYP = 196608;
literal NFB$M_SPARE = 16515072;
literal NFB$M_DB = -16777216;
literal NFB$C_TYP_BIT = 0;              !  Field type for bits 
literal NFB$C_TYP_V = 0;                !  Field type for bits 
literal NFB$C_TYP_LNG = 1;              !  Field type for longwords 
literal NFB$C_TYP_L = 1;                !  Field type for longwords 
literal NFB$C_TYP_STR = 2;              !  Field type for strings 
literal NFB$C_TYP_S = 2;                !  Field type for strings 
! 
literal NFB$S_NFBDEF1 = 4;
macro NFB$L_PARAM_ID = 0,0,32,0 %;      !  Define parameter ID longword 
macro NFB$V_INX = 0,0,16,0 %;
literal NFB$S_INX = 16;                 !  Index into semantic table 
macro NFB$V_TYP = 0,16,2,0 %;
literal NFB$S_TYP = 2;                  !  Field type (string, bit, etc.) 
macro NFB$V_SPARE = 0,18,6,0 %;
literal NFB$S_SPARE = 6;                !  Reserved, MBZ 
macro NFB$V_DB = 0,24,8,0 %;
literal NFB$S_DB = 8;                   !  Data-base i.d. 
!    Define useful symbols for storing and retreiving binary and string
!    values from the P2 and P4 buffers
! 
literal NFB$S_NFBDEF2 = 4;
macro NFB$L_LNG_VALUE = 0,0,32,0 %;     !  Longword value 
literal NFB$S_NFBDEF3 = 4;
macro NFB$L_BIT_VALUE = 0,0,32,0 %;     !  Boolean value 
literal NFB$C_NDI_LCK = 33554433;       !  Set if conditionally writable fields are not writable 
literal NFB$C_NDI_LOO = 33554434;       !  Set if CNF is for a "loopback" node 
literal NFB$C_NDI_REA = 33554435;       !  Set if node is reachable 
! 
literal NFB$C_NDI_TAD = 33619984;       !  "transformed address" - uses local node address 
!  for the local NDI (instead of zero as does ADD)
literal NFB$C_NDI_CTA = 33619985;       !  Absolute due time for logging counters 
literal NFB$C_NDI_ADD = 33619986;       !  Address 
literal NFB$C_NDI_CTI = 33619987;       !  Counter timer 
literal NFB$C_NDI_ACL = 33619988;       !  Active links 
literal NFB$C_NDI_DEL = 33619989;       !  Delay 
literal NFB$C_NDI_DTY = 33619990;       !  Destination Type 
literal NFB$C_NDI_DCO = 33619991;       !  Destination Cost 
literal NFB$C_NDI_DHO = 33619992;       !  Destination Hops 
literal NFB$C_NDI_SDV = 33619993;       !  Service Device 
literal NFB$C_NDI_CPU = 33619994;       !  CPU type 
literal NFB$C_NDI_STY = 33619995;       !  Software type 
literal NFB$C_NDI_DAD = 33619996;       !  Dump address 
literal NFB$C_NDI_DCT = 33619997;       !  Dump count 
literal NFB$C_NDI_OHO = 33619998;       !  Host 
literal NFB$C_NDI_IHO = 33619999;       !  Host 
literal NFB$C_NDI_ACC = 33620000;       !  Access switch (inbound, outbound, etc) 
literal NFB$C_NDI_PRX = 33620001;       !  ** obsolete ** (Node proxy parameter) 
literal NFB$C_NDI_NND = 33620002;       !  Next node address 
literal NFB$C_NDI_SNV = 33620003;       !  Service Node Version
literal NFB$C_NDI_INB = 33620004;       !  Async Line - Inbound node type
! 
literal NFB$C_NDI_COL = 33685568;       !  Collating field 
literal NFB$C_NDI_HAC = 33685569;       !  Node address/loop linename combination 
literal NFB$C_NDI_CNT = 33685570;       !  Counters 
literal NFB$C_NDI_NNA = 33685571;       !  Name 
literal NFB$C_NDI_SLI = 33685572;       !  Service line 
literal NFB$C_NDI_SPA = 33685573;       !  Service password 
literal NFB$C_NDI_LOA = 33685574;       !  Load file 
literal NFB$C_NDI_SLO = 33685575;       !  Secondary loader 
literal NFB$C_NDI_TLO = 33685576;       !  Tertiary loader 
literal NFB$C_NDI_SID = 33685577;       !  Software ID 
literal NFB$C_NDI_DUM = 33685578;       !  Dump file 
literal NFB$C_NDI_SDU = 33685579;       !  Secondary dumper 
literal NFB$C_NDI_NLI = 33685580;       !  Loopback Line 
literal NFB$C_NDI_DLI = 33685581;       !  Destination Line 
literal NFB$C_NDI_PUS = 33685582;       !  Privileged user id 
literal NFB$C_NDI_PAC = 33685583;       !  Privileged account 
literal NFB$C_NDI_PPW = 33685584;       !  Privileged password 
literal NFB$C_NDI_NUS = 33685585;       !  Non-privileged user id 
literal NFB$C_NDI_NAC = 33685586;       !  Non-privileged account 
literal NFB$C_NDI_NPW = 33685587;       !  Non-privileged password 
literal NFB$C_NDI_RPA = 33685588;       !  Receive password 
literal NFB$C_NDI_TPA = 33685589;       !  Transmit password 
literal NFB$C_NDI_DFL = 33685590;       !  Diagnostic load file 
literal NFB$C_NDI_HWA = 33685591;       !  Hardware NI address (ROM address) 
literal NFB$C_NDI_LPA = 33685592;       !  Loop assistant NI address 
literal NFB$C_NDI_NNN = 33685593;       !  Next node name to destination (goes with NND) 
literal NFB$C_NDI_LAA = 33685594;       !  Load Assist Agent
literal NFB$C_NDI_LAP = 33685595;       !  Load Assist Parameter
literal NFB$C_NDI_MFL = 33685596;       !  Management File
! 
literal NFB$C_LNI_LCK = 16777217;       !  Set if conditionally writable fields are not writable 
literal NFB$C_LNI_ALI = 16777218;       !  Set if ALIAS INBOUND has been enabled
literal NFB$C_LNI_IPR = 16777219;       !  Incoming proxy enabled/disabled
literal NFB$C_LNI_OPR = 16777220;       !  Outgoing proxy enabled/disabled
! 
literal NFB$C_LNI_ADD = 16842768;       !  Address 
literal NFB$C_LNI_ACL = 16842769;       !  Total number of active links 
literal NFB$C_LNI_ITI = 16842770;       !  Incoming timer 
literal NFB$C_LNI_OTI = 16842771;       !  Outgoing timer 
literal NFB$C_LNI_STA = 16842772;       !  State 
literal NFB$C_LNI_MLK = 16842773;       !  Maximum links 
literal NFB$C_LNI_DFA = 16842774;       !  Delay factor 
literal NFB$C_LNI_DWE = 16842775;       !  Delay weight 
literal NFB$C_LNI_IAT = 16842776;       !  Inactivity timer 
literal NFB$C_LNI_RFA = 16842777;       !  Retransmit factor 
literal NFB$C_LNI_ETY = 16842778;       !  Executor Type 
literal NFB$C_LNI_RTI = 16842779;       !  Routing timer 
literal NFB$C_LNI_RSI = 16842780;       !  Routing suppression timer 
literal NFB$C_LNI_SAD = 16842781;       !  Subaddress 
!  (lower word = lower limit, upper word = upper limit)
literal NFB$C_LNI_MAD = 16842782;       !  Maximum address 
literal NFB$C_LNI_MLN = 16842783;       !  Maximum lines 
literal NFB$C_LNI_MCO = 16842784;       !  Maximum cost 
literal NFB$C_LNI_MHO = 16842785;       !  Maximum hops 
literal NFB$C_LNI_MVI = 16842786;       !  Maximum visits 
literal NFB$C_LNI_MBU = 16842787;       !  Maximum buffers 
literal NFB$C_LNI_BUS = 16842788;       !  Forwarding buffer size 
literal NFB$C_LNI_LPC = 16842789;       !  Loop count 
literal NFB$C_LNI_LPL = 16842790;       !  Loop length 
literal NFB$C_LNI_LPD = 16842791;       !  Loop Data type 
literal NFB$C_LNI_DAC = 16842792;       !  Default access switch (inbound, outbound, etc) 
literal NFB$C_LNI_fill1 = 16842793;     !  Place holder, used to be Default proxy access (inbound, outbound, etc) 
literal NFB$C_LNI_PIQ = 16842794;       !  Pipeline quota 
literal NFB$C_LNI_LPH = 16842795;       !  Loop help type of assistance given to loop requestors 
literal NFB$C_LNI_BRT = 16842796;       !  Broadcast routing timer 
literal NFB$C_LNI_MAR = 16842797;       !  Maximum areas 
literal NFB$C_LNI_MBE = 16842798;       !  Maximum nonrouters on NI 
literal NFB$C_LNI_MBR = 16842799;       !  Maximum routers on NI 
literal NFB$C_LNI_AMC = 16842800;       !  Area maximum cost 
literal NFB$C_LNI_AMH = 16842801;       !  Area maximum hops 
literal NFB$C_LNI_SBS = 16842802;       !  Segment buffer size 
literal NFB$C_LNI_ALA = 16842803;       !  Alias local node address (cluster address) 
literal NFB$C_LNI_ALM = 16842804;       !  Alias maximum links
literal NFB$C_LNI_PSP = 16842805;       !  Path split policy normal/interim
literal NFB$C_LNI_MPS = 16842806;       !  Maximum path split
literal NFB$C_LNI_MDO = 16842807;       !  Maximum Declared Object
! 
literal NFB$C_LNI_COL = 16908352;       !  Collating field 
literal NFB$C_LNI_NAM = 16908353;       !  Local node name 
literal NFB$C_LNI_CNT = 16908354;       !  Counters 
literal NFB$C_LNI_IDE = 16908355;       !  Identification 
literal NFB$C_LNI_MVE = 16908356;       !  Management version 
literal NFB$C_LNI_NVE = 16908357;       !  Nsp version 
literal NFB$C_LNI_RVE = 16908358;       !  Routing version 
literal NFB$C_LNI_PHA = 16908359;       !  Physical NI address (current address) 
! 
literal NFB$C_OBI_LCK = 50331649;       !  Set if conditionally writable fields are not writable 
literal NFB$C_OBI_SET = 50331650;       !  Set if a "set" QIO has ever modified the CNF. If 
!  not then the CNF was due to a "declare name/obect"
!  only and may be deleted when the declaring process
!  breaks the channel over which the object was declared
literal NFB$C_OBI_ALO = 50331651;       !  Alias Outgoing enabled/disabled
literal NFB$C_OBI_ALI = 50331652;       !  Alias Incoming enabled/disabled
! 
literal NFB$C_OBI_LPR = 50397200;       !  Low order privileges 
literal NFB$C_OBI_HPR = 50397201;       !  High order privileges 
literal NFB$C_OBI_DOV = 50397202;       !  Point to Owners UCB
literal NFB$C_OBI_CHN = 50397203;       !  Owner's channel 
literal NFB$C_OBI_NUM = 50397204;       !  Number 
literal NFB$C_OBI_PID = 50397205;       !  Process id 
literal NFB$C_OBI_PRX = 50397206;       !  Proxy login switch (inbound, outbound, etc) 
! 
literal NFB$C_OBI_COL = 50462784;       !  Collating field 
literal NFB$C_OBI_ZNA = 50462785;       !  Zero obj+name identifier 
literal NFB$C_OBI_SFI = 50462786;       !  Parsed file i.d. 
literal NFB$C_OBI_IAC = 50462787;       !  Default inbound combined access control string 
literal NFB$C_OBI_NAM = 50462788;       !  Name 
literal NFB$C_OBI_FID = 50462789;       !  File id 
literal NFB$C_OBI_USR = 50462790;       !  User id 
literal NFB$C_OBI_ACC = 50462791;       !  Account 
literal NFB$C_OBI_PSW = 50462792;       !  Password 
literal NFB$C_OBI_OCPRV = 50462793;     !  Outgoing Connect Privileges
! 
literal NFB$C_CRI_LCK = 67108865;       !  D Set if conditionally writable fields are 
! 	not writable
literal NFB$C_CRI_SER = 67108866;       !  D Set if Service functions not allowed 
literal NFB$C_CRI_BLK_FILL = 67108867;  !    Filler (BLK retired)
literal NFB$C_CRI_VER_FILL = 67108868;  !    Filler (VER retired)
literal NFB$C_CRI_DLM = 67108869;       !  E Circuit to be used as X.25 datalink, if set 
! 	If clear, circuit is for X.25 native use
literal NFB$C_CRI_OWPID = 67174416;     !  D PID of temp owner of line in service state 
literal NFB$C_CRI_CTA = 67174417;       !  D Absolute due time for counter logging 
literal NFB$C_CRI_SRV = 67174418;       !  D Service substate qualifier 
literal NFB$C_CRI_STA = 67174419;       !  C State 
literal NFB$C_CRI_SUB = 67174420;       !  C Substate 
literal NFB$C_CRI_LCT = 67174421;       !  C Counter timer 
literal NFB$C_CRI_PNA = 67174422;       !  E Adjacent node address 
literal NFB$C_CRI_BLO = 67174423;       !  E Partner's receive block size 
literal NFB$C_CRI_COS = 67174424;       !  E Cost 
literal NFB$C_CRI_HET = 67174425;       !  E Hello timer 
literal NFB$C_CRI_LIT = 67174426;       !  E Listen timer 
literal NFB$C_CRI_MRC = 67174427;       !  E Maximum recalls 
literal NFB$C_CRI_RCT = 67174428;       !  E Recall timer 
literal NFB$C_CRI_POL = 67174429;       !  D Polling state 
literal NFB$C_CRI_PLS = 67174430;       !  D Polling substate 
literal NFB$C_CRI_USE = 67174431;       !  X Usage 
literal NFB$C_CRI_TYP = 67174432;       !  C Type 
literal NFB$C_CRI_CHN = 67174433;       !  X X.25 Channel 
literal NFB$C_CRI_MBL = 67174434;       !  X Maximum block 
literal NFB$C_CRI_MWI = 67174435;       !  X Maximum window 
literal NFB$C_CRI_TRI = 67174436;       !  D Tributary 
literal NFB$C_CRI_BBT = 67174437;       !  D Babble timer 
literal NFB$C_CRI_TRT = 67174438;       !  D Transmit timer 
literal NFB$C_CRI_MRB = 67174439;       !  D Maximum receive buffers 
literal NFB$C_CRI_MTR = 67174440;       !  D Maximum transmits 
literal NFB$C_CRI_ACB = 67174441;       !  D Active base 
literal NFB$C_CRI_ACI = 67174442;       !  D Active increment 
literal NFB$C_CRI_IAB = 67174443;       !  D Inactive base 
literal NFB$C_CRI_IAI = 67174444;       !  D Inactive increment 
literal NFB$C_CRI_IAT = 67174445;       !  D Inactive threshold 
literal NFB$C_CRI_DYB = 67174446;       !  D Dying base 
literal NFB$C_CRI_DYI = 67174447;       !  D Dying increment 
literal NFB$C_CRI_DYT = 67174448;       !  D Dying threshold 
literal NFB$C_CRI_DTH = 67174449;       !  D Dead threshold 
literal NFB$C_CRI_MST = 67174450;       !  D Maintenance mode state (0 => On, 1 => Off> 
literal NFB$C_CRI_XPT = 67174451;       !  E Transport protocol to use 
literal NFB$C_CRI_MRT = 67174452;       !  E Maximum routers on this NI 
literal NFB$C_CRI_RPR = 67174453;       !  E Router priority 
literal NFB$C_CRI_DRT = 67174454;       !  E Designated router on NI (node address) 
literal NFB$C_CRI_VER = 67174455;       !  D Verification Enabled/Disabled/Inbound on circuit
! 
literal NFB$C_CRI_COL = 67240000;       !  D Collating field 
literal NFB$C_CRI_NAM = 67240001;       !  C Circuit name 
literal NFB$C_CRI_VMSNAM = 67240002;    !  D Device name in VMS format 
literal NFB$C_CRI_CHR = 67240003;       !  D Characteristics buffer for startup control QIO 
literal NFB$C_CRI_CNT = 67240004;       !  C Counters 
literal NFB$C_CRI_P2P = 67240005;       !  D Line's PhaseII partner name (for loopback) 
literal NFB$C_CRI_LOO = 67240006;       !  E Loopback name 
literal NFB$C_CRI_PNN = 67240007;       !  E Adjacent node name 
literal NFB$C_CRI_NUM = 67240008;       !  X Call Number 
literal NFB$C_CRI_DTE = 67240009;       !  X DTE 
literal NFB$C_CRI_DEVNAM = 67240010;    !  D Device name in VMS format, with unit included 
literal NFB$C_CRI_net = 67240011;       !  XD Network name
! 
literal NFB$C_PLI_LCK = 83886081;       !  D Set if conditionally writable fields are 
! 	not writable
literal NFB$C_PLI_SER = 83886082;       !  D Service 
literal NFB$C_PLI_DUP = 83886083;       !  C Duplex (set if half) 
literal NFB$C_PLI_CON = 83886084;       !  C Controller (set if loopback) 
literal NFB$C_PLI_CLO = 83886085;       !  C Clock mode (set if internal) 
literal NFB$C_PLI_SWI = 83886086;       !  D Async Line - Switch
literal NFB$C_PLI_HNG = 83886087;       !  D Async Line - Hangup
! 
literal NFB$C_PLI_CTA = 83951632;       !  D Absolute time for counter read and clear 
literal NFB$C_PLI_STA = 83951633;       !  C State 
literal NFB$C_PLI_SUB = 83951634;       !  C Substate 
literal NFB$C_PLI_LCT = 83951635;       !  D Counter timer 
literal NFB$C_PLI_PRO = 83951636;       !  C Protocol 
literal NFB$C_PLI_STI = 83951637;       !  D Service timer 
literal NFB$C_PLI_HTI = 83951638;       !  L Holdback timer 
literal NFB$C_PLI_MBL = 83951639;       !  L Maximum block 
literal NFB$C_PLI_MRT = 83951640;       !  L Maximum retransmits 
literal NFB$C_PLI_MWI = 83951641;       !  L Maximum window 
literal NFB$C_PLI_SLT = 83951642;       !  D Scheduling timer 
literal NFB$C_PLI_DDT = 83951643;       !  D Dead timer 
literal NFB$C_PLI_DLT = 83951644;       !  D Delay timer 
literal NFB$C_PLI_SRT = 83951645;       !  D Stream timer 
literal NFB$C_PLI_BFN = 83951646;       !  D Receive buffers 
literal NFB$C_PLI_BUS = 83951647;       !  D Action routine returns bufsiz used for line 
literal NFB$C_PLI_PLVEC = 83951648;     !  D PLVEC i.d. 
literal NFB$C_PLI_RTT = 83951649;       !  D Retransmit timer 
literal NFB$C_PLI_MOD = 83951650;       !  L X.25 mode (DCE, DTE, etc). 
literal NFB$C_PLI_LPC = 83951651;       !  L Loop count 
literal NFB$C_PLI_LPL = 83951652;       !  L Loop length 
literal NFB$C_PLI_LPD = 83951653;       !  L Loop Data type 
literal NFB$C_PLI_EPT = 83951654;       !  E Ethernet protocol type for datalink 
literal NFB$C_PLI_LNS = 83951655;       !  D Async Line - Line speed
literal NFB$C_PLI_BFS = 83951656;       !  C Line buffer size (overrides executor bufsiz) 
literal NFB$C_PLI_TPI = 83951657;       !  D Transmit Pipeline
! 
literal NFB$C_PLI_COL = 84017216;       !  D Collating field 
literal NFB$C_PLI_NAM = 84017217;       !  C Line name 
literal NFB$C_PLI_VMSNAM = 84017218;    !  D Device name in VMS format 
literal NFB$C_PLI_CHR = 84017219;       !  D Set-mode $QIO line Characteristics buffer 
literal NFB$C_PLI_CNT = 84017220;       !  C Counters 
literal NFB$C_PLI_MCD = 84017221;       !  L Filespec for microcode dump (initiates dump) 
literal NFB$C_PLI_HWA = 84017222;       !  D NI hardware address (ROM address) 
literal NFB$C_PLI_DEVNAM = 84017223;    !  D Device name in VMS format, with unit included 
literal NFB$C_PLI_NET = 84017224;       !  L Network name
! 
literal NFB$C_EFI_LCK = 100663297;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_EFI_SIN = 100728848;
literal NFB$C_EFI_SP1 = 100728849;
literal NFB$C_EFI_B1 = 100728850;
literal NFB$C_EFI_B2 = 100728851;
! 
literal NFB$C_EFI_COL = 100794432;      !  Collating field 
literal NFB$C_EFI_EVE = 100794433;
literal NFB$C_EFI_SB1 = 100794434;
literal NFB$C_EFI_SB2 = 100794435;
literal NFB$C_EFI_SB3 = 100794436;
! 
literal NFB$C_ESI_LCK = 117440513;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_ESI_SNK = 117506064;
literal NFB$C_ESI_STA = 117506065;
literal NFB$C_ESI_SP1 = 117506066;
literal NFB$C_ESI_B1 = 117506067;
literal NFB$C_ESI_B2 = 117506068;
! 
literal NFB$C_ESI_COL = 117571648;      !  Collating field 
literal NFB$C_ESI_LNA = 117571649;
literal NFB$C_ESI_SB1 = 117571650;
literal NFB$C_ESI_SB2 = 117571651;
literal NFB$C_ESI_SB3 = 117571652;
! 
literal NFB$C_LLI_LCK = 134217729;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_LLI_DLY = 134283280;      !  Round trip delay time 
literal NFB$C_LLI_STA = 134283281;      !  State 
literal NFB$C_LLI_LLN = 134283282;      !  Local link number 
literal NFB$C_LLI_RLN = 134283283;      !  Remote link number 
literal NFB$C_LLI_PNA = 134283284;      !  Partner's node address 
literal NFB$C_LLI_PID = 134283285;      !  External Process I.D.
literal NFB$C_LLI_IPID = 134283286;     !  Internal Process I.D.
literal NFB$C_LLI_XWB = 134283287;      !  Pointer to XWB
literal NFB$C_LLI_CNT = 134283288;      !  Counters
! 
literal NFB$C_LLI_COL = 134348864;      !  Collating field 
literal NFB$C_LLI_USR = 134348865;      !  User name 
literal NFB$C_LLI_PRC = 134348866;      !  Process name 
literal NFB$C_LLI_PNN = 134348867;      !  Partner's node name 
literal NFB$C_LLI_RID = 134348868;      !  Partner's process i.d. 
! 
literal NFB$C_XNI_LCK = 150994945;      !  Set if conditionally writable fields are not writable 
literal NFB$C_XNI_MNS_FILL = 150994946; !  X.25 multi-network support (set if enabled) [No longer used]
! 
literal NFB$C_XNI_CAT = 151060496;      !  Call timer 
literal NFB$C_XNI_CLT = 151060497;      !  Clear timer 
literal NFB$C_XNI_DBL = 151060498;      !  Default data 
literal NFB$C_XNI_DWI = 151060499;      !  Default window 
literal NFB$C_XNI_MBL = 151060500;      !  Maximum data 
literal NFB$C_XNI_MCL = 151060501;      !  Maximum clears 
literal NFB$C_XNI_MRS = 151060502;      !  Maximum resets 
literal NFB$C_XNI_MST = 151060503;      !  Maximum restarts 
literal NFB$C_XNI_MWI = 151060504;      !  Maximum window 
literal NFB$C_XNI_RST = 151060505;      !  Reset timer 
literal NFB$C_XNI_STT = 151060506;      !  Restart timer 
! 
literal NFB$C_XNI_COL = 151126080;      !  Collating field 
literal NFB$C_XNI_netent = 151126081;   !  Network 
literal NFB$C_XNI_PROF = 151126082;     !  Profile name
! 
literal NFB$C_XDI_LCK = 184549377;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_XDI_ACH = 184614928;      !  Active channels 
literal NFB$C_XDI_ASW = 184614929;      !  Active switched 
literal NFB$C_XDI_CTM = 184614930;      !  Counter timer 
literal NFB$C_XDI_MCH = 184614931;      !  Maximum channels 
literal NFB$C_XDI_STA = 184614932;      !  State 
literal NFB$C_XDI_SUB = 184614933;      !  Substate 
literal NFB$C_XDI_MCI = 184614934;      !  Maximum circuits [VMS only] 
literal NFB$C_XDI_CAT = 184614935;      !  Call timer 
literal NFB$C_XDI_CLT = 184614936;      !  Clear timer 
literal NFB$C_XDI_DBL = 184614937;      !  Default data 
literal NFB$C_XDI_DWI = 184614938;      !  Default window 
literal NFB$C_XDI_MBL = 184614939;      !  Maximum data 
literal NFB$C_XDI_MCL = 184614940;      !  Maximum clears 
literal NFB$C_XDI_MRS = 184614941;      !  Maximum resets 
literal NFB$C_XDI_MST = 184614942;      !  Maximum restarts 
literal NFB$C_XDI_MWI = 184614943;      !  Maximum window 
literal NFB$C_XDI_RST = 184614944;      !  Reset timer 
literal NFB$C_XDI_STT = 184614945;      !  Restart timer 
literal NFB$C_XDI_mode = 184614946;     !  DTE Mode
literal NFB$C_XDI_itt = 184614947;      !  Interrupt timer
! 
literal NFB$C_XDI_COL = 184680512;      !  Collating field 
literal NFB$C_XDI_DTE = 184680513;      !  DTE address 
literal NFB$C_XDI_CHN = 184680514;      !  Channels 
literal NFB$C_XDI_LIN = 184680515;      !  Line 
literal NFB$C_XDI_dnt = 184680516;      !  Network 
literal NFB$C_XDI_CNT = 184680517;      !  Counters 
! 
literal NFB$C_XGI_LCK = 167772161;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_XGI_GNM = 167837712;      !  Group number 
literal NFB$C_XGI_GTY = 167837713;      !  Group type 
! 
literal NFB$C_XGI_COL = 167903296;      !  Collating field. This field must be unique across 
!  all entries in this database.  It consists of the
!  group-name string followed by the DTE address.
literal NFB$C_XGI_GRP = 167903297;      !  Group name 
literal NFB$C_XGI_GDT = 167903298;      !  Group DTE address 
literal NFB$C_XGI_gnt = 167903299;      !  Group Network
! 
literal NFB$C_XS5_LCK = 201326593;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_XS5_MCI = 201392144;      !  Maximum circuits allowed 
literal NFB$C_XS5_STA = 201392145;      !  State 
literal NFB$C_XS5_ACI = 201392146;      !  Active circuits 
literal NFB$C_XS5_CTM = 201392147;      !  Counter timer 
! 
literal NFB$C_XS5_COL = 201457728;      !  Collating field. This field must be unique across 
!  all entries in this database.
literal NFB$C_XS5_CNT = 201457729;      !  Counters 
! 
literal NFB$C_XD5_LCK = 218103809;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_XD5_PRI = 218169360;      !  Priority 
literal NFB$C_XD5_SAD = 218169361;      !  Subaddress range 
!  (lower word = lower limit, upper word = upper limit)
literal NFB$C_XD5_NOD = 218169362;      !  Remote node address containing server (gateways only) 
literal NFB$C_XD5_red = 218169363;      !  Redirect reason
! 
literal NFB$C_XD5_COL = 218234944;      !  Collating field. This field must be unique across 
!  all entries in this database.
literal NFB$C_XD5_DST = 218234945;      !  Destination DTE address 
literal NFB$C_XD5_CMK = 218234946;      !  Call mask 
literal NFB$C_XD5_CVL = 218234947;      !  Call value 
literal NFB$C_XD5_GRP = 218234948;      !  Group name 
literal NFB$C_XD5_SDTE = 218234949;     !  Sending DTE address (formally number)
literal NFB$C_XD5_OBJ = 218234950;      !  && Object name 
literal NFB$C_XD5_FIL = 218234951;      !  Command procedure to execute when starting object 
literal NFB$C_XD5_USR = 218234952;      !  User name 
literal NFB$C_XD5_PSW = 218234953;      !  Password 
literal NFB$C_XD5_ACC = 218234954;      !  Account 
literal NFB$C_XD5_cdte = 218234955;     !  Called DTE
literal NFB$C_XD5_rdte = 218234956;     !  Receiving DTE
literal NFB$C_XD5_net = 218234957;      !  Network
literal NFB$C_XD5_emk = 218234958;      !  Extension mask
literal NFB$C_XD5_evl = 218234959;      !  Extension value
literal NFB$C_XD5_acl = 218234960;      !  ACL, a list of ACE'structure, parto of ORB
literal NFB$C_XD5_idte = 218234961;     !  Incoming address
! 
literal NFB$C_XS9_LCK = 234881025;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_XS9_MCI = 234946576;      !  Maximum circuits allowed 
literal NFB$C_XS9_STA = 234946577;      !  State 
literal NFB$C_XS9_ACI = 234946578;      !  Active circuits 
literal NFB$C_XS9_CTM = 234946579;      !  Counter timer 
! 
literal NFB$C_XS9_COL = 235012160;      !  Collating field. This field must be unique across 
!  all entries in this database.
literal NFB$C_XS9_CNT = 235012161;      !  Counters 
! 
literal NFB$C_XD9_LCK = 251658241;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_XD9_PRI = 251723792;      !  Priority 
literal NFB$C_XD9_SAD = 251723793;      !  Subaddress range 
!  (lower word = lower limit, upper word = upper limit)
literal NFB$C_XD9_NOD = 251723794;      !  Remote node address containing server (gateways only) 
literal NFB$C_XD9_red = 251723795;      !  Redirect reason
! 
literal NFB$C_XD9_COL = 251789376;      !  Collating field. This field must be unique across 
!  all entries in this database.
literal NFB$C_XD9_DST = 251789377;      !  Destination DTE address 
literal NFB$C_XD9_CMK = 251789378;      !  Call mask 
literal NFB$C_XD9_CVL = 251789379;      !  Call value 
literal NFB$C_XD9_GRP = 251789380;      !  Group name 
literal NFB$C_XD9_sdte = 251789381;     !  Sending DTE 
literal NFB$C_XD9_OBJ = 251789382;      !  && Object name 
literal NFB$C_XD9_FIL = 251789383;      !  Command procedure to execute when starting object 
literal NFB$C_XD9_USR = 251789384;      !  User name 
literal NFB$C_XD9_PSW = 251789385;      !  Password 
literal NFB$C_XD9_ACC = 251789386;      !  Account 
literal NFB$C_XD9_cdte = 251789387;     !  Caller DTE
literal NFB$C_XD9_rdte = 251789388;     !  Receiving DTE
literal NFB$C_XD9_net = 251789389;      !  Network
literal NFB$C_XD9_emk = 251789390;      !  Extension mask
literal NFB$C_XD9_evl = 251789391;      !  Extension value
literal NFB$C_XD9_acl = 251789392;      !  ACL, a list of ACE'structure, parto of ORB
literal NFB$C_XD9_idte = 251789393;     !  Incoming address
! 
literal NFB$C_XTI_LCK = 268435457;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_XTI_STA = 268501008;      !  State 
literal NFB$C_XTI_BFZ = 268501009;      !  Buffer size 
literal NFB$C_XTI_CPL = 268501010;      !  Capture limit 
literal NFB$C_XTI_MBK = 268501011;      !  Maximum blocks/file 
literal NFB$C_XTI_MBF = 268501012;      !  Maximum number of buffers 
literal NFB$C_XTI_MVR = 268501013;      !  Maximum trace file version number 
! 
literal NFB$C_XTI_COL = 268566592;      !  Collating field. This field must be unique across 
!  all entries in this database.
literal NFB$C_XTI_FNM = 268566593;      !  Trace file name 
! 
literal NFB$C_XTT_LCK = 285212673;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_XTT_TST = 285278224;      !  State 
literal NFB$C_XTT_CPS = 285278225;      !  Capture size 
! 
literal NFB$C_XTT_COL = 285343808;      !  Collating field. This field must be unique across 
!  all entries in this database.
literal NFB$C_XTT_TPT = 285343809;      !  Tracepoint name 
! 
literal NFB$C_XAI_LCK = 452984833;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_XAI_NDA = 453050384;      !  Node address 
! 
literal NFB$C_XAI_COL = 453115968;      !  Collating field 
literal NFB$C_XAI_NET = 453115969;      !  Network 
literal NFB$C_XAI_USR = 453115970;      !  User id 
literal NFB$C_XAI_PSW = 453115971;      !  Password 
literal NFB$C_XAI_ACC = 453115972;      !  Account 
literal NFB$C_XAI_NOD = 453115973;      !  Node id 
! 
literal NFB$C_XDTE_LCK = 352321537;     !  Set if conditionally writable fields are not writable
!     C(,$C_XDTE_,(((NFB$C_DB_XDTE@24)+(NFB$C_TYP_LNG@16)+16)),1
literal NFB$C_XDTE_COL = 352452672;     !  Collating field
literal NFB$C_XDTE_NET = 352452673;     !  Network
literal NFB$C_XDTE_DTE = 352452674;     !  DTE address
literal NFB$C_XDTE_ID = 352452675;      !  ID list, ARB rights list
literal NFB$C_XDTE_ACL = 352452676;     !  ACL, a list of ACE's, part of ORB
! 
literal NFB$C_SPI_LCK = 301989889;      !  Set if conditionally writable fields are not writable 
literal NFB$C_SPI_PRL = 301989890;      !  Proxy flag which initially started server process 
! 
literal NFB$C_SPI_PID = 302055440;      !  Server PID 
literal NFB$C_SPI_IRP = 302055441;      !  IRP of waiting DECLSERV QIO (0 if process active) 
literal NFB$C_SPI_CHN = 302055442;      !  Channel associated with DECLSERV IRP 
literal NFB$C_SPI_RNA = 302055443;      !  Remote node address which initially started server 
! 
literal NFB$C_SPI_COL = 302121024;      !  Collating field 
literal NFB$C_SPI_ACS = 302121025;      !  ACS used to initally start server process 
literal NFB$C_SPI_RID = 302121026;      !  Remote user ID which initially started server 
literal NFB$C_SPI_SFI = 302121027;      !  Last (current) SFI given to server process 
literal NFB$C_SPI_NCB = 302121028;      !  Last (current) NCB given to server process 
literal NFB$C_SPI_PNM = 302121029;      !  Last (current) process name given to server 
! 
literal NFB$C_AJI_LCK = 318767105;      !  Set if conditionally writable fields are not writable 
literal NFB$C_AJI_REA = 318767106;      !  Reachable (set if two-way communication established) 
literal NFB$C_AJI_RRA = 318767107;      !  Reachable Routing Adjacency
! 
literal NFB$C_AJI_ADD = 318832656;      !  Node address 
literal NFB$C_AJI_TYP = 318832657;      !  Node type 
literal NFB$C_AJI_LIT = 318832658;      !  Listen timer for this adjacency 
literal NFB$C_AJI_BLO = 318832659;      !  Partner's block size 
literal NFB$C_AJI_RPR = 318832660;      !  Partner's router priority (on NI) 
! 
literal NFB$C_AJI_COL = 318898240;      !  Collating field 
literal NFB$C_AJI_NNA = 318898241;      !  Node name 
literal NFB$C_AJI_CIR = 318898242;      !  Circuit name 
! 
literal NFB$C_SDI_LCK = 436207617;      !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_SDI_SUB = 436273168;      !  Service substate 
literal NFB$C_SDI_PID = 436273169;      !  PID of process owning this DLE link 
! 
literal NFB$C_SDI_COL = 436338752;      !  Collating field 
literal NFB$C_SDI_CIR = 436338753;      !  Circuit name 
literal NFB$C_SDI_PHA = 436338754;      !  Service physical address (BC only) 
literal NFB$C_SDI_PRC = 436338755;      !  Name of process owning this DLE link 
! 
literal NFB$C_ARI_LCK = 335544321;      !  Set if conditionally writable fields are not writable 
literal NFB$C_ARI_REA = 335544322;      !  Set if node is reachable 
! 
literal NFB$C_ARI_ADD = 335609872;      !  Address 
literal NFB$C_ARI_DCO = 335609873;      !  Destination Cost 
literal NFB$C_ARI_DHO = 335609874;      !  Destination Hops 
literal NFB$C_ARI_NND = 335609875;      !  Next node address 
! 
literal NFB$C_ARI_COL = 335675456;      !  Collating field 
literal NFB$C_ARI_DLI = 335675457;      !  Circuit used for normal traffic to area 
! 
literal NFB$C_PROXY_LCK = 469762049;    !  Set if conditionally writable fields are not writable 
! 
literal NFB$C_PROXY_RUIC = 469827600;   !  Remote UIC
! 
literal NFB$C_PROXY_RNODE = 469893184;  !  Remote node
literal NFB$C_PROXY_RNAME = 469893185;  !  Remote user name
literal NFB$C_PROXY_DEFACCOUNT = 469893186; !  Default local proxy account
literal NFB$C_PROXY_ACCOUNT1 = 469893187; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT2 = 469893188; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT3 = 469893189; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT4 = 469893190; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT5 = 469893191; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT6 = 469893192; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT7 = 469893193; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT8 = 469893194; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT9 = 469893195; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT10 = 469893196; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT11 = 469893197; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT12 = 469893198; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT13 = 469893199; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT14 = 469893200; !  Local proxy account
literal NFB$C_PROXY_ACCOUNT15 = 469893201; !  Local proxy account
literal NFB$C_PROXY_HASHKEY = 469893202; !  Hash key lookup string
literal NFB$C_PROXY_COL = 469893184;    !  Collating field 
literal NFB$C_PROXY_MAXACC = 15;        !  Maximum numver of local proxy accounts
!   including the default
literal NFB$S_NFBDEF4 = 2;
macro NFB$W_STR_COUNT = 0,0,16,0 %;     !  String count field 
macro NFB$B_STR_TEXT = 2,0,0,0 %;       !  Start of string data 
! 
!   Define identifiers for each parameter in all database
! 
!    **  The low order 16 bits for each parameter must be unique  **
!   ***  with respect to all other parameters in its particular   ***
!    **  database.						 **
! 
!  Define a field identifier index for each parameter in the NDI database.
! 
! 
!    Boolean parameters
! 
!    "Longword" Parameters
! 
!    String parameters
! 
!  Define a field identifier index for each parameter in the LNI database.
! 
! 
!    Boolean parameters
! 
!    "Longword parameters
! 
!    String parameters
! 
!  Define a field identifier index for each parameter in the OBI database.
! 
! 
!    Boolean Parameters
! 
!    Longword Parameters
! 
!    String Parameters
! 
!  Define a field identifier index for each parameter in the CRI database.
! 
! 
! 			/* Use
! 			/* ----
! 			C = common
! 			E = Executor (used by Transport)
! 			X = Native X.25 network management
! 			D = DECnet (not X.25)
! 
! 
!    Boolean Parameters
! 
! 
!    "Longword" parameters
! 
!    String Parameters
! 
!  Define a field identifier index for each parameter in the PLI database.
! 
! 			C = common
! 			L = LAPB (X.25)
! 			D = DDCMP (not X.25)
! 			E = Ethernet
! 
! 			/* Use
!  ----
! 
!    Boolean Parameters
! 
!    "Longword"  Parameters
! 
!    String Parameters
! 
!  Define a field identifier index for each parameter in the EFI database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  Define a field identifier index for each parameter in the ESI database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  Define a field identifier index for each parameter in the LLI database.
! 
! 
!    Boolean Parameters
! 
!    Longword Parameters
! 
!    String Parameters
! 
!  X.25 network parameters (part of MODULE X25-PROTOCOL)
! 
!  Define a field identifier index for each parameter in the XNI database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.25 DTE parameters (qualified by a given network)
! 
!  Define a field identifier index for each parameter in the XDI database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.25 group parameters (qualified by a given DTE)
! 
!  Define a field identifier index for each parameter in the XGI database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.25 server parameters (global parameters for all destinations)
! 
!  Define a field identifier index for each parameter in the XS5 database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.25 destination parameters (part of MODULE X25-SERVER)
! 
!  Define a field identifier index for each parameter in the XD5 database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.29 server parameters (global parameters for all destinations)
! 
!  Define a field identifier index for each parameter in the XS9 database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.29 destination parameters (part of MODULE X29-SERVER)
! 
!  Define a field identifier index for each parameter in the XD9 database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.25 tracing facility (global) parameters.
! 
!  Define a field identifier index for each parameter in the XTI database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.25 tracpoint (local) parameters.
! 
!  Define a field identifier index for each parameter in the XTT database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.25 Access (qualified by a given network)
! 
!  Define a field identifier index for each parameter in the XAI database.
! 
! 
!    Boolean Parameters
! 
!    "Longword" Parameters
! 
!    String Parameters
! 
!  X.25 Security (qualified by a given network)
! 
!  Define a field identifier index for each parameter in the XDTE database.
! 
! 
!    Boolean Parameters
! 
! 
!    "Longword" Parameters
! 
!     )
! 
!    String Parameters
! 
!  Define SPI (Server Process) parameters
! 
! 
!    Boolean Parameters
! 
!    Longword Parameters
! 
!    String Parameters
! 
!  Define AJI (Adjacency) parameters
! 
! 
!    Boolean Parameters
! 
!    Longword Parameters
! 
!    String Parameters
! 
!  Define SDI (Service DLE) parameters
! 
! 
!    Boolean Parameters
! 
!    Longword Parameters
! 
!    String Parameters
! 
!  Define the AREA database (read only) for level 2 Phase IV routers only.
! 
! 
!    Boolean parameters
! 
!    "Longword" Parameters
! 
!    String parameters
! 
!  Define the PROXY database 
! 
! 
!    Boolean parameters
! 
!    "Longword" Parameters
! 
!    String parameters
! 
 
!*** MODULE DR ***
! 
!  DISCONNECT REASONS
! 
literal NET$C_DR_NORMAL = 0;            !  NO ERROR (SYNCH DISCONNECT) 
literal NET$C_DR_RSU = 1;               !  COULDN'T ALLOCATE UCB ADDRESS 
literal NET$C_DR_NONODE = 2;            !  Unrecognized node name 
literal NET$C_DR_SHUT = 3;              !  NODE OR LINE SHUTTING DOWN 
literal NET$C_DR_NOBJ = 4;              !  UNKNOWN OBJECT TYPE OR PROCESS 
literal NET$C_DR_FMT = 5;               !  ILLEGAL PROCESS NAME FIELD 
literal NET$C_DR_BUSY = 6;              !  Object too busy 
literal NET$C_DR_PROTCL = 7;            !  GENERAL PROTOCOL ERROR 
literal NET$C_DR_THIRD = 8;             !  THIRD PARTY DISCONNECT 
literal NET$C_DR_ABORT = 9;             !  DISCONNECT ABORT 
literal NET$C_DR_IVNODE = 2;            !  Invalid node name format 
literal NET$C_DR_NONZ = 21;             !  NON-ZERO DST ADDRESS 
literal NET$C_DR_BADLNK = 22;           !  INCONSISTENT DSTLNK 
literal NET$C_DR_ZERO = 23;             !  ZERO SOURCE ADDRESS 
literal NET$C_DR_BADFC = 24;            !  FCVAL ILLEGAL 
literal NET$C_DR_NOCON = 32;            !  NO CONNECT SLOTS AVAILABLE 
literal NET$C_DR_ACCESS = 34;           !  INVALID ACCESS CONTROL 
literal NET$C_DR_BADSRV = 35;           !  LOGICAL LINK SERVICES MISMATCH 
literal NET$C_DR_ACCNT = 36;            !  INVALID ACCOUNT INFORMATION 
literal NET$C_DR_SEGSIZ = 37;           !  SEGSIZE TOO SMALL 
literal NET$C_DR_EXIT = 38;             !  USER EXIT OR TIMEOUT 
literal NET$C_DR_NOPATH = 39;           !  NO PATH TO DESTINATION NODE 
literal NET$C_DR_LOSS = 40;             !  LOSS OF DATA HAS OCCURRED 
literal NET$C_DR_NOLINK = 41;           !  ILLEGAL MSG FOR LINK NOLINK STATE 
literal NET$C_DR_CONF = 42;             !  REAL DISCONNECT CONFIRM 
literal NET$C_DR_IMLONG = 43;           !  IMAGE DATA FIELD TOO LONG 
literal NET$C_DR_MISLSCV = 50;          !  MISSING CRYPTOGRAPHIC KEY
literal NET$C_DR_EXPSCV = 51;           !  EXPIRED CRYPTOGRAPHIC KEY
literal NET$C_DR_MACFAIL = 53;          !  INTEGRITY CHECK FAILED
literal NET$C_DR_SRVMMAT = 54;          !  CRYPTOGRAPHIC SERVICE MISMATCH
literal NET$C_DR_VERFAIL = 55;          !  CRYPTOGRAPHIC CONNECT VERIFICATION FAILURE
literal NET$C_DR_CSWRAP = 56;           !  CRYPTOGRAPHIC SEQUENCE SPACE EXHAUSED
! 
! ****************************************************************************
! *                                                                          *
! *  Copyright (c) 1990                                                      *
! *  by DIGITAL Equipment Corporation, Maynard, Mass.                        *
! *                                                                          *
! *  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.                 *
! *                                                                          *
! ****************************************************************************
! ********************************************************************************************************************************
!  Created 18-JUN-1990 20:57:17 by VAX SDL T3.2-8      Source: 12-OCT-1989 16:13:03 _$254$DUA115:[RMS.SRC]RMSPUBSTR.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE $FSBDEF ***
! 
!          FSB field definitions
! 
!         File statistics block (fsb)
! 
! 	An FSB is associated with a file when the ACE$V_STATISTICS
! 	bit is set in the RMS attributes ACE. It is used to keep track
! 	of RMS file statistics.
! 
literal FSB$M_PRIVATE = 1;
literal FSB$M_RMSDEV = 2;
literal FSB$C_BID = 25;                 !  fsb id code 
literal FSB$K_STANDARD_BLN = 276;       !  Length of FSB without RMS development specific fields
literal FSB$C_STANDARD_BLN = 276;       !  Length of FSB without RMS development specific fields
!  Reserved for RMS development private monitoring
literal FSBFLG$_GET = 0;                !  Flags used for keeping track of relative file statistics updates
literal FSBFLG$_FIND = 1;
literal FSBFLG$_PUT = 2;
literal FSBFLG$_UPDATE = 3;
literal FSBFLG$_DELETE = 4;
literal FSBFLG$_MAX = 5;
literal FSB$K_VERSION = 1;              !  Current version of FSB
literal FSB$C_VERSION = 1;              !  Current version of FSB
literal FSB$C_SEQ = 1;
literal FSB$C_REL = 2;
literal FSB$C_IDX = 3;                  !  File organization constants 
literal FSB$K_BLN = 368;                !  Length of FSB
literal FSB$C_BLN = 368;                !  Length of FSB
literal FSB$S_FSBDEF = 368;
macro FSB$W_FLAGS = 6,0,16,0 %;         !  fsb flags
macro FSB$V_PRIVATE = 6,0,1,0 %;        !  FSB is for only one stream
macro FSB$V_RMSDEV = 6,1,1,0 %;         !  Reserved RMS fields being used
macro FSB$B_BID = 8,0,8,0 %;            !  block id 
macro FSB$B_BLN = 9,0,8,0 %;            !  block length in longwords 
macro FSB$B_ORG = 10,0,8,0 %;           !  file organization
macro FSB$B_VERSION = 11,0,8,0 %;       !  current version of FSB
macro FSB$L_SEQGETS = 12,0,32,0 %;      !  # of sequential gets to file
macro FSB$L_KEYGETS = 16,0,32,0 %;      !  # of keyed gets to file
macro FSB$L_RFAGETS = 20,0,32,0 %;      !  # of gets by RFA to file
macro FSB$Q_GETBYTES = 24,0,0,0 %;
literal FSB$S_GETBYTES = 8;             !  Total size of all gets in bytes
macro FSB$L_SEQPUTS = 32,0,32,0 %;      !  # of sequential puts
macro FSB$L_KEYPUTS = 36,0,32,0 %;      !  # of puts by key
macro FSB$Q_PUTBYTES = 40,0,0,0 %;
literal FSB$S_PUTBYTES = 8;             !  Total size of all puts in bytes
macro FSB$L_UPDATES = 48,0,32,0 %;      !  # of updates
macro FSB$Q_UPDATEBYTES = 52,0,0,0 %;
literal FSB$S_UPDATEBYTES = 8;          !  Total size of all updates in bytes
macro FSB$L_DELETES = 60,0,32,0 %;      !  # of deletes
macro FSB$L_TRUNCATES = 64,0,32,0 %;    !  # of truncates
macro FSB$L_TRUNCBLKS = 68,0,32,0 %;    !  Total size in blocks of all truncates
macro FSB$L_SEQFINDS = 72,0,32,0 %;     !  # of sequential finds
macro FSB$L_KEYFINDS = 76,0,32,0 %;     !  # of keyed finds
macro FSB$L_RFAFINDS = 80,0,32,0 %;     !  # of finds by RFA
macro FSB$L_READS = 84,0,32,0 %;        !  # of $READs to file
macro FSB$Q_READBYTES = 88,0,0,0 %;
literal FSB$S_READBYTES = 8;            !  # of bytes of all $READs
macro FSB$L_CONNECTS = 96,0,32,0 %;     !  # of connects to this file
macro FSB$L_DISCONNECTS = 100,0,32,0 %; !  # of disconnects from file
macro FSB$L_EXTENDS = 104,0,32,0 %;     !  # of extends of file
macro FSB$L_EXTBLOCKS = 108,0,32,0 %;   !  # of blocks file has been extended
macro FSB$L_FLUSHES = 112,0,32,0 %;     !  # of flushes of file
macro FSB$L_REWINDS = 116,0,32,0 %;     !  # of rewinds of file
macro FSB$L_WRITES = 120,0,32,0 %;      !  # of $WRITEs to file
macro FSB$Q_WRITEBYTES = 124,0,0,0 %;
literal FSB$S_WRITEBYTES = 8;           !  # of bytes of all $WRITEs to file
macro FSB$L_FLCKENQS = 132,0,32,0 %;    !  # of file lock ENQ's
macro FSB$L_FLCKDEQS = 136,0,32,0 %;    !  # of file lock DEQ's
macro FSB$L_FLCKCNVS = 140,0,32,0 %;    !  # of file lock conversions
macro FSB$L_LBLCKENQS = 144,0,32,0 %;   !  # of local buffer lock ENQ's
macro FSB$L_LBLCKDEQS = 148,0,32,0 %;   !  # of local buffer lock DEQ's
macro FSB$L_LBLCKCNVS = 152,0,32,0 %;   !  # of local buffer lock conversions
macro FSB$L_GBLCKENQS = 156,0,32,0 %;   !  # of global buffer lock ENQ's
macro FSB$L_GBLCKDEQS = 160,0,32,0 %;   !  # of global buffer lock DEQ's
macro FSB$L_GBLCKCNVS = 164,0,32,0 %;   !  # of global buffer lock conversions
macro FSB$L_GSLCKENQS = 168,0,32,0 %;   !  # of global section lock ENQ's
macro FSB$L_GSLCKDEQS = 172,0,32,0 %;   !  # of global section lock DEQ's
macro FSB$L_GSLCKCNVS = 176,0,32,0 %;   !  # of global section lock conversions
macro FSB$L_RLCKENQS = 180,0,32,0 %;    !  # of record lock ENQ's
macro FSB$L_RLCKDEQS = 184,0,32,0 %;    !  # of record lock DEQ's
macro FSB$L_RLCKCNVS = 188,0,32,0 %;    !  # of record lock conversions
macro FSB$L_APPLCKENQS = 192,0,32,0 %;  !  # of append lock ENQ's
macro FSB$L_APPLCKDEQS = 196,0,32,0 %;  !  # of append lock DEQ's
macro FSB$L_APPLCKCNVS = 200,0,32,0 %;  !  # of append lock conversions
macro FSB$L_FLBLKASTS = 204,0,32,0 %;   !  # of file lock blocking ASTs queued
macro FSB$L_LBLBLKASTS = 208,0,32,0 %;  !  # of local buffer lock blocking ASTs queued
macro FSB$L_GBLBLKASTS = 212,0,32,0 %;  !  # of global buffer lock blocking ASTs queued
macro FSB$L_APPBLKASTS = 216,0,32,0 %;  !  # of shared append lock blocking ASTs queued
macro FSB$L_LCACHEHITS = 220,0,32,0 %;  !  # of cache hits on local buffers
macro FSB$L_LCACHE_ATTEMPTS = 224,0,32,0 %; !  # of attempts to use the local buffer cache
macro FSB$L_GCACHEHITS = 228,0,32,0 %;  !  # of cache hits on global buffers
macro FSB$L_GCACHE_ATTEMPTS = 232,0,32,0 %; !  # of attempts to use the global buffer cache
macro FSB$L_GBRDIRIOS = 236,0,32,0 %;   !  # of direct io's due to global buffer reads
macro FSB$L_GBWDIRIOS = 240,0,32,0 %;   !  # of direct io's due to global buffer writes
macro FSB$L_LBRDIRIOS = 244,0,32,0 %;   !  # of direct io's due to local buffer reads
macro FSB$L_LBWDIRIOS = 248,0,32,0 %;   !  # of direct io's due to local buffer writes
macro FSB$L_BKTSPLT = 252,0,32,0 %;     !  # of 2 bucket splits
macro FSB$L_MBKTSPLT = 256,0,32,0 %;    !  # of multi-bucket splits
macro FSB$L_OPENS = 260,0,32,0 %;       !  # of times the file is opened
macro FSB$L_CLOSES = 264,0,32,0 %;      !  # of times the file is closed
macro FSB$L_GSBLKASTS = 268,0,32,0 %;   !  # of global section lock blocking ASTs queued
macro FSB$L_XQPQIOS = 272,0,32,0 %;     !  Count of XQP QIOs requested by RMS
macro FSB$L_FLWAITS = 276,0,32,0 %;     !  # of waits forced by getting the file lock
macro FSB$L_LBWAITS = 280,0,32,0 %;     !  # of waits forced by getting local buffer locks
macro FSB$L_GBWAITS = 284,0,32,0 %;     !  # of waits forced by getting global buffer locks
macro FSB$L_GSWAITS = 288,0,32,0 %;     !  # of waits forced by getting the global section lock
macro FSB$L_RLWAITS = 292,0,32,0 %;     !  # of waits forced by getting record locks
macro FSB$L_APWAITS = 296,0,32,0 %;     !  # of waits forced by getting the Append lock
macro FSB$L_TOTWAITS = 300,0,32,0 %;    !  Total # of waits (or stalls) performed by RMS. 
macro FSB$L_OUTBUFQUO = 304,0,32,0 %;   !  Number of times a process runs out of global buffer quota
macro FSB$L_RMSDEV1 = 308,0,32,0 %;     !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV2 = 312,0,32,0 %;     !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV3 = 316,0,32,0 %;     !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV4 = 320,0,32,0 %;     !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV5 = 324,0,32,0 %;     !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV6 = 328,0,32,0 %;     !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV7 = 332,0,32,0 %;     !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV8 = 336,0,32,0 %;     !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV9 = 340,0,32,0 %;     !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV10 = 344,0,32,0 %;    !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV11 = 348,0,32,0 %;    !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV12 = 352,0,32,0 %;    !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV13 = 356,0,32,0 %;    !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV14 = 360,0,32,0 %;    !  Reserved for RMS development private monitoring
macro FSB$L_RMSDEV15 = 364,0,32,0 %;    !  Reserved for RMS development private monitoring
 
!*** MODULE $RMSEDTDEF ***
! 
! 	RMS Extension Dispatch Table
! 
! 	The RMS extension dispatch table defines the vector area for RMS processing
! 	callouts.
! 
literal RMSEDT$K_CURVER = 1;
literal RMSEDT$C_CURVER = 1;
literal RMSEDT$K_XAB_DISPLAY = 63;
literal RMSEDT$K_LENGTH = 180;
literal RMSEDT$C_LENGTH = 180;
literal RMSEDT$S_RMSEDTDEF = 180;
macro RMSEDT$W_SIZE = 0,0,16,0 %;
macro RMSEDT$B_VERSION = 2,0,8,0 %;
macro RMSEDT$B_FLAGS = 3,0,8,0 %;
macro RMSEDT$A_CLOSE = 4,0,32,0 %;
macro RMSEDT$A_CONNECT = 8,0,32,0 %;
macro RMSEDT$A_CREATE = 12,0,32,0 %;
macro RMSEDT$A_IMPLIED_CREATE = 16,0,32,0 %;
macro RMSEDT$A_DELETE = 20,0,32,0 %;
macro RMSEDT$A_DISCONNECT = 24,0,32,0 %;
macro RMSEDT$A_DISPLAY = 28,0,32,0 %;
macro RMSEDT$A_ERASE = 32,0,32,0 %;
macro RMSEDT$A_IMPLIED_ERASE = 36,0,32,0 %;
macro RMSEDT$A_EXTEND = 40,0,32,0 %;
macro RMSEDT$A_AUTOEXTEND = 44,0,32,0 %;
macro RMSEDT$A_FIND = 48,0,32,0 %;
macro RMSEDT$A_FLUSH = 52,0,32,0 %;
macro RMSEDT$A_GET = 56,0,32,0 %;
macro RMSEDT$A_OPEN = 60,0,32,0 %;
macro RMSEDT$A_PUT = 64,0,32,0 %;
macro RMSEDT$A_READ = 68,0,32,0 %;
macro RMSEDT$A_RENAME = 72,0,32,0 %;
macro RMSEDT$A_IMPLIED_RENAME = 76,0,32,0 %;
macro RMSEDT$A_REWIND = 80,0,32,0 %;
macro RMSEDT$A_INIT_WCC_SEARCH = 84,0,32,0 %;
macro RMSEDT$A_NEXT_ECXT_SEARCH = 88,0,32,0 %;
macro RMSEDT$A_DELETE_WCC_SEARCH = 92,0,32,0 %;
macro RMSEDT$A_SPACE = 96,0,32,0 %;
macro RMSEDT$A_TRUNCATE = 100,0,32,0 %;
macro RMSEDT$A_UPDATE = 104,0,32,0 %;
macro RMSEDT$A_WRITE = 108,0,32,0 %;
macro RMSEDT$A_OPEN_LTJ = 112,0,32,0 %;
macro RMSEDT$A_CLOSE_LTJ = 116,0,32,0 %;
macro RMSEDT$A_FORMAT_JOURNAL = 120,0,32,0 %;
macro RMSEDT$A_WRITE_JOURNAL = 124,0,32,0 %;
macro RMSEDT$A_FLUSH_JOURNAL = 128,0,32,0 %;
macro RMSEDT$A_CREATE_RUJ = 132,0,32,0 %;
macro RMSEDT$A_CLOSE_RUJ = 136,0,32,0 %;
macro RMSEDT$A_DISPOSE_RU = 140,0,32,0 %;
macro RMSEDT$A_WRITE_RUJ = 144,0,32,0 %;
macro RMSEDT$A_FLUSH_RUJ = 148,0,32,0 %;
macro RMSEDT$A_LOCK_RECORD = 152,0,32,0 %;
macro RMSEDT$A_UNLOCK_RECORD = 156,0,32,0 %;
macro RMSEDT$A_UNLOCK_ALL_RECORDS = 160,0,32,0 %;
macro RMSEDT$A_IS_RECORD_LOCKED = 164,0,32,0 %;
macro RMSEDT$A_IS_RECORD_WRITE_LOCKED = 168,0,32,0 %;
macro RMSEDT$A_IS_RECORD_LOCK_HELD = 172,0,32,0 %;
macro RMSEDT$A_XAB_DISPATCH = 176,0,32,0 %;
 
!*** MODULE $DISPLAY_WILDEF ***
! 
!   $DISPLAY_WILD
! 
!     Display File
! 
!       $DISPLAY_WILD fab, [err], [suc], ctx
! 
!       fab_rab	= address of fab or rab
! 
! 	err	= address of user error completion routine
! 
! 	suc	= address of user success completion routine
! 	ctx	= address of a longword used to hold the next ifi.
! 
%if not %declared(%quote SDL$$DISPLAY_WILDEF_REQ) %then
! MACRO to emit warning and default to 0 if required argument is missing
!
macro
SDL$$DISPLAY_WILDEF_REQ(ARG1, arg2) =
    %IF not %NULL(ARG1) %THEN ARG1
    %else
	%warn(%string('REQUIRED ARGUMENT ', %NAME(ARG2), ' MISSING')) 0
    %FI %;
%fi
 
%if not %declared(%quote SDL$$DISPLAY_WILDEF_OPT) %then
! Defaults omitted arguments to 0 if followed by additional arguments
!
macro
SDL$$DISPLAY_WILDEF_OPT[ARG] =
    %IF %NULL(ARG)
    %THEN
	%IF NOT %NULL(%REMAINING)
	%THEN
	    0
	%FI
    %ELSE
	ARG
    %FI %;
%fi
 
%if not %declared(%quote SDL$$DISPLAY_WILDEF_LIST_0_REQ) %then
! Handles LIST parameters that are also OPTIONAL
!
macro
SDL$$DISPLAY_WILDEF_LIST_0_REQ(ARG) =
    %IF NOT %NULL(ARG) %THEN %REMOVE(ARG) %FI %;
%fi
 
%if not %declared(%quote SDL$$DISPLAY_WILDEF_LIST_1_REQ) %then
! Handles LIST parameters that are not OPTIONAL
! Emits warning and defaults to 0 if required argument is missing
!
macro
SDL$$DISPLAY_WILDEF_LIST_1_REQ(ARG, ARG2) =
    %IF %NULL(ARG) %THEN
	 %warn(%string('REQUIRED ARGUMENT ', %NAME(ARG2), ' MISSING')) 0
    %ELSE
        SDL$$DISPLAY_WILDEF_LIST_0_REQ(ARG) %FI %;
%fi
 
%if not %declared(%quote SDL$$DISPLAY_WILDEF_CONCAT) %then
! Eliminates trailing null arguments
!
macro
SDL$$DISPLAY_WILDEF_CONCAT[ARG] =
    %IF NOT %NULL(ARG) %THEN ARG %FI %;
%fi
 
!             ***********************************	
 
KEYWORDMACRO $DISPLAY_WILD (FAB_RAB,ERR=0,SUC=0,CTX) =
   BEGIN
   EXTERNAL ROUTINE SYS$DISPLAY : BLISS ADDRESSING_MODE (GENERAL);
	   SYS$DISPLAY (SDL$$DISPLAY_WILDEF_CONCAT( SDL$$DISPLAY_WILDEF_REQ(FAB_RAB, %QUOTE FAB_RAB) , 
	   ERR, SUC, SDL$$DISPLAY_WILDEF_REQ(CTX, %QUOTE CTX) ))
   END %;
 
 
!*** MODULE $MODDEF ***
! 
!                 RMS MODify definitions
! 
!   The following values identify various requests for non-standard rms
!   functions.  They are currently input to the $modify function in the
!   ctx field of the fab only if the esc bit is set in fop (rab functions
!   are also accepted).  Incorrect use of these capabilties could cause 
!   RMS to fail, hence great caution should be exercised in their use.
! 
!   The first five functions are also called RME$C_xxxx. They are defined
!   in the public module RMSUSR.SDL and cannot be changed. 
! 
!   FAB function calls
literal MOD$C_SETRFM = 1;               !  change rfm, mrs, and fsz (if vfc) in ifab only 
literal MOD$C_PPFECHO = 2;              !  enable echo of SYS$INPUT to SYS$OUTPUT
literal MOD$C_SETRCF = 3;               !  change recovery mode
literal MOD$C_KEEP_LOCK_ON = 4;         !  Turn on Keep Lock behavior
literal MOD$C_KEEP_LOCK_OFF = 5;        !  Turn off Keep Lock behavior
literal MOD$C_RU_ACE_ON = 6;            !  Turn on RU ACE locking
literal MOD$C_RU_ACE_OFF = 7;           !  Turn off RU ACE locking
!   RAB function calls
literal MOD$C_LOCK_RECORD = 1;          !  Lock a record 
literal MOD$C_ASSOCIATE = 2;            !  Associate a stream with a transaction
! 
! ****************************************************************************
! *                                                                          *
! *  Copyright (c) 1990                                                      *
! *  by DIGITAL Equipment Corporation, Maynard, Mass.                        *
! *                                                                          *
! *  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.                 *
! *                                                                          *
! ****************************************************************************
! ********************************************************************************************************************************
!  Created 18-JUN-1990 20:58:09 by VAX SDL T3.2-8      Source: 12-OCT-1989 12:33:52 _$254$DUA115:[RMS.SRC]RMSFILSTR.SDL;1 
! ********************************************************************************************************************************
 
!*** MODULE $PLGDEF ***
literal PLG$M_NOEXTEND = 1;
literal PLG$C_VER_NO = 1;               !  current prolog version number 
literal PLG$C_VER_IDX = 2;              !  new plg for indexed files 
literal PLG$C_VER_3 = 3;                !  new plg for compression, space reclamation (plg 3) 
literal PLG$K_BLN = 122;
literal PLG$C_BLN = 122;
literal PLG$S_PLGDEF = 122;
macro PLG$B_DBKTSIZ = 11,0,8,0 %;       !  data bucket size 
macro PLG$B_FLAGS = 16,0,8,0 %;         !  flag bits
macro PLG$V_NOEXTEND = 16,0,1,0 %;      !  no extend allowed (rel)
macro PLG$B_AVBN = 102,0,8,0 %;         !  vbn of first area descriptor 
macro PLG$B_AMAX = 103,0,8,0 %;         !  maximum number of areas 
macro PLG$W_DVBN = 104,0,16,0 %;        !  first data bucket vbn 
macro PLG$L_MRN = 108,0,32,0 %;         !  maximum record number (rel) 
macro PLG$L_EOF = 112,0,32,0 %;         !  eof vbn (rel) 
macro PLG$W_VER_NO = 116,0,16,0 %;      !  version number 
macro PLG$W_GBC = 118,0,16,0 %;         !  default global buffer count 
macro PLG$W_COLVBN = 120,0,16,0 %;      !  VBN where collate tables begin (if any)
 
!*** MODULE $DLCDEF ***
! 
! 
!   relative file deletion control byte bit definitions
! 
literal DLC$M_DELETED = 4;
literal DLC$M_REC = 8;
literal DLC$S_DLCDEF = 1;
macro DLC$R_DLCDEF_BITS = 0,0,8,0 %;
macro DLC$V_DELETED = 0,2,1,0 %;        !  record deleted 
macro DLC$V_REC = 0,3,1,0 %;            !  record exists (but may have been deleted) 
 
!*** MODULE $BKTDEF ***
! 
!  index bucket definition
! 
!  this is the bucket format for RMS-11/RMS-32 index files.
! 
literal BKT$K_OVERHDSZ = 14;            !  length of bucket overhead 
literal BKT$C_OVERHDSZ = 14;            !  length of bucket overhead 
literal BKT$M_LASTBKT = 1;
literal BKT$M_ROOTBKT = 2;
literal BKT$M_PTR_SZ = 24;
literal BKT$C_ENDOVHD = 4;              !  end of bucket overhead 
literal BKT$C_DATBKTOVH = 2;            !  end of bucket overhead for data buckets 
literal BKT$C_DUPBKTOVH = 4;            !  additional end of data bucket overhead 
!   when duplicates are allowed (LCB pointer
literal BKT$C_MAXBKTSIZ = 63;           !  maximum bucket size
literal BKT$S_BKTDEF = 14;
macro BKT$B_CHECKCHAR = 0,0,8,0 %;      !  bucket check character 
macro BKT$R_AREANO_OVERLAY = 1,0,8,0 %;
macro BKT$B_AREANO = 1,0,8,0 %;         !  area number form which bucket was allocated 
macro BKT$B_INDEXNO = 1,0,8,0 %;        !  index to which this bucket belongs (plg 3) 
macro BKT$W_ADRSAMPLE = 2,0,16,0 %;     !  address sample - low 16 bits of first vbn in bucket 
macro BKT$R_FREESPACE_OVERLAY = 4,0,16,0 %;
macro BKT$W_FREESPACE = 4,0,16,0 %;     !  displacement in bucket of first free byte 
macro BKT$W_KEYFRESPC = 4,0,16,0 %;     !  pointer to key's free space (plg 3) 
macro BKT$R_NXTRECID_OVERLAY = 6,0,16,0 %;
macro BKT$W_NXTRECID = 6,0,16,0 %;      !  next available word record id (plg 3) 
macro BKT$R_NXTRECID_FIELDS = 6,0,16,0 %;
macro BKT$B_NXTRECID = 6,0,8,0 %;       !  next available record id 
macro BKT$B_LSTRECID = 7,0,8,0 %;       !  last id in range 
macro BKT$L_NXTBKT = 8,0,32,0 %;        !  vbn of next bucket 
macro BKT$B_LEVEL = 12,0,8,0 %;         !  bucket level number 
macro BKT$R_BKTCB_OVERLAY = 13,0,8,0 %;
macro BKT$B_BKTCB = 13,0,8,0 %;         !  bucket control bits 
macro BKT$R_BKTCB_BITS = 13,0,8,0 %;
macro BKT$V_LASTBKT = 13,0,1,0 %;       !  last bucket in horizontal chain 
macro BKT$V_ROOTBKT = 13,1,1,0 %;       !  root bucket 
macro BKT$V_PTR_SZ = 13,3,2,0 %;
literal BKT$S_PTR_SZ = 2;               !  size of vbn pointers in this bucket 
 
!*** MODULE $IRCDEF ***
! 
!  index record definition
! 
!  this is the definition of RMS-11/RMS-32 index file record formats
! 
literal IRC$M_PTRSZ = 3;
literal IRC$M_RECORDCB = 252;
literal IRC$M_DELETED = 4;
literal IRC$M_NOPTRSZ = 16;
literal IRC$M_FIRST_KEY = 128;
literal IRC$M_RRV = 8;
literal IRC$M_NODUPCNT = 16;
literal IRC$M_RU_DELETE = 32;
literal IRC$M_RU_UPDATE = 64;
literal IRC$C_IDXPTRBAS = 2;            !  used to determine size of pointer in index 
literal IRC$C_IDXOVHDSZ = 1;            !  includes record control byte 
! 
literal IRC$S_IRCDEF = 1;
macro IRC$B_CONTROL = 0,0,8,0 %;        !  record control byte 
macro IRC$R_CONTROL_BITS0 = 0,0,8,0 %;
macro IRC$V_PTRSZ = 0,0,2,0 %;
literal IRC$S_PTRSZ = 2;                !  size of pointer 
macro IRC$V_RECORDCB = 0,2,6,0 %;
literal IRC$S_RECORDCB = 6;             !  record control bits 
! 
!  record control bits used only in primary data record and SIDR array element
!  control bytes
! 
macro IRC$R_CONTROL_BITS1 = 0,0,8,0 %;
macro IRC$V_DELETED = 0,2,1,0 %;        !  record is deleted 
macro IRC$V_NOPTRSZ = 0,4,1,0 %;        !  no RRV
macro IRC$V_FIRST_KEY = 0,7,1,0 %;
! 
!  record control bits used only in primary data record control bytes
! 
macro IRC$R_CONTROL_BITS2 = 0,0,8,0 %;
macro IRC$V_RRV = 0,3,1,0 %;            !  rrv record 
! 
!  record control bits used only in prologue 2 SIDR record control bytes
! 
macro IRC$R_CONTROL_BITS3 = 0,0,8,0 %;
macro IRC$V_NODUPCNT = 0,4,1,0 %;       !  DUP_CNT field absent
! 
!  record control bits used only in prologue 3 RRV, UDR and SIDR record control
!  bytes of RU journalled files. (RU_UPDATE is set only in UDR record control
!  bytes)
! 
macro IRC$R_CONTROL_BITS4 = 0,0,8,0 %;
macro IRC$V_RU_DELETE = 0,5,1,0 %;      !  record is RU deleted
macro IRC$V_RU_UPDATE = 0,6,1,0 %;      !  record is RU updated
! 
!  record control bits reserved for RMS-11 use only (these may not be re-defined
!  except for prologue 3 records)
! 
!  Bit number 5
!  Bit number 6
! 
! 
!  index bucket record
! 
macro IRC$R_CONTROL_FIELDS4 = 0,0,8,0 %;
macro IRC$T_BUCKETPTR = 1,0,0,0 %;      !  bucket pointer (not referenced in the code, 
!   just present for consistency)
!  data bucket record
! 
literal IRC$S_IRCDEF1 = 3;
macro IRC$B_ID = 1,0,8,0 %;             !  record id 
macro IRC$B_RRV_ID = 2,0,8,0 %;         !  rrv's id -- always in the same place 
! 
!  prologue 3 data bucket record
! 
literal IRC$C_DATSZFLD = 2;             !  size of size field in variable length records 
literal IRC$C_DATPTRBAS = 3;            !  used to determine size of RRV in data buckets
literal IRC$C_DCNTSZFLD = 4;            !  size of duplicate count field in Plg 2 SIDRs
literal IRC$C_DATOVHDSZ = 2;            !  includes the record control byte, and the id 
literal IRC$C_FIXOVHDSZ = 7;            !  the record overhead for fixed record 
literal IRC$C_VAROVHDSZ = 9;            !  record overhead for variable records 
literal IRC$C_RRVOVHDSZ = 7;            !  size of RRV
! 
literal IRC$C_DATPTRBS3 = 4;            !  used to determine size of RRV in data buckets 
literal IRC$C_DATOVHSZ3 = 3;            !  record control byte, and id 
literal IRC$C_FIXOVHSZ3 = 9;            !  record overhead for fixed length records
literal IRC$C_VAROVHSZ3 = 11;           !  record overhead for variable length records
literal IRC$C_RRVOVHSZ3 = 9;            !  size of RRV
literal IRC$C_SDROVHSZ3 = 2;            !  record overhead for SIDRs
literal IRC$C_KEYCMPOVH = 2;            !  key compression overhead 
literal IRC$C_DATCMPOVH = 3;            !  data compression overhead 
literal IRC$S_IRCDEF2 = 5;
macro IRC$W_ID = 1,0,16,0 %;            !  record id 
macro IRC$W_RRV_ID = 3,0,16,0 %;        !  rrv's id -- always in the same place 
! 
!  constants
! 
!  prologue 3 constants
! 
 
!*** MODULE $KEYDEF ***
! 
!  definitions for the key descriptors in the prologue
! 
!  these definitions are associated w/ the plg and area definitions
! 
literal KEY$M_DUPKEYS = 1;
literal KEY$M_CHGKEYS = 2;
literal KEY$M_NULKEYS = 4;
literal KEY$M_IDX_COMPR = 8;
literal KEY$M_INITIDX = 16;
literal KEY$M_KEY_COMPR = 64;
literal KEY$M_REC_COMPR = 128;
literal KEY$C_MAX_DAT = 10;             !  (PLG3) Maximum size of a non-compressed data 
!   record
literal KEY$C_MAX_PRIMARY = 6;          !  (PLG3) Maximum size of a non-compressed 
!   primary key
literal KEY$C_MAX_INDEX = 6;            !  (PLG3) Maximum size of a non-compressed 
!   index and SIDR key
literal KEY$C_STRING = 0;               !  string data type 
literal KEY$C_SGNWORD = 1;              !  signed binary word 
literal KEY$C_UNSGNWORD = 2;            !  unsigned binary word 
literal KEY$C_SGNLONG = 3;              !  signed binary long word 
literal KEY$C_UNSGNLONG = 4;            !  unsigned binary long word 
literal KEY$C_PACKED = 5;               !  packed decimal
literal KEY$C_SGNQUAD = 6;              !  signed binary quadword
literal KEY$C_UNSGNQUAD = 7;            !  unsigned binary quadword
literal KEY$C_COLLATED = 8;             !  collated
literal KEY$C_MAX_ASCEND = 8;           !  maximum ASCENDING data type
literal KEY$C_DSTRING = 32;             !  descending string data type 
literal KEY$C_DSGNWORD = 33;            !     "       signed binary word 
literal KEY$C_DUNSGNWORD = 34;          !     "       unsigned binary word 
literal KEY$C_DSGNLONG = 35;            !     "       signed binary long word 
literal KEY$C_DUNSGNLONG = 36;          !     "       unsigned binary long word 
literal KEY$C_DPACKED = 37;             !     "       packed decimal
literal KEY$C_DSGNQUAD = 38;            !     "       signed binary quadword
literal KEY$C_DUNSGNQUAD = 39;          !     "       unsigned binary quadword
literal KEY$C_DCOLLATED = 40;           !     "	      collated
literal KEY$C_MAX_DATA = 40;            !  maximum data type value allowed 
literal KEY$K_BLN = 96;                 !  length of key descriptor in the prologue (plg 3) 
literal KEY$C_BLN = 96;                 !  length of key descriptor in the prologue (plg 3) 
literal KEY$C_SPARE = 6;                !  these are spare words in key block (plg 3) 
literal KEY$S_KEYDEF = 96;
macro KEY$L_IDXFL = 0,0,32,0 %;         !  vbn for next key descriptor 
macro KEY$W_NOFF = 4,0,16,0 %;          !  offset to next key descriptor 
macro KEY$B_IANUM = 6,0,8,0 %;          !  index area number 
macro KEY$B_LANUM = 7,0,8,0 %;          !  level 1 area number 
macro KEY$B_DANUM = 8,0,8,0 %;          !  data area number 
macro KEY$B_ROOTLEV = 9,0,8,0 %;        !  root level 
macro KEY$B_IDXBKTSZ = 10,0,8,0 %;      !  index bucket size 
macro KEY$B_DATBKTSZ = 11,0,8,0 %;      !  data bucket size 
macro KEY$L_ROOTVBN = 12,0,32,0 %;      !  root bucket pointer 
macro KEY$R_FLAGS_OVERLAY = 16,0,8,0 %;
macro KEY$B_FLAGS = 16,0,8,0 %;         !  flag bits 
macro KEY$R_FLAGS_BITS0 = 16,0,8,0 %;
macro KEY$V_DUPKEYS = 16,0,1,0 %;       !  duplicate key values allowed 
macro KEY$V_CHGKEYS = 16,1,1,0 %;       !  key value may change on $update operation 
macro KEY$V_NULKEYS = 16,2,1,0 %;       !  null key character enabled 
macro KEY$V_IDX_COMPR = 16,3,1,0 %;     !  index is compressed 
macro KEY$V_INITIDX = 16,4,1,0 %;       !  index must be initialized 
macro KEY$V_KEY_COMPR = 16,6,1,0 %;     !  (PLG3) key is compressed in data record 
macro KEY$R_FLAGS_BITS1 = 16,0,8,0 %;
macro KEY$V_REC_COMPR = 16,7,1,0 %;     !  (PLG3) Data record is compressed 
macro KEY$B_DATATYPE = 17,0,8,0 %;      !  data type for key 
macro KEY$B_SEGMENTS = 18,0,8,0 %;      !  number of segments in key 
macro KEY$B_NULLCHAR = 19,0,8,0 %;      !  "null" character 
macro KEY$B_KEYSZ = 20,0,8,0 %;         !  total key size 
macro KEY$B_KEYREF = 21,0,8,0 %;        !  key of reference 
macro KEY$W_MINRECSZ = 22,0,16,0 %;     !  minimum record length 
macro KEY$W_IDXFILL = 24,0,16,0 %;      !  index fill quantity 
macro KEY$W_DATFILL = 26,0,16,0 %;      !  data fill quantity 
macro KEY$R_POSITION_OVERLAY = 28,0,16,0 %;
macro KEY$W_POSITION = 28,0,16,0 %;     !  key seg position 
macro KEY$W_POSITION0 = 28,0,16,0 %;    !  another name for position 0 
macro KEY$W_POSITION1 = 30,0,16,0 %;    !  position 1 
macro KEY$W_POSITION2 = 32,0,16,0 %;    !  position 2 
macro KEY$W_POSITION3 = 34,0,16,0 %;    !  position 3 
macro KEY$W_POSITION4 = 36,0,16,0 %;    !  position 4 
macro KEY$W_POSITION5 = 38,0,16,0 %;
macro KEY$W_POSITION6 = 40,0,16,0 %;
macro KEY$W_POSITION7 = 42,0,16,0 %;
macro KEY$R_SIZE_OVERLAY = 44,0,8,0 %;
macro KEY$B_SIZE = 44,0,8,0 %;          !  key segment size 
macro KEY$B_SIZE0 = 44,0,8,0 %;         !  another name for size 
macro KEY$B_SIZE1 = 45,0,8,0 %;         !  size 1 
macro KEY$B_SIZE2 = 46,0,8,0 %;
macro KEY$B_SIZE3 = 47,0,8,0 %;
macro KEY$B_SIZE4 = 48,0,8,0 %;
macro KEY$B_SIZE5 = 49,0,8,0 %;
macro KEY$B_SIZE6 = 50,0,8,0 %;
macro KEY$B_SIZE7 = 51,0,8,0 %;
macro KEY$T_KEYNAM = 52,0,0,0 %;
literal KEY$S_KEYNAM = 32;              !  key name 
macro KEY$L_LDVBN = 84,0,32,0 %;        !  first data bucket 
macro KEY$R_TYPE_OVERLAY = 88,0,8,0 %;
macro KEY$B_TYPE = 88,0,8,0 %;          !  key segment datatype (plg 3) 
macro KEY$B_TYPE0 = 88,0,8,0 %;         !  another name for first datatype (plg 3) 
macro KEY$B_TYPE1 = 89,0,8,0 %;         !  (plg 3) 
macro KEY$B_TYPE2 = 90,0,8,0 %;         !  (plg 3) 
macro KEY$B_TYPE3 = 91,0,8,0 %;         !  (plg 3) 
macro KEY$B_TYPE4 = 92,0,8,0 %;         !  (plg 3) 
macro KEY$B_TYPE5 = 93,0,8,0 %;         !  (plg 3) 
macro KEY$B_TYPE6 = 94,0,8,0 %;         !  (plg 3) 
macro KEY$B_TYPE7 = 95,0,8,0 %;         !  (plg 3) 
 
!*** MODULE $AREADEF ***
! 
! 
!  definitions for the area descriptor in the prologue
! 
! 
literal AREA$C_CYL = 1;                 !  cylinded alignment 
literal AREA$C_LBN = 2;                 !  logical block alignment 
literal AREA$C_VBN = 3;                 !  virtual block alignment 
literal AREA$C_RFI = 4;                 !  allocate close to related file by fid 
literal AREA$M_HARD = 1;
literal AREA$M_ONC = 2;
literal AREA$M_CBT = 32;
literal AREA$M_CTG = 128;
literal AREA$K_BLN = 64;                !  length of area descriptor in the prologue 
literal AREA$C_BLN = 64;                !  length of area descriptor in the prologue 
literal AREA$S_AREADEF = 64;
macro AREA$B_FLAGS = 1,0,8,0 %;         !  not currently used 
macro AREA$B_AREAID = 2,0,8,0 %;        !  area id 
macro AREA$B_ARBKTSZ = 3,0,8,0 %;       !  bucket size for area 
macro AREA$W_VOLUME = 4,0,16,0 %;       !  relative volume number 
macro AREA$B_ALN = 6,0,8,0 %;           !  extend allocation alignment 
macro AREA$R_AOP_OVERLAY = 7,0,8,0 %;
macro AREA$B_AOP = 7,0,8,0 %;           !  alignment options 
macro AREA$R_AOP_BITS = 7,0,8,0 %;
macro AREA$V_HARD = 7,0,1,0 %;          !  absolute alignment or nothing 
macro AREA$V_ONC = 7,1,1,0 %;           !  locate on cylinder 
macro AREA$V_CBT = 7,5,1,0 %;           !  contiguous best try 
macro AREA$V_CTG = 7,7,1,0 %;           !  contiguous 
macro AREA$L_AVAIL = 8,0,32,0 %;        !  available (returned) buckets 
macro AREA$L_CVBN = 12,0,32,0 %;        !  start vbn for current extent 
macro AREA$L_CNBLK = 16,0,32,0 %;       !  number of blocks in current extent 
macro AREA$L_USED = 20,0,32,0 %;        !  number of blocks used 
macro AREA$L_NXTVBN = 24,0,32,0 %;      !  next vbn to use 
macro AREA$L_NXT = 28,0,32,0 %;         !  start vbn for next extent 
macro AREA$L_NXBLK = 32,0,32,0 %;       !  number of blocks in next extent 
macro AREA$W_DEQ = 36,0,16,0 %;         !  default extend quantity 
macro AREA$L_LOC = 40,0,32,0 %;         !  start lbn on volume 
macro AREA$W_RFI = 44,0,0,0 %;
literal AREA$S_RFI = 6;                 !  related file id 
macro AREA$L_TOTAL_ALLOC = 50,0,32,0 %; !  total block allocation
macro AREA$W_CHECK = 62,0,16,0 %;       !  checksum 
 
!*** MODULE $RJRDEF ***
! 
! 
!  definitions for the journal records in RMS journal files
! 
! 
literal RJR$C_RMS_AI = 1;               !  after-image journal
literal RJR$C_RMS_BI = 2;               !  before-image journal
literal RJR$C_RMS_RU = 3;               !  recovery unit
literal RJR$C_RMS_AT = 4;               !  audit trail
literal RJR$C_MAXJNL = 4;               !  jnl type limit
literal RJR$C_VER1 = 1;                 !  journal version 1
literal RJR$C_CURVER = 1;               !  current version
literal RJR$C_NULL = 0;                 !  No entry follows the header
literal RJR$C_LEADER = 1;               !  leader entry
literal RJR$C_TRAILER = 2;              !  trailer entry
literal RJR$C_RECORD = 3;               !  record entry (AI, BI, RU)
literal RJR$C_BLOCK = 4;                !  block entry  (AI, BI, RU)
literal RJR$C_EXTEND = 5;               !  extend entry (AI, AT)
literal RJR$C_CREATE = 6;               !  create entry (AI, AT)
literal RJR$C_AT_RECORD = 7;            !  audit trail record (AT)
literal RJR$C_DEFINE_JNL = 8;           !  Journal creation record
literal RJR$C_BACKUP = 9;               !  Backup done entry (AI, BI)
literal RJR$C_COMMIT = 10;              !  RU commit entry (AI, BI)
literal RJR$C_ABORT = 11;               !  RU abort entry (AI, BI)
literal RJR$C_PREPARE = 12;             !  RU prepare entry (AI, BI, RU)
literal RJR$C_FORCED_COMMIT = 13;       !  RU forced commit for AI jnls
literal RJR$C_MAXTYP = 13;              !  entry-type limit
literal RJR$C_SEQ = 0;                  !  sequential file org
literal RJR$C_REL = 1;                  !  relative file org
literal RJR$C_IDX = 2;                  !  indexed file org
literal RJR$C_HSH = 3;                  !  hashed file org
literal RJR$C_MAXORG = 3;               !  org limit
literal RJR$_CLOSE = 1;                 !  close
literal RJR$_CONNECT = 2;               !  connect
literal RJR$_CREATE = 3;                !  create
literal RJR$_DELETE = 4;                !  delete
literal RJR$_DISCONNECT = 5;            !  disconnect
literal RJR$_DISPLAY = 6;               !  display
literal RJR$_ENTER = 7;                 !  enter
literal RJR$_ERASE = 8;                 !  erase
literal RJR$_EXTEND = 9;                !  extend
literal RJR$_FIND = 10;                 !  find
literal RJR$_FLUSH = 11;                !  flush
literal RJR$_FREE = 12;                 !  free
literal RJR$_GET = 13;                  !  get
literal RJR$_MODIFY = 14;               !  modify
literal RJR$_NXTVOL = 15;               !  next volume
literal RJR$_OPEN = 16;                 !  open
literal RJR$_PARSE = 17;                !  parse
literal RJR$_PUT = 18;                  !  put
literal RJR$_READ = 19;                 !  block I/O read
literal RJR$_RELEASE = 20;              !  release
literal RJR$_REMOVE = 21;               !  remove
literal RJR$_RENAME = 22;               !  rename
literal RJR$_REWIND = 23;               !  rewind
literal RJR$_SEARCH = 24;               !  search
literal RJR$_SPACE = 25;                !  block I/O space
literal RJR$_TRUNCATE = 26;             !  truncate
literal RJR$_UPDATE = 27;               !  update
literal RJR$_WAIT = 28;                 !  wait
literal RJR$_WRITE = 29;                !  block I/O write
literal RJR$_TPT = 30;                  !  truncate on PUT
literal RJR$_MAXOPER = 30;              !  oper limit
literal RJR$C_HDRLEN = 72;              !  common header len
literal RJR$K_HDRLEN = 72;              !  common header len
literal RJR$C_COMMITLEN = 72;           !  commit entry len
literal RJR$K_COMMITLEN = 72;           !  commit entry len
literal RJR$C_ABORTLEN = 72;            !  abort entry len
literal RJR$K_ABORTLEN = 72;            !  abort entry len
literal RJR$C_FORCED_COMMITLEN = 72;    !  forced commit entry len
literal RJR$K_FORCED_COMMITLEN = 72;    !  forced commit entry len
! 
literal RJR$C_LDRLEN = 169;             !  leader entry len
literal RJR$K_LDRLEN = 169;             !  leader entry len
!  the 3 filespec strings above appear here
literal RJR$C_TRLLEN = 107;             !  trailer entry len
literal RJR$K_TRLLEN = 107;             !  trailer entry len
!  filespec of next journal file appears here
literal RJR$C_RECLEN = 100;             !  record entry len
literal RJR$K_RECLEN = 100;             !  record entry len
literal RJR$C_BLKLEN = 96;              !  block i/o entry len
literal RJR$K_BLKLEN = 96;              !  block i/o entry len
literal RJR$M_EXT_USE_XAB = 1;
literal RJR$C_EXTLEN = 114;             !  extend entry len
literal RJR$K_EXTLEN = 114;             !  extend entry len
literal RJR$M_ATR_UCHAR = 1;
literal RJR$M_ATR_PROT = 2;
literal RJR$M_ATR_UIC = 4;
literal RJR$M_ATR_REC = 8;
literal RJR$M_ATR_EXPIRE = 16;
literal RJR$C_FIBLEN = 64;
literal RJR$K_FIBLEN = 64;
literal RJR$C_RECATRLEN = 32;
literal RJR$K_RECATRLEN = 32;
literal RJR$C_CRELEN = 226;
literal RJR$K_CRELEN = 226;
literal RJR$C_AT_RECLEN = 104;
literal RJR$K_AT_RECLEN = 104;
literal RJR$C_BACKUPLEN = 92;
literal RJR$K_BACKUPLEN = 92;
literal RJR$C_PREPARELEN = 112;         !  prepare entry len
literal RJR$K_PREPARELEN = 112;         !  prepare entry len
!  actual node name string follows here
literal RJR$C_BLN = 226;                !  length of RJR descriptor in the prologue 
literal RJR$K_BLN = 226;                !  length of RJR descriptor in the prologue 
literal RJR$S_RJRDEF = 226;
macro RJR$W_FACILITY = 0,0,16,0 %;      !  facility code (=1)
macro RJR$W_FLAGS = 2,0,16,0 %;         !  flags
macro RJR$V_FIRST_RU_RECORD = 2,0,1,0 %; !  first journal record for this RU
macro RJR$V_RUJ_IN_LTJ = 2,1,1,0 %;     !  this is a RU record written to a LTJ
macro RJR$V_WRITTEN_BY_RECOVER = 2,2,1,0 %; !  written during detached reocvery
macro RJR$V_FIRST_STREAM_RU_RECORD = 2,3,1,0 %; !  first journal record for this stream and RU
macro RJR$V_RECOVERED = 2,4,1,0 %;      !  entries for leader record already recovered
macro RJR$V_NOPAD = 2,5,1,0 %;          !  Do not pad AI record
macro RJR$L_JNLIDX = 4,0,32,0 %;        !  journal stream index
macro RJR$B_JNL_TYPE = 8,0,8,0 %;       !  journaling type
macro RJR$B_VERSION = 9,0,8,0 %;        !  RMS journal version #
macro RJR$B_ENTRY_TYPE = 10,0,8,0 %;    !  journal entry type
macro RJR$B_ORG = 11,0,8,0 %;           !  file organization
macro RJR$B_OPER = 12,0,8,0 %;          !  RMS operation id
macro RJR$T_RUID = 16,0,0,0 %;
literal RJR$S_RUID = 16;                !  RUID (if operation performed in an RU)
macro RJR$T_TID = 16,0,0,0 %;
literal RJR$S_TID = 16;                 !  TID is the RUID under DDTM
macro RJR$L_EPID = 32,0,32,0 %;         !  EPID of the process writing the entry
macro RJR$Q_DATE = 36,0,0,0 %;
literal RJR$S_DATE = 8;                 !  date/time of record
macro RJR$L_AT_STS = 44,0,32,0 %;       !  status of operation (AT)
macro RJR$L_AT_STV = 48,0,32,0 %;       !  secondary status (AT)
macro RJR$L_AT_CTX = 52,0,32,0 %;       !  user FAB/RAB CTX field (AT)
!  End of common RJR header. Begin entry-specific definitions.
! 
! 
!  Leader record. First record in each journal file.
! 
macro RJR$W_FILESPEC_OFF = 72,0,16,0 %; !  offset to filespec of file being journaled (from top of RJR)
macro RJR$W_FILESPEC_LEN = 74,0,16,0 %; !  length of filespec of file being journaled
macro RJR$B_VOLNAM_LEN = 76,0,8,0 %;    !  length of volume name string
macro RJR$T_VOLNAM = 77,0,0,0 %;
literal RJR$S_VOLNAM = 12;              !  volume name of file being journaled
macro RJR$T_FID = 89,0,0,0 %;
literal RJR$S_FID = 6;                  !  FID of file being journaled
macro RJR$Q_CDATE = 95,0,0,0 %;
literal RJR$S_CDATE = 8;                !  creation date of file being journaled
macro RJR$W_J_FILESPEC_OFF = 103,0,16,0 %; !  offset to filespec of journal file (from top of RJR)
macro RJR$W_J_FILESPEC_LEN = 105,0,16,0 %; !  length of filespec of journal file
macro RJR$B_J_VOLNAM_LEN = 107,0,8,0 %; !  length of volume name string
macro RJR$T_J_VOLNAM = 108,0,0,0 %;
literal RJR$S_J_VOLNAM = 12;            !  volume name of journal file
macro RJR$T_J_FID = 120,0,0,0 %;
literal RJR$S_J_FID = 6;                !  FID of journal file
macro RJR$Q_J_CDATE = 126,0,0,0 %;
literal RJR$S_J_CDATE = 8;              !  creation date of journal file
macro RJR$W_PJ_FILESPEC_OFF = 134,0,16,0 %; !  offset to filespec of previous journal file (from top of RJR)
macro RJR$W_PJ_FILESPEC_LEN = 136,0,16,0 %; !  length of filespec of previous journal file
macro RJR$B_PJ_VOLNAM_LEN = 138,0,8,0 %; !  length of volume name string
macro RJR$T_PJ_VOLNAM = 139,0,0,0 %;
literal RJR$S_PJ_VOLNAM = 12;           !  volume name of previous journal file
macro RJR$T_PJ_FID = 151,0,0,0 %;
literal RJR$S_PJ_FID = 6;               !  FID of previous journal file
macro RJR$Q_PJ_CDATE = 157,0,0,0 %;
literal RJR$S_PJ_CDATE = 8;             !  creation date of previous journal file
macro RJR$L_PJ_JNLIDX = 165,0,32,0 %;   !  journal stream index of the previous journal file
! 
!  Trailer record. This record is only present in AI or BI journal files that
!  have newer versions. It is written to the old journal file when a file that
!  was already marked for journaling is re-marked for journaling to point to
!  a newer version of a journal file.
! 
macro RJR$W_NJ_FILESPEC_OFF = 72,0,16,0 %; !  offset to filespec of next journal file (from top of RJR)
macro RJR$W_NJ_FILESPEC_LEN = 74,0,16,0 %; !  length of filespec of next journal file
macro RJR$B_NJ_VOLNAM_LEN = 76,0,8,0 %; !  length of volume name string
macro RJR$T_NJ_VOLNAM = 77,0,0,0 %;
literal RJR$S_NJ_VOLNAM = 12;           !  volume name of next journal file
macro RJR$T_NJ_FID = 89,0,0,0 %;
literal RJR$S_NJ_FID = 6;               !  FID of next journal file
macro RJR$Q_NJ_CDATE = 95,0,0,0 %;
literal RJR$S_NJ_CDATE = 8;             !  creation date of next journal file
macro RJR$L_NJ_JNLIDX = 103,0,32,0 %;   !  Journal stream index of the next journal file
! 
!  Record entry. Used for AI, BI, and RU to journal record operations.
! 
macro RJR$L_CHKSUM = 88,0,32,0 %;       !  checksum of old record
macro RJR$W_RFA = 92,0,0,0 %;
literal RJR$S_RFA = 6;                  !  RFA of record
macro RJR$L_RFA0 = 92,0,32,0 %;         !  alternate RFA def
macro RJR$W_RFA4 = 96,0,16,0 %;
macro RJR$L_RRN = 92,0,32,0 %;          !  relative record number
macro RJR$W_RSIZE = 98,0,16,0 %;        !  record size
macro RJR$T_RIMAGE = 100,0,0,0 %;       !  record data
! 
!  The block entry is used for ISAM AI/BI bucket entries, $WRITEs, and AT.
! 
macro RJR$L_BLOCK_VBN = 88,0,32,0 %;    !  vbn of block
macro RJR$W_BLOCK_SIZE = 92,0,16,0 %;   !  transfer size
macro RJR$W_JBLOCK_SIZE = 94,0,16,0 %;  !  actual size of
!  journaled data
macro RJR$T_BLOCK = 96,0,0,0 %;         !  block data
! 
!  RJR$C_BLKLEN must be a quadword multiple or indexed data buffers
!  will not be quadword aligned!!! This constant is used to size
!  indexed data buffers which have imbedded AI and BI RJR headers
!  when long term journaling is used.
! 
! 
!  The extend entry is common to both AT and AI journaling.
! 
macro RJR$L_EXT_FLAGS = 88,0,32,0 %;
macro RJR$V_EXT_USE_XAB = 88,0,1,0 %;   !  ALL XAB fields present
! 
!  Fields EXT_AOP (unused) through EXT_RFI are in same relative locations as
!  the same fields in allocation XAB.
! 
macro RJR$B_EXT_AOP = 92,0,8,0 %;       !  align options
macro RJR$B_EXT_ALN = 93,0,8,0 %;       !  alignment boundary
macro RJR$W_EXT_VOL = 94,0,16,0 %;      !  relative volume number
macro RJR$L_EXT_LOC = 96,0,32,0 %;      !  location
macro RJR$L_EXT_ALQ = 100,0,32,0 %;     !  allocation quantity
macro RJR$W_EXT_DEQ = 104,0,16,0 %;     !  default extension
macro RJR$B_EXT_BKZ = 106,0,8,0 %;      !  bucket size
macro RJR$B_EXT_AID = 107,0,8,0 %;      !  area ID
macro RJR$W_EXT_RFI = 108,0,0,0 %;
literal RJR$S_EXT_RFI = 6;              !  related file IFI
macro RJR$T_EXT_ENDALL = 114,0,0,0 %;   !  end of all info
! 
!  The CREATE entry is used to record the information required to re-create
!  a file for AI journaling, and to record a create for AT journaling.
! 
macro RJR$L_ATR_FLAGS = 88,0,32,0 %;
macro RJR$V_ATR_UCHAR = 88,0,1,0 %;     !  UCHAR attribute present
macro RJR$V_ATR_PROT = 88,1,1,0 %;      !  PROT attribute present
macro RJR$V_ATR_UIC = 88,2,1,0 %;       !  UIC attribute present
macro RJR$V_ATR_REC = 88,3,1,0 %;       !  RECORD attributes present
macro RJR$V_ATR_EXPIRE = 88,4,1,0 %;    !  EXPIRATION present
macro RJR$L_UIC = 92,0,32,0 %;          !  owner UIC
macro RJR$L_PROT = 96,0,32,0 %;         !  prot mask
macro RJR$L_ALLOC = 100,0,32,0 %;       !  initial allocation (audit)
macro RJR$L_UCHAR = 104,0,32,0 %;       !  user characteristics (create)
macro RJR$Q_EXPIRE = 108,0,0,0 %;
literal RJR$S_EXPIRE = 8;               !  expiration date (create)
macro RJR$B_FAC = 116,0,8,0 %;          !  file access (audit)
macro RJR$B_SHR = 117,0,8,0 %;          !  sharing allowed (audit)
macro RJR$W_DID = 118,0,0,0 %;
literal RJR$S_DID = 6;                  !  directory ID (create, volume recovery)
macro RJR$T_FIB = 126,0,0,0 %;
literal RJR$S_FIB = 64;                 !  FIB (create)
macro RJR$T_REC_ATTR = 190,0,0,0 %;
literal RJR$S_REC_ATTR = 32;            !  record attributes (create)
macro RJR$W_C_FILESPEC_OFF = 222,0,16,0 %; !  offset to full filespec (from top of RJR)
macro RJR$W_C_FILESPEC_LEN = 224,0,16,0 %; !  length of full filespec
! 
!  The AT record is used for audit-trail journaling.
! 
macro RJR$L_AT_ROP = 88,0,32,0 %;       !  record options
macro RJR$B_AT_KRF = 92,0,8,0 %;        !  key of reference
macro RJR$B_AT_KSZ = 93,0,8,0 %;        !  key size
macro RJR$B_AT_RAC = 94,0,8,0 %;        !  record access mode
macro RJR$W_AT_RFA = 96,0,0,0 %;
literal RJR$S_AT_RFA = 6;               !  RFA of record
macro RJR$L_AT_RFA0 = 96,0,32,0 %;      !  alternate RFA def
macro RJR$W_AT_RFA4 = 100,0,16,0 %;
macro RJR$L_AT_RRN = 96,0,32,0 %;       !  relative record number
macro RJR$T_AT_KEY = 104,0,0,0 %;       !  key if used
! 
!   The BACKUP_ENTRY record is used to flag that a backup has been taken on the
!   data file being journaled.  It provides a known starting point for rollforward.
! 
macro RJR$L_BACKUP_SEQNO = 88,0,32,0 %; !  Backup sequence number
! 
!  The prepare record is written to RU, AI, and BI journals for transactions
!  that required a two-phase commit protocol.
! 
macro RJR$T_DDTM_LOG_ID = 72,0,0,0 %;
literal RJR$S_DDTM_LOG_ID = 16;         !  DDTM log id
macro RJR$T_RUJ_LOG_ID = 88,0,0,0 %;
literal RJR$S_RUJ_LOG_ID = 16;          !  RMS RUJ log id
macro RJR$W_NODE_NAME_OFF = 104,0,16,0 %; !  offset to node name string
macro RJR$W_NODE_NAME_LEN = 106,0,16,0 %; !  length of node name string
macro RJR$W_RM_NAME_OFF = 108,0,16,0 %; !  offset to resource manager name string
macro RJR$W_RM_NAME_LEN = 110,0,16,0 %; !  length of resource manager name string
