雑誌プログラム入力支援ツール置き場

昔のパソコン雑誌に載っていたプログラムを入力する際、現代のパソコン上で打ち込みができると色々楽です。ここでは、特にマシン語プログラムをバイナリエディタを使って入力する際に使っている自作ツールを置いておきます。PC-6001用に書いたものですが、他の機種に応用できるものもあるかもしれません。簡単なプログラムが多いですが、同じものを書く手間を少しでも省いていただければ。すべてコンソール用プログラムで、一般的なCコンパイラならばたぶんコンパイルできると思います。Windows用の実行ファイルも用意しました。


目次


チェックサム計算プログラム

8×16単純サム用

I/OやPiOなどで主に使われた方式です。1行を8バイトとし、16行分について縦横それぞれを合計して、下1バイトをチェックサムとします。横サムだけしかない場合もありました。

ソースリスト Windows用実行ファイル


16×16単純サム用

I/OやOh!PCなどで使われた方式です。1行を16バイトとしています。

ソースリスト Windows用実行ファイル


アドレス加算サム用

ASCIIやログインで使われた方式です。1行を8バイトとして合計を出し、更に行先頭アドレスを上位下位に分けたものを加えるものです。

ソースリスト Windows用実行ファイル (2015.6.26バージョン)


アドレス加算補数サム用

PC-6001活用研究で使われた方式です。アドレス加算サムの2の補数を表示するものです。

ソースリスト Windows用実行ファイル


加重サム用

PCマガジンで使われた方式です。1行を8バイトとして、最初のデータ+2番目のデータ×2+……+8番目のデータ×8を計算し、更に行先頭アドレスを加えます。下位2バイトを使う場合と3バイトを使う場合がありました。

ソースリスト Windows用実行ファイル

(2015.8.11バージョン)

I/Oモニタ形式への変換プログラム

バイナリデータにアドレス情報やチェックサムなどを加えて、いわゆるI/Oモニタ形式の.p6ファイルを作成します。

ソースリスト Windows用実行ファイル


インテルHEX形式への変換プログラム

バイナリデータを、PC-6001mkII以降のマシン語モニタでセーブする際に出力される形式に変換します。ロード用の識別ヘッダが付いたり終了の仕方が独特だったりするため、一般的なインテルHEX形式とは少々異なります。

ソースリスト Windows用実行ファイル


wavへの変換プログラム

実機で読むための.wavファイルに変換するプログラムです。BASICもしくはファイル情報ブロック無しのデータならば先達の優れたツールが使えるのですが、I/Oモニタ形式を実機で読みたくて書いてみました。デフォルトではBASIC用の音声データを8ビット9600Hzモノラル1200ボーで出力します。I/Oモニタ形式を変換する時は、「-f io」というオプションを使ってください。オプションの種類を無闇に増やしたので、オリジナルのフォーマットも作成できます。由緒正しいカンザスシティスタンダードも出力できるぞ!

ソースリスト Windows用実行ファイル (2014.10.5バージョン)


オプション

-b
ボーレートを指定します (整数値)。デフォルトは-b 1200です。P6では600ボーと1200ボーに対応しています。
-c
チャンネル数を指定します。1か2です。デフォルトは-c 1 (モノラル) です。
-f
テープフォーマット文字列を指定します。デフォルトはBASIC用で、-f "b2.0 h3.5 d16 h0.5 d h0.05 b0.6"です。bの後にブランク (無音) 時間、hの後にヘッダ (ピー音) 時間、dの後にデータのバイト数 (0もしくは指定無しだと最後まで)、という書式です。プリセットフォーマットとしてI/Oモニタ形式があり、-f ioとするとI/Oモニタ形式用の音声ファイルが作成されます。
-q
量子化ビット数を指定します。8か16です。デフォルトは-q 8です。
-r
サンプリングレートを指定します (整数値)。デフォルトは -r 9600です。搬送波周波数の8倍以上を指定してください。
-s
ストップビット数を指定します。デフォルトは-s 3です。P6実機の出力では3だったり4だったりするらしいです。
-w
FSKの搬送波周波数のうち低い方を指定します (整数値)。デフォルトは-w 1200です。高い方はその2倍になります。ボーレートの整数倍にしましょう。ただしP6では1200以外を指定すると読めません。(意味ねえー)

wavからの変換プログラム

上の逆プログラムです。こちらはP6DatRecをはじめとしていくつか選択肢があるようなので新規に作る意味はあまり無い気がするのですが、習作として書いてみました。範囲をずらしながらひたすらFFTを繰り返して検知する方式のため、非常〜に遅いです。その遅さ、P6DatRecの10倍以上!既存のツールではピークやゼロクロス間の時間を計って検出する方式が一般的みたいですね。対応wavフォーマットは、リニアPCM、量子化ビット数8/16、モノラル/ステレオ、サンプリングレート自由です。ただし9600Hz程度以上無いと厳しいでしょう。

既存のツールに比べると、ベースラインが変動するタイプの歪みにはたぶん強いと思われます。一方、振幅が変化するタイプの歪みには極めて弱いです。特に1200Hz部分と2400Hz部分とで極端な差があるようなテープは全然駄目でした。別途フィルタリングソフトで振幅を揃えたりすればいけるかも。

ソースリスト Windows用実行ファイル


オプション

-b
ボーレートを指定します (整数値)。デフォルトは-b 1200です。P6では600ボーと1200ボーに対応しています。
-p
位相を反転させます。デフォルトは非反転です。
-t
搬送波検出の閾値を指定します。デフォルトは-t 0.15、つまり振幅が最大録音レベルの15%以上あれば検出されます。音が小さい場合は小さく、ゴミデータを減らしたい場合時は大きくしてみてください。
-w
搬送波周波数のうち低い方を指定します (整数値)。デフォルトは-w 1200です。高い方はその2倍になります。ボーレートの整数倍にしましょう。ただしP6用のデータでは1200以外に指定する意味はありません。

参考サイト


トップ > 雑多なもの > プログラム入力支援ツール置き場