Repository files navigation

APL1

APL1.png

A homebrew Apple 1 replica built around the 6502 microprocessor, with a modern microcontroller-based terminal that adds PS/2 keyboard and serial input alongside the original ASCII keyboard interface.


Table of Contents


Overview

The APL1 is a faithful recreation of the 1976 Apple 1 computer, rebuilt as an open-source KiCad project. It preserves the original 6502 + PIA architecture and the classic WozMon firmware experience, while replacing the bulky discrete terminal section of the original with an ATmega1284 microcontroller. The MCU emulates the Apple 1 keyboard and display handshake exactly, but also exposes a PS/2 keyboard port and a serial terminal connection for modern convenience.

Architecture

  • CPU: MOS 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) holding WozMon
  • PIA: 65C21 — the Apple 1 keyboard/display interface
  • Terminal: ATmega1284(P) controller emulating the original terminal handshake
  • Input: Original ASCII keyboard header, PS/2 keyboard, and serial (RS-232) input
  • Output: Serial terminal output, with composite video reserved for a future revision
  • Bus: 16-bit address bus, 8-bit bidirectional data bus, standard 6502 control signals
  • Clock: 1 MHz oscillator for the 6502; 28.63636 MHz crystal (8× NTSC colorburst) for the controller

Hardware

This repository contains KiCad 7.0+ PCB designs for the APL1 board.

APL1 Board

Hardware/APL1/

The single board hosting the 6502 CPU, memory, PIA, and the ATmega1284 terminal controller. Provides:

  • CPU: 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) preloaded with WozMon
  • PIA: 65C21 keyboard/display interface (original Apple 1 footprint)
  • Terminal Controller: ATmega1284(P) running APL1 Controller firmware
  • Keyboard buffer: 74LS245 octal bus transceiver
  • Glue logic: 74LS04, 74LS00, and 74LS138 address decoder
  • Serial: MAX232 level shifter with DB-9 (DTE) connector
  • Input: Original ASCII keyboard header and PS/2 keyboard connector
  • Video: RCA composite video jack (reserved for a future firmware revision)
  • Reset: Keyboard reset and clear controls handled by the controller
  • Power: 5V DC via barrel jack, with power switch and indicator LED

Revision History

Rev 1.1

  • Add 10k pull-down resistor R9 for KBDCLR.
  • Change pull-up resistors R1-R4 from 1k to 4.7k.
  • Add capacitor C17 for bulk capacitance at power supply.

Rev 1.0

  • Initial release.

Firmware

This repository contains firmware for the terminal controller, the system ROM, and the desktop terminal application.

APL1 Controller

Firmware/APL1 Controller/

PlatformIO-based firmware for the ATmega1284(P) terminal controller. Provides:

  • Faithful emulation of the Apple 1 keyboard and display handshake (DA / RDAB)
  • Original ASCII keyboard pass-through via the 74LS245 buffer
  • PS/2 keyboard input with a custom Set-2 ISR decoder mapped to Apple 1 ASCII
  • Serial (RS-232) terminal input and output at 115200 8N1
  • Control shortcuts for clear screen, reset, and throttle ("slow") mode
  • Keyboard reset and clear button handling
  • Composite video output hooks reserved for a future revision

See Firmware/APL1 Controller/README.md for build, flash, and pin-map details.

APL1 ROM

Firmware/APL1 ROM/

The system ROM image built from WozMon, Steve Wozniak's original Apple 1 monitor, assembled with the cc65 toolchain and burned to a 28C64 EEPROM.

See Firmware/APL1 ROM/README.md for build and programming instructions.

APL1 Terminal

Firmware/APL1-Terminal/

An Electron + Vue 3 desktop application that provides a faithful CRT terminal experience for the APL1. Connects to the board over the DB-9 serial port at 115200 8N1 and renders output using the original Signetics 2513 character ROM glyphs. Provides:

  • 40×24 character canvas rendered with the authentic Signetics 2513 font
  • Selectable phosphor color: white, amber, or green
  • CRT effects: phosphor glow, scanlines overlay, and screen flicker animation
  • Serial port connection and disconnection (auto-detected ports)
  • Keyboard input forwarded to the APL1 with Apple 1 control shortcuts (Ctrl+L clear, Ctrl+\ reset, Ctrl+T throttle)
  • Built-in program loader with paced character/line sending for 20 bundled Wozmon programs
  • Settings panel with per-character and per-line delay controls
  • macOS (Apple Silicon DMG), Linux (AppImage / deb), and Windows (NSIS installer) distribution builds, all built locally from macOS

See Firmware/APL1-Terminal/README.md for build and run instructions.

CAD

CAD/

3D models and images for the APL1 board and its components.

Production

Production/

JLCPCB-ready fabrication files, BOM, and component positions for PCB fabrication and assembly.

Schematics

Schematics/

Schematics for the APL1 board.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across the APL1 hardware project.

Bill of Materials

ReferenceQtyValueDescription
C1–C1010100nFDisc Capacitor
C11, C14, C15, C1641µFDisc Capacitor
C12, C13218pFDisc Capacitor
C31110uFElectrolytic Capacitor 16v
D11POWER LED3.0mm Power LED
J21KEYBOARDASCII Keyboard Header (DIP-16)
J31SERIAL (DTE)DB-9 Male
J415V DCDC Barrel Jack
J51PS/26-pin Mini-DIN (KMDGX-6S-BS)
J61VIDEORCA Jack (PJRAN1X1U0XX)
R1–R444.7kΩ1/8W Resistor
R611kΩ1/8W Resistor
R51330Ω1/8W Resistor
R7, R82820Ω1/8W Resistor
R9210kΩ1/8W Resistor
SW11POWERSPDT Switch (400MSP1R6BLKM6QE)
U1174LS04Hex Inverter
U2165026502 CPU
U3165C21PIA
U41AS6C6225632KB SRAM
U5174LS00Quad NAND
U6174LS1383-to-8 Decoder
U7128C648KB EEPROM
U8174LS245Octal Bus Transceiver
U91MAX232RS-232 Transceiver
U101ATmega1284-PTerminal Controller MCU
Y111MHzDIP-14 Oscillator
Y2128.636MHzCrystal

License

Hardware designs are released under the CERN Open Hardware Licence Version 2 – Permissive.

About

A homebrew Apple 1 replica

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

APL1

APL1.png

A homebrew Apple 1 replica built around the 6502 microprocessor, with a modern microcontroller-based terminal that adds PS/2 keyboard and serial input alongside the original ASCII keyboard interface.


Table of Contents


Overview

The APL1 is a faithful recreation of the 1976 Apple 1 computer, rebuilt as an open-source KiCad project. It preserves the original 6502 + PIA architecture and the classic WozMon firmware experience, while replacing the bulky discrete terminal section of the original with an ATmega1284 microcontroller. The MCU emulates the Apple 1 keyboard and display handshake exactly, but also exposes a PS/2 keyboard port and a serial terminal connection for modern convenience.

Architecture

  • CPU: MOS 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) holding WozMon
  • PIA: 65C21 — the Apple 1 keyboard/display interface
  • Terminal: ATmega1284(P) controller emulating the original terminal handshake
  • Input: Original ASCII keyboard header, PS/2 keyboard, and serial (RS-232) input
  • Output: Serial terminal output, with composite video reserved for a future revision
  • Bus: 16-bit address bus, 8-bit bidirectional data bus, standard 6502 control signals
  • Clock: 1 MHz oscillator for the 6502; 28.63636 MHz crystal (8× NTSC colorburst) for the controller

Hardware

This repository contains KiCad 7.0+ PCB designs for the APL1 board.

APL1 Board

Hardware/APL1/

The single board hosting the 6502 CPU, memory, PIA, and the ATmega1284 terminal controller. Provides:

  • CPU: 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) preloaded with WozMon
  • PIA: 65C21 keyboard/display interface (original Apple 1 footprint)
  • Terminal Controller: ATmega1284(P) running APL1 Controller firmware
  • Keyboard buffer: 74LS245 octal bus transceiver
  • Glue logic: 74LS04, 74LS00, and 74LS138 address decoder
  • Serial: MAX232 level shifter with DB-9 (DTE) connector
  • Input: Original ASCII keyboard header and PS/2 keyboard connector
  • Video: RCA composite video jack (reserved for a future firmware revision)
  • Reset: Keyboard reset and clear controls handled by the controller
  • Power: 5V DC via barrel jack, with power switch and indicator LED

Revision History

Rev 1.1

  • Add 10k pull-down resistor R9 for KBDCLR.
  • Change pull-up resistors R1-R4 from 1k to 4.7k.
  • Add capacitor C17 for bulk capacitance at power supply.

Rev 1.0

  • Initial release.

Firmware

This repository contains firmware for the terminal controller, the system ROM, and the desktop terminal application.

APL1 Controller

Firmware/APL1 Controller/

PlatformIO-based firmware for the ATmega1284(P) terminal controller. Provides:

  • Faithful emulation of the Apple 1 keyboard and display handshake (DA / RDAB)
  • Original ASCII keyboard pass-through via the 74LS245 buffer
  • PS/2 keyboard input with a custom Set-2 ISR decoder mapped to Apple 1 ASCII
  • Serial (RS-232) terminal input and output at 115200 8N1
  • Control shortcuts for clear screen, reset, and throttle ("slow") mode
  • Keyboard reset and clear button handling
  • Composite video output hooks reserved for a future revision

See Firmware/APL1 Controller/README.md for build, flash, and pin-map details.

APL1 ROM

Firmware/APL1 ROM/

The system ROM image built from WozMon, Steve Wozniak's original Apple 1 monitor, assembled with the cc65 toolchain and burned to a 28C64 EEPROM.

See Firmware/APL1 ROM/README.md for build and programming instructions.

APL1 Terminal

Firmware/APL1-Terminal/

An Electron + Vue 3 desktop application that provides a faithful CRT terminal experience for the APL1. Connects to the board over the DB-9 serial port at 115200 8N1 and renders output using the original Signetics 2513 character ROM glyphs. Provides:

  • 40×24 character canvas rendered with the authentic Signetics 2513 font
  • Selectable phosphor color: white, amber, or green
  • CRT effects: phosphor glow, scanlines overlay, and screen flicker animation
  • Serial port connection and disconnection (auto-detected ports)
  • Keyboard input forwarded to the APL1 with Apple 1 control shortcuts (Ctrl+L clear, Ctrl+\ reset, Ctrl+T throttle)
  • Built-in program loader with paced character/line sending for 20 bundled Wozmon programs
  • Settings panel with per-character and per-line delay controls
  • macOS (Apple Silicon DMG), Linux (AppImage / deb), and Windows (NSIS installer) distribution builds, all built locally from macOS

See Firmware/APL1-Terminal/README.md for build and run instructions.

CAD

CAD/

3D models and images for the APL1 board and its components.

Production

Production/

JLCPCB-ready fabrication files, BOM, and component positions for PCB fabrication and assembly.

Schematics

Schematics/

Schematics for the APL1 board.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across the APL1 hardware project.

Bill of Materials

ReferenceQtyValueDescription
C1–C1010100nFDisc Capacitor
C11, C14, C15, C1641µFDisc Capacitor
C12, C13218pFDisc Capacitor
C31110uFElectrolytic Capacitor 16v
D11POWER LED3.0mm Power LED
J21KEYBOARDASCII Keyboard Header (DIP-16)
J31SERIAL (DTE)DB-9 Male
J415V DCDC Barrel Jack
J51PS/26-pin Mini-DIN (KMDGX-6S-BS)
J61VIDEORCA Jack (PJRAN1X1U0XX)
R1–R444.7kΩ1/8W Resistor
R611kΩ1/8W Resistor
R51330Ω1/8W Resistor
R7, R82820Ω1/8W Resistor
R9210kΩ1/8W Resistor
SW11POWERSPDT Switch (400MSP1R6BLKM6QE)
U1174LS04Hex Inverter
U2165026502 CPU
U3165C21PIA
U41AS6C6225632KB SRAM
U5174LS00Quad NAND
U6174LS1383-to-8 Decoder
U7128C648KB EEPROM
U8174LS245Octal Bus Transceiver
U91MAX232RS-232 Transceiver
U101ATmega1284-PTerminal Controller MCU
Y111MHzDIP-14 Oscillator
Y2128.636MHzCrystal

License

Hardware designs are released under the CERN Open Hardware Licence Version 2 – Permissive.

About

A homebrew Apple 1 replica

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

APL1

APL1.png

A homebrew Apple 1 replica built around the 6502 microprocessor, with a modern microcontroller-based terminal that adds PS/2 keyboard and serial input alongside the original ASCII keyboard interface.


Table of Contents


Overview

The APL1 is a faithful recreation of the 1976 Apple 1 computer, rebuilt as an open-source KiCad project. It preserves the original 6502 + PIA architecture and the classic WozMon firmware experience, while replacing the bulky discrete terminal section of the original with an ATmega1284 microcontroller. The MCU emulates the Apple 1 keyboard and display handshake exactly, but also exposes a PS/2 keyboard port and a serial terminal connection for modern convenience.

Architecture

  • CPU: MOS 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) holding WozMon
  • PIA: 65C21 — the Apple 1 keyboard/display interface
  • Terminal: ATmega1284(P) controller emulating the original terminal handshake
  • Input: Original ASCII keyboard header, PS/2 keyboard, and serial (RS-232) input
  • Output: Serial terminal output, with composite video reserved for a future revision
  • Bus: 16-bit address bus, 8-bit bidirectional data bus, standard 6502 control signals
  • Clock: 1 MHz oscillator for the 6502; 28.63636 MHz crystal (8× NTSC colorburst) for the controller

Hardware

This repository contains KiCad 7.0+ PCB designs for the APL1 board.

APL1 Board

Hardware/APL1/

The single board hosting the 6502 CPU, memory, PIA, and the ATmega1284 terminal controller. Provides:

  • CPU: 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) preloaded with WozMon
  • PIA: 65C21 keyboard/display interface (original Apple 1 footprint)
  • Terminal Controller: ATmega1284(P) running APL1 Controller firmware
  • Keyboard buffer: 74LS245 octal bus transceiver
  • Glue logic: 74LS04, 74LS00, and 74LS138 address decoder
  • Serial: MAX232 level shifter with DB-9 (DTE) connector
  • Input: Original ASCII keyboard header and PS/2 keyboard connector
  • Video: RCA composite video jack (reserved for a future firmware revision)
  • Reset: Keyboard reset and clear controls handled by the controller
  • Power: 5V DC via barrel jack, with power switch and indicator LED

Revision History

Rev 1.1

  • Add 10k pull-down resistor R9 for KBDCLR.
  • Change pull-up resistors R1-R4 from 1k to 4.7k.
  • Add capacitor C17 for bulk capacitance at power supply.

Rev 1.0

  • Initial release.

Firmware

This repository contains firmware for the terminal controller, the system ROM, and the desktop terminal application.

APL1 Controller

Firmware/APL1 Controller/

PlatformIO-based firmware for the ATmega1284(P) terminal controller. Provides:

  • Faithful emulation of the Apple 1 keyboard and display handshake (DA / RDAB)
  • Original ASCII keyboard pass-through via the 74LS245 buffer
  • PS/2 keyboard input with a custom Set-2 ISR decoder mapped to Apple 1 ASCII
  • Serial (RS-232) terminal input and output at 115200 8N1
  • Control shortcuts for clear screen, reset, and throttle ("slow") mode
  • Keyboard reset and clear button handling
  • Composite video output hooks reserved for a future revision

See Firmware/APL1 Controller/README.md for build, flash, and pin-map details.

APL1 ROM

Firmware/APL1 ROM/

The system ROM image built from WozMon, Steve Wozniak's original Apple 1 monitor, assembled with the cc65 toolchain and burned to a 28C64 EEPROM.

See Firmware/APL1 ROM/README.md for build and programming instructions.

APL1 Terminal

Firmware/APL1-Terminal/

An Electron + Vue 3 desktop application that provides a faithful CRT terminal experience for the APL1. Connects to the board over the DB-9 serial port at 115200 8N1 and renders output using the original Signetics 2513 character ROM glyphs. Provides:

  • 40×24 character canvas rendered with the authentic Signetics 2513 font
  • Selectable phosphor color: white, amber, or green
  • CRT effects: phosphor glow, scanlines overlay, and screen flicker animation
  • Serial port connection and disconnection (auto-detected ports)
  • Keyboard input forwarded to the APL1 with Apple 1 control shortcuts (Ctrl+L clear, Ctrl+\ reset, Ctrl+T throttle)
  • Built-in program loader with paced character/line sending for 20 bundled Wozmon programs
  • Settings panel with per-character and per-line delay controls
  • macOS (Apple Silicon DMG), Linux (AppImage / deb), and Windows (NSIS installer) distribution builds, all built locally from macOS

See Firmware/APL1-Terminal/README.md for build and run instructions.

CAD

CAD/

3D models and images for the APL1 board and its components.

Production

Production/

JLCPCB-ready fabrication files, BOM, and component positions for PCB fabrication and assembly.

Schematics

Schematics/

Schematics for the APL1 board.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across the APL1 hardware project.

Bill of Materials

ReferenceQtyValueDescription
C1–C1010100nFDisc Capacitor
C11, C14, C15, C1641µFDisc Capacitor
C12, C13218pFDisc Capacitor
C31110uFElectrolytic Capacitor 16v
D11POWER LED3.0mm Power LED
J21KEYBOARDASCII Keyboard Header (DIP-16)
J31SERIAL (DTE)DB-9 Male
J415V DCDC Barrel Jack
J51PS/26-pin Mini-DIN (KMDGX-6S-BS)
J61VIDEORCA Jack (PJRAN1X1U0XX)
R1–R444.7kΩ1/8W Resistor
R611kΩ1/8W Resistor
R51330Ω1/8W Resistor
R7, R82820Ω1/8W Resistor
R9210kΩ1/8W Resistor
SW11POWERSPDT Switch (400MSP1R6BLKM6QE)
U1174LS04Hex Inverter
U2165026502 CPU
U3165C21PIA
U41AS6C6225632KB SRAM
U5174LS00Quad NAND
U6174LS1383-to-8 Decoder
U7128C648KB EEPROM
U8174LS245Octal Bus Transceiver
U91MAX232RS-232 Transceiver
U101ATmega1284-PTerminal Controller MCU
Y111MHzDIP-14 Oscillator
Y2128.636MHzCrystal

License

Hardware designs are released under the CERN Open Hardware Licence Version 2 – Permissive.

About

A homebrew Apple 1 replica

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

APL1

APL1.png

A homebrew Apple 1 replica built around the 6502 microprocessor, with a modern microcontroller-based terminal that adds PS/2 keyboard and serial input alongside the original ASCII keyboard interface.


Table of Contents


Overview

The APL1 is a faithful recreation of the 1976 Apple 1 computer, rebuilt as an open-source KiCad project. It preserves the original 6502 + PIA architecture and the classic WozMon firmware experience, while replacing the bulky discrete terminal section of the original with an ATmega1284 microcontroller. The MCU emulates the Apple 1 keyboard and display handshake exactly, but also exposes a PS/2 keyboard port and a serial terminal connection for modern convenience.

Architecture

  • CPU: MOS 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) holding WozMon
  • PIA: 65C21 — the Apple 1 keyboard/display interface
  • Terminal: ATmega1284(P) controller emulating the original terminal handshake
  • Input: Original ASCII keyboard header, PS/2 keyboard, and serial (RS-232) input
  • Output: Serial terminal output, with composite video reserved for a future revision
  • Bus: 16-bit address bus, 8-bit bidirectional data bus, standard 6502 control signals
  • Clock: 1 MHz oscillator for the 6502; 28.63636 MHz crystal (8× NTSC colorburst) for the controller

Hardware

This repository contains KiCad 7.0+ PCB designs for the APL1 board.

APL1 Board

Hardware/APL1/

The single board hosting the 6502 CPU, memory, PIA, and the ATmega1284 terminal controller. Provides:

  • CPU: 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) preloaded with WozMon
  • PIA: 65C21 keyboard/display interface (original Apple 1 footprint)
  • Terminal Controller: ATmega1284(P) running APL1 Controller firmware
  • Keyboard buffer: 74LS245 octal bus transceiver
  • Glue logic: 74LS04, 74LS00, and 74LS138 address decoder
  • Serial: MAX232 level shifter with DB-9 (DTE) connector
  • Input: Original ASCII keyboard header and PS/2 keyboard connector
  • Video: RCA composite video jack (reserved for a future firmware revision)
  • Reset: Keyboard reset and clear controls handled by the controller
  • Power: 5V DC via barrel jack, with power switch and indicator LED

Revision History

Rev 1.1

  • Add 10k pull-down resistor R9 for KBDCLR.
  • Change pull-up resistors R1-R4 from 1k to 4.7k.
  • Add capacitor C17 for bulk capacitance at power supply.

Rev 1.0

  • Initial release.

Firmware

This repository contains firmware for the terminal controller, the system ROM, and the desktop terminal application.

APL1 Controller

Firmware/APL1 Controller/

PlatformIO-based firmware for the ATmega1284(P) terminal controller. Provides:

  • Faithful emulation of the Apple 1 keyboard and display handshake (DA / RDAB)
  • Original ASCII keyboard pass-through via the 74LS245 buffer
  • PS/2 keyboard input with a custom Set-2 ISR decoder mapped to Apple 1 ASCII
  • Serial (RS-232) terminal input and output at 115200 8N1
  • Control shortcuts for clear screen, reset, and throttle ("slow") mode
  • Keyboard reset and clear button handling
  • Composite video output hooks reserved for a future revision

See Firmware/APL1 Controller/README.md for build, flash, and pin-map details.

APL1 ROM

Firmware/APL1 ROM/

The system ROM image built from WozMon, Steve Wozniak's original Apple 1 monitor, assembled with the cc65 toolchain and burned to a 28C64 EEPROM.

See Firmware/APL1 ROM/README.md for build and programming instructions.

APL1 Terminal

Firmware/APL1-Terminal/

An Electron + Vue 3 desktop application that provides a faithful CRT terminal experience for the APL1. Connects to the board over the DB-9 serial port at 115200 8N1 and renders output using the original Signetics 2513 character ROM glyphs. Provides:

  • 40×24 character canvas rendered with the authentic Signetics 2513 font
  • Selectable phosphor color: white, amber, or green
  • CRT effects: phosphor glow, scanlines overlay, and screen flicker animation
  • Serial port connection and disconnection (auto-detected ports)
  • Keyboard input forwarded to the APL1 with Apple 1 control shortcuts (Ctrl+L clear, Ctrl+\ reset, Ctrl+T throttle)
  • Built-in program loader with paced character/line sending for 20 bundled Wozmon programs
  • Settings panel with per-character and per-line delay controls
  • macOS (Apple Silicon DMG), Linux (AppImage / deb), and Windows (NSIS installer) distribution builds, all built locally from macOS

See Firmware/APL1-Terminal/README.md for build and run instructions.

CAD

CAD/

3D models and images for the APL1 board and its components.

Production

Production/

JLCPCB-ready fabrication files, BOM, and component positions for PCB fabrication and assembly.

Schematics

Schematics/

Schematics for the APL1 board.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across the APL1 hardware project.

Bill of Materials

ReferenceQtyValueDescription
C1–C1010100nFDisc Capacitor
C11, C14, C15, C1641µFDisc Capacitor
C12, C13218pFDisc Capacitor
C31110uFElectrolytic Capacitor 16v
D11POWER LED3.0mm Power LED
J21KEYBOARDASCII Keyboard Header (DIP-16)
J31SERIAL (DTE)DB-9 Male
J415V DCDC Barrel Jack
J51PS/26-pin Mini-DIN (KMDGX-6S-BS)
J61VIDEORCA Jack (PJRAN1X1U0XX)
R1–R444.7kΩ1/8W Resistor
R611kΩ1/8W Resistor
R51330Ω1/8W Resistor
R7, R82820Ω1/8W Resistor
R9210kΩ1/8W Resistor
SW11POWERSPDT Switch (400MSP1R6BLKM6QE)
U1174LS04Hex Inverter
U2165026502 CPU
U3165C21PIA
U41AS6C6225632KB SRAM
U5174LS00Quad NAND
U6174LS1383-to-8 Decoder
U7128C648KB EEPROM
U8174LS245Octal Bus Transceiver
U91MAX232RS-232 Transceiver
U101ATmega1284-PTerminal Controller MCU
Y111MHzDIP-14 Oscillator
Y2128.636MHzCrystal

License

Hardware designs are released under the CERN Open Hardware Licence Version 2 – Permissive.

About

A homebrew Apple 1 replica

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

APL1

APL1.png

A homebrew Apple 1 replica built around the 6502 microprocessor, with a modern microcontroller-based terminal that adds PS/2 keyboard and serial input alongside the original ASCII keyboard interface.


Table of Contents


Overview

The APL1 is a faithful recreation of the 1976 Apple 1 computer, rebuilt as an open-source KiCad project. It preserves the original 6502 + PIA architecture and the classic WozMon firmware experience, while replacing the bulky discrete terminal section of the original with an ATmega1284 microcontroller. The MCU emulates the Apple 1 keyboard and display handshake exactly, but also exposes a PS/2 keyboard port and a serial terminal connection for modern convenience.

Architecture

  • CPU: MOS 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) holding WozMon
  • PIA: 65C21 — the Apple 1 keyboard/display interface
  • Terminal: ATmega1284(P) controller emulating the original terminal handshake
  • Input: Original ASCII keyboard header, PS/2 keyboard, and serial (RS-232) input
  • Output: Serial terminal output, with composite video reserved for a future revision
  • Bus: 16-bit address bus, 8-bit bidirectional data bus, standard 6502 control signals
  • Clock: 1 MHz oscillator for the 6502; 28.63636 MHz crystal (8× NTSC colorburst) for the controller

Hardware

This repository contains KiCad 7.0+ PCB designs for the APL1 board.

APL1 Board

Hardware/APL1/

The single board hosting the 6502 CPU, memory, PIA, and the ATmega1284 terminal controller. Provides:

  • CPU: 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) preloaded with WozMon
  • PIA: 65C21 keyboard/display interface (original Apple 1 footprint)
  • Terminal Controller: ATmega1284(P) running APL1 Controller firmware
  • Keyboard buffer: 74LS245 octal bus transceiver
  • Glue logic: 74LS04, 74LS00, and 74LS138 address decoder
  • Serial: MAX232 level shifter with DB-9 (DTE) connector
  • Input: Original ASCII keyboard header and PS/2 keyboard connector
  • Video: RCA composite video jack (reserved for a future firmware revision)
  • Reset: Keyboard reset and clear controls handled by the controller
  • Power: 5V DC via barrel jack, with power switch and indicator LED

Revision History

Rev 1.1

  • Add 10k pull-down resistor R9 for KBDCLR.
  • Change pull-up resistors R1-R4 from 1k to 4.7k.
  • Add capacitor C17 for bulk capacitance at power supply.

Rev 1.0

  • Initial release.

Firmware

This repository contains firmware for the terminal controller, the system ROM, and the desktop terminal application.

APL1 Controller

Firmware/APL1 Controller/

PlatformIO-based firmware for the ATmega1284(P) terminal controller. Provides:

  • Faithful emulation of the Apple 1 keyboard and display handshake (DA / RDAB)
  • Original ASCII keyboard pass-through via the 74LS245 buffer
  • PS/2 keyboard input with a custom Set-2 ISR decoder mapped to Apple 1 ASCII
  • Serial (RS-232) terminal input and output at 115200 8N1
  • Control shortcuts for clear screen, reset, and throttle ("slow") mode
  • Keyboard reset and clear button handling
  • Composite video output hooks reserved for a future revision

See Firmware/APL1 Controller/README.md for build, flash, and pin-map details.

APL1 ROM

Firmware/APL1 ROM/

The system ROM image built from WozMon, Steve Wozniak's original Apple 1 monitor, assembled with the cc65 toolchain and burned to a 28C64 EEPROM.

See Firmware/APL1 ROM/README.md for build and programming instructions.

APL1 Terminal

Firmware/APL1-Terminal/

An Electron + Vue 3 desktop application that provides a faithful CRT terminal experience for the APL1. Connects to the board over the DB-9 serial port at 115200 8N1 and renders output using the original Signetics 2513 character ROM glyphs. Provides:

  • 40×24 character canvas rendered with the authentic Signetics 2513 font
  • Selectable phosphor color: white, amber, or green
  • CRT effects: phosphor glow, scanlines overlay, and screen flicker animation
  • Serial port connection and disconnection (auto-detected ports)
  • Keyboard input forwarded to the APL1 with Apple 1 control shortcuts (Ctrl+L clear, Ctrl+\ reset, Ctrl+T throttle)
  • Built-in program loader with paced character/line sending for 20 bundled Wozmon programs
  • Settings panel with per-character and per-line delay controls
  • macOS (Apple Silicon DMG), Linux (AppImage / deb), and Windows (NSIS installer) distribution builds, all built locally from macOS

See Firmware/APL1-Terminal/README.md for build and run instructions.

CAD

CAD/

3D models and images for the APL1 board and its components.

Production

Production/

JLCPCB-ready fabrication files, BOM, and component positions for PCB fabrication and assembly.

Schematics

Schematics/

Schematics for the APL1 board.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across the APL1 hardware project.

Bill of Materials

ReferenceQtyValueDescription
C1–C1010100nFDisc Capacitor
C11, C14, C15, C1641µFDisc Capacitor
C12, C13218pFDisc Capacitor
C31110uFElectrolytic Capacitor 16v
D11POWER LED3.0mm Power LED
J21KEYBOARDASCII Keyboard Header (DIP-16)
J31SERIAL (DTE)DB-9 Male
J415V DCDC Barrel Jack
J51PS/26-pin Mini-DIN (KMDGX-6S-BS)
J61VIDEORCA Jack (PJRAN1X1U0XX)
R1–R444.7kΩ1/8W Resistor
R611kΩ1/8W Resistor
R51330Ω1/8W Resistor
R7, R82820Ω1/8W Resistor
R9210kΩ1/8W Resistor
SW11POWERSPDT Switch (400MSP1R6BLKM6QE)
U1174LS04Hex Inverter
U2165026502 CPU
U3165C21PIA
U41AS6C6225632KB SRAM
U5174LS00Quad NAND
U6174LS1383-to-8 Decoder
U7128C648KB EEPROM
U8174LS245Octal Bus Transceiver
U91MAX232RS-232 Transceiver
U101ATmega1284-PTerminal Controller MCU
Y111MHzDIP-14 Oscillator
Y2128.636MHzCrystal

License

Hardware designs are released under the CERN Open Hardware Licence Version 2 – Permissive.

About

A homebrew Apple 1 replica

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

APL1

APL1.png

A homebrew Apple 1 replica built around the 6502 microprocessor, with a modern microcontroller-based terminal that adds PS/2 keyboard and serial input alongside the original ASCII keyboard interface.


Table of Contents


Overview

The APL1 is a faithful recreation of the 1976 Apple 1 computer, rebuilt as an open-source KiCad project. It preserves the original 6502 + PIA architecture and the classic WozMon firmware experience, while replacing the bulky discrete terminal section of the original with an ATmega1284 microcontroller. The MCU emulates the Apple 1 keyboard and display handshake exactly, but also exposes a PS/2 keyboard port and a serial terminal connection for modern convenience.

Architecture

  • CPU: MOS 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) holding WozMon
  • PIA: 65C21 — the Apple 1 keyboard/display interface
  • Terminal: ATmega1284(P) controller emulating the original terminal handshake
  • Input: Original ASCII keyboard header, PS/2 keyboard, and serial (RS-232) input
  • Output: Serial terminal output, with composite video reserved for a future revision
  • Bus: 16-bit address bus, 8-bit bidirectional data bus, standard 6502 control signals
  • Clock: 1 MHz oscillator for the 6502; 28.63636 MHz crystal (8× NTSC colorburst) for the controller

Hardware

This repository contains KiCad 7.0+ PCB designs for the APL1 board.

APL1 Board

Hardware/APL1/

The single board hosting the 6502 CPU, memory, PIA, and the ATmega1284 terminal controller. Provides:

  • CPU: 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) preloaded with WozMon
  • PIA: 65C21 keyboard/display interface (original Apple 1 footprint)
  • Terminal Controller: ATmega1284(P) running APL1 Controller firmware
  • Keyboard buffer: 74LS245 octal bus transceiver
  • Glue logic: 74LS04, 74LS00, and 74LS138 address decoder
  • Serial: MAX232 level shifter with DB-9 (DTE) connector
  • Input: Original ASCII keyboard header and PS/2 keyboard connector
  • Video: RCA composite video jack (reserved for a future firmware revision)
  • Reset: Keyboard reset and clear controls handled by the controller
  • Power: 5V DC via barrel jack, with power switch and indicator LED

Revision History

Rev 1.1

  • Add 10k pull-down resistor R9 for KBDCLR.
  • Change pull-up resistors R1-R4 from 1k to 4.7k.
  • Add capacitor C17 for bulk capacitance at power supply.

Rev 1.0

  • Initial release.

Firmware

This repository contains firmware for the terminal controller, the system ROM, and the desktop terminal application.

APL1 Controller

Firmware/APL1 Controller/

PlatformIO-based firmware for the ATmega1284(P) terminal controller. Provides:

  • Faithful emulation of the Apple 1 keyboard and display handshake (DA / RDAB)
  • Original ASCII keyboard pass-through via the 74LS245 buffer
  • PS/2 keyboard input with a custom Set-2 ISR decoder mapped to Apple 1 ASCII
  • Serial (RS-232) terminal input and output at 115200 8N1
  • Control shortcuts for clear screen, reset, and throttle ("slow") mode
  • Keyboard reset and clear button handling
  • Composite video output hooks reserved for a future revision

See Firmware/APL1 Controller/README.md for build, flash, and pin-map details.

APL1 ROM

Firmware/APL1 ROM/

The system ROM image built from WozMon, Steve Wozniak's original Apple 1 monitor, assembled with the cc65 toolchain and burned to a 28C64 EEPROM.

See Firmware/APL1 ROM/README.md for build and programming instructions.

APL1 Terminal

Firmware/APL1-Terminal/

An Electron + Vue 3 desktop application that provides a faithful CRT terminal experience for the APL1. Connects to the board over the DB-9 serial port at 115200 8N1 and renders output using the original Signetics 2513 character ROM glyphs. Provides:

  • 40×24 character canvas rendered with the authentic Signetics 2513 font
  • Selectable phosphor color: white, amber, or green
  • CRT effects: phosphor glow, scanlines overlay, and screen flicker animation
  • Serial port connection and disconnection (auto-detected ports)
  • Keyboard input forwarded to the APL1 with Apple 1 control shortcuts (Ctrl+L clear, Ctrl+\ reset, Ctrl+T throttle)
  • Built-in program loader with paced character/line sending for 20 bundled Wozmon programs
  • Settings panel with per-character and per-line delay controls
  • macOS (Apple Silicon DMG), Linux (AppImage / deb), and Windows (NSIS installer) distribution builds, all built locally from macOS

See Firmware/APL1-Terminal/README.md for build and run instructions.

CAD

CAD/

3D models and images for the APL1 board and its components.

Production

Production/

JLCPCB-ready fabrication files, BOM, and component positions for PCB fabrication and assembly.

Schematics

Schematics/

Schematics for the APL1 board.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across the APL1 hardware project.

Bill of Materials

ReferenceQtyValueDescription
C1–C1010100nFDisc Capacitor
C11, C14, C15, C1641µFDisc Capacitor
C12, C13218pFDisc Capacitor
C31110uFElectrolytic Capacitor 16v
D11POWER LED3.0mm Power LED
J21KEYBOARDASCII Keyboard Header (DIP-16)
J31SERIAL (DTE)DB-9 Male
J415V DCDC Barrel Jack
J51PS/26-pin Mini-DIN (KMDGX-6S-BS)
J61VIDEORCA Jack (PJRAN1X1U0XX)
R1–R444.7kΩ1/8W Resistor
R611kΩ1/8W Resistor
R51330Ω1/8W Resistor
R7, R82820Ω1/8W Resistor
R9210kΩ1/8W Resistor
SW11POWERSPDT Switch (400MSP1R6BLKM6QE)
U1174LS04Hex Inverter
U2165026502 CPU
U3165C21PIA
U41AS6C6225632KB SRAM
U5174LS00Quad NAND
U6174LS1383-to-8 Decoder
U7128C648KB EEPROM
U8174LS245Octal Bus Transceiver
U91MAX232RS-232 Transceiver
U101ATmega1284-PTerminal Controller MCU
Y111MHzDIP-14 Oscillator
Y2128.636MHzCrystal

License

Hardware designs are released under the CERN Open Hardware Licence Version 2 – Permissive.

About

A homebrew Apple 1 replica

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

APL1

APL1.png

A homebrew Apple 1 replica built around the 6502 microprocessor, with a modern microcontroller-based terminal that adds PS/2 keyboard and serial input alongside the original ASCII keyboard interface.


Table of Contents


Overview

The APL1 is a faithful recreation of the 1976 Apple 1 computer, rebuilt as an open-source KiCad project. It preserves the original 6502 + PIA architecture and the classic WozMon firmware experience, while replacing the bulky discrete terminal section of the original with an ATmega1284 microcontroller. The MCU emulates the Apple 1 keyboard and display handshake exactly, but also exposes a PS/2 keyboard port and a serial terminal connection for modern convenience.

Architecture

  • CPU: MOS 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) holding WozMon
  • PIA: 65C21 — the Apple 1 keyboard/display interface
  • Terminal: ATmega1284(P) controller emulating the original terminal handshake
  • Input: Original ASCII keyboard header, PS/2 keyboard, and serial (RS-232) input
  • Output: Serial terminal output, with composite video reserved for a future revision
  • Bus: 16-bit address bus, 8-bit bidirectional data bus, standard 6502 control signals
  • Clock: 1 MHz oscillator for the 6502; 28.63636 MHz crystal (8× NTSC colorburst) for the controller

Hardware

This repository contains KiCad 7.0+ PCB designs for the APL1 board.

APL1 Board

Hardware/APL1/

The single board hosting the 6502 CPU, memory, PIA, and the ATmega1284 terminal controller. Provides:

  • CPU: 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) preloaded with WozMon
  • PIA: 65C21 keyboard/display interface (original Apple 1 footprint)
  • Terminal Controller: ATmega1284(P) running APL1 Controller firmware
  • Keyboard buffer: 74LS245 octal bus transceiver
  • Glue logic: 74LS04, 74LS00, and 74LS138 address decoder
  • Serial: MAX232 level shifter with DB-9 (DTE) connector
  • Input: Original ASCII keyboard header and PS/2 keyboard connector
  • Video: RCA composite video jack (reserved for a future firmware revision)
  • Reset: Keyboard reset and clear controls handled by the controller
  • Power: 5V DC via barrel jack, with power switch and indicator LED

Revision History

Rev 1.1

  • Add 10k pull-down resistor R9 for KBDCLR.
  • Change pull-up resistors R1-R4 from 1k to 4.7k.
  • Add capacitor C17 for bulk capacitance at power supply.

Rev 1.0

  • Initial release.

Firmware

This repository contains firmware for the terminal controller, the system ROM, and the desktop terminal application.

APL1 Controller

Firmware/APL1 Controller/

PlatformIO-based firmware for the ATmega1284(P) terminal controller. Provides:

  • Faithful emulation of the Apple 1 keyboard and display handshake (DA / RDAB)
  • Original ASCII keyboard pass-through via the 74LS245 buffer
  • PS/2 keyboard input with a custom Set-2 ISR decoder mapped to Apple 1 ASCII
  • Serial (RS-232) terminal input and output at 115200 8N1
  • Control shortcuts for clear screen, reset, and throttle ("slow") mode
  • Keyboard reset and clear button handling
  • Composite video output hooks reserved for a future revision

See Firmware/APL1 Controller/README.md for build, flash, and pin-map details.

APL1 ROM

Firmware/APL1 ROM/

The system ROM image built from WozMon, Steve Wozniak's original Apple 1 monitor, assembled with the cc65 toolchain and burned to a 28C64 EEPROM.

See Firmware/APL1 ROM/README.md for build and programming instructions.

APL1 Terminal

Firmware/APL1-Terminal/

An Electron + Vue 3 desktop application that provides a faithful CRT terminal experience for the APL1. Connects to the board over the DB-9 serial port at 115200 8N1 and renders output using the original Signetics 2513 character ROM glyphs. Provides:

  • 40×24 character canvas rendered with the authentic Signetics 2513 font
  • Selectable phosphor color: white, amber, or green
  • CRT effects: phosphor glow, scanlines overlay, and screen flicker animation
  • Serial port connection and disconnection (auto-detected ports)
  • Keyboard input forwarded to the APL1 with Apple 1 control shortcuts (Ctrl+L clear, Ctrl+\ reset, Ctrl+T throttle)
  • Built-in program loader with paced character/line sending for 20 bundled Wozmon programs
  • Settings panel with per-character and per-line delay controls
  • macOS (Apple Silicon DMG), Linux (AppImage / deb), and Windows (NSIS installer) distribution builds, all built locally from macOS

See Firmware/APL1-Terminal/README.md for build and run instructions.

CAD

CAD/

3D models and images for the APL1 board and its components.

Production

Production/

JLCPCB-ready fabrication files, BOM, and component positions for PCB fabrication and assembly.

Schematics

Schematics/

Schematics for the APL1 board.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across the APL1 hardware project.

Bill of Materials

ReferenceQtyValueDescription
C1–C1010100nFDisc Capacitor
C11, C14, C15, C1641µFDisc Capacitor
C12, C13218pFDisc Capacitor
C31110uFElectrolytic Capacitor 16v
D11POWER LED3.0mm Power LED
J21KEYBOARDASCII Keyboard Header (DIP-16)
J31SERIAL (DTE)DB-9 Male
J415V DCDC Barrel Jack
J51PS/26-pin Mini-DIN (KMDGX-6S-BS)
J61VIDEORCA Jack (PJRAN1X1U0XX)
R1–R444.7kΩ1/8W Resistor
R611kΩ1/8W Resistor
R51330Ω1/8W Resistor
R7, R82820Ω1/8W Resistor
R9210kΩ1/8W Resistor
SW11POWERSPDT Switch (400MSP1R6BLKM6QE)
U1174LS04Hex Inverter
U2165026502 CPU
U3165C21PIA
U41AS6C6225632KB SRAM
U5174LS00Quad NAND
U6174LS1383-to-8 Decoder
U7128C648KB EEPROM
U8174LS245Octal Bus Transceiver
U91MAX232RS-232 Transceiver
U101ATmega1284-PTerminal Controller MCU
Y111MHzDIP-14 Oscillator
Y2128.636MHzCrystal

License

Hardware designs are released under the CERN Open Hardware Licence Version 2 – Permissive.

About

A homebrew Apple 1 replica

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

APL1

APL1.png

A homebrew Apple 1 replica built around the 6502 microprocessor, with a modern microcontroller-based terminal that adds PS/2 keyboard and serial input alongside the original ASCII keyboard interface.


Table of Contents


Overview

The APL1 is a faithful recreation of the 1976 Apple 1 computer, rebuilt as an open-source KiCad project. It preserves the original 6502 + PIA architecture and the classic WozMon firmware experience, while replacing the bulky discrete terminal section of the original with an ATmega1284 microcontroller. The MCU emulates the Apple 1 keyboard and display handshake exactly, but also exposes a PS/2 keyboard port and a serial terminal connection for modern convenience.

Architecture

  • CPU: MOS 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) holding WozMon
  • PIA: 65C21 — the Apple 1 keyboard/display interface
  • Terminal: ATmega1284(P) controller emulating the original terminal handshake
  • Input: Original ASCII keyboard header, PS/2 keyboard, and serial (RS-232) input
  • Output: Serial terminal output, with composite video reserved for a future revision
  • Bus: 16-bit address bus, 8-bit bidirectional data bus, standard 6502 control signals
  • Clock: 1 MHz oscillator for the 6502; 28.63636 MHz crystal (8× NTSC colorburst) for the controller

Hardware

This repository contains KiCad 7.0+ PCB designs for the APL1 board.

APL1 Board

Hardware/APL1/

The single board hosting the 6502 CPU, memory, PIA, and the ATmega1284 terminal controller. Provides:

  • CPU: 6502 running at 1 MHz
  • RAM: 32KB SRAM (AS6C62256)
  • ROM: 8KB EEPROM (28C64) preloaded with WozMon
  • PIA: 65C21 keyboard/display interface (original Apple 1 footprint)
  • Terminal Controller: ATmega1284(P) running APL1 Controller firmware
  • Keyboard buffer: 74LS245 octal bus transceiver
  • Glue logic: 74LS04, 74LS00, and 74LS138 address decoder
  • Serial: MAX232 level shifter with DB-9 (DTE) connector
  • Input: Original ASCII keyboard header and PS/2 keyboard connector
  • Video: RCA composite video jack (reserved for a future firmware revision)
  • Reset: Keyboard reset and clear controls handled by the controller
  • Power: 5V DC via barrel jack, with power switch and indicator LED

Revision History

Rev 1.1

  • Add 10k pull-down resistor R9 for KBDCLR.
  • Change pull-up resistors R1-R4 from 1k to 4.7k.
  • Add capacitor C17 for bulk capacitance at power supply.

Rev 1.0

  • Initial release.

Firmware

This repository contains firmware for the terminal controller, the system ROM, and the desktop terminal application.

APL1 Controller

Firmware/APL1 Controller/

PlatformIO-based firmware for the ATmega1284(P) terminal controller. Provides:

  • Faithful emulation of the Apple 1 keyboard and display handshake (DA / RDAB)
  • Original ASCII keyboard pass-through via the 74LS245 buffer
  • PS/2 keyboard input with a custom Set-2 ISR decoder mapped to Apple 1 ASCII
  • Serial (RS-232) terminal input and output at 115200 8N1
  • Control shortcuts for clear screen, reset, and throttle ("slow") mode
  • Keyboard reset and clear button handling
  • Composite video output hooks reserved for a future revision

See Firmware/APL1 Controller/README.md for build, flash, and pin-map details.

APL1 ROM

Firmware/APL1 ROM/

The system ROM image built from WozMon, Steve Wozniak's original Apple 1 monitor, assembled with the cc65 toolchain and burned to a 28C64 EEPROM.

See Firmware/APL1 ROM/README.md for build and programming instructions.

APL1 Terminal

Firmware/APL1-Terminal/

An Electron + Vue 3 desktop application that provides a faithful CRT terminal experience for the APL1. Connects to the board over the DB-9 serial port at 115200 8N1 and renders output using the original Signetics 2513 character ROM glyphs. Provides:

  • 40×24 character canvas rendered with the authentic Signetics 2513 font
  • Selectable phosphor color: white, amber, or green
  • CRT effects: phosphor glow, scanlines overlay, and screen flicker animation
  • Serial port connection and disconnection (auto-detected ports)
  • Keyboard input forwarded to the APL1 with Apple 1 control shortcuts (Ctrl+L clear, Ctrl+\ reset, Ctrl+T throttle)
  • Built-in program loader with paced character/line sending for 20 bundled Wozmon programs
  • Settings panel with per-character and per-line delay controls
  • macOS (Apple Silicon DMG), Linux (AppImage / deb), and Windows (NSIS installer) distribution builds, all built locally from macOS

See Firmware/APL1-Terminal/README.md for build and run instructions.

CAD

CAD/

3D models and images for the APL1 board and its components.

Production

Production/

JLCPCB-ready fabrication files, BOM, and component positions for PCB fabrication and assembly.

Schematics

Schematics/

Schematics for the APL1 board.

Libraries

Libraries/

Shared KiCad symbol and footprint libraries used across the APL1 hardware project.

Bill of Materials

ReferenceQtyValueDescription
C1–C1010100nFDisc Capacitor
C11, C14, C15, C1641µFDisc Capacitor
C12, C13218pFDisc Capacitor
C31110uFElectrolytic Capacitor 16v
D11POWER LED3.0mm Power LED
J21KEYBOARDASCII Keyboard Header (DIP-16)
J31SERIAL (DTE)DB-9 Male
J415V DCDC Barrel Jack
J51PS/26-pin Mini-DIN (KMDGX-6S-BS)
J61VIDEORCA Jack (PJRAN1X1U0XX)
R1–R444.7kΩ1/8W Resistor
R611kΩ1/8W Resistor
R51330Ω1/8W Resistor
R7, R82820Ω1/8W Resistor
R9210kΩ1/8W Resistor
SW11POWERSPDT Switch (400MSP1R6BLKM6QE)
U1174LS04Hex Inverter
U2165026502 CPU
U3165C21PIA
U41AS6C6225632KB SRAM
U5174LS00Quad NAND
U6174LS1383-to-8 Decoder
U7128C648KB EEPROM
U8174LS245Octal Bus Transceiver
U91MAX232RS-232 Transceiver
U101ATmega1284-PTerminal Controller MCU
Y111MHzDIP-14 Oscillator
Y2128.636MHzCrystal

License

Hardware designs are released under the CERN Open Hardware Licence Version 2 – Permissive.

About

A homebrew Apple 1 replica

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages