1. 07 Jan, 2012 1 commit
  2. 25 Nov, 2011 2 commits
    • Robert Sprowson's avatar
      Fold in old fixes. · a4d790ff
      Robert Sprowson authored
      From 1989, probably safe to keep them. Binary unchanged.
      Version 3.47. Tagged as 'FileCore-3_47'
    • Robert Sprowson's avatar
      Teach FileCore_LayoutStructure and Service_IdentifyDisc how to do 1 zone fixed discs. · d52791ba
      Robert Sprowson authored
      From the change logs it was last fixed sometime around FileCore 2.50 era, but has been long broken.
      The boot block was in the right place, but was overwritten by the root directory, and the wrong size entry was claimed in the map, amongst other errors.
      Free'd up R6 in LayoutFreeSpaceMap to avoid having to keep reevaluating the number of zones - makes it a bit more readable. Corrected inaccurate comments. Checked the code paths for new map with and without boot block, with and without long filenames.
      Test app 'Make1Zone' generates a small disc image which can be inspected in a hex editor for correctness.
      In the identify code, be more strict about looking for a boot block only on fixed discs since they cannot occur on floppies (saves time, wasn't necessarily wrong).
      The concept of a boot block at &C00 only works when 2 copies of the map can be fitted underneath that address, for future 2k and 4k sector sizes these do not fit and it is likely that 1 zone fixed discs are forbidden (a drive with 4k sectors would typically be > 512GB and 1 zone would be ~32MB so spilling into a second zone would waste < 0.01%).
      Other minor changes:
      * Free command now groups the 'K' with 'bytes' to match OS_ConvertFileSize.
      * FileCore20 debug didn't assemble.
      * FileCore33 beefed up comments.
      * GenSWIs debug didn't assemble.
      Tested with a special cut of RAMFS manually loading various 1 zone images into its dynamic area and checking they mount, have a sensible *MAP and *FREE result, can be written to, and don't have broken directories.
      Version 3.46. Tagged as 'FileCore-3_46'
  3. 14 Oct, 2011 1 commit
    • Robert Sprowson's avatar
      Revise exports in "hdr.FileCore". · 9ae2d7ca
      Robert Sprowson authored
      Now, for each SWI call there is a definition of any pertinent structures it asks for and definitions of any bitfields within those flags. This avoids the need for clients to endlessly redefine these locally (in practice it looks like sections of FileCore were simply copy and pasted into clients RAMFS/SCSIFS/ADFS). Delete private definitions.
      This binary was carefully checked to be identical since so many locations were changed.
      Then, the following additional changes:
      * InitDieSvc line 74, the floppy config is extracted using a mask and shift rather than reaching up the stack
      * Identify lin 1254, the superfluous instruction marked as such deleted
      * FileCore15 line 762 recoded the check for background op to not need the bit number defined any more
      * FileCore00 moved the label 'anull' to be word aligned guaranteed
      The duff pointer marker ('nowt' = &40000000) is no longer used to mark territory translation tables as invalid as that address is now quite reasonable. -1 is used instead.
      Version 3.45. Tagged as 'FileCore-3_45'
  4. 12 Oct, 2011 1 commit
    • Robert Sprowson's avatar
      Fix bug in DetermineDiscType. · 44133774
      Robert Sprowson authored
      When failed to identify, and the last operation was format, the DiscSize2 field was not being copied (instead DiscSize is copied twice).
      Fix up some warnings from the assembler.
      Tested briefly with a RAM disc, still works.
      Version 3.44. Tagged as 'FileCore-3_44'
  5. 02 Oct, 2011 2 commits
    • Robert Sprowson's avatar
      Suspicious PC fiddling exorcised. · 2acecd72
      Robert Sprowson authored
      R8 was being used to remember the C bit, by copying from the PC. Swapped to use RRX instead.
      Version 3.43. Tagged as 'FileCore-3_43'
    • Robert Sprowson's avatar
      Make debug versions assemble again. · 55198f01
      Robert Sprowson authored
      Entry macro renamed as SemEntry to avoid conflict with Hdr:Proc.
      Other macro bit rot fixed up.
      Tidy up switches.
      DebugFx switch is the only one that doesn't work.
      Non debug binary same as 3.41.
      Version 3.42. Tagged as 'FileCore-3_42'
  6. 13 Sep, 2011 1 commit
    • Robert Sprowson's avatar
      Fix *DEFECT crashing when an object occupies the defect disc address. · ad94a5c8
      Robert Sprowson authored
      R5 was being reused as the loop exit instead of R9.
      Synced code with *CHECKMAP a bit since they have the same heritage.
      Untangle the spaghetti around TermCommon and UnTermCommon.
      In the module init, skip a store when the flags don't change.
      Tested with a RAM disc filled with autogenerated nested directories and a loop blindly trying to defect everything - works fine now. Ticket #114.
      Version 3.41. Tagged as 'FileCore-3_41'
  7. 12 Sep, 2011 1 commit
    • Ben Avison's avatar
      Fix for alignment exception on ARMv7 · 3bd0b704
      Ben Avison authored
        The Density field in the disc record is a byte at a non-word-aligned address
        but it was being loaded here with an LDR instruction. There is actually a
        pre-existing bug here, since the code at lines 904-905 would only have been
        executed on earlier CPUs if SectorSize, SecsPerTrk and Heads were all zero
        too. This would correspond to an implausibly small hard disc, so arguably
        this part of the branch should perhaps be removed altogether?
        Untested at ROOL.
        Submission from Willi Theiß [comments above are my own - BA]
      Version 3.40. Tagged as 'FileCore-3_40'
  8. 04 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Update to work with zero page relocation · 82f55aab
      Jeffrey Lee authored
        s/FileCore, s/FileCore00, s/InitDieSvc - Try using OS_ReadSysInfo 6 to get IRQsema & CannotReset locations before falling back on legacy values. Store results in module workspace.
        s/FileCore05 - Commented out unused CheckEscape routine to avoid having to update it
        s/FileCore15 - Debugging code updated to use OS_ReadSysInfo 6 to fetch IRQsema ptr. Can't always rely on workspace version since workspace might not be set up yet.
        s/FileCore25, s/FileCore30, s/FileCore80 - Use IRQsema & CannotReset pointers from workspace
        Tested on rev A2 BB-xM
      Version 3.39. Tagged as 'FileCore-3_39'
  9. 14 Mar, 2011 1 commit
  10. 25 Jan, 2011 1 commit
    • Jeffrey Lee's avatar
      Combat slow USB devices on boot by making OS_FSControl 15 auto-retry when... · d386afa3
      Jeffrey Lee authored
      Combat slow USB devices on boot by making OS_FSControl 15 auto-retry when SCSIFS "drive empty" errors are generated
        s/FileCore60 - DoOsFunBootup now detects when a SCSIFS "drive empty" error is returned by IdentifyCurrentDisc. Instead of returning with an error, the boot operation will instead be retried, to give slow/unlucky USB devices a chance to finish initialising. Escape can be used to cancel the retry loop, just in case.
        Resources/UK/Messages - Added new 'RetryBoot' message which is shown when the retry loop starts
        Tested on rev A2 BB-xM. Machine now boots correctly in situations where the required USB device hasn't initialised by the time OS_FSControl 15 is called.
        New message token (RetryBoot) needs translating.
      Version 3.37. Tagged as 'FileCore-3_37'
  11. 14 Nov, 2009 1 commit
    • Jeffrey Lee's avatar
      Fix erroneous unaligned load in FileCore · 1d4b79eb
      Jeffrey Lee authored
        FindDiscRec was erroneously using LDR to load DiscsDrv when it should have used LDRB. Apart from the potential for disc record priorities to be incorrectly evaluated, this was also causing an abort when alignment exceptions were turned on.
        Tested on rev C2 beagleboard. FAT formatted USB drives now seem to work OK.
      Version 3.36. Tagged as 'FileCore-3_36'
  12. 06 Nov, 2009 1 commit
    • Jeffrey Lee's avatar
      Fix bug in FileCore's CompactZone hash table handling · 521eb858
      Jeffrey Lee authored
        The code which protects against hash table overflows in the CompactZone routine has been broken ever since BigMaps was introduced. With BigMaps each hash table entry is three bytes, not two; but the overflow fixup code which restores the word following the hash table to its original value wasn't updated to take this into account, and so was restoring the data to the wrong position.
        Presumably this isn't a critical problem since it's been there so long, but since it causes an alignment exception when NoUnaligned is in use it's now been fixed.
        Tested on rev C2 beagleboard
      Version 3.35. Tagged as 'FileCore-3_35'
  13. 15 Jun, 2009 1 commit
    • Ben Avison's avatar
      Fix bugs and inefficiencies revealed by unaligned data audit · 7f286493
      Ben Avison authored
        Many of these are unaligned LDRs where only bits 0-7 of the result are used
        (tested against a bitmask or used as an input to the barrel shifter) but
        they have all been moved to byte operations because they are faster on
        ARMv6 and won't cause false positives if unaligned aborts are enabled.
        s.BigDirCode line 104: not wrong as such, but changed to use aligned LDR
          for speed on ARMv6.
        s.BigDirCode line 1727: LDR of an unaligned 1-byte variable. Only used as
          input to shifter.
        s.Commands line 129: STR to an unaligned 1-byte variable. Harmless because
          all overlapping variables are initialised later on.
        s.Commands line 539: LDR of an unaligned 1-byte variable. Only used for
          testing bit 6.
        s.FileCore31 line 1359: LDR of an unaligned 1-byte variable. Only used as
          input to shifter.
        s.FileCore32 lines 1483 and 1825: LDR of an unaligned 1-byte variable. Only
          used as input to shifter.
        s.FormSWIs line 1403: bugfix: incorrect load of 16-bit zone_spare field of
          disc record - uses lowsector and nzones fields instead! This is used to
          terminate the search of free space fragments within the allocation bytes
          of the current map block for the one containing a bad block found during
          formatting. Would manifest itself as a "Can't map defect out" error.
        s.GenSWIs lines 1182,1195: bugfix: LDR of 1-byte variables. Effect of this
          was that range-checking of the drive number passed to FileCore_MiscOp 5
          (eject) wasn't performed.
        Added ENTRY directive to permit building of GPA debug listing.
        Builds, but untested.
      Version 3.34. Tagged as 'FileCore-3_34'
  14. 11 Jun, 2009 1 commit
    • Ben Avison's avatar
      GET file pathnames changed · c3b38b1e
      Ben Avison authored
        Uses suffixed file extensions for compatiblity with both objasm and asasm.
        Supplied by Peter Naulls, tested at ROOL
      Version 3.33. Not tagged
  15. 17 May, 2009 1 commit
    • Ben Avison's avatar
      Various archiecture-based optimisations · d10cde06
      Ben Avison authored
        * ARMv6+ builds use unaligned halfword and word loads and stores (unless
          pre-ARMv6 compatibility is required or NoUnaligned is set)
        * In many cases, one unnecessary BIC instruction has been removed from
          pre-ARMv6 builds
        * ARMv5+ builds (so Tungsten and OMAP) make use of CLZ instruction when
          parsing fragment blocks
        Built and included in an OMAP3 ROM. But be warned, this has not received
        the rigorous testing normally required of filesystem code, use at your
        own risk.
      Version 3.33. Tagged as 'FileCore-3_33'
  16. 08 Aug, 2003 1 commit
  17. 03 Apr, 2003 1 commit
    • Kevin Bracey's avatar
      * Various 32-bit compatibility fixes. · ac186d66
      Kevin Bracey authored
      * Can use HAL for FIQ+timer manipulations.
      * FileCore_DiscOp64 added (as user API - currently just converted to the
        standard byte or sector DiscOp call to the underlying module). See
        Doc.32bitAPIs for full details.
      * New error-passing scheme to modules added (for full 32-bit addressing).
      * FileCore_Features added (indicates new error scheme).
      * OS_FSControl 49 (read 32-bit free space) now reports sensible clamped
        values for large discs, rather than values modulo 2^32.
      * Accessing the end of files near 2GB in size could cause lock-ups in
        background transfers.
      * F(+) and G(+) disc formats adjusted to have a little more skew to
        help the rather poor Iyonix floppy controller.
      Version 3.31. Tagged as 'FileCore-3_31'
  18. 14 May, 2001 2 commits
  19. 10 May, 2001 1 commit
  20. 01 Mar, 2001 1 commit
    • Simon Forrest's avatar
      * Removed dependency on obsolete STB and StrongARM flags. · bd17fe0f
      Simon Forrest authored
        * No longer reliant on STB flag.  Now both Desktop and Embedded builds
          are the same (which, of course, they should be).
        * StripDepnd support moved to MkClean file.
        * The "What'sHere" file has been renamed to "ReadMe", since the existence
          of the single-quote causes problems with some Unix commands (notably
        * Built and tested in a Lazarus 32-bit build.
      Version 3.27. Tagged as 'FileCore-3_27'
  21. 07 Dec, 2000 1 commit
    • Ben Avison's avatar
      Re-applied fixes from FileCore-3_22-4_6_2_1 to the trunk. · 1d794206
      Ben Avison authored
        Scatter list wrap condition updated to allow top-bit-set memory accesses.
        Not tested - any issues related to the 32-bit conversion have not been
        addressed. I'd suggest that you use the branched version mentioned above,
        except in test builds.
      Version 3.26. Tagged as 'FileCore-3_26'
  22. 31 Oct, 2000 2 commits
    • Stewart Brodie's avatar
      More 32-bit fixes. · 4c46cbcd
      Stewart Brodie authored
        Flag preservation added to 7 routines that require it.  Docs.32-bit
          updated to remove the names of the functions that have been made
          to preserve flags again.
        This version needs more testing, but at least this version does not
          appear to stiff the machine, corrupt discs, go bang under light
          testing with ADFS and RAMFS.
        26-bit and 32-bit builds slightly tested.
        Do not use in products - Do use in test builds.
      Version 3.25. Tagged as 'FileCore-3_25'
    • Stewart Brodie's avatar
      32-bit fixes · 615d13b9
      Stewart Brodie authored
        Some stack offsets were wrong - now fixed.
        More PSR preservation added.
        26-bit builds of this module still stiff the machine when ADFS is
        Do not use - except for testing.
      Version 3.24. Tagged as 'FileCore-3_24'
  23. 30 Oct, 2000 1 commit
  24. 10 May, 2000 1 commit
    • Simon Forrest's avatar
      * Failed to assemble on Lazarus build due to missing symbol. · 30dbf9dd
      Simon Forrest authored
        * The latest merge appeared to have missed one of the "Module_Version"
          symbol changes.  It failed to assemble:
            s.FileCore40: Serious error  Undefined symbol
          "Version" changed to "Module_Version" to correct this, in line with
          the other related changes.
        * Untested; to be built into next Lazarus development build.
      Version 3.22. Tagged as 'FileCore-3_22'
  25. 09 May, 2000 1 commit
    • Stewart Brodie's avatar
      Merge of Ursula branch to the trunk. · 4abef130
      Stewart Brodie authored
        This module represents the latest version of FileCore incorporating
          both the Ursula changes and the ROL changes as we have them to date.
        Changes from ROL-FileCore-3_21 are basically the stripping of trailling
          spaces and the change of Version to Module_Version in the conditionals.
          No other changes.
        ROL branch tagged ROL_merge
        Ursula branch tagged Ursula_merge.
        Untested, but essentially the same as ROL-FileCore-3_21, so no problems
      Version 3.21. Tagged as 'FileCore-3_21'
  26. 05 Aug, 1999 1 commit
  27. 19 Oct, 1998 1 commit
  28. 21 Sep, 1998 2 commits