MC10 Supercart

After doing the game carts for the MC-10, I wanted to do an even better one.
This cart board plugs into the expansion slot as well, and adds the following to the MC-10;

1) 512K of SRAM
2) 512K of FLASH memory
3) A YM2149 programmable sound generator
4) Two joystick/game controller ports

Eagle view
Eagle view of Supercart PCB

The additional memory is bankable in 16K chunks to any of the following four 16K segments of the MC6803’s 64K address space;

Segment 00 = $0000-$3FFF
Segment 01 = $4000-$7FFF
Segment 02 = $8000-$BFFF
Segment 03 = $C000-$FFFF

This is achieved through four 8-bit registers (one per segment) where the value for a specific 16K bank of RAM or FLASH is to be mapped to the 64K address space.  These, as well as a number of other features, are implemented in the CPLD which lies at the heart of this design (Xilinx XC9572XL).

20160823_192906
Assembled prototype, top view
20160823_192652
Assembled prototype, bottom view

The YM2149 is a classic sound chip, used in the Atari ST and other machines of the 8-bit era.  Based on the General Instruments AY-3-8910, this is a slightly improved version by Yamaha.

For the output, I decided to keep it simple on this one, mixing all three channels from the chip into a single-transistor amp circuit for identical mono output on both channels of the stereo line-out jack.

The YM chip is clocked by a 2MHz oscillator, and the SEL pin on the chip is controlled by the CPLD, allowing a programmer to toggle between 2MHz and 1MHz as the clock used to generate the sound frequencies if desired.

The game controller ports are connected to the YM2149’s two IO ports, making the state of the ports easy to read through it’s register system.  In addition, one select line per DB9 port is controlled by the CPLD, adding support for Sega gamepads.

These select lines may be toggled at will by the programmer, allowing control of timing for reading not only 3-button, but 6-button gamepads as well.

I’m writing firmware for the card that will include things like a music player, that can be used to play specially prepared versions of songs composed for other platforms, like the ST, Spectrum, CPC, etc…  These “register dump” files are fairly easy to obtain over the internet, and I’ve come up with a conversion processes to make them usable on the board, and loadable over an Emcee server (serial) connection.

Here is an early bit of test code playing this type of music file…

Supercart playing music on the MC10

Emcee server, by Darren Atkinson, is an excellent way to give your MC10 additional and virtually unlimited storage (over a serial connection).  I’m making heavy use of it with the firmware for this board, and it will allow for a library of songs that can be browsed and played, easy firmware updates, etc.

Right now (Oct 2016) I’m still working on the first revision firmware, but it’s coming along. You can see how the menu system will work for browsing files on Emcee server (using the keyboard or a gamepad as the input device) in a couple of these videos.

Supercart menus, in development

Music player, with level bars, in development

20160823_193756.jpg
Assembled board, with chips installed

 

 

 

 

CoCo SDC

The CoCo SDC is a floppy disk emulator for Tandy Color Computers. It allows you to store CoCo disk images on an SD card, and mount and use them on your CoCo using the on-board SDC-DOS.

This is easily the best modern storage solution for Color Computers. The CoCo SDC was created by Darren Atkinson, and is a huge contribution to the Color Computer community.  More information can be found here –> CoCo SDC

Attached here are some pictures of the boards being made.

Front
CoCo SDC, assembled board, top
Back
CoCo SDC, assembled board, bottom
CoCo SDC batch
CoCo SDCs awaiting testing
20141106_160836
Adding the SD modules
SDC's for Brazil
Finished CoCo SDC boards

MC-10 composite

I bought a few TRS-80 MC-10 Color Computers to see what I could develop
for this machine. The first thing I decided it needed was something better than
the RF modulator output for video and sound that these machines come with.

So I developed this RF Modulator replacement that allows for composite video
and sound through the same jack. The jack is positioned where the RF jack
used to be on the computer, so there’s no need for case modifications.

The RF Modulator in the MC-10 generates the system clock, as well as
converting the MC6847 output into channel 3-4 RF. My composite board
generates the system clock, converts the MC6847 output into baseband
composite, and makes it (along with sound), available at a mini-headphone
style jack at the rear of the machine.

I decided to go with mostly SMT parts on this board (all except the
output jack and MC1372) as I’m getting pretty used to them now, and
after a while they aren’t any more work to assemble than through-hole
components, maybe less in some cases.

All the necessary signals and power connections are made through the
original connections for the RF box. The 6 and 3-pin headers at the front
of the board, and the grounding lug at the back.

Here is a picture of the board installed on an MC-10 motherboard.
Physical fit is excellent as a drop-in replacement once the RF box is removed.

20150731_211359
MC-10 Composite REV 02
No Case Mod
View of output jack

Video output from this board is great.  Very clear, and about as good as can be hoped for from the MC6847/MC1372 combination.  Here are a couple of pics of the output.

20150731_215334
MC-10 Composite output

As you can see from the pic below, the video waveform looks great!

hantek85_2
NTSC video waveform showing one line of video

Anyway, the boards look pretty good.  I’ll use the prototype for a while, and if I continue to be satisfied with how it works, I’ll produce a run of these so other MC-10 owners can get some decent video output too.

Update 11/08/2015 I’ve had production PCBs made and now have some of these available for MC-10 owners.  No more noisy RF!  🙂

20151107_204811
Final production version (hand assembled)

MC-10 game carts

The MC-10 has been around for a few decades now, and although it has a decent expansion port, not much has been done with it.

The only thing released by officially for it was a 16K RAM expansion. There have been a couple of items released by Darren Atkinson, the MCX-128 as well as a floppy-drive/joystick interface called the MCX32-FDJ.

One thing that has not ever been done is a game cartridge for the expansion port. I thought this would be a neat project, so I set about designing one.

I decided to go pretty basic on this one, with 16K of ROM for the software and 32K of SRAM (since the 4K the machine has internally is just so small).

Due to the way the expansion bus is designed to work on this machine, it’s not quite as simple as simply wiring up a ROM chip to the bus as it is with some other machines, like the CoCo1/2/3.  Some logic is required to suppress a response from the internal circuitry when responding to an address read or write.

I decided on a CPLD for this task, a 9572XL in the 64pin VQFP package.

Eagle render 02 (1)
MC-10 game cart PCB, initial design

Initially, I designed the PCB with a few jumpers to allow for different configuration options. During development of the CPLD code, I realized these are not necessary, and removed them on the final version of the board.

The circuit consists of the mentioned Xilinx 9572XL CPLD, a 32K SRAM from Alliance Memory, a socket for a 27C128 or similar EPROM, and a voltage regulator circuit supplying +3.3v.

20160520_221012
Original prototype boards, assembled

The way the MC-10 expansion bus basically works is that an external device on the port decodes for the addresses it will respond to, and then suppresses any other response by driving the !SEL line low.  It’s a very simple, yet effective and flexible system, provided you supply all the necessary logic.

On the final version of the CPLD programming, the 32K of added RAM is mapped to $3000-$3FFF (usable by ML programs), and $5000-$BFFE (usable by BASIC also).

16K of ROM is mapped to $C000-$FFFF.  There is a provision for a toggle, accessed at $2FFF, that switches the last 8K ($E000-$FFFF) between internal and external memory.  This allows for the internal BASIC ROM to be either replaced with external ROM, or left intact. This way we can also run the cart as a RAM expansion using BASIC, as well as use it as a game cart.

20160920_143756
Available RAM from BASIC

I decided to use a couple of games that have been ported to the MC-10 by Darren Atkinson as the software for this first cartridge.  Flagon Bird, a Flappy Bird clone originally written by Steve Bamford for the Dragon, and Space Assault (a Color Computer game).

I wrote a little menu and some loader code to tie it all together, including an “Exit to BASIC” option to make the cart useful as a RAM upgrade.

20160809_105647
Cartridge select menu

These were also designed to fit cases developed by John Strong to fit the latest revision of Darren’s MCX-128, so that there would be a case available for this project.

20160920_135925
Final PCBs going into cases

I designed a label and had a few printed, and there you have it… The world’s first game cart for the Radio Shack Micro Color Computer…

20160920_141831
Stickers!!  🙂
20160822_182340.jpg
Completed cartridge
20160822_182236
The first MC10 game cart ever?

mini-MPI

At one time, Radio Shack offered a bus expansion for their Color Computer line. Called the Multi Pak Interface, these are usually referred to as MPIs by users.

MPIs (of which there are several variants) all plug into the CoCo cartridge port, and provide four slots to plug in program paks, and other cart port based accessories. Several third party expansions were offered as well back in the day, and can be spotted in ads in old magazines devoted to the Color Computer.

300px-Multi-pak_26-3024
A typical MPI

I’m not sure how many MPIs were made over the years, but there doesn’t seem to be enough to go around these days.  There are a couple of solutions developed or being developed by hobbyists out there, but I think there’s room for one more.

This page describes my efforts to put together a two slot MPI, for people that are looking for just one additional slot, in as compact a package as possible.
Original MPIs are large and take up a lot of desk space.

To start, let’s look at what an MPI must do…

MPIs must provide power to the cart slots, as the CoCo’s cart port is very limited in the amount of current it’s able to provide, being rated for 300ma of +5v power. Though simple ROM paks don’t use much, a floppy disk controller alone draws more than 200ma.

At the heart of every MPI is an 8-bit register that’s used to direct communications between the slots and the CoCo.  This register can be read and written to from the CoCo, and is located at address $FF7F.  The values latched there determine the routing of three signals on the CoCo bus to direct communications to the slots.

Pasted Graphic
Signal routing details of MPI register

As you can see from the graphic above, bits 1 and 0 in the register contain the number of the slot to receive *SCS, and bits  5 and 4, the slot that will be connected to *CTS and *CART.

So let’s build an MPI…

First, power for the two slots.  All CoCo cartridges require a 5v power source. Some early carts for the CoCo1 required 12v power as well.  The CoCo1’s expansion port supplies + and – 12v power to support these carts.  12v power at the cart port was dropped starting with the CoCo2, and only a few devices require it.  We will only be supporting 12v power in a very limited way, as we are keeping this as small and compact as possible, and want to avoid bulky, or excessively hot solutions for our power.  The 12v lines from the cart port will be connected to the slots, so that when used with a CoCo1 machine, those carts requiring it will function.  12v power will not be available on the Mini-MPI when used with a CoCo2 or 3.

The CPLD is powered by a single 3.3v AMS1117 regulator circuit powered from the cart port. The +5v lines on the slots are powered by one LP38692MP-5.0 regulator each.  The slot power regulators are powered from a 7.5v DC adapter to take the load off of the cart port line.

We will need to buffer the signals from and to the CoCo’s cartridge port.  I selected 74ABT16245 bus transceivers for this purpose.  These are 16-bit bidirectional buffers that are 5v TTL compatible, and controllable for direction and output enable in groups of eight (two banks per IC). Perfect for this application.

To implement our logic, which will contain our register, and direct CTS, SCS, and CART to the proper slot, I selected a Xilinx 9572XL in the 100-pin QFP package.  More than adequate for our needs here.

Since we have only two slots on the Mini-MPI, we won’t have the usual four position switch that would normally be used to select the boot slot.  This switch preloads the register with a value connecting the various select lines to one of the slots for the system’s initial startup.  Once the MPI register is written to, this value will change, and the switch setting becomes irrelevant (until system power is cycled).

Instead, we will use two switches.  One is a two-position switch that will tell the Mini-MPI whether the boot slot will be the first or second slot.  The second switch is a three-position switch that indicates whether the second slot will be set as 2, 3, or 4.  The first slot is always slot 1.

That is about it for a basic overview of the hardware…  Here are a some pics…

20160422_230751
Early mini-MPI prototype in development
REV 06
Final version – Eagle .brd view
14711650_1802725716673779_8321575630248710205_o
Assembled mini-MPI boards
20161116_170215
mini-MPI in case (top cover removed)
20160904_111143
mini-MPI in a CoCo3 with Orch90 clone and CoCo-SDC

 

Update 02/2020…

I recently designed a new case for the mini, here’s a look…

Another style of case

Here is the manual…

mini-MPI Manual – REV02b