#define EXTERN extern
#include "texd.h"
boolean zinuse ( w , l , mdb )
wort w ;
integer l ;
mdbknoten mdb ;
{register boolean Result; inuse_regmem
integer test ;
if ( mdb == nil )
{
(void) Fputs( stdout , " =iSi=> in_use Fehler: " ) ;
wwort ( w , l ) ;
(void) Fputs( stdout , " nicht in mdb" ) ;
(void) putc('\n', stdout );
}
else {
test = vergl ( w , l , mdb ->w12 , mdb ->l1 ) ;
if ( test == -1 )
{
Result = inuse ( w , l , mdb ->li ) ;
}
else if ( test == 1 )
{
Result = inuse ( w , l , mdb ->re ) ;
}
else {
Result = mdb ->used1 ;
if ( isidebug == 1 )
{
if ( mdb ->used1 )
{
(void) Fputs( stdout , " =iSi=> " ) ;
wwort ( w , l ) ;
(void) Fputs( stdout , " in use" ) ;
(void) putc('\n', stdout );
}
else {
(void) Fputs( stdout , " =iSi=> " ) ;
wwort ( w , l ) ;
(void) Fputs( stdout , " not in use" ) ;
(void) putc('\n', stdout );
}
}
}
}
return(Result) ;
}
void hsinit ( )
{hsinit_regmem
integer i, j, l ;
trennvektor tr ;
wort w ;
char temp, auswahl, schnuller ;
boolean neu, memkorr ;
(void) putc('\n', stdout );
(void) putc('\n', stdout );
do {
(void) fprintf( stdout , "%s\n", "iSi debug Info ? [J/N]" ) ;
read ( stdin , auswahl ) ;
schnuller = auswahl ;
readln ( stdin ) ;
} while ( ! ( ( xord [ auswahl ] == 74 ) || ( xord [ auswahl ] == 78 ) || (
xord [ auswahl ] == 106 ) || ( xord [ auswahl ] == 110 ) ) ) ;
(void) putc('\n', stdout );
if ( ( xord [ auswahl ] == 74 ) || ( xord [ auswahl ] == 106 ) )
{
isidebug = 1 ;
}
else {
isidebug = 0 ;
}
{register integer for_end; i = 1 ; for_end = FILENAMESIZE ; if ( i <=
for_end) do
{
nameoffile [ i ] = ' ' ;
}
while ( i++ < for_end ) ; }
j = strstart [ jobname ] ;
i = 1 ;
while ( ( j < strstart [ jobname + 1 ] ) && ( i < FILENAMESIZE - 4 ) ) {
nameoffile [ i ] = xchr [ strpool [ j ] ] ;
j = j + 1 ;
i = i + 1 ;
}
nameoffile [ i ] = '.' ;
nameoffile [ i + 1 ] = 'm' ;
nameoffile [ i + 2 ] = 'e' ;
nameoffile [ i + 3 ] = 'm' ;
if ( ! aopenin ( hsmem , TEXINPUTPATH ) )
{
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> cant a_open_in " ) ;
wjob () ;
(void) Fputs( stdout , ".mem" ) ;
(void) putc('\n', stdout );
}
}
else {
do {
(void) putc('\n', stdout );
(void) Fputs( stdout , "Sollen Fehleintr\"age gel\"oscht werden? [J/N]" ) ;
(void) putc('\n', stdout );
read ( stdin , auswahl ) ;
schnuller = auswahl ;
readln ( stdin ) ;
} while ( ! ( ( xord [ auswahl ] == 74 ) || ( xord [ auswahl ] == 78 ) ||
( xord [ auswahl ] == 106 ) || ( xord [ auswahl ] == 110 ) ) ) ;
(void) putc('\n', stdout );
(void) putc('\n', stdout );
if ( ( xord [ auswahl ] == 74 ) || ( xord [ auswahl ] == 106 ) )
{
memkorr = true ;
}
else {
memkorr = false ;
}
while ( ! eof ( hsmem ) ) {
fscanf ( hsmem , "%d", &l ) ;
readln ( hsmem ) ;
{register integer for_end; i = 1 ; for_end = l ; if ( i <= for_end) do
{
fscanf ( hsmem , "%hd", &w [ i ] ) ;
}
while ( i++ < for_end ) ; }
readln ( hsmem ) ;
{register integer for_end; i = 1 ; for_end = l ; if ( i <= for_end) do
{
fscanf ( hsmem , "%d", &tr [ i ] ) ;
}
while ( i++ < for_end ) ; }
readln ( hsmem ) ;
fscanf ( hsmem , "%c", &temp ) ;
readln ( hsmem ) ;
if ( temp == xchr [ 116 ] )
neu = true ;
else neu = false ;
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> reading from " ) ;
wjob () ;
(void) Fputs( stdout , ".mem: " ) ;
wwort ( w , l ) ;
(void) Fputs( stdout , ", neu = " ) ;
(void) fprintf( stdout , "%ld", (long)temp ) ;
(void) putc('\n', stdout );
}
if ( memkorr )
{
do {
(void) putc('\n', stdout );
(void) Fputs( stdout , "Soll " ) ;
writewt ( w , l , tr ) ;
(void) Fputs( stdout , " gel\"oscht werden? [J/N]" ) ;
(void) putc('\n', stdout );
read ( stdin , auswahl ) ;
schnuller = auswahl ;
readln ( stdin ) ;
} while ( ! ( ( xord [ auswahl ] == 74 ) || ( xord [ auswahl ] == 78 )
|| ( xord [ auswahl ] == 106 ) || ( xord [ auswahl ] == 110 ) ) ) ;
(void) putc('\n', stdout );
if ( ( xord [ auswahl ] == 74 ) || ( xord [ auswahl ] == 106 ) )
{
;
}
else {
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> mdb/mdm_eintragen: " ) ;
writewt ( w , l , tr ) ;
(void) putc('\n', stdout );
}
mdbeintragen ( w , l , tr , neu , false , mdb ) ;
mdmeintragen ( w , l , tr , neu , mdm ) ;
}
}
else {
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> mdb/mdm_eintragen: " ) ;
writewt ( w , l , tr ) ;
(void) putc('\n', stdout );
}
mdbeintragen ( w , l , tr , neu , false , mdb ) ;
mdmeintragen ( w , l , tr , neu , mdm ) ;
}
}
if ( isidebug == 1 )
{
(void) putc('\n', stdout );
}
aclose ( hsmem ) ;
}
do {
(void) putc('\n', stdout );
(void) fprintf( stdout , "%s\n", "Sollen mehrdeutige W\"orter angezeigt werden? [J/N]" )
;
read ( stdin , auswahl ) ;
schnuller = auswahl ;
readln ( stdin ) ;
} while ( ! ( ( xord [ auswahl ] == 74 ) || ( xord [ auswahl ] == 78 ) || (
xord [ auswahl ] == 106 ) || ( xord [ auswahl ] == 110 ) ) ) ;
(void) putc('\n', stdout );
if ( ( xord [ auswahl ] == 74 ) || ( xord [ auswahl ] == 106 ) )
{
mehrdanz = true ;
}
else {
mehrdanz = false ;
}
}
void zabteilen ( w , tr1 , alletr , laenge , ok , zerlegungen )
wort w ;
trennvektor tr1 ;
trenn16 alletr ;
integer laenge ;
boolean * ok ;
integer * zerlegungen ;
{/* 99 */ abteilen_regmem
integer i ;
integer iSij ;
dudt dud ;
varr v ;
intarr ind, k ;
trennvektor tr, dudtr ;
sperrvektor spv, dudstop ;
tr1 [ 0 ] = keine ;
{register integer for_end; i = 0 ; for_end = laenge ; if ( i <= for_end) do
{
tr [ i ] = keine ;
spv [ i ] = false ;
dudstop [ i ] = false ;
dud [ i ] = false ;
if ( i > 0 )
if ( ( w [ i ] == trennzeichen ) || ( w [ i ] == sonderzeichen ) )
{
(* zerlegungen )= 0 ;
(* ok )= false ;
goto lab99 ;
}
}
while ( i++ < for_end ) ; }
(* zerlegungen )= 0 ;
trennen ( 3 , 1 , spv , (*ok ), alletr , tr , dudtr , (*zerlegungen ), dud , v ,
ind , k , dudstop , w , tr1 , laenge ) ;
{register integer for_end; i = 0 ; for_end = laenge ; if ( i <= for_end) do
if ( tr1 [ i ] == nebenck )
{
tr1 [ i ] = keine ;
tr1 [ i - 1 ] = nebenck ;
{register integer for_end; iSij = 1 ; for_end = (*zerlegungen ); if ( iSij
<= for_end) do
{
if ( ( alletr [ iSij ] [ i ] == nebenck ) )
{
alletr [ iSij ] [ i ] = keine ;
alletr [ iSij ] [ i - 1 ] = nebenck ;
}
}
while ( iSij++ < for_end ) ; }
}
while ( i++ < for_end ) ; }
lab99: ;
}
boolean zisdirtyumlaut ( p )
halfword p ;
{register boolean Result; isdirtyumlaut_regmem
boolean res ;
halfword q ;
res = false ;
if ( p != 0 )
if ( mem [ p ] .hh.b0 == 7 )
if ( mem [ p + 1 ] .hh .v.LH != 0 )
if ( mem [ mem [ p + 1 ] .hh .v.LH ] .hh .v.RH != 0 )
if ( mem [ mem [ mem [ p + 1 ] .hh .v.LH ] .hh .v.RH ] .hh .v.RH != 0 )
{
q = mem [ p + 1 ] .hh .v.LH ;
if ( mem [ q ] .hh.b0 == 12 )
q = mem [ q ] .hh .v.RH ;
if ( ( mem [ q ] .hh.b0 == 11 ) && ( mem [ q + 1 ] .cint == specletterID )
&& ( mem [ q ] .hh .v.RH >= himemmin ) && ( mem [ mem [ mem [ q ] .hh
.v.RH ] .hh .v.RH ] .hh.b0 == 11 ) )
res = true ;
}
Result = res ;
return(Result) ;
}
integer zgetcharof ( s )
halfword s ;
{register integer Result; getcharof_regmem
halfword q ;
q = mem [ s + 1 ] .hh .v.LH ;
if ( mem [ q ] .hh.b0 == 12 )
q = mem [ q ] .hh .v.RH ;
Result = mem [ mem [ mem [ q ] .hh .v.RH ] .hh .v.RH + 1 ] .cint ;
return(Result) ;
}
integer zgetfontof ( s )
halfword s ;
{register integer Result; getfontof_regmem
halfword q ;
q = mem [ s + 1 ] .hh .v.LH ;
if ( mem [ q ] .hh.b0 == 12 )
q = mem [ q ] .hh .v.RH ;
Result = mem [ mem [ q ] .hh .v.RH ] .hh.b0 ;
return(Result) ;
}
void hyphenate ( )
{/* 50 30 31 40 41 42 45 10 */ hyphenate_regmem
schar i, j, l, kk ;
halfword q, r, s, qq, qr, holdr ;
halfword bchar ;
short xchgchar[11] ;
schar addchar, xchgi, xchgk, xchghu ;
halfword spechyf ;
integer sij ;
halfword majortail, minortail ;
ASCIIcode c ;
schar cloc ;
integer rcount ;
halfword hyfnode ;
triepointer z ;
integer v ;
boolean funktioniert ;
integer zerleg ;
trenn16 alletr ;
char auswahl, schnuller ;
boolean memkorr ;
integer indexi ;
boolean uebersprungen ;
boolean lexja, lexok ;
hyphpointer h ;
strnumber k ;
poolpointer u ;
{register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do
hyf [ j ] = 0 ;
while ( j++ < for_end ) ; }
h = hc [ 1 ] ;
incr ( hn ) ;
hc [ hn ] = curlang ;
{register integer for_end; j = 2 ; for_end = hn ; if ( j <= for_end) do
h = ( h + h + hc [ j ] ) % 607 ;
while ( j++ < for_end ) ; }
while ( true ) {
k = hyphword [ h ] ;
if ( k == 0 )
goto lab45 ;
if ( ( strstart [ k + 1 ] - strstart [ k ] ) < hn )
goto lab45 ;
if ( ( strstart [ k + 1 ] - strstart [ k ] ) == hn )
{
j = 1 ;
u = strstart [ k ] ;
do {
if ( strpool [ u ] < hc [ j ] )
goto lab45 ;
if ( strpool [ u ] > hc [ j ] )
goto lab30 ;
incr ( j ) ;
incr ( u ) ;
} while ( ! ( j > hn ) ) ;
s = hyphlist [ h ] ;
while ( s != 0 ) {
hyf [ mem [ s ] .hh .v.LH ] = 1 ;
s = mem [ s ] .hh .v.RH ;
}
decr ( hn ) ;
goto lab40 ;
}
lab30: ;
if ( h > 0 )
decr ( h ) ;
else h = 607 ;
}
lab45: decr ( hn ) ;
{register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do
hcsi [ j ] = ktab [ hc [ j ] ] ;
while ( j++ < for_end ) ; }
if ( odd ( eqtb [ 12719 ] .cint / 2 ) )
{
if ( ! odd ( eqtb [ 12720 ] .cint / 2 ) )
{
println () ;
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%s%ld%s\n", " <* debugging output section #" , (long)2 , " *>" )
;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%s%ld%s\n", " <* debugging output section #" , (long)2 , " *>" ) ;
}
}
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) Fputs( stdout , " hc:" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) Fputs( logfile , " hc:" ) ;
}
{register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) putc( Xchr ( hc [ j ] ) , stdout );
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) putc( Xchr ( hc [ j ] ) , logfile );
}
while ( j++ < for_end ) ; }
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%c\n", ':' ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%c\n", ':' ) ;
}
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) Fputs( stdout , " hc_si:" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) Fputs( logfile , " hc_si:" ) ;
}
{register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) putc( Xchr ( revtab [ hcsi [ j ] ] ) , stdout );
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) putc( Xchr ( revtab [ hcsi [ j ] ] ) , logfile );
}
while ( j++ < for_end ) ; }
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%c\n", ':' ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%c\n", ':' ) ;
}
}
if ( odd ( eqtb [ 12719 ] .cint / 4 ) )
{
if ( ! odd ( eqtb [ 12720 ] .cint / 4 ) )
{
println () ;
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%s%ld%s\n", " <* debugging output section #" , (long)4 , " *>" )
;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%s%ld%s\n", " <* debugging output section #" , (long)4 , " *>" ) ;
}
}
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%s\n", "< decimal character codes >" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%s\n", "< decimal character codes >" ) ;
}
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) Fputs( stdout , " hc:" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) Fputs( logfile , " hc:" ) ;
}
{register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do
{
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%ld%c", (long)hc [ j ] , '-' ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%ld%c", (long)hc [ j ] , '-' ) ;
}
if ( ( ( j + 1 ) % 16 ) == 0 )
{
println () ;
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) Fputs( stdout , " " ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) Fputs( logfile , " " ) ;
}
}
}
while ( j++ < for_end ) ; }
println () ;
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) Fputs( stdout , " hc_si:" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) Fputs( logfile , " hc_si:" ) ;
}
{register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do
{
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%ld%c", (long)revtab [ hcsi [ j ] ] , '-' ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%ld%c", (long)revtab [ hcsi [ j ] ] , '-' ) ;
}
if ( ( ( j + 1 ) % 16 ) == 0 )
{
println () ;
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) Fputs( stdout , " " ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) Fputs( logfile , " " ) ;
}
}
}
while ( j++ < for_end ) ; }
println () ;
println () ;
}
if ( ! hsstart )
{
hsinit () ;
hsstart = true ;
}
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> abteilen von " ) ;
wwort ( hcsi , hn ) ;
}
abteilen ( hcsi , hyfsi , alletr , hn , funktioniert , zerleg ) ;
if ( ! funktioniert )
{
if ( isidebug == 1 )
{
(void) putc('\n', stdout );
(void) Fputs( stdout , " =iSi=> unbekanntes Wort: " ) ;
wwort ( hcsi , hn ) ;
(void) putc('\n', stdout );
(void) Fputs( stdout , " =iSi=> suchen in mdb: " ) ;
wwort ( hcsi , hn ) ;
(void) putc('\n', stdout );
}
if ( mdsuchen ( hcsi , hn , mdb , hyfsi ) )
{
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> gefunden in mdb: " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
}
funktioniert = true ;
}
else {
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> nicht gefunden in mdb: " ) ;
wwort ( hcsi , hn ) ;
(void) putc('\n', stdout );
}
do {
(void) putc('\n', stdout );
(void) putc('\n', stdout );
(void) putc( '"' , stdout );
wwort ( hcsi , hn ) ;
(void) Fputs( stdout , "\" ist ein unbekanntes Wort!" ) ;
(void) putc('\n', stdout );
(void) fprintf( stdout , "%ld", (long)0 ) ;
(void) Fputs( stdout , ": neues Wort, merken in \"" ) ;
wjob () ;
(void) Fputs( stdout , ".lex\"" ) ;
(void) putc('\n', stdout );
(void) fprintf( stdout , "%ld", (long)1 ) ;
(void) Fputs( stdout , ": neues Wort, Trennstellen angeben und merken in \"" ) ;
wjob () ;
(void) Fputs( stdout , ".lex\"" ) ;
(void) putc('\n', stdout );
(void) fprintf( stdout , "%ld", (long)9 ) ;
(void) Fputs( stdout , ": Tippfehler! - merken im File \"" ) ;
wjob () ;
(void) Fputs( stdout , ".edt\"" ) ;
(void) putc('\n', stdout );
(void) Fputs( stdout , "Bitte waehlen Sie eine Bedeutung (0,1,9) aus:" ) ;
(void) putc('\n', stdout );
read ( stdin , schnuller ) ;
auswahl = schnuller ;
readln ( stdin ) ;
} while ( ! ( ( ( xord [ auswahl ] >= 48 ) && ( xord [ auswahl ] <= 49 )
) || ( auswahl == '9' ) ) ) ;
if ( ( auswahl == '0' ) )
{
{register integer for_end; indexi = 1 ; for_end = hn ; if ( indexi <=
for_end) do
{
hyfsi [ indexi ] = keine ;
}
while ( indexi++ < for_end ) ; }
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> mdb/mdm_eintragen: " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
}
mdbeintragen ( hcsi , hn , hyfsi , true , true , mdb ) ;
mdmeintragen ( hcsi , hn , hyfsi , true , mdm ) ;
funktioniert = true ;
}
else if ( ( auswahl == '9' ) )
{
mdeeintragen ( hcsi , hn , mde ) ;
}
else {
(void) Fputs( stdout , "Bitte den Trennvektor angeben" ) ;
(void) putc('\n', stdout );
(void) Fputs( stdout , " (\"-\" Nebentrennstelle, \"=\" Haupttrennstelle, " ) ;
(void) Fputs( stdout , "\".\" Weiterruecken," ) ;
(void) putc('\n', stdout );
(void) Fputs( stdout , " Trennstrich unter den Buchstaben angeben, hinter dem " ) ;
(void) Fputs( stdout , "getrennt werden soll):" ) ;
(void) putc('\n', stdout );
wwort ( hcsi , hn ) ;
(void) putc('\n', stdout );
indexi = 1 ;
uebersprungen = false ;
read ( stdin , auswahl ) ;
while ( ( xord [ auswahl ] != 10 ) && ( indexi <= hn ) ) {
if ( ( hcsi [ indexi ] >= 27 ) && ( hcsi [ indexi ] <= 30 ) && !
uebersprungen )
{
uebersprungen = true ;
}
else {
if ( auswahl == '.' )
{
hyfsi [ indexi ] = keine ;
}
else if ( auswahl == '-' )
{
hyfsi [ indexi ] = neben ;
}
else if ( auswahl == '=' )
{
hyfsi [ indexi ] = haupt ;
}
else {
hyfsi [ indexi ] = keine ;
}
uebersprungen = false ;
indexi = indexi + 1 ;
}
read ( stdin , auswahl ) ;
}
while ( ( indexi ) <= hn ) {
hyfsi [ indexi ] = keine ;
indexi = indexi + 1 ;
}
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> mdb/mdm_eintragen: " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
}
mdbeintragen ( hcsi , hn , hyfsi , true , true , mdb ) ;
mdmeintragen ( hcsi , hn , hyfsi , true , mdm ) ;
funktioniert = true ;
}
}
}
else {
if ( isidebug == 1 )
{
(void) Fputs( stdout , ": " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
}
}
if ( zerleg >= 2 )
{
gleicheweg ( alletr , zerleg , hn ) ;
if ( zerleg >= 2 )
{
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> mehrdeutiges Wort: " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
(void) Fputs( stdout , " =iSi=> suchen in mdb: " ) ;
wwort ( hcsi , hn ) ;
(void) putc('\n', stdout );
}
if ( mdsuchen ( hcsi , hn , mdb , hyfsi ) )
{
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> gefunden in mdb: " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
}
}
else {
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> nicht gefunden in mdb: " ) ;
wwort ( hcsi , hn ) ;
(void) putc('\n', stdout );
}
if ( mehrdanz )
{
do {
(void) putc('\n', stdout );
(void) putc('\n', stdout );
(void) putc( '`' , stdout );
wwort ( hcsi , hn ) ;
(void) Fputs( stdout , "' ist ein mehrdeutiges Wort!" ) ;
(void) putc('\n', stdout );
(void) fprintf( stdout , "%ld", (long)0 ) ;
(void) Fputs( stdout , ": nur die sicheren Trennstellen waehlen (also `" ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) Fputs( stdout , "')" ) ;
(void) putc('\n', stdout );
{register integer for_end; indexi = 1 ; for_end = zerleg ; if (
indexi <= for_end) do
{
(void) fprintf( stdout , "%ld", (long)indexi ) ;
(void) Fputs( stdout , ": `" ) ;
writewt ( hcsi , hn , alletr [ indexi ] ) ;
(void) putc( '\'' , stdout );
(void) putc('\n', stdout );
}
while ( indexi++ < for_end ) ; }
(void) fprintf( stdout , "%ld", (long)9 ) ;
(void) Fputs( stdout , ": Tippfehler! - merken im File `" ) ;
wjob () ;
(void) Fputs( stdout , ".edt'" ) ;
(void) putc('\n', stdout );
(void) Fputs( stdout , "Bitte waehlen Sie eine Bedeutung z.B. `0'+`Enter' aus:" ) ;
(void) putc('\n', stdout );
(void) Fputs( stdout , " (zusaetzlich `E' z.B. `0E'+`Enter': " ) ;
(void) Fputs( stdout , "Wort auch fuer LEXIKON vormerken)" ) ;
(void) putc('\n', stdout );
read ( stdin , schnuller ) ;
auswahl = schnuller ;
lexja = false ;
lexok = true ;
if ( xord [ schnuller ] != 32 )
{
read ( stdin , schnuller ) ;
if ( xord [ schnuller ] != 10 )
{
if ( ( schnuller == 'e' ) || ( schnuller == 'E' ) )
{
lexja = true ;
}
else {
lexok = false ;
}
readln ( stdin ) ;
}
}
} while ( ! ( ( ( ( xord [ auswahl ] >= 48 ) && ( xord [ auswahl ]
<= 48 + zerleg ) ) || ( auswahl == '9' ) ) && lexok ) ) ;
if ( ( auswahl == '0' ) || ( ( auswahl == '0' ) && lexja ) )
{
if ( ( auswahl == '0' ) && ! lexja )
{
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> mdb/mdm_eintragen: " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
}
mdbeintragen ( hcsi , hn , hyfsi , false , true , mdb ) ;
mdmeintragen ( hcsi , hn , hyfsi , false , mdm ) ;
}
else {
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> mdb/mdm_eintragen: " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
}
mdbeintragen ( hcsi , hn , hyfsi , true , true , mdb ) ;
mdmeintragen ( hcsi , hn , hyfsi , true , mdm ) ;
}
}
else if ( ( auswahl == '9' ) )
{
mdeeintragen ( hcsi , hn , mde ) ;
}
else {
memcpy((void *)hyfsi , (void *) alletr [ xord [ auswahl ] - 48 ],
sizeof(trennvektor));
if ( ! lexja )
{
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> mdb/mdm_eintragen: " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
}
mdbeintragen ( hcsi , hn , hyfsi , false , true , mdb ) ;
mdmeintragen ( hcsi , hn , hyfsi , false , mdm ) ;
}
else {
if ( isidebug == 1 )
{
(void) Fputs( stdout , " =iSi=> mdb/mdm_eintragen: " ) ;
writewt ( hcsi , hn , hyfsi ) ;
(void) putc('\n', stdout );
}
mdbeintragen ( hcsi , hn , hyfsi , true , true , mdb ) ;
mdmeintragen ( hcsi , hn , hyfsi , true , mdm ) ;
}
}
}
}
}
}
{register integer for_end; j = 0 ; for_end = 64 ; if ( j <= for_end) do
{
hyfdisc [ j ] = 0 ;
hyfpen [ j ] = 10000 ;
}
while ( j++ < for_end ) ; }
if ( funktioniert )
{register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do
{
if ( hyfsi [ j ] == neben )
hyfpen [ j ] = eqtb [ 12718 ] .cint ;
else if ( hyfsi [ j ] == haupt )
hyfpen [ j ] = eqtb [ 12666 ] .cint ;
else if ( hyfsi [ j ] == nebenck )
{
hyfpen [ j + 1 ] = eqtb [ 12718 ] .cint ;
s = getnode ( 2 ) ;
mem [ s ] .hh.b0 = 7 ;
hyfdisc [ j + 1 ] = s ;
mem [ s + 1 ] .hh .v.LH = newpenalty ( eqtb [ 12718 ] .cint ) ;
s = mem [ s + 1 ] .hh .v.LH ;
mem [ s ] .hh.b1 = 0 ;
mem [ s ] .hh .v.RH = newcharacter ( hf , hu [ j + 2 ] ) ;
mem [ mem [ s ] .hh .v.RH ] .hh .v.RH = 0 ;
s = hyfdisc [ j + 1 ] ;
mem [ s + 1 ] .hh .v.RH = 0 ;
mem [ s ] .hh .v.RH = 0 ;
}
else if ( hyfsi [ j ] == haupt3 )
{
hyfpen [ j - 1 ] = eqtb [ 12666 ] .cint ;
s = getnode ( 2 ) ;
mem [ s ] .hh.b0 = 7 ;
hyfdisc [ j - 1 ] = s ;
mem [ s + 1 ] .hh .v.LH = newpenalty ( eqtb [ 12666 ] .cint ) ;
s = mem [ s + 1 ] .hh .v.LH ;
mem [ s ] .hh.b1 = 1 ;
mem [ s ] .hh .v.RH = newcharacter ( hf , hu [ j ] ) ;
mem [ mem [ s ] .hh .v.RH ] .hh .v.RH = 0 ;
s = hyfdisc [ j - 1 ] ;
mem [ s + 1 ] .hh .v.RH = 0 ;
mem [ s ] .hh .v.RH = 0 ;
}
}
while ( j++ < for_end ) ; }
if ( odd ( eqtb [ 12719 ] .cint / 8 ) )
{
if ( ! odd ( eqtb [ 12720 ] .cint / 8 ) )
{
println () ;
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%s%ld%s\n", " <* debugging output section #" , (long)8 , " *>" )
;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%s%ld%s\n", " <* debugging output section #" , (long)8 , " *>" ) ;
}
}
if ( funktioniert )
{
{register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do
if ( hyfpen [ j ] != 10000 )
{
if ( hyfdisc [ j ] != 0 )
{
if ( mem [ mem [ hyfdisc [ j ] + 1 ] .hh .v.LH ] .hh.b1 == 0 )
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%c%c", Xchr ( hu [ j + 1 ] ) , '-' ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%c%c", Xchr ( hu [ j + 1 ] ) , '-' ) ;
}
else {
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%c%c%c", Xchr ( hu [ j + 1 ] ) , Xchr ( hu [ j + 1 ] ) , '=' ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%c%c%c", Xchr ( hu [ j + 1 ] ) , Xchr ( hu [ j + 1 ] ) , '=' ) ;
}
}
else {
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) putc( Xchr ( hu [ j ] ) , stdout );
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) putc( Xchr ( hu [ j ] ) , logfile );
}
if ( hyfpen [ j ] == eqtb [ 12666 ] .cint )
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) putc( '=' , stdout );
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) putc( '=' , logfile );
}
else {
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) putc( '-' , stdout );
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) putc( '-' , logfile );
}
}
}
else {
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) putc( Xchr ( hu [ j ] ) , stdout );
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) putc( Xchr ( hu [ j ] ) , logfile );
}
}
while ( j++ < for_end ) ; }
}
else {
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%s\n", " no hyphens were found in this word!" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%s\n", " no hyphens were found in this word!" ) ;
}
}
println () ;
}
goto lab31 ;
lab40: hyfpen [ 0 ] = 10000 ;
{register integer for_end; j = 1 ; for_end = hn ; if ( j <= for_end) do
if ( odd ( hyf [ j ] ) )
hyfpen [ j ] = eqtb [ 12666 ] .cint ;
else hyfpen [ j ] = 10000 ;
while ( j++ < for_end ) ; }
lab31: ;
{register integer for_end; j = lhyf ; for_end = hn - rhyf ; if ( j <=
for_end) do
if ( hyfpen [ j ] != 10000 )
goto lab41 ;
while ( j++ < for_end ) ; }
return ;
lab41: ;
q = mem [ hb ] .hh .v.RH ;
mem [ hb ] .hh .v.RH = 0 ;
r = mem [ ha ] .hh .v.RH ;
mem [ ha ] .hh .v.RH = 0 ;
bchar = 256 ;
holdr = newkern ( 1235 ) ;
mem [ holdr ] .hh .v.RH = r ;
if ( ! ( hb >= himemmin ) )
if ( mem [ hb ] .hh.b0 == 6 )
if ( odd ( mem [ hb ] .hh.b1 ) )
bchar = fontbchar [ hf ] ;
if ( ( ha >= himemmin ) )
if ( mem [ ha ] .hh.b0 != hf )
goto lab42 ;
else {
initlist = ha ;
initlig = false ;
hu [ 0 ] = mem [ ha ] .hh.b1 ;
}
else if ( isdirtyumlaut ( ha ) )
{
if ( getfontof ( ha ) != hf )
goto lab42 ;
else {
initlist = ha ;
initlig = false ;
hu [ 0 ] = getcharof ( ha ) ;
}
}
else if ( mem [ ha ] .hh.b0 == 6 )
if ( mem [ ha + 1 ] .hh.b0 != hf )
goto lab42 ;
else {
initlist = mem [ ha + 1 ] .hh .v.RH ;
initlig = true ;
initlft = ( mem [ ha ] .hh.b1 > 1 ) ;
hu [ 0 ] = mem [ ha + 1 ] .hh.b1 ;
if ( initlist == 0 )
if ( initlft )
{
hu [ 0 ] = 256 ;
initlig = false ;
}
freenode ( ha , 2 ) ;
}
else {
if ( ! ( r >= himemmin ) )
if ( mem [ r ] .hh.b0 == 6 )
if ( mem [ r ] .hh.b1 > 1 )
goto lab42 ;
j = 1 ;
s = ha ;
initlist = 0 ;
goto lab50 ;
}
s = curp ;
while ( mem [ s ] .hh .v.RH != ha ) s = mem [ s ] .hh .v.RH ;
j = 0 ;
goto lab50 ;
lab42: s = ha ;
j = 0 ;
hu [ 0 ] = 256 ;
initlig = false ;
initlist = 0 ;
lab50: qq = holdr ;
{register integer for_end; kk = j ; for_end = hn ; if ( kk <= for_end) do
if ( dirtyumlaut [ kk ] != 0 )
{
while ( mem [ qq ] .hh .v.RH != dirtyumlaut [ kk ] ) qq = mem [ qq ] .hh
.v.RH ;
qr = mem [ qq ] .hh .v.RH ;
{register integer for_end; i = 1 ; for_end = mem [ qr ] .hh.b1 ; if ( i
<= for_end) do
if ( qr != 0 )
qr = mem [ qr ] .hh .v.RH ;
else {
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%s\n", "...??..X --> ????? !" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%s\n", "...??..X --> ????? !" ) ;
}
}
while ( i++ < for_end ) ; }
if ( qr != 0 )
{
mem [ qq ] .hh .v.RH = mem [ qr ] .hh .v.RH ;
mem [ qr ] .hh .v.RH = 0 ;
}
else mem [ qq ] .hh .v.RH = 0 ;
}
while ( kk++ < for_end ) ; }
if ( dirtyumlaut [ -1 ] != 0 )
{
qq = holdr ;
while ( ( mem [ qq ] .hh .v.RH != dirtyumlaut [ -1 ] ) && ( mem [ qq ] .hh
.v.RH != 0 ) ) qq = mem [ qq ] .hh .v.RH ;
if ( mem [ qq ] .hh .v.RH == dirtyumlaut [ -1 ] )
{
mem [ qq ] .hh .v.RH = mem [ dirtyumlaut [ -1 ] ] .hh .v.RH ;
mem [ dirtyumlaut [ -1 ] ] .hh .v.RH = 0 ;
}
else {
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) Fputs( stdout , " *** ERROR: node list is damaged! " ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) Fputs( logfile , " *** ERROR: node list is damaged! " ) ;
}
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%s\n", "(post hyphenation - unhinge a whatsit node)" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%s\n", "(post hyphenation - unhinge a whatsit node)" ) ;
}
}
}
r = holdr ;
while ( mem [ r ] .hh .v.RH != 0 ) {
if ( ( memmin <= mem [ r ] .hh .v.RH ) && ( mem [ r ] .hh .v.RH <= memmax
) )
r = mem [ r ] .hh .v.RH ;
else {
(void) putc('\n', logfile );
(void) putc('\n', stdout );
(void) fprintf( logfile , "%s\n", "???$ - ERROR in node list!" ) ;
(void) fprintf( stdout , "%s\n", "???$ - ERROR in node list!" ) ;
kk = depththreshold ;
l = breadthmax ;
depththreshold = 100 ;
breadthmax = 100 ;
shownodelist ( holdr ) ;
mem [ r ] .hh .v.RH = 0 ;
depththreshold = kk ;
breadthmax = l ;
}
}
flushnodelist ( holdr ) ;
if ( dirtyumlaut [ -1 ] != 0 )
{
mem [ s ] .hh .v.RH = dirtyumlaut [ -1 ] ;
s = mem [ s ] .hh .v.RH ;
}
do {
if ( dirtyumlaut [ j ] != 0 )
{
mem [ s ] .hh .v.RH = dirtyumlaut [ j ] ;
while ( mem [ s ] .hh .v.RH > 0 ) s = mem [ s ] .hh .v.RH ;
mem [ memtop - 4 ] .hh .v.RH = 0 ;
j = j + 1 ;
hyphenpassed = 0 ;
if ( hyfpen [ j - 1 ] != 10000 )
{
l = j ;
hyphenpassed = j - 1 ;
if ( odd ( eqtb [ 12719 ] .cint / 16 ) )
{
if ( ! odd ( eqtb [ 12720 ] .cint / 16 ) )
{
println () ;
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%s%ld%s\n", " <* debugging output section #" , (long)16 , " *>" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%s%ld%s\n", " <* debugging output section #" , (long)16 , " *>" ) ;
}
}
{
if ( ( fileoffset != 0 ) || ( termoffset != 0 ) )
println () ;
if ( selector != 18 )
(void) fprintf( stdout , "%s\n", " *** append a hyphen immediatly after a dirty umlaut!" ) ;
if ( ( selector == 18 ) || ( selector == 19 ) )
(void) fprintf( logfile , "%s\n", " *** append a hyphen immediatly after a dirty umlaut!" ) ;
}
}
}
}
else {
l = j ;
j = reconstitute ( j , hn , bchar , hyfchar ) + 1 ;
if ( hyphenpassed == 0 )
{
mem [ s ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
while ( mem [ s ] .hh .v.RH > 0 ) s = mem [ s ] .hh .v.RH ;
if ( hyfpen [ j - 1 ] != 10000 )
{
l = j ;
hyphenpassed = j - 1 ;
mem [ memtop - 4 ] .hh .v.RH = 0 ;
}
}
}
if ( hyphenpassed > 0 )
do {
r = getnode ( 2 ) ;
mem [ r ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
mem [ r ] .hh.b0 = 7 ;
majortail = r ;
rcount = 0 ;
while ( mem [ majortail ] .hh .v.RH > 0 ) {
majortail = mem [ majortail ] .hh .v.RH ;
incr ( rcount ) ;
}
i = hyphenpassed ;
hyf [ i ] = 0 ;
if ( ( hyfpen [ i ] != 10000 ) && ( hyfpen [ i ] != eqtb [ 12666 ] .cint
) )
minortail = newpenalty ( hyfpen [ i ] ) ;
else minortail = 0 ;
hyfpen [ i ] = 10000 ;
mem [ r + 1 ] .hh .v.LH = minortail ;
hyfnode = newcharacter ( hf , hyfchar ) ;
xchgk = i ;
if ( hyfdisc [ xchgk ] != 0 )
{
spechyf = mem [ hyfdisc [ xchgk ] + 1 ] .hh .v.LH ;
addchar = mem [ spechyf ] .hh.b1 ;
xchgi = 1 ;
do {
spechyf = mem [ spechyf ] .hh .v.RH ;
if ( spechyf != 0 )
{
xchgchar [ xchgi ] = mem [ spechyf ] .hh.b1 ;
incr ( xchgi ) ;
}
} while ( ! ( spechyf == 0 ) ) ;
if ( hyfnode != 0 )
{
xchgchar [ xchgi ] = hyfchar ;
{
mem [ hyfnode ] .hh .v.RH = avail ;
avail = hyfnode ;
;
#ifdef STAT
decr ( dynused ) ;
#endif /* STAT */
}
}
else decr ( xchgi ) ;
xchghu = i - xchgi + addchar + 2 ;
{register integer for_end; xchgk = 1 ; for_end = xchgi ; if ( xchgk
<= for_end) do
{
xchgchar [ 0 ] = hu [ xchghu ] ;
hu [ xchghu ] = xchgchar [ xchgk ] ;
xchgchar [ xchgk ] = xchgchar [ 0 ] ;
incr ( xchghu ) ;
}
while ( xchgk++ < for_end ) ; }
xchgk = i ;
i = xchghu - 1 ;
xchghu = xchghu - xchgi ;
}
else if ( hyfnode != 0 )
{
incr ( i ) ;
c = hu [ i ] ;
hu [ i ] = hyfchar ;
{
mem [ hyfnode ] .hh .v.RH = avail ;
avail = hyfnode ;
;
#ifdef STAT
decr ( dynused ) ;
#endif /* STAT */
}
}
while ( l <= i ) {
l = reconstitute ( l , i , fontbchar [ hf ] , 256 ) + 1 ;
if ( mem [ memtop - 4 ] .hh .v.RH > 0 )
{
if ( minortail == 0 )
mem [ r + 1 ] .hh .v.LH = mem [ memtop - 4 ] .hh .v.RH ;
else mem [ minortail ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
minortail = mem [ memtop - 4 ] .hh .v.RH ;
while ( mem [ minortail ] .hh .v.RH > 0 ) minortail = mem [
minortail ] .hh .v.RH ;
}
}
if ( hyfdisc [ xchgk ] != 0 )
{
i = xchgk ;
l = i + 1 ;
{register integer for_end; xchgk = 1 ; for_end = xchgi ; if ( xchgk
<= for_end) do
{
hu [ xchghu ] = xchgchar [ xchgk ] ;
incr ( xchghu ) ;
}
while ( xchgk++ < for_end ) ; }
}
else if ( hyfnode != 0 )
{
hu [ i ] = c ;
l = i ;
decr ( i ) ;
}
minortail = 0 ;
mem [ r + 1 ] .hh .v.RH = 0 ;
cloc = 0 ;
if ( bcharlabel [ hf ] < fontmemsize )
{
decr ( l ) ;
c = hu [ l ] ;
cloc = l ;
hu [ l ] = 256 ;
}
while ( l < j ) {
do {
l = reconstitute ( l , hn , bchar , 256 ) + 1 ;
if ( cloc > 0 )
{
hu [ cloc ] = c ;
cloc = 0 ;
}
if ( mem [ memtop - 4 ] .hh .v.RH > 0 )
{
if ( minortail == 0 )
mem [ r + 1 ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
else mem [ minortail ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
minortail = mem [ memtop - 4 ] .hh .v.RH ;
while ( mem [ minortail ] .hh .v.RH > 0 ) minortail = mem [
minortail ] .hh .v.RH ;
}
} while ( ! ( l >= j ) ) ;
while ( l > j ) {
j = reconstitute ( j , hn , bchar , 256 ) + 1 ;
mem [ majortail ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
while ( mem [ majortail ] .hh .v.RH > 0 ) {
majortail = mem [ majortail ] .hh .v.RH ;
incr ( rcount ) ;
}
}
}
if ( rcount > 127 )
{
mem [ s ] .hh .v.RH = mem [ r ] .hh .v.RH ;
mem [ r ] .hh .v.RH = 0 ;
flushnodelist ( r ) ;
}
else {
mem [ s ] .hh .v.RH = r ;
mem [ r ] .hh.b1 = rcount ;
}
s = majortail ;
hyphenpassed = j - 1 ;
mem [ memtop - 4 ] .hh .v.RH = 0 ;
} while ( ! ( ( hyfpen [ j - 1 ] == 10000 ) ) ) ;
} while ( ! ( j > hn ) ) ;
mem [ s ] .hh .v.RH = q ;
siq = s ;
{register integer for_end; j = 0 ; for_end = 64 ; if ( j <= for_end) do
if ( hyfdisc [ j ] != 0 )
{
flushnodelist ( hyfdisc [ j ] ) ;
}
while ( j++ < for_end ) ; }
flushlist ( initlist ) ;
}
void newhyphexceptions ( )
{/* 21 10 40 45 */ newhyphexceptions_regmem
smallnumber n ;
smallnumber j ;
hyphpointer h ;
strnumber k ;
halfword p ;
halfword q ;
strnumber s, t ;
poolpointer u, v ;
scanleftbrace () ;
if ( eqtb [ 12713 ] .cint <= 0 )
curlang = 0 ;
else if ( eqtb [ 12713 ] .cint > 255 )
curlang = 0 ;
else curlang = eqtb [ 12713 ] .cint ;
n = 0 ;
p = 0 ;
while ( true ) {
getxtoken () ;
lab21: switch ( curcmd )
{case 11 :
case 12 :
case 68 :
if ( curchr == 45 )
{
if ( n < 63 )
{
q = getavail () ;
mem [ q ] .hh .v.RH = p ;
mem [ q ] .hh .v.LH = n ;
p = q ;
}
}
else {
if ( eqtb [ 11639 + curchr ] .hh .v.RH == 0 )
{
{
if ( interaction == 3 )
;
printnl ( 262 ) ;
print ( 941 ) ;
}
{
helpptr = 2 ;
helpline [ 1 ] = 942 ;
helpline [ 0 ] = 943 ;
}
error () ;
}
else if ( n < 63 )
{
incr ( n ) ;
hc [ n ] = eqtb [ 11639 + curchr ] .hh .v.RH ;
}
}
break ;
case 16 :
{
scancharnum () ;
curchr = curval ;
curcmd = 68 ;
goto lab21 ;
}
break ;
case 10 :
case 2 :
{
if ( n > 1 )
{
incr ( n ) ;
hc [ n ] = curlang ;
{
if ( poolptr + n > poolsize )
overflow ( 257 , poolsize - initpoolptr ) ;
}
h = 0 ;
{register integer for_end; j = 1 ; for_end = n ; if ( j <= for_end)
do
{
h = ( h + h + hc [ j ] ) % 607 ;
{
strpool [ poolptr ] = hc [ j ] ;
incr ( poolptr ) ;
}
}
while ( j++ < for_end ) ; }
s = makestring () ;
if ( hyphcount == 607 )
overflow ( 944 , 607 ) ;
incr ( hyphcount ) ;
while ( hyphword [ h ] != 0 ) {
k = hyphword [ h ] ;
if ( ( strstart [ k + 1 ] - strstart [ k ] ) < ( strstart [ s + 1
] - strstart [ s ] ) )
goto lab40 ;
if ( ( strstart [ k + 1 ] - strstart [ k ] ) > ( strstart [ s + 1
] - strstart [ s ] ) )
goto lab45 ;
u = strstart [ k ] ;
v = strstart [ s ] ;
do {
if ( strpool [ u ] < strpool [ v ] )
goto lab40 ;
if ( strpool [ u ] > strpool [ v ] )
goto lab45 ;
incr ( u ) ;
incr ( v ) ;
} while ( ! ( u == strstart [ k + 1 ] ) ) ;
lab40: q = hyphlist [ h ] ;
hyphlist [ h ] = p ;
p = q ;
t = hyphword [ h ] ;
hyphword [ h ] = s ;
s = t ;
lab45: ;
if ( h > 0 )
decr ( h ) ;
else h = 607 ;
}
hyphword [ h ] = s ;
hyphlist [ h ] = p ;
}
if ( curcmd == 2 )
return ;
n = 0 ;
p = 0 ;
}
break ;
default:
{
{
if ( interaction == 3 )
;
printnl ( 262 ) ;
print ( 679 ) ;
}
printesc ( 937 ) ;
print ( 938 ) ;
{
helpptr = 2 ;
helpline [ 1 ] = 939 ;
helpline [ 0 ] = 940 ;
}
error () ;
}
break ;
}
}
}
halfword zprunepagetop ( p )
halfword p ;
{register halfword Result; prunepagetop_regmem
halfword prevp ;
halfword q ;
prevp = memtop - 3 ;
mem [ memtop - 3 ] .hh .v.RH = p ;
while ( p != 0 ) switch ( mem [ p ] .hh.b0 )
{case 0 :
case 1 :
case 2 :
{
q = newskipparam ( 10 ) ;
mem [ prevp ] .hh .v.RH = q ;
mem [ q ] .hh .v.RH = p ;
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 ;
p = 0 ;
}
break ;
case 8 :
case 4 :
case 3 :
{
prevp = p ;
p = mem [ prevp ] .hh .v.RH ;
}
break ;
case 10 :
case 11 :
case 12 :
{
q = p ;
p = mem [ q ] .hh .v.RH ;
mem [ q ] .hh .v.RH = 0 ;
mem [ prevp ] .hh .v.RH = p ;
flushnodelist ( q ) ;
}
break ;
default:
confusion ( 954 ) ;
break ;
}
Result = mem [ memtop - 3 ] .hh .v.RH ;
return(Result) ;
}
halfword zvertbreak ( p , h , d )
halfword p ;
scaled h ;
scaled d ;
{/* 30 45 90 */ register halfword Result; vertbreak_regmem
halfword prevp ;
halfword q, r ;
integer pi ;
integer b ;
integer leastcost ;
halfword bestplace ;
scaled prevdp ;
smallnumber t ;
prevp = p ;
leastcost = 1073741823L ;
activewidth [ 1 ] = 0 ;
activewidth [ 2 ] = 0 ;
activewidth [ 3 ] = 0 ;
activewidth [ 4 ] = 0 ;
activewidth [ 5 ] = 0 ;
activewidth [ 6 ] = 0 ;
prevdp = 0 ;
while ( true ) {
if ( p == 0 )
pi = -10000 ;
else switch ( mem [ p ] .hh.b0 )
{case 0 :
case 1 :
case 2 :
{
activewidth [ 1 ] = activewidth [ 1 ] + prevdp + mem [ p + 3 ] .cint ;
prevdp = mem [ p + 2 ] .cint ;
goto lab45 ;
}
break ;
case 8 :
goto lab45 ;
break ;
case 10 :
if ( ( mem [ prevp ] .hh.b0 < 9 ) )
pi = 0 ;
else goto lab90 ;
break ;
case 11 :
{
if ( mem [ p ] .hh .v.RH == 0 )
t = 12 ;
else t = mem [ mem [ p ] .hh .v.RH ] .hh.b0 ;
if ( t == 10 )
pi = 0 ;
else goto lab90 ;
}
break ;
case 12 :
pi = mem [ p + 1 ] .cint ;
break ;
case 4 :
case 3 :
goto lab45 ;
break ;
default:
confusion ( 955 ) ;
break ;
}
if ( pi < 10000 )
{
if ( activewidth [ 1 ] < h )
if ( ( activewidth [ 3 ] != 0 ) || ( activewidth [ 4 ] != 0 ) || (
activewidth [ 5 ] != 0 ) )
b = 0 ;
else b = badness ( h - activewidth [ 1 ] , activewidth [ 2 ] ) ;
else if ( activewidth [ 1 ] - h > activewidth [ 6 ] )
b = 1073741823L ;
else b = badness ( activewidth [ 1 ] - h , activewidth [ 6 ] ) ;
if ( b < 1073741823L )
if ( pi <= -10000 )
b = pi ;
else if ( b < 10000 )
b = b + pi ;
else b = 100000L ;
if ( b <= leastcost )
{
bestplace = p ;
leastcost = b ;
bestheightplusdepth = activewidth [ 1 ] + prevdp ;
}
if ( ( b == 1073741823L ) || ( pi <= -10000 ) )
goto lab30 ;
}
if ( ( mem [ p ] .hh.b0 < 10 ) || ( mem [ p ] .hh.b0 > 11 ) )
goto lab45 ;
lab90: if ( mem [ p ] .hh.b0 == 11 )
q = p ;
else {
q = mem [ p + 1 ] .hh .v.LH ;
activewidth [ 2 + mem [ q ] .hh.b0 ] = activewidth [ 2 + mem [ q ]
.hh.b0 ] + mem [ q + 2 ] .cint ;
activewidth [ 6 ] = activewidth [ 6 ] + mem [ q + 3 ] .cint ;
if ( ( mem [ q ] .hh.b1 != 0 ) && ( mem [ q + 3 ] .cint != 0 ) )
{
{
if ( interaction == 3 )
;
printnl ( 262 ) ;
print ( 956 ) ;
}
{
helpptr = 4 ;
helpline [ 3 ] = 957 ;
helpline [ 2 ] = 958 ;
helpline [ 1 ] = 959 ;
helpline [ 0 ] = 918 ;
}
error () ;
r = newspec ( q ) ;
mem [ r ] .hh.b1 = 0 ;
deleteglueref ( q ) ;
mem [ p + 1 ] .hh .v.LH = r ;
q = r ;
}
}
activewidth [ 1 ] = activewidth [ 1 ] + prevdp + mem [ q + 1 ] .cint ;
prevdp = 0 ;
lab45: if ( prevdp > d )
{
activewidth [ 1 ] = activewidth [ 1 ] + prevdp - d ;
prevdp = d ;
}
prevp = p ;
p = mem [ prevp ] .hh .v.RH ;
}
lab30: Result = bestplace ;
return(Result) ;
}
halfword zvsplit ( n , h )
eightbits n ;
scaled h ;
{/* 10 30 */ register halfword Result; vsplit_regmem
halfword v ;
halfword p ;
halfword q ;
v = eqtb [ 11078 + 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 )
;
printnl ( 262 ) ;
print ( 335 ) ;
}
printesc ( 960 ) ;
print ( 961 ) ;
printesc ( 962 ) ;
{
helpptr = 2 ;
helpline [ 1 ] = 963 ;
helpline [ 0 ] = 964 ;
}
error () ;
Result = 0 ;
return(Result) ;
}
q = vertbreak ( mem [ v + 5 ] .hh .v.RH , h , eqtb [ 13239 ] .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 [ 11078 + n ] .hh .v.RH = 0 ;
else eqtb [ 11078 + n ] .hh .v.RH = vpackage ( q , 0 , 1 , 1073741823L ) ;
Result = vpackage ( p , h , 0 , eqtb [ 13239 ] .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 ( 973 ) ;
}
if ( pagesofar [ 5 ] != 0 )
{
print ( 310 ) ;
printscaled ( pagesofar [ 5 ] ) ;
print ( 974 ) ;
}
if ( pagesofar [ 6 ] != 0 )
{
print ( 311 ) ;
printscaled ( pagesofar [ 6 ] ) ;
}
}
void zfreezepagespecs ( s )
smallnumber s ;
{freezepagespecs_regmem
pagecontents = s ;
pagesofar [ 0 ] = eqtb [ 13237 ] .cint ;
pagemaxdepth = eqtb [ 13238 ] .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 [ 12696 ] .cint > 0 )
{
begindiagnostic () ;
printnl ( 982 ) ;
printscaled ( pagesofar [ 0 ] ) ;
print ( 983 ) ;
printscaled ( pagemaxdepth ) ;
enddiagnostic ( false ) ;
}
#endif /* STAT */
}
void zboxerror ( n )
eightbits n ;
{boxerror_regmem
error () ;
begindiagnostic () ;
printnl ( 832 ) ;
showbox ( eqtb [ 11078 + n ] .hh .v.RH ) ;
enddiagnostic ( true ) ;
flushnodelist ( eqtb [ 11078 + n ] .hh .v.RH ) ;
eqtb [ 11078 + n ] .hh .v.RH = 0 ;
}
void zensurevbox ( n )
eightbits n ;
{ensurevbox_regmem
halfword p ;
p = eqtb [ 11078 + n ] .hh .v.RH ;
if ( p != 0 )
if ( mem [ p ] .hh.b0 == 0 )
{
{
if ( interaction == 3 )
;
printnl ( 262 ) ;
print ( 984 ) ;
}
{
helpptr = 3 ;
helpline [ 2 ] = 985 ;
helpline [ 1 ] = 986 ;
helpline [ 0 ] = 987 ;
}
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 ( 12702 , mem [ bestpagebreak + 1 ] .cint ) ;
mem [ bestpagebreak + 1 ] .cint = 10000 ;
}
else geqworddefine ( 12702 , 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 [ 11333 ] .hh .v.RH != 0 )
{
{
if ( interaction == 3 )
;
printnl ( 262 ) ;
print ( 335 ) ;
}
printesc ( 405 ) ;
print ( 998 ) ;
{
helpptr = 2 ;
helpline [ 1 ] = 999 ;
helpline [ 0 ] = 987 ;
}
boxerror ( 255 ) ;
}
insertpenalties = 0 ;
savesplittopskip = eqtb [ 10292 ] .hh .v.RH ;
if ( eqtb [ 12716 ] .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 [ 11078 + n ] .hh .v.RH == 0 )
eqtb [ 11078 + n ] .hh .v.RH = newnullbox () ;
p = eqtb [ 11078 + 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 [ 12716 ] .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 [ 10292 ] .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 [ 11078 + n ] .hh .v.RH + 5 ] .hh .v.RH ;
freenode ( eqtb [ 11078 + n ] .hh .v.RH , 7 ) ;
eqtb [ 11078 + 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 [ 10292 ] .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 [ 12690 ] .cint ;
eqtb [ 12690 ] .cint = 10000 ;
savevfuzz = eqtb [ 13242 ] .cint ;
eqtb [ 13242 ] .cint = 1073741823L ;
eqtb [ 11333 ] .hh .v.RH = vpackage ( mem [ memtop - 2 ] .hh .v.RH ,
bestsize , 0 , pagemaxdepth ) ;
eqtb [ 12690 ] .cint = savevbadness ;
eqtb [ 13242 ] .cint = savevfuzz ;
if ( lastglue != 262143L )
deleteglueref ( lastglue ) ;
pagecontents = 0 ;
pagetail = memtop - 2 ;
mem [ memtop - 2 ] .hh .v.RH = 0 ;
lastglue = 262143L ;
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 [ 10813 ] .hh .v.RH != 0 )
if ( deadcycles >= eqtb [ 12703 ] .cint )
{
{
if ( interaction == 3 )
;
printnl ( 262 ) ;
print ( 1000 ) ;
}
printint ( deadcycles ) ;
print ( 1001 ) ;
{
helpptr = 3 ;
helpline [ 2 ] = 1002 ;
helpline [ 1 ] = 1003 ;
helpline [ 0 ] = 1004 ;
}
error () ;
}
else {
outputactive = true ;
incr ( deadcycles ) ;
pushnest () ;
curlist .modefield = -1 ;
curlist .auxfield .cint = -65536000L ;
curlist .mlfield = - (integer) line ;
begintokenlist ( eqtb [ 10813 ] .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 [ 11333 ] .hh .v.RH ) ;
eqtb [ 11333 ] .hh .v.RH = 0 ;
}
}