Tools and materials used:
- Raspberry Pi Pico
- 1602 LCD display (w. i2c backpack)
- breadboards and soldering iron
- perfboard, w. 22awg wire
- level shifter module (only using 2 out of 4 lines for i2c)
- two 3x4 and one 4x4 aliexpress keypads (modified to jam as close together as possible)
- 3d Printer
- Glue gun
- PTouch Labelmaker
- Laser printer (for keypad overlay), highlighter pens
- Thonny with Circuitpython 7.2.3
Differences between this and a real 16C:
- maximum 128 bit words (vs 16C 64 bit)
- 16 character display, with eight 16 character windows, scrolling with shift-g < and > keys
- 'Enter' key is standard size, not double length like a real 16C
- Has a splash screen that gives you the current version number
- Has a timeout feature that turns off the LCD after 5 minutes (hard coded)
- The calculator is always 'running', ON and OFF simply turns off the display and backlight
Python is well suited to this application given a full suite of excellent string manipulation and math libraries, adafruit libraries, etc. Execution speed is not an issue.
I was helped a lot during development with access to a couple of different software emulators out there (http://www.hp16c.org/ and https://stendec.io/ctb/rpn_prog.html), especially when I can see what's happening with the stack. The manual https://literature.hpcalc.org/community/hp16c-oh-en.pdf was also essential reading.
An early version of this project got a mention on the Raspberry Pi blog https://www.raspberrypi.com/news/replica-hp-16c-coding-calculator/ and on Adafruit's Python on Hardware newsletter https://blog.adafruit.com/2022/10/19/icymi-python-on-microcontrollers-newsletter-ladyada-at-espressif-devcon-this-week-circuitpython-8-beta-2-and-more-circuitpython-icymi-raspberrypi-micropython-raspberry_pi/
Hey, I like it! I've built a couple of HP-25 replicas myself, but as a challenge I used a Z80 (not used in the originals, but released about the same time). Couple of questions, if you don't mind.
Do you mind posting your git link? Or did I miss it?
Do you run the original ROM code in a simulator, or did you write a new emulation?
My next project may be a 16c clone, but I'd like to run the orignal ROMs.
My project: https://github.com/eshazen/retro-25