Skip to the content
PCBKitNew board
6 layers313 × 259.5 mmOpen8-vga motherboard, the printed circuit board in 3D

Open8-vga motherboard

adham404/Open8-VGA3

An 8-bit computer from 74HC logic: microcoded CPU, VGA, PS/2, on-board editor and assembler. Play it in your browser.

Size
313 × 259.5 mm
Copper layers
6
Thickness
1.6 mm
Parts
322
Nets
687
Pads
2,887
Tracks, vias
12,299, 626
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
20 Oct 2026
Updated
21 Oct 2026

Overview

Open8-vga motherboard is an open-source printed circuit board by adham404, from the adham404/Open8-VGA repository on GitHub, published under the MIT licence. It is a 6-layer board of 313 × 259.5 mm with 322 parts on 687 nets, routed with 12,299 tracks and 626 vias.

It is built around the CD74HC541E, CD74AC245E and SST39SF010A-70-4C-PHE, with the SST39SF040-70-4C-PHE, CD74HC377E and CD74HC153E among its other parts. Its parts include 138 capacitors, 135 ICs, 22 resistors, 5 connectors and 5 switches. It belongs with the computers and single-board computers and retro computing and games boards of this library.

Main components

12

README

README.md

Open8-VGA

A self-contained 8-bit computer built from 74HC/AC logic chips: a custom microcoded CPU, 32 KiB of RAM, an 80 × 30 VGA text and tile display, a PS/2 keyboard and an EEPROM for saving programs. It boots straight into a full-screen editor with a built-in assembler, so you type assembly language on the machine itself and run it, up to games like Tetris and a scrolling platformer.

Try it in your browser → The emulator runs the real boot ROM, so it is the same machine code the board would run.

The platformer running on the simulated machine

Designed by Adham Elshafei · adham_mohsen@outlook.com · 2026. Inspired by Ben Eater's 8-bit breadboard computer.

Status

Everything is verified in simulation; no board has been built yet.

AreaStateDocs
Architecture, memory mapdone01
Instruction set (102 instructions), microcode, ROM-based ALU, assemblerdone, simulated02
VGA tile controller, PS/2 receiverdone, simulated03
Boot firmware: editor, on-board assembler, help, examplesdone, simulated04
Tetris, platformer, browser emulatordone, simulated05
Save/load to EEPROM (4 slots)done, simulated06
Parts verification and timing budget against datasheetsdone07
Netlist, gate-level simulation of the whole boarddone, 11 tests08
PCB Rev A: 6 layers, routed, design-rule check clean, Gerbersdone, not fabricated08
Parts list, assembly guidedone09
Bring-up planwritten, not yet carried out10
Compact-Mac-style 3D-printed case with an 8" LCD (FreeCAD)designed, fit-checked, not printedenclosure

Quick start

Needs only Python 3.8+ (no packages). Node.js is used by one test.

sh
./build.sh

This builds every ROM image into build/rom/, rebuilds the browser emulator (web/open8-vga.html), regenerates the instruction-set doc, and runs the whole test suite.

  • Run the emulator locally: open web/open8-vga.html in a browser. It is one self-contained file and needs no server.
  • Assemble a program on your computer: python3 tools/asm.py prog.asm -o prog.bin --listing prog.lst
  • Run only the tests: python3 -m unittest discover -s tests

Building the hardware

The Rev A board is 313 × 259.5 mm, 6 layers, all through-hole parts (hand assembly), with the nine flash chips in sockets.

FileWhat
hardware/fab/rev-a/open8-vga-gerbers-revA.zipGerbers and drill files (JLCPCB-ready)
hardware/fab/rev-a/open8-vga-bom-revA.csvparts list with manufacturer part numbers
kicad/board/KiCad 10 project: schematic and routed board
docs/09-assembly.mdsoldering order, which ROM image goes in which socket, jumpers
docs/10-bring-up.mdstaged power-on and test plan

The ROM images to program into the flash chips come from ./build.sh (build/rom/). This design has not been built or tested on real hardware; treat Rev A as a first prototype.

Repository layout

text
docs/        design notes 01-10, screenshots (02-isa.md is generated)
firmware/    boot firmware in Open8 assembly (main.asm includes the rest; gen/ is generated)
examples/    example programs, all built into the ROM (F5 in the editor)
tools/       ISA definition, ALU and microcode generators, assembler, simulators,
             VGA timing and font generators, firmware and emulator builders
             (web/open8core.js + web/page.html are the emulator sources)
web/         open8-vga.html: the built browser emulator
hardware/    design.py: the board netlist as code; gatesim.py: gate-level simulator;
             lib.py: chip models; kicad_map.py, bom.py; layout/: placement, routing and
             finishing scripts for the PCB; fab/: release fabrication files
kicad/board/ KiCad project for the PCB
enclosure/   3D-printed case: parametric FreeCAD script, STLs, renders
tests/       CPU, assembler, video, keyboard, firmware, games, EEPROM, emulator and
             gate-level board tests

How it is verified

  • CPU: every opcode, step and flag combination of the microcode is checked against an instruction-level reference model; the ALU lookup tables are checked exhaustively.
  • Firmware: the real flash image boots, edits, assembles and runs programs in the simulator; the on-board assembler is byte-identical to the reference assembler.
  • Emulator: the JavaScript emulator is checked state-for-state against the Python simulator.
  • Board: the full netlist runs at gate level and boots the firmware, draws video and reads the keyboard and EEPROM, matching the higher-level simulators.
  • Not yet verified: a real board, real chip timing (only a datasheet budget so far), analog VGA levels, a real keyboard.

License

MIT © 2026 Adham Elshafei. This covers the software, firmware, hardware design files and documentation.

Parts

322
QtyValueFootprintReferences
134100nCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C10, C11, C100, C101, C102, C103, C104, C105, C106, C107, C108, C109, C110, C111, C112 +118
1374HC377Package_DIP:DIP-20_W7.62mmU22, U30, U32, U34, U36, U37, U55, U56, U57, U78, U79, U80, U81
1274HC541Package_DIP:DIP-20_W7.62mmU31, U33, U35, U46, U47, U53, U54, U58, U88, U89, U101, U102
1074HC153Package_DIP:DIP-16_W7.62mmU28, U29, U59, U60, U61, U62, U63, U64, U65, U66
1074HC163Package_DIP:DIP-16_W7.62mmU21, U49, U50, U51, U52, U103, U104, U105, U106, U107
774HC32Package_DIP:DIP-14_W7.62mmU13, U25, U26, U27, U69, U86, U99
610kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R5, R6, R11, R13, R15
674AC157Package_DIP:DIP-16_W7.62mmU114, U115, U116, U120, U121, U122
674HC08Package_DIP:DIP-14_W7.62mmU4, U14, U68, U72, U83, U98
674HC74Package_DIP:DIP-14_W7.62mmU8, U12, U15, U84, U85, U87
574HC04Package_DIP:DIP-14_W7.62mmU6, U48, U82, U96, U124
574HC161Package_DIP:DIP-16_W7.62mmU42, U43, U44, U45, U94
5SST39SF010APackage_DIP:DIP-32_W15.24mm_SocketU17, U18, U19, U108, U200
41kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR4, R7, R21, R22
474AC574Package_DIP:DIP-20_W7.62mmU5, U109, U127, U129
474HC157Package_DIP:DIP-16_W7.62mmU11, U70, U71, U74
4SST39SF040Package_DIP:DIP-32_W15.24mm_SocketU38, U39, U40, U41
3470Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR12, R14, R16
347kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2, R3, R10
374HC138Package_DIP:DIP-16_W7.62mmU75, U76, U77
374HC283Package_DIP:DIP-16_W7.62mmU110, U111, U112
2100Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR17, R18
210kResistor_THT:R_Array_SIP9RN1, RN2
24.7kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR8, R9
25.1kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR19, R20
274AC04Package_DIP:DIP-14_W7.62mmU2, U130
274AC08Package_DIP:DIP-14_W7.62mmU16, U131
274AC245Package_DIP:DIP-20_W7.62mmU118, U125
274HC00Package_DIP:DIP-14_W7.62mmU73, U117
274HC02Package_DIP:DIP-14_W7.62mmU20, U100
274HC11Package_DIP:DIP-14_W7.62mmU95, U123
274HC14Package_DIP:DIP-14_W7.62mmU9, U91
274HC154Package_DIP:DIP-24_W15.24mmU23, U24
274HC164Package_DIP:DIP-14_W7.62mmU92, U93
274HC574Package_DIP:DIP-20_W7.62mmU119, U126
274HC86Package_DIP:DIP-14_W7.62mmU3, U113
2AS6C6264Package_DIP:DIP-28_W15.24mmU202, U203
110nCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC4
11MPotentiometer_THT:Potentiometer_Bourns_3386P_VerticalRV1
11N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1
11uCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC3
1200mAFuse:Fuse_1812_4532MetricF1
125.175MHzOscillator:Oscillator_DIP-14X1
125LC512Package_DIP:DIP-8_W7.62mmU90
12AFuse:Fuse_1812_4532MetricF2
12N3904Package_TO_SOT_THT:TO-92_InlineQ1
1470uCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC6
147nCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC5
174AC138Package_DIP:DIP-16_W7.62mmU67
174AC151Package_DIP:DIP-16_W7.62mmU128
174AC161Package_DIP:DIP-16_W7.62mmU1
174HC05Package_DIP:DIP-14_W7.62mmU97
1AS6C62256Package_DIP:DIP-28_W15.24mmU201
1COL_BConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP5
1COL_GConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP4
1COL_RConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP3
1CONTINUEButton_Switch_THT:SW_PUSH_6mmSW5
1EXPANSIONConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ5
1HALFConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1HALTLED_THT:LED_D3.0mmD4
1LOGICConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ4
1MCBANKConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP2
1MCP130-450Package_TO_SOT_THT:TO-92_InlineU7
1NE555Package_DIP:DIP-8_W7.62mmU10
1PS/2HeyPCB_LCSC:DC-IN-TH_MD-60SMJ1
1PWRLED_THT:LED_D3.0mmD3
1RESETButton_Switch_THT:SW_PUSH_6mmSW1
1RUN/STEPButton_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2QSW2
1SMBJ5.0ADiode_SMD:D_SMBD2
1STEPButton_Switch_THT:SW_PUSH_6mmSW4
1STEP/SLOWButton_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2QSW3
1USB-C powerConnector_USB:USB_C_Receptacle_GCT_USB4125-xx-x_6P_TopMnt_HorizontalJ3
1VGAConnector_Dsub:DSUB-15-HD_Socket_Horizontal_P2.29x1.90mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mmJ2
1piezoBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1

Questions

How big is the Open8-vga motherboard PCB?

It measures 313 × 259.5 mm and has 6 copper layers, 1.6 mm thick.

What parts does the Open8-vga motherboard use?

322 parts, built around the CD74HC541E, CD74AC245E, SST39SF010A-70-4C-PHE and SST39SF040-70-4C-PHE. 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 Open8-vga motherboard KiCad files?

From the adham404/Open8-VGA repository on GitHub, at the commit this page was made from: the board is kicad/board/open8-vga-motherboard.kicad_pcb and its schematic kicad/board/open8-vga-motherboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Open8-vga motherboard design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers238.8 × 120.6 mmTd4, the printed circuit board in 3D

    Td4

    unyacat/td4

    渡波郁著「CPUの創りかた」を独自に起こした基板

    252 parts1
  • 2 layers200 × 200 mmALU, the printed circuit board in 3D

    ALU

    Liu-Yuzh/PEC-1

    Hand made 8bitCPU

    58 parts1
  • 2 layers22.6 × 56 mmPcb power connect, the printed circuit board in 3D

    Pcb power connect

    bablokb/pcb-power-connect

    Feed power to the Raspberry Pi using Pins 2 and 4

    12 partsCC-BY-SA-4.0
  • 2 layers142.2 × 99.1 mmZX81plus38, the printed circuit board in 3D

    ZX81plus38

    Bambelweeny57/Purple-38er

    Build of a ZX81 +38 in Purple PCB's and Keys

    132 parts
  • 2 layers139.8 × 88.3 mmLED Driver, the printed circuit board in 3D

    LED Driver

    EZam1992/555_Timer_Boards_PCBA

    The 555 Timer Board is a beginner-friendly electronics project designed to introduce the author to the process of designing and manufacturing printed circuit boards (PCBs).

    55 parts
  • 2 layers57 × 34 mmDrum, the printed circuit board in 3D

    Drum

    eddyem/STM8_samples

    Some code samples and ready projects based on STM8 (deprecated)

    36 parts80
  • 2 layers58.6 × 38 mmProgramCounter, the printed circuit board in 3D

    ProgramCounter

    Robert-Riordan-UCD/8_Bit_CPU_PCB

    PCB version of Ben Eaters 8-bit breadboard computer

    17 partsCERN-OHL-P-2.0
  • 2 layers80.1 × 85.2 mmOmni wheel, the printed circuit board in 3D

    Omni wheel

    kashishkebab9/omni-mapper

    Omni-Wheeled Robot with custom PCB All Mechanical Assemblies, PCBs, Firmware, and Software designed, architected and programmed by Kashish Garg

    52 parts1MIT