Pitfalls I have run into that may or may not be what you're up against: 1. FSR in a 57 may be pointing to any register bank on startup. The simulator might assume bank 0 always. Clear the FSR at the start of all 57 code that cares about the bank switching ability. 2. I've found SLEEP to not work sometimes if it's in the second half of a page. 3. You may have code that spills over a page boundary and uses jumps, in which case it jumps to the wrong page. My habit is to always include org 0, org 100h, org 200h ... org 700h in every '57 program, and put at least a nop at the top of each half page, so any time anything spills over, the assembler will tell you. 4. Never compare RTCC directly with anything. Move it to W first, or the PIC will give erroneous results. For instance, testing RTCC will never set the Z bit, even though if you repeatedly move RTCC to W and test W you'll see zero every 256 ticks. 5. Remember to reset page select registers after a call to a subroutine not on the current page. Otherwise, local jumps aren't ;^) Good luck finding your problem. I've discovered most of these by putting checkpoints in where I flash LED's or whatever, until I figure out what's wrong. David