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.
- 1 Design Objectives
- 2 Features
- 3 NitrOS9 Utilities for CoCoDEV
- 4 Latest Builds
- 5 Documentation
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.
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
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.
PS/2 Keyboard Interface
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.
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.
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 davebiz.com/CoCoDEV.txt 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:
921,600 750,000 500,000 460,800 250,000 230,400 115,200 57,600 38,400 19,200 9,600 4,800 2,400 1,200 600
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.
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
CoCoDEV documentation is a work in progress. You may download the current draft copy of the documentation here.