> 私はCHEJは特に使用していませんが、vzはint10h ah=fehで取得した仮想テキストバッファのアドレスの、f8000hを読みに来ているようです。
> 書き込み時も、同じアドレスに書き込んで、int10h ah=ffhで画面に反映してるのではないかと。
私もそう思います。
ところがコマンドラインでは f8000h がスペースで埋まり、b8000h に文字が見えるのです。
DOS画面の保存、復帰のタイミングは VZしかわからないので、VZですり替え出来ないかやってみました。
scrnibm.asm 1483行あたり
getscrn proc
pushm <ds,es>
mov es,ax
mov ds,dsp.@seg
push ax ; ##k 241101 MS-DOS Player
mov ax,ds ; ds は
cmp ax,0f800h ; VRAM F800h か?
jnz mpmod ; 違うならJUMP
cmp cs:os_win,7 ; MS-DOS Playerか?
jnz mpmod ; 違うならJUMP
mov ax,0b800h ; CGA VRAM にすり替え 'ク^@ク' b8h (00h b8h)
push ax ; 'P' 50h
pop ds ; ds:si(ソース) --> es:di
mpmod: pop ax ;
IFNDEF IBM
cpyscrn:
ここにコメント行を追加して VRAMアドレスのすり替えをしたら保存・復帰が出来ました。\(^^)/ ヤッタ-
MS-DOS Player の判定に失敗することが有るので見直して公開したいと思います。
安全対策を2重にしているので問題ないでしょう。
将来 B8000hが変わるとヤバいので、その時は VZ.COMを開いて 'ク^@クP' を検索してアドレスを書き換えます。(^^;
^@ は実際はヌル文字です。(^^;;