> net#arf:&.doc*.FileSwitch FS level changes since 1.20 =========================== new bits/fields in fsinfo word fsinfo_flushnotify * 1 :SHL: 27 ; Tell filing system when flushing fsinfo_fsfilereadinfonolen * 1 :SHL: 26 ; fsfile_ReadInfoNoLen supported fsinfo_fileinfo * 1 :SHL: 25 ; fsfunc_FileInfo supported fsinfo_setcontexts * 1 :SHL: 24 ; fsfunc_SetContexts supported ; ^^^Don't know if this should be doc'd fsinfo_nfiles * &FF :SHL: 8 ; Min number of files openable on fs ; 0 -> unlimited by fs fsargs ------ In r0 = fsargs_Flush r1 = fs handle Gives filesystem notification of a flush to media Only needed where filesystem does buffering in addition to FileSwitch, eg. ADFS when doing readahead/writebehind. Only called if fsinfo_flushnotify is set in fsinfo word and stream is buffered. fsfile ------ In r0 = fsfunc_ReadInfoNoLen r1 -> filename Out r0 = object type r2 = load addr r3 = exec addr r5 = attr Much like fsfunc_ReadInfo, but don't require length. Useful for NetFS with FileServers as length is not stored in directory. NB. There is no high-level equivalent of this call. Only called if fsinfo_fsfilereadinfonolen is set in fsinfo word, otherwise called with fsfile_ReadInfo, and returned r4 is ignored. fsfunc ------ This WAS present at the low-level interface in 1.20 but not documented. In r0 = fsfunc_CatalogObjects (10_xx) r1 -> dirname r2 -> core r3 = max number of entries to read r4 = entry number in dir to start from r5 = ?core Out as per fsfunc_ReadDirEntriesInfo, except record format is: ALIGN load * 0 ; offsets (decimal) exec * 4 length * 8 attr * 12 type * 16 SIN * 20 date * 24 ; 5 byte (cs since 1900) fs dependent name * 29... In r0 = fsfunc_FileInfo (10_xx) r1 -> wildcarded object Produce *FileInfo type list of object name(s) + info, as much as possible. Only called if fsinfo_fileinfo is set in fsinfo word, otherwise called with fsfunc_Info. Punter level changes since 1.20 =============================== OS_File ------- In r0 = OSFile_MakeError (10_19) r1 -> filename r2 = object type (0,1,2) Out VS always: r0 -> error block, eg. "File 'xyz' not found" "'xyz' is a file" "'xyz' is a directory" Typical use is to produce prettier errors, eg. MOV r0, #OSFile_ReadInfo SWI XOS_File BVS flurg TEQ r0, #object_file MOVNE r2, r0 MOVNE r0, #OSFile_MakeError SWINE XOS_File BVS flurg OS_GBPB ------- In r0 = OSGBPB_ReadDirEntriesCatInfo (10_11) r1 -> dirname r2 -> core r3 = max number of entries to read r4 = entry number in dir to start from r5 = ?core r6 -> wildcard (0 -> use '*') Out as per OSGBPB_ReadDirEntriesInfo, except record format is: ALIGN load * 0 ; offsets (decimal) exec * 4 length * 8 attr * 12 type * 16 SIN * 20 date * 24 ; 5 byte (cs since 1900) fs dependent name * 29... We wanted to write a generic catalogue/examine utility, where all this info is needed, but never got round to doing it ... Unlike the corresponding low-level call, this was NOT available on 1.20. Enhancement to OSGBPB_ReadDir calls (9,10,11): In r6 -> wildcard pattern Now r6 = 0 -> use '*' (Logistix had problem with this) OS_FSControl ------------ In r0 = FSControl_Copy r3 new bits allowed util_peekdest * 1 :SHL: 14 ; Quick peek at dest before loading src ? util_userbuffer * 1 :SHL: 13 ; Use punter's buffer as well as apl/rma ? util_newer * 1 :SHL: 12 ; Copy files if newer (or binary) ? util_structureonly * 1 :SHL: 11 ; Structure only (no files) ? util_restamp * 1 :SHL: 10 ; Restamp datestamped files ? util_noattr * 1 :SHL: 9 ; Don't copy attributes over ? iff util_userbuffer then r8 -> more info, first word is user bufferaddr In r0 = FSControl_FileTypeFromString (10_31) r1 -> filetype string (CtrlChar term) of form 'Obey','&FFD','4_1230' Out r2 = filetype or error ('Bad number' etc.) In r0 = FSControl_FileInfo (10_32) r1 -> wildcarded object Produce *FileInfo type list of object name(s) + info, as much as possible. In r0 = FSControl_ReadFSName (10_33) r1 = fs number r2 -> core r3 = ?core Out VC: filesystem name in core (zero terminated) VS: r0 -> buffer overflow Unknown fs numbers return empty string