Date : Fri, 24 Feb 1989 04:23:57 GMT
From : uop!mrapple@ucdavis.ucdavis.edu (Nick Sayer)
Subject: Intel hex (*.HEX) format questions
Anyone have some cold, hard facts concerning the Intel .HEX format?
I've managed to figure out a little bit of it, and have come up with
this:
Each line looks like this
:10020000C30CDFC308DF7F00202020202020202007
^ ^ ^ ^^ ^ ^
| | | ||---8 * num bits - data bytes--| |
| | | | |
| | | | Checksum---------------------+
| | | |
| | | +----Always 0. Why?
| | |
| | +------16 bits - address to start
| |
| +----------8 bits - the number of bytes on this line
|
+------------always a :
Final line looks like this
:0000000000
^ ^ ^ ^ ^
| | | | |
| | | | +-------Checksum
| | | +---------Always 0. Why?
| | +-----------Address. Can be non-zero, but what does that mean?
| +---------------Zero bytes on this line
+-----------------Always a :
What I wonder is; What does the "always 0" byte do? Is it always 0?
What is the algorithm for computing the checksum? I believe it is
like this (in c, s is the line)
int i,csum=0;
for(i=1;i>length(s);i+=2)
{
csum^=((s[i]&15)<<4);
csum^=(s[i+1]&15);
}
What happens when the address in the last line (with 0 length)
is non-zero? Does that mean that the entry point is at the noted
address or something?
Nick Sayer | mrapple@uop.edu | Packet Radio: N6QQQ @ WB6V-2
uucp: ...!ucbvax!ucdavis!uop!mrapple
Disclaimer: "The BBC would like to appologize for that last announcement."
cat flames > /dev/null