250404 PS/55エミュ製作 [51]DOS/V Extensionへの対応に向けて開発中
![Image: 250404 PS/55エミュ製作 [51]DOS/V Extensionへの対応に向けて開発中](/blog/img/2025/ps55emu_250403_0.webp)
気がつけば4月…PS/55DAのエミュレーションをDOS/V Extensionに対応させるようと画策中ですが…新機能を1個追加すると10個潰さなければならない不具合が出てくるから大変です。
エミュレーション開発初期にDOS/V Extensionを試した時は何も表示できず絶望したな。あの時はDAがBitBltを持っていることすら知らなかった。今はBitBltデータのパース処理を組んでいるから、デバッグ用のダンプデータに未知のデータがあれば、それをパースの解釈に加えることで対応可能になった。
ビットマスク処理の正解を見つけるのがとてつもなく大変だった。次はビットマスク処理の正解を当てる前のスクリーンショット。
DOS/V Extensionに対応するために以下の機能を実装しなければならなかった。
- 文字フォント転送機能
- 表示開始アドレス
- ライン比較レジスター(ラインコンペアスクロール用)
とりあえず、文字は表示できるようになったものの、属性の解釈が合わない。
属性解釈はBitBltの1パラメーターをビット反転させるだけで良かった。
DSPXDA2で使用できる拡張テキストモードのリスト。
OS/2で新たな不具合がいくつか出たため、これに対応するのにも、もう大変時間が掛かった。Windowsでは修正すべき所はそんなに無かった。
改めてDOS/V Extensionを色々試してみると、縦書きのモードで半角文字が表示されていない。DOSで縦書きなんて使う人いるか?
漢字ROMから外字RAMへのデータ転送が上手くいっていないようなので、DA内部メモリーアクセスのレジスターのバグだろうなという予想を立てているところ。うーん、カメのような遅さではあるけど、なんとか開発は進んできたな。