(王宁)高级语言BASIC对数据的运算、处理和绘图等操作具有很强的功能,而苹果机的BASIC语言除了具有这些功能外,对接口的输入、输出控制也是很方便的,它只用两条语句PEEK和POKE就能完成I/O控制功能。下面就详细地介绍用PEEK和POKE指令进行输入、输出控制的简便方法。
1. PEEK和POKE的作用
PEEK指令的功能是从存储单元取来一个数。如:LET A=PEEK(768),即把768号存储单元的内容取来赋值给变量A。
POKE指令的功能是向存储单元存放一个数。如:POKE 768,A,即把变量A的内容放到768号存储单元中去。
如果把外设接口当作一个存储单元来对待的话,就可以方便地用PEEK和POKE来对外设传输数据了。
苹果机有8个外设接口插槽。每个插槽都有相应的地址,如表1。

通常,在1号槽接打印机,6号槽接磁盘机。所以,可以在剩下的插槽中任选一个作为我们要控制的外设的接口,该接口地址也就是插槽地址。把该地址当作一个存储单元对待,就可以使用PEEK或POKE来对外设作输入或输出操作了。
下面通过两个例子说明实现控制的方法。
例1:外设接有8个发光管,要求输出一个数据使第1个和第4个灯亮,其余的不亮。用“1”表示开关接通,用“0”表示开关断开。如用二进制表示,这组数据是00001001。假设它接在3号槽上,地址是一16208。并把二进制数00001001转换成十进制数为9。执行这一功能相应的语句是:
10 POKE(-16208),9
例2:如外设是一个输入装置,需要计算机检测它的状态,这时可用PEEK指令。假设这一装置是接在5号槽上,可用下列指令来完成:
10 LET A=PEEK(-16176)
20 PRINT A
这时A的内容就为所输入的数据。
2.接口电路
苹果机的8个接口插槽分别与CPU的数据总线、地址总线和控制总线相连。接口插槽的引脚排列如图1所示,其中,D\(_{0}\)~D7是数据总线,A\(_{0}\)13是地址总线,R/W-为读写控制线,R/W-=1表示读入数据,R/W-=0表示写出数据。DEVICE SELECT-是插槽地址选通信号,当该位为低电平时,表示该槽被选通。用POKE或PEEK来启动。它通常与读写信号R/W-一起构成接口地址选通信号,如图2所示。


此外,DEVICE SELECT-、R/W-还可与地址线A\(_{0}\)15共同组成复合地址。这时的接口地址应为:插槽地址与A\(_{0}\)15的加权数之和(加权数即2\(^{n}\),n为地址线条数)。图3电路中,n=1,地址为(-16224+21),语句为:LET A=PEEK(-16224+2)

3.示范程序及接口电路
下面编制一个用计算机构成智力竞赛抢答器的程序,其流程图见图4。

接口电路如图5所示,其中D1、D2为8位数据缓冲器(74L244),D1用作输入接口,D2为输出接口。读写选通信号分别接在D1和D2的1和19脚,作为缓冲器的选通信号。D1\(_{1}\)4接有4个抢答开关,组成输入电路,输入抢答数据A。输出电路D2的1Y\(_{1}\)~1Y4接4个指示灯,2Y\(_{4}\)接讯响器。当2Y4为1时,讯响器响,加上置指示灯亮数据A,就构成主机向D2输出的实际信号,所以输出为(A+128)。

程序如下:
10 LET I=-16224
20 LET A=PEEK(I)
30 IF A=0 THEN 20
40 PRINT“抢答选手号”;A
50 POKE(I),A+128