谈谈设备驱动程序ANSI.SYS
ESC [10;12H
其中10和12是表示行和列的参数,H起表示这个控制序的作用。由于ANSI的使用较多,下面分别列出ANSI.SYS所能识别的全部控制序列的格式和部分参数。
1、对光标位置的控制
ESC [#;#H把光标移到由参数指定的位置上。第一个参数指明行号,第二个参数指明列号,缺省值为1。
ESC [#A把光标上移若干行,缺省值为1。
ESC [#B把光标下移若干行,缺省值为1。
ESC [#C把光标右移若干行,缺省值为1。
ESC [#D把光标左移若干行,缺省值为1。
ESC [#;#f把光标移到由参数指定的位置上。第一个参数指明行号,第二个参数指明列号,缺省值为1。
ESC [s保存当前光标位置。
ESC [u恢复光标位置。
2、清除屏幕上内容
ESC [2J清除全屏幕,光标移至起始位置。
ESC [K从当前光标位置开始清除到该行的结尾。
3、设置显示方式
ESC [=#h 参数 说明
0 40*25,黑白,文本
1 40*25,黑白,文本
2 80*25,黑白,文本
3 80*25,黑白,文本
4 320*200,彩色,图形
5 320*200,黑白,图形
6 640*200,黑白,图形
7 行结束时转到新行
4、设置复位方式
ESC [=#I参数和设置与上面的“设置显示方式”的相同,但参数7意指复位“行结束时转到新行”(把超过行结束的字符扔掉)。
5、设置颜色
ESC [#;……;#m
参数 说明
0 正规黑底白字
1 高亮度
5 闪烁
7 反象显示
8 不可见的显示
32 绿色前景
33 黄色前景
34 蓝色前景
37 白色前景
40 黑色背景
41 红色背景
42 绿色背景
43 黄色背景
44 蓝色背景
6、键的重新定义
格式:ESC [#;#;…;#p或ESC [#;#;“字符串”p
控制序列的第一个参数若不是0,则它代表被重新定义的字符的ASCII码。若第一个参数是0,则第二个代表被重新定义键的扫描码。其余的数字(代表ASCII码)和字符串组成了该键的新定义。
例如,为了按如下所示定义F1-F4四个功能键:
F1="DIR A:"+<CR>
F2="DIR B:"+<CR>
F3="COPY"
F4="VER"
则可以用如下4个控制序列去实现:
ESC [0;59;“DIR A:”;13p
ESC [0;60;“DIR B:”;13p
ESC [0;61;“COPY”;p
ESC [0;62;“VER”;p
对键进行定义时,对于普通键需要知道它们的ASCII码,对于扩展键要知道它们的扫描码(如Alt-W、Insert、Ctrl-Home的扫描码分别是17、82、119)。
说明
1、用户程序只有通过标准输入输出设备的DOS系统调用发出的控制序列才可以被ANSI.SYS接受到。对于通过BIOS或硬件口地址进行显示输出或接受键盘输入的软件,控制序列将不起作用。
2、ESC这个字符在不同的程序中输入方法不同。在BASIC中是CHR$(27),在DBASEIII是CHR(27)。
3、在不同的DOS版本中ANSI.SYS不尽相同。如有时在用DIR或TYPE显示时满一屏后屏幕不再滚动,仅在屏幕的最末一行连续覆盖显示。出现这种现象的原因就是因为在CONFIG.SYS中设置了DEVICE=ANSI.SYS命令,而在根目录中的ANSI.SYS文件与当前的DOS版本不兼容。解决这一问题的方法就是在根目录下拷入与当前DOS相同版本的ANSI.SYS文件。(山东 殷玉法 李宝玉)