These problems can be very hard to trace, especially in large multi page programs. As the processor is very obedient, it likes to do what it is told and not what we want it to do. It sounds as though you forgot to set/reset a ROM or RAM page bit correctly when you transferred your code to the upper page. This may be painstaking, but you may have to trace your code through with MPSIM. Set a break point at the first instruction of the interupt routine and see if it does break at that point. If it does, follow your code through the interupt. If it doesn't get to the interupt break point you will have to monitor your code to see if a page bit is changed to the wrong state. Make sure that the status etc. are restored correctly after the IRQ. I would concentrate on monitoring the code that you moved. You can also try 'steering' the program to code that you want to test by using GOTO's to bypass excessive timing loops etc. and to test certain code fragments. This makes debugging a little easier with larger programs FrUstratioN is part of the fun of programming. Hope this helps Tony Just when I thought I knew it all, I learned that I didn't.