El IBM 1130 Computing System, introducida en 1965, [1] fue IBM menos cara 's equipo en ese momento. Una máquina binaria de 16 bits, se comercializó en mercados técnicos sensibles al precio e intensivos en computación, como educación e ingeniería, sucediendo al IBM 1620 decimal en ese segmento de mercado. Las instalaciones típicas incluían una unidad de disco de 1 megabyte que almacenaba el sistema operativo, los compiladores y los programas objeto, con la fuente del programa generada y mantenida en tarjetas perforadas . Fortran era el lenguaje de programación más utilizado, pero estaban disponibles varios otros, incluido APL .
El 1130 también se usó como un front-end inteligente para conectar una unidad de pantalla gráfica IBM 2250 , o como una estación de trabajo de entrada de trabajo remota (RJE), conectada a un mainframe System / 360 .
Descripción
La producción total de la 1130 se ha estimado en 10.000. [2] El 1130 ocupa un lugar en la historia de la informática porque (y sus clones que no son de IBM) le dio a muchas personas su primera interacción directa con una computadora. Su relación precio-rendimiento era buena e incluía, en particular, almacenamiento en disco extraíble y económico, con software confiable y fácil de usar que admitía varios idiomas de alto nivel. El bajo precio (desde alrededor de $ 32 000 o $ 41 000 con unidad de disco) [1] y el conjunto de funciones bien equilibrado permitieron el desarrollo de programas interactivos de "tienda abierta" .
El IBM 1130 utiliza el mismo paquete electrónico, llamado Solid Logic Technology (SLT), que se utiliza en System / 360 . Tiene una arquitectura binaria de 16 bits , al igual que las miniordenadores posteriores como el PDP-11 y Data General Nova .
El espacio de direcciones es de 15 bits, lo que limita la memoria de 1130 a 32,768 palabras de 16 bits ( 65,536 bytes ). El 1130 usa memoria de núcleo magnético , que el procesador aborda en límites de palabras, usando modos de direccionamiento directo, indirecto e indexado.
Modelos
IBM implementó cinco modelos de la Unidad Central de Procesamiento 1131, el componente de procesamiento principal del IBM 1130. El Modelo 1 al Modelo 5 describen el tiempo del ciclo de memoria central, así como la capacidad del modelo para soportar almacenamiento en disco. Una letra de la A a la D adjunta al número de modelo indica la cantidad de memoria central instalada.
La unidad central de procesamiento IBM 1131 pesa aproximadamente 760/1050 lb (345/477 kg). [3]
Tiempo de ciclo de memoria | |||||
---|---|---|---|---|---|
Memoria central | 3,6 µs, sin disco interno | 3,6 µs, más discos | 2,2 µs, más discos | 5,6 µs (3,6 µs: ver más abajo), disco único | 2,2 µs, sin disco interno |
4096 palabras | Modelo 1A | Modelo 2A | --- | Modelo 4A | --- |
8192 palabras | Modelo 1B | Modelo 2B | Modelo 3B | Modelo 4B | Modelo 5B |
16,384 palabras | Modelo 1C | Modelo 2C | Modelo 3C | --- | Modelo 5C |
32,768 palabras | Modelo 1D | Modelo 2D | Modelo 3D | --- | Modelo 5D |
El Modelo 4 era un producto de menor precio con un tiempo de ciclo de 5,6 µs. Algunos compradores de mejoras de rendimiento observaron que el ajuste de campo para lograr la mejora fue sorprendentemente trivial.
La impresora IBM 1132 se basa en el procesador 1130 en lugar de la lógica interna para determinar cuándo disparar las ruedas de impresión mientras giran. Las impresoras del Modelo 4 funcionan más lentamente, pero el procesador más lento aún no puede seguir el ritmo. El manual de hardware revela que cuando el Modelo 4 estaba dando servicio a las dos interrupciones de nivel más alto (la interrupción de la columna del lector de tarjetas de nivel 0 o la interrupción de la impresora de nivel 1), se ejecutó en el tiempo de ciclo más rápido de 3.6 µs. Algunos usuarios del Modelo 4 escribirían un controlador de impresora falso que no descartaba la interrupción de la impresora, para beneficiarse de la mayor velocidad del procesador. Sin embargo, las interrupciones de nivel inferior se desactivan durante este intervalo, incluso la interrupción de fin de tarjeta (nivel 4) del lector de tarjetas 1442.
- Productos de continuación
El IBM 1800 es una variante del IBM 1130 para aplicaciones de control de procesos . Utiliza hardware en lugar de memoria central para los tres registros de índice y presenta dos instrucciones adicionales (CMP y DCM) además de capacidades adicionales de interrupción y E / S. Es un sucesor del IBM 1710 , ya que el IBM 1130 es un sucesor del IBM 1620 .
El IBM 1500 es un sistema educativo multiusuario basado en un IBM 1130 o un IBM 1800. Admite hasta 32 estaciones de trabajo para estudiantes, cada una con una variedad de capacidades audiovisuales .
Aparte de estos, IBM no produjo sistemas sucesores compatibles con el 1130. El IBM System / 7 es un sistema de control de procesos y en tiempo real, y el IBM Series / 1 es una minicomputadora de 16 bits de uso general.
- Cronología
- 11 de febrero de 1965: IBM presenta el 1130 (modelos 1A, 1B, 2A y 2B). También se anunció la impresora IBM 1132, la impresora de computadora en línea de menor costo jamás anunciada por IBM en ese momento.
- Cuarto trimestre de 1965 - Los primeros envíos de clientes comienzan desde la planta de San José.
- 31 de marzo de 1966: IBM presenta el sistema educativo IBM 1500.
- Abril de 1966 - Se envía IBM 1800. [4] : 497
- 9 de agosto de 1966: IBM lanza el adaptador de comunicaciones síncronas 1130, que permite que el pequeño sistema 1130 se conecte mediante líneas telefónicas regulares alquiladas y funcione como terminal de comunicaciones para cualquier modelo del IBM System / 360.
- 17 de abril de 1967 - Se anuncia una expansión de cuatro vías del 1130 (Modelos 2C, 2D, 3B, 3C y 3D), que incluye:
- Cinco veces el almacenamiento en disco y cuatro veces la memoria central;
- Una velocidad de procesamiento adicional casi un 40 por ciento más rápida que la disponible anteriormente;
- Equipos periféricos más y más rápidos, incluido un lector óptico de marcas;
- Un paquete de programación comercial mejorado.
- Enero de 1968: comienzan los primeros envíos de los modelos 1130 2C, 2D, 3B, 3C y 3D.
- Julio de 1968 - La planta de Boca Raton comienza a enviar el 1130.
- 22 de julio de 1971 - Se introducen los modelos 1130 4A y 4B en nuevos niveles de economía.
- Septiembre de 1971: comienzan los primeros envíos a clientes del modelo 1130 4.
- 31 de mayo de 1972 - Se anuncian los modelos 1C, 1D, 5B, 5C y 5D.
- 1973 - El Xerox 530 se comercializa como posible sucesor de los clientes de IBM 1130. [5] [6] [7] Los pedidos de la Xerox 530 se consideraron "alentadores" a partir de enero de 1974. [8]
Software
Para maximizar la velocidad y ahorrar espacio, el sistema operativo y los compiladores están escritos completamente en lenguaje ensamblador y emplean técnicas que son raras hoy en día, incluyendo la mezcla de código y datos, así como código auto-modificable .
Gran parte de la programación del usuario se realizó en Fortran . El compilador de 1130 Fortran puede ejecutarse en una máquina con sólo 4096 palabras de núcleo, aunque el programa compilado puede que no quepa en dicha máquina. En este compilador de múltiples pasadas , cada "fase" procesa todo el programa fuente y da un paso más hacia el código de máquina. Por ejemplo, la primera fase lee las declaraciones de origen en la memoria, descarta las líneas de comentarios, elimina los espacios excepto en los literales de texto, concatena las líneas de continuación e identifica las etiquetas. El compilador estaba disponible en una versión residente en disco, así como en cinta de papel perforada de 8 canales o tarjetas perforadas.
El sistema operativo más utilizado para el 1130 fue el Disk Monitor System Versión 2 (DM2) introducido en 1967. DM2 es un sistema orientado a lotes de una sola tarea . Requiere un sistema con al menos 4 KB de memoria central y una unidad de disco 2310 integrada para la residencia del sistema. El supervisor es pequeño para los estándares modernos, y contiene una variedad de detalles del sistema, como rutinas de interrupción de primer nivel, llamadas subrutinas de nivel de interrupción , además del controlador de disco y las rutinas para cargar el intérprete de comandos de control de trabajos y el controlador del lector de tarjetas. Los controladores de dispositivo para otros dispositivos de E / S requeridos por un trabajo se incorporan como parte de la carga de ese trabajo, que también puede incluir el reemplazo del controlador de disco básico por un controlador más avanzado. Durante la ejecución de un trabajo, solo un monitor residente , llamado Skeleton Supervisor , reside en la memoria. Este supervisor requiere solo 1020 bytes, por lo que la primera memoria disponible de una tarea comenzó con la dirección / 01FE (hexadecimal) o la palabra 510. Cuando el trabajo terminó o se canceló, el supervisor cargó el Analizador de registros de control del monitor ( MCRA ) para leer el control del trabajo para el siguiente. Mientras se ejecuta el trabajo, el supervisor está inactivo. Aparte de los controladores de dispositivos y el procesamiento de interrupciones, todo el tiempo de la CPU se dedica por completo a las actividades del trabajo. Otros programas distribuidos como parte del sistema operativo fueron una utilidad de volcado de núcleo , DUMP , y el programa de utilidad de disco , DUP .
Se dispuso de un sistema de programación de cinta de papel / tarjeta para admitir sistemas sin disco.
Existe una jerarquía de controladores de dispositivos: los que terminan en Z son para Fortran, como DISKZ, mientras que los programadores ensambladores pueden usar DISK0, y DISK1 fue incluso más rápido para leer varios sectores del disco. Pero DISKZ comienza su direccionamiento de sector con el primer sector no utilizado disponible, mientras que los otros comienzan con el sector cero del disco, lo que facilita que un programador de Fortran que se adentre en el ensamblador sobrescriba inadvertidamente el cargador de arranque.
Otros lenguajes de programación disponibles en el 1130 incluidos
- APL , [9]
- BÁSICO ,
- COBOL , [10]
- CUARTO ,
- PL / I (en forma de intérprete SL / 1 ), [11] y
- RPG . [12]
Incluso hay un compilador ALGOL , escrito en francés, de modo que "Debut ... Fin;" tomar el lugar de "Begin ... End;". Todos sus mensajes estaban en francés, por lo que la "compilación Bonne" es el objetivo.
Eastern Michigan University desarrolló un compilador Fortran IV para el 1130, conocido como Fortran-EMU, como alternativa al compilador Fortran IV (subconjunto) proporcionado por IBM. Agrega muchas características, incluido el tipo de datos LÓGICOS, diagnósticos mejorados y nombres de variables de seis letras. El compilador Fortran-EMU se distribuyó como una baraja de tarjetas perforadas en un formato de archivo de imagen de disco con toda el área restante del sistema eliminada, para evitar copiar otros módulos que normalmente residirían en el mismo disco, como el ensamblador o los compiladores.
La Universidad Estatal de Oklahoma desarrolló un compilador ALGOL 68 , escrito en ANSI Fortran 1966. [13] [14] [15]
Se desarrolló un intérprete FOCAL en la Universidad de Michigan.
IBM también distribuyó una gran biblioteca de programas, tanto compatibles con IBM (Tipo I y II) como sin soporte (Tipo III y IV).
Dado que el 1130 estaba dirigido principalmente al mercado científico, predominaron los programas científicos y de ingeniería:
- Paquete de subrutinas científicas
- Dibujar y trazar subrutinas
- Programa de flujo de carga del sistema de energía eléctrica
- Regresión múltiple
- Cálculo de las corrientes de falla del sistema de distribución eléctrica
- Análisis de tuberías
- Geometría de coordenadas COGO
- Modelado continuo de sistemas (CSMP)
- Programación lineal Optimización matemática Sistema de subrutinas
- Solucionador de sistemas de ingeniería estructural (STRESS)
- Sistema estadístico [16]
El 1130 también ocupó un nicho como máquina de procesamiento de datos para organizaciones más pequeñas:
- Paquete de subrutina comercial 1130
- Sistema de información estudiantil
- CPM / PERT
También hay software para propósitos especiales:
- Entrada de trabajo remota (RJE) [17]
- Composición tipográfica [18]
Procedimiento de operación
Los recuerdos perdurables del IBM 1130 pueden haber resultado de su necesidad de una intervención humana continua. Por lo general, se ocupaba de ejecutar "trabajos" especificados por una baraja de tarjetas perforadas . El operador humano cargaría los trabajos en el lector de tarjetas y los separaría en trabajos para devolverlos, quizás junto con la salida impresa, al remitente. El operador también tendría que vigilar el 1130 en busca de evidencia de un trabajo defectuoso o estancado e intervenir presionando la INT REQtecla en el teclado para saltar al inicio del siguiente trabajo. [19]
Marcar el inicio de un trabajo era una tarjeta perforada que comenzaba con // JOB
. Cualquier tarjeta que comenzara con //
era un comando para el supervisor y no se podía usar como programa de usuario o datos. Se incluyen otros comandos // DUP
para ejecutar el programa de utilidad de disco (para eliminar archivos o agregar el archivo en el área temporal a la colección de archivos) y // XEQ
para ejecutar un programa con nombre desde el disco. Si un programa de usuario intenta leer una tarjeta de comando, la rutina del lector de tarjetas estándar indicaría el final de la entrada al programa y guardaría el contenido de esa tarjeta para el supervisor.
- Carga de programa inicial (IPL)
A diferencia del IBM 360, donde se puede seleccionar un dispositivo de arranque desde la consola del sistema, un IBM 1130 sólo se puede "arrancar" (IPL: Carga de programa inicial) desde un dispositivo externo: un lector de tarjetas o un lector de cinta de papel. [20] [21]
El procedimiento de arranque lee una tarjeta del lector de tarjetas. La tarjeta de arranque contiene código binario [22] para leer el contenido del sector cero de la unidad de disco, que a su vez maneja la interrupción de "operación completa" desde la unidad de disco y realiza lecturas de disco adicionales para preparar el 1130 para la primera tarjeta perforada. trabajo. Todo el proceso tarda aproximadamente un segundo en completarse.
- Procedimientos de recuperación
Cuando se inicia el IBM 1130, el Supervisor todavía está en la memoria y probablemente intacto, ya que la memoria central conserva su estado sin energía. Si el operador llega a la conclusión de que un programa de usuario se ha detenido, el supervisor puede sentir una pulsación de tecla para cancelar el programa y pasar a la siguiente // tarjeta. El supervisor no está protegido contra modificaciones por un trabajo mal escrito, un caso que podría requerir que el operador reinicie el 1130. Tampoco había protección contra escritura en el disco. Si se modifica la copia del software del sistema en el disco, se puede restaurar volviéndola a cargar desde aproximadamente 4000 tarjetas perforadas codificadas en binario (aproximadamente dos cajas).
Organización del disco
La unidad de disco IBM 2310 almacenó sectores de 320 palabras (640 bytes) más una dirección de sector de una palabra. Un cilindro constaba de dos pistas en las superficies superior e inferior del 2315, o de un plato en el paquete de discos 1316 utilizado en el 2311. Cada cilindro de disco contenía ocho sectores. El monitor dividía lógicamente un sector en dieciséis bloques de disco de 20 palabras cada uno (40 B); el bloque de disco era la unidad de asignación de archivos. El sistema distinguía entre los cartuchos del sistema , que contenían el monitor y las utilidades junto con los datos del usuario, y los cartuchos que no eran del sistema , que solo contenían datos del usuario. Un cartucho del sistema contenía la identificación del cartucho y el programa de inicio en frío ( código de arranque ) en el sector 0 seguido de un área de comunicaciones y el monitor residente en los sectores uno y dos. Los sectores del tres al cinco contenían la Tabla de equivalencia de ubicación del sistema (SLET), un directorio de todas las fases de todos los programas de monitoreo. Otra información de control llenó la primera pista.
El área del sistema fue seguida por un área fija que contiene utilidades del sistema, subrutinas de controladores de disco, compiladores proporcionados por IBM y otra información de control. Esta área fue mapeada por una Tabla de Equivalencia de Ubicación Fija (FLET) que contiene el formato de archivo, el nombre del archivo y el número de bloques de disco. El área fija también contenía la Tabla de Equivalencia de Ubicación (LET), en el mismo formato que el FLET, mapeando la siguiente área de usuario del disco. LET y FLET consistían en una entrada por archivo en el disco que proporciona el nombre del archivo y la información de formato, su tamaño en bloques de disco y su número de bloque inicial. [19]
Todos los archivos de disco eran bloques de disco contiguos, por lo que no había fragmentación. Un programa que necesite almacenamiento de trabajo podría usar y modificar archivos con nombre, pero no podría expandirlos más allá de su tamaño creado. El espacio libre comenzó después del último archivo nombrado y podría estar parcialmente ocupado por un archivo temporal, como podría producir el ensamblador o un compilador. Si se iba a modificar un archivo, el proceso habitual era usar // DUP
comandos para eliminarlo, lo que movería cualquier archivo posterior para cerrar la brecha y luego darle ese nombre al archivo temporal como la nueva versión del archivo. Los archivos raramente modificados se hundirían hacia el inicio del disco a medida que se añadieran nuevos archivos o nuevas versiones, y los archivos modificados con frecuencia se empujarían entre sí hacia el final del disco.
El espacio en disco era escaso, por lo que los archivos fuente del programa normalmente se guardaban como barajas de cartas. Los usuarios que tuvieran mayores requisitos se arreglarían para tener un disco propio que contenga el sistema operativo pero solo sus archivos y tendrían que reemplazar el disco del sistema "pool" por el suyo y reiniciar el sistema cuando llegara su turno de operador. Un sistema con una segunda unidad de disco que podría dedicarse por completo al código y los datos de algunos usuarios proporcionó una gran sensación de amplitud.
Programa de utilidad de disco (DUP)
El programa Disk Utility (DUP) proporcionó comandos para transferir programas, subrutinas y datos. La tarjeta "// DUP" fue seguida por una o más tarjetas: [23]
- *TIENDA
- * TIENDACI
- *ALMACENAMIENTO DE DATOS
- * ALMACENAMIENTO
- * STOREMOD (se convierte en "TIENDA" si el artículo aún no existe)
- *VERTEDERO
- * DUMPDATA
- * DUMPLET (o ' DUMPFLET )
- *ELIMINAR
Los operandos, como era típico en ese entonces, tenían que colocarse en columnas fijas / asignadas. Aparte de los nombres de programas, subrutinas o archivos, los códigos / valores podrían ser:
- UA - Área de usuario
- FX : el área fija (sin "extensiones" según el 360; solo espacio contiguo)
- WS - Almacenamiento de trabajo
- CD : tarjeta perforada / dispositivo de entrada principal (podría ser PT : cinta de papel)
- PR - Impresora
Los programas se podían convertir a un formato más listo para usar con el comando STORECI , que invocaba Core Image Builder (la contraparte de DM2 del Linkage Editor de 360). Alternativamente, un programa podría pasar por este proceso cada vez que se ejecute, y para los programas que se usan con poca frecuencia, esto fue lo mejor para ahorrar espacio en el disco.
Dispositivos periféricos
La memoria de disco se utilizó para almacenar el sistema operativo, el código objeto y los datos, pero el código fuente se mantuvo en tarjetas perforadas.
El 1130 básico vino con una unidad de disco accionada por bobina de voz IBM 2310 , llamada "Ramkit", de la División de Productos Generales de IBM en San José. [4] : 497 Sus cartuchos de un solo plato IBM 2315 del tamaño de una caja de pizza tenían 512.000 palabras o 1.024.000 bytes (menos de 1,44 MB de disquete de 3,5 "HD o incluso 1,2 MB de disquete de HD de 5,25" ).
La máquina de escribir de consola IBM 1053 usaba un mecanismo IBM Selectric , lo que significaba que se podía cambiar el tipo reemplazando un elemento de tipo hueco del tamaño de una pelota de golf. Había un elemento de tipo especial disponible para APL , un poderoso lenguaje de programación orientado a matrices que usa una notación simbólica especial. Una fila de 16 interruptores de palanca en la máquina de escribir de la consola podría probarse individualmente desde dentro de los programas, usando la declaración especial de Fortran , por ejemplo.IF (SENSE SWITCH i)
Otros periféricos disponibles incluyen:
- Impresoras - los IBM 1132 [24] y de IBM 1403 [25] [26] impresoras de línea
- Tarjeta perforada : el lector / perforador de tarjetas IBM 1442 y el lector de tarjetas IBM 2501
- Cinta de papel : la perforadora de cinta de papel IBM 1055, el lector de cinta de papel IBM 1054 y el lector de cinta de papel IBM 1134
- Disco : la unidad de disco IBM 2311
- Cinta magnética : desde 1968, las unidades de almacenamiento de datos de cinta magnética IBM 2415 estaban disponibles como RPQ . [27]
- Gráficos - Unidad de visualización gráfica IBM 2250 .
- Color del lápiz del trazador - IBM 1627 tambor trazador.
- Lector de marcas ópticas - IBM 1231 Optical Mark Page Reader [28]
- Comunicaciones : adaptador de comunicaciones síncronas (SCA). El IBM 1130 MTCA, para Adaptador de Control de Terminal Múltiple , anunciado en 1970 [29] permitía conectar hasta cuatro terminales 2741 a un IBM 1130, para su uso con APL.
Para simplificar el diseño de los dispositivos periféricos, estos se basaron en el procesador. El lector de tarjetas no tenía búfer de memoria, pero en su lugar le dio a la CPU una interrupción de nivel cero (prioridad más alta) después de que se había leído cada columna individual de la tarjeta. Si la CPU no respondía y almacenaba los doce bits de datos antes de que otra interrupción de este tipo indicara que se había leído la siguiente columna, los datos se perderían. De manera similar, la impresora 1132 se basó en el software de la 1130. Cuando una letra como ésta A
entraba en su lugar, la CPU tenía que analizar una línea de texto almacenada en búfer y ensamblar una matriz de bits que le indicaría a la 1132 con qué posiciones de impresión se deberían imprimir. A
. Si la CPU no pudiera responder antes de que se A
girara fuera de posición, la velocidad de impresión se degradaría gravemente.
Otros periféricos aceptaban texto en un código específico del dispositivo conveniente para su hardware. La CPU tuvo que traducirlo hacia o desde el código EBCDIC en el que la CPU procesó el texto.
Descripción general del conjunto de instrucciones
Las instrucciones tenían formatos cortos (una palabra) y largos (dos palabras). La mayoría de las instrucciones computacionales, de carga y de almacenamiento hacen referencia a un registro (generalmente ACC) y una ubicación de memoria. La ubicación de la memoria se identificó, en el formato corto, mediante un desplazamiento con signo de 8 bits desde la dirección actual o uno de los registros de índice; o en el formato largo, por una dirección completa de 15 bits, que podría indexarse y especificar indirección. La memoria se abordó en unidades de palabras.
El 1130 solo admitía datos binarios de precisión simple y doble precisión de forma nativa (16 y 32 bits) almacenados en formato big-endian . Los datos decimales y de coma flotante de precisión estándar y extendida (32 y 48 bits) y decimales se apoyaron mediante el uso de subrutinas.
Las transferencias condicionales se basaron en (a) el contenido actual del acumulador, o (b) los indicadores de acarreo y desbordamiento establecidos por una operación anterior. Las transferencias pueden ser por omisión (que asumió que la siguiente instrucción era corta) o por bifurcación. Se produjo un salto si alguna de las pruebas especificadas era verdadera. Se produjo una bifurcación si ninguna de las pruebas especificadas era verdadera.
Registros principales:IAR = Registro de dirección de instrucciónACC = acumuladorEXT = Registro de extensiónXRx = Registros de índice: x = 1,2,3 Implementado como palabras de memoria 1, 2, 3, no como registros de hardware.Pruebas de condición:Z Acumulador cero- Acumulador negativo+ Acumulador positivoE acumulador inclusoC Indicador de acarreo apagadoO Indicador de desbordamiento apagado1130 Mnemotécnicos del conjunto de instrucciones:LD = Cargar ACC STO = Almacenar ACCLDD = Carga doble (ACC y EXT) STD = Almacenar doble (ACC y EXT)LDX = Índice de carga STX = Índice de almacenamientoLDS = Estado de carga STS = Estado de almacenamientoA = Agregar ACC AD = Agregar dobleS = Restar ACC SD = Restar dobleM = Multiplica D = DividirY = booleano Y O = booleano OXOR = O exclusivo booleanoSLA = Desplazar ACC a la izquierda SLT = Desplazar ACC y EXT a la izquierdaSLCA = Desplazar a la izquierda y contar ACC SLC = Desplazar a la izquierda y contar ACC y EXTSRA = Shift Right ACC SRT = Shift Right ACC & EXTRTE = Girar ACC y EXT a la derechaBSC = Condición de bifurcación u omisión (depende del modificador) es decir, BP BNP BN BNN BZ BNZ BC BO BODBOSC: bifurcar u omitir condicionalmente (alternativo para BSC con el bit 9 configurado) Sale del nivel de interrupción actual.BSI = IAR de sucursales y tiendasMDX = Modificar índice y omitir (Incrementar IAR en uno si un signo cambia o se convierte en cero)WAIT = Detener NOP = Sin operación (alternativo para SLA 0)XIO = Ejecutar E / S1800 Mnemónicos de instrucción adicionales:CMP = Comparar ACC DCM = Comparar doble ACC y EXTMnemónicos equivalentesEl ensamblador de disco introdujo varios mnemónicos equivalentes a los existentes.instrucciones destinadas a aclarar la intención del programador:SKP - Saltar con condición, equivalente a un BSC cortoB - Rama incondicional, equivalente a BSC sin condiciones especificadasBP - Acumulador de rama positivo, equivalente a BSC que especifica la condición '+'BNP - Acumulador de rama no positivoBN - Acumulador de rama negativoBNN - Acumulador de rama no negativoBZ - Acumulador de rama ceroBNZ - Acumulador de rama no ceroBC - Branch on CarryBO - Rama en desbordamientoBOD - Acumulador de rama imparMDM: Modificar memoria, equivalente a MDX de formato largo no indexadoXCH - Exchange Accumulator and Extension, equivalente a RTE 16Formato de instrucción breve (una palabra de 16 bits): 1Bits 0 ... 45678 ...... 5 OP --- FTTDisp ----OP es OperaciónF es formato 0 = CortoTT es etiquetaDisp es desplazamientoFormato de instrucción larga (dos palabras de 16 bits): 1 1Bits 0 ... 456789 ..... 50 .............. 5 OP --- FTTIMod ---- Dirección ---------OP es OperaciónF es formato 1 = largoTT es etiquetaSoy un poco indirectoMod es ModificadorCálculo de dirección efectiva (EA): F = 0 | F = 1, I = 0 | F = 1, yo = 1 Direccionamiento directo | Direccionamiento directo | Direccionamiento indirecto-------------------------------------------------- -----------------TT = 00 | EA = Displ + IAR | EA = Agregar | EA = C / AgregarTT = 01 | EA = Visualizar + XR1 | EA = Agregar + XR1 | EA = C / Agregar + XR1TT = 10 | EA = Visualizar + XR2 | EA = Agregar + XR2 | EA = C / Agregar + XR2TT = 11 | EA = Visualizar + XR3 | EA = Agregar + XR3 | EA = C / Agregar + XR3-------------------------------------------------- ----------------- Disp = Contenido del campo de desplazamiento Add = Contenido del campo de dirección de instrucción C = Contenido de la ubicación especificada por Agregar o Agregar + XR
- Memoria reservada
Las direcciones más bajas de la memoria central tenían usos dictados por el hardware o por convención:
Habla a | Uso |
---|---|
/ 0000 | Por convención, contenía la instrucción B *-1 , que se ramificaría a sí misma indefinidamente hasta que un operador notó que todas las luces IAR de la consola estaban apagadas y eliminó el trabajo, ya sea presionando Int Req o reiniciando. |
/ 0001 | XR1. Las direcciones de memoria de los registros de índice permitían movimientos directos entre ellos, como conLDX I1 2 |
/ 0002 | XR2. |
/ 0003 | XR3. |
/ 0008 | La dirección del administrador para la interrupción de nivel 0 (prioridad más alta): interrupción de "columna lista" del lector de tarjetas 1442 / perforadora. |
/ 0009 | La dirección del controlador para la interrupción de Nivel 1: impresora 1132 y adaptador de comunicaciones síncronas. Los controladores de esta interrupción y de las menores tendrían que probar una palabra de estado para determinar qué dispositivo se había interrumpido. |
/ 000A = 10 | La dirección del controlador para la interrupción de nivel 2: almacenamiento en disco, canal de acceso al almacenamiento. |
/ 000B = 11 | La dirección del controlador para la interrupción de nivel 3: trazador 1627, canal de acceso al almacenamiento. |
/ 000C = 12 | La dirección del manipulador para la interrupción de Nivel 4: lector de cinta de papel 1134, perforadora de cinta de papel 1055, consola, perforadora de lectura de tarjeta 1442, lector de tarjeta 2501, impresora 1403, lector de marcas ópticas 1231, dispositivo de canal de acceso de almacenamiento. |
/ 000D = 13 | La dirección del controlador para la interrupción de Nivel 5 (prioridad más baja): interruptores de parada e interrupción de la consola, canal de acceso al almacenamiento. |
/ 0020 = 32 | Primera palabra del campo de escaneo para la impresora 1132 (/ 0020– / 0027). |
/ 0026 = 38 | Última palabra completa del campo de escaneo. |
/ 0027 = 39 | Medio utilizado: 120 columnas = 120 bits = siete palabras de 16 bits más 8 bits. |
/ 0038 = 56 | SALIR al supervisor / volver al monitor (LLAMAR SALIR) |
Programación
Subprogramas
El 1130 no tiene soporte de hardware para una pila . La mayoría de los subprogramas se llaman con la instrucción BSI (Branch and Store IAR). Esto deposita el valor de IAR (la dirección de retorno) en la dirección de destino y transfiere el control al destino + 1. Los subprogramas regresan a donde fueron llamados en esa ocasión utilizando una rama indirecta a través de esa primera palabra del subprograma. Colocar la dirección del remitente en línea era una técnica común de las computadoras en ese momento, como la Hewlett-Packard HP 2100 , [30] la DEC PDP-8 , [31] y la Scientific Data Systems SDS 920 . [32]
Entonces, un subprograma llamado SIMPL podría organizarse de la siguiente manera (los comentarios siguen al operando de la instrucción):
SIMPL: DC * - * Este es el punto de entrada, lleno inicialmente con un cero. (lo que sea que haga la rutina) BI SIMPL Regreso por sucursal I ndirecta, a la dirección que se encuentra en la ubicación SIMPL. END SIMPL Indica al ensamblador que la fuente de la rutina SIMPLE está completa.
El subprograma se denominaría de la siguiente manera:
BSI L SIMPL Llamar a SIMPL. L (largo) es necesario si SIMPL tiene más de -128 o +127 palabras de distancia.
El pseudo-operación LLAMADA normalmente sería utilizado.
Como se muestra, el punto de entrada de un subprograma es DC *-*
una pseudo operación de ensamblador que se utiliza para definir una constante (que ocupa una palabra de almacenamiento) con el valor especificado por la expresión. El * representa la dirección actual del ensamblaje y, por lo tanto, * - * da como resultado cero. Escribir esto en lugar de 0 proporciona una nota visualmente distintiva de que un valor significativo (la dirección de retorno) se colocará allí en tiempo de ejecución. No es necesario que el punto de entrada sea la primera palabra del subprograma. De hecho, la palabra anterior puede ser el comienzo de una instrucción de bifurcación directa de dos palabras cuyo campo de dirección está en SIMPL. Entonces, las devoluciones se pueden realizar mediante ramas de una palabra allí:B SIMPL-1
Cuando se llama a SIMPL, la instrucción BSI se reemplaza *-*
con el valor actual de IAR, que es la dirección justo después de la instrucción BSI. Después de que SIMPL hace lo que está escrito para hacer, B I SIMPL
no se bifurca a SIMPL, sino indirectamente a través de él, continuando así la ejecución con la instrucción que sigue a la instrucción BSI que llamó SIMPL.
Sin arreglos adicionales para proteger la dirección de retorno, la recursividad es imposible: si SIMPL se llama a sí mismo, o llama a un subprograma que lo llamó, su dirección de retorno original se sobrescribe. La reentrada es problemática por la misma razón: una rutina de servicio de interrupción debe abstenerse de llamar a cualquier subprograma que pueda haber sido el código que se interrumpió.
La persona que llama a SIMPL puede pasarle parámetros, que pueden ser valores o direcciones de valores. Los parámetros pueden codificarse en línea (inmediatamente después de la instrucción BSI) o pueden colocarse en los registros de índice XR1 y XR2. Si los parámetros se colocan en línea, SIMPL modifica su propia dirección de retorno para que su rama indirecta final regrese más allá de los parámetros.
Las funciones enteras de un solo entero esperan el parámetro en el acumulador y devuelven su resultado allí. Las funciones de coma flotante emplean el acumulador de coma flotante (un área de dos palabras reservada por la biblioteca de coma flotante, tres palabras para mayor precisión), y así sucesivamente.
La convención de codificar 0 como valor inicial en el punto de entrada significa que si un error de programación hace que SIMPL regrese antes de la primera vez que se llamó, la ejecución saltará a la ubicación de memoria 0. Como se mencionó anteriormente , es habitual tener la ubicación 0 contiene una rama a la ubicación 0. El 1130 se atasca en la ubicación 0 y las luces IAR de la consola están completamente oscuras, dejando claro que el programa ha fallado.
Vinculación con las rutinas de la biblioteca
Para subprogramas que serían llamados muchas veces (por ejemplo, subprogramas para aritmética de punto flotante), es importante reducir el tamaño de cada llamada a una palabra. Estas "rutinas de biblioteca" utilizan el protocolo LIBF. Es más complejo que el protocolo CALL descrito en la sección anterior, pero LIBF oculta la complejidad al escritor del programa en lenguaje ensamblador.
Las rutinas de la biblioteca se direccionan a través del registro de índice XR3. (Los subprogramas de Fortran usan el registro de índice XR1 para las direcciones de los parámetros y la dirección de retorno, pero el registro XR2 no se usa). XR3 apunta a una secuencia de vectores de transferencia de tres palabras de modo que la primera entrada sea -128 palabras del valor de XR3. El programador llama a la rutina de la biblioteca usando la LIBF
pseudo-operación, que ensambla no un directo BSI
a la rutina sino una instrucción de rama indexada de una palabra ( ) cuyo desplazamiento (-128, -125, etc.) identifica el inicio de la transferencia de la rutina. vector.BSI 3 disp
El vector de transferencia es preparado por el cargador de enlace cuando arma el programa. Una entrada de vector de transferencia a una función de biblioteca llamada SIMPL toma esta forma:
DC * - * Una palabra en la que BSI almacena la dirección de retorno. BL SIMPL Bifurcación al inicio de la función de biblioteca.
La forma en que SIMPL supo dónde estaba su dirección de retorno es que, si SIMPL se declarara una rutina LIBF, el cargador de enlace modificaría el código de SIMPL, colocando la dirección de la entrada del vector de transferencia de SIMPL en SIMPL + 2. Las rutinas LIBF, a diferencia de los subprogramas CALL, no comienzan con una directiva DC para contener la dirección de retorno (está en el vector de transferencia) sino con el código real, como sigue:
SIMPL STX 1 RCVR1 + 1 Guarde el valor de XR1 de la persona que llama en una ubicación cercana. LDX I1 * - * El cargador de vinculación cambia la palabra de dirección para apuntar al vector de transferencia.
Colocar la dirección del vector de transferencia de SIMPL en SIMPL + 2 deja espacio para una instrucción de una palabra para guardar el registro de índice elegido, aquí XR1. Luego, la instrucción LDX indirecta apunta a XR1 no al vector de transferencia, sino a través de él a la dirección de retorno, oa cualquier parámetro almacenado en línea después de la BSI. SIMPL luego hace lo que fue escrito para hacer, obteniendo acceso a cualquier parámetro en línea a través de XR1 (en cuyo caso debe incrementar XR1 para la dirección de retorno), y regresa de la siguiente manera:
STX 1 RETN + 1 Almacene XR1 para prepararse para usarlo como dirección de retorno.RCVR1 LDX L1 * - * La primera instrucción de SIMPL modificó esta dirección. Ahora,* restaurar el valor original de XR1.RETN BL * - * Esta instrucción se modificó hace dos instrucciones; regreso.
- Ejemplo
Suponga que una llamada de estilo LIBF a SIMPL está en la dirección 100. Entonces la dirección de retorno sería 101, porque es una instrucción de una palabra. XR3 apunta al grupo de vectores de transferencia. Si el vector de transferencia para SIMPL comenzó en la dirección 2000, entonces el BSI se ensamblaría con un de modo que XR3 + disp = 2000. Ejecutar el BSI almacena 101 en la ubicación 2000 y salta a la ubicación 2001. En 2001 es un salto largo de dos palabras al punto de entrada de SIMPL, que el cargador de enlace podría haber colocado en la dirección 300.BSI 3 disp
disp
El salto de longitud transfiere el control a SIMPL. Después de la instrucción en 300 tiendas XR1, la instrucción en 301 es , el cargador de enlace ha colocado 2000 en la ubicación 302. Esto no carga 2000 en XR1; es una instrucción indirecta y carga el contenido de 2000, que es 101, la dirección de retorno de esa llamada a SIMPL.LDX I1 2000
En la secuencia de retorno que se muestra arriba, cuando el control llega a RETN, la instrucción que hay B L 101
, que regresa a la persona que llama. (Si hay uno o más parámetros en línea en 101, SIMPL incrementaría XR1 para apuntar a 102 o más, y este sería el destino de la B
instrucción).
- Variaciones
Si SIMPL tomó parámetros codificados en línea siguiendo la instrucción BSI, SIMPL obtiene acceso a ellos con direccionamiento indexado fuera de XR1. El primero podría obtenerse mediante LD 1 0
, el segundo mediante LD 1 1
, y así sucesivamente. Si el segundo parámetro es la dirección del parámetro real, entonces obtiene su valor. Antes de regresar, SIMPL incrementa XR1 más allá de los n parámetros con una instrucción como para colocar el valor correcto en RETN + 1.LD I1 1
MDX 1 n
Una rutina LIBF que se negó a restaurar el valor original de XR1 podría omitir los pasos anteriores y regresar con un simple salto de n parámetros en línea. Sin embargo, otras rutinas LIBF no pueden llamar a dicha rutina porque interrumpe el uso de XR1 por parte de la persona que llama para acceder a sus propios parámetros y dirección de retorno.B 1 n
La complejidad de LiBF ahorra memoria para los subprogramas que con frecuencia son llamados .: [33] : p.24 La vinculación LiBF requiere una palabra por invocación, más tres palabras para la entrada del vector de transferencia y el código adicional en la rutina en sí, mientras que la vinculación LLAMADA requiere dos palabras por invocación porque la mayoría de las LLAMADAS serán a una dirección más allá del alcance de -128 a +127 palabras del código de operación de una palabra.
El registro XR3 debe apuntar a las entradas del vector de transferencia para las rutinas de la biblioteca en lugar de a una tabla de despacho de solo sus direcciones, porque esto último requeriría que las rutinas LIBF sean llamadas con una instrucción BSI indirecta. Estas instrucciones tienen dos palabras, por lo que tal diseño anularía los ahorros de tamaño de código de LIBF. El límite de ocho bits para el campo disp del código de instrucción de una palabra limita el uso de rutinas LIBF a no más de 85 entradas distintas.
Modificación de código
Las secciones anteriores muestran que el código y los datos están entremezclados. Es común en la programación 1130 modificar los campos de dirección de las instrucciones y, de hecho, modificar instrucciones completas.
Por el compilador de Fortran
El compilador de Fortran produce código que se modifica automáticamente cuando genera código para cualquier subprograma (subrutinas o funciones) que tiene parámetros. El compilador construye una tabla de cada ubicación donde el subprograma hace referencia a uno de sus parámetros, y compila como la primera instrucción en el cuerpo del subprograma una llamada a un subprograma llamado SUBIN que usa la tabla para modificar el campo de dirección de cada referencia a un parámetro para que sea la dirección real del parámetro durante la invocación actual. SUBIN crea estos parches cada vez que se llama al subprograma.
Cuando un programa de Fortran llama a un subprograma, las direcciones de cualquier parámetro aparecen en línea después de la llamada. Por ejemplo, la declaración de Fortran CALL SIMPL (X) podría compilarse en:
BSI L SIMPL DC X La dirección de X, en la que SIMPL va a operar.
Dentro del subprograma, se puede acceder a los parámetros mediante direccionamiento indexado indirecto como se muestra arriba en Variaciones , por lo que, dado que XR1 se ha preparado adecuadamente, se podría cargar un parámetro entero en el acumulador con una instrucción como esta:
LD I1 0 Carga el valor del primer parámetro (offset 0) en el acumulador
En cambio, el compilador usó direccionamiento directo. Cuando se ejecuta SUBIN, obtiene la dirección de X y parchea el campo de dirección de la instrucción para que se convierta en:
LD LX Carga el valor de X en el acumulador
Las ventajas de SUBIN son las siguientes:
- Para obtener la dirección del operando, una instrucción indexada indirecta requiere tres ciclos de memoria (el registro de índice está en la memoria) mientras que la instrucción de acceso directo requiere solo uno.
- Si SIMPL pasara uno de sus parámetros a cualquier subprograma que esperaba recibir la dirección de su parámetro (incluidas todas las rutinas LIBF para aritmética de punto flotante), se necesita SUBIN para proporcionar la dirección real del parámetro original.
Las desventajas de SUBIN son el tiempo que necesita para ejecutarse y la memoria necesaria para la tabla de referencias. El tamaño de esta tabla es la suma de 5, el número de parámetros y el número de referencias; si esta suma supera los 511, la compilación fallará. Para subprogramas con muchas referencias a un parámetro, el autor del subprograma puede copiar el parámetro en una variable local.
Por el usuario
La modificación de instrucciones completas era una técnica común en ese momento. Por ejemplo, aunque el 1130 tiene una instrucción OR, la sintaxis de Fortran no proporciona ninguna forma de escribirla. Se puede definir una función entera IOR, lo que permite que la OR lógica sea parte de una expresión de Fortran como:
M = 3 * IOR ( I , J ) + 5
El compilador de Fortran coloca las direcciones de I y J en línea y espera el resultado en el acumulador. El uso de IOR (I, J) en una expresión de Fortran compila las siguientes cuatro palabras:
BSI L IOR Salto de dos palabras al inicio de la función IOR. Parámetro en línea de una palabra de DC IA: la dirección de I. Parámetro en línea DC JA de una palabra: la dirección de J.
De hecho, la función IOR del ensamblador no calcula I o J en absoluto. En cambio, reemplaza las cuatro palabras anteriores con lo siguiente:
LD LI Acumulador de carga con I (instrucción de dos palabras) O LJ O acumulador con J (instrucción de dos palabras)
Después de realizar esa transformación, no vuelve más allá del final del bloque de cuatro palabras (que acababa de modificar). En cambio, se bifurca a la dirección exacta desde la que se llamó originalmente. La instrucción BSI ya no está ahí; lo que hay ahora son las dos instrucciones que acaba de escribir. Combinan los dos enteros con la instrucción OR en lenguaje de máquina y dejan el resultado en el acumulador, según sea necesario.
La llamada a IOR y la transformación del bloque de cuatro palabras ocurre como máximo una vez por ejecución de programa. Si la línea de Fortran ilustrada arriba se ejecuta nuevamente, corre más rápido que la primera vez. Se podrían diseñar funciones similares para otras operaciones útiles.
Una función que se modifica automáticamente, como lo hace IOR, no puede usarse en un subprograma de Fortran en ninguno de los parámetros de ese subprograma (aunque podría usarse para combinar variables locales) porque es incompatible con el subprograma SUBIN discutido anteriormente. La transformación de IOR de su secuencia de llamada de cuatro palabras, que se muestra arriba, mueve la ubicación de la dirección de la variable I.En llamadas posteriores al subprograma Fortran, la tabla de referencias a los parámetros estaría en error y SUBIN parchearía la palabra incorrecta, en este caso colocando la nueva dirección de I sobre el código de operación OR.
Precisión ampliada
1130 FORTRAN ofrecía dos formatos de coma flotante: un formato de "precisión estándar" de 32 bits y un formato de "precisión extendida" de 40 bits.
El formato de precisión estándar contiene un significado de complemento a dos de 24 bits , mientras que la precisión extendida utiliza un significado de complemento a dos de 32 bits . El último formato hace un uso completo de las operaciones de enteros de 32 bits de la CPU. La característica en ambos formatos es un campo de 8 bits que contiene la potencia de dos polarizados por 128. Las operaciones aritméticas de coma flotante se realizan mediante software y la precisión doble no se admite en absoluto. El formato extendido ocupa tres palabras de 16 bits, y el espacio adicional simplemente se ignora. [34]
La tarjeta de opción del compilador "* EXTENDED PRECISION" le dice al compilador FORTRAN que use 40 bits en lugar de 32 bits para los datos de coma flotante.
Grandes programas de Fortran
Los datos que se van a manipular y las instrucciones que los manipulan deben residir juntos en la memoria central. La cantidad de memoria instalada (de 4.096 a 32.768 palabras) es una limitación clave. Fortran proporciona varias técnicas para escribir programas grandes a pesar de esta limitación.
- Subprogramas LOCALES
Fortran permite que cualquier subprograma se designe como "LOCAL" (Carga en llamada). Cada subprograma LOCAL es una superposición ; forma parte del programa ejecutable residente en disco, pero solo se carga en la memoria central (si no está ya allí) durante el tiempo que se llama. Entonces, por ejemplo, seis subprogramas LOCALES requerirían solo tanta memoria central como el más grande, en lugar de la cantidad total para los seis. Sin embargo, ninguno de los seis puede invocar a otro, ni directamente ni a través de subprogramas intermediarios.
- Programas en fases
Un programa completo de Fortran puede pasar el control a una fase posterior, saliendo al supervisor con una instrucción para cargar la fase de seguimiento en la memoria central. Un programa grande puede dividirse en tres partes, compiladas por separado, llamadas PART1, PART2 y PART3. La ejecución se inicia por // XEQ PART1
y en un punto adecuado, PART1 ejecutará la instrucción Fortran CALL LINK(PART2)
y así sucesivamente. El nombre del programa sucesor en CALL no puede ser variable, pero la lógica del programa puede gobernar si el control se transfiere a otra fase y qué CALL LINK
instrucción se ejecuta. Como se mencionó anteriormente , el compilador Fortran en sí fue escrito de esta manera, con cada fase de compilación realizada por un programa separado.
- Almacenamiento de datos COMÚN
Los programas, como los programas de Fortran, residen en direcciones de memoria de núcleo bajo (justo encima del supervisor). Fortran asigna espacio en las direcciones más altas para cualquier variable y matriz declarada COMÚN. Si una fase de seguimiento del programa contiene una declaración COMÚN correspondiente, entonces la información en esta área común se puede compartir entre las fases. Las fases podían omitir la declaración COMÚN sin problema, siempre que esas fases no fueran tan grandes como para que el código de su programa invade el área común. El almacenamiento COMÚN no solo comparte datos entre fases; Las variables COMUNES de memoria inferior se pueden usar para pasar datos entre un programa principal y subprogramas dentro de una sola fase, aunque los datos podrían perderse al pasar a la siguiente fase.
Ejemplos de programación
Los ejemplos se pueden ejecutar en el emulador IBM 1130 disponible en IBM 1130.org .
Ejemplo de plataforma de programa de ensamblador
La siguiente lista muestra una baraja de cartas que compila y ejecuta un programa ensamblador que lista una baraja de cartas para la impresora de línea.
// TRABAJO // ASM *LISTA * LCARD.ASM - LISTA DE UN MAZO DE TARJETAS A LA IMPRESORA * * PROGRAMA * NUEVA PÁGINA EN IMPRESORA * A LEER UNA TARJETA * CONVERTIR FORMATO * IMPRIMA UNA LÍNEA EN LA IMPRESORA * IR A * INICIAR LIBF PRNT1 GOTO NUEVA PÁGINA EN 1132 IMPRESORA DC / 3100 CANAL 1-NUEVA PÁGINA * NEXTC LIBF CARD0 LEER DEL LECTOR DE TARJETAS 1442 CONTROL DC / 1000 PARA LEER TIENDA DC CBUFF 80 COLUMNAS TARJETA CINP LIBF0 DC 0 B CINP LOOP HASTA QUE SE LEE LA TARJETA * LIBF ZIPCO CONVERTIR TARJETA A IMPRESORA DC / 1100 DESEMBALADO, EMBALADO DC CBUFF + 1 BÚFER DE ENTRADA DC PBUFF + 1 BÚFER DE SALIDA RECUENTO DE CARACTERES DC 80 LLAME A HLEBC HOLLERITH A EBCDIC * LIBF PRNT1 IMPRIMIR 80 CARACTERES CÓDIGO DE CONTROL DC / 2000 PARA IMPRIMIR BÚFER DE IMPRESIÓN DC PBUFF ERROR DE IMPRESIÓN DC PERR POUT LIBF PRNT1 VERIFICAR IMPRESIÓN COMPLETA DC 0 B PONGA EL BUCLE HASTA COMPLETAR * B NEXTC LEER TARJETA SIGUIENTE * * DATOS * CBUFF DC 80 80 COLUMNAS POR TARJETA BSS 80 * PBUFF DC 40 40 PALABRAS 80 PERSONAJES BSS 40 * PERR DC 0 BI PERR ESTO REGRESA AL * CONTROLADOR DE ERRORES DE IMPRESORA * QUE TERMINARÁ EL PROGRAMA * FINALIZAR INICIO PUNTO DE ENTRADA DEL PROGRAMA // XEQ DATOS DE PRUEBA 1 HOLA MUNDO DATOS DE PRUEBA 2
En este trabajo, el ensamblador deja el resultado de su ensamblaje en el área temporal del disco del sistema y el comando XEQ ejecuta el contenido del área temporal. El aspecto extraño END START
tiene dos significados: final de la fuente del ensamblador y el nombre del punto de entrada de la rutina, que tiene la etiqueta START.
La fuente del ensamblador comienza con la columna 21 de la tarjeta, no con la columna uno. En los sistemas sin una unidad de disco, el ensamblador perforaría el código en el inicio de la tarjeta que acababa de leer (el lector de tarjetas era en realidad un lector perforado, con la estación perforada después de la estación de lectura) y luego leería la siguiente tarjeta. Para manejar ramas hacia adelante y similares, la segunda pasada del ensamblador involucró literalmente una segunda pasada de las tarjetas a través del lector / perforador. Si se necesitaran cambios de fuente, el programador duplicaría las tarjetas para obtener una baraja con las columnas 1-20 en blanco listas para la siguiente ejecución a través del ensamblador.
Por convención, los búferes están precedidos por un recuento de palabras. El DC
(Definir constante) ensambla una palabra de conteo y el siguiente BSS
(Bloque iniciado por símbolo) reserva el número requerido de palabras para el búfer. El búfer de la tarjeta requiere 80 palabras, una para cada columna de la tarjeta. Conductor CARD0 lee cada columna tarjeta literalmente, utilizando 12 de los 16 bits de la palabra de tampón, con un conjunto de bits para el para cada agujero perforado en la fila correspondiente para esa columna. El patrón de golpes describe típicamente un carácter de texto usando el código Hollerith . El teclado de la consola también da entrada al programa en el código Hollerith, el único caso de dos dispositivos que usan la misma codificación de caracteres.
Sin embargo, la rutina de la impresora funciona con texto en EBCDIC de 8 bits con dos caracteres por palabra, lo que requiere un búfer de 40 palabras. El programa utiliza la rutina de la biblioteca ZIPCO para realizar la conversión. A pesar de las apariencias, la declaración CALL HLEBC
no se ejecuta porque HLEBC no es una subrutina, sino una tabla de conversión de Hollerith a EBCDIC suministrada por IBM. La instrucción CALL proporciona la dirección de la tabla a ZIPCO y asegura que el cargador de vinculación incluye la tabla en el programa, por lo que es el quinto parámetro de ZIPCO, aunque uno ocupa dos palabras de almacenamiento: la palabra de código de operación BSI para la CALL es no se usa y, por lo tanto, generalmente se desperdicia, pero la segunda palabra de la expansión de CALL HLEBC
es la dirección de la tabla HLEBC que necesita ZIPCO. Después de la conversión, el programa envía la salida convertida, ahora en el búfer PBUFF, a la impresora a través del controlador PRNT1. Nuevamente, el programa se repite hasta que el controlador de la impresora informa que se completó, luego el programa lee la siguiente tarjeta.
Este ejemplo no contiene ningún código para decidir cuándo detenerse. Un programa más completo buscaría tarjetas que comiencen con //
, lo que indica el inicio del siguiente trabajo. Para detener el lector de tarjetas lo antes posible, un programa podría verificar el código Hollerith de /
antes incluso de convertir la tarjeta a EBCDIC.
E / S asincrónicas y rendimiento
La llamada a CARD0 para leer una tarjeta inicia esa operación y regresa inmediatamente a la persona que llama, que podría continuar con otra actividad. Sin embargo, el programa de ejemplo no intenta superponer la entrada y la salida utilizando búferes, aunque tiene dos áreas de trabajo separadas; simplemente vuelve a CIMP para probar de nuevo. Después de que CARD0 ha detectado la interrupción de operación completa del lector de tarjetas, regresa una palabra más adelante, saltando así el salto de regreso a CIMP y abandonando el bucle.
Las rutinas de ejemplo no ejecutan los dispositivos de E / S a la máxima velocidad. En particular, el lector de tarjetas, solo unos pocos milisegundos después de informar la finalización de la lectura de una tarjeta, comenzará su secuencia de parada, después de lo cual un nuevo comando de lectura tendrá que esperar para iniciar otro ciclo de lectura. El lector IBM 1442 podía leer 400 tarjetas / minuto a máxima velocidad, pero una pequeña vacilación en los comandos de lectura reduciría a la mitad su rendimiento o algo peor. Un programa de Fortran no podía completar ni siquiera el procesamiento de entrada más simple a tiempo, por lo que no podía leer tarjetas a toda velocidad. Un DO
bucle común de Fortran para leer tarjetas hacía que el motor se detuviera y arrancara con tanta frecuencia que aceleraba el desgaste. Con el almacenamiento en búfer, el control del lector de tarjetas podría superponerse con el procesamiento, y el lector se podría ejecutar a toda velocidad a través de grandes plataformas de datos, pero la memoria para el programa más complejo y para los búferes a menudo era escasa.
Incluso con ensamblador y almacenamiento en búfer doble, un programa para enumerar una baraja de cartas del lector IBM 2501 (1000 tarjetas / minuto) en la impresora de línea no podía seguir el ritmo, ya que la traducción de patrones de orificios de tarjetas a EBCDIC para la impresora realizada por EBPRT fue demasiado lento; en su lugar, se necesitaban los más complejos ZIPCO y HLEBC, como en el ejemplo.
Ejemplo de presentación del programa Fortran IV
El siguiente listado muestra una tarjeta de cubierta que compila y ejecuta una Fortran programa y Fortran subrutina para el IBM 1130 cuando se ejecuta la DM2.
// TRABAJO // PARA * LISTA DEL PROGRAMA FUENTE * INTEGRES DE UNA PALABRA C ----------------------------------- -------------------- C CALCULE LOS VALORES CRÍTICOS PARA UNA EQN CUADRÁTICA C 0 = A * X ** 2 + B * X + C C DEVUELVE DISCRIMINANTES, RAÍCES, VERTEX, LONGITUD FOCAL, PUNTO FOCAL C X1 Y X2 SON LAS RAÍCES C ----------------------------------- -------------------- SUBRUTINA CUADR ( A , B , C , DISCR , X1 , X2 , VX , VY , FL , FPY ) REAL A , B , C , DISCO , X1 , X2 , VX , VY , FL , FPY C DISCRIMINANTE, VERTEX, LONGITUD FOCAL, PUNTO FOCAL Y DISCR = B ** 2.0 - 4.0 * A * C VX = - B / ( 2.0 * A ) VY = A * VX ** 2.0 + B * VX + C FL = 1.0 / ( A * 4.0 ) FPY = VY + FL FL = ABS ( FL ) C CALCULAR LAS RAÍCES BASADO EN EL SI DISCRIMINANTE ( DISCR ) 110 , 120 , 130 C -VE DISCRIMINANTE, DOS RAÍCES COMPLEJAS, REAL = X1, IMG = + / - X2 110 X1 = - B / ( 2.0 * A ) X2 = SQRT (- DISCR ) / ( 2.0 * A ) RETORNO C CERO DISCRIMINANTE, UNO REAL RAÍZ 120 X1 = - B / ( 2.0 * A ) X2 = X1 RETORNO C + VE DISCRIMINANTE, DOS RAÍCES REALES 130 X1 = (- B + SQRT ( DISCR )) / ( 2.0 * A ) X2 = (- B - SQRT ( DISCR )) / ( 2.0 * A ) VOLVER C C SIGUIENTE TIENDA SUBRUTINA ACTIVADA DISCO UTILIZANDO DUP END // DUP * DELETE QUADR * STORE WS UA QUADR // JOB // FOR * LIST SOURCE PROGRAM * IOCS (CARD, 1132 PRINTER) * ONE WORD INTEGERS C ------------ ------------------------------------------- C PROCESAR TARJETAS DE DATOS CON A, B, C C HASTA A = 0 C ----------------------------------------- -------------- ICARD DE DATOS , IPRT / 2 , 3 / REAL A , B , C REAL DISCR , XR1 , XR2 , VX , VY , FL , FPY ESCRIBIR ( IPRT , 901 ) 901 FORMATO ( '---------------------------------------- -------------- ' )C LEER ABC, SI A = 0 ENTONCES SALIR 100 LEER ( ICARD , 801 ) A , B , C 801 FORMATO ( 3 F8 . 3 )C SALIR CUANDO A ES CERO SI ( A ) 110 , 9000 , 110 C IMPRIMIR ABC 110 ESCRIBIR ( IPRT , 902 ) A , B , C 902 FORMATO ( 'CUADRÁTICO A =' , F8 . 3 , 'B =' , F8 . 3 , 'C =' , F8 . 3 )C COMPUTE e imprimir los valores críticos LLAMADA Quadr ( A , B , C , discr , XR1 , XR2 , VX , VY , FL , FPY ) WRITE ( IPRT , 903 ) DISCR 903 FORMATO ( '= DISCRIMINANTE' , F9 . 4 ) WRITE ( IPRT , 904 ) FORMATO VX , VY 904 ( 'VERTEX X =' , F9 . 4 , 'Y =' , F9 . 4 ) ESCRIBIR ( IPRT , 905 ) FORMATO FL 905 ( 'LONGITUD FOCAL =' , F9 . 4 ) ESCRIBIR ( IPRT , 906 ) VX , FPY 906 FORMATO ( 'PUNTO FOCAL X =' , F9 . 4 , 'Y =' F9 . 4 ) SI ( DISCR ) 120 , 130 , 140C -VE DISCRIMINANTE, DOS RAÍCES COMPLEJAS 120 ESCRIBIR ( IPRT , 913 ) XR1 , XR2 913 FORMATO ( 'RAÍCES COMPLEJAS = (' , F9 . 4 , '+/-' , F9 . 4 , 'I)' ) VAYA A 200 C CERO DISCRIMINANTE, UNA RAÍZ REAL 130 ESCRIBIR ( IPRT , 912 ) XR1 912 FORMATO ( 'RAÍZ X =' , F9 . 4 ) VAYA A 200 C + VE DISCRIMINANTE, DOS RAÍCES REALES 140 ESCRIBIR ( IPRT , 911 ) XR1 , XR2 911 FORMATO ( 'RAÍCES X1 =' , F9 . 4 , 'X2 =' , F9 . 4 ) C --- PASE A 200C FIN DE ESCRITURA QUAD 200 ( IPRT , 901 ) VAYA A 100 C FIN DEL PROGRAMA C DATOS SIGUE LA TARJETA XEQ 9000 CALL EXIT END // XEQ + 001.000 + 000.000 + 000.000 + 001.000 + 002.000 + 003.000 + 002.000 + 002.000 + 000.000 + 002.000 + 000.000-004.000 + 000.500 + 000.000-004.000 + 000.250 + 002.000 -002.000 -004.000 + 000.000-004.000 + 002.730-007.200-003.750 + 000.000 + 000.000 + 000.000
Muestra de sesión APL \ 1130
La siguiente imagen muestra una sesión APL \ 1130 simple . Esta sesión se realizó a través del simulador 1130 disponible en IBM 1130.org
La sesión anterior muestra un inicio de sesión, la suma de los números enteros del 1 al 100, la generación de una tabla de suma para los números enteros 1..5 y un cierre de sesión.
Sistemas competidores
En el mismo año de la introducción del 1130, Digital Equipment Corporation presentó el PDP-8 de 12 bits más pequeño, más barato y de mayor venta , reconocido como el primer miniordenador exitoso.
Influencia del 1130
- Brian Utley fue el director de proyectos de la década de 1130 durante su desarrollo e introducción. Brian dijo en la tercera fiesta del 30/11 que antes de que IBM Marketing nombrara al 1130, se lo conocía como Small Engineering Computer System o SECS. [35] La arquitectura inicial era de 18 bits, pero se cambió a 16 bits debido a la influencia del desarrollo de System / 360 . El diálogo completo de su presentación de 2005 está disponible en IBM1130.org .
- El notable diseñador de software Grady Booch tuvo su primera exposición a la programación en un IBM 1130: [36]
... Golpeé las puertas de la oficina de ventas local de IBM hasta que un vendedor se apiadó de mí. Después de charlar un rato, me entregó un [manual] de Fortran. Estoy seguro de que me lo dio pensando: "Nunca volveré a saber de este chico". Regresé la semana siguiente diciendo: "Esto es realmente genial. Lo leí todo y escribí un pequeño programa. ¿Dónde puedo encontrar una computadora?" El tipo, para mi deleite, me encontró programando tiempo en un IBM 1130 los fines de semana y las últimas horas de la noche. Esa fue mi primera experiencia en programación, y debo agradecer a ese vendedor anónimo de IBM por lanzar mi carrera. Gracias, IBM.
- El gurú de LISP , Guy Steele, escribió un intérprete de LISP para el IBM 1130 cuando estaba en la escuela secundaria ( Boston Latin School , que tenía un IBM 1130 para uso de los estudiantes). [37] [38] Su código y documentación para LISP 1.6, junto con un resumen del trabajo actual para hacer que se ejecute bajo simulación, está disponible en IBM1130.org .
- Chuck Moore quería llamar a su nuevo lenguaje "Cuarto", pero el sistema operativo IBM 1130 estaba limitado a nombres de cinco caracteres, por lo que terminó llamándose FORTH . [39]
- Dan Bricklin , creador del programa VisiCalc , se inició en la programación cuando aprendió y usó el IBM 1130 como parte del Proyecto de Verano de Computación / Matemáticas de la Fundación Nacional de Ciencias para estudiantes de secundaria, impartido en la Universidad de Pensilvania en 1966. [40 ]
- Se utilizó un IBM 1130 con 8 kilovatios de núcleo para la primera investigación de tiempo completo de búsqueda de inteligencia extraterrestre del mundo en el Radio Observatorio de la Universidad Estatal de Ohio . [41]
- Charles Goldfarb , el padre de SGML , describe un trabajo instalando un sistema de composición tipográfica basado en una IBM 1130 que "eventualmente cambió mi carrera", llevándolo hacia el marcado genérico: [42]
El sistema era una computadora IBM 1130, una máquina del tamaño de un escritorio con 8 KB de memoria principal, una unidad de disco de 512 KB, un lector de cinta de papel Teletype CX y una perforadora de cinta de papel BRPE, y una tipografía fotomecánica Photon 713. La tarea fue mi primera experiencia con la administración de una base de datos de documentos legibles por máquina: aprendí a enrollar la cinta de papel perforada con cuidado para que pudiera almacenarse ordenadamente en cestas de papel de desecho cilíndricas.
Mientras tanto, aunque no lo sabía, se estaban plantando las raíces del marcado generalizado. Históricamente, los manuscritos electrónicos contenían códigos de control o macros que provocaban que el documento se formateara de una manera particular ("codificación específica"). En contraste, la codificación genérica, que comenzó a fines de la década de 1960, usa etiquetas descriptivas (por ejemplo, "encabezado", en lugar de "formato-17").
- Alan Kay usó el IBM 1130 en los primeros trabajos de GUI para su doctorado. tesis en 1969. [43]
- Hutchinson central de la High School secundaria técnica ( "Hutch Tech") en Buffalo, Nueva York utiliza el IBM 1130 en los cuatro primeros años de la nación de la escuela secundaria plan de estudios de ciencias de la computación en 1969. Robert santuci era la cabeza programa informático y dio clases en la programación y la lógica inductiva . [44]
- Un ingeniero de IBM fue contratado por Signetics e incorporó una serie de características arquitectónicas del IBM 1130 en el procesador de un solo chip Signetics 2650 . [45]
1130 hoy
De un estimado de 10,000 sistemas producidos, se sabe que existen los siguientes a partir de 2021:
- ACONIT en Grenoble, Francia tiene un sistema 1130 completo. [46]
- El Museo de Historia de la Computación ( Mountain View, California ) tiene un sistema 1130. [47]
- COSECANS ( Basilea, Suiza ). [48]
- El Museo Nacional de Computación (TNMOC) (Bletchley Park, Reino Unido) tiene un sistema 1130 completo. [49] [50]
- La Universidad de Stuttgart (Alemania) tiene un sistema 1130 funcional. [51]
- Carl Claunch está restaurando actualmente un sistema 1130. [52]
Libros apócrifos
La especulación sobre por qué se le dio al producto el número 1130 se centró en las siguientes posibilidades:
- Que, dado que el 1130 era una pequeña máquina científica, el número se eligió multiplicando 360 (como en IBM 360 ) por π .
- Esas 11:30 fue la hora del día en que los planificadores de productos llegaron a un punto muerto con respecto a cómo llamar al producto.
- Que el 1130 era el undécimo diseño informático de IBM y tenía 30 instrucciones.
Otros han especulado que la existencia del IBM 1130 explica por qué ninguna computadora designada como "11/30" apareció en la familia de máquinas PDP-11 . [53]
Ver también
- Mainframe de IBM
- Lista de productos IBM
Referencias
- ↑ a b Francis, CG (11 de febrero de 1965). "IBM presenta una pequeña y potente computadora" . Director de Información (Comunicado de prensa). White Plains, Nueva York : International Business Machines (IBM). Archivado desde el original el 5 de julio de 2019.
- ^ Utley, Brian (enero de 2005). "Ponente invitado: Brian Utley" (MP3) (Entrevista) . Consultado el 2 de enero de 2012 .
- ^ 760 lb: modelos 1A, 1B, 2A, 2B, 4A y 4B
1050 lb: modelos 1C, 1D, 2C, 2D, 3B, 3C, 3D, 5B, 5C y 5D- "Documentos IBM 1130" . www.bitsavers.org . fe / GA26-5914-8_1130_Installation_Manual_Physical_Planning_Dec71.pdf , págs. 10-11.
- ^ a b Emerson W. Pugh; Lyle R. Johnson; John H. Palmer (1991). Los sistemas 360 de IBM y los primeros 370 . MIT Press. ISBN 978-0-262-16123-7.
- ^ "Nuevo miniordenador Xerox" . The New York Times . 29 de enero de 1973.
- ^ "Xerox 530 es compatible con COBOL" . ComputerWorld . 26 de diciembre de 1973.
- ^ "Ordenador Xerox 530 de rango" (PDF) . computerhistory.org . Consultado el 23 de septiembre de 2014 .
- ^ "Xerox 530 pedidos" alentadores " " .
- ^ Larry Breed (agosto de 2006). "Cómo llegamos a APL \ 1130" . Vector (Asociación británica de APL) . 22 (3). ISSN 0955-1433 . Archivado desde el original el 12 de mayo de 2008 . Consultado el 11 de marzo de 2007 .
- ^ para el que había un compilador de IBM
- ^ SL / 1: existen referencias al idioma del alumno / uno, el idioma del alumno / 1 y el subconjunto de idioma / 1
- ^ un producto del programa de IBM
- ^ Hedrick, GE; Robertson, Alan, "El compilador del subconjunto ALGOL 68 del estado de Oklahoma". 1975 Conferencia Internacional sobre ALGOL 68. Stillwater, OK, 10-12 de junio de 1975.
- ^ Hedrick, GE, "Instrucción ALGOL68 en la Universidad Estatal de Oklahoma" , ACM SIGCSE Bulletin - Octavo simposio técnico de número especial sobre la página de inicio de educación informática, volumen 9 número 3, agosto de 1977, ACM Nueva York, NY, EE. UU.
- ^ McJones, Paul, "Implementaciones y dialectos de Algol 68" , Grupo de preservación de software , Museo de Historia de la Computación
- ^ IBM Corporation (1967). 1130 Statistical System (1130-CA-06X) Manual del usuario (PDF) . Consultado el 8 de febrero de 2015 .
- ^ IBM Corporation (1968). IBM 1130 Remote Job Entry Work Station Program Program Logic Manual (PDF) . Consultado el 8 de febrero de 2015 .
- ^ IBM Corporation (1967). Sistema de composición tipográfica IBM 1130 (RPQ) (PDF) . Consultado el 8 de febrero de 2015 .
- ^ a b IBM Corporation (mayo de 1972). IBM 1130 Disk Monitor System, versión 2, Guía del operador y del programador (PDF) . Consultado el 6 de febrero de 2015 .
- ^ "Este artefacto" . Consultado el 21 de febrero de 2017 .
- ^ Cita: " Nuestro 1130 tiene una unidad de cartucho de disco 2315 de 1/2 millón de palabras en el lado derecho, detrás de la puerta. El lector de cinta de papel probablemente se usó principalmente para arrancar, en lugar de la gran tarjeta 1442 de 300 tarjetas / min. lector " .
- ^ Biblioteca de referencia de sistemas Características funcionales de IBM 1130 (PDF) . La página 136 de las características funcionales, Figura 40, muestra cómo cada uno de los 12 orificios de una tarjeta perforada llena los 16 bits de una palabra de memoria, cuando se realiza una IPL (Carga de programa inicial), usando "Lectura en modo de carga".
- ^ "Monitorear programas" .
- ^ Modelo 1 a 80 líneas / minuto, modelo 2 a 40 LPM
- ^ opción de 340 líneas / minuto Modelo 6, 600 LPM Modelo 7
- ^ "Procedimientos operativos de IBM 1130 de la biblioteca de referencia de sistemas" (PDF) . BitSavers .
- ^ Descripción de funciones personalizadas de IBM 1130 - Número de RPQ del canal adjunto 831552, formulario A26-1579-0 (PDF) . Biblioteca de referencia del sistema IBM (primera edición). San José, California: IBM Corporation. Octubre de 1968 . Consultado el 10 de agosto de 2009 .
- ^ "Lector de páginas de marcas ópticas IBM 1231" .
- ^ IBM Corporation. "Archivos de IBM: cronología DPD (página 4)" . Consultado el 10 de agosto de 2011 .
- ^ Hewlett-Packard (diciembre de 1971). Manual de referencia de la computadora 2100A (PDF) . pag. 18 . Consultado el 5 de agosto de 2016 .
- ^ "Manual del usuario de PDP-8" . Corporación de Equipos Digitales. Mayo de 1966 . Consultado el 26 de abril de 2021 .
- ^ Scirntific Data Systems. Manual de referencia de la computadora 920 (PDF) . pag. 17 . Consultado el 5 de agosto de 2016 .
- ^ IBM Corporation (1968). IBM 1130 Assembler Language (PDF) . Consultado el 6 de febrero de 2015 .
- ^ Biblioteca de subrutinas IBM 1130, novena edición (PDF) . IBM Corporation. 1974. p. 93.
- ^ Utley, Brian (30 de octubre de 2006). "Origen del nombre IBM 1130" . Archivado desde el original el 1 de octubre de 2007 . Consultado el 16 de enero de 2007 .
- ^ Booch, Grady (3 de abril de 2003). "Grady Booch pule su bola de cristal" . IBM . Consultado el 16 de enero de 2007 .
- ^ Steele, Guy L. Jr. (24 de noviembre de 2005). "Reflexiones sobre el diseño del lenguaje: los nuevos desafíos requieren nuevas soluciones" . Diario del Dr. Dobb . Consultado el 16 de enero de 2006 .
- ^ Steele, Guy L. Jr. "Confesiones de un hacker feliz" . Archivado desde el original el 3 de febrero de 2007 . Consultado el 16 de enero de 2006 .
- ^ Más bien, Elizabeth; Colburn, Donald; Moore, Charles (marzo de 1993). "La evolución de Forth" . Consultado el 16 de enero de 2007 .
- ^ Bricklin, Dan (23 de agosto de 2002). "Recuerdos mientras visitaba el Área de la Bahía y el Museo de Historia de la Computación" . Consultado el 16 de enero de 2007 .
- ^ Dixon, Bob (13 de agosto de 2005). "SETI en la década de 1970" . La gran oreja . Consultado el 16 de enero de 2007 .
- ^ Goldfarb, Charles (1996). "Las raíces de SGML - un recuerdo personal" . Consultado el 16 de enero de 2007 .
- ^ Kay, Alan C., "El motor reactivo" , Ph.D. disertación, Universidad de Utah, 1969. "Las rutinas de visualización de gráficos, el generador de caracteres y el editor se ejecutaron durante un año en una computadora IBM 1130 con una interfaz de" elaboración casera ". Desafortunadamente, el 1130 se esforzaba por actuar simplemente como un búfer de visualización glorificado , y no se implementó ninguna de las rutinas algorítmicas ".
- ^ Koch, Warren (1972). "El uso de computadoras en la enseñanza en las escuelas secundarias" (PDF) . Consultado el 6 de agosto de 2014 .
- ^ "Signetics 2650: un IBM en un chip" . CPU Shack. 16 de octubre de 2016 . Consultado el 25 de octubre de 2016 .
- ^ "IBM 1130" . ACONIT (en francés) . Consultado el 11 de julio de 2016 .
- ^ "Detalles del artefacto: modelo BM 1130" . Museo de Historia de la Computación . Consultado el 11 de julio de 2016 .
- ^ Wyss, Oscar. "Sitio web de Oscar E. Wyss" . COSECANS (en alemán) . Consultado el 11 de julio de 2016 .
- ^ "Restauración del sistema IBM 1130 durante 2011" . El Museo Nacional de Computación . Archivado desde el original el 4 de abril de 2019 . Consultado el 11 de julio de 2016 .
- ^ "Galería de grandes sistemas: IBM 1130" . Museo Nacional de Computación. Archivado desde el original el 11 de febrero de 2020 . Consultado el 11 de febrero de 2020 .
- ^ "IBM 1130" . Computermuseum der Fakultät Informatik . Consultado el 11 de julio de 2016 .
- ^ Claunch, Carl. "Rescate 1130" . Consultado el 11 de julio de 2016 .
- ^ PDP-11/20 y / 15
enlaces externos
- IBM Archive: comunicados de prensa de IBM 1130 , cronología, fotos, carpeta de datos.
- IBM 1130.org Sitio de Norm Aleks y Brian Knittel que tiene información importante sobre el 1130 y un simulador descargable que admite los entornos DMS R2V12 y APL.
- www.ibm1130.net es el sitio de Howard Shubs dedicado al 1130.
- Cuenta personal de Arnold Reinhold del 1130. El texto de aquí se ha incorporado a este artículo con permiso.
- Un conjunto de archivos PDF compuesto por manuales escaneados de IBM 1130
- La página de Kym Farnik sobre Computación retro específicamente el 1130
- Una discusión sobre el (entonces) centro de cómputo Angle Park que estaba equipado con IBM 1130
- Fotos de IBM 1130 de Bob Rosenbloom
- Material de IBM 1130 en la Universidad de Columbia, sitio de Historia de la Computación.
- Una colección de Flickr de fotos detalladas tomadas por Peter Vaughan de un IBM 1130 en el Museo Nacional de Computación