Traducido al Castellano a partir del documento SASM.DOC original en Ingls
del paquete: HP Tools de Hewlett Packard Co.



                                 CONTENIDO


        1.  Para Empezar......................................    1

        2.  Examen de la CPU Saturno..........................    4
            2.1   Registros...................................    4
            2.2   Registros de Trabajo y Auxiliares...........    4
            2.3   Seleccin de Campo..........................    5
            2.4   Registros Punteros..........................    5
            2.5   Registros de Entrada, Salida y Contador
                  de Programa.................................    5
            2.6   Bits de Acarreo, Estado del Programa y    
                  Estado del Hardware.........................    6
            2.7   Modo Aritmtico.............................    7
            2.8   Cargar Datos Desde Memoria..................    7
            2.9   Almacenar Datos en Memoria..................    8
            2.10  Sistema de Interrupciones...................    8

        3.  Ensamblado Condicional............................    9

        4.  Usar Macros.......................................   10
            4.1   Definir un Macro............................   10
            4.2   Llamar un Macro.............................   11
            4.3   Reglas de Asignacin de Parmetros..........   12
            4.4   Ejemplo de Macro............................   12

        5.  Declaraciones de Acceso a Fichero.................   13
            5.1   Declaracin RDSYMB .........................   13
            5.2   Declaracin INCLUDE.........................   13
            5.3   Declaracin CHARMAP.........................   13
                  5.3.1    Formato del Fichero Charmap........   14

        6.  Formato y Mnemnicos del Ensamblador Saturno......   15
            6.1   Sintaxis de las Instrucciones...............   15
                  6.1.1    Comentarios........................   15
                  6.1.2    Smbolos y Etiquetas...............   15
                  6.1.3    Expresiones........................   16
            6.2   Explicacin de los Smbolos.................   17
            6.3   Tabla de Seleccin de Campos................   19
            6.4   Examen del Conjunto de Instrucciones........   20
            6.5   Instrucciones de Salto......................   20
            6.6   Instrucciones de Llamada a Subrutinas.......   21
            6.7   Instrucciones de Retorno de Subrutinas......   21
            6.8   Instrucciones de Test.......................   22
                  6.8.1    Tests de Registros.................   22
                  6.8.2    Tests de Punteros..................   22
                  6.8.3    Tests de Bits del Estado del
                           Programa...........................   22
                  6.8.4    Tests de Bits del Estado del
                           Hardware...........................   23
                  6.8.5    Tests de Bits de Registros.........   23
            6.9   Instrucciones Puntero.......................   23
            6.10  Instrucciones de Manipulacin de Bits.......   23
            6.11  Instrucciones de Estado.....................   24
                  6.11.1   Estado del Programa................   24
                  6.11.2   Estado del Hardware................   24
                  6.11.3   Instrucciones del Estado del
                           Sistema............................   24





                                  - i -




                  6.11.4   Instrucciones de Exploracin
                           del Teclado........................   25
                  6.11.5   Instrucciones de los Registros
                           Auxiliares.........................   25
                  6.11.6   Instrucciones de los Punteros 
                           de Datos...........................   25
                  6.11.7   Instrucciones de Transferencia
                           de Datos...........................   25
                  6.11.8   Instrucciones de Carga de 
                           Constantes.........................   26
                  6.11.9   Instrucciones de Desplazamiento....   26
                  6.11.10  Instrucciones Aritmticas..........   27
                  6.11.11  Instrucciones de Operaciones 
                           Lgicas............................   27
                  6.11.12  Instrucciones de No-Operacin......   27
            6.12  Instrucciones Pseudo-Cdigo.................   27
                  6.12.1   Asignacin de Espacio para Datos...   28
            6.13  Ensamblaje Condicional......................   29
            6.14  Control de los Listados.....................   30
            6.15  Definicin de Smbolos......................   30
            6.16  Definicin de Macros........................   31
            6.17  Modo Ensamblador............................   31
            6.18  Acceso a Ficheros...........................   31
            6.19  Modificacin de las Banderas del Ensamblador   31
            6.20  Modificacin del Estado del Acarreo.........   32
            6.21  Miscelnea..................................   32

        7.  Consejos de Ensamblado del Saturno................   33
            7.1   Tres Advertencias...........................   33
                  7.1.1    Niveles de Retorno.................   33
                  7.1.2    Modo...............................   33
                  7.1.3    Recuerda P=0!......................   33
            7.2   Consejos para Compactar el Cdigo...........   34
                  7.2.1    Operaciones con el Campo A.........   34
                  7.2.2    Cargar Constantes..................   34
                  7.2.3    Las 3 Bifurcaciones................   34
                  7.2.4    GOSUB/RTN..........................   35
                  7.2.5    Usas Expresiones...................   35
                  7.2.6    Cuenta hacia Adelante..............   35
                  7.2.7    Antes de Lanzarte..................   36
            7.3   Algunas Operaciones Comunes.................   37
                  7.3.1    Un nibble de aqu para all........   37
                  7.3.2    Comprobar un Bit...................   37
                  7.3.3    Salvar/Testear un Estado...........   39
                  7.3.4    Acceso a Memoria...................   39
            7.4   Otros Consejos..............................   40
                  7.4.1    Etiquetas..........................   40
                  7.4.2    Bits de Estado.....................   40
                  7.4.3    Puntos de Entrada..................   40
                  7.4.4    Salidas............................   41
            7.5   Documentacin...............................   41
                  7.5.1    Comentarios sobre los Comentarios..   41
                  7.5.2    Una Cabecera de Lenguaje
                           Ensamblador Estndar...............   43
                  7.5.3    Algunos Ejemplos de Cabeceras......   45

        8.  Diccionario de Mnemnicos.........................   48

        9.  Listado Alfabtico de Mnemnicos..................  126

       10.  Mensajes de Error.................................  137
            10.1  Mensajes de Error No Fatales................  137
            10.2  Mensajes de Error Fatales...................  148



                                  - ii -




            10.3  Mensajes de la Lnea de Comandos............  150

       11.  Formato del Fichero de Objeto de Saturno..........  152
            11.1  Registro Cabecera de Objeto del Saturno.....  152
            11.2  Registro de Objeto de Cdigo del Saturno....  152
            11.3  Bloque de Smbolos de Objeto del Saturno....  152
            11.4  Tipos de Referencias........................  154






















































                                 - iii -





N.T.> significa NOTA DEL TRADUCTOR


      1. Para Empezar


      SASM.EXE es un ensamblador para la familia de procesadores Saturno.
      Como nota histrica, el procesador Saturno apareci por primera vez en
      la HP 71B y desde entonces se ha usado de diferentes maneras en otros
      modelos de calculadoras HP, incluyendo la HP 28 y la HP 48.

      El fichero SASM.EXE se debera instalar en un directorio tal como BIN,
      incluyndolo en la variable PATH del DOS. Se debe crear una variable de
      entorno SASM_LIB de modo que apunte al fichero SASM.OPC. Por ejemplo,
      si el fichero con los opcdigos (cdigos de operacin, o simplemente
      "cdigos") est en \LIB, se debera aadir el comando
      "SET SASM_LIB=C:\LIB" al fichero autoexec.bat.

      A lo largo de todo el entorno de desarrollo Saturno hay una convencin
      de nombres de ficheros. Sasm acepta ficheros de entrada con una
      extensin ".a" y produce ficheros de listado con una extensin ".l" y
      ficheros de cdigo con una extensin ".o".

      Hay disponibles varias opciones:

        Opcin     Descripcin
       ---------  ----------------------------------------------------------
       A          Escribe el listado en la salida estndar
       a lstfile  Escribe el listado en "lstfile"
       c columna  Los campos que empiezan despus de la "columna" se
                  consideran comentarios
       D sym=val  Define el smbolo "sym" con el valor "val" (por defecto=1)
       d dbgfile  Escribe la informacin de la depuracin en "dbgfile"
       E          Escribe los mensajes de error al estilo de C en las salida
                  estndar de error.
       e          Escribe los mensajes de error a la salida estndar de error
       f flglista Enciende las banderas indicadas por la lista de banderas
                  "flglista" (separadas con comas)
       H          Escribe el fichero objeto como cdigo puro y duro (sin
                  ninguna cabecera ni smbolos)
       h          Escribe el fichero objeto como caracteres hexadecimales
                  (sin cabecera ni smbolos)
       N          Suprime los listados por completo
       o objfile  Escribe el fichero objeto en "objfile"
       P pnivel   Pone el nivel del procesador a "pnivel" (0, 1, 2 o 3)
       p pagelen  Hace un salto de pgina cada "pagelen" lneas
       t opcfile  Lee los cdigos (opcodes) desde el fichero "opcfile"
       w width    Pone el ancho de pgina a "width" columnas (80 por defecto)





















                                  Pgina 1






      He aqu un ejemplo para ilustrar las codificacin del Saturno y mostrar
      el aspecto de un tpico fichero fuente del Saturno. El nombre del
      fichero fuente es "example.a". Las instrucciones del Saturno se
      explican ms adelante en este manual.

               TITLE   Ej. Fichero Ensamblador Saturno
       *
       * Punto de entrada externo: =ENTRY1
       *
       * Esta rutina desplaza el registro C seis dgitos a la derecha
       * sin alterar el valor del bit pegajoso (sticky bit)
       *
       =ENTRY1 P=      5
               C=0     WP
       ENTRY2  CSR     W
               P=P-1
               GONC    ENTRY2
               P=      0
               RTNCC
               END

      Ensamblando este fichero con el comando "sasm example.a" se genera el
      fichero objeto del Saturno (example.o) y un fichero de listados
      (example.l) que se muestra en la siguiente pgina.








































                                  Pgina 2




Saturn Assembler  Ej. Fichero Ensamblador Saturno Tue Jul 21 16:35:38 1987
Ver. 1.40, 7/21/87                              example.a      Pgina    1

          1            TITLE   Ej. Fichero Ensamblador Saturno
          2             *
          3             * Punto de entrada externo: =ENTRY1
          4             *
          5             * Esta rutina desplaza el registro C seis dgitos a
          6             * la derecha sin alterar el valor del bit pegajoso
          7             *
          8 00000 25    =ENTRY1 P=      5
          9 00002 A92           C=0     WP
         10 00005 BF6   ENTRY2  CSR     W
         11 00008 0D            P=P-1
         12 0000A 5AF           GONC    ENTRY2
         13 0000D 20            P=      0
         14 0000F 03            RTNCC
         15 00011               END

       [salto de pgina]

Saturn Assembler  Ej. Fichero Ensamblador Saturno   Tue Jul 21 16:35:38 1987
Ver. 1.40, 7/21/87  Tabla de Smbolos           example.a      Pgina    2

       =ENTRY1        Rel       0 #00000000 -     8
        ENTRY2        Rel       5 #00000005 -    10    12

       [salto de pgina]

Saturn Assembler  Ej. Fichero Ensamblador Saturno  Tue Jul 21 16:35:38 1987
Ver. 1.40, 7/21/87  Estadsticas                  example.a      Pgina    3

       Parmetros de entrada

         El nombre del fichero fuente es example.a

         El nombre del fichero de listados es example.l

         El nombre del fichero objeto es example.o

         Banderas activadas en la lnea de comandos
           Ninguno

       Errores

         Ninguno




















                                  Pgina 3




      2. Examen de la CPU Saturno


      La CPU Saturno es una CPU propietaria optimizada para las matemticas
      BCD de alta precisin y bajo consumo de energa. El ancho de los datos
      es de 4 bits. La memoria se accede en cantidades de 4 bits llamadas
      "nibbles" o "nibs". Las direcciones son de 20 bits, lo que da un
      espacio fsico de direcciones de 512 Kbytes.


      2.1   Registros


      Hay cuatro registros de trabajo de 64 bits, cinco registros auxiliares
      de 64 bits, dos registros punteros de datos de 20 bits, un registro
      puntero de 4 bits, un contador de programa (PC) de 20 bits, un registro
      de entrada (IN) de 16 bits y un registro de salida (OUT) de 12 bits.
      Las direcciones de retorno se almacenan en una pila de retornos
      hardware de ocho niveles que admite direcciones de 20 bits. Adems, hay
      4 bits de Estado del Hardware, un bit de Acarreo (Carry) y 16 bits de
      Estado del Programa. Los 12 bits inferiores del Estado del Programa se
      pueden manipular como un registro de 12 bits.


      2.2   Registros de Trabajo y Auxiliares


      Los registros de trabajo A, B, C y D se usan para la manipulacin de
      datos. Los registros de trabajo A y C tambin se usan para acceder a la
      memoria. Los registros auxiliares R0, R1, R2, R3 y R4 se usan para
      mantener temporalmente el contenido de los registros de trabajo.



































                                  Pgina 4






      2.3   Seleccin de Campos


      Se puede acceder a subcampos de los registros de trabajo A, B, C y D
      mediante el uso de la seleccin de campo. Las selecciones de campo
      posibles van desde el registro entero a cualquier nibble del registro.
      Ciertos subcampos estn diseados para usarse en clculos BCD. Otros se
      usan para acceder a datos o en la manipulacin de datos en general.

                    Descripcin de la Seleccin de Campo

             P El nibble indicado por el registro P
            WP Los nibbles desde el nibble P hasta el nibble 0 inclusive
            XS El nibble 2; - Signo del exponente
             X Los nibbles 2-0; - Exponente, incluido el signo del mismo
             S El nibble 15; - Signo de la mantisa
             M Los nibbles 14-3; - Mantisa
             B Los nibbles 1-0; - Campo byte
             A Los nibbles 4-0; - Campo direccin (20 bits)
             W Los nibbles 15-0; - Palabra (el registro de 64 bits entero)


                           Nibbles del Registro
            +-----------------------------------------------+
            |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
            +-----------------------------------------------+
            | S|                                   |XS|  B  |
               |                 <- M ->           | <-X->  |
                                             |   <- A ->    |
            |                    <- W ->                    |


      2.4   Registros Puntero


      Los registros Punteros de Datos de 20 bits D0 y D1 se usan para
      contener direcciones durante el acceso a memoria y se usan
      conjuntamente con los registros de trabajo.

      El registro Puntero de 4 bits P se usa en las operaciones de Seleccin
      de Campo con los registros de trabajo.


      2.5   Registros de Entrada, Salida y Contador de Programa


      Los registros de entrada/salida se usan para comunicarse con el bus del
      sistema. El contador de programa apunta a la siguiente instruccin a
      ejecutar por la CPU. El registro de entrada IN es de 16 bits, el
      registro de salida OUT es de 12 bits y el registro PC es de 20 bits.














                                  Pgina 5






      2.6   Los Bits de Acarreo, de Estado del Programa y de Estado del
            Hardware


      El bit de Acarreo se ajusta cuando se lleva a cabo un clculo o un test
      lgico. Durante un clculo, tal como incrementar o decrementar un
      registro, se enciende si el clculo produce un desbordamiento o un
      acarreo; si no, se apaga. Durante un test lgico, tal como comparar dos
      registros para ver si son iguales, se enciende si el test es cierto; si
      no, se apaga.

      Los 4 bits superiores del Estado del Programa se usan tpicamente para
      indicar el estado del sistema operativo. Los restantes 12 bits del
      Estado del Programa estn generalmente disponibles para el software de
      las aplicaciones y se pueden manipular colectivamente como el registro
      ST.

      Los cuatro bits del Estado del Hardware los encienden (pero no los
      apagan) ciertos sucesos relacionados con el hardware y, por tanto, se
      deben apagar de antemano a fin de detectar una ocurrencia en
      particular. Se pueden acceder individualmente por su nombre. El bit de
      Mdulo Extrado (MP) se enciende cada vez que se pone a bajo la entrada
      *NINTX de la CPU (independientemente de si se ejecuta realmente una
      interrupcin). El Bit Pegajoso (SB) se enciende cuando un bit distinto
      de cero de desplaza fuera del extremo derecho de un registro de trabajo
      como resultado de una instruccin de desplazamiento. El bit de
      Solicitud de Servicio (SR) se enciende como resultado de una
      instruccin SREQ? si hay cualquier solicitud de servicio del hardware
      pendiente. El bit de Falta Mdulo Externo se enciende por la ejecucin
      del cdigo "00" (instruccin RNTSXM).

                       Estado del Hardware:  4 bits

                 Bit  Smbolo  Nombre
                 ---  -------  ------------------------------------
                  3     MP     Mdulo Extrado (*NINTX puesto bajo)
                  2     SR     Solicitud de Servicio
                  1     SB     Bit Pegajoso
                  0     XM     Falta Mdulo Externo

























                                  Pgina 6






      2.7   Mdulo Aritmtico


      El modo aritmtico se pone con las instrucciones SETHEX y SETDEC.
      Cuando se ejecuta SETHEX, se pone el modo aritmtico en el que toda la
      aritmtica con los registros se lleva a cabo en modo hexadecimal.
      Cuando se ejecuta SETDEC, se pone el modo aritmtico en el que la
      mayora de las aritmtica con los registros se lleva a cabo en modo
      decimal. Las siguientes instrucciones *siempre* se realizan en modo
      hexadecimal, independientemente del modo aritmtico:


                   P=P+1
                   P=P-1
                   C+P+1
                   D0=D0+     n   D0=D0-     n
                   D1=D1+     n   D1=D1-     n
                   A=A+CON fs,n   A=A-CON fs,n
                   B=B+CON fs,n   B=B-CON fs,n
                   C=C+CON fs,n   C=C-CON fs,n
                   D=D+CON fs,n   D=D-CON fs,n

      El modo aritmtico no se puede "leer", pero se puede inferir haciendo
      la operacin apropiada, seguida de un test. Por ejemplo:

               LCHEX   9
               C=C+1   P

      enciende el acarreo si y solo si el modo aritmtico es decimal.


      2.8   Cargar Datos Desde Memoria

      Cuando se leen datos desde memoria a un registro, la CPU coloca el
      nibble con la direccin ms baja en el nibble menos significativo del
      registro.

      Por ejemplo, si los datos que se muestran ms abajo en la memoria se
      leen en el registro C usando la instruccin C=DAT1 4, los datos se
      dispondrn en el registro como se muestra.

              Posicin 
                 de
               Memoria  Valor              Registro C
              --------  -----      +------------------------+
                1000      6        |  | ... | 9 | 8 | 7 | 6 |
                1001      7        +------------------------+
                1002      8         15  ...   3   2   1   0
                1003      9

      Este principio tambin se aplica a la carga de constantes en un
      registro de la CPU tales como C, D0 o D1, ya que la CPU debe leer la
      constante desde el cdigo de la instruccin en memoria. Por ejemplo, la
      instruccin LCHEX 9876 genera el cdigo 336789 y el registro C se carga
      como se muestra arriba (suponiendo P=0)









                                  Pgina 7






      2.9   Almacenar Datos en Memoria


      Cuando se escriben datos en memoria desde un registro, la CPU coloca el
      nibble menos significativo del registro en el nibble ms bajo de la
      posicin de memoria direccionada. Por ejemplo, si los datos mostrados
      arriba en el registro C se escriben en memoria usando la instruccin
      DAT1=C 4, los datos se escribirn en memoria como se mostr arriba.


      2.10  Sistema de Interrupciones


      Todas las interrupciones de la CPU Saturno provocan un salto de
      subrutina a la direccin #0000F. La determinacin de la causa de la
      interrupcin corresponde a la rutina de servicio de interrupciones que
      hay en esa direccin.















































                                  Pgina 8






      3. Ensamblado Condicional

      El ensamblador soporta tests de ensamblaje condicional para permitir
      generar diferente cdigo basndose en varias condiciones. Las
      condiciones que se pueden comprobar incluyen banderas de ensamblado
      encendidas en la lnea de comandos o modificadas con las instrucciones
      SETFLAG o CLRFLAG, el valor de una expresin en el momento del
      ensamblado comparada con cero, la presencia o ausencia de la definicin
      de un smbolo, el estado (garantizado) del acarreo (por ejemplo,
      despus de GOYES el acarreo est apagado), la pasada actual del
      ensamblador (til para los mensajes) y la presencia de un cdigo o de
      una definicin macro.

      La estructura de un bloque de ensamblaje condicional es:

                Etiqueta   IF
                              <<cdigo si la condicin es cierta>>
                Etiqueta   ELSE
                              <<cdigo si la condicin es falsa>>
                Etiqueta   ENDIF

      Las secciones etiqueta y ELSE son opcionales.

      Los bloques de ensamblado condicional se pueden anidar hasta un mximo
      de 20 niveles si slo hay presente una nica etiqueta en cada
      anidamiento. Si se omite la etiqueta o no es nica, puede que el cdigo
      ensamblado no se anide como se espera en el bloque falso. Por ejemplo:

               1               IF      0
               2               IF      1
               3       * Banderas 0 y 1 estn encendidas
               4               ELSE
               5       * Bandera 0 est encendida, la 1 est apagada
               6               ENDIF
               7               ELSE
               8               IF      1
               9       * Bandera 0 est apagada, la 1 est encendida
              10               ELSE
              11       * Bandera 0 y 1 estn apagadas
              12               ENDIF
              13               ENDIF

      Si la bandera 0 est apagada, el ELSE de la lnea 4 aparece como el
      ELSE correspondiente al IF 0. El ELSE en la lnea 7 y el ENDIF en la
      lnea 13 se sealan como errores (ELSE sin su correspondiente IF, ENDIF
      sin su correspondiente IF). Las lneas 5 y 11 se ensamblas ambas. Si
      las declaraciones IF anidadas tuvieran etiquetas nicas, funcionaran
      como se espera que lo hagan.

      Para ver una lista de los cdigos de ensamblado condicional, mirar
      "Ensamblado Condicional" en la seccin "Instrucciones Pseudo-Cdigo"
      del apndice "Mnemnicos del Ensamblador del Saturno".












                                  Pgina 9





      4. Usar Macros

      Este captulo explica como crear y usar macros en tus ficheros fuente.
      Las directivas de macros son MACRO, EXITM y ENDM.

      Un macro es un bloque de declaraciones fuentes con un nombre. Cuando se
      usa el nombre de un macro como una declaracin, se reemplaza
      automticamente por el bloque fuente de declaraciones que representa.

      Las definiciones macro no se pueden anidar; la declaracin MACRO es
      ilegal dentro de una llamada a un macro.

      Por defecto no se listan las lneas macro; para permitir que se liste
      la expansin del macro, usa la declaracin LISTM o SETLIST MACRO.


      4.1   Definir un Macro

      La definicin de un macro consiste en una declaracin MACRO, seguida de
      las declaraciones fuente que constituyen el macro, seguido de la
      declaracin ENDM. La etiqueta de la declaracin ENDM, si la hay, debe
      coincidir con el nombre del macro (la etiqueta en la declaracin
      MACRO). El texto que va a continuacin de la declaracin MACRO en la
      misma lnea, se ignora (solo comentario). Se recomienda que el
      comentario indique los parmetros que espera el macro cuando se le
      llama. Se pueden pasar hasta nueve parmetros al macro cuando se le
      llama. Las declaraciones entre la declaracin MACRO y la declaracin
      ENDM no se ensamblan hasta que se llama al macro. Cualquier
      pseudo-cdigo dentro de la definicin de un macro se ejecuta cuando se
      llama al macro, no cuando se define. Un signo de admiracin (!) en la
      primera columna se elimina de la lnea cuando se llama al macro. El
      resto de la lnea se incluye en la expansin.

      Normalmente no se incluyen en la expansin del macro ni las lneas en
      blanco ni las lneas de comentarios. Para incluir una lnea en blanco o
      una lnea de comentario en la expansin de un macro, aadir un signo de
      admiracin (!) en la primera columna.

      El signo dolar ($) se usa en los macros como un carcter de
      substitucin de texto. El carcter que sigue al signo dolar indica el
      substituto:

       Secuencia  Texto de Substitucin
       ---------  ----------------------------------------------------
          $$      $ (un signo dolar)
          $0      El nmero de lnea en el que se llam al macro.
          $<      El Nombre del fichero fuente actual
          $n      Referencia al parmetro (1_n_9)
         $(n)     Referencia al parmetro indirecta (1_n_9)
         $(nf)    Referencia al parmetro indirecta formateada (1_n_9)

      Las referencias al parmetro se reemplazan con el texto del parmetro
      correspondiente.












                                 Pgina 10






      Las referencias indirectas al parmetro se reemplazan con el valor del
      parmetro correspondiente cuando se interpreta como una expresin. Las
      referencias al parmetro indirectas formateadas incluyen una cadena de
      formato f que va a continuacin del nmero de parmetro. La cadena de
      formato tiene la forma [ : ] [ longitud ] [ carcter de formato ]. La
      longitud indica el nmero mnimo de caracteres a usar. El valor se
      rellena con ceros si necesita menos dgitos que la longitud dada. La
      longitud por defecto es uno. El carcter de formato controla la base y
      el modo maysculas/minsculas del valor. La siguiente tabla muestra los
      valores de carcter de formato vlidos:

            Carcter    Descripcin       Caracteres Dgitos
            --------  ----------------  ---------------------
              H,X      Hexadecimal       0123456789ABCDEF
              h,x      Hexadecimal       0123456789abcdef
              D,d      Decimal con signo 0123456789  (por defecto)
              U,u      Decimal sin signo 0123456789
              O,o      Octal             01234567


      La mxima profundidad de anidamientos combinados de macros y ficheros
      "include" (incluir) es de 20 niveles.


      4.2   Llamar un Macro


      Para llamar un macro, especifica el nombre del macro como una
      instruccin. Se incluir en este punto del fichero fuente el cuerpo del
      macro. Los parmetros que se pasarn al macro van a continuacin del
      nombre del macro en la misma lnea. Se pueden pasar hasta nueve
      parmetros a un macro.
































                                 Pgina 11






      4.3   Reglas de Asignacin de Parmetros.


      El texto parmetro en la lnea que llama al macro se asigna a los
      parmetros del siguiente modo:

         1. Se saltan todos los espacios en blanco y tabuladores iniciales y
            se pone a uno el nmero actual de parmetro.

         2. Si el primer carcter es un <, se asigna todo el texto hasta el
            carcter > al nmero de parmetro actual. Si el primer carcter
            no es un < y hay una coma (,) en el texto restante, todo el texto
            hasta la coma se asigna al nmero de parmetro actual.

            Si el primer carcter es un <, pero no hay ningn > en el resto
            del texto, se considera que el < es un carcter normal de texto.

         3. Si el primer carcter no es un < y no hay ninguna coma en el
            resto del texto, se asigna todo el texto hasta el primer espacio
            en blanco o tabulador al nmero actual de parmetro.

         4. Se incrementa el nmero de parmetro. Si el nmero de parmetro
            es menor que nueve, se vuelve al paso 2.

      NOTA: El nmero de columna de comentarios se ignora en las lneas que
            llaman a un macro; solo se ignoran los caracteres que siguen al
            primer espacio en blanco o tabulador que haya despus del ltimo
            parmetro.


      4.4   Ejemplo de Macro

      El ejemplo (simple) de abajo es un macro que incrementa el registro A
      en la cantidad pasada como parmetro.


                   ADDTOA  MACRO
                           LC(5)   $1
                           A=A+C   A
                   ADDTOA  ENDM

                           ...
                           DAT0=A  M
                           ADDTOA  312
                           D0=D0+  12



















                                 Pgina 12


      5. Declaraciones de Acceso a Ficheros

      Hay tres declaraciones que acceden a datos en otros ficheros. RDSYMB
      lee los smbolos de un fichero objeto del Saturno, INCLUDE lee
      declaraciones fuentes del Saturno desde un fichero y CHARMAP simplifica
      el problema que se da a menudo con las calculadoras, de tener que
      trabajar con un conjunto de caracteres no-ASCII
      
      El nombre del fichero de cada una de estas declaraciones se puede
      especificar de diferentes maneras. Se puede especificar el nombre por
      s mismo o entre comillas ("nombre_fichero"), apstrofes
      ('nombre_fichero') o corchetes (<nombre_fichero>). Si el nombre del
      fichero contiene espacios o tabuladores, se debe delimitar por unos de
      estos mtodos.

      Cada declaracin usa una variable de entorno para saber donde buscar el
      fichero (por defecto se busca en el directorio actual y en un
      directorio del sistema). Ver el apndice "Variables de Entorno" para
      ms informacin sobre los nombres de las variables de entornos y los
      casos por defecto.


      5.1   Declaracin RDSYMB


      La declaracin RDSYMB lee la tabla de smbolos de un fichero objeto del
      Saturno. Todos los smbolos externos que se definen en el fichero
      objeto y que no son relocalizables estn disponibles para ser usados en
      el fichero que se est ensamblando. Los smbolos definidos por una
      declaracin RDSYMB no se incluyen en el listado de la tabla de smbolos
      a menos que se usen realmente en el ensamblado.


      5.2   Declaracin INCLUDE


      La declaracin INCLUDE le dice al ensamblador que lea las declaraciones
      fuente del fichero especificado. El ensamblador lee del fichero hasta
      que se procesa una declaracin END o se llega al final del fichero.

      Las lneas ledas de ficheros "incluidos" normalmente no se listan. Por
      defecto, solo se listan las declaraciones pseudo-cdigo y las lneas
      que contienen errores. Para permitir que se listen completamente los
      ficheros incluidos, usar la declaracin SETLIST INCLUDE o la
      declaracin LISTM. Las lneas incluidas tienen, en el listado, un -
      despus del nmero de lnea. El nmero de lnea mostrado en el listado
      es la lnea dentro del fichero incluido.


      5.2   Declaracin CHARMAP


      Las declaraciones LAASC, LCASC y NIBASC son de utilidad limitada cuando
      el conjunto de caracteres usado en un producto no es ASCII. La
      declaracin CHARMAP permite que los caracteres ASCII especificados en
      esas declaraciones se conviertan automticamente a un conjunto de
      caracteres diferente. Por ejemplo, si un producto concreto solo es
      capaz de mostrar letras y dgitos, el mapeado del conjunto de
      caracteres podra ser A ... Z = #00 ... #19, a ... z = #1A ... #35, y
      0 ... 9 = #36 ... #40. Usar CHARMAP con un fichero que contiene todos
      estos emparejamientos permite al ensamblador convertir automticamente
      todas las referencias a caracteres ASCII al correspondiente carcter
      del conjunto de caracteres. Esto permite que los ficheros fuente sean
      independientes del mapa de caracteres actual, incluyendo una
      declaracin CHARMAP al principio del fichero



                                 Pgina 13







      El mapeado se hace efectivo cuando se ejecuta la declaracin CHARMAP;
      no afecta a los caracteres ASCII anteriores a la declaracin CHARMAP.
      El efecto de mltiples sentencias CHARMAP es acumulativo.


      5.3.1 Formato_de_fichero_Charmap El fichero indicado por la declaracin
            CHARMAP contiene una lista de parejas, a una pareja por lnea. El
            carcter de la primera posicin es el carcter ASCII que se usa
            en el fichero fuente y el carcter de la segunda posicin es el
            valor que se usa en el cdigo generado. Cada carcter puede ser o
            bien un carcter ASCII o una secuencia de escape similar a
            aquellas que se encuentran en el lenguaje C. La siguiente tabla
            resume las secuencias de escape reconocidas en un fichero
            CHARMAP:

       Secuencia   Cdigo ASCII     Descripcin
       -----------  -----------  ------------------------------------
       carct ASCII  el mismo    El carcter ASCII especificado
          \a            7        BEL (carcter alerta)
          \b            8        BS (espacio atrs)
          \t            9        HT (tabulador)
          \n           10        LF (salto de lnea)
          \v           11        VT (tabulador vertical)
          \f           12        FF (salto de pgina)
          \r           13        CR (retorno de carro)
          \\           92        Contrabarra
          \xhh         Hex hh    Carcter con el valor hex hh
                                 (\xh vlido si no es ambiguo)
          \ddd      Octal ddd    Carcter con el valor octal ddd
                                 (\dd o \d vlidos si no son ambiguos)

































                                 Pgina 14






      6. Mnemnicos y Formato del Ensamblador Saturno


      Este captulo describe el conjunto de instrucciones del ensamblador del
      Saturno. Hay tres variaciones de la CPU Saturno que se usan en varios
      productos. La 1LF2 se us en las primeras versiones de la HP-71B. La
      1LK7 es una variacin de la 1LF2 utilizada en las versiones posteriores
      de HP-71B, HP-18C y HP-28C. La 1LR2 es un Circuito Integrado que
      incluye CPU/ROM/RAM/Controlador_de_ Pantalla. Cada nueva versin de la
      CPU Saturno tiene instrucciones nuevas aadidas al conjunto de
      instrucciones del Saturno. Las instrucciones disponibles en todas las
      CPU Saturno se dice que son instrucciones de "nivel 0". Las
      instrucciones disponibles en 1LK7 y 1LR2 pero no en 1LF2 se dice que
      son instrucciones de "nivel 1". Las instrucciones solo disponibles en
      el 1LR2 se dice que son instrucciones de "nivel 2". En esta seccin,
      las instrucciones de "nivel 1" se marcan con un asterisco (*), las de
      "nivel 2" se marcan con dos asteriscos (**). Las instrucciones sin
      ninguna marca son de "nivel 0".


      6.1   Sintaxis de la Instruccin


      El ensamblador es de "formato libre" y se requiere un espacio o un
      tabulador para delimitar los diferentes campos. Una etiqueta, si est
      presente, debe empezar en la columna uno o dos. El formato siguiente es
      una alineacin de columnas recomendada.

            1         9       17              33       ...   80
            -------------------------------------------------
            Etiqueta  Cdigo  Modificador      Comentarios..
            -------------------------------------------------

      6.1.1 Comentarios

      Una lnea de comentario empieza con un asterisco (*) en la columna uno
      y puede darse en cualquier sitio del fichero. Una comentario dentro de
      una lnea puede empezar con un carcter distinto de espacio y debe ir a
      continuacin de un campo modificador de una instruccin (o despus del
      cdigo si no necesita modificador).


      6.1.2    Smbolos_y_Etiquetas

      Un smbolo es un nombre para un valor numrico. Un smbolo adquiere su
      valor simplemente apareciendo en el campo etiqueta de ciertas
      declaraciones. La palabra "smbolo" es un trmino general para una
      etiqueta y los dos se usan indistintamente.

      Los smbolos consisten en uno a doce caracteres alfanumricos con las
      siguientes restricciones: los caracteres coma (,), espacio ( ) y
      parntesis derecho estn prohibidos y se deber tener especial cuidado
      si el primer carcter es un signo igual (=), dos puntos (:), almohada
      (#), parntesis izquierdo o un dgito (0 a 9). 










                                 Pgina 15






      Un smbolo puede ir inmediatamente precedido por un signo (=) que lo
      declara smbolo externo. Un smbolo externo definido en un mdulo se
      puede referenciar como un smbolo externo por otro mdulo. Tales
      referencias se resuelven cuando se "linkan" (unen) los mdulos. Ciertos
      ensambladores Saturno, como el FORTH/Ensamblador en ROM de la HP-71, no
      tienen asociado ningn linkador y por tanto, no soportan los smbolos
      externos. En este caso, se ignoran los signos igual iniciales.

      Un smbolo puede ir inmediatamente precedido por dos puntos (:) lo que
      simplemente declara lo que sigue como un smbolo (local). Con cualquier
      smbolo cuyo primer carcter sea de la categora de especial cuidado
      (=, :, #, (, 0-9) se debe usar o un signo igual o dos puntos.

      Cuando se usa un smbolo como parte de una expresin, se requiere que
      vaya entre parntesis, para delimitarlo. Esto es, AD1-10 es un smbolo
      pero (AD1)-10 es una expresin calculada.


      6.1.3 Expresiones

      Donde quiera que puede aparecer una expresin en el campo modificador
      de una instruccin, se representa por el smbolo "expr" en las
      descripciones de instrucciones que hay ms adelante. Las expresiones se
      evalan usando matemticas de enteros de 32 bits con signo. Si un valor
      no cabe en 32 bits, se pierden los bits ms significativos (solo se
      salvan los 32 bits ms bajos).

                       Componentes de las Expresiones

           Componente            Ejemplos
           --------------------  -----------------------------------
           constante decimal     23434

           constante hexadecimal #1FF0  (menor que #100000000)

           constante ASCII       \AB\, 'AB' (4 o menos caracteres)

           operador              +  suma
                                 -  resta
                                    sinnimo de * 256 +
                                 *  multiplicacin
                                 /  divisin entera
                                 %  mdulo (resto)
                                 ^  exponenciacin entera
                                 &  Y lgico bit a bit
                                 !  O lgico bit a bit

            *                    Contador del programa ensamblador actual

           symbol                Smbolo definido dentro de este fichero

           (expression)          Expresin entre parntesis












                                 Pgina 16






      Hay dos clases de instrucciones que precisan un campo modificador que
      contiene una constante de un tipo especfico que no se ajusta a las
      reglas anteriores. Son:

      1. Instrucciones con una cadena constante que puede exceder los 4
         caracteres:

           LAASC   \ASCII\       ( 8 caracteres mximo) **
           LCASC   \ASCII\       ( 8 caracteres mximo)
           NIBASC  \ASCII...\    (40 caracteres mximo)
           STRING  \ASCII...\    (40 caracteres mximo)

      2. Instrucciones que precisan una constante de cadena hexadecimal:

           LAHEX   0123456789ABCDEF    (16 dgitos mximo) **
           LCHEX   048C3               (16 dgitos mximo)
           NIBHEX  0123456789ABCDEF    (80 dgitos mximo)


      6.2   Explicacin de los Smbolos


      En las descripciones de los mnemnicos del ensamblador Saturno, se
      definen estos smbolos como se indican a continuacin:


      a     El nibble hex usado para codificar la seleccin de campo en el
            cdigo ensamblado de una instruccin. Ver la Tabla de Seleccin
            de Campos en la seccin siguiente para los detalles.

      b     El nibble hex usado para codificar la seleccin de campo en el
            cdigo ensamblado de una instruccin. Ver la Tabla de Seleccin
            de Campos en la seccin siguiente para los detalles.

      d     El nmero de nibbles representados por un campo de seleccin de
            campo. Se usa para calcular el tiempo del ciclo de ejecucin de
            algunas instrucciones. Ver la Tabla de Seleccin de Campos en la
            siguiente seccin para los detalles. Cuando se usa en una
            seleccin de campo extendida fsd, representa una expresin que
            indica el nmero de nibbles del registro que se vern afectados
            por la instruccin, procediendo desde el nibble de menor orden
            hacia los nibbles de mayor orden.

      expr  Una expresin que se evala a un valor absoluto o relocalizable,
            normalmente de 5 o menos nibbles de longitud.

      fs    El smbolo de la seleccin de campo. Ver la Tabla de Seleccin de
            Campos en la siguiente seccin para los detalles.

      fsd   El smbolo de la seleccin de campo extendida. Representa o bien
            un smbolo normal de seleccin de campo fs o bien una expresin
            que da el nmero de nibbles d del registro que se vern afectados
            por la instruccin, procediendo desde el nibble de menor orden
            hacia los nibbles de mayor orden.










                                 Pgina 17






      hh    Constante hex (hexadecimal) de dos dgitos, como 08 o F2. Dentro
            de un cdigo representa los dgitos hex usados para almacenar el
            valor de una expresin en el cdigo en orden invertido (ver
            "Cargar Datos Desde Memoria").

      hhhh  Constante hex de cuatro dgitos, como 38FE. Dentro de un cdigo,
            representa los dgitos hex usados para almacenar el valor de la
            expresin en el cdigo en orden inverso (ver "Cargar Datos Desde
            Memoria").

      hhhhh Constante hex de cinco dgitos, como 308FE. Dentro de un cdigo,
            representa los dgitos hex usados para almacenar el valor de la
            expresin en el cdigo en orden inverso (ver "Cargar Datos Desde
            Memoria").

   Etiqueta Un smbolo definido en el campo etiqueta de una instruccin.

      m     Una constante decimal de un dgito.

      n     Representa una expresin que se evala a un valor de 1 nibble, a
            menos que se especifique lo contrario. Dentro de cdigo,
            representa el dgito hex usado para almacenar el valor ensamblado
            de la expresin en el cdigo.

      nn    Representa una expresin que se evala a un valor de 2 nibbles, a
            menos que se especifique lo contrario. Dentro de un cdigo,
            representa los dgitos hex usados para almacenar el valor
            ensamblado de la expresin en el cdigo.

      nnnn  Representa una expresin que se evala a un valor de 4 nibbles, a
            menos que se especifique lo contrario. Dentro de un cdigo,
            representa los dgitos hex usados para almacenar el valor
            ensamblado de la expresin en el cdigo.

      nnnnn Representa una expresin que se evala a un valor de 5 nibbles, a
            menos que se especifique lo contrario. Dentro de un cdigo,
            representa los dgitos hex usados para almacenar el valor
            ensamblado de la expresin en el cdigo.

      r,s   Representa un registro (r solo) o un par de registros (r y s
            usados conjuntamente). Las combinaciones vlidas son
            (r,s) = { (A,B), (B,C), (C,A), (D,C)}.

      ss    Representa el nombre de un registro auxiliar (R0, R1, R2, R3 o
            R4).

      dp    Representa el nombre de un puntero de datos (D0 o D1).

















                                 Pgina 18






      6.3   Tabla de Seleccin de Campos


      Los siguientes smbolos se usan en las descripciones de las
      instrucciones para indicar selecciones de campo.

      Hay dos maneras en las que se codifica la seleccin de campo en el
      cdigo de una instruccin. Estos dos modelos se muestran en la tabla de
      abajo y se designan con las letras a y b.

                        Tabla de Seleccin de Campos
                        ----------------------------

                                          Representacin  Nmero de
                                            del Cdigo     Nibbles
       Campo  Nombre y Descripcin          (a) (b)         (d)
       -----  ----------------------      --------------  -------
         P    Campo Puntero. El Nibble       0   8           1
              especificado por el
              registro Puntero P.
        WP    Campo Palabra-Hasta-Puntero.   1   9          P+1
              Nibbles P hasta 0.
        XS    Campo Signo del Exponte.Nib 2. 2   A           1
         X    Campo Exponente. Nibs 2-0.     3   B           3
         S    Campo Signo.  Nibble 15.       4   C           1
         M    Campo Mantisa.  Nibs 14-3.     5   D          12
         B    Campo Byte.  Nibs 1-0.         6   E           2
         W    Campo Palabra. Nibs 15-0.      7   F          16
         A    Campo Direccin. Nibs 4-0.     F   -           5

      Algunas instrucciones tienen para el campo A una representacin en el
      cdigo totalmente diferente.
































                                 Pgina 19






      6.4   Resumen del Conjunto de Instrucciones


      Esto es un sumario del conjunto de instrucciones del Saturno, agrupadas
      por categora funcional

      Los campos de un registro se indican usando la convencin que, el
      nombre de un registro seguido de un campo entre parntesis significa
      ese campo del registro. Por ejemplo, C(A) quiere decir el campo A del
      registro C y A(3:0) significa los nibbles 3 hasta el 0 del registro A.


      6.5   Instrucciones de Salto


         GOTO     etiqueta    Salto relativo incondicional;
                              alcance: -2047, +2048 nibbles.
         GOC      etiqueta    Salto relativo si el Acarreo est encendido;
                              alcance: -127, +128 nibbles.
         GONC     etiqueta    Salto relativo si el Acarreo est apagado;
                              alcance: -127, +128 nibbles.
         GOSHORT  etiqueta    Genera un salto corto a la etiqueta. Si no se
                              puede determinar el estado del acarreo durante
                              el ensamblado, se genera un GOTO. Si se sabe
                              que el acarreo est encendido, se genera un
                              GOC. Si el acarreo se sabe que est apagado, se
                              genera un GONC.
         JUMP     etiqueta    Alias de GOSHORT.
         GOLONG   etiqueta    Salto relativo largo incondicional;
                              alcance: -32766, +32769
         GOVLNG   etiqueta    Salto absoluto; alcance sin restriccin.
         PC=(A)   etiqueta    *  Salto indirecto; A(A) es la direccin de la
                                 direccin de destino.
         PC=(C)   etiqueta    ** Salto indirecto; C(A) es la direccin de la
                                 direccin de destino.
         PC=A     etiqueta    ** Salto directo; A(A) es la direccin de
                                 destino.
         PC=C     etiqueta    ** Salto directo; C(A) es la direccin de
                                 destino.
         APCEX    etiqueta    ** Salto directo y salva PC en A(A); A(A) es la
                                 direccin de destino.
         CPCEX    etiqueta    ** Salto directo y salva PC en C(A); C(A) es la
                                 direccin de destino.
         GOYES    etiqueta    Salto relativo si el test es cierto (segunda
                              mitad de la instruccin de test); 
                              alcance: -125, +130 nibbles desde el test.


















                                 Pgina 20






      6.6   Instrucciones de Llamada a Subrutinas

         GOSUB    etiqueta    Salto relativo a una subrutina;
                              alcance: -2044, +2051 nibbles.
         GOSUBL   etiqueta    Salto relativo largo a una subrutina;
                              alcance: -32762, +32773 nibbles.
         GOSBVL   etiqueta    Salto absoluto a una subrutina.


      6.7   Instrucciones de Retorno de Subrutinas


         RTN            Vuelve de la subrutina.
         RTNSC          Vuelve de la subrutina y enciende el Acarreo.
         RTNCC          Vuelve de la subrutina y apaga el Acarreo.
         RTNSXM         Vuelve de la subrutina y enciende el bit XM del
                        estado del hardware.
         RTI            Vuelve de la subrutina y habilita el controlador de
                        interrupciones.
         RTNC           Vuelve de la subrutina si el Acarreo est encendido.
         RTNNC          Vuelve de la subrutina si el Acarreo est apagado.
         RTNYES         Vuelve de la subrutina si el test es cierto.
                        (segunda mitad de la instruccin de test).









































                                 Pgina 21






      6.8   Instrucciones de Test


      Todas las instrucciones de test deben ir seguidas por una instruccin
      GOYES o RTNYES. La instruccin de test y la instruccin GOYES o RTNYES
      que le sigue forman juntas un slo cdigo de 5 nibbles. El Acarreo se
      enciende cuando el test es cierto y se apaga cuando el test es falso.
      Todas las comparaciones de registros son sin signo (#FFFFF es mayor que
      #7FFFF). El test solo se lleva a cabo en el campo seleccionado.


      6.8.1 Tests_de_Registros


           ?r=s    fs      Cierto si r(fs) y s(fs) son iguales.
           ?r#s    fs      Cierto si r(fs) y s(fs) no son iguales.
           ?r=0    fs      Cierto si r(fs) es cero.
           ?r#0    fs      Cierto si r(fs) no es cero.
           ?r>s    fs      Cierto si r(fs) es mayor que s(fs).
           ?s>r    fs      Cierto si s(fs) es mayor que r(fs).
           ?r<s    fs      Cierto si r(fs) es menor que s(fs).
           ?s<r    fs      Cierto si s(fs) es menor que r(fs).
           ?r>=s   fs      Cierto si r(fs) es mayor o igual que s(fs).
           ?s>=r   fs      Cierto si s(fs) es mayor o igual que r(fs).
           ?r<=s   fs      Cierto si r(fs) es menor o igual que s(fs).
           ?s<=r   fs      Cierto si s(fs) es menor o igual que r(fs).


      6.8.2 Tests_de_Punteros

           ?P=     n       Cierto si P es igual a  n.
           ?P#     n       Cierto si P no es igual a n.


      6.8.3 Tests_de_los_Bits_del_Estado_del_Programa

           ?ST=0   n       Cierto si el bit de estado n est apagado.
           ?ST=1   n       Cierto si el bit de estado n est encendido.
           ?ST#1   n       Alias de ?ST=0   n.
           ?ST#0   n       Alias de ?ST=1   n.
























                                 Pgina 22






      6.8.4 Tests_de_los_Bits_del_Estado_del_Hardware

           ?XM=0           Cierto si el bit XM (falta mdulo externo) est
                           apagado.
           ?SB=0           Cierto si el bit SB (bit pegajoso) est apagado.
           ?SR=0           Cierto si el bit SR (solicitud de servicio) est
                           apagado.
           ?MP=0           Cierto si el bit MP (mdulo extrado) est
                           apagado.
           ?HS=0   n       Cierto si todos los bits correspondientes a n
                           estn apagados.


      6.8.5 Tests_de_Bits_de_Registros

           ?ABIT=0 n     ** Cierto si el bit n del registro A est apagado.
           ?ABIT=1 n     ** Cierto si el bit n del registro A est encendido.
           ?CBIT=0 n     ** Cierto si el bit n del registro C est apagado.
           ?CBIT=1 n     ** Cierto si el bit n del registro C est encendido.
           ?ABIT#1 n     ** Alias de ?ABIT=0 n.
           ?CBIT#1 n     ** Alias de ?CBIT=0 n.
           ?ABIT#0 n     ** Alias de ?ABIT=1 n.
           ?CBIT#0 n     ** Alias de ?CBIT=1 n.


      6.9   Instrucciones Puntero


      Todas las operaciones aritmticas con el puntero se llevan a cabo en
      modo HEX.

           P=      n       Pone el registro P a n
           P=P+1           Incrementa el registro P; afecta al Acarreo.
           P=P-1           Decrementa el registro P; afecta al Acarreo.
           C+P+1           Le suma P ms uno al campo A del registro C;
                           afecta al Acarreo.
           C=C+P+1         Alias de C+P+1.
           CPEX    n       Intercambia el registro P con el nibble n del
                           registro C.
           P=C     n       Copia el nibble n del registro C al registro P.
           C=P     n       Copia el registro P en el nibble n del registro C.


      6.10  Instrucciones de Manipulacin de Bits


           ABIT=0  n       ** Apaga el bit n del registro A.
           ABIT=1  n       ** Enciende el bit n del registro A.
           CBIT=0  n       ** Apaga el bit n del registro C.
           CBIT=1  n       ** Enciende el bit n del registro C.














                                 Pgina 23






      6.11  Instrucciones de Estado



      6.11.1   Estado_del_Programa

           ST=1    n       Enciende el bit de estado n.
           ST=0    n       Apaga el bit de estado n.
           CSTEX           Intercambia los bits de estado 11-0 con C(X).
           C=ST            Copia los bits de estado 11-0 en C(X).
           ST=C            Copia C(X) en los bits de estado 11-0.
           CLRST           Apaga los bits de estado 11-0.


      6.11.2   Estado_del_Hardware

           XM=0            Apaga el bit XM (falta mdulo externo)
           SB=0            Apaga el bit SB (bit pegajoso).
           SR=0            Apaga el bit SR (solicitud de servicio).
           MP=0            Apaga el bit MP (mdulo extrado).
           HS=0    n       Apaga todos los bits correspondientes a n.
           CLRHST          Apaga todos los bits de Estado del Hardware (XM,
                           SB, SR y MP).


      6.11.3   Instrucciones_del_Estado_del_Sistema

           SETHEX          Pone el modo aritmtico en hexadecimal.
           SETDEC          Pone el modo aritmtico en decimal.
           SREQ?           Pone C(0) para responder a la solicitud de
                           servicio del bus. Enciende el bit SR si se
                           solicita el servicio.
           C=RSTK          Baja la pila de retornos de subrutinas en C(A).
           RSTK=C          Sube C(A) en la pila de retornos de subrutinas.
           A=PC            ** Copia el PC actual en A(A).
           C=PC            ** Copia el PC actual en C(A).
           CONFIG          Configura un dispositivo a la direccin contenida
                           en C(A).
           UNCNFG          Desconfigura un dispositivo en la direccin
                           contenida en C(A).
           RESET           Enva el comando Reset al bus del sistema.
           BUSCB           ** Emite el comando de bus B al bus del sistema.
           BUSCC              Emite el comando de bus C al bus del sistema.
           BUSCD           ** Emite el comando de bus D al bus del sistema.
           SHUTDN          Para la CPU aqu y la mantiene en un estado de
                           bajo consumo hasta que se le hace despertar.
           C=ID            Copia la ID del chip desde el bus del sistema a
                           C(A).
           INTOFF          Deshabilita las interrupciones enmascarables.
           INTON           Permite las interrupciones enmascarables.
           RSI             * Resetea los circuitos de deteccin de
                           interrupciones.












                                 Pgina 24






      6.11.4   Instrucciones_de_Exploracin_del_Teclado.

           OUT=C           Copia C(X) en el registro OUT.
           OUT=CS          Copia C(0) en los 4 bits inferiores del registro
                           OUT.
           A=IN            Copia el registro IN en A(3:0).
           C=IN            Copia el registro IN en C(3:0).


      6.11.5   Instrucciones_de_los_Registros_Auxiliares

           A=ss            Copia ss en A.
           C=ss            Copia ss en C.
           ss=A            Copia A en ss.
           ss=C            Copia C en ss.
           AssEX           Intercambia A con ss.
           CssEX           Intercambia C con ss.
           A=ss.F  fs      ** Copia ss(fs) en A(fs).
           C=ss.F  fs      ** Copia ss(fs) en C(fs).
           ss=A.F  fs      ** Copia A(fs) en ss(fs).
           ss=C.F  fs      ** Copia C(fs) en ss(fs).
           AssEX.F fs      ** Intercambia A(fs) con ss(fs).
           CssEX.F fs      ** Intercambia C(fs) con ss(fs).


      6.11.6   Instrucciones_de_los_Punteros_de_Datos

           dp=A            Copia A(A) en dp.
           dp=C            Copia C(A) en dp.
           AdpEX           Intercambia A(A) con dp.
           CdpEX           Intercambia C(A) con dp.
           dp=AS           Copia A(3:0) en (dp3:0).
           dp=CS           Copia C(3:0) en (dp3:0).
           AdpXS           Intercambia A(3:0) con dp(3:0).
           CdpXS           Intercambia C(3:0) con dp(3:0).
           dp=dp+  n       Incrementa el registro dp en n; altera el Acarreo.
           dp=dp-  n       Decrementa el registro dp en n; altera el Acarreo.
           dp=HEX  hh      Carga hh en dp(1:0).
           dp=HEX  hhhh    Carga hhhh en dp(3:0).
           dp=HEX  hhhhh   Carga hhhhh en dp.
           dp=(2)  expr    Carga expr en dp(1:0); usa los 2 nibbles
                           inferiores de la expr si es demasiado grande.
           dp=(4)  expr    Carga expr en dp(3:0); usa los 4 nibbles
                           inferiores de la expr si es demasiado grande.
           dp=(5)  expr    Carga expr en dp; usa los 5 nibbles inferiores de
                           la expr si es demasiado grande.


      6.11.7   Instrucciones_de_Transferencia_de_Datos

      Si fsd es una expresin, el valor de la expresin es el nmero de
      nibbles a transferir. Por ejemplo, si fsd es una expresin cuyo valor
      es 7, se transferirn los nibbles 6 hasta el 0.











                                 Pgina 25






           A=DAT0  fsd     Lee en A(fsd) los datos apuntados por D0.
           A=DAT1  fsd     Lee en A(fsd) los datos apuntados por D1.
           C=DAT0  fsd     Lee en C(fsd) los datos apuntados por D0.
           C=DAT1  fsd     Lee en C(fsd) los datos apuntados por D1.
           DAT0=A  fsd     Escribe A(fsd) en la posicin indicada por D0.
           DAT1=A  fsd     Escribe A(fsd) en la posicin indicada por D1.
           DAT0=C  fsd     Escribe C(fsd) en la posicin indicada por D0.
           DAT1=C  fsd     Escribe C(fsd) en la posicin indicada por D1.


      6.11.8   Instrucciones_de_Carga_de_Constantes.

      Se carga primero el nibble menos significativo de las constantes en el
      registro destino, con el nibble menos significativo cargado en r(P) y
      los nibbles sucesivos cargados en r(P+1), r(P+2), etc. hasta que se han
      cargado todos los nibbles. Una constante puede "enrollarse" y pasar del
      nibble r(15) al r(0).

      N.T.> "enrollarse" en este documento quiere decir que, despus del
            ltimo nibble/bit por la izquierda de un registro/campo "viene"
            el primero por la derecha, o viceversa, como si estuviramos en
            un "anillo"

           LAHEX   hhhhhhhh   ** Carga la constante hex hhhhhhhh en A.
           LCHEX   hhhhhhhh      Carga la constante hex hhhhhhhh en C.
           LAASC   \ASCII\    ** Carga la constante ASCII ASCII en A.        
           LCASC   \ASCII\       Carga la constante ASCII ASCII en C.
           LA(m)   expr       ** Carga una constante de m nibbles en A; usa
                                 los m nibbles inferiores de la expresin si
                                 es demasiado grande.
           LC(m)   expr          Carga una constante de m nibbles en C; usa
                                 los m nibbles inferiores de la expresin si
                                 es demasiado grande.
           LA(N)   expr       ** Inicia la Carga en A de una Constante de
                                 tantos nibbles como indica expr. Es til
                                 para Cargar Constantes que son demasiado
                                 grandes para LA(m) o que implican mltiples
                                 referencias externas.
           LC(N)   expr          Inicia la Carga en C de una Constante de
                                 tantos nibbles como indica expr. Es til
                                 para Cargar Constantes que son demasiado
                                 grandes para LC(m) o que implican mltiples
                                 referencias externas.

      6.11.9   Instrucciones_de_Desplazamiento

      El trmino desplazamiento circular (N.T.>una "rotacin") significa que
      el nibble desplazado fuera, entra por el otro extremo del campo
      seleccionado. (N.T.>es como si el campo se "enrollara")
      NOTA: Las instrucciones de desplazamiento a la derecha encienden el Bit
      Pegajoso si se desplaza fuera del campo caulquier bit distinto de cero.

           rSRB               Desplaza el reg r a la derecha un bit.
           rSRB.F  fs      ** Desplaza el reg r(fs) a la derecha un bit.
           rSLC               Rota el reg r a la izquierda un nibble.         
           rSRC               Rota el reg r a la derecha un nibble.
           rSL     fs         Desplaza el reg r(fs) a la izquierda un nibble.
           rSR     fs         Desplaza el reg r(fs) a la derecha un nibble.






                                 Pgina 26






      6.11.10  Instrucciones_Aritmticas

      NOTA: No existe ninguna instruccin s=r-s  fs. Esto significa que, en
            la CPU saturno, no estn disponibles estas instrucciones: B=A-B,
            C=B-C, A=C-A ni C=D-C.

           r=0     fs         Pone r(fs) a cero.
           r=r-1   fs         Decrementa r(fs); altera el Acarreo.
           r=r+1   fs         Incrementa r(fs); altera el Acarreo.
           r=s     fs         Copia s(fs) en r(fs).
           s=r     fs         Copia r(fs) en s(fs).
           rsEX    fs         Intercambia r(fs) y s(fs).
           srEX    fs         Alias de rsEX  fs.
           r=r+CON fs,d    ** Suma d a r(fs); altera el Acarreo.
           r=r+r   fs         Suma r(fs) consigo mismo; altera el Acarreo.
           r=r+s   fs         Suma s(fs) a r(fs); altera el Acarreo.
           r=s+r   fs         Alias de r=r+s   fs.
           s=r+s   fs         Suma r(fs) a s(fs); altera el Acarreo.
           s=s+r   fs         Alias de s=r+s   fs.
           r=r-CON fs,d    ** Resta d a r(fs); altera el Acarreo.
           r=r-s   fs         Resta s(fs) a r(fs); altera el Acarreo.
           s=s-r   fs         Resta r(fs) a s(fs); altera el Acarreo.
           r=s-r   fs         Resta r(fs) a s(fs), pone el resultado en
                              r(fs); altera el Acarreo.
           r=-r    fs         Complemento a 2 o a 10 de r(fs); apaga el
                              Acarreo si r(fs) era cero, si no, enciende el
                              Acarreo.
           r=-r-1  fs         Complemento a 1 o a 9 de r(fs); apaga el
                              Acarreo incondicionalmente.


      6.11.11  Instrucciones_de_Operaciones_Lgicas

           r=r&s   fs         Y lgico Bit a Bit del registro r(fs) con el
                              registro s(fs).
           r=r!s   fs         O lgico Bit a Bit del registro r(fs) con el
                              registro s(fs).


      6.11.12  Instrucciones_de_No_Operacin

           NOP3               No-operacin de tres nibbles.
           NOP4               No-operacin de cuatro nibbles.
           NOP5               No-operacin de cinco nibbles.


      6.12  Instrucciones Pseudo-Cdigo


      NOTA: Algunas de las operaciones pseudo-cdigo ignoran el campo
      etiqueta. Estas instrucciones ignoran el campo etiqueta:
       CHARMAP, CLRCARRY, CLRFLAG, CLRLIST, EJECT, INCLUDE,
       LISTALL, LISTM, LIST, MESSAGE, NOTREACHED, RDSYMB, SETCARRY,
       SETFLAG, SETLIST, STITLE, TITLE y UNLIST.










                                 Pgina 27






      6.12.1   Asignacin_de_Espacio_para_Datos

           BSS     nnnnn      Asigna aqu nnnnn nibbles cero.
           CON(m)  expr       Genera una constante de m nibbles. La constante
                              se almacena con el nibble menos significativo
                              en la direccin menor. [1 _ m _ 8]
           REL(m)  etiqueta   Genera un offset relativo de m nibbles. El
                              offset se almacena con el nibble menos
                              significativo en la direccin menor.
                              [1 _ m _ 8]
           NIBASC  \ASCII\    Genera caracteres ASCII. Cada carcter se
                              almacena con el nibble menos significativo en
                              la direccin menor. El primer carcter se
                              coloca en la direccin menor. [40 caracteres
                              como mximo]
           STRING  \ASCII\    Genera caracteres ASCII, enciende el bit alto
                              del ltimo carcter. Cada carcter se almacena
                              con el nibble menos significativo en la
                              direccin menor. El primer carcter se coloca
                              en la direccin menor. [40 caracteres como
                              mximo]
           NIBHEX  hhhhhhh    Genera nibbles hexadecimales. El primer nibble
                              se coloca en la direccin menor. [80 nibbles
                              como mximo]
           NIBFS   fs         Genera el nibble de seleccin de campo para el
                              campo fs. La representacin del cdigo que se 
                              usa es la de la columna "a" de la Tabla de
                              Seleccin de Campos.
           LINK    etiqueta   Genera un offset relativo de cinco nibbles a la
                              siguiente referencia LINK a la etiqueta. El
                              valor del offset lo rellena el "linkador".
           SLINK   etiqueta   Genera un offset relativo de cinco nibbles a la
                              primera referencia LINK a la etiqueta. El valor
                              del offset lo rellena el "linkador".
           INC(m)  etiqueta   Genera una referencia de m nibbles a la
                              etiqueta que se pasa al "linkador". La etiqueta
                              debe ser un smbolo externo. El linkador
                              rellena la posicin de la referencia INC(m) a
                              la etiqueta. Por ejemplo, si un fichero
                              contiene tres referencias INC(3) =etiqueta, la
                              primera INC(3) se rellenar como 000, la
                              segunda INC(3) se rellenar como 100 y la
                              tercera INC(3) se rellenar como 200 (el nibble
                              menos significativo de la posicin en la
                              direccin menor).



















                                 Pgina 28






      6.12  Ensamblado Condicional


      Los pseudo-cdigos de ensamblado condicional permiten ensamblar
      versiones alternativas de cdigo ensamblador dependiendo de algunas
      condiciones especficas. Una etiqueta opcional en las declaraciones de
      ensamblado condicional permite el anidamiento.

      Las condiciones que se pueden comprobar incluyen las banderas del
      ensamblador encendidas en la invocacin, el valor de una expresin
      comparada con cero, la relacin entre dos cadenas, la presencia o
      ausencia de un smbolo, el estado actual del acarreo (por ejemplo,
      despus de GOYES o de RTNYES, el acarreo est apagado) y si est
      disponible un mnemnico especfico en este ensamblado (dependiendo del
      nivel del procesador seleccionado).

       etiqueta   IF      expr   Ensambla cdigo solo si la bandera expr est
                                 encendida.
       etiqueta   IFEQ    expr   Ensambla cdigo solo si expr es cero.
       etiqueta   IFNE    expr   Ensambla cdigo solo si expr no es cero.
       etiqueta   IFLT    expr   Ensambla cdigo solo si expr menor que cero.
       etiqueta   IFLE    expr   Ensambla cdigo solo si expr es menor o
                                 igual que cero.
       etiqueta   IFGT    expr   Ensambla cdigo solo si expr es mayor que
                                 cero.
       etiqueta   IFGE    expr   Ensambla cdigo solo si expr es mayor o
                                 igual a cero.
       etiqueta   IFZER   expr    Alias de IFEQ.
       etiqueta   IFNZ    expr    Alias de IFNE.
       etiqueta   IFNEG   expr    Alias de IFLT.
       etiqueta   IFPOS   expr    Alias de IFGT.

       etiqueta   IFDEF   smbolo   Ensambla cdigo solo si el smbolo est
                                    definido ahora.
       etiqueta   IFNDEF  smbolo   Ensambla cdigo solo si el smbolo no
                                    est definido ahora.
       etiqueta   IFOPC   smbolo   Ensambla cdigo solo si el smbolo es el
                                    mnemnico vlido de un cdigo.
       etiqueta   IFNOPC  smbolo   Ensambla cdigo solo si el smbolo no es
                                    un mnemnico vlido de un cdigo.
       etiqueta   IFPASS1        Ensambla cdigo solo si este es el primer
                                 paso del ensamblador. Esto es muy til
                                 cuando se usa conjuntamente con el
                                 pseudo-cdigo MESSAGE
       etiqueta   IFPASS2        Ensambla cdigo solo si este es el segundo
                                 pase del ensamblador. Esto es muy til
                                 cuando se usa conjuntamente con el
                                 pseudo-cdigo MESSAGE.
       etiqueta   IFANYCARRY     Ensambla cdigo solo si el Acarreo no se
                                 puede determinar durante el ensamblado.
       etiqueta   IFCARRYCLR     Ensambla cdigo solo si el Acarreo se puede
                                 determinar durante el ensamblado y el
                                 acarreo est apagado.











                                 Pgina 29






       etiqueta   IFCARRYSET     Ensambla cdigo solo si el acarreo se puede
                                 determinar durante el ensamblado y el
                                 acarreo est encendido.
       etiqueta   IFREACHED      Ensambla cdigo solo si la declaracin
                                 actual se puede alcanzar.
       etiqueta   ELSE           Invierte el sentido del test IF con la
                                 etiqueta "etiqueta".
       etiqueta   ENDIF          Termina el ensamblaje condicional iniciado
                                 por el IF con la etiqueta "etiqueta".


      6.14  Listados de Control


      Cuando no se est generando ningn fichero de listados (opcin -N),
      estos pseudo-cdigos no tienen ningn efecto en el ensamblado.

           TITLE   texto   Hace que el ttulo del listado sea "texto" (se
                           permite una instruccin TITLE por fichero como
                           mximo).
           STITLE  texto   Hace que el subttulo del listado sea "texto" y
                           fuerza una nueva pgina en el listado ensamblador.
           EJECT           Fuerza una nueva pgina en el listado ensamblador.
           UNLIST          Apaga el listado ensamblador excepto con ciertos
                           pseudo-cdigos.
           LIST            Enciende el listado ensamblador.
           LISTM           Enciende el listado ensamblador de las expansiones
                           de macros y de los ficheros incluidos.
           LISTALL expr    Lista incondicionalmente tantas lneas a
                           continuacin como valga expr. LISTALL es
                           independiente de LIST y UNLIST. Si expr es menor o
                           igual a cero o no es una expresin legal, de
                           desactiva el  modo LISTALL.
           CLRLIST tipo    Apaga el listado ensamblador del tipo, donde tipo
                           es uno o ms de { CODE, MACRO, INCLUDE, PSEUDO,
                           ALL }. Si el tipo incluye NOLIST, la lnea CLRLIST
                           no se lista.
           SETLIST tipo    Enciende el listado ensamblador del tipo, donde
                           tipo es uno o ms de { CODE, MACRO, INCLUDE,
                           PSEUDO, ALL }. Si el tipo incluye NOLIST, la lnea
                           SETLIST no se lista.

      LIST es un alias de SETLIST CODE. LISTM es un alias de SETLIST
      MACRO,INCLUDE. UNLIST es un alias de CLRLIST CODE,MACRO,INCLUDE.


      6.15  Definicin de Smbolos


      smbolo  EQU   expr     Asigna el valor expr al smbolo. Si el smbolo
                              ya est definido, EQU genera un error.
      smbolo  =     expr     Asigna el valor expr al smbolo. Si el smbolo
                              ya est definido, se le da el nuevo valor expr.











                                 Pgina 30








      6.16  Definicin Macro


       etiqueta   MACRO    Inicia la definicin del macro "etiqueta".
       etiqueta   ENDM     Termina la definicin del macro "etiqueta".
                  EXITM    Si se alcanza mientras se interpreta un macro, se
                           termina la interpretacin de ese macro
                           inmediatamente. EXITM no tiene ningn efecto
                           durante la definicin de un macro.


      6.17  Modo Ensamblador


      smbolo  ABS   nnnnn    Especifica un ensamblado absoluto comenzando en
                              la direccin nnnnn.
      smbolo  REL   nnnnn    Especifica un ensamblado relocalizable
                              comenzando en la direccin nnnnn.
               END            Termina el ensamblado con esta lnea. Se ignora
                              cualquier lnea despus de la instruccin END.


      6.18  Acceso a Ficheros

      Estos pseudo-cdigos permiten acceder a otros ficheros. Esto permite
      que los smbolos, macros, etc., usados a menudo se definan en un
      fichero compartido por varios ficheros ensamblador.

           RDSYMB  fichero Lee la tabla de smbolos del fichero del Saturno
                           llamado "fichero". Cada smbolo que se define
                           externo y no relocalizable estar disponible
                           durante la duracin de este ensamblado.
           INCLUDE fichero Lee las declaraciones fuente en ensamblador del
                           fichero hasta que se lee una instruccin END o se
                           llega al final del fichero.
           CHARMAP fichero Lee el mapeado de un conjunto de caracteres del
                           fichero. Cada lnea en el fichero consiste en un
                           carcter ASCII, seguido por el carcter que se
                           deber ensamblar cuando se use aqul carcter en
                           una cadena ASCII. (Ver "Formato del Fichero
                           Charmap").


       6.19  Modificacin de las Banderas del Ensamblador


           CLRFLAG expr    Apaga la bandera del ensamblador expr.
           SETFLAG expr    Enciende la bandera del ensamblador expr.














                                 Pgina 31






      6.20  Modificacin del Estado del Acarreo


           CLRCARRY        Le indica al ensamblador que el acarreo siempre
                           est apagado en este punto.
           SETCARRY        Le indica al ensamblador que el acarreo siempre
                           est encendido en este punto.
           NOTREACHED      Le indica al ensamblador que este punto nunca ser 
                           alcanzado por el cdigo ensamblador.


       6.21  Miscelnea


           MESSAGE texto   Escribe el "texto" en la salida estndar de
                           errores. El mensaje se escribe una vez por cada
                           pase del ensamblador. Esto es muy til cuando se
                           rastrean los smbolos que cambian entre las dos
                           pasadas del ensamblador.













































                                 Pgina 32






      7. Consejos de Ensamblado del Saturno


      Este captulo sumariza algunos consejos generales acumulados tras
      muchos muchos aos-hombre de programacin en Corvallis. Aunque
      indudablemente son incompletos, pueden salvar de algunas agonas.


      7.1   Tres Advertencias


      Los tres siguientes "gotcha's"(?) son lecciones que han sido aprendidas
      repetidamente por cada programador del Saturno. Has sido advertido.

      7.1.1 Niveles_de_Retorno

      Si tienes experiencia con procesadores estndar, ten en cuenta que ste
      tiene un nmero fijo de niveles de la pila de retornos (8). Como el
      sistema de interrupciones usa dos de ellos cuando se produce una
      interrupcin (que se puede dar en cualquier momento), los programadores
      de la HP 48 estn limitados a un mximo de 6 niveles. Si el cdigo que
      escribes es llamado, an estars ms limitado. Los sntomas de
      violacin incluirn un Arranque en Caliente pero pueden incluir efectos
      ms graves. ...As que vigila esos niveles.


      7.1.2  Modo

      Una de las grandes caractersticas del procesador Saturno es tambin la
      ruina de los programadores. El procesador soporta los modos DEC y HEX.
      El cdigo diseado para ejecutarse en el modo HEX se puede comportar
      muy mal si se invoca desde un estado en modo DEC y viceversa. ...As
      que vigila el modo.


      7.1.3 Recuerda_P=0!

      Muchas rutinas requieren P=0 como una condicin de entrada (por cierto,
      esto incluye al bucle interno del RPL). Bastante a menudo otras rutinas
      no se preocupan del valor a la entrada de P, sino que lo usan como un
      recurso y salen con l en varios estados (por ejemplo: la mayora de
      las rutinas matemticas de coma flotante). Esto se podra generalizar
      simplemente a "vigila las condiciones de entrada y de salida", pero
      parece que ste sucede frecuentemente. ...As que vigila que P=0.




















                                 Pgina 33






      7.2   Consejos para Compactar el Cdigo

      7.2.1 Operaciones_con_el_Campo_A

      Frecuentemente, el uso del campo A en las operaciones que solo
      requieren los campos P, B, X o XS representa un ahorro de cdigo. Por
      ejemplo: Reemplaza "A=C  X" con "A=C  A" para ahorrar un nibble si no
      te importan los nibbles 3 ni 4 de A.


      7.2.2 Cargar_Constantes

      Para cargar constantes pequeas en un campo ms grande, frecuentemente
      es ms barato borrar el campo y generar solo los "dgitos" requeridos.
      Por ejemplo, si kfactor < 256, entonces te ahorrars un nibble de ROM y
      conseguirs el mismo efecto con

               C=0      A
               LC(2)    kfactor

       en vez de
               LC(5)    kfactor



      7.2.3 Las_3_Bifurcaciones

      Hay 3 variedades de "GOTO" y "GOSUB" que requieren 4, 6 y 7 nibbles de
      cdigo. Dos de estas son bifurcaciones "relativas" y la larga es
      "absoluta". El ensamblador se cuida de todos los detalles, informndote
      si una bifurcacin est fuera de margen, por lo que realmente no hay
      ningn inconveniente en usar las versiones ms cortas cuando sea
      apropiado (por cierto, tambin se ejecutan ms rpido). Como regla
      general, las referencias a las rutinas externas (rutinas en la HP 48)
      deberan usar la versin larga y las referencias a las rutinas en tu
      aplicacin deberan usar bifurcaciones relativas. Los mnemnicos de las
      tres variedades:

                  GOTO           GOSUB                (4 nibs)
                  GOLONG         GOSUBL               (6 nibs)
                  GOVLNG         GOSBVL               (7 nibs)


      Se pueden acortar muchas referencias a rutinas externas por medio de
      una "tabla de saltos". Por ejemplo: Reemplaza todos los
      "GOSBVL =GETPTR" por llamadas a la versin local ("GOSUB getptr") de
      abajo.

       getptr  GOVLNG   =GETPTR















                                 Pgina 34





      7.2.4 GOSUB/RTN

      Un cdigo que puede terminar naturalmente con algo como
               ...
               ...
               GOSUB    dotask8
               RTN

      correr ms rpido, ahorra 2 nibbles y puede hacer que tu rutina tome
      menos niveles de la pila reemplazando esa combinacin con
               ...
               ...
               GOTO     dotask8


      7.2.5 Usa_Expresiones

      Usa el Ensamblador del Saturno para evaluar ciertas expresiones en vez
      de durante la ejecucin.

       Ejemplo

               LC(5)    (=TBLADRS)+5*t2


      en vez de

               LC(5)    =TBLADRS
               A=C      A
               LC(5)    5*t2
               C=C+A    A


      7.2.6 Cuenta_adelante

      Frecuentemente se usa P como la variable de control en bucles que no
      requieren ms de 16 pases. Si se estructura el bucle de modo que se
      decrementa P hasta que un test del acarreo provoque la salida, el valor
      de P a la salida ser 15 (un valor generalmente no muy til). A menudo
      el cdigo que sigue resetear P a 0. Puedes opcionalmente evitar la
      necesidad de resetear P a 0 (ahorrando 2 nibbles) contando hacia
      adelante. De esta manera, cuando se produzca el acarreo, P valdr 0.

       Ejemplo
               P=      16-5       Calcula x-5*y;  A:x, C:y
       arglp   A=A-C   A
               P=P+1
               GONC    arglp

















                                 Pgina 35






      7.2.7 Antes_de_lanzarte

      Una de las ventajas de la programacin en lenguaje ensamblador es la
      pltora de mtodos disponibles para el innovador. A menudo la primera
      solucin que piensas no ser la ms eficiente en cuanto al cdigo, el
      tiempo, los recursos, la confianza o la ms fcil de implementar.

      Hablando de eficiencia de tiempo - este documento te habla acerca del
      tiempo de ejecucin. El tiempo de ejecucin de una instruccin vara
      dependiendo del tipo de instruccin y de los campos con los que opera.

      Adems, cuando se ejecuta cdigo fuera de los dispositivos con el ancho
      estndar de 8 bits (a la manera de la ROM de 256 Kbytes de la HP 48),
      el tiempo de ejecucin de la instruccin variar dependiendo de si la
      instruccin se da en una direccin par o impar. Si se mide el tiempo de
      ejecucin de la instruccin en algn tipo de escala consistente,
      encontrars que los tiempos de ejecucin de las instrucciones variarn
      de 2 a 33 unidades de tiempo. Las instrucciones que consumen ms tiempo
      son aquellas que acceden a los datos en memoria. Tambin son lentas las
      operaciones con palabras completas (16 nibbles). Las ms rpidas son
      las operaciones con P.










   
































                                 Pgina 36






      7.3   Algunas Operaciones Comunes

      7.3.1 Un_nibble_de_aqu_para_all

      Este tipo de operacin se hace normalmente por uno o ms de los tres
      siguientes tipos de instrucciones de la CPU. La variedad "A travs de
      P" solo se puede usar con el registro C.

       Transferencia de Registro:
       ==========================
       Ejemplo - Transfiere un nibble desde C[P] a A[P]
               A=C      P

       Desplazamientos de Nibbles:
       ===========================
       Ejemplo - Desplaza el campo B de A a los nibbles 1 y 2 de A
               ASL.F    X

       A Travs de P:
       ==============
       Ejemplo - Copia el campo de Signo de C en el nibble 4 de C
               P=C      15
               C=P      4


      7.3.2 Comprobar_un_Bit

      Este tipo de operacin se puede conseguir de varias maneras dependiendo
      de donde est localizado el bit a comprobar, del estado de la CPU y de
      que recursos de la CPU se pueden usar.

       Test de Bit Directo:
       ====================
      Esta es, en general, la mejor opcin cuando es posible (solo en los
      nibbles 0-3 de los registros A y C), ya que solo afecta el ACARREO y
      solo depende de lo que se comprueba. Tambin tiene la ventaja de
      trabajar con argumentos simblicos (lo que lo hace fcil cuando cambia
      la localizacin del bit).

       Ejemplo:
       bEDIT   EQU      6
               ...
               ...
               ?ABIT=1  bEDIT
               GOYES    doEDIT



















                                 Pgina 37






      Desplazamientos de bit a la Izquierda (Aritmtico) de un campo:
      ===============================================================
      Los desplazamientos de bit a la izquierda precisan el Modo HEX y se
      usan a menudo en casos donde el bit est dentro de una posicin que no
      es A[0-3] o C[0-3] y es demasiado costoso o no se desea copiarlo all.
      El desplazamiento se hace aritmticamente va el aritmtica en modo HEX
      y se destruye el campo en el que se realiza la operacin. Tu cdigo
      tambin depende del bit# (nmero de bit) que se comprueba (no es
      simblico).

       Ejemplo - Test del bit 2 en A[S]
               SETHEX
               A=A+A    S        Lo desplaza hacia el bit ms significativo.
               A=A+A    S        CS (Acarreo Encendido) si el bit 2 estaba
                                 encendido.
               GOC      bit2_on


      Desplazamientos de bit a la derecha en un campo:
      ================================================
      Los desplazamientos de bits aritmticos a la derecha se consiguen con
      las instrucciones de desplazamiento proporcionadas por la CPU. Cuando
      un bit no-cero se desplaza fuera del campo por su lado derecho, se
      enciende un bit de la CPU conocido como "el bit pegajoso" (SB). Este
      bit es "pegajoso" y se debe apagar explcitamente antes de usarse para
      testear un bit. Se podra hacer el mismo ejemplo de antes en modo HEX o
      DEC con:

               ASRB.F   S         Mueve el bit a la posicin 1
               ASRB.F   S                      a la posicin 0
               SB=0               Prepara para el test
               ASRB.F   S         SB=1 si el bit 2 estaba encendido.
               ?SB=0
               GOYES    bit2_off

      La colocacin de la instruccin "SB=0" es importante. No hay ninguna
      instruccin para comprobar si SB=1, de aqu el sentido inverso del
      test.

       Enmascralo:
       ============

               P=       15
               LCHEX    4         C[S]: 0100  (Mscara)
               A=A&C    S         Enmascara todos los bits que no interesan
               ?A#0     S         bit2 encendido?
               GOYES    bit2_on   S.

















                                 Pgina 38




      7.3.3 Salvar/Testear_un_Estado

      Frecuentemente es ventajoso registrar una condicin que se puede
      testear ms tarde. Los 12 Bits de Estado de la CPU (Local) (S0-S11) se
      usan frecuentemente para este propsito. Los bits de Estado (Globales)
      (S12-S15) estn reservados para registrar el estado del sistema
      operativo. Tambin hay una diferencia funcional. Los bits de Estado
      Globales no se pueden intercambiar dentro y fuera del registro C como
      los otros. Se cuidadoso y documenta el uso que haces de los bits de
      estado, ya que no tener cuidado aqu puede dar lugar a una lucha por el
      mismo bit de estado y un/a "Gotcha"(???). En cuanto al uso es bastante
      simple. Usa un nombre simblico para el bit de estado (El smbolo
      debera ser global si el bit de estado va a ser referenciado en otros
      ficheros).

       Ejemplo:
       =sDMY   EQU      8              Formato de Fecha Da-Mes-Ao si est
                                       Encendido
               ...
               ...
               ?ST=1    sDMY           Formato de Fecha DD.MMYYYY ?
               GOYES    date10         S.
               CDEX     B              No.  - Intercambia DD, MM
       date10


      7.3.4    Acceso_a_Memoria      

      El Procesador Saturno Lee (Escribe) desde (en) el nibble de menor orden
      de la memoria a (desde) los nibbles de menor orden de los registros A o
      C. No tendrs problemas si recuerdas: el de menor orden del registro al
      de menor orden en memoria. As una "A" ASCII almacenada en el campo B
      del registro A de la CPU aparecer como A[B]: 41. Si se escribe el
      mismo valor en la direccin #82000, vers

                     #82000   1
                     #82001   4

      Si se muestra la memoria con las direcciones creciendo de izquierda a
      derecha (como en nuestros sistemas de desarrollo), el dato aparecer
      como

                     82000:14...

      hacindolo aparecer hacia atrs. Pero todo est bien. Si los dos
      nibbles empezando en la direccin #82000 se leen de nuevo a A[B]
      obtendrs lo que esperas (A[B]: 41). La transferencia tiene lugar
      usando uno de los "Punteros de Datos" D0, D1 para especificar la
      direccin.

      Ejemplo: Escribe el carcter ASCII "A" en la direccin #82000:

               P=       0
               LC(2)    A
               D0=(5)   #82000
               DAT0=C   B               #82000: "A"










                                 Pgina 39






      7.4   Otros Consejos



      7.4.1 Etiquetas

      Nada te impide que uses etiquetas globales en todas las rutinas. No lo
      hagas. Usa etiquetas globales solo en las rutinas que se referencian
      externamente (o sea; aquellas que lo precisan) o que es previsible que
      se puedan llamar externamente ms adelante. Usa las "referencias
      globales" solo donde se precise. Esto permite a alguien que revise el
      cdigo saber si una rutina que se est llamando est o no en el mismo
      fichero sin tener que consultar la tabla de smbolos. (o sea; si veo
      "GOSUBL  =PADDER", supongo que PADDER est en otro fichero - si no,
       por que el "=" ?).


      7.4.2 Bits_de_Estado

      El uso de todos los bits de estado debera ser simblico. O sea; nunca
      escribir algo como "ST=0  5". En vez de esto se puede hacer
      "ST=0  sLOAN" donde sLOAN se ha hecho igual a 5 en algn sitio. Adems
      de las ventaja obvia de autodocumentar el uso del bit de estado,
      permite cambios relativamente seguros del bit de estado actual en uso
      ms tarde. La tabla de smbolos identifica todas las referencias a
      sLOAN a fin de hacer cambios, evitar colisiones del bit de estado, etc.


      7.4.3 Puntos_de_Entrada

      Encuentro que es mejor no tener ms de una entrada Global en una rutina
      dada. La razn principal es que tal rutina es frecuentemente difcil de
      mantener. Invariablemente los puntos de entrada tendrn diferentes
      condiciones de entrada (si no por que las entradas por separado?).
      Este principio se puede violar en inters de la conservacin del cdigo
      pero ten en cuenta siempre el costo de mantenimiento. Si lo haces y no
      es completamente obvio de un vistazo cuales deben ser las condiciones
      de entrada, inserta una "mini cabecera" que consista en unas cuantas
      lneas de comentarios explicando cuales son las condiciones de entrada.
      Algo como

       *****************************************************************
       ** Aqu:   A: Cuenta de ltimos argumentos                      *
       **         C: Contador del Bucle                                *
       **         P: 14                                                *
       *****************************************************************
       =ARG50

















                                 Pgina 40






      7.4.4 Salidas

      El buen "estilo" sugiere que las rutinas no deberan tener ms de una
      salida normal (no de errores). Esto es algo que se viola con impunidad
      en inters del ahorro de cdigo. No es inusual encontrar casos donde el
      uso de una salida comn realmente ahorre cdigo. Es mejor dejar que el
      coste de cdigo sea el juez. Cuando hay un "empate", usa una salida
      comn.



      7.5   Documentacin

      7.5.1 Comentarios_sobre_los_Comentarios

      Cualquier lnea que empieza con un "*" es una lnea comentario. Los
      comentarios se insertan tambin en la misma lnea que el cdigo (no se
      precisa ningn "*"). Los comentarios se pueden agrupar en uno de tres
      tipos:

      Nivel de Mdulo:
      ================
      Estos comentarios describen generalmente la naturaleza del cdigo en el
      fichero, proporcionando quizs una lista de las rutinas principales,
      las convenciones generales y la notacin que se usar en la
      documentacin subsiguiente, etc. Esto debe aparecer al principio del
      fichero (antes del cdigo)

      Dependiendo de tu estilo, puedes escoger colocar las equivalencias de
      los smbolos (por ejemplo: bits de estado, constantes varias, etc.) al
      principio del fichero (Esto no genera ningn cdigo, pero afecta al
      cdigo que se refiere a los smbolos). Esto hace ms fcil, para
      alguien que lo revisa, encontrar sus valores.

      Nivel de Rutina
      ===============
      Estos comentarios describen la naturaleza general de una rutina, sus
      entradas y salidas y los recursos de la CPU y de la RAM alterados por
      su invocacin. Deberan ir en una cabecera al inicio de la rutina.
      Empieza el proceso de codificacin insertando una cabecera estndar en
      blanco. Rellena algunos campos inmediatamente (p.ej.: nombre, resumen,
      fecha de implementacin) y los otros en cuanto el cdigo sea
      razonablemente estable.

      Nivel de Lnea:
      ===============
      Los comentarios lnea por lnea ayudarn al que revisa el programa
      (quin a menudo sers t mismo) a leer por encima el cdigo ms tarde.
      Deberan estar en la misma lnea que el cdigo o en lneas aparte cerca
      del cdigo que se est documentando.














                                 Pgina 41






       Pautas:
       =======
         1) Cuantos? En general, cuantos ms, mejor. Sin embargo no todas
            las lneas necesitan un comentario y algunas rutinas cortas,
            sencillas y locales no precisan una cabecera. Si una rutina tiene
            una entrada externa, se merece una cabecera.

         2) Evita los comentarios obvios (A=C  A  Copia C[A] en A[A])

         3) Evita los comentarios que documentan contenidos de registros que
            no son importantes. Esto me ayuda a fijarme en lo importante. Por
            ejemplo, los que revisan un programa generalmente prefieren #1 a
            #2:

                                    #1                    #2
             C=D     A                              C[A]: Ptr Ultm Arg
             A=C     A         A[A]: Ptr Ultm Arg   A[A]: Ptr Ultm Arg
             P=      0
             LC(5)   PROC5     C[A]: Ejec Direcc    C[A]: Ejec Direcc

         4) Que tus comentarios tengan contenido. Deben ser descifrables
            fcilmente, pero la gramtica no es importante. No dejes que tus
            comentarios sean ms largos de lo que se imprimir en los
            ficheros de listados (.l).

         5) El Ensamblador del Saturno es de formato libre que te permite ser
            bastante flexible en como dispones tu cdigo. NO ABUSES DE ESTA
            CARACTERISTICA. Emplea los campos estndar. La cabecera que hay
            en la siguiente pgina tiene campos razonablemente marcados
            (1,9,17,28). Lo importante es la congruencia.


































                                 Pgina 42




      7.5.2 Una_Cabecera_de_Lenguaje_Ensamblador_Estndar

      Alguna versin de esta cabecera est siendo usada por todos las
      personas del software que estn generando Cdigo en Lenguaje
      Ensamblador del Saturno. No hay ninguna ley que te diga que tienes que
      usarla o que tengas que usar alguna. Esta funciona y ha pasado la
      prueba del tiempo.


               EJECT
       *****************************************************************
       *****************************************************************
       ** Nombre: XXXXXXXXXXXX - .......
       **
       ** Categora: .....
       **
       ** Resumen: .....
       **
       ** Entrada:    .....
       **
       ** Salida:     .....
       **
       ** Salidas de Error: .....
       **
       ** Altera: CPU - .....
       **         RAM - .....
       **
       ** Llamadas:    .....
       **
       ** Niveles de la Pila: .....
       **
       ** Notas: ......
       **
       **     Fecha    Prog             Modificacin
       **   --------   ----   ------------------------------------------
       **   04/../91   XX     Implementado.
       **===============================================================
       =XXXXXX XXXXX   XXXXX      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
       12345678901234567890123456789012345678901234567890123456789012345



























                                 Pgina 43






      He aqu como usamos nosotros los diferentes campos:

      NOMBRE:  Nombre de la rutina y una descripcin de 1-Lnea de la rutina.

      CATEGORIA:  Agrupacin general (o sea: MATH, CLKUTIL, MEM, etc.)

      RESUMEN: Propsito de la rutina, quizs con los detalles mnimos
               relativos a como lo hace.

      ENTRADA: Que condiciones exactas de entrada de la CPU se deben cumplir.
               Algunas veces vale la pena mencionar tambin otras condiciones
               requeridas. (o sea: valores RAM, Estado del Temporizador,
               interrupciones deshabilitadas, etc.).

      SALIDA:  Que condiciones pueden "depender de" en una salida normal (no
               de error). (o sea; donde estn los resultados? Sale siempre
               la rutina CC (Acarreo apagado)? Hay algn valor en particular
               en P? Que hay del Modo HEX/DEC?)

      SALIDAS DE ERROR: Lo mismo que SALIDA, pero en las salidas de error.

      ALTERA:  Que es lo que la rutina cambia (EN EL PEOR CASO!) en una
               salida normal (no de error). Si la RAM no se altera elimina
               esa lnea y lista todos los registros de la CPU alterados.
               Esto incluye el ACARREO, P, MODO, SB, etc. El que llama no se
               preocupa de que recursos usas, slo le interesa lo que has
               alterado. As que, no listes los recursos usados que, en la
               salida, siempre se devuelven al estado que tenan a la
               entrada.

      LLAMADAS:   Nombres de las rutinas llamadas antes de volver al que la
                  llam. A menudo es til indicar aqu tambin los niveles de
                  la pila de la rutina llamada. Esto ayuda a rellenar el
                  campo de Niveles de la Pila.

      NIVELES DE LA PILA:  El nmero de niveles de la pila usados por la
                           rutina. Si esta rutina no tiene ningn GOSUB y no
                           emplea C=RSTK ni RSTK=C, entonces valdr 0.

      NOTAS:   El lugar para la documentacin adicional, quizs la
               descripcin de un algoritmo o ciertas ADVERTENCIAS.

      HISTORIA:   Indica la fecha, las iniciales de los programadores y los
                  motivos de los cambios. No empieces a rellenar esto hasta
                  que creas que el cdigo es estable.



















                                 Pgina 44




      7.5.3 Algunos_Ejemplos_de_Cabeceras


       *****************************************************************
       *****************************************************************
       ** Nombre(S): PKDATE   - Empaqueta los Componentes de la Fecha (orden
       ** YYYYMMDD )
       **
       ** Categora: DATEUTL (Utilidad_de_Fechas)
       **
       ** Propsito:  Facilita el almacenamiento de los componentes de una
       **    fecha en un solo registro de la CPU. Tambin til para comparar
       **    dos fechas para ver cual es menor. Las condiciones de entrada
       **    estn diseadas de modo que esta rutina se pueda llamar
       **    fcilmente despus de CKDATE.
       **
       ** Entrada:  A[A]: 0YYYY
       **           B[B]: MM
       **           D[B]: DD
       **
       ** Salida:   C: 00000000YYYYMMDD;  AA (Acarreo Apagado);  P=7
       **
       ** Altera:   C;  P;  ACARREO
       **
       ** Llamadas: Ninguna
       **
       ** Niveles de la Pila: 0
       **
       ** Notas:
       **
       **     Fecha    Prog             Modificacin
       **   --------   ----   ------------------------------------------
       **   08/23/85   SB     Implementado.
       *****************************************************************
       *****************************************************************
       =PKDATE C=0    W              Inicializa el Resultado
               C=A    A              Copia YYYY y desplaza a la izq. 2 veces
               CSL    A
               P=     7
               CSL    WP
               C=B    B              Copia MM y desplaza a la izq. dos veces
               CSL    WP
               CSL    WP
               C=D    B              C: 00000000YYYYMMDD
               RTNCC
       *****************************************************************




















                                 Pgina 45






               EJECT
       *****************************************************************
       *****************************************************************
       ** Nombre(S): LEAPYR?  - Determina si el ao especificado es bisiesto
       **
       ** Categora: DATEUTL
       **
       ** Propsito: Determina si el ao especificado es un ao bisiesto.
       **
       ** Entrada:    A[A]: YYYY;   Modo DEC.
       **
       ** Salida:     AE (Acarreo Encendido) - YYYY es un Ao Bisiesto
       **             AA (Acarreo Apagado)   - YYYY no es un Ao Bisiesto
       **
       ** Altera:     C[A];  SB;  Acarreo
       **
       ** Llamadas:   Ninguna
       **
       ** Niveles de la Pila: 1
       **
       ** Notas:  Y es un ao bisiesto si se cumplen estas dos condiciones:
       **                 1)  Y MOD 4 = 0
       **          -Y-    2)  (Y MOD 100 # 0) o (Y MOD 400 =0)
       **
       **     Fecha    Prog             Modificacin
       **   --------   ----   ------------------------------------------
       **   07/12/85   SB     Implementado.
       *****************************************************************
       *****************************************************************
       =LEAPYR?
               C=A    A              Inicializa X=Y
               RSTK=C                Salva Y
                 ?A#0   B            Y divisible por 100 ?
                 GOYES  LEAP10       No. Ao Bisiesto si X div por 4
                 ASR    A            S. Ao Bisiesto si Y div por 400
                 ASR    A
                 C=A    A            C[A]=A[A]: X=Y/100

       *  Problema reducido a comprobar si X es divisible por 4.
       LEAP10    SB=0                Inicializa SB=0
                 C=C+C  A
                 C=C+C  A
                 C=C+A  A            5*X
                 CSR    A            C[A]: X/2;   Enciende SB si X impar.
                 CSRB                Enciende SB si X/2 impar.
               C=RSTK
               A=C    A              Restaura Y
               ?SB=0                 Ao Bisiesto?
               RTNYES                S.  AE (Acarreo Encendido)
               RTN                   No.  AA (Acarreo Apagado)
       *****************************************************************













                                 Pgina 46




               EJECT
       *****************************************************************
       *****************************************************************
       **
       ** Nombre: Ticks>DOW - Calcula el Da de la Semana del tiempo en ticks
       **
       ** Categora:   TIMESYS (Hora_del_Sistema)
       **
       ** Resumen: A partir del Tiempo en Ticks (desde 0), devuelve un nmero
       **          entero real (1-7) que identifica el da de la semana.
       **
       ** Pila:  hxs  --> % (Da de la Semana)
       **
       ** Salidas de Error: Memoria Insuficiente
       **
       **     Fecha    Prog             Modificacin
       **   --------   ----   ------------------------------------------
       **   03/18/88   SB     Implementado.
       **===============================================================
       =Ticks>DOW
               CON(5) (*)+5

       * Baja el Tiempo(ticks) de la pila
               A=DAT1 A
               AD1EX                Salva D1* en A[A];  D1:->hxs
               D1=D1+ 10            Se salta el prlogo y la longitud
               C=0    W
               C=DAT1 13
               R0=C                 R0: Tiempo (Ticks)
               D1=A                 Restaura D1
               D1=D1+ 5
               D=D+1  A             Baja hxs y salva los nuevos punteros
               GOSBVL =SAVPTR

       * Convierte a Da de la Semana y lo pone en formato flotante
               C=R0
               GOSBVL =dowutil      A: Indice del Da de la Semana (1-7)
               C=A    A
               P=C    0
               C=0    W
               C=P    14
               A=C    W             A: % (DaDelaSemana: 1-7; 1=DOMINGO)

       *  Sube % a la pila y bifurca.
               GOTO   push%lp
       *****************************************************************




















                                 Pgina 47




      8. Diccionario de Mnemnicos

      Esta seccin contiene la descripcin de cada una de las instrucciones
      ensamblador del Saturno o de los pseudo-cdigos. La descripcin muestra
      el cdigo binario generado por el mnemnico, si lo hay, as como
      tambin el tiempo requerido por el ciclo de ejecucin si el mnemnico
      es una instruccin ejecutable.





       ?A#0   fs  -  Testea si A no es igual a 0
       ---------
       fs = A                       cdigo:  8ACyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9aCyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A no es igual a 0. Debe ir seguido por un
      mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.





       ?A#B   fs  -  Testea si A no es igual a B
       ---------
       fs = A                       cdigo:  8A4yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a4yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A no es igual al campo fs de B. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.























                                 Pgina 48






       ?A#C   fs  -  Testea si A no es igual a C
       ---------
       fs = A                       cdigo:  8A6yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a6yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A no es igual al campo fs de C. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?A<=B  fs  -  Testea si A es menor o igual que B
       ---------
       fs = A                       cdigo:  8BCyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9bCyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A es menor o igual que campo fs de B. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?A<B   fs  -  Testa si A es menor que B
       ---------
       fs = A                       cdigo:  8B4yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b4yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A es menor que el campo fs de B. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.















                                 Pgina 49




       ?A=0   fs  -  Testea si A es igual a 0
       ---------
       fs = A                       cdigo:  8A8yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a8yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A es igual a 0. Debe ir seguido por un
      mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.





       ?A=B   fs  -  Testea si A es igual a B
       ---------
       fs = A                       cdigo:  8A0yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a0yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A es igual al campo fs de B. Debe ir seguido
      por un mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES
      o GOYES que le sigue. Ajusta el Acarreo.





       ?A=C   fs  -  Testea si A es igual a C
       ---------
       fs = A                       cdigo:  8A2yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a2yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A es igual al campo fs de C. Debe ir seguido
      por un mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES
      o GOYES que le sigue. Ajusta el Acarreo.

















                                 Pgina 50




       ?A>=B  fs  -  Testea si A es mayor o igual que B
       ---------
       fs = A                       cdigo:  8B8yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b8yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A es mayor o igual que el campo fs de B. Debe
      ir seguido por un mnemnico GOYES o RTNYES. yy lo determina la
      instruccin RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?A>B   fs  -  Testea si A es mayor que B
       ---------
       fs = A                       cdigo:  8B0yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b0yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de A es mayor que el campo fs de B. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?B#0   fs  -  Testea si B no es igual a 0
       ---------
       fs = A                       cdigo:  8ADyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9aDyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B no es igual a 0. Debe ir seguido por un
      mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.

















                                 Pgina 51




       ?B#A   fs  -  Testea si B no es igual a A
       ---------
       fs = A                       cdigo:  8A4yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a4yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B no es igual al campo fs de A. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?B#C   fs  -  Testea si B no es igual a C
       ---------
       fs = A                       cdigo:  8A5yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a5yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B no es igual al campo fs de C. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.



































                                 Pgina 52




       ?B<=C  fs  -  Testea si B es menor o igual que C
       ---------
       fs = A                       cdigo:  8BDyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9bDyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B es menor o igual que el campo fs de C. Debe
      ir seguido por un mnemnico GOYES o RTNYES. yy lo determina la
      instruccin RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?B<C   fs  -  Testea si B es menor que C
       ---------
       fs = A                       cdigo:  8B5yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b5yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B es menor que el campo fs de C. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?B=0   fs  -  Testea si B es igual a 0
       ---------
       fs = A                       cdigo:  8A9yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a9yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B es igual a 0. Debe ir seguido por un
      mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.

















                                 Pgina 53




       ?B=A   fs  -  Testea si B es igual a A
       ---------
       fs = A                       cdigo:  8A0yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a0yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B es igual al campo fs de A. Debe ir seguido
      por un mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES
      o GOYES que le sigue. Ajusta el Acarreo.





       ?B=C   fs  -  Testea si B es igual a C
       ---------
       fs = A                       cdigo:  8A1yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a1yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B es igual al campo fs de C. Debe ir seguido
      por un mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES
      o GOYES que le sigue. Ajusta el Acarreo.





       ?B>=C  fs  -  Testea si B es mayor o igual que C
       ---------
       fs = A                       cdigo:  8B9yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b9yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B es mayor o igual que el campo fs de C. Debe
      ir seguido por un mnemnico GOYES o RTNYES. yy lo determina la
      instruccin RTNYES o GOYES que le sigue. Ajusta el Acarreo.
 
















                                 Pgina 54




       ?B>C   fs  -  Testea si B es mayor que C
       ---------
       fs = A                       cdigo:  8B1yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b1yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de B es mayor que el campo fs de C. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?C#0   fs  -  Testea si C no es igual a 0
       ---------
       fs = A                       cdigo:  8AEyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9aEyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C no es igual a 0. Debe ir seguido por un
      mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.





       ?C#A   fs  -  Testea si C no es igual a A
       ---------
       fs = A                       cdigo:  8A6yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a6yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C no es igual que el campo fs de A. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.

















                                 Pgina 55




       ?C#B   fs  -  Testea si C no es igual a B
       ---------
       fs = A                       cdigo:  8A5yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a5yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C no es igual que el campo fs de B. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?C#D   fs  -  Testea si C no es igual a D
       ---------
       fs = A                       cdigo:  8A7yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a7yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C no es igual que el campo fs de D. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?C<=A  fs  -  Testea si C es menor o igual que A
       ---------
       fs = A                       cdigo:  8BEyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9bEyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C es menor o igual que el campo fs de A. Debe
      ir seguido por un mnemnico GOYES o RTNYES. yy lo determina la
      instruccin RTNYES o GOYES que le sigue. Ajusta el Acarreo.

















                                 Pgina 56




       ?C<A   fs  -  Testea si C es menor que A
       ---------
       fs = A                       cdigo:  8B6yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b6yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C es menor que el campo fs de A. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?C=0   fs  -  Testea si C es igual a 0
       ---------
       fs = A                       cdigo:  8AAyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9aAyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C es igual a 0. Debe ir seguido por un
      mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.





       ?C=A   fs  -  Testea si C es igual a A
       ---------
       fs = A                       cdigo:  8A2yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a2yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C es igual que el campo fs de A. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.

















                                 Pgina 57




       ?C=B   fs  -  Testea si C es igual a B
       ---------
       fs = A                       cdigo:  8A1yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a1yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C es igual que el campo fs de B. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?C=D   fs  -  Testea si C es igual a D
       ---------
       fs = A                       cdigo:  8A3yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a3yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C es igual que el campo fs de D. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?C>=A  fs  -  Testea si C es mayor o igual que A
       ---------
       fs = A                       cdigo:  8BAyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9bAyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C es mayor o igual que el campo fs de A. Debe
      ir seguido por un mnemnico GOYES o RTNYES. yy lo determina la
      instruccin RTNYES o GOYES que le sigue. Ajusta el Acarreo.

















                                 Pgina 58




       ?C>A   fs  -  Testea si C es mayor que A
       ---------
       fs = A                       cdigo:  8B2yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b2yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de C es mayor que el campo fs de A. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?D#0   fs  -  Testea si D no es igual a 0
       ---------
       fs = A                       cdigo:  8AFyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9aFyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de D no es igual a 0. Debe ir seguido por un
      mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.





       ?D#C   fs  -  Testea si D no es igual que C
       ---------
       fs = A                       cdigo:  8A7yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a7yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de D no es igual que el campo fs de C. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.

















                                 Pgina 59




       ?D<=C  fs  -  Testea si D es menor o igual que C
       ---------
       fs = A                       cdigo:  8BFyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9bFyy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de D es menor o igual que el campo fs de C. Debe
      ir seguido por un mnemnico GOYES o RTNYES. yy lo determina la
      instruccin RTNYES o GOYES que le sigue. Ajusta el Acarreo.




       ?D<C   fs  -  Testea si D es menor que C
       ---------
       fs = A                       cdigo:  8B7yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b7yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de D es menor que el campo fs de C. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?D=0   fs  -  Testea si D es igual a 0
       ---------
       fs = A                       cdigo:  8AByy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9aByy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de D es igual a 0. Debe ir seguido por un
      mnemnico GOYES o RTNYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.


















                                 Pgina 60




       ?D=C   fs  -  Testea si D es igual que C
       ---------
       fs = A                       cdigo:  8A3yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9a3yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de D es igual que el campo fs de C. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?D>=C  fs  -  Testea si D es mayor o igual que C
       ---------
       fs = A                       cdigo:  8BByy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9bByy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de D es mayor o igual que el campo fs de C. Debe
      ir seguido por un mnemnico GOYES o RTNYES. yy lo determina la
      instruccin RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?D>C   fs  -  Testea si D es mayor que C
       ---------
       fs = A                       cdigo:  8B3yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  9b3yy
                                    ciclos:   13 + d (GO/RTNYES)
                                               6 + d (NO)

      Prueba si el campo fs de D es mayor que el campo fs de C. Debe ir
      seguido por un mnemnico GOYES o RTNYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.

















                                 Pgina 61




       ?MP=0    - Testea el bit de Mdulo Extrado (MP)
       ---------
                                    cdigo:  838yy
                                    ciclos:   13 (GO/RTNYES)
                                               6 (NO)

      Prueba si el bit de Mdulo Extrado (MP) es cero. Este bit de estado
      del hardware se enciende cuando se produce una interrupcin de mdulo
      extrado (la lnea *INT de la CPU se pone alta), y debe apagarse
      expresamente con el mnemnico MP=0. Ver "Especificacin del Hardware de
      la HP-71" para ms informacin. Debe ir seguido por un mnemnico RTNYES
      o GOYES. yy lo determina la instruccin RTNYES o GOYES que le sigue.
      Ajusta el Acarreo.





       ?P#   n    - Testea si el puntero P no es igual a n
       ---------
                                    cdigo:  88nyy
                                    ciclos:   13 (GO/RTNYES)
                                               6 (NO)

      Prueba si el puntero P no es igual a n. Debe ir seguido por un
      mnemnico RTNYES o GOYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.




       ?P=    n    - Testea si el puntero P es igual a n
       ---------
                                    cdigo:  89nyy
                                    ciclos:   13 (GO/RTNYES)
                                               6 (NO)

      Prueba si el puntero P es igual a n. Debe ir seguido por un mnemnico
      RTNYES o GOYES. yy lo determina la instruccin RTNYES o GOYES que le
      sigue. Ajusta el Acarreo.





       ?SB=0    - Testea el Bit Pegajoso (SB)
       ---------
                                    cdigo:  832yy
                                    ciclos:   13 (GO/RTNYES)
                                               6 (NO)

      Prueba si el Bit Pegajoso (SB) es cero. Este bit de estado del hardware
      se enciende durante los desplazamientos a la derecha cuando se desplaza
      fuera del final del campo un nibble o bit distintos de cero. El Bit
      Pegajoso se debe apagar explcitamente. Debe ir seguido por un
      mnemnico RTNYES o GOYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.









                                 Pgina 62




       ?SR=0    - Testea si el bit de Solicitud de Servicio (SR) es cero
       ---------
                                    cdigo:  834yy
                                    ciclos:   13 (GO/RTNYES)
                                               6 (NO)

      Prueba si el bit de Solicitud de Servicio (SR) es cero. Este bit del
      estado del hardware lo enciende el mnemnico SREQ? y se debe borrar
      explcitamente con la instruccin SR=0. Debe ir seguido por un
      mnemnico RTNYES o GOYES. yy lo determina la instruccin RTNYES o GOYES
      que le sigue. Ajusta el Acarreo.





       ?ST#0   n   - Testea si el bit de estado n no es igual a 0
       ---------
                                    cdigo:  87nyy
                                    ciclos:   14 (GO/RTNYES)
                                               7 (NO)

      Prueba si el bit de Estado del Programa n est encendido. Debe ir
      seguido por un mnemnico RTNYES o GOYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?ST#1   n   - Testea si el bit de estado n no es igual a 1
       ---------
                                    cdigo:  86nyy
                                    ciclos:   14 (GO/RTNYES)
                                               7 (NO)

      Prueba si el bit n de Estado del Programa est apagado. Debe ir seguido
      por un mnemnico RTNYES o GOYES. yy lo determina la instruccin RTNYES
      o GOYES que le sigue. Ajusta el Acarreo.





       ?ST=0  n   - Testea si el bit de estado n es igual a 0
       ---------
                                    cdigo:  86nyy
                                    ciclos:   14 (GO/RTNYES)
                                               7 (NO)

      Prueba si el bit n de Estado del Programa est apagado. Debe ir seguido
      por un mnemnico RTNYES o GOYES. yy lo determina la instruccin RTNYES
      o GOYES que le sigue. Ajusta el Acarreo.













                                 Pgina 63




       ?ST=1  n   - Testea si el bit de estado n es igual a 1
       ---------
                                    cdigo:  87nyy
                                    ciclos:   14 (GO/RTNYES)
                                               7 (NO)

      Testea si el bit n del Estado del Programa est encendido. Debe ir
      seguido por un mnemnico RTNYES o GOYES. yy lo determina la instruccin
      RTNYES o GOYES que le sigue. Ajusta el Acarreo.





       ?XM=0    - Testea el bit de Falta Mdulo Externo (XM)
       ---------
                                    cdigo:  831yy
                                    ciclos:   13 (GO/RTNYES)
                                               6 (NO)

      Testea si el bit de Falta Mdulo Externo (XM) es cero. Este bit del
      estado del hardware lo enciende el mnemnico RTNSXM y se debe apagar
      explcitamente con el mnemnico XM=0. Debe ir seguido por un mnemnico
      RTNYES o GOYES. yy lo determina la instruccin RTNYES o GOYES que le
      sigue. Ajusta el Acarreo.





       A=-A   fs  -  Complemento a dos de A en A
       ---------
       fs = A                       cdigo:  F8
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb8
                                    ciclos:    3 + d

      Complementa el campo fs especificado de A. Complementa en complemento a
      dos si el modo es HEX, en complemento a diez si el modo es DEC. El
      Acarreo se enciende si el campo no es cero, si no, se apaga el Acarreo.





       A=-A-1 fs  -  Complemento a uno de A en A
       ---------
       fs = A                       cdigo:  FC
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BbC
                                    ciclos:    3 + d

      Realiza un complemento a uno en el campo fs especificado de A. El
      Acarreo siempre se apaga.










                                 Pgina 64




       A=0    fs  -  Hace A igual a 0
       ---------
       fs = A                       cdigo:  D0
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab0
                                    ciclos:    3 + d

      Pone a cero el campo fs especificado de A. No afecta al Acarreo.





       A=A!B  fs  -  Hace A O B en A
       ---------
       fs = A                       cdigo:  0EF8
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea8
                                    ciclos:    4 + d

      Pone en el campo fs del registro A su O lgico con el campo
      correspondiente del registro B. No afecta al Acarreo.






       A=A!C  fs  -  A O C en A
       ---------
       fs = A                       cdigo:  0EFE
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0EaE
                                    ciclos:    4 + d

      Pone en el campo fs del registro A su O lgico con el campo
      correspondiente del registro C. No afecta al Acarreo.





       A=A&B  fs  -  A Y B en A
       ---------
       fs = A                       cdigo:  0EF0
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea0
                                    ciclos:    4 + d

      Pone en el campo fs del registro A su Y lgico con el campo
      correspondiente del registro B. No afecta al Acarreo.











                                 Pgina 65




       A=A&C  fs  -  A Y C en A
       ---------
       fs = A                       cdigo:  0EF6
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea6
                                    ciclos:    4 + d

      Pone en el campo fs del registro A su Y lgico con el campo
      correspondiente del registro C. No afecta al Acarreo.





       A=A+1  fs  -  Incrementa A
       ---------
       fs = A                       cdigo:  E4
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba4
                                    ciclos:    3 + d

      Incrementa el campo fs especificado del registro A en 1. Ajusta el
      Acarreo.





       A=A+A  fs  -  Suma de A y A en A
       ---------
       fs = A                       cdigo:  C4
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa4
                                    ciclos:    3 + d

      Dobla el campo fs especificado del registro A. Ajusta el Acarreo.





       A=A+B  fs  -  Suma de A y B en A
       ---------
       fs = A                       cdigo:  C0
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa0
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro A la suma de s mismo y
      el correspondiente campo del registro B. Ajusta el Acarreo.












                                 Pgina 66




       A=A+C  fs  -  Suma de A y C en A
       ---------
       fs = A                       cdigo:  CA
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AaA
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro A la suma de s mismo y
      el correspondiente campo del registro C. Ajusta el Acarreo.





       A=A-1  fs  -  Decrementa A
       ---------
       fs = A                       cdigo:  CC
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AaC
                                    ciclos:    3 + d

      Decrementa el campo fs especificado del registro A en uno. Ajusta el
      Acarreo.





       A=A-B  fs  -  A menos B en A
       ---------
       fs = A                       cdigo:  E0
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba0
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro A la resta de s mismo y
      el correspondiente campo del registro B. Ajusta el Acarreo.





       A=A-C  fs  -  A menos C en A
       ---------
       fs = A                       cdigo:  EA
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BaA
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro A la resta de s mismo y
      el correspondiente campo del registro C. Ajusta el Acarreo.











                                 Pgina 67




       A=B    fs  -  Copia B en A
       ---------
       fs = A                       cdigo:  D4
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab4
                                    ciclos:    3 + d

      Copia el campo fs del registro B en el campo correspondiente del
      registro A. No afecta al Acarreo.





       A=B-A  fs  -  B menos A en A
       ---------
       fs = A                       cdigo:  EC
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BaC
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro A la resta inversa de s
      mismo y el correspondiente campo del registro B. Ajusta el Acarreo.





       A=C    fs  -  Copia C en A
       ---------
       fs = A                       cdigo:  DA
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbA
                                    ciclos:    3 + d

      Copia el campo fs del registro C en el campo correspondiente del
      registro A. No afecta al Acarreo.


























                                 Pgina 68




       A=DAT0 fsd -  Carga A desde memoria
       ---------
       fs = A                       cdigo:  142
                                    ciclos:   18

       fs = B                       cdigo:  14A
                                    ciclos:   15

       fs = (P,WP,XS,X,S,M,W)       cdigo:  152a
                                    ciclos:   17 + d

       fs = d                       cdigo:  15Ax (x=d-1)
                                    ciclos:   16 + d

      La cantidad de datos (d nibbles) especificada por fsd se transferir
      desde la direccin de memoria apuntada por D0 al campo especificado del
      registro A. El nibble con la direccin ms baja se transferir al
      nibble de menor orden del campo del registro, procediendo hacia los
      nibbles de mayor orden. Si fs = d, los d nibbles se transfieren al
      registro empezando en el nibble 0. Ver la seccin "Cargar Datos Desde
      Memoria".





       A=DAT1 fsd -  Carga A desde memoria
       ---------
       fs = A                       cdigo:  143
                                    ciclos:   18

       fs = B                       cdigo:  14B
                                    ciclos:   15

       fs = (P,WP,XS,X,S,M,W)       cdigo:  153a
                                    ciclos:   17 + d

       fs = d                       cdigo:  15Bx (x=d-1)
                                    ciclos:   16 + d

      La cantidad de datos (d nibbles) especificada por fsd se transferir
      desde la direccin de memoria apuntada por D1 al campo especificado del
      registro A. El nibble con la direccin ms baja se transferir al
      nibble de menor orden del campo del registro, procediendo hacia los
      nibbles de mayor orden. Si fs = d, los d nibbles se transfieren al
      registro empezando en el nibble 0. Ver la seccin "Cargar Datos Desde
      Memoria".



















                                 Pgina 69




       A=IN      - Carga A con IN
       ---------
                                    cdigo:  802
                                    ciclos:    7

      Carga los cuatro nibbles de menor orden del registro A con el contenido
      del registro de Entrada.





       A=R0      - Copia R0 en A
       ---------
                                    cdigo:  110
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R0 en el registro de
      trabajo A.





       A=R1      - Copia R1 en A
       ---------
                                    cdigo:  111
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R1 en el registro de
      trabajo A.





       A=R2      - Copia R2 en A
       ---------
                                    cdigo:  112
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R2 en el registro de
      trabajo A.





       A=R3      - Copia R3 en A
       ---------
                                    cdigo:  113
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R3 en el registro de
      trabajo A.











                                 Pgina 70




       A=R4      - Copia R4 en A
       ---------
                                    cdigo:  114
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R4 en el registro de
      trabajo A.





       ABEX   fs  -  Intercambia los Registros A y B
       ---------
       fs = A                       cdigo:  DC
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbC
                                    ciclos:    3 + d

      Intercambia los campos fs de los registros A y B. No afecta al Acarreo.





       ACEX   fs  -  Intercambia los Registros A y C
       ---------
       fs = A                       cdigo:  DE
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbE

                                    ciclos:    3 + d
      Intercambia los campos fs de los registros A y C. No afecta al Acarreo.





       AD0EX      - Intercambia A y D0 (nibs 0-4)
       ---------
                                    cdigo:  132
                                    ciclos:    8

      Intercambia el campo fs del registro A con el puntero de Datos D0. No
      afecta al Acarreo.



















                                 Pgina 71




       AD0XS      - Intercambio corto de A y D0 (nibs 0-3)
       ---------
                                    cdigo:  13A
                                    ciclos:    7

      Intercambia los 4 nibbles inferiores de A con los cuatro nibbles
      inferiores del puntero de datos D0. No afecta al Acarreo.





       AD1EX      - Intercambia A y D1 (nibs 0-4)
       ---------
                                    cdigo:  133
                                    ciclos:    8

      Intercambia el campo A del registro A con el puntero de Datos D1. No
      afecta al Acarreo.





       AD1XS      - Intercambio corto de A y D1 (nibs 0-3)
       ---------
                                    cdigo:  13B
                                    ciclos:    7

      Intercambia los 4 nibbles inferiores de A con los cuatro nibbles
      inferiores del puntero de datos D1. No afecta al Acarreo.





       AR0EX      - Intercambia A y R0
       ---------
                                    cdigo:  120
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo A y el registro
      auxiliar R0.





       AR1EX     - Intercambia A y R1
       ---------
                                    cdigo:  121
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo A y el registro
      auxiliar R1.











                                 Pgina 72




       AR2EX     - Intercambia A y R2
       ---------
                                    cdigo:  122
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo A y el registro
      auxiliar R2.





       AR3EX     - Intercambia A y R3
       ---------
                                    cdigo:  123
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo A y el registro
      auxiliar R3.






       AR4EX     - Intercambia A y R4
       ---------
                                    cdigo:  124
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo A y el registro
      auxiliar R4.





       ASL    fs  -  Desplazamiento a la izquierda de A
       ---------
       fs = A                       cdigo:  F0
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb0
                                    ciclos:    3 + d

      Desplaza el contenido del campo fs especificado del registro A un
      nibble a la izquierda sin afectar al resto del registro. Se pierde el
      nibble desplazado fuera del extremo izquierdo del campo. El nuevo
      nibble de menor orden del campo es cero. No afecta al Bit Pegajoso
      (SB).
















                                 Pgina 73




       ASLC      - Desplazamiento Circular a la Izquierda de A (Rotacin izq)
       ---------
                                    cdigo:  810
                                    ciclos:   21

      Desplazamiento circular a la izquierda (Rotacin a la izquierda) de un
      nibble en el registro A. Opera con los 16 dgitos. No afecta al Bit
      Pegajoso.





       ASR    fs  -  Desplazamiento a la derecha de A
       ---------
       fs = A                       cdigo:  F4
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb4
                                    ciclos:    3 + d

      Desplaza el contenido del campo fs especificado del registro A un
      nibble a la derecha sin afectar al resto del registro. Se pierde el
      nibble desplazado fuera del extremo derecho del campo pero el Bit
      Pegajoso (SB) se enciende si el nibble era distinto de cero. El nuevo
      nibble de mayor orden del campo es cero.





       ASRB      - Desplazamiento de Bit a la Derecha de A
       ---------
                                    cdigo:  81C
                                    ciclos:   20

      Desplaza el registro A un bit a la derecha. Opera con los 16 dgitos.
      El bit desplazado fuera del registro se pierde pero el Bit Pegajoso
      (SB) se enciende si era distinto de cero. El nuevo bit de orden
      superior del registro es cero.





       ASRC      - Desplazamiento Circular a la Derecha de A (Rotacin der.)
       ---------
                                    cdigo:  814
                                    ciclos:   21

      Desplazamiento circular a la derecha en A de un nibble. Opera con los
      16 dgitos. El Bit Pegajoso (SB) se enciende si el nibble desplazado
      desde la posicin de orden inferior a la de orden superior era distinto
      de cero.












                                 Pgina 74




       B=-B   fs  -  Complemento a dos de B en B
       ---------
       fs = A                       cdigo:  F9
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb9
                                    ciclos:    3 + d

      Complementa el campo fs especificado de B. El complemento es un
      complemento a dos si el modo es HEX o un complemento a diez si el modo
      es DEC. El Acarreo se enciende si el campo no es cero, si no, se apaga
      el Acarreo.





       B=-B-1 fs  -  Complemento a Uno de B en B
       ---------
       fs = A                       cdigo:  FD
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BbD
                                    ciclos:    3 + d

      Realiza un complemento a uno en el campo fs especificado de B. Siempre
      se apaga el Acarreo.





       B=0    fs  -  Hace B igual a 0
       ---------
       fs = A                       cdigo:  D1
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab1
                                    ciclos:    3 + d

      Pone el campo fs especificado de B a cero. No afecta al Acarreo.





       B=A    fs  -  Copia A en B
       ---------
       fs = A                       cdigo:  D8
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab8
                                    ciclos:    3 + d

      Copia el campo fs del registro A en el campo correspondiente del
      registro B. No afecta al Acarreo.










                                 Pgina 75




       B=B!A  fs  -  B O A en B
       ---------
       fs = A                       cdigo:  0EFC
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0EaC
                                    ciclos:    4 + d

      Pone en el campo fs especificado de B su O lgico con el campo
      correspondiente del registro A. No afecta al Acarreo.





       B=B!C  fs  -  B O C en B
       ---------
       fs = A                       cdigo:  0EF9
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea9
                                    ciclos:    4 + d

      Pone en el campo fs especificado de B su O lgico con el campo
      correspondiente del registro C. No afecta al Acarreo.





       B=B&A  fs  -  B Y A en B
       ---------
       fs = A                       cdigo:  0EF4
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea4
                                    ciclos:    4 + d

      Pone en el campo fs especificado de B su Y lgico con el campo
      correspondiente del registro A. No afecta al Acarreo.





       B=B&C  fs  -  B Y C en B
       ---------
       fs = A                       cdigo:  0EF1
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea1
                                    ciclos:    4 + d

      Pone en el campo fs especificado de B su Y lgico con el campo
      correspondiente del registro C. No afecta al Acarreo.











                                 Pgina 76




       B=B+1  fs  -  Incrementa B
       ---------
       fs = A                       cdigo:  E5
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba5
                                    ciclos:    3 + d

      Incrementa el campo fs especificado del registro B en uno. Ajusta el
      Acarreo.





       B=B+A  fs  -  Suma de B y A en B
       ---------
       fs = A                       cdigo:  C8
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa8
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro B la suma de s mismo y
      el correspondiente campo del registro A. Ajusta el Acarreo.





       B=B+B  fs  -  Suma de B y B en B
       ---------
       fs = A                       cdigo:  C5
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa5
                                    ciclos:    3 + d

      Dobla el campo fs especificado del registro B. Ajusta el Acarreo.





       B=B+C  fs  -  Suma de B y C en B
       ---------
       fs = A                       cdigo:  C1
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa1
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro B la suma de s mismo y
      el correspondiente campo del registro C. Ajusta el Acarreo.












                                 Pgina 77




       B=B-1  fs  -  Decrementa B
       ---------
       fs = A                       cdigo:  CD
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AaD
                                    ciclos:    3 + d

      Decrementa el campo fs especificado del registro B en uno. Ajusta el
      Acarreo.





       B=B-A  fs  -  B menos A en B
       ---------
       fs = A                       cdigo:  E8
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba8
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro B la resta de s mismo y
      el correspondiente campo del registro A. Ajusta el Acarreo.





       B=B-C  fs  -  B menos C en B
       ---------
       fs = A                       cdigo:  E1
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba1
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro B la resta de s mismo y
      el correspondiente campo del registro C. Ajusta el Acarreo.





       B=C    fs  -  Copia C en B
       ---------
       fs = A                       cdigo:  D5
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab5
                                    ciclos:    3 + d

      Copia el campo fs del registro C en el campo correspondiente del
      registro B. No afecta al Acarreo.











                                 Pgina 78




       B=C-B  fs  -  C menos B en B
       ---------
       fs = A                       cdigo:  ED
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BaD
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro B la resta inversa de s
      mismo y el correspondiente campo del registro C. Ajusta el Acarreo.





       BAEX   fs  -  Intercambia los Registros B y A
       ---------
       fs = A                       cdigo:  DC
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbC
                                    ciclos:    3 + d

      Intercambia los campos fs de B y A. No afecta al Acarreo.





       BCEX   fs  -  Intercambia los Registros B y C
       ---------
       fs = A                       cdigo:  DD
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbD
                                    ciclos:    3 + d

      Intercambia los campos fs de B y C. No afecta al Acarreo.




       BSL    fs  -  Desplazamiento a la Izquierda de B
       ---------
       fs = A                       cdigo:  F1
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb1
                                    ciclos:    3 + d

      Desplaza el contenido del campo fs especificado del registro B un
      nibble a la izquierda sin afectar al resto del registro. Se pierde el
      nibble desplazado fuera del extremo izquierdo del campo. El nuevo
      nibble de menor orden del campo es cero. No afecta al Bit Pegajoso
      (SB).











                                 Pgina 79




       BSLC      - Desplazamiento Circular a la Izquierda de B (Rotacin izq)
       ---------
                                    cdigo:  811
                                    ciclos:   21

      Desplazamiento circular a la izquierda (Rotacin a la izquierda) de un
      nibble en el registro B. Opera con los 16 dgitos. No afecta al Bit
      Pegajoso.





       BSR    fs  -  Desplazamiento a la derecha de B
       ---------
       fs = A                       cdigo:  F5
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb5
                                    ciclos:    3 + d

      Desplaza el contenido del campo fs especificado del registro B un
      nibble a la derecha sin afectar al resto del registro. Se pierde el
      nibble desplazado fuera del extremo derecho del campo pero el Bit
      Pegajoso (SB) se enciende si el nibble era distinto de cero. El nuevo
      nibble de mayor orden del campo es cero.





       BSRB      - Desplazamiento de Bit a la Derecha de B
       ---------
                                    cdigo:  81D
                                    ciclos:   20

      Desplaza el registro B un bit a la derecha. Opera con los 16 dgitos.
      El bit desplazado fuera del registro se pierde pero el Bit Pegajoso
      (SB) se enciende si era distinto de cero. El nuevo bit de orden
      superior del registro es cero.






       BSRC      - Desplazamiento Circular a la Derecha de B (Rotacin der.)
       ---------
                                    cdigo:  815
                                    ciclos:   21

      Desplazamiento circular a la derecha en B de un nibble. Opera con los
      16 dgitos. El Bit Pegajoso (SB) se enciende si el nibble desplazado
      desde la posicin de orden inferior a la de orden superior era distinto
      de cero.











                                 Pgina 80




       BUSCC     - Comando del Bus "C"
       ---------
                                    cdigo:  80B
                                    ciclos:    6

      Introduce el comando del bus del Saturno "C" en el bus del sistema
      (este comando se reserva para usarlo ms tarde). No se realiza ninguna
      otra operacin. Vea "Especificacin Hardware de la HP-71" para ms
      informacin.





       C+P+1     - Incrementa C en Uno Ms el Puntero P
       ---------
                                    cdigo:  809
                                    ciclos:    8

      El campo A del registro C se incrementa en uno ms el valor del puntero
      P. Esta instruccin siempre se ejecuta en modo HEX. Ajusta el Acarreo.





       C=-C   fs  -  Complemento a Dos de C en C
       ---------
       fs = A                       cdigo:  FA
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BbA
                                    ciclos:    3 + d

      Complementa el campo fs especificado de C. Complementa en complemento a
      dos si el modo es HEX, en complemento a diez si el modo es DEC. El
      Acarreo se enciende si el campo no es cero, si no, se apaga el Acarreo.





       C=-C-1 fs  -  Complemento a Uno de C en C
       ---------
       fs = A                       cdigo:  FE
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BbE
                                    ciclos:    3 + d

      Realiza un complemento a uno en el campo fs especificado de C. Siempre
      se apaga el Acarreo.














                                 Pgina 81




       C=0    fs  -  Hace C igual a 0
       ---------
       fs = A                       cdigo:  D2
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab2
                                    ciclos:    3 + d

      Pone el campo fs especificado de C a cero. No afecta al Acarreo.





       C=A    fs  -  Copia A en C
       ---------
       fs = A                       cdigo:  D6
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab6
                                    ciclos:    3 + d

      Copia el campo fs especificado del registro A en el campo
      correspondiente del registro C. No afecta al Acarreo.





       C=A-C  fs  -  A menos C en C
       ---------
       fs = A                       cdigo:  EE
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BaE
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro C la resta inversa de l
      mismo y el campo correspondiente del registro A. Ajusta el Acarreo.





       C=B    fs  -  Copia B en C
       ---------
       fs = A                       cdigo:  D9
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab9
                                    ciclos:    3 + d

      Copia el campo fs del registro B en el campo correspondiente del
      registro C. No afecta al Acarreo.












                                 Pgina 82




       C=C!A  fs  -  C O A en C
       ---------
       fs = A                       cdigo:  0EFA
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0EaA
                                    ciclos:    4 + d

      Pone en el campo fs del registro C su O lgico con el campo
      correspondiente del registro A. No afecta al Acarreo.





       C=C!B  fs  -  C O B en C
       ---------
       fs = A                       cdigo:  0EFD
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0EaD
                                    ciclos:    4 + d

      Pone en el campo fs del registro C su O lgico con el campo
      correspondiente del registro B. No afecta al Acarreo.





       C=C!D  fs  -  C O D en C
       ---------
       fs = A                       cdigo:  0EFF
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0EaF
                                    ciclos:    4 + d

      Pone en el campo fs del registro C su O lgico con el campo
      correspondiente del registro D. No afecta al Acarreo.





       C=C&A  fs  -  C Y A en A
       ---------
       fs = A                       cdigo:  0EF2
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea2
                                    ciclos:    4 + d

      Pone en el campo fs del registro C su Y lgico con el campo
      correspondiente del registro A. No afecta al Acarreo.











                                 Pgina 83




       C=C&B  fs  -  C Y B en C
       ---------
       fs = A                       cdigo:  0EF5
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea5
                                    ciclos:    4 + d

      Pone en el campo fs del registro C su Y lgico con el campo
      correspondiente del registro B. No afecta al Acarreo.





       C=C&D  fs  -  C Y D en C
       ---------
       fs = A                       cdigo:  0EF7
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea7
                                    ciclos:    4 + d

      Pone en el campo fs del registro C su Y lgico con el campo
      correspondiente del registro D. No afecta al Acarreo.





       C=C+1  fs  -  Incrementa C
       ---------
       fs = A                       cdigo:  E6
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba6
                                    ciclos:    3 + d

      Incrementa el campo fs especificado del registro C en uno. Ajusta el
      Acarreo.





       C=C+A  fs   - Suma de C y A en C
       ---------
       fs = A                       cdigo:  C2
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa2
                                    ciclos:    3 + d

      Pone en el campo fs del registro C la suma de l mismo con el campo
      correspondiente del registro A. Ajusta el Acarreo.











                                 Pgina 84




       C=C+B  fs  -  Suma de C y B en C
       ---------
       fs = A                       cdigo:  C9
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa9
                                    ciclos:    3 + d

      Pone en el campo fs del registro C la suma de l mismo con el campo
      correspondiente del registro B. Ajusta el Acarreo.





       C=C+C  fs   - Suma de C y C en C
       ---------
       fs = A                       cdigo:  C6
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa6
                                    ciclos:    3 + d

      Dobla el campo fs especificado del registro C. Ajusta el Acarreo.





       C=C+D  fs  -  Suma de C y D en C
       ---------
       fs = A                       cdigo:  CB
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AaB
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro C la suma de l mismo con
      el campo correspondiente del registro D. Ajusta el Acarreo.





       C=C-1  fs  -  Decrementa C
       ---------
       fs = A                       cdigo:  CE
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AaE
                                    ciclos:    3 + d

      Decrementa el campo fs especificado del registro C en uno. Ajusta el
      Acarreo.












                                 Pgina 85




       C=C-A  fs  -  C menos A en C
       ---------
       fs = A                       cdigo:  E2
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba2
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro C la resta de s mismo y
      el correspondiente campo del registro A. Ajusta el Acarreo.





       C=C-B  fs  -  C menos B en C
       ---------
       fs = A                       cdigo:  E9
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba9
                                    ciclos:    3 + d

      Pone en el campo fs del registro C la resta de l mismo con el campo
      correspondiente del registro B. Ajusta el Acarreo.





       C=C-D  fs  -  C menos D en C
       ---------
       fs = A                       cdigo:  EB
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BaB
                                    ciclos:    3 + d

      Pone en el campo fs del registro C la resta de l mismo con el campo
      correspondiente del registro D. Ajusta el Acarreo.





       C=D    fs  -  Copia D en C
       ---------
       fs = A                       cdigo:  DB
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbB
                                    ciclos:    3 + d

      Copia el campo fs del registro D en el campo correspondiente del
      registro C. No afecta al Acarreo.











                                 Pgina 86




       C=DAT0 fsd -  Carga C desde memoria
       ---------
       fs = A                       cdigo:  146
                                    ciclos:   18

       fs = B                       cdigo:  14E
                                    ciclos:   15

       fs = (P,WP,XS,X,S,M,W)       cdigo:  156a
                                    ciclos:   17 + d

       fs = d                       cdigo:  15Ex (x=d-1)
                                    ciclos:   16 + d

      La cantidad de datos (d nibbles) especificada por fsd se transferir
      desde la direccin de memoria apuntada por D0 al campo especificado del
      registro C. El nibble con la direccin ms baja se transferir al
      nibble de menor orden del campo del registro, procediendo hacia los
      nibbles de mayor orden. Si fs = d, los d nibbles se transfieren al
      registro empezando en el nibble 0. Ver la seccin "Cargar Datos Desde
      Memoria".





       C=DAT1 fsd -  Carga C desde memoria
       ---------
       fs = A                       cdigo:  147
                                    ciclos:   18

       fs = B                       cdigo:  14F
                                    ciclos:   15

       fs = (P,WP,XS,X,S,M,W)       cdigo:  157a
                                    ciclos:   17 + d

       fs = d                       cdigo:  15Fx (x=d-1)
                                    ciclos:   16 + d

      La cantidad de datos (d nibbles) especificada por fsd se transferir
      desde la direccin de memoria apuntada por D1 al campo especificado del
      registro C. El nibble con la direccin ms baja se transferir al
      nibble de menor orden del campo del registro, procediendo hacia los
      nibbles de mayor orden. Si fs = d, los d nibbles se transfieren al
      registro empezando en el nibble 0. Ver la seccin "Cargar Datos Desde
      Memoria".



















                                 Pgina 87




       C=ID      - Solicita la ID del chip
       ---------
                                    cdigo:  806
                                    ciclos:   11

      El chip que tiene su lnea DAISY-IN alta y su bandera de configuracin
      baja enva su registro ID de 5 nibbles al bus del sistema y se cargar
      en los 5 nibbles de orden inferior (campo A) del registro C.





       C=IN      - Carga C con IN
       ---------
                                    cdigo:  803
                                    ciclos:    7

      Carga los 4 nibbles de menor orden del registro C con el contenido del
      registro de Entrada.





       C=P    n    - Copia el Puntero P en el Nibble n de C
       ---------
                                    cdigo:  80Cn
                                    ciclos:    6

      Copia el puntero P en el registro C en la posicin del dgito
      especificada por n.





       C=R0      - Copia R0 en C
       ---------
                                    cdigo:  118
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R0 en el registro de
      trabajo C.





       C=R1      - Copia R1 en C
       ---------
                                    cdigo:  119
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R1 en el registro de
      trabajo C.










                                 Pgina 88




       C=R2      - Copia R2 en C
       ---------
                                    cdigo:  11A
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R2 en el registro de
      trabajo C.





       C=R3      - Copia R3 en C
       ---------
                                    cdigo:  11B
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R3 en el registro de
      trabajo C.





       C=R4      - Copia R4 en C
       ---------
                                    cdigo:  11C
                                    ciclos:   19

      Se copia el contenido del registro auxiliar R4 en el registro de
      trabajo C.





       C=RSTK    - Baja la pila a C
       ---------
                                    cdigo:  07
                                    ciclos:    8

      Baja la direccin de la cima de la pila de retornos hardware, colocando
      la direccin en los 5 nibbles inferiores (campo A) del registro C. Los
      nibbles de orden superior de C no cambian. A la vez que se baja la
      direccin de la pila de retornos se inserta un direccin cero en el
      fondo de la pila. Compararlo con el mnemnico RTN.




















                                 Pgina 89




       C=ST      - Estatus en C
       ---------
                                    cdigo:  09
                                    ciclos:    6

      Copia los 12 bits de menor orden del registro de estado en los 12 bits
      de menor orden (campo X) del registro C.





       CAEX   fs  -  Intercambia los Registros C y A
       ---------
       fs = A                       cdigo:  DE
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbE
                                    ciclos:    3 + d

      Intercambia los campos fs de los registros C y A. No afecta al Acarreo.





       CBEX   fs  -  Intercambia los Registros C y B
       ---------
       fs = A                       cdigo:  DD
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbD
                                    ciclos:    3 + d

      Intercambia los campos fs de los registros C y B. No afecta al Acarreo.





       CD0EX     - Intercambia C y D0 (nibs 0-4)
       ---------
                                    cdigo:  136
                                    ciclos:    8

      Intercambia el campo A del registro C con el puntero de Datos D0. No
      afecta al Acarreo.



















                                 Pgina 90




       CD0XS     - Intercambio corto de C y D0 (nibs 0-3)
       ---------
                                    cdigo:  13E
                                    ciclos:    7
      Intercambia los 4 nibbles inferiores de C con los 4 nibbles inferiores
      del puntero de Datos D0. No afecta al Acarreo.





       CD1EX     - Intercambia C y D1 (nibs 0-4)
       ---------
                                    cdigo:  137
                                    ciclos:    8

      Intercambia el campo A del registro C con el puntero de Datos D1. No
      afecta al Acarreo.





       CD1XS     - Intercambio corto de C y D1 (nibs 0-3)
       ---------
                                    cdigo:  13F
                                    ciclos:    7

      Intercambia los 4 nibbles inferiores de C con los 4 nibbles inferiores
      del puntero de Datos D1. No afecta al Acarreo.





       CDEX   fs  -  Intercambia los Registros C y D
       ---------
       fs = A                       cdigo:  DF
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbF
                                    ciclos:    3 + d

      Intercambia los campos fs de los registros C y D. No afecta al Acarreo.






















                                 Pgina 91




       CLRHST    - Apaga los bits del Estado del Hardware
       ---------
                                    cdigo:  82F
                                    ciclos:    3

      Apaga los 4 bits del Estado del Hardware XM, SB, SR y MP. Observa que
      el cdigo es en realidad 82x, donde x es meramente una mscara para los
      bits del Estado del Hardware que se apagarn, como sigue:

          bit 0 -  Bit de Falta Mdulo Externo   (ver XM=0 mnemnico)
          bit 1 -  Bit Pegajoso                  (ver SB=0 mnemnico)
          bit 2 -  Bit de Solicitud de Servicio  (ver SR=0 mnemnico)
          bit 3 -  Bit de Mdulo Extrado        (ver MP=0 mnemnico)

      Por ejemplo, el cdigo 829 apaga XM y MP. Aunque no hay ningn
      mnemnico para esto, se puede insertar el cdigo (de la operacin) en
      el cdigo (del programa) usando, por ejemplo, NIBHEX 829.




       CLRST     - Apaga el Estado del Programa
       ---------
                                    cdigo:  08
                                    ciclos:    6

      Apaga los 12 bits de orden menor (S0 hasta S11) del registro de Estado
      del Programa ST.





       CONFIG    - Configura
       ---------
                                    cdigo:  805
                                    ciclos:   11

      Copia los 5 nibbles de menor orden (campo A) del registro C en el
      registro de configuracin del chip que tiene su lnea DAISY-IN alta y
      su bandera de configuracin baja. Vea "Especificacin Hardware de la
      HP-71" para informacin.





       CPEX   n    - Intercambia el Nibble n de C con el Puntero P
       ---------
                                    cdigo:  80Fn
                                    ciclos:    6

      Intercambia el puntero P con el dgito n del registro C.













                                 Pgina 92




       CR0EX     - Intercambia C y R0
       ---------
                                    cdigo:  128
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo C y el registro
      auxiliar R0.





       CR1EX     - Intercambia C y R1
       ---------
                                    cdigo:  129
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo C y el registro
      auxiliar R1.





       CR2EX     - Intercambia C y R2
       ---------
                                    cdigo:  12A
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo C y el registro
      auxiliar R2.





       CR3EX     - Intercambia C y R3
       ---------
                                    cdigo:  12B
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo C y el registro
      auxiliar R3.























                                 Pgina 93




       CR4EX     - Intercambia C y R4
       ---------
                                    cdigo:  12C
                                    ciclos:   19

      Intercambia los contenidos del registro de trabajo C y el registro
      auxiliar R4.





       CSL    fs  -  Desplazamiento a la Izquierda de C
       ---------
       fs = A                       cdigo:  F2
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb2
                                    ciclos:    3 + d

      Desplaza el contenido del campo fs especificado del registro C un
      nibble a la izquierda sin afectar al resto del registro. Se pierde el
      nibble desplazado fuera del extremo izquierdo del campo. El nuevo
      nibble de menor orden del campo es cero. No afecta al Bit Pegajoso
      (SB).





       CSLC      - Desplazamiento Circular a la Izquierda de C (Rotacin izq)
       ---------
                                    cdigo:  812
                                    ciclos:   21

      Desplazamiento circular a la izquierda (Rotacin a la izquierda) de un
      nibble en el registro C. Opera con los 16 dgitos. No afecta al Bit
      Pegajoso.




























                                 Pgina 94




       CSR    fs  -  Desplazamiento a la derecha de C
       ---------
       fs = A                       cdigo:  F6
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb6
                                    ciclos:    3 + d

      Desplaza el contenido del campo fs especificado del registro C un
      nibble a la derecha sin afectar al resto del registro. Se pierde el
      nibble desplazado fuera del extremo derecho del campo pero el Bit
      Pegajoso (SB) se enciende si el nibble era distinto de cero. El nuevo
      nibble de mayor orden del campo es cero.





       CSRB      - Desplazamiento de Bit a la Derecha de C
       ---------
                                    cdigo:  81E
                                    ciclos:   20

      Desplaza el registro C un bit a la derecha. Opera con los 16 dgitos.
      El bit desplazado fuera del registro se pierde pero el Bit Pegajoso
      (SB) se enciende si era distinto de cero. El nuevo bit de orden
      superior del registro es cero.





       CSRC      - Desplazamiento Circular a la Derecha de C (Rotacin der.)
       ---------
                                    cdigo:  816
                                    ciclos:   21

      Desplazamiento circular a la derecha en C de un nibble. Opera con los
      16 dgitos. El Bit Pegajoso (SB) se enciende si el nibble desplazado
      desde la posicin de orden inferior a la de orden superior era distinto
      de cero.







       CSTEX     - Intercambia el Estado
       ---------
                                    cdigo:  0B
                                    ciclos:    6

      Intercambia los 12 bits de menor orden (S0 hasta S11) del registro de
      Estado del Programa ST con los 12 bits de menor orden del registro C.











                                 Pgina 95




       D0=(2)  nn    - Carga de 2 Nibbles en D0
       ------------
                                    cdigo:  19nn
                                    ciclos:    4

      Carga los dos nibbles de menor orden de D0 con nn. Los nibbles
      superiores de D0 permanecen sin cambios. El ensamblador ignora
      cualquier desbordamiento. Los dgitos ensamblados de nn se almacenan en
      el cdigo en orden inverso de modo que cuando se ejecute la instruccin
      se cargarn los datos en el registro con la orientacin pretendida. Ver
      la seccin "Cargar Datos Desde Memoria".





       D0=(4)  nnnn  - Carga de 4 Nibbles en D0
       ------------
                                    cdigo:  1Annnn
                                    ciclos:    6

      Carga los cuatro nibbles de menor orden de D0 con nnnn. Los nibbles
      superiores de D0 permanecen sin cambios. El ensamblador ignora
      cualquier desbordamiento. Los dgitos ensamblados de nnnn se almacenan
      en el cdigo en orden inverso de modo que cuando se ejecute la
      instruccin se cargarn los datos en el registro con la orientacin
      pretendida. Ver la seccin "Cargar Datos Desde Memoria".





       D0=(5)  nnnnn - Carga de 5 Nibbles en D0
       ------------
                                    cdigo:  1Bnnnnn
                                    ciclos:    7

      Carga los cinco nibbles de menor orden de D0 con nnnnn. Los nibbles
      superiores de D0 permanecen sin cambios. El ensamblador ignora
      cualquier desbordamiento. Los dgitos ensamblados de nnnnn se almacenan
      en el cdigo en orden inverso de modo que cuando se ejecute la
      instruccin se cargarn los datos en el registro con la orientacin
      pretendida. Ver la seccin "Cargar Datos Desde Memoria".























                                 Pgina 96




       D0=A      - Copia A en D0 (nibs 0-4)
       ---------
                                    cdigo:  130
                                    ciclos:    8

      Se copia el campo A del registro A en el registro del puntero de Datos
      D0. No afecta al Acarreo.





       D0=AS      - Copia corta de A en D0 (nibs 0-3)
       ---------
                                    cdigo:  138
                                    ciclos:    7

      Se copian los 4 nibbles de menor orden de A en los 4 nibbles de menor
      orden del puntero de Datos D0. No afecta al Acarreo.





       D0=C      - Copia C en D0 (nibs 0-4)
       ---------
                                    cdigo:  134
                                    ciclos:    8

      Se copia el campo A del registro C en el registro del puntero de Datos
      D0. No afecta al Acarreo.





       D0=CS      - Copia corta de C en D0 (nibs 0-3)
       ---------
                                    cdigo:  13C
                                    ciclos:    7

      Se copian los 4 nibbles de menor orden de C en los 4 nibbles de menor
      orden del puntero de Datos D0. No afecta al Acarreo.























                                 Pgina 97




       D0=D0+  n   - Suma n a D0 (1<=n<=16)
       ---------
                                    cdigo:  16x (x=n-1)
                                    ciclos:    7

      Incrementa D0 en n. Esta instruccin siempre se ejecuta en modo HEX.
      Ajusta el Acarreo.






       D0=D0-  n   - Resta n de D0 (1<=n<=16)
       ---------
                                    cdigo:  18x (x=n-1)
                                    ciclos:    7

      Decrementa D0 en n. Esta instruccin siempre se ejecuta en modo HEX.
      Ajusta el Acarreo.




       D0=HEX hh  - Carga D0 con la constante hex hh
       ---------
                                    cdigo:  19hh
                                    ciclos:     4

      Carga los dos nibbles de menor orden de D0 con la constante hex hh. Los
      nibbles superiores de D0 permanecen sin cambios. Los dgitos de hh se
      almacenan en el cdigo en orden inverso de modo que cuando se ejecute
      la instruccin se cargarn los datos en el registro con la orientacin
      pretendida. Ver la seccin "Cargar Datos Desde Memoria".





       D0=HEX hhhh  - Carga D0 con la constante hex hhhh
       -----------
                                    cdigo:  1Ahhhh
                                    ciclos:     6

      Carga los cuatro nibbles de menor orden de D0 con la constante hex
      hhhh. Los nibbles superiores de D0 permanecen sin cambios. Los dgitos
      de hhhh se almacenan en el cdigo en orden inverso de modo que cuando
      se ejecute la instruccin se cargarn los datos en el registro con la
      orientacin pretendida. Ver la seccin "Cargar Datos Desde Memoria".

















                                 Pgina 98




       D0=HEX hhhhh  - Carga D0 con la constante hex hhhhh
       ------------
                                    cdigo:  1Bhhhhh
                                    ciclos:    7

      Carga los cinco nibbles de menor orden de D0 con la constante hex
      hhhhh. Los nibbles superiores de D0 permanecen sin cambios. Los dgitos
      de hhhhh se almacenan en el cdigo en orden inverso de modo que cuando
      se ejecute la instruccin se cargarn los datos en el registro con la
      orientacin pretendida. Ver la seccin "Cargar Datos Desde Memoria".






       D1=(2)  nn    - Carga 2 Nibbles en D1
       ---------
                                    cdigo:  1Dnn
                                    ciclos:    4

      Carga los dos nibbles de menor orden de D1 con nn. Los nibbles
      superiores de D1 permanecen sin cambios. El ensamblador ignora
      cualquier desbordamiento. Los dgitos ensamblados de nn se almacenan en
      el cdigo en orden inverso de modo que cuando se ejecute la instruccin
      se cargarn los datos en el registro con la orientacin pretendida. Ver
      la seccin "Cargar Datos Desde Memoria".





       D1=(4)  nnnn  - Carga de 4 Nibbles en D1
       ------------
                                    cdigo:  1Ennnn
                                    ciclos:    6

      Carga los cuatro nibbles de menor orden de D1 con nnnn. Los nibbles
      superiores de D1 permanecen sin cambios. El ensamblador ignora
      cualquier desbordamiento. Los dgitos ensamblados de nnnn se almacenan
      en el cdigo en orden inverso de modo que cuando se ejecute la
      instruccin se cargarn los datos en el registro con la orientacin
      pretendida. Ver la seccin "Cargar Datos Desde Memoria".























                                 Pgina 99




       D1=(5)  nnnnn - Carga 5 Nibbles en D1
       ------------
                                    cdigo:  1Fnnnnn
                                    ciclos:    7

      Carga los cinco nibbles de menor orden de D1 con nnnnn. Los nibbles
      superiores de D1 permanecen sin cambios. El ensamblador ignora
      cualquier desbordamiento. Los dgitos ensamblados de nnnnn se almacenan
      en el cdigo en orden inverso de modo que cuando se ejecute la
      instruccin se cargarn los datos en el registro con la orientacin
      pretendida. Ver la seccin "Cargar Datos Desde Memoria".





       D1=A      - Copia A en D1 (nibs 0-4)
       ---------
                                    cdigo:  131
                                    ciclos:    8

      Se copia el campo A del registro A en el registro del puntero de Datos
      D1. No afecta al Acarreo.





       D1=AS     - Copia corta de A en D1 (nibs 0-3)
       ---------
                                    cdigo:  139
                                    ciclos:    7

      Se copian los 4 nibbles de menor orden de A en los 4 nibbles de menor
      orden del puntero de Datos D1. No afecta al Acarreo.





       D1=C       - Copia C en D1 (nibs 0-4)
       ---------
                                    cdigo:  135
                                    ciclos:    8

      Se copia el campo A del registro C en el registro del puntero de Datos
      D1. No afecta al Acarreo.



















                                 Pgina 100




       D1=CS     - Copia corta de C en D1 (nibs 0-3)
       ---------
                                    cdigo:  13D
                                    ciclos:    7

      Se copian los 4 nibbles de menor orden de C en los 4 nibbles de menor
      orden del puntero de Datos D1. No afecta al Acarreo.





       D1=D1+  n  - Suma n a D1 (1<=n<=16)
       ---------
                                    cdigo:  17x (x=n-1)
                                    ciclos:    7

      Incrementa D1 en n. Esta instruccin siempre se ejecuta en modo HEX.
      Ajusta el Acarreo.





       D1=D1-  n  - Resta n a D1 (1<=n<=16)
       ---------
                                    cdigo:  1Cx (x=n-1)
                                    ciclos:    7

      Decrementa D1 en n. Esta instruccin siempre se ejecuta en modo HEX.
      Ajusta el Acarreo.





       D1=HEX hh  - Carga D1 con la constante hex hh
       ---------
                                    cdigo:  1Dhh
                                    ciclos:     4

      Carga los dos nibbles de menor orden de D1 con la constante hex hh. Los
      nibbles superiores de D1 permanecen sin cambios. Los dgitos de hh se
      almacenan en el cdigo en orden inverso de modo que cuando se ejecute
      la instruccin se cargarn los datos en el registro con la orientacin
      pretendida. Ver la seccin "Cargar Datos Desde Memoria".




















                                 Pgina 101




       D1=HEX hhhh  - Carga D1 con la constante hex hhhh
       -----------
                                    cdigo:  1Ehhhh
                                    ciclos:     6

      Carga los cuatro nibbles de menor orden de D1 con la constante hex
      hhhh. Los nibbles superiores de D1 permanecen sin cambios. Los dgitos
      de hhhh se almacenan en el cdigo en orden inverso de modo que cuando
      se ejecute la instruccin se cargarn los datos en el registro con la
      orientacin pretendida. Ver la seccin "Cargar Datos Desde Memoria".





       D1=HEX hhhhh  - Carga D1 con la constante hhhhh
       ------------
                                    cdigo:  1Fhhhhh
                                    ciclos:      7

      Carga los cinco nibbles de menor orden de D1 con la constante hex
      hhhhh. Los nibbles superiores de D1 permanecen sin cambios. Los dgitos
      de hhhhh se almacenan en el cdigo en orden inverso de modo que cuando
      se ejecute la instruccin se cargarn los datos en el registro con la
      orientacin pretendida. Ver la seccin "Cargar Datos Desde Memoria".





       D=-D   fs  -  Complemento a dos de D en D
       ---------
       fs = A                       cdigo:  FB
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BbB
                                    ciclos:    3 + d

      Complementa el campo fs especificado de D. El complemento es un
      complemento a dos si el modo es HEX o un complemento a diez si el modo
      es DEC. El Acarreo se enciende si el campo no es cero, si no, se apaga
      el Acarreo.
























                                 Pgina 102




       D=-D-1 fs  -  Complemento a uno de D en D
       ---------
       fs = A                       cdigo:  FF
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BbF
                                    ciclos:    3 + d

      Realiza un complemento a uno en el campo fs especificado de D. El
      Acarreo siempre se apaga.





       D=0    fs  -  Hace D igual a 0
       ---------
       fs = A                       cdigo:  D3
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab3
                                    ciclos:    3 + d

      Pone el campo fs especificado de D a cero. No afecta al Acarreo.





       D=C    fs  -  Copia C en D
       ---------
       fs = A                       cdigo:  D7
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ab7
                                    ciclos:    3 + d

      Copia el campo fs del registro C en el campo correspondiente del
      registro D. No afecta al Acarreo.



























                                 Pgina 103




       D=C-D  fs  -  C menos D en D
       ---------
       fs = A                       cdigo:  ED
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  BaD
                                    ciclos:    3 + d

      Pone en el campo fs especificado del registro D la resta inversa de s
      mismo y el campo correspondiente del registro C. Ajusta el Acarreo.





       D=D!C  fs  -  D O C en D
       ---------
       fs = A                       cdigo:  0EFB
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0EaB
                                    ciclos:    4 + d

      Pone en el campo fs del registro D su O lgico con el campo
      correspondiente del registro C. No afecta al Acarreo.





       D=D&C  fs  -  D Y C en D
       ---------
       fs = A                       cdigo:  0EF3
                                    ciclos:    4 + d

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  0Ea3
                                    ciclos:    4 + d

      Pone en el campo fs del registro D su Y lgico con el campo
      correspondiente del registro C. No afecta al Acarreo.


























                                 Pgina 104




       D=D+1  fs  -  Incrementa D
       ---------
       fs = A                       cdigo:  E7
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba7
                                    ciclos:    3 + d

      Incrementa el campo fs especificado del registro D en uno. Ajusta el
      Acarreo.





       D=D+C  fs  -  Suma de D y C en D
       ---------
       fs = A                       cdigo:  C3
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa3
                                    ciclos:    3 + d

      Pone en el campo fs del registro D la suma de l mismo y el campo
      correspondiente del registro C. Ajusta el Acarreo





       D=D+D  fs  -  Suma de D y D en D

       ---------
       fs = A                       cdigo:  C7
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Aa7
                                    ciclos:    3 + d

      Dobla el campo fs especificado del registro D. Ajusta el Acarreo.


























                                 Pgina 105




       D=D-1  fs  -  Decrementa D
       ---------
       fs = A                       cdigo:  CF
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AaF
                                    ciclos:    3 + d

      Decrementa el campo fs especificado del registro D en uno. Ajusta el
      Acarreo.





       D=D-C  fs  -  D menos C en D
       ---------
       fs = A                       cdigo:  E3
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Ba3
                                    ciclos:    3 + d

      Pone en el campo fs del registro D la resta de l mismo y el campo
      correspondiente del registro C. Ajusta el Acarreo





       DAT0=A fsd -  Carga la memoria desde A
       ---------
       fs = A                       cdigo:  140
                                    ciclos:   17

       fs = B                       cdigo:  148
                                    ciclos:   14

       fs = (P,WP,XS,X,S,M,W)       cdigo:  150a
                                    ciclos:   16 + d

       fs = d                       cdigo:  158x (x=d-1)
                                    ciclos:   15 + d

      La cantidad de datos (d nibbles) especificada por fsd se escribirn en
      la direccin de memoria apuntada por D0 desde el campo especificado del
      registro A. El nibble de menor orden del campo del registro se
      escribir en el nibble de memoria direccionado con la direccin menor,
      procediendo hacia los nibbles de mayor orden. Si fs = d, se escriben d
      nibbles a memoria empezando desde el nibble 0 del registro. Vea la
      seccin "Almacenar Datos En Memoria".















                                 Pgina 106




       DAT0=C fsd  -  Almacena en memoria desde C
       ---------
       fs = A                       cdigo:  144
                                    ciclos:   17

       fs = B                       cdigo:  14C
                                    ciclos:   14

       fs = (P,WP,XS,X,S,M,W)       cdigo:  154a
                                    ciclos:   16 + d

       fs = d                       cdigo:  15Cx (x=d-1)
                                    ciclos:   15 + d

      La cantidad de datos (d nibbles) especificada por fsd se escribirn en
      la direccin de memoria apuntada por D0 desde el campo especificado del
      registro C. El nibble de menor orden del campo del registro se
      escribir en el nibble de memoria direccionado con la direccin menor,
      procediendo hacia los nibbles de mayor orden. Si fs = d, se escriben d
      nibbles a memoria empezando desde el nibble 0 del registro. Vea la
      seccin "Almacenar Datos En Memoria".





       DAT1=A fs  -  Almacena en memoria desde A
       ---------
       fs = A                       cdigo:  141
                                    ciclos:   17

       fs = B                       cdigo:  149
                                    ciclos:   14

       fs = (P,WP,XS,X,S,M,W)       cdigo:  151a
                                    ciclos:   16 + d

       fs = d                       cdigo:  159x (x=d-1)
                                    ciclos:   15 + d

      La cantidad de datos (d nibbles) especificada por fsd se escribirn en
      la direccin de memoria apuntada por D1 desde el campo especificado del
      registro A. El nibble de menor orden del campo del registro se
      escribir en el nibble de memoria direccionado con la direccin menor,
      procediendo hacia los nibbles de mayor orden. Si fs = d, se escriben d
      nibbles a memoria empezando desde el nibble 0 del registro. Vea la
      seccin "Almacenar Datos En Memoria".



















                                 Pgina 107




       DAT1=C fsd -  Almacena en memoria desde C
       ---------
       fs = A                       cdigo:  145
                                    ciclos:   17

       fs = B                       cdigo:  14D
                                    ciclos:   14

       fs = (P,WP,XS,X,S,M,W)       cdigo:  155a
                                    ciclos:   16 + d

       fs = d                       cdigo:  15Dx (x=d-1)
                                    ciclos:   15 + d

      La cantidad de datos (d nibbles) especificada por fsd se escribirn en
      la direccin de memoria apuntada por D1 desde el campo especificado del
      registro C. El nibble de menor orden del campo del registro se
      escribir en el nibble de memoria direccionado con la direccin menor,
      procediendo hacia los nibbles de mayor orden. Si fs = d, se escriben d
      nibbles a memoria empezando desde el nibble 0 del registro. Vea la
      seccin "Almacenar Datos En Memoria".





       DCEX   fs  -  Intercambia los Registros D y C
       ---------
       fs = A                       cdigo:  DF
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  AbF
                                    ciclos:    3 + d

      Intercambia los campos fs de los registros D y C. No afecta el Acarreo.





       DSL    fs  -  Desplazamiento a la Izquierda de D
       ---------
       fs = A                       cdigo:  F3
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb3
                                    ciclos:    3 + d

      Desplaza el contenido del campo fs especificado del registro D un
      nibble a la izquierda sin afectar al resto del registro. Se pierde el
      nibble desplazado fuera del extremo izquierdo del campo. El nuevo
      nibble de menor orden del campo es cero. No afecta al Bit Pegajoso
      (SB).













                                 Pgina 108




       DSLC      - Desplazamiento Circular a la Izquierda de D (Rotacin izq)
       ---------
                                    cdigo:  813
                                    ciclos:   21

      Desplazamiento circular a la izquierda (Rotacin a la izquierda) de un
      nibble en el registro D. Opera con los 16 dgitos. No afecta al Bit
      Pegajoso.





       DSR    fs  -  Desplazamiento a la derecha de D
       ---------
       fs = A                       cdigo:  F7
                                    ciclos:    7

       fs = (P,WP,XS,X,S,M,B,W)     cdigo:  Bb7
                                    ciclos:    3 + d

      Desplaza el contenido del campo fs especificado del registro D un
      nibble a la derecha sin afectar al resto del registro. Se pierde el
      nibble desplazado fuera del extremo derecho del campo pero el Bit
      Pegajoso (SB) se enciende si el nibble era distinto de cero. El nuevo
      nibble de mayor orden del campo es cero.





       DSRB      - Desplazamiento de Bit a la Derecha de D
       ---------
                                    cdigo:  81F
                                    ciclos:   20

      Desplaza el registro D un bit a la derecha. Opera con los 16 dgitos.
      El bit desplazado fuera del registro se pierde pero el Bit Pegajoso
      (SB) se enciende si era distinto de cero. El nuevo bit de orden
      superior del registro es cero.





       DSRC      - Desplazamiento Circular a la Derecha de D (Rotacin der.) 
       ---------
                                    cdigo:  817
                                    ciclos:   21

      Desplazamiento circular a la derecha en D de un nibble. Opera con los
      16 dgitos. El Bit Pegajoso (SB) se enciende si el nibble desplazado
      desde la posicin de orden inferior a la de orden superior era distinto
      de cero.












                                 Pgina 109




       GOC    etiqueta - "Ir a" en funcin del Acarreo
       ----------
                                    cdigo:  4aa (Acarreo=0)
                                    ciclos:   10 (GO)
                                               3 (NO)

      Salto relativo corto a la etiqueta si el Acarreo est encendido. La
      etiqueta debe estar en el margen:

       direcc - 128  <=  etiqueta  <=  direcc + 127

      donde direcc es la direccin del segundo nibble del cdigo. El offset
      de la direccin aa est en forma de complemento a dos y es relativo a
      direcc.





       GOLONG etiqueta  - "Ir a" Largo
       -------------
                                    cdigo:  8Caaaa
                                    ciclos:   14

      Salto relativo largo incondicional a la etiqueta. La etiqueta debe
      estar en el margen:

       direcc - 32768  <=  etiqueta  <=  direcc + 32767

      donde direcc es la direccin del tercer nibble del cdigo. El offset de
      la direccin aaaa est en forma de complemento a dos y es relativo a
      direcc.





       GONC   etiqueta - "Ir a" en funcin del contrario del Acarreo
       ----------
                                    cdigo:  5aa (Acarreo=1)
                                    ciclos:   10 (GO)
                                               3 (NO)

      Salto corto relativo a la etiqueta si el Acarreo est apagado. La
      etiqueta debe estar en el margen:

       direcc - 128  <=  etiqueta  <=  direcc + 127

      donde direcc es la direccin del segundo nibble del cdigo. El offset
      de la direccin aa est en forma de complemento a dos y es relativo a
      direcc.















                                 Pgina 110




       GOSBVL etiqueta   - Gosub ("ir a subrutina") muy largo a una etiqueta
       -------------
                                    cdigo:  8Faaaaa
                                    ciclos:   15

      Salto absoluto a subrutina a aaaaa, que es la direccin absoluta de la
      etiqueta. Ver el mnemnico GOSUB.





       GOSUB  etiqueta - Gosub ("ir a subrutina") a etiqueta
       ------------
                                    cdigo:  7aaa
                                    ciclos:   12

      Salto relativo a subrutina a la etiqueta. La etiqueta debe estar en el
      margen:

                   direcc - 2048 <= etiqueta <= direcc + 2047

      donde direcc es la direccin de inicio de la siguiente instruccin. El
      offset de la direccin aaa est en forma de complemento a dos y es
      relativo a direcc.

      Como en todos los saltos a subrutinas, la direccin (direcc) de la
      instruccin que sigue al cdigo gosub se sube a la pila de retornos
      hardware, de modo que cuando se ejecuta el correspondiente retorno, el
      control contina con la instruccin en la direccin direcc.

      Cuando se sube la direccin de retorno en la pila de retornos, se
      descarta la direccin del fondo de la pila. Por tanto, la pila de
      retornos siempre contiene 8 direcciones y si las subidas superan a las
      bajadas en 8 niveles, se pierden las direcciones de retorno de ms al
      fondo. Ya que el sistema de interrupciones requiere un nivel para
      procesar las interrupciones, solo se pueden usar 7 niveles de la pila
      de retornos por el cdigo que se debe ejecutar cuando estn permitidas
      las interrupciones. Ver el mnemnico RTN para ms informacin.





       GOSUBL etiqueta   - Gosub ("ir a subrutina") largo a etiqueta
       -------------
                                    cdigo:  8Eaaaa
                                    ciclos:   15

      Salto relativo a subrutina a la etiqueta. La etiqueta debe estar en el
      margen:

                  direcc - 32768  <= etiqueta <= direcc + 32767

      donde direcc es la direccin de inicio de la siguiente instruccin. El
      offset de la direccin aaaa est en forma de complemento a dos y es
      relativo a direcc. Ver el mnemnico GOSUB.









                                 Pgina 111




       GOTO   etiqueta - Salto relativo
       -----------
                                    cdigo:  6aaa
                                    ciclos:   11

      Salto relativo incondicional a la etiqueta. La etiqueta debe estar en
      el margen:

       direcc - 2048  <=  etiqueta  <=  direcc + 2047

      donde direcc es la direccin del segundo nibble del cdigo. El offset
      de la direccin aaa est en forma de complemento a dos y es relativo a
      direcc.





       GOVLNG etiqueta  - Salto muy largo
       -------------
                                    cdigo:  8Daaaaa
                                    ciclos:   14

      Salto incondicional a aaaaa, que es la direccin absoluta de la
      etiqueta.





       GOYES  etiqueta  - Salto si el Test es Cierto
       -----
                                    cdigo:  yy
                                    ciclos:  incluidos en el tiempo del ciclo
                                             del mnemnico Test que le
                                             acompaa.

      GOYES es un mnemnico para especificar parte del cdigo de un test de
      la CPU. GOYES debe ir siempre a continuacin de un mnemnico de test.
      Si la condicin del test se cumple, se lleva a cabo un salto a la
      etiqueta con el Acarreo encendido. La etiqueta debe estar en el margen

                    direcc - 128 <= etiqueta <= direcc + 127

      donde direcc es la direccin de inicio del offset del salto yy. Si la
      condicin del test no se cumple, el Acarreo se apaga y el control pasa
      a la siguiente instruccin. Comparlo con RTNYES.



















                                 Pgina 112




       INTOFF     - Interrupciones Apagadas
       ----------
                                    cdigo:  808F
                                    ciclos:    5

      Deshabilita el sistema de interrupciones del teclado.






       INTON    - Interrupciones Encendidas
       --------
                                    cdigo:  8080
                                    ciclos:    5

      Habilita el sistema de interrupciones del teclado. Ver "Especificacin
      Hardware de la HP-71" para ms informacin.





       LC(m)  n..n - Carga C con una constante (1<=m<=6)
       -----------
                                    cdigo:  3xn..n (x=m-1)
                                    ciclos:    3+m

      Carga m dgitos de la expresin n..n en el registro C empezando en la
      posicin del puntero P y procediendo hacia los nibbles de orden mayor,
      con la capacidad de "enrollarse" en el registro. Ver la seccin "Cargar
      Datos Desde Memoria"

      N.T.> Ver la seccin "Instrucciones_de_Carga_de_Constantes" para la
            explicacin del trmino "enrollarse"



       LCASC  A..A  - Carga C con una constante ASCII
       -------------
                                    cdigo:  3mc..c
                                               (m    = 2*(# de caracteres)-1;
                                                c..c = cdigos ASCII)
                                    ciclos:    3+2*(# de caracteres)

      Carga hasta 8 caracteres ASCII en el registro C empezando en la
      posicin del puntero P y procediendo hacia los nibbles de orden mayor,
      con la capacidad de "enrollarse" en el registro. Cada A representa un
      carcter ASCII. Los caracteres ASCII se almacenan en el cdigo en orden
      inverso de modo que cuando se ejecuta la instruccin los datos se
      cargarn en el registro en la orientacin pretendida. Ver la seccin
      "Cargar Datos Desde Memoria".

      N.T.> Ver la seccin "Instrucciones_de_Carga_de_Constantes" para la
            explicacin del trmino "enrollarse"










                                 Pgina 113




       LCHEX  h..h - Carga C con una constante hex
       -----------
                                    cdigo:  3nh..h (n=# de dgitos-1)
                                    ciclos:    4+n

      Carga hasta 16 dgitos hex en el registro C empezando en la posicin
      apuntada por el puntero P y procediendo hacia los nibbles de mayor
      orden con la capacidad de "enrollarse" en el registro. Los dgitos hex
      se almacenan en el cdigo en orden inverso de modo que cuando se
      ejecuta la instruccin los datos se cargarn en el registro con la
      orientacin pretendida. Ver la seccin "Cargar Datos Desde Memoria".

      N.T.> Ver la seccin "Instrucciones_de_Carga_de_Constantes" para la
            explicacin del trmino "enrollarse"



       MP=0      - Apaga el bit de Mdulo Extrado (MP)
       ---------
                                    cdigo:  828
                                    ciclos:    3

      Apaga el bit del Mdulo Extrado (MP) y pone baja la lnea de
      interrupcin de Mdulo Extrado. Ver el mnemnico CLRHST.





       NOP3       - Sin-operacin de tres nibbles
       ----
                                    cdigo:  420
                                    ciclos:  10 (GO/RTNYES)
                                              3 (NO)

      Este mnemnico genera un GOC a la siguiente instruccin, saltndose
      efectivamente 3 nibbles.





























                                 Pgina 114




       NOP4       - Sin-operacin de cuatro nibbles
       ----
                                    cdigo:  6300
                                    ciclos:   11

      Este mnemnico genera un GOTO a la siguiente instruccin, saltndose
      efectivamente cuatro nibbles.





       NOP5       - Sin-operacin de cinco nibbles
       ----
                                    cdigo:  64000
                                    ciclos:    11

      Este mnemnico genera un GOTO relativo a +4 nibbles. El quinto nibble
      del cdigo es para ocupar sitio y se salta sobre l. El mnemnico se
      salta efectivamente cinco nibbles.





       OUT=C      - Carga los 3 nibbles de OR (Registro de Salida)
       -----
                                    cdigo:  801
                                    ciclos:    6

      Todos los nibbles del Registro de Salida se cargan con los tres nibbles
      de menor orden de C (campo X).







       OUT=CS  - Carga 1 nibble de OR (Registro de Salida)
       ------
                                    cdigo:  800
                                    ciclos:    4

      Se carga el nibble menos significativo del registro de Salida con el
      nibble menos significativo del registro C.




















                                 Pgina 115




       PC=(A)      - Salta (Pone el PC) indirectamente a travs del campo A
       ------        del registro A
       
                                    cdigo:  808C
                                    ciclos:    23

      Esta instruccin causa que la CPU salte a la direccin apuntada por la
      memoria en la direccin especificada por el campo A del registro A. En
      forma simblica, la operacin es PC=mem(A[A]). Este cdigo no est
      disponible en la versin 1LF2 de la CPU Saturno.





       P=C    n    - Copia en el puntero P el Nibble n de C
       ---------
                                    cdigo:  80Dn
                                    ciclos:    6

      Copia el nibble n del registro C en el puntero P.





       P=P+1     - Incrementa el puntero P
       ---------
                                    cdigo:  0C
                                    ciclos:    3

      Incrementa el puntero P. Si P se incrementa pasado F se pondr
      automticamente a 0. Esta instruccin siempre se ejecuta en modo HEX.
      Ajusta el Acarreo.





       P=P-1     - Decrementa el puntero P
       ---------
                                    cdigo:  0D
                                    ciclos:    3

      Decrementa el puntero P. Si P se decrementa pasado 0 se pondr
      automticamente a F. Esta instruccin siempre se ejecuta en modo HEX.
      Ajusta el Acarreo.



















                                 Pgina 116




       P=     n    - Pone el puntero P a n
       ---------
                                    cdigo:  2n
                                    ciclos:    2

      Pone el puntero P a n.





       R0=A      - Copia A en el registro R0
       ---------
                                    cdigo:  100
                                    ciclos:   19

      Copia el contenido del registro de trabajo A en el registro auxiliar R0





       R0=C      - Copia C en el registro R0
       ---------
                                    cdigo:  108
                                    ciclos:   19

      Copia el contenido del registro de trabajo C en le registro auxiliar R0





       R1=A      - Copia el registro A en el registro R1
       ---------
                                    cdigo:  101
                                    ciclos:   19

      Copia el contenido del registro de trabajo A en el registro auxiliar R1
























                                 Pgina 117




       R1=C      - Copia C en el registro R1
       ---------
                                    cdigo:  109
                                    ciclos:   19

      Copia el contenido del registro de trabajo C en el registro auxiliar R1





       R2=A      - Copia A en el registro R2
       ---------
                                    cdigo:  102
                                    ciclos:   19

      Copia el contenido del registro de trabajo A en el registro auxiliar R2





       R2=C      - Copia C en el registro R2
       ---------
                                    cdigo:  10A
                                    ciclos:   19

      Copia el contenido del registro de trabajo C en el registro auxiliar R2





       R3=A      - Copia A en el registro R3
       ---------
                                    cdigo:  103
                                    ciclos:   19

      Copia el contenido del registro de trabajo A en el registro auxiliar R3






























                                 Pgina 118




       R3=C      - Copia C en el registro R3
       ---------
                                    cdigo:  10B
                                    ciclos:   19

      Copia el contenido del registro de trabajo C en el registro auxiliar R3





       R4=A      - Copia A en el registro R4
       ---------
                                    cdigo:  104
                                    ciclos:   19

      Copia el contenido del registro de trabajo A en el registro auxiliar R4





       R4=C      - Copia C en el registro R4
       ---------
                                    cdigo:  10C
                                    ciclos:   19

      Copia el contenido del registro de trabajo C en el registro auxiliar R4





       RESET     - Resetea el Sistema
       ---------
                                    cdigo:  80A
                                    ciclos:    6

      Se emite el Comando del Bus de Reset del Sistema con lo que todos los
      chips realizan un reset local. La funcin del reset variar de acuerdo
      con el tipo de chip.

























                                 Pgina 119




       RSI       - Resetea el Sistema de Interrupciones
       ---------
                                    cdigo:  80810
                                    ciclos:    6

      Esta instruccin causa que la CPU considere a cualquier lnea de
      entrada (o sea, los bits del registro de entrada) actualmente alta,
      como una nueva interrupcin. Si la CPU est actualmente en la rutina de
      interrupcin esperar un RTI antes de vectorizar, si no, la CPU
      vectorizar inmediatamente despus de la instruccin RSI. Para una
      discusin completa del sistema de interrupciones ver la Especificacin
      del Hardware de la CPU (A-1LK7-9005-1). Esta instruccin no est
      disponible en la versin 1LF2 de la CPU Saturno.





       RSTK=C    - Sube C a la Pila de Retornos
       ---------
                                    cdigo:  06
                                    ciclos:    8

      Sube los 5 nibbles de menor orden (campo A) del registro C a la Pila de
      Retornos. Ver el mnemnico GOSUB.





       RTI       - Retorno desde interrupcin
       ---------
                                    cdigo:  0F
                                    ciclos:    9

      Retorna y re-habilita el sistema de interrupciones. Ver el mnemnico
      RTN.






       RTN        - Retorno
       ---------
                                    cdigo:  01
                                    ciclos:    9

      Devuelve el control a la direccin de la cima de la pila de retornos
      hardware. La direccin de la cima de la pila de retornos hardware se
      baja y se coloca en el contador del programa PC. A la vez que se baja
      la direccin de la pila, se inserta una direccin cero en el fondo de
      la pila.













                                 Pgina 120




      Por consiguiente la pila de retornos hardware contiene siempre 8
      direcciones y si se realizan ms bajadas (retornos) que subidas
      (gosubs), se leern ceros de la pila. Tal intento de "retornar" a una
      direccin 0 da lugar a un reset de la memoria ya que el cdigo de reset
      de la memoria del sistema operativo reside en la direccin 0.





       RTNC      -Retorno si Acarreo
       ---------
                                    cdigo:  400
                                    ciclos:   10 (RTN)
                                               3 (NO)

      Retorna (vuelve) si el Acarreo est encendido. Ver el mnemnico RTN.





       RTNCC     - Retorna, apaga el acarreo
       ---------
                                    cdigo:  03
                                    ciclos:    9

      Retorna y apaga el Acarreo. Ver el mnemnico RTN.





       RTNNC   - Retorna si el acarreo est apagado
       -------
                                    cdigo:  500 (Acarreo=1)
                                    ciclos:   10 (RTN)
                                               3 (NO)

      Retorna si el Acarreo no est encendido. Ver el mnemnico RTN.


























                                 Pgina 121




       RTNSC     - Retorna y enciende el acarreo
       ---------
                                    cdigo:  02
                                    ciclos:    9

       Retorna y enciende el Acarreo. Ver el mnemnico RTN.





       RTNSXM    - Retorna y enciende el bit de Falta Mdulo Externo (XM)
       ---------
                                    cdigo:  00
                                    ciclos:    9

      Retorna y enciende el bit de Falta Mdulo Externo (XM). Ya que el
      cdigo es cero, este mnemnico se ejecuta en el salto a un dispositivo
      de memoria inexistente. Ver "Especificacin Hardware de la HP-71" para
      ms informacin. Ver tambin el mnemnico RTN.





       RTNYES  - Retorna si el Test es Cierto
       ---------
                                    cdigo:  00
                                    ciclos:  incluidos en el tiempo del ciclo
                                             del mnemnico que le acompaa.

      RTNYES es un mnemnico para especificar parte del cdigo de un test de
      la CPU. RTNYES debe ir siempre a continuacin de un mnemnico de test.
      Si la condicin de test se cumple, el Acarreo se enciende y se ejecuta
      un retorno. Si la condicin de test no se cumple, se pasa el control a
      la instruccin que sigue a RTNYES. Compralo con los mnemnicos RTN y
      GOYES.





























                                 Pgina 122




       SB=0      - Apaga el Bit Pegajoso (SB)
       ---------
                                    cdigo:  822
                                    ciclos:    3

      Apaga el Bit Pegajoso (SB). Ver el mnemnico CLRHST.






       SETDEC    - Pone el modo decimal
       ---------
                                    cdigo:  05
                                    ciclos:    3

      Pone el modo aritmtico de la CPU a decimal.





       SETHEX    - Pone el modo hexadecimal
       ---------
                                    cdigo:  04
                                    ciclos:    3

      Pone el modo aritmtico de la CPU a hexadecimal.





       SHUTDN    - Detiene el Sistema
       ---------
                                    cdigo:  807
                                    ciclos:    5

      Cuando se ejecuta este mnemnico la CPU enva el Comando del Bus
      Shutdown (detener) y para su reloj. Si se enva el comando SHUTDN con
      el registro de salida=000 (ver OUT=C o OUT=CS) se pondr el PC a cero
      causando un arranque en fro automtico en algunos sistemas o un paro
      del sistema en la HP 48.






















                                 Pgina 123




       SR=0      - Apaga el bit de Solicitud de Servicio (SR)
       ---------
                                    cdigo:  824
                                    ciclos:    3

      Borra el bit se Solicitud de Servicio (SR). Ver el mnemnico CLRHST.





       SREQ?     - Solicitud de Servicio
       ---------
                                    cdigo:  80E
                                    ciclos:    7

      Este mnemnico enciende el bit de Solicitud de Servicio (SR) si
      cualquier chip en el bus del sistema solicita servicio. Cuando se
      ejecuta, se enva al bus del sistema un Comando del Bus de Solicitud de
      Servicio para preguntar a todos los chips si Solicitan Servicio. Si
      cualquier chip solicita servicio, se pone alta una lnea del bus
      durante el siguiente "strobe" que sigue al Comando del Bus de Solicitud
      de Servicio. Este valor del bus ser "latcheado" en el nibble menos
      significativo del registro C. La lnea del bus que se pone alta
      determina el tipo de dispositivo de acuerdo con la siguiente tabla:

                 Bit           Dispositivo
                 ---   ------------------------
                  3     Sin usar
                  2     Lector de Tarjetas
                  1     Buzn del HP-IL
                  0     Controlador de la Pantalla (temporizador)

      Si cualquier lnea del bus est alta, se encender el bit de Solicitud
      de Servicio (SR). Ver "Especificacin del Hardware de la HP-71" para
      ms informacin. Ver tambin los mnemnicos ?SREQ y SR=0.






























                                 Pgina 124




       ST=0   n  - Apaga el bit n del Estado del Programa
       ---------
                                    cdigo:  84n
                                    ciclos:    4

      Borra el bit del Estado del Programa seleccionado por n.




       ST=1   n  - Enciende el bit n del Estado del Programa
       ---------
                                    cdigo:  85n
                                    ciclos:    4

      Enciende el bit del Estado del Programa seleccionado por n.







       ST=C      - C al Estado
       ---------
                                    cdigo:  0A
                                    ciclos:    6

      Copia los 12 bits de menor orden del registro C (campo X) en los 12
      bits de menor orden del registro de estado.





       UNCNFG    - Desconfigura
       ---------
                                    cdigo:  804
                                    ciclos:   12

      Carga los 5 nibbles de menor orden (campo A) del registro C en cada
      puntero de Datos desconfigurando el dispositivo direccionado por el
      puntero de Datos. Ver "Especificacin Hardware de la HP-71" para ms
      informacin.





       XM=0      - Apaga el bit de Falta Mdulo Externo (XM)
       ---------
                                    cdigo:  821
                                    ciclos:    3

      Apaga el bit de Falta Mdulo Externo (XM). Este bit de estado del
      hardware se enciende con el mnemnico RTNSXM. Ver el mnemnico CLRHST.










                                 Pgina 125




       9.  Lista Alfabtica de Mnemnicos


      Este captulo contiene todas las instrucciones generadoras de cdigo
      reconocidas por SASM.EXE. Las instrucciones que se encuentran en la
      HP 28 y en la HP 48 pero no en la HP 71 se marcan con **.

      Smbolos usados en el campo del modificador:

       fs       Carcter Selector de Campo.
       rfs      Seleccin de Campo restringida (S, P, WP y XS no permitidos).
       d        Campo de un solo nibble.
       expr     Expresin.
       hh       Valor hexadecimal de dos dgitos.
       hhhh     Valor hexadecimal de cuatro dgitos.
       hhhhh    Valor hexadecimal de cinco dgitos.
       etiqueta Etiqueta destino.
       ASCII    Cadena de caracteres ASCII.

      Smbolos usados en el campo de cdigo:

       tt      Cdigo incluido en la instruccin de test.
       a       Seleccin de campo en el margen 0-7.
       b       Seleccin de campo en el margen 8-F.
       c       Campo de longitud de un nibble (Carga Constante).
       f       Seleccin de campo incluyendo el campo A.
       h...h   Valor hexadecimal.
       n       Nibble cuyo valor es d.
       n...n   Nibble cuyo valor es expr.
       m       Nibble cuyo valor es d - 1.
       x...x   Nibbles correspondientes a caracteres ASCII.
       y       Referencia a un smbolo (relativa o absoluta).


       Instruccin     Cdigo    Comentarios

       ?A#0    A       8ACyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A#0    fs      9aCyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A#B    A       8A4yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A#B    fs      9a4yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A#C    A       8A6yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A#C    fs      9a6yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A<=B   A       8BCyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A<=B   fs      9bCyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A<=C   A       8BAyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A<=C   fs      9bAyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A<B    A       8B4yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A<B    fs      9b4yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A<C    A       8B2yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A<C    fs      9b2yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A=0    A       8A8yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A=0    fs      9a8yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A=B    A       8A0yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A=B    fs      9a0yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A=C    A       8A2yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A=C    fs      9a2yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A>=B   A       8B8yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A>=B   fs      9b8yy   Requiere GOYES o RTNYES; Afecta al Acarreo








                                 Pgina 126






       ?A>=C   A       8BEyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A>=C   fs      9bEyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A>B    A       8B0yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A>B    fs      9b0yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A>C    A       8B6yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?A>C    fs      9b6yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?ABIT=0 d       8086nyy ** Requiere GOYES o RTNYES; Afecta al Acarreo
       ?ABIT=1 d       8087nyy ** Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B#0    A       8ADyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B#0    fs      9aDyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B#A    A       8A4yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B#A    fs      9a4yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B#C    A       8A5yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B#C    fs      9a5yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B<=A   A       8B8yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B<=A   fs      9b8yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B<=C   A       8BDyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B<=C   fs      9bDyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B<A    A       8B0yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B<A    fs      9b0yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B<C    A       8B5yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B<C    fs      9b5yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B=0    A       8A9yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B=0    fs      9a9yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B=A    A       8A0yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B=A    fs      9a0yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B=C    A       8A1yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B=C    fs      9a1yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B>=A   A       8BCyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B>=A   fs      9bCyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B>=C   A       8B9yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B>=C   fs      9b9yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B>A    A       8B4yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B>A    fs      9b4yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B>C    A       8B1yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?B>C    fs      9b1yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C#0    A       8AEyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C#0    fs      9aEyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C#A    A       8A6yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C#A    fs      9a6yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C#B    A       8A5yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C#B    fs      9a5yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C#D    A       8A7yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C#D    fs      9a7yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<=A   A       8BEyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<=A   fs      9bEyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<=B   A       8B9yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<=B   fs      9b9yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<=D   A       8BByy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<=D   fs      9bByy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<A    A       8B6yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<A    fs      9b6yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<B    A       8B1yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<B    fs      9b1yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<D    A       8B3yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C<D    fs      9b3yy   Requiere GOYES o RTNYES; Afecta al Acarreo








                                 Pgina 127




       ?C=0    A       8AAyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C=0    fs      9aAyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C=A    A       8A2yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C=A    fs      9a2yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C=B    A       8A1yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C=B    fs      9a1yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C=D    A       8A3yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C=D    fs      9a3yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>=A   A       8BAyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>=A   fs      9bAyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>=B   A       8BDyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>=B   fs      9bDyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>=D   A       8BFyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>=D   fs      9bFyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>A    A       8B2yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>A    fs      9b2yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>B    A       8B5yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>B    fs      9b5yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>D    A       8B7yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?C>D    fs      9b7yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?CBIT=0 d       808Anyy ** Requiere GOYES o RTNYES; Afecta al Acarreo
       ?CBIT=1 d       808Bnyy ** Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D#0    A       8AFyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D#0    fs      9aFyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D#C    A       8A7yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D#C    fs      9a7yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D<=C   A       8BFyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D<=C   fs      9bFyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D<C    A       8B7yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D<C    fs      9b7yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D=0    A       8AByy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D=0    fs      9aByy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D=C    A       8A3yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D=C    fs      9a3yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D>=C   A       8BByy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D>=C   fs      9bByy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D>C    A       8B3yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?D>C    fs      9b3yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?HS=0   d       83nyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?MP=0           838yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?P#     d       88nyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?P=     d       89nyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?SB=0           832yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?SR=0           834yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?ST=0   d       86nyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?ST=1   d       87nyy   Requiere GOYES o RTNYES; Afecta al Acarreo
       ?XM=0           831yy   Requiere GOYES o RTNYES; Afecta al Acarreo
       A=-A    A       F8      Afecta al Acarreo
       A=-A    fs      Bb8     Afecta al Acarreo
       A=-A-1  A       FC      Apaga el Acarreo
       A=-A-1  fs      BbC     Apaga el Acarreo
       A=0     A       D0
       A=0     fs      Ab0
       A=A!B   fs      0Ef8
       A=A!C   fs      0EfE
       A=A&B   fs      0Ef0
       A=A&C   fs      0Ef6
       A=A+1   A       E4      Afecta al Acarreo








                                 Pgina 128




       A=A+1   fs      Ba4     Afecta al Acarreo
       A=A+A   A       C4      Afecta al Acarreo
       A=A+A   fs      Aa4     Afecta al Acarreo
       A=A+B   A       C0      Afecta al Acarreo
       A=A+B   fs      Aa0     Afecta al Acarreo
       A=A+C   A       CA      Afecta al Acarreo
       A=A+C   fs      AaA     Afecta al Acarreo
       A=A+CON rfs,d   818f0m  ** Afecta al Acarreo
       A=A-1   A       CC      Afecta al Acarreo
       A=A-1   fs      AaC     Afecta al Acarreo
       A=A-B   A       E0      Afecta al Acarreo
       A=A-B   fs      Ba0     Afecta al Acarreo
       A=A-C   A       EA      Afecta al Acarreo
       A=A-C   fs      BaA     Afecta al Acarreo
       A=A-CON rfs,d   818f8m  ** Afecta al Acarreo
       A=B     A       D4
       A=B     fs      Ab4
       A=B!A   fs      0Ef8
       A=B&A   fs      0Ef0
       A=B+A   A       C0      Afecta al Acarreo
       A=B+A   fs      Aa0     Afecta al Acarreo
       A=B-A   A       EC      Afecta al Acarreo
       A=B-A   fs      BaC     Afecta al Acarreo
       A=C     A       DA
       A=C     fs      AbA
       A=C!A   fs      0EfE
       A=C&A   fs      0Ef6
       A=C+A   A       CA      Afecta al Acarreo
       A=C+A   fs      AaA     Afecta al Acarreo
       A=DAT0  A       142
       A=DAT0  B       14A
       A=DAT0  fs      152a
       A=DAT0  d       15Am
       A=DAT1  A       143
       A=DAT1  B       14B
       A=DAT1  fs      153a
       A=DAT1  d       15Bm
       A=IN            802
       A=PC            81B4    **
       A=R0            110
       A=R0.F  W       110     **
       A=R0.F  fs      81Af10  **
       A=R1            111
       A=R1.F  W       111     **
       A=R1.F  fs      81Af11  **
       A=R2            112
       A=R2.F  W       112     **
       A=R2.F  fs      81Af12  **
       A=R3            113
       A=R3.F  W       113     **
       A=R3.F  fs      81Af13  **
       A=R4            114
       A=R4.F  W       114     **
       A=R4.F  fs      81Af14  **
       ABEX    A       DC
       ABEX    fs      AbC
       ABIT=0  d       8084n   ** Apaga el bit d del registro A
       ABIT=1  d       8085n   ** Enciende el bit d del registro A








                                 Pgina 129




       ACEX    A       DE
       ACEX    fs      AbE
       AD0EX           132
       AD0XS           13A
       AD1EX           133
       AD1XS           13B
       APCEX           81B6    ** Contina en otro sitio
       AR0EX           120
       AR0EX.F fs      81Af20  **
       AR1EX           121
       AR1EX.F fs      81Af21  **
       AR2EX           122
       AR2EX.F fs      81Af22  **
       AR3EX           123
       AR3EX.F fs      81Af23  **
       AR4EX           124
       AR4EX.F fs      81Af24  **
       ASL     A       F0
       ASL     fs      Bb0
       ASLC            810
       ASR     A       F4
       ASR     fs      Bb4
       ASRB            81C
       ASRB.F  fs      819f0   **
       ASRC            814
       B=-B    A       F9      Afecta al Acarreo
       B=-B    fs      Bb9     Afecta al Acarreo
       B=-B-1  A       FD      Apaga el Acarreo
       B=-B-1  fs      BbD     Apaga el Acarreo
       B=0     A       D1
       B=0     fs      Ab1
       B=A     A       D8
       B=A     fs      Ab8
       B=A!B   fs      0EfC
       B=A&B   fs      0Ef4
       B=A+B   A       C8      Afecta al Acarreo
       B=A+B   fs      Aa8     Afecta al Acarreo
       B=B!A   fs      0EfC
       B=B!C   fs      0Ef9
       B=B&A   fs      0Ef4
       B=B&C   fs      0Ef1
       B=B+1   A       E5      Afecta al Acarreo
       B=B+1   fs      Ba5     Afecta al Acarreo
       B=B+A   A       C8      Afecta al Acarreo
       B=B+A   fs      Aa8     Afecta al Acarreo
       B=B+B   A       C5      Afecta al Acarreo
       B=B+B   fs      Aa5     Afecta al Acarreo
       B=B+C   A       C1      Afecta al Acarreo
       B=B+C   fs      Aa1     Afecta al Acarreo
       B=B+CON rfs,d   818f1m  ** Afecta al Acarreo
       B=B-1   A       CD      Afecta al Acarreo
       B=B-1   fs      AaD     Afecta al Acarreo
       B=B-A   A       E8      Afecta al Acarreo
       B=B-A   fs      Ba8     Afecta al Acarreo
       B=B-C   A       E1      Afecta al Acarreo
       B=B-C   fs      Ba1     Afecta al Acarreo
       B=B-CON rfs,d   818f9m  ** Afecta al Acarreo
       B=C     A       D5








                                 Pgina 130




       B=C     fs      Ab5
       B=C!B   fs      0Ef9
       B=C&B   fs      0Ef1
       B=C+B   A       C1      Afecta al Acarreo
       B=C+B   fs      Aa1     Afecta al Acarreo
       B=C-B   A       ED      Afecta al Acarreo
       B=C-B   fs      BaD     Afecta al Acarreo
       BAEX    A       DC
       BAEX    fs      AbC
       BCEX    A       DD
       BCEX    fs      AbD
       BSL     A       F1
       BSL     fs      Bb1
       BSLC            811
       BSR     A       F5
       BSR     fs      Bb5
       BSRB            81D
       BSRB.F  W       81D     **
       BSRB.F  fs      819f1   **
       BSRC            815
       BUSCB           8083    **
       BUSCC           80B
       BUSCD           808D    **
       C+P+1           809     Afecta al Acarreo
       C=-C    A       FA      Afecta al Acarreo
       C=-C    fs      BbA     Afecta al Acarreo
       C=-C-1  A       FE      Apaga el Acarreo
       C=-C-1  fs      BbE     Apaga el Acarreo
       C=0     A       D2
       C=0     fs      Ab2
       C=A     A       D6
       C=A     fs      Ab6
       C=A!C   fs      0EfA
       C=A&C   fs      0Ef2
       C=A+C   A       C2      Afecta al Acarreo
       C=A+C   fs      Aa2     Afecta al Acarreo
       C=A-C   A       EE      Afecta al Acarreo
       C=A-C   fs      BaE     Afecta al Acarreo
       C=B     A       D9
       C=B     fs      Ab9
       C=B!C   fs      0EfD
       C=B&C   fs      0Ef5
       C=B+C   A       C9      Afecta al Acarreo
       C=B+C   fs      Aa9     Afecta al Acarreo
       C=C!A   fs      0EfA
       C=C!B   fs      0EfD
       C=C!D   fs      0EfF
       C=C&A   fs      0Ef2
       C=C&B   fs      0Ef5
       C=C&D   fs      0Ef7
       C=C+1   A       E6      Afecta al Acarreo
       C=C+1   fs      Ba6     Afecta al Acarreo
       C=C+A   A       C2      Afecta al Acarreo
       C=C+A   fs      Aa2     Afecta al Acarreo
       C=C+B   A       C9      Afecta al Acarreo
       C=C+B   fs      Aa9     Afecta al Acarreo
       C=C+C   A       C6      Afecta al Acarreo
       C=C+C   fs      Aa6     Afecta al Acarreo








                                 Pgina 131




       C=C+CON rfs,d   818f2m  ** Afecta al Acarreo
       C=C+D   A       CB      Afecta al Acarreo
       C=C+D   fs      AaB     Afecta al Acarreo
       C=C+P+1         809     Afecta al Acarreo
       C=C-1   A       CE      Afecta al Acarreo
       C=C-1   fs      AaE     Afecta al Acarreo
       C=C-A   A       E2      Afecta al Acarreo
       C=C-A   fs      Ba2     Afecta al Acarreo
       C=C-B   A       E9      Afecta al Acarreo
       C=C-B   fs      Ba9     Afecta al Acarreo
       C=C-CON rfs,d   818fAm  ** Afecta al Acarreo
       C=C-D   A       EB      Afecta al Acarreo
       C=C-D   fs      BaB     Afecta al Acarreo
       C=D     A       DB
       C=D     fs      AbB
       C=D!C   fs      0EfF
       C=D&C   fs      0Ef7
       C=D+C   A       CB      Afecta al Acarreo
       C=D+C   fs      AaB     Afecta al Acarreo
       C=DAT0  A       146
       C=DAT0  B       14E
       C=DAT0  fs      156a
       C=DAT0  d       15Em
       C=DAT1  A       147
       C=DAT1  B       14F
       C=DAT1  fs      157a
       C=DAT1  d       15Fm
       C=ID            806
       C=IN            803
       C=P     d       80Cn
       C=PC            81B5    **
       C=R0            118
       C=R0.F  fs      81Af18  **
       C=R1            119
       C=R1.F  fs      81Af19  **
       C=R2            11A
       C=R2.F  fs      81Af1A  **
       C=R3            11B
       C=R3.F  fs      81Af1B  **
       C=R4            11C
       C=R4.F  fs      81Af1C  **
       C=RSTK          07
       C=ST            09
       CAEX    A       DE
       CAEX    fs      AbE
       CBEX    A       DD
       CBEX    fs      AbD
       CBIT=0  d       8088n   ** Apaga el bit d del registro C
       CBIT=1  d       8089n   ** Enciende el bit d del registro C
       CD0EX           136
       CD0XS           13E
       CD1EX           137
       CD1XS           13F
       CDEX    A       DF
       CDEX    fs      AbF
       CLRHST          82F
       CLRST           08
       CON(1)  expr    n








                                 Pgina 132




       CON(2)  expr    nn
       CON(3)  expr    nnn
       CON(4)  expr    nnnn
       CON(5)  expr    nnnnn
       CON(6)  expr    nnnnnn
       CON(7)  expr    nnnnnnn
       CON(8)  expr    nnnnnnnn
       CONFIG          805
       CPCEX           81B7    ** Contina en otro sitio
       CPEX    d       80Fn
       CR0EX           128
       CR0EX.F fs      81Af28  **
       CR1EX           129
       CR1EX.F fs      81Af29  **
       CR2EX           12A
       CR2EX.F fs      81Af2A  **
       CR3EX           12B
       CR3EX.F fs      81Af2B  **
       CR4EX           12C
       CR4EX.F fs      81Af2C  **
       CSL     A       F2
       CSL     fs      Bb2
       CSLC            812
       CSR     A       F6
       CSR     fs      Bb6
       CSRB            81E
       CSRB.F  fs      819f2   **
       CSRC            816
       CSTEX           0B
       D0=(2)  expr    19nn
       D0=(4)  expr    1Annnn
       D0=(5)  expr    1Bnnnnn
       D0=A            130
       D0=AS           138
       D0=C            134
       D0=CS           13C
       D0=D0+  d       16m     Afecta al Acarreo
       D0=D0-  d       18m     Afecta al Acarreo
       D0=HEX  hh      19hh
       D0=HEX  hhhh    1Ahhhh
       D0=HEX  hhhhh   1Bhhhhh
       D1=(2)  expr    1Dnn
       D1=(4)  expr    1Ennnn
       D1=(5)  expr    1Fnnnnn
       D1=A            131
       D1=AS           139
       D1=C            135
       D1=CS           13D
       D1=D1+  d       17m     Afecta al Acarreo
       D1=D1-  d       1Cm     Afecta al Acarreo
       D1=HEX  hh      1Dhh
       D1=HEX  hhhh    1Ehhhh
       D1=HEX  hhhhh   1Fhhhhh
       D=-D    A       FB      Afecta al Acarreo
       D=-D    fs      BbB     Afecta al Acarreo
       D=-D-1  A       FF      Apaga el Acarreo
       D=-D-1  fs      BbF     Apaga el Acarreo
       D=0     A       D3








                                 Pgina 133




       D=0     fs      Ab3
       D=C     A       D7
       D=C     fs      Ab7
       D=C!D   fs      0EfB
       D=C&D   fs      0Ef3
       D=C+D   A       C3      Afecta al Acarreo
       D=C+D   fs      Aa3     Afecta al Acarreo
       D=C-D   A       EF      Afecta al Acarreo
       D=C-D   fs      BaF     Afecta al Acarreo
       D=D!C   fs      0EfB
       D=D&C   fs      0Ef3
       D=D+1   A       E7      Afecta al Acarreo
       D=D+1   fs      Ba7     Afecta al Acarreo
       D=D+C   A       C3      Afecta al Acarreo
       D=D+C   fs      Aa3     Afecta al Acarreo
       D=D+CON rfs,d   818f3m  ** Afecta al Acarreo
       D=D+D   A       C7      Afecta al Acarreo
       D=D+D   fs      Aa7     Afecta al Acarreo
       D=D-1   A       CF      Afecta al Acarreo
       D=D-1   fs      AaF     Afecta al Acarreo
       D=D-C   A       E3      Afecta al Acarreo
       D=D-C   fs      Ba3     Afecta al Acarreo
       D=D-CON rfs,d   818fBm  ** Afecta al Acarreo
       DAT0=A  A       140
       DAT0=A  B       148
       DAT0=A  fs      150a
       DAT0=A  d       158m
       DAT0=C  A       144
       DAT0=C  B       14C
       DAT0=C  fs      154a
       DAT0=C  d       15Cm
       DAT1=A  A       141
       DAT1=A  B       149
       DAT1=A  fs      151a
       DAT1=A  d       159m
       DAT1=C  A       145
       DAT1=C  B       14D
       DAT1=C  fs      155a
       DAT1=C  d       15Dm
       DCEX    A       DF
       DCEX    fs      AbF
       DSL     A       F3
       DSL     fs      Bb3
       DSLC            813
       DSR     A       F7
       DSR     fs      Bb7
       DSRB            81F
       DSRB.F  fs      819f3   **
       DSRC            817
       GOC     etiqueta   4yy       Contina en otro sitio si Acarreo
                                    encendido
       GOLONG  etiqueta   8Cyyyy    Contina en otro sitio
       GONC    etiqueta   5yy       Contina en otro sitio si Acarreo apagado
       GOSBVL  etiqueta   8Fyyyyy   Afecta al Acarreo
       GOSUB   etiqueta   7yyy      Afecta al Acarreo
       GOSUBL  etiqueta   8Eyyyy    Afecta al Acarreo
       GOTO    etiqueta   6yyy      Contina en otro sitio
       GOVLNG  etiqueta   8Dyyyyy   Contina en otro sitio
       GOYES   etiqueta   tt        Debe ir a continuacin de una instruccin
                                    test






                                 Pgina 134




       HS=0    d       82n     Apaga (MP SR SB XM) de acuerdo con d
                               Ejemplo: 823 Apaga SB y XM
       INTOFF          808F
       INTON           8080
       LA(1)   expr    80820n          ** Carga el registro A
       LA(2)   expr    80821nn         ** Carga el registro A
       LA(3)   expr    80822nnn        ** Carga el registro A
       LA(4)   expr    80823nnnn       ** Carga el registro A
       LA(5)   expr    80824nnnnn      ** Carga el registro A
       LA(6)   expr    80825nnnnnn     ** Carga el registro A
       LA(7)   expr    80826nnnnnnn    ** Carga el registro A
       LA(8)   expr    80827nnnnnnnn   ** Carga el registro A
       LC(1)   expr    30n             Carga el registro C
       LC(2)   expr    31nn            Carga el registro C
       LC(3)   expr    32nnn           Carga el registro C
       LC(4)   expr    33nnnn          Carga el registro C
       LC(5)   expr    34nnnnn         Carga el registro C
       LC(6)   expr    35nnnnnn        Carga el registro C
       LC(7)   expr    36nnnnnnn       Carga el registro C
       LC(8)   expr    37nnnnnnnn      Carga el registro C
       MP=0            828
       NIBASC  ASCII x...x
       NIBFS   fs      f
       NIBHEX  hhhhhhh hhhhhhh Afecta al Acarreo
       NOP3            820
       NOP4            6300
       NOP5            64000
       OUT=C           801
       OUT=CS          800
       P=      d       2n
       P=C     d       80Dn
       P=P+1           0C      Afecta al Acarreo
       P=P-1           0D      Afecta al Acarreo
       PC=(A)          808C    ** Contina en otro sitio
       PC=(C)          808E    ** Contina en otro sitio
       PC=A            81B2    ** Contina en otro sitio
       PC=C            81B3    ** Contina en otro sitio
       R0=A            100
       R0=A.F  fs      81Af00  **
       R0=C            108
       R0=C.F  fs      81Af08  **
       R1=A            101
       R1=A.F  fs      81Af01  **
       R1=C            109
       R1=C.F  fs      81Af09  **
       R2=A            102
       R2=A.F  fs      81Af02  **
       R2=C            10A
       R2=C.F  fs      81Af0A  **
       R3=A            103
       R3=A.F  fs      81Af03  **
       R3=C            10B
       R3=C.F  fs      81Af0B  **
       R4=A            104
       R4=A.F  fs      81Af04  **
       R4=C            10C
       R4=C.F  fs      81Af0C  **
       REL(1)  etiqueta   y








                                 Pgina 135




       REL(2)  etiqueta   yy
       REL(3)  etiqueta   yyy
       REL(4)  etiqueta   yyyy
       REL(5)  etiqueta   yyyyy
       REL(6)  etiqueta   yyyyyy
       REL(7)  etiqueta   yyyyyyy
       REL(8)  etiqueta   yyyyyyyy
       RESET           80A
       RSI             80810   **
       RSTK=C          06
       RTI             0F      Contina en otro sitio
       RTN             01      Contina en otro sitio
       RTNC            400     Contina en otro sitio si Acarreo encendido
       RTNCC           03      Contina en otro sitio y apaga el Acarreo
       RTNNC           500     Contina en otro sitio si Acarreo Apagado
       RTNSC           02      Contina en otro sitio y enciende Acarreo
       RTNSXM          00      Contina en otro sitio y enciende bit XM
       RTNYES          **      Debe ir a continuacin de una instruccin test
       SB=0            822
       SETDEC          05
       SETHEX          04
       SHUTDN          807
       SLINK etiqueta  yyyyy
       SR=0            824
       SREQ?           80E
       ST=0    d       84n
       ST=1    d       85n
       ST=C            0A
       STRING  ASCII x...x
       UNCNFG          804
       XM=0            821



































                                 Pgina 136




       10.  Mensajes de Error

      Esto es una lista de todos los errores que genera el ensamblador y las
      explicaciones de las causas que hacen que se impriman esos mensajes de
      error.

      Los mensajes de errores no fatales son lneas de la forma
      *** ERROR: mensaje *** que van seguidas de la lnea fuente que contiene
      el error. Estos mensajes indican errores en el cdigo pero el
      ensamblador sigue con el resto de las lneas. En unos cuantos mensajes,
      el mensaje va a continuacin de la lnea que contiene el error. Esos
      mensajes de error se indican en la lista.

      Los mensajes de error fatales son lneas de la forma SASM.EXE: mensaje
      (detalles). Estos mensajes indican errores encontrados durante el
      proceso de ensamblado que no estn relacionados con el cdigo y que
      terminan con el ensamblado. Los ficheros listado y objeto del
      ensamblado, si hay alguno, no se pueden completar.

      Los mensajes de la lnea de comandos son mensajes relacionados con las
      opciones especificadas en la lnea de comandos. Estos mensajes indican
      problemas con las opciones. Si se ha impreso caulquier mensaje de la
      lnea de comandos cuando se han procesado todas las opciones, se
      detiene el ensamblador. No se habr alterado ningn fichero (excepto
      por la opcin d, que tiene un efecto inmediato).

      Algunas explicaciones incluyen sugerencias para ayudar a encontrar la
      causa del error.

      *******************************************************************
      N.T.> Se muestra tambin el mensaje original en ingls, pues as lo
            emite el ensamblador SASM.EXE
      *******************************************************************

      10.1  Mensajes de Error No Fatales

      ERROR:   ABS/REL must be at beginning
               ABS/REL deben estar al principio

      Las declaraciones ABS y REL, si estn presentes, deben preceder a
      cualquier declaracin generadora de cdigo.

      ERROR:   Branch out of range
               Bifurcacin fuera de margen

      La distancia hasta la etiqueta destino es demasiado grande para el
      tamao de este campo.

      ERROR:   Can't add two external expressions
               No se pueden sumar dos expresiones externas

               Ambos lados del + son expresiones externas. Solo se permite
               una expresin externa como mximo con el operador +.













                                 Pgina 137






      ERROR:   Can't define a new macro within a macro
               No se puede definir un nuevo macro dentro de un macro

      Se ha ejecutado una declaracin MACRO mientras se expanda un macro. No
      se puede definir un nuevo macro mientras se expande un macro.

      Sugerencia: La causa de esto puede ser que falte un ENDM al final de la
                  definicin de un macro si hay otro macro a continuacin del
                  que se est expandiendo actualmente.

      ERROR:   Can't have external reference on left side of 
               No puede haber una referencia externa a la izquierda de (?!)

      El lado izquierdo de (?!) es una referencia externa. Solo se permite
      una referencia externa a la derecha del operador (?!).

      ERROR:   Can't have external reference on right side of -
               No puede haber una referencia externa a la derecha de -

      El lado derecho de - es una referencia externa. Slo se permite una
      referencia externa a la izquierda del operador -.

      ERROR:   Can't redefine an existing macro
               No se puede redefinir un macro existente

      Se ejecut una declaracin MACRO para definir un macro que ya ha sido
      definido.

      ERROR:   Can't redefine an existing opcode
               No se puede redefinir un cdigo existente

      Se ejecut una declaracin MACRO para definir un macro pero el nombre
      del macro es el mismo que un cdigo.

      ERROR:   Can't use !,&,*,/,%, or ^ with external reference
               No se puede usar !, &, *, /, % o ^ con una referencia externa

      Al menos uno de los operandos es una expresin externa. No se permiten
      referencias externas con estos operadores.

      ERROR:   Conditional assembly stack overflow
               Desbordamiento de la pila de ensamblado condicional

      Se han anidado ms de 20 niveles de declaraciones IF. Simplifica la
      lgica de los tests IF o usa las declaraciones SETFLAG y CLRFLAG para
      indicar combinaciones de tests IF.

      ERROR:   Divide by zero (result set to 0)
               Divisin por cero (resultado puesto a 0)

      La expresin a la derecha del operador / es cero.

      ERROR:   Duplicate ELSE statement
               Declaracin ELSE duplicada

      Se ha ejecutado ms de una declaracin ELSE en un test determinado.








                                 Pgina 138




      ERROR:   Duplicate symbol
               Smbolo duplicado

      El smbolo que se est definiendo en esta lnea ya ha sido definido en
      este fichero.

      Sugerencia: Comprueba las referencias cruzadas para encontrar la
                  definicin anterior; la lnea 0 significa que el smbolo se
                  defini en la lnea de comandos con -D.

      ERROR:   ELSE without matching IF
               ELSE sin su IF correspondiente

      Se ha ejecutado una declaracin ELSE sin su declaracin IF
      correspondiente.

      Sugerencia: Comprueba si hay algn error al escribir el campo etiqueta
                  de las declaraciones IF y ELSE.

      ERROR:   ENDIF without matching IF
               ENDIF si su IF correspondiente

      Se ha ejecutado una declaracin ENDIF sin su correspondiente
      declaracin IF.

      Sugerencia: Comprueba si hay algn error al escribir el campo etiqueta
                  de las declaraciones IF y ENDIF.

      ERROR:   ENDM and EXITM not permitted outside of a macro
               ENDM y EXITM no se permiten fuera de un macro

      Se ha ejecutado un ENDM o EXITM mientras no se estaba dentro de un
      macro.

      Sugerencia: Comprueba si hay algn error en la declaracin MACRO
                  anterior, si la hay.

      ERROR:   End of file while defining macro
               Fin de fichero mientras se defina un macro.

      Se ha alcanzado el final del fichero que contiene una definicin macro
      mientras se defina el macro.

      Sugerencia: Comprueba si hay un error en una declaracin ENDM o si
                  falta una declaracin ENDM.

      ERROR:   Error reading CHARMAP file (filespec)
               Error leyendo el fichero CHARMAP (especificacin_de_fichero)

      Ha ocurrido un error del sistema de ficheros mientras se lea el
      fichero CHARMAP.















                                 Pgina 139




      ERROR:   Error reading RDSYMB file (filespec)
               Error leyendo el fichero RDSYMB (especificacin_de_fichero)

      El fichero RDSYMB no es un fichero objeto del Saturno o ha ocurrido un
      error del sistema de ficheros mientras lea la cabecera del fichero
      RDSYMB.

      Se deben cumplir tres cosas para que un fichero se considere un fichero
      objeto vlido del Saturno:

         1. Que haya una cabecera de 256 bytes en el fichero.

         2. Que los seis primeros bytes de la cabecera sean "Saturn".

         3. Que el offset hasta el principio de la relacin de smbolos
            indicado en la cabecera est contenido en este fichero.

      ERROR:   Error reading RDSYMB file (filespec)
               Error leyendo el fichero RDSYMB (especificacin_de_fichero)

      El fichero RDSYMB no es un fichero objeto del Saturno o ha ocurrido un
      error del sistema de ficheros mientras lea el fichero RDSYMB.

      ERROR:   Expanded macro line too long (truncated)
               Lnea demasiado larga (truncada) en la expansin del macro

      La lnea resultante de la expansin del macro tiene ms de 255
      caracteres de largo. Solo se usan los primeros 255 caracteres.

      ERROR:   Exponent less than zero (result set to 0)
               Exponente menor que cero (resultado puesto a 0)

      La expresin a la derecha del operador ^ es menor que cero.

      ERROR:   Expression can not be external
               La expresin no puede ser externa

      La expresin de la declaracin EQU o = contiene una referencia externa.
      Solo se permiten smbolos absolutos o relocalizables en estas
      declaraciones.

      ERROR:   Expression must be absolute
               La expresin debe ser absoluta

      La expresin el la declaracin ABS, REL, BSS O LISTALL contiene una
      referencia relocalizable o externa. Solo se permiten los smbolos
      absolutos en estas declaraciones.

      ERROR:   Expression not allowed as target of branch
               No se permite una expresin como destino de una bifurcacin

      El modificador no es una referencia de etiqueta y no se especific la
      opcin -x en la lnea de comandos.

      La etiqueta no es una etiqueta vlida porque contiene un parntesis
      derecho ')'.

      Sugerencia: Si es una declaracin REL(n), se puede usar una expresin
                  sin especificar la opcin -x, substrayendo (*) de la
                  expresin y usando la declaracin CON(n).






                                 Pgina 140






      ERROR:   Expression not allowed for INC(x), LINK, and SLINK
               No se permite una expresin para INC(X), LINK ni SLINK

      El modificador no es una referencia de etiqueta. INC(n), LINK y SLINK
      requieren una referencia de etiqueta.

      La etiqueta no es una etiqueta vlida porque contiene un parntesis
      derecho ')'.

      ERROR:   Expression out of range
               Expresin fuera de margen

      Una expresin de un dgito es menor que cero o es mayor que 15 despus
      de aplicar el factor de ajuste de la declaracin (normalmente 0 o -1).

      ERROR:   Expression stack overflow
               Desbordamiento de la pila de expresiones

      La expresin es demasiado complicada. No pueden haber ms de 20
      elementos de datos pendientes.

      Sugerencia: Simplifica la expresin dividindola en varias expresiones
                  ms pequeas. Asigna un smbolo a cada una de las
                  expresiones ms pequeas y combnalos para obtener la
                  expresin final.

      ERROR:   Expression stack underflow
               Desbordamiento por debajo de la pila de expresiones

      Se esperaba una expresin que no estaba presente.

      Sugerencia: Esto indica normalmente que falta un dato despus de un
                  operador. Puede estar causado por un espacio o un tabulador
                  en la expresin, ya que indican el final del campo.

      ERROR:   Field too long
               Campo demasiado largo

      Un campo es ms largo que la longitud mxima permitida. Debera haber
      otro mensaje a continuacin de ste que da informacin ms detallada
      acerca del error.

      ERROR:   Flag value out of range
               Valor de la Bandera fuera de margen

      La expresin de la bandera en la declaracin IF, CLRFLAG o SETFLAG es
      menor que cero o mayor que 99.

      ERROR:   GOYES/RTNYES without test instruction
               GOYES/RTNYES sin la instruccin test

      Se ha ejecutado una declaracin GOYES o RTNYES pero la instruccin
      precedente no era una instruccin de test.

      ERROR:   IF expression must be absolute
               La expresin del IF debe ser absoluta

      La expresin de la bandera en la declaracin IF, CLRFLAG o SETFLAG
      contiene una referencia relocalizable o externa. En estas declaraciones
      solo se permiten smbolos absolutos.




                                 Pgina 141




      ERROR:   INCLUDE or MACRO nested too deeply
               Anidamiento demasiado profundo de INCLUDE o MACRO

      El nmero de expansiones INCLUDE y MACRO es mayor de 20.

      Sugerencia: Comprueba si hay un macro que se llama a s mismo o un
                  fichero include que se incluye a si mismo.

      ERROR:   Illegal field select
               Seleccin de campo ilegal

      El seleccionador de campo no es un indicador de seleccin de campo
      vlido (P, WP, XS, X, S, M, B, W o A).

      ERROR:   Illegal mnemonic
               Mnemnico ilegal

      No se encontr la instruccin en la tabla de cdigos o se us un macro
      antes de definirlo.

      Sugerencia: Comprueba que sea correcta la opcin de la lnea de
                  comandos (-P) y que la etiqueta, si existe, comience en la
                  primera o segunda columna.

      ERROR:   Input line too long (extra characters ignored)
               Lnea de entrada demasiado larga (se ignoran los caracteres
               extras)

      Una lnea de entrada es ms larga de 255 caracteres. Solo se usan los
      primeros 255 caracteres.

      ERROR:   Instruction not allowed with this CPU
               Instruccin no permitida con esta CPU

      Se ha ejecutado una declaracin que no est permitida por el valor
      actual de la opcin -P de la lnea de comandos. Este mensaje indica un
      probable defecto del ensamblador y se debera informar de l como tal.

      ERROR:   Invalid ASC constant
               Constante ASC ilegal

      Est mal formada una constante ASCII de una expresin. El carcter
      delimitador final debe coincidir con el inicial (\, ' o ").

      Este mensaje tambin indica una constante ASCII con ms de 40
      caracteres.

      ERROR:   Invalid ASC constant (too large)
               Constante ASC invlida (demasiado grande)

      Se especificaron ms de 8 caracteres con LAASC o LCASC o se
      especificaron ms de 4 caracteres en una constante ASCII en una
      expresin.

      ERROR:   Invalid HEX constant
               Constante HEX invlida

      Se especific un carcter que no es un dgito hexadecimal con LAHEX,
      LCHEX, D0=HEX, D1=HEX o NIBHEX o se especificaron ms de 40 dgitos
      hexadecimales con NIBHEX.






                                 Pgina 142




      ERROR:   Invalid HEX constant (not 2, 4, or 5 digits)
               Constante HEX Invlida (no tiene 2, 4 o 5 dgitos)

      La constante hexadecimal para D0=HEX y D1=HEX debe consistir en dos,
      cuatro o cinco dgitos.

      ERROR:   Invalid HEX constant (not HEX digit)
               Constante HEX invlida (dgito no HEX)

      Hay un carcter que no es un dgito hexadecimal despus de un # en una
      expresin.

      ERROR:   Invalid HEX constant (too large)
               Constante HEX invlida (demasiado grande)

      Se especificaron ms de 16 dgitos hexadecimales para LAHEX o LCHEX.

      ERROR:   Invalid HEX constant (too many digits)
               Constante HEX invlida (demasiados dgitos)

      Hay ms de ocho dgitos hexadecimales despus de un # en una expresin.

      ERROR:   Invalid expression
               Expresin invlida

      La expresin no es una expresin vlida o falta una expresin. Puede
      haber otro mensaje a continuacin de ste que de una informacin ms
      detallada acerca del error.

      Sugerencia: Cualquier campo que empieza despus de la columna 30 se
                  considera que es un comentario a menos que se haya usado la
                  opcin -c

      ERROR:   Invalid field select/digit
               Dgito/selector de campo invlido

      El modificador no es una expresin vlida ni un indicador vlido de
      seleccin de campo. (P, WP, XS, X, S, M, B, W o A).

      Sugerencia: Este mensaje se da cuando la expresin no es vlida. Puede
                  haber otro mensaje impreso que de una informacin ms
                  detallada acerca del error.

      ERROR:   Invalid file specifier
               Especificador de fichero invlido

      El especificador de fichero de RDSYMB, CHARMAP o INCLUDE no incluye un
      carcter delimitador al final o falta el especificador de fichero.

      Sugerencia: Cualquier campo que empieza despus de la columna 30 se
                  considera que es un comentario a menos que se haya usado la
                  opcin -c.

      ERROR:   Invalid flag expression
               Expresin de bandera invlida

      La expresin de bandera no es una expresin vlida o no est presente.
      Puede haber otro mensaje a continuacin de ste que de una informacin
      ms detallada acerca del error.

      Sugerencia: Cualquier campo que comienza despus de la columna 30 se
                  considera que es un comentario a menos que se haya usado la
                  opcin -c.



                                 Pgina 143




      ERROR:   Invalid format character
               Carcter de formato invlido

      La referencia al parmetro indirecta del macro "$(...)" contiene un
      carcter invlido. Los caracteres dentro del parntesis deben ser un
      dgito, dos puntos o uno de los caracteres "HhXxDdOoUu".

      ERROR:   Invalid parameter indirection
               Indireccin del parmetro invlida

      La referencia al parmetro indirecta del macro "$(" se encontr pero
      falta el parntesis derecho.

      ERROR:   Invalid symbol
               Smbolo invlido

      No se especific ningn nombre de smbolo con la declaracin = o EQU, o
      hay un signo (=) en la columna uno o dos seguido de un espacio o de un
      tabulador.

      ERROR:   Invalid symbol name
               Nombre de smbolo invlido

      No se especific ningn smbolo para IFDEF, IFNDEF, IFOPC o IFNOPC.

      Sugerencia: Cualquier campo que comienza despus de la columna 30 se
                  considera que es un comentario a menos que se haya activado
                  la opcin -c.

      ERROR:   Label not allowed on GOYES/RTNYES statement
               No se permiten etiquetas en una declaracin GOYES/RTNYES

      Una lnea que contiene una declaracin GOYES o RTNYES tiene una
      etiqueta. Esto no est permitido pues GOYES y RTNYES son la segunda
      parte de una operacin test.

      ERROR:   List type not CODE,MACRO,INCLUDE,PSEUDO,ALL, or NOLIST
               El tipo del listado no es ni CODE, MACRO, INCLUDE, PSEUDO ni
               ALL, o NOLIST

      El/los modificador/es de CLRLIST y SETLIST deben comenzar con las
      letras C, M, I, P o A para Cdigo, Macro, Include, Pseudo o All
      respectivamente.

      ERROR:   Missing expression
               Falta expresin

      Se requiere una expresin pero no se encuentra ninguna.

      Sugerencia: Comprueba que la expresin comienza antes de la columna de
                  comentario, que por defecto es la 30 (usa la opcin c para
                  cambiar la columna)

      ERROR:   Missing separator character
               Falta carcter separador

      No se encontr el carcter separador de cadenas para el test IFSTR??

      Sugerencia: El primer carcter diferente de espacio despus de la
                  declaracin IFSTR?? se usa como el carcter separador para
                  delimitar dos cadenas. El carcter debe aparecer tres veces
                  en total (principio de la primera cadena, separador entre
                  cadenas y final de la segunda cadena).



                                 Pgina 144




      ERROR:   Modulo zero (result set to 0)
               Mdulo cero (resultado puesto a 0)

      La expresin a la derecha del operador % es igual a cero.

      ERROR:   More data than operators in expression
               Hay ms datos que operadores en la expresin
               
      La expresin est incompleta. Este mensaje puede darse como resultado
      de un operador incorrecto (se debera imprimir otro mensaje de error)

      Sugerencia: Comprueba si hay espacios dentro de la expresin o si hay
                  un smbolo que no est entre parntesis.

      ERROR:   Name on ENDM doesn't match MACRO name
               El nombre de MACRO no tiene su correspondiente Nombre en ENDM

      La etiqueta en la declaracin ENDM no es la misma que la etiqueta de la
      declaracin MACRO ms reciente.

      Sugerencia: La falta de una declaracin ENDM puede causar este mensaje
                  si hay otro macro definido despus del ENDM que falta.

      ERROR:   Number of nibbles must be non-negative
               El nmero de nibbles no puede ser negativo.

      La expresin del nmero de nibbles en BSS es menor que cero.

      ERROR:   Number of nibbles too big for file
               Nmero de nibbles demasiado grande para el fichero.

      El nmero de nibbles solicitados por BSS desbordara el espacio de
      direcciones de la CPU Saturno.

      ERROR:   Only one TITLE statement allowed per file
               Solo se permite una declaracin TITLE por fichero.

      Se ejecut una declaracin TITLE pero el ttulo dado no coincide con el
      ttulo actual.

      Sugerencia: Comprueba si hay declaraciones TITLE en los ficheros
                  "incluidos" (con INCLUDE)

      ERROR:   Operator left on stack
               Queda un operador en la pila

      No hay bastantes datos para el nmero de operadores dado. Este mensaje
      indica un probable defecto del ensamblador y se debera informar de l
      como tal.

      ERROR:   Operator stack overflow
               Desbordamiento de la pila de operadores

      La expresin es demasiado complicada. No pueden haber ms de 20
      operadores pendientes, incluyendo el parntesis derecho.

      Sugerencia: Simplificar la expresin dividindola en expresiones ms
                  pequeas. Asigna un smbolo a cada expresin ms pequea y
                  combnalos para obtener la expresin final.

      ERROR:   Operator stack underflow
               Desbordamiento inferior de la pila de operadores

      Este mensaje indica un probable defecto del ensamblador y se debera
      informar de l como tal.

                                 Pgina 145




      ERROR:   PC changed (use old value)
               Ha cambiado el PC (usa el valor antiguo)

      Ha cambiado el valor de la etiqueta de la declaracin ABS o REL.

      Sugerencia: Mira en las referencias cruzadas si hay otra referencia a
                  la etiqueta que cambie su valor.

      ERROR:   PC wrapped around to 00000
               El contador PC ha pasado por 00000 al sobrepasar la mxima
               direccin posible (FFFFF) (se ha "enrollado" el PC)

      El nmero de nibbles del fichero excede el espacio de direcciones de la
      CPU del Saturno. El PC actual se decrementa en #100000

      ERROR:   Parameter too big (truncated)
               Parmetro demasiado grande (truncado)

      El tamao del campo de referencia al parmetro indirecta del macro 
      causara que la lnea resultante en la expansin del macro sea mayor de
      255 caracteres de largo. El tamao de la referencia se reduce para que
      quepa.

      ERROR:   Relocatable offset not allowed here
               No se permite aqu un offset relocalizable

      Una expresin de dgito es relocalizable. La expresin de dgito debe
      ser o absoluta o externa.

      ERROR:   Single nibble field not allowed here
               No se permite aqu un campo de un solo nibble

      Se solicit para una instruccin r=r+CON o r=r-CON una seleccin de
      campo que se podra evaluar a un campo de un nibble (P, XS, S o WP)

      Sugerencia: Esta restriccin se debe a la limitacin del procesador
                  1LR2 que hace que estas instrucciones fallen con campos de
                  un solo nibble.

      ERROR:   Symbol changed (use old value)
               El Smbolo ha cambiado (se usa el valor antiguo)

      El valor actual de un smbolo es diferente del valor en el pase 2.

      Sugerencia: Comprueba si hay un ensamblado condicional que usa
                  declaraciones IFPASS1 o IFPASS2 incorrectamente. Esto
                  tambin estar causado por un error en el cdigo generado
                  antes de esta lnea.

      ERROR:   Symbol was not defined in pass 1
               No se defini el smbolo en el pase 1

      Un smbolo que se define en el pase 2 no estaba definido en el pase 1.

      Sugerencia: Comprueba si hay un ensamblado condicional que use las
                  declaraciones IFPASS1 o IFPASS2 incorrectamente.

      ERROR:   Test instruction without GOYES/RTNYES
               Instruccin de test sin GOYES/RTNYES

      La lnea anterior era una instruccin de test pero esta lnea no es ni
      GOYES ni RTNYES.




                                 Pgina 146

      ERROR:   Too many relocatable/external references
               Demasiadas referencias relocalizables/externas

      Hay presentes ms de una referencia externa o relocalizable. Solo est
      permitida como mximo una referencia externa o relocalizable.

      ERROR:   Unable to open CHARMAP file (filespec)
               No se puede abrir el fichero CHARMAP
               (especificacin_de_fichero)

      Se ha producido un error abriendo el fichero indicado por el
      especificador de fichero proporcionado.

      Sugerencia: Comprueba que el especificador de fichero sea correcto y
                  que el fichero sea leble. Comprueba tambin el valor de la
                  variable de entorno SASM_CHARMAP.

      ERROR:   Unable to open INCLUDE file (filespec)
               No se puede abrir el fichero INCLUDE
               (especificacin_de_fichero)

      Se ha producido un error abriendo el fichero indicado por el
      especificador de fichero proporcionado. Este mensaje va a continuacin
      de la lnea que contiene el error

      Sugerencia: Comprueba que el especificador de fichero sea correcto y
                  que el fichero sea leble. Comprueba tambin el valor de la
                  variable de entorno SASM_INCLUDE.

      ERROR:   Unable to open RDSYMB file (filespec)
               No se puede abrir el fichero RDSYMB (especificador_de_fichero)

      Se ha producido un error abriendo el fichero indicado por el
      especificador de fichero proporcionado.

      Sugerencia: Comprueba que el especificador del fichero sea correcto y
                  que el fichero sea leble. Comprueba tambin el valor de la
                  variable de entorno SASM_RDSYMB

      ERROR:   Undefined symbol
               Smbolo indefinido

      El smbolo usado no est definido en este fichero y el smbolo no es
      una referencia de un smbolo externo.

      ERROR:   Unknown PSEUDO-OP
               PSEUDO-CODIGO desconocido

      El cdigo interno de esta instruccin no es un cdigo que conozca el
      ensamblador.

      Sugerencia: Si el fichero de cdigo (sasm.opc) ha sido modificado ms
                  recientemente que el ensamblador, puede contener nuevos
                  cdigos que no son reconocidos por el ensamblador, ms
                  antiguo.

      ERROR:   Unlabeled MACRO statement (*MACRO used)
               Declaracin MACRO sin etiqueta (se usa *MACRO)

      La declaracin MACRO no tiene etiqueta. Se usa el nombre por defecto
      *MACRO para evitar que se intente ensamblar las instrucciones macro sin
      la expansin del macro.

      ERROR:   Unmatched '(' in expression
               '(' sin su correspondiente parntesis derecho

      Hay ms parntesis izquierdos (() en la expresin que parntesis
      derechos ()).

                                 Pgina 147




      ERROR:   Unmatched ')' in expression
               ')' sin su correspondiente parntesis izquierdo

      Hay ms parntesis derechos ()) en la expresin que parntesis
      izquierdos (().


      ERROR:   Unrecognized operator
               Operador no reconocido

      Se encontr un carcter que no es un carcter de operador vlido cuando
      se esperaba un carcter de operador.

      Sugerencia: Este mensaje de error puede estar causado por otros errores
                  en la expresin. El carcter se ignora como si no estuviera
                  all, lo que puede dar lugar a otros mensajes de error.

      ERROR:   Value too big
               Valor demasiado grande

      El valor de las expresiones en ABS o REL es mayor que la mxima
      direccin de la CPU Saturno.


      10.2  Mensajes de Error Fatales


      El nombre que precede los dos puntos en estos mensajes es el nombre del
      ensamblador actual.

      SASM.EXE:   filename is not an opcode table file
      SASM.EXE:   nombrefichero no es un fichero de tabla de cdigos

      El nombre de fichero especificado no tiene el formato correcto de un
      fichero tabla de cdigos.

      SASM.EXE:   can't back up objfile
                  no se puede retroceder dentro del fichero objeto

      El ensamblador intent escribir un nibble en una posicin del fichero
      que ya se haba usado. Este mensaje indica un probable defecto del
      ensamblador y se debera informar de l como tal.

      SASM.EXE:   corrupt opcode table entry (mnemonic not in table)
                  entrada de la tabla de cdigos corrompida (el mnemnico no
                  est en la tabla)

      El fichero de la tabla de cdigos contiene una referencia indirecta al
      mnemnico pero el mnemnico no est en la tabla de cdigos. Este
      mensaje indica un defecto en la tabla de cdigos.

      Sugerencia: Si el mnemnico no es una instruccin de nivel 0, el
                  mnemnico que hace la referencia indirecta debera tener el
                  mismo nivel que el mnemnico.

      SASM.EXE:   error creating a temporary file
                  error creando un fichero temporal

      Ha fallado la creacin de un fichero temporal. Los fichero temporales
      se usan para la entrada desde la entrad estndara y por los macros.






                                 Pgina 148


      SASM.EXE:   error creating file description for writing
                  error al escribir cuando se creaba la descripcin del
                  fichero

      Ha fallado la creacin del fichero especificado.

      Sugerencia: Verifica que el directorio del fichero es escribible y si
                  el fichero existe, comprueba que sea escribible.

      SASM.EXE:   error getting memory for reason
                  error al conseguir memoria

      El sistema operativo ha rechazado una solicitud de memoria.

      Sugerencia: Elimina las utilidades residentes en RAM para liberar
                  memoria.

      SASM.EXE:   error opening filename for access
                  error al abrir nombrefichero para acceder a l

      El nombrefichero especificado no se puede abrir para acceder a l.

      Sugerencia: Para escribir, si el fichero ya existe, comprueba que es
                  escribible.

      SASM.EXE:   error reading from file description
                  error al leer en la descripcin del fichero

      Ha fallado la lectura de un fichero. Puede estar corrompido el fichero
      o puede haber ocurrido un error del sistema.

      SASM.EXE:   error reading location from macro file
                  error al leer una posicin de un fichero de macro

      Ha fallado un intento de leer la posicin actual. El fichero puede
      estar corrompido o puede haber ocurrido un error del sistema.

      SASM.EXE:   error setting location in file description
                  error al poner una posicin en la descripcin del fichero.

      Ha fallado un intento de poner el posicionamiento actual. El fichero
      puede estar corrompido o puede haber ocurrido un error del sistema.

      SASM.EXE:   error writing to file description
                  error escribiendo en la descripcin del fichero

      Ha fallado un intento de escribir en el fichero especificado.

      Sugerencia: Comprueba si el disco est lleno, si el fichero est
                  protegido contra escritura o cualquier otra limitacin del
                  sistema operativo.

      SASM.EXE:   macro macro_name was not defined in pass 1
                  macro macro_nombre no estaba definido en el pase 1

      Se encontr una definicin de macro en el pase 2 que no se encontr en
      el pase 1.

      Sugerencia: Comprueba si hay un uso incorrecto de las declaraciones
                  IFPASS1 o IFPASS2.

      SASM.EXE:   object file cannot be [stdout]
                  el fichero objeto no puede ser [salida_estndar]

      El nombre del fichero objeto es "-" pero no se especific en la lnea
      de comandos ni la opcin h ni H.


                                 Pgina 149




      SASM.EXE:   operand type (value) si not valid
                  El tipo de operando (valor) no es vlido

      Se ha encontrado un tipo de operando invlido.

      Sugerencia: Comprueba que el fichero de la tabla de cdigos no est
                  corrompido y que la versin del ensamblador coincida con la
                  de la del fichero de la tabla de cdigos.

      SASM.EXE:   too many nibbles in output file filename
                  demasiados nibbles en el fichero de salida nombrefichero

      El fichero de salida ya contiene 1048576 nibbles cuando se ha intentado
      aadir otro nibble.

      Sugerencia: Comprueba si hay declaraciones BSS errneas.

      SASM.EXE:   unable to read current time
                  No se puede leer la hora actual

      Ha fallado una solicitud al sistema operativo de la hora actual.


      10.3  Mensajes de la Lnea de Comandos

      Code field width must be greater than 0 (nn invalid)     
      La anchura del campo de cdigo deber ser mayor que 0 (nn invlido)

            La opcin n tiene una anchura menor o igual que 0.

      Code field width must be less than nn (nn invalid)
      La anchura del campo de cdigo debe ser menor que nn (nn invlido)

            La opcin n tiene un ancho mayor que el mximo permitido. El
            valor exacto del mximo depende del campo ancho de lnea, que por
            defecto es cuatro y se pone a cinco con la opcin s.

      Comment column must be non-negative (nn)
      El nmero de columna no puede ser negativo (nn)

            La opcin c tiene un valor negativo. El valor debe ser mayor o
            igual a cero. Un valor cero significa que no hay columna de
            comentario.

      Flag number out of range (nn)
      Nmero de bandera fuera de margen (nn)

            El argumento de la opcin f contiene un nmero de bandera que no
            est entre cero y 99 inclusive.

      Invalid code generation level (string)
      Nivel de generacin de cdigo invlido (cadena)

            El argumento de la opcin P no est entre cero y tres inclusive.

      Invalid flag digit (char)
      Dgito de bandera invlido (carcter)

            El argumento de la opcin f contiene un carcter que no es ni un
            dgito ni un carcter separador. Los caracteres separadores
            vlidos son ",", " " (espacio), (;) y (:).





                                 Pgina 150


      List and code files both [stdout] (list disabled)
      Los ficheros de listados y cdigo son ambos [salida_estndar] (listado
      inhabilitado)

            La opcin A se especific con la opcin o -. La opcin A se
            ignora (con el mismo resultado que especificar la opcin N).

      Non-numeric code field width (string)
      El ancho del campo de cdigo no es numrico (cadena)

            El argumento de la opcin n no es un entero vlido.

      Non-numeric comment column (string)
      La columna de comentarios no es numrica (cadena)

            El argumento de la opcin c no es un entero vlido.

      Non-numeric expression for -D (string)
      La expresin de -D no es numrica (cadena)

            En la opcin D, la expresin que va despus del signo igual (=)
            no es un entero vlido.

            Sugerencia: Si el smbolo a definir contiene un signo igual y se
                        va a usar el valor por defecto, aade otro signo
                        igual al smbolo. Esto fuerza que se use el valor por
                        defecto.

      Non-numeric page length (string)
      La longitud de pgina no es numrica (cadena)

            EL argumento de la opcin p no es un entero vlido.

      Non-numeric page width (string)
      El ancho de pgina no es numrico (cadena)

            El argumento de la opcin w no es un entero vlido.

      Options -A, -a, and -o not allowed with multiple files
      Las opciones -A, -a y -o no estn permitidas con ficheros mltiples.

            Se especificaron nombres de ficheros mltiples junto con las
            opciones A, a u o. Solo se permiten los nombres de ficheros
            mltiples cuando se usan los nombres de la lista por defecto y
            del fichero objeto por defecto.

            Sugerencia: Este error tambin puede ser causado por tratar de
                        especificar opciones despus de un nombre de fichero.
                        Todas las opciones deben preceder al primer nombre de
                        fichero de la lnea de comando.

      Page length must be at least 4 (n)
      La longitud de la pgina debe ser al menos 4 (n)

            La longitud de la opcin p es menor que cuatro. Se deben imprimir
            al menos cuatro lneas por pgina (tres para la cabecera, una
            para datos de programa).

      Page width must be at least 44 (nn)
      El ancho de pgina debe ser al menos 44 (nn)

            El ancho de la opcin w es menor que 44. El ancho mnimo es lo
            bastante grande para permitir que quepan en una lnea una
            referencia a un smbolo y un nmero de lnea.




                                 Pgina 151




      11.   Formato del Fichero Objeto del Saturno

      Un fichero objeto del Saturno consiste en los tres componentes
      siguientes:

         +  Una cabecera de 256-bytes

         +  Cero o ms bloques de 256-bytes conteniendo cdigo

         +  Cero o ms bloques de 256-bytes conteniendo smbolos

      Todas las cantidades de dos y cuatro bytes en la cabecera y los
      registros de smbolos se almacenan en memoria con el byte ms
      significativo de la cantidad en el primer byte del campo y el byte
      menos significativo de la cantidad en el ltimo byte del campo.


      11.1  Registro Cabecera de Objeto del Saturno


       Nombre   Tamao
       Objeto   Bytes       Descripcin [Contenidos]
       ------------------------------------------------------------------
       ID         6  Identificador del Fichero [``Saturn'']
       Filesize   2  Nmero de bloques de 256 bytes en este fichero
                     [valor de 16 bits sin signo]
       Codesize   4  Nmero de nibbles de cdigo
       Symbols    2  Nmero de smbolos [valor de 16 bits sin signo]
       Refs       2  Nmero de referencias de smbolos
                     [valor de 16 bits sin signo]
       Start      4  Direccin de inicio del Cdigo
       Absolute   1  Absoluto/Relocalizable [1->ABS, 0->REL]
       Reserved   1  Byte reservado [relleno hasta la frontera de 16 bits]
       Date      26  Fecha de creacin [``Da Mes DD HH:MM:SS YYYY  '']
       Title     40  Ttulo, si lo hay; por defecto = espacios
       Reserved  20  Bytes reservados [Teclas Blandas]
       Version   26  Versin del programa que cre el fichero
       Reserved   4  Bytes reservados [ID ROM]
       Reserved 118  Bytes reservados [00]


      11.2  Registro de Cdigo de Objeto del Saturno


      Los nibbles de cdigo se almacenan dos por byte en el registro de
      cdigo. El primer nibble de cdigo est en el nibble ms significativo
      del primer byte del registro de cdigo y el segundo nibble est en el
      nibble menos significativo de ese byte.


      11.3  Bloque de Smbolos de Objeto del Saturno

      Los smbolos se almacenan en orden alfabtico. El bit ms significativo
      del campo SymInfo es el bit RESUELTO. Si el bit RESUELTO se enciende,
      el smbolo est resuelto y tiene el valor Valor. Si el bit RESUELTO no
      est encendido, ste es un smbolo externo cuyo valor se desconoce.










                                 Pgina 152






      El segundo bit ms significativo del campo SymInfo es el bit
      RELOCALIZABLE. Si el bit RELOCALIZABLE est encendido, este smbolo se
      debe ajustar (relocalizar) si la direccin inicial del mdulo se
      cambia. Si el bit RELOCALIZABLE no est encendido, ste es un smbolo
      absoluto que no se debe relocalizar.

      Los restantes 14 bits del campo SymInfo indican el nmero de
      referencias externas al smbolo. Las anotaciones de referencias al
      smbolo siguen al registro del smbolo.

       Nombre   Tamao
       Objeto   Bytes       Descripcin [Contenidos]
       -----------------------------------------------------
       SymbID     4   Identificador del registro de smbolo [``Symb'']
       Record    18   Registro de smbolo o de referencia
                      (14 registros por bloque)

       Registro de smbolo
       Name      12   Nombre del smbolo [completado con espacios]
       SymInfo    2   Informacin del smbolo y Cuenta de referencias
       Value      4   Valor del smbolo

       Registro de referencia
       Class      1   Clase de referencia
       Subclass   1   Subclase de referencia
       Address    4   Direccin
       Adjust     4   Ajuste del valor [valor de 32 bits con signo]
       Fillsize   2   Tamao de la referencia en nibbles 
                      [valor de 16 bits sin signo]
       Reserved   6   Bytes reservados [para completar hasta 18 bytes]


































                                 Pgina 153



       11.4  Tipos de referencias


       Class  Subclass   Descripcin
       ------------------------------------------------------
         0       0      Referencia directa
         0       1      Referencia Directa **
         1       0      Referencia  relativa al principio de la referencia *
                        **
         1       1      Referencia relativa al nibble pasado final de la
                        referencia * **
         1       2      Referencia relativa al inicio de la referencia
                        [REL(n)] *
         2       0      referencia SLINK
         2       1      referencia LINK
         3       0      referencia INC(n)

         *  El cargador (loader) comprueba que esta referencia est dentro
            del margen
        **  El cargador (loader) puede informar de referencias acortables en
            esta referencia.














































                                 Pgina 154