1. sfx2.e and irq's higher than 7

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

new topic     » topic index » view message » categorize

2. Re: sfx2.e and irq's higher than 7

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

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu