kef wrote:INITEE = 0x09;
With this setting B64 and D64 EEPROM is mapped to 0x800-0xFFF. No wonder you can't verify your EEPROM at 0x400.
I try 0x800-0xBFF and 0xC00-0xFFF with INITEE=0x09 setting. It can't write value to EEPROM. So I post "About MC9S12B64 EEPROM Start address" onFreescale Forums. And I get a answer from Lundin. It can read and write at the address 0x400-0x7FF. But this time, I find that the return value will different when I power on/off B64 serial times. So I have no idea what is happen.
@eeprom U8 EETEST = 0x78; // At EEPROM start address 0x400 for B64, 0xC00 for D64
Looks like Cosmic? I have no experience with Cosmic, but I guess that this line just defines EETEST variable and initializes it in S-records (or other ROM image file). Flash/eeprom burner like ZAP, PROG12z or others are expected to burn this EETEST to EEPROM. Right? Burner should be aware what are your default INITEE settings. Also in parts like D64 or B64 after reset EEPROM is not visible, it's hidden by RAM. So burner should also know how and where to remap RAM to make EEPROM visible and programmable. Also does your burner support EEPROM programming at all?
Anyway I don't see the whole picture but I believe that it's not buggy B64 chip.