栈查询、修改法——一种修改、扩展系统的新方法

文档序号:6597214阅读:187来源:国知局
专利名称:栈查询、修改法——一种修改、扩展系统的新方法
技术领域
本发明属于电子计算机软件技术领域。
随着计算机的普及和应用水平的提高,人们自然地提出如下之类的愿望。
愿望一BASIC程序运行时的错误信息,若是用中文表示,查错就方便了。
愿望二这本程序中的不少命令,我都记不清了。若命令是用中文表示的,看完这本程序,则会快得多。
愿望三苹果机的汉字内码,要是和IBMPC机的汉字内码一样,那就好了。等等。
上述之类愿望,大致可以分为二类。一类是,希望计算机的文字表达能力更强些,人机对话时更方便些,这是普及的需要,是对计算机系统都予期望的,是世界性的。另一类希望是对一些低档微机而言的,是为了进一步挖掘这类微机的潜力和提高这类微机的功能,开拓这类微机的应用新前景。
人们公知,上述愿望并非要求重新设计那些微机的系统程序,而是希望在不损害原系统的优势和应用基础的前提下,对原系统进行功能修改或功能扩充,从而实现期望功能。在已有技术中,利用输入、输出拦截的方法实现系统功能扩充的例子是很多的。如,DOS系统是在BASIC系统基础上扩充的,中文DOS系统又是在西文DOS系统基础上扩充的。但在已知技术中,都未突破以下一些原则未能对固化系统执行功能修改。
未能改变原系统的程序流程。
未能完成与原系统语法中有冲突的功能实现。
从检索文件看,还未发现有突破上述原则的先例。
要实现前面几例愿望,则必须突破这些原则。实现那些愿望,是本发明的目的。
本发明应用了栈概念,故将其检索资料抄录在下。
stack栈,堆栈,栈式存储器。
(1)一个特定的存储区。它的一端是固定的,另一端是浮动的,对这个存储区,所有的信息存入和取出都只能在浮动的一端进行,并且符合后进先出的原则。栈也称为堆栈或堆阵。栈的概念在编译技术中被广泛应用。
(2)起缓冲作用的一组寄存器。例如先行取数栈、后行送数栈。
《英汉计算机辞典》中国电子学会电子计算机学会编84年3月第一版第896页在其它检索文件中,栈的概念与上述是一致的,且都强调了“信息的存入和取出都只能在浮动的一端进行,并且符合后进先出的原则”。
事实是,对一个系统运行时的栈,它还是一张能反映程序流程的信息表,这张信息表,即记录了某一时刻之前的程序流程的重要信息,也规定了该时刻之后的程序流程的重要去向。
另一事实是,几乎是所有系统计算机,都具有足够的手段,能对栈内的任一地址进行操作。
上述事实是人们公知的,但由于受到栈的概念的约束,人们忽视了栈内信息对分析系统运行状态的重要性,未能充分利用修改栈内信息可以改变程序流程去向这一宝贵特性。
本发明的特点是,通过对系统运行时的栈内信息查询,把握住系统的动态,在结合原系统特点的基础上,对栈内信息进行修改,改变系统的程序流向,从而实现对原系统进行功能修改,或扩展原系统功能。
本发明实施于一处,是件不复杂的事。若实施于一个系统,并使之获得明显新功能,则是一件较复杂的事,且须多处甚至是多层次地施用本发明。为了进一步阐述本发明,下面举三个实施例。
实施例一实施例一的目标将苹果及其兼容机、中华学习机(后称苹果类微机或这类微机)系统,改造成这样的中文系统,其汉字内码与IBMPC机的汉字内码一致,且在具有中文表达能力的同时,仍具有英文小写字母的表达能力。
实施例一的背景这类微机的已有中文系统,是以占用原系统用于表达英文小写字母的码区,作为汉字内码区。由此,在具有中文表达能力时,失去了英文小写字母的表达能力,其汉字内码为二至六字节不等长码,或为四字节等长码,与二字节内码相比,多耗去内、外存空间。
实施例一的效果可充分利用这类微机的资源,为这类微机与IBMPC及更高档微机直接进行中文数据通讯开拓了前景。节省了中文信息内存消耗,提高了该类微机的中文信息处理能力。提高了这类微机的文字表达能力,使之与IBMPC机的文字表达能力相同。可节省这类微机用户的大量外存器材。可提高这类微机的培训资源、效益。
实施例一的方案综述利用输入、输出拦截,在已有字形器(汉卡)基本功能支持下,在拦截程序中,增设本发明的实施程序段。当然,输入、输出程序在某些处理细节上,与已有技术相比,要作一些配套性的修改。实施例一的目标与BASIC解释系统的语法规定有如下冲突原系统规定的保留字的内码高位为1,目标所期望的汉字内码亦如此。本实施例的实施方案的核心,是如何协调好这种冲突,使系统即不失去原系统规定的保留字的接收和识别,又能正确地接收和认识二字节内码式的汉字信息。以下叙述的实施细则一、实施细则二、实施细则三,是实施例一采用本发明的有代表性的实施方案详细描述,其它的处理细节与此类似。
实施细则一实施细则一的目标将含有二字节内码汉字信息的一行程序,存入程序区。
实施细则一的方案描述在输出拦截程序中,审查当前输出字符是否为提示符。若是,进行下面处理。依据系统处于等待键入一行时,先输出提示符,其值存0033地址。
查询栈区,从上浮端向下查,在一定的范围内,若查到有其值为32、D5的二连续地址时,可判定当前为等待键入一行的状态,且对这二地址进行修改,使之指向增设程序一的入口地址。请注意6502子程序返回指令的特点,其值应是实际入口地址减1。依据系统是在D530处调用监控的“取得一行输入”子程序,故栈内必有对应的子程序返出地址信息。由于拦截程序的栈使用情况有可能不同,但对一确定情况而言,栈的上浮端与所查地址有确定的相对值,故查找范围可定义。
因栈值已改,系统执行完“取得一输入行”子程序后,即跳至增设程序一。
增设程序一的功能是,作些简单配套处理,跳过固化系统中执行对输入行内容高位进行屏蔽的程序段,定义与原系统一致的现场值,用子程序返出指令,将控制权交回原系统。
经过上述处理,系统能完成实施细则一的目标。
实施细则一的配套处理说明①立即执行方式且含有文件名的命令,仅经上述处理还不能正常运行。②要实施上述目标,输入拦截程序中,应对接收到回车换行符号后,分析当前输入行是否为立即方式且含有磁盘文件名的命令,若是,应将存在暂存区的文件名字符的高位置1,否则,系统会认为文件名错。③输入程序能将英文字母、数字符号码值高位为0的方式存入键盘输入暂存区,汉字是以二字节高位为1的期望值存入暂存区。
实施细则二实施细则二的目标正确执行-PRINT程序行。
实施细则二的方案描述查询栈区,在一定范围内,若查有其值为D1、DA的二连续字节,则认为当前是PRINT状态。
检查当前输出字符所对应的行内位置的字节高位是否为1,若是,认为是汉字输出,否则,是英文字母、数字符号输出。
汉字输出的处理方式是,取二个连续字节作一汉字定义符,输出一个汉字,出口时×寄存器值减1,Y寄存器值加1,目的是跳过汉字内码第二字节,输出字符的计数正确。
当前行首地址存005E、005F,Y寄存器值为变址量,可对当前行查询。
上述处理依据,参见DACF、DB49等所属程序段。
实施细则三实施细则三的目标正确印出程序清单实施细则三的方案描述输出拦截程序对当前输出字符为空格时进行审查。
查询栈区,在一定范围内查有其值为54、D7二连续字节时,认为当前空格符是系统输出保留字正文之前按规定送出的空格符。
检查当前行对应位置是否为二个连续高位为1的字节,若不是,不处理,若是,再作下面分析。
若二个连续扩展码是系统二个保留字,不处理,若是汉字内码,作下面处理。原系统有二个连续保留字的情况,如条件语句,但这类情况不多,但须认真区别。
一旦被确定当前输出空格是原系统把一个汉字第一字节内码而误认为是保留字代码而按规定发出的空格,则不应把这个空格再作输出,而应按下面处理修改栈内其值为54、D7两字节,使之为FD、D6;
取当前行对应两字节定义一个汉字,输出一个汉字;
0085地址内容加1;
挡截返出时应将A寄存器的值定义为不作输出处理的字符,如一个无操作控制字符,或自行定义的输出无效字符。
经上述处理,系统原输出一个空格的子程序,改成为事实是输出一个汉字,且跳过原系统印出一个保留字名称字符的程序段。有关详细情况,参见原系统D6FE至D765地址段程序。
应当指出的是,实施细则一、二、三,在实际应用时是可以变通的,它们的描述还兼顾这些代表性①可将控制权引致原系统、拦截程序之外的增设程序。②有些仅须查询栈,并非一定要修改栈。③栈值修改,控制权在原系统跳跃,拦截程序完成一些特定字符的非原义输出。
实施例二实施例二的目标用它种文字印出系统出错信息。
实施例二的效果可帮助不太熟识英文的人们较快识别出错。
实施例二的方案综述系统在输出错误信息正文前,一般都会先印出其约定的符号(如×、?、空格),而且错误的输出一般都集中在错误印出子程序或之类的程序段执行,且是以调用子程序的方式工作的。这就提供了这种机会对输出为约定字符时进行审查,若在栈内查到充分理由而认为当前是输出错误信息时,即以它种文字印出错误含义,修改栈值,使系统跳过原文印出错误的程序段,即可实现目标。下面以苹果机的BASIC错误信息印出作为具体例子,其它系统类似。
实施细则四实施细则四的目标用中文印出苹果机BASIC错误信息。
实施细则四的方案描述输出拦截程序在收到输出“?”号字符时,对栈进行查询。在一定的范围内,若查到其值为1E、D4二连续字节时,可判定当前为错误印出状态。根据系统约定,可判定当前错误类型。印出“?”号后,用中文印出错误含义。修改栈值,使系统跳过原用英文印出错误信息的程序段。详细情况参看原系统D412至D433程序段。
实施例三实施例三的目标用它种文字印出程序清单中的命令名称。
实施例三的效果可供初学者对照学习,可为其它技术领域的专业人员较方便阅读有关程序。
实施例三的实施方案描述方式上与实施细则三的前面部分相近。当判定当前输出空格字符是系统保留字印出前按约定印出的空格时,则在印出空格之后,用它种文字印出保留字含义的文字段,之后,修改栈值,使系统跳过印出原保留字含义的程序段,且注意不损害原系统的运行环境。
由前面本发明的内容叙述及实施例、实施细则的叙述,可以看出,采用本发明施用于系统程序的功能修改或功能扩充时,无须对原系统程序作直接的更动,这一点,对施用于固化系统是至关重要的,也是已有技术不便实现的。特别是,采用本发明施用于系统动态信息它种文字印出时,是很方便的,这对那些价值高的系统普及于全世界是很有意义的,就这点而言,本发明可以称之为一种“万国文字印出术”。
本发明的最好实现方式是,在各类字形器之类的附件中加入本发明方法,对一些多种文字型的输出,最好由控制字控制,原系统的状态最好设为自然状态,这样可以完全维护原系统的应用基础。
权利要求
1.一种计算机软件技术方法,其特征在于通过对系统运行时的栈内信息查询,把握住系统的动态,在结合原系统的基础上,对栈内信息进行修改,改变系统的程序流向,从而实现对原系统进行功能修改,或扩展原系统功能。
2.按权利要求1所述的实施例一,其特征在于把苹果及其兼容机、中华学习机之类的微机系统,改造成这样的中文系统,其汉字内码与IBM PC微机中文系统的汉字内码一致或有规则的变形,在具有中文表达能力的同时,具有英文小写字母表达能力。
3.按权利要求2所述的产品,它包括主机版的更改,或各类附件,如字形器、中文卡、软盘中文系统等。
4.按权利要求1所述的实施例二,其特征在于能用它种文字表示系统的动态信息,如错误信息。
5.按权利要求1所述的实施例三,其特征在于能用它种文字显示或打印出程序中的命令名称或含义。
6.按权利要求4、5所述的产品,它包含系统主机板的更改,或附件,如各类外设卡、外存储器。
7.按权利要求1所述的其它产品。
全文摘要
本发明的特点是,通过对系统运行时的栈内信息查询,把握住系统的动态,在结合原系统的基础上,对栈内信息进行修改,改变系统的程序流向,从而实现对原系统进行功能修改,或扩展系统功能。它可施用于固化系统,也可完成与原系统相冲突的功能实现。苹果及其兼容机、中华学习机的汉字二字节内码,系统动态信息(如错误信息)的它种文字印出,程序中的命令用它种文字印出,是它的几个实施例子。
文档编号G06F9/318GK1042617SQ88107700
公开日1990年5月30日 申请日期1988年11月8日 优先权日1988年11月8日
发明者罗会根, 周伦彬, 胡方, 胡国华, 刘景昌, 邓勇, 罗晓慧, 张仁善 申请人:罗会根
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1