The CoCo PSG, a chiptunes cart for the CoCo...

After working on the MC-10 Supercart, which adds memory and a YM2149 sound chip to the MC10,
I thought it would be really cool to do something similar for the 6809 Color Computers.

The YM2149 is a programmable sound chip by Yamaha, based on the General Instruments AY-3-8910.
The GI AY-3-8910 and it's variants, including the YM2149 were used in a variety of early microcomputers
and video games, and they are ideally suited for use with 8-bit systems.

There is a large amount of music available that is compatible with these chips that has been composed
on several systems which is adaptable for play on a CoCo cart like this.  This gives us the possibility
of a large library of music to play, as well possibly being of use with tracker style composition software
written for the CoCo.  Not to mention sound effects for games and other programs.

Major components

Along with a YM2149, we'll need some associated circuitry in the form of a transistor amp output circuit,
and an oscillator. To provide some additional resources for the CoCo when using the chip, and to store
software for the cart, we'll also add 512K of FLASH, and 512K of SRAM.  

Using chips of this size (512K each) is handy as far as handling memory banking using 8-bit registers,
and will provide us quite a bit of storage and RAM on a CoCo for our chiptunes software to use.

Then we just need a CPLD to handle the needed logic to tie it all together and provide the registers.
A 5V tolerant XC9572XL in the 64 pin QFP package should do nicely.

Eagle .brd view of the CoCo PSG prototype

Since the YM2149 chip also includes two 8-bit bidirectional I/O ports in addition to the sound control registers, we may as
well use them to add a couple of ports.  These are wired to make them useable with Atari style joysticks and Sega Genesis
game pads.  You could also use them for other things of course, they'd just have to be programmed for.

The oscillator chosen to drive the YM2149 is 2MHz, the same frequency that was used in the Atari ST.  The *SEL pin on the
YM2149 is connected to the CPLD, and the clock rate can be divided by 2 (to 1MHz) under software control if desired.

Memory banking

The 1MB of combined FLASH and SRAM is bankable to three memory locations in 4K banks.  The three 4K memory segments
are located in cartridge ROM space as follows;

Bank 0, $C000-$CFFF
Bank 1, $D000-$DFFF
Bank 2, $E000-$EFFF

Both types of memory may be mapped to any of the three banks using three 8-bit registers in the CPLD.

There is a fourth 8-bit register (the PSG control register) which has features for enabling writes to the memory chips, driving *SEL
lines for reading gamepads, selecting PSG clock frequency, etc...

CoCo PSG prototype PCB

Sound output

The YM2149 outputs 3 channels of sound.  On this initial version, the three channels are mixed into a single channel and
output at the small stereo jack on the board (both channels the same).  I believe this is how most early systems handled
AY style chips, though I know some would use channels A+B for one and B+C for another output channel for "stereo".

Other possibilities, such as selectable channel mixing could be supported with the use of analog switches, but for now
we'll keep it simple.  A revised version will include output on the cart port's SND line for playing without external speakers 
as well.

Assembled CoCo PSG, top and bottom

PSG TEST ‎(720p)‎.mov

First test video