中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » DOS下如何编程来判断光驱已经装入?
作者:
标题: DOS下如何编程来判断光驱已经装入? 上一主题 | 下一主题
wqqqing
初级用户




积分 119
发帖 7
注册 2002-12-5
状态 离线
『楼 主』:  DOS下如何编程来判断光驱已经装入? 使用 LLM 解释/回答一下

如何在DOS下编写C或者汇编程序来判断光驱是否已经装入?
请高手指点,给个程序段落看看。
谢谢!!!


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

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

好主意。




Wengier - 新DOS时代

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

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

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




积分 210
发帖 39
注册 2002-12-30
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

简单极了,BASIC语言就能做到,原理就是判断Mscdex.exe是否已经运行即可。


2003-1-30 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
nre
银牌会员

nre


积分 1210
发帖 361
注册 2002-12-28
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

以下是引用qzxym在2003-1-30 22:40:16的发言:
简单极了,BASIC语言就能做到,原理就是判断Mscdex.exe是否已经运行即可。

说这种话有什么意义。 具体怎么实现?





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

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

光判断MSCDEX是否加载了没用,而且还有其它的光驱扩展驱动程序,如SHSUCD等。




Wengier - 新DOS时代

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

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

2003-1-30 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (29206679)  编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

刚才我对baobolz原来提到的那个FINDRAMD的源代码进行了一番改编,改编成为了FINDCD程序,可以查找光盘所在的盘符,并设置到环境变量CDROM中。它有两个明显的优点:

1:完全支持CLOAKING+MSCDEX,而网上的那个FINDCD.COM 1.02则不支持;
2:可以直接将光盘盘符设到变量CDROM中,操作非常方便,而不用判断任何ERRORLEVEL值。

我已将它传到论坛上来了,下载地址:
打开附件 链接已失效(管理员注 2009-4-28)





Wengier - 新DOS时代

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

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

2003-1-31 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (29206679)  编辑帖子  回复  引用回复
mys
元老会员




积分 5170
发帖 1637
注册 2002-10-16
来自 广东佛山
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

非常好非常好,这样做启动盘就很方便了。




我的网志
http://hzmys.blog.163.com/
我的网盘
firststep.qjwm.com
fsmys.ys168.com
ssmys.ys168.com
www.brsbox.com/fsmys
www.brsbox.com/ssmys
www.brsbox.com/ccdos
2003-2-6 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (2664429)  编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

我又对FINDCD做了一些增强,再次传上来:

打开附件 链接已失效(管理员注 2009-4-28)

注:它还修正了无光驱时会死机的BUG。






Wengier - 新DOS时代

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

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

2003-2-6 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (29206679)  编辑帖子  回复  引用回复
nre
银牌会员

nre


积分 1210
发帖 361
注册 2002-12-28
状态 离线
『第 9 楼』:  ~ 使用 LLM 解释/回答一下

同时上传原代码吧,有利于大家水平的提高。





Teamwork !
2003-2-7 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

好吧,以下是此程序的部分源代码:

程序初始化部分(PASCAL源代码):

program findcd;
const
env: arrayof Char='CDROM=c:'; <- 准备环境变量
var
drvs: array of Char; <- 光驱字符列表
envp: PChar;

查找光驱子程序(汇编源代码):

procedure setdrv; assembler;
asm mov bx,0
mov ax,1500h
int 2fh <- 调用中断取得光驱状态
cmp bx,1 <- 检查光驱是否安装
jc @@m <- 若无,退出子程序
push bx
push ds
pop es
mov bx,offset drvs
mov ax,150Dh
int 2Fh
pop cx
@@l: add byte ptr ,'A'
inc bx
loop @@l
mov byte ptr ,0
@@m:
end;

添加环境变量子程序(汇编源代码,略);

主调用程序(PASCAL源代码):
begin
setdrv; <- 调用查找光驱子程序;
if ord(drvs)=0 then <- 若无光驱,显示“No CD-ROM found”;
WriteLn('No CD-ROM found.')
else begin
env:=drvs; <- 若存在光驱,将第一个光驱字母加入环境变量CDROM;
WriteLn(env); <- 在屏幕上显示“CDROM=x:”;
if not InsertEnvVar <- 调用添加环境变量子程序;
then WriteLn('Cannot set environment variable!'); <- 若无法加入环境变量,显示错误;
exit;
end;
end. <- 程序结束。




Wengier - 新DOS时代

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

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

2003-2-7 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (29206679)  编辑帖子  回复  引用回复
pfox
银牌会员




积分 1451
发帖 446
注册 2002-10-20
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

是否支持双光驱及三光驱?





我的下载空间
2003-2-7 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

pfox:好主意,因此我刚才对FINDCD又进行了一番增强,在此下载:
打开附件 链接已失效(管理员注 2009-4-28)

此版本的特点是,“FINDCD n”(n是数字)将把CDROM环境变量设置为第n个光驱。若未指定n,则默认为第一个光驱(即n=1)。若n的值为0或非数字,则将CDROM值设置为光驱的数目。

假设现有E:、F:、G:盘三个光驱,那么运行“FINDCD”或“FINDCD 1”将得到“CDROM=E:”,运行“FINDCD 3”将得到“CDROM=G:”;若运行“FINDCD 0”将得到“CDROM=3”(即有三个光驱);若运行“FINDCD 4”将显示光驱找不到(因为只有三个光驱)。






Wengier - 新DOS时代

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

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

2003-2-8 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (29206679)  编辑帖子  回复  引用回复
pfox
银牌会员




积分 1451
发帖 446
注册 2002-10-20
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下

Good!

Wengier,能否再增强一下,在不加参数运行FindCD后,
直接将第一个CDROM的盘符赋给CDROM环境变量,若存在
第二个、第三个CDROM盘符直接赋给CDROM1、CDROM2?
这样在启动盘里面就可以直接用cda.exe判断光驱里面是否
有盘及是否有存在的文件,若有就可以直接执行或调用。











我的下载空间
2003-2-8 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 14 楼』:   使用 LLM 解释/回答一下

不如编写个批处理文件来做到,因为若运行FINDCD 0后%CDROM%的值为光驱数目,做个批处理循环并根据光驱数目将所有的光驱字符设置到%CDROM%变量中就可以了。




Wengier - 新DOS时代

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

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

2003-2-15 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (29206679)  编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 15 楼』:   使用 LLM 解释/回答一下

我刚才编写了个简单的DOS批处理文件,可以通过上面的FINDCD程序方便地将CDROM1,CDROM2等依次设置为光驱盘符.程序如下:
@echo off
set n=0
:loop
set cdrom=
findcd %n% (即: 调用上面的FINDCD)
if %n%==0 set cdn=%cdrom%
if not %n%==0 set cdrom%n%=%cdrom%
if %n%#==%cdn%# goto end
count n (即: n=n+1)
goto loop
:end
set n=
set cdn=
set cdrom=
echo.




Wengier - 新DOS时代

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

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

2003-2-15 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (29206679)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: