[Coco] Socat drivewire relay to CoCo1
Aaron Wolfe
aawolfe at gmail.com
Sat Feb 28 16:42:58 EST 2015
On Sat, Feb 28, 2015 at 6:21 AM, jon bird <news at onastick.clara.co.uk> wrote:
> Hi,
>
> Now I've got my CoCo 1 up and running again I thought I'd give Drivewire
> a go. A couple of initial queries then - I made the cable up iaw with
> the diagram here:
>
> http://www.cocopedia.com/wiki/index.php/Getting_Started_with_DriveWire
>
> I'm not entirely sure of the significance of the CD/"turbo mode" option
> and there seems to be some differences in the baud rate you need to set
> the server end to - either 38400 or 57600. Currently the only
> configuration I get anything sensible with is 38400 with or without CD
> connected.
>
> That aside, I can get something basic up and running.
>
> For logistical reasons though, I can't really run it near the same
> machine that is hosting the Drivewire server. So my plan was to hook the
> CoCo up to a Raspberry Pi, then have the protocol relayed over TCP using
> something like 'socat'.
>
> I've configured Drivewire to use TCP client mode & run on the Pi the
> following:
>
> socat -v tcp-l:65505,reuseaddr,nodelay,fork file:/dev/ttyUSB0
>
> The server connects up to it ok however all I get on the CoCo end is an
> I/O Error.
> The exchange looks good, it's just a duff checksum in the first case.
> The only obvious difference is how the serial data is packeted up which
> would cause some subtle timing differences maybe...?
>
> In both instances I'm using the same Prolific USB serial port converter.
> I've also tried swapping out the Rasperry Pi with a Linux laptop and get
> the same behaviour.
>
> Does anyone have any experience of this or can explain the behaviour I'm
> seeing?
The coco 1 is a bit of a special case because it cannot reliably
operate at 57,600 bps (slow level shifters or some such hardware
deficiency compared to coco 2). Because of this, it must remain at
38,400bps. The double speed "turbo" mode using the CD pin is not
possible as far as I know. It is also sensitive to cable length, so
make sure the serial cable is as short as possible. Cabling and speed
problems often manifest as checksum errors like you are seeing.
To ensure the coco is operating at 38,400bps you need to use the
correct ROM or DW binary on the coco, the special version for coco 1
should only operate at 38,400. Of course the serial port on the pc
side should also be set to 38,400. The DW server does this when it's
told a coco 1 is connected, but since you're working over IP that will
need to be done on the machine running socat.
FWIW, I wrote DriveWire using a prolific adapter :) Many people do
have trouble with them, so that may be a factor in your configuration.
However the checksum issue makes me suspect its either trying to work
at 57,600 or the cable itself is causing trouble.
More information about the Coco
mailing list