home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Tex / texsrc.arc / TEX3.C < prev    next >
C/C++ Source or Header  |  1988-09-14  |  44KB  |  2,018 lines

  1. overlay "tex3"
  2. #define EXTERN extern
  3. #include "texd.h"
  4.  
  5. scancharnum () { r_scancharnum 
  6.   scanint () ; 
  7.   if ( ( curval < 0 ) || ( curval > 255 ) ) 
  8.   {
  9.     {
  10.       if ( interaction == 3 ) 
  11.       wakeuptermin () ; 
  12.       printnl ( 133 ) ; 
  13.       print ( 543 ) ; 
  14.     } 
  15.     {
  16.       helpptr = 2 ; 
  17.       helpline [ 1 ] = 550 ; 
  18.       helpline [ 0 ] = 545 ; 
  19.     } 
  20.     interror ( curval ) ; 
  21.     curval = 0 ; 
  22.   } 
  23. scanfifteenb () { r_scanfifteenb 
  24.   scanint () ; 
  25.   if ( ( curval < 0 ) || ( curval > 32767 ) ) 
  26.   {
  27.     {
  28.       if ( interaction == 3 ) 
  29.       wakeuptermin () ; 
  30.       printnl ( 133 ) ; 
  31.       print ( 551 ) ; 
  32.     } 
  33.     {
  34.       helpptr = 2 ; 
  35.       helpline [ 1 ] = 552 ; 
  36.       helpline [ 0 ] = 545 ; 
  37.     } 
  38.     interror ( curval ) ; 
  39.     curval = 0 ; 
  40.   } 
  41. scantwentyse () { r_scantwentyse 
  42.   scanint () ; 
  43.   if ( ( curval < 0 ) || ( curval > 134217727 ) ) 
  44.   {
  45.     {
  46.       if ( interaction == 3 ) 
  47.       wakeuptermin () ; 
  48.       printnl ( 133 ) ; 
  49.       print ( 553 ) ; 
  50.     } 
  51.     {
  52.       helpptr = 2 ; 
  53.       helpline [ 1 ] = 554 ; 
  54.       helpline [ 0 ] = 545 ; 
  55.     } 
  56.     interror ( curval ) ; 
  57.     curval = 0 ; 
  58.   } 
  59. scanfontiden () { r_scanfontiden 
  60.   internalfont f ; 
  61.   halfword m ; 
  62.   do { getxtoken () ; 
  63.   } while ( ! ( curcmd != 10 ) ) ; 
  64.   if ( curcmd == 87 ) 
  65.   f = eqtb [ 4578 ] .hh .v.RH ; 
  66.   else if ( curcmd == 86 ) 
  67.   f = curchr ; 
  68.   else if ( curcmd == 85 ) 
  69.   {
  70.     m = curchr ; 
  71.     scanfourbiti () ; 
  72.     f = eqtb [ m + curval ] .hh .v.RH ; 
  73.   } 
  74.   else { 
  75.     {
  76.       if ( interaction == 3 ) 
  77.       wakeuptermin () ; 
  78.       printnl ( 133 ) ; 
  79.       print ( 670 ) ; 
  80.     } 
  81.     {
  82.       helpptr = 2 ; 
  83.       helpline [ 1 ] = 671 ; 
  84.       helpline [ 0 ] = 672 ; 
  85.     } 
  86.     backerror () ; 
  87.     f = 0 ; 
  88.   } 
  89.   curval = f ; 
  90. zfindfontdime ( writing ) 
  91. boolean writing ; 
  92. {r_findfontdime 
  93.   internalfont f ; 
  94.   integer n ; 
  95.   scanint () ; 
  96.   n = curval ; 
  97.   scanfontiden () ; 
  98.   f = curval ; 
  99.   if ( n <= 0 ) 
  100.   curval = fmemptr ; 
  101.   else { 
  102.     if ( writing && ( n <= 4 ) && ( n >= 2 ) && ( fontglue [ f ] != 0 ) ) 
  103.     {
  104.       deletegluere ( fontglue [ f ] ) ; 
  105.       fontglue [ f ] = 0 ; 
  106.     } 
  107.     if ( n > fontparams [ f ] ) 
  108.     if ( f < fontptr ) 
  109.     curval = fmemptr ; 
  110.     else { 
  111.       do { if ( fmemptr == fontmemsize ) 
  112.     overflow ( 677 , fontmemsize ) ; 
  113.     fontinfo [ fmemptr ] .cint = 0 ; 
  114.     incr ( fmemptr ) ; 
  115.     incr ( fontparams [ f ] ) ; 
  116.       } while ( ! ( n == fontparams [ f ] ) ) ; 
  117.       curval = fmemptr - 1 ; 
  118.     } 
  119.     else curval = n + parambase [ f ] ; 
  120.   } 
  121.   if ( curval == fmemptr ) 
  122.   {
  123.     {
  124.       if ( interaction == 3 ) 
  125.       wakeuptermin () ; 
  126.       printnl ( 133 ) ; 
  127.       print ( 655 ) ; 
  128.     } 
  129.     printesc ( hash [ 3268 + f ] .v.RH ) ; 
  130.     print ( 673 ) ; 
  131.     printint ( fontparams [ f ] ) ; 
  132.     print ( 674 ) ; 
  133.     {
  134.       helpptr = 2 ; 
  135.       helpline [ 1 ] = 675 ; 
  136.       helpline [ 0 ] = 676 ; 
  137.     } 
  138.     error () ; 
  139.   } 
  140. zscansomethin ( level , negative ) 
  141. smallnumber level ; 
  142. boolean negative ; 
  143. {r_scansomethin 
  144.   halfword m ; 
  145.   integer p ; 
  146.   m = curchr ; 
  147.   switch ( curcmd ) 
  148.   {case 84 : 
  149.     {
  150.       scansevenbit () ; 
  151.       if ( m == 5139 ) 
  152.       {
  153.     curval = eqtb [ 5139 + curval ] .hh .v.RH ; 
  154.     curvallevel = 0 ; 
  155.       } 
  156.       else if ( m < 5139 ) 
  157.       {
  158.     curval = eqtb [ m + curval ] .hh .v.RH ; 
  159.     curvallevel = 0 ; 
  160.       } 
  161.       else { 
  162.     curval = eqtb [ m + curval ] .cint ; 
  163.     curvallevel = 0 ; 
  164.       } 
  165.     } 
  166.     break ; 
  167.   case 70 : 
  168.   case 71 : 
  169.   case 85 : 
  170.   case 86 : 
  171.   case 87 : 
  172.     if ( level != 5 ) 
  173.     {
  174.       {
  175.     if ( interaction == 3 ) 
  176.     wakeuptermin () ; 
  177.     printnl ( 133 ) ; 
  178.     print ( 522 ) ; 
  179.       } 
  180.       {
  181.     helpptr = 3 ; 
  182.     helpline [ 2 ] = 523 ; 
  183.     helpline [ 1 ] = 524 ; 
  184.     helpline [ 0 ] = 525 ; 
  185.       } 
  186.       backerror () ; 
  187.       {
  188.     curval = 0 ; 
  189.     curvallevel = 1 ; 
  190.       } 
  191.     } 
  192.     else if ( curcmd <= 71 ) 
  193.     {
  194.       if ( curcmd < 71 ) 
  195.       {
  196.     scaneightbit () ; 
  197.     m = 4066 + curval ; 
  198.       } 
  199.       {
  200.     curval = eqtb [ m ] .hh .v.RH ; 
  201.     curvallevel = 5 ; 
  202.       } 
  203.     } 
  204.     else { 
  205.       backinput () ; 
  206.       scanfontiden () ; 
  207.       {
  208.     curval = 3268 + curval ; 
  209.     curvallevel = 4 ; 
  210.       } 
  211.     } 
  212.     break ; 
  213.   case 72 : 
  214.     {
  215.       curval = eqtb [ m ] .cint ; 
  216.       curvallevel = 0 ; 
  217.     } 
  218.     break ; 
  219.   case 73 : 
  220.     {
  221.       curval = eqtb [ m ] .cint ; 
  222.       curvallevel = 1 ; 
  223.     } 
  224.     break ; 
  225.   case 74 : 
  226.     {
  227.       curval = eqtb [ m ] .hh .v.RH ; 
  228.       curvallevel = 2 ; 
  229.     } 
  230.     break ; 
  231.   case 75 : 
  232.     {
  233.       curval = eqtb [ m ] .hh .v.RH ; 
  234.       curvallevel = 3 ; 
  235.     } 
  236.     break ; 
  237.   case 78 : 
  238.     if ( abs ( curlist .modefield ) != m ) 
  239.     {
  240.       {
  241.     if ( interaction == 3 ) 
  242.     wakeuptermin () ; 
  243.     printnl ( 133 ) ; 
  244.     print ( 536 ) ; 
  245.       } 
  246.       printcmdchr ( 78 , m ) ; 
  247.       {
  248.     helpptr = 4 ; 
  249.     helpline [ 3 ] = 537 ; 
  250.     helpline [ 2 ] = 538 ; 
  251.     helpline [ 1 ] = 539 ; 
  252.     helpline [ 0 ] = 540 ; 
  253.       } 
  254.       error () ; 
  255.       if ( level != 5 ) 
  256.       {
  257.     curval = 0 ; 
  258.     curvallevel = 1 ; 
  259.       } 
  260.       else { 
  261.     curval = 0 ; 
  262.     curvallevel = 0 ; 
  263.       } 
  264.     } 
  265.     else { 
  266.       curval = curlist .auxfield ; 
  267.       if ( m == 1 ) 
  268.       curvallevel = 1 ; 
  269.       else curvallevel = 0 ; 
  270.     } 
  271.     break ; 
  272.   case 79 : 
  273.     {
  274.       nest [ nestptr ] = curlist ; 
  275.       p = nestptr ; 
  276.       while ( abs ( nest [ p ] .modefield ) != 1 ) decr ( p ) ; 
  277.       {
  278.     curval = nest [ p ] .pgfield ; 
  279.     curvallevel = 0 ; 
  280.       } 
  281.     } 
  282.     break ; 
  283.   case 81 : 
  284.     {
  285.       if ( m == 0 ) 
  286.       curval = deadcycles ; 
  287.       else curval = insertpenalt ; 
  288.       curvallevel = 0 ; 
  289.     } 
  290.     break ; 
  291.   case 80 : 
  292.     {
  293.       if ( pagecontents == 0 ) 
  294.       if ( m == 0 ) 
  295.       curval = 1073741823 ; 
  296.       else curval = 0 ; 
  297.       else curval = pagesofar [ m ] ; 
  298.       curvallevel = 1 ; 
  299.     } 
  300.     break ; 
  301.   case 83 : 
  302.     {
  303.       if ( eqtb [ 4056 ] .hh .v.RH == 0 ) 
  304.       curval = 0 ; 
  305.       else curval = mem [(long) eqtb [ 4056 ] .hh .v.RH ] .hh .v.LH ; 
  306.       curvallevel = 0 ; 
  307.     } 
  308.     break ; 
  309.   case 82 : 
  310.     {
  311.       scaneightbit () ; 
  312.       if ( eqtb [ 4322 + curval ] .hh .v.RH == 0 ) 
  313.       curval = 0 ; 
  314.       else curval = mem [(long) eqtb [ 4322 + curval ] .hh .v.RH + m ] .cint ; 
  315.       curvallevel = 1 ; 
  316.     } 
  317.     break ; 
  318.   case 67 : 
  319.   case 68 : 
  320.     {
  321.       curval = curchr ; 
  322.       curvallevel = 0 ; 
  323.     } 
  324.     break ; 
  325.   case 76 : 
  326.     {
  327.       findfontdime ( false ) ; 
  328.       fontinfo [ fmemptr ] .cint = 0 ; 
  329.       {
  330.     curval = fontinfo [ curval ] .cint ; 
  331.     curvallevel = 1 ; 
  332.       } 
  333.     } 
  334.     break ; 
  335.   case 77 : 
  336.     {
  337.       scanfontiden () ; 
  338.       if ( m == 0 ) 
  339.       {
  340.     curval = hyphenchar [ curval ] ; 
  341.     curvallevel = 0 ; 
  342.       } 
  343.       else { 
  344.     curval = skewchar [ curval ] ; 
  345.     curvallevel = 0 ; 
  346.       } 
  347.     } 
  348.     break ; 
  349.   case 88 : 
  350.     {
  351.       scaneightbit () ; 
  352.       switch ( m ) 
  353.       {case 0 : 
  354.     curval = eqtb [ 5317 + curval ] .cint ; 
  355.     break ; 
  356.       case 1 : 
  357.     curval = eqtb [ 5721 + curval ] .cint ; 
  358.     break ; 
  359.       case 2 : 
  360.     curval = eqtb [ 3544 + curval ] .hh .v.RH ; 
  361.     break ; 
  362.       case 3 : 
  363.     curval = eqtb [ 3800 + curval ] .hh .v.RH ; 
  364.     break ; 
  365.       } 
  366.       curvallevel = m ; 
  367.     } 
  368.     break ; 
  369.   case 69 : 
  370.     {
  371.       if ( curchr == 2 ) 
  372.       curval = 0 ; 
  373.       else curval = 0 ; 
  374.       curvallevel = curchr ; 
  375.       if ( ! ( curlist .tailfield >= himemmin ) && ( curlist .modefield != 0 ) 
  376.       ) 
  377.       switch ( curchr ) 
  378.       {case 0 : 
  379.     if ( mem [(long) curlist .tailfield ] .hh.b0 == 12 ) 
  380.     curval = mem [(long) curlist .tailfield + 1 ] .cint ; 
  381.     break ; 
  382.       case 1 : 
  383.     if ( mem [(long) curlist .tailfield ] .hh.b0 == 11 ) 
  384.     curval = mem [(long) curlist .tailfield + 1 ] .cint ; 
  385.     break ; 
  386.       case 2 : 
  387.     if ( mem [(long) curlist .tailfield ] .hh.b0 == 10 ) 
  388.     {
  389.       curval = mem [(long) curlist .tailfield + 1 ] .hh .v.LH ; 
  390.       if ( mem [(long) curlist .tailfield ] .hh.b1 == 99 ) 
  391.       curvallevel = 3 ; 
  392.     } 
  393.     break ; 
  394.       } 
  395.       else if ( ( curlist .modefield == 1 ) && ( curlist .tailfield == curlist 
  396.       .headfield ) ) 
  397.       switch ( curchr ) 
  398.       {case 0 : 
  399.     curval = lastpenalty ; 
  400.     break ; 
  401.       case 1 : 
  402.     curval = lastkern ; 
  403.     break ; 
  404.       case 2 : 
  405.     if ( lastglue != 65535L ) 
  406.     curval = lastglue ; 
  407.     break ; 
  408.       } 
  409.     } 
  410.     break ; 
  411.   default : 
  412.     {
  413.       {
  414.     if ( interaction == 3 ) 
  415.     wakeuptermin () ; 
  416.     printnl ( 133 ) ; 
  417.     print ( 541 ) ; 
  418.       } 
  419.       printcmdchr ( curcmd , curchr ) ; 
  420.       print ( 542 ) ; 
  421.       printesc ( 395 ) ; 
  422.       {
  423.     helpptr = 1 ; 
  424.     helpline [ 0 ] = 540 ; 
  425.       } 
  426.       error () ; 
  427.       if ( level != 5 ) 
  428.       {
  429.     curval = 0 ; 
  430.     curvallevel = 1 ; 
  431.       } 
  432.       else { 
  433.     curval = 0 ; 
  434.     curvallevel = 0 ; 
  435.       } 
  436.     } 
  437.     break ; 
  438.   } 
  439.   while ( curvallevel > level ) { 
  440.     if ( curvallevel == 2 ) 
  441.     curval = mem [(long) curval + 1 ] .cint ; 
  442.     else if ( curvallevel == 3 ) 
  443.     muerror () ; 
  444.     decr ( curvallevel ) ; 
  445.   } 
  446.   if ( negative ) 
  447.   if ( curvallevel >= 2 ) 
  448.   {
  449.     curval = newspec ( curval ) ; 
  450.     {
  451.       mem [(long) curval + 1 ] .cint = - mem [(long) curval + 1 ] .cint ; 
  452.       mem [(long) curval + 2 ] .cint = - mem [(long) curval + 2 ] .cint ; 
  453.       mem [(long) curval + 3 ] .cint = - mem [(long) curval + 3 ] .cint ; 
  454.     } 
  455.   } 
  456.   else curval = - curval ; 
  457.   else if ( ( curvallevel >= 2 ) && ( curvallevel <= 3 ) ) 
  458.   incr ( mem [(long) curval ] .hh .v.RH ) ; 
  459. scanint () { /* 30 */ r_scanint 
  460.   boolean negative ; 
  461.   integer m ; 
  462.   smallnumber d ; 
  463.   boolean vacuous ; 
  464.   boolean OKsofar ; 
  465.   radix = 0 ; 
  466.   OKsofar = true ; 
  467.   negative = false ; 
  468.   do { do { getxtoken () ; 
  469.     } while ( ! ( curcmd != 10 ) ) ; 
  470.     if ( curtok == 3117 ) 
  471.     {
  472.       negative = ! negative ; 
  473.       curtok = 3115 ; 
  474.     } 
  475.   } while ( ! ( curtok != 3115 ) ) ; 
  476.   if ( curtok == 3168 ) 
  477.   {
  478.     gettoken () ; 
  479.     if ( curtok < 4096 ) 
  480.     {
  481.       curval = curchr ; 
  482.       if ( curcmd <= 2 ) 
  483.       if ( curcmd == 2 ) 
  484.       incr ( alignstate ) ; 
  485.       else decr ( alignstate ) ; 
  486.     } 
  487.     else if ( curtok < 4225 ) 
  488.     curval = curtok - 4097 ; 
  489.     else curval = curtok - 4225 ; 
  490.     if ( curval > 127 ) 
  491.     {
  492.       {
  493.     if ( interaction == 3 ) 
  494.     wakeuptermin () ; 
  495.     printnl ( 133 ) ; 
  496.     print ( 555 ) ; 
  497.       } 
  498.       {
  499.     helpptr = 2 ; 
  500.     helpline [ 1 ] = 556 ; 
  501.     helpline [ 0 ] = 557 ; 
  502.       } 
  503.       curval = 48 ; 
  504.       backerror () ; 
  505.     } 
  506.     else { 
  507.       getxtoken () ; 
  508.       if ( curcmd != 10 ) 
  509.       backinput () ; 
  510.     } 
  511.   } 
  512.   else if ( ( curcmd >= 67 ) && ( curcmd <= 88 ) ) 
  513.   scansomethin ( 0 , false ) ; 
  514.   else { 
  515.     radix = 10 ; 
  516.     m = 214748364 ; 
  517.     if ( curtok == 3111 ) 
  518.     {
  519.       radix = 8 ; 
  520.       m = 268435456 ; 
  521.       getxtoken () ; 
  522.     } 
  523.     else if ( curtok == 3106 ) 
  524.     {
  525.       radix = 16 ; 
  526.       m = 134217728 ; 
  527.       getxtoken () ; 
  528.     } 
  529.     vacuous = true ; 
  530.     curval = 0 ; 
  531.     while ( true ) { 
  532.       if ( ( curtok < 3120 + radix ) && ( curtok >= 3120 ) && ( curtok <= 3129 
  533.       ) ) 
  534.       d = curtok - 3120 ; 
  535.       else if ( radix == 16 ) 
  536.       if ( ( curtok <= 2886 ) && ( curtok >= 2881 ) ) 
  537.       d = curtok - 2871 ; 
  538.       else if ( ( curtok <= 3142 ) && ( curtok >= 3137 ) ) 
  539.       d = curtok - 3127 ; 
  540.       else goto lab30 ; 
  541.       else goto lab30 ; 
  542.       vacuous = false ; 
  543.       if ( ( curval >= m ) && ( ( curval > m ) || ( d > 7 ) || ( radix != 10 ) 
  544.       ) ) 
  545.       {
  546.     if ( OKsofar ) 
  547.     {
  548.       {
  549.         if ( interaction == 3 ) 
  550.         wakeuptermin () ; 
  551.         printnl ( 133 ) ; 
  552.         print ( 558 ) ; 
  553.       } 
  554.       {
  555.         helpptr = 2 ; 
  556.         helpline [ 1 ] = 559 ; 
  557.         helpline [ 0 ] = 560 ; 
  558.       } 
  559.       error () ; 
  560.       curval = 2147483647 ; 
  561.       OKsofar = false ; 
  562.     } 
  563.       } 
  564.       else curval = curval * radix + d ; 
  565.       getxtoken () ; 
  566.     } 
  567.     lab30: ; 
  568.     if ( vacuous ) 
  569.     {
  570.       {
  571.     if ( interaction == 3 ) 
  572.     wakeuptermin () ; 
  573.     printnl ( 133 ) ; 
  574.     print ( 522 ) ; 
  575.       } 
  576.       {
  577.     helpptr = 3 ; 
  578.     helpline [ 2 ] = 523 ; 
  579.     helpline [ 1 ] = 524 ; 
  580.     helpline [ 0 ] = 525 ; 
  581.       } 
  582.       backerror () ; 
  583.     } 
  584.     else if ( curcmd != 10 ) 
  585.     backinput () ; 
  586.   } 
  587.   if ( negative ) 
  588.   curval = - curval ; 
  589. zscandimen ( mu , inf , shortcut ) 
  590. boolean mu , inf , shortcut ; 
  591. {/* 30 31 32 40 45 88 89 */ r_scandimen 
  592.   boolean negative ; 
  593.   integer f ; 
  594.   integer num, denom ; 
  595.   smallnumber k ; 
  596.   scaled v ; 
  597.   integer savecurval ; 
  598.   f = 0 ; 
  599.   aritherror = false ; 
  600.   curorder = 0 ; 
  601.   negative = false ; 
  602.   if ( ! shortcut ) 
  603.   {
  604.     negative = false ; 
  605.     do { do { getxtoken () ; 
  606.       } while ( ! ( curcmd != 10 ) ) ; 
  607.       if ( curtok == 3117 ) 
  608.       {
  609.     negative = ! negative ; 
  610.     curtok = 3115 ; 
  611.       } 
  612.     } while ( ! ( curtok != 3115 ) ) ; 
  613.     if ( ( curcmd >= 67 ) && ( curcmd <= 88 ) ) 
  614.     if ( mu ) 
  615.     {
  616.       scansomethin ( 3 , false ) ; 
  617.       if ( curvallevel >= 2 ) 
  618.       {
  619.     v = mem [(long) curval + 1 ] .cint ; 
  620.     deletegluere ( curval ) ; 
  621.     curval = v ; 
  622.       } 
  623.       if ( curvallevel == 3 ) 
  624.       goto lab89 ; 
  625.       if ( curvallevel != 0 ) 
  626.       muerror () ; 
  627.     } 
  628.     else { 
  629.       scansomethin ( 1 , false ) ; 
  630.       if ( curvallevel == 1 ) 
  631.       goto lab89 ; 
  632.     } 
  633.     else { 
  634.       backinput () ; 
  635.       if ( curtok == 3116 ) 
  636.       curtok = 3118 ; 
  637.       if ( curtok != 3118 ) 
  638.       scanint () ; 
  639.       else { 
  640.     radix = 10 ; 
  641.     curval = 0 ; 
  642.       } 
  643.       if ( curtok == 3116 ) 
  644.       curtok = 3118 ; 
  645.       if ( ( radix == 10 ) && ( curtok == 3118 ) ) 
  646.       {
  647.     k = 0 ; 
  648.     gettoken () ; 
  649.     while ( true ) { 
  650.       getxtoken () ; 
  651.       if ( ( curtok > 3129 ) || ( curtok < 3120 ) ) 
  652.       goto lab31 ; 
  653.       if ( k < 17 ) 
  654.       {
  655.         dig [ k ] = curtok - 3120 ; 
  656.         incr ( k ) ; 
  657.       } 
  658.     } 
  659.     lab31: f = rounddecimal ( k ) ; 
  660.     if ( curcmd != 10 ) 
  661.     backinput () ; 
  662.       } 
  663.     } 
  664.   } 
  665.   if ( curval < 0 ) 
  666.   {
  667.     negative = ! negative ; 
  668.     curval = - curval ; 
  669.   } 
  670.   if ( inf ) 
  671.   if ( scankeyword ( 180 ) ) 
  672.   {
  673.     curorder = 1 ; 
  674.     while ( scankeyword ( 108 ) ) { 
  675.       if ( curorder == 3 ) 
  676.       {
  677.     {
  678.       if ( interaction == 3 ) 
  679.       wakeuptermin () ; 
  680.       printnl ( 133 ) ; 
  681.       print ( 562 ) ; 
  682.     } 
  683.     print ( 563 ) ; 
  684.     {
  685.       helpptr = 1 ; 
  686.       helpline [ 0 ] = 564 ; 
  687.     } 
  688.     error () ; 
  689.       } 
  690.       else incr ( curorder ) ; 
  691.     } 
  692.     goto lab88 ; 
  693.   } 
  694.   savecurval = curval ; 
  695.   do { getxtoken () ; 
  696.   } while ( ! ( curcmd != 10 ) ) ; 
  697.   if ( ( curcmd < 67 ) || ( curcmd > 88 ) ) 
  698.   backinput () ; 
  699.   else { 
  700.     if ( mu ) 
  701.     {
  702.       scansomethin ( 3 , false ) ; 
  703.       if ( curvallevel >= 2 ) 
  704.       {
  705.     v = mem [(long) curval + 1 ] .cint ; 
  706.     deletegluere ( curval ) ; 
  707.     curval = v ; 
  708.       } 
  709.       if ( curvallevel != 3 ) 
  710.       muerror () ; 
  711.     } 
  712.     else scansomethin ( 1 , false ) ; 
  713.     v = curval ; 
  714.     goto lab40 ; 
  715.   } 
  716.   if ( mu ) 
  717.   goto lab45 ; 
  718.   if ( scankeyword ( 565 ) ) 
  719.   v = ( fontinfo [ 6 + parambase [ eqtb [ 4578 ] .hh .v.RH ] ] .cint ) ; 
  720.   else if ( scankeyword ( 566 ) ) 
  721.   v = ( fontinfo [ 5 + parambase [ eqtb [ 4578 ] .hh .v.RH ] ] .cint ) ; 
  722.   else goto lab45 ; 
  723.   {
  724.     getxtoken () ; 
  725.     if ( curcmd != 10 ) 
  726.     backinput () ; 
  727.   } 
  728.   lab40: curval = nxplusy ( savecurval , v , xnoverd ( v , f , 65536 ) ) ; 
  729.   goto lab89 ; 
  730.   lab45: ; 
  731.   if ( mu ) 
  732.   if ( scankeyword ( 205 ) ) 
  733.   goto lab88 ; 
  734.   else { 
  735.     {
  736.       if ( interaction == 3 ) 
  737.       wakeuptermin () ; 
  738.       printnl ( 133 ) ; 
  739.       print ( 562 ) ; 
  740.     } 
  741.     print ( 567 ) ; 
  742.     {
  743.       helpptr = 4 ; 
  744.       helpline [ 3 ] = 568 ; 
  745.       helpline [ 2 ] = 569 ; 
  746.       helpline [ 1 ] = 570 ; 
  747.       helpline [ 0 ] = 571 ; 
  748.     } 
  749.     error () ; 
  750.     goto lab88 ; 
  751.   } 
  752.   if ( scankeyword ( 561 ) ) 
  753.   {
  754.     preparemag () ; 
  755.     if ( eqtb [ 5284 ] .cint != 1000 ) 
  756.     {
  757.       curval = xnoverd ( curval , 1000 , eqtb [ 5284 ] .cint ) ; 
  758.       f = ( 1000 * f + 65536 * remainder ) / eqtb [ 5284 ] .cint ; 
  759.       curval = curval + ( f / 65536 ) ; 
  760.       f = f % 65536 ; 
  761.     } 
  762.   } 
  763.   if ( scankeyword ( 262 ) ) 
  764.   goto lab88 ; 
  765.   if ( scankeyword ( 572 ) ) 
  766.   {
  767.     num = 7227 ; 
  768.     denom = 100 ; 
  769.   } 
  770.   else if ( scankeyword ( 573 ) ) 
  771.   {
  772.     num = 12 ; 
  773.     denom = 1 ; 
  774.   } 
  775.   else if ( scankeyword ( 574 ) ) 
  776.   {
  777.     num = 7227 ; 
  778.     denom = 254 ; 
  779.   } 
  780.   else if ( scankeyword ( 575 ) ) 
  781.   {
  782.     num = 7227 ; 
  783.     denom = 2540 ; 
  784.   } 
  785.   else if ( scankeyword ( 576 ) ) 
  786.   {
  787.     num = 7227 ; 
  788.     denom = 7200 ; 
  789.   } 
  790.   else if ( scankeyword ( 577 ) ) 
  791.   {
  792.     num = 1238 ; 
  793.     denom = 1157 ; 
  794.   } 
  795.   else if ( scankeyword ( 578 ) ) 
  796.   {
  797.     num = 14856 ; 
  798.     denom = 1157 ; 
  799.   } 
  800.   else if ( scankeyword ( 579 ) ) 
  801.   goto lab30 ; 
  802.   else { 
  803.     {
  804.       if ( interaction == 3 ) 
  805.       wakeuptermin () ; 
  806.       printnl ( 133 ) ; 
  807.       print ( 562 ) ; 
  808.     } 
  809.     print ( 580 ) ; 
  810.     {
  811.       helpptr = 6 ; 
  812.       helpline [ 5 ] = 581 ; 
  813.       helpline [ 4 ] = 582 ; 
  814.       helpline [ 3 ] = 583 ; 
  815.       helpline [ 2 ] = 569 ; 
  816.       helpline [ 1 ] = 570 ; 
  817.       helpline [ 0 ] = 571 ; 
  818.     } 
  819.     error () ; 
  820.     goto lab32 ; 
  821.   } 
  822.   curval = xnoverd ( curval , num , denom ) ; 
  823.   f = ( num * f + 65536 * remainder ) / denom ; 
  824.   curval = curval + ( f / 65536 ) ; 
  825.   f = f % 65536 ; 
  826.   lab32: ; 
  827.   lab88: if ( curval >= 16384 ) 
  828.   aritherror = true ; 
  829.   else curval = curval * 65536 + f ; 
  830.   lab30: ; 
  831.   {
  832.     getxtoken () ; 
  833.     if ( curcmd != 10 ) 
  834.     backinput () ; 
  835.   } 
  836.   lab89: if ( aritherror || ( abs ( curval ) >= 1073741824 ) ) 
  837.   {
  838.     {
  839.       if ( interaction == 3 ) 
  840.       wakeuptermin () ; 
  841.       printnl ( 133 ) ; 
  842.       print ( 584 ) ; 
  843.     } 
  844.     {
  845.       helpptr = 2 ; 
  846.       helpline [ 1 ] = 585 ; 
  847.       helpline [ 0 ] = 586 ; 
  848.     } 
  849.     error () ; 
  850.     curval = 1073741823 ; 
  851.     aritherror = false ; 
  852.   } 
  853.   if ( negative ) 
  854.   curval = - curval ; 
  855. zscanglue ( level ) 
  856. smallnumber level ; 
  857. {/* 10 */ r_scanglue 
  858.   boolean negative ; 
  859.   halfword q ; 
  860.   boolean mu ; 
  861.   mu = ( level == 3 ) ; 
  862.   negative = false ; 
  863.   do { do { getxtoken () ; 
  864.     } while ( ! ( curcmd != 10 ) ) ; 
  865.     if ( curtok == 3117 ) 
  866.     {
  867.       negative = ! negative ; 
  868.       curtok = 3115 ; 
  869.     } 
  870.   } while ( ! ( curtok != 3115 ) ) ; 
  871.   if ( ( curcmd >= 67 ) && ( curcmd <= 88 ) ) 
  872.   {
  873.     scansomethin ( level , negative ) ; 
  874.     if ( curvallevel >= 2 ) 
  875.     {
  876.       if ( curvallevel != level ) 
  877.       muerror () ; 
  878.       return ; 
  879.     } 
  880.     if ( curvallevel == 0 ) 
  881.     scandimen ( mu , false , true ) ; 
  882.     else if ( level == 3 ) 
  883.     muerror () ; 
  884.   } 
  885.   else { 
  886.     backinput () ; 
  887.     scandimen ( mu , false , false ) ; 
  888.     if ( negative ) 
  889.     curval = - curval ; 
  890.   } 
  891.   q = newspec ( 0 ) ; 
  892.   mem [(long) q + 1 ] .cint = curval ; 
  893.   if ( scankeyword ( 587 ) ) 
  894.   {
  895.     scandimen ( mu , true , false ) ; 
  896.     mem [(long) q + 2 ] .cint = curval ; 
  897.     mem [(long) q ] .hh.b0 = curorder ; 
  898.   } 
  899.   if ( scankeyword ( 588 ) ) 
  900.   {
  901.     scandimen ( mu , true , false ) ; 
  902.     mem [(long) q + 3 ] .cint = curval ; 
  903.     mem [(long) q ] .hh.b1 = curorder ; 
  904.   } 
  905.   curval = q ; 
  906. halfword scanrulespec () { /* 21 */ register halfword Result; 
  907.   r_scanrulespec 
  908.   halfword q ; 
  909.   q = newrule () ; 
  910.   if ( curcmd == 35 ) 
  911.   mem [(long) q + 1 ] .cint = 26214 ; 
  912.   else { 
  913.     mem [(long) q + 3 ] .cint = 26214 ; 
  914.     mem [(long) q + 2 ] .cint = 0 ; 
  915.   } 
  916.   lab21: if ( scankeyword ( 589 ) ) 
  917.   {
  918.     scandimen ( false , false , false ) ; 
  919.     mem [(long) q + 1 ] .cint = curval ; 
  920.     goto lab21 ; 
  921.   } 
  922.   if ( scankeyword ( 590 ) ) 
  923.   {
  924.     scandimen ( false , false , false ) ; 
  925.     mem [(long) q + 3 ] .cint = curval ; 
  926.     goto lab21 ; 
  927.   } 
  928.   if ( scankeyword ( 591 ) ) 
  929.   {
  930.     scandimen ( false , false , false ) ; 
  931.     mem [(long) q + 2 ] .cint = curval ; 
  932.     goto lab21 ; 
  933.   } 
  934.   Result = q ; 
  935.   return(Result) ; 
  936. halfword strtoks () { register halfword Result; r_strtoks 
  937.   halfword p ; 
  938.   halfword q ; 
  939.   halfword t ; 
  940.   poolpointer k ; 
  941.   {
  942.     if ( poolptr + 1 > poolsize ) 
  943.     overflow ( 128 , poolsize - initpoolptr ) ; 
  944.   } 
  945.   p = memtop - 3 ; 
  946.   mem [(long) p ] .hh .v.RH = 0 ; 
  947.   k = strstart [ strptr ] ; 
  948.   while ( k < poolptr ) { 
  949.     t = strpool [ k ] ; 
  950.     if ( t == 32 ) 
  951.     t = 2592 ; 
  952.     else t = 3072 + t ; 
  953.     {
  954.       {
  955.     q = avail ; 
  956.     if ( q == 0 ) 
  957.     q = getavail () ; 
  958.     else { 
  959.       avail = mem [(long) q ] .hh .v.RH ; 
  960.       mem [(long) q ] .hh .v.RH = 0 ; 
  961.  
  962. #ifdef STAT
  963.       incr ( dynused ) ; 
  964. #endif /* STAT */
  965.     } 
  966.       } 
  967.       mem [(long) p ] .hh .v.RH = q ; 
  968.       mem [(long) q ] .hh .v.LH = t ; 
  969.       p = q ; 
  970.     } 
  971.     incr ( k ) ; 
  972.   } 
  973.   poolptr = strstart [ strptr ] ; 
  974.   Result = p ; 
  975.   return(Result) ; 
  976. halfword thetoks () { register halfword Result; r_thetoks 
  977.   quarterword oldsetting ; 
  978.   halfword p, q, r ; 
  979.   getxtoken () ; 
  980.   scansomethin ( 5 , false ) ; 
  981.   if ( curvallevel >= 4 ) 
  982.   {
  983.     p = memtop - 3 ; 
  984.     mem [(long) p ] .hh .v.RH = 0 ; 
  985.     if ( curvallevel == 4 ) 
  986.     {
  987.       q = getavail () ; 
  988.       mem [(long) p ] .hh .v.RH = q ; 
  989.       mem [(long) q ] .hh .v.LH = 4096 + curval ; 
  990.       p = q ; 
  991.     } 
  992.     else if ( curval != 0 ) 
  993.     {
  994.       r = mem [(long) curval ] .hh .v.RH ; 
  995.       while ( r != 0 ) { 
  996.     {
  997.       {
  998.         q = avail ; 
  999.         if ( q == 0 ) 
  1000.         q = getavail () ; 
  1001.         else { 
  1002.           avail = mem [(long) q ] .hh .v.RH ; 
  1003.           mem [(long) q ] .hh .v.RH = 0 ; 
  1004.  
  1005. #ifdef STAT
  1006.           incr ( dynused ) ; 
  1007. #endif /* STAT */
  1008.         } 
  1009.       } 
  1010.       mem [(long) p ] .hh .v.RH = q ; 
  1011.       mem [(long) q ] .hh .v.LH = mem [(long) r ] .hh .v.LH ; 
  1012.       p = q ; 
  1013.     } 
  1014.     r = mem [(long) r ] .hh .v.RH ; 
  1015.       } 
  1016.     } 
  1017.     Result = p ; 
  1018.   } 
  1019.   else { 
  1020.     oldsetting = selector ; 
  1021.     selector = 21 ; 
  1022.     switch ( curvallevel ) 
  1023.     {case 0 : 
  1024.       printint ( curval ) ; 
  1025.       break ; 
  1026.     case 1 : 
  1027.       {
  1028.     printscaled ( curval ) ; 
  1029.     print ( 262 ) ; 
  1030.       } 
  1031.       break ; 
  1032.     case 2 : 
  1033.       {
  1034.     printspec ( curval , 262 ) ; 
  1035.     deletegluere ( curval ) ; 
  1036.       } 
  1037.       break ; 
  1038.     case 3 : 
  1039.       {
  1040.     printspec ( curval , 205 ) ; 
  1041.     deletegluere ( curval ) ; 
  1042.       } 
  1043.       break ; 
  1044.     } 
  1045.     selector = oldsetting ; 
  1046.     Result = strtoks () ; 
  1047.   } 
  1048.   return(Result) ; 
  1049. insthetoks () { r_insthetoks 
  1050.   mem [(long) memtop - 12 ] .hh .v.RH = thetoks () ; 
  1051.   begintokenli ( mem [(long) memtop - 3 ] .hh .v.RH , 4 ) ; 
  1052. convtoks () { r_convtoks 
  1053.   quarterword oldsetting ; 
  1054.   quarterword c ; 
  1055.   smallnumber savescanners ; 
  1056.   c = curchr ; 
  1057.   switch ( c ) 
  1058.   {case 0 : 
  1059.   case 1 : 
  1060.     scanint () ; 
  1061.     break ; 
  1062.   case 2 : 
  1063.   case 3 : 
  1064.     {
  1065.       savescanners = scannerstatu ; 
  1066.       scannerstatu = 0 ; 
  1067.       gettoken () ; 
  1068.       scannerstatu = savescanners ; 
  1069.     } 
  1070.     break ; 
  1071.   case 4 : 
  1072.     scanfontiden () ; 
  1073.     break ; 
  1074.   case 5 : 
  1075.     if ( jobname == 0 ) 
  1076.     openlogfile () ; 
  1077.     break ; 
  1078.   } 
  1079.   oldsetting = selector ; 
  1080.   selector = 21 ; 
  1081.   switch ( c ) 
  1082.   {case 0 : 
  1083.     printint ( curval ) ; 
  1084.     break ; 
  1085.   case 1 : 
  1086.     printromanin ( curval ) ; 
  1087.     break ; 
  1088.   case 2 : 
  1089.     if ( curcs != 0 ) 
  1090.     sprintcs ( curcs ) ; 
  1091.     else printchar ( curchr ) ; 
  1092.     break ; 
  1093.   case 3 : 
  1094.     printmeaning () ; 
  1095.     break ; 
  1096.   case 4 : 
  1097.     {
  1098.       print ( fontname [ curval ] ) ; 
  1099.       if ( fontsize [ curval ] != fontdsize [ curval ] ) 
  1100.       {
  1101.     print ( 598 ) ; 
  1102.     printscaled ( fontsize [ curval ] ) ; 
  1103.     print ( 262 ) ; 
  1104.       } 
  1105.     } 
  1106.     break ; 
  1107.   case 5 : 
  1108.     print ( jobname ) ; 
  1109.     break ; 
  1110.   } 
  1111.   selector = oldsetting ; 
  1112.   mem [(long) memtop - 12 ] .hh .v.RH = strtoks () ; 
  1113.   begintokenli ( mem [(long) memtop - 3 ] .hh .v.RH , 4 ) ; 
  1114. halfword zscantoks ( macrodef , xpand ) 
  1115. boolean macrodef , xpand ; 
  1116. {/* 40 30 31 32 */ register halfword Result; r_scantoks 
  1117.   halfword t ; 
  1118.   halfword s ; 
  1119.   halfword p ; 
  1120.   halfword q ; 
  1121.   halfword unbalance ; 
  1122.   halfword hashbrace ; 
  1123.   if ( macrodef ) 
  1124.   scannerstatu = 2 ; 
  1125.   else scannerstatu = 5 ; 
  1126.   warningindex = curcs ; 
  1127.   defref = getavail () ; 
  1128.   mem [(long) defref ] .hh .v.LH = 0 ; 
  1129.   p = defref ; 
  1130.   hashbrace = 0 ; 
  1131.   t = 3120 ; 
  1132.   if ( macrodef ) 
  1133.   {
  1134.     while ( true ) { 
  1135.       gettoken () ; 
  1136.       if ( curtok < 768 ) 
  1137.       goto lab31 ; 
  1138.       if ( curcmd == 6 ) 
  1139.       {
  1140.     s = 3328 + curchr ; 
  1141.     gettoken () ; 
  1142.     if ( curcmd == 1 ) 
  1143.     {
  1144.       hashbrace = curtok ; 
  1145.       {
  1146.         q = getavail () ; 
  1147.         mem [(long) p ] .hh .v.RH = q ; 
  1148.         mem [(long) q ] .hh .v.LH = curtok ; 
  1149.         p = q ; 
  1150.       } 
  1151.       {
  1152.         q = getavail () ; 
  1153.         mem [(long) p ] .hh .v.RH = q ; 
  1154.         mem [(long) q ] .hh .v.LH = 3584 ; 
  1155.         p = q ; 
  1156.       } 
  1157.       goto lab30 ; 
  1158.     } 
  1159.     if ( t == 3129 ) 
  1160.     {
  1161.       {
  1162.         if ( interaction == 3 ) 
  1163.         wakeuptermin () ; 
  1164.         printnl ( 133 ) ; 
  1165.         print ( 601 ) ; 
  1166.       } 
  1167.       {
  1168.         helpptr = 1 ; 
  1169.         helpline [ 0 ] = 602 ; 
  1170.       } 
  1171.       error () ; 
  1172.     } 
  1173.     else { 
  1174.       incr ( t ) ; 
  1175.       if ( curtok != t ) 
  1176.       {
  1177.         {
  1178.           if ( interaction == 3 ) 
  1179.           wakeuptermin () ; 
  1180.           printnl ( 133 ) ; 
  1181.           print ( 603 ) ; 
  1182.         } 
  1183.         {
  1184.           helpptr = 2 ; 
  1185.           helpline [ 1 ] = 604 ; 
  1186.           helpline [ 0 ] = 605 ; 
  1187.         } 
  1188.         backerror () ; 
  1189.       } 
  1190.       curtok = s ; 
  1191.     } 
  1192.       } 
  1193.       {
  1194.     q = getavail () ; 
  1195.     mem [(long) p ] .hh .v.RH = q ; 
  1196.     mem [(long) q ] .hh .v.LH = curtok ; 
  1197.     p = q ; 
  1198.       } 
  1199.     } 
  1200.     lab31: { 
  1201.       q = getavail () ; 
  1202.       mem [(long) p ] .hh .v.RH = q ; 
  1203.       mem [(long) q ] .hh .v.LH = 3584 ; 
  1204.       p = q ; 
  1205.     } 
  1206.     if ( curcmd == 2 ) 
  1207.     {
  1208.       {
  1209.     if ( interaction == 3 ) 
  1210.     wakeuptermin () ; 
  1211.     printnl ( 133 ) ; 
  1212.     print ( 515 ) ; 
  1213.       } 
  1214.       incr ( alignstate ) ; 
  1215.       {
  1216.     helpptr = 2 ; 
  1217.     helpline [ 1 ] = 599 ; 
  1218.     helpline [ 0 ] = 600 ; 
  1219.       } 
  1220.       error () ; 
  1221.       goto lab40 ; 
  1222.     } 
  1223.     lab30: ; 
  1224.   } 
  1225.   else scanleftbrac () ; 
  1226.   unbalance = 1 ; 
  1227.   while ( true ) { 
  1228.     if ( xpand ) 
  1229.     {
  1230.       while ( true ) { 
  1231.     getnext () ; 
  1232.     if ( curcmd <= 99 ) 
  1233.     goto lab32 ; 
  1234.     if ( curcmd != 108 ) 
  1235.     expand () ; 
  1236.     else { 
  1237.       q = thetoks () ; 
  1238.       if ( mem [(long) memtop - 3 ] .hh .v.RH != 0 ) 
  1239.       {
  1240.         mem [(long) p ] .hh .v.RH = mem [(long) memtop - 3 ] .hh .v.RH ; 
  1241.         p = q ; 
  1242.       } 
  1243.     } 
  1244.       } 
  1245.       lab32: xtoken () ; 
  1246.     } 
  1247.     else gettoken () ; 
  1248.     if ( curtok < 768 ) 
  1249.     if ( curcmd < 2 ) 
  1250.     incr ( unbalance ) ; 
  1251.     else { 
  1252.       decr ( unbalance ) ; 
  1253.       if ( unbalance == 0 ) 
  1254.       goto lab40 ; 
  1255.     } 
  1256.     else if ( curcmd == 6 ) 
  1257.     if ( macrodef ) 
  1258.     {
  1259.       s = curtok ; 
  1260.       if ( xpand ) 
  1261.       getxtoken () ; 
  1262.       else gettoken () ; 
  1263.       if ( curcmd != 6 ) 
  1264.       if ( ( curtok <= 3120 ) || ( curtok > t ) ) 
  1265.       {
  1266.     {
  1267.       if ( interaction == 3 ) 
  1268.       wakeuptermin () ; 
  1269.       printnl ( 133 ) ; 
  1270.       print ( 606 ) ; 
  1271.     } 
  1272.     sprintcs ( warningindex ) ; 
  1273.     {
  1274.       helpptr = 3 ; 
  1275.       helpline [ 2 ] = 607 ; 
  1276.       helpline [ 1 ] = 608 ; 
  1277.       helpline [ 0 ] = 609 ; 
  1278.     } 
  1279.     backerror () ; 
  1280.     curtok = s ; 
  1281.       } 
  1282.       else curtok = 1232 + curchr ; 
  1283.     } 
  1284.     {
  1285.       q = getavail () ; 
  1286.       mem [(long) p ] .hh .v.RH = q ; 
  1287.       mem [(long) q ] .hh .v.LH = curtok ; 
  1288.       p = q ; 
  1289.     } 
  1290.   } 
  1291.   lab40: scannerstatu = 0 ; 
  1292.   if ( hashbrace != 0 ) 
  1293.   {
  1294.     q = getavail () ; 
  1295.     mem [(long) p ] .hh .v.RH = q ; 
  1296.     mem [(long) q ] .hh .v.LH = hashbrace ; 
  1297.     p = q ; 
  1298.   } 
  1299.   Result = p ; 
  1300.   return(Result) ; 
  1301. zreadtoks ( n , r ) 
  1302. integer n ; 
  1303. halfword r ; 
  1304. {/* 30 */ r_readtoks 
  1305.   halfword p ; 
  1306.   halfword q ; 
  1307.   integer s ; 
  1308.   smallnumber m ; 
  1309.   scannerstatu = 2 ; 
  1310.   warningindex = r ; 
  1311.   defref = getavail () ; 
  1312.   mem [(long) defref ] .hh .v.LH = 0 ; 
  1313.   p = defref ; 
  1314.   {
  1315.     q = getavail () ; 
  1316.     mem [(long) p ] .hh .v.RH = q ; 
  1317.     mem [(long) q ] .hh .v.LH = 3584 ; 
  1318.     p = q ; 
  1319.   } 
  1320.   if ( ( n < 0 ) || ( n > 15 ) ) 
  1321.   m = 16 ; 
  1322.   else m = n ; 
  1323.   s = alignstate ; 
  1324.   alignstate = 1000000 ; 
  1325.   do { beginfilerea () ; 
  1326.     curinput .namefield = m + 1 ; 
  1327.     if ( readopen [ m ] == 2 ) 
  1328.     if ( interaction > 1 ) 
  1329.     if ( n < 0 ) 
  1330.     {
  1331.       wakeuptermin () ; 
  1332.       print ( 206 ) ; 
  1333.       terminput () ; 
  1334.     } 
  1335.     else { 
  1336.       wakeuptermin () ; 
  1337.       println () ; 
  1338.       sprintcs ( r ) ; 
  1339.       {
  1340.     wakeuptermin () ; 
  1341.     print ( 61 ) ; 
  1342.     terminput () ; 
  1343.       } 
  1344.       n = - 1 ; 
  1345.     } 
  1346.     else fatalerror ( 610 ) ; 
  1347.     else if ( readopen [ m ] == 1 ) 
  1348.     if ( inputln ( readfile [ m ] , false ) ) 
  1349.     readopen [ m ] = 0 ; 
  1350.     else { 
  1351.       aclose ( readfile [ m ] ) ; 
  1352.       readopen [ m ] = 2 ; 
  1353.     } 
  1354.     else { 
  1355.       if ( ! inputln ( readfile [ m ] , true ) ) 
  1356.       {
  1357.     aclose ( readfile [ m ] ) ; 
  1358.     readopen [ m ] = 2 ; 
  1359.     if ( alignstate != 1000000 ) 
  1360.     {
  1361.       runaway () ; 
  1362.       {
  1363.         if ( interaction == 3 ) 
  1364.         wakeuptermin () ; 
  1365.         printnl ( 133 ) ; 
  1366.         print ( 611 ) ; 
  1367.       } 
  1368.       printesc ( 392 ) ; 
  1369.       {
  1370.         helpptr = 1 ; 
  1371.         helpline [ 0 ] = 612 ; 
  1372.       } 
  1373.       alignstate = 1000000 ; 
  1374.       error () ; 
  1375.     } 
  1376.       } 
  1377.     } 
  1378.     curinput .limitfield = last ; 
  1379.     if ( ( eqtb [ 5315 ] .cint < 0 ) || ( eqtb [ 5315 ] .cint > 127 ) ) 
  1380.     decr ( curinput .limitfield ) ; 
  1381.     else buffer [ curinput .limitfield ] = eqtb [ 5315 ] .cint ; 
  1382.     first = curinput .limitfield + 1 ; 
  1383.     curinput .locfield = curinput .startfield ; 
  1384.     curinput .statefield = 33 ; 
  1385.     while ( true ) { 
  1386.       gettoken () ; 
  1387.       if ( curtok == 0 ) 
  1388.       goto lab30 ; 
  1389.       {
  1390.     q = getavail () ; 
  1391.     mem [(long) p ] .hh .v.RH = q ; 
  1392.     mem [(long) q ] .hh .v.LH = curtok ; 
  1393.     p = q ; 
  1394.       } 
  1395.     } 
  1396.     lab30: endfilereadi () ; 
  1397.   } while ( ! ( alignstate == 1000000 ) ) ; 
  1398.   curval = defref ; 
  1399.   scannerstatu = 0 ; 
  1400.   alignstate = s ; 
  1401. passtext () { /* 30 */ r_passtext 
  1402.   integer l ; 
  1403.   smallnumber savescanners ; 
  1404.   savescanners = scannerstatu ; 
  1405.   scannerstatu = 1 ; 
  1406.   l = 0 ; 
  1407.   skipline = line ; 
  1408.   while ( true ) { 
  1409.     getnext () ; 
  1410.     if ( curcmd == 105 ) 
  1411.     {
  1412.       if ( l == 0 ) 
  1413.       goto lab30 ; 
  1414.       if ( curchr == 2 ) 
  1415.       decr ( l ) ; 
  1416.     } 
  1417.     else if ( curcmd == 104 ) 
  1418.     incr ( l ) ; 
  1419.   } 
  1420.   lab30: scannerstatu = savescanners ; 
  1421. zchangeiflimi ( l , p ) 
  1422. smallnumber l ; 
  1423. halfword p ; 
  1424. {/* 10 */ r_changeiflimi 
  1425.   halfword q ; 
  1426.   if ( p == condptr ) 
  1427.   iflimit = l ; 
  1428.   else { 
  1429.     q = condptr ; 
  1430.     while ( true ) { 
  1431.       if ( q == 0 ) 
  1432.       confusion ( 613 ) ; 
  1433.       if ( mem [(long) q ] .hh .v.RH == p ) 
  1434.       {
  1435.     mem [(long) q ] .hh.b0 = l ; 
  1436.     return ; 
  1437.       } 
  1438.       q = mem [(long) q ] .hh .v.RH ; 
  1439.     } 
  1440.   } 
  1441. conditional () { /* 10 50 */ r_conditional 
  1442.   boolean b ; 
  1443.   quarterword r ; 
  1444.   integer m, n ; 
  1445.   halfword p, q ; 
  1446.   smallnumber savescanners ; 
  1447.   halfword savecondptr ; 
  1448.   smallnumber thisif ; 
  1449.   {
  1450.     p = getnode ( 2 ) ; 
  1451.     mem [(long) p ] .hh .v.RH = condptr ; 
  1452.     mem [(long) p ] .hh.b0 = iflimit ; 
  1453.     mem [(long) p ] .hh.b1 = curif ; 
  1454.     mem [(long) p + 1 ] .cint = ifline ; 
  1455.     condptr = p ; 
  1456.     curif = curchr ; 
  1457.     iflimit = 1 ; 
  1458.     ifline = line ; 
  1459.   } 
  1460.   savecondptr = condptr ; 
  1461.   thisif = curchr ; 
  1462.   switch ( thisif ) 
  1463.   {case 0 : 
  1464.   case 1 : 
  1465.     {
  1466.       {
  1467.     getxtoken () ; 
  1468.     if ( curcmd == 0 ) 
  1469.     if ( curchr == 257 ) 
  1470.     {
  1471.       curcmd = 13 ; 
  1472.       curchr = curtok - 4097 ; 
  1473.     } 
  1474.       } 
  1475.       if ( ( curcmd > 13 ) || ( curchr > 127 ) ) 
  1476.       {
  1477.     m = 0 ; 
  1478.     n = 256 ; 
  1479.       } 
  1480.       else { 
  1481.     m = curcmd ; 
  1482.     n = curchr ; 
  1483.       } 
  1484.       {
  1485.     getxtoken () ; 
  1486.     if ( curcmd == 0 ) 
  1487.     if ( curchr == 257 ) 
  1488.     {
  1489.       curcmd = 13 ; 
  1490.       curchr = curtok - 4097 ; 
  1491.     } 
  1492.       } 
  1493.       if ( ( curcmd > 13 ) || ( curchr > 127 ) ) 
  1494.       {
  1495.     curcmd = 0 ; 
  1496.     curchr = 256 ; 
  1497.       } 
  1498.       if ( thisif == 0 ) 
  1499.       b = ( n == curchr ) ; 
  1500.       else b = ( m == curcmd ) ; 
  1501.     } 
  1502.     break ; 
  1503.   case 2 : 
  1504.   case 3 : 
  1505.     {
  1506.       if ( thisif == 2 ) 
  1507.       scanint () ; 
  1508.       else scandimen ( false , false , false ) ; 
  1509.       n = curval ; 
  1510.       do { getxtoken () ; 
  1511.       } while ( ! ( curcmd != 10 ) ) ; 
  1512.       if ( ( curtok >= 3132 ) && ( curtok <= 3134 ) ) 
  1513.       r = curtok - 3072 ; 
  1514.       else { 
  1515.     {
  1516.       if ( interaction == 3 ) 
  1517.       wakeuptermin () ; 
  1518.       printnl ( 133 ) ; 
  1519.       print ( 637 ) ; 
  1520.     } 
  1521.     printcmdchr ( 104 , thisif ) ; 
  1522.     {
  1523.       helpptr = 1 ; 
  1524.       helpline [ 0 ] = 638 ; 
  1525.     } 
  1526.     backerror () ; 
  1527.     r = 61 ; 
  1528.       } 
  1529.       if ( thisif == 2 ) 
  1530.       scanint () ; 
  1531.       else scandimen ( false , false , false ) ; 
  1532.       switch ( r ) 
  1533.       {case 60 : 
  1534.     b = ( n < curval ) ; 
  1535.     break ; 
  1536.       case 61 : 
  1537.     b = ( n == curval ) ; 
  1538.     break ; 
  1539.       case 62 : 
  1540.     b = ( n > curval ) ; 
  1541.     break ; 
  1542.       } 
  1543.     } 
  1544.     break ; 
  1545.   case 4 : 
  1546.     {
  1547.       scanint () ; 
  1548.       b = odd ( curval ) ; 
  1549.     } 
  1550.     break ; 
  1551.   case 5 : 
  1552.     b = ( abs ( curlist .modefield ) == 1 ) ; 
  1553.     break ; 
  1554.   case 6 : 
  1555.     b = ( abs ( curlist .modefield ) == 101 ) ; 
  1556.     break ; 
  1557.   case 7 : 
  1558.     b = ( abs ( curlist .modefield ) == 201 ) ; 
  1559.     break ; 
  1560.   case 8 : 
  1561.     b = ( curlist .modefield < 0 ) ; 
  1562.     break ; 
  1563.   case 9 : 
  1564.   case 10 : 
  1565.   case 11 : 
  1566.     {
  1567.       scaneightbit () ; 
  1568.       p = eqtb [ 4322 + curval ] .hh .v.RH ; 
  1569.       if ( thisif == 9 ) 
  1570.       b = ( p == 0 ) ; 
  1571.       else if ( p == 0 ) 
  1572.       b = false ; 
  1573.       else if ( thisif == 10 ) 
  1574.       b = ( mem [(long) p ] .hh.b0 == 0 ) ; 
  1575.       else b = ( mem [(long) p ] .hh.b0 == 1 ) ; 
  1576.     } 
  1577.     break ; 
  1578.   case 12 : 
  1579.     {
  1580.       savescanners = scannerstatu ; 
  1581.       scannerstatu = 0 ; 
  1582.       getnext () ; 
  1583.       n = curcs ; 
  1584.       p = curcmd ; 
  1585.       q = curchr ; 
  1586.       getnext () ; 
  1587.       if ( curcmd != p ) 
  1588.       b = false ; 
  1589.       else if ( curcmd < 110 ) 
  1590.       b = ( curchr == q ) ; 
  1591.       else { 
  1592.     p = mem [(long) curchr ] .hh .v.RH ; 
  1593.     q = mem [(long) eqtb [ n ] .hh .v.RH ] .hh .v.RH ; 
  1594.     while ( ( p != 0 ) && ( q != 0 ) ) if ( mem [(long) p ] .hh .v.LH != mem [(long) q 
  1595.     ] .hh .v.LH ) 
  1596.     p = 0 ; 
  1597.     else { 
  1598.       p = mem [(long) p ] .hh .v.RH ; 
  1599.       q = mem [(long) q ] .hh .v.RH ; 
  1600.     } 
  1601.     b = ( ( p == 0 ) && ( q == 0 ) ) ; 
  1602.       } 
  1603.       scannerstatu = savescanners ; 
  1604.     } 
  1605.     break ; 
  1606.   case 13 : 
  1607.     {
  1608.       scanfourbiti () ; 
  1609.       b = ( readopen [ curval ] == 2 ) ; 
  1610.     } 
  1611.     break ; 
  1612.   case 14 : 
  1613.     b = true ; 
  1614.     break ; 
  1615.   case 15 : 
  1616.     b = false ; 
  1617.     break ; 
  1618.   case 16 : 
  1619.     {
  1620.       scanint () ; 
  1621.       n = curval ; 
  1622.       if ( eqtb [ 5303 ] .cint > 1 ) 
  1623.       {
  1624.     begindiagnos () ; 
  1625.     print ( 639 ) ; 
  1626.     printint ( n ) ; 
  1627.     printchar ( 125 ) ; 
  1628.     enddiagnosti ( false ) ; 
  1629.       } 
  1630.       while ( n != 0 ) { 
  1631.     passtext () ; 
  1632.     if ( condptr == savecondptr ) 
  1633.     if ( curchr == 4 ) 
  1634.     decr ( n ) ; 
  1635.     else goto lab50 ; 
  1636.     else if ( curchr == 2 ) 
  1637.     {
  1638.       p = condptr ; 
  1639.       ifline = mem [(long) p + 1 ] .cint ; 
  1640.       curif = mem [(long) p ] .hh.b1 ; 
  1641.       iflimit = mem [(long) p ] .hh.b0 ; 
  1642.       condptr = mem [(long) p ] .hh .v.RH ; 
  1643.       freenode ( p , 2 ) ; 
  1644.     } 
  1645.       } 
  1646.       changeiflimi ( 4 , savecondptr ) ; 
  1647.       return ; 
  1648.     } 
  1649.     break ; 
  1650.   } 
  1651.   if ( eqtb [ 5303 ] .cint > 1 ) 
  1652.   {
  1653.     begindiagnos () ; 
  1654.     if ( b ) 
  1655.     print ( 635 ) ; 
  1656.     else print ( 636 ) ; 
  1657.     enddiagnosti ( false ) ; 
  1658.   } 
  1659.   if ( b ) 
  1660.   {
  1661.     changeiflimi ( 3 , savecondptr ) ; 
  1662.     return ; 
  1663.   } 
  1664.   while ( true ) { 
  1665.     passtext () ; 
  1666.     if ( condptr == savecondptr ) 
  1667.     {
  1668.       if ( curchr != 4 ) 
  1669.       goto lab50 ; 
  1670.       {
  1671.     if ( interaction == 3 ) 
  1672.     wakeuptermin () ; 
  1673.     printnl ( 133 ) ; 
  1674.     print ( 633 ) ; 
  1675.       } 
  1676.       printesc ( 631 ) ; 
  1677.       {
  1678.     helpptr = 1 ; 
  1679.     helpline [ 0 ] = 634 ; 
  1680.       } 
  1681.       error () ; 
  1682.     } 
  1683.     else if ( curchr == 2 ) 
  1684.     {
  1685.       p = condptr ; 
  1686.       ifline = mem [(long) p + 1 ] .cint ; 
  1687.       curif = mem [(long) p ] .hh.b1 ; 
  1688.       iflimit = mem [(long) p ] .hh.b0 ; 
  1689.       condptr = mem [(long) p ] .hh .v.RH ; 
  1690.       freenode ( p , 2 ) ; 
  1691.     } 
  1692.   } 
  1693.   lab50: if ( curchr == 2 ) 
  1694.   {
  1695.     p = condptr ; 
  1696.     ifline = mem [(long) p + 1 ] .cint ; 
  1697.     curif = mem [(long) p ] .hh.b1 ; 
  1698.     iflimit = mem [(long) p ] .hh.b0 ; 
  1699.     condptr = mem [(long) p ] .hh .v.RH ; 
  1700.     freenode ( p , 2 ) ; 
  1701.   } 
  1702.   else iflimit = 2 ; 
  1703. beginname () { r_beginname 
  1704.   areadelimite = 0 ; 
  1705.   extdelimiter = 0 ; 
  1706. boolean zmorename ( c ) 
  1707. ASCIIcode c ; 
  1708. {register boolean Result; r_morename 
  1709.   if ( c == 32 ) 
  1710.   Result = false ; 
  1711.   else { 
  1712.     if ( ( c == 47 ) ) 
  1713.     {
  1714.       areadelimite = poolptr ; 
  1715.       extdelimiter = 0 ; 
  1716.     } 
  1717.     else if ( ( c == 46 ) && ( extdelimiter == 0 ) ) 
  1718.     extdelimiter = poolptr ; 
  1719.     {
  1720.       if ( poolptr + 1 > poolsize ) 
  1721.       overflow ( 128 , poolsize - initpoolptr ) ; 
  1722.     } 
  1723.     {
  1724.       strpool [ poolptr ] = c ; 
  1725.       incr ( poolptr ) ; 
  1726.     } 
  1727.     Result = true ; 
  1728.   } 
  1729.   return(Result) ; 
  1730. endname () { r_endname 
  1731.   if ( strptr + 3 > maxstrings ) 
  1732.   overflow ( 129 , maxstrings - initstrptr ) ; 
  1733.   if ( areadelimite == 0 ) 
  1734.   curarea = 206 ; 
  1735.   else { 
  1736.     curarea = strptr ; 
  1737.     incr ( strptr ) ; 
  1738.     strstart [ strptr ] = areadelimite + 1 ; 
  1739.   } 
  1740.   if ( extdelimiter == 0 ) 
  1741.   {
  1742.     curext = 206 ; 
  1743.     curname = makestring () ; 
  1744.   } 
  1745.   else { 
  1746.     curname = strptr ; 
  1747.     incr ( strptr ) ; 
  1748.     strstart [ strptr ] = extdelimiter ; 
  1749.     curext = makestring () ; 
  1750.   } 
  1751. zpackfilename ( n , a , e ) 
  1752. strnumber n , a , e ; 
  1753. {r_packfilename 
  1754.   integer k ; 
  1755.   ASCIIcode c ; 
  1756.   poolpointer j ; 
  1757.   k = 0 ; 
  1758.   for ( j = strstart [ a ] ; j <= strstart [ a + 1 ] - 1 ; j ++ ) 
  1759.   {
  1760.     c = strpool [ j ] ; 
  1761.     incr ( k ) ; 
  1762.     if ( k <= filenamesize ) 
  1763.     nameoffile [ k ] = xchr [ c ] ; 
  1764.   } 
  1765.   for ( j = strstart [ n ] ; j <= strstart [ n + 1 ] - 1 ; j ++ ) 
  1766.   {
  1767.     c = strpool [ j ] ; 
  1768.     incr ( k ) ; 
  1769.     if ( k <= filenamesize ) 
  1770.     nameoffile [ k ] = xchr [ c ] ; 
  1771.   } 
  1772.   for ( j = strstart [ e ] ; j <= strstart [ e + 1 ] - 1 ; j ++ ) 
  1773.   {
  1774.     c = strpool [ j ] ; 
  1775.     incr ( k ) ; 
  1776.     if ( k <= filenamesize ) 
  1777.     nameoffile [ k ] = xchr [ c ] ; 
  1778.   } 
  1779.   if ( k <= filenamesize ) 
  1780.   namelength = k ; 
  1781.   else namelength = filenamesize ; 
  1782.   for ( k = namelength + 1 ; k <= filenamesize ; k ++ ) 
  1783.   nameoffile [ k ] = ' ' ; 
  1784. zpackbuffered ( n , a , b ) 
  1785. smallnumber n ; 
  1786. integer a , b ; 
  1787. {r_packbuffered 
  1788.   integer k ; 
  1789.   ASCIIcode c ; 
  1790.   integer j ; 
  1791.   if ( n + b - a + 5 > filenamesize ) 
  1792.   b = a + filenamesize - n - 5 ; 
  1793.   k = 0 ; 
  1794.   for ( j = 1 ; j <= n ; j ++ ) 
  1795.   {
  1796.     c = xord [ TEXformatdef [ j ] ] ; 
  1797.     incr ( k ) ; 
  1798.     if ( k <= filenamesize ) 
  1799.     nameoffile [ k ] = xchr [ c ] ; 
  1800.   } 
  1801.   for ( j = a ; j <= b ; j ++ ) 
  1802.   {
  1803.     c = buffer [ j ] ; 
  1804.     incr ( k ) ; 
  1805.     if ( k <= filenamesize ) 
  1806.     nameoffile [ k ] = xchr [ c ] ; 
  1807.   } 
  1808.   for ( j = 6 ; j <= 9 ; j ++ ) 
  1809.   {
  1810.     c = xord [ TEXformatdef [ j ] ] ; 
  1811.     incr ( k ) ; 
  1812.     if ( k <= filenamesize ) 
  1813.     nameoffile [ k ] = xchr [ c ] ; 
  1814.   } 
  1815.   if ( k <= filenamesize ) 
  1816.   namelength = k ; 
  1817.   else namelength = filenamesize ; 
  1818.   for ( k = namelength + 1 ; k <= filenamesize ; k ++ ) 
  1819.   nameoffile [ k ] = ' ' ; 
  1820. strnumber makenamestri () { register strnumber Result; r_makenamestri 
  1821.   integer k, kstart ; 
  1822.   k = 1 ; 
  1823.   while ( ( k < filenamesize ) && ( xord [ realnameoffi [ k ] ] != 32 ) ) incr 
  1824.   ( k ) ; 
  1825.   namelength = k - 1 ; 
  1826.   {
  1827.     if ( poolptr + namelength > poolsize ) 
  1828.     overflow ( 128 , poolsize - initpoolptr ) ; 
  1829.   } 
  1830.   if ( ( xord [ realnameoffi [ 1 ] ] == 46 ) && ( xord [ realnameoffi [ 2 ] ] 
  1831.   == 47 ) ) 
  1832.   kstart = 3 ; 
  1833.   else kstart = 1 ; 
  1834.   for ( k = kstart ; k <= namelength ; k ++ ) 
  1835.   {
  1836.     strpool [ poolptr ] = xord [ realnameoffi [ k ] ] ; 
  1837.     incr ( poolptr ) ; 
  1838.   } 
  1839.   Result = makestring () ; 
  1840.   return(Result) ; 
  1841. strnumber zamakenamestr ( f ) 
  1842. alphafile f ; 
  1843. {register strnumber Result; r_amakenamestr 
  1844.   Result = makenamestri () ; 
  1845.   return(Result) ; 
  1846. strnumber zbmakenamestr ( f ) 
  1847. bytefile f ; 
  1848. {register strnumber Result; r_bmakenamestr 
  1849.   Result = makenamestri () ; 
  1850.   return(Result) ; 
  1851.  
  1852. #ifdef INITEX
  1853. strnumber zwmakenamestr ( f ) 
  1854. wordfile f ; 
  1855. {register strnumber Result; r_wmakenamestr 
  1856.   Result = makenamestri () ; 
  1857.   return(Result) ; 
  1858. #endif /* INITEX */
  1859. scanfilename () { /* 30 */ r_scanfilename 
  1860.   nameinprogre = true ; 
  1861.   beginname () ; 
  1862.   do { getxtoken () ; 
  1863.   } while ( ! ( curcmd != 10 ) ) ; 
  1864.   while ( true ) { 
  1865.     if ( ( curcmd > 12 ) || ( curchr > 127 ) ) 
  1866.     {
  1867.       backinput () ; 
  1868.       goto lab30 ; 
  1869.     } 
  1870.     if ( ! morename ( curchr ) ) 
  1871.     goto lab30 ; 
  1872.     getxtoken () ; 
  1873.   } 
  1874.   lab30: endname () ; 
  1875.   nameinprogre = false ; 
  1876. zpackjobname ( s ) 
  1877. strnumber s ; 
  1878. {r_packjobname 
  1879.   curarea = 206 ; 
  1880.   curext = s ; 
  1881.   curname = jobname ; 
  1882.   packfilename ( curname , curarea , curext ) ; 
  1883. zpromptfilena ( s , e ) 
  1884. strnumber s , e ; 
  1885. {/* 30 */ r_promptfilena 
  1886.   integer k ; 
  1887.   if ( interaction == 2 ) 
  1888.   wakeuptermin () ; 
  1889.   if ( s == 640 ) 
  1890.   {
  1891.     if ( interaction == 3 ) 
  1892.     wakeuptermin () ; 
  1893.     printnl ( 133 ) ; 
  1894.     print ( 641 ) ; 
  1895.   } 
  1896.   else { 
  1897.     if ( interaction == 3 ) 
  1898.     wakeuptermin () ; 
  1899.     printnl ( 133 ) ; 
  1900.     print ( 642 ) ; 
  1901.   } 
  1902.   printfilenam ( curname , curarea , curext ) ; 
  1903.   print ( 643 ) ; 
  1904.   if ( e == 644 ) 
  1905.   showcontext () ; 
  1906.   printnl ( 645 ) ; 
  1907.   print ( s ) ; 
  1908.   if ( interaction < 2 ) 
  1909.   fatalerror ( 646 ) ; 
  1910.   cleartermina () ; 
  1911.   {
  1912.     wakeuptermin () ; 
  1913.     print ( 426 ) ; 
  1914.     terminput () ; 
  1915.   } 
  1916.   {
  1917.     beginname () ; 
  1918.     k = first ; 
  1919.     while ( ( buffer [ k ] == 32 ) && ( k < last ) ) incr ( k ) ; 
  1920.     while ( true ) { 
  1921.       if ( k == last ) 
  1922.       goto lab30 ; 
  1923.       if ( ! morename ( buffer [ k ] ) ) 
  1924.       goto lab30 ; 
  1925.       incr ( k ) ; 
  1926.     } 
  1927.     lab30: endname () ; 
  1928.   } 
  1929.   if ( curext == 206 ) 
  1930.   curext = e ; 
  1931.   packfilename ( curname , curarea , curext ) ; 
  1932. openlogfile () { r_openlogfile 
  1933.   quarterword oldsetting ; 
  1934.   integer k ; 
  1935.   integer l ; 
  1936.   ccharpointer months ; 
  1937.   oldsetting = selector ; 
  1938.   if ( jobname == 0 ) 
  1939.   jobname = 649 ; 
  1940.   packjobname ( 650 ) ; 
  1941.   while ( ! aopenout ( logfile ) ) { 
  1942.     if ( interaction < 2 ) 
  1943.     {
  1944.       {
  1945.     if ( interaction == 3 ) 
  1946.     wakeuptermin () ; 
  1947.     printnl ( 133 ) ; 
  1948.     print ( 642 ) ; 
  1949.       } 
  1950.       printfilenam ( curname , curarea , curext ) ; 
  1951.       print ( 643 ) ; 
  1952.       jobname = 0 ; 
  1953.       history = 3 ; 
  1954.       jumpout () ; 
  1955.     } 
  1956.     promptfilena ( 652 , 650 ) ; 
  1957.   } 
  1958.   logname = amakenamestr ( logfile ) ; 
  1959.   selector = 18 ; 
  1960.   {
  1961.     Fputs( logfile ,  "This is TeX, C Version 2.9" ) ; 
  1962.     print ( formatident ) ; 
  1963.     print ( 653 ) ; 
  1964.     printint ( eqtb [ 5288 ] .cint ) ; 
  1965.     printchar ( 32 ) ; 
  1966.     months = " JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" ; 
  1967.     for ( k = 3 * eqtb [ 5289 ] .cint - 2 ; k <= 3 * eqtb [ 5289 ] .cint ; k 
  1968.     ++ ) 
  1969.     putc( months [ k ] ,  logfile );
  1970.     printchar ( 32 ) ; 
  1971.     printint ( eqtb [ 5290 ] .cint ) ; 
  1972.     printchar ( 32 ) ; 
  1973.     printtwo ( eqtb [ 5287 ] .cint / 60 ) ; 
  1974.     printchar ( 58 ) ; 
  1975.     printtwo ( eqtb [ 5287 ] .cint % 60 ) ; 
  1976.   } 
  1977.   inputstack [ inputptr ] = curinput ; 
  1978.   printnl ( 651 ) ; 
  1979.   l = inputstack [ 0 ] .limitfield ; 
  1980.   if ( buffer [ l ] == eqtb [ 5315 ] .cint ) 
  1981.   decr ( l ) ; 
  1982.   for ( k = 1 ; k <= l ; k ++ ) 
  1983.   print ( buffer [ k ] ) ; 
  1984.   println () ; 
  1985.   selector = oldsetting + 2 ; 
  1986.