Handshake
El handshake es un dispotivo diseñado con el fin de facilitar la comunicación con las impresoras Centronics. Está basado en el PPI 8255 de Intel en su modo "1", pero con algunas modificaciones para simplificar su funcionamiento.
Este cuenta con dos registros de 8 bits:
- el registro de datos (dirección
40h
de la memoria E/S), - y el registro de estado (dirección
41h
de la memoria E/S).
Específicamente,
Datos = DDDD DDDD
Estado = I___ __SB
En el registro de datos se almacenará carácter a imprimir, expresado en ASCII. Cada vez que la CPU escriba sobre ese registro, el handshake se encargará de realizar un flanco ascendente en el strobe para que el carácter se imprima automáticamente.
En el registro de estado, los dos bits menos significativos son el strobe y busy (leer más sobre los mismos), análogamente a como se usan en una impresora conectada con un PIO. La diferencia es que el bit de busy no puede ser modificado por la CPU y el bit de strobe siempre es 0
. Si la CPU trata de escribir un 1
en el bit de strobe, este causará un flanco ascendente en el strobe, enviando lo almacenado en el registro de datos, y el handshake lo volverá a 0
automáticamente.
Además, el bit más significativo del registro de estado habilita/inhabilita las interrupciones. Si este bit es 1
, mientras la impresora no esté ocupada (B=0
), el Handshake disparará una interrupción por hardware. Está conectado al puerto INT2
del PIC.