|


Below you will find more info on the limits of PCI Sound Card compatibility in DOS as well as some of the reasons for it's limitations. The issues are a result of my own tinkering and some very interesting insights from Videoman.
Basically what limits Soundblaster PCI ISA Legacy Emulation or plain compatibilty in DOS is amongst other factors the IRQ assignement. When you install your card and and do your DOS setup and all tha, if you get assigned an IRQ port below 10 you're OK and it should work for you if you use the commonly acknowledeged steps. (see amongst others my support page)
If however it assigns it a IRQ above 10 (in my case 11) DOS
cannot deal with that and won't recognise the settings properly.
Furthermore the autoexec will automatically reset itself to 5.
You can force the 11 setting by editing the autoexec in DOS,
resetting and going immediately into DOS mode (F8) but DOS will
not be able to use it. Emus like mame will initialise the sound
but you won't hear any. The DOS extender DOS4GW can only acces
IRQs up to 7. This extender is used with all DOS emus.
Change the setting in the aurtoexec. bat to say 5 (the most
commonly used one) and leave your legacy emulation (sbeinit,
ctsyn) on and it will say that IRQ 5 was initialised (set
command) but this isn't the case as the legacy emulation
automatically sets the SB to IRQ 11. This is shown at startup,
the set command display an incorrect IRQ. It is tricked into
thinking your PCI Souncard is at IRQ5 while it s really forced to
11 by the sbeinit command.
Leave the legacy emulation drivers off (rem command in autoexec
at the sbeinit and ctsysn lines) and the emus will not be able to
initialise the sound (mame) or crash at the start of a game
(Raine). They do not find the IRQ because you say it's at 5 but
the card really occupies 11.
Conclusion: You'll need to change the IRQ in your Bios (win98
won't let you do it in the hardware manager for PCI cards). This
is at your own risk. Not all motherboards will let you do it,
some will only allow you to specify which not to use others just
plain don't give the option.
The biggest reasons that PCI soundcards are not 100% compatible
with ISA cards besides the IRQ issue, is the DMA channels.
PCI has no ISA DMA support (in the form of DREQ/DACK signals and
a seperate DMA controller). Lots of DOS software programs the
hardware directly, and they expect a DMA controller to program as
well as the soundcard's registers. The problem is therefore in
how to make a PCI soundcard emulate the ISA DMA controller, but
only for that DMA channel (so it doesn't interfere with true ISA
cards communicating with the real ISA DMA controller).
This
is made difficult/impossible due to how chipsets manage I/O
address decoding. Traditionally, the ISA bus has decoded only the
lower 10 bits of the I/O port address range, while modern (386DX
and up) CPUs can support up to 16 bits for the full I/O port
address space. PCI cards can use all of this 16-bit I/O address
space, but some chipsets decode the ISA address space in hardware
first, and never give PCI cards a shot at it. (The ISA DMA
controller is located in the lower 10-bit address space).
There
is so called TDMA support that purports to give PCI sound cards
"transparent legacy ISA DMA emulation support". I'm not
sure how it works, but I would assume (on the motherboards that
support it), that it would try to allow the PCI sound card to
grab the I/O addresses of the real ISA DMA controller and
intercept commands to it, and then use PCI bus-mastering to
emulate the DMA transfers, while transparently also passing those
commands on to the real ISA DMA controller for the other DMA
channels.
That's the only way I can think of for a PCI sound card to
support ISA DMA emulation.
There exists also something called an SB-Link on some boards, and
some people have said that it's not an extra physical
cable/connector, but a feature of certain PCI slots. Perhaps
SB-Link support is the chipset's ability to allow a PCI card to
intercept/decode ISA DMA controller accesses?? Or maybe it's
something else, like routing the real ISA DMA signals (DREQ/DACK)
to a normally unused PCI bus connector pin? More food for
thought. Any chipset designers around here want to give the 100%
straight scoop? :)
In
my opinion, if you have problems with your PCI card, the best and
easiest solution is just to get an old SB16 for 10 bucks and
stick it in your PC. Two soundcards are not a problem and if you
remove the SB PCI! settings from you autoexec.bat in DOS only
your SB16 will be recognised. And it'll sound a whole lot nicer
than your Sb LIVE emulation...(check the support page for details on this)
