いにしえの8bitパソコン「MSX」のDOSアプリ(MSX-DOS 外部コマンド)を2022年現在の最新環境であるWindows 11のコマンドプロンプトで実行する方法が俺的に便利だったので忘備録としてメモします。
仕掛けをざっくり言うと、Windowsのコマンドプロンプト環境下で「MS-DOS」の実行環境を構築し、そのMS-DOSの実行環境下で「MSX-DOS」の実行環境を構築します。なお当方の利用環境はWindows 11です。Windows 11より下のOS(64bit版)でも実行できるかもしれません。
用意するもの
MS-DOSのシステムファイル(MSDOS.SYS、IO.SYS、COMMAND.COMのようなファイル)およびMSX-DOSのシステムファイル(MSXDOS.SYS、COMMAND.COM)は必要ありません。
64bit版 Windows(のコマンドプロンプト)
当方は「Windows 11」を利用しています。Windows 11は64bit版のみリリースされており、32bit版は存在しません。
MS-DOS Player for Win32-x64
TAKEDA, toshiyaさんがリリースしている、intel製16bit CPUの「MS-DOS(いわゆるDOS汎用)」アプリを64bit版Windowsのコマンドプロンプトで起動するためのプログラムです。
ダウンロードはこちら。↓
プログラム(実行ファイル)は多数の中から選べますが、当方は「IA32_x64版」を利用しています。
「IA32_x86版」など各種x86版のプログラムを用いれば32bit版 Windowsの各種コマンドプロンプトでも実行できるかもしれませんが、当方は未確認です。
MSX-DOS Emulator
Inatcher さんがリリースしている、Zilog製8bit CPU(いわゆるZ80)の「MSX-DOS」及び「CP/M」用アプリをMS-DOS環境で起動するためのプログラムです。
ダウンロードはこちら。↓
プログラム(実行ファイル)は8086版(MSX.EXE)と80386版(MSX386.EXE)の2種類が存在しますが、当方は「80386版(MSX386.EXE)」を利用しています。
MSX-DOSの外部コマンド
いにしえのフロッピーディスクから頑張って掘り出してください(投げやり)。
コマンドの実行
MS-DOS Player、MSX-DOS Emulator、実行したい外部コマンドや各種ファイルを同一ディレクトリに格納してから、コマンドプロンプトで以下のように実行します。
msdos msx386 <MSX-DOSの外部コマンド> <外部コマンドのオプション指定>
こう記述することで、msdos(MS-DOS Player)がmsx386(MSX-DOS Emulator)を実行し、msx386がMSX-DOSの外部コマンドを実行します。二重のエミュレート環境!しかも爆速!
「MSX-DOSの外部コマンド」は、拡張子(.COM)まで正確に記述する必要があります。拡張子を省略するとMSX-DOS Emulatorは正しく実行できません。
使用例
MGSEL用ディレクトリファイルを作成する
MGSDRVの音楽プレイヤーアプリ「MGSEL」に対応する楽曲データのインデックスファイルを、MGSF.COM という外部コマンドで生成する方法。
msdos msx386 MGSF.COM SAMPLE *.MGS
こう記述すると、ディレクトリ内に存在する全てのMGSDRV形式データファイル(拡張子 .MGS)のタイトル情報を収集し、SAMPLE.DIR というインデックスファイルを生成します。
一つご報告。今年1年でシェアされた #MSXplay #MGSDRV 用BGMデータを数えたら、自分が把握したものだけで471個もありました!1983年製のMSXの実機でも演奏できるコンテンツが2021年にこんなに増えるなんて夢のようです。皆さんのご愛用&楽曲シェアに感謝します。本当にありがとうございます。🙏 pic.twitter.com/B1LCyeuSY1
— Takashi Kobayashi (@nf_ban) 2021年12月31日
実行できないアプリ
グラフィック処理を伴うアプリ
ざっくり言うと、コンソール画面(テキスト画面)外で動作するアプリは実行できません。実行時にSCREENモードが変わるアプリは期待薄です。テキストモードの変更に関してはある程度動くかもしれませんが…
スロット・I/O・BIOSを利用するアプリ
MSX本体のハードウェア機能と直結する処理を伴うアプリは実行できません。前述のグラフィック処理もけっきょくはVDPを操作して処理されるものですし、音が鳴る・特定のスロットやポートを読み書きしている・MSXのBIOSを利用している…等の処理も本体ハードウェアの機能を利用しています。
今回の仕掛けはあくまでDOS(ファイル操作と最低限の入出力)のエミュレート環境であって、MSXの本体機能をエミュレートする環境ではありません。
MSX-DOS2用アプリは実行できないかも?
MSX-DOS Emulatorが想定するMSX-DOSのバージョンは 1 です。MSX-DOS2用アプリは実行できないかもしれません。
#MGSDRV のMMLをWindows 11のコマンドプロンプト→MS-DOS Player→MSX-DOS Emulator経由のMGSCでコンパイルすれば爆速じゃね?と画策するも「unsupported System call:70H」エラーにより動作しなかった。システムコール70hってDOS2!?-Eオプション(CP/Mファンクションのみ使用)でもダメだった。残念。 pic.twitter.com/OIElQeVzqP
— Takashi Kobayashi (@nf_ban) 2022年1月3日
MGSCはMSX-DOS1でも動作するアプリですが、プログラム内にDOS2のファンクションコール(70h)が含まれているらしいために動作しないようです。
取り敢えずPMEXTでPMAアーカイヴの内容確認と解凍はできました。PMARC2での圧縮はやり方が悪かったのか空のアーカイヴが生成されただけで圧縮できず…。 pic.twitter.com/EWFf99UrgW
— 大槻真嗣 (@s_ohtsuki) 2022年1月3日
PMarc2は実行されるもののデータ生成は行われないようです。
【オマケ】CP/M用アプリをWindows PCで動作させる方法
取り敢えずPMEXTでPMAアーカイヴの内容確認と解凍はできました。PMARC2での圧縮はやり方が悪かったのか空のアーカイヴが生成されただけで圧縮できず…。 pic.twitter.com/EWFf99UrgW
— 大槻真嗣 (@s_ohtsuki) 2022年1月3日
ISH変換もできないみたいです…(2枚目はblueMSXでやった場合) pic.twitter.com/Rm6D6P3M3G
— 大槻真嗣 (@s_ohtsuki) 2022年1月4日
MSX-DOS Emulatorでは実行できない・実行してもファイルが正常に生成できない場合は「iz-cpm」を用いると成功する場合があります。
iz-cpm is a command line CP/M-80 emulator. perhaps this can run MGSC with -E option? https://t.co/T0Ij0HAKil
— _NetNomad (@_NetNomad) 2022年1月3日
Great! MGSC can run on iz-cpm. thanks for your advicing👍 pic.twitter.com/ZD1QLtNN1z
— Takashi Kobayashi (@nf_ban) 2022年1月4日
ぜひお試しください。