Here's some stuff I wrote about 5 years ago. MsgToLcd macro msg ; Set up table pointers and send a messag to LCD movlw upper(msg) movwf tblptru movlw high(msg) movwf tblptrh movlw low(msg) movwf tblptrl call LcdMsg endm LcdMsg ; Put up a message pointed to by tblprt (u:h:l) tblrd *+ ; Read the table character to tablat, then increment tblptr movfw tablat ; Get the character from the table addlw 0 ; Test w (above may not set condition codes correctly) skpnz return ; if we just got a zero byte, exit call LcdPutChar ; Go put it on the LCD goto LcdMsg ; Go do next LcdSignOnMsg call LcdClear call LcdCursorOff msgToLcd(signOnMessageL1) call LcdRow2 msgToLcd(SignOnMessageL2) return SignOnMessageL1 db " IQ512",0 ; Line 1 - Message with terminator SignOnMessageL2 db "dovesystems.com",0 ; Harold -- FCC Rules Updated Daily at http://www.hallikainen.com - Advertising opportunities available! -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist