標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第621回]
●WindowsXPでもコマンドプロンプトで異常発生
[第618回]では、Windows7(32ビット版)のコマンドプロンプトでZ80アセンブラZASM.COMを実行すると、それまで画面に表示されていた日本語の表示が全部???…に化けてしまうという、信じられない現象について書きました。
あまりに異常な症状なものですから、ひょっとするとこれは私が作ったプログラムにとんでもないバグがあるのでは、と少し気になってきました。
んでもWindows98のMSDOSプロンプトでは全く異常なく動作しているのですけれどねえ。
私のプログラムのどこかに怪しいところがあるのか、それともWindows7のコマンドプロンプトに問題があるのか、そのあたりを探ろうとして、前回([第620回])は、簡単な、”Hello World”ライクなプログラムを作って動作テストをしてみました。
その結果は、前回書きました通り、どうやらWindows7のコマンドプロンプトがおかしいようです。
どうもWindows7のコマンドプロンプトは、少なくとも日本語バージョンについては、16ビットアプリケーションの動作テストなど全くしなかったのでは、という気が致します。
ところで。
突然に、なんだかWindowsXPは大丈夫だろうか、とこれまたちょっと気になってまいりました。
じつは。
WindowsXPでは、過去に一度も、コマンドプロンプトで16ビットアプリケーションを使ってみた記憶がないのです。
何回も書いておりますように、Z80アセンブラをはじめとする、自作の16ビットアプリケーションを使ってのプログラム開発作業は、もっぱらWindows98のMSDOSプロンプト上でやってきましたから、あえてWindowsXPのコマンドプロンプトで作業することなどなかったのですよねえ。
そういえば、確かに、ZASM.COMも、SBASIC.COMもASM80.COMも、WindowsXPのコマンドプロンプトでは一度も試していなかったような…。
うう。
だいじょうぶか…。
だいじょうぶではありませんでした。
前回、Windows7(32ビット版)のコマンドプロンプトで動作テストをするのに使ったcomtest2.comを実行してみたところ、”TEST END”と表示するはずなのに、全く何も表示しないで終わってしまったのです。
しかも、終了後のカーソル位置もすっ飛んでいます。
当然、zasm.comを実行してみても、何も表示されません。
しかし、念の為に、dirコマンドで確認してみましたら、zasm.comが正しく実行された証拠に、zbasic2v.bin、zbasic2v.btk、zbasic2v.lst、の各ファイルが作成されています。
むむ。
実行はされるようなのですが、どうも画面表示に問題があるようです。
現れ方はちょっと違うとはいうものの、なんだかWindows7での場合とどこかでつながっているような気がします。
このいいかげんさはなんなのでしょうねえ。
●WindowsXPのMSDOSプロンプト
いろいろ試しているなかで偶然にみつけたのですが、WindowsXPにはいわゆるコマンドプロンプトのほかに、なんとMSDOSプロンプトがあったのです。
上の方に見えているcmd.exeがコマンドプロンプトです。
下の方にあるcommand.comをコピーしてデスクトップに貼り付けてみますと…。
むかしなつかしいMSDOSプロンプトのショートカットになりました。
プロパティを開いてみました。
間違い無くMS−DOSプロンプトです。
それならば、ということで、両方を開いて、動作を比較してみることにしました。
左がMSDOSプロンプトで右がコマンドプロンプトです。
むむ。
なんだか動作も異なっているような予感が…。
左のMSDOSプロンプトでcomtest2.comを実行してみましたら、ちゃんと”TEST END”と表示されました。
やっぱりこれが昔からの、「真性MSDOSプロンプト」のようです。
ところで、右のコマンドプロンプトでも、画面の下の方を見ていただきますと、今度はちゃんと”TEST END”と表示されています。
どうしてでしょう。
実はこれも、いろいろ試しているうちに偶然に発見したことなのですが。
debugコマンドを実行すると、それ以後は画面に正しく表示されるようになることがわかりました。
comtest2を実行する前に、その上のところで、debugと入力して、その下で q と入力しています。
qはdebugコマンドの終了コマンド(quit)です。
このようにdebugを起動して、すぐに終了してしまうだけで、それ以後は画面に16ビットアプリケーション(8086プログラム)の実行による表示が正しく行われます。
なにがどうなっているのかわかりませんが、コマンドプロンプトのどこかがおかしくて画面に表示が行われなくなっているのですが、それがdebugを実行すると、そこのおかしかったところがクリアされて、それ以後は正常に画面表示が行われるようになるのではないか、と考えられます。
実際のところ、その原因がどこにあるのかということがはっきりわからない、ということもなんとも気持ちの悪い話でありますけれど、16ビットアプリケーション(8086プログラム)を実行するときは、前もってdebugを実行しておかなければならない、というのもなんだかなあ、という気が致します。
そんなおかしなコマンドプロンプトを使うよりも、せっかく今回偶然みつけたMSDOSプロンプトがあるのですから、こちらを使うようにしたらどうでしょう。
ところが…。
こちらも、問題あり、でした。
MSDOSプロンプトを終了しようとしますと、こんなメッセージが出てしまいます。
何も実行してませんよぉ。
まあ、「すぐに終了」をクリックすれば済むことなのですけれどね。
さわればさわるほど、なんとまあ、いいかげんなOSですこと、と嫌味のひとつも言ってやりたくなります。
●Windows2000、お前もか!
うう。
するってえと、ひょっとしたら、Windows2000も…。
おお。
やっぱり、Windows2000も、ブルータスでありました。
こうなるところまで、そっくり同じでありました。
ところで。
そういえば。
Windows7では、debugコマンドを実行しなくても、ちゃんと画面表示はできたのでしたよね。
ほら、”TEST END”って([第620回])。
できてました。
その代りに。
Windows7では、日本語表示が飛んでしまいました(WindowsXPでは日本語表示に変化はありません)。
ああ。そうでした。
Windows7では、そもそもdebugコマンドを実行した途端、日本語モードが吹っ飛んでしまったのでありました([第616回])。
うむむ。
いやはや、なんとも…。
2010.9.26upload
前へ
次へ
ホームページトップへ戻る