レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

MSXマシンを購入 2

2021年11月11日 | MSX関連

前回の続きです。

まずは、openMSXのインストールです。サイトのページ左側のDownloadリストから17.0 / Win 64bit (zip) (Windows向けインストーラーなし)と17.0 / Source code(ソースリスト Ubuntuでコンパイルする)をダウンロードします。

Windowsでのインストールは簡単です。ダウンロードしたファイルを任意のフォルダに解凍するだけです。
Ubuntuではソースリストのコンパイルが必要です。詳しくはここに書いてあります。
一応簡単に手順を説明すると、まずソースを任意のフォルダに展開したら、そのフォルダに移動して ./configureと入力します。これで依存関係のチェックが行われますので、noと表示されているライブラリをインストールして再度./configureを実行してエラーが表示されなくなることを確認します。

ところでこれは好みの問題なのですが、openMSXのインストール先を自分のホームディレクトリ以下に置きたいので、configureの実行前にインストール先のディレクトリを変更しました。今回使用したバージョン17.0の場合はopenmsx-0.12.0/build/custom.mkファイル内の

INSTALL_BASE:=/opt/openMSX

という記述を自分の好きな場所に書き換えます。その後./configureを実行します。

次にmakeと入力してコンパイルを開始します。エラーが表示されず無事にコンパイルが終了したらsudo make install(自分のホームフォルダ以下にインストールするときはsudoは必要ありません)でインストール完了です。
インストールしたopenMSXにはCatapultというランチャーも付属していますが、今回エミュレートしたいPHC-SPCには周辺機がついていないのでわざわざCatapultは使いません。Windowsならopenmsx.exeを、Ubuntuならopenmsxを直接起動してしまいます。

openMSXがインストールできたので、次にPHC-SPC実機からBIOS ROMを吸い出します。作業はWindows10環境で行いました。他のMSX1のマシンのROM吸い出しも同じ手順で行えるはずです。

まず、MSXマシンのカセットインターフェイスをPCのサウンド入力端子(ライン入力やマイク入力)につなぎます。
続いて、Windowsのサウンドレコーディングソフト(お好きなものを使ってください。レコーディング時のフィルタ類の設定はオフにしておくほうがいいでしょう)でレコーディングを開始し、MSXマシンで次のコマンドを入力します。

bsave"任意のファイル名",0,&H7FFF

MSXマシンでOKプロンプトが表示されたら、レコーディングソフトの録音を停止します。録音データはWAVファイルとして保存してください。ここではファイル名を仮にbios.wavとしておきます。このWAVファイルからROMのバイナリデータを取り出すために、以前にも紹介したこちらのサイトのDumpListEditorを使いました。使用したバージョンは0.48です。

DumpListEditorを起動したら、表示されるウインドウ左上の機種選択リストをMSXにします。上記のbios.wavをこのウインドウにドラック&ドロップするとWAVファイルの解析が始まり、少しするとbios.casというアイコンが表示されます。これをエクスプローラーにドラック&ドロップして取り出します。

再度このbios.casをDumpListEditorにドラック&ドロップすると、今度はbios.BINというアイコンが表示されます。



これをもう一度エクスプローラーにドラック&ドロップします。これでROMのバイナリファイルが取り出せました。ただし、このファイルにはMSXカセットデータのヘッダがついたままなので、これを削除する必要があります。

お好きなバイナリエディタ(HxDを使いました)でbios.BINを読み込んだら、先頭の7バイトを削除します。



削除したらこのデータをphc-spc_basic-bios1.romという名前で保存します。
PHC-SPC以外のMSXマシンでROMを吸い出すときは、openMSX¥share¥machinesの下にエミュレートできるMSXマシンの設定ファイルが入っているので、吸い出した機種名の設定ファイルに記述されている拡張子が.romのファイル名をBIOS ROMのファイル名にします。

これでやっとopenMSXで使用できるROMファイルが出来上がりました。

作成したROMファイルをopenMSXのフォルダにコピーします。Windowsは解凍したopenMSXフォルダ内のshare¥systemromsの下に、Ubuntuの場合はopenMSXをインストールしたフォルダのshare/systemromsの下にコピーします。

ただし、将来openMSXの新バージョンをインストールするたびにROMファイルをコピーするというのが面倒ならぱ、Windowsの場合はopenMSX起動後に作成されるドキュメントフォルダの下のopenMSX¥share¥systemromsに、Ubuntuの場合はホームフォルダに作成される.openMSX/share/systemromsの下にコピーするといいでしょう。

それではopenMSXを起動します。

Windowsの場合はインストール先のbinフォルダの中にあるopenmsx.exeをダブルクリックして起動します。起動後、openMSXのウィンドウ左上の方にマウスカーソルをもっていくとメニューボタンが表示されるので、クリックします。



表示されたメニューからHardware... → Change Machine... と選びMSXマシンの一覧からエミュレートしたいマシンを選びます。今回はSanyo PHC-SPCを選びました。
さらにHardware... → Set Current Machine as Default を選びます。これで次回起動からPHC-SPCマシンとなります。

Ubuntuの場合も同じですがなぜかターミナルからのコマンド入力でしか起動できないので、ファイルマネージャから起動したい場合はスクリプトファイルに以下のように記述して、スクリプトファイルのクリックで起動するといいでしょう。

インストール先フォルダ/openMSX/bin/openmsx -machine Sanyo_PHC-SPC

上記の設定をしていればコマンドラインの-machine以下は省略できますが、C-BIOSのような互換BIOSとかを使うときにスクリプトのコピぺで簡単に機種変更ができるのでこうしています。機種名は上記のopenMSX¥share¥machinesにある対象機種のファイル名の拡張子を取り除いたものと同じになります。

ところで、openMSXのメニューでは日本語ファイル名が表示されません。メニューで使用するフォントはWindows、Ubuntu共にopenMSX¥share¥scripts¥_osd_menu.tclファイルの中で記述されているので、これを日本語フォントに変えればちゃんと表示されます。今回はファイル内のフォント設定set deffontの項目を

Windwsの場合は

set deffont      [get_optional menudef "font" "/Windows/Fonts/msgothic.ttc"]

Ubuntuの場合は

set deffont      [get_optional menudef "font" "/usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf"]
(ただしTakaoフォントがインストールされている必要あり)

に設定しました。

さらに今回エミュレートするPHC-SPCはカセットインターフェイスでプログラムの読み書きを行うので、openMSXでのカセットデータ利用が便利になるように設定します。設定方法はWindows・Ubuntu共通です。

openMSXでカセットデータを扱うときは.casか.wavファイルを使いますが、デフォルトではこれらのファイルを読み込むときは実機と同じスピードになります。リアルでいいのですが、動作確認で何度も読み込むときは時間がかかってイライラするので、高速で読み込めるように設定します。

openMSXを起動したらF10キーを押してコンソールを表示します。続いて以下のコマンドを入力します。

set fullspeedwhenloading on

再度F10キーを押してコンソールを閉じます。

openMSXで読み込むカセットデータのファイルを指定するには、メニューから[Tape Deck: ]を選ぶかファイルのドラッグ&ドロップで行います。デフォルトではファイルを設定すると自動的に読み込んで実行してくれます。(.casファイルのみ)
ファイルが1つのときは便利なのですが、BASIC+マシン語などの構成のプログラムのときは困ります。そこで必要に応じてこの機能をオフにします。

F10キーを押してコンソールを表示したら、以下のコマンドを入力します。

set autoruncassettes off

コマンド入力後にF10キーを押してコンソールを閉じます。

再度、自動実行を有効にしたくなったら上記コマンドのoffをonにかえて実行します。

設定は以上です。これでMSXプログラムの動作確認とデバッグをエミュレータで行えるようになりました。

ところでWindows版のopenMSXではmenuの[Tape Deck: ]を選ぶとエラーになってしまい、カセットファイルの操作が行えません。ドラッグ&ドロップで読み込みはできるのですが、テープの巻き戻しやセーブができないのでとても不便です。Ubuntu版では正常に動作するのでこちらを使えば済むのですが、なんとかしてほしいところです。

さて、ここまでできたら次に実機で動作させるプログラムを作るための環境を構築したいと思います。いまさらBASICでのプログラム開発はしたくないので、せめてC言語を使いたいところです。調べてみると、z88dkというなかなか良さそうなCクロスコンパイラがありました。開発環境はWindows・Linuxどちらでもいいのですが、こういったクロス開発は個人的にLinuxの方が扱いやすいと思っているのでUbuntuで構築しようと思います。

作業的にはまだまだ長くなるので、また次回にしましょう。



最新の画像もっと見る

コメントを投稿