home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari FTP
/
ATARI_FTP_0693.zip
/
ATARI_FTP_0693
/
Tex
/
texsrc.arc
/
TEX5.C
< prev
next >
Wrap
C/C++ Source or Header
|
1988-09-14
|
64KB
|
2,090 lines
overlay "tex5"
#define EXTERN extern
#include "texd.h"
zappendtovlis ( b )
halfword b ;
{r_appendtovlis
scaled d ;
halfword p ;
if ( curlist .auxfield > - 65536000 )
{
d = mem [(long) eqtb [ 3527 ] .hh .v.RH + 1 ] .cint - curlist .auxfield - mem [(long)
b + 3 ] .cint ;
if ( d < eqtb [ 5703 ] .cint )
p = newparamglue ( 0 ) ;
else {
p = newskipparam ( 1 ) ;
mem [(long) tempptr + 1 ] .cint = d ;
}
mem [(long) curlist .tailfield ] .hh .v.RH = p ;
curlist .tailfield = p ;
}
mem [(long) curlist .tailfield ] .hh .v.RH = b ;
curlist .tailfield = b ;
curlist .auxfield = mem [(long) b + 2 ] .cint ;
}
halfword newnoad () { register halfword Result; r_newnoad
long p ;
p = getnode ( 4 ) ;
mem [ p ] .hh.b0 = 16 ;
mem [ p ] .hh.b1 = 0 ;
mem [ p + 1 ] .hh = emptyfield ;
mem [ p + 3 ] .hh = emptyfield ;
mem [ p + 2 ] .hh = emptyfield ;
Result = p ;
return(Result) ;
}
halfword znewstyle ( s )
smallnumber s ;
{register halfword Result; r_newstyle
long p ;
p = getnode ( 3 ) ;
mem [ p ] .hh.b0 = 14 ;
mem [ p ] .hh.b1 = s ;
mem [ p + 1 ] .cint = 0 ;
mem [ p + 2 ] .cint = 0 ;
Result = p ;
return(Result) ;
}
halfword newchoice () { register halfword Result; r_newchoice
long p ;
p = getnode ( 3 ) ;
mem [ p ] .hh.b0 = 15 ;
mem [ p ] .hh.b1 = 0 ;
mem [ p + 1 ] .hh .v.LH = 0 ;
mem [ p + 1 ] .hh .v.RH = 0 ;
mem [ p + 2 ] .hh .v.LH = 0 ;
mem [ p + 2 ] .hh .v.RH = 0 ;
Result = p ;
return(Result) ;
}
showinfo () { r_showinfo
shownodelist ( mem [(long) tempptr ] .hh .v.LH ) ;
}
halfword zfractionrule ( t )
scaled t ;
{register halfword Result; r_fractionrule
halfword p ;
p = newrule () ;
mem [(long) p + 3 ] .cint = t ;
mem [(long) p + 2 ] .cint = 0 ;
Result = p ;
return(Result) ;
}
halfword zoverbar ( b , k , t )
halfword b ;
scaled k , t ;
{register halfword Result; r_overbar
halfword p, q ;
p = newkern ( k ) ;
mem [(long) p ] .hh .v.RH = b ;
q = fractionrule ( t ) ;
mem [(long) q ] .hh .v.RH = p ;
p = newkern ( t ) ;
mem [(long) p ] .hh .v.RH = q ;
Result = vpackage ( p , 0 , 1 , 1073741823 ) ;
return(Result) ;
}
halfword zcharbox ( f , c )
internalfont f ;
quarterword c ;
{register halfword Result; r_charbox
fourquarters q ;
eightbits hd ;
halfword b, p ;
q = fontinfo [ charbase [ f ] + c ] .qqqq ;
hd = q .b1 ;
b = newnullbox () ;
mem [(long) b + 1 ] .cint = fontinfo [ widthbase [ f ] + q .b0 ] .cint + fontinfo
[ italicbase [ f ] + ( q .b2 ) / 4 ] .cint ;
mem [(long) b + 3 ] .cint = fontinfo [ heightbase [ f ] + ( hd ) / 16 ] .cint ;
mem [(long) b + 2 ] .cint = fontinfo [ depthbase [ f ] + ( hd ) % 16 ] .cint ;
p = getavail () ;
mem [(long) p ] .hh.b1 = c ;
mem [(long) p ] .hh.b0 = f ;
mem [(long) b + 5 ] .hh .v.RH = p ;
Result = b ;
return(Result) ;
}
zstackintobox ( b , f , c )
halfword b ;
internalfont f ;
quarterword c ;
{r_stackintobox
halfword p ;
p = charbox ( f , c ) ;
mem [(long) p ] .hh .v.RH = mem [(long) b + 5 ] .hh .v.RH ;
mem [(long) b + 5 ] .hh .v.RH = p ;
mem [(long) b + 3 ] .cint = mem [(long) p + 3 ] .cint ;
}
scaled zheightplusde ( f , c )
internalfont f ;
quarterword c ;
{register scaled Result; r_heightplusde
fourquarters q ;
eightbits hd ;
q = fontinfo [ charbase [ f ] + c ] .qqqq ;
hd = q .b1 ;
Result = fontinfo [ heightbase [ f ] + ( hd ) / 16 ] .cint + fontinfo [
depthbase [ f ] + ( hd ) % 16 ] .cint ;
return(Result) ;
}
halfword zvardelimiter ( d , s , v )
halfword d ;
smallnumber s ;
scaled v ;
{/* 40 22 */ register halfword Result; r_vardelimiter
halfword b ;
internalfont f, g ;
quarterword c, x, y ;
integer m, n ;
scaled u ;
scaled w ;
fourquarters q ;
eightbits hd ;
fourquarters r ;
smallnumber z ;
boolean largeattempt ;
f = 0 ;
w = 0 ;
largeattempt = false ;
z = mem [(long) d ] .qqqq .b0 ;
x = mem [(long) d ] .qqqq .b1 ;
while ( true ) {
if ( ( z != 0 ) || ( x != 0 ) )
{
z = z + s + 16 ;
do { z = z - 16 ;
g = eqtb [ 4579 + z ] .hh .v.RH ;
if ( g != 0 )
{
y = x ;
lab22: if ( ( y >= fontbc [ g ] ) && ( y <= fontec [ g ] ) )
{
q = fontinfo [ charbase [ g ] + y ] .qqqq ;
if ( ( q .b0 > 0 ) )
{
if ( ( ( q .b2 ) % 4 ) == 3 )
{
f = g ;
c = y ;
goto lab40 ;
}
hd = q .b1 ;
u = fontinfo [ heightbase [ g ] + ( hd ) / 16 ] .cint + fontinfo
[ depthbase [ g ] + ( hd ) % 16 ] .cint ;
if ( u > w )
{
f = g ;
c = y ;
w = u ;
if ( u >= v )
goto lab40 ;
}
if ( ( ( q .b2 ) % 4 ) == 2 )
{
y = q .b3 ;
goto lab22 ;
}
}
}
}
} while ( ! ( z < 16 ) ) ;
}
if ( largeattempt )
goto lab40 ;
largeattempt = true ;
z = mem [(long) d ] .qqqq .b2 ;
x = mem [(long) d ] .qqqq .b3 ;
}
lab40: if ( f != 0 )
if ( ( ( q .b2 ) % 4 ) == 3 )
{
b = newnullbox () ;
mem [(long) b ] .hh.b0 = 1 ;
r = fontinfo [ extenbase [ f ] + q .b3 ] .qqqq ;
c = r .b3 ;
u = heightplusde ( f , c ) ;
w = 0 ;
q = fontinfo [ charbase [ f ] + c ] .qqqq ;
mem [(long) b + 1 ] .cint = fontinfo [ widthbase [ f ] + q .b0 ] .cint +
fontinfo [ italicbase [ f ] + ( q .b2 ) / 4 ] .cint ;
c = r .b2 ;
if ( c != 0 )
w = w + heightplusde ( f , c ) ;
c = r .b1 ;
if ( c != 0 )
w = w + heightplusde ( f , c ) ;
c = r .b0 ;
if ( c != 0 )
w = w + heightplusde ( f , c ) ;
n = 0 ;
if ( u > 0 )
while ( w < v ) {
w = w + u ;
incr ( n ) ;
if ( r .b1 != 0 )
w = w + u ;
}
c = r .b2 ;
if ( c != 0 )
stackintobox ( b , f , c ) ;
c = r .b3 ;
for ( m = 1 ; m <= n ; m ++ )
stackintobox ( b , f , c ) ;
c = r .b1 ;
if ( c != 0 )
{
stackintobox ( b , f , c ) ;
c = r .b3 ;
for ( m = 1 ; m <= n ; m ++ )
stackintobox ( b , f , c ) ;
}
c = r .b0 ;
if ( c != 0 )
stackintobox ( b , f , c ) ;
mem [(long) b + 2 ] .cint = w - mem [(long) b + 3 ] .cint ;
}
else b = charbox ( f , c ) ;
else {
b = newnullbox () ;
mem [(long) b + 1 ] .cint = eqtb [ 5712 ] .cint ;
}
mem [(long) b + 4 ] .cint = half ( mem [(long) b + 3 ] .cint - mem [(long) b + 2 ] .cint ) -
fontinfo [ 22 + parambase [ eqtb [ 4581 + s ] .hh .v.RH ] ] .cint ;
Result = b ;
return(Result) ;
}
halfword zrebox ( b , w )
halfword b ;
scaled w ;
{register halfword Result; r_rebox
halfword p ;
internalfont f ;
scaled v ;
fourquarters qi;
if ( ( mem [(long) b + 1 ] .cint != w ) && ( mem [(long) b + 5 ] .hh .v.RH != 0 ) )
{
if ( mem [(long) b ] .hh.b0 == 1 )
b = hpack ( b , 0 , 1 ) ;
p = mem [(long) b + 5 ] .hh .v.RH ;
if ( ( ( p >= himemmin ) ) && ( mem [(long) p ] .hh .v.RH == 0 ) )
{
f = mem [(long) p ] .hh.b0 ;
/* v = fontinfo [ widthbase [ f ] + fontinfo [ charbase [ f ] + mem [(long) p ]
.hh.b1 ] .qqqq .b0 ] .cint ; */
qi = fontinfo [ charbase [ f ] + mem [(long) p ] .hh.b1 ] .qqqq;
v = fontinfo [ widthbase [ f ] +qi.b0 ] .cint ;
if ( v != mem [(long) b + 1 ] .cint )
mem [(long) p ] .hh .v.RH = newkern ( mem [(long) b + 1 ] .cint - v ) ;
}
freenode ( b , 7 ) ;
b = newglue ( 12 ) ;
mem [(long) b ] .hh .v.RH = p ;
while ( mem [(long) p ] .hh .v.RH != 0 ) p = mem [(long) p ] .hh .v.RH ;
mem [(long) p ] .hh .v.RH = newglue ( 12 ) ;
Result = hpack ( b , w , 0 ) ;
}
else {
mem [(long) b + 1 ] .cint = w ;
Result = b ;
}
return(Result) ;
}
halfword zmathglue ( g , m )
halfword g ;
scaled m ;
{register halfword Result; r_mathglue
halfword p ;
integer n ;
scaled f ;
n = xovern ( m , 65536 ) ;
f = remainder ;
p = getnode ( 4 ) ;
mem [(long) p + 1 ] .cint = nxplusy ( n , mem [(long) g + 1 ] .cint , xnoverd ( mem [(long) g
+ 1 ] .cint , f , 65536 ) ) ;
mem [(long) p ] .hh.b0 = mem [(long) g ] .hh.b0 ;
if ( mem [(long) p ] .hh.b0 == 0 )
mem [(long) p + 2 ] .cint = nxplusy ( n , mem [(long) g + 2 ] .cint , xnoverd ( mem [(long) g
+ 2 ] .cint , f , 65536 ) ) ;
else mem [(long) p + 2 ] .cint = mem [(long) g + 2 ] .cint ;
mem [(long) p ] .hh.b1 = mem [(long) g ] .hh.b1 ;
if ( mem [(long) p ] .hh.b1 == 0 )
mem [(long) p + 3 ] .cint = nxplusy ( n , mem [(long) g + 3 ] .cint , xnoverd ( mem [(long) g
+ 3 ] .cint , f , 65536 ) ) ;
else mem [(long) p + 3 ] .cint = mem [(long) g + 3 ] .cint ;
Result = p ;
return(Result) ;
}
zmathkern ( p , m )
halfword p ;
scaled m ;
{r_mathkern
integer n ;
scaled f ;
if ( mem [(long) p ] .hh.b1 == 99 )
{
n = xovern ( m , 65536 ) ;
f = remainder ;
mem [(long) p + 1 ] .cint = nxplusy ( n , mem [(long) p + 1 ] .cint , xnoverd ( mem [(long)
p + 1 ] .cint , f , 65536 ) ) ;
mem [(long) p ] .hh.b1 = 0 ;
}
}
flushmath () { r_flushmath
flushnodelis ( mem [(long) curlist .headfield ] .hh .v.RH ) ;
flushnodelis ( curlist .auxfield ) ;
mem [(long) curlist .headfield ] .hh .v.RH = 0 ;
curlist .tailfield = curlist .headfield ;
curlist .auxfield = 0 ;
}
halfword zcleanbox ( p , s )
halfword p ;
smallnumber s ;
{/* 40 */ register halfword Result; r_cleanbox
halfword q ;
smallnumber savestyle ;
halfword x ;
halfword r ;
switch ( mem [(long) p ] .hh .v.RH )
{case 1 :
{
curmlist = newnoad () ;
mem [(long) curmlist + 1 ] = mem [(long) p ] ;
}
break ;
case 2 :
{
q = mem [(long) p ] .hh .v.LH ;
goto lab40 ;
}
break ;
case 3 :
curmlist = mem [(long) p ] .hh .v.LH ;
break ;
default :
{
q = newnullbox () ;
goto lab40 ;
}
break ;
}
savestyle = curstyle ;
curstyle = s ;
mlistpenalti = false ;
mlisttohlist () ;
q = mem [(long) memtop - 3 ] .hh .v.RH ;
curstyle = savestyle ;
{
if ( curstyle < 4 )
cursize = 0 ;
else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint , 18 ) ;
}
lab40: if ( ( q >= himemmin ) || ( q == 0 ) )
x = hpack ( q , 0 , 1 ) ;
else if ( ( mem [(long) q ] .hh .v.RH == 0 ) && ( mem [(long) q ] .hh.b0 <= 1 ) && ( mem
[ q + 4 ] .cint == 0 ) )
x = q ;
else x = hpack ( q , 0 , 1 ) ;
q = mem [(long) x + 5 ] .hh .v.RH ;
if ( ( q >= himemmin ) )
{
r = mem [(long) q ] .hh .v.RH ;
if ( r != 0 )
if ( mem [(long) r ] .hh .v.RH == 0 )
if ( ! ( r >= himemmin ) )
if ( mem [(long) r ] .hh.b0 == 11 )
{
freenode ( r , 2 ) ;
mem [(long) q ] .hh .v.RH = 0 ;
}
}
Result = x ;
return(Result) ;
}
zfetch ( a )
halfword a ;
{r_fetch
curc = mem [(long) a ] .hh.b1 ;
curf = eqtb [ 4579 + mem [(long) a ] .hh.b0 + cursize ] .hh .v.RH ;
if ( curf == 0 )
{
{
if ( interaction == 3 )
wakeuptermin () ;
printnl ( 133 ) ;
print ( 206 ) ;
}
printsize ( cursize ) ;
printchar ( 32 ) ;
printint ( mem [(long) a ] .hh.b0 ) ;
print ( 737 ) ;
printASCII ( curc ) ;
printchar ( 41 ) ;
{
helpptr = 4 ;
helpline [ 3 ] = 738 ;
helpline [ 2 ] = 739 ;
helpline [ 1 ] = 740 ;
helpline [ 0 ] = 741 ;
}
error () ;
curi = nullcharacte ;
mem [(long) a ] .hh .v.RH = 0 ;
}
else {
if ( ( curc >= fontbc [ curf ] ) && ( curc <= fontec [ curf ] ) )
curi = fontinfo [ charbase [ curf ] + curc ] .qqqq ;
else curi = nullcharacte ;
if ( ! ( ( curi .b0 > 0 ) ) )
{
charwarning ( curf , curc ) ;
mem [(long) a ] .hh .v.RH = 0 ;
}
}
}
zmakeover ( q )
halfword q ;
{r_makeover
mem [(long) q + 1 ] .hh .v.LH = overbar ( cleanbox ( q + 1 , 2 * ( curstyle / 2 )
+ 1 ) , 3 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ]
.cint , fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ]
.cint ) ;
mem [(long) q + 1 ] .hh .v.RH = 2 ;
}
zmakeunder ( q )
halfword q ;
{r_makeunder
halfword p, x, y ;
scaled delta ;
x = cleanbox ( q + 1 , curstyle ) ;
p = newkern ( 3 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh
.v.RH ] ] .cint ) ;
mem [(long) x ] .hh .v.RH = p ;
mem [(long) p ] .hh .v.RH = fractionrule ( fontinfo [ 8 + parambase [ eqtb [ 4582
+ cursize ] .hh .v.RH ] ] .cint ) ;
y = vpackage ( x , 0 , 1 , 1073741823 ) ;
delta = mem [(long) y + 3 ] .cint + mem [(long) y + 2 ] .cint + fontinfo [ 8 + parambase
[ eqtb [ 4582 + cursize ] .hh .v.RH ] ] .cint ;
mem [(long) y + 3 ] .cint = mem [(long) x + 3 ] .cint ;
mem [(long) y + 2 ] .cint = delta - mem [(long) y + 3 ] .cint ;
mem [(long) q + 1 ] .hh .v.LH = y ;
mem [(long) q + 1 ] .hh .v.RH = 2 ;
}
zmakevcenter ( q )
halfword q ;
{r_makevcenter
halfword v ;
scaled delta ;
v = mem [(long) q + 1 ] .hh .v.LH ;
if ( mem [(long) v ] .hh.b0 != 1 )
confusion ( 397 ) ;
delta = mem [(long) v + 3 ] .cint + mem [(long) v + 2 ] .cint ;
mem [(long) v + 3 ] .cint = fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ]
.hh .v.RH ] ] .cint + half ( delta ) ;
mem [(long) v + 2 ] .cint = delta - mem [(long) v + 3 ] .cint ;
}
zmakeradical ( q )
halfword q ;
{r_makeradical
halfword x, y ;
scaled delta, clr ;
x = cleanbox ( q + 1 , 2 * ( curstyle / 2 ) + 1 ) ;
if ( curstyle < 2 )
clr = fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ] .cint
+ ( abs ( fontinfo [ 5 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
.cint ) / 4 ) ;
else {
clr = fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ]
.cint ;
clr = clr + ( abs ( clr ) / 4 ) ;
}
y = vardelimiter ( q + 4 , cursize , mem [(long) x + 3 ] .cint + mem [(long) x + 2 ]
.cint + clr + fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ]
] .cint ) ;
delta = mem [(long) y + 2 ] .cint - ( mem [(long) x + 3 ] .cint + mem [(long) x + 2 ] .cint +
clr ) ;
if ( delta > 0 )
clr = clr + half ( delta ) ;
mem [(long) y + 4 ] .cint = - ( mem [(long) x + 3 ] .cint + clr ) ;
mem [(long) y ] .hh .v.RH = overbar ( x , clr , mem [(long) y + 3 ] .cint ) ;
mem [(long) q + 1 ] .hh .v.LH = hpack ( y , 0 , 1 ) ;
mem [(long) q + 1 ] .hh .v.RH = 2 ;
}
zmakemathacce ( q )
halfword q ;
{/* 30 31 */ r_makemathacce
halfword p, x, y ;
integer a ;
quarterword c ;
internalfont f ;
fourquarters i ;
scaled s ;
scaled h ;
scaled delta ;
scaled w ;
fetch ( q + 4 ) ;
if ( ( curi .b0 > 0 ) )
{
i = curi ;
c = curc ;
f = curf ;
s = 0 ;
if ( mem [(long) q + 1 ] .hh .v.RH == 1 )
{
fetch ( q + 1 ) ;
if ( ( ( curi .b2 ) % 4 ) == 1 )
{
a = ligkernbase [ curf ] + curi .b3 ;
do { curi = fontinfo [ a ] .qqqq ;
if ( curi .b1 == skewchar [ curf ] )
{
if ( curi .b2 >= 128 )
s = fontinfo [ kernbase [ curf ] + curi .b3 ] .cint ;
goto lab31 ;
}
incr ( a ) ;
} while ( ! ( curi .b0 >= 128 ) ) ;
}
}
lab31: ;
x = cleanbox ( q + 1 , 2 * ( curstyle / 2 ) + 1 ) ;
w = mem [(long) x + 1 ] .cint ;
h = mem [(long) x + 3 ] .cint ;
while ( true ) {
if ( ( ( i .b2 ) % 4 ) != 2 )
goto lab30 ;
y = i .b3 ;
i = fontinfo [ charbase [ f ] + y ] .qqqq ;
if ( fontinfo [ widthbase [ f ] + i .b0 ] .cint > w )
goto lab30 ;
c = y ;
}
lab30: ;
if ( h < fontinfo [ 5 + parambase [ f ] ] .cint )
delta = h ;
else delta = fontinfo [ 5 + parambase [ f ] ] .cint ;
if ( ( mem [(long) q + 2 ] .hh .v.RH != 0 ) || ( mem [(long) q + 3 ] .hh .v.RH != 0 )
)
if ( mem [(long) q + 1 ] .hh .v.RH == 1 )
{
flushnodelis ( x ) ;
x = newnoad () ;
mem [(long) x + 1 ] = mem [(long) q + 1 ] ;
mem [(long) x + 2 ] = mem [(long) q + 2 ] ;
mem [(long) x + 3 ] = mem [(long) q + 3 ] ;
mem [(long) q + 2 ] .hh = emptyfield ;
mem [(long) q + 3 ] .hh = emptyfield ;
mem [(long) q + 1 ] .hh .v.RH = 3 ;
mem [(long) q + 1 ] .hh .v.LH = x ;
x = cleanbox ( q + 1 , curstyle ) ;
delta = delta + mem [(long) x + 3 ] .cint - h ;
h = mem [(long) x + 3 ] .cint ;
}
y = charbox ( f , c ) ;
mem [(long) y + 4 ] .cint = s + half ( w - mem [(long) y + 1 ] .cint ) ;
mem [(long) y + 1 ] .cint = 0 ;
p = newkern ( - delta ) ;
mem [(long) p ] .hh .v.RH = x ;
mem [(long) y ] .hh .v.RH = p ;
y = vpackage ( y , 0 , 1 , 1073741823 ) ;
mem [(long) y + 1 ] .cint = mem [(long) x + 1 ] .cint ;
if ( mem [(long) y + 3 ] .cint < h )
{
p = newkern ( h - mem [(long) y + 3 ] .cint ) ;
mem [(long) p ] .hh .v.RH = mem [(long) y + 5 ] .hh .v.RH ;
mem [(long) y + 5 ] .hh .v.RH = p ;
mem [(long) y + 3 ] .cint = h ;
}
mem [(long) q + 1 ] .hh .v.LH = y ;
mem [(long) q + 1 ] .hh .v.RH = 2 ;
}
}
zmakefraction ( q )
halfword q ;
{r_makefraction
halfword p, v, x, y, z ;
scaled delta, delta1, delta2, shiftup, shiftdown, clr ;
if ( mem [(long) q + 1 ] .cint == 1073741824 )
mem [(long) q + 1 ] .cint = fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh
.v.RH ] ] .cint ;
x = cleanbox ( q + 2 , curstyle + 2 - 2 * ( curstyle / 6 ) ) ;
z = cleanbox ( q + 3 , 2 * ( curstyle / 2 ) + 3 - 2 * ( curstyle / 6 ) ) ;
if ( mem [(long) x + 1 ] .cint < mem [(long) z + 1 ] .cint )
x = rebox ( x , mem [(long) z + 1 ] .cint ) ;
else z = rebox ( z , mem [(long) x + 1 ] .cint ) ;
if ( curstyle < 2 )
{
shiftup = fontinfo [ 8 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
.cint ;
shiftdown = fontinfo [ 11 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH
] ] .cint ;
}
else {
shiftdown = fontinfo [ 12 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH
] ] .cint ;
if ( mem [(long) q + 1 ] .cint != 0 )
shiftup = fontinfo [ 9 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
.cint ;
else shiftup = fontinfo [ 10 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint ;
}
if ( mem [(long) q + 1 ] .cint == 0 )
{
if ( curstyle < 2 )
clr = 7 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ] ]
.cint ;
else clr = 3 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh
.v.RH ] ] .cint ;
delta = half ( clr - ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( mem [(long) z + 3 ]
.cint - shiftdown ) ) ) ;
if ( delta > 0 )
{
shiftup = shiftup + delta ;
shiftdown = shiftdown + delta ;
}
}
else {
if ( curstyle < 2 )
clr = 3 * mem [(long) q + 1 ] .cint ;
else clr = mem [(long) q + 1 ] .cint ;
delta = half ( mem [(long) q + 1 ] .cint ) ;
delta1 = clr - ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( fontinfo [ 22 +
parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ] .cint + delta ) ) ;
delta2 = clr - ( ( fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint - delta ) - ( mem [(long) z + 3 ] .cint - shiftdown ) ) ;
if ( delta1 > 0 )
shiftup = shiftup + delta1 ;
if ( delta2 > 0 )
shiftdown = shiftdown + delta2 ;
}
v = newnullbox () ;
mem [(long) v ] .hh.b0 = 1 ;
mem [(long) v + 3 ] .cint = shiftup + mem [(long) x + 3 ] .cint ;
mem [(long) v + 2 ] .cint = mem [(long) z + 2 ] .cint + shiftdown ;
mem [(long) v + 1 ] .cint = mem [(long) x + 1 ] .cint ;
if ( mem [(long) q + 1 ] .cint == 0 )
{
p = newkern ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( mem [(long) z + 3 ] .cint -
shiftdown ) ) ;
mem [(long) p ] .hh .v.RH = z ;
}
else {
y = fractionrule ( mem [(long) q + 1 ] .cint ) ;
p = newkern ( ( fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint - delta ) - ( mem [(long) z + 3 ] .cint - shiftdown ) ) ;
mem [(long) y ] .hh .v.RH = p ;
mem [(long) p ] .hh .v.RH = z ;
p = newkern ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( fontinfo [ 22 +
parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ] .cint + delta ) ) ;
mem [(long) p ] .hh .v.RH = y ;
}
mem [(long) x ] .hh .v.RH = p ;
mem [(long) v + 5 ] .hh .v.RH = x ;
if ( curstyle < 2 )
delta = fontinfo [ 20 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
.cint ;
else delta = fontinfo [ 21 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ]
] .cint ;
x = vardelimiter ( q + 4 , cursize , delta ) ;
mem [(long) x ] .hh .v.RH = v ;
z = vardelimiter ( q + 5 , cursize , delta ) ;
mem [(long) v ] .hh .v.RH = z ;
mem [(long) q + 1 ] .cint = hpack ( x , 0 , 1 ) ;
}
scaled zmakeop ( q )
halfword q ;
{register scaled Result; r_makeop
scaled delta ;
halfword p, v, x, y, z ;
scaled shiftup, shiftdown ;
if ( ( mem [(long) q ] .hh.b1 == 0 ) && ( curstyle < 2 ) )
mem [(long) q ] .hh.b1 = 1 ;
if ( mem [(long) q + 1 ] .hh .v.RH == 1 )
{
fetch ( q + 1 ) ;
if ( ( curstyle < 2 ) && ( ( ( curi .b2 ) % 4 ) == 2 ) )
{
curc = curi .b3 ;
mem [(long) q + 1 ] .hh.b1 = curc ;
curi = fontinfo [ charbase [ curf ] + curc ] .qqqq ;
}
delta = fontinfo [ italicbase [ curf ] + ( curi .b2 ) / 4 ] .cint ;
x = cleanbox ( q + 1 , curstyle ) ;
if ( ( mem [(long) q + 3 ] .hh .v.RH != 0 ) && ( mem [(long) q ] .hh.b1 != 1 ) )
mem [(long) x + 1 ] .cint = mem [(long) x + 1 ] .cint - delta ;
mem [(long) x + 4 ] .cint = half ( mem [(long) x + 3 ] .cint - mem [(long) x + 2 ] .cint ) -
fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ] .cint ;
mem [(long) q + 1 ] .hh .v.RH = 2 ;
mem [(long) q + 1 ] .hh .v.LH = x ;
}
else delta = 0 ;
if ( mem [(long) q ] .hh.b1 == 1 )
{
x = cleanbox ( q + 2 , 2 * ( curstyle / 4 ) + 4 + ( curstyle % 2 ) ) ;
y = cleanbox ( q + 1 , curstyle ) ;
z = cleanbox ( q + 3 , 2 * ( curstyle / 4 ) + 5 ) ;
v = newnullbox () ;
mem [(long) v ] .hh.b0 = 1 ;
mem [(long) v + 1 ] .cint = mem [(long) y + 1 ] .cint ;
if ( mem [(long) x + 1 ] .cint > mem [(long) v + 1 ] .cint )
mem [(long) v + 1 ] .cint = mem [(long) x + 1 ] .cint ;
if ( mem [(long) z + 1 ] .cint > mem [(long) v + 1 ] .cint )
mem [(long) v + 1 ] .cint = mem [(long) z + 1 ] .cint ;
x = rebox ( x , mem [(long) v + 1 ] .cint ) ;
y = rebox ( y , mem [(long) v + 1 ] .cint ) ;
z = rebox ( z , mem [(long) v + 1 ] .cint ) ;
mem [(long) x + 4 ] .cint = half ( delta ) ;
mem [(long) z + 4 ] .cint = - mem [(long) x + 4 ] .cint ;
mem [(long) v + 3 ] .cint = mem [(long) y + 3 ] .cint ;
mem [(long) v + 2 ] .cint = mem [(long) y + 2 ] .cint ;
if ( mem [(long) q + 2 ] .hh .v.RH == 0 )
{
freenode ( x , 7 ) ;
mem [(long) v + 5 ] .hh .v.RH = y ;
}
else {
shiftup = fontinfo [ 11 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH
] ] .cint - mem [(long) x + 2 ] .cint ;
if ( shiftup < fontinfo [ 9 + parambase [ eqtb [ 4582 + cursize ] .hh
.v.RH ] ] .cint )
shiftup = fontinfo [ 9 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ]
] .cint ;
p = newkern ( shiftup ) ;
mem [(long) p ] .hh .v.RH = y ;
mem [(long) x ] .hh .v.RH = p ;
p = newkern ( fontinfo [ 13 + parambase [ eqtb [ 4582 + cursize ] .hh
.v.RH ] ] .cint ) ;
mem [(long) p ] .hh .v.RH = x ;
mem [(long) v + 5 ] .hh .v.RH = p ;
mem [(long) v + 3 ] .cint = mem [(long) v + 3 ] .cint + fontinfo [ 13 + parambase [
eqtb [ 4582 + cursize ] .hh .v.RH ] ] .cint + mem [(long) x + 3 ] .cint + mem
[ x + 2 ] .cint + shiftup ;
}
if ( mem [(long) q + 3 ] .hh .v.RH == 0 )
freenode ( z , 7 ) ;
else {
shiftdown = fontinfo [ 12 + parambase [ eqtb [ 4582 + cursize ] .hh
.v.RH ] ] .cint - mem [(long) z + 3 ] .cint ;
if ( shiftdown < fontinfo [ 10 + parambase [ eqtb [ 4582 + cursize ] .hh
.v.RH ] ] .cint )
shiftdown = fontinfo [ 10 + parambase [ eqtb [ 4582 + cursize ] .hh
.v.RH ] ] .cint ;
p = newkern ( shiftdown ) ;
mem [(long) y ] .hh .v.RH = p ;
mem [(long) p ] .hh .v.RH = z ;
p = newkern ( fontinfo [ 13 + parambase [ eqtb [ 4582 + cursize ] .hh
.v.RH ] ] .cint ) ;
mem [(long) z ] .hh .v.RH = p ;
mem [(long) v + 2 ] .cint = mem [(long) v + 2 ] .cint + fontinfo [ 13 + parambase [
eqtb [ 4582 + cursize ] .hh .v.RH ] ] .cint + mem [(long) z + 3 ] .cint + mem
[ z + 2 ] .cint + shiftdown ;
}
mem [(long) q + 1 ] .cint = v ;
}
Result = delta ;
return(Result) ;
}
zmakeord ( q )
halfword q ;
{/* 20 10 */ r_makeord
integer a ;
halfword p ;
lab20: if ( ( mem [(long) q + 3 ] .hh .v.RH == 0 ) && ( mem [(long) q + 2 ] .hh .v.RH ==
0 ) && ( mem [(long) q + 1 ] .hh .v.RH == 1 ) )
{
p = mem [(long) q ] .hh .v.RH ;
if ( p != 0 )
if ( ( mem [(long) p ] .hh.b0 >= 16 ) && ( mem [(long) p ] .hh.b0 <= 22 ) )
if ( mem [(long) p + 1 ] .hh .v.RH == 1 )
if ( mem [(long) p + 1 ] .hh.b0 == mem [(long) q + 1 ] .hh.b0 )
{
mem [(long) q + 1 ] .hh .v.RH = 4 ;
fetch ( q + 1 ) ;
if ( ( ( curi .b2 ) % 4 ) == 1 )
{
a = ligkernbase [ curf ] + curi .b3 ;
curc = mem [(long) p + 1 ] .hh.b1 ;
do { curi = fontinfo [ a ] .qqqq ;
if ( curi .b1 == curc )
if ( curi .b2 >= 128 )
{
p = newkern ( fontinfo [ kernbase [ curf ] + curi .b3 ] .cint ) ;
mem [(long) p ] .hh .v.RH = mem [(long) q ] .hh .v.RH ;
mem [(long) q ] .hh .v.RH = p ;
return ;
}
else {
mem [(long) q ] .hh .v.RH = mem [(long) p ] .hh .v.RH ;
mem [(long) q + 1 ] .hh .v.RH = 1 ;
mem [(long) q + 1 ] .hh.b1 = curi .b3 ;
mem [(long) q + 3 ] = mem [(long) p + 3 ] ;
mem [(long) q + 2 ] = mem [(long) p + 2 ] ;
freenode ( p , 4 ) ;
goto lab20 ;
}
incr ( a ) ;
} while ( ! ( curi .b0 >= 128 ) ) ;
}
}
}
}
zmakescripts ( q , delta )
halfword q ;
scaled delta ;
{r_makescripts
halfword p, x, y, z ;
scaled shiftup, shiftdown, clr ;
smallnumber t ;
p = mem [(long) q + 1 ] .cint ;
if ( ( p >= himemmin ) )
{
shiftup = 0 ;
shiftdown = 0 ;
}
else {
z = hpack ( p , 0 , 1 ) ;
if ( curstyle < 4 )
t = 16 ;
else t = 32 ;
shiftup = mem [(long) z + 3 ] .cint - fontinfo [ 18 + parambase [ eqtb [ 4581 +
t ] .hh .v.RH ] ] .cint ;
shiftdown = mem [(long) z + 2 ] .cint + fontinfo [ 19 + parambase [ eqtb [ 4581
+ t ] .hh .v.RH ] ] .cint ;
freenode ( z , 7 ) ;
}
if ( mem [(long) q + 2 ] .hh .v.RH == 0 )
{
x = cleanbox ( q + 3 , 2 * ( curstyle / 4 ) + 5 ) ;
mem [(long) x + 1 ] .cint = mem [(long) x + 1 ] .cint + eqtb [ 5713 ] .cint ;
if ( shiftdown < fontinfo [ 16 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint )
shiftdown = fontinfo [ 16 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH
] ] .cint ;
clr = mem [(long) x + 3 ] .cint - ( abs ( fontinfo [ 5 + parambase [ eqtb [ 4581
+ cursize ] .hh .v.RH ] ] .cint * 4 ) / 5 ) ;
if ( shiftdown < clr )
shiftdown = clr ;
mem [(long) x + 4 ] .cint = shiftdown ;
}
else {
{
x = cleanbox ( q + 2 , 2 * ( curstyle / 4 ) + 4 + ( curstyle % 2 ) ) ;
mem [(long) x + 1 ] .cint = mem [(long) x + 1 ] .cint + eqtb [ 5713 ] .cint ;
if ( odd ( curstyle ) )
clr = fontinfo [ 15 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
.cint ;
else if ( curstyle < 2 )
clr = fontinfo [ 13 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH ] ]
.cint ;
else clr = fontinfo [ 14 + parambase [ eqtb [ 4581 + cursize ] .hh .v.RH
] ] .cint ;
if ( shiftup < clr )
shiftup = clr ;
clr = mem [(long) x + 2 ] .cint + ( abs ( fontinfo [ 5 + parambase [ eqtb [
4581 + cursize ] .hh .v.RH ] ] .cint ) / 4 ) ;
if ( shiftup < clr )
shiftup = clr ;
}
if ( mem [(long) q + 3 ] .hh .v.RH == 0 )
mem [(long) x + 4 ] .cint = - shiftup ;
else {
y = cleanbox ( q + 3 , 2 * ( curstyle / 4 ) + 5 ) ;
mem [(long) y + 1 ] .cint = mem [(long) y + 1 ] .cint + eqtb [ 5713 ] .cint ;
if ( shiftdown < fontinfo [ 17 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint )
shiftdown = fontinfo [ 17 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint ;
clr = 4 * fontinfo [ 8 + parambase [ eqtb [ 4582 + cursize ] .hh .v.RH ]
] .cint - ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( mem [(long) y + 3 ] .cint -
shiftdown ) ) ;
if ( clr > 0 )
{
shiftdown = shiftdown + clr ;
clr = ( abs ( fontinfo [ 5 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint * 4 ) / 5 ) - ( shiftup - mem [(long) x + 2 ] .cint ) ;
if ( clr > 0 )
{
shiftup = shiftup + clr ;
shiftdown = shiftdown - clr ;
}
}
mem [(long) x + 4 ] .cint = delta ;
p = newkern ( ( shiftup - mem [(long) x + 2 ] .cint ) - ( mem [(long) y + 3 ] .cint
- shiftdown ) ) ;
mem [(long) x ] .hh .v.RH = p ;
mem [(long) p ] .hh .v.RH = y ;
x = vpackage ( x , 0 , 1 , 1073741823 ) ;
mem [(long) x + 4 ] .cint = shiftdown ;
}
}
if ( mem [(long) q + 1 ] .cint == 0 )
mem [(long) q + 1 ] .cint = x ;
else {
p = mem [(long) q + 1 ] .cint ;
while ( mem [(long) p ] .hh .v.RH != 0 ) p = mem [(long) p ] .hh .v.RH ;
mem [(long) p ] .hh .v.RH = x ;
}
}
smallnumber zmakeleftrigh ( q , style , maxd , maxh )
halfword q ;
smallnumber style ;
scaled maxd , maxh ;
{register smallnumber Result; r_makeleftrigh
scaled delta, delta1, delta2 ;
if ( style < 4 )
cursize = 0 ;
else cursize = 16 * ( ( style - 2 ) / 2 ) ;
delta2 = maxd + fontinfo [ 22 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint ;
delta1 = maxh + maxd - delta2 ;
if ( delta2 > delta1 )
delta1 = delta2 ;
delta = ( delta1 / 500 ) * eqtb [ 5285 ] .cint ;
delta2 = delta1 + delta1 - eqtb [ 5711 ] .cint ;
if ( delta < delta2 )
delta = delta2 ;
mem [(long) q + 1 ] .cint = vardelimiter ( q + 1 , cursize , delta ) ;
Result = mem [(long) q ] .hh.b0 - ( 10 ) ;
return(Result) ;
}
mlisttohlist () { /* 21 82 80 81 83 30 */ r_mlisttohlist
halfword mlist ;
boolean penalties ;
smallnumber style ;
smallnumber savestyle ;
halfword q ;
halfword r ;
smallnumber rtype ;
smallnumber t ;
halfword p, x, y, z ;
integer pen ;
smallnumber s ;
scaled maxh, maxd ;
scaled delta ;
mlist = curmlist ;
penalties = mlistpenalti ;
style = curstyle ;
q = mlist ;
r = 0 ;
rtype = 17 ;
maxh = 0 ;
maxd = 0 ;
{
if ( curstyle < 4 )
cursize = 0 ;
else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint , 18 ) ;
}
while ( q != 0 ) {
lab21: delta = 0 ;
switch ( mem [(long) q ] .hh.b0 )
{case 18 :
switch ( rtype )
{case 18 :
case 17 :
case 19 :
case 20 :
case 22 :
case 30 :
{
mem [(long) q ] .hh.b0 = 16 ;
goto lab21 ;
}
break ;
default :
break ;
}
break ;
case 19 :
case 21 :
case 22 :
case 31 :
{
if ( rtype == 18 )
mem [(long) r ] .hh.b0 = 16 ;
if ( mem [(long) q ] .hh.b0 == 31 )
goto lab80 ;
}
break ;
case 30 :
goto lab80 ;
break ;
case 25 :
{
makefraction ( q ) ;
goto lab82 ;
}
break ;
case 17 :
{
delta = makeop ( q ) ;
if ( mem [(long) q ] .hh.b1 == 1 )
goto lab82 ;
}
break ;
case 16 :
makeord ( q ) ;
break ;
case 20 :
case 23 :
;
break ;
case 24 :
makeradical ( q ) ;
break ;
case 27 :
makeover ( q ) ;
break ;
case 26 :
makeunder ( q ) ;
break ;
case 28 :
makemathacce ( q ) ;
break ;
case 29 :
makevcenter ( q ) ;
break ;
case 14 :
{
curstyle = mem [(long) q ] .hh.b1 ;
{
if ( curstyle < 4 )
cursize = 0 ;
else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ]
.hh .v.RH ] ] .cint , 18 ) ;
}
goto lab81 ;
}
break ;
case 15 :
{
switch ( curstyle / 2 )
{case 0 :
{
p = mem [(long) q + 1 ] .hh .v.LH ;
mem [(long) q + 1 ] .hh .v.LH = 0 ;
}
break ;
case 1 :
{
p = mem [(long) q + 1 ] .hh .v.RH ;
mem [(long) q + 1 ] .hh .v.RH = 0 ;
}
break ;
case 2 :
{
p = mem [(long) q + 2 ] .hh .v.LH ;
mem [(long) q + 2 ] .hh .v.LH = 0 ;
}
break ;
case 3 :
{
p = mem [(long) q + 2 ] .hh .v.RH ;
mem [(long) q + 2 ] .hh .v.RH = 0 ;
}
break ;
}
flushnodelis ( mem [(long) q + 1 ] .hh .v.LH ) ;
flushnodelis ( mem [(long) q + 1 ] .hh .v.RH ) ;
flushnodelis ( mem [(long) q + 2 ] .hh .v.LH ) ;
flushnodelis ( mem [(long) q + 2 ] .hh .v.RH ) ;
mem [(long) q ] .hh.b0 = 14 ;
mem [(long) q ] .hh.b1 = curstyle ;
mem [(long) q + 1 ] .cint = 0 ;
mem [(long) q + 2 ] .cint = 0 ;
if ( p != 0 )
{
z = mem [(long) q ] .hh .v.RH ;
mem [(long) q ] .hh .v.RH = p ;
while ( mem [(long) p ] .hh .v.RH != 0 ) p = mem [(long) p ] .hh .v.RH ;
mem [(long) p ] .hh .v.RH = z ;
}
goto lab81 ;
}
break ;
case 3 :
case 4 :
case 5 :
case 8 :
case 12 :
case 7 :
goto lab81 ;
break ;
case 2 :
{
if ( mem [(long) q + 3 ] .cint > maxh )
maxh = mem [(long) q + 3 ] .cint ;
if ( mem [(long) q + 2 ] .cint > maxd )
maxd = mem [(long) q + 2 ] .cint ;
goto lab81 ;
}
break ;
case 10 :
{
if ( mem [(long) q ] .hh.b1 == 99 )
{
x = mem [(long) q + 1 ] .hh .v.LH ;
y = mathglue ( x , curmu ) ;
deletegluere ( x ) ;
mem [(long) q + 1 ] .hh .v.LH = y ;
mem [(long) q ] .hh.b1 = 0 ;
}
else if ( ( cursize != 0 ) && ( mem [(long) q ] .hh.b1 == 98 ) )
{
p = mem [(long) q ] .hh .v.RH ;
if ( p != 0 )
if ( ( mem [(long) p ] .hh.b0 == 10 ) || ( mem [(long) p ] .hh.b0 == 11 ) )
{
mem [(long) q ] .hh .v.RH = mem [(long) p ] .hh .v.RH ;
mem [(long) p ] .hh .v.RH = 0 ;
flushnodelis ( p ) ;
}
}
goto lab81 ;
}
break ;
case 11 :
{
mathkern ( q , curmu ) ;
goto lab81 ;
}
break ;
default :
confusion ( 742 ) ;
break ;
}
switch ( mem [(long) q + 1 ] .hh .v.RH )
{case 1 :
case 4 :
{
fetch ( q + 1 ) ;
if ( ( curi .b0 > 0 ) )
{
delta = fontinfo [ italicbase [ curf ] + ( curi .b2 ) / 4 ] .cint ;
p = newcharacter ( curf , curc ) ;
if ( ( mem [(long) q + 1 ] .hh .v.RH == 4 ) && ( fontinfo [ 2 + parambase
[ curf ] ] .cint != 0 ) )
delta = 0 ;
if ( ( mem [(long) q + 3 ] .hh .v.RH == 0 ) && ( delta != 0 ) )
{
mem [(long) p ] .hh .v.RH = newkern ( delta ) ;
delta = 0 ;
}
}
else p = 0 ;
}
break ;
case 0 :
p = 0 ;
break ;
case 2 :
p = mem [(long) q + 1 ] .hh .v.LH ;
break ;
case 3 :
{
curmlist = mem [(long) q + 1 ] .hh .v.LH ;
savestyle = curstyle ;
mlistpenalti = false ;
mlisttohlist () ;
curstyle = savestyle ;
{
if ( curstyle < 4 )
cursize = 0 ;
else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ]
.hh .v.RH ] ] .cint , 18 ) ;
}
p = hpack ( mem [(long) memtop - 3 ] .hh .v.RH , 0 , 1 ) ;
}
break ;
default :
confusion ( 743 ) ;
break ;
}
mem [(long) q + 1 ] .cint = p ;
if ( ( mem [(long) q + 3 ] .hh .v.RH == 0 ) && ( mem [(long) q + 2 ] .hh .v.RH == 0 )
)
goto lab82 ;
makescripts ( q , delta ) ;
lab82: z = hpack ( mem [(long) q + 1 ] .cint , 0 , 1 ) ;
if ( mem [(long) z + 3 ] .cint > maxh )
maxh = mem [(long) z + 3 ] .cint ;
if ( mem [(long) z + 2 ] .cint > maxd )
maxd = mem [(long) z + 2 ] .cint ;
freenode ( z , 7 ) ;
lab80: r = q ;
rtype = mem [(long) r ] .hh.b0 ;
lab81: q = mem [(long) q ] .hh .v.RH ;
}
if ( rtype == 18 )
mem [(long) r ] .hh.b0 = 16 ;
p = memtop - 3 ;
mem [(long) p ] .hh .v.RH = 0 ;
q = mlist ;
rtype = 0 ;
curstyle = style ;
{
if ( curstyle < 4 )
cursize = 0 ;
else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ] .hh
.v.RH ] ] .cint , 18 ) ;
}
while ( q != 0 ) {
t = 16 ;
s = 4 ;
pen = 10000 ;
switch ( mem [(long) q ] .hh.b0 )
{case 17 :
case 20 :
case 21 :
case 22 :
case 23 :
t = mem [(long) q ] .hh.b0 ;
break ;
case 18 :
{
t = 18 ;
pen = eqtb [ 5276 ] .cint ;
}
break ;
case 19 :
{
t = 19 ;
pen = eqtb [ 5277 ] .cint ;
}
break ;
case 16 :
case 29 :
case 27 :
case 26 :
;
break ;
case 24 :
s = 5 ;
break ;
case 28 :
s = 5 ;
break ;
case 25 :
{
t = 23 ;
s = 6 ;
}
break ;
case 30 :
case 31 :
t = makeleftrigh ( q , style , maxd , maxh ) ;
break ;
case 14 :
{
curstyle = mem [(long) q ] .hh.b1 ;
s = 3 ;
{
if ( curstyle < 4 )
cursize = 0 ;
else cursize = 16 * ( ( curstyle - 2 ) / 2 ) ;
curmu = xovern ( fontinfo [ 6 + parambase [ eqtb [ 4581 + cursize ]
.hh .v.RH ] ] .cint , 18 ) ;
}
goto lab83 ;
}
break ;
case 8 :
case 12 :
case 2 :
case 7 :
case 5 :
case 3 :
case 4 :
case 10 :
case 11 :
{
mem [(long) p ] .hh .v.RH = q ;
p = q ;
q = mem [(long) q ] .hh .v.RH ;
mem [(long) p ] .hh .v.RH = 0 ;
goto lab30 ;
}
break ;
default :
confusion ( 744 ) ;
break ;
}
if ( rtype > 0 )
{
switch ( strpool [ rtype * 8 + t + magicoffset ] )
{case 48 :
x = 0 ;
break ;
case 49 :
if ( curstyle < 4 )
x = 15 ;
else x = 0 ;
break ;
case 50 :
x = 15 ;
break ;
case 51 :
if ( curstyle < 4 )
x = 16 ;
else x = 0 ;
break ;
case 52 :
if ( curstyle < 4 )
x = 17 ;
else x = 0 ;
break ;
default :
confusion ( 746 ) ;
break ;
}
if ( x != 0 )
{
y = mathglue ( eqtb [ 3526 + x ] .hh .v.RH , curmu ) ;
z = newglue ( y ) ;
mem [(long) y ] .hh .v.RH = 0 ;
mem [(long) p ] .hh .v.RH = z ;
p = z ;
mem [(long) z ] .hh.b1 = x + 1 ;
}
}
if ( mem [(long) q + 1 ] .cint != 0 )
{
mem [(long) p ] .hh .v.RH = mem [(long) q + 1 ] .cint ;
do { p = mem [(long) p ] .hh .v.RH ;
} while ( ! ( mem [(long) p ] .hh .v.RH == 0 ) ) ;
}
if ( penalties )
if ( mem [(long) q ] .hh .v.RH != 0 )
if ( pen < 10000 )
{
rtype = mem [(long) mem [(long) q ] .hh .v.RH ] .hh.b0 ;
if ( rtype != 12 )
if ( rtype != 19 )
{
z = newpenalty ( pen ) ;
mem [(long) p ] .hh .v.RH = z ;
p = z ;
}
}
rtype = t ;
lab83: r = q ;
q = mem [(long) q ] .hh .v.RH ;
freenode ( r , s ) ;
lab30: ;
}
}
pushalignmen () { r_pushalignmen
halfword p ;
p = getnode ( 5 ) ;
mem [(long) p ] .hh .v.RH = alignptr ;
mem [(long) p ] .hh .v.LH = curalign ;
mem [(long) p + 1 ] .hh .v.LH = mem [(long) memtop - 8 ] .hh .v.RH ;
mem [(long) p + 1 ] .hh .v.RH = curspan ;
mem [(long) p + 2 ] .cint = curloop ;
mem [(long) p + 3 ] .cint = alignstate ;
mem [(long) p + 4 ] .hh .v.LH = curhead ;
mem [(long) p + 4 ] .hh .v.RH = curtail ;
alignptr = p ;
curhead = getavail () ;
}
popalignment () { r_popalignment
halfword p ;
{
mem [(long) curhead ] .hh .v.RH = avail ;
avail = curhead ;
#ifdef STAT
decr ( dynused ) ;
#endif /* STAT */
}
p = alignptr ;
curtail = mem [(long) p + 4 ] .hh .v.RH ;
curhead = mem [(long) p + 4 ] .hh .v.LH ;
alignstate = mem [(long) p + 3 ] .cint ;
curloop = mem [(long) p + 2 ] .cint ;
curspan = mem [(long) p + 1 ] .hh .v.RH ;
mem [(long) memtop - 8 ] .hh .v.RH = mem [(long) p + 1 ] .hh .v.LH ;
curalign = mem [(long) p ] .hh .v.LH ;
alignptr = mem [(long) p ] .hh .v.RH ;
freenode ( p , 5 ) ;
}
getpreamblet () { /* 20 */ r_getpreamblet
lab20: gettoken () ;
while ( ( curchr == 128 ) && ( curcmd == 4 ) ) {
gettoken () ;
if ( curcmd > 99 )
{
expand () ;
gettoken () ;
}
}
if ( ( curcmd == 74 ) && ( curchr == 3537 ) )
{
scanoptional () ;
scanglue ( 2 ) ;
if ( eqtb [ 5310 ] .cint > 0 )
geqdefine ( 3537 , 116 , curval ) ;
else eqdefine ( 3537 , 116 , curval ) ;
goto lab20 ;
}
}
initalign () { /* 30 31 32 22 */ r_initalign
halfword savecsptr ;
halfword p ;
savecsptr = curcs ;
pushalignmen () ;
alignstate = - 1000000 ;
if ( ( curlist .modefield == 201 ) && ( ( curlist .tailfield != curlist
.headfield ) || ( curlist .auxfield != 0 ) ) )
{
{
if ( interaction == 3 )
wakeuptermin () ;
printnl ( 133 ) ;
print ( 536 ) ;
}
printesc ( 379 ) ;
print ( 747 ) ;
{
helpptr = 3 ;
helpline [ 2 ] = 748 ;
helpline [ 1 ] = 749 ;
helpline [ 0 ] = 750 ;
}
error () ;
flushmath () ;
}
pushnest () ;
if ( curlist .modefield == 201 )
{
curlist .modefield = - 1 ;
curlist .auxfield = nest [ nestptr - 2 ] .auxfield ;
}
else if ( curlist .modefield > 0 )
curlist .modefield = - curlist .modefield ;
scanspec () ;
newsavelevel ( 6 ) ;
mem [(long) memtop - 8 ] .hh .v.RH = 0 ;
curalign = memtop - 8 ;
curloop = 0 ;
scannerstatu = 4 ;
warningindex = savecsptr ;
alignstate = - 1000000 ;
while ( true ) {
mem [(long) curalign ] .hh .v.RH = newparamglue ( 11 ) ;
curalign = mem [(long) curalign ] .hh .v.RH ;
if ( curcmd == 5 )
goto lab30 ;
p = memtop - 4 ;
mem [(long) p ] .hh .v.RH = 0 ;
while ( true ) {
getpreamblet () ;
if ( curcmd == 6 )
goto lab31 ;
if ( ( curcmd <= 5 ) && ( curcmd >= 4 ) && ( alignstate == - 1000000 ) )
if ( ( p == memtop - 4 ) && ( curloop == 0 ) && ( curcmd == 4 ) )
curloop = curalign ;
else {
{
if ( interaction == 3 )
wakeuptermin () ;
printnl ( 133 ) ;
print ( 756 ) ;
}
{
helpptr = 3 ;
helpline [ 2 ] = 757 ;
helpline [ 1 ] = 758 ;
helpline [ 0 ] = 759 ;
}
backerror () ;
goto lab31 ;
}
else if ( ( curcmd != 10 ) || ( p != memtop - 4 ) )
{
mem [(long) p ] .hh .v.RH = getavail () ;
p = mem [(long) p ] .hh .v.RH ;
mem [(long) p ] .hh .v.LH = curtok ;
}
}
lab31: ;
mem [(long) curalign ] .hh .v.RH = newnullbox () ;
curalign = mem [(long) curalign ] .hh .v.RH ;
mem [(long) curalign ] .hh .v.LH = memtop - 9 ;
mem [(long) curalign + 1 ] .cint = - 1073741824 ;
mem [(long) curalign + 3 ] .cint = mem [(long) memtop - 4 ] .hh .v.RH ;
p = memtop - 4 ;
mem [(long) p ] .hh .v.RH = 0 ;
while ( true ) {
lab22: getpreamblet () ;
if ( ( curcmd <= 5 ) && ( curcmd >= 4 ) && ( alignstate == - 1000000 ) )
goto lab32 ;
if ( curcmd == 6 )
{
{
if ( interaction == 3 )
wakeuptermin () ;
printnl ( 133 ) ;
print ( 760 ) ;
}
{
helpptr = 3 ;
helpline [ 2 ] = 757 ;
helpline [ 1 ] = 758 ;
helpline [ 0 ] = 761 ;
}
error () ;
goto lab22 ;
}
mem [(long) p ] .hh .v.RH = getavail () ;
p = mem [(long) p ] .hh .v.RH ;
mem [(long) p ] .hh .v.LH = curtok ;
}
lab32: mem [(long) p ] .hh .v.RH = getavail () ;
p = mem [(long) p ] .hh .v.RH ;
mem [(long) p ] .hh .v.LH = 7359 ;
mem [(long) curalign + 2 ] .cint = mem [(long) memtop - 4 ] .hh .v.RH ;
}
lab30: scannerstatu = 0 ;
newsavelevel ( 6 ) ;
if ( eqtb [ 4064 ] .hh .v.RH != 0 )
begintokenli ( eqtb [ 4064 ] .hh .v.RH , 13 ) ;
alignpeek () ;
}
zinitspan ( p )
halfword p ;
{r_initspan
pushnest () ;
if ( curlist .modefield == - 101 )
curlist .auxfield = 1000 ;
else {
curlist .auxfield = - 65536000 ;
normalparagr () ;
}
curspan = p ;
}
initrow () { r_initrow
pushnest () ;
curlist .modefield = ( - 102 ) - curlist .modefield ;
curlist .auxfield = 0 ;
{
mem [(long) curlist .tailfield ] .hh .v.RH = newglue ( mem [(long) mem [(long) memtop - 8 ]
.hh .v.RH + 1 ] .hh .v.LH ) ;
curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
}
mem [(long) curlist .tailfield ] .hh.b1 = 12 ;
curalign = mem [(long) mem [(long) memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
curtail = curhead ;
initspan ( curalign ) ;
}
initcol () { r_initcol
mem [(long) curalign + 5 ] .hh .v.LH = curcmd ;
if ( curcmd == 63 )
alignstate = 0 ;
else {
backinput () ;
begintokenli ( mem [(long) curalign + 3 ] .cint , 1 ) ;
}
}
boolean fincol () { /* 10 */ register boolean Result; r_fincol
halfword p ;
halfword q, r ;
halfword s ;
halfword u ;
scaled w ;
glueord o ;
halfword n ;
q = mem [(long) curalign ] .hh .v.RH ;
if ( ( curalign == 0 ) || ( q == 0 ) )
confusion ( 763 ) ;
p = mem [(long) q ] .hh .v.RH ;
if ( ( p == 0 ) && ( mem [(long) curalign + 5 ] .hh .v.LH < 129 ) )
if ( curloop != 0 )
{
mem [(long) q ] .hh .v.RH = newnullbox () ;
p = mem [(long) q ] .hh .v.RH ;
mem [(long) p ] .hh .v.LH = memtop - 9 ;
mem [(long) p + 1 ] .cint = - 1073741824 ;
curloop = mem [(long) curloop ] .hh .v.RH ;
q = memtop - 4 ;
r = mem [(long) curloop + 3 ] .cint ;
while ( r != 0 ) {
mem [(long) q ] .hh .v.RH = getavail () ;
q = mem [(long) q ] .hh .v.RH ;
mem [(long) q ] .hh .v.LH = mem [(long) r ] .hh .v.LH ;
r = mem [(long) r ] .hh .v.RH ;
}
mem [(long) q ] .hh .v.RH = 0 ;
mem [(long) p + 3 ] .cint = mem [(long) memtop - 4 ] .hh .v.RH ;
q = memtop - 4 ;
r = mem [(long) curloop + 2 ] .cint ;
while ( r != 0 ) {
mem [(long) q ] .hh .v.RH = getavail () ;
q = mem [(long) q ] .hh .v.RH ;
mem [(long) q ] .hh .v.LH = mem [(long) r ] .hh .v.LH ;
r = mem [(long) r ] .hh .v.RH ;
}
mem [(long) q ] .hh .v.RH = 0 ;
mem [(long) p + 2 ] .cint = mem [(long) memtop - 4 ] .hh .v.RH ;
curloop = mem [(long) curloop ] .hh .v.RH ;
mem [(long) p ] .hh .v.RH = newglue ( mem [(long) curloop + 1 ] .hh .v.LH ) ;
}
else {
{
if ( interaction == 3 )
wakeuptermin () ;
printnl ( 133 ) ;
print ( 764 ) ;
}
printesc ( 752 ) ;
{
helpptr = 3 ;
helpline [ 2 ] = 765 ;
helpline [ 1 ] = 766 ;
helpline [ 0 ] = 767 ;
}
mem [(long) curalign + 5 ] .hh .v.LH = 129 ;
error () ;
}
if ( mem [(long) curalign + 5 ] .hh .v.LH != 128 )
{
unsave () ;
newsavelevel ( 6 ) ;
{
if ( curlist .modefield == - 101 )
{
adjusttail = curtail ;
u = hpack ( mem [(long) curlist .headfield ] .hh .v.RH , 0 , 1 ) ;
w = mem [(long) u + 1 ] .cint ;
curtail = adjusttail ;
adjusttail = 0 ;
}
else {
u = vpackage ( mem [(long) curlist .headfield ] .hh .v.RH , 0 , 1 , 0 ) ;
w = mem [(long) u + 3 ] .cint ;
}
n = 0 ;
if ( curspan != curalign )
{
q = curspan ;
do { incr ( n ) ;
q = mem [(long) mem [(long) q ] .hh .v.RH ] .hh .v.RH ;
} while ( ! ( q == curalign ) ) ;
if ( n > 255 )
confusion ( 768 ) ;
q = curspan ;
while ( mem [(long) mem [(long) q ] .hh .v.LH ] .hh .v.RH < n ) q = mem [(long) q ] .hh
.v.LH ;
if ( mem [(long) mem [(long) q ] .hh .v.LH ] .hh .v.RH > n )
{
s = getnode ( 2 ) ;
mem [(long) s ] .hh .v.LH = mem [(long) q ] .hh .v.LH ;
mem [(long) s ] .hh .v.RH = n ;
mem [(long) q ] .hh .v.LH = s ;
mem [(long) s + 1 ] .cint = w ;
}
else if ( mem [(long) mem [(long) q ] .hh .v.LH + 1 ] .cint < w )
mem [(long) mem [(long) q ] .hh .v.LH + 1 ] .cint = w ;
}
else if ( w > mem [(long) curalign + 1 ] .cint )
mem [(long) curalign + 1 ] .cint = w ;
mem [(long) u ] .hh.b0 = 13 ;
mem [(long) u ] .hh.b1 = n ;
if ( totalstretch [ 3 ] != 0 )
o = 3 ;
else if ( totalstretch [ 2 ] != 0 )
o = 2 ;
else if ( totalstretch [ 1 ] != 0 )
o = 1 ;
else o = 0 ;
mem [(long) u + 5 ] .hh.b1 = o ;
mem [(long) u + 6 ] .cint = totalstretch [ o ] ;
if ( totalshrink [ 3 ] != 0 )
o = 3 ;
else if ( totalshrink [ 2 ] != 0 )
o = 2 ;
else if ( totalshrink [ 1 ] != 0 )
o = 1 ;
else o = 0 ;
mem [(long) u + 5 ] .hh.b0 = o ;
mem [(long) u + 4 ] .cint = totalshrink [ o ] ;
popnest () ;
mem [(long) curlist .tailfield ] .hh .v.RH = u ;
curlist .tailfield = u ;
}
{
mem [(long) curlist .tailfield ] .hh .v.RH = newglue ( mem [(long) mem [(long) curalign ]
.hh .v.RH + 1 ] .hh .v.LH ) ;
curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
}
mem [(long) curlist .tailfield ] .hh.b1 = 12 ;
if ( mem [(long) curalign + 5 ] .hh .v.LH >= 129 )
{
Result = true ;
return(Result) ;
}
initspan ( p ) ;
}
alignstate = 1000000 ;
do { getxtoken () ;
} while ( ! ( curcmd != 10 ) ) ;
curalign = p ;
initcol () ;
Result = false ;
return(Result) ;
}
finrow () { r_finrow
halfword p ;
if ( curlist .modefield == - 101 )
{
p = hpack ( mem [(long) curlist .headfield ] .hh .v.RH , 0 , 1 ) ;
popnest () ;
appendtovlis ( p ) ;
if ( curhead != curtail )
{
mem [(long) curlist .tailfield ] .hh .v.RH = mem [(long) curhead ] .hh .v.RH ;
curlist .tailfield = curtail ;
}
}
else {
p = vpackage ( mem [(long) curlist .headfield ] .hh .v.RH , 0 , 1 , 1073741823 )
;
popnest () ;
mem [(long) curlist .tailfield ] .hh .v.RH = p ;
curlist .tailfield = p ;
curlist .auxfield = 1000 ;
}
mem [(long) p ] .hh.b0 = 13 ;
mem [(long) p + 6 ] .cint = 0 ;
if ( eqtb [ 4064 ] .hh .v.RH != 0 )
begintokenli ( eqtb [ 4064 ] .hh .v.RH , 13 ) ;
alignpeek () ;
}
finalign () { r_finalign
halfword p, q, r, s, u, v ;
scaled t, w ;
scaled o ;
halfword n ;
scaled rulesave ;
if ( curgroup != 6 )
confusion ( 769 ) ;
unsave () ;
if ( curgroup != 6 )
confusion ( 770 ) ;
unsave () ;
if ( nest [ nestptr - 1 ] .modefield == 201 )
o = eqtb [ 5716 ] .cint ;
else o = 0 ;
q = mem [(long) mem [(long) memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
do { flushlist ( mem [(long) q + 3 ] .cint ) ;
flushlist ( mem [(long) q + 2 ] .cint ) ;
p = mem [(long) mem [(long) q ] .hh .v.RH ] .hh .v.RH ;
if ( mem [(long) q + 1 ] .cint == - 1073741824 )
{
mem [(long) q + 1 ] .cint = 0 ;
r = mem [(long) q ] .hh .v.RH ;
s = mem [(long) r + 1 ] .hh .v.LH ;
if ( s != 0 )
{
incr ( mem [(long) 0 ] .hh .v.RH ) ;
deletegluere ( s ) ;
mem [(long) r + 1 ] .hh .v.LH = 0 ;
}
}
if ( mem [(long) q ] .hh .v.LH != memtop - 9 )
{
t = mem [(long) q + 1 ] .cint + mem [(long) mem [(long) mem [(long) q ] .hh .v.RH + 1 ] .hh
.v.LH + 1 ] .cint ;
r = mem [(long) q ] .hh .v.LH ;
s = memtop - 9 ;
mem [(long) s ] .hh .v.LH = p ;
n = 1 ;
do { mem [(long) r + 1 ] .cint = mem [(long) r + 1 ] .cint - t ;
u = mem [(long) r ] .hh .v.LH ;
while ( mem [(long) r ] .hh .v.RH > n ) {
s = mem [(long) s ] .hh .v.LH ;
n = mem [(long) mem [(long) s ] .hh .v.LH ] .hh .v.RH + 1 ;
}
if ( mem [(long) r ] .hh .v.RH < n )
{
mem [(long) r ] .hh .v.LH = mem [(long) s ] .hh .v.LH ;
mem [(long) s ] .hh .v.LH = r ;
decr ( mem [(long) r ] .hh .v.RH ) ;
s = r ;
}
else {
if ( mem [(long) r + 1 ] .cint > mem [(long) mem [(long) s ] .hh .v.LH + 1 ] .cint )
mem [(long) mem [(long) s ] .hh .v.LH + 1 ] .cint = mem [(long) r + 1 ] .cint ;
freenode ( r , 2 ) ;
}
r = u ;
} while ( ! ( r == memtop - 9 ) ) ;
}
mem [(long) q ] .hh.b0 = 13 ;
mem [(long) q ] .hh.b1 = 0 ;
mem [(long) q + 3 ] .cint = 0 ;
mem [(long) q + 2 ] .cint = 0 ;
mem [(long) q + 5 ] .hh.b1 = 0 ;
mem [(long) q + 5 ] .hh.b0 = 0 ;
mem [(long) q + 6 ] .cint = 0 ;
mem [(long) q + 4 ] .cint = 0 ;
q = p ;
} while ( ! ( q == 0 ) ) ;
saveptr = saveptr - 2 ;
packbeginlin = - curlist .mlfield ;
if ( curlist .modefield == - 1 )
{
rulesave = eqtb [ 5717 ] .cint ;
eqtb [ 5717 ] .cint = 0 ;
p = hpack ( mem [(long) memtop - 8 ] .hh .v.RH , savestack [ saveptr + 1 ] .cint
, savestack [ saveptr + 0 ] .cint ) ;
eqtb [ 5717 ] .cint = rulesave ;
}
else {
q = mem [(long) mem [(long) memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
do { mem [(long) q + 3 ] .cint = mem [(long) q + 1 ] .cint ;
mem [(long) q + 1 ] .cint = 0 ;
q = mem [(long) mem [(long) q ] .hh .v.RH ] .hh .v.RH ;
} while ( ! ( q == 0 ) ) ;
p = vpackage ( mem [(long) memtop - 8 ] .hh .v.RH , savestack [ saveptr + 1 ]
.cint , savestack [ saveptr + 0 ] .cint , 1073741823 ) ;
q = mem [(long) mem [(long) memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
do { mem [(long) q + 1 ] .cint = mem [(long) q + 3 ] .cint ;
mem [(long) q + 3 ] .cint = 0 ;
q = mem [(long) mem [(long) q ] .hh .v.RH ] .hh .v.RH ;
} while ( ! ( q == 0 ) ) ;
}
packbeginlin = 0 ;
q = mem [(long) curlist .headfield ] .hh .v.RH ;
s = curlist .headfield ;
while ( q != 0 ) {
if ( mem [(long) q ] .hh.b0 == 13 )
{
if ( curlist .modefield == - 1 )
{
mem [(long) q ] .hh.b0 = 0 ;
mem [(long) q + 1 ] .cint = mem [(long) p + 1 ] .cint ;
}
else {
mem [(long) q ] .hh.b0 = 1 ;
mem [(long) q + 3 ] .cint = mem [(long) p + 3 ] .cint ;
}
mem [(long) q + 5 ] .hh.b1 = mem [(long) p + 5 ] .hh.b1 ;
mem [(long) q + 5 ] .hh.b0 = mem [(long) p + 5 ] .hh.b0 ;
mem [(long) q + 6 ] .gr = mem [(long) p + 6 ] .gr ;
mem [(long) q + 4 ] .cint = o ;
r = mem [(long) mem [(long) q + 5 ] .hh .v.RH ] .hh .v.RH ;
s = mem [(long) mem [(long) p + 5 ] .hh .v.RH ] .hh .v.RH ;
do { n = mem [(long) r ] .hh.b1 ;
t = mem [(long) s + 1 ] .cint ;
w = t ;
u = memtop - 4 ;
while ( n > 0 ) {
decr ( n ) ;
s = mem [(long) s ] .hh .v.RH ;
v = mem [(long) s + 1 ] .hh .v.LH ;
mem [(long) u ] .hh .v.RH = newglue ( v ) ;
u = mem [(long) u ] .hh .v.RH ;
mem [(long) u ] .hh.b1 = 12 ;
t = t + mem [(long) v + 1 ] .cint ;
if ( mem [(long) p + 5 ] .hh.b0 == 1 )
{
if ( mem [(long) v ] .hh.b0 == mem [(long) p + 5 ] .hh.b1 )
t = t + round ( mem [(long) p + 6 ] .gr * mem [(long) v + 2 ] .cint ) ;
}
else if ( mem [(long) p + 5 ] .hh.b0 == 2 )
{
if ( mem [(long) v ] .hh.b1 == mem [(long) p + 5 ] .hh.b1 )
t = t - round ( mem [(long) p + 6 ] .gr * mem [(long) v + 3 ] .cint ) ;
}
s = mem [(long) s ] .hh .v.RH ;
mem [(long) u ] .hh .v.RH = newnullbox () ;
u = mem [(long) u ] .hh .v.RH ;
t = t + mem [(long) s + 1 ] .cint ;
if ( curlist .modefield == - 1 )
mem [(long) u + 1 ] .cint = mem [(long) s + 1 ] .cint ;
else {
mem [(long) u ] .hh.b0 = 1 ;
mem [(long) u + 3 ] .cint = mem [(long) s + 1 ] .cint ;
}
}
if ( curlist .modefield == - 1 )
{
mem [(long) r + 3 ] .cint = mem [(long) q + 3 ] .cint ;
mem [(long) r + 2 ] .cint = mem [(long) q + 2 ] .cint ;
if ( t == mem [(long) r + 1 ] .cint )
{
mem [(long) r + 5 ] .hh.b0 = 0 ;
mem [(long) r + 5 ] .hh.b1 = 0 ;
mem [(long) r + 6 ] .gr = 0.0 ;
}
else if ( t > mem [(long) r + 1 ] .cint )
{
mem [(long) r + 5 ] .hh.b0 = 1 ;
if ( mem [(long) r + 6 ] .cint == 0 )
mem [(long) r + 6 ] .gr = 0.0 ;
else mem [(long) r + 6 ] .gr = ( t - mem [(long) r + 1 ] .cint ) / ((double)
mem [(long) r + 6 ] .cint ) ;
}
else {
mem [(long) r + 5 ] .hh.b1 = mem [(long) r + 5 ] .hh.b0 ;
mem [(long) r + 5 ] .hh.b0 = 2 ;
if ( mem [(long) r + 4 ] .cint == 0 )
mem [(long) r + 6 ] .gr = 0.0 ;
else if ( ( mem [(long) r + 5 ] .hh.b1 == 0 ) && ( mem [(long) r + 1 ] .cint -
t > mem [(long) r + 4 ] .cint ) )
mem [(long) r + 6 ] .gr = 1.0 ;
else mem [(long) r + 6 ] .gr = ( mem [(long) r + 1 ] .cint - t ) / ((double)
mem [(long) r + 4 ] .cint ) ;
}
mem [(long) r + 1 ] .cint = w ;
mem [(long) r ] .hh.b0 = 0 ;
}
else {
mem [(long) r + 1 ] .cint = mem [(long) q + 1 ] .cint ;
if ( t == mem [(long) r + 3 ] .cint )
{
mem [(long) r + 5 ] .hh.b0 = 0 ;
mem [(long) r + 5 ] .hh.b1 = 0 ;
mem [(long) r + 6 ] .gr = 0.0 ;
}
else if ( t > mem [(long) r + 3 ] .cint )
{
mem [(long) r + 5 ] .hh.b0 = 1 ;
if ( mem [(long) r + 6 ] .cint == 0 )
mem [(long) r + 6 ] .gr = 0.0 ;
else mem [(long) r + 6 ] .gr = ( t - mem [(long) r + 3 ] .cint ) / ((double)
mem [(long) r + 6 ] .cint ) ;
}
else {
mem [(long) r + 5 ] .hh.b1 = mem [(long) r + 5 ] .hh.b0 ;
mem [(long) r + 5 ] .hh.b0 = 2 ;
if ( mem [(long) r + 4 ] .cint == 0 )
mem [(long) r + 6 ] .gr = 0.0 ;
else if ( ( mem [(long) r + 5 ] .hh.b1 == 0 ) && ( mem [(long) r + 3 ] .cint -
t > mem [(long) r + 4 ] .cint ) )
mem [(long) r + 6 ] .gr = 1.0 ;
else mem [(long) r + 6 ] .gr = ( mem [(long) r + 3 ] .cint - t ) / ((double)
mem [(long) r + 4 ] .cint ) ;
}
mem [(long) r + 3 ] .cint = w ;
mem [(long) r ] .hh.b0 = 1 ;
}
mem [(long) r + 4 ] .cint = 0 ;
if ( u != memtop - 4 )
{
mem [(long) u ] .hh .v.RH = mem [(long) r ] .hh .v.RH ;
mem [(long) r ] .hh .v.RH = mem [(long) memtop - 4 ] .hh .v.RH ;
r = u ;
}
r = mem [(long) mem [(long) r ] .hh .v.RH ] .hh .v.RH ;
s = mem [(long) mem [(long) s ] .hh .v.RH ] .hh .v.RH ;
} while ( ! ( r == 0 ) ) ;
}
else if ( mem [(long) q ] .hh.b0 == 2 )
{
if ( ( mem [(long) q + 1 ] .cint == - 1073741824 ) )
mem [(long) q + 1 ] .cint = mem [(long) p + 1 ] .cint ;
if ( ( mem [(long) q + 3 ] .cint == - 1073741824 ) )
mem [(long) q + 3 ] .cint = mem [(long) p + 3 ] .cint ;
if ( ( mem [(long) q + 2 ] .cint == - 1073741824 ) )
mem [(long) q + 2 ] .cint = mem [(long) p + 2 ] .cint ;
if ( o != 0 )
{
r = mem [(long) q ] .hh .v.RH ;
mem [(long) q ] .hh .v.RH = 0 ;
q = hpack ( q , 0 , 1 ) ;
mem [(long) q + 4 ] .cint = o ;
mem [(long) q ] .hh .v.RH = r ;
mem [(long) s ] .hh .v.RH = q ;
}
}
s = q ;
q = mem [(long) q ] .hh .v.RH ;
}
flushnodelis ( p ) ;
popalignment () ;
t = curlist .auxfield ;
p = mem [(long) curlist .headfield ] .hh .v.RH ;
q = curlist .tailfield ;
popnest () ;
if ( curlist .modefield == 201 )
{
doassignment () ;
if ( curcmd != 3 )
{
{
if ( interaction == 3 )
wakeuptermin () ;
printnl ( 133 ) ;
print ( 1018 ) ;
}
{
helpptr = 2 ;
helpline [ 1 ] = 748 ;
helpline [ 0 ] = 749 ;
}
backerror () ;
}
else {
getxtoken () ;
if ( curcmd != 3 )
{
{
if ( interaction == 3 )
wakeuptermin () ;
printnl ( 133 ) ;
print ( 1014 ) ;
}
{
helpptr = 2 ;
helpline [ 1 ] = 1015 ;
helpline [ 0 ] = 1016 ;
}
backerror () ;
}
}
popnest () ;
{
mem [(long) curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5278 ] .cint
) ;
curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
}
{
mem [(long) curlist .tailfield ] .hh .v.RH = newparamglue ( 3 ) ;
curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
}
mem [(long) curlist .tailfield ] .hh .v.RH = p ;
if ( p != 0 )
curlist .tailfield = q ;
{
mem [(long) curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 5279 ] .cint
) ;
curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
}
{
mem [(long) curlist .tailfield ] .hh .v.RH = newparamglue ( 4 ) ;
curlist .tailfield = mem [(long) curlist .tailfield ] .hh .v.RH ;
}
curlist .auxfield = t ;
resumeafterd () ;
}
else {
curlist .auxfield = t ;
mem [(long) curlist .tailfield ] .hh .v.RH = p ;
if ( p != 0 )
curlist .tailfield = q ;
if ( curlist .modefield == 1 )
buildpage () ;
}
}