twitterのタイムラインを眺めながらブレインストーミング。思いつき次第、適当に追加してゆきます。
【2024.06.06更新】西和彦さんの最新のコメントに倣い、MSXのライセンスに関する考察を別記事へ移動しました。
【2023.05.31更新】代替手段・FDD搭載機であれば実現可能らしい(TablacusDiskRom) を追加しました。
【2023.05.31更新】アイデア・Disk BASICの代替手段を他の拡張BASICで提供する を更新しました。
きっかけ
「dsk2rom」というアプリでMSXのフロッピーディスクイメージファイルをメガROMイメージに変換できることを知り、拙作の「クイズ!あたっちゃって25%」というBASIC環境のゲームソフトをROMイメージ化してみたら、あっさり動きました。どういう仕掛けなのかと思って少し調べてみたらなんと、ROMイメージ内にMSXの「DISK ROM BIOS」と「ディスクイメージ相当のストレージデータ」を同梱していて、ROM起動なのにDisk BASIC ver.1が利用可能になっていたのです。
↓ dsk2rom の GitHub はこちら ↓ github.com
「dsk2rom」のほかにも、MSX-DOS2のカーネルを内包する「MKROMDSK」というアプリも存在するようです。
↓ MKROMDSK の Webページはこちら ↓ www.msx.org
ROMにBIOSを積んでいるのなら、FDDを搭載しない(=Disk BASICが起動しない)機種でも、BIOS経由のどんなディスクアクセスでも、基本的にFDD搭載機の環境を再現できるはずです。
夢実現に最も近いソリューションなので、惜しい…
2024年現在、MSXの各種システムBIOSは米マイクロソフト社が今なお著作権を所有しており、元アスキー創業者の西和彦さんが設立した「MSXライセンシングコーポレーション(MSX Licensing Corporation)」が米マイクロソフト社からライセンスを取得して運用しているようです。これらのシステムBIOSは今なおライセンスフリーで配布されているわけではありませんし、今後もそうなる可能性は低いと考えられます。なぜそう思うかは、下の記事をご参照ください。
にも関わらず、「dsk2rom」は既存のDISK ROM BIOS(DOS1カーネル)をZ80向けに逆アセンブルしたと思われるソースコードがGitHubで公開されていました(dsk2rom向けの改造も施されている可能性もあります)。もしかして…MSXライセンシングコーポレーションの許諾なしにBIOSのソースコードがGitHubで公開されているのではないか?学術目的とは言えソースコードを公開するのはライセンス違反ではないか?という疑念も生まれます。
いずれにせよ、このような状況下において現状は「dsk2rom」に含まれるDISK ROM BIOSを組み込んだコンテンツを西さんの会社の許諾なしに配布できるわけがないことになりそうです。もちろん許諾を取れば配布できるかもしれませんが…
とは言え、この技術は今MSXの界隈で喫緊の課題になっている「製造が停止してしまったフロッピーディスクでなくROMカートリッジで新作ソフトをリリースする手段」を一気に解決できるほどのポテンシャルがあります。FDD搭載機と同じ環境で開発が継続でき、ソフトのリリース時にROMイメージ化してROMへ焼くだけです。新作ソフトはもちろん、過去にリリースされたソフト、リリースが叶わず埋もれてしまったソフトの復刻も容易になります。
幸いにして、MSX用ROMカートリッジを製造してくれる業者(なのか!?)も現れ、自作のROMカートリッジを製造・販売する人が徐々に増えてきました。
オペラハウス公式twitterがMSX用新作ソフトの頒布方法についてアンケートを募ったところ、このような結果になっていました。MSXのコンテンツ配布媒体としてROMカートリッジが再び見直されてきている現状が伺えます。
今求められている技術
- ファイルストレージとストレージコントローラのような仕掛けがROMにパッケージングされていること
- 2DDフロッピーディスクの代替という側面から、4Mbit(512kB)のメガROMカートリッジと同等及びそれ以上の実装が可能であること
- 組込時に各種ライセンスへの違反が発生しないこと
- フロッピーディスクからROMカートリッジへのメディアコンバートが容易であればあるほど良い
- 変換時の互換性は高いほど良い
ROM化へのアイデア
アイデア①公式のBIOSをライセンスしてもらいたい(dsk2rom)
先程取り上げた「dsk2rom」を正規の手段で利用する方法。新作ソフトの販売者が dsk2rom に MKROMDSK へ同梱するDISK ROM BIOS(いわゆるカーネル)に対してMSXライセンシングコーポレーションへBIOSのライセンス料を支払い、正式にライセンスの承認を得ることが可能になれば、これらの技術だけで今すぐ新作ROMソフトが製造・販売できるようになります。
メガROMタイプは「コナミSCC」または「ASCII 8K」でイメージ化できます。最近はメガROMコントローラに互換性がある頒布用の新基板がいくつかリリースされていて、組み込み用途にも応じてもらえるようです。
この手法のメリットは、圧倒的な互換性の高さ。BASIC・マシン語双方のソースコード修正は殆ど不要と思われます。
デメリットは、Disk BASICの動作条件として本体に32kB以上のRAMが必要なため、ROM化したとしてもRAMの容量が8kBや16kBといった多くのMSX1ではメモリ不足のため動作対象外となります。一般的に、Disk BASICの動作環境はMSX-DOS(1)の動作環境とほぼイコールであり、FDD搭載の実機にはDOSの動作条件である64kB以上のRAMが本体に搭載されています。32kB以上のMSX1は台数が少ないですが、MSX2以降なら64kB以上が標準搭載のため、この手法は実質的にMSX2以降が主な対象機種になるでしょうね。
次に、公式BIOSのライセンス承認が必要ということです。アマチュアクリエイターがMSXの公式BIOSを組み込んで販売するためのライセンスを取得できるのか?については、可能かもしれません。別記事で考察しています。
↓ こちらをクリック ↓ gigamix.hatenablog.com
アイデア②Disk BASICをエミュレート実行する(Tablacus DISK ROM Lite)
この記事で散々妄想していたところ、2023年5月頃に注目すべき新技術が生まれました。Disk BASICで使用するファイル制御の各種命令をエミュレートし、コンテンツをメガROM化するという「Tablacus DISK ROM Lite」です。
デメリットもありますがそれを上回る圧倒的なメリットがあります。筆者(nf_ban)が個人的には今一番実現可能な注目すべき技術の一つと思っています。これにつきましては特集記事を書きましたので、興味ある方はぜひ御覧ください。
↓ 特集記事はこちらをクリック ↓ gigamix.hatenablog.com
↓ Tablacus DISK ROM LiteのGitHubはこちらをクリック ↓ github.com
このツールで変換したROMを起動すると、ROMカートリッジ(ROMイメージ)内に仮想ストレージドライブが配置され、MSX BASIC上からROM内の仮想ストレージドライブへファイルアクセスが可能になります。フロッピーディスクの制御に用いるDisk BASICの一部の命令をTablacus DISK ROM Liteのシステムがエミュレートしており、Disk BASICやFDDを搭載しない機種でも利用できます。しかもROMなので、ファイルのロード時間はフロッピーディスクと比べたら爆速です。
この手法のメリットは2つ。まず、ROM BASICと同等の動作環境なので、Disk BASICの起動条件である本体RAM容量32kB以上を必要としなくなります。FDD搭載の有無を問わず利用可能であり、特に日本で数多く発売された本体RAM容量16kBのMSX1もROMの動作対象に含めやすいです。カセットテープのソフトウェアのROM化にも向いています。
次に、米国マイクロソフト社とMSXライセンシングコーポレーションが著作権を主張するMSX Disk BASICやDISK BIOSを一切利用しないため、組込時にライセンスの問題が生じません。
デメリットとしては、Tablacus DISK ROM Liteがエミュレートできない非対応のディスク制御命令(DSKF命令、FIELD命令、GET命令等)がいくつか残っており、そういった命令がBASICプログラムに含まれていると動作が停止します。その場合はプログラムの変更が必要です。
なお、拙作ミドルウェア「DMシステム2」がTablacus DISK ROM Liteで動作可能になったため、ディスク制御の非対応命令はDMシステム2の拡張命令に代替することである程度は吸収できるかもしれません(なお、DMシステム2の動作条件として64kB以上のRAMが必要です)。
↓ 特集記事はこちらをクリック ↓ gigamix.hatenablog.com
アイデア③ROMカートリッジ内でデバイス拡張を行う
ROMにファイルストレージを確保し、デバイス拡張でファイルを呼び出す方法。これなら、DISK BIOSが存在しない機種でもファイルアクセスが可能になるかもしれません。
この技術は徳間書店の「MSX・FAN ファンダムライブラリー」で実現しているようです。50本ものBASICプログラムがROMカートリッジに搭載されていて、ファイラーから呼び出すことができます。
メリットは、動作環境がROM BASICと同等でありDisk BASICではないので、FDD搭載の有無を問わず利用可能であり、Disk BASICの起動条件である本体RAM容量32kB以上の制限が撤廃されます。
次に、これはDisk BASICではないのでBASICのフリーエリアが最大28kB(Disk BASIC非搭載時のMSX BASICと同レベル)へ広げられる可能性があります。FDD搭載機ではFDDの接続を物理的に切るように起動することも技術的には可能です。
デメリットは、新規で開発するぶんには良いのですが完成済みのソフトはBASIC・マシン語ともにソースコードおよびバイナリの修正は必須です。過去に作成したソフトなら仕様書や技術資料が残っていないと改修できないかもしれません。
アイデア④Disk BASICの代替手段を他の拡張BASICで提供する
- BASICプログラムのロード(と実行)命令を代替する拡張命令(例えば _RUN("<filename>") とか)
- その他各種ファイルのロード命令を代替する拡張命令(例えば _LOAD("<filename>",転送先アドレス[,長さ][,offset]) とか)
- コンテンツ内にセーブデータが必要な場合、それを保存する拡張命令
自分の経験則やほかの方の意見を総合するに、上記のような命令を拡張BASIC化した「ミニマムなストレージコントローラ」と「ファイルストレージ」を同梱してROM化するソリューション。これがあれば多くのBASIC環境のコンテンツはライセンスフリーでROM化できると思います。
メリット・デメリットともにアイデア②③と同様です。FDD搭載の有無問わず全機種対応可能の余地がありますが、プログラムの改修は必要です。
ちなみに、拙作ミドルウェア「DMシステム2」では CALL LOAD というBSAVEヘッダの有無問わずディスク上のファイルをメモリへ転送する命令が搭載されていました。ROMの中にそのようなストレージアクセス系の命令を代替するオリジナルの拡張BASICシステムと仮想ストレージを含んだROMイメージを作成することができれば、このソリューションはDisk BASIC(DOS1カーネル)を使用する必要がなくなるためにライセンスの問題が解消されます。
この記事の執筆後、前述の Tablacus DISK ROM Lite がミドルウェアのDMシステム2に対応しました。2023年6月現在、DMシステム2を用いたコンテンツはメガROMカートリッジ化が可能になりました。また、同じく'90年代に用いられたミドルウェアの「M.K BASIC」も動作するようです。
アイデア⑤Nextorを同梱すれば可能?
「Nextor」はMSX-DOS2の上位互換となる、MSXライセンシングコーポレーション(=西和彦さん)に承認されたかもしれないオープンソースの新しいDOSです。FAT16に対応し、1ドライブ2GBまでの大容量ストレージが、MSX1から制御できる性能があります。
dsk2romはDisk BASIC ver.1(DOS1カーネル、DISK BIOS)を同梱していましたが、Disk BASIC ver.2の上位互換である「Nextor BASIC」を内包するオープンソースの「Nextorカーネル(NextorのDISK BIOS)」を採用すればライセンスの問題が解決する、かもしれない。
「かもしれない」とあえて強調しているのは、Nextorが本当にMSXライセンスコーポレーションの認証がされていて、本当に無償で利用可能かのエビデンスが存在しないからです。現在は無償でダウンロード可能にはなっていますが、組み込み時にも無償で利用できるかは不明なのです。
この手法のメリットは、①ライセンスの問題が解決するかもしれないこと、②Disk BASICとの互換性が一定量は担保されていることです(DOS1からDOS2・Nextorへの乗り換えは若干のプログラム修正が必要かもしれません)。
デメリットは、Nextorの動作条件として128kB以上のRAMが必要なため、対象機種がかなり絞られます。日本ではRAMが64kB以下の機種が圧倒的に多いため忘れがちですが、海外のMSX2は128kBが標準的でした。カートリッジにROMもストレージもRAMも搭載するムチャな環境は…作ろうと思えば作れそうですが…それはもはや巷に出回る「多機能カートリッジ」そのものではないですか。Carnivore2は1個3万円くらいの品です。
現実的に実現可能かはかなり微妙なアイデアではあります。
代替手段
代替手段①Disk BASICが不要ならば実現可能らしい(MSXBAS2ROM)
MSXBAS2ROMは、MSX BASICのプログラムをマシン語へコンパイルしてROM化・メガROM化するツールです。複数ファイルのインクルードも可能で、ファイルロード用のCMD拡張命令が追加されます。BASICプログラムが1本だけしかないようなコンテンツ、かつMSXBAS2ROMで非対応なBASIC命令を使用しないのであれば選択肢の一つになろうかと思います。
↓ MSXBAS2ROMはこちらをクリック ↓ github.com
代替手段②Disk BASICが不要でプログラムが1本だけならば実現可能らしい(DumpListEditor)
PC-8001やPC-8801等のダンプリストやBASIC入力を補助するツールとして生まれたDumpListEditorは、その後各種レトロPC向けの機能をどんどん注ぎ込んでゆき、今やMSXのBASICプログラムをROM化する機能まで実装されています。
BASICプログラムが1本だけしかないようなコンテンツであればファイルロード機能は一切不要なためDisk BASIC(DISK BIOS)相当の機能も不要です。実際、「スターコマンド」のようにBASICプログラムのROM化が市販化される事例もあります。
Disk BASICを利用しないのであれば全ての機種で動作可能ですのでROM化は簡単に実現するかもしれませんね。
↓ DumpListEditorはこちらをクリック ↓ bugfire2009.ojaru.jp
代替手段③FDD搭載機であれば実現可能らしい(TablacusDiskRom)
Tablacus DISK ROMは、ディスクイメージに含まれたコンテンツをメガROM形式に変換し、低レベルのディスクアクセスをROMディスクに置き換えて実行できる、Windows用のアプリです。ディスクイメージ内にAUTOEXEC.BASを含めておけばROMディスクからコンテンツを起動できます。
前述の「Tablacus DISK ROM Lite」と「Tablacus DISK ROM」は別の技術です。それぞれの違いは…
- Tablacus DISK ROM Liteは実機のDISK BIOSを使用しないため、動作可能条件がFDD非搭載機種にも広がる。
- Tablacus DISK ROMは実機のDISK BIOSを必要とするため、動作可能条件がFDD搭載機種に限られる。
「Tablacus DISK ROM Lite」はDisk BASICの命令をエミュレートしてROMディスクを実現するのに対し、こちらはFDD搭載機に含まれるDISK BIOSを乗っ取る形でROMディスクを実現します。
この手法のメリットは、DISK BIOSを乗っ取るためプログラムの互換性が高いことです。ROM化にあたってのプログラムの修正は不要かもしれません。
デメリットは、FDD非搭載機では起動できません。また、Disk BASICの動作条件であるRAM32kB以上が必要です。実質的にはMSX2+以降の機種での利用が前提になります。
↓ Tablacus DISK ROMはこちらをクリック ↓ github.com
代替手段④MSX-DOSのアプリであれば実現可能らしい(LSX-Dodgers)
LSX-Dodgersは、NEC PC-88シリーズやシャープMZ・X1シリーズといった8bitレトロPCでMS-DOS互換のファイルフォーマットとCP/M80・MSX-DOS互換の外部コマンドが利用できる、Z80 CPU向けライセンスフリーのDOSです。元々はMSX以外の機種で利便性を向上させるためのDOSでしたが、なんと、MSX向けにも逆輸入でリリースされました。
MSX版LSX-Dodgersはフロッピーディスクによる起動だけでなく、OSとストレージ部分をメガROMイメージ化することができます。MSX-DOSとLSX-Dodgersは100%の互換性があるわけではありませんので都度確認が必要でしょうが、MSX-DOS環境の自作ゲームであればROM化することは容易になったのかもしれません。
↓ LSX-Dodgersはこちらをクリック ↓ github.com
メガROM化が可能な前述の「Tablacus DISK ROM」と「LSX-Dodgers」との違いは…
- Tablacus DISK ROMは実機のDISK BIOSを必要とするため、動作可能条件がFDD搭載機種に限られる。
- LSX-Dodgersは実機のDISK BIOSを使用しないため、動作可能条件がFDD非搭載機種にも広がる。
どちらの技術もMSX1から動作しますが、MSX-DOSの起動条件と同じく、本体RAMが64kB以上必要です。
純正環境との互換性が高いのは、やはり、DISK BIOSを利用するTablacus DISK ROMのほうです。LSX-Dodgersは純正のMSX-DOSよりもTPAが狭いため、純正DOSでは動作するアプリがLSX-Dodgersではメモリ不足による不具合や動作不能の可能性もあります。
なお、実機のDISK BIOSを使用することで互換性を高めたライセンスフリーの互換DOS「似非DOS for MSX」というのも存在します。
↓ 似非DOSについてはこちら ↓ gigamix.hatenablog.com
過去の更新履歴
- 【2023.05.31更新】アイデア・ROMカートリッジ内でデバイス拡張を行う を追加しました。
- 【2023.05.07更新】代替手段・MSX-DOSのアプリであれば実現可能らしい(LSX-Dodgers) を追加しました。
- 【2023.05.07更新】西和彦さんの最新の発言と当方の見解を追加しました。
- 【2022.05.19更新】代替手段・Disk BASICが不要ならば実現可能らしい(MSXBAS2ROM) を追加しました。
- 【2021.08.08】初版公開。