| II.2.5 The HEXBIN Utility Most EPROM programmers are accepting the Intel-HEX object file format that is output by ASEM-51. However, for dumb EPROM burners and special purposes it might be useful to convert the HEX file to a pure binary image file. For this the conversion utility hexbin is provided. It is invoked as follows:
        hexbin [<options>] <hexfile> [<binary>]
where <hexfile> is the input file in Intel-HEX format, and <binary> is the binary output file. All file names that are specified explicitly, are left unchanged. The parameter <binary> is optional. When omitted, the file name is derived from the <hexfile>, but with the extension ".bin". The maximum length of a file parameter is limited to 255 characters! Instead of file names you may also specify device names to redirect the input or output to I/O devices. Device names are assumed to start with "/dev/". Of course no extensions will be added to device names! It is not checked, whether the device is existing or suitable for the task. hexbin recognizes the following options:
short options | long options
--- | ---
`-o <offset>` | `--offset=<offset>`
`-l <length>` | `--length=<length>`
`-f <fillbyte>` | `--fill=<fillbyte>`
`-v` | `--verbose`
> The short and long options in the same row are equivalent. Long options may be abbreviated as long as they remain unique. All option names are case-sensitive! The binary file output can be controlled with the options --offset, --fill and --length. Normally the first byte in the binary file is the first byte of the HEX record with the lowest load address. If a number of dummy bytes is to be inserted on top of the file (e.g. for alignment in an EPROM image), this can be performed with the --offset option:
>     --offset=1000
> would insert 4096 dummy bytes before the first byte of the first HEX record loaded. The offset must always be specified as a hex number. The default offset is 0. Since there may be peepholes between the HEX records, a fill byte value can be defined with the --fill option:
>     --fill=0
> would fill all peepholes between the HEX records with zero bytes as well as all the dummy bytes that might have been inserted with the --offset or --length option. The fill byte value must always be specified as a hex number. The default fill byte is the EPROM-friendly FFH. By default the last byte in the binary file is the last byte of the HEX record with the highest load address. If the binary file should have a well defined length, then a number of dummy bytes can be appended to the file (e.g. for exactly matching an EPROM length), this can be performed with the --length option:
>     --length=8000
would append as many dummy bytes behind the last byte of the file, that the total file length becomes exactly 32768 bytes. The file length must always be specified as a hex number. By default, hexbin is totally "quiet", if no errors are detected. If the --verbose option is specified, additional product and version information, and a file conversion report is written to standard output:
            Hex File Converter HEXBIN V2.3

                         offset:      FF0H bytes
                  first address:     7FF0H
                   last address:     8255H
            fill peepholes with:       A5H
            binary image length:     2000H bytes
> Examples:
>     0.)    hexbin
> When invoked without parameters, hexbin displays a help screen:
>            Hex File Converter HEXBIN V2.3

>            usage:      hexbin [options] <hexfile> [<binary>]

>            options:   -o   --offset=<offset>
>                       -l   --length=<length>
>                       -f   --fill=<fillbyte>
>                       -v   --verbose
>     1.)    hexbin program.hex
> will convert the Intel-HEX file program.hex to a pure binary image file program.bin.
>     2.)    hexbin -f E5 tarzan.obj jungle.bin
> will convert the Intel-HEX file tarzan.obj to a binary image file jungle.bin and fill all peepholes between the HEX file records with the binary value E5H.
>     3.)    hexbin --off=8000 -l10000 --fill=0 project.hex eprom
will convert the Intel-HEX file project.hex to a binary image file eprom, insert 32K dummy bytes on top of file, fill all peepholes and the dummy bytes with nulls, and extend the file to exactly 64K. When terminating hexbin returns an exit code to the calling process:
situation | exit code
--- | ---
no errors | 0
conversion errors detected | 1
fatal runtime error | 2