Anda dapat menggunakan fasilitas debug mesin virtual Anda (atau gdb / sesuatu yang lain) untuk membaca memori secara langsung. ms-dos tidak memiliki perlindungan memori atau sistem multi-tugas, sehingga Anda dapat membaca memori mesin virtual, Anda dapat membaca vga mesin virtual untuk input.
dokumentasi mengatakan ada perintah
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
sintaks yang benar untuk mendapatkan output adalah: jalankan VirtualBox --debug --startvm msdos1.25
, kemudian, di konsol debugger:
info vgatext
hasil copy-paste:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
Jadi, Anda dapat menulis skrip debugger yang mengaitkan nilai memori di dalam memori program Anda dan menampilkan layar vga ketika sebuah program menghasilkan / / Anda dapat menulis skrip yang menjeda cpu, menyimpan konten secara konsisten, jika output berubah, menyimpan konten yang diperbarui, berlanjut cpu run
Beberapa opsi untuk diselidiki adalah:
temukan cara menulis skrip debugging untuk membuang konten memori aplikasi Anda
temukan beberapa debug vga driver / port serial / solusi dumping memori untuk quemu / dosbox / virtualbox
menemukan beberapa program utilitas LAMA dari 80 yang mungkin seseorang menulis kembali ke sana untuk tujuan ini
tambahkan tag freedos di sini (atau bahkan pindahkan / ulangi pertanyaan Anda di stackoverflow besar, saya kira beberapa guru harus tahu tentang masalah seperti ini
Saya akan memperbarui nanti jika saya menemukan sesuatu yang menarik, tetapi dapatkah Anda mengungkapkan beberapa detail mengapa Anda menggunakan 1,25, apakah program ini bekerja pada versi yang lebih baru dari msdos? Saya yakin Anda dapat menemukan beberapa peretas muda yang bersemangat untuk menambal program ini ke versi yang lebih baru (atau menambahkan keluaran file dengan asm) dengan biaya kecil