home *** CD-ROM | disk | FTP | other *** search
- #define EXTERN extern
- #include "texd.h"
-
- void pushalignment ( )
- {pushalignment_regmem
- halfword p ;
- p = getnode ( 5 ) ;
- mem [ p ] .hh .v.RH = alignptr ;
- mem [ p ] .hh .v.LH = curalign ;
- mem [ p + 1 ] .hh .v.LH = mem [ memtop - 8 ] .hh .v.RH ;
- mem [ p + 1 ] .hh .v.RH = curspan ;
- mem [ p + 2 ] .cint = curloop ;
- mem [ p + 3 ] .cint = alignstate ;
- mem [ p + 4 ] .hh .v.LH = curhead ;
- mem [ p + 4 ] .hh .v.RH = curtail ;
- alignptr = p ;
- curhead = getavail () ;
- }
- void popalignment ( )
- {popalignment_regmem
- halfword p ;
- {
- mem [ curhead ] .hh .v.RH = avail ;
- avail = curhead ;
- ;
- #ifdef STAT
- decr ( dynused ) ;
- #endif /* STAT */
- }
- p = alignptr ;
- curtail = mem [ p + 4 ] .hh .v.RH ;
- curhead = mem [ p + 4 ] .hh .v.LH ;
- alignstate = mem [ p + 3 ] .cint ;
- curloop = mem [ p + 2 ] .cint ;
- curspan = mem [ p + 1 ] .hh .v.RH ;
- mem [ memtop - 8 ] .hh .v.RH = mem [ p + 1 ] .hh .v.LH ;
- curalign = mem [ p ] .hh .v.LH ;
- alignptr = mem [ p ] .hh .v.RH ;
- freenode ( p , 5 ) ;
- }
- void getpreambletoken ( )
- {/* 20 */ getpreambletoken_regmem
- lab20: gettoken () ;
- while ( ( curchr == 256 ) && ( curcmd == 4 ) ) {
-
- gettoken () ;
- if ( curcmd > 100 )
- {
- expand () ;
- gettoken () ;
- }
- }
- if ( curcmd == 9 )
- fatalerror ( 591 ) ;
- if ( ( curcmd == 75 ) && ( curchr == 3793 ) )
- {
- scanoptionalequals () ;
- scanglue ( 2 ) ;
- if ( eqtb [ 6206 ] .cint > 0 )
- geqdefine ( 3793 , 117 , curval ) ;
- else eqdefine ( 3793 , 117 , curval ) ;
- goto lab20 ;
- }
- }
- void initalign ( )
- {/* 30 31 32 22 */ initalign_regmem
- halfword savecsptr ;
- halfword p ;
- savecsptr = curcs ;
- pushalignment () ;
- alignstate = -1000000L ;
- if ( ( curlist .modefield == 203 ) && ( ( curlist .tailfield != curlist
- .headfield ) || ( curlist .auxfield .cint != 0 ) ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 676 ) ;
- }
- printesc ( 516 ) ;
- print ( 887 ) ;
- {
- helpptr = 3 ;
- helpline [ 2 ] = 888 ;
- helpline [ 1 ] = 889 ;
- helpline [ 0 ] = 890 ;
- }
- error () ;
- flushmath () ;
- }
- pushnest () ;
- if ( curlist .modefield == 203 )
- {
- curlist .modefield = -1 ;
- curlist .auxfield .cint = nest [ nestptr - 2 ] .auxfield .cint ;
- }
- else if ( curlist .modefield > 0 )
- curlist .modefield = - (integer) curlist .modefield ;
- scanspec ( 6 , false ) ;
- mem [ memtop - 8 ] .hh .v.RH = 0 ;
- curalign = memtop - 8 ;
- curloop = 0 ;
- scannerstatus = 4 ;
- warningindex = savecsptr ;
- alignstate = -1000000L ;
- while ( true ) {
-
- mem [ curalign ] .hh .v.RH = newparamglue ( 11 ) ;
- curalign = mem [ curalign ] .hh .v.RH ;
- if ( curcmd == 5 )
- goto lab30 ;
- p = memtop - 4 ;
- mem [ p ] .hh .v.RH = 0 ;
- while ( true ) {
-
- getpreambletoken () ;
- if ( curcmd == 6 )
- goto lab31 ;
- if ( ( curcmd <= 5 ) && ( curcmd >= 4 ) && ( alignstate == -1000000L ) )
- if ( ( p == memtop - 4 ) && ( curloop == 0 ) && ( curcmd == 4 ) )
- curloop = curalign ;
- else {
-
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 896 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 897 ;
- helpline [ 1 ] = 898 ;
- helpline [ 0 ] = 899 ;
- }
- backerror () ;
- goto lab31 ;
- }
- else if ( ( curcmd != 10 ) || ( p != memtop - 4 ) )
- {
- mem [ p ] .hh .v.RH = getavail () ;
- p = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.LH = curtok ;
- }
- }
- lab31: ;
- mem [ curalign ] .hh .v.RH = newnullbox () ;
- curalign = mem [ curalign ] .hh .v.RH ;
- mem [ curalign ] .hh .v.LH = memtop - 9 ;
- mem [ curalign + 1 ] .cint = -1073741824L ;
- mem [ curalign + 3 ] .cint = mem [ memtop - 4 ] .hh .v.RH ;
- p = memtop - 4 ;
- mem [ p ] .hh .v.RH = 0 ;
- while ( true ) {
-
- lab22: getpreambletoken () ;
- if ( ( curcmd <= 5 ) && ( curcmd >= 4 ) && ( alignstate == -1000000L ) )
- goto lab32 ;
- if ( curcmd == 6 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 900 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 897 ;
- helpline [ 1 ] = 898 ;
- helpline [ 0 ] = 901 ;
- }
- error () ;
- goto lab22 ;
- }
- mem [ p ] .hh .v.RH = getavail () ;
- p = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.LH = curtok ;
- }
- lab32: mem [ p ] .hh .v.RH = getavail () ;
- p = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.LH = 7614 ;
- mem [ curalign + 2 ] .cint = mem [ memtop - 4 ] .hh .v.RH ;
- }
- lab30: scannerstatus = 0 ;
- newsavelevel ( 6 ) ;
- if ( eqtb [ 4320 ] .hh .v.RH != 0 )
- begintokenlist ( eqtb [ 4320 ] .hh .v.RH , 13 ) ;
- alignpeek () ;
- }
- void zinitspan ( p )
- halfword p ;
- {initspan_regmem
- pushnest () ;
- if ( curlist .modefield == -102 )
- curlist .auxfield .hh .v.LH = 1000 ;
- else {
-
- curlist .auxfield .cint = -65536000L ;
- normalparagraph () ;
- }
- curspan = p ;
- }
- void initrow ( )
- {initrow_regmem
- pushnest () ;
- curlist .modefield = ( -103 ) - curlist .modefield ;
- if ( curlist .modefield == -102 )
- curlist .auxfield .hh .v.LH = 0 ;
- else curlist .auxfield .cint = 0 ;
- {
- mem [ curlist .tailfield ] .hh .v.RH = newglue ( mem [ mem [ memtop - 8 ]
- .hh .v.RH + 1 ] .hh .v.LH ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- mem [ curlist .tailfield ] .hh.b1 = 12 ;
- curalign = mem [ mem [ memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
- curtail = curhead ;
- initspan ( curalign ) ;
- }
- void initcol ( )
- {initcol_regmem
- mem [ curalign + 5 ] .hh .v.LH = curcmd ;
- if ( curcmd == 63 )
- alignstate = 0 ;
- else {
-
- backinput () ;
- begintokenlist ( mem [ curalign + 3 ] .cint , 1 ) ;
- }
- }
- boolean fincol ( )
- {/* 10 */ register boolean Result; fincol_regmem
- halfword p ;
- halfword q, r ;
- halfword s ;
- halfword u ;
- scaled w ;
- glueord o ;
- halfword n ;
- if ( curalign == 0 )
- confusion ( 902 ) ;
- q = mem [ curalign ] .hh .v.RH ;
- if ( q == 0 )
- confusion ( 902 ) ;
- if ( alignstate < 500000L )
- fatalerror ( 591 ) ;
- p = mem [ q ] .hh .v.RH ;
- if ( ( p == 0 ) && ( mem [ curalign + 5 ] .hh .v.LH < 257 ) )
- if ( curloop != 0 )
- {
- mem [ q ] .hh .v.RH = newnullbox () ;
- p = mem [ q ] .hh .v.RH ;
- mem [ p ] .hh .v.LH = memtop - 9 ;
- mem [ p + 1 ] .cint = -1073741824L ;
- curloop = mem [ curloop ] .hh .v.RH ;
- q = memtop - 4 ;
- r = mem [ curloop + 3 ] .cint ;
- while ( r != 0 ) {
-
- mem [ q ] .hh .v.RH = getavail () ;
- q = mem [ q ] .hh .v.RH ;
- mem [ q ] .hh .v.LH = mem [ r ] .hh .v.LH ;
- r = mem [ r ] .hh .v.RH ;
- }
- mem [ q ] .hh .v.RH = 0 ;
- mem [ p + 3 ] .cint = mem [ memtop - 4 ] .hh .v.RH ;
- q = memtop - 4 ;
- r = mem [ curloop + 2 ] .cint ;
- while ( r != 0 ) {
-
- mem [ q ] .hh .v.RH = getavail () ;
- q = mem [ q ] .hh .v.RH ;
- mem [ q ] .hh .v.LH = mem [ r ] .hh .v.LH ;
- r = mem [ r ] .hh .v.RH ;
- }
- mem [ q ] .hh .v.RH = 0 ;
- mem [ p + 2 ] .cint = mem [ memtop - 4 ] .hh .v.RH ;
- curloop = mem [ curloop ] .hh .v.RH ;
- mem [ p ] .hh .v.RH = newglue ( mem [ curloop + 1 ] .hh .v.LH ) ;
- }
- else {
-
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 903 ) ;
- }
- printesc ( 892 ) ;
- {
- helpptr = 3 ;
- helpline [ 2 ] = 904 ;
- helpline [ 1 ] = 905 ;
- helpline [ 0 ] = 906 ;
- }
- mem [ curalign + 5 ] .hh .v.LH = 257 ;
- error () ;
- }
- if ( mem [ curalign + 5 ] .hh .v.LH != 256 )
- {
- unsave () ;
- newsavelevel ( 6 ) ;
- {
- if ( curlist .modefield == -102 )
- {
- adjusttail = curtail ;
- u = hpack ( mem [ curlist .headfield ] .hh .v.RH , 0 , 1 ) ;
- w = mem [ u + 1 ] .cint ;
- curtail = adjusttail ;
- adjusttail = 0 ;
- }
- else {
-
- u = vpackage ( mem [ curlist .headfield ] .hh .v.RH , 0 , 1 , 0 ) ;
- w = mem [ u + 3 ] .cint ;
- }
- n = 0 ;
- if ( curspan != curalign )
- {
- q = curspan ;
- do {
- incr ( n ) ;
- q = mem [ mem [ q ] .hh .v.RH ] .hh .v.RH ;
- } while ( ! ( q == curalign ) ) ;
- if ( n > 255 )
- confusion ( 907 ) ;
- q = curspan ;
- while ( mem [ mem [ q ] .hh .v.LH ] .hh .v.RH < n ) q = mem [ q ] .hh
- .v.LH ;
- if ( mem [ mem [ q ] .hh .v.LH ] .hh .v.RH > n )
- {
- s = getnode ( 2 ) ;
- mem [ s ] .hh .v.LH = mem [ q ] .hh .v.LH ;
- mem [ s ] .hh .v.RH = n ;
- mem [ q ] .hh .v.LH = s ;
- mem [ s + 1 ] .cint = w ;
- }
- else if ( mem [ mem [ q ] .hh .v.LH + 1 ] .cint < w )
- mem [ mem [ q ] .hh .v.LH + 1 ] .cint = w ;
- }
- else if ( w > mem [ curalign + 1 ] .cint )
- mem [ curalign + 1 ] .cint = w ;
- mem [ u ] .hh.b0 = 13 ;
- mem [ 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 [ u + 5 ] .hh.b1 = o ;
- mem [ 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 [ u + 5 ] .hh.b0 = o ;
- mem [ u + 4 ] .cint = totalshrink [ o ] ;
- popnest () ;
- mem [ curlist .tailfield ] .hh .v.RH = u ;
- curlist .tailfield = u ;
- }
- {
- mem [ curlist .tailfield ] .hh .v.RH = newglue ( mem [ mem [ curalign ]
- .hh .v.RH + 1 ] .hh .v.LH ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- mem [ curlist .tailfield ] .hh.b1 = 12 ;
- if ( mem [ curalign + 5 ] .hh .v.LH >= 257 )
- {
- Result = true ;
- return(Result) ;
- }
- initspan ( p ) ;
- }
- alignstate = 1000000L ;
- do {
- getxtoken () ;
- } while ( ! ( curcmd != 10 ) ) ;
- curalign = p ;
- initcol () ;
- Result = false ;
- return(Result) ;
- }
- void finrow ( )
- {finrow_regmem
- halfword p ;
- if ( curlist .modefield == -102 )
- {
- p = hpack ( mem [ curlist .headfield ] .hh .v.RH , 0 , 1 ) ;
- popnest () ;
- appendtovlist ( p ) ;
- if ( curhead != curtail )
- {
- mem [ curlist .tailfield ] .hh .v.RH = mem [ curhead ] .hh .v.RH ;
- curlist .tailfield = curtail ;
- }
- }
- else {
-
- p = vpackage ( mem [ curlist .headfield ] .hh .v.RH , 0 , 1 , 1073741823L
- ) ;
- popnest () ;
- mem [ curlist .tailfield ] .hh .v.RH = p ;
- curlist .tailfield = p ;
- curlist .auxfield .hh .v.LH = 1000 ;
- }
- mem [ p ] .hh.b0 = 13 ;
- mem [ p + 6 ] .cint = 0 ;
- if ( eqtb [ 4320 ] .hh .v.RH != 0 )
- begintokenlist ( eqtb [ 4320 ] .hh .v.RH , 13 ) ;
- alignpeek () ;
- }
- void finalign ( )
- {finalign_regmem
- halfword p, q, r, s, u, v ;
- scaled t, w ;
- scaled o ;
- halfword n ;
- scaled rulesave ;
- memoryword auxsave ;
- if ( curgroup != 6 )
- confusion ( 908 ) ;
- unsave () ;
- if ( curgroup != 6 )
- confusion ( 909 ) ;
- unsave () ;
- if ( nest [ nestptr - 1 ] .modefield == 203 )
- o = eqtb [ 6745 ] .cint ;
- else o = 0 ;
- q = mem [ mem [ memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
- do {
- flushlist ( mem [ q + 3 ] .cint ) ;
- flushlist ( mem [ q + 2 ] .cint ) ;
- p = mem [ mem [ q ] .hh .v.RH ] .hh .v.RH ;
- if ( mem [ q + 1 ] .cint == -1073741824L )
- {
- mem [ q + 1 ] .cint = 0 ;
- r = mem [ q ] .hh .v.RH ;
- s = mem [ r + 1 ] .hh .v.LH ;
- if ( s != 0 )
- {
- incr ( mem [ 0 ] .hh .v.RH ) ;
- deleteglueref ( s ) ;
- mem [ r + 1 ] .hh .v.LH = 0 ;
- }
- }
- if ( mem [ q ] .hh .v.LH != memtop - 9 )
- {
- t = mem [ q + 1 ] .cint + mem [ mem [ mem [ q ] .hh .v.RH + 1 ] .hh
- .v.LH + 1 ] .cint ;
- r = mem [ q ] .hh .v.LH ;
- s = memtop - 9 ;
- mem [ s ] .hh .v.LH = p ;
- n = 1 ;
- do {
- mem [ r + 1 ] .cint = mem [ r + 1 ] .cint - t ;
- u = mem [ r ] .hh .v.LH ;
- while ( mem [ r ] .hh .v.RH > n ) {
-
- s = mem [ s ] .hh .v.LH ;
- n = mem [ mem [ s ] .hh .v.LH ] .hh .v.RH + 1 ;
- }
- if ( mem [ r ] .hh .v.RH < n )
- {
- mem [ r ] .hh .v.LH = mem [ s ] .hh .v.LH ;
- mem [ s ] .hh .v.LH = r ;
- decr ( mem [ r ] .hh .v.RH ) ;
- s = r ;
- }
- else {
-
- if ( mem [ r + 1 ] .cint > mem [ mem [ s ] .hh .v.LH + 1 ] .cint )
- mem [ mem [ s ] .hh .v.LH + 1 ] .cint = mem [ r + 1 ] .cint ;
- freenode ( r , 2 ) ;
- }
- r = u ;
- } while ( ! ( r == memtop - 9 ) ) ;
- }
- mem [ q ] .hh.b0 = 13 ;
- mem [ q ] .hh.b1 = 0 ;
- mem [ q + 3 ] .cint = 0 ;
- mem [ q + 2 ] .cint = 0 ;
- mem [ q + 5 ] .hh.b1 = 0 ;
- mem [ q + 5 ] .hh.b0 = 0 ;
- mem [ q + 6 ] .cint = 0 ;
- mem [ q + 4 ] .cint = 0 ;
- q = p ;
- } while ( ! ( q == 0 ) ) ;
- saveptr = saveptr - 2 ;
- packbeginline = - (integer) curlist .mlfield ;
- if ( curlist .modefield == -1 )
- {
- rulesave = eqtb [ 6746 ] .cint ;
- eqtb [ 6746 ] .cint = 0 ;
- p = hpack ( mem [ memtop - 8 ] .hh .v.RH , savestack [ saveptr + 1 ] .cint
- , savestack [ saveptr + 0 ] .cint ) ;
- eqtb [ 6746 ] .cint = rulesave ;
- }
- else {
-
- q = mem [ mem [ memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
- do {
- mem [ q + 3 ] .cint = mem [ q + 1 ] .cint ;
- mem [ q + 1 ] .cint = 0 ;
- q = mem [ mem [ q ] .hh .v.RH ] .hh .v.RH ;
- } while ( ! ( q == 0 ) ) ;
- p = vpackage ( mem [ memtop - 8 ] .hh .v.RH , savestack [ saveptr + 1 ]
- .cint , savestack [ saveptr + 0 ] .cint , 1073741823L ) ;
- q = mem [ mem [ memtop - 8 ] .hh .v.RH ] .hh .v.RH ;
- do {
- mem [ q + 1 ] .cint = mem [ q + 3 ] .cint ;
- mem [ q + 3 ] .cint = 0 ;
- q = mem [ mem [ q ] .hh .v.RH ] .hh .v.RH ;
- } while ( ! ( q == 0 ) ) ;
- }
- packbeginline = 0 ;
- q = mem [ curlist .headfield ] .hh .v.RH ;
- s = curlist .headfield ;
- while ( q != 0 ) {
-
- if ( ! ( q >= himemmin ) )
- if ( mem [ q ] .hh.b0 == 13 )
- {
- if ( curlist .modefield == -1 )
- {
- mem [ q ] .hh.b0 = 0 ;
- mem [ q + 1 ] .cint = mem [ p + 1 ] .cint ;
- }
- else {
-
- mem [ q ] .hh.b0 = 1 ;
- mem [ q + 3 ] .cint = mem [ p + 3 ] .cint ;
- }
- mem [ q + 5 ] .hh.b1 = mem [ p + 5 ] .hh.b1 ;
- mem [ q + 5 ] .hh.b0 = mem [ p + 5 ] .hh.b0 ;
- mem [ q + 6 ] .gr = mem [ p + 6 ] .gr ;
- mem [ q + 4 ] .cint = o ;
- r = mem [ mem [ q + 5 ] .hh .v.RH ] .hh .v.RH ;
- s = mem [ mem [ p + 5 ] .hh .v.RH ] .hh .v.RH ;
- do {
- n = mem [ r ] .hh.b1 ;
- t = mem [ s + 1 ] .cint ;
- w = t ;
- u = memtop - 4 ;
- while ( n > 0 ) {
-
- decr ( n ) ;
- s = mem [ s ] .hh .v.RH ;
- v = mem [ s + 1 ] .hh .v.LH ;
- mem [ u ] .hh .v.RH = newglue ( v ) ;
- u = mem [ u ] .hh .v.RH ;
- mem [ u ] .hh.b1 = 12 ;
- t = t + mem [ v + 1 ] .cint ;
- if ( mem [ p + 5 ] .hh.b0 == 1 )
- {
- if ( mem [ v ] .hh.b0 == mem [ p + 5 ] .hh.b1 )
- t = t + round ( mem [ p + 6 ] .gr * mem [ v + 2 ] .cint ) ;
- }
- else if ( mem [ p + 5 ] .hh.b0 == 2 )
- {
- if ( mem [ v ] .hh.b1 == mem [ p + 5 ] .hh.b1 )
- t = t - round ( mem [ p + 6 ] .gr * mem [ v + 3 ] .cint ) ;
- }
- s = mem [ s ] .hh .v.RH ;
- mem [ u ] .hh .v.RH = newnullbox () ;
- u = mem [ u ] .hh .v.RH ;
- t = t + mem [ s + 1 ] .cint ;
- if ( curlist .modefield == -1 )
- mem [ u + 1 ] .cint = mem [ s + 1 ] .cint ;
- else {
-
- mem [ u ] .hh.b0 = 1 ;
- mem [ u + 3 ] .cint = mem [ s + 1 ] .cint ;
- }
- }
- if ( curlist .modefield == -1 )
- {
- mem [ r + 3 ] .cint = mem [ q + 3 ] .cint ;
- mem [ r + 2 ] .cint = mem [ q + 2 ] .cint ;
- if ( t == mem [ r + 1 ] .cint )
- {
- mem [ r + 5 ] .hh.b0 = 0 ;
- mem [ r + 5 ] .hh.b1 = 0 ;
- mem [ r + 6 ] .gr = 0.0 ;
- }
- else if ( t > mem [ r + 1 ] .cint )
- {
- mem [ r + 5 ] .hh.b0 = 1 ;
- if ( mem [ r + 6 ] .cint == 0 )
- mem [ r + 6 ] .gr = 0.0 ;
- else mem [ r + 6 ] .gr = ( t - mem [ r + 1 ] .cint ) / ((double)
- mem [ r + 6 ] .cint ) ;
- }
- else {
-
- mem [ r + 5 ] .hh.b1 = mem [ r + 5 ] .hh.b0 ;
- mem [ r + 5 ] .hh.b0 = 2 ;
- if ( mem [ r + 4 ] .cint == 0 )
- mem [ r + 6 ] .gr = 0.0 ;
- else if ( ( mem [ r + 5 ] .hh.b1 == 0 ) && ( mem [ r + 1 ] .cint -
- t > mem [ r + 4 ] .cint ) )
- mem [ r + 6 ] .gr = 1.0 ;
- else mem [ r + 6 ] .gr = ( mem [ r + 1 ] .cint - t ) / ((double)
- mem [ r + 4 ] .cint ) ;
- }
- mem [ r + 1 ] .cint = w ;
- mem [ r ] .hh.b0 = 0 ;
- }
- else {
-
- mem [ r + 1 ] .cint = mem [ q + 1 ] .cint ;
- if ( t == mem [ r + 3 ] .cint )
- {
- mem [ r + 5 ] .hh.b0 = 0 ;
- mem [ r + 5 ] .hh.b1 = 0 ;
- mem [ r + 6 ] .gr = 0.0 ;
- }
- else if ( t > mem [ r + 3 ] .cint )
- {
- mem [ r + 5 ] .hh.b0 = 1 ;
- if ( mem [ r + 6 ] .cint == 0 )
- mem [ r + 6 ] .gr = 0.0 ;
- else mem [ r + 6 ] .gr = ( t - mem [ r + 3 ] .cint ) / ((double)
- mem [ r + 6 ] .cint ) ;
- }
- else {
-
- mem [ r + 5 ] .hh.b1 = mem [ r + 5 ] .hh.b0 ;
- mem [ r + 5 ] .hh.b0 = 2 ;
- if ( mem [ r + 4 ] .cint == 0 )
- mem [ r + 6 ] .gr = 0.0 ;
- else if ( ( mem [ r + 5 ] .hh.b1 == 0 ) && ( mem [ r + 3 ] .cint -
- t > mem [ r + 4 ] .cint ) )
- mem [ r + 6 ] .gr = 1.0 ;
- else mem [ r + 6 ] .gr = ( mem [ r + 3 ] .cint - t ) / ((double)
- mem [ r + 4 ] .cint ) ;
- }
- mem [ r + 3 ] .cint = w ;
- mem [ r ] .hh.b0 = 1 ;
- }
- mem [ r + 4 ] .cint = 0 ;
- if ( u != memtop - 4 )
- {
- mem [ u ] .hh .v.RH = mem [ r ] .hh .v.RH ;
- mem [ r ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
- r = u ;
- }
- r = mem [ mem [ r ] .hh .v.RH ] .hh .v.RH ;
- s = mem [ mem [ s ] .hh .v.RH ] .hh .v.RH ;
- } while ( ! ( r == 0 ) ) ;
- }
- else if ( mem [ q ] .hh.b0 == 2 )
- {
- if ( ( mem [ q + 1 ] .cint == -1073741824L ) )
- mem [ q + 1 ] .cint = mem [ p + 1 ] .cint ;
- if ( ( mem [ q + 3 ] .cint == -1073741824L ) )
- mem [ q + 3 ] .cint = mem [ p + 3 ] .cint ;
- if ( ( mem [ q + 2 ] .cint == -1073741824L ) )
- mem [ q + 2 ] .cint = mem [ p + 2 ] .cint ;
- if ( o != 0 )
- {
- r = mem [ q ] .hh .v.RH ;
- mem [ q ] .hh .v.RH = 0 ;
- q = hpack ( q , 0 , 1 ) ;
- mem [ q + 4 ] .cint = o ;
- mem [ q ] .hh .v.RH = r ;
- mem [ s ] .hh .v.RH = q ;
- }
- }
- s = q ;
- q = mem [ q ] .hh .v.RH ;
- }
- flushnodelist ( p ) ;
- popalignment () ;
- auxsave = curlist .auxfield ;
- p = mem [ curlist .headfield ] .hh .v.RH ;
- q = curlist .tailfield ;
- popnest () ;
- if ( curlist .modefield == 203 )
- {
- doassignments () ;
- if ( curcmd != 3 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1163 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 888 ;
- helpline [ 0 ] = 889 ;
- }
- backerror () ;
- }
- else {
-
- getxtoken () ;
- if ( curcmd != 3 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1159 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 1160 ;
- helpline [ 0 ] = 1161 ;
- }
- backerror () ;
- }
- }
- popnest () ;
- {
- mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 6174 ] .cint
- ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- {
- mem [ curlist .tailfield ] .hh .v.RH = newparamglue ( 3 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- mem [ curlist .tailfield ] .hh .v.RH = p ;
- if ( p != 0 )
- curlist .tailfield = q ;
- {
- mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( eqtb [ 6175 ] .cint
- ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- {
- mem [ curlist .tailfield ] .hh .v.RH = newparamglue ( 4 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- curlist .auxfield .cint = auxsave .cint ;
- resumeafterdisplay () ;
- }
- else {
-
- curlist .auxfield = auxsave ;
- mem [ curlist .tailfield ] .hh .v.RH = p ;
- if ( p != 0 )
- curlist .tailfield = q ;
- if ( curlist .modefield == 1 )
- buildpage () ;
- }
- }
- void alignpeek ( )
- {/* 20 */ alignpeek_regmem
- lab20: alignstate = 1000000L ;
- do {
- getxtoken () ;
- } while ( ! ( curcmd != 10 ) ) ;
- if ( curcmd == 34 )
- {
- scanleftbrace () ;
- newsavelevel ( 7 ) ;
- if ( curlist .modefield == -1 )
- normalparagraph () ;
- }
- else if ( curcmd == 2 )
- finalign () ;
- else if ( ( curcmd == 5 ) && ( curchr == 258 ) )
- goto lab20 ;
- else {
-
- initrow () ;
- initcol () ;
- }
- }
- halfword zfiniteshrink ( p )
- halfword p ;
- {register halfword Result; finiteshrink_regmem
- halfword q ;
- if ( noshrinkerroryet )
- {
- noshrinkerroryet = false ;
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 910 ) ;
- }
- {
- helpptr = 5 ;
- helpline [ 4 ] = 911 ;
- helpline [ 3 ] = 912 ;
- helpline [ 2 ] = 913 ;
- helpline [ 1 ] = 914 ;
- helpline [ 0 ] = 915 ;
- }
- error () ;
- }
- q = newspec ( p ) ;
- mem [ q ] .hh.b1 = 0 ;
- deleteglueref ( p ) ;
- Result = q ;
- return(Result) ;
- }
- void ztrybreak ( pi , breaktype )
- integer pi ;
- smallnumber breaktype ;
- {/* 10 30 31 22 60 */ trybreak_regmem
- halfword r ;
- halfword prevr ;
- halfword oldl ;
- boolean nobreakyet ;
- halfword prevprevr ;
- halfword s ;
- halfword q ;
- halfword v ;
- integer t ;
- internalfontnumber f ;
- halfword l ;
- boolean noderstaysactive ;
- scaled linewidth ;
- schar fitclass ;
- halfword b ;
- integer d ;
- boolean artificialdemerits ;
- halfword savelink ;
- scaled shortfall ;
- if ( abs ( pi ) >= 10000 )
- if ( pi > 0 )
- goto lab10 ;
- else pi = -10000 ;
- nobreakyet = true ;
- prevr = memtop - 7 ;
- oldl = 0 ;
- curactivewidth [ 1 ] = activewidth [ 1 ] ;
- curactivewidth [ 2 ] = activewidth [ 2 ] ;
- curactivewidth [ 3 ] = activewidth [ 3 ] ;
- curactivewidth [ 4 ] = activewidth [ 4 ] ;
- curactivewidth [ 5 ] = activewidth [ 5 ] ;
- curactivewidth [ 6 ] = activewidth [ 6 ] ;
- while ( true ) {
-
- lab22: r = mem [ prevr ] .hh .v.RH ;
- if ( mem [ r ] .hh.b0 == 2 )
- {
- curactivewidth [ 1 ] = curactivewidth [ 1 ] + mem [ r + 1 ] .cint ;
- curactivewidth [ 2 ] = curactivewidth [ 2 ] + mem [ r + 2 ] .cint ;
- curactivewidth [ 3 ] = curactivewidth [ 3 ] + mem [ r + 3 ] .cint ;
- curactivewidth [ 4 ] = curactivewidth [ 4 ] + mem [ r + 4 ] .cint ;
- curactivewidth [ 5 ] = curactivewidth [ 5 ] + mem [ r + 5 ] .cint ;
- curactivewidth [ 6 ] = curactivewidth [ 6 ] + mem [ r + 6 ] .cint ;
- prevprevr = prevr ;
- prevr = r ;
- goto lab22 ;
- }
- {
- l = mem [ r + 1 ] .hh .v.LH ;
- if ( l > oldl )
- {
- if ( ( minimumdemerits < 1073741823L ) && ( ( oldl != easyline ) || (
- r == memtop - 7 ) ) )
- {
- if ( nobreakyet )
- {
- nobreakyet = false ;
- breakwidth [ 1 ] = background [ 1 ] ;
- breakwidth [ 2 ] = background [ 2 ] ;
- breakwidth [ 3 ] = background [ 3 ] ;
- breakwidth [ 4 ] = background [ 4 ] ;
- breakwidth [ 5 ] = background [ 5 ] ;
- breakwidth [ 6 ] = background [ 6 ] ;
- s = curp ;
- if ( breaktype > 0 )
- if ( curp != 0 )
- {
- t = mem [ curp ] .hh.b1 ;
- v = curp ;
- s = mem [ curp + 1 ] .hh .v.RH ;
- while ( t > 0 ) {
-
- decr ( t ) ;
- v = mem [ v ] .hh .v.RH ;
- if ( ( v >= himemmin ) )
- {
- f = mem [ v ] .hh.b0 ;
- breakwidth [ 1 ] = breakwidth [ 1 ] - fontinfo [ widthbase [
- f ] + fontinfo [ charbase [ f ] + mem [ v ] .hh.b1 ] .qqqq
- .b0 ] .cint ;
- }
- else switch ( mem [ v ] .hh.b0 )
- {case 6 :
- {
- f = mem [ v + 1 ] .hh.b0 ;
- breakwidth [ 1 ] = breakwidth [ 1 ] - fontinfo [ widthbase
- [ f ] + fontinfo [ charbase [ f ] + mem [ v + 1 ] .hh.b1 ]
- .qqqq .b0 ] .cint ;
- }
- break ;
- case 0 :
- case 1 :
- case 2 :
- case 11 :
- breakwidth [ 1 ] = breakwidth [ 1 ] - mem [ v + 1 ] .cint ;
- break ;
- default:
- confusion ( 916 ) ;
- break ;
- }
- }
- while ( s != 0 ) {
-
- if ( ( s >= himemmin ) )
- {
- f = mem [ s ] .hh.b0 ;
- breakwidth [ 1 ] = breakwidth [ 1 ] + fontinfo [ widthbase [
- f ] + fontinfo [ charbase [ f ] + mem [ s ] .hh.b1 ] .qqqq
- .b0 ] .cint ;
- }
- else switch ( mem [ s ] .hh.b0 )
- {case 6 :
- {
- f = mem [ s + 1 ] .hh.b0 ;
- breakwidth [ 1 ] = breakwidth [ 1 ] + fontinfo [ widthbase
- [ f ] + fontinfo [ charbase [ f ] + mem [ s + 1 ] .hh.b1 ]
- .qqqq .b0 ] .cint ;
- }
- break ;
- case 0 :
- case 1 :
- case 2 :
- breakwidth [ 1 ] = breakwidth [ 1 ] + mem [ s + 1 ] .cint ;
- break ;
- case 11 :
- if ( ( t == 0 ) && ( mem [ s ] .hh.b1 != 2 ) )
- t = -1 ;
- else breakwidth [ 1 ] = breakwidth [ 1 ] + mem [ s + 1 ]
- .cint ;
- break ;
- default:
- confusion ( 917 ) ;
- break ;
- }
- incr ( t ) ;
- s = mem [ s ] .hh .v.RH ;
- }
- breakwidth [ 1 ] = breakwidth [ 1 ] + discwidth ;
- if ( t == 0 )
- s = mem [ v ] .hh .v.RH ;
- }
- while ( s != 0 ) {
-
- if ( ( s >= himemmin ) )
- goto lab30 ;
- switch ( mem [ s ] .hh.b0 )
- {case 10 :
- {
- v = mem [ s + 1 ] .hh .v.LH ;
- breakwidth [ 1 ] = breakwidth [ 1 ] - mem [ v + 1 ] .cint ;
- breakwidth [ 2 + mem [ v ] .hh.b0 ] = breakwidth [ 2 + mem [
- v ] .hh.b0 ] - mem [ v + 2 ] .cint ;
- breakwidth [ 6 ] = breakwidth [ 6 ] - mem [ v + 3 ] .cint ;
- }
- break ;
- case 12 :
- ;
- break ;
- case 9 :
- case 11 :
- if ( mem [ s ] .hh.b1 == 2 )
- goto lab30 ;
- else breakwidth [ 1 ] = breakwidth [ 1 ] - mem [ s + 1 ] .cint
- ;
- break ;
- default:
- goto lab30 ;
- break ;
- }
- s = mem [ s ] .hh .v.RH ;
- }
- lab30: ;
- }
- if ( mem [ prevr ] .hh.b0 == 2 )
- {
- mem [ prevr + 1 ] .cint = mem [ prevr + 1 ] .cint - curactivewidth
- [ 1 ] + breakwidth [ 1 ] ;
- mem [ prevr + 2 ] .cint = mem [ prevr + 2 ] .cint - curactivewidth
- [ 2 ] + breakwidth [ 2 ] ;
- mem [ prevr + 3 ] .cint = mem [ prevr + 3 ] .cint - curactivewidth
- [ 3 ] + breakwidth [ 3 ] ;
- mem [ prevr + 4 ] .cint = mem [ prevr + 4 ] .cint - curactivewidth
- [ 4 ] + breakwidth [ 4 ] ;
- mem [ prevr + 5 ] .cint = mem [ prevr + 5 ] .cint - curactivewidth
- [ 5 ] + breakwidth [ 5 ] ;
- mem [ prevr + 6 ] .cint = mem [ prevr + 6 ] .cint - curactivewidth
- [ 6 ] + breakwidth [ 6 ] ;
- }
- else if ( prevr == memtop - 7 )
- {
- activewidth [ 1 ] = breakwidth [ 1 ] ;
- activewidth [ 2 ] = breakwidth [ 2 ] ;
- activewidth [ 3 ] = breakwidth [ 3 ] ;
- activewidth [ 4 ] = breakwidth [ 4 ] ;
- activewidth [ 5 ] = breakwidth [ 5 ] ;
- activewidth [ 6 ] = breakwidth [ 6 ] ;
- }
- else {
-
- q = getnode ( 7 ) ;
- mem [ q ] .hh .v.RH = r ;
- mem [ q ] .hh.b0 = 2 ;
- mem [ q ] .hh.b1 = 0 ;
- mem [ q + 1 ] .cint = breakwidth [ 1 ] - curactivewidth [ 1 ] ;
- mem [ q + 2 ] .cint = breakwidth [ 2 ] - curactivewidth [ 2 ] ;
- mem [ q + 3 ] .cint = breakwidth [ 3 ] - curactivewidth [ 3 ] ;
- mem [ q + 4 ] .cint = breakwidth [ 4 ] - curactivewidth [ 4 ] ;
- mem [ q + 5 ] .cint = breakwidth [ 5 ] - curactivewidth [ 5 ] ;
- mem [ q + 6 ] .cint = breakwidth [ 6 ] - curactivewidth [ 6 ] ;
- mem [ prevr ] .hh .v.RH = q ;
- prevprevr = prevr ;
- prevr = q ;
- }
- if ( abs ( eqtb [ 6179 ] .cint ) >= 1073741823L - minimumdemerits )
- minimumdemerits = 1073741822L ;
- else minimumdemerits = minimumdemerits + abs ( eqtb [ 6179 ] .cint )
- ;
- {register integer for_end; fitclass = 0 ; for_end = 3 ; if (
- fitclass <= for_end) do
- {
- if ( minimaldemerits [ fitclass ] <= minimumdemerits )
- {
- q = getnode ( 2 ) ;
- mem [ q ] .hh .v.RH = passive ;
- passive = q ;
- mem [ q + 1 ] .hh .v.RH = curp ;
- ;
- #ifdef STAT
- incr ( passnumber ) ;
- mem [ q ] .hh .v.LH = passnumber ;
- #endif /* STAT */
- mem [ q + 1 ] .hh .v.LH = bestplace [ fitclass ] ;
- q = getnode ( 3 ) ;
- mem [ q + 1 ] .hh .v.RH = passive ;
- mem [ q + 1 ] .hh .v.LH = bestplline [ fitclass ] + 1 ;
- mem [ q ] .hh.b1 = fitclass ;
- mem [ q ] .hh.b0 = breaktype ;
- mem [ q + 2 ] .cint = minimaldemerits [ fitclass ] ;
- mem [ q ] .hh .v.RH = r ;
- mem [ prevr ] .hh .v.RH = q ;
- prevr = q ;
- ;
- #ifdef STAT
- if ( eqtb [ 6195 ] .cint > 0 )
- {
- printnl ( 918 ) ;
- printint ( mem [ passive ] .hh .v.LH ) ;
- print ( 919 ) ;
- printint ( mem [ q + 1 ] .hh .v.LH - 1 ) ;
- printchar ( 46 ) ;
- printint ( fitclass ) ;
- if ( breaktype == 1 )
- printchar ( 45 ) ;
- print ( 920 ) ;
- printint ( mem [ q + 2 ] .cint ) ;
- print ( 921 ) ;
- if ( mem [ passive + 1 ] .hh .v.LH == 0 )
- printchar ( 48 ) ;
- else printint ( mem [ mem [ passive + 1 ] .hh .v.LH ] .hh
- .v.LH ) ;
- }
- #endif /* STAT */
- }
- minimaldemerits [ fitclass ] = 1073741823L ;
- }
- while ( fitclass++ < for_end ) ; }
- minimumdemerits = 1073741823L ;
- if ( r != memtop - 7 )
- {
- q = getnode ( 7 ) ;
- mem [ q ] .hh .v.RH = r ;
- mem [ q ] .hh.b0 = 2 ;
- mem [ q ] .hh.b1 = 0 ;
- mem [ q + 1 ] .cint = curactivewidth [ 1 ] - breakwidth [ 1 ] ;
- mem [ q + 2 ] .cint = curactivewidth [ 2 ] - breakwidth [ 2 ] ;
- mem [ q + 3 ] .cint = curactivewidth [ 3 ] - breakwidth [ 3 ] ;
- mem [ q + 4 ] .cint = curactivewidth [ 4 ] - breakwidth [ 4 ] ;
- mem [ q + 5 ] .cint = curactivewidth [ 5 ] - breakwidth [ 5 ] ;
- mem [ q + 6 ] .cint = curactivewidth [ 6 ] - breakwidth [ 6 ] ;
- mem [ prevr ] .hh .v.RH = q ;
- prevprevr = prevr ;
- prevr = q ;
- }
- }
- if ( r == memtop - 7 )
- goto lab10 ;
- if ( l > easyline )
- {
- linewidth = secondwidth ;
- oldl = 65534L ;
- }
- else {
-
- oldl = l ;
- if ( l > lastspecialline )
- linewidth = secondwidth ;
- else if ( eqtb [ 4312 ] .hh .v.RH == 0 )
- linewidth = firstwidth ;
- else linewidth = mem [ eqtb [ 4312 ] .hh .v.RH + 2 * l ] .cint ;
- }
- }
- }
- {
- artificialdemerits = false ;
- shortfall = linewidth - curactivewidth [ 1 ] ;
- if ( shortfall > 0 )
- if ( ( curactivewidth [ 3 ] != 0 ) || ( curactivewidth [ 4 ] != 0 ) || (
- curactivewidth [ 5 ] != 0 ) )
- {
- b = 0 ;
- fitclass = 2 ;
- }
- else {
-
- if ( shortfall > 7230584L )
- if ( curactivewidth [ 2 ] < 1663497L )
- {
- b = 10000 ;
- fitclass = 0 ;
- goto lab31 ;
- }
- b = badness ( shortfall , curactivewidth [ 2 ] ) ;
- if ( b > 12 )
- if ( b > 99 )
- fitclass = 0 ;
- else fitclass = 1 ;
- else fitclass = 2 ;
- lab31: ;
- }
- else {
-
- if ( - (integer) shortfall > curactivewidth [ 6 ] )
- b = 10001 ;
- else b = badness ( - (integer) shortfall , curactivewidth [ 6 ] ) ;
- if ( b > 12 )
- fitclass = 3 ;
- else fitclass = 2 ;
- }
- if ( ( b > 10000 ) || ( pi == -10000 ) )
- {
- if ( finalpass && ( minimumdemerits == 1073741823L ) && ( mem [ r ]
- .hh .v.RH == memtop - 7 ) && ( prevr == memtop - 7 ) )
- artificialdemerits = true ;
- else if ( b > threshold )
- goto lab60 ;
- noderstaysactive = false ;
- }
- else {
-
- prevr = r ;
- if ( b > threshold )
- goto lab22 ;
- noderstaysactive = true ;
- }
- if ( artificialdemerits )
- d = 0 ;
- else {
-
- d = eqtb [ 6165 ] .cint + b ;
- if ( abs ( d ) >= 10000 )
- d = 100000000L ;
- else d = d * d ;
- if ( pi != 0 )
- if ( pi > 0 )
- d = d + pi * pi ;
- else if ( pi > -10000 )
- d = d - pi * pi ;
- if ( ( breaktype == 1 ) && ( mem [ r ] .hh.b0 == 1 ) )
- if ( curp != 0 )
- d = d + eqtb [ 6177 ] .cint ;
- else d = d + eqtb [ 6178 ] .cint ;
- if ( abs ( toint ( fitclass ) - toint ( mem [ r ] .hh.b1 ) ) > 1 )
- d = d + eqtb [ 6179 ] .cint ;
- }
- ;
- #ifdef STAT
- if ( eqtb [ 6195 ] .cint > 0 )
- {
- if ( printednode != curp )
- {
- printnl ( 335 ) ;
- if ( curp == 0 )
- shortdisplay ( mem [ printednode ] .hh .v.RH ) ;
- else {
-
- savelink = mem [ curp ] .hh .v.RH ;
- mem [ curp ] .hh .v.RH = 0 ;
- printnl ( 335 ) ;
- shortdisplay ( mem [ printednode ] .hh .v.RH ) ;
- mem [ curp ] .hh .v.RH = savelink ;
- }
- printednode = curp ;
- }
- printnl ( 64 ) ;
- if ( curp == 0 )
- printesc ( 593 ) ;
- else if ( mem [ curp ] .hh.b0 != 10 )
- {
- if ( mem [ curp ] .hh.b0 == 12 )
- printesc ( 527 ) ;
- else if ( mem [ curp ] .hh.b0 == 7 )
- printesc ( 346 ) ;
- else if ( mem [ curp ] .hh.b0 == 11 )
- printesc ( 337 ) ;
- else printesc ( 340 ) ;
- }
- print ( 922 ) ;
- if ( mem [ r + 1 ] .hh .v.RH == 0 )
- printchar ( 48 ) ;
- else printint ( mem [ mem [ r + 1 ] .hh .v.RH ] .hh .v.LH ) ;
- print ( 923 ) ;
- if ( b > 10000 )
- printchar ( 42 ) ;
- else printint ( b ) ;
- print ( 924 ) ;
- printint ( pi ) ;
- print ( 925 ) ;
- if ( artificialdemerits )
- printchar ( 42 ) ;
- else printint ( d ) ;
- }
- #endif /* STAT */
- d = d + mem [ r + 2 ] .cint ;
- if ( d <= minimaldemerits [ fitclass ] )
- {
- minimaldemerits [ fitclass ] = d ;
- bestplace [ fitclass ] = mem [ r + 1 ] .hh .v.RH ;
- bestplline [ fitclass ] = l ;
- if ( d < minimumdemerits )
- minimumdemerits = d ;
- }
- if ( noderstaysactive )
- goto lab22 ;
- lab60: mem [ prevr ] .hh .v.RH = mem [ r ] .hh .v.RH ;
- freenode ( r , 3 ) ;
- if ( prevr == memtop - 7 )
- {
- r = mem [ memtop - 7 ] .hh .v.RH ;
- if ( mem [ r ] .hh.b0 == 2 )
- {
- activewidth [ 1 ] = activewidth [ 1 ] + mem [ r + 1 ] .cint ;
- activewidth [ 2 ] = activewidth [ 2 ] + mem [ r + 2 ] .cint ;
- activewidth [ 3 ] = activewidth [ 3 ] + mem [ r + 3 ] .cint ;
- activewidth [ 4 ] = activewidth [ 4 ] + mem [ r + 4 ] .cint ;
- activewidth [ 5 ] = activewidth [ 5 ] + mem [ r + 5 ] .cint ;
- activewidth [ 6 ] = activewidth [ 6 ] + mem [ r + 6 ] .cint ;
- curactivewidth [ 1 ] = activewidth [ 1 ] ;
- curactivewidth [ 2 ] = activewidth [ 2 ] ;
- curactivewidth [ 3 ] = activewidth [ 3 ] ;
- curactivewidth [ 4 ] = activewidth [ 4 ] ;
- curactivewidth [ 5 ] = activewidth [ 5 ] ;
- curactivewidth [ 6 ] = activewidth [ 6 ] ;
- mem [ memtop - 7 ] .hh .v.RH = mem [ r ] .hh .v.RH ;
- freenode ( r , 7 ) ;
- }
- }
- else if ( mem [ prevr ] .hh.b0 == 2 )
- {
- r = mem [ prevr ] .hh .v.RH ;
- if ( r == memtop - 7 )
- {
- curactivewidth [ 1 ] = curactivewidth [ 1 ] - mem [ prevr + 1 ]
- .cint ;
- curactivewidth [ 2 ] = curactivewidth [ 2 ] - mem [ prevr + 2 ]
- .cint ;
- curactivewidth [ 3 ] = curactivewidth [ 3 ] - mem [ prevr + 3 ]
- .cint ;
- curactivewidth [ 4 ] = curactivewidth [ 4 ] - mem [ prevr + 4 ]
- .cint ;
- curactivewidth [ 5 ] = curactivewidth [ 5 ] - mem [ prevr + 5 ]
- .cint ;
- curactivewidth [ 6 ] = curactivewidth [ 6 ] - mem [ prevr + 6 ]
- .cint ;
- mem [ prevprevr ] .hh .v.RH = memtop - 7 ;
- freenode ( prevr , 7 ) ;
- prevr = prevprevr ;
- }
- else if ( mem [ r ] .hh.b0 == 2 )
- {
- curactivewidth [ 1 ] = curactivewidth [ 1 ] + mem [ r + 1 ] .cint ;
- curactivewidth [ 2 ] = curactivewidth [ 2 ] + mem [ r + 2 ] .cint ;
- curactivewidth [ 3 ] = curactivewidth [ 3 ] + mem [ r + 3 ] .cint ;
- curactivewidth [ 4 ] = curactivewidth [ 4 ] + mem [ r + 4 ] .cint ;
- curactivewidth [ 5 ] = curactivewidth [ 5 ] + mem [ r + 5 ] .cint ;
- curactivewidth [ 6 ] = curactivewidth [ 6 ] + mem [ r + 6 ] .cint ;
- mem [ prevr + 1 ] .cint = mem [ prevr + 1 ] .cint + mem [ r + 1 ]
- .cint ;
- mem [ prevr + 2 ] .cint = mem [ prevr + 2 ] .cint + mem [ r + 2 ]
- .cint ;
- mem [ prevr + 3 ] .cint = mem [ prevr + 3 ] .cint + mem [ r + 3 ]
- .cint ;
- mem [ prevr + 4 ] .cint = mem [ prevr + 4 ] .cint + mem [ r + 4 ]
- .cint ;
- mem [ prevr + 5 ] .cint = mem [ prevr + 5 ] .cint + mem [ r + 5 ]
- .cint ;
- mem [ prevr + 6 ] .cint = mem [ prevr + 6 ] .cint + mem [ r + 6 ]
- .cint ;
- mem [ prevr ] .hh .v.RH = mem [ r ] .hh .v.RH ;
- freenode ( r , 7 ) ;
- }
- }
- }
- }
- lab10:
- ;
- #ifdef STAT
- if ( curp == printednode )
- if ( curp != 0 )
- if ( mem [ curp ] .hh.b0 == 7 )
- {
- t = mem [ curp ] .hh.b1 ;
- while ( t > 0 ) {
-
- decr ( t ) ;
- printednode = mem [ printednode ] .hh .v.RH ;
- }
- }
- #endif /* STAT */
- }
-