Some notes on the version of MF for VMS located in this
directory: 
 - The version number on the change file is currently 2.1d
 - Note that a larger version of TANGLE is necessary to Tangle
   this code. I used max_names=5000 and max_toks=54000 to get it
   compiled.
 - MF is now called through the CLI. You should install the file
   MF.CLD in the system DCL tables. The following options are
   provided:
     /BASE=        Indicates the base file to be "preloaded" by
                   MF. The default varies depending on the
                   version of MF being used. The default CLD uses
                   /BASE=plain for MF and /NOBASE for INIMF.
     /BATCH        Run MF in batch mode sending no output to the
                   terminal and ending with a fatal error if input 
                   is necessary. The default is /NOBATCH.
     /CONTINUE     Indicates that MF should continue after
                   editing a file. The default is /NOCONTINUE
     /DIAGNOSTICS= Indicate that an LSE Diagnostics file be
                   written. A file name can be specified using
                   /DIAGNOSTICS=fn. The default is /NODIAGNOSTICS.
     /DISPLAY=     Indicates the name of the display for on-line
                   graphics. The default is /DISPLAY=MFTERM:
     /EDITOR=      Indicate the name of the editor to be used
                   at the 'E' response. The options are:
                   + Callable_EDT
                   + Callable_LSE
                   + Callable_TECO
                   + Callable_TPU
                   + The name of a command to be run in a
                     subprocess which will take three arguments:
                     'p1 is the name of the file to edit, 'p2 is
                     the line number with the error and 'p3 is
                     the column number of the error.
                   If the value given with /EDITOR ends in a
                   colon, TeX will assume that it's a logical
                   name and attempt to translate it. The default
                   is /EDITOR=TEX_EDIT:. This qualifier is
                   negatable.
     /GF_FILE      The GF file to which output should be written.
                   The default is to write to a file with file
                   name equivalent to the MF jobname and
                   extension given by the resolution *
                   magnification of the MF run. This qualifier is
                   not negatable.
     /GLIB_INDEX=  Indicates the name of the index file for
                   displays.
     /INIT         Run IniMF rather than MF. The default is
                   /NOINIT. The INIMF verb automatically selects
                   /NOBASE
     /JOBNAME_SYMBOL= Indicates the name of a symbol in which MF
                   should store the name of the GF file it
                   writes. The default is /JOBNAME_SYMBOL=MF_JOBNAME
                   This qualifier is negatable. If either it or 
                   /JOBSIZE_SYMBOL is negated, no symbols are written.
     /JOBSIZE_SYMBOL= Indicates the name of a symbol in which MF
                   should store the numeric portion of the GF
                   file which it writes. The default is
                   /JOBSIZE_SYMBOL=MF_JOBSIZE. If either it or
                   /JOBNAME_SYMBOL is negated, no symbols are written.
     /LOG_FILE=    Indicate the name of the LOG file to write.
                   The default is to use the name of the TeX job
                   for the LOG file name. This qualifier is
                   negatable.
     /MFBASES=     These qualifiers are not intended to be used
     /MFINPUTS=    by the end-user; they specify the names of the
                   logicals to be used for the locations of base 
                   input files respectively. They are provided to 
                   allow sites to customize these values without 
                   recompiling MF.
 - INIMF is part of the main MF module. Thus, there is only one
   change file and one executable. 
 - In previous versions of VMS MF with an editor interface, MF
   continued after leaving the editor. This feature is now
   controlled by the switch /CONTINUE.
 - On-line displays are now stored in separate sharable
   libraries. Each library intended to be used with MF must
   contain the following routines. (Note: C protocols are
   untested and may be wrong for libdrrow.)
      + LIBINITSC: Handles whatever initializations are necessary
        to use the display and prints a banner line on the
        display. This routine is always called, even if no
        graphics are used, so it may be wise to hold off
        initializations of the display itself until LIBSTARTS is
        called and only initialize static variables etc. This
        routine is passed the addresses of two integer variables
        whose values should be set to the horizontal and vertical
        sizes of the display.
           PROTOCOL:
            Pascal
              procedure LIBINITSC(var x_size, y_size : integer);
            C
              void LIBINITSC(x_size, y_size)
              int *x_size, *y_size;

      + LIBSTARTS: Called before the first write to the screen.
        should handle any screen initializations and leave the 
        graphics screen blank and ready-to-write. Upon
        completion, the terminal should be in text mode, if
        possible.
           PROTOCOL:
            Pascal
              procedure LIBSTARTS;
            C
              void LIBSTARTS()

      + LIBBLRECT: Erases a rectangle whose boundaries are given
        as arguments to the procedure in integer quantities. Upon
        completion, the terminal should be in text mode, if
        possible.
           PROTOCOL:
            Pascal
              procedure LIBBLRECT(left_col,right_col,top_row,bot_row:integer);
            C
              void LIBBLRECT(left_col, right_col, top_row, bot_row)
              int left_col, right_col, top_row, bot_row;

      + LIBDRWROW: Draws a row of alternatingly black and white
        pixels which alternate between black and white between
        columns a[i] on row r for n columns. With initial color b. 
        See the MF source or a sample library for details. Should
        leave the terminal in TEXT mode if at all possible.
           PROTOCOL:
            Pascal
              type trans_spec= array[0..65536] of integer;
              procedure LIBDRWROW(r: integer; b:0..1; a:trans_spec;
                 n: integer);
            C
              void LIBDRROW(r, b, a, n)
              int r, b, n;
              int a[65536];

      + LIBUPDTSC: Makes sure that everything on the display is
        up-to-date. This is particularly valuable for those
        displays which cannot easily erase portions of the
        screen. Should leave the terminal in TEXT mode if at all
        possible.
           PROTOCOL:
            Pascal
              procedure LIBUPDTSC;
            C
              void LIBUPDTSC()

      + LIBCLOSSC: Restores the terminal back to a normal state.
        It is not necessary to clear the graphics screen unless
        not doing so would interfere with use of the terminal's
        text mode.
           PROTOCOL:
            Pascal
              procedure LIBCLOSSC;
            C
              void LIBCLOSSC()

      + LIBLEVEL: A function which returns 0. This is meant for
        future expansion of the graphics library functionality.
           PROTOCOL:
            Pascal
              function LIBLEVEL: integer;
            C
              int LIBLEVEL()

IMPORTANT NOTE:
This version of MF has a proper command-line interface, using a command
definition file, MF.CLD.  This file exists in two versions, MF.CLD_ and
MF.CLD$, for use by sites that use logical names of the form TEX_xxx and
TEX$xxx respectively.  It also uses a machine-code module to speed up the
inner loop; this is in the file MF-EXTRA.MAR.

You will not be able to run this MF without these files, so if you haven't
already fetched them, do so NOW, before compiling the new version of MF.

For sites with DEC's Module Management System (MMS), a suitable DESCRIP.MMS 
is also available, from the same site.  This too is in two variants,
DESCRIP.MMS_MF and DESCRIP.MMS$MF.  Using this automates the (re)generation
of MF, its graphics libraries, and all MF's cousins (gftodvi, gftopk,
gftopxl, gftype, pktype, pktopx, and a version of MF prepared for
conducting the trap test).

The DESCRIP file will also generate the printed versions of each of these
programs.  Most important of all, it can run iniMF to generate preloaded
base files for plain and cmplain.  Even if you haven't got MMS, you are
strongly advised to collect a version of DESCRIP.MMS; it gives many
pointers to the sequence of operations required to compile and build the
programs, formats and  documentation.
