根据这个网页:http://stanislavs.org/helppc/8042.html键盘控制器维护它自己的内部16字节的make/break代码缓冲区。是否可以访问键盘控制器的内部制作/中断代码缓冲区?
“键盘的内部控制器最多可缓冲16个字节的制造/中断代码信息,这在所有PC系统中都很常见,不应与BIOS维护的(32字节)键盘缓冲区混淆。
能够访问此缓冲区对我来说在我的8086汇编语言程序中非常有用(假设更新速度比BIOS维护的32字节缓冲区更快)。
除了轮询端口60h之外,还有办法从内部缓冲区中获取这些制造/中断代码吗?
那么最简单的方法就是正常读取扫描码,不必轮询,可以使用中断处理程序将代码放入RAM中的缓冲区,就像BIOS一样。有文件记录的控制器命令可以让你读取8042的RAM,在真实的8042上,它可能会在某处包含缓冲的扫描码,但我不认为标准的确切位置。现代的键盘控制器可能无法模拟这一点。 –
但在内存中的其他地方使用它有什么用处?你的意思是访问扫描代码会更快,而无需加载不同的段?我同意这一点。我只是真的希望将最后一个break/make代码作为输入到我的程序中,这就是为什么我使用端口60h,但访问缓冲区会很有用,因为人为错误通常会导致我的程序出现问题。通常,我会在让前一个键覆盖我的程序需要的代码之前一秒钟敲一个键,并用我希望忽略的中断代码。访问缓冲区将允许我确定丢失的代码。 –
我已经忽略了与最后接受的make代码不一致的中断代码,但我仍经常遇到与先前遇到的代码相对应的乱序中断代码。例如,在我的游戏中导致不希望的停止移动精灵。我应该提到的是,BIOS中的32字节缓冲区有时会错过分割的第二个make代码。我想象一个非常高频率的中断可以解决这个问题,但我仍然不知道如何编程这两个PIC。我在业余时间一直在研究它的最近几天。 –