detect ESS 688/1869 chipset using secret DSP command.
ESS resource detection. ESS functions to read/write controller
registers.
add initial support for ESS DSP commands that are 16-bit PCM aliases of
the 8-bit counterparts (command 15h for 16-bit PCM, etc.)
allow 16-bit PCM for DSP 3.xx if ESS chipset
correct "can do" function, assign 8 & 16 bit DMA channels for ESS.
more
round DMA position down to nearest sample boundary on stop.
new, ESS 688/1869 specific playback code.
bugfix: ESS extensions mode should return appropriate reason value for
8/16-bit modes.
add special case for ESS, since in ESS extension mode normal SBPro
limits do not apply.
guess for recording
a bit more refactoring setup of ESS
bugfix: if using ESS programming method, don't send any DSP commands
unless necessary. this seems to resolve hangups and confusion in the
chipset when you attempt to record. playback and recording works now.
remove debug print onscreen
all builds must poke and prod the interrupt controller to ack IRQs and
make sure the Sound Blaster IRQ is primed to work properly. Also, to
restore IRQ masking status on shutdown. This seems to fix IRQ problems
with 16-bit real mode builds.
reorg in a way that might fix halting on real ESS hardware.
reminder
TODO notes
ESS chipset guess: when sending another block to ESS chipsets, when
non-auto-init DMA+DSP is used, we must disable DMA at the chipset, THEN
reprogram the DMA controller, THEN reenable DMA at the chipset.
ess fix: non-goldplay mode with non-auto-init DMA needs to round the IRQ
interval to a multiple of 4 bytes because we instruct the chipset to use
4-byte demand DMA transfers. I'm guessing the chip does not contain
logic to do less than 4 bytes for any case if told to do that?