thumb|280px|Un Sistema IBM 1401. Desde la izquierda: lector/perforador 1402, procesador 1401, impresora 1403. La computadora IBM1401, primer miembro de la serie IBM1400, era un ordenador decimal de longitud de palabra variable, que fue sacado al mercado por la empresa IBM el 5 de octubre de 1959, siendo retirado el 8 de febrero de 1971.

Historia Proveniente de los archivos de IBM:

Lo que sigue es el texto de una nota de prensa distribuida por la División de Proceso de Datos de IBM (IBM Data Processing Division) el 5 de octubre de 1959.

El Sistema de Proceso de Datos IBM 1401 (IBM 1401 Data Processing System) pone las características propias de los sistemas de proceso electrónico de datos al alcance de negocios de menor tamaño, hasta ahora limitados al uso de equipos de tarjetas perforadas convencionales. Estas características incluyen: perforado y lectura de tarjetas a alta velocidad, cinta magnética para entrada y salida, impresión de alta velocidad, programa almacenado, y capacidad aritmética y lógica.

El 1401 puede utilizarse como un sistema independiente, conjuntamente con equipamiento IBM de tarjetas perforadas, o como equipamiento auxiliar de sistemas de las series IBM700 ó 7000.

El IBM1401 era también usado frecuentemente como controlador periférico off-line en muchas grandes instalaciones, tanto de "computación científica" como de "computación de negocio". En estas instalaciones, el ordenador principal (por ejemplo, un IBM7090) hacía toda su entrada/salida sobre cintas magnéticas de almacenamiento de datos, y el modelo1401 se utilizaba para cambiar el formato de los datos de entrada desde otros periféricos (por ejemplo, el lector de tarjetas perforadas de la lectora/perforadora de tarjetas IBM1402) a las cintas, y para transferir los datos de salida desde las cintas a otros periféricos (por ejemplo, la perforadora de tarjetas de la lectora/perforadora de tarjetas IBM1402, o la impresora de líneas IBM1403).

A lo largo de su tiempo de permanencia en el mercado se fabricaron alrededor de 20000sistemas (foto), haciendo en su momento del IBM1401 uno de los productos de mayor éxito de IBM. De los Archivos de IBM: La tarifa mensual por un 1401 era de 2500dólares en adelante, dependiendo de la configuración. A finales de 1961, el número de equipos1401 instalados tan solo en los Estados Unidos de América, había llegado a unos 2000, representando aproximadamente uno de cada cuatro ordenadores electrónicos de programa almacenado (respecto de todos los fabricantes activos por entonces). El pico de 1401 instalados superó los 10000 a mediados de los años60, y el sistema fue retirado del mercado en febrero de 1971.

Algunos miembros de IBM, particularmente John Haanstra, un ejecutivo a cargo del desarrollo del modelo 401, apoyaron su continuidad hacia modelos mayores (por ejemplo el IBM1410), pero la decisión tomada en 1964 por la alta dirección de concentrar recursos en el System/360 terminó con esos esfuerzos de forma relativamente brusca. Para proteger la inversión de los clientes de software para el 1401, IBM fue pionero en el uso de emulación de microcódigo, en forma de ROM, de manera que algunos modelos de System/360 podían ejecutar programas1401. Dicha emulación continuó hasta bien entrada la era moderna (en algunos casos, quizá, hasta que los esfuerzos por el efecto2000 causaron la reescritura del código para 1401 que todavía estaba utilizándose).

Durante la década de los70 del pasado siglo, muchas instalaciones de la India usaban el modelo1401, y algunos de los empresarios de software de la India de la actualidad empezaron con esta máquina.

En el Museo de Historia del Ordenador de Mountain View (California, Estados Unidos de América), se encuentra en curso un Proyecto de Restauración del 1401.

Arquitectura El 1401 usaba el código binario decimal de IBM (BCD). Cada byte (o carácter alfanumérico) en el 1401 se representaba por medio de seis bits, llamados A, B, 8, 4, 2 y 1. Los bits A y B se denominaban bits de zona y los bits 8, 4, 2 y 1 se denominaban bits numéricos. Con cada byte de seis bits se asociaban otros dos bits, llamados C y M. C era el bit de paridad impar (odd parity Check) y M la marca de palabra (word mark). El formato era el siguiente:

C B A 8 4 2 1 M

El 1401 estaba disponible con cinco configuraciones de memoria: 1,4K,en este artículo K toma el valor 1000, no 1024. 2K, 4K, 8K, o 16K (un número muy reducido de 1401s fueron ampliados a 32K a través de RPQ - Solicitud de Presupuesto (Request for Price Quotation) - especiales.

Una dirección de la memoria de ferrita del IBM1401 consistía en tres bytes de seis bits. Las direcciones decimales entre 000 y 999 se especificaban mediante los bits 8-4-2-1 de dichos bytes. Los bits de zona del byte más significativo especificaba un incremento de A=1000, B=2000, AB=3000, proporcionando una capacidad de direccionamiento de 4000bytes en total. Los bits de zona del byte menos significativo especificaban incrementos de 4000, 8000 o 12000, para direccionar 16000bytes (con una unidad de expansión de memoria IBM1406). Los bits de zona del byte intermedio se usaban para especificar registros índices, una de muchas funcionalidades opcionales.

Las instrucciones eran de seis longitudes (1, 2, 4, 5, 7, 8). Las instrucciones de un byte tan solo contenían un código de operación. Estos eran, bien instrucciones de un byte propiamente dichas, o bien eran instruccciones encadenadas (chained instructions) que utilizaban las direcciones de la instrucción previa. Las instrucciones de dos bytes consistían en un código de operación y un byte modificador. Las instrucciones de cuatro bytes consistían en un código de operación seguido de una dirección. Las instrucciones de cinco bytes en un código de operación, una dirección y un byte modificador. Las instrucciones de siete bytes en un código de operación seguido de dos direcciones. Y las instrucciones de ocho bytes en un código de operación, dos direcciones y un byte modificador.

Las instrucciones eran válidas únicamente si la marca de palabra del byte de menor orden (el código de operación) tenía el valor 1 y las marcas de palabra del resto de bytes el valor 0. La lectura de una instrucción se detenía y comenzaba su ejecución cuando se encontraba otro byte con la marca de palabra a 1. Había dos excepciones a esta regla: La instrucción SET WORDMARK, que establecía dos marcas de palabra, era de siete bytes aunque no le siguiera un código de operación válido. La instrucción BRANCH INDICATOR era de cinco bytes aunque no le siguiera un código de operación válido. Nota: Al margen de las dos excepciones citadas, si no se encontraba un código de operación válido antes del noveno byte la instrucción era tratada como una instrucción de ocho bytes, pero la máquina seguía recorriendo la memoria en busca de un código de operación válido (ignorando los bytes leídos) antes de comenzar la ejecución hasta que encontraba uno o hasta que detectaba un error (como, por ejemplo, el final de la memoria). Esto era considerado habitualmente como una programación chapucera, pero no necesariamente un error.

Al pulsar la tecla LOAD de la lectora/perforadora IBM1402, se leía una tarjeta en el buffer de lectura (posiciones de memoria 1-80), se establecía una marca de palabra en la posición 1 (validando la primera instrucción de la tarjeta) y se borraban las marcas de palabra en las posiciones 2-80. La primera instrucción de cualquier programa de arranque era SET WORDMARK, que validaba otras dos instrucciones. En la práctica, las primeras tarjetas del mazo que componía el programa de arranque consistían en instrucciones SET WORDMARK, instrucciones no-op, y una instrucción "leer tarjeta y saltar" (read card and branch), las cuales configuraban un patrón de marcas de palabra en el buffer de lectura. La instrucción READ CARD no alteraba las marcas de palabra presentes en el buffer de lectura. Utilizando instrucciones no-op de varias longitudes, el siguiente grupo de tarjetas encajaría en este patrón de marcas de palabra.

Software El software del 1401 incluía: Autocoder, un ensamblador más avanzado, requería un mínimo de 4K posiciones de memoria. FARGO (Fourteen-o-one Automatic Report Generation Operation: Generación Automática de Informes 1401), un predecesor de RPG, requería 4K. FORTRANII estaba disponible para sistemas con al menos 8K posiciones de memoria; el compilador Fortran del 1401 está descrito en Haines, L.H. (1965), enlace más abajo. El compilador Fortran, para generar código para memorias pequeñas, utilizaba una forma innovadora de pseudo-código interpretado. FORTRANIV estaba disponible para sistemas con al menos 8K posiciones de memoria y o bien cuatro unidades de cinta o bien una unidad de disco IBM1311. RPG. Único lenguaje de alto nivel de uso común, RPG era un lenguaje declarativo principalmente para la especificación de informes contables. Todavía (año 2007) se encuentra en uso en máquinas IBM intermedias, AS/400. SPS (Symbolic Programming System: Sistema de Programación Simbólica).La página web History of Programming Languages: SPS incluye, en su parte inferior, la afirmación, atribuida a Ray Saunders, de que SPS "fue un desarrollo de campo por parte de CEs (Customer Engineers: técnicos de hardware) y SEs (System Engineers: técnicos de sistemas) de IBM". SPS-1 podía utilizarse en máquinas con 1,4K posiciones de memoria. SPS-2 requería un mínimo de 4K posiciones de memoria.

Caracteres y códigos de operación Nota: En la tabla que sigue, si el bit de marca de palabra está activo, el bit C será el opuesto del mostrado. El bit C era determinado y verificado automáticamente por la máquina, normalmente los programadores no necesitaban preocuparse por él. La única forma de especificar el bit C era utilizando los interruptores del panel de mantenimiento. Aunque este panel era principalmente para uso de los técnicos de hardware (CEs), un programador podía utilizar sus interruptores para aplicar parches rápidos durante la depuración de programas.