Anterior Siguiente Indice

9. Apendice B: Información especifica de la GX

9.1 Que características nuevas hay en la HP48 G/GX?

Texto original de Joe Horn

PROCESAMIENTO AUTOMÁTICA DE LISTAS

Casi todos los comandos que no aceptaban lista(s) como argumento, ahora lo hacen. Aquí hay unos cuantos ejemplos:


{ 1 2 3 } SF pone banderas 1, 2, y 3

{ 1 2 3 } SQ  -->  { 1 4 9 }

{ 2 4 } 10 /  -->  { .2 .4 }

10 { 2 4 } /  -->  { 5 2.5 }

{ 10 12 } { 2 4 } /  -->  { 5 3 }

{ .1 .2 .5 } ->Q  -->  { '1/10' '1/5' '1/2' }

{ freq freq ...} { dur dur ... } BEEP puede tocar una canción sin interrupciones audibles entre tonos.
Ya que + siempre ha sido usado para unir listas, la nueva función ADD fue creada para sumar los elementos de dos listas, como sigue:

{ 1 2 3 } { 4 5 6 } ADD devuelve { 5 7 9 }, así como

{ 1 2 3 } { 4 5 6 }  +  devuelve { 1 2 3 4 5 6 } como lo hacia antes.
Los únicos comandos que no tienen procesamiento automático de listas son:

Algunas veces los resultados no son obvios, por ejemplo:


5  { A B C }  STO           -->  A=5, B=5, C=5

{ 5 6 7 }  'A'  STO         -->  A={ 5 6 7 }  (igual que en la SX)

{ 5 6 7 }  { A B C }  STO   -->  A=5, B=6, C=7
El procesamiento de listas solo es recursivo con ->Q y ->Qpi.

PUERTOS Y MEMORIA

La HP48 G, como la 48 S, solo tienen 32Kb de RAM. La GX, al contrario de la SX, tiene 128 Kb de RAM incorporados. La ranura de inserción 1 puede contener otros 128 Kb (máximo), pero la ranura de inserción 2 puede contener hasta 4 megabytes de RAM.

Solo la puerta 1 puede ser fusionada con la RAM de la GX. La ranura de inserción 2 que fue ideada para tarjetas RAM de gran-capacidad, esta permanentemente "liberada", y es dividida automáticamente en "puertos" de 128Kb, convirtiéndose cada una en Puerto 2, Puerto 3, Puerto 4, etc. Hasta 4 Megabytes pueden ser insertados en la ranura 2, que se convertirían en el Puerto 2 hasta el Puerto 33. (Aunque los comandos FREE y MERGE han sido mantenidos por compatibilidad con la HP48 SX, los usuarios de la GX preferirán los nuevos comandos FREE1 y MERGE1). Por eso la cantidad máxima de memoria principal fusionada es 256 Kb (al contrario de la SX que permitía hasta 288Kb) después de MERGE1; La cantidad máxima de memoria independiente libre es 4224Kb después de FREE1.

VARIABLES LOCALES

Los nombres de variables con un <- antepuesto (carácter de flecha izquierda) son compilados como nombres de variables locales (temporales), aun si no están implícitamente después de FOR o ->. Esto permite a los programas compartir valores a través de variables locales, que es mas rápido que compartir valores a través de variables globales, y son borradas automáticamente.

VELOCIDAD

La velocidad del reloj del CPU es dos veces la de la S/SX, pero el aumento del rendimiento es estimado en solo un 40%, principalmente por el hecho de que toda la RAM y ROM ahora es accesada por switcheo de bancos (en la S/SX solo una porción de 32 Kb de ROM requería switcheo de bancos), y todavía tiene el mismo cuello de botella, un bus de 4-bit.

COMANDOS MEJORADOS:

COMANDOS DE LA HP SOLVE EQUATION LIBRARY CARD:

Nota: La Tabla Periódica y el Juego Tetris no están incluidos en la HP48 G/GX, pero la tarjeta EQ puede ser usada si esas aplicaciones son requeridas. Tetris no fue incluido, porque no se llego a un acuerdo acerca de los derechos. La Tabla Periódica esta disponible separadamente como freeware (sin costo) en HPCVBBS.

NUEVOS COMANDOS DE MATRICES:

COMANDOS GRÁFICOS Y DE PLOTEO:

COMANDOS DE INTERFACE DEL USUARIO:

COMANDOS DE PROCESAMIENTO DE LISTAS:

COMANDOS DEL SISTEMA:

COMANDOS MATEMÁTICOS:

NUMERO DE MENÚS y CÓDIGO DE TECLAS

Muchos números de menú han cambiado, por eso el software que usan # MENÚ o # TMENU no funcionaran como en la HP48 S/SX. (Específicamente, solo los números de menú 0-3, 28, 30, y 42-59 son los mismos). Asimismo, casi todos los códigos de teclas con shift corresponden a nuevos comandos y menús, lo cual los programadores deben tener en cuenta; por ejemplo, la tecla "RAD" en la S/SX tiene el código de tecla 82.2, pero ahora es la 21.2 en la G/GX. La tecla shift-izquierda, que era naranja en la S/SX, ahora es púrpura, y la tecla shift-derecha que era azul en la S/SX ahora es verde en la G/GX. Además los menús de teclas pueden ser activados por ambas teclas shift; shift-izquierdo da los softkey menús como en la S/SX, pero shift-derecho da los nuevos menús amigables al usuario a pantalla completa. Las teclas sin shift quedan igual que en la S/SX, exeptuando un cambio cosmético de colores para hacerle contraste al verde obscuro de la caja de la calculadora.

MANUALES

La G/GX viene con dos manuales, una "Guía de Iniciación Rápida" para principiantes, y un manual del usuario mas delgado y barato llamado "Guía del Usuario" que tiene solo 21 paginas sobre programación, desde que HP supuso que la inmensa mayoría de los poseedores de 48s nunca la programan. Los usuarios avanzados pueden comprar opcionalmente el "Advanced Users Reference Manual" (similar al "Programmer's Reference Manual" de la S/SX) que cubre programación y los comandos que no son mencionados en la Guía del Usuario. No hay un "Quick Reference Guide" como la que venia con la S/SX, aunque la funda aun tiene un bolsillo para una.

Jim Donnelly ha lanzado una bonita guía de bolsillo, pero es muy ancha para caber en el bolsillo de la calculadora. La Guía del Usuario no tiene lomo espiral, pero esta hecha para abrirla completamente y que dure mucho tiempo, ya que no solo esta pegado sino también esta cosido como libros de verdad, y esta impreso en papel de calidad.

Otra posibilidad es la "The HP 48G/GX Pocket Guide" por Chris Coffin y Thomas Dick (Publicaciones Grapevine) en EduCALC. Tiene 80 paginas y contiene una referencia completa de los comandos (con diagrama de entrada/salida de pila), descripción del teclado alfa, descripción de banderas, así como ejemplos de como usar varias características de la calculadora. Esta guía esta diseñada para caber cómodamente en la funda de la HP.

BANDERAS

Algunas banderas previamente "no usadas" ahora se usan. Ellas son:


-14 Arriba = modo de pago en final-de-periodo (para cálculos TVM)

    Abajo  = modo de pago en inicio-de-periodo



-27 Abajo  = visualiza números complejos simbólicos en forma de coordenadas

             e.g. '(X,Y)'

    Arriba = visualiza números complejos simbólicos usando 'i'

             e.g. 'X+Y*i'

    

-28 Abajo = plotea múltiples ecuaciones como la S/SX lo hace (serialmente)

    Arriba   = plotea múltiples ecuaciones simultáneamente

    

-29 Abajo = incluir ejes en el ploteo (como lo hace la S/SX)

    Arriba   = omite los ejes en los ploteos estadísticos y de 2D    

-30 ya no es usada (nunca hizo algo útil de todas maneras)

    

-54 Abajo = elementos pequeños en matrices son redondeados a cero

    Arriba   = deja los elementos de las matrices tranquilos
Por defecto todas estas banderas están abajo (como en la S/SX).

VISUALIZADOR DE BANDERAS

El visualizador de banderas muestra el numero de bandera, si esta abajo o no, te deja cambiar su estado, y te muestra en ingles que significa el estado actual de cada bandera.

VISUALIZADOR DE CARACTERES

Mientras programas, si quieres tipear algún carácter, presiona CHARS y se muestra una pantalla de caracteres ASCII que puedes recorrer con las teclas de flechas, y no solo muestra el carácter, también el código ASCII (valor Numérico) y hasta la combinación de teclas (si hay alguna) de cada carácter. Si presionas ECHO, será "tipeado" en tu programa. Ya no hay necesidad de una tabla de teclado alfa.

MANUTENCIÓN DE DIRECTORIO

Presiona shift-derecho para lanzar un visualizador de variables, que es un completo administrador de memoria. Puedes seleccionar múltiples objetos y copiarlos, moverlos o borrarlos, todo con un solo toque de tecla; incluso hay un Selecciona Todo y un Deselecciona todo, como un computador de verdad. Sin embargo es lento, y ha esta obsoleta gracias a la librería PCT, que es muy rápida.

UNIDAD DE PODER FRACCIÓN

La S/SX solo podía manejar poderes enteros correctamente, pero la G/GX puede usar cualquier numero real como unidad de poder.

PLACA DE NOMBRE

La caja tiene un espacio rectangular en la parte posterior como la HP 95LX y 100LX, donde puedes pegar una placa metálica adhesiva (viene incluida) con tu nombre grabada en ella. ($5 si la ordenas con tu compra).

NOMBRES XLIB

Todos los comandos nuevos en la GX son nombres XLIB, y por eso ocupan 5.5 bytes en los programas. Los comandos comunes en la SX y GX toman 2.5 bytes cada uno, como lo hacían en la SX.

INPUT FORMS y CHOOSE BOXES

Muchas operaciones tienen dos tipos de menú: el antiguo estilo de la SX, y un nuevo "menú desplegable" y "input forms" que se ven como ventanas de dialogo de los computadoras. Especialmente útil para principiantes de la HP48.

PRECISIÓN MEJORADA

La precisión interna de algunas de las rutinas de matrices han sido mejoradas; INV da mejores respuestas en matrices cuadradas de las que daba la SX. HP no ha informado sobre que rutinas ha mejorado, como y cuanto.

PANTALLA MEJORADA

La LCD introducida con la revisión M en la G/GX es mas fácil de leer ya que tiene mayor contraste entre los pixeles prendidos/apagados. Sin embargo tiene un tiempo de respuesta de ciclos mas lenta, haciéndola mas difícil de usar para juegos de video de movimiento rápido o cualquier otra animación rápida.

9.2 Ejemplos de INFORM, CHOOSE, y MSGBOX

Texto original de Jarno Peschier

Algunos ejemplos de INFORM, CHOOSE y MSGBOX en la HP48 GX. Solo transfiere el directorio completo a tu calculadora y prueba los programas, cámbialos, modifícalos y hace todo lo que se te ocurra con ellos.

SIMPLE:

Este programa demostrara una simple pantalla de ingreso INFORM con 3 campos (uno sin restricción de tipo, uno para numeros reales o complejos y uno para strings) con algún esquema adicional. MSGBOX y CHOOSE (con el tercer parámetro igual a 0) son usados para mostrar que los resultados del comando INFORM. La lista que devuelve el comando INFORM es dejada en la pila para que veas como se ve.

ANGLE:

Este programa demostrar el uso de CHOOSE. Te deja elegir entre los tres posibles ángulos (DEG, RAD, GRAD) y cuando eliges uno de ellos, el modo correspondiente es fijado evaluando un pequeño programa que ejecuta el comando adecuado.

ISOLATE:

Este programa demostrara el uso de INFORM en formas que son ocupadas por la misma calculadora. Es una interface muy simple que gira alrededor del comando ISOL (aislar una variable en un algebraico). Graba sus opciones en una variable llamada IPAR y la próxima vez que el programa es ejecutado estos serán los valores por defecto del comando INFROM, así que puedes aislar diferentes variables de la misma expresión algebraica que usaste anteriormente, sin volverla a tipear. MSGBOX es usado para mostrar los mensajes de error.

TYPELIST:

Este programa demostrara nuevamente es uso de CHOOSE. Extrae los nombres de todos los tipos internos de la HP48 GX del ROM y los muestra en una CHOOSE box (ordenadas alfabéticamente por nombre). Si eliges una de ellas, su numero de tipo (TYPE) es mostrado en un MSGBOX.

MATHQUIZ:

Este programa final demostrara el uso de INFORM con descripción de campo de variable y valores por defecto/reinicio. Te mostrara 8 campos que son simples preguntas matemáticas para que las resuelvas (suma y resta). Puedes ingresar todos los resultados y después ver si tus respuestas estaban correctas (en un MASGBOX). Debes llenar todos los campos. Pista: puedes hacer trampa reiniciando un campo (o todos los campos).


%%HP: T(3)A(D)F(.);

DIR

  SIMPLE

    \<<

      IF

"AN EXAMPLE OF INFORM"

{ { } { } { } {

"OBJECT:"

"ALL OBJECTS ARE ALLOWED HERE"

} { } { "NUM:"

"ENTER A (COMPLEX) NUMBER"

0 1 } { "NAME:"

"ENTER YOUR FULL NAME"

2 } { } { } } { 3 1

} {

        \<< 440 1

BEEP

        \>> (0,1)

"JARNO PESCHIER" }

{ NOVAL 0 "N.N." }

INFORM

      THEN DUP

"YOU ENTERED:" SWAP

0 CHOOSE DROP

"The list that INFORM produced is still on the stack."

      ELSE

"You cancelled the INFORM."

      END MSGBOX

    \>>

  ANGLE

    \<<

      IF

"ANGLE MEASURE" { {

"Degrees" DEG } {

"Radians" RAD } {

"Grads" GRAD } } 1

CHOOSE

      THEN EVAL

      END

    \>>

  ISOLATE

    \<<

      IF

"A VERY SIMPLE VARIABLE ISOLATOR"

{ { } { "EXPR:"

"ENTER THE EXPRESSION"

9 } { "VARIABLE:"

"ENTER VARIABLE TO ISOLATE"

6 } } { } { }

        IF 'IPAR'

VTYPE 5 \=/

        THEN { }

        ELSE 'IPAR'

RCL

        END INFORM

      THEN DUP 'IPAR' STO

        IF DUP

NOVAL POS

        THEN DROP

"You must enter an expression and a variable!"

MSGBOX

        ELSE OBJ\->

DROP

          IFERR

ISOL

          THEN

DROP2 "Error: "

ERRM + MSGBOX

          END

        END

      END

    \>>

  TYPELIST

    \<<

      IF

"ALL HP48 TYPES (IN ROM)"

0 27

        FOR msg

          IFERR msg

263 + DOERR

          THEN ERRM

          END msg 2

\->LIST

        NEXT 28

\->LIST SORT 1 CHOOSE

      THEN

"That one has type number "

SWAP + "." + MSGBOX

      END

    \>>

  MATHQUIZ

    \<<

      IF

"A SIMPLE MATH QUIZ"

1 8

        FOR i "'"

RAND 100 * IP +

          IF RAND

0.75 <

          THEN "+"

          ELSE "-"

          END +

RAND 100 * IP + "'"

+ "ENTER RESULT #"

i + 0 3 \->LIST

        NEXT 8

\->LIST DUP

        \<< \-> X

          \<< X HEAD

2 OVER SIZE 1 - SUB

"=" + X 1 ROT PUT

          \>>

        \>> DOLIST

SWAP

        \<< \-> X

          \<< X HEAD

OBJ\-> EVAL

          \>>

        \>> DOLIST 3

ROLLD { 2 5 } 4

PICK { } INFORM

      THEN

        IF DUP

NOVAL POS

        THEN DROP2

"You didn't fill all the blanks."

        ELSE

          IF SAME

          THEN

"All answers were correct!"

          ELSE

"Not all answers were correct."

          END

        END MSGBOX

      ELSE DROP

      END

    \>>

END

9.3 Algunos LIBEVALs útiles

Texto original de Joe Horn

Nota importante: haz una copia de seguridad de tu memoria antes de usar lo próximo! LIBEVAL puede borrar la memoria si es usado incorrectamente. Advertencia a los despistados: LIBEVAL, NO SYSEVAL!!! Si no sabes lo que es un bint, no uses los que mencionan bints.

Ejemplo de uso: "OUT OF RANGE Try Again" #B0091h LIBEVAL. Pruébalo!


-----------------------------------------------------+----------

Función                                              | LIBEVAL

-----------------------------------------------------+----------

Muestra message box con grob                         | #B1000h

CMD  ventana de ultimo comando                       | #B2000h

Aplicación CHARS                                     | #B2001h

Forma de entrada de aplicación MODES                 | #B41C1h

Visualizador de banderas                             | #B41CFh

    (devuelve t/f a nivel 1, solo bótalo) 

Aplicación MEMORY (aka visualizador de variables)      | #B41D7h

Choose box de aplicación SOLVE                       | #B4000h

Forma de entrada solucionador de ecuaciones          | #B4001h

Forma de entrada solucionador de ec dif              | #B4017h

Forma de entrada solucionador de polinomios          | #B402Ch

Forma de entrada solucionador sis ec lineales        | #B4033h

Forma de entrada solucionador TVM                    | #B4038h

Forma de entrada de PLOT                             | #B4045h

Choose box de aplicación SYMBOLIC                    | #B4113h

Forma de entrada de integración                      | #B4114h

Forma de entrada diferenciación                      | #B4122h

Forma de entrada expansión polinomio de Taylor       | #B412Bh

Forma de entrada aislamiento de una variable         | #B412Dh

Forma de entrada solucionador cuadrático             | #B4130h

Forma de entrada manipulación de expresiones         | #B4131h

Choose box de aplicación TIME                        | #B4137h

Forma de entrada fijación de alarmas                 | #B4138h

Forma de entrada fijar hora y fecha                  | #B415Bh

Visualizador de alarmas (aka catalogo de alarmas)    | #B416Eh

Choose box aplicación STAT                           | #B4175h

Forma de entrada estadística de una variable         | #B4176h

Forma de entrada frecuencias                         | #B417Dh

Forma de entrada ajustar datos                       | #B417Fh

Forma de entrada sumario estadístico                 | #B418Fh

Choose box aplicación I/O                            | #B4192h

Forma de entrada mandar a HP48                       | #B4193h

Forma de entrada imprimir                            | #B4197h

Forma de entrada transferencia                       | #B41A8h

Traer desde HP48  (inmediatamente)                   | #B50FFh

llama el contenido de la variable reservada Mpar     | #E4012h

-----------------------------------------------------+----------


LIBEVAL : diagrama de pila / que es lo que hace

-------   -----------------------------------------------------------

#B0091h : $ --> hace un message box con un símbolo de alerta en el

#E0044h : $ --> muestra una línea de titulo, centro de borde superior

          (seguido de 1 FREEZE si quieres que se quede ahí después

           del termino del programa)

#B2000h : ejecuta el choose-box del ultimo comando

#B2001h : ejecuta la aplicación CHARS; devuelve nada si el usuario

          no presiona ECHO

#B2002h : ejecuta la aplicación CHARS; devuelve "" si el usuario no

          presiona ECHO

#B41CFh : ejecuta el visualizador de banderas; deja True o False en la pila

          así que pon des pues de este LIBEVAL un DROP.

#B50A3h : --> tiempo actual como hora, min, sec separadamente, además de un XLIB

          que representa AM/PM/24-hr (solo bórralo)

#B50A4h : hh.mmss --> hh mm ss xlib (el xlib representa modo AM,PM, o

          24-hr; solo bórralo)

#B50A6h : --> fecha actual como mes, día, año (siempre en esa orden,

          y año de dos dígitos)

#B50A7h : mm.ddyyyy (o dd.mmyyyy) --> mes, día, año

#B50A9h : #mes #año --> #dias_en_ese_mes (entrada y salida son bints;

          el año tiene dos dígitos, interpretados entre solo 1991 y 2090)

#B50AAh : #año --> %0.00año (entrada es un bint de dos dígitos interpretado entre

          1991 y 2090; salida es un numero real)

#B50ABh : #mes #dia #año --> #dia_de_la_semana (entrada y salida son bints;

          el año tiene dos dígitos interpretados ente 1991 y 2090;

          Domingo es #7; si estas en modo DMY, entonces el orden de ingreso

          es #dia #mes #año)

#B50B2h : --> { 1 2 3 ... 59 } (no muy rápido)

#B50B3h : --> { 1 2 3 ... 10 } (muy rápido)

#B50B4h : --> { 0 1 2 ... 23 } (muy rápido)

#B50B9h : --> { " 1 January" " 2 February" ... "12 December" }

#B50D5h : --> numero de alarmas actualmente fijadas (como bint)

#E3063h : hxs --> grob (este es un descompresor RLL de grob empaquetadas,

          usado por EQ LIB y MINEHUNT; por ejemplo, prueba esto:

          #E202Bh LIBEVAL 3 GET #E3063h LIBEVAL PICT STO PICTURE)

#E202Bh : el primero de los grob empaquetados de EQ LIB (ve arriba)

#E2069h : el último de los grob empaquetados de EQ LIB (ve arriba)

#E7039h : grob empaquetado de MINEHUNT (borde izquierdo de la pantalla)

#E703Ah : grob empaquetado de MINEHUNT (borde derecho de la pantalla)

#E801Eh : obj --> obj T/F (prueba si un objeto esta en la memoria temporal

          o no; devuelve True o False de System-RPL)


Anterior Siguiente Indice