Enlace a la Parte 1En esta parte, veremos cómo se organiza el AGC desde la perspectiva de un programador. La lista de referencias y fuentes se encuentra al final de la primera parte del artículo. El material de esta parte se basa en el material del libro [1].

Representación de números en memoria de AGC
AGC utiliza palabras de 15 bits, con un signo en el lugar 15. También hay una descarga de paridad, que es registrada y controlada por el hardware y es completamente transparente para el software, con cada operación de lectura y escritura en la memoria.

Los enteros se presentan en el formato de "suma 1". Es como sigue:
Los números no negativos del 0 al 16383 se presentan en forma de códigos del 000 000 000 000 000 al 011 111 111 111 111 respectivamente.
Los números negativos se forman invirtiendo números positivos, es decir -1 se representa como 111 111 111 111 111, y hasta -16383, representado por código binario 100,000,000,000,000.
Las operaciones aritméticas se realizan de la siguiente manera:
2: 000 000 000 000 010 -5: 111 111 111 111 010 111 111 111 111 100 (= -3)
Agregar dos números negativos es algo más complicado.
Si agregamos de acuerdo con las reglas habituales, entonces nada funcionará:
-2: 111 111 111 111 101 -5: 111 111 111 111 010 111 111 111 110 111 (= -8)
Sin embargo, puede notar que la adición de los bits más significativos genera un bit de acarreo. Solo necesitamos agregar el bit de acarreo para obtener el resultado correcto:
-2: 111 111 111 111 101 -5: 111 111 111 111 010 111 111 111 110 111 (= -8) Carry 1 111 111 111 111 000 (= -7)
También puede notar que el cero positivo y negativo son posibles en este sistema, lo que crea dificultades adicionales para los programadores, por ejemplo, al comparar el resultado de una operación con cero.
El desbordamiento de la batería durante las operaciones aritméticas también se puede monitorear, lo que se discutirá a continuación.
ACG solo admite aritmética de enteros y no puede realizar operaciones con números reales en hardware, pero puede hacerlo en software. El AGC utiliza una representación decimal binaria de números de 28 bits (9 lugares decimales), que ocupa dos celdas de memoria, 14 bits cada una. ¡También se usan dígitos de signos, y la palabra baja y la palabra alta pueden tener un signo diferente! Es decir, puede haber un número representado como, por ejemplo, +5 * 10000 + -5 * 100 = 49500. Extraño, pero posible.
Las distancias y velocidades para los cálculos se presentan en el sistema métrico, pero los datos para la tripulación se muestran en el sistema de medidas inglés (pies, etc.).
Formato de instruccionesModelo de memoria
En la parte anterior, ya se mencionó que la memoria de la computadora se divide en 2 Kslov RAM y 36 K palabras ROM. Como la instrucción toma solo 12 bits para el valor de la dirección, se utiliza el principio de dividir la memoria en bancos. Se utiliza un registro especial para indicar el banco actual.
Para cambiar a un nuevo banco de memoria, se utiliza el comando "Transferir a un nuevo banco" (TNB), que realiza lo siguiente:
- Copia el registro bancario actual ("Banco") en el registro "Banco guardado"
- Copia una dirección de 12 bits de la ubicación de la memoria siguiendo el comando TNB en el registro "Dirección de retorno"
- Cargamos la nueva dirección del banco en el registro del Banco, y cargamos el desplazamiento indicado por la instrucción TNB en el contador de instrucciones.
Registros
AGC tiene registros asignados al espacio de direcciones. Ocupan las primeras 48 palabras de memoria física.
La batería ocupa la dirección 0
8 .
La batería se utiliza en la mayoría de las operaciones aritméticas y lógicas (OR, AND, etc.). Aunque el AGC funciona con palabras de 15 bits, la batería tiene una capacidad de 16 bits, ya que almacena una descarga de desbordamiento. Cuando los datos se cargan en la batería, caen en los bits más bajos, con el bit 14 que contiene el signo del número. Después de realizar la operación aritmética, si no se ha producido un desbordamiento, el bit 15 simplemente contendrá una copia del signo, y este bit es invisible para el programador. Llamamos a estos dígitos de signo como S1 y S2, respectivamente. Si se produce un desbordamiento, entonces S1 y S2 no serán iguales. Aunque el bit S2 permanece invisible para el programador, en AGC hay hasta dos formas de establecer el estado de desbordamiento.
En primer lugar, cuando se produce un desbordamiento, las interrupciones se deshabilitan automáticamente. Un controlador de interrupciones, si ocurre en este momento, podría restablecer este bit, lo que sería muy indeseable. Las interrupciones solo se permiten cuando se borra el indicador de desbordamiento. El indicador se restablece solo cuando se limpia la batería o cuando se carga un nuevo valor. Para verificar el indicador de desbordamiento, se puede usar el comando Transferir a almacenamiento (TS), que guarda el valor de la batería en la memoria solo si no hubo desbordamiento, y si hubo un desbordamiento hacia arriba o hacia abajo, el valor en la batería se reemplaza por +1 o -1 en consecuencia El comando TS también omite la siguiente instrucción del programa en caso de que se produzca un desbordamiento. Se supone que el programador escribirá el código que procesa el desbordamiento y lo colocará a través de un comando del TS, e inmediatamente después el TS insertará un salto a la instrucción después del controlador de desbordamiento.
Registro L - Dirección 00001
8El registro L también se denomina "acumulador de bajo orden" y está destinado a ampliar el rango de números con los que se realizan las operaciones. También se puede usar para el almacenamiento temporal de variables.
Registro Q - Dirección 00002
8El registro Q está destinado a almacenar la dirección de devolución. El registro Q contiene una dirección de 12 bits que, junto con el banco de memoria actual, proporciona la dirección de retorno completa de la subrutina.
Registro EBANK (Banco de almacenamiento borrable) - Dirección 00003
8RAM (también llamada "memoria borrable" en el AGC) contiene 2048 palabras, divididas en 8 bancos de 256 palabras cada una. La dirección del banco RAM es de 3 bits y está contenida en el registro EBANK.
Regístrese FBAN K (Banco de almacenamiento fijo) - Dirección 00004
8ROM tiene bancos de 1024 palabras y contiene 36 bancos. El registro FBANK tiene 5 bits y le permite dirigirse a 32 bancos.
Bit de extensión fija (bit de superbanco)
Se usa para abordar la última ROM 4Kslov.
Registro BBANK (
Registro de ambos bancos) - Dirección 00006
8Al transferir el control a otro programa, los registros FBANK y EBANK deben cambiarse al mismo tiempo. El registro BBANK contiene ambas direcciones: números bancarios de RAM y ROM. Escribir en él actualiza automáticamente los registros FBANK y EBANK.
Register Z (El contador del programa) - 00005
8El registro Z es el contador del programa, es decir, determina la dirección del comando que se está ejecutando actualmente. Tiene una capacidad de 12 bits.
Registro cero (una fuente de ceros) - Dirección 00007
8Contiene la constante 0.
Registros de manipulador de interrupciones - Dirección 00008
8 - 00012
8Los registros ZRUPT, BRUPT, ARUPT, LRUPT, QRUPT y BANKRUPT están ubicados respectivamente en estas direcciones.
Registros ZRUPT y BRUPT : guarde automáticamente el contenido del registro Z (contador de instrucciones) y el registro B (registro interno, que contiene la dirección del comando que se ejecutará a continuación).
Los registros ARUPT, LRUPT, QRUPT y BANKRUPT se utilizan para ahorrar batería y los registros L, Q y BB. Estos registros deben guardarse y restaurarse manualmente hasta que se ejecute la instrucción RESUME, que sirve para regresar de la interrupción.
Durante el procesamiento de interrupciones, el AGC desactiva las interrupciones hasta que se ejecuta la instrucción RESUME. Por lo tanto, el controlador de interrupción solo no puede ser interrumpido.
Anteriormente se mencionó que la batería tiene una capacidad de 16 bits, y el bit más significativo se utiliza para detectar el desbordamiento y no está disponible mediante programación. Sin embargo, el registro ARUPT, que almacena la batería durante la interrupción, tiene 15 bits. Cada vez que ocurre una condición de desbordamiento, las interrupciones se deshabilitan hasta que se borra la bandera de desbordamiento.
Los registros ARUPT, LRUPT, QRUPT y BANKRUPT no se pueden usar fuera del controlador de interrupciones. Físicamente, permanecen accesibles, pero desde el punto de vista del programa principal, su estado cambia en puntos arbitrarios en el tiempo.
Edición de registros - direcciones 00020
8 - 00023
8Los primeros tres registros son registros de desplazamiento: Ciclo a la derecha, Cambio a la derecha, Ciclo a la izquierda, es decir, un desplazamiento cíclico a la derecha, un desplazamiento a la derecha y un desplazamiento cíclico a la izquierda. El sistema de instrucción AGC no tiene operaciones de cambio, y para cambiar un número en un bit, debe escribirse en uno de estos registros y luego contarse. Cada grabación se desplaza un bit.
El registro EDOP (EDit Interpretive OPcode) es el cuarto de los registros de edición.
Los comandos del intérprete, que se analizarán a continuación, se almacenan en dos en una palabra y ocupan 7 bits cada uno. Una operación AND con una máscara es suficiente para leer el comando de orden inferior, pero el orden superior requerirá un cambio de 7 bits. El registro EDOP realiza este cambio en una operación.
Los registros de edición no se pueden usar en los manejadores de interrupciones, y he aquí por qué. Los registros regulares deben guardarse al comienzo del controlador y restaurarse al salir de él. Pero los registros de edición realizan operaciones en los datos cuando se les escribe, y esto conducirá a un funcionamiento incorrecto del programa interrumpido.
Temporizadores y relojes
Reloj de tiempo real
AGC no utiliza tiempo calendario, días, meses y año. En cambio, la cuenta regresiva es desde el punto "cero", que comienza unas horas antes del inicio. El reloj se muestra en dos palabras en la memoria, en las direcciones 00024
8 (T2), 00025
8 (T1). La palabra T1 se incrementa cada 10 ms, la palabra T2 es aproximadamente cada 164 segundos, cuando la palabra T1 está llena.
Temporizadores
00026
8 (T3) Lista de espera: incremente cada 10 ms., Desplazado en relación con T4RUPT en 5 ms
00027
8 (T4) T4RUPT: incremente cada 10 ms.
00030
8 (T5) Piloto automático: incremente cada 100 ms.
00031
8 (T6) reloj de alta resolución: incremente cada 1/1600 s = 0.625 ms.
Se necesita el primer temporizador, T3, para que la lista de tareas funcione (Lista de espera). La lista de espera es una lista de tareas muy cortas, cada una de las cuales lleva poco tiempo, y se puede ejecutar directamente en el controlador de interrupciones. La lista contiene hasta siete tareas, cada una de las cuales comienza en un intervalo determinado. El tiempo de ejecución de la tarea está estrictamente limitado a 4 ms. Durante este tiempo, la computadora logra completar unas 160 instrucciones.
El temporizador T4 ejecuta tareas periódicas críticas que van de 20 a 120 ms, incluido el intercambio de datos con DSKY, interruptores de sondeo en los paneles de control del barco y otras tareas.
Unidad de medición inercial IMU (Unidad de medición inercial)
IMU es una plataforma estabilizada giroscópicamente con acelerómetros, que sirve para determinar la posición y las aceleraciones de la nave en el espacio.

No describiremos aquí el principio de funcionamiento del giroscopio, solo observamos que la posición de los ejes del giroscopio se mide mediante el dispositivo CDU (Unidad de datos de acoplamiento). Este dispositivo genera pulsos cuando los giroscopios giran, produciendo 32768 pulsos por revolución, lo que corresponde a una resolución de 39.55 segundos de arco por pulso.
La CDU también transmite al AGC la posición de los ejes del sextante y el radar de aproximación. Dado que el sextante solo está en el módulo de comando, y el radar solo está en el módulo lunar, usan el mismo puerto AGC.
La IMU también tiene tres acelerómetros de péndulo (acelerómetros pendulares integradores pulsados, PIPA). Pero hay una leve sutileza. A pesar de que el módulo lunar y el módulo de comando tienen la misma IMU, sus rangos de medición de velocidad son diferentes. El rango de velocidad IMU del módulo de comando es de 0 a 11000 m / s, y para el módulo lunar, hasta 1700 m / s. La resolución IMU del módulo de comando es 5.85 cm / s, para el módulo lunar - 1 cm / s.
Contadores CDUS (X, Y, Z, OPTIS, OPTT) y PIPAS (X, Y, Z)
La transferencia de datos desde la CDU al AGC es la siguiente: los pulsos de los sensores pueden aumentar y disminuir los contadores. El número en el mostrador tiene un signo que indica la dirección del movimiento. Los contadores se encuentran en direcciones específicas de la memoria y se pueden leer mediante programación. Se utilizan un total de 8 contadores, seis de los cuales muestran velocidades y ángulos, y dos se utilizan para mostrar la posición angular del sextante en el módulo de comando o el radar de aproximación en el módulo lunar.
Gestión de dispositivos a través de contadores.
La CDU funcionaba en ambas direcciones, por ejemplo, no solo podía determinar la posición del radar de proximidad, sino que también podía leer el contenido del registro de la memoria de la computadora y aplicar voltaje a los motores de transmisión del radar hasta que el radar se instalara en el ángulo requerido.
Otras interfaces de computadora
El módulo lunar tiene un asa (Attitude Controller Assembly, ACA) cuya posición podría leerse mediante programación. Cada eje de este controlador envió valores a las variables P_RHCCTR, Q_RHCCTR y R_RHCCTR.
Controlador ACA
Aspecto del controlador ACAControlador ACA instalado solo en el módulo lunar
INLINK (Canal de transmisión de telemetría)
El dispositivo INLINK proporciona comunicación bidireccional con la Tierra y sirve para transmitir información telemétrica y recibir datos desde el centro de control de vuelo. Los astronautas pueden ingresar los datos necesarios para el vuelo a través de DSKY, pero este proceso es lento y está lleno de errores. A través del registro INLINK, los datos pueden ingresarse directamente desde la Tierra a la computadora.
Gestión del motor
Durante el proceso de aterrizaje del módulo lunar, el AGC calcula continuamente los valores necesarios de la fuerza de tracción y envía señales de control a los motores. Durante los 12 minutos que dura el aterrizaje, el motor quema aproximadamente la mitad del combustible, y el programa debe tener en cuenta la reducción de masa. El empuje del motor varía del 92.5%, que asciende a 46,700 N, hasta el 10% del empuje total. Pero un empuje superior al 65% causa un desgaste severo en la cámara de combustión y la boquilla, por lo que el programa AGC debería minimizar el tiempo cuando el motor está en este modo.
La computadora está conectada a los motores de la plataforma de aterrizaje a través del Descent Engine Control Assembly (DECA). La gestión se realiza a través del registro THRUST. La tripulación puede ajustar manualmente el valor de empuje a través del controlador de empuje / traslación manual (TTHC).
Controlador manual de empuje / traslacional (TTHC).
Controlador manual de empuje / traslacional (TTHC). AparienciaEl controlador está conectado directamente a DECA, la computadora no ve los valores ingresados manualmente.
Dispositivos análogos
Los indicadores analógicos, ALTM (pantallas analógicas: altímetro y medidores de frecuencia), también se utilizan para indicar la altitud y la tasa de cambio de altura que controla el AGC a través del registro ALTM. Los indicadores analógicos están hechos en forma de escalas verticales (medidores de cinta).
Indicadores de altura y velocidad verticalDireccionamiento y bancos de memoria
Como ya se mencionó, AGC tiene dos tipos de memoria, RAM, también llamada "memoria borrable" y ROM (memoria fija). La capacidad de memoria es de 38 Kslov, lo que no permite direccionar toda la memoria directamente, ya que la longitud de la dirección en la palabra de comando es de 12 bits.
Para separar la memoria en bancos, se utilizan los registros bancarios EBANK y FBANK, que especifican el banco de RAM y ROM, respectivamente. Esto expande el espacio de direcciones de 32Kwords, y para expandir aún más el espacio de direcciones de ROM, se utiliza el Bit de extensión fija, que permite el acceso a 36Kwords.
Bancos de RAM
RAM tiene un volumen de 2K palabras, y se divide en 8 bancos de 256 palabras.
Descifrado de la dirección RAMPara direccionar una palabra en un banco RAM, se necesitan 8 bits. Se necesitan dos bits más para determinar el tipo de banco: no conmutable (no conmutado) o conmutable (conmutado). Los bits 9 y 10 en la figura anterior son responsables de esto (tenga en cuenta que los bits están numerados de 1). Si estos bits contienen 00, 01 y 10, entonces el registro EBANK no se usa, si se usa 11, entonces el contenido de EBANK se combina con la dirección de 8 bits registrada en la palabra de comando, como se muestra en la figura a continuación. Si no se utiliza el registro EBANK, se llaman los primeros tres bancos de memoria, que se denominan un término un tanto engañoso "borrable fijo". Para acceder a la RAM, los bits 11 y 12 deben establecerse en 0.
Descifrado de la dirección RAM utilizando el registro EBANKROM
Para acceder a la ROM, se utiliza un enfoque similar. Los bits 11 y 12 de la palabra de control determinan qué bancos se usan, si estos bits contienen 00, luego se usa RAM, como se muestra en la sección anterior, si 10 u 11, entonces los 12 bits se usan como una dirección en la ROM, el registro FBANK no se usa, si 01, entonces se utiliza la dirección que consta de los 10 bits inferiores de la palabra de control y el contenido del registro FBANK.
Descifrado de la dirección ROM
Descifrado de la dirección ROM utilizando el registro FBANKBancos comunes
Un subproducto importante del esquema de separación de memoria para los bancos es la capacidad de conectar bancos de ROM y RAM al mismo espacio de direcciones, y usar RAM sin tener que cambiar los registros bancarios. La figura explica cómo funciona tal esquema.
El esquema de usar RAM y ROM en el mismo espacio de direccionesMemoria más allá de las 32 palabras
Para acceder a la memoria de más de 32 palabras, el bit de extensión ROM, el bit de extensión fijo, se usa como el bit Superbank. El bit de superbanco se encuentra en el bit 7 del canal de entrada / salida 7. El canal 7 difiere de otros canales en que admite lectura y escritura. Por supuesto, el bit de expansión ROM debe guardarse tanto durante el manejo de interrupciones como al cambiar de tareas.
Transferencia de control entre bancos
Tenga en cuenta el orden en que se encuentran los registros FBANK, Z y BB en la memoria inferior. Parecería, ¿por qué no combinarlos en una palabra? Pero esto se hace a propósito para crear un mecanismo de transferencia de control. Al cambiar a otro banco, los nuevos valores deben establecerse en FBANK y EBANK, o BBANK. Sin embargo, esto plantea un problema. Supongamos, por ejemplo, que el programa se ejecuta en la dirección 01033
8 en el banco de ROM 07, y debe ir a la dirección 02371
8 en el banco de ROM 13. Si cambia el registro Z, transfiere el control a la dirección 02371
8 en el banco actual, que no necesitamos. Si cambiamos el banco actual primero, surgirá una situación similar. Es necesario cambiar simultáneamente el registro Z y el banco de memoria. Para hacer esto, use la instrucción DXCH, que lee la batería y registra L, e intercambia sus contenidos con dos ubicaciones consecutivas en la memoria. Por lo tanto, es posible cambiar la batería y registrar L con un par de FBANK, Z o con un par de Z, BB. Estas opciones están codificadas por dos mnemónicos: conmutación de control de transferencia doble en ambos bancos (DTCB) y conmutación de control de transferencia doble en banco fijo (DTCF). El comando DTCB no solo le permite ir a otra dirección, sino que también cambia el banco RAM, y el comando DTCF transfiere el control, dejando el banco RAM igual. El retorno de la función es el siguiente. Los valores iniciales de Z y BBANK (o FBANK) se escriben en el acumulador y registran L. La función llamada debe guardar estos valores y luego hacer la operación inversa intercambiando los valores con los registros de bancos y Z.
Algunas desventajas de la arquitectura AGC
La mayoría de las arquitecturas de computadora tienen un puntero de pila y / o registros de índice (al menos uno). Pero no en AGC. La compatibilidad con el puntero de la pila requeriría hardware adicional. No hay registros de índice que permitan organizar el acceso a las estructuras de datos en la dirección (puntero + desplazamiento), pero hay un comando INDEX que elimina la necesidad de tal registro.
Además, aunque no hay registros de índice de hardware, son emulados por la máquina virtual Intérprete, que se analizará a continuación.Una de las características de AGC es el uso de un sistema operativo en tiempo real multiproceso. Para que dicho sistema funcione, por regla general, se requiere un mecanismo para bloquear los datos compartidos (mutexes). Pero en AGC no existe dicho mecanismo, por lo que los desarrolladores de software deben verificar cuidadosamente todos los casos de acceso compartido a los datos de varios procesos para excluir la posibilidad de acceso simultáneo a dichos datos.Interrupciones
4000 8 de iniciodirección de inicio después de la potencia AGC4004 8 T6RUPTtime6 llegó a 0. El temporizador es el piloto automático usado.4010 8 T5RUPTTIME5 alcanzó el desbordamiento. El temporizador es utilizado por el piloto automático.4014 8 T3RUPTTIME3 alcanzó el desbordamiento. Usado por el planificador de tareas WAITLIST.4020 8 T4RUPTTIME4 alcanzó el desbordamiento. Escaneo y actualización y visualización DSKY4024 8 KEYRUPT1botón se pulsa DSKY. El código clave del DSKY principal está disponible en el canal 154030 8 KEYRUPT2Presione el segundo botón DSKY. La tecla de navegación DSKY está disponible en el canal 16 (solo módulo de comando)4034 8 UPRUPTDatos en el registro INLINKUtilizado para DSKY4040 8 DOWNRUPTEl registro Downlink contiene datos. Utilizado para telemetría AGC4044 8 RADARUPTDatos en el registro RNRAD. Datos de radar de aproximación4050 8 RUPT10LM P64Sistema de mando
El código de operación, o Código de pedido, en términos de ese tiempo, está codificado con tres bits, es decir, solo son posibles ocho códigos de operación, lo que claramente no es suficiente para un sistema de comando desarrollado. Sin embargo, los desarrolladores encontraron una salida. Algunos códigos se expanden con un campo adicional de dos bits, Q-Code.El código de operación 000 corresponde a un gran número de operaciones especiales, los códigos de operación 011, 100 y 111 corresponden a una operación cada uno. Los códigos de operación restantes 001, 010, 101 y 110 usan códigos Q.
Formato de comando QTambién se utilizaron otros trucos para ampliar el número de posibles códigos de operación. Algunas instrucciones no pueden funcionar con RAM, y especificar RAM como una dirección podría conducir a un resultado indefinido, pero tales códigos de operación con direcciones de operando en RAM se usaron para operaciones completamente diferentes. Por ejemplo, el comando de control de transferencia TC (control de transferencia) no puede transferir el control a la RAM, pero si la dirección apunta a la RAM, este código de operación corresponde al comando Habilitar interrupciones.Cuando estos códigos de operación no eran suficientes, se utilizó el siguiente enfoque. Si hacemos una transición con el comando TC a la dirección 00006 8 , de hecho, no ocurre ninguna transición, sino la que sigue al comando TC 00006 8El código de operación se interpreta como perteneciente a un conjunto de instrucciones completamente diferente. Por supuesto, tales instrucciones requieren más tiempo para ejecutarse, porque el procesador debe leer y decodificar los dos códigos de operación, pero este problema se mitiga por la distribución cuidadosa de las instrucciones entre los dos conjuntos de instrucciones. Los comandos de uso frecuente se incluyen en el conjunto de instrucciones principal y los restantes en el conjunto extendido.Instrucciones básicas
En total, el AGC contiene 41 equipos. Los equipos se dividen en 6 grupos:- Lógica aritmética
- Transferencia de control
- Movimiento de datos
- Modificación de instrucciones
- Instrucciones de E / S
- Misceláneo
Sin embargo, no describiremos todos los equipos de AGC aquí. Los interesados pueden consultar el libro [1].Comunicación con el mundo exterior: subsistema de entrada-salida
AGC no tiene discos duros o unidades de cinta, y toda comunicación con el mundo exterior se reduce a la configuración y lectura de bits en los puertos de entrada / salida. Los periféricos AGC incluyen la plataforma inercial, motores, radar, DSKY e interruptores del panel de control. El intercambio de datos a alta velocidad no es necesario, y la velocidad de intercambio no es un factor limitante significativo.Para entrada y salida son los llamados canales. Escribir y leer un canal es similar a escribir y leer una celda RAM, pero a diferencia de la RAM, la mayoría de los canales son unidireccionales. También hay puertos de conteo, que se utilizan para leer las posiciones de los ejes de la IMU, el radar y el sextante. Los pulsos de los sensores de ángulo aumentan y disminuyen los contadores, que luego pueden ser leídos por AGC.
Periféricos AGCLas instrucciones de E / S se refieren al conjunto de instrucciones extendidas y requieren el comando EXTEND antes del código de operación. Los comandos de E / S tienen un código de operación de 000, seguido de un PCode de tres bits. Se utilizan diferentes valores de PCode solo para pruebas en tierra; de forma predeterminada, PCode es cero. Los 9 bits restantes de la palabra de control son el número del canal. Por lo tanto, AGC puede direccionar hasta 512 canales, pero en la práctica solo se usan 16. La mayoría de los dispositivos periféricos están conectados no con una palabra completa de 15 bits, sino con un bit separado en una palabra, es decir, se requieren operaciones lógicas de E / S Y, O y OR exclusivo. Dichas operaciones se pueden combinar en una sola operación con una operación de E / S. Las instrucciones WOR (Escribir con OR), WAND (Escribir con AND), ROR (Leer y OR) y RXOR (Leer y XOR) son para este propósito.Las instrucciones de E / S usan una batería para leer y guardar datos. Pero también hay un registro L (acumulador de bajo orden), que se puede asignar a un puerto, luego todo lo que se lee y escribe en él irá automáticamente al puerto. Esto le permite utilizar las operaciones lógicas habituales AND, OR y XOR para trabajar con el puerto.Pero no todas las operaciones de E / S requieren leer o escribir solo un bit. Por ejemplo, DSKY envía códigos clave de 5 bits. Al presionar un botón en DSKY se genera una interrupción KEYRUPT, el código se coloca en el canal de entrada.Otro ejemplo cuando es necesario transferir una gran cantidad de datos a través del puerto son las interfaces de enlace ascendente y enlace descendente, que proporcionan comunicación con la Tierra a una velocidad de 51 kbit / so 1900 bit / s (seleccionado manualmente por la tripulación).Software
El software AGC se basa en el sistema operativo Ejecutivo en tiempo real y la máquina virtual Intérprete. Los consideraremos en detalle en la siguiente parte.