Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_SRC_1_19910112 - 7/galaxy-sources/nebmac.mac
There are 11 other files named nebmac.mac in the archive. Click here to see a list.
UNIVER	NEBMAC				;PARAMETER FILE FOR NEBULA
SUBTTL  Preliminaries

;	COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1988.
;	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 THAT IS NOT SUPPLIED BY DIGITAL.

	SEARCH	GLXMAC		;CHECK GALAXY LIBRARY
	SEARCH	QSRMAC		;CHECK QUASARS LIBRARY
	SEARCH	ORNMAC		;CHECK ORIONS LIBRARY
	SEARCH	GALCNF		;GET CONFIGURATION DATA
	SEARCH	MONSYM		;CHECK THE MONITOR'S SYMBOLS

	SALL			;MAKE CLEAN LISTINGS

	IF1,<PRINTX BUILDING A GALAXY-20 NEBMAC>


	NMCMAN==:0
	NMCDEV==:15
	VERSIN(NMC)

	NMCWHO==0
	NMCVER==6
	NMCMIN==0
	Subttl	Table of Contents

;		     Table of Contents for NEBMAC
;
;				  Section		      Page
;
;
;    1. Revision history . . . . . . . . . . . . . . . . . . .   3
;    2. SYMBOLS DERIVED FROM GALCNF  . . . . . . . . . . . . .   4
;    3. NODE TABLE (NODTBL)  . . . . . . . . . . . . . . . . .   5
;    4. LISTENER DATA BASE DEFINITIONS . . . . . . . . . . . .   6
;    5. SENDER DATA BASE DEFINITIONS . . . . . . . . . . . . .   9
;    6. TABLE OF PREVIOUSLY AND CURRENTLY KNOWN NODES  . . . .  12
;    7. TIMER LIST . . . . . . . . . . . . . . . . . . . . . .  13
;    8. MESSAGE QUEUE (MSGQUE) . . . . . . . . . . . . . . . .  14
;    9. REMOTE QUEUE (REMQUE)  . . . . . . . . . . . . . . . .  15
;   10. IN BEHALF OF QUEUE (IBOQUE)  . . . . . . . . . . . . .  16
;   11. NODE NAME BLOCK  . . . . . . . . . . . . . . . . . . .  17
;   12. REMOTE DISMOUNT MESSAGE  . . . . . . . . . . . . . . .  18
;   13. TO NEBULA DISMOUNT MESSAGE . . . . . . . . . . . . . .  19
;   14. FROM NEBULA DISMOUNT MESSAGE . . . . . . . . . . . . .  20
;   15. FROM NEBULA DISMOUNT ACK MESSAGE . . . . . . . . . . .  21
;   16. TO NEBULA DISMOUNT ACK MESSAGE . . . . . . . . . . . .  22
;   17. NEBULA CANCEL DISMOUNT MESSAGE . . . . . . . . . . . .  23
;   18. TO NEBULA MOUNT MESSAGE  . . . . . . . . . . . . . . .  24
;   19. FROM NEBULA MOUNT MESSAGE  . . . . . . . . . . . . . .  25
;   20. NEBULA SHOW MESSAGES' CODES  . . . . . . . . . . . . .  26
;   21. RESPONSE TO EXEC CANCEL MESSAGE  . . . . . . . . . . .  27
;   22. (TO NEBULA) SHOW OPERATORS MESSAGE . . . . . . . . . .  28
;   23. (TO NEBULA) SHOW MESSAGE . . . . . . . . . . . . . . .  29
;   24. SHOW CLUSTER-GALAXY-LINK-STATUS MESSAGE  . . . . . . .  30
;   25. REMOTE SHOW ACK MESSAGE  . . . . . . . . . . . . . . .  31
;   26. SHOW CLUSTER-GALAXY-LINK-STATUS MESSAGE  . . . . . . .  32
;   27. DISABLE REPORT-CONNECTION-FAILURES MESSAGE . . . . . .  33
;   28. ENABLE REPORT-CONNECTION-FAILURES MESSAGE  . . . . . .  34
;   29. DISABLE DECNET-CONNECTION-ATTEMPTS MESSAGE . . . . . .  35
;   30. ENABLE DECNET-CONNECTION-ATTEMPTS MESSAGE  . . . . . .  36
;   31. NEBULA ACK / NEBULA ACK RESPONSE MESSAGES  . . . . . .  37
;   32. NEBULA MESSAGE CODES . . . . . . . . . . . . . . . . .  38
;   33. NEBULA ERROR CODES . . . . . . . . . . . . . . . . . .  39
	SUBTTL	Revision history

COMMENT \

*****	Release 6.0 -- begin development edits	*****

1	6.1077		15-Nov-87
	Move to the GALAXY 6 development area.

2	6.1080		16-Nov-87
	Add symbol .NBMSG as the minimum message code value of a message
that involves NEBULA processing.

3	6.1084		18-Nov-87
	Add REMOTE SHOW ACK message definition.

4	6.1138		13-Dec-87
	Increase the listener's stack size, increase the listener's SRV:
device name storage size, increase the sender's DCN: device name storage
size and add error code E$IFM.

5	6.1145		17-Dec-87
	Define debugging blocks for private world DCN: and SRV: Decnet
device names.

6	6.1142		17-Dec-87
	Add message code definitions for SHOW STATUS DISK and SHOW STATUS
TAPE messages

7	6.1146		17-Dec-87
	Add message code definition for SHOW STATUS STRUCTURE

10	6.1175		7-Feb-88
	Add word .IQPID to the in behalf of queue entry definition, add word
.MQPID to the message queue entry definition and define message type .NMTXT,
all in support of the EXEC commands INFORMATION OUTPUT/DESTINATION and
CANCEL PRINT/DESTINATION.

11	6.1183		16-Feb-88
	Remove the Cluster GALAXY option definition from NEBMAC.

12	6.1193		23-Feb-88
	Add message codes for the NEBULA ACK and NEBULA ACK RESPONSE messages.
Also, place all the message code definitions together for easier updating.

13	6.1203		29-Feb-88
	Define error code INS.

14	6.1225		8-Mar-88
	Update copyright notice.

15	6.1247		5-May-88
	Define message codes .NMSSN and .MNSPN in support of the SHOW STATUS
NETWORK-NODE and SHOW PARAMETERS NETWORK-NODE commands.

\	;End of revision history
	SUBTTL	SYMBOLS DERIVED FROM GALCNF

	XP	N$ACKO,G.NEBA			;[12]NEBULA ACK MESSAGE OPTION
	SUBTTL	NODE TABLE (NODTBL)

COMMENT \
          The node table describes remote nodes in the  cluster.   For
     each remote node in the cluster known to NEBULA, there will be an
     entry for that node in the node table.   The  format  of  a  node
     table entry is:

        !=======================================================!
        !                    SIXBIT Node Name                   ! .NNNAM
        !-------------------------------------------------------!
        !          NS.STA           !          NS.NUM           ! .NNSTA
        !-------------------------------------------------------!
	!                 Status of the Sender                  ! .NSSTA
	!-------------------------------------------------------!
	!                Status of the Listener			! .NLSTA
	!-------------------------------------------------------!
	!                  INFO% error counter                  ! .NIERC
	!-------------------------------------------------------!
	!                  INFO% error timeout                  ! .NIETM
	!-------------------------------------------------------!
	!          Time DECnet Messages Were Sent List          ! .NTIML
	!-------------------------------------------------------!       
	!    Remote Queue Link List Header Word For This Node   ! .NRQLH
	!-------------------------------------------------------!
	!   Remote Queue Link List Trailer Word For This Node   ! .NRQLT
        !-------------------------------------------------------!
        !     Address of the First Page of the Sender Block     ! .NNSBA
        !-------------------------------------------------------!
        !    Address of the First Page of the Listener Block    ! .NNLBA
        !=======================================================!

 Note: Word .NNSTA is only modified by NEBULA's top fork. It is read by
the listener and sender. Word .NSSTA can be written by both the top
fork and by the sender. This implies that there must be a protocol that
is followed by the top fork and the sender to ensure that what is written
by both is not lost due to simultaneous updating. The protocol that
is used is:

1. The top fork turns on bit NS%WHR before it starts the sender. Once it
   starts the sender it will not modify word .NSSTA until the sender 
   has a connection.
2. When the sender successfully completes a DECnet connection, it turns
   on bit NS%NRH and informs the top fork. It does not modify the word
   .NSSTA again.
3. The top fork will then turn off bits NS%WHR and NS%NRH and turn on
   bit NS%HEL.
4. If the sender detects a fatal error, then it turns on bit NS%SFC
   and crashes. Since this is an unplanned event, it is possible that the
   top fork may be modifying word .NSSTA while the sender is attempting
   to turn this bit on. However, in this case, it does not matter since
   when the sender crashes, the top fork will be interrupted and it will
   be able to determine which sender crashed by the RFSTS% JSYS.

 Word .NLSTA can also be modified by both the top fork and, in this case,
the listener. Consequently, a protocol must also be observed between the
top fork and the listener.

1. The top fork turns on bit NL%WHL before it starts the listener. It does
   not modify word .NLSTA until the listener has accepted a connection.

2. The listener turns on bit NL%NRH when it has accepted a connection
   and then informs the top fork of the connection. It does not modify
   word .NLSTA again.
3. The top fork, when it notices that bit NL%NRH is turned on, will then
   turn off bits NL%NRH and NL%WHL and turn on bit NL%HEL.

4. If the listener detects a fatal error, then it turns on bit NL%LFC
   and crashes. Since this is an unplanned event, it is possible that the
   top fork may be modifying word .NLSTA while the listener is attempting
   to turn this bit on. However, in this case, it does not matter since
   when the listener crashes, the top fork will be interrupted and it will
   be able to determine which listener crashed by the RFSTS% JSYS.

\
        PHASE 0

.NNNAM: BLOCK 1                             ;SIXBIT REMOTE NEBULA'S NODE NAME
.NNSTA: BLOCK 1                             ;STATUS INFORMATION.
     NS.STA==-1,,0                          ;STATUS OF THE NODE
	NN%OKS==1B0                         ;O.K. TO SEND MESSAGES TO THIS NODE
	NN%COI==1B1                         ;INFO% NOT ABLE TO GET S.W. ENVMENT
	NN%DCN==1B2                         ;DECNET NOT INSTALLED
	NN%REL==1B3			    ;MONITOR VERSION LESS THAN 7
	NN%SCS==1B4                         ;SCS DETECTED NODE LEFT CLUSTER
	NN%SHO==1B5                         ;SENDER DOES NOT HAVE A CONNECTION
	NN%LHO==1B6                         ;LISTENER DOESN'T HAVE A CONNECTION
	NN%IFC==1B7			    ;KILL THE INFERIOR FORKS
	NN%DCO==1B8                         ;DON'T NOTIFY ORION IF CAN'T
                                            ; OBTAIN A DECNET CONNECTION
	NN%CCA==1B9			    ;CEASE DECNET CONNECTION ATTEMPTS
      NNLOW==POS(NN%COI)                    ;LOWEST ERROR BIT NUMBER
      NNHIGH==POS(NN%IFC)                   ;HIGHEST ERROR BIT NUMBER
    NS.NUM==0,,-1                           ;CFS NODE NUMBER
.NSSTA:	BLOCK 1                             ;STATUS OF THE SENDER
	NS%HEL==1B0                         ;SENDER SUCCESSFULLY SENT HELLO MSG
	NS%WHR==1B1			    ;WAITING FOR HELLO RESPONSE
	NS%HRJ==1B2                         ;HELLO MESSAGE REJECTED
	NS%SFC==1B3                         ;SENDER FORK CRASHED
	NS%NRH==1B4                         ;NOTIFY TOP FORK RECEIVED HELLO RSP
.NLSTA:	BLOCK 1                             ;STATUS OF THE LISTENER
	NL%HEL==1B0                         ;LISTENER RECEIVED HELLO MESSAGE
	NL%WHL==1B1                         ;WAITING FOR A HELLO MESSAGE
	NL%HMR==1B2                         ;HELLO MSG RECEIVED FROM NON-NEBULA
	NL%LFC==1B3                         ;LISTENER FORK CRASHED
	NL%NRH==1B4                         ;NOTIFY TOP FORK RECD HELLO MSG   
.NIERC:	BLOCK 1				    ;[12]INFO% ERROR COUNTER
.NIETM: BLOCK 1				    ;[12]INFO% ERROR TIMER
.NTIML:	BLOCK 1                             ;LIST OF TIMES MESSAGES SENT
.NRQLH: BLOCK 1                             ;REMOTE QUEUE LINK LIST HEADER WORD
.NRQLT: BLOCK 1                             ;REMOTE QUEUE LINK LIST TRAILER WORD
.NNSBA: BLOCK 1                             ;ADR OF FIRST PAGE OF SENDER BLOCK
.NNLBA: BLOCK 1                             ;ADR OF FIRST PG OF LISTENER BLOCK
.NNNSZ:                                     ;SIZE OF A NODE TABLE ENTRY        
        DEPHASE
	SUBTTL	LISTENER DATA BASE DEFINITIONS

COMMENT \
          Each listener has a two page listener block.   The  listener
     block  is shared between the top fork and the listener.  The first page
     has the following format:

        !=======================================================!
        !                 Message Buffer Address                ! .LSMSG
        !-------------------------------------------------------!
	!		 Node Table Entry Address		! .LSNTA
	!-------------------------------------------------------!
	!                 SIXBIT Remote Node Name               ! .LSNME
	!-------------------------------------------------------!
	!                                                       !
	/                 ASCIZ Remote Node Name                / .LSANN
	!                                                       !
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/                   Remote Sender Name                  / .LSUSR
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/               DECnet Remote Sender Name               / .LSSNE
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/          DECnet Remote Sender Optional Data           / .LSOPT
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!          Listener Message Queue Header Word           ! .LSHWD
        !-------------------------------------------------------!
	!          Listener Message Queue Trailer Word          ! .LSTWD
	!-------------------------------------------------------!
	!    Number of Messages in the Listener Message Queue   ! .LSUSM
	!-------------------------------------------------------!
        !                   DECnet Link Status                  ! .LSLNK
        !-------------------------------------------------------!
        !           Listener Has a Message for NEBULA           ! .LSAVA
        !-------------------------------------------------------!
        !                                                       !
        /                                                       /
        /               Listener AC Save Area                   / .LSREG
        /                                                       /
        !                                                       !
        !-------------------------------------------------------!

Continued on the next page.
Continued from the previous page.

	!-------------------------------------------------------!
        !                                                       !
        /                                                       /
        /                   Listener Stack                      / .LSPDL
        /                                                       /
	!                                                       !
        !-------------------------------------------------------!
        !                 Listener's Fork Handle                ! .LSHND
        !-------------------------------------------------------!
        !                    DECnet Link JFN                    ! .LSJFN
        !-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/          Listener's DECnet Device Name (SRV:)         / .LSSRV
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/                  Debugging User Name                  / .LSDBW
	/                                                       /
	!                                                       /
	!-------------------------------------------------------!
	!                 Byte Pointer for $TEXT                ! .LSBTP
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/               GLXLIB Initialization Block             / .LSIBK
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/                PID Initialization Block               / .LSPIB
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!                                                       !
	/                 Interrupt Level Table                 / .LSLEV
	!                                                       !
	!-------------------------------------------------------!
	!            Interrupt Level 1 PC Save Block            ! .LS1PC
	!-------------------------------------------------------!
	!            Interrupt Level 2 PC Save Block            ! .LS2PC
        !-------------------------------------------------------!
	!            Interrupt Level 3 PC Save Block            ! .LS3PC
	!-------------------------------------------------------!

Continued on the next page
Continued from the previous page

	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/               MUTIL% JSYS Argument Block              / .LSMUT
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!                                                       !
	/              Stopcode Processing Save Block           / .LSERR
	!                                                       !
        !=======================================================!

\

;LISTENER DATA BASE DEFINITIONS

	PHASE	0

.LSMSG:! BLOCK	1			;ADDRESS OF MESSAGE BUFFER
.LSNTA:! BLOCK	1			;NODE TABLE ENTRY ADDRESS
.LSNME:! BLOCK  1			;SIXBIT REMOTE NODE NAME
.LSANN:! BLOCK	2			;ASCIZ REMOTE NODE NAME
.LSUSR:! BLOCK	^D8			;REMOTE SENDER NAME
.LSSNE:! BLOCK	4			;DECNET SENDER NAME
.LSOPT:! BLOCK  4			;DECNET SENDER OPTIONAL DATA
.LSHWD:! BLOCK	1			;LISTENER MESSAGE QUEUE HEADER WORD
.LSTWD:! BLOCK	1			;LISTENER MESSAGE QUEUE TRAILER WORD
.LSUSM:! BLOCK	1			;NUMBER OF MESSAGE QUEUE ENTRIES
.LSLNK:! BLOCK	1			;STATUS OF THE DECNET LINK
.LSAVA:! BLOCK	1			;MESSAGE AVAILABLE FLAG
.LSREG:! BLOCK	20			;LISTENER AC SAVE AREA
.LSPDL:! BLOCK	^D200			;[4]LISTENER CONTEXT PDL.
.LSHND:! BLOCK	1			;LISTENER'S PROCESS HANDLE
.LSJFN:! BLOCK	1			;DECNET LOGICAL LINK JFN
.LSSRV:! BLOCK	6			;[4]DECNET DEVICE NAME
.LSDBW:! BLOCK	8			;[5]DEBUG USER NAME
.LSBTP:! BLOCK	1			;BYTE POINTER FOR $TEXT
.LSIBK:! BLOCK	IB.SZ			;GLXLIB INITIALIZATION BLOCK
.LSPIB:! BLOCK	PB.MNS			;PID INITIALIZATION BLOCK
.LSLEV:! BLOCK	3			;INTERRUPT LEVEL TABLE
.LS1PC:! BLOCK	1			;INTERRUPT LEVEL 1 PC SAVE BLOCK
.LS2PC:! BLOCK	1			;INTERRUPT LEVEL 2 PC SAVE BLOCK
.LS3PC:! BLOCK 	1			;INTERRUPT LEVEL 3 PC SAVE BLOCK
.LSMUT:! BLOCK	3			;MUTIL% ARGUMENT BLOCK
.LSERR:! BLOCK	2			;STOPCODE PROCESSING SAVE BLOCK

DBLED:!					;END OF DEFINED LISTENER DATA BASE

	DEPHASE
	SUBTTL	SENDER DATA BASE DEFINITIONS

COMMENT \

          Each sender has a two page sender block.   The  sender
     block  is shared between the top fork and the sender.  The first page
     has the following format:

        !=======================================================!
        !                 Message Buffer Address                ! .SNMSG
        !-------------------------------------------------------!
	!		 Node Table Entry Address		! .SNNTA
        !-------------------------------------------------------!
	!                    Remote Node Name                   ! .SNNME
	!-------------------------------------------------------!
        !          Message Queue Link List Header Word          ! .SNHWD
	!-------------------------------------------------------!
        !          Message Queue Link List Trailer Word         ! .SNTWD
        !-------------------------------------------------------!
        !               Number of Unsent Messages               ! .SNUSM
	!-------------------------------------------------------!
        !               Status of the DECnet Link               ! .SNLNK
        !-------------------------------------------------------!
        !         Free to Send a Message to the Listener        ! .SNFRE
        !-------------------------------------------------------!
        !                                                       !
        /                                                       /
        /                 Sender AC Save Area                   / .SNREG
        /                                                       /
        !                                                       !
        !-------------------------------------------------------!
        !                                                       !
        /                                                       /
        /                     Sender Stack                      / .SNPDL
        /                                                       /
	!                                                       !
        !-------------------------------------------------------/
        !                  Sender's Fork Handle                 ! .SNHND
        !-------------------------------------------------------!
        !                    DECnet Link JFN                    ! .SNJFN
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/                DECnet DCN: Device Name                / .SNDCN
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!

Continued on the next page.
Continued from the previous page.

	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/                  Debugging User Name                  / .SNDBW
	/                                                       /
	!                                                       /
	!-------------------------------------------------------!
	!                 Byte Pointer for $TEXT                ! .SNBTP
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/               GLXLIB Initialization Block             / .SNIBK
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/                PID Initialization Block               / .SNPIB
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!                                                       !
	/                 Interrupt Level Table                 / .SNLEV
	!                                                       !
	!-------------------------------------------------------!
	!            Interrupt Level 1 PC Save Block            ! .SN1PC
	!-------------------------------------------------------!
	!            Interrupt Level 2 PC Save Block            ! .SN2PC
        !-------------------------------------------------------!
	!            Interrupt Level 3 PC Save Block            ! .SN3PC
	!-------------------------------------------------------!
	!        Time Between DECnet Connection Attempts        ! .SNTIM
	!-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/               MUTIL% JSYS Argument Block              / .SNMUT
	/                                                       /
	!                                                       !
	!-------------------------------------------------------!
	!              Checksum Enable/Disable Flag             ! .SNCHS
	!-------------------------------------------------------!
	!                                                       !
	/              Stopcode Processing Save Block           / .SNERR
	!                                                       !
        !=======================================================!

\
;SENDER DATA BASE DEFINITIONS

	PHASE	0

.SNMSG:! BLOCK	1			;ADDRESS OF MESSAGE BUFFER
.SNNTA:! BLOCK	1			;NODE TABLE ENTRY ADDRESS
.SNNME:! BLOCK	1			;REMOTE NODE NAME
.SNHWD:! BLOCK	1			;MESSAGE QUEUE LINK LIST HEADER WORD
.SNTWD:! BLOCK  1			;MESSAGE QUEUE LINK LISTS TRAILER WORD
.SNUSM:! BLOCK	1			;NUMBER OF MESSAGES IN MESSAGE QUEUE
.SNLNK:! BLOCK	1			;STATUS OF THE DECNET LINK
.SNFRE:! BLOCK	1			;MESSAGE AVAILABLE FLAG
.SNREG:! BLOCK	20			;SENDER AC SAVE AREA
.SNPDL:! BLOCK	^D200			;SENDER CONTEXT PDL.
.SNHND:! BLOCK	1			;SENDER'S PROCESS HANDLE
.SNJFN:! BLOCK	1			;DECNET LOGICAL LINK JFN
.SNDCN:! BLOCK	^D20			;[4]DECNET DEVICE NAME
.SNDBW:! BLOCK	8			;[5]DEBUG USER NAME
.SNBTP:! BLOCK	1			;BYTE POINTER FOR $TEXT
.SNIBK:! BLOCK	IB.SZ			;GLXLIB INITIALIZATION BLOCK
.SNPIB:! BLOCK	PB.MNS			;PID INITIALIZATION BLOCK
.SNLEV:! BLOCK	3			;INTERRUPT LEVEL TABLE
.SN1PC:! BLOCK	1			;INTERRUPT LEVEL 1 PC SAVE BLOCK
.SN2PC:! BLOCK	1			;INTERRUPT LEVEL 2 PC SAVE BLOCK
.SN3PC:! BLOCK 	1			;INTERRUPT LEVEL 3 PC SAVE BLOCK
.SNTIM:! BLOCK	1			;TIME BETWEEN DECNET CONNECTION ATTEMPTS
.SNMUT:! BLOCK	3			;MUTIL% ARGUMENT BLOCK
.SNCKS:! BLOCK	1			;CHECKSUM ENABLE/DISABLE FLAG
.SNERR:! BLOCK	2			;STOPCODE PROCESSING SAVE BLOCK
DBSED:!					;END OF DEFINED SENDER DATA BASE 

	DEPHASE
	SUBTTL	TABLE OF PREVIOUSLY AND CURRENTLY KNOWN NODES

COMMENT \

The table of previously and currently known (remote) nodes (PACKN) is used
to support the following OPR commands:
1. SHOW CLUSTER-GALAXY-LINK-STATUS
2. ENABLE/DISABLE DECNET-CONNECTION-ATTEMPTS
3. ENABLE/DISABLE REPORT-CONNECTION-FAILURES

Every remote node that has ever been known to NEBULA has an 
entry in this table. The DECnet link status of the sender and listener is
kept in this table as well as whether the reporting of the sender's attempt
to obtain a DECnet connection should be reported to ORION or not and also
whether the sender should continue to attempt to obtain a DECnet connection
or not.

	!=======================================================!
	!                  SIXBIT node name                     ! .NDNAM
        !-------------------------------------------------------!
	!            DECnet Connection Status Word              ! .LKSTS
	!=======================================================!

\
	PHASE 0

.NDNAM:	BLOCK	1			;SIXBIT REMOTE NODE NAME
.LKSTS:	BLOCK	1			;SENDER/LISTENER DECNET STATUS
   LK%DIS==1B0				;DISABLE LINK ATTEMPT REPORTING
   LK%CCA==1B1				;DISABLE OBTAINING A LINK
   LK%SEN==1B2				;SENDER HAS (OR HAS HAD) A CONNECTION
   LK%LIS==1B3                          ;LISTENER HAS (OR HAS HAD) A CONNECTION
.NDLSZ:					;SIZE OF A PACKN ENTRY
	DEPHASE
	SUBTTL	TIMER LIST

COMMENT \

A timer is set for every message that is sent to a remote node and for
which a response is expected. If the timer goes off and there has been no
response, then it is assumed that communication with the remote node
has been lost. However, if a response is received from the remote node
before the timer has gone off, then the timer is turned off.
In order to identify the response with the original message, the ACK
code (.MSCOD) of the original message is kept on the timer list for that
node. In addition, the time at which the timer goes off is also kept so 
that if the response is received before the timer goes off, then the timer
can be turned off using the saved time by means of the timer function .TIMDD

        !=======================================================!
        !                ACK Code of the Message                ! .TMACK
        !-------------------------------------------------------!
        !            Time the Timer is Set to Go Off            ! .TMUDT
        !=======================================================!

\
	PHASE 0

.TMACK:	BLOCK 1				;ACK CODE (.MSCOD) OF MESSAGE
.TMUDT:	BLOCK 1				;TIME THE TIMER IS TO GO OFF
.TMSIZ:					;SIZE OF THE TIME LIST ENTRY
	DEPHASE
	SUBTTL	MESSAGE QUEUE (MSGQUE)

COMMENT \


     NEBULA queues IPCF messages that are to be  forwarded  to  remote
     nodes in the cluster on the message queue.  A message queue entry
     has the following format:

        !=======================================================!
        !          MQ.OFF           !          MQ.NEA           ! .MQBLK
        !-------------------------------------------------------!
        /                                                       /
        /                                                       /
        /                                                       /
        !-------------------------------------------------------!
        !          MQ.OFF           !          MQ.NEA           ! .MQBLK
        !-------------------------------------------------------!
        !FLAGS!    MQ.NUM           !          MQ.ADR           ! .MQNOM
	!-------------------------------------------------------!
	!FLAGS!    MQ.LEN           !          MQ.PTR           ! .MQMEM
	!-------------------------------------------------------!
	!                 PID of the EXEC sender                ! .MQPID
        !=======================================================!


      Each node that the message is to be sent to  will  have  the
     message  in  that  node's  message queue.  Words .MQBLK are link
     list words for each node the message is to be sent to.
      Note: If bit MQ%PAG is turned on, then this indicates that the
     message plus entry size is greater than a page. Therefore, the
     message is allocated a page of memory and it is not in general
     contiguous to the message queue entry. If bit MQ%PAG is not turned on,
     then this indicates that the message plus queue entry size 
     is less than or equal to a page in length which means that the
     message and message queue entry are located contiguously in memory.
\

            PHASE  0
.MQBLK:! BLOCK 1                        ;MESSAGE QUEUE LINK LIST WORD
        MQ.OFF==-1,,0                   ;WORD OFFSET TO WORD .MQNOM
        MQ.NEA==0,,-1                   ;ADDRESS OF NEXT MESSAGE QUEUE ENTRY
                                        ; FOR THIS SENDER
.MQBSZ:!                                ;MESSAGE QUEUE LINK LIST WORD SIZE
            DEPHASE

             PHASE  0
.MQNOM:! BLOCK 1                        ;NUMBER OF NODES/MESSAGE ADDRESS
	MQ.FLG==7B2			;MESSAGE ATTRIBUTE INFORMATION
	   MQ%IBH==1B0			;MSG IS RESPONSE TO IN BEHALF OF MSG
	   MQ%REM==1B1                  ;MSG HAS AN ENTRY IN THE REMOTE QUEUE
	   MQ%EXE==1B2			;MESSAGE IS FROM THE EXEC
        MQ.NUM==77777B17                ;NUMBER OF NODES THE MESSAGE STILL 
                                        ;NEEDS TO BE SENT TO
        MQ.ADR==0,,-1                   ;ADDRESS OF THE MESSAGE
.MQMEM:! BLOCK 1                        ;GLXMEM MEMORY MANAGEMENT INFORMATION
	   MQ%PAG==1B0			;THE MESSAGE OCCUPIES A PAGE
	MQ.LEN==377777B17		;LENGTH OF GLXMEM BLOCK SIZE
	MQ.PTR==0,,-1			;ADDRESS OF GLXMEM BLOCK SIZE
.MQPID:! BLOCK 1			;[10]PID OF AN EXEC SENDER
.MQISZ:!                                ;INVARIANT BLOCK SIZE
             DEPHASE
	SUBTTL	REMOTE QUEUE (REMQUE)

COMMENT \
          The  remote  queue  contains  entries  that  correspond   to
     "remote"  messages  whose  responses from a remote NEBULA must be
     evaluated by NEBULA.  When such a message is received by  NEBULA,
     in  addition  to placing the message on the message queue, NEBULA
     also creates a remote queue entry for  the  message.   Currently,
     there  is  only  one  type  of  remote  queue  entry.  This entry
     corresponds to REMOTE DISMOUNT messages.  The format of a  remote
     queue entry is:

        !=======================================================!
        !          RQ.OFF           !          RQ.NEA           ! .RQBLK
        !-------------------------------------------------------!
        /                                                       /
        /                                                       /
        /                                                       /
        !-------------------------------------------------------!
        !          RQ.OFF           !          RQ.NEA           ! .RQBLK
        !-------------------------------------------------------!
	!          RQ.PRE           !          RQ.NXT           ! .RQLNK
	!-------------------------------------------------------!
	!          RQ.LEN           !          RQ.ADR           ! .RQMEM
	!-------------------------------------------------------!
        !            Time Stamp Message Was Received            ! .RQTSP
        !-------------------------------------------------------!
        !                      Message Type                     ! .RQMST
        !-------------------------------------------------------!
        !                 SIXBIT Structure Name                 ! .RQSTN
        !-------------------------------------------------------!
        !                    MOUNTR ACK Code                    ! .RQACK
        !-------------------------------------------------------!
        !                      Status Word                      ! .RQSTS
        !-------------------------------------------------------!
        !          RQ.NTS           !          RQ.NOR           ! .RQNUM
	!=======================================================!
        !          RQ.SOM           !          RQ.ERR           ! .RQNST
        !-------------------------------------------------------!
        !                    SIXBIT Node Name                   ! .RQNDN
	!=======================================================!
        /                                                       /
        /                                                       /
        /                                                       /
	!=======================================================!
        !          RQ.SOM           !          RQ.ERR           ! .RQNST
        !-------------------------------------------------------!
        !                    SIXBIT Node Name                   ! .RQNDN
	!=======================================================!

\
             PHASE 0
.RQBLK:! BLOCK  1                       ;NODE REMOTE QUEUE LINK LIST WORD
        RQ.OFF==-1,,0                   ;WORD OFFSET TO WORD .RQLNK
        RQ.NEA==0,,-1                   ;ADDRESS OF NEXT REMOTE QUEUE ENTRY
                                        ; FOR THIS NODE
.RQBSZ:!                                ;NODE REMOTE QUEUE LINK LIST WORD SIZE
             DEPHASE

             PHASE 0	 
.RQLNK:! BLOCK 1			;GLOBAL REMOTE QUEUE LINK LIST WORD
	RQ.PRE==-1,,0			;POINTER TO PREVIOUS GLOBAL REMOTE QE
	RQ.NXT==0,,-1			;POINTER TO NEXT GLOBAL REMOTE QE
.RQMEM:! BLOCK 1                        ;GLXMEM MEMORY MANAGEMENT INFORMATION
	RQ.LEN==-1,,0			;LENGTH OF GLXMEM BLOCK SIZE
	RQ.ADR==0,,-1			;ADDRESS OF GLXMEM BLOCK SIZE
.RQTSP:! BLOCK  1                       ;TIME REMOTE MESSAGE RECEIVED
.RQMST:! BLOCK  1                       ;MESSAGE TYPE
;       .NRDSM==300001                  ;REMOTE DISMOUNT MESSAGE
.RQSTN:! BLOCK  1                       ;SIXBIT NAME OF STRUCTURE TO DISMOUNT
.RQACK:! BLOCK  1                       ;ACK CODE FROM REMOTE DISMOUNT MESSAGE
.RQSTS:! BLOCK  1                       ;STATUS OF THE REQUEST
        RQ%CAN==1B0                     ;DISMOUNT REQUEST CANCELED
	RQ%SEC==1B1			;SET STRUCTURE EXCLUSIVE CANCELLED
	RQ%SEX==1B2			;DISMOUNT DUE SET STRUCTURE EXCLUSIVE
	RQ%DIS==1B3			;DISMOUNT DUE DISMOUNT/REMOVAL
.RQNUM:! BLOCK  1                       ;NUMBER OF NODES/OUTSTANDING RESPONSES
        RQ.NTS==-1,,0                   ;NUMBER OF NODES IN REMOTE QUEUE ENTRY
        RQ.NOR==0,,-1                   ;NUMBER OF OUTSTANDING RESPONSES
.RQNIZ:!                                ;INVARIANT BLOCK SIZE
             DEPHASE

COMMENT \

          For each node that the REMOTE DISMOUNT message was sent  to,
     there is a two-word block in the remote queue entry. The first word,
     .RQNST, contains the status of the response for the REMOTE DISMOUNT
     message in its left half.  If bit RQ%TER, RQ%OER, RQ%QER, RQ%NEB
     or RQ%MER is turned on, then the right half of word .RQNST contains
     an error code. (Note: before a response is received from the node
     the right half of word .RQNST contains the address of the preceding
     Remote Queue entry for that node.)
     The second word, .RQNDN, contains the SIXBIT node name that the message
     was sent to.
\
             PHASE 0

.RQNST:! BLOCK  1                       ;STATUS OF MESSAGE SENT TO NODE
        RQ.SOM==-1,,0                   ;STATUS OF THE MESSAGE
               RQ%SNR==1B0              ;RESPONSE NOT YET RECEIVED FROM NODE
               RQ%SSD==1B1              ;STRUCTURE SUCCESSFULLY DISMOUNTED 
               RQ%SNH==1B2              ;SENDER WAITING FOR HELLO RESPONSE
               RQ%LNH==1B3              ;LISTENER HAS NOT RECEIVED HELLO MSG
               RQ%SLD==1B4              ;SENDER AND/OR LISTENER HAVE CRASHED
               RQ%NSN==1B5              ;NO SUCH NODE
               RQ%PSM==1B6              ;PRE-RELEASE 7 MONITOR
               RQ%NDC==1B7              ;DECNET NOT ENABLED
               RQ%SCS==1B8              ;SCS% DETECTED NODE LEFT THE CLUSTER
               RQ%COI==1B9              ;INFO% UNABLE OBTAIN SOFTWARE ENVIRMENT
	       RQ%CIT==1B10		;DISMOUNT CANCELLED IN TIME 
               RQ%TER==1B11             ;MONITOR ERROR DISMOUNTING STRUCTURE
               RQ%OER==1B12             ;ORION ERROR
               RQ%QER==1B13             ;QUASAR ERROR
               RQ%NER==1B14             ;NEBULA ERROR
               RQ%MER==1B15		;MOUNTR ERROR
        RQ.ERR==0,,-1                   ;ERROR CODE OR ADR OF PRECEDING RQE
.RQNDN:! BLOCK  1                       ;SIXBIT NODE NAME THAT MSG WAS SENT TO
.RQNSZ:!                                ;REMOTE NODE ENTRY SIZE
             DEPHASE
	SUBTTL	IN BEHALF OF QUEUE (IBOQUE)

COMMENT \

          The in behalf of queue is used by NEBULA to correlate an  in
     behalf  of  message  response  with the original "remote" request
     that came from a remote NEBULA.  The in behalf of queue entry has
     the following format:

        !=======================================================!
        !          IQ.PRE           !          IQ.NXT           ! .IQLNK
        !-------------------------------------------------------!
        !                   Remote NEBULA ACK                   ! .IQRNA
        !-------------------------------------------------------!
        !                    Local NEBULA ACK                   ! .IQLNA
        !-------------------------------------------------------!
        !            SIXBIT "In Behalf Of" Node Name            ! .IQNEN
        !-------------------------------------------------------!
	!                 PID of the EXEC sender                ! .IQPID
        !=======================================================!

\
        PHASE 0
.IQLNK:! BLOCK  1	                  ;LINK LIST WORD
	IQ.PRE==-1,,0			  ;ADDRESS OF PREVIOUS ENTRY
	IQ.NXT==0,,-1			  ;ADDRESS OF NEXT ENTRY
.IQRNA:! BLOCK  1              	          ;ORIGINAL ACK CODE FROM REMOTE MSG
.IQLNA:! BLOCK  1                         ;ACK CODE FROM IN BEHALF OF MSG
.IQNEN:! BLOCK  1                         ;SIXBIT NODE NAME THAT SENT REMOTE MSG
.IQPID:! BLOCK	1			  ;[10]PID OF THE EXEC SENDER
.IQSIZ:!                                  ;IN BEHALF OF QUEUE ENTRY SIZE
        DEPHASE
	SUBTTL	NODE NAME BLOCK

COMMENT \

     The messages of type "remote" have a node name (.NDENM) block.
     message block, the .NDENM block. This block specifies the remote
     node the message is to be sent to. (If the node name field contains
     -1, then this indicates that the mesage is to be forwarded to
     all the remote nodes in the cluster.)

             !=======================================================!
             !        BLOCK SIZE         !          .NDENM           ! ARG.HD
             !-------------------------------------------------------!
             !                   SIXBIT Node name                    ! ARG.DA
             !=======================================================!

     where

     ARG.HD==0  is the block header word. The left  half contains  the
                size of the  block  and  the  right  half contains the
                block type code, .NDENM==30002.
     ARG.DA==1  is the block data word. This block contains the SIXBIT
                node name that the message is to be forwarded to.

\
	.NDENM==30002			;BLOCK TYPE CODE
	  .NDESZ==2			;SIZE OF THE NODE BLOCK
	SUBTTL	REMOTE DISMOUNT MESSAGE

COMMENT \

This message is sent by MOUNTR to ORION to dismount a structure with
NO-REMOVAL from one or more remote nodes.

        !=======================================================!
        !      Message Length       !         .NRDSM            ! .MSTYP
        !-------------------------------------------------------!
        !MF.NEB                                                 ! .MSFLG
        !-------------------------------------------------------!
        !               MOUNTR's Acknowledgement code           ! .MSCOD
        !=======================================================!
        !.DMSIS or .DMSEX                                       ! .OFLAG
        !-------------------------------------------------------!
        !                  Argument Count Word                  ! .OARGC
        !=======================================================!
        !         AR.LEN            !          .STRDV           ! ARG.HD
        !-------------------------------------------------------!
        !                 ASCIZ Structure name                  ! ARG.DA
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!
        /                                                       /
        /                                                       /
        /                                                       /
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!

                                   
The .MSFLG word has the following bit set:

MF.NEB==1B5     The "NEBULA" bit. This  bit turned on  indicates  to the
                remote  QUASAR  (and  remote  MOUNTR) that this dismount 
                request  came  from  NEBULA  (i.e., is a remote dismount
                request). This bit is turned on in flag word .MSFLG.

The .OFLAG word has one of the following bits set:

.DMSEX==1B5     Message result of a SET STRUCTURE EXCLUSIVE
.DMDIS==1B6     Message result of a DISMOUNT/REMOVAL

.STRDV==20002   Structure name block. The ASCIZ name of the structure
	        that is to be dismounted.
.NDENM==30002   Node name block. This block contains the SIXBIT node
                name of a remote node that the structure is to be 
                dismounted from. There will be one such block for each node
                the structure is to be dismounted from.
  .NDESZ==2     Size of the node name block
\

.DMSEX==1B5				;MESSAGE DUE SET STRUCTURE EXCLUSIVE
.DMDIS==1B6				;MESSAGE DUE DISMOUNT/REMOVAL
					
	SUBTTL	TO NEBULA DISMOUNT MESSAGE

COMMENT \

This message is sent by ORION on behalf of MOUNTR to NEBULA to dismount
with no removal the structure indicated in the  message  from the nodes
indicated in the message.

        !=======================================================!
        !      Message Length       !         .NTDSM            ! .MSTYP
        !-------------------------------------------------------!
        !MF.NEB                                                 ! .MSFLG
        !-------------------------------------------------------!
        !               MOUNTR's Acknowledgement code           ! .MSCOD
        !=======================================================!
        !.DMSIS or .DMSEX                                       ! .OFLAG
        !-------------------------------------------------------!
        !                  Argument Count Word                  ! .OARGC
        !=======================================================!
        !         AR.LEN            !          .STRDV           ! ARG.HD
        !-------------------------------------------------------!
        !                 ASCIZ Structure name                  ! ARG.DA
        !=======================================================!
        !         .NDESZ            !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!
        /                                                       /
        /                                                       /
        /                                                       /
        !=======================================================!
        !             2             !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!


.STRDV          Structure name block. This block contains the ASCIZ
                structure name of the structure to be dismounted.  
.NDENM          Node name block. This block contains the SIXBIT node
                name of a remote node that the structure is to be 
                dismounted from. There is one such block for each node
                the structure is to be dismounted from.
\
	SUBTTL	FROM NEBULA DISMOUNT MESSAGE

COMMENT \

     NEBULA forwards this message to the nodes  indicated  by  the
.NDENM  blocks.   Before it does this, however, it deletes all the
node name blocks and replaces them with a single node  name  block
which contains  the  local node name (i.e., the node name of the
node requesting the dismount.) It also changes the message code to
FROM NEBULA DISMOUNT message.  The format of this message is:

        !=======================================================!
        !      Message Length       !         .NFDSM            ! .MSTYP
        !-------------------------------------------------------!
        !MF.NEB                                                 ! .MSFLG
        !-------------------------------------------------------!
        !               MOUNTR's Acknowledgement code           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !                           2                           ! .OARGC
        !=======================================================!
        !             2             !          .STRDV           ! ARG.HD
        !-------------------------------------------------------!
        !                 ASCIZ Structure name                  ! ARG.DA
        !=======================================================!
        !             2             !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !        SIXBIT node name of the requesting node        ! ARG.DA
        !=======================================================!


.STRDV         Structure  block  name. The ASCIZ  name  of the structure
               that  is to be dismounted.  
.NDENM         Node name block. This block contains the SIXBIT node name
               of the  node that  the dismount request originated from.
\
	SUBTTL	 FROM NEBULA DISMOUNT ACK MESSAGE

COMMENT \

     MOUNTR, after processing a (remote) dismount message, sends
to  ORION  a message of type FROM NEBULA DISMOUNT ACK message.  (Note:
the ACK code in word .MSCOD is the same one NEBULA used  in  its  FROM
NEBULA  DISMOUNT message.) If the dismount was successful, then the FROM
NEBULA DISMOUNT ACK message has the following format:

        !=======================================================!
        !      Message Length       !         .NFDAK            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !               NEBULA's Acknowledgement code           ! .MSCOD
        !=======================================================!
        !SU%NOE                                                 ! .OFLAG
        !-------------------------------------------------------!
        !                           0                           ! .OARGC
        !=======================================================!


SU%NOE==1B0     This bit set indicates that MOUNTR successfully 
                dismounted the structure.

There are no argument blocks.
\
SU%NOE==1B0				;STRUCTURE SUCCESSFULLY DISMOUNTED

COMMENT \

     If the dismount was unsuccessful, then the FROM  NEBULA  DISMOUNT
ACK message has the following format:

        !=======================================================!
        !      Message Length       !         .NFDAK            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !               NEBULA's Acknowledgement code           ! .MSCOD
        !=======================================================!
        !                   Error Indication                    ! .OFLAG
        !-------------------------------------------------------!
        !                           1                           ! .OARGC
        !=======================================================!
        !             2             !          .ERRBK           ! ARG.HD
        !-------------------------------------------------------!
        !                       error code                      ! ARG.DA
        !=======================================================!


Word .OFLAG indicates the error:

FA%TER==1B1     This bit turned on indicates that the dismount failed 
                due to a monitor error.
FA%MER==1B2     This bit turned on indicates that the dismount failed
                due to a MOUNTR error.

     (Note:  It may turn out that (the remote) QUASAR, ORION or NEBULA
may  detect  an  error  while processing a DISMOUNT request.  In these
cases, the component detecting the  error sends  to  the  remote
NEBULA  a  FROM NEBULA DISMOUNT ACK message (in the case of the remote
QUASAR, the remote QUASAR sends the message to  the  remote  ORION
which forwards the message to the remote NEBULA).  The .OFLAG word
indicates which component detected the error as follows:

FA%OER==1B3    This bit turned on indicates that the dismount failed
               due to an ORION error.
FA%QER==1B4    This bit turned on indicates that the dismount failed
               due to a QUASAR error.
FA%NER==1B5    This bit turned on indicates that the dismount failed
               due to a NEBULA error.

.ERRBK==30001   Error block.  This  block returns the error code of
                the remote GALAXY component that detected the error.
  .ERRSZ==2     Size of the error block

      o  The remote  ORION forwards  this  message  without  any
         changes to the remote NEBULA.

      o  The remote NEBULA  replaces the  ACK  code  with  MOUNTR's
         original  ACK  code.  The remote NEBULA  then forwards the
         message to NEBULA.

\

;WORD .OFLAG  INDICATES THE ERROR

NF.VER==77B5				;ERROR BIT FIELD
FA%TER==1B1   				;REMOTE MONITOR ERROR
FA%MER==1B2				;REMOTE MOUNTR ERROR
FA%OER==1B3				;REMOTE ORION ERROR
FA%QER==1B4				;REMOTE QUASAR ERROR
FA%NER==1B5				;REMOTE NEBULA ERROR


.ERRBK==30001 				;MESSAGE CODE
  .ERRSZ==2              		;ERROR BLOCK CODE
	SUBTTL	TO NEBULA DISMOUNT ACK MESSAGE
Comment \

     NEBULA, after  all  the  FROM  NEBULA  DISMOUNT  ACKS  have  been
received, builds a TO NEBULA DISMOUNT ACK message.  The TO NEBULA
DISMOUNT ACK message has the following format:

        !=======================================================!
        !      Message Length       !         .NTDAK            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !               MOUNTR's Acknowledgement code           ! .MSCOD
        !=======================================================!
        !               Status of the Dismount Request          ! .OFLAG
        !-------------------------------------------------------!
        !                  Argument Count Word                  ! .OARGC
        !=======================================================!
        !           .STRLN          !          .STRNM           ! ARG.HD
        !-------------------------------------------------------!
        !                 SIXBIT Structure Name                 ! ARG.DA
        !=======================================================!
        !    Status Block Length    !          .STSBK           ! ARG.HD
        !-------------------------------------------------------!
        !                    SIXBIT Node Name                   ! .STNNE
        !-------------------------------------------------------!
        !           ST.SOM          !          ST.ERR           ! .STNST
	!-------------------------------------------------------!
        /                                                       /
        /                                                       /
        /                                                       /
        !-------------------------------------------------------!
        !                    SIXBIT Node Name                   ! .STNNE
        !-------------------------------------------------------!
        !           ST.SOM          !          ST.ERR           ! .STNST
        !=======================================================!

The .OFLAG can have the following bits turned on:

DS%CAN==1B0     The DISMOUNT request was cancelled
DS%SEC==1B1	The SET EXCLUSIVE was cancelled
DS%SUC==1B2     The structure was successfully dismounted from all remote nodes
DS%FAI==1B3     The structure was not dismounted from one or more nodes
DS%SEX==1B4     The DISMOUNT was due to a SET STRUCTURE EXCLUSIVE
DS%DIS==1B5     The DISMOUNT was due to a DISMOUNT/REMOVAL
.STRNM          SIXBIT structure name block. This block contains the SIXBIT
                name of the structure whose dismount was attempted
.STSBK          Status block. This block gives the result of the
                dismount  request  for each node the dismount request was
                given for.

     ORION forwards the TO NEBULA DISMOUNT ACK message  to  MOUNTR
but  changes   the   message   code   to  REMOTE  DISMOUNT  ACK
(.NRDAK==300006).

\

;THE .OFLAG WORD CAN HAVE THE FOLLOWING BITS TURNED ON:

DS%CAN==1B0     			;THE DISMOUNT REQUEST WAS CANCELLED
DS%SEC==1B1                             ;THE SET EXCLUSIVE WAS CANCELLED
DS%SUC==1B2     			;STRUCTURE SUCCESSFULLY DISMOUNTED
DS%FAI==1B3  	  			;STRUCTURE NOT DISMOUNTED FROM ALL NODES
DS%SEX==1B4     			;DISMOUNT DUE TO SET STRUCTURE EXCLUSIVE
DS%DIS==1B5     			;DISMOUNT DUE TO A DISMOUNT/REMOVAL

.STRNM==30001				;SIXBIT STRUCTURE NAME BLOCK
  .STRLN==2				;LENGTH OF THE SIXBIT NAME BLOCK 

.STSBK==30003   			;STATUS BLOCK CODE

	PHASE 0

.STNNE:	BLOCK 1				;SIXBIT NODE NAME
.STNST: BLOCK 1				;STATUS BLOCK
	ST.SOM=-1,,0			;STATUS FIELD
               ST%SSD==1B1              ;STRUCTURE SUCCESSFULLY DISMOUNTED 
               ST%SNH==1B2              ;SENDER HAS NOT SENT HELLO MESSAGE
               ST%LNH==1B3              ;LISTENER HAS NOT RECEIVED HELLO MSG
               ST%SLD==1B4              ;SENDER/LISTENER ARE CRASHED
               ST%NSN==1B5              ;NO SUCH NODE
               ST%PSM==1B6              ;PRE-RELEASE 7 MONITOR
               ST%NDC==1B7              ;DECNET NOT ENABLED
               ST%SCS==1B8              ;NODE CRASHED AND CAME BACK
               ST%COI==1B9              ;INFO% CAN'T OBTAIN SOFTWARE ENVIRONMENT
               ST%CAN==1B10             ;DISMOUNT CANCELLED IN TIME
               ST%TER==1B11             ;MONITOR ERROR DISMOUNTING STRUCTURE
               ST%OER==1B12             ;ORION ERROR
               ST%QER==1B13             ;QUASAR ERROR
               ST%NER==1B14             ;NEBULA ERROR
               ST%MER==1B15		;MOUNTR ERROR
	ST.ERR=0,,-1			;ERROR CODE

.STSLN:					;LENGTH OF A STATUS BLOCK FIELD
	DEPHASE
	SUBTTL	NEBULA CANCEL DISMOUNT MESSAGE

Comment \

     This message is sent by MOUNTR to ORION to cancel  a  REMOTE
DISMOUNT  message or as a result of setting a structure shared that was
in the process of being SET EXCLUSIVE. ORION  forwards this message,
as is, to NEBULA. The format of the message is:

        !=======================================================!
        !      Message Length       !         .NCDSM            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !               MOUNTR's Acknowledgement code           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !                  Argument Count Word                  ! .OARGC
        !=======================================================!

Word .OFLAG has one of the following bits turned on:

  NC%CDM==1B0   Cancel a dismount
  NC%CSE==1B1   Cancel a SET STRUCTURE EXCLUSIVE

      o  The ACK code is  the  same  as  the  one  that  MOUNTR
         orginally sent in its REMOTE DISMOUNT message.

      o  Bit NC%CSE  is  set  if  the  NEBULA  CANCEL  DISMOUNT  is  a
         consequence   of   processing  an  OPR>SET  STRUCTURE  SHARED
         command.

      o  These bits must correspond in value to those of the .RQSTS word
         of the remote queue entry.
         
\

  NC%CDM==1B0   		;CANCEL A DISMOUNT
  NC%CSE==1B1   		;CANCEL A SET STRUCTURE EXCLUSIVE
	SUBTTL	TO NEBULA MOUNT MESSAGE

COMMENT \

 This message is sent  by  ORION  to  NEBULA  when  ORION receives a
message that resulted from a OPR>MOUNT STRUCTURE FOO:/NODE:BAR command.
The format of the message is:

        !=======================================================!
        !      Message Length       !         .NTMTS            ! .MSTYP
        !-------------------------------------------------------!
        !MF.NEB!MF.WTO                                          ! .MSFLG
        !-------------------------------------------------------!
        !                   Acknowledgement code                ! .MSCOD
        !=======================================================!
        !                        .MTSID                         ! .OFLAG
        !-------------------------------------------------------!
        !                        .TNNMB                         ! .OARGC
        !=======================================================!
        !             n             !          .STALS           ! ARG.HD
        !-------------------------------------------------------!
        !                  ASCIZ  alias name                    ! ARG.DA
        !=======================================================!
        !             n             !          .STRDV           ! ARG.HD
        !-------------------------------------------------------!
        !                ASCIZ  Structure name                  ! ARG.DA
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                   SIXBIT node name                    ! ARG.DA
        !=======================================================!

  .TNNMB        Number of argument blocks
.STALS          Alias block.  This  block  contains the  structure alias
                name in ASCIZ. 
.STRDV          Structure block. This block will be optional and will be
                present only  if  the operator typed in  /STRUCTURE-ID:.
                This  bloc  contains  the structure name in ASCIZ.
.NDENM          Node name block. This block will contain the SIXBIT node
                name of the node that the structure is to be mounted on.

If  the operator  typed in /STRUCTURE-ID:, then the flag word .OFLAG has
the following bit set:

.MTSID==1B4     Command included /STRUCTURE-ID:

n is the block size in words, including the header word ARG.HD.
\
.TNNMB==3				;NUMBER OF ARGUMENT BLOCKS
	SUBTTL	FROM NEBULA MOUNT MESSAGE

COMMENT \


     NEBULA forwards the TO NEBULA MOUNT  message  to  the  remote
NEBULA  indicated  by  the node block.  NEBULA places the local node
name in the node name block and changes the message code to FROM
NEBULA MOUNT. This message has the same format as the .ODMTS
message that ORION normally sends to QUASAR. The format of the message is:

        !=======================================================!
        !      Message Length       !         .NFMTS            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !                Acknowledgement code                   ! .MSCOD
        !=======================================================!
        !                        .MTSID                         ! .OFLAG
        !-------------------------------------------------------!
        !                        .FNNMB                         ! .OARGC
        !=======================================================!
        !             n             !          .STALS           ! ARG.HD
        !-------------------------------------------------------!
        !                  ASCIZ  alias name                    ! ARG.DA
        !=======================================================!
        !             n             !          .STRDV           ! ARG.HD
        !-------------------------------------------------------!
        !                ASCIZ  Structure name                  ! ARG.DA
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                   SIXBIT node name                    ! ARG.DA
        !=======================================================!

   
.FNNMB          Number of argument blocks
.STALS          Alias block.  This  block  contains the  structure alias
                name in ASCIZ. 
.STRDV          Structure block. This block is optional and is
                present only  if  the operator typed in  /STRUCTURE-ID:.
                This  block contains  the structure name in ASCIZ.
If  the operator  typed in /STRUCTURE-ID:, then the flag word .OFLAG has
the following bit set:

.MTSID==1B4     Command included /STRUCTURE-ID:

n is the block size in words, including the header word ARG.HD.

.NDENM         This block contains the node name of the node that originated
               the mount request.

\

.FNNMB==3        		;NUMBER OF ARGUMENT BLOCKS
	SUBTTL	NEBULA SHOW MESSAGES' CODES

COMMENT \

If ORION receives an OPR SHOW message that was specified with the
/CLUSTER-NODE: switch, then it formats the message into the format expected
by (the remote) QUASAR or ORION. In addition, however, ORION appends
a node (.NDNME) block that specifies the node the message is to be
forwarded to. If the SHOW command was given with /CLUSTER-NODE:*,
then the node block contains -1 as its node name. In this case, the
SHOW message is sent to all remote nodes in the cluster and is also
processed locally.



.NMSHS - SHOW STATUS (.OMSHS)
.NDSCD - SHOW CONFIGURATION (.ODSCD)
.NMSHQ - SHOW QUEUES (.OMSHQ)
.NMSHP - SHOW PARAMETERS (.OMSHP)
.NMSHR - SHOW ROUTE (.OMSHR)
.NDSHT - [6]SHOW STATUS TAPE (.ODSHT)
.NDSHD - [6]SHOW STATUS DISK (.ODSHD)
.NDSTR - [7]SHOW STATUS STRUCTURE (.ODSTR)

\ ;End of comment
	SUBTTL	RESPONSE TO EXEC CANCEL MESSAGE

COMMENT \

The response to an EXEC CANCEL PRINT/DESTINATION request from a remote
QUASAR must have a different message code than .OMTXT so that the 
requestor's NEBULA can distinquish the response from an operator's 
request so that it can forward the response to the EXEC rather than to
ORION.

.NMTXT - [10]RESPONSE TO EXEC KILL REQUEST

\ ;End fo comment
	SUBTTL (TO NEBULA) SHOW OPERATORS MESSAGE

COMMENT \

This message is sent by ORION to NEBULA if ORION receives a SHOW message
(.OMSHS) from an OPR with keyword OPERATORS (.KYOPR) and a node switch
block (.SWNOD). The format of the message is:

        !=======================================================!
        !      Message Length       !         .NSHOP            ! .MSTYP
        !-------------------------------------------------------!
        !MF.NEB                                                 ! .MSFLG
        !-------------------------------------------------------!
        !           PID of OPR That Sent This Message           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !                  Argument Count Word                  ! .OARGC
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!

.NDENM==30002   Node name block. This block contains the SIXBIT node
                name of the node that the message is to be forwarded to.

 If the data field of the .NDENM block contains a -1, then the message
is to be routed to all remote nodes (and also processed locally).

\ ;End of Comment
	SUBTTL	(TO NEBULA) SHOW MESSAGE

COMMENT \
     This message is sent by ORION to NEBULA if ORION  receives
a  SHOW message (.OMSHS) from OPR with keyword MESSAGES (.KYMSG) and a
node switch block (.SWNOD).  The format of the message is:

        !=======================================================!
        !      Message Length       !         .NMESS            ! .MSTYP
        !-------------------------------------------------------!
        !MF.NEB                                                 ! .MSFLG
        !-------------------------------------------------------!
        !           PID Of OPR That Sent This Message           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !                  Argument Count Word                  ! .OARGC
        !=======================================================!
        !             2             !          .ORSEQ           ! ARG.HD
        !-------------------------------------------------------!
        !                    Message Number                     ! ARG.DA
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!

.NMESS==300017  message code
.NDENM==30002   Node name block. This block contains the SIXBIT node
                name of the node that the message is to be forwarded to.
.ORSEQ==103     The sequence number block. If the operator specified
                a  message  number,  then  this  block contains
                that number.

 If the data field of the .NDENM block contains -1, then the message is to
be routed to all the remote nodes in the cluster (and is also processed
locally).

\ ;End of comment
	SUBTTL  SHOW CLUSTER-GALAXY-LINK-STATUS MESSAGE

COMMENT \

     This message is sent by ORION to NEBULA when ORION  receives
a  SHOW  message (.OMSHS) from OPR with the keyword CLUSTERS (.KYCLU).
The format of the message is:

        !=======================================================!
        !      Message Length       !         .NSCLU            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !           PID Of OPR That Sent This Message           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !                Argument Block Count                   ! .OARGC
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!

.NSCLU==300024  Message code

     The node block (.NDENM) is present only if the  command  was
given with the /NODE:  switch.

\ ;End of comment
	SUBTTL	REMOTE SHOW ACK MESSAGE

COMMENT \
     In response to a SHOW message, the remote QUASAR or ORION builds a
SHOW ACK message that is similar to the QUASAR SHOW ACK (.OMACS) message
but includes an additional display (.ORDSP) blank which indicates the
node the message was created on. 

	!=======================================================!
	!     Message Length      !         .NMACS              ! .MSTYP
	!-------------------------------------------------------!
        !MF.NEB                                                 ! .MSFLG
        !-------------------------------------------------------!
        !      ACK code supplied by the Remote NEBULA           ! .MSCOD
        !=======================================================!
        !WT.SJI!WT.NFO                                          ! .OFLAG
        !-------------------------------------------------------!
        !                           3                           ! .OARGC
        !=======================================================!
        !       Block Length        !          .ORDSP           ! ARG.HD
        !-------------------------------------------------------!
	!                         Blank                         !
	!Received Message From FOO::                            ! ARG.DA
	!=======================================================!
        !       Block Length        !          .ORDSP           ! ARG.HD
        !-------------------------------------------------------!
	!                Universal Date and Time                !
	/                 ASCIZ Text of Header                  / ARG.HD
	!                                                       !
	!=======================================================!
        !       Block Length        !          .CMTXT           ! ARG.HD
        !-------------------------------------------------------!
	!                                                       !
	/                                                       /
	/                  ASCIZ Message Text                   / ARG.DA
	/                                                       /
	!=======================================================!

\
	SUBTTL	SHOW CLUSTER-GALAXY-LINK-STATUS MESSAGE

COMMENT \
     If the SHOW CLUSTER-GALAXY-LINK-STATUS command was given with the
the  /CLUSTER-NODE  switch,  then the the following message is sent to
NEBULA:

        !=======================================================!
        !      Message Length       !         .NSRCL            ! .MSTYP
        !-------------------------------------------------------!
        !MF.NEB                                                 ! .MSFLG
        !-------------------------------------------------------!
        !           PID Of OPR That Sent This Message           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !                Argument Block Count                   ! .OARGC
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!

.NSRCL==300025  Message code

\ ;End of comment
	SUBTTL	DISABLE REPORT-CONNECTION-FAILURES MESSAGE

COMMENT \
     This message is sent by ORION to NEBULA if  ORION  receives  a
DISABLE (.OMDIS) message from OPR with keyword REPORT-CONNECTION-FAILURES
(.KYRCF). The format of the message is:

        !=======================================================!
        !      Message Length       !         .NDRCF            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !           PID Of OPR That Sent This Message           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !               Number of Argument Blocks               ! .OARGC
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!

     If the node block is present, then only that node's reporting of
DECnet connection failures is disabled.

\ ;End of comment
	SUBTTL  ENABLE REPORT-CONNECTION-FAILURES MESSAGE

COMMENT \

     This message is sent by ORION to NEBULA if ORION  receives  an
ENABLE (.OMENA) message from OPR with keyword REPORT-CONNECTION-FAILURES
(.KYRCF). The format of the message is:

        !=======================================================!
        !      Message Length       !         .NDRCF            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !           PID of OPR That Sent This Message           ! .MSCOD
        !=======================================================!
        !ND%ENA                                                 ! .OFLAG
        !-------------------------------------------------------!
        !               Number of Argument Blocks               ! .OARGC
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!

 In word .OFLAG:

ND%ENA==1B0    This is an ENABLE message

     If the node block is present, then only that node's reporting of
DECnet connection failures is enabled.

\ ;End of comment

;IN WORD .OFLAG THE FOLLOWING BIT IS SET

ND%ENA==1B0				;ENABLE REPORT-CONNECTION-FAILURES
	SUBTTL	DISABLE DECNET-CONNECTION-ATTEMPTS MESSAGE

COMMENT \
     This message is sent by ORION to NEBULA if ORION  receives  a
DISABLE (.OMDIS) message from OPR with keyword DECNET-CONNECTION-ATTEMPTS
(.KYDCA). The format of the message is:

        !=======================================================!
        !      Message Length       !         .NDDCA            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !           PID Of OPR That Sent This Message           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !               Number of Argument Blocks               ! .OARGC
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!

     If the node block is present, then only that node's attempts to
obtain a DECnet connection is disabled.

\ ;End of comment
	SUBTTL  ENABLE DECNET-CONNECTION-ATTEMPTS MESSAGE

COMMENT \

     This message is sent by ORION to NEBULA if ORION  receives  an
ENABLE (.OMENA) message from OPR with keyword DECNET-CONNECTION-ATTEMPTS
(.KYDCA). The format of the message is:

        !=======================================================!
        !      Message Length       !         .NDDCA            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !           PID Of OPR That Sent This Message           ! .MSCOD
        !=======================================================!
        !ND%ENA                                                 ! .OFLAG
        !-------------------------------------------------------!
        !               Number of Argument Blocks               ! .OARGC
        !=======================================================!
        !           .NDESZ          !          .NDENM           ! ARG.HD
        !-------------------------------------------------------!
        !                  SIXBIT Node name                     ! ARG.DA
        !=======================================================!

.NDDCA==300032  message code

 In word .OFLAG:

ND%ENA==1B0    This is an ENABLE message

     If the node block is present, then only that node's attempts to
obtain a DECnet connection is enabled.

\ ;End of comment
	SUBTTL	NEBULA ACK / NEBULA ACK RESPONSE MESSAGES

COMMENT \

 The sending of these messages is a GALGEN option. The intent of these messages
is to ensure that NEBULA does indeed have communication with those nodes that
it believes it is in communication with. This is essentially to cover the case
where a remote node in the cluster has its NI reloaded. When this happens, the
local NEBULA is not interrupted to inform it of this fact and the remote node
is not able to establish communication with any other nodes in the cluster.
 NEBULA sends a NEBULA ACK message every TIMOUT minutes to nodes in the cluster
it believes it has communication with. As with other messages NEBULA sends, a
timer is set for TIMOUT minutes. If a NEBULA ACK RESPONSE is not received
from each node a NEBULA ACK message was sent to when the appropriate timer
goes off, then NEBULA assumes that communication to that node has been lost.

 The NEBULA ACK message has the following format:

        !=======================================================!
        !             5             !         .NACKM            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !                           0                           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !                           0                           ! .OARGC
        !=======================================================!

The NEBULA ACK RESPONSE message has the following format:

        !=======================================================!
        !             5             !         .NACKR            ! .MSTYP
        !-------------------------------------------------------!
        !                           0                           ! .MSFLG
        !-------------------------------------------------------!
        !                           0                           ! .MSCOD
        !=======================================================!
        !                           0                           ! .OFLAG
        !-------------------------------------------------------!
        !                           0                           ! .OARGC
        !=======================================================!

\ ;End of comment
	SUBTTL	NEBULA MESSAGE CODES

.NBMSG==300000				;MINIMUM NEBULA MESSAGE CODE

.NRDSM==300001				;REMOTE DISMOUNT MESSAGE CODE
.NTDSM==300002				;TO NEBULA DISMOUNT MESSAGE CODE
.NFDSM==300003                          ;NEBULA DISMOUNT MESSAGE CODE
.NFDAK==300004				;FROM NEBULA DISMOUNT ACK MESSAGE CODE
.NTDAK==300005				;TO NEBULA DISMOUNT ACK MESSAGE CODE
.NRDAK==300006				;REMOTE DISMOUNT ACK MESSAGE CODE
.NTMTS==300007				;TO NEBULA MOUNT MESSAGE CODE
.NFMTS==300010  			;FROM NEBULA MOUNT MESSAGE CODE
.NMSHS==300011				;SHOW STATUS (.OMSHS) MESSAGE CODE
.NDSCD==300012				;SHOW CONFIGURATION (.ODSCD) MSG CODE
.NMSHQ==300013				;SHOW QUEUES (.OMSHQ) MESSAGE CODE
.NMSHP==300014				;SHOW PARAMETERS (.OMSHP) MESSAGE CODE
.NMSHR==300015				;SHOW ROUTE (.OMSHR) MESSAGE CODE
.NSCLU==300016				;SHOW CLUSTER/NODE: MESSAGE CODE
.NSRCL==300017				;SHOW CLUSTER/CLUSTER-NODE: MSG CODE
.NCDSM==300020  			;NEBULA CANCEL DISMOUNT MESSAGE CODE
.NMESS==300021				;(TO NEBULA) SHOW MESSAGE MESSAGE CODE
.NSHOP==300022				;(TO NEBULA) SHOW OPERATORS MSG CODE
.NDRCF==300023				;ENABLE REPORT-CONNECTION-FAILURES 
.NDDCA==300024				;DISABLE DECNET-CONNECTION ATTEMPTS
.NMACS==300025				;REMOTE SHOW ACK MESSAGE CODE
.NDSHT==300026				;SHOW STATUS TAPE (.ODSHT) MESSAGE CODE
.NDSHD==300027				;SHOW STATUS DISK (.ODSHD) MESSAGE CODE
.NDSTR==300030				;SHOW STATUS STRUCTURE (.ODSTR) MSG CODE
.NMTXT==300031				;RESPONSE TO EXEC KILL REQUEST MSG CODE
.NACKM==300032				;NEBULA ACK MESSAGE CODE
.NACKR==300033				;NEBULA ACK RESPONSE MESSAGE CODE

.NMSSN==300034				;[JCR]SHOW STATUS (.OMSSN) NETWORK-NODE
.NMSPN==300035				;[JCR]SHOW PARAMETERS (.OMSPN) NETWORK

.NMAXC==.NMSPN				;[JCR]MAXIMUM NEBULA MESSAGE CODE
SUBTTL	NEBULA ERROR CODES

;The following macros define the types of errors that NEBULA reports to
;an operator upon processing a message from that operator. These macros
;are used by NEBULA to send an ACK message (.OMACK) to ORION.

;ARGUMENTS USED ARE

;	X	'SUFFIX' , 'TEXT' , 'ERROR SEVERITY'

;DEFINE THE ERROR CODES THAT ARE ASSOCIATED WITH INVARIANT TEXT

DEFINE	ERRCDS,<
	
	XLIST

	X	IAC,<Invalid Argument Count>
	X	IBT,<Invalid Block Type>
	X	IML,<Invalid Message Length>
	X	IFW,<Invalid Flag (.MSFLG) word>
	X	NNF,<Node Block Not Found In SHOW Message>	
	X	NRN,<There are no reachable remote nodes in the cluster>
	X	IFM,<Illegally formatted message>		;[4]
	X	XXX,<This is a text buffer for messages built on the fly. MAX 70 characters>

	LIST
	SALL>  ;END OF DEFINITIONS OF INVARIANT TEXT ERRORS

;DEFINE THE ERROR CODES THAT ARE ASSOCIATED WITH VARIABLE TEXT

DEFINE	ERRTXT,<

	XLIST

	X	NSN,<Node ^N/G$ARG1/ is not known to be in the cluster>
	X	INS,<Cannot specify the local node name ^N/G$ARG1/> ;;[13]
	X	USN,<Message not sent to node ^N/G$ARG1/ ^T/@G$ARG2/>
	X	INN,<Illegal number of nodes, ^D/G$ARG1/, specified in message>
	X	NSM,<Communication to node ^N/G$ARG1/ lost. Message not sent>
	LIST
	SALL> ;END OF  DEFINITIONS OF VARIABLE TEXT ERRORS

	END