Line 77 if ( !irq_ctr & 0x8000 ) ! is evaluated before &, so the full expression always evaluates to false. Missing parens?