コマンドの出力をファイルMS-DOS 1.xに保存します


27

[COMMAND]>[FILE]MS-DOSの初期バージョンでは動作しないようです。私はMS-DOS 1.25を使用しており、上記の式はステートメントを示していinvalid argumentます。

更新:DOS 1.xでは動作しないことは事実であるため、仮想ボックスの一部の機能を使用して出力を取得したり、一部のログファイルから出力を取得したりできます。


18
なぜDOS 1.25を使用しているのですか?!
ケルタリ

41
@Keltari:迷惑なWindows 10更新通知なし
マークKコーワン

6
ここで取り上げないセットアップについて他に質問がある場合は、Retrocomputingを試してみてください。別のSEサイトはそのようなことを専門にしています。(完全な開示:私はそのサイトと少し提携しているかもしれません。)
wizzwizz4

4
この質問は私を再び若く感じさせます!
ドミトリーグリゴリエフ

9
MS-DOS 1.xは基本的にCP / Mクローンであり、Ctrl-Pはコンソール出力のプリンターへのコピーをトリガーします。したがって、MS-DOSでも同様のアプローチが可能です。
トールビョーンラヴンアンデルセン

回答:


5

仮想マシンのデバッグ機能(またはgdb /その他)を使用して、メモリを直接読み取ることができます。ms-dosはメモリ保護もマルチタスクシステムでもないため、仮想マシンメモリを読み取ることができ、入力用に仮想マシンvgaを読み取ることができます。

ドキュメントにはコマンドが存在すると書かれています

info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode

出力を取得するための正しい構文は次のとおりです:run VirtualBox --debug --startvm msdos1.25、その後、デバッガーコンソールで: info vgatext

コピーペーストされた出力:

The COMPAQ Personal Computer DOS                                                
Version 1.11                                                                    


(C) Copyright COMPAQ Computer Corp. 1982                                        
(C) Copyright Microsoft 1981, 82                                                


A>                                                                              











--------------------------------------------------------------------------------
VBoxDbg> 

したがって、プログラムのメモリ内のメモリ値をフックし、プログラムが出力するときにvga画面をダンプするデバッガスクリプトを書くことができます/またはCPUを一時停止し、コンテンツを一貫して保存し、出力が変更された場合、更新されたコンテンツを保存し、継続するスクリプトを書くことができますCPUラン

調査するいくつかのオプションは次のとおりです。

  • アプリケーションのメモリ内容をダンプするためのデバッグスクリプトを記述する方法を見つける

  • quemu / dosbox / virtualboxのデバッグvgaドライバー/シリアルポート/メモリダンプソリューションを見つける

  • 80年代の古いユーティリティプログラムを見つけて、誰かがこの目的のためにそこに書き戻した

  • ここにfreedosタグを追加します(または、大きなstackoverflowで質問を移動/繰り返します。一部の達人は、このような問題に関することを知っているはずです。

何かおもしろいものが見つかったら後で更新しますが、なぜ1.25を使用しているのかについて詳しく教えてください。このプログラムはmsdosの新しいバージョンで動作しますか?このプログラムを新しいバージョンにパッチアップする(またはasmでファイル出力を追加する)ために熱心な若いアセンブリハッカーを少額の料金で見つけることができると思います


そのプロセスに関する追加情報を教えてください。
ブレイク

@Blake更新、思えるinfo vgatext作品はそれはそうあなたがしなければならないすべては、デバッガのための適切なスクリプトを書くことですやっぱ
strangeqargo

あなたが提供した情報は非常に興味深いものです。実際、私の状況には絶対に使えるかもしれません。私はこれを古いアプリケーションに使用していますが、それを入力して出力を自動的に取得することで、どのように機能するかを理解したいと思います。それは最善の方法ではないかもしれませんが、私はこのようにしたいです。答えてくれてありがとう、このマニュアルを読んで何らかのスクリプトを書いて(可能であれば)、それが機能するかどうかについての情報を教えてくれます。大いに感謝する。
ブレイク

1
まだ回答にマークを付けていない場合は、間違いなくこれにマークを付けます。助けてくれてありがとう。
ブレイク

1
アプリケーションの出力をテキストとして取得する必要がありました。ドキュメントには、ターミナルでデバッグコンソールを使用する方法が記載されています。VBoxManaged debugvms <デバッグモードVMですでに開始されている名前> info vgatextを使用して、ターミナルモードで画面を印刷し、リダイレクトと何らかの簡単な解析を使用して、必要なものを取得できました。ありがとうございました。
ブレイク

40

[コマンド]> [ファイル]は、MS-DOSの初期バージョンでは機能しないようです。

私はMS-DOS 1.25を使用していますが、上記の式はステートメントに無効な引数を与えます

それは正しいです。あなたがしたいことはv1.25では不可能です。

コマンドリダイレクション(および他の多くの改善点)がv2.0で追加されました。

MS-DOSバージョン2.0(PC-DOS 2.0と同等)は、1983年3月に最初にリリースされました。振り返ると、新しいオペレーティングシステムでした(ただし、MS-DOSバージョン1との互換性を維持するために細心の注意が払われました)。次のページにリストされているものを含む、多くの重要な革新と強化された機能が含まれていました。

  • 大容量のフロッピーディスクとハードディスクの両方をサポート
  • 階層的なファイル構造、ファイルハンドル、I / Oリダイレクト、パイプ、フィルターなど、UNIX / XENIXに似た多くの機能
  • バックグラウンド印刷(印刷スプール)
  • ボリュームラベルと追加のファイル属性
  • インストール可能なデバイスドライバー
  • 追加のデバイスドライバーの読み込み、システムディスクバッファーの数などを制御する、ユーザーがカスタマイズ可能なシステム構成ファイル
  • プログラム間で情報を受け渡すために使用できる環境ブロックのメンテナンス
  • ハードウェアに依存しない方法でプログラムがカーソルを配置し、ディスプレイの特性を制御できるオプションのANSIディスプレイドライバ
  • アプリケーションプログラムによるメモリの動的な割り当て、変更、および解放のサポート
  • カスタマイズされたユーザーコマンドインタープリター(シェル)のサポート
  • アプリケーションソフトウェアが通貨、時刻、日付の形式を変更するのを支援するシステムテーブル(国際サポートとして知られています)

レイダンカンによるソースアドバンスドMS-DOSプログラミング


代わりに何ができますか?

可能な回避策は、画面を(テキストとして)キャプチャし、出力を解析することです。

この質問への回答DOSのスクリーンキャプチャには、調査するための開始点であるTSR(Terminate but Stay Resident)プログラムがリストされています。


13
いい答えだ。MS-DOS 1.0に関心があるのは、スーパーユーザーのみです。
私は言う

あなたの答えをありがとう、私はそれを感謝しますが、私は今のところそれを答えとしてマークしない理由(仮想ボックス関数を使用するなど)を見つけたいです。
ブレイク

@Blake可能な回避策は、画面を(テキストとして)キャプチャし、出力を解析することです。答えを更新しました。
DavidPostill

このtsrプログラムを使用しようとすると、結果が遅れてすみません。マシンにアクセスできたらすぐにお知らせします。これは素晴らしい代替手段であり、適切に機能することを期待しています。他のプログラムをインストールする必要がありますか(たとえば、このtsr環境を作成します)?
ブレイク

1
@Blake覚えているわけではありませんが、DOSを使用してから年も経ちます。テストの遅れを心配しないでください;)
DavidPostill

-3

Cをインストールしてdosコマンドを実行するプログラムを作成し、シェルで実行して結果をログに記録できます。Borland Turbo C 2.01を使用することをお勧めします。コードを書きたい場合は、Quickbasicでコードを書くこともできます... ;-)

https://archive.org/details/msdos_borland_turbo_c_2.01

個人的には、DOS 5.5または6を使用しますが、いくつかの追加事項があります。


1
これはv1.25で機能しますか?
ブレイク

もしそうなら、Cのインストールと結果の記録方法に関する追加のヘルプをお願いできますか、どうもありがとうございます。
ブレイク

1
@ブレイクはv1で動作しません
edc65

Cを使用してプログラムを作成することは、そのようなプログラムを作成するときに使用するAPIについて言及している場合に役立ちます。(そしてもちろん、コードがDOS 1.xと互換性があるという質問の明示的な要件を考慮に入れました。)この答えもそうではありません。人気のあるコンパイラ/ IDEパッケージへのリンクをスパムするだけで、そのようなツールセットの関連性に関するガイダンスはありません。
コーディグレー

Cコンパイラには、stdinとstdoutの機能があり、シェルコマンドを実行できます。どのコンパイラがDOS 1で動作するのかわかりません。ボードのメンテナンスに不安がある場合は、なぜMS DOS 1のコードを書くのでしょうか?
-Gandolf989
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.