The sound code provides emulation of the SB. The actual emulation provided depends upon the support available from the kernel sound driver. Because this is very OS dependant the driver code itself is kept in architecture specifc files under src/arch/osname/dosext/sound/. Communication is via a set of interface functions and the device independant structures.
These are the functions defined in dosext/sound/sound.c.
Arguments are:
port - The I/O port being read from.
Arguments are:
port - The I/O port being read from.
Arguments are:
port - The I/O port being read from.
Arguments are:
port - The I/O port being written to.
value - The value being output.
Arguments are:
value - The value being written to the DSP.
Write silence could probably be implemented by setting up a "DMA" transfer from /dev/null - AM
The file header needs tidying up a _LOT_ ! */
-----
Adlib status reads are unimplemented */
-----
Advanced adlib reads are unimplemented */
-----
CMS Writes are unimplemented.
-----
DSP Status is unimplemented
-----
Adlib Waveform tests are unimplemented */
-----
Advanced Adlib register writes are unimplemented */
-----
Advanced Adlib data writes are unimplemented */
-----
SB Midi is Unimplemented
-----
Sine Generation is unimplemented
-----
AUX Status is Unimplemented
**** WARNING **** This Code _HAS_ changed.
-----
The Emulated DMA channels are provided by using files and writes. This means that they are easy to track. It might cause problems when attempting to interface to the REAL DMA controller. (Necessary to talk to hardware which uses DMA.)
Note that DMA controller 2 uses word granular addressing and controller 1 uses byte granular address ... this simplifies the code !
: Cascade Mode Reads are not supported
-----
: The Verify Mode is not supported
-----
: The Invalid Mode is not supported (!)