[comp.os.vms] Latest versions of TeX and MF available for VMS.

dhosek@sif.claremont.edu (Don Hosek) (08/31/90)

The latest versions of TeX and MF for VMS are now available from
ymir.claremont.edu. 

A few bug fixes and minor enhancements have been made to the TeX
change file bringing it to 3.0/3.2 (the latter number is the
change file version). The upgrade of this change file is not
necessary if you have 3.0/3.1a, but is worthwhile. Files are in
[anonymous.tex.sources.tex3_0].

MF 2.0/2.1a is now officially available for VMS. There is an
increase in the speed of the system through some assembly
routines contributed by John Lavagnino and all on-line displays
are accessed through VMS sharable libraries. At present only one
library, the GraphOn-140 1.0a library is available, although
others are under development (contact Don Hosek,
dhosek@ymir.claremont.edu if you intend to create a library to
find out if anyone else is working on one and for advice in
creating the library). Files are in [anonymous.tex.sources.mf2_0].

The files 00readme.txt in each directory indicate what the files
are. Below are vms_tex_notes.txt and vms_mf_notes.txt from those
directories. Help files are under development and will be
announced shortly.

Those without FTP access can obtain the files from
mailserv@ymir.claremont.edu. Directory specifications are
identical, but without the :anonymous" at the beginning. The
command to retrieve a file is "send", e.g.,

send [sources.tex3_0]00readme.txt

Binary files are not currently available via mailserv. Nothing
can be done about this deficiency at this time. These versions of
TeX and MF will be available on tape from DECUS and Stanford by
mid-September (I think).

------

Some notes on the version of TeX for VMS located in this
directory: 
 - The version number on the change file is currently 3.2
 - Note that a larger version of TANGLE is necessary to Tangle
   this code. I used max_names=5000 and max_toks=52000 to get it
   compiled.
 - The Pascal code generated by TANGLEing TEX.WEB will not
   compile properly with Pascal versions prior to 4.0.
 - TeX is now called through the CLI. You should install the file
   TEX.CLD in the system DCL tables. The following options are
   provided:
     /BATCH        Run TeX in batch mode sending no output to the
                   terminal and ending with a fatal error if input 
                   is necessary. The default is /NOBATCH.
     /CONTINUE     Indicate that TeX is to continue execution after
                   the editor is invoked with an 'E' response at an
                   error prompt. 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.
     /DVI_FILE=    Indicate the name of the DVI file to write.
                   The default is to use the name of the TeX job
                   for the DVI file name. This qualifier is
                   negatable.
     /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.
     /FORMAT=      Indicate the name of a format to pre-load when
                   running. The default varies depending on the
                   specific verb used. This qualifier is
                   negatable.
     /INIT         Run IniTeX rather than TeX. The default is
                   /NOINIT. INITEX should be set equivalent to
                   TEX/INIT/NOFORMAT.
     /JOBNAME_SYMBOL= Indicate the name of a DCL symbol to which
                   the TeX jobname is to be written. The default
                   is /JOBNAME_SYMBOL=TEX_JOBNAME. This qualifier 
                   is negatable. Negation causes the symbol to not
                   be 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.
     /TEXFONTS=    These qualifiers are not intended to be used
     /TEXFORMATS=  by the end-user; they specify the names of the
     /TEXINPUTS=   logicals to be used for the locations of TFMs,
                   format and pool files, and input files
                   respectively. They are provided to allow sites
                   to customize these values without recompiling
                   TeX.
 - INITEX is part of the main TeX module. Thus, there is only one
   change file and one executable. The price that we pay is
   trivial: three if statements operating on a boolean variable
   and an executable 25K larger. The three if statements are all
   out of the inner loop so other than a slightly increased 
   startup time, TeX will not be slower.
 - This is 64bit TeX. If memory is really a problem, you can
   reduce the main memory array and recompile. Personally, I
   think that it's inconvenient to try and run TeX at two memory
   sizes so I don't recommend it. 
 - In previous versions of VMS TeX with an editor interface, TeX
   continued after leaving the editor. This behavior is incorrect
   and has been changed.

-----

Some notes on the version of MF for VMS located in this
directory: 
 - The version number on the change file is currently 2.1a
 - 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()



---
Don Hosek                       TeX, LaTeX, and Metafont support, consulting 
dhosek@ymir.claremont.edu       installation and production work. 
dhosek@ymir.bitnet              Free Estimates.
uunet!jarthur!ymir              Phone: 714-625-0147
                                finger dhosek@ymir.claremont.edu for more info