Hello All, Firstly thank you very much for the many replies which I have received regarding the operation of the PCLATH register. Unfortunately however, after studying the various suggestions and recommendations I am still unsure about where in my program listing the modifications should be made. I think the problems which I am experiencing are due to the fact that I am using a 'non standard' method of look-up table implementation, based on a dual table approach in which the first table is used to determine the message offset into second table which contains the actual text message strings to be printed. - I got this idea from a web page titled "Complex table lookups - text strings". I plan to utilize the method described by Eric van Es which is similar to example 5 in AN556, but due to the added complexity of the dual table approach I am unsure as to where the MOVLW HIGH, MOVWF PCLATH etc. etc. instructions should be placed. - (i.e. should I place these instructions before each and every look-up table text string: string0, string1 string2 etc. or should these instructions only be placed in the first look-up table, prior to the call instruction which calls the actual text string tables - this though would foul up the rlf process to skip the goto instructions ?). Also since I have multiple look-up tables, do I have to ORG each table and consequently provide multiple HIGH and LOW table base address variables in order to store the HIGH and LOW byte for each table ORG ? - surely there must be a simple solution to this. 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 ?. Below I have included the basics of my code if anyone can possibly see a simple solution to this problem. - I really am quite embarrassed to bother you again after all the trouble you have already gone to. The instructions inside the << >> brackets are what I propose to include before each and every text string table, however I have only included these instructions before srting0 in case I am incorrect. In the main program loop I call the desired text message: movlw message_1 ;message_1 equ 0x00 in prototype call write_string