RetroBridge: Build a Raspberry Pi 5 Computing Time Machine From 1976 to 1982

by retrobridge in Circuits > Raspberry Pi

5 Views, 1 Favorites, 0 Comments

RetroBridge: Build a Raspberry Pi 5 Computing Time Machine From 1976 to 1982

RetroBridge.png

RetroBridge is a Raspberry Pi 5–based computing time machine that lets you explore five formative personal computers from 1976 through 1982 using a single 3.5-inch touchscreen appliance.

The goal was not simply to create another emulator launcher. I wanted RetroBridge to feel like a dedicated interactive exhibit: power it on, choose a year, and enter a real computing environment from that point in personal-computing history.

RetroBridge currently includes:

1976 — Apple-1

1977 — TRS-80 Model I

1977 — Apple II

1981 — IBM PC

1982 — Commodore 64

The custom RetroBridge interface runs on a Raspberry Pi 5 with a 480×320 touchscreen. Each historical environment launches through its own integration layer, while RetroBridge handles navigation, startup behavior, system information, maintenance mode, and return to the Time Machine interface.

An important rule for this project is:

RetroBridge is an integration platform, not a software archive.

The public build does not redistribute proprietary ROMs, commercial operating systems, games, or third-party emulator packages. Instead, it documents how to obtain supported components from their original projects or normal Debian/Raspberry Pi OS repositories.

RetroBridge V1.1 was also reproduced from scratch on a separate microSD card running Debian 13 Trixie, so this Instructable is based on a clean-build validation rather than only the original development system.

Five Computers. Six Years. One Computing Time Machine.

Supplies

Hardware

  1. Raspberry Pi 5 Model B — 8 GB used in the reference build
  2. Raspberry Pi 5 Active Cooler
  3. 32 GB or larger microSD card
  4. 3.5-inch 480×320 Raspberry Pi 5–compatible touchscreen
  5. USB keyboard
  6. Raspberry Pi 5–appropriate USB-C power supply
  7. Wi-Fi or Ethernet connection

Reference Display

The validated build uses a GeeekPi/52Pi-style 3.5-inch display with an ADS7846-compatible resistive touchscreen controller.

Software

  1. Raspberry Pi OS / Debian 13 Trixie
  2. Python 3
  3. Tkinter
  4. Git
  5. xterm
  6. wmctrl
  7. DOSBox
  8. VICE
  9. Debian open-roms
  10. Rust toolchain
  11. SDL3
  12. EWM
  13. trs80basic

Project Source

https://github.com/retrobridge-jc/RetroBridge

Optional Retro Enclosure

RetroBridge also includes a period-inspired 3D-printable enclosure concept/design target. The enclosure shown in this project is not yet an engineering-validated STL/CAD package. Dimensions, clearances, cooling, fastener placement, tolerances, and assembly still need physical validation before printable files are released.

Prepare the Raspberry Pi 5

Start with a clean Raspberry Pi OS installation on the microSD card. RetroBridge V1.1 was clean-build validated using Debian 13 Trixie on a Raspberry Pi 5.

During Raspberry Pi Imager setup, I recommend configuring:

  1. hostname
  2. normal user account
  3. Wi-Fi
  4. SSH
  5. locale and time zone

After the first boot, open a terminal and update the operating system:

sudo apt update
sudo apt full-upgrade -y

Then reboot:

sudo reboot

Before continuing, confirm that networking and SSH work correctly. This makes the remaining installation and troubleshooting much easier.

Configure the 3.5-Inch Touchscreen

The clean Debian 13 Trixie installation did not include the older MHS35 overlay used during early RetroBridge development, so the validated build uses a Raspberry Pi 5/Trixie-compatible touchscreen driver from its upstream project.

From a terminal:

cd "$HOME"
git clone https://github.com/Robinbinu/pi5-mhs35-touchscreen.git
cd pi5-mhs35-touchscreen
chmod +x install.sh
./install.sh
sudo reboot

After reboot, verify:

  1. landscape 480×320 image
  2. touch response
  3. correct touch alignment

On the validated RetroBridge build, the system reported:

ADS7846 Touchscreen
graphics fb0: fb_ili9486 frame buffer, 480x320

One important detail: this display setup starts the graphical session through spi-display.service rather than the older LightDM path. That becomes important later when configuring RetroBridge autostart.

Download and Install RetroBridge

Clone the RetroBridge repository:

cd "$HOME"
git clone https://github.com/retrobridge-jc/RetroBridge.git
cd RetroBridge

Make the installer executable and run it:

chmod +x install.sh
./install.sh

By default, RetroBridge installs into:

$HOME/retrobridge

You can choose another location by setting RETROBRIDGE_HOME:

RETROBRIDGE_HOME="$HOME/RetroBridge" ./install.sh

The installer copies the RetroBridge-authored frontend, launchers, system scripts, and configuration files. It also installs normal Debian package dependencies.

The public installer intentionally does not bundle or redistribute proprietary historical software.

Install the TRS-80 Environment

RetroBridge-TRS80.png

RetroBridge uses the open trs80basic implementation for a Level-II-BASIC-compatible TRS-80 experience.

Install it with:

cd "$HOME/retrobridge/emulators"
git clone https://github.com/davidscan/trs80basic.git
cd trs80basic
./basic

This gives RetroBridge a reproducible TRS-80 programming environment without requiring the project to distribute a proprietary TRS-80 ROM set.

Build EWM for Apple-1 and Apple II

RetroBridge-AppleI.png

Apple-1 and Apple II both use EWM, built from its upstream source.

First install Rust using the official Rustup method and verify:

rustc --version
cargo --version

Then build SDL3:

cd "$HOME/retrobridge/emulators"
git clone https://github.com/libsdl-org/SDL.git SDL3
cd SDL3
git checkout release-3.2.10
mkdir -p build
cd build
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
ninja
sudo ninja install
sudo ldconfig

Clone EWM:

cd "$HOME/retrobridge/emulators"
git clone https://github.com/st3fan/ewm.git
cd ewm

Current EWM Apple-1 and Apple II windows default to a 3× logical scale, which is too large for the RetroBridge 480×320 display.

RetroBridge includes two small patches that change only the initial/logical display sizing to 1×.

Back up the source:

cp ewm/src/one.rs ewm/src/one.rs.orig-retrobridge
cp ewm/src/two.rs ewm/src/two.rs.orig-retrobridge

Apply the patches from the RetroBridge repository:

patch -p0 < "$HOME/RetroBridge/patches/ewm-apple1-480x320.patch"
patch -p0 < "$HOME/RetroBridge/patches/ewm-apple2-480x320.patch"

Then build:

cargo build --release

If a future EWM version changes enough that the patches no longer apply cleanly, inspect the upstream changes rather than forcing the patch.

Test Apple-1 and Apple II

RetroBridge-AppleI.png
RetroBridge-AppleII.png

RetroBridge launches Apple-1 through EWM using the upstream built-in Apple-1 configuration.

At the Woz Monitor, type:

E000R

to enter Integer BASIC in the validated configuration.

Apple II also runs through EWM using the builtin:apple2 configuration and the RetroBridge 1× sizing patch.

Both environments should fit the 480×320 display correctly before moving on.

Configure IBM PC / DOSBox

RetroBridge-IBMPC.png

RetroBridge uses DOSBox for the 1981 IBM PC environment.

The validated 480×320 settings are:

fullscreen=true
fulldouble=false
fullresolution=desktop
windowresolution=original
output=openglnb
aspect=true
scaler=none

RetroBridge mounts:

$RETROBRIDGE_HOME/programs/ibmpc/C

as DOS drive C:.

These settings were validated on the 480×320 touchscreen and produce a usable full-screen PC environment.

DOSBox itself does not provide rights to MS-DOS, PC DOS, commercial software, or games. Use only software you are legally entitled to use.

Configure Commodore 64

RetroBridge-C64.png

RetroBridge uses VICE for the Commodore 64 and Debian's open-roms replacements rather than distributing original Commodore firmware.

The expected replacement ROM files are:

/usr/share/open-roms/C64/kernal
/usr/share/open-roms/C64/basic
/usr/share/open-roms/C64/chargen

The RetroBridge launcher also disables doubled rendering so the C64 environment fits the small display cleanly.

Verify All Components

Before enabling appliance-style autostart, verify the full stack:

cd "$HOME/RetroBridge"
./tools/check_components.sh

A complete build should report checks such as:

Python OK
Tkinter OK
DOSBox OK
VICE OK
xterm OK
wmctrl OK
TRS-80 BASIC OK
EWM Apple-1/II OK
DOSBox config OK
Apple-1 launcher OK
C64 open-rom kernal OK
C64 open-rom basic OK
C64 open-rom chargen OK

Do not move on to autostart until the components you intend to use report ready.

Configure Boot-to-RetroBridge

RetroBridge.png

The validated Trixie/MHS35 build uses a root-owned graphical session started by spi-display.service.

RetroBridge therefore uses an X-session wrapper that authorizes the normal RetroBridge user and launches the frontend on display :0.

Install the wrapper:

sudo cp "$HOME/retrobridge/system/start-retrobridge-xsession.sh" \
/usr/local/bin/start-retrobridge-xsession.sh

Make it executable:

sudo chmod +x /usr/local/bin/start-retrobridge-xsession.sh

Add:

@/usr/local/bin/start-retrobridge-xsession.sh

to:

/etc/xdg/lxsession/rpd-x/autostart

Then reboot:

sudo reboot

The expected result is:

power on → graphical session → RetroBridge Time Machine

rather than stopping at a normal Linux desktop.

Add a Maintenance Escape Hatch

A dedicated appliance still needs an easy way to stop the frontend from launching automatically.

Enable maintenance mode:

touch "$HOME/retrobridge/system/maintenance"
sudo reboot

Disable maintenance mode and return to appliance operation:

rm -f "$HOME/retrobridge/system/maintenance"
sudo reboot

This is useful for:

  1. updates
  2. troubleshooting
  3. changing launchers
  4. adding programs
  5. testing new configurations


Add Your Own Programs

One of the fun parts of RetroBridge is adding your own historical programs rather than treating the machines as static museum pieces.

Original Apple-1 BASIC examples live under:

programs/apple1

Example files include:

hello.bas
counting.bas
retrotest.bas

IBM PC programs go under:

programs/ibmpc/C

That directory appears inside the emulated DOS environment as drive C:.

The Optional Retro Enclosure

RetroBridge-Enclosure-Concept.png

The enclosure shown throughout this project represents the physical direction I want RetroBridge to take: a compact late-1970s/early-1980s terminal-style enclosure around the Raspberry Pi 5 and 3.5-inch display.

The concept includes:

  1. angled CRT-style profile
  2. front bezel
  3. ventilation
  4. rear I/O access
  5. Raspberry Pi 5 active cooler
  6. separate shell sections
  7. standard M3 hardware concept

These images are still design references.

I have not yet published STL or STEP files because I do not want to call an enclosure printable until the following have been physically validated:

  1. screen opening
  2. Pi mounting-hole locations
  3. USB/Ethernet/USB-C alignment
  4. active-cooler clearance
  5. cable routing
  6. airflow
  7. screw lengths
  8. wall thickness
  9. print tolerances
  10. assembly order

Once that validation is complete, the enclosure will become a separate downloadable part of the RetroBridge project.

The validated V1.1 appliance currently uses the off-the-shelf GeeekPi/52Pi 3.5-inch touchscreen enclosure.

Recovery and Reproducibility

RetroBridge V1.1 has passed two separate validation tests.

Full-card recovery

A known-good RetroBridge microSD image was created, SHA-256 verified, compressed, restored to a second card, and boot-tested successfully.

Fresh clean build

A separate 32 GB microSD was started from a clean Debian 13 Trixie installation.

Using the public RetroBridge project plus dependencies obtained from upstream sources, the fresh build reproduced:

  1. 480×320 display
  2. touch input
  3. Apple-1
  4. TRS-80 Model I
  5. Apple II
  6. IBM PC
  7. Commodore 64
  8. boot-to-RetroBridge behavior

This matters because it proves RetroBridge is reproducible from the published build process rather than depending on one original development card.

Finished Result

RetroBridge.png

RetroBridge began as an experiment in running old BASIC programs and became a small physical exhibit about the evolution of personal computing.

In six years, the experience moves from the Apple-1's Woz Monitor to TRS-80 BASIC, Apple II, IBM PC DOS, and finally the Commodore 64.

The interesting part is not simply that all five systems can run on a Raspberry Pi. It is making them behave like one coherent appliance while still preserving the differences that made each machine historically important.

Five Computers. Six Years. One Computing Time Machine.

If you build RetroBridge, I’d love to see what you change, what historical programs you add, and where you take the enclosure design next.

Source and documentation:

https://github.com/retrobridge-jc/RetroBridge