前回のハードウェア編からの続きとなります。

PC-8001の開発は実機では行わず、Windows上で行います。所謂クロス開発環境です。大凡以下のような手順で行います。※ 最初の英字は主なファイル拡張子です。
  1. z80 テキストエディタでZ80のプログラムを記述する。
  2. bin アセンブルする。エラーがあればなくなるまで修正する。
  3. cmt エミュレータで実行確認する。バグがあれば修正する。
  4. wav 実機で動作確認する。問題なければメディアに記録して完成。
それぞれの課程で必要となるソフトウェアを紹介します。


  • テキストエディタ
流石に Windows標準のメモ帳では全く使い物になりません。個人的にはなんてったって秀丸です。Windows 3.1の頃から使い続けていて、これのために Windowsを使い続けているといっても過言ではないぐらいです。ちなみにこのブログの原稿も秀丸で書いてから、livedorr Blogに流し込んでいます。

お金をかけたくない場合のオススメはサクラエディタです。必要にして十分、秀丸を知らなければ、たぶんこのサクラエディタを使っていたかと思います。


  • アセンブラ
様々な有志がZ80で使用できるアセンブラを公開しています。私はNewシティヒーローでは HAL8999さんが以前公開していた tools80 - PC-8001 Emulator Utilities Release 6.41 を使用させて頂いてました。最新版は R6.42 として公開されています。実行には Javaのインストールが必要です。

AILZ80ASM
次に個人的に大注目の新進気鋭のアセンブラが Mitsuhito Ishino @AILight さんが現在開発中の AILZ80ASM です。未定義命令は当然サポート、それ以上に魅力的なのが、ALIGN や REPEAT LAST といった、開発に私が欲しかった痒いところに手が続く命令拡張が成されている点です。そのうち評価版(とか書いているうちに1stリリースでるかもですが)を使ってみたいと思います。

※ 2021/11/16追記 v0.9.0ベータ版がリリースされました。


  • エミュレーター
j80Emu
月刊アイ・オー 1982年5月号 New RALLY-X (C)1982 駒川 融

個人的には HAL8999さんが公開されている j80が最高です。私がこのエミュレータを褒める理由は、再現性が高く、メモリの状態確認やレジスタのチェックが出来るためです。異常なポート出力に対しても、かなりの確率で実機と同等の動作をしていました。おそらく相当な数のソフトをエミュ上で実際に動かして、途方もない時間をかけて調整して追い込んでいったのだと思います。素晴らしいの一言です。私が使用しているのは以前公開されていた j80 - PC-8000 Series Emulator Release 6.117(Ver. 6.7.12) です。現在は違うバージョンが公開されているようです。基本的には新しい方が良いと思いますが、開発に着手したらなるべく変更しないのもトラブル防止だと思っているので、最新版は未確認です。※ 実行には Javaのインストールが必要です。

これ以外にも案外多くのエミュレータが見つかりますが、出来れば以下の確認が出来るエミュレータを開発確認用に選んでください。

 * メモリの状態確認
 * レジスタの状態確認
 * 実行停止、再開、ステップトレース
 * 書き込み停止、読み込み停止


  • N-BASIC ROM
PC-8001 は起動直後に N-BASIC が起動します。多かれ少なかれ、ゲームプログラムはこの N-BASIC に依存した作りになっているのが多く、私が作成した Newシティヒーローも内部ROMルーチンの呼び出しを行っています。最低限必要なファイルは N-BASIC ROM(&H0000-&H5FFF)とフォントファイルです。

画面に表示されるQRコードもどき
N-BASIC は TINY野郎さんが公開されている新・PC-6001シリーズのBIOSデータをデータレコーダーもフロッピーも使わずにPCに移すを使用すると簡単に抜くことが出来ます。画面にQRコードみたいな模様が表示されるので、それをキャプチャしてバイナリに戻します。名称が PC-6001となっていますが、実は原理的には何でも使えますし、P6_BIOSCAP_COLOR.zip アーカイブ内には参考としながらも、PC-8001用の取り込みプログラムが格納されています。

ただ、残念ながら格納されている .cmtファイルは中身が違っていてそのままでは読めないです。そのため、私が変換したファイルを掲載しておきます。ご活用ください。
b2mv80.zip
b2mv80cmtがエミュ用、.wavが実機読込み用です。CMTケーブルがあればPCから cload"b2mv80"としてから runで実行します。選択肢 1 が PC-8001、2 が PC-8001mk2です。実際の取り込み等、細かい部分はツールのドキュメントから使い方ページに遷移してください。取り込みにはビデオキャプチャ環境が必要です。私は GV-USB2 を使って取り込んでいます。割と安価ですし、とりあえず買っておくと良いかも。



  • 文字フォントROM
私は会社の仲間が、PC-8001 実機 ROMから IC引っこ抜いて、ちゅーちゅーと ROM Writerからデータを抜いてもらいました。私は ROM Writerには疎いので間違ってもオススメできないです。うちの会社の人によると、Windows10で動かなかったりとか、いろいろクセとか相性とかあるみたいで、彼が使っていたライターは今は手に入らないのだそうです。別途検索して覚悟を決めてえいやっとしてください(苦笑

…でも、これだと困りますよね? ネットを探したらこんなの見つけました。

Gen88Font というフォントジェネレータです。これを解凍して

Gen88Font.exe --p88sr
と実行すると、PC88.FNT というファイルが出来ます。これを 0000 - 07FF までを残して後方を削除します。バイナリエディタかバイナリファイルカッターで後方を削除します。私は Binary Editor BZ を使用しましたが、バイナリ編集できるのならなんでも構いません。バイナリエディタもなにげによく使ってますので、この際導入しておきましょう。
BzEditor
この後方を削除した 2KBのファイルが PC-8001エミュで使用できるフォントファイルになります。名前を PC-8001.FON とでもしておいてください。互換フォントなので少しイメージが違いますが、Gen88Fontフォルダ内の SmallFont.bmpを自分で書き換えると、オリジナルと同様にも出来ます。

参考までですが、オリジナルフォントだとこんな表示になります。
オリジナルフォントだとこんな表示になります。

  • バイナリファイルをカセット形式に変換する bin2cmt
アセンブラが出力する形式はだいたい.binです。これは単純なバイナリファイルで、そのままではエミュレータでは読むことが出来ません。読み込ませるためには.cmtファイルが多くの場合必要となります。このファイル形式は80解體新書で公開されています。
※残念ながら80解體新書は閉鎖になりました…

形式が単純なので、少しプログラムを囓ったことがある人なら、だいたい自作できるとは思います。私は自分で作ってしまいました。折角なのでソース込みで公開しておきます。宜しければお使いください。

bin2cmt.zip

ちなみに bin2t88も自作していますが、作っただけで使っていないので動作保証なしです。それでも宜しければ公開しますのでコメント欄からお申し出ください。


  • 音声データに変換 pcm8001
pcm8001
cmt ファイルがあればエミュレーターで読み込んで起動することが出来ますが、実機で読み込ませようと思ったら、cmtから wavに変換する必要があります。これもずっと紹介している HAL8999さんのツール pcm8001_r6_13.lzh で変換します。※ 実行には Javaのインストールが必要です。

これぐらいのハードとソフトを揃えれば、PC-8001のプログラム開発は可能になると思います。私はこのPCのおかげで、今の私があると思っています。全てのプログラミングの基礎にもなっている…と言うと大げさでしょうか。ほんのちょっとのミスで即暴走するというスリリングな世界を是非ご堪能ください (*´Д`*)