bạn có thể sử dụng các phương tiện gỡ lỗi máy ảo của mình (hoặc gdb / thứ khác) để đọc bộ nhớ trực tiếp. ms-dos không có bảo vệ bộ nhớ cũng không phải là một hệ thống đa tác vụ, vì vậy bạn có thể đọc bộ nhớ máy ảo, bạn có thể đọc vga máy ảo cho đầu vào.
tài liệu nói rằng có tồn tại một lệnh
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
cú pháp đúng để nhận đầu ra là: run VirtualBox --debug --startvm msdos1.25
, sau đó, trong bảng điều khiển gỡ lỗi:
info vgatext
đầu ra dán sao chép:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
Vì vậy, bạn có thể viết tập lệnh gỡ lỗi móc vào giá trị bộ nhớ trong bộ nhớ chương trình của bạn và bỏ màn hình vga khi chương trình xuất / hoặc bạn có thể viết tập lệnh tạm dừng cpu, lưu nội dung một cách nhất quán, nếu đầu ra thay đổi, lưu nội dung cập nhật, tiếp tục cpu chạy
Một số tùy chọn để điều tra là:
tìm cách viết tập lệnh gỡ lỗi để bỏ nội dung bộ nhớ trong ứng dụng của bạn
tìm một số giải pháp gỡ lỗi trình điều khiển vga / cổng nối tiếp / bộ nhớ cho quemu / dosbox / virtualbox
tìm một số chương trình tiện ích OLD từ những năm 80 mà có lẽ ai đó đã viết lại ở đó cho mục đích này
thêm thẻ freedo ở đây (hoặc thậm chí di chuyển / lặp lại câu hỏi của bạn trên stackoverflow lớn, tôi cho rằng một số bậc thầy nên biết một điều về các vấn đề như thế này
Tôi sẽ cập nhật sau nếu tôi thấy điều gì đó thú vị, nhưng bạn có thể vui lòng tiết lộ một số chi tiết về lý do tại sao bạn sử dụng 1.25, chương trình này có hoạt động trên các phiên bản mới hơn của msdos không? Tôi cá là bạn có thể tìm thấy một số hacker lắp ráp trẻ mong muốn vá chương trình này lên phiên bản mới hơn (hoặc thêm đầu ra tệp bằng asm) với một khoản phí nhỏ