você pode usar os recursos de depuração da máquina virtual (ou gdb / outra coisa) para ler a memória diretamente. ms-dos não tem proteção de memória nem é um sistema multi-tarefa, então você pode ler a memória da máquina virtual, você pode ler a máquina virtual vga para entrada.
documentação diz que existe um comando info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
a sintaxe correta para obter a saída é:
execute VirtualBox --debug --startvm msdos1.25
, em seguida, no console do depurador:
info vgatext
saída copiada e colada:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
Assim, você pode escrever um script de debugger que conecta um valor de memória dentro da memória do seu programa e descarrega a tela vga quando um programa faz a saída / ou você pode escrever script que pausa a cpu, salva conteúdo consistentemente, se a saída for alterada conteúdo, continua cpu run
Algumas opções para investigar são:
-
descubra como escrever um script de depuração para despejar o conteúdo da memória do seu aplicativo
-
encontre alguma solução de depuração de driver vga / porta serial / solução de despejo de memória para quemu / dosbox / virtualbox
-
encontre algum programa utilitário antigo dos anos 80, que talvez alguém tenha escrito lá para essa finalidade
-
adicione tag freedos aqui (ou até mesmo mova / repita sua pergunta em big stackoverflow, suponho que alguns gurus devam saber algo sobre problemas como este
Vou atualizar mais tarde se encontrar algo interessante, mas você pode, por favor, revelar alguns detalhes sobre por que você está usando o 1.25, esse programa funciona em versões mais recentes do msdos? Eu aposto que você pode encontrar algum jovem hacker de montagem ansioso para consertar este programa para uma versão mais nova (ou adicionar saída de arquivo com asm) por uma pequena taxa