我最近决定尝试使用基本编程,而我正在玩getKey;我注意到它在第一次输入后有1s~输入滞后。这是内置在计算器中,还是可以更改?
答案 0 :(得分:4)
我认识到上面的“快捷键”代码;)(我是原作者,非常高兴看到它传播开来!)。
无论如何,这是我对该主题的低级知识:
操作系统使用所谓的中断来处理读取键盘,链接端口,USB端口和运行指示器等。中断只是软件代码,没有硬件实现。所以它是硬连线到操作系统而不是计算器。
TI使用的代码的要点是,一旦它读取按键发生,它会将计数器重置为50,并且只要用户按下该键,它就会减少。一旦计数器达到零,它就会告诉getKey将其识别为新的按键,然后将计数器重置为10.这会导致初始延迟比后续延迟更长。
TI-OS允许第三方“钩子”跳入并修改getkey进程,我在另一个更复杂的程序(Speedy Keys)中使用了这样的钩子。但是,在BASIC程序执行期间永远不会调用此挂钩,除非在暂停或菜单(命令,它没有太大帮助。
相反,我们可以做的是设置一个修改getkey计数器的解析器钩子。或者,您可以使用上面的QuickKey代码,也可以使用要求您下载第三方应用程序的Hybrid BASIC。其中一些应用程序(BatLib [由我],Celtic 3,DoorsCS7和xLIB)提供了非常快速的getKey替代方案以及许多其他强大的功能。
以下是设置解析器挂钩的代码。它在我的测试中非常有效!见下面的注释:
#include "ti83plus.inc" ; ~~This column is the stuff for manually
_EnableParserHook = 5026h ; creating the code on calc. ~~
.db $BB,$6D ;AsmPrgm
.org $9D95 ;
ld hl,hookcode ;21A89D
ld de,appbackupscreen ;117298
ld bc,hookend-hookcode ;010A00
ldir ;EDB0
ld hl,appbackupscreen ;217298
ld a,l ;7D
bcall(_EnableParserHook);EF2650
ret ;C9
hookcode: ;
.db 83h ;83
push af ;F5
ld a,1 ;3E01
ld (8442h),a ;324284
pop af ;F1
cp a ;BF
ret ;C9
hookend: ;
注意:其他应用程序或程序可能使用解析器挂钩。使用此程序将禁用这些挂钩,您将需要重新安装它们。这很容易。
最后,如果您手动将其放在计算器上,请使用正确的列代码。这是一个动画.gif文件,展示了如何制作这样的程序:
您需要在主屏幕上或主程序的开头运行一次程序。在此之后,所有getKeys都没有延迟。
答案 1 :(得分:1)
我在夏天尝试使用Ti-84时也自己弄明白了。这种滞后不能改变。这是内置于计算器中的。我认为这是因为ti-84中使用的微芯片是1984年制造的Intel Zilog Z80微处理器。
答案 2 :(得分:1)
遗憾的是,这只是计算器的低效率。 TI-basic是一种相当高级的语言,易于使用,因此不是非常高效或快速。特别是在输入和输出方面,即打印消息和获取输入。
答案 3 :(得分:1)
:AsmPrgm3A3F84EF8C47EFBF4AC9
这是一个getKey例程,它使所有键重复,而不仅仅是箭头和重复之间没有延迟。密钥代码不同,因此您可能需要进行试验。