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