Muchos documentos (incluyendo esta FAQ) hace referencia al "checksum" o suma de verificación de un objeto. Esta es un user binary de 16-bit, que es el resultado del calculo del CRC del contenido de un objeto. Este binario supuestamente es único, con 1 sola posibilidad de entre 65536 de tener la misma suma de verificación en dos objetos distintos. Esto permite distinguir entre programas que se ven iguales, pero que son muy diferentes (aun cuando su tamaño sea el mismo). También es usado frecuentemente para verificar la correcta transmisión de archivos.
Tu puedes encontrar la suma de verificación de un objeto usando el comando BYTES. Este comando te devolverá dos cosas - el tamaño del objeto en bytes en el nivel 1, y la suma de verificación en el nivel 2 de la pila. Nota que la suma verificación del nombre de una variable es igual a hacer la suma de verificación del objeto en si mismo, los tamaños pueden diferir entre 4.5 bytes + o sea el tamaño del nombre de la variable.
En contados casos la suma de verificación de dos objetos puede ser la misma, aun cuando los objetos sean diferentes. Esto se debe a la naturaleza limitada de la función de suma de verificación de la HP48. Puedes ocupar el comando SAME en esos casos.
Texto original de Joe Horn
Muchos programas comerciales (como Windows) tienen pantallas similares escondidas que nombran al equipo que diseño el programa. Como son simpáticas y bien escondidas, se les llama "Huevos de Pascua". El comando RULES en la G/GX es un ejemplo.
Tipea el comando RULES. Los nombres que veras son los siguientes:
/----------------------\
| M G |
| P DIANA |
| CHARLIE X B D |
| BILL U N TED A |
| O A L N ALCUIN |
| B I JIM V |
| RON S E |
\----------------------/
ALCUIN fue el nombre clave dentro de HP durante el desarrollo de la HP48G, porque Alcuin fue el tutor de Carlomagno, y Carlomagno, como recuerdas, fue el nombre clave de la HP48 SX.
Los demás nombres del "Huevo de pascua" pertenecen a:
La HP48 ocasionalmente debe hacer "garbage collection" o recolección de basura, para liberar memoria no ocupada, y es esta recolección de basura lo que causa estos "congelamientos" momentáneos. Recolección de basura es cuando la HP48 busca a través de la memoria objetos que ya no son ocupados.
Usando menos la pila supuestamente hace la recolección de basura mas rápida.
La forma mas fácil de forzar una recolección de basura es ejecutar MEM DROP. Otra manera es usando #05F42h SYSEVAL o el comando SysRPL GARBAGE.
La causa usual de esto son las tarjetas RAM/ROM y las librerías. Cuando enciendes tu calculadora, esta revisa el RAM (entre mas tengas, mas demora), y revisa si cualquiera de las librería necesita ser inicializada.
También tener muchas alarmas podría supuestamente causar esto.
Texto original de Dave Arnett
En la mayoría de los casos, esto te llevara al ambiente de la pila.
Esta es la "partida en frío" manual (Coldstart). Te sacara de casi cualquier programa caído, y te ofrece la temida opción... "Try to Recover Memory?" Nota que esta es una de las ultimas posibilidades cuando la calculadora no responda, así que no le des este salude de tres dedos a menos que aceptes la posibilidad de borrar la memoria.
Esta es la tecla Osso! en las combinaciones ON. Para muchas secuencias de ON, esto cancela la operación, siempre que presiones B antes de soltar la tecla ON. Pruébala alguna vez, así cuando la necesites, la recordaras. Pude salvarte la vida, en caso de un accidental ON+A+F en proceso, o incluso de presionar accidentalmente ON durante un ploteo.
Esto iniciara una partida en caliente (Warmstart). Perderás la pila y PICT, pero te sacara varias veces de un programa caído con la memoria intacta.
Ingresa al modo interactivo de pruebas. Haz una copia de seguridad de la memoria e investiga. Para salir de este modo usa ON+C. Ve la siguiente pregunta para ver una lista de todos los test disponibles aquí.
Comienza un modo de auto-test en bucle. Un poco aburrido después de los primeros cinco minutos, pero mantiene un buen tiempo. Para salir usa ON+C.
Cancela alarmas repetitivas.
Utilidad para vaciar pantalla.
Ajusta el contraste de la pantalla.
Inicia el "modo en coma" (Coma Mode) y borra el registro de Warm Start (partidas en caliente), y toda actividad del reloj es detenida. El gasto de energía de las pilas es básicamente unos pocos nano amperes (nA) necesarios para mantener el contenido de la RAM. El registro de Warm Start es un área de la memoria casi a prueba de balas, que mantiene un registro de los últimos cuatro eventos desastrosos. Puedes revisarla usando el comando WSLOG. Este registro es uno de las pocas cosas que no son borradas en una partida en frío (Coldstart). Pero es borrada por ON+SPC. Si quieres borrar el registro de Warm Start entra al modo en coma de esa manera. Si estas planeando ir al Tibet para estudiar los poderes místicos de los cristales durante algunos años y quieres mantener viva tu versión pirateada de Tetris, o tienes unas pilas muy gastadas entra al modo en coma. Para salir del modo en coma presiona la tecla ON (difícil de recordar, eh?), y prepárate para encontrar la pila borrada.
Dos acotaciones adicionales sobre el modo en coma. Primero, no voy a tratar de explicar la lista de códigos que aparecen en WSLOG. Lo siento! Segundo, si tu maquina esta encendida y sacas las pilas, usualmente terminaras en modo en coma para mantener la energía. WSLOG no será borrada. En cambio, encontraras un numero 1 allí. Algunas personas paranoicas ponen sus calculadoras en modo en coma cuando cambian pilas, por si acaso reciben una llamada de emergencia del Primer Ministro y no pueden volver a cambiar las baterías en menos de media hora. Si tu eres uno de esos... debería decir alaracos? No, esos serian usuarios no profesionales. Para ellos les recomendaría usar el método del ON+SPC, en vez del método kamikaze de sacar las pilas cuando la maquina este encendida. Yo solo apago mi maquina, tal como dice el manual.
Ahora, una historia sobre el modo en coma. Durante el desarrollo de la G/GX, yo mantenía un pequeño numero de unidades en las cuales cambiaba los chips de la ROM cuando salía nuevo código. Esto era para que Bill Wickes y Jim Donnelly pudieran tener un hardware real y completo para probar. Nosotros siempre realizábamos copias de seguridad de cualquier cosa importante en la maquina antes de hacer esto. Pero tome el habito de usar ON+SPC antes de abrir la calculadora. Mas de la mitad de la veces, podía sacar la pilas, abrir la caja, desoldar el chip antiguo de ROM, soldar uno nuevo, y reensamblar la maquina... con toda la RAM intacta! Cuando presionaba ON, no aparecía el mensaje "Try to Recover Memory?". Bueno, eh? Las personas que pusieron ese modo en la máquina realmente no estaban en coma.
Presionando ON-D entras al modo interactivo de pruebas de la HP48. Cuando presionas por primera vez ON-D, tu HP hará un bip (sonido)y veras 3 líneas verticales, una a cada lado de la pantalla y otra en la mitad. Tu puedes salir de este modo con una partida en caliente, ON+C. Los tests son:
Muestra la velocidad del CPU
Pruebas del LCD. Presiona Enter para circular entre estas pruebas
Prueba de la ROM interna
Prueba de la RAM interna
Prueba del teclado. Partiendo con [A], presiona todas las teclas en orden, de izquierda a derecha, de arriba a abajo. Si todo sale bien, la HP debería mostrar "KBD! OK".
Prueba parcial del teclado
Monitor del test del ESD. El nivel de las pilas es mostrado por barras.
Prueba en bucle del UART
Eco del UART por cable
Muestra que tarjetas están insertadas. Presiona cualquier tecla unas cuantas veces.
Prueba la tarjetas RAM en los puertos de expansión
Borra la pantalla
Envía el tiempo del sistema desde el puerto infrarrojo
Recibe el tiempo del sistema desde el puerto infrarrojo (tiene que mandarlo otra HP)
Prueba en bucle el IR (Infra Rojo)
Eco del UART IR
Muestra el tiempo de inicio de las pruebas
Muestra el tiempo en que una prueba fallo
Pruebas en bucle
Inicializa el tiempo de pruebas
Sumario de las pruebas
(Backspace) Entra a un scanner de memoria (solo SX)
Cuando la HP48 esta en modo de pruebas (ON-D o ON-E), los test que son mostrados en la pantalla, también son enviados a la puerta serial a 9600 baudios, 8 bits, sin paridad, 1 stop bit. Esto parece no ser afectado por ninguna selección en el IOPAR, PRTPAR o las system flags (banderines de sistema). Me puedo imaginar que esta característica fue incluida para pruebas en la fabrica. Esto explica, porque el icono de I/O se prende tantas veces durante las pruebas.
La HP48 S/SX/G tienen 32 Kb de memoria base, y la GX tiene 128Kb. Sin embargo no toda la memoria esta disponible para el usuario. El sistema operativo usa memoria para variables, flags (banderines), fonts (caracteres), ultima pila, ultimo argumento, ultimo menú, y otros. Puede ser cualquiera de las siguientes cosas:
Para instalar una Librería:
Algunas veces tendrás que borrar la variable que contiene la librería antes de guardarla en un puerto, si es que tienes poca memoria disponible. Ve la próxima pregunta para mas información..
Si tienes FXRECV instalado: Solo tipea el numero del puerto, presiona FXRECV y la librería automáticamente será guardada en el puerto elegido. Todo lo que tienes que hacer entonces es apagar la calculadora y después prenderla para completar la instalación.
Para borrar una Librería:
Digamos que la librería que quieres borrar es la 1234 y esta en el puerto 0 .
Si esto no funciona, debe haber aun una referencia a la librería en la memoria temporal. Trata de reiniciarla con ON-C, y trata de nuevo.
Si lograste transmitir satisfactoriamente la librería a tu HP y tratas de guardarla en un puerto, obtendrás el error "Insufficient Momory". Esto se debe a que tu HP esta tratando de guardar una copia de esta en el puerto, pero no hay suficiente memoria en el. Esto es común en la HP48 S/SX/G, ya que tienen solo 32Kb de memoria incorporada.
La solución es poner la librería en la pila, y posteriormente borrar la variable original que contenía la librería. En este punto, la única copia de la librería que existe es la de la pila. Ahora puedes guardar la librería en un puerto como de costumbre. Este método evita tener dos copias idénticas momentáneamente en la memoria al mismo tiempo.
Por ejemplo, digamos que tienes una librería en 'LIB' y quieres guardarla en el puerto 0. Debes hacer lo siguiente:
Para el problema opuesto - mandar librerías grandes sigue el procedimiento en reversa. Esto es, llama el objeto desde el puerto a la pila, borra el original del puerto, guárdalo en una variable y mándalo.
Si la librería esta en un puerto no cubierto (0/1/2 en la SX o 0/1 en la GX) puedes usar el siguiente programa sugerido por Dan Kirkland:
\<< -> lib \<< 'lib' SEND \>> \>>
Esto no requiere un asegunda copia de la librería y evita todas las complicaciones de tratar de borrar una librería y después reinstalarla.
esto se debe a la manera en que comúnmente son representados los números en los computadores y calculadoras. Hay muchos números infinitos, como '1/3' y 'pi', que no pueden ser representados exactamente en el interior de la calculadora (su representación decimal sigue infinitamente, y comúnmente ni siquiera puede ser representado como una fracción, como en 'pi'). Como resultado, cualquier calculo que use estos números estará limitado en su exactitud.
Algunos afirman que 0^0 esta definido como 1, otros que es indeterminado. Los matemáticos de HP decidieron usar la primera definición. Aquí hay información concreta sacada de la Sci.Math-FAQ:
Que es 0^0 ?
De acuerdo con los textos de Calculo, 0^0 es una "forma indeterminada". Cuando se evalúa un limite de la forma 0^0, necesitas saber que los limites de esa forma son llamados "formas indeterminadas", y necesitas usar técnicas especiales como la regla de L'Hopital para evaluarlas. De otra forma, 0^0=1 parece ser la elección mas útil para 0^0. Esta convención nos permite extender definiciones en distintas áreas de las matemáticas que de otra forma deberían tratar al 0 como un caso especial. Nota que 0^0 es una discontinuidad en la función x^y.
Rotando & Korn que si f y g son funciones reales que desaparecen en el origen y que son analíticas en 0 (infinitamente diferenciable no basta), entonces f(x)^g(x) se aproxima a 1 cuando x se aproxima a 0 por la derecha.
De Concrete Mathematics p.162 (R. Graham, D. Knuth, O. Patashnik):
"Algunos textos dejan 0^0 indefinido, porque las funciones x^0 y 0^x tienen diferentes valores limites cuando x decrece a 0. Pero esto es un error. Debemos definir:
x^0 = 1 para todo x,
si el teorema del binomio es valido cuando x=0, y=0, y/o x=-y. El teorema es demasiado importante para ser arbitrariamente restringido! Al contrario, la función 0^x no tiene importancia."
Publicado por Addison-Wesley, 2nd printing Dec, 1988.
H. E. Vaughan, The expression '0^0', Mathematics Teacher 63 (1970), pp.111-112.
Louis M. Rotando & Henry Korn, "The Indeterminate Form 0^0", Mathematics Magazine, Vol. 50, No. 1 (January 1977), pp. 41-42.
L.J. Paige, A note on indeterminate forms, American Mathematical Monthly, 61 (1954), 189-190; reimpreso en la Mathematical Association of America's 1969 volume, Selected Papers on Calculus, pp. 210-211.
Jan Lukasiewicz escribió un libro de lógica formal en 1951 mostrando que las expresiones matemáticas podían especificarse sin paréntesis, colocando los operadores antes (Polish Notation; notación polaca) o después (Reverse Polish Notation; notación polaca inversa) de los operandos. Por ejemplo, la expresión:
(4 + 5) * 6
Puede ser expresada en RPN como:
4 5 + 6 *
6 4 5 + *
Notación polaca también es conocida como notación de prefijos y notación polaca inversa (RPN) es conocida como notación de sufijos.
En los años posteriores al libro de Lukasiewicz, los científicos de computadores se dieron cuanta que RPN o notación de sufijos era muy eficiente para matemáticas en computadores. Como una expresión de sufijos es leída de izquierda a derecha, los operandos son simplemente puestos en una pila ultima-entra, primera-sale (LIFO; last-in, first out) y los operadores se aplicarían de inmediato a los operandos en el fondo de la pila. Al contrario, expresiones con paréntesis y precedencia (notación encajada) requerían que los operadores fueran retrasados hasta algún punto posterior. De este modo, los compiladores en casi todos los computadores modernos convertían expresiones a RPN para ejecutarlas. (De hecho, algunos fabricantes de computadores diseñaron sus computadores usando notación de sufijos).
En la época en que la HP-35 fue lanzada, otras calculadoras de bolsillo usaban un modelo de álgebra parcial. Eso significaba que podían evaluar expresiones triviales como 4+5, pero no podían manejar nada que contuviera paréntesis o precedencia algebraica. La tecnología de ese tiempo no permitía compiladores totalmente algebraicos en calculadoras de bolsillo.
RPN permitió a HP a producir una calculadora de bolsillo que pudiera evaluar expresiones arbitrarias usando la tecnología disponible. Para muchos, aprender un nuevo estilo de ingreso era el pequeño precio que debían pagar para poder evaluar expresiones arbitrarias en una calculadora. Una vez que la tecnología permitió que compiladores algebraicos cupieran en una calculadora de bolsillo, la mayoría de los usuarios usando RPN decidieron que RPN era mas eficiente y consistente para los usuarios como para la calculadora. Además, ya que las subexpresiones son evaluadas cuando son ingresadas, los errores de entrada son mas obvios con RPN.
Otra ventaja de RPN es la consistencia entre maquinas. Los primeros modelos algebraicos tenían diferentes limites de complejidad en las expresiones que podían evaluar. Por ejemplo, los catálogos de TI de finales de los 70' describían cuantos niveles de paréntesis y operaciones pendientes podía manejar cada modelo. Aun hoy en día si comienzas a usar una calculadora algebraica, necesitas determinar "cuan algebraica" es realmente. Por ejemplo, algún interruptor a RPN para operaciones unitarias (ie 5 SIN en vez de sin(5)) y en algunas no se puede ingresar directamente una expresión como:
4+5
-----
6+7
Algunas personas simplemente no pueden acostumbrarse a la interacción con la pila para hacer cálculos. Una alternativa simple es poner tu ecuación en comillas como '8+10*3' y usar EVAL como la tecla "es igual". De esta manera tu puedes ingresar números tal como los escribirías en papel.
Ejemplo: Sumo dos temperaturas como 34 deg.F y 11 deg.F, y obtengo 504.667 deg.F. Porque no obtengo 45 deg.F?
Esto ocurre solo con la S/SX. Este comportamiento cambio en la G/GX. En la G/GX, sumar 34 deg.F y 11 deg.F dará 45 deg.F usando TINC y TDELTA. Sin embargo, La G/GX solo sumara o retara temperaturas si las unidades son las mismas; ahora es un error que no lo sean.
Si las unidades unidas al numero consisten en solo una temperatura y nada mas, las operaciones son realizadas usando una escala absoluta de temperatura (relativa al cero absoluto). Si las unidades consisten en una temperatura y algo mas, como ángulo/minuto. la operación no será realizada usando una escala absoluta de temperatura.
Además no tiene ningún sentido físico sumar dos temperaturas. Tu no puedes sumar una taza de agua a 20 grados C a una taza de agua a 30 grados C y terminar con dos tazas de aguas a 50 grados C.
Nota: Algunas de las ultimas ediciones del manual de la serie G/GX tienen información similar al respecto.
Otra característica es la unidad genérica 1_?. Parece pensada como unidad genérica, para permitir crear nuevas unidades no basadas en ninguna de las incorporadas. La puedes ocupar para crear una utilidad de conversión para dinero o bits y bytes. Antes de crear alguna de estas, revisa los sitios de FTP para ver que han hecho otros en este aspecto.
Aquí hay un ejemplo. Convierte esto usando ASC\-> y guardado como 'sample'.
"69A20FF78E000000005046F6E6574750ADA209C2A2C2A2070000F368B01B2130
E20005046F6A756E650ADA20339201000000000000210C2A20F000046F6E6574
768B01B2130640005086F6D6562750ADA20339200000000000000510C2A20F00
0046F6E65747C2A20B0000D696E686B0168B01B2130B5000303435453047A204
7A20C2A20F000046F6E65747ADA209C2A2C2A20F000046F6E6574768B01B2130
B213047A20C2A20F000046F6A756E6ADA209C2A2C2A20F000046F6A756E668B0
1B2130B213047A20C2A20F000086F6D65627ADA209C2A2C2A20F000086F6D656
2768B01B2130B2130B2130F0DA"
Este es un directorio muestra con un menú de usuario. Entra al directorio y presiona la tecla CST. Aquí veras tres unidades (acortadas para caber en las teclas del menú): donut, dozen y homer. Una dozen es definida como 12_donut, y un homer es la velocidad de 1.5_donut/min (ne es parte del sitema SI). Estas unidades pueden tomar prefijos del sistema SI descritos en la pagina 10-5 del Manual del Usuario, entonces tu puedes convertir el valor de 3_MW*h/kdonut en unidades de erg/mdozen usando CONVERT, por ejemplo. Los itemes en el menú CST tienen las habilidades usuales del menú de unidades decrito en las paginas 10-2 y 10-3 del Manual del Usuario. Estas unidades pueden ser utilizadas para operaciones matemáticas descritas en la pagina 10-7 del Manual de Usuario, como agregar 2_donut a 1_dozen.
Ejemplo: En tu planta de energía, tu tienes cuatro funcionarios en el cuarto de control, que combinados tienen la velocidad de consumo de 2.28 homers. Cuantas donuts se comerán en 5 minutos y 17 segundos?
2.28 homer
Right-shift UNITS [TIME]
5 [min]
17 [s] +
CST Left-shift dozen
Tu estas usando el modo de constantes numéricas. Para prender o apagar este modo:
Tipea -2 SF
. Esto prende el modo de constantes numéricas. Para apagarlo, tipea -2 CF
.
Anda al menú MODES (presiona verde/right-shift MODES). presiona la tecla para el submenu FLAG. Avanza ala segunda flag "Constant -> symb" para apagarla y prenderla.
Esos pequeños números son "flags de usuario". Cuando tu o un programa prende cualquiera de las flags de usuario de la 1 a la 5, pequeños números correspondientes a la flag prendida son mostrados en el borde superior de la pantalla.
La HP usa flags negativas para setear varios modos y funciones, mientras que la flags positivas fueron reservadas para el uso del usuario. Para prender una flag de usuario tipea el numero y después SF. Para borrar la flag de usuario tipea el numero y después CF.
Algunos programas utilizaran las flags de usuario sin avisarte. Entonces si tienes un "1" en el borde superior de la pantalla puedes tipear 1 CF para eliminarlo.
Puedes construir una matriz por filas usando \GS+. Puedes desmantelar una matriz en columnas usando \GS- Estos dos comandos (\GS es Sigma (letra griega E)) agregan o sacan filas de la matriz estadística SigmaDAT. \GS+ toma un vector fila y lo agrega a SigmaDAT, y \GS- toma la fila del fondo de SigmaDAT. \GS+ es accesible desde el menú STAT con su softkey. \GS- puede ser obtenido presionando left-shift /GS+, o tipeandolo en la línea de comandos.
La GX tiene muchas funciones matriciales incorporadas. Ve el apéndice B-1.
Hay muchos programas disponibles para usar el puerto IR de tu HP48 como un control remoto. Sin embargo, el nivel de soporte depende particularmente de la unidad que quieras controlar. La HP48 es capaz de reproducir muchos controles IR de muchos aparatos de marcas populares.
Sin embargo, algunos controles remotos funcionan a velocidades que la HP48 no es capaz de reproducir. Gracias a su mayor velocidad de procesamiento, las calculadoras G/GX son capaces de soportar una mayor cantidad de controles remotas, pero en algunos casos aun es limitado.
Con los típicos programas tu tienes que "enseñar" a tu HP48 mandándole las distintas secuencias con el control remoto original. Hay algunas ventajas al usar tu HP48:
El mejor programa de control remoto lejos es Remote por Bjorn Gahm. Tiene una larga base de datos de controles remotos existentes, así no tienes que adiestrar a tu HP48 si tu control esta en esa lista. Además tiene la habilidad de aprender códigos nuevos. Ve la lista de mejores programas (mas adelante en esta FAQ) para el URL especifico.
Para hacer tonos de discado de teléfonos, tienes que producir dos tonos simultáneamente. Los tonos usados para discar teléfonos son conocidos como tonos DTMF (dual tone multi frcuency), que consisten en dos tonos simultáneos.
El parlante de la HP48 no es capaz de producir tonos DTMF, porque solo puede producir un tono a la vez. Lo mejor que puede hacer la HP48 es cambiar muy rápido entre una frecuencia y otra. Algunos intentos en lenguaje de maquina no han sido fructíferos. Por eso no puedes ocupar tu HP48 como un marcador de teléfonos.
Puedes ocupar algunas de las utilitarios disponibles en los discos Educalc Goodies (ve Apéndice E.5 para ver donde obtenerlos):
Algunas librerías par la pila vienen con el soporte para AUTOEXEC o algún equivalente incorporado (por ejemplo, la librería Java soporta AUTOEXEC). Si alguna de las librerías que tienes instaladas tiene soporte para esa característica, no necesitas ninguna de las librerías anteriores.
Realmente no puedes. A diferencia de la HP28-S, la velocidad del reloj en la HP48 SX esta fijo por hardware (físicamente) a 2 Mhz, y a 4Mhz en la HP48 GX.
sin embargo, en algunos casos, puedes acelerar tu HP48 apagando el refrescamiento de pantalla, que supuestamente toma cerca del 11% del tiempo del CPU. Detlef Mueller mando un programa llamado SPEED a comp.sources.hp48 que apaga el refrescamiento de pantalla. Como apaga la pantalla, es obvio que solo es utilizable en largos procesos no interactivos como calcular integrales, compilar, etc... Busca en los diversos archivos para la HP48 para una copia.
Trata bajando la resolución de ploteo tipeando #2 RES
. Puedes usar valoras mas grandes para mayor velocidad a expensas de los puntos ploteados. En el menú de opciones de ploteo en la GX (Ploting Options Menu) este parámetros es conocido como "STEP".
En el manual del usuario se refieren a las inecuaciones como "gráficos de verdad". Están definidos como expresiones que devuelven los resultados verdadero (cualquier numero real distinto de cero) o falso (0). En un gráfico de verdad, un pixel es prendido si la expresión es verdad, y si la expresión es falsa se deja tal como estaba.
Por ejemplo, para graficar la simple inecuación \X>0\ puedes hacer:
'X>0' 'EQ' STO
TRUTH
-20 20 XRNG
-10 10 XRNG
ERASE DRAX DRAW
Para ejemplos mas complicados lee tu manual, o en una G/GX tipea TEACH para ver en alguno de los ejemplos incorporados. Además seria de utilidad graficar las líneas que definen la frontera de la región de verdad. Esto es tan fácil como cambiar el tipo de gráfico a FUNCTION o CONIC y graficar de nuevo, preocupándose de no borrar ningún gráfico hecho anteriormente.
Nota que a menos que sea especificado, cada pixel en la pantalla debe ser evaluado. Por eso, los gráficos de verdad pueden ser muy lentos. Si tienes una idea general de cuales valores vana dar verdadero, puedes acelerar el gráfico especificando un rango menor a graficar en las coordenadas x e y. Puedes hacer esto fijando las formas de entrada "LO" y "HI" en una G/GX, que pueden ser diferentes al rango actual de representación del gráfico.
Si estas graficando el área entre dos ecuaciones, puedes acelerar dramáticamente la velocidad del gráfico evitando el uso de un gráfico de verdad (TRUTH). Guarda las dos ecuaciones como los dos primeros elementos en la lista actual de EQ. Usando NXEQ en el menú FCN retara la lista a voluntad para graficar ambas funciones. Después el área entre ellas pude ser rellenado rápidamente usando la tecla SHADE del menú FCN (en el ambiente PICTURE).
Otra sugerencia para acelerar los gráficos de verdad es fijar la resolución, digamos a 2 pixeles o mas, lo que resulta en un sombreado distinto. La resolución puede ser fijada con el comando RES.
El "directorio escondido" es un subdirectorio del directorio HOME. Es creado al iniciar la calculadora, y contiene variables con tus alarmas y las configuraciones de teclado de usuario. Puedes ocupar el directorio escondido para guardar lo que quieras, sin embargo NO PUEDES ORDENAR los contenidos de este directorio, lo que causaría perdida de memoria.
El nombre del directorio escondido es el carácter nulo, ''. La única forma de conseguir un carácter nulo es usando un syseval. Puedes usar el siguiente programa para acceder al directorio escondido:
<< HOME (cambia al directorio home)
#15777h (syseval para conseguir el carácter nulo)
SYSEVAL (devuelve '' a la pila)
EVAL >> (cambia al directorio escondido)
Para salir del directorio escondido, usa HOME o UPDIR. esto te llevara al directorio HOME.
Además poniendo el carácter nulo como parte de tu directorio HOME, te permitirá entrar directamente en el directorio escondido presionando la tecla de menú.
Nota: El comando SysRPL NULLID devuelve un carácter nulo a la pila; es lo mismo que hacer #15777h SYSEVAL.
Texto original de Joe Horn
Hay un método poco conocido para recuperar objetos desde el interior de copias de seguridad. Solo haz una lista representando el PATH (ruta) al objeto y etiqueta (tag) la lista con el numero del puerto. Después presiona RDL o EVAL.
Por ejemplo, si tu archivo esta en el puerto 1 y se llama BKUP, y contiene un directorio llamado GAMES que contiene un programa llamado REVERSI, puedes ejecutar el juego directamente (sin tener una copia distinta de REVERSI guardada en cualquier parte!) escribiendo:
:1: { BKUP GAMES REVERSI } EVAL
O puedes usar RCL en vez de EVAL y el objeto será puesto en la pila.
Para tomar un logaritmo de un numero de una base que no sea 10 ni e, digamos log x, base y, usa la formula:
ln x
-------- donde ln es logaritmo natural (log sirve también)
ln y
Un programa corto que lo realiza: << SWAP LN SWAP LN / >>
Con los datos de entrada:
2: x
1: y
Texto original de John Meyers
Si, en la G/GX hay unas cuantas teclas que no son mencionadas. Estas son:
AUR
Texto original de John Meyers
Además de comprar el Advanced User's Reference Manual (AUR), puedes buscar en el Apéndice G de la Guía del Usuario de la G/GX, que describe brevemente cada comando disponible en la G/GX, incluyendo todos los comandos que no son mencionados en ninguna otra parte de la Guía del Usuario. Casi siempre esta breve descripción es suficiente para que ocupes el comando (y sepas sus salidas!).
Algunas notas sobre omisiones:
Nota que con CLVAR, si el directorio actual contiene subdirectorios no vacíos, un error ocurrirá en ese punto, y las variables restantes no serán borradas.
Texto original de John Meyers
Algo de lo que viene a continuación esta en la Guía del Usuario (pero no todo), bajo "Bases Numéricas y Aritmética Binaria" (Capitulo 15 del manual de la G/GX).
Las flags de sistema contienen un segmento que especifica el "tamaño de palabra de un binario". Este largo de palabra limita cuantos bits de un valor binario son mostrados en la pila, e igualmente determina cuantos bits de los argumentos y resultados de las operaciones aritméticas/lógicas/desplazamiento de binarios son usados.
Curiosamente, el tamaño de palabra de un binario no afecta la entrada de valores en la línea de comandos - lo que tu originalmente ingresaste es mostrado en una forma truncada en la pila, pero cuando tu lo vez de nuevo en la línea de comando ( que temporalmente revierte a visualización numérica STD y un largo de palabra de 64-bit) te darás cuenta que el valor completo esta todavía intacto.
Tan pronto como comienzas a usar funciones en ese valor, el argumento de funciones de binarios es truncado al largo de palabra antes de que la función es ejecutada, y después el resultado final de la función es truncado de nuevo.
Puedes obtener el largo de palabra vigente usando RCWS y fijar el largo de palabra usando STWS. STWS acepta un numero real como argumento en el rango entre 1-64 (fuera de ese rango el valor es ajustado a 1 o 64 dependiendo del caso), también acepta como argumento un binario, en cuyo caso el valor de los 20 bits mas bajos es usado (solo en caso de que te sorprendieras de que #1048576d STWS RCWS diera como respuesta un 1).
No trates de ajustar el largo de palabra del binario con la esperanza de ahorrar memoria usando valores mas cortos; todo "entero binario de usuario" (tipo 10) producido por User RPL ocupa 13 bytes, sin importar cual sea el actual largo de binario; la HP48 simplemente fija los bits anteriores a cera cuando visualiza en la pila o realiza cálculos.