Tony Duell wrote:
DOS-based
software containing its own UART driver. I don't even want to
think about trying to make that work on a PCI card RS232 port.
What is the great
problem with doing this?
To be honest, I've never really looked into it in
detail. The PCI bus
interrupt sharing thing always sort of scared me off from going any
All decent buses allow you to share interrupts -- the ''design' of the
interrupt suystem on the ISA bus is one reason to hate that bus..
Very well designed buses (Unibus :-)) have each card send an interrupt
vector which directs the CPU to the right ISR.
I'm really getting off into
something I know absolutely nothing about
here, but I'm just curious as to how each card knows what interrupt
vector value to send? Jumpers/switches on each card? A "Unibus
Interrupt Vector Value Guru" somewhere who assigns the values? other
scheme?
One others (e.g. HP's
DIO-1 bus, the ISR has poll each card using that
interrupt level to see
if it's the source of the interrupt.
I've used an 8-UART RS232 card on ISA
bus under DOS that worked
something like that. It generated only 1 interrupt and the software had
to look to see which UART or UARTs caused the interrupt. Actually works
rather well if used judiciously. By judiciously I mean driving 8 modems
at not more than 33,600 baud worked really well. This was in the days
when a 386 was considered a really fast CPU too. :-)
I assume PCI does something like
that,
further. Maybe it's not as bad as I
visualize. Actually, it's probably
worse than I imagine. I do recall that a contractor friend of mine
wrote a Windows driver for a custom PCI card designed by the EE's at a
company I once worked for. His discussion of that effort did not make
me very optimistic either. I'll have to ask him more about it some
time. There is obviously a great deal I don't know about this. I
Nor me. as I said, I don't own a PCI machine (and probably never will)
probably should become more informed before
exposing my vast ignorance
any further. :-)
OK, just for grins I Googled "PCI bus I/O address" (without the quotes).
Looks like there is some sort of scheme where BIOS talks to each PCI
card on power up and dynamically assigns the I/O addresses for each card
within the 32-bit PCI I/O address space - whatever/wherever that is.
YEs, that was part of the 'no configuration links/switches' idea. I am
not sure thats' a Good Thing, but it can't be too hard to work with.
Must have been invented by the same folks who
invented USB enumeration!
Plenty of machines, including many classics, had some form of
autoconfiguration. Having doen battle -- and won -- with the HP71's
automaticlaly coffiguriuig nmemory, I can't beelive this is any worse.
Having
seen bits of PCI card design, I am glad I design cards for my
classics with ISA, Unibus, DIO-1, etc buses. Those I can understand and
wire up a card for any one of them in a couple of hours...
I feel rather the same
way about the ISA bus. It surely was/is a nice
and easy interface. I suppose I'd have to admit the PCI bus has its
The ISA bus is easy to design cards for (it's basically just the 80x86
bus) but it does have that horrible interrupt system. The idiot who came
up with the idea of active high, edge triggered, interrupt should be
condemned to spenmd eternity in a part of hades having to design complex
ISA cards and write drivers for them. He would then realise wby everyone
else used active low level triggering.
It has been a blessedly long time since I
had to write code to configure
a PIC (intel Priority Interrupt Controller) but ISTR they can be
initialized for either polarity and for either edge or level triggering.
What I don't remember is whether this could be done uniquely for each
IRQ input or whether it was a global setting for all 8 inputs to the
part. I'd go look it up, but I don't want to make my head hurt - - -
again. What I'm suggesting is that the guy who decided on high-going
edge-triggering may have been a software dummy rather than a hardware
one. :-) Totally different subject, but I figure there's gotta be a
special corner of hades reserved for whoever invented segment:offset
addressing as well...
advantages, such as solving the "out of
interrupts" problem (I think).
I'm pretty sure it was not designed with the electronics hobbyist in
mind, but then not a lot of things are - the economic impetus is just
not there I'm afraid.
Alas not. But PCI is notably harder to design for than many of the older
buses, which may well also not have been designed with the hobbyist in
mind,but at least a serious hobbyist could wire-wrap an interface card
and expect it to work.
-tony