一个关于TC808系统中断的问题
帖子发错地方了...唉,一不小心发到程序语言综合版了...有人吗? 也就是说,当你在程序中调用int$c006,或者int$c00a时,程式执行到此会检测键盘上的按键是否被按下,如果你按了某一个键,它就会把这个按键所对应的asc码存到A寄存器中。 它们的区别是不是:在使用前者时程序暂停等按键,而使用后者时则程序继续运行(读键在后台)基本是这样。使用后者时程序只检测一次当前按键,若按下,则将键值存入寄存器A中。若没有,则中断直接返回,执行下面的指令。
键值在A中就是指寄存器A了。 帖子发错地方了...唉,一不小心发到程序语言综合版了...有人吗? 哦.那像俄罗斯方块或贪吃蛇就用的是这个中断喽(我只是对这个原理不是很清楚)? 如果在BASIC中用这个中断,那寄存器A中的键值怎么读? 比如地址是多少 basic要想实现int$c006,直接用inkey$语句就行,要不想进行按键停顿,用判断199这个地址的值就行,199是按键asc码的映射地址,比如
if peek(199)=27 then ..... 用BASIC的话c00a这个中断不好使哦。
检测按键可以有多种方式的。去找个BASIC程序看一看就行了。 哦,对了,是读上次按键的值!谢谢6楼提醒! 7楼,我来试试. 可我确实不知道有哪些basic程序是边运行边检测按键(除了我上面说的两个).bas不比lav.能否提供个例子程序的名字? 去GGV的下载专区找以前的BAS游戏,贪食蛇就行。 哦,好的.不过6楼,你说的有问题.PEEK(199)后跟的值应该是键盘的映射值,而不是按键的ASC值. 另外,谢谢两位的点拨. 我试了一下.用input读按键ASC码与用peek(199)读上回按键的值是不一样的. 用input读按键?输入的是大写字母还是小写字母? 二者之差为128.不过用input读键实在不是什么好方法。 对不起,打错了.是INKEY.哈哈 没注意,回错了区,我重回
在GVBASIC中不用调用中断,用peek就行
执行以下这段代码就明白了:
10 LOCATE 1,1: PRINT PEEK(191);" ";PEEK(192)
20 LOCATE 2,1: PRINT PEEK(193);" ";PEEK(194)
30 LOCATE 3,1: PRINT PEEK(195);" ";PEEK(196)
40 LOCATE 4,1: PRINT PEEK(197);" ";PEEK(198)
50 LOCATE 5,1: PRINT PEEK(199);
60 GOTO 10
191~198显示的是当前按下的键的扫描码
199显示的是最后按下的键扫描码
在BASIC中INKEY$相当于INT $C006
可以使某一变量等于INKEY$,如:W$=INKEY$、W=ASC(INKEY$)
W$、W中的值则为按键值
[ 本帖最后由 wehiue 于 2008-10-1 23:02 编辑 ]
页:
[1]