§10.绘图命令
一、 GR
格式:GR
功能:将显示屏幕设置成低分辨率图形和文本的混合方式,并清除屏幕,把光标移至文本窗口之首部。
在这种方式下,显示屏底部留4个文本行,其余为低分辨率图形区,横向从左到右分成40列,从上到下分成40行,构成一个原点在左上角的平面坐标系。
二、COLOR=
格式:COLOR=算术表达式
功能:算术表达式的取值应在0~255之间,本命令使用时只用它被16除后所得的余数(有小数部分时舍去小数部分),它指明一个颜色编号,用来设定此后在低分辨率图形上画色块(条)时所用的颜色。
16种颜色编号定义如下:
0—黑 4—深绿 8—棕 12—浅绿
1—红 5—灰1 9—橙 13—黄
2—深蓝 6—中蓝 10—灰2 14—绿蓝
3—紫 7—浅蓝 11—粉红 15—白
三、 PLOT
格式:PLOT算术表达式1,算术表达式2
功能:设两个算术表达式的值分别为X和Y,本命令的功能是,用此前由COLOR=设定过的颜色,在低分辨率图形屏幕的(X,Y)点处,画出一个方块来。
横坐标的取值(即算术表达式1的值)范围必须在0~39之间;纵坐标的取值(即算术表达式2的值)范围可在0~47之间,但在40~47之间时,将不会在图形区画出任何东西,只会破坏文本行的当前内容,因此仍应取0~39之间的数为宜(下同)。
四、 HLIN
格式:HLIN算术表达式1,算术表达式2 AT算术表达式3
功能:设3个算术表达式的值分别为X1,X2和Y,本语句执行后,将以此前由COLOR=设定过的颜色,在低分辨率图形屏幕上,从坐标(X1,Y)至坐标(X2,Y)画出一条水平色带来。
五、VLIN
格式:VLIN算术表达式1,算术表达式2 AT算术表达式3
功能:设3个算术表达式的值分别为Y1、Y2和X,语句的功能是,以此前由COLOR=设定过的颜色,在低分辨率图形屏幕上,画出一条由坐标(X,Y1)到坐标(X,Y2)的垂直色带。
六、HGR和HGR Z
格式:HGR
HGR 2
功能:HGR,进入高分辨率图形第1页和文本的混合方式,清除屏幕,将光标移至文本区首部。HGR2,进入高分辨率图形第2页全屏幕方式,并清除屏幕。
七、SHG和SHG2
格式:SHG
SHG 2
功能:SHG类似于HGR,但它不进入第1页,而是进入第3页;SHG2类似于HGR2,但它不进入第2页,而是进入第4页。
说明:在APPLE机上,只有高分辨率图形第1页和第2页,不存在第3页和第4页。后两个图形页是“小密蜂-I”型机增加的,SHG和SHG2两个命令也是XMF-BASIC扩充的。
在高分辨率图形方式下,显示屏从左到右分为280列,从上到下分为192行(在混合方式下只有160行),构成一个原点在左上角的平面直角坐标系。
八、HCOLOR=
格式:HCOLOR=算术表达式
功能:用来设定此后在高分辨率图形屏幕上画点(或线)所用的颜色编号。算术表达式的值只能在0~7之间。
颜色编号定义是:
0—黑 2—蓝 4—黑 6—黄
1—绿 3—白 5—红 7—白
实际显示时,除黑白两色外,其它颜色与显示器有关。
九、HPLOT
格式:HPLOT算术表达式1,算术表达式2[{TO算术表达式i,算术表达式j}]
功能:命令中的算术表达式应成对出现,每对代表一个点的横坐标值与纵坐标值。本命令只带一对算术表达式时,将在高分辨率图形屏幕上画一个色点,坐标点由该对算术表达式确定。命令中若带有两对或两对以上的算术表达式时,将由前一个坐标点至后一个坐标点逐点连线。所用的颜色由此前HCOLOR=所设定。
说明:横坐标的取值必须在0~279之间。纵坐标的取值应在0~191之间,当设定为图形和文本的混合方式时,纵坐标的取值不宜超过159,否则将破坏文本行的内容。
十、图形表方法
1.概述
这种方法常用于先构造一个个小图块,再将各小图块显示于屏幕的不同位置,以构成一幅较大的图形(比如将每个汉字点阵作为一个个小图块,可在屏幕上构成一篇文稿,或将这些汉字插入图形的某些位置)。这些图块还可以放大或旋转。
设想屏幕为一张方格纸,画任何一个图块,无异于使笔在纸上作上、下、左或右4个方向的移动,画点时将笔落下,不画点时将笔提起。现规定上、下、左、右移动一格,分别用二进制的00、10、11、01表示,如果移动前需落下笔(画一个点),在上述相应二进制数左部加置1,否则(不画点,光移动)在上述二进制数左部加置0。这样,每3位二进制数可表示是否画点及移动方向。一个小图块也就可以用一组二进制数(均为3位)表示。将这些二进制数以特定的方法置入内存的某个空间,就构成了一个图形定义。方法是:在该空间的第一个字节中,右3位填入第1个二进制数,中间3位填入第2个二进制数,左2位视第3个二进制数而定。该二进制3位均为0或左侧一位为1(画点标志),则此二进制数留待填入后继内存单元的右3位,而置本内存单元左2位均为0。若该二进制数为001或010或011,则分别按01或10或11填入本内存单元的左2位。用同样的方法,将一个图块的所有二进制数处理完。被填入的内存的最后一个单元,应以0补满8位,并在后续内存单元中置一个全0字节。
用上述方法可构造出若干个图形定义。
接着要将上述图形定义加上若干索引信息构成一张图形表。图形表的首地址应选RAM中BASIC程序运行时不会被破坏的地方。首地址境人图形定义的个数(不得大于255),接着填入一个全0字节。从第3个字节起,每两个字节构成一个相对地址(先填低位,后填高位),依次指明0号、1号,…图形定义的首址与本图形表首址的偏移量。接下去便可依序号填入各图形定义。填写图形表时要用一点技巧,既要保证偏移量准确指向各图形定义首址,又不致使图形定义之间留下空白或互相交叉。
图形表造好后,将图形表首地址的十六进制数低位置入232号单元中,高位置入233号单元中,借用进入高分辨率图形方式和设置高分辨率绘图颜色命令,再使用下面一组命令,即可实现各种图块的显示、放大和旋转。
1.SCALE=
格式:SCALE=算术表达式
功能:设定图形的尺寸。算术表达式的值是一个放大系数,应在1×255之间。
2.ROT=
格式:ROT=算术表达式
功能:使图形旋转一定角度。本命令与上命令SCALE=的取值有关。当SCALE=1时,ROT可控制4个直角转动(ROT=0不动,ROT=16转90度,ROT=32转180度,ROT=48转270度,ROT=64相当于ROT=0,如此类推);当SCALE=2时,ROT可控制8个45度角转动(ROT=0不转,ROT=8转45度,ROT=16转90度…)。以上均依顺时针方向旋转。
3.DRAW
格式:DRAW算术表达式1[AT算术表达式2,算术表达式3]
功能:算术表达式1给出图形号,后两个算术表达式给出画该图形的起笔点(横坐标和纵坐标),省缺时由上次收笔处画起。
4.XDRAW
格式:XDRAW算术表达式1[AT算术表达式2,算术表达式3]
功能:同DRAW类似,但取其补色。互补关系是:黑—白,蓝—绿,紫—橙。
5.SHLOAD
格式:SHLOAD
功能:从磁带上装入一个图形表,并将首地址填入232和233号单元。
十一、屏幕软开关
通过使用命令POKE或函数PEEK对内存中下列某地址置数或读数,可设置不同的屏幕方式:
49232($C050)—图形方式;49233($C05l)—文本方式;49234($C052)—整幅屏幕,49235($C053)—混合屏幕;49236($C054)—第1页;49237($C055)—第2页;49238($C056)—低分辨率;49239($C057)—高分辨率。连续使用上述相关地址可进入不同的屏幕方式。它不会清除屏幕上原有的内容。
在“小蜜蜂-I”机上,又增加了两个辅助软开关(在APPLE Ⅱ机上是没有的):
49230($C04E)—上述各开关功能不变;
49231($C04F)—上述第1页改为第3页,而第2页改为第4页。
§11.外部命令表和外部出错信息表
这是“小蜜蜂-I”型增加的功能。用户可自己定义一些信息(用别的英文单词或汉语拼音或汉字)来替代英文关键字(命令)或出错信息。程序可以不加修改照常运行,列示出来时,相应关键字为用户定义的信息所代替,运行中给出的有关出错信息,也变成用户定义的信息。如果用户将所有关键字和出错信息定义成汉字,则“小蜜蜂-I”将变成一部汉字机。
一、外部命令表的构造方法
先要确定外部命令表的首地址(它应是RAM中BASIC程序运行时不会遭到破坏的地方),并将这个地址的十六进制低位置入内存的235号单元中,高位置入236号单元中。
外部命令表的开始两个字节应填入外部出错信息表的首地址(先填低位,后填高位。如果没有外部出错信息表,这两个字节均填入0)。接下去便是一组一组地替代命令表。每组命令之首字节填入该组替代命令长度,接着填入用户定义码,最后填入相应被替代命令的内码。如此一组一组填完后,置一个全0字节表示表的终结。
举一个简单的例子。如果想用汉字的“清”(国标码为47和65,且应在前面加入标志码FF)替代关键字HOME(内码为97),则这组替代命令序列应为04 FF、47、65、97(这些数字在此均为十六进制数)。
二、外部出错信息表的构造方法
外部出错信息有两类,一类具有编号,一类没有编号。外部出错信息表开始的1个字节,给出第1个有编号的替代命令的相对地址,接下去的5个字节分别对应于下列5个无编号信息的替代信息首址的相对地址(所谓相对地址,均指对外部出错信息表首地址的偏移量):
ERROR和“嘟”声;IN;CTRL-M和BREAK;?EXTRA IGNORED;?REENTER。
在上述这些索引之后,即可构造出错信息内容。要求先构造无编号的信息部分,再构造有编号的信息部分。整个表结束后应填入一个全1字节作标志。
对任一无编号的替代信息,首字节应为长度(定义的替代内容共几个字节),接下去是用户定义的内容。假定用汉语拼音CUO替代ERROR时,则这组信息可为03、C3、D5、CF(其中3为长度,后3个字节的内容分别为字符C、U、O的显示ASCⅡ码,在此均用十六进制数表示)。
对于任一有编号的替代信息,首字节为出错编号,接着给出一个长度(新定义内容的字节数加1),然后为用户定义的内容。假定欲以汉语拼音JUFA替代英文的SYNTAX(编号为16),则这组信息可以是10、05、CA、D5、C6、C1(其中后4个字节的内容为字符J、U、F、A的ASCⅡ码,均用十六进制表示)。
至于各关键字的内码和各出错信息的代号,请参阅中华学习机和APPLE Ⅱ机的参考资料。(张世英)