Skip to the content
PCBKitNew board
2 layers206.4 × 137.5 mmMemory, the printed circuit board in 3D

Homebrew TTL ISA-compatible PDP-9 clone

Size
206.4 × 137.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
61
Nets
211
Pads
584
Tracks, vias
2,791, 76
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
18 Apr 2025
Updated
6 Oct 2026

Overview

Memory is an open-source printed circuit board by tergav17, from the tergav17/RDP-9 repository on GitHub. It is a 2-layer board of 206.4 × 137.5 mm with 61 parts on 211 nets, routed with 2,791 tracks and 76 vias.

It is built around the 74LS245SC, 74LS257PC and 74LS377PC, with the 74LS00SC, 74LS27P-E and 74LS32SC among its other parts. Its parts include 21 capacitors, 20 ICs, 18 resistors and 2 connectors.

Main components

6

README

README.md

RDP-9

Project Description

This project aims to build an ISA-compatible clone of the DEC PDP-9 system using primarily technology from the late 1970s - early 1980s period. I did this to ensure my design followed the same constraints that later genuine minicomputer systems were built with, while being able to significantly reduce the size and complexity compared to an actual PDP-9. The specifics are as follows

  • Use only 74-series logic and other similar TTL logic level parts that would be available around the later 1970s timeframe. The exception to this is RAM, which I plan to use more “modern” SRAM chips instead of torturing myself with dynamic RAM.
  • No FPGAs, PALs, GALs, microcontrollers, etc in the main processor path. The only exception to this is using standard 27C style ROM chips to hold the microcode.
  • Usage of a period correct microcontroller or microprocessor for the disk / drum subsystem. Using another simpler processor to control complex devices like disks was done frequently on other minicomputer designs, so I’ll be doing it here too.

My end goal is to build a system that is capable of running most of the interesting software of the period. This includes DECsys, ADSS, DOS-15, and UNIX V0. To do this, the system will need:

  • Full compatibility with the PDP-9 instruction set. This includes EAE instructions and extended memory
  • The ability to hook up to a real or emulated paper tape punch / reader.
  • The ability to hook up to a real or emulated ASR-33 teletype or similar serial terminal
  • 8" floppy drive interface in place of DECtape. Software will require patching but it's better than trying to emulate DECtape
  • IDE hard drive support using RB09/RF09 interface

Theory of Operation

Due to the complexity involved with the architecture of the DEC PDP-9, the system is split into two subsystems:

The first subsystem is the processor itself. It has a full 18-bit datapath with 15-bit address bus, and is implemented entirely using TTL logic.

The second subsystem is the I/O bus. This is directly controlled by the processor itself and is capable of servicing the following operations:

  • Device interrupts
  • IOT transactions
  • Add-to-memory operations
  • Data channel transfers
  • DMA transfers
  • READ-IN operation

Device Interrupts

Device interrupts simply tell the processor to begin an interrupt operation. When an interrupt is accepted, the I/O bus will be notified of the action and is responsible for turning off the "Program Interrupt" flag. If this does not happen, interrupts will continuously loop.

Steps:
  1. Interrupt is accepted. MA is completely zeroed and the "INTERRUPT_DETECT" pulse is asserted for this clock cycle.

  2. PC is stored in MB, OB

  3. The logical OR of MB and OB is place in CORE at MA. The crossbar will add the LINK and MEMM flags

  4. MA + 1 is placed in the PC. Extend is enabled to ensure that bank 0 is selected. The next fetch will ignore device requests

IOT Transactions

IOT transactions allow data to be transferred to or from the accumulator. IOTs also allow for skips to be requested. Every IOT is treated by the CPU as a Read-Modify-Write operation. By using the "EXTRN" signal, devices can notify the processor to read from the I/O bus instead of the writeback register. When the I/O bus is being sampled, the "IOT_SKIP" signal can be asserted to tell the processor to perform an addition increment of the program counter.

A wait signal is sampled at the beginning of the IOT as well. This can be used to add cycles to the writeback phase of the IOT if the device needs it.

Steps:
  1. IOT transaction begins. Device address is placed on the I/O address bus. AC (or 0 if the flag is set) is written to the WRTBK register.

  2. Signal "IOT_PULSE" is asserted.

  3. Signal "IOT_PULSE" remains asserted. External input is sampled into MB. Signal "EXTRN" must be asserted to take value from device bus.

  4. IF "IOT_WAIT" is asserted, goto step 3 in place. No IOT signals are asserted. Interally, the CPU is performing the logical OR and writeback of potential provided data.

  5. No IOT signals are asserted. Internally, the CPU will perform the skip here if it has been requested. The next fetch cycle will ignore interrupts and device requests.

Device Requests

The final three transaction types (Add-to-memory, data-channels, and DMA transfers all share the "device request" pathway.

Steps:
  1. Signal "REQ_ADDR_PHASE" and "DEV_REQ_GRANT" asserted and held. External value written to MA.

  2. If DMA is selected, core is read at MA and written to WRTBK with next as step 8. Otherwise core is read at MA and written to MB, OB. "REQ_ADDR_PHASE" held

  3. Value in MB, OB incremented and written back to core at MA and OB. "REQ_ADDR_PHASE" held

  4. Value in MA incremented. If add to memory selected, Jump to fetch without device request logic. "INCREMENT_ZERO_PUSLE" will be generated if needed. "REQ_ADDR_PHASE" held

  5. Core is read at MA and written to MB, OB.

  6. Value in MB, OB incremented and written back to core at MA and MA

  7. Core is read at MA and written to WRTBK

  8. External value written to core at MA. "DEV_REQ_GRANT" reset. Jump to fetch without device request logic

READ-IN Operation

The read-in is used to transfer a set series of words into memory from one of the I/O devices. Only one I/O device can be be allowed to respond to READ-IN at any one time. When a READ-IN transaction is active, the CPU will stall until the designated device signals that it is ready. The device will either signal the CPU to commence another READ-IN cycle, or to terminate the READ-IN after any given transfer.

Steps:
  1. SWR is moved into PC

  2. "READ_IN_PULSE" is asserted, step will loop till either "IOT_WAIT" or "IOT_SKIP" are asserted.

  3. "READ_IN_PULSE" remains asserted. EXTRN is moved into core at PC. Continue having the constant value asserted.

  4. "READ_IN_PULSE" reset. If "IOT_SKIP" is asserted, jump to CONT logic. Otherwise move PC + 1 into PC

  5. Null phase, "READ_IN_PULSE" remains reset.

  6. Null phase, "READ_IN_PULSE" remains reset. Jump to step 2 on completion

Parts

61
QtyValueFootprintReferences
200.1uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2, C3, C4, C5, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20 +4
184.7KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R3, R4, R5, R6, R7, R10, R11, R12, R13, R14, R15, R16, R17, R18 +2
574LS257Package_DIP:DIP-16_W7.62mmU7, U8, U9, U10, U16
474LS377Package_DIP:DIP-20_W7.62mmU11, U12, U13, U14
374LS245Package_DIP:DIP-20_W7.62mmU4, U5, U6
3CY62256-70PCPackage_DIP:DIP-28_W15.24mmU1, U2, U3
274LS08Package_DIP:DIP-14_W7.62mmU17, U20
1100 uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC21
174LS00Package_DIP:DIP-14_W7.62mmU18
174LS27Package_DIP:DIP-14_W7.62mmU19
174LS32Package_DIP:DIP-14_W7.62mmU15
1Control ConnectorConnector_DIN:DIN41612_B_2x32_Male_Horizontal_THTJ1
1Data ConnectorConnector_DIN:DIN41612_B_2x32_Male_Horizontal_THTJ2

Questions

How big is the Memory PCB?

It measures 206.4 × 137.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Memory use?

61 parts, built around the 74LS245SC, 74LS257PC, 74LS377PC and 74LS00SC. 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 Memory KiCad files?

From the tergav17/RDP-9 repository on GitHub, at the commit this page was made from: the board is kicad/Memory/Memory.kicad_pcb and its schematic kicad/ALU/ALU.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Memory design in my own project?

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

More from tergav17/RDP-9

7
  • 2 layers200 × 321.3 mmBackplane, the printed circuit board in 3D

    Backplane

    tergav17/RDP-9

    Homebrew TTL ISA-compatible PDP-9 clone

    137 parts6
  • 2 layers204.5 × 107.3 mmFront Panel Register, the printed circuit board in 3D

    Front Panel Register

    tergav17/RDP-9

    Homebrew TTL ISA-compatible PDP-9 clone

    131 parts6
  • 2 layers235 × 137.5 mmTTY Clock, the printed circuit board in 3D

    TTY Clock

    tergav17/RDP-9

    Homebrew TTL ISA-compatible PDP-9 clone

    120 parts6
  • 2 layers170.2 × 107.3 mmFront Panel Address, the printed circuit board in 3D

    Front Panel Address

    tergav17/RDP-9

    Homebrew TTL ISA-compatible PDP-9 clone

    108 parts6
  • 2 layers206.4 × 137.5 mmALU, the printed circuit board in 3D

    ALU

    tergav17/RDP-9

    Homebrew TTL ISA-compatible PDP-9 clone

    83 parts6
  • 2 layers206.4 × 137.5 mmControl, the printed circuit board in 3D

    Control

    tergav17/RDP-9

    Homebrew TTL ISA-compatible PDP-9 clone

    67 parts6
  • 2 layers206.4 × 137.5 mmRegisters, the printed circuit board in 3D

    Registers

    tergav17/RDP-9

    Homebrew TTL ISA-compatible PDP-9 clone

    59 parts6

Similar boards

  • 2 layersEDiCPoster, the printed circuit board in 3D

    EDiCPoster

    Nik-Sch/EDiC

    Developement, Simulation and Emulation of an 8 bit CPU including a Software Framework for my Masters Thesis

    176 parts1
  • 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
  • 2 layers400.9 × 280.5 mmAleste520v4, the printed circuit board in 3D

    Aleste520v4

    lucedoriente/Aleste520ex

    Western version of 1993 Z80 russian computer

    345 parts4GPL-3.0
  • 2 layers244 × 244 mm6809PC-6U, the printed circuit board in 3D

    6809PC-6U

    danwerner21/6809PC

    6809 PC

    167 parts2
  • 2 layers104.1 × 106.7 mmMSP MDC, the printed circuit board in 3D

    MSP MDC

    hkzlab/WINK_MSP-MDC_redux

    Reimplementation of the MSP-MDC CPU/Security module for the Wink arcade board by Midcoin

    41 parts
  • 2 layersEVA86-2, the printed circuit board in 3D

    EVA86-2

    roberto314/EVA-1_Reproduction

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

    86 parts
  • 2 layers73.7 × 172.7 mmI281 cmem, the printed circuit board in 3D

    I281 cmem

    brandtdamman/i281e-cpu

    Developed by SDMAY24-14 Senior Design group under Dr. Stoytchev, the i281e CPU is an extended design from the original i281 CPU for educational purposes.

    60 parts1
  • 4 layers127 × 127 mmTom-1, the printed circuit board in 3D

    Tom-1

    tcr/tom-1

    83 parts3