Il controller della tastiera

Un controller non è altro che l'hardware che praticamente interfaccia il device vero e proprio con il resto del sistema (possiamo pensare al chip di I/O come parte di esso); gestisce infatti l'accesso al bus (vedi sezione 3.7.1 del testo). Ogni controller nel nostro esempio avra' un registro CSR ed un registro BR.
Tastiera e relativo controller

Quando un tasto viene premuto sulla tastiera, il byte contenente il codice ASCII del carattere corrispondente al tasto premuto viene inserito nei bit 15-8 del BR della tastiera. La figura che segue rappresenta lo stato dei registri dopo la pressione del tasto "A" - carattere 65 della tabella ASCII - 01000001
Il carattere 'A' viene inserito da tastiera
Vengono nello stesso momento posti ad 1 i bit 15 (detto IP) e 0 (detto RDY) del CSR.
Il bit IP indica che viene fatta richiesta di un'interruzione dalla tastiera, mentre RDY indica la presenza di un carattere nel BR. (I bit IP e RDY non hanno sempre lo stesso valore, poiché il driver, appena inizia ad operare, pone IP a 0 per indicare che l'interruzione richiesta è stata accolta ed è in fase di elaborazione).
IP e RDY possono avere valori differenti
Ovviamente è possibile che in precedenza un tasto sia stato premuto e che ancora la gestione dell'interruzione relativa non sia terminata. E' possibile cioè che il controller, quando si preme un tasto, trovi ad uno il bit RDY. In questo caso possiamo supporre che quel che viene fatto è semplicemente inserire nei bit 13-1 del CSR un codice di errore
condizione di anomalia
allo scopo di segnalare al driver una condizione di anomalia.

prova tu: clicca sulla figura qui sotto e premi qualsiasi tasto. Viene messo il codice ASCII del carattere digitato in BR, e messo a 1 IP e RDY


Nota: Se non vedi la figura sopra hai bisogno di Java Plug-in che funziona automaticamente installando la J2SE JRE
Quando il microinterprete accoglierà la richiesta di interruzione chiamerà il driver della tastiera.

<---- Il gestore delle interruzioni Il driver della tastiera ---->