- 注册时间
- 2005-5-28
- 最后登录
- 1970-1-1
|
本程序适用于3K,其它机型须改变相应中断.
其实很简单,但就没有人去做
请看下面的程序
10 DATA 162,00,160,16,0,6,203,96
20 FOR X =15000 TO 15007: READ D: POKE X,D: NEXT
30 POKE 4096,31: POKE 4097,2: POKE 4098,17
50 PRINT "Current Volume: "; PEEK(1001)
60 PRINT "Set Volume:"
70 CALL 15000
80 IF PEEK(199) <>13 THEN POKE 199,141: END
90 A% =PEEK(704 +31) -48:B% =PEEK(704 +32) -48
95 IF (A% =-48 AND B% =-48) THEN POKE 199,141: END
100 IF B% =-48 THEN C% =A%:110
105 C% =A% *10 +B%
110 IF C% >14 THEN POKE 199,141: END
120 POKE 1001,C%
130 LOCATE 3,1: PRINT "Done.": END
随便编的一个,调音量的。
但你会发现只能输数字,且最多输两位,但用INPUT却无法做到。
看10行.前四个数是输入参数地址,不说那么多了.这里的参数地址就是00+16*256=4096.
0,6,203是人机交互中断(INT $CB06).相当于INPUT,注意这里是3K的,其它机型可能不一样,只要修改一下就可适用于其它机型了.
看30行,这里是参数,刚才的参数地址就是指向这里的。第一位31指缓存偏移,即光标位置,形象一下:如LOCATE 3,3 这时偏移就是(3-1)*20+3=43.第二位是输入长度,这里是2,就是两位数字.第三位是样式,这里是17,表示仅输入数字,修改此位可以控制输入类型,大家下去试试吧~ ∶).
我现在还不知道输入的数据是否在某一段内存中(搜了一遍但没搜到),因此换了种方式即PEEK字符缓存获取信息。
这样我们就能更好的控制输入了,INPUT可以下岗了…
|
|