IBM 1130
De Wikipedia, la enciclopedia libre
De Wikipedia, la enciclopedia libre
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.
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.
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.
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. 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.
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.
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. |
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.
(...) 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 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").
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
Los ejemplos pueden ejecutarse en un emulador de IBM 1130 disponible en IBM 1130.org (en inglés).
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
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
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
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.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.