Música arriesgada en una vieja impresora de línea de mainframe de IBM

En nuestro Museo de Historia de la Computación recientemente compramos un juego de tarjetas perforadas para un programa de música de computadora de 50 años. La mayoría de las computadoras no tenían tarjetas de sonido entonces, pero los programadores creativos encontraron formas de entregar música usando impresoras lineales. Estábamos un poco preocupados de que este programa pudiera dañar la impresora, pero aún corría el riesgo de ejecutarlo en el antiguo mainframe IBM 1401. Como era de esperar, la música que reproduce la impresora lineal suena horrible, pero la melodía se puede analizar y la impresora no está dañada.


La computadora de negocios IBM 1401 se introdujo en 1959, y se convirtió en la computadora más vendida a mediados de la década de 1960: se entregaron más de 10,000 de estos sistemas. La ventaja competitiva clave de la IBM 1401 era la impresora de líneas de alta velocidad IBM 1403. La cadena de caracteres de giro rápido le permitía a la impresora imprimir 10 líneas por segundo con una excelente calidad: se pensaba que era la mejor calidad antes de que aparecieran las impresoras láser en la década de 1970.


El circuito impreso de la impresora es 1401. Tiene 48 caracteres diferentes, que se repiten 5 veces.

Las impresoras de línea eran muy ruidosas, pero los programadores pronto descubrieron que al imprimir ciertas líneas de caracteres del ruido, se podían extraer ciertas frecuencias. Era posible tocar una nota imprimiendo las líneas necesarias. En la región de 1970, el especialista en informática Ron Mack codificó varias canciones en tarjetas perforadas utilizando el programa de música existente. Recientemente se encontró con sus viejos programas y nos dio la oportunidad de probarlos.

Cómo funciona una impresora lineal


Para imprimir caracteres, la impresora utiliza una cadena de enlaces con caracteres que gira a alta velocidad frente al papel, y hay una cinta de tinta entre el papel y la cadena. La impresora produce líneas de 132 columnas, es decir, cada columna tiene su propio martillo y electroimán. En el momento correcto, cuando el símbolo deseado se mueve más allá del martillo, el electroimán presiona el martillo contra el papel, y el papel junto con la cinta golpea el enlace, imprimiendo el símbolo.


Motor de impresión de impresora lineal IBM 1401 (de las instrucciones)

Para que este proceso funcione, la impresora necesita calcular cuidadosamente el tiempo de las operaciones. La cadena gira a una velocidad de 2.3 m / s, y cada 11.1 μs el siguiente eslabón está enfrente del martillo. El circuito de control apenas tiene tiempo suficiente para leer la ubicación de este símbolo de la memoria principal, compararlo con el símbolo ubicado debajo del martillo y golpear el martillo en caso de coincidencia. Durante 132 intervalos de tiempo, cada maleo tiene la capacidad de imprimir un personaje; esto se llama un "escaneo". Dado que hay 48 caracteres en el conjunto (sin mayúsculas), para imprimir todos los caracteres en cualquier columna, debe repetir este proceso 48 veces. Para cada escaneo, la cadena se desplaza solo por un ancho de caracteres.


El conjunto de martillos de la impresora IBM 1403. A continuación se muestran los puntos de impacto de 132 martillos (uno por columna). En la parte superior están las bobinas y cables de 33 de 132 martillos.

En la parte inferior de la foto se muestra un martillo. Arriba a la izquierda hay una bobina electromagnética y cables. Tuvimos que reemplazar este martillo después de que la bobina se sobrecalentara y se humeara: la foto muestra su área ennegrecida (esto sucedió hace mucho tiempo y no está relacionado con la música).



Generación de música


Habiendo entendido cómo funciona la impresora, cuyo martillo tiene la capacidad de operar cada 11.1 μs, será más fácil entender la estrategia para obtener música. Al imprimir texto cuidadosamente seleccionado, puede controlar el tiempo de respuesta de los martillos. Si los martillos se disparan a ciertos intervalos, será posible crear las frecuencias necesarias. Por ejemplo, se puede obtener una nota la (440 Hz) imprimiendo una línea de texto para que los mazos funcionen cada 1/440 de segundo. Esto se puede lograr escribiendo 1 en la primera columna (primer martillo), luego # en la 14ta columna en el siguiente escaneo, una coma en la 30a columna, y así sucesivamente. La siguiente es la línea completa que necesita imprimir para crear una nota. Te sorprenderá que con solo 48 posiciones, el conjunto de caracteres incluye ocurrencias extrañas como ⌑ y ‡.

1 ⌑YC# 0 Q 3, ‡FRT 4 - , IU $7 MV . * 9N ⌑ ZE @ P3 

El siguiente diagrama muestra la distribución temporal de los martillos, una frecuencia uniforme de 440 Hz, dada por la línea de caracteres dada. El eje x representa el tiempo; cada carácter impreso está marcado con barras rojas. Las franjas rojas se distribuyen uniformemente, a una distancia de 1/440 segundos, lo que da una nota a 440 Hz. Cada barra está marcada con un símbolo asociado y una columna en la página. Tenga en cuenta que los caracteres no se imprimen en el orden en que aparecen en la línea. No existe una relación simple entre la disposición de los caracteres en una cadena y su secuencia de tiempo. Se muestran algunas líneas grises donde el martillo debería haber funcionado, pero falta el símbolo. En este punto, la red se está sincronizando, por lo que no puede imprimir.


Diagrama de distribución de tiempo para la nota la.

Al escribir otra línea, puede generar otra nota. A continuación hay una nota si, 987 Hz (más de una octava más alta). Como se esperaba, más notas requieren más caracteres:

 1 @EQ4S J 8. ND ‡ SH 7 AM Y#2 G- KV . 0 DQSJ 7& ND ‡/4 H AMX0 2 QGJ W. 0 DP‡ S 7&AM ‡/4G * MX0 D 3 


Diagrama de distribución de tiempo para la nota s.

La siguiente es una línea para una nota aguda (138 Hz). Al principio, no estaba claro para mí por qué esta nota requiere imprimir una cadena donde todos los caracteres están reunidos en un montón, y no dispersos, como otras notas. Resulta que 138 Hz coincide con los martillos seguidos. Y aunque los personajes están uno al lado del otro, se distribuyen uniformemente a lo largo del tiempo.

 16#UZKP*E&38 


Diagrama de distribución temporal para una nota aguda.

¿Cuál es el riesgo de la música en cadena?


Nos preocupaba que este programa de música pudiera dañar nuestra impresora. Hay muchas historias sobre cómo la gente rompió las impresoras al imprimir una línea que hace que todos los mazos funcionen al mismo tiempo. Creo que estas son principalmente leyendas urbanas (1403 mazos disparan a su vez). Sin embargo, nos preocupaba que la música en cadena pudiera sobrecargar la cadena de la impresora y que se rompiera. La foto a continuación muestra una cadena rota durante el uso normal; cables rotos y enlaces individuales son visibles.



Se hizo una cadena para la impresora trenzando un cable delgado en una cinta y uniendo bloques con letras. Hasta hace poco, estas cadenas eran raras y no podían ser reemplazadas; Si el cable estaba roto, era imposible arreglarlo. Sin embargo, el Museo Techworks! Binghamton ha encontrado recientemente una forma de restaurar los circuitos impresos. Por lo tanto, nuestro Rey en IBM 1401, Frank King, aprobó de mala gana el uso de la cadena restaurada para reproducir música. Afortunadamente, la cadena sobrevivió a la generación musical perfectamente. Después de estudiar el programa de música, llegué a la conclusión de que agota el circuito mucho menos que la impresión ordinaria, a menos que, por supuesto, surja una resonancia particularmente desafortunada.


Circuito impreso (al revés) a corta distancia

El programa




El código fuente del programa se ha hundido durante mucho tiempo en el olvido, por lo que desarme los códigos de máquina de las tarjetas para comprender cómo funciona ( enumero la lista por separado). Primero, lee las "tarjetas de frecuencia" que determinan qué línea imprimir para qué nota. Crea en la memoria una serie de líneas para imprimir, junto con una tabla con los nombres de las notas y las direcciones de las líneas para imprimir. Luego, el programa lee las notas de las canciones, una nota por tarjeta (la foto muestra que para algunas canciones debes usar muchas tarjetas). Para cada nota, el programa busca la línea correspondiente para imprimir en la tabla. Imprime una línea tantas veces como sea necesario, dependiendo de la longitud de la nota. Además cumple un ciclo de silencio, de 200 a 2000 veces.


Tarjetas perforadas con el código de máquina del programa de música. Por alguna razón, el contenido de cada tarjeta se imprime dos veces.

El código de máquina 1401 es muy diferente de las computadoras modernas. Una de las diferencias es que el código previamente auto modificable se usaba con frecuencia, pero hoy tales prácticas están condenadas. Por ejemplo, se crea una tabla de líneas para imprimir cambiando las instrucciones de carga, donde cambia el campo de dirección. Incluso los retornos de las rutinas usan código de auto modificación al colocar la dirección de retorno en la declaración jmp al final de la rutina. Para procesar una nota, el programa sobre la marcha genera una secuencia de tres instrucciones para cargar una línea, ir al código de impresión y luego volver al bucle principal. El código auto modificable me dificultó entender el programa, ya que el código desmontado no coincide con el que realmente se ejecutó.

Detrás de las tarjetas con el programa hay tarjetas de frecuencia que definen las líneas para cada nota. El código admite hasta 20 notas diferentes, por lo que las tarjetas de frecuencia se seleccionaron para cada canción por separado. Cada línea de 132 caracteres se divide en dos cartas, la primera de las cuales determina el lado derecho de la línea. El nombre de la nota y la frecuencia se imprimen en cada tarjeta en la esquina derecha.


Tarjetas de frecuencia

El conjunto final de tarjetas crea una melodía, y cada nota (o espacio) tiene su propia tarjeta. Cada tarjeta tiene una nota y duración impresas. Una melodía larga puede involucrar cientos de cartas. Es fácil guardar una nueva melodía en las tarjetas: solo necesita marcar notas en las tarjetas. Las notas se indican en el sistema de notación estadounidense , donde el nombre de la nota es seguido por un número de octava. Por ejemplo, C4 es el promedio de. Como solo algunos circuitos impresos tienen el símbolo #, los objetos punzantes se denotan con la letra S, es decir, CS en lugar de C #.


Foto de una tarjeta con la melodía "Silver Bells" en primer plano.

Conclusión


Reprodujimos música con éxito en una impresora IBM 1403 ejecutando programas que nadie había estado ejecutando durante casi 50 años. Aunque la calidad de la música no fue particularmente alta, nos alegramos de que la impresora no se autodestruyera. La última vez que Ron Mack lanzó estos programas en 1970; por el enlace encontrarás algunas canciones. El siguiente video muestra un extracto de la Marsellesa; En este video puedes ver la impresión de cada línea.


El Museo de Historia de la Computadora de Mountain View muestra IBM 1401 los miércoles y sábados , por lo que si está cerca, le recomiendo que visite nuestra exposición.

Source: https://habr.com/ru/post/468647/


All Articles