The HP 42S accompanied me throughout my university career, secretly designed for me some function graphs and with its 7KB alphanumeric also managed to make me keep some secret notes.
I bought it on December 5, 1992, paying it 229,000 lire, a year before I started university (about 200€ now considering inflation * ).
I risked losing her towards the penultimate year of University, but the fate (and honesty of a colleague of mine) brought her back to me. It still works, and lately I have discovered that it has an internal “monitor” and the ability to set a “FAST” mode.
The HP 42S is quite easy to use, allows you to use mixed data types (e.g. matrices, complex numbers, dry text, etc.) and provides everything you need for a general-purpose engineer (numerical integrations, solvers, etc.).
There is a new implementation based on the open source Free42 (DM42) software but it costs a huge amount, more than the HP Prime which is the latest version of this generation of calculators.
The hardware design is truly refined, and the processor is able to operate natively with the required precision (and this can be seen from its computational speed).
Microprocessor: The Saturn
The HP 42S uses a chip called Saturn (at 1Mhz) that thinks internally at 4bit (nibble) but has 64bit registers (here you will find a somewhat elementary manual, poorly written but at least lists all the instructions of Saturn).
It is a chip common to all HP calculators of the time. The operating system of the HP42S (64KB ROM) is also derived from the previous calculators.
At one point (in 2003) HP implemented a Saturn emulator with an ARMv4 chip as Samsung could no longer produce it (!) with its factories. Of course, the ARMv4 also came out of production and therefore the Saturn architecture was officially abandoned around 2015, when the HP Prime was born which can be found around 150 € and still contains the RPN system with reverse Polish logic, much loved by admirers of HP calculators (myself included).
The Saturn routes 5 nibbles (20bits) and is based on 4bit serial buses.
It can then route up to 512 KB of “normal” RAM or better 1 MB of nibbles
A-D — 4 generic 64bit registers (GPR- General PuRpose registers that are sophisticatedly structured)
R0-R4 4 support registers on which calculations cannot be performed (always at 64bit)
D0, D1 two 20bit pointer registers
RTSK -> “Return STacK”, 8-position hardware stack at 20bit
The architecture is “little endian” like the x86 and 6502, so the less significant nibbles are stored before the most significant ones.
In addition, the calculator reasones using BCD logic (binary-encoded decimals) whose greatest usefulness is that you can use them without having to convert between binary and decimal and have rounding problems.
The “Saturn” is able to reason in BCD natively, and with 64bit can handle a dozen significant digits and a three-digit exponent (15 nibbles):
In this scheme, a number can have a sign (S) a mantissa of 12 digits (M) and three of exponent (X) with limit +/- 499.
GDR reigster can contain a 20-bit address (also).
Opcodes are variable-length (typically 2 bytes – 4 nibbles). and the architecture is vaguely log-based (you can’t do a direct RAM-to-RAM operation).
The hardware stack is an aggressive and somewhat limiting choice, but it certainly makes the Saturn faster.
Here you will find more technical details on the memory map.
As you notice, RAM takes up a 32Kb addressing space and so there are also those who have found a way to expand memory to 32Kb.
Open Source Implementations
For those who love HP42-S there is a very nice free implementation called Free42, which re-implements all the functions without emulation, and of which you will find the apps for iPhone and Android for free.
Bonus: Black jack game
- Wikipedia Saturn refrence (screenshot taken from there).
- ROM DUMP software (a HP48 is needed :( )
(*) On eBay, it’s $200 and up.