Enter RPN

HP 32S Lite Layout for PCalc
Login

HP 32S Lite Layout for PCalc

Motivation

HP 32S Lite screenshot

A recent reinvigoration of my off-and-on attraction to RPN calculators sparked me to make an attempt at cloning the HP-32S layout for PCalc, shown here.

Installation

For macOS, download the layout file, then double-click it to add it to the program. Go into Preferences → Layouts and find it under “iPhone.”

For iOS, you have a number of choices:

This feat accomplished, use the PCalc ⚙️ menu to create a named binding between my “HP 32S Lite” as the vertical layout for a “New Calculator,” plus your choice of horizontal layout. PCalc 4 includes two solid pairings: Retro Hex, based on the HP 16C, and Retro Scientific, on the 15C. I take these and modify them slightly to make them more HP-like, mainly by renaming “m in” to “STO” and “m re” to “RCL”.

For an experience as close to the 32S stock configuration as PCalc allows, make the following setting changes:

Here, as a purely personal esthetic choice, I prefer having “Decimal places” cranked to the max (14) with “Show trailing zeroes” set to off. I also appreciate having the number of lines set to 4, as on the [DM32].

User Interface Differences

This layout earned the moniker “Lite” for several lacunae relative to the 32S. See the companion article for the function-level details. Here, we will restrict ourselves to the UI aspects that informed the present design.

Shifted Functions Are Hidden Functions

The designer of PCalc chose UI simplicity over exposing all functions at all times, as a hardware calculator must. Because this means shifted functions are invisible until you press the shift key, I made a few design choices of my own:

  1. A shifted function must relate in some obvious way to the un-shifted function. Good design is having the arc-transcendentals as shifted versions of the trig buttons. Bad design in this context would be slavishly following HP’s choice to put HYP above R↓. That's defensible on a hardware 32S, but not within this PCalc context.

  2. HP’s choice to put the π function up above RCL on the 32S makes a loose kind of sense in that it is “recalling” the most commonly-used constant you might choose to put into memory if the calculator lacked it from the factory. It helps that this puts it on the same row as the trig functions, with which it is often used.

    This iffy design becomes outright untenable in the PCalc context: how are you ever going to remember that π is on shift-RCL in this layout? I therefore put a dedicated π button in the space HP used for R/S and its shifted PRGM function, which cannot be replicated in PCalc. While this does put it at a distance from the keys it is most likely to be used with — the trig functions — a good many other calculators cluster π with the numeric entry buttons, because that’s what it is!

    This left me without any defensible option for 🟧 RCL, but that worked out well enough because 🟧 STO was already out of the running.

    I resisted the temptation to make the shifted version of this button e (Euler’s number) on several grounds:

    • PCalc already provides e via its Constants → Mathematical menu.3
    • I don’t have much use for it outside ln() and , which this layout does provide.4
    • I didn’t want to invite confusion with HP’s E button. I might feel differently if they had called it “EEX.”
  3. The basic four-function calculator buttons should not change behavior when shifted. HP did this from the start with their HP-35 in 1972 and in a few follow-ons like the HP-10 in 1975, but they soon found themselves needing additional buttons to overload with functions. While this is defensible when everything is printed directly onto the buttons or the faceplate above them, it’s a no-go in this context.

    This layout misses the ideal: Enter changes to last 𝑥 when shifted, but I’m not willing to drop such a major feature in order to achieve a daydream design goal.

Programmability

See the companion article for the gory comparison, but from a high-level purely UI perspective, PCalc’s lack of programmability means every button on the 32S that was dedicated to this must work differently in this layout.

There is one big upside: because all the shifted functions in the third row from the bottom — , LBL/RTN, LOOP, FLAGS, and TESTS — relate to programming, their removal ended up being a huge support for my desire that all functions be discoverable. We also earned this benefit on the tape button in place of XEQ/GTO and the lack of a MEM function overloading the - button.

Menus, and Lack of Same

PCalc originated on classic Mac OS System 7 as a B&W one-button mouse-driven applet, and it still shows after the iPhone port turned it into a handheld calculator at long last. The iOS version of PCalc still does a good many things differently from the options HP chose for the 32S.

This brings us to the largest user-visible category of differences between this layout and a real HP-32S: the extensive drop-down menus in the macOS version of PCalc, giving it far more power than HP’s crude orange-shifted one-line menu system. PCalc’s layout editor doesn’t have a feature for creating custom menus to mimic the 32S ones, which then requires the user to try finding the equivalent function in PCalc’s built-in menus. Fortunately, this will often succeed.

But not always, not with so many features hidden away on menus. Given that we wish to keep button sizes reasonable within the confines of an iPhone app screen size or a modest macOS calculator window, we have to pick and choose which functions to mimic at the surface level of this layout. Going with the list from p.18 of the HP-32S Owner’s Manual, we have…

BASE (🟧 ÷)

This layout spreads this out into the radio buttons in the second row.

I did this in part because of the lack of custom menu support to directly mimic the 32S behavior, but also because my first crush was an HP-20S — _ne-e-rrd! — which made these functions more accessible, as shifted functions on the 4 and 5 keys. This goes one step further, making them top-level functions as on the HP-16C.

Alas, I was not able to justify adding a second row for a set of A-F keys. For the macOS version, this isn’t a huge lack since you can use your regular keyboard for that. For the iOS version, I recommend pairing this vertical layout with the stock Retro Hex as the horizontal layout, which lets you turn your phone to show it when you need to do hex-input things. That also gets you a more complete set of programmer’s features than this layout provides. Retro Hex is about as complete a clone of the HP-16C as this present layout is for the HP-32S; partial, but good enough to serve many purposes.

CLEAR (🟧 ⬅︎)

Clearing behavior is hard-coded within the PCalc C and backspace button implementations. Rather than try to build custom buttons that mimic the HP behaviors, I chose simply to document the closest equivalents to the 32S functions:

PCalc offers one more clearing feature that the 32S lacks. Instead of needing to hit 0 and then Enter four times to clear the stack, you can hit 🟧 to change C into SC, then hit ⬅︎. Because that combo brings up the CLEAR menu on the 32S, I can imagine you may have developed the expectation that this is a safe sequence, because you can exit out without destroying anything. Be easy: PCalc’s undo features have you covered.

DISP (🟧 E)

These modes are available through the View → Display menu on macOS and the PCalc ⚙️ button on iOS.

I would have liked to try emulating these on my layout, but PCalc’s editor doesn’t expose a command for changing these, and in any case, we gave this spot to our MODES emulation. If a later release of PCalc does add the ability to change the display mode from a custom button and I were to try making use of it, that function would have to be put somewhere else.

H↔︎HMS (🟧 8)

Without first-class date/time types, there can be no conversions among these values.

LBL/RTN, LOOP, FLAGS, TESTS (🟧 4, 🟧 5, 🟧 6, 🟧 ×)

These are all missing for reasons covered elsewhere.

MEM (🟧 -)

PCalc has all the memory. That is everything you need to know. You’re welcome.

MODES (🟧 +/-)

Because of this lack of custom menu support in PCalc, the three angle mode setting choices had to expand into the neighboring shifted spots, MEM and DISP, which didn’t make the cut in this “Lite” layout. There’s a hidden behavior in PCalc that causes a lone rad button to act as a toggle between deg and rad, but taking that path would have left me without a way to put the calculator into grad mode. I could have lived with that, but I had the space, so I chose the present radio button method instead.

Having these mode buttons is critical in PCalc because — surprise! — there is no menu item or preference setting to change this mode. If they aren’t present as buttons in the current layout, you get stuck in whichever mode the prior layout left you in.

The MODES menu on the 32S has one additional function, letting you switch the radix mark between decimal and comma. PCalc picks that up from your OS’s locale setting by default, and if you wish to override that, it gives you that option under Preferences → Advanced → Separators on macOS, with similar settings under iOS on the ⚙️ menu.

PARTS (🟧 x⇋y)

The macOS version of PCalc offers all four of these number-altering functions under its Functions → Special menu:

These are available in the iOS version via the User Functions feature, which then lets you put these functions onto one of the unused shifted button spots, if you want.

I could not justify doing that in this layout. The first problem is that I gave this menu’s single shifted spot on the 32S to the deg function as an expansion of the neighboring MODES button. The 32SII moved this menu into the upper left corner on 🟦 √x, but that doesn’t help us here. That left me with a single option — add secondary functions to the basic 4-function calculator buttons — which conflicted with other goals.

P↔︎RECT (🟧 7)

While there is no first-class command in PCalc to perform these 2D conversions on the x and y registers, I do believe the user function feature is capable of doing the job. What we lack here is motivation to violate the shifted functions principle to get it given that PCalc lacks first-class complex number support. The two topics are separable in theory, but not in practice, mooting the matter.

PROB (🟧 3)

PCalc does have Functions → Special → Combinations and …Permutations, but now we’re back to the shifted functions problem: where do we put these buttons in this layout?

SOLVE/∫ (🟧 1)

Without a first-class equation feature, there can be no equation root solver or numeric integrator.

STAT (🟧 2)

Without any statistics foundation to build on, it is no surprise that PCalc lacks all of this menu’s functions.

Designer’s Prerogative Changes

I chose to make several purely personal changes to the original HP-32S layout:

A 32S purist might choose to revert these.

Why Not the Superior 32SII?

I got into this project as a direct result of buying a SwissMicros DM32, which modernizes the HP-32SII, not the original 32S. Because each evolution along this line is a huge jump, I understand when readers ask why I chose the least capable of them to clone.

Before I answer that, I do want to point out that a small number of 32SII features did make it into this layout:

My justification for adding a dedicated percentage button applies equally to the 32SII, since it moved these 32S functions to equally untenable locations: 🟦 COS and 🟦 TAN.

The main reasons I did not go further are the same as those that ended my progress toward a perfect 32S clone; they apply equally to a 32SII.

Yet there’s one biggie remaining: PCalc doesn’t have a “3rd” function with which to emulate the 🟦 shift. Thanks to decades of hard work by James Thomson, quite a lot of these 32SII functions are present in other forms. An excellent example is all those unit conversions HP added above the 32SII number keys, which the macOS version of PCalc tucks up into its Conversions menu, paralleled by its touch-friendly A>B button.

If a future version of PCalc does add a “3rd” feature, it would need to be accompanied by a whole raft of new features to allow a potential “HP 32SII Lite” layout.

Improvements Welcome

Readers are welcome to try showing up the author by sending in improved versions and ideas for same. 🤓

The “Forum” link above works, but it isn’t closely monitored for new posts. On the plus side, it does allow anonymous posting.

If you are on the MoHPC Forums, you may PM me as @tangent.

I have made the author of PCalc aware of this third-party layout, and he has expressed an openness to the idea of adopting it into a future version of the program. If that ever happens, I will consider this project “closed” to future modifications in deference to what will then be a first-party feature. In the meantime, we may iterate freely.

License

This work is © 2025 by Warren Young and is licensed under CC BY-NC-SA 4.0


  1. ^ It’s 128 levels otherwise, which sounds like a pure benefit of Moore’s Law advances since the 1980s until you realize several things. First, the stack size affects how commands like “roll” work. Second, when you give up those 124 extra slots, it implicitly tells PCalc to change from the less-helpful {x, y, 1, 2} register naming scheme to HP’s {X, Y, Z, T} scheme. Third, there is a limit to human memory; even a forgetful person limited to a single-line view of the stack can keep the contents of four registers in mind over the span of a calculation, but with 128, you’d have to be a mnemonic prodigy to avoid keeping the stack window handy. Fourth, the benefit of a large stack mainly benefits user programs, which PCalc lacks.
  2. ^ The 32S predated RPL-style “entry RPN.”
  3. ^ The layout editor does let you call on this menu from a customized layout, so it’s not a matter of ”PCalc cannot do this” but “I choose not to.”
  4. ^ Thus the hacky way of getting e on all of these calculators: 1Enter
  5. ^ The 32S did have x! but it was hidden away on PROB.