When was the Intel HEX file format created?

89 views
Skip to first unread message

Mr. Emmanuel Roche, France

unread,
Nov 19, 2021, 5:28:37 AM11/19/21
to
The 1st of April 2020, I published on the comp.os.cpm Newsgroup a message titled "The Intel HEX File Format", which contained a correction for the computation of the "checksum".

I had to go back to 1975 to find the exact description of how is computed the checksum.

It was obvious that it was older than 1975, since Gary Kildall only used "Type 0" records.

But how old?

Well, in an April 1974 paper, Gary Kildall writes: "in standard hexadecimal format (Intel, [4])" with Reference 4 being:

"Intellec 8 Microcomputer System Operator's Manual", Intel Corporation,
November, 1973.

Unfortunately, impossible to find this manual on the Internet. One American sold an Intellec 8 system with this manual and more but, of course, he forgot to scan the 40-years old manuals...

All the November 1973 Intel manuals that I managed to find on the Internet only mentions their curious BNPF tape format.

In the end, I found the following description:

Hexadecimal Program Tape Format

(Appendix D of Intel "Intellec 8/MOD 80 Operators Manual", June 1974, 98-003A)

The hexadecimal tape format used by the Intellec 8 system is a modified memory
image, blocked into discrete records. Each record contains record length,
record type, memory address, and checksum information in addition to data. A
frame-by-frame description is as follows:

Frame 0: Record Mark
Signals the start of a record. The ASCII character colon (":" hex 3A) is used
as the record mark.

Frames 1,2 (0-9, A-F): Record Length
Two ASCII characters representing a hexadecimal number in the range 0 to 'FF'
hex (0 to 255). This is the count of actual bytes in the record type or
checksum. A record length of 0 indicates end of file.

Frames 3 to 6: Load Address
Four ASCII characters that represent the initial memory location where the
data following will be loaded. The first data byte is stored in the location
pointed to by the load address, succeeding data bytes are loaded into
ascending addresses.

Frames 7,8: Record Type
Two ASCII characters. Currently (1974), all records are type 0. This field is
reserved for future expansion.

Frames 9 to 9/2*(Record Length)-1: Data
Each 8-bit memory word is represented by two frames containing the ASCII
characters (0 to 9, A to F) to represent a hexadecimal value 0 to 'FF' hex (0
to 255).

Frames 9+2*(Record Length) to 9+2*(Record Length) +1: Checksum
The checksum is the negative of the sum of all 8-bit bytes in the record since
the record mark (":") evaluated modulus 256. That is, if you add together all
the 8-bit bytes, ignoring all carries out of an 8-bit sum, then add the
checksum, the result is zero.

Example: If memory locations 1 through 3 contains 53F8EC, the format of the
hex file produced when these locations are punched is:

:0300010053F8ECC5

So, you finally know, in 2021, what was the first definition of the Intel HEX file format.

Maybe you will get the date for Christmas?

Yours Sincerely,
Mr. Emmanuel Roche, France

ogd...@gmail.com

unread,
Nov 19, 2021, 9:22:17 AM11/19/21
to
Emmanuel
Interestingly the MCS-8 A Guide to PL/M programming Rev 1. (dated September 1973) was updated in March 1974 to include
the ability to generated the Intel HEX format, as shown in the new Appendix A page "Hexidecimal Object Tape".
The example also includes the header with symbol names, which is processed by Intel's ISIS hexobj command. This extra
header information is not documented as part of Intel HEX.


Note, the guide printing I have, is from September 1974.

Mark Ogden

Udo Munk

unread,
Nov 19, 2021, 10:11:29 AM11/19/21
to
More essential the symbol table is read by INTERP/8 and also later by INTERP/80
to allow symbolic debugging of programs with the CPU emulations.

The extra symbol table information also is not explicitly documented as part of Intel BNPF,
only documented in the PL/M and Assembler programming manuals for the Intel tools
producing such a symbol table.

dxforth

unread,
Nov 19, 2021, 11:25:01 PM11/19/21
to
>
> So, you finally know, in 2021, what was the first definition of the Intel HEX file format.
>
> Maybe you will get the date for Christmas?

Coincidentally I came across this BYTE article on relocatable HEX formats,
including TDL's.

https://archive.org/details/byte-magazine-1977-11-rescan/page/n199/mode/2up?q=tdl

There's even a letter by Tom Pittman critiquing the latter.
Reply all
Reply to author
Forward
0 new messages