#define EXTERN extern
#include "texd.h"

void giveerrhelp ( )
{giveerrhelp_regmem
 tokenshow ( eqtb [ 10821 ] .hh .v.RH ) ;
}
boolean openfmtfile ( )
{/* 40 10 */ register boolean Result; openfmtfile_regmem
 integer j  ;
 j = curinput .locfield ;
 if ( buffer [ curinput .locfield ] == 38 )
 {
   incr ( curinput .locfield ) ;
   j = curinput .locfield ;
   buffer [ last ] = 32 ;
   while ( buffer [ j ] != 32 ) incr ( j ) ;
   packbufferedname ( 0 , curinput .locfield , j - 1 ) ;
   if ( wopenin ( fmtfile ) )
   goto lab40 ;
   (void) fprintf( stdout , "%s%s\n",  "Sorry, I can't find that format;" ,     " will try the default." ) ;
   flush ( stdout ) ;
 }
 packbufferedname ( formatdefaultlength - 4 , 1 , 0 ) ;
 if ( ! wopenin ( fmtfile ) )
 {
   ;
   (void) fprintf( stdout , "%s\n",  "I can't find the default format file!" ) ;
   Result = false ;
   return(Result) ;
 }
 lab40: curinput .locfield = j ;
 Result = true ;
 return(Result) ;
}
void closefilesandterminate ( )
{closefilesandterminate_regmem
 integer k  ;
 {register integer for_end; k = 0 ; for_end = 15 ; if ( k <= for_end) do
   if ( writeopen [ k ] )
   aclose ( writefile [ k ] ) ;
 while ( k++ < for_end ) ; }
 {register integer for_end; hsii = 1 ; for_end = FILENAMESIZE ; if ( hsii <=
 for_end) do
   {
     nameoffile [ hsii ] = ' ' ;
   }
 while ( hsii++ < for_end ) ; }
 hsij = strstart [ jobname ] ;
 hsii = 1 ;
 while ( hsij < strstart [ jobname + 1 ] ) {

   nameoffile [ hsii ] = xchr [ strpool [ hsij ] ] ;
   hsij = hsij + 1 ;
   hsii = hsii + 1 ;
 }
 nameoffile [ hsii ] = '.' ;
 nameoffile [ hsii + 1 ] = 'm' ;
 nameoffile [ hsii + 2 ] = 'e' ;
 nameoffile [ hsii + 3 ] = 'm' ;
 if ( ! aopenout ( hsmem ) )
 {
   (void) fprintf( stdout , "%s\n",  " =iSi=> cant a_open_out " ) ;
   wjob () ;
   (void) Fputs( stdout ,  ".mem " ) ;
   (void) putc('\n',  stdout );
 }
 else {

   while ( mdm != nil ) {

     if ( inuse ( mdm ->w12 , mdm ->l1 , mdb ) )
     {
       if ( isidebug == 1 )
       {
         (void) Fputs( stdout ,  " =iSi=> writing to " ) ;
         wjob () ;
         (void) Fputs( stdout ,  ".mem: " ) ;
         writewt ( mdm ->w12 , mdm ->l1 , mdm ->tr1 ) ;
         (void) putc('\n',  stdout );
       }
       (void) fprintf( hsmem , " %ld\n",  (long)mdm ->l1 ) ;
       {register integer for_end; k = 1 ; for_end = mdm ->l1 ; if ( k <=
       for_end) do
         {
           (void) fprintf( hsmem , " %ld",  (long)mdm ->w12 [ k ] ) ;
         }
       while ( k++ < for_end ) ; }
       (void) putc('\n',  hsmem );
       {register integer for_end; k = 1 ; for_end = mdm ->l1 ; if ( k <=
       for_end) do
         {
           (void) fprintf( hsmem , " %ld",  (long)mdm ->tr1 [ k ] ) ;
         }
       while ( k++ < for_end ) ; }
       (void) putc('\n',  hsmem );
       if ( mdm ->neu1 )
       {
         (void) putc( Xchr ( 116 ) ,  hsmem );
         (void) putc('\n',  hsmem );
         mdleintragen ( mdm ->w12 , mdm ->l1 , mdl ) ;
       }
       else {

         (void) putc( Xchr ( 102 ) ,  hsmem );
         (void) putc('\n',  hsmem );
       }
     }
     else {

       if ( isidebug == 1 )
       {
         (void) Fputs( stdout ,  " =iSi=> " ) ;
         wwort ( mdm ->w12 , mdm ->l1 ) ;
         (void) Fputs( stdout ,  " not in use" ) ;
         (void) putc('\n',  stdout );
       }
     }
     mdm = mdm ->li ;
   }
   aclose ( hsmem ) ;
 }
 {register integer for_end; hsii = 1 ; for_end = FILENAMESIZE ; if ( hsii <=
 for_end) do
   {
     nameoffile [ hsii ] = ' ' ;
   }
 while ( hsii++ < for_end ) ; }
 hsij = strstart [ jobname ] ;
 hsii = 1 ;
 while ( hsij < strstart [ jobname + 1 ] ) {

   nameoffile [ hsii ] = xchr [ strpool [ hsij ] ] ;
   hsij = hsij + 1 ;
   hsii = hsii + 1 ;
 }
 nameoffile [ hsii ] = '.' ;
 nameoffile [ hsii + 1 ] = 'l' ;
 nameoffile [ hsii + 2 ] = 'e' ;
 nameoffile [ hsii + 3 ] = 'x' ;
 if ( ! aopenout ( hslex ) )
 (void) fprintf( stdout , "%s\n",  " =iSi=> cant open hslex" ) ;
 else {

   while ( mdl != nil ) {

     if ( isidebug == 1 )
     {
       (void) Fputs( stdout ,  " =iSi=> writing to " ) ;
       wjob () ;
       (void) Fputs( stdout ,  ".lex: " ) ;
       wwort ( mdl ->w12 , mdl ->l1 ) ;
       (void) putc('\n',  stdout );
     }
     (void) putc( Xchr ( mdl ->l1 ) ,  hslex );
     {register integer for_end; k = 1 ; for_end = mdl ->l1 ; if ( k <=
     for_end) do
       {
         if ( mdl ->w12 [ k ] <= 26 )
         {
           (void) putc( Xchr ( mdl ->w12 [ k ] + 96 ) ,  hslex );
         }
         else {

           if ( mdl ->w12 [ k ] == 27 )
           {
             (void) Fputs( hslex ,  "\"a" ) ;
           }
           else if ( mdl ->w12 [ k ] == 28 )
           {
             (void) Fputs( hslex ,  "\"o" ) ;
           }
           else if ( mdl ->w12 [ k ] == 29 )
           {
             (void) Fputs( hslex ,  "\"u" ) ;
           }
           else if ( mdl ->w12 [ k ] == 30 )
           {
             (void) Fputs( hslex ,  "\"s" ) ;
           }
           else {

             (void) putc( '-' ,  hslex );
           }
         }
       }
     while ( k++ < for_end ) ; }
     (void) putc('\n',  hslex );
     mdl = mdl ->li ;
   }
   aclose ( hslex ) ;
 }
 {register integer for_end; hsii = 1 ; for_end = FILENAMESIZE ; if ( hsii <=
 for_end) do
   {
     nameoffile [ hsii ] = ' ' ;
   }
 while ( hsii++ < for_end ) ; }
 hsij = strstart [ jobname ] ;
 hsii = 1 ;
 while ( hsij < strstart [ jobname + 1 ] ) {

   nameoffile [ hsii ] = xchr [ strpool [ hsij ] ] ;
   hsij = hsij + 1 ;
   hsii = hsii + 1 ;
 }
 nameoffile [ hsii ] = '.' ;
 nameoffile [ hsii + 1 ] = 'e' ;
 nameoffile [ hsii + 2 ] = 'd' ;
 nameoffile [ hsii + 3 ] = 't' ;
 if ( ! aopenout ( hsedt ) )
 (void) fprintf( stdout , "%s\n",  " =iSi=> cant open hsedt" ) ;
 else {

   while ( mde != nil ) {

     if ( isidebug == 1 )
     {
       (void) Fputs( stdout ,  " =iSi=> writing to " ) ;
       wjob () ;
       (void) Fputs( stdout ,  ".edt: " ) ;
       wwort ( mde ->w12 , mde ->l1 ) ;
       (void) putc('\n',  stdout );
     }
     {register integer for_end; k = 1 ; for_end = mde ->l1 ; if ( k <=
     for_end) do
       {
         if ( mde ->w12 [ k ] <= 26 )
         {
           (void) putc( Xchr ( mde ->w12 [ k ] + 96 ) ,  hsedt );
         }
         else {

           if ( mde ->w12 [ k ] == 27 )
           {
             (void) Fputs( hsedt ,  "\"a" ) ;
           }
           else if ( mde ->w12 [ k ] == 28 )
           {
             (void) Fputs( hsedt ,  "\"o" ) ;
           }
           else if ( mde ->w12 [ k ] == 29 )
           {
             (void) Fputs( hsedt ,  "\"u" ) ;
           }
           else if ( mde ->w12 [ k ] == 30 )
           {
             (void) Fputs( hsedt ,  "\"s" ) ;
           }
           else {

             (void) Fputs( hsedt ,  "--" ) ;
           }
         }
       }
     while ( k++ < for_end ) ; }
     (void) putc('\n',  hsedt );
     mde = mde ->li ;
   }
   aclose ( hsedt ) ;
 }
       ;
#ifdef STAT
 if ( eqtb [ 12694 ] .cint > 0 )
 if ( logopened )
 {
   (void) fprintf( logfile , "%c\n",  ' ' ) ;
   (void) fprintf( logfile , "%s%s\n",  "Here is how much of TeX's memory" , " you used:" ) ;
   (void) fprintf( logfile , "%c%ld%s",  ' ' , (long)strptr - initstrptr , " string" ) ;
   if ( strptr != initstrptr + 1 )
   (void) putc( 's' ,  logfile );
   (void) fprintf( logfile , "%s%ld\n",  " out of " , (long)maxstrings - initstrptr ) ;
   (void) fprintf( logfile , "%c%ld%s%ld\n",  ' ' , (long)poolptr - initpoolptr ,     " string characters out of " , (long)poolsize - initpoolptr ) ;
   (void) fprintf( logfile , "%c%ld%s%ld\n",  ' ' , (long)lomemmax - memmin + memend - himemmin + 2 ,     " words of memory out of " , (long)memend + 1 - memmin ) ;
   (void) fprintf( logfile , "%c%ld%s%ld\n",  ' ' , (long)cscount ,     " multiletter control sequences out of " , (long)9500 ) ;
   (void) fprintf( logfile , "%c%ld%s%ld%s",  ' ' , (long)fmemptr , " words of font info for " , (long)fontptr - 0     , " font" ) ;
   if ( fontptr != 1 )
   (void) putc( 's' ,  logfile );
   (void) fprintf( logfile , "%s%ld%s%ld\n",  ", out of " , (long)fontmemsize , " for " , (long)fontmax - 0 ) ;
   (void) fprintf( logfile , "%c%ld%s",  ' ' , (long)hyphcount , " hyphenation exception" ) ;
   if ( hyphcount != 1 )
   (void) putc( 's' ,  logfile );
   (void) fprintf( logfile , "%s%ld\n",  " out of " , (long)607 ) ;
   (void) fprintf( logfile , "%c%ld%s%ld%s%ld%s%ld%s%ld%s%ld%s%ld%s%ld%s%ld%s%ld%c\n",  ' ' , (long)maxinstack , "i," , (long)maxneststack , "n," ,     (long)maxparamstack , "p," , (long)maxbufstack + 1 , "b," , (long)maxsavestack + 6 ,     "s stack positions out of " , (long)stacksize , "i," , (long)nestsize , "n," ,     (long)paramsize , "p," , (long)bufsize , "b," , (long)savesize , 's' ) ;
 }
#endif /* STAT */
 while ( curs > -1 ) {

   if ( curs > 0 )
   {
     dvibuf [ dviptr ] = 142 ;
     incr ( dviptr ) ;
     if ( dviptr == dvilimit )
     dviswap () ;
   }
   else {

     {
       dvibuf [ dviptr ] = 140 ;
       incr ( dviptr ) ;
       if ( dviptr == dvilimit )
       dviswap () ;
     }
     incr ( totalpages ) ;
   }
   decr ( curs ) ;
 }
 if ( totalpages == 0 )
 printnl ( 833 ) ;
 else {

   {
     dvibuf [ dviptr ] = 248 ;
     incr ( dviptr ) ;
     if ( dviptr == dvilimit )
     dviswap () ;
   }
   dvifour ( lastbop ) ;
   lastbop = dvioffset + dviptr - 5 ;
   dvifour ( 25400000L ) ;
   dvifour ( 473628672L ) ;
   preparemag () ;
   dvifour ( eqtb [ 12680 ] .cint ) ;
   dvifour ( maxv ) ;
   dvifour ( maxh ) ;
   {
     dvibuf [ dviptr ] = maxpush / 256 ;
     incr ( dviptr ) ;
     if ( dviptr == dvilimit )
     dviswap () ;
   }
   {
     dvibuf [ dviptr ] = maxpush % 256 ;
     incr ( dviptr ) ;
     if ( dviptr == dvilimit )
     dviswap () ;
   }
   {
     dvibuf [ dviptr ] = ( totalpages / 256 ) % 256 ;
     incr ( dviptr ) ;
     if ( dviptr == dvilimit )
     dviswap () ;
   }
   {
     dvibuf [ dviptr ] = totalpages % 256 ;
     incr ( dviptr ) ;
     if ( dviptr == dvilimit )
     dviswap () ;
   }
   while ( fontptr > 0 ) {

     if ( fontused [ fontptr ] )
     dvifontdef ( fontptr ) ;
     decr ( fontptr ) ;
   }
   {
     dvibuf [ dviptr ] = 249 ;
     incr ( dviptr ) ;
     if ( dviptr == dvilimit )
     dviswap () ;
   }
   dvifour ( lastbop ) ;
   {
     dvibuf [ dviptr ] = 2 ;
     incr ( dviptr ) ;
     if ( dviptr == dvilimit )
     dviswap () ;
   }
   k = 4 + ( ( dvibufsize - dviptr ) % 4 ) ;
   while ( k > 0 ) {

     {
       dvibuf [ dviptr ] = 223 ;
       incr ( dviptr ) ;
       if ( dviptr == dvilimit )
       dviswap () ;
     }
     decr ( k ) ;
   }
   if ( dvilimit == halfbuf )
   writedvi ( halfbuf , dvibufsize - 1 ) ;
   if ( dviptr > 0 )
   writedvi ( 0 , dviptr - 1 ) ;
   printnl ( 834 ) ;
   print ( outputfilename ) ;
   print ( 284 ) ;
   printint ( totalpages ) ;
   print ( 835 ) ;
   if ( totalpages != 1 )
   printchar ( 115 ) ;
   print ( 836 ) ;
   printint ( dvioffset + dviptr ) ;
   print ( 837 ) ;
   bclose ( dvifile ) ;
 }
 if ( logopened )
 {
   (void) putc('\n',  logfile );
   aclose ( logfile ) ;
   selector = selector - 2 ;
   if ( selector == 17 )
   {
     printnl ( 1268 ) ;
     print ( logname ) ;
     printchar ( 46 ) ;
   }
 }
 println () ;
 if ( ( editnamestart != 0 ) && ( interaction > 0 ) )
 calledit ( strpool , editnamestart , editnamelength , editline ) ;
}
#ifdef DEBUG
void debughelp ( )
{/* 888 10 */ debughelp_regmem
 integer k, l, m, n  ;
 while ( true ) {

   ;
   printnl ( 1277 ) ;
   flush ( stdout ) ;
   read ( stdin , m ) ;
   if ( m < 0 )
   return ;
   else if ( m == 0 )
   dumpcore () ;
   else {

     read ( stdin , n ) ;
     switch ( m )
     {case 1 :
       printword ( mem [ n ] ) ;
       break ;
     case 2 :
       printint ( mem [ n ] .hh .v.LH ) ;
       break ;
     case 3 :
       printint ( mem [ n ] .hh .v.RH ) ;
       break ;
     case 4 :
       printword ( eqtb [ n ] ) ;
       break ;
     case 5 :
       printword ( fontinfo [ n ] ) ;
       break ;
     case 6 :
       printword ( savestack [ n ] ) ;
       break ;
     case 7 :
       showbox ( n ) ;
       break ;
     case 8 :
       {
         breadthmax = 10000 ;
         depththreshold = poolsize - poolptr - 10 ;
         shownodelist ( n ) ;
       }
       break ;
     case 9 :
       showtokenlist ( n , 0 , 1000 ) ;
       break ;
     case 10 :
       print ( n ) ;
       break ;
     case 11 :
       checkmem ( n > 0 ) ;
       break ;
     case 12 :
       searchmem ( n ) ;
       break ;
     case 13 :
       {
         read ( stdin , l ) ;
         printcmdchr ( n , l ) ;
       }
       break ;
     case 14 :
       {register integer for_end; k = 0 ; for_end = n ; if ( k <= for_end)
       do
         print ( buffer [ k ] ) ;
       while ( k++ < for_end ) ; }
       break ;
     case 15 :
       {
         fontinshortdisplay = 0 ;
         shortdisplay ( n ) ;
       }
       break ;
     case 16 :
       panicking = ! panicking ;
       break ;
       default:
       print ( 63 ) ;
       break ;
     }
   }
 }
}
#endif /* DEBUG */