%                                          MACROS FOR TEXT1
%
%         This work is protected as an unpublished work under
%         U.S. copyright laws.
%         Copyright 1987, by Washington State University.
%         All rights reserved.
%
%               Last updated on 7/24/95 (drg)
%
\everyjob{\immediate\write16{TEXT1 Version 4.09}
          \titlepage\spn{1}
}
%
%	The following variables are used for allowing conditional compilation 
%	of special code depending on which version of TeX you are using.
%	See these special notes in the next paragarph
\catcode`* = 11
\catcode`@ = 11
%
\newif\if*MAC  \*MACfalse     % This is not a Macintosh
\newif\if*CMS  \*CMSfalse     % This is not on CMS
\newif\if*PC   \*PCfalse      % This is not a PC
\newif\if*CG   \*CGfalse      % This is not a Compugraphics 8600 typesetter  
%
%   Note that non CMS versions must be modified. Here are the changes
%   necessary for the IBM PC/DOS version of TEXT1, Macintosh version,
%   and other non-CMS versions.
%
%      1. The filetype (extension) can only be 3 characters at the most
%         for the PC/DOS version.
%         This requires the following changes:
%            toc1     => tc1
%            toc2     => tc2
%            toc3     => tc3
%            endnotes => end
%            textext  => txt
%            texmath  => mth
%            texmodel => mdl
%
%      2. The Compugraphics dependent stuff in \selectspecificfont must
%         be omitted for all but CMS versions.
%
%      3. The routines \nonIBM and \IBM should be set to null for all but CMS
%         versions
%
%      4. The Macintosh/Textures version uses a special \include
%


%   Some temporary variables to be used throughout
%
\newbox\A
\newtoks\B
\newskip\C
\newdimen\D
\newdimen\*D
\newcount\E
\newcount\F
\newcount\G
\newcount\N
\newcount\Q
\newcount\R
%             \T \U \V \W are used throughout TEXT1 as temp definitions
%             \I \J \K \M \X \Y \Z are temporary too, be careful if you use these
%
% ragged rightindent on bq troublesome.
% titleleadskip works only with titlepage command in text.
% for doublecolumns, change hsize and line--refer to ccndbl
% for multiple right and centerline--refer to aztex
%
%           IBM/NONIBM character definitions, added by Dean 7/11/86
%
% Use this macro when not printing with IBM standard distribution fonts


\newif\if*IBM \*IBMfalse

\if*CMS
\def\nonIBM{\if*IBM \*IBMfalse%
    \def\aa{\accent23a}%
    \def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex%
      \rlap{\raise.67\dimen@\hbox{\char'27}}A}%
    \def\c##1{\setbox\z@\hbox{##1}\ifdim\ht\z@=1ex\accent24 ##1%
      \else{\ooalign{\hidewidth\char24\hidewidth\crcr\unhbox\z@}}\fi}%
    \def\`##1{{\accent18 ##1}}%
    \def\'##1{{\accent19 ##1}}%
    \def\^##1{{\accent94 ##1}}\let\^^D=\|%
    \def\~##1{{\accent"7E ##1}}%
    \def\"##1{{\accent"7F ##1}}%
    \chardef\i="10 % dummy dotless lowercase i
    \def\dag{\mathhexbox279}%
    \def\ddag{\mathhexbox27A}%
    \def\S{\mathhexbox278}%
    \def\P{\mathhexbox27B}%
    \let\}=\rbrace%
    \let\{=\lbrace%
    \def\cents{\hbox{\rm\rlap/c}}\fi}% end non-IBM
%
% Use this macro when printing with the IBM standard distribution fonts
\def\IBM{\*IBMtrue
    \chardef\aa="8A % a overcircle
    \chardef\AA="8B % A overcircle
    \chardef\c="18 % cedilla
    \chardef\`="12 % grave
    \chardef\'="13 % acute
    \chardef\^="5E % circumflex
    \chardef\~="7E % tilde
    \chardef\"="7F % umlaut
    \chardef\i="69 % dummy dotless lowercase i
    \chardef\S="DC % section number sign
    \chardef\P="DD % paragraph sign or pilcrow
    \chardef\dag="DE % dagger or obelisk
    \chardef\ddag="DF % double dagger or diesis
    \chardef\{="AE % left brace
    \chardef\}="AF % right brace
    \chardef\cents="CD}% end IBM
\else
\def\nonIBM{}
\def\IBM{}
\fi
%
% Redefined from PLAIN.TEX to omit the at sign "@"
%    @ symbol will be read as begin and end math mode otherwise
\message{redefining some plain commands, }
\newdimen\zZ \zZ=0pt % can be used both for 0pt and 0
\mathchardef\zmz=1000
\mathchardef\zMz=10000
\mathchardef\zMMz=20000
\def~{\penalty\zMz\ } % tie
\def\break{\penalty-\zMz}
\def\nobreak{\penalty \zMz}
\def\allowbreak{\penalty \zZ}
\def\supereject{\par\penalty-\zMMz}
\def\nopagenumbers{\rhf{\bothpages{}}\rff{\bothpages{}}}
%
%  Redefined from PLAIN.TEX to \unskip last skip if in h mode
%
\message{redefining some plain commands, }
\def\removelastskip{\ifvmode\ifdim\lastskip=\z@\else\vskip-\lastskip\fi
                            \else\unskip\unskip\unskip\unskip\fi}
\let\rlsk=\removelastskip
%
%  Redefined from PLAIN.TEX to 12 point topskip
\def\raggedbottom{\topskip 12\p@ plus60\p@ \r@ggedbottomtrue}%
\def\normalbottom{\topskip 12\p@ \r@ggedbottomfalse}%
%
%  Redefined from PLAIN.TEX to omit extraneous skips and such surprises.
\def\endinsert{\egroup % finish the \vbox
  \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@
    \advance\dimen@12\p@ \advance\dimen@\pagetotal
    \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi
  \if@mid \box\z@\goodbreak
  \else\insert\topins{\penalty100 % floating insertion
    \splittopskip\z@skip
    \splitmaxdepth\maxdimen \floatingpenalty\z@
    \ifp@ge \dimen@\dp\z@
    \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
    \else \box\z@\nobreak\fi}\fi\endgroup}
%
%         Redefined from PLAIN.TEX to take mode into account
\mathchardef\*dda="227A
\mathchardef\*dag="2279
\mathchardef\*neg="023A
\def\ddagger{\relax\ifmmode\*dda\else$\*dda$\fi}%
\def\dagger{\relax\ifmmode\*dag\else$\*dag$\fi}%
\def\neg{\relax\ifmmode\*neg\else$\*neg$\fi}
%
%         Redefined from PLAIN.TEX to take present font size into account
%
\def\strut{\relax
    \setbox\strutbox=\hbox{\vrule height 1.8ex depth .6ex width 0pt}%
    \ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}%
%
%
%   Starting TEXT1 Definitions
%
%  Use this one for Textures
%
\if*MAC
	\def\include#1{\special {picture #1}}%
  \else
	\def\include#1{\special {IPS #1}}%     added by gap 1/27/87
\fi
\let\incl=\include
%
\def\text#1{{\it\TeX T1}}%             added by drg 9/26/86
\def\bf{\bd}%                          added by jkw 6/30/86
\def\cents{\hbox{\rm\rlap/c}}%         added by jkw 6/30/86
\def\fraction#1/#2 {%                  added by jkw 7/8/86
  \leavevmode\kern.1em \raise.6ex\hbox{\the\scriptfont0 #1}\kern-.1em
  /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
\let\frac=\fraction
\message{bibliography, }
%                      Bibliography
%
\newtoks\bi*f     \bi*f={\goodbreak\vs{1\bl}\hp\nin}      % init bibentry
\newtoks\bi*t     \bi*t={\dumpinsertseject\cl{\bd\bibtitle}
                            \vs{1\bl}}% init bibliography title format
\newtoks\bi*r     \bi*r={width 3em height .6ex depth -.5ex}
\newcount\bi*n    \bi*n=0            % counter for numbered bibliography
\newif\if*TC*bib  \*TC*bibtrue
%
\long\def\bibliographyformat#1{{% definition of bibliographic format
      \def\incontents##1{\global\*TC*bibtrue
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U              % Already true
                 \else \ifx \T\V \global\*TC*bibfalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in bibliographyformat is not "yes" or "no".
                                      "yes" will be assumed}
                 \fi\fi}%
    \long\def\everybibentry##1{\global\bi*f={##1}}%
%      Remove this some day
    \let\bibentryformat=\everybibentry%
    \long\def\titleformat##1{\global\bi*t={##1}}%  replacement format for bibliography title
    \def\sameauthorrulesize##1{\global\bi*r={##1}}%
    #1}}%
\let\bif=\bibliographyformat
%
\def\bibtitle{}
\def\bibliography#1{% calls bibtitle format and passes title
    \global\bi*n=0                   % set bib counter to zero each call
    \global\def\bibtitle{#1}         % collect title tokens
    \par
    \bgroup
       \let\toclinebreak=\space
       \let\toclbr=\space
       \the\bi*t
    \egroup
    \D=\lastskip
    \removelastskip
    \if*TC*bib \putincontents1{\the\*btf}\fi % call bib title format
    \ignorespaces
    \vs{\D}
}% end bibliography markup
\let\bib=\bibliography
%
\def\bibnumber{\the\bi*n}%
\def\bibentry{\par\global\advance\bi*n by1\the\bi*f}%
\let\bie=\bibentry                   % abbreviation for \bibentry
%
\def\sameauthor{\vrule\the\bi*r}%
\let\sau=\sameauthor
%
\message{misc, }
\def\underscore#1{$\underline{\smash{\hbox{#1}}}$}%
\let\us=\underscore
\def\leader{\leaders\hbox to 8pt{\hss.\hss}\hfill}%
%
\def\hyphenoff{\pretolerance=10000\hbadness=10000}%
\let\hof=\hyphenoff
\def\hyphenon{\pretolerance=100\hbadness=1000}%
\let\hon=\hyphenon
%
\def\today{\ifcase\month\or
   January\or February\or March\or April\or May\or June\or
   July\or August\or September\or October\or November\or December\fi
   \space\number\day,\space\number\year}%
%
%
\def\tilde{\relax\ifmmode\mathaccent"707E % relax added to trigger math
             \else{\sy\char'030}\fi}%       mode in tabs 1/27/87
%
\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}%
%
\def\}{\relax\ifmmode \rbrace % relax added to trigger math mode in tabs
          \else $\rbrace$\fi}%
%
\def\{{\relax\ifmmode \lbrace % relax added to trigger math mode in tabs
          \else $\lbrace$\fi}%
%
\def\\{\relax\ifmmode \delimiter"26E30F % relax added to trigger math
          \else $\delimiter"26E30F$\fi}%  mode in tabs
%
\let\leftsquarebracket=[
\let\rightsquarebracket=]
\let\lsb=[
\let\rsb=]
\def\~#1{{\relax\ifmmode\mathaccent"707E % relax added to trigger math
             \else \accent"7E #1\fi}}%     mode in tabs
%
% baselineskip = interlineskip
%
\newskip\*isk
\newskip\baseline
\let\bl=\baseline
\def\interlineskip#1{\baselineskip=#1%
                     \baseline=#1%
                     \*isk=#1\relax}%
\let\isk=\interlineskip
%
\message{selectfontset, }
\newfam\bifam   \newfam\ccfam
%
%   The \selectfontset macros are by JKW
%
\newtoks\naMEtok
\newtoks\maTHtok
\newskip\bAseSkip
\newtoks\*sfslbl
\if*PC
	\*sfslbl={.txt}
  \else
	\*sfslbl={.textext}
\fi

\def\selectfontset#1#2#3{\naMEtok={#2}
   \edef\T{default}%
   \edef\U{#3}%
   \ifx\U\T \bAseSkip=0pt
      \else \bAseSkip=#3\fi
   \input #1\the\*sfslbl }%
\let\sfs=\selectfontset
\sfs{cm12}{twelvept}{default}
\sfs{cm10}{tenpt}{default}
\twelvept
%
\newtoks\*smslbl
\if*PC
	\*smslbl={.mth}
  \else
	\*smslbl={.texmath}
\fi

\def\selectmathset#1#2{\maTHtok={#2}\input #1\the\*smslbl}%
\let\sms=\selectmathset
\selectmathset{cm97m}{mathdefault} %
\mathdefault
%
%  SELECT SPECIFIC FONT, jkw 8/26/86
\newread\ckfnt
\newif\ifnotcfend
\newtoks\nUMtok
\newtoks\nmtok

\if*CMS
\def\selectspecificfont#1#2#3{\naMEtok={#1}\nUMtok={#3}
    \nmtok={#1\romannumeral #2}
    \def\T{\uppercase{#1 }}%
    \expandafter\xdef\csname I\the\nmtok\endcsname{\isk{\the\nUMtok}}
    \openin\ckfnt=cgfonts.lclist
       \loop\read\ckfnt to \W
       \edef\U{\uppercase{\W}}%
           \ifx\U\T
               \expandafter\font\csname F\the\nmtok%
                  \endcsname=#1 at #2 pt \notcfendfalse
           \else\ifeof\ckfnt
               \expandafter\font\csname F\the\nmtok%
                 \endcsname=#1#2  \notcfendfalse
            \else\notcfendtrue\fi\fi
     \ifnotcfend           \repeat
    \closein\ckfnt
    \expandafter\xdef\csname\the\naMEtok\endcsname ##1;{%
                \noexpand\csname F\the\naMEtok
                \noexpand\romannumeral\noexpand ##1\noexpand\endcsname
                \noexpand\csname I\the\naMEtok
                \noexpand\romannumeral\noexpand ##1\noexpand\endcsname}}%
\else
\def\selectspecificfont#1#2#3{\naMEtok={#1}\nUMtok={#3}
    \nmtok={#1\romannumeral #2}
    \def\T{\uppercase{#1 }}%
    \expandafter\xdef\csname I\the\nmtok\endcsname{\isk{\the\nUMtok}}
    \expandafter\xdef\csname\the\naMEtok\endcsname ##1;{%
                \noexpand\csname F\the\naMEtok
                \noexpand\romannumeral\noexpand ##1\noexpand\endcsname
                \noexpand\csname I\the\naMEtok
                \noexpand\romannumeral\noexpand ##1\noexpand\endcsname}}%
\fi

\let\ssf=\selectspecificfont
%
\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177
\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60
%
\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (
%
%
\message{monospace, }
\newif\if*msp   \*mspfalse
\if*CMS
\def\monospace{%
  \global\*msptrue                   % changed to global 6/27/86 bth
  \sfs{monofont}{defaultmono}{default}
  \defaultmono
  \gdef\underscore##1{{\italicfont ##1}}%
  \global\let\us=\underscore
  \special{fonts=10cpi}
  \raggedbottom
  \global\paragraphskip{0pt}
  \global\paragraphindent{36pt}
  \gdef\tilde{\ifmmode\mathaccent"707E%
               \else \char'176{}\fi}%
  \gdef\_{\char'137{}}%
  \gdef\}{\ifmmode \rbrace
          \else \char'175{}\fi}%
  \gdef\{{\ifmmode \lbrace
          \else\char'173{}\fi}%
  \gdef\\{\ifmmode \delimiter"26E30F%
          \else\char'134{}\fi}%
  \gdef\neg{\char'136{}}%
  \gdef\ellipsis##1{{\def\U{\message{<TEXT1> Error! Only 3 or 4 are valid for ellipsis. Command ignored.}}
    \ifcase ##1\U\or\U\or\U%
      \or .~.~.
      \or .~.~.~.
      \else\U\fi}}%
 
  \tableofcontentsformat{% added 1/26/87 Guenther
     \toctitle{\centerline{\bd Table of Contents}
               \vs{1\bl}}
     \figuretoctitle{\newpage
                     \centerline{\bd List of Figures}
                     \line{Figure \rt{Page}}}
     \tabletoctitle{\newpage
                    \centerline{\bd List of Tables}
                    \line{Table \rt{Page}}}
     }% end table of contents format
 
  \global\let\el=\ellipsis
  \asisformat{\skipbefore{1\bl}\everyasis{\leftindent{0pt}}\skipafter{1\bl}}
  \blockquoteformat{\skipbefore{1\bl}\everyblockquote{\rm\leftindent{36pt}\rightindent{36pt}}\skipafter{1\bl}}
  \figureformat{\titleformat{\bqb\bd\hp Figure \figurenumber. \figuretitle \bqe}}
  \tableformat{\titleformat{\vs{\bl}\cl{\bd Table \tablenumber}
                  \cl{\rm\tabletitle}\vs{\bl}}}
  \endnoteformat{\skipbefore{0\bl}\notereferencefont{\rm}\everyendnote{\rm\lin{0pt}}}
  \footnoteformat{\textreferenceposition{down}\textreferencefont{\rm}\textreferencestyle{(1)}
                  \notereferencefont{\rm}\everyfootnote{\rm\pin{.5in}\psk{.5in}\lin{0pt}\rin{0pt}}}
 
   \partformat{\titleformat{\dumpinsertseject\titlepage
                   \hrule height0pt depth0pt \vfil
                   \cl{\bd Part \partnumber}\cl{\bd\parttitle}\np
                   \scn{0}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
                   \sfn{0}\stn{0}\sfnn{0}\senn{0}}}% end part format
   \indexformat1{\everyindex{\rm}}
   \indexformat2{\everyindex{\rm}}
   \indexformat3{\everyindex{\rm}}
   \chapterformat{\titleformat{\dumpinsertseject\cl{\bd Chapter \chapternumber}\cl{\bd\chaptertitle}\vs{1\bl}
      \ssan{0}\ssbn{0}\sscn{0}\ssdn{0}}}% end chapter format
   \prefaceformat{\titleformat{\dumpinsertseject\cl{\bd\prefacetitle}
      \vs{1\bl}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}}}% end preface format
   \appendixformat{\titleformat{\dumpinsertseject
      \cl{\bd Appendix \appendixnumber}\cl{\bd\appendixtitle}\vs{1\bl}
      \scn{0}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}\sfn{0}\stn{0}}}% end appendix format
   \subheadaformat{\titleformat{\removelastskip\goodbreak\vs{2\bl}
      \bd\nin\subheadatitle\par\nobreak\vs{1\bl}\nobreak
      \ssbn{0}\sscn{0}\ssdn{0}}}% end subheadaformat markup
   \subheadbformat{\titleformat{\removelastskip\goodbreak\vs{2\bl}
      \it\nin\subheadbtitle\par\nobreak\vs{1\bl}\nobreak
      \sscn{0}\ssdn{0}}}% end subheadbformat markup
   \subheadcformat{\titleformat{\removelastskip\goodbreak\vs{2\bl}
      \nin\subheadctitle\par\nobreak\vs{1\bl}\nobreak\ssdn{0}}}% end subheadc format markup
   \subheaddformat{\titleformat{\goodbreak{\it \subheaddtitle.}}}% end subheadd markup
   \runningheadformat{\bothpages{\line{\rm\lft{}\ctr{}\rt{\pagenumber}}
      \vs{1\bl}}}% end runningheadformat markup
}% END monospace markup definition
\else
	\def\monospace{\message{<TEXT1> monospace fonts are not available. Use
		typewritter fonts instead.}}
\fi
\let\msp=\monospace
%
\def\sl{\message{<TEXT1> Warning! The slanted font is not in font sets. Only tensl is used.}\tensl}%
\message{more misc, }
%
%    Ellipsis command 10/22/85
%
\def\ellipsis#1{{\def\U{\message{<TEXT1> Error! Only 3 or 4 are valid for ellipsis. Command ignored.}}
   \ifcase #1\U\or\U\or\U%
      \or \ifmmode\mathinner{\ldotp\ldotp\ldotp}
            \else$\mathinner{\ldotp\ldotp\ldotp}$\fi
      \or \ifmmode\mathinner{\ldotp\ldotp\ldotp\ldotp}
            \else\removelastskip$\ldotp\ldotp\ldotp\ldotp$\fi
      \else\U\fi}}%
\let\el=\ellipsis
%
%    dumpinsertseject is plain.tex \dosupereject with and \else added
%
\def\dumpinsertseject{\ifnum\insertpenalties>\z@ % something is being held over
                           \line{}\kern-\topskip\nobreak\vfill\supereject
                         \else \newpage
                         \fi}% END dumpinsertseject markup definition
\let\die=\dumpinsertseject
\message{page format, }
%
\newif\if*tempif
%
%    Pageformat command
%
\newdimen\pg*l       \pg*l=11in      % page length
\newdimen\pg*t       \pg*t=0in       % top margin set for 1in origin
\newdimen\pg*b       \pg*b=2in       % bottom margin set for 1in origin
\newdimen\pg*w       \pg*w=8.5in     % page width
\newdimen\pg*r       \pg*r=2in       % right margin set for 1in,
\newdimen\*lmar      \*lmar=0.2in    % left margin set for 1in
%                                      Note: TEX origin at 1in,1in
\newif\if*cropmarks  \*cropmarksfalse
\newdimen\pg*a       \pg*a=0in
\hsize=6.3in         \hoffset=0.2in
\vsize=9in           \voffset=0in
%
\def\pageformat#1{{\par
    \def\pagelength##1{\global\pg*l=##1
                       \cpt*vs}%
    \def\topmargin##1{\global\pg*t=##1
                      \global\advance\pg*t by- 1in   % set margin 1in,1in
                      \cpt*vs}%
    \def\bottommargin##1{\global\pg*b=##1
                      \global\advance\pg*b by 1in    % set margin 1in,1in
                      \cpt*vs}%
    \def\pagewidth##1{\global\pg*w=##1\cpt*hs}%
    \def\rightmargin##1{\global\pg*r=##1
                        \global\advance\pg*r by 1in  % set margin 1in,1in
                        \cpt*hs}%
    \def\leftmargin##1{\global\*lmar=##1
                       \global\advance\*lmar by -1in % set margin 1in,1in
                       \cpt*hs}%
    \def\bindingadjust##1{\global\pg*a=##1\cpt*hs}%
    \def\galleywidth##1{\global\pg*w=##1 
                       \global\advance\pg*w by\*lmar
         \global\advance\pg*w by\pg*r \cpt*hs}%
    \def\cropmarks##1{\global\*cropmarksfalse
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U  \global\*cropmarkstrue
                 \else \ifx \T\V \global\*cropmarksfalse
                       \else \message{<TEXT1> Warning, argument to cropmarks in     
                         pageformat is not "yes" or "no". "no" will be assumed}
                         \*cropmarksfalse
                 \fi\fi}%
	#1}}% End pageformat markup definition
\let\pf=\pageformat
%
% set page text size, compute hsize
%
\def\cpt*hs{% COMPUTE HORIZONTAL SIZE
    \global\hoffset=\*lmar
    \global\hsize=\pg*w              % added global 11/11/86 bth
    \global\advance\hsize by-\pg*r   % ""
    \global\advance\hsize by-\*lmar  % ""
    \global\*txtw=\hsize}%             added for multi column routines
%
% set page text size, vsize
%
\def\cpt*vs{% COMPUTE VERTICAL SIZE
    \global\voffset=\pg*t
    \global\vsize=\pg*l
    \global\advance\vsize by-\pg*t
    \global\advance\vsize by-\pg*b
    \if*title \global\advance \voffset by \tp*sk % lines from titlepage
              \global\advance \vsize by -\tp*sk % from titlepage
    \fi
    \global\*txth=\vsize}%             added for multi column routines
%
%   left center right
%
\def\lft#1{#1\hfill}
\def\ctr#1{\hfill #1\hfill}
\def\rt#1{\hfill #1}
%
\message{running heads, }
%
%  Page numbers
%
\def\setpagenumber#1{\global\pageno=#1}%
\let\spn=\setpagenumber
\def\pagenumber{\ifnum \pageno<0 \romannumeral-\pageno
                       \else \number\pageno\fi}%
\let\pn=\pagenumber
%
\def\rule{\vskip 1\baselineskip\hrule}%
%
%  Running heads
%
\newif\if*title
%
\newtoks\rh*r     \rh*r={\line{\twelvept\rt{\pagenumber}}\vs{\bl}}
\newtoks\rh*l     \rh*l={\line{\twelvept\rt{\pagenumber}}\vs{\bl}}
\newtoks\rf*r     \rf*r={}
\newtoks\rf*l     \rf*l={}
%
\def\runningheadformat#1{{%
    \def\*ttitle##1{\setbox\A=\vbox{##1}%
                    \D=\ht\A
                    \advance\D by -1in
                    \ifdim \D>\pg*t
                           \global\pg*t=\D
                           \global\advance\pg*t by 12pt
                           \advance\D by 1in
                           \message{<TEXT1> Warning, the top margin you
                                  have specified is less than the
                                  running top title. The top margin will
                                  be changed to \the\D}
                           \cpt*vs
                    \fi
                    \if*tempif \global\rh*l={\hrule width\hsize
                                             height0pt depth0pt ##1}
                    \else \global\rh*r={\hrule width\hsize
                                        height0pt depth0pt ##1}\fi
                   }% end *ttitle definition
    \def\evenpages##1{\*tempiftrue\*ttitle{##1}}%
    \def\oddpages##1{\*tempiffalse\*ttitle{##1}}%
    \def\bothpages##1{\*tempiftrue\*ttitle{##1}
                      \*tempiffalse\*ttitle{##1}}%
    \relax
 #1
 }}% END runningheadformat markup definition
\let \rhf = \runningheadformat
%
\def\runningfootformat#1{{%
    \def\*btitle##1{\setbox\A=\vbox{##1}%
                    \D=\ht\A
                    \advance\D by 1in
                    \ifdim \D>\pg*b
                           \global\pg*b=\D
                           \global\advance\pg*b by 12pt
                           \advance\D by -1in
                           \message{<TEXT1> Warning, the bottom  margin
                           you have specified is less than height of the
                           running bottom title.
                           The bottom margin will be
                           changed to \the\D}
                           \cpt*vs
                    \fi
                    \if*tempif \global\rf*l={##1}
                         \else \global\rf*r={##1}\fi
                }% end of bottomline
    \def\evenpages##1{\*tempiftrue\*btitle{##1}}%
    \def\oddpages##1{\*tempiffalse\*btitle{##1}}%
    \def\bothpages##1{\*tempiftrue\*btitle{##1}
                      \*tempiffalse\*btitle{##1}}%
    \relax
 #1}}% END runningfootformat markup definition
\let \rff = \runningfootformat
%
\newdimen\tp*sk       \tp*sk=1in
\newtoks\tp*fl      \tp*fl={}
\def\titlepageformat#1{{%
    \def\titleleadskip##1{\global\tp*sk=##1}%
    \def\titlefootline##1{\global\tp*fl={##1}}%
    \relax
    #1
    \titlepage}} %end of titlepageformat
\let \tpf = \titlepageformat
%
\def\titlepage{\global\*titletrue
               \cpt*vs}%
\let\tp=\titlepage
\def\notitlepage{\global\*titlefalse
                 \cpt*vs}%
\let\ntp=\notitlepage
%
\message{output, }
%
%   Output changed to permit binding adjust
%
\output={\*mkpg}
%
\def\*mkpg{\*badj
           \plainoutput
           \if*title \notitlepage\fi
           \ifnum\*pcount>0 \*blkpg\fi}% insert blank page
%
\def\plainoutput{\shipout\vbox{\*setcrops{\vbox{%
               \makeheadline
               \pagebody
               \makefootline}}}
          \advancepageno
          \ifnum\outputpenalty>-\@MM
               \else\dosupereject\fi}
%
\def\*setcrops#1{\setbox\A=\vbox{#1}
     \if*cropmarks 
       \D=\wd\A
       \advance\D by 15pt
       \vbox{\hsize=\the\D
          \offinterlineskip\psk{0pt}\pin{0pt}
          \hbox to \D{\vrule width 5pt height .1pt depth 0pt
                         \hfill
                      \vrule width 5pt height .1pt depth 0pt}
          \hbox to \D{\vrule height 5pt width .1pt depth 0pt
                    \hfill
                    \vrule height 5pt width .1pt depth 0pt}
	  \vs{\the\pg*t}
          \vs{3pt}
          \hbox to \D{\hfill\box\A\hfill}
          \vs{3pt}
          \hbox to \D{\vrule width .1pt height 5pt  depth 0pt
                    \hfill
                    \vrule width .1pt height 5pt  depth 0pt}
          \hbox to \D{\vrule width 5pt height .1pt depth 0pt
                         \hfill
                         \vrule width 5pt height .1pt depth 0pt}}     
	\else \box\A\fi}
%
\def\makeheadline{% headline set for multiple and single column modes
    \if*title%  Do nothing if its a title page
    \else \setbox\A=\vbox{\hsize=\the\*txtw % hsize added to allow
    \ifodd\pageno\the\rh*r %                 headline to print the
    \else\the\rh*l\fi} %                     full width in multi
    \vbox to 0pt{\vskip-\ht\A\box\A\vss} %   column mode
    \fi} % This could replace the TEXT1@@ definition
%
\def\makefootline{\if*title 
                \if*cropmarks \vbox{\hsize=\the\*txtw\the\tp*fl\vss}
                  \else\vbox to 0pt{\hsize=\the\*txtw\the\tp*fl\vss}\fi
          \else\if*cropmarks \vbox{\hsize=\the\*txtw\ifodd\pageno\the\rf*r
                                  \else\the\rf*l\fi\vss}
                  \else\vbox to 0pt{\hsize=\the\*txtw\ifodd\pageno\the\rf*r
                                  \else\the\rf*l\fi\vss}\fi % hsize added for multi column mode
           \fi} % This could replace the TEXT1@@ definition
%
\def\*badj{\ifdim\pg*a=\z@ % do nothing if binding adjust absent
           \else
              \ifodd\pageno % Binding adjust markup (revised 2/03/87
                \global\hoffset=\*lmar % offset equals left margin value
                \global\advance\hoffset by\pg*a % plus binding adjust
             \else
                \global\hoffset=\*lmar % offset equals left margin value
                \global\advance\hoffset by-\pg*a % plus binding adjust
          \fi\fi}% end binding adjust markup
\message{more misc, }
%
%     linebreak
%
\def\linebreak{\null\hfil\break}
\let\lbr=\linebreak
\let\toclinebreak=\linebreak
\let\toclbr=\linebreak
%
%  Horizontal skip
%
\def\horizontalspace#1{\null\hskip#1\relax}%
\let\hs=\horizontalspace
%
% skip down
%
\def\verticalspace#1{\vskip #1\relax}%
\let\vs=\verticalspace
%
\def\verticalspacekeep#1{\par
                        \hbox{\vbox{\vskip #1\relax}}}%
\let\vsk=\verticalspacekeep
%
%    raggedright (as TeX basic)
%
\newdimen\r*sk       \r*sk=0pt       % dimension to save right skip
\def\rightragged{\par \r*sk=\rightskip   \*rrtrue
    \if*msp \rightskip=\r*sk plus10em
            \spaceskip=1em \xspaceskip=1em
    \else  \rightskip=\r*sk plus2em\relax
           \spaceskip=.3333em \xspaceskip=.5em
           \fi}
\let\rr=\rightragged
%
%    leftragged
%
\newdimen\l*sk    \l*sk=0pt          % dimension to save left skip
\def\leftragged{\par %
    \l*sk=\leftskip
    \spaceskip=.35em
    \xspaceskip=.55em
    \parfillskip=0pt
    \leftskip=\l*sk plus2em\relax}
\let\lr=\leftragged
%
\newif\if*rr   \*rrfalse
\def\justify{\par
             \rightskip=\r*sk
             \*rrfalse
             \leftskip=\l*sk
             \spaceskip=0pt \xspaceskip=0pt
             \parfillskip=0pt plus1fil\relax}
\let\ju=\justify
%
%    spacing
%
\def\singlespace{\par\baselineskip=\*isk}
\let\ssp=\singlespace
\def\doublespace{\par\baselineskip=2\*isk}
\let\dsp=\doublespace
%
%     paragraph
%
\let\paragraph=\par
\def\paragraphindent#1{\parindent=#1}
\let\pin=\paragraphindent
\def\paragraphskip#1{\parskip=#1}
\let\psk=\paragraphskip
%
%  noindent
%
\let\nin=\noindent
%
%  hanging paragraph macro
%
\newdimen\*hin          \*hin=24pt
\def\hangingindent#1{\*hin=#1}
\let\hin=\hangingindent
%
\def\hangingparagraph{\par
                      \hangindent=\*hin
                      \hangafter=1
                      \noindent}
\let\hp=\hangingparagraph
\newif\if*mnr     \*mnrfalse        % left/right margin note indicator
\newtoks\e*mn     \e*mn={\tenpt\rr} % every margin note tokens
\newtoks\*mnw     \*mnw={54pt}      % margin note width tokens
\newtoks\*mngut   \*mngut={6pt}     % margin note gutter tokens
\message{margin note, }
%
%           Margin Note markup
%
\def\marginnoteformat#1{% MARGINAL NOTE FORMAT
    \def\position##1{% "left" or "right" margin note check
       \edef\T{##1}%
       \edef\U{left}%
       \edef\V{right}%
       \ifx \T\U \global\*mnrfalse   % left margin notes true
       \else\ifx \T\V \global\*mnrtrue % right margin notes true
            \else\global\*mnrfalse   % default, improper entry
               \write16{<TEXT1> You must specify "left" or "right" in %
                      the marginnoteformat markup. Left is the default.}%
       \fi\fi}% end margin note check
    \def\notewidth##1{\global\*mnw={##1}}% note width variable
    \def\notegutter##1{\global\*mngut={##1}}% gutter width variable
    \def\everymarginnote##1{\global\e*mn={##1}}% token variable
    #1}% insert arguments, END marginnoteformat
\let\mnf=\marginnoteformat           % set marginnoteformat abbreviation
%
\long\def\marginnote#1{% BEGIN MARGIN NOTE MACRO
    \if*CG 
        \special{MARGINNOTE=true} % added 6/30/87 jkw for 8600 line numbering
	\fi
    \ifvmode\leavevmode\fi           % can't use vadjust in vertical mode
    \bgroup                          % begin margin note routine
    \def\rightragged{\r*sk=\rightskip   \*rrtrue
        \if*msp \rightskip=\r*sk plus10em %
           \spaceskip=1em \xspaceskip=1em %
        \else \advance\rightskip by 0pt plus1fil\relax %
           \spaceskip=.35em \xspaceskip=.55em %
        \fi}% par removed from TEXT1 version %
    \let\rr=\rightragged             %
%
    \tolerance=6000                  % increase line-breaking tolerance
    \hbadness=6000                   % increase warning tolerance
    \strut                           % sets line depth for vadjust
    \D=\dp\strutbox                  % capture depth of current line
    \the\e*mn                        % every margin note tokens
    \strut                           % sets strut to margin note font
    \parskip=0pt                     % cancel any paragraph skip
    \if*mnr                          % right margin notes true
       \vadjust{                     % make whats'it in text
       \rlap{\smash{                 % rightlap, make note depth zero
       \hskip\hsize                  % skip to right margin
       \hskip\the\*mngut             % make gutter
       \vtop{\hsize=\the\*mnw        % set reference point, new hsize
       \kern-\D                      % kern depth of current text line
       \kern-\ht\strutbox            % kern height of margin note text
       \nin#1}}}}%                   % input margin note text
    \else                            % left margin notes true
       \vadjust{                     % make whats'it in text
          \llap{\smash{              % leftlap, make note depth zero
          \vtop{\hsize=\the\*mnw     % gather vertical material with
          \kern-\D                   % kern depth of current text line
          \kern-\ht\strutbox         % kern height of margin note text
          \nin#1}%                     reference point at the top
          \hskip\the\*mngut}}}%        make margin note gutter
    \fi                              %
    \egroup                          % end margin notes routine
    \ignorespaces}% END margin note macro
\let\mn=\marginnote
%
\message{labels, }
%
% labeled definition macro
%
\newdimen\la*w   \la*w=1in         % Label width
\newtoks\la*g    \la*g={1em}       % Label gutter
\newtoks\la*s    \la*s={1\bl}      % Skip before label
\newtoks\la*f    \la*f={\rm}       % Label font
%
\long\def\label#1{\par\vskip\the\la*s
             \setbox\A=\vtop{\hsize=\la*w
                                  \leftskip=0pt
                                  \rightskip=0pt plus2em
                                  \tolerance=1600
                                  \noindent
                                  \the\la*f
                                  #1}%
             \hangindent=\la*w
             \advance \hangindent by \the\la*g
             \hangafter=1
             \noindent
             \setbox0=\hbox{\rlap{\box\A}}\ht0=0pt\dp0=0pt\box0%
             \hskip\la*w
             \hskip\the\la*g
             \ignorespaces}
\let\la=\label
%
\def\labelformat#1{{\def\skipbefore##1{\global\la*s={##1}}%
      \def\labelwidth##1{\global\la*w=##1}%
      \def\gutter##1{\global\la*g={##1}}%
      \def\everylabel##1{\global\la*f={##1}}%
      #1}}% End labelformat
\let\laf=\labelformat
%
\message{indents, }
%
%     leftindent
%
\newif\if*ok
\newif\if*zero
\def\leftindent#1{\par
                  \*zerofalse
                  \*okfalse
                  \e*p#1\end%
                  \if*zero \leftskip 0pt \fi
                  \advance \leftskip by #1
                  \l*sk=\leftskip   % l*sk used in justify reset
                  }%
\let\lin=\leftindent
%
\def\rightindent#1{\par
                   \*zerofalse  \*okfalse
                   \e*p#1\end%
                   \if*zero \rightskip 0pt \fi
                   \advance \rightskip by #1
                   \if*rr\rr\fi
                   \r*sk=\rightskip}% r*sk used in justify reset
\let\rin=\rightindent
%
%  \e*p will determine if the parm value passed to \leftindent
%  or \rightindent is to be relative to the previous indent, which means a
%  "+" or "-" will appear in front of the indent value. If no "+" or "-",
%  then the indent is to be absolute from the original left margin.
%
\def\e*p#1{\ifx #1\end \let \next = \relax%     e*p => Evaluate Parameter
    \else \if*ok \let \next = \e*p
        \else \global\*oktrue
              \ifx #1+ \let \next = \e*p
                   \else \ifx #1- \let \next = \e*p
                         \else \*zerotrue
                               \let \next = \e*p
    \fi\fi\fi\fi \next}
%
\message{block quotes, }
%
%              Blockquote
%
\newskip\bq*sb   \bq*sb = 6pt     % Default skip before
\newskip\bq*sa   \bq*sa = 6pt     % Default skip after
\newtoks\bq*f    \bq*f={\tenpt\leftindent{24pt}\rightindent{24pt}}
%
\def\blockquoteformat#1{{%
        \def\everyblockquote##1{\global\bq*f={##1}}%
        \def\skipbefore##1{\global\bq*sb=##1\relax}%
        \def\skipafter##1{\global\bq*sa=##1\relax}%
        #1}} %end of blockquoteformat
\let\bqf=\blockquoteformat
%
\def\blockquotebegin{\par\vskip\bq*sb\relax\begingroup
                     \the\bq*f }
\let\bqb=\blockquotebegin
\def\blockquoteend{\par\endgroup\vskip\bq*sa\relax}
\let\bqe=\blockquoteend
%
\message{footnotes, }
%
%
%
%                            Footnote
%
%    The "tfn" prefixed values are for the reference in the text of
%    the document.
%
\newif\if*tfn*dnum        \*tfn*dnumfalse    %"1." style
\newif\if*tfn*unum        \*tfn*unumtrue     %"1" style
\newif\if*tfn*pnum        \*tfn*pnumfalse    %"(1)" style
\newif\if*tfn*dlet        \*tfn*dletfalse    % "a." style
\newif\if*tfn*ulet        \*tfn*uletfalse    % "a"  style
\newif\if*tfn*plet        \*tfn*pletfalse    % "(a)" style
\newif\if*tfn*rbe         \*tfn*rbefalse     % reference after word
\newif\if*tfnupchar       \*tfnupchartrue    %
\newtoks\*tfn*rfont       \*tfn*rfont={\tenpt\rm}
%
%    The "nfn" prefixed values are for the reference as it is formatted
%    at the bottom of the page.
%
\newif\if*nfn*dnum        \*nfn*dnumtrue      %"1." style
\newif\if*nfn*unum        \*nfn*unumfalse     %"1" style
\newif\if*nfn*pnum        \*nfn*pnumfalse     %"(1)" style
\newif\if*nfn*dlet        \*nfn*dletfalse     % "a." style
\newif\if*nfn*ulet        \*nfn*uletfalse     % "a" style
\newif\if*nfn*plet        \*nfn*pletfalse     % "(1)" style
\newif\if*nfnupchar       \*nfnupcharfalse    % reference is not superscript
\newtoks\*nfn*rfont       \*nfn*rfont={\tenpt\rm}
\newtoks\*nfng            \*nfng={1em}
%
\newif\if*fn*llap         \*fn*llaptrue
\newtoks\fn*f
\newcount\fn*num
\newdimen\fn*div    \fn*div=2in
\newskip\fn*sadiv       \fn*sadiv=2.6pt  %default skip after divider
\newskip\fn*sbdiv       \fn*sbdiv=6pt  %default skip before divider
%
\def\footnotenumber{{\if*tfn*dnum \the\fn*num      % "1." style
                \else\if*tfn*unum \the\fn*num      % "1" style
                \else\if*tfn*pnum \the\fn*num      % "(1)" style
                \else\l*alphatrue \a*c{\fn*num}    % "a.", "a", and "(a)"
                  \fi\fi\fi
                  \removelastskip}}
%
\def\setfootnotenumber#1{\fn*num=#1}
\let\sfnn=\setfootnotenumber
%
\skip\footins=15pt plus 3pt minus 2pt
\fn*f={\tenpt\pin{20pt}\lin{0in}}
%
\def\footnoteformat#1{{%
  \def\everyfootnote##1{\global\fn*f{##1}}%
  \def\textreferencestyle##1{%
             \global\*tfn*dnumfalse
             \global\*tfn*unumfalse
             \global\*tfn*pnumfalse
             \global\*tfn*dletfalse
             \global\*tfn*uletfalse
             \global\*tfn*pletfalse
             \edef\T{##1}%
             \edef\U{(1)}%
             \edef\V{1}%
             \edef\Y{1.}%
             \edef\W{(a)}%
             \edef\X{a}%
             \edef\Z{a.}%
             \ifx\T\U \global\*tfn*pnumtrue
                 \else\ifx\T\V \global\*tfn*unumtrue
                 \else\ifx\T\Y \global\*tfn*dnumtrue
                 \else\ifx\T\W \global\*tfn*plettrue
                 \else\ifx\T\X \global\*tfn*ulettrue
                 \else\ifx\T\Z \global\*tfn*dlettrue
                 \else \message{<TEXT1> Error! textreferencestyle ##1
                             is not a valid style. Statement ignored.}
       \fi\fi\fi\fi\fi\fi}%   end reference style
   \def\textreferencefont##1{\global\*tfn*rfont{##1}}%
   \def\textreferenceplacement##1{\global\*tfn*rbefalse
                       \edef\T{##1}%
                       \edef\U{before}%
                       \edef\V{after}%
       \ifx\T\U \global\*tfn*rbetrue
           \else\ifx\T\V \global\*tfn*rbefalse
           \else \message{<TEXT1> Error! textreferenceplacement ##1
                          is invalid. Statement ignored.}
       \fi\fi}
   \def\textreferenceposition##1{\global\*tfnupcharfalse
                       \edef\T{##1}%
                       \edef\U{up}%
                       \edef\V{down}%
       \ifx\T\U \global\*tfnupchartrue
           \else\ifx\T\V \global\*tfnupcharfalse
           \else \message{<TEXT1> Error! textreferenceposition ##1
                          has an invalid parameter. Statement ignored.}
       \fi\fi}
  \def\notereferencestyle##1{
             \global\*nfn*dnumfalse
             \global\*nfn*unumfalse
             \global\*nfn*pnumfalse
             \global\*nfn*dletfalse
             \global\*nfn*uletfalse
             \global\*nfn*pletfalse
             \edef\T{##1}%
             \edef\U{(1)}%
             \edef\V{1}%
             \edef\Y{1.}%
             \edef\W{(a)}%
             \edef\X{a}%
             \edef\Z{a.}%
             \ifx\T\Y \global\*nfn*dnumtrue
                 \else\ifx\T\U \global\*nfn*pnumtrue
                 \else\ifx\T\V \global\*nfn*unumtrue
                 \else\ifx\T\W \global\*nfn*plettrue
                 \else\ifx\T\X \global\*nfn*ulettrue
                 \else\ifx\T\Z \global\*nfn*dlettrue
                 \else \message{<TEXT1> Error! notereferencestyle ##1
                             is not a valid style. Statement ignored.}
        \fi\fi\fi\fi\fi\fi}%   end reference style
   \def\notereferencefont##1{\global\*nfn*rfont{##1}}%
   \def\notereferenceposition##1{\global\*nfnupcharfalse
                       \edef\T{##1}%
                       \edef\U{up}%
                       \edef\V{down}%
       \ifx\T\U \global\*nfnupchartrue
           \else\ifx\T\V \global\*nfnupcharfalse
           \else \message{<TEXT1> Error! notereferenceposition ##1
                          has an invalid parameter. Statement ignored.}
       \fi\fi}%
   \def\skipbeforedivider##1{\global\fn*sbdiv=##1\relax}%
   \def\footnotedivider##1{\global\fn*div=##1\relax}%
   \def\notereferencegutter##1{\global\*nfng={##1}}%
   \def\skipafterdivider##1{\global\fn*sadiv=##1\relax}%
   #1
   \relax
   \skip\footins=0pt plus 3pt minus 2pt
   \global\advance\skip\footins by \fn*sbdiv\relax%
   \global\advance\skip\footins by \fn*sadiv\relax%
}} % end of footnoteformat
\let\fnf=\footnoteformat
%
\def\autofootnote{\global\advance\fn*num by 1
    \l*alphatrue
    \xdef\I{%
          \if*tfn*unum \the\fn*num%
          \else \if*tfn*ulet \a*c{\the\fn*num}%
          \else \if*tfn*plet (\a*c{\the\fn*num})%
          \else \if*tfn*pnum (\the\fn*num)%
          \else \if*tfn*dlet \a*c{\the\fn*num}.%
          \else \if*tfn*dnum \the\fn*num.%
          \fi\fi\fi\fi\fi\fi}%
    \def\K{%
          \if*nfn*unum \the\fn*num%
          \else \if*nfn*ulet \a*c{\the\fn*num}%
          \else \if*nfn*plet (\a*c{\the\fn*num})%
          \else \if*nfn*pnum (\the\fn*num)%
          \else \if*nfn*dlet \a*c{\the\fn*num}.%
          \else \if*nfn*dnum \the\fn*num.%
          \fi\fi\fi\fi\fi\fi}%
%
    \let\@sf=\empty
    \ifhmode\edef\@sf{\spacefactor=\the\spacefactor}\fi
    \def\J{{\the\*tfn*rfont
           \if*tfnupchar \raise.7ex\hbox{\the\*tfn*rfont\I}%
                        \else {\I}\fi}}%
    \if*tfn*rbe \@sf\J\ignorespaces%
              \else\unskip\unskip\unskip\unskip\J\@sf\fi
    \def\M{{\the\*nfn*rfont
           \if*nfnupchar \raise.7ex\hbox{\K}%
                        \else {\K}\fi}}%
  \vfootnote{\M}}
\let\afn=\autofootnote
%
%        vfootnote redefined to include fn*f features
%        The addition of hsize=txtw in vfootnote for flexibleformat allows the
%
%        footnote to print across the full text width at the page bottom.
%
%        Footstrut redefined to baselineskip for consistent spacing in footnote
%
%
\def\footnoterule{\vskip-\fn*sadiv\hrule width\fn*div\vskip\fn*sadiv\relax}
%
%          redefined from PLAIN TEX to baselineskip. PLAIN TEX
%          used the height of a ten point strutbox
%
\def\vfootnote#1{% Vfootnote revised 11/6/86
    \insert\footins\bgroup
    \if*fix %                          if fixed mode do nothing to footnote
    \else\hsize=\*txtw\fi %            else print footnote across full width of page
   \interlinepenalty\interfootnotelinepenalty
   \setbox\strutbox=\hbox{\vrule height 1.8ex depth .6ex width 0pt}%
   \splittopskip\ht\strutbox %          top baseline for broken footnotes
   \splitmaxdepth\dp\strutbox
   \floatingpenalty\@MM
   \leftskip\z@skip
   \rightskip\z@skip
   \spaceskip\z@skip
   \xspaceskip\z@skip
   \the\fn*f
   \def\T{\parindent}% For some odd and unknown reason this def is needed
   \ifdim\the\parindent>0pt \global\*fn*llaptrue
      \else \ifdim\the\leftskip>0pt \global\*fn*llaptrue
      \else \global\*fn*llapfalse\fi\fi
   \leavevmode
   \if*fn*llap  \hbox to 0pt{\hss{#1\hskip\the\*nfng}}%
      \else \hbox{#1\hskip\the\*nfng}\fi%
  \ignorespaces
  \footstrut\futurelet\next\fo@t}% END vfootnote markup definition
%
\def\footstrut{\vbox to\baselineskip{}}
%
\message{endnotes, }
%
%                            Endnote
%
%    The "ten" prefixed values are for the reference in the text of
%    the document.
%
\newif\if*ten*num        \*ten*numtrue      % "[1]", "1" and "(1)" styles
\newif\if*ten*let        \*ten*letfalse     % "a" and "(a)" styles
\newif\if*ten*paren      \*ten*parenfalse   % "(1)" and "(a)" styles
\newif\if*ten*sb         \*ten*sbtrue       % "[1]" style
\newif\if*tenupchar      \*tenupcharfalse   % reference is not superscripted by
\newtoks\*tenrfont       \*tenrfont={\tenpt\rm}
%
%    The "nen" prefixed values are for the reference as it is formatted
%    at the end of a chapter or the end of the document.
%
\newif\if*nen*num        \*nen*numtrue      % "[1]", "1", "1." and "(1)" styles
\newif\if*nen*let        \*nen*letfalse     % "a" and "(a)" styles
\newif\if*nenll*per      \*nenll*pertrue    % "1." style
\newif\if*nen*paren      \*nen*parenfalse   % "(1)" and "(a)" styles
\newif\if*nen*sb         \*nen*sbfalse      % "[1]" style
\newif\if*nenupchar      \*nenupcharfalse   % reference isn't superscripted
\newtoks\*nenrfont       \*nenrfont={\tenpt\rm}
\newdimen\*neng          \*neng=1em
%
\newtoks\*enpar
\newcount\en*n
\newskip\en*s            \en*s=4pt
%
%
\def\endnotenumber{{\if*ten*num \the\en*n      % all numeric styles
                \else\l*alphatrue \a*c{\en*n}  % all alpha styles
                  \fi
                  \removelastskip}}
%
\def\setendnotenumber#1{\en*n=#1}
\let\senn=\setendnotenumber
%
\*enpar={\tenpt\pin{0in}\lin{1.2em}}
%
\def\endnoteformat#1{%
 {\def\everyendnote##1{\global\*enpar{##1}}%
  \def\textreferencestyle##1{%
             \global\*ten*numfalse
             \global\*ten*letfalse
             \global\*ten*parenfalse
             \global\*ten*sbfalse
             \edef\T{##1}%
             \edef\U{[1]}%
             \edef\V{(1)}%
             \edef\W{1}%
             \edef\X{(a)}%
             \edef\Y{a}%
             \ifx\T\U \global\*ten*numtrue \global\*ten*sbtrue              % st
                 \else\ifx\T\V \global\*ten*numtrue \global\*ten*parentrue  % st
                 \else\ifx\T\W \global\*ten*numtrue                         % st
                 \else\ifx\T\X \global\*ten*lettrue \global\*ten*parentrue  % st
                 \else\ifx\T\Y \global\*ten*lettrue                         % st
                 \else \message{<TEXT1> Error! textreferencestyle ##1
                             is not a valid style. Statement ignored.}
           \fi\fi\fi\fi\fi}%   end reference style
   \def\textreferencefont##1{\global\*tenrfont{##1}}%
   \def\textreferenceposition##1{\global\*tenupcharfalse
                       \edef\T{##1}%
                       \edef\U{up}%
                       \edef\V{down}%
       \ifx\T\U \global\*tenupchartrue
           \else\ifx\T\V \global\*tenupcharfalse
           \else \message{<TEXT1> Error! textreferenceposition ##1
                          has an invalid parameter. Statement ignored.}
       \fi\fi}
  \def\notereferencestyle##1{
             \global\*nen*numfalse
             \global\*nen*letfalse
             \global\*nen*parenfalse
             \global\*nenll*perfalse
             \global\*nen*sbfalse
             \edef\T{##1}%
             \edef\U{[1]}%
             \edef\V{(1)}%
             \edef\W{1}%
             \edef\X{(a)}%
             \edef\Y{a}%
             \edef\Z{1.}%
             \ifx\T\Z \global\*nen*numtrue \global\*nenll*pertrue        % style
                 \else\ifx\T\U \global\*nen*numtrue \global\*nen*sbtrue     % st
                 \else\ifx\T\V \global\*nen*numtrue \global\*nen*parentrue  % st
                 \else\ifx\T\W \global\*nen*numtrue                         % st
                 \else\ifx\T\X \global\*nen*lettrue \global\*nen*parentrue  % st
                 \else\ifx\T\Y \global\*nen*lettrue                         % st
                 \else \message{<TEXT1> Error! notereferencestyle ##1
                             is not a valid style. Statement ignored.}
           \fi\fi\fi\fi\fi\fi}%   end reference style
   \def\notereferencefont##1{\global\*nenrfont{##1}}%
   \def\notereferenceposition##1{\global\*nenupcharfalse
                       \edef\T{##1}%
                       \edef\U{up}%
                       \edef\V{down}%
       \ifx\T\U \global\*nenupchartrue
           \else\ifx\T\V \global\*nenupcharfalse
           \else \message{<TEXT1> Error! notereferenceposition ##1
                          has an invalid parameter. Statement ignored.}
       \fi\fi}%
   \def\notereferencegutter##1{\global\*neng=##1}%
   \def\skipbefore##1{\global\en*s=##1}%
   \relax
   #1}} % end of footnoteformat
\let\enf=\endnoteformat
%
\newlinechar=`\^^J
\newhelp\aenhelp{relax
   You may continue if you wish, but I'd be surprised
   if your job^^J
   finished without any errors when you print the endnotes. }
%
\def\err@#1{\errmessage{TEXT1 error: #1}}
\def\*aenerr{\errhelp=\aenhelp
    \catcode`@=11
    \errmessage{Results are unpredictable
                 when you use autoendnote with asisbegin.
                 Type h for more help}}%
\def\autoendnote{\global\advance\en*n by 1
    \if*aib \*aenerr \fi
    \l*alphatrue
    \edef\I{%
          \if*ten*paren (\unskip\fi
          \if*ten*sb [\unskip\fi
          \if*ten*num \the\en*n\fi
          \if*ten*let \a*c{\the\en*n}\fi
          \if*ten*paren \unskip)\fi
          \if*ten*sb \unskip]\fi}%
  \let\@sf=\empty
  \ifhmode \edef\@sf{\spacefactor=\the\spacefactor}%
     \else \let\@sf=\empty\fi
  \unskip\unskip
  \if*tenupchar \raise.7ex\hbox{\the\*tenrfont\I}\@sf%
          \else {\the\*tenrfont\I}\@sf\fi%
    \edef\J{%
          \if*nen*paren (\unskip\fi
          \if*nen*sb [\unskip\fi
          \if*nen*num \the\en*n\fi
          \if*nen*let \a*c{\the\en*n}\fi
          \if*nenll*per \unskip.\fi
          \if*nen*paren \unskip)\fi
          \if*nen*sb \unskip]\fi}%
  \en*o
  \immediate\write\en*f{\par%
      \the\*enpar%
      \noexpand\ENP{\the\*nenrfont\J}}%
  \en*w}
\let\aen=\autoendnote
%
%
\def\ENP#1{\indent\en*i{%
                    \if*nenupchar \raise.7ex\hbox{\the\*nenrfont#1}%
                    \else {\the\*nenrfont#1}\fi}}%
%
\def\en*i#1{\hbox to 0pt{\hss{#1}\hskip\*neng}\ignorespaces}
%
\newwrite\en*f
\newtoks\*endlbl
\if*PC
	\*endlbl={text1xx.end}
  \else
	\*endlbl={text1xx.endnotes}
\fi

\def\en*o{\immediate\openout\en*f=\the\*endlbl
             \immediate\write\en*f{\the\*enpar}%
             \edef\T{\par\vskip\the\en*s\relax}%
             \immediate\write\en*f{\T}%
             \global\def\en*o{}%
             }
%
\long\def\en*w#1{{\def\rm{\noexpand\rm}\def\it{\noexpand\it}%
   \def\underscore{\noexpand\us}\let\us=\underscore%
   \def\bd{\noexpand\bd}\def\cc{\noexpand\cc}\def\tt{\noexpand\tt}%
   \def\c{\noexpand\c}\def\L{\noexpand\L}\def\AA{\noexpand\AA}%
   \def\d{\noexpand\d}\def\O{\noexpand\O}\def\t{\noexpand\t}%
   \def\b{\noexpand\b}%
   \immediate\write\en*f{#1}}%
}% end definition of en*w
%
\def\printendnotes{\immediate\closeout\en*f%
   \begingroup%
   \input text1xx.endnotes%
   \par%
   \endgroup%
   \global\def\en*o{\immediate\openout\en*f=text1xx.endnotes%
                 \immediate\write\en*f{\the\*enpar}%
                 \edef\T{\par\vskip\the\en*s\relax}%
                 \immediate\write\en*f{\T}%
                 \global\def\en*o{}}%
   \setendnotenumber{0}}%
\let \pen=\printendnotes
%
\message{set command, }
%
%
\def\set#1#2{\l*alphafalse
\ifx#2\appendixnumber
    \edef\T{\the\*ap*num}%
    \E=\*ap*st%
 \else\ifx#2\chapternumber
           \edef\T{\the\*ch*num}%
           \E=\*ch*st%
 \else\ifx#2\endnotenumber
           \edef\T{\the\en*n}%
           \if*ten*num         \E=1%            % all numeric styles
             \else\l*alphatrue \E=2%            % all alpha styles
                  \fi%
 \else\ifx#2\figurenumber
           \edef\T{\the\fi*n}%
           \E=1%
 \else\ifx#2\footnotenumber
           \edef\T{\the\fn*num}%
           \if*tfn*dnum        \E=1%            % "1." style
             \else\if*tfn*unum \E=1%            % "1" style
             \else\if*tfn*pnum \E=1%            % "(1)" style
             \else\l*alphatrue \E=2%            % "a.", "a", and "(a)"
                  \fi\fi\fi%
 \else\ifx#2\partnumber
           \edef\T{\the\*pt*num}%
           \E=\*pt*st%
 \else\ifx#2\pagenumber
           \ifnum  \pageno<0 \edef\T{\romannumeral-\pageno}%
             \else \edef\T{\number\pageno}\fi%
           \E=1%
 \else\ifx#2\subheadanumber
           \edef\T{\the\*sa*num}%
           \E=\sa*st%
 \else\ifx#2\subheadbnumber
           \edef\T{\the\*sb*num}%
           \E=\sb*st%
 \else\ifx#2\subheadcnumber
           \edef\T{\the\*sc*num}%
           \E=\sc*st%
 \else\ifx#2\subheaddnumber
           \edef\T{\the\*sd*num}%
           \E=\sd*st%
 \else\ifx#2\tablenumber
           \edef\T{\the\ta*n}%
           \E=1%
 \else\message{<TEXT1> Error! You've entered a number I know nothing
       about. I'm going to ignore it and try to proceed.}%
           \E=0%
  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
\null                           % So, why is this needed??
\ifcase\E                       % NOP
   \or                          % set to a digit or lower case roman
      \expandafter\xdef\csname#1\endcsname{\T}%
   \or                          % set to a letter (upper or lower)
      \expandafter\xdef\csname#1\endcsname{{\a*c{\T}}}%
   \or                          % set to an uppercase roman numeral
      \expandafter\xdef\csname#1\endcsname{%
            \uppercase\expandafter{\romannumeral\T}}%
                       \fi}%
%
\message{centering, }
%
%   CENTERLINE                                          Rev.  9/6/88 drg
%
% Centerline with single and multiple line capabilities
\newif\if*afn*cl
\def\centerline#1{\par % Begin centerline markup
    \*afn*clfalse
    \B={}
    \N=0
    \bgroup
    \parindent=\z@ \relax            % zero indent
    \parfillskip=0pt plus1fil \relax % infinite stretch
    \everypar{\null\hskip0pt plus1fil\relax} % add infinite glue
    \def\linebreak{\hskip0pt plus1fil\relax\break
                   \null\hskip0pt plus1fil\relax}%
    \let\lbr=\linebreak
    \let\toclinebreak=\space
    \let\toclbr=\space
    \justify
    \let\*vfn=\vfootnote
    \let\*afn=\autofootnote
    \def\vfootnote##1##2{\edef\T{\the\B\noexpand\vfootnote{##1}{##2}}
               \global\B=\expandafter{\T}}
    \def\autofootnote{\global\*afn*cltrue
          \global\advance\N by 1   % count the notes done
          \*afn}
    \let\afn=\autofootnote
    \let\*fn=\footnote
    \def\footnote##1{\global\*afn*cltrue \*fn{##1}}
    \setbox\A=\vbox{#1\par % added to make skip with multiple lines
                      \global\C=\baselineskip
                      \setbox0=\hbox{(}
                      \global\advance\C by-\ht0}% end vbox
    \global\advance\fn*num by -\N    %subtract the number of notes done
    \let\autofootnote=\*afn \let\afn=\autofootnote
    \let\footnote=\*fn
    \let\vfootnote=\*vfn
    \ifdim\ht\A>\baselineskip \else \C=\z@ \fi
    \line{\hss\vbox{\vskip\C#1\par}\hss}% print centered lines
    \egroup
    \if*afn*cl           % then there were footnotes in the \cl
       \the\B
       \fi
    }% End centerline markup
\let\cl=\centerline
%
%   CENTER MULTIPLE LINES
%
\newif\if*ctrl                       % centerline indicator
\*ctrlfalse
\def\centerlinesbegin{\par\global\*ctrltrue
    \begingroup\pin{0pt}\psk{0pt}\leftskip=0pt plus1fil
    \parfillskip=0pt \rightskip=0pt plus1fil\obeylines\ignorespaces}%
\let\clb=\centerlinesbegin
\def\centerlinesend{\endgroup\par}
\let\cle=\centerlinesend
%
%   rightline      par added to PLAIN TEX macro
%
\long\def\rightline#1{\par\line{\hss#1}}
\let\rl=\rightline
%
%   right align multiple lines
%
\def\rightlinesbegin{\par\begingroup\parskip=0pt\parfillskip=0pt
    \leftskip=0pt plus1fil\obeylines}%
\let\rlb=\rightlinesbegin
\def\rightlinesend{\endgroup\par}%
\let\rle=\rightlinesend
%
\message{asis, }
%
%                 As is  or format off
%
\newskip\*aisb  \*aisb = 6pt     % Default skip before
\newskip\*aisa  \*aisa = 6pt     % Default skip after
\newtoks\*aif   \*aif={\leftindent{0in}}
\newif\if*aib   \*aibfalse           % centerline indicator
%
\def\asisformat#1{{%
  \def\everyasis##1{\global\*aif{##1}}%
  \def\skipbefore##1{\global\*aisb=##1\relax}%
  \def\skipafter##1{\global\*aisa=##1\relax}%
  \relax
 #1}} % end of asisformat
\let\aif=\asisformat
%
%                 As is  or format off
\def\asisbegin{\par\*aibtrue\vskip\*aisb\relax\nointerlineskip
    \begingroup
    \let\*afn=\autofootnote          % save definition of autofootnote
               \def\leftindent##1{%
                     \*zerofalse \*okfalse
                     \e*p##1\end%
                     \if*zero \leftskip 0pt \fi
                     \advance \leftskip by ##1}%
               \let\lin=\leftindent
%
    \def\autofootnote{\endgroup      % end asis format
        \futurelet\next\ck*chr}%       pick next character, then check the pick
    \let\afn=\autofootnote           % reset abbreviation for autofootnote
    \def\ck*chr{\ifcat\bgroup        % if left brace
                   \noexpand\next    % do nothing
                    \let\next\gather % next equals gather
                 \else               % no brace present
                     \let\next\re*group\fi % stop if no brace encountered
          \next}%
    \def\gather{\*afn                % call normal autofootnote
                \bgroup              % furnish left brace, read group
                \aftergroup\re*group % reset asis format
                \let\next}%            eat curly brace in text
                                     % group ends at text right curly brace
    \def\re*group{\*asisb}%            restore asis group
%
   \def\*asisb{\begingroup
               \def\singlespace{\baselineskip=\*isk}%
               \let\ssp=\singlespace
               \def\doublespace{\baselineskip=2\*isk}%
               \let\dsp=\doublespace
               \def\par{\leavevmode\endgraf}%
               \parskip0pt\parindent0pt
               \the\*aif
               \setupverbatim}\*asisb}
 {\obeyspaces\gdef {\ }}
\def\obeyspaces{\@vobeyspaces}
{\catcode`\ =\active\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
\def\@xobeysp{\leavevmode\penalty10000\ }
\def\setupverbatim{\obeylines
                   \obeyspaces }
\let\aib=\asisbegin
\def\asisend{\endgroup\endgroup\vskip\*aisa\relax\*aibfalse}
\let\aie=\asisend
%
\message{box macros, }
%
%	Start of boxes
%
\font\dtscr=dt
%
%     Draw boxes
%
\newdimen\db*m            \db*m=3pt       % drawbox mat size
\newdimen\db*s            \db*s=.4pt      % drawbox rule size
\newdimen\db*sh		  \db*sh=0pt      % drawbox shadow size
\newdimen\db*om           \db*om=0pt      % drawbox outer mat size 
\newdimen\db*os           \db*os=0pt      % drawbox outer rule size
\newcount\db*ps           \db*ps=0        % drawbox percent of screen
%
\long\def\drawbox#1{\*box{\db*m}{\db*s}{\db*sh}{\db*om}{\db*os}{\db*ps}{#1}}
\let\db=\drawbox
%
\def\drawboxformat#1{{%
  \def\boxmat##1{\global\db*m=##1\relax}%
  \def\boxrule##1{\global\db*s=##1\relax}%
  \def\boxshadow##1{\global\db*sh=##1\relax}%
  \def\outerboxmat##1{\global\db*om=##1\relax}%
  \def\outerboxrule##1{\global\db*os=##1\relax}%
  \def\screen##1{\ifnum##1>64
			\message{<TEXT1> Error. Screen can only be 0 through 64}
			\global\db*ps=0
	 	 \else\ifnum##1<0
			\message{<TEXT1> Error. Screen can only be 0 through 64}
			\global\db*ps=0
		 \else \global\db*ps=##1\relax\fi\fi}%
  #1}} % end of drawboxformat
\let\dbf=\drawboxformat
%
\def\drawboxrulesize#1{\dbf{\boxrule{#1}}
  \message{<TEXT1> Warning: Use drawboxformat instead of drawboxrulesize}}
\let\dbrs=\drawboxrulesize
\def\drawboxmat#1{\dbf{\boxmat{#1}}
  \message{<TEXT1> Warning: Use drawboxformat instead of drawboxmat}}
\let\dbm=\drawboxmat
%
%     Paragraph boxes
%
\newdimen\pb*m            \pb*m=3pt       % paragraphbox mat size
\newdimen\pb*s            \pb*s=.4pt      % paragraphbox rule size
\newdimen\pb*sh		  \pb*sh=0pt      % paragraphbox shadow size
\newdimen\pb*om           \pb*om=0pt      % paragraphbox outer mat size 
\newdimen\pb*os           \pb*os=0pt      % paragraphbox outer rule size
\newcount\pb*ps           \pb*ps=0        % paragraphbox percent of screen
%
\long\def\paragraphbox#1{\par\hbox{%
	\*box{\pb*m}{\pb*s}{\pb*sh}{\pb*om}{\pb*os}{\pb*ps}{\vbox{%
                    \advance \hsize by -2\pb*m%
                    \advance \hsize by -2\pb*s%
   	  	    \advance \hsize by -2\pb*om%
	  	    \advance \hsize by -2\pb*os%
                    \hrule width \hsize height 0pt depth 0pt%
		    #1}}}}
\let\pb=\paragraphbox
%
\def\paragraphboxformat#1{{%
  \def\boxmat##1{\global\pb*m=##1\relax}%
  \def\boxrule##1{\global\pb*s=##1\relax}%
  \def\boxshadow##1{\global\pb*sh=##1\relax}%
  \def\outerboxmat##1{\global\pb*om=##1\relax}%
  \def\outerboxrule##1{\global\pb*os=##1\relax}%
  \def\screen##1{\ifnum##1>64
			\message{<TEXT1> Error. Screen can only be 0 through 64}
			\global\pb*ps=0
	 	 \else\ifnum##1<0
			\message{<TEXT1> Error. Screen can only be 0 through 64}
			\global\pb*ps=0
		 \else \global\pb*ps=##1\relax\fi\fi}%
  #1}} % end of paragraphboxformat
\let\pbf=\paragraphboxformat

%  parameter list for *box:
%	#1 = boxmat size   	#5 = outer boxrule   
% 	#2 = boxrule size       #6 = screen percent
%	#3 = box shadow size    #7 = value to be boxed
%	#4 = outer boxmat 
%
%	Uncoment these 2 lines if using the boxes outside of TEXT1
% 		\newbox\A
% 		\newdimen\D
%		\newcount\E
%
\long\def\*box#1#2#3#4#5#6#7{%
\ifdim #5>0pt  		% only if doing a "framed" box
	  \setbox\A=\vbox{\*box{#1}{#2}{#3}{0pt}{0pt}{#6}{#7}}%
          \*box{#4}{#5}{#3}{0pt}{0pt}{#6}{\box\A}%
  \else%
    \setbox\A=\vbox{\hrule height#2  		    % draw left side
        \hbox{\vrule width#2\hskip#1                % draw the top
           \vbox{\vskip#1
              \hbox{#7}
              \vskip#1}\hskip#1\vrule width#2}      % draw the bottom
        \hrule height#2}                            % draw the right side
    \ifdim #3=0pt \*scr{#6}{\box\A}		    % print if not a shadow
	\else   \D=\ht\A
		\advance \D by -#3
	  	\vbox{\hbox{\vrule width #3 height \D depth 0pt
		            \*scr{#6}{\copy\A}}
		      \hrule width \wd\A height #3 depth 0pt}
    \fi
  \fi}

%	#1 = Screen percent
%	#2 = box to be printed

\def\*scr#1#2{\ifnum#1=0 #2
	\else \setbox\A=\vbox{#2}
	      \D=\ht\A
	      \advance \D by \dp\A
	      \E=#1%
	      \advance \E by 48%
	      \hbox{\vbox{\vbox to \D{\leaders
		       	\hbox to \wd\A{\leaders\hbox{\dtscr\char\E}\hfill}
			\vfill}
	       	\vskip -\D
	        \box\A}}     
	\fi
}
%
%	End of boxes
%
\message{more misc, }
%
%   page skip
%
\def\newpage{\vfil\break}% changed from vfill to vfil 11/4/86 bth
\let\np=\newpage
%
%   emptypage
%
\def\emptypage{\global\advance\*pcount by1}% produces empty pages
\let\ep=\emptypage
%
\def\*blkpg{ % BLANK PAGE MACRO, produces the empty page
    \loop %                            checks the number of empty pages
       \*badj %                        check for binding adjust
       \shipout\vbox{\*setcrops{\vbox{
                     \makeheadline   % shipout page with headline
                     \vbox to\*txth{\vfil} % and  fooline only
                     \makefootline}}}
       \global\advance\*pcount by\m@ne % decrement empty page counter
       \advancepageno                % advance the page number
    \ifnum\*pcount>0                 % check for empty pages
    \repeat}% END, empty page macro
%
\message{enumeration macros, }
%
%   List Level Macros
%
\newcount\ll*n             % Current list level number
\newcount\*toklimit
\newcount\*countlimit
\newcount\ll*stb           % list style start
\newcount\ll*cs            % list*enum*value*start
\newcount\ll*cmps          % list compare start
\newcount\ll*cmpe
\newcount\ll*lc            % Last level called
\*toklimit = 188           % Positions 224-253 are used for the 30 table column justification
                           % Positions 199-223 are used for the 25 different list level styles
                           % Tokens below 199 are available for \newtoks use.
                           % Token 190 is the build token
                           % 191-197 is the list level formats, level 1-7
                           % 198 is the bullet format
%
\*countlimit = 236         % Counters 244-250 are the styles for the 7 list levels
                           % Counters 237-243 are the enum counters for the 7 list levels
                           % Counters below 237 are available for \newcount use.
%
\ll*stb = 244              % Counters 244-250 correspond to the 7 list level styles,
                           %         value is index into tokens 199-223
\ll*cs = 237               % Counters 237-243 correspond to the 7 list level enum values.
\ll*cmps = 199             % Where to start in the \toks values for the 25 different list level styles
\ll*cmpe = 223             % Where to stop in the \toks values for the 25 different list level styles
%
\count244 = 1      % style "1."
\count245 = 4      % style "a."
\count246 = 7      % style "i."
\count247 = 2      % style "1)"
\count248 = 5      % style "a)"
\count249 = 8      % style "i)"
\count250 = 3      % style "(1)"
%
\newskip\ll*sb     \ll*sb = 0pt     % Default is no \vskip
\newskip\ll*sa     \ll*sa = 0pt       % Default is no \vskip
%
\toks191={\rm\leftindent{.5in}\gutter{1em}}      % level 1 indent is 5 characters initially
\toks192={\rm\leftindent{.8in}\gutter{1em}}      % level 2 indent
\toks193={\rm\leftindent{1.1in}\gutter{1em}}     % level 3 indent
\toks194={\rm\leftindent{1.4in}\gutter{1em}}     % level 4 indent
\toks195={\rm\leftindent{1.7in}\gutter{1em}}     % level 5 indent
\toks196={\rm\leftindent{2in}\gutter{1em}}       % level 6 indent
\toks197={\rm\leftindent{2.3in}\gutter{1em}}     % level 7 indent
\toks198={\rm\leftindent{+.5in}\gutter{1em}}     % bullets
%
                           % The 25 different List level styles:
\toks199 = {1.}            % Style 1
\toks200 = {1)}            %       2
\toks201 = {(1)}           %       3
\toks202 = {a.}            %       4
\toks203 = {a)}            %       5
\toks204 = {(a)}           %       6
\toks205 = {i.}            %       7
\toks206 = {i)}            %       8
\toks207 = {(i)}           %       9
\toks208 = {I.}            %      10
\toks209 = {I)}            %      11
\toks210 = {(I)}           %      12
\toks211 = {A.}            %      13
\toks212 = {A)}            %      14
\toks213 = {(A)}           %      15
\toks214 = {1]}            %      16
\toks215 = {[1]}           %      17
\toks216 = {a]}            %      18
\toks217 = {[a]}           %      19
\toks218 = {i]}            %      20
\toks219 = {[i]}           %      21
\toks220 = {I]}            %      22
\toks221 = {[I]}           %      23
\toks222 = {A]}            %      24
\toks223 = {[A]}           %      25
%
\newif\if*check    % True unless done parsing \listformat
\newif\ifll*lp
\newif\ifll*rp
\newif\if*lsqb
\newif\if*rsqb
\newif\ifll*per
\newif\ifll*dig
\newif\ifl*alpha
\newif\if*u*alpha
\newif\if*l*roman
\newif\if*u*roman
\newif\ifll*nil
%
\ll*niltrue
%
\outer\def\newtoks{\alloc@5\toks\toksdef\*toklimit}
\outer\def\newcount{\alloc@0\count\countdef\*countlimit}
%
%
%  Macros for producing enumerated list levels.
%
%
\def\listformat#1{{\begingroup%
          \def\liststyle##1{\par\N = 1
                            \toks190 = {}
                            \Z##1\end}%
          \def\Z##1{\ifx ##1\end \Y
                                 \let \next = \relax
                    \else \ifnum \N > 7
                                 \message{<TEXT1> Error! Too many list levels specified, 7 is max.
                                          Statement ignored.}
                                 \let \next = \Z
                          \else \ifx ##1, \Y
                                          \advance \N by 1
                                          \toks190 = {}
                                          \let \next = \Z
                                \else \toks190 = \expandafter{\the\toks190 ##1}
                                      \let \next = \Z
                   \fi\fi\fi\next}%
          \def\Y{\*tempiffalse
                 \*checktrue
                 \E = \ll*cmps
                 \loop \ifnum \E > \ll*cmpe
                              \*checkfalse
                              \*tempiftrue
                       \else  \edef\T{\the\toks190}%
                              \edef\U{\the\toks\E}%
                              \ifx\T\U
                                        \*checkfalse
                                        \F = \ll*stb
                                        \advance \F by -1
                                        \advance \F by \N
                                        \count\F = \E
                                        \advance \count\F by -\ll*cmps
                                        \global\advance \count\F by 1
                        \fi\fi
                   \if*check% Then
                              \advance \E by 1
                   \repeat
             \if*tempif \message{<TEXT1> Error! \the\toks190 is an invalid list
                                             level style. It will be ignored}
                 \fi}%
          \def\skipbefore##1{\global\ll*sb = ##1\relax}%
          \def\skipafter##1{\global\ll*sa = ##1\relax}%
          \def\everylistlevel##1##2{\ifcase ##1
                \or \global\toks191 = {##2}
                \or \global\toks192 = {##2}
                \or \global\toks193 = {##2}
                \or \global\toks194 = {##2}
                \or \global\toks195 = {##2}
                \or \global\toks196 = {##2}
                \or \global\toks197 = {##2}
                \fi}%
          \def\everybullet##1{\global\toks198 = {##1}}%
          \relax
          #1
          \endgroup}}
%
\let \lif = \listformat
%
\def\listbegin{\vskip\ll*sb\relax
               \ll*nilfalse
               \begingroup
               \global\ll*lc = 0
               \ll*ini1
 }
\let\lib=\listbegin
%
\def\listend{\vskip\ll*sa\relax
             \endgroup
             \ll*niltrue
}
\let\lie=\listend
%
\def\listlevel#1{\par
                 \ifll*nil \message{<TEXT1> Warning, listbegin was not
                                    specified. The left margin indent will be set to zero.}
                                \else \if*dbl \else \if*tpl
       % If in multiple columns, don't end the group. Do so otherwise
                                      \else \endgroup
                                            \begingroup
                                            \fi\fi
                                      \fi
                 \*tempiftrue                           % Usually not quite so pessimistic
                 \ifcat 1#1 \ifnum #1 < 8 \*tempiffalse % OK if \listlevel1-\listlevel7
                     \fi\fi
                 \if*tempif \message{<TEXT1> Warning, invalid list level "#1",
                                                 listlevel1 will be used instead.}
                                     \listlevel1
                      \else \E = #1
                            \global\ll*n = \E
                            \advance \E by 1
                            \ll*ini\E
                            \par
                            \ll*fmt
                            \noindent
                            \txt*in{\ll*p{#1}}
                      \fi
}
\let \lil = \listlevel
%
\def\txt*in#1{\hbox to 0pt{\hss{#1}\hskip\*gut}\ignorespaces}
%
\def\ll*fmt{\*gut=1em
                  \ifcase \the\ll*n
                            \or \the\toks191
                            \or \the\toks192
                            \or \the\toks193
                            \or \the\toks194
                            \or \the\toks195
                            \or \the\toks196
                            \or \the\toks197
                            \fi}
%
\def\listresume{% rev. 7/6/87
    \if*start*bul\global\advance\ll*n by 1\global\*start*bulfalse\fi
                                     % account for bulleted list ffems
    \ifnum \ll*n < 2 \lin{0pt}
                     \global\ll*n = 1
               \else \global\advance \ll*n by -1
                     \ll*fmt
                     \fi
                \noindent\ignorespaces}
%
\let\lir=\listresume
%                              Evaluate Style
\def\e*s{%
    \global\ll*lpfalse
    \global\ll*rpfalse
    \global\*lsqbfalse
    \global\*rsqbfalse
    \global\ll*perfalse
    \global\ll*digfalse
    \global\l*alphafalse
    \global\*u*alphafalse
    \global\*l*romanfalse
    \global\*u*romanfalse
    \ifcase \count\F
            \or \global\ll*digtrue \global\ll*pertrue                        % Style  1
            \or \global\ll*digtrue \global\ll*rptrue                         %        2
            \or \global\ll*digtrue \global\ll*rptrue \global\ll*lptrue       %        3
            \or \global\l*alphatrue \global\ll*pertrue                       %        4
            \or \global\l*alphatrue \global\ll*rptrue                        %        5
            \or \global\l*alphatrue \global\ll*rptrue \global\ll*lptrue      %        6
            \or \global\*l*romantrue \global\ll*pertrue                      %        7
            \or \global\*l*romantrue \global\ll*rptrue                       %        8
            \or \global\*l*romantrue \global\ll*rptrue \global\ll*lptrue     %        9
            \or \global\*u*romantrue \global\ll*pertrue                      %       10
            \or \global\*u*romantrue \global\ll*rptrue                       %       11
            \or \global\*u*romantrue \global\ll*rptrue \global\ll*lptrue     %       12
            \or \global\*u*alphatrue \global\ll*pertrue                      %       13
            \or \global\*u*alphatrue \global\ll*rptrue                       %       14
            \or \global\*u*alphatrue \global\ll*rptrue \global\ll*lptrue     %       15
            \or \global\ll*digtrue \global\*rsqbtrue                         %       16
            \or \global\ll*digtrue \global\*rsqbtrue \global\*lsqbtrue       %       17
            \or \global\l*alphatrue \global\*rsqbtrue                        %       18
            \or \global\l*alphatrue \global\*rsqbtrue \global\*lsqbtrue      %       19
            \or \global\*l*romantrue \global\*rsqbtrue                       %       20
            \or \global\*l*romantrue \global\*rsqbtrue \global\*lsqbtrue     %       21
            \or \global\*u*romantrue \global\*rsqbtrue                       %       22
            \or \global\*u*romantrue \global\*rsqbtrue \global\*lsqbtrue     %       23
            \or \global\*u*alphatrue \global\*rsqbtrue                       %       24
            \or \global\*u*alphatrue \global\*rsqbtrue \global\*lsqbtrue     %       25
            \fi}
 
%
\def\ll*ini#1{\*start*bulfalse
               \ifnum #1 < 7 \N = #1
                             \advance \N by -1
                             \loop \ifnum \N < 7         % Loop max of 7 times
                                          \E = \N
                                          \advance \E by \ll*cs
                                          \global\count\E = 0
                                          \advance \N by 1
                                          \repeat
                             \fi}           % else don't initialize when \lil7
%
\def\ll*p#1{%
           \E = #1
           \advance \E by \ll*cs
           \advance \E by -1                 % \E is the listlevel value counter
           \F = \E
           \advance \F by 7
           \global\advance \count\E by 1     % Increment the list level counter
     %
     % If this level is same as previous level, no need to re-evaluate
     % the style to be used.
     %
           \ifnum \ll*lc = #1
                  \else \e*s
                        \global\ll*lc = #1
                  \fi
     %
     % Print the prefix punctuation
     %
           \ifll*lp  (\unskip                    % Styles 3, 6, 9, 12, 15
              \else \if*lsqb [\unskip            % Styles 17, 19, 21, 23, 25
                   \fi\fi
     %
     % Print the listlevel value, i.e. "1", "a", "A", "I", or "i".
     %
           \ifll*dig                            % Then its a style using digits
                          \number\count\E       % Print the number
                          \unskip               % To get rid of any following extra spaces
                  \else \ifl*alpha              % Then its a style with lower case letters
                          \a*c{\count\E}        % Print the lower case letters
                          \unskip               % To get rid of any following extra spaces
                  \else \if*u*alpha             % Then its a style with upper case letters
                          \a*c{\count\E}        % Print uppercase alpha
                          \unskip               % To get rid of any following extra spaces
                  \else \if*l*roman             % Then its a style with lower case roman numerals
                          \romannumeral\count\E % Print the lower case roman numeral
                          \unskip               % To get rid of any following extra spaces
                  \else \if*u*roman             % Print upper case roman numeral
                          \uppercase\expandafter{\romannumeral\count\E}
                          \unskip               % To get rid of any following extra spaces
                  \else \message{<TEXT1> Error! Something is awry in the listlevel style. Call a consultant.}
                  \fi\fi\fi\fi\fi
     %
     % Print the suffix punctuation
     %
           \ifll*per .\unskip             % Styles 1, 4, 7, 10, 13
              \else \ifll*rp )\unskip     % Styles 2, 3, 5, 6, 8, 9, 11, 12, 14, 15
                 \else \if*rsqb ]\unskip  % Styles 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
           \fi\fi\fi
}
     %
     % This macro will convert an integer into a letter. In Appendix F of the
     % TeXbook you will see that octal character '141 is the small letter "a".
     % Octal 141=Decimal 97, Therefore, add 96 to value of listlevel counter.
     % For example, 1="a", 2="b", etc. The macro will also change 27="aa", 28="ab", etc.
     %
\def\a*c#1{%
  \ifnum #1 < 27 \G = #1%                 % Then its a single letter a-z
          \advance \G by 96%              % See the font table in App. F
          \ifl*alpha%                     % Then its a lower case style
                  \char\G%                % Print the character a-z
            \else \advance \G by -32%
                  \char\G%                % Print the character A-Z
            \fi%
    \else \G = #1%                        % else its "AA" or greater
          \divide \G by 26%               % This holds the first character
          \Q = #1%                        % Get ready to compute second letter
          \R = #1%
          \divide \R by 26%
          \multiply \R by 26%
          \ifnum #1 = \R%
                   \advance \G by -1%
                   \Q = 26%
             \else \advance \Q by -\R%
                   \fi%
          \a*c{\G}%                       % Get the first character a-z
          \unskip%
          \a*c{\Q}%                       % Get the second letter
          \fi}                            % End of \a*c
%
%  for setting the list level number other than sequential
%
\def\slln#1#2{{\E=#1
	     \advance \E by -1
	     \advance \E by \ll*cs
	     \global\count\E = #2}} 
\let\setlistlevelnumber=\slln
%
%  Bullets
%
\newif\if*start*bul
\newdimen\*bul*dim
\mathchardef\*bullet="220F
\def\bullet{% bullet defined for both math and text modes, rev. 6/25/87
    \ifmmode \*bullet                % math mode bullet
       \else                         % text or list bullet
          \ifll*nil                  % no list in progress, text bullet
             \leftskip = 0pt
             {\if*msp{*}\else\sy\char"0F\fi}
             \else                   % list in progress, list bullet
                \the\toks198
                \if*start*bul \lin{\*bul*dim}
                   \else \*bul*dim = \leftskip
                      \*start*bultrue \fi  % end starting bullet
                \par\noindent
                \txt*in{{\if*msp{*}\else\sy\char"0F\fi}}
             \fi % end list in progress check
       \fi % end math mode bullet check
}% end bullet
\let \bul=\bullet
%
%
%    The \gutter macro is actually used for several macros, \bul, \lil, etc.
%
\newdimen\*gut
\def\gutter#1{\*gut=#1}
\message{end of enumeration macros, }
\message{TOC, }
%
%    Macros for doing Table of Contents, Heads, Subheads, Tables, and Figures
%
\newtoks\*TCt   \*TCt={\cl{\twelvept\bd Table of Contents}\vs{1\bl}}
\newtoks\*ptf   \*ptf={\vs{1\bl}\cl{Part \partnumber}\cl{\parttitle}%
                        \vs{1\bl}\nin Part \partnumber \leader \pagenumber}
\newtoks\*ctf    \*ctf={\hangingchapternumber \chaptertitle \leader \pagenumber}
\newtoks\*atf    \*atf={\hangingappendixnumber \appendixtitle \leader \pagenumber}
\newtoks\*prtf   \*prtf={\nin \prefacetitle \leader \pagenumber}
\newtoks\*satf   \*satf={\leftindent{.5in}\nin \subheadatitle \leader \pagenumber}
\newtoks\*sbtf   \*sbtf={\leftindent{1in}\nin \subheadbtitle \leader \pagenumber}
\newtoks\*sctf   \*sctf={\leftindent{1.5in}\nin \subheadctitle \leader \pagenumber}
\newtoks\*sdtf   \*sdtf={\leftindent{2in}\nin \subheaddtitle \leader \pagenumber}
\newtoks\*btf    \*btf={\nin\bibtitle \leader \pagenumber}
\newtoks\*ftf    \*ftf={\hangingnumber{\figurenumber.} \figuretitle \leader \pagenumber}
\newtoks\*ftt    \*ftt={\newpage\cl{\twelvept\bd List of Figures}\line{Figure\hfill Page}}
\newtoks\*ttf    \*ttf={\hangingnumber{\tablenumber.}  \tabletitle\leader \pagenumber}
\newtoks\*ttt    \*ttt={\newpage\cl{\twelvept\bd List of Tables}\line{Table\hfill Page}}
\newtoks\*figt   \*figt={\bqb\tenpt\bd\hp Figure \figurenumber. \rm\figuretitle \bqe}
\newtoks\*tabt   \*tabt={\vs{\bl}\cl{\twelvept\bd Table \tablenumber}%
                         \cl{\twelvept\tabletitle}\vs{\bl}}
\newtoks\*partt  \*partt={\dumpinsertseject\titlepage
                          \hrule height 0pt depth 0pt\vfil
                          \cl{\twelvept\bd Part \partnumber}
                          \cl{\twelvept\bd\parttitle}
                          \vs{.5\tp*sk}
                          \np
                          \scn{0}\ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
                          \sfn{0}\stn{0}\sfnn{0}\senn{0}
                          }%
\newtoks\*chapt  \*chapt={\dumpinsertseject
                          \cl{\twelvept\bd Chapter \chapternumber}%
                          \cl{\twelvept\bd\chaptertitle}
                          \vs{1\bl}
                          \ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
                          }
\newtoks\*appt   \*appt={\dumpinsertseject %
                         \cl{\twelvept\bd Appendix \appendixnumber}
                         \cl{\twelvept\bd\appendixtitle}
                         \vs{1\bl}
                         \scn{0}\ssan{0}\ssbn{0}\sscn{0}
                         \ssdn{0}\sfn{0}\stn{0}
                         }
\newtoks\*pret   \*pret={\dumpinsertseject %
                         \cl{\twelvept\bd\prefacetitle}
                         \vs{1\bl}
                         \ssan{0}\ssbn{0}\sscn{0}\ssdn{0}
                         }%
\newtoks\*subat  \*subat={\removelastskip\goodbreak
                          \vs{2\bl}
                          \nin\twelvept\bd\subheadatitle\par\nobreak
                          \vs{1\bl}\nobreak
                          \ssbn{0}\sscn{0}\ssdn{0}
                          }
\newtoks\*subbt  \*subbt={\removelastskip\goodbreak
                          \vs{2\bl}
                          \nin\twelvept\it\subheadbtitle\par\nobreak
                          \vs{1\bl}\nobreak
                          \sscn{0}\ssdn{0}
                          }
\newtoks\*subct  \*subct={\removelastskip\goodbreak
                          \vs{2\bl}
                          \nin\twelvept\subheadctitle\par\nobreak
                          \vs{1\bl}\nobreak
                          \ssdn{0}
                          }
\newtoks\*subdt   \*subdt={\goodbreak\twelvept\it\subheaddtitle.}
%
\newif\if*cont*chap   \*cont*chapfalse
\newif\if*TC*fig     \*TC*figtrue
\newif\if*TC*tab     \*TC*tabtrue
\newif\if*TC*prt     \*TC*prttrue
\newif\if*TC*chp     \*TC*chptrue
\newif\if*TC*app     \*TC*apptrue
\newif\if*TC*pre     \*TC*pretrue
\newif\if*TC*sha     \*TC*shatrue
\newif\if*TC*shb     \*TC*shbtrue
\newif\if*TC*shc     \*TC*shcfalse
\newif\if*TC*shd     \*TC*shdfalse
\newif\if*TCaopen    \*TCaopenfalse
\newif\if*TCbopen    \*TCbopenfalse
\newif\if*TCcopen    \*TCcopenfalse
%
\newdimen\*ch*hi     \*ch*hi=.25in
\newdimen\*ap*hi     \*ap*hi=.25in
\newdimen\fi*hi      \fi*hi=.25in
\newdimen\ta*hi      \ta*hi=.25in
%
\newcount\fi*n          \fi*n=0
\newcount\ta*n          \ta*n=0
\newcount\*pt*num       \*pt*num=0
\newcount\*pt*st        \*pt*st=1
\newcount\*ch*num       \*ch*num=0
\newcount\*ch*st        \*ch*st=1
\newcount\*ap*num       \*ap*num=0
\newcount\*ap*st        \*ap*st=2
\newcount\*sa*num       \*sa*num=0
\newcount\sa*st         \sa*st=1
\newcount\*sb*num       \*sb*num=0
\newcount\sb*st         \sb*st=1
\newcount\*sc*num       \*sc*num=0
\newcount\sc*st         \sc*st=1
\newcount\*sd*num       \*sd*num=0
\newcount\sd*st         \sd*st=1
%
\newwrite\TC*fa
\newwrite\TC*fb
\newwrite\TC*fc
%                        putincontents last modified 12/6/91
\def\notintoc#1{#1}
\newtoks\*toclbla
\newtoks\*toclblb
\newtoks\*toclblc
\if*PC
	\*toclbla={text1xx.tc1}
	\*toclblb={text1xx.tc2}
	\*toclblc={text1xx.tc3}
\else
	\*toclbla={text1xx.toc1}
	\*toclblb={text1xx.toc2}
	\*toclblc={text1xx.toc3}
\fi

\long\def\putincontents#1#2{\begingroup\ifcase #1 % Putincontents markup
 	  \message{<TEXT1> Warning, request for Contents entry other than
                      1, 2, or 3. Contents 1 will be assumed.}
             \putincontents1{#2}
       \or \if*TCaopen      % Do nothing if open, else open it
              \else \immediate\openout\TC*fa=\the\*toclbla
                    \immediate\write\TC*fa{\the\*TCt}%
                    \global\*TCaopentrue
              \fi
	   \*defnoexpands
           \edef\T{\leftskip=0pt #2}%
           \edef\next{\write\TC*fa{\T\par}}%
           \next\relax
       \or \if*TCbopen      % Do nothing if open, else open it
              \else \immediate\openout\TC*fb=\the\*toclblb
                    \immediate\write\TC*fb{\the\*ftt}%
                    \global\*TCbopentrue\fi 
	   \*defnoexpands
           \edef\T{#2}%
           \edef\next{\write\TC*fb{\T\par}}%
           \next\relax
       \or \if*TCcopen      % Do nothing if open, else open it
              \else \immediate\openout\TC*fc=\the\*toclblc
                    \immediate\write\TC*fc{\the\*ttt}%
                    \global\*TCcopentrue\fi
	   \*defnoexpands
           \edef\T{#2}%
           \edef\next{\write\TC*fc{\T\par}}%
           \next\relax
       \else \message{<TEXT1> Warning, request for Contents entry other than
                      1, 2, or 3. Contents 1 will be assumed.}
             \putincontents1{#2}
       \fi\endgroup}% End putincontents markup
\let\pic=\putincontents

\def\*defnoexpands{%
           \def\AA{\noexpand\noexpand\noexpand\noexpand\noexpand%
		\noexpand\noexpand\AA}%
           \def\aa{\noexpand\noexpand\noexpand\noexpand\noexpand%
		\noexpand\noexpand\aa}%
           \def\appendixnumber{\noexpand\noexpand\noexpand\san{\the\*ap*num}%
                               \noexpand\noexpand\noexpand\appendixnumber}%
           \def\autoendnote##1{}%
           \let\aen=\autoendnote%
           \def\autofootnote##1{}%
           \let\afn=\autofootnote%
           \def\bullet{\noexpand\noexpand\noexpand\bullet}%
           \let\bul=\bullet%
           \def\centerline##1{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\centerline{##1}}%
           \let\cl=\centerline%
           \def\chapternumber{\noexpand\noexpand\noexpand\scn{\the\*ch*num}%
                              \noexpand\noexpand\noexpand\chapternumber}%
           \def\dag{\noexpand\noexpand\noexpand\noexpand\noexpand%
		\noexpand\noexpand\dag}%
           \def\ddag{\noexpand\noexpand\noexpand\noexpand\noexpand%
		\noexpand\noexpand\ddag}%
           \def\eightteenpt{\noexpand\noexpand\noexpand\eightteenpt}%
           \def\fourteenpt{\noexpand\noexpand\noexpand\fourteenpt}%
           \def\hangingappendixnumber{\noexpand\noexpand\noexpand%
			       \hangingappendixnumber{\the\*ap*num}}%
           \def\hangingchapternumber{\noexpand\noexpand\noexpand%
			       \hangingchapternumber{\the\*ch*num}}%
           \def\hangingindent##1{\noexpand\noexpand\noexpand%
				\hangingindent{##1}}%
           \let\hin=\hangingparagraph%
           \def\hangingnumber##1{\noexpand\noexpand\noexpand\HFN{##1}}%
           \def\hangingparagraph{\noexpand\noexpand\noexpand\hangingparagraph}%
           \let\hp=\hangingparagraph%
           \def\justify{\noexpand\noexpand\noexpand\noexpand\noexpand\justify}%
           \let\ju=\justify%
           \def\leavevmode{\noexpand\noexpand\noexpand\leavevmode}%
           \def\leftindent##1{\leftskip=##1}%
           \let\lin=\leftindent%
           \let\linebreak=\space%
           \let\lbr=\space%
           \def\neg{\noexpand\noexpand\noexpand\noexpand\noexpand\neg}%
           \def\notintoc##1{}%
           \def\pagenumber{\noexpand\pagenumber}%
           \def\pn{\noexpand\pagenumber}%
           \def\par{\endgraf}%
           \def\paragraph{\endgraf}%
           \def\partnumber{\noexpand\noexpand\noexpand\sptn{\the\*pt*num}%
                           \noexpand\noexpand\noexpand\partnumber}%
           \def\subheadanumber{\noexpand\noexpand\noexpand\ssan{\the\*sa*num}%
                               \noexpand\noexpand\noexpand\subheadanumber}%
           \def\subheadbnumber{\noexpand\noexpand\noexpand\ssbn{\the\*sb*num}%
                               \noexpand\noexpand\noexpand\subheadbnumber}%
           \def\subheadcnumber{\noexpand\noexpand\noexpand\sscn{\the\*sc*num}%
                               \noexpand\noexpand\noexpand\subheadcnumber}%
           \def\subheaddnumber{\noexpand\noexpand\noexpand\ssdn{\the\*sd*num}%
                               \noexpand\noexpand\noexpand\subheaddnumber}%
           \def\tenpt{\noexpand\noexpand\noexpand\tenpt}%
           \def\tilde{\noexpand\noexpand\noexpand\noexpand\noexpand\tilde}%
           \def\toclinebreak{\noexpand\noexpand\noexpand\toclinebreak}%
           \def\toclbr{\noexpand\noexpand\noexpand\toclinebreak}%
           \def\twelvept{\noexpand\noexpand\noexpand\twelvept}%
           \def\underscore##1{\noexpand\noexpand\noexpand\noexpand\noexpand%
               \noexpand\noexpand\underscore{##1}}%
           \let\us=\underscore%
           \def\\{\noexpand\noexpand\noexpand\noexpand\noexpand%
		\noexpand\noexpand\\}%
           \def\{{\noexpand\noexpand\noexpand\noexpand\noexpand%
		\noexpand\noexpand\{}%
           \def\}{\noexpand\noexpand\noexpand\noexpand\noexpand%
		\noexpand\noexpand\}}%
           \def\_{\noexpand\noexpand\noexpand\noexpand\noexpand%
		\noexpand\noexpand\_}%
}
%
\def\tableofcontentsformat#1{{%
      \def\continuechapter##1{\global\*cont*chapfalse
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U \global\*cont*chaptrue
                 \else \ifx \T\V   % Not continue chapter
                       \else \message{<TEXT1> Warning, argument to
                                      continuechapter is not "yes" or "no".
                                      "no" will be assumed}
                 \fi\fi}%
      \def\toctitle##1{\global\*TCt={##1}}%
      \def\parttocformat##1{\global\*ptf={##1}}%
      \def\chaptertocformat##1{\global\*ctf={##1}}%
      \def\hangingchapterindent##1{\global\*ch*hi=##1}%
      \def\appendixtocformat##1{\global\*atf={##1}}%
      \def\hangingappendixindent##1{\global\*ap*hi=##1}%
      \def\prefacetocformat##1{\global\*prtf={##1}}%
      \def\subheadatocformat##1{\global\*satf={##1}}%
      \def\subheadbtocformat##1{\global\*sbtf={##1}}%
      \def\subheadctocformat##1{\global\*sctf={##1}}%
      \def\subheaddtocformat##1{\global\*sdtf={##1}}%
      \def\bibliographytocformat##1{\global\*btf={##1}}%
      \def\figuretoctitle##1{\global\*ftt={##1}}%
      \def\figuretocformat##1{\global\*ftf={##1}}%
      \def\hangingfigureindent##1{\global\fi*hi=##1}%
      \def\tabletoctitle##1{\global\*ttt={##1}}%
      \def\tabletocformat##1{\global\*ttf={##1}}%
      \def\hangingtableindent##1{\global\ta*hi=##1}%
   #1}}
\let\tocf=\tableofcontentsformat
%          		tableofcontents last modified on 12/6/91
\def\tableofcontents#1{%
      \edef\T{}\edef\U{#1}\ifx\T\U\E=-3\else\E=#1\fi
      \dumpinsertseject
      \setpagenumber{\E}
      \immediate\closeout\TC*fa
      \begingroup
      \def\noexpand{}
      \def\centerline##1{\par % Begin centerline markup
         \bgroup
         \parindent=0pt \relax           % zero indent
         \parfillskip=0pt plus1fil \relax
         \everypar{\null\hskip0pt plus1fil\relax} % add infinite glue
         \def\linebreak{\hskip0pt plus1fil\relax\break
                        \null\hskip0pt plus1fil\relax}%
         \let\toclinebreak=\linebreak  % linebreak is a space in text1xx.
         \let\toclbr=\linebreak        % toc1, toclbr available in toc
         \justify
         \setbox\A=\vbox{##1\par % figure skip for multiple centerline
                         \global\C=\baselineskip
                         \setbox0=\hbox{(}
                         \global\advance\C by-\ht0}% end vbox
      \line{\hss\vbox{\vskip\C##1\par}\hss} %
         \egroup
      }% End centerline markup
      \let\cl=\centerline
      \justify
      \parfillskip=0pt
      \rightskip=0pt plus 5em
      \input \the\*toclbla
      \endgraf
      \leftskip=0pt
      \if*TCbopen     % True only if figures were used.
                   \immediate\closeout\TC*fb
                   \input \the\*toclblb
                   \fi
      \if*TCcopen     % True only if tables were used.
                   \immediate\closeout\TC*fc
                   \input \the\*toclblc
                   \fi
      \endgroup}
\let\toc=\tableofcontents
%
\message{part, }
%
\long\def\partformat#1{{%
      \def\numberingstyle##1{\global\*pt*st=1
              \edef\T{##1}%
              \edef\U{1}%
              \edef\V{A}%
              \edef\W{I}%
              \ifx \T\U     % then style=1, the default
                   \else \ifx \T\V \global\*pt*st=2
                         \else \ifx \T\W \global\*pt*st=3
                               \else \message{<TEXT1> Warning, numbering style
                                              in the partformat command is
                                              invalid. Style 1 will be assumed.}
                   \fi\fi\fi}%
      \long\def\titleformat##1{\global\*partt={##1}}%
      \def\incontents##1{\global\*TC*prttrue
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U              % Already true
                 \else \ifx \T\V \global\*TC*prtfalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in partformat is not "yes" or "no".
                                      "yes" will be assumed.}
                 \fi\fi}%
    #1}}
\let\paf=\partformat
%
\def\parttitle{}
\def\part#1{\par % Part revised 11/5/86
    \global\def\parttitle{#1}%
    \global\advance \*pt*num by 1
    \bgroup
       \let\toclinebreak=\space      % prevent linebreak in title
       \let\toclbr=\space            % break in contents only
       \the\*partt                   % This prints the title in the text
    \egroup
    \par
    \D=\lastskip
    \removelastskip
    \if*TC*prt \putincontents1{\the\*ptf}\fi
    \ignorespaces
    \vs{\D}
}% END
%
\def\partnumber{{\ifcase \*pt*st
                    \or \the\*pt*num
                    \or \l*alphafalse
                        \a*c{\*pt*num}
                    \or \uppercase\expandafter{\romannumeral\the\*pt*num}
                    \fi}}
%
\def\setpartnumber#1{\global\*pt*num=#1}%
% \spn is setpagenumber
\let\sptn=\setpartnumber
%
\message{chapter, }
%
\long\def\chapterformat#1{{%
      \def\numberingstyle##1{\global\*ch*st=1
              \edef\T{##1}%
              \edef\U{1}%
              \edef\V{A}%
              \edef\W{I}%
              \ifx \T\U     % then style=1, the default
                   \else \ifx \T\V \global\*ch*st=2
                         \else \ifx \T\W \global\*ch*st=3
                               \else \message{<TEXT1> Warning, numbering style
                                              in the chapterformat command is
                                              invalid. Style 1 will be assumed.}
                   \fi\fi\fi}%
      \long\def\titleformat##1{\global\*chapt={##1}}%
      \def\incontents##1{\global\*TC*chptrue%
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U              % Already true
                 \else \ifx \T\V \global\*TC*chpfalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in chapterformat is not "yes" or "no".
                                      "yes" will be assumed.}
                 \fi\fi}%
    #1}}
\let\chf=\chapterformat
%
\def\chaptertitle{}
\def\chapter#1{\par 
    \global\def\chaptertitle{#1}%
    \global\advance \*ch*num by 1
    \bgroup
       \let\toclinebreak=\space
       \let\toclbr=\space
       \the\*chapt                   % prints the title in the text
    \egroup
    \D=\lastskip
    \removelastskip
    \if*TC*chp \putincontents1{\the\*ctf}\fi
    \ignorespaces
    \vs{\D}
}% END chapter markup definition
%
\def\chapternumber{{\ifcase \*ch*st
                       \or \the\*ch*num
                       \or \l*alphafalse
                           \a*c{\*ch*num}
                       \or \uppercase\expandafter{\romannumeral\the\*ch*num}
                       \fi
                    \removelastskip}}
\let\chap=\chapter
%
\def\hangingchapternumber#1{\*ch*num=#1\laf{\labelwidth{\*ch*hi}}
    \label{\hskip\*ch*hi\llap{\chapternumber.}}}
%
\def\setchapternumber#1{\global\*ch*num=#1}%
\let\scn=\setchapternumber
%
\message{appendix,}
%
\long\def\appendixformat#1{{%
      \def\numberingstyle##1{\global\*ap*st=2
              \edef\T{##1}%
              \edef\U{1}%
              \edef\V{A}%
              \edef\W{I}%
              \ifx \T\U \global\*ap*st=1
                   \else \ifx \T\V \global\*ap*st=2
                         \else \ifx \T\W \global\*ap*st=3
                               \else \message{<TEXT1> Warning, numbering style
                                              in the appendixformat command is
                                              invalid. Style 2 will be assumed.}
                   \fi\fi\fi}%
      \long\def\titleformat##1{\global\*appt={##1}}%
      \def\incontents##1{\global\*TC*apptrue
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U              % Already true
                 \else \ifx \T\V \global\*TC*appfalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in appendixformat is not "yes" or "no".
                                      "yes" will be assumed.}
                 \fi\fi}%
    #1}}
\let\apf=\appendixformat
%
\def\appendixtitle{}
\def\appendix#1{% Appendix revised 11/3/86 (added toclinebreak)
    \global\def\appendixtitle{#1}%
    \global\advance \*ap*num by 1
    \par
    \bgroup
       \let\toclinebreak=\space
       \let\toclbr=\space
       \the\*appt                    % prints the appendix title
    \egroup
    \D=\lastskip
    \removelastskip
    \if*TC*app \putincontents1{\the\*atf}\fi
    \ignorespaces
    \vs{\D}
}% END appendix markup definition
%
\def\appendixnumber{{\ifcase \*ap*st
                       \or \the\*ap*num
                       \or \l*alphafalse
                           \a*c{\*ap*num}
                       \or \uppercase\expandafter{\romannumeral\the\*ap*num}
                       \fi
                     \removelastskip}}
\let\app=\appendix
%
\def\hangingappendixnumber#1{\*ap*num=#1\laf{\labelwidth{\*ap*hi}}
    \label{\hskip\*ap*hi\llap{\appendixnumber.}}}
%
\def\setappendixnumber#1{\global\*ap*num=#1}%
\let\san=\setappendixnumber
%
\message{preface,}
%
\long\def\prefaceformat#1{{%
      \long\def\titleformat##1{\global\*pret={##1}}%
      \def\incontents##1{\global\*TC*pretrue
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U              % Already true
                 \else \ifx \T\V \global\*TC*prefalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in prefaceformat is not "yes" or "no".
                                      "yes" will be assumed.}
                 \fi\fi}%
    #1}}
\let\prf=\prefaceformat
%
\def\prefacetitle{}
\def\preface#1{% Preface revised 11/3/86 (added toclinebreak)
    \global\def\prefacetitle{#1}%
    \par
    \bgroup
       \let\toclinebreak=\space
       \let\toclbr=\space
       \the\*pret                    % prints the title in the text
    \egroup
    \D=\lastskip
    \removelastskip
    \if*TC*pre \putincontents1{\the\*prtf}\fi
    \ignorespaces
    \vs{\D}
}% END preface markup definition
\let\pre=\preface
%
\message{subheads,}
%
\long\def\subheadaformat#1{{%
      \def\numberingstyle##1{\global\sa*st=1
              \edef\T{##1}%
              \edef\U{1}%
              \edef\V{A}%
              \edef\W{I}%
              \ifx \T\U     % then style=1, the default
                   \else \ifx \T\V \global\sa*st=2
                         \else \ifx \T\W \global\sa*st=3
                               \else \message{<TEXT1> Warning, numbering style
                                              in the subheadaformat command is
                                              invalid. Style 1 will be assumed.}
                   \fi\fi\fi}%
      \long\def\titleformat##1{\global\*subat={##1}}%
      \def\incontents##1{\global\*TC*shatrue
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U              % Already true
                 \else \ifx \T\V \global\*TC*shafalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in subheadaformat is not "yes" or "no".
                                      "yes" will be assumed.}
                 \fi\fi}%
    #1}}
\let\shaf=\subheadaformat
%
\def\subheadatitle{}
\def\subheada#1{% 
    \global\def\subheadatitle{#1}%
    \global\advance \*sa*num by 1
    \par
    \bgroup
       \let\toclinebreak=\space
       \let\toclbr=\space
       \the\*subat                    %  prints the title in the text
    \egroup
    \ifvmode \D=\lastskip \removelastskip
	\else \D=0pt\fi
    \if*TC*sha \putincontents1{\the\*satf}\fi
    \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi%
}% END subheada markup definition
%
\def\subheadanumber{{\ifcase \sa*st
                       \or \the\*sa*num
                       \or \l*alphafalse
                           \a*c{\*sa*num}
                       \or \uppercase\expandafter{\romannumeral\the\*sa*num}
                       \fi
                     \removelastskip}}
\let\sha=\subheada
%
\def\setsubheadanumber#1{\global\*sa*num=#1}%
\let\ssan=\setsubheadanumber
%
\long\def\subheadbformat#1{{%
      \def\numberingstyle##1{\global\sb*st=1
              \edef\T{##1}%
              \edef\U{1}%
              \edef\V{A}%
              \edef\W{I}%
              \ifx \T\U     % then style=1, the default
                   \else \ifx \T\V \global\sb*st=2
                         \else \ifx \T\W \global\sb*st=3
                               \else \message{<TEXT1> Warning, numbering style
                                              in the subheadbformat command is
                                              invalid. Style 1 will be assumed.}
                   \fi\fi\fi}%
      \long\def\titleformat##1{\global\*subbt={##1}}%
      \def\incontents##1{\global\*TC*shbtrue
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U              % Already true
                 \else \ifx \T\V \global\*TC*shbfalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in subheadbformat is not "yes" or "no".
                                      "yes" will be assumed.}
                 \fi\fi}%
    #1}}
\let\shbf=\subheadbformat
%
\def\subheadbtitle{}
\def\subheadb#1{% 
    \global\def\subheadbtitle{#1}%
    \global\advance \*sb*num by 1
    \par
    \bgroup
       \let\toclinebreak=\space
       \let\toclbr=\space
       \the\*subbt                   % This  prints the title in the text
    \egroup
    \ifvmode \D=\lastskip \removelastskip
	\else \D=0pt\fi
    \if*TC*shb \putincontents1{\the\*sbtf}\fi
    \ignorespaces
    \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi
}% END subheadb markup definition
%
\def\subheadbnumber{{\ifcase \sb*st
                       \or \the\*sb*num
                       \or \l*alphafalse
                           \a*c{\*sb*num}
                       \or \uppercase\expandafter{\romannumeral\the\*sb*num}
                       \fi
                     \removelastskip}}
\let\shb=\subheadb
%
\def\setsubheadbnumber#1{\global\*sb*num=#1}%
\let\ssbn=\setsubheadbnumber
%
\long\def\subheadcformat#1{{%
      \def\numberingstyle##1{\global\sc*st=1
              \edef\T{##1}%
              \edef\U{1}%
              \edef\V{A}%
              \edef\W{I}%
              \ifx \T\U     % then style=1, the default
                   \else \ifx \T\V \global\sc*st=2
                         \else \ifx \T\W \global\sc*st=3
                               \else \message{<TEXT1> Warning, numbering style
                                              in the subheadcformat command is
                                              invalid. Style 1 will be assumed.}
                   \fi\fi\fi}%
      \long\def\titleformat##1{\global\*subct={##1}}
      \def\incontents##1{\global\*TC*shcfalse
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U \global\*TC*shctrue
                 \else \ifx \T\V \global\*TC*shcfalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in subheadcformat is not "yes" or "no".
                                      "no" will be assumed.}
                 \fi\fi}%
    #1}}
\let\shcf=\subheadcformat
%
\def\subheadctitle{}
\def\subheadc#1{% 
    \global\def\subheadctitle{#1}%
    \global\advance \*sc*num by 1
    \par
    \bgroup
       \let\toclinebreak=\space
       \let\toclbr=\space
      \the\*subct                    % prints the title in the text
    \egroup
    \ifvmode \D=\lastskip \removelastskip
	\else \D=0pt\fi
    \if*TC*shc \putincontents1{\the\*sctf}\fi
    \ignorespaces
    \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi
}% END subheadc markup
%
\def\subheadcnumber{{\ifcase \sc*st
                       \or \the\*sc*num
                       \or \l*alphafalse
                           \a*c{\*sc*num}
                       \or \uppercase\expandafter{\romannumeral\the\*sc*num}
                       \fi
                     \removelastskip}}
\let\shc=\subheadc
%
\def\setsubheadcnumber#1{\global\*sc*num=#1}%
\let\sscn=\setsubheadcnumber
%
\long\def\subheaddformat#1{{%
      \def\numberingstyle##1{\global\sd*st=1
              \edef\T{##1}%
              \edef\U{1}%
              \edef\V{A}%
              \edef\W{I}%
              \ifx \T\U     % then style=1, the default
                   \else \ifx \T\V \global\sd*st=2
                         \else \ifx \T\W \global\sd*st=3
                               \else \message{<TEXT1> Warning, numbering style
                                              in the subheaddformat command is
                                              invalid. Style 1 will be assumed.}
                   \fi\fi\fi}%
      \long\def\titleformat##1{\global\*subdt={##1}}%
      \def\incontents##1{\global\*TC*shdfalse
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U \global\*TC*shdtrue
                 \else \ifx \T\V \global\*TC*shdfalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in subheaddformat is not "yes" or "no".
                                      "no" will be assumed.}
                 \fi\fi}%
    #1}}
\let\shdf=\subheaddformat
%
\def\subheaddtitle{}
\def\subheadd#1{% 
    \global\def\subheaddtitle{#1}%
    \global\advance \*sd*num by 1
    \par
    \bgroup
       \let\toclinebreak=\space
       \let\toclbr=\space
       \the\*subdt                   % This  prints the title in the text
    \egroup
    \ifvmode \D=\lastskip \removelastskip
	\else \D=0pt\fi
    \if*TC*shd \putincontents1{\the\*sdtf}\fi
    \ignorespaces
    \ifdim\D>0pt\vs{\D}\else\ignorespaces\fi
}% END subheadd markup definition
%
\def\subheaddnumber{{\ifcase \sd*st
                       \or \the\*sd*num
                       \or \l*alphafalse
                           \a*c{\*sd*num}
                       \or \uppercase\expandafter{\romannumeral\the\*sd*num}
                       \fi
                     \removelastskip}}
\let\shd=\subheadd
%
\def\setsubheaddnumber#1{\global\*sd*num=#1}%
\let\ssdn=\setsubheaddnumber
%
\message{figures,}
%
%                       FIGURE MARKUP, bth 8/25/86
% Figure altered to allow alignments and other text markups within the
% arguments of figure and allow the immediate print feature (nofloat).
% Footnoting and multiple columns allowed in nofloat format only.
% Floating figures use top insert which uses a vbox that cancels any
% footnoting or multiple column setting. When \fullpage or \halfpage
% are used they must be the only argument in position one.
%
%
%              Figureformat revised on 4/5/88, drg
%
\catcode`* = 11
\catcode`@ = 11
\newif\if*fp \*fpfalse               % fullpage, used in figure
\newif\if*hp \*hpfalse               % halfpage, "            "
\newcount\fi*pos \fi*pos=1           % 1=\float,2=\nofloat,3=\midfloat,4=\keep
\newtoks\fi*sb     \fi*sb={1\bl}
\newtoks\fi*sa     \fi*sa={1\bl}
\def\figureformat#1{{%
    \def\skipbefore##1{\global\fi*sb={##1}}%
    \def\position{% printing position of figure, floating or nonfloating
        \def\nofloat{\global\fi*pos=2} % prints immediate
        \def\keep{\global\fi*pos=4}    % prints immediate, but on same pg
        \def\midfloat{\global\fi*pos=3}% uses midinsert
        \def\float{\global\fi*pos=1}}  % uses topinsert, the default
    \long\def\titleformat##1{\global\*figt={##1}}%
    \def\incontents##1{\global\*TC*figtrue
        \edef\T{##1}%
        \edef\U{yes}%
        \edef\V{no}%
        \ifx \T\U                % Already true
        \else \ifx \T\V \global\*TC*figfalse
              \else \message{<TEXT1> Warning, argument to
                     incontents in figureformat is not "yes" or "no".
                                      "yes" will be assumed.}
                 \fi\fi}%
    \def\skipafter##1{\global\fi*sa={##1}}%
    #1}}% End figure format markup
\let\fif=\figureformat
%
\newif\if*tpreset                    % titlepage reset for figure markup
\*tpresetfalse                       % no reset necessary
%
%    Figure revised on 10/4/89, drg
%
\def\figuretitle{}
\def\figure{\futurelet\next\*fga}
\def\*fga{\ifcat\bgroup\noexpand\next \let\next\*fgb
    \else\let\next\*fgc\fi \next}
\def\*fgb{\global\setbox\A=\vbox\bgroup\aftergroup\*fgd\let\next}
\def\*fgc#1{\*fge{#1}}
\def\*fgd{\*fge{\box\A}}
\long\def\*fge#1#2{\par % Begin figure markup definition
    \gdef\figuretitle{#2}%
    \global\advance \fi*n by 1       % figure number
    \begingroup                      % trap null setting for lets
    \let\fullpage=\null              % make fullpage non-printable
    \let\halfpage=\null              % make halfpage non-printable
    \let\toclinebreak=\space         % prevent break in title
    \let\toclbr=\space               % prevent break in title
%      for value of \fi*pos: 1=\float,2=\nofloat,3=\midfloat,4=\keep
    \ifcase\fi*pos
      \or                            % BEGIN TOPINSERT FIGURES
       \if*fp                        % full page topinsert figure
          \if*title\*tpresettrue\notitlepage\fi % account for titlepage
          \topinsert                 % floating figures are topinserts
          \if*TC*fig \putincontents2{\the\*ftf}\fi
          \vbox to\vsize{\vrule width0pt\relax
             \vfil#1\the\*figt}
          \endinsert
          \if*tpreset\titlepage\*tpresetfalse\fi % reset titlepage
       \else\if*hp                   % half page topinsert figure
               \topinsert
               \if*TC*fig \putincontents2{\the\*ftf}\fi
               \vbox to.5\vsize{\vrule width0pt \relax
                   \vskip\the\fi*sb\relax
                    \vfil#1\the\*figt
                    \vskip\the\fi*sa\relax}
               \endinsert
                   \else              % variable size floating figure
                      \topinsert
                      \if*TC*fig \putincontents2{\the\*ftf}\fi
                      \vskip\the\fi*sb\relax
                      #1\the\*figt
                      \vskip\the\fi*sa\relax
                      \endinsert
       \fi\fi                        % end float full and half page check
      \or                            % BEGIN IMMEDIATE FIGURES
       \if*fp                        % FULL PAGE IMMEDIATE FIGURE
          \np                        % figure won't fit on current page
          \if*TC*fig \putincontents2{\the\*ftf}\fi % send to contents
          \vrule width0pt \relax     % prevent fil from going away
          \vfill\the\*figt           % fill to figure title
          \break                     % insures break at end of insert
       \else
          \if*hp                     % HALF PAGE IMMEDIATE FIGURE
             \dimen\D=.5\vsize       % depth check for half page figure
             \advance\dimen\D by\topskip % add topskip to .5 vsize
             \ifdim\pagetotal>\dimen\D\np\fi % won't fit on current page
             \vbox to.49\vsize{\vrule width0pt % keep skip
                \vfil\relax          % skip all but title height to
                #1\the\*figt         % print figure title
                \vskip\the\fi*sa\relax} % print half page figure title
             \if*TC*fig \putincontents2{\the\*ftf}\fi
          \else                      % VARIABLE SIZE IMMEDIATE FIGURE
             \vrule width0pt \relax  % prevent skip from going away
             \vskip\the\fi*sb\relax
             #1\the\*figt
             \vskip\the\fi*sa\relax
             \if*TC*fig \putincontents2{\the\*ftf}\fi
             \fi% End of check at half page
       \fi          % End of check at full page
      \or                            % BEGIN MIDINSERT FIGURES
       \if*fp                        % full page midinsert figure
          \if*title\*tpresettrue\notitlepage\fi % account for titlepage
          \topinsert                 % use topinsert for full page only
          \if*TC*fig \putincontents2{\the\*ftf}\fi
          \vbox to\vsize{\vrule width0pt\relax
             \vfil#1\the\*figt}
          \endinsert
          \if*tpreset\titlepage\*tpresetfalse\fi % reset titlepage
       \else\if*hp                   % half page midinsert figure
               \midinsert
               \if*TC*fig \putincontents2{\the\*ftf}\fi
               \vbox to.5\vsize{\vrule width0pt \relax
                   \vskip\the\fi*sb\relax
                    \vfil#1\the\*figt
                    \vskip\the\fi*sa\relax}
               \endinsert
                   \else              % variable size floating figure
                      \midinsert
                      \if*TC*fig \putincontents2{\the\*ftf}\fi
                      \vskip\the\fi*sb\relax
                      #1\the\*figt
                      \vskip\the\fi*sa\relax
                      \endinsert
       \fi\fi                        % end float full and half page check
      \or                            % BEGIN IMMEDIATE KEEP FIGURES
       \if*fp                        % FULL PAGE IMMEDIATE FIGURE
          \np                        % figure won't fit on current page
          \if*TC*fig \putincontents2{\the\*ftf}\fi % send to contents
          \vrule width0pt \relax     % prevent fil from going away
          \vfill\the\*figt           % fill to figure title
          \break                     % insures break at end of insert
       \else
          \if*hp                     % HALF PAGE IMMEDIATE FIGURE
             \dimen\D=.5\vsize       % depth check for half page figure
             \advance\dimen\D by\topskip % add topskip to .5 vsize
             \ifdim\pagetotal>\dimen\D\np\fi % won't fit on current page
             \vbox to.49\vsize{\vrule width0pt % keep skip
                \vfil\relax          % skip all but title height to
                #1\the\*figt         % print figure title
                \vskip\the\fi*sa\relax} % print half page figure title
             \if*TC*fig \putincontents2{\the\*ftf}\fi
          \else                      % VARIABLE SIZE IMMEDIATE FIGURE
             \vrule width0pt \relax  % prevent skip from going away
             \vskip\the\fi*sb\relax
             \vbox{#1\the\*figt
             \vskip\the\fi*sa\relax}
             \if*TC*fig \putincontents2{\the\*ftf}\fi
             \fi% End of check at half page
       \fi          % End of check at full page
       \fi          % End of case statement
    \endgroup                        % end trap for null settings
    \global\*fpfalse                        % reset full page
    \global\*hpfalse                        % reset half page
}% End figure markup
\let\fig=\figure                     % abbreviation for figure markup
%
\def\fullpage{\global\*fptrue}%               used in figure markup
\def\halfpage{\global\*hptrue}%               used in figure markup
%
\def\figurenumber{\the\fi*n}%
%
\def\HFN#1{\laf{\labelwidth{\fi*hi}}\label{#1}}%
%
\def\setfigurenumber#1{\global\fi*n=#1}%
\let\sfn=\setfigurenumber
%
%      Redefined from PLAIN TEX
%
\def\topinsert{\@midfalse\p@gefalse\t*ptrue\@ins}
%
\def\midinsert{%                       redefine from plain tex
    \@midtrue
    \if*fix %                          don't change meaning in fixed mode
    \else %                         change midinsert to topinsert in flex mode
       \if*dbl\global\@midfalse\fi % leave old meaning in single column mode
       \if*tpl\global\@midfalse\fi %
    \fi\@ins} %
%
\def\@ins{\par\begingroup
    \if*fix                          % do nothing in fixed mode
    \else\ift*p\hsize=\*txtw\fi\fi   % ift*p hsize of insert set
    \setbox0=\vbox\bgroup}           % insert set to full page width
%
%        Tables
%
\def\tableformat#1{{%
      \long\def\titleformat##1{\global\*tabt={##1}}%
      \def\incontents##1{\global\*TC*tabtrue
            \edef\T{##1}%
            \edef\U{yes}%
            \edef\V{no}%
            \ifx \T\U                % Already true
                 \else \ifx \T\V \global\*TC*tabfalse
                       \else \message{<TEXT1> Warning, argument to
                                      incontents in tableformat is not "yes" or "no".
                                      "yes" will be assumed.}
                 \fi\fi}%
    #1}}
\let\taf=\tableformat
%
\def\tabletitle#1{{% Tabletitle revised 11/3/86 (added toclinebreak)
    \def\tabletitle{#1}%
    \global\advance \ta*n by 1
    \par
    \bgroup
       \let\toclinebreak=\space
       \let\toclbr=\space
       \the\*tabt                    % prints the title in the text
    \egroup
    \par
    \D=\lastskip
    \removelastskip
    \if*TC*tab \putincontents3{\the\*ttf}\fi
    \ignorespaces
    \vs{\D}
}}% END tabletitle markup definition
\let\tat=\tabletitle
%
\def\tablenumber{\the\ta*n}
\def\HTN#1{\laf{\labelwidth{\ta*hi}}\label{#1}}
%
\def\settablenumber#1{\global\ta*n=#1}%
\let\stn=\settablenumber
%
\message{8600 macros,}
%
%     Macros specific for the 8600 (JKW) revision 11/25/86
%
\newskip\evenmar
\newskip\oddmar
\evenmar=0pt
\oddmar=0pt
\def\evenpagemargin#1{{\setbox0=\hbox{\global\evenmar=#1 pt}}
                      \special{even_page_margin=\the\evenmar}}%
\let\epm=\evenpagemargin
\def\oddpagemargin#1{{\setbox0=\hbox{\global\oddmar=#1 pt}}
                     \special{odd_page_margin=\the\oddmar}}%
\let\opm=\oddpagemargin
\def\linenumberfont#1{\B={#1}
                      \special{line_number_font=\the\B}}%
\let\lnf=\linenumberfont
\def\poplevel#1{\B={#1}
                \special{pop_level=\the\B}}%
\let\ppl=\poplevel
\def\lineinterval#1{\B={#1}
                    \special{line_interval=\the\B}}%
\let\lint=\lineinterval
\def\numberinglines#1{\special{numbering_lines=#1}}%
\let\numl=\numberinglines
\def\countinglines#1{\special{counting_lines=#1}}%
\let\coul=\countinglines
\def\printingnumbers#1{\special{printing_numbers=#1}}%
\let\prin=\printingnumbers
\def\linefootnotereference{\special{line_footnote_reference}}%
\let\lfnr=\linefootnotereference
%
\message{ more misc,}
%
%     To be able to use PLAIN.TEX math code
%
\def\plaintexmathon{%
   \catcode`\$=3\relax
   \catcode`@=12\relax}
\let\dollarmathon=\plaintexmathon
\def\atmathon{%
   \catcode`\$=12\relax
   \catcode`@=3\par}
%
\message{multiple columns,}
%
\outer\def\bye{\par\onecolumn\vfill\supereject\end} % redefined from PLAIN.TEX
%                                      to close multiple column routines
%
%          MULTIPLE COLUMNS
%          Brian Harvey 1/20/85
%
%     Macros to be imbedded into TEXT1 to drive the multiple column
%     routines FLEXCOL and FIXCOL.
%
\newbox\*lftcol                      % left column box, fixed column mode, TeXbook name
\newbox\*midcol                      % center column, fixed column mode, TeXbook name
\newbox\*ppage                       % page accummulated before multicolumn, partialpage, flex
\newcount\*pcount                    % counter for empty page macro, keeps track of the
\*pcount=0                           % number of empty page calls
\newdimen\*bigch                     % Twc=2vise, Thc=3vsize---bigcolumnheight
\newdimen\*txtw                      % textwidth, stores full hsize for multicolumn mode
\let\galleywidth=\*txtw              % create galleywidth = text width
\newdimen\*txth                      % textheight, stores page height for multicolumn mode
\*txtw=\hsize                        % initialize full page text width for multicolumn mode
\*txth=\vsize                        % initialize full text height for multicolumn mode
\newif\ift*p                         % ift*p required to check for midinsert in flex mode
\newif\if*dbl                        % double column indicator
\*dblfalse                           % set double column format indicator false
\newif\if*tpl                        % triple column indicator
\*tplfalse                           % set triple column format indicator false
\newif\if*fix                        % format indicator (fixed if true, otherwise flexible)
\newif\if*norule                     % used to suppress rules in output routines
\newif\if*plain                      % check for plain.tex, plainoutput
\*plaintrue                          % set plain format indicator true
\newtoks\*twcw                       % width for twocolumns
\newtoks\*thcw                       % width for threecolumns
\newtoks\*twcgut                     % gutter for twocolumns
\newtoks\*thcgut                     % gutter for threecolumns
\newtoks\*clrw                       % rule width between multiple columns
\newtoks\*mskb                       % skip before multicolumn format
\newtoks\*mska                       % skip after multicolumn format
\*twcw={.48\*txtw}                   % initialize column and gutter default widths
\*thcw={.31\*txtw}
\*twcgut={.04\*txtw}
\*thcgut={.035\*txtw}
\*clrw={0.0pt}                       % initialize between column rule width
\*mskb={6pt plus 3pt minus 2pt}      % initialize skips before and after multiple columns:
\*mska={6pt plus 3pt minus 2pt}      % used in multiple column flex mode only
 
\def\fixedformat{\global\*fixtrue}   % calls fixed format file
\let\fixf=\fixedformat
\global\*fixfalse                    % sets up flex format
%
\def\multicolumnformat#1{% format macro for both fixed and flexible, texblock is multicol
    \def\twocolumnwidth##1{\global\*twcw={##1}}%
    \def\threecolumnwidth##1{\global\*thcw={##1}}%
    \def\twocolumngutter##1{\global\*twcgut={##1}}%
    \def\threecolumngutter##1{\global\*thcgut={##1}}%
    \def\columnrulewidth##1{\global\*clrw={##1}}%
    \def\skipbefore##1{\global\*mskb={##1}}% flex mode only
    \def\skipafter##1{\global\*mska={##1}}% flex mode only
    #1\*txtwck}% END, multicol format
\let\mcf=\multicolumnformat
%
%          COLUMN WIDTH CHECK FOR MULTIPLE COLUMN ROUTINES
%
\def\*txtwck{% check column width and gutters against hsize
    \dimen@=\the\*twcw
    \dimen@=2\dimen@
    \dimen1=\the\*twcgut
    \advance\dimen@ by\dimen1
    \ifdim\dimen@ > \*txtw         % if greater than current pagewidth
       \dimen1=\dimen@
       \advance\dimen1 by-\*txtw
       \advance\dimen@ by -\*txtw
       \ifdim\dimen@ > 1pt % only warn if over 1pt
          \immediate\write16{%
          <TEXT1> Warning! The column and gutter widths specified%
          for two columns are wider than the current pagewidth by%
          \the\dimen1 . }
          \fi
    \else\ifdim\dimen@ < \*txtw   % if less than current pagewidth
       \dimen1=\*txtw
       \advance\dimen1 by-\dimen@
       \advance\dimen@ by -\*txtw
       \multiply\dimen@ by -1
       \ifdim\dimen@ > 1pt  % Only warn if over 1pt difference
          \immediate\write16{%
          <TEXT1> Warning! The column and gutter widths specified%
          for two columns are shorter than the current pagewidth by%
          \the\dimen1 . }
          \fi
       \fi\fi
%
    \dimen@=\the\*thcw               % width of each column, three columns
    \dimen@=3\dimen@                 % three columns
    \dimen1=\the\*thcgut             % width of the gutters
    \dimen1=2\dimen1                 % two gutters in three columns
    \advance\dimen@ by\dimen1        % add columns and gutters together
    \ifdim\dimen@ > \*txtw           % if greater than current pagewidth
       \dimen1=\dimen@
       \advance\dimen1 by-\*txtw
       \advance\dimen@ by -\*txtw
       \ifdim\dimen@ > 1pt % only warn if over 1pt
          \immediate\write16{%
          <TEXT1> Warning! The column and gutter widths specified%
          for three columns are wider than the current pagewidth by%
          \the\dimen1 . }
          \fi
    \else\ifdim\dimen@ < \*txtw   % if less than current pagewidth
       \dimen1=\*txtw
       \advance\dimen1 by-\dimen@
       \advance\dimen@ by -\*txtw
       \multiply\dimen@ by -1
       \ifdim\dimen@ > 1pt  % Only warn if over 1pt difference
          \immediate\write16{%
          <TEXT1> Warning! The column and gutter widths specified%
          for three columns are shorter than the current pagewidth by%
          \the\dimen1 . }
          \fi
       \fi\fi
    } % END, widthcheck
%
\newif\if*start*mc  \*start*mcfalse
\def\twocolumns{% TWOCOLUMNS set-up macro
    \if*fix \input fixcol            % input fixed format file
       \immediate\write-16{% write to log file only
       <TEXT1> Fixed format for multiple columns in effect. }
       \gdef\twocolumns{\*fixtwc}%     redefine twocolumns, fixed mode
       \gdef\threecolumns{\*fixthc}%   redefine threecolumns, fixed mode
    \else \input flexcol             % input flex format file
       \immediate\write-16{%           write to log file only
       <TEXT1> Flexible format for multiple columns in effect. }
       \gdef\twocolumns{\*flextwc}%    redefine twocolumns, flex mode
       \gdef\threecolumns{\*flexthc}\fi% redefine threecolumns, flex mode
   \twocolumns
   \global\let\twc=\twocolumns       % to current meaning of twocolumns
   \global\let\thc=\threecolumns     % to current meaning of threecolumns
}% END twocolumns markup
%
\let\twc=\twocolumns
%
\def\threecolumns{% THREECOLUMNS set-up macro
    \*start*mctrue
    \if*fix \input fixcol            % input fixed format file
       \immediate\write-16{%           write to log file only
       <TEXT1> Fixed format for multiple columns active. }
       \gdef\twocolumns{\*fixtwc}%     redefine twocolumns, fixed mode
       \gdef\threecolumns{\*fixthc}%   redefine threecolumns, fixed mode
    \else \input flexcol             % input flex format file
       \immediate\write-16{%           write to log file only
        <TEXT1> Flexible format for multiple columns active. }
       \gdef\twocolumns{\*flextwc}%    redefine twocolumns, flex mode
       \gdef\threecolumns{\*flexthc}\fi% redefine threecolumns, flex mode
   \threecolumns
   \global\let\twc=\twocolumns       % to current meaning of twocolumns
   \global\let\thc=\threecolumns     % to current meaning of threecolumns
}% End threecolumns markup
%
\let\thc=\threecolumns
%
\let\onecolumn=\null                 % Empty definition for single format
\let\oc=\onecolumn
%
\let\newcolumn=\newpage
\let\nc=\newpage
\newif\if*nc    \*ncfalse            % true if \nc was used in mult cols
%
\global
\newhelp\balerrhelp{onecolumn The best approach to solve this problem
    is to shorten the text by a line. You could also add or delete a
    paragraph or change the column size. }%
%
\message{index macros,}
%
%                     Here are the macros necessary for doing an index
%
\newtoks\*ixarc     \*ixarc={case=no}                % IndeX A Respect Case
\newcount\*ixpn                                      % Page number type: 0,2,4,6, or 9
\newtoks\*ixast     \*ixast={style=3}                % IndeX A STyle
\newtoks\*ixald     \*ixald={leadering=no}           % IndeX A LeaDering
\newtoks\*ixabr     \*ixabr={\vs{1\bl}}              % IndeX A BReak
\newtoks\*ixasea    \*ixasea={1em}                   % IndeX A SubEntry 1
\newtoks\*ixaseb    \*ixaseb={2em}                   % IndeX A SubEntry   2
\newtoks\*ixaev     \*ixaev={\tenpt}          % Index A every time
\newtoks\*ixahp     \*ixahp={1.5em}                  % Index A hang indent
\newtoks\*ixbrc     \*ixbrc={case=no}                % IndeX B Respect Case
\newtoks\*ixbst     \*ixbst={style=3}                % IndeX B STyle
\newtoks\*ixbld     \*ixbld={leadering=no}           % IndeX B LeaDering
\newtoks\*ixbbr     \*ixbbr={\vs{1\bl}}              % IndeX B BReak
\newtoks\*ixbsea    \*ixbsea={1em}                   % IndeX B SubEntry 1
\newtoks\*ixbseb    \*ixbseb={2em}                   % IndeX B SubEntry 2
\newtoks\*ixbev     \*ixbev={\tenpt}          % Index B every time
\newtoks\*ixbhp     \*ixbhp={1.5em}                  % Index B hang indent
\newtoks\*ixcrc     \*ixcrc={case=no}                % IndeX C Respect Case
\newtoks\*ixcst     \*ixcst={style=3}                % IndeX C STyle
\newtoks\*ixcld     \*ixcld={leadering=no}           % IndeX C LeaDering
\newtoks\*ixcbr     \*ixcbr={\rule\vs{1\bl}}         % IndeX C BReak
\newtoks\*ixcsea    \*ixcsea={1em}                   % IndeX C SubEntry 1
\newtoks\*ixcseb    \*ixcseb={2em}                   % IndeX C SubEntry 2
\newtoks\*ixcev     \*ixcev={\tenpt}          % Index C every time
\newtoks\*ixchp     \*ixchp={1.5em}                  % Index C hang indent
%
\newcount\*ixlvl    \*ixlvl=1                        % IndeX LeVeL
%
\long\def\indexformat#1#2{{\ifnum #1>3 \message{<TEXT1> Error! Only three indices
                                        allowed. Level 1 will be used.}
                                \*ixlvl=1
                          \else \*ixlvl=#1\fi
   \def\respectcase##1{\edef\T{yes}
                       \edef\U{no}
                       \edef\V{##1}
                       \ifx \T\V \B={case=yes}
                            \else \B={case=no}
                                  \ifx \U\V             % Already set
                                       \else\message{<TEXT1> Error!! Case respect not "yes"
                                                      or "no" in indexformat. "no" will be used.}
                             \fi\fi
                       \ifcase \*ixlvl \or \global\*ixarc=\B
                                       \or \global\*ixbrc=\B
                                       \or \global\*ixcrc=\B
                             \fi}
   \def\style##1{\edef\T{paragraph}
                 \edef\U{dash}
                 \edef\V{indent}
                 \edef\W{##1}
                 \ifx \T\W \B={style=1}             % paragraph style
                      \else \ifx \U\W \B={style=2}  % dash style
                            \else \B={style=3}      % indented style
                                  \ifx \V\W                % Already done
                                       \else \message{<TEXT1> Error!! Style invalid in indexformat.
                                                      "indented" will be used.}
                      \fi\fi\fi
                       \ifcase \*ixlvl \or \global\*ixast=\B
                                       \or \global\*ixbst=\B
                                       \or \global\*ixcst=\B
                             \fi}
   \def\leadering##1{\edef\T{yes}
                     \edef\U{no}
                     \edef\V{##1}
                     \ifx\T\V \B={leadering=yes}
                        \else \B={leadering=no}
                              \ifx\U\V
                                      \else \message{<TEXT1> Error!! Only "yes" and "no" can
                                                    be used in the indexformat. "no" will be assumed.}
                              \fi\fi
                     \ifcase \*ixlvl \or \global\*ixald=\B
                                     \or \global\*ixbld=\B
                                     \or \global\*ixcld=\B
                             \fi
           }
   \long\def\everyletterbreak##1{\ifcase \*ixlvl \or \global\*ixabr={##1}
                                                 \or \global\*ixbbr={##1}
                                                 \or \global\*ixcbr={##1}
                              \fi}
   \def\everyindex##1{\ifcase \*ixlvl \or \global\*ixaev={##1}
                                      \or \global\*ixbev={##1}
                                      \or \global\*ixcev={##1}
                              \fi}
   \def\everyhang##1{\ifcase \*ixlvl \or \global\*ixahp={##1}
                                     \or \global\*ixbhp={##1}
                                     \or \global\*ixchp={##1}
                              \fi}
   \def\indentsubentry##1##2{\R = ##1
                       \ifnum ##1<1 \message{<TEXT1> Error!! Subentry level number in indexformat
                                             may only be 1 or 2. 1 will be used.}
                                    \R = 1
                              \else \ifnum ##1>2 \message{<TEXT1> Error!! Subentry level number in indexformat
                                             may only be 1 or 2. 1 will be used.}
                                    \R = 1
                              \fi\fi
                     \ifcase \R \or \ifcase \*ixlvl \or \global\*ixasea={##2}
                                                    \or \global\*ixbsea={##2}
                                                    \or \global\*ixcsea={##2}
                                                \fi
                                    \or \ifcase \*ixlvl \or \global\*ixaseb={##2}
                                                        \or \global\*ixbseb={##2}
                                                        \or \global\*ixcseb={##2}
                                                \fi
                              \fi}
   #2}}
\let\ixf=\indexformat
\newwrite\*ixfilea                    % IndeX FILE A
\newwrite\*ixfileb                    % IndeX FILE B
\newwrite\*ixfilec                    % IndeX FILE C
\newif\if*ixaopen   \*ixaopenfalse    % IndeX file A OPEN?
\newif\if*ixbopen   \*ixbopenfalse    % IndeX file B OPEN?
\newif\if*ixcopen   \*ixcopenfalse    % IndeX file C OPEN?
\def\*openixfile#1{\ifcase #1 \or
            \immediate\openout\*ixfilea=text1xx.ix1%
            \global\*ixaopentrue
            \immediate\write\*ixfilea{\the\*ixarc}%
            \immediate\write\*ixfilea{\the\*ixast}%
            \immediate\write\*ixfilea{\the\*ixald}%
  \or       \immediate\openout\*ixfileb=text1xx.ix2%
            \global\*ixbopentrue
            \immediate\write\*ixfileb{\the\*ixbrc}%
            \immediate\write\*ixfileb{\the\*ixbst}%
            \immediate\write\*ixfileb{\the\*ixbld}%
  \or       \immediate\openout\*ixfilec=text1xx.ix3%
            \global\*ixcopentrue
            \immediate\write\*ixfilec{\the\*ixcrc}%
            \immediate\write\*ixfilec{\the\*ixcst}%
            \immediate\write\*ixfilec{\the\*ixcld}%
  \fi}
{\catcode`\$=12
\global\def\index#1#2{{\global\*ixpn = 2
                \def\subentry##1##2{${$}se##1##2{$}}%
                \def\bdpn{\global\*ixpn = 0}%
                \def\uspn{\global\*ixpn = 4}%
                \def\itpn{\global\*ixpn = 6}%
                \def\blindentry##1{\global\*ixpn = 9}%
                \def\sortas##1{${$}sa##1{$}}%
                \def\dagger{ \noexpand\dagger}%
                \def\ddagger{ \noexpand\ddagger}%
                \def\\{\noexpand\\}%
                \def\{{\noexpand\{}%
                \def\}{\noexpand\}}%
                \def\_{\noexpand\_}%
                \def\@{\noexpand\@}%
                \def\S{\noexpand\S}%
                \def\P{\noexpand\P}%
                \def\L{\noexpand\L}%
                \def\AA{\noexpand\AA}%
                \def\neg{\noexpand\neg}%
                \def\tilde{\noexpand\tilde}%
                \def\vbar{\noexpand\vbar}%
                \def\roman{\noexpand\rm}\let\rm=\roman%
                \def\bold{\noexpand\bd}\let\bd=\bold%
                \def\italic{\noexpand\it}\let\it=\italic%
                \def\typewriter{\noexpand\tt}\let\tt=\typewriter%
                \def\caps{\noexpand\cc}\let\cc=\caps%
                \def\mathitalic{\noexpand\mi}\let\mi=\mathitalic%
                \def\symbol{\noexpand\sy}\let\sy=\symbol%
                \def\extension{\noexpand\ex}\let\ex=\extension%
                \def\bolditalic{\noexpand\bi}\let\bi=\bolditalic%
                \setbox0=\vbox{\hsize=100in#2}%
                \def\bdpn{}%
                \def\uspn{}%
                \def\itpn{}%
                \def\blindentry##1{${$}be##1{$}}%
                \*ixlvl = #1
                \ifcase #1 \message{<TEXT1> Error!! You can only have index level 1, 2, or 3.
                                     Index level 1 will be used.}
                            \*ixlvl = 1
                            \or\or\or%           % These levels are ok
                      \else \message{<TEXT1> Error!! You can only have index level 1, 2, or 3.
                                     Index level 1 will be used.}
                            \*ixlvl = 1
                        \fi%
                \edef\*ixtoken{#2}%
                \edef\temp{\*ixtoken}%
                \ifcase \*ixlvl  \or\if*ixaopen\else\*openixfile1\fi% Open the file if not done yet
                                   \immediate\write\*ixfilea{{\the\*ixpn}{\the\pageno}{\pagenumber}\*ixtoken}%
                                 \or \if*ixbopen \else \*openixfile2 \fi % Open the file if not done yet
                                   \immediate\write\*ixfileb{{\the\*ixpn}{\the\pageno}{\pagenumber}\*ixtoken}%
                                 \or \if*ixcopen \else \*openixfile3 \fi % Open the file if not done yet
                                   \immediate\write\*ixfilec{{\the\*ixpn}{\the\pageno}{\pagenumber}\*ixtoken}%
                                 \fi}\ignorespaces}
}% End math cat code change
\def\everyletterbreak#1#2{\def\nextletter{#2}
                          \ifcase #1 \or \the\*ixabr
                                     \or \the\*ixbbr
                                     \or \the\*ixcbr
                              \fi}
\def\everyindex#1{\ifcase \*ixlvl \or \the\*ixaev
                                  \or \the\*ixbev
                                  \or \the\*ixcev
                              \fi}
\def\indentsubentry#1#2{\par\penalty5000\hp
                     \ifcase #2 \or \ifcase #1 \or \hs{\the\*ixasea}
                                               \or \hs{\the\*ixbsea}
                                               \or \hs{\the\*ixcsea}
                                                \fi
                                \or \ifcase #1 \or \hs{\the\*ixaseb}
                                               \or \hs{\the\*ixbseb}
                                               \or \hs{\the\*ixcseb}
                                                \fi
                              \fi}
\let\ix=\index
\let\*ix=\printindex
\def\printindex#1{%\*ix#1 used only when printindex is a hardcoded command
                  \ifcase #1 \or \input text1xx.ix1
                             \or \input text1xx.ix2
                             \or \input text1xx.ix3
                             \fi}
%
\message{wrap it up...}
%
\def\@{\char'100{}}%
%
%   and set default values
%
\hfuzz=1pt
\parindent=24pt          \parskip=0pt plus 3pt minus 0pt
\normalbottom
\pageno=0
\catcode`* = 12
% The END
