>This fault results in the text strings beyond the 2k page boundary being >inaccessible. > Lee, Have you got more than 2k of text? If not, why don't you put all of it in it's own 2k space? (with the ORG directive.) You need to include (in the same 2k-block) the short segment of code that reads the characters (for the 'RETLW char'to work). So: 1)disable interrupts 2)move into PCLATH the high byte of the address of your text-stuffing code 3)CALL this code (in the other 2k block) 4)this code can now set PCLATH for the piece of text you want at the time - and the RETLW's will work fine 5)when you've finished stuffing characters or whatever, move the high-byte of the original code on the low 2k-block back into PCLATH 6)RETURN 7)reenable interrupts The reason you need to disable interrupts is that the GOTO INTERRUPT statement you (probably) have at address 0x0004 will fail because bits 11,12 of PCLATH point at the wrong 2k-block. You can get around this by either repeating the interrupt code in the same place in the 2k-block with the text (a waste of space) or actually putting the interrupt code at 0x0004 instead of a GOTO, and then save and restore PCLATH before doing any CALLs or GOTO's. Anyway, the point of this message is: Don't cross a 2k boundary while reading the text, put all the text on its own. Then you only have to cross that boundary before, and after, writing the text. Hope this helps, Alec