\chardef\escape=0
\chardef\open=1
\chardef\close=2
\chardef\letter=11
\chardef\other=12
%\chardef\active=13              % is defined in Plain already

\chardef\uscode=\catcode`\_

\catcode`\_=\letter
%\font\tentex=cmtex10           % typewriter extended ASCII 10pt
%\let\ttex=\tentex              % only with base size 10pt
\def\ttex{\tt}                  % as a substitute

\def\setup_verbatim{%
  \def\do##1{\catcode`##1\other}\dospecials
  \parskip\z@skip \parindent\z@
  \catcode`\`\active \@noligs
  \obeylines \@vobeyspaces \obeytabs \frenchspacing
  \ttex
  }

\let\tab=\space
\begingroup
  \catcode`\^^I=\active%       % Attention: no tabs!
  \gdef\obeytabs{\catcode`\^^I=\active\def^^I{\tab}}
  \global\let^^I=\tab%    % if an active tab appears in a \write
\endgroup
\let\origvert=|
\chardef\vbar=`\|

\def\makebaractive{\catcode`\|\active}
\def\makebarother{\catcode`\|\other}
\makebaractive

\def|{%
  \leavevmode
  \hbox\bgroup
     \let\par\space \setup_verbatim
     \let|\egroup
  }
\let\@@verbatim=\@verbatim
\def\@verbatim{%
  \makebarother
  \@@verbatim
  }
\let\@@tabarray=\@tabarray
\def\@tabarray{%
  \makebarother
  \@@tabarray
  }

\def\multicolumn#1{%
  \multispan{#1}%
  \begingroup
     \makebarother
     \restof_multicolumn
  }
\def\restof_multicolumn#1#2{%
     \@mkpream{#1}%
     \def\@sharp{#2}%
     \let\protect\relax
     \let\@startpbox\@@startpbox  \let\@endpbox\@@endpbox
     \@arstrut \@preamble
  \endgroup
  \ignorespaces
  }

\let\@@mkpream=\@mkpream
\def\@mkpream#1{%
  \@@mkpream{#1}%
  \makebaractive
  }
\begingroup
  \def\@makeother{\noexpand\@makeother\noexpand}
  \xdef\@sanitize{\@sanitize\@makeother\|}
\endgroup
\newif\if@print

\def\begin_verbatim{%
  \endgraf
  \bigbreak
  \begingroup
     \setup_verbatim \makebarother
     \@printtrue
     \ignore_rest_line
  }
\let\end_verbatim=\endgroup             % internal command !
\begingroup
  \obeylines%  % ^^M is active! ==> every line must end with %
  \gdef\ignore_rest_line#1^^M{\set_next_line}%
  \gdef\set_next_line#1^^M{\do_set{#1}}%
\endgroup

\def\do_set#1{%
  \endgraf
  \check_print{#1}%
  \if@print  \indent \print_char#1\end_line\end_line
  \else  \let\set_next_line\end_verbatim
  \fi
  \set_next_line
  }
\let\end_line=\relax
\begingroup
\obeyspaces\obeytabs
\gdef\check_print#1{\cut_at_tab#1^^I\end_line}
\gdef\cut_at_tab#1^^I#2\end_line{\check_first_part#1 \end_line}% blank !
\gdef\check_first_part#1 #2\end_line{\do_check{#1}}
\endgroup
\def\do_check#1{%
  \def\@line{#1}%
  \ifx \@line\end_verbatim_line  \@printfalse
  \fi
  }
\newcount\char_count  \char_count\z@

\def\print_char#1#2\end_line{%
  \print_first_char{#1}%
  \print_rest_of_line{#2}%
  }
{\obeytabs\gdef\@tab{^^I}}

\def\print_first_char#1{%
  \def\@char{#1}%
  \advance \char_count\@ne
  \ifx \@char\@tab  \print_tab
  \else  \@char
  \fi
  }
\newcount\count_mod_viii
\def\mod_viii#1{%
  \count@ #1\relax  \count_mod_viii\count@
  \divide \count@ 8\relax
  \multiply \count@ 8\relax
  \advance \count_mod_viii -\count@
  }
\def\print_tab{%
  \loop  \space \mod_viii\char_count
     \ifnum \count_mod_viii>\z@
        \advance \char_count\@ne
  \repeat
  }
\def\print_rest_of_line#1{%
  \def\@line{#1}%
  \ifx \@line\empty  \char_count\z@
     \def\next##1\end_line{\relax}%
  \else  \let\next\print_char
  \fi
  \next#1\end_line
  }
{\catcode`\/=\escape            % / is temporary escape char
  \catcode`\\=\other
  /gdef/beginprog{%
     /gdef/end_verbatim_line{\endprog}%
     /begin_verbatim
     }
  /gdef/beginverbatim{%
     /gdef/end_verbatim_line{\endverbatim}%
     /begin_verbatim
     }
}                                % here \endgroup can't be used
\newskip\pre_sect_skip  \pre_sect_skip=2pc plus 1pc minus 6pt

\def\chap_intro{%
  \gdef\thesection{\arabic{section}.}%
  \gdef\chap_intro{\newpage}%
  \addvspace{\pre_sect_skip}%
  }

\def\sect_intro{%
  \gdef\thesection{\arabic{section}.}%
  \global\let\sect_intro\relax
  }
\def\chap#1.{%
  \chap_intro
  \@startsection{section}{1}%
     {\z@}%
     {\m@ne sp}%
     {\medskipamount}%
     {\normalsize\bf}%
     {#1.}%
  }
\def\sect{%
  \sect_intro
  \@startsection{section}{1}%
     {\z@}%
     {\pre_sect_skip}%
     {\m@ne sp}%
     {\normalsize\bf}%
     {\null}%
  }
\catcode`\_=\uscode

\endinput