インテルHEXフォーマット
インテルHEXフォーマットに関してはこちらに詳しい説明があります。
少し分かりにくいのは、16ビットCPU以降をサポートするため、レコードタイプとしてアドレス指定の方法が追加されています。z80は16ビットアドレスですので、これらの機能は必要ないと思われます。確認のために使用するCコンパイラでHEXファイルを出力し、実際に使用されているレコードタイプのみを実装します。
下記はガイアCコンパイラ付属のサンプルプロジェクトのHEXファイルの一部です。
:20000000215881F93E00114C80210C00010000B7ED4A28080B1213B7ED4A20F921380211E3
:130020000080014C0078B12805EDA0EA2900CD330018FEF4
一行目の意味は
・20:(この行での)データ長は0x20(32)バイト
・0000:開始アドレスは0x0000
・00:データレコード
・以降の64バイトはデータ
・最後の2バイトがチェックサム
二行目の意味は
・13:(この行での)データ長は0x13(19)バイト
・0020:開始アドレスは0x0020
・00:データレコード
・以降の38バイトはデータ
・最後の2バイトがチェックサム
となり、一行毎に処理できることが分かります。
予想通り使用されているレコードタイプは00(データタイプ)と01(レコード終了)のみです。