[H8-ML(392)] 購読希望。MOTファイルを解析しました。
From: "Iai, Masamitsu" <mm-iai@xxxxxxxxx>
Date: 1999年10月14日(木)09時51分22秒
東京の居相(いあい)と申します。
H8メーリングリストに参加します。

 秋月のAKI−H8を買いました。鉄道模型のコントロールに
使おうと思っています。ステッピングモータを使ってターンテー
ブル(転車台:蒸気機関車の向きを変える)の位置決め制御をし
ようともくろんでいます。
 MBTEST.MARをかわきりに少しずつ使い方を勉強して
います。
 昔(20年以上も前ですが)、ミニコンなどのアセンブラを何
機種も手掛けたことがありますが、その頃の記憶が甦ってきます。
今はBASICやCなどコーディング作業が効率的に行えるので
楽ではありますが、アセンブラには手作りの楽しみがあるように
思えます。これは真鍮板を切ったりはんだ付けしたりして鉄道模
型を作る趣味にも相通じる所があります。
 まあ趣味でやっているので、勝手なことを書きましたが宜しく
お願いします。

手みやげ代わりに、MOTファイルを解析した資料を以下に表示
します。参考にして下さい。(120行ほどです。長文失礼。)
まとめるに当たりH8メールの記述も参考にさせて頂きました。

******************************************************************************

H8/3048用 MOT 形式HEXファイルの書式について
(AKI−H8開発環境  S−recordフォーマット準拠?)

1)ファイルの概要
 ・このファイルはテキストファイルです。
 ・内部は、先頭行(ヘッダー)、中間行(機械語コード)、
  最終行(スタートアドレス)の3つで構成されています。
 ・1行の内訳は、先頭2桁の種別コード、中間複数(偶数)桁のデータ、
  最後尾2桁のチェックサムとなります。
  a.先頭の2桁には、その行のレコード種別を示す英数字のコードが入ります。
  b.3桁目以降には、16進表現でアドレスや機械語コードなどが入ります。
  c.行末の2桁には、やはり16進表現でチェックサムが入ります。
 ・なお、1バイトのデータは定法通り、16進2桁で表現しています。

2)チェックサムについて
 ・各行毎の末尾にはチェックサムが付いています。(最後の2桁)
 ・MOTファイルのチェックサム計算方法は次の通りです。
  a.行毎に3桁目以降のデータ部分から2桁ずつ取り出し、
    そのまま16進数とみなして 0x00 から順次引いて行きます。
  b.このとき常に16進2桁で計算します。
  c.その計算結果(2桁の16進数)がチェックサムです。

 ・なお、自動作成されたMOTファイルは、当然のことですが
  各行とも末尾の2桁がその行のチェックサムになっています。

 ・従って、MOTファイルをチェックする場合は、
  末尾のチェックサムも含めて順に16進2桁の足し算(またはゼロから引き算)を
  していくと、どの行も計算結果が必ずゼロになります。
  ゼロにならないときは、どこかの桁の値が間違っているというわけです。

 具体例:
  ・例えば、データ中に "A0" という文字があったらこれは、
   "A0" をバイナリ形式(アスキーコード)で見た場合の 0x4130 
   ではなく、そのまま16進数 0xA0 と見なします。

  ・そこでMOTファイルの或る1行が、"S10801F03034382F46F6" のとき、
   最初の2桁のコードを除き、3桁目からチェックサムの直前までの
   データ部分について計算(16進2桁の引き算)して行きますと、
    0x00-0x08-0x01-0xF0-0x30-0x34-0x38-0x2F-0x46 = 0xF6

   となります。この "F6" がチェックサムで、既に書き込まれている
   チェックサムと一致していることが分かります。
   (パソコンの電卓(関数:16進8bit )で試してみて下さい)

3)フォーマット:(1行1レコード)

1−2桁目:レコード種別(英数字2桁のコードで、その行の意味合いを示す)
              先頭行:"S0" .... ヘッダーレコード(ファイル名が入る)
              
              中間行:"S1" .... アドレスを4桁で表示するデータレコード
                      "S2" .... アドレスを6桁で表示するデータレコード
                      "S3" .... アドレスを8桁で表示するデータレコード
                      "S5" .... 特殊レコード(データレコードではない)
              
              最終行:"S7" .... 8桁で表示するスタートアドレスレコード
                      "S8" .... 6桁で表示するスタートアドレスレコード
                      "S9" .... 4桁で表示するスタートアドレスレコード

3−4桁目:バイトカウント(16進2桁:チェックサムを含むバイト数)
              各 行: 2桁の16進表現で5桁目から行末までのバイト数が入る。
                            (しつこいようですが、2桁で1バイト)

5桁目から:アドレス(4、6、8桁:16進表現)
              先頭行: アドレスとして使わないので8桁目まで "0000" が入る。
              
              中間行: その行に書き込むべき機械語コードデータの
                   先頭アドレスが入る。
                   アドレス桁数は、2桁目の指定による。
              
              "S5行": アドレスではなく、このレコード以前に現れた
                   データレコード("S1","S2","S3")の合計行数が入る。
                   (2バイト4桁の16進表現)
              
              最終行: プログラムのスタートアドレスが入る。
                   アドレス桁数は、2桁目の指定による。

9または11、
13桁目以降:データ(16進表現)
              先頭行: 9桁目以降に "「ファイル名」" + "MOT" という文字列が
                   アスキーコードで入る。("MOT" と言う文字なら "4D4F54")
                   ファイル名が8文字(16桁)に満たないときは、
                   その分スペース("20")を満たす。
                   ファイル名が8文字より長いときは、8文字から先を
                   切り捨てる。
                   すなわちファイル名の部分は8文字(16桁)固定である。
              
              中間行: アドレスに続き行末のチェックサム2桁の直前まで、
                   機械語コードデータが16進表現で入る。
                  (バイトカウント)−(アドレス桁数/2)−(チェックサム桁数/2)
                   が実際に入る機械語コードデータのバイト数になる。
              
              "S5行": データなし。
              
              最終行: データなし。

末尾の2桁:チェックサム(2桁:16進表現)
              各 行: 行毎に計算したチェックサム(2桁)が入る。

4)ファイル名について
      AKI-H8 についてくる開発環境では、MOTファイルのファイル名は、
    わざわざ名前を指定しない限り、MARファイル(ソースファイル)の
    ファイル名が引き継がれることになります。(他の環境でも同じだと思いますが)
     この名前が、先頭レコード(ヘッダー)に書き込まれます。
    
※MBTEST.MOTファイルを修正してチェックしてみましたが、
 AKI−H8開発環境の FLASH.EXE では、レコード種別 "S5" がファイル中に存在
 しても無視されました。また、チェックサムの値も照合されません。
 (共にいい加減な値を入れても通ります。MBTEST自体も正常に動作しました。)
※同じく、FLASH.EXE での、1行の長さの上限については未確認です。
  88桁のレコードを作って流して見ましたが、正常に処理されました。
 (オリジナルのS−record書式では、上限はCR/LFを含め80桁です。)

1999.10 M.IAI
******************************************************************************

iaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai
a                                                                     a
i  居  相  政  充(いあい まさみつ)  - Iai, Masamitsu -              i
a        日産コンピュータテクノロジー㈱                               a
i             ニュービジネス事業部                                i
a                                                                     a
i    E-Mail Address: mm-iai@xxxxxxxxx                                 i
a                                                                     a
iaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai
スレッド概略
[表示中](起点)


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]