Andy was kind enough to E-mail me his solution to the problem, and I tried it this morning before I left for work, and it still did the same thing. All I saw on the LCD was a blinking cursor. Would I normally have to modify (put any PCLATH assignments) on any calls that go over the first page? (like call $+2, etc.) The part that puzzles me is that the table lookup code and the table are both on the first 256-byte page, but the routine that gets pushed off the page is usually something simple like a delay subroutine. I guess I'll wait to see what other responses suggest. Thanks, Andy. This PCLATH thing kind of hits you off guard when you're first starting! Ryan >>Ryan Erickson wrote: >> >>> I have a table lookup, at the beginning of my program, which has >>> worked fine. The program doesn't work, however, if I put enough >>> data in the table to push the rest of the program (not the table) >>> over 0x100. >> >>Ryan: >> >>Modify your code as follows: >> >> PrintLine >> call ClearScreen >> movf Line, w >> addlw 1 >> call PrintNum >> >> MOVLW HIGH (StringTable) ;<--- Insert this line. >> MOVWF PCLATH ;<--- Insert this line. >> >> movf Line, w >> call StringTable >> movwf StrPtr >> >> sendloop >> >> MOVLW HIGH (Strings) ;<--- Insert this line. >> MOVWF PCLATH ;<--- Insert this line. >> >> movf StrPtr, w >> call Strings >> >>-Andy >> >>=== Andrew Warren - fastfwd@ix.netcom.com >>=== Fast Forward Engineering - Vista, California >>=== http://www.geocities.com/SiliconValley/2499 >> >> >> >