Hi,
The main problem is that the floppy emulator need to download data from USB bus as fast as possible (at ~1MB/S) and shift data, generate MFM pulses, handle track position in the same time.
I think that we need a very powerful uC to do all this tasks in the same time.
Without the downloading part, a PIC is powerful enough...
The other point is that with a PIC it will be very difficult to simulate an protected disk (CAPS / IPF , Pasti/STX).
We need to be able to accelerate or slow down the bitrate with a good precision:
For example the CAPS/IPF documentation says this :
<<
Cell Density Map
[...]
The density value supplied by the library is relative to the complete cell time of a
track. Each step represents a 1/1000th difference from the default cell density used by
normal speed cell groups of the whole track. A value of 1000 represents a cell group
in normal - 100% - width; a higher value is a wider cell group (slower/takes more
time to read); a lower value is a narrower cell group (faster/takes less time to read).
It is normal to have variable cell density within the same track as a protection
measure.
>>
So with a default cell density of 250000bits/s, the shifter can be set at 249750bits/s, 250000bits/s, 250250bits/s , etc (steps of 250bits).
At 250000bits/s a step of 250bits/s represents 1/((1/250000)-(1/250250))= 4nS !!
4ns is the period of a 250Mhz clock.
The fpga version of the floppy emulator will probably have a less precise but enough precise (

) cell density step (8ns or 16 ns).
Anyway this bitrate feature seems to me very difficult to simulate with a simple uC.