Hippy Dave wrote:The Pacemaker demo has a bug. -12 DB does not exist (YM2149 should be silent). The Pacemaker demo has sound because it incorrectly uses the Microwire register (and gets ignored on a real STE). Thus Steem must only have YM sound when input 1 is selected, and must emulate Microwire accurately enough to ignore the Pacemaker demo. Nicolas fixed this in Hatari (June 2014).
Yet both the demo and Steem seem to be conform to doc:
The MICROWIRE™ bus is a three wire serial connection and protocol designed
to allow multiple devices to be individually addressed by the controller.
The length of the serial data stream depends on the destination device.
In general, the stream consists of N bits of address, followed by zero or
more don't care hits, followed by M bits of data. The hardware interface
provided consists of two 16 bit read/write registers: one data register
which contains the actual bit stream to be shifted out, and one mask register
which indicates which bits are valid. Let's consider a mythical device which
requires two address bits and one data bit. For this device the total bit
stream is three bits (minimum). Any three bits of the register pair may be
used. However, since the most significant bit is shifted first, the command
will be received by the device soonest if the three most significant bits
are used. Let's assume: 01 is the device's address, D is the data to be
written, and X's are don't cares. Then all of the following register
combinations will provide the same information to the device.
1110 0000 0000 0000 Mask
01DX XXXX XXXX XXXX Data
0000 0000 0000 0111 Mask
XXXX XXXX XXXX X01D Data
0000 0001 1100 0000 Mask
XXXX XXX0 1DXX XXXX Data
0000 1100 0001 0000 Mask
XXXX 01XX XXXD XXXX Data
1100 0000 0000 0001 Mask
01XX XXXX XXXX XXXD Data
As you can see, the address bits must be contiguous, and so must the
data bits, but they don't have to be contiguous with each other.
In fact they do, if I got it right. So official doc would be doubly wrong? For the -12DB and for the mask structure?