This is a project I started some months ago : connect a C64 SID to a PC using the USB port, in order to listen to my favorites C64 tunes on the "real thing".

See my previous posts about it here and here.

To sum up, connecting a SID to the parallel port of a PC gives good results, but it was another story with USB, which works in "packetized" mode, and therefore my first attempts suffered from latency issues.

Some time ago, some people seeing my page contacted me about this project, with some new ideas. One of these ideas was to do the synchronization on the hardware side, rather than on the software side.

So here is the new interface :

usbSID_PIC

It features :

  • a PIC16F690 (here, installed on the "Low Pin Count Demo Board" from Microchip)
  • a FT245BM USB FIFO IC (on a handy DIP module)


Here is how it works (it's dead simple) : on the software side, SID commands are sent to the USB FIFO, and for each start of frame, it inserts a special value in the FIFO (a "marker").
On the hardware side, there is a Timer on the PIC (at 50Hz). When the Timer counter overflows, the PIC starts reading the FIFO and sends commands to the SID, until it finds a marker. Et voila !

Here is a small recording made using this interface (the music is Sanxion's loader tune, from Rob Hubbard) : usbSID Sanxion playback

The whole thing needs some rework, but I'm very happy with the first results. It could lead to one of the cheapest (and handiest) way to feel the SID magic ;)