ea.gif (17265 bytes)

 

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)