Thanks Amyk, but the situation of Vihh is just the opposite than conservative. The Pickit3 sets Vihh at 9.25 volts and this violates Vihh max of 9V with an over voltage of .25V.
I found some simple programming errors. I wasn't reading the MCU bytes correctly because I was setting the wrong values for TBLPTR, it was a matter of my code improperly adding a byte variable to the base instruction &HE0 (MOVLW) in setting of TBLPTR by using the mistaken: DW = &HE0 + u : Call CID16
The correct code:
DW = &HE00 + u : Call CID16 'Set Table Ptr Regs
DW = &H6EF8: Call CID16 'assigns above u address value to TBLPTRU
I was also not setting the TBLPTRU,H,L to a modulus 64 =0 page boundary to start a fill of the 64 byte write buffer.
I was also dividing the .hex record start address by two and so all main() code was written to the address/2.
My code was also word rather than byte oriented.
On the hardware side, my scope showed the problem immediately, once I started to look in the right place.
In the Pgm25K22 programming sub, at the very beginning I failed to enter programming mode properly before starting the programming sequence of commands. By accident with a mouse editing screwup, I deleted a delay call so my code was raising Vihh at the exact same time as the first PClk lo to hi and there must be a 400 uSec delay after Vpgm Lo-->Hi before any change in Pclk or Pdat.
I am glad that I found that all my MCU chips are undamaged and programming failure was just due to bigtime coding screwup.
I could see the Hex File did not match .lst file code addresses, so the programmed result was garbage, because I was not coding to set the write buffer TBLPTR table write addresses correctly and the .hex addresses were all set to addresses/2.