6

我正在尝试找到一种解决方案,允许我从 Windows 7 64 位将 C 代码编译为 DOS 可执行文件。我最近从 XP 32 位更新到 Win7 64 位,现在我的 Borland C++ 5.0 编译器无法工作。当它尝试调用 tlink.exe 16 位时出现错误。我试图避免使用另一台装有 XP 的计算机,但如果我不能很快解决其他问题,那将是我的行动方针。

我的目标是运行 FreeDOS 的嵌入式 x86。尽管我很想过渡到 Linux,但我负担不起过渡所需的时间。除了从未使用过 Linux 的学习曲线之外,我的大部分代码都依赖于 DOS,并且必须重新编写。

我希望有一个我可以改变的窗口设置,但到目前为止我的研究让我相信我需要对我的过程进行更彻底的改变。我已经在 Turbo C 2.01、DJGPP、DOSbox 中四处寻找……如果没有外部输入,我不太有信心沿着这些小巷走下去

4

3 回答 3

3

如果您能找到旧的 Microsoft 编译器,例如 16 位 C/C++ 1.52(包含在 32 位 C/C++ 4.1 cd-rom 中)或 C 8.00 或更早版本,它使用 dos 扩展器或 32 位运行dos 控制台窗口。

为什么不能使用 FreeDOS 运行 Borland 编译器?

您可以尝试在其上创建一个带有 MSDOS 的虚拟机,但您必须找到一种在虚拟机上安装 MSDOS 6.22 的方法。在 Microsoft 的支持站点上,他们有指向 MSDOS 6.22 的可引导 ISO 文件的链接。我仍然拥有原始软盘,并从具有软盘驱动器的旧系统上的软盘开始。向/从虚拟机导入/导出文件有点尴尬。

这是我使用的似乎适用于 Win 7 虚拟机的 config.sys。我不得不增加缓冲区、堆栈和文件以避免此设置的堆栈溢出问题。

dos=high,umb
buffers=40,0
files=60
lastdrive=e
shell=c:\command.com c:\ /e:1024 /p
stacks=64,512
switches=/f
device=c:\dos\himem.sys /numhandles:64 /testmem:off
device:c:\dos\emm683.exe ram i=b100-b7ff i=c600-c7ff i=cc00-cfff i=e600-efff frame=d000 a=32 d=128 notr
devicehigh=c:vmadd\cdrom.sys /d:mscd001

这是我使用的 autoexec.bat(在这种情况下,smartdrv 有点毫无意义,所以我用“rem”前缀将其注释掉)。

c:\dos\emm386 auto
lh c:\dos\mscdex.exe /d:mscd001 /m:7
rem lh c:\dos\smartdrv.exe
lh c:\vmadd\mouse.com
set path=c:\dos
set blaster=a220 i5 d1 h5 p330 t6
prompt $p$g
于 2015-01-07T23:51:22.820 回答
3

运行 Virtual XP 或 VirtualBox 并在里面安装 Borland C++。顺便说一句,5.02 版有一些修复(如果您的版本正好是 5.0)。

于 2015-01-07T23:55:09.367 回答
2

至于编译器,在我看来,Open Watcom 似乎是您情况下的最佳选择。FrameworkPascal(用旧版 Watcom 编写)提供了 32 位扩展器。关于创建 FreeDOS 虚拟机,请从 Microsoft SysInteral 获取工具。它们包括一个创建 VHD 的工具。一旦你在 VM 中运行 FreeDOS,你就可以简单地 SYS VHD 并在任何地方启动它。有很多可以运行 FreeDOS 的 ISO 映像,值得一提的是 Seagate Seatools for DOS,它与 FreeDOS 内核一起分发。

在 Windows 7 Pro 上运行所有可能是 XPMode 的最佳(但不仅仅是)解决方案。它运行 Windows XP 32,当然通过其 NTVDM 提供 100% 透明的兼容性,具有 DOS 16 位实模式、16 位保护 (Windows 3.1) 和 DOS 32 位扩展器。顺便说一下,NTVDM 是一项可以在 Windows 10 Pro 上激活的功能,但在那里可以用它来做什么还有待观察。

XPMode 是来自 Microsoft 的免费下载,它在 Windows 7 Pro 上的虚拟机中安装免费版本的 Windows XP 32 位,并完全共享剪切粘贴/复制缓冲区、USB、驱动器、屏幕和网卡(网络访问)。它可以在窗口和全屏之间切换。XPMode 的安装是自动的(在激活 Windows 7 Pro VM 之后)。Microsoft 提供了各种可下载的修补程序,用于更新注册表以激活 VM。有一个 MS 支持可下载的修补程序必须运行才能允许在 AMD Bulldozer 架构上安装。XPMode 休眠其桌面和虚拟硬盘驱动器,使其成为比基于硬件的系统更高效的环境。

通过一些额外的工作,可以在任何虚拟机上安装 Windows XP 32 位,包括 Windows XP 64 位上的 Microsoft 虚拟机以及 Oracle Box 和 VMWare。然而,XPMode 可能是最流畅的解决方案,因为某些安装(例如用于 Windows XP 64 位的 MS 虚拟机)并没有使用全屏的完整物理显示(只有大约 90%)。如果您在 XPMode 中安装浏览器和电子邮件,您可以在全屏模式下生活而忘记新版本的 Windows。

于 2016-08-28T15:19:33.767 回答