#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 "sitex.pool" #define memtop 262140L #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" 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 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 integer kombtab[6][6] ; EXTERN boolean konsonant[31] ; 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"