Simulador de programas de un sistema de control distribuido

Simulador de programas de un sistema de control distribuido TITULACIÓN: EAEI - Ingeniería en Automática y Electrónica Industrial AUTOR: David Capa B

2 downloads 141 Views 2MB Size

Recommend Stories


ELEMENTOS DE UN SISTEMA DE CONTROL
ELEMENTOS DE UN SISTEMA DE CONTROL El control automatizado en bucle cerrado se lleva a cabo en la actualidad mediante sistemas muy sofisticados, cuyos

Sistema Distribuido en Tiempo Real
Sistema Distribuido en Tiempo Real Julio Javier Castillo [email protected] Marina Elizabeth Cardenas [email protected] LIS-Laboratorio d

SISTEMA DE CONTROL INTERNO:
CONTRALORÍA GENERAL REPÚBLICA DE CUBA SISTEMA DE CONTROL INTERNO: • RESOLUCIÓN NO. 60/11 NORMAS DEL SISTEMA DE CONTROL INTERNO • GUÍA DE AUTOCONTROL

Story Transcript

Simulador de programas de un sistema de control distribuido

TITULACIÓN: EAEI - Ingeniería en Automática y Electrónica Industrial

AUTOR: David Capa Benítez. DIRECTOR: Alfonso José Romero Nevado.

FECHA: Septiembre / 2006.

1 Índice

1. Índice 1. 2.

Índice ......................................................................................................................... 1 Introducción............................................................................................................... 4 2.1. 2.1.1. 2.1.2. 2.1.3. 2.2. 2.2.1. 2.2.2. 2.2.3. 2.3. 2.3.1. 2.3.2. 2.3.3. 2.4. 2.4.1. 2.4.2.

3.

Definiciones............................................................................................................................... 4 Instrumentación y Control .................................................................................................... 4 Sistemas de control distribuido............................................................................................. 4 TPS – La solución de Honeywell.......................................................................................... 4 Logic Manager (LM) ................................................................................................................. 6 Descripción general .............................................................................................................. 6 Descripción funcional ........................................................................................................... 8 Características....................................................................................................................... 9 623-60 MS-DOS Loader ......................................................................................................... 10 Descripción general ............................................................................................................ 10 Características..................................................................................................................... 11 Programa lógico – Código en escalera................................................................................ 12 Objetivos.................................................................................................................................. 13 Características..................................................................................................................... 13 Exclusiones ......................................................................................................................... 13

Funcionamiento del Logic Manager........................................................................ 15 3.1. Mapeado de memoria .............................................................................................................. 15 3.1.1. Módulo de memoria de programa....................................................................................... 15 3.1.2. Módulo de memoria de registros ........................................................................................ 15 3.2. Modos de funcionamiento ....................................................................................................... 17 3.3. Ciclo de ejecución de programa lógico (Ciclo de scan)........................................................... 17

4.

Interpretación MS-DOS Loader .............................................................................. 21 4.1. 4.2. 4.2.1. 4.2.2. 4.2.3. 4.2.4. 4.3. 4.3.1. 4.3.2. 4.3.3. 4.4. 4.5. 4.6. 4.6.1. 4.6.2.

5.

F1 – 620 Loader / Monitor....................................................................................................... 23 F2 – 620 Stand alone loader (*.ldr) ......................................................................................... 23 Estructura básica del fichero *.ldr....................................................................................... 24 Cabecera ............................................................................................................................. 25 Cuerpo ................................................................................................................................ 38 Cola................................................................................................................................... 106 F3 – Documentation functions............................................................................................... 107 Nombre de parámetros...................................................................................................... 108 Etiquetas ........................................................................................................................... 108 Comentarios...................................................................................................................... 110 F4 - Password and security functions .................................................................................... 111 F5 - I/O configuration utilities ............................................................................................... 112 F6 - 623 Software configuration *.cfg................................................................................... 112 Codificación y estructura del fichero *.cfg ....................................................................... 115 Mapeado de memoria........................................................................................................ 118

Programación......................................................................................................... 122 5.1. 5.2. 5.2.1. 5.2.2. 5.3. 5.3.1. 5.3.2. 5.3.3. 5.4. 5.4.1.

Lenguaje de programación .................................................................................................... 122 Filosofía de programación ..................................................................................................... 123 Descripción básica ............................................................................................................ 123 Interacción de elementos................................................................................................... 126 ¿Bases de datos o tablas en memoria interna? ....................................................................... 127 Trabajar con bases de datos .............................................................................................. 127 Trabajar con tablas en memoria interna............................................................................ 132 Toma de decisiones........................................................................................................... 133 Ventana de presentación (Frm_Splash) ................................................................................. 135 Procedimientos y funciones .............................................................................................. 135

1

1 Índice 5.5. Ventana principal (Frm_MDI)............................................................................................... 136 5.5.1. Documentación y decisiones............................................................................................. 136 5.5.2. Variables globales............................................................................................................. 138 5.5.3. Procedimientos y funciones .............................................................................................. 139 5.6. Ventana de configuración (Frm_MDIChildConfiguracion) .................................................. 145 5.6.1. Documentación y decisiones............................................................................................. 145 5.6.2. Procedimientos y funciones .............................................................................................. 146 5.7. Ventana de documentación (Frm_MDIChildDocumentacion).............................................. 150 5.7.1. Documentación y decisiones............................................................................................. 151 5.7.2. Procedimientos y funciones .............................................................................................. 151 5.8. Ventana de memoria interna (Frm_MDIChildMemoria)....................................................... 157 5.8.1. Documentación y decisiones............................................................................................. 157 5.8.2. Variables globales............................................................................................................. 158 5.8.3. Procedimientos y funciones .............................................................................................. 158 5.9. Ventana de programa (Frm_MDIChildPrograma)................................................................. 164 5.9.1. Documentación y decisiones............................................................................................. 165 5.9.2. Variables globales............................................................................................................. 167 5.9.3. Procedimientos y funciones .............................................................................................. 167 5.10. Ventana de simulación (Frm_MDIChildSimulacion)............................................................ 172 5.10.1. Documentación y decisiones............................................................................................. 173 5.10.2. Procedimientos y funciones comunes al formulario ......................................................... 177 5.10.3. Procedimientos y funciones de la sección “Parámetros de simulación” ........................... 178 5.10.4. Procedimientos y funciones de la sección “Evolución de las direcciones”....................... 180 5.10.5. Procedimientos y funciones de la sección “Cronograma” ................................................ 182 5.11. Ventana de selección de ficheros (Frm_ModalSeleccionFicheros) ....................................... 185 5.11.1. Características................................................................................................................... 185 5.11.2. Documentación y decisiones............................................................................................. 185 5.11.3. Procedimientos y funciones .............................................................................................. 186 5.12. Módulo de soporte general (Mdl_General)............................................................................ 187 5.12.1. Documentación y decisiones............................................................................................. 187 5.12.2. Variables globales............................................................................................................. 187 5.12.3. Procedimientos y funciones .............................................................................................. 187 5.12.4. Procedimientos y funciones de codificación y decodificación de números ...................... 188 5.12.5. Procedimientos y funciones de comprobación de valores válidos .................................... 189 5.12.6. Procedimientos y funciones de mapeado de memoria ...................................................... 189 5.13. Módulo de soporte proyecto (Mdl_Proyecto)........................................................................ 191 5.13.1. Documentación y decisiones............................................................................................. 191 5.13.2. Procedimientos y funciones .............................................................................................. 192 5.14. Módulo de soporte para separar líneas de *.ldr (Mdl_SepararLineas) .................................. 201 5.14.1. Documentación y decisiones............................................................................................. 201 5.14.2. Procedimientos y funciones .............................................................................................. 203 5.15. Módulo de soporte interpretar líneas (Mdl_InterpretarLineas).............................................. 208 5.15.1. Documentación y decisiones............................................................................................. 208 5.15.2. Procedimientos y funciones públicas................................................................................ 216 5.15.3. Procedimientos y funciones de acciones de progreso ....................................................... 218 5.15.4. Procedimientos y funciones de acciones de datos............................................................. 221 5.15.5. Procedimientos y funciones auxiliares.............................................................................. 230 5.16. Módulo de soporte tablas internas (Mdl_TablasInternas)...................................................... 234 5.16.1. Documentación y decisiones............................................................................................. 234 5.16.2. Variables globales............................................................................................................. 238 5.16.3. Procedimientos y funciones .............................................................................................. 238 5.16.4. Procedimientos y funciones de ejecución rápida .............................................................. 241 5.16.5. Procedimientos y funciones representación gráfica .......................................................... 244 5.17. Módulo de soporte para bases de datos (Mdl_BasesdeDatos) ............................................... 245 5.17.1. Documentación y decisiones............................................................................................. 245 5.17.2. Procedimientos y funciones .............................................................................................. 246 5.18. Módulo de soporte para simular programas (Mdl_Simular).................................................. 253

2

1 Índice 5.18.1. 5.18.2. 5.18.3. 5.18.4. 5.18.5. 5.18.6. 5.18.7. 5.18.8. 5.18.9.

6.

Manual de usuario ................................................................................................. 289 6.1. 6.2. 6.3. 6.4. 6.4.1. 6.5. 6.5.1. 6.5.2. 6.5.3. 6.5.4.

7.

Documentación y decisiones............................................................................................. 253 Procedimientos y funciones públicas................................................................................ 256 Procedimientos y funciones de acciones de progreso ....................................................... 261 Procedimientos y funciones de acciones de datos............................................................. 262 Procedimientos y funciones auxiliares.............................................................................. 280 Procedimientos y funciones de timers .............................................................................. 282 Procedimientos y funciones saltos NSKR 8192-8447 ...................................................... 283 Procedimientos y funciones de acceso a datos.................................................................. 285 Procedimientos y funciones de evolución de direcciones ................................................. 286

Descripción............................................................................................................................ 289 Instalación.............................................................................................................................. 289 Comienzo del programa......................................................................................................... 289 Apertura de un proyecto ........................................................................................................ 290 Menú Proyecto.................................................................................................................. 291 Trabajando con un proyecto .................................................................................................. 291 Menú Proyecto.................................................................................................................. 291 Menú Ver .......................................................................................................................... 293 Menú Ventana................................................................................................................... 303 Barra de herramientas ....................................................................................................... 303

Conclusiones.......................................................................................................... 305

3

2 Introducción

2. Introducción Antes de explicar el tema del proyecto y los objetivos que se pretenden conseguir, se considera necesario tener una ligera noción sobre ciertos aspectos relacionados. 2.1. Definiciones De una forma muy simple podemos definir: 2.1.1. Instrumentación y Control Los procesos industriales, cada vez más complejos y exigentes en cuestiones de control y seguridad, requieren la utilización de sistemas de instrumentación y control. La instrumentación realiza las medidas sobre ciertas variables de proceso tales como presión, caudal o temperatura… El control realiza las actuaciones necesarias para mantener dichas variables en los niveles deseados de seguridad y economía, así como otros aspectos que se consideren importantes. 2.1.2. Sistemas de control distribuido Actualmente un gran número de elementos electrónicos e informáticos son utilizados industrialmente para conseguir dichos objetivos de instrumentación y control. Así, aparecieron los denominados sistemas de control distribuido, también denominados SCD o DCS (Distributed Control System). Un sistema de control distribuido integra los diferentes sistemas de control y de información del proceso en un entorno interactivo y coordinado, que permite manipular el proceso de una forma total y remota. Es decir, un SCD permite visualizar, documentar y sobre todo controlar el funcionamiento global de la planta de producción. A grandes rasgos está compuesto por los instrumentos de campo, elementos de control locales, los medios de comunicación con los medios principales de control, y finalmente la interfaz humana, también llamada consola de control. 2.1.3. TPS – La solución de Honeywell La empresa Honeywell, dispone del sistema de control distribuido TPS (Total Plant Solution). El sistema TPS ha sido diseñado para satisfacer las necesidades de grandes procesos, pero pudiendo adaptarse a procesos pequeños. Sus características principales son: • Sistema abierto • Dispositivos de campo inteligentes. • Interfaz humana con los últimos avances tecnológicos. • Herramientas avanzadas de ingeniería. • Completa base de datos histórica en tiempo real. • Entorno abierto de aplicaciones. • Probado entorno de control, seguro y robusto. • Sistema abierto para aplicaciones de gestión de empresas. 4

2 Introducción

Figura 1. Arquitectura del sistema TPS El sistema TPS, como se puede observar en la figura, se divide en 4 zonas compuestas por diferentes elementos: • Dispositivos de campo (Field devices) Dos tipos de elementos: - Transmisores: Realizan la medida de las variables deseadas y la comunican por distintos medios a la zona de control de proceso. - Actuadores: Modifican las variables deseadas al valor indicado por la zona de control de proceso. Fieldbus: Camino que utilizan los dipositivos de campo para comunicarse con los elementos de la zona de control de proceso. • Control de proceso (Process control) A partir de la información recibida por los dispositivos de campo (transmisores), y de las órdenes de la zona de supervisión, genera las señales correctoras necesarias para enviar a los dispositivos de campo (actuadores), gracias a los programas de control evaluados en cada momento. LM (Logic Manager), HPM (High Process Manager), FSC (Fail Safe Controller): Son algunos de los elementos de control de proceso, cada uno de ellos especializado en un área de actividad. UCN (Universal Control Network): Red de área local, proporciona el canal de comunicación para los distintos elementos de la zona. La capacidad de comunicación igual a igual permite compartir información entre los distintos elementos de la zona de control en la red, por lo que facilita la implementación de estrategias avanzadas de control de una forma coordinada.

5

2 Introducción NIM (Network Interface Module): La UCN está conectada a la red de la zona de supervisión a través de un NIM. El NIM realiza la necesaria conversión entre las técnicas de transmisión y protocolos usados por las dos redes. Así se podrán intercambiar entre ambas redes datos, alarmas o mensajes en cualquiera de los dos sentidos. • Supervisión de proceso (Process supervisión) Es la interfaz con el personal, presenta información del funcionamiento del proceso y permite la modificación del funcionamiento de la zona de control. Estación universal (Global User Station): Denominada anteriormente como consola de control, facilita al personal las herramientas necesarias para realizar su cometido. • Gestión de la información (Management information) Recopilación de información para análisis y estadísticas. Es en la zona de control del proceso donde, tal y como se ha indicado, se encuentra el elemento en el que se basa este proyecto, el Logic Manager, conocido de forma simplificada con las iniciales LM. 2.2. Logic Manager (LM) 2.2.1. Descripción general El Logic Manager es lo que se conoce como autómata programable. El LM ejecuta funciones digitales y analógicas de control, proporcionando medios de control, comunicación, monitorización y uniones igual a igual con otros elementos de la zona de control de proceso. Los elementos que forman un LM se distribuyen en racks de 19” de 14 ranuras. El sistema LM recomendado está formado por un rack procesador simple o dos redundantes y un subsistema serie o paralelo de racks I/O.

Figura 2. El Logic Manager 6

2 Introducción

Figura 3. Configuración LM redundante con racks I/O serie. 2.2.1.1. Rack procesador El rack procesador se compone básicamente de un coprocesador conocido como Logic Manager Module (LMM) que es la interfaz con la UCN, un Procesador programable (Control Processor) de alta velocidad que ejecuta el programa lógico y que contiene las zonas de memoria de registros y de programa, un Procesador I/O que maneja la información (datos) de los subsistemas de I/O ya sean serie (SLM – Serial Link Module) o paralelo (PLDM – Parallel Link Driver Module) y un Módulo de alimentación (PSM – Power Suply Module).

Figura 4. Composición de un rack procesador en configuración redundante 2.2.1.2. Rack I/O Un rack I/O standard contiene además de los modulos especiales de entradas y salidas que proporcionan la unión con los dispositivos de campo, un Módulo de comunicación 7

2 Introducción serie (SIOM) o paralelo (PIOM) con el rack procesador, un Módulo de diagnóstico avanzado (EDM – Enhanced Diagnostic Module) para solucionar problemas en el bus de I/O y un Módulo de alimentación (PSM – Power Suply Module).

Figura 5. Composición de un rack I/O serie 2.2.2. Descripción funcional El Procesador lee de forma rápida y continuada las entradas a procesar y ejecuta el programa lógico de forma cíclica. El LM se programa mediante código ejecutable denominado lógica en escalera y se configura desde las estaciones universales. Existe la posibilidad de elegir entre distintos modelos de procesador con sets de instrucciones y mapeados de memoria diferentes, para poder adaptarse a las necesidades particulares del proceso. Operando en un ciclo de scan independiente del ciclo de ejecución de programa lógico del Procesador, el LMM maneja y procesa la información desde o hacia las tablas de datos de I/O. El LMM convierte estos datos a los tipos de datos de la UCN, realizando conversiones de unidades, manipulación de alarmas, informes de estados de diagnóstico y funciones de comunicación con la UCN. A su vez, cambios realizados por los operadores en las estaciones universales son escritos inmediatamente en el Procesador. La base de datos del LMM se configura directamente desde las estaciones universales.

Figura 6. Arquitectura funcional de un LM 8

2 Introducción La siguiente imagen resume todo lo expuesto hasta el momento:

Figura 7. Diagrama conceptual de los subsistemas de un LM 2.2.3. Características El Logic Manager reune las siguientes características: • Gran variedad de módulos de Entrada/Salida también conocidos como E/S o I/O (Input/Output), para adaptar la diversidad de señales de los dispositivos de campo. • Comunicación directa igual a igual y planificación de estrategias con otros elementos de la zona de control del proceso, iniciada por cualquiera de ellos. • Total comunicación con operadores, ingenieros y personal de mantenimiento en la zona de supervisión del proceso a través de las estaciones universales de trabajo. • Recuperación de bases de datos desde el módulo histórico (History Module). • Rápida ejecución de programas lógicos. • Amplia lógica digital, booleana o de enclavamiento. A modo de resumen dispone de: - Instrucciones de contactos y bobinas. - Instrucciones de bit simple. - Instrucciones de temporizadores y contadores. - Instrucciones de salto. - Instrucciones de manipulación de datos. 9

2 Introducción - Instrucciones de comparación de enteros. - Instrucciones matemáticas. - Instrucciones de operadores lógicos. - Instrucciones de referencia de memoria. - Instrucciones de conversión de datos. - Instrucciones de secuenciador. - Instrucciones de matrices. - Instrucciones diversas. • Facilidad de programación. 2.3. 623-60 MS-DOS Loader El paquete MS-DOS Loader es un conjunto de programas que, funcionando en entorno MS-DOS, convierten cualquier PC en un dispositivo para programar y monitorizar cualquier sistema Logic Manager al conectar ambos equipos mediante un cable de comunicación serie. La siguiente imagen es una captura del menú principal:

Figura 8. MS-DOS Loader - Menú principal 2.3.1. Descripción general El programa MS-DOS Loader permite realizar las siguientes accciones: 1. Especificar la configuración del sistema (modelo de procesador, mapeado de memoria…). 2. Desarrollar el programa lógico evitando errores al impedir la utilización de instrucciones o direcciones no permitidas según la configuración introducida. 3. Transferir el programa desarrollado a la zona de memoria de programa del equipo Logic Manager. 4. Una vez el Logic Manager está ejecutando el programa lógico, presenta el estado y el valor de las direcciones de las tablas de memoria sobre las líneas del programa lógico, para que el usuario pueda supervisar la ejecución.

10

2 Introducción 2.3.2. Características Sus características principales son: • Facilidad de uso: Diseñado para ser completamente manejado por menús, presenta una serie de ventanas de ayuda de tal forma que requiere mínimo aprendizaje. • Integración de Programación y Documentación: Completa fusión entre programa lógico y documentación • Programación “Stand-Alone”: Desarrollo del programa lógico sin necesidad de estar conectado al LM. • Monitorización “On-Line”: Monitoriza el estado de ejecución del programa lógico tal y como es ejecutado. • Modo de programación aumentado (ARMP): Edición del programa lógico mientras se está ejecutando. • Funciones de búsqueda: Localiza contactos ya sea por número de línea, tipo de elemento, dirección o etiqueta de dirección. • Completa documentación: Obtiene una impresión que incluye datos descriptivos tales como referencias cruzadas, direcciones no utilizadas, direcciones conflictivas y listados de todo tipo de documentación. • Direcciones por etiquetas: Etiquetas de 7 caracteres para cada uno de los elementos lógicos, en vez de direcciones numéricas. • Formato libre de edición de documentación: Hasta 20 líneas de 67 caracteres para comentarios de línea y de direcciones. Permitiendo la edición mientras se está en modo de monitorización. • Potente función de búsqueda y reemplazo: Cambios de direcciones de un existente elemento lógico cada vez que dicho elemento es encontrado en el programa lógico. • Funciones de edición de bloques: Permite al usuario redireccionar el elemento lógico en un bloque de lógica mientras está siendo cargado en memoria. Hasta ocho diferentes grupos de direcciones pueden ser reasignadas. • Configuración flexible: Facilita especificar diferentes parámetros que configuran la forma de visualización y edición del programa lógico. • Soporta todos los modelos de LM, en los modos de monitorización ON-Line y Stand-Alone. • Funciones de visualización de datos: Monitoriza el valor de hasta 126 direcciones independientemente de su localización.

11

2 Introducción 2.3.3. Programa lógico – Código en escalera La siguiente imagen es una captura de la ventana de edición del programa lógico:

Figura 9. MS-DOS Loader - Ventana edición programa lógico El siguiente párrafo es un pequeño trozo del informe que genera el programa DOSLoader en el que, además del programa lógico, se incorporan datos de documentación (etiquetas, comentarios,…) y datos de ayuda al programador (líneas de programa en que aparecen las direcciones de salida - referencias cruzadas,…). !Line # 1185 ! ! Line # Cross-Ref of addr 6791 ! ! 1185 ,*1185 ,/1186 , 1187 , 1265 ! ! ! !MUY ALTO ! !NIV. SILO ! !EXTR. C ! ! HL20702 SET ! ! 303 6791 ! +--]\/[-------------+-----------------------------------------------------( )--+ ! ! ! ! (0 ) ! ! ! ! ! ! ! ! ! ! ! ! SET RESET ! ! ! 6791 6792 ! ! +---] [-------]/[---+ ! ! ! ! (1185 ) (1186 ) ! ! ! !Line # 1186 ! ! Line # Cross-Ref of addr 6792 ! ! /1185 , 1186 ,*1186 , 1187 ! ! ! !U2 ! ! ! ! ! ! ENTER2 RESET ! ! 894 6792 ! +--]/\[-------------+-----------------------------------------------------( )--+ ! ! ! ! (0 ) ! ! ! ! ! ! ! ! ! ! ! ! SET RESET ! ! ! 6791 6792 ! ! +---]/[-------] [---+ ! ! ! ! (1185 ) (1186 ) ! ! !

12

2 Introducción 2.4. Objetivos Tal y como se puede observar en las descripciones del equipo Logic Manager y del programa MS-DOS Loader realizada en los apartados anteriores, se echa en falta un programa que en entorno Windows, facilite la visualización del programa lógico e incorpore una función de simulación. Con esta herramienta se podría depurar el programa lógico sin necesidad de estar conectado al LM, reduciendo las horas de puesta en marcha de nuevos programas en un Logic Manager y eliminando el riesgo de parada de la unidad de fabricación controlada por el sistema, si existe un error en el programa en una zona crítica. Por otro lado, existen instrucciones cuyo funcionamiento no queda claro en el manual de programación. Al necesitar despejar todas esas incógnitas en el desarrollo del simulador, futuros usuarios sólo necesitarán simularlas para comprobar el funcionamiento exacto, evitándose diseñar programas incorrectos por tener errores conceptuales. 2.4.1. Características Las características principales del programa a desarrollar deben de ser: • Facilidad de uso: Ofrecer la potencia, facilidad de manejo y de aprendizaje que ofrece el entorno Windows. • Integración de documentación y de programación: Mantener las mismas posibilidades de documentación que ofrece el programa Loader, mejorando las posibilidades de edición y búsqueda permitiendo el tratamiento de la documentación con la potencia de Microsoft Access. • Facilidad de visualización: Presentación del programa lógico en un entorno gráfico. • Potente herramienta de simulación: Función de simulación del programa lógico, permitiendo la ejecución en modo continuo y paso a paso. • Módulo de ayuda a la simulación: Módulo de diseño de cronogramas de variables de entrada y de visualización de cronogramas en las variables de salida, para chequear el funcionamiento en modo continuo. • Módulo de visualización de datos: Visualización en formato de tabla de las áreas de datos de I/O y registros. • Adaptar el mapa de memoria y set de instrucciones en función del modelo de procesador seleccionado. 2.4.2. Exclusiones Se va a obviar la implementación de las siguientes características, por lo que se seguirá utilizando el programa MS-DOS Loader para realizarlas: • Transferencia de programas: Debido tanto a la falta de documentación del protocolo de comunicación entre el PC y el LM, como a la imposibilidad de realizar pruebas con un LM real para averiguarlo, pues un error en las mismas podría dañar el equipo, se ha decidido no implementar la función de cargar el programa desarrollado en el LM ni ninguna otra que implique comunicarse con el Logic Manager.

13

2 Introducción • Edición del programa lógico: El MS-DOS Loader tiene funciones que facilitan el desarrollo de nuevos programas tales como supervisión de errores en la introducción de nuevas líneas, funciones de búsqueda y reemplazo… por lo que se ha dejado su implementación para un futuro proyecto. Asimismo, a la hora de simular, se van a obviar principalmente las siguientes funciones: • Soporte de todos los modelos de LM: Ya se ha comentado, que hay instrucciones cuyo funcionamiento no queda claro en el manual del programador. Como sólo se pueden realizar pruebas con un procesador modelo 620-35 y no se puede comprobar el funcionamiento de otros modelos, se ha decidido permitir la simulación de programas sólo cuando el sistema esté configurado con el modelo 620-35 ó 620-25 (modelo equivalente). • Actualización de área de registros de estado del sistema: En la simulación no se actualizará el área destinada a los registros que contienen información de estado del sistema.

14

3 Funcionamiento del Logic Manager

3. Funcionamiento del Logic Manager En la introducción, se describen los componentes básicos de un Logic Manager y la función que realizan: • LMM (Logic Manager Module) • CPM (Control Processor MODULE) • Procesador E/S (I/O Link Processor) • Módulos E/S (I/O Module) Sin embargo, existen puntos que necesitan ser estudiados en profundidad. 3.1. Mapeado de memoria El LM tiene dos módulos que contienen la memoria con la que trabaja: • Módulo de memoria de programa • Módulo de memoria de registros (Register Module Tables) 3.1.1. Módulo de memoria de programa Este módulo almacena el programa de usuario. Está formado por registros de 24 bits (3 Bytes) hasta un máximo de 32768 registros. 3.1.2. Módulo de memoria de registros Almacena la tabla de datos E/S del sistema. Esta tabla está dividida en tres: • Tabla de estados E/S (I/O Status Table) • Tabla de registros (Data Registers Table) • Tabla de estados del sistema (System Status Table)

System Status Table

Figura 10. Mapa de memoria del modulo de memoria de registros. 3.1.2.1. Tabla de estados E/S Está formada por dos tablas de 1 bit superpuestas comenzando en la dirección 0. • Tabla de estados de entrada (Input Status Table): Un máximo de 2048 registros están reservados para almacenar los estados de entradas reales. 15

3 Funcionamiento del Logic Manager • Tabla de estados de salida (Output Status Table): De un máximo de 4096 registros, los 2048 primeros están disponibles para almacenar los estados de salidas reales o para almacenar variables binarias de uso interno. Los 2048 siguientes sólo pueden almacenar variables binarias de uso interno. La tabla de estados de entrada solamente es actualizada por el procesador I/O. La tabla de estados de salida es actualizada tanto por el procesador de control (resultados obtenidos por programa) como por el LMM (escritura desde el sistema de control distribuido). Se debe destacar que para las direcciones 0-2047 en las que coexisten la tabla de estados de entrada y de salidas, el valor leído y por tanto el evaluado en el programa siempre es una OR de ambas tablas. Las direcciones de entradas y salidas físicas de módulos E/S analógicos (rango 0-2047) son datos de 16 bits. Sin embargo, como se puede apreciar en la figura no tienen una tabla donde guardar el valor cíclicamente, pues son accedidas o modificadas por el programa en el momento en que se evalúa la instrucción correspondiente. 3.1.2.2. Tabla de registros Está formada por registros de 16 bits (más 1 bit adicional para el signo dependiendo del modelo de LM escogido) hasta un máximo de 4096, comenzando en la dirección 4096. Aquellos modelos que no utilizan un bit adicional para codificar el signo, utilizan Complemento a dos (Ca2). La siguiente tabla indica qué formato numérico utiliza cada modelo de procesador: Modelo 620-06 620-10O 620-10N 620-11 620-12 620-14 620-15O 620-15N 620-16 620-20 620-25 620-30 620-35 620-36

Formato 16 (Ca2) 16 (Ca2) 16 (Ca2) 16 (Ca2) 16 (Ca2) 16 (Ca2) 16 (Ca2) 16 (Ca2) 16 (Ca2) 16 (Ca2) 16+1 16 (Ca2) 16+1 16 (Ca2)

Tabla 1. Formato de registros en función del modelo de procesador. Los parámetros preset y acumulador de temporizadores y registros son almacenados en esta tabla junto con cualquier otro dato numérico que quiera ser memorizado. En el caso de disponer de bit de signo, éste también puede ser utilizado para almacenar variables binarias de uso interno.

16

3 Funcionamiento del Logic Manager La tabla de registros es actualizada tanto por el procesador de control (resultados obtenidos por programa) como por el LMM (escritura desde el sistema de control distribuido). A partir de ahora, la memoria designada por la tabla de estados E/S y la tabla de registros se va a llamar memoria de usuario, mientras que la tabla de estados del sistema se va a llamar memoria de sistema. 3.1.2.3. Tabla de estados de sistema Está formada por registros de 8 bits hasta un máximo de 4096, comenzando por la dirección 0. Almacena información de diagnóstico del procesador pudiendo ser accedida por alguna de las instrucciones del programa de usuario, sólo en modo de lectura. Está dividida en tres secciones: • Diagnóstico del sistema • Estado del hardware del sistema • Identificación del sistema 3.2. Modos de funcionamiento El Logic Manager puede trabajar en cuatro modos de funcionamiento: RUN, DISABLE, PROGRAM o RUN/PROGRAM. Modo RUN: El procesador evalúa las líneas de código y actualiza las salidas con los resultados obtenidos. Modo Disable: El procesador evalúa las líneas de código del mismo modo que el modo RUN, con la diferencia que las salidas no son actualizadas, manteniendo el último valor o reseteanse en función de la configuración del hardware. Modo Program: El procesador deja de evaluar las líneas de código. Las salidas mantienen el último valor o se resetean en función de la configuración del hardware permitiendo la edición del programa y valores de registros temporizadores y contadores. Modo RUN/PROGRAM: Este modo combina las prestaciones del modo RUN y PROGRAM. El procesador evalúa las líneas de código y actualiza las salidas con los resultados obtenidos permitiendo la edición del programa y valores de registros temporizadores y contadores. 3.3. Ciclo de ejecución de programa lógico (Ciclo de scan) Cuando el sistema entra en modo RUN se realiza la siguiente secuencia: Controlador Logico en modo RUN

Scan Retentivo

ISS Scan estado entradas

Ejecución programa lógico

Figura 11. Ciclo de scan del controlador lógico. 17

3 Funcionamiento del Logic Manager 1.- Scan retentivo: Se realiza una lectura previa del programa de usuario residente en memoria de programa en la que se evalúan todas las instrucciones y según los casos se actúa de una forma u otra: • Salidas no retentivas: escriben un cero en la tabla de estados de salida. • Salidas retentivas: recuperan el valor que tenían en el último scan antes de dejar el modo RUN (en el capítulo 4.2.3.2 Elementos de programa se explica como se almacena el valor anterior). • Temporizadores con retardo a ON, retentivos y contadores: El acumulador se inicializa a cero. • Temporizadores con retardo a OFF: El acumulador se inicializa con el valor del preset. 2.- Scan de los estados de las entradas (ISS - Input Status Scan): El procesador I/O escribe la tabla de estados de entrada con los valores de las direcciones de tarjetas de entradas. 3.- Ejecución programa lógico (scan): Se ejecuta el programa cargado en memoria hasta que se encuentra la instrucción de retorno al principio de programa (RBP) o la indicación de fin de programa. Cualquiera de ellas provoca volver al paso 2. • El procesador utiliza la pila, para almacenar temporalmente los datos leídos que serán transferidos posteriormente a otros registros o serán utilizados como operadores en las instrucciones matemáticas, de comparación y conversión. • A medida que el programa es ejecutado se evalúan y modifican los valores de las tablas de memoria y el procesador I/O actualiza simultáneamente las tarjetas de salidas. • El tiempo que tarda en ejecutarse cada ciclo, es la suma del tiempo dedicado a realizar los pasos 2 y 3. La duración del paso 2 depende de la configuración de tarjetas E/S, mientras que la duración del paso 3 depende de las instrucciones que componen el programa a ejecutar.

18

3 Funcionamiento del Logic Manager En las siguientes tablas se detallan los tiempos de ejecución de la mayoría de las instrucciones del set de instrucciones del Logic Manager.

Tabla 2. Tiempo de ejecución de cada instrucción (1/2)

19

3 Funcionamiento del Logic Manager

Tabla 3. Tiempo de ejecución de cada instrucción (2/2)

20

4 Interpretación MS-DOS Loader

4. Interpretación MS-DOS Loader Para poder simular el funcionamiento del LM, ha sido necesario interpretar los archivos que utiliza para guardar los parámetros de configuración, los datos de documentación de soporte y el programa a ejecutar. Toda esta información es visualizada y editada por medio del programa MS-DOS Loader, por lo que el método de decodificación consiste en realizar cambios y estudiar como afectan en los códigos de los archivos. Las siguientes capturas, muestran la ventana de presentación del programa y el menú principal del MS-DOS Loader.

Figura 12. MS-DOS Loader - Pantalla de comienzo

Figura 13. MS-DOS Loader - Menú principal Los siguientes capítulos se estructuran de acuerdo a éste menú. En cada uno de ellos se comenta cual es su función y como funciona.

21

4 Interpretación MS-DOS Loader Nota importante: A medida que se ha ido estudiando el funcionamiento de las instrucciones y del sistema del Logic Manager a lo largo del capítulo, han aparecido dudas que han podido ser resueltas mediante pruebas con un equipo real. Sin embargo, en otras ocasiones, principalmente por falta de LM para poder realizar las pruebas, han aparecido dudas que no han podido ser resueltas. En estos casos, se ha destacado el párrafo que describe el problema y la decisión tomada para poder acabar el diseño, con el siguiente símbolo escrito al comienzo del mismo.

?

22

4 Interpretación MS-DOS Loader 4.1. F1 – 620 Loader / Monitor Se utiliza para comunicar con el Logic Manager. Si se trabaja sin el LM conectado y se intenta conectar con él, transcurrido un tiempo, el programa informa de que no se puede realizar la conexión con el Controlador lógico del LM. Como en el simulador se va a trabajar sin el LM conectado, la configuración de la comunicación serie no nos interesa. 4.2. F2 – 620 Stand alone loader (*.ldr) Se utiliza para acceder a la parte de edición del programa a ejecutar. La ventana de edición del MS-DOS Loader trabaja principalmente con el fichero *.ldr, documento que contiene el programa de usuario codificado. Es por ello, que en este capítulo se va a estudiar la codificación de este documento. Los archivos de documentación se estudiarán en el apartado que desarrolla la opción del menú principal encargada de los mismos (ver apartado 4.2.4).

Figura 14. MS-DOS Loader – F2 Pantalla edición Stand-Alone La ventana de edición se divide en cinco partes: • Línea superior de información. Indica en la parte izquierda qué teclas apretar para acceder a la ayuda o volver al menú principal y en la derecha, los campos de descripción de la etiqueta de la dirección de la instrucción de salida. Al no ser necesaria en el simulador no necesita ser estudiada ni desarrollada. • Zona central de edición y visualización. Visualiza de una en una las líneas que componen el programa, permitiendo su edición. Se divide en una matriz de 5 filas x 10 columnas. Las 9 columnas primeras sirven para realizar las formaciones serie y/o paralelo de comandos. La última columna se reserva para introducir el comando de salida deseado.

23

4 Interpretación MS-DOS Loader

La captura superior muestra una de las celdas de la matriz de edición. La celda se divide en tres partes: nombre de etiqueta de la dirección, número de dirección y símbolo del comando. Presionando la tecla ? una vez, aparecen todos los campos de la etiqueta de la dirección seleccionada por el puntero, si se pulsa otra vez, aparece el texto del comentario asociado. • Menú de selección de comandos. Permite al usuario seleccionar el comando que quiere introducir en la posición marcada por el puntero dentro de la matriz de comandos. Siendo el principal objetivo simular, es imprescindible estudiar la totalidad de comandos que compone el juego de instrucciones del Logic Manager. • Menú de herramientas. Permite al usuario acceder a herramientas que le permiten entre otras funciones: imprimir el programa o los ficheros de documentación, buscar direcciones o comandos, listar el estado de variables. Al no ser objetivo del proyecto perfeccionar las herramientas de edición, no es necesario estudiar ni desarrollar esta parte. • Línea inferior de información. Informa de la configuración del sistema: Modelo, memoria de programa total, memoria de programa libre, modo de funcionamiento del LM, posición del selector de modo de funcionamiento del LM y estado de teclas de teclado “Ins”, “Del”, “Bloq Num” o “Bloq Mayus”. Ésta línea sólo informa de la configuración seleccionada, es por ello que el estudio de los parámetros de configuración se realizará en el apartado que estudia la opción del menú principal encargada de ello (ver apartado 4.6). 4.2.1. Estructura básica del fichero *.ldr Para estudiar la codificación, tanto de este archivo como la del resto de archivos, se ha utilizado un editor hexadecimal ya que facilita la edición de documentos que son combinación de formato hexadecimal y formato texto (ASCII). La forma de detectar qué parte del fichero codificaba cada uno de los parámetros o comandos, ha sido ir cambiando estos de uno en uno hasta poder detectar quién era quién, y cómo se codificaba. La siguiente tabla muestra los campos que, puestos uno detrás de otro, conforman el fichero *.ldr. En los siguientes apartados se estudia cada uno de ellos en detalle y por qué se ha llegado a determinar que la estructura es la aquí expuesta.

24

4 Interpretación MS-DOS Loader Pos. 1 2 3 4 5 6 7 8 9 10.1 10.2 10.3 10.4 10.5

11

Descripción

Nº Bytes Formato Cabecera Número modelo procesador 2 Hexa (LSB1 MSB2) Tamaño memoria de programa 2 Hexa (MSB LSB) (Memory size) Tamaño memoria de registros 2 Hexa (MSB LSB) (Register size) Tamaño memoria E/S real 2 Hexa (MSB LSB) (Real I/O size) Número de elementos totales del 2 Hexa (LSB MSB) programa Número de elementos totales del 2 Hexa (LSB MSB) programa forzados Fecha 6 ASCII Programador 26 ASCII Título 96 ASCII Cuerpo Comienzo de nuevo bloque de 1 Hexa (código h4C3) programa Número de elementos del nuevo 1 Hexa bloque de programa (máximo de h52)4 Elementos del nuevo bloque de 3 x Hexa programa NElementos (pos. 10.2) Se repiten pos. 10.1, 10.2 y 10.3 hasta alcanzar el número de elementos totales del programa (pos. 5). Fin de programa 1 Hexa (código h4E o h53) Según el modelo de LM corresponde un código u otro. Sólo si código h53 existen las siguientes posiciones. Cola Otros Varios Hexa Tabla 4. Estructura del fichero *.ldr

4.2.2. Cabecera 4.2.2.1. Modelo del procesador Los siguientes subapartados muestran el fichero *.ldr en formato hexadecimal, para cada uno de los modelos de LM configurables.

1

LSB es la abreviación de Least Significant Byte. Representa el código hexadecimal que contiene los 8 bits bajos (posiciones 0 a 7) de una palabra de 16 bits. 2

MSB es la abreviación de Most Significant Byte. Representa el código hexadecimal que contiene los 8 bits altos (posiciones 8 a 15) de una palabra de 16 bits. 3

Los números precedidos con h están expresados en formato hexadecimal.

4

La división de bloques no tiene en cuenta si la línea está a medias, simplemente cuenta elementos. 25

4 Interpretación MS-DOS Loader Para reducir las variaciones y así poder identificar parámetros se ha utilizado siempre la línea de programa que se muestra a continuación. 101 102 103 121 ├──] [─────] [──┬──] [─────────────────────────────────────────────────────( )── │ │ │ │ │ 104 105 │ ├──] [──┬──] [──┴ │ │ │ │ │ 106 │ ├──] [──┴

Hay que tener en cuenta, que al cambiar el modelo de LM, cambian también los valores posibles de tamaños de memoria, registros y E/S real al ser unos más potentes que otros. Es por ello que al principio de cada modelo se especifican los valores para cada uno de esos parámetros. Modelo 620-06 Memory size: 2048, Register size: 256, Real I/O: 192 010000080001C000090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C400794E

Modelo 620-10 OLD Memory size: 2048, Register size: 256, Real I/O: 256 0000000800010001090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C400794E

Modelo 620-10 NEW Memory size: 4096, Register size: 512, Real I/O: 512 0000001000020002090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C400794E

Modelo 620-11 Memory size: 8192, Register size: 4096, Real I/O: 256 0600002000100001090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C4007953000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

26

4 Interpretación MS-DOS Loader 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000030353037303400000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000B0032008000000B000000000000000000000000 0000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000008000100000001000F7F0000077F0FFFF682149006820FF7788C8FF8F88C8FFFFC0B9F090F038FFF900 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000004E560000

Modelo 620-12 Memory size: 2048, Register size: 256, Real I/O: 256 0B00000800010001090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C4007953000000000000000000000000

27

4 Interpretación MS-DOS Loader 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000030353037303400000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000B0032008000000B000000000000000000000000 0000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000008000100000001000F7F0000077F0FFFF682149006820FF7788C8FF8F88C8FFFFC0B9F090F038FFF900 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

28

4 Interpretación MS-DOS Loader 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000004E560000

Modelo 620-14 Memory size: 8192, Register size: 4096, Real I/O: 640 0700002000108002090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C4007953000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000030353037303400000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000B0032008000000B000000000000000000000000 0000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

29

4 Interpretación MS-DOS Loader 0000000008000100000001000F7F0000077F0FFFF682149006820FF7788C8FF8F88C8FFFFC0B9F090F038FFF900 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000004E560000

Modelo 620-15 OLD Memory size: 2048, Register size: 256, Real I/O: 256 0100000800010001090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C400794E

Modelo 620-15 NEW Memory size: 4096, Register size: 512, Real I/O: 512 0100001000020002090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C400794E

Modelo 620-16 Memory size: 8192, Register size: 4096, Real I/O: 2048 0800002000100008090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C4007953000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

30

4 Interpretación MS-DOS Loader 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000030353037303400000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000B0032008000000B000000000000000000000000 0000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000008000100000001000F7F0000077F0FFFF682149006820FF7788C8FF8F88C8FFFFC0B9F090F038FFF900 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000004E560000

31

4 Interpretación MS-DOS Loader Modelo 620-20 Memory size: 8192, Register size: 2048, Real I/O: 512 0200002000080002090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C400794E

Modelo 620-25 Memory size: 32768, Register size: 4096, Real I/O: 2048 0400008000100008090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C400794E

Modelo 620-30 Memory size: 24576, Register size: 4096, Real I/O: 2048 0300006000100008090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C400794E

Modelo 620-35 Memory size: 32768, Register size: 4096, Real I/O: 2048 0500008000100008090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C400794E

Modelo 620-36 Memory size: 32768, Register size: 4096, Real I/O: 2048 0A00008000100008090000003035303730340000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C09C90065C80066CA0068C9006AC37FFFC80069C37FFFC80067C4007953000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

32

4 Interpretación MS-DOS Loader 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000030353037303400000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000F0032008000000B000000000000000000000000 0000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000008000100000001000F7F0000077F0FFFF682149006820FF7788C8FF8F88C8FFFFC0B9F090F038FFF900 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000004E560000

33

4 Interpretación MS-DOS Loader Resumen Se concluye que el modelo de procesador para todos los valores que puede tener se codifica de la forma expuesta en la tabla siguiente. Modelo 620-06 620-10O 620-10N 620-11 620-12 620-14 620-15O 620-15N 620-16 620-20 620-25 620-30 620-35 620-36

Código Hexa h01 h00 h00 h06 h0B h07 h01 h01 h08 h02 h04 h03 h05 h0A

Código Decimal 1 0 0 6 11 7 1 1 8 2 4 3 5 10

Tabla 5. Codificación del parámetro modelo de procesador 4.2.2.2. Tamaño de memoria de programa (Memory size) Para determinar los códigos que codifican el parámetro “tamaño de memoria de programa” se ha ido variando el mismo, y se han sombreado las diferencias en los códigos resultantes. Modelo:620-35, “Memory size”: 32768, “Register size”: 4096, “Real I/O”: 2048 0500008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Modelo:620-35, “Memory size”: 30720, “Register size”: 4096, “Real I/O”: 2048 0500007800100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Modelo:620-35, “Memory size”: 28672, “Register size”: 4096, “Real I/O”: 2048 0500007000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Modelo:620-35, “Memory size”: 2048, “Register size”: 4096, “Real I/O”: 2048 0500000800100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Modelo:620-15N, “Memory size”: 512, “Register size”: 256, “Real I/O”: 256 0100000200010001020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

34

4 Interpretación MS-DOS Loader Se concluye que el valor “memory size” para todos los valores que puede tener se codifica de la siguiente forma: Valor 512 1024 2048 4096 6144 8192 10240 12288 14336 16384 18432 20480 22528 24576 26624 28672 30720 32768

Codigo Hexa h02 h04 h08 h10 h18 h20 h28 h30 h38 h40 h48 h50 h58 h60 h68 h70 h78 h80

Codigo Decimal 2 4 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128

Tabla 6. Codificación del parámetro "Memory size" 4.2.2.3. Tamaño de memoria de registros (Register size) Siguiendo el procedimiento del apartado anterior: Modelo:620-35, “Memory size”: 32768, “Register size”: 4096, “Real I/O”: 2048 0500008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Modelo:620-35, “Memory size”: 32768, “Register size”: 2048, “Real I/O”: 2048 0500008000080008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Modelo:620-15N, “Memory size”: 512, “Register size”: 256, “Real I/O”: 256 0100000200010001020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Se concluye que el valor “register size” para todos los valores que puede tener se codifica de la siguiente forma: Valor 256 512 2048 4096

Codigo Hexa h01 h02 h08 h10

Tabla 7. Codificación del parámetro "Register size" 35

4 Interpretación MS-DOS Loader 4.2.2.4. Tamaño de memoria E/S real (Real I/O size) Modelo:620-35, “Memory size”: 32768, “Register size”: 4096, “Real I/O”: 2048 0500008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Modelo:620-35, “Memory size”: 32768, “Register size”: 2048, “Real I/O”: 1024 0500008000100004020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Modelo:620-35, “Memory size”: 32768, “Register size”: 2048, “Real I/O”: 512 0500008000100002020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Modelo:620-06, “Memory size”: 2048, “Register size”: 256, “Real I/O”: 192 010000080001C000020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C80001C400024E

Se concluye que el valor “real I/O size” para todos los valores que puede tener se codifica de la siguiente forma. Valor 192 256 512 1024 2048

Codigo Hexa 0 (C000h1) 01 02 04 08

Tabla 8. Codificación parámetro "Real I/O size" 4.2.2.5. Número de elementos totales del programa Modelo: 620-35, “Memory size”: 32768, “Register size”: 4096, “Real I/O”: 2048 SALIDA 1 2 ───] [─────────────────────────────────────────────────────────────────────( )── 0500008000100008 0200 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000004C02C80001C40 0024E

Insertando ahora antes de la línea 1, la línea siguiente, el programa queda: EEEEEEE 3 4 ───] [─────────────────────────────────────────────────────────────────────( )── 0500008000100008 0400 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000004C04C80003C40 004C80001C400024E

Se observa que al ir cambiando las líneas de código, cambia el número codificado, y que además crece cuanto más código hay. Con este detalle y con lo que se describe en el

1

Para codificar 192, no se utiliza el código h0000 si no el hC000. 36

4 Interpretación MS-DOS Loader apartado 4.2.3 Cuerpo, se concluye que el número codificado (LSB MSB) contiene el número de elementos totales del programa. 4.2.2.6. Número de elementos totales del programa forzados El LM permite forzar alguna de sus instrucciones o elementos. Según las pruebas realizadas y las notas del manual de usuario, los elementos que pueden ser forzados son: INSTRUCCIÓN Instrucciones de contactos y bobinas Contacto normalmente abierto Contacto normalmente abierto - bifurcación anterior en T Contacto normalmente abierto - bifurcación anterior en X Contacto normalmente cerrado Contacto normalmente cerrado - bifurcación anterior en T Contacto normalmente cerrado - bifurcación anterior en X Contacto transicional a ON Contacto transicional a OFF Salida no retentiva Salida retentiva salida latch Salida unlatch Instrucciones de bit simple Lectura de bit Escribir bit Instrucciones de temporizadores y contadores Temporizador retardo a ON 1 segundo Temporizador retardo a ON 0.1 segundos Temporizador retardo a ON 0.01 segundos Temporizador retardo a OFF 1 segundo Temporizador retardo a OFF 0.1 segundos Temporizador retardo a OFF 0.01 segundos Instrucciones de salto No salto con retención No salto con desactivación Instrucciones de manipulación de datos Escritura de datos Instrucciones de comparación de enteros Prueba de cero Instrucciones de referencia de memoria No salto con retención (8192-8447) No salto con retención (8448) Retorno a principio de programa

SIMBOLO -] [-

-]/[-

-]/\]-]\/[-( )-(R)-(L)-(U)-]BR[-(BW)-(TON)-(TON)-(TON)-(TOFF)-(TOFF)-(TOFF)NSKR NSKD -(S2)-]Z[NSKR NSKR RBP

Tabla 9. Instrucciones que pueden ser forzadas La función de forzado permite sustituir el valor que tendría que tomar el elemento en función de la lógica, por el valor que desee el usuario. Elementos digitales: • Forzado a ON: Valor digital “1”. La secuencia lógica se cumple. • Forzado a OFF: Valor digital “0”. La secuencia lógica no se cumple. Elemento “escritura de datos”: • Valor entero deseado. El LM muestra un elemento forzado a ON escribiendo las letras FC debajo del gráfico del elemento, además de marcarlo en rojo.

37

4 Interpretación MS-DOS Loader SALIDA 1 2 ───] [─────────────────────────────────────────────────────────────────────( )── FC 0500008000100008 0200 0100 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000004C02F80001C400024 E

El LM muestra un elemento forzado a OFF escribiendo las letras FO debajo del gráfico del elemento. SALIDA 1 2 ───] [─────────────────────────────────────────────────────────────────────( )── FO FO 0500008000100008 0200 0200 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000004C02D80001D400024 E

Se observa que al ir cambiando el número de elementos forzados, cambia el número codificado. Se concluye que el número codificado (LSB MSB) contiene el número de elementos totales del programa forzados. Una peculiaridad del LM es que el forzado sólo afecta al elemento forzado, y no a la dirección que tiene ese elemento. Esto implica que, para forzar una dirección es necesario forzar todos los elementos que aparecen en el programa que trabajan con ella. Esta característica implica que la información del forzado está relacionada con el elemento, y no con la dirección. Esto coincide con la estructura expuesta en el apartado 3.1.2 Módulo de memoria de registros, ya que lo contrario implicaría que las tablas de estados E/S incorporasen un bit de estado de forzado para cada dirección. 4.2.2.7. Fecha Es fácil identificar este campo pues está codificado en ASCII, de tal forma que el texto introducido en el MS-DOS Loader es el que se visualiza directamente en un editor de texto, por lo que contando el número de caracteres editables en el campo “Fecha” del MSDOS Loader se obtiene que tiene una longitud de 6 Bytes. 4.2.2.8. Programador Es fácil identificar este campo, pues está codificado en ASCII, de tal forma que el texto introducido en el MS-DOS Loader es el que se visualiza directamente en un editor de texto, por lo que contando el número de caracteres editables en el campo “Programador” del MS-DOS Loader se obtiene que tiene una longitud de 26 Bytes. 4.2.2.9. Título Es fácil identificar este campo, pues está codificado en ASCII, de tal forma que el texto introducido en el MS-DOS Loader es el que se visualiza directamente en un editor de texto, por lo que contando el número de caracteres editables en el campo “Título” del MSDOS Loader se obtiene que tiene una longitud de 96 Bytes. 4.2.3. Cuerpo En este apartado se estudia la codificación de la parte de programa que contiene las líneas lógicas.

38

4 Interpretación MS-DOS Loader 4.2.3.1. Bloques de programa Tal y como ya se ha visto en el apartado 4.2.2.5, el programa se compone de líneas que, a su vez, se componen de elementos. Modelo: 620-35, “Memory size”: 32768, “Register size”: 4096, “Real I/O”: 2048 SALIDA 1 2 ───] [─────────────────────────────────────────────────────────────────────( )── 0500008000100008 0200 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 4C02 C80001 C40002 4E

En el ejemplo anterior y en los que se han expuesto hasta ahora se aprecia que la parte que codifica el programa empieza siempre con el código h4C. Este código es seguido por un número que coincide con el número total de elementos del programa, expresado con 1 Byte y no 4. Aumentando el número de líneas se observa que ambos números coinciden hasta que el número total de elementos supera la cifra 82 (h52). En ese momento, vuelve a aparecer el código 4C seguido del número de elementos que faltan hasta alcanzar el número total de elementos, a no ser que vuelva a ser mayor de 82 con lo que vuelve a crearse otro bloque y así sucesivamente. En el mismo ejemplo, se aprecia que eliminando el Byte final (h4E), el número de Bytes restantes, es el número de elementos del bloque x 3. Esto implica que cada elemento se codifica con 3 Bytes. Esta forma de dividir el programa en bloques de elementos no tiene en cuenta si una línea de programa está dividida en dos bloques. 4.2.3.2. Elementos de programa Se va a estudiar en detalle la codificación de un elemento para extraer las características comunes. Se ha elegido como elemento de estudio la instrucción “contacto normalmente abierto” por ser la más común en los programas. SALIDA 1 2 ───] [─────────────────────────────────────────────────────────────────────( )── 0500008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 C80001 400024E

El número decimal 1 equivale al hexadecimal h0001. Así se puede deducir que por ejemplo, el contacto normalmente abierto se identifica con el código hC8 seguido de la dirección en hexadecimal (MSB LSB). Por lo que los 3 Bytes que componen cada elemento son: 1 Byte Æ Codigo del elemento (Opcode). 2 Bytes Æ Parámetro del elemento, generalmente número de dirección codificada en hexadecimal (MSB LSB).

39

4 Interpretación MS-DOS Loader Los elementos de programa en la memoria de programa Tal y como ya se ha comentado, en la línea de información de la ventana de edición del programa de usuario del MS-DOS Loader, existe un campo que informa de la memoria de programa libre. Estudiando cómo se modifica este campo al añadir cada una de las instrucciones se puede llegar a concluir cómo se almacena el programa en la memoria de programa del LM. Aunque no tiene porqué coincidir la forma de almacenar el programa en memoria del LM, con la forma en que se almacena en el archivo *.ldr, los siguientes puntos hacen pensar que en la mayoría de los casos es idéntica: • El tamaño del elemento de 3 Bytes (24 bits) coincide con el tamaño de los registros de la memoria de programa. • Al introducir nuevas líneas de programa, el número de registros libres de la memoria de programa, se reduce en igual cuantía que el número de elementos que conforman la línea. Sabiendo esto, se pueden concluir ciertas cosas del funcionamiento del LM que no se determinan en la documentación disponible. Almacenando información de estado en el Opcode Si se fuerza a ON el elemento en estudio: SALIDA 1 2 ───] [─────────────────────────────────────────────────────────────────────( )── FC 0500008000100008020001000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 F80001 C400024E

Se observa que el código del contacto normalmente abierto pasa de hC8 a hF8. Si se fuerza a OFF el elemento en estudio: SALIDA 1 2 ───] [─────────────────────────────────────────────────────────────────────( )── FO FO 0500008000100008020002000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 D80001 D400024E

Se observa que el código del contacto normalmente abierto pasa de hC8 a hD8. De esto se comprueba lo que ya se intuía en el apartado 4.2.2.6 Número de elementos totales del programa forzados, el valor de forzado de un elemento no se guarda en la tabla de estados E/S o en otra tabla independiente, sino en el propio código del elemento. Si se evalúan los cambios que sufre el opcode de un elemento no forzado, forzado a ON y forzado a OFF, se concluye que de los 8 bits que componen el código, los llamados bits históricos (nombre en que se refieren a ellos en las pocas referencias en que aparecen en el manual de usuario) son los que ocupan posiciones 4 y 5 (posiciones 20 y 21 si se tienen en cuenta los 24 bits que codifican el elemento). • bit 20: indica con un “1” si el elemento está forzado. • bit 21: indica, en el caso de bit 20 a “1”, el valor que debe de sustituir al que tiene la dirección.

40

4 Interpretación MS-DOS Loader Al pasar a modo RUN, se realiza un scan retentivo (lectura inicial del programa residente en memoria) (ver apartado 3.3 Ciclo de ejecución de programa lógico (Ciclo de scan)), en el que las salidas retentivas eran evaluadas y se actualizaba la tabla de estados de salida con el último valor que tenían antes de dejar el modo RUN la última vez. Viendo lo aquí expuesto, se concluye que estos mismos bits históricos son utilizados para almacenar el valor previo de dichos elementos en el scan anterior. Así podrán ser utilizados tanto para restaurar bobinas retentivas como detectar flancos ascendentes y descendentes. Como el bit 20 es el que indica si el elemento ha sido forzado, debe de ser el bit 21 quien contenga la información del valor en el scan anterior.

23-22

Opcode 21 20

Parámetro 19-16

15-8

Estado de forzado Valor ciclo anterior o valor de forzado Figura 15. Estructura genérica de un elemento

41

7-0

4 Interpretación MS-DOS Loader Así, los elementos que permiten ser forzados, pueden presentar los siguientes opcodes: INSTRUCCIÓN Instrucciones de contactos y bobinas Contacto normalmente abierto Contacto normalmente abierto - bifurcación anterior en T Contacto normalmente abierto - bifurcación anterior en X Contacto normalmente cerrado Contacto normalmente cerrado - bifurcación anterior en T Contacto normalmente cerrado - bifurcación anterior en X Contacto transicional a ON Contacto transicional a OFF Salida no retentiva Salida retentiva salida latch Salida unlatch Instrucciones de bit simple Lectura de bit Escribir bit Instrucciones de temporizadores y contadores Temporizador retardo a ON 1 segundo Temporizador retardo a ON 0.1 segundos Temporizador retardo a ON 0.01 segundos Temporizador retardo a OFF 1 segundo Temporizador retardo a OFF 0.1 segundos Temporizador retardo a OFF 0.01 segundos Instrucciones de salto No salto con retención No salto con desactivación Instrucciones de manipulación de datos Escritura de datos Instrucciones de comparación de enteros Prueba de cero Instrucciones de referencia de memoria No salto con retención (8192-8447) No salto con retención (8448) Retorno a principio de programa

SIMBOLO

CODIGO

FORZADO A OFF

FORZADO A ON

-] [-

-]/\]-]\/[-( )-(R)-(L)-(U)-

C8 C9 CA CC CD CE 43 4B C4 C5 C6 C7

D8 D9 DA DC DD DE 53 5B D4 D5 D6 D7

F8 F9 FA FC FD FE 73 7B F4 F5 F6 F7

-]BR[-(BW)-

03 85

13 95

33 B5

-(TON)-(TON)-(TON)-(TOFF)-(TOFF)-(TOFF)-

4A 49 68 42 41 60

NSKR NSKD

46 47

56 57

76 77

-(S2)-

07

37 (Nota 2)

37

-]Z[-

8D

9D

BD

NSKR NSKR RBP

46 46 05

56 56 15

76 76 35

-]/[-

Nota 1 Nota 1 Nota 1 Nota 1 Nota 1 Nota 1

Nota 1.- Fuerza la salida no retentiva asociada (opcode hC4) Nota 2.- Excepcionalmente el forzado a OFF se comporta como el forzado a ON, consultar el apartado que estudia esta instrucción

Tabla 10. Opcode de instrucciones forzadas

42

4 Interpretación MS-DOS Loader 4.2.3.3. Juego de instrucciones Lo primero es saber qué comandos componen el juego de instrucciones, para determinar como se codifica cada uno de ellos. Según el menú del MS-DOS Loader El menú de selección de comandos se divide en submenús que agrupan los comandos según su funcionalidad. Estos submenús se pueden apreciar en las siguientes capturas.

Figura 16. MS-DOS Loader – F2ÆF1 Entradas binarias

Figura 17. MS-DOS Loader – F2ÆF2 Salidas binarias

Figura 18. MS-DOS Loader – F2ÆF3 Entradas/salidas enteras

Figura 19. MS-DOS Loader – F2ÆF4 Manejo de la pila

Figura 20. MS-DOS Loader – F2ÆF5 Saltos

Figura 21. MS-DOS Loader – F2ÆF6 Temporizadores/Contadores

Figura 22. MS-DOS Loader – F2ÆF7 Secuenciador

Figura 23. MS-DOS Loader – F2ÆF8 Subrutinas

43

4 Interpretación MS-DOS Loader

Figura 24. MS-DOS Loader – F2ÆF9 Operadores

Figura 25. MS-DOS Loader - F2ÆF9ÆF6 Operadores de conversión tipo de datos

Figura 26. MS-DOS Loader - F2ÆF9ÆF7 Operadores matemáticos

Figura 27. MS-DOS Loader – F2ÆF9ÆF8 Operadores lógicos

Figura 28. MS-DOS Loader – F2ÆF10 Matrices Según el manual del programador En vez de seguir la secuencia reflejada en las imágenes superiores, se ha considerado tratarlos y agruparlos de la misma manera en que se enumeran en el manual del programador “Guía de programación del MS-DOS loader”, ya que este documento es el que se ha utilizado principalmente para realizar el estudio de cada comando. Hay que tener en cuenta que el juego de instrucciones varía en función del modelo de procesador elegido. En la tabla siguiente se muestra el juego de instrucciones completo, el orden en que se va a desarrollar y qué instrucciones soporta cada modelo.

44

4 Interpretación MS-DOS Loader

INSTRUCCIÓN Instrucciones de contactos y bobinas Contacto normalmente abierto Contacto normalmente abierto - bifurcación anterior en T Contacto normalmente abierto - bifurcación anterior en X Contacto normalmente cerrado Contacto normalmente cerrado - bifurcación anterior en T Contacto normalmente cerrado - bifurcación anterior en X Contacto transicional a ON Contacto transicional a OFF Salida no retentiva Salida retentiva salida latch Salida unlatch Instrucciones de bit simple Lectura de bit Escribir bit Ramas serie y paralelo Bifurcación descendente en T Bifurcación descendente en X Bifurcación ascendente en T Instrucciones de temporizadores y contadores Temporizador retardo a ON 1 segundo Temporizador retardo a ON 0.1 segundos Temporizador retardo a ON 0.01 segundos Temporizador retardo a OFF 1 segundo Temporizador retardo a OFF 0.1 segundos Temporizador retardo a OFF 0.01 segundos Temporizador retentivo 1 segundo Temporizador retentivo 0.1 segundos Temporizador retentivo 0.01 segundos Contador Parametros contador/temporizador Instrucciones de salto No salto con retención No salto con desactivación Fin de salto Instrucciones de manipulación de datos Lectura de datos (Bring in) Lectura de datos indirecta Lectura de datos en coma flotante Escritura de datos Escritura de datos indirecta Escritura de datos en coma flotante Constante Constante en coma flotante (primera palabra) Constante en coma flotante (segunda palabra) Lectura de datos 1-8 bloques de 16 bits zona I/O (PULL) Lectura de datos 1-8 bloques de 16 bits zona Reg. (PULL) Escritura de datos 1-8 bloques de 16 bits zona I/O (PUSH) Escritura de datos 1-8 bloques de 16 bits zona Reg. (PUSH) Lectura de datos tabla estados del sistema (PULS) Instrucciones de comparación de enteros Igual que Menor que Mayor que Prueba de cero Instrucciones matemáticas Suma Suma con dirección de error

SIMBOLO -] [-

-]/[-

-]/\]-]\/[-( )-(R)-(L)-(U)-

620-06 620-15

620-10

620-11 620-12 620-14 620-1631 620-1633 620-36

X X X X X X X X X X X X

X X X X X X X X X X X X

X X X X X X X X X X X X

-]BR[-(BW)-

X X X X X X X X X X X X

X X X X X

X X X

X X X

X X X

-(TON)-(TON)-(TON)-(TOFF)-(TOFF)-(TOFF)-(TON)-(TON)-(TON)CTU/CTD

X X

X X

X X

X X

X X

X X

X X X X X X X X

X X

X X

X X X X X X X X X X X

NSKR NSKD EOS

X X X

X X X

X X X

X X X

-[B2]--[FP]-(S2)-(I2)-(FP)-[K2]-[FPK]-[FPK]-[PUL]-[PUL]-(PSH)-(PSH)-[PULS]-

X X

X X X X X X X X X X X X X X

X X

-]=[-][-]Z[-

X X X X

X X X X

X X X X

-[+][+]

X X

X X

X X

X X X

X X X X

Tabla 29. Juego instrucciones según modelo de procesador (1/2) 45

620-25 620-35

X X

X X X

X X X X

4 Interpretación MS-DOS Loader Instrucciones matemáticas Suma Suma con dirección de error Resta Resta con dirección de error Multiplicación Multiplicación con dirección de error División División con dirección de error Instrucciones de operadores lógicos AND bloque de 16 bits OR bloque de 16 bits XOR bloque de 16 bits Instrucciones de referencia de memoria No salto con retención (8192-8447) No salto con retención (8448) Salto a subrutina Subrutina Retorno a subrutina Retorno a principio de programa Instrucciones de conversión de datos Conversión binario a BCD Conversión binario a BCD con dirección de error Conversión BCD a binario Conversión BCD a binario con dirección de error Conversión entero a coma flotante Conversión entero a coma flotante con dirección de error Conversión coma flotante a entero Conversión coma flotante a entero con dirección de error Valor absoluto Valor absoluto con dirección de error Raiz cuadrada Raiz cuadrada con dirección de error Complemento a dos bloque de 16 bits (Negacion) Inversión de bits bloque de 16 bits (Not) Instrucciones de secuenciador Secuenciador Carga secuenciador Descarga secuenciador Instrucciones de matrices Matriz de puesta a cero y de puesta a uno Mover matriz Invertir matriz Matriz OR Matriz OR exclusiva Matriz AND Comparar matriz Instrucciones diversas Retardo (DLA) Operación nula Operación nula Exploración estado entradas Instrucciones no descritas en el manual Inversor lógico Codigos de control Comienzo de bloque de código Fin de programa (corto) Fin de programa (largo) Marcador/comentario de línea

-[+]-[+]-[-]-[-]-[*]-[*]-[/]-[/]-

X X X X X X X X

X X X X X X X X

-[&]-[OR]-[XOR]NSKR NSKR JSR SUB RTS RBP

X X X X X

X

X

X

-[BCD]-[BCD]-[BIN]-[BIN]-[FLT]-[FLT]-[INT]-[INT]-[ABS]-[ABS]-[SQRT]-[SQRT]-[NEG]-[NOT]-

-(LS2)-(US2)-

-[DLA]NOP NOP ISS

X X X X X X

X X X X X X

X X X X X X X X X X X X X X X X

X

X X X

X X X

X X X X X X X

X X X X X X X

X

X

X X

X

X

X

X

X

-]o[-

Tabla 30. Juego instrucciones según modelo de procesador (2/2)

46

X X X X X X X X

X

4 Interpretación MS-DOS Loader 4.2.3.4. Instrucciones de contactos y bobinas Permiten acceder a direcciones binarias. Contacto normalmente abierto ENTRADA SALIDA 1001 1 ───] [─────────────────────────────────────────────────────────────────────(R)── 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 C803E9 C50001530000000000000000000000

Si la dirección especificada tiene un 1 y la lógica precedente es 1, permite seguir la secuencia en las instrucciones siguientes. Puede ser forzado. Codificación El número decimal 1001 equivale al hexadecimal h03E9. Así se puede deducir que por ejemplo, el contacto normalmente abierto se identifica con el código hC8 seguido de la dirección en hexadecimal (MSB LSB). Se observa que se codifica con tres Bytes, como era de esperar: 1 Byte Æ Opcode (hC8). 2 Bytes Æ Número de la dirección codificada en hexadecimal (MSB LSB). Al ser forzado: Forzado a ON Æ Opcode (hF8). Forzado a OFF

Æ Opcode (hD8)

Contacto normalmente cerrado ENTRADA SALIDA 1001 1 ───]/[─────────────────────────────────────────────────────────────────────( )── 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 CC03E9 C40001530000000000000000000000

Si la dirección especificada tiene un 0 y la lógica precedente es 1, permite seguir la secuencia en las instrucciones siguientes. Puede ser forzado. Codificación Se codifica con tres Bytes: 1 Byte Æ Opcode (hCC). 2 Bytes Æ Número de la dirección codificada en hexadecimal (MSB LSB). Al ser forzado: Forzado a ON Æ Opcode (hFC). Forzado a OFF

Æ Opcode (hDC)

47

4 Interpretación MS-DOS Loader Contacto transicional a ON ENTRADA SALIDA 1001 1 ──]/\[─────────────────────────────────────────────────────────────────────(L)── 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 4303E9 C60001530000000000000000000000

Si existe una transición 0 a 1 y la lógica precedente es 1, permite seguir la secuencia en las instrucciones siguientes. Puede ser forzado. Codificación Se codifica con tres Bytes: 1 Byte Æ Opcode (h43). 2 Bytes Æ Número de la dirección codificada en hexadecimal (MSB LSB). Al ser forzado: Forzado a ON Æ Opcode (h73). Forzado a OFF

Æ Opcode (h53).

Según se ha comentado en el apartado 4.2.3.2 Elementos de programa, utiliza el bit 21 del registro en memoria de programa para guardar el estado en el ciclo anterior y así poder detectar los flancos. Debido a esta característica el MS-DOS Loader también reconoce el código h63 como contacto transicional a ON. Esta característica coincide con los resultados de las pruebas realizadas sobre un programa ejecutado en el LM. Se obtuvo que una misma dirección podía activar un contacto transicional a ON y otro a OFF en distintas líneas de un mismo scan, si entre ellas se realizaba la modificación de la dirección en la secuencia adecuada. Se demuestra así que no se realiza una copia de los valores de la tabla de estados E/S al comienzo de scan para detectar el flanco, sino que el histórico está relacionado con el elemento. Contacto transicional a OFF ENTRADA SALIDA 1001 1 ──]\/[─────────────────────────────────────────────────────────────────────(U)── 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 4B03E9 C70001530000000000000000000000

Si existe una transición 1 a 0 y la lógica precedente es 1, permite seguir la secuencia en las instrucciones siguientes. Puede ser forzado. Codificación Se codifica con tres Bytes: 1 Byte Æ Opcode (h4b). 2 Bytes Æ Número de la dirección codificada en hexadecimal (MSB LSB). Al ser forzado: 48

4 Interpretación MS-DOS Loader Forzado a ON Æ Opcode (h7B). Forzado a OFF

Æ Opcode (h5B).

Según se ha comentado en el apartado 4.2.3.2 Elementos de programa, utiliza el bit 21 del registro en memoria de programa para guardar el estado en el ciclo anterior y así poder detectar los flancos. Debido a esta característica el MS-DOS Loader también reconoce el código h6B como contacto transicional a ON. Esta característica coincide con los resultados de las pruebas realizadas sobre un programa ejecutado en el LM. Se obtuvo que una misma dirección podía activar un contacto transicional a ON y otro a OFF en distintas líneas de un mismo scan, si entre ellas se realizaba la modificación de la dirección en la secuencia adecuada. Se demuestra así que no se realiza una copia de los valores de la tabla de estados E/S al comienzo de scan para detectar el flaco, sino que el histórico está relacionado con el elemento. Bobina no retentiva ENTRADA SALIDA 1001 1 ───]/[─────────────────────────────────────────────────────────────────────( )── 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02CC03E9 C40001 530000000000000000000000

La dirección especificada cambia a 1 si la lógica precedente es 1, o a 0 si la lógica precedente es 0. Puede ser forzado. Al comenzar la ejecución, durante el scan retentivo se ponen a 0. Al estar dentro del bloque de salto de una instrucción NSKD, durante el primer ciclo se ponen a 0. Al estar dentro del bloque de salto de una instrucción NSKR o NSKD en posteriores ciclos al primero, mantienen el valor, por lo que si son modificadas en líneas no afectadas por el salto (situación anómala pues se intenta evitar utilizar la misma dirección como salida en líneas diferentes) o por edición del usuario, no vuelven a resetearse. Si el elemento está forzado y está dentro de un bloque de salto NSKR activo, el valor forzado no se escribe, sin embargo tampoco se reseteará en caso de estar dentro de un bloque de salto NSKD activo (primer ciclo). Codificación Se codifica con tres Bytes: 1 Byte Æ Opcode (hC4). 2 Bytes Æ Número de la dirección codificada en hexadecimal (MSB LSB). Al ser forzado: Forzado a ON Æ Opcode (hF4). Forzado a OFF

Æ Opcode (hD4).

49

4 Interpretación MS-DOS Loader Bobina retentiva ENTRADA SALIDA 1001 1 ───] [─────────────────────────────────────────────────────────────────────(R)── 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02C803E9 C50001 530000000000000000000000

La dirección especificada cambia a 1 si la lógica precedente es 1, o a 0 si la lógica precedente es 0. Puede ser forzado. Al comenzar la ejecución, durante el scan retentivo recuperan el último estado anterior al corte de alimentación. Al estar dentro del bloque de salto de una instrucción NSKD, durante el primer ciclo se ponen a 0. Al estar dentro del bloque de salto de una instrucción NSKR o NSKD en posteriores ciclos al primero, mantienen el valor, por lo que si son modificadas en líneas no afectadas por el salto (situación anómala pues se intenta evitar utilizar la misma dirección como salida en líneas diferentes) o por edición el usuario, no vuelven a resetearse. Si el elemento está forzado y está dentro de un bloque de salto NSKR activo, el valor forzado no se escribe, sin embargo tampoco se reseteará en caso de estar dentro de un bloque de salto NSKD activo (primer ciclo). Codificación Se codifica con tres Bytes: 1 Byte Æ Opcode (hC5). 2 Bytes Æ Número de la dirección codificada en hexadecimal (MSB LSB). Al ser forzado: Forzado a ON Æ Opcode (hF5). Forzado a OFF

Æ Opcode (hD5).

Utiliza el bit 21 del registro en memoria de programa para guardar el estado en el ciclo anterior. Bobina latch ENTRADA SALIDA 1001 1 ──]/\[─────────────────────────────────────────────────────────────────────(L)── 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C024303E9 C60001 530000000000000000000000

La dirección especificada cambia a 1 si la lógica precedente es 1, y no se ve modificada si la lógica precedente es 0. Puede ser forzado. Forzar una salida equivale a cumplir la lógica precedente. Por ello, forzar a OFF no hace que la salida sea 0, si no que se mantenga el estado anterior. Para poner a 0 la dirección es necesario forzar a ON la bobina unlatch asociada (ver siguiente apartado).

50

4 Interpretación MS-DOS Loader Al comenzar la ejecución, durante el scan retentivo recuperan el último estado anterior al corte de alimentación. Al estar dentro del bloque de salto de una instrucción NSKR o NSKD, mantienen el valor. Codificación Se codifica con tres Bytes: 1 Byte Æ Opcode (hC6). 2 Bytes Æ Número de la dirección codificada en hexadecimal (MSB LSB). Al ser forzado: Forzado a ON Æ Opcode (hF6). Forzado a OFF

Æ Opcode (hD6).

El funcionamiento descrito implica que el bit 21 almacene el valor de la dirección de trabajo y no el de la lógica precedente. Si se guardase el valor de la lógica precedente, suponiendo que varios ciclos anteriores se hubiese cumplido momentáneamente y la dirección hubiese sido escrita a uno, el bit histórico en el ciclo actual sería 0, por lo que al restaurar el sistema, se restauraría un 0 en la dirección y no un 1 como debería de ser. Bobina unlatch ENTRADA SALIDA 1001 1 ──]\/[─────────────────────────────────────────────────────────────────────(U)── 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C024B03E9 C70001 530000000000000000000000

La dirección especificada cambia a 0 si la lógica precedente es 1, y se mantiene a 0 si la lógica precedente es 0. Puede ser forzado. Forzar una salida equivale a cumplir la lógica precedente. Por ello, forzar a ON no hace que la salida sea 1 si no 0. Para poner a 1 la dirección es necesario forzar a ON la bobina latch asociada (ver apartado anterior). Al comenzar la ejecución, durante el scan retentivo recuperan el último estado anterior al corte de alimentación. Al estar dentro del bloque de salto de una instrucción NSKR o NSKD, mantienen el valor. Codificación Se codifica con tres Bytes: 1 Byte Æ Opcode (hC7). 2 Bytes Æ Número de la dirección codificada en hexadecimal (MSB LSB). Al ser forzado: Forzado a ON Æ Opcode (hF7). Forzado a OFF

Æ Opcode (hD7).

El funcionamiento descrito implica que el bit 21 almacene el valor de la dirección de trabajo y no el de la lógica precedente. Si se guardase el valor de la lógica precedente, 51

4 Interpretación MS-DOS Loader suponiendo que varios ciclos anteriores se hubiese cumplido momentáneamente y la dirección hubiese sido escrita a uno, el bit histórico en el ciclo actual sería cero, por lo que al restaurar el sistema, se restauraría un cero en la dirección y no un uno como debería de ser. 4.2.3.5. Instrucciones de bit simple Permiten acceder a bits de la zona de memoria de registros compuesta por registros de 16 bits (16+1 según el modelo de LM). Las direcciones varían entre 4096 y 8191, con posiciones de bit de 0 (bit menos significativo) hasta 15 (bit más significativo) para cada una de ellas. En el caso de trabajar con modelos de LM que usan registros 16+1, el bit de signo no puede ser accedido de esta forma, si no utilizando las instrucciones de contactos y bobinas ya descritas. Leer bit ENTRADA SALIDA 4096 4097 ──]BR[────────────────────────────────────────────────────────────────────(BW)── 5 1 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 03A001 852003530000000000000000000000

Si el bit del registro de 16 bits especificado tiene un 1 y la lógica precedente es 1, permite seguir la secuencia en las instrucciones siguientes. Puede ser forzado. Codificación En principio se tiene que codificar un rango de 4096 a 8191 para seleccionar la dirección de la palabra, y un rango de 0 a 15 para seleccionar el bit de la dirección. De los ejemplos siguientes, se deduce que el rango máximo de 4096-8191 direcciones de palabras (16 bits = 2 Bytes) es descompuesto en Bytes, por lo que en verdad se tiene un rango de 0 a 8191 direcciones de bytes. El Byte mas significativo de la primera palabra equivale a la dirección 0 y el menos significativo a la dirección 1, y así sucesivamente. Así que el problema inicial se convierte en codificar un rango de 0 a 8191 para seleccionar la dirección del Byte, y un rango de 0 a 7 para seleccionar el bit del Byte. Los siguientes ejemplos sirven para determinar la forma de codificar los rangos: 4096 4097 ──]BR[────────────────────────────────────────────────────────────────────(BW)── 0 0 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 030001 850003 530000000000000000000000 ENTRADA SALIDA 4096 4097 ──]BR[────────────────────────────────────────────────────────────────────(BW)── 5 1 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 03A001 852003 530000000000000000000000 ENTRADA SALIDA 4096 4097 ──]BR[────────────────────────────────────────────────────────────────────(BW)── 10 2

52

4 Interpretación MS-DOS Loader 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 034000 854003 530000000000000000000000 4097 4098 ──]BR[────────────────────────────────────────────────────────────────────(BW)── 10 2 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 034002 854005 530000000000000000000000 8191 8191 ──]BR[────────────────────────────────────────────────────────────────────(BW)── 15 0 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 03FFFE 851FFF 530000000000000000000000

Se concluye que de los dos Bytes destinados a codificar la dirección del bit, se cogen los 3 bits más significativos para el rango de 0 a 7 y los 13 bits restantes para el rango de 0 a 8191. Se codifica con tres Bytes: 1 Byte Æ Opcode (h03). 2 Bytes Æ Número de la dirección codificada en hexadecimal (Especial). Al ser forzado: Forzado a ON Æ Opcode (h33). Forzado a OFF

Æ Opcode (h13).

Ejemplo: 6143 6144 ──]BR[────────────────────────────────────────────────────────────────────(BW)── 15 15 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 03EFFE 85F000 530000000000000000000000

Cambiando la dirección de la palabra 6143 a un rango de 0 a 8191 Bytes, resulta que (6143-4096)*2 = 4094. Además como el bit 15 de la palabra 6143 corresponde al bit 7 del Byte de mayor, al hablar del MSB se mantiene el 4094 (si fuera el LSB seria 4095). Finalmente: 111 + 0 1111 1111 1110 = hEFFE como se quería comprobar. Escribir bit ENTRADA SALIDA 4096 4097 ──]BR[────────────────────────────────────────────────────────────────────(BW)── 5 1 0A00008000100008020000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C02 03A001 852003 530000000000000000000000

El bit especificado cambia a 1 si la lógica precedente es 1, o a 0 si la lógica precedente es 0. Puede ser forzado. Al estar dentro del bloque de salto de una instrucción NSKR o NSKD, mantienen el valor.

53

4 Interpretación MS-DOS Loader Codificación Se codifica con tres Bytes: 1 Byte Æ Opcode (h85). 2 Bytes Æ Número de la dirección codificada en hexadecimal (Especial), consultar apartado anterior. Al ser forzado: Forzado a ON Æ Opcode (hB5). Forzado a OFF

Æ Opcode (h95).

4.2.3.6. Instrucciones de temporizadores y contadores Los temporizadores y contadores se componen principalmente de un acumulador y un preset. Ambos elementos equivalen a una dirección de la zona de registros, estando siempre el preset en la dirección anterior a la del acumulador. En el caso de temporizadores, el valor del acumulador es incrementado desde cero con una frecuencia seleccionable entre tres bases de tiempo de 0,01, 0,1 y 1 segundo, hasta que iguala el valor del preset, momento en el que se produce una transición en la dirección de salida de acuerdo al tipo de temporizador seleccionado. En el caso de contadores, el valor del acumulador es incrementado o decrementado de acuerdo a los flancos de dos entradas, hasta que iguala el valor del preset, momento en el que se produce una transición en la dirección de salida. Por usar direcciones de la memoria de registros, el rango de contaje es de -32768 a +32767 para registros de 16 bits, o de -65535 a +65535 para registros de 16+1 bits. Temporizador con retardo a ON – Base 1 segundo 1001 2001 ───] [────────────────────────────────────────────────────────────────────(TON)─

5000 PRS 6001 5001 ACC 0 0500008000100008030000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000004C03 C803E9 4A1389 C407D1 5201 8813 00 1771 5300

Los temporizadores trabajan conjuntamente con salidas no retentivas (código hC4), que se modifican en el caso de un temporizador con retardo a ON de acuerdo al siguiente cronograma: TIN ACC

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.