El blog de Daniel Muñoz “No hay mayor riqueza que el conocimiento ni mayor pobreza que la ignorancia.” – Alí ibn Abi-Talib

27jul/090

Asignación de teclas para HP 50g/49g+.

Antes que nada quiero hacer una aclaración para que no te confundas si tu pantalla no se ve como la mía.

Mi pantalla, por ejemplo, se podría ver así:

Mi Pantalla

Mientras que, para la misma acción, la tuya se podría ver así:

Tu Pantalla

Eso se debe a que yo tengo instaladas las librerías necesarias para poder ver las entradas SysRPL, que decodifican los nombres de las entradas.

Si querés hacer lo mismo podés instalar extable2.lib. Copiala al puerto 2:FLASH y luego reiniciá la calculadora (ON+F3). También podés ver el tutorial sobre como instalar una librería. Además tenés que tener la bandera --85 set (SysRPL stk disp).

Pero si no querés instalarlo, por ahora no te preocupes, porque aunque veas "External... FlashPtr..." etc en vez del nombre correcto, el programa va a funcionar igual. Simplemente no lo vas a poder ver correctamente.

Otra cosa: Tengo la calcu en modo RPN (el otro es algebráico). Para cambiar entre RPN y ALG tenés que presionar MODE, W, OK. Esto cambia el "Operating Mode.." de RPN a Algebraic (o viceversa) y le da el OK. Para seguir estos ejemplos tenés que tener la calcu en ese modo (RPN).

Bueno, aclarado esto, manos a la obra...

El modo USER.

Jugá con esta secuencia de teclas y fijate si notás algún cambio en la pantalla de tu calculadora: LS, ALPHA, LSALPHA,LSALPHA...

Como podrás ver, lo que cambia es una etiqueta arriba en la pantalla. Cambia entre "USR", "1US" y luego desaparece.

El orden en el que cambia, está determinado por la bandera numero -61 del sistema (-61 system flag). Si está set ([USR] locks User), primero aparece  USR yluego 1USR. Si está clear ([USR][USR] locks), primero aparece 1USR y luego USR.

Si querés probar, para entrar a las banderas del systema tenés que ir a MODE, FLAGS (FLAGS).

En realidad decir que la bandera -61 determina "el orden en el que cambia" es simplemente un modo didáctico (o introductorio) de decirlo. A decir verdad USR quiere decir que se está en el modo USER. 1US queire decir que una tecla (la próxima) se evaluará en modo USER y luego se abandonará el modo USER. Y cuando desaparece la etiqueta es que no se está más en modo USER.

Así que la bandera -61 determina de que modo se traba (lock) el modo USER. Si está visible la etiqueta USR se considera que está trabado. Si está la etiqueta 1US no está trabado, pues luego de presionar una tecla (una funcional, no los shifts) ya dejaremos de estar en modo USER, por lo tanto no está trabado.

Si "[USR][USR] locks", debemos presionar LSALPHALSALPHA para la etiqueta USR. (presionando solamente LSALPHA quedaríamos en 1US).

Si "[USR] locks User"  con presionar LSALPHA es suficiente para que aparezca la etiqueta USR. Si lo volvemos a hacer aparece 1US.

Y al final ¿qué es el modo USER? La siguiente bandera, la -62, determina si estamos o no en modo USER (la -61 tenía que ver con cómo entrabamos al modo USER). Al estar set, se muestra la etiqueta USR, al estar clear no se muestra. El modo USER quiere decir "Modo teclas de usuario" (User keys on).

Cuando uno presiona una tecla funcional de la calculadora, ésta comprueba si se está en modo USER o no:

  • Si está en modo USER, se fija si el usuario le dió alguna asignación a la tecla. Si es así la ejecuta. Sinó ejecuta la asignación predefinida.
  • Si no está en modo USER ejecuta la asignación predefinida de la tecla sin importar si el usuario le asignó otra función o no.

Instalando KeymanPlus.

El manual de referencia avanzado (en inglés) de la calculadora documenta algunas funciones para asignar teclas de usuario y mostrar las asignaciones hechas (ASN,DELKEYS, RCLKEYS, STOKEYS).

Pero en este post vamos a utilizar una librería que le da mucha mas potencia a las teclas de usuario: Keyman.

Instalá la librería Keyman (KeymanPlus) en tu calculadora (ver como). En el archivo zip también va a estar la documentación en castellano si le querés dar una mirada (KeymanE.htm).

Luego de haber reiniciado, presioná RS, LIB, Keyma para ingresar al menú Keyman. Vas a ver algo así:

Menu Keyman 1

Fijate que  el menú sige. Presioná NXT para ver el resto (y NXT otra vez para ver el primero):

Menu Keyman 2

El comando A?D.

En la librería Keyman un signo de interrogación (?) en el nombre del comando significa que si presionás ese comando ejecuta la función que está antes del signo, y si presionás y mantenés presionado el comando por un instante (unos 300 ms aproximadamente) ejecuta la función que está después del signo.

En el caso del comando A?D, A significa Assign (asignar) y D Delete (eliminar). Asigna o elimina la asignación de una tecla.

Hagamos una asignación simple. Presioná 1, ENTER. Y luego presioná el comando A?D. Se tiene que ver así:

AsnK

Se muestra el mensaje AsnK, que significa que lo que está en el nivel "1:" del stack se va a asignar a la tecla que presionés a continuación. Presioná la X por ejemplo. Ya está asignado el 1 a la X. Ahora volvé a presionar la X y fijate como la X hace aparecer un 1.

Probá alguna combinación, como ALPHA, X por ejemplo. La función es la normal. Esto es porque la asignación afectó solo a la X. Las otras variaciones como RS, X o LS, X no fueron afectadas. Ya vamos a ver las diferentes combinaciones. Pero primero vemos como borrar una asignación.

Para borrar la asignación presioná A?D por unos instantes. Se va a ver algo así:

DelK

A continuación presioná la tecla cuya asignación querés borrar, en este caso la X. Listo. Todo ha vuelto a la normalidad.

Las combinaciones de teclas.

Cada tecla tiene su código, que está dado por su número de fila, su número de columna, un punto y un código de combinación, en ese orden.

La tecla HIST (sola, sin ningún shift ni alpha) por ejemplo tiene código 41.1, donde fila=4, columna=1 y combinación = 1.

Las combinaciones que puede tener una tecla son:

  • 1: La tecla sola.
  • 2: LS y luego la tecla. A esta combinación de presionar una tecla y luego la otra la simbolizaremos por la primera tecla, una coma, y luego la otra: LS, la tecla.
  • 21: Mantengo presionada LS y, sin soltarla, presiono la tecla. A esta combinación de presionar una tecla y sin soltarla presionar la siguiente la simbolizaremos por la primera tecla, un signo más, y luego la otra: LS + la tecla.
  • 3: RS, la tecla.
  • 31:  RS + la tecla.
  • 4: ALPHA, la tecla.
  • 41: ALPHA + la tecla.
  • 5ALPHALS + la tecla. O sea, presionás y soltas ALPHA, luego presionas LS, y sin soltarla presionás la tecla.
  • 51: ALPHA, LS + la tecla.
  • 6ALPHA, RS, la tecla.
  • 61: ALPHARS + la tecla.

Entonces, por ejemplo, la combinación ALPHA, RS+HIST sería: 41.61. Y la combinación LS + P sería: 44.21.

Cuando uno asigna una tecla de usuario mediante A?D, la asignación se realiza solamente a la combinación que uno utilizó cuando A?D te pidió la tecla (diciendo: AsnK).

Si en vez de X, hubieras presionadoALPHARSX, la asignación solamente se habría realizado para 63.61. Por lo tanto solo esa combinación escribiría el 1 que le asignamos. Cualquier otra combinación funcionaría de la forma predeterminada (la "normal").

Tené en cuenta que si asignás algo a una combinación de teclas, a la hora de borrar esa asignación (presionando A?D por unos instantes), tenés que darle la combinación correcta que querés borrar. ¿Se entiende? A?D va a borrar solamente esa combinación (la que le des), las otras no se tocarán.

Los comandos RclK y K&SA.

El comando RclK espera a que presiones una tecla, o cualquier variante de ella (combinación), y te devuelve la asignación de usuario que tiene esa combinación si es que tiene alguna. Sino simplemente dice XX.XX not asnd, siendo XX.XX la combinación que hayas presionado.

El comando K&SA también espera a que presiones alguna combinación. Pero en vez de darte la asignación de usuario que tiene esa combinación, te da, en el nivel "2:" (o "3:") del stack el código XX.XX de la combinación que presionaste y en el  nivel "1:" la función del sistema que se ejecuta predeterminadamente (la "normal") para esa combinación. También puede mostrar otras cosas. Fijate en la documentación de Keyman que otras cosas muestra a veces.

Lo que más nos interesa de K&SA es que devuelve la combinación que presionaste. Esto ayuda cuando uno no se acuerda de memoria el código para una combinación. De paso, el código se llama rc.p: r=row(fila), c=column(columna), p=plane(plano). El resto que devuelve lo podemos borrar nomás y la utilizamos para ver el código.

Asignar programas.

Uno puede asignar cualquier cosa que esté en el stack a una combinación rc.p.

Por ejemplo. En electrónica es muy común tener que realizar el cálculo del valor final de una combinación de resistores en paralelo. La fórmula del valor de resistencia equivalente, teniendo resistores R1, R2, R3... Rn en paralelo, es 1/(1/R1+1/R2+1/R3+...+1/Rn).

El siguiente programita hace ese cálculo:

paralelo

Lo puedo asignar, por ejemplo, a la combinación RS + P (44.31), que me recuerda a Paralelo y no interfiere con la llamada a CAT, ya que a CAT puedo acceder mediante RSP(44.3).

Entonces ahora puedo poner los valores de los resistores (8, 5 y 6) en el stack seguidos por el número de resistores (3):

resistores

Y luego, presionando RSP ya los tengo metidos en la fórmula:

formula

Doble clic y clic largo.

¿Qué pasaría si a una rp.p le asignara un programa que quedara a la espera a ver si la vuelvo presionar luego de algunas décimas de segundo (doble clic), y en tal caso hiciera una cosa, y en caso de que pasaran las décimas de segundo y no la volviera a presionar hiciera otra? Pues eso hace el comando IFD (if double clic).

También podría hacer otro programa que esperara a ver si sigo presionando la tecla por algunas décimas de segundo, y si es así hiciera una cosa, y sino otra (clic largo). El comando IFL (if long clic) lo hace.

Poné en el stack una cadena que diga "DOBLE" y otra "NORMAL" (abrí comillas con RS, COMILLAS y escribí la cadena presionando ALPHA para poder ingresar las letras) . Así:

doble

Luego presioná IFD. Queda así si no tenés instalado extable2:

external

Y así si tenés extable2 y la flag -85 set:

conlib

Eso que hay en el stack es un programa en SysRPL que dice que si detecta doble clic, escribe la cadena "DOBLE", sino, escribe "NORMAL".

Asigná el programa a la tecla X por ejemplo. O sea, presioná A?D y luego X. Probá haciendo clic o doble clic en X. Para borrar la asignación presioná A?D por unos instantes y luego X.

Ese código se lo podés asignar a cualquier combinación. Lo mismo podés hacer con IFL para detectar clics largos.

Repetí los pasos de arriba pero no lo asignes a la tecla. Ahora escribí "LARGO":

LARGO

Presioná DERECHA para invertir las posiciones (para que "LARGO" quede arriba):

LARGOinv

Ahora presioná IFL. Asigná (con A?D) el resultado a algún rc.p que quieras, por ejemplo a RSCOMILLAS. Ahora probá haciendo RSCOMILLAS. Haciendo RS, doble clic COMILLAS. Y RS, manteniendo COMILLAS presionada.

Como verás, ya le asignamos tres códigos diferentes para una combinación. Una si la combinación recibe un click, otra si recibe doble clic y otra si recibe un clic largo. Así se puede hacer para cada combinación para cada tecla, por lo tanto las posibilidades son muchísimas.

Si querés asignar a una tecla un comportamiento con doble clic, y para el clic común querés el comportamiento "normal", tenés que poner arriba lo que querés que haga la tecla para doble clic, abajo el código rc.p de la tecla y presionar IFD. De este modo para doble clic se ejecuta lo de arriba y sino se ejecuta lo que haría normalmente el código rc.p que pusiste. Consultá el manual de Keyman para más información y ejemplos.

Otros comandos.

Los otros comandos están explicados en la documentación de Keyman (KeymanE.html) en el archivo zip.  Creo que con esta explicación ya se puede tener una base suficiente como para ir directamente a la documentación, que tiene varios ejemplos.

Documentar las asignaciones.

Cuando empieces a crearte muchos accesos directos en tu teclado te vas a empezar a olvidar de todo lo que tenés.

Una forma simple de documentar tus teclas es la siguiente.

  1. Elegí una combinación de documentación. Por ejemplo ALPHA + tecla.
  2. Cada vez que asignes algo a alguna tecla, asignale a ALPHA + esa tecla la explicación de lo que hace. O agregale a una explicación anterior si es que ya tenías una.

Ejemplo:

Le vamos a asignar a RSCOMILLAS un programa que ponga "HOLA" en el stack:

HOLA1

Asignalo (con A?D) a RSCOMILLAS.

Ahora hacé lo mismo con un programa que diga << "CHAU" >> pero asignalo a LSCOMILLAS (soltá el shift antes de presionar X).

Ahora creá un programa que diga: << "LS+: DICE CHAU(este símbolo rojoPUNTO)RS: DICE HOLA" >>

Se ve así si lo editás (EDIT):

dice

Asignalo a ALPHA+COMILLAS. Ahora cada vez que presiones ALPHA+COMILLAS vas a poder ver todas las asignaciones que tenés para la tecla COMILLAS. Obviamente tenés que ir actualizando la información cada vez que asignás algo nuevo.

En este caso LS+ significa LEFT SHIFT (el blanco) y sin soltar (por eso el +) la tecla en cuestión. Y RS significa RIGHT SHIFT (el rojo), pero soltándolo antes de presionar la tecla en cuestión.

Otra cosa que me sirve es asignar << 1200 MENU >> a la tecla K para clic largo. De esta forma haciendo un clic largo en K se abre el menú de la librería Keyman.

Archivado en: HP 50g No hay comentarios
27jul/090

Como instalar una librería en la HP 50g/49g+.

Es más simple de lo que parece.

Tomemos como ejemplo la librería Keyman (keymanplus para la 49g+/50g). Andá a esta página y descargá el zip.

Copía el archivo KeymanPlus en algún directorio de tu calculadora (HOME por ejemplo). Lo podés hacer conectando la calculadora mediante el cable USB con el programa Conn4x o copiando KeymanPlus en la tarjeta SD de tu calculadora. En el caso de la SD no necesitás copiarlo a un directorio de tu calculadora. Simplemente insertás la SD en la calculadora.

Copiar el archivo a un puerto.

Una vez que tengas el archivo KeymanPlus en la calculadora (o en la SD en la calculadora), presioná LS, FILES para abrir el explorador de archivos. Vas a ver algo así:

File Manager

Presioná OK. Vas a ver la librería. Seleccionala.

KeymanPlus

Ahora copiala (COPY) o movela (MOVE) a, por ejemplo, el puerto 2:FLASH:

PICK DESTINATION

Presioná OK. Ya está copiada.

Reiniciar la calculadora.

Para terminar la instalación debés reiniciar la calculadora. Presióna ON + C (sin soltar ON).

Ahora la librería ya está instalada.

Acceder (entrar) a la librería.

Se accede a la librería entrando a su menú. Presioná RS, LIB. Vas a ver los nombres de todas las librerías que tenés instaladas. Presioná en el que diga "Keyma" para ingresar al menú Keyman.

Otra manera de acceder al menú de una librería es escribiendo el número de librería y luego el comando MENU.

Si vas al explorador de archivos e ingresás al puerto 2, donde guardaste Keymanplus, vas a ver que tiene el número 1200 (L1200 dice).

Por lo tanto podés escribir 1200 MENU como se muestra a continuación:

1200MENU

Al darle ENTER vas a ver el menú de esa librería.

Archivado en: HP 50g No hay comentarios
29jun/090

FEVAL – HP 50g/49g+ EVAL a 203 MHz.

[English version]

Hice una librería, SOLAMENTE para la HP 49g+ o la 50g, que permite evaluar un objeto a 203 MHz. O sea, hace lo mismo que el comando EVAL de la calculadora pero a 203 MHz en vez de los 12 MHz o 75 MHz a los que trabaja normalmente.

La librería está basada en las herramientas ClockSpeed Adjustment Tools de Alistair Borowski.

Como dice Al, parece que no daña la calculadora. Pero usalo bajo tu propio riesgo.

Aclaro que el procesador de la calculadora está fabricado para funcionar a 203 MHz. HP lo "underclockeó" a un máximo de 75 MHz (o 12 MHz cuando inactiva). Pero aunque el procesador está diseñado para esa velocidad, tal vez los circuitos no.

De todas formas aquí está la librería para los que, como yo, quieren usarla para algunos cálculos largos:

FEVAL.rar

Ejemplo:

<< '500!' FEVAL >>

Como instalar la librería.

Extraer el contenido de FEVAL.rar y copiar el archivo LIBFEVAL.hp (Ctrl+C):

Copiar LIBFEVAL.hp

Pegarlo en algún directorio de la calculadora, por ejemplo el HOME.

Pegar en HOME

Ir a HOME en la calculadora (o donde lo hayas copiado):

Ir a HOME

Seleccionar LIBFEVAL y copiarla (COPY):

Copiar LIBFEVAL

Pegar en el puerto 2: FLASH o también puede ser en el "0: IRAM" o el "1: ERAM":

Pegar en un puerto.

Reiniciar la calculadora presionando ON + C.

Poner en el stack algún objeto para evaluar y presionar Shift Derecho, LIB:

Menú LIB

Presionar FEVAL para entrar al menú de la librería y FEVAL otra vez para ejecutar el comando:

FEVAL

También se podría haber escrito la palabra FEVAL simplemente y el comando se ejecutaría igual. El comando FEVAL ya funciona como cualquier otro comando de la calculadora. Inclusive aparece en el catálogo (Shift derecho, CAT):

Catálogo.

Inclusive se puede presionar el HELP desde el catálogo para ver la descripción:

HELP

Asignar a la tecla EVAL (para doble clic).

Instalá el archivo Keymanplus de la librería Keyman de la misma forma que instalaste LIBFEVAL (acordate de reiniciar la calcu al finalizar).

Andá al menú LIB (Shift derecho, LIB). Poné en el stack lo que se muestra en la imágen:

MENU Keyman

Presioná IFD y luego ->TO? (una sola vez):

IFD y ->TO?

Ahora presioná A?D y luego la tecla EVAL.

Ya está. Cada vez que hagas doble clic en la tecla EVAL, en vez de ejecutarse EVAL se ejecutará FEVAL.

Lo podés comprobar:

  • Poné '500!' en el stack.
  • Presioná ENTER para duplicarlo.
  • Presioná la tecla EVAL y fijate cuanto tarda.
  • Borrá el resultado (no el '500!').
  • Doble clic en la tecla EVAL para volver a evaluarlo pero ahora con FEVAL.

Más rápido ¿no?

29jun/090

FEVAL – HP 50g/49g+ EVAL at 203 MHz.

[Spanish version]

I've just made a library, for HP 49g+ or 50g ONLY, that allows you tu evaluate an object on the stack at 203 MHz. It does the same than the EVAL built-in command but at 203 MHz instead of 12 MHz or 75 MHz normal speeds.

The library is based on Alistair Borowski's ClockSpeed Adjustment Tools.

As Al says, it seems not to damage the calculator. But use it at your own risk.

The real speed of the calculator's processor is 203 MHz, but HP underclocked it to 75 MHz or 12 MHz (when idle). But the calculator is not designed for that speed so it could get damaged.

Get it:

This library, for HP 49g+ or 50g ONLY, allows you tu evaluate an object on the stack at 203 MHz. It does the same than the EVAL built-in command but at 203 MHz instead of 12 MHz or 75 MHz normal speeds.
The library is based on Alistair Borowski's ClockSpeed Adjustment Tools (http://www.hpcalc.org/details.php?id=6081).
As Al says, it seems not to damage the calculator. But use it at your own risk.
The real speed of the calculator's processor is 203 MHz, but HP underclocked it to 75 MHz or 12 MHz (when idle). But the calculator is not designed for that speed so it could get damaged.
Example of use:
<< '500!' FEVAL >>

FEVAL.rar

Example of use:

<< '500!' FEVAL >>

How to install it.

Extract the content of FEVAL.rar and copy the file LIBFEVAL.hp (Ctrl+C):

Copiar LIBFEVAL.hp

Paste it on the HOME folder of your calculator.

Pegar en HOME

Go to HOME folder on your calc:

Ir a HOME

Select LIBFEVAL and COPY it:

Copiar LIBFEVAL

Paste it on port 2: FLASH (or port 0 or 1, it doesn't matter):

Pegar en un puerto.

Warm start your calculator pressing ON+F3.

Put something on the stack to evaluate and press right shift / LIB:

Menú LIB

Press FEVAL to enter the library menu. Press FEVAL again to execute the command:

FEVAL

You could have just written FEVAL and the command would execute as any built-in command. In fact, you can find it on the catalog now (right clic / CAT):

Catálogo.

You can see the help for it too. Press HELP being FEVAL selected on the catalog:

HELP

Assign it to EVAL key (if double-clicked).

Install Keymanplus file (library) from Keyman library the same way you installed LIBFEVAL.

Go to LIB menu (righ shift / LIB). Put on the stack what you see in the image:

MENU Keyman

Press IFD and then ->TO? (when you press ->TO? you won't note any change):

IFD y ->TO?

Now press A?D and then the EVAL key.

Done. Now every time you double clic the EVAL key, FEVAL will be executed instead of EVAL.

You can test it:

  • Put '500!' on the stack.
  • Press ENTER to duplicate it.
  • Press EVAL key and see how much it takes to evaluate.
  • Erase the result (not the '500!').
  • Double clic on the EVAL key and see how much it takes to evaluate.

Faster, hum?