[inforoots] Interrupts (was 3 Key PC Reset...)

davebradley at nc.rr.com davebradley at nc.rr.com
Mon Apr 28 07:47:40 PDT 2008


You're correct.  "impossible to share" was hyperbole.  

I refer you to US Patent 4,631,670  Interrupt level sharing, Filed: July 11, 1984, in which Bill Ott and I describe a method that could allow ISA interrupts to share a level.  It requires all adapters using that interrupt level to play by the same rules, pulsing the IRQ line at the appropriate time, and participating in the chain of "is this yours?"  determinations.

I am unaware of any actual implementations of this patent.

You may recall that the early IO adapters for the PC decoded only the lower 10 bits of the 16-bit IO address.  Since most adapters used the lowest 4 bits for internal register addressing, that left only 64 IO address "slots" available.

For years after the PC announcement I was the one man architecture department that tracked interrupt and IO address usage.  It was a paper and pencil database that I updated whenever someone called to ask for an address or IRQ, or we found out about a third party product.  The best solution I could offer most callers was "use lots of bit switches" on the address/IRQ selection.  This was OK for those of us used to working on systems without the covers, but for the average customer, figuring out the right bit switch settings would have been a nightmare.  
Hence the importance of "Programmable Option Select" when the MicroChannel appeared.

I think that the rush to develop led to these problems.  The mission was "PC in a year" and that didn't allow time for considered architectural decisions, carefully reviewing the ramifications of each choice.  In the original PC there were 5 available slots (preISA) and 8 interrupt levels.  Timer and KB were on the system board, so that left 6 interrupts and 5 slots.  Not a problem, what's next?  Same thing with IO addresses.

Now, to be brutally honest, I mention the interrupt problem when an interviewer asks "What was the biggest problem on the PC?" or similar.  I think they're looking for something about the openness of the PC and the introduction of clones but instead I give them something very technical -- positive edge-triggered rather than negative-level interrupts.  Maybe I'm just asserting alpha-geek status.

Even with those technical demerits, it seemed to have worked out well.

Dr. Dave

> Actually, that was a self-fulfilling prophecy. Some of the late ISA
> cards could be made
> to _pulse_ the IRQ line low, for something like a microsecond. The IRQ
> would happen
> at the "end" of the pulse, or a little later if two cards happened to
> request at the same
> time. The software would do "the usual" chain of "is this yours?", and
> it would work
> only a little worse than a "real" negative level-sensitive IRQ. Or, it
> would have if there
> hadn't by then been a decade of software written with the assumption that it was
> "impossible to share interrupts", and thus avoiding all the stuff that
> typical (non-IBM-PC)
> systems had done for years. Stuff which, incidentally, made
> multtasking or at least
> async I/O easier. Sigh.
> 




More information about the inforoots mailing list