I am converting a project into a surface mount version and wanted to add the ability to do ICSP since you never know when you need to update code. I have two 18F45K22 chips and one 12F629 chips. I was able to get the two 40 pin guys working, but the 8 pin is giving me trouble. I have removed all the extra hardware from the circuit that connects to the MCLR line and the data/clock lines so they go only to the header. If I put a blank chip in I can get the ICSP to work once, but have to take the chip out and blank it to program it again in circuit. I believe the problem is related to my setting the MCLR (GPIO3) as an input.

I saw on the melabs website they recommended
Code:
TRISIO = $FF
PAUSE 1000
to allow for programming on power up. I went to 5000 just because and had no luck.
My configs are set up as:
Code:
#CONFIG
    __config _HS_OSC & _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _BOREN_ON & _CP_ON & _CPD_ON
#ENDCONFIG
I have attached the schematic motherboard.pdf, though I have pulled the LED on the clock line, the resistor on the VPP line and I took out the microchip that is connected to the data line just to be safe.

Thanks for taking a look
David