Reparación de impresora desde el mainframe IBM 1401 60s


El mainframe IBM 1401 (izquierda) en el Museo de Historia de la Computación imprime un fractal Mandelbrot en una impresora 1403 (derecha)

Hay dos mainframes IBM 1401 en funcionamiento en el Museo de Historia de la Computación para demostración , pero hace unas semanas uno de ellos falló repentinamente en la impresora. Ayudé a arreglarlo, pero fue más difícil de lo que esperábamos. En el proceso, tuve que estudiar la lógica de la comprobación de errores en la impresora, el búfer de impresión e incluso las señales de memoria de ferrita de bajo nivel. Este artículo trata sobre nuestra investigación y cómo todavía encontramos un transistor de germanio defectuoso.

El mainframe IBM 1401 se lanzó en 1959 y se convirtió en el éxito de ventas de mediados de los 60: se instalaron más de 10,000 sistemas. La computadora fue arrendada por $ 2,500 por mes (alrededor de $ 20,000 a precios actuales): un precio muy bajo que permite que incluso las empresas medianas la utilicen para la nómina, contabilidad, facturación y muchas otras tareas. El IBM 1401 está formado por pequeñas placas de circuito (llamadas tarjetas SMS) conectadas a bloques llamados bastidores de compuerta. La foto a continuación muestra 1401 con una de las canastas abiertas. Docenas de tarjetas SMS marrones son visibles.


La computadora IBM 1401 con una de las canastas abiertas, donde puede ver muchas tarjetas SMS. El ventilador de la portada enfría las tarjetas.

Uno de los principales impulsores para vender IBM 1401 es la impresora de líneas de alta velocidad IBM 1403, que genera 10 líneas por segundo (IBM afirmó que era cuatro veces más rápido que otras impresoras, pero los competidores disputan esta afirmación). La impresora 1403 imprimió excelentemente: solo las impresoras láser de la década de 1970 lograron superar esta calidad. 1 IBM afirma que "incluso hoy, sigue siendo el estándar de calidad para la impresión de impacto a alta velocidad".


Primer plano de la cadena literal (al revés) de una impresora de línea IBM 1403

La impresora 1403 usaba una cadena larga con letras (en la foto de arriba), que giraba sobre papel y cinta de tinta a alta velocidad. Se instalan un martillo y un electroimán en cada una de las 132 posiciones de impresión. En un momento determinado, cuando el símbolo deseado pasó a través del martillo, el electroimán lo empujó hacia la parte posterior del papel, como resultado de lo cual el papel y la cinta golpearon la letra en una cadena, imprimiendo un símbolo. 2


El mecanismo de impresión de la impresora de líneas IBM 1401. De la Guía de referencia 1401 , página 11

Desafortunadamente, la impresora en el Museo de Historia de la Computadora tenía un problema: cada vez que se imprimía la línea, la computadora se detenía debido al error "Verificación de impresión". Afortunadamente, el museo cuenta con un grupo de voluntarios que ayudan a mantener el sistema en funcionamiento. Entre los especialistas que participaron en la solución de este problema están Ron Williams, Frank King, Mark Verdell, Karl Clunch, Michael Marinu, Robert Garner y Alexey Toptygin. Cuando llegué al rescate, Ron había escrito un programa de prueba simple que repetidamente intentaba imprimir una línea; entró en modo manual y apagó la comprobación de errores. La impresora imprimió los caracteres como se esperaba. Por lo tanto, sugerimos que el problema está en la lógica de los mensajes de error dentro de la computadora. La estrategia era encontrar la señal de error, rastrearla hasta la fuente y determinar la causa.

Comenzamos examinando el circuito de cierre, que contiene la condición para un error de verificación de impresión y lo envía a la computadora. Para encontrar el circuito, verificamos la documentación: diagramas de cableado generados por computadora llamados Diagramas lógicos automatizados (ALD). A continuación se muestra una pequeña sección de ALD con un activador de verificación de impresión (PR CHK LAT). Cada rectángulo en ALD corresponde al esquema en la tarjeta SMS, y las líneas muestran la conexión de las tarjetas entre sí. El descifrado del texto dentro del campo de la derecha indica una tarjeta 2JMX que implementa la función "2 + AO", que en términos modernos es un circuito lógico AND-OR con inversión . El texto en cada campo también indica la ubicación de la tarjeta: su canasta, en este caso 01A6, y la posición de la tarjeta dentro (F10). Por lo tanto, para probar la salida del pestillo (indicado por H) con un osciloscopio, abrimos la canasta 01A6, encontramos la tarjeta F10 y conectamos el osciloscopio al pin H.

Descubrimos que el pin H da una señal baja (error) cuando los pines F y G están energizados, que es el comportamiento correcto para el pestillo. El pin G (PR CK SAMPLE) es esencialmente un pulso de reloj para el estado de error de la muestra, mientras que el pin F es la señal de error en sí. Nuestra siguiente tarea fue determinar qué causa la señal de error en el pin F.


Fragmento de un circuito lógico automatizado (ALD) de una computadora IBM 1401 que muestra un pestillo de verificación de impresión (PRT CHK LAT). Esta página está firmada como 36.37.21.2

En la documentación también hay esquemas a nivel lógico. Son un poco más fáciles de entender que las conexiones físicas en los diagramas ALD. El siguiente diagrama de flujo muestra el diagrama de error de la impresora. A la derecha, la señal de error de verificación de impresión (PRT CHK ERROR) sale del pestillo (PR CHK LAT), que contiene la señal de error. (Este es el mismo pestillo que en el diagrama ALD anterior, como se desprende de los nombres de las señales). A la izquierda se combinan varios estados de error diferentes para formar una señal de error suministrada al pestillo. (Tenga en cuenta que los símbolos lógicos de IBM no coinciden con los estándares. Un semicírculo es una puerta OR, no un I. Un triángulo es una puerta I. La "i" en el rectángulo es un inversor).


Diagrama lógico de lógica de comprobación de errores en IBM 1401/1403. En “Manuales de instrucciones lógicas”, pág. 77, “Controles de búfer de impresión”

Varias condiciones pueden causar un error de verificación de impresión 3 , y pensamos que verificar el funcionamiento del martillo (martillo de fuego) es el candidato más probable. Recuerde que en la impresora 132 hay un martillo para imprimir una cadena de caracteres. Para verificarlos, se proporcionan dos matrices de memoria especiales. (1401 usa 4,000 caracteres de memoria de 4 núcleos ; cada bit de memoria es un pequeño anillo de ferrita que, dependiendo de la magnetización, almacena 1 o 0. Una cuadrícula de 4000 núcleos forma una matriz de memoria. Muchas matrices se apilan unas encima de otras, formando un bloque de memoria). Cada vez que la computadora decide iniciar el martillo, lo escribe en la memoria de ferrita en la matriz de verificación igual. Cuando el martillo realmente se dispara, el pulso actual del electroimán almacena el bit en la matriz de disparo. 5 5 En cada ciclo de exploración, la computadora compara las dos matrices principales para verificar el funcionamiento correcto / incorrecto de los martillos y, en caso de incumplimiento, genera un error de verificación.


Un primer plano de los electroimanes en el IBM 1403. El electroimán (cuando recibe un impulso a través de su par de cables) extrae una armadura de metal, que controla el martillo, el papel y la cinta opuestos a la letra. Se instalaron un total de 132 mazos, uno para cada columna, en dos filas de 66 piezas.

Después de algunas manipulaciones complicadas 6 descubrimos que el problema no está en verificar el funcionamiento de los martillos, sino en otra comprobación: "línea de impresión completa" (línea de impresión completa, PLC). Comprueba que para cada fila de cada columna no se imprima más de un carácter. Aquí se utiliza la tercera matriz especial de memoria: la matriz "se completa la impresión de línea". Cada vez que se imprime un carácter, se establece el bit correspondiente. (Para un carácter vacío o no imprimible, el bit se establece en un circuito separado). Al final de la línea (al escanear 49), se verifican todos los núcleos de la matriz. Si alguno de ellos es cero, es decir, la impresora no pudo imprimir esta columna, se muestra un mensaje de error. (En la lógica anterior, puede ver la señal PLC CHECK y la lógica que la genera).

Las pruebas con un osciloscopio (a continuación) mostraron que PLC CHECK (amarillo) se activa porque el sistema piensa que el segundo carácter está impreso en la misma columna. La señal cian es el bit PLC (invertido) del núcleo (PR LINE COMP LATCH); cada pulso inferior indica la impresión de un carácter en esta columna. Un pulso rosado (IMPRIMIR COMPARAR) indica que se está imprimiendo un nuevo carácter. El problema es que las señales cian y rosa se reducen simultáneamente, lo que indica un carácter existente y un nuevo carácter en la columna. Esto produce un pulso azul de emergencia (VERIFICACIÓN DEL PLC), que inicia un pulso amarillo (IMPRIMIR ERROR DE CHK desde el pestillo). Este diagrama se muestra en el diagrama lógico anterior etiquetado "Intentando imprimir la posición dos veces".


Señal de osciloscopio al depurar una impresora IBM 1401

¿Por qué el sistema piensa que dos caracteres están impresos en una columna? Esto puede ser por varias razones. En la impresión, vimos que en realidad la impresora muestra solo un símbolo esperado en el papel, por lo que el circuito para imprimir el símbolo aparentemente funciona correctamente (IMPRIMIR COMPARAR, pulso rosado único en la parte superior). Verificamos el esquema de caracteres vacío / no imprimible, y detectó correctamente columnas vacías y no vacías. Por lo tanto, el problema más probable es leer 1 del núcleo de la memoria (línea cian arriba, PR LINE COMP LATCH), cuando debería haber 0. Pero, ¿cuál es el problema real: magnetización del núcleo incorrecta o valor de salida incorrecto?

El siguiente diagrama lógico muestra el mecanismo para escribir en la memoria Imprimir línea Comparar. PR LINE COMP INH a la derecha es una señal (invertida) que se escribe en el núcleo. 8 Al escanear 49 (ciclo de verificación después de imprimir los 48 caracteres), se aplica voltaje a esta línea, borrando la memoria. Si se imprime un carácter, se emite una señal IMPRIMIR COMPARAR IGUAL. Las puertas lógicas de la izquierda definen un carácter en blanco o no imprimible. Y si el bit 1 (PR LINE COMP LATCH) ya está en el núcleo, entonces el bit 1 se sobrescribe en el núcleo.


Lógica lógica para verificar la terminación de línea en IBM 1401/1403. En “Manuales de instrucciones lógicas”, pág. 77, “Controles de búfer de impresión”

Descubrimos que este circuito registró valores falsos 1 en el núcleo porque lee valores falsos 1 del núcleo. Pero entramos en un círculo: no está claro que el problema inicial esté en leer o escribir. Para resolver el problema, configuramos el osciloscopio para escanear la impresión 49 cuando se restablecen los bits del PLC, y luego observamos el siguiente escaneo de impresión, que lee los bits borrados. Vimos 0 registrado (es decir, PR LINE COMP INH de alto voltaje), pero inesperadamente vimos que 1 regresó (PR LINE COMP latch). Nos dimos cuenta: algo está sucediendo en un nivel bajo en la memoria de ferrita.

Vale la pena mencionar que en el sistema estándar 1401, los bits de control de la impresora se almacenan en el módulo principal de la memoria de ferrita, pero nuestro sistema utiliza una "memoria impresa" separada para aumentar la productividad. El problema de rendimiento está relacionado con la forma en que la impresora usa la memoria: cada vez que el martillo está opuesto a la letra de la cinta, la computadora lee el símbolo correspondiente de la memoria e inicia el electroimán si el símbolo en el almacenamiento coincide con el símbolo debajo del martillo. Y resulta que la memoria se usa continuamente en el proceso de impresión, y la computadora no puede hacer ningún cálculo durante la impresión. Por lo tanto, introdujeron una memoria impresa separada con 132 núcleos, que actúa como un búfer de impresión. 7 7 Cuando se utiliza dicho búfer, la cadena de impresión primero se copia rápidamente de la memoria principal a la memoria de impresión. Después de eso, la computadora puede continuar usando la memoria principal. Se cobra una tarifa mensual por cada opción adicional IBM 1401: la memoria de impresión cuesta $ 386 por mes.


Esta es una canasta de placas de circuito con chips de buffer de impresión. Los paquetes de cables amarillos están conectados al bloque de memoria en la esquina superior derecha

La foto de arriba muestra una canasta con tableros que implementan la función de un búfer impreso. El módulo de memoria principal es un bloque en la esquina superior derecha con cables amarillos. (Se pueden ver núcleos de ferrita separados en la foto a continuación). La memoria de ferrita requiere una gran cantidad de circuitos auxiliares. Para seleccionar una dirección, las tarjetas de conductor generan señales X e Y. Para magnetizar el núcleo, la señal se combina con un pulso de reloj, luego la tarjeta de control amplifica la señal y la envía a través del bus de interrogación, que pasa a través de todos los núcleos en la matriz. 9 9 Al leer, el núcleo induce un pulso en el cable de señal. La tarjeta de control amplifica este pulso y luego el bit se almacena en el pestillo. Se proporcionan numerosas tarjetas en la cesta de memoria impresa para funciones auxiliares en este proceso.


Núcleos en el búfer de impresión. El cableado es diferente de la memoria de ferrita ordinaria, porque cada martillo está conectado directamente al núcleo de verificación. La calidad de imagen es pobre debido a la cubierta de plástico sobre los núcleos

Examinamos el amplificador de señal y las placas de cierre en el lado de lectura de la memoria de ferrita. Resultó que funcionaban correctamente, así que cambiamos al lado de grabación. La tarjeta de control del bus HN parecía candidata a fallar porque funciona a alto voltaje. Cambiamos la tarjeta, pero la impresora aún no se pudo iniciar. Luego intenté mirar la entrada de esta tarjeta y descubrí que no había señal en una línea.


Gráfico del osciloscopio de una tarjeta CHWW defectuosa con una compuerta lógica AND-NOT: rosa (3) y azul (4) corresponden a las señales de entrada, la salida cian (2) está atascada en alto voltaje

La señal faltante fue generada por una tarjeta de tipo CHWW , una puerta lógica NAND, que combina la señal de inhibición del bus con un pulso de reloj antes de enviarla a la tarjeta de control. Conecté el osciloscopio a la entrada y salida de la válvula y arreglé los parámetros de señal que se muestran en la ilustración de arriba. Esta traza habla por sí misma: la salida (cian 2) permanece alta incluso cuando ambas entradas (rosa 3 y azul 4) cambian el valor de bajo a alto. Es inmediatamente evidente que la válvula está defectuosa. Esto explica todo: con un valor tan atascado, solo los valores 1 se escriben en la matriz del PLC. Después de que se imprime el carácter, el circuito lee el valor 1 de la memoria, piensa que el carácter ya se ha impreso, falla la comprobación del PLC y se produce un error de comprobación de impresión.


La impresora funciona con éxito al imprimir una potencia de dos

Reemplazamos esta tarjeta, y la impresora comenzó a imprimir sin errores (foto de arriba). Esto prueba que finalmente descubrimos el problema; resultó ser una simple compuerta AND-NOT en el circuito de la memoria de ferrita del búfer impreso. A continuación se muestra una tarjeta defectuosa. Tiene tres compuertas NAND ( partes ) en lógica de diodo-transistor (que IBM llama CDTL - Lógica de diodo de transistor complementado). Cada válvula con dos señales de entrada usa un transistor de germanio (un elemento metálico redondo) y dos diodos (componentes de vidrio rayado a la derecha). A la izquierda están las resistencias de carga (rayadas) y los inductores (beige).


Tarjeta CHWW IBM 1401 defectuosa. Tiene tres puertas NAND. El transistor inferior izquierdo está fuera de servicio y ha sido reemplazado.

Probé una tarjeta con un generador de señal y descubrí que dos de las tres puertas funcionaban, y la tercera estaba atascada en una señal de salida alta, confirmando las observaciones dentro de 1401. Luego, verifiqué los transistores en modo de prueba de diodos en un multímetro. En buenos transistores, el voltaje cayó a 0.23 V. (Esto puede parecer un valor bajo, pero recuerde que estos son transistores de germanio, no de silicio). A modo de comparación, el voltaje en un transistor defectuoso disminuyó solo a 0.95 V. Finalmente, retiramos los transistores y los probamos en un caracterógrafo Tektronix 577 antiguo. Pensamos que un transistor defectuoso sería demasiado débil para controlar el pestillo, pero resultó estar completamente apagado: una línea completamente plana en el caracterógrafo.

Abrimos el transistor en un torno (torno) y miramos dentro. Utiliza la aleación de germanio IBM 083 NPN (se utilizó germanio antes que el silicio). El transistor consiste en un pequeño sustrato de germanio (un cuadrado metálico brillante en la foto de abajo) que forma la base. El emisor y el colector de dos cables están conectados por puntos de aleación de estaño. Bajo el microscopio, parece que los puntos de aleación se han corroído y el cable del emisor no parece estar conectado de manera confiable: sospechamos que esta es la causa principal de la falla.


Dentro del transistor de germanio defectuoso se encuentra IBM 083. El cuadrado plateado en el centro es un sustrato de germanio conectado a los pines de la base. El punto en el medio es la aleación de estaño para el colector, que está conectada por un cable al pin del colector a la izquierda. Un punto más pequeño en el otro lado de la matriz de germanio forma un emisor conectado al contacto de la derecha.

Conclusiones


Resultó ser más difícil estudiar este problema que la mayoría de los problemas de IBM 1401. Pero logramos encontrar la razón, reemplazar la tarjeta defectuosa y devolver la vida a la impresora. Una ventaja del IBM 1401 en comparación con los sistemas modernos es que no es una caja negra: puede mirar dentro de cualquier circuito, hasta los transistores individuales. En este caso, pudimos encontrar el transistor dañado que causó el mal funcionamiento del sistema, e incluso determinar que probablemente fue destruido por la corrosión.

Notas y enlaces


1. Una de las razones de la alta calidad de impresión de la IBM 1403 fue el uso de una cadena flexible, no listones con letras. Muchas impresoras anteriores usaban tiras de fuente que se movían verticalmente para seleccionar caracteres, por lo que cualquier error de desplazamiento o sincronización cambiaba la posición vertical de los caracteres, dando como resultado un texto ondulado feo. En 1403, una cadena de letras giraba horizontalmente, y el cambio consistía solo en un cambio apenas perceptible en la distancia entre los caracteres.

2. Podemos esperar que 132 mazos se combinen con 132 letras en la cadena y funcionen de inmediato, pero el sistema no funciona así. En cambio, los mazos y las letras se ubican de manera ligeramente diferente, por lo que solo se combina un mazo con la cadena a la vez, y un pequeño movimiento de la cadena conduce a la alineación del otro mazo con otra letra. (De hecho, forman un nonio) En particular, cada 11.1 microsegundos el circuito se mueve 0.001 pulgadas. Esto lleva a una nueva alineación del martillo y el tipo de letra. Por razones mecánicas, cada tercer martillo está alineado hasta el final de la línea (1, 4, 7, ...); Esto se llama un subescaneo y toma 555 microsegundos. Dos escaneos más permiten activar cada martillo en una línea, formando un escaneo de impresión de 1,665 milisegundos. 48 escaneos permiten que cada martillo imprima cada carácter, y luego el 49 escaneo se utiliza para verificar los errores (para un cálculo más detallado del tiempo, consulte las "Instrucciones de funcionamiento" , página 37).

El mecanismo de escaneo y escaneo puede parecer demasiado complejo. Pero se las arregla para combinar el "mundo electrónico" rápido con el "mundo mecánico" más lento. En particular, combine el martillo con la letra cada 11.1 microsegundos. La computadora lee el carácter en esta columna desde el núcleo de la memoria, lo compara con la letra y, si coinciden, comienza el martillo. Es importante aquí que el ciclo de memoria del núcleo coincida con el tiempo de alineación del martillo, lo que le permite leer el símbolo del núcleo para cada alineación del martillo. Si está interesado en cómo funciona el mecanismo de impresión, existe dicha animación .

Uno de los matices es que un golpe de martillo dura 1,52 milisegundos ( "Guía de operación", p. 32). Por lo tanto, debe ejecutarlo no cuando realmente se alinea con la letra, sino 1,52 milisegundos antes de este punto.

3. Algunas comprobaciones difíciles sobre el correcto funcionamiento de la impresora parecen redundantes. Pero para una computadora de negocios, los errores de impresión pueden ser desastrosos: imagine que los números en la nómina o en los formularios de impuestos son incorrectos. Las computadoras científicas de IBM no tuvieron tantas verificaciones de errores como las computadoras de negocios, bajo el supuesto de que los científicos notarán problemas.

4. IBM 1401 almacena 4.000 caracteres en la memoria central de ferrita, no 4096, porque es una máquina decimal (es decir, un código decimal binario) con direcciones decimales. La memoria se puede ampliar hasta 16,000 caracteres con una unidad de expansión de memoria del tamaño de un lavavajillas. Ya escribí sobre la reparación de este dispositivo. Y aquí puedes leer más sobre la memoria de ferrita 1401.

5. La grabación en memoria de cada golpe de martillo no es realizada por una computadora. En cambio, cada martillo está físicamente conectado directamente a un núcleo de memoria específico; 132 cables conectan electroimanes a los núcleos. Cuando se dispara el martillo, el impulso del electroimán atraviesa el cable a través del núcleo correspondiente, magnetizándolo (estos cables son visibles en las fotografías de los núcleos del artículo).

6. Fue difícil determinar qué señal causó un error en la entrada F debido a la lógica de "cableado" de 1401. Dado que los transistores eran caros en esos días, IBM utilizó una serie de trucos para reducir su número. Uno de los trucos es montar O en lugar de una válvula. Las señales simplemente se combinaron, por lo que si uno de los dos tenía un nivel alto, se obtendría el mismo resultado para la línea común. Por lo tanto, no podríamos simplemente sondear las señales aplicadas al pin F: todas estaban conectadas. En cambio, tuve que apagar las tarjetas para probar cada señal individualmente.

7. Hay 12 matrices de memoria en el búfer impreso, es decir, almacena 12 bits en cada lugar. Como en la memoria ordinaria, cada carácter BCDIC ocupa 6 bits, un bit más para la etiqueta de la palabra (metadatos que indican las ubicaciones de los campos) y un bit de paridad. Además, las cuatro matrices en el búfer impreso están diseñadas para detectar errores: la matriz de señales del funcionamiento de los martillos, la matriz de verificación de cumplimiento (martillos de grabación que deberían funcionar), la matriz de completar la impresión de línea (PLC, columnas de grabación con caracteres impresos) y la matriz de verificación de errores (columnas que causó un error).

8. Escribir en núcleos de ferrita parece estar sucediendo al revés: una señal alta en el bus de inhibición corresponde a la grabación 0. Esto se debe a la forma en que funcionan los núcleos. Para cambiar el estado magnético del núcleo, se requiere un fuerte impulso; y un pulso con la mitad del voltaje no lo afecta. Los núcleos están dispuestos en una cuadrícula con líneas de dirección X e Y, que proporcionan una señal para seleccionar un núcleo específico. Muchas matrices se apilan una encima de la otra, cada una por un bit. Se suministra una señal con medio voltaje a lo largo de cada línea, por lo tanto, solo en la intersección de las líneas necesarias X e Y hay suficiente corriente para magnetizar el núcleo para indicar 1. Cada matriz tiene un bus de prohibición que pasa a través de todos los núcleos de la matriz. Al grabar 1, el bus no recibe corriente, lo que magnetiza el núcleo en la dirección especificada, como se describió anteriormente. Para escribir 0 en la matriz,la media corriente se aplica al bus en la dirección opuesta. Como resultado, ninguno de los núcleos recibe suficiente corriente para la conmutación, y el núcleo en la dirección deseada permanece en el estado 0. Por lo tanto, debido a la correcta instalación de los buses, 0 y 1 pueden escribirse en las direcciones deseadas.

9. Para obtener información sobre las comprobaciones de impresión, consulte “Lógica de comandos” en la página 98. Para obtener información sobre la impresora 1403, consulte “Descripción de los componentes de IBM 1403” , Manual de mantenimiento de la impresora 1403” y “Guía de funcionamiento de la impresora 1403” . Consulte también este breve artículo sobre la impresora 1403 en la revista IEEE Spectrum. Para obtener una descripción detallada de IBM 1401, consulte "IBM 1401: Una teoría moderna del trabajo" .

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


All Articles