231128 PS/55エミュ製作 [20]JDOS上でBASICのグラフィックモードに対応
上は図形を描くサンプルプログラム。平面の線画を1本の軸を中心に3Dで回転した様子を描いている。
JDOS用BASICインタープリターのグラフィックモードが正常に動作するようになりました。IBM 5550用KDOSのBASICで動くサンプルプログラムもJDOSのBASICで大部分が動くようになった。
原因はエミュレーター側にグラフィック支援機能(元々は5550にオプションの「グラフィックス支援カード・キット」として実装されていたもの)が実装されていないにもかかわらず、DOSのワークエリアにあるディスプレイ構成ブロックで「グラフィック支援機能あり」のフラグが立っていたため。この機能の詳細は別売の「グラフィックス支援カード駆動プログラム プログラミング・ガイド(N:SC18-2118)」という本に載っているらしいので、それがあればもしかしたらエミュレーションを実装できるかもしれないが、まあ入手性から言って無理ね。
PS/55(MCA機)用KDOSやJDOSの場合、ディスプレイ構成ブロックはおそらくDOSのシステムファイルに初期値が入っているため、事前にシステムファイルそのものにパッチするか、DOS起動後にソフトウェアからメモリをパッチする必要がある。前者の場合はDOSのバージョンによってアドレスが変わる可能性が高く実用性が低い。今回は後者の方法でパッチするDOSアプリケーションを作成した。
常駐(TSR)の必要性も見据えてアセンブラで作り始めたものの、アセンブラで書いたプログラムなんて指折り数えるほどしか作ったことがないので、苦労しかなかった。しかし、完成してみれば、たった1バイトにパッチを当てるだけのシンプルなプログラムに、なぜそんな苦労したのか。DOS K3.xでは相変わらずカラーグラフィックモードに切り替わらないが、まあでも、とりあえずJDOSではBASICもグラフィックモードで動くようになったので大進歩。3年前のバラックからよくここまで作ったもんだ。でも、うんざりでこれ以上はもう手を加えたくないかも。
DOSVAX 変更点 (4481PS09→ 4481PS10)
- IBM BASIC インタプリタまたは IBM BASIC コンパイラで構築されたグラフィックス アプリケーションを実行するための DOS J4.0/J5.0 用のパッチ プログラム (dcbpatch) を追加します。 DOS I/O ワークスペースの表示設定ブロックのフラグを変更して、DOSVAX でサポートされていない IBM 5550 のグラフィック サポート機能を無効にします。
- キーストロークの妨げにならないように、入力方式 (IME) を無効にします。 (sdlmain.c)
ダウンロード
→ GitHub - akmed772/dosvax: A folk of DOSBox that emulates the Japanese AX and PS/55 computers.