如果采用组合语言写作,能不能在时间上有所改进?我们可以用事实证明,只要受过良好的训练,掌握了所有的技术,而且一切工具准备齐全,用组合语言写作所需要的时间,绝对不会比高阶语言多。
根据效率定律三,要达到应用方便的目标,在于功能的累进。不论将来硬体多进步,人类对其速度及容量的要求永远不会满足。采用组合语言只是第一步,举凡模组、介面等结合的技巧,及「整合」的观念,都有待大家努力去研究、开发。
三、工作性质
在谈到实际工作前,我们先说明一下中文系统。有人认为此为一系统程式,但我个人认为不如称之为附属程式。附属程式是一种环境,透过这种环境,可以增加中文的功能。因此,这种程式一定要驻留在系统中,而且,要改变原系统程式的中断程式位址。
所有的附属程式都需要一种「介面」,我们的工作自不例外。此处首先根据工作的性质,将所需的介面列举如下:
1,初始化系统图形态。
2,检查系统使用空间,决定是否能够执行。
3,检查和安排所有必要的参数值。
4,改变必要的中断入口位址。
5,申请程式的驻留,并回到系统。
在中文系统上,改变最大的首推图形字符显示INT 10H和列印INT 17H,其次是键盘处理INT 16H,和利用时序中断 INT 1CH 作为图形游标。这些本属系统功能,加以修改后,成为新的中断入口,在此仍称之为系统程式。
我们过去曾犯了一个很大的错误,为了想全面控制系统的功能,在改键盘中断程式时,把 INT 9H 也改了。原因在于对系统分析不够彻底,以致对该段程式的瞭解有了偏差。
INT 9H是在键盘输入后,每键产生两个字元的讯号,分别称为:「扫瞄码」(Scan Code) 及「字符码」(ASCII Code)。早期的机种,其键数不多,字符码完全符合 ASCII 的规定,即最高位的位元保持为0。
中文系统之所以能与若干英文软件兼容,就是利用该最高位元做分辨。我们当时误认为字符码不可能再改变,所以在写INT 9H时,该位元并未一一检查。不料新键盘的键数增加了,由于字符码不够,新加的「页控制键」,即键盘右中一列、键色较深的一区,其字符码皆为0E0H,亦即其高位不为0。这一来,在中文系统下,一碰到那些键,就被当作中文,事实上却又非中文码,因而天下大乱。
但是,在经过IBM BIOS的处理后,INT 16H 所得到的值却不然。那是为了与以往的系统兼容,把高位的位元放到一个缓冲器里去了。如果我们不改 INT 9H ,就不会有任何问题,而改了以后,又没有注意到这种情况,以致产品性能极不稳定,为人所诟病。
因为程式本身非常简单,介面解决以后,就只是程式的安排了。
四、相关问题
再来看看我们的工作还有什么应该注意的,除了程式本身的制作外,还要把前述的编码放到“聚珍整合系统”中。该系统的规格,请参考2聚珍整合系统操作手册。
我们已再三强调,表格之加入,一定要精简,否则喧宾夺主,就不值得了。
这104 种图形如果用点阵来画,共需 21,632B,竟占了系统空间的百分之廿。这还不说,点阵不能放大缩小,就无法供绘图、排版用。
于是决定了第一个原则,这些形状必须用程式绘制而不是存点阵