[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のグラフ
ィックドライバーを改造することもできますが、ちょっと面倒になりそうですの
で・・・。