Skip to the content
PCBKitNew board
2 layers116.8 × 147.3 mmCpu, the printed circuit board in 3D

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

6

README

README.md

retro-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):

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/bootloader has a small serial/flash bootloader which should be programmed at $0000
  • firmware/calc has the main calculator operating firmware
  • firmware/umon has a simple Z80 monitor I wrote for debugging
  • firmware/basic has a hacked version of MS BASIC (4K integer version from 1978)
  • util has 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:

text
EEPROM | 0000-7FFF
RAM    | 8000-FFFF

There are six decoded I/O ports:

portnamebitsdescription
00KB (write only)bit 0KB column 1
""bit 1KB column 2
""bit 2KB column 3
""bit 3KB column 4
""bit 4KB column 5 and switches
""bit 5-not used-
""bit 6LED on CPU board
""bit 7Serial output
40Digits 0-7bits 0-7ICM7218 display data
41Digits 0-7bits 0-7ICM7218 control data
80KB (read only)bit 0KB row 1
""bit 1KB row 2
""bit 2KB row 3
""bit 3KB row 4
""bit 4KB row 5
""bit 5KB row 6
""bit 6KB row 7
""bit 7Serial input
c0Digits 8-11bits 0-7ICM7218 display data
c1Digits 8-11bits 0-7ICM7218 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
QtyValueFootprintReferences
140.1uFCapacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mmC3, C4, C7, C8, C9, C10, C12, C13, C14, C15, C16, C17, C18, C19
21N914Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD4, D5
24.7kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR2, R7
2470Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1, R5
274AS74Package_DIP:DIP-14_W7.62mm_LongPadsU1, U17
2LEDLED_THT:LED_D3.0mmD1, D3
2hdr_2x8Connector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_VerticalJ1, J3
10.33uFCapacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mmC2
110kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR4
110uFCapacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mmC1
11N914Diode_THT:D_DO-35_SOD27_P10.16mm_HorizontalD2
11kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR3
120.000MHzPackage_DIP:DIP-14_W7.62mm_Socket_LongPadsX1
174HC14Package_DIP:DIP-14_W7.62mm_LongPadsU6
174LS139Package_DIP:DIP-16_W7.62mm_LongPadsU7
174LS244Package_DIP:DIP-20_W7.62mm_LongPadsU5
174LS32Package_DIP:DIP-14_W7.62mm_LongPadsU13
174LS374Package_DIP:DIP-20_W7.62mm_LongPadsU2
1AT28C256-15PUPackage_DIP:DIP-28_W15.24mmU4
1Conn_01x02Connector_Hirose:Hirose_DF63-2P-3.96DSA_1x02_P3.96mm_HorizontalJ5
1Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2
1IDT71256SAPackage_DIP:DIP-28_W15.24mmU8
1RPACK_SIP_8Resistor_THT:R_Array_SIP9RN1
1SW_PushButton_Switch_THT:SW_PUSH_6mmSW1
1Z80CPUPackage_DIP:DIP-40_W15.24mm_LongPadsU3
1jpr3Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP1
1uA7805Package_TO_SOT_THT:TO-220F-3_VerticalU16

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 mmLed display, the printed circuit board in 3D

    Led display

    eshazen/retro-25

    Retro-tech HP-25 calculator clone using Z80

    80 parts33
  • 2 layers200 × 65 mmVfd display, the printed circuit board in 3D

    Vfd display

    eshazen/retro-25

    Retro-tech HP-25 calculator clone using Z80

    48 parts33
  • 2 layers127 × 50.8 mmPsu, the printed circuit board in 3D

    Psu

    eshazen/retro-25

    Retro-tech HP-25 calculator clone using Z80

    29 parts33

Similar boards

  • 2 layers53.3 × 53.3 mm6502ino, the printed circuit board in 3D

    6502ino

    c0pperdragon/6502ino

    Arduino shield with an 65c02 processor

    23 parts8
  • 2 layers231.1 × 106.7 mmSnark barker, the printed circuit board in 3D

    Snark barker

    schlae/snark-barker

    A 100% compatible replica of the famed SB 1.0 sound card

    199 parts687
  • 2 layers232.8 × 204.2 mmTIM-011B, the printed circuit board in 3D

    TIM-011B

    Board-Folk/TIM011B

    TIM-011 B Replica Board

    162 parts8
  • 2 layers100 × 100 mmIoe enh, the printed circuit board in 3D

    Ioe enh

    Creep69/NKC

    Neuauflage des NDR KLEIN COMPUTER

    507 parts8
  • 2 layers450 × 160 mmSquale, the printed circuit board in 3D

    Squale

    jfdelnero/Apollo_7_Squale

    Apollo 7 Squale computer dev tools

    219 parts6
  • 2 layers158.8 × 91.4 mmNabu MEGAMAPPER, the printed circuit board in 3D

    Nabu MEGAMAPPER

    tergav17/Z80-MegaMapper

    Z80 interposer board providing extended memory and I/O instruction mapping

    42 parts1
  • 4 layers103.7 × 78.5 mmSnarkBarker, the printed circuit board in 3D

    SnarkBarker

    computerguy096/snark-barker-mini

    A miniaturized version of the Snark Barker

    180 partsCC-BY-SA-4.0
  • 2 layers426 × 307 mmI7000, the printed circuit board in 3D

    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