How to set my PCI sound card to a fixed interrupt number?
Posted by WinDestruct@reddit | vintagecomputing | View on Reddit | 33 comments

I'm having issues with a sound card and I saw someone setting it a fixed interrupt number and it worked fine for him, I think I should set the 4th available interrupt to 5 and set 3rd int# to D, but I want to make sure first
CuteCubone@reddit
Also, ich habe früher Port 220, IRQ 7 und DMA 1 für meine Soundkarte verwendet. Das kannst du aber normalerweise im Spiel selbst festlegen, dafür brauchst du nicht ins BIOS.
WinDestruct@reddit (OP)
Ich habe jetzt die Standardeinstellungen für meine PCI-Soundkarte im BIOS festgelegt: Port 220, IRQ 5 und DMA 1 werden vom Soundkartentreiber emuliert. In MS-DOS funktioniert alles wirklich gut, aber nicht unter Windows. Vielleicht habe ich einen schlechten Treiber oder zu wenig RAM. Obwohl MIDI-Musik funktioniert.
jtsiomb@reddit
You're having issues because a PCI sound card is not usable for DOS games. The PCI interrupts are not an issue. Depending on your board and chipset it could be that only ONE interrupt line is available to all PCI devices, and it doesn't matter, PCI interrupts can be shared.
TL;DR the only way to have sound in old DOS programs, is to use an ISA sound card.
Inevitable-Study502@reddit
it depends, ive used to have some old pci wanna be sound blaster compatible card, it was plug and play with ooprom (bios driver), bios loaded ooprom and only "set blaster" was all it needed to work in dos
jtsiomb@reddit
So not just a TSR but a BIOS option ROM too? And did that work with both 16bit and 32bit protected mode games?
Inevitable-Study502@reddit
had no issues in dos games...i dont think you need any specific software driver if card has its own, thats what plug and play standed for in 90s, and first pci cards utilized it, because dos was still popular
jtsiomb@reddit
Interesting. If you can remember which exact card that was, I'd like to maybe try to find one and test it.
Plug and play has nothing to do with drivers. It's a system for auto-configuration of hardware resources like interrupt lines and I/O mappings.
Inevitable-Study502@reddit
bios was showing it as plug n play, its legacy pnp now, this included bios driver bundled on card
nowdays only gpu and storage controllers (mostly raid) still use it and some network cards for boot from bios
https://en.wikipedia.org/wiki/Legacy_Plug_and_Play not to be confused with plug and play we have now
and no i doubt i remember what card was it, it had cdrom e-ide which was used with 2x cdrom from panasonic
WinDestruct@reddit (OP)
I found some drivers and I have sound effects in dos and midis only under Windows, nothing more
jtsiomb@reddit
Most early PCI cards came with some kind of sound-blaster emulation TSR to make it compatible with DOS programs. None of them work other than in corner cases. Don't bother. Get an ISA sound card.
redditshreadit@reddit
What are the options next to Slot x using int# besides auto?
WinDestruct@reddit (OP)
A, B, C or D
redditshreadit@reddit
I think that's how you manually assign IRQ. You should probably manually set the IDE irq to 14.
WinDestruct@reddit (OP)
According to the picture IDE takes int# A and B, do you think nth available irq is tied to the letters?
Inevitable-Study502@reddit
IDE is IRQ 14 and 15
but isnt soundcard irq5 or irq7? the only conflict at this irq level would be just with LPT ports
redditshreadit@reddit
I think so. What else could A,B,C,D be.
Does this motherboard have on board IDE?
WinDestruct@reddit (OP)
Yes
LousyMeatStew@reddit
I think the best thing you can do here is to just experiment. Assuming the sound card is in Slot 1, set Slot 1 to A and see if it gets IRQ9 assigned.
Difficult to say otherwise because this behavior wasn't standardized across motherboards. Do you know the model of the motherboard and sound card?
WinDestruct@reddit (OP)
The motherboard is lucky star ls-486e and the sound card is creative sound blaster ct4830, the card is in the 3rd pci slot
LousyMeatStew@reddit
Welp, the manuals I could find for that model only cover jumper settings. Interestingly, while it is included in 86box, it uses the AMI WinBIOS rather than Award.
However, I tried the Zida Tomato 4DP and it gives me the Award BIOS plus the SiS 496 chipset and played around a bit. Here's what worked for me:
Set all of those INT# settings back to AUTO. Then boot the system. Prior to the OS booting, you should see it display a "PCI device listing" listing the IRQ assigned to each device. Look for "Multimedia Device", then note which IRQ it gets assigned. In my testing, it was 10.
Find the associated "xth Available IRQ" - in my case, it was the 2nd available. Change that one to the desired IRQ. You'll want to set it to 5 since the SB Live emulates SB16.
WinDestruct@reddit (OP)
Thank you for this effort, is there a key I need to hold to make it display irqs? Or is in the table after the initial post screen? Since I didn't notice it
LousyMeatStew@reddit
Not sure, as you saw in 86box, it comes up automatically so I’m not sure why it doesn’t show on your mobo. Even if it doesn’t display it, you should be able to check what IRQs been assigned by looking at Device Manager in Windows or MSD in MS-DOS.
I’m not clear on what the INT# stuff does. I actually found the documentation for the SiS 496 and there are indeed four (A, B, C and D) and each one can be set to a specific IRQ and it seems like the “nth avaialble IRQ” should correspond to that but that wasn’t how things behaved when I was testing in 86box. It could be that 86box doesn’t perfectly emulate how the chipset registers function, though.
WinDestruct@reddit (OP)
Nvm, I opened it in 86box, there was indeed a listing which isn't on my computer and the card got 10th interrupt, as expected, so I think I should set 2nd interrupt to 5 in this case
computix@reddit
I don't think nth avaiable IRQ has a fixed mapping to PCI INT#, but you can give it a go.
Also set the "PnP OS" option to "no". If you don't Windows will be free to mess with the IRQs. Years of experience have taught me it's best to always set PnP OS to "no" anyway, it can make the POST a bit slower, but in general it will give a more stable system. If you set it to yes, there's a chance Windows 9x will use it's stupid "set all PCI devices to IRQ 9" logic, which can be a huge source of problems.
Vinylmaster3000@reddit
That's interesting, I thought that setting it to PnP OS was better for a PnP os like windows 9x
computix@reddit
A common repeated myth for sure. PnP OS is actually a really stupid feature. It tells the BIOS to do minimal initialization, and leave most of the initialization up to the OS. This assumes the OS will do this in a well designed, wise way. Unfortunately Windows 9x just doesn't. It uses a bunch of assumptions that seemed reasonable at the time, but later they turned out to be not so great.
With Windows 2000, XP, Linux, etc. it's much less harmful. These OSes do a much better job of this.
On later systems, with message signaled interrupts (MSI), and APICs all of these problems are basically solved. The system has 224 IRQs and every device can have one or more IRQs. If you look on your modern system at your NVMe SSD you'll likely see it has multiple IRQs (probably 21). This is because it has multiple true hardware queues, each with its own IRQ. Such things would be unthinkable on an old PC with 16 legacy IRQs.
WinDestruct@reddit (OP)
I don't see any pnp option, it's a 486 era bios
computix@reddit
The BIOS might not have that option.
It normally isn't on the screen in your screenshot though. Often it was on the "Boot options" screen, but I think I've occasionally seen it on other screens, like the screen with the drive parameters, etc.
WinDestruct@reddit (OP)
I only have the option for os with dram > 64mb with non-os2 and os2, I have 8mb of ram
computix@reddit
Okay, that's something different. OS/2 expects a specific non-contiguous memory configuration. It's possible your BIOS doesn't have the PnP OS option, this means it's effectively always set to "no", so everything should be fine.
tomxp411@reddit
Your card comes with software to set up the port address and interrupt. Use that to set the values you need.
ketsa3@reddit
You need to setup jumpers on your sound card, then tell the BIOS.
WinDestruct@reddit (OP)
It's a pci card, there are no jumpers controlling interrupt request levels