Traduccin al Castellano del fichero original en Ingls: RPLCOMP.DOC 

NOTA: N.T.> Significa: Nota del Traductor

   N.T.> En el texto encerrado entre las comillas `` y '', stas no se
         incluyen, slo se usan para delimitarlo dentro de este documento.


               Instrucciones para el programa MS-DOS "RPLCOMP"
       *****************************************************************

                                    AVISO

      Hewlett-Packard pone RPLCOMP.EXE a disposicin de sus clientes sin
      coste alguno para ayudarles en el desarrollo de aplicaciones para la HP
      48SX con las siguientes condiciones:

      N.T.>Se dejan las condiciones originales en Ingls.

       *  The program RPLCOMP.EXE and the documentation file RPLCOMP.MAN
          are provided "as is," and are subject to change without notice.
          Hewlett-Packard Company make no warranty of any kind with
          regard to the software or documentation, including, but not
          limited to, the implied warranties of merchantability and
          fitness for a particular purpose.  Hewlett-Packard Company
          shall not be liable for any error or for incidental or
          consequential damages in connection with the furnishing,
          performance, or use of this software and documentation.


       *  The program and documentation are copyrighted by Hewlett-
          Packard.  Sale of this material is prohibited without prior
          written permission of Hewlett-Packard Company.


       *  The HP Customer Support department does not support RPLCOMP.
          Questions, comments, defect reports, etc. should be directed to
          the Library Development conference on the HP Calculator
          Bulletin Board System.  All responses from Hewlett-Packard will
          normally be provided through that conference.


       *  Software generated by RPLCOMP.EXE should be tested and
          qualified in its final form.

      Las versiones revisadas del software y de la documentacin se pondrn
      en la BBS a medida que estn disponibles.






















                                   -1-











       1.  RPLCOMP - Compilador RPL

      Rplcomp es un compilador RPL o, ms exactamente, un preprocesador.
      Produce, a partir de ficheros fuente en RPL, ficheros fuente en sasm
      listos para ser ensamblados.

      El compilador se invoca as:

  rplcomp [ -C ] [ <fichero_entrada> [ <fichero_salida> [ <fichero_ext> ] ] ]

      Rplcomp acepta hasta 3 argumentos:

      <fichero_entrada> Especifica la fuente RPL. Si se omite o se especifica
                        como "-", se usa, por defecto, la entrada_estndar.
                        Los nombres de los ficheros fuente RPL usan, por
                        convencin, la extensin ".s".

      <fichero_salida>  Especifica donde ir la salida que, por defecto, es
                        la salida_estndar. Ya que normalmente la salida se
                        pasa a sasm, los nombres de los ficheros de salida
                        RPL usan, por convencin, la extensin ".a".

      <fichero_ext>     Especifica el fichero que contiene informacin para
                        la tabla "hash", llamado as porque la extensin
                        habitual es ".ext". Si se omite este parmetro, no se
                        produce esta informacin. Si se especifica este
                        parmetro como "-", se manda la informacin a la
                        salida_estndar

      La opcin -C copia la fuente RPL como comentarios en el cdigo de
      salida. Esto permite a un post-procesador editar los listados del
      ensamblado de una forma ms legible.


      1.1   Definicin de Objetos


      Cuando rplcomp compila un fichero, reconoce ciertas palabras
      (detalladas ms abajo) y genera el cdigo apropiado para ellas. Todas
      las dems palabras se supone que son las etiquetas de los objetos en el
      "runstream" y se emiten simplemente como constantes de 5 nibbles,
      posiblemente con substitucin debido a un DEFINE. Despus del
      ensamblado, se usar el programa SLOAD para rellenar las direcciones de
      los objetos del "runstream" basndose en la lista proporcionada de
      puntos de entrada llamada ENTRIES.O

      Las secciones siguientes describen las palabras reconocidas por rplcomp
      y sus acciones correspondientes.      

      Las siguientes palabras definen objetos:









                                   -2-











       LAM <lamid>
         Define un objeto DOLAM cuyo nombre est especificado por <lamid>.
         Estn permitidas las secuencias de escape no-ASCII listadas en la
         palabra $ ms abajo. <lamid> puede ser un valor DEFINIDO (Ver DEFINE
         ms abajo).

       ID <id>
         Define un objeto DOIDNT cuyo nombre est especificado por <id>. <id>
         puede ser un valor DEFINIDO (Ver DEFINE ms abajo).

       TAG <etiquetaid> <objeto>
         Define un objeto DOTAG cuya etiqueta est especificada por
         <etiquetaid> y cuyo objeto viene dado por <objeto>. <objeto> puede
         ser una definicin de un objeto o una etiqueta. <etiquetaid> puede
         ser un valor DEFINIDO (Ver DEFINE ms abajo).

       $ "cadena"
       "cadena"
         Define un objeto DOCSTR siendo el contenido lo que hay entre las
         comillas. Dos comillas consecutivas dentro de la cadena se
         interpretan como una sola comilla (por ej., ``""""'' se convierte en
         la cadena ``"''. Los caracteres no-ASCII se pueden entrar como \xx
         donde xx es el valor hex del carcter. Tambin, \n, \r, \f, \t son
         los caracteres ASCII salto de lnea, retorno de carro, salto de
         pgina y tabulador.

       CHR <carcter>
       CHR ^<carcter>
       CHR "<carcter>"
       CHR "^<carcter>"
         Define un objeto DOCHAR con el carcter especificado. Las formas
         segunda y cuarta generan caracteres de control. Por ejemplo,
         ``CHR A'' genera una ``A'',  ``CHR ^A'' genera un control-A. El
         carcter comillas se puede generar especificando ``CHR "'' o
         ``CHR """''. Tambin se pueden usar los caracteres precedidos con \
         descritos en la palabra $ ms arriba.

       CODE
       ...(cdigo en lenguaje ensamblador)...
       ENDCODE
         Para la insercin de cdigo en lenguaje ensamblador en un objeto
         DOCODE. La palabra CODE genera un DOCODE y un campo de unin (campo
         link), la palabra ENDCODE finaliza la entrada de lenguaje
         ensamblador y genera una etiqueta para ser usada por el campo de
         unin (campo link). Cuando se encuentra la palabra LOOP dentro del
         cdigo en lenguaje ensamblador, da como resultado la generacin del
         cdigo del bucle principal RPL. Rplcomp reconoce las palabras LOOP y
         ENDCODE si son 1) la primera palabra de la lnea o, 2) la segunda
         palabra precedida por una etiqueta.










                                   -3-











       # <nmero hex>
       #<nmero hex>
       <nmero decimal>
         Define un objeto DOBINT cuyo cuerpo es el nmero especificado en hex
         o decimal. Rplcomp reconoce los dgitos hex en minsculas; el
         compilador no.

       <nmero real>
       % <nmero real>
         Define un objeto DOREAL con el nmero en coma flotante especificado.
         En la primera forma, para que sea reconocido como un nmero real, el
         nmero debe contener una coma decimal (punto!) y/o ``E''. La segunda
         forma es ms permisiva y reconocer un entero como un nmero real.

       %% <nmero real extendido>
         Define un objeto DOEREL con el nmero en coma flotante especificado.

       C% <nmero real> <nmero real>
         Define un objeto DOCMP con los nmeros en coma flotante
         especificados.

       C%% <nmero real extendido> <nmero real extendido>
         Define un objeto DOECMP con los nmeros en coma flotante
         especificados.

       PTR <etiqueta>
         Fuerza que la <etiqueta> se introduzca como un objeto del runstream.

       ROMPTR <hex #> <hex #>
       ROMPTR <etiqueta>
         Define un objeto DOROMP con los dos nmeros hex de 3 dgitos
         (mximo). Si est presente la <etiqueta>, forma un objeto DOROMP
         para esa etiqueta (resuelto por el "linkador").

       ARRY [ obj ... ]
       ARRY dim ... [ obj ... ]
       LNKARRY [ obj ... ]
       LNKARRY dim ... [ obj ... ]
         Define un objeto DOARRY o DOLNKARRY con las siguientes
         caractersticas: si est presente dim ..., la formacin ser con la
         dimensionalidad dada. Si no hay ninguna dimensin presente, se
         construir una formacin lineal que contendr la lista de objetos.

         Se debe especificar siempre un objeto al menos porque el tipo de los
         elementos se determina a partir del objeto. La lista de objetos
         ocupar las posiciones de los elementos en orden. En una FORMACION,
         cada posicin de objeto debe tener un objeto; en las
         FORMACIONEs_ENCADENADAs, se pueden dejar en blanco posiciones de
         objeto usando _ como elementos y dimensionado la formacin ms
         grande que la lista de objetos.








                                   -4-











         Los objetos de las formaciones deben ser definiciones de objetos;
         los punteros a objetos no estn soportados por RPL.

       HXS <longitud en hex> <cadena>
       HXS 0
       GROB <longitud en hex> <cadena>
       GROB 0
         Define un objeto DOHSTR o DOGROB con la cadena hex especificada. Si
         la cadena contiene menos nibbles que los especificados por la
         longitud, se completa la cadena hex con ceros iniciales. (Esto se
         desva del compilador que completa con ceros finales).

         Si la longitud es cero, HXS no toma un segundo argumento.

      ESTRUCTURAS DE CONTROL

      Las siguientes palabras generan estructuras de control RPL. Adems,
      Rplcomp sigue la pista, en una pila interna, del uso de estas palabras
      para asegurar que todas las palabras de control que inician una
      estructura (tal como ``::'') tienen su correspondiente palabra de
      control de finalizacin de la estructura (tal como ``;'').

      Cuando se usan tcnicas de programacin no-estructurada o se usan
      palabras de control no reconocidas, se puede evitar este comportamiento
      de dos maneras: 1) si se rodea con parntesis la palabra de control,
      rplcomp realiza las operaciones apropiadas de la pila interna pero no
      emite ningn cdigo; 2) Si se rodea la palabra de control con
      corchetes, se compila la etiqueta de la palabra de control y rplcomp no
      realiza las operaciones asociadas de la pila interna.

      Ejemplos:
      1)
         La secuencia ``DO [LOOP] LOOP'' emitir DO, LOOP y LOOP pero no
         considera desemparejado al segundo LOOP.
      2)
         La secuencia ``ONE_DO (DO) LOOP'' emitir ONE_DO  y LOOP y no
         considerar al ``LOOP'' desemparejado.

      Esta caracterstica, una mejora con respecto al compilador, se puede
      aplicar a todas las palabras de control excepto a FCN.

      Las palabras de control RPL reconocidas por rplcomp son:

       :: ...(CdigoRPL)...  ;
            La palabra ``::'' genera DOCOL, la palabra ``;'' genera SEMI.     
            














                                   -5-











       BEGIN ...(CdigoRPL)... AGAIN
       BEGIN ...(CdigoRPL)... UNTIL
       BEGIN ...(CdigoRPL)... WHILE ...(CdigoRPL)... REPEAT
         Estas palabras generan las palabras RPL apropiadas. El cdigo RPL
         entre WHILE y REPEAT se incluye automticamente entre un DOCOL y un
         SEMI.

       DO ...(CdigoRPL)... LOOP
       DO ...(CdigoRPL)... +LOOP
         Estas palabras generan las palabras RPL apropiadas.

       IF ...(ClausulaTHEN)... THEN
       IF ...(ClausulaTHEN)... ELSE ...(ClausulaELSE)... THEN
         Estas palabras generan las combinaciones adecuadas de comillas,
         DOCOLs, SEMIs, RPITs y RPITEs para emular las palabras FORTH
         correspondiente.

       FCN { ...(lista de ids LAM )... } ...(CdigoRPL)... ENDFCN
         Genera una lista de LAMs, BIND y ABND para escribir una funcin RPL.
         La secuencia:
           FCN { A B C } ...(CdigoRPL)... ENDFCN
           es equivalente a:
           { LAM A LAM B LAM C } BIND ...(CdigoRPL)... ABND

       { ...(CdigoRPL)... }
         Las palabras ``{'' y ``}'' delimitan una lista, generando las
         palabras DOLIST y SEMI respectivamente.
































                                   -6-











       1.2  Miscelnea de Operaciones RPL


      Las siguientes palabras son reconocidas por rplcomp:

       ASSEMBLE
       ...(cdigo en lenguaje ensamblador)...
       RPL
         Para la insercin de cdigo en lenguaje ensamblador. Cuando se
         encuentra la palabra LOOP dentro del cdigo en lenguaje ensamblador,
         da como resultado la generacin del cdigo del bucle principal RPL.
         Las palabras LOOP y RPL son reconocidas por rplcomp si son 1) la
         primera palabra de la lnea o, 2) la segunda palabra precedida de
         una etiqueta.

       ( ...(comentarios)... )
       * ...(texto comentario)...
         Una instruccin parntesis izquierdo comienza un comentario. El
         comentario se acaba inmediatamente cuando se encuentra un parntesis
         derecho - el parntesis derecho no necesita ir rodeado de espacios
         (este comportamiento peculiar es por compatibilidad con el
         compilador). Esta forma del comentario no se puede dar dentro de una
         secuencia multi-instruccin (por ej., HXS (esto es una cadena hex) 5
         12345 es inaceptable). Las lneas que empiezan con un asterisco en
         la primera columna se dejan intactas como lneas comentario.

       ROMID <hexROMid interno>
       xROMID <hexROMid externo> 
       NAME <etiqueta>
       NULLNAME <etiqueta>
       xNAME <etiqueta>
       sNAME <etiqueta> <cadena>
       tNAME <etiqueta> <cadena>
         Estas directiva generan las etiquetas y la informacin necesarias
         para analizar y descompilar palabras clave. ROMID especifica un ID
         ROM para ser usado por las directivas de nombre. xROMID especifica
         un ID ROM e indica que cualquier objeto definido en este fichero
         debera referenciarse por objetos DOROMP.

         Las diferentes directivas de nombre generan etiquetas globales,
         cdigo e informacin para los ficheros .ext que se necesitan para el
         anlisis y la descompilacin. La diferencia radica en la creacin de
         la entrada "hash" (el nombre por el que el usuario identifica al
         objeto) y la etiqueta (el nombre por el que el ensamblador y el
         linkador conocen al objeto):

              NAME  -   La etiqueta global y el nombre hash son el mismo.
              xNAME -   La etiqueta global es igual al nombre hash prefijado
                        con 'x'.
              sNAME -   La etiqueta global y la entrada hash se especifican
                        independientemente.
              tNAME -   Especifica que un nombre hash adicional pertenece a
                        la etiqueta dada.






                                   -7-











              NULLNAME - no se proporciona ninguna entrada hash.

      Estas palabras tambin permiten al generador de la parte rom producir
      los valores apropiados para usarse en ROMPTRs, etc.

      Si se ha dado el xROMID, las referencias a las etiquetas producirn
      objetos DOROMP en vez de punteros ROM.

       NAMELESS <etiqueta>
       LABEL <etiqueta>
       LOCALNAME <etiqueta>
       LOCALLABEL <etiqueta>
         NAMELESS y LABEL simplemente generan etiquetas globales. LOCALNAME y
         LOCALLABEL generan etiquetas locales.

       EXTERNAL <etiqueta>
       LOCAL <etiqueta>
         Estas palabras declaran caractersticas de la etiqueta que le sigue:
         EXTERNAL provocar que todas las futuras referencia a su etiqueta
         generen objetos DOROMP; LOCAL provocar que las futuras referencias
         a su etiqueta sean locales, no globales.

       DEFINE <etiqueta1> <etiqueta2>
         Esto permite la substitucin de una etiqueta de objeto por otra.
         Tambin se puede usar en LAMs para permitir un identificador ms
         largo en el cdigo fuente, mientras se usa un identificador corto en
         la salida compilada.

       INCLUDE <nombrefichero>
         Esto permite que el texto de <nombrefichero> se intercale en el
         fuente en esta lnea. Despus de compilar el fichero incluido, la
         compilacin continuar al principio de la siguiente lnea. Se pueden
         anidar los INCLUDEs.

       TITLE ...(texto del ttulo)...
       STITLE ...(texto del subttulo)...
       EJECT
         Estas directivas generan comandos TITLE, STITLE y EJECT para el
         ensamblador. El texto para TITLE y STITLE es el resto de la lnea 














                                   -8-




