IT'S ALIIIIIIVE!!!
In other words, I just got writes working for the first time this morning. Can now read and write 800 kB GCR floppy disks using the backend (and my prototype frontend)! I'm excited but also tired, it's been a long haul to this point...
Nonetheless, I'm thinking about what I want to do next. There are a number of possibilities...
The obvious one is to move on to MFM (1.44 MB and 720 kB) floppy disks and prove that backend functionality out. That's probably the biggest potential crowd pleaser, and the most important step on my way to saying that I've matched the functionality of the Floppy Emu.
A less obvious one is working on proving that formatting disks and formatting-while-writing disks works. This is something I had thought the Floppy Emu couldn't do, but it seems like it can now. Not as important a piece of functionality but something I want to have working.
Another is working on raw GCR disks (WOZ and MOOF images). The backend has a mode that will take a raw GCR bitstream and inject random bits into empty spans, duplicating a behavior of a real floppy drive that is necessary for many copy protection schemes to work. This should work as soon as there's a frontend to take advantage of it, but should only counts in horseshoes.
Yet another is DCD (Hard Disk 20-type devices). As I think I mentioned previously, the backend currently has no support for this, but I planned things out so that it could be added later with minimal friction. When fully implemented and supported by a frontend, this should allow a single backend device to emulate a chain of DCDs as well as a floppy drive.
One that's purely fun would be a Battlestar Galactica (or Knight Rider) style bar of LEDs that can be mounted in the floppy drive slot, reflecting where the head is located on the disk and whether a write is in progress. A neat feature of my design is that such a device can be added without any need for the backend to support it or even know that it exists.
You might notice, dear reader, that as I talk about this, I'm drawing a distinction between the backend and the frontend and talking about "proving" various pieces of functionality. TashFloppy (or Integrated Tashtari Machine, I'm not sure what its final title will be) is a backend, a device that allows another embedded system to easily emulate a Macintosh floppy drive and DCD chain using a simple UART, rather than a finalized product. I'll release my prototype frontend when it's ready or near enough to ready, but it's not my intention that these should be two halves of a single whole. Rather, I'd like to see TashFloppy/ITM be used in multiple finished products according to different needs - various varieties of integrated floppy drive replacements along the lines of the many SCSI drive emulators out there, brick-on-a-leash devices like the Floppy Emu, maybe even single-purpose floppy-port dongles.
I'm not sure I'll be the one to create one of these frontend devices, but one that I might take a stab at is a frontend based on the PIC16F1454 and the SPI SRAMs that my prototype frontend is based on. Potentially this could look like a device that lives inside a Mac, replacing its floppy drive, and connects via USB to a PC host that uploads and downloads floppy images on demand.
Not sure. But it's nice to feel like a milestone has been passed and the world is full of possibility. As always, I love to hear the community's thoughts and inputs and questions and comments. If it weren't for y'all, I might well be nerding about something entirely else...