IBM 1130
El Sistema de Computación pentium 4 de acha 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
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
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
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
El sistema 1130 básico incorporaba una unidad de disco IBM 2310. Ésta 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 diskette 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
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.
Cronología
- 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úclos 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
- 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 Pennsylvania en 1966.[9]
- Un IBM 1130 con 8 kilo palabras de memoria principal fue usado por primera vez a tiempo completo para la Búsqueda de Inteligencia Extraterreste, en el radio observatorio de la Universidad Estatal de Ohio.[10]
- Charles Goldfarb, el padre de SGML, describe un trabajo de instalación de un sistema de composición basado en un IBM 1130 que "finalmente cambió mi carrera", llevándolo al lenguaje de marcado genérico:[11]
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
- En una primer 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
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
Los ejemplos pueden ejecutarse en un emulador de IBM 1130 disponible en IBM 1130.org (en inglés).
Ejemplo de programa en Ensamblador
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
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
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.
Referencias
- ↑ "IBM INTRODUCES POWERFUL SMALL COMPUTER", IBM, C. G. Francis, Director of Information, Data Processing Division, White Plains, New York, February 11, 1965
- ↑ Larry Breed (agosto de 2006). «How We Got To APL\1130». Vector (British APL Association) 22 (3). ISSN 0955-1433.
- ↑ 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)
- ↑ Utley, Brian (30 de octubre de 2006). «Origin of the IBM 1130 Name». Consultado el 16 de enero de 2007.
- ↑ Booch, Grady (3 de abril de 2003). IBM accessdate=2007-01-16, ed. Quote from interview «Grady Booch polishes his crystal ball».
- ↑ 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.
- ↑ 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.
- ↑ Rather, Elizabeth; Colburn, Donald and Moore, Charles (March). «The Evolution of Forth». Consultado el 16 de enero de 2007.
- ↑ 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.
- ↑ Dixon, Bob (13 de agosto de 2005). The Big Ear, ed. «SETI in the 1970s». Consultado el 16 de enero de 2007.
- ↑ Goldfarb, Charles (1996). «The Roots of SGML -- A Personal Recollection». Consultado el 16 de enero de 2007.
Fuente
- Esta obra contiene una traducción derivada de «IBM 1130» de Wikipedia en inglés, publicada por sus editores bajo la Licencia de documentación libre de GNU y la Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.