问题标签 [watcom]

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 投票
1 回答
824 浏览

c# - 使用 C# 打开 Watcom 数据库

所以,有人问我是否可以通过 C# 打开一个 watcom db 文件,因为我们需要从中检索一些数据,而 Access 和 Sql Server 似乎都无法导入它。

我不知道从哪里开始...

我得到的只是一个 .DB 文件和那些模糊的说明。

谢谢

0 投票
3 回答
1320 浏览

c - 16 位 DOS 中的 XMS 分配

请原谅我尝试死灵术,但我实际上需要为 16 位 DOS 编写一些代码(!)。我必须验证一个软件在为 16 位平台构建时是否正确执行,我发现我们的 XP 工作站实际上可以运行 16 位 DOS 应用程序,这使得使用现有的批处理测试系统成为可能。

无论如何,该软件由一个库和一个数据库组成。较小的数据库(最大约 150kB)可以定义为静态全局数组,也可以从文件读取到分配有 的缓冲区halloc(),因此我相当有信心库和测试工具构建正确。

但是,我们也有一些更大的数据库要测试,最高可达 ~1.8Mb。这太大了,无法正常分配,所以我写了一个小的支持库来分配XMS内存。有了这个,我可以在一个小玩具程序中成功地分配、使用(即写入和读取数据)和释放多达 16Mb 的数据。但是,在“真实”应用程序中使用 XMS 工具时,出现以下错误:

谷歌搜索这个错误几乎没有相关结果,这种类型的错误似乎通常归咎于杂项恶意软件。

代码库是严格的 C90,当前用于 DOS 构建的编译器是使用“大”内存模型的 OpenWatcom 1.9。构建时没有警告或错误。

XMS 支持库如下,错误似乎发生在调用 xmsmalloc() 之后:

一些具体的问题:

  1. 我在哪里可以找到有关错误消息的更多信息(我猜 OP 表示操作码,但其他字段呢?)
  2. 在 Windows XP 上运行时,我发现的 XMS API 参考是否仍然适用,或者是否有一些我应该参考的更新版本?
  3. 我可以用内联汇编程序搞砸系统状态吗?我应该如何解决?
  4. 您对如何解决这个问题有更好的想法吗?:-) DOS 扩展程序似乎需要 32 位模式,本练习的重点是使用 16 位模式。
0 投票
6 回答
9682 浏览

c++ - Open Watcom 的优缺点

由于在 StackOverflow 上的一些帖子中,建议在可行的情况下尝试支持多个(在本例中为 C/C++)编译器,因为这会迫使您编写更符合标准的代码并有助于发现错误。

所以我一直在寻找其他免费的 C/C++ 编译器,我可以为我的项目添加支持(它是用 C/C++ 编写的(两种语言相结合))。我发现 Open Watcom 是一个有趣的候选人。

所以我的问题是:与其他编译器(例如 gcc/g++、Visual C++ 等)相比,Open Watcom C/C++ 编译器的优缺点是什么?

0 投票
3 回答
1180 浏览

c - 在哪里可以找到 c 编程语言的 dos.h 参考?

我正在寻找dos.hAPI 的参考/文档。(特别是对于 openwatcom 特定版本)。

从哪里获取文档?

0 投票
2 回答
1869 浏览

c - 实模式操作系统中的 16 位 .com C 程序

我一直在研究实模式操作系统,用 NASM 编写汇编并编译为平面 .bin 可执行文件。
我想用 C 写一些操作系统,所以写了一个实验程序(ctest.c),我想访问一个字符串并打印第一个字符:

我使用 Open Watcom v1.9 编译了这个 wcl ctest.c -lr -l=COM 。这将创建 ctest.com。我在 NASM 汇编中编写的内核将这个程序加载到 0x2010:0x0000,将 DS 和 ES 设置为 0x2000:0x0000,然后跳转到 0x2010:0x0000。这就是我一直在调用用汇编编写并用 .COM 编译的 .COM 程序的方式nasm -f bin test.asm -o test.com
当我测试操作系统(使用 Bochs)时,它成功加载了 ctest.com,但打印出一个不属于 msg[] 的无意义字符。
有人对此有什么建议吗?我认为字符串只是在错误的地方初始化。我想将其保留为 16 位操作系统。
谢谢!

0 投票
1 回答
2096 浏览

assembly - 链接一个简单的 DOS 程序 (ASM),WLINK 警告没有堆栈段

我正在尝试根据NASM 手册.EXE中的示例组装和链接以下程序( , not .COM):

我使用以下命令进行组装(在标准输出上不产生任何内容,但会生成test.obj):

并使用以下命令链接(这是 OpenWatcom 1.9 WLINK):

这给了我以下输出(包括警告):

手册指出:

上面的代码声明了一个包含 64 字节未初始化堆栈空间的堆栈段,并在其顶部指向 `stacktop`。指令段堆栈堆栈定义了一个称为`stack`的段,也是`STACK`类型。后者对于程序的正确运行不是必需的,但是如果您的程序没有“STACK”类型的段,链接器可能会发出警告或错误。

我错过了什么?

0 投票
1 回答
2411 浏览

c - 如何通过 Watcom 编译器从 C 生成 16 位可执行 BINARY RAW 格式?

我想生成一个 16 位可执行的 BINARY RAW 格式Watcom C compiler。类似于在实模式下运行的没有任何标题的 EXE 文件。

我使用Large内存模型,因此代码段和数据段可能不同,可以增加超过 64K 字节。

我喜欢这样:

为了编译上面的代码,我在批处理文件下面运行:

运行build.batWatcom 编译器和链接器生成的以下消息后:

输出文件成功生成。

但我的问题是:

如何解决W1014警告?

有没有办法指定初始 CS 值?

0 投票
1 回答
216 浏览

c - 打开 Watcom 错误 E1127“参数列表中需要类型”

我有一个具有以下声明风格的标题:

尝试编译它会产生错误 E1127“参数列表中需要类型”,紧接着是 E1022:'int32_t' 附近缺少或拼写错误的数据类型。

我已经使用开关 -za99 启用了实现的 C99 扩展。我正在使用最新版本的 OpenWatcom (v1.9)。我相信这个项目在 linux 上用 gcc 编译得很好。

这些声明有什么问题?我什至不明白错误信息。我应该怎么办?

0 投票
1 回答
1778 浏览

c - Watcom 内联汇编文档

搜索有关 Open Watcom 链接器、内联汇编和 C 编译器的手册和文档,因为我发现官方手册不够好。我特别关注 C 和汇编。感谢您提供指向教程、书籍等的链接。

0 投票
3 回答
762 浏览

c - 在 32 位 Open Watcom C 中生成 FAR 跳转指令

我需要生成一个远跳转指令来跳转到另一个 ISR(中断服务程序)。我正在开发一个 32 位 FreeDOS 应用程序。

阅读 OW 手册(cguide.pdfclr.pdf)后,我想出了两种成功编译的方法,没有任何警告或错误

我想出的另一种方法是:

现在我的问题是以上两种方法中哪一种更正确或更好?有什么想法或意见吗?

有没有其他方法可以做到这一点?