CMD98 - PC98&DOSエミュレータ (original) (raw)
CMD98とは
PC-9801のプログラムをWindows上で実行するエミュレータの一種です。
優秀なPC98エミュレータが既にいくつも公開されていますが、それらは仮想空間にMS-DOSをインストールし、箱庭のような環境で高い再現性を実現するものです。
CMD98は一般的なエミュレータと違い、PC98の実行ファイルを直接読み込んで、あたかもWindowsのプログラムとして実行されているように見せる、というコンセプトで開発されています。純粋なエミュレータというより、WINEのような互換レイヤーの性質もあるといえるかもしません。
再現する対象
CMD98の動作には、実機のBIOSやMS-DOSなどは必要ありません。98プログラムが呼び出すBIOSやMS-DOSの機能は、全てWindowsの機能に置き換えて実行されます。フォントも同様です。
現在の完成度
PI形式の画像ファイルを表示する、「PILS」というフリーソフトにのみ対応しています。PC98やMS-DOSの機能は非常に多く複雑で、全てを実装することはできません。そこで、動かしたい98プログラムを定めて、その動作に必要な機能を一つずつ搭載していく、という手法で開発しています。
実行環境
.NET 6.0が動作するWindows
実行してみる
- .NETランタイムが必要です。PCにない場合は予めインストールしておきます。
- 必要なファイルをダウンロードします。
- CMD98
- PILS
- PI画像ファイル(現在では入手しにくいですが、「16bitセンセーション ANOTHER LAYER」のWebサイトで宣伝CGとして配布されています)
- CMD98.EXE、PILS.COM、PI画像ファイル(例:C206.PI)を同じフォルダに入れます。
- コマンドプロンプトを開き、カレントフォルダを上記のフォルダに移動します。
- 「>CMD98 [98実行ファイル名] [オプション]」という形式で実行するので、「>CMD98 PILS.COM C206.PI」のように入力します。
- すると、PILS.COMがC206.PIを読み込んで、実行結果がウィンドウ上に出力されます。(CMD98では、コマンドライン上に出力される文字はコマンドプロンプトに、VRAMに書き込まれる文字や画像はウィンドウに出力されます)
- コマンドプロンプトで何かキーを押すとCMD98は動作を終了します。
類似のソフトウェア
「MS-DOS Player for Win32-x64」が近いもので、こちらはDOS/Vのプログラムを実行します。比べるのもおこがましいほど実用性も完成度も技術力も全く違いますが…
今後の開発
当面、PC98ならではのフリーソフトの動作を目標に開発を進めていきます。
昔に出版されたPC98やMS-DOSの解説書を頼りに情報を得ていますが、当然ながらエミュレータの作成を念頭に置いて書かれていないので、どうしても不明な部分があって苦労しています。偉大な先人達の成果物としてソースコードが公開されている(MS-DOS Player、Neko Project IIなど)ので参考にすべきですが、残念ながら、私は他人が書いたコードを全く読むことができません(恐らく脳の特性? 基本情報技術者試験のプログラミング問題でさえ理解不能)。
なので、本を調べたり他のエミュレータの動作を観察したりしながら、地道に解析していくつもりです。