home *** CD-ROM | disk | FTP | other *** search
- #define EXTERN extern
- #include "texd.h"
-
- halfword zvsplit ( n , h )
- eightbits n ;
- scaled h ;
- {/* 10 30 */ register halfword Result; vsplit_regmem
- halfword v ;
- halfword p ;
- halfword q ;
- v = eqtb [ 4578 + n ] .hh .v.RH ;
- if ( curmark [ 3 ] != 0 )
- {
- deletetokenref ( curmark [ 3 ] ) ;
- curmark [ 3 ] = 0 ;
- deletetokenref ( curmark [ 4 ] ) ;
- curmark [ 4 ] = 0 ;
- }
- if ( v == 0 )
- {
- Result = 0 ;
- return(Result) ;
- }
- if ( mem [ v ] .hh.b0 != 1 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 335 ) ;
- }
- printesc ( 958 ) ;
- print ( 959 ) ;
- printesc ( 960 ) ;
- {
- helpptr = 2 ;
- helpline [ 1 ] = 961 ;
- helpline [ 0 ] = 962 ;
- }
- error () ;
- Result = 0 ;
- return(Result) ;
- }
- q = vertbreak ( mem [ v + 5 ] .hh .v.RH , h , eqtb [ 6736 ] .cint ) ;
- p = mem [ v + 5 ] .hh .v.RH ;
- if ( p == q )
- mem [ v + 5 ] .hh .v.RH = 0 ;
- else while ( true ) {
-
- if ( mem [ p ] .hh.b0 == 4 )
- if ( curmark [ 3 ] == 0 )
- {
- curmark [ 3 ] = mem [ p + 1 ] .cint ;
- curmark [ 4 ] = curmark [ 3 ] ;
- mem [ curmark [ 3 ] ] .hh .v.LH = mem [ curmark [ 3 ] ] .hh .v.LH + 2 ;
- }
- else {
-
- deletetokenref ( curmark [ 4 ] ) ;
- curmark [ 4 ] = mem [ p + 1 ] .cint ;
- incr ( mem [ curmark [ 4 ] ] .hh .v.LH ) ;
- }
- if ( mem [ p ] .hh .v.RH == q )
- {
- mem [ p ] .hh .v.RH = 0 ;
- goto lab30 ;
- }
- p = mem [ p ] .hh .v.RH ;
- }
- lab30: ;
- q = prunepagetop ( q ) ;
- p = mem [ v + 5 ] .hh .v.RH ;
- freenode ( v , 7 ) ;
- if ( q == 0 )
- eqtb [ 4578 + n ] .hh .v.RH = 0 ;
- else eqtb [ 4578 + n ] .hh .v.RH = vpackage ( q , 0 , 1 , 1073741823L ) ;
- Result = vpackage ( p , h , 0 , eqtb [ 6736 ] .cint ) ;
- return(Result) ;
- }
- void printtotals ( )
- {printtotals_regmem
- printscaled ( pagesofar [ 1 ] ) ;
- if ( pagesofar [ 2 ] != 0 )
- {
- print ( 310 ) ;
- printscaled ( pagesofar [ 2 ] ) ;
- print ( 335 ) ;
- }
- if ( pagesofar [ 3 ] != 0 )
- {
- print ( 310 ) ;
- printscaled ( pagesofar [ 3 ] ) ;
- print ( 309 ) ;
- }
- if ( pagesofar [ 4 ] != 0 )
- {
- print ( 310 ) ;
- printscaled ( pagesofar [ 4 ] ) ;
- print ( 971 ) ;
- }
- if ( pagesofar [ 5 ] != 0 )
- {
- print ( 310 ) ;
- printscaled ( pagesofar [ 5 ] ) ;
- print ( 972 ) ;
- }
- if ( pagesofar [ 6 ] != 0 )
- {
- print ( 311 ) ;
- printscaled ( pagesofar [ 6 ] ) ;
- }
- }
- void zfreezepagespecs ( s )
- smallnumber s ;
- {freezepagespecs_regmem
- pagecontents = s ;
- pagesofar [ 0 ] = eqtb [ 6734 ] .cint ;
- pagemaxdepth = eqtb [ 6735 ] .cint ;
- pagesofar [ 7 ] = 0 ;
- pagesofar [ 1 ] = 0 ;
- pagesofar [ 2 ] = 0 ;
- pagesofar [ 3 ] = 0 ;
- pagesofar [ 4 ] = 0 ;
- pagesofar [ 5 ] = 0 ;
- pagesofar [ 6 ] = 0 ;
- leastpagecost = 1073741823L ;
- ;
- #ifdef STAT
- if ( eqtb [ 6196 ] .cint > 0 )
- {
- begindiagnostic () ;
- printnl ( 980 ) ;
- printscaled ( pagesofar [ 0 ] ) ;
- print ( 981 ) ;
- printscaled ( pagemaxdepth ) ;
- enddiagnostic ( false ) ;
- }
- #endif /* STAT */
- }
- void zboxerror ( n )
- eightbits n ;
- {boxerror_regmem
- error () ;
- begindiagnostic () ;
- printnl ( 829 ) ;
- showbox ( eqtb [ 4578 + n ] .hh .v.RH ) ;
- enddiagnostic ( true ) ;
- flushnodelist ( eqtb [ 4578 + n ] .hh .v.RH ) ;
- eqtb [ 4578 + n ] .hh .v.RH = 0 ;
- }
- void zensurevbox ( n )
- eightbits n ;
- {ensurevbox_regmem
- halfword p ;
- p = eqtb [ 4578 + n ] .hh .v.RH ;
- if ( p != 0 )
- if ( mem [ p ] .hh.b0 == 0 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 982 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 983 ;
- helpline [ 1 ] = 984 ;
- helpline [ 0 ] = 985 ;
- }
- boxerror ( n ) ;
- }
- }
- void zfireup ( c )
- halfword c ;
- {/* 10 */ fireup_regmem
- halfword p, q, r, s ;
- halfword prevp ;
- unsigned char n ;
- boolean wait ;
- integer savevbadness ;
- scaled savevfuzz ;
- halfword savesplittopskip ;
- if ( mem [ bestpagebreak ] .hh.b0 == 12 )
- {
- geqworddefine ( 6202 , mem [ bestpagebreak + 1 ] .cint ) ;
- mem [ bestpagebreak + 1 ] .cint = 10000 ;
- }
- else geqworddefine ( 6202 , 10000 ) ;
- if ( curmark [ 2 ] != 0 )
- {
- if ( curmark [ 0 ] != 0 )
- deletetokenref ( curmark [ 0 ] ) ;
- curmark [ 0 ] = curmark [ 2 ] ;
- incr ( mem [ curmark [ 0 ] ] .hh .v.LH ) ;
- deletetokenref ( curmark [ 1 ] ) ;
- curmark [ 1 ] = 0 ;
- }
- if ( c == bestpagebreak )
- bestpagebreak = 0 ;
- if ( eqtb [ 4833 ] .hh .v.RH != 0 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 335 ) ;
- }
- printesc ( 405 ) ;
- print ( 996 ) ;
- {
- helpptr = 2 ;
- helpline [ 1 ] = 997 ;
- helpline [ 0 ] = 985 ;
- }
- boxerror ( 255 ) ;
- }
- insertpenalties = 0 ;
- savesplittopskip = eqtb [ 3792 ] .hh .v.RH ;
- if ( eqtb [ 6216 ] .cint <= 0 )
- {
- r = mem [ memtop ] .hh .v.RH ;
- while ( r != memtop ) {
-
- if ( mem [ r + 2 ] .hh .v.LH != 0 )
- {
- n = mem [ r ] .hh.b1 ;
- ensurevbox ( n ) ;
- if ( eqtb [ 4578 + n ] .hh .v.RH == 0 )
- eqtb [ 4578 + n ] .hh .v.RH = newnullbox () ;
- p = eqtb [ 4578 + n ] .hh .v.RH + 5 ;
- while ( mem [ p ] .hh .v.RH != 0 ) p = mem [ p ] .hh .v.RH ;
- mem [ r + 2 ] .hh .v.RH = p ;
- }
- r = mem [ r ] .hh .v.RH ;
- }
- }
- q = memtop - 4 ;
- mem [ q ] .hh .v.RH = 0 ;
- prevp = memtop - 2 ;
- p = mem [ prevp ] .hh .v.RH ;
- while ( p != bestpagebreak ) {
-
- if ( mem [ p ] .hh.b0 == 3 )
- {
- if ( eqtb [ 6216 ] .cint <= 0 )
- {
- r = mem [ memtop ] .hh .v.RH ;
- while ( mem [ r ] .hh.b1 != mem [ p ] .hh.b1 ) r = mem [ r ] .hh .v.RH
- ;
- if ( mem [ r + 2 ] .hh .v.LH == 0 )
- wait = true ;
- else {
-
- wait = false ;
- s = mem [ r + 2 ] .hh .v.RH ;
- mem [ s ] .hh .v.RH = mem [ p + 4 ] .hh .v.LH ;
- if ( mem [ r + 2 ] .hh .v.LH == p )
- {
- if ( mem [ r ] .hh.b0 == 1 )
- if ( ( mem [ r + 1 ] .hh .v.LH == p ) && ( mem [ r + 1 ] .hh .v.RH
- != 0 ) )
- {
- while ( mem [ s ] .hh .v.RH != mem [ r + 1 ] .hh .v.RH ) s = mem
- [ s ] .hh .v.RH ;
- mem [ s ] .hh .v.RH = 0 ;
- eqtb [ 3792 ] .hh .v.RH = mem [ p + 4 ] .hh .v.RH ;
- mem [ p + 4 ] .hh .v.LH = prunepagetop ( mem [ r + 1 ] .hh .v.RH
- ) ;
- if ( mem [ p + 4 ] .hh .v.LH != 0 )
- {
- tempptr = vpackage ( mem [ p + 4 ] .hh .v.LH , 0 , 1 ,
- 1073741823L ) ;
- mem [ p + 3 ] .cint = mem [ tempptr + 3 ] .cint + mem [
- tempptr + 2 ] .cint ;
- freenode ( tempptr , 7 ) ;
- wait = true ;
- }
- }
- mem [ r + 2 ] .hh .v.LH = 0 ;
- n = mem [ r ] .hh.b1 ;
- tempptr = mem [ eqtb [ 4578 + n ] .hh .v.RH + 5 ] .hh .v.RH ;
- freenode ( eqtb [ 4578 + n ] .hh .v.RH , 7 ) ;
- eqtb [ 4578 + n ] .hh .v.RH = vpackage ( tempptr , 0 , 1 ,
- 1073741823L ) ;
- }
- else {
-
- while ( mem [ s ] .hh .v.RH != 0 ) s = mem [ s ] .hh .v.RH ;
- mem [ r + 2 ] .hh .v.RH = s ;
- }
- }
- mem [ prevp ] .hh .v.RH = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.RH = 0 ;
- if ( wait )
- {
- mem [ q ] .hh .v.RH = p ;
- q = p ;
- incr ( insertpenalties ) ;
- }
- else {
-
- deleteglueref ( mem [ p + 4 ] .hh .v.RH ) ;
- freenode ( p , 5 ) ;
- }
- p = prevp ;
- }
- }
- else if ( mem [ p ] .hh.b0 == 4 )
- {
- if ( curmark [ 1 ] == 0 )
- {
- curmark [ 1 ] = mem [ p + 1 ] .cint ;
- incr ( mem [ curmark [ 1 ] ] .hh .v.LH ) ;
- }
- if ( curmark [ 2 ] != 0 )
- deletetokenref ( curmark [ 2 ] ) ;
- curmark [ 2 ] = mem [ p + 1 ] .cint ;
- incr ( mem [ curmark [ 2 ] ] .hh .v.LH ) ;
- }
- prevp = p ;
- p = mem [ prevp ] .hh .v.RH ;
- }
- eqtb [ 3792 ] .hh .v.RH = savesplittopskip ;
- if ( p != 0 )
- {
- if ( mem [ memtop - 1 ] .hh .v.RH == 0 )
- if ( nestptr == 0 )
- curlist .tailfield = pagetail ;
- else nest [ 0 ] .tailfield = pagetail ;
- mem [ pagetail ] .hh .v.RH = mem [ memtop - 1 ] .hh .v.RH ;
- mem [ memtop - 1 ] .hh .v.RH = p ;
- mem [ prevp ] .hh .v.RH = 0 ;
- }
- savevbadness = eqtb [ 6190 ] .cint ;
- eqtb [ 6190 ] .cint = 10000 ;
- savevfuzz = eqtb [ 6739 ] .cint ;
- eqtb [ 6739 ] .cint = 1073741823L ;
- eqtb [ 4833 ] .hh .v.RH = vpackage ( mem [ memtop - 2 ] .hh .v.RH , bestsize
- , 0 , pagemaxdepth ) ;
- eqtb [ 6190 ] .cint = savevbadness ;
- eqtb [ 6739 ] .cint = savevfuzz ;
- if ( lastglue != 65535L )
- deleteglueref ( lastglue ) ;
- pagecontents = 0 ;
- pagetail = memtop - 2 ;
- mem [ memtop - 2 ] .hh .v.RH = 0 ;
- lastglue = 65535L ;
- lastpenalty = 0 ;
- lastkern = 0 ;
- pagesofar [ 7 ] = 0 ;
- pagemaxdepth = 0 ;
- if ( q != memtop - 4 )
- {
- mem [ memtop - 2 ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
- pagetail = q ;
- }
- r = mem [ memtop ] .hh .v.RH ;
- while ( r != memtop ) {
-
- q = mem [ r ] .hh .v.RH ;
- freenode ( r , 4 ) ;
- r = q ;
- }
- mem [ memtop ] .hh .v.RH = memtop ;
- if ( ( curmark [ 0 ] != 0 ) && ( curmark [ 1 ] == 0 ) )
- {
- curmark [ 1 ] = curmark [ 0 ] ;
- incr ( mem [ curmark [ 0 ] ] .hh .v.LH ) ;
- }
- if ( eqtb [ 4313 ] .hh .v.RH != 0 )
- if ( deadcycles >= eqtb [ 6203 ] .cint )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 998 ) ;
- }
- printint ( deadcycles ) ;
- print ( 999 ) ;
- {
- helpptr = 3 ;
- helpline [ 2 ] = 1000 ;
- helpline [ 1 ] = 1001 ;
- helpline [ 0 ] = 1002 ;
- }
- error () ;
- }
- else {
-
- outputactive = true ;
- incr ( deadcycles ) ;
- pushnest () ;
- curlist .modefield = -1 ;
- curlist .auxfield .cint = -65536000L ;
- curlist .mlfield = - (integer) line ;
- begintokenlist ( eqtb [ 4313 ] .hh .v.RH , 6 ) ;
- newsavelevel ( 8 ) ;
- normalparagraph () ;
- scanleftbrace () ;
- return ;
- }
- {
- if ( mem [ memtop - 2 ] .hh .v.RH != 0 )
- {
- if ( mem [ memtop - 1 ] .hh .v.RH == 0 )
- if ( nestptr == 0 )
- curlist .tailfield = pagetail ;
- else nest [ 0 ] .tailfield = pagetail ;
- else mem [ pagetail ] .hh .v.RH = mem [ memtop - 1 ] .hh .v.RH ;
- mem [ memtop - 1 ] .hh .v.RH = mem [ memtop - 2 ] .hh .v.RH ;
- mem [ memtop - 2 ] .hh .v.RH = 0 ;
- pagetail = memtop - 2 ;
- }
- shipout ( eqtb [ 4833 ] .hh .v.RH ) ;
- eqtb [ 4833 ] .hh .v.RH = 0 ;
- }
- }
- void buildpage ( )
- {/* 10 30 31 22 80 90 */ buildpage_regmem
- halfword p ;
- halfword q, r ;
- integer b, c ;
- integer pi ;
- unsigned char n ;
- scaled delta, h, w ;
- if ( ( mem [ memtop - 1 ] .hh .v.RH == 0 ) || outputactive )
- return ;
- do {
- lab22: p = mem [ memtop - 1 ] .hh .v.RH ;
- if ( lastglue != 65535L )
- deleteglueref ( lastglue ) ;
- lastpenalty = 0 ;
- lastkern = 0 ;
- if ( mem [ p ] .hh.b0 == 10 )
- {
- lastglue = mem [ p + 1 ] .hh .v.LH ;
- incr ( mem [ lastglue ] .hh .v.RH ) ;
- }
- else {
-
- lastglue = 65535L ;
- if ( mem [ p ] .hh.b0 == 12 )
- lastpenalty = mem [ p + 1 ] .cint ;
- else if ( mem [ p ] .hh.b0 == 11 )
- lastkern = mem [ p + 1 ] .cint ;
- }
- switch ( mem [ p ] .hh.b0 )
- {case 0 :
- case 1 :
- case 2 :
- if ( pagecontents < 2 )
- {
- if ( pagecontents == 0 )
- freezepagespecs ( 2 ) ;
- else pagecontents = 2 ;
- q = newskipparam ( 9 ) ;
- if ( mem [ tempptr + 1 ] .cint > mem [ p + 3 ] .cint )
- mem [ tempptr + 1 ] .cint = mem [ tempptr + 1 ] .cint - mem [ p + 3 ]
- .cint ;
- else mem [ tempptr + 1 ] .cint = 0 ;
- mem [ q ] .hh .v.RH = p ;
- mem [ memtop - 1 ] .hh .v.RH = q ;
- goto lab22 ;
- }
- else {
-
- pagesofar [ 1 ] = pagesofar [ 1 ] + pagesofar [ 7 ] + mem [ p + 3 ]
- .cint ;
- pagesofar [ 7 ] = mem [ p + 2 ] .cint ;
- goto lab80 ;
- }
- break ;
- case 8 :
- goto lab80 ;
- break ;
- case 10 :
- if ( pagecontents < 2 )
- goto lab31 ;
- else if ( ( mem [ pagetail ] .hh.b0 < 9 ) )
- pi = 0 ;
- else goto lab90 ;
- break ;
- case 11 :
- if ( pagecontents < 2 )
- goto lab31 ;
- else if ( mem [ p ] .hh .v.RH == 0 )
- return ;
- else if ( mem [ mem [ p ] .hh .v.RH ] .hh.b0 == 10 )
- pi = 0 ;
- else goto lab90 ;
- break ;
- case 12 :
- if ( pagecontents < 2 )
- goto lab31 ;
- else pi = mem [ p + 1 ] .cint ;
- break ;
- case 4 :
- goto lab80 ;
- break ;
- case 3 :
- {
- if ( pagecontents == 0 )
- freezepagespecs ( 1 ) ;
- n = mem [ p ] .hh.b1 ;
- r = memtop ;
- while ( n >= mem [ mem [ r ] .hh .v.RH ] .hh.b1 ) r = mem [ r ] .hh
- .v.RH ;
- n = n ;
- if ( mem [ r ] .hh.b1 != n )
- {
- q = getnode ( 4 ) ;
- mem [ q ] .hh .v.RH = mem [ r ] .hh .v.RH ;
- mem [ r ] .hh .v.RH = q ;
- r = q ;
- mem [ r ] .hh.b1 = n ;
- mem [ r ] .hh.b0 = 0 ;
- ensurevbox ( n ) ;
- if ( eqtb [ 4578 + n ] .hh .v.RH == 0 )
- mem [ r + 3 ] .cint = 0 ;
- else mem [ r + 3 ] .cint = mem [ eqtb [ 4578 + n ] .hh .v.RH + 3 ]
- .cint + mem [ eqtb [ 4578 + n ] .hh .v.RH + 2 ] .cint ;
- mem [ r + 2 ] .hh .v.LH = 0 ;
- q = eqtb [ 3800 + n ] .hh .v.RH ;
- if ( eqtb [ 6218 + n ] .cint == 1000 )
- h = mem [ r + 3 ] .cint ;
- else h = xovern ( mem [ r + 3 ] .cint , 1000 ) * eqtb [ 6218 + n ]
- .cint ;
- pagesofar [ 0 ] = pagesofar [ 0 ] - h - mem [ q + 1 ] .cint ;
- pagesofar [ 2 + mem [ q ] .hh.b0 ] = pagesofar [ 2 + mem [ q ]
- .hh.b0 ] + mem [ q + 2 ] .cint ;
- pagesofar [ 6 ] = pagesofar [ 6 ] + mem [ q + 3 ] .cint ;
- if ( ( mem [ q ] .hh.b1 != 0 ) && ( mem [ q + 3 ] .cint != 0 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 991 ) ;
- }
- printesc ( 391 ) ;
- printint ( n ) ;
- {
- helpptr = 3 ;
- helpline [ 2 ] = 992 ;
- helpline [ 1 ] = 993 ;
- helpline [ 0 ] = 915 ;
- }
- error () ;
- }
- }
- if ( mem [ r ] .hh.b0 == 1 )
- insertpenalties = insertpenalties + mem [ p + 1 ] .cint ;
- else {
-
- mem [ r + 2 ] .hh .v.RH = p ;
- delta = pagesofar [ 0 ] - pagesofar [ 1 ] - pagesofar [ 7 ] +
- pagesofar [ 6 ] ;
- if ( eqtb [ 6218 + n ] .cint == 1000 )
- h = mem [ p + 3 ] .cint ;
- else h = xovern ( mem [ p + 3 ] .cint , 1000 ) * eqtb [ 6218 + n ]
- .cint ;
- if ( ( ( h <= 0 ) || ( h <= delta ) ) && ( mem [ p + 3 ] .cint + mem
- [ r + 3 ] .cint <= eqtb [ 6751 + n ] .cint ) )
- {
- pagesofar [ 0 ] = pagesofar [ 0 ] - h ;
- mem [ r + 3 ] .cint = mem [ r + 3 ] .cint + mem [ p + 3 ] .cint ;
- }
- else {
-
- if ( eqtb [ 6218 + n ] .cint <= 0 )
- w = 1073741823L ;
- else {
-
- w = pagesofar [ 0 ] - pagesofar [ 1 ] - pagesofar [ 7 ] ;
- if ( eqtb [ 6218 + n ] .cint != 1000 )
- w = xovern ( w , eqtb [ 6218 + n ] .cint ) * 1000 ;
- }
- if ( w > eqtb [ 6751 + n ] .cint - mem [ r + 3 ] .cint )
- w = eqtb [ 6751 + n ] .cint - mem [ r + 3 ] .cint ;
- q = vertbreak ( mem [ p + 4 ] .hh .v.LH , w , mem [ p + 2 ] .cint
- ) ;
- mem [ r + 3 ] .cint = mem [ r + 3 ] .cint + bestheightplusdepth ;
- ;
- #ifdef STAT
- if ( eqtb [ 6196 ] .cint > 0 )
- {
- begindiagnostic () ;
- printnl ( 994 ) ;
- printint ( n ) ;
- print ( 995 ) ;
- printscaled ( w ) ;
- printchar ( 44 ) ;
- printscaled ( bestheightplusdepth ) ;
- print ( 924 ) ;
- if ( q == 0 )
- printint ( -10000 ) ;
- else if ( mem [ q ] .hh.b0 == 12 )
- printint ( mem [ q + 1 ] .cint ) ;
- else printchar ( 48 ) ;
- enddiagnostic ( false ) ;
- }
- #endif /* STAT */
- if ( eqtb [ 6218 + n ] .cint != 1000 )
- bestheightplusdepth = xovern ( bestheightplusdepth , 1000 ) * eqtb
- [ 6218 + n ] .cint ;
- pagesofar [ 0 ] = pagesofar [ 0 ] - bestheightplusdepth ;
- mem [ r ] .hh.b0 = 1 ;
- mem [ r + 1 ] .hh .v.RH = q ;
- mem [ r + 1 ] .hh .v.LH = p ;
- if ( q == 0 )
- insertpenalties = insertpenalties - 10000 ;
- else if ( mem [ q ] .hh.b0 == 12 )
- insertpenalties = insertpenalties + mem [ q + 1 ] .cint ;
- }
- }
- goto lab80 ;
- }
- break ;
- default:
- confusion ( 986 ) ;
- break ;
- }
- if ( pi < 10000 )
- {
- if ( pagesofar [ 1 ] < pagesofar [ 0 ] )
- if ( ( pagesofar [ 3 ] != 0 ) || ( pagesofar [ 4 ] != 0 ) || ( pagesofar
- [ 5 ] != 0 ) )
- b = 0 ;
- else b = badness ( pagesofar [ 0 ] - pagesofar [ 1 ] , pagesofar [ 2 ] )
- ;
- else if ( pagesofar [ 1 ] - pagesofar [ 0 ] > pagesofar [ 6 ] )
- b = 1073741823L ;
- else b = badness ( pagesofar [ 1 ] - pagesofar [ 0 ] , pagesofar [ 6 ] )
- ;
- if ( b < 1073741823L )
- if ( pi <= -10000 )
- c = pi ;
- else if ( b < 10000 )
- c = b + pi + insertpenalties ;
- else c = 100000L ;
- else c = b ;
- if ( insertpenalties >= 10000 )
- c = 1073741823L ;
- ;
- #ifdef STAT
- if ( eqtb [ 6196 ] .cint > 0 )
- {
- begindiagnostic () ;
- printnl ( 37 ) ;
- print ( 920 ) ;
- printtotals () ;
- print ( 989 ) ;
- printscaled ( pagesofar [ 0 ] ) ;
- print ( 923 ) ;
- if ( b == 1073741823L )
- printchar ( 42 ) ;
- else printint ( b ) ;
- print ( 924 ) ;
- printint ( pi ) ;
- print ( 990 ) ;
- if ( c == 1073741823L )
- printchar ( 42 ) ;
- else printint ( c ) ;
- if ( c <= leastpagecost )
- printchar ( 35 ) ;
- enddiagnostic ( false ) ;
- }
- #endif /* STAT */
- if ( c <= leastpagecost )
- {
- bestpagebreak = p ;
- bestsize = pagesofar [ 0 ] ;
- leastpagecost = c ;
- r = mem [ memtop ] .hh .v.RH ;
- while ( r != memtop ) {
-
- mem [ r + 2 ] .hh .v.LH = mem [ r + 2 ] .hh .v.RH ;
- r = mem [ r ] .hh .v.RH ;
- }
- }
- if ( ( c == 1073741823L ) || ( pi <= -10000 ) )
- {
- fireup ( p ) ;
- if ( outputactive )
- return ;
- goto lab30 ;
- }
- }
- if ( ( mem [ p ] .hh.b0 < 10 ) || ( mem [ p ] .hh.b0 > 11 ) )
- goto lab80 ;
- lab90: if ( mem [ p ] .hh.b0 == 11 )
- q = p ;
- else {
-
- q = mem [ p + 1 ] .hh .v.LH ;
- pagesofar [ 2 + mem [ q ] .hh.b0 ] = pagesofar [ 2 + mem [ q ] .hh.b0 ]
- + mem [ q + 2 ] .cint ;
- pagesofar [ 6 ] = pagesofar [ 6 ] + mem [ q + 3 ] .cint ;
- if ( ( mem [ q ] .hh.b1 != 0 ) && ( mem [ q + 3 ] .cint != 0 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 987 ) ;
- }
- {
- helpptr = 4 ;
- helpline [ 3 ] = 988 ;
- helpline [ 2 ] = 956 ;
- helpline [ 1 ] = 957 ;
- helpline [ 0 ] = 915 ;
- }
- error () ;
- r = newspec ( q ) ;
- mem [ r ] .hh.b1 = 0 ;
- deleteglueref ( q ) ;
- mem [ p + 1 ] .hh .v.LH = r ;
- q = r ;
- }
- }
- pagesofar [ 1 ] = pagesofar [ 1 ] + pagesofar [ 7 ] + mem [ q + 1 ] .cint
- ;
- pagesofar [ 7 ] = 0 ;
- lab80: if ( pagesofar [ 7 ] > pagemaxdepth )
- {
- pagesofar [ 1 ] = pagesofar [ 1 ] + pagesofar [ 7 ] - pagemaxdepth ;
- pagesofar [ 7 ] = pagemaxdepth ;
- }
- mem [ pagetail ] .hh .v.RH = p ;
- pagetail = p ;
- mem [ memtop - 1 ] .hh .v.RH = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.RH = 0 ;
- goto lab30 ;
- lab31: mem [ memtop - 1 ] .hh .v.RH = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.RH = 0 ;
- flushnodelist ( p ) ;
- lab30: ;
- } while ( ! ( mem [ memtop - 1 ] .hh .v.RH == 0 ) ) ;
- if ( nestptr == 0 )
- curlist .tailfield = memtop - 1 ;
- else nest [ 0 ] .tailfield = memtop - 1 ;
- }
- void appspace ( )
- {appspace_regmem
- halfword q ;
- if ( ( curlist .auxfield .hh .v.LH >= 2000 ) && ( eqtb [ 3795 ] .hh .v.RH !=
- 0 ) )
- q = newparamglue ( 13 ) ;
- else {
-
- if ( eqtb [ 3794 ] .hh .v.RH != 0 )
- mainp = eqtb [ 3794 ] .hh .v.RH ;
- else {
-
- mainp = fontglue [ eqtb [ 4834 ] .hh .v.RH ] ;
- if ( mainp == 0 )
- {
- mainp = newspec ( 0 ) ;
- maink = parambase [ eqtb [ 4834 ] .hh .v.RH ] + 2 ;
- mem [ mainp + 1 ] .cint = fontinfo [ maink ] .cint ;
- mem [ mainp + 2 ] .cint = fontinfo [ maink + 1 ] .cint ;
- mem [ mainp + 3 ] .cint = fontinfo [ maink + 2 ] .cint ;
- fontglue [ eqtb [ 4834 ] .hh .v.RH ] = mainp ;
- }
- }
- mainp = newspec ( mainp ) ;
- if ( curlist .auxfield .hh .v.LH >= 2000 )
- mem [ mainp + 1 ] .cint = mem [ mainp + 1 ] .cint + fontinfo [ 7 +
- parambase [ eqtb [ 4834 ] .hh .v.RH ] ] .cint ;
- mem [ mainp + 2 ] .cint = xnoverd ( mem [ mainp + 2 ] .cint , curlist
- .auxfield .hh .v.LH , 1000 ) ;
- mem [ mainp + 3 ] .cint = xnoverd ( mem [ mainp + 3 ] .cint , 1000 ,
- curlist .auxfield .hh .v.LH ) ;
- q = newglue ( mainp ) ;
- mem [ mainp ] .hh .v.RH = 0 ;
- }
- mem [ curlist .tailfield ] .hh .v.RH = q ;
- curlist .tailfield = q ;
- }
- void insertdollarsign ( )
- {insertdollarsign_regmem
- backinput () ;
- curtok = 804 ;
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1010 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 1011 ;
- helpline [ 0 ] = 1012 ;
- }
- inserror () ;
- }
- void youcant ( )
- {youcant_regmem
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 681 ) ;
- }
- printcmdchr ( curcmd , curchr ) ;
- print ( 1013 ) ;
- printmode ( curlist .modefield ) ;
- }
- void reportillegalcase ( )
- {reportillegalcase_regmem
- youcant () ;
- {
- helpptr = 4 ;
- helpline [ 3 ] = 1014 ;
- helpline [ 2 ] = 1015 ;
- helpline [ 1 ] = 1016 ;
- helpline [ 0 ] = 1017 ;
- }
- error () ;
- }
- boolean privileged ( )
- {register boolean Result; privileged_regmem
- if ( curlist .modefield > 0 )
- Result = true ;
- else {
-
- reportillegalcase () ;
- Result = false ;
- }
- return(Result) ;
- }
- boolean itsallover ( )
- {/* 10 */ register boolean Result; itsallover_regmem
- if ( privileged () )
- {
- if ( ( memtop - 2 == pagetail ) && ( curlist .headfield == curlist
- .tailfield ) && ( deadcycles == 0 ) )
- {
- Result = true ;
- return(Result) ;
- }
- backinput () ;
- {
- mem [ curlist .tailfield ] .hh .v.RH = newnullbox () ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- mem [ curlist .tailfield + 1 ] .cint = eqtb [ 6733 ] .cint ;
- {
- mem [ curlist .tailfield ] .hh .v.RH = newglue ( 8 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- {
- mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( -1073741824L ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- buildpage () ;
- }
- Result = false ;
- return(Result) ;
- }
- void appendglue ( )
- {appendglue_regmem
- smallnumber s ;
- s = curchr ;
- switch ( s )
- {case 0 :
- curval = 4 ;
- break ;
- case 1 :
- curval = 8 ;
- break ;
- case 2 :
- curval = 12 ;
- break ;
- case 3 :
- curval = 16 ;
- break ;
- case 4 :
- scanglue ( 2 ) ;
- break ;
- case 5 :
- scanglue ( 3 ) ;
- break ;
- }
- {
- mem [ curlist .tailfield ] .hh .v.RH = newglue ( curval ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- if ( s >= 4 )
- {
- decr ( mem [ curval ] .hh .v.RH ) ;
- if ( s > 4 )
- mem [ curlist .tailfield ] .hh.b1 = 99 ;
- }
- }
- void appendkern ( )
- {appendkern_regmem
- quarterword s ;
- s = curchr ;
- scandimen ( s == 99 , false , false ) ;
- {
- mem [ curlist .tailfield ] .hh .v.RH = newkern ( curval ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- mem [ curlist .tailfield ] .hh.b1 = s ;
- }
- void offsave ( )
- {offsave_regmem
- halfword p ;
- if ( curgroup == 0 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 772 ) ;
- }
- printcmdchr ( curcmd , curchr ) ;
- {
- helpptr = 1 ;
- helpline [ 0 ] = 1036 ;
- }
- error () ;
- }
- else {
-
- backinput () ;
- p = getavail () ;
- mem [ memtop - 3 ] .hh .v.RH = p ;
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 621 ) ;
- }
- switch ( curgroup )
- {case 14 :
- {
- mem [ p ] .hh .v.LH = 7611 ;
- printesc ( 512 ) ;
- }
- break ;
- case 15 :
- {
- mem [ p ] .hh .v.LH = 804 ;
- printchar ( 36 ) ;
- }
- break ;
- case 16 :
- {
- mem [ p ] .hh .v.LH = 7612 ;
- mem [ p ] .hh .v.RH = getavail () ;
- p = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.LH = 3118 ;
- printesc ( 1035 ) ;
- }
- break ;
- default:
- {
- mem [ p ] .hh .v.LH = 637 ;
- printchar ( 125 ) ;
- }
- break ;
- }
- print ( 622 ) ;
- begintokenlist ( mem [ memtop - 3 ] .hh .v.RH , 4 ) ;
- {
- helpptr = 5 ;
- helpline [ 4 ] = 1030 ;
- helpline [ 3 ] = 1031 ;
- helpline [ 2 ] = 1032 ;
- helpline [ 1 ] = 1033 ;
- helpline [ 0 ] = 1034 ;
- }
- error () ;
- }
- }
- void extrarightbrace ( )
- {extrarightbrace_regmem
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 262 ) ;
- print ( 1041 ) ;
- }
- switch ( curgroup )
- {case 14 :
- printesc ( 512 ) ;
- break ;
- case 15 :
- printchar ( 36 ) ;
- break ;
- case 16 :
- printesc ( 870 ) ;
- break ;
- }
- {
- helpptr = 5 ;
- helpline [ 4 ] = 1042 ;
- helpline [ 3 ] = 1043 ;
- helpline [ 2 ] = 1044 ;
- helpline [ 1 ] = 1045 ;
- helpline [ 0 ] = 1046 ;
- }
- error () ;
- incr ( alignstate ) ;
- }
-