Re: sfx2.e and irq's higher than 7
- Posted by Gerardo <gebrandariz at YAHOO.COM> May 16, 2001
- 407 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