Det finns en mikrokontroller på varje tangentbord som kallas encoder.
Den har 8 I/O portar för just knapparna, iaf hos en generic 102.
Encodern(kanske en intel 8048) kollar upp sitt rom minne efter scankoden(som är ett data paket som representerar tillståndet hos en knapp)
och med hjälp av sin timer se om det är bounce eller mänsklig input.
Sedan skickas scankoden i form av bytes till kontrollern som finns på moderkortet(kanske en 8042 eller AIP)
genom något protokoll tex: 5-pin DIN , 6 pin Mini-DIN eller USB kontakt osv.
Scankoden lagras i 8042 interna minne och sedan togglas IR-linjen (interuppt request) till
hög. den visar då uppmärksamhet och skickar då en IRQ till PIC. PIC:en signalerar processorn o talar om vilket
IRQ nummer att anropa dvs i detta fall nummer 1.
Processorn pekar sedan på offsets i IDT och exekverar avbrottshanteraren
som har som uppgift att uppdatera aktuella tillståndet och avkoda scankoden till korrekt format.
Det är en kommunikation mellan 8048 och 8042 via IN och OUT instruktioner, tex läsa från port 0x60
så får man data från encodern och status registret indikerar om bufferten är full eller inte.
DVS, IN/OUT instruktioner används av x86 processorn för att kommunicera med enheter.
Varje gång processorn får en IN/OUT instruktion så aktiveras I/O access på kontroll bussen(som är en del av systembussen/FSB) på
moderkortets nordbrygga. Om det är en IN-instruktion så placerar processorn port addressen(tex 0x64) på address bussen. samt aktiverar READ.
Encodern lyssnar på kontroll bussen och ser att det är en läs-operation därför kopierar den data(scankoden) från sitt
interna register till data bussen osv. På Liknande sätt fungerar en skriv operation.
Jag har säkert fel i många påståenden, men det vore skoj med lite diskussion
