中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 自动检测汉字系统是否加载的QUICK BASIC程序
作者:
标题: 自动检测汉字系统是否加载的QUICK BASIC程序 上一主题 | 下一主题
mys
元老会员




积分 5170
发帖 1637
注册 2002-10-16
来自 广东佛山
状态 离线
『楼 主』:  自动检测汉字系统是否加载的QUICK BASIC程序

这是在某本合订本上介绍的,原来介绍用C检测,我后来用QB实现了,现在找到程序把它贴出来,只要用一个变量保存检测结果,准备好两套显示,就可以对是否有汉字系统自动适应了。 REM 在BASIC程序中自动检测汉字系统 DEF SEG = &H40 mode = PEEK(&H49) OUT &H3CE, &H6 result = INP(&H3CF) AND &HF PRINT "mode="; mode, "result="; result IF mode = 3 AND result = 5 THEN PRINT "现在于直接写屏的汉字系统中" PRINT "现在你看到的是汉字" ELSE IF mode = 3 AND result = 14 THEN PRINT "Is not any CCDOS in the memory ,It's it ?" PRINT "So , You only see the English" ELSE IF mode = 18 AND result = 1 THEN PRINT "你现在非直接写屏的汉字系统中" ELSE PRINT "I Can't know which display mode ." END IF END IF END IF




我的网志 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
2004-2-27 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (2664429)  编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


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

把程序中的这一行: IF mode = 3 AND result = 5 THEN 改成: IF mode = 3 AND (result = 1 or result = 5) THEN 吧,否则在Win9x/ME的DOS窗口中的AW97、XZL等汉字系统下,或者在纯DOS下均无法正常判断汉字系统是否加载。

[此贴子已经被作者于2004-2-28 6:12:42编辑过]





Wengier - 新DOS时代 欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址: wendos.mycool.net/ E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
2004-2-28 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (29206679)  编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5798
发帖 1924
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 3 楼』:  

我也有一段关于判断中文系统是否启动的Quick BASIC程序。改天上传供大家分享。




熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境! 金狮電腦軟體工作室愿竭诚为您服务! QQ群:8393170(定期清理不发言者) 个人网站:www.520269.cn 电子邮件:doujiehui@vip.qq.com 微信公众号: doujiehui
2004-3-2 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (79207959)  编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5798
发帖 1924
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 4 楼』:  我的关于检测中文系统是否启动的Quick BASIC程序

CALL TestCcdos SYSTEM SUB TestCcdos DIM a%(50) DEF SEG = VARSEG(a%(0)) RESTORE FOR I% = 0 TO 37 READ D% IF I% = 4 THEN D% = VARPTR(a%(49)) MOD 256 ELSEIF I% = 5 THEN D% = VARPTR(a%(49)) / 256 END IF POKE VARPTR(a%(0)) + I%, D% NEXT I% CALL ABSOLUTE(VARPTR(a%(0))) DEF SEG IF a%(49) = 0 THEN PRINT PRINT "This is a test program!" PRINT "If you run it under Chinese System, Program will show GB Chinese char message." PRINT SYSTEM ELSE PRINT "这是一个中文测试程序!" PRINT "版权所有:金狮计算机软件工作室 窦杰晖" PRINT "电子邮件:kinglionsoft@idvweb.com" END IF END SUB DATA &H50,&H53,&H56,&HBE,&H00,&H00,&H2E,&HC7,&H04,&H00,&H00,&HB8,&H00,&HDB,&HCD,&H2F DATA &H3C,&HFF,&H74,&H09,&HB8,&H10,&HDB,&HCD,&H10,&H3C,&HFF,&H75,&H05,&H2E,&HC7,&H04 DATA &H01,&H00,&H5E,&H5B,&H58,&HCB

[此贴子已经被作者于2004-3-21 19:23:59编辑过]





熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境! 金狮電腦軟體工作室愿竭诚为您服务! QQ群:8393170(定期清理不发言者) 个人网站:www.520269.cn 电子邮件:doujiehui@vip.qq.com 微信公众号: doujiehui
2004-3-21 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (79207959)  编辑帖子  回复  引用回复
xugaohui
高级用户




积分 774
发帖 293
注册 2003-4-16
来自 湖北仙桃
状态 离线
『第 5 楼』:  

顶一下老贴。 请教大家,这样检测汉字系统是否加载后能不能新增一个DOS环境变量? 微软的方法是再调用批处理设置环境变量:support.microsoft.com/kb/43691 ... vbdos的Environ只能修改或删除已经存在的dos环境变量,而不能新增加环境变量。 这样很不方便,能不能直接在QB中新增一个环境变量呢? [ Last edited by xugaohui on 2009-7-5 at 11:03 ]




下载 09年7月7日 更新 感谢网友 囧HQY 提供空间
2009-7-5 10:57
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
本是
银牌会员





积分 2201
发帖 789
注册 2005-1-27
状态 离线
『第 6 楼』:  不用环境变量,只要7行汇编代码就行!

不用环境变量,只要7行汇编代码就行! mov dx,3C4h mov al,02 out dx,al mov dx,3C5h in al,dx cmp al,03 下一行用JZ 英语DOS或者JNZ 中文DOS即可。 我的VTmagik.com中就是如此操作的。 ;jz EnDisp, jnz CcDisp


   此帖被 +1 点积分     点击查看详情   
评分人:【 xugaohui 分数: +1  时间:2009-7-5 13:27




my major is english----my love is dos----my teacher is the buddha----my friends--how about U
2009-7-5 12:46
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
xugaohui
高级用户




积分 774
发帖 293
注册 2003-4-16
来自 湖北仙桃
状态 离线
『第 7 楼』:  

不懂汇编和C,我想是用一个程序检测是否为中文环境,然后设置环境变量cn=1,这样在dos下任何批处理都可以判断当然环境是否中文的,很方便做出中英文显示的批处理程序。在Qb也可以输入中英文提示。我看了Pascal也没有新增环境变理的命令。 微软的网站是总是这样的说明:support.microsoft.com/kb/69846 ... 看powerbasic的帮助试试PEEK$ 和 POKE$解决问题,估计这个办法不太好。 经测试用PEEK$ 和 POKE$不行,因为内存中有多个程序段前缀PSP,这样就搜到很多环境变量,却不知那个是正确的。 [ Last edited by xugaohui on 2009-7-5 at 15:37 ]




下载 09年7月7日 更新 感谢网友 囧HQY 提供空间
2009-7-5 13:10
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
本是
银牌会员





积分 2201
发帖 789
注册 2005-1-27
状态 离线
『第 8 楼』:  

6楼的汇编转BASIC如下: REM 在BASIC程序中自动检测汉字系统 OUT &H3C4, 02 result = INP(&H3C5) AND &HF IF result = 3 THEN PRINT "MS/PC DOS" ELSE PRINT "CCDOS" END IF END




my major is english----my love is dos----my teacher is the buddha----my friends--how about U
2009-7-6 00:19
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
xugaohui
高级用户




积分 774
发帖 293
注册 2003-4-16
来自 湖北仙桃
状态 离线
『第 9 楼』:  

谢谢本是,楼上的简单有效。 vbdos本身不能设置环境变量,但system语句可以返回DOS错误号,可以在批处理很好调用,比环境变量更好使用。




下载 09年7月7日 更新 感谢网友 囧HQY 提供空间
2009-7-6 04:45
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
xugaohui
高级用户




积分 774
发帖 293
注册 2003-4-16
来自 湖北仙桃
状态 离线
『第 10 楼』:  

继续请教本是,wbat程序在加载ccdos后,用鼠标操作时控件时有问题。怎么QBasic写个鼠标驱动是否加载的程序呢? 网上的文章太多是调用中断的。这样生成的文件太大,而且不方便。 support.microsoft.com/kb/37882 ... support.microsoft.com/kb/28171 ...




下载 09年7月7日 更新 感谢网友 囧HQY 提供空间
2009-7-6 23:50
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
本是
银牌会员





积分 2201
发帖 789
注册 2005-1-27
状态 离线
『第 11 楼』:  

请参考“QBASIC对QB中断调用的移植及绝对地址调用的扩展”(www.cn-dos.net/forum/viewthrea ...




my major is english----my love is dos----my teacher is the buddha----my friends--how about U
2009-7-7 04:53
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
byxyk
初级用户





积分 112
发帖 54
注册 2007-6-18
状态 离线
『第 12 楼』:  

bool InWinBox( ) { _AX = 0x160a; geninterrupt( 0x2f ); return !_AX; }


2009-7-7 06:08
查看资料  发短消息  网志   编辑帖子  回复  引用回复
netreg
初级用户




积分 134
发帖 17
注册 2004-10-25
状态 离线
『第 13 楼』:  

学习……


2010-11-19 15:11
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: