> DOS/Vなので、テキストはグラフィック画面に描画されていて、
> VZのDOS画面の退避・復帰もグラフィックVRAMが対象になってるみたいですね。
なるほど、VRAMを見れば何かわかりそうですね。
MS-DOS Player のVRAMは v.com で見ると
VRAM Address = F800:0000 (Real VRAM)
と出るので、DUMPマクロで見てみたら、編集画面では表示されている文字が見えました。
ところがコマンドラインで見るとVRAMが全部スペースで埋まり初期化かCLS状態になっているようです。
他のDOSエミュではコマンドラインでもVRAMの文字が表示されていました。
どうやらこの違いが原因のようです。
> MS-DOS Playerは、仮想テキストVRAMに書き込まれた内容を、INT 10h, AH=FFhで
> グラフィック画面ではなくコンソールにテキストとして書き込んでいるので、
> そもそも食い合わせが悪いです。
そうなのですか、そのあたりはわからないので自分なりに考えてみました。
DOSは本来コンソールでコマンドを解釈、実行してその結果はコンソールに吐き出されるのですよね。
その文字はVRAMに書き込まれてパソコンの画面に表示されますよね。
つまりコマンドラインにいても画面に文字が表示されている時はVRAMに文字があるはずだと思います。
実際他のDOSエミュではコマンドラインでもVRAMの文字が表示されていました。
ところがMS-DOS Playerではそれがスペースで埋められているのです。
なので、もしかしたら MS-DOS Player ではコマンドが実行された時にVRAMの文字消去しているのではないかと思ったのです。
DOSVではVRAMの文字消去しても、フラッシュだかしないと画面に反映しないそうなので。
MS-DOS Player のソースをちょっと覗いてみたら、VRAMの初期化らしいところはありました。
void clear_scr_buffer(WORD attr)
これはあちこちで呼ばれているようですが、どこがコマンドラインかとか全くわかりませんでした。
全然わかってないので間違っていたらごめんなさいです。
> すみません、本件はギブアップです(苦笑)
VZはコンソール画面が使えるので問題ないです。対応していただいて感謝してます。
常駐VZでコマンドラインに降りた時にプロンプトが見えないのはちょっとだけ不便に感じます。(^^;
今思いついたのですが、VRAMの画面最下行だけ消去しないようにしたらもしかしてプロンプト表示しませんかね。
自分でコンパイル出来れば試したいところですが今の自分は色々頭が回らないもので。
色々対応していただきありがとうございました。