補足 tapeload.exeの使い方



QDからMZ−1500への読み込みについて

※ 2021年6月9日追記
@motochan1500さんによりQD→CMT XFER
が公開されました。
MZ-1500実機で実行するプログラムで、QD内のファイルを順次読み出し、カセット端子より出力できます。

BSDファイルにも対応しているそうです

更に、なんと、BASICのファイルの場合のヘッダの先頭の1バイトも02hで出力されるということですので、書き換え不要になります。

なので、これを使えば、以下の説明文のようなことは不要になります。


● BASICのプログラムは、BASIC上に読み込んでからTAPEにセーブすればいいでしょう。SAVE”CMT:ファイルネーム”

● MZ−1500付属のTRANSユーティリティで読み込めるものは、問題ないですよね。


● 読み込めないものはモニタのQCコマンドで読み込みます。

● 市販のQDソフトには、ROMモニタのQDコマンドなどで中身を見ようとすると、アンフォーマットエラーが出るというものが多くあります。
QCコマンドではファイルネームの入力が必須なので、読み込むことができません。


これを回避して読み込むプログラムがMZ−700WIN付属のmz700tips.htmに 「QDファイル名にコントロールコードが含まれている場合の読み込み方法」 としてあります。


ここでは、当サイトオリジナルプログラム^^;を紹介します。(こちらのほうが短い)
モニタのMコマンドより次のプログラムを打ち込んでください。
(このプログラムをQDにセーブするときはスタートアドレスをEAA7Hにしておくといいです。)

1000  CD 7A EF CD B5 EF DA BB
1008  F2 CD 16 ED 3A A3 11 C3
1010  CA F1

QDをドライブにいれ、J1000とすると、ファイルネームを聞いてくるので、CRを空打ちすると、QDの先頭ファイルが読み込まれます。


QCコマンドや上記プログラムで読み込んだ後、新しいQDのセットの確認メッセージが出て(Y/N)を聞てくるので、Nを押しROMモニタに戻ります。

MZ−1500からカセットテープへ
QCコマンドを使って読み込んだ場合も、上記プログラムを使った場合も、ファイルは1200Hから読み込まれています。

ここで、1104H、1105Hにファイルサイズが、1106Hと1107Hに先頭アドレスが、1108Hと1109Hに実行アドレスが入っています。
上位、下位が逆に入っています。(1200Hなら 00 12 と入っています。モニタのDコマンドで見ることができます。)

前述のようにファイルは1200Hから読み込まれているので、ファイルサイズより計算し(1200H〜????H)、Sコマンドでテープにセーブします。16進数の計算です。

下の例では"CHENGE MEMORY"という名前のファイルをQDより読み込み、カセットテープへ移しています。

余談ですが、気づかれた人もおられると思います。CHANGEをCHENGEと間違えてます。(^_^;)

tapeload.exeで読み出し後

● TRANSで読み込んだマシン語ファイルの場合は、ヘッダはそのままでいいので、問題ないですよね。

● BASICのファイルと
QCコマンドやこのページ上のプログラムで読み込んだファイルの場合
tapeload.exeでパソコンに読み込み後、バイナリエディタでヘッダを修正します。

MZ−700WIN付属のmz700faq.htmの中にMZTファイルのフォーマットに関して記述があり、ヘッダの先頭を00hとして、

00h アトリビュート(ファイルモード)
01h〜11h ファイル名。20hでパディングします。
12h,13h ファイルサイズ
14h,15h 格納(先頭)アドレス
16h,17h 実行アドレス

○ BASICのファイルはアトリビュートの変更が必要です。05h→02h。

○ QCコマンドやこのページ上のプログラムで読み込んだファイルの場合、
テープにセーブするときに実行アドレスを正いものを入力していたなら、ファイル先頭アドレスのデータみ変更が必要です。

これも上位と下位を逆にして入力します。2000hなら 00 20 です。

以下に例を示します。



上の図はヘッダのサンプルです。

00000000hのアトリビュート(ファイルモード)が01hなのでマシン語ファイルであることがわかると思います。BASICのファイルの場合ここが05hとなっていると思いますので、02hに修正します。

00000001h〜00000011hがファイル名です。ファイル名のエンドマークに0Dhが入っています。それ以降は20hで埋めれられています。

00000012h、00000013hがファイルサイズでこの場合0312hです。

00000014h、00000015hがファイル先頭アドレスです。ROMモニタのQCコマンドや、このページにあるプログラムで読み込んだ場合、ここが00h,12hになっていると思いますので正しいものに修正します。
上の図のファイルはの場合の5000hからのファイルなので、00h,05hとなっています。

00000016h、00000017hが実行アドレスです。このプログラムの実行アドレスは52ABhであることがわかると思います。


ちなみにこのヘッダのサンプルも
ファイル"CHENGE MEMORY"(^_^;)のものです。
MZ-1500からテープに移したとき参照したデータと比べてみてください。