It is likely when you enter your ISR, BSR is not 0. You can use PBP stuff in your ASM interrupt as long as you don't use any PBP stuff that uses system variables. These are things like serin/out, adcin, debug etc.

The thing you MUST do when you first enter is BSR =0. Doesn't matter if you have all ASM or a mix. PBP assumes it is set to bank 0, when it needs a different bank, it will change to it, then change back when done that command. When your interrupt occurs, you may be in a different bank. Then none of you interrupt stuff will work correct. In fact, you may not even be able to clear the interrupt flag.

This MAY not be the problem right now, but it will be. I spent 2 weeks trying to figure this out. Since then my interrupts work great! Give this a try.

Now no need to worry if using on interrupt or DT_INT.