[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 2859] from OSASK BOARD
このメールは、OSASK伝言板に書き込まれた内容です。
この書き込みに返事を書く場合は、下のURLから書き込みを行なって下さい。
http://www.imasy.or.jp/~mone/osask/index.cgi?REFER=3c327a3f_f5eb
From: 川合秀実
Message-ID: 3c327a3f_f5eb
Date: 2002/01/02 12:10
Subject: Re: bochsでのエミュレーション障害
[OSASK 2857]へのレスです。
>[OSASK 2855]の修正をして、自分も試してみました。
>いつもの画面が出ていたのですが、表示が少しずれて表示されたと思ったら、エラーで停止してしまいました。
ご報告ありがとうございます。
みなさんが熱心にご報告してくださるので、僕も自らやってみる気になりまし
た。僕がダウンロードしたのは、「bochs 1.3 win32」のバイナリー版です。
それで僕もらっきょさんに続けとばかりに試したのですが、画面が変わらず、
エラーも出ないという状況になってしまいました。どうも画面モード切り換えが
失敗しているようなのでbase.exeの部分をデバッグ用のものと交換して様子を見
ようと思ったら、おお、うまく起動するではありませんか(DOS経由で起動して
います)。
そして表示がちょっとおかしいという現象も確認できました。しかしそれ以外
はかなりいい感じです。このbochs用に改造したバイナリーは、bochs20aという
名前でベータリリースしておきます。
どうもbochsは画面関係の「オフセットレジスタ」への書き込みを思いっきり
無視してくれているようです(笑)。オフセットレジスタは、CRTCレジスタの0x
13にあります。もうちょっと詳しく書いておくと、
DX = 0x03d4;
AX = 0x3213; /* AL:reg.-index, AH:data */
OUT(DX, AX); /* offset-reg. = 0x32 = 50 */
このOUT命令を無視しているようです。これをちゃんと実行してくれた場合、VRA
Mの構成が変わって800ドットで1ラインになります(実際に画面に表示されるの
は640x480のままですが)。この800という数字は、設定値50を16倍して求めます
。・・・bochsはこれを無視して640のままで扱うため、ラインがずれて表示され
ているわけです。
どなたか、bochsの方を直していただけないでしょうか?・・・OSASKのグラフ
ィックドライバーを改造することもできますが、ちょっと面倒になりそうですの
で・・・。