|
pk4321
初级用户
 
积分 116
发帖 8
注册 2003-1-20
状态 离线
|
『楼 主』:
现在DOS下有非常好的编程环境——DJGPP
[已使用 LLM 解释]
推荐大家多多学习和讨论。DJGPP提供了非常丰富的程序代码,可以现实图形界面和XML等编程。
至于经典的BC/TC/QB/MSC等,它们来做小程序是很好的,但是一些庞大一点的程序就不行了。我试过在BC++ 3.1下编写一个的图形界面程序,规模达到了Huge!编译以后,经常报错:Out of Memory!而且即使可以运行,程序也非常不稳定。
Recommend everyone to study and discuss more. DJGPP provides very rich program code, and can realize graphic interfaces and programming such as XML.
As for classic BC/TC/QB/MSC, etc., they are very good for making small programs, but not for some larger programs. I tried to write a graphic interface program under BC++ 3.1, and the scale reached Huge! After compiling, there were often errors: Out of Memory! And even if it can run, the program is very unstable.
LLM 解释
这是一篇关于 21 世纪初期 DOS 编程环境选型及其技术限制的讨论总结。针对帖子中提到的 DJGPP、Borland C++ (BC++)、Watcom C/C++ 以及内存管理等问题,从技术背景与实现机制角度补充如下解释。
1. 16 位与 32 位 DOS 开发的本质区别
pk4321 提到的 BC++ 3.1 编译大型程序出现 "Out of Memory" 或不稳定的现象,根源在于 16 位 x86 架构的分段内存模型(Segmented Memory Model)。
-
16 位开发(BC++ 3.1, TC, QB):这类工具链主要生成实模式程序,受限于 640KB 常规内存。即使使用
Huge 内存模式,单一指针寻址仍受限于 1MB 空间,且跨段寻址会导致显著的性能开销和编程复杂性。
-
32 位开发(DJGPP, Watcom C/C++):这些工具利用了 80386 及后续 CPU 的保护模式(Protected Mode)。通过 DPMI(DOS Protected Mode Interface)服务器(如 CWSDPMI),程序可以访问高达 4GB 的线性物理内存。这消除了 640KB 的束缚,使开发大型图形界面或处理复杂数据结构(如 XML 解析)成为可能。
2. DJGPP 的定位与技术特性
DJGPP 是 GCC(GNU Compiler Collection)在 DOS 平台上的移植版本,由 Delorie 软件公司维护。
-
开发环境与 IDE:针对帖中提到的易用性问题,DJGPP 本身是命令行工具链。RHIDE 是其最著名的集成开发环境,模仿了 Borland 的文本界面风格,极大地降低了习惯于 TC/BC 用户的使用门槛。
-
C++ 支持与优化:针对 Post #21 的疑问,DJGPP 完全支持 C++(通过 g++ 编译器)。事实上,由于其基于 GCC,其标准库(STL)的兼容性在当时的 DOS 工具中是非常领先的。关于“内嵌汇编太难写”,是因为 GCC 使用的是 AT&T 汇编格式,与 Intel 汇编格式在操作数顺序和语法上有显著差异,这对习惯于 MASM/TASM 的开发者来说确实存在学习曲线。
3. Borland DOS Power Pack 与 DPMI16/32
Post #10 提到的 Borland DOS Power Pack 是 Borland C++ 4.x 时代的扩展组件。
-
DPMI16:允许 16 位保护模式开发,使程序能够突破 640KB 进入扩展内存,但指针仍受 64KB 段限制。
-
DPMI32:这是 Borland 尝试进入 32 位 DOS 开发的工具,支持 Win32 风格的部分 API。然而,由于 Borland 当时的战略重心正转向 Windows,其在 DOS 下的 32 位优化和社区支持远不及专攻此领域的 Watcom 或开源的 DJGPP。
4. 其它开发方案与替代品
-
Watcom C/C++:它是当时 DOS 下商业 32 位开发的工业标准,著名的《毁灭战士》(DOOM) 和《雷神之锤》(Quake) 均使用 Watcom 开发。它的优化器在处理 386 指令集时性能极高,且其内嵌汇编支持 Intel 格式。
-
Digital Mars C++:其前身是 Zortech C++ 和 Symantec C++。它在 DOS 下提供了极快的编译速度和良好的 DPMI 支持,但如帖子所述,其 IDE/调试器(IDDE)通常需要付费购买,导致其在中文社区的普及度较低。
-
Delphi + WDOSX:Post #18 提到的方案利用了 32 位 Pascal 编译器配合 WDOSX 扩展器。WDOSX 能够将 Win32 控制台程序封装为 DOS 可执行文件,实现跨平台编译(在 Windows 下编写调试,在 DOS 下运行)。
5. 关于 EMM386 与栈异常
Post #20 提到的 emm386 #12 Stack exception 是典型的保护模式冲突。EMM386 作为内存管理器,通过 V86 模式模拟 EMS 内存。当 16 位实模式程序由于递归过深或局部变量过大导致栈溢出,或者与 DPMI 服务器产生特权指令冲突时,EMM386 会拦截并报错。在这种情况下,迁移到 DJGPP 等原生的 32 位 DPMI 环境是根本的解决方法,因为 32 位环境下的栈管理更加成熟且空间充裕。
6. 获取与文档建议
对于 DJGPP 的安装,由于其模块化程度极高(ZipPicker 是当年的官方推荐方式),用户只需下载核心文件(gcc, binutils, libc, cwsdpmi)即可运行,无需下载全站数百兆的文件。虽然当时的中文资料匮乏,但其配套的 Allegro 图形库拥有非常详细的示例代码,是当时 DOS 游戏开发的首选。
|
|
2003-1-20 00:00 |
|
|
Wengier
系统支持
             “新DOS时代”站长
积分 27736
发帖 10521
注册 2002-10-9
状态 离线
|
『第 2 楼』:
使用 LLM 解释/回答一下
说得太对了,现在DJGPP在国外的DOS编程界可是相当有名哦,而且用得相当广泛(一点儿都不虚)。哪像QB之类的软件呀,早就过时了。
That's so right. Now DJGPP is quite famous in the foreign DOS programming community and is used quite widely (absolutely not false). Unlike software like QB, which is long out of date.
|

Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
 |
|
2003-1-20 00:00 |
|
|
dfzr.999
初级用户
 
积分 116
发帖 4
注册 2003-3-9
状态 离线
|
|
2003-3-22 00:00 |
|
|
Wengier
系统支持
             “新DOS时代”站长
积分 27736
发帖 10521
注册 2002-10-9
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
到这儿看看吧:
http://www.simtel.net/pub/djgpp/
Come and take a look here:
http://www.simtel.net/pub/djgpp/
|

Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
 |
|
2003-3-22 00:00 |
|
|
飞翔天
初级用户
 
积分 118
发帖 2
注册 2003-3-26
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
DJGPP 这个软件不会用,可不可以用中文说明一下用法.还有这个软件没有集成文本编辑器的吗?好不方便请指教。
I can't use the DJGPP software. Can you explain the usage in Chinese? Also, does this software not integrate a text editor? It's really inconvenient. Please give me some advice.
|
|
2003-5-13 00:00 |
|
|
Wengier
系统支持
             “新DOS时代”站长
积分 27736
发帖 10521
注册 2002-10-9
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
DJGPP有集成的图形编程环境呢!用DJGPP+RHIDE就可以了。
DJGPP has an integrated graphics programming environment! You can just use DJGPP + RHIDE.
|

Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
 |
|
2003-5-13 00:00 |
|
|
ldljlzw
初级用户
 
积分 127
发帖 12
注册 2003-6-20
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
Digital Mars C++也非常不错啊!!只可惜只有它的编译器,还它的IDE和IDDE(调试环境)在它的一张CD上,要钱啊!虽然它要的钱也不太多(25美金),只是远在美国,想买都不知怎么买法!!!大家可以去 http://www.digitalmars.com/ 看一看啊!
谁用过Digital Mars C++ 吗?如果有的话,请告诉我要怎么才能到它的CD,能告诉我那有它的IDDE(调试环境)下载也好,谢谢了!!!
Digital Mars C++ is also very good!! It's just a pity that there is only its compiler, and its IDE and IDDE (debugging environment) are on one of its CDs and cost money! Although the money it costs is not too much (25 US dollars), it's just far in the United States, and I don't know how to buy it! Everyone can go to http://www.digitalmars.com/ to have a look!
Has anyone used Digital Mars C++? If so, please tell me how to get its CD. It would be good if you can tell me where to download its IDDE (debugging environment), thank you!!!
|
|
2003-6-25 00:00 |
|
|
hongying
初级用户
 
积分 112
发帖 4
注册 2003-6-26
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
我用BC++3编过图形界面的商用软件(真彩,4个232串口收发),没什么问题。你可能没用XMS吧。在显示上需要些技巧,在程序的处理上需要注意资源的平衡,否则会出现有串口丢数据的情况。等忙完我手上的三个项目,我会写一些东西放上来。
I have used BC++ 3 to compile commercial software with graphical interfaces (true color, 4 serial port 232 data sending and receiving), and there are no problems. Maybe you didn't use XMS. There are some skills in display, and attention should be paid to resource balance in program processing, otherwise there will be a situation where serial port data is lost. After I finish my three current projects, I will write some things and put them up.
|
|
2003-6-26 00:00 |
|
|
tjwghf
初级用户
 
积分 152
发帖 11
注册 2003-8-3
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
Wengier先生:
在"新DOS时代"中能否加入一些教程(DOS软件使用方面的)供大家下载?现在市场上DOS父母的书太少了……
Mr. Wengier:
Can some tutorials (on the use of DOS software) be added to "New DOS Era" for everyone to download? There are too few books about DOS for beginners on the market now...
|
|
2003-8-3 00:00 |
|
|
TomLi
初级用户
 
积分 138
发帖 7
注册 2003-7-31
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
Borland DOS POWER PACK
Borland C++ 4.5与Borland DOS POWER PACK配合可以开发出DOS下DPMI 16和DPMI 32应用程序,在DOS下可以使用4G内存,原来在BC++ 3.1下编写的DOS程序基本上不用改动,重新编译即可。特别是Borland DOS POWER PACK在DOS下可以使用WINDOWS 3.X格式的DLL库,同时也支持BGI图形接口,对于开发DOS GUI界面特别方便,不会出现内存不够的问题。
Borland DOS POWER PACK
Borland C++ 4.5 in combination with Borland DOS POWER PACK can be used to develop DPMI 16 and DPMI 32 applications under DOS, and 4G memory can be used under DOS. The DOS programs originally written under BC++ 3.1 basically do not need to be modified and can be recompiled. Especially, Borland DOS POWER PACK can use WINDOWS 3.X format DLL libraries under DOS, and also supports the BGI graphics interface, which is very convenient for developing DOS GUI interfaces, and there will be no memory shortage problems.
|
|
2003-8-12 00:00 |
|
|
makefool
初级用户
 
积分 77
发帖 11
注册 2003-9-17
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
Borland DOS POWER PACK是传说中的利器,但是找不到。
不过可以将就用下Borland Pascal中的dpmi16编译器。
Borland DOS POWER PACK is a legendary tool, but it can't be found.
However, we can make do with the dpmi16 compiler in Borland Pascal.
|
|
2003-9-24 00:00 |
|
|
sunny1979
初级用户
  忍者
积分 376
发帖 86
注册 2003-10-16
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
单独运行软件限制多吗?
How many restrictions are there when running the software alone?
|

以C语言软件开发为主:http://sunny1979.icpcn.com |
|
2003-10-18 00:00 |
|
|
world-100
初级用户
 
积分 102
发帖 1
注册 2003-10-26
状态 离线
|
『第 13 楼』:
使用 LLM 解释/回答一下
wengierw:
我的e文不好,请问有没有下载DJGPP的中文网页呀?谢谢!
wengierw:
My English is not good. Is there any Chinese web page for downloading DJGPP? Thanks!
|
|
2003-10-26 00:00 |
|
|
Wengier
系统支持
             “新DOS时代”站长
积分 27736
发帖 10521
注册 2002-10-9
状态 离线
|
『第 14 楼』:
使用 LLM 解释/回答一下
以下是引用world-100在2003-10-26 9:30:19的发言:
wengierw:
我的e文不好,请问有没有下载DJGPP的中文网页呀?谢谢!
lemonhall版主领导的小组现在正在做DJGPP的中文网页呢!
The following is a quote from world-100 on 2003-10-26 9:30:19:
wengierw:
My English is not good. Is there any Chinese webpage for downloading DJGPP? Thanks!
The team led by moderator lemonhall is currently working on a Chinese webpage for DJGPP!
|

Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
 |
|
2003-10-27 00:00 |
|
|
lxdddxl
初级用户
 
积分 122
发帖 6
注册 2003-2-3
状态 离线
|
『第 15 楼』:
使用 LLM 解释/回答一下
我用的是delphi7+wdosx,在windows98下开发和调试运行,最终是在DOS下运行,方便的很.
I'm using Delphi 7 + wdosx, developing and debugging under Windows 98, and finally running under DOS. It's very convenient.
|
|
2003-12-11 00:00 |
|