If I re-load the hex file and set the oscal value again, I can verify the chip
the rom data passes but I get fuse error 0xFFF Good 0X0FEA Bad 0x0025
If I read back the chip, the code returns as in the hex file, with the chip's original OSCAL value, but the fuses show as follows: WDT:Encabled MCLRE:Disabled Oscillator:XT Code Protect:Enabled
Something is clearly wrong here as the fuse bits read back cannot be correct as it states the code protect fuse is set. This can't be the case as you wouldn't then be able to read the code back out of the device and verify it.
I have seen comments that Microbrn v150807 cannot read the fuse bits from 12c50xx devices. I'm currently trying to find where I saw this but if this is the case then it would explain the above contradiction. It would also then suggest that your devices may have actually programmed correctly.
Are you absolutely sure they aren't working?