Support for the 205 'Odd Mod' accelerator statistics card.
	------- --- --- ---  --- ---  ----------- ---------- ----


     This card has numerous registers which can be read with various
Camac function codes.  It is a somewhat fluid entity, as Todd Johnson
and Brian Hendricks re-do it every major shutdown. 

     The approach is thus to allow some of the Camac addressing to be
built into the SSDN.  This permits Todd and Brian to tinker to their
hearts' content (or rather, to Mau's heart's content), and to create new
devices for the new numbers the card produces. 

     The SSDN is always as follows:

		+-------------------------------+
		|		0		|
		+-------------------------------+
		|	0	| OID = 25 (hex)|
		+-------------------------------+
		|   crate	|   slot	|
		+-------------------------------+
		|  sub-code	|  parameter	|
		+-------------------------------+

     The "sub-code" is a small integer.  The meaning of the "parameter"
is dependent upon the sub-code.

     Since this card is almost entirely a read-only device we shall
discuss readings first.  There are five sub-codes, each of which does
something different.


Sub-Code 1: Single Word Readings
-------- -  ------ ---- --------

     With this sub-code it is possible to perform a simple Camac read
of a single word.

     For this sub-code the parameter contains Camac A (subaddress) and
F (function) codes thusly:

	parameter = 0fffaaaa (binary)

     The front end will read a single word using the Camac command
F(f)A(a).  This is retried once on no-Q.


Sub-Code 2: Two Word F(19)A(0) Style Readings
-------- -  --- ---- --------- ----- --------

     The front end first executes an F(19)A(0).  The data it transmits
is a single word containing a -1.  This is retried once on no-Q.

     The parameter byte for this sub-code is identical to the parameter
byte for sub-code 1:

	parameter = 0fffaaaa (binary)

     After the initial F(19), the front end reads two words with
F(f)A(a) Camac commands.  These are retried once on no-Q. 


Sub-Code 3: Long F(19)A(0) Buffers
-------- -  ---- --------- -------

     For this sub-code the parameter byte is a code recognized by the
205 card.  The front end first executes an F(19)A(0).  The data it
transmits is extracted from the parameter byte.  The F(19)A(0) is
retried once on no-Q. 

     After the initial F(19) the front end reads many words with
F(4)A(0) commands.  How many words does it read?  When you call DPREQ in
the application program you specify a 'length' parameter (in bytes). 
This is the length of the buffer that the front end will read.  The F(4)
is retried 5 times on no-Q. 

     The buffer is limited to no more than 1k bytes long.


Sub-Code 4: F(19)A(2) - F(4)A(1) Buffer
-------- -  ---------   -------- ------

     I'm not sure what special purpose buffer this is, but the front end
will execute an F(19)A(2) (data = 0) and then read exactly 15 words with
F(4)A(1) commands. 

     The parameter byte is ignored.


Sub-Code 5: F(19)A(6) - F(0)A(0) Cycle by Cycle Array
-------- -  ---------   -------- ----- -- ----- -----

     Conceptually the cycle by cycle array is a 256 word long buffer.
Brian wants to read chunks of this buffer starting at any point in the
middle. 

     The front end first executes an F(19)A(6).  The data for this write
tells the 205 card which cycle to start with.  How does the front end
which cycle to start with?  When the application program called DPREQ it
specifies an 'offset' parameter in bytes.  Since each entry in the array
is one word long, you specify the starting cycle number by making the
'offset' equal to twice the cycle number. 

     The F(19)A(6) command is retried once on no-Q.

     The front end then reads many words with F(0)A(0).  Each read is
retried 5 times on no-Q.  The number of words to read is specified by
the 'length' parameter in the DPREQ call, just as it is in sub-code 3. 

     The parameter byte is ignored by this sub-code.


Setting Sub-Code 1: Single Word Settings
------- -------- -  ------ ---- --------

      The Setting property for a device can be used for writing single
words into the 205 card.  The A and F parts of the Camac command are
coded into the SSDN.  The data to write is given directly to DPSET when
the application program runs.

      The SSDN for this option looks the same as the SSDN above.
Remember that the Reading property and the Setting property have their
own private SSDNs in the data base.  Thus you can create a device which
reads one Camac A,F and sets a different Camac A,F, because each property
will have different information coded into its SSDN.

      The parameter word is the same:

	parameter = aaaa/0fff

      When the front end receives the setting it transmits a single word
to the 205 card using the Camac command F(f+16)A(a).  This is retried
once on no-Q.

      Note the funny computation for the Camac F code.  If you want to
write F(19) to the card, you specify a 3 in the parameter byte in the
SSDN.  Camac uses F codes 16 - 23 for writing data, so there is no loss
of generality in this method.