システム領域の16MBフラグとかプリンタI/Fの種類のフラグを
補正してやったり、システムポートやプリンタポートの
8255のモードレジスタをちゃんと実装したり、ちょこちょこと
修正は入れているのですが。
一体何が効果があったのか判りませんが、Windows 98 SEの
インストーラが普通に起動してしまいました。
折角なので、QEMU/9821上でクリーンな環境を構築してみます。
しかし、Windowsがちゃんと動くようになると、CIRRUS VGAを
ちゃんと動作するようにしたくなりますね。
現状のQEMUのCIRRUSの実装は、メモリの配置などPC/ATでの
仕様にべったりなので、色々パッチしないと駄目そうです。
(2010/1/17 23:30追記)
インストール終わりました。
プラグ&プレイデバイスの認識のところでフリーズしたかと
思うくらい時間が掛かりましたが、ブートして全部のデバイスが
認識してしまえば結構な速度で動いてます。
IE6とDirectX9C(Feldlotosさんとこのパッチをあてて)を
インストールして、Windows Updateを一通りあてて、取り敢えず
問題なく動いているみたいです。
(2010/1/18 1:15追記)
パフォーマンスがどれくらい出てるか、ちょっと興味がてら
Adobe Flash Playerを入れてニコニコ動画を再生してみました。
キャーシバタサーン!このシリーズ大好きです。
エコノミーだったら、動画部分はちゃんと滑らかに動いてます。
640x480の256色でも結構みられるものです。
VRAMにべたに転送するだけだから、表示速度はCPU次第とは言え
ちょっと驚きです。
流石にサウンドはちょっと飛び飛びになりますが…




if (load_image(filename, buf + BIOS_OFS) == BIOS_FILE_SIZE) {
loaded |= (7 << PCI_ROM_BANK);
}
BIOS_ROM_BANKじゃ…?
ありがとうございます、次で直しておきます。
Win2k、インストーラは問題なく起動するんですが。
何かフリーズしたかってくらい遅いんですよ。
次の週末あたり、時間のあるときに試してみます。
http://zzt-kuruma.hp.infoseek.co.jp/kai/pc9821.htm
色々面白そうなサンプル一杯ですね、ここ。
画面に何も映ってないけどw
roy@roy-ubuntu:~/qemu-pc9821/i386-softmmu$ ./qemu -M pc98 -L ../../qemu-pc98-20091029-p5/i386-softmmu/NP2VX -fda ../../qemu-pc98-20091029-p5/i386-softmmu/dos62.hdm -monitor stdio
Could not open '/dev/kqemu' - QEMU acceleration layer not activated: No such file or directory
QEMU 0.10.6 monitor - type 'help' for more information
(qemu) info cpus
* CPU #0: pc=0x000d9e68
(qemu) info cpus
* CPU #0: pc=0x000d9e61
(qemu) info cpus
* CPU #0: pc=0x000d9e68
(qemu) info cpus
* CPU #0: pc=0x000d9e8e
(qemu) info cpus
* CPU #0: pc=0x000d9e61
(qemu) info cpus
* CPU #0: pc=0x000d9e8e
(qemu) info cpus
* CPU #0: pc=0x000d9e61
(qemu) info cpus
* CPU #0: pc=0x000d9e68
(qemu) info cpus
* CPU #0: pc=0x000d9e61
(qemu) info cpus
* CPU #0: pc=0x000d9e68
(qemu) info cpus
* CPU #0: pc=0x000d9e8e
(qemu) info cpus
* CPU #0: pc=0x000d9aae
(qemu) info cpus
* CPU #0: pc=0x00000489
(qemu) info cpus
* CPU #0: pc=0x000040dd
(qemu) x/25i $pc-64
0x0000409d: add %al,(%bx)
0x0000409f: or $0xe8,%al
0x000040a1: add %al,4(%bp)
0x000040a5: add %al,4(%bp)
0x000040a9: add %al,-28643(%bp)
0x000040ad: add 4(%bp),%al
0x000040b1: add (%bx,%di),%cl
0x000040b3: or $0x0,%al
0x000040b5: add %al,4(%bp)
0x000040b9: add %al,4(%bp)
0x000040bd: add %al,29700(%bp)
0x000040c1: add %bh,%cl
0x000040c3: add $0x0,%al
0x000040c5: add %ah,15941(%bx,%si)
0x000040c9: xchg %al,%ds:(%si)
0x000040cc: add %al,(%bx,%si)
0x000040ce: pop %es
0x000040cf: or $0x0,%al
0x000040d1: add %al,(%bp,%di)
0x000040d3: xor %al,(%bx,%si)
0x000040d5: add %al,4(%bp,%si)
0x000040d9: add %al,32432(%bp)
0x000040dd: jl 0x40dd
0x000040df: add $0x0,%al
0x000040e1: add %al,-32252(%bp,%si)
(qemu)