Image: 250323 AXエミュ製作 [15]86BoxにJEGAエミュレーションを追加

86BoxにJEGAエミュレーションを追加することに成功しました。

JEGAはChips and TechnologiesのSuperEGAに日本語表示機能を持たせたもので、実体は日本語の文字ジェネレーターを追加しただけのSuperEGAのスーパーセットなので、開発に掛かった時間はPS/55エミュレーションの10分の1以下だったと思います。JEGA関連の開発に使っていたサンプルプログラムは、DOSVAXの開発が完了した数年前の時点でほとんど捨ててしまったので、テストプログラムを一から作るところから始めないといけないのが少し大変だった。

テキストモードの描画はDOSVAXのコードを流用しつつも全面的に書き直したので、完成させるまで大変だった。

しかし、カラーパレットがおかしい。

Image: JEGA emulation in 86Box

英語モードでも同じカラーパレットになるので、これはJEGAではなくSuperEGAの実装が悪いか、その他の問題だろう。

Image: JEGA emulation in 86Box

BIOSのアセンブリコードとデバッグログを見ながらエミュレーターのトライアンドエラーを何度も繰り返して修正。

Image: JEGA emulation in 86Box

使用していたVGA BIOSのROMがモノクロLCDラップトップ機用のものだったため、モノクロ用のカラーパレットになっていたことが判明。VGA BIOSはCMOSデータから内蔵LCDか外部CRTの出力設定を読み取る仕様になっていたので、これを外部CRT出力になるように修正。こちらが正しいカラーパレット。

Image: JEGA emulation in 86Box

JEGAのテキストモードには罫線表示を指定できるJEGA特有の属性モードがある。この属性解釈を入れるとこんな感じ。

Image: JEGA emulation in 86Box

エミュレーションにマシン1台を追加するのは、PC/AT互換機ならコードのコピペですぐにできそうで、実はそう簡単ではない。構造が単純だったのは808x時代の最初期のマシンまでで、286以降の世代はメモリー管理用のチップセットがあったり、ラップトップ機なら電源管理用のデバイスが追加されていたりする。それこそChips and Technologiesなどの有名な汎用チップセットはデータシートで仕様が分かるけど、PS/55のようなブラックボックスなマシンだと、技術解説書が入手困難だったり、そもそも仕様が公開されていないこともあるだろう。仕様がブラックボックスだと、エミュレーションの実装はとても難しくなる。


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!