中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » Wengier帮帮忙解决系统配置难题
« [1] [2] »
作者:
标题: Wengier帮帮忙解决系统配置难题 上一主题 | 下一主题
I_love_Wengier
初级用户




积分 126
发帖 11
注册 2005-1-18
状态 离线
『楼 主』:  Wengier帮帮忙解决系统配置难题

首先告诉我的目的:在纯DOS下加载himem.sys和emm386.exe(不加载下面程序报内存不足),然后运行“run386  juzhen.exp”命令。
故障:我用软盘(dos7.10, config.sys配置没问题)启动我的机子时报信息:emm386 not installed --- unable to set page frame base address            
      expanded memory services unavailable
      total upper .............                       34k
     largest upper ...............                   34k
     upper memory starting address .......  D200 H
    emm386  active
  启动后运行命令 “run386  juzhen.exp”  报下面信息:
The 386 chip is currently excuting in virtual mode under the control of another programe, You must turn off this other program in order to use 386|dos-extender to run in protected mode
我试了别人六台机子,两台如上面一样不正常,其它四台都运行很好,可惜我的笔记本刚好不能运行,请Wengier哥哥务必帮小妹这个忙,另juzheng.exp是怎样的一个程序,能反编译出它的原码吗,我们用它作矩阵运算。           



2005-1-18 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 2 楼』:  

你不妨试试把EMM386内存管理程序换成其它的,如UMBPCI试试吧,这样既可以有UMB上位内存以解决常规内存不足的问题,又可以不使得CPU进入虚拟方式以造成run386不能运行。EMM386的确与一些程序不太兼容,所以在这种情况下也只能换用UMBPCI或其它类似的程序了。当然,如果还可以的话不妨再优化一下常规内存。UMBPCI的最新版可以在这儿下载:http://www.uwe-sieber.de/files/umbpci_e.zip另外关于juzheng.exp,其实我也没有听说过这个程序,大概是誰编的一个小程序吧。。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2005-1-19 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
I_love_Wengier
初级用户




积分 126
发帖 11
注册 2005-1-18
状态 离线
『第 3 楼』:  谢谢,我试试

谢谢,我试试,不行再问您。 扩展名是“exp”的是什么文件,为什么要用“run386.exe”调用?

2005-1-19 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
I_love_Wengier
初级用户




积分 126
发帖 11
注册 2005-1-18
状态 离线
『第 4 楼』:  

哎呀,还是不行。我在config.sys里加了device=a:\umbpci.sys,启动很正常,可以suport,但运行我的命令“run386  juzhen.exp”报内存不足,怎么办?
我感觉emm386.exe启动时加载不上,是不是与内存条有关,是地址冲突吗?请Wengier再给我想想办法好吗?

2005-1-19 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
I_love_Wengier
初级用户




积分 126
发帖 11
注册 2005-1-18
状态 离线
『第 5 楼』:  

Wengier再给我想想办法好吗

2005-1-21 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 6 楼』:  

Re I_love_Wengier:    大约看了一下你的问题,感觉你的Run386是一个32位保护模式环境的加载器,而juzhen.exp应该是一个在32位模式下才可正常运行的程序。提供以下几条建议:    1、在windows的dos方式下将juzhen.exp改名为juzhen.exe运行试试看行不行    2、除非你确定是扩充/扩展内存不足,否则,“内存不足”大多是指常规内存不足,所以应该尽量保持常规内存大于600K,一般应该注释掉config.sys中除himem.sys和dos=high,umb外所有语句行,再将autoexec.bat中所有加载内存的语句行注释    3、就上面的描述来看,emm386与run386似乎因同属32位保护模式环境程序而相冲突,所以应该考虑暂时关掉emm386




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-1-23 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
I_love_Wengier
初级用户




积分 126
发帖 11
注册 2005-1-18
状态 离线
『第 7 楼』:  

Wengier,您好!
我总结了一下是这样:
(1)首先是启动时EMM386.EXE加载不上,如果能加载上问题就都不存在了。我的配置文件很简单:autoexe.bat只一行设置路径;config.sys里就三行:
DEVICE=a:\HIMEM.SYS
DEVICE=a:\EMM386.EXE RAM
dos=HIGH,UMB
(2)在EMM386.EXE加不上的情况下,用umbpci.sys和qemm386.sys代替,执行“run386.exe  juzhen.exp”命令,前者报内从不足,后者机器重启,重复多次均这样。
(3)将juzhen.exp改为juzhen.exe直接执行,报程序太大。在正常机子上也是这样,看来juzhen.exp必须要用run386.exe调用。另外run386.exe我记得好像就是DOS带的,它主要是做什么用?
多次麻烦您,很不好意思,可我很急用这个程序,只能求您了,谢谢。

2005-1-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 8 楼』:  

真不好意思,最近学习很忙(多伦多大学的学习量很大的),再加上网络速度较慢,好几天都没上论坛看了。正如我和willsort在上面提到过的,内存不足应该是指常规内存不足,因此应该要优化一下常规内存才好的,比如修改CONFIG.SYS中的参数,或不加载一些程序等等。而且willsort提到的一些建议也不错,你不妨试试。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2005-1-24 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
I_love_Wengier
初级用户




积分 126
发帖 11
注册 2005-1-18
状态 离线
『第 9 楼』:  

为什么启动时 EMM386.EXE 加载不上,。
我的配置文件很简单:
autoexe.bat只一行设置路径;
config.sys里就三行:

DEVICE=a:\HIMEM.SYS
DEVICE=a:\EMM386.EXE RAM
dos=HIGH,UMB

2005-1-25 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 10 楼』:  

Re I_love_Wengier:    将a:\EMM386.EXE RAM改成a:\EMM386.EXE NOEMS试试看EMM386是否正常加载,如果还不行,那么很可能是硬件(尤其是内存)问题,与正常机型互换内存测试一下。    另外,应该可以确定,RUN386与EMM386同属32位DOS Extender,他们在功能上互相影响,从你的运行上看,应该是二者发生冲突,所以有必要禁止EMM386。    查看你的不加载EMM386时提示的内存不足,是由DOS环境发出的,还是RUN386发出的,如果是后者,那么内存物理故障的可能性更大。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-1-25 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
I_love_Wengier
初级用户




积分 126
发帖 11
注册 2005-1-18
状态 离线
『第 11 楼』:  

谢谢,您说得很有道理,我试过用a:\EMM386.EXE NOEMS也不行。我用启动软盘在六台机子上试过,四台可以加载上EMM386.EXE ,两台不行(包括我的笔记本。麻烦您看看最上面我第一次给出的启动信息)。
如果EMM386.EXE 加载正常,执行“run386.exe  juzhen.exp”命令没任何问题。
如果不加载EMM386.EXE ,执行“run386.exe  juzhen.exp”命令报内存不足,将juzhen.exp改为juzhen.exe直接执行,报程序太大。
现在我怎么办,我很急用这个程序,给想想办法好吗!
另,扩展名是“exp”的是什么文件,为什么要用“run386.exe”调用? run386.exe我记得好像就是DOS带的,它主要是做什么用?

2005-1-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 12 楼』:  

Re I_love_Wengier:
  你的提醒很有道理,我在前面的思路是走偏了。根据EMM386.EXE的错误提示已经隐约说明问题。
  EMM386.EXE实际上是一个扩充内存(Expanded Memroy, 其协议为EMS)管理程序,他的主要作用是在保留内存(Reserved Memory,384KB)中创建上端内存块(Upper Memory Block,UMB,大小不定且不一定连续)后利用它将扩展内存(Extended Memory, 其协议为XMS)模拟为扩充内存。
    开关 "/RAM" 指示EMM386在上端内存块中创建一个64KB的扩充内存所需要的页面帧(page frame),页面帧相当于一个窗口,可以允许程序通过这个它访问任意位置的扩充内存,但是同一时刻只能访问64K,另外EMM386还需要44KB的UMB表格管理扩充内存中将要与页面帧进行的内存块,所以总共会消耗114KB的UMB空间。
   
  开关 "/NOEMS" 则可以禁止模拟扩充内存, 从而回收UMB中64KB的页面帧空 间,那可以使更多的程序通过DEVICEHIGH(CONFIG.SYS)和LH(AUTOEXEC.BAT)加载入UMB中(需要DOS=UMB支持),从而节约有限的基本内存(Conventional Memory,640KB)。
  从上文中提示中可以看到EMM386只找到了34KB的Upper/UMA,小于页面帧所需要的64KB,故而无法设置页面帧的段基址(Base Address)。而找不到足够空间的原因有多种,一是EMM386之前没有加载HIMEM.SYS,因而无法访问到1M内存顶端的UMA;一是EMM386之前加载了占用UMB的内存程序。
  不过参照你的提示,似乎这两种情况都不大相符。剩下的可能是,如果你的机器的BIOS支持USB键盘/鼠标,他可能会占用一部分UMB,请查看BIOS设置,它是否被禁止,如果没有请禁止它。
  而run386是Phar Lap的支持保护模式32位内存扩展器(32bit Extender),并非DOS自带,EXP是用支持此扩展器的编译系统编译出的程序,需要run386支持,具体信息请用搜索引擎查看有关信息。

[此贴子已经被作者于2005-1-26 23:22:10编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-1-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
I_love_Wengier
初级用户




积分 126
发帖 11
注册 2005-1-18
状态 离线
『第 13 楼』:  Re willsort:

谢谢您,看来确实是这样。
EMM386管理扩充内存,将扩展内存模拟成扩充内存,目的,是将常规内存中的一些占用程序移到扩充内存,为常规内存腾出更多的空间。而我执行的程序其实还是在常规内存中进行的,内存不足是指常规内存,是这样吗?
如果是这样,我怎么提高常规内存空间?不用EMM386,还有什么其他办法吗?umbpci.sys和qemm386.sys我都已试过了不行。

2005-1-27 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 14 楼』:  

Re  I_love_Wengier:
  不知你是否查看了BIOS设置?
  EMM386只负责创建UMB和EMS,并且在程序提出进驻EMS申请时为其分配EMS。至于程序是否有能力申请和利用这两块内存空间,它并不理会。但是,当大多程序通过各种方法进驻UMB或者EMS后(DEVICEHIGH/LH进驻UMB,进驻EMS则需程序自己申请),当然会节省一部分常规内存空间。
  但是你的RUN386应该是一个EMS/XMS管理程序,它一般会将自身进驻到常规内存,而将它所应用的程序(例如juzhen.exp)进驻到EMS/XMS。如果它不需要EMS,而只需要XMS,则系统只需要加载HIMEM.SYS即可,加载EMM386反而会出现冲突;如果它需要EMS,但是它可以自己管理,而只需要一定的UMB空间作为页面帧,那么应该使用EMM386 NOEMS;如果它只是提出EMS的使用申请,那么应该使用EMM386 RAM。
  提 高常规内存空间,我前面已经提到了,加载HIMEM.SYS,这时可以使用高端内存区(High Memory Area,HMA,位于1M内存以上,64KB),使用DOS=HIGH可以一部分DOS内核加载到HMA,而随后的DEVICEHIGH/LH可以其他程序同样加载到HMA,当然会有些程序必须要在常规内存驻留。这样,常规内存尽可能的大了。
  如果使用EMM386 NOEMS也可以得到很多UMB空间(通常大于130KB),让应用程序启动时加载,但是EMM386自身会占用一部分常规内存。所以,在启动程序体积不大、数量不多时,不加载EMM386时的常规内存空间应该最大。

[此贴子已经被作者于2005-1-27 10:21:26编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-1-27 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
I_love_Wengier
初级用户




积分 126
发帖 11
注册 2005-1-18
状态 离线
『第 15 楼』:  

re   willsort:
谢谢,我按您说的再试试,有结果告诉您。

2005-1-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: