IBM 1130

De Wikipedia, la enciclopedia libre
Consola IBM 1130, en proceso de restauración.

El Sistema de Computación IBM 1130 fue introducido en 1965.[1]​ Era el equipo menos caro de IBM, y apuntaba al mercado de bajo costo de computación técnica intensiva, como la ingeniería y la educación. El IBM 1800 fue una variante de control de proceso del 1130 con dos instrucciones agregadas (CMP y DCM) y capacidades de entrada/salida extra.

Descripción[editar]

El 1130 se volvió muy popular, y junto con los clones no-IBM fueron el primer contacto con la "computación personal" para muchas personas. Su relación precio/prestaciones fue buena y, notablemente, incluía un dispositivo de almacenamiento en disco removible, el cual no era caro, junto a un sistema operativo en disco sencillo y confiable, que soportaba varios lenguajes de alto nivel. El bajo precio y unas prestaciones bien balanceadas hicieron que se transforme en un "taller abierto" para el desarrollo de programas, disponible para un gran número de usuarios por primera vez.

Procesador y memoria[editar]

El IBM 1130 usaba módulos electrónicos del System/360 llamados Tecnología de Estado Sólido (SLT, por sus siglas en inglés) y tenían una arquitectura binaria de 16 bit, no muy diferente a las minicomputadoras posteriores, como la PDP-11 o la Data General Nova. El espacio de direccionamiento era de 15 bits, limitando la memoria del 1130 a 32K palabras de 16 bit (64 Kbytes). Tenía capacidad de direccionamiento directo e indirecto.

Software[editar]

Muchos programas fueron hechos en Fortran. El compilador Fortran del 1130 podía correr en una máquina con solo 4.096 palabras de memoria principal. Esto es 8 kilobytes, menos que el espacio mínimo de direccionamiento de archivos del sistema de archivos de algunos PC[1]. Para maximizar la velocidad y conservar espacio, el sistema operativo y los compiladores estaban escritos enteramente en lenguaje ensamblador, y las técnicas empleadas son poco vistas hoy día, incluyendo la estrecha integración de códigos y datos y el código auto-modificable. Para permitir el uso de programas que eran muy grandes para caber en la memoria principal, la implementación del lenguaje Fortran permitía que cualquier subrutina sea designada como "LOCAL", es decir, era cargada a la memoria al ser llamada. El uso de código residente en disco requería que el código ejecutable, por ejemplo una subrutina, sea "cargado" (leído) del disco a la memoria (si no estaba ya presente en la memoria) cuando la subrutina era "llamada" (invocada). El compilador estaba disponible en una versión residente en disco, así como también en una cinta perforada de 8 canales o en tarjeta perforada

Otros lenguajes de programación estaban disponibles en el 1130, incluyendo: APL,[2]BASIC, COBOL, FORTH, PL/I y RPG. La Eastern Michigan University desarrolló un compilador Fortran IV para el 1130, conocido como Fortran-EMU, que corregía un detalle del compilador de IBM: la falta de un tipo de datos LÓGICO.

Periféricos[editar]

El sistema 1130 básico incorporaba una unidad de disco IBM 2310. Esta leía los cartuchos 2315 (del tamaño de una caja de pizza) de un solo plato que almacenaban 512 K palabras o 1 Mb (menos que un disquete de 3,5" HD). Los discos se usaban para almacenar el sistema operativo, el código objeto y los datos, pero no el código fuente. Este último se mantenía en tarjetas perforadas. El sistema operativo en disco era llamado DMS o DM2 (por Disk Monitor System, Release 2).

Otros periféricos disponibles incluían las impresoras de líneas IBM 1132 y IBM 1403, la lectora/perforadora de tarjetas IBM 1442, la unidad de disco IBM 2311, el monitor de gráficos IBM 2250 y el trazador gráfico (plóter) de tambor IBM 1627. El plóter era muy usado en trabajos de ingeniería. La consola usaba un mecanismo IBM Selectric, lo cual significaba que podía cambiarse el tipo de letra reemplazando el elemento impresor, el que consistía en una bola hueca del tamaño de una pelota de golf. Había un tipo especial disponible para el APL, un poderoso lenguaje de programación orientado al cálculo de matrices que usaba una notación simbólica especial.

El IBM 1130 MTCA, por Multiple Terminal Control Adapter (Adaptador de Terminal de Control Múltiple), fue anunciado al final de la vida de los producto 1130; permitía conectar hasta 2.741 terminales a un IBM 1130, para usar con APL.

A partir de 1968, la unidad de cinta magnética IBM 2415 estaba disponible como RPQ (a precio especial).[3]

Un 1130 estándar tenía un ciclo de memoria de 3,6 microsegundos, y un modelo más caro estaba equipado con una memoria con un ciclo de 2,2 µs (se podía usar este último con una impresora 1403 conectada a través de un multiplexor 1133). Para aprovechar mejor la gama baja del mercado, IBM introdujo el 1130 Modelo 4, con un ciclo de 5,6 µs, a precio más bajo, por supuesto. La impresora 1132 del Modelo 4 se redujo también, pero la CPU más lenta no podía seguir su ritmo (La 1132 usaba la CPU para determinar que rueda de impresión debía dispararse mientras giraba, una función que consumía mucha capacidad de cálculo). Una lectura cuidadosa del manual del hardware del 1130 descubría que cuando el nivel (1) de interrupción de la impresora o la interrupción (0) de la columna de la 1442 estaban activados, el 1130 Modelo 4 funcionaba a la velocidad más rápida de 3,6 microsegundos por ciclo. Algunos usuarios del Modelo 4 escribían un falso controlador de impresora que activaba el nivel de interrupción 1 y lo dejaba así mientras duraba la parte de cálculos intensivos de su aplicación. No podía haber operaciones de entrada/salida mientras esto sucedía debido a que el 1442 usaba el nivel de interrupción 4 para marcar el fin de la tarjeta. El nivel 0 era el nivel de interrupción más alto, y el nivel 5 era el más bajo.

Modelos del IBM 1130[editar]

IBM implementó cinco modelos de la Unidad Central de Proceso 1131, que era el principal componente de procesamiento del Sistema de Computación IBM 1130.

 
 
Velocidad de almacenamiento
 
Tamaño de
almacenamiento

ciclo de 3,6 microseg.
sin disco interno

ciclo de 3,6 microseg.
más discos
ciclo de 3,6 microseg.
(70% del rendimiento) un disco
ciclo de 2,2 microseg.

más discos

ciclo de 2,2 microseg.

(sin disco interno)

4.096 palabras
Modelo 1A
Modelo 2A
Modelo 4A
---
---
8.192 palabras
Modelo 1B
Modelo 2B
Modelo 4B
Modelo 3B
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 IBM 1800 fue una variante del IBM 1130 con características adicionales para el control del proceso de las aplicaciones. Así como el IBM 1130 fue un sucesor de la IBM 1620, el IBM 1800, fue un sucesor de la IBM 1710.

Cronología[editar]

  • 11 de febrero de 1965 - IBM introduce el 1130 (Modelos A1, A2, B1 y B2). También anuncia la impresora IBM 1132, la impresora en línea de más bajo precio ofrecida por IBM hasta ese momento.
  • Cuarto trimestre de 1965 - Primera entrega a un cliente desde la planta de San José.
  • 9 de agosto de 1966 - IBM despliega el adaptador de comunicaciones asíncronas 1130, el cual permite al pequeño sistema 1130 conectarse por medio de una línea telefónica común a un IBM System/360, y funcionar como terminal de comunicaciones.
  • 17 de abril de 1967 - Se anuncia una expansión de cuatro vías para el 1130 (Modelos B3, C2, C3, D2 y D3), abarcando:
    • amplía cinco veces el almacenamiento en disco y cuatro veces la memoria principal de núcleos magnéticos;
    • una velocidad de procesamiento alrededor de 40% más rápida que la disponible anteriormente;
    • Más y más rápidos periféricos, incluyendo un lector de marcas óptico;
    • un paquete de programación mejorado.
  • enero de 1968 - Primeras entregas de los 1130 Modelos B3, C2, C3, D2 y D3.
  • julio de 1968 - La planta de Boca Raton comienza a entregar el 1130.
  • 22 de julio de 1971 - Los 1130 Modelos 4A y 4B son introducidos a nuevos niveles de economía.
  • septiembre de 1971 - Se entregan los primeros 1130 Modelo 4.
  • 31 de mayo de 1972 - Son anunciados los Modelos 1C, 1D, 5B, 5C y 5D.

Influencia del 1130[editar]

Tarjeta perforada que contiene el programa de auto-carga del 1130 que copiaba las tarjetas colocadas después de esta en la tolva de entrada.
  • Brian Utley fue el Director de Proyecto del 1130 durante su desarrollo e introducción. Brian dijo que la tercera parte del 11/30, antes que el departamento de comercialización de IBM lo llamara 1130, era conocido como el Small Engineering Computer System o SECS (Sistema de Computación de Ingeniería Pequeño).[4]​ La arquitectura inicial era de 18 bits pero fue cambiada a 16 bits debido a la influencia del desarrollo del System/360. El discurso completo de su presentación del 2005 está disponible en IBM1130.org (en inglés).
  • El notable diseñador de software Grady Booch tuvo su primer contacto con la programación en un IBM 1130:[5]

(...) Golpeé las puertas de la oficina local de ventas de IBM hasta que un vendedor se compadeció de mí. Luego de charlar por un rato, puso en mis manos un manual de Fortran. Estoy seguro que me lo dio pensando "Nunca sabré nada de este muchacho otra vez". Volví la semana siguiente, diciendo: "Esto es realmente genial. He leído todo el asunto y he escrito un pequeño programa. ¿Dónde puedo encontrar una computadora?". El hombre, para mi deleite, me encontró tiempo para programar en un IBM 1130 en los fines de semana y en horas de la tarde. Esa fue mi primera experiencia en programación, y debo agradecer al vendedor de IBM anónimo por el lanzamiento de mi carrera. Gracias, IBM.

  • El gurú del LISP Guy Steele escribió un intérprete de LISP para el IBM 1130 cuando iba a la escuela secundaria (Boston Latin School, donde había un IBM 1130 para uso de los estudiantes).[6][7]​ Su código y la documentación del LISP 1.6, junto a un resumen del trabajo necesario para que se ejecute bajo simulación, está disponible en IBM1130.org (en inglés).
  • Chuck Moore buscaba llamar a su nuevo lenguaje "Fourth", pero el sistema operativo del IBM 1130 tenía limitado los nombres a cinco caracteres, por lo que terminó llamándolo FORTH.[8]
  • Dan Bricklin, creador del programa VisiCalc, se inició en la programación cuando descubrió y usó el IBM 1130 de la Fundación Nacional de Ciencia Informática/Proyecto Matemáticas de Verano para estudiantes de secundaria, dada a la Universidad de Pensilvania en 1966.[9]

El sistema estaba en una computadora IBM 1130, una máquina con el tamaño de un escritorio con 8KB (¡sic!) de memoria, una unidad de disco de 512KB, en lector de cinta de papel Teletype CX, una perforadora de cinta BRPE, y un tipógrafo fotomecánico Photon 713. La asignación fue mi primera experiencia con la gestión de una base de datos de documentos de lectura mecánica: Aprendí a enrollar las cintas de papel perforado para que puedan ser almacenadas en forma ordenada en cestos de papeles cilíndricos.
Mientras tanto, aunque yo no lo sabía, las raíces del lenguaje de marcas se estaban plantando. Históricamente, los manuscritos electrónicos contenían códigos de control o macros que causaban que el documento se formateara en una forma particular ("codificación específica"). En contraste, la codificación genérica, que comenzó en la década de 1960, utiliza etiquetas descriptivas (por ejemplo, "encabezado", en lugar de "formato-17").

Rarezas del software[editar]

  • En una primera versión del sistema operativo, las cabeceras de los archivos escritos en FORTRAN y en los primeros compiladores de RPG no eran compatibles. Antes de usar otro lenguaje, el archivo tenía que ser copiado.
  • Los índices de registros se encontraban efectivamente en la memoria de núcleos en las posiciones 1, 2 y 3.
  • El compilador Fortran construía las matrices hacia atrás en la memoria.
  • Un sector de disco tenía 640 bytes.
  • Hubo una leyenda urbana en el momento de introducir el modelo que, puesto que era una máquina científica pequeña, el número de modelo de la IBM 1130 fue obtenido de multiplicar el número de modelo de la IBM 360 por π.

Descripción general del conjunto de instrucciones[editar]

Registros Principales:
IAR = Registro de Dirección de la Instrucción
ACC = Acumulador
EXT = Extensión de Registro
XRx = Índice de Registro x = 1,2,3

Conjunto de instrucciones nemotécnicas del 1130:
LD   = Carga ACC                  STO  = Almacena ACC
LDD  = Doble carga (ACC y EXT)    STD  = Doble almacenamiento (ACC y EXT)
LDX  = Índice de carga            STX  = Índice de Almacenamiento
LDS  = Estado de carga            STS  = Estado de almacenamiento
A    = Suma ACC                   AD   = Suma doble
S    = Resta ACC                  SD   = Resta Double
M    = Multiplica                 D    = Divide
AND  = Y booleano                 OR   = O booleano
XOR  = O eXclusivo booleano
SLA  = Despl. ACC a la izquierda  SLT  = Despl. ACC y EXT a la izquierda
SLCA = Despl. Izq. y cuenta ACC   SLC  = Despl. Izq. y cuenta ACC y EXT
SRA  = Despl. ACC a la derecha    SRT  = Despl. ACC & EXT a la derecha
RTE  = Rota ACC & EXT derecha     XCH  = Intercambio ACC y EXT
MDM  = Modifica Memoria
B    = Bifurcación
BSC  = Bifurcación o Salto en condición (Depende del Modificador)
       i.e. BP BNP BN BNN BZ BNZ BC BO BOD
BSI  = Bifurcación y almacena IAR
MDX  = Modifica Índice y Salta
WAIT = Parar                      NOP  = No Operación
XIO  = Ejecuta E/S

Instrucciones adicionales del 1800:
CMP  = Compara ACC                DCM  = Comparación Doble ACC y EXT

Formato de instrucción corta (una palabra de 16 bit):
                       1
Bits    0...45678......5
        OP---FTTDisp----

OP    es Operación
F     es formato 0 = Short
TT    es Etiqueta
Disp  es Desplazamiento

Formato de instrucción largo (dos palabras de 16 bit):
                       1               1
Bits    0...456789.....50..............5
        OP---FTTIMod----Dirección-------

OP    es Operación
F     es formato 1 = Largo
TT    es Etiqueta
I     es bit Indirecto
Mod   es Modificador

Cálculo de Dirección Efectiva (EA):
          F = 0            | F = 1, I = 0     | F = 1, I = 1
          Dirección Directa| Dirección Directa| Dirección Indirecta
-------------------------------------------------------------------
TT = 00 | EA = Despl + IAR | EA = Suma        | EA = C/Suma
TT = 01 | EA = Despl + XR1 | EA = Suma + XR1  | EA = C/Suma + XR1
TT = 10 | EA = Despl + XR2 | EA = Suma + XR2  | EA = C/Suma + XR2
TT = 11 | EA = Despl + XR3 | EA = Suma + XR2  | EA = C/Suma + XR3
-------------------------------------------------------------------
    Desp = Contiene el campo de desplazamiento
    Suma = Contiene la dirección del campo de la instrucción
       C = Contiene la locaclización específica haciendo Suma o Suma + XR

Ejemplos de Programas[editar]

Los ejemplos pueden ejecutarse en un emulador de IBM 1130 disponible en IBM 1130.org (en inglés).

Ejemplo de programa en Ensamblador[editar]

El siguiente listado muestra el contenido de un conjunto de tarjetas perforadas que compilan y ejecutan un programa en ensamblador que lee las tarjetas perforadas y las imprime en la impresora en línea.
El código siguiente Copyright (c) 2006 Kym Farnik. Código publicado bajo la licencia MIT. Ver: http://www.opensource.org/licenses/mit-license.php

 // JOB 
 // ASM
 *LIST
                     * LCARD.ASM - LIST A DECK OF CARDS TO LINE PRINTER
                     *
                     * COPYRIGHT (C) 2006 KYM FARNIK. 
                     * CODE PUBLISHED UNDER MIT LICENSE. 
                     *
                     * PROGRAM
                     *    NEW PAGE ON PRINTER
                     * A  READ A CARD
                     *    CONVERT FORMAT
                     *    PRINT A LINE ON PRINTER
                     *    GOTO A
                     *
                     START LIBF    PRNT1    GOTO NEW PAGE ON 1132
                           DC      /3100    PRINTER CHANNEL 1-NEW PAGE
                     *
                     NEXTC LIBF    CARD0    READ FROM 1442 CARD READER
                           DC      /1000    CONTROL TO READ
                           DC      CBUFF    STORE 80 COLUMNS
                     CINP  LIBF    CARD0
                           DC      0
                           B       CINP     LOOP UNTIL CARD IS READ
                     *
                           LIBF    ZIPCO    CONVERT CARD TO PRINTER
                           DC      /1100    UNPACKED IN, PACKED OUT
                           DC      CBUFF+1  INPUT BUFFER
                           DC      PBUFF+1  OUTPUT BUFFER
                           DC      80       CHARACTER COUNT
                           CALL    HLEBC    HOLLERITH TO EBCDIC
                     *
                           LIBF    PRNT1    PRINT 80 CHARACTERS
                           DC      /2000    CONTROL CODE TO PRINT
                           DC      PBUFF    PRINT BUFFER
                           DC      PERR     PRINT ERROR
                     POUT  LIBF    PRNT1    CHECK FOR PRINT COMPLETE
                           DC      0
                           B       POUT     LOOP UNTIL COMPLETE
                     *
                           B       NEXTC    READ NEXT CARD
                     *
                     * DATA
                     *
                     CBUFF DC      80       80 COLUMNS PER CARD
                           BSS     80
                     *
                     PBUFF DC      40       40 WORDS 80 CHARACTERS
                           BSS     40
                     *
                     PERR  DC      0
                           B    I  PERR     THIS RETURNS TO THE
                     *                       PRINTER ERROR HANDLER
                     *                       WHICH WILL TERMINATE THE PROGRAM
                     *
                           END     START    PROGRAM ENTRY POINT
 // XEQ
 TEST DATA 1
 HELLO WORLD
 TEST DATA 2

Ejemplo de programa en Fortran IV[editar]

El siguiente listado muestra el contenido de un conjunto de tarjetas perforadas que compilan y ejecutan un programa en Fortran y una subrutina en Fortran para el IBM 1130 corriendo el DM2.
El código siguiente Copyright (c) 2006 Kym Farnik. Código publicado bajo la licencia MIT. Ver: http://www.opensource.org/licenses/mit-license.php

 // JOB 
 // FOR
 *LIST SOURCE PROGRAM
 *ONE WORD INTEGERS
 C-------------------------------------------------------   
 C COMPUTE THE CRITICAL VALUES FOR A QUADRATIC EQN
 C 0=A*X**2+B*X+C
 C RETURNS DISCRIMINANT, ROOTS, VERTEX, FOCAL LENGTH, FOCAL POINT
 C X1 AND X2 ARE THE ROOTS
 C-------------------------------------------------------   
       SUBROUTINE QUADR(A,B,C,DISCR,X1,X2,VX,VY,FL,FPY)
       REAL A,B,C,DISCR,X1,X2,VX,VY,FL,FPY

 C DISCRIMINANT, VERTEX, FOCAL LENGTH, FOCAL POINT 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 COMPUTE THE ROOTS BASED ON THE DISCRIMINANT
       IF(DISCR) 110,120,130

 C -VE DISCRIMINANT, TWO COMPLEX ROOTS, REAL=X1, IMG=+/-X2
 110   X1 = -B / (2.0*A)
       X2 = SQRT(-DISCR) / (2.0*A)
       RETURN
       
 C ZERO DISCRIMINANT, ONE REAL ROOT
 120   X1 = -B / (2.0*A)
       X2 = X1
       RETURN 

 C +VE DISCRIMINANT, TWO REAL ROOTS
 130   X1 = (-B + SQRT(DISCR)) / (2.0*A)
       X2 = (-B - SQRT(DISCR)) / (2.0*A)
       RETURN
 C
 C NEXT STORE SUBROUTINE ON DISK USING DUP
       END
 // DUP
 *DELETE             QUADR
 *STORE      WS  UA  QUADR
 // JOB
 // FOR
 *LIST SOURCE PROGRAM   
 *IOCS(CARD,1132 PRINTER)   
 *ONE WORD INTEGERS   
 C-------------------------------------------------------   
 C PROCESS DATA CARDS WITH A,B,C
 C UNTIL A=0
 C-------------------------------------------------------   

       DATA ICARD,IPRT /2,3/
       REAL A,B,C
       REAL DISCR,XR1,XR2,VX,VY,FL,FPY

       WRITE(IPRT,901)
 901   FORMAT(' ------------------------------------------------------')

 C READ A B C, IF A=0 THEN EXIT
 100   READ(ICARD,801)A,B,C
 801   FORMAT(3F8.3)

 C     EXIT WHEN A IS ZERO
       IF (A) 110,9000,110

 C PRINT A B C 
 110   WRITE(IPRT,902)A,B,C
 902   FORMAT(' QUADRATIC A=',F8.3,' B=',F8.3,' C=',F8.3)

 C COMPUTE AND PRINT THE CRITICAL VALUES
       CALL QUADR(A,B,C,DISCR,XR1,XR2,VX,VY,FL,FPY)
       WRITE(IPRT,903) DISCR
 903   FORMAT(' DISCRIMINANT=',F9.4)
       WRITE(IPRT,904) VX,VY
 904   FORMAT(' VERTEX X=',F9.4,'  Y=',F9.4)
       WRITE(IPRT,905) FL
 905   FORMAT(' FOCAL LENGTH=',F9.4)
       WRITE(IPRT,906) VX,FPY
 906   FORMAT(' FOCAL POINT X=',F9.4,'  Y='F9.4)

       IF (DISCR) 120,130,140

 C -VE DISCRIMINANT, TWO COMPLEX ROOTS
 120   WRITE(IPRT,913) XR1, XR2
 913   FORMAT(' COMPLEX ROOTS =(',F9.4,'  +/-',F9.4,'I)')
       GO TO 200
       
 C ZERO DISCRIMINANT, ONE REAL ROOT
 130   WRITE(IPRT,912) XR1
 912   FORMAT(' ROOT  X =',F9.4)
       GO TO 200

 C +VE DISCRIMINANT, TWO REAL ROOTS
 140   WRITE(IPRT,911) XR1, XR2
 911   FORMAT(' ROOTS X1=',F9.4,'   X2=',F9.4)
 C --- GO TO 200

 C END OF QUAD
 200   WRITE(IPRT,901)
       GO TO 100

 C END OF PROGRAM
 C DATA FOLLOWS XEQ CARD
 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

Ejemplo de sesión en APL \ 1130[editar]

La siguiente imagen muestra una sesión APL \ 1130 sencilla. Esta sesión fue realizada vía el simulador 1130 disponible de IBM 1130.org
apl \ 1130 Ejemplo de sesión apl \ 1130
Esta imagen muestra el ingreso a la sesión, la adición de enteros del 1 al 100, la generación de una tabala de adiciones para los entereos 1..5 y la salida de la sesión.

Referencias[editar]

  1. "IBM INTRODUCES POWERFUL SMALL COMPUTER", IBM, C. G. Francis, Director of Information, Data Processing Division, White Plains, New York, February 11, 1965
  2. Larry Breed (agosto de 2006). «How We Got To APL\1130». Vector (British APL Association) 22 (3). ISSN 0955-1433. Archivado desde el original el 12 de mayo de 2008. Consultado el 2 de septiembre de 2009. 
  3. IBM Corporation, ed. (octubre). IBM 1130 Custom Feature Description - Attachment Channel RPQ Number 831552, Form A26-1579-0 (PDF) (1ª edición). IBM System Reference Library. Consultado el 10 de agosto de 2009.  Texto «San Jose, California  » ignorado (ayuda)
  4. Utley, Brian (30 de octubre de 2006). «Origin of the IBM 1130 Name». Archivado desde el original el 1 de octubre de 2007. Consultado el 16 de enero de 2007. 
  5. Booch, Grady (3 de abril de 2003). IBM accessdate=2007-01-16, ed. Quote from interview «Grady Booch polishes his crystal ball». 
  6. Steele, Guy L., Jr. (24 de noviembre de 2005). Dr. Dobb's Journal, ed. «Thoughts on Language Design -- New challenges require new solutions». Consultado el 16 de enero de 2006. 
  7. Steele, Guy L., Jr. «Confessions of a Happy Hacker». Archivado desde el original el 3 de febrero de 2007. Consultado el 16 de enero de 2006. 
  8. Rather, Elizabeth; Colburn, Donald and Moore, Charles (March). «The Evolution of Forth». Archivado desde el original el 12 de agosto de 2009. Consultado el 16 de enero de 2007. 
  9. Bricklin, Dan (23 de agosto de 2002). «Memories while visiting the Bay Area and the Computer History Museum». Consultado el 16 de enero de 2007. 
  10. Dixon, Bob (13 de agosto de 2005). The Big Ear, ed. «SETI in the 1970s». Consultado el 16 de enero de 2007. 
  11. Goldfarb, Charles (1996). «The Roots of SGML -- A Personal Recollection». Consultado el 16 de enero de 2007. 

Fuente[editar]