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

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