Hi, I am trying to make CMedia CM8738 onboard sound work in DOS.
The drivers (downloaded them) just find the PCI device, read the
IRQ and port base, check if PCI config register 4 "and 5 equals 5"
(if busmaster is on), does a bit of i/o
(base+4 = word e, base+18 = 3, base+16 = base+16 or 10,
base+21 = 5, base+27 = 1, 224 = 80, 225 = VALUE, 224 = 81, 225 = 22)
and hooks the PCI IRQ with a redirector to the selected NORMAL IRQ
(e.g. PCI sound chip triggers IRQ 12, and the TSR simulates IRQ 5
when that happens). The base is found in PCI config reg 10 (low byte
of word ignored), the IRQ is in PCI config reg 3c. The device is
found by scanning the PCI bus for a device by vendor 13f6 (CMedia, I
assume) or 10b9 (in THAT case, the device ID is also checked to be
in 100-200 range. However, in my case, the ID is 13f6:0111).
Whatever. Everything nice and techy. The more clever DOS programs
even "work" with selecting IRQ 12 directly without the TSR in RAM.
But only Adlib and mixer REALLY work. When I try doing 8bit sound,
I get silence, and for 16bit sound, using DMA 1 for both high and
low DMA channel (hardcoded to the setaudio CMedia tool, it seems),
I get noise. Very annoying.
Am I doing something stupid here or is it just a KNOWN problem that
C-Media sound chips have crappy DMA and therefore can only be used
for boring Adlib sound in DOS?
I think I have read of other people with C-Media on this list before,
so maybe somebody can help me out here. Thanks!
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
Freedos-user mailing list