Skip to the content
2 layers98.6 × 95.1 mmTRS80 Model I Arduino Mega Shield, the printed circuit board in 3D

TRS80 Model I Arduino Mega Shield

RetroStack/TRS-80-Model-I-Arduino-Library5

An Arduino Library for the TRS-80 Model 1

Size
98.6 × 95.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
27
Nets
89
Pads
200
Tracks, vias
618, 32
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
24 Jun 2024
Updated
5 Sep 2026

Overview

TRS80 Model I Arduino Mega Shield is an open-source printed circuit board by RetroStack, from the RetroStack/TRS-80-Model-I-Arduino-Library repository on GitHub, published under the MIT licence. It is a 2-layer board of 98.6 × 95.1 mm with 27 parts on 89 nets, routed with 618 tracks and 32 vias.

Its parts include 9 resistors, 7 switches, 6 connectors, 2 diodes and 1 IC. It belongs with the AVR (ATmega, ATtiny) boards of this library.

README

README.md

TRS-80 Model I Arduino Library

NOTE: There are still a lot of changes that are happening within this library. Use this only for testing. We will make breaking changes. A stable version will be released shortly before TA 2025.

Arduino library for interfacing with TRS-80 Model I hardware via the 40-pin edge connector. Control memory, video, keyboard, and bus signals to create ROM dumpers, RAM testers, and custom peripherals.

Hardware Required: Arduino Mega 2560 (only board with sufficient GPIO pins)

Overview

Quick Start

Basic Usage

cpp
#include <M1Shield.h>
#include <Display_ST7789_320x240.h>  // Choose your display

Display_ST7789_320x240 displayProvider;

void setup() {
    M1Shield.begin(displayProvider);
}

void loop() {
    M1Shield.loop();
}

Read & Write

cpp
#include <Model1.h>

void setup() {
    Model1.begin();
    Model1.activateTestSignal();

    uint8_t data = Model1.readMemory(0x0000);  // Read ROM
    Model1.writeMemory(0x3C00, 0x41);          // Write to video RAM

    Model1.deactivateTestSignal();
}

UI Framework with String Support

cpp
#include <ContentScreen.h>

class MyScreen : public ContentScreen {
public:
    MyScreen() {
        // Three ways to set titles/text - choose what fits your needs:
        setTitle("Static Title");                    // Simple C-string
        setTitle(String("Score: ") + String(score)); // Dynamic Arduino String
        setTitleF(F("Memory Efficient"));            // Flash string (F-macro)
    }

protected:
    void _drawContent() override {
        // Draw dynamic content easily
        String playerName = "Alice";
        drawText(10, 10, String("Player: ") + playerName, WHITE);
        drawTextF(10, 30, F("Static text"), YELLOW);  // Saves RAM
    }
};

Key Features

  • Complete TRS-80 Bus Control - Read/write memory, control signals, interrupts
  • High-Level Classes - Model1, Video, Keyboard, ROM, Cassette for easy access
  • Low-Level Access - Model1LowLevel for advanced users requiring precise control
  • M1Shield Support - Hardware abstraction for Arduino shield with display/input
  • UI Framework - Screen management system for building interactive applications
  • Flexible String Support - All text functions support C-strings, Arduino Strings, and F-strings
  • Multiple Display Support - ST7789, ILI9341, ST7796, SSD1306, and more
  • Arduino Compatible - Standard Print interface, familiar patterns

Installation

  1. Install via Arduino Library Manager or download from GitHub
  2. Connect Arduino Mega 2560 to TRS-80 (M1Shield recommended, direct wiring supported)
  3. Try examples: M1Shield/SimpleM1Shield or Model1/Model1/SimpleModel1

Examples

Complete Examples Guide - Comprehensive examples with progressive learning paths

The examples folder contains over 40 examples organized by functionality:

All examples follow a Simple/Comprehensive pattern for progressive learning, with complete documentation and integration guidance.

Connection Options

M1Shield (Recommended): Clean, safe connection with built-in display and controls
Direct Wiring: Connect via jumper wires using our pin mapping guide

WARNING: See TEST Signal Fix for hardware reliability improvement

Documentation

Complete Documentation - Detailed API reference and guides

Main TRS-80 Model 1 Repository

For additional resources related to the TRS-80 Model 1, be sure to check out the central page for the TRS-80 Model 1 on RetroStack.

Support this Project

RetroStack is passionate about exploring and preserving the legacy of older computer systems. My work involves creating detailed documentation and videos to share the knowledge. I am also dedicated to reviving these classic systems by reimplementing them and offering replacement parts at no cost. If you're keen on supporting this unique project, I invite you to visit my Patreon page. Your support would be immensely valuable and greatly appreciated!

License

This project is licensed under the MIT License - see the LICENSE file for details.

Parts

27
QtyValueFootprintReferences
52.2kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5, R6, R7, R8, R9
4330Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R3, R4
13.3kResistor_THT:R_Array_SIP6RN1
1Arduino_Mega_2560RetroStackLibrary:Arduino_Mega_2560U1
1BuzzerRetroStackLibrary:BuzzerBZ1
1Cassette Int.Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ2
1DownRetroStackLibrary:SW_SPST_PushSW4
1Edge Connector IDCConnector_IDC:IDC-Header_2x20_P2.54mm_VerticalJ1
1I2CConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ5
1JoystickConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ6
1LEDLED_THT:LED_D3.0mmD1
1LED_ABGRLED_THT:LED_D5.0mm-4_RGBD2
1LeftRetroStackLibrary:SW_SPST_PushSW2
1MenuRetroStackLibrary:SW_SPST_PushSW6
1ResetRetroStackLibrary:SW_SPST_PushSW1
1RightRetroStackLibrary:SW_SPST_PushSW3
1SD CardConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ3
1SPI Disp.Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ4
1SelectRetroStackLibrary:SW_SPST_PushSW7
1UpRetroStackLibrary:SW_SPST_PushSW5

Similar boards

  • 2 layers47.6 × 27.3 mmMmc usb 1, the printed circuit board in 3D

    Mmc usb 1

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    27 parts1.2k
  • 2 layers77.4 × 77.4 mmCORAZON LEDS CON FADE, the printed circuit board in 3D

    CORAZON LEDS CON FADE

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    27 parts915
  • 2 layers44.2 × 29.3 mmI2c tiny usb, the printed circuit board in 3D

    I2c tiny usb

    harbaum/I2C-Tiny-USB

    Cheap and simple I²C to USB interface

    27 parts454
  • 2 layers22 × 42 mmNvme bm to e, the printed circuit board in 3D

    Nvme bm to e

    CRImier/MyKiCad

    My KiCad boards. Can't be bothered uploading individually anymore, so here you go.

    27 parts253GPL-3.0
  • 2 layers80 × 61 mmPicoProducer, the printed circuit board in 3D

    PicoProducer

    pjgpetecodes/pico-streamdeck

    This project is an OBS Controller using a Raspberry Pi Pico and CircuitPython.

    27 parts230MIT
  • 2 layers186 × 45 mmAddOnD, the printed circuit board in 3D

    AddOnD

    freeDSP/freeDSP-aurora

    freeDSP ADAU1452 with 8 analog input, 8 analog outputs, S/P-DIF I/O, ADAT I/O, USB Audio Class2, WiFi, Bluetooth

    27 parts226CC-BY-SA-4.0
  • 2 layers29.6 × 40.6 mmDbwifi revB, the printed circuit board in 3D

    Dbwifi revB

    ugcs/ddc

    Drone Show Software is software designed for drone shows, allowing flight path planning as well as control of dozens of drones simultaneously in a synchronized manner.

    27 parts223

Questions

How big is the TRS80 Model I Arduino Mega Shield PCB?

It measures 98.6 × 95.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the TRS80 Model I Arduino Mega Shield use?

27 parts. 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 TRS80 Model I Arduino Mega Shield KiCad files?

From the RetroStack/TRS-80-Model-I-Arduino-Library repository on GitHub, at the commit this page was made from: the board is Shield/TRS80_Model_I_Arduino_Mega_Shield.kicad_pcb and its schematic Shield/TRS80_Model_I_Arduino_Mega_Shield.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the TRS80 Model I Arduino Mega Shield 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).