srec_ti_tagged_16(5)

πŸ’– NAME πŸ’–

Okay bestie, meet srec_ti_tagged_16(5) β€” the Texas Instruments Tagged (SDSMAC 320) file format, straight outta the File Formats Manual. This is the whole page, and it's lowkey iconic for moving binary data around.

✨ DESCRIPTION ✨

This format is also known as the TI‐Tagged or Texas Instruments SDSMAC (320) format.

This format allows binary files to be uploaded and downloaded between two computer systems β€” typically between a computer system (such as a PC, Macintosh, or workstation) and an emulator or evaluation board for 16‐bit microcontrollers and microprocessors. Embedded device slay, no cap.

πŸŽ€ The Lines πŸŽ€

Unlike many other object formats, the lines themselves are not especially significant. The format consists of a number of tagged fields, and lines are composed of a series of these fields. Here's the tag vibe check:

  • * β€” data byte.
  • : β€” end of file.
  • 0 β€” file header (optional).
  • 7 β€” checksum.
  • 8 β€” dummy checksum (ignored).
  • 9 β€” word address.
  • B β€” data word.
  • F β€” end of data record.
  • K β€” program identifier (optional).

πŸ¦‹ Data Byte πŸ¦‹

                                    β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
                                    β”‚ B β”‚ n β”‚ n β”‚
                                    β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

One byte of data. The nn is 8‐bit big‐endian hexadecimal. Cute little byte, fr fr.

🌸 End of File 🌸

                                    β”Œβ”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”
                                    β”‚ : β”‚ CRLF β”‚
                                    β””β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”˜

The end of data is indicated by this tag. The end of line sequence (LF on Unix systems, CRLF on PCs) follows this tag.

πŸŽ€ File Header πŸŽ€

                              β”Œβ”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚ 0 β”‚ length β”‚ filename β”‚
                              β””β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The optional start‐of‐file record begins with a tag character ('0') and a 12‐character file header. The first four characters are the count (in hex) of the 16‐bit data word values (B) which follow, not including data byte values (*). The remaining file header characters are the name of the file and may be any ASCII characters, blank padded.

πŸ’… Checksum πŸ’…

                                β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
                                β”‚ 7 β”‚ n β”‚ n β”‚ n β”‚ n β”‚
                                β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

The checksum is the 2s complement sum of the 8‐bit ASCII values of characters, beginning with the first tag character and ending with the checksum tag character (7). The nnnn is 16‐bit big‐endian hexadecimal.

🫢 Dummy Checksum 🫢

                                β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
                                β”‚ 8 β”‚ n β”‚ n β”‚ n β”‚ n β”‚
                                β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

The checksum is the 2s complement sum of the 8‐bit ASCII values of characters, beginning with the first tag character and ending with the checksum tag character (8). The nnnn is 16‐bit big‐endian hexadecimal. And yeah, it's a dummy checksum β€” ignored, bestie.

🌈 Address 🌈

                                β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
                                β”‚ 9 β”‚ n β”‚ n β”‚ n β”‚ n β”‚
                                β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

Addresses may be given for any data byte, but none is mandatory. The file begins at 0000 if no address is given before the first data field. The nnnn is 16‐bit big‐endian hexadecimal.

πŸ“ Data Word πŸ“

                                β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”
                                β”‚ B β”‚ a β”‚ a β”‚ b β”‚ b β”‚
                                β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”˜

Two bytes of data. The aa and bb are each 8‐bit big‐endian hexadecimal.

πŸ’œ End of Record πŸ’œ

                                    β”Œβ”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”
                                    β”‚ F β”‚ CRLF β”‚
                                    β””β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”˜

The end of line sequence (LF on Unix systems, CRLF on PCs) is escaped using this tag. The checksum is reset to zero at this point.

🧚 Program Identifier 🧚

                            β”Œβ”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”
                            β”‚ K β”‚ n β”‚ n β”‚ n β”‚ n β”‚ text β”‚
                            β””β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”˜

The program identifier can contain a brief description of the program, or can be empty (i.e. the text portion is optional). The nnnn length (hex) of the field includes the K, the length and the text; it is at least 5.

⭐ Size Multiplier ⭐

In general, binary data will expand in size by approximately 2.9 times when represented with this format.

πŸ”₯ EXAMPLE πŸ”₯

Here is an example TI‐Tagged file. It contains the data β€œHello, World[rq] to be loaded at address 0x0100.

              K000590080B4865B6C6CB6F2CB2057B6F72B6C64*0A7F641F
              :

Here is another example from the reference below

              00028        7FDCFF
              90000BFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFF7F400F
              90008BFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFF7F3F8F
              90010BFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFF7F3FFF
              90018BFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFF7F3F7F
              90020BFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFFBFFFF7F3FEF
              :

🌈 SEE ALSO 🌈

srec_cat version 1.65
Copyright (C) 1998... 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

Signed off with Reference Manual + SRecord energy, srec_ti_tagged_16(5) forever, and srec_cat version 1.65 running through the footer like a little victory lap. Mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from