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

  1. overlay "tex8"
  2. #define EXTERN extern
  3. #include "texd.h"
  4.  
  5. mathlimitswi () { /* 10 */ r_mathlimitswi 
  6.   if ( curlist .headfield != curlist .tailfield ) 
  7.   if ( mem [(long) curlist .tailfield ] .hh.b0 == 17 ) 
  8.   {
  9.     mem [(long) curlist .tailfield ] .hh.b1 = curchr ; 
  10.     return ; 
  11.   } 
  12.   {
  13.     if ( interaction == 3 ) 
  14.     wakeuptermin () ; 
  15.     printnl ( 133 ) ; 
  16.     print ( 978 ) ; 
  17.   } 
  18.   {
  19.     helpptr = 1 ; 
  20.     helpline [ 0 ] = 979 ; 
  21.   } 
  22.   error () ; 
  23. zscandelimite ( p , r ) 
  24. halfword p ; 
  25. boolean r ; 
  26. {r_scandelimite 
  27.   if ( r ) 
  28.   scantwentyse () ; 
  29.   else { 
  30.     do { getxtoken () ; 
  31.     } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  32.     switch ( curcmd ) 
  33.     {case 11 : 
  34.     case 12 : 
  35.       curval = eqtb [ 5573 + curchr ] .cint ; 
  36.       break ; 
  37.     case 15 : 
  38.       scantwentyse () ; 
  39.       break ; 
  40.     default : 
  41.       curval = - 1 ; 
  42.       break ; 
  43.     } 
  44.   } 
  45.   if ( curval < 0 ) 
  46.   {
  47.     {
  48.       if ( interaction == 3 ) 
  49.       wakeuptermin () ; 
  50.       printnl ( 133 ) ; 
  51.       print ( 980 ) ; 
  52.     } 
  53.     {
  54.       helpptr = 6 ; 
  55.       helpline [ 5 ] = 981 ; 
  56.       helpline [ 4 ] = 982 ; 
  57.       helpline [ 3 ] = 983 ; 
  58.       helpline [ 2 ] = 984 ; 
  59.       helpline [ 1 ] = 985 ; 
  60.       helpline [ 0 ] = 986 ; 
  61.     } 
  62.     backerror () ; 
  63.     curval = 0 ; 
  64.   } 
  65.   mem [(long) p ] .qqqq .b0 = ( curval / 1048576 ) % 16 ; 
  66.   mem [(long) p ] .qqqq .b1 = ( curval / 4096 ) % 256 ; 
  67.   mem [(long) p ] .qqqq .b2 = ( curval / 256 ) % 16 ; 
  68.   mem [(long) p ] .qqqq .b3 = curval % 256 ; 
  69. mathradical () { r_mathradical 
  70.   {
  71.     mem [(long) curlist .tailfield ] .hh .v.RH = getnode ( 5 ) ; 
  72.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  73.   } 
  74.   mem [(long) curlist .tailfield ] .hh.b0 = 24 ; 
  75.   mem [(long) curlist .tailfield ] .hh.b1 = 0 ; 
  76.   mem [(long) curlist .tailfield + 1 ] .hh = emptyfield ; 
  77.   mem [(long) curlist .tailfield + 3 ] .hh = emptyfield ; 
  78.   mem [(long) curlist .tailfield + 2 ] .hh = emptyfield ; 
  79.   scandelimite ( curlist .tailfield + 4 , true ) ; 
  80.   scanmath ( curlist .tailfield + 1 ) ; 
  81. mathac () { r_mathac 
  82.   if ( curcmd == 45 ) 
  83.   {
  84.     {
  85.       if ( interaction == 3 ) 
  86.       wakeuptermin () ; 
  87.       printnl ( 133 ) ; 
  88.       print ( 987 ) ; 
  89.     } 
  90.     printesc ( 382 ) ; 
  91.     print ( 988 ) ; 
  92.     {
  93.       helpptr = 2 ; 
  94.       helpline [ 1 ] = 989 ; 
  95.       helpline [ 0 ] = 990 ; 
  96.     } 
  97.     error () ; 
  98.   } 
  99.   {
  100.     mem [(long) curlist .tailfield ] .hh .v.RH = getnode ( 5 ) ; 
  101.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  102.   } 
  103.   mem [(long) curlist .tailfield ] .hh.b0 = 28 ; 
  104.   mem [(long) curlist .tailfield ] .hh.b1 = 0 ; 
  105.   mem [(long) curlist .tailfield + 1 ] .hh = emptyfield ; 
  106.   mem [(long) curlist .tailfield + 3 ] .hh = emptyfield ; 
  107.   mem [(long) curlist .tailfield + 2 ] .hh = emptyfield ; 
  108.   mem [(long) curlist .tailfield + 4 ] .hh .v.RH = 1 ; 
  109.   scanfifteenb () ; 
  110.   mem [(long) curlist .tailfield + 4 ] .hh.b1 = curval % 256 ; 
  111.   if ( ( curval >= 28672 ) && ( ( eqtb [ 5311 ] .cint >= 0 ) && ( eqtb [ 5311 
  112.   ] .cint < 16 ) ) ) 
  113.   mem [(long) curlist .tailfield + 4 ] .hh.b0 = eqtb [ 5311 ] .cint ; 
  114.   else mem [(long) curlist .tailfield + 4 ] .hh.b0 = ( curval / 256 ) % 16 ; 
  115.   scanmath ( curlist .tailfield + 1 ) ; 
  116. appendchoice () { r_appendchoice 
  117.   {
  118.     mem [(long) curlist .tailfield ] .hh .v.RH = newchoice () ; 
  119.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  120.   } 
  121.   incr ( saveptr ) ; 
  122.   savestack [ saveptr - 1 ] .cint = 0 ; 
  123.   scanleftbrac () ; 
  124.   pushmath ( 13 ) ; 
  125. halfword zfinmlist ( p ) 
  126. halfword p ; 
  127. {register halfword Result; r_finmlist 
  128.   halfword q ; 
  129.   if ( curlist .auxfield != 0 ) 
  130.   {
  131.     mem [(long) curlist .auxfield + 3 ] .hh .v.RH = 3 ; 
  132.     mem [(long) curlist .auxfield + 3 ] .hh .v.LH = mem [(long) curlist .headfield ] .hh 
  133.     .v.RH ; 
  134.     if ( p == 0 ) 
  135.     q = curlist .auxfield ; 
  136.     else { 
  137.       q = mem [(long) curlist .auxfield + 2 ] .hh .v.LH ; 
  138.       if ( mem [(long) q ] .hh.b0 != 30 ) 
  139.       confusion ( 730 ) ; 
  140.       mem [(long) curlist .auxfield + 2 ] .hh .v.LH = mem [(long) q ] .hh .v.RH ; 
  141.       mem [(long) q ] .hh .v.RH = curlist .auxfield ; 
  142.       mem [(long) curlist .auxfield ] .hh .v.RH = p ; 
  143.     } 
  144.   } 
  145.   else { 
  146.     mem [(long) curlist .tailfield ] .hh .v.RH = p ; 
  147.     q = mem [(long) curlist .headfield ] .hh .v.RH ; 
  148.   } 
  149.   popnest () ; 
  150.   Result = q ; 
  151.   return(Result) ; 
  152. buildchoices () { /* 10 */ r_buildchoices 
  153.   halfword p ; 
  154.   unsave () ; 
  155.   p = finmlist ( 0 ) ; 
  156.   switch ( savestack [ saveptr - 1 ] .cint ) 
  157.   {case 0 : 
  158.     mem [(long) curlist .tailfield + 1 ] .hh .v.LH = p ; 
  159.     break ; 
  160.   case 1 : 
  161.     mem [(long) curlist .tailfield + 1 ] .hh .v.RH = p ; 
  162.     break ; 
  163.   case 2 : 
  164.     mem [(long) curlist .tailfield + 2 ] .hh .v.LH = p ; 
  165.     break ; 
  166.   case 3 : 
  167.     {
  168.       mem [(long) curlist .tailfield + 2 ] .hh .v.RH = p ; 
  169.       decr ( saveptr ) ; 
  170.       return ; 
  171.     } 
  172.     break ; 
  173.   } 
  174.   incr ( savestack [ saveptr - 1 ] .cint ) ; 
  175.   scanleftbrac () ; 
  176.   pushmath ( 13 ) ; 
  177. subsup () { r_subsup 
  178.   smallnumber t ; 
  179.   halfword p ; 
  180.   t = 0 ; 
  181.   p = 0 ; 
  182.   if ( curlist .tailfield != curlist .headfield ) 
  183.   if ( ( mem [(long) curlist .tailfield ] .hh.b0 >= 16 ) && ( mem [(long) curlist 
  184.   .tailfield ] .hh.b0 < 30 ) ) 
  185.   {
  186.     p = curlist .tailfield + 2 + curcmd - 7 ; 
  187.     t = mem [(long) p ] .hh .v.RH ; 
  188.   } 
  189.   if ( ( p == 0 ) || ( t != 0 ) ) 
  190.   {
  191.     {
  192.       mem [(long) curlist .tailfield ] .hh .v.RH = newnoad () ; 
  193.       curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  194.     } 
  195.     p = curlist .tailfield + 2 + curcmd - 7 ; 
  196.     if ( t != 0 ) 
  197.     {
  198.       if ( curcmd == 7 ) 
  199.       {
  200.     {
  201.       if ( interaction == 3 ) 
  202.       wakeuptermin () ; 
  203.       printnl ( 133 ) ; 
  204.       print ( 991 ) ; 
  205.     } 
  206.     {
  207.       helpptr = 1 ; 
  208.       helpline [ 0 ] = 992 ; 
  209.     } 
  210.       } 
  211.       else { 
  212.     {
  213.       if ( interaction == 3 ) 
  214.       wakeuptermin () ; 
  215.       printnl ( 133 ) ; 
  216.       print ( 993 ) ; 
  217.     } 
  218.     {
  219.       helpptr = 1 ; 
  220.       helpline [ 0 ] = 994 ; 
  221.     } 
  222.       } 
  223.       error () ; 
  224.     } 
  225.   } 
  226.   scanmath ( p ) ; 
  227. mathfraction () { r_mathfraction 
  228.   smallnumber c ; 
  229.   c = curchr ; 
  230.   if ( curlist .auxfield != 0 ) 
  231.   {
  232.     if ( c >= 3 ) 
  233.     {
  234.       scandelimite ( memtop - 12 , false ) ; 
  235.       scandelimite ( memtop - 12 , false ) ; 
  236.     } 
  237.     if ( c % 3 == 0 ) 
  238.     scandimen ( false , false , false ) ; 
  239.     {
  240.       if ( interaction == 3 ) 
  241.       wakeuptermin () ; 
  242.       printnl ( 133 ) ; 
  243.       print ( 1001 ) ; 
  244.     } 
  245.     {
  246.       helpptr = 3 ; 
  247.       helpline [ 2 ] = 1002 ; 
  248.       helpline [ 1 ] = 1003 ; 
  249.       helpline [ 0 ] = 1004 ; 
  250.     } 
  251.     error () ; 
  252.   } 
  253.   else { 
  254.     curlist .auxfield = getnode ( 6 ) ; 
  255.     mem [(long) curlist .auxfield ] .hh.b0 = 25 ; 
  256.     mem [(long) curlist .auxfield ] .hh.b1 = 0 ; 
  257.     mem [(long) curlist .auxfield + 2 ] .hh .v.RH = 3 ; 
  258.     mem [(long) curlist .auxfield + 2 ] .hh .v.LH = mem [(long) curlist .headfield ] .hh 
  259.     .v.RH ; 
  260.     mem [(long) curlist .auxfield + 3 ] .hh = emptyfield ; 
  261.     mem [(long) curlist .auxfield + 4 ] .qqqq = nulldelimite ; 
  262.     mem [(long) curlist .auxfield + 5 ] .qqqq = nulldelimite ; 
  263.     mem [(long) curlist .headfield ] .hh .v.RH = 0 ; 
  264.     curlist .tailfield = curlist .headfield ; 
  265.     if ( c >= 3 ) 
  266.     {
  267.       scandelimite ( curlist .auxfield + 4 , false ) ; 
  268.       scandelimite ( curlist .auxfield + 5 , false ) ; 
  269.     } 
  270.     switch ( c % 3 ) 
  271.     {case 0 : 
  272.       {
  273.     scandimen ( false , false , false ) ; 
  274.     mem [(long) curlist .auxfield + 1 ] .cint = curval ; 
  275.       } 
  276.       break ; 
  277.     case 1 : 
  278.       mem [(long) curlist .auxfield + 1 ] .cint = 1073741824 ; 
  279.       break ; 
  280.     case 2 : 
  281.       mem [(long) curlist .auxfield + 1 ] .cint = 0 ; 
  282.       break ; 
  283.     } 
  284.   } 
  285. mathleftrigh () { r_mathleftrigh 
  286.   smallnumber t ; 
  287.   halfword p ; 
  288.   t = curchr ; 
  289.   if ( ( t == 31 ) && ( curgroup != 16 ) ) 
  290.   {
  291.     if ( curgroup == 15 ) 
  292.     {
  293.       scandelimite ( memtop - 12 , false ) ; 
  294.       {
  295.     if ( interaction == 3 ) 
  296.     wakeuptermin () ; 
  297.     printnl ( 133 ) ; 
  298.     print ( 633 ) ; 
  299.       } 
  300.       printesc ( 730 ) ; 
  301.       {
  302.     helpptr = 1 ; 
  303.     helpline [ 0 ] = 1005 ; 
  304.       } 
  305.       error () ; 
  306.     } 
  307.     else offsave () ; 
  308.   } 
  309.   else { 
  310.     p = newnoad () ; 
  311.     mem [(long) p ] .hh.b0 = t ; 
  312.     scandelimite ( p + 1 , false ) ; 
  313.     if ( t == 30 ) 
  314.     {
  315.       pushmath ( 16 ) ; 
  316.       mem [(long) curlist .headfield ] .hh .v.RH = p ; 
  317.       curlist .tailfield = p ; 
  318.     } 
  319.     else { 
  320.       p = finmlist ( p ) ; 
  321.       unsave () ; 
  322.       {
  323.     mem [(long) curlist .tailfield ] .hh .v.RH = newnoad () ; 
  324.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  325.       } 
  326.       mem [(long) curlist .tailfield ] .hh.b0 = 23 ; 
  327.       mem [(long) curlist .tailfield + 1 ] .hh .v.RH = 3 ; 
  328.       mem [(long) curlist .tailfield + 1 ] .hh .v.LH = p ; 
  329.     } 
  330.   } 
  331. aftermath () { r_aftermath 
  332.   boolean l ; 
  333.   boolean danger ; 
  334.   integer m ; 
  335.   halfword p ; 
  336.   halfword a ; 
  337.   halfword b ; 
  338.   scaled w ; 
  339.   scaled z ; 
  340.   scaled e ; 
  341.   scaled q ; 
  342.   scaled d ; 
  343.   scaled s ; 
  344.   smallnumber g1, g2 ; 
  345.   halfword r ; 
  346.   halfword t ; 
  347.   danger = false ; 
  348.   if ( ( fontparams [ eqtb [ 4581 ] .hh .v.RH ] < 22 ) || ( fontparams [ eqtb 
  349.   [ 4597 ] .hh .v.RH ] < 22 ) || ( fontparams [ eqtb [ 4613 ] .hh .v.RH ] < 22 
  350.   ) ) 
  351.   {
  352.     {
  353.       if ( interaction == 3 ) 
  354.       wakeuptermin () ; 
  355.       printnl ( 133 ) ; 
  356.       print ( 1006 ) ; 
  357.     } 
  358.     {
  359.       helpptr = 3 ; 
  360.       helpline [ 2 ] = 1007 ; 
  361.       helpline [ 1 ] = 1008 ; 
  362.       helpline [ 0 ] = 1009 ; 
  363.     } 
  364.     error () ; 
  365.     flushmath () ; 
  366.     danger = true ; 
  367.   } 
  368.   else if ( ( fontparams [ eqtb [ 4582 ] .hh .v.RH ] < 13 ) || ( fontparams [ 
  369.   eqtb [ 4598 ] .hh .v.RH ] < 13 ) || ( fontparams [ eqtb [ 4614 ] .hh .v.RH ] 
  370.   < 13 ) ) 
  371.   {
  372.     {
  373.       if ( interaction == 3 ) 
  374.       wakeuptermin () ; 
  375.       printnl ( 133 ) ; 
  376.       print ( 1010 ) ; 
  377.     } 
  378.     {
  379.       helpptr = 3 ; 
  380.       helpline [ 2 ] = 1011 ; 
  381.       helpline [ 1 ] = 1012 ; 
  382.       helpline [ 0 ] = 1013 ; 
  383.     } 
  384.     error () ; 
  385.     flushmath () ; 
  386.     danger = true ; 
  387.   } 
  388.   m = curlist .modefield ; 
  389.   l = false ; 
  390.   p = finmlist ( 0 ) ; 
  391.   if ( curlist .modefield == - m ) 
  392.   {
  393.     curmlist = p ; 
  394.     curstyle = 2 ; 
  395.     mlistpenalti = false ; 
  396.     mlisttohlist () ; 
  397.     a = hpack ( mem [(long) memtop - 3 ] .hh .v.RH , 0 , 1 ) ; 
  398.     unsave () ; 
  399.     decr ( saveptr ) ; 
  400.     if ( savestack [ saveptr + 0 ] .cint == 1 ) 
  401.     l = true ; 
  402.     if ( danger ) 
  403.     flushmath () ; 
  404.     m = curlist .modefield ; 
  405.     p = finmlist ( 0 ) ; 
  406.   } 
  407.   else a = 0 ; 
  408.   if ( m < 0 ) 
  409.   {
  410.     {
  411.       mem [(long) curlist .tailfield ] .hh .v.RH = newmath ( eqtb [ 5702 ] .cint , 0 
  412.       ) ; 
  413.       curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  414.     } 
  415.     curmlist = p ; 
  416.     curstyle = 2 ; 
  417.     mlistpenalti = ( curlist .modefield > 0 ) ; 
  418.     mlisttohlist () ; 
  419.     mem [(long) curlist .tailfield ] .hh .v.RH = mem [(long) memtop - 3 ] .hh .v.RH ; 
  420.     while ( mem [(long) curlist .tailfield ] .hh .v.RH != 0 ) curlist .tailfield = 
  421.     mem [(long) curlist .tailfield ] .hh .v.RH ; 
  422.     {
  423.       mem [(long) curlist .tailfield ] .hh .v.RH = newmath ( eqtb [ 5702 ] .cint , 1 
  424.       ) ; 
  425.       curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  426.     } 
  427.     curlist .auxfield = 1000 ; 
  428.     unsave () ; 
  429.   } 
  430.   else { 
  431.     {
  432.       getxtoken () ; 
  433.       if ( curcmd != 3 ) 
  434.       {
  435.     {
  436.       if ( interaction == 3 ) 
  437.       wakeuptermin () ; 
  438.       printnl ( 133 ) ; 
  439.       print ( 1014 ) ; 
  440.     } 
  441.     {
  442.       helpptr = 2 ; 
  443.       helpline [ 1 ] = 1015 ; 
  444.       helpline [ 0 ] = 1016 ; 
  445.     } 
  446.     backerror () ; 
  447.       } 
  448.     } 
  449.     curmlist = p ; 
  450.     curstyle = 0 ; 
  451.     mlistpenalti = false ; 
  452.     mlisttohlist () ; 
  453.     p = mem [(long) memtop - 3 ] .hh .v.RH ; 
  454.     adjusttail = memtop - 5 ; 
  455.     b = hpack ( p , 0 , 1 ) ; 
  456.     t = adjusttail ; 
  457.     adjusttail = 0 ; 
  458.     w = mem [(long) b + 1 ] .cint ; 
  459.     z = eqtb [ 5715 ] .cint ; 
  460.     s = eqtb [ 5716 ] .cint ; 
  461.     if ( ( a == 0 ) || danger ) 
  462.     {
  463.       e = 0 ; 
  464.       q = 0 ; 
  465.     } 
  466.     else { 
  467.       e = mem [(long) a + 1 ] .cint ; 
  468.       q = e + fontinfo [ 6 + parambase [ eqtb [ 4581 ] .hh .v.RH ] ] .cint ; 
  469.     } 
  470.     if ( w + q > z ) 
  471.     {
  472.       if ( ( e != 0 ) && ( ( w - totalshrink [ 0 ] + q <= z ) || ( totalshrink 
  473.       [ 1 ] != 0 ) || ( totalshrink [ 2 ] != 0 ) || ( totalshrink [ 3 ] != 0 ) 
  474.       ) ) 
  475.       {
  476.     freenode ( b , 7 ) ; 
  477.     b = hpack ( p , z - q , 0 ) ; 
  478.       } 
  479.       else { 
  480.     e = 0 ; 
  481.     if ( w > z ) 
  482.     {
  483.       freenode ( b , 7 ) ; 
  484.       b = hpack ( p , z , 0 ) ; 
  485.     } 
  486.       } 
  487.       w = mem [(long) b + 1 ] .cint ; 
  488.     } 
  489.     d = half ( z - w ) ; 
  490.     if ( ( e > 0 ) && ( d < 2 * e ) ) 
  491.     {
  492.       d = half ( z - w - e ) ; 
  493.       if ( p != 0 ) 
  494.       if ( mem [(long) p ] .hh.b0 == 10 ) 
  495.       d = 0 ; 
  496.     } 
  497.     {
  498.       mem [(long) curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5278 ] .cint 
  499.       ) ; 
  500.       curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  501.     } 
  502.     if ( ( d + s <= eqtb [ 5714 ] .cint ) || l ) 
  503.     {
  504.       g1 = 3 ; 
  505.       g2 = 4 ; 
  506.     } 
  507.     else { 
  508.       g1 = 5 ; 
  509.       g2 = 6 ; 
  510.     } 
  511.     if ( l && ( e == 0 ) ) 
  512.     {
  513.       mem [(long) a + 4 ] .cint = s ; 
  514.       appendtovlis ( a ) ; 
  515.       {
  516.     mem [(long) curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ; 
  517.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  518.       } 
  519.     } 
  520.     else { 
  521.       mem [(long) curlist .tailfield ] .hh .v.RH = newparamglue ( g1 ) ; 
  522.       curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  523.     } 
  524.     if ( e != 0 ) 
  525.     {
  526.       r = newkern ( z - w - e - d ) ; 
  527.       if ( l ) 
  528.       {
  529.     mem [(long) a ] .hh .v.RH = r ; 
  530.     mem [(long) r ] .hh .v.RH = b ; 
  531.     b = a ; 
  532.     d = 0 ; 
  533.       } 
  534.       else { 
  535.     mem [(long) b ] .hh .v.RH = r ; 
  536.     mem [(long) r ] .hh .v.RH = a ; 
  537.       } 
  538.       b = hpack ( b , 0 , 1 ) ; 
  539.     } 
  540.     mem [(long) b + 4 ] .cint = s + d ; 
  541.     appendtovlis ( b ) ; 
  542.     if ( t != memtop - 5 ) 
  543.     {
  544.       mem [(long) curlist .tailfield ] .hh .v.RH = mem [(long) memtop - 5 ] .hh .v.RH ; 
  545.       curlist .tailfield = t ; 
  546.     } 
  547.     if ( ( a != 0 ) && ( e == 0 ) && ! l ) 
  548.     {
  549.       {
  550.     mem [(long) curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ; 
  551.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  552.       } 
  553.       mem [(long) a + 4 ] .cint = s + z - mem [(long) a + 1 ] .cint ; 
  554.       appendtovlis ( a ) ; 
  555.       {
  556.     mem [(long) curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5279 ] 
  557.     .cint ) ; 
  558.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  559.       } 
  560.     } 
  561.     else { 
  562.       {
  563.     mem [(long) curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5279 ] 
  564.     .cint ) ; 
  565.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  566.       } 
  567.       {
  568.     mem [(long) curlist .tailfield ] .hh .v.RH = newparamglue ( g2 ) ; 
  569.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  570.       } 
  571.     } 
  572.     resumeafterd () ; 
  573.   } 
  574. resumeafterd () { r_resumeafterd 
  575.   if ( curgroup != 15 ) 
  576.   confusion ( 1017 ) ; 
  577.   unsave () ; 
  578.   curlist .pgfield = curlist .pgfield + 3 ; 
  579.   pushnest () ; 
  580.   curlist .modefield = 101 ; 
  581.   curlist .auxfield = 1000 ; 
  582.   {
  583.     getxtoken () ; 
  584.     if ( curcmd != 10 ) 
  585.     backinput () ; 
  586.   } 
  587.   if ( nestptr == 1 ) 
  588.   buildpage () ; 
  589. getrtoken () { /* 20 */ r_getrtoken 
  590.   lab20: do { gettoken () ; 
  591.   } while ( ! ( curtok != 2592 ) ) ; 
  592.   if ( ( curcs == 0 ) || ( curcs > 3258 ) ) 
  593.   {
  594.     {
  595.       if ( interaction == 3 ) 
  596.       wakeuptermin () ; 
  597.       printnl ( 133 ) ; 
  598.       print ( 1032 ) ; 
  599.     } 
  600.     {
  601.       helpptr = 5 ; 
  602.       helpline [ 4 ] = 1033 ; 
  603.       helpline [ 3 ] = 1034 ; 
  604.       helpline [ 2 ] = 1035 ; 
  605.       helpline [ 1 ] = 1036 ; 
  606.       helpline [ 0 ] = 1037 ; 
  607.     } 
  608.     if ( curcs == 0 ) 
  609.     backinput () ; 
  610.     curtok = 7354 ; 
  611.     inserror () ; 
  612.     goto lab20 ; 
  613.   } 
  614. trapzeroglue () { r_trapzeroglue 
  615.   if ( ( mem [(long) curval + 1 ] .cint == 0 ) && ( mem [(long) curval + 2 ] .cint == 0 ) 
  616.   && ( mem [(long) curval + 3 ] .cint == 0 ) ) 
  617.   {
  618.     incr ( mem [(long) 0 ] .hh .v.RH ) ; 
  619.     deletegluere ( curval ) ; 
  620.     curval = 0 ; 
  621.   } 
  622. zdoregisterco ( a ) 
  623. smallnumber a ; 
  624. {/* 40 10 */ r_doregisterco 
  625.   halfword l, q, r, s ; 
  626.   quarterword p ; 
  627.   q = curcmd ; 
  628.   {
  629.     if ( q != 88 ) 
  630.     {
  631.       getxtoken () ; 
  632.       if ( ( curcmd >= 72 ) && ( curcmd <= 75 ) ) 
  633.       {
  634.     l = curchr ; 
  635.     p = curcmd - 72 ; 
  636.     goto lab40 ; 
  637.       } 
  638.       if ( curcmd != 88 ) 
  639.       {
  640.     {
  641.       if ( interaction == 3 ) 
  642.       wakeuptermin () ; 
  643.       printnl ( 133 ) ; 
  644.       print ( 541 ) ; 
  645.     } 
  646.     printcmdchr ( curcmd , curchr ) ; 
  647.     print ( 542 ) ; 
  648.     printcmdchr ( q , 0 ) ; 
  649.     {
  650.       helpptr = 1 ; 
  651.       helpline [ 0 ] = 1058 ; 
  652.     } 
  653.     error () ; 
  654.     return ; 
  655.       } 
  656.     } 
  657.     p = curchr ; 
  658.     scaneightbit () ; 
  659.     switch ( p ) 
  660.     {case 0 : 
  661.       l = curval + 5317 ; 
  662.       break ; 
  663.     case 1 : 
  664.       l = curval + 5721 ; 
  665.       break ; 
  666.     case 2 : 
  667.       l = curval + 3544 ; 
  668.       break ; 
  669.     case 3 : 
  670.       l = curval + 3800 ; 
  671.       break ; 
  672.     } 
  673.   } 
  674.   lab40: ; 
  675.   if ( q == 88 ) 
  676.   scanoptional () ; 
  677.   else if ( scankeyword ( 1054 ) ) 
  678.   ; 
  679.   aritherror = false ; 
  680.   if ( q < 90 ) 
  681.   if ( p < 2 ) 
  682.   {
  683.     if ( p == 0 ) 
  684.     scanint () ; 
  685.     else scandimen ( false , false , false ) ; 
  686.     if ( q == 89 ) 
  687.     curval = curval + eqtb [ l ] .cint ; 
  688.   } 
  689.   else { 
  690.     scanglue ( p ) ; 
  691.     if ( q == 89 ) 
  692.     {
  693.       q = newspec ( curval ) ; 
  694.       r = eqtb [ l ] .hh .v.RH ; 
  695.       deletegluere ( curval ) ; 
  696.       mem [(long) q + 1 ] .cint = mem [(long) q + 1 ] .cint + mem [(long) r + 1 ] .cint ; 
  697.       if ( mem [(long) q + 2 ] .cint == 0 ) 
  698.       mem [(long) q ] .hh.b0 = 0 ; 
  699.       if ( mem [(long) q ] .hh.b0 == mem [(long) r ] .hh.b0 ) 
  700.       mem [(long) q + 2 ] .cint = mem [(long) q + 2 ] .cint + mem [(long) r + 2 ] .cint ; 
  701.       else if ( ( mem [(long) q ] .hh.b0 < mem [(long) r ] .hh.b0 ) && ( mem [(long) r + 2 ] 
  702.       .cint != 0 ) ) 
  703.       {
  704.     mem [(long) q + 2 ] .cint = mem [(long) r + 2 ] .cint ; 
  705.     mem [(long) q ] .hh.b0 = mem [(long) r ] .hh.b0 ; 
  706.       } 
  707.       if ( mem [(long) q + 3 ] .cint == 0 ) 
  708.       mem [(long) q ] .hh.b1 = 0 ; 
  709.       if ( mem [(long) q ] .hh.b1 == mem [(long) r ] .hh.b1 ) 
  710.       mem [(long) q + 3 ] .cint = mem [(long) q + 3 ] .cint + mem [(long) r + 3 ] .cint ; 
  711.       else if ( ( mem [(long) q ] .hh.b1 < mem [(long) r ] .hh.b1 ) && ( mem [(long) r + 3 ] 
  712.       .cint != 0 ) ) 
  713.       {
  714.     mem [(long) q + 3 ] .cint = mem [(long) r + 3 ] .cint ; 
  715.     mem [(long) q ] .hh.b1 = mem [(long) r ] .hh.b1 ; 
  716.       } 
  717.       curval = q ; 
  718.     } 
  719.   } 
  720.   else { 
  721.     scanint () ; 
  722.     if ( p < 2 ) 
  723.     if ( q == 90 ) 
  724.     curval = nxplusy ( eqtb [ l ] .cint , curval , 0 ) ; 
  725.     else curval = xovern ( eqtb [ l ] .cint , curval ) ; 
  726.     else { 
  727.       s = eqtb [ l ] .hh .v.RH ; 
  728.       r = newspec ( s ) ; 
  729.       if ( q == 90 ) 
  730.       {
  731.     mem [(long) r + 1 ] .cint = nxplusy ( mem [(long) s + 1 ] .cint , curval , 0 ) ; 
  732.     mem [(long) r + 2 ] .cint = nxplusy ( mem [(long) s + 2 ] .cint , curval , 0 ) ; 
  733.     mem [(long) r + 3 ] .cint = nxplusy ( mem [(long) s + 3 ] .cint , curval , 0 ) ; 
  734.       } 
  735.       else { 
  736.     mem [(long) r + 1 ] .cint = xovern ( mem [(long) s + 1 ] .cint , curval ) ; 
  737.     mem [(long) r + 2 ] .cint = xovern ( mem [(long) s + 2 ] .cint , curval ) ; 
  738.     mem [(long) r + 3 ] .cint = xovern ( mem [(long) s + 3 ] .cint , curval ) ; 
  739.       } 
  740.       curval = r ; 
  741.     } 
  742.   } 
  743.   if ( aritherror ) 
  744.   {
  745.     {
  746.       if ( interaction == 3 ) 
  747.       wakeuptermin () ; 
  748.       printnl ( 133 ) ; 
  749.       print ( 1055 ) ; 
  750.     } 
  751.     {
  752.       helpptr = 2 ; 
  753.       helpline [ 1 ] = 1056 ; 
  754.       helpline [ 0 ] = 1057 ; 
  755.     } 
  756.     error () ; 
  757.     return ; 
  758.   } 
  759.   if ( p < 2 ) 
  760.   if ( ( a >= 4 ) ) 
  761.   geqworddefin ( l , curval ) ; 
  762.   else eqworddefine ( l , curval ) ; 
  763.   else { 
  764.     trapzeroglue () ; 
  765.     if ( ( a >= 4 ) ) 
  766.     geqdefine ( l , 116 , curval ) ; 
  767.     else eqdefine ( l , 116 , curval ) ; 
  768.   } 
  769. alteraux () { r_alteraux 
  770.   halfword c ; 
  771.   if ( curchr != abs ( curlist .modefield ) ) 
  772.   reportillega () ; 
  773.   else { 
  774.     c = curchr ; 
  775.     scanoptional () ; 
  776.     if ( c == 1 ) 
  777.     {
  778.       scandimen ( false , false , false ) ; 
  779.       curlist .auxfield = curval ; 
  780.     } 
  781.     else { 
  782.       scanint () ; 
  783.       if ( ( curval <= 0 ) || ( curval > 32767 ) ) 
  784.       {
  785.     {
  786.       if ( interaction == 3 ) 
  787.       wakeuptermin () ; 
  788.       printnl ( 133 ) ; 
  789.       print ( 1059 ) ; 
  790.     } 
  791.     {
  792.       helpptr = 1 ; 
  793.       helpline [ 0 ] = 1060 ; 
  794.     } 
  795.     interror ( curval ) ; 
  796.       } 
  797.       else curlist .auxfield = curval ; 
  798.     } 
  799.   } 
  800. alterprevgra () { r_alterprevgra 
  801.   integer p ; 
  802.   nest [ nestptr ] = curlist ; 
  803.   p = nestptr ; 
  804.   while ( abs ( nest [ p ] .modefield ) != 1 ) decr ( p ) ; 
  805.   scanoptional () ; 
  806.   scanint () ; 
  807.   if ( curval < 0 ) 
  808.   {
  809.     {
  810.       if ( interaction == 3 ) 
  811.       wakeuptermin () ; 
  812.       printnl ( 133 ) ; 
  813.       print ( 802 ) ; 
  814.     } 
  815.     printesc ( 390 ) ; 
  816.     {
  817.       helpptr = 1 ; 
  818.       helpline [ 0 ] = 1061 ; 
  819.     } 
  820.     interror ( curval ) ; 
  821.   } 
  822.   else { 
  823.     nest [ p ] .pgfield = curval ; 
  824.     curlist = nest [ nestptr ] ; 
  825.   } 
  826. alterpagesof () { r_alterpagesof 
  827.   quarterword c ; 
  828.   c = curchr ; 
  829.   scanoptional () ; 
  830.   scandimen ( false , false , false ) ; 
  831.   pagesofar [ c ] = curval ; 
  832. alterinteger () { r_alterinteger 
  833.   quarterword c ; 
  834.   c = curchr ; 
  835.   scanoptional () ; 
  836.   scanint () ; 
  837.   if ( c == 0 ) 
  838.   deadcycles = curval ; 
  839.   else insertpenalt = curval ; 
  840. alterboxdime () { r_alterboxdime 
  841.   smallnumber c ; 
  842.   eightbits b ; 
  843.   c = curchr ; 
  844.   scaneightbit () ; 
  845.   b = curval ; 
  846.   scanoptional () ; 
  847.   scandimen ( false , false , false ) ; 
  848.   if ( eqtb [ 4322 + b ] .hh .v.RH != 0 ) 
  849.   mem [(long) eqtb [ 4322 + b ] .hh .v.RH + c ] .cint = curval ; 
  850. znewfont ( a ) 
  851. smallnumber a ; 
  852. {/* 50 */ r_newfont 
  853.   halfword u ; 
  854.   scaled s ; 
  855.   internalfont f ; 
  856.   strnumber t ; 
  857.   quarterword oldsetting ; 
  858.   if ( jobname == 0 ) 
  859.   openlogfile () ; 
  860.   getrtoken () ; 
  861.   u = curcs ; 
  862.   if ( u >= 258 ) 
  863.   t = hash [ u ] .v.RH ; 
  864.   else if ( u >= 129 ) 
  865.   if ( u == 257 ) 
  866.   t = 1065 ; 
  867.   else t = u - 129 ; 
  868.   else { 
  869.     oldsetting = selector ; 
  870.     selector = 21 ; 
  871.     print ( 1065 ) ; 
  872.     print ( u - 1 ) ; 
  873.     selector = oldsetting ; 
  874.     {
  875.       if ( poolptr + 1 > poolsize ) 
  876.       overflow ( 128 , poolsize - initpoolptr ) ; 
  877.     } 
  878.     t = makestring () ; 
  879.   } 
  880.   if ( ( a >= 4 ) ) 
  881.   geqdefine ( u , 86 , 0 ) ; 
  882.   else eqdefine ( u , 86 , 0 ) ; 
  883.   scanoptional () ; 
  884.   scanfilename () ; 
  885.   nameinprogre = true ; 
  886.   if ( scankeyword ( 1066 ) ) 
  887.   {
  888.     scandimen ( false , false , false ) ; 
  889.     s = curval ; 
  890.     if ( ( s <= 0 ) || ( s >= 134217728 ) ) 
  891.     {
  892.       {
  893.     if ( interaction == 3 ) 
  894.     wakeuptermin () ; 
  895.     printnl ( 133 ) ; 
  896.     print ( 1068 ) ; 
  897.       } 
  898.       printscaled ( s ) ; 
  899.       print ( 1069 ) ; 
  900.       {
  901.     helpptr = 2 ; 
  902.     helpline [ 1 ] = 1070 ; 
  903.     helpline [ 0 ] = 1071 ; 
  904.       } 
  905.       error () ; 
  906.       s = 10 * 65536 ; 
  907.     } 
  908.   } 
  909.   else if ( scankeyword ( 1067 ) ) 
  910.   {
  911.     scanint () ; 
  912.     s = - curval ; 
  913.     if ( ( curval <= 0 ) || ( curval > 32768 ) ) 
  914.     {
  915.       {
  916.     if ( interaction == 3 ) 
  917.     wakeuptermin () ; 
  918.     printnl ( 133 ) ; 
  919.     print ( 410 ) ; 
  920.       } 
  921.       {
  922.     helpptr = 1 ; 
  923.     helpline [ 0 ] = 411 ; 
  924.       } 
  925.       interror ( curval ) ; 
  926.       s = - 1000 ; 
  927.     } 
  928.   } 
  929.   else s = - 1000 ; 
  930.   nameinprogre = false ; 
  931.   for ( f = 1 ; f <= fontptr ; f ++ ) 
  932.   if ( streqstr ( fontname [ f ] , curname ) && streqstr ( fontarea [ f ] , 
  933.   curarea ) ) 
  934.   {
  935.     if ( s > 0 ) 
  936.     {
  937.       if ( s == fontsize [ f ] ) 
  938.       goto lab50 ; 
  939.     } 
  940.     else if ( fontsize [ f ] == xnoverd ( fontdsize [ f ] , - s , 1000 ) ) 
  941.     goto lab50 ; 
  942.   } 
  943.   f = readfontinfo ( u , curname , curarea , s ) ; 
  944.   lab50: eqtb [ u ] .hh .v.RH = f ; 
  945.   eqtb [ 3268 + f ] = eqtb [ u ] ; 
  946.   hash [ 3268 + f ] .v.RH = t ; 
  947. newinteracti () { r_newinteracti 
  948.   println () ; 
  949.   interaction = curchr ; 
  950.   if ( interaction == 0 ) 
  951.   selector = 16 ; 
  952.   else selector = 17 ; 
  953.   if ( jobname != 0 ) 
  954.   selector = selector + 2 ; 
  955. prefixedcomm () { /* 30 10 */ r_prefixedcomm 
  956.   smallnumber a ; 
  957.   internalfont f ; 
  958.   halfword j ; 
  959.   integer k ; 
  960.   halfword p, q ; 
  961.   integer n ; 
  962.   boolean e ; 
  963.   a = 0 ; 
  964.   while ( curcmd == 92 ) { 
  965.     if ( ! odd ( a / curchr ) ) 
  966.     a = a + curchr ; 
  967.     do { getxtoken () ; 
  968.     } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  969.     if ( curcmd <= 69 ) 
  970.     {
  971.       {
  972.     if ( interaction == 3 ) 
  973.     wakeuptermin () ; 
  974.     printnl ( 133 ) ; 
  975.     print ( 1027 ) ; 
  976.       } 
  977.       printcmdchr ( curcmd , curchr ) ; 
  978.       printchar ( 39 ) ; 
  979.       {
  980.     helpptr = 1 ; 
  981.     helpline [ 0 ] = 1028 ; 
  982.       } 
  983.       backerror () ; 
  984.       return ; 
  985.     } 
  986.   } 
  987.   if ( ( curcmd != 96 ) && ( a % 4 != 0 ) ) 
  988.   {
  989.     {
  990.       if ( interaction == 3 ) 
  991.       wakeuptermin () ; 
  992.       printnl ( 133 ) ; 
  993.       print ( 541 ) ; 
  994.     } 
  995.     printesc ( 1019 ) ; 
  996.     print ( 1029 ) ; 
  997.     printesc ( 1020 ) ; 
  998.     print ( 1030 ) ; 
  999.     printcmdchr ( curcmd , curchr ) ; 
  1000.     printchar ( 39 ) ; 
  1001.     {
  1002.       helpptr = 1 ; 
  1003.       helpline [ 0 ] = 1031 ; 
  1004.     } 
  1005.     error () ; 
  1006.   } 
  1007.   if ( eqtb [ 5310 ] .cint != 0 ) 
  1008.   if ( eqtb [ 5310 ] .cint < 0 ) 
  1009.   {
  1010.     if ( ( a >= 4 ) ) 
  1011.     a = a - 4 ; 
  1012.   } 
  1013.   else { 
  1014.     if ( ! ( a >= 4 ) ) 
  1015.     a = a + 4 ; 
  1016.   } 
  1017.   switch ( curcmd ) 
  1018.   {case 86 : 
  1019.     if ( ( a >= 4 ) ) 
  1020.     geqdefine ( 4578 , 119 , curchr ) ; 
  1021.     else eqdefine ( 4578 , 119 , curchr ) ; 
  1022.     break ; 
  1023.   case 96 : 
  1024.     {
  1025.       if ( odd ( curchr ) && ! ( a >= 4 ) && ( eqtb [ 5310 ] .cint >= 0 ) ) 
  1026.       a = a + 4 ; 
  1027.       e = ( curchr >= 2 ) ; 
  1028.       getrtoken () ; 
  1029.       p = curcs ; 
  1030.       q = scantoks ( true , e ) ; 
  1031.       if ( ( a >= 4 ) ) 
  1032.       geqdefine ( p , 110 + ( a % 4 ) , defref ) ; 
  1033.       else eqdefine ( p , 110 + ( a % 4 ) , defref ) ; 
  1034.     } 
  1035.     break ; 
  1036.   case 93 : 
  1037.     {
  1038.       n = curchr ; 
  1039.       getrtoken () ; 
  1040.       p = curcs ; 
  1041.       if ( n == 0 ) 
  1042.       {
  1043.     do { gettoken () ; 
  1044.     } while ( ! ( curcmd != 10 ) ) ; 
  1045.     if ( curtok == 3133 ) 
  1046.     {
  1047.       gettoken () ; 
  1048.       if ( curcmd == 10 ) 
  1049.       gettoken () ; 
  1050.     } 
  1051.       } 
  1052.       else { 
  1053.     gettoken () ; 
  1054.     q = curtok ; 
  1055.     gettoken () ; 
  1056.     backinput () ; 
  1057.     curtok = q ; 
  1058.     backinput () ; 
  1059.       } 
  1060.       if ( curcmd >= 110 ) 
  1061.       incr ( mem [(long) curchr ] .hh .v.LH ) ; 
  1062.       if ( ( a >= 4 ) ) 
  1063.       geqdefine ( p , curcmd , curchr ) ; 
  1064.       else eqdefine ( p , curcmd , curchr ) ; 
  1065.     } 
  1066.     break ; 
  1067.   case 94 : 
  1068.     {
  1069.       n = curchr ; 
  1070.       getrtoken () ; 
  1071.       p = curcs ; 
  1072.       if ( ( a >= 4 ) ) 
  1073.       geqdefine ( p , 0 , 256 ) ; 
  1074.       else eqdefine ( p , 0 , 256 ) ; 
  1075.       scanoptional () ; 
  1076.       switch ( n ) 
  1077.       {case 0 : 
  1078.     {
  1079.       scancharnum () ; 
  1080.       if ( ( a >= 4 ) ) 
  1081.       geqdefine ( p , 67 , curval ) ; 
  1082.       else eqdefine ( p , 67 , curval ) ; 
  1083.     } 
  1084.     break ; 
  1085.       case 1 : 
  1086.     {
  1087.       scanfifteenb () ; 
  1088.       if ( ( a >= 4 ) ) 
  1089.       geqdefine ( p , 68 , curval ) ; 
  1090.       else eqdefine ( p , 68 , curval ) ; 
  1091.     } 
  1092.     break ; 
  1093.       default : 
  1094.     {
  1095.       scaneightbit () ; 
  1096.       switch ( n ) 
  1097.       {case 2 : 
  1098.         if ( ( a >= 4 ) ) 
  1099.         geqdefine ( p , 72 , 5317 + curval ) ; 
  1100.         else eqdefine ( p , 72 , 5317 + curval ) ; 
  1101.         break ; 
  1102.       case 3 : 
  1103.         if ( ( a >= 4 ) ) 
  1104.         geqdefine ( p , 73 , 5721 + curval ) ; 
  1105.         else eqdefine ( p , 73 , 5721 + curval ) ; 
  1106.         break ; 
  1107.       case 4 : 
  1108.         if ( ( a >= 4 ) ) 
  1109.         geqdefine ( p , 74 , 3544 + curval ) ; 
  1110.         else eqdefine ( p , 74 , 3544 + curval ) ; 
  1111.         break ; 
  1112.       case 5 : 
  1113.         if ( ( a >= 4 ) ) 
  1114.         geqdefine ( p , 75 , 3800 + curval ) ; 
  1115.         else eqdefine ( p , 75 , 3800 + curval ) ; 
  1116.         break ; 
  1117.       case 6 : 
  1118.         if ( ( a >= 4 ) ) 
  1119.         geqdefine ( p , 71 , 4066 + curval ) ; 
  1120.         else eqdefine ( p , 71 , 4066 + curval ) ; 
  1121.         break ; 
  1122.       } 
  1123.     } 
  1124.     break ; 
  1125.       } 
  1126.     } 
  1127.     break ; 
  1128.   case 95 : 
  1129.     {
  1130.       scanint () ; 
  1131.       n = curval ; 
  1132.       if ( ! scankeyword ( 695 ) ) 
  1133.       {
  1134.     {
  1135.       if ( interaction == 3 ) 
  1136.       wakeuptermin () ; 
  1137.       printnl ( 133 ) ; 
  1138.       print ( 921 ) ; 
  1139.     } 
  1140.     {
  1141.       helpptr = 2 ; 
  1142.       helpline [ 1 ] = 1048 ; 
  1143.       helpline [ 0 ] = 1049 ; 
  1144.     } 
  1145.     error () ; 
  1146.       } 
  1147.       getrtoken () ; 
  1148.       p = curcs ; 
  1149.       readtoks ( n , p ) ; 
  1150.       if ( ( a >= 4 ) ) 
  1151.       geqdefine ( p , 110 , curval ) ; 
  1152.       else eqdefine ( p , 110 , curval ) ; 
  1153.     } 
  1154.     break ; 
  1155.   case 70 : 
  1156.   case 71 : 
  1157.     {
  1158.       q = curcs ; 
  1159.       if ( curcmd == 70 ) 
  1160.       {
  1161.     scaneightbit () ; 
  1162.     p = 4066 + curval ; 
  1163.       } 
  1164.       else p = curchr ; 
  1165.       scanoptional () ; 
  1166.       do { getxtoken () ; 
  1167.       } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  1168.       if ( curcmd != 1 ) 
  1169.       {
  1170.     if ( curcmd == 70 ) 
  1171.     {
  1172.       scaneightbit () ; 
  1173.       curcmd = 71 ; 
  1174.       curchr = 4066 + curval ; 
  1175.     } 
  1176.     if ( curcmd == 71 ) 
  1177.     {
  1178.       q = eqtb [ curchr ] .hh .v.RH ; 
  1179.       if ( q == 0 ) 
  1180.       if ( ( a >= 4 ) ) 
  1181.       geqdefine ( p , 100 , 0 ) ; 
  1182.       else eqdefine ( p , 100 , 0 ) ; 
  1183.       else { 
  1184.         incr ( mem [(long) q ] .hh .v.LH ) ; 
  1185.         if ( ( a >= 4 ) ) 
  1186.         geqdefine ( p , 110 , q ) ; 
  1187.         else eqdefine ( p , 110 , q ) ; 
  1188.       } 
  1189.       goto lab30 ; 
  1190.     } 
  1191.       } 
  1192.       backinput () ; 
  1193.       curcs = q ; 
  1194.       q = scantoks ( false , false ) ; 
  1195.       if ( mem [(long) defref ] .hh .v.RH == 0 ) 
  1196.       {
  1197.     if ( ( a >= 4 ) ) 
  1198.     geqdefine ( p , 100 , 0 ) ; 
  1199.     else eqdefine ( p , 100 , 0 ) ; 
  1200.     {
  1201.       mem [(long) defref ] .hh .v.RH = avail ; 
  1202.       avail = defref ; 
  1203.  
  1204. #ifdef STAT
  1205.       decr ( dynused ) ; 
  1206. #endif /* STAT */
  1207.     } 
  1208.       } 
  1209.       else { 
  1210.     if ( p == 4057 ) 
  1211.     {
  1212.       mem [(long) q ] .hh .v.RH = getavail () ; 
  1213.       q = mem [(long) q ] .hh .v.RH ; 
  1214.       mem [(long) q ] .hh .v.LH = 637 ; 
  1215.       q = getavail () ; 
  1216.       mem [(long) q ] .hh .v.LH = 379 ; 
  1217.       mem [(long) q ] .hh .v.RH = mem [(long) defref ] .hh .v.RH ; 
  1218.       mem [(long) defref ] .hh .v.RH = q ; 
  1219.     } 
  1220.     if ( ( a >= 4 ) ) 
  1221.     geqdefine ( p , 110 , defref ) ; 
  1222.     else eqdefine ( p , 110 , defref ) ; 
  1223.       } 
  1224.     } 
  1225.     break ; 
  1226.   case 72 : 
  1227.     {
  1228.       p = curchr ; 
  1229.       scanoptional () ; 
  1230.       scanint () ; 
  1231.       if ( ( a >= 4 ) ) 
  1232.       geqworddefin ( p , curval ) ; 
  1233.       else eqworddefine ( p , curval ) ; 
  1234.     } 
  1235.     break ; 
  1236.   case 73 : 
  1237.     {
  1238.       p = curchr ; 
  1239.       scanoptional () ; 
  1240.       scandimen ( false , false , false ) ; 
  1241.       if ( ( a >= 4 ) ) 
  1242.       geqworddefin ( p , curval ) ; 
  1243.       else eqworddefine ( p , curval ) ; 
  1244.     } 
  1245.     break ; 
  1246.   case 74 : 
  1247.   case 75 : 
  1248.     {
  1249.       p = curchr ; 
  1250.       n = curcmd ; 
  1251.       scanoptional () ; 
  1252.       if ( n == 75 ) 
  1253.       scanglue ( 3 ) ; 
  1254.       else scanglue ( 2 ) ; 
  1255.       trapzeroglue () ; 
  1256.       if ( ( a >= 4 ) ) 
  1257.       geqdefine ( p , 116 , curval ) ; 
  1258.       else eqdefine ( p , 116 , curval ) ; 
  1259.     } 
  1260.     break ; 
  1261.   case 84 : 
  1262.     {
  1263.       if ( curchr == 4627 ) 
  1264.       n = 15 ; 
  1265.       else if ( curchr == 5139 ) 
  1266.       n = 32768 ; 
  1267.       else if ( curchr == 5011 ) 
  1268.       n = 32767 ; 
  1269.       else if ( curchr == 5573 ) 
  1270.       n = 16777215 ; 
  1271.       else n = 127 ; 
  1272.       p = curchr ; 
  1273.       scansevenbit () ; 
  1274.       p = p + curval ; 
  1275.       scanoptional () ; 
  1276.       scanint () ; 
  1277.       if ( ( ( curval < 0 ) && ( p < 5573 ) ) || ( curval > n ) ) 
  1278.       {
  1279.     {
  1280.       if ( interaction == 3 ) 
  1281.       wakeuptermin () ; 
  1282.       printnl ( 133 ) ; 
  1283.       print ( 1050 ) ; 
  1284.     } 
  1285.     printint ( curval ) ; 
  1286.     if ( p < 5573 ) 
  1287.     print ( 1051 ) ; 
  1288.     else print ( 1052 ) ; 
  1289.     printint ( n ) ; 
  1290.     {
  1291.       helpptr = 1 ; 
  1292.       helpline [ 0 ] = 1053 ; 
  1293.     } 
  1294.     error () ; 
  1295.     curval = 0 ; 
  1296.       } 
  1297.       if ( p < 5139 ) 
  1298.       if ( ( a >= 4 ) ) 
  1299.       geqdefine ( p , 119 , curval ) ; 
  1300.       else eqdefine ( p , 119 , curval ) ; 
  1301.       else if ( p < 5573 ) 
  1302.       if ( ( a >= 4 ) ) 
  1303.       geqdefine ( p , 119 , curval ) ; 
  1304.       else eqdefine ( p , 119 , curval ) ; 
  1305.       else if ( ( a >= 4 ) ) 
  1306.       geqworddefin ( p , curval ) ; 
  1307.       else eqworddefine ( p , curval ) ; 
  1308.     } 
  1309.     break ; 
  1310.   case 85 : 
  1311.     {
  1312.       p = curchr ; 
  1313.       scanfourbiti () ; 
  1314.       p = p + curval ; 
  1315.       scanoptional () ; 
  1316.       scanfontiden () ; 
  1317.       if ( ( a >= 4 ) ) 
  1318.       geqdefine ( p , 119 , curval ) ; 
  1319.       else eqdefine ( p , 119 , curval ) ; 
  1320.     } 
  1321.     break ; 
  1322.   case 88 : 
  1323.   case 89 : 
  1324.   case 90 : 
  1325.   case 91 : 
  1326.     doregisterco ( a ) ; 
  1327.     break ; 
  1328.   case 97 : 
  1329.     {
  1330.       scaneightbit () ; 
  1331.       if ( ( a >= 4 ) ) 
  1332.       savestack [ saveptr + 0 ] .cint = 1073742080 + curval ; 
  1333.       else savestack [ saveptr + 0 ] .cint = 1073741824 + curval ; 
  1334.       scanoptional () ; 
  1335.       scanbox () ; 
  1336.     } 
  1337.     break ; 
  1338.   case 78 : 
  1339.     alteraux () ; 
  1340.     break ; 
  1341.   case 79 : 
  1342.     alterprevgra () ; 
  1343.     break ; 
  1344.   case 80 : 
  1345.     alterpagesof () ; 
  1346.     break ; 
  1347.   case 81 : 
  1348.     alterinteger () ; 
  1349.     break ; 
  1350.   case 82 : 
  1351.     alterboxdime () ; 
  1352.     break ; 
  1353.   case 83 : 
  1354.     {
  1355.       scanoptional () ; 
  1356.       scanint () ; 
  1357.       n = curval ; 
  1358.       if ( n <= 0 ) 
  1359.       p = 0 ; 
  1360.       else { 
  1361.     p = getnode ( 2 * n + 1 ) ; 
  1362.     mem [(long) p ] .hh .v.LH = n ; 
  1363.     for ( j = 1 ; j <= n ; j ++ ) 
  1364.     {
  1365.       scandimen ( false , false , false ) ; 
  1366.       mem [(long) p + 2 * j - 1 ] .cint = curval ; 
  1367.       scandimen ( false , false , false ) ; 
  1368.       mem [(long) p + 2 * j ] .cint = curval ; 
  1369.     } 
  1370.       } 
  1371.       if ( ( a >= 4 ) ) 
  1372.       geqdefine ( 4056 , 117 , p ) ; 
  1373.       else eqdefine ( 4056 , 117 , p ) ; 
  1374.     } 
  1375.     break ; 
  1376.   case 98 : 
  1377.     if ( curchr == 1 ) 
  1378.     {
  1379.  
  1380. #ifdef INITEX
  1381.       newpatterns () ; 
  1382.       goto lab30 ; 
  1383. #endif /* INITEX */
  1384.       {
  1385.     if ( interaction == 3 ) 
  1386.     wakeuptermin () ; 
  1387.     printnl ( 133 ) ; 
  1388.     print ( 1062 ) ; 
  1389.       } 
  1390.       helpptr = 0 ; 
  1391.       error () ; 
  1392.       do { gettoken () ; 
  1393.       } while ( ! ( curcmd == 2 ) ) ; 
  1394.       return ; 
  1395.     } 
  1396.     else { 
  1397.       newhyphexcep () ; 
  1398.       goto lab30 ; 
  1399.     } 
  1400.     break ; 
  1401.   case 76 : 
  1402.     {
  1403.       findfontdime ( true ) ; 
  1404.       k = curval ; 
  1405.       scanoptional () ; 
  1406.       scandimen ( false , false , false ) ; 
  1407.       fontinfo [ k ] .cint = curval ; 
  1408.     } 
  1409.     break ; 
  1410.   case 77 : 
  1411.     {
  1412.       n = curchr ; 
  1413.       scanfontiden () ; 
  1414.       f = curval ; 
  1415.       scanoptional () ; 
  1416.       scanint () ; 
  1417.       if ( n == 0 ) 
  1418.       hyphenchar [ f ] = curval ; 
  1419.       else skewchar [ f ] = curval ; 
  1420.     } 
  1421.     break ; 
  1422.   case 87 : 
  1423.     newfont ( a ) ; 
  1424.     break ; 
  1425.   case 99 : 
  1426.     newinteracti () ; 
  1427.     break ; 
  1428.   default : 
  1429.     confusion ( 1026 ) ; 
  1430.     break ; 
  1431.   } 
  1432.   lab30: if ( aftertoken != 0 ) 
  1433.   {
  1434.     curtok = aftertoken ; 
  1435.     backinput () ; 
  1436.     aftertoken = 0 ; 
  1437.   } 
  1438. doassignment () { /* 10 */ r_doassignment 
  1439.   while ( true ) { 
  1440.     do { getxtoken () ; 
  1441.     } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  1442.     if ( curcmd <= 69 ) 
  1443.     return ; 
  1444.     prefixedcomm () ; 
  1445.   } 
  1446. openorclosei () { r_openorclosei 
  1447.   quarterword c ; 
  1448.   quarterword n ; 
  1449.   c = curchr ; 
  1450.   scanfourbiti () ; 
  1451.   n = curval ; 
  1452.   if ( readopen [ n ] != 2 ) 
  1453.   {
  1454.     aclose ( readfile [ n ] ) ; 
  1455.     readopen [ n ] = 2 ; 
  1456.   } 
  1457.   if ( c != 0 ) 
  1458.   {
  1459.     scanoptional () ; 
  1460.     scanfilename () ; 
  1461.     if ( curext == 206 ) 
  1462.     curext = 644 ; 
  1463.     packfilename ( curname , curarea , curext ) ; 
  1464.     if ( aopenin ( readfile [ n ] , readpathspec ) ) 
  1465.     readopen [ n ] = 1 ; 
  1466.   } 
  1467. issuemessage () { r_issuemessage 
  1468.   quarterword oldsetting ; 
  1469.   quarterword c ; 
  1470.   strnumber s ; 
  1471.   c = curchr ; 
  1472.   mem [(long) memtop - 12 ] .hh .v.RH = scantoks ( false , true ) ; 
  1473.   oldsetting = selector ; 
  1474.   selector = 21 ; 
  1475.   tokenshow ( defref ) ; 
  1476.   selector = oldsetting ; 
  1477.   flushlist ( defref ) ; 
  1478.   {
  1479.     if ( poolptr + 1 > poolsize ) 
  1480.     overflow ( 128 , poolsize - initpoolptr ) ; 
  1481.   } 
  1482.   s = makestring () ; 
  1483.   if ( c == 0 ) 
  1484.   {
  1485.     if ( termoffset + ( strstart [ s + 1 ] - strstart [ s ] ) > maxprintline - 
  1486.     2 ) 
  1487.     println () ; 
  1488.     else if ( ( termoffset > 0 ) || ( fileoffset > 0 ) ) 
  1489.     printchar ( 32 ) ; 
  1490.     print ( s ) ; 
  1491.     termflush ( output ) ; 
  1492.   } 
  1493.   else { 
  1494.     {
  1495.       if ( interaction == 3 ) 
  1496.       wakeuptermin () ; 
  1497.       printnl ( 133 ) ; 
  1498.       print ( s ) ; 
  1499.     } 
  1500.     if ( eqtb [ 4065 ] .hh .v.RH != 0 ) 
  1501.     useerrhelp = true ; 
  1502.     else if ( longhelpseen ) 
  1503.     {
  1504.       helpptr = 1 ; 
  1505.       helpline [ 0 ] = 1078 ; 
  1506.     } 
  1507.     else { 
  1508.       if ( interaction < 3 ) 
  1509.       longhelpseen = true ; 
  1510.       {
  1511.     helpptr = 4 ; 
  1512.     helpline [ 3 ] = 1079 ; 
  1513.     helpline [ 2 ] = 1080 ; 
  1514.     helpline [ 1 ] = 1081 ; 
  1515.     helpline [ 0 ] = 1082 ; 
  1516.       } 
  1517.     } 
  1518.     error () ; 
  1519.     useerrhelp = false ; 
  1520.   } 
  1521.   {
  1522.     decr ( strptr ) ; 
  1523.     poolptr = strstart [ strptr ] ; 
  1524.   } 
  1525. shiftcase () { r_shiftcase 
  1526.   halfword b ; 
  1527.   halfword p ; 
  1528.   halfword t ; 
  1529.   eightbits c ; 
  1530.   b = curchr ; 
  1531.   p = scantoks ( false , false ) ; 
  1532.   p = mem [(long) defref ] .hh .v.RH ; 
  1533.   while ( p != 0 ) { 
  1534.     t = mem [(long) p ] .hh .v.LH ; 
  1535.     if ( t < 4225 ) 
  1536.     {
  1537.       if ( t >= 4096 ) 
  1538.       t = t - 1 ; 
  1539.       c = t % 256 ; 
  1540.       if ( c < 128 ) 
  1541.       if ( eqtb [ b + c ] .hh .v.RH != 0 ) 
  1542.       t = 256 * ( t / 256 ) + eqtb [ b + c ] .hh .v.RH ; 
  1543.       if ( t >= 4096 ) 
  1544.       mem [(long) p ] .hh .v.LH = t + 1 ; 
  1545.       else mem [(long) p ] .hh .v.LH = t ; 
  1546.     } 
  1547.     p = mem [(long) p ] .hh .v.RH ; 
  1548.   } 
  1549.   begintokenli ( mem [(long) defref ] .hh .v.RH , 3 ) ; 
  1550.   {
  1551.     mem [(long) defref ] .hh .v.RH = avail ; 
  1552.     avail = defref ; 
  1553.  
  1554. #ifdef STAT
  1555.     decr ( dynused ) ; 
  1556. #endif /* STAT */
  1557.   } 
  1558. showwhatever () { /* 50 */ r_showwhatever 
  1559.   halfword p ; 
  1560.   switch ( curchr ) 
  1561.   {case 3 : 
  1562.     {
  1563.       begindiagnos () ; 
  1564.       showactiviti () ; 
  1565.     } 
  1566.     break ; 
  1567.   case 1 : 
  1568.     {
  1569.       scaneightbit () ; 
  1570.       begindiagnos () ; 
  1571.       printnl ( 1100 ) ; 
  1572.       printint ( curval ) ; 
  1573.       printchar ( 61 ) ; 
  1574.       if ( eqtb [ 4322 + curval ] .hh .v.RH == 0 ) 
  1575.       print ( 275 ) ; 
  1576.       else showbox ( eqtb [ 4322 + curval ] .hh .v.RH ) ; 
  1577.     } 
  1578.     break ; 
  1579.   case 0 : 
  1580.     {
  1581.       gettoken () ; 
  1582.       if ( interaction == 3 ) 
  1583.       wakeuptermin () ; 
  1584.       printnl ( 1094 ) ; 
  1585.       if ( curcs != 0 ) 
  1586.       {
  1587.     sprintcs ( curcs ) ; 
  1588.     printchar ( 61 ) ; 
  1589.       } 
  1590.       printmeaning () ; 
  1591.       goto lab50 ; 
  1592.     } 
  1593.     break ; 
  1594.   default : 
  1595.     {
  1596.       p = thetoks () ; 
  1597.       if ( interaction == 3 ) 
  1598.       wakeuptermin () ; 
  1599.       printnl ( 1094 ) ; 
  1600.       tokenshow ( memtop - 3 ) ; 
  1601.       flushlist ( mem [(long) memtop - 3 ] .hh .v.RH ) ; 
  1602.       goto lab50 ; 
  1603.     } 
  1604.     break ; 
  1605.   } 
  1606.   enddiagnosti ( true ) ; 
  1607.   {
  1608.     if ( interaction == 3 ) 
  1609.     wakeuptermin () ; 
  1610.     printnl ( 133 ) ; 
  1611.     print ( 1101 ) ; 
  1612.   } 
  1613.   if ( selector == 19 ) 
  1614.   if ( eqtb [ 5296 ] .cint <= 0 ) 
  1615.   {
  1616.     selector = 17 ; 
  1617.     print ( 1102 ) ; 
  1618.     selector = 19 ; 
  1619.   } 
  1620.   lab50: if ( interaction < 3 ) 
  1621.   {
  1622.     helpptr = 0 ; 
  1623.     decr ( errorcount ) ; 
  1624.   } 
  1625.   else if ( eqtb [ 5296 ] .cint > 0 ) 
  1626.   {
  1627.     {
  1628.       helpptr = 3 ; 
  1629.       helpline [ 2 ] = 1089 ; 
  1630.       helpline [ 1 ] = 1090 ; 
  1631.       helpline [ 0 ] = 1091 ; 
  1632.     } 
  1633.   } 
  1634.   else { 
  1635.     {
  1636.       helpptr = 5 ; 
  1637.       helpline [ 4 ] = 1089 ; 
  1638.       helpline [ 3 ] = 1090 ; 
  1639.       helpline [ 2 ] = 1091 ; 
  1640.       helpline [ 1 ] = 1092 ; 
  1641.       helpline [ 0 ] = 1093 ; 
  1642.     } 
  1643.   } 
  1644.   error () ; 
  1645.  
  1646. #ifdef INITEX
  1647. storefmtfile () { /* 41 42 31 32 */ r_storefmtfile 
  1648.   integer j, k, l ; 
  1649.   halfword p, q ; 
  1650.   integer x ; 
  1651.   fourquarters w ; 
  1652.   if ( saveptr != 0 ) 
  1653.   {
  1654.     {
  1655.       if ( interaction == 3 ) 
  1656.       wakeuptermin () ; 
  1657.       printnl ( 133 ) ; 
  1658.       print ( 1104 ) ; 
  1659.     } 
  1660.     {
  1661.       helpptr = 1 ; 
  1662.       helpline [ 0 ] = 1105 ; 
  1663.     } 
  1664.     {
  1665.       if ( interaction == 3 ) 
  1666.       interaction = 2 ; 
  1667.       error () ; 
  1668.  
  1669. #ifdef DEBUG
  1670.       if ( interaction > 0 ) 
  1671.       debughelp () ; 
  1672. #endif /* DEBUG */
  1673.       history = 3 ; 
  1674.       jumpout () ; 
  1675.     } 
  1676.   } 
  1677.   selector = 21 ; 
  1678.   print ( 1116 ) ; 
  1679.   print ( jobname ) ; 
  1680.   printchar ( 32 ) ; 
  1681.   printint ( eqtb [ 5290 ] .cint % 100 ) ; 
  1682.   printchar ( 46 ) ; 
  1683.   printint ( eqtb [ 5289 ] .cint ) ; 
  1684.   printchar ( 46 ) ; 
  1685.   printint ( eqtb [ 5288 ] .cint ) ; 
  1686.   printchar ( 41 ) ; 
  1687.   if ( interaction == 0 ) 
  1688.   selector = 18 ; 
  1689.   else selector = 19 ; 
  1690.   {
  1691.     if ( poolptr + 1 > poolsize ) 
  1692.     overflow ( 128 , poolsize - initpoolptr ) ; 
  1693.   } 
  1694.   formatident = makestring () ; 
  1695.   packjobname ( 1117 ) ; 
  1696.   while ( ! wopenout ( fmtfile ) ) promptfilena ( 1118 , 1117 ) ; 
  1697.   printnl ( 1119 ) ; 
  1698.   print ( wmakenamestr ( fmtfile ) ) ; 
  1699.   {
  1700.     decr ( strptr ) ; 
  1701.     poolptr = strstart [ strptr ] ; 
  1702.   } 
  1703.   printnl ( formatident ) ; 
  1704.   putfmtint ( 13634946 ) ; 
  1705.   putfmtint ( 0 ) ; 
  1706.   putfmtint ( memtop ) ; 
  1707.   putfmtint ( 5976 ) ; 
  1708.   putfmtint ( 2551 ) ; 
  1709.   putfmtint ( 307 ) ; 
  1710.   putfmtint ( poolptr ) ; 
  1711.   putfmtint ( strptr ) ; 
  1712.   dumpthings ( strstart [ 0 ] , strptr + 1 ) ; 
  1713.   dumpthings ( strpool [ 0 ] , poolptr ) ; 
  1714.   println () ; 
  1715.   printint ( strptr ) ; 
  1716.   print ( 1106 ) ; 
  1717.   printint ( poolptr ) ; 
  1718.   sortavail () ; 
  1719.   varused = 0 ; 
  1720.   putfmtint ( lomemmax ) ; 
  1721.   putfmtint ( rover ) ; 
  1722.   p = 0 ; 
  1723.   q = rover ; 
  1724.   x = 0 ; 
  1725.   do { dumpthings ( mem [(long) p ] , q + 2 - p ) ; 
  1726.     x = x + q + 2 - p ; 
  1727.     varused = varused + q - p ; 
  1728.     p = q + mem [(long) q ] .hh .v.LH ; 
  1729.     q = mem [(long) q + 1 ] .hh .v.RH ; 
  1730.   } while ( ! ( q == rover ) ) ; 
  1731.   varused = varused + lomemmax - p ; 
  1732.   dynused = memend + 1 - himemmin ; 
  1733.   dumpthings ( mem [(long) p ] , lomemmax + 1 - p ) ; 
  1734.   x = x + lomemmax + 1 - p ; 
  1735.   putfmtint ( himemmin ) ; 
  1736.   putfmtint ( avail ) ; 
  1737.   dumpthings ( mem [(long) himemmin ] , memend + 1 - himemmin ) ; 
  1738.   x = x + memend + 1 - himemmin ; 
  1739.   p = avail ; 
  1740.   while ( p != 0 ) { 
  1741.     decr ( dynused ) ; 
  1742.     p = mem [(long) p ] .hh .v.RH ; 
  1743.   } 
  1744.   putfmtint ( varused ) ; 
  1745.   putfmtint ( dynused ) ; 
  1746.   println () ; 
  1747.   printint ( x ) ; 
  1748.   print ( 1107 ) ; 
  1749.   printint ( varused ) ; 
  1750.   printchar ( 38 ) ; 
  1751.   printint ( dynused ) ; 
  1752.   k = 1 ; 
  1753.   do { j = k ; 
  1754.     while ( j < 5266 ) { 
  1755.       if ( ( eqtb [ j ] .hh .v.RH == eqtb [ j + 1 ] .hh .v.RH ) && ( eqtb [ j 
  1756.       ] .hh.b0 == eqtb [ j + 1 ] .hh.b0 ) && ( eqtb [ j ] .hh.b1 == eqtb [ j + 
  1757.       1 ] .hh.b1 ) ) 
  1758.       goto lab41 ; 
  1759.       incr ( j ) ; 
  1760.     } 
  1761.     l = 5267 ; 
  1762.     goto lab31 ; 
  1763.     lab41: incr ( j ) ; 
  1764.     l = j ; 
  1765.     while ( j < 5266 ) { 
  1766.       if ( ( eqtb [ j ] .hh .v.RH != eqtb [ j + 1 ] .hh .v.RH ) || ( eqtb [ j 
  1767.       ] .hh.b0 != eqtb [ j + 1 ] .hh.b0 ) || ( eqtb [ j ] .hh.b1 != eqtb [ j + 
  1768.       1 ] .hh.b1 ) ) 
  1769.       goto lab31 ; 
  1770.       incr ( j ) ; 
  1771.     } 
  1772.     lab31: putfmtint ( l - k ) ; 
  1773.     dumpthings ( eqtb [ k ] , l - k ) ; 
  1774.     k = j + 1 ; 
  1775.     putfmtint ( k - l ) ; 
  1776.   } while ( ! ( k == 5267 ) ) ; 
  1777.   do { j = k ; 
  1778.     while ( j < 5976 ) { 
  1779.       if ( eqtb [ j ] .cint == eqtb [ j + 1 ] .cint ) 
  1780.       goto lab42 ; 
  1781.       incr ( j ) ; 
  1782.     } 
  1783.     l = 5977 ; 
  1784.     goto lab32 ; 
  1785.     lab42: incr ( j ) ; 
  1786.     l = j ; 
  1787.     while ( j < 5976 ) { 
  1788.       if ( eqtb [ j ] .cint != eqtb [ j + 1 ] .cint ) 
  1789.       goto lab32 ; 
  1790.       incr ( j ) ; 
  1791.     } 
  1792.     lab32: putfmtint ( l - k ) ; 
  1793.     dumpthings ( eqtb [ k ] , l - k ) ; 
  1794.     k = j + 1 ; 
  1795.     putfmtint ( k - l ) ; 
  1796.   } while ( ! ( k > 5976 ) ) ; 
  1797.   putfmtint ( parloc ) ; 
  1798.   putfmtint ( writeloc ) ; 
  1799.   putfmtint ( hashused ) ; 
  1800.   cscount = 3257 - hashused ; 
  1801.   for ( p = 258 ; p <= hashused ; p ++ ) 
  1802.   if ( hash [ p ] .v.RH != 0 ) 
  1803.   {
  1804.     putfmtint ( p ) ; 
  1805.     putfmthh ( hash [ p ] ) ; 
  1806.     incr ( cscount ) ; 
  1807.   } 
  1808.   dumpthings ( hash [ hashused + 1 ] , 3524 - hashused ) ; 
  1809.   putfmtint ( cscount ) ; 
  1810.   println () ; 
  1811.   printint ( cscount ) ; 
  1812.   print ( 1108 ) ; 
  1813.   putfmtint ( fmemptr ) ; 
  1814.   dumpthings ( fontinfo [ 0 ] , fmemptr ) ; 
  1815.   putfmtint ( fontptr ) ; 
  1816.   dumpthings ( fontsize [ 0 ] , fontptr + 1 ) ; 
  1817.   dumpthings ( fontdsize [ 0 ] , fontptr + 1 ) ; 
  1818.   dumpthings ( fontparams [ 0 ] , fontptr + 1 ) ; 
  1819.   dumpthings ( hyphenchar [ 0 ] , fontptr + 1 ) ; 
  1820.   dumpthings ( skewchar [ 0 ] , fontptr + 1 ) ; 
  1821.   dumpthings ( fontname [ 0 ] , fontptr + 1 ) ; 
  1822.   dumpthings ( fontarea [ 0 ] , fontptr + 1 ) ; 
  1823.   dumpthings ( fontbc [ 0 ] , fontptr + 1 ) ; 
  1824.   dumpthings ( fontec [ 0 ] , fontptr + 1 ) ; 
  1825.   dumpthings ( charbase [ 0 ] , fontptr + 1 ) ; 
  1826.   dumpthings ( widthbase [ 0 ] , fontptr + 1 ) ; 
  1827.   dumpthings ( heightbase [ 0 ] , fontptr + 1 ) ; 
  1828.   dumpthings ( depthbase [ 0 ] , fontptr + 1 ) ; 
  1829.   dumpthings ( italicbase [ 0 ] , fontptr + 1 ) ; 
  1830.   dumpthings ( ligkernbase [ 0 ] , fontptr + 1 ) ; 
  1831.   dumpthings ( kernbase [ 0 ] , fontptr + 1 ) ; 
  1832.   dumpthings ( extenbase [ 0 ] , fontptr + 1 ) ; 
  1833.   dumpthings ( parambase [ 0 ] , fontptr + 1 ) ; 
  1834.   for ( k = 0 ; k <= fontptr ; k ++ ) 
  1835.   {
  1836.     printnl ( 1109 ) ; 
  1837.     printesc ( hash [ 3268 + k ] .v.RH ) ; 
  1838.     printchar ( 61 ) ; 
  1839.     printfilenam ( fontname [ k ] , fontarea [ k ] , 206 ) ; 
  1840.     if ( fontsize [ k ] != fontdsize [ k ] ) 
  1841.     {
  1842.       print ( 598 ) ; 
  1843.       printscaled ( fontsize [ k ] ) ; 
  1844.       print ( 262 ) ; 
  1845.     } 
  1846.   } 
  1847.   println () ; 
  1848.   printint ( fmemptr - 7 ) ; 
  1849.   print ( 1110 ) ; 
  1850.   printint ( fontptr - 0 ) ; 
  1851.   print ( 1111 ) ; 
  1852.   if ( fontptr != 1 ) 
  1853.   printchar ( 115 ) ; 
  1854.   putfmtint ( hyphcount ) ; 
  1855.   for ( k = 0 ; k <= 307 ; k ++ ) 
  1856.   if ( hyphword [ k ] != 0 ) 
  1857.   {
  1858.     putfmtint ( k ) ; 
  1859.     putfmtint ( hyphword [ k ] ) ; 
  1860.     putfmtint ( hyphlist [ k ] ) ; 
  1861.   } 
  1862.   putfmtint ( triemax ) ; 
  1863.   dumpthings ( trie [ 0 ] , triemax + 1 ) ; 
  1864.   putfmtint ( trieopptr ) ; 
  1865.   dumpthings ( hyfdistance [ 1 ] , trieopptr - 0 ) ; 
  1866.   dumpthings ( hyfnum [ 1 ] , trieopptr - 0 ) ; 
  1867.   dumpthings ( hyfnext [ 1 ] , trieopptr - 0 ) ; 
  1868.   println () ; 
  1869.   printint ( hyphcount ) ; 
  1870.   print ( 1112 ) ; 
  1871.   if ( hyphcount != 1 ) 
  1872.   printchar ( 115 ) ; 
  1873.   printnl ( 1113 ) ; 
  1874.   printint ( triemax ) ; 
  1875.   print ( 1114 ) ; 
  1876.   printint ( trieopptr ) ; 
  1877.   print ( 1115 ) ; 
  1878.   if ( trieopptr != 1 ) 
  1879.   printchar ( 115 ) ; 
  1880.   putfmtint ( interaction ) ; 
  1881.   putfmtint ( formatident ) ; 
  1882.   putfmtint ( 69069 ) ; 
  1883.   eqtb [ 5298 ] .cint = 0 ; 
  1884.   wclose ( fmtfile ) ; 
  1885. #endif /* INITEX */
  1886. znewwhatsit ( s , w ) 
  1887. smallnumber s ; 
  1888. smallnumber w ; 
  1889. {r_newwhatsit 
  1890.   halfword p ; 
  1891.   p = getnode ( w ) ; 
  1892.   mem [(long) p ] .hh.b0 = 8 ; 
  1893.   mem [(long) p ] .hh.b1 = s ; 
  1894.   mem [(long) curlist .tailfield ] .hh .v.RH = p ; 
  1895.   curlist .tailfield = p ; 
  1896. znewwritewhat ( w ) 
  1897. smallnumber w ; 
  1898. {r_newwritewhat 
  1899.   newwhatsit ( curchr , w ) ; 
  1900.   if ( w != 2 ) 
  1901.   scanfourbiti () ; 
  1902.   else { 
  1903.     scanint () ; 
  1904.     if ( curval < 0 ) 
  1905.     curval = 17 ; 
  1906.     else if ( curval > 15 ) 
  1907.     curval = 16 ; 
  1908.   } 
  1909.   mem [(long) curlist .tailfield + 1 ] .hh .v.LH = curval ; 
  1910. doextension () { r_doextension 
  1911.   integer i, j, k ; 
  1912.   halfword p, q, r ; 
  1913.   switch ( curchr ) 
  1914.   {case 0 : 
  1915.     {
  1916.       newwritewhat ( 3 ) ; 
  1917.       scanoptional () ; 
  1918.       scanfilename () ; 
  1919.       mem [(long) curlist .tailfield + 1 ] .hh .v.RH = curname ; 
  1920.       mem [(long) curlist .tailfield + 2 ] .hh .v.LH = curarea ; 
  1921.       mem [(long) curlist .tailfield + 2 ] .hh .v.RH = curext ; 
  1922.     } 
  1923.     break ; 
  1924.   case 1 : 
  1925.     {
  1926.       k = curcs ; 
  1927.       newwritewhat ( 2 ) ; 
  1928.       curcs = k ; 
  1929.       p = scantoks ( false , false ) ; 
  1930.       mem [(long) curlist .tailfield + 1 ] .hh .v.RH = defref ; 
  1931.     } 
  1932.     break ; 
  1933.   case 2 : 
  1934.     {
  1935.       newwritewhat ( 2 ) ; 
  1936.       mem [(long) curlist .tailfield + 1 ] .hh .v.RH = 0 ; 
  1937.     } 
  1938.     break ; 
  1939.   case 3 : 
  1940.     {
  1941.       newwhatsit ( 3 , 2 ) ; 
  1942.       mem [(long) curlist .tailfield + 1 ] .hh .v.LH = 0 ; 
  1943.       p = scantoks ( false , true ) ; 
  1944.       mem [(long) curlist .tailfield + 1 ] .hh .v.RH = defref ; 
  1945.     } 
  1946.     break ; 
  1947.   case 4 : 
  1948.     {
  1949.       getxtoken () ; 
  1950.       if ( ( curcmd == 59 ) && ( curchr <= 2 ) ) 
  1951.       {
  1952.     p = curlist .tailfield ; 
  1953.     doextension () ; 
  1954.     outwhat ( curlist .tailfield ) ; 
  1955.     flushnodelis ( curlist .tailfield ) ; 
  1956.     curlist .tailfield = p ; 
  1957.     mem [(long) p ] .hh .v.RH = 0 ; 
  1958.       } 
  1959.       else backinput () ; 
  1960.     } 
  1961.     break ; 
  1962.   default : 
  1963.     confusion ( 1134 ) ; 
  1964.     break ; 
  1965.   } 
  1966. handlerightb () { r_handlerightb 
  1967.   halfword p, q ; 
  1968.   scaled d ; 
  1969.   integer f ; 
  1970.   switch ( curgroup ) 
  1971.   {case 1 : 
  1972.     unsave () ; 
  1973.     break ; 
  1974.   case 0 : 
  1975.     {
  1976.       {
  1977.     if ( interaction == 3 ) 
  1978.     wakeuptermin () ; 
  1979.     printnl ( 133 ) ; 
  1980.     print ( 892 ) ; 
  1981.       } 
  1982.       {
  1983.     helpptr = 2 ; 
  1984.     helpline [ 1 ] = 893 ; 
  1985.     helpline [ 0 ] = 894 ; 
  1986.       } 
  1987.       error () ; 
  1988.     } 
  1989.     break ; 
  1990.   case 14 : 
  1991.   case 15 : 
  1992.   case 16 : 
  1993.     extrarightbr () ; 
  1994.     break ; 
  1995.   case 2 : 
  1996.     package ( 0 ) ; 
  1997.     break ; 
  1998.   case 3 : 
  1999.     {
  2000.       adjusttail = memtop - 5 ; 
  2001.       package ( 0 ) ; 
  2002.     } 
  2003.     break ; 
  2004.   case 4 : 
  2005.     {
  2006.       endgraf () ; 
  2007.       package ( 0 ) ; 
  2008.     } 
  2009.     break ; 
  2010.   case 5 : 
  2011.     {
  2012.       endgraf () ; 
  2013.       package ( 4 ) ; 
  2014.     } 
  2015.     break ; 
  2016.   case 11 : 
  2017.     {
  2018.       endgraf () ; 
  2019.       q = eqtb [ 3536 ] .hh .v.RH ; 
  2020.       incr ( mem [(long) q ] .hh .v.RH ) ; 
  2021.       d = eqtb [ 5707 ] .cint ; 
  2022.       f = eqtb [ 5309 ] .cint ; 
  2023.       unsave () ; 
  2024.       decr ( saveptr ) ; 
  2025.       p = vpackage ( mem [(long) curlist .headfield ] .hh .v.RH , 0 , 1 , 1073741823 
  2026.       ) ; 
  2027.       popnest () ; 
  2028.       if ( savestack [ saveptr + 0 ] .cint < 255 ) 
  2029.       {
  2030.     {
  2031.       mem [(long) curlist .tailfield ] .hh .v.RH = getnode ( 5 ) ; 
  2032.       curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  2033.     } 
  2034.     mem [(long) curlist .tailfield ] .hh.b0 = 3 ; 
  2035.     mem [(long) curlist .tailfield ] .hh.b1 = savestack [ saveptr + 0 ] .cint ; 
  2036.     mem [(long) curlist .tailfield + 3 ] .cint = mem [(long) p + 3 ] .cint + mem [(long) p + 
  2037.     2 ] .cint ; 
  2038.     mem [(long) curlist .tailfield + 4 ] .hh .v.LH = mem [(long) p + 5 ] .hh .v.RH ; 
  2039.     mem [(long) curlist .tailfield + 4 ] .hh .v.RH = q ; 
  2040.     mem [(long) curlist .tailfield + 2 ] .cint = d ; 
  2041.     mem [(long) curlist .tailfield + 1 ] .cint = f ; 
  2042.       } 
  2043.       else { 
  2044.     {
  2045.       mem [(long) curlist .tailfield ] .hh .v.RH = getnode ( 2 ) ; 
  2046.       curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  2047.     } 
  2048.     mem [(long) curlist .tailfield ] .hh.b0 = 5 ; 
  2049.     mem [(long) curlist .tailfield ] .hh.b1 = 0 ; 
  2050.     mem [(long) curlist .tailfield + 1 ] .cint = mem [(long) p + 5 ] .hh .v.RH ; 
  2051.     deletegluere ( q ) ; 
  2052.       } 
  2053.       freenode ( p , 7 ) ; 
  2054.       if ( nestptr == 0 ) 
  2055.       buildpage () ; 
  2056.     } 
  2057.     break ; 
  2058.   case 8 : 
  2059.     {
  2060.       if ( curinput .locfield != 0 ) 
  2061.       {
  2062.     {
  2063.       if ( interaction == 3 ) 
  2064.       wakeuptermin () ; 
  2065.       printnl ( 133 ) ; 
  2066.       print ( 858 ) ; 
  2067.     } 
  2068.     {
  2069.       helpptr = 2 ; 
  2070.       helpline [ 1 ] = 859 ; 
  2071.       helpline [ 0 ] = 860 ; 
  2072.     } 
  2073.     error () ; 
  2074.     do { gettoken () ; 
  2075.     } while ( ! ( curinput .locfield == 0 ) ) ; 
  2076.       } 
  2077.       endtokenlist () ; 
  2078.       endgraf () ; 
  2079.       unsave () ; 
  2080.       outputactive = false ; 
  2081.       insertpenalt = 0 ; 
  2082.       if ( eqtb [ 4577 ] .hh .v.RH != 0 ) 
  2083.       {
  2084.     {
  2085.       if ( interaction == 3 ) 
  2086.       wakeuptermin () ; 
  2087.       printnl ( 133 ) ; 
  2088.       print ( 861 ) ; 
  2089.     } 
  2090.     printesc ( 274 ) ; 
  2091.     printint ( 255 ) ; 
  2092.     {
  2093.       helpptr = 3 ; 
  2094.       helpline [ 2 ] = 862 ; 
  2095.       helpline [ 1 ] = 863 ; 
  2096.       helpline [ 0 ] = 864 ; 
  2097.     } 
  2098.     boxerror ( 255 ) ; 
  2099.       } 
  2100.       if ( curlist .tailfield != curlist .headfield ) 
  2101.       {
  2102.     mem [(long) pagetail ] .hh .v.RH = mem [(long) curlist .headfield ] .hh .v.RH ; 
  2103.     pagetail = curlist .tailfield ; 
  2104.       } 
  2105.       if ( mem [(long) memtop - 2 ] .hh .v.RH != 0 ) 
  2106.       {
  2107.     if ( mem [(long) memtop - 1 ] .hh .v.RH == 0 ) 
  2108.     nest [ 0 ] .tailfield = pagetail ; 
  2109.     mem [(long) pagetail ] .hh .v.RH = mem [(long) memtop - 1 ] .hh .v.RH ; 
  2110.     mem [(long) memtop - 1 ] .hh .v.RH = mem [(long) memtop - 2 ] .hh .v.RH ; 
  2111.     mem [(long) memtop - 2 ] .hh .v.RH = 0 ; 
  2112.     pagetail = memtop - 2 ; 
  2113.       } 
  2114.       popnest () ; 
  2115.       buildpage () ; 
  2116.     } 
  2117.     break ; 
  2118.   case 10 : 
  2119.     builddiscret () ; 
  2120.     break ; 
  2121.   case 6 : 
  2122.     {
  2123.       backinput () ; 
  2124.       curtok = 7355 ; 
  2125.       {
  2126.     if ( interaction == 3 ) 
  2127.     wakeuptermin () ; 
  2128.     printnl ( 133 ) ; 
  2129.     print ( 483 ) ; 
  2130.       } 
  2131.       printesc ( 752 ) ; 
  2132.       print ( 484 ) ; 
  2133.       {
  2134.     helpptr = 1 ; 
  2135.     helpline [ 0 ] = 973 ; 
  2136.       } 
  2137.       inserror () ; 
  2138.     } 
  2139.     break ; 
  2140.   case 7 : 
  2141.     {
  2142.       endgraf () ; 
  2143.       unsave () ; 
  2144.       alignpeek () ; 
  2145.     } 
  2146.     break ; 
  2147.   case 12 : 
  2148.     {
  2149.       endgraf () ; 
  2150.       unsave () ; 
  2151.       saveptr = saveptr - 2 ; 
  2152.       p = vpackage ( mem [(long) curlist .headfield ] .hh .v.RH , savestack [ 
  2153.       saveptr + 1 ] .cint , savestack [ saveptr + 0 ] .cint , 1073741823 ) ; 
  2154.       popnest () ; 
  2155.       {
  2156.     mem [(long) curlist .tailfield ] .hh .v.RH = newnoad () ; 
  2157.     curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ; 
  2158.       } 
  2159.       mem [(long) curlist .tailfield ] .hh.b0 = 29 ; 
  2160.       mem [(long) curlist .tailfield + 1 ] .hh .v.RH = 2 ; 
  2161.       mem [(long) curlist .tailfield + 1 ] .hh .v.LH = p ; 
  2162.     } 
  2163.     break ; 
  2164.   case 13 : 
  2165.     buildchoices () ; 
  2166.     break ; 
  2167.   case 9 : 
  2168.     {
  2169.       unsave () ; 
  2170.       decr ( saveptr ) ; 
  2171.       mem [(long) savestack [ saveptr + 0 ] .cint ] .hh .v.RH = 3 ; 
  2172.       p = finmlist ( 0 ) ; 
  2173.       mem [(long) savestack [ saveptr + 0 ] .cint ] .hh .v.LH = p ; 
  2174.       if ( p != 0 ) 
  2175.       if ( mem [(long) p ] .hh .v.RH == 0 ) 
  2176.       if ( mem [(long) p ] .hh.b0 == 16 ) 
  2177.       {
  2178.     if ( mem [(long) p + 3 ] .hh .v.RH == 0 ) 
  2179.     if ( mem [(long) p + 2 ] .hh .v.RH == 0 ) 
  2180.     {
  2181.       mem [(long) savestack [ saveptr + 0 ] .cint ] .hh = mem [(long) p + 1 ] .hh ; 
  2182.       freenode ( p , 4 ) ; 
  2183.     } 
  2184.       } 
  2185.       else if ( mem [(long) p ] .hh.b0 == 28 ) 
  2186.       if ( savestack [ saveptr + 0 ] .cint == curlist .tailfield + 1 ) 
  2187.       if ( mem [(long) curlist .tailfield ] .hh.b0 == 16 ) 
  2188.       {
  2189.     q = curlist .headfield ; 
  2190.     while ( mem [(long) q ] .hh .v.RH != curlist .tailfield ) q = mem [(long) q ] .hh 
  2191.     .v.RH ; 
  2192.     mem [(long) q ] .hh .v.RH = p ; 
  2193.     freenode ( curlist .tailfield , 4 ) ; 
  2194.     curlist .tailfield = p ; 
  2195.       } 
  2196.     } 
  2197.     break ; 
  2198.   default : 
  2199.     confusion ( 895 ) ; 
  2200.     break ; 
  2201.   } 
  2202.