[HOME]  [全部表示 会議室風]  [全部表示 保存用]  [HOME]  [リストへもどる] [リストへもどる]
一括表示

  MS-DOS Player 2023/12/14 更新 - konno 23/12/14-18:36 No.10990

(10990) 10990MS-DOS Player 2023/12/14 更新  投稿者:konno   23/12/14-18:36


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

      - No.10990 -    このTreeへ           [リストへもどる] pre