Appendix E
Specification of the Intel-HEX Format
This object file format is supported by many cross assemblers, utilities,
and most EPROM programmers.
An Intel-HEX file is a 7-bit ASCII text file,
that contains a sequence of data records and an end record. Every record
is a line of text that starts with a colon and ends with CR and LF.
Data records contain up to 16 data bytes, a 16-bit load
address, a record type byte and an 8-bit checksum. All
numbers are represented by upper case ASCII-hex characters.
DATA RECORD:
Byte 1 colon (:)
2 and 3 number of binary data bytes for this record
4 and 5 load address for this record, high byte
6 and 7 load address " " " low byte
8 and 9 record type: 00 (data record)
10 to x data bytes, two characters each
x+1 to x+2 checksum (two characters)
x+3 to x+4 CR and LF
A typical data record looks like
:10E0000002E003E4F588758910F58DF58BD28E302A
The end record is the last line of the file.
In principle it is structured like a data record, but the number of data
bytes is 00, the record type is 01 and the load-address field is 0000.
END RECORD:
Byte 1 colon (:)
2 and 3 00 (number of data bytes)
4 and 5 00 (load address, high byte)
6 and 7 00 (load address, low byte)
8 and 9 record type: 01 (end record)
10 and 11 checksum (two characters)
12 and 13 CR and LF
The typical END record looks like
:00000001FF
The checksum is the two's complement of the 8-bit sum, without
carry, of the byte count, the two load address bytes, the record type byte
and all data bytes.
|