Andy Warren summarizes this thread as follows: => In order to avoid "truncation" warnings from MPASM, I suggested => that instructions like MOVWF TRISA be replaced by => MOVWF TRISA ^ 0x80 ('^' is the exclusive-OR operator). => => Jeff D. Pipkins then suggested that => MOVWF TRISA & 0x7F was preferable. => => I replied, explaining that XORing the register had a useful => side-effect: Any accidental application of the XOR to a page-0 => register would generate a warning. => => Dave Madden must not have understood, because => he wrote: => => [Jeff's method is better because it's simpler] Andy goes on to explain his MOVWF1 (MOVe W to a File register on page 1) macro in great detail, including an example showing how you get a warning if you accidentally use MOVWF1 to set a register that's actually on page 0. However, I contend that all the macro *really* does is force the programmer to prove to the assembler that he knows what page a register is on every time he uses one -- it doesn't (indeed, can't) determine if you're actually going to get the register you're asking for. So for this trivial bit of sanity checking you pay a correspondingly trivial price: you have two opcodes that evaluate to the same object code (MOVFW PORTA === MOVFW1 TRISA). I prefer a solution that allows me to use the same opcode in all cases (thus conserving my limited capacity to understand for the important task of making sure the page bits are set right), while Andy obviously prefers to prove that he knows what he's doing at all turns. Fair enough; perhaps we can move on to more interesting topics, like what to do about magazine advertisements, right after Andy gets the last word. d.