Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ、自作ソフトの配布など。

Windows 11のコマンドプロンプトでMSX-DOSの外部コマンドを実行する方法

 いにしえの8bitパソコン「MSX」のDOSアプリ(MSX-DOS 外部コマンド)を2022年現在の最新環境であるWindows 11のコマンドプロンプトで実行する方法が俺的に便利だったので忘備録としてメモします。

https://p.gigamix.jp/devmsx/cg/win11cmd-msxdos_title.jpg

 仕掛けをざっくり言うと、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コマンドプロンプトで起動するためのプログラムです。

 ダウンロードはこちら。↓

takeda-toshiya.my.coocan.jp

 プログラム(実行ファイル)は多数の中から選べますが、当方は「IA32_x64版」を利用しています。

 「IA32_x86版」など各種x86版のプログラムを用いれば32bit版 Windowsの各種コマンドプロンプトでも実行できるかもしれませんが、当方は未確認です。

MSX-DOS Emulator

 Inatcher さんがリリースしている、Zilog製8bit CPU(いわゆるZ80)の「MSX-DOS」及び「CP/M」用アプリをMS-DOS環境で起動するためのプログラムです。

 ダウンロードはこちら。↓

www.vector.co.jp

 プログラム(実行ファイル)は8086版(MSX.EXE)と80386版(MSX386.EXE)の2種類が存在しますが、当方は「80386版(MSX386.EXE)」を利用しています。

MSX-DOSの外部コマンド

 いにしえのフロッピーディスクから頑張って掘り出してください(投げやり)。

コマンドの実行

 MS-DOS Player、MSX-DOS Emulator、実行したい外部コマンドや各種ファイルを同一ディレクトリに格納してから、コマンドプロンプトで以下のように実行します。

msdos msx386 <MSX-DOSの外部コマンド> <外部コマンドのオプション指定>

 こう記述することで、msdosMS-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 というインデックスファイルを生成します。

実行できないアプリ

グラフィック処理を伴うアプリ

 ざっくり言うと、コンソール画面(テキスト画面)外で動作するアプリは実行できません。実行時にSCREENモードが変わるアプリは期待薄です。テキストモードの変更に関してはある程度動くかもしれませんが…

スロット・I/O・BIOSを利用するアプリ

 MSX本体のハードウェア機能と直結する処理を伴うアプリは実行できません。前述のグラフィック処理もけっきょくはVDPを操作して処理されるものですし、音が鳴る・特定のスロットやポートを読み書きしている・MSXBIOSを利用している…等の処理も本体ハードウェアの機能を利用しています。

 今回の仕掛けはあくまでDOS(ファイル操作と最低限の入出力)のエミュレート環境であって、MSXの本体機能をエミュレートする環境ではありません。

MSX-DOS2用アプリは実行できないかも?

 MSX-DOS Emulatorが想定するMSX-DOSのバージョンは 1 です。MSX-DOS2用アプリは実行できないかもしれません。

 MGSCはMSX-DOS1でも動作するアプリですが、プログラム内にDOS2のファンクションコール(70h)が含まれているらしいために動作しないようです。

 PMarc2は実行されるもののデータ生成は行われないようです。

【オマケ】CP/M用アプリをWindows PCで動作させる方法

 MSX-DOS Emulatorでは実行できない・実行してもファイルが正常に生成できない場合は「iz-cpm」を用いると成功する場合があります。

github.com

 ぜひお試しください。