みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

Windows標準のPCエミュレータ

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Windows標準のPCエミュレータ

投稿記事 by みけCAT » 10年前

実は、Windows Vista Home Premiumには、標準でPCエミュレータが付いているようです。
Virtual PC?いいえ、そのようなもののインストールは必要ありません。
※他のバージョンのWindowsでは知りません。

☆起動方法
1. コマンドプロンプトを立ち上げます。
2. 「debug」と入力し、Enterキーを押します。
3. PCエミュレータ「Debug」が立ち上がります。

☆利用方法
このエミュレータはCPUのエミュレーションはしてくれますが、ドライブのエミュレーションはしてくれなそうです。
(やり方は未発見です)
そこで、Windowsに仮想FDドライブをマウントしてやります。
自分はVirtual Floppy Driveを使いました。
これを利用し、適当なFDイメージをAドライブにマウントします。
慣れれば他のドライブにマウントしてもいいかもしれません。
次に、Debug上で、以下のコマンドでAドライブのMBRを定位置に読み込みます。

CODE:

L 0000:7C00 0 0 1
そして、以下のコマンドで実行を開始します。

CODE:

G 0000:7C00
※(自分の環境では)Debug上ではキーの入力が英語配列として扱われるようです。

☆実行例
自作の素数判定プログラムを走らせてみました。
debug_prime.png
Debugで素数判定プログラムを走らせる
debug_prime.png (21.05 KiB) 閲覧数: 470 回
BIOSのint $0x10やint $0x13、int $0x16を利用していますが、きちんとエミュレーションされているようです。
しかし、QEMUでは正しく表示されるタイトルのテキストが微妙に文字化けしてしまっています。
ディスク読み込みの不都合なのでしょうか?

ちなみに、int $0x18を実行するとこのようになりました。(404は自作プログラムの出力です)
debug_int_0x18.png
Debugでint $0x18を呼び出してみる
debug_int_0x18.png (28.1 KiB) 閲覧数: 446 回
☆結論
このように、Windowsにも標準でPCエミュレータが付いていたのです!
ただ、ディスクイメージを指定して実行の指示を出すだけで起動してくれる、
他のエミュレータに比べると使い勝手は悪いかもしれません。
まあ、Windows標準ソフトなのでしょうがないかもしれないですね。

☆おまけ
今回使用した素数判定のプログラムのディスクイメージを添付しました。
ディスクのルートディレクトリのBOOT.BINを読み込んで実行するブートローダーが入っているので、
実行するプログラムを比較的簡単に差し替えて遊べます。
添付ファイル

[拡張子 zip は無効化されているため、表示できません]


ISLe
記事: 2650
登録日時: 13年前

Re: Windows標準のPCエミュレータ

投稿記事 by ISLe » 10年前

確かにコマンドプロンプトはMS-DOSエミュレータと言えますね。
ただし32ビット版ウィンドウズに限る。