250309 PS/55エミュ製作 [50]DOSVAXもWin3.1(16色のみ)に対応
![Image: 250309 PS/55エミュ製作 [50]DOSVAXもWin3.1(16色のみ)に対応](/blog/img/2025/dosvax-250309_2.webp)
86Boxの開発をDOSVAXにフィードバックして、DOSVAXでもWindows 3.1のPS/55高解像度16色ドライバーに対応しました。
上は最新のバージョン。下は前のバージョン。
BitBltに線描画とラスターオペレーションを追加し、ビデオメモリー書き込みにハイライト書き込みのモードを追加しています。一つだけ、ソリティアでステータスバーのテキスト表示が崩れるバグがありますが、これで99%完成したと言えそうです。エンハンスドモードと256色では動作しません。OS/2を使いたいなら速度を犠牲にして86Boxを、Windows 3.xを使いたいならDOS/VエミュレーションがあるDOSBox-xを使った方がいいでしょう。PS/55グラフィックモードを使用するDOSソフトウェアの中で私が持っているものがMultitool Chart(グラフソフト)くらいしかなく、Windowsならエミュレーションの完成度を確認できるわけです。
テキストモード用のソフトウェアはいくつかでテストしていて、現状は何も問題なさそうです。ROMフォントがなくてもJ-DOS版のDOS文書プログラムで編集に必要な最低限のシンボルや文字を生成できるようにしました。ルビ振りに使われる1/4角文字は全部表示できます。罫線は生成を未実装のため正しく表示できないのが困るところですが、これで文書の内容はだいたい読めるかと思います。
あと、グラフィック機能を使用するBASICプログラムの実行前にDCBPATCHを実行する必要はなくなりました。
エミュレーターの開発中、マニュアルにあるサンプルプログラムを実行すると塗りつぶしがリークする不具合の原因が、そもそもサンプルプログラムに欠陥があることに気付くまで時間が掛かった。
10 SCREEN 1,1
20 CIRCLE(150,150),100
30 PAINT(150,150),1,3
このプログラムはIBM PCのBASICでは正しく動作してしまうが、ほかの機種では動作しない可能性がある。正しく動作するかどうかはCIRCLE命令で描かれる円のカラーパレット番号次第になる。
正しくはこちら。CIRCLE命令のパレット番号とPAINT命令のふち色指定を合致させる必要がある。
10 SCREEN 1,1
20 CIRCLE(150,150),100,3
30 PAINT(150,150),1,3
DOSVAX 変更点 (4483PS14→ 4483PS15)
- PS/55エミュレーションの変更
- Windows 3.1 との互換性を向上させるために、いくつかの BitBlt 関数を追加および修正しました。
- I/O 3E3h の無効なインデックスにアクセスするときの戻り値を変更します。これにより、5550 BASIC プログラムとの互換性の問題が修正され、DCBPATCH は不要になります。
- DOS 文書プログラムで使用される自己生成フォントのグリフをいくつか変更しました。
- 組み込み DOS から INT18h 関数を削除しました。これは、特定のアプリケーションでのみ使用されるユーザー定義関数でした。
ダウンロード
→ GitHub - akmed772/dosvax: A folk of DOSBox that emulates the Japanese AX and PS/55 computers.