Notes: 2/8/98 Problems with Read ID and Read fixed - now will try to do basic ops eg read/write/format/verify. Density selection doesn't work ATM - says Drive empty for all HD discs. Write seems to work fine - no problems reading written files on A4 Read slightly broken - gives random Disc error 01s Format very broken - when given CLI format param, gives garbled eg 'Format disc ... in AAAAAAAAAA format', then hangs on format. Verify seems to suffer same problem as read Filer read format freezes machine Not happy with DOS discs Motor sounds loud - might need step/hlt/hut tweaks Can crash Filer eg AU August 98.Features 9/8/98 Format seems to basically work - some hardware loose connection stopped it working before. Can't see why it gave garbled output before. Grinds floppy a lot before giving Disc error 01 @ 00000000 - disc is formatted, but with no dir structure. Could be because read is broken? 15/8/98 Investigating density selection. As in PS/2 mode, may need DENSEL to be inverted using CR1F. Drive DENSITY was connected to DRVDEN1, which is routed to DRATE0, which doesn't exist as a pin (?). Moved to DRVDEN0, which is set by CR0B and CCR, and polarity set by CR1F. Seems to always read in low density format for some reason. ~23/8/98 Strange CRC errors coming out - seem to be random, i.e copy stuff to floppy, gets CRC error. Try again, dies in different place. Do delete of existing data, dies. Repeat delete, happily deletes offending file. 26/8/98 - as BU260898 Density selection for PS2 needs 0 in CR1F (don't ask me why). Sense is important because you can end up writing DD data to bits of a HD disc, or vice versa. Then fails verify oddly - errors in same general area, but occasionally some sectors pass verify, some with retries, and some fail - never the same pattern appears. reset_device had its DOR reset pin sense inverted - it took it high for a while then left it low - corrected. Fixed problems with ReadID on HD discs - was loose pullup on /Index (why it worked on DD I don't know, but might have been causing CRC errors). This seems to have unbroken format (doing Format spun disc then gave 'Format error'). DOSFS *CopyBoot seems to be hardcoded to ADFS for some reason - on 1 QuadFS 0 ADFS floppy machine *Quadfs:CopyBoot 0 0 gives 'disc drive not found'. Problems with write - delete gives 'no data' errors for some reason. Increasing retries didn't help (now retries set to predefined constant, not hardcoded). Retrying delete on CLI sometimes works. Delete on write-protected DOS disc gave 'DOS image not recognised' and 'Filecore in use'. *Compact doesn't work on DOS floppies (gives 'FileCore does not understand this disc'), but this happens on ADFS as well. After BU260898: Escape in driver (with printouts) makes it Data Abort 28/8/98 Low density DOS formats format OK, but fail on every sector on verify. Still odd things happening when format/writes stall. Also 3.2MB format works but verify barfs (I wonder why...) Odd errors happening on writes. Seems to have been fixed by changing step rate from 5 to 3, but probably needs QA on this to check. Tested in A3000 - runs quite happily - no problems reported (so far...) To do: Fix bad formats € Fix Escape problems Use proper FIQ claim/release mechanisms Port to SIOUtils 0.37 APIs € Make SA friendly (eg OS_CallASWI instead of call_xswi, sync FIQ as per SA App Note) Think about how to handle CMOS - flash, IIC EEPROM? Handling of PS2 drives (ie DENSEL inverted)? Devise board jumpers to handle Acorn/PC DS and MTR lines Rename to FDFS Sort out Filer Test, test, test and more test. Poss. bonuses: Hack translating ADFS_ SWIs to FDFS_ Something to enable A3000 motor LED (ie 1772 MTR) when FDFS MTR active. Done: Bad format bug (in DAs code) fixed - wasn't checking error conditions on VetFormat SWI. Should move VetFormat call before 'are you sure?...', so doesn't wait to UI before barfing. Seems to be loose connection somewhere on board - it sometimes hangs without spinning drive on access on A3000. D'oh. Build it for the right podule slot... Moved VetFormat before prompt to do format, so it fails immediately if invalid format. Backed up as 280898. After BU280898: Ported to SIOUtils 0.37 APIs - now reads FDC adr from SIOUtils, not hardcoded. CMOS base bodged to be as for pod slot 3 (ie 124). Tried putting in code to use official FIQ claim/release service calls - release is fine (duplicates code in FileCore 'release FIQ after low level op' entry point, but what this entry point does is undocumented). Claim doesn't seem to work - Service_ClaimFIQ hangs machine, and Service_ClaimFIQinBackground always fails (on A3000). Seems claim_fiqs gets called on interrupt (I think), so ClaimFIQ shouldn't be used. If we do have to use ClaimFIQinBackground, need to find some way of: Call CFiB - failed Drop out of IRQ routine Jump back into IRQ routine Retry CFiB 29/08/98 Pulled out FIQ claim code - needs rethink. Replaced QSWI and QADR with simple versions - previously checked if our SWI base was <&44000 and if so called ADFS_xx instead of QuadFS_xx. Why? Breaks horribly on some calls, eg xxxxFormat map to RO 3.5 SWIs (LockIDE, FreeSpace64 etc). Modified filer back to using QuadFS (hacked OurFSinf). Fixed menu positioning problem (adding extra entry broke hardcoded Y pos). Filer seems to work except format does invalid formats (40T etc), and click on icon spins drive but doesn't open Filer window. 11/09/98 Put on links to P1 for Acorn/PC drive selection. Acorn works fine - QFiler (orig 93 version) mainly works, but sometimes click on icon with new disc in, spins drive, then doesn't open dir. Filer_Opendir Quadfs::x.$ works. PC also works - have to be careful to have proper PC drives, eg black+white Sony seems to be non-standard (for drv 0 or 1 either drive LED or motor come on, but not both). FakeADFS hack written - uses QFS_13 to call DiscOp, QFS_14 to call MiscOp (can'tcall proper SWIs because of FileCore reentrancy). Some apps work (eg E-type) but some don't (eg SF3000 - tries to read across sector boundary with dodgy disc record). 0xxA version displays all DiscOp calls for identifying non-working apps. Looked at FIQ claim - FileCore code seems to be doing ClaimFIQ/ReleaseFIQ/ReleaseFIQinBackground for us. Not documented at all, though...