After changing old project software, I experienced problems while reading the S-record file for flash programming. The previously used tool was a very old DOS program no more available today. Fortunately, I now have a self written tool in use what allows to examine the reason.
The suspicious section is at the file end, where the 16 bit start vector is at last address of 64 k space (0xffff). The linker control file has a INIT statement and linker with old DOS Programmer puts the adress of label behind the INIT statement automatically at address 0xffff. Therefore the last line of S-record looks like:
S9 03 1003 E9
S9 indicates last line of S-Record
03 indicates 3 data bytes in line 1003 is the start vector adress (what will be stored at location 0xffff) E9 is the checksumMy flasher complains, becouse destination adress 0xffff is missing and he does not know about the correct destination for the start vector in memory. If I use own segment instead of INIT instruction, the start vector appears in the line before last s-record line with correct adress and everything is fine. The last line then looks like S0 03 FFFF FE what will be rejected by my flasher. What is the meaning of S9 ? Is this incompability a bug of my programmer or a bug of the linker or simply undocumented feature ?