#undef TRIP
#undef TRAP
#define STAT
#undef DEBUG
#include "../common/texmf.h"
#define memmax 262140L
#define memmin 0
#define bufsize 3000
#define errorline 79
#define halferrorline 50
#define maxprintline 79
#define stacksize 300
#define maxinopen 15
#define fontmax 255
#define fontmemsize 72000L
#define paramsize 60
#define nestsize 40
#define maxstrings 7500
#define stringvacancies 74000L
#define poolsize 100000L
#define savesize 4000
#define triesize 24000
#define trieopsize 750
#define negtrieopsize -750
#define mintrieop 0
#define maxtrieop 500
#define dvibufsize 16384
#define poolname "isitex.pool"
#define memtop 262140L
#define nil 0
#define maxwl 64
#define sonderzeichen 0
#define bsta 1
#define bstb 2
#define bstc 3
#define bstd 4
#define bste 5
#define bstf 6
#define bstg 7
#define bsth 8
#define bsti 9
#define bstj 10
#define bstk 11
#define bstl 12
#define bstm 13
#define bstn 14
#define bsto 15
#define bstp 16
#define bstq 17
#define bstr 18
#define bsts 19
#define bstt 20
#define bstu 21
#define bstv 22
#define bstw 23
#define bstx 24
#define bsty 25
#define bstz 26
#define bstae 27
#define bstoe 28
#define bstue 29
#define bstsz 30
#define trennzeichen 31
#define keine 1
#define neben 2
#define nebenck 3
#define haupt 4
#define haupt3 5
#define tabsize 8191
#define specletterID 4321
#define voka 1
#define voke 2
#define voki 3
#define voko 4
#define voku 5
#define vokae 6
#define vokoe 7
#define vokue 8
#define vokie 9
#define vokai 10
#define vokei 11
#define vokau 12
#define vokaeu 13
#define vokeu 14
#define voky 15
#define kons 16
typedef unsigned char ASCIIcode ;
typedef unsigned char eightbits ;
typedef integer poolpointer ;
typedef integer strnumber ;
typedef unsigned char packedASCIIcode ;
typedef integer scaled ;
typedef integer nonnegativeinteger ;
typedef schar smallnumber ;
typedef unsigned char quarterword ;
typedef integer halfword ;
typedef schar twochoices ;
typedef schar fourchoices ;
#include "memory.h"
#include <malloc.h>
typedef schar glueord ;
typedef struct {
short modefield ;
halfword headfield, tailfield ;
integer pgfield, mlfield ;
memoryword auxfield ;
quarterword lhmfield, rhmfield ;
} liststaterecord ;
typedef schar groupcode ;
typedef struct {
quarterword statefield, indexfield ;
halfword startfield, locfield, limitfield, namefield ;
} instaterecord ;
typedef integer internalfontnumber ;
typedef integer fontindex ;
typedef integer dviindex ;
typedef integer trieopcode ;
typedef integer triepointer ;
typedef eightbits string80 [81] ;
typedef eightbits buchstabe ;
typedef short aword [maxwl + 1] ;
typedef aword wort ;
typedef boolean sperrvektor [maxwl + 1] ;
typedef boolean dudt [maxwl + 1] ;
typedef integer trennvektor [maxwl + 1] ;
typedef buchstabe ktabtype [256] ;
typedef unsigned long verdschlue ;
typedef verdschlue varr [maxwl + 1] ;
typedef integer intarr [maxwl + 1] ;
typedef struct {
boolean ausnahme ;
boolean untrennbar ;
integer erste ;
integer zweite ;
boolean endung, vorsilbe, stamm, ehervor, stammallein ;
} infotype ;
typedef eightbits infobyte ;
typedef struct {
verdschlue tabv ;
infobyte tabb ;
boolean frei ;
boolean wiederfrei ;
} tableentry ;
typedef eightbits hashelement [4] ;
typedef hashelement htabtype [tabsize + 1] ;
typedef trennvektor trenn16 [17] ;
typedef struct mdbk {
wort w12 ;
integer l1 ;
trennvektor tr1 ;
boolean neu1 ;
boolean del1 ;
boolean used1 ;
struct mdbk * li, * re ;
} mdbk ;
typedef struct mdmk {
wort w12 ;
integer l1 ;
trennvektor tr1 ;
boolean neu1 ;
struct mdmk * li, * re ;
} mdmk ;
typedef struct mdlk {
wort w12 ;
integer l1 ;
struct mdlk * li, * re ;
} mdlk ;
typedef struct mdek {
wort w12 ;
integer l1 ;
struct mdek * li, * re ;
} mdek ;
typedef mdbk * mdbknoten ;
typedef mdmk * mdmknoten ;
typedef mdlk * mdlknoten ;
typedef mdek * mdeknoten ;
typedef short hyphpointer ;
EXTERN integer bad ;
EXTERN ASCIIcode xord[256] ;
EXTERN ASCIIcode xchr[256] ;
EXTERN char nameoffile[FILENAMESIZE + 1] ;
EXTERN integer namelength ;
EXTERN ASCIIcode buffer[bufsize + 1] ;
EXTERN integer first ;
EXTERN integer last ;
EXTERN integer maxbufstack ;
EXTERN packedASCIIcode strpool[poolsize + 1] ;
EXTERN poolpointer strstart[maxstrings + 1] ;
EXTERN poolpointer poolptr ;
EXTERN strnumber strptr ;
EXTERN poolpointer initpoolptr ;
EXTERN strnumber initstrptr ;
#ifdef INITEX
EXTERN alphafile poolfile ;
#endif /* INITEX */
EXTERN alphafile logfile ;
EXTERN schar selector ;
EXTERN schar dig[23] ;
EXTERN integer tally ;
EXTERN integer termoffset ;
EXTERN integer fileoffset ;
EXTERN ASCIIcode trickbuf[errorline + 1] ;
EXTERN integer trickcount ;
EXTERN integer firstcount ;
EXTERN schar interaction ;
EXTERN boolean deletionsallowed ;
EXTERN schar history ;
EXTERN schar errorcount ;
EXTERN strnumber helpline[6] ;
EXTERN schar helpptr ;
EXTERN boolean useerrhelp ;
EXTERN integer interrupt ;
EXTERN boolean OKtointerrupt ;
EXTERN boolean aritherror ;
EXTERN scaled remainder ;
EXTERN halfword tempptr ;
EXTERN memoryword
#define zmem (zzzaa - (int)(memmin))
zzzaa[memmax - memmin + 1] ;
EXTERN halfword lomemmax ;
EXTERN halfword himemmin ;
EXTERN integer varused, dynused ;
EXTERN halfword avail ;
EXTERN halfword memend ;
EXTERN halfword rover ;
#ifdef DEBUG
EXTERN boolean
#define freearr (zzzab - (int)(memmin))
zzzab[memmax - memmin + 1] ;
EXTERN boolean
#define wasfree (zzzac - (int)(memmin))
zzzac[memmax - memmin + 1] ;
EXTERN halfword wasmemend, waslomax, washimin ;
EXTERN boolean panicking ;
#endif /* DEBUG */
EXTERN integer fontinshortdisplay ;
EXTERN integer depththreshold ;
EXTERN integer breadthmax ;
EXTERN liststaterecord nest[nestsize + 1] ;
EXTERN integer nestptr ;
EXTERN integer maxneststack ;
EXTERN liststaterecord curlist ;
EXTERN short shownmode ;
EXTERN schar oldsetting ;
EXTERN memoryword zeqtb[13510] ;
EXTERN quarterword
#define xeqlevel (zzzad -12663)
zzzad[847] ;
EXTERN twohalves
#define hash (zzzae -514)
zzzae[9767] ;
EXTERN halfword hashused ;
EXTERN boolean nonewcontrolsequence ;
EXTERN integer cscount ;
EXTERN memoryword savestack[savesize + 1] ;
EXTERN integer saveptr ;
EXTERN integer maxsavestack ;
EXTERN quarterword curlevel ;
EXTERN groupcode curgroup ;
EXTERN integer curboundary ;
EXTERN integer magset ;
EXTERN eightbits curcmd ;
EXTERN halfword curchr ;
EXTERN halfword curcs ;
EXTERN halfword curtok ;
EXTERN instaterecord inputstack[stacksize + 1] ;
EXTERN integer inputptr ;
EXTERN integer maxinstack ;
EXTERN instaterecord curinput ;
EXTERN integer inopen ;
EXTERN integer openparens ;
EXTERN alphafile inputfile[maxinopen + 1] ;
EXTERN integer line ;
EXTERN integer linestack[maxinopen + 1] ;
EXTERN schar scannerstatus ;
EXTERN halfword warningindex ;
EXTERN halfword defref ;
EXTERN halfword paramstack[paramsize + 1] ;
EXTERN integer paramptr ;
EXTERN integer maxparamstack ;
EXTERN integer alignstate ;
EXTERN integer baseptr ;
EXTERN halfword parloc ;
EXTERN halfword partoken ;
EXTERN boolean forceeof ;
EXTERN halfword curmark[5] ;
EXTERN schar longstate ;
EXTERN halfword pstack[9] ;
EXTERN integer curval ;
EXTERN schar curvallevel ;
EXTERN smallnumber radix ;
EXTERN glueord curorder ;
EXTERN alphafile readfile[16] ;
EXTERN schar readopen[17] ;
EXTERN halfword condptr ;
EXTERN schar iflimit ;
EXTERN smallnumber curif ;
EXTERN integer ifline ;
EXTERN integer skipline ;
EXTERN strnumber curname ;
EXTERN strnumber curarea ;
EXTERN strnumber curext ;
EXTERN poolpointer areadelimiter ;
EXTERN poolpointer extdelimiter ;
EXTERN integer formatdefaultlength ;
EXTERN ccharpointer TEXformatdefault ;
EXTERN boolean nameinprogress ;
EXTERN strnumber jobname ;
EXTERN boolean logopened ;
EXTERN bytefile dvifile ;
EXTERN strnumber outputfilename ;
EXTERN strnumber logname ;
EXTERN bytefile tfmfile ;
EXTERN memoryword fontinfo[fontmemsize + 1] ;
EXTERN fontindex fmemptr ;
EXTERN internalfontnumber fontptr ;
EXTERN fourquarters fontcheck[fontmax + 1] ;
EXTERN scaled fontsize[fontmax + 1] ;
EXTERN scaled fontdsize[fontmax + 1] ;
EXTERN halfword fontparams[fontmax + 1] ;
EXTERN strnumber fontname[fontmax + 1] ;
EXTERN strnumber fontarea[fontmax + 1] ;
EXTERN eightbits fontbc[fontmax + 1] ;
EXTERN eightbits fontec[fontmax + 1] ;
EXTERN halfword fontglue[fontmax + 1] ;
EXTERN boolean fontused[fontmax + 1] ;
EXTERN integer hyphenchar[fontmax + 1] ;
EXTERN integer skewchar[fontmax + 1] ;
EXTERN fontindex bcharlabel[fontmax + 1] ;
EXTERN short fontbchar[fontmax + 1] ;
EXTERN short fontfalsebchar[fontmax + 1] ;
EXTERN integer charbase[fontmax + 1] ;
EXTERN integer widthbase[fontmax + 1] ;
EXTERN integer heightbase[fontmax + 1] ;
EXTERN integer depthbase[fontmax + 1] ;
EXTERN integer italicbase[fontmax + 1] ;
EXTERN integer ligkernbase[fontmax + 1] ;
EXTERN integer kernbase[fontmax + 1] ;
EXTERN integer extenbase[fontmax + 1] ;
EXTERN integer parambase[fontmax + 1] ;
EXTERN fourquarters nullcharacter ;
EXTERN integer totalpages ;
EXTERN scaled maxv ;
EXTERN scaled maxh ;
EXTERN integer maxpush ;
EXTERN integer lastbop ;
EXTERN integer deadcycles ;
EXTERN boolean doingleaders ;
EXTERN quarterword c, f ;
EXTERN scaled ruleht, ruledp, rulewd ;
EXTERN halfword g ;
EXTERN integer lq, lr ;
EXTERN eightbits dvibuf[dvibufsize + 1] ;
EXTERN dviindex halfbuf ;
EXTERN dviindex dvilimit ;
EXTERN dviindex dviptr ;
EXTERN integer dvioffset ;
EXTERN integer dvigone ;
EXTERN halfword downptr, rightptr ;
EXTERN scaled dvih, dviv ;
EXTERN scaled curh, curv ;
EXTERN internalfontnumber dvif ;
EXTERN integer curs ;
EXTERN scaled totalstretch[4], totalshrink[4] ;
EXTERN integer lastbadness ;
EXTERN halfword adjusttail ;
EXTERN integer packbeginline ;
EXTERN twohalves emptyfield ;
EXTERN fourquarters nulldelimiter ;
EXTERN halfword curmlist ;
EXTERN smallnumber curstyle ;
EXTERN smallnumber cursize ;
EXTERN scaled curmu ;
EXTERN boolean mlistpenalties ;
EXTERN internalfontnumber curf ;
EXTERN quarterword curc ;
EXTERN fourquarters curi ;
EXTERN integer magicoffset ;
EXTERN halfword curalign ;
EXTERN halfword curspan ;
EXTERN halfword curloop ;
EXTERN halfword alignptr ;
EXTERN halfword curhead, curtail ;
EXTERN halfword justbox ;
EXTERN halfword passive ;
EXTERN halfword printednode ;
EXTERN halfword passnumber ;
EXTERN scaled activewidth[7] ;
EXTERN scaled curactivewidth[7] ;
EXTERN scaled background[7] ;
EXTERN scaled breakwidth[7] ;
EXTERN boolean noshrinkerroryet ;
EXTERN halfword curp ;
EXTERN boolean secondpass ;
EXTERN boolean finalpass ;
EXTERN integer threshold ;
EXTERN integer minimaldemerits[4] ;
EXTERN integer minimumdemerits ;
EXTERN halfword bestplace[4] ;
EXTERN halfword bestplline[4] ;
EXTERN scaled discwidth ;
EXTERN halfword easyline ;
EXTERN halfword lastspecialline ;
EXTERN scaled firstwidth ;
EXTERN scaled secondwidth ;
EXTERN scaled firstindent ;
EXTERN scaled secondindent ;
EXTERN halfword bestbet ;
EXTERN integer fewestdemerits ;
EXTERN halfword bestline ;
EXTERN integer actuallooseness ;
EXTERN integer linediff ;
EXTERN aword hc ;
EXTERN smallnumber hn ;
EXTERN halfword ha, hb ;
EXTERN integer hyfdebi, hyfdebj ;
EXTERN boolean hyfdebb ;
EXTERN halfword sip, siq, sir, sis ;
EXTERN internalfontnumber hf ;
EXTERN short hu[64] ;
EXTERN integer hyfchar ;
EXTERN ASCIIcode curlang ;
EXTERN integer lhyf, rhyf ;
EXTERN halfword
#define dirtyumlaut (zzzaf +1)
zzzaf[66] ;
EXTERN schar hyf[65] ;
EXTERN halfword initlist ;
EXTERN boolean initlig ;
EXTERN boolean initlft ;
EXTERN integer hyfpen[65] ;
EXTERN trennvektor hyfsi ;
EXTERN wort hcsi ;
EXTERN halfword hyfdisc[65] ;
EXTERN smallnumber hyphenpassed ;
EXTERN halfword curl, curr ;
EXTERN halfword curq ;
EXTERN halfword ligstack ;
EXTERN boolean ligaturepresent ;
EXTERN boolean lfthit, rthit ;
EXTERN halfword trietrl[triesize + 1] ;
EXTERN halfword trietro[triesize + 1] ;
EXTERN quarterword trietrc[triesize + 1] ;
EXTERN smallnumber hyfdistance[trieopsize + 1] ;
EXTERN smallnumber hyfnum[trieopsize + 1] ;
EXTERN quarterword hyfnext[trieopsize + 1] ;
EXTERN integer opstart[256] ;
EXTERN ktabtype ktab ;
EXTERN htabtype htab ;
EXTERN integer anzahl ;
EXTERN alphafile hashfile ;
EXTERN alphafile hsmem, hslex, hsedt ;
EXTERN integer kombtab[6][6] ;
EXTERN boolean konsonant[31] ;
EXTERN boolean hsstart ;
EXTERN integer isidebug ;
EXTERN char auswahl, schnuller ;
EXTERN boolean mehrdanz ;
EXTERN mdbknoten mdb ;
EXTERN mdmknoten mdm ;
EXTERN mdlknoten mdl ;
EXTERN mdeknoten mde ;
EXTERN mdbk mdbschnuller ;
EXTERN mdmk mdmschnuller ;
EXTERN mdlk mdlschnuller ;
EXTERN mdek mdeschnuller ;
EXTERN integer hsii, hsij ;
EXTERN integer revtab[256] ;
EXTERN strnumber hyphword[608] ;
EXTERN halfword hyphlist[608] ;
EXTERN hyphpointer hyphcount ;
#ifdef INITEX
EXTERN integer
#define trieophash (zzzag - (int)(negtrieopsize))
zzzag[trieopsize - negtrieopsize + 1] ;
EXTERN trieopcode trieused[256] ;
EXTERN ASCIIcode trieoplang[trieopsize + 1] ;
EXTERN trieopcode trieopval[trieopsize + 1] ;
EXTERN integer trieopptr ;
#endif /* INITEX */
EXTERN trieopcode maxopused ;
EXTERN boolean smallop ;
#ifdef INITEX
EXTERN packedASCIIcode triec[triesize + 1] ;
EXTERN trieopcode trieo[triesize + 1] ;
EXTERN triepointer triel[triesize + 1] ;
EXTERN triepointer trier[triesize + 1] ;
EXTERN triepointer trieptr ;
EXTERN triepointer triehash[triesize + 1] ;
#endif /* INITEX */
#ifdef INITEX
EXTERN boolean trietaken[triesize + 1] ;
EXTERN triepointer triemin[256] ;
EXTERN triepointer triemax ;
EXTERN boolean trienotready ;
#endif /* INITEX */
EXTERN scaled bestheightplusdepth ;
EXTERN halfword pagetail ;
EXTERN schar pagecontents ;
EXTERN scaled pagemaxdepth ;
EXTERN halfword bestpagebreak ;
EXTERN integer leastpagecost ;
EXTERN scaled bestsize ;
EXTERN scaled pagesofar[8] ;
EXTERN halfword lastglue ;
EXTERN integer lastpenalty ;
EXTERN scaled lastkern ;
EXTERN integer insertpenalties ;
EXTERN boolean outputactive ;
EXTERN internalfontnumber mainf ;
EXTERN fourquarters maini ;
EXTERN fourquarters mainj ;
EXTERN fontindex maink ;
EXTERN halfword mainp ;
EXTERN integer mains ;
EXTERN halfword bchar ;
EXTERN halfword falsebchar ;
EXTERN boolean cancelboundary ;
EXTERN boolean insdisc ;
EXTERN halfword curbox ;
EXTERN halfword aftertoken ;
EXTERN boolean longhelpseen ;
EXTERN strnumber formatident ;
EXTERN wordfile fmtfile ;
EXTERN integer readyalready ;
EXTERN alphafile writefile[16] ;
EXTERN boolean writeopen[18] ;
EXTERN halfword writeloc ;
EXTERN poolpointer editnamestart ;
EXTERN integer editnamelength, editline, tfmtemp ;
#include "coerce.h"