Sie können die Debugging-Funktionen Ihrer virtuellen Maschine (oder gdb / etwas anderes) verwenden, um den Speicher direkt zu lesen. ms-dos verfügt weder über einen Speicherschutz noch über ein Multitasking-System. Sie können also den Arbeitsspeicher der virtuellen Maschine und vga der virtuellen Maschine zur Eingabe lesen.
Dokumentation sagt, dass es einen Befehl gibt
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
Die korrekte Syntax für die Ausgabe lautet:
Lauf VirtualBox --debug --startvm msdos1.25
Dann in der Debugger-Konsole: info vgatext
kopiert eingefügte Ausgabe:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
Sie können also ein Debugger-Skript schreiben, das einen Speicherwert im Speicher Ihres Programms festlegt und den vga-Bildschirm ausgibt, wenn ein Programm etwas ausgibt, oder Sie können ein Skript schreiben, das die CPU anhält, den Inhalt konsistent speichert, wenn sich die Ausgabe ändert, den aktualisierten Inhalt speichert und fortfährt CPU laufen
Einige zu untersuchende Optionen sind:
Hier erfahren Sie, wie Sie ein Debugging-Skript zum Speichern des Speicherinhalts Ihrer Anwendung schreiben
Finden Sie einige Debugging-VGA-Treiber / serielle Schnittstelle / Speicher-Dumping-Lösung für Quemu / Dosbox / Virtualbox
Finden Sie ein altes Hilfsprogramm aus den 80ern, das vielleicht jemand zu diesem Zweck geschrieben hat
füge hier freedos tag hinzu (oder verschiebe / wiederhole deine Frage zum großen Stackoverflow, ich nehme an, einige Gurus sollten etwas über solche Probleme wissen
Ich werde später aktualisieren, wenn ich etwas Interessantes finde, aber können Sie bitte einige Details darüber preisgeben, warum Sie 1.25 verwenden. Funktioniert dieses Programm auf neueren Versionen von MSDOS? Ich wette, Sie können einige junge Assembly-Hacker finden, die bereit sind, dieses Programm gegen eine geringe Gebühr auf eine neuere Version zu aktualisieren (oder Dateiausgaben mit asm hinzuzufügen)