[Coco] Thought

Eric J. Rothfus eric at rothfus.com
Fri Sep 24 10:20:11 EDT 2004


> much like Eric's SVD I linked to in my
> original post and which actually works on the CoCo now (something I actually
> wasn't aware of until yesterday).

My advertising s*cks.  :-)  Yup the SVD supports the CoCo.

What Mark M is describing could be thought of in (at least)
3 ways:

  - a very small interface circuit between a USB transceiver
    and the floppy connector (the floppy cartridge for the CoCo)
    that would drive data on the floppy interface directly and
    respond to track changes and such in real-time

  - a bit larger circuit that would buffer some set of data -
    a sector, a track, multiple tracks - and replay them in
    real-time with the USB filling the buffers in response to
    head movement and such

  - a larger still circuit that simply uses the USB to load
    a memory buffer that represents the floppy completely -
    this is really the SVD with a USB connection replacing the
    serial connection.

IMHO, number one is the most problematic.  Although the USB
can easily keep up with the data rate of the floppy, it also
has to be able to respond to head-move requests while doing
so.  Head-move requests are rather short, though they can be
expanded by the circuit.  The controller must then interrupt
the USB sender, sending a head-move request back to the
host, which starts generating the next bit of data.  Due to
the USB protocol, this may take some time.  However, it
would probably still work...just hiccup between tracks.  It
is important to note, however, that this method assumes that
the USB bus is relatively quiet except for the floppy
emulator or the timing for floppy data would be off.

The second one, however, is pretty interesting.  With the
high USB data rate, you can imagine buffering 3 tracks of
bits (for example), 1 on each side of the "current" track,
and letting some simple FSM shift them out to the floppy
interface.  When a head-move is noticed, a request would go
out to load the next/previous track.  This would hopefully
lower the size of the hiccups between tracks, but still keep
the circuit simple.  Further, with an appropriate buffer,
competitive traffic on the USB wouldn't be much of an issue.

The third one is the SVD with USB.  I didn't do these because
it was more expensive than serial.  :-)

BTW, Mark, if you get serious about doing this, I'd be glad
to help.  While doing the SVD I've learned a ton about the
old floppy formats and would be able to contribute a lot
of software to the effort.  My recommendation after doing the
opposite with the SVD, is to generate the bit image on the PC,
and let the simple circuit shift it out.

There'd have to be a decent amount of memory, in that in the
simplest form, each bit would need 2 bits of representation:
1 for the bit, and 1 for the "index hole" signal - this
would allow representation of soft-sector as well as
hard-sector diskettes.  For each track, an extra bit would
be set indicating if the "track 0" signal should be
asserted, and another bit for the whole image indicating
"write protect".

Sounds fun!
Eric




More information about the Coco mailing list