"When doing a CALL or GOTO instruction, the user must ensure that the page select bits are programmed so that the desired program memory page is addressed. If a return from a CALL instruction (or interrupt) is executed, the entire 13-bit PC is popped off the stack." Does this mean that the PCLATH <4,3> will still be set according to Page1 after the return, so that I need to clear the PCLATH register again after the call returned from page 1(or rather before the nect call or goto instruction)? For example: org 0x500 ;page 0 main .... #page_1 ;macro{PCLATH <0,1>} call sub4 ... #page_0 ;macro{PCLATH <0,0>} ??? call sub2 ... #page1 call sub4 ;all in page 1 call sub5 call sub6 ... #page_0 goto main ... sub2 return ... sub3 return org 0x800 ;page 1 sub4 ...... #page0 call sub3 #page1 ;??? ... return sub5 ... return sub6 ... return end or should I just put a pagesel before each and every call or goto? (I did not write the code for paging from the start) What is the norm here? Regards Francois -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist