home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Archive Magazine 1995
/
ARCHIVE95.iso
/
discs
/
pipeline
/
6_10
/
JBrown
/
!Memphis
/
!Help
< prev
next >
Wrap
Text File
|
1992-08-29
|
4KB
|
104 lines
Memphis: Early capital of ancient Egypt, on W. bank of Nile S. of Cairo.
About MemFS 1.08
================
* 1.08 fixes openout and dir not empty problems with riscos 3.
Provides a dynamically resizeable ramdisc by using the system sprite area
for storage. (In sprites so its compatible with other users, but sadly not
those who *SNew)
Up to 30 character file names (beware old filer 10-char bug).
Automatic creation of directories in path of a created file.
Automatically grows and shrinks sprite area, but this can only happen when
the system allows. It never goes smaller than the configured spritesize, and
only shrinks when deleting, so you can drag it large to make space before
operations during which it cannot grow. This means *COPY, principally, since
that claims all free memory during its operation.
Transparently uses links created by !Links>=0.52 within MemFS.
Ideal for use as a scrap device - NB in fact !Run sets Wimp$Scrap onto it.
Pretty minimal memory overhead:
64 bytes sprite and file header per object
name length + 4 rounded up to word per directory entry.
Start by running the memfs application, then use it like the ramdisc, except
it can be resized with stuff in.
I am pretty sure that this works, but there may well still be bugs, so
please don't commit irreplaceable data to it!
Technical
A nearly full riscos file system, supports everything except (I think):
* Wildcarded: *access, *info, *fileinfo, Open
* options, disc names.
* URD(&) - easy to do if demand, but I morally disapprove.
* Does not sort *CAT/*EX output
The error message "Lost inode" means that MemFS was unable to find a sprite
it expected to. It will use any file structure that it finds already present
when it is loaded, so if you want you can save the entire contents with
*ssave, and load it again with *sload.
The memfs and memfsfiler modules should work ok when loaded outside the
Wimp, and behave as a standard fs/filer pair. The filer needs a sprite
called memfs in the wimp sprite pool. Of course, it will be difficult to
extend the sprite area when anything is running in single tasking mode.
Massively suboptimal algorithms. Entire sprite area is moved down when files
are deleted, unsorted directories are searched linearly :-(
Dedications
This project was written in C and produced using the FSinC stuff from Jon
Roach of Acorn, as heavily hacked by me.
The idea of using the sprite area as a dynamic method of allocating space
came to Nicko Van Someren, in a flash of insight during a conversation we
had. This was several months after I had given up on an attempt at this
using the ramfs dynamic area due to the evil that riscos perpetrates when
one calls ChangeDynamic area on that, and settled for the horrible solution
of the RMA, which would never shrink.
It is dedicated to debugging via printf :-(
Distribution:
This software may be freely redistributed, so long as only a reasonable
copying or media charge is made, and all files I distribute are included. I
retain copyright to the code. Commercial (including magazine) distribution,
or distributing modified versions of this please contact me - I am normally
happy for it to be reused in other free software, but like to avoid deviant
versions of mine causing trouble.
I am not asking for money, but if you like and use it I would be surprised
and amazed by any contributions, and you will receive a disc with latest
versions on. (>ú5, say)
Me:
Brian.Brunswick@cl.cam.ac.uk
or
Brian Brunswick
Fairview
Avenue des Hirondelles
Pool-in-WharfeDale
Leeds
LS21 1EY
UK
0532 843737