パスワードを忘れた? アカウント作成
12682797 story
Windows

Windows 10 Threshold 2(10.0.1058)ではコマンドプロンプトでANSI/VT100互換表示が可能に 48

ストーリー by hylom
実機が手元にないから試せない…… 部門より
あるAnonymous Coward 曰く、

昨年11月にリリースされたWindows 10のメジャーアップデート「Threshold 2」(10.0.1058)ではコンソール機能が強化され、ANSIやVT100ターミナルがサポートされているそうだ(Nivot InkSlashdot)。

ANSIやVT100のエスケープ文字列が多数インプリメントされており、conhost.exeやcmd.exe、PowerShellから利用できるという。以前Windows VistaまでANSI互換カラーを実現するansi.sysというドライバがあったが、Windows 7以降では廃止されていた。Nivot Inkの記事では、実際にコマンドプロンプトでANSI互換のカラー表示を行っている例や設定方法などが紹介されている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by BIWYFI (11941) on 2016年02月10日 10時58分 (#2962121) 日記

    32bitのコマンドプロンプトにANSI.SYSなんて組み込めたっけ?
    32bitWindowsのコマンドプロンプトでDOSアプリを実行すると、COMMAND.EXEが走ってAUTOEXEC内に記述したANSI.SYSが入るけど、その環境では32bitコンソールアプリは動作しない。
    64bitWindowsだと、そもそもDOS窓が無いからANSI.SYSは入れ様が無いって状況だったかと。

    --
    -- Buy It When You Found It --
    • >64bitWindowsだと、そもそもDOS窓が無いからANSI.SYSは入れ様が無いって状況だったかと。

      もう少し詳しく解説願えますか。
      ----------------------------------
      私自身は 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窓が無い」の意味を詳しく解説してやってくれますでしょうか
      親コメント
      • by BIWYFI (11941) on 2016年02月10日 21時49分 (#2962572) 日記

        既にレスが付いてますが、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 --
        親コメント
      • by Anonymous Coward

        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系

      • by Anonymous Coward

        int 21h使えるか試してみろよ

      • by Anonymous Coward

        何言ってんだこいつ

      • by Anonymous Coward

        DOS窓とコンソール画面は別物だよ。見た目はそっくりだけど。

        DOSアプリが動作するのがDOS窓でWindows(32/64)アプリが動くのがコンソール画面。

        32ビットWindowsでコンソール画面からDOSプラグラムを実行しようとすると
        最初にDOS窓を(内部的に開いて)実行するんだよ。
        Windows用のコンソールアプリではなくてDOS用のコンソールアプリを実行してみれば
        すぐわかる話だと思うのだけど……

        てゆーか技術系サイトのスラドでその両者の区別がつかない人がいるとは。

        • by Anonymous Coward

          若者なのでDOSアプリ使った事無いです

  • by Egtra (38265) on 2016年02月10日 11時54分 (#2962141)

    Nivot Inkの記事では、Undocumentedである4を元の値にORして関数SetConsoleMode [microsoft.com]を呼び出すと、このANSI/VT100互換機能が有効になると書かれています。

    Windows SDK 10.0.10586.0を見てみると、#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004という定数が追加されていました (C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um\wincon.h)。たしかに、この定数はMSDNライブラリにはまだ記載されていませんね。

    • by Anonymous Coward

      ここにさげとく
      win32でよく「遊んでる」人には周知のことですが、コンソールはcmd.exeの専売じゃありません
      see: AllocConsole()

      • by minet (45149) on 2016年02月10日 22時20分 (#2962595) 日記

        デバッグモードとかで起動するとAllocConsoleで割り当てた「自分の」コンソールにログを吐く作りになっているアプリを見かけますね。

        親コメント
  • by manmos (29892) on 2016年02月10日 13時59分 (#2962237) 日記

    うわ、IBM5550時代にあったなぁ。(多分IBM-PC/XTでも同じ)
    INT29だったかのトラップを引っ掛ける奴。

    バグで、あるシーケンスで無限ループに陥ったバージョンがあって、symdebだったかのコマンドテキストでパッチを作って、人にあげたことがある。

    30年弱前。

    • by Anonymous Coward

      うわ、IBM5550時代にあったなぁ。(多分IBM-PC/XTでも同じ)

      ANSI.SYS - Wikipedia [wikipedia.org]

      出現箇所
      ANSI.SYSは下記を含むマイクロソフト製オペレーティングシステムの一部となっている:

      • MS-DOS
      • Windows 95
      • Windows 98
      • Windows NT
      • Windows 2000
      • Windows XP
      • Windows Server 2003 (x86 versions)
      • Windows Vista

      IBM PC DOSやDR-DOS

  • Windows 10 バージョン 1511は10.0.1058ではなく、10.0.10586です。
  • by Anonymous Coward on 2016年02月10日 8時10分 (#2962065)

    今時VT100(後継)の実機って動いてるの?

    • by Anonymous Coward

      doda さん [srad.jp]なら持ってそう。

    • by Anonymous Coward

      ええ、動いてて業務にたくさん使っています。それだけのためにかなりの費用がかかります。

    • by Anonymous Coward

      今時 IBM PC/ATの実機なんてほとんど動いていないと思うけれど、AT互換機ならまだまだ沢山動いています。
      VT100互換として動いているソフト+ハードはまだまだ沢山あるはずです。

      私もWindowsXpのハイパーターミナルをVT100エミュレーションに設定して海外製のセンサーのコントローラへ接続したことがありますし、去年隣の席で Windows7となんとかタームの類のソフトでLiイオン電池の充電器と対話していました。

      Raspberry Pi程度のものが載っている機器ならWebブラウザを使って接続設定するのが今時の定番ですが Arduinoクラスのマイコンだとそういうのは重過ぎるからVT

      • by Anonymous Coward

        部門名、元々コメ、元コメ、ボケ損なったネタもどきにマジレスで、
        何とも気持ち悪い、むず痒い。

      • by Anonymous Coward

        そのエミュレータは本当にVT100互換ですか? VT102だったりしませんか? さらに日本語対応の勝手拡張が入ってたりしませんか?

  • by Anonymous Coward on 2016年02月10日 10時12分 (#2962103)

    回線速度が遅かったころ、その遅さを逆手にとってエスケープシーケンスで
    キャラアニメをしていた(人が居た)
    NEC98の上とかでしたけど、色とカーソル位置が移動できたのでカーソル戻して書き換え書き換え・・・
    回線速度に依存した動作なので、ボーレート合わせないとまともに見られない。
    300ボーだったか1200だったか
    それくらいの時代の話

    • VT100でもそういうのは結構行われていましたね。
      例えばこれ [vt100.net]とか。

      今時のssh接続等の高速な環境だと一瞬で終わってしまって何が起きているか判りませんが。

      親コメント
    • by Anonymous Coward

      sl コマンドとかあったけど、通信速度の遅さとかは利用していなかった気がする。
      むしろ速くないとまともに動かないんじゃないかな。

      近い将来、DOSプロンプトでslが走るのかな。

      いや、sl じゃなくて、driとか打つとドリルで穴をあけるとか、typeと間違ってcatしてしまったら猫が出てくるとか楽しそう。

    • by Anonymous Coward

      普通にテキストファイルをtypeして、アニメーションしてたよね。

    • by Anonymous Coward

      H98シリーズの拡張アトリビュートを思い出しました。
      なかなか使われてませんでしたけど。

    • by Anonymous Coward

      エスケープシーケンスでキーボードの再定義ができたんです。
      それを利用したメッセージがBBSにかかれていて、
      頻繁に押すキーに卑猥な言葉を定義されちゃってチャットで恥をかいたとかいう話がありました。
      #と他人事のように書いてるけど引っかかったのは私です

  • by Anonymous Coward on 2016年02月10日 10時43分 (#2962112)

    コピペ周りの機能が超強化されてる。
    http://www.atmarkit.co.jp/ait/articles/1503/02/news139.html [atmarkit.co.jp]

    さらにVT端末対応とか、中の人のモチベーションの高さは一体何なのか!?

    これだけ進化してるなら、アップデートごり押しなのもうなずける話です。

    • by Anonymous Coward

      以前ここでWindowsのコマンドプロンプト使い物にならねぇと愚痴ったら使い方が悪いとか
      そうならないよう実行前に予測して設定変更しとけとか言われて
      Windowsユーザーはこんなだし95から7まで殆ど変わらず改善の見込み無いのかなと思ってたらWindows10でかなり改善されててびっくりした。
      それがあったのですぐ10にしました。(うちの環境だとなぜかストアとかコルタナ使えないとか色々バグってるけど許容範囲内)

      あとはUTF-8だ…

      • by Anonymous Coward

        どんなものだろうと使い始める前に設定を行わないのは使い方が悪いだろ

        • by Anonymous Coward

          あなたは使う前に設定画面に入るの?
          それで最適な設定解るの?すごいですね

    • by Anonymous Coward

      >これだけ進化してるなら、アップデートごり押しなのもうなずける話です。

      それとこれとは別問題。
      きもちわるぃ

  • by Anonymous Coward on 2016年02月10日 10時58分 (#2962120)

    もうすぐ要らなくなるの…

  • by Anonymous Coward on 2016年02月10日 12時18分 (#2962162)

    chcp では解決しないし、CmderとかConEmuとか使うのもめんどくさい(入っていない/入れられないサーバも多いので)。

  • by Anonymous Coward on 2016年02月10日 13時19分 (#2962210)

    関連リンクにある、Microsoft公式SSHクライアントに関するストーリーにおいて、複数のコメントで指摘されていますが、
    SSHクライアントだけ実装しても、端末の制御方法が違うために実用性が低いのではないかと思われていました。

    どうするのかと思っていましたが、まさかコマンドプロンプトを直してくるとは。
    Microsoftの本気度を感じますね。

    • by Egtra (38265) on 2016年02月11日 23時31分 (#2963055)

      Windows NTの頃からあるtelnet.exeでは、telnet.exe自身がVT100をエミュレートしていたので、時代が変わったと感じます。

      そのtelnet.exe、初期設定はVT100互換ではなくVTNTという独自のモードなので「最初にset term vt100を実行するように」と教わったというのも、もはや思い出の話ですね。

      親コメント
    • by Anonymous Coward

      顧客が本当の欲しかった物: un*x端末

      • by Anonymous Coward

        unixが欲しいのにwindowsを買う(#2962592) のようなバカはどうしようもないです

        • by Anonymous Coward

          日本だと完成品はWindows機しか手に入りにくい
          海外だとLinux機が普通に売ってるけど海賊版の温床だなんだと評判が悪い
          Linux用ハードでWindows起動しないようにすればいいだけだけど
          MSは他OS排除したいし、Linux側はどのハードでも自由に起動したいという意向なので
          基本的にプリインストール機出しても買わないユーザの問題なんだけど
          結局中古にインストールするのが安くて手っ取り早いのが現実

          • by Anonymous Coward

            元々Windowsを使わないなら、今回のストーリーとはあまり関係ないような。
            今回の件は飽くまでWindowsとの相互運用の話だし…。

      • by Anonymous Coward

        Macのターミナルの中で生活しているユーザーを取り込みにかかってますね

typodupeerror

物事のやり方は一つではない -- Perlな人

読み込み中...