вы можете использовать средства отладки вашей виртуальной машины (или GDB / что-то еще) для непосредственного чтения памяти. MS-DOS не имеет защиты памяти и не является многозадачной системой, поэтому вы можете читать память виртуальной машины, вы можете читать виртуальную машину VGA для ввода.
документация говорит, что существует команда
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
правильный синтаксис для получения вывода: запустите 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, когда программа выводит данные, или вы можете написать сценарий, который приостанавливает работу процессора, последовательно сохраняет содержимое, если изменяется вывод, сохраняется обновленное содержимое, продолжается процессор запустить
Некоторые варианты для расследования:
узнайте, как написать сценарий отладки для выгрузки содержимого памяти вашего приложения
найти решение для отладки vga драйвера / последовательного порта / памяти для quemu / dosbox / virtualbox
найти какую-нибудь старую служебную программу 80-х годов, которую, возможно, кто-то написал для этой цели
добавьте сюда тег Freedos (или даже переместите / повторите ваш вопрос о большом стеке потока, я полагаю, некоторые гуру должны знать кое-что о таких проблемах, как эта
Я обновлю позже, если найду что-нибудь интересное, но не могли бы вы рассказать подробнее о том, почему вы используете 1.25, работает ли эта программа на более новых версиях msdos? Могу поспорить, что вы можете найти какого-нибудь молодого сборочного хакера, желающего за небольшую плату залатать эту программу до новой версии (или добавить вывод файла с помощью asm)