1. sfx2.e and irq's higher than 7
- Posted by Michael Packard <pastor at berighteous.com> May 16, 2001
- 376 views
Hi Euphorians! I'm having some trouble with sfx2.e, specifically, it doesn't seem to detect sound cards on IRQ's higher than 7. I have a plug and play sound card that auto configured at IRQ9 and NONE of the euphoria sound drivers in dos would play on it, even though I had my blaster environment variable set. When I changed the IRQ to 7 they all started working. Another person playing Snack Attack had his on IRQ 15 and it didn't detect his either, so I'm guessing detection doesn't work for some reason. Now, I can't require everyone who plays my games to reconfigure their IRQs on their soundcards, so what can I do? The old SFX.e worked fine with my card at IRQ9, but it doesn't allow multiple sound mixing. Anybody got a patch for sfx2 that always works? thanx Michael Packard
2. Re: sfx2.e and irq's higher than 7
- Posted by Gerardo <gebrandariz at YAHOO.COM> May 16, 2001
- 404 views
Since Windows is a DOS program ... ----- Original Message ----- From: "Bernie Ryan" <xotron at localnet.com> To: "EUforum" <EUforum at topica.com> Subject: RE: sfx2.e and irq's higher than 7 (...) > Michael: > I took a quick look at the code in detect.ex and see that the > IRQ routines limit you to IRQ 7. > > It looks like you have to go through detect.ex and change > the code in the routines that interrupt is tested to be less than > eight (You would have to change the 8 to 16 ). > Note that 8 is also being subtracted in the > EnableIRQ(), DisableIRQ(). > Also change 8 tests in TstInt() > Add the interrupts you want to use to constant SB_INT_NO sequence > Hope that helps. > Bernie And why is that? Quoth SiSoft Sandra: Channels - There are 2 interrupt controllers in today's PC, each providing 8 channels. One channel is used to connect the master interrupt controller to the slave interrupt controller, leaving 15 free interrupts. However, the chipset itself uses many interrupts (about 11) leaving only about 3-6 free. Until recently no two devices could share and interrupt (in most cases) since the software could not tell them apart, but new BIOSes & OSes have implemented a resource sharing protocol since there are just not enough free interrupts for all the hardware to use. and also: Software Interrupts - are interrupts generated by software, Typically they are used to call services provided by a BIOS (system, video, hardware). There are 256 in total which include the 16 hardware interrupts. When an interrupt occurs the CPU jumps to the interrupt handler which is listed in a table called the 'interrupt vector table'. The handler saves the current CPU state, deals with the interrupt, restores the initial state and exits. Irq. No. - The number of the software interrupt in hexadecimal. 16:16-bit Address - The address (16bit segment + 16bit offset) of the real mode interrupt handler. The real mode is the mode MS-DOS runs on. Handler - The name of the Windows module/device driver which handles the interrupt. (from the SiSoft Sandra Help File) Meaning that you actually have 8 basic IRQs (numbered 0-7). You'll probably find that one of them is not assigned to anything (in my case, it's #3, but that's flexible). This 'vacant' IRQ is actually a pointer to the second table, IRQs 8-15. Have fun. 20 years from now, your kids won't believe you. Gerardo