è possibile utilizzare le funzionalità di debug della macchina virtuale (o gdb / qualcos'altro) per leggere direttamente la memoria. ms-dos non ha protezione della memoria né un sistema multi-task, quindi puoi leggere la memoria della macchina virtuale, puoi leggere la vga della macchina virtuale per l'input.
la documentazione dice che esiste un comando
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
la sintassi corretta per ottenere l'output è: esegui VirtualBox --debug --startvm msdos1.25
, quindi, nella console del debugger:
info vgatext
output incollato:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
Quindi, puoi scrivere uno script di debugger che si aggancia a un valore di memoria nella memoria del tuo programma e scarica lo schermo vga quando un programma esegue l'output / oppure puoi scrivere uno script che mette in pausa cpu, salva il contenuto in modo coerente, se l'output cambia, salva il contenuto aggiornato, continua esecuzione della CPU
Alcune opzioni per indagare sono:
scopri come scrivere uno script di debug per scaricare i contenuti di memoria della tua applicazione
trova alcuni driver di vga / porta seriale / soluzione di dumping della memoria per quemu / dosbox / virtualbox
trovare alcuni vecchi programmi di utilità degli anni '80 che forse qualcuno ha scritto lì per questo scopo
aggiungi il tag freedos qui (o addirittura sposta / ripeti la tua domanda su big stackoverflow, suppongo che alcuni guru dovrebbero sapere qualcosa su problemi come questo
Aggiornerò più avanti se trovo qualcosa di interessante, ma puoi per favore rivelare alcuni dettagli sul perché stai usando 1.25, questo programma funziona su versioni più recenti di msdos? Scommetto che puoi trovare un giovane hacker di assemblaggio desideroso di rattoppare questo programma su una versione più recente (o aggiungere l'output di file con asm) a un piccolo costo