whereas Classic99 fudges it a bit for the sake of efficiency and ease of coding.
^^ this ^^
... is actually is a pet peeve of mine.
I don't emulate the TI disk controller by default, and I never set out to. The dependence on the original disk controller frustrates me no end - but all that said, I don't deliberately fudge things for ease of anything. What is implemented, is intended to be accurate (except the speech synth, which was just a 'shut up' feature for someone else ).
The original DSR that I implemented was files on a disk, based on the concept that V9T9 used. It was a from-scratch implementation and over the years it's been hit pretty hard. It's pretty stable and compatible now but there are parts of the original controller spec that I refuse the implement in it, because I don't understand why we deliberately limit ourselves moving forward. It's a new DSR that I intend to port to hardware and use on real modern filesystems, I don't want it to look like a TI disk controller.
After much complaint, I implemented reading of disk images. This was largely so the files could be copied to the FIAD disks more easily. At the same time, having this code stable and reliable will also help the above mentioned real DSR, since people are never going to give up their damned images. This was also a new, from scratch implementation.
Neither of the above DSRs had any requirement on the TI system save a PAB - it quickly became obvious how much software depended on the disk buffers being allocated, so that much was hacked in at least.
Due to the number of issues people were having with compatibility, I started looking at what parts made sense to reproduce, and what parts did not. My criteria was very strict - are you using data that is documented, commonly-used, and reliable, or are you reading side-effects from the TI disk controller ROM? Side effects, as much as possible, I omitted, in order to keep the disk system as pure as possible.
What do I mean by 'pure'? When the TI creates an OPEN command, it doesn't look for a disk interface or a cassette interface or a hexbus, or anything else, like some systems do. All it has is a name and it looks for that name. This is why you can "SAVE PIO" and "OLD RS232" - the console doesn't know or care what the hardware is, or what it does with the data. It asks the DSR to open, then it asks for data or sends data to the DSR. After that, it's done. The device ITSELF defines the storage or retrieval of the data, so the format of a TI disk image is entirely contains inside the TI Disk Controller ROM -- not the TI console. It was never intended, nor should it have been, that a hard drive controller would store files using the same format. But that's what we ended up doing.
The idea being that software written generically would run on all devices - not just mine and not just a TI disk controller - but certainly including those. We have more and more options but almost every new device keeps ending up a glorified TI disk controller. It'd be lovely to walk away from that, but people seem to search for single examples (out of thousands that work) and waving them around making a lot of noise that emulation isn't perfect because one case fails.
So, because of those two issues, and to help myself trace through the operation of the real disk controller for some of the lingering issues we faced on certain titles, I implemented Classic99 support for the real TI disk controller. It's still a hack only because I still need to go through and allow it to talk to DSK0-DSK9 and allow it to deal with disk images larger than 180k (both very minor tweaks I just haven't had time for), so that it integrates into Classic99's other disk drivers cleanly. But for cases where you are testing something that needs to work like a TI disk controller, this is the only thing that SHOULD work like a TI disk controller (except that instead of reading flux data it reads sectors out of a file on the host system, and doesn't support the track based commands at the moment).
So I rather object to it being called an accuracy or a fudging issue -- a compatibility issue, certainly. And there are bugs, certainly - but bugs I try to get to. But saying that Classic99 is less accurate because the primary disk system isn't a TI disk controller is misleading and gives a bad reputation. (Again, say it about speech and I'll back you up 100% But not disk.)