WDC1772 FDC Emulator and WinSTon Developments

26 November 2004

To eliminate any possibility of the data bus being changed before it is used, a new value has been added to the API that represents the databus written at the point “now”, while the original variable represents the databus contents up to the point of “now” so older code does not break. At the point of “now”, naturally both variables are in sync.

Actually the address bus should work this way too, since the DMAC reads the data register containing the actual data assembled to/from disk exactly the same way as the CPU would - by changing the address line and triggering a read operation. However the DMA interface handles this differently for performance reasons, so the address bus cannot change “back to the future”.

The FDC has been completely isolated, which helps the host emulator by putting any data in advance onto the databus. If the host emulator serves the DRQ (data request) it should do it itself, otherwise it should simply return without changing anything. The FDC emulator knows automatically that the DRQ has not been serviced, and acts correctly, including setting the lost data status properly, etc.

Added the ST drive LED which works as it does on the real hardware, so you can see when the internal drive is being accessed.

Note that the LED has abolsutely nothing to do with either data flow or the floppy disk motor running. It is simply the FDC select line running through a LED. It is lit if the drive is selected, off otherwise. This is exactly how it works on the real thing.