昔のパソコン雑誌に載っていたプログラムを入力する際、現代のパソコン上で打ち込みができると色々楽です。ここでは、特にマシン語プログラムをバイナリエディタを使って入力する際に使っている自作ツールを置いておきます。PC-6001用に書いたものですが、他の機種に応用できるものもあるかもしれません。簡単なプログラムが多いですが、同じものを書く手間を少しでも省いていただければ。すべてコンソール用プログラムで、一般的なCコンパイラならばたぶんコンパイルできると思います。Windows用の実行ファイルも用意しました。
I/OやPiOなどで主に使われた方式です。1行を8バイトとし、16行分について縦横それぞれを合計して、下1バイトをチェックサムとします。横サムだけしかない場合もありました。
I/OやOh!PCなどで使われた方式です。1行を16バイトとしています。
ASCIIやログインで使われた方式です。1行を8バイトとして合計を出し、更に行先頭アドレスを上位下位に分けたものを加えるものです。
ソースリスト Windows用実行ファイル (2015.6.26バージョン)
PC-6001活用研究で使われた方式です。アドレス加算サムの2の補数を表示するものです。
PCマガジンで使われた方式です。1行を8バイトとして、最初のデータ+2番目のデータ×2+……+8番目のデータ×8を計算し、更に行先頭アドレスを加えます。下位2バイトを使う場合と3バイトを使う場合がありました。
ソースリスト Windows用実行ファイル (2015.8.11バージョン)
Oh!MZ/Oh!XでMZやX1のダンプリストに用いられた方式です。8×16の縦横単純サムに加え、16行ごとに特殊なCRC計算の値が表示されます。
バイナリデータにアドレス情報やチェックサムなどを加えて、いわゆるI/Oモニタ形式の.p6ファイルを作成します。Nモニタ、Eモニタ、PiOモニタなども同形式です。T&Eソフトの初代機用ソフトなどにもよく使われました。
バイナリデータを、PC-6001mkII以降のマシン語モニタでセーブする際に出力される形式に変換します。ロード用の識別ヘッダが付いたり終了の仕方が独特だったりするため、一般的なインテルHEX形式とは少々異なります。
バイナリデータを、PC-8001のマシン語モニタでセーブする際に出力される形式に変換します。
実機で読むための.wavファイルに変換するプログラムです。BASICもしくはファイル情報ブロック無しのデータならば先達の優れたツールが使えるのですが、I/Oモニタ形式を実機で読みたくて書いてみました。デフォルトではBASIC用の音声データを8ビット9600Hzモノラル1200ボーで出力します。I/Oモニタ形式を変換する時は、「-f io」というオプションを使ってください。オプションの種類を無闇に増やしたので、オリジナルのフォーマットも作成できます。由緒正しいカンザスシティスタンダードも出力できるぞ!
ソースリスト Windows用実行ファイル (2021.6.8バージョン)
上の逆プログラムです。こちらはP6DatRecをはじめとしていくつか選択肢があるようなので新規に作る意味はあまり無い気がするのですが、習作として書いてみました。範囲をずらしながらひたすらFFTを繰り返して検知する方式のため、非常〜に遅いです。その遅さ、P6DatRecの10倍以上!既存のツールではピークやゼロクロス間の時間を計って検出する方式が一般的みたいですね。対応wavフォーマットは、リニアPCM、量子化ビット数8/16、モノラル/ステレオ、サンプリングレート自由です。ただし9600Hz程度以上無いと厳しいでしょう。
既存のツールに比べると、ベースラインが変動するタイプの歪みにはたぶん強いと思われます。一方、振幅が変化するタイプの歪みには極めて弱いです。特に1200Hz部分と2400Hz部分とで極端な差があるようなテープは全然駄目でした。別途フィルタリングソフトで振幅を揃えたりすればいけるかも。
P6のキャラクタセットを使って、ファイルのキャラクタダンプを行います。平仮名などを含んだマシン語ファイルイメージを眺めたい時などに。
ディスクイメージにどのようなファイルが含まれるか表示します。
ディスクイメージから、指定したファイルネームのファイルを抽出します。出力ファイル名も同じになるので注意してください。
1DDITT形式のディスクファイルをD88形式に変換します。以下のようにして使います。
1ddtod88 [-f] <入力ファイル> <出力ファイル>
-fオプションを付けると、1DDITT形式かどうか怪しいファイルも強制的に変換します。