Hi,

Normally all Program memory location are default $FFFF (nop). So you can check your PIC if it reads okay. If it reads $0000 then its your programmer. What a programmer does is dump the hex files in the prog. memory locations and just verifies it while/after programming. In most cases if your first location is not being programmed then your programmer has some communication error with the PIC. Even parasitic capacitance on the data and clock lines make it worse.