Board logo

标题: 关于"无需中文平台"的中文DOS软件的疑问? [打印本页]

作者: 雨露     时间: 2008-11-20 10:22    标题: 关于"无需中文平台"的中文DOS软件的疑问?

一般的DOS软件汉化版都需要在中文DOS平台下才能正常运行或显示中文,但有些DOS软件如DiskGen就不需要,为何?
有人说运用了图形化的汉字,我试着将最新版的DOS下的Disk Genius V2.00.0230主程序脱壳,再用editer提取字符,发现跟一般的DOS软件没什么两样,主要菜单也是简体中文句子或短语或词组,将中文译成英文后写回原软件,就变成英文软件了,可以正常运行,当然中文是非常简练的语言,中文软件英文化比英文软件汉化要困难许多!
作者: 本是     时间: 2008-11-20 10:45
不管采用什么方法,也不论是在图形方式还是字符方式,要显示汉字字形必须要调用汉字字模,如果没有把字模存储在显示卡等硬件中,就不得不自己调用预先存储在内存或外存(如硬盘文件、硬盘固定扇区)上的字模。

主程序中“没有异样”,要看它有无调用覆盖模块,甚至可能在表面上看来是数据文件的假货之中。

——因为电脑不是人脑——它不会闹鬼吧!^_^好怕怕哦!!
作者: sanchuan     时间: 2008-11-29 01:12
DOS环境下的中文平台要解决的是汉字信息的输入和输出的全部。而汉化版的DOS软件,主要解决的是屏幕输出,与中文平台相比,程序结构相当简捷。其二,GB码有7000多,而一级汉字只有3千多。在3千多一级汉字中,常用的也就一千多。在一个汉化软件中——特别是DOS软件,不重复汉字至多二百个左右,其字模也就7K左右。与中文平台下的字模数据现比,也只是个零头。
作者: 雨露     时间: 2008-11-29 08:02
如果只是要求显示出一个汉化的DOS软件中文界面,这个中文平台应该是很少的,有少于200K且没有LOGO的吗?袖珍龙就算了,兼容性差,显示的字不太好看!
作者: wang6610     时间: 2008-11-29 10:29


  Quote:
Originally posted by 雨露 at 2008-11-29 08:02 AM:
如果只是要求显示出一个汉化的DOS软件中文界面,这个中文平台应该是很少的,有少于200K且没有LOGO的吗?袖珍龙就算了,兼容性差,显示的字不太好看!

如能制作出 能根据软件中的汉字(哪怕是人工提取)定制字库的中文平台就好了。

输入法可选。

[ Last edited by wang6610 on 2008-11-29 at 10:31 ]
作者: sanchuan     时间: 2008-11-29 10:41
兼容性好、少于200K的中文平台,肯定是没有的——GB汉字库就不可能少于200K。楼主提出的问题,应该是解决汉字显示驱动的问题吧?若是如此,至今只有本是先生在解决这个问题——唯一的能够在Config中加载的汉字驱动程序。
顺便加一句,希望本是先生今后的作品通用性广泛、兼容性好、接口或参数简捷。
作者: 本是     时间: 2008-11-29 15:53


  Quote:
Originally posted by wang6610 at 2008-11-29 10:29:
如能制作出 能根据软件中的汉字(哪怕是人工提取)定制字库的中文平台就好了。
输入法可选。
[ Last edited by wang6610 on 2008-11-29 at 10:31 ]

“定制字库的中文平台”早就有了,YAYA精简4.0版的ACIOS.exe,只是不支持输入,(其它版本是支持的,但不是定制字库的。)

最小的汉字系统 占内存16k   
http://www.cn-dos.net/forum/viewthread.php?tid=21760&fpage=2
『第 72 楼』:  acios精简4.0版本
加载由本是的MKfon.com(http://www.cn-dos.net/forum/atta ... fce0&download=1)生成的*.fon汉字字库。字库可容纳256个不重复的汉字。acios.exe仅占6k,加载后占内存12176字节。
附件 1:  Acios精简4.rar (2007-1-25 06:02, 6.8 K) http://www.cn-dos.net/forum/atta ... 9c06&download=1
作者: 雨露     时间: 2008-11-29 16:19
SPFDisk軟體內建系統所顯示的中文字(國喬),不知是如何做到的?
作者: 本是     时间: 2008-11-29 16:32
这就是图形汉字了,象CL、CREAD、STC、TTE、VTTE、TM等有很多,都是内建小汉字库及其索引然后显示图形汉字,我自己就曾经扩展过甘宝才和吴晓军的版本,可以显示纵横扩大、旋转、下划线等,现在没有人需要了。
作者: 雨露     时间: 2008-11-29 16:34
如果方便的话,大师可以提供一下呀,这种资料太少了!
作者: 雨露     时间: 2008-11-29 16:41
快下班了,最后还想请教一下大师,偶在汉化一些软件时,比如汉化freedos1.0的命令解析程序command.com时,发现它的开机时出现的版权信息用editor2提取不到,(s:3)猜测是加密了,提取出时变成乱码,所以找不到,对吗?
作者: wang6610     时间: 2008-11-29 17:03
谢谢 本是.
作者: 本是     时间: 2008-11-29 17:17


  Quote:
Originally posted by 雨露 at 2008-11-29 16:41:
快下班了,最后还想请教一下大师,偶在汉化一些软件时,比如汉化freedos1.0的命令解析程序command.com时,发现它的开机时出现的版权信息用editor2提取不到,(s:3)猜测是加密了,提取出时变成乱码,所以找不到,对吗?

应该是。
作者: 本是     时间: 2008-11-29 17:19


  Quote:
Originally posted by 雨露 at 2008-11-29 16:34:
如果方便的话,大师可以提供一下呀,这种资料太少了!

如果真的有人需要,我可以考虑放上来。但时间久远,需要整理一下。
作者: xugaohui     时间: 2008-11-29 17:32
本是:
也有人用与vt系统软件相同的技术来显示中文。
http://bbs.wuyou.com/viewthread. ... page%3D1&page=1
这个东西非常好。
目前的vt工具主要是用于config菜单和批处理中。如果想在Qbasic中使用相同的技术可以行吗?能搞一个bas示例程序就好了。
执行生成后的显示中文程序,在运行其它有acsii制表符的程序会显示会乱码或半个汉字。

雨露:
freedos的command.com汉化后也只能在freedos下运行。直接替换msdos 7.1的command.com后就不能用了。
作者: 本是     时间: 2008-11-30 22:07


  Quote:
Originally posted by xugaohui at 2008-11-29 17:32:
本是:
也有人用与vt系统软件相同的技术来显示中文。
http://bbs.wuyou.com/viewthread. ... page%3D1&page=1
这个东西非常好。
目前的 ...

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

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

附件是我用FirstBasic编的范例(源程序及.EXE),其它BASIC应该类似。
附件 1: BASVTFNT.RAR (2008-11-30 22:07, 20.57 K, 下载附件所需积分 1点 ,下载次数: 24)

作者: xugaohui     时间: 2008-11-30 23:04
谢谢本是。运行之后可以显示中文了,我学习下。
不了解First basic,用google搜索一下。
在这里发现了:
http://www.cn-dos.net/forum/view ... ge=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 ]
作者: julon     时间: 2008-12-1 07:30
我用qboot工具启动,应该是加载了vtm,为什么用英文edit编辑有中文的文件,不能正常显示中文呢?中英文双语版的软件也不能正常显示中文。谢谢!
作者: 本是     时间: 2008-12-1 08:17
单字节编码、双字节编码。如果知道两者的差别,就容易理解VtMagiK的所谓新、旧汉字内码了。也就能明白汉字系统制表符智能识别的来源了。也能明白VT技术使用后,软件制表符混乱了。
作者: 雨露     时间: 2008-12-1 10:37


  Quote:
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,照样正常运行!并不是专用的!
作者: xugaohui     时间: 2008-12-1 11:28
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 ]
作者: 雨露     时间: 2008-12-1 11:54
肯定是有区别的,但跟汉化不汉化没有关系的吧!?
作者: xugaohui     时间: 2009-1-2 14:05
回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 ]
作者: 本是     时间: 2009-1-2 23:33
下面的程序是用系统默认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 ]
作者: xugaohui     时间: 2009-1-3 00:03
看不懂汇编,先收藏了。谢谢本是。

作者: 本是     时间: 2009-1-3 00:31
“请问要实现每次运行都是开始显示乱码,按任意键后显示中文,又不会清除屏幕上以前显示的内容,也不会影响到其它有扩展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 ]
作者: xugaohui     时间: 2009-1-4 00:58
在vbdos中试了,很好,很实用。再次感谢本是。
作者: fjb007     时间: 2009-4-16 12:17
下载,才发现下不了,大概是没有积分吧