Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ。自作ソフトの配布などは公式サイトへ→ https://gigamix.jp/

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

【2024.12.13更新】 RunCPM を追加
【2024.12.13更新】 MSX-DOS PlayerのバージョンアップによりASM.COMが動作可能に
【2024.12.02更新】 MSX-DOS スーパーハンドブック ASM.COMの情報を追加
【2024.10.18更新】 MSX-DOS Playerのバージョンアップにより各種DOSアプリの動作が向上
【2024.10.09更新】 MSX-DOS Player(実行方法 ver.2)を追加
【2022.01.02更新】初版公開

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

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

 仕掛けをざっくり言うと、Windowsコマンドプロンプト環境下で「MSX-DOS」や「MS-DOS」といった古いOSの実行環境を構築します。なお当方の利用環境はWindows 11です。Windows 11より下のOSでも実行できるかもしれません。

実行方法 ver.2(MSX-DOS Player)

 「MSX-DOS Player for Win32」はWindowsコマンドプロンプトにてMSX-DOS(1)をエミュレートする実行環境です。2024年10月にリリースされ、これまでの手順より短くシンプルになりました。

用意するもの

 MSX-DOSのシステムファイル(MSXDOS.SYS、COMMAND.COM)は必要ありません。

Windows(のコマンドプロンプト

 当方は「Windows 11」を利用しています。各種32bit版Windowsでも動作するようですが当方は実行環境を持っていませんので詳細不明です。

MSX-DOS Player for Win32

 TAKEDA, toshiyaさんがリリースしている、MSX-DOS及びCP/M-80のアプリ(外部コマンド)をWindowsコマンドプロンプトで起動するためのプログラムです。

↓ MSX-DOS Player for Win32のダウンロードはこちら ↓ takeda-toshiya.my.coocan.jp

 Zipアーカイブを展開すると2つの実行ファイルが存在します。

  • msx.exe … MSX-DOS用アプリの実行に用いるプログラム
  • cpm.exe … CP/M-80用アプリの実行に用いるプログラム

 MSX-DOS自体がCP/Mのエミュレーション環境であるとも言えますので普段遣いはmsx.exeでほぼ問題ないと思われます。msx.exeでは問題が発生するCP/Mアプリはcpm.exeを用いると確実性は上がるかもしれません。

MSX-DOSの外部コマンド

 いにしえのフロッピーディスクから頑張って掘り出してください(投げやり)。なお、MSX-DOS2用の外部コマンドは非対応につき動作しません。

コマンドの実行

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

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

 こう記述することで、msx.exeがMSX-DOSの外部コマンドを実行します。実機を用いるより爆速!!

実行方法 ver.1(MS-DOS PlayerとMSX-DOS Emulator)

 2024年10月まで唯一の方法としてご紹介していた「MS-DOS Player for Win32-x64」と「MSX-DOS Emulator」を併用する方法です。こちらの方法より上記のMSX-DOS Playerのほうが圧倒的に処理速度が速いのですが、実行結果は変わるかもしれません。

用意するもの

 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コマンドプロンプトで起動するためのプログラムです。

↓ MS-DOS Playerのダウンロードはこちら ↓ 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環境で起動するためのプログラムです。作者さん曰く、MSX-Cを動作させることを目標に開発されたプロダクトのようです。

↓ MSX-DOS Emulatorのダウンロードはこちら ↓ www.vector.co.jp

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

MSX-DOSの外部コマンド

 いにしえのフロッピーディスクから頑張って掘り出してください(投げやり)。なおMSX-DOS2用の外部コマンドは非対応につき動作しません。

コマンドの実行

 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は正しく実行できません。

使用例

MSX-C(Cコンパイラ

MSX-Cのでかいプロジェクトが四散していたので、Hello,world書きましたが、1秒で終わるのは隔世の感があります。😲 実機の時は漫画とか読みながら横になったものです。98の頃からHI-TECH CとCP/M エミュは使ってましたが、別次元感があります。 — Tatsu (@Tatsu_syo) 2024年10月16日
MSX-DOS Player(10/14/2024) で、med.com が動きはじめていてWindows のコマンドプロンプント上で MSX-C 開発が快適に行えます。Windows のエディタを併用して、MSX-C ビルドを最速にしたい方におすすめできます https://takeda-toshiya.my.coocan.jp/cpm/index.html pic.twitter.com/0OFIishvTM — renatus (@renatus_xxxx) 2024年10月17日

 MSXで動作させるにはあまりにも重たすぎる処理の筆頭である、Cコンパイラ。場合によってはたった1秒でコンパイルを完了するとのこと。現代の64bit CPUパワーを存分に体感してください!

MSX-DOS スーパーハンドブック ASM.COM(Z80アセンブラ

「MSX-DOSスーパーハンドブック」ASM・COMのZ80アセンブル作業を「MSX-DOS Player for Win32」最新版(2024/12/12)で試してみたらめちゃくちゃ速くて変な笑いが出た件 https://twitter.com/nf_ban/status/1867077279869755676 pic.twitter.com/tIjBGdUMYG — Takashi Kobayashi (@nf_ban) 2024年12月12日

 アスキー刊「MSX-DOS スーパーハンドブック」に掲載されていた、2パスZ80アセンブラです。昨今のWindowsで動作する64bit CPU環境ならコンパイル作業が凄く速い!!

DOS本としても良書でしたが、MON等の使えるツールも満載でした。特にDOS-TOOLSのM80/L80がとにかく遅くて学習用には厳しかったため、高速なASMには長年マシン語学習を助けて頂きました。開発者の方と、アスキー出版局に感謝します。 pic.twitter.com/RrtFEUmZaV — Fodderwing (@Fodderwing_Fore) 2024年12月11日

 同社の「MSX-DOS TOOLS」に収録されたM80・L80のほうが高性能かつ高価だったことに対してASM.COMは紙面のプログラム打ち込み入力を頑張れば無料で入手できたほか、コンパイル環境の構築自体はASMのほうが手軽だったため、愛用者は意外と多かった印象です。

作者の武田さんに伝わるか分からないけど書いておくと、ドット絵鑑賞プログラムのインデックスデータをMSX-DOSスーパーハンドブックのASM.COMを使ってバイナリ生成したのだけれど…MSX-DOS Player for Win32ではASMが動作しなかったです(ウインドウ内暴走)…なのでMSX-DOS上でコンパイルしました。 pic.twitter.com/GQlu0Nc7WN — Takashi Kobayashi (@nf_ban) 2024年12月1日

 ASM.COMは当初は動作しなかったのですが、2024年12月12日版のMSX-DOS Playerから動作するようになりました。

PMEXTによるPMA・LZHアーカイブの展開

MSX-DOS Player for Win32、本日(2024.10.12)の更新版を使ってみました。PMEXT(PMEXTLD)のアーカイブ展開で、128バイト嵩上げ問題&タイムスタンプ問題が解消しました!😇580KBくらいのデータ展開に2秒位で終わる64bitパワーが素敵。Cコンパイラとか…実機で重たい処理もこれならサクサクかも? pic.twitter.com/W9RwTUKrkg — Takashi Kobayashi (@nf_ban) 2024年10月12日

 MSX-DOS Playerを用いる場合は…

msx PMEXT <Filename> A:

 MSX-DOS Playerの動作環境では、カレントドライブがドライブA(A:)となっています。よって、Windowsコマンドプロンプトは「C:」で動作していてもファイル展開の展開先ドライブは「A:」を指定する必要があります。

 PMEXTによるアーカイブの展開処理で、本来であればCP/Mの仕様により展開後のファイルサイズが128バイト単位で嵩上げされたり展開後のタイムスタンプが不定になる問題を解決するパッチ「PMEXTLD」の適用にも対応(2024年10月12日バージョンより)。

↓ PMEXTの入手 および PMEXTLDの適用法はこちら ↓ github.com

MGSEL用ディレクトリファイルを作成する

 MGSDRVの音楽プレイヤーアプリ「MGSEL」に対応する楽曲データのインデックスファイルを、MGSF.COM という外部コマンドで生成する方法。

MSX-DOS Player for Win32(2024.10.12版)、MGSFによる103個のMGSDRV形式ファイル(いわゆるMGSデータ)のインデックスファイル作成、Enterキーを押した瞬間に作成完了です。めちゃくちゃ速い!!!😅 pic.twitter.com/yIdrno8Wwa — Takashi Kobayashi (@nf_ban) 2024年10月12日

 MSX-DOS Playerを用いる場合は…

msx MGSF 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日

 MS-DOS Player for Win32-x64 と MSX-DOS Emulatorを併用する場合は…

msdos msx386 MGSF.COM SAMPLE *.MGS

実行できないアプリ

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

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

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

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

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

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

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

MGSC

#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)が含まれているらしいためにMSX-DOS Emulatorでは動作しないようです。

PMARC2

取り敢えずPMEXTでPMAアーカイヴの内容確認と解凍はできました。PMARC2での圧縮はやり方が悪かったのか空のアーカイヴが生成されただけで圧縮できず…。 pic.twitter.com/EWFf99UrgW — 大槻真嗣 (@s_ohtsuki) 2022年1月3日

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

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

iz-cpm

取り敢えず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」を用いると成功する場合があります。

https://twitter.com/_NetNomad/status/1477977646030106633

↓ iz-cpm のGitHubはこちら ↓ github.com

Great! MGSC can run on iz-cpm. thanks for your advicing👍 pic.twitter.com/ZD1QLtNN1z — Takashi Kobayashi (@nf_ban) 2022年1月4日

CP/M 2.2 player for generic MS-DOS

今更ですが、汎用MS-DOS環境下で8080コードで書かれたCP/M用のプログラムを実行する CP/M 2.2 player for generic MS-DOS を公開します。CP/Mの実行環境は CP/M player fro win32 が有名ですが本ソフトは、汎用DOS環境で動作します。https://github.com/Gazelle8087/CPM-player-for-generic-MS-DOS — Gazelle (@Gazelle8087) 2024年8月22日

 CP/M 2.2 player for generic MS-DOSは、Windows95の登場より前のNEC PC-9801DOS/Vマシンといった16bit CPUのパソコンで稼働するMS-DOS(互換品含む)でCP/M-80用アプリを実行できる環境です。

 これとWindows向け各種MS-DOS仮想環境を併用すれば64bit CPUのWindowsでも実行可能になるはずです。

↓ CP/M 2.2 player for generic MS-DOSGitHubはこちら ↓ github.com

RunCPM

#RunCPM v6.7 for #DOS with #DPMI -Extender is ready ;) Get it at https://github.com/guidol70/RunCPM_Windows/raw/refs/heads/main/v6_7/GL20241207_RunCPM_DOS_v6_7_Starterpack.zip pic.twitter.com/KPJcY4xDo0 — Guido Lehwalder (@guidol70) 2024年12月7日

 Windowsで動作するCP/Mエミュレート環境です。対応するCP/Mのバージョンは2.2となります。

↓ RunCPM の GitHubはこちら ↓ github.com

 ぜひお試しください。