The Calcumaker mark: a gold hardware badge with a red seven-segment 16.

Every base. Every digit.

A programmer's RPN calculator
with a stack you can see.

Calcumaker is an open-hardware line of programmer's and technical RPN calculators. The first device, Calcumaker 16, carries the HP-16C tradition — hex, octal, binary, bitwise operators, selectable word sizes — and extends it with math that is correct to as many digits as you ask for.

Status: a work in progress. The engine and the browser emulator run today; the Calcumaker 16 boards are still in bring-up. Nothing is for sale — this is an open project you can read, build and fork.

What makes it different

A programmer's core

HEX / DEC / OCT / BIN entry, bitwise and shift/rotate operators, selectable word size, and two's-complement, one's-complement or unsigned integer modes. The HP-16C idea, done properly.

Arbitrary precision, no fallback

GNU MP for unbounded exact integers. MPFR for correctly-rounded floating point and transcendentals. MPC for complex numbers. One numeric path — the answer doesn't change depending on how you got there.

The stack, on glass

Three rows of sixteen real 7-segment digits show the top of the RPN stack at once, on their own angled board. No menu-diving to see what you're operating on.

Swap the display

An alternate 96 × 24 RGB dot-matrix module — 2,304 addressable LEDs driven by an RP2040 — drops onto the same connector. Full alphanumerics, scrolling and colour the 7-segment can't do.

Keys you want to press

Fifty full-size Cherry MX switches in a wide 5 × 10 layout, per-key diodes, annunciator LEDs, and a dedicated STM32G0 scanner so the matrix never crosses the board stack.

Four personalities

16C, 15C, SCI and FIN. One engine, different key layers and display conventions — chosen at runtime, printed on the keycaps in gold and blue.

Two displays, one connector

On Calcumaker 16 the display lives on its own angled PCB. Both modules speak the same protocol, so the calculator doesn't care which one you fit. These are screenshots of the emulator rendering the real segment data.

The Calcumaker 16 emulator showing DEADBEEF on a red LED seven-segment display in hex mode, above a full Cherry MX keypad.
7-segment — 3 × 16 digits, driven by three TM1640s. Red, green or amber LED, cyan VFD, or grey LCD skins.
The same emulator switched to the RGB dot-matrix module, rendering a value as glowing coloured LED dots.
RGB dot-matrix — 96 × 24 pixels, 2,304 WS2812s and a 5 × 7 font, rendered pixel-for-pixel as the firmware would.

Under the hood — Calcumaker 16

The 16 names this device, not the line: it's the base-16 / HP-16C heritage. It leaves room for siblings with different key layers and displays.

Processor
STM32U575RGT6 — Cortex-M33, 1 MB flash / 768 KB RAM, ultra-low-power
Firmware
Rust, no_std, async via embassy
Math
GNU MP + MPFR + MPC, cross-built for the target — a single numeric path
Main display
3 rows × 16 digits · 48 × FJ5161AH 0.56″ · 3 × TM1640
Alt display
96 × 24 RGB · 2,304 × XL-1010 (WS2812) · RP2040 with PIO
Keyboard
50 × Cherry MX, 5 × 10 matrix, STM32G0 scanner
Power
1S Li-ion, USB-C charging, buck-boost 3V3 rail + gated 5V display rail
Boards
Three-board KiCad 10 stack: MCU/PSU, keyboard, angled display

The whole calculator, in your browser

Not a reimplementation. The Calcumaker 16 emulator compiles the real engine to WebAssembly — the same Rust core, linked against GNU MP, MPFR and MPC cross-built with wasi-sdk. Key presses go through the same matrix and keymap; the display is painted from the same segment bytes the hardware would push to its drivers. It all runs client-side.

Open, and meant to stay that way

The firmware is AGPL-3.0 — compatible with the LGPLv3 libraries it depends on. The hardware is CERN-OHL-S v2, strongly reciprocal, to match. Schematics are generated from data manifests and live in the repo alongside the engine, the emulator and the board firmware.

More projects from theatr.us