home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / tex31 / texsrc.lzh / TEXSRC.LZH / tex1.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-11-28  |  27.8 KB  |  1,338 lines

  1. #define EXTERN extern
  2. #include "texd.h"
  3.  
  4. void zshowtokenlist ( p , q , l ) 
  5. integer p ; 
  6. integer q ; 
  7. integer l ; 
  8. {/* 10 */ showtokenlist_regmem 
  9.   integer m, c  ; 
  10.   ASCIIcode matchchr  ; 
  11.   ASCIIcode n  ; 
  12.   matchchr = 35 ; 
  13.   n = 48 ; 
  14.   tally = 0 ; 
  15.   while ( ( p != 0 ) && ( tally < l ) ) {
  16.       
  17.     if ( p == q ) 
  18.     {
  19.       firstcount = tally ; 
  20.       trickcount = tally + 1 + errorline - halferrorline ; 
  21.       if ( trickcount < errorline ) 
  22.       trickcount = errorline ; 
  23.     } 
  24.     if ( ( p < himemmin ) || ( p > memend ) ) 
  25.     {
  26.       printesc ( 307 ) ; 
  27.       return ; 
  28.     } 
  29.     if ( mem [ p ] .hh .v.LH >= 4095 ) 
  30.     printcs ( mem [ p ] .hh .v.LH - 4095 ) ; 
  31.     else {
  32.     
  33.       m = mem [ p ] .hh .v.LH / 256 ; 
  34.       c = mem [ p ] .hh .v.LH % 256 ; 
  35.       if ( mem [ p ] .hh .v.LH < 0 ) 
  36.       printesc ( 551 ) ; 
  37.       else switch ( m ) 
  38.       {case 1 : 
  39.       case 2 : 
  40.       case 3 : 
  41.       case 4 : 
  42.       case 7 : 
  43.       case 8 : 
  44.       case 10 : 
  45.       case 11 : 
  46.       case 12 : 
  47.     print ( c ) ; 
  48.     break ; 
  49.       case 6 : 
  50.     {
  51.       print ( c ) ; 
  52.       print ( c ) ; 
  53.     } 
  54.     break ; 
  55.       case 5 : 
  56.     {
  57.       print ( matchchr ) ; 
  58.       if ( c <= 9 ) 
  59.       printchar ( c + 48 ) ; 
  60.       else {
  61.           
  62.         printchar ( 33 ) ; 
  63.         return ; 
  64.       } 
  65.     } 
  66.     break ; 
  67.       case 13 : 
  68.     {
  69.       matchchr = c ; 
  70.       print ( c ) ; 
  71.       incr ( n ) ; 
  72.       printchar ( n ) ; 
  73.       if ( n > 57 ) 
  74.       return ; 
  75.     } 
  76.     break ; 
  77.       case 14 : 
  78.     print ( 552 ) ; 
  79.     break ; 
  80.     default: 
  81.     printesc ( 551 ) ; 
  82.     break ; 
  83.       } 
  84.     } 
  85.     p = mem [ p ] .hh .v.RH ; 
  86.   } 
  87.   if ( p != 0 ) 
  88.   printesc ( 550 ) ; 
  89. void runaway ( ) 
  90. {runaway_regmem 
  91.   halfword p  ; 
  92.   if ( scannerstatus > 1 ) 
  93.   {
  94.     printnl ( 565 ) ; 
  95.     switch ( scannerstatus ) 
  96.     {case 2 : 
  97.       {
  98.     print ( 566 ) ; 
  99.     p = defref ; 
  100.       } 
  101.       break ; 
  102.     case 3 : 
  103.       {
  104.     print ( 567 ) ; 
  105.     p = memtop - 3 ; 
  106.       } 
  107.       break ; 
  108.     case 4 : 
  109.       {
  110.     print ( 568 ) ; 
  111.     p = memtop - 4 ; 
  112.       } 
  113.       break ; 
  114.     case 5 : 
  115.       {
  116.     print ( 569 ) ; 
  117.     p = defref ; 
  118.       } 
  119.       break ; 
  120.     } 
  121.     printchar ( 63 ) ; 
  122.     println () ; 
  123.     showtokenlist ( mem [ p ] .hh .v.RH , 0 , errorline - 10 ) ; 
  124.   } 
  125. halfword getavail ( ) 
  126. {register halfword Result; getavail_regmem 
  127.   halfword p  ; 
  128.   p = avail ; 
  129.   if ( p != 0 ) 
  130.   avail = mem [ avail ] .hh .v.RH ; 
  131.   else if ( memend < memmax ) 
  132.   {
  133.     incr ( memend ) ; 
  134.     p = memend ; 
  135.   } 
  136.   else {
  137.       
  138.     decr ( himemmin ) ; 
  139.     p = himemmin ; 
  140.     if ( himemmin <= lomemmax ) 
  141.     {
  142.       runaway () ; 
  143.       overflow ( 298 , memmax + 1 - memmin ) ; 
  144.     } 
  145.   } 
  146.   mem [ p ] .hh .v.RH = 0 ; 
  147.     ;
  148. #ifdef STAT
  149.   incr ( dynused ) ; 
  150. #endif /* STAT */
  151.   Result = p ; 
  152.   return(Result) ; 
  153. void zflushlist ( p ) 
  154. halfword p ; 
  155. {flushlist_regmem 
  156.   halfword q, r  ; 
  157.   if ( p != 0 ) 
  158.   {
  159.     r = p ; 
  160.     do {
  161.     q = r ; 
  162.       r = mem [ r ] .hh .v.RH ; 
  163.     ;
  164. #ifdef STAT
  165.       decr ( dynused ) ; 
  166. #endif /* STAT */
  167.     } while ( ! ( r == 0 ) ) ; 
  168.     mem [ q ] .hh .v.RH = avail ; 
  169.     avail = p ; 
  170.   } 
  171. halfword zgetnode ( s ) 
  172. integer s ; 
  173. {/* 40 10 20 */ register halfword Result; getnode_regmem 
  174.   halfword p  ; 
  175.   halfword q  ; 
  176.   integer r  ; 
  177.   integer t  ; 
  178.   lab20: p = rover ; 
  179.   do {
  180.       q = p + mem [ p ] .hh .v.LH ; 
  181.     while ( ( mem [ q ] .hh .v.RH == 65535L ) ) {
  182.     
  183.       t = mem [ q + 1 ] .hh .v.RH ; 
  184.       if ( q == rover ) 
  185.       rover = t ; 
  186.       mem [ t + 1 ] .hh .v.LH = mem [ q + 1 ] .hh .v.LH ; 
  187.       mem [ mem [ q + 1 ] .hh .v.LH + 1 ] .hh .v.RH = t ; 
  188.       q = q + mem [ q ] .hh .v.LH ; 
  189.     } 
  190.     r = q - s ; 
  191.     if ( r > toint ( p + 1 ) ) 
  192.     {
  193.       mem [ p ] .hh .v.LH = r - p ; 
  194.       rover = p ; 
  195.       goto lab40 ; 
  196.     } 
  197.     if ( r == p ) 
  198.     if ( mem [ p + 1 ] .hh .v.RH != p ) 
  199.     {
  200.       rover = mem [ p + 1 ] .hh .v.RH ; 
  201.       t = mem [ p + 1 ] .hh .v.LH ; 
  202.       mem [ rover + 1 ] .hh .v.LH = t ; 
  203.       mem [ t + 1 ] .hh .v.RH = rover ; 
  204.       goto lab40 ; 
  205.     } 
  206.     mem [ p ] .hh .v.LH = q - p ; 
  207.     p = mem [ p + 1 ] .hh .v.RH ; 
  208.   } while ( ! ( p == rover ) ) ; 
  209.   if ( s == 1073741824L ) 
  210.   {
  211.     Result = 65535L ; 
  212.     return(Result) ; 
  213.   } 
  214.   if ( lomemmax + 2 < himemmin ) 
  215.   if ( lomemmax + 2 <= 65535L ) 
  216.   {
  217.     if ( himemmin - lomemmax >= 1998 ) 
  218.     t = lomemmax + 1000 ; 
  219.     else t = lomemmax + 1 + ( himemmin - lomemmax ) / 2 ; 
  220.     p = mem [ rover + 1 ] .hh .v.LH ; 
  221.     q = lomemmax ; 
  222.     mem [ p + 1 ] .hh .v.RH = q ; 
  223.     mem [ rover + 1 ] .hh .v.LH = q ; 
  224.     if ( t > 65535L ) 
  225.     t = 65535L ; 
  226.     mem [ q + 1 ] .hh .v.RH = rover ; 
  227.     mem [ q + 1 ] .hh .v.LH = p ; 
  228.     mem [ q ] .hh .v.RH = 65535L ; 
  229.     mem [ q ] .hh .v.LH = t - lomemmax ; 
  230.     lomemmax = t ; 
  231.     mem [ lomemmax ] .hh .v.RH = 0 ; 
  232.     mem [ lomemmax ] .hh .v.LH = 0 ; 
  233.     rover = q ; 
  234.     goto lab20 ; 
  235.   } 
  236.   overflow ( 298 , memmax + 1 - memmin ) ; 
  237.   lab40: mem [ r ] .hh .v.RH = 0 ; 
  238.     ;
  239. #ifdef STAT
  240.   varused = varused + s ; 
  241. #endif /* STAT */
  242.   Result = r ; 
  243.   return(Result) ; 
  244. void zfreenode ( p , s ) 
  245. halfword p ; 
  246. halfword s ; 
  247. {freenode_regmem 
  248.   halfword q  ; 
  249.   mem [ p ] .hh .v.LH = s ; 
  250.   mem [ p ] .hh .v.RH = 65535L ; 
  251.   q = mem [ rover + 1 ] .hh .v.LH ; 
  252.   mem [ p + 1 ] .hh .v.LH = q ; 
  253.   mem [ p + 1 ] .hh .v.RH = rover ; 
  254.   mem [ rover + 1 ] .hh .v.LH = p ; 
  255.   mem [ q + 1 ] .hh .v.RH = p ; 
  256.     ;
  257. #ifdef STAT
  258.   varused = varused - s ; 
  259. #endif /* STAT */
  260. halfword newnullbox ( ) 
  261. {register halfword Result; newnullbox_regmem 
  262.   halfword p  ; 
  263.   p = getnode ( 7 ) ; 
  264.   mem [ p ] .hh.b0 = 0 ; 
  265.   mem [ p ] .hh.b1 = 0 ; 
  266.   mem [ p + 1 ] .cint = 0 ; 
  267.   mem [ p + 2 ] .cint = 0 ; 
  268.   mem [ p + 3 ] .cint = 0 ; 
  269.   mem [ p + 4 ] .cint = 0 ; 
  270.   mem [ p + 5 ] .hh .v.RH = 0 ; 
  271.   mem [ p + 5 ] .hh.b0 = 0 ; 
  272.   mem [ p + 5 ] .hh.b1 = 0 ; 
  273.   mem [ p + 6 ] .gr = 0.0 ; 
  274.   Result = p ; 
  275.   return(Result) ; 
  276. halfword newrule ( ) 
  277. {register halfword Result; newrule_regmem 
  278.   halfword p  ; 
  279.   p = getnode ( 4 ) ; 
  280.   mem [ p ] .hh.b0 = 2 ; 
  281.   mem [ p ] .hh.b1 = 0 ; 
  282.   mem [ p + 1 ] .cint = -1073741824L ; 
  283.   mem [ p + 2 ] .cint = -1073741824L ; 
  284.   mem [ p + 3 ] .cint = -1073741824L ; 
  285.   Result = p ; 
  286.   return(Result) ; 
  287. halfword znewligature ( f , c , q ) 
  288. quarterword f ; 
  289. quarterword c ; 
  290. halfword q ; 
  291. {register halfword Result; newligature_regmem 
  292.   halfword p  ; 
  293.   p = getnode ( 2 ) ; 
  294.   mem [ p ] .hh.b0 = 6 ; 
  295.   mem [ p + 1 ] .hh.b0 = f ; 
  296.   mem [ p + 1 ] .hh.b1 = c ; 
  297.   mem [ p + 1 ] .hh .v.RH = q ; 
  298.   mem [ p ] .hh.b1 = 0 ; 
  299.   Result = p ; 
  300.   return(Result) ; 
  301. halfword znewligitem ( c ) 
  302. quarterword c ; 
  303. {register halfword Result; newligitem_regmem 
  304.   halfword p  ; 
  305.   p = getnode ( 2 ) ; 
  306.   mem [ p ] .hh.b1 = c ; 
  307.   mem [ p + 1 ] .hh .v.RH = 0 ; 
  308.   Result = p ; 
  309.   return(Result) ; 
  310. halfword newdisc ( ) 
  311. {register halfword Result; newdisc_regmem 
  312.   halfword p  ; 
  313.   p = getnode ( 2 ) ; 
  314.   mem [ p ] .hh.b0 = 7 ; 
  315.   mem [ p ] .hh.b1 = 0 ; 
  316.   mem [ p + 1 ] .hh .v.LH = 0 ; 
  317.   mem [ p + 1 ] .hh .v.RH = 0 ; 
  318.   Result = p ; 
  319.   return(Result) ; 
  320. halfword znewmath ( w , s ) 
  321. scaled w ; 
  322. smallnumber s ; 
  323. {register halfword Result; newmath_regmem 
  324.   halfword p  ; 
  325.   p = getnode ( 2 ) ; 
  326.   mem [ p ] .hh.b0 = 9 ; 
  327.   mem [ p ] .hh.b1 = s ; 
  328.   mem [ p + 1 ] .cint = w ; 
  329.   Result = p ; 
  330.   return(Result) ; 
  331. halfword znewspec ( p ) 
  332. halfword p ; 
  333. {register halfword Result; newspec_regmem 
  334.   halfword q  ; 
  335.   q = getnode ( 4 ) ; 
  336.   mem [ q ] = mem [ p ] ; 
  337.   mem [ q ] .hh .v.RH = 0 ; 
  338.   mem [ q + 1 ] .cint = mem [ p + 1 ] .cint ; 
  339.   mem [ q + 2 ] .cint = mem [ p + 2 ] .cint ; 
  340.   mem [ q + 3 ] .cint = mem [ p + 3 ] .cint ; 
  341.   Result = q ; 
  342.   return(Result) ; 
  343. halfword znewparamglue ( n ) 
  344. smallnumber n ; 
  345. {register halfword Result; newparamglue_regmem 
  346.   halfword p  ; 
  347.   halfword q  ; 
  348.   p = getnode ( 2 ) ; 
  349.   mem [ p ] .hh.b0 = 10 ; 
  350.   mem [ p ] .hh.b1 = n + 1 ; 
  351.   mem [ p + 1 ] .hh .v.RH = 0 ; 
  352.   q = eqtb [ 3782 + n ] .hh .v.RH ; 
  353.   mem [ p + 1 ] .hh .v.LH = q ; 
  354.   incr ( mem [ q ] .hh .v.RH ) ; 
  355.   Result = p ; 
  356.   return(Result) ; 
  357. halfword znewglue ( q ) 
  358. halfword q ; 
  359. {register halfword Result; newglue_regmem 
  360.   halfword p  ; 
  361.   p = getnode ( 2 ) ; 
  362.   mem [ p ] .hh.b0 = 10 ; 
  363.   mem [ p ] .hh.b1 = 0 ; 
  364.   mem [ p + 1 ] .hh .v.RH = 0 ; 
  365.   mem [ p + 1 ] .hh .v.LH = q ; 
  366.   incr ( mem [ q ] .hh .v.RH ) ; 
  367.   Result = p ; 
  368.   return(Result) ; 
  369. halfword znewskipparam ( n ) 
  370. smallnumber n ; 
  371. {register halfword Result; newskipparam_regmem 
  372.   halfword p  ; 
  373.   tempptr = newspec ( eqtb [ 3782 + n ] .hh .v.RH ) ; 
  374.   p = newglue ( tempptr ) ; 
  375.   mem [ tempptr ] .hh .v.RH = 0 ; 
  376.   mem [ p ] .hh.b1 = n + 1 ; 
  377.   Result = p ; 
  378.   return(Result) ; 
  379. halfword znewkern ( w ) 
  380. scaled w ; 
  381. {register halfword Result; newkern_regmem 
  382.   halfword p  ; 
  383.   p = getnode ( 2 ) ; 
  384.   mem [ p ] .hh.b0 = 11 ; 
  385.   mem [ p ] .hh.b1 = 0 ; 
  386.   mem [ p + 1 ] .cint = w ; 
  387.   Result = p ; 
  388.   return(Result) ; 
  389. halfword znewpenalty ( m ) 
  390. integer m ; 
  391. {register halfword Result; newpenalty_regmem 
  392.   halfword p  ; 
  393.   p = getnode ( 2 ) ; 
  394.   mem [ p ] .hh.b0 = 12 ; 
  395.   mem [ p ] .hh.b1 = 0 ; 
  396.   mem [ p + 1 ] .cint = m ; 
  397.   Result = p ; 
  398.   return(Result) ; 
  399. #ifdef DEBUG
  400. void zcheckmem ( printlocs ) 
  401. boolean printlocs ; 
  402. {/* 31 32 */ checkmem_regmem 
  403.   halfword p, q  ; 
  404.   boolean clobbered  ; 
  405.   {register integer for_end; p = memmin ; for_end = lomemmax ; if ( p <= 
  406.   for_end) do 
  407.     freearr [ p ] = false ; 
  408.   while ( p++ < for_end ) ; } 
  409.   {register integer for_end; p = himemmin ; for_end = memend ; if ( p <= 
  410.   for_end) do 
  411.     freearr [ p ] = false ; 
  412.   while ( p++ < for_end ) ; } 
  413.   p = avail ; 
  414.   q = 0 ; 
  415.   clobbered = false ; 
  416.   while ( p != 0 ) {
  417.       
  418.     if ( ( p > memend ) || ( p < himemmin ) ) 
  419.     clobbered = true ; 
  420.     else if ( freearr [ p ] ) 
  421.     clobbered = true ; 
  422.     if ( clobbered ) 
  423.     {
  424.       printnl ( 299 ) ; 
  425.       printint ( q ) ; 
  426.       goto lab31 ; 
  427.     } 
  428.     freearr [ p ] = true ; 
  429.     q = p ; 
  430.     p = mem [ q ] .hh .v.RH ; 
  431.   } 
  432.   lab31: ; 
  433.   p = rover ; 
  434.   q = 0 ; 
  435.   clobbered = false ; 
  436.   do {
  437.       if ( ( p >= lomemmax ) || ( p < memmin ) ) 
  438.     clobbered = true ; 
  439.     else if ( ( mem [ p + 1 ] .hh .v.RH >= lomemmax ) || ( mem [ p + 1 ] .hh 
  440.     .v.RH < memmin ) ) 
  441.     clobbered = true ; 
  442.     else if ( ! ( ( mem [ p ] .hh .v.RH == 65535L ) ) || ( mem [ p ] .hh .v.LH 
  443.     < 2 ) || ( p + mem [ p ] .hh .v.LH > lomemmax ) || ( mem [ mem [ p + 1 ] 
  444.     .hh .v.RH + 1 ] .hh .v.LH != p ) ) 
  445.     clobbered = true ; 
  446.     if ( clobbered ) 
  447.     {
  448.       printnl ( 300 ) ; 
  449.       printint ( q ) ; 
  450.       goto lab32 ; 
  451.     } 
  452.     {register integer for_end; q = p ; for_end = p + mem [ p ] .hh .v.LH - 1 
  453.     ; if ( q <= for_end) do 
  454.       {
  455.     if ( freearr [ q ] ) 
  456.     {
  457.       printnl ( 301 ) ; 
  458.       printint ( q ) ; 
  459.       goto lab32 ; 
  460.     } 
  461.     freearr [ q ] = true ; 
  462.       } 
  463.     while ( q++ < for_end ) ; } 
  464.     q = p ; 
  465.     p = mem [ p + 1 ] .hh .v.RH ; 
  466.   } while ( ! ( p == rover ) ) ; 
  467.   lab32: ; 
  468.   p = memmin ; 
  469.   while ( p <= lomemmax ) {
  470.       
  471.     if ( ( mem [ p ] .hh .v.RH == 65535L ) ) 
  472.     {
  473.       printnl ( 302 ) ; 
  474.       printint ( p ) ; 
  475.     } 
  476.     while ( ( p <= lomemmax ) && ! freearr [ p ] ) incr ( p ) ; 
  477.     while ( ( p <= lomemmax ) && freearr [ p ] ) incr ( p ) ; 
  478.   } 
  479.   if ( printlocs ) 
  480.   {
  481.     printnl ( 303 ) ; 
  482.     {register integer for_end; p = memmin ; for_end = lomemmax ; if ( p <= 
  483.     for_end) do 
  484.       if ( ! freearr [ p ] && ( ( p > waslomax ) || wasfree [ p ] ) ) 
  485.       {
  486.     printchar ( 32 ) ; 
  487.     printint ( p ) ; 
  488.       } 
  489.     while ( p++ < for_end ) ; } 
  490.     {register integer for_end; p = himemmin ; for_end = memend ; if ( p <= 
  491.     for_end) do 
  492.       if ( ! freearr [ p ] && ( ( p < washimin ) || ( p > wasmemend ) || 
  493.       wasfree [ p ] ) ) 
  494.       {
  495.     printchar ( 32 ) ; 
  496.     printint ( p ) ; 
  497.       } 
  498.     while ( p++ < for_end ) ; } 
  499.   } 
  500.   {register integer for_end; p = memmin ; for_end = lomemmax ; if ( p <= 
  501.   for_end) do 
  502.     wasfree [ p ] = freearr [ p ] ; 
  503.   while ( p++ < for_end ) ; } 
  504.   {register integer for_end; p = himemmin ; for_end = memend ; if ( p <= 
  505.   for_end) do 
  506.     wasfree [ p ] = freearr [ p ] ; 
  507.   while ( p++ < for_end ) ; } 
  508.   wasmemend = memend ; 
  509.   waslomax = lomemmax ; 
  510.   washimin = himemmin ; 
  511. #endif /* DEBUG */
  512. #ifdef DEBUG
  513. void zsearchmem ( p ) 
  514. halfword p ; 
  515. {searchmem_regmem 
  516.   integer q  ; 
  517.   {register integer for_end; q = memmin ; for_end = lomemmax ; if ( q <= 
  518.   for_end) do 
  519.     {
  520.       if ( mem [ q ] .hh .v.RH == p ) 
  521.       {
  522.     printnl ( 304 ) ; 
  523.     printint ( q ) ; 
  524.     printchar ( 41 ) ; 
  525.       } 
  526.       if ( mem [ q ] .hh .v.LH == p ) 
  527.       {
  528.     printnl ( 305 ) ; 
  529.     printint ( q ) ; 
  530.     printchar ( 41 ) ; 
  531.       } 
  532.     } 
  533.   while ( q++ < for_end ) ; } 
  534.   {register integer for_end; q = himemmin ; for_end = memend ; if ( q <= 
  535.   for_end) do 
  536.     {
  537.       if ( mem [ q ] .hh .v.RH == p ) 
  538.       {
  539.     printnl ( 304 ) ; 
  540.     printint ( q ) ; 
  541.     printchar ( 41 ) ; 
  542.       } 
  543.       if ( mem [ q ] .hh .v.LH == p ) 
  544.       {
  545.     printnl ( 305 ) ; 
  546.     printint ( q ) ; 
  547.     printchar ( 41 ) ; 
  548.       } 
  549.     } 
  550.   while ( q++ < for_end ) ; } 
  551.   {register integer for_end; q = 1 ; for_end = 4833 ; if ( q <= for_end) do 
  552.     {
  553.       if ( eqtb [ q ] .hh .v.RH == p ) 
  554.       {
  555.     printnl ( 497 ) ; 
  556.     printint ( q ) ; 
  557.     printchar ( 41 ) ; 
  558.       } 
  559.     } 
  560.   while ( q++ < for_end ) ; } 
  561.   if ( saveptr > 0 ) 
  562.   {register integer for_end; q = 0 ; for_end = saveptr - 1 ; if ( q <= 
  563.   for_end) do 
  564.     {
  565.       if ( savestack [ q ] .hh .v.RH == p ) 
  566.       {
  567.     printnl ( 542 ) ; 
  568.     printint ( q ) ; 
  569.     printchar ( 41 ) ; 
  570.       } 
  571.     } 
  572.   while ( q++ < for_end ) ; } 
  573.   {register integer for_end; q = 0 ; for_end = 307 ; if ( q <= for_end) do 
  574.     {
  575.       if ( hyphlist [ q ] == p ) 
  576.       {
  577.     printnl ( 933 ) ; 
  578.     printint ( q ) ; 
  579.     printchar ( 41 ) ; 
  580.       } 
  581.     } 
  582.   while ( q++ < for_end ) ; } 
  583. #endif /* DEBUG */
  584. void zshortdisplay ( p ) 
  585. integer p ; 
  586. {shortdisplay_regmem 
  587.   integer n  ; 
  588.   while ( p > memmin ) {
  589.       
  590.     if ( ( p >= himemmin ) ) 
  591.     {
  592.       if ( p <= memend ) 
  593.       {
  594.     if ( mem [ p ] .hh.b0 != fontinshortdisplay ) 
  595.     {
  596.       if ( ( mem [ p ] .hh.b0 > fontmax ) ) 
  597.       printchar ( 42 ) ; 
  598.       else printesc ( hash [ 3524 + mem [ p ] .hh.b0 ] .v.RH ) ; 
  599.       printchar ( 32 ) ; 
  600.       fontinshortdisplay = mem [ p ] .hh.b0 ; 
  601.     } 
  602.     print ( mem [ p ] .hh.b1 ) ; 
  603.       } 
  604.     } 
  605.     else switch ( mem [ p ] .hh.b0 ) 
  606.     {case 0 : 
  607.     case 1 : 
  608.     case 3 : 
  609.     case 8 : 
  610.     case 4 : 
  611.     case 5 : 
  612.     case 13 : 
  613.       print ( 306 ) ; 
  614.       break ; 
  615.     case 2 : 
  616.       printchar ( 124 ) ; 
  617.       break ; 
  618.     case 10 : 
  619.       if ( mem [ p + 1 ] .hh .v.LH != 0 ) 
  620.       printchar ( 32 ) ; 
  621.       break ; 
  622.     case 9 : 
  623.       printchar ( 36 ) ; 
  624.       break ; 
  625.     case 6 : 
  626.       shortdisplay ( mem [ p + 1 ] .hh .v.RH ) ; 
  627.       break ; 
  628.     case 7 : 
  629.       {
  630.     shortdisplay ( mem [ p + 1 ] .hh .v.LH ) ; 
  631.     shortdisplay ( mem [ p + 1 ] .hh .v.RH ) ; 
  632.     n = mem [ p ] .hh.b1 ; 
  633.     while ( n > 0 ) {
  634.         
  635.       if ( mem [ p ] .hh .v.RH != 0 ) 
  636.       p = mem [ p ] .hh .v.RH ; 
  637.       decr ( n ) ; 
  638.     } 
  639.       } 
  640.       break ; 
  641.       default: 
  642.       ; 
  643.       break ; 
  644.     } 
  645.     p = mem [ p ] .hh .v.RH ; 
  646.   } 
  647. void zprintfontandchar ( p ) 
  648. integer p ; 
  649. {printfontandchar_regmem 
  650.   if ( p > memend ) 
  651.   printesc ( 307 ) ; 
  652.   else {
  653.       
  654.     if ( ( mem [ p ] .hh.b0 > fontmax ) ) 
  655.     printchar ( 42 ) ; 
  656.     else printesc ( hash [ 3524 + mem [ p ] .hh.b0 ] .v.RH ) ; 
  657.     printchar ( 32 ) ; 
  658.     print ( mem [ p ] .hh.b1 ) ; 
  659.   } 
  660. void zprintmark ( p ) 
  661. integer p ; 
  662. {printmark_regmem 
  663.   printchar ( 123 ) ; 
  664.   if ( ( p < himemmin ) || ( p > memend ) ) 
  665.   printesc ( 307 ) ; 
  666.   else showtokenlist ( mem [ p ] .hh .v.RH , 0 , maxprintline - 10 ) ; 
  667.   printchar ( 125 ) ; 
  668. void zprintruledimen ( d ) 
  669. scaled d ; 
  670. {printruledimen_regmem 
  671.   if ( ( d == -1073741824L ) ) 
  672.   printchar ( 42 ) ; 
  673.   else printscaled ( d ) ; 
  674. void zprintglue ( d , order , s ) 
  675. scaled d ; 
  676. integer order ; 
  677. strnumber s ; 
  678. {printglue_regmem 
  679.   printscaled ( d ) ; 
  680.   if ( ( order < 0 ) || ( order > 3 ) ) 
  681.   print ( 308 ) ; 
  682.   else if ( order > 0 ) 
  683.   {
  684.     print ( 309 ) ; 
  685.     while ( order > 1 ) {
  686.     
  687.       printchar ( 108 ) ; 
  688.       decr ( order ) ; 
  689.     } 
  690.   } 
  691.   else if ( s != 0 ) 
  692.   print ( s ) ; 
  693. void zprintspec ( p , s ) 
  694. integer p ; 
  695. strnumber s ; 
  696. {printspec_regmem 
  697.   if ( ( p < memmin ) || ( p >= lomemmax ) ) 
  698.   printchar ( 42 ) ; 
  699.   else {
  700.       
  701.     printscaled ( mem [ p + 1 ] .cint ) ; 
  702.     if ( s != 0 ) 
  703.     print ( s ) ; 
  704.     if ( mem [ p + 2 ] .cint != 0 ) 
  705.     {
  706.       print ( 310 ) ; 
  707.       printglue ( mem [ p + 2 ] .cint , mem [ p ] .hh.b0 , s ) ; 
  708.     } 
  709.     if ( mem [ p + 3 ] .cint != 0 ) 
  710.     {
  711.       print ( 311 ) ; 
  712.       printglue ( mem [ p + 3 ] .cint , mem [ p ] .hh.b1 , s ) ; 
  713.     } 
  714.   } 
  715. void zprintfamandchar ( p ) 
  716. halfword p ; 
  717. {printfamandchar_regmem 
  718.   printesc ( 460 ) ; 
  719.   printint ( mem [ p ] .hh.b0 ) ; 
  720.   printchar ( 32 ) ; 
  721.   print ( mem [ p ] .hh.b1 ) ; 
  722. void zprintdelimiter ( p ) 
  723. halfword p ; 
  724. {printdelimiter_regmem 
  725.   integer a  ; 
  726.   a = mem [ p ] .qqqq .b0 * 256 + mem [ p ] .qqqq .b1 ; 
  727.   a = a * 4096 + mem [ p ] .qqqq .b2 * 256 + mem [ p ] .qqqq .b3 ; 
  728.   if ( a < 0 ) 
  729.   printint ( a ) ; 
  730.   else printhex ( a ) ; 
  731. void zprintsubsidiarydata ( p , c ) 
  732. halfword p ; 
  733. ASCIIcode c ; 
  734. {printsubsidiarydata_regmem 
  735.   if ( ( poolptr - strstart [ strptr ] ) >= depththreshold ) 
  736.   {
  737.     if ( mem [ p ] .hh .v.RH != 0 ) 
  738.     print ( 312 ) ; 
  739.   } 
  740.   else {
  741.       
  742.     {
  743.       strpool [ poolptr ] = c ; 
  744.       incr ( poolptr ) ; 
  745.     } 
  746.     tempptr = p ; 
  747.     switch ( mem [ p ] .hh .v.RH ) 
  748.     {case 1 : 
  749.       {
  750.     println () ; 
  751.     printcurrentstring () ; 
  752.     printfamandchar ( p ) ; 
  753.       } 
  754.       break ; 
  755.     case 2 : 
  756.       showinfo () ; 
  757.       break ; 
  758.     case 3 : 
  759.       if ( mem [ p ] .hh .v.LH == 0 ) 
  760.       {
  761.     println () ; 
  762.     printcurrentstring () ; 
  763.     print ( 853 ) ; 
  764.       } 
  765.       else showinfo () ; 
  766.       break ; 
  767.       default: 
  768.       ; 
  769.       break ; 
  770.     } 
  771.     decr ( poolptr ) ; 
  772.   } 
  773. void zprintstyle ( c ) 
  774. integer c ; 
  775. {printstyle_regmem 
  776.   switch ( c / 2 ) 
  777.   {case 0 : 
  778.     printesc ( 854 ) ; 
  779.     break ; 
  780.   case 1 : 
  781.     printesc ( 855 ) ; 
  782.     break ; 
  783.   case 2 : 
  784.     printesc ( 856 ) ; 
  785.     break ; 
  786.   case 3 : 
  787.     printesc ( 857 ) ; 
  788.     break ; 
  789.     default: 
  790.     print ( 858 ) ; 
  791.     break ; 
  792.   } 
  793. void zprintskipparam ( n ) 
  794. integer n ; 
  795. {printskipparam_regmem 
  796.   switch ( n ) 
  797.   {case 0 : 
  798.     printesc ( 372 ) ; 
  799.     break ; 
  800.   case 1 : 
  801.     printesc ( 373 ) ; 
  802.     break ; 
  803.   case 2 : 
  804.     printesc ( 374 ) ; 
  805.     break ; 
  806.   case 3 : 
  807.     printesc ( 375 ) ; 
  808.     break ; 
  809.   case 4 : 
  810.     printesc ( 376 ) ; 
  811.     break ; 
  812.   case 5 : 
  813.     printesc ( 377 ) ; 
  814.     break ; 
  815.   case 6 : 
  816.     printesc ( 378 ) ; 
  817.     break ; 
  818.   case 7 : 
  819.     printesc ( 379 ) ; 
  820.     break ; 
  821.   case 8 : 
  822.     printesc ( 380 ) ; 
  823.     break ; 
  824.   case 9 : 
  825.     printesc ( 381 ) ; 
  826.     break ; 
  827.   case 10 : 
  828.     printesc ( 382 ) ; 
  829.     break ; 
  830.   case 11 : 
  831.     printesc ( 383 ) ; 
  832.     break ; 
  833.   case 12 : 
  834.     printesc ( 384 ) ; 
  835.     break ; 
  836.   case 13 : 
  837.     printesc ( 385 ) ; 
  838.     break ; 
  839.   case 14 : 
  840.     printesc ( 386 ) ; 
  841.     break ; 
  842.   case 15 : 
  843.     printesc ( 387 ) ; 
  844.     break ; 
  845.   case 16 : 
  846.     printesc ( 388 ) ; 
  847.     break ; 
  848.   case 17 : 
  849.     printesc ( 389 ) ; 
  850.     break ; 
  851.     default: 
  852.     print ( 390 ) ; 
  853.     break ; 
  854.   } 
  855. void zshownodelist ( p ) 
  856. integer p ; 
  857. {/* 10 */ shownodelist_regmem 
  858.   integer n  ; 
  859.   real g  ; 
  860.   if ( ( poolptr - strstart [ strptr ] ) > depththreshold ) 
  861.   {
  862.     if ( p > 0 ) 
  863.     print ( 312 ) ; 
  864.     return ; 
  865.   } 
  866.   n = 0 ; 
  867.   while ( p > memmin ) {
  868.       
  869.     println () ; 
  870.     printcurrentstring () ; 
  871.     if ( p > memend ) 
  872.     {
  873.       print ( 313 ) ; 
  874.       return ; 
  875.     } 
  876.     incr ( n ) ; 
  877.     if ( n > breadthmax ) 
  878.     {
  879.       print ( 314 ) ; 
  880.       return ; 
  881.     } 
  882.     if ( ( p >= himemmin ) ) 
  883.     printfontandchar ( p ) ; 
  884.     else switch ( mem [ p ] .hh.b0 ) 
  885.     {case 0 : 
  886.     case 1 : 
  887.     case 13 : 
  888.       {
  889.     if ( mem [ p ] .hh.b0 == 0 ) 
  890.     printesc ( 104 ) ; 
  891.     else if ( mem [ p ] .hh.b0 == 1 ) 
  892.     printesc ( 118 ) ; 
  893.     else printesc ( 316 ) ; 
  894.     print ( 317 ) ; 
  895.     printscaled ( mem [ p + 3 ] .cint ) ; 
  896.     printchar ( 43 ) ; 
  897.     printscaled ( mem [ p + 2 ] .cint ) ; 
  898.     print ( 318 ) ; 
  899.     printscaled ( mem [ p + 1 ] .cint ) ; 
  900.     if ( mem [ p ] .hh.b0 == 13 ) 
  901.     {
  902.       if ( mem [ p ] .hh.b1 != 0 ) 
  903.       {
  904.         print ( 284 ) ; 
  905.         printint ( mem [ p ] .hh.b1 + 1 ) ; 
  906.         print ( 320 ) ; 
  907.       } 
  908.       if ( mem [ p + 6 ] .cint != 0 ) 
  909.       {
  910.         print ( 321 ) ; 
  911.         printglue ( mem [ p + 6 ] .cint , mem [ p + 5 ] .hh.b1 , 0 ) ; 
  912.       } 
  913.       if ( mem [ p + 4 ] .cint != 0 ) 
  914.       {
  915.         print ( 322 ) ; 
  916.         printglue ( mem [ p + 4 ] .cint , mem [ p + 5 ] .hh.b0 , 0 ) ; 
  917.       } 
  918.     } 
  919.     else {
  920.         
  921.       g = mem [ p + 6 ] .gr ; 
  922.       if ( ( g != 0.0 ) && ( mem [ p + 5 ] .hh.b0 != 0 ) ) 
  923.       {
  924.         print ( 323 ) ; 
  925.         if ( mem [ p + 5 ] .hh.b0 == 2 ) 
  926.         print ( 324 ) ; 
  927.         if ( fabs ( g ) > 20000.0 ) 
  928.         {
  929.           if ( g > 0.0 ) 
  930.           printchar ( 62 ) ; 
  931.           else print ( 325 ) ; 
  932.           printglue ( 20000 * 65536L , mem [ p + 5 ] .hh.b1 , 0 ) ; 
  933.         } 
  934.         else printglue ( round ( 65536L * g ) , mem [ p + 5 ] .hh.b1 , 0 ) 
  935.         ; 
  936.       } 
  937.       if ( mem [ p + 4 ] .cint != 0 ) 
  938.       {
  939.         print ( 319 ) ; 
  940.         printscaled ( mem [ p + 4 ] .cint ) ; 
  941.       } 
  942.     } 
  943.     {
  944.       {
  945.         strpool [ poolptr ] = 46 ; 
  946.         incr ( poolptr ) ; 
  947.       } 
  948.       shownodelist ( mem [ p + 5 ] .hh .v.RH ) ; 
  949.       decr ( poolptr ) ; 
  950.     } 
  951.       } 
  952.       break ; 
  953.     case 2 : 
  954.       {
  955.     printesc ( 326 ) ; 
  956.     printruledimen ( mem [ p + 3 ] .cint ) ; 
  957.     printchar ( 43 ) ; 
  958.     printruledimen ( mem [ p + 2 ] .cint ) ; 
  959.     print ( 318 ) ; 
  960.     printruledimen ( mem [ p + 1 ] .cint ) ; 
  961.       } 
  962.       break ; 
  963.     case 3 : 
  964.       {
  965.     printesc ( 327 ) ; 
  966.     printint ( mem [ p ] .hh.b1 ) ; 
  967.     print ( 328 ) ; 
  968.     printscaled ( mem [ p + 3 ] .cint ) ; 
  969.     print ( 329 ) ; 
  970.     printspec ( mem [ p + 4 ] .hh .v.RH , 0 ) ; 
  971.     printchar ( 44 ) ; 
  972.     printscaled ( mem [ p + 2 ] .cint ) ; 
  973.     print ( 330 ) ; 
  974.     printint ( mem [ p + 1 ] .cint ) ; 
  975.     {
  976.       {
  977.         strpool [ poolptr ] = 46 ; 
  978.         incr ( poolptr ) ; 
  979.       } 
  980.       shownodelist ( mem [ p + 4 ] .hh .v.LH ) ; 
  981.       decr ( poolptr ) ; 
  982.     } 
  983.       } 
  984.       break ; 
  985.     case 8 : 
  986.       switch ( mem [ p ] .hh.b1 ) 
  987.       {case 0 : 
  988.     {
  989.       printwritewhatsit ( 1276 , p ) ; 
  990.       printchar ( 61 ) ; 
  991.       printfilename ( mem [ p + 1 ] .hh .v.RH , mem [ p + 2 ] .hh .v.LH , 
  992.       mem [ p + 2 ] .hh .v.RH ) ; 
  993.     } 
  994.     break ; 
  995.       case 1 : 
  996.     {
  997.       printwritewhatsit ( 590 , p ) ; 
  998.       printmark ( mem [ p + 1 ] .hh .v.RH ) ; 
  999.     } 
  1000.     break ; 
  1001.       case 2 : 
  1002.     printwritewhatsit ( 1277 , p ) ; 
  1003.     break ; 
  1004.       case 3 : 
  1005.     {
  1006.       printesc ( 1278 ) ; 
  1007.       printmark ( mem [ p + 1 ] .hh .v.RH ) ; 
  1008.     } 
  1009.     break ; 
  1010.       case 4 : 
  1011.     {
  1012.       printesc ( 1280 ) ; 
  1013.       printint ( mem [ p + 1 ] .hh .v.RH ) ; 
  1014.       print ( 362 ) ; 
  1015.       printint ( mem [ p + 1 ] .hh.b0 ) ; 
  1016.       printchar ( 44 ) ; 
  1017.       printint ( mem [ p + 1 ] .hh.b1 ) ; 
  1018.       printchar ( 41 ) ; 
  1019.     } 
  1020.     break ; 
  1021.     default: 
  1022.     print ( 1283 ) ; 
  1023.     break ; 
  1024.       } 
  1025.       break ; 
  1026.     case 10 : 
  1027.       if ( mem [ p ] .hh.b1 >= 100 ) 
  1028.       {
  1029.     printesc ( 335 ) ; 
  1030.     if ( mem [ p ] .hh.b1 == 101 ) 
  1031.     printchar ( 99 ) ; 
  1032.     else if ( mem [ p ] .hh.b1 == 102 ) 
  1033.     printchar ( 120 ) ; 
  1034.     print ( 336 ) ; 
  1035.     printspec ( mem [ p + 1 ] .hh .v.LH , 0 ) ; 
  1036.     {
  1037.       {
  1038.         strpool [ poolptr ] = 46 ; 
  1039.         incr ( poolptr ) ; 
  1040.       } 
  1041.       shownodelist ( mem [ p + 1 ] .hh .v.RH ) ; 
  1042.       decr ( poolptr ) ; 
  1043.     } 
  1044.       } 
  1045.       else {
  1046.       
  1047.     printesc ( 331 ) ; 
  1048.     if ( mem [ p ] .hh.b1 != 0 ) 
  1049.     {
  1050.       printchar ( 40 ) ; 
  1051.       if ( mem [ p ] .hh.b1 < 98 ) 
  1052.       printskipparam ( mem [ p ] .hh.b1 - 1 ) ; 
  1053.       else if ( mem [ p ] .hh.b1 == 98 ) 
  1054.       printesc ( 332 ) ; 
  1055.       else printesc ( 333 ) ; 
  1056.       printchar ( 41 ) ; 
  1057.     } 
  1058.     if ( mem [ p ] .hh.b1 != 98 ) 
  1059.     {
  1060.       printchar ( 32 ) ; 
  1061.       if ( mem [ p ] .hh.b1 < 98 ) 
  1062.       printspec ( mem [ p + 1 ] .hh .v.LH , 0 ) ; 
  1063.       else printspec ( mem [ p + 1 ] .hh .v.LH , 334 ) ; 
  1064.     } 
  1065.       } 
  1066.       break ; 
  1067.     case 11 : 
  1068.       if ( mem [ p ] .hh.b1 != 99 ) 
  1069.       {
  1070.     printesc ( 337 ) ; 
  1071.     if ( mem [ p ] .hh.b1 != 0 ) 
  1072.     printchar ( 32 ) ; 
  1073.     printscaled ( mem [ p + 1 ] .cint ) ; 
  1074.     if ( mem [ p ] .hh.b1 == 2 ) 
  1075.     print ( 338 ) ; 
  1076.       } 
  1077.       else {
  1078.       
  1079.     printesc ( 339 ) ; 
  1080.     printscaled ( mem [ p + 1 ] .cint ) ; 
  1081.     print ( 334 ) ; 
  1082.       } 
  1083.       break ; 
  1084.     case 9 : 
  1085.       {
  1086.     printesc ( 340 ) ; 
  1087.     if ( mem [ p ] .hh.b1 == 0 ) 
  1088.     print ( 341 ) ; 
  1089.     else print ( 342 ) ; 
  1090.     if ( mem [ p + 1 ] .cint != 0 ) 
  1091.     {
  1092.       print ( 343 ) ; 
  1093.       printscaled ( mem [ p + 1 ] .cint ) ; 
  1094.     } 
  1095.       } 
  1096.       break ; 
  1097.     case 6 : 
  1098.       {
  1099.     printfontandchar ( p + 1 ) ; 
  1100.     print ( 344 ) ; 
  1101.     if ( mem [ p ] .hh.b1 > 1 ) 
  1102.     printchar ( 124 ) ; 
  1103.     fontinshortdisplay = mem [ p + 1 ] .hh.b0 ; 
  1104.     shortdisplay ( mem [ p + 1 ] .hh .v.RH ) ; 
  1105.     if ( odd ( mem [ p ] .hh.b1 ) ) 
  1106.     printchar ( 124 ) ; 
  1107.     printchar ( 41 ) ; 
  1108.       } 
  1109.       break ; 
  1110.     case 12 : 
  1111.       {
  1112.     printesc ( 345 ) ; 
  1113.     printint ( mem [ p + 1 ] .cint ) ; 
  1114.       } 
  1115.       break ; 
  1116.     case 7 : 
  1117.       {
  1118.     printesc ( 346 ) ; 
  1119.     if ( mem [ p ] .hh.b1 > 0 ) 
  1120.     {
  1121.       print ( 347 ) ; 
  1122.       printint ( mem [ p ] .hh.b1 ) ; 
  1123.     } 
  1124.     {
  1125.       {
  1126.         strpool [ poolptr ] = 46 ; 
  1127.         incr ( poolptr ) ; 
  1128.       } 
  1129.       shownodelist ( mem [ p + 1 ] .hh .v.LH ) ; 
  1130.       decr ( poolptr ) ; 
  1131.     } 
  1132.     {
  1133.       strpool [ poolptr ] = 124 ; 
  1134.       incr ( poolptr ) ; 
  1135.     } 
  1136.     shownodelist ( mem [ p + 1 ] .hh .v.RH ) ; 
  1137.     decr ( poolptr ) ; 
  1138.       } 
  1139.       break ; 
  1140.     case 4 : 
  1141.       {
  1142.     printesc ( 348 ) ; 
  1143.     printmark ( mem [ p + 1 ] .cint ) ; 
  1144.       } 
  1145.       break ; 
  1146.     case 5 : 
  1147.       {
  1148.     printesc ( 349 ) ; 
  1149.     {
  1150.       {
  1151.         strpool [ poolptr ] = 46 ; 
  1152.         incr ( poolptr ) ; 
  1153.       } 
  1154.       shownodelist ( mem [ p + 1 ] .cint ) ; 
  1155.       decr ( poolptr ) ; 
  1156.     } 
  1157.       } 
  1158.       break ; 
  1159.     case 14 : 
  1160.       printstyle ( mem [ p ] .hh.b1 ) ; 
  1161.       break ; 
  1162.     case 15 : 
  1163.       {
  1164.     printesc ( 521 ) ; 
  1165.     {
  1166.       strpool [ poolptr ] = 68 ; 
  1167.       incr ( poolptr ) ; 
  1168.     } 
  1169.     shownodelist ( mem [ p + 1 ] .hh .v.LH ) ; 
  1170.     decr ( poolptr ) ; 
  1171.     {
  1172.       strpool [ poolptr ] = 84 ; 
  1173.       incr ( poolptr ) ; 
  1174.     } 
  1175.     shownodelist ( mem [ p + 1 ] .hh .v.RH ) ; 
  1176.     decr ( poolptr ) ; 
  1177.     {
  1178.       strpool [ poolptr ] = 83 ; 
  1179.       incr ( poolptr ) ; 
  1180.     } 
  1181.     shownodelist ( mem [ p + 2 ] .hh .v.LH ) ; 
  1182.     decr ( poolptr ) ; 
  1183.     {
  1184.       strpool [ poolptr ] = 115 ; 
  1185.       incr ( poolptr ) ; 
  1186.     } 
  1187.     shownodelist ( mem [ p + 2 ] .hh .v.RH ) ; 
  1188.     decr ( poolptr ) ; 
  1189.       } 
  1190.       break ; 
  1191.     case 16 : 
  1192.     case 17 : 
  1193.     case 18 : 
  1194.     case 19 : 
  1195.     case 20 : 
  1196.     case 21 : 
  1197.     case 22 : 
  1198.     case 23 : 
  1199.     case 24 : 
  1200.     case 27 : 
  1201.     case 26 : 
  1202.     case 29 : 
  1203.     case 28 : 
  1204.     case 30 : 
  1205.     case 31 : 
  1206.       {
  1207.     switch ( mem [ p ] .hh.b0 ) 
  1208.     {case 16 : 
  1209.       printesc ( 859 ) ; 
  1210.       break ; 
  1211.     case 17 : 
  1212.       printesc ( 860 ) ; 
  1213.       break ; 
  1214.     case 18 : 
  1215.       printesc ( 861 ) ; 
  1216.       break ; 
  1217.     case 19 : 
  1218.       printesc ( 862 ) ; 
  1219.       break ; 
  1220.     case 20 : 
  1221.       printesc ( 863 ) ; 
  1222.       break ; 
  1223.     case 21 : 
  1224.       printesc ( 864 ) ; 
  1225.       break ; 
  1226.     case 22 : 
  1227.       printesc ( 865 ) ; 
  1228.       break ; 
  1229.     case 23 : 
  1230.       printesc ( 866 ) ; 
  1231.       break ; 
  1232.     case 27 : 
  1233.       printesc ( 867 ) ; 
  1234.       break ; 
  1235.     case 26 : 
  1236.       printesc ( 868 ) ; 
  1237.       break ; 
  1238.     case 29 : 
  1239.       printesc ( 535 ) ; 
  1240.       break ; 
  1241.     case 24 : 
  1242.       {
  1243.         printesc ( 529 ) ; 
  1244.         printdelimiter ( p + 4 ) ; 
  1245.       } 
  1246.       break ; 
  1247.     case 28 : 
  1248.       {
  1249.         printesc ( 504 ) ; 
  1250.         printfamandchar ( p + 4 ) ; 
  1251.       } 
  1252.       break ; 
  1253.     case 30 : 
  1254.       {
  1255.         printesc ( 869 ) ; 
  1256.         printdelimiter ( p + 1 ) ; 
  1257.       } 
  1258.       break ; 
  1259.     case 31 : 
  1260.       {
  1261.         printesc ( 870 ) ; 
  1262.         printdelimiter ( p + 1 ) ; 
  1263.       } 
  1264.       break ; 
  1265.     } 
  1266.     if ( mem [ p ] .hh.b1 != 0 ) 
  1267.     if ( mem [ p ] .hh.b1 == 1 ) 
  1268.     printesc ( 871 ) ; 
  1269.     else printesc ( 872 ) ; 
  1270.     if ( mem [ p ] .hh.b0 < 30 ) 
  1271.     printsubsidiarydata ( p + 1 , 46 ) ; 
  1272.     printsubsidiarydata ( p + 2 , 94 ) ; 
  1273.     printsubsidiarydata ( p + 3 , 95 ) ; 
  1274.       } 
  1275.       break ; 
  1276.     case 25 : 
  1277.       {
  1278.     printesc ( 873 ) ; 
  1279.     if ( mem [ p + 1 ] .cint == 1073741824L ) 
  1280.     print ( 874 ) ; 
  1281.     else printscaled ( mem [ p + 1 ] .cint ) ; 
  1282.     if ( ( mem [ p + 4 ] .qqqq .b0 != 0 ) || ( mem [ p + 4 ] .qqqq .b1 != 
  1283.     0 ) || ( mem [ p + 4 ] .qqqq .b2 != 0 ) || ( mem [ p + 4 ] .qqqq .b3 
  1284.     != 0 ) ) 
  1285.     {
  1286.       print ( 875 ) ; 
  1287.       printdelimiter ( p + 4 ) ; 
  1288.     } 
  1289.     if ( ( mem [ p + 5 ] .qqqq .b0 != 0 ) || ( mem [ p + 5 ] .qqqq .b1 != 
  1290.     0 ) || ( mem [ p + 5 ] .qqqq .b2 != 0 ) || ( mem [ p + 5 ] .qqqq .b3 
  1291.     != 0 ) ) 
  1292.     {
  1293.       print ( 876 ) ; 
  1294.       printdelimiter ( p + 5 ) ; 
  1295.     } 
  1296.     printsubsidiarydata ( p + 2 , 92 ) ; 
  1297.     printsubsidiarydata ( p + 3 , 47 ) ; 
  1298.       } 
  1299.       break ; 
  1300.       default: 
  1301.       print ( 315 ) ; 
  1302.       break ; 
  1303.     } 
  1304.     p = mem [ p ] .hh .v.RH ; 
  1305.   } 
  1306.