> Thanks to the many replies which I have recently received on the > subject, I can see that the first look-up table does not present much of a > problem providing that it's position in program memory is such that the base > address of the table plus the highest possible string number (4 in my case) > is sufficiently far enough away from a 256 byte boundary to cause the program > counter to fold over from 11111111 to 00000000. The problem is the look-up > tables associated with each message string which follow in succession; how on > earth do I cope with these ?. If both tables fit within 256 bytes, everything is nice and easy. If the messages all fit in 256 bytes, even if they can't share the page with the table, then things are still pretty easy; you simply need to set PCLATH to the first table, do the lookup, set it to the second table, and then retrieve all the characters of the string. If you have more than 256 bytes' worth of messages, I think you're prob- ably best off dividing the messages into groups, where each group fits within a page and where the groups may be identified by message number (e.g. if you have 8 messages, you could have 0-3 in one group and 4-7 in another). More general solutions are possible, but can be a lot more work.