Por @Alvy — 17 de enero de 2023

La historia del código ASCII

La fascinación que produce el código ASCII y sus orígenes no es desdeñable. Martin Tournoij, por ejemplo, tiene una página dedicada a la tabla ASCII y sus historias, donde explica un montón de detalles interesantes sobre este código tan conocido y común en informática. Eso sí: incide con ahínco en algo que parece apasionarle: la cuestión de por qué pulsar CTRL+I en una ventana de terminal es lo mismo que pulsar la tecla del Tabulador, algo interesante de desentrañar que lleva a muchas historias paralelas.

Y es que antes de que existiera el Unicode los primeros telégrafos y teletipos (teleimpresoras e inglés) utilizaban un código muy sencillo de tan solo 32 caracteres llamado ITA2, que no daba casi ni para las letras (26 en inglés). Había que usar trucos como elegir un código que indicara que los siguientes caracteres eran de otro conjunto («juego de caracteres»), o hacerlos equivaler a mensajes cortos y cosas así. He aquí un vídeo de cómo se veía en las máquinas que utilizaban cinta de teletipo perforada (ITA2 TTY).

Hacia 1962 el ITA2 se amplió y se pasó a llamarse ASCII (de «Código Estándar estadounidense para el Intercambio de Información»), convirtiéndose en la forma estándar de intercambiar datos entre terminales y teletipos, que es de donde proviene la abreviatura TTY: TeleTYpewriter, o «teleimpresora». Este código ya tenía 128 caracteres (7 bits) e incluía letras mayúsculas y minúsculas, números, otros caracteres ortográficos comunes e incluso decenas de códigos de control.

El código ASCII de 8 bits llegaría bastante después; algunos como el ISO-8859-1 (Latin 1) permitían incluir caracteres extra para varios idiomas, como la eñe del español, letras con tildes y otros… el lío entonces era saber cuál de los diversos ASCIIs «extendidos» correspondía a cada fichero de texto.

Del código ASCII han existido muchísimas versiones, tal y como se explica en este otro estupendo artículo, Juegos de caracteres de 7-bits:

  • ASCII-1963 (X3.4-1963), la primera versión oficial, que no tuvo mucho éxito porque IBM usaba EBCDIC que era distinto y de 8 bits.
  • ASCII-1965 que no llego a publicarse, aunque quedó definido.
  • ASCII-1967 (X3.4-1967), una primera revisión más parecida al ASCII actual aunque cambiaban algunos caracteres.
  • ASCII-1968 (X3.4-1968), con variaciones sobre los finales de línea y retornos de carro («retorno de carro» es otra reminiscencia de las viejas máquinas de escribir y teletipos).
  • ASCII-1977 (X3.4-1977), con más caracteres modificados como la barra vertical y los códigos de control.
  • ASCII-1986 (X3.4-1986), el más parecido al actual.

Los códigos del 0 al 31 están reservados y se usaban para la «información imprimible», que permitía realizar acciones, especialmente para controlar dispositivos como las impresoras. Se designan con dos o tres letras. El 0 era NUL, null, o «nulo»; el 13 era CR de carriage return o «retorno de carro» (bajar de línea e ir al principio) y el 7 es BEL de bell o «timbre» y hacía sonar una campanita; el 4 era EOT, end of transmission o «fin de transmisión». Una excepción curiosa e importante fuera del rango 0-31 era el 127, en hexadecimal 0x7f, que era DEL, delete o «suprimir».

Al igual que los viejos teletipos, el código ASCII también daba acceso a los llamados «códigos de escape», que empiezan por el código ESC (código 27, en hexadecimal 0x1b) y según lo que hay a continuación se realizan diversas acciones, como mover el cursor, borrar y demás. Se definieron en el estándar ANSI X3.64/ECMA-48 que es el que utilizan prácticamente todos los terminales de los sistemas operativos actuales.

La tabla ASCII que preparó Martin Tournoij se puede interpretar de modo que las columnas 3 y 4, donde están las letras minúsculas y mayúsculas, se correspondan con códigos equivalentes con las teclas Mayúsculas o Control, simplemente borrando un bit (el sexto o el séptimo bit) que es lo que hacían esas teclas Mayúsculas y Control originalmente. Por eso Ctrl+I equivale a HT (de «Tabulador Horizontal», código 9 ó 0x09). Si en una ventana de terminal en los equipos modernos se pulsa esa combinación se comporta igual que la pulsación del tabulador, y con otros códigos sucede lo mismo. Una reminiscencia de las reminiscencias, de los ordenadores antiguos de los 60, 70 y 80 a los viejos teletipos y máquinas de escribir.

Relacionado:

Compartir en Flipboard Publicar / Tuitear Publicar