% figtotal.tex					25 Mar 91
%------------------------------------------------------------
% (c) 1991 by J.Schrod (TeXsys).

%
% Picture of the components and used file types of TeX (data flow)
%   (thanks to Nico Poppelier who contributed this better structured version)
%
% LaTeX picture


% check if \OutputInFigtotal and \DriverInFigtotal is defined

\ifx \OutputInFigtotal\undefined
   \errhelp{It should be defined as the term `output' in the used language}
   \errmessage{You must define \string\OutputInFigtotal}
   \def\OutputInFigtotal{output}
\fi
\ifx \DriverInFigtotal\undefined
   \errhelp{It should be defined as the term `driver' in the used language}
   \errmessage{You must define \string\DriverInFigtotal}
   \def\DriverInFigtotal{\DVI{} driver}
\fi



\def\file#1{\framebox(3,2){\tt \uppercase{#1}}}
\def\prog(#1)#2{%
   \oval(#1,2)%
   \makebox(0,0){#2}%
   }


% X and Y variables

\newcount\X \newcount\Y		% needed for \Program

% macros for objects

\def\File(#1,#2)#3{%
  \put(#1,#2){\framebox(20,10){\tt\uppercase{#3}}}}
\def\CopyFile(#1,#2)#3{%
  \put(#1,#2){\dashbox{2}(20,10){#3}}}
\def\Program(#1,#2)#3{%
  \X=#1 \Y=#2 \advance\X by 15 \advance\Y by 5
  \put(\X,\Y){\oval(30,10)}%
  \put(#1,#2){\makebox(30,10){#3}}}
\def\Device(#1,#2)#3{%
  \put(#1,#2){\line(1,2){5}} \put(#1,#2){\line(1,0){25}}
  \X=#1 \Y=#2 \advance\X by 30 \advance\Y by 10
  \put(\the\X,\the\Y){\line(-1,-2){5}} \put(\the\X,\the\Y){\line(-1,0){25}}
  \put(#1,#2){\makebox(30,10){#3}}}


% don't ask me why it's 0.7mm, that's from Nico!  -js

\unitlength=0.7mm


\begin{picture}(260,160)(80,0)

% this code provides a dotted grid that makes modification easier

%\multiput( 70,  0)(10,0){20}{%
%   \vbox to 160\unitlength{%
%      \leaders
%         \vbox to 2.5\unitlength{%
%	    \vfill
%	    \hbox{\fivrm .}%
%	    \vfill
%	    }%
%	 \vfill
%      }%
%   }
%\multiput( 70,  0)(0,10){17}{%
%   \hbox to 190\unitlength{%
%      \leaders
%         \hbox to 2.5\unitlength{%
%	    \hfill
%	    \hbox{\fivrm .}%
%	    \hfill
%	    }%
%	 \hfill
%      }%
%   }


%
% IniTeX block
%
    \File( 75,145){tfm} \File(105,145){hyp} \File(135,145){mac} 
    \File(165,145){pool} 
\multiput( 85,145)(30,0){4}{\line(0,-1){5}}
     \put( 85,140){\line(1,0){90}}
     \put(115,140){\vector(0,-1){5}}
 \Program(100,125){\INITeX}
     \put(115,125){\line(0,-1){5}}
     \put(100,120){\line(1,0){30}}
\multiput(100,120)(30,0){2}{\vector(0,-1){5}}
    \File( 90,105){log}
    \File(120,105){fmt} \File(150,105){tex}
    \File(180,105){sty} \File(210,105){mac} \File(240,105){tfm}

%
% TeX block
%
\multiput(130,105)(30,0){5}{\line(0,-1){5}}
     \put(130,100){\line(1,0){120}}
     \put(175,100){\vector(0,-1){5}}
 \Program(160, 85){\TeX82}
     \put(175, 85){\line(0,-1){5}}
     \put(130, 80){\line(1,0){90}}
\multiput(130, 80)(30,0){4}{\vector(0,-1){5}}
    \File(120, 65){dvi} \File(150, 65){log}
    \File(180, 65){idx} \File(210, 65){aux}
% loop back to TeX
     \put(230, 70){\line(1,0){10}}
     \put(240, 70){\vector(0,1){10}}
     \put(240, 80){\line(0,1){10}}

%
% BibTeX block
%
    \File(195, 45){bib} \File(225, 45){bst}
\multiput(205, 45)(30,0){2}{\line(0,-1){5}}
     \put(205, 40){\line(1,0){30}}
     \put(220, 65){\vector(0,-1){30}}
 \Program(205, 25){\BibTeX}
     \put(220, 25){\line(0,-1){5}}
     \put(205, 20){\line(1,0){30}}
\multiput(205, 20)(30,0){2}{\vector(0,-1){5}}
    \File(195,  5){blg} \File(225,  5){bbl}
% loop back to TeX
     \put(245, 10){\line(1,0){10}}
     \put(255, 10){\vector(0,1){10}}
     \put(255, 20){\line(0,1){70}}

%
% MakeIndex block
%
    \File(150, 45){ist}
     \put(190, 65){\line(0,-1){20}}
\multiput(160, 45)(30,0){2}{\line(0,-1){5}}
     \put(160, 40){\line(1,0){30}}
     \put(175, 40){\vector(0,-1){5}}
 \Program(160, 25){\MakeIndex}
     \put(175, 25){\line(0,-1){5}}
     \put(145, 20){\line(1,0){30}}
\multiput(145, 20)(30,0){2}{\vector(0,-1){5}}
    \File(135,  5){ilg} \File(165,  5){ind}
% loop back to TeX
     \put(175,  5){\line(0,-1){5}}
     \put(175,  0){\line(1,0){85}}
     \put(260,  0){\vector(0,1){10}}
     \put(260, 10){\line(0,1){80}}
     \put(260, 90){\vector(-1,0){70}}

%
% device driver block
%
    \File( 90, 65){fnt}
\multiput(100, 65)(30,0){2}{\line(0,-1){25}}
     \put(100, 40){\line(1,0){30}}
     \put(115, 40){\vector(0,-1){5}}
 \Program(100, 25){\DriverInFigtotal}
     \put(115, 25){\vector(0,-1){10}}
  \Device(100,  5){\OutputInFigtotal}


\end{picture}


\endinput

