The Museum of HP Calculators

# The Saturn Processor

The Saturn Processor was originally used in the HP-71B. It and its descendants have been used in numerous HP handhelds included the HP-28C/S, HP-48S/G(X) and all current handhelds. The lower end models use slower forms of the processor with on-chip RAM and ROM.

The Saturn uses a 20-bit (5-nibble) address space. Memory is nibble addressable for more compact storage so the processor's address space is 1 meganibble or one-half megabyte. The HP-48 calculators use bank switching to allow access to more memory.

## Word Size

The Saturn has a 4 bit (nibble) external word size. Using a small wordsize keeps the number of external signal paths low, which allows denser packaging. Also, a nibble is the size of a single digit in the Binary Coded Decimal (BCD) numeric format that HP handhelds use. Thus, nibbles are both convenient and efficient for a calculator.

## Registers

The Saturn has four 64-bit general-purpose registers. When used to store floating point numbers, a 64-bit register allows twelve digits for the mantissa and two digits for the exponent, leaving two nibbles for the signs of the mantissa and exponent. (Typically, however, the exponent sign nibble is combined with the exponent in a twos complement manner allowing an exponent range of +/- 499.)

Each 64-bit register may be accessed as a whole or in parts. Predefined parts include, the mantissa, the sign, the exponent sign, the exponent, the low byte, and the low 20 bits (the size of an address.) In addition, a field select register, allows registers to be subdivided in other ways.

The Saturn also contains three 20-bit pointer registers including the program counter, a 16 bit input register, a 12 bit output register, and several flags registers.

In addition, there are five 64-bit scratch registers which provide a handy place to save the general-purpose registers during calculations. Data can be moved in and out of these registers but not manipulated in other ways.

## Instructions

The Saturn contains instructions that one would expect to find in a small microprocessor including various types of moves, input/output basic math and logic, comparisons, (un)conditional jumps, calls etc. These instructions often come in many forms, for example the unconditional jump is available in forms that take 3, or 4 nibble relative addresses or 5 nibble absolute addresses. In addition, register direct (register points to next code address) and indirect (register points to a pointer to the next code address) jumps are available. Several assemblers are available and at this time, a C compiler is under construction.

## Versions

Besides the original Saturn there were later versions called the Lewis (1Mhz processors used in the 28C/S, and higher end Pioneers), Clark (2Mhz for HP-48S/SX), Yorke (4Mhz for HP-48G/GX) and Bert (640Khz processors used in lower end Pioneers.) All of these are Saturn architecture processors.

## Programming and older CPUs

Additional information on the register layout and programming model may be found on the CPU and programming page.