PIC Programmer and Programming
There are many PIC programmers you can purchase or whose schematics (and software) you can find freely over the Internet
David Tait has a programmer with software and hardware schematics available here. If you read his documentation, you will find various programmer schematics. I use the Classic "Tait" Programmer. The schematic is below:
I have modified my Tait programmer to include a programming header consisting of GND, MCLR, RB6 (CLOCK), and RB7 (DATA) for use in programming "in circuit". Most of my microcontroller project schematics include a pull-up resistor on MCLR, so you can use the programmer with no further modifications.
I don't use FPP, the software supplied by David Tait. You can use it and program a PIC16F877 to run the oscilloscope firmware and everything should work just fine. If you want to program the more readily available (and generally cheaper) PIC16F877A, FPP won't work.
Therefore, I use another free programmer software called WinPic800 (you can also use another program called IC PROG). I prefer WinPic800 because it is easier to set up in Windows XP (you don't have to go download a separate driver), it is flexible enough to work with non-standard programmers, and I get consistently good results.
To help with the setup, here is a screen capture of the Hardware Settings dialog from WinPic800 configured for use with the Tait Programmer on LPT1. Notice the bit numbers and byte offsets for each signal and which signals are inverted.
Once you've worked through these items above, you should now be ready to program the PIC!