211216 PS/55エミュ製作 [10]テキストモードの完全実装まであと1歩
VRAMに書かれた文字コードの大小から全角・半角を判別するというその場しのぎで、とりあえず画面モード03hを使用するDOSシェルが起動するようになりました。一部文字化けが発生しています。また、画面サイズが微妙に変なため下にミラーができています。CRTCのパラメーターに修正を加える必要あり。
ファイラーのFDがこの画面モードを使用しているようで、一部の文字が点滅したことからバグが判明し、属性解釈をバグ取りすることができました。
属性解釈を実DOSと内蔵DOSの両方でテストするため、DOS上でバイナリファイルをVRAMへ転送するプログラムをわざわざ自作したよ。この調子で簡単なDOSアプリケーションなら作れるような気がしてきた。
それよりも、カーソルの属性変更がディスプレイ・アダプター固有のレジスタを使っていて、しかも色解釈がIBM PC系列と異なるものだから、整合性を合わせるのに無茶苦茶苦労。混乱しすぎて今でも正直合っているのか怪しい。VZ Editorに付属するcursor.asmが参考になったんだけど、これDOSプロンプトで実行してもカーソルの色が正しく変更できないのは、エミュレーションとして正しいのか違うのか分からない。
日本語DOS上での文字モードのエミュレーション精度は上々です。いくつかの適用業務プログラム(古風な言い回し😆)を試してみましたが、軽く触った感じは問題なさそうです。
グラフィックモードは実装していませんので、一太郎や1-2-3は動作しないと思います。
PS/55用のアプリケーションは日本語DOS固有のファンクションを使用しているものが多く、素のDOSBoxで動作したのはVZ Editorだけでした。ただ、これも起動時の画面モード変更にMODEコマンドを使用しているので、バッチファイルからちゃんと動作させるにはMODEコマンドの実装が必要。
あとは画面モード03hの完全実装だけだが、考えるのすごくだるい。でも、さっさと終わらせたい。