Truncated match.
PICList
Thread
'Multitasking without interrupt. Rather [OT]?'
1999\05\19@174749
by
paulb
|
Peter van Hoof wrote:
> Actually .... I disassembled the print.exe of dos 6.0 today, just to
> satisfy my curiosity (there is nothing much on the net about old
> technologie) and print seems to use one of the oldest multitasking
> mechanisms around (in dos and windows) the msdos multitask interrupt.
> and this is timer driven
Just another small part of the mystery of the PC. The printer port
was fitted with an interrupt mechanism so that it could be efficiently
interrupt driven. The interrupt mechanism has a tri-state gate so the
interrupt can be shared. That is why it *is* usually shared or perhaps,
subverted by the sound card on IRQ7. Because ... they never *used* it
to efficiently drive the printer (I too have disassembled print.exe!).
More silliness. (Older) network cards tend to be set to IRQ3 by
default. WIN95 assumes this which is *totally insane*, given that all
machines since it was introduced are (quite properly) fitted with *two*
serial ports, the second of which is hard-wired to IRQ3, generally
cannot be disconnected from IRQ3 even if the serial port is disabled
(but *why* would you relinquish a serial port anyway?).
This is because the IBM version of the serial port, like the printer
port, *had* a tri-state gate on the IRQ line but no-one (well, certainly
not ...) could write OS code to utilize it to share the IRQ so -
manufacturers decided it wasn't wanted and designed it out.
Consequently, you have to set the network card to use IRQ5, which is
*why* you must use IRQ7 for the sound card. It's not so bad if you use
a 16-bit network card and can use the higher IRQs, but WIN95 was too
dumb to figure this out itself. That's why setting up PCs is a tricky
business.
You think it's all sorted nowadays?
<infernal laughter> Maybe? </infernal laughter>
--
Cheers,
Paul B.
1999\05\19@184208
by
William Chops Westfield
I tri-state gate on a interrupt line is NOT what you'd want to use if the
interrupt were sharable. Two systems that decide to DRIVE the interrupt
line at the same time would still cause problems. You need something like
open-collector lines instead.
My understanding is that no one implemented shared interrupt drivers because
the hardware was essentially broken...
BillW
1999\05\20@125503
by
John Payson
|
|I tri-state gate on a interrupt line is NOT what you'd want to use if the
|interrupt were sharable. Two systems that decide to DRIVE the interrupt
|line at the same time would still cause problems. You need something like
|open-collector lines instead.
IBM in their infinite wisdom decided to have the interrupts
on the PC be active high. Thus, the simplest way of making
a driver that can share the line is to use a 3-state buffer
chip whose input is always high; the enable on the buffer
then switches the output between floating and high.
|My understanding is that no one implemented shared interrupt drivers because
|the hardware was essentially broken...
In another piece of their infinite wisdom, IBM decided to
make interrupts edge-triggered rather than level-controlled.
Sharing a level-controlled interrupt is easy: simply have the
ISR check the state of any device which could cause the int-
terrupt. Even if a device earlier in the testing sequence
starts asserting IRQ while a later device is being checked,
the device will keep IRQ asserted until it's acknowleged;
this in turn will force the CPU to re-execute the ISR from the
start, and detect the interrupting condition which it earlier
had missed.
Edge-triggered interrupts are much harder to share reliably:
after any interrupting device is dealt with it's essential to
re-poll *ALL* the devices that could assert the interrupt line.
Returning from an interrupt when a device on the line has not
yet been serviced will effectively put that IRQ line out of
commission. Annoying...
1999\05\20@130943
by
Dave VanHorn
-----
> IBM in their infinite wisdom decided to have the interrupts
> on the PC be active high. Thus, the simplest way of making
> a driver that can share the line is to use a 3-state buffer
> chip whose input is always high; the enable on the buffer
> then switches the output between floating and high.
My understanding was that the PC came about as a way to control the market,
and help prevent erosion of their mini sales. Since the PC explosion was
going to happen anyway, this was an opportunity to poison the well by
introducing a functional but broken standard.
Here we are, still bound by our peripherals. They blew it with the PS-2
line, when they apparently didn't understand how well bound we were. All you
had to do was dump your entire in-box investment and buy a new one, to get
on board with a much better hardware system.. Anyone running PS-2?
Then we had the comical re-invention of the PS-1, as a face-saving fallback.
1999\05\21@093548
by
paulb
John Payson wrote:
> IBM in their infinite wisdom decided to have the interrupts
> on the PC be active high. Thus, the simplest way of making
> a driver that can share the line is to use a 3-state buffer
> chip whose input is always high; the enable on the buffer
> then switches the output between floating and high.
That's true, but *not* what was implemented.
>> My understanding is that no one implemented shared interrupt drivers
>> because the hardware was essentially broken...
I agree, that is the long and short of it.
> In another piece of their infinite wisdom, IBM decided to
> make interrupts edge-triggered rather than level-controlled.
If my previous comments were to convey the impression that the PC
design was, and parts of it remain, anything other than an overall
balls-up, then please forgive me.
--
Cheers,
Paul B.
More... (looser matching)
- Last day of these posts
- In 1999
, 2000 only
- Today
- New search...