!Template file for CAMAC 284 cards
!Prepared by Rich Neswold
!
!  284 Pulsed Digital Output
!
! This card has three different "modes" of operation. This means there are
! up to three different ways to manipulate a device. In this document, each
! DABBEL property will be repeated up to three times to describe the en-
! coding for each mode.
!
!    MODE 1 (MACA Replacement Style):
!
!	Basic Control
!
!	In this mode, two words of data are passed to the driver. The first
!	word contains the house code. The second word contains a 16-bit mask,
!	indicating which bits should be pulsed. Since the data contains a
!	house code, which can be used to determine the crate, the crate field
!	in the SSDN isn't used.
!
!	Reading/Basic Status
!
!	Returns the status of all 24 houses in a 24-word buffer. If a house
!	returns an error, its position in the buffer is filled with an error
!	code specified by the SSDN. The crate field isn't used, but the slot
!	field is.
!
!    MODE 2
!
!	Basic Control
!
!	In this mode, the crate field is used to address a specific crate.
!	One word is passed to the driver. The value of the data can be 1
!	through 16, to indicate which bit to pulse.
!
!	Reading/Basic Status
!
!	This returns the entire status of a 284 card in a specific crate
!	and slot. The status, I believe, is the state of the 16 output bits.
!
!    MODE 3
!
!	Basic Control
!
!	In this mode, the crate field is used to address a specific crate.
!	Two words are passed to the driver. The first word must be 0. The
!	second word contains a 16-bit mask of which bits are pulsed.
!
!	Reading/Basic Status
!
!	This returns the status of a 284 card in a specific crate and slot.
!	The status, I believe, is the state of the 16 output bits.
!
!------------------------------------------------------------------------------

ADD X:XXXXXX ( '                        ' , node  ,          , 7FFFFFE )
    \______/    \______________________/    \__/    \_______/  \_____/
     dev name    24 character description    node    sibling    con. mask 

---------------------
 BASIC CONTROL
---------------------

(MODE 1)

SSDNHX BCNTRL (69FF/nn00/8000/0000)
                    \/
                     slot number

PRO BCNTRL ( 4, 4, ftd )
                   \/
                    FTD

Since this module is a group of 16 bits, the various "commands",
specified in PDB BCNTRL, depend heavily upon how the outputs are
wired. The basic format for each of the commands is:

	mmmm00hh (hex layout)

Where 'mmmm' is a 16-bit mask of the bits that are associated with the
command. The 'hh' field determines the house code.

PDB BCNTRL ( ??, ??, ??, ??, ??, ?? )
             \/  \/  \/  \/  \/  \/
              |   |   |   |   |   neg command
              |   |   |   |   pos command
              |   |   |   off command
              |   |   on command
              |   reset command
              attribute definition mask

(MODE 2)

SSDNHX BCNTRL (69FF/nncc/0000/0000)
                    \/\/
                     | crate number
                     slot number

PRO BCNTRL ( 2, 2, ftd )
                   \_/
                    FTD

Since this module is a group of 16 bits, the various "commands",
specified in PDB BCNTRL, depend heavily upon how the outputs are
wired. The basic format for each of the commands is:

	00bb (hex layout)

Where 'bb' is 1 through 16, indicating which bit should be pulsed.

PDB BCNTRL ( ??, ??, ??, ??, ??, ?? )
             \/  \/  \/  \/  \/  \/
              |   |   |   |   |   neg command
              |   |   |   |   pos command
              |   |   |   off command
              |   |   on command
              |   reset command
              attribute definition mask

(MODE 3)

SSDNHX BCNTRL (69FF/nncc/0000/0000)
                    \/\/
                     | crate number
                     slot number

PRO BCNTRL ( 4, 4, ftd )
                   \_/
                    FTD

Since this module is a group of 16 bits, the various "commands",
specified in PDB BCNTRL, depend heavily upon how the outputs are
wired. The basic format for each of the commands is:

	mmmm0000 (hex layout)

Where 'mmmm' is a 16-bit mask of the bits that are associated with the
command.

PDB BCNTRL ( ??, ??, ??, ??, ??, ?? )
             \/  \/  \/  \/  \/  \/
              |   |   |   |   |   neg command
              |   |   |   |   pos command
              |   |   |   off command
              |   |   on command
              |   reset command
              attribute definition mask

---------------------
 BASIC STATUS
---------------------

(MODE 1)

SSDNHX BASTAT (69FF/nn00/8000/eeee)
                    \/        \__/
                     |         error code
                     slot number

PRO BASTAT ( 48, 48, ftd )
                     \_/
                      FTD

This mode returns a buffer containing the status of each house. The
PDB will be applied to each status. It is imperative that each
module's outputs are wired identically! Since this module is a group
of 16 bits, the various status fields, specified in PDB BASTAT, depend
heavily upon how the outputs are wired. The basic format for each of
the commands is:

	mmmm (hex layout)

Where 'mmmm' is a 16-bit mask of the bits that are associated with the
status.

PDB BASTAT ( ??, ??, ??, ??, ??, ??, ?? )
             \/  \/  \/  \/  \/  \/  \/
              |   |   |   |   |   |   neg status
              |   |   |   |   |   pos status
              |   |   |   |   off status
              |   |   |   on status
              |   |   reset status
              |   invert mask
              attribute definition mask

(MODES 2 and 3)

SSDNHX BASTAT (69FF/nncc/0000/0000)
                    \/\/
                     | crate number
                     slot number

PRO BASTAT ( 2, 2, ftd )
                   \_/
                    FTD

Since this module is a group of 16 bits, the various status fields,
specified in PDB BASTAT, depend heavily upon how the outputs are
wired. The basic format for each of the commands is:

	mmmm (hex layout)

Where 'mmmm' is a 16-bit mask of the bits that are associated with the
status.

PDB BASTAT ( ??, ??, ??, ??, ??, ?? )
             \/  \/  \/  \/  \/  \/
              |   |   |   |   |   pos status
              |   |   |   |   remote/local status
              |   |   |   ready status
              |   |   on status
              |   invert mask
              attribute definition mask

---------------------
 READING
---------------------

(MODE 1)

SSDNHX READNG (69FF/nn00/8000/eeee)
                    \/        \__/
                     |         error code
                     slot number

PRO READNG ( 48, 48, ftd )
                     \_/
                      FTD

(MODES 2 and 3)

SSDNHX READNG (69FF/nncc/0000/0000)
                    \/\/
                     | crate number
                     slot number

PRO READNG ( 2, 2, ftd )
                   \_/
                    FTD

---------------------
 ALARMS
---------------------

The designers of this CAMAC module made a decision that slightly
complicates alarm definitions. Since all of the bit addressing is done
through the data in the request packet, all the SSDNs for a given card
are very similar. Since EMCs must be unique, steps must be taken to
make the SSDNs unique.

Throughout this document, the last two words of the SSDN were
specified to be zero (except for the MSB of the third word). If the
card is to have a digital alarm, then it is up to you to change these
unused fields so that the SSDN, and hence the EMC, is unique.

(MODE 1)

EMX (02nn/ss00/8000/0000, 0000/0000/0000/0000)
       \/ \/    \______/
        |  |     Must be unique for a given card
        |  Slot number
        Node number of front-end

SSDNHX DGALBL (69FF/nn00/8000/0000)
                    \/
                     slot number

PRO DGALBL ( 48, 20, fq, nv, mv, 2, de, le, 1, ai, ab, 0, tries, ev1, ev2 )
                     \/  \/  \/     \/  \/     \/  \/     \___/  \______/
                      |   |   |      |   |      |   |      |      events
                      |   |   |      |   |      |   |     tries needed
                      |   |   |      |   |      |   beam abort
                      |   |   |      |   |      abort inhibit
                      |   |   |      |   log event
                      |   |   |      display event
                      |   |   mask value
                      |   nominal value
                      frequency

PRO DGALTX ( dgmask, condval, prior, text )
             \____/  \_____/  \___/  \__/
              |       |        |      24 character text string
              |       |        message priority (0 - 255)
              |       condition value
              digital mask

PRO EXTEXT ( 1, bit, col0, text0, col1, text1, ext_text )
                \_/  \__/  \___/  \__/  \___/  \______/
                 |    |     |      |     |      24 chars of extended text
                 |    |     |      |     7 chars if bit is 1
                 |    |     |      color if bit is 1
                 |    |     7 chars if bit is 0
                 |    color if bit is 0
                 bit number of respective bit

(MODES 2 and 3)

EMX (02nn/sscc/0000/0000, 0000/0000/0000/0000)
       \/ \/\/  \______/
        |  | |   Must be unique for a given card
        |  | Crate number
        |  Slot number
        Node number of front-end

SSDNHX DGALBL (69FF/nncc/0000/0000)
                    \/\/ \_______/
                     | |  Must be the same as the last two words of the EMC
                     | crate number
                     slot number

Because one 284 card can control multiple pieces of hardware, there
could be the situation that more than one device is using the 284
module. If this is the case, then both devices would have the same
SSDN for Basic Status access. EMCs, however, need to be unique. To
solve this problem, the last two words should contain values that
aren't used by any other device associated with the card.

PRO DGALBL ( 2, 20, fq, nv, mv, 2, de, le, 1, ai, ab, 0, tries, ev1, ev2 )
                     \/  \/  \/     \/  \/     \/  \/     \___/  \______/
                      |   |   |      |   |      |   |      |      events
                      |   |   |      |   |      |   |     tries needed
                      |   |   |      |   |      |   beam abort
                      |   |   |      |   |      abort inhibit
                      |   |   |      |   log event
                      |   |   |      display event
                      |   |   mask value
                      |   nominal value
                      frequency

PRO DGALTX ( dgmask, condval, prior, text )
             \____/  \_____/  \___/  \__/
              |       |        |      24 character text string
              |       |        message priority (0 - 255)
              |       condition value
              digital mask

PRO EXTEXT ( 1, bit, col0, text0, col1, text1, ext_text )
                \_/  \__/  \___/  \__/  \___/  \______/
                 |    |     |      |     |      24 chars of extended text
                 |    |     |      |     7 chars if bit is 1
                 |    |     |      color if bit is 1
                 |    |     7 chars if bit is 0
                 |    color if bit is 0
                 bit number of respective bit