Back to: Native Oberon Hardware Compatiblity List
Multiple Industry Standard Architecture (ISA) devices cannot share an ISA IRQ (except the serial ports); however, multiple PCI devices can share a PCI IRQ. On computers that use a PCI bus, the 16 standard IRQs can be programmed to either PCI or ISA mode. An IRQ cannot be programmed for both modes at once. IRQ assignment conflicts are analyzed and ways to solve then are discussed.
How IRQs are assigned to ISA devices in Oberon
|0 (F) (S) ||System timer ||Kernel |
|1 (F) (S) ||Keyboard controller ||Input |
|2 (F) ||Programmable Interrupt Controller - remapped to IRQ9 ||Kernel |
|3 ||Normally COM2. Often shared with COM4. ||V24 |
|4 ||Normally COM1. Often shared with COM3. ||V24 |
|5 ||Spare. Normally LPT2. || |
|6 (F) ||Floppy disk controller ||Diskettes |
|7 ||Spare. Normally LPT1. || |
|8 (F) (S) ||System CMOS/real-time clock ||Kernel |
|9 (F) ||Spare || |
|10 ||Spare || |
|11 ||Spare || |
|12 (F) ||PS/2 mouse port ||Input |
|13 (F) (S) ||Spare on Pentium machines. For older processors: Floating point unit (FPU) 387 compatible ||Kernel |
|14 (D) ||Primary IDE controller ||ATADisks |
|15 (D) ||Secondary IDE controller ||ATADisks |
(F) Fixed, hard-coded
(D) Dynamically evaluated by the system itself
ATADisks.Mod - confirmed in KernelLog
Adaptec7.Mod - confirmed in KernelLog
Net3Com509.Mod - confirmed in KernelLog
NetNe2000.Mod - not
UsbUhci.Mod - confirmed in KernelLog
Sound.Mod - not
(S) For system use only
IRQs communicated to the system via Oberon.Text:
The IRQ of a sound card must be specified in the Sound.Audio section. Preset to 7.
The IRQ of a Atapi CD-ROM must be specified in the Sound.CDAtapi section. Preset to 15.
The IRQ of a Mitsumi CD-ROM must be specified in the Sound.CDMitsumi section Preset to 10.
The IRQ assigned to PCI and AGP devices can be determined by executing the PCI analyzer command PCITools.Scan .
For a detailed discussion of the IRQs cfr. IRQ Details By Number.
How to avoid conflicting ISA IRQs
Here are some general ideas on how to allocate the limited number of IRQS.
- Make an inventory of the IRQs required by the components. Consider the ISA legacy devices first, since they might have jumpers to set and it takes opening the case.
- If you are using a PnP motherboard, go into the System Setup and check if "PnP OS installed" is set. If it is, reset it.
- If the motherboard offers it, reserve the IRQs for the ISA legacy devices.
- In the System Setup, disable the devices which will not be used, such as IRA, USB, serial or parallel port, etc. The parallel port may easily be dispensed with; use a network printer by preference.
- If the motherboard offers it, set the IRQ of the PCI slots manually or let the BIOS assign automatically.
- Some old PCI cards just don't want to function in new mainboards, especially PCI 2.0 cards in PCI 2.2 mainboards.
For developers: How to control an IRQ by program
An interrupt handler is installed with the Kernel.InstallIP procedure and the interrupt is enabled by the Kernel. The procedure "p" must be defined as a normal "PROCEDURE p;". On entry to p, interrupts are disabled and may be enabled with SYSTEM.STI(). At exit from p, the state of interrupts are restored. The acknowledgement of a hardware interrupt is done by the Kernel. No end-of-interrupt has to be signalled explicitly in procedure p. IRQs are mapped starting at interrupt Kernel.IRQ.
At entry to procedure p the stack is as follows:
48 EIP'' (IRETD from glue code)
20 ESP' (overwritten)
04 EIP' (RET from p)
00 EBP' <-- EBP
xx locals <-- ESP
22 Jul 2002 - Copyright © 2002 ETH Zürich. All rights reserved.
E-Mail: oberon-web at inf.ethz.ch