So you have a Garmin GPS and have always been interested in understanding how it really works. You might have read about pseudoranges, code measurements, carrier phase, Doppler shifts, but you have been led to believe that only more expensive geodetic equipment (or bare OEM boards) have all those bells and whistles. Indeed every GPS have to use those things. Otherwise they wouldn't be able to compute your position. It is only that the manufacturers consider you an average consumer that will be satisfied with a simpler 40.38N 136.56W kind of answer. Therefore, the more basic kind of data (so called raw data) never sees the light.
However, it seems that you can get some of that raw data from some Garmins. I have personally tried a GPS12 4.00 and GPS12XL 4.55, but it is also true for other members of the family. Give them a chance.
The raw data is sent through undocumented async messages when enabled with the appropriate command sent to the RS232 port of your unit. Read through the following sections to learn how to do it, and what you can expect (apart from learning a lot of the GPS system and your GPS receiver) from playing with pseudoranges, carrier phases, etc.
I may sound too affirmative in this document when I talk about getting phase carrier or pseudoranges from your GPS12. In many cases, we are not so sure about what we are getting. It is only that it's shorter to write "field so and so corresponds to the integrated carrier phase" than "field so and so shows a certain behavior when compared to this other field, that might lead a gullible Garmin owner to think that is somehow related to integrated carrier phase".