belleği doğrudan okumak için sanal makine hata ayıklama olanaklarını (veya gdb / başka bir şeyi) kullanabilirsiniz. ms-dos'da hafıza koruması yoktur ve çok görevli bir sistem değildir, bu yüzden sanal makine hafızasını okuyabilir, sanal makine girişlerini vga okuyabilirsiniz.
dokümantasyonda bir komut var.
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
çıktı almak için doğru sözdizimi şudur: run VirtualBox --debug --startvm msdos1.25
, ardından, hata ayıklayıcı konsolunda:
info vgatext
kopya yapıştırılmış çıktı:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
Böylece, bir program çıktığında program belleğinizin içindeki bir hafıza değerine bağlı olan bir hata ayıklama komut dosyası yazabilir ve bir program çıktığında vga ekranını dökebilir / veya cpu'yu duraklatan bir komut dosyası yazabilir, içeriği sürekli olarak kaydeder, çıktı değişirse, güncellenmiş içeriği kaydeder, devam eder. cpu koşusu
Araştırılacak bazı seçenekler:
uygulamanızın bellek içeriğini boşaltmak için nasıl hata ayıklama komut dosyası yazılacağını bulun
Quemu / dosbox / virtualbox için bazı hata ayıklama vga sürücüsü / seri port / bellek boşaltma çözümünü bulun
Belki birileri orada bu amaç için yazmış 80'lerden bazı ESK yardımcı programı bulmak
Buraya freedos etiketini ekleyin (ya da sorunuzu büyük yığılma akışı üzerine taşıyın / tekrarlayın, sanırım bazı gurular bu gibi sorunlar hakkında bir şeyler bilmeli
Eğer ilginç bir şey bulursam daha sonra güncelleyeceğim, ancak neden 1.25 kullandığına ilişkin bazı detayları açıklayabilir misiniz, bu program msdos'un daha yeni sürümlerinde çalışıyor mu? Bahse girerim bu programı daha yeni bir sürüme eklemeye istekli bazı genç montaj korsanlarını bulabilirsiniz (veya asm ile dosya çıktısı ekleyin)