2013.6.25
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第425回]


●XPではエスケープシーケンスが使えません

前回、WindowsXPでもエスケープシーケンスは使えるはずです、と書きました。
そうしましたら長野県のN様からメールが届きました。
WindowsXPで試してみたのですが、エスケープシーケンスが全く使えません。
Config.ntの設定の仕方が間違っているのでしょうか?
とのお尋ねです。
Config.ntのコピーも添付されていましたが、設定に間違いはありません。

うむむむ?
そういうことになりますと、これは自分で試してみなくてはいけません。
仕方がありませんから、眠りこけておりましたWindowsXPを久方ぶりに起動いたしました。
それで。
試してみたのですが、なるほど、エスケープシーケンスは全く使えません。


ちゃんとConfig.ntの設定はしましたよ。
これ、この通り。


おかしいじゃありませんか。
ちゃんとネットではいくつものサイトで、WindowsXPはConfig.ntにANSI.SYSを組み込むように記述すればエスケープシーケンスが使えるって書いてあるといいますのに。

おお。
これはなんと、本家Microsoft様ではありませぬか。

上の画像のサイトへのリンクはこちらです。

しっかし。
いくら自動翻訳とはいえこれは余りにひどい。
この日本語では全く意味不明です。
英文のほうを読みますと。

むむむむむ?
CMD.EXE?
COMMAND.COM?

おお。
そうか!

これを読みますと、どうやらWindowsXPで通常起動するコマンドプロンプト(CMD.EXE)はANSI.SYSをサポートしていない、のだそうです。
なんてこった。

それで、Config.ntにANSI.SYSを記述するとエスケープシーケンスが使えるようになるのは、COMMAND.COMのほうなんですと。
COMMAND.COMはC:¥WINDOWS¥SYSTEM32にあります(CMD.EXEもそこにあります)。

そうかそうか。
ということで、COMMAND.COMを起動させましたよ。

おお。
エスケープシーケンスが使えました!

それならば。
ということで。
さっそく試してみることにいたしました。


ところが、プログラムを実行してみますと…。


やっぱりエスケープシーケンスは使えません。

おかしなことに、ZB3DOS.EXEでは使えないのに、それを終了すると、ちゃんとエスケープシーケンスは利いています。
これって、どういうこと?

どうもですね。
エスケープシーケンスが使えるのは16ビットアプリケーションだけのようなのですね。
ZB3DOS.EXEは32ビットアプリケーションです。

むむむ。
それで、ほかのサイトにDOSONLYという記述があったのか。
ま。
この際ですから。
DOSONLYも試してみました。

CONFIG.NTにDOSONLYの一文を加えました。

そうしましたら。

むむ。
ZB3DOS.EXEが実行できなくなってしまいました。

そういうことなのでした。
つまり。
WindowsXPの場合、通常コマンドプロンプトとして使うCMD.EXEではエスケープシーケンスはサポートされていません。
COMMAND.COMは、CONFIG.NTにANSI.SYSを記述することでエスケープシーケンスを使うことができるようになりますが、しかしそれは16ビットアプリケーション(XXX.COM)に限ってのことで、32ビットアプリケーション(XXX.EXE)では、やっぱりエスケープシーケンスは使えません。

うむむ。
Windows98SEはCOMMAND.COMですけれど、ちゃんと32ビットアプリケーションでもエスケープシーケンスが使えるようになったんですけどねえ。
Microsoft様のおやりになることは、とんと合点がまいりませぬ。

ワンボードマイコンでCP/Mを![第425回]
2013.6.25upload

前へ
次へ
ホームページトップへ戻る