
                 >>> Tips for Compiling IFF Examples <<<
                         Carolyn Scheppner - CBM

      IFF examples, in most cases, are not self-contained programs.
   They need to be linked with various IFF modules which contain
   the IFF reader/writer/general routines that are used both directly
   and indirectly by the example.  Information on which IFF modules
   are required by the EA examples in the SOURCE directory can be found
   in the lnk.files directory.  The examples in the EXAMPLES directory
   contain linkage information in their opening comments, and .with
   files are supplied for those which must be linked with IFF modules.
   See the AmigaDos Developer's Manual "The Linker" chapter for more
   info on WITH files.  Examples and modules are listed below.

     The IFF header (.h) files are also required when compiling the
   examples.  The headers can be found in the INCLUDE/iff directory.
   I will assume that you have set up your C development system
   so that there is plenty of room on your source & headers work disk.
   Make an "iff" subdirectory in your "include" directory and copy
   the IFF headers there.  Note for AZTEC C people: get rid of the
   comments inside the parentheses in the function definitions in
   packer.h.

      Make a directory (or directories) on your work disk for the IFF
   object (.o) modules.  Since I work out of ram:, I keep the IFF
   modules in 3 directories (iffrobj, iffwobj, iffobj).  Then I
   can easily copy just the ones I need to ram:.  The object modules
   you need are listed below (IFF reader, writer, general modules).
   Note for AZTEC C people: These are Amiga C object modules.  Copy
   the source (.c) for the modules to your C work disk and recompile
   them with AZTEC (without linking).  The compiler.h header contains
   a switch (FDwAT) for compatibility with various compilers.  You
   may have to change the value of this switch.  In addition, you may
   find it necessary to link with your 32 bit library.  I use Lattice
   but I would appreciate a list of any changes needed in the IFF
   source for compilation under Manx.  I could include the list on
   the next release of this disk, or possibly incorporate the changes
   into the source.

      To compile an example, copy the example source (.c) file to
   your C work disk (or ram: if that's where you work).  Compile
   the file WITHOUT linking it.  You should now have a .o file for
   the example.

   (Note: Following linkage instructions are for Amiga C but should
           be helpful with other development systems as well)

      Use your editor to create a WITH file for the example.  You
   can start with the appropriate file from modified.lnk.files.
   Add the proper paths to the filenames so that ALINK can find
   each of the files.

      For example, if Example.o was in df1:obj, the IFF .o modules
   were all in df1:iffobj, your startup and lib's were in df0:lib,
   and you wanted your executable placed in df1:executables, this
   would be your Example.with file:

   FROM     df0:lib/LStartup.obj, df1:obj/Example.o, df1:iffobj/iffr.o,*
            df1:iffobj/ilbmr.o, df1:iffobj/unpacker.o
   TO       df1:executables/Example
   LIBRARY  df0:lib/LC.lib, df0:lib/Amiga.lib

      When I'm working with IFF, I keep my files and all of the IFF .o
   modules I need in ram:, and I'm cd'd there.  I assign the label LIB:
   to the directory containing my startup code and linker libraries.
   This is my Display.with:

   FROM     LIB:AStartup.obj,Display.o,myreadpict.o,iffmsgs.o*
            iffr.o,ilbmr.o,unpacker.o
   TO       Display
   LIBRARY  LIB:Amiga.lib, LIB:LC.lib


      Linking is easy once you've set up the .with file:

             Alink with Display.with


 -------------------------------------------------------------------------
                      >>> List of IFF modules <<<

   IFF reader modules:

   iffr.o      Lowest level reader rtns
   ilbmr.o     Higher level ILBM reader rtns
   readpict.o  Highest level ILBM reader
   unpacker.o  Unpacking rtn

   IFF writer modules:

   iffw.o      Lowest level writer rtns
   ilbmw.o     Higher level ILBM writer rtns
   putpict.o   Highest level ILBM writer
   packer.o    Packing rtn

   General IFF modules:

   gio.o       Fast IO rtns
   remalloc.o  Memory allocation rtns

--------------------------------------------------------------------------

