Board logo

标题: 修改int 10h中断的汉化方法怎么实现? [打印本页]

作者: dafengqixi     时间: 2010-2-5 09:35    标题: 修改int 10h中断的汉化方法怎么实现?

我听说过一类汉化方法,他是修改int 10h的部分功能,使界面为其他语言的程序为中文界面,例如由tvision开发的文本界面,我想问大家这是修改了int 10h的哪一部分功能,怎么实现,请大家不吝赐教
作者: pkuwc     时间: 2010-2-5 13:06
我顶啊,这么值得探讨的问题,为何大牛不说话呢
作者: 本是     时间: 2010-2-5 22:55
查一下INT 10h中断的ax=1000h功能调用接口。只要有它,就能载入字模,然后进行字符显示,不用替换10h号中断。
作者: dafengqixi     时间: 2010-2-8 09:53
我遇到的这种方法是改变了0-16h(包含16h)和20h功能,请问各位是否能够详解一二
作者: pkuwc     时间: 2010-2-8 10:58


  Quote:
Originally posted by 本是 at 2010-2-5 22:55:
查一下INT 10h中断的ax=1000h功能调用接口。只要有它,就能载入字模,然后进行字符显示,不用替换10h号中断。

您说的是int 10h ax=1100h中断调用吧
作者: 本是     时间: 2010-2-8 14:11
正是
; Video display   ah=11h
;  font load bh=points, bl=block
;   cx=qty, dx=1st char code
;   es:bp=ptr to font table
作者: netwinxp     时间: 2010-6-17 21:21
LZ所说的那种采用的是如下技术:
1、进入图形显示模式
2、修改INT 10H的00H功能,使得所有要进入的文本模式实际上是进入图形模式模拟出来的。
3、修改定时中断,定时读取文本模式的显存段数据经查“字典”翻译成汉字后把汉字子模数据填充到图形模式的显存对映处,并模拟文本模式的光标闪烁。

缺点如下:
由于工作原理和实时写屏的汉字平台一样,所以可能会和这类汉字系统冲突。
由于修改了定时中断,所以在需要定时中断来完成数据采集的自控软件有时会由于定时中断重入出现无规律的重启(实时写屏的汉字平台对于自控软件同样有这个严重的问题)。
作者: 本是     时间: 2010-6-19 09:38


  Quote:
Originally posted by netwinxp at 2010-6-17 21:21:
... 缺点如下:
    由于工作原理和实时写屏的汉字平台一样,所以可能会和这类汉字系统冲突。
    由于修改了定时中断,所以在需要定时中断来完成数据采集的自控软件有时会由于定时中断重入出现无规律的重启(实时写屏的汉字平台对于自控软件同样有这个严重的问题)。

关于“冲突”,其实我是不会同时使用两个汉字系统来显示汉字,因而不大会存在这种冲突。
关于“重启”,不修改定时中断int 1ch,而挂在int 28h、int 9、int 16h上,即可;如是刷屏周期问题,在int 8的首部加一通信仲裁判断即可。
关于修改int 10h的00功能,不是关键。关键是修改vga regs,尤其要实现伪字符汉字系统显示,一定要修改VGA的GDC(3ceh)reg的06号索引数据!
作者: netwinxp     时间: 2010-6-26 23:03
由于INT 10H的功能较低(在早期显卡较差的情况下),所以DOS中期英文软件大多采用直接写屏的方式,修改字模方式来汉化不是不好(这在94~96年就有人试用,但没流行起来,其实更早期就有汉字卡使用该技术,比如长城0520所内置的,在该类型机子上只要文本模式输出GB2312-80码就显示中文,它通过修改字模读取和显示电路、附加汉字字模硬件库实现双字节代码的识别和字符点阵<单字节A0以上字符仍然识别为西文制表符,缺点是连续制表符也会识别称汉字>),但存在能同时显示的字数少,而且对西文制表符兼容性存在很大的问题,所以大型软件汉化实用性不是很高。DOS后期则采用专用字库图形界面的就很多了(当然这时期的大多有推出相应的中文版本),总起来讲修改字模法虽然在汉字平台初期就出现,但由于存在诸多限制,反而是越后来越没人使用,就像打印机内置汉字库的做法一样,也是越来越没人用。
说白了修改字模是很早期的技术,但利用它的很少。

[ Last edited by netwinxp on 2010-6-26 at 23:12 ]