055 -- 16 Register Multiplexer

4 Sept 86

The 055 card has 16 settable registers, all of which are multiplexed onto a single output. The multiplexing is ordinarily controlled by the clock. The specific clock events that cause the card to switch from register to register are neither settable or readable.

The general approach is to assign a different data base device to each register. This device has the properties of Setting, Basic Status, and Basic Control. There are thus up to 16 different database devices for each 055 card. The Setting properties are truly independent-- sending a value to a specific device writes into a specific register on the card.

It is also possible to split up each register into different fields. When you do this you will have several logical multiplexers all operating in tandem.


split mask
0 OID = 3E (hex)
crate slot
3E (hex) split code | subaddress

The SSDN is the same for all the properties:

Setting Property

In the normal case the Setting property is a single word which can represent either a digital or analog value. It is written with an F(16)A(x) command and read back with an F(0)A(x) command.

To specify this normal mode you set split code = zero and split mask zero. There are already many devices in the data base which use the whole word for each device. These data base entries will not have to be changed.

If you want to split up a register among several devices you have to specify two items in the SSDN:

  1. The SPLIT MASK identifies which register bits belong to this device. This is simply a word containing an N-bit field of '1's, properly shifted to line up with your slice of the register.
  2. The SPLIT CODE tells the front end how to convert between the N-bit data that your hardware uses and the 1-word data that the console uses.

An example follows. Suppose you want to split your 055 registers into two bytes: the upper byte contains a signed binary number in the range -128 to +127 and the lower byte contains an unsigned number in the range 0 to 255. You would create two data base devices for each register:

	Split Mask  Split Code
	----------  ----------
	   FF00         3       Device 1: upper byte, signed number
	   00FF         2       Device 2: lower byte, unsigned number

Basic Status

The Basic Status property returns a single word which looks like this:


	SSSS  Register no. selected for output at this very instant
	T     1 = TCLK present
	E     1 = Card enabled
	M     1 = THIS VERY DEVICE is the one selected
	          for output at this instant.

The high order bit of the Basic Status word is derived by the front end, the rest is read from the card with an F(1)A(0) command.

For the original 055 card we adopted the convention of specifying the following scaling in the Basic Status PDB (bits are not inverted):

	   ON MASK = 0080  (card enabled)
	READY MASK = 0040  (TCLK present)
	POL + MASK = 8000  (This channel is selected)

This has the effect of providing a useful status on the parameter page. In particular the "Pol +" flag lets you watch, in real time, as the card switches between the various devices you have displayed on a parameter page.

Basic Control

Basic Control codes line up with the Basic Status. It is intended that the Basic Control PDB work as follows:

	--------  ----  ---------
	   OFF      1   F(24)A(0)   Disable the card
	    ON      2   F(26)A(0)   Enable the card
	 RESET      3   F(9)A(0)    Reset the card
	 POL +      4   F(27)A(x)   Force mux to this very channel

By this mechanism it is possible to force the 055 card to switch to a specific register by interrupting under "Pol +" on the parameter page, which then shows up a "Pol +" status for as long as the register remains selected.

Security, Privacy, Legal