根據這個網頁: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。我在業餘時間一直在研究它的最近幾天。 –