[COMMAND]>[FILE]
MS-DOSの初期バージョンでは動作しないようです。私はMS-DOS 1.25を使用しており、上記の式はステートメントを示していinvalid argument
ます。
更新:DOS 1.xでは動作しないことは事実であるため、仮想ボックスの一部の機能を使用して出力を取得したり、一部のログファイルから出力を取得したりできます。
[COMMAND]>[FILE]
MS-DOSの初期バージョンでは動作しないようです。私はMS-DOS 1.25を使用しており、上記の式はステートメントを示していinvalid argument
ます。
更新:DOS 1.xでは動作しないことは事実であるため、仮想ボックスの一部の機能を使用して出力を取得したり、一部のログファイルから出力を取得したりできます。
回答:
仮想マシンのデバッグ機能(または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でファイル出力を追加する)ために熱心な若いアセンブリハッカーを少額の料金で見つけることができると思います
info vgatext
作品はそれはそうあなたがしなければならないすべては、デバッガのための適切なスクリプトを書くことですやっぱ
私は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)プログラムがリストされています。
Cをインストールしてdosコマンドを実行するプログラムを作成し、シェルで実行して結果をログに記録できます。Borland Turbo C 2.01を使用することをお勧めします。コードを書きたい場合は、Quickbasicでコードを書くこともできます... ;-)
https://archive.org/details/msdos_borland_turbo_c_2.01
個人的には、DOS 5.5または6を使用しますが、いくつかの追加事項があります。