Un vestigio en tu PC: la tecla Imprimir Pantalla y su curiosa historia

Un vestigio en tu PC: la tecla Imprimir Pantalla y su curiosa historia

Josep Roca

En todos vuestros teclados hay una extraña tecla: Imprimir Pantalla. Pero, ¿nunca os habéis preguntado qué hace esa tecla ahí? ¿Qué sentido tiene que se encuentre en ese lugar en los tiempos en los que con herramientas de recorte podemos copiar en forma de imagen trozos de la pantalla e incluso toda ella? ¿Cuál es su origen?

La tecla imprimir pantalla lo que hace es una copia del búfer de imagen en el momento en el que es pulsada, pero tiene una historia cuanto menos curiosa que se remonta a los tiempos del primer PC, el 5150 de IBM, cuando no había interfaces gráficas sino solamente de texto y MS-DOS tan simple que carecía incluso de gestión de periféricos ya que eso lo hacía la BIOS, cuyas siglas significaban sistema básico de entrada y salida.

Cuando el usuario pulsaba dicha tecla lo que hacía es imprimir la pantalla actual a través del puerto LPT1, el puerto estándar de las impresoras por aquel entonces, y la gracia de todo es dónde se encontraba dicho puerto en los primeros PCs que aparecieron en el mercado.

El puerto de impresora en la tarjeta gráfica: el origen de la tecla Imprimir Pantalla

CGA LPT1

Los primeros ordenadores no tenían un sistema de gestión de la impresora tan complejo como el que hay a día de hoy, y lo que es más, no tenían ni siquiera uno propio sino que las propias tarjetas gráficas tenían el puerto de la impresora integrado de tal manera que cuando el usuario pulsaba la tecla de imprimir pantalla automáticamente el búfer de imagen se enviaba a la impresora de manera directa, por lo que esta era la única forma en la que con los primeros PCs se podían imprimir los documentos.

El puerto para la impresora era llamado LPT1, Line Print Terminal 1, y cuando el usuario pulsaba la tecla para imprimir lo que sucedía era que se copiaba 1 byte por ciclo reloj desde la VRAM hacia el puerto LPT1 que se encontraba en la tarjeta gráfica; en el proceso se recorría toda la memoria de vídeo hasta que se llegaba a la última dirección de memoria de la misma.

Las primeras impresoras que por aquel entonces se hacían servir en las oficinas no eran de inyección de tinta sino de matriz de puntos, donde cada bit del búfer de imagen que se transmitía a través del puerto y se interpretaba como si fuese un punto en el papel, pero más tarde esto se adaptó a las impresoras con capacidad de imprimir en color, en la que varios bits del búfer de imagen se codificaban como un color o como otro.

La antigua forma de gestionar los periféricos

IOMMU Mapa Memoria PC Original

A día de hoy la gestión de los periféricos de entrada y salida se gestiona de manera casi automática, ya sea por el uso de los controladores por software que hacen que el sistema operativo se dedique a esa tarea como al trabajo de la IOMMU que se encarga de automatizar los accesos del sistema operativo y las aplicaciones a cada periférico.

Pero antiguamente los programadores tenían que conocerse el mapa de memoria de los ordenadores, y esto significa que había ciertas direcciones de memoria que no almacenaban datos, sino que al ser invocadas activaban ciertas funciones en el hardware y para ello existían dos tipos de direcciones de memoria de cara al hardware: unas direcciones servían para enviar datos al hardware y otras simplemente no almacenaban nada, sino que activaban ciertas funciones de los periféricos.

El problema es que si quisiéramos copiar el contenido del búfer de imagen a la impresora bajo dicho concepto deberíamos gestionar manualmente dicho proceso a través del código en cada programa, es decir, cada aplicación tendría que tener sus propias funciones de impresión, pero no solo de impresión sino también en cosas tan simples como almacenar un archivo en el disco, capturar la pulsación de teclado, y para esas tareas más comunes se utilizaban las llamadas IRQs o peticiones de interrupción.

La tecla Impr. Pant y el IRQ7

Tabla IRQ

Para facilitar el trabajo de los programadores había una serie de tareas de comunicación con los periféricos que eran gestionadas por la BIOS, de tal manera que los programadores no tuviesen que desarrollar un pequeño programa para cosas tan triviales, entre ellas imprimir un documento.

En las primeras generaciones de PCs, cuando se pulsaba la tecla imprimir pantalla lo que se hacía era invocar el canal 7 para peticiones de interrupción a la CPU (IRQ 7 o Interrupt Request), entonces esta dejaba de hacer lo que estuviese haciendo y empezaba el proceso de copiar lo que hubiese en el búfer de imagen directamente al puerto de la impresora, parando momentáneamente  por completo el resto de funciones de la CPU para llevar a cabo el proceso de imprimir.

Esto era mucho más fácil que tener que crear un programa para todo el proceso manual y tedioso de tener que copiar todos los datos y permitía que cualquier programa pudiese imprimir con el usuario pulsando una sola tecla, ya que todo el proceso se automatizaba, simplemente con la tecla Impr. Pant. Estaba cableada de manera directa o semidirecta al IRQ7.

A partir del PC AT, el puerto LPT1 abandonó la tarjeta gráfica para situarse en otra parte del ordenador (la placa base), y no obstante no resultó en un cambio en la forma de actuar de los programas porque estos simplemente invocaban la petición de interrupción 7 para funcionar y enviar los datos a la impresora.

La tecla imprimir pantalla en la actualidad

Imprimir Pantalla

Llegado a cierto punto, las muchas aplicaciones empezaron a utilizar interfaces de usuario complejas en pantalla que no interesaba que se imprimiesen en la impresora, por lo que estas tuvieron que gestionar sus propios sistemas de impresión.

Cuando Windows 3.1 empezó a estandarizarse, se dejó de utilizar la llamada al IRQ7 para imprimir para utilizar controladores de software gestionados por el propio sistema operativo para comunicarse con la impresora, y desde entonces la tecla imprimir pantalla simplemente copia el búfer de imagen en la sección de memoria dedicada al portapapeles y así ha sido desde entonces, ya que desde ese punto la tecla imprimir dejo de estar asociada a dicha petición de interrupción.

Con el tiempo hemos visto el LPT1 siendo reemplazado por el puerto USB y la BIOS por la UEFI, por lo que todo aquello que daba sentido a la tecla «Imprimir Pantalla» originalmente ya ha desaparecido.