アカウント名:
パスワード:
32bitのコマンドプロンプトにANSI.SYSなんて組み込めたっけ?32bitWindowsのコマンドプロンプトでDOSアプリを実行すると、COMMAND.EXEが走ってAUTOEXEC内に記述したANSI.SYSが入るけど、その環境では32bitコンソールアプリは動作しない。64bitWindowsだと、そもそもDOS窓が無いからANSI.SYSは入れ様が無いって状況だったかと。
既にレスが付いてますが、NT系で起動するのはCmd.exeをシェルとする「コマンドプロンプト」であって、厳密には「DOS窓」ではありません。(混同されてる事が多いですが)Cmd.exeは、機能が強烈に強化されているけれど、直接DOSアプリを起動する能力は有りません。代わりに、32bitOS限定でシームレスに仮想86モードで動作するNTVDM環境に移行し、COMMAND.COM経由でDOSアプリを実行する能力が有ります。この際にCOMMAND.COMが自動的にWindowsディレクトリにあるAUTOEXEC.BATを実行するので、そこでDOS用ドライバを組み込むことが出来ます。これが、正確な「DOS窓」です。より厳密には、Win9x系環境で起動する仮想DOS環境をDOS窓と呼ぶべきかも知れませんが。//9x系仮想DOSはVxDでフック出来たけど、NT系ドライバで出来るのかな?
64bit環境には、仮想86モードが無いのでネイティブでDOSアプリを実行する機能が有りません。(仮想マシンやエミュレータが必須)Cmd.exeをシェルにする「コマンドプロンプト」は32bitアプリ(多分)なので、64bit環境でも使えます。
余談ですが、EXEファイルは、DOS用実行モジュールとWindows用実行モジュールを混在出来ます。Windows環境ではDOS用モジュール(通常はWindowsで無いと動作しない旨のエラーを出すだけ)は無視されます。ま、DOS/Windows両用EXEなんて普通は見かけませんが。
//追加:割り込みはカーネルモードドライバでフック出来るから、判定基準にならない
DOSプロンプト https://ja.wikipedia.org/wiki/DOS%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%... [wikipedia.org] > DOSプロンプト(どすぷろんぷと、正確にはDOSコマンドプロンプト)とは、MS-DOSやPC DOSなどのオペレーティングシステムにおけるコマンドプロンプトであり、更にはその画面である。
>正確にはMS-DOSなどのオペレーティングシステムで、標準のコマンドインタプリタである「COMMAND.COM」を起動した状態であり、その際に表示されるコマンドプロンプト(例:「C:¥>」)である。
COMMAND.COM https://ja.wikipedia.org/wiki/COMMAND.COM [wikipedia.org] >Windows 9x系
int 21h使えるか試してみろよ
何言ってんだこいつ
DOS窓とコンソール画面は別物だよ。見た目はそっくりだけど。
DOSアプリが動作するのがDOS窓でWindows(32/64)アプリが動くのがコンソール画面。
32ビットWindowsでコンソール画面からDOSプラグラムを実行しようとすると最初にDOS窓を(内部的に開いて)実行するんだよ。Windows用のコンソールアプリではなくてDOS用のコンソールアプリを実行してみればすぐわかる話だと思うのだけど……
てゆーか技術系サイトのスラドでその両者の区別がつかない人がいるとは。
若者なのでDOSアプリ使った事無いです
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア
ANSI.SYS (スコア:2)
32bitのコマンドプロンプトにANSI.SYSなんて組み込めたっけ?
32bitWindowsのコマンドプロンプトでDOSアプリを実行すると、COMMAND.EXEが走ってAUTOEXEC内に記述したANSI.SYSが入るけど、その環境では32bitコンソールアプリは動作しない。
64bitWindowsだと、そもそもDOS窓が無いからANSI.SYSは入れ様が無いって状況だったかと。
-- Buy It When You Found It --
Re:ANSI.SYS (スコア:1)
もう少し詳しく解説願えますか。
----------------------------------
私自身は wow64;;https://ja.wikipedia.org/wiki/WOW64 で dos 窓も動くと解釈しています、。 実際私は 64bit Win7 使いですが、cmd.exe を日常的に使っています。32bit mingw で下のような動作をしています。
//@@
#include
int inStt;
static int* pInStt=&inStt;
int main(){
printf("%x", (long int)(pInStt+0x1ffffffff0));
return 0;
}
//@@@
//copy __tmp tmp.cpp /y
//gcc tmp.cpp C:\MinGW\lib\gcc\mingw32\4.8.1\libstdc++.a
a
40cfe0
「Win10 以降 DOS 窓が使えない」の意味だとしたら私にとって大問題です。Win10 upgrade なんて不可能になってしまいます。
もし私の解釈誤りがあれば、「64bitWindowsだと、そもそもDOS窓が無い」の意味を詳しく解説してやってくれますでしょうか
Re:ANSI.SYS (スコア:2)
既にレスが付いてますが、NT系で起動するのはCmd.exeをシェルとする「コマンドプロンプト」であって、厳密には「DOS窓」ではありません。(混同されてる事が多いですが)
Cmd.exeは、機能が強烈に強化されているけれど、直接DOSアプリを起動する能力は有りません。
代わりに、32bitOS限定でシームレスに仮想86モードで動作するNTVDM環境に移行し、COMMAND.COM経由でDOSアプリを実行する能力が有ります。
この際にCOMMAND.COMが自動的にWindowsディレクトリにあるAUTOEXEC.BATを実行するので、そこでDOS用ドライバを組み込むことが出来ます。これが、正確な「DOS窓」です。
より厳密には、Win9x系環境で起動する仮想DOS環境をDOS窓と呼ぶべきかも知れませんが。
//9x系仮想DOSはVxDでフック出来たけど、NT系ドライバで出来るのかな?
64bit環境には、仮想86モードが無いのでネイティブでDOSアプリを実行する機能が有りません。(仮想マシンやエミュレータが必須)
Cmd.exeをシェルにする「コマンドプロンプト」は32bitアプリ(多分)なので、64bit環境でも使えます。
余談ですが、EXEファイルは、DOS用実行モジュールとWindows用実行モジュールを混在出来ます。Windows環境ではDOS用モジュール(通常はWindowsで無いと動作しない旨のエラーを出すだけ)は無視されます。
ま、DOS/Windows両用EXEなんて普通は見かけませんが。
//追加:割り込みはカーネルモードドライバでフック出来るから、判定基準にならない
-- Buy It When You Found It --
Re:ANSI.SYS (スコア:1)
完全に混同してました。皆様、丁寧な解説ありがとうございました。
Re: (スコア:0)
DOSプロンプト
https://ja.wikipedia.org/wiki/DOS%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%... [wikipedia.org]
> DOSプロンプト(どすぷろんぷと、正確にはDOSコマンドプロンプト)とは、MS-DOSやPC DOSなどのオペレーティングシステムにおけるコマンドプロンプトであり、更にはその画面である。
>正確にはMS-DOSなどのオペレーティングシステムで、標準のコマンドインタプリタである「COMMAND.COM」を起動した状態であり、その際に表示されるコマンドプロンプト(例:「C:¥>」)である。
COMMAND.COM
https://ja.wikipedia.org/wiki/COMMAND.COM [wikipedia.org]
>Windows 9x系
Re: (スコア:0)
int 21h使えるか試してみろよ
Re: (スコア:0)
何言ってんだこいつ
Re: (スコア:0)
DOS窓とコンソール画面は別物だよ。見た目はそっくりだけど。
DOSアプリが動作するのがDOS窓でWindows(32/64)アプリが動くのがコンソール画面。
32ビットWindowsでコンソール画面からDOSプラグラムを実行しようとすると
最初にDOS窓を(内部的に開いて)実行するんだよ。
Windows用のコンソールアプリではなくてDOS用のコンソールアプリを実行してみれば
すぐわかる話だと思うのだけど……
てゆーか技術系サイトのスラドでその両者の区別がつかない人がいるとは。
Re: (スコア:0)
若者なのでDOSアプリ使った事無いです