为了实现入机交互,还须在微机或终端上配置相应的键盘终端处理程序,它负责接收用户从终端上输入的字符,并将其回送至屏幕显示,用户可以根据需要修改、删除已输入的信息。下面对键盘终端处理程序的各项功能逐一介绍。
1.字符接受功能
为了实现入机交互,键盘终端处理程序必须能够接收用户从终端输入的字符,并将其传送给用户程序。字符接收功能主要通过以下两种方式实现。
(1)面向字符方式。驱动程序只接收从终端输入的字符,并且不加修改地将它传送给用户程序。它通常是一串未加工的ASCII码。
(2)而向行方式。终端处理程序将所接收的字符暂存于缓冲区中,并可对行內字符进行编辑。当收到行结束符后,才将一行正确的信息交给命令解释程序。在有的计算机中,从键盘硬件送出的是键的编码(简称键码),而不是ASCII码。例如,当输入a时,是将键码30放入I/O寄存器中,此时,终端处理程序必须参照某种映射规则,将键码转换成ASCII码。
2.字符缓冲功能
为了能暂存从终端输入的字符,以降低中断处理器的频率,在终端处理程序中,还必须具有字符缓冲功能。字符缓冲可采用以下两种方式。
(1)专用缓冲方式。这是指系统为每个终端设置一个缓冲区,暂存用户输入的一批字符,缓冲区的典型长度为200个字符左右。这种方式较适合于中.用户微机或终端很少的多用户机。当终端数目较多时,需要的缓冲数目可能很大,而且每个缓冲的利用率也很低。例如,当有100个终端时,要求有20KB的缓冲区。图1所示为专用缓冲方式。
(2)公用缓冲方式。系统不必为每个终端设置专用缓冲区,只须设置一个由多个缓冲区构成的公用缓冲池。其中的每个缓冲区大小相同,如为20个字符,再将所有的空缓冲区链接成一个空缓冲区链。当终端有数据输入时,可先向空缓冲区链中请一个空缓冲区来接收输入字符;当该缓冲区装满后,再申谙一空缓冲区。这样,直至全部输入完毕,并利用链接指针将这些装奋输入数据的缓冲区链接成一条输入链。每当该输入链中一个缓冲区内的字符被全部传送给用户程序后,便将该缓冲区从输入链中移出,再重新链入空缓冲区链中。显然,利用公用缓冲池方式可有效地提高缓冲的利用率。图2所示为公用缓冲池方式。
3.回送显示
回送显示(回显)是指每当用户从键盘输入一个字符后,终端处理程序便将该字符送往屏幕显示。回显可以通过硬件实现,优点是速度较快,但往往会引起麻烦。如当用户输入口令时,为防止口令被盗用,显然不该有回显。此外,用硬件实现回显也缺乏灵活性,因而近年来多改用软件来实现回显,这样可以做到在用户需要时才回显。用软件实现回显,还可方便
地进行字符变换,如将键盘输入的小写英文字母变成大写。驱动程序在将输入的字符送往屏幕回显时,应打印在正确的位置上;当光标走到一行的最后一个位置后,便应返回到下一行的开始位置。例如,当所输入的字符数目超过一行的80个(字符)时,应自动地将下一个字符打印到下一行的开始位置。
4.屏幕编辑
用户有时需要对从键盘输入的数据(字符)进行修改,如删除(插入)一个或多个字符。为此,终端处理程序还应具有屏幕编辑功能,包括能提供若干个编辑键。常用的编辑键有如下几个。
(1)删除字符键。它允许将用户刚输入的字符删除。在有的系统中是利用退格键(Backspace)。当用户敲击该键时,处理程序并不将刚输入的字符送入字符队列而是从字符队列中移出其前面的一个字符。
(2)删除一行键。该键用于将刚输入的一行删去。
(3)插入键(Insert)。利用该键在光标处可插入一个字符或一行正文。
(4)移动光标键。在键盘上有用于对光标进行上、下、左、右移动的键。
(5)屏幕上卷(PageUp)或下移(PageDown)键。
5.特殊字符处理
终端处理程序必须能对一些特殊字符进行及时处理,这些字符如下。
(1)中断字符。当程序在运行中出现异常情况时,用户可通过输入中断字符的办法来中止当前程序的运行。在许多系统中是利用Break键、Delete键或Ctrl+C键作为中断字符的。对中断字符的处理比较复杂。当终端处理程序收到用户输入的中断字符后,将向该终端上的所有进程发送一个要求进程终止的软中断信号,这些进程收到该软中断信号后,便进行自我终止。
(2)停止上卷字符。用户输入此字符后,终端处理程序应使正在上卷的屏幕暂停上卷,以便用户仔细观察屏幕内容。在有的系统中,是利用Ctrl+S组合键停止屏幕上卷的。
(3)恢复上卷字符。有的系统利用Ctrl+Q组合键使停止上卷的屏幕恢复上卷。终端处理程序收到该字符后,便恢复屏慕的上卷功能。