

Retro-tech HP-25 calculator clone using Z80
- Size
- 116.8 × 147.3 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 52
- Nets
- 87
- Pads
- 342
- Tracks, vias
- 937, 191
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 9 May 2020
- Updated
- 19 Feb 2025
Overview
Cpu is an open-source printed circuit board by eshazen, from the eshazen/retro-25 repository on GitHub. It is a 2-layer board of 116.8 × 147.3 mm with 52 parts on 87 nets, routed with 937 tracks and 191 vias.
It is built around the 74HC14, 74LS139PC and 74LS32SC, with the 74LS374PC, AT28C256-15PU and IDT71256SA12Y among its other parts. Its parts include 16 capacitors, 11 ICs, 6 resistors, 5 diodes and 4 connectors. It belongs with the retro computing and games and interfaces and adapters boards of this library.
Main components
674HC14
SOP-14-40℃~+85℃ 1.9V、3.98V、4.4V、5.48V、5.9V 100mV、260mV、260mV 20uA 25ns@4.5V,50pF 2V~6V 6 74HC Noise suppression function Schmitt trigger SOP-14 Inverters ROHSJSMSEMIInverters74LS139PC
PDIP-1622ns 74LS 8mA Decoder Single Supply PDIP-16 Signal Switches, Multiplexers, DecodersonsemiSignal Switches, Multiplexers, Decoders74LS32SC
-- Logic Gates ROHSTexas InstrumentsLogic Gates74LS374PC
PDIP-200ns 0℃~+70℃ 1 20ns 28ns@5V,45pF 35MHz 4.75V~5.25V 45mA 74LS Series 8 D-Type Rising Edge Tri-State PDIP-20 Flip FlopsonsemiFlip FlopsAT28C256-15PU
PDIP-28-40℃~+85℃ 10 Years 100,000 cycles 10ms 256Kbit 4.5V~5.5V Hardware write protection function、Software write protection function、Built-in error correction code (ECC) function Parallel Port (Parallel) PDIP-28 EEPROM ROHSMicrochip TechnologyEEPROMIDT71256SA12Y
28-SOJ28-SOJ SRAMRenesas ElectronicsSRAM
README
README.mdretro-25
Retro-tech HP-25 calculator clones using Z80
<img src=https://github.com/eshazen/retro-25/blob/master/talks/HCC2020/figs/all3_800.jpg width=600>
|
|
|
News!
2023-01-02
This is branch "ScopeClock". Building up another CPU board for used as a general purpose computer for the scope clock, along with the DAC/Interface board from that project, which (whew!) has an actual UART for the serial port.
2021-01-01
Time for something new! The VFD HP-25 is cool and all, but I've lusted after an HP-97 most of my life, plus I love nixie tubes! Starting to think about a nixie-display HP-97 emulator. Probably no card reader, but a small printer is certainly doable. Inspiration from Oliver De Smet (archived elswhere in this repository just in case):
- https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/archv020.cgi?read=204526
- https://sites.google.com/site/olivier2smet2/hp_projects/hp97
2020-10-10
I gave a talk at the HPCC 2020 conference on these calculators. You can see my slides here: http://www.hpcc.org/conferences/HPCC2020/HPCC2020_04_Retro_25_revC.pdf
Built a new version with VFD display tubes!
See notes.
What's here
hardware has the design files for the CPU and keyboard/display boards
firmware/bootloaderhas a small serial/flash bootloader which should be programmed at $0000firmware/calchas the main calculator operating firmwarefirmware/umonhas a simple Z80 monitor I wrote for debuggingfirmware/basichas a hacked version of MS BASIC (4K integer version from 1978)utilhas some utility software, including: firmware loader, program loader, stack/register clip utility, simple assembler for HP-25 programs, and some template and example programs
Hardware
The hardware consists of two boards, a CPU board and an LED+display board.
CPU board ECOs (mistakes!)
- D2 in the reset circuit - silkscreen is backwards
- U1 pin 11 must be wired to J17 pin 11
- BUSRQ should be tied high or pulled up. Solder a 1k resistor (or just a wire) from the Z80 (U3) pin 25 to +5V
Also, recommend to cut the trace to nWE on the EEPROM (U4, pin 27) and wire from pin 27 to pin 28. This disables writing to the EEPROM. Not essential, but I recommend programming the EEPROM separately in a programmer. Rogue code can easily wear out the EEPROM (as I found the hard way!) if writing is enabled. You have been warned.
Memory and I/O map
The memory map is very simple:
EEPROM | 0000-7FFF
RAM | 8000-FFFFThere are six decoded I/O ports:
| port | name | bits | description |
|---|---|---|---|
| 00 | KB (write only) | bit 0 | KB column 1 |
| " | " | bit 1 | KB column 2 |
| " | " | bit 2 | KB column 3 |
| " | " | bit 3 | KB column 4 |
| " | " | bit 4 | KB column 5 and switches |
| " | " | bit 5 | -not used- |
| " | " | bit 6 | LED on CPU board |
| " | " | bit 7 | Serial output |
| 40 | Digits 0-7 | bits 0-7 | ICM7218 display data |
| 41 | Digits 0-7 | bits 0-7 | ICM7218 control data |
| 80 | KB (read only) | bit 0 | KB row 1 |
| " | " | bit 1 | KB row 2 |
| " | " | bit 2 | KB row 3 |
| " | " | bit 3 | KB row 4 |
| " | " | bit 4 | KB row 5 |
| " | " | bit 5 | KB row 6 |
| " | " | bit 6 | KB row 7 |
| " | " | bit 7 | Serial input |
| c0 | Digits 8-11 | bits 0-7 | ICM7218 display data |
| c1 | Digits 8-11 | bits 0-7 | ICM7218 control data |
All ports except 80 are write-only; port 80 is read-only.
A bit-banged serial port using an FTDI USB adapter is provided
as bit 7 of ports 00 and 80. Note that these ports share
keyboard scanning functions, so the code must be carefully written
if both functions are used simultaneously.
There are no interrupts.
Firmware
See firmware/calc for calculator operating program
See util for assembler and loader utilities
Parts
52| Qty | Value | Footprint | References |
|---|---|---|---|
| 14 | 0.1uF | Capacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mm | C3, C4, C7, C8, C9, C10, C12, C13, C14, C15, C16, C17, C18, C19 |
| 2 | 1N914 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D4, D5 |
| 2 | 4.7k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R2, R7 |
| 2 | 470 | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R1, R5 |
| 2 | 74AS74 | Package_DIP:DIP-14_W7.62mm_LongPads | U1, U17 |
| 2 | LED | LED_THT:LED_D3.0mm | D1, D3 |
| 2 | hdr_2x8 | Connector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_Vertical | J1, J3 |
| 1 | 0.33uF | Capacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mm | C2 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R4 |
| 1 | 10uF | Capacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mm | C1 |
| 1 | 1N914 | Diode_THT:D_DO-35_SOD27_P10.16mm_Horizontal | D2 |
| 1 | 1k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R3 |
| 1 | 20.000MHz | Package_DIP:DIP-14_W7.62mm_Socket_LongPads | X1 |
| 1 | 74HC14 | Package_DIP:DIP-14_W7.62mm_LongPads | U6 |
| 1 | 74LS139 | Package_DIP:DIP-16_W7.62mm_LongPads | U7 |
| 1 | 74LS244 | Package_DIP:DIP-20_W7.62mm_LongPads | U5 |
| 1 | 74LS32 | Package_DIP:DIP-14_W7.62mm_LongPads | U13 |
| 1 | 74LS374 | Package_DIP:DIP-20_W7.62mm_LongPads | U2 |
| 1 | AT28C256-15PU | Package_DIP:DIP-28_W15.24mm | U4 |
| 1 | Conn_01x02 | Connector_Hirose:Hirose_DF63-2P-3.96DSA_1x02_P3.96mm_Horizontal | J5 |
| 1 | Conn_01x06 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J2 |
| 1 | IDT71256SA | Package_DIP:DIP-28_W15.24mm | U8 |
| 1 | RPACK_SIP_8 | Resistor_THT:R_Array_SIP9 | RN1 |
| 1 | SW_Push | Button_Switch_THT:SW_PUSH_6mm | SW1 |
| 1 | Z80CPU | Package_DIP:DIP-40_W15.24mm_LongPads | U3 |
| 1 | jpr3 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | JP1 |
| 1 | uA7805 | Package_TO_SOT_THT:TO-220F-3_Vertical | U16 |
The 46 most common of 52 parts.
Questions
How big is the Cpu PCB?
It measures 116.8 × 147.3 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Cpu use?
52 parts, built around the 74HC14, 74LS139PC, 74LS32SC and 74LS374PC. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Cpu KiCad files?
From the eshazen/retro-25 repository on GitHub, at the commit this page was made from: the board is hardware/cpu/RevA/cpu.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Cpu design in my own project?
Its repository states no licence, so its author keeps all rights: ask eshazen before reusing the design.
More from eshazen/retro-25
3- 2 layers116.8 × 172.7 mm

- 2 layers200 × 65 mm

- 2 layers127 × 50.8 mm

Similar boards
- 2 layers53.3 × 53.3 mm

- 2 layers231.1 × 106.7 mm

- 2 layers232.8 × 204.2 mm

- 2 layers100 × 100 mm

- 2 layers450 × 160 mm

- 2 layers158.8 × 91.4 mm

Nabu MEGAMAPPER
tergav17/Z80-MegaMapper
Z80 interposer board providing extended memory and I/O instruction mapping
42 parts1 - 4 layers103.7 × 78.5 mm

SnarkBarker
computerguy096/snark-barker-mini
A miniaturized version of the Snark Barker
180 partsCC-BY-SA-4.0 - 2 layers426 × 307 mm

I7000
felipesanches/Itautec_I7000_KICAD
Esquemáticos do computador Itautec I-7000 G desenhados a partir de inspeção do circuito das PCBs
115 parts