Close

Two Drives for hack's sake

A project log for Floppy-bird

Use a floppy-disk as a multi-frame-buffer, store audio-samples, and increase capacity to boot!

eric-hertzEric Hertz 09/23/2018 at 01:184 Comments

This thoughtpath is more of a braindump for future project-ideas rather'n directly-relevant to floppyBird... But, even floppyBird isn't particularly-relevant to floppyBird, since this project-page is kinda a two-parter, with multiple tangents, anyhow.

A tiny bit of background:
The idea, again, is to record audio [samples] directly onto a floppy-disk. As I've imagined, the entire [simple] system, record and playback, would require little more than a PC floppy-drive and some simple circuitry, no microcontroller.
Playback from a single track/cylinder I've got down to a simple T-Flip-Flop, a transistor, and a speaker.
Recording, though, is a bit more complicated, due to the controller built in to a floppy drive. This controller has some protection logic to prevent accidental overwrites, e.g. if you try to record on a track for longer than a single rotation. Thus, timing of a few write-related signals is highly important. I'd thought it was only feasible with a microcontroller, but I recently had an idea.
If the controller used for writing was unaware of the 'index' pulse, and maybe some other signals, it would have no reason to go into what Imma call 'protection', and, thus, timing isn't critical.
One thought: Use a separate controller board, from a second floppy drive, which is *not* connected to the index sensor, nor the spindle motor. At that point, the controller might as well think the disk's track is *huge*, or even linear (like a tape). Thus, recording could be performed without regard to timing.
Index-pulsing is still useful, however, since a simple way to record/playback from *multiple* tracks, sequentially, is to tie the index output to the step input, making it auto-advance with each rotation, kinda like a CD or record (LP, 45, etc.).
Thus, using *two* controller-boards for recording: one handles the waveforms written to the disk, the other handles stepping through tracks and rotation.

As an aside, this may also benefit my microstepping idea from a while back. (Probably discussed in my KayPro Floppy Recovery project).
Microstepping the read/write head may be possible with precise timing to the Step/Direction inputs. The Problem, however, is that each change to Step causes the floppy controller to wait for the head to settle into position on the new track before reading/writing is allowed. So, microstepping *between* tracks would cause the controller to continuously *block* reading/writing. So, keep the read/write controller separate from the step/rotation controller, and it might just be possible.

(Microstepping between tracks is an idea I had for attempting to recover data from old disks which may have warped over time, causing oblong or off-center circular tracks. This effect is more common on 5.25in floppies whose circular spindle-hole may've been stretched by many insertions over the years.
But, microstepping in this case, for audio recording/playback, might be quite handy, as well. This'd allow a spiralling track, rather than dozens of concentric tracks. Thus, playback/recording would be uninterrupted with each rotation.
And, yes, I'm very aware that *without* microstepping, any audio recorded/played-back will be at the very least distorted with each track-advance. Thus, an idea, presently, to use each track as a repeating audio sample, 1/5th of a second in duration... selectable via MIDI)

Discussions

Starhawk wrote 09/23/2018 at 01:54 point

You might look at Ye Olde iOmega ZiP Drives... ;)

  Are you sure? yes | no

Eric Hertz wrote 09/23/2018 at 02:30 point

oh sure, and have access to things like heads on servos with positional feedback, and data-rates much higher than I could achieve with an AVR?! NO THANKS ;)

  Are you sure? yes | no

Starhawk wrote 09/23/2018 at 05:10 point

So rip out the controller and roll your own. IIRC there are no servos in a ZiP100 drive, but I'll check tomorrow if I remember. (Doubt it.) As for data rates, that should be proportional, roughly, to spindle speeds. You're a smart fella, you can do this... ;)

  Are you sure? yes | no

Eric Hertz wrote 09/23/2018 at 06:48 point

We're talking 'servo' as in 'actuator with feedback loop' as opposed to an RC-servo, which is just a specific/common example of such a device.

Would be shocked if they could do it without, head-alignment with tracks is difficult enough when cramming 1.4MB in that space! LS-120 drives were "laser-servo" not sure what that laser was aimed at, but same concept as CDs and hard disks, I'm betting: a track is followed by some sensor, fed-back to a highly-precise (but not at all accurate) positioner. As opposed to floppies, where tracks are assumed to be exactly-spaced a certain number of microns away from the *drive's* home position, I [dead] reckon. 

Actually, I find it rather miraculous those things worked at all, nevermind as reliably as being able to write a disk in one person's drive, then read-modify-write on another, and still use that disk reliably in *dozens* of other drives so precisely-calibrated, but only calibrated *once*, long before being banged-around shipping from overseas, then in a semi, then several more times by disgruntled warehouse stockers to clumsy middleschoolers helping to rearrange the lab every quarter for several years. 

Guess that's part of my fascination with these things, their uncanny reliability.

  Are you sure? yes | no