Provided by: srecord_1.64-4_amd64 bug

NAME

       srec_motorola - Motorola S‐Record hexadecimal file format

DESCRIPTION

       This format is also known as the Exorciser, Exormacs or Exormax format.

       Motorola's  S‐record  format allows binary files to be uploaded and downloaded between two
       computer systems.  This type of format is widely used when transferring programs and  data
       between  a  computer  system  (such as a PC, Macintosh, or workstation) and an emulator or
       evaluation board for Motorola microcontrollers and microprocessors.

   The Lines
       Most S‐Record file contain only S‐Record lines (see the next section), which always  start
       with  a  capital S character.  Some systems generate various “extensions[rq] which usually
       manifest as lines which start with something else.  These “extension[rq] lines may or  may
       not break other systems made by other vendors.  Caveat emptor.

   The Fields
       The  S‐Record format consists of 5 fields. These are the type field, length field, address
       field, data field, and the checksum.  The lines always start with a capital S character.

                         ┌──┬──────┬───────────────┬─────────┬──────┬──────────┐
                         │S │ Type │ Record Length │ Address │ Data │ Checksum │
                         └──┴──────┴───────────────┴─────────┴──────┴──────────┘
       Type    The type field is a 1 character field that specifies whether the record is an  S0,
               S1, S2, S3, S5, S6, S7, S8 or S9 field.

       Record Length
               The  record length field is a 2 character (1 byte) field that specifies the number
               of character pairs (bytes) in the record, excluding the  type  and  record  length
               fields.

       Address This  is  a 2‐, 3‐ or 4‐byte address that specifies where the data in the S‐Record
               is to be loaded into memory.

       Data    The data field contains the executable code, memory‐loadable data  or  descriptive
               information to be transferred.

       Checksum
               The  checksum  is an 8‐bit field that represents the least significant byte of the
               one's complement of the sum of the values represented by the pairs  of  characters
               making up the record's length, address, and data fields.

   Record Types
       S0      This  type  of  record is the header record for each block of S‐Records.  The data
               field may contain any descriptive information identifying the following  block  of
               S‐Records.   (It  is  commonly  “HDR[rq]  on  many systems.)  The address field is
               normally zero.

       S1      A record containing data and the 2‐byte address at which the data is to reside.

       S2      A record containing data and the 3‐byte address at which the data is to reside.

       S3      A record containing data and the 4‐byte address at which the data is to reside.

       S5
               An optional record containing the number of S1, S2 and S3 records transmitted in a
               particular  block.   The count appears in the two‐byte address field.  There is no
               data field.

               This record is optional, you do not have to use it.  Nobody knows if you can  have
               more than one in a file; and if you do, nobody knows whether or not the line count
               resets after each one.

               The srec_cat command will only ever use one, provided the number of lines fits  in
               16 bits, otherwise it will use S6.

                      S6
                              An  optional  record containing the number of S1, S2 and S3 records
                              transmitted in a particular block.  The count appears in the three‐
                              byte address field.  There is no data field.

                              This  record  is optional, you do not have to use it.  Nobody knows
                              if you can have more than one in a file;  and  if  you  do,  nobody
                              knows whether or not the line count resets after each one.

                              Nobody knows what happens if you mix S5 and S6 records in a file.

                              The srec_cat command will only ever use one, provided the number of
                              lines fits in 24 bits.

                      S7      A termination record for a block of S3 records.  The address  field
                              may  contain the 4‐byte address of the instruction to which control
                              is passed.  There is no data field.

                      S8      A termination record for a block of S2 records.  The address  field
                              may  optionally  contain  the  3‐byte address of the instruction to
                              which control is passed.  There is no data field.

                      S9      A termination record for a block of S1 records.  The address  field
                              may  optionally  contain  the  2‐byte address of the instruction to
                              which control is passed.  If not specified, the first  entry  point
                              specification  encountered in the object module input will be used.
                              There is no data field.

   Size Multiplier
       In general, binary data will expand in sized by approximately 2.4 times  when  represented
       with this format.

EXAMPLE

       Here  is an example S‐Record file.  It contains the data “Hello, World[rq] to be loaded at
       address 0.
              S00600004844521B
              S110000048656C6C6F2C20576F726C640A9D
              S5030001FB
              S9030000FC

COPYRIGHT

       srec_cat version 1.64
       Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,  2005,  2006,  2007,  2008,  2009,
       2010, 2011, 2012, 2013, 2014 Peter Miller

       The  srec_cat  program  comes  with  ABSOLUTELY NO WARRANTY; for details use the 'srec_cat
       -VERSion License' command.  This is free software and you are welcome to  redistribute  it
       under certain conditions; for details use the 'srec_cat -VERSion License' command.

MAINTAINER

       Scott Finneran   E‐Mail:   scottfinneran@yahoo.com.au
       Peter Miller     E‐Mail:   pmiller@opensource.org.au