Historia de la calculadora programable HP 41C


Las Calculadoras Programables son un tipo de calculadoras electrónicas que pueden ejecutar de forma automática una secuencia de operaciones bajo el control de un programa almacenado, como un ordenador. Se emplean normalmente para aplicaciones científicas, financieras, ingeniería y educación.


👑 La HP 41C, fabricada desde 1979 hasta 1990, fue el standard en ciencias e ingeniería durante gran parte de su vida. Programable, alfanumérica, con una pantalla LCD de alto contraste y expandible, tenía una gran capacidad de memoria y se podia gestionar de una forma mucho más avanzada que cualquiera otra de la competencia, era un verdadero ordenador portátil en el bolsillo.


Sus capacidades podían ser expandidas mediante 4 puertos de expansión en su parte trasera para albergar módulos de memoria ROM con nuevas funciones o conectar interfaz para utilizar impresoras térmicas, plotters, lectores de código de barras, dispositivos de almacenamiento, aparatos de medida, dispositivos de laboratorio de HP, etc.


Casi todas las teclas de la calculadora podían ser reasignadas a nuevas funciones o programas.



HP 41C con lector de códigos de barras


HP 41C casete de cintas magnéticas.

Plotter o Impresora conectado a la HP 41CV


HP 41C módulos de expansión y lector

Aún conservo la calculadora programable HP-41C,

 con las tarjetas magnéticas para archivar las aplicaciones



Agenda con notas y esquemas de programación, que fui realizando desde 1982 


La NASA uso esta calculadora en sus misiones espaciales

Un HP-41C que voló en nueve de las primeras misiones del transbordador espacial se exhibe en el Museo Nacional del Aire y del Espacio en Washington, DC HP-41C con algunas configuraciones de hardware especiales (la adición de tiras de velcro , módulo de tiempo de preproducción y un zumbador más fuerte , así como la eliminación de partes cuya desgasificación podría causar contaminación) se llevaron a cabo en las primeras misiones del Shuttle con el propósito de realizar cálculos mundanos pero necesarios, como calcular el cambio en el centro de gravedad debido al consumo de combustible. El HP-41C también fue programado para manejar los cálculos que generalmente realiza la computadora principal a bordo, como determinar los tiempos de encendido para el reingreso, en el caso de una falla de la computadora principal.





Emulador Calculadora TI-58/59

TI-58C

Emula una calculadora Texas Instruments TI-58/58C/59 de 1979.


Guía de programación T I-58/59

• Introducción


La calculadora programable TI-58TI-58C y TI-59 fueron unas calculadoras de bolsillo programable fabricada por Texas instruments desde 1979, utilizan un lenguaje de programación llamado LMS, almacenando las teclas de la propia calculadora como una secuencia de instrucciones y ejecutándolas en consecuencia. De esta manera, el TI-58/59 es un decodificador de computación de buena fe. Almacenará valores, realizará ramificaciones condicionales y hará muchas otras cosas que hacen las computadoras convencionales. A medida que se desarrollan los programas TI-58/59, tienen un parecido sorprendente con los programas de lenguaje ensamblador.

• Cómo programar

Cuando está en modo calculadora, el TI-58/59 funciona como una calculadora ordinaria. Es en el modo Aprender donde se almacenan las instrucciones. Presione la tecla LRN para ingresar al modo de aprendizaje. Tenga en cuenta que la pantalla cambia. Hay 3 ceros, un espacio y luego 2 ceros:

00000

El primer conjunto de ceros es el número de paso. Dado que los programas se componen de una serie de pasos, la secuencia es vital. El número de paso realiza un seguimiento de esto.

El segundo conjunto de ceros indica el código de la instrucción en esa secuencia. Como se dijo anteriormente, el lenguaje de programación del TI-58/59 es simplemente las teclas de la calculadora disponibles. A cada clave se le da un código numérico. Tenga en cuenta que el teclado tiene 5 teclas de ancho y 9 teclas hacia abajo. Esto permite identificar cada clave con un número de 2 dígitos, o "código de instrucción". Por ejemplo, la clave raíz cuadrada estaría representada por el código de instrucción 34, porque está en la 3ª fila hacia abajo y la 4ª tecla a través.

Tenga en cuenta también que el TI-58/59 asigna múltiples funciones a la misma tecla. El uso de la  tecla realizará una función diferente. Por ejemplo, al presionar la  tecla y luego la tecla raíz cuadrada se efectuará la función cos. En este caso, se genera un código de instrucción similar, pero es 5 + el número de teclas de ancho. Por ejemplo, el código de instrucción para la clave cos es 39.

• Ingresar a un programa

Entremos en un programa simple. Crearemos un programa que multiplique un valor por 2. Encienda la calculadora, presione la tecla LRN y presione la tecla de multiplicación, las dos teclas y la tecla igual. Cada vez que presione una tecla, observe que el número de secuencia aumenta. Esto se debe a que está agregando secuencias de instrucciones cada vez que presiona una tecla.

Puede recorrer un programa utilizando las teclas SST y BST, que son un solo paso y un paso atrás respectivamente. Presione BST y el número de secuencia volverá a 002. Tenga en cuenta que el código de instrucción es 95. Esto tiene sentido porque la tecla igual está en la 9ª fila y la 5ª columna del teclado. Al presionar BST y SST retrocederá paso y un solo paso a través del programa.

Considere nuestro programa en esta representación:

00065x
001022
00295=

Tenga en cuenta un par de cosas. En primer lugar, la primera instrucción tiene la secuencia 000. También podría estar acostumbrado a contar desde cero de inmediato. Cero es un número. Aunque tiene un valor numérico de nada, es un identificador válido. La primera instrucción tiene la secuencia 000. Tenga en cuenta también que el código de instrucción para el dígito 2 no es lo que esperaría. Normalmente sería 83, para la 8ª fila y la 3ª columna. Pero en cambio se representa como 02. No sé por qué. Dado que la primera fila del teclado se considera fila 1, cualquier cosa que comience con 0 puede considerarse un dígito. Dado que cada dígito se almacena por separado, los diez dígitos se pueden representar de esta manera.

• Control de flujo

Hay un par de otras claves que debe comprender antes de poder ejecutar un programa. Una es la clave RST. Esto significa reinicio, y pone el puntero de secuencia de nuevo a 000. Pruébalo.

Presione SST o BST hasta que esté en la secuencia 002. Presione la tecla LRN para salir del modo de aprendizaje.

Presione LRN nuevamente para volver al modo de aprendizaje. Tenga en cuenta que todavía está en la secuencia 002. Presione LRN nuevamente para salir del modo de aprendizaje. Ahora presione la tecla RST. Presione la tecla LRN nuevamente para volver al modo de aprendizaje. Observe que el puntero de secuencia ya no está en el paso 002, sino que se ha "restablecido" al paso 000. Por lo general, después de ingresar un programa, querrá restablecer el puntero de secuencia al principio antes de la ejecución.

La otra clave importante es la clave R/S. Esto significa "Ejecutar /Detener". Al presionar esto, el programa comenzará o detendrá la ejecución.

• Ejecución del programa

Para ejecutar un programa debes estar fuera del modo de aprendizaje. Si está en modo de aprendizaje, presione la tecla LRN para volver al modo de calculadora. Presione la tecla RST para asegurarse de que el puntero de secuencia está de vuelta al principio del programa. Nuestro programa está diseñado para muliply un número por dos. Empecemos por lo pequeño. Presione la tecla 6. Con el número 6 en la pantalla, este es el número que será operado por nuestro programa cuando comience la ejecución. No es diferente a si empezáramos a pulsar manualmente las teclas que componen nuestro programa. Es solo que el TI-58/59 ejecutará estas construcciones automáticamente para nosotros.

Presione la tecla R / S para comenzar a ejecutar el programa. Tenga en cuenta que la calculadora parece ir a la tierra de nunca jamás. Si lo dejas correr el tiempo suficiente, el número 0 comenzará a parpadear en la pantalla. Presione la tecla LRN para ingresar al modo de aprendizaje. Tenga en cuenta que está en la secuencia 239 o 479. Este es el número máximo de pasos disponibles para la calculadora programable TI-58/59.

¿Qué salió mal? Bueno, si miras de cerca el programa, notarás que nunca le dijimos a la ejecución que se detuviera. La calculadora ejecutará obedientemente nuestras instrucciones de multiplicar por dos, pero luego continuará ejecutando instrucciones nulas hasta que se quede sin números de secuencia.

La solución es utilizar el R/S como una instrucción de programación real. Esto hará que la ejecución se detenga cuando se encuentre la instrucción. Para hacer esto, salga del modo de aprendizaje y presione RST para restablecer el puntero de secuencia. Vuelve al modo de aprendizaje y verás que el puntero de secuencia vuelve a estar en 000. Pulsa SST hasta que estemos en la secuencia 003. Tenga en cuenta que este es un número de secuencia no utilizado porque el código de instrucción es 00. Ahora simplemente presione la tecla R / S. Esto establecerá nsctruction 003 para que sea la función run/stop.

Nuestro programa ahora se ve así:

00065x
001022
00295=
00391R/S


Vamos a intentarlo de nuevo. Salga del modo de aprendizaje y restablezca el puntero de instrucciones. Introduzca el dígito 6 en la pantalla y pulse R/S. ¡Mira eso! El TI-58/59 ha multiplicado nuestro número por 2 y ha detenido la ejecución. ¡Bien! Ahora vamos a intentarlo de nuevo. Presione CLR para borrar la pantalla y, a continuación, escriba un número de su elección. Pulse la tecla R/S.

¿¿Qué pasó?? Se fue a tierra de nunca más. ¿Por qué? El problema es que el TI-58/59 detuvo la ejecución en la secuencia 003 donde teníamos nuestra instrucción R/S. La próxima vez que iniciamos la ejecución, se recuperó en la secuencia 004. Esto, como la primera vez, hizo que volara a través de un montón de instrucciones nulas hasta que se quedó sin secuencias.

¿Cómo explicamos este comportamiento? La solución es sencilla. La clave RST, al igual que la clave R/S, se puede introducir como una instrucción ejecutable. Presione la tecla CLR para que la pantalla deje de parpadear. Presione la tecla RST para restablecer el puntero de secuencia. Presione LRN para entrar en modo de aprendizaje. Presione SST hasta que esté en la secuencia 004. Ahora presione la tecla RST para asignar la función de restablecimiento a la secuencia 004.

Nuestro programa ahora se ve así:

00065x
001022
00295=
00391R/S
00481RST


Vuelve a salir del modo de aprendizaje y restablece el puntero de secuencia. Nuevo vamos a intentarlo de nuevo. Ingrese 6 y presione R / S. Como antes multiplicará 6 por 2. Ahora ingrese un número de su propia elección y presione R / S nuevamente. Esta vez funciona. La segunda vez que presione R / S, continuará y ejecutará la secuencia de instrucciones 004. Pero la nueva secuencia 004 le dice al puntero de instrucción que vuelva a 000. Esto comenzará la ejecución del programa desde el principio, lo que multiplicará el valor de visualización por 2 y detendrá la ejecución.

• Emulación de un TI-58/59

Si no tiene una calculadora TI-58/59, ¡emule!

TI-59EMU.gif (34658 bytes)TI 5X - emulador de la calculadora programable TI-59. El programa emula completamente la famosa calculadora TI-59 de la compañía Texas Instruments con la impresora PC-100A. Permite guardar y cargar los programas y cambiar entre módulos de biblioteca. 

TI-58C /59 Key code

 Mi programa de armado de vigas realizado con la TI-58C en 1980.



Ordenador de Hewlett Packard HP 86B


Ordenador Hewlett Packard  HP-86B con doble disquetera 1984


Procesador HP 0,625 MHz 64 bits
128kB RAM
Pantalla LCD
Modos de texto 80x16 u 80x24
Modos gráficos 400x240 o 544x240
Puerto HP-IB (o GPIB) para extensiones Unidades de disquete y discos duros Impresoras y Plotters
Adquisición de datos periféricos (multímetros, osciloscopios...)
Expansión del sistema mediante módulos ROM o EPROM
Tarjetas HP-IL, RS232
Posibilidad de utilizar parte de la RAM como RAMDisk
Unidad de doble disquetera con almacenamiento de 620 KB.


Los HP-80 utilizaron una versión muy potente del lenguaje BASIC. Los tipos de datos incluían cadenas, enteros, cortos y reales. El intérprete admitía subrutinas, funciones, datos comunes y una variedad de características potentes, incluida la capacidad de configurar y responder a los temporizadores.


Listado de nervios de forjado reticular HP 86B




HP 42S - Emulador Free 42

Calculadora programable HP-42s



La HP-42S fue una calculadora RPN científica programable introducida por Hewlett Packard en 1988. Tenía funciones avanzadas de matemáticas, álgebra lineal, análisis estadístico, ciencias de la computación, editor de matrices, soporte de números complejos, solucionador de ecuaciones, menús definidos por el usuario, capacidades básicas de gráficos, mucho más avanzada y potente reemplazó a la serie HP-41 siendo compatible con todos sus programas.

Emulador HP-41c <go41c> para móviles Androide


Emulador muy realista, pero limitado en capacidad de registros y no permite grabar los programas.

Emulador Free42 para PC o móviles Androide/ IOS (IPhone) - 2021


Este magnífico emulador gratuito de la HP-42s, permite guardar los programas en la memoria del móvil y los resultados copiarlos en la bandeja clips de la memoria para utilizarlos en otras aplicaciones. Tiene incorporado una cinta de impresión digital con formato similar a la de la impresora térmica original.
Tambien funciona como emulador en el PC y los ficheros de programas generados, se pueden intercambiar entre el PC y el móvil. Esto le confiere mucho mayor versatilidad que las originales HP-41CV y  HP-42S 



 Calculadoras DM42 y DM41X RPN


Actualmente el lenguaje RPN sigue vigente entre la comunidad científica. La empresa SwissMicros comercializa por 185 € la DM42 y DM41X RPN, gama insignia de las calculadoras RPN, un verdadero homenaje a las legendarias HP-42s y la HP-41cx ampliamente consideradas como las calculadoras más deseadas jamás fabricadas y de las más precisa del mercado mundial, utilizando la poderosa y probada lógica RPN.

El DM42 ejecuta Free42, basado en una biblioteca matemática de coma flotante decimal y coma flotante decimal de precisión cuádruple IEEE 754-2008, codificando números en 16 bytes y dando 34 lugares decimales de precisión con exponentes que van desde -6143 a +6144.


Listado de aplicaciones realizadas en RPN

Free42



Free42 aplicación para móviles Androide

También me ha resultado muy útil tener instalado en el móvil, el emulador Free42 de la calculadora HP-42S, que me ha permitido programar en  RPN (mi lenguaje favorito)  utilizándolo tanto para realizar programas de cálculos de ingeniería, como de conversión de unidades o de contabilidad doméstica y a la vez usarla como potente calculadora científica.

Con mi nueva aplicación de IA realizada en AppSheet, me puede generar cualquier programa
 en lenguaje RPN para introducirlo en el emulador Free42 de la HP-42S.

Todas las aplicaciones listadas a continuación están realizadas por mí actualmente, usando el emulador "Free42" de la calculadora programable HP-42S o el de la HP-41C.

Para habilitar la impresora adjunta con FREE42, usar la función PRON en el menu PRINT  Shift   Σ+. 

De mis aplicaciones de estructuras, solo he puesto algunas como la de cálculo de esfuerzos en portico por el método de Kani, las demás por ser de mi ámbito profesional no las he incluido en este blog.

Mi Programa con las nuevas funciones de GPS habilitadas en el emulador (Free42) HP-42

Se pude usar la función externa COPY y obtener  las coordenadas en modo texto:   36.71558895,-4.34650828
insertándola después en un documento/nota o en el Google Map, obteniendo el marcador con el mapa del sitio, recopilando y documentando los puntos de interés al hacer senderismo o en un viaje.

Programa modificado usando
las nuevas funciones de GPS y de Tiempo
00 { 89-Byte Prgm }
01▸LBL "GPS"
02 RDX.
03 LOCAT
04 STO 01
05 R↓
06 STO 02
07 FIX 08
08 ","
09 ASTO 03
10 "    "
11 ASTO 10
12 " LAT       LON[LF]"
13 AVIEW
14 PSE
15 CLA
16 ARCL 01
17 ARCL 03
18 ARCL 02
19 ARCL 10
20 AVIEW
21 AON
22 TIME
23 ATIME
24 AVIEW
25 STOP
26▸LBL "DESCRI"
27 " [LF]DESCRI?"
28 PSE
29 CLA
30 AON
31 PROMPT
32 ASTO 15
33 AVIEW
34 END

 

LOCAT Query GPS. The location is returned as follows: latitude in X, longitude in Y, elevation in Z, and horizontal and vertical accuracy in a two-element vector in T. The latitude and longitude are given in decimal degrees, with North and East being positive; the elevation and accuracies are given in meters. If an accuracy is −1, that means that the corresponding measurement is not valid

Note: When LOCAT is first called, it activates the GPS if it wasn't active already. The GPS will not return a fix immediately; rather, the operating system will notify the app whenever a new fix is available. For the first fix in particular, this may take a long time, several seconds, or, if conditions are poor, even a minute or more. LOCAT simply returns the coordinates of the most recent fix the app has received, and if no fix at all has been received yet, it will return zeroes, and the location accuracy (the first component in the accuracy vector returned in the T register) will be -1.



Mi Programa con las funciones de Fechas

Número de días y años entre dos fechas

                              (Actualizado mayo 2023) 



FCHA=DIA.MESAÑO
0= FECHA ACTUAL
1 DIA? 06.03.2012        Fecha 1 Dia 06.032012
2 DIA? 18.08.2022        Fecha 2 Dia 18.082022
        N.dias=3,817.         Número de días
        N.Anos=10.5          Número de años
    1Dia n.Sem=2.0         Número de la semana del 1 Día (2=martes)    (Está en otra APP)



No Funciona
(Free42) UNTIL - How long until...?
This program uses the date/time functions of Free42, and thus will not work with a "real" 42S. It will, however, work on a DM42, which is where I wrote/use it.

UNTIL will tell you how many days and/or hours/minutes/seconds until some specified date/time. It's mostly just some convenience UI around DDAYS, HMS-, etc.

Run UNTIL, then use the Up and Down keys to choose one of the three menus based on whether you're comparing time, date, or both. Enter a value, and press DATE or TIME to set the reference date/time. Then press HMS, DAYS, or D,HMS to calculate the time remaining until the time/date entered, with results in hours/minutes/seconds, decimal days, or days (y) + hours/minutes/seconds (x) respectively.

Example:

How long until 8:00 AM Christmas day, 2018?

XEQ "UNTIL"
Up
12.252018 [DATE]
8.00 [TIME]
[D,HMS]
y: 63
x: 22.260972

63 days, 22 hours, 26 minutes, 9.72 seconds (results will obviously vary depending on when you run this).

00 { 324-Byte Prgm }
01▸LBL "UNTIL"
02▸LBL 01
03 SF 81
04 CF 82
05 CLMENU
06 "TIME"
07 KEY 1 XEQ 11
08 KEY 7 GTO 03
09 KEY 8 GTO 02
10 GTO 08
11▸LBL 02
12 CF 81
13 SF 82
14 CLMENU
15 "DATE"
16 KEY 1 XEQ 12
17 KEY 7 GTO 01
18 KEY 8 GTO 03
19 GTO 08
20▸LBL 03
21 SF 81
22 SF 82
23 CLMENU
24 "DATE"
25 KEY 1 XEQ 12
26 "TIME"
27 KEY 2 XEQ 11
28 KEY 7 GTO 02
29 KEY 8 GTO 01
30▸LBL 08
31 "HMS"
32 KEY 4 XEQ 14
33 "DAYS"
34 KEY 5 XEQ 15
35 "D,HMS"
36 KEY 6 XEQ 16
37▸LBL 07
38 MENU
39 STOP
40 GTO 07
41▸LBL 11
42 STO "TM"
43 RTN
44▸LBL 12
45 STO "DT"
46 RTN
47▸LBL 14
48 XEQ 20
49 →HMS
50 GTO 91
51▸LBL 15
52 XEQ 20
53 24
54 ÷
55▸LBL 91
56 RCL "U_L"
57 STO ST L
58 R↓
59 RCL "U_Z"
60 RCL "U_Y"
61 RCL "U_X"
62 R↑
63 GTO 99
64▸LBL 16
65 XEQ 20
66 ENTER
67 ENTER
68 24
69 ÷
70 IP
71 X<>Y
72 24
73 RCL× ST Z
74 -
75 →HMS
76 RCL "U_L"
77 STO ST L
78 R↓
79 RCL "U_Y"
80 RCL "U_X"
81 R↓
82 R↓
83 GTO 99
84▸LBL 20
85 XEQ 90
86 0
87 FC? 82
88 GTO 21
89 DATE
90 RCL "DT"
91 DDAYS
92 24
93 ×
94 +
95▸LBL 21
96 FC? 81
97 RTN
98 RCL "TM"
99 →HR
100 TIME
101 →HR
102 -
103 +
104 RTN
105▸LBL 90
106 STO "U_X"
107 X<> ST L
108 STO "U_L"
109 X<> ST L
110 R↓
111 STO "U_Y"
112 R↓
113 STO "U_Z"
114 R↓
115 R↓
116 RTN
117▸LBL 99
118 CLV "U_Z"
119 CLV "U_Y"
120 CLV "U_X"
121 CLV "U_L"
122 .END.


Versión TI5X  (TI-59)

Dia de la semana y días entre dos Fechas
Formato de fecha mmdd.años
Tecla A 1ª Fecha
Tecla B 2ª Fecha
Tecla C Nro, de días entre fechas
Tecla D Día de la semana
STA estadística