Headman

Una útil herramienta para manejar el header de la HP49g+

Esta biblioteca de dos páginas hace que sea fácil usar el nuevo header de la HP49g+ e integrarlo en el resto de la pantalla en varios ambientes. Todos los comandos están descritos a continuación, con ejemplos si es necesario. Puede elegir entre Headman7 y Headman8. Sólo hay una diferencia: En este último, los comandos FLASH y HDxy (presentes también en Msgman) fueron reemplazados por Edocu e Ebook, haciéndolos comandos programables, toman su argumento (una cadena de texto -string-) de la pila. Guarde la biblioteca en cualquier puerto e instálela con un reinicio en caliente como lo usual con un reinicio en caliente. Los comandos de Headman respetan sus flags y la pila. Probado con la ROM 1.23. Sólo para la HP49g+ en modo RPN.

Versión 8.2004: Llamada Headman8. La versión 7.2004 permanece en el .zip bajo el nombre de Headman7.

Versión 7.2004: READ completamente reprogramado, más pequeño y rápido.

Versión 6.2004: El comando READ abre un explorador de la SD/MMC que permite elegir el texto a leer.

Versión 5.2004: HDF reemplazado por el comando más general Disp que mejora el DISP para la 49g+.

Versión 4.2004: muestra página actual/total mientras se lee Ebook.

Versión 3.2004: Ebook y su descripción mejorados. Bug en NoHD arreglado.

Versión 2.2004: Ebook da un error si el argumento es una cadena de texto o un objeto cuya representación como texto no contiene saltos de línea.

PRIMERA versión 1.2004 (hecha en diciembre del 2003).

 
ViewP
(Visor+)
Ejemplo de un objeto algebraico que ocupa toda la pantallaMire cualquier objeto usando la pantalla completa. La captura de pantalla muestra un algebraico como ejemplo (contenido en Headman.zip bajo el nombre de AlgExample). Las flechas mueven el objeto si éste es muy grande para ser visto en una sola pantalla. Shift derecho y  mueven el objeto al comienzo y al final respectivamente. Shift derecho y operan de manera similar si el objeto es más ancho que la pantalla. Si el argumento es una lista no vacía, las imágenes de sus elementos son colocadas una a continuación de otra de manera que se visualizan en distintas líneas sin delimitadores de lista. Si desea ver una lista sin esta característica, primero aplique STR. Para objetos grandes, ViewP es mucho más útil que el VIEW estándar. Para salir de ViewP, presione CANCEL. Característica extra: La tecla NXT cambia entre la fuente actual y la minifuente sin salir de ViewP. Un objeto algebraico puede ser visualizado de 4 diferentes maneras.
NoHD
(Sin header)
Los últimos 10 mensaje de la biblioteca 1Usa la pantalla completa para mostrar la pila en cualquier tipo de letra incluida la minifuente. En el último caso o con la fuente 6, NoHD muestra 12 niveles. La captura de pantalla muestra los últimos 10 mensajes de la biblioteca 1 con fuente 7, de manera que 10 niveles son mostrados. NoHD siempre muestra al nivel uno como una sola línea, independientemente del estado de la flag -52 encargada de establecer este parámetro. Para volver al estado original y respetar esta flag, simplemente presione CANCEL.
HD
(Obtener Header)
Devuelve el header actual como una imagen (grob) de 131x16.
HD
(Establecer Header)
Toma un grob de 131x16 del nivel 1 de la pila, lo establece como el header actual y congela la pantalla. Los comandos de Headman están protegidos contra errores: si el grob es más grande que el header, sólo una parte del primero es usada; si es muy pequeño, sólo una parte del header es tomada en cuenta.
LCD2
(Obtener Pantalla)
Devuelve la pantalla entera de la calculadora. No sólo la parte inferior como lo hace LCD, sino todos los 131x80 píxeles.
LCD2
(Establecer Pantalla)
Toma un grob de 131x80 del nivel 1 de la pila, lo establece como la pantalla actual y congela la pantalla. Actúa de manera similar a HD si el grob tiene una altura <16 píxeles.
Ejemplo: « "" 1  GROB LCD2  »  borra la pantalla temporalmente. Esto podría ser escrito más fácilmente como « ""  ViewP  »
READ
(Lector de
documentos)
Abre un explorador de la tarjeta para seleccionar el texto a leer, como muestra la primera captura de pantalla. Los comandos en mayúscula son los mismos que los del Filer, ya conocidos. Asimismo, hay opciones extras en otras teclas: ingresa en el directorio elegido. sube un nivel o al árbol de puertos/directorios. NXT sólo cambia la apariencia del explorador, dado que sólo hay una página. T (COS) organiza las variables por tipo. Para otras teclas, consulte la documentación del Filer.
Explorador para lectura con Ebook/EdocuLas opciones más interesantes son Ebook y Edocu para leer textos. Ambos trabajan con cadenas de texto (strings) que pueden estas compresos con BZ. La mayoría de los textos largos son creados en la computadora y guardados directamente en la tarjeta, la manera de comprimirlos en la PC o en la 49g+ y guardarlos en la raíz o en un directorio de la tarjeta está descrito en Docreader.htm. También es posible leer documentos guardados en Home o en los puertos 0-2 navegando hasta allá.

Ebook está diseñado para leer textos largos, inserta saltos de línea donde sea necesario para adaptarlo a la pantalla como un lector de HTML. Edocu respeta el formato original (para ser precisos, inserta saltos de línea cada 80 caracteres), diseñado para textos con tablas, fórmulas u otros objetos que no quepan en una sola pantalla. Ambos interpretan a la primera línea como el texto y muestran el resto en minifont.

Primero se abre un selector de página como el de la captura de pantalla de la izquierda. Se puede seleccionar cualquier página a leer mediante la presión de CHOOSE o la tecla +/-. También es posible usar las teclas numéricas, por ejemplo para elegir la página 51, presione la tecla 5 tres veces.

Mientras lee, puede cambiar a la página siguiente o anterior con y , respectivamente y regresar al selector de página con (backspace), mientras que P (SYMB) muestra la página actual/total. Shift derecho / establecen la última / primera página respectivamente. NXT actúa como una lupa: cambia la fuente usada para mostrar la página actual.

En Edocu también están activas las teclas , y sus respectivos shift derecho, que sirven para desplazar el texto horizontalmente como en ViewP, esto se da cuando el texto tiene más de 32 caracteres. Mientras se lee, CANCEL sale al explorador (del cual se puede salir con otro CANCEL).

El archivo zip incluye un ejemplo llamado Headman.exp, simplemente ejecútelo, éste crea un directorio DOCS (si todavía no existe) en la tarjeta con el contenido de este documento bajo el nombre de Headman.txt. El ejemplo está diseñado para ser leído con Ebook pero puede leer con Edocu para probarlo. Las siguientes imágenes muestran el selctor de páginas (a la izquierda) y la última página de Headman.txt (a la derecha).
Selector de páginas Última página de Headman.txt

Cuando se lee un texto grande (que es el uso común de Ebook), puede resultar útil apagar la calculadora para continuar luego, esto se puede realizar de la manera común. Es posible agregar texto estilizado usando el submenú Style del menú EDIT.

Ebook/Edocu podrían dar un error de "Memoria Insuficiente" si el texto dado como argumento es demasiado grande, si esto sucede intente de nuevo luego de desactivar LastStack y LastArg de MODES/MISC.

FLASH Toma cualquier objeto como argumento, lo convierte a texto (si es que no lo era originalmete) y lo muestra en el header durante aproximadamente 1.5_s.
Disp
(DISP mejorado)
Muestra un objeto (en el nivel 2) con la fuente actual en la línea n (n dado en el nivel 1), n=1 ó n=2 muestra el objeto en el header, n=3 en la primera línea bajo el header (el equivalente a 1 DISP), etc. Si el objetoes una cadena de texto de 2 líneas, la línea siguiente también es usada. El máximo valor para 'n' usando FONT7 es n=10 que presenta el objeto en el nivel 1. Disp debe ser usado junto con FREEZE o WAIT. Característica especial: Si n=-1, Disp muestra el objeto en el área del menú. Ejemplo: « -56 DUP IF FS? THEN CF "BEEP" ELSE SF "SILENCIO" END -1 Disp 1 WAIT » cambia el estado de la flag BEEP y muestra el nuevo estado en el área de menú. Si -1 es reemplazado por 1, BEEP o SILENCIO se muestra en el header. Este mismo ejemplo puede ser escrito como « -56 DUP IF FS? THEN CF "BEEP" ELSE "SILENCIO" END FLASH »
HDxy (Header
display at (X,Y)
Muestra un objeto en el header en las coordenadas (X,Y) usando minifuente, luego congela la pantalla. Un ejemplo se da en la cuenta regresiva del siguiente comando. Argumentos: Nivel 3: Cualquier objeto, Nivel 2: entero/real X, Nivel 1: entero/real Y. Para poder visualizar resultados, X debe ser menor de 131 y Y<16.
Ejemplo:
Crearemos un seleccionador de idioma como el de OT49 que realice un ciclo entre los 3 idiomas posibles:

« "español" "français" "english"  LANGUAGE  1. + 3. MOD DUP LANGUAGE  1. +  ROLL  95. 1. HDxy DROP2 » 

CDown
(Cuenta regresiva)
Hace una "recolección de basura" mientras genera una cuenta regresiva desde 9 que apaga la calculadora al terminar, la cuenta es detenida presionando cualquier tecla.
Recomendamos guardar CDown en STARTOFF, una variable reservada que se ejecuta cada vez que la calculadora se apaga por sí sola luego de 5 minutos o luego del tiempo establecido en la variable reservada TOFF. Un buen tiempo es 40 segundos, lo que significa guardar # 50000h en TOFF. Una de las principales utilidades de CDown es la de evitar "recolecciones de basura" espontáneas en diversas aplicaciones. Atención: La cuenta regresiva no se activa en modo de edición porque generalmente se necesita más tiempo sin tocar el teclado en este modo.
StErr
(Start Error)
Si usted guarda StErr en la variable reservada STARTERR, obtendrá otra forma de mostrar los errores en cualquier momento que éstos se produzcan. Fuera, StErr necesita un argumento: una cadena de texto es mostrada, un número (entero, real o binario) hace que su mensaje correspondiente se muestre. Siempre el mensaje va en el header y acompañado de un icono de advertencia.

Créditos: Headman fue totalmente programado en la HP49g+ con herramientas de Emacs, Nosy y OT49. Gracias a Jurjen Bos, Carsten Dominik, Peter Geelhoed y Eduardo Kalinowski por sus herramientas y a Mika Heiskanen por BZ.


Jorge Cevallos M. jorgecevallos@hotmail.com
Wolfgang Rautenberg - raut@math.fu-berlin.de