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. One engine supports several calculator modes. The default is 16C (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

The software 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. The emulator reproduces both display modules — 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 the hardware, desktop emulator and browser handle input and display around it.

Designing the hardware

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 (with the stabilizer and hot-swap layout recently finished), 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.

I am assigning pinouts and adding them to the MCU schematic. I also regenerated the keyboard board for the 2U ENTER key. The boards still need work before fabrication. 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.