中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-26 14:28
47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行
DOS汉化世界 & 中文系统 (中文化室) » 关于"无需中文平台"的中文DOS软件的疑问?
可打印版本  7,077 / 27
第16楼 本是 发表于 2008-11-30 22:07
银牌会员 发帖 790 积分 2,227
Originally posted by xugaohui at 2008-11-29 17:32:
本是:
也有人用与vt系统软件相同的技术来显示中文。
http://bbs.wuyou.com/viewthread.php?tid=131706&extra=page%3D1&page=1
这个东西非常好。
目前的 ...


RE:xugaohui:
无忧的帖子我看了,.PSF字体文件格式我也研究了,制作很简单。不过,我不想抢人家风头,就让他风光一下吧!——不过那个hzpsf.exe竟然500多K,太夸张了,我250字节就差不多了。窗口编程的最大问题可能就是体积庞大,让我至今不想学窗口编程。

VT技术应该可用于任何高低级语言。如果用BIOS编程即中断调用,Qbasic编程还要多费一番周折。用QB、Turbo Basic、First Basic或其它编译型语言要简单些。

附件是我用FirstBasic编的范例(源程序及.EXE),其它BASIC应该类似。

附件
BASVTFNT.RAR (20.57 KiB)
第17楼 xugaohui 发表于 2008-11-30 23:04
高级用户 发帖 293 积分 774 来自 湖北仙桃
谢谢本是。运行之后可以显示中文了,我学习下。
不了解First basic,用google搜索一下。
在这里发现了:
http://www.cn-dos.net/forum/viewthread.php?tid=944&page=6&fpage=1&sid=dSaGju
本是真是专家级。
Norton Utilities 8.0中文版 for DOS的窗口界面不正是power basic生成窗口界面吗?完全一模一样,可能是power basic+.RTLink 编写的。

[ Last edited by xugaohui on 2008-12-1 at 01:24 ]
第18楼 julon 发表于 2008-12-01 07:30
中级用户 发帖 133 积分 424
我用qboot工具启动,应该是加载了vtm,为什么用英文edit编辑有中文的文件,不能正常显示中文呢?中英文双语版的软件也不能正常显示中文。谢谢!
第19楼 本是 发表于 2008-12-01 08:17
银牌会员 发帖 790 积分 2,227
单字节编码、双字节编码。如果知道两者的差别,就容易理解VtMagiK的所谓新、旧汉字内码了。也就能明白汉字系统制表符智能识别的来源了。也能明白VT技术使用后,软件制表符混乱了。
第20楼 雨露 发表于 2008-12-01 10:37
管理员 发帖 2,601 积分 6,215
Originally posted by xugaohui at 2008-11-29 17:32:
雨露:
freedos的command.com汉化后也只能在freedos下运行。直接替换msdos 7.1的command.com后就不能用了。



不会呀,我用汉化的freedos1.0的command.com直接替换小云汉化的MSDOS7.1的command.com,照样正常运行!并不是专用的!
第21楼 xugaohui 发表于 2008-12-01 11:28
高级用户 发帖 293 积分 774 来自 湖北仙桃
freedos的command.com在执行for命令时变量是延迟处理的,不像ms是读是整行for命令后一起执行的。98se的引导盘根本不认freedosr command.com,替换后在config.sys菜单那里按f5键,总是提示你输入command.com的路径,就算你输入正确也还是提示你输入。输入ms的command.com路径就好了。
freedos的command.com不能识别这个命令set path=D:\,这不是搜索D:\目录,只能写成set path=D:
ms的command.com能识别这两种搜索路径。
ms的COMSPEC变量是C:\COMMAND.COM
freedos的COMSPEC变量是c:\command.com
反过来也不能用ms的替换freedos的command.com
还有好多细节都不相同。

[ Last edited by xugaohui on 2008-12-1 at 11:33 ]
第22楼 雨露 发表于 2008-12-01 11:54
管理员 发帖 2,601 积分 6,215
肯定是有区别的,但跟汉化不汉化没有关系的吧!?
第23楼 xugaohui 发表于 2009-01-02 14:05
高级用户 发帖 293 积分 774 来自 湖北仙桃
回16楼本是的例子程序。
我是使用vbdos 1.0,将firstbas的bas改动了一下就可以了,但生成所程序运行第一次可以。第二次在运行的时侯总是显示出 “显示汉字”,不会再有乱码了。你而且你的程序是每次运行开始是乱码,然后是才是显示汉字,不过你使用了screen语句会清屏。
也就是说改后的basvtfnt程序可能会影响到其它有扩展acsii显示的程序,可能出现乱码了。
我是这样改的
' $INCLUDE: 'VBDOS.BI'
..................省略,去掉screen 0 和cls清屏
DEFINT A-Z
a$ = ""
FOR i = 0 TO (8 * 16 - 1)
READ b
a$ = a$ + CHR$(b)
NEXT
PRINT "Before replacing font: ";
PRINT CHR$(&H80); CHR$(&H81); CHR$(&H82); CHR$(&H83); CHR$(&H84); CHR$(&H85); CHR$(&H86); CHR$(&H87)

PRINT "Press any key to see font changed..."
b$ = INPUT$(1)

DIM regs AS regtypex
regs.AX = &H1100
regs.BX = &H1000
regs.CX = 8
regs.DX = &H80
regs.BP = SADD(a$) '下面三行改成vbdos的命令了。
regs.ES = SSEG(a$)
CALL INTERRUPTX(&H10, regs, regs)

PRINT "After replacing font: ";
PRINT CHR$(&H80); CHR$(&H81); CHR$(&H82); CHR$(&H83); CHR$(&H84); CHR$(&H85); CHR$(&H86); CHR$(&H87)

PRINT "Press any key to see font restored..."
b$ = INPUT$(1)
'去掉改为显示模式0
END

vbdos的程序如果有窗口界面时,只能用screen 0.默认本来就是0.
如果在窗口程序退出时加入语句screen 12 : screen 0
这会导致把dos提示符界面给清屏。
请问要实现每次运行都是开始显示乱码,按任意键后显示中文,又不会清除屏幕上以前显示的内容,也不会影响到其它有扩展ascii字符的程序,怎么改程序?

[ Last edited by xugaohui on 2009-1-2 at 16:07 ]
第24楼 本是 发表于 2009-01-02 23:33
银牌会员 发帖 790 积分 2,227
下面的程序是用系统默认8X16的ASCII点阵重置字符集,但不清除屏幕字符。你可以试验一下。
mov ax,1130h
mov bh,6
int 10h ; get font type bh info into; cx=points,dl=rows, es:bp=ptr
xor dx,dx;mov dx,0
mov cx,100h
mov bx,1000h
mov ax,1110h
int 10h ; font load bh=points, bl=block; cx=qty, dx=1st char code; es:bp=ptr to font table
ret

[ Last edited by 本是 on 2009-1-2 at 23:34 ]
第25楼 xugaohui 发表于 2009-01-03 00:03
高级用户 发帖 293 积分 774 来自 湖北仙桃
看不懂汇编,先收藏了。谢谢本是。
第26楼 本是 发表于 2009-01-03 00:31
银牌会员 发帖 790 积分 2,227
“请问要实现每次运行都是开始显示乱码,按任意键后显示中文,又不会清除屏幕上以前显示的内容,也不会影响到其它有扩展ascii字符的程序,怎么改程序?”
只要每次想显示正常英文字形时就调用如下程序段就可以了。

DIM regs AS regtypex
regs.AX = &H1130
regs.BX = &H0600
CALL INTERRUPTX(&H10, regs, regs)

regs.AX = &H1110
regs.BX = &H1000
regs.CX = &H100
regs.DX = 0
'regs.BP, regs.ES 从上一中断调用中获得
CALL INTERRUPTX(&H10, regs, regs)

RETURN

[ Last edited by 本是 on 2009-1-3 at 00:35 ]
第27楼 xugaohui 发表于 2009-01-04 00:58
高级用户 发帖 293 积分 774 来自 湖北仙桃
在vbdos中试了,很好,很实用。再次感谢本是。
第28楼 fjb007 发表于 2009-04-16 12:17
新手上路 发帖 1 积分 2
下载,才发现下不了,大概是没有积分吧
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023