From Davebiz Wiki
Jump to: navigation, search

The CoCoDEV is a microprocessor hobbyist/experimenter's/development system board. Its microprocessor is an FPGA synthesis of the popular 8/16-bit Motorola 6809 CPU. The name "CoCoDEV" comes from its similarity to the Tandy Color Computer (aka CoCo). However, the CoCoDEV strays somewhat from the design of the Color Computer in that it does not focus upon graphics capabilities, games, and sound. Instead, it was designed to be an embedded controller of sorts allowing the user to control things that would have been difficult to control with the Color Computer. In doing so it has many features that are not present in the Color Computer. Among these are: real-time clock, WiFi module, UART hardware serial port, micro SD Card interface, I²C interface and digital I/O lines.

Its similarity to the Color Computer makes it very familiar to anyone who has ever programmed in BASIC or 6809 machine language. In fact, it supports the stock Tandy BASIC ROMs (Color BASIC, Extended Color BASIC, Disk Color BASIC) and an authorized user can copy the stock ROMs to the onboard flash chip. Along with an included patch ROM, the original code is patched automatically at boot time to accommodate the new features of the board.

In addition to appealing to Color Computer users, CoCoDEV also appeals to anyone wishing to develop an embedded system using a powerful 8-bit CPU which is simple and easy to use. Many small controllers that are popular today require a host system (Windows PC, Mac, Linux) for development. However, since the CoCoDEV supports a VGA-compatible display generator, connects to an inexpensive USB keyboard, and has a micro SD Card socket, the development can be hosted on the controller itself.

CoCoDEV is a single board 6809 computer created in July of 2019 by Dave Philipsen. As of June 15, 2020 a limited quantity have been shipped to beta testers.

CoCoDEV revision B board in enclosure with top lid removed

Design Objectives

The CoCoDEV board was designed primarily for those who are familiar with the architecture of the Tandy Color Computer but would like to migrate to a controller that is more easily interfaced to the real world. It is a single board computer with a synthesized 6809 core that runs either a modified version of Tandy's Disk Extended Color BASIC or the popular multi-user multi-tasking operating system, NitrOS9.

CoCoDEV allows the experimenter/hobbyist/developer to easily control lighting, relays, solenoids, robotics, LEDs, stepper motors, and many more things. There are many choices for programming options: Extended Color BASIC with customized CoCoDEV commands, BASIC09, Pascal, assembly language programming under DECB or NitrOS9, and C programming under NitrOS9. The unit will boot NitrOS9 Level II which is a multi-tasking, multi-user, process based real-time operating system with windowing.

A memory management unit allows for programs or data areas larger than 64K and a flash memory chip is available for non-volatile storage. An I²C interface simplifies the connection of inexpensive peripherals.


MC6809 core

The core CPU of the CoCo3FPGA was designed in VHDL by Australian developer John Kent. It runs at a bus speed of 25 MHz with no wait states imposed upon memory access. Thus, it is about 28x as fast as a CoCo 1/2 or 14x as fast as a CoCo 3 running in double-speed mode.

512K Static RAM

Fast 10ns Static RAM
The board has 512KB of fast (10 ns) static RAM. The 6809 processor runs at 25 MHz bus speed and is able to access the RAM without wait states. Additionally, the video subsystem accesses the same RAM by interleaving its access with the processor on opposite phases of the clock.

Since the 6809 processor has only 16 address lines it can only access up to 64KB of memory. To make use of the full 512KB of SRAM the CoCoDEV board uses a Memory Management Unit (MMU) with the same characteristics of the MMU on the CoCo 3. The MMU allows the mapping of any of sixty-four 8K blocks of memory to any of eight 8K 'slots' in the CPU's 64K address space.

4MB Flash Memory

Instead of using bulky parallel EPROM memory for the firmware, CoCoDEV uses a compact serial flash chip with an SPI interface. The chip requires only three I/O lines compared to a 2764 or 27256 EPROM that would require at least 23 I/O lines. When the board is initially powered up the firmware is copied from the flash memory into the system RAM. Configuration options allow either the Disk Extended Color BASIC firmware with its associated patches to be loaded or the NitrOS9 operating system. Modifications could be made so that other operating systems could be loaded as well. Two new OS9 utilities are available to read and write data files to the flash chip; GETFLASH and PUTFLASH.

In addition to containing the firmware the flash memory can also contain up to 20 BASIC programs, an OS9 rescue disk, configuration parameters, etc.

Industry Standard VGA

The CoCoDEV has a high density female DB15 connector for VGA video output. RGB video signals as well as horizontal and vertical synchronization signals are all available on the connector. The video should drive any modern monitor designed for analog VGA. The VDG generates the video with a 25 MHz dot clock with 640 pixels of horizontal resolution and 480 lines of vertical resolution. Currently, the only mode of operation is a semi-graphics text mode using a eight pixel (horizontal) by sixteen pixel (vertical) character block. This allows for an addressable display using eighty columns and 30 rows. The video system has a color density of 8 bits configured in the common 3-3-2 (RGB) format. In theory, this allows up to 256 colors on screen at once.

CoCoDEV VGA display (NitrOS9)

PS/2 Keyboard Interface

USB to PS/2 adapter
A female USB 'A' connector allows a standard PC keyboard to be used with CoCoDEV. Any USB keyboard that supports fallback to the PS/2 standard will work. Alternatively a keyboard with a PS/2 6-pin mini-Din connector could be used with an inexpensive USB-to-PS/2 adapter.

DC Power Supply

The CoCoDEV is powered by a DC power supply which can range anywhere from 6 volts to 32 volts. A 6.5mm x 3.0mm barrel connector accepts the voltage. Two onboard regulators supply 5 volts and 3.3 volts for various peripherals and these voltages are also available to the experimenter/developer via the expansion interface.

Serial Port

A LVTTL (3.3v) serial port is available on a four-pin header. The serial port supports data rates to 1,000,000 bits-per-second with no handshaking.


USB to PS/2 adapter
An ESP8266-01 module is included with the CoCoDEV to allow simple internet access. The module uses the popular ZiModem firmware. The default baud rate is 115,200 but it has been tested successfully to 921,600.

SD Card

A micro-SD card socket is provided for mass storage. The card may be used for data logging, program storage, audio clips, etc. and may be formatted for either DECB, NitrOS9, or both. A patch to Disk BASIC allows the card to be used in place of the traditional floppy drives. With a modification of the DRIVE command, multiple virtual floppy drives (up to 1000) may be mounted to any of the four drive positions (DRIVE 0-3) in BASIC.

NitrOS9 supports partitions on the SD card of up to 4GB when using 32-sector clusters or 128MB when using single-sector clusters. The SD card operates on an SPI interface with a clock speed of 25 MHz. The OS9 megaread utility benchmarks an 8GB Transcend Micro SD card at 3.15 seconds for a 1 megabyte transfer or about 325kB/sec.

Real Time Clock

The board includes an RTC module with battery backup. It is based upon the popular DS3231 chip. Also included with the module is 1K of EEPROM for storage of configuration variables. A NitrOS9 driver has been developed to take advantage of the RTC as well as support from within BASIC using the TIME$ string to return a packet with time and date information. NitrOS9 utilities also exist for reading and writing to the EEPROM.

NitrOS9 Utilities for CoCoDEV


Wget is a utility that retrieves files from the internet. Its usage is:

    wget <url>
    Where url is a complete URL to the file to be retrieved using the
    http protocol. File will be saved locally with same file name as
    in url. Example: wget
    Retrieves CoCoDEV.txt file from server and saves it in the current
    working directory as CoCoDEV.txt


Wtrm is a simple terminal program for NitrOS9 written specifically for the WiFi module of CoCoDEV. <ESC> exits the program. Be aware that there is no provision in WTRM for setting the baud rate. It uses the current baud rate setting of the WiFi module. The WBAUD command described below can be used to automatically detect the baud rate from a list of common baud rates and set the UART to that baud rate.


Wbaud is a utility used to automatically find the baud rate setting of the WiFi module and set the UART to the same baud rate. Common baud rates are:





Putflash is a utility used to write data to the flash memory chip on CoCoDEV. The chip is a Winbond W25Q32 device. The minimum chunk of flash memory which can be erased is 4 kilobytes. Therefore, the putflash utility works with blocks of 4k. The usage syntax is:

    putflash <filename> <start blk>
    Where <filename>. is the OS9 path to the file where the data
    will come from and <start blk> is the starting block number
    (in hex) in flash.
    Example: putflash test.bin 0A

Putflash may be used to flash the stock Tandy BASIC ROMs as well as the PATCH and BOOT files to the onboard flash memory.


Latest Builds

FPGA configuration file

The latest configuration file may be found here. Note that it is a JTAG indirect file (jic) and you will need an Altera USB Blaster or equivalent and you must have installed Quartus in order to re-program the FPGA.

micro SD Card image file

An image file to create a bootable NitrOS9 system for CoCoDEV may be found here. I use Win32DiskImager to transfer the image to the micro SD card.


CoCoDEV documentation is a work in progress. You may download the current draft copy of the documentation here.