ви можете використовувати засоби налагодження віртуальної машини (або 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-х, яку, можливо, хтось там написав для цієї мети
додайте сюди тег Freedomos (або навіть перемістіть / повторіть своє запитання про великий stackoverflow, я думаю, деякі гуру повинні знати щось про подібні проблеми
Я оновлю пізніше, якщо знайду щось цікаве, але ви можете, будь ласка, розкрити деякі подробиці, чому ви використовуєте 1,25, чи працює ця програма на новіших версіях msdos? Б'юсь об заклад, що за невелику плату ви можете знайти молодого хакера, який прагне зафіксувати цю програму до нової версії (або додати вихідний файл з ASM).