The Saturn family of 4-bit microprocessors was developed by Hewlett-Packard in the 1980s for programmable scientific calculators/microcomputers. It succeeded the Nut family of processors used in earlier calculators. The original Saturn chipset was first used in the HP-71B hand-held BASIC-programmable computer, introduced in 1984. Later models of the family powered the popular HP 48 series of calculators, among others. The HP 49 series initially used the Saturn CPU as well, until the NEC fab could no longer manufacture the processor for technical reasons in 2003. Therefore, starting with the HP 49g+ model in 2003, the calculators switched to use a Samsung S3C2410 processor with ARM920T core (part of the ARMv4T architecture) to run an emulator of the Saturn architecture in software. In 2000, the HP 39G and HP 40G were the last calculators introduced based on the Saturn hardware. The last calculators based on the Saturn emulator were the HP 39gs, HP 40gs and HP 50g in 2006, as well as the 2007 revision of the hp 48gII. The HP 50g, the last calculator utilizing this emulator, was discontinued in 2015 when Samsung stopped producing the ARM processor it was based on.
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.
Saturn 64 bit register format:
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 BCD 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 48G/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 instruction set architecture. Later chips had their own code names:
|Level||Processor codename||Used in calculator models||Properties|
|0||Saturn (1LF2)||HP-44A, HP-71B (1984)|
|?||(1LJ7)||ThinkJet printers (1984), including one built into HP Integral PC (1985)|
|1||Saturn (1LK7)||HP-18C (1986), HP-28C (1987), HP-71B||640 kHz, more instructions|
|Bert (1LU7)||HP-10B (1988), HP-20S (1988), HP-21S||640 kHz, 10 KB ROM, 256 bytes RAM, LCD driver|
|Sacajawea (1LR3, 1LE2)||HP-14B, HP-22S, HP-32S (1988), HP-32S+, HP-32SII (1991)||640 kHz, 16 KB ROM, 512 bytes RAM, LCD driver|
|Lewis (1LR2, 1LT8)||HP-17B (1988), HP 17BII (1990), HP-19B (1988), HP 19BII (1990), HP-27S (1988), HP-28S (1988), HP-42S (1988)||1 MHz, 64 KB ROM, LCD driver, memory controller, IR control, 3V CMOS|
|2||Clarke (1LT8)||HP 48SX (1990), HP 48S (1990)||2 MHz, LCD controller, memory controller, UART and IR control, more instructions|
|3||Yorke (1LT8)||HP 38G (1995), HP 38G+ (1998), HP 39G (2000), HP 40G (2000), HP 48GX (1993), HP 48G (1993),[nb 1] HP 48G+ (1998), HP 49G (1999)||3.68-4 MHz, LCD controller, memory controller, UART and IR control, manufactured by NEC, more instructions, sometimes also known as Saturn 5 platform|
|New-Yorke||HP 48GX prototype||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.|
|4||Apple series (Big Apple, Mid Apple, Little Apple)||hp 39g+ (2003), HP 39gs (2006), HP 40gs (2006), hp 49g+ (2003), hp 48gII (2003/2007), HP 50g (2006)||Virtual version of the Yorke CPU emulated by members of the 48/75 MHz Samsung S3C2410 processor family with ARM920T core (of the ARMv4T architecture) aka Saturn+ with additional virtual instructions|
- Kuperus, Klaas (2015-03-04). "HP 50g: End of an era". Moravia. Archived from the original on 2015-04-02.
- Kuperus, Klaas (2015-03-06). "HP 50g not so good news?". Moravia. Retrieved 2016-01-01.
- Wessman, Tim (2015-12-26). "Windows 10 won't allow HP 50g USB drivers to be installed". HP Museum. Retrieved 2016-01-01.
- "Introduction to Saturn Assembly Language (PDF)" (P104,"56.1 Real number"). If the exponent is negative, the exponent is encoded as "1000 - ABS(exponent)".
- Mastracci, Matthew (1998) . "Guide to the Saturn Processor (With HP48 Applications)". 1.0b. Archived from the original on 2016-08-06. Retrieved 2006-05-03.
- Courbis, Paul; Lalande, Sébastien (2006-06-27) . Voyage au centre de la HP28c/s (in French) (2 ed.). Paris, France: Editions de la Règle à Calcul. OCLC 636072913. Archived from the original on 2016-08-06. Retrieved 2015-09-06.      
- Courbis, Paul; Lalande, Sébastien (2006-06-25) . HP48 Machine Language - A Journey to the Center of the HP 48s/sx. Translated by Cannon, Douglas R. (2nd ed.). Corvallis, Oregon, USA: Grapevine Publications, Inc. OCLC 34148948. Retrieved 2015-09-06.      
- Courbis, Paul; Lalande, Sébastien (2006-06-25) . Voyage au centre de la HP48 s/sx. 3.02 (in French) (3rd ed.). Paris, France: Editions Angkor. ISBN 2-87892-003-1. OCLC 29640044. Retrieved 2015-09-06.       
- Courbis, Paul (2006-06-25) . Voyage au centre de la HP48 g/gx. 3.05 (in French) (3rd ed.). Paris, France: Editions Angkor. ISBN 2-87892-006-6. OCLC 29640044. Archived from the original on 2016-08-06. Retrieved 2015-09-06.            
- Courbis, Paul; de Brébisson, Cyrille (March 1994). Le compagnon de Voyage de la HP48 G/GX (in French). Paris, France: Editions Angkor. ISBN 2-87892-007-4. Archived from the original on 2016-08-06. Retrieved 2015-09-06. 
- Fernandes, Gilbert (2005-07-16). Eric Rechlin, ed. Introduction to Saturn Assembly Language (ZIP, PDF) (3rd ed.). hpcalc.org. Archived from the original on 2016-08-06. Retrieved 2009-02-17.