I have tested this code and it works!

Code:
DEFINE OSC 40 ' 10 MHz XTAL AND X 4 INTERNAL PLL 
'DEFINE I2C_SLOW 1
SDA         VAR PORTD.2       ; I2C Data pin
SCL         VAR PORTD.3       ; I2C Clock Pin
LCD_Addr CON 78
'LCD_BuffSize    CON 30
'LCD_Buff        VAR BYTE[LCD_BuffSize]
'LCD_BuffAddr    CON EXT : @LCD_BuffAddr = _LCD_Buff
'LCD_BuffLen     VAR WORD        ; Length of data in buffer
LCD_Data        VAR BYTE        ; Data to Send to LCD
LCD_Byte        VAR BYTE        ; Nibbles to Send
LCD_RS          VAR LCD_Byte.0  ; Register Select bit
LCD_RW          VAR LCD_Byte.1  ; Read/Write bit
LCD_E           VAR LCD_Byte.2  ; Enable bit
LCD_BackLight   VAR LCD_Byte.3  ; Backlight 0=ON
LCD_WriteMode   VAR BYTE        ; 1=LowNibble, 2=HighNibble, 3=Both
LCD_CommandMode VAR BIT         ; Indicates next byte is a command
LCD_Byte2       VAR BYTE        ; Same nibble without E bit
LCD_Idx         VAR BYTE
testmode        var byte



;----[Initialize the LCD]-------------------------------------------------------
PAUSE 250             ; LCD Power-on delay
LCD_Backlight = 1     ; Backlight OFF
LCD_RW = 0            ; Write to LCD
LCD_RS = 0            ; Command Register

LCD_WriteMode = 1     ;-- Low Nibbles only
LCD_Data = 3          ; Reset 3 times
gosub LCD_Write_
PAUSEUS 6000
gosub LCD_Write_
PAUSEUS 1000
gosub LCD_Write_
PAUSEUS 1000

LCD_Data = 2          ; Start 4-bit mode
gosub LCD_Write_
PAUSEUS 1000

LCD_WriteMode = 3     ;-- Both Nibbles
LCD_Data = $28
gosub LCD_Write_      ; Function Set, 4-bit, 2-line, 5x7
LCD_Data = $0C
gosub LCD_Write_      ; Display ON
LCD_Data = $01
gosub LCD_Write_      ; Clear Screen
PAUSE 2
LCD_Data = $06 
gosub LCD_Write_      ; Entry Mode
                       
PAUSE 2               ; Let command finish
LCD_RS = 1   ' this is data
goto main

LCD_WRITE_:
   LCD_E = 1
   IF LCD_WriteMode.1 = 1 THEN                             ; Write High Nibble
     LCD_Byte = (LCD_Byte & $0F) | (LCD_Data  & $F0)
     LCD_Byte2 = LCD_Byte & $FB    
     I2CWRITE SDA,SCL, LCD_Addr,[LCD_Byte, LCD_Byte2]
   ENDIF
  
   IF LCD_WriteMode.0 = 1 THEN                             ; Write Low Nibble
     LCD_Byte = (LCD_Byte & $0F) | ((LCD_Data << 4 )& $F0)
     LCD_Byte2 = LCD_Byte & $FB
     I2CWRITE SDA,SCL, LCD_Addr,[LCD_Byte, LCD_Byte2]
   ENDIF
return

Main:
LCD_Backlight = 0
LCD_Data = "T"
gosub LCD_Write_: PAUSEUS 50
LCD_Data = "e" 
gosub LCD_Write_: PAUSEUS 50
LCD_Data = "s" 
gosub LCD_Write_: PAUSEUS 50 
LCD_Data = "t" 
gosub LCD_Write_: PAUSEUS 50 
pause 500
LCD_Backlight = 1
LCD_Data = "-" 
gosub LCD_Write_: PAUSEUS 50 
pause 500
goto main