Skip to the content
PCBKitNew board
2 layers101.6 × 72.4 mmUpd7801-reader, the printed circuit board in 3D

ROM reader for NEC µCOM-87 (uPD7801 series) microcontrollers

Size
101.6 × 72.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
40
Nets
87
Pads
254
Tracks, vias
471, 29
Pours
2
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
13 Apr 2026
Updated
13 Apr 2026

Overview

Upd7801-reader is an open-source printed circuit board by devinacker, from the devinacker/upd7801-reader repository on GitHub. It is a 2-layer board of 101.6 × 72.4 mm with 40 parts on 87 nets, routed with 471 tracks and 29 vias.

It is built around the 27C256-17/J, 74HC74D and 74HCT00D, with the 74HCT14D, 74HCT32D and L7805 among its other parts. Its parts include 9 capacitors, 7 ICs, 4 resistors, 3 diodes and 2 connectors.

Main components

6

README

README.md

This is a PCB designed to read the internal mask ROM contents from NEC "µCOM-87" microcontrollers (µPD7801 aka uPD7801, etc.) and automatically output them in Intel hex format over serial.

PCB render

Specs

  • Support for all NEC "µCOM-87" series microcontrollers:
    • uPD7801
    • uPD7802
  • Automatic ROM size detection (4/6kb)
  • Power input: 7.5-9V DC, center positive
  • Serial output: 38400 baud, 8N1, Intel hex format

Usage

Zipped gerbers and ROM are available from the releases page.

  • Burn the firmware ROM to a 27C256 or compatible EPROM or flash chip (e.g. Atmel AT29C256, Winbond W27E257).
  • Assemble the board (all parts are through-hole for convenience).
  • Connect the 2-pin serial header to a USB UART adapter or something similar. Configure your computer's serial port as described in "Specs".
  • Plug in power and turn the board on. The ROM dump will automatically start being dumped over serial. The "Ready" LED will flash while this is in progress, then becomes solid once it's finished.
  • Press Reset or cycle power to dump again, if needed.

The resulting Intel hex file can be converted to a raw ROM image using objcopy, SRecord, or similar tools.

About the process

Unlike its successor, the uPD7810 series, these chips don't have any mode pins for enabling or disabling the chip's internal ROM. As a result, on the 7801 and 7802, it's normally enabled all the time, and the chips can't be repurposed as ROMless parts.

However, after some testing, it was found that overclocking the chip above a certain level will effectively disable the internal ROM, causing instructions to be fetched from external memory even within the normally-internal address range. This board exploits that effect and boots into external ROM by doing this:

  • put pulldowns on the data bus so NOPs are executed when internal and external memory are both disabled
  • on reset, switch to a ~11MHz clock and disable the external EPROM
  • after execution reaches address 0x2000 (signaled by M1 & A13 & !RD), switch to normal clock and enable EPROM
  • code in external ROM reads and outputs the internal ROM contents

Note that this setup is somewhat dependent on the temperature of the chip. During testing, it tended to work long enough to perform a few consecutive dumps via the reset button, but once it has been powered on for a minute or so, the clock glitching will probably become unreliable or stop working (no LED activity). If this happens, just leave the power off for a few minutes.

Alternately, you might find that a slower clock (~8-10) is more stable, but will probably require briefly waiting for the chip to warm up a bit. Be sure to adjust your serial baud rate and possibly also adjust the output timing in the ROM (e.g. add an extra NOP to Serial_WriteByte to get 31250 baud with a 10 MHz clock, or 25000 baud with a 8 MHZ clock).

This board has been used to successfully dump a couple of different chips so far, but I still consider it a proof of concept. If there's enough interest I may revisit it to try to make it more stable.

Parts

RefPart
C10.22µF electrolytic
C2, C3, C4, C5, C6, C7, C8, C90.1µF ceramic
D11N4001
D2generic 5mm 2V LED (power)
D3generic 5mm 2V LED (status)
J1generic 3-pin barrel jack
J21x2 pin header, 2.54mm
R1, R2, R3, R41k ohm, 1/8 watt
RN1, RN25-pin 1k ohm SIP resistors
RN3, RN4, RN5, RN65-pin 22k ohm SIP resistors
RN7, RN89-pin 22k ohm SIP resistors
SW1generic 6mm tactile switch (optional, for reset)
SW2OS102011MS2QN1
U1µPD7801/02, 64-pin QUIP
(four 1x16 2.54mm machined pin sockets recommended)
U274HC74
U374HCT00
U474HCT32
U5LM7805
U674HCT14
U727C256 EPROM or compatible
X111.0592MHz oscillator, 5V HCMOS, DIP8

Disclaimer

Use this board at your own risk. It was designed to be simple, but assumes you have basic experience working with electronics, including soldering. I am not responsible if you happen to blow something up.

License

PCB design and schematics are released under the Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA) license. The firmware source (in the rom directory) is released as public domain.

Parts

40
QtyValueFootprintReferences
80.1uFCapacitor_THT:C_Disc_D3.8mm_W2.6mm_P2.50mmC2, C3, C4, C5, C6, C7, C8, C9
41kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1, R2, R3, R4
422k x 4Resistor_THT:R_Array_SIP5RN3, RN4, RN5, RN6
21k x 4Resistor_THT:R_Array_SIP5RN1, RN2
222k x 8Resistor_THT:R_Array_SIP9RN7, RN8
10.22uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC1
111.0592 MHzOscillator:Oscillator_DIP-8X1
11N4001Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD1
127C256Package_DIP:DIP-28_W15.24mmU7
174HC74Package_DIP:DIP-14_W7.62mmU2
174HCT00Package_DIP:DIP-14_W7.62mmU3
174HCT14Package_DIP:DIP-14_W7.62mmU6
174HCT32Package_DIP:DIP-14_W7.62mmU4
1Conn_Coaxial_PowerConnector_BarrelJack:BarrelJack_Wuerth_6941xx301002J1
1L7805Package_TO_SOT_THT:TO-220-3_Horizontal_TabDownU5
1POWERLED_THT:LED_D5.0mmD2
1READYLED_THT:LED_D5.0mmD3
1SERIALConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1SW_PushButton_Switch_THT:SW_PUSH_6mmSW1
1SW_SPSTButton_Switch_THT:SW_Slide_1P2T_CK_OS102011MS2QSW2
1uPD7801quip64:Package_QUIP64U1

The 36 most common of 40 parts.

Questions

How big is the Upd7801-reader PCB?

It measures 101.6 × 72.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Upd7801-reader use?

40 parts, built around the 27C256-17/J, 74HC74D, 74HCT00D and 74HCT14D. 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 Upd7801-reader KiCad files?

From the devinacker/upd7801-reader repository on GitHub, at the commit this page was made from: the board is upd7801-reader.kicad_pcb and its schematic upd7801-reader.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Upd7801-reader design in my own project?

Its repository states no licence, so its author keeps all rights: ask devinacker before reusing the design.

Similar boards

  • 4 layers160 × 100 mmZ80 Simple Computer, the printed circuit board in 3D

    Z80 Simple Computer

    apws/261103-reto-comp-andrew-grok-kicad

    Rebuilt Z80 educational schematic in KiCad. The board is not routed yet.

    38 parts1
  • 2 layers218 × 125 mmEVA1 v2, the printed circuit board in 3D

    EVA1 v2

    roberto314/EVA-1_Reproduction

    Recreation of the very rare K-K Systems EVA-1 Display Adapter for the Epson HX-20 Computer

    160 parts
  • 2 layers368.3 × 215.9 mmTTL 6510 Computer fab, the printed circuit board in 3D

    TTL 6510 Computer fab

    StefansAI/TTL-6510-Computer

    Yet another CPU made from TTL chips

    330 parts1
  • 4 layers161.1 × 82.9 mmAll in one smc, the printed circuit board in 3D

    All in one smc

    nojan1/project-wrass

    The purpose of Project Wrass is to develop the Wrass 1.

    150 parts
  • 4 layers280 × 140 mmP8x control card, the printed circuit board in 3D

    P8x control card

    ksr/p8x

    Generated by generators/genkicad.py from the canonical geneagle netlist (CARDS["peripheral-card"]), same standard as the memory card: 4-layer (F/B signals, In1=GND, In2=VCC planes), a bypass cap above each IC, a…

    58 parts
  • 4 layers170.2 × 170.2 mmMotherboard, the printed circuit board in 3D

    Motherboard

    MicroLind-Developers/microlind-hw

    Hardware repository for the microlind project

    134 partsCERN-OHL-P-2.0
  • 2 layers69.9 × 96.1 mmZxsd, the printed circuit board in 3D

    Zxsd

    sittner/tinyfs

    TinyFS is a minimalist filesystem designed for extremely constrained embedded systems. The initial reason to create this project was the attempt to build a filesystem that can run on a ZX81 without any additional…

    37 parts3GPL-3.0
  • 4 layers209.5 × 108.5 mmControl, the printed circuit board in 3D

    Control

    89Mods/LVDC

    Replica of the Launch Vehicle Digital Computer using 74-series logic

    81 parts2MIT