HP Saturn (microprocessor)
The Saturn family of microprocessors was developed by Hewlett-Packard in the 1980s for programmable scientific calculators/microcomputers. The original Saturn chipset was first used in the HP-71B hand-held BASIC computer, introduced in 1984. Later models of the family powered the popular HP-48 series of calculators, among others. The replacement for the HP-48, the HP-49 series initially used the Saturn CPU, but starting with the HP-49g+ model the calculators use ARM CPUs that emulate the Saturn architecture.
The Saturn microprocessor is a hybrid 64-bit / 20-bit CPU hardware-wise but acts like a 4-bit processor in that it presents nibble-based data to programs and uses a nibble-based addressing system. The main registers A, B, C, D, along with temp registers R0, R1, R2, R3, and R4 are a full 64-bits wide, but the data registers D0 & D1 are only 20-bit. External logical data fetches are transparently converted to 8-bit physical fetches. The processor has a 20-bit address bus available to code but due to the presence of the high/low nibble selection bit, only 19 bits are available externally.
The Saturn has four general-purpose and five scratch registers that are 64 bits wide. Data in the general-purpose registers can be accessed on nibble boundaries and used for calculations, whereas the scratch registers allow only load and store operations. The 64 bits (16 nibbles) can hold BCD-formatted coded floating point numbers composed of a Plus and minus signs nibble, 12 mantissa digits and a 3-digit exponent stored in 2's complement format (±499). The use of BCD instead of straight binary representation is advantageous for calculators as it avoids rounding problems that occur on the binary/decimal conversion.
For optimum memory usage efficiency, the Saturn's addresses are also nibble-based. The three pointer registers (including the program counter) and address data paths are 20 bits wide, therefore the Saturn architecture can address 1 M nibbles = 512 K bytes. Beyond that size (e.g. in the 48GX), bank switching is used.
In both the HP-48S/SX and G/GX series, the Saturn CPU core is integrated as part of a more complex integrated circuit (IC) package. These packages have codenames inspired by the members of the Lewis and Clark Expedition. The codename of the IC is Clarke in the S/SX, after William Clark, and Yorke in the G/GX, after Clark's manservant. The previous series of Saturn-based ICs were codenamed Lewis, after Meriwether Lewis.
Chipsets and applications
The original Saturn CPU gave its name to the entire architecture. Later chips had their own code names:
|CPU codename||Used in calculator models||Properties|
|Saturn||HP-71B, HP-18C, HP-28C||640 kHz|
|Bert||HP-10B, HP-20S, HP-21S||640 kHz, 10 KB ROM, 256 Bytes RAM, LCD driver|
|Sacajawea||HP-14B, HP-22S, HP-32S, HP-32SII||640 kHz, 16 KB ROM, 512 Bytes RAM, LCD driver|
|Lewis||HP-17B, HP-19B, HP-27S, HP-28S, HP-42S||1 MHz, 64 KB ROM, LCD driver, memory controller, IR control|
|Clarke||HP-48SX, HP-48S||2 MHz, LCD controller, memory controller, UART and IR control|
|Yorke||HP-48GX, HP-48G, HP-38G, HP-39G, HP-49G||3.68 MHz, LCD controller, memory controller, UART and IR control|
|New-Yorke||HP-48GX prototypes||8 MHz, LCD controller, memory controller, UART and IR control. This was only made as an internal HP prototype and never released in the wild.|
|Apple series (since the previous cpu was 'new yorke'!)||HP-49GII, HP_50g (and after), HP39GII and others...||Virtual version of the Yorke cpu emulated by a 70Mhz ARM cpu|
- A Guide to the Saturn Processor
- Summary information in the Museum of HP Calculators
- Fernandes, Gilbert (2005-07-16). Eric Rechlin, ed. Introduction to Saturn Assembly Language (ZIP, PDF) (Third ed.). hpcalc.org. Retrieved 2009-02-17.
- See also Paul Courbis's books which contain details about Saturn programming