3 ms·
> One would rather expect this sort of functionality implemented in a high level operating system function or in some sort of software driver instead of baked i
by RetroTechie 3y ago
> One would rather expect this sort of functionality implemented in a high level operating system function or in some sort of software driver instead of baked into hardware.
Can only speak for the more common TMS2793 as used in many MSX floppy systems. Operations like "seek" were basically the FDC pulsing a "head step" signal a # of times, and (optionally) attempting to read a sector mark on the disk to verify r/w head arrived at the correct track.
Operations like "read sector" or "format track" etc weren't performed by that FDC stand-alone, but only served as command to start the process. CPU (Z80 here) would poll some FDC status bits, pass contents of track to format to the FDC, all in byte-for-byte tightly programmed loops. Think ~10 us or so per loop iteration (no DMA).
For some portions of the data a CRC was calculated, and that was done by the FDC in hardware iirc.
So all in all the 'smarts' included in that FDC wasn't that much. I'd think that was true for most FDCs of the day, and the 8271 described here is kind of an outlier there. Of course things may be very different for more advanced/later FDCs like those included in Pentium-era & later PC chipsets.
- rep_lodsb 3y agoThe NEC765 used in the IBM PC is also "high-level", and so are all the later compatibles. There is no command to read or write raw data, you specify the (starting) sector number, and the controller will start reading the disk, but only transfer the data field over DMA once it finds a matching header field.