rdthomps@vela.acs.oakland.edu (Robert D. Thompson) (06/24/91)
One of the drawbacks of Windows *3.0* is that it seems that you can only use two COM ports simultaneously. This seems to be due to Windows "re-routing" interrupt requests for who-knows-why. The default settings for IRQ in the system.ini are, COM1Irq = 4 COM2Irq = 3 COM3Irq = 4 COM4Irq = 3 Obviously under this scenario you could not have two devices working simultaneously off Irq4 (COM1, COM3). However, you can change the Irq to other values. However2, setting one to Irq2 or Irq5 does not work because all IRQ2's also cause a subsequent IRQ4. Why did Mickysoft do this? If the Irq was needed *and used* than it would be fine. As it stands, IRQ2's seem to be routed to IRQ4's and IRQ5 seem to be routed to IRQ3's. WHAT A WASTE !!! Now for my question, Has anybody had luck with IRQ9 ???? Or any other IRQ for that matter. My modem only allows me to set the Jumpers for IRQ2 or IRQ5. I would appreciate any comments from anyone who has been able to get the other IRQ's to work *simultaneously*. Thanks...Regards |(8> --- Robert rdthomps@vela.acs.oakland.edu
bcw@rti.rti.org (Bruce Wright) (06/25/91)
In article <7485@vela.acs.oakland.edu> rdthomps@vela.acs.oakland.edu (Robert D. Thompson) writes: > > One of the drawbacks of Windows *3.0* is that it seems > that you can only use two COM ports simultaneously. > > This seems to be due to Windows "re-routing" interrupt > requests for who-knows-why. > > The default settings for IRQ in the system.ini are, > > COM1Irq = 4 > COM2Irq = 3 > COM3Irq = 4 > COM4Irq = 3 > > Obviously under this scenario you could not have two > devices working simultaneously off Irq4 (COM1, COM3). > > However, you can change the Irq to other values. > > However2, setting one to Irq2 or Irq5 does not work > because all IRQ2's also cause a subsequent IRQ4. > > Why did Mickysoft do this? I'm not a great fan of Microsoft, but they _didn't_ do this. The root of the problem you're talking about is with the way that IBM chose to assign the interrupt numbers on the PC - it doesn't make much sense. When Intel produced the 8086, the interrupts from 0x00 through 0x1f were to be _reserved to Intel_. Not to be used for the BIOS, or for device interrupts, but for future expansion of the CPU and its support circuitry (like the 80286 and the 80386). In this case, Microsoft listened to Intel and used interrupts 0x20 through 0x2f for MS-DOS. Unfortunately, the engineers at IBM never thought that the PC would amount to all that much, or be around for all that long; so they appropriated those interrupts for themselves. This caused problems when the 80286 came out (there were new interrupts that the ROM-BIOS had to try to interpret and revector if they weren't intended as ROM-BIOS requests). It also meant that there was no contiguous expansion space if you wanted to add more device interrupts (there were also some issues regarding the interrupt controller circuitry but those are separate from the issue of allocation of interrupt numbers). Everything broke big time when the AT came out - many programs stopped working, there were lots of compatibility problems with the ROM-BIOSes not being able to revector interrupts properly in all cases, etc. All totally unnecessary if IBM had been thinking ahead even a little. Most of these compatibility problems have been solved by the layering of kluge upon kluge in the BIOS and the OS, but there are still some visible seams such as the one you found. Now it is perfectly possible to service more than one device on one IRQ line if there is a provision in the interrupt service routine for chaining the interrupt. Your performance will go down, but things can still work, given sufficient CPU. I _don't_ know offhand if Windows allows this - if it doesn't, you may have a legitimate beef with Microsoft; but it could also be argued that chaining the interrupt should not be encouraged because of the added burden it places on the CPU. There are a lot of warts like this in the IBM-PC design as it has evolved over the years ... Bruce C. Wright