Articulo de referencia

Código mnemotécnico de City & Guilds

El Código Mnemónico de City & Guilds y su computadora asociada, City & Guilds Computer, constituían una especificación para un lenguaje ensamblador y un sistema informático virt...

El Código Mnemónico de City & Guilds y su computadora asociada, City & Guilds Computer, constituían una especificación para un lenguaje ensamblador y un sistema informático virtual que lo ejecutaba. Fue presentado en 1964 por el Instituto City and Guilds de Londres y sirvió de base para varios cursos de programación y administración de computadoras . El modelo informático era deliberadamente muy simple, y los sistemas operativos se implementaron como intérpretes en varias computadoras centrales, como la serie ICL 1900 y la familia Elliot 900. En 1968 se publicó una versión actualizada.

Historia

El City and Guilds of London Institute (C&G) ha ofrecido una amplia variedad de programas de formación profesional y aprendizaje desde finales del siglo XIX. A principios de la década de 1960, los primeros sistemas informáticos comenzaron a proliferar rápidamente en las grandes empresas, y C&G decidió introducir una serie de programas sobre el funcionamiento y la programación de ordenadores. [ 1 ]

El Código Mnemónico de City & Guilds abordó el problema de la incompatibilidad generalizada entre plataformas mediante la introducción de un nuevo lenguaje ensamblador que podía interpretarse en una máquina virtual en cualquier plataforma suficientemente potente. El sistema se simplificó deliberadamente para maximizar el número de máquinas que podían ejecutarlo. También añadió una serie de características que normalmente no se asocian con el ensamblador, como el formato de datos estándar de punto flotante y la inclusión de varias características para matemáticas avanzadas y manejo de cadenas que normalmente se esperarían en un lenguaje de alto nivel como BASIC . [ 1 ]

La primera versión se publicó en 1964 y se utilizó en dos cursos: Certificados Básicos y Avanzados para Personal Informático. El sistema se actualizó en 1968 como el Código Mnemónico Revisado, momento en el que el curso Básico pasó a denominarse Certificado en Programación Informática y Procesamiento de la Información. [ 1 ]

Descripción

La computadora virtual era una rareza, ya que su tipo de dato básico era el número de punto flotante, [ 2 ] a diferencia de la mayoría de las máquinas del mundo real que usaban enteros binarios, o, en el caso de las máquinas orientadas a los negocios de la época, el decimal codificado en binario . Además de los comandos de bajo nivel que se encuentran en la mayoría de los ensambladores, como la carga de datos desde la memoria o el desplazamiento de bits , C&G también incluía la multiplicación y la división, así como una serie de características más avanzadas como exponentes y funciones trigonométricas. Una ubicación de memoria podía contener alternativamente un carácter. [ 2 ]

La computadora se definió con una memoria principal de 1000 palabras. Las primeras diez direcciones podían usarse como registros de índice , pero también tenían significados especiales. La ubicación cero se establecía permanentemente al valor cero, mientras que la 1 era el acumulador y la 4 contenía la dirección de retorno durante las llamadas a subrutinas . En la edición revisada, la 5 se usaba con la LOPinstrucción y la 6 y la 7 se usaban para especificar el formato al convertir de caracteres a números mediante la CNCinstrucción. [ 2 ] [ 3 ]

La máquina tenía un diseño de acumulador . La mayoría de las instrucciones tomaban dos operandos que apuntaban a la memoria principal, denominados n y m. n era normalmente un valor de 12 bits del 0 al 999, mientras que m seleccionaba uno de los registros del 0 al 9. El valor de ese registro se sumaba a n para producir una dirección completa. Por ejemplo, la ADDinstrucción leía los dos operandos, sumaba el valor del registro seleccionado m al valor constante n y luego accedía al valor en la ubicación de memoria resultante, denominada C. [ 4 ]

En la documentación, si el valor en cuestión se leía de una ubicación de memoria, se indicaba entre paréntesis, por lo que la mayoría de las instrucciones eran de la forma n+(m), lo que significa que el valor en el registro/ubicación de memoria m se sumaba al valor constante n. La suma realizaba la operación A = A + (n+(m)), lo que significa que el valor en el registro m se sumaba al valor constante n, y luego el valor en la ubicación de memoria resultante, (n+(m)), se sumaba al valor que ya estaba en el acumulador. [ 3 ]

El sistema se creó antes de que se estandarizara ASCII y, como era típico en las máquinas de la época, utilizaba su propio conjunto de caracteres personalizado . Este contenía los caracteres del 0 al 9 en las posiciones del 0 al 9, de la A a la Z en las posiciones del 10 al 35, y luego una serie de símbolos para un total de 64 caracteres. [ 5 ] [ 6 ] [ a ]

El sistema carecía de cualquier mecanismo para incluir comentarios en el código . También carecía de etiquetas simbólicas, por lo que si el programa añadía o eliminaba líneas, el programador tenía que actualizar manualmente la ubicación de las bifurcaciones. [ 3 ]

Instrucciones

Las instrucciones del Código Mnemónico se pueden dividir en tres grandes categorías: operaciones matemáticas y lógicas básicas que se asemejan mucho a la mayoría de los lenguajes ensamblador, operaciones matemáticas adicionales y operaciones de entrada/salida . Una adición curiosa es la "Q", de "consulta", que se podía añadir al principio de cualquier instrucción. Cuando se encontraba la Q, el intérprete ejecutaba la instrucción y luego imprimía información de depuración. [ 3 ]

Las instrucciones, según la versión, se almacenaban internamente en el siguiente formato:

FF [Q] nnn m

FF, el "número de orden", era el código de operación de la instrucción numérica. Q indicaba la función de consulta, y nnn y m eran valores de tres y un dígito para n y m. Los números se introducían en formato decimal. [ 3 ]

Operaciones básicas

El sistema dividió sus operaciones aritméticas y lógicas básicas en varios grupos con fines organizativos. Salvo que se indique lo contrario, las listas provienen de la documentación de Elliot 903. [ 7 ]

Grupo 0, operaciones de acumulador/memoria:

Grupo 1, operaciones de acumulador/constante, con un único operando que contiene un valor entero. En la especificación original solo se usaba n; en la revisión de 1968, se puede proporcionar opcionalmente m y su valor se suma a la constante en n. [ 3 ]

Grupo 2, valor de la tienda:

Grupo 3, prueba y ramificación:

La edición revisada cambió algunos de los códigos y agregó otros nuevos. La lista en esta sección proviene de la documentación de ICL: [ 8 ]

La instrucción LOP se utiliza para implementar bucles; al colocar el número de iteraciones en el registro 5, LOP decrementará el valor en cada iteración y luego volverá al inicio del bucle. [ 8 ]

Matemáticas avanzadas

El grupo 4 es un conjunto de funciones matemáticas estándar: [ 9 ]

Entrada/salida

Los grupos 5, 6 y 7 son las instrucciones de entrada/salida . Existen diferencias significativas entre las dos versiones conocidas, ICL y Elliot, pero no está claro si estas diferencias se deben a que la versión Elliot es la especificación anterior, o si se deben a que la máquina carece de soporte para cinta y disco y, por lo tanto, simplemente se eliminan las instrucciones relacionadas con esos dispositivos. El resultado es un conjunto de funciones relativamente limitado: [ 10 ] [ 3 ]

En contraste, la versión ICL, que corresponde a la especificación de 1968, es mucho más flexible. Su computadora tenía un único canal de entrada y un único canal de salida que podía conectarse a diferentes dispositivos. Se definieron cinco dispositivos: el lector de cinta de papel (número 10), el lector de tarjetas (número 30), la cinta magnética (número 50), el paquete de discos (número 60 ) y la impresora (número 80). [ 11 ] Para usar uno de los dispositivos, se llamaba a la ARD n, minstrucción AWD n, m`read` o `write`, respectivamente, con el número de dispositivo deseado en (n+(m)). [ 12 ]

Una vez abiertos, los dispositivos podían leerse y escribirse utilizando las diversas instrucciones de E/S. Estas incluían instrucciones separadas para números y caracteres, instrucciones para convertir entre ambos y otras instrucciones para operaciones particulares como generar un salto de línea o rebobinar una cinta. [ 11 ] Una característica clave era el concepto de "bloque", un grupo de datos relacionados que se leían de una sola vez. Esto se utilizaba normalmente para leer y escribir cadenas de caracteres en una sola instrucción. El bloque terminaba con el £carácter, conocido como carácter de bloque. [ 13 ] [ 3 ]

Otras instrucciones

formato de números

Como uno de los objetivos principales del sistema era leer y escribir datos en diversos dispositivos del mundo real, el código incluía un sistema de formato similar a las cadenas de formato printf para facilitar la tarea de generar texto legible. El formato se almacena como un valor en la memoria, en n+(m) para la mayoría de las instrucciones, o en las ubicaciones 6 y 7 para la instrucción CNC, que utiliza n+(m) para definir la ubicación de salida. Existen cuatro formatos básicos, todos los cuales comienzan con un espacio inicial y un signo más o menos: [ 14 ]

Directivas del ensamblador

Además de las instrucciones de la máquina, el lenguaje también incluía un pequeño número de directivas: [ 15 ] [ 16 ] [ 3 ]

(TÍTULO)
imprime la siguiente línea en el dispositivo de salida
(TIENDA n)
Establece la ubicación de inicio del siguiente código. Se pueden usar varios STORE en un solo programa.
(ESPERAR)
Detiene la ejecución y espera una instrucción GO del operador.
(EJECUTAR n)
Indica el final del código del programa y establece la ubicación inicial del contador de programa cuando se ejecuta el programa.

Entorno operativo

Además del código mnemotécnico, la computadora también definió un entorno operativo básico , como el lenguaje BASIC. Este incluía LOAD y SAVE, ON para redirigir el dispositivo de entrada o salida, y GO para iniciar la ejecución. [ 17 ]

Ejemplo

Este ejemplo, de Herbert, calcula e imprime PI. Escrito para la Elliot 903, utiliza el PNTcomando de E/S anterior, que imprime en la cinta perforada. [ 18 ]

(TÍTULO) PRUEBA SENCILLA (TIENDA 12) LDAN 1 ARC 16 MLTN 4 PNT 1,6 JST (EJECUTAR 12)

Al ejecutarse con el GOcomando, este programa producirá:

PRUEBA SENCILLA 3.141593

Notas

  1. La documentación de ICL utiliza números de sección en todo el texto, pero algunas páginas también incluyen un número de página en el encabezado. Se utilizan números de página cuando están disponibles; de lo contrario, se usan secciones.

Véase también

Referencias

Citas

  1. 1 2 3 Herbert 2015 , pág. 20.
  2. 1 2 3 Computadora , pág. 1.
  3. 1 2 3 4 5 6 7 8 9 Herbert 2015 .
  4. Computadora , pág. 3.
  5. Computadora , pág. 7.
  6. ICL , pág. 2.6.
  7. Computadora , pág. 4.
  8. 1 2 ICL .
  9. Computadora , pág. 6.
  10. Computadora , págs. 6–7.
  11. 1 2 ICL , pág. 13.
  12. ICL , pág. 11.
  13. ICL , pág. 5.0.
  14. ICL , pág. 6.1.
  15. ICL , pág. 2.8.
  16. Computadora , págs. 2–3.
  17. ICL , pág. 13.0.
  18. Herbert 2015 , pág. 25.

Bibliografía

  • Herbert, Andrew (otoño de 2015). "Código mnemotécnico de City and Guilds" (PDF) . Computer Resurrection: The Journal of the Computer Conservation Society (71): 20–27 . ISSN 0958-7403 . 
  • Código mnemotécnico de City & Guilds . ICL.
  • El ordenador de City & Guilds (PDF) . ICL.
  • Recuerdos de una programadora : Helen Young relata sus primeros trabajos en un intérprete de C&G.