[Bajar Curso de User-Rpl] [Bajar Curso de System-Rpl] [Bajar Curso de Librerías]
System-Rpl.
El System-Rpl es el lenguaje interno de la calculadora, y como lenguaje de programación es más completo que el User-Rpl. De hecho el User-Rpl es un subconjunto del System-Rpl. A continuación se presenta el contenido de este tema, el cual comprende los algunos comandos y técnicas para la programación de la calculadora en System-RPL:
|
|
|
|
La programación en System se puede hacer a través de programas especiales desde el computador, o desde la calculadora. Particularmente he tenido solo la oportunidad de programar desde la calculadora, y a mi parecer es la forma más cómoda, dado que permite llevarnos la hp a cualquier lado, mientras que el PC no.
Para programar desde la calculadora se puede utilizar el compilador JAZZ, una herramienta de programación muy completa. Existe también una variante, el JAZZ LIGTH, el cual ocupa menos espacio en la calculadora, pero no trae el DEBUGGER para probar los programas paso a paso. Adicionalmente se debe tener instalada la librerías de mnemónicos HPTABS y la librería de fuentes universales UFL.
Para usar el JAZZ se debe tener una GX con una tarjeta de expansión de por lo menos 128 KB. La versión LIGTH es para aquellas personas que posean una GX sin tarjeta de expansión. Los propietarios de una G se les hará imposible programar en System desde la calculadora directamente, por lo que les recomiendo que usen el Emulador de la Calculadora para que trabajen con el JAZZ.
Las versiones más recientes del JAZZ , JAZZ LIGTH y la librería de mnemónicos HPTABS se pueden bajar desde la página de quien lo creó, Mika Heiskanen. No coloco el tamaño de cada uno estas librerías ni un link directo para bajarlas debido a que están siempre en constante actualización.
Antes de empezar a programar en system, se deben tener instaladas las tres librerías mencionadas anteriormente, JAZZ ó JAZZ LIGTH (:0: 992), HPTABS (:0: 993) y la UFL (:0: 257).
Un programa
en System es todo aquello que este entre ":: ;" . Esto último
se conoce como un secundario. Un ejemplo de programa puede ser:
":: x<< %1 %2 x+ x>> ;". Como puede verse, el programa
está como un string debido a que es el código fuente
del programa. Este programa al compilarlo y ejecutarlo coloca en
la pila de datos el numero 1, el 2 y luego los suma, dando como resultado
el número 3.
Si te estás preguntando que es todo eso y cómo se compila
un programa, solo sigue leyendo el curso y entenderás los tipos
de objetos en system y cómo compilar programas.
Los comandos de la librería JAZZ permiten compilar, descompilar,
editar o ejecutar paso a paso un programa. A continuación se describen
algunos de ellos:
ASS | Compila el código fuente de un programa para convertirlo en un ejecutable. |
DIS | Descompila un ejecutable para convertirlo en un equivalente de su código fuente. También descompila cualquier tipo objeto. |
SDB | Ejecuta paso a paso un programa , para verificar el comportamiento de este. |
ED | Editor de programas en código fuente o ejecutables. |
Se puede probar compilando
"::
x<< %1 %2 x+ x>> ;" que dará cómo resultado el
programa << 1 2 + >>, el cual es un programa en User.
También se puede probar colocándolo sin los delimitadores
de programa:
":: %1 %2 x+ ;", que al compilarlo da como resultado
el mismo programa en User pero sin los delimitadores.
Si quieres hacer un programa que solo muestre Externals, prueba con:
"::
DUP ;" y al compilarlo verás tu primer programa External. Esto
deja en evidencia que cualquier programa que muestre solo Externals puede
ser modificado con un editor adecuado.
Antes de empezar a programar es bueno saber los tipos de objetos en System,
los cuales no siempre son iguales que en User. A continuación se
presenta una tabla con los tipos de objetos en System (hexadecimales) y
su equivalente en User (decimales):
Nombre |
|
System (hex) | User (dec) |
---|---|---|---|
Any | Cualquier Objeto | 0 | -- |
Real | Número Real | 1 | 0 |
Cmp | Número Complejo | 2 | 1 |
Str | Cadena de Caracteres | 3 | 2 |
Arry | Formación | 4 | 3,4 |
List | Listas | 5 | 5 |
Idnt | Nombre Global | 6 | 6 |
Lam | Nombre Local | 7 | 7 |
Seco | Secundario | 8 | 8 |
Symb | Simbólico | 9 | 9 |
Sym | Clase Simbólico | A | 6,7,9 |
Hxs | Cadena Hexadecimal | B | 10 |
Grob | Objeto Gráfico | C | 11 |
Tagged | Objeto Etiquetado | D | 12 |
Unitob | Objeto Unidad | E | 13 |
-- | Puntero ROM | F | 14 |
-- | Entero Binario | 1F | 20 |
-- | Directorio | 2F | 15 |
-- | Real Extendido | 3F | 21 |
-- | Complejo Extendido | 4F | 22 |
-- | Formación Encadenada | 5F | 23 |
-- | Carácter | 6F | 24 |
-- | Objeto Código | 7F | 25 |
-- | Librería | 8F | 16 |
-- | Backup | 9F | 17 |
-- | Librería de Datos | AF | 26 |
-- | Objeto Externo1 | BF | 27 |
-- | Objeto Externo2 | CF | 28 |
-- | Objeto Externo3 | DF | 29 |
-- | Objeto Externo4 | EF | 30 |
Como se puede apreciar, los tipos de objetos en System no coinciden con los tipos de objetos de User. Esto se debe considerar cuando se vaya a programar con los diferentes tipos de objetos.
Como se dijo anteriormente, el User es un subconjunto del System, por lo que los comandos de User pueden ser usados dentro de programas en System. Para incluir comandos de User, solo se deben preceder de una equis en minúscula (x). Los comandos en System no requieren esta especificación para ser utilizados.
EJEMPLO:
::
"Agenda"
{ "Nombre:" "Teléfono" "E-mail:" }
{ }
DUPDUP
xINFORM
;En este ejemplo se han incluido comandos de User y de System. Nótese que el comando de User INFORM está precedido de una equis en minúscula, mientras que el comando de System DUPDUP no. DUPDUP es un comando de System que permite duplicar dos veces lo que este en el nivel uno de la pila.
::
"Agenda"
"Nombre:" "Teléfono" "E-mail:"
THREE{}N
NULL{}
DUPDUP
xINFORM;
El primer ejemplo ocupa un poco más que el segundo. Usar estos trucos nos ahorra espacio en memoria, algo que es muy apreciado (sobre todo en las 48G).
Todos los comando disponibles del System RPL con su respectiva descripción se pueden consultar en la documentación del Manual de System RPL traducido al Español. También desde el editor de programas de JAZZ (ED) pulsando la letra "H" aparece la lista de comandos. Si está escribiendo un comando y no recuerda bien cual es, puede escribir las primeras letras y pulsar la letra "H" para ver la lista de comandos relacionados.
EJEMPLO:
|
|
|
|
Esto se puede hacer
para cualquier comando del system-RPL.