![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-06 07:20 |
共 47,812 主题排行 / 349,914 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS启动盘 & LOGO技术 (启动盘室) » [原创][讨论]小試牛刀--啟動菜單中文化(Wengier請進...) |
| 可打印版本 3,122 / 13 |
| 第1楼 Roy | 发表于 2003-05-10 00:00 |
| 管理员 发帖 1,633 积分 4,869 | |
|
[原创][讨论]小試牛刀--啟動菜單中文化(Wengier請進...) |
|
| 第2楼 Dark-Destroy | 发表于 2003-05-10 00:00 |
| 元老会员 发帖 3,551 积分 8,312 | |
|
這個東西是....
|
|
| 第3楼 Roy | 发表于 2003-05-10 00:00 |
| 管理员 发帖 1,633 积分 4,869 | |
|
启动盘
|
|
| 第4楼 如是大师 | 发表于 2003-05-10 00:00 |
| 元老会员 发帖 3,351 积分 9,654 来自 湖北 | |
|
呵呵。。。。。只要Wengier試試.我们可沾不了光了。。。
|
|
| 第5楼 Roy | 发表于 2003-05-10 00:00 |
| 管理员 发帖 1,633 积分 4,869 | |
|
當然不是啦!!
大家都可以試試的 |
|
| 第6楼 LanE | 发表于 2003-05-10 00:00 |
| 银牌会员 发帖 648 积分 1,835 | |
|
呵呵
说下做的原理吧 比如图形,或者是一个小型的中文系统?? |
|
| 第7楼 Roy | 发表于 2003-05-10 00:00 |
| 管理员 发帖 1,633 积分 4,869 | |
|
只是改動了ascii字形罷了,用我上傳的那個叫"BT"的程序做的
|
|
| 第8楼 Lydong | 发表于 2003-05-11 00:00 |
| 元老会员 发帖 407 积分 1,468 来自 广州 | |
|
我来发一个BT的使用说明吧.
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ BatTool3.2帮助信息  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一.前言 由于批处理短小、编写速度快、不占内存等优点,我们经常用它编写软件安装程序。 但是批处理毕竟不是真正的程序,虽然通过一些技巧使批处理有了“条件分支语句”、 “变量”等程序概念(见附录),在输出输入方面无法通过技巧补足,尤其是色彩与键盘 输入(低版DOS上没有choice程序)。以前曾经有一些批处理增强程序,但他们通常都 占很大的磁盘空间,如NORTON工具集中的BE长达20K,BATCHMAN也有6K,软盘空间那么少, 我们的Money又不多,能省一点算一点嘛;最重要的是这些批处理增强程序都占内存,在 兼容性等方面都很麻烦。在批处理中通常只能显示英文提示,若在英文文本方式下(我们 不可能要求每个使用者都有相同的中文系统)显示中文只能自带中文系统或者把要显示的 文字用GWS、TTE等软件转换成.EXE的图形,无论用任何一种方法都要占用大量磁盘 空间,限制也很多,而这是放在软盘上的安装程序所不容许的。 本软件正是为此而设计的。批处理增强程序BTE有13种功能,长度不到半K!要知道 DOS下软盘的最小存储单位是扇区- 512字节(半K),因此我敢打赌没有比它占空间再小的 程序了。BT生成的汉字及图形显示程序也超不过3K,而且它们都不占内存!以前几版的BT 我就不多介绍了。 本软件在显示显示汉字方面只支持VGA兼容卡,英文文本方式,BTE部分功能可支 持老式的显示器(如CGA)。为使本软件使用任何内码的繁简汉字,本软件不带字库,在生 成显示汉字的程序时使用当前的汉字系统的字库,因此你在使用BT.EXE的生成汉字显示程 序功能时要先进入中文系统,但用其它功能时不用中文系统甚至不能用中文系统。中文系 统必须支持VGA模式12h,最好能直接写屏。SPDOS对光标等的处理不好,而且兼容性较差 (也许是我用的是盗版的原因)。推荐使用UCDOS,天汇,倚天系统。 本软件包括下列文件: BT\ BT.EXE BTE.COM BT\S1\ SAM.BAT SAM1.COM SAM2.COM SAM1.LST SAM2.LST BTE.COM BT\S2\ SAM.BAT SAMP.COM BTE.COM BT\S3\ SAM.BAT CAL.BAS CAL_hz.com cal.exe BT\S4\ MUSIC.BAT BTE.COM MUS1.COM MUS2.COM MUS3.COM MUS4.COM 二.批处理增强程序BTE 在本帮助信息中,大写英文字母为你要照原样输入的,小写字母代表一个十进制数字, BTE只能接受五位以下十进制数,数字间用非数字字符间隔。如:数字 123456 7!8 表示12345、7、8三个数。一般我用空格做间隔符。 此程序用汇编语言编成,代码紧凑、速度快,12种功能只用不到500字节,程序主 要用调用中断的方法编程,因此兼容性也较强。 1.设当前光标位置:BTE L row col row是行号(0-24),col是列号(0-79) 用此功能可设置当前光标位置,也就是下一个字符写到屏幕的位置。如: BTE L 0 0 将把光标移至屏幕左上角。 2.改变光标大小:BTE S start stop start是起始行,stop是结束行,范围都是0到7。如: BTE S 0 4 将把光标变为半个方块。 3.开/关光标 用BTE S 64把光标关闭,用BTE S 7 7恢复普通的光标。 4.设置显示模式:BTE M mode mode是十进制的模式号。注意是十进制!如通常我们说的模式12是十六进制数,你必须打 BTE M 18 才成(18是12h的十进制数)。 5.恢复正常显示方式:BTE M 当功能4省略mode参数时BTE恢复正常文本状态,恢复配色、边界色、闪烁模式(见下 文)。当一些游戏退出后并没有恢复正常的显示模式时就可用此功能恢复。 6.演奏音乐:BTE V code long (code long ......) code是音符的频率值,并非实际的频率,是用一个公式算出来的。code与发出声音的高 低成反比,就是说code越大,声音越低沉。为了方便的把音乐乐谱换算成code值,在B T程序的帮助部分(用 BT/?) 有一项“ Music code & calculator”,用它可查出C调 的各音符对应code值,把此值每除以一次2升一个八度,乘以2则降一个八度。注意当 code小于70左右时人耳就听不清了;当code为0时code=65536;code为1时相当于休止符。 long是演奏长度,单位是0.6秒。如: BTE V 1141 36 1208 36 1356 36 使PC喇叭奏出“i 7 6”三个音符,每个音符长度是36/0.6=6秒。 7.延时:BTE V 1 long 实际上是演奏休止符,long是单位是0.6秒的延时长度。 本软件采用AT实时时钟,非常准确,不过你要考虑软盘的读取速度的影响! 延时时不能中止,因此若long太大就象死机似的。 8.设边框色:BTE B color color是彩色值(0-63),在BT程序的帮助部分(BT/?)有一项“Palette color”功能, 只要按加减键即可调整边界色,屏幕上“Border”后即是color的值。 9.配色:BTE P attrib color 在VGA的字符模式下,每个字符可用16种前景色(字符色)和背景色(底色),实际上这里 所说的“色”是指的字符属性(伪彩色),你可把一种属性设为64种“真”彩色中的一种。 换句话说,此显示模式可显示64种颜色,但只有16种颜色可以同时显示在屏幕上。 attrib是属性(0-15),color是真正的彩色(0-63)。在BT程序的帮助部分(BT/?)的 “Palette color”功能中,最上面的一行十六个彩色块代表16种属性当前的颜色;而 “真”彩色的color值代表的颜色与边界色相同。 如:在DOS下的黑底白字是前景属性是7背景属性0,你输入 BTE P 7 62 屏幕上的所有白色(不是亮白色)就都变为黄色了。可用BTE M恢复原样。 10.禁止闪烁:BTE F 在字符模式下,有两种显示色彩的方式: 允许闪烁字符方式,有8种背景色;禁止闪烁方式,有16种背景色。默认方式是允许闪烁 方式,可显示彩色文字是都希望多一点颜色、不要闪烁,那你就打: BTE F 闪烁的字符就不闪了,而且底色变成了高亮度色,比如红色变成亮红色。你可用BTE M恢 复闪烁方式。 11.改字符色:BTE C start long attrib 这个功能是用来改变屏幕上一些字符的颜色和背景色。在80X25的字符模式中,每个字符 有16种前景色和背景色(在闪烁方式下有8种背景色-见上),这被表示成16X16=256种属 性代码,在BT程序的帮助部分(BT/?)的“Palette color”功能可帮助你算出这个属性 代码:第一行彩色块是前景色,第二行是背景色,下面一项可选择普通字符还是闪烁(高 亮)字符,再下面是这种颜色的示例和对应的属性码;这些都用光标键选择。 start是要改的第一个字符的位置代码:start值=行X80+列,其中行为0-24,列为 0-79;long是一共改多少个字符的颜色(0是最大的值);attrib就是属性码。如: BTE C 80 10 26 将把从第二行第一个字后的10个字符改成蓝底亮绿字。 12.等待字符输入:BTE K 此功能先清除键盘缓冲区,然后等待使用者按一个键并且把它显示到当前光标位置上, 并返回在批处理中用的ERRORLEVEL值,可用IF ERRORLEVEL 判断那一个键。与类似的程 序不同的是:BTE可接收功能键(如光标键)并返回ERRORLEVEL码。在BT程序的帮助部分 (BT/?)有一项“Keyboard's ERRORLEVEL code”可帮你查出键盘对映的ERRORLEVEL码。 注意IF ERRORLEVEL code ... 表示当ERRORLEVEL>=code时执行后面命令,只有用 IF ERRORLEVEL code IF NOT ERRORLEVEL code ... 才表示ERRORLEVEL=code时执行。 若不想显示按的那个字符可用:BTE K>NUL 13.立即字符输入:BTE I 此功能检查是否按了键,若没按键返回ERRORLEVEL=0;若按了,返回的ERRORLEVEL值与 功能12相同。在动画中可插用此功能检查是否按键。 三.辅助程序BT.EXE 格式:BT filename (内的可用可不用) 此程序有两大功能:生成可使文本模式下显示图形/汉字的程序;各种帮助功能。 在DOS下输入 BT/H 或 BT/? 可进入帮助功能,第一项第二项不用多说;第三项可查出BTE 返回的键盘ERRORLEVEL码;第四项是查扩展ASCII码;第五项是计算BTE的颜色设置码;第 六项是一个整数计算器,下面有一个音符对照表,可帮你算出BTE所用的音符码;最后一 项帮你算出BTE所能使用的BMP图形最大尺寸,你输入图形的一边边长,BT告诉你它所能 接受的另一边最大边长,详见下文。 下面介绍怎样在英文状态下显示汉字或图形,这也是本软件所创新的地方。 在英文文本方式下显示汉字或图形的原理是:VGA03模式的字符是8*16点阵英文字 符,通过BT生成的字库程序修改ASCII码128 ̄255的字符字模,把原来的英文符号改为 汉字。因汉字是16*16点阵,两个字符合成一个汉字。这样,就可以显示64个汉字了(128 个字符),虽然少了点,但在批处理中已足够了,而且不占内存!BT可以帮你生成一个 可修改字符字模的COM文件,只要一运行它就把英文符号修改成汉字或图形。 VGA03模式的扫描分辨率为720X400,而显示字符分辨率为80X25,这样每个字符 实际是9X16点阵的,但用8X16点阵的字库,一般字符的第9竖行为空白,对于ASC值192到 224的英文制表符第9竖行与第8竖行相同,这是为表格是连续的而不是一段段的。我们把 从ASC192开始的字形改成每个汉字的第一个字符,从ASC128开始的字形改成每个汉字的 第二个字符这样就组成了一个汉字,且每个汉字之间有一行相隔(第二字节的第9竖行)。 注意当字符的ASC值超过224就不是制表符了,因此你输入的字数超过32个时,每个汉字中 间会有一个竖道。BT将从屏幕上直接读取汉字字形(这是为了兼容倚天之类的中文系统), 因此你应先进入中文系统再用BT生成修改字形的.COM文件。你可用BTE M 恢复原来的字 符字形。 具体方法:先进入支持VGA模式12(640*480*16)的中文系统,如UCDOS,ETIN等 输入 BT 文件名,文件名即最后生成的.COM文件文件名.如果当前目录下有相同文件名的文 件存在,则程序会问你是否覆盖.然后屏幕提示你输入第一个汉字(事实上英文、字符都 可),在输完后会提示你输入第二个汉字(必须一个字一个字地分别输),同时在屏幕左 上角显示上一次输的汉字,下面显示曾经输过的字。当你输完了在批处理中要用的所有 汉字后,你可以按回车键结束。这时屏幕上会显示生成的文件名和每个汉字的ASC码。 最多容许你输入64个汉字。 例:我想要显示“再见”两个字 先进入中文系统,输入 BT BYE(回车) 屏幕显示: Enter No.1 word(Enter to end) 我输入汉字“再”回车, 屏幕显示: 再 Enter No.1 word(Enter to end) 再输入汉字“见”回车,再按一下回车结束输入 屏幕显示: File name: BYE.COM 192:128 再 193:129 见 (千万一定要)退出中文系统,返回DOS下,然后按着Alt键不动,按数字键盘上的1、9、 2,稍懂一点常识的朋友都知道这是输入ASCII字符符号的方法,依此法输入Alt-128, Alt-193,Alt-129,屏幕上就会显示四个莫明其妙的字符;按一下回车键,再输入 BYE(回车)这时你会看到那四个字符一下变成了“再见”。看一下这个文件的长度,只 有99字节! 怎样显示图形呢?首先进入WINDOWS中的“画笔”,把图像属性设为黑白,尺寸越小 越好(BT/H的Picture Max. size功能可帮你算出当宽度为某值时最大高度是多少),然后 你就可随心所欲的画一幅画,保存为BMP单色文件,在调入BT时加上/P:picture,picture 就是那个BMP文件的文件名(包括扩展名),BT会把这幅画分成许多16X16的小画,每个小画 相当于一个汉字,占两个字节。如果这幅画所占位置不到64个汉字,你可用剩下的位置存 汉字,这时屏幕上提示的No.数值包括了画所占位置。 前面说过,BT的默认方式是第二字节为从128开始的非制表符,这使每两个汉字之间 有一条竖线分开,但在显示图形时,图形有一条条竖线不好看,因此你可以在运行BT时加 上/F开关,这样生成的.COM程序从大于ASC192的制表符开始顺序修改字形,也就是每个汉 字的第一、二字符都是没有分隔线的制表符,这样显示出的汉字就完整了;不过在这种方 式下最多只能显示32个汉字(每个汉字相当于一幅16X16的小画),而且多于16个时每个字 符间都会有一条竖线。 用ALT+数字键的方法太麻烦了,如果你在运行BT时加上/L:listfile (listfile是任 意的文件名),BT会输出一个列表文件,你可以用dos中的EDIT编辑它,其中picture data 后是图象的asc码,Asc string后是汉字的asc码,你可以用块操作把它们移进剪切板,再 插入你的批处理中。 例如:我想显示一只猪,并加注释 先进入WINDOWS,运行画笔程序,选设置中的“图像属性”,在“单色”和“像素”前的 圈上各点一下,输入宽度64,高度32,再选“确定”。然后用鼠标画一只小猪,存盘为 PIG.BMP。退出WINDOWS(BT可能不能在WINDOWS下正常运行) 再进入中文系统,输入 BT PIG /P IG.BMP /F /L IG.LST屏幕上会闪一下那幅画,然后就可以输入汉字了,方法于上个例子相同。 退出BT后,退出中文系统,输入 PIG(回车) EDIT PIG.LST(回车) 因为PIG.COM修改了制表符的字形,EDIT的边框会变花。这时你能看到你画的猪和输的汉 字了。在Word data后是汉字的内码,因此你看到的是一些怪字符。 用键盘输入太麻烦了,又不能修改,你可以建立一个输入文件,一个汉字一行,若要输 入图形就在第一行加上/P:picfilename,进入BT时加上 /I:inputfile 参数. 如果你忘了.com文件中包括的汉字,可以用BT/H的ASCII Character Codes功能查出 在实用时你只需把.com的改字形文件和BTE.COM文件拷入软盘即可 四.示例程序 本软件附带两个示例程序这个批处理中有一些中文注释。 S1目录中是一个安装程序的批处理,不过把所有磁盘操作命令行前都加了REM使之不 能执行拷贝,因此你可以放心的执行SAM.BAT。目录中的两个.lst文件是SAM1.COM, SAM2.COM的列表文件。 S2目录中的SAM.BAT是一个不实用的批处理,它示范怎样用BT做菜单式批处理。 S3目录是一个用qbasic编的万年历程序 S4目录是演奏音乐的例子 通过这几个例子,你可以看出本软件的功能是多丰富,而占磁盘空间只有几k。 五.结束语 本软件除用于增强批处理外还可帮你编程,象CPAV,NU8,MSAV,PCSHELL...等许多著名 的软件都是用修改英文符号字形的方法美化程序界面的,不信你在MSAV中按Ctrl键叫出 GB4,屏幕上的窗口会变成制表符;在中文系统中运行MSAV,效果与运行SAM.BAT相同(有 可能死机)。象英汉通、朗道之类的电脑词典显示汉字的方法与本软件相同。本软件可使 你方便的使用这一编程技巧。你可以直接调用.COM修改字形程序,也可修改相应地址后 “镶”在你的程序中(这需要懂一些汇编知识)。我曾经用它把我解密的kill汉化,但因版 权问题恕我不能公布于众。你不妨想想BT还可以用来干什么事。 _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ _____________________________________________________________________________ 本软件是PD(公益)软件,你可以随便拷给你的朋友;虽然一般PD软件禁止商业应用, 不过你若拿它卖钱我也不会干涉,因为它本来就是用来编安装程序的。 BT的第一版是1995.7完成的(当时名叫TXTBAT),第二版是8月做的,2.5版是9月编的 3.0版与前几版有较大区别:BTE代替了SETSCR,增加了图形功能等,曾在《大众软件》 96年第二期上刊登。3.1版加上了文件输入。3.2版改善兼容性。 最后,我希望Compute fan们多编些PD软件,你若有什么好公益共享软件最好也给我 拷一份。 BT3.2, Copyleft 1995.7 - 1996.3 王海程 96年3月 北京  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 附录:批处理使用技巧 这是一些我的一些经验和一些要注意的地方。 注意批处理程序只能在同一盘中运行,换软盘会出现错误。你可用下法解决: ~~~~~~~~~~~~ 在install.bat中: C: MD\TEMP CD\TEMP COPY %1\*.* INSTALL1 %1 %2 ~~~~~~~~~~~~~ 其中install1.bat 是真正的安装程序,在硬盘中执行 “条件分支”“语句”IF ERRORLEVEL number 的执行条件是ERRORLOVEL>=number, 但是一般我们希望当ERRORLOVEL=number时转向,可用 IF ERRORLEVEL number IF NOT ERRORLEVEL number+1 .... 来解决。每条IF命令后只能执行一个DOS命令,为使它执行一段命令,可在后面加上 GOTO命令,不要忘了GOTO命令后跟的行号是冒号在前,这与普通的程序语言相反。 “环境变量”在大家的心目中一般只有“环境”的作用,象PATH环境、TEMP环境等, 而“变量”的作用却很少使用。在IF命令中 IF string1==string2 的用法也只用于 IF %1!==string! ... 中,其实还可以有 IF %环境变量%!==string! ... 的用法。你 也许在一些杂志上介绍如何编写菜单式CONFIG时见到AUTOEXEC.BAT的前几行有一行是 GOTO %CONFIG% ,你有没有想过用到IF命令之中呢?这在SAM.BAT中体现出来。 CONFIG中也可用SET命令设置环境变量,用它可以大大简化菜单式CONFIG的编写。如: ^^^^^^^^^^ CONFIG.SYS 中: .... MENUTIEM=CD,USE CD-ROM MENUTIEM=NCD,NO CD-ROM MENUCOLOR=14,7 DEVICE=HIMEM.SYS /MEMTEST:OFF ..... INCLUDE NCD DEVICE=C:\CDROM\CDDRIVE.SYS SET CD=ON ..... ~~~~~~~~~ AUTOEXEC.BAT中: @ECHO OFF ... IF %CD%!==ON! C:\DOS\MSCDEX.EXE /L /...... .... ~~~~~~~~~ 注意在字符串与环境变量后都应跟一个字符(上例中是“ !”) 这是为了防止变量是空字符而发生“语法错误”. The End |
|
| 第9楼 Wengier | 发表于 2003-05-11 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
好的,我看看。
|
|
| 第10楼 Wengier | 发表于 2003-05-11 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
看来BOOTCON+BT+WRAPP86三者联用真的是很实用呢!看来是Roy首创的方法吧。
另外请问一下,如何让CONFIG.SYS中自带的那个DOS启动菜单显示汉字呢?好像不行吧? |
|
| 第11楼 Roy | 发表于 2003-05-11 00:00 |
| 管理员 发帖 1,633 积分 4,869 | |
|
不行啊......
|
|
| 第12楼 Roy | 发表于 2003-05-11 00:00 |
| 管理员 发帖 1,633 积分 4,869 | |
|
其實我初時用WRAPP86.SYS來啟動中文系統的,可是中文系統是啟動了但是就到了系統出問題.
所以我才用BT |
|
| 第13楼 华龙 | 发表于 2003-05-11 00:00 |
| 初级用户 发帖 10 积分 127 | |
|
BT以前就有了,不过是不是麻烦了点,有没有更好的方法可以实现菜单的中文化?
|
|
| 第14楼 Lydong | 发表于 2003-05-12 00:00 |
| 元老会员 发帖 407 积分 1,468 来自 广州 | |
|
目前只能用BT了, 别的可能还没办法!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |