home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Archive Magazine 1996
/
ARCHIVE_96.iso
/
discs
/
mag_discs
/
volume_8
/
issue_06
/
risc_os
/
FileSwitch
< prev
next >
Wrap
Text File
|
1988-07-20
|
5KB
|
187 lines
> 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