Penso che il problema della perdita di caratteri sia dovuto al fatto che la lettura seriale (e' lenta) rispetto all'arrivo dei caratteri sulla stessa.
come vedo dal listato la lettura della seriale e' un "polling" sul byte che scarica un carattere dalla seriale, ora bisogna vedere se il compilatore e la routine che la gestisce fa' buffering sulla rs232, la soluzione piu' giusta sarebbe usare un'interrupt o meglio vedere se per ogni byte rx sulla seriale si ha a disposizione un evento (inserendo il codice all'interno di quell'evento e' possibile far si che non si abbia piu' la perdita di caratteri)
Altra soluzione e' quella di evitare di scrivere i caratteri mentre arrivano ma di incamerarli in un vettore e poi mandarli in stampa sul display tutti in una volta.
Nos so che tipo di gps sia ma in genere le stringhe che inviano possono essere lunghe una 30ina di caratteri e + oltretutto arrivano a raffica almeno 1 al secondo per la stringa di localizzazione
Quindi il pic deve far veloce a leggere e scrivere sul display