F2C

From Atari Wiki
Revision as of 11:57, 13 October 2011 by Admin (talk | contribs)
Jump to navigation Jump to search
<pre>
This archive contains an Atari ST/TT implementation of a Fortran-to-C 
compiler, developed by AT&T Bell Laboratories and Bellcore (read the file 
NOTICE for legal information). After unpacking, you should have the 
following files:

- notice        information about copyright, warranty etc.
- f2c.ttp       the compiler itself
- f2c.1         man page
- f2c.1t        man page for nroff/troff
- f2c.ps        Technical report about f2c
- f2c.h         include file
- f2c.olb       library for 68020/30 machines with 68881 (i.e. Atari TT)
- f2cslow.olb   library for any Atari ST/TT (68000, no FPU)

The last three files depend on the C compiler being used to compile the 
C programs produced by f2c. The versions included can be used with 
GNU-C 1.40 and probably also later releases. In the following it is 
assumed that you have a working installation of GNU-C on your system.

The combination of f2c and GNU-C can be used as a Fortran compiler that 
compares favourably with commercial compilers, the main disadvantage being 
that source-level debugging is not possible. Even those who regularly use 
another Fortran compiler might be interested in using f2c as a syntax 
checker, since it is very fast and produces better diagnostic output than 
any ST Fortran compiler I know of.
Another obvious application is the conversion of Fortran libraries to C to 
free future programmers from the burdens of Fortran (now you know my 
opinion about Fortran).


Installation:
-------------

- Copy f2c.ttp wherever you keep your executable programs.
- Copy f2c.h wherever GNU-C looks for include files (i.e. the path 
  specified by the environment variable GNUINC).
- Copy f2c.olb and/or f2cslow.olb wherever you keep the GNU-C 
  libraries (i.e. the path specified by the environment variable 
  GNULIB).


Using f2c:
----------

See f2c.1 and/or f2c.1t for details. f2c.ttp itself does not need any 
other file to operate, the include file and the libraries are needed 
only for subsequent compilation. Please note that f2c options are case 
sensitive; you must run it from a shell that does not convert commandline 
parameters to upper case like the GEM Desktop does. There are three 
differences between the Atari ST implementation and the original Unix 
version described in the documentation:

- The Atari ST implementation can only translate one file at a time.
- There is an additional option
        -l logfile
  which causes f2c to write all error messages to the file 'logfile' in 
  addition to showing them on the screen.
- The Fortran programs may have the extensions .f or .for or their 
  upper-case equivalents.


Translating the generated C programs:
-------------------------------------

The programs generated by f2c automatically #include the file f2c.h, which 
contains some compiler-specific definitions. For I/O and some mathematical 
functions, they contain calls to library functions that are contained in 
f2c.olb/f2cslow.olb.
To compile a program foo.c for a machine having a 68020/30 and 68881, use
   gcc
   -o foo.tos -m68020 -m68881 -D_M68881 foo.c -lf2c 
To compile for a generic ST/TT, i.e. using only 68000 opcodes and software 
floating point routines, use
   gcc
   -o foo.tos foo.c -lf2c -lpml


Obtaining the source code:
--------------------------

The source code for f2c and the libraries is available from an automatic 
file server at AT&T. For more information, send a message containing the 
single line
   send index
to "netlib@research.att.com".
The library source code is necessary to use f2c with C compilers other 
than GNU-C. Be warned however: porting the libraries to less 
Unix-compatible programming environments will not be easy. If anyone 
manages to implement a support library for Turbo-C/Pure-C, please let me 
know (I gave up after two days; after all, I have other things to do).


Bugs:
-----

I have been using f2c.ttp and f2c.olb for a month now without encountering 
any problems. Since I use a TT, I did only some quick checks on 
f2cslow.olb, but I don't expect any problems, since f2cslow.olb differs 
from f2c.olb only in the compiler options used.
Of course I cannot guarantee anything about this ST/TT implementation; 
nevertheless I would be interested in bug reports, because I have come to 
rely on f2c a lot for my Fortran programming. Bugs not specific to the 
ST/TT implementation should also be reported to the original authors; 
obtain the source code for more information.


Konrad Hinsen
Institut fuer Theoretische Physik A
RWTH Aachen
Templergraben 55
D-W-5100 Aachen
Germany


E-Mail addresses:

  konrad@thphys.physik.rwth-aachen.de
  cd010hi.dacth11.bitnet
  konrad_hinsen@ac2.maus.de