[comp.sys.ibm.pc] DigiBoard MC/X interrupts?

richgi@microsoft.UUCP (Richard GILLMANN) (03/13/90)

I've been trying to get some interrupt driven code to work
with the DigiBoard MC/8 board and not having much luck.  The
MC/8 board has eight serial ports on it plus some hardware that
provides a status port, which one can use to tell which port
generated an interrupt.

I have code (essentially the same as COMPKG2 from the Info-IBMPC
archives) that works fine with the regular AT bus DigiBoards,
and also works fine with the regular two PS/2 serial ports, but
it doesn't work with the MC/8.  (The MC/8 is the PS/2 MCA bus
equivalent of the DigiBoard Com/8 card).

What happens is that as soon as my code enables the Interrupt Enable
Register for transmit interrupts, the machine hangs.  It never
gets to the interrupt code.  The DigiBoard tech support folks don't
seem to know much.  Has anyone had this same problem and figured it
out?  I'd sure appreciate a clue.

Richard

tjc@digibd (T. J. Carter) (03/21/90)

richgi@microsoft.UUCP (Richard GILLMANN) writes:

>I've been trying to get some interrupt driven code to work
>with the DigiBoard MC/8 board and not having much luck.  The
>MC/8 board has eight serial ports on it plus some hardware that
>provides a status port, which one can use to tell which port
>generated an interrupt.

>I have code (essentially the same as COMPKG2 from the Info-IBMPC
>archives) that works fine with the regular AT bus DigiBoards,
>and also works fine with the regular two PS/2 serial ports, but
>it doesn't work with the MC/8.  (The MC/8 is the PS/2 MCA bus
>equivalent of the DigiBoard Com/8 card).

>What happens is that as soon as my code enables the Interrupt Enable
>Register for transmit interrupts, the machine hangs.  It never
>gets to the interrupt code.  The DigiBoard tech support folks don't
>seem to know much.  Has anyone had this same problem and figured it
>out?  I'd sure appreciate a clue.

>Richard

I think the blunt of your problem is that the DigiBoard MC/8 uses a
different interrupt register scheme then the COM/8.

The Com/8 interrupt status register
delivers the channel number of the interrupting UART in bits 0-2, with
a 000 representing port 1. This value is often used by software as an
offset into a jump table. When no interrupts are pendind a value of 0xFF
is returned.

The MC/8 uses an entirely different scheme. The MC/8 uses one eight bit
register to simultaneouly represent all of the channels interrupt status.
Bit 0 is used to indicate channel ones interrupt status, bit 1 channel twos
interrupt status and so on. When a bit is set there is a interrupt pending
on the cooresponding channel. A value of 0xFF indicates interrupts pending on
all eight channels. The values returned by the MC/8 interrupt status 
register are not useful as indexes into a jump table.

I am sorry to here that our tech support people were not able to help
with this. If you have any further problems feel free to call and ask for
me, I should be able to answer any questions.


T.J. Carter
Senior Member of Techinal Staff - Hardware
DigiBoard, Inc.
UUNET Address : digibd!tjc