Creative Developers' Corner - Programmer's Handbook

Handling noise on IRQ7

Noise on the IRQ lines or and IRQ signal that falls too soon will generate a spurious IRQ7. This can cause strange lock up problems in your software because it will think that the Sound Blaster requested service when it really didn't.

To avoid this potential problem when the user configures your program to use IRQ7, simply check the corresponding ISR bit in your service routine. If it is set, the request is normal. If it is not set, the request was a false one. Below is an example in assembly how to read the interrupt controller and check the ISR bit for IRQ7.

     mov      al,0Bh         ; select PIC In Service Register
     out      20h,al         ;
     in       al,20h         ; read In Service Register
     test     al,10000000b   ; test for true IRQ7
     jz       EOI_Exit       ; if zero, false interrupt, exit IR


Creative Zone Developers' Corner ©1996 Creative Labs, Inc.