вы можете использовать средства отладки вашей виртуальной машины (или 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, когда программа выводит данные, или вы можете написать сценарий, который останавливает процессор, сохраняет содержимое последовательно, если выходные данные изменяются, сохраняет обновленное содержимое, продолжается процессор запустить
Некоторые варианты для расследования:
узнайте, как написать сценарий отладки для выгрузки содержимого памяти вашего приложения
найти решение для отладки vga драйвера / последовательного порта / памяти для quemu / dosbox / virtualbox
найти какую-нибудь старую утилиту 80-х годов, которую, возможно, кто-то написал для этой цели
добавьте сюда тег Freedos (или даже переместите / повторите ваш вопрос о большом стеке потока, я полагаю, некоторые гуру должны кое-что знать о таких проблемах)
Я обновлю позже, если найду что-нибудь интересное, но не могли бы вы рассказать подробнее о том, почему вы используете 1.25, работает ли эта программа на более новых версиях msdos? Могу поспорить, что вы можете найти какого-нибудь молодого сборочного хакера, желающего за небольшую плату залатать эту программу до новой версии (или добавить вывод файла с помощью asm)