daved@cscnj.csc.COM (Dave Douglass) (11/28/89)
I'm trying to use an Exabyte 2.8 Gig 8mm Cartridge Tape Subsystem with a WD7000-ASC SCSI controller on an AT. I'm trying to read a tape written by the Exabyte while it was connected to a Sun. My device driver isn't working. I believe that I am missing some vital piece of information about how interrupts work on the AT. Below are some details. Any suggestions would be appreciated. ---------------------------------------------------------------------------- The controller uses DRQ/DACK 6. It takes control of the bus during DMA, and so I've set channel 6 on the AT's DMA chip into cascade mode and removed the mask. I configured the controller to use IRQ12. I set up an interrupt service routine and installed it with INT 21h, AH=25h. I removed the mask for IRQ12. My service routine sets a flag, strobes a port on the WD7000 to acknowledge the interrupt, send an EOI to the AT's interrupt chip and IRETs. The first command executed by the WD7000 and tape drive executes and returns flawlessly. The DMA is performed properly and the interrupt service routine is invoked on completion. The second command to the WD7000 executes. The DMA is performed. The interrupt occurs. However, the service routine is never called. The hard drive (on IRQ14) now fails and puts the AT into an endless loop of 'Abort, Retry, Ignore' messages. On inspection, the mask register and interrupt vector table entries are as they should be. I've tried reconfiguring the controller and driver to use IRQ5. The first command executes and DMA is performed. The interrupt occurs. The interrupt service routine is never called. On inspection, the interrupt mask register has been mysteriously reset to mask off IRQ5. Although this avoids hanging the entire system with each run, it is impossible to complete even one command. I suspect that ONE of my problems may be that I've forgotten to make certain key sections of my code 'critical' using CLI and STI. Right now I only do this when changing the interrupt mask register. Where else should I prevent interrupts from occurring? Help. -- --------- Dave Douglass Computer Sciences Corporation Piscataway, NJ 08854 ....!rutgers.rutgers.edu!cscnj!daved