First of all, do you need to poll the gps to get the info or does it automatically send the data? If it automatically sends the data, look at the datasheet to determine the format of the string. Then, have your pic wait for the first character of the data string and put the following values into an array. Then just deal with the array. For example: This is using a 16f876a with a 20 mhz osc and the melabs bootloader with microcode studio and PBP, with a 4x20 lcd screen. Also a word of advice, during connection, put a 10uf cap between pins 19 and 20 (or vss and vdd). Now for the code.

@ device pic16F876A, hs_osc, wdt_on, lvp_off, protect_off
include "MODEDEFS.BAS"
define LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_BITS 4
DEFINE LCD_RSREG PORTC
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTC
DEFINE LCD_EBIT 1
DEFINE LCD_lines 4
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
define OSC 20
adcon1=7
gps_data var byte [12] ' this is the array you are putting the data into I assuming the data will fit in the [12], if not just make it bigger.
'_________________________________________________ ____
Pause 1000
lcdout $fe,1

Start:

serout2,porta.5,84,[poll command] ' use this line if the gps receiver requires a polling command for data.

SERIN2 PORTa.4,84,[WAIT(x),STR gps_data\12] 'x being the first part of the serial string.
lcdout str gps_data\12
pause 1000
goto start

Hopefully this gives you a start. One more thing, the number "84" after the porta.4 and porta.5 is the baud rate number used in serout2 command. It represents 9600 baud, 8 bits, one stop bit, no parity. To change this, look on page 141 of the picbasicpro guide book.

Travin