Commit 5a88813f authored by Robert Sprowson's avatar Robert Sprowson
Browse files

Fixed up a deprecated push (in OSBgetBput), untangled two STM single reg (in OSFile).

Delete unused 'KernelFSW'.
HighFSI
 Retire some crusty definitions
 Reserve OS_FSControl reason codes used by ROL

Version 2.71. Tagged as 'FileSwitch-2_71'
parent 2e8eb101
......@@ -23,6 +23,312 @@ Filing system support.
Change Log:
===========
; 1.20 is major rework for reentrancy. Released to Sam for new 1.21+ OS's
; 1.21 internal
; 1.22 GBPB write ordering rehack
; 1.23 Block freeing reorder, transient freeing fixed
; 1.2401 GBPB 9/10/11 fixes; Count/Wipe/Copy allow longer names. Less stack use
; 02 Read address of EnvString/EnvTime to set command line up
; 03 Fix totalsize addition in CopyDirectory errors
; 04 Debungling version to suss grope fulkup
; 05 Removed FED (Palette) types because of inconsistent use
; 06 Debungling version to suss aasm fulkup
; 1.2501 Some OSArgs bugs fixed, Unbuffered filing systems work again
; 02 Error buginess removed, BGet fixed
; 03 Debungling for close problem
; 04 Copy fixed wrt. restamping
; 05 Changed error text of copying onto dir to make sense
; 06 Debugging version, bad file names returned in error strings
; 07 Template and BBC ROM types added
; 08 Palette actions put back in again
; 1.2601 Alias$@xxxType reinstated
; 02 Debugging for transient run problems
; 03 Transient sp bug fixed
; 1.2701 foo.!Run stuff added. Debungling messages in LowLevel fixed
; 02 Error overflow better handled ...
; 03 Added FileType_xxx variables
; 04 Added FileType_xxx variable handling
; 05 Debug for copy/wipe exception
; 06 FSUtils revamped/fixed. StructureOnly copy option added. Code
; shorter, stack frame smaller, global area smaller
; 1.2801 Added -newer option to copy
; 02 Upcalls for osfile/osfind added
; 03 SetType takes names for file types
; 04 Pervy calling mechanism when in ROM now !
; 05 Changed LCat to not give spurious BadFileName error. Changed help
; 06 Fixed -newer option. New FileTypeFromString op
; 07 Fixed *count st. only files counted
; 08 Refixed *count st. it printed again !
; 1.2901 Added BPut cache
; 02 Added WriteCAO call to get proper divorce from OS
; 03 Cache debugging again
; 04 Filename debugging for C
; 05 _FED set to WimpPalette
; 1.3001 Added flush buffers call for Nick to ensure his buffers to disc
; Gave to Sam for 1.34? MOS
; 1.3101 Fixed copy -newer to use unsigned CMP (works better)
; 02 Debugging osfind
; 03 Append handle works now for mistakes in Read/WriteMultiple
; 1.3201 Changed ReadActionVariable to produce 1.20 compatible aliases again
; Also loops over numeric variables to see if variable does exist
; 02 Fixed !Run stuff in ExPathCommon and handle leak in *copy. OS 1.35
; 1.3301 Fixed *copy t option to force r as well
; 02 *copy now saner wrt. 'not copied' and skipping with reason
; 03 *wipe/*count also saner; doesn't say 'and is locked' after datecmpfail
; 04 *copy syntax relaxed. ReadTime shorter. Commoned up more utils code
; 05 Fixed major mistake with globalerror and errors going missing in
; reentrant situations. *opt shorter. Speedup in FS entry code
; 06 Tried to fix OSGBPB unnecessary underlay reading
; 07 Added *FileInfo
; 08 Fixed vector problems
; 09 Fixed BPut/BGet cache causing write to UnallocatedStream
; 10 Fixed BPut/BGet stack corruption
; 11 Fixed BPut stack level
; 12 Fixed file restamping
; 13 Added WimpRun alias for FEB
; 14 Debugging for HCM GBPB bug
; 1.3401 Fixed HCM GBPB bug
; 02 Added WimpRun file type
; 03 Added 'Too big' error
; 04 Another GBPB bug fixed, added the other day. code slightly smaller
; Also checks GBPB write to see if silly (bug 601)
; WimpRun changed to Obey for new scheme of things. New MOS
; 1.3501 Obey changed to FEA; GBPB power of two inefficiency believed solved
; 02 Rename and Access now do UpCall
; 03 fp now restored in error cases before CopyError! fp set to 0 in commns
; 04 ReadFSName FSControl added; lots saved in FSControl by commoning up
; 05 Fixes in *copy syntax relaxation, move code shavings
; 06 Fixed GBPB write ordering for efficient write behind. Into MOS ...
; 07 Chase core corruption in *copy. Made better wrt. being in ROM
; 1.3601 Copy fixed; also has use abs buffer option for JThackray
; Writes 'DEAD' into file load and exec while invalid during copy
; 02 Fulkup in SFreeCopy fixed; BPut cache moved to kernel
; 03 Obey changed to FEB again
; 04 Debug for settype. Released for 1.60 MOS
; 1.3701 Fixed call to GetFileBuffer in OSGBPB ReadMultiple
; 02 SetType <number> fixed
; 03 Changes to help texts; uses tokenised forms now. Uses Immediate for
; backwards addressing. New copy option (L)
; 04 Fixed GBPB write bug and inefficiency
; 05 Finally tracked Copy wierd behaviour down to routines getting VSet
; from date comparisons ! Aaargh. Debug for deep wipes. Bugs in
; file closing, block deallocation fixed in copy
; 06 Changed errors to not overflow in all cases. Upcall from close
; 1.3801 Changed heap allocation to try and extend system heap if claim fails
; 02 Fixed help strings wrt. Token0's
; 03 Seriously wacky new buffer allocation in progress. Caution !!!
; 04 Changed copy a * to use CopyWildObject not CopyObject
; 05 Fixed copy to do XOS_Find to close files rather than BL CloseFile
; as globalerror being set gave totally confusing error messages
; when the destination gave an error in creation and we closed src!
; 06 Debug for copy upcall; upcall fixed to recognise MediaNotKnown
; and pass on in sensible order
; 1.3901 Copy upcall fixed to check upcall reason after it gets passed back
; 02 Help messages fixed again
; 03 And again
; 04 debug for SetExtent in ReadMail. False alarm - Twin had changed!
; 1.4001 New code for moving bytes around in and out of buffers
; Tweaked prompt to say 'Quiet/Abandon'
; 02 Fixed minor bits in FSUtils user interfake, bug in PromptSpaceBar
; 03 Made OpenOut return scb_modifed always. Made Make,ClearCritical macros
; 04 If ROM FileSwitch got restarted with different workspace, it could
; corrupt 01800014 anyway if errors!
; 05 Changed string allocation to be kept locally, rather than fully
; globally to allow dethreading of FileSwitch in any order.
; 06 0 accepted as '*' for wildcard match in OS_GBPB (so Logistix works)
; 07 fp used to get distinct upcall handlers. some bugs in string alloc
; 08 now only one instance of upcall handlers, with ref count, as could not
; guarantee uniqueness between domains.
; 09 irq debugging help for Nick
; 10 permit leading spaces in filename expansion. Fixed wipe/count/rename
; 11 fixed copy (it had a bigger local frame and couldn't cope)
; 1.4101 fixed wipe/count (used non-local object)
; 02 fixed OSArgs for reentrancy stuffing; also faster if not directory
; 03 fixed wipe/count again (used non-local object). Allow longer paths
; 04 got rid of StaticName
; 1.4201 fixed MoveBytes
; 02 Fixed Copy restamp
; 1.4301 added SetContexts call
; 02 make local frame hang backwards off fp to access i/p registers easier
; 03 fixed bug of long standing; could have corrupted FIQ ws before
; 04 speeded up InvalidateCache
; 1.4401 make copy use wimp free slot. Shorten exit sequences. A few more addr
; FileSystem help text fixed
; 02 debug for bget
; 1.4501 OSFile_MakeError
; 1.4601 Changed way copy treats sources of memory
; 1.4701 Start to put path stuff in
; 02 Better test for date stamp (CMN &00100000). Better RUN errors
; 03 debugging on FSControl for FileCore redeclaration
; 04 Take ValidateAddress out of GBPB so that copy works under wimp - it
; also slows GBPB down far too much. Punter made responsible; sorry!
; 05 OSArgs/OSGBPB speeded up if rc in 00..FF, slower otherwise
; 06 Changed !Run implementation as it had rotted
; 1.4801 Changed back to ConvertCardinal for PrintFullSize. SpacedCardinal yuk
; 02 REEEEEELY nasty BPut speedup for kernel cache; deviant wp
; 1.4901 Conditionally removed AppendHandleToError
; 02 Fixed bugs introduced by above change
; 1.5001 Tweak messages for copy verbose
; 02 Separate data lost errors on flushes to foul correct stream
; Made it behave better if you do strange things with task module
; Made it do less disc swaps if P and L options set -> ~L always
; 03 Added type for PoScript
; 04 Fixed Rename errors for wildcards to be more consistent
; 05 Fixed Copy CDir not to look for object now Bruce has got it right
; 06 Didn't bother to do the above as we got more meaningful error
; Make errors where parent dir of dest not a dir better
; More concrete copy Q; bum - I can't do the above ^^^ cos of null: etc
; Make errors in loading files during newapp go sprong
;
; ------------------- release for 1.85 ---------------------------
; 1.5101 Debug for copy Q
; 02 Approved changes for 1.86: all marked with >>>a186<<<
; FSUtils: changed dummy userbuffer to &4000 so it doesn't conflict
; with apl claim/release.
; added another test on the util_look bit so that Copy using
; GBPB doesn't prompt twice
; removed spurious 3 instructions
; fixed CopyDirectory with respect to dest dir locking
; 03 More approved changes for 1.86: all marked with >>>a186<<<
; OSGBPB: fixed so exception conditions don't sprong and unbuffereds
; work again
; FSControl: fixed so service comes AFTER UpCall again like it was
; 04 More approved changes for 1.86: all marked with >>>a186<<<
; OSFile: fixed so duff reason codes don't explode
; FSCommon: fixed so SFreePathString doesn't corrupt caller's V
; 05 Unapproved changes for 1.86: all marked with >>>a186<<<
; FSUtils: Way I was doing apl locking was wally and wrong
; also didn't get &8000 as buffer pointer in one path thru
; Fixed amusing bug when we get 0 bytes back from all sources!
; 1.5201 More approved changes for 1.86: all marked with >>>a186<<<
; FSCtrl2: Fixed so gives bad file type error
; FSUtils: Fixed so it does StartApplication in Copy Q
; FSCommon:Tweaked to allow the above change
; 02 Now does domain stuff properly on alloc/free all
; 03 LowLevel: Now takes space as a terminator for OPT 1 string
; FSCommon: tweaks to strxxx to allow the above
; 04 Approved changes for 1.86: all marked with >>>a186<<<
; FSUtils: fix copy bug with ~F~C in GBPB case; take off one disc swap
; when source has expired, fix copy bug with stamping wrong
; file in copy p case
; 05 Unapproved changes for 1.86:
; FSControl: set MOS handlers in StartApplication (see Sam)
; 06 FileSwBody: Alter number of args for Cat/LCat
; 07 FSUtils: Don't prompt ever if datecmp fails.
; 08 Debug for file corruption problem - was in RamFS drivers
; 1.5301 FSCtrl2: Fix for ConvertHandle
; 02 Debug for other file corruption problem
; 1.5401 StreamBits: Fixed FlushSomeone to remove buffer reference from
; flushed stream
; 1.55 FileSwBody: run type of text files := *Type
; ----------------------- release for RISC OS 2.00 ----------------
; 1.56 FSCommon: Fixed use of path:fred in ops that use path strings or nopath
; FileSwBody: added run type for Desktop (&FEA) files
; 1.57 FSControl: prepend tempfs name onto FullFileName in ReadActionVariable
; 1.58 OSGBPB: Call FlushBuffer_IfNoError when writing data
; LowLevel: Don't automatically mark stream 'data lost' if error on flushing
; StreamBits: Mark scb 'data lost' when appending ": data lost" onto errors
; Implement FlushBuffer_IfNoError, which leaves the data in the
; buffer intact if there was an I/O error (allows re-tries).
; Note that a stream is now only marked 'data lost' if data which was
; previously successfully written to the stream is subsequently lost
; by FileSwitch. OS_GBPB (when extending) simply returns the error
; to the punter, and leaves its buffers in a consistent state for
; next time. I/O errors while flushing or closing a file cause 'data
; lost', because the file is deemed to have been flushed or closed
; even if there was an error.
; 1.59 File$Type variables added: AF1, AFF, FF2, FF4
; Alias$@RunType variables added for DeskFS:$.Apps applications:
; AFF = DrawFile, FF2=Config, FF9=Sprite, FFF=Text
; Alias$@PrintType_AFF and Alias$@PrintType_FF9 set up
; 1.60 #### Issue fsfunc_LastFileClosed whenever there are no files left open
; #### on the tempfs after a call to CloseFile
; 1.61 Look for foo$Path_Message variable when reporting "Filing system or
; path 'foo:' not found", and replace the error message.
; 1.62 fsfunc_LastFileClosed feature removed
; 1.63 Fixed OS_BPut - didn't properly check for scb_modified being unset
; 1.64 Set up Alias$@RunType_xxx to use Wimp$State code variable
; 1.65 Remove all references to DeskFS: (now done by !Boot files)
; 1.66 Fix bug: OS_Find of a non-existent file via a path when there is no
; current filing system caused an address exception.
; This is a symptom of a deeper problem - fsinfo_alwaysopen should be
; checked during path lookup, not at the OS_Find stage.
; 1.67 Fix bug: OS_Args 3 (set extent) used to retain a buffer on the file
; which was beyond the new end of file when the file was
; truncated.
; Change &.Hdr. to Hdr:
; 1.70 Implement MultiFS handling
; Reorganise to GET the sources rather than LNKing
; Sort out path variable handling
; Pull up cataloging and examining into FileSwitch
; Handle absolute directories in FileSwitch
; New interfaces:
; OS_FSControl 35 (register MultiFS)
; OS_FSControl 36 (deregister MultiFS)
; OS_FSControl 37 (canonicalise path)
; OS_FSControl 38 (FileInfo to Filetype)
; OS_Args 7 (read path)
; OS_File 20 (ReadWithType)
; OS_File 21 (ReadWithTypePath)
; OS_File 22 (ReadWithTypePathVar)
; OS_File 23 (ReadWithTypeNoPath)
; OS_GBPB 12 (Read dir entries with filetype)
; 1.71 Fixes:
; * Fix OS_File 6 (delete object) to delete without giving error.
; * Fix OS_Find openout such that if the filing system returns any error
; during the create, then fileswitch will resort to using openout,
; rather than openup. This gets NFS#Printer: working.
; * Fix OS_Find path handling when a path string was specified. This fixes a
; bug whereby the Risc OS make sequence gave bad name errors
; erroneously.
; * Fix *Ex to correctly display the dates.
; * Fix *Run and *Load to include the special field when constructing
; filetype specific command lines. ReadActionVariable at fault here.
; * Fix OS_FSControl rename to not complain when renaming to same thing (eg for change of case).
; * Fix OS_FSControl rename to not address exception on error from destination name check.
; * Fix OS_FSControl rename to preserve r7 and r8 too.
; 1.72 More fixes:
; * Fix CanonicaliseSpecialAndDisc and StitchAbsolutePartsTogether to work with
; fsenftry_func CanonicaliseSpecialAndDisc properly
; * Fix FSControl 37 (canonicalise path) to not have heap rot.
; * Fix ResolveWildcard using fsentry_func resolvewildcard.
; 1.74 More fixes:
; * Fix RegisterMultiFS to copy filetype
; * Fix directory handling to not stored unset directories and to fix *Dir functionality to be same as was.
; * Add NoDir, NoURD and NoLib interfaces (commands and FSControl reasons).
; * Fix *Dir without args to set Dir to &.
; 1.75 More fixes:
; * Fix ReadDir's handling of multi-element (internally generated) stored directories.
; * Fix ObtainAbsoluteParts to correctly handle the rejection of ReadDirs.
; 1.76 Fixes and features:
; * Add OSFile_ReadBlockSize
; * Fix generation of Bad OSFile Op errors
; * Split off CatExInfo and construct path stuff from FSControl
; * Add:
; FSControl_DefectList
; FSControl_AddDefect
; FSControl_ReadBootOption
; FSControl_WriteBootOption
; FSControl_UsedSpaceMap
Version 1.57
* File$Type and Alias$@RunType variables set up for type &FEA (Desktop)
......
......@@ -11,13 +11,13 @@
GBLS Module_HelpVersion
GBLS Module_ComponentName
GBLS Module_ComponentPath
Module_MajorVersion SETS "2.70"
Module_Version SETA 270
Module_MajorVersion SETS "2.71"
Module_Version SETA 271
Module_MinorVersion SETS ""
Module_Date SETS "20 Oct 2011"
Module_ApplicationDate SETS "20-Oct-11"
Module_Date SETS "27 Nov 2011"
Module_ApplicationDate SETS "27-Nov-11"
Module_ComponentName SETS "FileSwitch"
Module_ComponentPath SETS "castle/RiscOS/Sources/FileSys/FileSwitch"
Module_FullVersion SETS "2.70"
Module_HelpVersion SETS "2.70 (20 Oct 2011)"
Module_FullVersion SETS "2.71"
Module_HelpVersion SETS "2.71 (27 Nov 2011)"
END
/* (2.70)
/* (2.71)
*
* This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.1.
*
*/
#define Module_MajorVersion_CMHG 2.70
#define Module_MajorVersion_CMHG 2.71
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 20 Oct 2011
#define Module_Date_CMHG 27 Nov 2011
#define Module_MajorVersion "2.70"
#define Module_Version 270
#define Module_MajorVersion "2.71"
#define Module_Version 271
#define Module_MinorVersion ""
#define Module_Date "20 Oct 2011"
#define Module_Date "27 Nov 2011"
#define Module_ApplicationDate "20-Oct-11"
#define Module_ApplicationDate "27-Nov-11"
#define Module_ComponentName "FileSwitch"
#define Module_ComponentPath "castle/RiscOS/Sources/FileSys/FileSwitch"
#define Module_FullVersion "2.70"
#define Module_HelpVersion "2.70 (20 Oct 2011)"
#define Module_LibraryVersionInfo "2:70"
#define Module_FullVersion "2.71"
#define Module_HelpVersion "2.71 (27 Nov 2011)"
#define Module_LibraryVersionInfo "2:71"
......@@ -272,12 +272,11 @@ FSControl_ReadFreeSpace64 # 1 ; 55 - These introduced after RISC O
FSControl_DefectList64 # 1 ; 56
FSControl_AddDefect64 # 1 ; 57
; Aliases (to be removed)
FSControl_OPT * FSControl_Opt
FSControl_RUN * FSControl_Run
FSControl_CAT * FSControl_Cat
FSControl_SHUT * FSControl_Shut
FSControl_ROL_EnumerateHandles # 1 ; 58 - In RISC OS Select 1i9
FSControl_ROL_FileSwitchInfo # 1 ; 59 - In RISC OS Select 1i9 (undocumented)
FSControl_ROL_RunAbsolute # 1 ; 60 - In RISC OS Select 4
FSControl_ROL_RunUntyped # 1 ; 61 - In RISC OS Select 4
FSControl_ROL_RunTransientUtility # 1 ; 62 - In RISC OS Select 4
; Sub-reasons to FSControl_StampImage
FSControl_StampImage_NextUpdate * 0
......
......@@ -353,10 +353,6 @@ urdspaceu DCB "URDSU", 0
;
; Out Directory catalogued
GBLL CatExLong
CatExLong SETL {TRUE} ; if this is set to TRUE, then *cat, *ex, etc, will attempt
; to make the display look better with long filenames
[ CatExLong
; When long file names are in use, we vary the width of columns according to
......
......@@ -12,7 +12,7 @@
; See the License for the specific language governing permissions and
; limitations under the License.
;
TTL > Sources.FSCommon : common routines, heap stuff
TTL > Sources.FSCommon - common routines, heap stuff
; System heap used for: fscb, scb, stream buffers
......
......@@ -49,32 +49,32 @@ FSControlEntry ROUT
; Check reason codes against &.Hdr.File
JTE DirEntry, FSControl_Dir
JTE LibEntry, FSControl_Lib
JTE StartApplicEntry, FSControl_StartApplication
JTE RunTypeEntry, FSControl_RunType
JTE RunEntry, FSControl_Run
JTE CatEntry, FSControl_Cat
JTE CatEntry, FSControl_Ex ; Same as Cat
JTE CatEntry, FSControl_LCat
JTE CatEntry, FSControl_LEx
JTE InfoEntry, FSControl_Info ; Same as Cat
JTE OptEntry, FSControl_Opt
JTE SetFromNameEntry, FSControl_StarMinus
JTE AddFSEntry, FSControl_AddFS
JTE LookupFSEntry, FSControl_LookupFS
JTE SelectFSEntry, FSControl_SelectFS
JTE BootupFSEntry, FSControl_BootupFS
JTE RemoveFSEntry, FSControl_RemoveFS
JTE AddSecondaryFSEntry, FSControl_AddSecondaryFS
JTE ReadFileTypeEntry, FSControl_ReadFileType
JTE RestoreCurrEntry, FSControl_RestoreCurrent
JTE ReadTempModEntry, FSControl_ReadModuleBase
JTE ReadFSHandle, FSControl_ReadFSHandle
JTE ShutFilesEntry, FSControl_Shut
JTE ShutDownEntry, FSControl_ShutDown
JTE AccessEntry, FSControl_Access
JTE RenameEntry, FSControl_Rename
JTE DirEntry, FSControl_Dir
JTE LibEntry, FSControl_Lib
JTE StartApplicEntry, FSControl_StartApplication
JTE RunTypeEntry, FSControl_RunType
JTE RunEntry, FSControl_Run
JTE CatEntry, FSControl_Cat
JTE CatEntry, FSControl_Ex ; Same as Cat
JTE CatEntry, FSControl_LCat
JTE CatEntry, FSControl_LEx
JTE InfoEntry, FSControl_Info ; Same as Cat
JTE OptEntry, FSControl_Opt
JTE SetFromNameEntry, FSControl_StarMinus
JTE AddFSEntry, FSControl_AddFS
JTE LookupFSEntry, FSControl_LookupFS
JTE SelectFSEntry, FSControl_SelectFS
JTE BootupFSEntry, FSControl_BootupFS
JTE RemoveFSEntry, FSControl_RemoveFS
JTE AddSecondaryFSEntry, FSControl_AddSecondaryFS
JTE ReadFileTypeEntry, FSControl_ReadFileType
JTE RestoreCurrEntry, FSControl_RestoreCurrent
JTE ReadTempModEntry, FSControl_ReadModuleBase
JTE ReadFSHandle, FSControl_ReadFSHandle
JTE ShutFilesEntry, FSControl_Shut
JTE ShutDownEntry, FSControl_ShutDown
JTE AccessEntry, FSControl_Access
JTE RenameEntry, FSControl_Rename
[ hascopy
JTE CopyEntry, FSControl_Copy
|
......
......@@ -998,7 +998,7 @@ Util_IntoDirectory ROUT
;
; Out Contexts unnested, stack freed
; r0 = old value of util_nskipped
; r1 = util_length (old value of util_totalsize)
; r1 = old value of util_totalsize
Util_OutOfDirectory
Entry "r2-r6,r9-r10"
......
......@@ -12,372 +12,7 @@
; See the License for the specific language governing permissions and
; limitations under the License.
;
TTL > s.FileSwBody : FileSwitch - Top layer of Filing System rubbish
GET VersionASM
GBLA Version
Version SETA Module_Version
; 1.20 is major rework for reentrancy. Released to Sam for new 1.21+ OS's
; 1.21 internal
; 1.22 GBPB write ordering rehack
; 1.23 Block freeing reorder, transient freeing fixed
; 1.2401 GBPB 9/10/11 fixes; Count/Wipe/Copy allow longer names. Less stack use
; 02 Read address of EnvString/EnvTime to set command line up
; 03 Fix totalsize addition in CopyDirectory errors
; 04 Debungling version to suss grope fulkup
; 05 Removed FED (Palette) types because of inconsistent use
; 06 Debungling version to suss aasm fulkup
; 1.2501 Some OSArgs bugs fixed, Unbuffered filing systems work again
; 02 Error buginess removed, BGet fixed
; 03 Debungling for close problem
; 04 Copy fixed wrt. restamping
; 05 Changed error text of copying onto dir to make sense
; 06 Debugging version, bad file names returned in error strings
; 07 Template and BBC ROM types added
; 08 Palette actions put back in again
; 1.2601 Alias$@xxxType reinstated
; 02 Debugging for transient run problems
; 03 Transient sp bug fixed
; 1.2701 foo.!Run stuff added. Debungling messages in LowLevel fixed
; 02 Error overflow better handled ...
; 03 Added FileType_xxx variables
; 04 Added FileType_xxx variable handling
; 05 Debug for copy/wipe exception
; 06 FSUtils revamped/fixed. StructureOnly copy option added. Code
; shorter, stack frame smaller, global area smaller
; 1.2801 Added -newer option to copy
; 02 Upcalls for osfile/osfind added
; 03 SetType takes names for file types
; 04 Pervy calling mechanism when in ROM now !
; 05 Changed LCat to not give spurious BadFileName error. Changed help
; 06 Fixed -newer option. New FileTypeFromString op
; 07 Fixed *count st. only files counted
; 08 Refixed *count st. it printed again !
; 1.2901 Added BPut cache
; 02 Added WriteCAO call to get proper divorce from OS
; 03 Cache debugging again
; 04 Filename debugging for C
; 05 _FED set to WimpPalette
; 1.3001 Added flush buffers call for Nick to ensure his buffers to disc
; Gave to Sam for 1.34? MOS
; 1.3101 Fixed copy -newer to use unsigned CMP (works better)
; 02 Debugging osfind
; 03 Append handle works now for mistakes in Read/WriteMultiple
; 1.3201 Changed ReadActionVariable to produce 1.20 compatible aliases again
; Also loops over numeric variables to see if variable does exist
; 02 Fixed !Run stuff in ExPathCommon and handle leak in *copy. OS 1.35
; 1.3301 Fixed *copy t option to force r as well
; 02 *copy now saner wrt. 'not copied' and skipping with reason
; 03 *wipe/*count also saner; doesn't say 'and is locked' after datecmpfail
; 04 *copy syntax relaxed. ReadTime shorter. Commoned up more utils code
; 05 Fixed major mistake with globalerror and errors going missing in
; reentrant situations. *opt shorter. Speedup in FS entry code
; 06 Tried to fix OSGBPB unnecessary underlay reading
; 07 Added *FileInfo
; 08 Fixed vector problems
; 09 Fixed BPut/BGet cache causing write to UnallocatedStream
; 10 Fixed BPut/BGet stack corruption
; 11 Fixed BPut stack level
; 12 Fixed file restamping
; 13 Added WimpRun alias for FEB
; 14 Debugging for HCM GBPB bug
; 1.3401 Fixed HCM GBPB bug
; 02 Added WimpRun file type
; 03 Added 'Too big' error
; 04 Another GBPB bug fixed, added the other day. code slightly smaller
; Also checks GBPB write to see if silly (bug 601)
; WimpRun changed to Obey for new scheme of things. New MOS
; 1.3501 Obey changed to FEA; GBPB power of two inefficiency believed solved
; 02 Rename and Access now do UpCall
; 03 fp now restored in error cases before CopyError! fp set to 0 in commns
; 04 ReadFSName FSControl added; lots saved in FSControl by commoning up
; 05 Fixes in *copy syntax relaxation, move code shavings
; 06 Fixed GBPB write ordering for efficient write behind. Into MOS ...
; 07 Chase core corruption in *copy. Made better wrt. being in ROM
; 1.3601 Copy fixed; also has use abs buffer option for JThackray
; Writes 'DEAD' into file load and exec while invalid during copy
; 02 Fulkup in SFreeCopy fixed; BPut cache moved to kernel
; 03 Obey changed to FEB again
; 04 Debug for settype. Released for 1.60 MOS
; 1.3701 Fixed call to GetFileBuffer in OSGBPB ReadMultiple
; 02 SetType <number> fixed
; 03 Changes to help texts; uses tokenised forms now. Uses Immediate for
; backwards addressing. New copy option (L)
; 04 Fixed GBPB write bug and inefficiency
; 05 Finally tracked Copy wierd behaviour down to routines getting VSet
; from date comparisons ! Aaargh. Debug for deep wipes. Bugs in
; file closing, block deallocation fixed in copy
; 06 Changed errors to not overflow in all cases. Upcall from close
; 1.3801 Changed heap allocation to try and extend system heap if claim fails
; 02 Fixed help strings wrt. Token0's
; 03 Seriously wacky new buffer allocation in progress. Caution !!!
; 04 Changed copy a * to use CopyWildObject not CopyObject
; 05 Fixed copy to do XOS_Find to close files rather than BL CloseFile
; as globalerror being set gave totally confusing error messages
; when the destination gave an error in creation and we closed src!
; 06 Debug for copy upcall; upcall fixed to recognise MediaNotKnown
; and pass on in sensible order
; 1.3901 Copy upcall fixed to check upcall reason after it gets passed back
; 02 Help messages fixed again
; 03 And again
; 04 debug for SetExtent in ReadMail. False alarm - Twin had changed!
; 1.4001 New code for moving bytes around in and out of buffers
; Tweaked prompt to say 'Quiet/Abandon'
; 02 Fixed minor bits in FSUtils user interfake, bug in PromptSpaceBar
; 03 Made OpenOut return scb_modifed always. Made Make,ClearCritical macros
; 04 If ROM FileSwitch got restarted with different workspace, it could
; corrupt 01800014 anyway if errors!
; 05 Changed string allocation to be kept locally, rather than fully
; globally to allow dethreading of FileSwitch in any order.
; 06 0 accepted as '*' for wildcard match in OS_GBPB (so Logistix works)
; 07 fp used to get distinct upcall handlers. some bugs in string alloc
; 08 now only one instance of upcall handlers, with ref count, as could not
; guarantee uniqueness between domains.
; 09 irq debugging help for Nick
; 10 permit leading spaces in filename expansion. Fixed wipe/count/rename
; 11 fixed copy (it had a bigger local frame and couldn't cope)
; 1.4101 fixed wipe/count (used non-local object)
; 02 fixed OSArgs for reentrancy stuffing; also faster if not directory
; 03 fixed wipe/count again (used non-local object). Allow longer paths
; 04 got rid of StaticName
; 1.4201 fixed MoveBytes
; 02 Fixed Copy restamp
; 1.4301 added SetContexts call
; 02 make local frame hang backwards off fp to access i/p registers easier
; 03 fixed bug of long standing; could have corrupted FIQ ws before
; 04 speeded up InvalidateCache
; 1.4401 make copy use wimp free slot. Shorten exit sequences. A few more addr
; FileSystem help text fixed
; 02 debug for bget
; 1.4501 OSFile_MakeError
; 1.4601 Changed way copy treats sources of memory
; 1.4701 Start to put path stuff in
; 02 Better test for date stamp (CMN &00100000). Better RUN errors
; 03 debugging on FSControl for FileCore redeclaration
; 04 Take ValidateAddress out of GBPB so that copy works under wimp - it
; also slows GBPB down far too much. Punter made responsible; sorry!
; 05 OSArgs/OSGBPB speeded up if rc in 00..FF, slower otherwise
; 06 Changed !Run implementation as it had rotted
; 1.4801 Changed back to ConvertCardinal for PrintFullSize. SpacedCardinal yuk
; 02 REEEEEELY nasty BPut speedup for kernel cache; deviant wp
; 1.4901 Conditionally removed AppendHandleToError
; 02 Fixed bugs introduced by above change
; 1.5001 Tweak messages for copy verbose
; 02 Separate data lost errors on flushes to foul correct stream
; Made it behave better if you do strange things with task module
; Made it do less disc swaps if P and L options set -> ~L always
; 03 Added type for PoScript
; 04 Fixed Rename errors for wildcards to be more consistent
; 05 Fixed Copy CDir not to look for object now Bruce has got it right
; 06 Didn't bother to do the above as we got more meaningful error
; Make errors where parent dir of dest not a dir better
; More concrete copy Q; bum - I can't do the above ^^^ cos of null: etc
; Make errors in loading files during newapp go sprong
;
; ------------------- release for 1.85 ---------------------------
; 1.5101 Debug for copy Q
; 02 Approved changes for 1.86: all marked with >>>a186<<<
; FSUtils: changed dummy userbuffer to &4000 so it doesn't conflict
; with apl claim/release.
; added another test on the util_look bit so that Copy using
; GBPB doesn't prompt twice
; removed spurious 3 instructions
; fixed CopyDirectory with respect to dest dir locking
; 03 More approved changes for 1.86: all marked with >>>a186<<<
; OSGBPB: fixed so exception conditions don't sprong and unbuffereds
; work again
; FSControl: fixed so service comes AFTER UpCall again like it was
; 04 More approved changes for 1.86: all marked with >>>a186<<<
; OSFile: fixed so duff reason codes don't explode
; FSCommon: fixed so SFreePathString doesn't corrupt caller's V
; 05 Unapproved changes for 1.86: all marked with >>>a186<<<
; FSUtils: Way I was doing apl locking was wally and wrong
; also didn't get &8000 as buffer pointer in one path thru
; Fixed amusing bug when we get 0 bytes back from all sources!
; 1.5201 More approved changes for 1.86: all marked with >>>a186<<<
; FSCtrl2: Fixed so gives bad file type error
; FSUtils: Fixed so it does StartApplication in Copy Q
; FSCommon:Tweaked to allow the above change
; 02 Now does domain stuff properly on alloc/free all
; 03 LowLevel: Now takes space as a terminator for OPT 1 string
; FSCommon: tweaks to strxxx to allow the above
; 04 Approved changes for 1.86: all marked with >>>a186<<<
; FSUtils: fix copy bug with ~F~C in GBPB case; take off one disc swap
; when source has expired, fix copy bug with stamping wrong
; file in copy p case
; 05 Unapproved changes for 1.86:
; FSControl: set MOS handlers in StartApplication (see Sam)
; 06 FileSwBody: Alter number of args for Cat/LCat
; 07 FSUtils: Don't prompt ever if datecmp fails.
; 08 Debug for file corruption problem - was in RamFS drivers
; 1.5301 FSCtrl2: Fix for ConvertHandle
; 02 Debug for other file corruption problem
; 1.5401 StreamBits: Fixed FlushSomeone to remove buffer reference from
; flushed stream
; 1.55 FileSwBody: run type of text files := *Type
; ----------------------- release for RISC OS 2.00 ----------------
; 1.56 FSCommon: Fixed use of path:fred in ops that use path strings or nopath
; FileSwBody: added run type for Desktop (&FEA) files
; 1.57 FSControl: prepend tempfs name onto FullFileName in ReadActionVariable
; 1.58 OSGBPB: Call FlushBuffer_IfNoError when writing data
; LowLevel: Don't automatically mark stream 'data lost' if error on flushing
; StreamBits: Mark scb 'data lost' when appending ": data lost" onto errors
; Implement FlushBuffer_IfNoError, which leaves the data in the
; buffer intact if there was an I/O error (allows re-tries).
; Note that a stream is now only marked 'data lost' if data which was
; previously successfully written to the stream is subsequently lost
; by FileSwitch. OS_GBPB (when extending) simply returns the error
; to the punter, and leaves its buffers in a consistent state for
; next time. I/O errors while flushing or closing a file cause 'data
; lost', because the file is deemed to have been flushed or closed
; even if there was an error.
; 1.59 File$Type variables added: AF1, AFF, FF2, FF4
; Alias$@RunType variables added for DeskFS:$.Apps applications:
; AFF = DrawFile, FF2=Config, FF9=Sprite, FFF=Text
; Alias$@PrintType_AFF and Alias$@PrintType_FF9 set up
; 1.60 #### Issue fsfunc_LastFileClosed whenever there are no files left open
; #### on the tempfs after a call to CloseFile
; 1.61 Look for foo$Path_Message variable when reporting "Filing system or
; path 'foo:' not found", and replace the error message.
; 1.62 fsfunc_LastFileClosed feature removed
; 1.63 Fixed OS_BPut - didn't properly check for scb_modified being unset
; 1.64 Set up Alias$@RunType_xxx to use Wimp$State code variable
; 1.65 Remove all references to DeskFS: (now done by !Boot files)
; 1.66 Fix bug: OS_Find of a non-existent file via a path when there is no
; current filing system caused an address exception.
; This is a symptom of a deeper problem - fsinfo_alwaysopen should be
; checked during path lookup, not at the OS_Find stage.
; 1.67 Fix bug: OS_Args 3 (set extent) used to retain a buffer on the file
; which was beyond the new end of file when the file was
; truncated.
; Change &.Hdr. to Hdr:
; 1.70 Implement MultiFS handling
; Reorganise to GET the sources rather than LNKing
; Sort out path variable handling
; Pull up cataloging and examining into FileSwitch
; Handle absolute directories in FileSwitch
; New interfaces:
; OS_FSControl 35 (register MultiFS)
; OS_FSControl 36 (deregister MultiFS)
; OS_FSControl 37 (canonicalise path)
; OS_FSControl 38 (FileInfo to Filetype)
; OS_Args 7 (read path)
; OS_File 20 (ReadWithType)
; OS_File 21 (ReadWithTypePath)
; OS_File 22 (ReadWithTypePathVar)
; OS_File 23 (ReadWithTypeNoPath)
; OS_GBPB 12 (Read dir entries with filetype)
; 1.71 Fixes:
; * Fix OS_File 6 (delete object) to delete without giving error.
; * Fix OS_Find openout such that if the filing system returns any error
; during the create, then fileswitch will resort to using openout,
; rather than openup. This gets NFS#Printer: working.
; * Fix OS_Find path handling when a path string was specified. This fixes a
; bug whereby the Risc OS make sequence gave bad name errors
; erroneously.
; * Fix *Ex to correctly display the dates.
; * Fix *Run and *Load to include the special field when constructing
; filetype specific command lines. ReadActionVariable at fault here.
; * Fix OS_FSControl rename to not complain when renaming to same thing (eg for change of case).
; * Fix OS_FSControl rename to not address exception on error from destination name check.
; * Fix OS_FSControl rename to preserve r7 and r8 too.
; 1.72 More fixes:
; * Fix CanonicaliseSpecialAndDisc and StitchAbsolutePartsTogether to work with
; fsenftry_func CanonicaliseSpecialAndDisc properly
; * Fix FSControl 37 (canonicalise path) to not have heap rot.
; * Fix ResolveWildcard using fsentry_func resolvewildcard.
; 1.74 More fixes:
; * Fix RegisterMultiFS to copy filetype
; * Fix directory handling to not stored unset directories and to fix *Dir functionality to be same as was.
; * Add NoDir, NoURD and NoLib interfaces (commands and FSControl reasons).
; * Fix *Dir without args to set Dir to &.
; 1.75 More fixes:
; * Fix ReadDir's handling of multi-element (internally generated) stored directories.
; * Fix ObtainAbsoluteParts to correctly handle the rejection of ReadDirs.
; 1.76 Fixes and features:
; * Add OSFile_ReadBlockSize
; * Fix generation of Bad OSFile Op errors
; * Split off CatExInfo and construct path stuff from FSControl
; * Add:
; FSControl_DefectList
; FSControl_AddDefect
; FSControl_ReadBootOption
; FSControl_WriteBootOption
; FSControl_UsedSpaceMap
;
; For future pieces of information refer to doc.Log
GBLL appendhandle
appendhandle SETL False
; mjs Nov 97:
; Ursula performance enhancements
;
GBLL MercifulToSysHeap ;attempt to avoid very frequent OS_Heap
;claims and releases for sytem heap
GBLL MercifulTracing ;tracing for diagnostics only
MercifulToSysHeap SETL {TRUE}
MercifulTracing SETL {FALSE} :LAND: MercifulToSysHeap
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Flags to strip out copy + wipe for MOS debugging versions
GBLL hascopy
GBLL haswipe
GBLL hascount
GBLL hasutil
[ ChopOffTheGoolies ; For Sam MOS debugging versions
hascopy SETL False
haswipe SETL False
hascount SETL False
|
hascopy SETL True
haswipe SETL True
hascount SETL True
]
GBLL chopoffdollarfrompaths
chopoffdollarfrompaths SETL False
hasutil SETL hascopy :LOR: haswipe :LOR: hascount
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Other implementation modofiers
GBLL sparebuffer
sparebuffer SETL True
GBLL osfile5cache
osfile5cache SETL True
GBLL kludgeforNFS
kludgeforNFS SETL False
GBLL StrongARM
GBLL SASTMhatbroken
StrongARM SETL {TRUE}
SASTMhatbroken SETL {TRUE} :LAND: StrongARM
TTL > s.FileSwBody - Top layer of Filing System rubbish
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Some FileSwitch specific macros
......@@ -411,7 +46,7 @@ JumpTableBaseValue SETA $baseval
GBLS JumpTableName
GBLA JumpTableBaseValue
GBLL ReportJumpTableError
ReportJumpTableError SETL True
ReportJumpTableError SETL {TRUE}
MACRO
JTE $routine, $checkvalue
......@@ -419,7 +54,7 @@ ReportJumpTableError SETL True
[ (.-$JumpTableName) <> ($checkvalue-JumpTableBaseValue) :SHL: 2
[ ReportJumpTableError
! 1, "Error in jump table with value '$checkvalue'"
ReportJumpTableError SETL False
ReportJumpTableError SETL {FALSE}
]
]
]
......@@ -831,9 +466,9 @@ StaticName_length * 1024 ; Limits size of input filename, path etc.
; size of buffer for enumerating dirs has been increased to allow filenames up to 256 characters
[ UseDynamicAreas
copylocalframesize * &204 ; Change this if changing ANY frame size
copylocalframesize * &208 ; Change this if changing ANY frame size
|
copylocalframesize * &1FC ; Change this if changing ANY frame size
copylocalframesize * &200 ; Change this if changing ANY frame size
]
^ -copylocalframesize, fp
......@@ -901,7 +536,7 @@ util_endtime # 8 ; Top 3 bytes cleared to zero when used
util_ndir # 4 ; Global to util operation
util_nfiles # 4
util_totalsize # 4
util_totalsize # 8 ; 64 bit totals
util_bitset # 4 ; Localled in dir recursion
util_direntry # 4
......
......@@ -14,6 +14,74 @@
;
SUBT > Sources.FileSwHdr - for standalone assembly
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Other implementation modifiers
GBLL appendhandle ; Append channel number to error messages?
appendhandle SETL {FALSE}
; Ursula performance enhancements
GBLL MercifulToSysHeap ; attempt to avoid very frequent OS_Heap
; claims and releases for sytem heap
GBLL MercifulTracing ; tracing for diagnostics only
MercifulToSysHeap SETL {TRUE}
MercifulTracing SETL {FALSE} :LAND: MercifulToSysHeap
GBLL CatExLong
CatExLong SETL {TRUE} ; if this is set to TRUE, then *cat, *ex, etc, will attempt
; to make the display look better with long filenames
GBLL ChopOffTheGoolies
ChopOffTheGoolies SETL {FALSE} ; For deviant OS debugging versions
GBLL chopoffdollarfrompaths
chopoffdollarfrompaths SETL {FALSE}
GBLL sparebuffer
sparebuffer SETL {TRUE}
GBLL osfile5cache
osfile5cache SETL {TRUE}
GBLL kludgeforNFS
kludgeforNFS SETL {FALSE}
GBLL StrongARM
GBLL SASTMhatbroken
StrongARM SETL {TRUE}
SASTMhatbroken SETL {TRUE} :LAND: StrongARM
GBLL Use_fsfile_Save
Use_fsfile_Save SETL {TRUE} ; Indicates whether fsfile_Save reason is used, or create, open, GBPB, close
GBLL Use_fsfile_Load
Use_fsfile_Load SETL {TRUE} ; Indicates whether fsfile_Load reason is used, or open, GBPB, close
GBLL UseDynamicAreas
UseDynamicAreas SETL {TRUE}
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Flags to strip out copy + wipe for MOS debugging versions
GBLL hascopy
GBLL haswipe
GBLL hascount
GBLL hasutil
[ ChopOffTheGoolies ; For Sam MOS debugging versions
hascopy SETL {FALSE}
haswipe SETL {FALSE}
hascount SETL {FALSE}
|
hascopy SETL {TRUE}
haswipe SETL {TRUE}
hascount SETL {TRUE}
]
hasutil SETL hascopy :LOR: haswipe :LOR: hascount
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; One or two header definitions
GET Hdr:ListOpts
OPT OptNoList
GET Hdr:Macros
......@@ -22,12 +90,10 @@
GET Hdr:UserIF.<UserIF>
GET Hdr:ImageSize.<ImageSize>
; Get brutal with 32-bitness - use 26-bit code unless we really mustn't,
; as 32-bit is a performance drain. Can't softload FileSwitch really,
; anyway.
[ :LNOT: No26bitCode
No32bitCode SETL {TRUE}
]
[ :LNOT: No26bitCode ; Get brutal with 32-bitness - use 26-bit code unless we really mustn't,
No32bitCode SETL {TRUE} ; as 32-bit is a performance drain. Can't softload FileSwitch really,
] ; anyway.
GET Hdr:CMOS
GET Hdr:ModHand
GET Hdr:Services
......@@ -48,6 +114,9 @@ No32bitCode SETL {TRUE}
GET Hdr:MsgTrans
GET Hdr:Territory
GET Hdr:OSRSI6
GET VersionASM
GBLA Version
Version SETA Module_Version
OPT OptList + OptPage
......@@ -65,24 +134,6 @@ TAB * 09
LF * 10
CR * 13
GBLL ChopOffTheGoolies ; For deviant OS debugging versions
ChopOffTheGoolies SETL False
; Indicates whether fsfile_Save reason is used, or create, open, GBPB, close
GBLL Use_fsfile_Save
Use_fsfile_Save SETL True
; Indicates whether fsfile_Load reason is used, or open, GBPB, close
GBLL Use_fsfile_Load
Use_fsfile_Load SETL True
GBLL CatExLong
CatExLong SETL {TRUE}
GBLL UseDynamicAreas
UseDynamicAreas SETL {TRUE}
MACRO
assert $condition
[ :LNOT: ($condition)
......
; Copyright 1996 Acorn Computers Ltd
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
; http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
;
SUBT > Sources.KernelFSW
[ False
AREA FileSwitch, CODE, READONLY, RELOCATABLE
EXPORT BGetEntry
EXPORT BPutEntry
|
LEADR Module_LoadAddr
]
GBLL ChopOffTheGoolies ; For deviant OS debugging versions
ChopOffTheGoolies SETL False
; Indicates whether fsfile_Save reason is used, or create, open, GBPB, close
GBLL Use_fsfile_Save
Use_fsfile_Save SETL True
; Indicates whether fsfile_Load reason is used, or open, GBPB, close
GBLL Use_fsfile_Load
Use_fsfile_Load SETL True
GET Hdr:FileTypes
GET Hdr:Wimp
GET Hdr:UpCall
GET Hdr:LowFSi
GET FSW:Sources.DebugOpts
GET FSW:Sources.FileSwBody
GET FSW:Sources.FSCommands
GET FSW:Sources.FSErrors
GET FSW:Sources.FSCommon
GET FSW:Sources.SysVars
GET FSW:Sources.PathMunge
GET FSW:Sources.FSPath
GET FSW:Sources.TopPath
GET FSW:Sources.FSUtils
GET FSW:Sources.FSUtils2
GET FSW:Sources.FSUtils3
GET FSW:Sources.FSControl
GET FSW:Sources.FSCtrl2
GET FSW:Sources.StreamBits
GET FSW:Sources.OSFile
GET FSW:Sources.OSFind
GET FSW:Sources.OSBGetBPut
GET FSW:Sources.OSGBPB
GET FSW:Sources.OSArgs
GET FSW:Sources.LowLevel
GBLS whattodonow
[ :LNOT: AssemblingArthur
whattodonow SETS " GET FSW:Sources.FSShared"
|
FileSwitch_ModuleEnd
DCD 0 ; Next module is the end of module chain now
NextModuleInImage ; Sam's BasProg will patch this as appropriate
whattodonow SETS ""
]
$whattodonow
END
......@@ -523,11 +523,10 @@ InvalidateBGetCache ROUT
]
Pull "r1, pc" ; Return, either to caller, or below
[ {TRUE} ;StrongARM stores PC+8 instead of PC+12 - make either work
50 Push "r1, pc" ; Make routine return to .+8 or .+12
50 Push "r1, r2"
STR pc, [sp, #4] ; Make routine return to .+8 or .+12
B %FT52
NOP ; for PC+8
;
LDR r14, BGet_handle ; r1 preserved over call
TEQ r14, r1
Pull "r1, pc",NE ; No more to kill
......@@ -536,17 +535,6 @@ InvalidateBGetCache ROUT
52 ADR r1, BPut_shiftedbase
B %BT30
|
50 Push "r1, pc" ; Make routine return to .+12
ADR r1, BPut_shiftedbase ; Order means we don't need NOP
B %BT30
LDR r14, BGet_handle ; r1 preserved over call
TEQ r14, r1
Pull "r1, pc",NE ; No more to kill
B %BT20
]
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Ensure both caches invalid
......
......@@ -110,34 +110,34 @@ FileEntry NewSwiEntry "r0-r5, r6-r10" ; Results poked into stack; was r0-r5, r6
CMP r0, #OSFile_ReadBlockSize
JTAB r0, LS, OSFile
B OSFile_BadOp
; Check values against &.Hdr.File
JTE SaveFileOp, OSFile_Save;
JTE WriteInfoFileOp, OSFile_WriteInfo;
JTE WriteInfoFileOp, OSFile_WriteLoad;
JTE WriteInfoFileOp, OSFile_WriteExec;
JTE WriteInfoFileOp, OSFile_WriteAttr;
JTE Read_UseLoadPath, OSFile_ReadInfo;
JTE DeleteCreateFileOp, OSFile_Delete;
JTE DeleteCreateFileOp, OSFile_Create;
JTE DeleteCreateFileOp, OSFile_CreateDir;
JTE StampSetTypeFileOp, OSFile_SetStamp;
JTE SaveCreateStampFileOp, OSFile_SaveStamp;
JTE SaveCreateStampFileOp, OSFile_CreateStamp;
JTE Load_UseGivenLoadPath, OSFile_LoadPath
JTE Read_UseGivenLoadPath, OSFile_ReadPath;
; Check values against &.Hdr.File
JTE SaveFileOp, OSFile_Save
JTE WriteInfoFileOp, OSFile_WriteInfo
JTE WriteInfoFileOp, OSFile_WriteLoad
JTE WriteInfoFileOp, OSFile_WriteExec
JTE WriteInfoFileOp, OSFile_WriteAttr
JTE Read_UseLoadPath, OSFile_ReadInfo
JTE DeleteCreateFileOp, OSFile_Delete
JTE DeleteCreateFileOp, OSFile_Create
JTE DeleteCreateFileOp, OSFile_CreateDir
JTE StampSetTypeFileOp, OSFile_SetStamp
JTE SaveCreateStampFileOp, OSFile_SaveStamp
JTE SaveCreateStampFileOp, OSFile_CreateStamp
JTE Load_UseGivenLoadPath, OSFile_LoadPath
JTE Read_UseGivenLoadPath, OSFile_ReadPath
JTE Load_UseGivenLoadPathVar, OSFile_LoadPathVar
JTE Read_UseGivenLoadPathVar, OSFile_ReadPathVar;
JTE Load_UseNoLoadPath, OSFile_LoadNoPath
JTE Read_UseNoLoadPath, OSFile_ReadNoPath;
JTE StampSetTypeFileOp, OSFile_SetType;
JTE MakeErrorOp, OSFile_MakeError
JTE Read_UseLoadPath, OSFile_ReadWithType
JTE Read_UseGivenLoadPath, OSFile_ReadWithTypePath
JTE Read_UseGivenLoadPathVar, OSFile_ReadPathVar
JTE Load_UseNoLoadPath, OSFile_LoadNoPath
JTE Read_UseNoLoadPath, OSFile_ReadNoPath
JTE StampSetTypeFileOp, OSFile_SetType
JTE MakeErrorOp, OSFile_MakeError
JTE Read_UseLoadPath, OSFile_ReadWithType
JTE Read_UseGivenLoadPath, OSFile_ReadWithTypePath
JTE Read_UseGivenLoadPathVar, OSFile_ReadWithTypePathVar
JTE Read_UseNoLoadPath, OSFile_ReadWithTypeNoPath
JTE Read_UseNoLoadPath, OSFile_ReadWithTypeNoPath
[ Version >= 176
JTE Read_BlockSize, OSFile_ReadBlockSize
JTE Read_BlockSize, OSFile_ReadBlockSize
]
OSFile_BadOp
......@@ -491,56 +491,17 @@ DeleteCreateFileOp
ADDVS sp, sp, #4*4
SwiExit VS
; Return the file's the parameters for delete op
; Return the file's old catalogue entry for delete op
TEQ r7, #OSFile_Delete
BNE %FT10
[ debugosfile
DLINE "Delete..."
]
; Special handling for delete..
; Save old parameters for file
MOV r14, fp
STMIA r14!, {r0}
STMIB r14, {r2,r3,r4,r5}
[ {FALSE}
; This code checks for partitions being empty before deleteing them.
TEQ r0, #object_file :OR: object_directory
BNE %FT10
[ debugosfile
DLINE "Partition..."
]
; Special handling for deleting a directory
Push "r1,r6,fscb"
SUB sp, sp, #256
BL AssessDestinationForPathTailForDirRead
MOV r0, #fsfunc_ReadDirEntries
MOV r2, sp
MOV r3, #1
MOV r4, #0
MOV r5, #256
BL CallFSFunc_Given
ADD sp, sp, #256
Pull "r1,r6,fscb"
BVS %FT05
[ debugosfile
DREG r3,"r3,r4=",cc
DREG r4,","
]
CMP r4, #-1
CMPEQ r3, #0
LDRNE r1, PassedFilename
BLNE SetMagicPartNotEmpty
05
ADDVS sp, sp, #4*4
BVS %FT80
]
; Frame contains r0-r5, r6-r10
STR r0, [fp]
ADD r14, fp, #2 * 4
STMIA r14, {r2,r3,r4,r5}
10
; Restore the parameters for a create
Pull "r2,r3,r4,r5"
......@@ -585,9 +546,10 @@ SaveFileOp
B JunkStringsOSFileExit
UpdatingJunkStringsOSFileExit
MOV r14, fp
STMIA r14!, {r0}
STMIB r14, {r2,r3,r4,r5}
; Frame contains r0-r5, r6-r10
STR r0, [fp]
ADD r14, fp, #2 * 4
STMIA r14, {r2,r3,r4,r5}
JunkStringsOSFileExit
BL JunkFileStrings
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment