前回のハードウェア編からの続きとなります。
続きのクロス開発環境の記事もあります。

PC-8001 の時と同じく、開発そのものは実機ではなく Windows上でのクロス開発環境を整えます。以下の手順で開発を進めます。

  1. z80 テキストエディタでZ80のプログラムを記述する。
  2. bin アセンブルする。エラーがあればなくなるまで修正する。
  3. p6 エミュレータで実行確認する。必要に応じて p6 形式に変換する。
  4. wav 実機で動作確認する。問題なければメディアに記録して完成。

上記作業に必要なソフトウェアを紹介します。


  • テキストエディタ

Visual Studio Code


Microsoftが公開しているフリーのテキストエディタです。特にエディタにこだわりがなければ、まずはこれを使う事をオススメします。ただ、インストール直後は表示が少しおかしいです。
ShiftJISが化ける
まず文字のエンコードが化ける事があります。これは、File > Preference > Settings から設定ダイアログを開き、検索に Encoding と入力後に表示される Files: Auto Guess Encoding にチェックを入れてください。これで文字コードが自動判別されます。Auto Guess Encodingにチェックを入れる

あと、検索窓に tab size と入力して、Editor: Tab Size を 8 に設定します。ググると settings.json に [Z80] としてタブサイズを指定すればとあるのですが、私の環境では上手く動作しませんでした。そのため、今回のご紹介ではデフォルトタブ数を 8 としています。分かる方は拡張子(言語)別に設定すると良いでしょう。tab-size-を8に

EXTENSIONS 機能拡張に z80 と入力すると、Z80アセンブラソース編集に特化した、各種の機能拡張が簡単に行えます。機能拡張のオススメ…というか必須の EXTENSIONS は Z80 Assembly です。

Z80 Assembly

ステートやコメントの色分けをしてくれるので、一気にソースコードが読みやすくなります。
色がついた
似たような拡張機能に Z80 Assembly meter があります。ソースで範囲指定すると、そのコードのバイト数とステート数を表示してくれる、大変有り難い機能を搭載しているのですが、残念ながらピリオドから始まるローカルラベルに対応していないため、その行のステート数やバイト数がカウントされないという問題があります。

秀丸エディタ


私の場合はやっぱり秀丸です。

標準でアセンブラという書式設定がありますので、.z80ファイルを開いた状態で、その他-ファイルタイプ別の設定より Z80の設定をアセンブラに切り替えるだけで、表示もタブもアセンブラに合わせたスタイルに一発で変わります。
ファイルタイプ別の設定
アセンブラを指定
アセンブラの表示に特化
私の環境は Win3.1の時代から延々と秀丸を使い続けているので、標準環境と違っている可能性はありますが…



  • アセンブラ

AILZ80ASM

高い完成度を誇っているのに、現在もなお進化を続ける新進気鋭なのに最高水準なアセンブラ、それがAILZ80ASMです。マクロ仕様などに割と私の要望も入っちゃってたりするので、これを推さないわけにはまいりません(笑)。個人的に特筆すべき箇所を列挙します。
  1. ローカルラベルが使える
  2. 未定義命令が使える
  3. 文字コード自動判別
  4. ROM配置に便利なオフセット命令群を実装
  5. アライメント自動調整命令を実装
  6. REPTで最後ループのスキップが可能
  7. イメージしやすい FUNCTION と算術命令群
  8. 後述のエミュが読み込み可能なリスティングファイル出力
  9. Windows, MacOS, Linux と対応OKが多い。
今まで tools80 を推していましたが、今後はこちらを使っていきたいと思います。…が、実はまだ問題があります。実はこの記事を書くにあたって、夢の島ソースをアセンブルしようと試みたのですが、アセンブルが終了せず戻ってこないのです。それでもずーっと我慢して待っていたら、数分後に戻ってきました。そう問題とは、このアセンブル速度の遅さです。

このアセンブル速度の問題を Ishino さんにお伝えしたところ、この記事を書いている 2022/02/27 19:00現在、アセンブル速度が 30倍は高速化したと報告がありました!現在、動作検証中との事なので、これが解決すると最高のアセンブラになります。新版リリースを首を長くして待ちましょう!

※ 2022/02/28 10:00 追記
新版リリースされました。アセンブル速度が凡そ30倍です!
近日中に使用感とかお伝えしたいと思います。


なお、Z80ニーモニック命令表は私はこちらを愛用しています。

Z80 Code Refference



アセンブルに速度を求めるのならこちら。

OUT of STANDARD / tools80_r6_44.lzh

実行には javaのインストールが必要です。今までの私のメインアセンブラでした。戦士のカートリッジのバンクいっぱいを使い切るような巨大なゲームだと、こちらのアセンブラの方が良いかもですが、特に問題がなければ AILZ80ASM ですかね。




  • エミュレーター
PC6001VW4
PC6001VW4

ドアドアmkⅡ (C)1984 中村 光一 / CHUN SOFT / ENIX

PC-6001系のエミュレータといえば定番のPC6001VW4です。


画像を見れば、その他のエミュとか一線を画しているのが分かるかと思います。このエミュ、ソフト開発を主目的にしているとしか思えない機能満載なのです。メモリダンプ、レジスタ内容表示、ブレークポインタ、ステップトレース、ポートの状態、VRAMの状態確認、逆アセンブル、スタック表示等々、本当に開発に必要な機能のてんこ盛り。

制作者の Bernie Mask さん曰く、P6エミュの Visual Studio を目指しているというんですから、目標が高い!実は最初は VW4 は動作が重かったりといろいろ問題があったのですが、それも地道な改良の結果、かなり問題ないレベルまで改善されていると思います。戦士のカートリッジにも対応で、本当に至れり尽くせりですが、つい先日、なんと AILZ80ASM のリスティングファイルの読み込みに対応しました。これは、エミュでの逆アセンブルやステップトレースを、ソースコードに合わせて表示出来る事を意味します。

ステップトレースは本当に助かりました。だいたいのバグはブレークポインタとステップトレースを組み合わせると取れてしまいますね。

なお、エミュレータを動かすには BIOS ROM と、FONT ROM のバイナリファイルが必要です。BIOS ROM は殆どの場合は BASIC ROM と同義です。機種により必要なファイルが異なります。詳しくはこちらのサイトで確認してください。



BIOS ROM等の抜き取りは、TINY野郎 @tiny_yarou さんのツールを使うのが最も簡単です。


BIOS ROM 抜き取りは直接ビデオキャプチャーを経由すると簡単です。

なお、binファイルの読み込みは PC6001VW4 を起動後、[Alt]+[F6]でモニタモードに切り替えた後に、setbin コマンドで任意のメモリ空間にバイナリを展開します。p6 ファイルを作るには、バイナリ展開した後に「bin2p6 ファイル名 開始アドレス 終了アドレス」とすると作られます。なんとなく構造的には簡単そうだから、bin2p6.exe みたいなバイナリ変換コンバーターツールを作りたいですよね。作ろうかな。あまり期待しないでね💦


Bernie さんからファイル形式の仕様が聞けるとか、該当箇所のソース貰えるとかすれば、自分で調べなくてmうわなにをするくぁwせdrftgyふじこlp #死語




  • wav → p6 ファイル変換

市販のカセットテープに記録されたプログラムをエミュで実行するには P6DatRec というツールで、wav ファイルから p6 ファイルに変換する必要があります。また、この p6 に自動起動情報を追加した p6t 形式も存在します。開発では最低でも p6 形式に変換する必要があります。こちらは現在ゆみたろさんのサイトから手に入れる事が出来ます。

ぱぴこんのこころ / PC6001Vのこころ / ツール

余談ですが、このツール内の README.TXT にある「公開場所」が既に 404 になっていて、すわっ!? もう手に入らないのかとビビりました。実際にはゆみたろさんのサイトで継続して公開されていました。いやー、焦ったわー💦

p6t 形式変換は GUI で操作できる p6top6t2w の方が良いかと思います。
BurnOut! / P6 to P6T for WIN32




  • p6 → wav 変換

実機に読み込ませるには、wav 音声データに変換する必要があります。このツールは PC-6001 と言えばこの人、TINY野郎 @tiny_yarou さんのツールを使います。

なんでもピーガーmkII / Windows/PC-6001/MSX用データレコーダーユーティリティー

P6ファイルから wav データを生成します。使い方も簡単で、特に PC-6001の場合は、ダイアログに機種/PC-6001ってあるので、起動して、機種が PC-6001か確認して、バイナリーファイルに p6 ファイルを設定して、WAVファイル作成ボタンを押すだけです。

このツール、音声から p6 も作れるようなんですが、私の操作が悪いのか、変換できませんでした。内藤的には wavからの変換は上記の P6DatRec が良さそうです。