mieki256's diary



2019/05/07(火) [n年前の日記]

#1 [pc] MZTファイルのヘッダ情報を確認するツールを書いてみたり

MZ-80K/700等のエミュレータでは、カセットテープに入ったプログラムのイメージを模した、MZTファイルという形式が使われるのだけど。その MZTファイルのヘッダ情報を確認するツールを Python を使って書いてみたり。

_mieki256/pymztinfo

動作確認環境は、Windows10 1809 x64 + Python 2.7.16。

Pythonスクリプトだけではなく、py2exe で exe化したファイルも一応置いておいた。

使い方は以下。
python pymztinfo.py MZT_FILE

or

pymztinfo.exe MZT_FILE

以下のような出力になる。
> pymztinfo.exe S-BASIC_1Z007B.MZT
Input file : S-BASIC_1Z007B.MZT
0x00     : File mode = 0x01 (Binary)
0x01-0x11: Filename  =  S-BASIC
0x12-0x13: File size    = 0x6C80 (27776)
0x14-0x15: Load Address = 0x1200
0x16-0x17: Exec Address = 0x7E0F
0x18-0x3F: 11 30 11 CD 09 00 CD 15
           00 00 00 00 00 00 00 00
           00 00 00 00 00 00 00 00
           00 00 00 00 00 00 00 00
           00 00 00 00 00 00 00 00
0x40-0x43: Patch Enable
Adrs=0x1221 , Size=0x0C (12) , Data (Hex)=ED F4 03 ED F4 04 ED F4 01 ED F4 02
body length: 0x6C80 (27776)

MZTファイルのフォーマット仕様をメモ。 :

あちこちのページを眺めて把握した範囲で、一応、MZTファイルのフォーマット仕様をメモ。

  • 0x00 - 0x7F : ヘッダ部分。
  • 0x80 - : 実データ

ヘッダ部分の内容は以下。
0x00ファイルの種類。アトリビュート。
0x01 - 0x11ファイル名。0x0Dが終端文字。残りは0x20 でパディングされる。
0x12 - 0x13実データのサイズ
0x14 - 0x15ロード・格納アドレス
0x16 - 0x17実行開始アドレス
0x18 - 0x3F謎データ。FD使用時に絡んだデータが入ってるらしい?
0x40 - 0x43ファイルにパッチを当てる場合、'PAT:' が入ってる。
0x44 - 0x7Fパッチデータ
0x80 -実データ

ファイルの種類については、どうやら以下が決まってるように見えた。
0x01バイナリ
0x02BASICのプログラム。SP-5030 / Hu-BASIC等
0x05BASICのプログラム。MZ-700 S-BASIC
0xC8CMU-800用のデータ

パッチデータ1つ分のフォーマットは以下。
2 byteパッチを当てるアドレス値。0xFFFFが入ってたらパッチデータは終了。
1 byetパッチのサイズ
N byteサイズ分、パッチデータが並ぶ。
パッチの個数分、このデータ列が並ぶ。アドレス値に 0xFFFF が入っていたら、そこでパッチは終了。

参考ページ。 :

不明点。 :

0x18 - 0x3F に入ってるデータの意味が分からない。.mztファイルを作成するツールに、各BASIC用のヘッダファイルが同梱されていたりするのだけれど、中を覗くと、該当部分には、たしかに何かが入ってる。しかし、どういう意味のデータが入っているのか、記述したページが見つからず。

ファイルの種類(アトリビュート)に入ってる、0x02 と 0x05 の使い分けが、ちょっと自信がない。手元の .mzt をいくつか確認した感じでは、SP-5030 / Hu-BASIC用のプログラムには 0x02 が、MZ-700用S-BASIC用のプログラムには 0x05 が入っていたけれど、本当にその分類でいいのだろうか…?

テープのイメージファイルとしては、.mzt 以外にも .mzf というファイルが存在するのだけれど。.mzf は、先頭に 'mz20' の文字列が入ってるという情報を見かけたものの、Web上で公開されていた各種 .mzf を入手して中を覗いてみたところ、そういう文字列が入ってるファイルは見当たらなかった。拡張子が .mzf でも、フォーマットが異なるものが存在している、ということだろうか…。

以上です。

過去ログ表示

Prev - 2019/05 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project