I don't think this is my problem as an experiment I did showed a possible clue as to what is going on. 1- erased a '508 JW part 2- put a brand new OTP (so it is blank) '508 into my programmer and read in the contents. 3- programmed the JW part with the contents of the blank OTP part Both chips still show up as erased. 4- programmed my target code into the JW part 5 - plugged the JW part into my target circuit and NOTHING happens! Note that the EPROM windows was not covered in case ambient light was helping me out before (which shouldn't matter, I'm doing nothing fancy with the chip). 6 - Took another freshly erased '508 JW part and programmed it with my code. Plug this chip in the circuit and it works fine! The only thing that stood out is that memory location 1FFF contains the OSC cal number. For the OTP parts when blank and read, this number reads CA0 or C80 or C90 depending on the chip. When the JW part is read in blank, location 1FFF reads 000. Even though both the OTP and the JW part when blank have a different 1FFF value, the programmer says both are blank. When the completely blank JW part is programmed with the target code, 1FFF contains A32 (previous value 1FF). When the OTP part is programmed with the target code, 1FFF contains the same value it held before programming (like CA0). The programmer says that both chips verify okay. WIERD!! Dave > I think it has something to do with the initialization of memory registers >before a read. For example; do not count on the fact that a register will >read a `zero' before you have written one in there! >p.s. You might want to check the microchip web site, I remember seeing >something about it there. >