HELP! I've just gone over the 2K boundary on my '73 project and am looking for easier ways of dealing with the page bits. I started off with Steve Hardy's code from a few weeks ago, as follows: ; Expands to 1 or 3 instructions, depending on whether cross-block call. perform macro routine if (routine & 0x800) != ($ & 0x800) if (routine & 0x800) [optionally disable interrupts] bsf pclath,3 else bcf pclath,3 endif call routine if ($ & 0x800) bsf pclath,3 else bcf pclath,3 [optionaly enable interrupts] endif else call routine endif endm However, I get what appears to be assembler phasing errors because the instruction added to modify PCLATH moves the rest of the code by 1 byte on the second pass of the assembler. So: I did it the "manual" way, as follows: xcall MACRO routine ;flip page bit if ($ & 0x800) bcf PCLATH,3 else bsf PCLATH,3 endif call routine if ($ & 0x800) bsf PCLATH,3 else bcf PCLATH,3 endif endm In this case, I simply looked at the my listing to see where the assembler warned that I was crossing the page boundary, then replaced those calls with xcalls. So far, so good. Now what I would like is some way for the macro to not allow the assembler to generate the "crossing page boundary" warning where I have already used xcall. I suppose that I could try turning the message off, then back on before and after the actual call, but I was hoping that someone else has a better way. I recall that Andy Warren had some macros written for the '57 where he used DATA statements to synthesize the appropriate commands. I'm going to look for those messages again and see if I can modify the macros to work on the '73. Andy - have you already done that; if so, can I use them in my [commercial] project? Everyone: ideas, opinions, suggestions? Thanks, gang! Dwayne Reid Trinity Electronics Systems Ltd Edmonton, Alberta, CANADA (403) 489-3199 voice (403) 487-6397 fax