|
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 |
|
|
Wengier
系统支持
“新DOS时代”站长
积分 27734
发帖 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软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
|
|
2004-2-28 00:00 |
|
|
Kinglion
铂金会员
痴迷DOS者
积分 5792
发帖 1921
注册 2003-6-20 来自 金獅電腦軟體工作室
状态 离线
|
『第
3 楼』:
我也有一段关于判断中文系统是否启动的Quick BASIC程序。改天上传供大家分享。
|
熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
|
|
2004-3-2 00:00 |
|
|
Kinglion
铂金会员
痴迷DOS者
积分 5792
发帖 1921
注册 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(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
|
|
2004-3-21 00:00 |
|
|
xugaohui
高级用户
积分 774
发帖 293
注册 2003-4-16 来自 湖北仙桃
状态 离线
|
『第
5 楼』:
顶一下老贴。
请教大家,这样检测汉字系统是否加载后能不能新增一个DOS环境变量?
微软的方法是再调用批处理设置环境变量:http://support.microsoft.com/kb/43691/zh-cn
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
|
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也没有新增环境变理的命令。
微软的网站是总是这样的说明:http://support.microsoft.com/kb/69846/zh-cn
看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 来自 湖北仙桃
状态 离线
|
|
2009-7-6 23:50 |
|
|
本是
银牌会员
积分 2201
发帖 789
注册 2005-1-27
状态 离线
|
|
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
状态 离线
|
|
2010-11-19 15:11 |
|