Erwin.Ried.cl / Documentos / Calculadoras /
El caso de la calculadora forzadamente plurilingüe

HP no suministra una forma real de usar otros idiomas, exceptuando el inglés, en sus calculadoras gráficas. Una posibilidad es simplemente conformarse y la otra es retocar cosas a tan bajo nivel que no existan límites. ¿Adivinan cuál es mi elección? (26/11/2010 08:31 AM)


Es probable que estés leyendo mi sitio por tu interés por una calculadora de HP, en efecto, según las estadísticas los lectores se reparten entre los artículos de Windows y Calculadoras casi a la mitad de todas las visitas.

El idioma es siempre importante en el aprendizaje. Es posible que entiendas otro idioma, sin embargo, casi en la totalidad del tiempo aprenderás de forma más rápido relacionándote con tu lengua materna. Esto tiene una gran importancia sobre un aparato tan complejo técnicamente como lo es casi cualquier calculadora de HP.

Gracias a mi sitio, puedo darme cuenta que adicionalmente a la dificultad de usarla, los usuarios se encuentran con este problema del idioma.

Es casi seguro de que, de alguna forma, puedes entender las siguientes pantallas (tal vez no tan claramente lo de "operación holomórfica"):



Pero, ¿porqué no podemos verlas en español?


1. El comando LANGUAGE

De fábrica, parece que tenemos una solución. La instrucción LANGUAGE:



Luego de ejecutarla (aparte de averiguar de que 0 es para inglés, 1 es para francés, 2 para español y cualquier valor mayor a 2 equivale a inglés), es natural cuestionarse ¿Qué ha pasado?, ¿Por qué no cambió casi nada del idioma?

Este comando sólo permite establecer el idioma de ciertos mensajes de error, lo que lo hace relativamente inútil. En efecto también cambian botones del administrador de archivos y otras cosas sutiles, pero lo importante como la configuración, la ayuda de comandos sigue en inglés.

Otros fabricantes, en particular Texas Instruments, ofrece en sus calculadoras gráficas una localización completa, incluyendo comandos de programación (cosa que por cierto considero completamente engorroso).



Casio por su parte hace un bastante buen trabajo traduciendo sólo las interfaces y no los comandos (incluso Microsoft tiene la mala costumbre de traducir las teclas de acceso rápido).



2. Alterando cadenas

Luego de comprobar que el comando LANGUAGE es casi una burla al usuario, es válido proponerse la tarea de buscar una verdadera respuesta.

Las calculadoras de este artículo tienen el siguiente particular diseño (física y lógicamente):



El sistema operativo de nuestra calculadora, las funciones y todo está escrito para el procesador "virtual" Saturn. De esta forma los ingenieros de HP ahorraron años de trasladar código de las míticas calculadoras (el CPU Saturn ya ni siquiera se produce).

Podríamos pensar entonces que escribiendo el código para el CPU físico de 32 bits tendríamos más poder que sobre el emulado Saturn. Probablemente sea así, sin embargo es algo riesgoso y oscuro. Esto sería como alterar cadenas en los binarios donde un motor de base de datos guarda sus cosas, esperando cambiar algo en un sistema que utiliza esa base de datos. Es posible que funcione, pero corremos el gran riesgo de corromper todo.

Para comenzar a entender esta prueba de solución, hay que saber que SystemRPL tiene símbolos de apertura y cierre recíprocos con los << y >> de UserRPL que son :: ;. Este código se compila con el compilador integrado en la calculadora. (Instalar las librerías con 256 ATTACH 257 ATTACH y luego en APPS estará la opción "Development Lib")

Bueno, para explicar un poco los alcances de SystemRPL, puedo partir comentando que a diferencia de UserRPL no contiene comprobaciones de tipos y otras similares. Entonces por ejemplo si intentamos sumar con sólo un argumento en la pila, la calculadora se reiniciará y probablemente se perderán datos, en vez de mostrar un error.

Código:
AtUserStack
CK1NOLASTWD       ( Comprobar que hay un argumento )
DUPTYPECSTR?      ( ¿Es un string? )
NOTcasedrop
SETTYPEERR        ( Salir y mostrar error )


Esto y otros detalles lo hacen particularmente críptico.

La idea de este pequeño programa será cambiar una cadena de las existentes en la calculadora. En particular se cambiará el título de la pantalla de "CALCULATOR MODES". Luego de las librerías e inicializaciones, tenemos:

Código:
( Comprobar que existen más de 32,5 kb que se requerirán para este programa de ejemplo
)
xMEM ( Invocar una recolección de memoria )


Cabe destacar acá que cualquier comando que comienza con "x" como xMEM, hace referencia a un comando sin la primera letra en UserRPL. En este caso simplemente llamamos a MEM.

Código:
% 33280 ( 32,5 kB )
%<
IT SETMEMERR

( Primero hay que obtener los mensaje de la librería 7 )
( Lo siguiente es iterar en los mensajes de esta librería )
# 700              ( 700h )
BEGIN
      #1+          ( Incrementando el contador )
      DUP
      JstGETTHEMSG ( Obtener el mensaje )
      SWAPOVER     ( Colocarlo en el stack )
      NULL$?       ( Si no es nulo continuar )
UNTIL              


A continuación, debemos reemplazar la cadena que escribió el usuario antes de llamar al programa.

Código:
SWAPDROP
# 701
#-
( En el nivel 1 está el total de mensajes de esta librería )

DUP#2+
ROLL               ( Obtener la cadena de reemplazo )

( Reemplazar "CALCULATOR MODES" )
( Nota: "CALCULATOR MODES" es el 722h )
OVER
BINT31
#-
ROLLDROP ( Quitar "CALCULATOR MODES" )

OVER
BINT32
#-
UNROLL


Ahora debemos crear un arreglo con los elementos del stack. No hay un comando de SystemRPL para esto, así que debe ser generado manualmente:

Código:
{}N
( Preparando la máquina )
SaveSysFlags
BINT92 SetSysFlag
ROMPTR 100 20 ( ->S2 )
( Preparando la lista para transformarla a un arreglo )
CDR$
"ARRY\0A["
SWAP&$

DUPLEN$
#2-
1_#1-SUB
"]\0A@"
&$
( La cadena está casi lista ahora )
ROMPTR 100 1E ( ASM )
RestoreSysFlags

( Ya tenemos la lista de mensajes con el título de "CALCULATOR MODES" modificado )
( Y lo guardamos como ESP.ARY )
' ID ESP.ARY
?STO_HERE


Finalmente intercambiamos los mensajes:

Código:
SEVEN
TOSRRP
BINT7
ID ESP.ARY
SETMESG


Ahora el resultado, después de compilar este código es el siguiente:



Se aprecia casi de forma evidente que HP siempre tuvo en mente la "internacionalización" de sus mensajes. Internamente la estructura de tablas de mensajes permitiría esto. ¿Será que HP perdió su interés por estos aparatos dada la baja rentabilidad que obtenía de ellos? ¿Cómo es posible que pasen tantos años sin tocar nada interesante de sus calculadoras gráficas produciendo montones de calculadoras de negocios? ¿Cuál será el impacto de otros fabricantes que efectivamente tienen constantes actualizaciones como Casio y Texas Instruments en el campo de calculadoras gráficas?

El código fuente y el archivo compilado está disponible a continuación:
files/articles/hp50g_multilang_001/CHANGE.s (para Debug4x)
files/articles/hp50g_multilang_001/CHANGE.HP


3. Problemas y limitaciones

Hacer un paquete de traducción con el truco es factible. Los mensajes pueden grabarse en la memoria flash de los últimos modelos de calculadoras, la HP49g+ y la HP50g. Es un gran trabajo traducir todas las cadenas y mensajes, pero es posible.

Ahora una de las primeras limitaciones es que aunque el "truco" utilizado por este paquete de cambio de idioma funcionaría hasta en los míticos modelos, el no poseer de un lector de tarjetas SD ni de memoria flash dificultan de sobremanera la posibilidad de implementarlo.

Siguiendo con los problemas nos encontramos con un bug del comando STO.

Este bug produce una pérdida de los valores de ciertos punteros internos, que normalmente no es apreciable. Sin embargo para un caso tan particular como este, el cambio de valor de esos punteros en memoria produce un desagradable problema:



Finalmente, y no menos trascendente, encontramos un desorden en la implementación de ciertas cosas de la calculadora. Un ejemplo de este problema solucionado en aplicaciones de Windows nos da una clara visión de la importancia de un buen diseño previo para alivianar el trabajo de la localización.


4. Una verdadera solución

Hace varios meses, me puse en contacto con un alemán, llamado Andreas Möller. Esta persona construía hace muchos años (intentando hacer un poco de tiempo en su vida para su pasión por las calculadoras) un producto que se basa en los puntos anteriores, para lograr una localización casi perfecta de la calculadora, en este caso para el idioma alemán.

Junto a un grupo de latinoamericanos que contacté, ayudamos por un tiempo a localizar el producto:

Jhusel, Sebastian Magri, Negroman, Sofia filosofia.

El resultado es una calculadora casi perfectamente localizada en español, la diferencia salta a la vista:





La ayuda también está completamente localizada:



Todo esto y más está disponible en http://www.software49g.gmxhome.de

El paquete de idioma de Andreas Möller incluye varios otros lenguajes, alemán, italiano, francés.


5. Componentes base de la traducción

Hay ciertos requisitos de este paquete. Dentro de las cosas funcionales, es necesario tener la librería que contiene los mensajes, el motor de TreeBrowser (despliegue de árboles de cosas), las colecciones de datos en el idioma que usemos para el mismo TreeBrowser.

Son pocas cosas, las que usan un espacio pequeño de la memoria que dejan reservado.


6. Extras y adicionales

El paquete no sólo incluye la traducción. Expande y potencia las funciones básicas del aparato.

Entre estas novedades, algo que seguramente será amado por todos los usuarios es la existencia del TreeBrowser Builder. Este programa permite crear documentos como "árboles" que pueden contener imágenes, ecuaciones y todo bien ordenado:



Las librerías
Una librería es un paquete instalable para nuestra calculadora. Es posible convertir un simple programa en una librería con sencillos programas como Library Creation Wizard.

En la demostración se creó una librería instalable (más información sobre las librerías y programas), sin embargo es posible guardar el trabajo como un archivo simple o sólo la estructura editable de lo que creamos.


Este programa permite crear documentos como "árboles" que pueden contener imágenes, ecuaciones y todo bien ordenado. Este programa probablemente debería aparecer sobre mi artículo sobre documentos en la calculadora HP.

Además tenemos:

-Un reemplazo de la interfaz del resolvedor de ecuaciones (MES) el cual penosamente obliga al usuario a utilizar soft menús y RPN para funcionar (cosa que nunca noté porque es lo primero que ajusto), error muy frecuente en usuarios que usan la librería de ecuaciones original de la calculadora. Esta librería contiene más de 300 ecuaciones.

-Una biblioteca de matemáticas financieras. Esta librería contiene más de 140 ecuaciones.

7. Versión de prueba

El autor del paquete de traducción liberó una versión de prueba, la cual está disponible en el siguiente enlace: http://www.software49g.bplaced.net/TryBeforeYouBuy/TryBeforeYouBuy-Formular.html


8. Conclusiones

Aunque a mí personalmente me agrada la calculadora en inglés, claramente no es un detalle menor la existencia de esta posibilidad de cambiar el idioma.

En cuanto a las desventajas que encontré, es la pequeña pérdida de espacio de memoria Flash y una pequeña baja en rendimiento por el código adicional con cada presión de tecla. El creador, Andreas, suele argumentar que el tiempo utilizado es menor a una fracción de un milisegundo. Esta baja en rendimiento es más que nada sicológico pues utilizando la librería no se puede sentir, sin embargo se conoce su existencia.

En términos globales, sabiendo que HP debería ser la que introduzca este tipo de mejoras a su producto, es bueno saber que su producto es tan flexible que se puede llegar a encontrar soluciones tan radicales como la de este artículo.

Haga clic sobre una de las estrellas para calificar este artículo.

Opiniones y comentarios (Escribir un nuevo comentario)
Hola Erwin, tengo un problema con mi hp48gx. Se me han sulfatado las pilas (pensé que las había quitado) y ahora no me funciona. ¿Tiene solución?¿Qué debo hacer? Gracias de antemano. Un saludo
Escrito por susana (12/12/2011 09:20 AM)
Lamentablemente esa calculadora es muy complicada de abrir para reparar, intenta limpiar los contactos primero con alcohol
Escrito por Erwin Ried (13/12/2011 01:20 AM)
Hola amigo, gracias por las respuestas que brindas. Tengo un problema con mi calculadora hp 50g que demora en prender, esto sucedio desde que he formateado mi SD desde la calcu, antes no demoraba en prender y eso que era la misma SD (Si retiro la SD si prende normal por eso hago referencuia a la SD)
Escrito por William L S (03/12/2011 12:28 AM)
La SD es claramente la causa, hay algunas SDs que tienen tiempos de acceso bastante lentos, yo personalmente encontré que unas Kodak de 64 mb me funcionan mejor que unas más caras de 2 gb
Escrito por Erwin Ried (10/12/2011 02:33 AM)
HOLA AMIGO ... NESECITO QUE ME AYUDES A ACLARAR UNA DUDA... ¿ES POSIBLE AMPLIAR LA MEMORIA, RAM O QUIZAS LA ROM, DE LA CALCULADORA HP 50G? ¿UN TARJETA SD AYUDARÍA EN ALGO? POR SI ACASO TE DEJO MI CORREO: ayala_183@hotmail.com GRACIAS DE ANTEMANO...
Escrito por Nelson Ayala (03/09/2011 09:14 PM)
No es posible, pero con la SD es infinita
Escrito por Erwin Ried (09/09/2011 05:34 AM)
Hola muy interesante tus artículos....¡¡¡ hace 2 días q tengo la calculadora y se me ha hecho un poco complicado su manejo de pasar de la Ti-89t a la HP-50g, bueno lo q quiero saber es como pagar el programa q no sea por paypal hay alguna otra solución??? primero quiero utilizarla un poco mejor para después ponerle programas...¡¡¡¡ gracias saludos.
Escrito por Damvers (10/12/2010 01:38 AM)
Puedes bajar una versión de prueba, te aseguro que si te comunicas con el autor te consigue un modo especial para que se lo compres, es muy amable
Escrito por Erwin Ried (10/12/2010 02:58 PM)
Hola Erwin, una versión demo está disponible a través http://www.software49g.bplaced.net/TryBeforeYouBuy/TryBeforeYouBuy-Formular.html Saludos Andreas Möller
Escrito por Andreas Möller (23/11/2010 10:20 PM)
Gracias!, lo colocaré en el documento
Escrito por Erwin Ried (26/11/2010 08:29 AM)
Tienes mucha pasión por esta hermosa máquina he estado leyendo por mucho tiempo tu página eres un genio sigue así .-)
Escrito por Darkman (21/08/2010 10:24 AM)
pero puedo usar la version de prueba en mi hp fisica
Escrito por stevan (06/08/2010 02:06 AM)
No, pero podrías preguntarle al creador si te facilita una versión de prueba o algo así
Escrito por Erwin Ried (06/08/2010 04:11 PM)
hola te felicito muy interesantes tus aportes me das buena imprecion d tu alto grado de inteligncia.dime se puede conseguir ese paquete del idioma de otra forma por q eso de pagar me parece complicado estoy aprendiendo a usar la hp 50g y si esta en spanish seria lo maximo
Escrito por stevan (06/08/2010 01:05 AM)
Puedes usar la versión de prueba en el emulador
Escrito por Erwin Ried (06/08/2010 01:09 AM)
Muy bueno saber que tiene solución lo del idioma en nuestra calculadora.Lamentablemente, no creo que pueda ( por ahora ) aplicar a la mía lo leido en el articulo, ya que no entiendo mucho las cosas q se nombran en la página, pero seguro que día a día aprenderé más sobre el tema . Son todos los articulos muy interesantes , gracias por publicar cosas así en la web :°)
Escrito por marce (09/07/2010 10:54 PM)
Puedes comprar este paquete de idioma en la página del alemán Moller
Escrito por Erwin Ried (14/07/2010 03:44 AM)
Realmente interesante el artículo :p y no, ¡no leo tu blog sólo por las calculadoras! Me parece bastante interesante a pesar de que actualizas muy poco :-(
Escrito por Bline (09/06/2010 07:31 AM)
Gracias, siempre tengo en mente añadir nuevos artículos pero hacer el tiempo para esto es algo complicado
Escrito por Erwin Ried (09/06/2010 03:28 PM)

Copyright © 2013 por Erwin Ried.