Re: swiftlink, disk image transfer

From: Marko Mäkelä (
Date: 2001-09-05 16:30:03

On Wed, 5 Sep 2001, Christopher Phillips wrote:

> I've currently got my c64 linked to my mac via a swiftlink cartridge
> and a USB to serial adaptor.

It seems that I've lost a prospective customer. :-)  I'm developing a
device that consists of an Atmel AVR AT90S2313 microcontroller (now
clocked at 8 MHz, but I think 4 MHz should do equally well) and a Maxim
MAX232 compatible RS-232 driver.  This device plugs into the cassette port
of almost any 8-bit Commodore (e.g. the SX-64 doesn't have a cassette

I've created a completely single-sided circuit board layout for the
device.  If you want to wire CTS and RTS from the "top" side of the
DB9 connector (PC-style RS-232), there are holes for the wires on the
board.  But I think I can make the protocol work without handshakes, under
the assumption that the PC/Mac/whatever will always be able to fetch data.

I also considered using special sequences like intentionally generated
framing errors (delayed stop bits) and break signals, but after I read the
Linux serial line documentation, I decided that relying on those would
reduce portability too much.

I also read that newer Macs don't come with RS-232 any more.  
Christopher, how hard is it to use that USB-RS232 converter? Is it some
sort of a standard device, or are such devices made by several companies,
all hiding the specifications and asking for truckloads of money if you
want some programming documentation?  Or is there a standard serial line
library interface on the Mac?

Currently I'm writing AVR assembler part of the software.  The first
function I'm implementing is the measurement of pulse widths on the
cassette write line.  Emulating the low-level cassette read and write
protocol will be next in the line.  Once that stuff works, I'll implement
something prlink-like that would provide an alternative solution to your

The board also has a ribbon cable connector for the Commodore serial bus.
It could be possible to implement the low-level serial bus primitives so
that a PC/Mac/whatever could emulate a disk drive (or a serial bus
controller like Star Commander and cbm4linux do).  But I have no plans to
implement anything.

It is already clear that the protocol on the RS-232 line will have to be
on a quite low level.  The controller only has 128 bytes of RAM, while
already the tape header is 192 bytes.  I'll make it so that the controller
just encodes the three different pulse widths to bit pairs, sending four
pulses per byte.  It could actually send five pulses per byte, since
3^5<2^8, but I think that performance is not an issue here.

If anyone is interested in contributing to this project, I can put the
schematic diagram and the board layout available already now.  Otherwise
I'll wait until I have some working code.  Like all my C= projects, this
will be open source (probably GNU General Public License and GNU Free
Documentation License).


       Message was sent through the cbm-hackers mailing list

Archive generated by hypermail 2.1.1.