Dear kef,
Yes, I use cosmic complier. I am sorry that I don't make sure what you mean.
I declared a pointer using the @eeprom type qualifier. And the cosmic compiler will call eeprom library automatically when I want the pointer to store a value.
Example:
@eeprom U8 *ptr; /* U8 = unsigned char */
ptr = 0x400;
*ptr = 0x01; /* cosmic compiler will call function that can write on byte to eeprom in eeprom library */
By this way, I can write one byte to eeprom. So I try 0x400-0x7FF, 0x800-0xBFF, and 0xC00-0xFFF to write several bytes(eeprom segment declared to 0x400-0x7FF, 0x800-0xBFF, and 0xC00-0xFFF at link file). Only 0x400-0x7FF can be written values to eeprom.
I use filler 0x00 to fill eeprom in the another test.
+seg .eeprom -b0x400 -m0x300 -f0x00 -n.EEPROM
And I add a process to copy data from eeprom to flash (512 bytes,0x400-0x5FF). If the return value from eeprom unequals 0x00 (PORTA = 0x01), I use P&E multilink to show flash data that all of them are 0xFF. If return vale is 0x00, the data of flash are 0x00.
B64 is compatible to D64. But D64 does not has eeprom issue. It could be cosmic compiler or link issue. Could someone provide the S19 or take our code to test with other compiler for our B64 eeprom testing?
Best regards,
Zeke