PROGRAMACIN
EN SYSTEM-RPL
by LUIS EDUARDO VALDIVIESO VIDAL
LOJA ECUADOR
2 004
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
1.- PRLOGO.
El System-Rpl es un lenguaje que nos permite realizar cualquier programa que queramos, tales como los formularios del
CALCULATOR MODES o TRANSFER, pero resulta muy peligroso al momento de correr un programa, al contrario del User,
no detecta errores, causando la prdida de archivos que han sido guardados en el puerto 0, 1 o Home.
Para programar en System-Rpl, existen algunos programas que nos permiten ensamblar el cdigo system, tales como: el
JAZZ, un excelente programa de Mika Heiskanen; la librera 256 y 257 que viene incorporada en la calculadora, El CQIF?, El
Extable y El Emacs.
Yo en el tiempo que llevo programando en System-Rpl, siempre he utilizado el Emacs, aunque depende de cada persona
acostumbrarse con cierto programa, es as que en el presente manual se utilizar el Emacs para ensamblar los programas, el
mismo que requiere del Extable para su funcionamiento.
Este manual surge del estudio de diferentes documentos referentes al tema y de la experiencia adquirida durante todos estos
aos. Cuando no sabia programar en este lenguaje, no descanse hasta encontrar manuales que me permitiesen aprender,
pero exista poca o nada bibliografa en espaol acerca del tema, es as que este manual se incorpora a la poca bibliografa
existente.
Ahora quiero compartir todos mis conocimientos con mis compaeros de la Escuela de Ingeniera Civil de la Universidad
Tcnica Particular de Loja (U.T.P.L.).
No se olviden visitar mi sitio web, donde encontrarn informacin relacionada con la HP aplicada a Ingeniera Civil, adems,
pueden formar parte de nuestro equipo de programadores, nico en el ECUADOR, desgraciadamente no existen otros sitios
ECUATORIANOS, lo cual me entristece enormemente.
Como informacin adicional, les cuento que HP PROGRAMS CIVIL se encuentra en la red desde el 16 de Enero del 2 004,
aunque estuvo planificado para el mes de Noviembre del ao anterior, desafortunadamente por motivos ajenos a mi voluntad
no ocurri as.
Saludos desde ECUADOR a todos aquellos que visitan HP PROGRAMS CIVIL.
[Link]
E-mail: [Link]
LUIS EDUARDO VALDIVIESO VIDAL
Loja, Marzo del 2 004
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
2.- PRINCIPIOS DEL RPL.
(El siguiente extracto esta tomado textualmente de "RPL: Un Lenguaje de Control Matemtico" por W.C. Wickes, publicado
en "Entornos de Programacin", Instituto para la Investigacin de Forth Aplicado, Inc., 1988)
En 1984, se inici un proyecto en la divisin de Hewlett-Packard en Corvallis para desarrollar el software de un nuevo sistema
operativo para el desarrollo de una lnea de calculadoras y dar soporte a una nueva generacin de hardware y software.
Anteriormente todas las calculadoras HP se implementaron enteramente en lenguaje ensamblador, un proceso que se iba
haciendo cada vez m s pesado e ineficiente a medida que aumentaba la memoria de las calculadoras. Los objetivos para el
nuevo sistema operativo fueron los siguientes:
Proporcionar control de la ejecucin y manejo de la memoria, incluyendo memoria conectable;
Proporcionar un lenguaje de programacin para un rpido desarrollo de prototipos y aplicaciones;
Para soportar un variedad de calculadoras de negocio y tcnicas;
Para ejecutarse idnticamente en RAM y ROM;
Para minimizar el uso de memoria, especialmente RAM;
Para ser transportable a varias CPU's;
Para ser extensible; y
Para soportar operaciones de matemtica simblica.
Se tuvieron en cuenta varios lenguajes y sistemas operativos ya existentes pero ninguno cumpla con todos los objetivos del
diseo. Por consiguiente se desarroll un nuevo sistema, el cual mezcla la interpretacin entrelazada de Forth con el enfoque
funcional de Lisp.
El sistema operativo resultante, conocido de modo no oficial como RPL (de Reverse-Polish Lisp), hizo su primera aparicin
pblica en junio de 1986 en la calculadora Business Consultant 18C. Mas tarde, RPL ha sido la base de las calculadoras HP-
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
17B, HP-19B, HP-27S, HP-28C y HP-28S y HP 48S y HP 48SX. La HP-17B, 18C y la 19B se disearon para aplicaciones de
negocios; ellas y la calculadora cientfica HP-27S
ofrecen una lgica de clculo "algebraica" y el sistema operativo subyacente es invisible para el usuario. Las familias HP
28/HP 48 de calculadoras
cientficas usan una lgica RPN y muchas de la facilidades del sistema operativo estn disponibles directamente como
comandos de la calculadora.
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
PARTE I
TIPOS DE OBJETOS
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
3.1.- TIPOS DE OBJETOS.
Antes de pasar a programar, es necesario conocer los tipos de objetos que posee la HP49G. Los tipos de objetos se los
puede agrupar en tres clases:
Objetos de la Clase de Datos.
Objetos de la Clase de Identificador.
Objetos de la Clase de Procedimiento.
3.1.1
OBJETOS DE LA CLASE DE DATOS.
OBJETO ENTERO BINARIO (BINTS).
OBJETO REAL.
OBJETO COMPLEJO.
OBJETO COMPLEJO EXTENDIDO.
OBJETO FORMACIN.
OBJETO FORMACIN ENCADENADA.
OBJETO CADENA DE CARACTERES.
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
OBJETO CADENA HEX (CADENA HEXADECIMAL).
OBJETO CARCTER
OBJETO GRFICO (GROB).
OBJETO UNIDAD.
OBJETO LISTA.
OBJETO SIMBLICO (EXPRESIN ALGEBRAICA).
OBJETO DATOS DE BIBLIOTECA.
OBJETO DIRECTORIO.
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
OBJETO ETIQUETADO.
OBJETO EXTERNO.
3.1.2
OBJETOS DE LA CLASE DE IDENTIFICADOR.
OBJETO PUNTERO ROM (Nombre XLIB).
OBJETO IDENTIFICADOR (NOMBRE GLOBAL).
OBJETO IDENTIFICADOR TEMPORAL (NOMBRE LOCAL).
3.1.3
OBJETOS DE LA CLASE DE PROCEDIMIENTO.
OBJETO CDIGO.
OBJETO CDIGO PRIMITIVA.
OBJETO PROGRAMA.
3.1.4
TERMINOLOGA Y ABREVIATURAS.
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
OBJETO
ABREVIATURA
Cualquier objeto
ob
Objeto identificador
id
Objeto identificador temporal
lam
Objeto puntero ROM
romptr
Objeto entero binario
Objeto real
Objeto real extendido
%%
Objeto complejo
C%
Objeto complejo extendido
C%%
Objeto formacin
arry
Objeto formacin encadenada
lnkarry
Objeto cadena de caracteres
Objeto cadena hex (cadena
hxs
hexadecimal)
Objeto carcter
chr
Objeto externo
ext
Objeto cdigo
code
Objeto cdigo primitiva
primcode
Objeto secundario
::
Objeto lista
list { }
Objeto simblico
symb
Cualquier objeto compuesto
comp
Objeto directorio
rrp
Objeto etiquetado
tagged
TRUE/FALSE
flag
4.- CREACIN DE OBJETOS.
Un nmero binario puede ser creado de diferentes formas:
Una vez compilado se tiene:
Un nmero entero se crea anteponiendo la palabra ZINT:
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
Un nmero real se representa anteponiendo el smbolo %:
Los nmeros reales extendidos se representan anteponiendo el smbolo %%:
Los nmeros complejos se representan anteponiendo el smbolo C%:
Un carcter se representa anteponiendo CHR_:
Las cadenas hexadecimales se crean usando la siguiente estructura:
HXS <longitud> <hxscuerpo>
La longitud esta en nibbles y hxscuerpo es el contenido de este.
4.1
CADENAS (STRINGS).
$_R<<
("R<ngulo><ngulo>" )
$_R<Z
( "R<ngulo>Z" )
$_XYZ
( "XYZ")
$_<<>>
( "ABBB")
$_{}
( "{}")
$_[]
( "[]")
$_''
( "''")
$_::
( "::")
$_LRParens
( "()")
$_2DQ
( """""")
$_ECHO
( "ECHO")
$_EXIT
( "EXIT")
$_Undefined
( "Undefined")
$_RAD
( "RAD")
$_GRAD
( "GRAD")
10
Programacin en System-Rpl
NEWLINE$
by LUIS VALDIVIESO VIDAL
( "
")
SPACE$
( " ")
5.- CONVERSIN DE OBJETOS.
262F1
COERCE: Convierte un nmero real a binario ( % #).
2F31F
C%>#: Convierte un nmero complejo a binario ( C% #).
05AO3 HXS># Convierte una cadena hexadecimal a binario ( hxs # ).
O5A51 CHR># Convierte un objeto a binario ( hxs #).
059CC #>HXS Convierte un nmero binario a cadena hexadecimal ( # hxs ).
2FFAP %>%%: Convierte un nmero real a real extendido ( % %% ).
2FF9B %%>%: Convierte un nmero real extendido a real (%%%).
262F6
UNCOERCE: Convierte un nmero binario a real (#%).
%%P>R
Convierte coordenadas polares (dadas en reales extendidas) a rectangulares reales ( %%radio %% ngulo
%%x %%y ).
%%R>P
Convierte coordenadas rectangulares (dadas en reales extendidas) a polares reales ( %%x %%y
%%radio %% ngulo ).
COERCE2
Convierte dos nmeros reales a binarios (%2 %1 #2 #1).
COERCESWAP Convierte un real a binario y luego hace SWAP (ob %1 #1 ob ).
UNCOERCE2
Convierte dos nmeros binarios a reales (#2 #1 %2 %1).
UNCOERCE%% Convierte un nmero binario a real extendido (# %%).
11
Programacin en System-Rpl
%%H>HMS
by LUIS VALDIVIESO VIDAL
Horas decimales a [Link] ( %% --> %%' ).
6.- ARGUMENTOS.
En System-Rpl es muy importante chequear el tipo y nmero de argumentos que requiere un programa, cuando estos son
ingresados por el usuario. No as con User-Rpl, pues aqu se hace el chequeo de los argumentos automticamente.
Para chequear el nmero de argumentos de 0 a 5 presentes en la pila, use una de las siguientes ordenes:
CK0, CK0NOLASTWD
No se requiere ningn argumento
CK1, CK1NOLASTWD
Se requiere un argumento
CK2, CK2NOLASTWD
Se requieren dos argumentos
CK3, CK3NOLASTWD
Se requieren tres argumentos
CK4, CK4NOLASTWD
Se requieren cuatro argumentos
CK5, CK5NOLASTWD
Se requieren cinco argumentos
Ahora para verificar el tipo de argumentos, se pueden utilizar los siguientes comandos:
CK&DISPATCH0
CK&DISPATCH1
CKN&Dispatch
Los comandos CK&DISPATCH1 y CK&DISPATCH0 son usados para permitir que un programa realice acciones diferentes
basados en los tipos de argumentos dados a l. Ellos se usan as:
::
-------CK&DISPATCH1
tipo1 accin1
tipo2 accin2
--------------tipon accinn
;
Los pares del tipo / accin son terminados por un ?SEMI (;). Si despus de despachar, se requiere dar mas acciones para
todos los tipos de argumentos, habr que adjuntar todo el CK&DISPATCH1 en un bloque secundario (: : ; ).
El CK&DISPATCH0 trabaja as: verifica si la pila empareja las definiciones del tipo1. Si lo hace, se ejecuta la accin1
despus de que el programa reasume la ejecucin despus de SEMI. Cada accin debe ser un solo objeto, si se quiere
hacer mas de una accin, todos ellos deben ser incluidos en un secundario, es decir, entre : : y ;.
Si la definicin del tipo no empareja la pila, entonces se verifica tipo2, y as sucesivamente. Si ningn tipo establecido fuese
encontrado, ocurre un error, y se da un Bad Argument Type (Tipo de Argumento Incorrecto).
CK&DISPATCH1 procede as: Por cada tipo1, desde el tipo1 hasta el tipon, si el tipo1 coincide con la configuracin de la pila,
entonces se ejecuta la accin1, descartndose el resto de las palabras que contiene CK&DISPATCH1. Si no se encuentra
ninguna coincidencia, se informa del error Bad Argument Type.
12
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
Incluso cuando su programa acepta una combinacin de argumentos, este comando todava es til para verificar si los
argumentos dados son del tipo.
La diferencia entre CK&DISPATCH1 y CK&DISPATCH0, es que este ltimo, despus de completar todos los pasos sin xito,
despoja todas las etiquetas de los argumentos, convierte enteros (ZINTS) a reales (REALES) y hace un segundo paso. Solo
despus del segundo paso sin una emparejada, devuelve Bad Argument Type.
El entero binario tipo1 se codifica de la siguiente manera:
#nnnnn
|||||
||||+-- Tipo de argumento del nivel 1
|||+--- Tipo de argumento del nivel 2
||+---- Tipo de argumento del nivel 3
|+----- Tipo de argumento del nivel 4
+------ Tipo de argumento del nivel 5
Aqu cada n es un digito hexadecimal y representa el tipo de objeto, de acuerdo a la tabla V.1. Por ejemplo la definicin de
tipo #1982 representa un nmero real en el cuarto nivel, un objeto simblico en el tercero, un objeto secundario en el
segundo y un nmero complejo en el primer nivel de la pila. El tipo #AF indica una biblioteca de datos en el nivel 1.
Tabla V.1: TIPOS DE OBJETOS.
Valor
Argumento
# nombre
TYPE del Usuario
Cualquier Objeto
Nmero Real
Nmero Complejo
cmp
Cadena de Caracteres
str
Formacin
arry
3,4
Lista
list
any
real
Nombre Global
Nombre Local
lam
idnt
7
Secundario
seco
Simblico
symb
Clase Simblico
Cadena Hex
hxs
10
Objeto Grfico
grob
11
sym
6,7,9
Objeto Etiquetado
TAGGED
12
Objeto Unidad
unitob
13
0F
Puntero ROM
14
1F
Entero Binario
20
2F
Directorio
3F
Real Extendido
4F
Complejo Extendido
5F
6F
Formacin Encadenada
Carcter
15
21
22
23
24
13
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
7F
Objeto Cdigo
25
8F
Biblioteca
9F
Backup
AF
Biblioteca de Datos
BF
Objeto externo1
27
CF
Objeto externo2
28
DF
Objeto externo3
29
EF
Objeto externo4
30
16
17
26
CKN&Dispatch es una combinacin de CKN y CK&DISPATCH1, donde N es un nmero de 1 a 5, estas palabras combinan
CKN con CK&DISPATCH1, porque ellos usan CKN, ellos solo deben ser usados en ordenes de biblioteca.
El comando TYPE se desmonta de la siguiente manera:
::
CK1
: : CK&DISPATCH0
real
cmp
%0
%1
str
%2
arry
XEQTYPEARRY
list
%5
id
%6
lam
%7
seco
TYPESEC ( 8, 18, o 19 )
symb
%9
hxs
%10
grob
% 11
TAGGED
% 12
unitob
% 13
rompointer
% 14
THIRTYONE ( # )
% 20
rrp
% 15
# 3F ( %% )
% 21
# 4F ( C%% )
% 22
# 5F ( LNKARRY )
% 23
# 6F ( CHR )
% 24
# 7F ( CODE )
% 25
library
% 16
backup
% 17
# AF
% 26 ( Biblioteca de Datos )
any
% 27 ( external )
;
SWAPDROP
;
14
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
EJEMPLOS:
Ej1.:
Verifica que haya un argumento en la pila.
::
CK1NOLASTWD
;
@
Ej2.:
::
CK&Dispatch
#3
::
ES UNA CADENA DE CARACTERES
xMSGBOX
;
;
@
En este ejemplo si se pone una cadena devuelve el mensaje ES UNA CADENA DE CARACTERES.
Si se pone un nmero real, devuelve Bad Argument Type.
7.- CONDICIONANTES.
En System-Rpl los condicionantes son diferentes a los de User-Rpl, pues en el primero un FALSO se representa con un
nmero 0, mientras que un VERADERO se representa con un nmero 1.
En System-Rpl, un FALSO se representa con un FALSO, y un VERADERO con un VERADERO.
Si se necesita convertir un VERDADERO o un FALSE a un nmero (1 o 0), puede emplearse el comando COERCEFLAG.
Los operadores bolanos como son NOT, AND, OR y XOR, son muy tiles cuando se requiere que se den mas de una
condicin.
15
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
7.1 BANDERAS Y TEST.
Estos test devuelven TRUE o FALSE, y sirvan para comparar dos objetos. Las siguientes palabras comprueban el
tipo de objeto y la igualdad:
Pregunta si dos objetos son iguales.
<=
Pregunta si el ob2 es menor que el ob1.
<
Pregunta si el ob2 es menor que el ob1.
>
Pregunta si el ob2 es mayor que el ob1.
>=
Pregunta si el ob2 es mayor o igual que el ob1.
<>
Pregunta si el ob2 es diferente del ob1.
Para poder comparar utilizar estos smbolos, debe especificar el tipo de objeto, por ejemplo, si se va a comparar dos
nmeros reales, se pondr %=, %<, %<>, etc.
EQ
( ob1 ob2 flag )
Si los objetos ob1 y ob2 son el mismo objeto, es decir, ocupan el mismo espacio en la memoria, entonces devuelve
TRUE, si no FALSE.
EQUAL
( ob1 ob2 flag )
Si el ob1 es igual al ob2, devuelve TRUE, caso contrario FALSE, es similar a la palabra SAME del usuario.
2DUPEQ
( ob1 ob2 ob1 ob2 flag )
Devuelve TRUE si ob1 y ob2 tienen la misma direccin fsica.
EQOR
( flag1 ob1 ob2 flag2 )
Hace EQ y luego OR.
EQUALOR
( flag1 ob1 ob2 flag2 )
Hace EQUAL y luego OR.
EQOVER
( ob1 ob2 ob3 ob1 flag ob1 )
Hace EQ y luego OVER.
EQUALNOT
( ob1 ob2 flag )
Devuelve FALSE si ob1 es igual a ob2.
16
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
Las siguientes palabras comprueban el tipo de un objeto. Las palabra de la forma TYPE...? tienen un diagrama de
pila ( ob flag ); las de la forma DTYPE...? o DUPTYPE...? duplican primero el objeto ( ob ob flag ).
Palabras Test
Tipo de Objeto
TYPEARRY?
Pregunta si es una formacin.
DUPTYPEARRY?
Duplica y pregunta si es una formacin.
TYPEBINT?
Pregunta si es un entero binario.
DUPTYPEBINT?
Duplica y pregunta si es un entero binario.
TYPECARRY?
Pregunta si es una formacin compleja.
TYPECHAR?
Pregunta si es un carcter.
DUPTYPECHAR?
Duplica y pregunta si es un carcter.
TYPECMP?
Pregunta si es un nmero complejo.
DUPTYPECMP?
Duplica y pregunta si es un nmero complejo.
TYPECOL?
Pregunta si es un programa.
DUPTYPECOL?
Duplica y pregunta si es un programa.
TYPECSTR?
Pregunta si es una cadena.
DUPTYPECSTR?
Duplica y pregunta si es una cadena.
TYPEEXT?
Pregunta si es una unidad.
DUPTYPEEXT?
Duplica y pregunta si es una unidad.
TYPEGROB?
Pregunta si es un objeto grfico.
DUPTYPEGROB?
Duplica y pregunta si es un objeto grfico.
TYPEHSTR?
Pregunta si es una cadena hex.
DUPTYPEHSTR?
Duplica y pregunta si es una cadena hex.
TYPEIDNT?
Pregunta si es un identificador (nombre global).
DUPTYPEIDNT?
Duplica y pregunta si es un identificador (nombre global).
17
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
TYPELAM?
Pregunta si es un identificador local (nombre local).
DUPTYPELAM?
Duplica y pregunta si es un identificador local.
TYPELIST?
Pregunta si es una lista.
DUPTYPELIST?
Duplica y pregunta si es una lista.
TYPERARRY?
Pregunta si es una formacin real.
TYPEREAL?
Pregunta si es un nmero real.
DUPTYPEREAL?
Duplica y pregunta si es un nmero real.
TYPEROMP?
Pregunta si es un puntero ROM (nombre XLIB).
DUPTYPEROMP?
TYPERRP?
Pregunta si es un Directorio.
DUPTYPERRP?
Duplica y pregunta si es un directorio.
TYPESYMB?
Pregunta si es un objeto simblico
DUPTYPESYMB?
Duplica y pregunta si es un objeto simblico.
TYPETAGGED?
DUPTYPETAG?
Pregunta si es un objeto etiquetado.
Duplica y pregunta si es un objeto etiquetado.
?SEMI ( flag --> )
Sale del programa en curso si la bandera es TRUE.
?SEMIDROP ( ob TRUE --> ) o ( FALSE --> )
Elimina ob si la bandera es TRUE; sale del programa en curso si la bandera es FALSE.
?SKIP ( flag --> )
Si la bandera es TRUE, se salta el siguiente objeto a continuacin de ?SKIP.
NOT?SEMI ( flag --> )
Sale del programa en curso si la bandera es FALSE.
Ejemplos:
1.
Aqu se va a comparar si el objeto del nivel 2 es igual al objeto del nivel.
::
CK2
Requiere que hayan dos objetos en la pila.
%=
Pregunta si los nmeros reales son iguales.
;
@
18
Programacin en System-Rpl
2.
by LUIS VALDIVIESO VIDAL
Este programa compara si el objeto que se ingresa es un nmero real.
::
CK1
Requiere un argumento.
TYPERAL?
Pregunta si el objeto del nivel 1 es un nmero real.
;
@
7.2 If .. Then .. End.
Este es muy til, cuando se requieren ejecutar dos programas, y cada uno depende de una condicin.
La capacidad fundamental del If/Then/End, se proporciona por medio de las palabras RPITE y RPIT.
RPITE
(flag ob1 ob2 ?)
Si el flag es TRUE, se eliminan el flag, el ob2 y se evala el ob1; y si el flag es FALSE, se eliminan el flag, el ob1 y
se evala el ob2.
RPIT
(flag ob ?)
Si el flag es TRUE, se elimina el flag y se evala el ob; y si el flag es FALSE, se eliminan flag y ob.
Tambin tenemos las palabras IT e ITE:
La sintaxis del If .. Then .. End, es la siguiente:
::
.
.
.
flag
IT
::
Programa 1
;
::
Programa 2
;
19
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
@
Tambin se puede emplear la palabra ITE, que en definitiva hacen lo mismo.
Ejemplos:
1.
Este ejemplo requiere dos nmeros, si son iguales muestra el mensaje SON IGUALES, caso contrario
NO SON IGUALES.
::
CK2
%=
IT
::
SON IGUALES xMSGBOX
;
::
NO SON IGUALES xMSGBOX
;
;
@
2.
Este programa requiere un objeto, y si el objeto es una matriz, devuelve TRUE, caso contrario FALSE.
::
CK1
TYPEARRY?
ITE
::
TRUE
;
::
FALSE
;
;
@
7.3 Case
20
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
El CASE es una combinacin de las palabras IT, SKIP, y COLA. La palabra bsica es CASE, pero hay otras
combinaciones de IT, test y otros comandos.
Si queremos construir una estructura que nos permita evaluar varios programas, podemos seguir el siguiente
ejemplo:
::
.
.
.
::
DUP #0=
case
::
Programa 1
;
DUP #1=
case
::
Programa 2
;
DUP #2=
case
::
Programa 3
;
.
.
DUP #n=
Case
::
Programa n
;
.
.
.
;
.
.
21
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
.
;
@
Adems podemos hacer el ejemplo anterior con la palabra OVER, as:
::
.
.
.
::
DUP
BINT0 OVER#=case
::
Programa 1
;
DUP
BINT1 OVER#=case
::
Programa 2
;
DUP
BINT2 OVER#=case
::
Programa 3
;
.
.
DUP
BINTn OVER#=case
::
Programa n
;
.
.
.
;
.
.
.
;
22
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
Palabras que hacen COLA o SKIP al siguiente objeto:
#=casedrop
(##)
( # #' # )
Se debera llamar OVER#=casedrop
%1=case
(%)
%0=case
( % flag )
ANDNOTcase
( flag1 flag2 )
ANDcase
( flag1 flag2 )
case2drop
( ob1 ob2 TRUE )
( FALSE )
casedrop
( ob TRUE )
( FALSE )
DUP#0=case
DUP#0=csedrp
(##)
( # # ) # <> #0
( # ) # = #0
EQUALNOTcase
( ob ob' )
EQUALcase
( ob ob' )
EQUALcasedrp ( ob ob' ob' )
( ob ob' ob'' ob )
EQcase
( ob1 ob2 )
NOTcase
( flag )
NOTcasedrop
( ob FALSE )
( TRUE )
ORcase
( flag1 flag2 )
23
Programacin en System-Rpl
OVER#=case
by LUIS VALDIVIESO VIDAL
( # #' # )
Palabras case que o salen o continan con el siguiente objeto:
caseDoBadKey
( flag ) Sale via DoBadKey
caseDrpBadKey ( ob TRUE ) Sale via DoBadKey
( FALSE )
case2DROP
( ob1 ob2 TRUE )
( FALSE )
caseDROP
( ob TRUE )
( FALSE )
caseFALSE
( TRUE FALSE )
( FALSE )
caseTRUE
( TRUE TRUE )
( FALSE )
casedrpfls
( ob TRUE FALSE )
( FALSE )
case2drpfls
( ob1 ob2 TRUE FALSE )
( FALSE )
casedrptru
( ob TRUE TRUE )
( FALSE )
DUP#0=csDROP
( #0 )
( # # ) # <> 0.
NOTcaseTRUE ( FALSE TRUE )
( TRUE )
24
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
PARTE II
MANIPULACIN DE OBJETOS
25
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
8.- OPERACIONES ARITMTICAS.
8.1 NMEROS BINARIOS.
#*
( #2 #1 #2*#1 )
#+
( #2 #1 #2+#1 )
#+-1
( #2 #1 #2+#1-1 )
#-
( #2 #1 #2-#1 )
#-#2/
( #2 #1 (#2-#1)/2 )
#-+1
( #2 #1 (#2-#1)+1 )
#/
( #2 #1 #resto #cociente )
#1+
( # #+1 )
#1+'
( # #+1 y ejecuta ' )
#1+DUP
( # #+1 #+1 )
#1-
( # #-1 )
#10*
( # #*10 )
#10+
( # #+10 )
#12+
( # #+12 )
#2*
( # #*2 )
#2+
( # #+2 )
#2-
( # #-2 )
#2/
( # FLOOR(#/2) )
#3+
( # #+3 )
#3-
( # #-3 )
#4+
( # #+4 )
#4-
( # #-4 )
#5+
( # #+5 )
#5-
( # #-5 )
#6*
( # #*6 )
#6+
( # #+6 )
#7+
( # #+7 )
#8*
( # #*8 )
#8+
( # #+8 )
#9+
( # #+9 )
#MAX
( #2 #1 MAX(#2,#1) )
#MIN
( #2 #1 MIN(#2,#1) )
2DUP#+
( #2 #1 #2 #1 #1+#2 )
DROP#1-
( # ob #-1 )
DUP#1+
( # # #+1 )
DUP#1-
( # # #-1 )
DUP3PICK#+
( #2 #1 #2 #1 #1+#2 )
OVER#+
( #2 #1 #2 #1+#2 )
OVER#-
( #2 #1 #2 #1-#2 )
ROT#+
( #2 ob #1 ob #1+#2 )
26
Programacin en System-Rpl
ROT#+SWAP
by LUIS VALDIVIESO VIDAL
( #2 ob #1 #1+#2 ob )
ROT#-
( #2 ob #1 ob #1-#2 )
ROT#1+
( # ob ob' ob ob' #+1 )
ROT+SWAP
( #2 ob #1 #1+#2 ob )
SWAP#SWAP#1+
( #2 #1 #1-#2 )
( # ob ob #+1 )
SWAP#1+SWAP ( # ob #+1 ob )
SWAP#1-
( # ob ob #-1 )
SWAP#1-SWAP
( # ob #-1 ob )
SWAPOVER#-
( #2 #1 #1 #2-#1 )
8.2 NMEROS REALES.
%*
( %2 %1 %2*%1 )
%+
( %2 %1 %2+%1 )
%-
( %2 %1 %2-%1 )
%/
( %2 %1 %resto %cociente )
%1+
( % %+1 )
%1-
( % %-1 )
%10*
( % %*10 )
%3+
( % %+3 )
%3-
( % %-3 )
%4+
( % %+4 )
%4-
( % %-4 )
%MAX
( %2 %1 MAX(%2,%1) )
%MIN
( %2 %1 MIN(%2,%1) )
8.3 NMEROS REALES EXTENDIDOS.
%%*
Multiplica dos reales extendidos ( %%1 %%2 %%3 ).
%%*ROT
Multiplica dos reales extendidos y luego hace ROT ( ob1 ob2 %%1 %%2 ob2 %%3
ob1).
%%*SWAP
Multiplica dos reales extendidos y luego hace SWAP ( ob %%1 %%2 %%3 ob ).
%%*UNROT
Multiplica dos reales extendidos y luego hace UNROT ( ob1 ob2 %%1 %%2 %%3 ob1
ob2 ).
%%+
Suma dos reales extendidos ( %%1 %%2 %%3 )
27
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
%%-
Resta dos reales extendidos ( %%1 %%2 %%3 )
%%ABS
Valor absoluto de un real extendido ( %% %%' )
%%ACOSRAD
Arco-coseno de un real extendido ( %% %%' )
%%ANGLE
Angulo de un real extendido en el modo actual ( %%x %%y %% ngulo ).
%%ANGLEDEG
Angulo de un real extendido usando grados sexagesimales ( %%x %%y %% ngulo ).
%%ANGLERAD
Angulo en radianes ( %%x %%y %% ngulo ).
%%ASINRAD
Arco-seno con radianes ( %% %%' ).
%%CHS
Cambia el signo de un real extendido ( %% %%' ).
%%COS
Coseno de un real extendido ( %% %%' ).
%%COSDEG
Coseno con grados sexagesimales ( %% %%' ).
%%COSH
Coseno hiperblico ( %% %%' ).
%%COSRAD
Coseno con radianes ( %% %%' ).
%%EXP
Exponente ( %% %%' ).
%%FLOOR
El mayor entero <=x ( %% --> %%' ).
%%INT
Devuelve la parte entera de un real extendido ( %% %%' ).
%%LN
Logaritmo natural de un real extendido ( %% %%' ).
%%LNP1
ln(x+1) ( %% --> %%' ).
%%MAX
Devuelve el mayor numero de dos reales extendidos ( %%1 %%2 %%3 ).
%%SIN
Seno de un real extendido ( %% %%' ).
%%SINDEG
%%SINH
Seno con grados sexagesimales ( %% %%' ).
Seno hiperblico ( %% %%' ).
%%SQRT
Raz cuadrada ( %% %%' ).
%%TANRAD
Tangente con radianes ( %% %%' ).
28
Programacin en System-Rpl
%%^
by LUIS VALDIVIESO VIDAL
Exponencial ( %%1 %%2 %%3 ).
9.- OPERACIONES DE LA PILA.
2DROP
Borra dos objetos ( ob1 ob2 ).
2DROP00
Borra dos objetos y pone #0 #0 ( ob1 ob2 #0 #0 ).
2DROPFALSE
Borra dos objetos y devuelve FALSE ( ob1 ob2 FALSE ).
2DUP
Duplica los objetos del nivel 1 y 2 ( ob1 ob2 ob1 ob2 ob1 ob2).
2DUP5ROLL
Duplica los objetos ( ob1 ob2 ob3 ob2 ob3 ob2 ob3 ob1 ).
2DUPSWAP
Duplica los objetos de los dos primeros niveles y luego intercambia los objetos de los niveles 1 y 2
( ob1 ob2 ob1 ob2 ob2 ob1 ).
2OVER
( ob1 ob2 ob3 ob4 ob1 ob2 ob3 ob4 ob1 ob2 ).
2SWAP
( ob1 ob2 ob3 ob4 ob3 ob4 ob1 ob2 ).
3DROP
Borra los objetos de los tres primeros niveles ( ob1 ob2 ob3 ).
3PICK
( ob1 ob2 ob3 ob1 ob2 ob3 ob1 ).
3PICK3PICK
3PICKOVER
3PICKSWAP
( ob1 ob2 ob3 ob1 ob2 ob3 ob1 ob2 ).
( ob1 ob2 ob3 ob1 ob2 ob3 ob1 ob3 ).
( ob1 ob2 ob3 ob1 ob2 ob1 ob3 ).
3UNROLL
( ob1 ob2 ob3 ob3 ob1 ob2 ).
4DROP
( ob1 ob2 ob3 ob4 ).
4PICK
( ob1 ob2 ob3 ob4 ob1 ... ob4 ob1 ).
4PICKOVER
( ob1 ob2 ob3 ob4 ob1 ob2 ob3 ob4 ob1 ob4 ).
29
Programacin en System-Rpl
4PICKSWAP
( ob1 ob2 ob3 ob4 ob1 ob2 ob3 ob1 ob4 ).
4ROLL
( ob1 ob2 ob3 ob4 ob2 ob3 ob4 ob1 ).
4UNROLL
( ob1 ob2 ob3 ob4 ob4 ob1 ob2 ob3 ).
4UNROLL3DROP
( ob1 ob2 ob3 ob4 ob4 ).
4UNROLLDUP
( ob1 ob2 ob3 ob4 ob4 ob1 ob2 ob3 ob3 ).
4UNROLLROT
( ob1 ob2 ob3 ob4 ob4 ob3 ob2 ob1 ).
5DROP
( ob1 ... ob5 ).
5PICK
( ob1 ... ob5 ob1 ... ob5 ob1 ).
5ROLL
( ob1 ... ob5 ob2 ... ob5 ob1 ).
5ROLLDROP
( ob1 ... ob5 ob2 ... ob5 ).
5UNROLL
( ob1 ... ob5 --> ob5 ob1 ... ob4 ).
6DROP
( ob1 ... ob6 ).
6PICK
( ob1 ... ob6 ob1 ... ob6 ob1 ).
6ROLL
( ob1 ... ob6 ob2 ... ob6 ob1 ).
7DROP
( ob1 ... ob7 ).
7PICK
( ob1 ... ob7 ob1 ... ob7 ob1 ).
7ROLL
( ob1 ... ob7 ob2 ... ob7 ob1 ).
8PICK
( ob1 ... ob8 ob1 ... ob8 ob1 ).
8ROLL
( ob1 ... ob8 ob2 ... ob8 ob1 ).
8UNROLL
( ob1 ... ob8 ob8 ob1 ... ob7 ).
DEPTH
( ob1 ... obn ... #n ).
DROP
( ob ).
DROPDUP
DROPFALSE
by LUIS VALDIVIESO VIDAL
( ob1 ob2 ob1 ob1 ).
( ob FALSE ).
30
Programacin en System-Rpl
DROPNDROP
DROPONE
( ... # ob ) elimina ob, luego DROP # objetos
( ob #1 ).
DROPOVER
( ob1 ob2 ob3 ob1 ob2 ob1 ).
DROPRDROP
( ob ) DROP ob y baja 1 nivel de la pila de
DROPROT
( ob1 ob2 ob3 ob2 ob1 ).
DROPSWAPDROP
( ob1 ob2 ob3 ob2 ).
( ob TRUE ).
DROPZERO
( ob #0 ).
DUP
( ob ob ob ).
DUP#1+PICK
( ... #n ... #n obn ).
DUP3PICK
( ob1 ob2 ob1 ob2 ob2 ob1 ).
DUP4UNROLL
( ob1 ob2 ob3 ob3 ob1 ob2 ob3 ).
DUPDUP
( ob ob ob ob ).
DUPONE
( ob ob ob #1 ).
DUPPICK
( ... #n ... #n obn-1 ).
DUPROLL
( ... #n ... #n obn-1 ).
DUPROT
( ob1 ob2 ob2 ob2 ob1 ).
DUPTWO
( ob ob ob #2 ).
DUPUNROT
( ob1 ob2 ob2 ob1 ob2 ).
DUPZERO
( ob ob ob #2 ).
N+1DROP
retornos.
( ob1 ob2 ob3 ob4 ob2 ob3 ob1 ).
DROPSWAP
DROPTRUE
by LUIS VALDIVIESO VIDAL
( ob ob1 ... obn #n ).
31
Programacin en System-Rpl
NDROP
( ob1 ... obn #n ).
NDUP
( ob1 ... obn #n ob1 ... obn ob1 ... obn ).
NDUPN
( ob #n ob ... ob ).
ONEFALSE
( #1 FALSE ).
ONESWAP
( ob #1 ob ).
OVER
( ob1 ob2 ob1 ob2 ob1 ).
OVER5PICK
( v w x y z v w x y z y v ).
OVERDUP
( ob1 ob2 ob1 ob2 ob1 ob1 ).
OVERSWAP
( ob1 ob2 ob2 ob1 ob1 ).
OVERUNROT
( ob1 ob2 ob1 ob1 ob2 ).
PICK
( obn ... #n ... obn ).
ROLL
( obn ... #n ... obn ).
ROLLDROP
( obn ... #n ... ).
ROLLSWAP
( obn ... ob #n --> ... obn ob ).
ROT
( ob1 ob2 ob3 ob2 ob3 ob1 ).
ROT2DROP
( ob1 ob2 ob3 ob2 ).
ROT2DUP
( ob1 ob2 ob3 ob2 ob3 ob1 ob3 ob1 ).
ROTDROP
( ob1 ob2 ob3 ob2 ob3 ).
ROTDROPSWAP
( ob1 ob2 ob3 ob3 ob2 ).
ROTDUP
( ob1 ob2 ob3 ob2 ob3 ob1 ob1 ).
ROTOVER
by LUIS VALDIVIESO VIDAL
( ob1 ob2 ob3 ob2 ob3 ob1 ob3 ).
32
Programacin en System-Rpl
ROTROT2DROP
ROTSWAP
( ob1 ob2 ob3 ob3 ).
( ob1 ob2 ob3 ob2 ob1 ob3 ).
SWAP
( ob1 ob2 ob2 ob1 ).
SWAP2DUP
( ob1 ob2 ob2 ob1 ob2 ob1 ).
SWAP3PICK
( ob1 ob2 ob3 ob1 ob3 ob2 ob1 ).
SWAP4PICK
( ob1 ob2 ob3 ob4 ob1 ob2 ob4 ob3 ob4 ).
SWAPDROP
( ob1 ob2 ob2 ).
SWAPDROPDUP
( ob1 ob2 ob2 ob2 ).
SWAPDROPSWAP
( ob1 ob2 ob3 ob3 ob1 ).
SWAPDROPTRUE
( ob1 ob2 ob2 TRUE ).
SWAPDUP
( ob1 ob2 ob2 ob1 ob1 ).
SWAPONE
( ob1 ob2 ob2 ob1 #1 ).
SWAPOVER
SWAPROT
( ob1 ob2 ob2 ob1 ob2 ).
( ob1 ob2 ob3 ob3 ob2 ob1 ).
SWAPTRUE
( ob1 ob2 ob2 ob1 TRUE ).
UNROLL
( ... ob #n ob ... ).
UNROT
( ob1 ob2 ob3 ob3 ob1 ob2 ).
UNROT2DROP
( ob1 ob2 ob3 ob3 ).
UNROTDROP
( ob1 ob2 ob3 ob3 ob1 ).
UNROTDUP
( ob1 ob2 ob3 ob3 ob1 ob2 ob2 ).
UNROTOVER
( ob1 ob2 ob3 ob3 ob1 ob2 ob1 ).
UNROTSWAP
( ob1 ob2 ob3 ob3 ob2 ob1 ).
ZEROOVER
by LUIS VALDIVIESO VIDAL
( ob ob #0 ob ).
33
Programacin en System-Rpl
reversym
by LUIS VALDIVIESO VIDAL
( ob1 ... obn #n obn ... ob1 #n ).
10.- MANIPULACIN DE OBJETOS.
10.1 OBJETOS ETIQUETADOS.
Use la estructura TAG <tag> <object> para crear objetos etiquetados. Las siguientes palabras estn disponibles
para manipular objetos etiquetados.
05E81
>TAG
(ob $ tagged)
Etiqueta el ob2 con el la cadena (string) del nivel 1.
2F223
%>TAG
( ob % tagged )
Etiqueta el objeto del nivel 2 con el nmero real del nivel 1.
05F2E
ID>TAG
( ob id/lam tagged )
( ob ... {$ ...} tagged ...)
Etiqueta el objeto del nivel 2 con la variable global/temporal del nivel 1.
37ABE
STRIPTAGS
( tagged ob )
34
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
Elimina todas las etiquetas.
37AEB
STRIPTAGSl2
( tagged ob' ob ob' )
Quita las etiquetas del objeto etiquetado del nivel 2.
37BO4
TAGOBS
( ob $ tagged )
( ob1... obn {$1 ... $n} tagged_1 ... tagged_n)
Etiqueta un objeto, o varios objetos si hay una lista de etiquetas en el nivel 1.
2F266
USER$>TAG
( ob $ tagged )
Etiqueta ob con $ (vlido hasta 255 caracteres).
10.2 OBJETOS UNIDADES.
U>NCQ
( unidad n%% cf%% qhxs )
Devuelve el nmero, el factor de conversin y la cadena de cantidad hex (qhxs).
UM=?
( unidad1 unidad2 %flag )
Devuelve %1 si dos obs unidades son iguales.
UM#?
( unidad1 unidad2 %flag )
Devuelve 1% si unidad1 <> unidad2.
UM<?
( unidad1 unidad2 %flag )
Devuelve %1 si unidad1 < unidad2.
UM>?
( unidad1 unidad2 %flag )
Devuelve %1 si unidad1 > unidad2.
UM<=?
( unidad1 unidad2 %flag )
Devuelve %1 si unidad1 <= unidad2.
UM>=?
( unidad1 unidad2 %flag )
Devuelve %1 si unidad1 >= unidad2.
UM>U
( % unidad unidad' )
Reemplaza la parte numrica de un objeto unidad.
UM%
( unidad %porcentaje unidad' )
Devuelve un porcentaje de un objeto unidad.
UM%CH
( unidad1 unidad2 % )
Devuelve la diferencia porcentual.
UM%T
( unidad1 unidad2 % )
35
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
Devuelve la fraccin porcentual.
UM+
( unidad1 unidad2 unidad3 )
Suma.
UM-
( unidad1 unidad2 unidad3 )
Resta.
UM*
( unidad1 unidad2 unidad3 )
Multiplicacin.
UM/
( unidad1 unidad2 unidad3 )
Divisin.
UM^
( unidad1 unidad2 unidad3 )
Potencia.
UM1/
( unidad unidad' )
Inverso.
UMABS
( unidad unidad' )
Valor absoluto.
UMCHS
( unidad unidad' )
Cambio de signo.
UMCONV
( unidad1 unidad2 unidad1' )
Convierte unidad1 a las unidades de unidad2.
UMCOS
( unidad unidad' )
Coseno.
UMMAX
( unidad1 unidad2 unidad? )
Devuelve la mayor de unidad1 y unidad2.
UMMIM
( unidad1 unidad2 unidad? )
Devuelve la menor de unidad1 y unidad2.
UMSI
( unidad unidad' )
Convierte a las unidades bsicas SI.
UMSIN
( unidad unidad' )
Seno.
UMSQ
( unidad unidad' )
Cuadrado.
36
Programacin en System-Rpl
UMSQRT
by LUIS VALDIVIESO VIDAL
( unidad unidad' )
Raz cuadrada.
UMTAN
( unidad unidad' )
Tangente.
UMU>
( unidad % unidad' )
Devuelve la parte numrica y la parte normalizada de unidad de un objeto de unidad.
UMXROOT
( unidad1 unidad2 unidad3 )
unidad1^1/unidad2.
UNIT>$
( unidad $ )
Descompila un objeto unidad a una cadena de texto.
11.- VARIABLES Y DIRECTORIOS.
Existen dos tipos de variables las variables temporales o locales y las variables globales.
11.1
VARIABLES LOCALES (LAMs).- Son aquellas que solo pueden ser utilizadas en un mismo programa.
Ocupan menos espacio.
074D0 BIND
Crea un nuevo entorno de variables temporales.
07497
Abandona el entorno temporal.
ABND
O75A5 GETLAM
Devuelve el objeto (contenido) de la ensima variable( #n ob ).
07D1B STOLAM
Almacena un objeto en la variable temporal con nombre ( ob id ).
STO
Almacena un objeto en la variable global/temporal con nombre ( ob id ).
2B3AB NULLLAM
35DEE 1ABNDSWAP
364FF
Pone NULLLAM en la pila ( NULLLAM ).
Hace :: 1GETLAM ABND SWAP ; ( ob lamob ob ).
1GETABND
Hace :: 1GETLAM ABND ; ( lamob ).
37
Programacin en System-Rpl
36518
34616
1GETLAM
346E8
22GETLAM
35F42
1GETSWAP
1LAMBIND
346E3
07943
Devuelve el contenido del ensimo lam.
Hace :: 1GETLAM SWAP ; ( ob lamob ob )
Devuelve una lista con un lam nulo ( { NULLLAM } ).
1PUTLAM
22PUTLAM
3632E
( ob ).
Hace :: 1NULLLAM{} BIND ; ( ob ).
2B3A6 1NULLLAM{}
34611
by LUIS VALDIVIESO VIDAL
( ob ).
Almacena un objeto en el ensimo lam.
2GETEVAL
@LAM
Llama y evala el ob en el segundo lam ( ? ).
Llama lam por nombre, devuelve ob y TRUE si id
existe; si no, FALSE
( id ob TRUE )
( id FALSE ).
34D00 CACHE
Salva n objetos mas la cuenta n en un entorno
temporal, estando unido cada objeto al mismo
identificador lam. El ltimo par tiene la cuenta ( obn ... ob1 n lam).
34EBE DUMP
DUMP es esencialmente el inverso de CACHE, PERO SOLO funciona cuando el nombre
cacheado es NULLLAM y
SIEMPRE hace una recoleccin de basura ( NULLLAM ob1..obn n).
36513
DUP1LAMBIND
Hace DUP y luego 1LAMBIND ( ob ob ).
34797
DUP4PUTLAM
Hace DUP y luego 4PUTLAM ( ob ob ).
347AB DUPTEMPENV Duplica el entorno temporal de la cima y borra la
palabra de proteccin ( ).
::
%1
Pone el numero 1 en el nivel 2
%2
Pone el numero 2 en el nivel 1
{ LAM N1
LAM N2
}
38
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
BIND
LAM N1
Devuelve 1 desde N1
LAM N2
Devuelve 2 desde N2
%*
Multiplica 1 y 2
ABND
Abandona el entorno temporal
;
@
Tambin podemos utilizar nombres nulos, ahorrando as memoria, el ejemplo anterior seria as:
::
%1
Pone el numero 1 en el nivel 2
%2
Pone el numero 2 en el nivel 1
{ NULLLAM
NULLLAM
}
BIND
1GETLAM
Devuelve 1 desde la primera variable
2GETLAM
Devuelve 2 desde la segunda variable
%*
Multiplica 1 y 2
ABND
Abandona el entorno temporal
;
@
Si se necesita utilizar un gran nmero de variables temporales, podemos hacerlo de la siguiente manera:
::
CK5
Verifica que hayan 5 argumentos en la pila
NULLLAM
FIVE
NDUPN
{}N
BIND
:
:
:
ABND
;
@
39
Programacin en System-Rpl
11.2
by LUIS VALDIVIESO VIDAL
VARIABLES GLOBALES (IDs).- Son aquellas que pueden ser utilizadas de un programa a otro. Ocupan
mas espacio.
::
%1
Pone el numero 1 en el nivel 2
%2
Pone el numero 2 en el nivel 1
ID N1
STO
ID N2
STO
ID N1
Devuelve 2 desde N1
ID N2
Devuelve 1 desde N2
%*
Multiplica 1 y 2
;
@
El fundamento en RPL del sistema de las palabras de usuario STO y RCL son las palabras STO, CREATE y @.
CREATE
(ob id )
Crea una variable con el nombre id y contenido ob. Un error ocurrira si ob es o contiene el
directorio actual (Directorio Recursivo). Esta palabra no chequea si hay ya una variable con el
mismo id, an cuando hay no se crea otro.
STO
(ob id )
(ob lam )
En el caso lam, el identificador lam se vuelve a unir al Nuevo objeto. Un error ocurre si el lam no
esta unido a nada. En el caso id, STO intenta emparejar id con la parte nombre parte nombre de
una variable global.
( id ob TRUE )
( id FALSE )
( lam ob TRUE )
( lam FALSE )
Intenta retornar el contenido guardado en la variable o identificador temporal. Retorna el objeto
guardado y TRUE si lo consigue, o FALSE si ninguna variable o lam se encontraron con ese
40
Programacin en System-Rpl
nombre.
by LUIS VALDIVIESO VIDAL
En el caso de variables, empieza buscando en el directorio actual y a travs de
directorios del home.
CONTEXT! ( rrp )
Almacena como directorio actual un puntero a un directorio enraizado.
CONTEXT@ ( rrp )
Llama a la pila el directorio contexto actual.
CREATEDIR
( id )
Crea un objeto directorio en el directorio actual.
DOVARS ( { id1 id2 ... } )
Devuelve la lista de los nombres de variables del directorio actual.
HOMEDIR ( )
Hace de HOME el directorio actual.
PATHDIR ( { HOME dir dir ... } )
Devuelve el camino actual.
UPDIR ( )
Sube un directiorio.
XEQORDER ( { id1 id2 ... } )
Ordena el directorio actual.
XEQPGDIR ( id --> )
Elimina un directorio mientras respeta las convenciones de referencia/recoleccin de basura.
El Directorio Oculto (Hidden Directory).
Este directorio se encuentra al principio del directorio Home y no tiene nombre. Este directorio contiene las definiciones de
teclas del usuario y la informacin de las alarmas.
La siguientes palabras proporcionan capacidades de almacenamiento, llamada y eliminacin de variables en el directorio
oculto.
SetHiddenRes
( )
Establece el directorio oculto como el directorio actual y al final de los directorios.
WithHidden
( ? )
Ejecuta el siguiente objeto en el directorio oculto.
41
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
PuHiddenVar ( id )
Elimina la variable oculta de nombre id.
RclHiddenVar
( id ob TRUE )
( id FALSE )
Llama a una variable oculta.
StoHiddenVar
( ob id --> )
Almacena ob en una variable oculta.
12.- FUNCIONES DEL SISTEMA (FLAGS).
2614D SetSysFlag: Activa el flag indicado del sistema (# ).
26044
ClrSysFlag: Borra el falg indicado del sistema (# ).
26170
TestSysFlag: Retorna TRUE si el flag esta activado (# TRUE).
26152
SetUserFlag: Activa el flag indicado del usuario (# ).
26049
ClrUserFlag: Borra el flag indicado del usuario (# ).
26175
TestUserFlag: Retorna TRUE si el flag del usuario esta activado (# TRUE).
25F23
SaveSysFlags: Guarda los flags del sistema en el virtual stack ( ).
25F22
RestoreSysFlags: Restaura los flags del sistema ( ).
2EFA5 DOHEX: Pone la base en modo hexadecimal.
2EFA9 DODEC: Pone la base en modo decimal.
2EFA6 DOBIN: Pone la base en modo binario.
2EFA7 DOOCT: Pone la base en modo octal.
26053
DOSTD: Pone la pantalla en modo estndar.
26059
DOFIX: Pone la pantalla en modo FIX, que va desde 0 a 11 dgitos decimales. (#).
26058
DOSCI: Pone la pantalla en modo cientfico, y va desde 0 a 11 dgitos (#).
2604E
DOENG: Pone la pantalla en modo de ingeniera, va desde 0 a 11 dgitos (# ).
Ej.:
Este programa activa el flag 40 que corresponde al reloj. Si el reloj esta activado permanece activado.
::
40
SetSysFlag
;
@
42
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
13.- BUCLES.
Existen dos tipos de bucles, los bucles indefinidos y los bucles definidos.
13.1 BUCLES INDEFINIDOS.
Los bucles indefinidos se pueden construir a partir de las siguientes palabras:
BEGIN
Copia el puntero del interprete en la pila de retorno.
UNTIL
Si el flag es TRUE, elimina el puntero de la cima de la pila de retornos, caso contrario copia ese puntero al puntero
del interprete.
WHILE
Si el flag es TRUE entonces no realiza nada. Caso contrario elimina el primer puntero de la lnea de retornos y hace
que el puntero del interprete se salte los dos siguientes objetos.
REPEAT
Copia el primer puntero de la pila de retornos al puntero del interprete.
AGAIN
Copia el primer puntero de la pila de retornos al puntero del interprete.
El primer bucle indefinido es el bucle WHILE y esta creado as:
BEGIN
< clusula de prueba o test >
WHILE
< objeto del bucle >
REPEAT
Este tipo de bucle ejecuta la <clusula de test>, y si el test es TRUE, el <objeto del bucle> es ejecutado y la vuelta
empieza de nuevo Si el test retorna FALSE, entonces sale y sigue justo pasado el REPEAT. Si el primer test
volviera FALSE, el bucle WHILE nunca se ejecutara.
Este bucle requiere que el <objeto del bucle> sea un solo objeto.
El segundo tipo de bucle indefinido es el UNTIL, y se crea de la siguiente manera:
BEGIN
< clusula del bucle >
UNTIL
43
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
Este bucle siempre se ejecuta por lo menos una vez. La palabra UNTIL espera un flag. Si el flag es FALSE, el
<clusula del bucle> se ejecuta otra vez. Si el flag es TRUE, la ejecucin continua pasado UNTIL.
Un tercer bucle indefinido es BEGIN ... UNTIL
BEGIN
< clusula del bucle >
AGAIN
Este bucle no tiene un test. Para terminarlo se requiere que suceda una condicin de error o manipular directamente
la pila de retorno. Esto es til si el cdigo del bucle contiene varias situaciones diferentes a que las decisiones sobre
repetir o terminar el bucle tienen que ser hechas.
13.2 BUCLES DEFINIDOS.
Los bucles definidos son creados con las palabras DO y Loop u otras palabras semejantes. DO toma dos nmeros
binarios de la pila, representando el ndice y el valor de parada. El ndice mas interno (superior) es llamado con
INDEX@ y el ndice en el segundo entorno se llama con JINDE@ . El valor de parada mas interno (superior) esta
disponible con ISTOP@.
Los complementos de DO son LOOP y +LOOP. La palabra LOOP incrementa el valor del DoLoop mas interno, y si
el valor nuevo es mayor o igual al valor de parada, LOOP elimina el puntero de la cima de la pila de retornos y
elimina el entorno DoLoop mas interno. Caso contrario LOOP copia el puntero de la cima de la pila de retornos al
puntero del interprete.
+LOOP trabaja similarmente a LOOP, solo que este incrementa el contador del bucle en una cantidad (nmero
entero binario) tomado de la pila.
La forma estndar de un DoLoop es:
parada inicio
DO
< clusula del bucle >
LOOP
que ejecuta <clusula del bucle> para cada valor del ndice desde inicio hasta parada 1.
Note que aqu el valor de parada es mayor en #1, y que el valor de parada va antes que el valor de entrada.
073DB #1+_ONE_DO *
( #fin --> )
Equivalente a #1+ ONE DO; usada a menudo para ejecutar un bucle #fin veces.
073F7
DO
( #fin #inicio --> )
Empieza el bucle DO.
346AF DROPLOOP *
( ob --> )
Hace un DROP y luego LOOP.
44
Programacin en System-Rpl
364C8 DUP#0_DO *
by LUIS VALDIVIESO VIDAL
( # --> # )
Empieza el bucle # ...#0 DO.
3645A
DUPINDEX@
( ob --> ob ob #ndice )
Hace DUP, luego devuelve el valor del ndice del entorno DoLoop mas interno.
3709B
ExitAtLOOP
( --> )
Almacena cero en el valor de parada del entorno DoLoop ms interno.
07221
INDEX@
( --> #ndice )
Devuelve el ndice del entorno DoLoop mas interno.
367D9 INDEX@#-
( # --> #' )
Resta a # el valor del ndice del entorno DoLoop mas interno.
07270
INDEXSTO
( # --> )
Almacena # como el ndice del entorno DoLoop mas interno.
07249
ISTOP@
( --> #stop )
Devuelve el valor de parada del entorno DoLoop mas interno.
07295
ISTOPSTO
( # --> )
Almacena el nuevo valor de parada en el el entorno DoLoop mas interno.
07258
JINDEX@
( --> #ndice )
Devuelve el ndice del segundo entorno DoLoop.
07334
LOOP
( --> )
Termina una estructura de bucle.
NOT_UNTIL *
( flag --> )
Termina una estructura de bucle.
073CE ONE_DO *
( #fin --> )
Comienza un Bucle #1...#fin DO.
36482
OVERINDEX@
( ob1 ob2 --> ob1 ob2 ob1 #ndice )
Hace OVER y luego devuelve el valor del ndice del entorno DoLoop mas interno.
3646E
SWAPINDEX@
( ob1 ob2 --> ob2 ob1 #ndice )
Hace SWAP y luego devuelve el valor del ndice del entorno DoLoop mas interno.
36496
SWAPLOOP *
( ob1 ob2 --> ob2 ob1 )
Hace SWAP y luego LOOP
45
Programacin en System-Rpl
ZEROISTOPSTO
by LUIS VALDIVIESO VIDAL
( --> )
Almacena cero como el valor de parada del entorno DoLoop mas interno.
073CE ZERO_DO *
( #fin --> )
Comienza el bucle DO desde #0 hasta #fin.
364E1
toLEN_DO
( {list} --> {list} )
Comienza el bucle DO con inicio = #1 y con el valor de parada = #nmero-de-elementos-de-la-lista+1
Ejemplos:
El siguiente programa va a poner en la pila los nmeros del 1 al 10.
::
CK0
BINT11
ONE_DO
INDEX@
UNCOERCE
LOOP
;
@
46
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
PARTE III
ENTRADA DE DATOS
47
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
INTRODUCCIN.
El System-Rpl, permite ingresar datos de una forma muy cmoda, es as que existen varias formas de ingresar datos, desde
las mas sencillas hasta las mas complejas.
Entre las sencillas tenemos ingresando directamente en la pila, el InputLine; hasta las mas complejas como son los
formularios de entrada (DoInputForm), el Bucle Externo Parametrizado (PartOuterLoop), el HP48 Browser, el Filer Manager,
etc.
Para ingresar datos directamente en la pila se requiere necesariamente indicar al principio del programa la cantidad y el tipo
de objeto.
Por ejemplo, el siguiente programa requiere que ingresemos dos nmeros reales para su funcionamiento.
::
CK2&Dispatch
#11
.
.
.
;
@
El siguiente ejemplo requiere que en el nivel tres haya una lista, y en el nivel dos y uno haya un numero real.
::
CK3&Dispatch
#511
.
.
.
;
@
14.-EL InputLine
48
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
El comando InputLine del sistema equivale al comando del usuario INPUT . Su uso es similar, y hace lo siguiente:
Muestra un mensaje en la parte superior de la pantalla.
Empieza los modos de entrada del teclado.
Empieza la lnea de edicin.
Acepta la entrada, si se presiono ENTER.
Analiza, evala o devuelve la entrada del usuario.
Devuelve TRUE si es terminado por ENTER, o FALSE si fue abortado por ON/CANCEL.
Requiere los siguientes argumentos para su funcionamiento:
1.
Un mensaje en cadena (mensaje).
2.
Valor inicial que aparecer, en cadena (Valor inicial). Si no queremos ningn valor, podemos escribir NULL$ o .
3.
Posicin del cursor, en enteros binarios. El #0 indica el cursor al final de la lnea de edicin.
4.
Modo de escritura-sobreescritura, de la siguiente manera:
#0 Escritura normal.
#1 Modo de escritura normal.
#2 Modo de sobreescritura.
5.
Modo de entrada inicial.
#0 Modo de entrada actual mas el modo de entrada del programa.
#1 Solo modo de entrada del programa.
#2 Programa y modos de entrada algebraico.
6.
Modo de alfa inicial.
#0 Modo actual.
#1 Alfa habilitado.
#2 Alfa deshabilitado.
7.
El men inicial. Se refiere al men que queramos que aparezca, para lo cual debe estar en cadena, si no queremos
ningn men, se coloca NULL{}.
8.
El men inicial del numero de fila, normalmente se pone BINT1, para mostrar el primero de la pagina.
9.
Un flag.
TRUE abortara la entrada cuando se presione CANCEL.
FALSE borrara la lnea de edicin cuando se presione CANCEL.
10. Proceso de edicin de la lnea.
#0 Devuelve la lnea de edicin en una cadena.
#1 Devuelve la lnea de edicin como una cadena y un objeto analizado.
#2 Analiza y evala la lnea de edicin.
11. InputLine.
Ej. 1:
49
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
::
CK0NOLASTWD
No requiere argumentos
INGRESE UN NUMERO
Mensaje a mostrar
NULL$
Valor inicial
BINT1
Posicin del cursor
BINT1
Modo de escritura normal
BINT1
Modo de entrada del programa
BINT0
Modo actual
NULL{}
No queremos ningn men
BINT1
Primera fila del men
FALSE
Borrara la lnea de edicin al presionar CANCEL
BINT2
Devuelve la lnea de edicin analizada
InputLine
Ejecuta el InputLine
NOT?SEMI
Sale del programa si se presiona CANCEL
;
@
Ej. 2:
::
CK0NOLASTWD
COORDENADAS NUDOS:
{ { X1 Y1} {Xn Yn} }
{{}{}{}}
BINT3
BINT0
BINT1
BINT2
NULL{}
BINT1
FALSE
BINT1
InputLine
NOT?SEMI
;
@
*Note la posicin del cursor en ambos casos.
50
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
15.- FORMULARIOS DE ENTRADA (DoInputForm)
Como dije en la Introduccin, con este comando del sistema podemos crear formularios de entrada de datos, tales como
el CALCULATORS MODES o el TRANSFER.
En User tambin se pueden crear formularios de entrada con el comando INFORM, pero estos son limitados, caso
contrario con System, en donde podemos crear formularios con campos CHOOSE, CHK, y en System son mas rpidos
de cargarse.
El DoInputForm requiere varios argumentos, y se han dividido en tres partes:
1.
DEFINICIN DE ETIQUETAS: Cada etiqueta requiere tres argumentos.
Nombre
Coordenada #X
Coordenada #Y
2.
DEFINICIN DE CAMPOS: Cada campo requiere de trece argumentos.
MessageHandler
Normalmente DROPFALSE
Coordenada #X
Coordenada #Y
Longitud #L
Altura #h
Tipo de campo #
1
Campo de texto
Campo algebraico
12
Lista de campos
32
Campo Check
44
Campo Choose
Lista de objetos vlidos #
MINUSONE
Acepta cualquier objeto
Descompilacin
Ayuda
Dato choose
Descompilacin choose
Valor de reinicio
Valor inicial
3.
MESSAGEHANDLER
Es un secundario, que se pone en la pila, generalmente se pone DROPFALSE.
51
Programacin en System-Rpl
4.
by LUIS VALDIVIESO VIDAL
TTULO.
Es el ttulo que va a ir en la parte superior del formulario, se lo pone en cadena, es decir: TTULO.
5.
DoInputForm
EJEMPLOS:
::
BM:
BINT1
BINT9
DROPFALSE
BINT16
BINT18
BINT130
BINT9
BINT3
MINUSONE
BINT4
Ingrese cota del BM.
MINUSONE
MINUSONE
MINUSONE
MINUSONE
BINT1
BINT1
DROPFALSE
NIVELEVV
DoInputForm
Programacin en System-Rpl
FORMULARIOS DE ENTRADA (DoInputForm)
NOT?SEMI
;
@
52
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
::
CK0
f(X):
BINT0
BINT10
X1:
BINT0
BINT19
Y1:
BINT70
BINT19
X2:
BINT0
BINT28
Y2:
BINT70
BINT28
BINT0
BINT37
Step/Step
BINT90
BINT37
DROPFALSE
BINT20
BINT8
BINT129
BINT9
BINT23
{
BINT9
}
BINT4
Entre o choose ecuacin
Equations in
MINUSONE
DUPDUP
DROPFALSE
BINT12
BINT17
BINT57
BINT9
BINT3
MINUSONE
53
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
BINT4
Entre X1.
MINUSONE
MINUSONE
MINUSONE
MINUSONE
DRPFALSE
BINT82
BINT17
BINT57
BINT9
BINT3
MINUSONE
BINT4
Entre Y1.
MINUSONE
MINUSONE
MINUSONE
MINUSONE
DRPFALSE
BINT12
BINT26
BINT57
BINT9
BINT3
MINUSONE
BINT4
Entre X2.
MINUSONE
MINUSONE
MINUSONE
MINUSONE
DRPFALSE
BINT82
BINT26
BINT57
BINT9
BINT3
MINUSONE
BINT4
54
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
Entre Y2.
MINUSONE
MINUSONE
MINUSONE
MINUSONE
DRPFALSE
BINT9
BINT35
BINT20
BINT8
BINT12
MINUSONE
BINT17
Elija condicin.
{
{
=
BINT1
}
{
BINT2
}
}
BINT17
{
=
BINT1
}
{
=
BINT1
}
DROPFALSE
BINT31
BINT35
BINT45
BINT9
BINT3
{
BINT0
}
BINT4
Entre valor de .
55
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
MINUSONE
DUP
% .001
DUP
DROPFALSE
BINT81
BINT35
BINT7
BINT9
BINT32
MINUSONE
MINUSONE
Paso a Paso.
MINUSONE
MINUSONE
FALSE
FALSE
BINT7
BINT8
DROPFALSE
INTERPOLACIN LINEAL
DoInputForm
NOT?SEMI
;
@
16.- EL BUCLE EXTERNO PARAMETRIZADO (ParOuterLoop)
La palabra ParOuterLoop traducida al espaol significa Parameterized = Parametrizado, Outer = Externo y Loop = Bucle, que
en conjunto significa Bucle Externo Parametrizado.
El ParOuterLoop requiere los siguientes argumentos:
AppDisplay
Este se evala antes de la evaluacin de cada tecla. Este debera controlar la actualizacin de la
pantalla que no es controlada por las teclas, y adems realizar un especial control de errores.
AppKeys
Asigna las teclas fsicas, en el formato descrito mas adelante.
56
Programacin en System-Rpl
NonAppKeyOK?
by LUIS VALDIVIESO VIDAL
Una bandera: si es TRUE las teclas fsicas no asignadas realizan sus acciones normales. Por lo
tanto emiten un sonido (beep).
DoStdKeys?
Una bandera: si es TRUE entonces la definicin de teclas estndar es usada como no-aplicacin
de las teclas en lugar del valor de proceso de las teclas por defecto.
AppMenu
Especificacin del men, en el formato descrito mas adelante, o FALSE para dejar el men actual
inalterado.
#AppMenuPage
La pgina del men inicial. Normalmente BINT1 para mostrar la primera pagina.
SuspenOK?
Una bandera: si es TRUE cualquier comando del usuario que creara un entorno suspendido y
reiniciara el sistema exterior, en cada vuelta generara un error en cambio.
ExitCond
Este objeto se evala antes de cada actualizacin de la pantalla y evaluacin de la tecla de
aplicacin. Si es TRUE sale del bucle.
AppError
El objeto que controla los errores a ser evaluado cuando ocurre un error durante la evaluacin de
una tecla.
16.1
PALABRAS DEL BUCLE EXTERNO PARAMETRIZADO.
El ParOuterLoop esta formado por llamadas (con un apropiado manejo de errores) a las siguientes
palabras:
POLSaveUI
Salva la interfase del usuario en un entorno temporal.
POLSetUI
Ajusta la interfase actual del usuario, de acuerdo a los parmetros dados.
POLKeyUI
Muestra, lee y evala teclas. Detecta errores y sale segn la interfase del usuario
especificada por POLSetUI.
POLRestoreUI
Restaura la interfase del usuario salvada por POLSaveUI y abandona el entrono temporal.
POLResUI&Err
Restaura la interfase del usuario y errores.
Esta es usada cuando hay un error no
detectado dentro del ParOuterLoop.
Las palabras de compilacin del ParOuterLoop son:
::
POLSaveUI
Salva la interfase actual del usuario
ERRSET
Empieza la captura de errores
::
POLSetUI
Ajusta la nueva interfase del usuario
57
Programacin en System-Rpl
PULKeyUI
by LUIS VALDIVIESO VIDAL
Detecta las teclas presionadas
;
ERRTRAP
POLResUI&Err
Si hay un error restaura
Salva la interfase y error
POLRestoreUI
Restaura la interfase salvada del usuario
;
@
NOTA.- El ParOuterLoop crea un entorno temporal cuando salva su interfase del usuario actual,
y lo abandona
cuando restaura una interfase del usuario salvada.
16.2
LA PANTALLA
En el ParOuterLoop el usuario es responsable de preparar la pantalla y ponerla al da, esto si no hay una pantalla
por defecto.
La pantalla se pone al da de dos maneras: con el parmetro AppDisplay y mediante la asignacin de teclas
AppKeys.
16.3
DETECTANDO ERRORES
Si ocurre un error durante la ejecucin de una tecla, AppError se ejecuta. Este objeto es responsable de procesar
cualesquier error mientras ParOuterLoop esta corriendo. AppError debe determinar el error especifico y actuar de
acuerdo con l. O usted puede especificar ERRJMP como AppError que quiere decir que su aplicacin no maneja
ningn error.
16.4
ASIGNACIN DE TECLAS FSICAS
En el ParOuterLoop cualquier tecla en cualquiera de los seis planos bsicos puede asignarse una nueva funcin.
Si una tecla no es asignada por la aplicacin, y el NonAppKeyOK? es TRUE, la definicin de tecla estndar es
ejecutada si el DoStdKeys? es TRUE, o, si se esta disponible, la tecla del usuario es asignada si es FALSE.
Si NonAppKeyOK? es FALSE, se produce un pitido de advertencia, y nada mas es hecho.
La mayora de tiempo NonAppKeysOK? debe ponerse a FALSE.
El AppKeys es un parmetro secundario, que debe tomar como argumento el cdigo de la tecla (keycode) y el plano
(plane), y devuelve cualquiera de la definicin de tecla deseado si es TRUE, o FALSE si la aplicacin no lo maneja.
Especficamente el diagrama de la pila es como sigue:
58
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
::
Plano 1
#=casedrop
::
Cdigo tecla 1
?CaseKeyDef
::
TakeOver
Programa a ejecutar
;
.
.
.
Cdigo tecla n
?CaseKeyDef
::
TakeOver
Programa a ejecutar
;
;
.
.
.
Plano n
#=casedrop
::
Cdigo tecla 1
?CaseKeyDef
::
TakeOver
Programa a ejecutar
;
.
.
.
Cdigo tecla n
?CaseKeyDef
::
TakeOver
Programa a ejecutar
;
;
.
.
59
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
.
;
@
16.5
ASIGNACIN DE TECLAS DE MEN.
Usted puede especificar un men y ser presentado cuando el ParOuterLoop empieza. El formato del parmetro
AppMenu es esencialmente el mismo del parmetro ILMenu de InputLine, descrito mas adelante.
La diferencia es que TakeOver no es necesariamente en este caso, puesto que InputLine no es activado.
Tambin desde que las asignaciones de teclas fsicas tienen prioridad sobre el men de tecla asignado, usted debe
este cdigo en el parmetro AppKeys, en cada definicin de plano:
DUP#<7
Casedropfls
Esto devolver FALSE cuando una tecla cuyo cdigo es menor que siete (que es uno de las teclas dbiles) es
presionada. El FALSE forzar la asignacin normal para ser corrido, y esta asignacin ejecuta la accin definida por
AppMenu.
Para el trabajo, el NonAppKeysOK? tiene que ser TRUE,
Ej.:
::
CK0
No requiere argumentos
FALSE
{
LAM Exit
}
BIND
::
ClrDA1IsStat
Desactiva temporalmente el reloj
TURNMENUOFF
Desactiva el men
GROB 0088A 04000380000000000000000000000000000000000000000000000
HARDBUFF
Devuelve el grob de la pantalla actual
ZEROZERO
Coordenadas 0,0 del grfico
GROB!
RPL
60
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
::
BINT1
Plano de desplazamiento, BINT1: Sin desp.
#=casedrop
::
DUP#<7
casedrpfls
# 2B
?CaseKeyDef
::
TakeOver
Deflexiones
xMSGBOX
;
# 2C
?CaseKeyDef
::
TakeOver
Distancias
xMSGBOX
;
# 2D
?CaseKeyDef
::
TakeOver
Coordenadas
xMSGBOX
;
# 15
?CaseKeyDef
::
TakeOver
TRUE
LAM Exit
STO
;
DROP
DoBadKeyT
;
2DROP
DoBadKey
61
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
;
TrueTrue
NULL{}
ONEFALSE
LAM Exit
Termina condicin
ERRJMP
Controla errores
ParOuterLoop
Corre el par outer loop
ClrDAsOK
Redibuja la pantalla.
;
@
17.- EL HP48 BROWSER
El HP48 Browser presente aun en la HP49, le permite hacer muchas cosas. Bsicamente despliega una lista de entradas a
las que usted puede acceder, a diferencia del nuevo HP49 Browser (presente solo en la HP49) que solo le permite
seleccionar un solo articulo.
Este viejo artefacto tiene unos rasgos que el HP49 I no tiene, como lo es un modo lleno de pantalla. Es sin embrago mas
complicado de usar.
El Browser es llamado por Choose. Este retorna los resultados y TRUE o FALSE, dependiendo de la manera como se lo
termino, como se vera mas adelante.
A continuacin el diagrama de la pila:
(: :Appl $Title: :Converter {}Items Init! resultado TRUE) o
(: :Appl $Title: :Converter {}Items Init! FALSE)
17.1
El parmetro ::Appl
Este es un programa que permite la configuracin de varios aspectos del Browser. Este funciona como un
mensaje handler, que se llama con un numero binario (BINT), que representa el cdigo del mensaje.
A continuacin la descripcin de algunos de los mensajes:
Cdigo
Descripcin
57
Nmero de lneas que el Browser desplegara en la pantalla, el valor por defecto depende
del conjunto de caracteres actual y del flag 90 del sistema ( #).
58
Altura de la lnea del Browser, probablemente este no necesita ser cambiado ( #).
62
Programacin en System-Rpl
59
by LUIS VALDIVIESO VIDAL
Ancho de la lnea del browser, debe dejarse un espacio para las flechas (en la parte
derecha), que indican que hay mas elementos, esto cuando se llena la pagina ( #).
60
Debe devolverse TRUE, cuando la pantalla esta llena, o FALSE, cuando esta a la mitad.
El valor por defecto es a la mitad (FALSE) ( flag).
61
Deber devolver TRUE si se permiten objetos chequeados (marcados), o FALSE si no. El
valor por defecto es no permitir marcas ( flag).
62
Retorna el nmero de elemento, por lo tanto es muy importante manejar este mensaje,
cuando cambia el nmero ( #).
63
Devuelve las coordenadas de la esquina superior izquierda de la caja de seleccin
Browser. Por lo general no se necesita cambiar este valor por defecto ( #x #y).
64
Este mensaje devuelve la diferencia entre objetos marcados y el tope de pagina. En
efecto, cuando la diferencia es menor que la seleccin actual y menor del tamao de la
pagina, la calculadora puede causar un error ( #).
65
Este mensaje es utilizado cuando el fondo necesita ser pintado, es decir, su accin puede
usarse cuando se necesita dibujar algo mas en el fondo ( ).
66
Este mensaje es utilizado cuando se requiere pintar el ttulo. Su accin debe dibujar el
titulo en HARDBUF.
La mayora de veces su accin no se maneja, y el ttulo es
arrastrado por $Title ( ).
67
Retorna el ttulo como un grob. La mayora de las veces este no se usa, y el ttulo es
arrastrado por $Title ( grob).
68
Si el mensaje 67 no esta definido, este es llamado y retorna el ttulo como un grob, pero
solo en el modo de pantalla llena (full-screen) ( grob).
69
Si el mensaje 67 no esta definido, este es llamado y retorna el ttulo como un grob, pero
solo en el modo de media pantalla ( grob).
70
Si el parmetro de $Title no es una cadena nula, esta entrada es llamada para devolver
una cadena del ttulo. Esto arrasa el parmetro $Title ( $).
74
Este mensaje debe dibujar todas las lneas visibles del Browser ( ).
63
Programacin en System-Rpl
79
by LUIS VALDIVIESO VIDAL
Este mensaje deber mostrar una lnea del Browser. Si esta linea es seleccionada, este
mensaje deber dibujar esta lnea en video inversin, o marcarla que es el seleccionado
en otra forma (# ).
80
Este mensaje es una alternativa a proporcionar los artculos como el parmetro items
(mas adelante). Proporciona el numero de items y este mensaje deber retornar el item.
Cualquier objeto puede ser retornado ::Converter este comando mandara a convertir esto
en una cadena. Si usted quiere tener items con cambios dinmicos, este mensaje le
permite, pero el mensaje 82 es mejor en este caso (# ob).
81
Este mensaje convierte un elemento en un grob. Esto atropella el parmetro ::Converter.
Se debe devolver un grob con dimensiones 7NULLLAMx8NULLLAM.
Si se habilitan
marcas, se debe incorporar estas marcas en el grob si el artculo se verifica (# grob).
82
Este mensaje es semejante al 80, pero el objeto ya es retornado como una cadena.
::Converter no es llamado solo despus. Si este mensaje es utilizado, no se necesita
escribir un ::Converter ( # $).
83
Retorna una lista que describe el men. El formato de la lista es similar al del InputLine y
al del InptForm ( {}).
85
Este mensaje es llamado cundo el Browser se empieza, despus de que todo ha sido fijo
( ).
86
Este es llamado cuando un item es chequeado o descartado (# ).
87
Este mensaje se llama antes de la salida del Browser ( ).
91
Este mensaje se llama despus de que la tecla ON ha sido presionada o la tecla CANCL
del men. Si TRUE es retornado el Browser sale, caso contrario es retornado FALSE, el
Browser continua ( flag).
96
Este mensaje se llama despus de que la tecla ENTER ha sido presionada o la tecla OK
del men. Si TRUE es retornado el Browser sale, caso contrario es retornado FALSE, el
Browser continua ( flag).
17.2
El parmetro $Title.
Este parmetro especifica el ttulo.
64
Programacin en System-Rpl
17.3
by LUIS VALDIVIESO VIDAL
El parmetro ::Converter
Este es un secundario que convierte cualquier tipo de objeto se usa como una lista o una cadena para
mostrar. El diagrama de la pila para este objeto es (ob $).
Si se maneja los mensajes 81 u 82, no se necesita escribir este programa para hacer la conversin. Sin
embargo, el Browser le permite al usuario presionar Alpha seguido de una letra para buscar un objeto que
empieza con esa letra y salvarlo a l. Esto requiere el parmetro ::Converter aun cuando estos mensajes
son suplidos. Debe asegurarse de que estas rutas iguales retorne en cadena.
La entrada de DO>STR puede ser de mucha ayuda aqu.
17.4
El parmetro {}Items
Puede especificar una lista de objeto o una lista vaca (NULL{}) y use los mensajes 80, 81 u 82 para
proveer los elementos.
17.5
El parmetro INIT
Este puede ser un entero binario o una lista. Si es un entero binario 0, el browser trabaja como un visor,
desaprobando selecciones. Si es otro entero binario, es el elemento inicialmente seleccionado.
Si se habilitan selecciones mltiples, usted puede especificar una lista de binarios, en cambio
representando los elementos inicialmente verificados.
Ejemplos:
::
CKO
DOVARS
LAM SM
BINT1
DOBIND
::
65
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
BINT60
#=casedrop
TrueTrue
BINT62
#=casedrop
::
LAM SM
LENCOMP
DUP#0=IT
#1+
TRUE
;
BINT82
#=casedrop
::
LAM SM
SWAP
NTHELCOMP
ITE
::
setStdwid
FPRT 4 7
;
No hay SM
;
BINT83
#=casedrop
::
{
{
AD
::
PushVStack&Clear
DoNewMatrix
DEPTH
#0<>
IT
::
LAM SM
SWAP
>TCOMP
LAM SM
STO
ROMPTR B3 3E
66
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
;
PopMetaVStackDROP
;
}
{
DEL
::
LAM SM
INNERDUP
#0=case
DROP
PushVStack&Keep
reversym
DROP
18GETLAM
ROLL
DROP
18GETLAM
#1UNROLL
DEPTH
{}N
LAM SM
STO
PopMetaVStackDROP
ROMPTR B3 E3
18GETLAM
12GETLAM
#MIN
18PUTLAM
FALSE
ROMPTR B3 19
;
}
{
EDIT
::
LAM SM
18GETLAM
NTHELCOMP
NOT?SEMI
67
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
DoOlMatrix
NOT?SEMI
18GETLAM
LAM SM
PUTLIST
LAM SM
STO
;
}
{
COPY
::
LAM SM
LEMCOMP
#0=case
DoBadKey
LAM SM
DUP
18GETLAM
NTHCOMPDROP
>TCOMP
LAM SM
STO
12GETLAM
#1+
12PUTLAM
;
}
{
CLEAR
::
LAM SM
LENCOMP
#0=case
DoBadKey
Borrar todo?
AskQuestion
NOT?SEMI
NULL{}
LAM SM
STO
BINT1
12PUTLAM
68
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
;
}
{
OK
FPTR 2 9D
}
}
TRUE
;
DROPFALSE
;
MATRICES SM
NULL: :
NULL{}
BINT1
ROMPTR B3 0
ABND
;
@
17.6 VARIABLES UASADAS POR EL HP48 BROWSER.
LAM
DESCRIPCIN
TIPO
Usada por CACHE
n/a
Condicin para terminar POL
flag
Estado de despliegue inicial. Esta es
{}
una lista en este formato:
{ DA1IsStatFlag DA2bEditFlag DA1BadFlag
DA2aBadFlag DA2bBadFlag DA3BadFlag }
4
Men antes de correr Browser
grob 131x8
Pantalla antes de correr Browser
Desplazamiento en pgina.
Altura de la lnea del Browser
Coordenada x de la esquina superior izquierda
grob 131x56
del Browser en el HARDBUFF
10
Coordenada y de la esquina superior izquierda
del Browser en el HARDBUFF
11
Tamao de la pgina
12
Nmero de elementos
13
Men
{}
14
Full screen?
flag
15
Lista de indexes de items chequedos
flag
69
Programacin en System-Rpl
16
Marcas de chk habilitados?
17
TRUE si es un Browser y FALSE si es un
by LUIS VALDIVIESO VIDAL
flag
flag
Viewer
18
Index actual seleccionado
19
{}items
{}
20
: :Converter
::
21
$Title
22
: :Appl
::
70
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
PARTE IV
ANEXOS
71
Programacin en System-Rpl
18.
by LUIS VALDIVIESO VIDAL
MENSAJES DE RRROR.
Los siguientes mensajes de error fueron tomados textualmente del documento HP49Gmsg# de la versin
1.17.
# 1: Insufficient Memory
# 103: Invalid User Function
# 2: Directory Recursion
# 104: No Current Equation
# 3: Undefined Local Name
# 106: Invalid Syntax
# 4: Undefined XLIB Name
# 107: Real Number
# 5: Memory Clear
# 108: Complex Number
# 6: Power Lost
# 109: String
# 7: Warning:
# 10A: Real Array
# 8: Invalid Card Data
# 10B: Complex Array
# 9: Object In Use
# 10C: List
# A: Port Not Available
# 10D: Global Name
# B: No Room in Port
# 10E: Local Name
# C: Object Not in Port
# 10F: Program
# D: Recovering Memory
# 110: Algebraic
# E: Try To Recover Memory?
# 111: Binary Integer
# F: Replace RAM, Press ON
# 112: Graphic
# 10: No Mem To Config All
# 113: Tagged
# 11: Undefined FPTR Name
# 114: Unit
# 12: Invalid Bank Data
# 115: XLIB Name
# 13: Full Check Bad Crc
# 116: Directory
# 14: Cmprs: not a user bank
# 117: Library
# 15: No or 2 system bank
# 118: Backup
# 16: Invalid bank
# 119: Function
# 17: Invalid bank number
# 11A: Command
# 18: Inexisting pack
# 11B: System Binary
# 19: Pack twice
# 11C: Long Real
# 1A: Ins. Mem.
# 11D: Long Complex
# 1B: Erase Fail, Rom faulty
# 11E: Linked Array
# 1C: Erase Fail, Low bats
# 11F: Character
# 1D: Erase Fail, Locked Block
# 120: Code
# 1E: Write Adr outside ROM
# 121: Library Data
# 1F: Write Fail, Rom Faulty
# 122: External
# 20: Write Fail, Low bats
# 124: LAST STACK Disabled
# 21: Write Fail, Locked Block
# 125: LAST CMD Disabled
# 101: No Room to Save Stack
# 126: HALT Not Allowed
# 102: Can't Edit Null Char.
# 127: Array
72
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# 128: Wrong Argument Count
# 157: Y= not available
# 129: Circular Reference
# 158: Warning: Changes will not be saved
# 12A: Directory Not Allowed
# 159: Result not editable in EQW
# 12B: Non-Empty Directory
# 201: Too Few Arguments
# 12C: Invalid Definition
# 202: Bad Argument Type
# 12D: Missing Library
# 203: Bad Argument Value
# 12E: Invalid PPAR
# 204: Undefined Name
# 12F: Non-Real Result
# 205: LASTARG Disabled
# 130: Unable to Isolate
# 206: Incomplete Subexpression
# 131: No Room to Show Stack
# 207: Implicit () off
# 132: Warning:
# 208: Implicit () on
# 133: Error:
# 301: Positive Underflow
# 134: Purge?
# 302: Negative Underflow
# 135: Out of Memory
# 303: Overflow
# 136: Stack
# 304: Undefined Result
# 137: Last Stack
# 305: Infinite Result
# 138: Last Commands
# 501: Invalid Dimension
# 139: Key Assignments
# 502: Invalid Array Element
# 13A: Alarms
# 503: Deleting Row
# 13B: Last Arguments
# 504: Deleting Column
# 13C: Name Conflict
# 505: Inserting Row
# 13D: Command Line
# 506: Inserting Column
# 13F: Interrupted
# 601: Invalid Data
# 140: Integer
# 602: Nonexistent DAT
# 141: Symbolic Matrix
# 603: Insufficient Data
# 142: Font
# 604: Invalid PAR
# 143: Aplet
# 605: Invalid Data LN(Neg)
# 144: Extended Real
# 606: Invalid Data LN(0)
# 145: Extended Complex
# 607: Invalid EQ
# 146: FlashPtr
# 608: Current equation:
# 147: Extended Ptr
# 609: No current equation.
# 148: MiniFont
# 60A: Enter eqn, press NEW
# 149: Extended 1
# 60B: Name the equation, press ENTER
# 14A: Extended 2
# 60C: Select plot type
# 14B: Extended 3
# 60D: Empty catalog
# 14C: YES
# 60E: undefined
# 14D: NO
# 60F: No stat data to plot
# 14E: TRUE
# 610: Autoscaling
# 14F: FALSE
# 611: Solving for
# 150: Are you sure?
# 612: No current data. Enter
# 151: Low Memory Condition Please Wait...
# 613: data point, press +
# 152: CATALOG
# 614: Select a model
# 153: Nonexistent Find Pattern
# 615: No alarms pending.
# 154: Not Found
# 616: Press ALRM to create
# 155: Nonexistent Replace Pattern
# 617: Next alarm:
# 156: Can't Find Selection
# 618: Past due alarm:
73
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# 619: Acknowledged
# 717: Key Click
# 61A: Enter alarm, press SET
# 718: Last Stack
# 61B: Select repeat interval
# 719: Choose calculator operating mode
# 61C:
# 71A: Choose number display format
I/O setup menu
# 61D: Plot type:
# 71B: Choose decimal places to display
# 61E: ""
# 71C: Choose angle measure
# 61F: (OFF SCREEN)
# 71D: Choose coordinate system
# 620: Invalid PTYPE
# 71E: Use comma as fraction mark?
# 621: Name the stat data, press ENTER
# 71F: Enable standard beep?
# 622: Enter value (zoom out if >1), press
# 720: Enable key click?
ENTER
# 721: Save last stk for UNDO and ANS?
# 623: Copied to stack
# 722: CALCULATOR MODES
# 624: x axis zoom w/AUTO.
# 723: Font:
# 625: x axis zoom.
# 724: Stack:
# 626: y axis zoom.
# 725: Small
# 627: x and y axis zoom.
# 726: Textbook
# 628: IR/wire:
# 727: Edit:
# 629: ASCII/binary:
# 728: Small
# 62A: baud:
# 729: Full Page
# 62B: parity:
# 72A: Indent
# 62C: checksum type:
# 72B: EQW:
# 62D: translate code:
# 72C: Small
# 62E: Enter matrix, then NEW
# 72D: Small Stack Disp
# 62F: No Associated Numeric View
# 72E: Header:
# 701: Algebraic
# 72F: Clock
# 702: RPN
# 730: Analog
# 703: Standard
# 731: Choose system font
# 704: Std
# 732: Display stack using small font?
# 705: Fixed
# 733: Use pretty print in the stack?
# 706: Fix
# 734: Edit using small font?
# 707: Scientific
# 735: Edit in full page?
# 708: Sci
# 736: Automatically indent new lines?
# 709: Engineering
# 737: Edit in EQW using small font?
# 70A: Eng
# 738: Display EQW using small font?
# 70B: Degrees
# 739: Choose header height
# 70C: Radians
# 73A: Display ticking clock?
# 70D: Grads
# 73B: Analog clock?
# 70E: Rectangular
# 73C: DISPLAY MODES
# 70F: Polar
# 73D: Indep var:
# 710: Spherical
# 73E: Modulo:
# 711: Operating Mode
# 73F: Verbose
# 712: Number Format
# 740: Step/Step
# 713: Angle Measure
# 741: Complex
# 714: Coord System
# 742: Approx
# 715: FM,
# 743: Incr Pow
# 716: Beep
# 744: Simp Non-Rational
74
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# 745: Rigorous
# 76F: Scatter
# 746: Numeric
# 770: Slopefield
# 747: Enter independent variable name
# 771: Fast3D
# 748: Enter modulo value
# 772: Wireframe
# 749: Display calculus information?
# 773: Ps-Contour
# 74A: Perform operations step by step?
# 774: Y-Slice
# 74B: Allow complex numbers?
# 775: Gridmap
# 74C: Perform approx calculations?
# 776: Pr-Surface
# 74D: Increasing polynomial ordering?
# 777: Deg
# 74E: Simplify non rational expr?
# 778: Rad
# 74F: Don't simplify |X| to X?
# 779: Grad
# 750: Replace constants by values?
# 77A: Type:
# 751: CAS MODES
# 77B: :
# 752: Goto row:
# 77C: EQ:
# 753: Goto column:
# 77D: Indep:
# 754: Specify a row to go to
# 77E: Connect
# 77F: Simult
# 780: H-Tick:
# 781: V-Tick:
# 755: Specify a column to go to
# 756: Matrix Writer
# 757: Bad range value
# 758: Start:
# 759: Step:
# 75A: Type:
# 75B: Zoom:
# 75C: Small Font
# 75D: File:
# 75E: Enter starting value
# 75F: Enter increment value
# 760: Choose table format
# 761: Enter zoom factor
# 762: Display table using small font?
# 763: Enter a filename to save data
# 764: TABLE SETUP
# 765: Automatic
# 766: Build Your Own
# 767: Function
# 768: Polar
# 769: Parametric
# 76A: Diff Eq
# 76B: Conic
# 76C: Truth
# 76D: Histogram
# 76E: Bar
# 782: Pixels
# 783: Depnd:
# 784: Save Animation
# 785: DAT:
# 786: Col:
# 787: Cols:
# 788: F:
# 789: H-Var:
# 78A: V-Var:
# 78B: Stiff
# 78C: FY:
# 78D: FT:
# 78E: Choose type of plot
# 78F: Choose angle measure
# 790: Enter function(s) to plot
# 791: Enter independent variable name
# 792: Connect plot points?
# 793: Plot functions simultaneously?
# 794: Enter horizontal tick spacing
# 795: Enter vertical tick spacing
# 796: Tick spacing units are pixels?
# 797: Enter dependent variable name
# 798: Save slices animation?
# 799: Enter data to plot
# 79A: Enter col to use for horizontal
# 79B: Enter col to use for vertical
# 79C: Enter horizontal variable
75
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# 79D: Enter vertical variable
# 7CB: Enter X eyepoint coordinate
# 79E: Use stiff diff eq solver?
# 7CC: Enter Y eyepoint coordinate
# 79F: Enter derivative w.r.t. soln
# 7CD: Enter Z eyepoint coordinate
# 7A0: Enter derivative w.r.t. indep
# 7CE: Enter absolute error tolerance
# 7A1: PLOT SETUP
# 7CF: Enter minimum XX range value
# 7A2: H-View:
# 7D0: Enter maximum XX range value
# 7A3: V-View:
# 7D1: Enter minimum YY range value
# 7A4: Indep Low:
# 7D2: Enter maximum YY range value
# 7A5: High:
# 7D3: PLOT WINDOW
# 7A6: Step:
# 7D4: Default
# 7A7: Pixels
# 7D5: FUNCTION
# 7A8: Depnd Low:
# 7D6: POLAR
# 7A9: High:
# 7D7: PARAMETRIC
# 7AA: X-Left:
# 7D8: DIFF EQ
# 7AB: X-Right:
# 7D9: CONIC
# 7AC: Y-Near:
# 7DA: TRUTH
# 7AD: Y-Far:
# 7DB: HISTOGRAM
# 7AE: Step Indep:
# 7DC: BAR
# 7AF: Depnd:
# 7DD: SCATTER
# 7B0: Bar Width:
# 7DE: SLOPEFIELD
# 7B1: Z-Low:
# 7DF: FAST3D
# 7B2: Z-High:
# 7E0: WIREFRAME
# 7B3: XE:
# 7E1: PS-CONTOUR
# 7B4: YE:
# 7E2: Y-SLICE
# 7B5: ZE:
# 7E3: GRIDMAP
# 7B6: Init:
# 7E4: PR-SURFACE
# 7B7: Final:
# 7E5: PLOT WINDOW -
# 7B8: Init-Soln:
# 7E6: Enter minimum X view-volume val
# 7B9: Tol:
# 7E7: Enter maximum X view-volume val
# 7BA: XXLeft:
# 7E8: Enter minimum Y view-volume val
# 7BB: XXRight:
# 7E9: Enter maximum Y view-volume val
# 7BC: YYNear:
# 7EA: Enter indep var sample count
# 7BD: YYFar:
# 7EB: Enter depnd var sample count
# 7BE: Enter minimum horizontal value
# 7EC: Goto Level:
# 7BF: Enter maximum horizontal value
# 7ED: Specify a level to go to
# 7C0: Enter minimum vertical value
# 7EE: HISTORY
# 7C1: Enter maximum vertical value
# 801: Must be >= 0
# 7C2: Enter minimum indep var value
# 802: Must be bewteen 0 and 1
# 7C3: Enter maximum indep var value
# 803: 0:
# 7C4: Enter indep var increment
# 804:
# 7C5: Indep step units are pixels?
# 805: N:
# 7C6: Enter minimum depend var value
# 806: :
# 7C7: Enter maximum depend var value
# 807: :
# 7C8: Enter bar width
# 808: Null hypothesis population mean
# 7C9: Enter minimum Z view-volume val
# 809: Sample mean
# 7CA: Enter maximum Z view-volume val
# 80A: Sample Size
76
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# 80B: Significance level
# 839: Sample Mean
# 80C: Population standard deviation
# 83A: Significance level
# 80D: Z-TEST: 1 , KNOWN
# 83B: Sample size
# 80E: Alternative Hypothesis
# 83C: T-TEST: 1 , UNKNOWN
# 80F:
# 83D:
1:
1:
# 810: 1:
# 83E: S1:
# 811: N1:
# 83F: N1:
# 812: :
# 840: :
# 813:
# 841:
2:
2:
# 814: 2:
# 842: S2:
# 815: N2:
# 843: N2:
# 816: Sample mean for population 1
# 844: Pooled?
# 817: Std deviation for population 1
# 845: Sample mean for population 1
# 818: Sample size for population 1
# 846: Std deviation for sample 1
# 819: Significance level
# 847: Sample size for population 1
# 81A: Sample mean for population 2
# 848: Significance level
# 81B: Std deviation for population 2
# 849: Sample mean for population2
# 81C: Sample size for population 2
# 84A: Std deviation for sample 2
# 81D: Z-TEST: 2 , KNOWN
# 84B: Sample size for population 2
# 81E: 0:
# 84C: "Pooled" if checked
# 81F: x:
# 84D: T-TEST: 2 , UNKNOWN
# 820: N:
# 84E:
# 821: :
# 84F: :
# 822: Null hyp. population proportion
# 850: N:
# 823: Success count
# 851: C:
# 824: Sample size
# 852: Sample mean
# 825: Significance level
# 853: Population standard deviation
# 826: Z-TEST: 1 P
# 854: Sample size
# 827: X1:
# 855: Confidence level
# 828: N1:
# 856: CONF. INT.: 1 , KNOWN
# 829: :
# 857:
# 82A: X2:
# 858: 1:
# 82B: N2:
# 859: N1:
# 82C: Success count for sample 1
# 85A: C:
# 82D: Size of sample 1
# 85B:
# 82E: Significance level
# 85C: 2:
# 82F: Success count for sample 2
# 85D: N2:
# 830: Size of sample 2
# 85E: Sample mean for population 1
# 831: Z-TEST: 2 P
# 85F: Std deviation for sample 1
# 832:
# 860: Size of sample 1
1:
2:
# 833: Sx:
# 861: Sample mean for population 2
# 834: 0:
# 862: Std deviation for sample 2
# 835: :
# 863: Size of sample 2
# 836: N:
# 864: Confidence level
# 837: Null hypothesis population mean
# 865: CONF. INT.: 2 , KNOWN
# 838: Sample Standard deviation
# 866: x:
77
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# 867: N:
# 895: Search For:
# 868: C:
# 896: Enter search pattern
# 869: Sample success count
# 897: Enter replace pattern
# 86A: Sample size
# 898: Case sensitive search?
# 86B: Confidence level
# 899: Enter search pattern
# 86C: CONF. INT.: 1 P
# 89A: FIND REPLACE
# 86D:
# 89B: FIND
1:
# 86E: N1:
# 89C: Goto Line:
# 86F: C:
# 89D: Specify a line to go to
# 870:
# 89E: GOTO LINE
2:
# 871: N2:
# 89F: Goto Position:
# 872: Sample 1 success count
# 8A0: Specify a position to go to
# 873: Sample 1 size
# 8A1: GOTO POSITION
# 874: Sample 2 success count
# 8A2: H-Factor:
# 875: Sample 2 size
# 8A3: V-Factor:
# 876: Confidence level
# 8A4: Recenter on cursor
# 877: CONF. INT.: 2 P
# 8A5: Enter horizontal zoom factor
# 878:
# 8A6: Enter vertical zoom factor
# 879: Sx:
# 8A7: Recenter plot on cursor?
# 87A: N:
# 8A8: ZOOM FACTOR
# 87B: C:
# 8A9: Object:
# 87C: Sample mean
# 8AA: Name:
# 87D: Sample standard deviation
# 8AB: Directory
# 87E: Sample size
# 8AC: Enter New Object
# 87F: Confidence level
# 8AD: Enter variable name
# 880: CONF. INT.: 1 , UNKNOWN
# 8AE: Create a new directory?
# 881:
# 8AF: NEW VARIABLE
1:
# 882: S1:
# 8B0: Select Object
# 883: N1:
# 901: [not shown - very long help text for
# 884: C:
some statistics app.]
# 885:
# 902: [not shown - very long help text for
2:
# 886: S2:
some statistics app.]
# 887: N2:
# 903: [not shown - very long help text for
# 888: Pooled
some statistics app.]
# 889: Sample 1 mean
# 904: [not shown - very long help text for
# 88A: Std deviation for sample 1
some statistics app.]
# 88B: Sample 1 size
# 905: [not shown - very long help text for
# 88C: Sample 2 mean
some statistics app.]
# 88D: Std deviation for sample 2
# 906: [not shown - very long help text for
# 88E: Sample 2 size
some statistics app.]
# 88F: Confidence level
# 907: [not shown - very long help text for
# 890: Pooled if checked
some statistics app.]
# 891: CONF. INT.: 2 , UNKNOWN
# 908: [not shown - very long help text for
# 892: Search for:
some statistics app.]
# 893: Replace by:
# 909: [not shown - very long help text for
# 894: Case Sensitive
some statistics app.]
78
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# 90A: [not shown - very long help text for
# B902: reset/delete this field
some statistics app.]
# B903: Reset value
# 90B: [not shown - very long help text for
# B904: Delete value
some statistics app.]
# B905: Reset all
# 90C: [not shown - very long help text for
# B906: Valid object types:
some statistics app.]
# B907: Valid object type:
# 90D: Inconclusive result
# B908: Any object
# A01: Bad Guess(es)
# B909: Real number
# A02: Constant?
# B90A: (Complex num)
# A03: Interrupted
# B90B: "String"
# A04: Zero
# B90C: [ Real array ]
# A05: Sign Reversal
# B90D: [(Cmpl array)]
# A06: Extremum
# B90E: { List }
# A07: Left
# B90F: Name
# A08: Right
# B910: Program
# A09: Expr
# B911: 'Algebraic'
# B01: Invalid Unit
# B912: # Binary int
# B02: Inconsistent Units
# B913: _Unit object
# C01: Bad Packet Block Check
# B914: Invalid object type
# C02: Timeout
# B915: Invalid object value
# C03: Receive Error
# B916: Calculator Modes
# C04: Receive Buffer Overrun
# B917: Number Format:
# C05: Parity Error
# B918: Angle Measure:
# C06: Transfer Failed
# B919: Coord System:
# C07: Protocol Error
# B91A: Beep
# C08: Invalid Server Cmd.
# B91B: Clock
# C09: Port Closed
# B91C: FM,
# C0A: Connecting
# B91D: Choose number display format
# C0B: Retry #
# B91E: Enter decimal places to display
# C0C: Awaiting Server Cmd.
# B91F: Choose angle measure
# C0D: Sending
# B920: Choose coordinate system
# C0E: Receiving
# B921: Enable standard beep?
# C0F: Object Discarded
# B922: Display ticking clock?
# C10: Packet #
# B923: Use comma as fraction mark?
# C11: Processing Command
# B924: Standard
# C12: Invalid IOPAR
# B925: Std
# C13: Invalid PRTPAR
# B926: Fixed
# C14: Low Battery
# B927: Fix
# C15: Empty Stack
# B928: Scientific
# C16: Row
# B929: Sci
# C17: Invalid Name
# B92A: Engineering
# D01: Invalid Date
# B92B: Eng
# D02: Invalid Time
# B92C: Degrees
# D03: Invalid Repeat
# B92D: Deg
# D04: Nonexistent Alarm
# B92E: Radians
# B901: Press [CONT] for menu
# B92F: Rad
79
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# B930: Grads
# B95E: 71 Show addresses
# B931: Grad
# B95F: 72 Stack: cur fnt
# B932: Rectangular
# B960: 73 Edit: cur fnt
# B933: Polar
# B961: 74 Right stack disp
# B934: Spherical
# B962: 76 Purge confirm
# B935: SYSTEM FLAGS
# B963: 79 Algebraic stk
# B936: 01 General solutions
# B964: 80 EQW cur stk font
# B937: 02 Constant
symb
# B965: 81 GRB Alg cur font
# B938: 03 Function
symb
# B966: 82 EQW edit cur font
# B939: 14 Payment at end
# B967: 83 Display grobs on
# B93A: 19
# B968: 85 Normal stk disp
V2
vector
# B93B: 20 Underflow
# B93C: 21 Overflow
# B969: 90 CHOOSE cur font
9E499
# B96A: 91 MTRW:matrix
# B93D: 22 Infinite
error
# B96B: 92 MASD asm mode
# B93E: 27 'X+Y*i'
'(X,Y)'
# B96C: 94 Result = LASTCMD
# B93F: 28 Sequential plot
# B96D: 97 List: horiz disp
# B940: 29 Draw axes too
# B96E: 98 Vector:horiz disp
# B941: 31 Connect points
# B96F: 99 CAS: quiet
# B942: 32 Solid cursor
# B970: 100 Step by step off
# B943: 35 ASCII transfer
# B971: 103 Complex off
# B944: 36 RECV renames
# B972: 105 Exact mode on
# B945: 37 Single-space prnt
# B973: 106 Simp. in series
# B946: 38 Add linefeeds
# B974: 109 Sym. factorize
# B947: 39 Show I/O messages
# B975: 110 Normal matrices
# B948: 40 Don't show clock
# B976: 111 Simp non rat.
# B949: 41 12-hour clock
# B977: 113 Linear simp on
# B94A: 42 mm/dd/yy format
# B978: 114 Disp 1+x
# B94B: 43 Reschedule alarm
# B979: 116 Prefer cos()
# B94C: 44 Delete alarm
# B97A: 117 CHOOSE boxes
# B94D: 52 Show many lines
# B97B: 119 Rigorous on
# B94E: 53 No extra parens
# B97C: 120 Silent mode off
# B94F: 54 Tiny element
x+1
# B97D: 01 Principal value
# B950: 55 Save last args
# B97E: 02 Constant
num
# B951: 57 Alarm beep on
# B97F: 03 Function
num
# B952: 58 Show INFO
# B980: 14 Payment at begin
# B953: 59 Show variables
# B981: 19
# B954: 60 [][] locks
# B982: 20 Underflow
# B955: 61 [USR][USR] locks
# B983: 21 Overflow
# B956: 62 User keys off
# B984: 22 Infinite
9E499
# B957: 63 Custom ENTER off
# B985: 27 'X+Y*i'
'X+Y*i'
# B958: 65 All multiline
# B986: 28 Simultaneous plot
# B959: 66 Stk: x lines str
# B987: 29 Don't draw axes
# B95A: 67 Digital clock
# B988: 31 Plot points only
# B95B: 68 No autoIndent
# B989: 32 Inverse cursor
# B95C: 69 Line edit
# B98A: 35 Binary transfer
# B95D: 70
# B98B: 36 RECV overwrites
GROB 1 line str
V2
complex
error
error
80
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# B98C: 37 Double-space prnt
# B9BA: 106 !Simp. in series
# B98D: 38 No linefeeds
# B9BB: 109 Num factorize
# B98E: 39 No I/O messages
# B9BC: 110 Large matrices
# B98F: 40 Show clock
# B9BD: 111 !Simp non rat.
# B990: 41 24-hour clock
# B9BE: 113 Linear simp off
# B991: 42 [Link] format
# B9BF: 114 Disp x+1
# B992: 43 Don't reschedule
# B9C0: 116 Prefer sin()
# B993: 44 Save alarm
# B9C1: 117 Soft MENU
# B994: 52 Show one line
# B9C2: 119 Rigorous off
# B995: 53 Show all parens
# B9C3: 120 Silent mode on
# B996: 54 Use tiny element
# B9C4: Object:
# B997: 55 No last args
# B9C5: Obs in
# B998: 57 Alarm beep off
# B9C6: Name:
# B999: 58 Don't show INFO
# BA01: [Link] to HP 49
# B99A: 59 Show names only
# BA02: [Link] from HP 49
# B99B: 60 [] locks Alpha
# BA03: [Link] display
# B99C: 61 [USR] locks User
# BA04: [Link]
# B99D: 62 User keys on
# BA05: [Link]
# B99E: 63 Custom ENTER on
# BA06: [Link] Server
# B99F: 65 Level 1 multiline
# BA07: Enter names of vars to send
# B9A0: 66 Stk: 1 line str
# BA08: Vars in
# B9A1: 67 Analog clock
# BA09: SEND TO HP 49
# B9A2: 68 AutoIndent
# BA0A: Port:
# B9A3: 69 Infinite line edit
# BA0B: Dbl-Space
# B9A4: 70
# BA0C: Delay:
GROB x lines str
1+x
# B9A5: 71 No addresses
# BA0D: Xlat:
# B9A6: 72 Stack: mini font
# BA0E: Linef
# B9A7: 73 Edit: mini font
# BA0F: Baud:
# B9A8: 74 Left stack disp
# BA10: Parity:
# B9A9: 76 No purge confirm
# BA11: Len:
# B9AA: 79 Std stack
# BA12: Choose print port
# B9AB: 80 EQW mini stk font
# BA13: Enter object(s) to print
# B9AC: 81 GRB Alg mini font
# BA14: Print extra space between lines?
# B9AD: 82 EQW edit mini fnt
# BA15: Enter delay between lines
# B9AE: 83 Display grobs off
# BA16: Choose character translations
# B9AF: 85 SysRPL stk disp
# BA17: Print linefeed between lines?
# B9B0: 90 CHOOSE mini font
# BA18: Choose baud rate
# B9B1: 91 MTRW:list of list
# BA19: Choose parity
# B9B2: 92 MASD SysRPL mode
# BA1A: Enter printer line length
# B9B3: 94 Result <> LASTCMD
# BA1B: PRINT
# B9B4: 97 List: vert disp
# BA1C: Type:
# B9B5: 98 Vector:vert disp
# BA1D: OvrW
# B9B6: 99 CAS: verbose
# BA1E: Fmt:
# B9B7: 100 Step by step on
# BA1F: Chk:
# B9B8: 103 Complex on
# BA20: Choose transfer port
# B9B9: 105 Approx. mode on
# BA21: Choose type of transfer
81
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# BA22: Enter names of vars to transfer
# BB0D: Minimum
# BA23: Choose transfer format
# BB0E: Enter statistical data
# BA24: Choose checksum type
# BB0F: Enter variable column
# BA25: Overwrite existing variables?
# BB10: Choose statistics type
# BA26: TRANSFER
# BB11: Calculate mean?
# BA27: Local vars
# BB12: Calculate standard deviation?
# BA28: Remote PC files
# BB13: Calculate variance?
# BA29: Files in
# BB14: Calculate column total?
# BA2A: Enter name of dir to change to
# BB15: Calculate column maximum?
# BA2B: Choose Remote Directory
# BB16: Calculate column minimum?
# BA2C: Infrared
# BB17: Sample
# BA2D: IR
# BB18: Population
# BA2E: Wire
# BB19: FREQUENCIES
# BA2F: Kermit
# BB1A: X-Min:
# BA30: XModem
# BB1B: Bin Count:
# BA31: Odd
# BB1C: Bin Width:
# BA32: Even
# BB1D: Enter minimum first bin X value
# BA33: Mark
# BB1E: Enter number of bins
# BA34: Space
# BB1F: Enter bin width
# BA35: Spc
# BB20: FIT DATA
# BA36: ASCII
# BB21: X-Col:
# BA37: ASC
# BB22: Y-Col:
# BA38: Binary
# BB23: Model:
# BA39: Bin
# BB24: Enter indep column number
# BA3A: None
# BB25: Enter dependent column number
# BA3B: Newline (Ch 10)
# BB26: Choose statistical model
# BA3C: Newl
# BB27: Correlation
# BA3D: Chr 128-159
# BB28: Covariance
# BA3E:
159
# BB29: PREDICT VALUES
# BA3F:
255
# BB2A: Y:
# BA40: Chr 128-255
# BB2B: Enter indep value or press PRED
# BA41: One-digit arith
# BB2C: Enter dep value or press PRED
# BA42: Two-digit arith
# BB2D: SUMMARY STATISTICS
# BA43: Three-digit CRC
# BB2E: Calculate:
# BB01: [Link]-var
# BB2F: X
# BB02: [Link]
# BB30: Y
# BB03: [Link] data
# BB31: X2
# BB04: [Link] stats
# BB32: Y2
# BB05: SINGLE-VARIABLE STATISTICS
# BB33: XY
# BB06: DAT:
# BB34: N
# BB07: Type:
# BB35: Calculate sum of X column?
# BB08: Mean
# BB36: Calculate sum of Y column?
# BB09: Std Dev
# BB37: Calculate sum of squares of X?
# BB0A: Variance
# BB38: Calculate sum of squares of Y?
# BB0B: Total
# BB39: Calculate sum of products?
# BB0C: Maximum
# BB3A: Calculate number of data points?
82
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# BB3B: Linear Fit
# BC28: 8 August
# BB3C: Logarithmic Fit
# BC29: 9 September
# BB3D: Exponential Fit
# BC2A: 10 October
# BB3E: Power Fit
# BC2B: 11 November
# BB3F: Best Fit
# BC2C: 12 December
# BB40: [Link]. tests
# BC2D: Week
# BB41: [Link]. interval
# BC2E: Day
# BC01: [Link] alarms
# BC2F: Hour
# BC02: [Link] alarm
# BC30: Minute
# BC03: [Link] time, date
# BC31: Second
# BC04: SET ALARM
# BC32: Weeks
# BC05: Message:
# BC33: Days
# BC06: Time:
# BC34: Hours
# BC07: Date:
# BC35: Minutes
# BC08: Repeat:
# BC36: Seconds
# BC09: Enter "message" or action
# BC37: Month/Day/Year
# BC0A: Enter hour
# BC38: M/D/Y
# BC0B: Enter minute
# BC39: [Link]
# BC0C: Enter second
# BC3A: D.M.Y
# BC0D: Choose AM, PM, or 24-hour time
# BC3B: ALARMS
# BC0E: Enter month
# BD01: [Link]
# BC0F: Enter day
# BD02: [Link]
# BC10: Enter year
# BD03: [Link] poly
# BC11: Enter alarm repeat multiple
# BD04: [Link] var
# BC12: Enter alarm repeat unit
# BD05: [Link] quad
# BC13: SET TIME AND DATE
# BD06: [Link] expr
# BC14: Choose date display format
# BD07: INTEGRATE
# BC15: Monday
# BD08: Expr:
# BC16: Tuesday
# BD09: Var:
# BC17: Wednesday
# BD0A: Result:
# BC18: Thursday
# BD0B: Enter expression
# BC19: Friday
# BD0C: Enter variable name
# BC1A: Saturday
# BD0D: Enter lower limit
# BC1B: Sunday
# BD0E: Enter upper limit
# BC1C: None
# BD0F: Choose result type
# BC1D: AM
# BD10: Choose disp format for accuracy
# BC1E: PM
# BD11: DIFFERENTIATE
# BC1F: 24-hour time
# BD12: Value:
# BC20: 24-hr
# BD13: Enter variable value
# BC21: 1 January
# BD14: Expression
# BC22: 2 February
# BD15: TAYLOR POLYNOMIAL
# BC23: 3 March
# BD16: Order:
# BC24: 4 April
# BD17: Enter Taylor polynomial order
# BC25: 5 May
# BD18: ISOLATE A VARIABLE
# BC26: 6 June
# BD19: Principal
# BC27: 7 July
# BD1A: Get principal solution only?
83
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# BD1B: SOLVE QUADRATIC
# BE22: Enter dep var sample count
# BD1C: MANIPULATE EXPRESSION
# BE23: Plot Options
# BD1D: MATCH EXPRESSION
# BE24: Lo:
# BD1E: Pattern:
# BE25: Hi:
# BD1F: Replacement:
# BE26: Axes
# BD20: Subexpr First
# BE27: Simult
# BD21: Cond:
# BE28: Connect
# BD22: Enter pattern to search for
# BE29: Pixels
# BD23: Enter replacement object
# BE2A: H-Tick:
# BD24: Search subexpressions first?
# BE2B: V-Tick:
# BD25: Enter conditional expression
# BE2C: Enter minimum indep var value
# BD26: Symbolic
# BE2D: Enter maximum indep var value
# BD27: Numeric
# BE2E: Draw axes before plotting?
# BE01: Plot
# BE2F: Connect plot points?
# BE02: Type:
# BE30: Plot functions simultaneously?
# BE03: :
# BE31: Enter indep var increment
# BE04: H-View:
# BE32: Indep step units are pixels?
# BE05: Autoscale
# BE33: Enter horizontal tick spacing
# BE06: V-View:
# BE34: Enter vertical tick spacing
# BE07: Choose type of plot
# BE35: Tick spacing units are pixels?
# BE08: Choose angle measure
# BE36: Depnd:
# BE09: Enter function(s) to plot
# BE37: Enter dependent var name
# BE0A: Enter minimum horizontal value
# BE38: Enter minimum dep var value
# BE0B: Enter maximum horizontal value
# BE39: Enter maximum dep var value
# BE0C: Autoscale vertical plot range?
# BE3A: H-Var:
# BE0D: Enter minimum vertical value
# BE3B: V-Var:
# BE0E: Enter maximum vertical value
# BE3C: Enter max indep var increment
# BE0F: Plot (x(t), y(t))
# BE3D: Choose horizontal variable
# BE10: Enter complex-valued func(s)
# BE3E: Choose vertical variable
# BE11: Plot y'(t)=f(t,y)
# BE3F: 0 INDEP
# BE12: Enter function of INDEP and SOLN
# BE40: 1 SOLN
# BE13: Enter derivative w.r.t. SOLN
# BE41: SOLN(
# BE14: Enter derivative w.r.t. INDEP
# BE42: X-Left:
# BE15: Use Stiff diff eq solver?
# BE43: X-Right:
# BE16: Dat:
# BE44: Y-Near:
# BE17: Col:
# BE45: Y-Far:
# BE18: Wid:
# BE46: Z-Low:
# BE19: Enter data to plot
# BE47: Z-High:
# BE1A: Arrays in
# BE48: Enter minimum X view-volume val
# BE1B: Enter column to plot
# BE49: Enter maximum X view-volume val
# BE1C: Enter bar width
# BE4A: Enter minimum Y view-volume val
# BE1D: Cols:
# BE4B: Enter maximum Y view-volume val
# BE1E: Enter col to use for horizontal
# BE4C: Enter minimum Z view-volume val
# BE1F: Enter col to use for vertical
# BE4D: Enter maximum Z view-volume val
# BE20: Steps:
# BE4E: XE:
# BE21: Enter indep var sample count
# BE4F: YE:
84
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# BE50: ZE:
# BF07: Enter value or press SOLVE
# BE51: Enter X eyepoint coordinate
# BF08: Eq:
# BE52: Enter Y eyepoint coordinate
# BF09: Enter function to solve
# BE53: Enter Z eyepoint coordinate
# BF0A: Funcs in
# BE54: Save Animation
# BF0B: Solver Variable Order
# BE55: Save animation data after plot?
# BF0C: Variables:
# BE56: XX-Left:
# BF0D: Enter order of vars to display
# BE57: XX-Rght:
# BF0E: SOLVE Y'(T)=F(T,Y)
# BE58: YY-Near:
# BF0F: f:
# BE59: YY-Far:
# BF10: fy:
# BE5A: Enter minimum XX range value
# BF11: ft:
# BE5B: Enter maximum XX range value
# BF12: Indep:
# BE5C: Enter minimum YY range value
# BF13: Init:
# BE5D: Enter maximum YY range value
# BF14: Final:
# BE5E: XX and YY Plot Options
# BF15: Soln:
# BE5F: Zoom Factors
# BF16: Tol:
# BE60: H-Factor:
# BF17: Step:
# BE61: V-Factor:
# BF18: Stiff
# BE62: Recenter at Crosshairs
# BF19: Enter function of INDEP and SOLN
# BE63: Enter horizontal zoom factor
# BF1A: Enter derivative w.r.t. SOLN
# BE64: Enter vertical zoom factor
# BF1B: Enter derivative w.r.t. INDEP
# BE65: Recenter plot at crosshairs?
# BF1C: Enter independent var name
# BE66: Reset plot
# BF1D: Enter initial indep var value
# BE67: Dflt
# BF1E: Enter final indep var value
# BE68: Auto
# BF1F: Enter solution var name
# BE69: Function
# BF20: Enter initial solution var value
# BE6A: Polar
# BF21: Press SOLVE for final soln value
# BE6B: Conic
# BF22: Enter absolute error tolerance
# BE6C: Truth
# BF23: Enter initial step size
# BE6D: Parametric
# BF24: Calculate stiff differential?
# BE6E: Diff Eq
# BF25: f
# BE6F: Histogram
# BF26: Tolerance
# BE70: Bar
# BF27: Solution
# BE71: Scatter
# BF28: SOLVE ANX^N++A1X+A0
# BE72: Slopefield
# BF29: Coefficients [ an a1 a0 ]:
# BE73: Wireframe
# BF2A: Roots:
# BE74: Ps-Contour
# BF2B: Enter coefficients or press SOLVE
# BE75: Y-Slice
# BF2C: Enter roots or press SOLVE
# BE76: Gridmap
# BF2D: Coefficients
# BE77: Pr-Surface
# BF2E: Roots
# BF01: [Link] equation
# BF2F: SOLVE SYSTEM AX=B
# BF02: [Link] diff eq
# BF30: A:
# BF03: [Link] poly
# BF31: B:
# BF04: [Link] lin sys
# BF32: X:
# BF05: [Link] finance
# BF33: Enter coefficients matrix A
# BF06: SOLVE EQUATION
# BF34: Enter constants or press SOLVE
85
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# BF35: Enter solutions or press SOLVE
# DE0C: numerator(s)
# BF36: Constants
# DE0D: Less than
# BF37: Solutions
# DE0E: multiplicity
# BF38: N:
# DE0F: list of
# BF39: I%YR:
# DE10: at
# BF3A: PV:
# DE11: factor(s)
# BF3B: PMT:
# DE12: Eigenvalues
# BF3C: P/YR:
# DE13: Computing for
# BF3D: FV:
# DE14: Root mult <
# BF3E: Enter no. of payments or SOLVE
# DE15: Numerical to symbolic
# BF3F: Enter yearly int rate or SOLVE
# DE16: Invalid operator
# BF40: Enter present value or SOLVE
# DE17: Result:
# BF41: Enter payment amount or SOLVE
# DE18: Pivots
# BF42: Enter no. of payments per year
# DE19: Press CONT to go on
# BF43: Enter future value or SOLVE
# DE1A: Test
# BF44: Choose when payments are made
# DE1B: To be implemented
# BF45: TIME VALUE OF MONEY
# DE1C: Unable to factor
# BF46: N
# DE1D: Z is not = 1 mod 4
# BF47: I%/YR
# DE1E: Z is not prime
# BF48: PV
# DE1F: Empty {} of equations
# BF49: PMT
# DE20: Not reducible to a rational
# BF4A: FV
expression
# BF4B: End
# DE21: Non unary operator
# BF4C: Begin
# DE22: User function
# BF4D: Beg
# DE23: Non isolable operator
# BF4E: AMORTIZE
# DE24: Not exact system
# BF4F: Payments:
# DE25: Parameters not allowed
# BF50: Principal:
# DE26: CAS internal error
# BF51: Interest:
# DE27: Invalid ^ for SERIES
# BF52: Balance:
# DE28: Operator not implemented
# BF53: Enter no. of payments to amort
(SERIES)
# BF54: Principal
# DE29: No variable in expr.
# BF55: Interest
# DE2A: No solution found
# BF56: Balance
# DE2B: Invalid derivation arg
# C001: Unable to find root
# DE2C: No solution in ring
# DE01: denominator(s)
# DE2D: Not a linear system
# DE02: root(s)
# DE2E: Can't derive int. var
# DE03: last
# DE2F: Diff equation order>2
# DE04: obvious
# DE30: INT:invalid var change
# DE05: factorizing
# DE31: Mode switch cancelled
# DE06: value
# DE32: No name in expression
# DE07: test(s)
# DE33: Invalid user function
# DE08: searching
# DE34: Can't find ODE type
# DE09: TAYLR of
at
# DE35: Integer too large
# DE0A: nth
# DE36: Unable to find sign
# DE0B: is
# DE37: Non-symmetric matrix
86
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# DE38: ATAN insufficent order
# E114: fine structure
# DE39: ASIN at infinity undef
# E115: mag flux quantum
# DE3A: Unsigned inf error
# E116: Faraday
# DE3B: LN[Var] comparison err
# E117: Rydberg
# DE3C: Undef limit for var
# E118: Bohr radius
# DE3D: Bounded var error
# E119: Bohr magneton
# DE3E: Got expr. indep of var
# E11A: nuclear magneton
# DE3F: Can't state remainder
# E11B: photon wavelength
# DE40: LN of neg argument
# E11C: photon frequency
# DE41: Insufficient order
# E11D: Compton wavelen
# DE42: ABS of non-signed 0
# E11E: 1 radian
# DE43: Numeric input
# E11F: 2 radians
# DE44: Singularity! Continue?
# E120: in trig mode
# DE45: Cancelled
# E121: Wien's
# DE46: Negative integer
# E122: k/q
# DE47: Parameter is cur. var. dependent
# E123: "0/q
# DE48: Unsimplified sqrt
# E124: q*"0
# DE49: Non polynomial system
# E125: dielectric const
# DE4A: Unable to solve ODE
# E126: SiO2 dielec cons
# DE4B: Array dimension too large
# E127: ref intensity
# DE4C: Unable to reduce system
# E128: CONSTANTS LIBRARY
# DE4D: Complex number not allowed
# E129: Undefined Constant
# DE4E: Polyn. valuation must be 0
# E401: Invalid Mpar
# DE4F: Mode switch not allowed here
# E402: Single Equation
# DE50: Non algebraic in expression
# E403: EQ Invalid for MINIT
# DE51: Purge current variable
# E404: Too Many Unknowns
# DE52: Reduction result
# E405: All Variables Known
# E101: Avogadro's number
# E406: Illegal During MROOT
# E102: Boltzmann
# E407: Solving for
# E103: molar volume
# E408: Searching
# E104: universal gas
# E601: No Solution
# E105: std temperature
# E602: Many or No Solutions
# E106: std pressure
# E603: I%YR/PYR -100
# E107: Stefan-Boltzmann
# E604: Invalid N
# E108: speed of light
# E605: Invalid PYR
# E109: permittivity
# E606: Invalid #Periods
# E10A: permeability
# E607: Undefined TVM Variable
# E10B: accel of gravity
# E608: END mode
# E10C: gravitation
# E609: BEGIN mode
# E10D: Planck's
# E60A: payments/year
# E10E: Dirac's
# E60B: Principal
# E10F: electronic charge
# E60C: Interest
# E110: electron mass
# E60D: Balance
# E111: q/me ratio
# E701: NEAR
# E112: proton mass
# E702: MINE
# E113: mp/me ratio
# E703: MINES
87
Programacin en System-Rpl
by LUIS VALDIVIESO VIDAL
# E704: SCORE:
# 10107: Label Expected
# E705: YOU MADE IT!!
# 10108: Hexa Expected
# E706: YOU BLEW UP!!
# 10109: Decimal Expected
# 10001: Invalid $ROMID
# 1010A: Can't Find
# 10002: Invalid $TITLE
# 1010B: Label already defined
# 10003: Invalid $MESSAGE
# 1010C: { expected
# 10004: Invalid $VISIBLE
# 1010D: } expected
# 10005: Invalid $HIDDEN
# 1010E: ( expected
# 10006: Invalid $EXTPRG
# 1010F: Forbidden
# 10101: Invalid File
# 10110: Bad Expression
# 10102: Too Many
# 10111: Jump too Long
# 10103: Unknow Instruction
# 10112: 1-8 expected
# 10104: Bad Field
# 10113: Insufisant Memory
# 10105: Codage 0-15 expected
# 31401: No Message here
# 10106: Codage 1-16 expected
88