TRS-80 Color Computer 2 (Tandy CoCo) core for the retroDE FPGA platform. Real hardware logic on modern silicon — not software emulation.
This is the CoCo2 core for retroDE, an open-source FPGA retro
computing platform targeting the Terasic DE25-Nano (Intel Agilex 5).
The RTL is a DE25-Nano port of the MiSTer-devel CoCo_MiSTer core,
which itself derives from pcornier's original coco2 project. See
CREDITS.md for full attribution.
For the overall platform, main entry point, and the list of available cores, see the top-level project: https://github.com/Thejayman77/retroDE
Working on real hardware. Boots cartridges via the included clean-room boot BIOS, drives HDMI video and audio through the retroDE platform shell. Active development — working does not mean finished.
- MC6809 CPU (Greg Miller's
mc6809i.vfrom upstream) - MC6883 SAM, MC6821 PIAs, MC6847 VDG (NTSC color burst + analog signal simulation for authentic artifact colors)
- Two-port joystick + keyboard via the retroDE platform shell
- Cartridge loading via HPS (loaded into a SDRAM-backed window)
- Clean-room boot BIOS — retroDE-authored replacement for the proprietary Tandy Color BASIC ROMs. Boots cart games out of the box; no Tandy ROM sourcing required. See CREDITS.md for the detailed BIOS scope and limitations.
- Manifest-driven core entry — selectable from the retroDE supervisor menu
retroDE_coco2/
├── retroDE_coco2.sv # Top-level
├── retroDE_coco2.qsf / .qpf # Quartus project
├── retroDE_coco2.sdc # Timing constraints
├── compile_coco2.sh # Build + bitstream packaging
├── post_flow.tcl # Post-assembler HPS-first bootloader merge
├── rtl/coco2/ # CoCo2 wrapper + bridge + screenshot
├── rtl/platform/ # Local platform glue
├── rtl/sdram_ctrl.sv # SDRAM controller
├── CoCo2_MiSTer/ # Vendored MiSTer CoCo_MiSTer RTL (GPL-family)
│ ├── rtl/ # CPU, SAM, PIAs, VDG, peripherals
│ └── roms/chrrom/ # 6847 character generator (datasheet-derived)
├── bios/ # Clean-room retroDE boot BIOS (8 KiB × 2)
├── bios_src/ # Boot BIOS source (lwasm assembly, MIT)
├── ip/ # Agilex 5 PLLs
├── qsys/ # Platform Designer subsystems (HPS, peripheral)
├── software/ # HPS-side debug / loader source (.c)
├── CREDITS.md # Full upstream attribution + BIOS notes
├── COPYING / LICENSE # GPLv3
└── README.md # This file
- Intel Quartus Prime Pro 26.1 (or set
QUARTUS_ROOTDIRto match) - Terasic DE25-Nano board
- retroDE_splash checked out as a sibling directory (see below)
- lwasm (from lwtools) — only needed if rebuilding the boot BIOS
from source; the pre-built
.romfiles are shipped underbios/
This core shares RTL and the u-boot SPL with the retroDE platform shell.
Clone retroDE_splash next to retroDE_coco2:
your-workspace/
├── retroDE_splash/ # Platform chassis — must be present
└── retroDE_coco2/ # This repo
Files referenced from ../retroDE_splash/ during build include the
shared platform RTL and the u-boot SPL hex for the combined bitstream.
Override the location with RETRODE_ROOT=/path/to/workspace if your
layout differs.
# Defaults: assumes ../retroDE_splash is a sibling, quartus_sh on PATH
./compile_coco2.sh
# Clean build artifacts
./compile_coco2.sh clean
# Override locations
QUARTUS_ROOTDIR=/opt/intel/quartus_pro/26.1/quartus \
UBOOT_HEX=/custom/path/u-boot-spl-dtb.hex \
./compile_coco2.shBuild time: roughly 8–12 minutes on a modern machine.
Output bitstreams land in output_files/:
retroDE_coco2.core.rbf— runtime FPGA fabric bitstream (deploy this)retroDE_coco2.hps.rbf— HPS-merged RBF (rarely used; splash JIC handles QSPI)
Add this section to ~/cores/manifest.cfg on your DE25 to register the
CoCo2 core with retrodesd:
[coco2]
name=CoCo2 (TRS-80 Color Computer 2)
rbf=/home/terasic/cores/retroDE_coco2.core.rbf
backend=coco2
core_id=0x434F4300 # "COC\0"
min_abi=0x00000100 # ABI v1.0
config=/home/terasic/coco2.cfg
bios.0=ext_basic:/home/terasic/bios/retrode_coco2_ext_basic.rom
bios.1=color_basic:/home/terasic/bios/retrode_coco2_color_basic.rom
extensions=.rom,.ccc,.bin
rom_dir=/home/terasic/roms/coco2
media=romCopy bios/retrode_coco2_ext_basic.rom and
bios/retrode_coco2_color_basic.rom (both shipped in this repo) to
~/bios/ on the DE25.
See the umbrella SETUP.md for the full list of manifest options.
The CoCo2's original boot ROM (Microsoft Color BASIC + Extended Color BASIC, copyright Tandy Corporation / RadioShack) is proprietary and not redistributable. retroDE does not include it.
In its place, this repo ships retrode_coco2_*_basic.rom — a
clean-room minimal boot BIOS written from scratch by retroDE
contributors (MIT-licensed, source under bios_src/). It handles
just enough to boot cartridge games out of the box. Verified working:
Dungeons of Daggorath (1982), Downland (1983).
It does not implement the BASIC interpreter, tape I/O, disk I/O, or BASIC math routines. Programs that depend on those Color BASIC entry points will not work against this BIOS.
See CREDITS.md for full BIOS details, scope, and rebuild instructions.
GPLv3 on the combined work — see LICENSE and COPYING.
The vendored CoCo2_MiSTer/ RTL is treated as GPL-family compatible
per the upstream's open-source publication; see CREDITS.md for the
licensing-ambiguity caveat. The clean-room boot BIOS (bios_src/ and
bios/retrode_coco2_*.rom) is MIT-licensed retroDE-original work,
dual-hatted under the combined-work GPLv3.
Do not strip original copyright headers from any file.