MS-DOS Player 2023/12/14 が更新されました。
更新内容を引用します。
-----------------------------------------------------------
INT 10h AH=08hについて、漢字の文字コードを取得できるよう修正しました。
ReadConsoleOutputCharacterAで漢字を1文字だけ取得すると、20hが返るようです。
行全体を取得することで、漢字の第1・2バイトのどちらも読めるようになっているかと思います。
-----------------------------------------------------------
マイナーなファンクションですが、たまたま気が付いてご報告したら対応していただけました。
うれしいです!! \(^^)/ ヤッタ-
きっかけは
古いBASICコンパイラで、SCREEN (C,B) という関数で画面上の文字を読み取れるのですが
DOSVAXJ3 では正常に読み取れましたが、MS-DOS Player では、
1バイト文字は読み取れますが、2バイト文字は、空白文字(文字コード 20h)になって
読み取れません。
そこで、VZマクロで INT10 のBIOSコールの返り値を見てみました。
INT 10/AH=08h VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
=int10-08.def
*m
80 ^\ "int10-08" ax=$0800, &i($10) &m("int10-08: AX=%04x CF=%d",ax,r).
*
このマクロで、カーソル位置の「★(819Ah)」を見た時の AXの返り値は
VTDOS 1D81
DOSVAXJ3 1F81
MS-DOS Player 1F20
他の2つのエミュでは 漢字の1バイト目のALは 81h ですが、
MS-DOS Player の ALは、20h 空白文字になっています。
念のため 英語モードの VZUS でも見てみました。
MS-DOS Player 1F81 1バイト目
MS-DOS Player 1F9A 2バイト目
どうやら MS-DOS Player での日本語環境で漢字は、INT 10/AH=08h の
返り値が空白になっているように見えます。
興味のある方は、更新前の MS-DOS Player で上のマクロを試してみてください。
これで私が何を弄っていたのかバレてしまったかも。(^^;
作者の武田様に感謝です。m(__)m