[comp.sys.amiga.tech] An IFF-based filesystem?

shadow@pawl.rpi.edu (Deven T. Corzine) (04/23/89)

I've got an idea to bounce off the net here...  In considering design
and implementation of a file system for Amigix, I have been
contemplating the idea of designing a filesystem which is structurally
similar to Unix, but which has library support for manipulating IFF
files, and which actually uses IFF files for object files, executables
and any other filesystem-specific formats.

Part of the reasoning behind it is that the IFF format is far more
flexible than the AmigaDOS load file format, as the fields can easily
vary, and new ones can be added without affecting the performance of
the loader, except for a slight speed penalty to skip irrelevant
stuff.

The idea would be to creae a new FORM, perhaps FORM CODE.  Within this
single IFF FORM, you could have all sorts of data related to a
program.  You could have the executable (FORM EXE, likely) and the
object (FORM OBJ) along with the source (FORM SRC) and a man page
(FORM MAN) and documentation (FORM DOC) and a Makefile (FORM MAKE) and
a Workbench icon (FORM ICON) and other identifying things like the
originating author, machine, etc.  (as with LIST)  It could even be
extended so far as to have multiple versions of the source coordinated
within the file, in a manner similar to SCCS under Unix.  And all of
this could be put in a single file, grouped together conveniently.

Of course, there would be utilities for importing and exporting the
components to/from separate IFF component files, or (in some cases,
like a Makefile or documentation file) to/from a regular file.  There
could be a "man" command which first searches for the file described,
and if found, searches it for a FORM MAN to print.  Otherwise, it
could search /usr/man, or just give up.  An info command could simply
describe as much as it can about what a given IFF file contains.

You could even toss in things like an ILBM as a startup-screen which
the loader could display, or whatever...  the possibilities are vast.

Now, what do people thing of this idea?  Any ideas for improvements on
this (first-draft-type) model?  Also, how could it best be intergrated
with Unix (V7) system calls transparently, yet usably?

Also, where can I get the most recent IFF specifications?  I am basing
this on the EA IFF '85 specs given in Appendix B of the Addison-Wesley
RKM's.  If someone could Email me the most recent specs or direct me
to them, I would appreciate it.

I like the quote in the those specs: "Simple things should be simple,
and complex things should be possible."  Alan Kay, whoever that is.
Maybe I'll toss it in my .signature...

Deven
--
------- shadow@pawl.rpi.edu ------- Deven Thomas Corzine ---------------------
Cogito  shadow@acm.rpi.edu          2346 15th Street            Pi-Rho America
ergo    userfxb6@rpitsmts.bitnet    Troy, NY 12180-2306         (518) 272-5847
sum...     In the immortal words of Socrates:  "I drank what?"     ...I think.

shadow@pawl.rpi.edu (Deven T. Corzine) (04/23/89)

Oh, yes...  also a FORM SYM for a symbol table...  Hopefully I could
implement dynamic linking (external references resolved at run-time)
for Amigix...  [worth a try, anyhow.]  Also, I don't intend to
directly support overlays under Amigix, but I may change my mind on
that.

Deven
--
shadow@[128.113.10.2]   <shadow@pawl.rpi.edu> Deven T. Corzine (518) 272-5847
shadow@[128.113.10.201] <shadow@acm.rpi.edu>  2346 15th St.    Pi-Rho America
deven@rpitsmts.bitnet   <userfxb6@rpitsmts>   Troy, NY 12180-2306
"Simple things should be simple and complex things should be possible." - A.K.

shadow@pawl.rpi.edu (Deven T. Corzine) (08/13/89)

On 11 Aug 89 16:09:41 GMT,
rtczegledi@crocus.waterloo.edu (Richard Czegledi) said:

Richard> Something that I feel would be very useful (not to mention
Richard> nice) is to give the amiga the ability to put 'files' under
Richard> 'files'.  Waterloo Port does something like that.

4 months ago, I posted to comp.sys.amiga.tech about this very idea,
albeit somewhat more thought out.  I'm afraid I don't have a copy of
the article I posted; only replies to it.  (I have all articles I've
posted since 6/28/89.)  The article I posted was "Subject: An
IFF-based filesystem?", posted to comp.sys.amiga.tech, message ID
<SHADOW.89Apr23021633@pawl20.pawl.rpi.edu>.  If anyone has a copy of
the article, please email it to me?

Part of what I wrote:  [was included in a reply]

Deven> I've got an idea to bounce off the net here...  In considering
Deven> design and implementation of a file system for Amigix, I have
Deven> been contemplating the idea of designing a filesystem which is
Deven> structurally similar to Unix, but which has library support for
Deven> manipulating IFF files, and which actually uses IFF files for
Deven> object files, executables and any other filesystem-specific
Deven> formats.

I went on to describe how documentation, manual pages, readme files,
icons, startup screens, etc. could all be imbedded in the same file as
the executable.

Also:

In article <1149.AA1149@geo-works> bryan@geo-works.UUCP
(Bryan Ford) writes:

Bryan> Good idea.  Too bad the Amiga's executable file formats aren't
Bryan> forward compatible like IFF.  Hmmm...I wonder if it would be
Bryan> feasible to create a new executable file format that uses an
Bryan> IFF standard for executables.  Maybe 'X68K'?  Who knows.
Bryan> Probably wouldn't be practical, unless C-A is planning to put
Bryan> IFF stuff in ROM.

In <SHADOW.89Jun27170431@pawl.rpi.edu> on 6/27/89, I wrote:

Deven> This is exactly the idea I have been contemplating using for
Deven> the standard executable format for Amigix.  (Amigix is a
Deven> (major) project based in part on implementing Unix V7 on the
Deven> Amiga... Email for more info, or check comp.sys.amiga.tech if
Deven> the old threads haven't expired.)

Deven> The idea is you could put other things, like an icon, startup
Deven> screen, the actual source code, stack size, whatever, all with
Deven> the binary.  It could be a very flexible format.  I haven't had
Deven> time to work extensively on it, however.  :-(

Deven> As for putting it in ROM, the amigix.library (containing IFF
Deven> support code and loader, along with Unix syscalls and other
Deven> stuff) would be in RAM, but shared, so it could do well
Deven> enough...  thoughts/comments?

Bryan> Oh well, nice idea while it lasted...

Deven> Oh, it's still a nice idea...  I haven't dropped it yet.

It's a good idea, which I've thought a lot about.  I wish I had the
time and resources to *do* something about it...  Someday...

Deven
--
Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu
Snail:  2214 12th Street, Troy, NY 12180       Phone:  (518) 271-0750
Bitnet:  deven@rpitsmts, userfxb6@rpitsmts     UUCP:  uunet!rpi!deven
Simple things should be simple and complex things should be possible.

rtczegledi@crocus.waterloo.edu (Richard Czegledi) (08/14/89)

In article <SHADOW.89Aug12191403@pawl.rpi.edu> shadow@pawl.rpi.edu (Deven T. Corzine) writes:
>
>On 11 Aug 89 16:09:41 GMT,
>rtczegledi@crocus.waterloo.edu (Richard Czegledi) said:
>
>Richard> Something that I feel would be very useful (not to mention
>Richard> nice) is to give the amiga the ability to put 'files' under
>Richard> 'files'.  Waterloo Port does something like that.
>
>4 months ago, I posted to comp.sys.amiga.tech about this very idea,
>albeit somewhat more thought out.  I'm afraid I don't have a copy of
>the article I posted; only replies to it.  (I have all articles I've
>posted since 6/28/89.)  The article I posted was "Subject: An
>IFF-based filesystem?", posted to comp.sys.amiga.tech, message ID
><SHADOW.89Apr23021633@pawl20.pawl.rpi.edu>.  If anyone has a copy of
>the article, please email it to me?

I can think of a few problems with your idea.  Most are 'how 'ard is it to
implement and have work effectively' type.   The main drawback to your
iff based file system is that the executable will have to modify itself,
thereby messing up many resident/ares/rez type programs.

Also, every single last program for the amiga will essentialy have to be
re-written.  Now, if I left it at that, you would mail me saying, 
"it would all be handled by the os, and transparent to the software".
But what about software like the (which I can not live without) disksalv,
and things like BAD (I like it), which think they 'know' about the file
systems.  They will probably have to go.  And the size/complexity of the OS
might just be too much to handle.
 
With a simple files under files approach like I mentioned, the os would not
have to be significantly changed.  A file could be treated like a directory,
and you could directly load files/under the main file.

It's sort of like directories being files as well.  The advantages would
be numerous.  Hard drive maintenance, software instalation, and the general
look of the system would be pretty great.
 
When you mention, 'my system was a lot more thought out than yours', you
obviously did more thinking about your method (which is neat, cool, and 
rather boffo, but tough to implement).  The system I'm refering to
is already sort of implemented in other operating systems.  It would offer
about the same functionality as your system too (I think).  Also, I have
used this files under files approach, and find it to be quite flexable
powerful, and fun.

shadow@pawl.rpi.edu (Deven T. Corzine) (08/18/89)

Richard> Something that I feel would be very useful (not to mention
Richard> nice) is to give the amiga the ability to put 'files' under
Richard> 'files'.  Waterloo Port does something like that.

Deven> 4 months ago, I posted to comp.sys.amiga.tech about this very
Deven> idea, albeit somewhat more thought out.  I'm afraid I don't
Deven> have a copy of the article I posted; only replies to it.  (I
Deven> have all articles I've posted since 6/28/89.)  The article I
Deven> posted was "Subject: An IFF-based filesystem?", posted to
Deven> comp.sys.amiga.tech, message ID
Deven> <SHADOW.89Apr23021633@pawl20.pawl.rpi.edu>.  If anyone has a
Deven> copy of the article, please email it to me?

Richard> I can think of a few problems with your idea.  Most are 'how
Richard> 'ard is it to implement and have work effectively' type.  The
Richard> main drawback to your iff based file system is that the
Richard> executable will have to modify itself, thereby messing up
Richard> many resident/ares/rez type programs.

No, you misunderstood.  The *loader* will use a different format than
LoadSeg() does, but it would be able to be loaded and installed in a
resident list.  (maybe not with the Resident and Ares programs
specifically, but you would be able to do it.)

Richard> Also, every single last program for the amiga will essentialy
Richard> have to be re-written.  Now, if I left it at that, you would
Richard> mail me saying, "it would all be handled by the os, and
Richard> transparent to the software".

True.  :-)

Richard> But what about software like the (which I can not live
Richard> without) disksalv, and things like BAD (I like it), which
Richard> think they 'know' about the file systems.  They will probably
Richard> have to go.

They could still be used on AmigaDOS disks.  I would probably write a
utility similar to disksalv, (and also an undelete utility) and I have
no idea what BAD does.

Richard> And the size/complexity of the OS might just be too much to
Richard> handle.

An unknown, but it doesn't seem like it would need to be too bad.

Richard> With a simple files under files approach like I mentioned,
Richard> the os would not have to be significantly changed.  A file
Richard> could be treated like a directory, and you could directly
Richard> load files/under the main file.

I'm already looking at rewriting major pieces of the OS.

Richard> It's sort of like directories being files as well.  The
Richard> advantages would be numerous.  Hard drive maintenance,
Richard> software instalation, and the general look of the system
Richard> would be pretty great.

I've also considered the approach of all filesystem objects being both
files and directories.  How to integrate it, I'm not sure.  If you do
a cp, does it only copy the file portion, or the file and the entire
directory subtree?  Should rm act on the file or both?  etc.

Richard> When you mention, 'my system was a lot more thought out than
Richard> yours', you obviously did more thinking about your method
Richard> (which is neat, cool, and rather boffo, but tough to
Richard> implement).  The system I'm refering to is already sort of
Richard> implemented in other operating systems.  It would offer about
Richard> the same functionality as your system too (I think).  Also, I
Richard> have used this files under files approach, and find it to be
Richard> quite flexable powerful, and fun.

IFF is recursive.  Any IFF file can be a part of another.  IFF is
already somewhat established as a standard file format on the Amiga,
and integrating that at the system level could help promote that.  It
is an excellent format, well thought out and well executed.  And it
can be extended beyond graphics and sound...

Deven
--
Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu
Snail:  2214 12th Street, Troy, NY 12180       Phone:  (518) 271-0750
Bitnet:  deven@rpitsmts, userfxb6@rpitsmts     UUCP:  uunet!rpi!deven
Simple things should be simple and complex things should be possible.