not having good luck here, this is getting something but not sure what its doing. my "Char" decimal is anything from 062 to 640, its a bit random, and not sure whats up.
I am sending a single character from the PC using its ascii code from 0 - 255, the pc sends corrosponding letter., ive tried multiple letters it dont matter. changing by 1 doesnt change the result, its weird. but heres my code if anyone sees anything off. oh and my pc is set up as 8N1 no parity@9600

Code:
INCLUDE "LCD_D.bas"

define OSC 4                               ' PORTA is input
define HSER_BAUD 9600
DEFINE HSER_CLROERR 1
RCSTA = $90
TXSTA = $24
TRISD = 0                               ' PORTD is output

Char   var byte    ' character input

Mainloop:
hserin 5000, Timeout, [Char]

LCDOUT $FE, 2
LCDOUT $FE, $80
LCDOUT "MY DATA = ", DEc Char
             
PAUSE 20                                ' Wait 20 ms
GOTO mainloop                           ' Repeat

Timeout:
pause 10
goto mainloop  
END