A status update on Calcumaker 16, the project that’s been eating my non-astrophotography evenings: a wide-format, full-size Cherry MX programmer’s RPN calculator in the HP-16C tradition — hex/octal/binary/decimal entry, bitwise operators, selectable word sizes — but extended far past what any Voyager could do, with arbitrary-precision math: GNU MP for big integers, MPFR for correctly-rounded floating point and transcendentals, MPC for complex numbers. Answers are correct to as many digits as you ask for. Switchable personalities layer on top of one superset engine: 16C is the grounding default (a faithful programmer’s machine where √-1 is Error 0, just like the real one), with 15C, SCI, and FIN personalities selectable in SETUP.

The software stack is complete

Everything above the metal exists and runs today:

  • calcumaker-core — the whole calculator engine as a no_std Rust library over custom no_std FFI bindings to GMP/MPFR/MPC. It’s host-testable: cargo test, and a REPL example runs the full engine at a terminal. Everything lives in the calcumaker/calcumaker repo (hardware, firmware, core).
  • Firmware for the calculator and both display modules — the multi-row 7-segment RPN stack display and a 96×24 RGB dot-matrix module — plus a desktop emulator that binds the same core.
  • A browser emulator at web.calcumaker.co, fully client-side, running the real engine compiled to WebAssembly via WASI. Both display modules are mirrored — the 7-segment display as SVG with LED/VFD/LCD skins, the dot matrix on canvas with the 5×7 font ported straight from the matrix firmware (calcumaker/calcumaker-web). It’s a thin I/O binding around calcumaker-core; no calculator logic lives in the web app. CI keeps it pinned to the engine automatically.

That last point is the design rule for the whole project: the core is the only place calculator behavior lives, and every surface — hardware, desktop emulator, browser — is just I/O around it.

The hardware is in the thick of it

The physical calculator is a KiCad 10 three-board split design:

  • MCU board (bottom of the stack) — STM32U575 brain, USB-C charging and buck-boost PSU, clock, SWD, and the display power rail + level shifting. A low-power STM32 keeps it alive between keystrokes on battery.
  • Keyboard board — the 49-key Cherry MX matrix with a proper 2U ENTER (stabilizer and hot-swap footwork recently sorted), per-key diodes, and annunciator LEDs, mezzanine-stacked directly above the MCU board.
  • Display board — the multi-row 7-segment RPN stack display and its drivers, mounted at an upward angle and cabled back over FFC.

This is the part currently in motion: pinouts are being assigned and folded into the MCU schematic, the keyboard board was just regenerated for the 2U ENTER, and the boards are converging toward fab. Hardware is CERN-OHL-S v2; the firmware is AGPL-3.0.

If you want to poke at it before there’s metal, the browser emulator is the real engine — real keyswitch feel not included. Sources are on GitHub under the calcumaker org: open hardware, open firmware, open web.