问题标签 [ntvdm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
312 浏览

c# - 向 NTVDM 中包装的 16 位 DOS 应用程序发送击键

我正在尝试将击键发送到包装在 NTVDM 中的 16 位 DOS 应用程序。我下面的代码目前能够成功地将击键发送到任何应用程序(例如记事本),包括命令提示符,这让我想知道为什么它不适用于我试图发送到的 DOS 应用程序。虽然我相信这与被包裹在 NTVDM 中的 DOS 应用程序有关。希望有人能给我一些线索。目前,我下面的代码正在将 ALT+SPACE 发送到命令提示符并选择全部:

0 投票
0 回答
1109 浏览

assembly - RET指令导致的“NTVDM CPU遇到非法指令”

好吧,我这里有个大问题。这段代码应该可以工作;不是我写的,是老师给我的。代码有点长,因为它是两个字符串之间的 concat 操作,并且它还有两个 proc,但这是唯一一个没有从另一个 proc 调用的,所以,我一直在单独调试它。

如您所见,我一直在评论这些行以找出问题所在。我得出的结论是问题出在RET指令上。该程序链接得很好,但是当我执行它时,我得到了以下 Windows 对话框:

“NTVDM CPU 遇到非法指令。CS:0712 IP:0927 OP:ff 7f 00 00 00 选择‘关闭’以终止应用程序。”

代码在这部分运行良好:

直到

然后,在STRLEN 中唯一没有注释的指令是RET。这就是为什么假设这是问题所在。

我已经阅读了很多,但我还没有找到问题所在。

在网络的某个地方,我读到堆栈已损坏,因此当proc“返回”时,它返回到无效的内存地址,这是处理器无法理解的。

请,我希望有人可以帮助我,我不知道该怎么做,我已经尝试了很多。如果解释不清楚或信息不足,请问您需要什么。非常感谢。

哦,顺便说一下,我正在运行 Windows XP Mode 32bits

0 投票
0 回答
97 浏览

java - 为什么 Java 7 或更高版本的 Runtime.process 不能同时生成多个 ntvdm?

在使用 Intel XEON CPU 的 32 位 Windows Server 2007 Standard Service Pack 2 上运行。

我在令人羡慕的位置工作,拥有必须运行 16 位软件的服务器软件...... :)

我们有一个服务器,通过套接字为本地用户提供 16 位程序。

这是设置:

Java 服务器程序启动“cmd.exe \C batchfile.bat”进程。然后在该 batchfile.bat 中设置并运行一个实际的 16 位可执行文件(用于所有目的的 pgm.exe)。

然后它侦听请求并根据需要生成另一个请求。

现在,这可以完美地使用 JVM 1.6 版本运行时。但是,在 Java 7 和 Java 8 中,它会在 batchfile.bat 实际尝试启动 16 位 exe 程序的那一刻挂起。

使用 TaskManager,我们可以看到 cmd.exe 是并行生成的。但在当前 cmd.exe 离开 16 位程序(ntvdm.exe 关闭)之前,下一个 cmd.exe 将冻结(锁定?)并在运行 16 位 exe 时停止。

线索?这些 Java 版本之间发生了一些变化,这对我们来说完全是个谜。

那么,为什么 Java 7 和 Java 8 不能使用 Runtime.Process 启动两个同时的批处理文件,然后在批处理文件调用 16 位 exe 时也正确运行它们?

0 投票
1 回答
229 浏览

batch-file - dBASE III 管理员安装失败,“goto was unexpected”

我是我家族拥有的房地产金融业务的新手程序员/IT 人员。长话短说,大约 25-30 年前,我们创建了一个基于 dBASE III 的应用程序系统来跟踪所有客户帐户。更改为现代系统的成本将是天文数字,因为我可以以合理的效率进行编码,所以我们保留它。没问题,但每个人都在不同的工作站上使用单个用户版本。我想安装 dBASE 管理员并将其更改为网络环境。我想进入它我会有点超出我的深度,但能够完成它。我目前在 Windows XP 系统上运行它,没有互联网连接,所有这些都只是 LANd 在一起。

我从 vetusware 获得了安装磁盘映像。我通过虚拟软盘安装了图像。在命令提示符中,我导航到磁盘并按照手册中的说明进行操作:

  1. 将系统磁盘 #1 插入驱动器 A。
  2. 通过键入 A:[return] 将默认驱动器更改为 A

到目前为止一切顺利......我有一个提示。

然后输入: A> INSTALL C: DBA

我键入“INSTALL C:DBA”,它启动了在磁盘上找到的“INSTALL.BAT”,但很快报告“此时goto 是意外的”。并将我返回到 A 提示符。

我将在下面发布批处理文件文本。执行后,它会显示以“...previous version of dBASE”结尾的“回显”文本的顶部。但接下来的一行是“goto was unexpected...”

这似乎是 INSTALL 批处理文件有问题,而我没有做任何事情......我知道这是一个批处理文件错误,而不是程序内部的错误。同样奇怪的是,该程序提到了这个 DBA.COM,并且在任何磁盘上都找不到它......任何人都可以提供的任何帮助或指导将不胜感激。

非常感谢,

克里斯

0 投票
0 回答
330 浏览

windows - NTVDM 中的 Sound Blaster 仿真:直接模式和 MPU 无法按预期工作

我一直在尝试编写一个产生一些声音的小程序,作为我目前在实模式下学习 x86 汇编编程的学生的示例。从 DOSBox 运行时它成功播放声音,但在 NTVDM 中运行时失败(我使用 Windows XP 的那个)。

尝试在所谓的直接模式下访问 Sound Blaster(执行 DSP 重置)时也会遇到同样的问题。在 NTVDM 中似乎对我来说可靠工作的唯一 DSP 命令是 0xE1 — 检索 DSP 版本信息。

我拥有的大多数用于产生非内部扬声器声音的 MS-DOS 程序在 NTVDM 中也不起作用。除了他们中的一些人很高兴。

几年前,我在内部扬声器输出方面遇到了类似的问题,结果证明执行几个看似可交换的初始化任务的顺序实际上很重要。但这一次我找不到任何解决方案。

这是我拥有的一段测试代码(FASM 语法):

可能是什么原因?任何建议表示赞赏。

0 投票
1 回答
567 浏览

windows-xp - 在 Windows XP 上运行(挂起)16 位 setup.exe (InstallShiled) 失败

旧的 16 位setup.exe在 Windows XP 中无法运行。在Task Manager你可以看到ntvdm.exewowexec.exesetup.exe。但它什么都不做,只停留在进程列表中。

对我来说,它发生在1С:7.7. 但它可以用于任何 16 位安装程序。

在 Windows XP 的安全模式下 setup.exe 必须正常运行。

0 投票
2 回答
2110 浏览

assembly - 运行 32 位 DOS 应用程序时出现 NTVDM 系统错误 4001h

我使用 GNU 汇编器将ArithmeticExpressionCompiler中的 32 位模拟时钟从 Linux 交叉编译到 DOS。当在 QEMU 或 VirtualBox 中的 FreeDOS 下运行时(它们是比 NTVDM 好得多的模拟器,对吗?),它会创建这样的画面:

我希望它也可以在 Windows 10 上运行。但是,当我尝试在 Windows 10 上运行它时,我得到这个错误:

这甚至意味着什么?我的程序不是 16 位的,而是 32 位的,那么为什么某些 16 位子系统甚至在运行呢?“错误 4001h”是什么意思?Windows 应该能够运行 32 位 DOS 程序,对吧?
这是我的程序的源代码,如果有点长,很抱歉,但我不知道是什么导致了这个错误(我对系统编程的了解很少):

此ZIP 存档中提供了可执行文件。

0 投票
1 回答
102 浏览

windows-7 - Windows 10 32 位中的 NTVDM 中不支持鼠标

我正在尝试在我的 32 位 Windows 10 安装中运行 QBasic。Qbasic 运行良好,但不支持鼠标。在 Windows 7 32 位中,有对 QBasic 的鼠标支持,它在 Windows 10 32 位中不存在。

它可以以某种方式启用吗?

PS:我尝试打开旧版控制台,但没有解决问题。

0 投票
1 回答
39 浏览

assembly - 在初始化期间等待来自 NTVDM 下 DOS 驱动程序的按键

在驱动程序初始化期间,在 NTVDM.exe 下的 32 位 Windows 10 21H2(OS Build 19044.1466)上运行时,是否可以从c:\windows\system32\config.nt加载的驱动程序获取键盘输入?此时我只是想模拟“按任意键继续...”

我已经尝试过 DOS API AH=08h INT 21h 和 BIOS API AH=00h INT 16h 但两者似乎都冻结并且没有检测到输入。

代码:

我正在用 masm 构建: