# HP-41

La serie HP 41 eran calculadoras RPN de mano, programables, expandibles, fabricadas por Hewlett-Packard desde 1979 a 1990. El modelo original, el HP 41C, era el primero de su clase en ofrecer capacidades de pantalla alfanumérica. Más adelante vinieron el HP 41CV y el HP 41CX, ofreciendo más memoria y funcionalidad.

## "Revolución" alfanumérica

La pantalla alfanumérica LCD de la HP 41C revolucionó la manera en que se podía usar una calculadora, proporcionando un entorno amigable al usuario (para su tiempo) y expandibilidad (funciones no asignadas en el teclado podrían ser deletreadas alfabéticamente). Al usar una exhibición alfanumérica, la calculadora podía decir al usuario qué estaba pasando: podía mostrar mensajes de error significativos, como "ZERO DIVIDE" (División por cero) en vez simplemente de un cero parpadeando y podía también darle mensajes al usuario solicitando la entrada de un dato (como por ejemplo, "ENTRE EL RADIO"), en vez solo mostrar un signo de interrogación.
Las calculadoras anteriores necesitabann una tecla, o una combinación de ellas, para cada función disponible. La HP 67, por ejemplo, tenía tres teclas cambio; las calculadoras de la competencia de Texas Instruments tenían dos (2nd e INV) y sobre las 50 teclas. La HP 41C tenía un teclado relativamente pequeño, y solamente una tecla de cambio, pero proporcionó cientos de funciones. Cada función que no fue asignada a una tecla se podría invocar por medio de la tecla XEQ, EXEQTE – "execute” (ejecutar) y deletreada por completo, por ejemplo XEQ FACT para la función factorial.
La calculadora tenía un modo especial de usuario donde se podía asignar cualquier función a cualquier tecla si las asignaciones por defecto proporcionadas por HP no fueran adecuadas a una aplicación específica. Para este modo, la HP 41C venía con las plantillas de teclado en blanco, es decir, cubiertas de plástico con agujeros para las teclas, de tal manera que el usuario pudiera anotar las funciones de las teclas personalizadas. Hewlett-Packard incluso vendió una versión de la calculadora donde casi ninguna tecla tenía el nombre de la función impreso en ella, lo cual tenía sentido para usuarios que estuvieran usando la HP 41C solamente para cálculos a la medida, y por lo tanto, no necesitando para nada la disposición estándar de las teclas.
La exhibición alfanumérica también facilitada grandemente la edición de programas, a medida que las funciones eran deletreadas. Las calculadoras solo numéricas exhibieron los pasos de los programas como una lista de números, cada número mapeado a una tecla del teclado. La codificación de funciones a los correspondientes códigos numéricos, y viceversa, fue dejado al usuario, teniendo que buscar las combinaciones códigos de funciones en una guía de referencia. Además de esto, el usuario tenía que mantener mentalmente los códigos de función separados de las constantes numéricas en el listado del programa.
La HP 41C exhibió cada carácter en un bloque que consistía en 14mantenersegmentos que se podían encender o apagar, usaba una pantalla de catorce segmentos, similar a la mucho más común pantalla de siete segmentos que se pueden usar para exhibir solamente dígitos. La HP 41C usaba, en vez de las pantallas LED omnipresentes de la época, una pantalla de cristal líquido para reducir el consumo de energía.
Mientras que esta pantalla permitía la exhibición de letras mayúsculas, dígitos, y algunos caracteres de puntuación, algunos diseños de caracteres era necesario ser torcidos arbitrariamente, como por ejemplo para distinguir la letra "S" del número "5", además, con esta pantalla de 14 segmentos, las letras minúsculas eran ilegibles (la HP proporcionó solamente la exhibición de las letras minúsculas desde la "a" hasta la "e"). El competidor de HP, Sharp, cuando introdujo la PC-1211, usó una pantalla de matriz de puntos de 5x7 puntos, y exhibió los caracteres como los vemos hoy en las pantallas de computadora, y, de hecho, como muchas pantallas LCD en varios sistemas embebidos. Esto fue usado más adelante por HP con la computadora de mano HP 71B.

## Expandibilidad

Ver el artículo principal HP-41 Extension Module
Las funciones de la calculadora podían ser expandidas agregando los módulos en la parte posterior de la máquina. Cuatro ranuras estaban disponibles para agregar más memoria, paquetes preprogramados de solución que contenían programas que cubrían ingeniería, topografía y mediciones, física, matemáticas, finanzas, juegos, etc. Las extensiones del hardware incluyeron una impresora térmica, un lector de tarjeta magnética (compatible con la HP 67 vía software de conversión), y un lápiz lector de código de barras.
Otro módulo, conocido como el Interface Loop permitió la conexión de más periféricos: impresoras más grandes, unidades de cinta de microcassette, unidades de disquete de 3,5 pulgadas, interfaces de comunicaciones RS-232, interfaces de exhibición video, etc. El Interface Loop también podía ser usado con las computadoras HP 71B , HP 75 y HP 110.

## HP 41CV y CX

Muchos usuarios habían usado los cuatro puertos para expansión de memoria, no dejando espacio para otros módulos. HP diseñó el Quad Memory Module (Módulo de Memoria Cuádruple) con cuatro veces la cantidad de memoria, proporcionando la máxima memoria disponible y dejando disponibles tres puertos vacíos. La HP 41CV (siendo V el número romano para 5) incluyó este módulo de memoria en la tarjeta madre, proporcionando así cinco veces la memoria de la HP 41C, y dejando disponibles las cuatro ranuras de expansión.
La arquitectura interna prohibió la adición de más memoria, así que HP diseñó un módulo extendido de memoria que podía ser visto como un almacenamiento secundario. No se podía acceder directamente a los datos, pero se podían transferir los datos desde y hacia la memoria principal. Para la calculadora (y al usuario), los datos localizados en la memoria extendida se veían como archivos en un disco duro para una PC.
El modelo final de la HP 41, la HP 41CX, incluyó memoria extendida, un módulo de tiempo incorporado, y funciones extendidas. Fue introducida en 1983 y discontinuada en 1990.

## Comunidad de la HP 41C y programación sintética

Una comunidad grande de usuarios se desarrolló alrededor de la HP 41C. Los entusiastas alrededor del mundo encontraron nuevas formas de programación, crearon sus propios módulos de expansión, y aceleraron el reloj (ver overclocking).
Uno de los descubrimientos de la comunidad fue que era posible explotar un bug en el editor del programa para asignar funciones extrañas a las teclas. La función más importante fue conocida como el "bybyte jumper", una manera de dar pasos parcialmente a través de instrucciones de programación y de editarlas de maneras que de otra forma no eran permitidas. El uso de las instrucciones que resultaban fue llamado programación sintética.
Por medio de las instrucciones sintéticas, un usuario podía acceder la memoria reservada para el sistema operativo y hacer cosas muy extrañas, incluyendo bloquear completamente la máquina. Hewlett-Packard no apoyó oficialmente la programación sintética, pero tampoco hizo nada para prevenirla, y eventualmente incluso proporcionó documentación interna a los grupos de usuarios.
Cuando algunos fanáticos estudiosos se preocuparon en documentar la metodología y las posibilidades de la programación sintética en la HP-41 se estableció una función llamada "byte grabber" que se asignaba a una tecla mediante un procedimiento precisamente detallado. Dicha función, insertada un paso antes de una función multibyte, "roba" el primer byte de esa función siguiente y los bytes reagrupados eran interpretados por el sistema operativo como una nueva función.
Los héroes de esta cruzada, entre otros, han sido Richard Nelson, Keith Jarret y otros.
A medida que HP hizo evolucionar la ROM y el sistema operativo, la línea HP-41C evolucionó a la HP-41CV y luego a la HP-41CX. Sin embargo la casa Hewlett-Packard nunca "corrigió" el bug dajando la posibilidad de explotar muy a fondo las posibilidades de esos dispositivos.