La tastiera del C/64 e del Vic20

Le tastiere moderne sono piene di microchip, e tipicamente offrono una interfaccia seriale per comunicare la vostro PC i tasti premuti.
Negli allegri anni ottanta non era per niente cosi’.

Le tastiere del Vic20 e del C/64 erano interruttori (switch) completamente prive di intelligenza.
Per esempio nel C/64-C/128 il tasto RESTORE, se premuto, attivava direttamente l’interrupt non mascherabile NMI, e quindi funziona anche se il vostro programmino BASIC fosse in un un loop infinito.
Ma procediamo con ordine

La tastiera aveva 66 tasti.
Il C/64 aveva un chip chiamato CIA che era in grado di leggere fino a 16 linee (bit).
Se disponiamo queste linee a matrice, 8 per le colonne e 8 per le righe, vediamo che possiamo individura fino a 8×8=64 elementi
I tasti che rimanevano fuori erano il succitato RESTORE e SHIFT LOCK che era indistinguibile da “Shift Left”, perche’ insisteva sulle medesime linee di quest’ultimo.

L’IRQ del C/64 (l’interrupt che scattava diverse volte al secondo) scandagliava le 16 linee per identificare l’eventuale tasto premuto.
Viene mantenuto un buffer delle linee premute che va dalle locazioni 631 ($0277) a 640.
Un dei lavori del Kernal era proprio quello di fornire questo IRQ e di gestire la tastiera.

Se ne deduce che la tastiera smetteva di funzionare se si disattivavano gli interrupt, con l’eccezione del tasto RESTORE (!) che non poteva mai essere disattivato essendo un NMI

Riferimenti

https://c64os.com/post/howthekeyboardworks
Ragione dello switch del maiuscolo minuscolo sul charset PET https://www.pagetable.com/?p=857

https://www.c64-wiki.com/wiki/Keyboard