> am: > bsf PCLATH,3 > call SPLASH > bcf PCLATH,3 > goto am > > org 0x800 > > SPLASH: > movlw 0x80 = > > movwf ARG1 > call SendLCDCommand > call Delay > movlw _T > call Send_LCD_Data > movlw _e > call Send_LCD_Data > movlw _s > call Send_LCD_Data > movlw _t > call Send_LCD_Data > return > > end You set PCLATH correctly before calling SPLASH and restore it afterwords, but you forgot to do this inside SPLASH when calling SENDLCDCOMMAND, DELAY, etc. You should check out my GCALL and related macros in STD.INS.ASPIC at http://www.embedinc.com/pic. GCALL (Global CALL) automatically does the PCLATH diddling before and after calling a subroutine. MCALL (Module CALL) is for calling a subroutine withing a module, which is assumed to be all within one page. ******************************************************************** Olin Lathrop, embedded systems consultant in Littleton Massachusetts (978) 742-9014, olin@embedinc.com, http://www.embedinc.com -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.