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
that, 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) |