S-record
S-recordフォーマットは1970年代中頃にMotorola 6800プロセッサ用として開発された。Motorola 6800や他の組み込みプロセッサ向けのソフトウェア開発ツールを使用することで、S-recordフォーマットの実行可能なコードやデータを作成することができた。PROMプログラマにはS-recordフォーマットを読み込み、組み込みシステム中のPROMやEPROMにデータを書き込む機能があった。
SRECフォーマットのファイルはASCIIテキストレコードの連なりで構成される。レコードは次に示す順番で左から右に並ぶ構造をしている。
レコード開始 - レコードは必ず大文字の"S" (ASCII 0x53) で開始する。これは"Start-of-Record"を意味する。
レコードタイプ - "0"から"9"までの1桁の数字で、レコードのタイプを定義する。
バイト数 - 2桁の16進数であり、残りのレコード (アドレス、データ、チェックサム) のバイト数 (16進数のペアの数) を示す。このフィールドの最小値は3である (16ビットのアドレスフィールドの2バイトとチェックサムの1バイトの和)。最大値は255 (0xFF) である。
アドレス - 4、6または8桁の16進数で示される。桁数はレコードタイプで決定される。ビッグエンディアンフォーマットで記述される。
データ - 2n桁の16進数で表現される (nはデータのバイト数)。S1、S2、S3レコードでは、1レコードにつき32バイトを最大とするのが普通である。これは、80キャラクタ幅の端末のスクリーンにこのバイト数が適するためである。ただし、16バイトの方が特定のアドレスにある各バイトを視覚的に読み解きやすくなる。
チェックサム - 2桁の16進数で示される。バイト数フィールド、アドレスフィールドおよびデータフィールドにある2桁の16進数のペアの和をとったときの、その1の補数の最下位バイトがこのフィールドに入る。チェックサムの例については#例を参照。