Bruce Abbot, you have a gift, a way of making things crystal clear! Thank you for your help.
thanks again amyk, actually I was going too fast and didn't count my endians.
If you google, Intel Hex Format, as I, you will find a quick dozen or two, and you would see their sin in explanation is one of omission, they fail to explain that address representations can vary and then why or else (most frequently) offer no idea that there is a possibility of variation, Bruce Abbot does not!
example one: Wikipedia:
Address, four hex digits, representing the 16-bit beginning memory address offset of the data. The physical address of the data is computed by adding this offset to a previously established base address, thus allowing memory addressing beyond the 64 kilobyte limit of 16-bit addresses. The base address, which defaults to zero, can be changed by various types of records. Base addresses and address offsets are always expressed as big endian values.
example two: HAMRADIO.SI
Each record has a LOAD OFFSET field which specifies the 16-bit starting load offset of the data bytes,
therefore this field is only used for Data Records. In other records where this field is not used, it should
be coded as four ASCII zero characters ('0000' or 030303030H).
example three: Keil.com
aaaa is the address field that represents the starting address for subsequent data in the record.
example four: arm.com
aaaa is the address field that represents the starting address for subsequent data in the record.
example five: sbprojects.com
Address field
This is the address where the first data byte of the record should be stored. After storing that data byte, the address is incremented by 1 to point to the address for the next data byte of the record. And so on, until all data bytes are stored.
The address is represented by a 4 digit hex number (2 bytes), with the MSB first.
The order of addresses in the records of a file is not important. The file may also contain address gaps to skip a portion of unused memory.
Normally the address aaaa is used to store the first data byte of the record. However this will only allow us to send files
with a maximum size of 64kb. Therefore Intel designed two extra record formats with which it is possible to pre-set an Extended Segment Address or Upper Linear Base Address.
In case of a Extended Segment Address this segment is added to the address field of the record, like in Intel 16 bit processors, to obtain a 20 bit address. This will enable us to send files with a total length of 1Mb. The Extended Segment address is pre-set by 16-bits, given in a special record type.
The formula to calculate the target address in case of Extended Segment mode is:
Example 6: Ubuntu.com
Load Offset
Each record has a Load Offset field which specifies the 16-bit
starting load offset of the data bytes, therefore this field is
only used for Data Records. In other records where this field
is not used, it should be coded as four ASCII zero characters
(‘‘0000’’ or 0x30303030). This field is two byte, represented
as four hexadecimal characters
Example 7: Kana.com
AAAA is address in bytes
Example 8: eenet.com
After the number of bytes of data is a 4-digit hexadecimal address. An address of 0A00 appears as
0A00.
Example 9: Microchip.com Apnote TB025:
The address is doubled because this format only supports 8-bits (to find the real PICmicro address, simply divide the value
Naturally, since a PIC is something Microchip should know about, I took Microchips answer as sacred.
(Address=AAAA / 2.)