home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / tex31 / texsrc.lzh / TEXSRC.LZH / tex6.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-01-09  |  28.4 KB  |  1,259 lines

  1. #define EXTERN extern
  2. #include "texd.h"
  3.  
  4. void passtext ( ) 
  5. {/* 30 */ passtext_regmem 
  6.   integer l  ; 
  7.   smallnumber savescannerstatus  ; 
  8.   savescannerstatus = scannerstatus ; 
  9.   scannerstatus = 1 ; 
  10.   l = 0 ; 
  11.   skipline = line ; 
  12.   while ( true ) {
  13.       
  14.     getnext () ; 
  15.     if ( curcmd == 106 ) 
  16.     {
  17.       if ( l == 0 ) 
  18.       goto lab30 ; 
  19.       if ( curchr == 2 ) 
  20.       decr ( l ) ; 
  21.     } 
  22.     else if ( curcmd == 105 ) 
  23.     incr ( l ) ; 
  24.   } 
  25.   lab30: scannerstatus = savescannerstatus ; 
  26. void zchangeiflimit ( l , p ) 
  27. smallnumber l ; 
  28. halfword p ; 
  29. {/* 10 */ changeiflimit_regmem 
  30.   halfword q  ; 
  31.   if ( p == condptr ) 
  32.   iflimit = l ; 
  33.   else {
  34.       
  35.     q = condptr ; 
  36.     while ( true ) {
  37.     
  38.       if ( q == 0 ) 
  39.       confusion ( 752 ) ; 
  40.       if ( mem [ q ] .hh .v.RH == p ) 
  41.       {
  42.     mem [ q ] .hh.b0 = l ; 
  43.     return ; 
  44.       } 
  45.       q = mem [ q ] .hh .v.RH ; 
  46.     } 
  47.   } 
  48. void conditional ( ) 
  49. {/* 10 50 */ conditional_regmem 
  50.   boolean b  ; 
  51.   schar r  ; 
  52.   integer m, n  ; 
  53.   halfword p, q  ; 
  54.   smallnumber savescannerstatus  ; 
  55.   halfword savecondptr  ; 
  56.   smallnumber thisif  ; 
  57.   {
  58.     p = getnode ( 2 ) ; 
  59.     mem [ p ] .hh .v.RH = condptr ; 
  60.     mem [ p ] .hh.b0 = iflimit ; 
  61.     mem [ p ] .hh.b1 = curif ; 
  62.     mem [ p + 1 ] .cint = ifline ; 
  63.     condptr = p ; 
  64.     curif = curchr ; 
  65.     iflimit = 1 ; 
  66.     ifline = line ; 
  67.   } 
  68.   savecondptr = condptr ; 
  69.   thisif = curchr ; 
  70.   switch ( thisif ) 
  71.   {case 0 : 
  72.   case 1 : 
  73.     {
  74.       {
  75.     getxtoken () ; 
  76.     if ( curcmd == 0 ) 
  77.     if ( curchr == 257 ) 
  78.     {
  79.       curcmd = 13 ; 
  80.       curchr = curtok - 4096 ; 
  81.     } 
  82.       } 
  83.       if ( ( curcmd > 13 ) || ( curchr > 255 ) ) 
  84.       {
  85.     m = 0 ; 
  86.     n = 256 ; 
  87.       } 
  88.       else {
  89.       
  90.     m = curcmd ; 
  91.     n = curchr ; 
  92.       } 
  93.       {
  94.     getxtoken () ; 
  95.     if ( curcmd == 0 ) 
  96.     if ( curchr == 257 ) 
  97.     {
  98.       curcmd = 13 ; 
  99.       curchr = curtok - 4096 ; 
  100.     } 
  101.       } 
  102.       if ( ( curcmd > 13 ) || ( curchr > 255 ) ) 
  103.       {
  104.     curcmd = 0 ; 
  105.     curchr = 256 ; 
  106.       } 
  107.       if ( thisif == 0 ) 
  108.       b = ( n == curchr ) ; 
  109.       else b = ( m == curcmd ) ; 
  110.     } 
  111.     break ; 
  112.   case 2 : 
  113.   case 3 : 
  114.     {
  115.       if ( thisif == 2 ) 
  116.       scanint () ; 
  117.       else scandimen ( false , false , false ) ; 
  118.       n = curval ; 
  119.       do {
  120.       getxtoken () ; 
  121.       } while ( ! ( curcmd != 10 ) ) ; 
  122.       if ( ( curtok >= 3132 ) && ( curtok <= 3134 ) ) 
  123.       r = curtok - 3072 ; 
  124.       else {
  125.       
  126.     {
  127.       if ( interaction == 3 ) 
  128.       wakeupterminal () ; 
  129.       printnl ( 262 ) ; 
  130.       print ( 776 ) ; 
  131.     } 
  132.     printcmdchr ( 105 , thisif ) ; 
  133.     {
  134.       helpptr = 1 ; 
  135.       helpline [ 0 ] = 777 ; 
  136.     } 
  137.     backerror () ; 
  138.     r = 61 ; 
  139.       } 
  140.       if ( thisif == 2 ) 
  141.       scanint () ; 
  142.       else scandimen ( false , false , false ) ; 
  143.       switch ( r ) 
  144.       {case 60 : 
  145.     b = ( n < curval ) ; 
  146.     break ; 
  147.       case 61 : 
  148.     b = ( n == curval ) ; 
  149.     break ; 
  150.       case 62 : 
  151.     b = ( n > curval ) ; 
  152.     break ; 
  153.       } 
  154.     } 
  155.     break ; 
  156.   case 4 : 
  157.     {
  158.       scanint () ; 
  159.       b = odd ( curval ) ; 
  160.     } 
  161.     break ; 
  162.   case 5 : 
  163.     b = ( abs ( curlist .modefield ) == 1 ) ; 
  164.     break ; 
  165.   case 6 : 
  166.     b = ( abs ( curlist .modefield ) == 102 ) ; 
  167.     break ; 
  168.   case 7 : 
  169.     b = ( abs ( curlist .modefield ) == 203 ) ; 
  170.     break ; 
  171.   case 8 : 
  172.     b = ( curlist .modefield < 0 ) ; 
  173.     break ; 
  174.   case 9 : 
  175.   case 10 : 
  176.   case 11 : 
  177.     {
  178.       scaneightbitint () ; 
  179.       p = eqtb [ 4578 + curval ] .hh .v.RH ; 
  180.       if ( thisif == 9 ) 
  181.       b = ( p == 0 ) ; 
  182.       else if ( p == 0 ) 
  183.       b = false ; 
  184.       else if ( thisif == 10 ) 
  185.       b = ( mem [ p ] .hh.b0 == 0 ) ; 
  186.       else b = ( mem [ p ] .hh.b0 == 1 ) ; 
  187.     } 
  188.     break ; 
  189.   case 12 : 
  190.     {
  191.       savescannerstatus = scannerstatus ; 
  192.       scannerstatus = 0 ; 
  193.       getnext () ; 
  194.       n = curcs ; 
  195.       p = curcmd ; 
  196.       q = curchr ; 
  197.       getnext () ; 
  198.       if ( curcmd != p ) 
  199.       b = false ; 
  200.       else if ( curcmd < 111 ) 
  201.       b = ( curchr == q ) ; 
  202.       else {
  203.       
  204.     p = mem [ curchr ] .hh .v.RH ; 
  205.     q = mem [ eqtb [ n ] .hh .v.RH ] .hh .v.RH ; 
  206.     if ( p == q ) 
  207.     b = true ; 
  208.     else {
  209.         
  210.       while ( ( p != 0 ) && ( q != 0 ) ) if ( mem [ p ] .hh .v.LH != mem [ 
  211.       q ] .hh .v.LH ) 
  212.       p = 0 ; 
  213.       else {
  214.           
  215.         p = mem [ p ] .hh .v.RH ; 
  216.         q = mem [ q ] .hh .v.RH ; 
  217.       } 
  218.       b = ( ( p == 0 ) && ( q == 0 ) ) ; 
  219.     } 
  220.       } 
  221.       scannerstatus = savescannerstatus ; 
  222.     } 
  223.     break ; 
  224.   case 13 : 
  225.     {
  226.       scanfourbitint () ; 
  227.       b = ( readopen [ curval ] == 2 ) ; 
  228.     } 
  229.     break ; 
  230.   case 14 : 
  231.     b = true ; 
  232.     break ; 
  233.   case 15 : 
  234.     b = false ; 
  235.     break ; 
  236.   case 16 : 
  237.     {
  238.       scanint () ; 
  239.       n = curval ; 
  240.       if ( eqtb [ 6199 ] .cint > 1 ) 
  241.       {
  242.     begindiagnostic () ; 
  243.     print ( 778 ) ; 
  244.     printint ( n ) ; 
  245.     printchar ( 125 ) ; 
  246.     enddiagnostic ( false ) ; 
  247.       } 
  248.       while ( n != 0 ) {
  249.       
  250.     passtext () ; 
  251.     if ( condptr == savecondptr ) 
  252.     if ( curchr == 4 ) 
  253.     decr ( n ) ; 
  254.     else goto lab50 ; 
  255.     else if ( curchr == 2 ) 
  256.     {
  257.       p = condptr ; 
  258.       ifline = mem [ p + 1 ] .cint ; 
  259.       curif = mem [ p ] .hh.b1 ; 
  260.       iflimit = mem [ p ] .hh.b0 ; 
  261.       condptr = mem [ p ] .hh .v.RH ; 
  262.       freenode ( p , 2 ) ; 
  263.     } 
  264.       } 
  265.       changeiflimit ( 4 , savecondptr ) ; 
  266.       return ; 
  267.     } 
  268.     break ; 
  269.   } 
  270.   if ( eqtb [ 6199 ] .cint > 1 ) 
  271.   {
  272.     begindiagnostic () ; 
  273.     if ( b ) 
  274.     print ( 774 ) ; 
  275.     else print ( 775 ) ; 
  276.     enddiagnostic ( false ) ; 
  277.   } 
  278.   if ( b ) 
  279.   {
  280.     changeiflimit ( 3 , savecondptr ) ; 
  281.     return ; 
  282.   } 
  283.   while ( true ) {
  284.       
  285.     passtext () ; 
  286.     if ( condptr == savecondptr ) 
  287.     {
  288.       if ( curchr != 4 ) 
  289.       goto lab50 ; 
  290.       {
  291.     if ( interaction == 3 ) 
  292.     wakeupterminal () ; 
  293.     printnl ( 262 ) ; 
  294.     print ( 772 ) ; 
  295.       } 
  296.       printesc ( 770 ) ; 
  297.       {
  298.     helpptr = 1 ; 
  299.     helpline [ 0 ] = 773 ; 
  300.       } 
  301.       error () ; 
  302.     } 
  303.     else if ( curchr == 2 ) 
  304.     {
  305.       p = condptr ; 
  306.       ifline = mem [ p + 1 ] .cint ; 
  307.       curif = mem [ p ] .hh.b1 ; 
  308.       iflimit = mem [ p ] .hh.b0 ; 
  309.       condptr = mem [ p ] .hh .v.RH ; 
  310.       freenode ( p , 2 ) ; 
  311.     } 
  312.   } 
  313.   lab50: if ( curchr == 2 ) 
  314.   {
  315.     p = condptr ; 
  316.     ifline = mem [ p + 1 ] .cint ; 
  317.     curif = mem [ p ] .hh.b1 ; 
  318.     iflimit = mem [ p ] .hh.b0 ; 
  319.     condptr = mem [ p ] .hh .v.RH ; 
  320.     freenode ( p , 2 ) ; 
  321.   } 
  322.   else iflimit = 2 ; 
  323. void beginname ( ) 
  324. {beginname_regmem 
  325.   areadelimiter = 0 ; 
  326.   extdelimiter = 0 ; 
  327. boolean zmorename ( c ) 
  328. ASCIIcode c ; 
  329. {register boolean Result; morename_regmem 
  330.   if ( c == 32 ) 
  331.   Result = false ; 
  332.   else {
  333.       
  334.     {
  335.       if ( poolptr + 1 > poolsize ) 
  336.       overflow ( 257 , poolsize - initpoolptr ) ; 
  337.     } 
  338.     {
  339.       strpool [ poolptr ] = c ; 
  340.       incr ( poolptr ) ; 
  341.     } 
  342.     if ( ( c == 47 ) ) 
  343.     {
  344.       areadelimiter = ( poolptr - strstart [ strptr ] ) ; 
  345.       extdelimiter = 0 ; 
  346.     } 
  347.     else if ( c == 46 ) 
  348.     extdelimiter = ( poolptr - strstart [ strptr ] ) ; 
  349.     Result = true ; 
  350.   } 
  351.   return(Result) ; 
  352. void endname ( ) 
  353. {endname_regmem 
  354.   if ( strptr + 3 > maxstrings ) 
  355.   overflow ( 258 , maxstrings - initstrptr ) ; 
  356.   if ( areadelimiter == 0 ) 
  357.   curarea = 335 ; 
  358.   else {
  359.       
  360.     curarea = strptr ; 
  361.     strstart [ strptr + 1 ] = strstart [ strptr ] + areadelimiter ; 
  362.     incr ( strptr ) ; 
  363.   } 
  364.   if ( extdelimiter == 0 ) 
  365.   {
  366.     curext = 335 ; 
  367.     curname = makestring () ; 
  368.   } 
  369.   else {
  370.       
  371.     curname = strptr ; 
  372.     strstart [ strptr + 1 ] = strstart [ strptr ] + extdelimiter - 
  373.     areadelimiter - 1 ; 
  374.     incr ( strptr ) ; 
  375.     curext = makestring () ; 
  376.   } 
  377. void zpackfilename ( n , a , e ) 
  378. strnumber n ; 
  379. strnumber a ; 
  380. strnumber e ; 
  381. {packfilename_regmem 
  382.   integer k  ; 
  383.   ASCIIcode c  ; 
  384.   poolpointer j  ; 
  385.   k = 0 ; 
  386.   {register integer for_end; j = strstart [ a ] ; for_end = strstart [ a + 1 
  387.   ] - 1 ; if ( j <= for_end) do 
  388.     {
  389.       c = strpool [ j ] ; 
  390.       incr ( k ) ; 
  391.       if ( k <= FILENAMESIZE ) 
  392.       nameoffile [ k ] = xchr [ c ] ; 
  393.     } 
  394.   while ( j++ < for_end ) ; } 
  395.   {register integer for_end; j = strstart [ n ] ; for_end = strstart [ n + 1 
  396.   ] - 1 ; if ( j <= for_end) do 
  397.     {
  398.       c = strpool [ j ] ; 
  399.       incr ( k ) ; 
  400.       if ( k <= FILENAMESIZE ) 
  401.       nameoffile [ k ] = xchr [ c ] ; 
  402.     } 
  403.   while ( j++ < for_end ) ; } 
  404.   {register integer for_end; j = strstart [ e ] ; for_end = strstart [ e + 1 
  405.   ] - 1 ; if ( j <= for_end) do 
  406.     {
  407.       c = strpool [ j ] ; 
  408.       incr ( k ) ; 
  409.       if ( k <= FILENAMESIZE ) 
  410.       nameoffile [ k ] = xchr [ c ] ; 
  411.     } 
  412.   while ( j++ < for_end ) ; } 
  413.   if ( k <= FILENAMESIZE ) 
  414.   namelength = k ; 
  415.   else namelength = FILENAMESIZE ; 
  416.   {register integer for_end; k = namelength + 1 ; for_end = FILENAMESIZE 
  417.   ; if ( k <= for_end) do 
  418.     nameoffile [ k ] = ' ' ; 
  419.   while ( k++ < for_end ) ; } 
  420. void zpackbufferedname ( n , a , b ) 
  421. smallnumber n ; 
  422. integer a ; 
  423. integer b ; 
  424. {packbufferedname_regmem 
  425.   integer k  ; 
  426.   ASCIIcode c  ; 
  427.   integer j  ; 
  428.   if ( n + b - a + 5 > FILENAMESIZE ) 
  429.   b = a + FILENAMESIZE - n - 5 ; 
  430.   k = 0 ; 
  431.   {register integer for_end; j = 1 ; for_end = n ; if ( j <= for_end) do 
  432.     {
  433.       c = xord [ TEXformatdefault [ j ] ] ; 
  434.       incr ( k ) ; 
  435.       if ( k <= FILENAMESIZE ) 
  436.       nameoffile [ k ] = xchr [ c ] ; 
  437.     } 
  438.   while ( j++ < for_end ) ; } 
  439.   {register integer for_end; j = a ; for_end = b ; if ( j <= for_end) do 
  440.     {
  441.       c = buffer [ j ] ; 
  442.       incr ( k ) ; 
  443.       if ( k <= FILENAMESIZE ) 
  444.       nameoffile [ k ] = xchr [ c ] ; 
  445.     } 
  446.   while ( j++ < for_end ) ; } 
  447.   {register integer for_end; j = formatdefaultlength - 3 ; for_end = 
  448.   formatdefaultlength ; if ( j <= for_end) do 
  449.     {
  450.       c = xord [ TEXformatdefault [ j ] ] ; 
  451.       incr ( k ) ; 
  452.       if ( k <= FILENAMESIZE ) 
  453.       nameoffile [ k ] = xchr [ c ] ; 
  454.     } 
  455.   while ( j++ < for_end ) ; } 
  456.   if ( k <= FILENAMESIZE ) 
  457.   namelength = k ; 
  458.   else namelength = FILENAMESIZE ; 
  459.   {register integer for_end; k = namelength + 1 ; for_end = FILENAMESIZE 
  460.   ; if ( k <= for_end) do 
  461.     nameoffile [ k ] = ' ' ; 
  462.   while ( k++ < for_end ) ; } 
  463. strnumber makenamestring ( ) 
  464. {register strnumber Result; makenamestring_regmem 
  465.   integer k  ; 
  466.   if ( ( poolptr + namelength > poolsize ) || ( strptr == maxstrings ) || ( ( 
  467.   poolptr - strstart [ strptr ] ) > 0 ) ) 
  468.   Result = 63 ; 
  469.   else {
  470.       
  471.     {register integer for_end; k = 1 ; for_end = namelength ; if ( k <= 
  472.     for_end) do 
  473.       {
  474.     strpool [ poolptr ] = xord [ nameoffile [ k ] ] ; 
  475.     incr ( poolptr ) ; 
  476.       } 
  477.     while ( k++ < for_end ) ; } 
  478.     Result = makestring () ; 
  479.   } 
  480.   return(Result) ; 
  481. strnumber zamakenamestring ( f ) 
  482. alphafile * f ; 
  483. {register strnumber Result; amakenamestring_regmem 
  484.   Result = makenamestring () ; 
  485.   return(Result) ; 
  486. strnumber zbmakenamestring ( f ) 
  487. bytefile * f ; 
  488. {register strnumber Result; bmakenamestring_regmem 
  489.   Result = makenamestring () ; 
  490.   return(Result) ; 
  491. strnumber zwmakenamestring ( f ) 
  492. wordfile * f ; 
  493. {register strnumber Result; wmakenamestring_regmem 
  494.   Result = makenamestring () ; 
  495.   return(Result) ; 
  496. void scanfilename ( ) 
  497. {/* 30 */ scanfilename_regmem 
  498.   nameinprogress = true ; 
  499.   beginname () ; 
  500.   do {
  501.       getxtoken () ; 
  502.   } while ( ! ( curcmd != 10 ) ) ; 
  503.   while ( true ) {
  504.       
  505.     if ( ( curcmd > 12 ) || ( curchr > 255 ) ) 
  506.     {
  507.       backinput () ; 
  508.       goto lab30 ; 
  509.     } 
  510.     if ( ! morename ( curchr ) ) 
  511.     goto lab30 ; 
  512.     getxtoken () ; 
  513.   } 
  514.   lab30: endname () ; 
  515.   nameinprogress = false ; 
  516. void zpackjobname ( s ) 
  517. strnumber s ; 
  518. {packjobname_regmem 
  519.   curarea = 335 ; 
  520.   curext = s ; 
  521.   curname = jobname ; 
  522.   packfilename ( curname , curarea , curext ) ; 
  523. void zpromptfilename ( s , e ) 
  524. strnumber s ; 
  525. strnumber e ; 
  526. {/* 30 */ promptfilename_regmem 
  527.   integer k  ; 
  528.   if ( interaction == 2 ) 
  529.   wakeupterminal () ; 
  530.   if ( s == 780 ) 
  531.   {
  532.     if ( interaction == 3 ) 
  533.     wakeupterminal () ; 
  534.     printnl ( 262 ) ; 
  535.     print ( 781 ) ; 
  536.   } 
  537.   else {
  538.       
  539.     if ( interaction == 3 ) 
  540.     wakeupterminal () ; 
  541.     printnl ( 262 ) ; 
  542.     print ( 782 ) ; 
  543.   } 
  544.   printfilename ( curname , curarea , curext ) ; 
  545.   print ( 783 ) ; 
  546.   if ( e == 784 ) 
  547.   showcontext () ; 
  548.   printnl ( 785 ) ; 
  549.   print ( s ) ; 
  550.   if ( interaction < 2 ) 
  551.   fatalerror ( 786 ) ; 
  552.   clearterminal () ; 
  553.   {
  554.     wakeupterminal () ; 
  555.     print ( 564 ) ; 
  556.     terminput () ; 
  557.   } 
  558.   {
  559.     beginname () ; 
  560.     k = first ; 
  561.     while ( ( buffer [ k ] == 32 ) && ( k < last ) ) incr ( k ) ; 
  562.     while ( true ) {
  563.     
  564.       if ( k == last ) 
  565.       goto lab30 ; 
  566.       if ( ! morename ( buffer [ k ] ) ) 
  567.       goto lab30 ; 
  568.       incr ( k ) ; 
  569.     } 
  570.     lab30: endname () ; 
  571.   } 
  572.   if ( curext == 335 ) 
  573.   curext = e ; 
  574.   packfilename ( curname , curarea , curext ) ; 
  575. void openlogfile ( ) 
  576. {openlogfile_regmem 
  577.   schar oldsetting  ; 
  578.   integer k  ; 
  579.   integer l  ; 
  580.   ccharpointer months  ; 
  581.   oldsetting = selector ; 
  582.   if ( jobname == 0 ) 
  583.   jobname = 789 ; 
  584.   packjobname ( 790 ) ; 
  585.   while ( ! aopenout ( logfile ) ) {
  586.       
  587.     selector = 17 ; 
  588.     promptfilename ( 792 , 790 ) ; 
  589.   } 
  590.   logname = amakenamestring ( logfile ) ; 
  591.   selector = 18 ; 
  592.   logopened = true ; 
  593.   {
  594.     (void) Fputs( logfile ,  "This is TeX, C Version 3.1t2" ) ; 
  595.     print ( formatident ) ; 
  596.     print ( 793 ) ; 
  597.     printint ( eqtb [ 6184 ] .cint ) ; 
  598.     printchar ( 32 ) ; 
  599.     months = " JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" ; 
  600.     {register integer for_end; k = 3 * eqtb [ 6185 ] .cint - 2 ; for_end = 3 
  601.     * eqtb [ 6185 ] .cint ; if ( k <= for_end) do 
  602.       (void) putc( months [ k ] ,  logfile );
  603.     while ( k++ < for_end ) ; } 
  604.     printchar ( 32 ) ; 
  605.     printint ( eqtb [ 6186 ] .cint ) ; 
  606.     printchar ( 32 ) ; 
  607.     printtwo ( eqtb [ 6183 ] .cint / 60 ) ; 
  608.     printchar ( 58 ) ; 
  609.     printtwo ( eqtb [ 6183 ] .cint % 60 ) ; 
  610.   } 
  611.   (void) Fputs( logfile ,  "\nCompiled for the Atari ST with GNU-C " __VERSION__ " by fgth (" __DATE__ ")" ) ; 
  612.   inputstack [ inputptr ] = curinput ; 
  613.   printnl ( 791 ) ; 
  614.   l = inputstack [ 0 ] .limitfield ; 
  615.   if ( buffer [ l ] == eqtb [ 6211 ] .cint ) 
  616.   decr ( l ) ; 
  617.   {register integer for_end; k = 1 ; for_end = l ; if ( k <= for_end) do 
  618.     print ( buffer [ k ] ) ; 
  619.   while ( k++ < for_end ) ; } 
  620.   println () ; 
  621.   selector = oldsetting + 2 ; 
  622. void startinput ( ) 
  623. {/* 30 */ startinput_regmem 
  624.   scanfilename () ; 
  625.   if ( curext == 335 ) 
  626.   packfilename ( curname , curarea , 784 ) ; 
  627.   else packfilename ( curname , curarea , curext ) ; 
  628.   while ( true ) {
  629.       
  630.     beginfilereading () ; 
  631.     if ( aopenin ( inputfile [ curinput .indexfield ] , TEXINPUTPATH ) ) 
  632.     goto lab30 ; 
  633.     if ( curext == 335 ) 
  634.     {
  635.       packfilename ( curname , curarea , curext ) ; 
  636.       if ( aopenin ( inputfile [ curinput .indexfield ] , TEXINPUTPATH ) ) 
  637.       goto lab30 ; 
  638.     } 
  639.     endfilereading () ; 
  640.     promptfilename ( 780 , 784 ) ; 
  641.   } 
  642.   lab30: curinput .namefield = amakenamestring ( inputfile [ curinput 
  643.   .indexfield ] ) ; 
  644.   if ( jobname == 0 ) 
  645.   {
  646.     jobname = curname ; 
  647.     openlogfile () ; 
  648.   } 
  649.   if ( termoffset + ( strstart [ curinput .namefield + 1 ] - strstart [ 
  650.   curinput .namefield ] ) > maxprintline - 3 ) 
  651.   println () ; 
  652.   else if ( ( termoffset > 0 ) || ( fileoffset > 0 ) ) 
  653.   printchar ( 32 ) ; 
  654.   printchar ( 40 ) ; 
  655.   incr ( openparens ) ; 
  656.   print ( curinput .namefield ) ; 
  657.   flush ( stdout ) ; 
  658.   curinput .statefield = 33 ; 
  659.   {
  660.     line = 1 ; 
  661.     if ( inputln ( inputfile [ curinput .indexfield ] , false ) ) 
  662.     ; 
  663.     firmuptheline () ; 
  664.     if ( ( eqtb [ 6211 ] .cint < 0 ) || ( eqtb [ 6211 ] .cint > 255 ) ) 
  665.     decr ( curinput .limitfield ) ; 
  666.     else buffer [ curinput .limitfield ] = eqtb [ 6211 ] .cint ; 
  667.     first = curinput .limitfield + 1 ; 
  668.     curinput .locfield = curinput .startfield ; 
  669.   } 
  670. internalfontnumber zreadfontinfo ( u , nom , aire , s ) 
  671. halfword u ; 
  672. strnumber nom ; 
  673. strnumber aire ; 
  674. scaled s ; 
  675. {/* 30 11 45 */ register internalfontnumber Result; readfontinfo_regmem 
  676.   fontindex k  ; 
  677.   boolean fileopened  ; 
  678.   halfword lf, lh, bc, ec, nw, nh, nd, ni, nl, nk, ne, np  ; 
  679.   internalfontnumber f  ; 
  680.   internalfontnumber g  ; 
  681.   eightbits a, b, c, d  ; 
  682.   fourquarters qw  ; 
  683.   scaled sw  ; 
  684.   integer bchlabel  ; 
  685.   short bchar  ; 
  686.   scaled z  ; 
  687.   integer alpha  ; 
  688.   schar beta  ; 
  689.   g = 0 ; 
  690.   fileopened = false ; 
  691.   packfilename ( nom , aire , 804 ) ; 
  692.   if ( ! bopenin ( tfmfile ) ) 
  693.   goto lab11 ; 
  694.   fileopened = true ; 
  695.   {
  696.     {
  697.       lf = tfmtemp ; 
  698.       if ( lf > 127 ) 
  699.       goto lab11 ; 
  700.       tfmtemp = getc ( tfmfile ) ; 
  701.       lf = lf * 256 + tfmtemp ; 
  702.     } 
  703.     tfmtemp = getc ( tfmfile ) ; 
  704.     {
  705.       lh = tfmtemp ; 
  706.       if ( lh > 127 ) 
  707.       goto lab11 ; 
  708.       tfmtemp = getc ( tfmfile ) ; 
  709.       lh = lh * 256 + tfmtemp ; 
  710.     } 
  711.     tfmtemp = getc ( tfmfile ) ; 
  712.     {
  713.       bc = tfmtemp ; 
  714.       if ( bc > 127 ) 
  715.       goto lab11 ; 
  716.       tfmtemp = getc ( tfmfile ) ; 
  717.       bc = bc * 256 + tfmtemp ; 
  718.     } 
  719.     tfmtemp = getc ( tfmfile ) ; 
  720.     {
  721.       ec = tfmtemp ; 
  722.       if ( ec > 127 ) 
  723.       goto lab11 ; 
  724.       tfmtemp = getc ( tfmfile ) ; 
  725.       ec = ec * 256 + tfmtemp ; 
  726.     } 
  727.     if ( ( bc > ec + 1 ) || ( ec > 255 ) ) 
  728.     goto lab11 ; 
  729.     if ( bc > 255 ) 
  730.     {
  731.       bc = 1 ; 
  732.       ec = 0 ; 
  733.     } 
  734.     tfmtemp = getc ( tfmfile ) ; 
  735.     {
  736.       nw = tfmtemp ; 
  737.       if ( nw > 127 ) 
  738.       goto lab11 ; 
  739.       tfmtemp = getc ( tfmfile ) ; 
  740.       nw = nw * 256 + tfmtemp ; 
  741.     } 
  742.     tfmtemp = getc ( tfmfile ) ; 
  743.     {
  744.       nh = tfmtemp ; 
  745.       if ( nh > 127 ) 
  746.       goto lab11 ; 
  747.       tfmtemp = getc ( tfmfile ) ; 
  748.       nh = nh * 256 + tfmtemp ; 
  749.     } 
  750.     tfmtemp = getc ( tfmfile ) ; 
  751.     {
  752.       nd = tfmtemp ; 
  753.       if ( nd > 127 ) 
  754.       goto lab11 ; 
  755.       tfmtemp = getc ( tfmfile ) ; 
  756.       nd = nd * 256 + tfmtemp ; 
  757.     } 
  758.     tfmtemp = getc ( tfmfile ) ; 
  759.     {
  760.       ni = tfmtemp ; 
  761.       if ( ni > 127 ) 
  762.       goto lab11 ; 
  763.       tfmtemp = getc ( tfmfile ) ; 
  764.       ni = ni * 256 + tfmtemp ; 
  765.     } 
  766.     tfmtemp = getc ( tfmfile ) ; 
  767.     {
  768.       nl = tfmtemp ; 
  769.       if ( nl > 127 ) 
  770.       goto lab11 ; 
  771.       tfmtemp = getc ( tfmfile ) ; 
  772.       nl = nl * 256 + tfmtemp ; 
  773.     } 
  774.     tfmtemp = getc ( tfmfile ) ; 
  775.     {
  776.       nk = tfmtemp ; 
  777.       if ( nk > 127 ) 
  778.       goto lab11 ; 
  779.       tfmtemp = getc ( tfmfile ) ; 
  780.       nk = nk * 256 + tfmtemp ; 
  781.     } 
  782.     tfmtemp = getc ( tfmfile ) ; 
  783.     {
  784.       ne = tfmtemp ; 
  785.       if ( ne > 127 ) 
  786.       goto lab11 ; 
  787.       tfmtemp = getc ( tfmfile ) ; 
  788.       ne = ne * 256 + tfmtemp ; 
  789.     } 
  790.     tfmtemp = getc ( tfmfile ) ; 
  791.     {
  792.       np = tfmtemp ; 
  793.       if ( np > 127 ) 
  794.       goto lab11 ; 
  795.       tfmtemp = getc ( tfmfile ) ; 
  796.       np = np * 256 + tfmtemp ; 
  797.     } 
  798.     if ( lf != 6 + lh + ( ec - bc + 1 ) + nw + nh + nd + ni + nl + nk + ne + 
  799.     np ) 
  800.     goto lab11 ; 
  801.   } 
  802.   lf = lf - 6 - lh ; 
  803.   if ( np < 7 ) 
  804.   lf = lf + 7 - np ; 
  805.   if ( ( fontptr == fontmax ) || ( fmemptr + lf > fontmemsize ) ) 
  806.   {
  807.     {
  808.       if ( interaction == 3 ) 
  809.       wakeupterminal () ; 
  810.       printnl ( 262 ) ; 
  811.       print ( 795 ) ; 
  812.     } 
  813.     sprintcs ( u ) ; 
  814.     printchar ( 61 ) ; 
  815.     printfilename ( nom , aire , 335 ) ; 
  816.     if ( s >= 0 ) 
  817.     {
  818.       print ( 737 ) ; 
  819.       printscaled ( s ) ; 
  820.       print ( 393 ) ; 
  821.     } 
  822.     else if ( s != -1000 ) 
  823.     {
  824.       print ( 796 ) ; 
  825.       printint ( - (integer) s ) ; 
  826.     } 
  827.     print ( 805 ) ; 
  828.     {
  829.       helpptr = 4 ; 
  830.       helpline [ 3 ] = 806 ; 
  831.       helpline [ 2 ] = 807 ; 
  832.       helpline [ 1 ] = 808 ; 
  833.       helpline [ 0 ] = 809 ; 
  834.     } 
  835.     error () ; 
  836.     goto lab30 ; 
  837.   } 
  838.   f = fontptr + 1 ; 
  839.   charbase [ f ] = fmemptr - bc ; 
  840.   widthbase [ f ] = charbase [ f ] + ec + 1 ; 
  841.   heightbase [ f ] = widthbase [ f ] + nw ; 
  842.   depthbase [ f ] = heightbase [ f ] + nh ; 
  843.   italicbase [ f ] = depthbase [ f ] + nd ; 
  844.   ligkernbase [ f ] = italicbase [ f ] + ni ; 
  845.   kernbase [ f ] = ligkernbase [ f ] + nl - 256 * ( 128 ) ; 
  846.   extenbase [ f ] = kernbase [ f ] + 256 * ( 128 ) + nk ; 
  847.   parambase [ f ] = extenbase [ f ] + ne ; 
  848.   {
  849.     if ( lh < 2 ) 
  850.     goto lab11 ; 
  851.     {
  852.       tfmtemp = getc ( tfmfile ) ; 
  853.       a = tfmtemp ; 
  854.       qw .b0 = a ; 
  855.       tfmtemp = getc ( tfmfile ) ; 
  856.       b = tfmtemp ; 
  857.       qw .b1 = b ; 
  858.       tfmtemp = getc ( tfmfile ) ; 
  859.       c = tfmtemp ; 
  860.       qw .b2 = c ; 
  861.       tfmtemp = getc ( tfmfile ) ; 
  862.       d = tfmtemp ; 
  863.       qw .b3 = d ; 
  864.       fontcheck [ f ] = qw ; 
  865.     } 
  866.     tfmtemp = getc ( tfmfile ) ; 
  867.     {
  868.       z = tfmtemp ; 
  869.       if ( z > 127 ) 
  870.       goto lab11 ; 
  871.       tfmtemp = getc ( tfmfile ) ; 
  872.       z = z * 256 + tfmtemp ; 
  873.     } 
  874.     tfmtemp = getc ( tfmfile ) ; 
  875.     z = z * 256 + tfmtemp ; 
  876.     tfmtemp = getc ( tfmfile ) ; 
  877.     z = ( z * 16 ) + ( tfmtemp / 16 ) ; 
  878.     if ( z < 65536L ) 
  879.     goto lab11 ; 
  880.     while ( lh > 2 ) {
  881.     
  882.       tfmtemp = getc ( tfmfile ) ; 
  883.       tfmtemp = getc ( tfmfile ) ; 
  884.       tfmtemp = getc ( tfmfile ) ; 
  885.       tfmtemp = getc ( tfmfile ) ; 
  886.       decr ( lh ) ; 
  887.     } 
  888.     fontdsize [ f ] = z ; 
  889.     if ( s != -1000 ) 
  890.     if ( s >= 0 ) 
  891.     z = s ; 
  892.     else z = xnoverd ( z , - (integer) s , 1000 ) ; 
  893.     fontsize [ f ] = z ; 
  894.   } 
  895.   {register integer for_end; k = fmemptr ; for_end = widthbase [ f ] - 1 
  896.   ; if ( k <= for_end) do 
  897.     {
  898.       {
  899.     tfmtemp = getc ( tfmfile ) ; 
  900.     a = tfmtemp ; 
  901.     qw .b0 = a ; 
  902.     tfmtemp = getc ( tfmfile ) ; 
  903.     b = tfmtemp ; 
  904.     qw .b1 = b ; 
  905.     tfmtemp = getc ( tfmfile ) ; 
  906.     c = tfmtemp ; 
  907.     qw .b2 = c ; 
  908.     tfmtemp = getc ( tfmfile ) ; 
  909.     d = tfmtemp ; 
  910.     qw .b3 = d ; 
  911.     fontinfo [ k ] .qqqq = qw ; 
  912.       } 
  913.       if ( ( a >= nw ) || ( b / 16 >= nh ) || ( b % 16 >= nd ) || ( c / 4 >= 
  914.       ni ) ) 
  915.       goto lab11 ; 
  916.       switch ( c % 4 ) 
  917.       {case 1 : 
  918.     if ( d >= nl ) 
  919.     goto lab11 ; 
  920.     break ; 
  921.       case 3 : 
  922.     if ( d >= ne ) 
  923.     goto lab11 ; 
  924.     break ; 
  925.       case 2 : 
  926.     {
  927.       {
  928.         if ( ( d < bc ) || ( d > ec ) ) 
  929.         goto lab11 ; 
  930.       } 
  931.       while ( d < k + bc - fmemptr ) {
  932.           
  933.         qw = fontinfo [ charbase [ f ] + d ] .qqqq ; 
  934.         if ( ( ( qw .b2 ) % 4 ) != 2 ) 
  935.         goto lab45 ; 
  936.         d = qw .b3 ; 
  937.       } 
  938.       if ( d == k + bc - fmemptr ) 
  939.       goto lab11 ; 
  940.       lab45: ; 
  941.     } 
  942.     break ; 
  943.     default: 
  944.     ; 
  945.     break ; 
  946.       } 
  947.     } 
  948.   while ( k++ < for_end ) ; } 
  949.   {
  950.     {
  951.       alpha = 16 ; 
  952.       while ( z >= 8388608L ) {
  953.       
  954.     z = z / 2 ; 
  955.     alpha = alpha + alpha ; 
  956.       } 
  957.       beta = 256 / alpha ; 
  958.       alpha = alpha * z ; 
  959.     } 
  960.     {register integer for_end; k = widthbase [ f ] ; for_end = ligkernbase [ 
  961.     f ] - 1 ; if ( k <= for_end) do 
  962.       {
  963.     tfmtemp = getc ( tfmfile ) ; 
  964.     a = tfmtemp ; 
  965.     tfmtemp = getc ( tfmfile ) ; 
  966.     b = tfmtemp ; 
  967.     tfmtemp = getc ( tfmfile ) ; 
  968.     c = tfmtemp ; 
  969.     tfmtemp = getc ( tfmfile ) ; 
  970.     d = tfmtemp ; 
  971.     sw = ( ( ( ( ( d * z ) / 256 ) + ( c * z ) ) / 256 ) + ( b * z ) ) / 
  972.     beta ; 
  973.     if ( a == 0 ) 
  974.     fontinfo [ k ] .cint = sw ; 
  975.     else if ( a == 255 ) 
  976.     fontinfo [ k ] .cint = sw - alpha ; 
  977.     else goto lab11 ; 
  978.       } 
  979.     while ( k++ < for_end ) ; } 
  980.     if ( fontinfo [ widthbase [ f ] ] .cint != 0 ) 
  981.     goto lab11 ; 
  982.     if ( fontinfo [ heightbase [ f ] ] .cint != 0 ) 
  983.     goto lab11 ; 
  984.     if ( fontinfo [ depthbase [ f ] ] .cint != 0 ) 
  985.     goto lab11 ; 
  986.     if ( fontinfo [ italicbase [ f ] ] .cint != 0 ) 
  987.     goto lab11 ; 
  988.   } 
  989.   bchlabel = 32767 ; 
  990.   bchar = 256 ; 
  991.   if ( nl > 0 ) 
  992.   {
  993.     {register integer for_end; k = ligkernbase [ f ] ; for_end = kernbase [ f 
  994.     ] + 256 * ( 128 ) - 1 ; if ( k <= for_end) do 
  995.       {
  996.     {
  997.       tfmtemp = getc ( tfmfile ) ; 
  998.       a = tfmtemp ; 
  999.       qw .b0 = a ; 
  1000.       tfmtemp = getc ( tfmfile ) ; 
  1001.       b = tfmtemp ; 
  1002.       qw .b1 = b ; 
  1003.       tfmtemp = getc ( tfmfile ) ; 
  1004.       c = tfmtemp ; 
  1005.       qw .b2 = c ; 
  1006.       tfmtemp = getc ( tfmfile ) ; 
  1007.       d = tfmtemp ; 
  1008.       qw .b3 = d ; 
  1009.       fontinfo [ k ] .qqqq = qw ; 
  1010.     } 
  1011.     if ( a > 128 ) 
  1012.     {
  1013.       if ( 256 * c + d >= nl ) 
  1014.       goto lab11 ; 
  1015.       if ( a == 255 ) 
  1016.       if ( k == ligkernbase [ f ] ) 
  1017.       bchar = b ; 
  1018.     } 
  1019.     else {
  1020.         
  1021.       if ( b != bchar ) 
  1022.       {
  1023.         {
  1024.           if ( ( b < bc ) || ( b > ec ) ) 
  1025.           goto lab11 ; 
  1026.         } 
  1027.         qw = fontinfo [ charbase [ f ] + b ] .qqqq ; 
  1028.         if ( ! ( qw .b0 > 0 ) ) 
  1029.         goto lab11 ; 
  1030.       } 
  1031.       if ( c < 128 ) 
  1032.       {
  1033.         {
  1034.           if ( ( d < bc ) || ( d > ec ) ) 
  1035.           goto lab11 ; 
  1036.         } 
  1037.         qw = fontinfo [ charbase [ f ] + d ] .qqqq ; 
  1038.         if ( ! ( qw .b0 > 0 ) ) 
  1039.         goto lab11 ; 
  1040.       } 
  1041.       else if ( 256 * ( c - 128 ) + d >= nk ) 
  1042.       goto lab11 ; 
  1043.       if ( a < 128 ) 
  1044.       if ( k - ligkernbase [ f ] + a + 1 >= nl ) 
  1045.       goto lab11 ; 
  1046.     } 
  1047.       } 
  1048.     while ( k++ < for_end ) ; } 
  1049.     if ( a == 255 ) 
  1050.     bchlabel = 256 * c + d ; 
  1051.   } 
  1052.   {register integer for_end; k = kernbase [ f ] + 256 * ( 128 ) ; for_end = 
  1053.   extenbase [ f ] - 1 ; if ( k <= for_end) do 
  1054.     {
  1055.       tfmtemp = getc ( tfmfile ) ; 
  1056.       a = tfmtemp ; 
  1057.       tfmtemp = getc ( tfmfile ) ; 
  1058.       b = tfmtemp ; 
  1059.       tfmtemp = getc ( tfmfile ) ; 
  1060.       c = tfmtemp ; 
  1061.       tfmtemp = getc ( tfmfile ) ; 
  1062.       d = tfmtemp ; 
  1063.       sw = ( ( ( ( ( d * z ) / 256 ) + ( c * z ) ) / 256 ) + ( b * z ) ) / 
  1064.       beta ; 
  1065.       if ( a == 0 ) 
  1066.       fontinfo [ k ] .cint = sw ; 
  1067.       else if ( a == 255 ) 
  1068.       fontinfo [ k ] .cint = sw - alpha ; 
  1069.       else goto lab11 ; 
  1070.     } 
  1071.   while ( k++ < for_end ) ; } 
  1072.   {register integer for_end; k = extenbase [ f ] ; for_end = parambase [ f ] 
  1073.   - 1 ; if ( k <= for_end) do 
  1074.     {
  1075.       {
  1076.     tfmtemp = getc ( tfmfile ) ; 
  1077.     a = tfmtemp ; 
  1078.     qw .b0 = a ; 
  1079.     tfmtemp = getc ( tfmfile ) ; 
  1080.     b = tfmtemp ; 
  1081.     qw .b1 = b ; 
  1082.     tfmtemp = getc ( tfmfile ) ; 
  1083.     c = tfmtemp ; 
  1084.     qw .b2 = c ; 
  1085.     tfmtemp = getc ( tfmfile ) ; 
  1086.     d = tfmtemp ; 
  1087.     qw .b3 = d ; 
  1088.     fontinfo [ k ] .qqqq = qw ; 
  1089.       } 
  1090.       if ( a != 0 ) 
  1091.       {
  1092.     {
  1093.       if ( ( a < bc ) || ( a > ec ) ) 
  1094.       goto lab11 ; 
  1095.     } 
  1096.     qw = fontinfo [ charbase [ f ] + a ] .qqqq ; 
  1097.     if ( ! ( qw .b0 > 0 ) ) 
  1098.     goto lab11 ; 
  1099.       } 
  1100.       if ( b != 0 ) 
  1101.       {
  1102.     {
  1103.       if ( ( b < bc ) || ( b > ec ) ) 
  1104.       goto lab11 ; 
  1105.     } 
  1106.     qw = fontinfo [ charbase [ f ] + b ] .qqqq ; 
  1107.     if ( ! ( qw .b0 > 0 ) ) 
  1108.     goto lab11 ; 
  1109.       } 
  1110.       if ( c != 0 ) 
  1111.       {
  1112.     {
  1113.       if ( ( c < bc ) || ( c > ec ) ) 
  1114.       goto lab11 ; 
  1115.     } 
  1116.     qw = fontinfo [ charbase [ f ] + c ] .qqqq ; 
  1117.     if ( ! ( qw .b0 > 0 ) ) 
  1118.     goto lab11 ; 
  1119.       } 
  1120.       {
  1121.     {
  1122.       if ( ( d < bc ) || ( d > ec ) ) 
  1123.       goto lab11 ; 
  1124.     } 
  1125.     qw = fontinfo [ charbase [ f ] + d ] .qqqq ; 
  1126.     if ( ! ( qw .b0 > 0 ) ) 
  1127.     goto lab11 ; 
  1128.       } 
  1129.     } 
  1130.   while ( k++ < for_end ) ; } 
  1131.   {
  1132.     {register integer for_end; k = 1 ; for_end = np ; if ( k <= for_end) do 
  1133.       if ( k == 1 ) 
  1134.       {
  1135.     tfmtemp = getc ( tfmfile ) ; 
  1136.     sw = tfmtemp ; 
  1137.     if ( sw > 127 ) 
  1138.     sw = sw - 256 ; 
  1139.     tfmtemp = getc ( tfmfile ) ; 
  1140.     sw = sw * 256 + tfmtemp ; 
  1141.     tfmtemp = getc ( tfmfile ) ; 
  1142.     sw = sw * 256 + tfmtemp ; 
  1143.     tfmtemp = getc ( tfmfile ) ; 
  1144.     fontinfo [ parambase [ f ] ] .cint = ( sw * 16 ) + ( tfmtemp / 16 ) ; 
  1145.       } 
  1146.       else {
  1147.       
  1148.     tfmtemp = getc ( tfmfile ) ; 
  1149.     a = tfmtemp ; 
  1150.     tfmtemp = getc ( tfmfile ) ; 
  1151.     b = tfmtemp ; 
  1152.     tfmtemp = getc ( tfmfile ) ; 
  1153.     c = tfmtemp ; 
  1154.     tfmtemp = getc ( tfmfile ) ; 
  1155.     d = tfmtemp ; 
  1156.     sw = ( ( ( ( ( d * z ) / 256 ) + ( c * z ) ) / 256 ) + ( b * z ) ) / 
  1157.     beta ; 
  1158.     if ( a == 0 ) 
  1159.     fontinfo [ parambase [ f ] + k - 1 ] .cint = sw ; 
  1160.     else if ( a == 255 ) 
  1161.     fontinfo [ parambase [ f ] + k - 1 ] .cint = sw - alpha ; 
  1162.     else goto lab11 ; 
  1163.       } 
  1164.     while ( k++ < for_end ) ; } 
  1165.     if ( feof ( tfmfile ) ) 
  1166.     goto lab11 ; 
  1167.     {register integer for_end; k = np + 1 ; for_end = 7 ; if ( k <= for_end) 
  1168.     do 
  1169.       fontinfo [ parambase [ f ] + k - 1 ] .cint = 0 ; 
  1170.     while ( k++ < for_end ) ; } 
  1171.   } 
  1172.   if ( np >= 7 ) 
  1173.   fontparams [ f ] = np ; 
  1174.   else fontparams [ f ] = 7 ; 
  1175.   hyphenchar [ f ] = eqtb [ 6209 ] .cint ; 
  1176.   skewchar [ f ] = eqtb [ 6210 ] .cint ; 
  1177.   if ( bchlabel < nl ) 
  1178.   bcharlabel [ f ] = bchlabel + ligkernbase [ f ] ; 
  1179.   else bcharlabel [ f ] = fontmemsize ; 
  1180.   fontbchar [ f ] = bchar ; 
  1181.   fontfalsebchar [ f ] = bchar ; 
  1182.   if ( bchar <= ec ) 
  1183.   if ( bchar >= bc ) 
  1184.   {
  1185.     qw = fontinfo [ charbase [ f ] + bchar ] .qqqq ; 
  1186.     if ( ( qw .b0 > 0 ) ) 
  1187.     fontfalsebchar [ f ] = 256 ; 
  1188.   } 
  1189.   fontname [ f ] = nom ; 
  1190.   fontarea [ f ] = aire ; 
  1191.   fontbc [ f ] = bc ; 
  1192.   fontec [ f ] = ec ; 
  1193.   fontglue [ f ] = 0 ; 
  1194.   charbase [ f ] = charbase [ f ] ; 
  1195.   widthbase [ f ] = widthbase [ f ] ; 
  1196.   ligkernbase [ f ] = ligkernbase [ f ] ; 
  1197.   kernbase [ f ] = kernbase [ f ] ; 
  1198.   extenbase [ f ] = extenbase [ f ] ; 
  1199.   decr ( parambase [ f ] ) ; 
  1200.   fmemptr = fmemptr + lf ; 
  1201.   fontptr = f ; 
  1202.   g = f ; 
  1203.   goto lab30 ; 
  1204.   lab11: {
  1205.       
  1206.     if ( interaction == 3 ) 
  1207.     wakeupterminal () ; 
  1208.     printnl ( 262 ) ; 
  1209.     print ( 795 ) ; 
  1210.   } 
  1211.   sprintcs ( u ) ; 
  1212.   printchar ( 61 ) ; 
  1213.   printfilename ( nom , aire , 335 ) ; 
  1214.   if ( s >= 0 ) 
  1215.   {
  1216.     print ( 737 ) ; 
  1217.     printscaled ( s ) ; 
  1218.     print ( 393 ) ; 
  1219.   } 
  1220.   else if ( s != -1000 ) 
  1221.   {
  1222.     print ( 796 ) ; 
  1223.     printint ( - (integer) s ) ; 
  1224.   } 
  1225.   if ( fileopened ) 
  1226.   print ( 797 ) ; 
  1227.   else print ( 798 ) ; 
  1228.   {
  1229.     helpptr = 5 ; 
  1230.     helpline [ 4 ] = 799 ; 
  1231.     helpline [ 3 ] = 800 ; 
  1232.     helpline [ 2 ] = 801 ; 
  1233.     helpline [ 1 ] = 802 ; 
  1234.     helpline [ 0 ] = 803 ; 
  1235.   } 
  1236.   error () ; 
  1237.   lab30: if ( fileopened ) 
  1238.   bclose ( tfmfile ) ; 
  1239.   Result = g ; 
  1240.   return(Result) ; 
  1241.