# IBM 650

El IBM 650 fue uno de los primeros ordenadores de IBM, y el primero que fue fabricado a gran escala. Fue anunciado en 1953, y se produjeron 2000 unidades desde 1954 (la primera venta) hasta 1962. En 1969, IBM dejó de dar servicio técnico para el 650 y sus componentes.
El 650 es una máquina que codifica tanto datos como direcciones de memoria en sistema decimal, guardando cada cifra en código biquinario. Este código guarda, mediante varios bits, dos variables: una con 2 posibles estados, y otra con 5 posibles estados.

## Componentes

IBM para los usuarios de máquinas contables anteriores, como las tabuladoras electromecánicas (con tarjetas perforadas) o el modelo IBM 604.
Un sistema 650 venía con 3 unidades (del tamaño de armarios):
* Consola (tipo 650)
* Alimentación (tipo 655)
* Lector de tarjetas y Perforador (tipo 533 o 537)
Otros equipos opcionales que se le podían añadir son:
* Unidad de disco (355)
* Lector de tarjetas (tipo 543)
* Perforador de tarjetas (tipo 544)
* Unidad de control (tipo 652)
* Unidad auxiliar (tipo 653)
* Unidad alfabética auxiliar (tipo 654)
* Unidad de cinta magnética (tipo 727)
* Estación de consultas (tipo 838)
El IBM 650 pesaba alrededor de 900 kg, y su unidad de alimentación unos 1350. Cada unidad estaba en un armario separado, de 1,5 x 0,9 x 1,8 metros. El ordenador costaba 500.000 dólares, pero podía alquilarse por 3500 al mes.

## Acceso a memoria

La memoria estaba en el tambor giratorio, que proporcionaba 2000 palabras, cada una con signo y de 10 dígitos (5 caracteres por palabra). Las direcciones de estos 2000 registros iban de 0000 a 1999 (en decimal).
Una desventaja del tambor giratorio es que hacía muy lento el acceso a memoria (tiempo de acceso medio: 2,5 ms), ya que para leer o escribir una dirección de memoria, había que esperar a que el área más apropiada del tambor pasara por debajo del cabezal de lectura/escritura.
Para optimizar esto, el código de instrucciones se encontraba salteado por el tambor, a intervalos que dependían en cada momento del tiempo de ejecución de la instrucción anterior. Por eso, era necesario guardar junto con cada instrucción la dirección de la próxima instrucción a ejecutar.

## Unidad auxiliar

La unidad auxiliar opcional (IBM 653) fue presentada el 3 de mayo de 1955, y ofrecía:
* memoria de ferrita con capacidad para 60 palabras más (de 10 dígitos cada una), en las direcciones 9000 a 9059. Es una memoria pequeña pero rápida (tiempo de acceso medio de 96 µs), y hacía falta para hacer de buffer de datos en operaciones de entrada/salida en cinta o en disco
* 3 registros índices de 4 dígitos, en las direcciones 8005 a 8007. Se indexaba la memoria del tambor sumando 2000, 4000 y 6000, y la memoria de ferrita sumando 0200, 0400 y 0600.
* Instrucciones aritméticas de coma flotante con un significante de 8 dígitos y 2 característicos (exponente): MMMMMMMMCC. Esto permitía usar números en el rango ±0,10000000x10$^{-50}$ a ±0,99999999x10$^{+49}$

## Software

Entre los programas incluidos estaba FORTRANSIT, una versión de FORTRAN que compilaba a IT (un lenguaje interpretado de la época), y que luego se compilaba a SOAP (Symbolic Optimized Assembler Program), que finalmente sería ensamblado para convertirse en lenguaje máquina.
Otro programa era una rutina interpretativa de Bell, que mediante SOAP compilaba en dos pasos, el código SPACE (Simplified Programming Anyone Can Enjoy), un lenguaje orientado a gestión.