以前、PC-6001 カセットテープのデータ構造について解説しました。今回はそれをお手軽に実現するためのツールを作成しましたので公開いたします。

2022/03/09 17:30 少し問題があったのでツールを更新しました。


  • p6 カセットテープバイナリロードツール
PC-6001 のカセットテープ読み込みの構造を見て、少し疑問に思った人はいないでしょうか。私は凄く気になったのですが、テープに保存してる内容に CRC(チェックサム)が付与されていないのです。これだと文字化けして読み込んだとしても気がつかず、最後までロードして、起動して、暴走して初めておかしいと気がつきます。

また、CLOAD<ret> RUN<ret>で動かす .p6ファイルを作る工程が少しややこしくて、何度か作成しているうちに、えーい、こういう定数的な作業はツールに任せてしまえと、開発を決意しました。どれだけ需要があるか分かりませんが、256ブロック毎にCRCチェックを入れる専用ローダーを組み込んだ、PC-6001マシン語ロードツール p6loader を公開いたします。下記からダウンロードしてください。


本ツールは C# .NET 6.0 で作成されています。動作対象は Win7 以降です。x64 専用なので 32bit OS では動作しません。発行時に込み込みビルドとしてありますが、万が一、ランタイムが不足しているとエラーが出た場合は、下記からランタイムインストールをお願いいたします。



  • ツールの特徴
細かな使い方は同梱の README.TXT を読んで頂くとして、簡単な特徴を記載します。
  1. 手軽にCLOAD<ret> RUN<ret>によるマシン語読み込み処理を実現
  2. 起動モードが N60, N60Ext, N60m, または N66 BASIC なら Page に依存しない
  3. $0000 - $F9BF までの範囲でバイナリデータのロードが可能
  4. 256バイトのブロック単位で CRCチェックを付与
  5. 実行時にフルRAMモードで受け渡し
  6. エラー発生時はマシン語モニタに戻る
  7. コマンドライン処理もGUIでの編集も可能
マシン語プログラムたるバイナリファイルを指定して、p6loaderを通すだけで、指定のアドレスにロードして実行する p6 ファイルを出力します。現在、SR BASIC は中間コード体系が異なるため動きませんが、ちゃんと対応すれば動くと思います。ニーズがあれば対応しますのでコメント欄からご要望ください。
※ピカチュウフリーク向け

  • GUI
GUI での編集イメージは下記の通りです。
マシン語ローダーユーティリティ
データ間ギャップは、デフォルトで 4 になっています。これは特に変更する必要がありません。実機でモーターの回転が安定するまで時間がかかり等で、テープから追加バイナリをまともに読み出せない場合に限り、数値を弄るようにしてください。エミュだと 0 でも全く問題ありません。

あと、細かい事はツールをダウンロードして、そのアーカイブ内の ReadMe.txt をご覧ください。


  • 実機に読み込ませる
実機に読み込ませるには、本ツールで .p6 ファイルに変換してから、その .p6 ファイルを音声データに変換する事になります。いろいろ試しましたが、個人的には TINY野郎 @tiny_yarou さんが公開しているなんでもピーガーmkⅡが使いやすいと思います。


以上、PC-6001系のゲーム公開に少しでもお役に立てれば幸いです。
※長持ちはしないですがピカチュウ好きには気にならない…と思う。