Skip to the content
6 layers304.8 × 243.8 mmHydra-16, the printed circuit board in 3D

6502-based multi-tasking hardware and software project

Size
304.8 × 243.8 mm
Copper layers
6
Thickness
1.57 mm
Parts
210
Nets
368
Pads
2,230
Tracks, vias
7,357, 250
Pours
3,331
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
10 Sep 2024
Updated
7 Nov 2026

Overview

Hydra-16 is an open-source printed circuit board by danstruthers, from the danstruthers/hydra-16 repository on GitHub. It is a 6-layer board of 304.8 × 243.8 mm with 210 parts on 368 nets, routed with 7,357 tracks and 250 vias.

It is built around the 74F541PC, 74F125D and 74F240PC, with the 74F245D, MAX232N and LF353P among its other parts. Its parts include 77 capacitors, 68 ICs, 29 connectors, 21 resistors and 1 crystal.

Main components

12

README

README.md

Hydra 16

A multitasking 65C02 computer and its operating system, HydraOS.

The Hydra-16's hardware gives each of 16 tasks its own 32K of RAM, zero page and stack included, with its own RAM and ROM bank selections, so a task switch is one register write. HydraOS runs on it, Plan 9's way:

  • One kernel in the BIOS ROM: a preemptive scheduler, one interrupt path, notes, memory and banks, and a jump table made from a specification. Everything else is a module of the paged ROM, run in place in a task of its own.
  • A base to build on: the kernel, a serial console driver, the kernel's devices and Woz's monitor are the base (base/), which HydraOS is built on and which boots on its own: write an OS of your own on it.
  • Everything a file: devices are file servers (the console's windows, the disks and HydraFS, sound, GPIO and I2C, the clock, the Vera X, and /pc, a folder on the PC over the serial line), and each task has a namespace of its own, built by binds and mounts.
  • Shells and languages: rc, Plan 9's shell, and the core tools; HyForth (Forth 2012), the login shell; hylang (danlang, a lisp); HyBASIC (QuickBASIC's kind, every number exact); SDKs for C (cc65) and assembly, and as, an assembler on the Hydra itself.
  • Tools: a screen editor (edit), a debugger (db), a song player that plays ZSM songs and compiles scores as it plays.

The code is built with cc65 (https://cc65.github.io/), and the board is designed in KiCad 9 (https://www.kicad.org).

Quick start

text
cd base
node build.js                      the base alone: the kernel, ser, kdev, the monitor (bin/bios_*.bin, bin/prom0.bin)
node sim/run.js -i                 its monitor in your terminal (Ctrl-A x quits)

cd ../reborn
node build.js                      build HydraOS (needs Node.js and cc65): bin/bios_*.bin, bin/prom0.bin ...
node sim/run.js -i                 use the Hydra in your terminal, in the emulator (Ctrl-A x quits)
node sim/web.js                    the emulator in a browser: one file, bin/hydra-16.html, to open (in Git: no
                                   Node.js needed to use it)
node sim/test.js                   the regression tests

The ROM images are in Git (reborn/bin/) and on each GitHub release, so the chips can be programmed without a toolchain.

Documentation

The Hydra-16 book is everything, in order: what the machine is, the board and how to build it (the parts, the layout, the quirks), the kernel and its calls, the drivers, the shell, the languages, the tools, the emulator, and the programming guide. It's also one PDF, to print.

Chapter
1. The Hydra-16 at a glanceThe ideas, the software in layers, and a first hour in the emulator
2. The hardwareThe architecture, the devices, the parts, building it, the layout, the quirks, the cards
3. The baseThe boot, the kernel, files and namespaces, the system calls, the monitor
4. The driversThe serial console, the kernel's devices, storage, sound, GPIO, video
5. The shell: rcPlan 9's shell
6. The languagesHyForth, hylang, HyBASIC, and the numbers they share
7. The toolsThe core tools, the editors, the debugger, the assembler and disassembler
8. The emulatorThe emulator, the build, the tests, the PC tools
9. The programming guideAssembly, C, servers and drivers, libraries, your own OS, every system call

How it was designed, and where it stands: the plan and the design notes.

Repository

FolderWhat
base/The base: the kernel (the BIOS ROM), the system calls' specification, the console driver ser, the kernel's devices kdev, the monitor wozmon, the assembly SDK's core, the board's emulator and the tests' runner
reborn/HydraOS, on the base: its modules, the SDKs, the ROM disk, the SD card's image, its tests
docs/The book (its chapters, docs/build: the tools that make its parts list, layout drawings, call reference and PDF), and the design notes (docs/design)
board/KiCad schematics and PCBs: the main board, the memory daughter card, the bus breakout card, the Vera X's glue board
old/The old system (the 1.8C line: os_rom/, its programs, emulator, build and documents), frozen at HydraOS 1.0; node old/build.js test still builds and tests it

Parts

210
QtyValueFootprintReferences
62104Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25 +46
18103Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR4, R5, R6, R7, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21 +2
10MountingHole_PadMountingHole:MountingHole_4mm_Pad_TopBottomH1, H3, H4, H5, H6, H7, H8, H9, H10, H11
874LS219Package_DIP:DIP-16_W7.62mm_Socket_LongPadsIC1, IC2, IC3, IC4, IC5, IC6, IC7, IC8
8SST39SF040Package_DIP:DIP-32_W15.24mm_Socket_LongPadsU30, U31, U32, U33, U34, U35, U36, U37
774F541Package_DIP:DIP-20_W7.62mm_Socket_LongPadsU21, U49, U51, U53, U55, U58, U60
5105Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC4, C7, C8, C9, C10
5107Capacitor_THT:CP_Radial_D6.3mm_P2.50mmC51, C53, C54, C55, C56
474F573Package_DIP:DIP-20_W7.62mm_Socket_LongPadsU48, U50, U52, U54
4HM628512LP-5Package_SO:SOP-32_11.305x20.495mm_P1.27mmU25, U27, U28, U29
3332Resistor_THT:R_Array_SIP9RN1, RN2, RN3
374F138Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU4, U20, U24
374F32Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU13, U16, U56
2330Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC47, C48
2332Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC50, C52
274F00Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU15, U44
274LS148Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU17, U18
274LS154Package_DIP:DIP-24_W15.24mm_Socket_LongPadsU19, U23
274LS260Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU8, U9
10.89489MHzConnector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_VerticalJ5
11.78977MHzConnector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_VerticalJ6
1101Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR3
1105Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1
114.31818MHzCrystal:Crystal_HC18-U_VerticalY1
13.57955MHzConnector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_VerticalJ7
1471Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR2
1475Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC49
17.15909MHzConnector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_VerticalJ8
174ACT14Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU39
174F02Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU57
174F08Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU11
174F125Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU61
174F139Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU26
174F157Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU45
174F191Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU40
174F20Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU10
174F240Package_DIP:DIP-20_W7.62mm_Socket_LongPadsU22
174F245Package_DIP:DIP-20_W7.62mm_Socket_LongPadsU59
174F30Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU14
174F86Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU12
1ATX-24Connector_Molex:Molex_Mini-Fit_Jr_5566-24A2_2x12_P4.20mm_VerticalJ11
1Audio In 6Connector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_VerticalJ29
1Audio JackConnector_Audio:Jack_3.5mm_CUI_SJ1-3525N_HorizontalJ26
1Conn_01x24Connector_PinSocket_2.54mm:PinSocket_1x24_P2.54mm_VerticalJ2
1Conn_01x32Connector_PinSocket_2.54mm:PinSocket_1x32_P2.54mm_VerticalJ1
1DM1813-10Package_TO_SOT_THT:TO-92_Inline_WideU43
1DSUB_9DSUB_9:L77SDE09SA4CH3RJ3
1Front PanelConnector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_VerticalJ10
1HM628512LP-5Package_DIP:DIP-32_W15.24mm_Socket_LongPadsU7
1LF353PPackage_DIP:DIP-8_W7.62mm_Socket_LongPadsIC9
1MAX232Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU5
1MountingHoleMountingHole:MountingHole_4mmH2
1R65C22-P2Package_DIP:DIP-40_W15.24mm_Socket_LongPadsU2
1R65C51-P2Package_DIP:DIP-28_W15.24mm_Socket_LongPadsU3
1RDY Pull_UpConnector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_VerticalJ4
1SLOT 0PC Edge:TE_7-5530843-0J12
1SLOT 1PC Edge:TE_7-5530843-0J13
1SLOT 2PC Edge:TE_7-5530843-0J14
1SLOT 3PC Edge:TE_7-5530843-0J15
1SLOT 4PC Edge:TE_7-5530843-0J16
1SLOT 5PC Edge:TE_7-5530843-0J17
1SND CT1/2Connector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_VerticalJ9
1SP720APPPackage_DIP:DIP-16_W7.62mm_Socket_LongPadsJ28
1SPI Device 0Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ18
1SPI Device 1Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ19
1SPI Device 2Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ20
1SPI Device 3Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ21
1SPI Device 4Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ22
1SPI Device 5Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ23
1SPI Device 6Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ24
1SPI Device 7Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ25
1SST39SF0x0APackage_LCC:PLCC-32_THT-SocketU6
1TL074Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU42
1VIA Port AConnector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_VerticalJ27
1WDC65C02SPackage_DIP:DIP-40_W15.24mm_Socket_LongPadsU1
1YM2151Package_DIP:DIP-24_W15.24mm_Socket_LongPadsU38
1YM3012Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU41

More from danstruthers/hydra-16

3
  • 2 layers106.7 × 105.4 mmHydraBusBreakoutCard, the printed circuit board in 3D

    HydraBusBreakoutCard

    danstruthers/hydra-16

    6502-based multi-tasking hardware and software project

    15 parts1
  • 2 layers87 × 67 mmMemDaughterCard, the printed circuit board in 3D

    MemDaughterCard

    danstruthers/hydra-16

    6502-based multi-tasking hardware and software project

    13 parts1

Similar boards

  • 2 layers134.6 × 208.3 mmTs2, the printed circuit board in 3D

    Ts2

    jefftranter/68000

    Code related to the Motorola 68000 microprocessor.

    110 parts133
  • 2 layers94.9 × 89.3 mmMiniA501b6, the printed circuit board in 3D

    MiniA501b6

    erikarn/amiga-pcbs

    78 parts
  • 4 layers159.9 × 119.3 mmC816Pro, the printed circuit board in 3D

    C816Pro

    rjacobs1969/C816

    Modern 8 bit computer

    154 parts
  • 2 layers333.4 × 149.9 mmOmega Mainboard, the printed circuit board in 3D

    Omega Mainboard

    skiselev/omega

    Omega Home Computer

    248 parts459GPL-3.0
  • 2 layers333.4 × 149.9 mmOmega Mainboard, the printed circuit board in 3D

    Omega Mainboard

    merlinkv/Omega_MSX2

    Update of the Omega Home Computer Project

    265 parts40GPL-3.0
  • 4 layers223 × 226 mmApple PCB 820-0086-C, the printed circuit board in 3D

    Apple PCB 820-0086-C

    RichCini/MacRedux

    Redraws/reimplementations of various legacy Macintosh boards.

    186 parts4
  • 2 layers100.1 × 99.9 mmCommunicator 27mhz, the printed circuit board in 3D

    Communicator 27mhz

    cropinghigh/CBModem

    CB Modem for license-free digital comms

    230 parts3GPL-3.0
  • 4 layers328.7 × 121.7 mm386RC-16, the printed circuit board in 3D

    386RC-16

    raszpl/386RC-16

    Modular Circuit Technology 386RC-16 ram expansion board for C386-33 reproduction

    62 parts2GPL-3.0

Questions

How big is the Hydra-16 PCB?

It measures 304.8 × 243.8 mm and has 6 copper layers, 1.57 mm thick.

What parts does the Hydra-16 use?

210 parts, built around the 74F541PC, 74F125D, 74F240PC and 74F245D. 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 Hydra-16 KiCad files?

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

Can I use the Hydra-16 design in my own project?

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