You should probably consider a test run on MAME when working with DSRs, since it uses the original ROMs.
So will Classic99 if you tell it to. It's not in the menu yet, but it's no harder than configuring MAME. Configure a disk image drive on DSK1, DSK2, or DSK3 normally, then exit the emulator. Edit Classic99.ini and change the "Type" for that drive from '2' to '3', and it will access the image using the TI DSR. I don't recommend this for general use yet only because it doesn't support the usual range of Classic99 functions yet - it runs the DSR and nothing more. (So, 180k disk image maximum, DSK1-3 only).
In additional when using the default DSR, Classic99 will emit debug in the logs if you stomp on the reserved DSR memory locations, telling you which locations you stomped on and what address the code that did the stomping was at. The debugger is there to help, particularly large amounts of debug are provided for disk access.
The following tests are made for every disk access to the Classic99 DSR (and will debug a warning if violated):
-verifies that the workspace is GPLWS at >83E0
-verifies that the CRU base is stored at >83D0
-verifies (loosely) that the DSR entry point was stored at >83D2
-validates the PAB address is greater than >000D (otherwise there isn't room for the PAB when you backup to the start) - this one will refuse to execute the DSR as well
-validates that the DSR name length is 7 or less (this is the "DSK1" part and there are hard-coded limits)
-validates that the PAB opcode is valid
-checks several places if the PAB overruns the top of VRAM
-warns on filenames (including path) longer than 32 characters
-checks the top of VRAM pointer at >8370 for the disk buffers
-verifies the first four bytes of the VRAM buffer header are intact (except LSB of top of RAM pointer)
-verifies the number of files value is less than 9 (maximum supported by Classic99's DSR, more means corruption happened) - there is an option to breakpoint if these values are corrupt and a real TI controller card would crash on the call
Then AFTER the DSR call happens, it again checks the pointer at >8370, and validates the first four bytes (including the VRAM top LSB skipped above - that's a bug that won't be an issue in Classic99 yet, I was envisioning CF7 support for that one...) It also checks to see if any user code touched any of the actual buffers.
I don't know if that covers the case you ran into, I've been adding cases as I hit them myself. In general though, if Classic99 doesn't throw any warnings in the debug log, you have a pretty good chance of it working. If you test with the TI DSR option, then you're running the actual DSR code. That said, always good to test on multiple platforms, particularly if you are uncertain. The above options are meant to try and help you understand WHY it doesn't run.