• Robert Sprowson's avatar
    Reinstate floppies on IOMD platform · 6f1f3934
    Robert Sprowson authored
    ADFS.s:
      Remove redundant header file.
    Adfs05.s/Adfs15.s:
      Group the options a bit more simply, use {TRUE} and {FALSE}.
    Adfs12.s/BusMaster.s/IDEDetect.s:
      Use defines instead of magic numbers.
    Adfs17.s:
      Organise the offsets from the floppy controller to cover both PCI and IO based controllers.
      Only do the dummy read from the PBI on Tungsten.
    Adfs18.s:
      Implement the FIQ equivalent of the 'FlpUseVerify' command switch, modern controllers (!) have a built in verify rather than using a sector read, but the verify command has no data phase and the FIQ handler was sitting waiting for a sector that never arrives.
      Rationalise FlpDRQmask and FlpDRQmaskbit.
    Adfs19:
      Rationalise the calls to OS_Hardware by rejigging the assembly time switches.
      Reinstate the non HAL version of IRQ enable for reference.
      On RPCEmu 0.8.8 and 0.8.9 the emulator hangs during the four set of DCB's used to autodetect the drive (Recalibrate/Seek/Seek/Sense) which seems to be due to the way the emulator splits CPU time to floppy emulation time, to avoid this we wait 128us (real time) which is enough emulated time for the controller to have changed state. You probably just want to *CONFIGURE FLOPPIES 0 though.
    
    Tested om A7000, ARM610, StrongARM manipulating a veriety of disc densities for read and write. Also ran the "Test/TestADFS" test program.
    RPCEmu 0.8.8 and 0.8.9 boots still, but no attempt has been made to use emulated floppies.
    
    Version 3.46. Tagged as 'ADFS-3_46'
    6f1f3934
Adfs12 39.4 KB