VOGONS


First post, by appiah4

User metadata
Rank l33t++
Rank
l33t++

I remember that my first PC had a Sound Blaster Pro, which I later upgraded to a Sound Blaster 16 as part of a CD-ROM multimedia upgrade kit. If I remember correctly, my Sound Blaster Pro came preconfigured as IRQ7 but my Sound Blaster 16 came preconfigured as IRQ5. It would appear, from research, that early Sound Blaster cards (From 1.0 through Pro, maybe even Pro 2.0?) were factory defaulted (via jumpers) to IRQ7, and most games from early 90s seem to look for a Sound Blaster at this IRQ as well. For whatever reason around the release of Sound Blaster 16 (maybe even Pro 2.0?) the default IRQ for Sound Blaster cards shifted to IRQ5.

Does anyone know what card it was that first started using IRQ 5? And does anyone know why IRQ7 was abandoned for IRQ5? I realize that IRQ7 is shared with the LPT: port, but in my experience this has never ever caused an issue on any system I ever used.

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 1 of 8, by derSammler

User metadata
Rank l33t
Rank
l33t

Just guessing, but maybe the rise of Windows, which allowed printing in the background. With the sound card on IRQ 7, playing any sound would have frozen the system while a print job was running. But again, just guessing. Makes sense to me, however.

Reply 2 of 8, by appiah4

User metadata
Rank l33t++
Rank
l33t++
derSammler wrote on 2020-05-15, 13:18:

Just guessing, but maybe the rise of Windows, which allowed printing in the background. With the sound card on IRQ 7, playing any sound would have frozen the system while a print job was running. But again, just guessing. Makes sense to me, however.

Can't the LPT: and Sound Blaster share an IRQ while printing?

Retronautics: A digital gallery of my retro computers, hardware and projects.

Reply 3 of 8, by Tiido

User metadata
Rank l33t
Rank
l33t

Technically no ISA IRQs can be shared, except through some special situations where a card briefly pulses the IRQ line rather than drives it all time than most cards normally do, and even then software must be explicitly aware this is going on. When two cards do it at the same time, one IRQ will get missed also.
IRQ7 is also lower priority than 5 and that can cause potential issues.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 4 of 8, by Grzyb

User metadata
Rank Oldbie
Rank
Oldbie

Early SBs were designed to work in XT machines as well.
On an XT, there's no IRQ guaranteed to be free, notably IRQ 5 is used by the HDC.
So, the most reasonable choice was IRQ 7 - occupied by the LPT, which was however serviced in polling mode only, so no problem.

On an AT, the HDC normally uses IRQ 14, and IRQ 5 is free.
And at certain point, multitasking environments became popular: Windows 3.x, OS/2 2.x, both supporting printing in background, so LPT IRQ became useful. I'm not sure about Windows, but OS/2 2.x definitely can use LPT in IRQ mode, maybe even requires it - I saw something about this requirement being dropped in OS/2 Warp 3.

So, when they dropped support for XT in SB, it was logical to change the default to IRQ 5.

Nie tylko, jak widzicie, w tym trudność, że nie zdołacie wejść na moją górę, lecz i w tym, że ja do was cały zejść nie mogę, gdyż schodząc, gubię po drodze to, co miałem donieść.

Reply 6 of 8, by _Rob

User metadata
Rank Member
Rank
Member

OS/2 indeed had problems if your SB was set to IRQ7 due to the LPT conflict. And yes I vaguely remember some update which allowed for the co-existence, but it had performance impacts on printing.

Windows 95 or 98 by default does not use IRQ7. You need to specifically go into device manager and change the "Basic Configuration" profile from the default one to a different one which does use the IRQ.

Not sure about the earlier WFW or WinME or NT.

Reply 7 of 8, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

It is possible to share the IRQ.
If an irq7 is comming and we read an SB resister telling it is not an SB IRQ.
Then we skip the code and execute the IRQ that was configured before.
But few coders do it (personally I don't)

Reply 8 of 8, by derSammler

User metadata
Rank l33t
Rank
l33t

That would only work if every interrupt handler would be written that way. But since IRQ/DMA sharing was not part of the ISA specs, no interrupt handler works this way. Instead, you get a race condition and when interrupt handler (a) is executed but hardware (b) raised it, the system will freeze, as the interrupt handler won't ever exit.

Conclusion: there is no IRQ sharing on the ISA bus.