Are you sure it's not just an inverted vs true problem? If it is a buffer problem, you could switch to the hardware uart and use something like they do for reading gps strings:

Code:
MAXDATA      CON 70       'The buffer Size for GPS Data  was 70  
gpsdata         VAR BYTE[MAXDATA]    '  70 byte array.
HSerin 200, Main, [WAIT("$GPRM"), STR gpsdata\MAXDATA\13]