|
本是
银牌会员
积分 2201
发帖 789
注册 2005-1-27
状态 离线
|
『楼 主』:
让非汉字系统显示汉字!5.20新版
让非汉字系统显示汉字!5.20新版
===============================================
最新版本VTmagic.COM 5.20新版在333楼(http://www.cn-dos.net/forum/view ... hlight=&page=23)
===============================================
〖简要介绍〗
EGA/VGA的点阵字符集存放在显示卡的位平面2(即显示RAM)上,用户可以通过EGA/
VGA提供的接口,修改点阵字符集信息,来装载(不改变当前屏幕上的显示信息)和使用
自己喜欢的字体。然后,在文本视频模式下就可以显示新字形了。这就是“不加载汉字
系统就能显示汉字”技术,它速度快,与英文一样,而且不消耗内存。可用于DOS提
示符下代替汉字系统以实现汉字字形显示,甚至用于MS-DOS系统的中文启动。
注意:MS-DOS的[MENU]系统菜单无法在选择之前显示汉字菜单项!所以,请借助第
三方工具如ConMenu.SYS或ConfigP.mnu或BOOT.SYS或BOOTCON.SYS等 [下载地址见贴末]。
这可以说是很高效的技术,但生成“无汉字系统显示汉字的程序”的程序,一般是
靠BT.EXE,但它体积太大,使用起来很麻烦--要自己对照着ASCII码表输入扩展ASCII
码字符。因此本人制作了一个体积小巧(新版约10K)的生成器VTmagic.COM,能自动生成
1.不启动汉字系统显示汉字的程序.EXE(通用于DOS提示行及CONFIG.SYS文件!)
2.新内码文本.NEW (不再需要像用 BT.EXE那样手工输入!)
VTmagic.COM是一款汉字字模提取和载入程序,以便在VGA屏幕文本状态下显示可载
入替换的字符集(目前限于替换扩展ASCII码字符,最多只能同屏显示64个不同汉字).
这也就是通常所说的"不启动汉字系统显示汉字"技术,而且本程序还能让汉字显示得和
启动了汉字系统后显示的汉字一模一样(即无缝--没有中间的断裂)!新版本还能自动
生成对应于原字符串或文本文件的新内码文件,从此不用再像用BT.EXE那样手工输入!
省去了多少麻烦。
〖特别鸣谢〗
感谢willsort版主创意不断的建议!
感谢YAYA等高手提供的CONFIG.SYS工具!
感谢众网友不断反馈的BUGS和意见!
〖新手上路〗
1.在DOS命令提示符下,
通过VTmagic.com显示VT汉字
(显示汉字时需要HZK16)
EDIT myText.txt || 编辑文件
VTmagic /T myText.txt || 载入字模并显示文件
2.在DOS命令提示符下,
通过myText.exe代替HZK16
(显示汉字时不再需要HZK16)
EDIT myText.txt || 编辑文件
VTmagic /t myText.txt || 生成载入字模的EXE和新内码汉字NEW文件
EDIT myText.txt || 查看文件
3.在CONFIG.SYS中,
通过DEVICE=CONFIG.EXE代替
(显示汉字时不再需要HZK16)
EDIT config.sys || 编辑文件
VTmagic /t config.sys || 生成载入字模的EXE和新内码汉字NEW文件
REN config.sys *.sy0 || 原内码汉字文件保留
REN config.new *.sys || 使用新内码汉字文件,请拷config.sys/config.exe
|| /conmenu.sys入启动盘根目录
〖〗〖〗注意:下面的CONFIG.SYS必须用VTmagic.com处理后才能用于启动盘!!!〖〗〖〗
使用BootCon.sys的CONFIG.SYS例:
DEVICE=HIMEM.SYS || 此段为前[COMMON]块
DOS=HIGH,UMB ||
||
DEVICE=VTHZ.EXE || 加载汉字字模
||
DEVICE=BOOTCON.SYS || 进入BOOTCON控制范围
||
REM BC = [实模式 UMBPCI || 第1菜单块,在BOOTCON环境变量中返回A
DEVICEHIGH=UMBPCI.SYS || REM BC = [是块开始标志
REM BC = ] || 块结束标志
||
REM BC = [保护模式 EMM386 || 第2菜单块,在BOOTCON环境变量中返回B
DEVICEHIGH=EMM386.EXE NOEMS ||
REM BC = ] ||
||
REM BC = [最小模式 || 第3菜单块,在BOOTCON环境变量中返回C,后依此类推
REM BC = ] ||
||
LASTDRIVE=M || 后[COMMON]块
||
REM BC = [END] || 退出BOOTCON控制范围
使用Boot.sys的CONFIG.SYS例:
DEVICE=c:\bin\BOOT.SYS
DEVICE=TOP
DEVICE=TOP Select one of the following choices by
DEVICE=TOP pressing the corresponding digit key, or by
DEVICE=TOP moving the arrow with the Cursor-Up, Cursor-
DEVICE=TOP Down, Home and End keys and pressing Enter
DEVICE=TOP (or Cursor-Right):
DEVICE=TOP
DEVICE=BOOT.1 no RAM disk
DEVICE=BOOT.SET boot=no_vdisk
DEVICE=BOOT.2 64K RAM disk
DEVICE=c:\dos\VDISK.SYS size=64 sector=512 dir=64
DEVICE=BOOT.SET boot=vdisk
DEVICE=BOOT.3 128K RAM disk
DEVICE=c:\dos\VDISK.SYS size=128 sector=512 dir=64
DEVICE=BOOT.SET boot=vdisk
DEVICE=BOOT.END
AUTOEXEC.BAT
c:\bin\BOOT SET
IF ERRORLEVEL 10 GOTO not_installed
GOTO %boot%
:vdisk
COPY c:\COMMAND.COM d:
SET COMSPEC=d:\COMMAND.COM
GOTO done
:no_vdisk
ECHO Sorry, there is no RAM disk
GOTO done
:not_installed
ECHO BOOT.SYS is not installed!
:done
PATH c:\dos;c:\bin
使用ConMenu.sys的CONFIG.SYS例:
device=config.exe
device=ConMenu.sys
rem color=1e
rem default=e,30
rem caption= 中文 MSDOS 7.1 启动盘
rem caption=============================
rem endnote=按↑↓或相应字母选择菜单项
rem endnote=在单选菜单按回车确定
rem cm0=[A. 最小模式
rem cm0=]A
rem cm0=[B. 保护模式 加载 EMM386
device=himem.sys
device=emm386.exe noems
rem cm0=]B
rem cm0=[C. 实模式 加载 UMBPCI
device=umbpci.sys
devicehigh=himem.sys
rem cm0=]C
devicehigh=vide-cdd.sys /d:ide-cd
dos=high,umb,auto
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
rem cm0=[end]
使用ConfigP.mnu的CONFIG.SYS例:
device=config.exe
device=ConfigP.Mnu /s
rem 0NestMenu=
rem color=17,c
rem time=30,剩余时间
rem caption=
rem caption=
rem caption=
rem caption=3, 中文 MSDOS_7.1 启动盘
rem caption=4,================================================
rem endnote=2,按↑↓键或相应字母键选择项目,按空格键设定项目
rem endnote=2,按→键向后连续选择,按←键顺序返回,按回车退出菜单
rem item=1=选择启动模式 默认加载 umbpci
rem item=2=选择光驱 默认加载 vide-cdd
rem 1RadioMenu=
rem caption=
rem caption=
rem caption=
rem caption=5, 选择启动模式 (单选)
rem caption=4,================================================
rem DefaultItem=0,2,7=加载 umbpci
rem item=0,1,7=加载 emm386
rem item==最小加载
rem 2CheckMenu=
rem caption=
rem caption=
rem caption=
rem caption=5, 选择光驱 (复选)
rem caption=4,================================================
rem DefaultItem=3,6=加载 vide-cdd
rem item=4,6=加载 aspicd
rem item=5,6=加载 usbcd
rem block=0
device=himem.sys
rem block=1
device=emm386.exe noems
rem block=2
device=umbpci.sys
rem block=3
devicehigh=vide-cdd.sys /d:ide-cd
rem block=4
devicehigh=aspicd.sys /d:scsi-cd
rem block=5
device=usbcd.sys /d:usb-cd
rem block=6
set cm=cdrom
rem block=7
dos=high,umb,auto
rem block=end
fcbshigh=4,0
fileshigh=30
buffershigh=30,0
lastdrivehigh=32
stackshigh=9,256
device=ConfigP.Mnu /u
〖相关工具〗
ConMenu.sys http://www.cn-dos.net/forum/atta ... 8584&download=1
ConfigP.mnu http://www.cn-dos.net/forum/atta ... 35f9&download=1
Boot.sys http://www.cn-dos.net/forum/atta ... c463&download=1 http://www.cn-dos.net/forum/atta ... dd3e&download=1
BootCon.sys http://www.cn-dos.net/forum/atta ... 65b6&download=1
〖相关图贴〗
多体汉字库贴 http://www.cn-dos.net/forum/view ... ge=5&sid=JTXM1Y
多风格字形图 http://www.cn-dos.net/forum/atta ... 2ae6&download=1 http://www.cn-dos.net/forum/atta ... 210d&download=1
最新帮助截图 http://www.cn-dos.net/forum/atta ... 6a90&download=1
〖相关其它〗
http://www.cn-dos.net/forum/viewthread.php?tid=6916&fpage=1
http://www.cn-dos.net/forum/viewthread.php?tid=17591&fpage=1
http://www.cn-dos.net/forum/viewthread.php?tid=17708&fpage=1
http://www.cn-dos.net/forum/viewthread.php?tid=17983&fpage=1
http://www.cn-dos.net/forum/viewthread.php?tid=7374&fpage=2
[ Last edited by 本是 on 2007-10-27 at 03:27 PM ]
此帖被 +62 点积分 点击查看详情 评分人:【 arrive 】 | 分数: +2 | 时间:2007-5-24 07:59 | 评分人:【 Climbing 】 | 分数: +25 | 时间:2007-8-1 00:40 | 评分人:【 Jneny 】 | 分数: +3 | 时间:2008-4-30 05:47 |
|
|
my major is english----my love is dos----my teacher is the buddha----my friends--how about U |
|
2005-11-3 23:40 |
|
|
JonePeng
金牌会员
D◎$ Fαп
积分 4562
发帖 1883
注册 2004-1-19 来自 广东广州
状态 离线
|
『第
2 楼』:
强!我给你加分!
|
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
|
|
2005-11-4 11:27 |
|
|
Kinglion
铂金会员
痴迷DOS者
积分 5792
发帖 1921
注册 2003-6-20 来自 金獅電腦軟體工作室
状态 离线
|
『第
3 楼』:
不错不错,支持!
|
熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
|
|
2005-11-4 16:10 |
|
|
yaya
银牌会员
积分 1009
发帖 353
注册 2003-9-4
状态 离线
|
|
2005-11-4 16:43 |
|
|
yzz163
中级用户
积分 335
发帖 96
注册 2004-5-7
状态 离线
|
『第
5 楼』:
怎么下不了???
452字节
可粘源码吗?
|
|
2005-11-4 17:28 |
|
|
本是
银牌会员
积分 2201
发帖 789
注册 2005-1-27
状态 离线
|
『第
6 楼』:
Quote: | Originally posted by yzz163 at 2005-11-4 17:28:
怎么下不了???
452字节
可粘源码吗? |
|
1.肯定可以下载。直接点击不行,试试鼠标右击用网际快车。
2.要ASM源码,可以先解压缩,再用SR反汇编。里面牵涉不少技术细节,不注明技术,有了反汇编源码也还是看不懂的。当然如果有人要改进代码,推出更好的版本,我也可以考虑公开源码。看看其他人有什么意见吧!
|
my major is english----my love is dos----my teacher is the buddha----my friends--how about U |
|
2005-11-4 22:31 |
|
|
本是
银牌会员
积分 2201
发帖 789
注册 2005-1-27
状态 离线
|
『第
7 楼』:
谢谢JonePeng给我加分!关键不在给了几分,而是在于得到了承认!
|
my major is english----my love is dos----my teacher is the buddha----my friends--how about U |
|
2005-11-4 22:33 |
|
|
baoxin1968
初级用户
积分 173
发帖 26
注册 2004-9-9
状态 离线
|
『第
8 楼』:
谢谢!我用了这个软件生成了vthz.com和vthz.txt文件,但是不知怎样调用?我将这两个文件都copy 到启动盘中,在config.sys中加入
DEVICE=WRAPPER.SYS A:\vthz.com
DEVICE=BOOTCON.SYS
但是
REM BC = [ 如何输入?
是输入汉字还是ascii码?如果是ascii码怎样输入?请本是大师点拨!
|
|
2005-11-5 00:05 |
|
|
chujiafu
银牌会员
积分 1329
发帖 591
注册 2004-5-26 来自 安徽 宿州
状态 离线
|
|
2005-11-5 10:10 |
|
|
yao741
初级用户
积分 128
发帖 75
注册 2005-10-30 来自 黄河北道,天子渡
状态 离线
|
|
2005-11-5 11:44 |
|
|
本是
银牌会员
积分 2201
发帖 789
注册 2005-1-27
状态 离线
|
『第
11 楼』:
Quote: | Originally posted by baoxin1968 at 2005-11-5 00:05:
REM BC = [ 如何输入?
是输入汉字还是ascii码?如果是ascii码怎样输入? ... |
|
REM BC = [是ascii码,即键盘上原样的字符,不要在汉字输入状态下打。
Quote: | Originally posted by chujiafu at 2005-11-5 10:10:
请楼主具体说一下是怎样用的? |
|
其实在第1楼中已经说到了,如果还没有说清楚,我就再解释一下。
1)生成VTHZ.COM和VTHZ.TXT:
VTHZMK 你所要显示的汉字,无需重复&全角符、标点也行。
VTHZ.COM可以任你改名,只要扩展名是.COM或.EXE。
2)VTHZ.TXT不是应用时所需,只是为了方便你粘贴制作你想要显示的字词句。制作方法是:
a)如果启动了汉字系统,请一定用CtrlF7或其它键的组合,切换到看不出汉字字形的英文屏幕状态;如果未启动汉字系统,或不在汉字屏幕状态下,则不用切换。
b)运行VTHZ.COM。
c)用文本编辑器打开VTHZ.TXT。此时,你应该能看到汉字字形,怎样复制粘贴/剪切粘贴,就不用我再啰嗦了吧!
当然,你也可以打开其它文件(如:*.BAT, CONFIG.SYS, README.TXT),而后将VTHZ.TXT用块的方式读进来。
友情提示:
1)一个批处理或其它软件中可以调用很多VTHZ.COM(当然要换名)。
但同一屏幕上只能最多用足64个不重复的汉字! :-(
2)不仅可以用于可执行的软件,还可以用于显示简短的文本文件(如说明、警告、提示等)。Cool吧!
3)我在“[求助]不加载汉字系统也可以显示汉字?”(http://www.cn-dos.net/forum/viewthread.php?tid=6916&fpage=3)中翻译了BOOTCON.SYS的使用说明,大家可以参考;帖子里其它提示也很多,请自己阅读学习。
4)如果懂得VTHZ.COM的程序结构,而且分别取字模信息于不同字库(如UCDOS的简体库、繁体库、XZL的等线体库、北大方正的繁体库、简体粗字库等)的话,还可以拼接起来,同屏显示不同风格的字形!!!
有什么建议可以尽量提!
制作出软件或启动盘,别忘了说明一下致谢哦!
[ Last edited by 本是 on 2005-11-5 at 15:05 ]
|
my major is english----my love is dos----my teacher is the buddha----my friends--how about U |
|
2005-11-5 12:58 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
12 楼』:
Re 本是:
本程序还没有试用,对以下细节尚不清楚:
1、文本内容不重复是否是必须的要求?也即程序是否有过滤重复字的功能?
2、HZK16的路径是VTHZMK.COM所在路径,当前路径还是固定的根路径?
3、无缝汉字是利用了表格字符的无缝特性,还是是修改了显示中断?
目前我所想到的改进方向有以下几点:
1、支持文本文件,即根据已有的文本文件来生成字模载入程序VTHZ.COM,同时生成根据原文本内容重新编码的文本文件,省去用户自己提取不重复字并粘贴制作字词句的麻烦。
2、支持直接显示命令行参数中的汉字,即将提取和载入字模功能合二为一,在命令行参数或中接受GB码的中文内容,然后分别提取其子模载入至扩展ASCII字符中,并将其在屏幕上显示出来。直接省略了生成VTHZ.COM并调用它的麻烦。
3、支持命令行参数中设置 HZK16 的所在路径。
4、支持占用标准ASCII码集的字符来显示汉字,这样最大显示汉字可到128个,对于大多数的应用应该是足够了。
5、支持字符字模的恢复,这样可以不用重启来显示原ASCII字符了,也避免了利用中文CONFIG菜单启动后无法显示原扩展ASCII集字符。
[ Last edited by willsort on 2005-11-5 at 15:49 ]
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-11-5 15:32 |
|
|
本是
银牌会员
积分 2201
发帖 789
注册 2005-1-27
状态 离线
|
『第
13 楼』:
Re willsort:
1。程序是没有过滤重复字的功能,文本内容不重复不是必须的要求,但是出于效率,最好不处理重复汉字。“支持文本文件”是个好建议,我会考虑。
2。HZK16的路径是固定的根路径,但已留下足够空间以便DEBUG修改。命令行处理HZK16的路径问题,是出于让程序简化而未加入的功能,事先我也想到过,可以考虑加上。
3。无缝汉字是修改了E/VGA寄存器的值而实现的。
4。VTHZMK.COM中已经“将提取和载入字模功能合二为一,在命令行参数或中接受GB码的中文内容,然后分别提取其子模载入至扩展ASCII字符中,并将其在屏幕上显示出来。”但有一个前提,就是只有在“看不出汉字字形的非汉字屏幕状态”下才可能实现VGA文本屏字模替换而得到显示!!!否则需要按Ctrl F7切换。
5。“支持占用标准ASCII码集的字符来显示汉字”是可以,但屏幕上的原有英文信息会混乱,当然如果先清屏也行。我的想法是可能要考虑在命令行上加开头指定起始替换字符。
6。“字符字模的恢复”太简单了,只要取显示模式并用它重新置模式就行了,我现在就做一个上传。9字节就够了。记住改扩展名为.COM!
[ Last edited by 本是 on 2005-11-5 at 16:07 ]
附件
1: NCCLS.RAR (2005-11-5 16:07, 9 bytes, 下载附件所需积分 1 点
,下载次数: 274)
|
my major is english----my love is dos----my teacher is the buddha----my friends--how about U |
|
2005-11-5 15:42 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
14 楼』:
Re 本是:
很抱歉!在你回复的同时,又对12楼的内容进行了编辑,增加了一些内容,对因此而引起的不便致歉!
刚才进行了简单试用。在使用 “vthzmk 你好” 后,出现了界面信息,其后确实显示了所占用的扩展ASCII字符,但是此时它们的字模并未更改;运行生成的vthz.com后,原字符显示为“你好”;再 type 生成的 vthz.txt ,除了显示“你好”以外,其后尚有一串未更改字模的扩展ASCII字符;查看 vthz.txt 发现其大小为 128 字节。
对改进方向2我再做补充,它一般应用于批处理(或者可能的CONFIG中),在编写这个批处理时,我们可能会使用类似 “vthzmk /display:你好” 或者 “type menu.txt | vthzmk /display” 或者 “vthzmk /display < menu.txt”的用法,然后在运行这个批处理时是无汉字系统支持的,此时它应该类似于 echo 或 type 一样在屏幕上输出命令行参数或者字符管道中的文字。也就是说,vthzmk 可能需要增加一个参数,将命令行中参数或者字符管道中的的GB码文字直接以汉字形式显示于屏幕上,它能自动完成提取字模、载入到被占用字符、显示占用后字符这三项功能,而不会显示软件版本和帮助信息,不生成 vthz.com 和 vthz.txt,并且不会清屏。
关于“字符字模的恢复”,我希望将它作为 vthzmk 和 vthz 的一个功能;所以,在我的构思中,这个程序会有以下参数:
1、d/display:修改字模后直接显示命令行参数或管道中的汉字;
2、m/make:生成字模载入/恢复程序,以及新的显示文本;
3、r/restore:恢复字符的原字模;
4、c/charset:设置将被占用的扩展字符集起始ASCII码(十进制表示),默认为128;
5、f/fontfile:设置字模文件路径,包括文件名,默认为当前路径下的hzk16;
[ Last edited by willsort on 2005-11-5 at 18:53 ]
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-11-5 16:47 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
15 楼』:
Re 本是:
根据你“重新置模式”的提示,我想起以前使用bt.exe时,便是使用mode co80来恢复字模的,所以又进行了一些测试。
1、vthz修改字模后使用mode co80,字模被恢复;
2、vthz修改字模后使用mode co40,字模被恢复,显示模式被更改;
3、mode co40更改模式后使用vthz,字模被更改;
4、mode co40下vthz修改字模后使用mode co40,字模被恢复;
5、mode co40下vthz修改字模后使用mode co80,字模和显示模式均被恢复;
尽管如此,我仍建议保留 /restore 参数,因为 mode co80 并不会保存原本的显示模式。
再提一个改进建议,那是我对4.com就希望加入的功能,即根据中文环境是否存在自动切换汉字显示方式。中文系统识别早已经有了不少比较成熟的方案,只是不知对现在修改过多次的流行中文系统的识别能力怎样。
如果要支持文本文件,那“过滤重复字”就十分必要了。可能需要创建一个字符对照表,无序表大概就可以了,毕竟最多只有256个字符,比较次数不会大于256+256次,效率不会低很多的,代码相对比有序表也要简单很多。
另外,你提到了几个hzk16之外的其他字模信息文件,不知道你的程序是否支持这些文件的字模提取,或者是否可以在短期内作出这项改进?
[ Last edited by willsort on 2005-11-5 at 22:25 ]
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-11-5 20:06 |
|