Brian,
Thanks for the advice. I added the two 100nf caps between VPP->VSS and VDD-VSS as my lines from the JDM to the PIC are about 10cm long. This definitely improved things slightly. I was able to do a blank memory check on the 10F200 chip once (reads all flash to see if it has been programmed). I have now been able to successfully program my PIC12F509 with a couple of basic programs, so this has definitely helped immensely. It is still very temperamental though and I have only been able to program the 10F200 once, the 12F509 wouldn't program again this evening so obviously the lunar alignment change between yesterday and today was enough to throw it off (or my re-soldering of the 5.1V diode)
I changed the 5.6V zener to 5.1, this seemed to make little to no difference. The voltage across VPP and VSS still gets up to 15.2V when attempting to program.
I know the 10F200 doesn't have LVP, I only mentioned it to highlight that I wasn't tripping up over the problem some people seem to have reported where they don't pull down the PGM pin and their PIC ends up in LVP mode whilst in the middle of HV programming (or when trying to perform other high voltage operations such as full memory read).
I realise JDMs are not very reliable. I really just wanted to get a better understanding of MCUs and I thought a good way to do that would be to build my own programmer. I have done that now and it worked (to a fashion) so I can rest easy and move on to something like PICKIT2. It has helped me understand MCUs a lot better and many aspects oftheir operation such as clocking, voltage levels, etc.
I would still like to debug this a little more to see if I can improve it a bit more though. Do you know what current I could expect from the programmer to VDD, or from the programmer to VSS? The current going to VPP (with multimeter connected in series) is 0.2mA (200microAmp?!), even when attempting to program, the current going to VDD also seems very low, around 2mA I think (with no peripherals connected).
Is there a good way to step down the voltage at VPP to 13V (compared to VSS)? A resistor in series between the VPP line and the VPP pin of the PIC perhaps? or a 13V zener diode?
I might install a dual boot of windows XP at the weekend on the desktop tower as this currently only has linux, then I could try WinPic800 and its hardware debugging modes.
Thanks for your help, much appreciated