Bla*_*ake 27 terminal virtualbox redirection ms-dos virtual-machine
这似乎[COMMAND]>[FILE]在 MS-DOS 的早期版本中不起作用。我使用的是 MS-DOS 1.25,上面的表达式给出了语句invalid argument.
更新:既然它确实在 DOS 1.x 中不起作用,那么是否可以使用虚拟框的某些功能来获取该输出,或者说通过从某些日志文件中获取输出。
Dav*_*ill 40
我使用的是 MS-DOS 1.25,上面的表达式给出了语句无效的参数
那是正确的。您想要做的在 v1.25 中是不可能的。
在 v2.0 中添加了命令重定向(以及许多其他改进)。
MS-DOS 2.0 版(相当于 PC-DOS 2.0)于 1983 年 3 月首次发布。回想起来,它是一个新的操作系统(尽管非常小心地保持与 MS-DOS 版本 1 的兼容性)。它包含许多重要的创新和增强功能,包括在下一页列出的功能。
- 支持更大容量的软盘和硬盘
- 许多类似 UNIX/XENIX 的功能,包括分层文件结构、文件句柄、I/O 重定向、管道和过滤器
- 后台打印(后台打印)
- 卷标,加上额外的文件属性
- 可安装的设备驱动程序
- 用户可自定义的系统配置文件,用于控制附加设备驱动程序的加载、系统磁盘缓冲区的数量等
- 维护可用于在程序之间传递信息的环境块
- 一个可选的 ANSI 显示驱动程序,允许程序以独立于硬件的方式定位光标和控制显示特性
- 支持应用程序动态分配、修改和释放内存
- 支持自定义用户命令解释器(shell)
- 帮助应用程序软件修改其货币、时间和日期格式的系统表(称为国际支持)
一种可能的解决方法是捕获屏幕(作为文本)并解析输出。
这个问题的答案DOS中的屏幕截图列出了一些 TSR(终止但保持驻留)程序,这些程序是您调查的起点。
您可以使用虚拟机调试工具(或 gdb/其他东西)直接读取内存。ms-dos 没有内存保护,也不是多任务系统,所以你可以读取虚拟机内存,你可以读取虚拟机 vga 进行输入。
文档说存在一个命令
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
获取输出的正确语法是: run VirtualBox --debug --startvm msdos1.25,然后在调试器控制台中:
info vgatext
复制粘贴输出:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
Run Code Online (Sandbox Code Playgroud)
因此,您可以编写一个调试器脚本,该脚本挂钩程序内存中的内存值并在程序输出时转储 vga 屏幕/或者您可以编写暂停 cpu 的脚本,一致地保存内容,如果输出发生变化,保存更新的内容,继续处理器运行
一些可供调查的选项是:
查找如何编写调试脚本以转储应用程序的内存内容
为 quemu/dosbox/virtualbox 找到一些调试 vga 驱动程序/串口/内存转储解决方案
找到一些 80 年代的旧实用程序,也许有人为此目的写回了那里
在此处添加 freedos 标签(或者甚至在大型 stackoverflow 上移动/重复您的问题,我想有些大师应该知道这样的问题
如果我发现一些有趣的东西,我会稍后更新,但是您能否透露一些有关您为什么使用 1.25 的详细信息,该程序是否适用于较新版本的 msdos?我敢打赌,您可以找到一些年轻的汇编黑客,他们渴望将这个程序修补到更新的版本(或使用 asm 添加文件输出),并收取少量费用
| 归档时间: |
|
| 查看次数: |
1985 次 |
| 最近记录: |